Beispiel #1
0
def Pnet(pretrained=True,
         input_shape=(3, 12, 12),
         freeze_features=True,
         **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 224, 224)
    pnet = ImageDetectionModel(input_shape=(3, 12, 12), output=p_net())
    if pretrained == True:
        download_model_from_google_drive('1w9ahipO8D9U1dAXMc2BewuL0UqIBYWSX',
                                         dirname, 'pnet.pth')
        recovery_model = fix_layer(load(os.path.join(dirname, 'pnet.pth')))
        pnet.model = recovery_model

    pnet.model.input_shape = input_shape
    pnet.model.to(_device)
    return pnet
Beispiel #2
0
def EfficientNetB1(include_top=True,
                   pretrained=True,
                   freeze_features=False,
                   input_shape=(3, 240, 240),
                   classes=1000,
                   **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 240, 240)
    effb1 = EfficientNet(1.0,
                         1.1,
                         240,
                         0.2,
                         model_name='efficientnet-b1',
                         include_top=include_top,
                         num_classes=classes)
    if pretrained == True:
        download_model_from_google_drive('1F3BtnAjmDz4G9RS9Q0hqU_K7WWXCni1G',
                                         dirname, 'efficientnet-b1.pth')
        recovery_model = fix_layer(
            load(os.path.join(dirname, 'efficientnet-b1.pth')))
        recovery_model.input_shape = input_shape
        recovery_model.eval()
        recovery_model.to(_device)
        if freeze_features:
            recovery_model.trainable = False
            recovery_model.fc.trainable = True
        if include_top == False:
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            effb1.class_names = []
        else:
            if classes != 1000:
                recovery_model.remove_at(-1)
                recovery_model.remove_at(-1)
                recovery_model.add_module(
                    'fc', Dense(classes, activation=None, name='fc'))
                recovery_model.add_module('softmax', SoftMax())
                effb1.class_names = []
        effb1.model = recovery_model
    return effb1
Beispiel #3
0
def EfficientNetB6(include_top=True,
                   pretrained=True,
                   freeze_features=False,
                   input_shape=(3, 528, 528),
                   classes=1000,
                   **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 528, 528)
    effb6 = EfficientNet(1.8,
                         2.6,
                         528,
                         0.5,
                         model_name='efficientnet-b6',
                         include_top=include_top,
                         num_classes=classes)
    if pretrained == True:
        download_model_from_google_drive('1XJrKmcmMObN_nnjP2Z-YH_BQ3img58qF',
                                         dirname, 'efficientnet-b6.pth')
        recovery_model = fix_layer(
            load(os.path.join(dirname, 'efficientnet-b6.pth')))
        recovery_model.input_shape = input_shape
        recovery_model.to(_device)

        if freeze_features:
            recovery_model.trainable = False
            recovery_model.fc.trainable = True
        if include_top == False:
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            effb6.class_names = []
        else:
            if classes != 1000:
                recovery_model.remove_at(-1)
                recovery_model.remove_at(-1)
                recovery_model.add_module(
                    'fc', Dense(classes, activation=None, name='fc'))
                recovery_model.add_module('softmax', SoftMax())
                effb6.class_names = []
        effb6.model = recovery_model
    return effb6
Beispiel #4
0
def EfficientNetB4(include_top=True,
                   pretrained=True,
                   freeze_features=False,
                   input_shape=(3, 380, 380),
                   classes=1000,
                   **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 380, 380)
    effb4 = EfficientNet(1.4,
                         1.8,
                         380,
                         0.4,
                         model_name='efficientnet-b4',
                         include_top=include_top,
                         num_classes=classes)
    if pretrained == True:
        download_model_from_google_drive('1X4ZOBR_ETRHZJeffJHvCmWTTy9_aW8SP',
                                         dirname, 'efficientnet-b4.pth')
        recovery_model = fix_layer(
            load(sanitize_path(os.path.join(dirname, 'efficientnet-b4.pth'))))
        recovery_model.input_shape = input_shape
        recovery_model.to(_device)
        if freeze_features:
            recovery_model.trainable = False
            recovery_model.fc.trainable = True
        if include_top == False:
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            effb4.class_names = []

        else:
            if classes != 1000:
                recovery_model.remove_at(-1)
                recovery_model.remove_at(-1)
                recovery_model.add_module(
                    'fc', Dense(classes, activation=None, name='fc'))
                recovery_model.add_module('softmax', SoftMax())
                effb4.class_names = []
        effb4.model = recovery_model
    return effb4
