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标注的解析、坐标转换也是目标检测任务中最基础的操作。

相关推荐
前网易架构师-高司机5 小时前
带标注的扑克牌识别数据集,识别率99.5%,3083张图,支持yolo,coco json,voc xml,文末有模型训练代码
xml·yolo·json·数据集·数字·扑克牌·纸牌
前网易架构师-高司机5 小时前
带标注的浮游藻类24种数据集,识别率91.5 %数据集, 23175张图,支持yolo,coco json,voc xml,文末有模型训练代码
yolo·json·数据集·微观·生物·浮游·藻类
丨白色风车丨6 小时前
CSDN 博客:YOLOv3 超详细原理讲解:网络结构、创新点、优缺点与实战解析
yolo
张人玉7 小时前
基于 Vue 3 + ECharts + Express + SQLite 的可视化大屏与业务管理系统——YOLOv8 高精度车辆行人检测与计数系统
数据库·vue.js·yolo·sqlite·echarts·express
前网易架构师-高司机1 天前
带标注的成熟棉花识别数据集,识别率83.9%数据集,505张图,支持yolo,coco json,voc xml,文末有模型训练代码
yolo·数据集·成熟·棉花·棉铃·发育·闭合
殷忆枫2 天前
AI笔记三十七:AI边缘端道桥安全监测系统:YOLOv8n推理与Web监控全解析
笔记·yolo
探物 AI2 天前
yolo检测核心组件1:SE注意力机制 (Squeeze-and-Excitation)
yolo
꧁执笔小白꧂3 天前
详细pyenv+venv+pip安装ultralytics
yolo·venv·pyenv·ultralytics
前网易架构师-高司机3 天前
带标注的细胞有丝分裂数据集数据集,识别率95.9%,304张图,支持yolo,coco json,voc xml,文末有模型训练代码
yolo·细胞·显微镜·生物·有丝分裂·显微
前网易架构师-高司机4 天前
带标注的移动通信基站信号塔,可识别塔架和塔身数据集,识别率93.5%,1008张图,支持yolo,coco json,voc xml,文末有模型训练代码
yolo·数据集·通信基站·信号塔·塔架·塔身