def extract_patches(ibs, aid_list, fxs_list=None, patch_size=None, colorspace=None): """ Example: >>> # DISABLE_DOCTEST >>> from ibeis_cnn.ingest_ibeis import * # NOQA >>> ut.show_if_requested() """ depc = ibs.depc kpts_list = depc.d.get_feat_kpts(aid_list) if fxs_list is None: fxs_list = [slice(None)] * len(kpts_list) kpts_list_ = ut.ziptake(kpts_list, fxs_list) chip_list = depc.d.get_chips_img(aid_list) # convert to approprate colorspace if colorspace is not None: chip_list = vt.convert_image_list_colorspace(chip_list, colorspace) # ut.print_object_size(chip_list, 'chip_list') patch_size = 64 patches_list = [ vt.get_warped_patches(chip, kpts, patch_size=patch_size)[0] for chip, kpts in ut.ProgIter(zip(chip_list, kpts_list_), nTotal=len(aid_list), lbl='warping patches') ] return patches_list
def get_patches(invassign, wx): ax_list = invassign.wx2_axs[wx] fx_list = invassign.wx2_fxs[wx] config = invassign.fstack.config ibs = invassign.fstack.ibs unique_axs, groupxs = vt.group_indices(ax_list) fxs_groups = vt.apply_grouping(fx_list, groupxs) unique_aids = ut.take(invassign.fstack.ax2_aid, unique_axs) all_kpts_list = ibs.depc.d.get_feat_kpts(unique_aids, config=config) sub_kpts_list = vt.ziptake(all_kpts_list, fxs_groups, axis=0) chip_list = ibs.depc_annot.d.get_chips_img(unique_aids) # convert to approprate colorspace #if colorspace is not None: # chip_list = vt.convert_image_list_colorspace(chip_list, colorspace) # ut.print_object_size(chip_list, 'chip_list') patch_size = 64 grouped_patches_list = [ vt.get_warped_patches(chip, kpts, patch_size=patch_size)[0] for chip, kpts in ut.ProgIter(zip(chip_list, sub_kpts_list), nTotal=len(unique_aids), lbl='warping patches') ] # Make it correspond with original fx_list and ax_list word_patches = vt.invert_apply_grouping(grouped_patches_list, groupxs) return word_patches
def get_patches(inva, wx, ibs, verbose=True): """ Loads the patches assigned to a particular word in this stack >>> inva.wx_to_aids = inva.compute_inverted_list() >>> verbose=True """ config = inva.config aid_list = inva.wx_to_aids[wx] X_list = [inva.get_annot(aid) for aid in aid_list] fxs_groups = [X.fxs(wx) for X in X_list] all_kpts_list = ibs.depc.d.get_feat_kpts(aid_list, config=config) sub_kpts_list = vt.ziptake(all_kpts_list, fxs_groups, axis=0) total_patches = sum(ut.lmap(len, fxs_groups)) chip_list = ibs.depc_annot.d.get_chips_img(aid_list, config=config) # convert to approprate colorspace # if colorspace is not None: # chip_list = vt.convert_image_list_colorspace(chip_list, colorspace) # ut.print_object_size(chip_list, 'chip_list') patch_size = 64 shape = (total_patches, patch_size, patch_size, 3) _prog = ut.ProgPartial(enabled=verbose, lbl='warping patches', bs=True) _patchiter = ut.iflatten( [ vt.get_warped_patches(chip, kpts, patch_size=patch_size)[0] # vt.get_warped_patches(chip, kpts, patch_size=patch_size, use_cpp=True)[0] for chip, kpts in _prog( zip(chip_list, sub_kpts_list), length=len(aid_list) ) ] ) word_patches = vt.fromiter_nd(_patchiter, shape, dtype=np.uint8) return word_patches
def extract_patches(annots, aid, fxs): """ custom_func(lazydict, key, subkeys) for multigroup_lookup """ annot = annots[aid] kpts = annot['kpts'] rchip = annot['rchip'] kpts_m = kpts.take(fxs, axis=0) warped_patches, warped_subkpts = vt.get_warped_patches( rchip, kpts_m, patch_size=patch_size) return warped_patches
def extract_patches(annots, aid, fxs): """ custom_func(lazydict, key, subkeys) for multigroup_lookup """ annot = annots[aid] kpts = annot['kpts'] rchip = annot['rchip'] kpts_m = kpts.take(fxs, axis=0) warped_patches, warped_subkpts = vt.get_warped_patches(rchip, kpts_m, patch_size=patch_size) return warped_patches