Beispiel #5
0
def YoLoV4(pretrained=True,
           freeze_features=True,
           input_shape=(3, 608, 608),
           classes=80,
           **kwargs):
    detector = YoloDetectionModel(input_shape=input_shape,
                                  output=yolo4_body(classes, input_shape[-1]))

    if pretrained:
        download_model_from_google_drive('1CcbyinE8gQFjMjt05arSg2W0LLUwjsdt',
                                         dirname,
                                         'pretrained_yolov4_mscoco.pth')
        recovery_model = fix_layer(
            load(os.path.join(dirname, 'pretrained_yolov4_mscoco.pth')))
        detector.model = recovery_model

    detector.model.input_shape = input_shape
    detector.model.to(get_device())
    return detector
Beispiel #6
0
def EfficientNetB2(include_top=True,
                   pretrained=True,
                   freeze_features=False,
                   input_shape=(3, 260, 260),
                   classes=1000,
                   **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 260, 260)
    effb2 = EfficientNet(1.1,
                         1.2,
                         260,
                         0.3,
                         model_name='efficientnet-b2',
                         include_top=include_top,
                         num_classes=classes)
    if pretrained == True:
        download_model_from_google_drive('1PjqhB7WJasF_hqOwYtSBNSXSGBY-cRLU',
                                         dirname, 'efficientnet-b2.pth')
        recovery_model = fix_layer(
            load(os.path.join(dirname, 'efficientnet-b2.pth')))
        recovery_model.input_shape = input_shape
        recovery_model.to(_device)
        if freeze_features:
            recovery_model.trainable = False
            recovery_model.fc.trainable = True
        if include_top == False:
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            effb2.class_names = []
        else:
            if classes != 1000:
                recovery_model.remove_at(-1)
                recovery_model.remove_at(-1)
                recovery_model.add_module(
                    'fc', Dense(classes, activation=None, name='fc'))
                recovery_model.add_module('softmax', SoftMax())
                effb2.class_names = []
        effb2.model = recovery_model
    return effb2
Beispiel #7
0
def EfficientNetB3(include_top=True,
                   pretrained=True,
                   freeze_features=False,
                   input_shape=(3, 300, 300),
                   classes=1000,
                   **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 300, 300)
    effb3 = EfficientNet(1.2,
                         1.4,
                         300,
                         0.3,
                         model_name='efficientnet-b3',
                         include_top=include_top,
                         num_classes=classes)
    if pretrained == True:
        download_model_from_google_drive('11tMxdYdFfaEREwnESO4cwjtcoEB42zB_',
                                         dirname, 'efficientnet-b3.pth')
        recovery_model = fix_layer(
            load(os.path.join(dirname, 'efficientnet-b3.pth')))
        recovery_model.input_shape = input_shape
        recovery_model.to(_device)
        if freeze_features:
            recovery_model.trainable = False
            recovery_model.fc.trainable = True
        if include_top == False:
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            effb3.class_names = []
        else:
            if classes != 1000:
                recovery_model.remove_at(-1)
                recovery_model.remove_at(-1)
                recovery_model.add_module(
                    'fc', Dense(classes, activation=None, name='fc'))
                recovery_model.add_module('softmax', SoftMax())
                effb3.class_names = []
        effb3.model = recovery_model
    return effb3
Beispiel #8
0
def EfficientNetB5(include_top=True,
                   pretrained=True,
                   freeze_features=False,
                   input_shape=(3, 456, 456),
                   classes=1000,
                   **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 456, 456)
    effb5 = EfficientNet(1.6,
                         2.2,
                         456,
                         0.4,
                         model_name='efficientnet-b5',
                         include_top=include_top,
                         num_classes=classes)
    if pretrained == True:
        download_model_from_google_drive('17iTD12G9oW3jYAui84MKtdY4gjd9vpgG',
                                         dirname, 'efficientnet-b5.pth')
        recovery_model = fix_layer(
            load(os.path.join(dirname, 'efficientnet-b5.pth')))
        recovery_model.input_shape = input_shape
        recovery_model.to(_device)
        if freeze_features:
            recovery_model.trainable = False
            recovery_model.fc.trainable = True
        if include_top == False:
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            effb5.class_names = []
        else:
            if classes != 1000:
                recovery_model.remove_at(-1)
                recovery_model.remove_at(-1)
                recovery_model.add_module(
                    'fc', Dense(classes, activation=None, name='fc'))
                recovery_model.add_module('softmax', SoftMax())
                effb5.class_names = []
        effb5.model = recovery_model
    return effb5
