目标检测的常用数据处理方法!

本文介绍了目标检测的经典数据集VOC,包括数据集的类别、量级、下载方式和数据集结构。接着详细阐述了如何构建VOC数据集的dataloader,包括数据预处理、数据增强和DataLoader的使用,为深度学习目标检测的训练做好准备。
摘要由CSDN通过智能技术生成

↑↑↑关注后"星标"Datawhale

每日干货 & 每月组队学习,不错过

 Datawhale干货 

作者:徐和鼎,浙江大学,Datawhale优秀学习者

前沿

上节内容中,我们介绍了目标检测的基础概念,并分析了实现目标检测的常用思路,本篇文章将重点介绍在该领域的经典数据集:VOC数据集,以及使用Dataloader对其进行数据读取和预处理的全过程。

一、 目标检测数据集VOC

VOC数据集是目标检测领域最常用的标准数据集之一,几乎所有检测方向的论文,如faster_rcnn、yolo、SSD等都会给出其在VOC数据集上训练并评测的效果。本文中,我们使用VOC2007和VOC2012这两个最流行的版本作为训练和测试的数据。

1. 数据集类别

VOC数据集在类别上可以分为4大类,20小类,其类别信息下图所示。

VOC数据集目标类别划分

2. 数据集量级

VOC数量集图像和目标数量的基本信息如下图所示:

VOC数据集数据量级对比

其中,Images表示图片数量,Objects表示目标数量

3. 数据集下载

VOC官网经常上不去,确保后续实验准确且顺利的进行,已打包数据集,在Datawhale后台回复【目标检测】可直接下载,下载后放到dataset目录下解压即可。

下面是通过官网下载的步骤:

  • 进入VOC官网链接:http://host.robots.ox.ac.uk/pascal/VOC/.

  • 在下图所示区域找到历年VOC挑战赛链接,比如选择VOC2012.

    VOC官网页面
  • 在VOC2012页面,找到下图所示区域,点击下载即可。

    VOC2012数据集下载页面
  • VOC2007同理进行下载即可。

4. 数据集说明

将下载得到的压缩包解压,可以得到如图3-9所示的一系列文件夹,由于VOC数据集不仅被拿来做目标检测,也可以拿来做分割等任务,因此除了目标检测所需的文件之外,还包含分割任务所需的文件,比如SegmentationClass,SegmentationObject,这里,我们主要对目标检测任务涉及到的文件进行介绍。

VOC压缩包解压所得文件夹示例
  • JPEGImages:这个文件夹中存放所有的图片,包括训练验证测试用到的所有图片。

  • ImageSets:这个文件夹中包含三个子文件夹,Layout、Main、Segmentation;Layout文件夹中存放的是train,valid,test和train+valid数据集的文件名

  • Segmentation:文件夹中存放的是分割所用train,valid,test和train+valid数据集的文件名

  • Main:文件夹中存放的是各个类别所在图片的文件名,比如cow_val,表示valid数据集中,包含有cow类别目标的图片名称。

  • Annotations:Annotation文件夹中存放着每张图片相关的标注信息,以xml格式的文件存储,可以通过记事本或者浏览器打开,我们以000001.jpg这张图片为例说明标注文件中各个属性的含义。

猛一看去,内容又多又复杂,其实仔细研究一下,只有红框区域内的内容是我们真正需要关注的。

  • filename:图片名称

  • size:图片宽高

  • depth表示图片通道数

  • object:表示目标,包含下面两部分内容。

    首先是目标类别name为dog,pose表示目标姿势为left,truncated表示是否是一个被截断的目标,1表示是,0表示不是,在这个例子中,只露出狗头部分,所以truncated为1。difficult为0表示此目标不是一个难以识别的目标。

    然后就是目标的bbox信息,可以看到,这里是以[xmin,ymin,xmax,ymax]格式进行标注的,分别表示dog目标的左上角和右下角坐标。

  • 一张图片中有多少需要识别的目标,其xml文件中就有多少个object。上面的例子中有两个object,分别对应人和狗。

二、VOC数据集的dataloader的构建

1. 数据集准备

根据上面的介绍可以看出,VOC数据集的存储格式还是比较复杂的,为了后面训练中的读取代码更加简洁,这里我们准备了一个预处理脚本create_data_lists.py。

该脚本的作用是进行一系列的数据准备工作,主要是提前将记录标注信息的xml文件(Annotations)进行解析,并将信息整理到json文件之中,这样在运行训练脚本时,只需简单的从json文件中读取已经按想要的格式存储好的标签信息即可。

注: 这样的预处理并不是必须的,和算法或数据集本身均无关系,只是取决于开发者的代码习惯,不同检测框架的处理方法也是不一致的。

可以看到,create_data_lists.py脚本仅有几行代码,其内部调用了utils.py中的create_data_lists方法:

"""python
    create_data_lists
"""
from utils import create_data_lists

if __name__ == '__main__':
    # voc07_path,voc12_path为我们训练测试所需要用到的数据集,output_folder为我们生成构建dataloader所需文件的路径
    # 参数中涉及的路径以个人实际路径为准,建议将数据集放到dataset目录下,和教
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值