Bug
self.backbone = mobilenetv2.mobilenet_v2(
            pretrained=None, output_stride=output_stride)
        # print(backbone.features)
        # rename layers
        # self.backbone.p3 = self.backbone.features[0:2]
        self.backbone.low_level_features = self.backbone.features[0:4]
        self.backbone.p3 = self.backbone.features[4:7]
        self.backbone.p4 = self.backbone.features[7:11]
        self.backbone.p5 = self.backbone.features[11:14] # 64
        self.backbone.high_level_features = self.backbone.features[14:-1]
        # self.backbone.p6 = self.backbone.features[-1:]
        self.backbone.features = None
        self.backbone.classifier = None

        self.backbone = torchvision.models._utils.IntermediateLayerGetter(self.backbone, {
            'low_level_features': 'low',
            'p3': 0,
            'p4': 1,
            'p5': 2,
            # 'p6': 2,
            'high_level_features': 'out',
        })

the output p3 p4 p5 w and h not desired:
low torch.Size([1, 24, 128, 184])
0 torch.Size([1, 32, 64, 92])
1 torch.Size([1, 64, 64, 92])
2 torch.Size([1, 96, 64, 92])
out torch.Size([1, 320, 64, 92])


If I forward mobilenet, the layer I extracted from should w, h all be half:
from torchvision.models.mobilenet import mobilenet_v2

def main():
    m = mobilenet_v2()
    a = torch.rand([2, 3, 512, 1024])
    for l in m.features:
        a = l(a)
        print(a.shape)


torch.Size([2, 32, 256, 512])
torch.Size([2, 16, 256, 512])
torch.Size([2, 24, 128, 256])
torch.Size([2, 24, 128, 256])
torch.Size([2, 32, 64, 128])
torch.Size([2, 32, 64, 128])  <--- get this layer
torch.Size([2, 32, 64, 128])
torch.Size([2, 64, 32, 64])
torch.Size([2, 64, 32, 64])
torch.Size([2, 64, 32, 64])
torch.Size([2, 64, 32, 64]) <--- get this layer
torch.Size([2, 96, 32, 64])
torch.Size([2, 96, 32, 64])
torch.Size([2, 96, 32, 64]) <--- get this layer
torch.Size([2, 160, 16, 32])
torch.Size([2, 160, 16, 32])
torch.Size([2, 160, 16, 32])
torch.Size([2, 320, 16, 32])
torch.Size([2, 1280, 16, 32])


As you can see, p4 layer, which is index with 1, should with size of 2, 64, 32, 64 but  I got it size [1, 64, 64, 92]
To be clear, this layer w, and h should be half then last layer, but it is same.
What the mistake I got here or it’s a bug a IntermediateLayerGetter?
Can anyone help me out??? Need help！