Skip to content

Commit 2b3c49a

Browse files
author
Matt Sokoloff
committed
format fix bug
1 parent 8e8c19e commit 2b3c49a

File tree

4 files changed

+54
-36
lines changed

4 files changed

+54
-36
lines changed

labelbox/data/serialization/coco/converter.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
def create_path_if_not_exists(path: str):
1010
if not os.path.exists(path):
1111
os.makedirs(path)
12-
elif os.path.listdir(path):
12+
elif os.listdir(path):
1313
raise ValueError(f"Directory `{path}`` must be empty.")
1414

1515

@@ -45,8 +45,10 @@ def serialize_instances(labels: LabelCollection,
4545
return CocoInstanceDataset.from_common(labels=labels,
4646
image_root=image_root).dict()
4747

48-
def serialize_panoptic(labels: LabelCollection, image_root: str,
49-
mask_root: str, all_stuff: bool = False) -> Dict[str, Any]:
48+
def serialize_panoptic(labels: LabelCollection,
49+
image_root: str,
50+
mask_root: str,
51+
all_stuff: bool = False) -> Dict[str, Any]:
5052
"""
5153
Convert a Labelbox LabelCollection into an mscoco dataset.
5254
This function will only convert masks, polygons, and rectangles.
@@ -66,7 +68,8 @@ def serialize_panoptic(labels: LabelCollection, image_root: str,
6668
create_path_if_not_exists(mask_root)
6769
return CocoPanopticDataset.from_common(labels=labels,
6870
image_root=image_root,
69-
mask_root=mask_root, all_stuff=all_stuff).dict()
71+
mask_root=mask_root,
72+
all_stuff=all_stuff).dict()
7073

7174
@classmethod
7275
def deserialize_panoptic(cls, json_data: Dict[str, Any], image_root: str,

labelbox/data/serialization/coco/instance_dataset.py

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,10 @@ def segmentations_to_common(class_annotations, class_name):
8282
return annotations
8383

8484

85-
def process_label(label: Label, idx, image_root, max_annotations_per_image = 10000):
85+
def process_label(label: Label,
86+
idx,
87+
image_root,
88+
max_annotations_per_image=10000):
8689
annot_idx = idx * max_annotations_per_image
8790
image_id = get_image_id(label, idx)
8891
image = get_image(label, image_root, image_id)
@@ -133,14 +136,16 @@ def from_common(cls, labels: LabelCollection, image_root):
133136
all_coco_annotations.extend(annotations)
134137
coco_categories.update(categories)
135138

136-
category_mapping = {category_id : idx + 1 for idx, category_id in enumerate(coco_categories.values())}
137-
categories=[
138-
Categories(id=category_mapping[idx],
139-
name=name,
140-
supercategory='all',
141-
isthing=1)
142-
for name, idx in coco_categories.items()
143-
]
139+
category_mapping = {
140+
category_id: idx + 1
141+
for idx, category_id in enumerate(coco_categories.values())
142+
}
143+
categories = [
144+
Categories(id=category_mapping[idx],
145+
name=name,
146+
supercategory='all',
147+
isthing=1) for name, idx in coco_categories.items()
148+
]
144149
for annot in all_coco_annotations:
145150
annot.category_id = category_mapping[annot.category_id]
146151

@@ -149,7 +154,6 @@ def from_common(cls, labels: LabelCollection, image_root):
149154
annotations=all_coco_annotations,
150155
categories=categories)
151156

152-
153157
def to_common(self, image_root):
154158
category_lookup = {
155159
category.id: category for category in self.categories

labelbox/data/serialization/coco/panoptic_dataset.py

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,10 @@ def vector_to_coco_segment_info(canvas: np.ndarray,
3333
bbox=[xmin, ymin, xmax - xmin, ymax - ymin]), canvas
3434

3535

36-
def mask_to_coco_segment_info(canvas: np.ndarray, annotation, annotation_idx: int, category_id):
36+
def mask_to_coco_segment_info(canvas: np.ndarray, annotation,
37+
annotation_idx: int, category_id):
3738
color = id_to_rgb(annotation_idx)
38-
mask = annotation.value.draw(color = color)
39+
mask = annotation.value.draw(color=color)
3940
shapely = annotation.value.shapely
4041
xmin, ymin, xmax, ymax = shapely.bounds
4142
canvas = np.where(canvas == (0, 0, 0), mask, canvas)
@@ -45,7 +46,11 @@ def mask_to_coco_segment_info(canvas: np.ndarray, annotation, annotation_idx: in
4546
bbox=[xmin, ymin, xmax - xmin, ymax - ymin]), canvas
4647

4748

48-
def process_label(label: Label, idx: Union[int, str], image_root, mask_root, all_stuff = False):
49+
def process_label(label: Label,
50+
idx: Union[int, str],
51+
image_root,
52+
mask_root,
53+
all_stuff=False):
4954
"""
5055
Masks become stuff
5156
Polygon and rectangle become thing
@@ -64,17 +69,19 @@ def process_label(label: Label, idx: Union[int, str], image_root, mask_root, all
6469
categories[annotation.name] = hash_category_name(annotation.name)
6570
if isinstance(annotation.value, Mask):
6671
segment, canvas = (mask_to_coco_segment_info(
67-
canvas, annotation, class_idx + 1 ,categories[annotation.name]))
72+
canvas, annotation, class_idx + 1,
73+
categories[annotation.name]))
6874
segments.append(segment)
6975
is_thing[annotation.name] = 0
7076

