API

Wildbook IA Packages

wbia.__main__

wbia._devcmds_wbia

wbia._devscript

wbia._wbia_object

class wbia._wbia_object.ObjectList1D(rowids, ibs, config=None, caching=False, asarray=False)[source]

Bases: utool.util_dev.NiceRepr, utool.util_class.HashComparable2

An object that efficiently operates on a list of wbia objects using vectorized code. Single instances can be returned as ObjectScalar0D’s

chunks(chunksize)[source]
compress(flags)[source]
disconnect()[source]

Disconnects object from the state of the database. All information has been assumed to be preloaded.

group(labels)[source]

group as list

group_indicies(labels)[source]
group_items(labels)[source]

group as dict

group_uuid()[source]
loc(rowids)[source]

Lookup subset by rowids

lookup_idxs(rowids)[source]

Lookup subset indicies by rowids

preload(*attrs)[source]
scalars()[source]
set_caching(flag)[source]
take(idxs)[source]

Creates a subset of the list using the specified indices.

take_column(keys)[source]
view(rowids=None)[source]

Like take, but returns a view proxy that maps to the original parent

class wbia._wbia_object.ObjectScalar0D(obj1d)[source]

Bases: utool.util_dev.NiceRepr, utool.util_class.HashComparable2

This actually stores a ObjectList1D of length 1 and simply calls those functions where available

class wbia._wbia_object.ObjectView1D(rowids, obj1d, cache=None)[source]

Bases: utool.util_dev.NiceRepr

Allows for proxy caching.

Example

>>> # ENABLE_DOCTEST
>>> from wbia._wbia_object import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> aids = ibs.get_valid_aids()
>>> a = self = annots = ibs.annots(aids)
>>> rowids = [1, 1, 3, 2, 1, 2]
>>> self = v = a.view(rowids)
>>> assert np.all(v.vecs[0] == v.vecs[1])
>>> assert v.vecs[0] is v.vecs[1]
>>> assert v.vecs[0] is not v.vecs[2]
view(rowids)[source]

returns a view of a view that uses the same per-item cache

Example

>>> # ENABLE_DOCTEST
>>> from wbia._wbia_object import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> aids = ibs.get_valid_aids()
>>> annots = ibs.annots(aids)
>>> self = annots.view(annots._rowids)
>>> v1 = self.view([1, 1, 2, 3, 1, 2])
>>> v2 = self.view([3, 4, 5])
>>> v3 = self.view([1, 4])
>>> v4 = self.view(3)
>>> lazy4 = v4._make_lazy_dict()
>>> assert v1.vecs[0] is v3.vecs[0]
>>> assert v2._cache is self._cache
>>> assert v2._cache is v1._cache

wbia.annotmatch_funcs

wbia.annotmatch_funcs.add_annotmatch_undirected(ibs, aids1, aids2, **kwargs)[source]
wbia.annotmatch_funcs.get_annot_has_reviewed_matching_aids(ibs, aid_list, eager=True, nInput=None)[source]
wbia.annotmatch_funcs.get_annot_num_reviewed_matching_aids(ibs, aid1_list, eager=True, nInput=None)[source]
Parameters
  • aid_list (int) – list of annotation ids

  • eager (bool) –

  • nInput (None) –

Returns

num_annot_reviewed_list

Return type

list

CommandLine:

python -m wbia.annotmatch_funcs –test-get_annot_num_reviewed_matching_aids

Example

>>> # DISABLE_DOCTEST
>>> from wbia.annotmatch_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb2')
>>> aid1_list = ibs.get_valid_aids()
>>> eager = True
>>> nInput = None
>>> num_annot_reviewed_list = get_annot_num_reviewed_matching_aids(ibs, aid_list, eager, nInput)
>>> result = str(num_annot_reviewed_list)
>>> print(result)
wbia.annotmatch_funcs.get_annot_pair_is_reviewed(ibs, aid1_list, aid2_list)[source]
Parameters
  • aid1_list (list) –

  • aid2_list (list) –

Returns

annotmatch_reviewed_list

Return type

list

CommandLine:

python -m wbia.annotmatch_funcs –test-get_annot_pair_is_reviewed

Example

>>> # DISABLE_DOCTEST
>>> from wbia.annotmatch_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb2')
>>> aid_list = ibs.get_valid_aids()
>>> pairs = list(ut.product(aid_list, aid_list))
>>> aid1_list = ut.get_list_column(pairs, 0)
>>> aid2_list = ut.get_list_column(pairs, 1)
>>> annotmatch_reviewed_list = get_annot_pair_is_reviewed(ibs, aid1_list, aid2_list)
>>> reviewed_pairs = ut.compress(pairs, annotmatch_reviewed_list)
>>> result = len(reviewed_pairs)
>>> print(result)
104
wbia.annotmatch_funcs.get_annot_pair_timedelta(ibs, aid_list1, aid_list2)[source]
Parameters
  • ibs (IBEISController) – wbia controller object

  • aid_list1 (int) – list of annotation ids

  • aid_list2 (int) – list of annotation ids

Returns

timedelta_list

Return type

list

CommandLine:

python -m wbia.annotmatch_funcs –test-get_annot_pair_timedelta

Example

>>> # ENABLE_DOCTEST
>>> from wbia.annotmatch_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('PZ_MTEST')
>>> aid_list = ibs.get_valid_aids(hasgt=True)
>>> unixtimes = ibs.get_annot_image_unixtimes_asfloat(aid_list)
>>> aid_list = ut.compress(aid_list, ~np.isnan(unixtimes))
>>> gt_aids_list = ibs.get_annot_groundtruth(aid_list, daid_list=aid_list)
>>> flags = np.array(list(map(len, gt_aids_list))) > 0
>>> aid_list1 = ut.compress(aid_list, flags)[0:5]
>>> aid_list2 = ut.take_column(gt_aids_list, 0)[0:5]
>>> timedelta_list = ibs.get_annot_pair_timedelta(aid_list1, aid_list2)
>>> result = ut.repr2(timedelta_list, precision=1)
>>> print(result)
np.array([7.6e+07, 7.6e+07, 2.4e+06, 2.0e+08, 9.7e+07])
wbia.annotmatch_funcs.get_annot_reviewed_matching_aids(ibs, aid_list, eager=True, nInput=None)[source]

Returns a list of the aids that were reviewed as candidate matches to the input aid

wbia.annotmatch_funcs.get_annotedge_timedelta(ibs, edges)[source]
wbia.annotmatch_funcs.get_annotedge_viewdist(ibs, edges)[source]
wbia.annotmatch_funcs.get_annotmatch_aids(ibs, annotmatch_rowid_list)[source]
wbia.annotmatch_funcs.get_annotmatch_rowid_from_edges(ibs, aid_pairs)[source]

Edegs are undirected

wbia.annotmatch_funcs.get_annotmatch_rowid_from_undirected_superkey(ibs, aids1, aids2)[source]
wbia.annotmatch_funcs.get_annotmatch_rowids_between(ibs, aids1, aids2, method=None)[source]

Example

>>> # ENABLE_DOCTEST
>>> from wbia.annotmatch_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('PZ_MTEST')
>>> aids1 = aids2 = [1, 2, 3, 4, 5, 6]
>>> rowids_between = ibs.get_annotmatch_rowids_between
>>> ams1 = sorted(rowids_between(aids1, aids2, method=1))
>>> ams2 = sorted(rowids_between(aids1, aids2, method=2))
>>> assert len(ub.find_duplicates(ams1)) == 0
>>> assert len(ub.find_duplicates(ams2)) == 0
>>> assert sorted(ams2) == sorted(ams1)
wbia.annotmatch_funcs.get_annotmatch_rowids_between_groups(ibs, aids1_list, aids2_list)[source]
wbia.annotmatch_funcs.get_annotmatch_rowids_from_aid(ibs, aid_list, eager=True, nInput=None, force_method=None)[source]

Undirected version Returns a list of the aids that were reviewed as candidate matches to the input aid aid_list = ibs.get_valid_aids()

CommandLine:

python -m wbia.annotmatch_funcs –exec-get_annotmatch_rowids_from_aid python -m wbia.annotmatch_funcs –exec-get_annotmatch_rowids_from_aid:1 –show

Example

>>> # DISABLE_DOCTEST
>>> from wbia.annotmatch_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> ut.exec_funckw(ibs.get_annotmatch_rowids_from_aid, globals())
>>> aid_list = ibs.get_valid_aids()[0:4]
>>> annotmatch_rowid_list = ibs.get_annotmatch_rowids_from_aid(aid_list,
>>>                                                        eager, nInput)
>>> result = ('annotmatch_rowid_list = %s' % (str(annotmatch_rowid_list),))
>>> print(result)
wbia.annotmatch_funcs.get_annotmatch_rowids_from_aid1(ibs, aid1_list, eager=True, nInput=None)[source]

TODO autogenerate

Returns a list of the aids that were reviewed as candidate matches to the input aid

aid_list = ibs.get_valid_aids() :param ibs: wbia controller object :type ibs: IBEISController :param aid1_list: :type aid1_list: list :param eager: (default = True) :type eager: bool :param nInput: (default = None) :type nInput: None

Returns

annotmatch_rowid_list

Return type

list

wbia.annotmatch_funcs.get_annotmatch_rowids_from_aid2(ibs, aid2_list, eager=True, nInput=None, force_method=None)[source]

# This one is slow because aid2 is the second part of the index Returns a list of the aids that were reviewed as candidate matches to the input aid

wbia.annotmatch_funcs.get_annotmatch_rowids_in_cliques(ibs, aids_list)[source]
wbia.annotmatch_funcs.get_match_text(ibs, aid1, aid2)[source]
wbia.annotmatch_funcs.get_match_truth(ibs, aid1, aid2)[source]
wbia.annotmatch_funcs.get_match_truths(ibs, aids1, aids2)[source]

Uses NIDS to verify truth. TODO: rectify with annotmatch table

Parameters
  • ibs (IBEISController) – wbia controller object

  • aids1 (list) –

  • aids2 (list) –

Returns

truth_codes - see

wbia.constants.EVIDENCE_DECISION.INT_TO_CODE for code definitions

Return type

list[int]

CommandLine:

python -m wbia.other.ibsfuncs –test-get_match_truths

Example

>>> # ENABLE_DOCTEST
>>> from wbia.annotmatch_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> aids1 = ibs.get_valid_aids()
>>> aids2 = ut.list_roll(ibs.get_valid_aids(), -1)
>>> truth_codes = get_match_truths(ibs, aids1, aids2)
>>> print('truth_codes = %s' % ut.repr2(truth_codes))
>>> target = np.array([3, 1, 3, 3, 1, 0, 0, 3, 3, 3, 3, 0, 3])
>>> assert np.all(truth_codes == target)
wbia.annotmatch_funcs.set_annot_pair_as_negative_match(ibs, aid1, aid2, dryrun=False, on_nontrivial_split=None, logger_=None)[source]

TODO: ELEVATE THIS FUNCTION

Parameters
  • ibs (IBEISController) – wbia controller object

  • aid1 (int) – annotation id

  • aid2 (int) – annotation id

  • dryrun (bool) –

CommandLine:

python -m wbia.annotmatch_funcs –test-set_annot_pair_as_negative_match

Example

>>> # ENABLE_DOCTEST
>>> from wbia.annotmatch_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> aid1, aid2 = ibs.get_valid_aids()[0:2]
>>> dryrun = True
>>> result = set_annot_pair_as_negative_match(ibs, aid1, aid2, dryrun)
>>> print(result)
>>> ibs.delete_names(ibs.get_valid_nids()[-1])  # clean up
wbia.annotmatch_funcs.set_annot_pair_as_positive_match(ibs, aid1, aid2, dryrun=False, on_nontrivial_merge=None, logger_=None)[source]

Safe way to perform links. Errors on invalid operations.

TODO: ELEVATE THIS FUNCTION Change into make_task_set_annot_pair_as_positive_match and it returns what needs to be done.

Need to test several cases:

uknown, unknown knownA, knownA knownB, knownA unknown, knownA knownA, unknown

Parameters
  • ibs (IBEISController) – wbia controller object

  • aid1 (int) – query annotation id

  • aid2 (int) – matching annotation id

CommandLine:

python -m wbia.annotmatch_funcs –test-set_annot_pair_as_positive_match

Example

>>> # ENABLE_DOCTEST
>>> from wbia.annotmatch_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> aid1, aid2 = ibs.get_valid_aids()[0:2]
>>> dryrun = True
>>> status = set_annot_pair_as_positive_match(ibs, aid1, aid2, dryrun)
>>> print(status)
wbia.annotmatch_funcs.set_annot_pair_as_reviewed(ibs, aid1, aid2)[source]

denote that this match was reviewed and keep whatever status it is given

wbia.annots

class wbia.annots.AnnotGroups(annots_list, ibs)[source]

Bases: utool.util_dev.NiceRepr

Effciently handle operations on multiple groups of annotations

property age_months_est_max
property age_months_est_min
property aid
property aids
property all_tags
property annotmatch_tags
property bbox_area
property bboxes
property case_tags
property contact_aids
property detect_confidence
property encounter_text
property exemplar_flags
property gids
property groundfalse
property groundtruth
property has_groundtruth
property has_reviewed_matching_aids
property hashid_semantic_uuid
property hashid_uuid
property hashid_visual_uuid
property image_contributor_tag
property image_datetime_str
property image_gps
property image_gps2
property image_set_texts
property image_unixtimes_asfloat
property image_uuids
property images
property imgset_uuids
property imgsetids
property match_tags

returns pairwise tags within the annotation group

property multiple
property name_uuids
property names
property nids
property notes
property num_contact_aids
property num_groundtruth
property num_reviewed_matching_aids
property occurrence_text
property otherimage_aids
property parent_aid
property primary_imageset
property qualities
property quality_texts
property reviewed
property reviewed_matching_aids
rrr(verbose=True, reload_module=True)

special class reloading function This function is often injected as rrr of classes

property semantic_uuids
property sex
property sex_texts
property species
property species_rowids
property species_texts
property species_uuids
property static_encounter
property thetas
property uuids
property verts
property viewpoint_code
property viewpoint_int
property visual_uuids
property yaw_texts
property yaws
property yaws_asfloat
class wbia.annots.AnnotMatches(rowids, ibs, config=None, caching=False, asarray=False)[source]

Bases: wbia._wbia_object.ObjectList1D

Represents a group of annotations. Efficiently accesses properties from a database using lazy evaluation.

CommandLine:

python -m wbia.annots Annots

Example

>>> # ENABLE_DOCTEST
>>> from wbia.annots import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> aids = ibs.get_valid_aids()
>>> annots = Annots(aids, ibs)
>>> ams = annots.get_am_rowids()
>>> matches = self = ibs.matches()
>>> ed1 = matches.evidence_decision
>>> md2 = matches.meta_decision
>>> table = ibs.db.get_table_as_pandas('annotmatch')
>>> assert len(table) == len(matches)
property aid1
property aid2
property case_tags
property confidence
property confidence_code
property count
property edges
property evidence_decision
property evidence_decision_code
property meta_decision
property meta_decision_code
property posixtime_modified
property reviewer
rrr()

Dynamic module reloading

property tag_text
class wbia.annots.Annots(rowids, ibs, config=None, caching=False, asarray=False)[source]

Bases: wbia._wbia_object.ObjectList1D

Represents a group of annotations. Efficiently accesses properties from a database using lazy evaluation.

CommandLine:

python -m wbia.annots Annots

Example

>>> # ENABLE_DOCTEST
>>> from wbia.annots import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> aids = ibs.get_valid_aids()
>>> a = self = annots = Annots(aids, ibs)
>>> a.preload('vecs', 'kpts', 'nids')
>>> print(Annots.mro())
>>> print(ut.depth_profile(a.vecs))
>>> print(a)

Example

