kwcoco.coco_objects1d module¶
Vectorized ORM-like objects used in conjunction with coco_dataset
- class kwcoco.coco_objects1d.ObjectList1D(ids, dset, key)[source]¶
Bases:
NiceRepr
Vectorized access to lists of dictionary objects
Lightweight reference to a set of object (e.g. annotations, images) that allows for convenient property access.
- Parameters
ids (List[int]) – list of ids
dset (CocoDataset) – parent dataset
key (str) – main object name (e.g. ‘images’, ‘annotations’)
- Types:
ObjT = Ann | Img | Cat # can be one of these types ObjectList1D gives us access to a List[ObjT]
Example
>>> import kwcoco >>> dset = kwcoco.CocoDataset.demo() >>> # Both annots and images are object lists >>> self = dset.annots() >>> self = dset.images() >>> # can call with a list of ids or not, for everything >>> self = dset.annots([1, 2, 11]) >>> self = dset.images([1, 2, 3]) >>> self.lookup('id') >>> self.lookup(['id'])
- property objs¶
Get the underlying object dictionary for each object.
- Returns
all object dictionaries
- Return type
List[ObjT]
- take(idxs)[source]¶
Take a subset by index
- Returns
ObjectList1D
Example
>>> import kwcoco >>> self = kwcoco.CocoDataset.demo().annots() >>> assert len(self.take([0, 2, 3])) == 3
- compress(flags)[source]¶
Take a subset by flags
- Returns
ObjectList1D
Example
>>> import kwcoco >>> self = kwcoco.CocoDataset.demo().images() >>> assert len(self.compress([True, False, True])) == 2
- peek()[source]¶
Return the first object dictionary
- Returns
object dictionary
- Return type
ObjT
Example
>>> import kwcoco >>> dset = kwcoco.CocoDataset.demo() >>> self = dset.images() >>> assert self.peek()['id'] == 1 >>> # Check that subsets return correct items >>> sub0 = self.compress([i % 2 == 0 for i in range(len(self))]) >>> sub1 = self.compress([i % 2 == 1 for i in range(len(self))]) >>> assert sub0.peek()['id'] == 1 >>> assert sub1.peek()['id'] == 2
- lookup(key, default=NoParam, keepid=False)[source]¶
Lookup a list of object attributes
- Parameters
key (str | Iterable) – name of the property you want to lookup can also be a list of names, in which case we return a dict
default – if specified, uses this value if it doesn’t exist in an ObjT.
keepid – if True, return a mapping from ids to the property
- Returns
a list of whatever type the object is Dict[str, ObjT]
- Return type
List[ObjT]
Example
>>> import kwcoco >>> dset = kwcoco.CocoDataset.demo() >>> self = dset.annots() >>> self.lookup('id') >>> key = ['id'] >>> default = None >>> self.lookup(key=['id', 'image_id']) >>> self.lookup(key=['id', 'image_id']) >>> self.lookup(key='foo', default=None, keepid=True) >>> self.lookup(key=['foo'], default=None, keepid=True) >>> self.lookup(key=['id', 'image_id'], keepid=True)
- get(key, default=NoParam, keepid=False)[source]¶
Lookup a list of object attributes
- Parameters
key (str) – name of the property you want to lookup
default – if specified, uses this value if it doesn’t exist in an ObjT.
keepid – if True, return a mapping from ids to the property
- Returns
a list of whatever type the object is Dict[str, ObjT]
- Return type
List[ObjT]
Example
>>> import kwcoco >>> dset = kwcoco.CocoDataset.demo() >>> self = dset.annots() >>> self.get('id') >>> self.get(key='foo', default=None, keepid=True)
- set(key, values)[source]¶
Assign a value to each annotation
- Parameters
key (str) – the annotation property to modify
values (Iterable | Any) – an iterable of values to set for each annot in the dataset. If the item is not iterable, it is assigned to all objects.
Example
>>> import kwcoco >>> dset = kwcoco.CocoDataset.demo() >>> self = dset.annots() >>> self.set('my-key1', 'my-scalar-value') >>> self.set('my-key2', np.random.rand(len(self))) >>> print('dset.imgs = {}'.format(ub.repr2(dset.imgs, nl=1))) >>> self.get('my-key2')
- class kwcoco.coco_objects1d.ObjectGroups(groups, dset)[source]¶
Bases:
NiceRepr
An object for holding a groups of
ObjectList1D
objects
- class kwcoco.coco_objects1d.Categories(ids, dset)[source]¶
Bases:
ObjectList1D
Vectorized access to category attributes
Example
>>> from kwcoco.coco_objects1d import Categories # NOQA >>> import kwcoco >>> dset = kwcoco.CocoDataset.demo() >>> ids = list(dset.cats.keys()) >>> self = Categories(ids, dset) >>> print('self.name = {!r}'.format(self.name)) >>> print('self.supercategory = {!r}'.format(self.supercategory))
- property cids¶
- property name¶
- property supercategory¶
- class kwcoco.coco_objects1d.Videos(ids, dset)[source]¶
Bases:
ObjectList1D
Vectorized access to video attributes
Example
>>> from kwcoco.coco_objects1d import Videos # NOQA >>> import kwcoco >>> dset = kwcoco.CocoDataset.demo('vidshapes5') >>> ids = list(dset.index.videos.keys()) >>> self = Videos(ids, dset) >>> print('self = {!r}'.format(self))
- property images¶
Example: >>> import kwcoco >>> self = kwcoco.CocoDataset.demo(‘vidshapes8’).videos() >>> print(self.images) <ImageGroups(n=8, m=2.0, s=0.0)>
- class kwcoco.coco_objects1d.Images(ids, dset)[source]¶
Bases:
ObjectList1D
Vectorized access to image attributes
- property coco_images¶
- property gids¶
- property gname¶
- property gpath¶
- property width¶
- property height¶
- property size¶
Example: >>> import kwcoco >>> self = kwcoco.CocoDataset.demo().images() >>> self._dset._ensure_imgsize() >>> print(self.size) [(512, 512), (300, 250), (256, 256)]
- property area¶
Example: >>> import kwcoco >>> self = kwcoco.CocoDataset.demo().images() >>> self._dset._ensure_imgsize() >>> print(self.area) [262144, 75000, 65536]
- property n_annots¶
Example: >>> import kwcoco >>> self = kwcoco.CocoDataset.demo().images() >>> print(ub.repr2(self.n_annots, nl=0)) [9, 2, 0]
- property aids¶
Example: >>> import kwcoco >>> self = kwcoco.CocoDataset.demo().images() >>> print(ub.repr2(list(map(list, self.aids)), nl=0)) [[1, 2, 3, 4, 5, 6, 7, 8, 9], [10, 11], []]
- property annots¶
Example: >>> import kwcoco >>> self = kwcoco.CocoDataset.demo().images() >>> print(self.annots) <AnnotGroups(n=3, m=3.7, s=3.9)>
- class kwcoco.coco_objects1d.Annots(ids, dset)[source]¶
Bases:
ObjectList1D
Vectorized access to annotation attributes
- property aids¶
The annotation ids of this column of annotations
- property images¶
Get the column of images
- Returns
Images
- property image_id¶
- property category_id¶
- property cids¶
Get the column of category-ids
- Returns
List[int]
- property cnames¶
Get the column of category names
- Returns
List[int]
- property detections¶
Get the kwimage-style detection objects
- Returns
kwimage.Detections
Example
>>> # xdoctest: +REQUIRES(module:kwimage) >>> import kwcoco >>> self = kwcoco.CocoDataset.demo('shapes32').annots([1, 2, 11]) >>> dets = self.detections >>> print('dets.data = {!r}'.format(dets.data)) >>> print('dets.meta = {!r}'.format(dets.meta))
- property boxes¶
Get the column of kwimage-style bounding boxes
Example
>>> import kwcoco >>> self = kwcoco.CocoDataset.demo().annots([1, 2, 11]) >>> print(self.boxes) <Boxes(xywh, array([[ 10, 10, 360, 490], [350, 5, 130, 290], [124, 96, 45, 18]]))>
- property xywh¶
Returns raw boxes
Example
>>> import kwcoco >>> self = kwcoco.CocoDataset.demo().annots([1, 2, 11]) >>> print(self.xywh)
- class kwcoco.coco_objects1d.AnnotGroups(groups, dset)[source]¶
Bases:
ObjectGroups
- property cids¶
- property cnames¶
- class kwcoco.coco_objects1d.ImageGroups(groups, dset)[source]¶
Bases:
ObjectGroups