目标检测数据集

目录

数据集介绍

数据集是模型训练最重要的部分,一个好的数据集能够给模型效果很大的提升。我们构建一个项目首要的就是数据集的选择,包括数据和标注。衡量一个数据集好坏的标准:

  • 数据集的规模。
  • 数据集的内容质量。
  • 数据集的标注质量。

VOC数据集

PASCAL Visual Object Classes(PASCAL VOC) 是 2005-2012 年由欧盟 PASCAL 网络维护的通用视觉基准,核心任务包括 分类、检测、分割、动作识别。当今仍常把它的数据格式称为“VOC 格式”。


1 时间线与版本

年份 主要新增 类别数 图像数
2005 仅 4 类分类 4 1 578
2007 首次检测任务 20 9 963
2008-2010 逐年扩增图片&分割 20 ~10k/年
2011-2012 两组数据,仍开放 20 11 540

最常引用的是 VOC2007 与 VOC2012;两者常合并训练再于 2007-test 测试。


2 核心任务

a) Classification

  • 给出图片,判断类别是否存在(多标签)。

b) Detection(我们关注的)

  • 边框 + 类别;评估指标 mAP@0.5(PASCAL IoU 阈值)。

c) Segmentation

  • 语义分割 21 类(20 对象 + 背景)。

d) Person Layout

  • 人体部件边界框(头/手/脚)。

e) Action Classification

  • 20 种人体动作,依赖部件框标注。

3 类别一览(20 类)

: person
动物: bird, cat, cow, dog, horse, sheep
交通工具: aeroplane, bicycle, boat, bus, car, motorbike, train
室内/常见: bottle, chair, dining table, potted plant, sofa, tv/monitor


4 目录结构(官方下载包)

VOCdevkit
└── VOC2012
    ├── Annotations/     # 每张图一个 XML,存边框与 labels
    ├── ImageSets/       # 训练/验证/测试列表(txt),按任务分
    ├── JPEGImages/      # 原始 jpg,~17k 张
    ├── SegmentationClass/ # 逐像素类别 mask(PNG,调色板存储)
    └── SegmentationObject/# 实例级 mask(同一类别不同实例不同色)

5 标注文件示范 (简化)

<annotation>
  <filename>2007_000027.jpg</filename>
  <size><width>500</width><height>333</height><depth>3</depth></size>
  <object>
    <name>person</name>
    <truncated>0</truncated>
    <difficult>0</difficult>
    <bndbox>
      <xmin>174</xmin> 
      <ymin>101</ymin>
      <xmax>349</xmax>
      <ymax>351</ymax>
    </bndbox>
  </object>
</annotation>

字段说明:
- truncated:光照、遮挡、小目标视线影响标记 (是否截断) - difficult:辨识难度 - part:人体部件专用


6 格式衍生:VOC-style 数据

  • 标签 = XML (边界框 + 类别)
  • 遮罩 = PNG 调色板(0-20 整数)
  • 列表 = txt

诸多数据集(自行收集的检测/分割)直接沿用上述模式,称为“VOC 格式”,无需改加载代码。


7 加载代码片段(PyTorch torchvision)

from torchvision.datasets import VOCDetection
ds = VOCDetection(root='./data', year='2007', image_set='train',
                  download=True, transforms=YourTransforms())
img, target = ds[0]   # target 是 Python-dict 形式的 XML 内容

如只读边框,:

from pascal_voc_tools import XmlReader   # 第三方小库
ann = XmlReader('VOC2007/Annotations/000001.xml')
boxes, labels = ann.get_boxes_labels()   # ndarray, list

8 评估指标

  • 检测/Layout:mAP@IoU=0.5(PASCAL-style)。
  • 分割:mIoU (mean Intersection over Union)。
  • Action:例-level AP。

9 VOC 的局限与影响

  • 规模较小(仅 20 类,10k+ 图),易被现代大网络过拟合。
  • 类别分布不均(人/车多,羊/盆栽少)。
  • 提供的 VOC-style XML+PNG 工作流成为工业事实标准;
    后续 COCO、Open Images 仍保留“列表文件+标注文件”思路。

10 快速上手命令

  1. 下载 VOC2007/test(官网仍可获取)
    wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar

  2. 解压到 ./data/,目录结构如第4点。

  3. 用 torchvision 或 detectron2 / MMDetection 直接训练/测试。

VOC 虽小,却是现代目标检测/分割任务的“基石数据集”;其目录与 XML 标注格式至今仍是业界默认模板。