数据读取与数据扩增
1 常用数据集简介:
1.1 MNIST数据集
MNIST数据集是美国国家标准与技术研究院收集整理的大型手写数字数据库。包含60,000个示例的训练集以及10,000个示例的测试集,训练集(train set)与测试集(test set) 均为手写数字数据。数据量少,简单易操作。可以说,完成MNIST手写数字分类和识别是计算机视觉领域的"Hello World"。
如下图所示,MNIST数据集中训练集与测试集已被分好,可以直接简单使用,分为训练集的图片与标签,以及测试集的图片与标签
如图所示,数据集中图片大小均为28*28,且只包含灰度信息,数值为0-1
1.2 CIFAR-10数据集
CIFAR-10是一个小型图片分类数据集,该数据集共有60000张彩色图像,图像尺寸为32 * 32,共分为10个类,分别为飞机(plane)、汽车(automobile)、鸟类(bird)、猫(cat)、鹿(deer)、狗(dog)、蛙类(frog)、马(horse)、船(ship)和卡车(truck)。每类6000张图像。其中50000张图片作为训练集,10000张图片作为测试集.
以下是数据集中的类,以及每个类中随机展示的10张随机图像:
1.3 ImageNet数据集
ImageNet项目是一个大型计算机视觉数据库,用于视觉目标识别软件研究。该项目已手动注释了1400多万张图像,以指出图片中的对象,并在至少100万张图像中提供了边框。ImageNet包含2万多个典型类别。每个大类包含数百张图片。可以直接从ImageNet免费获得标注的第三方图像URL。这个数据集广泛的应用于图像分类(Classification)、目标定位(Object localization)、目标检测(Object detection)、视频目标检测(Object detection from video)、场景分类(Scene classification)、场景解析(Scene parsing)等项目。
如下图所示,展示ImageNet数据集中部分图像
1.4 MS COCO
COCO数据集是微软在ImageNet和PASCAL VOC数据集标注上的基础上产生的,主要是用于图像分类、检测和分割等任务。数据内容主要从复杂的日常环境中获取,包括91个大类,大半类别都超过5000张图片。
图片内容如下图所示
1.5 PASCAL VOC数据集
PASCAL VOC 2007 和 2012 数据集总共分 4 个大类:车辆(vehicle)、家用(household)、动物(animal)、人物(person),总共 20 个小类(加背景 21 类)。分类如图所示:
目前论文常用的VOC数据集组合有以下几种:
-07+12:使用VOC2007和VOC2012的训练集,然后使用VOC2007的测试集
-07++12: 使用VOC2007和VOC2012的训练集,然后使用VOC2012的测试集,但这种方法需提交到 PASCAL VOC Evaluation Server 上评估结果,因为 VOC2012 test 没有公布
-07+12+COCO:先在MS COCO上进行预训练,再使用VOC2007与VOC2012进行微调训练,最后使用VOC2007的测试集
-07++12+COCO:先在MS COCO上进行预训练,再使用VOC2007与VOC2012进行微调训练,但这种方法需提交到 PASCAL VOC Evaluation Server 上评估结果,因为 VOC2012 test 没有公布
2 pytorch数据集及读取方法简介
我们在上面已经介绍了很多图片分类任务的常用数据集,下面我们来介绍如何使用pytorch进行定义与读取这些数据集。在pytorch中已经包含了部分常用的数据集,但有时有些不足,需要我们自己进行数据集的定义与读取。
2.1 pytorch自带的数据集读取与使用
pytorch中所有的数据集均继承自torch.utils.data.Dataset,它们都需要实现了 getitem 和 len 两个接口,因此,实现一个数据集的核心也就是实现这两个接口。
Pytorch的torchvision中已经包含了很多常用数据集以供我们使用,如Imagenet,MNIST,CIFAR10、VOC等,利用torchvision可以很方便地读取。对于pytorch自带的图像数据集,它们都已经实现好了上述的两个核心接口。以CIFAR10数据集作为例子
首先,对数据集进行定义:
dataset_dir