PASCAL VOC(The PASCAL Visual Object Classes)是一个世界级的计算机视觉挑战赛,由英国牛津大学的计算机视觉研究组创建,并得到了欧盟的资助。该挑战赛自2005年开始举办,每年一届,直到2012年结束,为图像识别和分类提供了一整套标准化的数据集,用来构建和评估用于图像分类(Classification)、目标检测(Object Detection)和分割(Segmentation)的算法。PASCAL的全称是Pattern Analysis, Statistical modelling and ComputAtional Learning。
PASCAL VOC数据集是计算机视觉领域的一个重要资源,广泛应用于目标检测、对象分类和语义分割等任务。通过这个数据集,研究人员可以评估模型在像素级别上的分割精度,并探索改进算法的方法。许多著名的计算机视觉模型,如R-CNN系列、SSD和YOLO等,都是基于PASCAL VOC数据集进行开发和优化的。
PASCAL VOC数据集由5个部分构成:JPEGImages,Annotations,ImageSets,SegmentationClass以及SegmentationObject。
VOC(Visual Object Classes)数据集的目录结构通常较为统一,以下是一个典型的VOC数据集目录结构示例,以VOC2007为例:
VOC2007
|—— labels.txt # 标签文件,里面内容是识别对象名称
├── JPEGImages # 存放源图片的文件夹
│ ├── 000001.jpg
│ ├── 000002.jpg
│ └── ... # 其他图片文件
├── Annotations # 存放与JPEGImages中图片一一对应的xml标注文件
│ ├── 000001.xml
│ ├── 000002.xml
│ └── ... # 其他xml文件
├── ImageSets #Layout、Main、Action和Segmentation子文件夹分别用于不同目的的数据集划分
│ ├── Layout
│ │ ├── train.txt
│ │ ├── trainval.txt
│ │ ├── test.txt
│ │ └── val.txt
│ ├── Main #测试集图片的文件名、训练集图片的文件名、训练验证集文件名、验证集文件名
│ │ ├── train.txt
│ │ ├── trainval.txt
│ │ ├── test.txt
│ │ └── val.txt
│ ├── Action
│ │ ├── ... # 特定任务的划分文件,如动作识别
│ └── Segmentation
│ ├── train.txt
│ ├── trainval.txt
│ ├── test.txt
│ └── val.txt
├── SegmentationClass # 用于图像分割的类别标注图
│ ├── ...
└── SegmentationObject # 用于图像分割的实例标注图
├── ...
目录结构详细说明:
- JPEGImages:
- 此文件夹存放数据集中的所有原始图像文件。图像文件的格式并不限于JPG,尽管文件夹名为JPEGImages。
- Annotations:
- 此文件夹存放与JPEGImages中每张图片对应的xml标注文件。每个xml文件包含对应图片的详细信息,如图像尺寸、对象类别、边界框坐标等。
- ImageSets:
- 这是一个包含多个子文件夹的目录,用于存放数据集的划分文件(即txt文件)。
- Layout、Main、Action和Segmentation子文件夹分别用于不同目的的数据集划分。
- train.txt、val.txt和test.txt等文件分别列出了训练集、验证集和测试集的图片文件名(不包含扩展名)。
- 这是一个包含多个子文件夹的目录,用于存放数据集的划分文件(即txt文件)。
- SegmentationClass 和 SegmentationObject:
- 这两个文件夹存放的都是图片,且都是图像分割结果图,对目标检测任务来说没有用。class segmentation 标注出每一个像素的类别 。object segmentation 标注出每一个像素属于哪一个物体。
Annotation的标注文件(XML)格式说明:
VOC数据集的xml标注文件包含了图像的基本信息、图像尺寸、对象类别、边界框坐标等。以下是一个xml标注文件的基本结构示例:
<annotation>
<folder>VOC2007</folder> # 图片所处文件夹
<filename>000007.jpg</filename> # 图片名
<source> #图片来源相关信息
<database>The VOC2007 Database</database>
<annotation>PASCAL VOC2007</annotation>
<image>flickr</image>
<flickrid>194179466</flickrid>
</source>
<size> #图片尺寸
<width>640</width>
<height>480</height>
<depth>3</depth>
</size>
<segmented>0</segmented> #是否有分割label
<object> 包含的物体
<name>car</name> #物体类别
<pose>Unspecified</pose> #物体的姿态
<truncated>0</truncated> #物体是否被部分遮挡(>15%)
<difficult>0</difficult> #是否为难以辨识的物体, 主要指要结体背景才能判断出类别的物体。虽有标注, 但一般忽略这类物体
<bndbox> #物体的bound box
<xmin>2</xmin>
<ymin>156</ymin>
<xmax>111</xmax>
<ymax>259</ymax>
</bndbox>
</object>
</annotation>
COCO数据集(Common Objects in Context)是微软发布的一个大规模、多功能的计算机视觉数据集,被广泛应用于图像检测、语义分割、图像标题生成、关键点检测等多种任务中。
数据集结构
COCO数据集由多个子集组成,包括训练集(train)、验证集(val)和测试集(test),并配有详细的注释文件。数据集目录结构通常如下:
├── coco: 数据集根目录
├── train: 所有训练图像文件夹(118287张)
├── val: 所有验证图像文件夹(5000张)
└── annotations: 对应标注文件夹
├── instances_train2017.json: 对应目标检测、分割任务的训练集标注文件
├── instances_val2017.json: 对应目标检测、分割任务的验证集标注文件
├── captions_train2017.json: 对应图像描述的训练集标注文件
├── captions_val2017.json: 对应图像描述的验证集标注文件
├── person_keypoints_train2017.json: 对应人体关键点检测的训练集标注文件
└── person_keypoints_val2017.json: 对应人体关键点检测的验证集标注文件夹
数据集用途
COCO数据集适用于多种计算机视觉任务,包括但不限于:
- 目标检测(Object Detection):识别图像中的所有目标,并显示其边界框。
- 实例分割(Instance Segmentation):识别图像中的目标,并生成每个目标的分割掩码。
- 语义分割(Semantic Segmentation):把图像划分为具有不同语义标签的区域。
- 人体关键点检测(Keypoint Detection):检测人体的关键点位置,如头、肩、肘、膝等。
- 图像标题生成(Image Captioning):生成描述图像内容的文本。
适用模型
COCO数据集适用于多种类型的模型,包括但不限于:
- 目标检测:Faster R-CNN、YOLO、SSD、EfficientDet等
- 实例分割:Mask R-CNN、PANet、YOLACT等
- 关键点检测:OpenPose、HRNet、Simple Baselines for Human Pose Estimation等
- 语义分割:DeepLab系列、PSPNet、FCN等