(self, cfg, **kwargs)
| 274 | class PoseHighResolutionNet(nn.Module): |
| 275 | |
| 276 | def __init__(self, cfg, **kwargs): |
| 277 | self.inplanes = 64 |
| 278 | extra = cfg['MODEL']['EXTRA'] |
| 279 | super(PoseHighResolutionNet, self).__init__() |
| 280 | |
| 281 | # stem net |
| 282 | self.conv1 = nn.Conv2d(3, 64, kernel_size=3, stride=2, padding=1, |
| 283 | bias=False) |
| 284 | self.bn1 = nn.BatchNorm2d(64, momentum=BN_MOMENTUM) |
| 285 | self.conv2 = nn.Conv2d(64, 64, kernel_size=3, stride=2, padding=1, |
| 286 | bias=False) |
| 287 | self.bn2 = nn.BatchNorm2d(64, momentum=BN_MOMENTUM) |
| 288 | self.relu = nn.ReLU(inplace=True) |
| 289 | self.layer1 = self._make_layer(Bottleneck, 64, 4) |
| 290 | |
| 291 | self.stage2_cfg = extra['STAGE2'] |
| 292 | num_channels = self.stage2_cfg['NUM_CHANNELS'] |
| 293 | block = blocks_dict[self.stage2_cfg['BLOCK']] |
| 294 | num_channels = [ |
| 295 | num_channels[i] * block.expansion for i in range(len(num_channels)) |
| 296 | ] |
| 297 | self.transition1 = self._make_transition_layer([256], num_channels) |
| 298 | self.stage2, pre_stage_channels = self._make_stage( |
| 299 | self.stage2_cfg, num_channels) |
| 300 | |
| 301 | self.stage3_cfg = extra['STAGE3'] |
| 302 | num_channels = self.stage3_cfg['NUM_CHANNELS'] |
| 303 | block = blocks_dict[self.stage3_cfg['BLOCK']] |
| 304 | num_channels = [ |
| 305 | num_channels[i] * block.expansion for i in range(len(num_channels)) |
| 306 | ] |
| 307 | self.transition2 = self._make_transition_layer( |
| 308 | pre_stage_channels, num_channels) |
| 309 | self.stage3, pre_stage_channels = self._make_stage( |
| 310 | self.stage3_cfg, num_channels) |
| 311 | |
| 312 | self.stage4_cfg = extra['STAGE4'] |
| 313 | num_channels = self.stage4_cfg['NUM_CHANNELS'] |
| 314 | block = blocks_dict[self.stage4_cfg['BLOCK']] |
| 315 | num_channels = [ |
| 316 | num_channels[i] * block.expansion for i in range(len(num_channels)) |
| 317 | ] |
| 318 | self.transition3 = self._make_transition_layer( |
| 319 | pre_stage_channels, num_channels) |
| 320 | self.stage4, pre_stage_channels = self._make_stage( |
| 321 | self.stage4_cfg, num_channels, multi_scale_output=False) |
| 322 | |
| 323 | self.final_layer = nn.Conv2d( |
| 324 | in_channels=pre_stage_channels[0], |
| 325 | out_channels=cfg['MODEL']['NUM_JOINTS'], |
| 326 | kernel_size=extra['FINAL_CONV_KERNEL'], |
| 327 | stride=1, |
| 328 | padding=1 if extra['FINAL_CONV_KERNEL'] == 3 else 0 |
| 329 | ) |
| 330 | |
| 331 | self.pretrained_layers = extra['PRETRAINED_LAYERS'] |
| 332 | |
| 333 | def _make_transition_layer( |
nothing calls this directly
no test coverage detected