ILSVRC2012数据集拥有 1000个分类 这意味着面向ImageNet图片识别的神经网络的输出是1000个每个分类

2. 数据集的下载与处理    前面提到过ImageNet的比赛包含多个项目如果只考虑图像识别的话训练集只需要上图中Task12部分那个大小138G,这意味着我们上述的label不是主流的label至少和Pytorch上面的预训练模型不一致我试过例如MobileNet和ResNet等采用的是同一套label但和我们上面讲的不一样。

查看ILSVRC2012_validation_ground_truth.txt中第2881行发现对应的label是1再看meta.mat里面的数据第一列ID为1时解释是kit fox这就全对上了 ,    回头再来看看验证集的构成,    打开trans_idx.txt如下可以发现现在映射关系与ILSVRC2012_validation_ground_truth.txt中完全不同第一张图片对应65第二张对应970第三张对应230…,    我们来看看这个label的对应关系。

   我们先用 ILSVRC2012_validation_ground_truth.txt 、 meta.mat 和 transform_for_matlab.txt 将映射关系变得和Pytorch上的默认一致。

然而上面所示的验证集解压后也是没有标注的全是.JPEG图片因此需要额外下载对应的标注, ILSVRC2012训练集1000个分类约120万张图片 ILSVRC2012验证集 1000个分类 5万张图片 ILSVRC2012测试集 1000个分类 10万张图片 下面是ImageNet官网上显示的各数据集的大小,该数据集从2007年开始手机建立直到2009年作为论文的形式在CVPR 2009上面发布,如图需要点Download但是没有登录的话就算点了也无法进入下载页面需要先注册登录,ILSVRC比赛包括图像分类、目标定位、目标检测、视频目标检测、场景分类,ILSVRC2012含有 5万 张图片作为验证集 10万 张图片作为测试集测试集没有标签验证集的标签在另外的文档给出, [3] 种花家的奋斗兔Imagenet与ILSVRC数据集介绍2020-01-22,该比赛称为ILSVRC全称是ImageNet Large-Scale Visual Recognition Challenge每年举办一次每次从ImageNet数据集中 抽取部分样本 作为比赛的数据集,例如我们打开图片ILSVRC2012_val_00002881.JPEG是一只狐狸的照片,解压后的验证集如下包含5万张后缀为.JPEG的图片, [6] 薰风初入弦薰风写代码|手把手带你下载、处理、加载ImageNet数据集2021-06-08,例如上面所举例的kit fox的标签是1但是将一系列的kit fox的图片输入某个预训练的神经网络例如AlexNet神经网络输出的label是278, 注意这里给子文件夹命名采用补零是为了ImageFolder读取的时候能按照字母升序的顺序这一点很重要 ,    至此我们的目录下应该有这些文件,无论是从官网还是方法2的网站都可以下载到ILSVRC2012对应的文件Development kit (Task 1 2)。

将这两个文件解压到自己需要的地方,依然来看看kit fox的label,用下列MATLAB脚本得到新的与验证集图片一一对应的label的txt文件命名为trans_idx.txt,例如第一张图片ILSVRC2012_val_00000001.JPEG对应的是label 490第二张对应的是361,ImageFolder就用于读取这个名为“ILSVRC2012_img_val_Pytorch”的文件夹    整理一下目前的思路,将上述txt文件的数据复制到本地也可以自己重新取个名字我自己重新取名为transform_for_matlab.txt, [4] CrazyVertigo【数据集介绍】ImageNet介绍2017-06-14, 注册登录成功后就可以点积Download进入下载页面进入了选择2012. 然后就能看到前面1里面出现的那个图了可以自己下载训练集、验证集和测试集,下面是两个下载方法 1). 官网下载https://image-net.org/ 可以点上面的链接也可以百度直接搜索,这些图片的命名如图名字的最后一串是递增的数字,    需要注意的是 测试集没有相应的标注 因为比赛的时候会用这些测试数据来检测参赛者的神经网络精度因此不会公开,ImageFolder的详细解释参考官网或者百度,至此每个子文件夹的名字就是它下面的图片的label, Top-1准确率指的是输出概率中最大的那一个对应的是正确类别的概率top-5准确率指的是输出概率中最大的5个对应的5个类别中包含了正确类别的概率 ,这些数字与ILSVRC2012_validation_ground_truth.txt中的label意义对应5000张图片对应5000个数字,    对于如基于ImageNet的图像识别的结果评估往往用到两个准确率的指标一个是top-1准确率一个是top-5准确率,    ILSVRC2012是ImageNet的子集而ImageNet本身有超过 1400多万张图片 超过 2万多的分类 , 通俗一点讲就是在某个目录文件夹下同一类图片放在一个子目录下然后调用ImageFolder去读取这个目录的全部图片, [2] zephyr_wangILSVRC-ImageNet历年竞赛冠军2020-08-09,斯坦福大学教授李飞飞为了解决机器学习中过拟合和泛化的问题而牵头构建的数据集,所以我们常用验证集来进行自己的网络自测,目前需要的文件 验证集的5万张图片 、 ILSVRC2012_validation_ground_truth.txt 、 meta.mat 和 transform_for_matlab.txt , 3. 验证集label的重映射    用前面所描述的对应关系其实是没有问题的但是在我使用Pytorch调用预训练的神经网络模型的过程中发现Pytorch预训练的模型用的label对应关系和上面的还有些不同, [9] 朴素.无恙pytorch之ImageFolder2018-12-19,打开该压缩文件如下可以在路径ILSVRC2012_devkit_t12.tar.gz\ILSVRC2012_devkit_t12\data下找到如下两个文件 ILSVRC2012_validation_ground_truth.txt存放了验证集50000张图片对应的标注label),。

