def plot_keypoint_scales(hs, fnum=1): print('[dev] plot_keypoint_scales()') cx2_kpts = hs.feats.cx2_kpts if len(cx2_kpts) == 0: hs.refresh_features() cx2_kpts = hs.feats.cx2_kpts cx2_nFeats = map(len, cx2_kpts) kpts = np.vstack(cx2_kpts) print('[dev] --- LaTeX --- ') _printopts = np.get_printoptions() np.set_printoptions(precision=3) print(util_latex.latex_scalar(r'\# keypoints, ', len(kpts))) print(util_latex.latex_mystats(r'\# keypoints per image', cx2_nFeats)) scales = ktool.get_scales(kpts) scales = np.array(sorted(scales)) print(util_latex.latex_mystats(r'keypoint scale', scales)) np.set_printoptions(**_printopts) print('[dev] ---/LaTeX --- ') # df2.figure(fnum=fnum, docla=True, title='sorted scales') df2.plot(scales) df2.adjust_subplots_safe() #ax = df2.gca() #ax.set_yscale('log') #ax.set_xscale('log') # fnum += 1 df2.figure(fnum=fnum, docla=True, title='hist scales') df2.show_histogram(scales, bins=20) df2.adjust_subplots_safe() #ax = df2.gca() #ax.set_yscale('log') #ax.set_xscale('log') return fnum
def get_keypoint_stats(ibs): """ kp info """ # from ut import util_latex #from hsdev import dev_consistency #dev_consistency.check_keypoint_consistency(ibs) # Keypoint stats #ibs.refresh_features() import vtool as vt from ibeis.control.IBEISControl import IBEISController assert(isinstance(ibs, IBEISController)) valid_aids = np.array(ibs.get_valid_aids()) cx2_kpts = ibs.get_annot_kpts(valid_aids) #cx2_kpts = ibs.feats.cx2_kpts # Check cx2_kpts cx2_nFeats = list(map(len, cx2_kpts)) kpts = np.vstack(cx2_kpts) print('[dbinfo] --- LaTeX --- ') #_printopts = np.get_printoptions() #np.set_printoptions(precision=3) scales = vt.get_scales(kpts) scales = np.array(sorted(scales)) tex_scale_stats = util_latex.latex_get_stats(r'kpt scale', scales) tex_nKpts = util_latex.latex_scalar(r'\# kpts', len(kpts)) tex_kpts_stats = util_latex.latex_get_stats(r'\# kpts/chip', cx2_nFeats) print(tex_nKpts) print(tex_kpts_stats) print(tex_scale_stats) #np.set_printoptions(**_printopts) print('[dbinfo] ---/LaTeX --- ') return (tex_nKpts, tex_kpts_stats, tex_scale_stats)
def dbstats(ibs): # Chip / Name / Image stats dbinfo_locals = get_dbinfo(ibs) db_name = ibs.get_dbname() #num_images = dbinfo_locals['num_images'] num_chips = dbinfo_locals['num_chips'] num_names = len(dbinfo_locals['valid_nxs']) num_singlenames = len(dbinfo_locals['singleton_nxs']) num_multinames = len(dbinfo_locals['multiton_nxs']) num_multichips = len(dbinfo_locals['multiton_cxs']) multiton_nx2_nchips = dbinfo_locals['multiton_nx2_nchips'] #tex_nImage = latex_formater.latex_scalar(r'\# images', num_images) tex_nChip = util_latex.latex_scalar(r'\# chips', num_chips) tex_nName = util_latex.latex_scalar(r'\# names', num_names) tex_nSingleName = util_latex.latex_scalar(r'\# singlenames', num_singlenames) tex_nMultiName = util_latex.latex_scalar(r'\# multinames', num_multinames) tex_nMultiChip = util_latex.latex_scalar(r'\# multichips', num_multichips) tex_multi_stats = util_latex.latex_mystats(r'\# multistats', multiton_nx2_nchips) tex_kpts_scale_thresh = util_latex.latex_multicolumn('Scale Threshold (%d %d)' % (ibs.cfg.feat_cfg.scale_min, ibs.cfg.feat_cfg.scale_max)) + r'\\' + '\n' (tex_nKpts, tex_kpts_stats, tex_scale_stats) = get_keypoint_stats(ibs) tex_title = util_latex.latex_multicolumn(db_name + ' database statistics') + r'\\' + '\n' tabular_body_list = [ tex_title, tex_nChip, tex_nName, tex_nSingleName, tex_nMultiName, tex_nMultiChip, tex_multi_stats, '', tex_kpts_scale_thresh, tex_nKpts, tex_kpts_stats, tex_scale_stats, ] tabular = util_latex.tabular_join(tabular_body_list) print('[dev stats]') print(tabular)
def cache_memory_stats(ibs, cid_list, fnum=None): print('[dev stats] cache_memory_stats()') #kpts_list = ibs.get_annot_kpts(cid_list) #desc_list = ibs.get_annot_vecs(cid_list) #nFeats_list = map(len, kpts_list) gx_list = np.unique(ibs.cx2_gx(cid_list)) bytes_map = { 'chip dbytes': [ut.file_bytes(fpath) for fpath in ibs.get_rchip_path(cid_list)], 'img dbytes': [ut.file_bytes(gpath) for gpath in ibs.gx2_gname(gx_list, full=True)], #'flann dbytes': ut.file_bytes(flann_fpath), } byte_units = { 'GB': 2 ** 30, 'MB': 2 ** 20, 'KB': 2 ** 10, } tabular_body_list = [ ] convert_to = 'KB' for key, val in six.iteritems(bytes_map): key2 = key.replace('bytes', convert_to) if isinstance(val, list): val2 = [bytes_ / byte_units[convert_to] for bytes_ in val] tex_str = util_latex.latex_get_stats(key2, val2) else: val2 = val / byte_units[convert_to] tex_str = util_latex.latex_scalar(key2, val2) tabular_body_list.append(tex_str) tabular = util_latex.tabular_join(tabular_body_list) print(tabular) util_latex.render(tabular) if fnum is None: fnum = 0 return fnum + 1