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

updating datumaro #9093

Open
wants to merge 8 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
24 changes: 12 additions & 12 deletions cvat/apps/dataset_manager/bindings.py
Original file line number Diff line number Diff line change
Expand Up @@ -1500,7 +1500,7 @@ def get_media_for_frame(self, source_id: int, frame_index: int, **image_kwargs)
source = self._sources[source_id]

if source.is_video:
def video_frame_loader(_):
def video_frame_loader():
self._load_source(source_id, source)

# optimization for videos: use numpy arrays instead of bytes
Expand All @@ -1510,9 +1510,9 @@ def video_frame_loader(_):
out_type=FrameOutputType.NUMPY_ARRAY
).data

return dm.Image(data=video_frame_loader, **image_kwargs)
return dm.Image.from_numpy(data=video_frame_loader, **image_kwargs)
else:
def image_loader(_):
def image_loader():
self._load_source(source_id, source)

# for images use encoded data to avoid recoding
Expand All @@ -1521,7 +1521,7 @@ def image_loader(_):
out_type=FrameOutputType.BUFFER
).data.getvalue()

return dm.ByteImage(data=image_loader, **image_kwargs)
return dm.Image.from_bytes(data=image_loader, **image_kwargs)

def _load_source(self, source_id: int, source: MediaSource) -> None:
if self._current_source_id == source_id:
Expand Down Expand Up @@ -1559,13 +1559,13 @@ def get_media_for_frame(self, source_id: int, frame_id: int, **image_kwargs) ->
image = self._images_per_source[source_id][frame_id]

related_images = [
dm.Image(path=path)
dm.Image.from_file(path=path)
for rf in image.related_files.all()
for path in [osp.realpath(str(rf.path))]
if osp.isfile(path)
]

return dm.PointCloud(point_cloud_path, extra_images=related_images)
return dm.PointCloud.from_file(point_cloud_path, extra_images=related_images)

