コード例 #1
0
def FIRST_Fraction(CHANNELS=[['FIRST']],
                   PROJECT_DIR='Script_Experiments_Fraction_Learning',
                   TRIAL=0):

    rgz_dir = 'rgz_rcnn_data'
    cat = Catalog(rgz_dir=rgz_dir)

    print('\nValidating sources...')
    cat.collect_valid_sources()

    for bin_opts, pink_opts, channels, learning in product(
            BINARY_OPTS, PINK_OPTS, CHANNELS, LEARNING_MODES):
        print(bin_opts, pink_opts)

        # Make sure there are enough channels to do the mask with
        if len(CHANNELS[0]) == 1 and bin_opts['convex']:
            print(
                f'Skipping this option set. CHANNELS is {CHANNELS[0]}, nothing to apply convex hull masking to. '
            )
            continue

        chan_name = '_'.join(channels)
        out_dir = f"{PROJECT_DIR}/{chan_name}_{bin_opts['project_dir']}_{pink_opts['som-width']}x{pink_opts['som-height']}_Trial{TRIAL}"
        results = []

        if not os.path.exists(f'{out_dir}/trained.pink'):
            # This is painful, but since product() is returning a reference to a dict, we cant
            # edit the project_dir in place to build up the folder name, as this gets carried
            # through to later iterations. Hence, we can't **bin_opts below
            bins = cat.dump_binary('source.binary',
                                   channels=channels,
                                   project_dir=out_dir,
                                   norm=bin_opts['norm'],
                                   sigma=bin_opts['sigma'],
                                   log10=bin_opts['log10'],
                                   convex=bin_opts['convex'],
                                   fraction=bin_opts['fraction'])

            train_bin, validate_bin = bins

            pink = Pink(train_bin,
                        pink_args=pink_opts,
                        validate_binary=validate_bin)
            pink.train(learning=learning)
        else:
            print('Loading in saved Pink instance')
            pink = Pink.loader(f'{out_dir}/trained.pink')

        for i, t in enumerate(pink.binary):
            try:
                pink.map(mode=i)
                pink.map(mode='validate', SOM_mode=i)

                pink.save('trained.pink')

                pink.show_som(channel=0, mode=i)
                pink.show_som(channel=0, mode=i, plt_mode='split')
                pink.show_som(channel=0, mode=i, plt_mode='grid')
                pink.show_som(channel=1, mode=i)
                pink.show_som(channel=1, mode=i, plt_mode='split')
                pink.show_som(channel=1, mode=i, plt_mode='grid')

            except Exception as e:
                print('Try caught something')
                print(e)

                import traceback
                traceback.print_exc()

            plt.close('all')
