Exemplo n.º 1
0
def resume_routine_vgg(config,
                       weights_path,
                       verbose=(2, 2),
                       nb_epoch_finetune=15,
                       nb_epoch_after=50,
                       stiefel_observed=None,
                       stiefel_lr=0.01,
                       by_name=False):
    """
    Finetune the ResNet-DCov

    Returns
    -------

    """
    image_gen = ImageDataGeneratorAdvanced(
        TARGET_SIZE,
        RESCALE_SMALL,
        True,
        horizontal_flip=True,
    )
    resume_model_with_config(VGG16_o2,
                             config,
                             weights_path=weights_path,
                             title='minc2500_VGG',
                             verbose=verbose,
                             image_gen=image_gen,
                             nb_epoch_after=nb_epoch_after,
                             nb_epoch_finetune=nb_epoch_finetune,
                             stiefel_lr=stiefel_lr,
                             stiefel_observed=stiefel_observed,
                             by_name=by_name)
Exemplo n.º 2
0
def test_routine_resnet(config):
    """
    Finetune the ResNet-DCov

    Returns
    -------

    """
    nb_epoch_finetune = 2
    nb_epoch_after = 50
    title = 'test_minc_orig_cov'

    image_gen = ImageDataGeneratorAdvanced(
        TARGET_SIZE,
        RESCALE_SMALL,
        True,
        horizontal_flip=True,
        # preprocessing_function=preprocess_image_for_imagenet
        # channelwise_std_normalization=True
    )

    run_finetune(ResNet50_o2,
                 mincorig_finetune,
                 input_shape,
                 config,
                 image_gen,
                 nb_classes=nb_classes,
                 nb_epoch_finetune=nb_epoch_finetune,
                 nb_epoch_after=nb_epoch_after,
                 title=title,
                 verbose=(2, 1))
Exemplo n.º 3
0
def run_routine_resnet_multibranch(config,
                                   verbose=(2, 2),
                                   nb_epoch_finetune=15,
                                   nb_epoch_after=50,
                                   stiefel_observed=None,
                                   stiefel_lr=0.01):
    """
        Finetune the ResNet-DCov

        Returns
        -------

        """
    image_gen = ImageDataGeneratorAdvanced(
        TARGET_SIZE,
        RESCALE_SMALL,
        True,
        horizontal_flip=True,
        preprocessing_function=preprocess_image_for_imagenet)

    run_model_with_config(ResNet50_o2_multibranch,
                          config,
                          title='minc_orig_resnet_MB',
                          verbose=verbose,
                          image_gen=image_gen,
                          nb_epoch_after=nb_epoch_after,
                          nb_epoch_finetune=nb_epoch_finetune,
                          stiefel_lr=stiefel_lr,
                          stiefel_observed=stiefel_observed)
Exemplo n.º 4
0
def baseline_finetune_resnet(exp):
    nb_epoch_finetune = 10
    nb_epoch_after = 50
    if exp == 1:
        model = ResNet50_o1(denses=[],
                            nb_classes=nb_classes,
                            input_shape=input_shape,
                            freeze_conv=True)
        model.name = 'baseline_resnet'
    elif exp == 2:
        last_conv_feature_maps = [1024, 512]
        model = ResNet50_o1(denses=[],
                            nb_classes=nb_classes,
                            input_shape=input_shape,
                            freeze_conv=True,
                            last_conv_feature_maps=last_conv_feature_maps)
        model.name = 'baseline_resnet_with_1x1'
    else:
        return
    image_gen = ImageDataGeneratorAdvanced(
        TARGET_SIZE,
        RESCALE_SMALL,
        True,
        horizontal_flip=True,
    )
    mincorig_finetune(model,
                      image_gen=image_gen,
                      title='mincorig_finetune_resnet',
                      nb_epoch_finetune=nb_epoch_finetune,
                      nb_epoch_after=nb_epoch_after,
                      batch_size=32,
                      early_stop=True)
