Voc数据集简述

一、了解VOC

是一种数据集的格式——VOC格式的数据集

PASCAL VOC挑战赛 (The PASCAL Visual Object Classes )是一个世界级的计算机视觉挑战赛,
PASCAL VOC挑战赛主要包括以下几类:

  • 图像分类(Object Classification)
  • 目标检测(Object Detection)
  • 目标分割(Object Segmentation)
  • 行为识别(Action Classification) 等。

1.1 voc数据集下载

现在主要使用两个版本的voc,为2007和2012
链接地址:voc官网
voc2007数据集下载
voc2012数据集下载
浏览器或者迅雷(最快)下载。

二、VOC文件结构

在文件夹下按住shift+鼠标右键,打开shell(VOC2012为例)

VOCdevkit
    └── VOC2012
         ├── Annotations               所有的图像标注信息(XML文件)
         ├── ImageSets    
         │   ├── Action                人的行为动作图像信息
         │   ├── Layout                人的各个部位图像信息
         │   │
         │   ├── Main                  目标检测分类图像信息
         │   │     ├── train.txt       训练集(5717)
         │   │     ├── val.txt         验证集(5823)
         │   │     └── trainval.txt    训练集+验证集(11540)
         │   │
         │   └── Segmentation          目标分割图像信息
         │         ├── train.txt       训练集(1464)
         │         ├── val.txt         验证集(1449)
         │         └── trainval.txt    训练集+验证集(2913)
         │ 
         ├── JPEGImages                所有图像文件
         ├── SegmentationClass         语义分割png图(基于类别)
         └── SegmentationObject        实例分割png图(基于目标)

2.1 Annotations

存放xml格式的标签文件,每个xml对应JPEGImage中的一张图片。并且每个xml中存放的是标记的各个目标的位置和类别(C=20)信息,命名通常与对应的原始图像一样,以(x,y)的格式保存坐标点。可使用labelImg进行标注和查看。
xml文件解析:

<annotation>  
    <folder>VOC2012</folder>                             
    <filename>2007_000392.jpg</filename> //文件名  
    <source>                             //图像来源(不重要)  
        <database>The VOC2007 Database</database>  
        <annotation>PASCAL VOC2007</annotation>  
        <image>flickr</image>  
    </source>  
    <size>                              //图像尺寸(长宽以及通道数)                        
        <width>500</width>  
        <height>332</height>  
        <depth>3</depth>  
    </size>  
    <segmented>1</segmented>            //是否用于分割(在图像物体识别中01无所谓)  
    <object>                            //检测到的物体  
        <name>horse</name>              //物体类别  
        <pose>Right</pose>              //拍摄角度  
        <truncated>0</truncated>        //是否被截断(0表示完整)  
        <difficult>0</difficult>        //目标是否难以识别(0表示容易识别)  
        <bndbox>                        //bounding-box(包含左下角和右上角xy坐标)  
            <xmin>100</xmin>  
            <ymin>96</ymin>  
            <xmax>355</xmax>  
            <ymax>324</ymax>  
        </bndbox>  
    </object>  
    <object>              //检测到多个物体  
        <name>person</name>  
        <pose>Unspecified</pose>  
        <truncated>0</truncated>  
        <difficult>0</difficult>  
        <bndbox>  
            <xmin>198</xmin>  
            <ymin>58</ymin>  
            <xmax>286</xmax>  
            <ymax>197</ymax>  
        </bndbox>  
    </object>  
</annotation> 

2.2 ImageSets

  • Action 存放人的动作
  • Layout 存放的是具有人体部位的数据(head、feet等)
  • Main 图像物体识别的数据
  • Segmentation 可用于分割的数据

训练集与测试集

  • train.txt 训练集
    均为图片名,没有后缀。以train.txt为例,分为两列,第一列为图像名如00012;第二列为-1和1,-1表示目标在对应的图像没有出现,1则表示出现。
  • val.txt 验证集
  • trainval.txt 训练和验证集

2.3 JPEGImages

所有的图片,包括训练和测试的图片
共17125张图片
在这里插入图片描述

2.4 SegmentationClass

2.5 SegmentationObject

三、目标检测任务

