Пример #1
0
def get_coverage_kpts_gridsearch_configs():
    """ testing function """
    varied_dict = {
        'cov_agg_mode': ['max', 'sum'],
        #'cov_blur_ksize'         : [(19, 19), (5, 5)],
        'cov_blur_ksize': [(5, 5)],
        'cov_blur_on': [True, False],
        'cov_blur_sigma': [5.0],
        'cov_remove_scale': [True],
        'cov_remove_shape': [False, True],
        'cov_scale_factor': [.3],
        'cov_size_penalty_frac': [.1],
        'cov_size_penalty_on': [True],
        'cov_size_penalty_power': [.5],
    }
    slice_dict = {
        'cov_scale_factor': slice(0, 3),
        'cov_agg_mode': slice(0, 2),
        'cov_blur_ksize': slice(0, 2),
        #'grid_sigma'        : slice(0, 4),
    }
    slice_dict = None

    # Make configuration for every parameter setting
    def constrain_func(cfgdict):
        if cfgdict['cov_remove_shape']:
            cfgdict['cov_remove_scale'] = False
            cfgdict['cov_size_penalty_on'] = False
        if not cfgdict['cov_size_penalty_on']:
            cfgdict['cov_size_penalty_power'] = None
            cfgdict['cov_size_penalty_frac'] = None
        if not cfgdict['cov_blur_on']:
            cfgdict['cov_blur_ksize'] = None
            cfgdict['cov_blur_sigma'] = None
        return cfgdict

    cfgdict_list, cfglbl_list = ut.make_constrained_cfg_and_lbl_list(
        varied_dict, constrain_func, slice_dict)
    return cfgdict_list, cfglbl_list
Пример #2
0
def get_coverage_kpts_gridsearch_configs():
    """ testing function """
    varied_dict = {
        'cov_agg_mode'           : ['max', 'sum'],
        #'cov_blur_ksize'         : [(19, 19), (5, 5)],
        'cov_blur_ksize'         : [(5, 5)],
        'cov_blur_on'            : [True, False],
        'cov_blur_sigma'         : [5.0],
        'cov_remove_scale'       : [True],
        'cov_remove_shape'       : [False, True],
        'cov_scale_factor'       : [.3],
        'cov_size_penalty_frac'  : [.1],
        'cov_size_penalty_on'    : [True],
        'cov_size_penalty_power' : [.5],
    }
    slice_dict = {
        'cov_scale_factor' : slice(0, 3),
        'cov_agg_mode'     : slice(0, 2),
        'cov_blur_ksize'   : slice(0, 2),
        #'grid_sigma'        : slice(0, 4),
    }
    slice_dict = None
    # Make configuration for every parameter setting
    def constrain_func(cfgdict):
        if cfgdict['cov_remove_shape']:
            cfgdict['cov_remove_scale'] = False
            cfgdict['cov_size_penalty_on'] = False
        if not cfgdict['cov_size_penalty_on']:
            cfgdict['cov_size_penalty_power'] = None
            cfgdict['cov_size_penalty_frac'] = None
        if not cfgdict['cov_blur_on']:
            cfgdict['cov_blur_ksize'] = None
            cfgdict['cov_blur_sigma'] = None
        return cfgdict
    cfgdict_list, cfglbl_list = ut.make_constrained_cfg_and_lbl_list(varied_dict, constrain_func, slice_dict)
    return cfgdict_list, cfglbl_list
