def show_low_support_classes(dset): """ dset = merged coarse = merged """ # aid = list(dset.anns.values())[0]['id'] # dset.show_annotation(aid) dset._remove_keypoint_annotations() gids = sorted([gid for gid, aids in dset.gid_to_aids.items() if aids]) catfreq = dset.category_annotation_frequency() inspect_cids = [] for name, freq in catfreq.items(): if freq > 0 and freq < 50: cid = dset.name_to_cat[name]['id'] inspect_cids.append(cid) inspect_gids = list( set(ub.flatten(ub.take(dset.cid_to_gids, inspect_cids)))) # inspect_gids = [gid for gid in inspect_gids if 'habcam' not in dset.imgs[gid]['file_name']] import utool as ut if ut.inIPython(): import IPython IPython.get_ipython().magic('pylab qt5 --no-import-all') print('inspect_gids = {!r}'.format(inspect_gids)) from matplotlib import pyplot as plt for gid in ut.InteractiveIter(inspect_gids): img = dset.imgs[gid] print('img = {}'.format(ub.repr2(img))) aids = dset.gid_to_aids[gid] primary_aid = None anns = list(ub.take(dset.anns, aids)) for ann in anns: ann = ann.copy() ann['category'] = dset.cats[ann['category_id']]['name'] print('ann = {}'.format(ub.repr2(ann))) if primary_aid is None: if ann['category_id'] in inspect_cids: primary_aid = ann['id'] try: fig = plt.figure(1) fig.clf() dset.show_annotation(primary_aid, gid=gid) fig.canvas.draw() except Exception: print('cannot draw')
def qtensure(): import wbia.guitool as gt if ut.inIPython(): import IPython ipython = IPython.get_ipython() if ipython is None: # we must have exited ipython at some point return if gt.__PYQT__.GUITOOL_PYQT_VERSION == 5: """ sudo apt-get install python3-pyqt5.qtsvg """ # import os # os.environ['QT_API'] = 'pyqt5' # import matplotlib # matplotlib.use('Qt5Agg') # IPython.get_ipython().magic('matplotlib qt5') # IPython.get_ipython().magic('pylab qt4') ipython.magic('pylab qt5 --no-import-all') else: # IPython.get_ipython().magic('pylab qt4') ipython.magic('pylab qt4 --no-import-all')
#!/usr/bin/env python2.7 # TODO: ADD COPYRIGHT TAG from __future__ import absolute_import, division, print_function import utool import ibeis import multiprocessing from ibeis.model.detect import randomforest # IBEIS print, print_, printDBG, rrr, profile = utool.inject(__name__, '[TEST_DETECT]') SPECIAL = utool.get_flag('--special') or utool.inIPython() def TEST_DETECT(ibs): # Create a HotSpotter API (hs) and GUI backend (back) print('get_valid_ANNOTATIONS') gid_list = ibs.get_valid_gids()[0:1] if SPECIAL: gid_list = utool.safe_slice(ibs.get_valid_gids(), 3) #gid_list.extend(ibs.add_images([utool.unixpath('~/Dropbox/Chuck/detect_testimg/testgrevy.jpg')])) species = 'zebra_grevys' detectkw = { 'quick': True, 'save_detection_images': SPECIAL, 'save_scales': SPECIAL, } detect_gen = randomforest.generate_detections(ibs, gid_list, species, **detectkw) gid_list2 = [] bbox_list2 = [] for gid, bboxes, confidences, img_conf in detect_gen: for bbox in bboxes:
def iupdate(): if VERBOSE: print('[pt] iupdate') if ut.inIPython(): update()
def ensure_pylab_qt4(): if ut.inIPython(): import IPython IPython.get_ipython().magic('pylab qt4')
def show_keypoint_annots(): merged = read_fine_merged() def images_with_keypoints(): keypoint_gids = set() for aid, ann in merged.anns.items(): if ann['roi_shape'] == 'keypoints': keypoint_gids.add(ann['image_id']) relevant = ub.dict_subset(merged.gid_to_aids, keypoint_gids) relevant = { gid: [a for a in aids if merged.anns[a]['roi_shape'] == 'keypoints'] for gid, aids in relevant.items() } gid_list = ub.argsort(ub.map_vals(len, relevant))[::-1] return gid_list def sort_gids_by_nannots(gids): return ub.argsort( ub.map_vals(len, ub.dict_subset(merged.gid_to_aids, gids, default=[])))[::-1] def images_with_keypoints_and_boxes(): keypoint_gids = set() for aid, ann in merged.anns.items(): if ann['roi_shape'] == 'keypoints': keypoint_gids.add(ann['image_id']) gid_list = [] for gid in keypoint_gids: aids = merged.gid_to_aids[gid] types = set() for ann in ub.take(merged.anns, aids): types.add(ann['roi_shape']) if len(types) > 1: gid_list.append(gid) gid_list = sort_gids_by_nannots(gid_list) return gid_list def image_from_each_dataset(): groups = ub.ddict(list) for gid, img in merged.imgs.items(): groups[os.path.dirname(img['file_name'])].append(gid) gid_groups = [] for gids in groups.values(): gids = sort_gids_by_nannots(gids) gid_groups.append(gids) # round robin sample datas = [gid for x in zip(*gid_groups) for gid in x] return datas # gid_list = images_with_keypoints() gid_list = images_with_keypoints_and_boxes() gid_list = image_from_each_dataset() # gid = gid_list[2] # import matplotlib.pyplot as plt # plt.gcf().clf() # merged.show_annotation(gid=gid) import utool as ut if ut.inIPython(): import IPython IPython.get_ipython().magic('pylab qt5 --no-import-all') from matplotlib import pyplot as plt for gid in ut.InteractiveIter(gid_list): try: fig = plt.figure(1) fig.clf() merged.show_annotation(gid=gid) name = os.path.basename( os.path.dirname(merged.imgs[gid]['file_name'])) ax = plt.gca() plt.gca().set_title(name) ax.set_xticks([]) ax.set_yticks([]) plt.gca().grid('off') fig.canvas.draw() except Exception: print('cannot draw')
def parse_args(): ds_default = None arch_default = 'siaml2_128' weights_tag_default = None # Test values if False: ds_default = 'liberty' weights_tag_default = 'current' assert ut.inIPython() # Parse commandline args ds_tag = ut.get_argval(('--dataset', '--ds'), type_=str, default=ds_default) datatype = ut.get_argval(('--datatype', '--dt'), type_=str, default='siam-patch') arch_tag = ut.get_argval(('--arch', '-a'), default=arch_default) weights_tag = ut.get_argval(('--weights', '+w'), type_=str, default=weights_tag_default) # Incorporate new config stuff? #NEW = False #if NEW: # default_dstag_cfg = { # 'ds': 'PZ_MTEST', # 'mode': 'patches', # 'arch': arch_default # } # named_defaults_dict = { # '': default_dstag_cfg # } # ut.parse_argv_cfg('dstag', named_defaults_dict=named_defaults_dict) hyperparams = ut.argparse_dict( { #'batch_size': 128, 'batch_size': 256, #'learning_rate': .0005, 'learning_rate': .1, 'momentum': .9, #'weight_decay': 0.0005, 'weight_decay': 0.0001, }, alias_dict={ 'weight_decay': ['decay'], 'learning_rate': ['learn_rate'], } ) requests = ut.argparse_dict( { 'train': False, 'test': False, 'testall': False, 'publish': False, 'ensuredata': False, } ) requests['test'] = requests['test'] or requests['testall'] # breakup weights tag into extern_ds and checkpoint if weights_tag is not None and ':' in weights_tag: extern_ds_tag, checkpoint_tag = weights_tag.split(':') else: extern_ds_tag = None checkpoint_tag = weights_tag # resolve aliases ds_tag = DS_TAG_ALIAS2.get(ds_tag, ds_tag) extern_ds_tag = DS_TAG_ALIAS2.get(extern_ds_tag, extern_ds_tag) checkpoint_tag = CHECKPOINT_TAG_ALIAS.get(checkpoint_tag, checkpoint_tag) tags = { 'ds_tag': ds_tag, 'extern_ds_tag': extern_ds_tag, 'checkpoint_tag': checkpoint_tag, 'arch_tag': arch_tag, 'datatype': datatype, } ut.colorprint('[netrun] * ds_tag=%r' % (ds_tag,), 'lightgray') ut.colorprint('[netrun] * arch_tag=%r' % (arch_tag,), 'lightgray') ut.colorprint('[netrun] * extern_ds_tag=%r' % (extern_ds_tag,), 'lightgray') ut.colorprint('[netrun] * checkpoint_tag=%r' % (checkpoint_tag,), 'lightgray') return requests, hyperparams, tags