kwcoco.demo.toypatterns module

class kwcoco.demo.toypatterns.CategoryPatterns(categories=None, fg_scale=0.5, fg_intensity=0.9, rng=None)[source]

Bases: object

Example

>>> from kwcoco.demo.toypatterns import *  # NOQA
>>> self = CategoryPatterns.coerce()
>>> chip = np.zeros((100, 100, 3))
>>> offset = (20, 10)
>>> dims = (160, 140)
>>> info = self.random_category(chip, offset, dims)
>>> print('info = {}'.format(ub.urepr(info, nl=1)))
>>> # xdoctest: +REQUIRES(--show)
>>> import kwplot
>>> kwplot.autompl()
>>> kwplot.imshow(info['data'], pnum=(1, 2, 1), fnum=1, title='chip-space')
>>> kpts = kwimage.Points._from_coco(info['keypoints'])
>>> kpts.translate(-np.array(offset)).draw(radius=3)
>>> #####
>>> mask = kwimage.Mask.coerce(info['segmentation'])
>>> kwplot.imshow(mask.to_c_mask().data, pnum=(1, 2, 2), fnum=1, title='img-space')
>>> kpts.draw(radius=3)
>>> kwplot.show_if_requested()
_images/fig_kwcoco_demo_toypatterns_CategoryPatterns_002.jpeg
Parameters:

categories (List[Dict] | None) – List of coco category dictionaries

_default_categories = [{'id': 0, 'keypoints': [], 'name': 'background'}, {'id': 1, 'keypoints': [], 'name': 'box', 'supercategory': 'vector'}, {'id': 2, 'keypoints': [], 'name': 'circle', 'supercategory': 'vector'}, {'id': 3, 'keypoints': [], 'name': 'star', 'supercategory': 'vector'}, {'id': 4, 'keypoints': [], 'name': 'octagon', 'supercategory': 'vector'}, {'id': 5, 'keypoints': [], 'name': 'diamond', 'supercategory': 'vector'}, {'id': 6, 'keypoints': ['left_eye', 'right_eye'], 'name': 'superstar', 'supercategory': 'raster'}, {'id': 7, 'keypoints': ['top_tip', 'mid_tip', 'bot_tip'], 'name': 'eff', 'supercategory': 'raster'}, {'id': 8, 'keypoints': [], 'name': 'raster', 'supercategory': 'raster'}, {'id': 9, 'keypoints': [], 'name': 'vector', 'supercategory': 'shape'}, {'id': 10, 'keypoints': [], 'name': 'shape'}]
_default_keypoint_categories = [{'id': 1, 'name': 'left_eye', 'reflection_id': 2}, {'id': 2, 'name': 'right_eye', 'reflection_id': 1}, {'id': 3, 'name': 'top_tip', 'reflection_id': None}, {'id': 4, 'name': 'mid_tip', 'reflection_id': None}, {'id': 5, 'name': 'bot_tip', 'reflection_id': None}]
_default_catnames = ['star', 'eff', 'superstar']
classmethod coerce(data=None, **kwargs)[source]

Construct category patterns from either defaults or only with specific categories. Can accept either an existig category pattern object, a list of known catnames, or mscoco category dictionaries.

Example

>>> data = ['superstar']
>>> self = CategoryPatterns.coerce(data)
index(name)[source]
get(index, default=NoParam)[source]
random_category(chip, xy_offset=None, dims=None, newstyle=True, size=None)[source]

Example

>>> from kwcoco.demo.toypatterns import *  # NOQA
>>> self = CategoryPatterns.coerce(['superstar'])
>>> chip = np.random.rand(64, 64)
>>> info = self.random_category(chip)
render_category(cname, chip, xy_offset=None, dims=None, newstyle=True, size=None)[source]

Example

>>> from kwcoco.demo.toypatterns import *  # NOQA
>>> self = CategoryPatterns.coerce(['superstar'])
>>> chip = np.random.rand(64, 64)
>>> info = self.render_category('superstar', chip, newstyle=True)
>>> print('info = {}'.format(ub.urepr(info, nl=-1)))
>>> info = self.render_category('superstar', chip, newstyle=False)
>>> print('info = {}'.format(ub.urepr(info, nl=-1)))

Example

>>> from kwcoco.demo.toypatterns import *  # NOQA
>>> self = CategoryPatterns.coerce(['superstar'])
>>> chip = None
>>> dims = (64, 64)
>>> info = self.render_category('superstar', chip, newstyle=True, dims=dims, size=dims)
>>> print('info = {}'.format(ub.urepr(info, nl=-1)))
_todo_refactor_geometric_info(cname, xy_offset, dims)[source]

This function is used to populate kpts and sseg information in the autogenerated coco dataset before rendering. It is redundant with other functionality.

TODO: rectify with _from_elem

Example

>>> self = CategoryPatterns.coerce(['superstar'])
>>> dims = (64, 64)
>>> cname = 'superstar'
>>> xy_offset = None
>>> self._todo_refactor_geometric_info(cname, xy_offset, dims)

Example

>>> from kwcoco.demo.toypatterns import *  # NOQA
>>> cname = 'star'
>>> xy_offset = None
>>> self = CategoryPatterns.coerce([cname])
>>> for d in range(0, 5):
...     dims = (d, d)
...     info = self._todo_refactor_geometric_info(cname, xy_offset, dims)
...     print(info['segmentation'].data)
_package_info(cname, data, mask, kpts, xy_offset, dims, newstyle)[source]

packages data from _from_elem into coco-like annotation

_from_elem(cname, chip, size=None)[source]

Example

>>> # hack to allow chip to be None
>>> chip = None
>>> size = (32, 32)
>>> cname = 'superstar'
>>> self = CategoryPatterns.coerce()
>>> self._from_elem(cname, chip, size)
kwcoco.demo.toypatterns.star(a, dtype=<class 'numpy.uint8'>)[source]

Generates a star shaped structuring element.

Much faster than skimage.morphology version

class kwcoco.demo.toypatterns.Rasters[source]

Bases: object

static superstar()[source]

test data patch

static eff()[source]

test data patch