Exemplo n.º 5
0
def run_routine_resnet_multibranch(config,
                                   verbose=(2, 2),
                                   nb_epoch_finetune=15,
                                   nb_epoch_after=50,
                                   stiefel_observed=None,
                                   stiefel_lr=0.01):
    """
        Finetune the ResNet-DCov

        Returns
        -------

        """
    image_gen = ImageDataGeneratorAdvanced(
        TARGET_SIZE,
        RESCALE_SMALL,
        True,
        horizontal_flip=True,
    )

    finetune_model_with_config(ResNet50_o2_multibranch,
                               imagenet_finetune,
                               config,
                               nb_classes,
                               title='ImageNet_ResNet_MB',
                               verbose=verbose,
                               image_gen=image_gen,
                               nb_epoch_after=nb_epoch_after,
                               nb_epoch_finetune=nb_epoch_finetune,
                               stiefel_lr=stiefel_lr,
                               stiefel_observed=stiefel_observed)
Exemplo n.º 6
0
def loadImageNet(
    image_gen=None,
    batch_size=32,
):
    # Absolute paths
    IMAGENET_PATH = '/home/kyu/.keras/datasets/ILSVRC2015'
    TARGET_SIZE = (224, 224)
    RESCALE_SMALL = 256
    # ImageNet generator
    imageNetLoader = ImageNetLoader(IMAGENET_PATH)
    if image_gen is None:
        iamge_gen = ImageDataGeneratorAdvanced(
            TARGET_SIZE,
            RESCALE_SMALL,
            True,
            horizontal_flip=True,
            preprocessing_function=preprocess_image_for_imagenet
            # channelwise_std_normalization=True
        )

    train = imageNetLoader.generator('train',
                                     image_data_generator=image_gen,
                                     batch_size=batch_size)
    valid = imageNetLoader.generator('valid',
                                     image_data_generator=image_gen,
                                     batch_size=batch_size)
    # test = imageNetLoader.generator('valid', image_data_generator=gen)
    return train, valid
Exemplo n.º 7
0
def baseline_finetune_bilinear(exp=1):
    nb_epoch_finetune = 1
    nb_epoch_after = 100

    if exp == 1:
        model = VGG16_bilinear(nb_class=nb_classes,
                               input_shape=input_shape,
                               freeze_conv=True)

    model.name = 'baseline_vgg16_bilinear'
    image_gen = ImageDataGeneratorAdvanced(
        TARGET_SIZE,
        RESCALE_SMALL,
        True,
        horizontal_flip=True,
        preprocessing_function=preprocess_image_for_imagenet
        # channelwise_std_normalization=True
    )
    weight_path = '/home/kyu/.keras/models/minc_finetune_vgg16_bilinear-baseline_vgg16_bilinear_1.weights_100'
    minc2500_finetune(model,
                      image_gen=image_gen,
                      title='minc_finetune_vgg16_bilinear',
                      nb_epoch_finetune=nb_epoch_finetune,
                      nb_epoch_after=nb_epoch_after,
                      weight_path=weight_path,
                      load=True,
                      batch_size=32,
                      early_stop=True,
                      lr_decay=False,
                      lr=0.05)
Exemplo n.º 8
0
def resume_routine_resnet_multibranch(config,
                                      verbose=(2, 2),
                                      weights_path='',
                                      nb_epoch_finetune=0,
                                      nb_epoch_after=50,
                                      stiefel_observed=None,
                                      stiefel_lr=0.01,
                                      by_name=False):
    """
        Finetune the ResNet-DCov

        Returns
        -------

        """
    image_gen = ImageDataGeneratorAdvanced(
        TARGET_SIZE,
        RESCALE_SMALL,
        True,
        horizontal_flip=True,
    )
    resume_model_with_config(ResNet50_o2_multibranch,
                             config,
                             weights_path=weights_path,
                             title='mit_indoor_resnet_MB',
                             verbose=verbose,
                             image_gen=image_gen,
                             nb_epoch_after=nb_epoch_after,
                             nb_epoch_finetune=nb_epoch_finetune,
                             stiefel_lr=stiefel_lr,
                             stiefel_observed=stiefel_observed,
                             by_name=by_name)
