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