Beispiel #9
0
def EfficientNetB7(include_top=True,
                   pretrained=True,
                   freeze_features=False,
                   input_shape=(3, 600, 600),
                   classes=1000,
                   **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 600, 600)
    effb7 = EfficientNet(2.0,
                         3.1,
                         600,
                         0.5,
                         model_name='efficientnet-b7',
                         include_top=include_top,
                         num_classes=classes)
    if pretrained == True:
        download_model_from_google_drive('1M2DfvsNPRCWSo_CeXnUCQOR46rvOrhLl',
                                         dirname, 'efficientnet-b7.pth')
        recovery_model = fix_layer(
            load(os.path.join(dirname, 'efficientnet-b7.pth')))
        recovery_model.input_shape = input_shape
        recovery_model.to(_device)
        if freeze_features:
            recovery_model.trainable = False
            recovery_model.fc.trainable = True
        if include_top == False:
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            effb7.class_names = []
        else:
            if classes != 1000:
                recovery_model.remove_at(-1)
                recovery_model.remove_at(-1)
                recovery_model.add_module(
                    'fc', Dense(classes, activation=None, name='fc'))
                recovery_model.add_module('softmax', SoftMax())
                effb7.class_names = []
        effb7.model = recovery_model
    return effb7
Beispiel #10
0
def MobileNetV2(include_top=True,
                pretrained=True,
                freeze_features=False,
                input_shape=(3, 224, 224),
                classes=1000,
                **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 224, 224)
    mob = MobileNet(input_shape=(3, 224, 224),
                    classes=classes,
                    use_bias=False,
                    width_mult=1.0,
                    round_nearest=8,
                    include_top=include_top,
                    model_name='mobilenet')
    if pretrained == True:
        download_model_from_google_drive('1ULenXTjOO5PdT3fHv6N8bPXEfoJAn5yL',
                                         dirname, 'mobilenet_v2.pth')
        recovery_model = load(os.path.join(dirname, 'mobilenet_v2.pth'))
        recovery_model = fix_layer(recovery_model)
        recovery_model.eval()
        recovery_model.to(_device)
        if freeze_features:
            recovery_model.trainable = False
            recovery_model.fc.trainable = True

        if include_top == False:
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            mob.class_names = []
        else:
            if classes != 1000:
                recovery_model.remove_at(-1)
                recovery_model.add_module(
                    'fc', Dense(classes, activation=None, name='fc'))
                mob.class_names = []
        mob.model = recovery_model
    return mob
Beispiel #11
0
def ResNet50(include_top=True,
             pretrained=True,
             freeze_features=False,
             input_shape=None,
             classes=1000,
             **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 224, 224)
    resnet50 = ResNet(bottleneck, [3, 4, 6, 3],
                      input_shape,
                      num_classes=classes,
                      include_top=include_top,
                      model_name='resnet50')
    if pretrained == True:
        download_model_from_google_drive(model_urls['resnet50'], dirname,
                                         'resnet50.pth')
        recovery_model = load(os.path.join(dirname, 'resnet50.pth'))
        recovery_model = fix_layer(recovery_model)
        if freeze_features:
            recovery_model.trainable = False
            recovery_model.fc.trainable = True
        recovery_model.name = 'resnet50'
        recovery_model.eval()
        recovery_model.to(_device)
        if include_top == False:
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            resnet50.class_names = []
        else:
            if classes != 1000:
                resnet50.class_names = []
                recovery_model.remove_at(-1)
                recovery_model.remove_at(-1)
                recovery_model.add_module(
                    'fc', Dense(classes, activation=None, name='fc'))
                recovery_model.add_module('softmax', SoftMax())

        resnet50.model = recovery_model
    return resnet50