MEDIA_PROVIDERS_BY_DIMENSION: dict[DimensionType, MediaProvider] = {
DimensionType.DIM_3D: MediaProvider3D,
Expand Down Expand Up @@ -1689,18 +1689,18 @@ def __init__(

if not include_images:
dm_media_args["extra_images"] = [
dm.Image(path=osp.basename(image.path))
dm.Image.from_file(path=osp.basename(image.path))
for image in dm_media.extra_images
]
dm_media = dm.PointCloud(**dm_media_args)
dm_media = dm.PointCloud.from_file(**dm_media_args)
else:
dm_media_args['size'] = (frame_data.height, frame_data.width)
if include_images:
dm_media: dm.Image = self._media_provider.get_media_for_frame(
0, frame_data.idx, **dm_media_args
)
else:
dm_media = dm.Image(**dm_media_args)
dm_media = dm.Image.from_file(**dm_media_args)

dm_anno = self._read_cvat_anno(frame_data, instance_meta['labels'])

Expand Down Expand Up @@ -1792,18 +1792,18 @@ def __init__(

if not include_images:
dm_media_args["extra_images"] = [
dm.Image(path=osp.basename(image.path))
dm.Image.from_file(path=osp.basename(image.path))
for image in dm_media.extra_images
]
dm_media = dm.PointCloud(**dm_media_args)
dm_media = dm.PointCloud.from_file(**dm_media_args)
else:
dm_media_args['size'] = (frame_data.height, frame_data.width)
if include_images:
dm_media: dm.Image = self._media_provider.get_media_for_frame(
frame_data.task_id, frame_data.idx, **dm_media_args
)
else:
dm_media = dm.Image(**dm_media_args)
dm_media = dm.Image.from_file(**dm_media_args)

dm_anno = self._read_cvat_anno(frame_data, project_data.meta[project_data.META_FIELD]['labels'])

Expand Down
2 changes: 1 addition & 1 deletion cvat/apps/dataset_manager/formats/camvid.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ def _export(dst_file, temp_dir, instance_data, save_images=False):
dataset.export(
temp_dir,
"camvid",
save_images=save_images,
save_media=save_images,
apply_colormap=True,
label_map={label: label_map[label][0] for label in label_map},
)
Expand Down
2 changes: 1 addition & 1 deletion cvat/apps/dataset_manager/formats/cityscapes.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def _export(dst_file, temp_dir, instance_data, save_images=False):
dataset.export(
temp_dir,
"cityscapes",
save_images=save_images,
save_media=save_images,
apply_colormap=True,
label_map={label: info[0] for label, info in make_colormap(instance_data).items()},
)
Expand Down
4 changes: 2 additions & 2 deletions cvat/apps/dataset_manager/formats/coco.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
def _export(dst_file, temp_dir, instance_data, save_images=False):
with GetCVATDataExtractor(instance_data, include_images=save_images) as extractor:
dataset = Dataset.from_extractors(extractor, env=dm_env)
dataset.export(temp_dir, "coco_instances", save_images=save_images, merge_images=False)
dataset.export(temp_dir, "coco_instances", save_media=save_images, merge_images=False)

make_zip_archive(temp_dir, dst_file)

Expand Down Expand Up @@ -52,7 +52,7 @@ def _export(dst_file, temp_dir, instance_data, save_images=False):
with GetCVATDataExtractor(instance_data, include_images=save_images) as extractor:
dataset = Dataset.from_extractors(extractor, env=dm_env)
dataset.export(
temp_dir, "coco_person_keypoints", save_images=save_images, merge_images=False
temp_dir, "coco_person_keypoints", save_media=save_images, merge_images=False
)

make_zip_archive(temp_dir, dst_file)
Expand Down
6 changes: 3 additions & 3 deletions cvat/apps/dataset_manager/formats/cvat.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ def parse_image_dir(image_dir, subset):
items[(subset, name)] = DatasetItem(
id=name,
annotations=[],
media=Image(path=file),
media=Image.from_file(path=file),
subset=subset or DEFAULT_SUBSET_NAME,
)

Expand Down Expand Up @@ -617,7 +617,7 @@ def _load_items(self, parsed, image_items):
)
image_size = (item_desc.get("height"), item_desc.get("width"))
if all(image_size):
image = Image(path=image, size=tuple(map(int, image_size)))
image = Image.from_file(path=image, size=tuple(map(int, image_size)))
di = image_items.get(
(subset, osp.splitext(name)[0]), DatasetItem(id=name, annotations=[])
)
Expand Down Expand Up @@ -1341,7 +1341,7 @@ def load_anno(file_object, annotations):
DatasetItem(
id=osp.splitext(el.attrib["name"])[0],
attributes={"frame": el.attrib["id"]},
media=Image(path=el.attrib["name"]),
media=Image.from_file(path=el.attrib["name"]),
),
instance_data=annotations,
)
Expand Down
4 changes: 2 additions & 2 deletions cvat/apps/dataset_manager/formats/datumaro.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
def _export(dst_file, temp_dir, instance_data, save_images=False):
with GetCVATDataExtractor(instance_data=instance_data, include_images=save_images) as extractor:
dataset = Dataset.from_extractors(extractor, env=dm_env)
dataset.export(temp_dir, "datumaro", save_images=save_images)
dataset.export(temp_dir, "datumaro", save_media=save_images)

make_zip_archive(temp_dir, dst_file)

Expand Down Expand Up @@ -52,7 +52,7 @@ def _export(dst_file, temp_dir, instance_data, save_images=False):
instance_data=instance_data, include_images=save_images, dimension=DimensionType.DIM_3D
) as extractor:
dataset = Dataset.from_extractors(extractor, env=dm_env)
dataset.export(temp_dir, "datumaro", save_images=save_images)
dataset.export(temp_dir, "datumaro", save_media=save_images)

make_zip_archive(temp_dir, dst_file)

