(self, input_var)
| 574 | nn.init.constant_(proj[0].bias, 0) |
| 575 | |
| 576 | def forward(self, input_var): |
| 577 | features = input_var['backbone_output']['Join']['tensor'] |
| 578 | pos = input_var['backbone_output']['Join']['position_embedding'] |
| 579 | |
| 580 | srcs = [] |
| 581 | masks = [] |
| 582 | |
| 583 | if self.num_feature_levels == 1: |
| 584 | src, mask = features[-1].decompose() |
| 585 | srcs.append(self.input_proj[0](src)) |
| 586 | masks.append(mask) |
| 587 | assert mask is not None |
| 588 | else: |
| 589 | for l, feat in enumerate(features): |
| 590 | src, mask = feat.decompose() |
| 591 | srcs.append(self.input_proj[l](src)) |
| 592 | masks.append(mask) |
| 593 | assert mask is not None |
| 594 | |
| 595 | if self.num_feature_levels > len(srcs): |
| 596 | _len_srcs = len(srcs) |
| 597 | for l in range(_len_srcs, self.num_feature_levels): |
| 598 | if l == _len_srcs: |
| 599 | src = self.input_proj[l](features[-1].tensors) |
| 600 | else: |
| 601 | src = self.input_proj[l](srcs[-1]) |
| 602 | m = input_var['NestedImage'].mask |
| 603 | mask = F.interpolate(m[None].float(), size=src.shape[-2:]).to(torch.bool)[0] |
| 604 | pos_l = self.backbone[0][1](NestedTensor(src, mask)).to(src.dtype) |
| 605 | srcs.append(src) |
| 606 | masks.append(mask) |
| 607 | pos.append(pos_l) |
| 608 | |
| 609 | neck_output = {} |
| 610 | neck_output = {'multi_scale_features': srcs, 'multi_scale_masks': masks, 'multi_scale_pos': pos} |
| 611 | input_var.update({'neck_output': neck_output}) |
| 612 | |
| 613 | return input_var |
| 614 | |
| 615 | |
| 616 | class PedDetMoreSimpleFPN(SimpleFPN): |
nothing calls this directly
no test coverage detected