@@ -572,70 +572,39 @@ def __init__(self, backbone: resnet.ResNet):
572
572
super ().__init__ ()
573
573
574
574
self .features = nn .Sequential (
575
- backbone .conv1 ,
576
- backbone .bn1 ,
577
- backbone .relu ,
578
- backbone .maxpool ,
579
- backbone .layer1 ,
580
- backbone .layer2 ,
575
+ nn .Sequential (
576
+ backbone .conv1 ,
577
+ backbone .bn1 ,
578
+ backbone .relu ,
579
+ backbone .maxpool ,
580
+ backbone .layer1 ,
581
+ backbone .layer2 ,
582
+ ),
581
583
backbone .layer3 ,
582
584
backbone .layer4 ,
583
585
)
584
586
585
- # Patch last block's strides to get valid output sizes
586
- for m in self .features [- 1 ][0 ].modules ():
587
- if hasattr (m , 'stride' ):
588
- m .stride = 1
589
-
590
587
backbone_out_channels = self .features [- 1 ][- 1 ].bn3 .num_features
591
588
extra = nn .ModuleList ([
592
589
nn .Sequential (
593
- nn .Conv2d (backbone_out_channels , 256 , kernel_size = 1 , bias = False ),
594
- nn .BatchNorm2d (256 ),
595
- nn .ReLU (inplace = True ),
596
- nn .Conv2d (256 , 512 , kernel_size = 3 , padding = 1 , stride = 2 , bias = False ),
597
- nn .BatchNorm2d (512 ),
598
- nn .ReLU (inplace = True ),
599
- ),
600
- nn .Sequential (
601
- nn .Conv2d (512 , 256 , kernel_size = 1 , bias = False ),
602
- nn .BatchNorm2d (256 ),
603
- nn .ReLU (inplace = True ),
604
- nn .Conv2d (256 , 512 , kernel_size = 3 , padding = 1 , stride = 2 , bias = False ),
605
- nn .BatchNorm2d (512 ),
606
- nn .ReLU (inplace = True ),
607
- ),
608
- nn .Sequential (
609
- nn .Conv2d (512 , 128 , kernel_size = 1 , bias = False ),
610
- nn .BatchNorm2d (128 ),
611
- nn .ReLU (inplace = True ),
612
- nn .Conv2d (128 , 256 , kernel_size = 3 , padding = 1 , stride = 2 , bias = False ),
590
+ nn .Conv2d (backbone_out_channels , 256 , kernel_size = 3 , padding = 1 , stride = 2 , bias = False ),
613
591
nn .BatchNorm2d (256 ),
614
592
nn .ReLU (inplace = True ),
615
593
),
616
594
nn .Sequential (
617
- nn .Conv2d (256 , 128 , kernel_size = 1 , bias = False ),
618
- nn .BatchNorm2d (128 ),
619
- nn .ReLU (inplace = True ),
620
- nn .Conv2d (128 , 256 , kernel_size = 3 , bias = False ),
595
+ nn .Conv2d (256 , 256 , kernel_size = 3 , padding = 1 , stride = 2 , bias = False ),
621
596
nn .BatchNorm2d (256 ),
622
597
nn .ReLU (inplace = True ),
623
598
),
624
- nn .Sequential (
625
- nn .Conv2d (256 , 128 , kernel_size = 1 , bias = False ),
626
- nn .BatchNorm2d (128 ),
627
- nn .ReLU (inplace = True ),
628
- nn .Conv2d (128 , 256 , kernel_size = 2 , bias = False ),
629
- nn .BatchNorm2d (256 ),
630
- nn .ReLU (inplace = True ),
631
- )
632
599
])
633
600
_xavier_init (extra )
634
601
self .extra = extra
635
602
636
603
def forward (self , x : Tensor ) -> Dict [str , Tensor ]:
637
- x = self .features (x )
638
- output = [x ]
604
+ output = []
605
+ for block in self .features :
606
+ x = block (x )
607
+ output .append (x )
639
608
640
609
for block in self .extra :
641
610
x = block (x )
@@ -667,8 +636,7 @@ def ssd512_resnet50(pretrained: bool = False, progress: bool = True, num_classes
667
636
pretrained_backbone = False
668
637
669
638
backbone = _resnet_extractor ("resnet50" , pretrained_backbone , trainable_backbone_layers )
670
- anchor_generator = DefaultBoxGenerator ([[2 ], [2 , 3 ], [2 , 3 ], [2 , 3 ], [2 ], [2 ]],
671
- scales = [0.07 , 0.15 , 0.33 , 0.51 , 0.69 , 0.87 , 1.05 ])
639
+ anchor_generator = DefaultBoxGenerator ([[2 ], [2 , 3 ], [2 , 3 ], [2 , 3 ], [2 ]], min_ratio = 0.04 )
672
640
model = SSD (backbone , anchor_generator , (512 , 512 ), num_classes , ** kwargs )
673
641
if pretrained :
674
642
weights_name = 'ssd512_resnet50_coco'
0 commit comments