ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Tired ImageNet(few-shot learning最近很常用)的详细介绍及python处理方法

2020-12-19 16:01:11  阅读:1261  来源: 互联网

标签:shot Tired python label specific print ImageNet general categories


最近在读few-shot Learning 的论文,这个Tired ImageNet可以说是很多期刊论文的few-shot learning文章都喜欢用来做实验对比了,所以我也很好奇这个tired ImageNet到底是个什么样子的。通过这篇博客和大家一起探索一下tired ImageNet。

tired ImageNet是在2018年的论文 META-LEARNING FOR SEMI-SUPERVISED FEW-SHOT CLASSIFICATION 中提出来的一个数据集,根据作者的介绍,这个数据集是数据集 ILSVRC-12 (ImageNet 2012)的一个子集。熟悉few-shot learning的朋友都知道,mini-ImageNet作为另一个few-shot learning的热门数据集,它也是 ILSVRC-12 的一个子集。不同的是,mini-ImageNet只有100个类,划分成64个training categories,16个val categories和20个test categories。而tired ImageNet类似于Omniglot(手写符号数据集),它的分类有层次概念。数据集分成34个大类(比如乐器,工具,载具之类的),这34个大类中每个类包含10~30个更细致的小类(比如乐器这个大类包含吉他,钢琴等)。34个大类分成20个training categories,6个val categories和8个test categories。根据作者的说法,这样做的好处是让大类相同的小类不要分别出现在training和test categories中。比如mini-ImageNet中将管风琴作为训练集,电吉他作为测试集,即便这两种都是乐器。

OK。上面这些差不多就是论文里对tired ImageNet的全部描述了,如果有兴趣的读者可以自己去读读原文。可是对于我这种想要使用tired ImageNet做训练的人来说,这些信息太粗糙了,我需要知道这个数据集怎么加载,怎么划分,标签是什么样的。

首先,找到原始数据集。
https://github.com/renmengye/few-shot-ssl-public
这是META-LEARNING FOR SEMI-SUPERVISED FEW-SHOT CLASSIFICATION 的github链接。往下翻可以发现
在这里插入图片描述
Nice!作者给出了tired ImageNet的链接。不过有一点问题,他们给的是谷歌的网盘链接,这就要看本事了,把它下载下来。

在这里插入图片描述
下载好之后是这样的,一个压缩包。
在这里插入图片描述
解压之后的样子。好家伙,数据全部被保存成pkl了,我又不知道作者当初是怎么压缩的,所以怎么解压这个pkl文件是一个大问题。还是要去看源码,这是最恶心人的部分了。那么下面是我看完源码之后从里面抽取出来的一点关键代码,以training categories为例。

import numpy as np
import pandas as pd
import pickle as pkl

cache_path_labels = 'F:/数据库/tiered-imagenet/train_labels.pkl'

f = open(cache_path_labels, 'rb')
data = pkl.load(f, encoding='bytes')
label_specific = data["label_specific"]
label_general = data["label_general"]
label_specific_str = data["label_specific_str"]
label_general_str = data["label_general_str"]

print('label_specific: ')
print(len(label_specific))
print(label_specific)
print(label_specific_str)
print('\nlabel_general:')
print(len(label_general))
print(set(label_general))
print(label_general_str)

在这里插入图片描述

可以看出来,training categories里面,精细划分的有351个类,粗糙划分的有20个类,总共有448695张图片。再分别测试一下val和test。
在这里插入图片描述
这是val categories的运行结果,精细划分的有97个类,粗糙划分的有6个类,总共有124261张图片。
在这里插入图片描述
这是test categories的运行结果,精细划分的有160个类,粗糙划分的有8个类,总共有206209张图片。

上面都是对于label的压缩文件的解压操作,下面会介绍图片的解压操作。
突然发现解压图片要用到cv2,我还没安装这个包,那就下次再说了,等我弄好了再继续写图片解压。

标签:shot,Tired,python,label,specific,print,ImageNet,general,categories
来源: https://blog.csdn.net/qq_42729515/article/details/111403673

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有