14
14
15
15
def get_annotations (images , all_annotations ):
16
16
image_lookup = {image ['id' ] for image in images }
17
- return [annot for annot in all_annotations if annot ['image_id' ] in image_lookup ]
17
+ return [
18
+ annot for annot in all_annotations if annot ['image_id' ] in image_lookup
19
+ ]
18
20
19
21
20
22
def partition_indices (total_n , splits ):
@@ -27,34 +29,41 @@ def partition_indices(total_n, splits):
27
29
28
30
splits = np .cumsum (splits )
29
31
for idx in range (len ((splits ))):
30
- start = 0 if idx == 0 else int (total_n * splits [idx - 1 ])
32
+ start = 0 if idx == 0 else int (total_n * splits [idx - 1 ])
31
33
end = int (splits [idx ] * total_n )
32
34
yield start , end
33
35
34
36
35
-
36
- def partition_coco (coco_instance_data , coco_panoptic_data = None , splits = None ):
37
+ def partition_coco (coco_instance_data , coco_panoptic_data = None , splits = None ):
37
38
images = coco_instance_data ['images' ]
38
- n_classes = len ({category ['id' ] for category in coco_instance_data ['categories' ]})
39
+ n_classes = len (
40
+ {category ['id' ] for category in coco_instance_data ['categories' ]})
39
41
random .shuffle (images )
40
42
partitions = []
41
43
for start , end in partition_indices (len (images ), splits ):
42
- partition = {'instance' : dict (
43
- categories = coco_instance_data ['categories' ],
44
- images = images [start :end ],
45
- annotations = get_annotations (images [start :end ], coco_instance_data ['annotations' ])
46
- )}
44
+ partition = {
45
+ 'instance' :
46
+ dict (categories = coco_instance_data ['categories' ],
47
+ images = images [start :end ],
48
+ annotations = get_annotations (
49
+ images [start :end ], coco_instance_data ['annotations' ]))
50
+ }
47
51
if coco_panoptic_data is not None :
48
52
partition ['panoptic' ] = dict (
49
- categories = coco_panoptic_data ['categories' ],
50
- images = images [start :end ],
51
- annotations = get_annotations (images [start :end ], coco_panoptic_data [ 'annotations' ])
52
- )
53
+ categories = coco_panoptic_data ['categories' ],
54
+ images = images [start :end ],
55
+ annotations = get_annotations (images [start :end ],
56
+ coco_panoptic_data [ 'annotations' ]) )
53
57
partitions .append (partition )
54
58
return partitions
55
59
56
60
57
- def visualize_object_inferences (metadata_catalog , coco_examples , predictor , scale = 1.0 , max_images = 5 , resize_dims = (768 , 512 )):
61
+ def visualize_object_inferences (metadata_catalog ,
62
+ coco_examples ,
63
+ predictor ,
64
+ scale = 1.0 ,
65
+ max_images = 5 ,
66
+ resize_dims = (768 , 512 )):
58
67
images = []
59
68
for idx , example in enumerate (coco_examples ):
60
69
if idx > max_images :
@@ -67,9 +76,14 @@ def visualize_object_inferences(metadata_catalog, coco_examples, predictor, scal
67
76
return Image .fromarray (np .vstack (images ))
68
77
69
78
70
- def visualize_coco_examples (metadata_catalog , object_examples , panoptic_examples = None , scale = 1.0 , max_images = 5 , resize_dims = (768 ,512 )):
79
+ def visualize_coco_examples (metadata_catalog ,
80
+ object_examples ,
81
+ panoptic_examples = None ,
82
+ scale = 1.0 ,
83
+ max_images = 5 ,
84
+ resize_dims = (768 , 512 )):
71
85
if panoptic_examples is not None :
72
- lookup = {d ['file_name' ] : d for d in panoptic_examples }
86
+ lookup = {d ['file_name' ]: d for d in panoptic_examples }
73
87
74
88
images = []
75
89
for idx , example in enumerate (object_examples ):
@@ -86,7 +100,8 @@ def visualize_coco_examples(metadata_catalog, object_examples, panoptic_examples
86
100
return Image .fromarray (np .vstack (images ))
87
101
88
102
89
- def _process_panoptic_to_semantic (input_panoptic , output_semantic , segments , id_map ):
103
+ def _process_panoptic_to_semantic (input_panoptic , output_semantic , segments ,
104
+ id_map ):
90
105
panoptic = np .asarray (Image .open (input_panoptic ), dtype = np .uint32 )
91
106
panoptic = rgb2id (panoptic )
92
107
@@ -98,7 +113,8 @@ def _process_panoptic_to_semantic(input_panoptic, output_semantic, segments, id_
98
113
Image .fromarray (output ).save (output_semantic )
99
114
100
115
101
- def separate_coco_semantic_from_panoptic (panoptic_json , panoptic_root , sem_seg_root , categories ):
116
+ def separate_coco_semantic_from_panoptic (panoptic_json , panoptic_root ,
117
+ sem_seg_root , categories ):
102
118
"""
103
119
Create semantic segmentation annotations from panoptic segmentation
104
120
annotations, to be used by PanopticFPN.
@@ -144,4 +160,3 @@ def iter_annotations():
144
160
futures .append (executor .submit (fn , * args ))
145
161
for _ in tqdm (as_completed (futures )):
146
162
_ .result ()
147
-
0 commit comments