Repository navigation
Expand file tree
/
Copy pathtest_video_object_segmenting_mapper.py
More file actions
62 lines (53 loc) 路 2.49 KB
/
Copy pathtest_video_object_segmenting_mapper.py
File metadata and controls
62 lines (53 loc) 路 2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import os
import unittest
import numpy as np
from data_juicer.core.data import NestedDataset as Dataset
from data_juicer.ops.mapper.video_object_segmenting_mapper import \
VideoObjectSegmentingMapper
from data_juicer.utils.constant import Fields, MetaKeys
from data_juicer.utils.unittest_utils import DataJuicerTestCaseBase
class VideoObjectSegmentingMapperTest(DataJuicerTestCaseBase):
data_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), '..',
'data')
vid3_path = os.path.join(data_path, 'video3.mp4')
vid4_path = os.path.join(data_path, 'video4.mp4')
def test(self):
ds_list = [{
'main_character_list': ["glasses", "a woman", "a window"],
'videos': [self.vid4_path]
}, {
'main_character_list': ["a laptop"],
'videos': [self.vid3_path]
}]
op = VideoObjectSegmentingMapper(
sam2_hf_model="facebook/sam2.1-hiera-tiny",
yoloe_path="yoloe-11l-seg.pt",
yoloe_conf=0.2,
torch_dtype="bf16",
if_binarize=True,
if_save_visualization=False,
)
dataset = Dataset.from_list(ds_list)
if Fields.meta not in dataset.features:
dataset = dataset.add_column(name=Fields.meta,
column=[{}] * dataset.num_rows)
dataset = dataset.map(op.process, num_proc=1, with_rank=True)
res_list = dataset.to_list()
tgt_list = [{
"segment_data": [673, 3, 1, 360, 480],
"cls_id_dict": 3,
"object_cls_list": [3],
"yoloe_conf_list": [3]
}, {
"segment_data": [1190, 1, 1, 640, 362],
"cls_id_dict": 1,
"object_cls_list": [1],
"yoloe_conf_list": [1]
}]
for sample, target in zip(res_list, tgt_list):
self.assertEqual(list(np.array(sample[Fields.meta][MetaKeys.video_object_segment_tags]["segment_data"]).shape), target["segment_data"])
self.assertEqual(len(sample[Fields.meta][MetaKeys.video_object_segment_tags]["cls_id_dict"]), target["cls_id_dict"])
self.assertEqual(list(np.array(sample[Fields.meta][MetaKeys.video_object_segment_tags]["object_cls_list"]).shape), target["object_cls_list"])
self.assertEqual(list(np.array(sample[Fields.meta][MetaKeys.video_object_segment_tags]["yoloe_conf_list"]).shape), target["yoloe_conf_list"])
if __name__ == '__main__':
unittest.main()