>>> # ENABLE_DOCTEST
>>> from wbia.annots import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> aids = ibs.get_valid_aids()
>>> a = self = annots = Annots(aids, ibs)
>>> a.preload('vecs', 'kpts', 'nids')
>>> a.disconnect()
>>> assert 'vecs' in a._internal_attrs.keys()
>>> assert a._ibs is None
>>> ut.assert_raises(KeyError, a._get_num_feats)
>>> a._ibs = ibs
>>> assert len(a._get_num_feats()) > 0
property age_months_est_max
property age_months_est_min
property aid
property aids
property all_tags
property annotmatch_tags
append_tags(tags)[source]
property bbox_area
property bboxes
property case_tags
property chip_dlensqrd
property chip_fpath
property chip_size
property chip_sizes
property chip_thumbpath
property chip_thumbtup
property chips
property contact_aids
property detect_confidence
property encounter_text
property exemplar_flags
property feat_rowids
property featweight_rowids
property fgweights
property fgweights_subset
get_aidpairs()[source]
get_am_aidpairs()[source]
get_am_rowids(internal=True)[source]

if internal is True returns am rowids only between annotations in this Annots object, otherwise returns any am rowid that contains any aid in this Annots object.

get_am_rowids_and_pairs()[source]
get_name_image_closure()[source]
get_speeds()[source]
get_stats(**kwargs)[source]
property gids
property gps
property groundfalse
property groundtruth
group2(by)[source]

self = annots by = annots.static_encounter encounters = annots.group2(annots.static_encounter)

property has_groundtruth
property has_reviewed_matching_aids
property hashid_semantic_uuid
property hashid_uuid
property hashid_visual_uuid
property hog_hog
property hog_img
property image_contributor_tag
property image_datetime_str
property image_gps
property image_gps2
property image_set_texts
property image_unixtimes_asfloat
property image_uuids
property imgset_uuids
property imgsetids
property kpts
property kpts_distinctiveness
matches(internal=True)[source]
property multiple
property name
property name_uuids
property names
property nid
property nids
property notes
property num_contact_aids
property num_feats
property num_groundtruth
property num_reviewed_matching_aids
property occurrence_text
property otherimage_aids
property parent_aid
property primary_imageset
print_stats(**kwargs)[source]
property probchip_img
property qual
property qualities
property quality_texts
property rchip
property rchip_fpath
remove_tags(tags)[source]
property reviewed
property reviewed_matching_aids
rrr()

Dynamic module reloading

property semantic_uuids
property sex
property sex_texts
show(*args, **kwargs)[source]
property species
property species_rowids
property species_texts
property species_uuids
property static_encounter
property thetas
property time
property unary_tags
property uuids
property vecs
property vecs_cache
property vecs_subset
property verts
property viewpoint_code
property viewpoint_int
property visual_uuids
property yaw
property yaw_texts
property yaws
property yaws_asfloat
wbia.annots.annots(ibs, aids=None, uuids=None, **kwargs)[source]

Makes an Annots object

wbia.annots.matches(ibs, ams=None, edges=None, uuid_edges=None, **kwargs)[source]

Makes an Annots object

wbia.constants

It is better to use constant variables instead of hoping you spell the same string correctly every time you use it. (Also it makes it much easier if a string name changes)

class wbia.constants.CONFIDENCE[source]

Bases: object

ABSOLUTELY_SURE = 4
class CODE

Bases: object

ABSOLUTELY_SURE = 'absolutely_sure'
GUESSING = 'guessing'
NOT_SURE = 'not_sure'
PRETTY_SURE = 'pretty_sure'
UNKNOWN = 'unspecified'
CODE_TO_INT = {'absolutely_sure': 4, 'guessing': 1, 'not_sure': 2, 'pretty_sure': 3, 'unspecified': None}
CODE_TO_NICE = {'absolutely_sure': 'Doubtless', 'guessing': 'Guessing', 'not_sure': 'Unsure', 'pretty_sure': 'Sure', 'unspecified': 'Unspecified'}
GUESSING = 1
INT_TO_CODE = OrderedDict([(4, 'absolutely_sure'), (3, 'pretty_sure'), (2, 'not_sure'), (1, 'guessing'), (None, 'unspecified')])
INT_TO_NICE = OrderedDict([(4, 'Doubtless'), (3, 'Sure'), (2, 'Unsure'), (1, 'Guessing'), (None, 'Unspecified')])
class NICE

Bases: object

ABSOLUTELY_SURE = 'Doubtless'
GUESSING = 'Guessing'
NOT_SURE = 'Unsure'
PRETTY_SURE = 'Sure'
UNKNOWN = 'Unspecified'
NICE_TO_CODE = {'Doubtless': 'absolutely_sure', 'Guessing': 'guessing', 'Sure': 'pretty_sure', 'Unspecified': 'unspecified', 'Unsure': 'not_sure'}
NICE_TO_INT = {'Doubtless': 4, 'Guessing': 1, 'Sure': 3, 'Unspecified': None, 'Unsure': 2}
NOT_SURE = 2
PRETTY_SURE = 3
UNKNOWN = None
class wbia.constants.EVIDENCE_DECISION[source]

Bases: object

TODO: change to EVIDENCE_DECISION / VISUAL_DECISION Enumerated types of review codes and texts

Notes

Unreviewed: Not comparared yet. nomatch: Visually comparable and the different match: Visually comparable and the same notcomp: Not comparable means it is actually impossible to determine. unknown: means that it was reviewed, but we just can’t figure it out.

class CODE

Bases: object

INCOMPARABLE = 'notcomp'
NEGATIVE = 'nomatch'
POSITIVE = 'match'
UNKNOWN = 'unknown'
UNREVIEWED = 'unreviewed'
CODE_TO_INT = {'match': 1, 'nomatch': 0, 'notcomp': 2, 'unknown': 3, 'unreviewed': None}
CODE_TO_NICE = {'match': 'Positive', 'nomatch': 'Negative', 'notcomp': 'Incomparable', 'unknown': 'Unknown', 'unreviewed': 'Unreviewed'}
INCOMPARABLE = 2
INT_TO_CODE = OrderedDict([(1, 'match'), (0, 'nomatch'), (2, 'notcomp'), (3, 'unknown'), (None, 'unreviewed')])
INT_TO_NICE = OrderedDict([(1, 'Positive'), (0, 'Negative'), (2, 'Incomparable'), (3, 'Unknown'), (None, 'Unreviewed')])
MATCH_CODE = {'match': 1, 'nomatch': 0, 'notcomp': 2, 'unknown': 3, 'unreviewed': None}
NEGATIVE = 0
class NICE

Bases: object

INCOMPARABLE = 'Incomparable'
NEGATIVE = 'Negative'
POSITIVE = 'Positive'
UNKNOWN = 'Unknown'
UNREVIEWED = 'Unreviewed'
NICE_TO_CODE = {'Incomparable': 'notcomp', 'Negative': 'nomatch', 'Positive': 'match', 'Unknown': 'unknown', 'Unreviewed': 'unreviewed'}
NICE_TO_INT = {'Incomparable': 2, 'Negative': 0, 'Positive': 1, 'Unknown': 3, 'Unreviewed': None}
POSITIVE = 1
UNKNOWN = 3
UNREVIEWED = None
class wbia.constants.META_DECISION[source]

Bases: object

Enumerated types of review codes and texts

Notes

unreviewed: we dont have a meta decision same: we know this is the same animal through non-visual means diff: we know this is the different animal through non-visual means

Example

>>> # ENABLE_DOCTEST
>>> from wbia.constants import *  # NOQA
>>> assert hasattr(META_DECISION, 'CODE')
>>> assert hasattr(META_DECISION, 'NICE')
>>> code1 = META_DECISION.INT_TO_CODE[META_DECISION.NULL]
>>> code2 = META_DECISION.CODE.NULL
>>> assert code1 == code2
>>> nice1 = META_DECISION.INT_TO_NICE[META_DECISION.NULL]
>>> nice2 = META_DECISION.NICE.NULL
>>> assert nice1 == nice2
class CODE

Bases: object

DIFF = 'diff'
NULL = 'null'
SAME = 'same'
CODE_TO_INT = {'diff': 0, 'null': None, 'same': 1}
CODE_TO_NICE = {'diff': 'Different', 'null': 'NULL', 'same': 'Same'}
DIFF = 0
INT_TO_CODE = OrderedDict([(None, 'null'), (0, 'diff'), (1, 'same')])
INT_TO_NICE = OrderedDict([(None, 'NULL'), (0, 'Different'), (1, 'Same')])
class NICE

Bases: object

DIFF = 'Different'
NULL = 'NULL'
SAME = 'Same'
NICE_TO_CODE = {'Different': 'diff', 'NULL': 'null', 'Same': 'same'}
NICE_TO_INT = {'Different': 0, 'NULL': None, 'Same': 1}
NULL = None
SAME = 1
class wbia.constants.PATH_NAMES[source]

Bases: object

Path names for internal IBEIS database

backups = '_ibeis_backups'
bigcache = 'qres_bigcache_new'
cache = '_ibeis_cache'
chips = 'chips'
detectimg = 'detectimg'
distinctdir = 'distinctiveness_model'
figures = 'figures'
flann = 'flann'
images = 'images'
logs = '_ibeis_logs'
nets = 'nets'
qres = 'qres_new'
scorenormdir = 'scorenorm'
smartpatrol = 'smart_patrol'
sqldb = '_ibeis_database.sqlite3'
sqlstaging = '_ibeis_staging.sqlite3'
thumbs = 'thumbs'
trashdir = 'trashed_images'
trees = 'trees'
uploads = 'uploads'
class wbia.constants.QUAL[source]

Bases: object

class CODE

Bases: object

EXCELLENT = 'excellent'
GOOD = 'good'
JUNK = 'junk'
OK = 'ok'
POOR = 'poor'
UNKNOWN = 'unspecified'
CODE_TO_INT = {'excellent': 5, 'good': 4, 'junk': 1, 'ok': 3, 'poor': 2, 'unspecified': None}
CODE_TO_NICE = {'excellent': 'Excellent', 'good': 'Good', 'junk': 'Junk', 'ok': 'OK', 'poor': 'Poor', 'unspecified': 'Unspecified'}
EXCELLENT = 5
GOOD = 4
INT_TO_CODE = OrderedDict([(5, 'excellent'), (4, 'good'), (3, 'ok'), (2, 'poor'), (1, 'junk'), (None, 'unspecified')])
INT_TO_NICE = OrderedDict([(5, 'Excellent'), (4, 'Good'), (3, 'OK'), (2, 'Poor'), (1, 'Junk'), (None, 'Unspecified')])
JUNK = 1
class NICE

Bases: object

EXCELLENT = 'Excellent'
GOOD = 'Good'
JUNK = 'Junk'
OK = 'OK'
POOR = 'Poor'
UNKNOWN = 'Unspecified'
NICE_TO_CODE = {'Excellent': 'excellent', 'Good': 'good', 'Junk': 'junk', 'OK': 'ok', 'Poor': 'poor', 'Unspecified': 'unspecified'}
NICE_TO_INT = {'Excellent': 5, 'Good': 4, 'Junk': 1, 'OK': 3, 'Poor': 2, 'Unspecified': None}
OK = 3
POOR = 2
UNKNOWN = None
class wbia.constants.REL_PATHS[source]

Bases: object

all paths are relative to ibs.dbdir

backups = '_ibsdb/_ibeis_backups'
bigcache = '_ibsdb/_ibeis_cache/qres_bigcache_new'
cache = '_ibsdb/_ibeis_cache'
chips = '_ibsdb/_ibeis_cache/chips'
distinctdir = '_ibsdb/_ibeis_cache/distinctiveness_model'
figures = '_ibsdb/figures'
flann = '_ibsdb/_ibeis_cache/flann'
images = '_ibsdb/images'
logs = '_ibsdb/_ibeis_logs'
nets = '_ibsdb/nets'
qres = '_ibsdb/_ibeis_cache/qres_new'
thumbs = '_ibsdb/_ibeis_cache/thumbs'
trashdir = 'trashed_images'
trees = '_ibsdb/trees'
uploads = '_ibsdb/uploads'
class wbia.constants.TEST_SPECIES[source]

Bases: object

BEAR_POLAR = 'bear_polar'
GIR_MASAI = 'giraffe_masai'
ZEB_GREVY = 'zebra_grevys'
ZEB_PLAIN = 'zebra_plains'
class wbia.constants.VIEW[source]

Bases: object

categorical viewpoint using the faces of a Rhombicuboctahedron

References

https://en.wikipedia.org/wiki/Rhombicuboctahedron

B = 7
BL = 6
BR = 8
class CODE

Bases: object

