目标检测(一)数据集处理与读取
开始
账号注册的比较晚,本来准备好好记录平时的一些有价值的问题,结果一直没写,这次为了督促自己学习,报名参加了Datawhale12月组队学习,以后会开始坚持记录,这几篇虽是打卡但尽量不限于组队学习的内容
内容参考:Datawhale Task01: 两个年轻人-目标检测基础和VOC数据集
一· VOC数据集简介
做深度学习目标检测都会接触到VOC这个数据集,一般很少用到整个数据集,但是一般都会按照它的格式准备自己的数据集。VOC数据集是目标检测领域最常用的标准数据集之一,几乎所有检测方向的论文,如faster_rcnn、yolo、SSD等都会给出其在VOC数据集上训练并评测的效果。下面是下载VOC数据集后的目录构成以及各个文件夹的内容格式:
VOC2012
├── Annotations # 每张图片相关的标注信息,xml格式
├── ImageSets
│ ├── Layout # train,valid,test和train+valid数据集的文件名
│ ├── Main # 各个类别所在图片的文件名
│ └── Segmentation # 分割所用数据集的文件名
├── JPEGImages # 包括训练验证测试用到的所有图片
├── SegmentationClass # 存放语义分割相关图片
└── SegmentationObject # 存放实例分割相关图片
如下图为Annotations中xml文件中包裹的图片标注信息
二· Dataloader的构建
torch.utils.data.dataset这样的抽象类可以用来创建数据集。因为抽象类不能实例化,因此我们需要构造这个抽象类的子类来创建数据集。类中最重要的就是len和getitem这两个函数,前者给出数据集的大小,后者是用于查找数据和标签。torch.utils.data.DataLoader是一个迭代器,方便我们去多线程地读取数据,并且可以实现batch以及shuffle的读取等。
对pytorch读取数据一般化的流程:
图像数据 ➡ 图像索引文件 ➡ 使用Dataset构建数据集 ➡ 使用DataLoader读取数据
1.对于pytorch自带的数据集
pytorch帮你下载好了数据并制作了数据标签,然后通过使用Dataset和DataLoader两个类完成了数据集的构建和读取
以MNIST 手写数字数据集为例:
train_dataset = datasets.FashionMNIST(
root='../datasets', # 数据加载后保存的相对目录
train=True, # 是否加载数据库的训