Exemplo n.º 9
0
def run_routine_resnet(config, verbose=(2,2), nb_epoch_finetune=15, nb_epoch_after=50,
                       stiefel_observed=None, stiefel_lr=0.01):
    """
    Finetune the ResNet-DCov

    Returns
    -------

    """
    image_gen = ImageDataGeneratorAdvanced(TARGET_SIZE, RESCALE_SMALL, True,
                                           horizontal_flip=True,
                                           )
    monitor_class = (O2Transform, SecondaryStatistic)
    # monitor_metrics = ['weight_norm',]
    # monitor_metrics = ['output_norm',]
    monitor_metrics = ['matrix_image',]
    if stiefel_observed is None:
        run_finetune(ResNet50_o2, mincorig_finetune,
                     nb_classes=nb_classes,
                     input_shape=input_shape, config=config,
                     nb_epoch_finetune=nb_epoch_finetune, nb_epoch_after=nb_epoch_after,
                     image_gen=image_gen, title='minc_orig_resnet50', verbose=verbose,
                     monitor_classes=monitor_class,
                     monitor_measures=monitor_metrics)
    else:
        run_finetune_with_Stiefel_layer(ResNet50_o2, mincorig_finetune,
                                        nb_classes=nb_classes,
                                        input_shape=input_shape, config=config,
                                        nb_epoch_finetune=nb_epoch_finetune, nb_epoch_after=nb_epoch_after,
                                        image_gen=image_gen, title='minc_orig_resnet50_stiefel', verbose=verbose,
                                        monitor_classes=monitor_class,
                                        monitor_measures=monitor_metrics,
                                        observed_keywords=stiefel_observed,
                                        lr=stiefel_lr)
Exemplo n.º 10
0
def baseline_finetune_vgg(exp=1):
    nb_epoch_finetune = 10
    nb_epoch_after = 50
    if exp == 1:
        model = VGG16_o1(denses=[4096, 4096],
                         nb_classes=nb_classes,
                         input_shape=input_shape,
                         freeze_conv=True,
                         last_conv=False)
        model.name = 'baseline_vgg16'
    elif exp == 2:
        model = VGG16_o1(denses=[4096, 4096],
                         nb_classes=nb_classes,
                         input_shape=input_shape,
                         freeze_conv=True,
                         last_conv=True)
        model.name = 'baseline_vgg16_with_1x1'
    image_gen = ImageDataGeneratorAdvanced(
        TARGET_SIZE,
        RESCALE_SMALL,
        True,
        horizontal_flip=True,
        preprocessing_function=preprocess_image_for_imagenet
        # channelwise_std_normalization=True
    )
    minc2500_finetune(model,
                      image_gen=image_gen,
                      title='minc2500_finetune_vgg16',
                      nb_epoch_finetune=nb_epoch_finetune,
                      nb_epoch_after=nb_epoch_after,
                      batch_size=32,
                      early_stop=True)
Exemplo n.º 11
0
def run_residual_cov_resnet(exp):
    """
        Finetune the ResNet-DCov

        Returns
        -------
    m
        """
    nb_epoch_finetune = 50
    nb_epoch_after = 50

    config = get_residual_cov_experiment(exp)
    title = 'minc2500_residual_cov'

    image_gen = ImageDataGeneratorAdvanced(
        TARGET_SIZE,
        RESCALE_SMALL,
        True,
        horizontal_flip=True,
        # preprocessing_function=preprocess_image_for_imagenet
        # channelwise_std_normalization=True
    )

    run_finetune(ResNet50_o2,
                 minc2500_finetune,
                 input_shape,
                 config,
                 image_gen,
                 nb_classes=nb_classes,
                 nb_epoch_finetune=nb_epoch_finetune,
                 nb_epoch_after=nb_epoch_after,
                 title=title,
                 verbose=(2, 1))
