fix import dm annotations

main
kirill.sizov 5 years ago
parent 6366b99248
commit d7be0429fd

@ -14,6 +14,7 @@ from cvat.apps.engine.frame_provider import FrameProvider
from cvat.apps.engine.models import AttributeType, ShapeType from cvat.apps.engine.models import AttributeType, ShapeType
from datumaro.util import cast from datumaro.util import cast
from datumaro.util.image import ByteImage, Image from datumaro.util.image import ByteImage, Image
from datumaro.components.extractor import DatasetItem
from .annotation import AnnotationManager, TrackManager from .annotation import AnnotationManager, TrackManager
@ -611,7 +612,7 @@ def match_dm_item(item, task_data, root_hint=None):
if frame_number is None and item.has_image: if frame_number is None and item.has_image:
frame_number = task_data.match_frame(item.id + item.image.ext, root_hint) frame_number = task_data.match_frame(item.id + item.image.ext, root_hint)
if frame_number is None: if frame_number is None:
frame_number = task_data.match_frame(item.id + '.', root_hint) frame_number = task_data.match_frame(item.id, root_hint)
if frame_number is None: if frame_number is None:
frame_number = cast(item.attributes.get('frame', item.id), int) frame_number = cast(item.attributes.get('frame', item.id), int)
if frame_number is None and is_video: if frame_number is None and is_video:
@ -651,7 +652,7 @@ def import_dm_annotations(dm_dataset, task_data):
for item in dm_dataset: for item in dm_dataset:
frame_number = task_data.abs_frame_id( frame_number = task_data.abs_frame_id(
match_dm_item(item, task_data, root_hint=root_hint)) match_dm_item(DatasetItem(id=item.id + '.'), task_data, root_hint=root_hint))
# do not store one-item groups # do not store one-item groups
group_map = {0: 0} group_map = {0: 0}

@ -5,7 +5,7 @@
from tempfile import TemporaryDirectory from tempfile import TemporaryDirectory
from datumaro.components.dataset import Dataset from datumaro.components.dataset import Dataset
from datumaro.components.extractor import AnnotationType, Transform from datumaro.components.extractor import AnnotationType, Transform, DatasetItem
from pyunpack import Archive from pyunpack import Archive
from cvat.apps.dataset_manager.bindings import (CvatTaskDataExtractor, from cvat.apps.dataset_manager.bindings import (CvatTaskDataExtractor,
@ -48,7 +48,7 @@ def _import(src_file, task_data):
for item in dataset: for item in dataset:
frame_number = task_data.abs_frame_id( frame_number = task_data.abs_frame_id(
match_dm_item(item, task_data, root_hint=root_hint)) match_dm_item(DatasetItem(id=item.id + '.'), task_data, root_hint=root_hint))
for ann in item.annotations: for ann in item.annotations:
if ann.type != AnnotationType.polygon: if ann.type != AnnotationType.polygon:

@ -40,7 +40,7 @@ def _import(src_file, task_data):
for frame in frames: for frame in frames:
frame_info = None frame_info = None
try: try:
frame_id = match_dm_item(DatasetItem(id=frame), task_data, frame_id = match_dm_item(DatasetItem(id=frame + '.'), task_data,
root_hint=root_hint) root_hint=root_hint)
frame_info = task_data.frame_info[frame_id] frame_info = task_data.frame_info[frame_id]
except Exception: # nosec except Exception: # nosec

Loading…
Cancel
Save