PyTorch使用datasets.ImageFolder加载ImageNet数据集及数据集相关处理

PyTorch使用datasets.ImageFolder加载ImageNet数据集及数据集相关处理

  • 1. 前言
  • 2. ImageNet数据集处理
    • 2.1 数据下载 (ILSVRC-2012)
    • 2.2 数据处理
    • 2.3 PyTorch加载数据集
  • 3. 总结

1. 前言

Large Scale Visual Recognition Challenge (ILSVRC),大尺度视觉识别挑战是用于评估用于大尺度目标检测与目标分类的算法的一个大型图像竞赛。其数据集就是我们常说的ImageNet数据集,包括1000个类别共1281167张带注释(标签)的训练集图片,50000张验证集图片,以及100000张没有标签的测试集图片。ImageNet数据集算是至今为止检验一个神经网络分类性能的基准了。

这篇文章将介绍如何处理ImageNet数据集,以及如何使用torchvision.datasets.ImageFolder来加载该数据集。注意有个torchvision.datasets.ImageNet的api,原本也是应该可以加载此数据集的,不过我一直没使用成功过,也可能是因为我在windows上使用的原因(Linux下有待验证),还有需要注意的是ImageNet数据集现在不开源了,所以download参数是不可用的。

2. ImageNet数据集处理

2.1 数据下载 (ILSVRC-2012)

数据集的下载当然是要在官网上下载了,但是ImageNet数据集现在不开源了,不开放给商业应用,只允许用于学术研究,因此官网上下载要求使用教育机构的邮箱(一般后缀是.edu.cn)进行申请,然后官网会有相关人员审查,最后才可以在官网上下载原始图片(original images),具体的申请过程自己去官网一步一步来吧,填个邮箱,填个机构就可以的了。

注意:我用edu.cn后缀的邮箱申请了很多次,都没成功,从描述上看感觉就没人受理,最后还是从度娘中下载的。

因此,在这里,我也提供了网盘下载地址(提取码:v55l),方便大家在官网上下载不了,可以从这里直接下载。

2.2 数据处理

下载好后的数据集应该是如下图所示,其中data_prep_sh_files文件夹和readme.txt是我自己添加的,data_prep_sh_files文件夹包含了处理trian/val/test集的sh脚本,readme.txt是具体操作的说明, caffe_ilsvrc12.tar.gz压缩文件是网上下载的caffe版标签,剩下的是原始文件

PyTorch使用datasets.ImageFolder加载ImageNet数据集及数据集相关处理_第1张图片
相关处理可以打开readme.txt文件查看(其实就是如何解压文件,放置文件的过程),主要的操作都写在data_prep_sh_files文件夹中的对应.sh文件中了,可以打开查看怎么实现的,Windows有Git的话在命令行里实现会很方便,当然也可以手动操作,这里就不描述了(麻烦自己看一下文件对应理解一下吧),如下图:
PyTorch使用datasets.ImageFolder加载ImageNet数据集及数据集相关处理_第2张图片

补充注意:这里有个坑,val集的DataLoader的shuffle参数一定要设置为True,才能正确加载标签,否则都是0

2.3 PyTorch加载数据集

直接上相关部分的代码,没什么好解释的,(毕竟我也没搞懂为毛没有标签,DataLoader还能够加载到标签,可能是子文件夹名的相关处理吧)。

phases = ["train", "val"]
data_sets = {}
data_loaders = {}
for p in phases:
	data_sets[p] = datasets.ImageFolder(
	                data_dirs[p],
	                transform=data_transforms[p],
	            )
            
	data_loaders[p] = DataLoader(
	            data_sets[p], batch_size=batch_size,
	            shuffle=True,
	            num_workers=num_workers, pin_memory=pin_memory,
	            sampler=None
	        )

3. 总结

总结一下,其实用PyTorch加载不难,就两步,torchvision.datasets.ImageFoldertorch.utils.data.DataLoader 就可以,关键还是前面的数据准备部分。

你可能感兴趣的:(PyTorch学习笔记,计算机视觉,深度学习,pytorch)