代码脚本结果若需要 都放在我的github:GitHub - ChenyuLy/ILSVR2012-val-label-fixContribute to ChenyuLy/ILSVR2012-val-label-fix development by creating an account on GitHub.https://github.com/ChenyuLy/ILSVR2012-val-label-fix
问题背景 :
使用mmcv mmcls 在imagenet ILSVR2012 val 数据集 做测试时
测试集 gt标签 与 mmcv mmcls 中的 gt标签不匹配的问题
mmcls 模型中输出的是 老版的标签 只有 1k个类别
但是从官网下的数据集中 有多哒 1k+ 个类 且 类别顺序与 mmcls 数据库中的类别标签顺序对不上
方法:
使用mmcls 类中的默认CLASSES 映射到开发者工具中 meta.mat 中的 编号
首先把两张 表复制下来 其中 mmcls classes 已经是列表形式 需要把从meta.mat 复制下来的列表转化为里列表的结构方便之后的脚本处理
两文件分别是 ILSVRC2012_ID.txt database_id.py
对ILSVRC2012_ID.txt 用脚本格式化为 列表的形式 (这里文件不小心没留下来,需要自己格式化一下)得到 ILSVR_list
使用database_id.py完成 把 原mmcls 类中的默认CLASSES 的id 映射到 meta.mat中的编号
接着使用脚本map_gt_tobase.py 把 开发者工具中的标签ILSVRC2012_validation_ground_truth.txt 转化为 模型标签即可 得到最终正确的标签Final result.txt
同时修改mmcls中的imagenet 数据库类 如文件imagenet.py