Beispiel #12
0
def SE_ResNet50(include_top=True,
                pretrained=True,
                freeze_features=True,
                input_shape=None,
                classes=1000,
                **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 224, 224)
    resnet50 = SE_ResNet(se_bottleneck, [3, 4, 6, 3],
                         input_shape,
                         num_classes=classes,
                         include_top=include_top,
                         model_name='se_resnet50')
    if pretrained == True:
        download_model_from_google_drive(model_urls['se_resnet50'], dirname,
                                         'se_resnet50.pth')
        recovery_model = load(os.path.join(dirname, 'se_resnet50.pth'))
        recovery_model = fix_layer(recovery_model)
        recovery_model.name = 'se_resnet50'
        recovery_model = _make_recovery_model_include_top(
            recovery_model,
            include_top=include_top,
            classes=classes,
            default_shape=(3, 224, 224),
            input_shape=input_shape,
            freeze_features=freeze_features)
        resnet50.model = recovery_model
    else:
        resnet50.model = _make_recovery_model_include_top(
            resnet50.model,
            include_top=include_top,
            classes=classes,
            default_shape=(3, 224, 224),
            input_shape=input_shape,
            freeze_features=True)

    resnet50.model.input_shape = input_shape
    resnet50.model.to(_device)
    return resnet50
Beispiel #13
0
def MobileNetV2(include_top=True,
                pretrained=True,
                freeze_features=True,
                input_shape=(3, 224, 224),
                classes=1000,
                **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 224, 224)
    mob = MobileNet(input_shape=(3, 224, 224),
                    classes=classes,
                    use_bias=False,
                    width_mult=1.0,
                    round_nearest=8,
                    include_top=include_top,
                    model_name='mobilenet')
    if pretrained == True:
        download_model_from_google_drive('1ULenXTjOO5PdT3fHv6N8bPXEfoJAn5yL',
                                         dirname, 'mobilenet_v2.pth')
        recovery_model = load(os.path.join(dirname, 'mobilenet_v2.pth'))
        recovery_model = fix_layer(recovery_model)
        recovery_model = _make_recovery_model_include_top(
            recovery_model,
            input_shape=input_shape,
            include_top=include_top,
            classes=classes,
            freeze_features=freeze_features)
        mob.model = recovery_model

    else:
        mob.model = _make_recovery_model_include_top(mob.model,
                                                     include_top=include_top,
                                                     classes=classes,
                                                     freeze_features=True)

        mob.model.input_shape = input_shape
        mob.model.to(_device)
    return mob
Beispiel #14
0
def SE_ResNet101(include_top=True,
                 pretrained=True,
                 freeze_features=False,
                 input_shape=None,
                 classes=1000,
                 **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 224, 224)
    resnet101 = SE_ResNet(se_bottleneck, [3, 4, 23, 3],
                          input_shape,
                          num_classes=classes,
                          include_top=include_top,
                          model_name='resnet101')
    if pretrained == True:
        download_model_from_google_drive('1BO92ONsWnLQPWs9JVS-4SdpoPo5M4ABR',
                                         dirname, 'se_resnet101.pth')
        recovery_model = load(os.path.join(dirname, 'se_resnet101.pth'))
        recovery_model = fix_layer(recovery_model)
        recovery_model.name = 'se_resnet101'
        recovery_model.eval()
        recovery_model.to(_device)
        if freeze_features:
            recovery_model.trainable = False
            recovery_model.fc.trainable = True
        if include_top == False:
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            recovery_model.remove_at(-1)
            resnet101.class_names = []
        else:
            if classes != 1000:
                resnet101.class_names = []
                recovery_model.fc = Dense(classes, activation=None, name='fc')
                recovery_model.fc.input_shape = recovery_model.avg_pool.output_shape

        resnet101.model = recovery_model
    return resnet101
Beispiel #15
0
    def on_batch_end(self, training_context):
        # Log the learning rate
        lr = training_context['optimizer'].lr
        self.lrs.append(lr)
        loss = training_context['current_loss'].item()
        self.losses.append(loss)
        training_context['current_model'].load_state_dict(
            load('Models/state_dict.pth'))

        # Check whether the loss got too large or NaN
        if math.isnan(loss) or loss > self.best_loss * 4:
            self.adjust_learning_rate(training_context, self.base_lr)

        if loss < self.best_loss:
            self.best_loss = loss

        # Increase the learning rate for the next batch
        lr *= self.lr_mult
        self.adjust_learning_rate(
            training_context,
            lr,
        )
