MCPcopy Create free account
hub / github.com/OpenGVLab/HumanBench / forward

Method forward

PATH/core/models/necks/simple_fpn.py:675–704  ·  view source on GitHub ↗
(self, features)

Source from the content-addressed store, hash-verified

673 self.maskformer_num_feature_levels = num_feature_levels # always use 3 scales
674
675 def forward(self, features):
676 x, m = features['backbone_output'].decompose()
677 backbone = self.backbone[0]
678 Hp, Wp = x.shape[-2:]
679 pos = backbone.pos_embed.reshape(1, backbone.patch_embed.patch_shape[0],
680 backbone.patch_embed.patch_shape[1],
681 backbone.pos_embed.size(2))[:, :Hp, :Wp, :].permute(0, 3, 1, 2)
682
683 if self.pixel_decoder_cfg is None:
684 out = [op(x) for op in self.fpns][::-1] # [r4, r3, r2, r1]
685 num_cur_levels = 0
686 multi_scale_features = []
687 multi_scale_masks = []
688 multi_scale_poss = []
689 for o in out:
690 if num_cur_levels < self.maskformer_num_feature_levels:
691 mask_o = F.interpolate(m[None].float(), size=o.shape[-2:]).to(torch.bool)[0]
692 multi_scale_features.append(o)
693 multi_scale_masks.append(mask_o)
694 pos_l = F.interpolate(pos[None], size=o.shape[-3:], mode='trilinear', align_corners=False)[0]
695 multi_scale_poss.append(pos_l)
696 num_cur_levels += 1
697
698 features.update({'neck_output': {'mask_features': self.mask_features(out[-1]),
699 'multi_scale_features': multi_scale_features,
700 'multi_scale_masks': multi_scale_masks,
701 'multi_scale_pos': multi_scale_poss}})
702 else:
703 raise NotImplementedError
704 return features
705
706
707class PedDetAlignedFPN(SimpleFPN):

Callers

nothing calls this directly

Calls 5

decomposeMethod · 0.80
permuteMethod · 0.80
sizeMethod · 0.80
toMethod · 0.45
updateMethod · 0.45

Tested by

no test coverage detected