Expand Down
6 changes: 3 additions & 3 deletions cvat/apps/dataset_manager/formats/icdar.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ def _export_recognition(dst_file, temp_dir, instance_data, save_images=False):
with GetCVATDataExtractor(instance_data, include_images=save_images) as extractor:
dataset = Dataset.from_extractors(extractor, env=dm_env)
dataset.transform(LabelToCaption)
dataset.export(temp_dir, "icdar_word_recognition", save_images=save_images)
dataset.export(temp_dir, "icdar_word_recognition", save_media=save_images)

make_zip_archive(temp_dir, dst_file)

Expand All @@ -101,7 +101,7 @@ def _import(src_file, temp_dir, instance_data, load_data_callback=None, **kwargs
def _export_localization(dst_file, temp_dir, instance_data, save_images=False):
with GetCVATDataExtractor(instance_data, include_images=save_images) as extractor:
dataset = Dataset.from_extractors(extractor, env=dm_env)
dataset.export(temp_dir, "icdar_text_localization", save_images=save_images)
dataset.export(temp_dir, "icdar_text_localization", save_media=save_images)

make_zip_archive(temp_dir, dst_file)

Expand All @@ -128,7 +128,7 @@ def _export_segmentation(dst_file, temp_dir, instance_data, save_images=False):
dataset.transform("polygons_to_masks")
dataset.transform("boxes_to_masks")
dataset.transform("merge_instance_segments")
dataset.export(temp_dir, "icdar_text_segmentation", save_images=save_images)
dataset.export(temp_dir, "icdar_text_segmentation", save_media=save_images)

make_zip_archive(temp_dir, dst_file)

Expand Down
6 changes: 4 additions & 2 deletions cvat/apps/dataset_manager/formats/imagenet.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from glob import glob

from datumaro.components.dataset import Dataset
from datumaro.plugins.transforms import Rename

from cvat.apps.dataset_manager.bindings import GetCVATDataExtractor, import_dm_annotations
from cvat.apps.dataset_manager.util import make_zip_archive
Expand All @@ -20,9 +21,9 @@ def _export(dst_file, temp_dir, instance_data, save_images=False):
with GetCVATDataExtractor(instance_data, include_images=save_images) as extractor:
dataset = Dataset.from_extractors(extractor, env=dm_env)
if save_images:
dataset.export(temp_dir, "imagenet", save_images=save_images)
dataset.export(temp_dir, "imagenet", save_media=save_images)
else:
dataset.export(temp_dir, "imagenet_txt", save_images=save_images)
dataset.export(temp_dir, "imagenet_txt", save_media=save_images)

make_zip_archive(temp_dir, dst_file)

Expand All @@ -38,6 +39,7 @@ def _import(src_file, temp_dir, instance_data, load_data_callback=None, **kwargs
dataset = Dataset.import_from(temp_dir, "imagenet_txt", env=dm_env)
else:
dataset = Dataset.import_from(temp_dir, "imagenet", env=dm_env)
dataset = dataset.transform(Rename, regex="|([^:]+):(.*)|\\1/\\2|")
if load_data_callback is not None:
load_data_callback(dataset, instance_data)
import_dm_annotations(dataset, instance_data)
2 changes: 1 addition & 1 deletion cvat/apps/dataset_manager/formats/kitti.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ def _export(dst_file, temp_dir, instance_data, save_images=False):
format="kitti",
label_map={k: v[0] for k, v in make_colormap(instance_data).items()},
apply_colormap=True,
save_images=save_images,
save_media=save_images,
)

make_zip_archive(temp_dir, dst_file)
Expand Down
2 changes: 1 addition & 1 deletion cvat/apps/dataset_manager/formats/labelme.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
def _export(dst_file, temp_dir, instance_data, save_images=False):
with GetCVATDataExtractor(instance_data, include_images=save_images) as extractor:
dataset = Dataset.from_extractors(extractor, env=dm_env)
dataset.export(temp_dir, "label_me", save_images=save_images)
dataset.export(temp_dir, "label_me", save_media=save_images)

make_zip_archive(temp_dir, dst_file)

Expand Down
2 changes: 1 addition & 1 deletion cvat/apps/dataset_manager/formats/lfw.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,6 @@ def _import(src_file, temp_dir, instance_data, load_data_callback=None, **kwargs
def _exporter(dst_file, temp_dir, instance_data, save_images=False):
with GetCVATDataExtractor(instance_data, include_images=save_images) as extractor:
dataset = Dataset.from_extractors(extractor, env=dm_env)
dataset.export(temp_dir, format="lfw", save_images=save_images)
dataset.export(temp_dir, format="lfw", save_media=save_images)

make_zip_archive(temp_dir, dst_file)
2 changes: 1 addition & 1 deletion cvat/apps/dataset_manager/formats/market1501.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ def _export(dst_file, temp_dir, instance_data, save_images=False):
dataset = Dataset.from_extractors(extractor, env=dm_env)

dataset.transform(LabelAttrToAttr, label="market-1501")
dataset.export(temp_dir, "market1501", save_images=save_images)
dataset.export(temp_dir, "market1501", save_media=save_images)

make_zip_archive(temp_dir, dst_file)

Expand Down
2 changes: 1 addition & 1 deletion cvat/apps/dataset_manager/formats/mask.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def _export(dst_file, temp_dir, instance_data, save_images=False):
dataset.export(
temp_dir,
"voc_segmentation",
save_images=save_images,
save_media=save_images,
apply_colormap=True,
label_map=make_colormap(instance_data),
)
Expand Down
2 changes: 1 addition & 1 deletion cvat/apps/dataset_manager/formats/mot.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ def _export(dst_file, temp_dir, instance_data, save_images=False):
with GetCVATDataExtractor(instance_data, include_images=save_images) as extractor:
dataset = dm.Dataset.from_extractors(extractor, env=dm_env)

dataset.export(temp_dir, "mot_seq_gt", save_images=save_images)
dataset.export(temp_dir, "mot_seq_gt", save_media=save_images)

make_zip_archive(temp_dir, dst_file)

Expand Down
2 changes: 1 addition & 1 deletion cvat/apps/dataset_manager/formats/mots.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ def _export(dst_file, temp_dir, instance_data, save_images=False):
dataset.transform("boxes_to_masks")
dataset.transform("merge_instance_segments")

dataset.export(temp_dir, "mots_png", save_images=save_images)
dataset.export(temp_dir, "mots_png", save_media=save_images)

make_zip_archive(temp_dir, dst_file)

Expand Down
2 changes: 1 addition & 1 deletion cvat/apps/dataset_manager/formats/openimages.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ def _export(dst_file, temp_dir, task_data, save_images=False):
dataset.transform("polygons_to_masks")
dataset.transform("merge_instance_segments")

dataset.export(temp_dir, "open_images", save_images=save_images)
dataset.export(temp_dir, "open_images", save_media=save_images)

make_zip_archive(temp_dir, dst_file)

Expand Down
2 changes: 1 addition & 1 deletion cvat/apps/dataset_manager/formats/pascal_voc.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ def _export(dst_file, temp_dir, instance_data, save_images=False):
with GetCVATDataExtractor(instance_data, include_images=save_images) as extractor:
dataset = Dataset.from_extractors(extractor, env=dm_env)

dataset.export(temp_dir, "voc", save_images=save_images, label_map="source")
dataset.export(temp_dir, "voc", save_media=save_images, label_map="source")

make_zip_archive(temp_dir, dst_file)

Expand Down
2 changes: 1 addition & 1 deletion cvat/apps/dataset_manager/formats/pointcloud.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def _export_images(dst_file, temp_dir, task_data, save_images=False):
) as extractor:
dataset = Dataset.from_extractors(extractor, env=dm_env)
dataset.export(
temp_dir, "sly_pointcloud", save_images=save_images, allow_undeclared_attrs=True
temp_dir, "sly_pointcloud", save_media=save_images, allow_undeclared_attrs=True
)

make_zip_archive(temp_dir, dst_file)
Expand Down
2 changes: 1 addition & 1 deletion cvat/apps/dataset_manager/formats/velodynepoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ def _export_images(dst_file, temp_dir, task_data, save_images=False):
) as extractor:
dataset = Dataset.from_extractors(extractor, env=dm_env)
dataset.transform(RemoveTrackingInformation)
dataset.export(temp_dir, "kitti_raw", save_images=save_images, reindex=True)
dataset.export(temp_dir, "kitti_raw", save_media=save_images, reindex=True)