Beispiel #16
0
def ResNet18(include_top=True,
             pretrained=True,
             freeze_features=True,
             input_shape=None,
             classes=1000,
             **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 224, 224)
    resnet18 = ResNet(basic_block, [2, 2, 2, 2],
                      input_shape,
                      use_bias=False,
                      include_top=include_top,
                      model_name='resnet18')

    if pretrained == True:
        download_model_from_google_drive(model_urls['resnet18'], dirname,
                                         'resnet18.pth')
        recovery_model = load(os.path.join(dirname, 'resnet18.pth'))
        recovery_model = fix_layer(recovery_model)
        recovery_model = _make_recovery_model_include_top(
            recovery_model,
            input_shape=input_shape,
            include_top=include_top,
            classes=classes,
            freeze_features=freeze_features)
        resnet18.model = recovery_model
    else:
        resnet18.model = _make_recovery_model_include_top(
            resnet18.model,
            include_top=include_top,
            classes=classes,
            freeze_features=True)

    resnet18.model.input_shape = input_shape
    resnet18.model.to(_device)
    return resnet18
Beispiel #17
0
def EfficientNetB7(include_top=True,
                   pretrained=True,
                   freeze_features=False,
                   input_shape=(3, 600, 600),
                   classes=1000,
                   **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 600, 600)
    effb7 = EfficientNet(2.0,
                         3.1,
                         input_shape,
                         0.5,
                         model_name='efficientnet-b7',
                         include_top=include_top,
                         num_classes=classes)
    if pretrained:
        download_model_from_google_drive('1M2DfvsNPRCWSo_CeXnUCQOR46rvOrhLl',
                                         dirname, 'efficientnet-b7.pth')
        recovery_model = fix_layer(
            load(os.path.join(dirname, 'efficientnet-b7.pth')))
        recovery_model = _make_recovery_model_include_top(
            recovery_model,
            input_shape=input_shape,
            include_top=include_top,
            classes=classes,
            freeze_features=freeze_features)
        effb7.model = recovery_model
    else:
        effb7.model = _make_recovery_model_include_top(effb7.model,
                                                       include_top=include_top,
                                                       classes=classes,
                                                       freeze_features=False)

    effb7.model.input_shape = input_shape
    effb7.model.to(get_device())
    return effb7
Beispiel #18
0
def EfficientNetB5(include_top=True,
                   pretrained=True,
                   freeze_features=False,
                   input_shape=(3, 456, 456),
                   classes=1000,
                   **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 456, 456)
    effb5 = EfficientNet(1.6,
                         2.2,
                         input_shape,
                         0.4,
                         model_name='efficientnet-b5',
                         include_top=include_top,
                         num_classes=classes)
    if pretrained:
        download_model_from_google_drive('17iTD12G9oW3jYAui84MKtdY4gjd9vpgG',
                                         dirname, 'efficientnet-b5.pth')
        recovery_model = fix_layer(
            load(os.path.join(dirname, 'efficientnet-b5.pth')))
        recovery_model = _make_recovery_model_include_top(
            recovery_model,
            input_shape=input_shape,
            include_top=include_top,
            classes=classes,
            freeze_features=freeze_features)
        effb5.model = recovery_model
    else:
        effb5.model = _make_recovery_model_include_top(effb5.model,
                                                       include_top=include_top,
                                                       classes=classes,
                                                       freeze_features=False)

    effb5.model.input_shape = input_shape
    effb5.model.to(get_device())
    return effb5
