Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add dataset export facility #813

Merged
merged 44 commits into from
Nov 22, 2019
Merged
Changes from 1 commit
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
d3314c0
Add datumaro django application
zhiltsov-max Oct 29, 2019
9d79a5f
Add cvat task datumaro bindings
zhiltsov-max Nov 1, 2019
70fd1f2
Add REST api for task export
zhiltsov-max Nov 1, 2019
de9e2de
Add scheduler service
zhiltsov-max Nov 1, 2019
ef8761a
prod django version compatibility
zhiltsov-max Nov 1, 2019
7d2b926
Add scheduler start to debugger
zhiltsov-max Nov 1, 2019
e19d490
Add Datumaro sources
zhiltsov-max Nov 1, 2019
0faace7
Fix dockerfile
zhiltsov-max Nov 1, 2019
8a523a8
Fix module placement
zhiltsov-max Nov 5, 2019
9c4ea0e
Fix custom modules import
zhiltsov-max Nov 5, 2019
5a62e30
Add remote cvat image extractor
zhiltsov-max Nov 5, 2019
a3a2a8d
Add generic VOC converter
zhiltsov-max Nov 5, 2019
15d19a9
Rename app
zhiltsov-max Nov 7, 2019
352a4d2
Fix dataset conversions
zhiltsov-max Nov 7, 2019
9e2eb39
Update dockerfile
zhiltsov-max Nov 7, 2019
2b60ade
Codacy fixes
zhiltsov-max Nov 8, 2019
8062319
Move datumaro to the root dir
zhiltsov-max Nov 11, 2019
b72cab1
Fix attributes conversion
zhiltsov-max Nov 11, 2019
e1d60c5
Fix dockerfile
zhiltsov-max Nov 12, 2019
490e9ee
Add default subset name
zhiltsov-max Nov 13, 2019
7f68974
Codacy fixes
zhiltsov-max Nov 13, 2019
fae5449
Codacy, requirements, put datumaro in dataset archive
zhiltsov-max Nov 13, 2019
d2f9afb
Codacy
zhiltsov-max Nov 13, 2019
bdf72eb
Codacy
zhiltsov-max Nov 13, 2019
3ba5ed0
Codacy
zhiltsov-max Nov 14, 2019
333e967
Move redis scheduler to cvat
zhiltsov-max Nov 14, 2019
bbdd97b
Bulding enhancements
zhiltsov-max Nov 15, 2019
bdcc71e
Codacy
zhiltsov-max Nov 15, 2019
27e3fec
Include datumaro tests in CI
zhiltsov-max Nov 15, 2019
bdb5b96
Fix voc test
zhiltsov-max Nov 15, 2019
4af1c17
Codacy
zhiltsov-max Nov 15, 2019
a0cd75c
Fix codacy issues
Nov 15, 2019
8f638f4
Codacy
zhiltsov-max Nov 20, 2019
9d7d2d7
Merge branch 'zm/datumaro-integration' of https://github.com/opencv/c…
zhiltsov-max Nov 20, 2019
d46c3b6
Return pretty ctor interface
zhiltsov-max Nov 20, 2019
6766f8d
Codacy
zhiltsov-max Nov 20, 2019
098cf05
Add documentation
zhiltsov-max Nov 21, 2019
6cb4025
Make matplotlib optional
zhiltsov-max Nov 21, 2019
458c550
Codacy
zhiltsov-max Nov 21, 2019
ac50d9c
Codacy
zhiltsov-max Nov 21, 2019
afad234
Codacy
zhiltsov-max Nov 21, 2019
c8c15d1
Move datumaro directory info from model
zhiltsov-max Nov 22, 2019
852379d
Merge branch 'develop' into zm/datumaro-integration
Nov 22, 2019
9aad324
Updated CHANGELOG.md
Nov 22, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add generic VOC converter
zhiltsov-max committed Nov 15, 2019

Verified

This commit was signed with the committer’s verified signature.
ayumi ayumi  yu
commit a3a2a8d545c461d7e61d3307025389372a9cf7bb
Original file line number Diff line number Diff line change
@@ -14,6 +14,7 @@
)

from datumaro.components.converters.voc import (
VocConverter,
VocClassificationConverter,
VocDetectionConverter,
VocLayoutConverter,
@@ -31,6 +32,7 @@
('coco_person_kp', CocoPersonKeypointsConverter),
('coco_labels', CocoLabelsConverter),

('voc', VocConverter),
('voc_cls', VocClassificationConverter),
('voc_det', VocDetectionConverter),
('voc_segm', VocSegmentationConverter),
Original file line number Diff line number Diff line change
@@ -277,8 +277,8 @@ def convert(self):
filename = ''
if item.has_image:
filename = str(item.id) + CocoPath.IMAGE_EXT
if self._save_images:
self.save_image(item, filename)
if self._save_images:
self.save_image(item, filename)
task_conv.save_image_info(item, filename)
task_conv.save_annotations(item)

Original file line number Diff line number Diff line change
@@ -33,7 +33,7 @@ class _Converter:
def __init__(self, task, extractor, save_dir,
apply_colormap=True, save_images=False):

assert task in VocTask
assert not task or task in VocTask
self._task = task
self._extractor = extractor
self._save_dir = save_dir
@@ -124,9 +124,8 @@ def save_subsets(self):
ET.SubElement(root_elem, 'filename').text = \
item_id + VocPath.IMAGE_EXT

image = item.image
if image is not None:
h, w, c = image.shape
if item.has_image:
h, w, c = item.image.shape
size_elem = ET.SubElement(root_elem, 'size')
ET.SubElement(size_elem, 'width').text = str(w)
ET.SubElement(size_elem, 'height').text = str(h)
@@ -194,7 +193,8 @@ def save_subsets(self):

objects_with_actions[new_obj_id][action] = presented

if self._task in [VocTask.detection,
if self._task in [None,
VocTask.detection,
VocTask.person_layout,
VocTask.action_classification]:
with open(osp.join(self._ann_dir, item_id + '.xml'), 'w') as f:
@@ -232,15 +232,16 @@ def save_subsets(self):
action_list[item_id] = None
segm_list[item_id] = None

if self._task in [VocTask.classification, VocTask.detection]:
if self._task in [None,
VocTask.classification, VocTask.detection]:
self.save_clsdet_lists(subset_name, clsdet_list)
if self._task is VocTask.classification:
if self._task in [None, VocTask.classification]:
self.save_class_lists(subset_name, class_lists)
if self._task is VocTask.action_classification:
if self._task in [None, VocTask.action_classification]:
self.save_action_lists(subset_name, action_list)
if self._task is VocTask.person_layout:
if self._task in [None, VocTask.person_layout]:
self.save_layout_lists(subset_name, layout_list)
if self._task is VocTask.segmentation:
if self._task in [None, VocTask.segmentation]:
self.save_segm_lists(subset_name, segm_list)

def save_action_lists(self, subset_name, action_list):
@@ -322,7 +323,7 @@ def save_segm(self, path, annotation, colormap):
cv2.imwrite(path, data)

class VocConverter(Converter):
def __init__(self, task, save_images=False, apply_colormap=False):
def __init__(self, task=None, save_images=False, apply_colormap=False):
super().__init__()
self._task = task
self._save_images = save_images