B = 'back'
BL = 'backleft'
BR = 'backright'
D = 'down'
DB = 'downback'
DBL = 'downbackleft'
DBR = 'downbackright'
DF = 'downfront'
DFL = 'downfrontleft'
DFR = 'downfrontright'
DL = 'downleft'
DR = 'downright'
F = 'front'
FL = 'frontleft'
FR = 'frontright'
L = 'left'
R = 'right'
U = 'up'
UB = 'upback'
UBL = 'upbackleft'
UBR = 'upbackright'
UF = 'upfront'
UFL = 'upfrontleft'
UFR = 'upfrontright'
UL = 'upleft'
UNKNOWN = 'unknown'
UR = 'upright'
CODE_TO_INT = {'back': 7, 'backleft': 6, 'backright': 8, 'down': 18, 'downback': 20, 'downbackleft': 25, 'downbackright': 26, 'downfront': 19, 'downfrontleft': 23, 'downfrontright': 24, 'downleft': 21, 'downright': 22, 'front': 3, 'frontleft': 4, 'frontright': 2, 'left': 5, 'right': 1, 'unknown': None, 'up': 9, 'upback': 11, 'upbackleft': 16, 'upbackright': 17, 'upfront': 10, 'upfrontleft': 14, 'upfrontright': 15, 'upleft': 12, 'upright': 13}
CODE_TO_NICE = {'back': 'Back', 'backleft': 'Back-Left', 'backright': 'Back-Right', 'down': 'Down', 'downback': 'Down-Back', 'downbackleft': 'Down-Back-Left', 'downbackright': 'Down-Back-Right', 'downfront': 'Down-Front', 'downfrontleft': 'Down-Front-Left', 'downfrontright': 'Down-Front-Right', 'downleft': 'Down-Left', 'downright': 'Down-Right', 'front': 'Front', 'frontleft': 'Front-Left', 'frontright': 'Front-Right', 'left': 'Left', 'right': 'Right', 'unknown': 'Unknown', 'up': 'Up', 'upback': 'Up-Back', 'upbackleft': 'Up-Back-Left', 'upbackright': 'Up-Back-Right', 'upfront': 'Up-Front', 'upfrontleft': 'Up-Front-Left', 'upfrontright': 'Up-Front-Right', 'upleft': 'Up-Left', 'upright': 'Up-Right'}
D = 18
DB = 20
DBL = 25
DBR = 26
DF = 19
DFL = 23
DFR = 24
DIST = {(7, 7): 0, (6, 6): 0, (8, 8): 0, (18, 18): 0, (20, 20): 0, (25, 25): 0, (26, 26): 0, (19, 19): 0, (23, 23): 0, (24, 24): 0, (21, 21): 0, (22, 22): 0, (3, 3): 0, (4, 4): 0, (2, 2): 0, (5, 5): 0, (1, 1): 0, (9, 9): 0, (11, 11): 0, (16, 16): 0, (17, 17): 0, (10, 10): 0, (14, 14): 0, (15, 15): 0, (12, 12): 0, (13, 13): 0, (7, 6): 1, (7, 8): 1, (7, 20): 1, (7, 25): 1, (7, 26): 1, (7, 11): 1, (7, 16): 1, (7, 17): 1, (6, 25): 1, (6, 5): 1, (6, 16): 1, (8, 26): 1, (8, 1): 1, (8, 17): 1, (18, 20): 1, (18, 25): 1, (18, 26): 1, (18, 19): 1, (18, 23): 1, (18, 24): 1, (18, 21): 1, (18, 22): 1, (20, 25): 1, (20, 26): 1, (25, 21): 1, (25, 5): 1, (26, 22): 1, (26, 1): 1, (19, 23): 1, (19, 24): 1, (19, 3): 1, (23, 21): 1, (23, 3): 1, (23, 4): 1, (23, 5): 1, (24, 22): 1, (24, 3): 1, (24, 2): 1, (24, 1): 1, (21, 5): 1, (22, 1): 1, (3, 4): 1, (3, 2): 1, (3, 10): 1, (3, 14): 1, (3, 15): 1, (4, 5): 1, (4, 14): 1, (2, 1): 1, (2, 15): 1, (5, 16): 1, (5, 14): 1, (5, 12): 1, (1, 17): 1, (1, 15): 1, (1, 13): 1, (9, 11): 1, (9, 16): 1, (9, 17): 1, (9, 10): 1, (9, 14): 1, (9, 15): 1, (9, 12): 1, (9, 13): 1, (11, 16): 1, (11, 17): 1, (16, 12): 1, (17, 13): 1, (10, 14): 1, (10, 15): 1, (14, 12): 1, (15, 13): 1, (7, 18): 2, (7, 21): 2, (7, 22): 2, (7, 5): 2, (7, 1): 2, (7, 9): 2, (7, 12): 2, (7, 13): 2, (6, 8): 2, (6, 18): 2, (6, 20): 2, (6, 26): 2, (6, 23): 2, (6, 21): 2, (6, 4): 2, (6, 9): 2, (6, 11): 2, (6, 17): 2, (6, 14): 2, (6, 12): 2, (8, 18): 2, (8, 20): 2, (8, 25): 2, (8, 24): 2, (8, 22): 2, (8, 2): 2, (8, 9): 2, (8, 11): 2, (8, 16): 2, (8, 15): 2, (8, 13): 2, (18, 3): 2, (18, 4): 2, (18, 2): 2, (18, 5): 2, (18, 1): 2, (20, 19): 2, (20, 23): 2, (20, 24): 2, (20, 21): 2, (20, 22): 2, (20, 5): 2, (20, 1): 2, (20, 11): 2, (20, 16): 2, (20, 17): 2, (25, 26): 2, (25, 19): 2, (25, 23): 2, (25, 24): 2, (25, 22): 2, (25, 4): 2, (25, 11): 2, (25, 16): 2, (25, 17): 2, (25, 14): 2, (25, 12): 2, (26, 19): 2, (26, 23): 2, (26, 24): 2, (26, 21): 2, (26, 2): 2, (26, 11): 2, (26, 16): 2, (26, 17): 2, (26, 15): 2, (26, 13): 2, (19, 21): 2, (19, 22): 2, (19, 4): 2, (19, 2): 2, (19, 5): 2, (19, 1): 2, (19, 10): 2, (19, 14): 2, (19, 15): 2, (23, 24): 2, (23, 22): 2, (23, 2): 2, (23, 16): 2, (23, 10): 2, (23, 14): 2, (23, 15): 2, (23, 12): 2, (24, 21): 2, (24, 4): 2, (24, 17): 2, (24, 10): 2, (24, 14): 2, (24, 15): 2, (24, 13): 2, (21, 22): 2, (21, 3): 2, (21, 4): 2, (21, 16): 2, (21, 14): 2, (21, 12): 2, (22, 3): 2, (22, 2): 2, (22, 17): 2, (22, 15): 2, (22, 13): 2, (3, 5): 2, (3, 1): 2, (3, 9): 2, (3, 12): 2, (3, 13): 2, (4, 2): 2, (4, 9): 2, (4, 16): 2, (4, 10): 2, (4, 15): 2, (4, 12): 2, (2, 9): 2, (2, 17): 2, (2, 10): 2, (2, 14): 2, (2, 13): 2, (5, 9): 2, (5, 11): 2, (5, 10): 2, (1, 9): 2, (1, 11): 2, (1, 10): 2, (11, 10): 2, (11, 14): 2, (11, 15): 2, (11, 12): 2, (11, 13): 2, (16, 17): 2, (16, 10): 2, (16, 14): 2, (16, 15): 2, (16, 13): 2, (17, 10): 2, (17, 14): 2, (17, 15): 2, (17, 12): 2, (10, 12): 2, (10, 13): 2, (14, 15): 2, (14, 13): 2, (15, 12): 2, (12, 13): 2, (7, 19): 3, (7, 23): 3, (7, 24): 3, (7, 4): 3, (7, 2): 3, (7, 10): 3, (7, 14): 3, (7, 15): 3, (6, 19): 3, (6, 24): 3, (6, 22): 3, (6, 3): 3, (6, 1): 3, (6, 10): 3, (6, 15): 3, (6, 13): 3, (8, 19): 3, (8, 23): 3, (8, 21): 3, (8, 3): 3, (8, 5): 3, (8, 10): 3, (8, 14): 3, (8, 12): 3, (18, 11): 3, (18, 16): 3, (18, 17): 3, (18, 10): 3, (18, 14): 3, (18, 15): 3, (18, 12): 3, (18, 13): 3, (20, 3): 3, (20, 4): 3, (20, 2): 3, (20, 9): 3, (20, 14): 3, (20, 15): 3, (20, 12): 3, (20, 13): 3, (25, 3): 3, (25, 2): 3, (25, 1): 3, (25, 9): 3, (25, 10): 3, (25, 13): 3, (26, 3): 3, (26, 4): 3, (26, 5): 3, (26, 9): 3, (26, 10): 3, (26, 12): 3, (19, 9): 3, (19, 16): 3, (19, 17): 3, (19, 12): 3, (19, 13): 3, (23, 1): 3, (23, 9): 3, (23, 11): 3, (23, 13): 3, (24, 5): 3, (24, 9): 3, (24, 11): 3, (24, 12): 3, (21, 2): 3, (21, 1): 3, (21, 9): 3, (21, 11): 3, (21, 17): 3, (21, 10): 3, (21, 15): 3, (22, 4): 3, (22, 5): 3, (22, 9): 3, (22, 11): 3, (22, 16): 3, (22, 10): 3, (22, 14): 3, (3, 11): 3, (3, 16): 3, (3, 17): 3, (4, 1): 3, (4, 11): 3, (4, 17): 3, (4, 13): 3, (2, 5): 3, (2, 11): 3, (2, 16): 3, (2, 12): 3, (5, 17): 3, (5, 15): 3, (5, 13): 3, (1, 16): 3, (1, 14): 3, (1, 12): 3, (7, 3): 4, (6, 2): 4, (8, 4): 4, (18, 9): 4, (20, 10): 4, (25, 15): 4, (26, 14): 4, (19, 11): 4, (23, 17): 4, (24, 16): 4, (21, 13): 4, (22, 12): 4, (5, 1): 4, (7, None): None, (6, None): None, (8, None): None, (18, None): None, (20, None): None, (25, None): None, (26, None): None, (19, None): None, (23, None): None, (24, None): None, (21, None): None, (22, None): None, (3, None): None, (4, None): None, (2, None): None, (5, None): None, (1, None): None, (9, None): None, (11, None): None, (16, None): None, (17, None): None, (10, None): None, (14, None): None, (15, None): None, (12, None): None, (None, 7): None, (None, 6): None, (None, 8): None, (None, 18): None, (None, 20): None, (None, 25): None, (None, 26): None, (None, 19): None, (None, 23): None, (None, 24): None, (None, 21): None, (None, 22): None, (None, 3): None, (None, 4): None, (None, 2): None, (None, 5): None, (None, 1): None, (None, 9): None, (None, 11): None, (None, 16): None, (None, 17): None, (None, 10): None, (None, 14): None, (None, 15): None, (None, 12): None, (None, 13): None, (13, None): None, (None, None): None, (6, 7): 1, (8, 7): 1, (20, 7): 1, (25, 7): 1, (26, 7): 1, (11, 7): 1, (16, 7): 1, (17, 7): 1, (25, 6): 1, (5, 6): 1, (16, 6): 1, (26, 8): 1, (1, 8): 1, (17, 8): 1, (20, 18): 1, (25, 18): 1, (26, 18): 1, (19, 18): 1, (23, 18): 1, (24, 18): 1, (21, 18): 1, (22, 18): 1, (25, 20): 1, (26, 20): 1, (21, 25): 1, (5, 25): 1, (22, 26): 1, (1, 26): 1, (23, 19): 1, (24, 19): 1, (3, 19): 1, (21, 23): 1, (3, 23): 1, (4, 23): 1, (5, 23): 1, (22, 24): 1, (3, 24): 1, (2, 24): 1, (1, 24): 1, (5, 21): 1, (1, 22): 1, (4, 3): 1, (2, 3): 1, (10, 3): 1, (14, 3): 1, (15, 3): 1, (5, 4): 1, (14, 4): 1, (1, 2): 1, (15, 2): 1, (16, 5): 1, (14, 5): 1, (12, 5): 1, (17, 1): 1, (15, 1): 1, (13, 1): 1, (11, 9): 1, (16, 9): 1, (17, 9): 1, (10, 9): 1, (14, 9): 1, (15, 9): 1, (12, 9): 1, (13, 9): 1, (16, 11): 1, (17, 11): 1, (12, 16): 1, (13, 17): 1, (14, 10): 1, (15, 10): 1, (12, 14): 1, (13, 15): 1, (18, 7): 2, (21, 7): 2, (22, 7): 2, (5, 7): 2, (1, 7): 2, (9, 7): 2, (12, 7): 2, (13, 7): 2, (8, 6): 2, (18, 6): 2, (20, 6): 2, (26, 6): 2, (23, 6): 2, (21, 6): 2, (4, 6): 2, (9, 6): 2, (11, 6): 2, (17, 6): 2, (14, 6): 2, (12, 6): 2, (18, 8): 2, (20, 8): 2, (25, 8): 2, (24, 8): 2, (22, 8): 2, (2, 8): 2, (9, 8): 2, (11, 8): 2, (16, 8): 2, (15, 8): 2, (13, 8): 2, (3, 18): 2, (4, 18): 2, (2, 18): 2, (5, 18): 2, (1, 18): 2, (19, 20): 2, (23, 20): 2, (24, 20): 2, (21, 20): 2, (22, 20): 2, (5, 20): 2, (1, 20): 2, (11, 20): 2, (16, 20): 2, (17, 20): 2, (26, 25): 2, (19, 25): 2, (23, 25): 2, (24, 25): 2, (22, 25): 2, (4, 25): 2, (11, 25): 2, (16, 25): 2, (17, 25): 2, (14, 25): 2, (12, 25): 2, (19, 26): 2, (23, 26): 2, (24, 26): 2, (21, 26): 2, (2, 26): 2, (11, 26): 2, (16, 26): 2, (17, 26): 2, (15, 26): 2, (13, 26): 2, (21, 19): 2, (22, 19): 2, (4, 19): 2, (2, 19): 2, (5, 19): 2, (1, 19): 2, (10, 19): 2, (14, 19): 2, (15, 19): 2, (24, 23): 2, (22, 23): 2, (2, 23): 2, (16, 23): 2, (10, 23): 2, (14, 23): 2, (15, 23): 2, (12, 23): 2, (21, 24): 2, (4, 24): 2, (17, 24): 2, (10, 24): 2, (14, 24): 2, (15, 24): 2, (13, 24): 2, (22, 21): 2, (3, 21): 2, (4, 21): 2, (16, 21): 2, (14, 21): 2, (12, 21): 2, (3, 22): 2, (2, 22): 2, (17, 22): 2, (15, 22): 2, (13, 22): 2, (5, 3): 2, (1, 3): 2, (9, 3): 2, (12, 3): 2, (13, 3): 2, (2, 4): 2, (9, 4): 2, (16, 4): 2, (10, 4): 2, (15, 4): 2, (12, 4): 2, (9, 2): 2, (17, 2): 2, (10, 2): 2, (14, 2): 2, (13, 2): 2, (9, 5): 2, (11, 5): 2, (10, 5): 2, (9, 1): 2, (11, 1): 2, (10, 1): 2, (10, 11): 2, (14, 11): 2, (15, 11): 2, (12, 11): 2, (13, 11): 2, (17, 16): 2, (10, 16): 2, (14, 16): 2, (15, 16): 2, (13, 16): 2, (10, 17): 2, (14, 17): 2, (15, 17): 2, (12, 17): 2, (12, 10): 2, (13, 10): 2, (15, 14): 2, (13, 14): 2, (12, 15): 2, (13, 12): 2, (19, 7): 3, (23, 7): 3, (24, 7): 3, (4, 7): 3, (2, 7): 3, (10, 7): 3, (14, 7): 3, (15, 7): 3, (19, 6): 3, (24, 6): 3, (22, 6): 3, (3, 6): 3, (1, 6): 3, (10, 6): 3, (15, 6): 3, (13, 6): 3, (19, 8): 3, (23, 8): 3, (21, 8): 3, (3, 8): 3, (5, 8): 3, (10, 8): 3, (14, 8): 3, (12, 8): 3, (11, 18): 3, (16, 18): 3, (17, 18): 3, (10, 18): 3, (14, 18): 3, (15, 18): 3, (12, 18): 3, (13, 18): 3, (3, 20): 3, (4, 20): 3, (2, 20): 3, (9, 20): 3, (14, 20): 3, (15, 20): 3, (12, 20): 3, (13, 20): 3, (3, 25): 3, (2, 25): 3, (1, 25): 3, (9, 25): 3, (10, 25): 3, (13, 25): 3, (3, 26): 3, (4, 26): 3, (5, 26): 3, (9, 26): 3, (10, 26): 3, (12, 26): 3, (9, 19): 3, (16, 19): 3, (17, 19): 3, (12, 19): 3, (13, 19): 3, (1, 23): 3, (9, 23): 3, (11, 23): 3, (13, 23): 3, (5, 24): 3, (9, 24): 3, (11, 24): 3, (12, 24): 3, (2, 21): 3, (1, 21): 3, (9, 21): 3, (11, 21): 3, (17, 21): 3, (10, 21): 3, (15, 21): 3, (4, 22): 3, (5, 22): 3, (9, 22): 3, (11, 22): 3, (16, 22): 3, (10, 22): 3, (14, 22): 3, (11, 3): 3, (16, 3): 3, (17, 3): 3, (1, 4): 3, (11, 4): 3, (17, 4): 3, (13, 4): 3, (5, 2): 3, (11, 2): 3, (16, 2): 3, (12, 2): 3, (17, 5): 3, (15, 5): 3, (13, 5): 3, (16, 1): 3, (14, 1): 3, (12, 1): 3, (3, 7): 4, (2, 6): 4, (4, 8): 4, (9, 18): 4, (10, 20): 4, (15, 25): 4, (14, 26): 4, (11, 19): 4, (17, 23): 4, (16, 24): 4, (13, 21): 4, (12, 22): 4, (1, 5): 4}
DL = 21
DR = 22
F = 3
FL = 4
FR = 2
INT_TO_CODE = OrderedDict([(None, 'unknown'), (1, 'right'), (2, 'frontright'), (3, 'front'), (4, 'frontleft'), (5, 'left'), (6, 'backleft'), (7, 'back'), (8, 'backright'), (9, 'up'), (10, 'upfront'), (11, 'upback'), (12, 'upleft'), (13, 'upright'), (14, 'upfrontleft'), (15, 'upfrontright'), (16, 'upbackleft'), (17, 'upbackright'), (18, 'down'), (19, 'downfront'), (20, 'downback'), (21, 'downleft'), (22, 'downright'), (23, 'downfrontleft'), (24, 'downfrontright'), (25, 'downbackleft'), (26, 'downbackright')])
INT_TO_NICE = OrderedDict([(None, 'Unknown'), (1, 'Right'), (2, 'Front-Right'), (3, 'Front'), (4, 'Front-Left'), (5, 'Left'), (6, 'Back-Left'), (7, 'Back'), (8, 'Back-Right'), (9, 'Up'), (10, 'Up-Front'), (11, 'Up-Back'), (12, 'Up-Left'), (13, 'Up-Right'), (14, 'Up-Front-Left'), (15, 'Up-Front-Right'), (16, 'Up-Back-Left'), (17, 'Up-Back-Right'), (18, 'Down'), (19, 'Down-Front'), (20, 'Down-Back'), (21, 'Down-Left'), (22, 'Down-Right'), (23, 'Down-Front-Left'), (24, 'Down-Front-Right'), (25, 'Down-Back-Left'), (26, 'Down-Back-Right')])
L = 5
class NICE

Bases: object