Beispiel #19
0
def EfficientNetB6(include_top=True,
                   pretrained=True,
                   freeze_features=False,
                   input_shape=(3, 528, 528),
                   classes=1000,
                   **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 528, 528)
    effb6 = EfficientNet(1.8,
                         2.6,
                         input_shape,
                         0.5,
                         model_name='efficientnet-b6',
                         include_top=include_top,
                         num_classes=classes)
    if pretrained:
        download_model_from_google_drive('1XJrKmcmMObN_nnjP2Z-YH_BQ3img58qF',
                                         dirname, 'efficientnet-b6.pth')
        recovery_model = fix_layer(
            load(os.path.join(dirname, 'efficientnet-b6.pth')))
        recovery_model = _make_recovery_model_include_top(
            recovery_model,
            input_shape=input_shape,
            include_top=include_top,
            classes=classes,
            freeze_features=freeze_features)
        effb6.model = recovery_model
    else:
        effb6.model = _make_recovery_model_include_top(effb6.model,
                                                       include_top=include_top,
                                                       classes=classes,
                                                       freeze_features=False)

    effb6.model.input_shape = input_shape
    effb6.model.to(get_device())
    return effb6
Beispiel #20
0
def EfficientNetB3(include_top=True,
                   pretrained=True,
                   freeze_features=False,
                   input_shape=(3, 300, 300),
                   classes=1000,
                   **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 300, 300)
    effb3 = EfficientNet(1.2,
                         1.4,
                         input_shape,
                         0.3,
                         model_name='efficientnet-b3',
                         include_top=include_top,
                         num_classes=classes)
    if pretrained:
        download_model_from_google_drive('11tMxdYdFfaEREwnESO4cwjtcoEB42zB_',
                                         dirname, 'efficientnet-b3.pth')
        recovery_model = fix_layer(
            load(os.path.join(dirname, 'efficientnet-b3.pth')))
        recovery_model = _make_recovery_model_include_top(
            recovery_model,
            input_shape=input_shape,
            include_top=include_top,
            classes=classes,
            freeze_features=freeze_features)
        effb3.model = recovery_model
    else:
        effb3.model = _make_recovery_model_include_top(effb3.model,
                                                       include_top=include_top,
                                                       classes=classes,
                                                       freeze_features=False)

    effb3.model.input_shape = input_shape
    effb3.model.to(get_device())
    return effb3
Beispiel #21
0
def EfficientNetB4(include_top=True,
                   pretrained=True,
                   freeze_features=False,
                   input_shape=(3, 380, 380),
                   classes=1000,
                   **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 380, 380)
    effb4 = EfficientNet(1.4,
                         1.8,
                         input_shape,
                         0.4,
                         model_name='efficientnet-b4',
                         include_top=include_top,
                         num_classes=classes)
    if pretrained:
        download_model_from_google_drive('1X4ZOBR_ETRHZJeffJHvCmWTTy9_aW8SP',
                                         dirname, 'efficientnet-b4.pth')
        recovery_model = fix_layer(
            load(sanitize_path(os.path.join(dirname, 'efficientnet-b4.pth'))))
        recovery_model = _make_recovery_model_include_top(
            recovery_model,
            input_shape=input_shape,
            include_top=include_top,
            classes=classes,
            freeze_features=freeze_features)
        effb4.model = recovery_model
    else:
        effb4.model = _make_recovery_model_include_top(effb4.model,
                                                       include_top=include_top,
                                                       classes=classes,
                                                       freeze_features=False)

    effb4.model.input_shape = input_shape
    effb4.model.to(get_device())
    return effb4
Beispiel #22
0
def EfficientNetB2(include_top=True,
                   pretrained=True,
                   freeze_features=False,
                   input_shape=(3, 260, 260),
                   classes=1000,
                   **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 260, 260)
    effb2 = EfficientNet(1.1,
                         1.2,
                         input_shape,
                         0.3,
                         model_name='efficientnet-b2',
                         include_top=include_top,
                         num_classes=classes)
    if pretrained:
        download_model_from_google_drive('1PjqhB7WJasF_hqOwYtSBNSXSGBY-cRLU',
                                         dirname, 'efficientnet-b2.pth')
        recovery_model = fix_layer(
            load(os.path.join(dirname, 'efficientnet-b2.pth')))
        recovery_model = _make_recovery_model_include_top(
            recovery_model,
            input_shape=input_shape,
            include_top=include_top,
            classes=classes,
            freeze_features=freeze_features)
        effb2.model = recovery_model
    else:
        effb2.model = _make_recovery_model_include_top(effb2.model,
                                                       include_top=include_top,
                                                       classes=classes,
                                                       freeze_features=False)

    effb2.model.input_shape = input_shape
    effb2.model.to(get_device())
    return effb2
