Pascal VOC数据集简介及数据格式说明

了解Pascal VOC数据集的背景、核心构成,以及它的具体数据格式(包括目录结构、标注文件格式等),我会结合直观的例子和实际文件内容,让你清晰掌握这一经典目标检测数据集的全貌。

一、Pascal VOC数据集简介

Pascal VOC(Pattern Analysis, Statistical Modelling and Computational Learning Visual Object Classes)是由英国牛津大学视觉几何组(VGG)主导的经典公开数据集,也是目标检测、图像分割、分类等计算机视觉任务的基准数据集。

1. 核心关键信息
维度 详细说明
发布周期 2005-2012年持续更新,其中VOC2007VOC2012是最常用的版本(YOLOv1论文中主要使用这两个版本)
核心任务 目标检测、图像分类、语义分割、实例分割、动作识别等
目标类别 共20个通用物体类别(+1个背景类),包括:aeroplane、bicycle、bird、boat、bottle、bus、car、cat、chair、cow、diningtable、dog、horse、motorbike、person、pottedplant、sheep、sofa、train、tvmonitor
数据规模 - VOC2007:约9963张图像,包含24640个标注目标 - VOC2012:约11540张图像,包含27450个标注目标
数据划分 每个版本分为train(训练)、val(验证)、test(测试)集;常用组合:VOC2007+2012 train/val作为训练集,VOC2007 test作为测试集
2. 数据集特点
  • 覆盖日常场景(室内、室外),目标尺度、角度、遮挡情况多样,贴近真实应用;
  • 标注精度高,每个目标都有精确的边界框(bounding box)和类别标注;
  • 是目标检测算法(如YOLO、Faster R-CNN)的经典评测基准。

二、Pascal VOC数据集格式详解(附完整例子)

Pascal VOC的核心数据格式包括目录结构图像文件XML标注文件数据集划分文件,以下逐一说明:

1. 整体目录结构(以VOC2007为例)
复制代码
VOC2007/
├── Annotations/       # 所有图像的XML标注文件(核心),1张图像对应1个XML文件
├── ImageSets/         # 数据集划分文件(txt格式),指定哪些图像属于train/val/test
│   └── Main/
│       ├── train.txt  # 训练集图像名称列表(无后缀)
│       ├── val.txt    # 验证集图像名称列表
│       ├── test.txt   # 测试集图像名称列表
│       ├── trainval.txt # train+val的合并列表
│       └── {类别名}_train.txt # 按类别划分的列表(如dog_train.txt)
├── JPEGImages/        # 所有原始图像文件(JPG格式),1张图像对应1个文件
└── SegmentationClass/ # 语义分割标注(PNG格式,目标检测任务无需关注)
2. 核心:XML标注文件(Annotations目录)

每张图像对应一个XML文件(文件名与图像名一致,如000001.jpg对应000001.xml),包含图像基本信息、目标的边界框和类别标注。

完整XML示例(标注了1个dog目标)
xml 复制代码
<annotation>
    <folder>VOC2007</folder>          <!-- 数据集文件夹名 -->
    <filename>000001.jpg</filename>  <!-- 图像文件名 -->
    <path>/VOC2007/JPEGImages/000001.jpg</path> <!-- 图像完整路径 -->
    <source>                         <!-- 图像来源(可忽略) -->
        <database>The VOC2007 Database</database>
        <annotation>PASCAL VOC2007</annotation>
        <image>flickr</image>
    </source>
    <size>                           <!-- 图像尺寸(关键) -->
        <width>448</width>           <!-- 宽度(像素) -->
        <height>448</height>         <!-- 高度(像素) -->
        <depth>3</depth>             <!-- 通道数(RGB=3) -->
    </size>
    <segmented>0</segmented>         <!-- 是否用于分割(0=否,1=是) -->
    <object>                         <!-- 目标标注(1个object对应1个目标,多目标则有多个object标签) -->
        <name>dog</name>             <!-- 目标类别名(必须是20类之一) -->
        <pose>Frontal</pose>         <!-- 目标姿态(可忽略) -->
        <truncated>0</truncated>     <!-- 是否截断(0=完整,1=截断) -->
        <difficult>0</difficult>     <!-- 是否难检测(0=易,1=难,训练时可过滤) -->
        <bndbox>                     <!-- 目标边界框(关键) -->
            <xmin>128</xmin>         <!-- 左上角x坐标(像素) -->
            <ymin>192</ymin>         <!-- 左上角y坐标(像素) -->
            <xmax>256</xmax>         <!-- 右下角x坐标(像素) -->
            <ymax>320</ymax>         <!-- 右下角y坐标(像素) -->
        </bndbox>
    </object>
</annotation>
多目标XML示例(标注了dog+person两个目标)

只需在<annotation>标签内添加多个<object>标签即可:

xml 复制代码
<annotation>
    <!-- 省略图像基本信息 -->
    <object>
        <name>dog</name>
        <bndbox>
            <xmin>128</xmin>
            <ymin>192</ymin>
            <xmax>256</xmax>
            <ymax>320</ymax>
        </bndbox>
    </object>
    <object>
        <name>person</name>
        <bndbox>
            <xmin>300</xmin>
            <ymin>50</ymin>
            <xmax>400</xmax>
            <ymax>400</ymax>
        </bndbox>
    </object>
</annotation>
XML标签关键说明
标签 作用
<size> 必须保留,用于获取图像宽高,计算相对坐标时需要
<object> 每个目标对应一个,多目标则重复该标签
<name> 目标类别,必须是VOC20类之一,是类别标注的核心
<bndbox> 目标边界框的像素坐标,xmin/ymin(左上)、xmax/ymax(右下)是关键
<difficult> 难检测目标标记,训练时建议过滤(避免影响模型收敛)
3. 图像文件(JPEGImages目录)
  • 格式:JPG格式,分辨率不固定(如320×240、448×448、800×600等);
  • 命名:与XML文件一一对应(如000001.jpg);
  • 训练前需统一resize为固定尺寸(YOLOv1要求448×448)。
4. 数据集划分文件(ImageSets/Main目录)

train.txt为例,内容是图像名称(无后缀),每行一个:

复制代码
000001
000002
000003
...

这类文件用于快速划分训练/验证/测试集,无需手动筛选图像。

三、VOC数据集与YOLOv1的衔接示例

假设你要使用VOC2007训练YOLOv1,核心步骤:

  1. ImageSets/Main/train.txt读取训练集图像名称;
  2. 对每个名称(如000001):
    • 加载JPEGImages/000001.jpg图像;
    • 加载Annotations/000001.xml标注文件,解析出目标的xmin/ymin/xmax/ymax和类别;
    • 做数据增强(缩放、裁剪、翻转),同步调整边界框像素坐标;
    • 将增强后的像素坐标转换为YOLOv1的7×7×25标签张量;
  3. 批量加载图像和标签,输入YOLOv1模型训练。

总结

Pascal VOC数据集的核心关键点:

  1. 核心构成:以"图像+XML标注"为基本单元,20个通用类别,VOC2007/2012是目标检测的经典基准;
  2. 标注格式 :XML文件包含图像尺寸、目标边界框(像素坐标)和类别,多目标对应多个<object>标签;
  3. 与YOLOv1衔接:需先解析XML的像素坐标,经数据增强后,再转换为YOLOv1的网格化相对坐标;
  4. 目录规范:Annotations(XML)、JPEGImages(图像)、ImageSets(划分)是三大核心目录,需严格对应命名。

理解VOC数据集的格式是使用它训练YOLOv1的基础,其XML标注的解析、坐标转换也是目标检测任务中最基础的操作。

相关推荐
YOLO数据集集合2 小时前
全球无人机航拍树冠覆盖数据集 | 树冠分割 语义分割 无人机航拍 全球森林监测 GeoTIFF 生态恢复9083期
深度学习·yolo·目标检测·无人机·无人机视角·全球森林
Python图像识别3 小时前
10-【2027毕设】YOLO11PCB缺陷检测识别系统 - Python完整源码+PyQt5界面+训练模型+数据集
python·深度学习·yolo·毕业设计·毕设
YOLO数据集集合4 小时前
无人机树木识别检测数据集 | 树木检测 树种分类 无人机航拍 林业调查9082期
深度学习·yolo·目标检测·无人机·无人机视角·树冠识别·树冠
qq7422349845 小时前
YOLO 之外的另一半:RF-DETR 检测实战
yolo
YOLO数据集集合1 天前
无人机低空影像语义分割数据集 | 语义分割 遥感影像 无人机低空 地物分类 Potsdam Vaihingen LoveDA 9080期
人工智能·深度学习·yolo·目标检测·计算机视觉·语义分割·无人机数据集
智购科技自动贩卖机1 天前
自动售货机嵌入式系统时钟同步与时间管理实战:从RTC校准到断网时间保持的工程实践
大数据·linux·数据库·人工智能·yolo
计算机编程-吉哥2 天前
深度学习:我用YOLO11-L做了一个水下垃圾检测系统 对比YOLOv8-L/Faster R-CNN【计算机毕业设计选题推荐】
人工智能·深度学习·yolo·课程设计·计算机毕业设计选题
AI棒棒牛2 天前
YOLO26最新创新改进系列:融合 E3AD 认知注意力 Neck:具身认知增强的 FPN/PAN 特征选择机制,高效创新!
人工智能·yolo·计算机视觉·yolo26
hans汉斯2 天前
数据挖掘|基于BP神经网络的少数民族村寨文化型旅游体验产品潜在游客挖掘
深度学习·神经网络·算法·yolo·软件工程·bp·汉斯出版社
JAI科研3 天前
YOLO 完全指南(七):YOLO识别工程化 (上)
人工智能·深度学习·神经网络·yolo·目标检测·计算机视觉·transformer