def tst_single_annot_distinctiveness_params(ibs, aid):
    r"""

    CommandLine:
        python -m wbia.algo.hots.distinctiveness_normalizer --test-test_single_annot_distinctiveness_params --show
        python -m wbia.algo.hots.distinctiveness_normalizer --test-test_single_annot_distinctiveness_params --show --db GZ_ALL

    Example:
        >>> # DISABLE_DOCTEST
        >>> from wbia.algo.hots.distinctiveness_normalizer import *  # NOQA
        >>> import wbia.plottool as pt
        >>> import wbia
        >>> # build test data
        >>> ibs = wbia.opendb(ut.get_argval('--db', type_=str, default='PZ_MTEST'))
        >>> aid = ut.get_argval('--aid', type_=int, default=1)
        >>> # execute function
        >>> test_single_annot_distinctiveness_params(ibs, aid)
        >>> pt.show_if_requested()
    """
    ####
    # TODO: Also paramatarize the downweighting based on the keypoint size
    ####
    # HACK IN ABILITY TO SET CONFIG
    from wbia.init.main_commands import postload_commands
    from wbia.algo import Config

    postload_commands(ibs, None)

    import wbia.plottool as pt

    # cfglbl_list = cfgdict_list
    # ut.all_dict_combinations_lbls(varied_dict)

    # Get info to find distinctivness of
    species_text = ibs.get_annot_species(aid)
    # FIXME; qreq_ params for config rowid
    vecs = ibs.get_annot_vecs(aid)
    kpts = ibs.get_annot_kpts(aid)
    chip = ibs.get_annot_chips(aid)

    # Paramater space to search
    # TODO: use slicing to control the params being varied
    # Use GridSearch class to modify paramaters as you go.

    varied_dict = Config.DCVS_DEFAULT.get_varydict()

    logger.info('Varied Dict: ')
    logger.info(ut.repr2(varied_dict))

    cfgdict_list, cfglbl_list = ut.make_constrained_cfg_and_lbl_list(
        varied_dict)

    # Get groundtruthish distinctivness map
    # for objective function
    # Load distinctivness normalizer
    with ut.Timer('Loading Distinctivness Normalizer for %s' % (species_text)):
        dstcvnss_normer = request_species_distinctiveness_normalizer(
            species_text)

    # Get distinctivness over all params
    dstncvs_list = [
        dstcvnss_normer.get_distinctiveness(vecs, **cfgdict)
        for cfgdict in ut.ProgIter(cfgdict_list, lbl='get dstcvns')
    ]

    # fgweights = ibs.get_annot_fgweights([aid])[0]
    # dstncvs_list = [x * fgweights for x in dstncvs_list]
    fnum = 1

    import functools

    show_func = functools.partial(show_chip_distinctiveness_plot, chip, kpts)

    ut.interact_gridsearch_result_images(
        show_func,
        cfgdict_list,
        cfglbl_list,
        dstncvs_list,
        score_list=None,
        fnum=fnum,
        figtitle='dstncvs gridsearch',
    )

    pt.present()
Пример #4
0
def test_single_annot_distinctiveness_params(ibs, aid):
    r"""

    CommandLine:
        python -m ibeis.algo.hots.distinctiveness_normalizer --test-test_single_annot_distinctiveness_params --show
        python -m ibeis.algo.hots.distinctiveness_normalizer --test-test_single_annot_distinctiveness_params --show --db GZ_ALL

    Example:
        >>> # DISABLE_DOCTEST
        >>> from ibeis.algo.hots.distinctiveness_normalizer import *  # NOQA
        >>> import plottool as pt
        >>> import ibeis
        >>> # build test data
        >>> ibs = ibeis.opendb(ut.get_argval('--db', type_=str, default='PZ_MTEST'))
        >>> aid = ut.get_argval('--aid', type_=int, default=1)
        >>> # execute function
        >>> test_single_annot_distinctiveness_params(ibs, aid)
        >>> pt.show_if_requested()
    """
    ####
    # TODO: Also paramatarize the downweighting based on the keypoint size
    ####
    # HACK IN ABILITY TO SET CONFIG
    from ibeis.init.main_commands import postload_commands
    from ibeis.algo import Config
    postload_commands(ibs, None)

    import plottool as pt

    #cfglbl_list = cfgdict_list
    #ut.all_dict_combinations_lbls(varied_dict)

    # Get info to find distinctivness of
    species_text = ibs.get_annot_species(aid)
    # FIXME; qreq_ params for config rowid
    vecs = ibs.get_annot_vecs(aid)
    kpts = ibs.get_annot_kpts(aid)
    chip = ibs.get_annot_chips(aid)

    # Paramater space to search
    # TODO: use slicing to control the params being varied
    # Use GridSearch class to modify paramaters as you go.

    varied_dict = Config.DCVS_DEFAULT.get_varydict()

    print('Varied Dict: ')
    print(ut.dict_str(varied_dict))

    cfgdict_list, cfglbl_list = ut.make_constrained_cfg_and_lbl_list(varied_dict)

    # Get groundtruthish distinctivness map
    # for objective function
    # Load distinctivness normalizer
    with ut.Timer('Loading Distinctivness Normalizer for %s' % (species_text)):
        dstcvnss_normer = request_species_distinctiveness_normalizer(species_text)

    # Get distinctivness over all params
    dstncvs_list = [dstcvnss_normer.get_distinctiveness(vecs, **cfgdict)
                    for cfgdict in ut.ProgIter(cfgdict_list, lbl='get dstcvns')]

    #fgweights = ibs.get_annot_fgweights([aid])[0]
    #dstncvs_list = [x * fgweights for x in dstncvs_list]
    fnum = 1

    import functools
    show_func = functools.partial(show_chip_distinctiveness_plot, chip, kpts)

    ut.interact_gridsearch_result_images(
        show_func, cfgdict_list, cfglbl_list, dstncvs_list,
        score_list=None, fnum=fnum, figtitle='dstncvs gridsearch')

    pt.present()