如何使用数据集中的数据进行目标检测呢?

  1. 首先在VOC2012\ImageSets\Main中,读取txt文件
  • xxx_train xxx类的训练集
  • xxx_val xxx类的验证集
  • xxx_trainval xxx类的训练和验证集
  1. 在VOC2012\Annotations
    接着通过索引在Annotations文件夹下找到对应的标注文件(.xml)。
  2. 接着通过在标注文件中的filename字段在JPEGImages 文件夹中找到对应的图片。比如在2007_000323.xml文件中的filename字段为2007_000323.jpg,那么在JPEGImages 文件夹中能够找到2007_000323.jpg文件。

四、语义分割任务

如何领用数据集进行语义分割任务呢?

  1. VOC2012\ImageSets\Segmentation中读取对应的txt文件
  └── Segmentation          目标分割图像信息
        ├── train.txt       训练集(1464)
        ├── val.txt         验证集(1449)
        └── trainval.txt    训练集+验证集(2913)

  1. 在VOC2012\JPEGImages 找到对应的图片
  2. 在VOC2012\SegmentationClass找到对应的标注图像(png)

注意,在语义分割中对应的标注图像(.png)用PIL的Image.open()函数读取时,默认是P模式,即一个单通道的图像。在背景处的像素值为0,目标边缘处用的像素值为255(训练时一般会忽略像素值为255的区域),目标区域内根据目标的类别索引信息进行填充,例如人对应的目标索引是15,所以目标区域的像素值用15填充。

五、实例分割任务

注意,在实例分割中对应的标注图像(.png)用PIL的Image.open()函数读取时,默认是P模式,即一个单通道的图像。在背景处的像素值为0,目标边缘处或需要忽略的区域用的像素值为255(训练时一般会忽略像素值为255的区域)。然后在Annotations文件夹中找到对应的xml文件,解析xml文件后会得到每个目标的信息,而对应的标注文件(.png)的每个目标处的像素值是按照xml文件中目标顺序排列的。如下图所示,xml文件中每个目标的序号是与标注文件(.png)中目标像素值是对应的。

六、类别索引与名称对应关系

{
	"background": 0,
    "aeroplane": 1,
    "bicycle": 2,
    "bird": 3,
    "boat": 4,
    "bottle": 5,
    "bus": 6,
    "car": 7,
    "cat": 8,
    "chair": 9,
    "cow": 10,
    "diningtable": 11,
    "dog": 12,
    "horse": 13,
    "motorbike": 14,
    "person": 15,
    "pottedplant": 16,
    "sheep": 17,
    "sofa": 18,
    "train": 19,
    "tvmonitor": 20
}

参考博客:链接: 参考

VOC数据集是图像识别领域中常用的一个数据集,包含大量的图像和相应的标注信息。对于VOC数据集进行数据清洗的目的是为了提高数据的质量和可用性,以便于后续的模型训练和评估。 数据清洗的过程可以包括以下几个步骤: 1. 去除无效样本:VOC数据集中可能包含一些无效的样本,例如图像质量较差或者标注信息有误的样本。我们可以通过图像质量评估算法或人工检查的方式去除这些无效样本,确保我们所使用的数据质量较高。 2. 标注一致性检查:VOC数据集的标注信息包括目标的类别和位置信息,这些信息应该是一致的。在数据清洗过程中,我们可以检查每个图像对应的标注信息,确保类别标签的正确性和位置信息的一致性。如果发现错误的标注信息,我们可以进行修正或删除。 3. 处理类别不平衡:VOC数据集中的类别分布可能不均衡,导致模型在训练和评估过程中对少数类别的识别效果较差。在数据清洗过程中,我们可以通过增加或删除样本的方式来调整类别的分布,达到更好的平衡。 4. 去除重复样本:VOC数据集中可能存在重复的样本,这些重复的样本会导致训练和评估过程中的偏差。在数据清洗过程中,我们可以通过图像哈希算法或者特征提取算法对样本进行去重,确保每个样本只在数据集中出现一次。 在VOC数据集的数据清洗过程中,我们需要结合自动化的工具和人工的验证,对数据进行细致的检查和修正。只有经过充分的数据清洗,才能得到高质量的数据集,并且能够得到准确可靠的模型训练和评估结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值