@ -4,13 +4,13 @@
from tempfile import TemporaryDirectory
from datumaro . components . dataset import Dataset
from datumaro . components . extractor import AnnotationType , Transform
from pyunpack import Archive
from cvat . apps . dataset_manager . bindings import ( CvatTaskDataExtractor ,
find_dataset_root , match_dm_item )
from cvat . apps . dataset_manager . util import make_zip_archive
from datumaro . components . extractor import AnnotationType , Transform
from datumaro . components . project import Dataset
from . registry import dm_env , exporter , importer
@ -22,16 +22,14 @@ class KeepTracks(Transform):
@exporter ( name = ' MOTS PNG ' , ext = ' ZIP ' , version = ' 1.0 ' )
def _export ( dst_file , task_data , save_images = False ) :
extractor = CvatTaskDataExtractor ( task_data , include_images = save_images )
envt = dm_env . transforms
extractor = extractor . transform ( KeepTracks ) # can only export tracks
extractor = extractor . transform ( envt . get ( ' polygons_to_masks ' ) )
extractor = extractor . transform ( envt . get ( ' boxes_to_masks ' ) )
extractor = extractor . transform ( envt . get ( ' merge_instance_segments ' ) )
extractor = Dataset . from_extractors ( extractor ) # apply lazy transforms
dataset = Dataset . from_extractors ( CvatTaskDataExtractor (
task_data , include_images = save_images ) , env = dm_env )
dataset . transform ( KeepTracks ) # can only export tracks
dataset . transform ( ' polygons_to_masks ' )
dataset . transform ( ' boxes_to_masks ' )
dataset . transform ( ' merge_instance_segments ' )
with TemporaryDirectory ( ) as temp_dir :
dm_env . converters . get ( ' mots_png ' ) . convert ( extractor ,
save_dir = temp_dir , save_images = save_images )
dataset . export ( temp_dir , ' mots_png ' , save_images = save_images )
make_zip_archive ( temp_dir , dst_file )
@ -40,9 +38,8 @@ def _import(src_file, task_data):
with TemporaryDirectory ( ) as tmp_dir :
Archive ( src_file . name ) . extractall ( tmp_dir )
dataset = dm_env . make_importer ( ' mots ' ) ( tmp_dir ) . make_dataset ( )
masks_to_polygons = dm_env . transforms . get ( ' masks_to_polygons ' )
dataset = dataset . transform ( masks_to_polygons )
dataset = Dataset . import_from ( tmp_dir , ' mots ' , env = dm_env )
dataset . transform ( ' masks_to_polygons ' )
tracks = { }
label_cat = dataset . categories ( ) [ AnnotationType . label ]