Datawhale是一个学习互助的开源组织,第20期组队学习内容包括:
- SQL编程语言
- Go编程语言
- 编程实践(Pandas)
- 编程实践(数据可视化)
- 计算机视觉(目标检测)
想着能够借此完成毕业设计的心态,我参加了这次计算机视觉(目标检测)的打卡活动。
第一次的打卡内容为:
- 目标检测的基本概念、目标框定义方式、交并比(IOU)的计算
- VOC数据集详细介绍
- VOC数据集dataloader构建
但由于笔者的时间比较紧凑,只看到了第二章,所以在此给大家介绍一下第二章图像分类入门的“使用python语言实现图像数据读取与数据扩增”部分。
常用数据集有MNIST、CIFAR、PASCAL VOC、ImageNet、MS COCO、Open Image Dataset等,为了方便理解,这里从MNIST数据集入手讲解如何对图像进行读取与扩增。
1、MNIST数据集:
MNIST数据集(Mixed National Institute of Standards and Technology database)是美国国家标准与技术研究院收集整理的大型手写数字数据库。包含60,000个示例的训练集以及10,000个示例的测试集,其中训练集 (training set) 由来自 250 个不同人手写的数字构成, 其中 50% 是高中学生, 50% 来自人口普查局 (the Census Bureau) 的工作人员,测试集(test set) 也是同样比例的手写数字数据。可以说,完成MNIST手写数字分类和识别是计算机视觉领域的"Hello World"。
MNIST数据集下载链接:
- train-images-idx3-ubyte.gz: training set images (9912422 bytes)
- train-labels-idx1-ubyte.gz: test set images (1648877 bytes)
- t10k-images-idx3-ubyte.gz: test set images (1648877 bytes)
- t10k-labels-idx1-ubyte.gz: test set labels (4542 bytes)
2、Pytorch数据集及读取方法
pytorch中所有的数据集均继承自torch.utils.data.Dataset,它们都需要实现了 __getitem__ 和 __len__ 两个接口,因此,实现一个数据集的核心也就是实现这两个接口。Pytorch的torchvision中已经包含了很多常用数据集以供我们使用,如Imagenet,MNIST,CIFAR10、VOC等,利用torchvision可以很方便地读取。对于pytorch自带的图像数据集,它们都已经实现好了上述的两个核心接口。
简单的对pytorch读取数据一般化pipeline的描述,就是下面的这个流程:
图像数据 ➡ 图像索引文件 ➡ 使用Dataset构建数据集 ➡ 使用DataLoader读取数据
注:图像数据就是训练测试模型使用的图片。这