コード例 #2
0
def main():
    test_dir = 'Test_Experiment'
    proj_dir = 'FIRST_Norm_Log_3'
    pink_opts = {
        'som-width': 10,
        'som-height': 10,
        'num-iter': 1,
        'inter-store': 'keep'
    }

    rgz_dir = 'rgz_rcnn_data'
    cat = Catalog(rgz_dir=rgz_dir)

    print('\nValidating sources...')
    cat.collect_valid_sources()

    out_dir = f"{test_dir}/FIRST_{proj_dir}_{pink_opts['som-width']}x{pink_opts['som-height']}_10_iter"
    if not os.path.exists(f'{out_dir}/trained.pink'):
        bins = cat.dump_binary('source.binary',
                               channels=['FIRST'],
                               project_dir=out_dir,
                               norm=True,
                               sigma=3.,
                               log10=True,
                               fraction=0.75)

        train_bin, validate_bin = bins

        pink = Pink(train_bin,
                    pink_args=pink_opts,
                    validate_binary=validate_bin)
        pink.train(learning=[('gaussian', '3.0',
                              '0.1'), ('gaussian', '1.4',
                                       '0.05'), ('gaussian', '0.3', '0.01')])
        pink.map()
        pink.map(mode='validate', SOM_mode='train')
        pink.save('trained.pink')

    pink_opts = {
        'som-width': 15,
        'som-height': 15,
        'num-iter': 1,
        'inter-store': 'keep'
    }

    out_dir = f"{test_dir}/FIRST_{proj_dir}_{pink_opts['som-width']}x{pink_opts['som-height']}_20_iter"
    if not os.path.exists(f'{out_dir}/trained.pink'):
        bins = cat.dump_binary('source.binary',
                               channels=['FIRST'],
                               project_dir=out_dir,
                               norm=True,
                               sigma=2.,
                               log10=True,
                               fraction=0.75)

        train_bin, validate_bin = bins

        pink = Pink(train_bin,
                    pink_args=pink_opts,
                    validate_binary=validate_bin)
        pink.train(learning=[('gaussian', '3.0',
                              '0.1'), ('gaussian', '1.4',
                                       '0.05'), ('gaussian', '0.3', '0.01')])
        pink.map()
        pink.map(mode='validate', SOM_mode='train')
        pink.save('trained.pink')

    # pink_opts = {'som-width':10, 'som-height':10, 'num-iter':1, 'inter-store':'keep'}

    # out_dir = f"{test_dir}/FIRST_{proj_dir}_{pink_opts['som-width']}x{pink_opts['som-height']}_30_iter"
    # if not os.path.exists(f'{out_dir}/trained.pink'):
    #     bins = cat.dump_binary('source.binary', channels=['FIRST'], project_dir=out_dir,
    #                     norm=True, sigma=2., log10=True, fraction=0.75)

    #     train_bin, validate_bin = bins

    #     pink = Pink(train_bin,
    #                 pink_args=pink_opts,
    #                 validate_binary=validate_bin)
    #     pink.train(learning=[('gaussian','3.0','0.1'),
    #                          ('gaussian','1.4','0.05'),
    #                          ('gaussian','0.3','0.01')])
    #     pink.map()
    #     pink.map(mode='validate', SOM_mode='train')
    #     pink.save('trained.pink')


# ---------------------------------------------------------
    proj_dir = 'FIRST_WISE_Norm_Log_3'

    pink_opts = {
        'som-width': 10,
        'som-height': 10,
        'num-iter': 1,
        'progress': 0.05,
        'inter-store': 'keep'
    }

    out_dir = f"{test_dir}/{proj_dir}_{pink_opts['som-width']}x{pink_opts['som-height']}_10_iter"
    if not os.path.exists(f'{out_dir}/trained.pink'):
        bins = cat.dump_binary('source.binary',
                               channels=['FIRST', 'WISE_W1'],
                               project_dir=out_dir,
                               norm=True,
                               sigma=3.,
                               log10=True,
                               fraction=0.75)

        train_bin, validate_bin = bins

        pink = Pink(train_bin,
                    pink_args=pink_opts,
                    validate_binary=validate_bin)
        pink.train(learning=[('gaussian', '3.0',
                              '0.1'), ('gaussian', '1.4',
                                       '0.05'), ('gaussian', '0.3', '0.01')])
        pink.map()
        pink.map(mode='validate', SOM_mode='train')
        pink.save('trained.pink')

    pink_opts = {
        'som-width': 15,
        'som-height': 15,
        'num-iter': 1,
        'progress': 0.05,
        'inter-store': 'keep'
    }

    out_dir = f"{test_dir}/{proj_dir}_{pink_opts['som-width']}x{pink_opts['som-height']}_20_iter"
    if not os.path.exists(f'{out_dir}/trained.pink'):
        bins = cat.dump_binary('source.binary',
                               channels=['FIRST', 'WISE_W1'],
                               project_dir=out_dir,
                               norm=True,
                               sigma=2.,
                               log10=True,
                               fraction=0.75)

        train_bin, validate_bin = bins

        pink = Pink(train_bin,
                    pink_args=pink_opts,
                    validate_binary=validate_bin)
        pink.train(learning=[('gaussian', '3.0',
                              '0.1'), ('gaussian', '1.4',
                                       '0.05'), ('gaussian', '0.3', '0.01')])
        pink.map()
        pink.map(mode='validate', SOM_mode='train')
        pink.save('trained.pink')