make_zip_archive(temp_dir, dst_file)

Expand Down
2 changes: 1 addition & 1 deletion cvat/apps/dataset_manager/formats/vggface2.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
def _export(dst_file, temp_dir, instance_data, save_images=False):
with GetCVATDataExtractor(instance_data, include_images=save_images) as extractor:
dataset = Dataset.from_extractors(extractor, env=dm_env)
dataset.export(temp_dir, "vgg_face2", save_images=save_images)
dataset.export(temp_dir, "vgg_face2", save_media=save_images)

make_zip_archive(temp_dir, dst_file)

Expand Down
2 changes: 1 addition & 1 deletion cvat/apps/dataset_manager/formats/widerface.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
def _export(dst_file, temp_dir, instance_data, save_images=False):
with GetCVATDataExtractor(instance_data, include_images=save_images) as extractor:
dataset = Dataset.from_extractors(extractor, env=dm_env)
dataset.export(temp_dir, "wider_face", save_images=save_images)
dataset.export(temp_dir, "wider_face", save_media=save_images)

make_zip_archive(temp_dir, dst_file)

Expand Down
4 changes: 2 additions & 2 deletions cvat/apps/dataset_manager/formats/yolo.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def _export_common(
):
with GetCVATDataExtractor(instance_data, include_images=save_images) as extractor:
dataset = Dataset.from_extractors(extractor, env=dm_env)
dataset.export(temp_dir, format_name, save_images=save_images, **kwargs)
dataset.export(temp_dir, format_name, save_media=save_images, **kwargs)