Exemplo n.º 12
0
def run_routine_vgg(config,
                    verbose=(2, 2),
                    nb_epoch_finetune=15,
                    nb_epoch_after=50,
                    stiefel_observed=None,
                    stiefel_lr=0.01):
    """
    Finetune the ResNet-DCov

    Returns
    -------

    """
    image_gen = ImageDataGeneratorAdvanced(
        TARGET_SIZE,
        RESCALE_SMALL,
        True,
        horizontal_flip=True,
        preprocessing_function=preprocess_image_for_imagenet)

    monitor_class = (O2Transform, SecondaryStatistic)
    # monitor_metrics = ['weight_norm',]
    # monitor_metrics = ['output_norm',]
    monitor_metrics = [
        'matrix_image',
    ]
    run_model_with_config(VGG16_o2,
                          config,
                          title='minc2500_VGG16',
                          verbose=verbose,
                          image_gen=image_gen,
                          nb_epoch_after=nb_epoch_after,
                          nb_epoch_finetune=nb_epoch_finetune,
                          stiefel_lr=stiefel_lr,
                          stiefel_observed=stiefel_observed)
Exemplo n.º 13
0
def test_routine_vgg(exp=1):
    """
    Finetune the ResNet-DCov

    Returns
    -------

    """
    nb_epoch_finetune = 10
    nb_epoch_after = 10

    image_gen = ImageDataGeneratorAdvanced(
        TARGET_SIZE,
        RESCALE_SMALL,
        True,
        horizontal_flip=True,
        preprocessing_function=preprocess_image_for_imagenet
        # channelwise_std_normalization=True
    )
    config = get_experiment_settings(exp)
    cov_branch = config.cov_branch
    cov_mode = config.cov_mode
    cov_regularizer = config.cov_regularizer
    early_stop = config.early_stop

    print("Running experiment {}".format(exp))
    for param in config.params:
        for mode in config.mode_list:
            for cov_output in config.cov_outputs:
                print("Run routine 1 param {}, mode {}, covariance output {}".
                      format(param, mode, cov_output))

                model = VGG16_o2(
                    parametrics=param,
                    mode=mode,
                    cov_branch=cov_branch,
                    cov_mode=cov_mode,
                    nb_classes=nb_classes,
                    cov_branch_output=cov_output,
                    input_shape=input_shape,
                    freeze_conv=True,
                    cov_regularizer=cov_regularizer,
                    last_conv_feature_maps=config.last_conv_feature_maps)

                mincorig_finetune(model,
                                  title='minc_orig_cov_{}_wv{}_{}'.format(
                                      cov_branch, str(cov_output), cov_mode),
                                  nb_epoch_after=nb_epoch_after,
                                  nb_epoch_finetune=nb_epoch_finetune,
                                  image_gen=image_gen,
                                  batch_size=32,
                                  early_stop=early_stop,
                                  log=False,
                                  verbose=1)
Exemplo n.º 14
0
def baseline_VGG():
    model = VGG16_o1(denses=[1024],
                     nb_classes=nb_classes,
                     input_shape=input_shape)
    model.name = 'baseline_vgg16'
    image_gen = ImageDataGeneratorAdvanced(
        TARGET_SIZE,
        RESCALE_SMALL,
        True,
        horizontal_flip=True,
        preprocessing_function=preprocess_image_for_imagenet
        # channelwise_std_normalization=True
    )
    dtd_fitting(model, image_gen)