7177
elif isinstance(annotation.value, (Polygon, Rectangle)):
7278
segment, canvas = vector_to_coco_segment_info(
73-
canvas,
74-
annotation,
75-
annotation_idx=(class_idx if all_stuff else annotation_idx) + 1,
76-
image=image,
77-
category_id=categories[annotation.name])
79+
canvas,
80+
annotation,
81+
annotation_idx=(class_idx if all_stuff else annotation_idx)
82+
+ 1,
83+
image=image,
84+
category_id=categories[annotation.name])
7885
segments.append(segment)
7986
is_thing[annotation.name] = 1 - int(all_stuff)
8087

@@ -94,15 +101,16 @@ class CocoPanopticDataset(BaseModel):
94101
categories: List[Categories]
95102

96103
@classmethod
97-
def from_common(cls, labels: LabelCollection, image_root, mask_root, all_stuff):
104+
def from_common(cls, labels: LabelCollection, image_root, mask_root,
105+
all_stuff):
98106
all_coco_annotations = []
99107
coco_categories = {}
100108
coco_things = {}
101109
images = []
102110
with ProcessPoolExecutor(max_workers=8) as exc:
103111
futures = [
104-
exc.submit(process_label, label, idx, image_root, mask_root, all_stuff)
105-
for idx, label in enumerate(labels)
112+
exc.submit(process_label, label, idx, image_root, mask_root,
113+
all_stuff) for idx, label in enumerate(labels)
106114
]
107115
for future in tqdm(as_completed(futures)):
108116
image, annotation, categories, things = future.result()
@@ -111,16 +119,17 @@ def from_common(cls, labels: LabelCollection, image_root, mask_root, all_stuff):
111119
coco_categories.update(categories)
112120
coco_things.update(things)
113121

114-
115-
category_mapping = {category_id : idx + 1 for idx, category_id in enumerate(coco_categories.values())}
116-
categories=[
117-
Categories(id=category_mapping[idx],
118-
name=name,
119-
supercategory='all',
120-
isthing=coco_things.get(
121-
name, 1))
122-
for name, idx in coco_categories.items()
123-
]
122+
category_mapping = {
123+
category_id: idx + 1
124+
for idx, category_id in enumerate(coco_categories.values())
125+
}
126+
categories = [
127+
Categories(id=category_mapping[idx],
128+
name=name,
129+
supercategory='all',
130+
isthing=coco_things.get(name, 1))
131+
for name, idx in coco_categories.items()
132+
]
124133

125134
for annot in all_coco_annotations:
126135
for segment in annot.segments_info:

labelbox/data/serialization/ndjson/objects.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,9 @@ def from_common(cls, text_entity: TextEntity,
166166
uuid=extra.get('uuid'),
167167
classifications=classifications)
168168

169+
169170
class NDObject:
171+
170172
@staticmethod
171173
def to_common(annotation: "NDObjectType") -> ObjectAnnotation:
172174
common_annotation = annotation.to_common()

0 commit comments

Comments
 (0)