如何创建与TensorFlow一起使用的MS COCO style数据集?有谁有这方面的经验吗?我有图像和注释,还有地面实况面具。我需要转换他们,以与微软可可和任何帮助是感激的。我找不到任何开源工具来创建COCO风格的JSON批注。
JSON MS COCO读取TensorFlow文件,我对此并不是很熟悉。
发布于 2019-01-20 08:47:40
我正在开发一个python库,它有许多有用的类和函数来完成这项工作。它被称为Image Semantics。
下面是添加蒙版并将其导出为COCO格式的示例:
from imantics import Mask, Image, Category
image = Image.from_path('path/to/image.png')
mask = Mask(mask_array)
image.add(mask, category=Category("Category Name"))
# dict of coco
coco_json = image.export(style='coco')
# Saves to file
image.save('coco/annotation.json', style='coco')发布于 2018-04-18 00:03:49
您可以尝试使用pycococreator,它包括一组工具,用于将二进制遮罩转换为COCO使用的多边形和RLE格式。
https://github.com/waspinator/pycococreator/
以下是如何使用它从二进制掩码创建注释信息的示例:
annotation_info = pycococreatortools.create_annotation_info(
segmentation_id, image_id, category_info, binary_mask,
image.size, tolerance=2)您可以在此处阅读有关如何使用pycococreator的更多详细信息:https://patrickwasp.com/create-your-own-coco-style-dataset/
发布于 2018-03-12 20:55:10
多亏了waleedka的代码,为了将由0和1组成的掩码数组转换为类似于COCO样式的数据集的多边形,可以使用skimage.measure.find_contours。
import numpy
from skimage.measure import find_contours
mask = numpy.zeros(width, height) # Mask
mask_polygons = [] # Mask Polygons
# Pad to ensure proper polygons for masks that touch image edges.
padded_mask = np.zeros(
(mask.shape[0] + 2, mask.shape[1] + 2), dtype=np.uint8)
padded_mask[1:-1, 1:-1] = mask
contours = find_contours(padded_mask, 0.5)
for verts in contours:
# Subtract the padding and flip (y, x) to (x, y)
verts = np.fliplr(verts) - 1
pat = PatchCollection([Polygon(verts, closed=True)], facecolor='green', linewidths=0, alpha=0.6)
mask_polygons.append(pat) 要为COCO样式的数据集生成JSON文件,您应该查看Python's JSON API。除此之外,它只是简单地匹配COCO数据集的JSON文件所使用的格式。
你应该看看我的COCO style dataset generator GUI repo。我构建了一个非常简单的工具来创建COCO样式的数据集。
您感兴趣的特定文件是create_json_file.py,它采用matplotlib多边形坐标的形式(x1,y1,x2,y2 ...)对于每个多边形批注,并将其转换为JSON批注文件,与COCO的默认格式非常相似。
https://stackoverflow.com/questions/45545187
复制相似问题