Methods to work with `crop_tree` representation: load/dump from/to a directory.
%load_ext autoreload
%autoreload 2
logger = logging.getLogger()
Executing <Handle IOLoop.add_future.<locals>.<lambda>(<Future finis...queues.py:248>) at /Users/ysem/miniconda3/envs/cocorepr36/lib/python3.6/site-packages/tornado/ioloop.py:688 created at /Users/ysem/miniconda3/envs/cocorepr36/lib/python3.6/site-packages/tornado/concurrent.py:184> took 0.688 seconds

load_crop_tree[source]

load_crop_tree(source_dir:Union[str, Path], base_coco:CocoDataset, kind:str='object_detection')

Load modified set of crops from {path}/crops and use it to filter out the annotations in base_coco.

DEBUG:asyncio:poll took 29.253 ms: 1 events
DEBUG:asyncio:poll 186.149 ms took 28.995 ms: 1 events
WARNING:asyncio:Executing <Handle IOLoop.add_future.<locals>.<lambda>(<Future finis...queues.py:248>) at /Users/ysem/miniconda3/envs/cocorepr36/lib/python3.6/site-packages/tornado/ioloop.py:688 created at /Users/ysem/miniconda3/envs/cocorepr36/lib/python3.6/site-packages/tornado/concurrent.py:184> took 10.011 seconds
# def _cut_to_chunks(L: List[Any], n) -> List[List[Any]]:
#     assert n > 0
#     return [
#         L[i: i+n] + [None]*(n - len(L[i: i+n]))
#         for i in range(0, len(L), n)
#     ]
# assert res == [[1, 2, 3, 4], [5, 6, 7, None]]

# res = _cut_to_chunks([1,2,3,4,5,6,7], 3)
# assert res == [[1, 2, 3], [4, 5, 6], [7, None, None]], res

# res = _cut_to_chunks([1,2,3,4,5,6,7], 2)
# assert res == [[1, 2], [3, 4], [5, 6], [7, None]], res

# res = _cut_to_chunks([1,2,3,4,5,6,7], 1)
# assert res == [[1], [2], [3], [4], [5], [6], [7]], res

# res = _cut_to_chunks([], 2)
# assert res == []

dump_crop_tree[source]

dump_crop_tree(coco:CocoDataset, target_dir:Union[str, Path], kind:str='object_detection', skip_nulls:bool=True, overwrite:bool=False, indent:Optional[int]=4, num_processes:int=1)

crop_files = ! ls {DST}/crops
some_crops = ! ls {DST}/crops/{crop_files[0]}
! echo {some_crops}
deleted_crop = some_crops[0]
! rm {DST}/crops/{crop_files[0]}/{deleted_crop}
! ls {DST}/crops/{crop_files[0]}

d2 = load_crop_tree(DST, d)
assert deleted_crop not in d2.to_json(), (deleted_crop, d2.to_json())
[124710.png, 124713.png]
124713.png
INFO:root:Loading crop_tree from dir: /tmp/tmp9vk7qmar
INFO:root:  loaded 2 crops from /tmp/tmp9vk7qmar/crops/car--3: elapsed 0:00:00.000067
INFO:root:  loaded 2 crops from /tmp/tmp9vk7qmar/crops/person--1: elapsed 0:00:00.000055
INFO:root:  loaded 1 crops from /tmp/tmp9vk7qmar/crops/bicycle--2: elapsed 0:00:00.000102
INFO:root:Loaded from 3 crop directories: elapsed None
INFO:root:Dataset dict constructed: elapsed 0:00:00.001974
INFO:root:Dataset object constructed: elapsed 0:00:00.001158: CocoObjectDetectionDataset(annotations=5, categories=3, images=5, licenses=8)