| 500 | |
| 501 | class PoseSimpleFPN(nn.Module): |
| 502 | def __init__(self, |
| 503 | vis_token_dim, |
| 504 | backbone, # placeholder |
| 505 | bn_group,): |
| 506 | super(PoseSimpleFPN, self).__init__() |
| 507 | self.embed_dim = backbone.embed_dim |
| 508 | self.vis_token_dim = vis_token_dim |
| 509 | |
| 510 | fpn1 = nn.Sequential( |
| 511 | nn.ConvTranspose2d(self.embed_dim, self.embed_dim, kernel_size=2, stride=2), |
| 512 | Norm2d(self.embed_dim), |
| 513 | nn.GELU(), |
| 514 | nn.ConvTranspose2d(self.embed_dim, self.vis_token_dim, kernel_size=2, stride=2), |
| 515 | # in compliance with decoder dim request |
| 516 | Norm2d(self.vis_token_dim), |
| 517 | ) |
| 518 | |
| 519 | self.fpns = nn.ModuleList([fpn1]) |
| 520 | |
| 521 | def forward(self, features): |
| 522 | x = features['backbone_output'] |