[机器学习与深度学习] - No.5 ILSVRC2012_img_val数据集的使用

ILSVRC2012_img_val数据集的使用

在之前使用Imagenet 2012的Validation数据集的时候,遇到了数据集图片和下载的标签文件不对应的问题,困扰了一段时间,后来终于解决了,在这里记录一下。

ILSVRC2012_img_val数据的正确姿势:

下载数据集和正确的label:

解压数据集和label文件:

解压label文件,我们可以看到以下文件:

在这里插入图片描述
其中的val.txt即是ILSVRC2012_img_val对应的标签文件,其内容如下:

ILSVRC2012_val_00000001.JPEG 65
ILSVRC2012_val_00000002.JPEG 970
ILSVRC2012_val_00000003.JPEG 230
ILSVRC2012_val_00000004.JPEG 809

.....

其格式为左边是图片名称,右边是该图片对应的label id,例如我们以ILSVRC2012_val_00000001.JPEG为例,解释一下数据集和标签的对应关系:

在这里插入图片描述

其id为65 ,打开上图中的synsets.txt,其第66行(从0开始标,65代表第66个类别)n01751748即为该图的编号。

那么该图的名称是什么呢?打开上图中的synset_words.txt,依然找到第66行(或者直接搜索编号n01751748),我们可以看到该编号对应的名称为:

在这里插入图片描述

同理,ILSVRC2012_val_00000004如下所示:

在这里插入图片描述

其id为809,synset_words.txt的第810即为ILSVRC2012_val_00000004的编号和名称:

在这里插入图片描述

Imagenet数据集的两种标签:

上文提到的这种标签关系是caffe版本的标签,Imagenet还提供了一种原始的标签方式。

下载上面的标签文件并解压,我们在data 文件夹中可以看到ILSVRC2012_validation_ground_truth.txt,这也就是imagenet原始的label:

在这里插入图片描述

可以看到,第一个图片ILSVRC2012_val_00000001.JPEG的label是490,如何根据490的label获取对应的编号和名称呢?

使用ILSVRC2012_mapping.txt,在第490行获取ILSVRC2012_val_00000001.JPEG的编号为n01751748

在我调研的过程中,我还发现一些标签对图片ILSVRC2012_val_00000001.JPEG的标注是489,这种标签是从0号id开始标的。

遇到的坑:

在最开始,我使用的是imagenet原版的标签,ILSVRC2012_val_00000001.JPEG的标签为490。由于keras中的resnet等imagenet数据集上的模型,使用的是caffe版本的标签训练的,其对ILSVRC2012_val_00000001.JPEG的预测结果均为65,所以结果显示resnet pre-train model精度很低。

当我们使用标注数据进行evaluate模型时,要弄清楚这个模型是使用什么版本的标签进行标注的。

最后,推荐使用caffe版本的imagenet标签。


参考文章:https://www.cnblogs.com/zjutzz/p/6083201.html

上面提到的ILSVRC2012_mapping.txt等所有文件下载链接:https://download.csdn.net/download/tjuyanming/11232273

  • 21
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值