B = 'Back'
BL = 'Back-Left'
BR = 'Back-Right'
D = 'Down'
DB = 'Down-Back'
DBL = 'Down-Back-Left'
DBR = 'Down-Back-Right'
DF = 'Down-Front'
DFL = 'Down-Front-Left'
DFR = 'Down-Front-Right'
DL = 'Down-Left'
DR = 'Down-Right'
F = 'Front'
FL = 'Front-Left'
FR = 'Front-Right'
L = 'Left'
R = 'Right'
U = 'Up'
UB = 'Up-Back'
UBL = 'Up-Back-Left'
UBR = 'Up-Back-Right'
UF = 'Up-Front'
UFL = 'Up-Front-Left'
UFR = 'Up-Front-Right'
UL = 'Up-Left'
UNKNOWN = 'Unknown'
UR = 'Up-Right'
NICE_TO_CODE = {'Back': 'back', 'Back-Left': 'backleft', 'Back-Right': 'backright', 'Down': 'down', 'Down-Back': 'downback', 'Down-Back-Left': 'downbackleft', 'Down-Back-Right': 'downbackright', 'Down-Front': 'downfront', 'Down-Front-Left': 'downfrontleft', 'Down-Front-Right': 'downfrontright', 'Down-Left': 'downleft', 'Down-Right': 'downright', 'Front': 'front', 'Front-Left': 'frontleft', 'Front-Right': 'frontright', 'Left': 'left', 'Right': 'right', 'Unknown': 'unknown', 'Up': 'up', 'Up-Back': 'upback', 'Up-Back-Left': 'upbackleft', 'Up-Back-Right': 'upbackright', 'Up-Front': 'upfront', 'Up-Front-Left': 'upfrontleft', 'Up-Front-Right': 'upfrontright', 'Up-Left': 'upleft', 'Up-Right': 'upright'}
NICE_TO_INT = {'Back': 7, 'Back-Left': 6, 'Back-Right': 8, 'Down': 18, 'Down-Back': 20, 'Down-Back-Left': 25, 'Down-Back-Right': 26, 'Down-Front': 19, 'Down-Front-Left': 23, 'Down-Front-Right': 24, 'Down-Left': 21, 'Down-Right': 22, 'Front': 3, 'Front-Left': 4, 'Front-Right': 2, 'Left': 5, 'Right': 1, 'Unknown': None, 'Up': 9, 'Up-Back': 11, 'Up-Back-Left': 16, 'Up-Back-Right': 17, 'Up-Front': 10, 'Up-Front-Left': 14, 'Up-Front-Right': 15, 'Up-Left': 12, 'Up-Right': 13}
R = 1
U = 9
UB = 11
UBL = 16
UBR = 17
UF = 10
UFL = 14
UFR = 15
UL = 12
UNKNOWN = None
UR = 13
d = None
f1 = None
f2 = None
class wbia.constants.ZIPPED_URLS[source]

Bases: object

ASSIGNER = 'https://wildbookiarepository.azureedge.net/databases/testdb_assigner.zip'
DF_CURVRANK = 'https://wildbookiarepository.azureedge.net/databases/testdb_curvrank.zip'
GZ_DISTINCTIVE = 'https://wildbookiarepository.azureedge.net/models/distinctivness_zebra_grevys.zip'
ID_EXAMPLE = 'https://wildbookiarepository.azureedge.net/databases/testdb_identification.zip'
K7_EXAMPLE = 'https://wildbookiarepository.azureedge.net/databases/testdb_kaggle7.zip'
NAUTS = 'https://wildbookiarepository.azureedge.net/databases/NAUT_test.zip'
ORIENTATION = 'https://wildbookiarepository.azureedge.net/databases/testdb_orientation.zip'
PZ_DISTINCTIVE = 'https://wildbookiarepository.azureedge.net/models/distinctivness_zebra_plains.zip'
PZ_MTEST = 'https://wildbookiarepository.azureedge.net/databases/PZ_MTEST.zip'
WDS = 'https://wildbookiarepository.azureedge.net/databases/wd_peter2.zip'

wbia.core_annots

IBEIS CORE Defines the core dependency cache supported by the image analysis api

Extracts annotation chips from imaages and applies optional image normalizations.

Todo

  • interactive callback functions

  • detection interface

  • identification interface

Notes

HOW TO DESIGN INTERACTIVE PLOTS:

decorate as interactive depc.get_property(recompute=True) instead of calling preproc as a generator and then adding, calls preproc and passes in a callback function. preproc spawns interaction and must call callback function when finished. callback function adds the rowids to the table.

Needed Tables:

Chip NormChip Feats Keypoints Descriptors ProbChip

IdentifyQuery NeighborIndex QualityClassifier ViewpointClassifier

CommandLine:

python -m wbia.control.IBEISControl –test-show_depc_annot_graph –show

Setup:
>>> from wbia.core_annots import *  # NOQA
>>> import wbia
>>> import wbia.plottool as pt
>>> ibs = wbia.opendb('testdb1')
>>> depc = ibs.depc_annot
>>> aid_list = ibs.get_valid_aids()[0:2]
class wbia.core_annots.AnnotMaskConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_annots.AoIConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_annots.CanonicalConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_annots.ChipConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_annots.ChipThumbConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_annots.ClassifierConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_annots.FeatConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

Example

>>> # DISABLE_DOCTEST
>>> from wbia.core_annots import *  # NOQA
>>> feat_cfg = FeatConfig()
>>> result = str(feat_cfg)
>>> print(result)
<FeatConfig(hesaff+sift)>
get_hesaff_params()[source]
get_param_info_list()[source]
class wbia.core_annots.FeatWeightConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_annots.HOGConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_annots.IndexerConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

Example

>>> # DISABLE_DOCTEST
>>> from wbia.core_annots import *  # NOQA
>>> cfg = VsOneConfig()
>>> result = str(cfg)
>>> print(result)
get_flann_params()[source]
class wbia.core_annots.LabelerConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_annots.OrienterConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_annots.PartAssignmentFeatureConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_annots.ProbchipConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_annots.VsOneConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

Example

>>> # DISABLE_DOCTEST
>>> from wbia.core_annots import *  # NOQA
>>> cfg = VsOneConfig()
>>> result = str(cfg)
>>> print(result)
wbia.core_annots.assigner_viewpoint_features(depc, part_aid_list, body_aid_list, config=None)[source]
wbia.core_annots.assigner_viewpoint_unit_features(depc, part_aid_list, body_aid_list, config=None)[source]
wbia.core_annots.cnn_probchips(ibs, species, inputchip_fpaths, smooth_thresh, smooth_ksize)[source]
wbia.core_annots.compute_annotmask(depc, aid_list, config=None)[source]

Interaction dispatcher for annotation masks.

Parameters
  • depc (wbia.depends_cache.DependencyCache) –

  • aid_list (list) – list of annotation rowids

  • config (AnnotMaskConfig) – (default = None)

Yields

(uri, int, int) – tup

CommandLine:

python -m wbia.core_annots –exec-compute_annotmask –show python -m wbia.core_annots –exec-compute_annotmask –show –edit

Example

>>> # DISABLE_DOCTEST
>>> from wbia.core_annots import *  # NOQA
>>> ibs, depc, aid_list = testdata_core()
>>> config = AnnotMaskConfig(dim_size=None)
>>> chip_config = config.chip_cfg
>>> edit = ut.get_argflag('--edit')
>>> mask = depc.get_property('annotmask', aid_list, 'img', config, recompute=edit)[0]
>>> chip = depc.get_property('chips', aid_list, 'img', config=chip_config)[0]
>>> ut.quit_if_noshow()
>>> import wbia.plottool as pt
>>> resized = vt.resize_mask(mask, chip)
>>> blended = vt.blend_images_multiply(chip, resized)
>>> pt.imshow(blended, title='mask')
>>> pt.show_if_requested()
wbia.core_annots.compute_aoi2(depc, aid_list, config=None)[source]

Extracts the Annotation of Interest (AoI) for a given input annotation

Parameters
  • depc (wbia.depends_cache.DependencyCache) –

  • aid_list (list) – list of annotation rowids

  • config (dict) – (default = None)

Yields

(float, str) – tup

CommandLine:

wbia compute_aoi2

Example

>>> # DISABLE_DOCTEST
>>> from wbia.core_images import *  # NOQA
>>> import wbia
>>> defaultdb = 'PZ_MTEST'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> depc = ibs.depc_annot
>>> aid_list = ibs.get_valid_aids()[0:8]
>>> # depc.delete_property('aoi_two', aid_list)
>>> results = depc.get_property('aoi_two', aid_list, None)
>>> print(results)
wbia.core_annots.compute_canonical(depc, aid_list, config=None)[source]

Extracts the detections for a given input annotation

Parameters
  • depc (wbia.depends_cache.DependencyCache) –

  • gid_list (list) – list of image rowids

  • config (dict) – (default = None)

Yields

(float, str) – tup

CommandLine:

wbia compute_canonical

Example

>>> # DISABLE_DOCTEST
>>> from wbia.core_images import *  # NOQA
>>> import wbia
>>> defaultdb = 'PZ_MTEST'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> depc = ibs.depc_image
>>> gid_list = ibs.get_valid_gids()[0:8]
>>> # depc.delete_property('canonical', gid_list)
>>> results = depc.get_property('canonical', gid_list, None)
>>> print(results)
wbia.core_annots.compute_chip(depc, aid_list, config=None)[source]

Extracts the annotation chip from the bounding box

Parameters
  • depc (wbia.depends_cache.DependencyCache) –

  • aid_list (list) – list of annotation rowids

  • config (dict) – (default = None)

Yields

(uri, int, int) – tup

CommandLine:

python -m wbia.core_annots –exec-compute_chip:0 –show python -m wbia.core_annots –exec-compute_chip:0 –show –greyscale wbia –tf compute_chip –show –pad=64 –dim_size=256 –db PZ_MTEST wbia –tf compute_chip –show –pad=64 –dim_size=None –db PZ_MTEST wbia –tf compute_chip –show –db humpbacks wbia –tf compute_chip:1 –show

Doctest:
>>> from wbia.core_annots import *  # NOQA
>>> import wbia
>>> defaultdb = 'testdb1'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> depc = ibs.depc_annot
>>> config = ChipConfig.from_argv_dict(dim_size=None)
>>> aid_list = ibs.get_valid_aids()[0:8]
>>> chips = depc.get_property('chips', aid_list, 'img', config={'dim_size': 256})
>>> ut.quit_if_noshow()
>>> import wbia.plottool as pt
>>> #interact_obj = pt.interact_multi_image.MultiImageInteraction(chips, nPerPage=4)
>>> import wbia.viz.interact.interact_chip
>>> interact_obj = wbia.viz.interact.interact_chip.interact_multichips(ibs, aid_list, config2_=config)
>>> interact_obj.start()
>>> pt.show_if_requested()
Doctest:
>>> from wbia.core_annots import *  # NOQA
>>> import wbia
>>> defaultdb = 'testdb1'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> depc = ibs.depc_annot
>>> config = ChipConfig(**{'dim_size': (256, 256), 'resize_dim': 'wh'})
>>> #dlg = config.make_qt_dialog()
>>> #config = dlg.widget.config
>>> aid_list = ibs.get_valid_aids()[0:8]
>>> chips = depc.get_property('chips', aid_list, 'img', config=config, recompute=True)
>>> ut.quit_if_noshow()
>>> import wbia.plottool as pt
>>> pt.imshow(vt.stack_image_recurse(chips))
>>> pt.show_if_requested()
wbia.core_annots.compute_chipthumb(depc, aid_list, config=None)[source]

Yet another chip thumb computer

Example

>>> # DISABLE_DOCTEST
>>> from wbia.core_annots import *  # NOQA
>>> import wbia
>>> defaultdb = 'PZ_MTEST'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> depc = ibs.depc_annot
>>> config = ChipThumbConfig.from_argv_dict(dim_size=None)
>>> aid_list = ibs.get_valid_aids()[0:2]
>>> compute_chipthumb(depc, aid_list, config)
>>> chips = depc.get_property('chips', aid_list, 'img', config={'dim_size': 256})
>>> ut.quit_if_noshow()
>>> import wbia.plottool as pt
>>> import wbia.viz.interact.interact_chip
>>> interact_obj = wbia.viz.interact.interact_chip.interact_multichips(ibs, aid_list, config2_=config)
>>> interact_obj.start()
>>> pt.show_if_requested()
wbia.core_annots.compute_classifications(depc, aid_list, config=None)[source]

Extracts the detections for a given input annotation

Parameters
  • depc (wbia.depends_cache.DependencyCache) –

  • gid_list (list) – list of image rowids

  • config (dict) – (default = None)

Yields

(float, str) – tup

CommandLine:

wbia compute_classifications

Example

>>> # DISABLE_DOCTEST
>>> from wbia.core_images import *  # NOQA
>>> import wbia
>>> defaultdb = 'PZ_MTEST'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> depc = ibs.depc_image
>>> gid_list = ibs.get_valid_gids()[0:8]
>>> # depc.delete_property('classifier', gid_list)
>>> results = depc.get_property('classifier', gid_list, None)
>>> print(results)
wbia.core_annots.compute_dlen_sqrd(depc, aid_list, config=None)[source]
wbia.core_annots.compute_feats(depc, cid_list, config=None)[source]

Computes features and yields results asynchronously: TODO: Remove IBEIS from this equation. Move the firewall towards the controller

Parameters
  • depc (dtool.DependencyCache) –

  • cid_list (list) –

  • config (None) –

Returns

generates param tups

Return type

generator

SeeAlso:

~/code/wbia_cnn/wbia_cnn/_plugin.py

CommandLine:

python -m wbia.core_annots –test-compute_feats:0 –show python -m wbia.core_annots –test-compute_feats:1

Doctest:
>>> # DISABLE_DOCTEST
>>> from wbia.core_annots import *  # NOQA
>>> ibs, depc, aid_list = testdata_core()
>>> chip_config = {}
>>> config = FeatConfig()
>>> cid_list = depc.get_rowids('chips', aid_list, config=chip_config)
>>> featgen = compute_feats(depc, cid_list, config)
>>> feat_list = list(featgen)
>>> assert len(feat_list) == len(aid_list)
>>> (nFeat, kpts, vecs) = feat_list[0]
>>> assert nFeat == len(kpts) and nFeat == len(vecs)
>>> assert kpts.shape[1] == 6
>>> assert vecs.shape[1] == 128
>>> ut.quit_if_noshow()
>>> import wbia.plottool as pt
>>> chip = depc.get_native('chips', cid_list[0:1], 'img')[0]
>>> pt.interact_keypoints.KeypointInteraction(chip, kpts, vecs, autostart=True)
>>> ut.show_if_requested()

Example

>>> # DISABLE_DOCTEST
>>> # TIMING
>>> from wbia.core_annots import *  # NOQA
>>> ibs, depc, aid_list = testdata_core('PZ_MTEST', 100)
>>> #config = {'dim_size': 450}
>>> config = {}
>>> cid_list = depc.get_rowids('chips', aid_list, config=config)
>>> config = FeatConfig()
>>> featgen = compute_feats(depc, cid_list, config)
>>> feat_list = list(featgen)
>>> idx = 5
>>> (nFeat, kpts, vecs) = feat_list[idx]
>>> ut.quit_if_noshow()
>>> import wbia.plottool as pt
>>> chip = depc.get_native('chips', cid_list[idx:idx + 1], 'img')[0]
>>> pt.interact_keypoints.KeypointInteraction(chip, kpts, vecs, autostart=True)
>>> ut.show_if_requested()
>>> #num_feats = depc.get('feat', aid_list, 'num_feats', config=config, recompute=True)

ibs.delete_annot_feats(aid_list) ibs.get_annot_feat_rowids(aid_list)

wbia.core_annots.compute_fgweights(depc, fid_list, pcid_list, config=None)[source]
Parameters
  • depc (dtool.DependencyCache) – depc

  • fid_list (list) –

  • config (None) – (default = None)

CommandLine:

python -m wbia.core_annots compute_fgweights

