三种目标检测数据集格式对比

特性 PASCAL VOC 格式 COCO 格式 YOLO 格式
格式名称 PASCAL Visual Object Classes Common Objects in Context You Only Look Once
存储文件 .xml 文件 .json 文件 .txt 文件
文件组织 每张图片对应一个XML文件 通常一个数据集划分(如训练集)对应一个大的JSON文件 每张图片对应一个TXT文件(若无目标则为空文件)
BBox坐标含义 [xmin, ymin, xmax, ymax] [xmin, ymin, width, height] [x_center_norm, y_center_norm, width_norm, height_norm]
坐标中文解释 [左上角x, 左上角y, 右下角x, 右下角y] [左上角x, 左上角y, 宽度, 高度] [归一化的中心点x, 归一化的中心点y, 归一化的宽度, 归一化的高度]
坐标类型 像素坐标 (绝对值) 像素坐标 (绝对值) 归一化坐标 (相对于图像尺寸的比例,0到1之间)
优点 格式直观,XML结构清晰,包含丰富的元数据。 现代框架的事实标准,扩展性强,不仅支持bbox,还支持实例分割、关键点等复杂任务。 格式极其简单,文件小,磁盘IO效率高,可以直接被YOLO模型用于训练。
缺点/注意事项 XML文件解析相对较慢,文件冗余信息多。 整个数据集一个大文件,不方便单独查看某个样本;JSON结构嵌套较深。 标签文件中不包含类别名称、图片尺寸等元数据,需要额外文件和操作来还原信息。
典型应用 经典的计算机视觉竞赛和框架,如早期版本的Faster R-CNN。 目前最主流的格式,被DINOv3, MMDetection, Detectron2等绝大多数现代检测框架所使用。 YOLO系列模型(v3, v5, v8等)训练时的首选格式。

总结一下关键区别:

  • 坐标定义:这是最核心的区别。VOC用右下角坐标定义大小,COCO用宽高定义大小,而YOLO用归一化的中心点和宽高
  • 坐标尺度:VOC和COCO使用绝对像素值,而YOLO使用相对比例值
  • 文件结构:VOC和YOLO是一个图片一个标签文件,而COCO是将所有图片的标注信息整合在一个大的JSON文件里。

COCO:

  "images": [
    {
      "id": 0,
      "file_name": "0001_41.bmp",
      "height": 512,
      "width": 512
    },
    
  "annotations": [
    {
      "id": 0,
      "image_id": 0,
      "category_id": 0,
      "bbox": [
        134.0,
        311.0,
        5.0,
        5.0
      ],
      "area": 25.0,
      "iscrowd": 0,
      "segmentation": []
    },

PASCAL VOC:

<annotation><folder>VOC</folder><filename>0001_41.bmp</filename><size><width>512</width><height>512</height><depth>3</depth></size><object><name>nodule</name><bndbox><xmin>134</xmin><ymin>311</ymin><xmax>139</xmax><ymax>316</ymax></bndbox></object></annotation>

YOLO:

0 0.3251953125 0.6572265625 0.021484375 0.025390625

更多推荐