计算机视觉标注格式转换指南

随着计算机视觉技术的飞速发展,用于描述图像中边界框位置的文件格式也在不断增加,例如PASCAL VOCXML、COCO JSON、各种CSV注释格式、Darknet .txt文件等。这些格式的多样性使得跟踪和转换它们变得繁琐且耗时。转换文件格式甚至可能分散对核心视觉任务的注意力——创建高质量、可运行的模型。正如所说,开发者花费时间在转换注释格式上,就像花费时间将Word文档转换为PDF一样。

在这篇文章中,将介绍两种常见的注释格式——PASCAL VOC XML和YOLO Darknet,并展示如何将它们相互转换。可以使用类似的步骤来转换任何一对计算机视觉注释格式。

Roboflow可以在几分钟内从任何注释格式生成YOLO Darknet、COCO JSON等格式。文章末尾将展示如何操作。

PASCAL VOC XML格式

PASCAL(模式分析、统计建模和计算学习)是由欧盟资助的一个卓越网络。从2005年到2012年,PASCAL举办了视觉对象挑战(VOC)。PASCAL每年发布对象检测数据集并报告基准测试。(一个聚合的PASCAL VOC数据集可以在这里找到。)

PASCAL VOC注释以XML格式发布,每张图像都有一个相应的XML文件描述框架内的边界框。例如,在浣熊检测的浣熊数据集中,一个XML注释示例如下:

<annotation> <folder></folder> <filename>raccoon-40.jpg</filename> <path>raccoon-40.jpg</path> <source> <database>roboflow.ai</database> </source> <size> <width>416</width> <height>416</height> <depth>3</depth> </size> <segmented>0</segmented> <object> <name>raccoon</name> <pose>Unspecified</pose> <truncated>0</truncated> <difficult>0</difficult> <occluded>0</occluded> <bndbox> <xmin>142</xmin> <xmax>302</xmax> <ymin>61</ymin> <ymax>318</ymax> </bndbox> </object> </annotation>

注意几个关键点:(1) 被注释的图像文件作为相对路径提及;(2) 图像元数据包括宽度、高度和深度;(3) 边界框像素位置由左上角和右下角的xmin、ymin、xmax和ymax表示。

YOLO Darknet格式

随着YOLO模型家族的流行,YOLO Darknet格式也越来越受到关注。最新的YOLO模型YOLOv5,使得开发高性能、快速推理模型变得极其迅速。YOLOv4在COCO基准测试中继续表现出色,并且在mAP上略胜一筹。

YOLO Darknet注释存储在文本文件中。与VOC XML类似,每张图像都有一个注释。与VOC格式不同,YOLO注释只有文本文件定义每个图像中的对象,每个对象一行。让看看上面的浣熊图像注释,但是以YOLO格式表示:

0 0.534375 0.4555555555555555 0.3854166666666667 0.6166666666666666

YOLO注释位置也是以相对范围书写的。也就是说,每个边界框坐标都从零到一进行缩放,以确定给定点在图像中的位置。最后,因为定义注释的文本文件包含正在注释的对象的ID,看到了对象ID的声明。

在上面的例子中,看到了类别ID 0,和两个点——底部位置(0.534375, 0.4555555555555555)和左上角位置(0.3854166666666667, 0.6166666666666666)。因此,YOLO Darknet格式还必须包含所谓的“标签映射”,这是一个将类别ID映射到类名的文件。在例子中,只有一个类别(浣熊),所以类别ID零映射到浣熊。

从PASCAL VOC转换到YOLO Darknet

要转换注释,可以编写一个脚本来映射上述输入和位置到它们的相对输出位置。另外,可以使用Roboflow,它为完成了这项工作,只需几次点击。

首先,创建一个新的数据集。点击“创建数据集”并给数据集一个名称,并描述所有注释组(例如,BCCD数据集将是“细胞”)。将图像和注释拖放到上传区域。然后Roboflow会检查注释以确保它们是合理的(例如,没有边界框超出框架)。

一旦数据集经过检查和处理,点击右上角的“开始上传”。一旦数据集上传完成,将被引导到主“修改数据集”页面。在这里,可以应用预处理和/或增强步骤,如果需要的话。请注意,“自动定向”和“调整大小”默认是开启的。要将原始图像原样转换,关闭这些并生成导出。

创建一个带有任何预处理步骤的导出。图像已经准备好被下载了。可以将zip文件下载到计算机上,或者可以创建一个代码片段,使用wget将它们下载到Jupyter笔记本中。

Roboflow支持广泛的导出格式:PASCAL VOC XML、CreateML JSON、TuriCreate JSON、COCO JSON、Tensorflow Object Detection TFRecord、YOLO Darknet、YOLOv3 Keras等等。

使用Roboflow,甚至可以创建训练集、验证集和测试集——并为每个生成COCO JSON注释。这使得尝试不同的计算机视觉框架和模型变得非常容易。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485