Beispiel #23
0
def EfficientNetB1(include_top=True,
                   pretrained=True,
                   freeze_features=False,
                   input_shape=(3, 240, 240),
                   classes=1000,
                   **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 240, 240)
    effb1 = EfficientNet(1.0,
                         1.1,
                         input_shape,
                         0.2,
                         model_name='efficientnet-b1',
                         include_top=include_top,
                         num_classes=classes)
    if pretrained:
        download_model_from_google_drive('1F3BtnAjmDz4G9RS9Q0hqU_K7WWXCni1G',
                                         dirname, 'efficientnet-b1.pth')
        recovery_model = fix_layer(
            load(os.path.join(dirname, 'efficientnet-b1.pth')))
        recovery_model = _make_recovery_model_include_top(
            recovery_model,
            input_shape=input_shape,
            include_top=include_top,
            classes=classes,
            freeze_features=freeze_features)
        effb1.model = recovery_model
    else:
        effb1.model = _make_recovery_model_include_top(effb1.model,
                                                       include_top=include_top,
                                                       classes=classes,
                                                       freeze_features=False)

    effb1.model.input_shape = input_shape
    effb1.model.to(get_device())
    return effb1
Beispiel #24
0
def EfficientNetB0(include_top=True,
                   pretrained=True,
                   freeze_features=False,
                   input_shape=(3, 224, 224),
                   classes=1000,
                   **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 224, 224)
    effb0 = EfficientNet(1.0,
                         1.0,
                         input_shape,
                         0.2,
                         model_name='efficientnet-b0',
                         include_top=include_top,
                         num_classes=classes)
    if pretrained:
        download_model_from_google_drive('1bxnoDerzoNfiZZLft4ocD3DAgx4v6aTN',
                                         dirname, 'efficientnet-b0.pth')
        recovery_model = fix_layer(
            load(os.path.join(dirname, 'efficientnet-b0.pth')))
        recovery_model = _make_recovery_model_include_top(
            recovery_model,
            input_shape=input_shape,
            include_top=include_top,
            classes=classes,
            freeze_features=freeze_features)
        effb0.model = recovery_model
    else:
        effb0.model = _make_recovery_model_include_top(effb0.model,
                                                       include_top=include_top,
                                                       classes=classes,
                                                       freeze_features=False)

    effb0.model.input_shape = input_shape
    effb0.model.to(get_device())
    return effb0
Beispiel #25
0
def SEResNet_IR_50_512(include_top=True,
             pretrained=True,
             freeze_features=False,
             input_shape=(3,112,112),
             classes=1000,
             **kwargs):
    if input_shape is not None and len(input_shape)==3:
        input_shape=tuple(input_shape)
    else:
        input_shape=(3, 112, 112)
    seresnet = SEResNet_IR(include_top=include_top,num_layers=50,Bottleneck=BottleNeck_IR_SE,drop_ratio=0.4,feature_dim=512,input_shape=input_shape)
    if pretrained == True:
        download_model_from_google_drive('1aLYbFvtvsV2gQ16D_vwzrKdbCgij7IoZ', dirname, 'arcface_se_50_512.pth')
        recovery_model = load(os.path.join(dirname, 'arcface_se_50_512.pth'))
        recovery_model = fix_layer(recovery_model)
        recovery_model.name = 'arcface_se_50_512'
        recovery_model = _make_recovery_model_include_top(recovery_model, include_top=include_top, classes=classes, freeze_features=freeze_features)
        seresnet.model = recovery_model
    else:
        seresnet.model = _make_recovery_model_include_top(seresnet.model, include_top=include_top, classes=classes, freeze_features=False)
    seresnet.model.input_shape = input_shape
    seresnet.model.to(_device)
    return seresnet
