Exemplo n.º 1
0
    def __init__(self,
                 mult=1.0,
                 feature_levels=(3, 4, 5),
                 pretrained=True,
                 include_final=False,
                 **kwargs):
        super().__init__()
        _check_levels(feature_levels)
        self.forward_levels = tuple(range(1, feature_levels[-1] + 1))
        self.feature_levels = feature_levels
        net = ptcv_get_model(self.mult2name[mult], pretrained=pretrained)
        del net.output
        net = net.features
        self.layer1 = net.init_block.conv
        self.layer2 = net.init_block.pool
        self.layer3 = net.stage1
        self.layer4 = net.stage2
        if include_final:
            self.layer5 = nn.Sequential(
                net.stage3,
                net.final_block,
            )
        else:
            self.layer5 = net.stage3
        out_channels = [
            get_out_channels(self.layer1),
            get_out_channels(self.layer1),
            calc_out_channels(self.layer3),
            calc_out_channels(self.layer4),
            calc_out_channels(self.layer5),
        ]

        self.out_channels = [out_channels[i - 1] for i in feature_levels]
Exemplo n.º 2
0
 def __init__(self, name, feature_levels=(3, 4, 5), pretrained=True):
     super().__init__()
     _check_levels(feature_levels)
     self.forward_levels = tuple(range(1, feature_levels[-1] + 1))
     self.feature_levels = feature_levels
     net = ptcv_get_model(name, pretrained=pretrained)
     del net.output
     net = net.features
     self.layer1 = net.init_block.conv
     self.layer2 = nn.Sequential(
         net.init_block.pool,
         net.stage1,
     )
     self.layer3 = net.stage2
     self.layer4 = net.stage3
     if hasattr(net, "post_activ"):
         self.layer5 = nn.Sequential(
             net.stage4,
             net.post_activ,
         )
     else:
         self.layer5 = net.stage4
     self.out_channels = [
         calc_out_channels(getattr(self, ("layer%d" % i)))
         for i in feature_levels
     ]
 def __init__(self,
              mult=1.0,
              feature_levels=(3, 4, 5),
              pretrained=False,
              **kwargs):
     super().__init__()
     _check_levels(feature_levels)
     self.forward_levels = tuple(range(1, feature_levels[-1] + 1))
     self.out_levels = feature_levels
     if pretrained:
         net = ptcv_get_model(self.mult2name[mult], pretrained=True)
         del net.output
         net = net.features
         self.layer1 = net.init_block.conv
         self.layer2 = net.init_block.pool
         self.layer3 = net.stage1
         self.layer4 = net.stage2
         self.layer5 = nn.Sequential(
             net.stage3,
             net.final_block,
         )
         out_channels = [
             get_out_channels(self.layer1),
             get_out_channels(self.layer1),
             calc_out_channels(self.layer3),
             calc_out_channels(self.layer4),
             calc_out_channels(self.layer5),
         ]
     else:
         from horch.models.re.shufflenet import shufflenet_v2 as BShuffleNetV2
         net = BShuffleNetV2(mult=mult, **kwargs)
         channels = net.out_channels
         del net.fc
         self.layer1 = net.conv1
         self.layer2 = net.maxpool
         self.layer3 = net.stage2
         self.layer4 = net.stage3
         self.layer5 = nn.Sequential(
             net.stage4,
             net.conv5,
         )
         out_channels = [channels[0]] + channels[:3] + [channels[-1]]
     self.out_channels = [out_channels[i - 1] for i in feature_levels]
Exemplo n.º 4
0
 def __init__(self, name, feature_levels=(3, 4, 5), pretrained=True):
     super().__init__()
     _check_levels(feature_levels)
     self.forward_levels = tuple(range(1, feature_levels[-1] + 1))
     self.feature_levels = feature_levels
     net = ptcv_get_model(name, pretrained=pretrained)
     del net.output
     net = net.features
     self.layer1 = net.init_block
     self.layer2 = net.stage1
     self.layer3 = net.stage2
     self.layer4 = net.stage3
     self.layer5 = net.stage4
     self.out_channels = [
         calc_out_channels(getattr(self, ("layer%d" % i)))
         for i in feature_levels
     ]
Exemplo n.º 5
0
    def __init__(self, name, feature_levels=(3, 4, 5), pretrained=True):
        super().__init__()
        _check_levels(feature_levels)
        self.forward_levels = tuple(range(1, feature_levels[-1] + 1))
        self.feature_levels = feature_levels
        from torchvision.models import resnet18
        net = resnet18(pretrained=pretrained)
        del net.fc
        self.layer1 = nn.Sequential(
            net.conv1,
            net.bn1,
            net.relu,
        )
        self.layer2 = net.maxpool
        self.layer3 = net.stage2
        self.layer4 = net.stage3
        self.layer5 = net.layer4

        self.out_channels = [
            calc_out_channels(getattr(self, ("layer%d" % i)))
            for i in feature_levels
        ]