(self, feat_dim=12, places365_model_path='')
| 81 | std = [0.229, 0.224, 0.225] |
| 82 | |
| 83 | def __init__(self, feat_dim=12, places365_model_path=''): |
| 84 | super(DFNet, self).__init__() |
| 85 | |
| 86 | self.layer_to_index = {k: v for v, k in enumerate(vgg16_layers.keys())} |
| 87 | self.hypercolumn_indices = [self.layer_to_index[n] for n in self.default_conf['hypercolumn_layers']] # [2, 14, 28] |
| 88 | |
| 89 | # Initialize architecture |
| 90 | vgg16 = models.vgg16(pretrained=True) |
| 91 | |
| 92 | self.encoder = nn.Sequential(*list(vgg16.features.children())) |
| 93 | |
| 94 | self.scales = [] |
| 95 | current_scale = 0 |
| 96 | for i, layer in enumerate(self.encoder): |
| 97 | if isinstance(layer, torch.nn.MaxPool2d): |
| 98 | current_scale += 1 |
| 99 | if i in self.hypercolumn_indices: |
| 100 | self.scales.append(2**current_scale) |
| 101 | |
| 102 | ## adaptation layers, see off branches from fig.3 in S2DNet paper |
| 103 | self.adaptation_layers = AdaptLayers(self.default_conf['hypercolumn_layers'], self.default_conf['output_dim']) |
| 104 | |
| 105 | # pose regression layers |
| 106 | self.avgpool = nn.AdaptiveAvgPool2d(1) |
| 107 | self.fc_pose = nn.Linear(512, feat_dim) |
| 108 | |
| 109 | def forward(self, x, return_feature=False, isSingleStream=False, return_pose=True, upsampleH=240, upsampleW=427): |
| 110 | ''' |
no test coverage detected