def get_model(args):
    if args.model_name == 'inception':
        if args.pre_trained_checkpoint is not None:
            model = models.inception_v3(pretrained=False, transform_input=False)
            model.fc = nn.Linear(2048, args.n_outputs)
            model.AuxLogits = InceptionAux(768, args.n_outputs)
            model.aux_logits = False
            new_conv = BasicConv2d(1, 32, kernel_size=3, stride=2)
            model.Conv2d_1a_3x3 = new_conv
            sd = torch.load(args.pre_trained_checkpoint)['model']
            model.load_state_dict(sd)
        else:
            model = models.inception_v3(pretrained=True, transform_input=False)
            model.fc = nn.Linear(2048, args.n_outputs)
            model.AuxLogits = InceptionAux(768, args.n_outputs)
            model.aux_logits = False
            new_conv = BasicConv2d(1, 32, kernel_size=3, stride=2)
            first_layer_sd = model.Conv2d_1a_3x3.state_dict()
            first_layer_sd['conv.weight'] = first_layer_sd['conv.weight'].mean(dim=1, keepdim=True)
            new_conv.load_state_dict(first_layer_sd)
            model.Conv2d_1a_3x3 = new_conv
    elif args.model_name == 'resnet':
        if args.pre_trained_checkpoint is not None:
            model = models.resnet50(pretrained=False)
            model.fc = nn.Linear(in_features=2048, out_features=args.n_outputs, bias=True)
            new_conv = nn.Conv2d(1, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)
            model.conv1 = new_conv
            sd = torch.load(args.pre_trained_checkpoint)['model']
            model.load_state_dict(sd)
        else:
            model = models.resnet50(pretrained=True)
            model.fc = nn.Linear(in_features=2048, out_features=args.n_outputs, bias=True)
            new_conv = nn.Conv2d(1, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)
            first_layer_sd = model.conv1.state_dict()
            first_layer_sd['weight'] = first_layer_sd['weight'].mean(dim=1, keepdim=True)
            new_conv.load_state_dict(first_layer_sd)
            model.conv1 = new_conv
    elif args.model_name == 'resnext':
        if args.pre_trained_checkpoint is not None:
            model = models.resnext50_32x4d(pretrained=False)
            model.fc = nn.Linear(in_features=2048, out_features=args.n_outputs, bias=True)
            new_conv = nn.Conv2d(1, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)
            model.conv1 = new_conv
            sd = torch.load(args.pre_trained_checkpoint)['model']
            model.load_state_dict(sd)
        else:
            model = models.resnext50_32x4d(pretrained=True)
            model.fc = nn.Linear(in_features=2048, out_features=args.n_outputs, bias=True)
            new_conv = nn.Conv2d(1, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)
            first_layer_sd = model.conv1.state_dict()
            first_layer_sd['weight'] = first_layer_sd['weight'].mean(dim=1, keepdim=True)
            new_conv.load_state_dict(first_layer_sd)
            model.conv1 = new_conv
    return model
Exemple #2
0
    def __init__(self, pretrained, output_channel):
        super(ResNeXt_50, self).__init__()
        if pretrained == True:
            self.model = models.resnext50_32x4d(pretrained=True, progress=True)
        else:
            self.model = models.resnext50_32x4d(pretrained=False,
                                                progress=True)

        self.l0 = nn.Linear(1000, output_channel)

        self.dropout = nn.Dropout(p=0.5)
        self.fc1 = nn.Linear(2048, 1000)
Exemple #3
0
    def __init__(self):
        super().__init__()

        self.resnext = models.resnext50_32x4d(pretrained=True)

        n_features = self.resnext.fc.in_features
        self.resnext.fc = nn.Linear(n_features, 5)
Exemple #4
0
def get_model(name, pretrained=True):

    if name == 'resnet18':
        model = models.resnet18(pretrained=pretrained)
        out_channels = [64, 128, 256, 512]
    elif name == 'resnet34':
        model = models.resnet34(pretrained=pretrained)
        out_channels = [64, 128, 256, 512]
    elif name == 'resnet50':
        model = models.resnet50(pretrained=pretrained)
        out_channels = [256, 512, 1024, 2048]
    elif name == 'resnet101':
        model = models.resnet101(pretrained=pretrained)
        out_channels = [256, 512, 1024, 2048]
    # ResNeXt
    elif name == 'resnext50':
        model = models.resnext50_32x4d(pretrained=pretrained)
        out_channels = [256, 512, 1024, 2048]
    elif name == 'resnext101':
        model = models.resnext101_32x8d(pretrained=pretrained)
        out_channels = [256, 512, 1024, 2048]
    elif name == 'wide_resnet50':
        model = models.wide_resnet50_2(pretrained=pretrained)
        out_channels = [256, 512, 1024, 2048]
    elif name == 'wide_resnet101':
        model = models.wide_resnet101_2(pretrained=pretrained)
        out_channels = [256, 512, 1024, 2048]
    # Error
    else:
        raise NotImplemented('{} backbone model is not implemented so far.'.format(name))
    
    return model, out_channels
def pretrained_model(name):
    if name == "resnet18":
        return models.resnet18(pretrained=True)
    elif name == "alexnet":
        return models.alexnet(pretrained=True)
    elif name == "squeezenet":
        return models.squeezenet1_0(pretrained=True)
    elif name == "vgg16":
        return models.vgg16(pretrained=True)
    elif name == "densenet":
        return models.densenet161(pretrained=True)
    elif name == "inception":
        return models.inception_v3(pretrained=True)
    elif name == "googlenet":
        return models.googlenet(pretrained=True)
    elif name == "shufflenet":
        return models.shufflenet_v2_x1_0(pretrained=True)
    elif name == "mobilenet":
        return models.mobilenet_v2(pretrained=True)
    elif name == "resnext50_32x4d":
        return models.resnext50_32x4d(pretrained=True)
    elif name == "wide_resnet50_2":
        return models.wide_resnet50_2(pretrained=True)
    elif name == "mnasnet":
        return models.mnasnet1_0(pretrained=True)
    else:
        print("model {} don't know".format(name))
    def __init__(self, classes=2, pt=True):
        super(resnext_50_32x4d, self).__init__()

        self.base_model = models.resnext50_32x4d(pretrained=pt)
        in_features = self.base_model.fc.out_features
        #self.nb_features = self.base_model.fc.in_features
        self.l0 = nn.Linear(in_features, classes)