Doctest:
>>> # xdoctest: +REQUIRES(module:wbia_cnn)
>>> from wbia.core_annots import *  # NOQA
>>> ibs, depc, aid_list = testdata_core()
>>> full_config = {}
>>> config = FeatConfig()
>>> fid_list = depc.get_rowids('feat', aid_list, config=full_config)
>>> pcid_list = depc.get_rowids('probchip', aid_list, config=full_config)
>>> prop_list = list(compute_fgweights(depc, fid_list, pcid_list))
>>> featweight_list = ut.take_column(prop_list, 0)
>>> result = np.array_str(featweight_list[0][0:3], precision=3)
>>> print(result)
wbia.core_annots.compute_hog(depc, cid_list, config=None)[source]
Doctest:
>>> from wbia.core_annots import *  # NOQA
>>> ibs, depc, aid_list = testdata_core()
>>> chip_config = {}
>>> config = HOGConfig()
>>> cid_list = depc.get_rowids('chips', aid_list, config=chip_config)
>>> hoggen = compute_hog(depc, cid_list, config)
>>> hog = list(hoggen)[0]
>>> ut.quit_if_noshow()
>>> import wbia.plottool as pt
>>> hog_image = make_hog_block_image(hog, config)
>>> ut.show_if_requested()
wbia.core_annots.compute_labels_annotations(depc, aid_list, config=None)[source]

Extracts the detections for a given input image

Parameters
  • depc (wbia.depends_cache.DependencyCache) –

  • gid_list (list) – list of image rowids

  • config (dict) – (default = None)

Yields

(float, str) – tup

CommandLine:

python -m wbia.core_annots –exec-compute_labels_annotations python -m wbia.core_annots –exec-compute_labels_annotations:0 python -m wbia.core_annots –exec-compute_labels_annotations:1

Example

>>> # DISABLE_DOCTEST
>>> from wbia.core_images import *  # NOQA
>>> import wbia
>>> defaultdb = 'PZ_MTEST'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> depc = ibs.depc_annot
>>> aid_list = ibs.get_valid_aids()[0:8]
>>> config = {'labeler_algo': 'densenet', 'labeler_weight_filepath': 'giraffe_v1'}
>>> # depc.delete_property('labeler', aid_list)
>>> results = depc.get_property('labeler', aid_list, None, config=config)
>>> print(results)
>>> config = {'labeler_weight_filepath': 'candidacy'}
>>> # depc.delete_property('labeler', aid_list)
>>> results = depc.get_property('labeler', aid_list, None, config=config)
>>> print(results)
>>> config = {'labeler_algo': 'azure'}
>>> # depc.delete_property('labeler', aid_list)
>>> results = depc.get_property('labeler', aid_list, None, config=config)
>>> print(results)
>>> # depc.delete_property('labeler', aid_list)
>>> results = depc.get_property('labeler', aid_list, None)
>>> print(results)

Example

>>> # DISABLE_DOCTEST
>>> from wbia.core_images import *  # NOQA
>>> import wbia
>>> defaultdb = 'WD_Master'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> depc = ibs.depc_annot
>>> aid_list = ibs.get_valid_aids()[0:8]
>>> config = {'labeler_algo': 'densenet', 'labeler_weight_filepath': 'wilddog_v3+wilddog_v2+wilddog_v1'}
>>> # depc.delete_property('labeler', aid_list)
>>> results = depc.get_property('labeler', aid_list, None, config=config)
>>> print(results)
wbia.core_annots.compute_neighbor_index(depc, fids_list, config)[source]
Parameters
  • depc (dtool.DependencyCache) –

  • fids_list (list) –

  • config (dtool.Config) –

CommandLine:

python -m wbia.core_annots –exec-compute_neighbor_index –show python -m wbia.control.IBEISControl –test-show_depc_annot_table_input –show –tablename=neighbor_index

Example

>>> # DISABLE_DOCTEST
>>> from wbia.core_annots import *  # NOQA
>>> import wbia
>>> ibs, aid_list = wbia.testdata_aids('testdb1')
>>> depc = ibs.depc_annot
>>> fid_list = depc.get_rowids('feat', aid_list)
>>> aids_list = tuple([aid_list])
>>> fids_list = tuple([fid_list])
>>> # Compute directly from function
>>> config = ibs.depc_annot['neighbor_index'].configclass()
>>> result1 = list(compute_neighbor_index(depc, fids_list, config))
>>> nnindexer1 = result1[0][0]
>>> # Compute using depcache
>>> result2 = ibs.depc_annot.get('neighbor_index', [aids_list], 'indexer', config, recompute=False, _debug=True)
>>> #result3 = ibs.depc_annot.get('neighbor_index', [tuple(fids_list)], 'indexer', config, recompute=False)
>>> print(result2)
>>> print(result3)
>>> assert result2[0] is not result3[0]
>>> assert nnindexer1.knn(ibs.get_annot_vecs(1), 1) is not None
>>> assert result3[0].knn(ibs.get_annot_vecs(1), 1) is not None
wbia.core_annots.compute_orients_annotations(depc, aid_list, config=None)[source]

Extracts the detections for a given input image

Parameters
  • depc (wbia.depends_cache.DependencyCache) –

  • gid_list (list) – list of image rowids

  • config (dict) – (default = None)

Yields

(float, str) – tup

CommandLine:

pytest wbia/core_annots.py::compute_orients_annotations:0 python -m xdoctest /Users/jason.parham/code/wildbook-ia/wbia/core_annots.py compute_orients_annotations:1 –orient

Doctest:
>>> # DISABLE_DOCTEST
>>> from wbia.core_images import *  # NOQA
>>> import wbia
>>> defaultdb = 'testdb_identification'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> depc = ibs.depc_annot
>>> aid_list = ibs.get_valid_aids()[-16:-8]
>>> config = {'orienter_algo': 'deepsense'}
>>> # depc.delete_property('orienter', aid_list)
>>> result_list = depc.get_property('orienter', aid_list, None, config=config)
>>> xtl_list    = list(map(int, map(np.around, ut.take_column(result_list, 0))))
>>> ytl_list    = list(map(int, map(np.around, ut.take_column(result_list, 1))))
>>> w_list      = list(map(int, map(np.around, ut.take_column(result_list, 2))))
>>> h_list      = list(map(int, map(np.around, ut.take_column(result_list, 3))))
>>> theta_list  = ut.take_column(result_list, 4)
>>> bbox_list   = list(zip(xtl_list, ytl_list, w_list, h_list))
>>> ibs.set_annot_bboxes(aid_list, bbox_list, theta_list=theta_list)
>>> print(result_list)
Doctest:
>>> # DISABLE_DOCTEST
>>> import wbia
>>> import random
>>> import utool as ut
>>> from wbia.init import sysres
>>> import numpy as np
>>> dbdir = sysres.ensure_testdb_orientation()
>>> ibs = wbia.opendb(dbdir=dbdir)
>>> aid_list = ibs.get_valid_aids()
>>> note_list = ibs.get_annot_notes(aid_list)
>>> species_list = ibs.get_annot_species(aid_list)
>>> flag_list = [
>>>     note == 'random-01' and species == 'right_whale_head'
>>>     for note, species in zip(note_list, species_list)
>>> ]
>>> aid_list = ut.compress(aid_list, flag_list)
>>> aid_list = aid_list[:10]
>>> depc = ibs.depc_annot
>>> config = {'orienter_algo': 'plugin:orientation'}
>>> # depc.delete_property('orienter', aid_list)
>>> result_list = depc.get_property('orienter', aid_list, None, config=config)
>>> xtl_list    = list(map(int, map(np.around, ut.take_column(result_list, 0))))
>>> ytl_list    = list(map(int, map(np.around, ut.take_column(result_list, 1))))
>>> w_list      = list(map(int, map(np.around, ut.take_column(result_list, 2))))
>>> h_list      = list(map(int, map(np.around, ut.take_column(result_list, 3))))
>>> theta_list  = ut.take_column(result_list, 4)
>>> bbox_list   = list(zip(xtl_list, ytl_list, w_list, h_list))
>>> # ibs.set_annot_bboxes(aid_list, bbox_list, theta_list=theta_list)
>>> print(result_list)
wbia.core_annots.compute_pairwise_vsone(depc, qaids, daids, config)[source]

Executes one-vs-one matching between pairs of annotations using the vt.PairwiseMatch object.

Doctest:
>>> from wbia.core_annots import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('PZ_MTEST')
>>> match_config = ut.hashdict({})
>>> qaids = [1, 4, 2]
>>> daids = [2, 5, 3]
>>> match_list = ibs.depc.get('pairwise_match', (qaids, daids),
>>>                           'match', config=match_config)
>>> m1, m2, m3 = match_list
>>> assert (m1.annot1['aid'], m1.annot2['aid']) == (1, 2)
>>> assert (m2.annot1['aid'], m2.annot2['aid']) == (4, 5)
>>> assert m1.fs.sum() > m2.fs.sum()
wbia.core_annots.compute_probchip(depc, aid_list, config=None)[source]

Computes probability chips

CommandLine:

python -m wbia.core_annots –test-compute_probchip –nocnn –show –db PZ_MTEST python -m wbia.core_annots –test-compute_probchip –show –fw_detector=cnn python -m wbia.core_annots –test-compute_probchip –show –fw_detector=rf –smooth_thresh=None

Example

>>> # DISABLE_DOCTEST
>>> from wbia.core_annots import *  # NOQA
>>> import wbia
>>> ibs, depc, aid_list = testdata_core()
>>> aid_list = ibs.get_valid_aids(species='zebra_plains')[0:10]
>>> config = ProbchipConfig.from_argv_dict(fw_detector='cnn', smooth_thresh=None)
>>> #probchip_fpath_list_ = ut.take_column(list(compute_probchip(depc, aid_list, config)), 0)
>>> probchip_list_ = ut.take_column(list(compute_probchip(depc, aid_list, config)), 0)
>>> #result = ut.repr2(probchip_fpath_list_)
>>> #print(result)
>>> ut.quit_if_noshow()
>>> import wbia.plottool as pt
>>> #xlabel_list = list(map(str, [vt.image.open_image_size(p) for p in probchip_fpath_list_]))
>>> #iteract_obj = pt.interact_multi_image.MultiImageInteraction(probchip_fpath_list_, nPerPage=4, xlabel_list=xlabel_list)
>>> xlabel_list = [str(vt.get_size(img)) for img in probchip_list_]
>>> iteract_obj = pt.interact_multi_image.MultiImageInteraction(probchip_list_, nPerPage=4, xlabel_list=xlabel_list)
>>> iteract_obj.start()
>>> ut.show_if_requested()
wbia.core_annots.empty_probchips(inputchip_fpaths)[source]
wbia.core_annots.gen_chip_configure_and_compute(ibs, gid_list, rowid_list, bbox_list, theta_list, config)[source]
wbia.core_annots.gen_chip_worker(gpath, orient, M, new_size, filter_list, warpkw)[source]
wbia.core_annots.gen_feat_worker(chip_fpath, probchip_fpath, hesaff_params)[source]

Function to be parallelized by multiprocessing / joblib / whatever. Must take in one argument to be used by multiprocessing.map_async

Parameters
  • chip_fpath

  • probchip_fpath

  • hesaff_params

Returns

(None, kpts, vecs)

Return type

tuple

CommandLine:

python -m wbia.core_annots –exec-gen_feat_worker –show python -m wbia.core_annots –exec-gen_feat_worker –show –aid 1988 –db GZ_Master1 –affine-invariance=False –scale_max=30 python -m wbia.core_annots –exec-gen_feat_worker –show –aid 1988 –db GZ_Master1 –affine-invariance=False –maskmethod=None –scale_max=30

Doctest:
>>> from wbia.core_annots import *  # NOQA
>>> ibs, depc, aid_list = testdata_core()
>>> aid = aid_list[0]
>>> config = {}
>>> feat_config = FeatConfig.from_argv_dict()
>>> chip_fpath = ibs.depc_annot.get('chips', aid_list[0], 'img', config=config, read_extern=False)
>>> maskmethod = ut.get_argval('--maskmethod', type_=str, default='cnn')
>>> probchip_fpath = ibs.depc_annot.get('probchip', aid_list[0], 'img', config=config, read_extern=False) if feat_config['maskmethod'] == 'cnn' else None
>>> hesaff_params = feat_config.asdict()
>>> # Exec function source
>>> masked_chip, num_kpts, kpts, vecs = ut.exec_func_src(
>>>     gen_feat_worker, key_list=['masked_chip', 'num_kpts', 'kpts', 'vecs'],
>>>     sentinal='num_kpts = kpts.shape[0]')
>>> result = ('(num_kpts, kpts, vecs) = %s' % (ut.repr2((num_kpts, kpts, vecs)),))
>>> print(result)
>>> ut.quit_if_noshow()
>>> import wbia.plottool as pt
>>> from wbia.plottool.interactions import ExpandableInteraction
>>> interact = ExpandableInteraction()
>>> interact.append_plot(pt.interact_keypoints.KeypointInteraction(masked_chip, kpts, vecs))
>>> interact.append_plot(lambda **kwargs: pt.plot_score_histograms([vt.get_scales(kpts)], **kwargs))
>>> interact.start()
>>> ut.show_if_requested()
wbia.core_annots.gen_featweight_worker(kpts, probchip, chipsize)[source]

Function to be parallelized by multiprocessing / joblib / whatever. Must take in one argument to be used by multiprocessing.map_async

Parameters
  • kpts

  • probchip

  • chipsize

CommandLine:

python -m wbia.core_annots –test-gen_featweight_worker –show python -m wbia.core_annots –test-gen_featweight_worker –show –dpath figures –save ~/latex/crall-candidacy-2015/figures/gen_featweight.jpg python -m wbia.core_annots –test-gen_featweight_worker –show –db PZ_MTEST –qaid_list=1,2,3,4,5,6,7,8,9

Doctest:
>>> # xdoctest: +REQUIRES(module:wbia_cnn)
>>> from wbia.core_annots import *  # NOQA
>>> #test_featweight_worker()
>>> ibs, depc, aid_list = testdata_core()
>>> aid_list = aid_list[0:1]
>>> config = {'dim_size': 450, 'resize_dim': 'area', 'smooth_thresh': 0, 'smooth_ksize': 0}
>>> probchip = depc.get('probchip', aid_list, 'img', config=config)[0]
>>> chipsize = depc.get('chips', aid_list, ('width', 'height'), config=config)[0]
>>> kpts = depc.get('feat', aid_list, 'kpts', config=config)[0]
>>> weights = gen_featweight_worker(kpts, probchip, chipsize)
>>> assert np.all(weights <= 1.0), 'weights cannot be greater than 1'
>>> chip = depc.get('chips', aid_list, 'img', config=config)[0]
>>> ut.quit_if_noshow()
>>> import wbia.plottool as pt
>>> fnum = 1
>>> pnum_ = pt.make_pnum_nextgen(1, 3)
>>> pt.figure(fnum=fnum, doclf=True)
>>> pt.imshow(chip, pnum=pnum_(0), fnum=fnum)
>>> pt.imshow(probchip, pnum=pnum_(2), fnum=fnum)
>>> pt.imshow(chip, pnum=pnum_(1), fnum=fnum)
>>> color_list = pt.draw_kpts2(kpts, weights=weights, ell_alpha=.3)
>>> cb = pt.colorbar(weights, color_list)
>>> cb.set_label('featweights')
>>> pt.show_if_requested()
wbia.core_annots.get_annot_lrudfb_bools(ibs, aid_list)[source]
wbia.core_annots.get_annot_lrudfb_unit_vector(ibs, aid_list)[source]
wbia.core_annots.make_configured_annots(ibs, qaids, daids, qannot_cfg, dannot_cfg, preload=False, return_view_cache=False)[source]

Configures annotations so they can be sent to the vsone vt.matching procedure.

CommandLine:

python -m wbia.core_annots make_configured_annots

Doctest:
>>> from wbia.core_annots import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb('testdb1')
>>> qannot_cfg = dannot_cfg = ut.hashdict({})
>>> qaids = [1, 2]
>>> daids = [3, 4]
>>> preload = True
>>> configured_lazy_annots, configured_annot_views = make_configured_annots(
>>>     ibs, qaids, daids, qannot_cfg, dannot_cfg, preload=False,
>>>     return_view_cache=True,
>>> )
>>> aid_dict = configured_lazy_annots[qannot_cfg]
>>> annot_views = configured_annot_views[qannot_cfg]
>>> annot = aid_dict[1]
>>> assert len(annot_views._cache) == 0
>>> view = annot['view']
>>> kpts = annot['kpts']
>>> assert len(annot_views._cache) == 2
wbia.core_annots.make_hog_block_image(hog, config=None)[source]

References

