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
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
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
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
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
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
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
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
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
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
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
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
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
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
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, )
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
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
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
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
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
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
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
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
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
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
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
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
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