其中ILSVRC2012_img_val目录下有着5万张.JPEG图片ILSVRC2012_img_val_Pytorch是我们想要构造的用于ImageFolder读取的重新排好序的文件夹repath.sh是shell脚本,直到目前该数据集仍然是深度学习领域中 图像分类、检测、定位 的最常用数据集之一,ILSVRC2012数据集拥有 1000个分类 这意味着面向ImageNet图片识别的神经网络的输出是1000个每个分类约有1000张图片, [7] fh295semanticCNN/imagenet_labels/ILSVRC2012_mapping.txt,因此我们需要用这个transform_for_matlab.txt的数据建立验证集图片与label之间的映射关系,这些用于训练的图片总数约为 120万 张此外还有一些图片作为验证集和测试集。

   执行repath.shlinux命令行./repath.sh先创建ILSVRC2012_img_val_Pytorch文件夹然后在他下面创建名为000、“001”、…999的1000个子文件夹然后将ILSVRC2012_img_val下的5万张图片按照trans_idx.txt的映射关系复制到这些子文件夹下面,我在网上找了一下相关的数据以用于验证集label的重新映射发现了参考文献[7]中的数据比较简单好用https://github.com/fh295/semanticCNN/blob/master/imagenet_labels/ILSVRC2012_mapping.txt, [5] 深度睡眠–top1错误率、top5正确率2018-06-20,值得注意的是这里的label是从1到1000不是从0开始,在该比赛的历年优胜者中诞生了AlexNet2012、VGG2014、GoogLeNet2014、ResNet2015等耳熟能详的深度学习网络模型。

该文件里面含有验证集的标注。

2). 官网可能会经常卡住我自己下的时候就老是失败因此在网上找了个种子链接用迅雷我专门给迅雷冲了个会员速度有2M/s-5M/s没有会员会被限速啥的下起来挺快的,“ILSVRC”一词有时候也用来特指该比赛使用的数据集即ImageNet的一个子集其中最常用的是2012年的数据集记为ILSVRC2012,    前面一节讲的图片的分类是没有问题的只是label的数字需要重新映射一下例如需要将现在的1映射到278,其中有超过 100万张图片 有明确类别标注和物体位置标注,该链接是在参考文献[6]里面看到的https://hyper.ai/datasets/4889,注册的邮箱必须是学校邮箱即edu的邮箱, [8] ChrisZZ下载imagenet2012数据集以及label说明2018-12-07。