Beispiel #26
0
def SE_ResNet101(include_top=True,
                 pretrained=True,
                 freeze_features=True,
                 input_shape=None,
                 classes=1000,
                 **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 224, 224)
    resnet101 = SE_ResNet(se_bottleneck, [3, 4, 23, 3],
                          input_shape,
                          num_classes=classes,
                          include_top=include_top,
                          model_name='resnet101')
    if pretrained == True:
        download_model_from_google_drive('1BO92ONsWnLQPWs9JVS-4SdpoPo5M4ABR',
                                         dirname, 'se_resnet101.pth')
        recovery_model = load(os.path.join(dirname, 'se_resnet101.pth'))
        recovery_model = fix_layer(recovery_model)
        recovery_model.name = 'se_resnet101'
        recovery_model = _make_recovery_model_include_top(
            recovery_model,
            include_top=include_top,
            classes=classes,
            freeze_features=freeze_features)
        resnet101.model = recovery_model
    else:
        resnet101.model = _make_recovery_model_include_top(
            resnet101.model,
            include_top=include_top,
            classes=classes,
            freeze_features=True)

    resnet101.model.input_shape = input_shape
    resnet101.model.to(_device)
    return resnet101
Beispiel #27
0
def RfbNet(include_top=True,
           pretrained=True,
           input_shape=None,
           base_filters=16,
           num_classes=1,
           num_regressors=4,
           **kwargs):
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)
    else:
        input_shape = (3, 480, 640)
    rfbnet = SsdDetectionModel(input_shape=(3, 480, 640),
                               output=RFBnet(base_filters=base_filters,
                                             num_classes=num_classes,
                                             num_regressors=num_regressors))
    rfbnet.detection_threshold = 0.7
    rfbnet.nms_threshold = 0.7
    rfbnet.palette[0] = (128, 255, 128)
    rfbnet.palette[1] = (128, 255, 128)
    rfbnet.preprocess_flow = [
        Resize((480, 640), True),
        Normalize(127.5, 127.5)
    ]
    if pretrained == True:
        download_model_from_google_drive('1T_0VYOHaxoyuG1fAxY-6g0C7pfXiujns',
                                         dirname, 'version-RFB-640.pth')
        recovery_model = fix_layer(
            load(os.path.join(dirname, 'version-RFB-640.pth')))
        priors = recovery_model.priors.clone()
        recovery_model.__delattr__("priors")
        recovery_model.register_buffer("priors", priors)
        recovery_model.name = 'rfb640'
        recovery_model.eval()
        recovery_model.to(_device)
        rfbnet.model = recovery_model
    return rfbnet
Beispiel #28
0
def DenseNet201(include_top=True,
                pretrained=True,
                freeze_features=True,
                input_shape=(3, 224, 224),
                classes=1000,
                **kwargs):
    """
    Constructor the image classicication model with DenseNet201 as backbond

    Args:
        freeze_features ():
        include_top ():
        pretrained (bool): If True, returns a model pre-trained on ImageNet.
        input_shape (tuple or list): the default input image size in CHW order (C, H, W)
        classes (int): number of classes

    References
        Densely Connected Convolutional Networks" <https://arxiv.org/pdf/1608.06993.pdf

    Returns:
        the image classicication model with DenseNet201

    Examples:
        >>> dense201 = DenseNet201(include_top=True,pretrained=True,input_shape=(3,224,224),classes=1000)
        >>> 'n02124075' in dense201.infer_single_image(get_image_from_google_drive('1SwablQsZO8mBuB84xnr1IoOisE3pm03l'),1).key_list[0]
        True

    """
    if input_shape is not None and len(input_shape) == 3:
        input_shape = tuple(input_shape)

    densenet201 = DenseNet([6, 12, 48, 32],
                           32,
                           64,
                           include_top=include_top,
                           pretrained=True,
                           input_shape=input_shape,
                           num_classes=classes,
                           name='densenet201')
    if pretrained == True:
        download_model_from_google_drive('1V2JazzdnrU64lDfE-O4bVIgFNQJ38q3J',
                                         dirname, 'densenet201.pth')
        recovery_model = load(os.path.join(dirname, 'densenet201.pth'))
        recovery_model = fix_layer(recovery_model)
        recovery_model.name = 'densenet201'
        recovery_model = _make_recovery_model_include_top(
            recovery_model,
            input_shape=input_shape,
            include_top=include_top,
            classes=classes,
            freeze_features=freeze_features)
        densenet201.model = recovery_model

    else:
        densenet201.model = _make_recovery_model_include_top(
            densenet201.model,
            include_top=include_top,
            classes=classes,
            freeze_features=True)
        densenet201.model.input_shape = input_shape
    densenet201.model.to(_device)
    return densenet201