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]
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]
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 ]
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 ]