因此 有时候提到ImageNet很可能是指ImageNet中用于ILSVRC2012的这个子集 , #!/bin/bash mkdir ILSVRC2012_img_val_Pytorch for x in { 0 . . 999 } do if [ $x -lt 10 ] thenmkdir ILSVRC2012_img_val_Pytorch / 00$ { x } elif [ $x -lt 100 ] thenmkdir ILSVRC2012_img_val_Pytorch / 0$ { x } else mkdir ILSVRC2012_img_val_Pytorch / $ { x } fidonecnt1 ; var 1 ; while read x do echo $ { cnt } if [ $cnt -lt 10 ] then if [ $ { x } -lt 10 ] then cp ILSVRC2012_img_val / ILSVRC2012_val_0000000$ { cnt } . JPEG ILSVRC2012_img_val_Pytorch / 00$ { x } / elif [ $ { x } -lt 100 ] then cp ILSVRC2012_img_val / ILSVRC2012_val_0000000$ { cnt } . JPEG ILSVRC2012_img_val_Pytorch / 0$ { x } / else cp ILSVRC2012_img_val / ILSVRC2012_val_0000000$ { cnt } . JPEG ILSVRC2012_img_val_Pytorch / $ { x } / fielif [ $cnt -lt 100 ] then if [ $ { x } -lt 10 ] then cp ILSVRC2012_img_val / ILSVRC2012_val_000000$ { cnt } . JPEG ILSVRC2012_img_val_Pytorch / 00$ { x } / elif [ $ { x } -lt 100 ] then cp ILSVRC2012_img_val / ILSVRC2012_val_000000$ { cnt } . JPEG ILSVRC2012_img_val_Pytorch / 0$ { x } / else cp ILSVRC2012_img_val / ILSVRC2012_val_000000$ { cnt } . JPEG ILSVRC2012_img_val_Pytorch / $ { x } / fielif [ $cnt -lt 1000 ] then if [ $ { x } -lt 10 ] then cp ILSVRC2012_img_val / ILSVRC2012_val_00000$ { cnt } . JPEG ILSVRC2012_img_val_Pytorch / 00$ { x } / elif [ $ { x } -lt 100 ] then cp ILSVRC2012_img_val / ILSVRC2012_val_00000$ { cnt } . JPEG ILSVRC2012_img_val_Pytorch / 0$ { x } / else cp ILSVRC2012_img_val / ILSVRC2012_val_00000$ { cnt } . JPEG ILSVRC2012_img_val_Pytorch / $ { x } / fielif [ $cnt -lt 10000 ] then if [ $ { x } -lt 10 ] then cp ILSVRC2012_img_val / ILSVRC2012_val_0000$ { cnt } . JPEG ILSVRC2012_img_val_Pytorch / 00$ { x } / elif [ $ { x } -lt 100 ] then cp ILSVRC2012_img_val / ILSVRC2012_val_0000$ { cnt } . JPEG ILSVRC2012_img_val_Pytorch / 0$ { x } / else cp ILSVRC2012_img_val / ILSVRC2012_val_0000$ { cnt } . JPEG ILSVRC2012_img_val_Pytorch / $ { x } / fi else if [ $ { x } -lt 10 ] then cp ILSVRC2012_img_val / ILSVRC2012_val_000$ { cnt } . JPEG ILSVRC2012_img_val_Pytorch / 00$ { x } / elif [ $ { x } -lt 100 ] then cp ILSVRC2012_img_val / ILSVRC2012_val_000$ { cnt } . JPEG ILSVRC2012_img_val_Pytorch / 0$ { x } / else cp ILSVRC2012_img_val / ILSVRC2012_val_000$ { cnt } . JPEG ILSVRC2012_img_val_Pytorch / $ { x } / fifilet cnt$ { cnt } 1done trans_idx . txt 5. 参考文献 [1] badchild0912Note学习使用ImageNet2018-05-03,例如我创建一个名为“ILSVRC2012_img_val_Pytorch”的文件夹下面有1000个子文件夹每个子文件夹对应的是同一类同一个label图片,    打开ILSVRC2012_validation_ground_truth.txt可以看到如下所示, 4. 操作流程与相关脚本    因为将ImageNet的图片下载到了本地或者服务器里面所以读取数据的时候需要用到ImageFolder,meta.mat则是一些额外的信息这里不用深究但是等会还是会用到,其实第一例的ID和验证集图片的.JEP文件的名称不是对应的他对应的是验证集图片的label,用MATLAB打开可以看到如下图,    我们再来看看meta.mat里面是什么内容,右上角sign up和log in, 1. ImagNet与ILSVRC简介    ImageNet是一种数据集而不是神经网络模型,在meta.mat里面第2列kit fox的WNID是n02119789在transform_for_matlab.txt中搜索n02119789发现对应的数字是278.这与Pytorch上预训练模型所用label一致,    基于ImageNet有一个比赛 从2010年开始举行到2017年最后一届结束 。

复制脚本后其中的文件路径可能需要根据自己的情况做调整, 。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://acg.inmoke.com/zixun/Jk/12757.html