https://github.com/scikit-image/scikit-image/blob/master/skimage/feature/_hog.py

wbia.core_annots.postprocess_mask(mask, thresh=20, kernel_size=20)[source]
Parameters

mask (ndarray) –

Returns

mask2

Return type

ndarray

CommandLine:

python -m wbia.core_annots –exec-postprocess_mask –cnn –show –aid=1 –db PZ_MTEST python -m wbia –tf postprocess_mask –cnn –show –db PZ_MTEST –adapteq=True

SeeAlso:

python -m wbia_cnn –tf generate_species_background_mask –show –db PZ_Master1 –aid 9970

Ignore:

input_tuple = aid_list tablename = ‘probchip’ config = full_config rowid_kw = dict(config=config)

Doctest:
>>> # xdoctest: +REQUIRES(module:wbia_cnn, --slow)
>>> from wbia.core_annots import *  # NOQA
>>> import wbia.plottool as pt
>>> ibs, depc, aid_list = testdata_core()
>>> config = ChipConfig.from_argv_dict()
>>> probchip_config = ProbchipConfig(smooth_thresh=None)
>>> chip = ibs.depc_annot.get('chips', aid_list, 'img', config)[0]
>>> mask = ibs.depc_annot.get('probchip', aid_list, 'img', probchip_config)[0]
>>> mask2 = postprocess_mask(mask)
>>> ut.quit_if_noshow()
>>> fnum = 1
>>> pt.imshow(chip, pnum=(1, 3, 1), fnum=fnum, xlabel=str(chip.shape))
>>> pt.imshow(mask, pnum=(1, 3, 2), fnum=fnum, title='before', xlabel=str(mask.shape))
>>> pt.imshow(mask2, pnum=(1, 3, 3), fnum=fnum, title='after', xlabel=str(mask2.shape))
>>> ut.show_if_requested()
wbia.core_annots.rf_probchips(ibs, aids, species, inputchip_fpaths, pad, smooth_thresh, smooth_ksize)[source]
wbia.core_annots.testdata_core(defaultdb='testdb1', size=2)[source]

wbia.core_images

IBEIS CORE IMAGE.

Defines the core dependency cache supported by the image analysis api

Extracts detection results from images and applies additional processing automatically

Ex

python -m wbia.control.IBEISControl –test-show_depc_image_graph –show python -m wbia.control.IBEISControl –test-show_depc_image_graph –show –reduced

TODO:

Notes

HOW TO DESIGN INTERACTIVE PLOTS:

decorate as interactive

depc.get_property(recompute=True)

instead of calling preproc as a generator and then adding, calls preproc and passes in a callback function. preproc spawns interaction and must call callback function when finished.

callback function adds the rowids to the table.

Needed Tables:

Detections QualityClassifier ViewpointClassifier

