Open robmarkcole opened 3 months ago
Updated to handle nested segmentation:
def coco_segm_annotation_to_normalized_vertices(coco_ann, *, img_width, img_height):
"""
Convert a COCO segmentation annotation to normalized vertices.
Handles segmentation data that is a list of list of list (nested list for each polygon).
"""
coco_segmentations = coco_ann["segmentation"]
ret = []
for coco_segm_group in coco_segmentations: # Additional loop to handle extra nesting
for coco_segm in coco_segm_group:
if coco_ann["iscrowd"] == 0:
# a single object (iscrowd=0) where polygons are used
vertices = [
point_to_normalized_point(
point={"x": x, "y": y},
img_width=img_width,
img_height=img_height,
origin_location="top_left",
)
for x, y in zip(coco_segm[::2], coco_segm[1::2])
]
ret.append(vertices)
return ret
In the
importing_coco.ipynb
example, the functioncoco_segm_annotation_to_normalized_vertices
doesn't handle nested segmentation. This is demonstrated below:Ideally I would be able to upload cocojson to the platform, but in the meantime I suggest improving this example