(self,
vis_token_dim,
mask_dim,
num_feature_levels,
backbone, # placeholder
bn_group,
activation='gelu',
pixel_decoder_cfg=None)
| 706 | |
| 707 | class PedDetAlignedFPN(SimpleFPN): |
| 708 | def __init__(self, |
| 709 | vis_token_dim, |
| 710 | mask_dim, |
| 711 | num_feature_levels, |
| 712 | backbone, # placeholder |
| 713 | bn_group, |
| 714 | activation='gelu', |
| 715 | pixel_decoder_cfg=None): |
| 716 | super(SimpleFPN, self).__init__() |
| 717 | self.embed_dim = backbone.embed_dim |
| 718 | self.vis_token_dim = vis_token_dim |
| 719 | self.pixel_decoder_cfg = pixel_decoder_cfg |
| 720 | self.backbone = [backbone] |
| 721 | self.pos_mode = backbone.test_pos_mode |
| 722 | |
| 723 | fpn1 = nn.Sequential( |
| 724 | nn.ConvTranspose2d(self.embed_dim, self.embed_dim // 2, kernel_size=2, stride=2), |
| 725 | Norm2d(self.embed_dim // 2), |
| 726 | _get_activation(activation), |
| 727 | nn.ConvTranspose2d(self.embed_dim // 2, self.embed_dim // 4, kernel_size=2, stride=2), |
| 728 | # in compliance with decoder dim request |
| 729 | Conv2d(self.embed_dim // 4, self.vis_token_dim, |
| 730 | kernel_size=1, bias=False, norm=Norm2d(self.vis_token_dim)), |
| 731 | Conv2d(self.vis_token_dim, self.vis_token_dim, |
| 732 | kernel_size=3, padding=1, bias=False, norm=Norm2d(self.vis_token_dim)), |
| 733 | ) |
| 734 | |
| 735 | fpn2 = nn.Sequential( |
| 736 | nn.ConvTranspose2d(self.embed_dim, self.embed_dim // 2, kernel_size=2, stride=2), |
| 737 | # in compliance with decoder dim request |
| 738 | Conv2d(self.embed_dim // 2, self.vis_token_dim, |
| 739 | kernel_size=1, bias=False, norm=Norm2d(self.vis_token_dim)), |
| 740 | Conv2d(self.vis_token_dim, self.vis_token_dim, |
| 741 | kernel_size=3, padding=1, bias=False, norm=Norm2d(self.vis_token_dim)), |
| 742 | ) |
| 743 | |
| 744 | fpn3 = nn.Sequential( |
| 745 | # in compliance with decoder dim request |
| 746 | Conv2d(self.embed_dim, self.vis_token_dim, |
| 747 | kernel_size=1, bias=False, norm=Norm2d(self.vis_token_dim)), |
| 748 | Conv2d(self.vis_token_dim, self.vis_token_dim, |
| 749 | kernel_size=3, padding=1, bias=False, norm=Norm2d(self.vis_token_dim)), |
| 750 | ) |
| 751 | |
| 752 | fpn4 = nn.Sequential( |
| 753 | nn.MaxPool2d(kernel_size=2, stride=2), |
| 754 | # in compliance with decoder dim request |
| 755 | Conv2d(self.embed_dim, self.vis_token_dim, |
| 756 | kernel_size=1, bias=False, norm=Norm2d(self.vis_token_dim)), |
| 757 | Conv2d(self.vis_token_dim, self.vis_token_dim, |
| 758 | kernel_size=3, padding=1, bias=False, norm=Norm2d(self.vis_token_dim)), |
| 759 | ) |
| 760 | |
| 761 | self.fpns = nn.ModuleList([fpn1, fpn2, fpn3, fpn4]) |
| 762 | |
| 763 | assert self.pixel_decoder_cfg is None |
| 764 | self.maskformer_num_feature_levels = num_feature_levels # always use 3 scales |
| 765 |
nothing calls this directly
no test coverage detected