class wbia.core_images.AoIConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_images.CameraTrapEXIFConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_images.Chip2Config(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_images.Classifier2Config(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_images.ClassifierConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_images.ClassifierLocalizationsConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_images.DetectorConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_images.Feature2Config(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_images.FeatureConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_images.LabelerConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_images.LocalizerConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_images.LocalizerOriginalConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_images.ThumbnailConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

class wbia.core_images.WebSrcConfig(**kwargs)[source]

Bases: wbia.dtool.base.Config

wbia.core_images.compute_cameratrap_exif(depc, gid_list, config=None)[source]
wbia.core_images.compute_cameratrap_exif_worker(gpath, orient, bottom=80, psm=7, oem=1, whitelist='0123456789°CF/:')[source]
wbia.core_images.compute_classifications(depc, gid_list, config=None)[source]

Extract the detections for a given input image.

Parameters
  • depc (wbia.depends_cache.DependencyCache) –

  • gid_list (list) – list of image rowids

  • config (dict) – (default = None)

Yields

(float, str) – tup

CommandLine:

wbia compute_classifications

Example

>>> # DISABLE_DOCTEST
>>> from wbia.core_images import *  # NOQA
>>> import wbia
>>> defaultdb = 'PZ_MTEST'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> depc = ibs.depc_image
>>> gid_list = ibs.get_valid_gids()[0:8]
>>> # depc.delete_property('classifier', gid_list)
>>> results = depc.get_property('classifier', gid_list, None)
>>> print(results)
>>> depc = ibs.depc_image
>>> config = {'classifier_algo': 'svm'}
>>> depc.delete_property('classifier', gid_list, config=config)
>>> results = depc.get_property('classifier', gid_list, None, config=config)
>>> print(results)
>>> config = {'classifier_algo': 'svm', 'classifier_weight_filepath': 'localizer-zebra-10'}
>>> depc.delete_property('classifier', gid_list, config=config)
>>> results = depc.get_property('classifier', gid_list, None, config=config)
>>> print(results)
wbia.core_images.compute_classifications2(depc, gid_list, config=None)[source]

Extract the multi-class classifications for a given input image.

Parameters
  • depc (wbia.depends_cache.DependencyCache) –

  • gid_list (list) – list of image rowids

  • config (dict) – (default = None)

Yields

(np.ndarray, np.ndarray) – tup

CommandLine:

wbia compute_classifications2

Example

>>> # DISABLE_DOCTEST
>>> from wbia.core_images import *  # NOQA
>>> import wbia
>>> defaultdb = 'PZ_MTEST'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> depc = ibs.depc_image
>>> gid_list = ibs.get_valid_gids()[0:8]
>>> # depc.delete_property('classifier_two', gid_list)
>>> results = depc.get_property('classifier_two', gid_list, None)
>>> print(results)
wbia.core_images.compute_detections(depc, gid_list, config=None)[source]

Extract the detections for a given input image.

Parameters
  • depc (wbia.depends_cache.DependencyCache) –

  • gid_list (list) – list of image rowids

  • config (dict) – (default = None)

Yields

(float, np.ndarray, np.ndarray, np.ndarray, np.ndarray) – tup

CommandLine:

wbia compute_detections

Example

>>> # SLOW_DOCTEST
>>> # xdoctest: +SKIP
>>> from wbia.core_images import *  # NOQA
>>> import wbia
>>> defaultdb = 'PZ_MTEST'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> # dbdir = '/Users/bluemellophone/Desktop/GGR-IBEIS-TEST/'
>>> # dbdir = '/media/danger/GGR/GGR-IBEIS-TEST/'
>>> # ibs = wbia.opendb(dbdir=dbdir)
>>> depc = ibs.depc_image
>>> gid_list = ibs.get_valid_gids()[0:2]
>>> depc.delete_property('detections', gid_list)
>>> detects = depc.get_property('detections', gid_list, None)
>>> print(detects)
wbia.core_images.compute_features(depc, gid_list, config=None)[source]

Compute features on images using pre-trained state-of-the-art models in Keras.

Parameters
  • depc (wbia.depends_cache.DependencyCache) –

  • gid_list (list) – list of image rowids

  • config (dict) – (default = None)

Yields

(np.ndarray, ) – tup

CommandLine:

wbia compute_features

CommandLine:

python -m wbia.core_images compute_features –show

Example

>>> # DISABLE_DOCTEST
>>> from wbia.core_images import *  # NOQA
>>> import wbia
>>> defaultdb = 'PZ_MTEST'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> depc = ibs.depc_image
>>> print(depc.get_tablenames())
>>> gid_list = ibs.get_valid_gids()[:16]
>>> config = {'model': 'vgg16'}
>>> depc.delete_property('features', gid_list, config=config)
>>> features = depc.get_property('features', gid_list, 'vector', config=config)
>>> print(features)
>>> config = {'model': 'vgg19'}
>>> depc.delete_property('features', gid_list, config=config)
>>> features = depc.get_property('features', gid_list, 'vector', config=config)
>>> print(features)
>>> config = {'model': 'resnet'}
>>> depc.delete_property('features', gid_list, config=config)
>>> features = depc.get_property('features', gid_list, 'vector', config=config)
>>> print(features)
>>> config = {'model': 'inception'}
>>> depc.delete_property('features', gid_list, config=config)
>>> features = depc.get_property('features', gid_list, 'vector', config=config)
>>> print(features)
wbia.core_images.compute_localizations(depc, loc_orig_id_list, config=None)[source]

Extract the localizations for a given input image.

Parameters
  • depc (wbia.depends_cache.DependencyCache) –

  • gid_list (list) – list of image rowids

  • config (dict) – (default = None)

Yields

(float, np.ndarray, np.ndarray, np.ndarray, np.ndarray) – tup

CommandLine:

wbia compute_localizations

CommandLine:

python -m wbia.core_images compute_localizations –show

Example

>>> # DISABLE_DOCTEST
>>> from wbia.core_images import *  # NOQA
>>> import wbia
>>> defaultdb = 'PZ_MTEST'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> depc = ibs.depc_image
>>> print(depc.get_tablenames())
>>> gid_list = ibs.get_valid_gids()[:16]
>>> config = {'algo': 'lightnet', 'nms': True}
>>> # depc.delete_property('localizations', gid_list, config=config)
>>> detects = depc.get_property('localizations', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'combined': True}
>>> # depc.delete_property('localizations', gid_list, config=config)
>>> detects = depc.get_property('localizations', gid_list, 'bboxes', config=config)
>>> print(detects)
wbia.core_images.compute_localizations_chips(depc, loc_id_list, config=None)[source]

Extract the detections for a given input image.

Parameters
  • depc (wbia.depends_cache.DependencyCache) –

  • loc_id_list (list) – list of localization rowids

  • config (dict) – (default = None)

Yields

(float, str) – tup

CommandLine:

wbia compute_localizations_chips

Example

>>> # DISABLE_DOCTEST
>>> from wbia.core_images import *  # NOQA
>>> import wbia
>>> defaultdb = 'PZ_MTEST'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> depc = ibs.depc_image
>>> gid_list = ibs.get_valid_gids()[0:8]
>>> config = {'combined': True, 'localization_chip_masking': True}
>>> # depc.delete_property('localizations_chips', gid_list, config=config)
>>> results = depc.get_property('localizations_chips', gid_list, None, config=config)
>>> print(results)
>>> config = {'combined': True, 'localization_chip_masking': False}
>>> # depc.delete_property('localizations_chips', gid_list, config=config)
>>> results = depc.get_property('localizations_chips', gid_list, None, config=config)
>>> print(results)
wbia.core_images.compute_localizations_classifications(depc, loc_id_list, config=None)[source]

Extract the detections for a given input image.

Parameters
  • depc (wbia.depends_cache.DependencyCache) –

  • loc_id_list (list) – list of localization rowids

  • config (dict) – (default = None)

Yields

(float, str) – tup

CommandLine:

wbia compute_localizations_classifications

Example

>>> # DISABLE_DOCTEST
>>> from wbia.core_images import *  # NOQA
>>> import wbia
>>> defaultdb = 'PZ_MTEST'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> depc = ibs.depc_image
>>> gid_list = ibs.get_valid_gids()[0:8]
>>> config = {'algo': 'yolo'}
>>> # depc.delete_property('localizations_classifier', gid_list, config=config)
>>> results = depc.get_property('localizations_classifier', gid_list, None, config=config)
>>> print(results)
>>> config = {'algo': 'yolo', 'classifier_masking': True}
>>> # depc.delete_property('localizations_classifier', gid_list, config=config)
>>> results = depc.get_property('localizations_classifier', gid_list, None, config=config)
>>> print(results)
>>>
>>> depc = ibs.depc_image
>>> gid_list = list(set(ibs.get_imageset_gids(ibs.get_imageset_imgsetids_from_text('TEST_SET'))))
>>> config = {'combined': True, 'classifier_algo': 'svm', 'classifier_weight_filepath': None}
>>> # depc.delete_property('localizations_classifier', gid_list, config=config)
>>> results = depc.get_property('localizations_classifier', gid_list, None, config=config)
>>> print(results)
>>>
>>> config = {'combined': True, 'classifier_algo': 'svm', 'classifier_weight_filepath': 'localizer-zebra-10'}
>>> # depc.delete_property('localizations_classifier', gid_list, config=config)
>>> results = depc.get_property('localizations_classifier', gid_list, None, config=config)
>>> print(results)
>>>
>>> config = {'combined': True, 'classifier_algo': 'svm', 'classifier_weight_filepath': 'localizer-zebra-50'}
>>> results = depc.get_property('localizations_classifier', gid_list, None, config=config)
>>> print(results)
>>>
>>> config = {'combined': True, 'classifier_algo': 'svm', 'classifier_weight_filepath': 'localizer-zebra-100'}
>>> results = depc.get_property('localizations_classifier', gid_list, None, config=config)
>>> print(results)
wbia.core_images.compute_localizations_features(depc, loc_id_list, config=None)[source]

Compute features on images using pre-trained state-of-the-art models in Keras.

Parameters
  • depc (wbia.depends_cache.DependencyCache) –

  • gid_list (list) – list of image rowids

  • config (dict) – (default = None)

Yields

(np.ndarray, ) – tup

CommandLine:

wbia compute_localizations_features

CommandLine:

python -m wbia.core_images compute_localizations_features –show

Example

>>> # DISABLE_DOCTEST
>>> from wbia.core_images import *  # NOQA
>>> import wbia
>>> defaultdb = 'PZ_MTEST'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> depc = ibs.depc_image
>>> print(depc.get_tablenames())
>>> gid_list = ibs.get_valid_gids()[:16]
>>> config = {'feature2_algo': 'vgg16', 'combined': True}
>>> depc.delete_property('localizations_features', gid_list, config=config)
>>> features = depc.get_property('localizations_features', gid_list, 'vector', config=config)
>>> print(features)
>>> config = {'feature2_algo': 'vgg19', 'combined': True}
>>> depc.delete_property('localizations_features', gid_list, config=config)
>>> features = depc.get_property('localizations_features', gid_list, 'vector', config=config)
>>> print(features)
>>> config = {'feature2_algo': 'resnet', 'combined': True}
>>> depc.delete_property('localizations_features', gid_list, config=config)
>>> features = depc.get_property('localizations_features', gid_list, 'vector', config=config)
>>> print(features)
>>> config = {'feature2_algo': 'inception', 'combined': True}
>>> depc.delete_property('localizations_features', gid_list, config=config)
>>> features = depc.get_property('localizations_features', gid_list, 'vector', config=config)
>>> print(features)
wbia.core_images.compute_localizations_interest(depc, loc_id_list, config=None)[source]

Extract the detections for a given input image.

Parameters
  • depc (wbia.depends_cache.DependencyCache) –

  • loc_id_list (list) – list of localization rowids

  • config (dict) – (default = None)

Yields

(float, str) – tup

CommandLine:

wbia compute_localizations_labels

Example

>>> # DISABLE_DOCTEST
>>> from wbia.core_images import *  # NOQA
>>> import wbia
>>> defaultdb = 'PZ_MTEST'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> depc = ibs.depc_image
>>> gid_list = ibs.get_valid_gids()[0:100]
>>> depc.delete_property('labeler', gid_list)
>>> results = depc.get_property('labeler', gid_list, None)
>>> results = depc.get_property('labeler', gid_list, 'species')
>>> print(results)
wbia.core_images.compute_localizations_labels(depc, loc_id_list, config=None)[source]

Extract the detections for a given input image.

Parameters
  • depc (wbia.depends_cache.DependencyCache) –

  • loc_id_list (list) – list of localization rowids

  • config (dict) – (default = None)

Yields

(float, str) – tup

CommandLine:

python -m wbia.core_images –exec-compute_localizations_labels

Example

>>> # DISABLE_DOCTEST
>>> from wbia.core_images import *  # NOQA
>>> import wbia
>>> defaultdb = 'PZ_MTEST'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> depc = ibs.depc_image
>>> gid_list = ibs.get_valid_gids()[0:10]
>>> config = {'labeler_algo': 'densenet', 'labeler_weight_filepath': 'giraffe_v1'}
>>> # depc.delete_property('localizations_labeler', aid_list)
>>> results = depc.get_property('localizations_labeler', gid_list, None, config=config)
>>> print(results)
>>> config = {'labeler_weight_filepath': 'candidacy'}
>>> # depc.delete_property('localizations_labeler', aid_list)
>>> results = depc.get_property('localizations_labeler', gid_list, None, config=config)
>>> print(results)
wbia.core_images.compute_localizations_original(depc, gid_list, config=None)[source]

Extract the localizations for a given input image.

Parameters
  • depc (wbia.depends_cache.DependencyCache) –

  • gid_list (list) – list of image rowids

  • config (dict) – (default = None)

Yields

(float, np.ndarray, np.ndarray, np.ndarray, np.ndarray) – tup

CommandLine:

wbia compute_localizations_original

CommandLine:

python -m wbia.core_images compute_localizations_original –show

Example

>>> # DISABLE_DOCTEST
>>> from wbia.core_images import *  # NOQA
>>> import wbia
>>> defaultdb = 'PZ_MTEST'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> depc = ibs.depc_image
>>> print(depc.get_tablenames())
>>> gid_list = ibs.get_valid_gids()[:16]
>>> config = {'algo': 'azure', 'config_filepath': None}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': 'darknet', 'config_filepath': 'pretrained-v2-pascal'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': 'darknet', 'config_filepath': 'pretrained-v2-large-pascal'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': 'darknet', 'config_filepath': 'pretrained-tiny-pascal'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': 'darknet', 'config_filepath': 'pretrained-v2-large-coco'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': 'darknet', 'config_filepath': 'pretrained-tiny-coco'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': 'yolo'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': 'lightnet'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': 'rf'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': 'selective-search'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': 'selective-search-rcnn'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': 'faster-rcnn', 'config_filepath': 'pretrained-vgg-pascal'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': 'faster-rcnn', 'config_filepath': 'pretrained-zf-pascal'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': 'faster-rcnn', 'config_filepath': 'pretrained-vgg-ilsvrc'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': 'faster-rcnn', 'config_filepath': 'pretrained-zf-ilsvrc'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': 'ssd', 'config_filepath': 'pretrained-300-pascal'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': 'ssd', 'config_filepath': 'pretrained-512-pascal'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': 'ssd', 'config_filepath': 'pretrained-300-pascal-plus'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': 'ssd', 'config_filepath': 'pretrained-512-pascal-plus'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': 'ssd', 'config_filepath': 'pretrained-300-coco'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': 'ssd', 'config_filepath': 'pretrained-512-coco'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': 'ssd', 'config_filepath': 'pretrained-300-ilsvrc'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': 'ssd', 'config_filepath': 'pretrained-500-ilsvrc'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
>>> config = {'algo': '_COMBINED'}
>>> depc.delete_property('localizations_original', gid_list, config=config)
>>> detects = depc.get_property('localizations_original', gid_list, 'bboxes', config=config)
>>> print(detects)
wbia.core_images.compute_thumbnails(depc, gid_list, config=None)[source]

Compute the thumbnail for a given input image.

Parameters
  • depc (wbia.depends_cache.DependencyCache) –

  • gid_list (list) – list of image rowids

  • config (dict) – (default = None)

Yields

(uri, int, int) – tup

CommandLine:

wbia –tf compute_thumbnails –show –db PZ_MTEST

Example

>>> # ENABLE_DOCTEST
>>> # xdoctest: +REQUIRES(--weird)
>>> from wbia.core_images import *  # NOQA
>>> import wbia
>>> defaultdb = 'testdb1'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> depc = ibs.depc_image
>>> gid_list = ibs.get_valid_gids()[0:10]
>>> thumbs = depc.get_property('thumbnails', gid_list, 'img', config={'thumbsize': 221}, recompute=True)
>>> # xdoctest: +REQUIRES(--show)
>>> import wbia.plottool as pt
>>> pt.quit_if_noshow()
>>> iteract_obj = pt.interact_multi_image.MultiImageInteraction(thumbs, nPerPage=4)
>>> iteract_obj.start()
>>> pt.show_if_requested()
wbia.core_images.compute_web_src(depc, gid_list, config=None)[source]

Compute the web src

Parameters
  • depc (wbia.depends_cache.DependencyCache) –

  • gid_list (list) – list of image rowids

  • config (dict) – (default = None)

Yields

(str) – tup

CommandLine:

wbia –tf compute_web_src –show –db PZ_MTEST

Example

>>> # ENABLE_DOCTEST
>>> from wbia.core_images import *  # NOQA
>>> import wbia
>>> defaultdb = 'testdb1'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> depc = ibs.depc_image
>>> gid_list = ibs.get_valid_gids()[0:10]
>>> thumbs = depc.get_property('web_src', gid_list, 'src', recompute=True)
>>> thumb = thumbs[0]
>>> hash_str = ut.hash_data(thumb)
>>> assert hash_str in ['yerctlgfqosrhmjpqvkbmnoocagfqsna', 'wcuppmpowkvhfmfcnrxdeedommihexfu'], 'Found %r' % (hash_str, )
wbia.core_images.draw_thumb_helper(thumbsize, gpath, orient, bbox_list, theta_list, interest_list)[source]
wbia.core_images.draw_web_src(gpath, orient)[source]
wbia.core_images.get_localization_aoi2(ibs, loc_id_list, target_size=(192, 192))[source]
wbia.core_images.get_localization_chips(ibs, loc_id_list, target_size=(128, 128), axis_aligned=False)[source]
wbia.core_images.get_localization_chips_worker(gid, img, bbox_list, theta_list, target_size, axis_aligned=False)[source]
wbia.core_images.get_localization_masks(ibs, loc_id_list, target_size=(128, 128))[source]
wbia.core_images.get_localization_masks_worker(gid, img, bbox_list, theta_list, target_size)[source]
wbia.core_images.load_text(fpath)[source]
wbia.core_images.save_text(fpath, text)[source]

wbia.core_parts

Extracts parts chips from image and applies optional image normalizations.

wbia.core_parts.compute_part_chip(depc, part_rowid_list, config=None)[source]

Extracts the part chip from the bounding box

Parameters
  • depc (wbia.depends_cache.DependencyCache) –

  • part_rowid_list (list) – list of part rowids

  • config (dict) – (default = None)

Yields

(uri, int, int) – tup

CommandLine:

wbia –tf compute_part_chip

Doctest:
>>> from wbia.core_parts import *  # NOQA
>>> import wbia
>>> import random
>>> defaultdb = 'testdb1'
>>> ibs = wbia.opendb(defaultdb=defaultdb)
>>> depc = ibs.depc_part
>>> config = {'dim_size': None}
>>> aid_list = ibs.get_valid_aids()
>>> aid_list = aid_list[:10]
>>> bbox_list = ibs.get_annot_bboxes(aid_list)
>>> bbox_list = [
>>>     (xtl + 100, ytl + 100, w - 100, h - 100)
>>>     for xtl, ytl, w, h in bbox_list
>>> ]
>>> part_rowid_list = ibs.add_parts(aid_list, bbox_list=bbox_list)
>>> chips = depc.get_property('pchips', part_rowid_list, 'img', config=config)
>>> for (xtl, ytl, w, h), chip in zip(bbox_list, chips):
>>>     assert chip.shape == (h, w, 3)
>>> ibs.delete_parts(part_rowid_list)

wbia.demodata

wbia.dev

wbia.filter_configs

wbia.images

class wbia.images.ImageIBEISPropertyInjector(name, bases, dct)[source]

Bases: type

class wbia.images.ImageSetAttrInjector(name, bases, dct)[source]

Bases: type

Example

>>> # SCRIPT
>>> from wbia import _wbia_object
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> objname = 'imageset'
>>> blacklist = []
>>> _wbia_object._find_wbia_attrs(ibs, objname, blacklist)
class wbia.images.ImageSets(gsids, ibs, config=None)[source]

Bases: wbia._wbia_object.ObjectList1D

Represents a group of annotations. Efficiently accesses properties from a database using lazy evaluation.

CommandLine:

python -m wbia.images ImageSets

Example

>>> # DISABLE_DOCTEST
>>> from wbia.images import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> gsids = ibs._get_all_imgsetids()
>>> self = ImageSets(gsids, ibs)
>>> print(self)
<ImageSets(num=13)>
property aids
property annots
property configid
property custom_filtered_aids
property duration
property end_time_posix
property fraction_annotmatch_reviewed
property fraction_imgs_reviewed
property fraction_names_with_exemplar
property gids
property gps_lats
property gps_lons
property gsgrids
property image_uuids
property images
property imgsetids_from_text
property imgsetids_from_uuid
property isoccurrence
property name_uuids
property nids
property note
property notes
property num_aids
property num_annotmatch_reviewed
property num_annots_reviewed
property num_gids
property num_imgs_reviewed
property num_names_with_exemplar
property percent_annotmatch_reviewed_str
property percent_imgs_reviewed_str
property percent_names_with_exemplar_str
property processed_flags
rrr()

Dynamic module reloading

property shipped_flags
property smart_waypoint_ids
property smart_xml_contents
property smart_xml_fnames
property start_time_posix
property text
property uuid
property uuids
class wbia.images.Images(rowids, ibs, config=None, caching=False, asarray=False)[source]

Bases: wbia._wbia_object.ObjectList1D

Represents a group of annotations. Efficiently accesses properties from a database using lazy evaluation.

CommandLine:

python -m wbia.images Images –show

Example

>>> # DISABLE_DOCTEST
>>> from wbia.images import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> gids = ibs.get_valid_gids()
>>> g = self = images = Images(gids, ibs)
>>> print(g.widths)
>>> print(g)
<Images(num=13)>
property aids
property aids_of_species
property annot_uuids
property annot_uuids_of_species
property annotation_bboxes
property annotation_thetas
property annots
append_to_imageset(imageset_text)[source]
property contributor_rowid
property contributor_tag
property datetime
property datetime_str
property detect_confidence
property detectpaths
property enabled
property exts
property gid
property gids
property glrids
property gnames
property gps
property gps2
property gsgrids
property heights
property imagesettext
property imgset_uuids
property imgsetids
property lat
property location_codes
property lon
property missing_uuid
property name_uuids
property nids
property notes
property num_annotations
property orientation
property orientation_str
property party_rowids
property party_tag
property paths
remove_from_imageset(imageset_text)[source]
property reviewed
rrr()

Dynamic module reloading

show(*args, **kwargs)[source]
property sizes
property species_rowids
property species_uuids
property thumbpath
property thumbtup
property time_statstr
property timedelta_posix
property unixtime
property unixtime2
property unixtime_asfloat
property uris
property uris_original
property uuids
property widthsimgdata
wbia.images.images(ibs, gids=None, uuids=None, **kwargs)[source]

Makes an Images object

wbia.images.imagesets(ibs, gsids=None, text=None)[source]

wbia.params

DEPRICATE THIS ENTIRE FILE

this module lists most of the command line args available for use. there are still many cases where util_arg.get_argval and util_arg.get_argflag are used instead of this module. Those command line arguments will not be represented here and they should eventually be integrated into this module (hopefully automagically)

TODO: nnkj/enerate this module automagically from

import utool as ut utool_parse_codeblock = ut.util_arg.autogen_argparse_block(extra_args=parsed_args) ut.util_arg.reset_argrecord() import wbia parsed_args = ut.util_arg.parse_used_arg_flags_and_vals(wbia, recursive=True) wbia_parse_codeblock = ut.util_arg.autogen_argparse_block(extra_args=parsed_args)

ut.util_arg.autogenerate_parse_py([utool_parse_codeblock, wbia_parse_codeblock])

utool_parse_codeblock ut.util_arg

print(parse_codeblock)

wbia.params.parse_args()[source]

wbia.tag_funcs

wbia.tag_funcs.append_annot_case_tags(ibs, aid_list, tag_list)[source]

Generally appends tags to annotations. Careful not to introduce too many random tags. Maybe we should just let that happen and introduce tag-aliases

Note: this is more of a set add rather than a list append

TODO: remove

wbia.tag_funcs.consolodate_annotmatch_tags(old_tags)[source]
wbia.tag_funcs.export_tagged_chips(ibs, aid_list, dpath='.')[source]

DEPRICATE

CommandLine:

python -m wbia.tag_funcs –exec-export_tagged_chips –tags Hard interesting needswork –db PZ_Master1 python -m wbia.tag_funcs –exec-export_tagged_chips –logic=or –any_startswith quality occlusion –has_any lighting needswork interesting hard –db GZ_Master1 –dpath=/media/raid python -m wbia.tag_funcs –exec-export_tagged_chips –db GZ_Master1 –min_num=1 –dpath /media/raid

Example

>>> # SCRIPT
>>> from wbia.tag_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> kwargs = ut.argparse_dict(ut.get_kwdefaults2(filterflags_general_tags), type_hint=ut.ddict(list, logic=str))
>>> ut.print_dict(kwargs, 'filter args')
>>> aid_list = ibs.filter_annots_by_tags(**kwargs)
>>> print('len(aid_list) = %r' % (len(aid_list),))
>>> dpath = ut.get_argval('--dpath', default='')
>>> all_tags = ut.flatten(ibs.get_annot_all_tags(aid_list))
>>> filtered_tag_hist = ut.dict_hist(all_tags)
>>> ut.print_dict(filtered_tag_hist, key_order_metric='val')
>>> export_tagged_chips(ibs, aid_list, dpath)
wbia.tag_funcs.filter_aidpairs_by_tags(ibs, has_any=None, has_all=None, min_num=None, max_num=None, am_rowids=None)[source]

list(zip(aid_pairs, undirected_tags))

wbia.tag_funcs.filter_annotmatch_by_tags(ibs, annotmatch_rowids=None, **kwargs)[source]

ignores case

Parameters
  • ibs (IBEISController) – wbia controller object

  • flags

Returns

list

CommandLine:

python -m wbia.tag_funcs –exec-filter_annotmatch_by_tags –show python -m wbia.tag_funcs –exec-filter_annotmatch_by_tags –show –db PZ_Master1 –min-num=1 python -m wbia.tag_funcs –exec-filter_annotmatch_by_tags –show –db PZ_Master1 –tags JoinCase python -m wbia.tag_funcs –exec-filter_annotmatch_by_tags –show –db PZ_Master1 –tags SplitCase python -m wbia.tag_funcs –exec-filter_annotmatch_by_tags –show –db PZ_Master1 –tags occlusion python -m wbia.tag_funcs –exec-filter_annotmatch_by_tags –show –db PZ_Master1 –tags viewpoint python -m wbia.tag_funcs –exec-filter_annotmatch_by_tags –show –db PZ_Master1 –tags SceneryMatch python -m wbia.tag_funcs –exec-filter_annotmatch_by_tags –show –db PZ_Master1 –tags Photobomb

python -m wbia.tag_funcs –exec-filter_annotmatch_by_tags –show –db GZ_Master1 –tags needswork

Example

>>> # DISABLE_DOCTEST
>>> from wbia.tag_funcs import *  # NOQA
>>> import wbia
>>> #ibs = wbia.opendb(defaultdb='testdb1')
>>> ibs = wbia.opendb(defaultdb='PZ_Master1')
>>> #tags = ['Photobomb', 'SceneryMatch']
>>> has_any = ut.get_argval('--tags', type_=list, default=['SceneryMatch', 'Photobomb'])
>>> min_num = ut.get_argval('--min_num', type_=int, default=1)
>>> prop = has_any[0]
>>> filtered_annotmatch_rowids = filter_annotmatch_by_tags(ibs, None, has_any=has_any, min_num=min_num)
>>> aid1_list = np.array(ibs.get_annotmatch_aid1(filtered_annotmatch_rowids))
>>> aid2_list = np.array(ibs.get_annotmatch_aid2(filtered_annotmatch_rowids))
>>> aid_pairs = np.vstack([aid1_list, aid2_list]).T
>>> # Dont double count
>>> xs = vt.find_best_undirected_edge_indexes(aid_pairs)
>>> aid1_list = aid1_list.take(xs)
>>> aid2_list = aid2_list.take(xs)
>>> valid_tags_list = ibs.get_annotmatch_case_tags(filtered_annotmatch_rowids)
>>> print('valid_tags_list = %s' % (ut.repr2(valid_tags_list, nl=1),))
>>> #
>>> print('Aid pairs with has_any=%s' % (has_any,))
>>> print('Aid pairs with min_num=%s' % (min_num,))
>>> print('aid_pairs = ' + ut.repr2(list(zip(aid1_list, aid2_list))))
>>> # Show timedelta info
>>> ut.quit_if_noshow()
>>> timedelta_list = ibs.get_annot_pair_timedelta(aid1_list, aid2_list)
>>> import wbia.plottool as pt
>>> pt.draw_timedelta_pie(timedelta_list, label='timestamp of tags=%r' % (has_any,))
>>> ut.show_if_requested()
wbia.tag_funcs.filter_annots_by_tags(ibs, aid_list=None, **kwargs)[source]

Filter / Find / Search for annotations with particular tags

CommandLine:

python -m wbia.tag_funcs –exec-filter_annots_by_tags –helpx python -m wbia.tag_funcs –exec-filter_annots_by_tags –db GZ_Master1 python -m wbia.tag_funcs –exec-filter_annots_by_tags –db GZ_Master1 –min_num=1 python -m wbia.tag_funcs –exec-filter_annots_by_tags –db GZ_Master1 –has_any=lighting –has_all=lighting:underexposed –show

SeeAlso:

python -m wbia.init.filter_annots –exec-filter_annots_general

Example

>>> # ENABLE_DOCTEST
>>> from wbia.tag_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> aid_list = ibs.get_valid_aids()
>>> kwargs = ut.argparse_dict(ut.get_kwdefaults2(filterflags_general_tags), type_hint=ut.ddict(list, logic=str))
>>> ut.print_dict(kwargs, 'filter args')
>>> aid_list = ibs.filter_annots_by_tags(aid_list, **kwargs)
>>> print('len(aid_list) = %r' % (len(aid_list),))
>>> # print results
>>> all_tags = ut.flatten(ibs.get_annot_all_tags(aid_list))
>>> filtered_tag_hist = ut.dict_hist(all_tags)
>>> ut.print_dict(filtered_tag_hist, key_order_metric='val')
>>> print('len(aid_list) = %r' % (len(aid_list),))
>>> print('sum(tags) = %r' % (sum(filtered_tag_hist.values()),))
>>> ut.quit_if_noshow()
>>> import wbia.viz.interact
>>> wbia.viz.interact.interact_chip.interact_multichips(ibs, aid_list)
>>> ut.show_if_requested()
wbia.tag_funcs.filterflags_annot_tags(ibs, aid_list, **kwargs)[source]

Filter / Find / Search for annotations with particular tags

wbia.tag_funcs.filterflags_general_tags(tags_list, has_any=None, has_all=None, has_none=None, min_num=None, max_num=None, any_startswith=None, any_endswith=None, any_match=None, none_match=None, logic='and')[source]

maybe integrate into utool? Seems pretty general

Parameters
  • tags_list (list) –

  • has_any (None) – (default = None)

  • has_all (None) – (default = None)

  • min_num (None) – (default = None)

  • max_num (None) – (default = None)

CommandLine:

python -m wbia.tag_funcs –exec-filterflags_general_tags python -m wbia.tag_funcs –exec-filterflags_general_tags:0 –helpx python -m wbia.tag_funcs –exec-filterflags_general_tags:0 python -m wbia.tag_funcs –exec-filterflags_general_tags:0 –none_match n python -m wbia.tag_funcs –exec-filterflags_general_tags:0 –has_none=n,o python -m wbia.tag_funcs –exec-filterflags_general_tags:1 python -m wbia.tag_funcs –exec-filterflags_general_tags:2

Example

>>> # DISABLE_DOCTEST
>>> from wbia.tag_funcs import *  # NOQA
>>> tags_list = [['v'], [], ['P'], ['P', 'o'], ['n', 'o',], [], ['n', 'N'], ['e', 'i', 'p', 'b', 'n'], ['q', 'v'], ['n'], ['n'], ['N']]
>>> kwargs = ut.argparse_dict(ut.get_kwdefaults2(filterflags_general_tags), type_hint=list)
>>> print('kwargs = %r' % (kwargs,))
>>> flags = filterflags_general_tags(tags_list, **kwargs)
>>> print(flags)
>>> result = ut.compress(tags_list, flags)
>>> print('result = %r' % (result,))

Example

>>> # ENABLE_DOCTEST
>>> from wbia.tag_funcs import *  # NOQA
>>> tags_list = [['v'], [], ['P'], ['P'], ['n', 'o',], [], ['n', 'N'], ['e', 'i', 'p', 'b', 'n'], ['n'], ['n'], ['N']]
>>> has_all = 'n'
>>> min_num = 1
>>> flags = filterflags_general_tags(tags_list, has_all=has_all, min_num=min_num)
>>> result = ut.compress(tags_list, flags)
>>> print('result = %r' % (result,))

Example

>>> # DISABLE_DOCTEST
>>> from wbia.tag_funcs import *  # NOQA
>>> tags_list = [['vn'], ['vn', 'no'], ['P'], ['P'], ['n', 'o',], [], ['n', 'N'], ['e', 'i', 'p', 'b', 'n'], ['n'], ['n', 'nP'], ['NP']]
>>> kwargs = {
>>>     'any_endswith': 'n',
>>>     'any_match': None,
>>>     'any_startswith': 'n',
>>>     'has_all': None,
>>>     'has_any': None,
>>>     'has_none': None,
>>>     'max_num': 3,
>>>     'min_num': 1,
>>>     'none_match': ['P'],
>>> }
>>> flags = filterflags_general_tags(tags_list, **kwargs)
>>> filtered = ut.compress(tags_list, flags)
>>> result = ('result = %s' % (ut.repr2(filtered),))
result = [['vn', 'no'], ['n', 'o'], ['n', 'N'], ['n'], ['n', 'nP']]
wbia.tag_funcs.get_aidpair_tags(ibs, aid1_list, aid2_list, directed=True)[source]
Parameters
  • ibs (IBEISController) – wbia controller object

  • aid1_list (list) –

  • aid2_list (list) –

  • directed (bool) – (default = True)

Returns

tags_list

Return type

list

CommandLine:

python -m wbia.tag_funcs –exec-get_aidpair_tags –db PZ_Master1 –tags Hard interesting

Example

>>> # DISABLE_DOCTEST
>>> from wbia.tag_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> has_any = ut.get_argval('--tags', type_=list, default=None)
>>> min_num = ut.get_argval('--min_num', type_=int, default=1)
>>> aid_pairs = filter_aidpairs_by_tags(ibs, has_any=has_any, min_num=1)
>>> aid1_list = aid_pairs.T[0]
>>> aid2_list = aid_pairs.T[1]
>>> undirected_tags = get_aidpair_tags(ibs, aid1_list, aid2_list, directed=False)
>>> tagged_pairs = list(zip(aid_pairs.tolist(), undirected_tags))
>>> print(ut.repr2(tagged_pairs))
>>> tag_dict = ut.groupby_tags(tagged_pairs, undirected_tags)
>>> print(ut.repr2(tag_dict, nl=2))
>>> print(ut.repr2(ut.map_dict_vals(len, tag_dict)))
wbia.tag_funcs.get_annot_all_tags(ibs, aid_list=None)[source]
CommandLine:

python -m wbia.tag_funcs –exec-get_annot_all_tags –db GZ_Master1

Example

>>> # ENABLE_DOCTEST
>>> from wbia.tag_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> aid_list = ibs.get_valid_aids()
>>> all_tags = ut.flatten(ibs.get_annot_all_tags(aid_list))
>>> tag_hist = ut.dict_hist(all_tags)
>>> ut.print_dict(tag_hist)
wbia.tag_funcs.get_annot_annotmatch_tags(ibs, aid_list)[source]
Parameters
  • ibs (IBEISController) – wbia controller object

  • aid_list (list) – list of annotation rowids

Returns

annotmatch_tags_list

Return type

list

CommandLine:

python -m wbia.tag_funcs –exec-get_annot_annotmatch_tags –db GZ_Master1

Example

>>> # ENABLE_DOCTEST
>>> from wbia.tag_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> aid_list = ibs.get_valid_aids()
>>> all_tags = ut.flatten(get_annot_annotmatch_tags(ibs, aid_list))
>>> tag_hist = ut.dict_hist(all_tags)
>>> ut.print_dict(tag_hist)
wbia.tag_funcs.get_annot_case_tags(ibs, aid_list)[source]

returns list of tags. Use instead of get_annot_tag_text .. todo:: rename to get_annot_unary_tags

Parameters
  • ibs (IBEISController) – wbia controller object

  • aid_list (list) – list of annotation rowids

Returns

tags_list

Return type

list

CommandLine:

python -m wbia.tag_funcs –exec-get_annot_case_tags

Example

>>> # ENABLE_DOCTEST
>>> from wbia.tag_funcs import *  # NOQA
>>> from wbia.tag_funcs import _parse_tags # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> aid_list = ibs.get_valid_aids()
>>> tags_list = get_annot_case_tags(ibs, aid_list)
>>> result = ('tags_list = %s' % (str(tags_list),))
>>> print(result)
Ignore:

# FIXME incorrporate old tag notes aid_list = ibs.get_valid_aids() notes_list = ibs.get_annot_notes(aid_list) flags = [len(notes) > 0 for notes in notes_list] aid_list = ut.compress(aid_list, flags) notes_list = ut.compress(notes_list, flags)

import re notes_list = [note.replace(‘rfdetect’, ‘’) for note in notes_list] notes_list = [note.replace(‘<COMMA>’, ‘;’) for note in notes_list] notes_list = [note.replace(‘jpg’, ‘’) for note in notes_list] notes_list = [note.replace(‘<HARDCASE>’, ‘’) for note in notes_list] notes_list = [note.strip() for note in notes_list] notes_list = [re.sub(‘;;*’, ‘;’, note) for note in notes_list] notes_list = [note.strip(‘;’) for note in notes_list] notes_list = [note.strip(‘:’) for note in notes_list] notes_list = [note.strip() for note in notes_list]

flags = [len(notes) < 70 and len(notes) > 0 for notes in notes_list] aid_list = ut.compress(aid_list, flags) notes_list = ut.compress(notes_list, flags)

flags = [‘M;’ not in notes and ‘F;’ not in notes and ‘H1’ not in notes for notes in notes_list] flags = [ ‘M;’ not in notes and ‘F;’ not in notes and ‘H1’ not in notes for notes in notes_list] aid_list = ut.compress(aid_list, flags) notes_list = ut.compress(notes_list, flags)

flags = [‘aliases’ not in notes for notes in notes_list] aid_list = ut.compress(aid_list, flags) notes_list = ut.compress(notes_list, flags)

#flags = [not re.match(‘;d*;’, note) for note in notes_list] flags = [not re.match(r’dd*’, note) for note in notes_list] aid_list = ut.compress(aid_list, flags) notes_list = ut.compress(notes_list, flags)

flags = [not notes.startswith(‘Foal;’) for notes in notes_list] aid_list = ut.compress(aid_list, flags) notes_list = ut.compress(notes_list, flags)

old_tags_list = [_parse_tags(note) for note in notes_list]

old_tags = list(set(ut.flatten(old_tags_list))) old_tags = sorted([tag for tag in old_tags if not re.match(r’dd*’, tag)])

old_to_new = {

‘gash’: None, ‘pose’: ‘novelpose’, ‘vocalizing’: ‘novelpose’ ‘occlusion’: ‘occlusion’,

}

Ignore:

python -m wbia.tag_funcs –exec-filter_annotmatch_by_tags –show –db PZ_Master1 –tags viewpoint

wbia.tag_funcs.get_annot_prop(ibs, prop, aid_list)[source]

Annot tags

wbia.tag_funcs.get_annotmatch_case_tags(ibs, annotmatch_rowids)[source]
Parameters
  • ibs (IBEISController) – wbia controller object

  • annotmatch_rowids

Returns

filtered_aid_list

Return type

list

CommandLine:

python -m wbia.tag_funcs –exec-get_annotmatch_case_tags

Example

>>> # DISABLE_DOCTEST
>>> from wbia.tag_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='PZ_Master1')
>>> annotmatch_rowids = ibs._get_all_annotmatch_rowids()
>>> tags_list = get_annotmatch_case_tags(ibs, annotmatch_rowids)
>>> result = ('tags_list = %s' % (str(tags_list),))
>>> print(result)
tags_list = [[u'occlusion', u'pose', 'Hard', 'NonDistinct'], [], ['Hard']]
wbia.tag_funcs.get_annotmatch_other_prop(ibs, prop, annotmatch_rowids)[source]
wbia.tag_funcs.get_annotmatch_prop(ibs, prop, annotmatch_rowids)[source]

hacky getter for dynamic properties of annotmatches using notes table

Parameters
  • prop (str) –

  • annotmatch_rowids

Returns

filtered_aid_list

Return type

list

CommandLine:

python -m wbia.tag_funcs –exec-get_annotmatch_prop

Example

>>> # DISABLE_DOCTEST
>>> # Test setting and getting standard keys
>>> from wbia.tag_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> prop = 'hard'
>>> annotmatch_rowids = ibs._get_all_annotmatch_rowids()
>>> flag_list = get_annotmatch_prop(ibs, prop, annotmatch_rowids)
>>> flag_list = ('filtered_aid_list = %s' % (str(flag_list),))
>>> subset_rowids = annotmatch_rowids[::2]
>>> set_annotmatch_prop(ibs, prop, subset_rowids, [True] * len(subset_rowids))
>>> flag_list2 = get_annotmatch_prop(ibs, prop, annotmatch_rowids)
>>> print('flag_list2 = %r' % (flag_list2,))

Example

>>> # DISABLE_DOCTEST
>>> # Test setting and getting non-standard keys
>>> from wbia.tag_funcs import *  # NOQA
>>> import wbia
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> prop = 'occlusion'
>>> annotmatch_rowids = ibs._get_all_annotmatch_rowids()
>>> flag_list = get_annotmatch_prop(ibs, prop, annotmatch_rowids)
>>> flag_list = ('filtered_aid_list = %s' % (str(flag_list),))
>>> subset_rowids = annotmatch_rowids[1::2]
>>> subset_rowids1 = annotmatch_rowids[::2]
>>> set_annotmatch_prop(ibs, prop, subset_rowids1, [True] * len(subset_rowids))
>>> set_annotmatch_prop(ibs, 'pose', subset_rowids1, [True] * len(subset_rowids))
>>> flag_list2 = get_annotmatch_prop(ibs, prop, annotmatch_rowids)
>>> print('flag_list2 = %r' % (flag_list2,))
wbia.tag_funcs.get_annotmatch_standard_prop(ibs, prop, annotmatch_rowids)[source]
wbia.tag_funcs.get_available_annot_tags()[source]
wbia.tag_funcs.get_cate_categories()[source]
wbia.tag_funcs.get_textformat_tag_flags(prop, text_list)[source]

general text tag getter hack

wbia.tag_funcs.overwrite_annot_case_tags(ibs, aid_list, tag_list)[source]

Completely replaces annotation tags. BE VERY CAREFUL WITH THIS FUNCTION

wbia.tag_funcs.remove_all_annot_case_tags(ibs, aid_list)[source]
wbia.tag_funcs.remove_annot_case_tags(ibs, aid_list, tag_list)[source]
wbia.tag_funcs.rename_and_reduce_tags(ibs, annotmatch_rowids)[source]

Script to update tags to newest values

CommandLine:

python -m wbia.tag_funcs –exec-rename_and_reduce_tags –db PZ_Master1

Ignore:
>>> from wbia.tag_funcs import *  # NOQA
>>> import wbia
>>> #ibs = wbia.opendb(defaultdb='PZ_Master1')
>>> ibs = wbia.opendb(defaultdb='testdb1')
>>> annotmatch_rowids = filter_annotmatch_by_tags(ibs, min_num=1)
>>> rename_and_reduce_tags(ibs, annotmatch_rowids)
wbia.tag_funcs.set_annot_case_tags(ibs, aid_list, new_tags_list)[source]

Completely overwrite case tags

wbia.tag_funcs.set_annot_prop(ibs, prop, aid_list, flags)[source]

sets nonstandard properties using the notes column

wbia.tag_funcs.set_annotmatch_other_prop(ibs, prop, annotmatch_rowids, flags)[source]

sets nonstandard properties using the notes column

wbia.tag_funcs.set_annotmatch_prop(ibs, prop, annotmatch_rowids, flags)[source]

hacky setter for dynamic properties of annotmatches using notes table

wbia.tag_funcs.set_textformat_tag_flags(prop, text_list, flags)[source]

general text tag setter hack

Module contents