Skip to content

Commit eca37cf

Browse files
authored
Fix incorrectly frozen BN on ResNet FPN backbone (#3396)
* Avoid freezing bn1 if all layers are trainable. * Remove misleading comments.
1 parent 067b9dc commit eca37cf

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

torchvision/models/detection/backbone_utils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@ def resnet_fpn_backbone(
9696
# select layers that wont be frozen
9797
assert 0 <= trainable_layers <= 5
9898
layers_to_train = ['layer4', 'layer3', 'layer2', 'layer1', 'conv1'][:trainable_layers]
99-
# freeze layers only if pretrained backbone is used
99+
if trainable_layers == 5:
100+
layers_to_train.append('bn1')
100101
for name, parameter in backbone.named_parameters():
101102
if all([not name.startswith(layer) for layer in layers_to_train]):
102103
parameter.requires_grad_(False)
@@ -152,7 +153,6 @@ def mobilenet_backbone(
152153
assert 0 <= trainable_layers <= num_stages
153154
freeze_before = num_stages if trainable_layers == 0 else stage_indices[num_stages - trainable_layers]
154155

155-
# freeze layers only if pretrained backbone is used
156156
for b in backbone[:freeze_before]:
157157
for parameter in b.parameters():
158158
parameter.requires_grad_(False)

0 commit comments

Comments
 (0)