make_zip_archive(temp_dir, dst_file)

Expand Down Expand Up @@ -111,7 +111,7 @@ def _export_yolo_ultralytics_segmentation(dst_file, temp_dir, instance_data, *,
with GetCVATDataExtractor(instance_data, include_images=save_images) as extractor:
dataset = Dataset.from_extractors(extractor, env=dm_env)
dataset = dataset.transform("masks_to_polygons")
dataset.export(temp_dir, "yolo_ultralytics_segmentation", save_images=save_images)
dataset.export(temp_dir, "yolo_ultralytics_segmentation", save_media=save_images)

make_zip_archive(temp_dir, dst_file)

Expand Down
4 changes: 3 additions & 1 deletion cvat/apps/lambda_manager/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -836,7 +836,9 @@ def parse_anno(anno, labels):
elif anno["type"] == "mask":
[xtl, ytl, xbr, ybr] = shape["points"][-4:]
cut_points = shape["points"][:-4]
rle = mask_tools.mask_to_rle(np.array(cut_points))["counts"].tolist()
rle = mask_tools.mask_to_rle(np.array(cut_points)[:, np.newaxis])[
"counts"
].tolist()
rle.extend([xtl, ytl, xbr, ybr])
shape["points"] = rle

Expand Down
2 changes: 1 addition & 1 deletion cvat/requirements/base.in
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ azure-storage-blob==12.13.0
boto3==1.17.61
clickhouse-connect==0.6.8
coreapi==2.3.3
datumaro @ git+https://github.com/cvat-ai/datumaro.git@e61ebe4c5cfee8a741fbf89f966535996be6dcff
datumaro @ git+https://github.com/cvat-ai/datumaro.git@759c13f43bf86c26fa1e8b9908176e3b902a2203
dj-pagination==2.5.0
# Despite direct indication allauth in requirements we should keep 'with_social' for dj-rest-auth
# to avoid possible further versions conflicts (we use registration functionality)
Expand Down
Loading
Loading