Exemplo n.º 15
0
def run_model_with_config(model,
                          config,
                          title='minc2500',
                          image_gen=None,
                          verbose=(2, 2),
                          nb_epoch_finetune=15,
                          nb_epoch_after=50,
                          stiefel_observed=None,
                          stiefel_lr=0.01):
    """
    Finetune the ResNet-DCov

    Returns
    -------

    """

    if image_gen is None:
        image_gen = ImageDataGeneratorAdvanced(
            TARGET_SIZE,
            RESCALE_SMALL,
            True,
            horizontal_flip=True,
        )

    monitor_class = (O2Transform, SecondaryStatistic)
    # monitor_metrics = ['weight_norm',]
    # monitor_metrics = ['output_norm',]
    monitor_metrics = [
        'matrix_image',
    ]
    finetune_model_with_config(
        model,
        minc2500_finetune,
        config,
        nb_classes,
        input_shape,
        title=title,
        image_gen=image_gen,
        verbose=verbose,
        nb_epoch_finetune=nb_epoch_finetune,
        nb_epoch_after=nb_epoch_after,
        stiefel_observed=stiefel_observed,
        stiefel_lr=stiefel_lr,
    )
Exemplo n.º 16
0
def resume_model_with_config(model, config, title='cifar10',
                             image_gen=None, weights_path='',
                             verbose=(2, 2), nb_epoch_finetune=0, nb_epoch_after=50,
                             stiefel_observed=None, stiefel_lr=0.0001,
                             by_name=False):
    """
    Finetune the ResNet-DCov

    Returns
    -------

    """

    if image_gen is None:
        image_gen = ImageDataGeneratorAdvanced(TARGET_SIZE, RESCALE_SMALL, True,
                                               horizontal_flip=True,
                                               )

    monitor_class = (O2Transform, SecondaryStatistic)
    # monitor_metrics = ['weight_norm',]
    # monitor_metrics = ['output_norm',]
    monitor_metrics = ['matrix_image', ]
    if stiefel_observed is None:
        resume_finetune(model, cifar_train,
                        weights_path=weights_path,
                        nb_classes=nb_classes,
                        input_shape=input_shape, config=config,
                        nb_epoch_finetune=nb_epoch_finetune, nb_epoch_after=nb_epoch_after,
                        image_gen=image_gen, title=title, verbose=verbose,
                        monitor_classes=monitor_class,
                        monitor_measures=monitor_metrics,
                        by_name=by_name)
    else:
        resume_finetune_with_Stiefel_layer(model, cifar_train,
                                           weights_path=weights_path,
                                           nb_classes=nb_classes,
                                           input_shape=input_shape, config=config,
                                           nb_epoch_finetune=nb_epoch_finetune, nb_epoch_after=nb_epoch_after,
                                           image_gen=image_gen, title=title+'-stiefel', verbose=verbose,
                                           monitor_classes=monitor_class,
                                           monitor_measures=monitor_metrics,
                                           observed_keywords=stiefel_observed,
                                           lr=stiefel_lr,
                                           by_name=by_name)
Exemplo n.º 17
0
TARGET_SIZE = (224, 224)
RESCALE_SMALL = 256

BATCH_SIZE = 32
NB_EPOCH = 1000
VERBOSE = 1
SAVE_LOG = True
VALIDATION = True

# Xray Loader

xray_loader = XrayLoader()
gen = ImageDataGeneratorAdvanced(
    TARGET_SIZE,
    RESCALE_SMALL,
    True,
    horizontal_flip=True,
    preprocessing_function=preprocess_image_for_imagenet
    # channelwise_std_normalization=True
)

train = xray_loader.generator('train', batch_size=BATCH_SIZE)
test = xray_loader.generator('test', batch_size=BATCH_SIZE)
# train = xray_loader.generator('train', batch_size=BATCH_SIZE, image_data_generator=gen)
# test = xray_loader.generator('test', batch_size=BATCH_SIZE, image_data_generator=gen)


def fit_model(model, load=False, save=True, title='swisscom', nb_epoch=10):

    # sgd = SGD(lr=0.0001, decay=1e-6, momentum=0.9, nesterov=False)
    sgd = SGDWithWeightnorm(lr=0.0001, decay=1e-6, momentum=0.9)
    model.compile(loss='categorical_crossentropy',