Added
* Add `CocoDataset.load_annot_sample`, which helps load a chip for a specific annotation. (Note: this is less efficient than using the CocoSampler)
* Add `Regions.get_item`
* GDAL COG-backend for CocoFrames
* Add `coerce_data` helper module for loading train/vali splits
* `CocoDataset.remove_images`
* `CocoDataset._alias_to_cat` looks up categories via the alias foreign key
* Sampler has support for new coco json keypoint structure.
* Frames now has `prepare` method which safely and quickly prepares the cached representation if needed.
* Add experimental method `CocoDataset._resolve_to_cat` for quick category lookup, may be aliased to lookup category in the future.
* Rename categories now supports merge cases
Changed
* Annotations no longer require a category id, although it is still recommended.
* Visibility thresh now default to 0.
* Sampler `load` methods now accept `with_annots` flag.
* `id_to_idx` now behaves as a property.
* Removed redundant items from `CategoryTree` serialization in `__json__` and `__getstate__`.
* COG format is now defaulted over memmap frames backend
* Using scalars for `load_sample`'s pad, will now broadcast to appropriate dimensions.
* Can now poss `window_dims='extent'` to `load_sample`.
* The on-disk caches in `CocoRegions` can now be explicitly disabled.
* The on-disk caches in `CocoRegions` now write to `<workdir>/_cache/_coco_regions`
* `CocoDataset.demo` now can accept 'shapes' or 'photos' as a key
* Using new-style coco keypoints by default.
Fixed
* Fixes for larger images (maybe need to do something else besides memmap)
* Fixes for kwimage 0.4.0 api changes
* Fixed issue in region caches when using python 2 and 3
* CocoDataset union now respects `img_root` that is common to all operands.