文章目录
- CUB-200-2011(2011)
- Omniglot(2015)
- mini-ImageNet(2016)
- tiered-ImageNet(2018)
- CIFAR-FS
- FC100
- Meta-Dataset(2020)
FSL数据集 | 来源 | 类别数 | 图片数 | 图片尺寸 |
CUB-200-2011 | / | 200 | 11,788 | \ |
Omniglot | / | 1623 | 32,460 | 105*105 |
mini-ImageNet | ImageNet | 100 | 60,000 | \ |
tiered-ImageNet | ImageNet | 608 | 779,165 | \ |
CIFAR-FS | CIFAR 100 | 100 | 60,000 | 32*32 |
FC100 | CIFAR 100 | 100 | 60,000 | 32*32 |
CUB-200-2011(2011)
数据来源:CUB-200-2011 数据集全称 Caltech-UCSD Birds-200-2011,是由加利福尼亚理工学院提供的鸟类数据库,共包含 200 种鸟类,共 11,788 张图像。
适用任务:Few-shot Image Classification & Detection & Segmentation
数据集使用说明:
-
images
:所有图像数据,每个类别对应一个子文件夹,共划分为 200 个子文件夹,每类都有 60 张左右的图片。 -
image.txt
:所有图像的路径 -
classes.txt
:200 个类别名称 -
image_class_labels.txt
:对图像和其对应标签按照数字编号 -
bounding_boxes.txt
:所有图像中目标的 bounding box,共 11788 个条目,用于目标检测任务 -
train_test_split.txt
:训练测试数据划分,第一个序号表示样本序号,后面的0/1表示属于训练/测试样本
Omniglot(2015)
数据来源:Omniglot数据集来自 50 种不同语言的手写字符,共包含 1623 个类别(即1623种手写字符),每个类别只有 20 个样本,图像大小为 。因此 Omniglot 数据集是一个类别极多,但每个类别的样本数量很少的小样本手写字符数据集。
比如,1623个类别里包含:日语平假名52个,日语片假名47个,韩语元音和辅音分别有21个和19个,最常见的拉丁字母表26个,等等。每个类别的字符有20个不同的手写体。
适用任务:Few-shot Image Classification
数据使用说明:
- 官方划分 Omniglot 数据集为
background set
和evaluation set
,分别包含 30 个类别和 20 个类别。其实 background set 对应的就是我们常说的 training set,用于模型的学习,evaluation set 对应我们的 test set,用于测试模型的性能。 - 官方还提供了 2 个更有难度的任务设置:
background small 1
和background small 2
作为训练集,而测试集不变。small 1 和 small 2 分别仅包含 5 个 background set,用于模拟成年人真实的学习数据量。 - 每个图像都有笔画数据与其配对,坐标序列为
(x,y,time)
,且时间time
以毫秒为单位,笔画数据存储在 matlab 文件中。笔画以 ‘START’ 为开始,笔画间的断点标记为 ‘BREAK’(即抬笔),原始的笔画数据是未经处理的,在时间和空间上的interval不一致,因此如果需要用到笔画数据,需要进行一定的插值处理来获取统一的数据分布。
因此,对于普通使用,只要使用 background set 和 evaluation set 即可:
- 图片对应着下载文件中的
images_background.zip
和images_evaluation.zip
- 笔画对应着
strokes_background.zip
和strokes_evaluation.zip
对于更有难度的任务设置,使用 small set 1 或者 small set 2(注意测试数据不变):
- 图片对应着下载文件中的
images_background_small1.zip
(或 2) 和images_evaluation.zip
- 笔画对应着
strokes_background_small1.zip
(或 2) 和strokes_evaluation.zip
下载方式:
解压压缩包后,在 python 文件夹下可以看到所有的数据压缩包,其中:
-
demo.py
用于展示数据集的部分数据 -
images_background.zip
训练数据,包含30个文件夹,每个文件夹都对应一个语言;每个语言文件夹下又包含个数不等的character文件夹,对应该语言的不同字符;每个字符文件夹下包含20张图片,对应该字符来自20个不同人的手写体。 -
images_evaluation.zip
测试数据,同上 -
strokes_background.zip
训练数据对应的笔画,数据组织同images,每张图片都对应一个txt
文件,文件中START和BREAK分别表示开始书写和抬笔,其余的数据格式为 (x, y, time),表示笔尖坐标位置和时间。 -
strokes_evaluation.zip
测试数据对应的笔画,同上 -
images_background_small1.zip images_background
的子集,包含5个类别 -
images_background_small2.zip images_background
的子集,包含5个类别 -
strokes_background_small1.zip
images_background_small1对应的笔画 -
strokes_background_small2.zip
images_background_small1对应的笔画
运行python/demo.py
,可以得到如下的可视化字符,其中不同的颜色代表不同的笔画:
可视化指定字母表字母代码:
import glob
from PIL import Image
def plot_image(alphabet):
image_path = f'../omniglot/*/{alphabet}/*/'
characters = glob.glob(image_path)
image_files = []
for character in characters:
img = glob.glob(f"{character}*.png")[0]
image_files.append(Image.open(img))
W, H = 40, 40
ROW, COL = 4, 13
target = Image.new("RGB", (W * COL, H *ROW))
for row in range(ROW):
for col in range(COL):
target.paste(image_files[COL*row+col], (0 + W*col, 0 + H*row))
target.save(f"{alphabet}_patchs.png", quality=80)
if __name__ == '__main__':
plot_image("Japanese_(hiragana)")
mini-ImageNet(2016)
数据集论文:
[1] Matching networks for one shot learning, NIPS 2016. Vinyals et al.[2] Optimization as a model for few-shot learning, ICLR 2017. Ravi and Larochelle.
数据来源:从 ImageNet ILSVRC-2012 中抽取了 100 个类别的图像组成,每个类别包含 600 张图像,共 60,000 张图像。miniImageNet 在 2016 年由 工作 [1] 提出,作者将 100 个类别随机划分为 64:16:20
,分别作为 training、validation 和 testing set,三个 sets 互不重叠。但是 工作 [1] 发表时没有提供他们的数据划分文件,因此 工作 [2] 按照同样的比例重新划分了数据。因此目前有两种数据划分方式,但大多数工作都使用了 工作 [2] 的数据划分。两种数据划分方式可以参考:mini-ImageNet 数据划分方式
适用任务:Few-shot Image Classification
数据集使用说明:
- 如果是在链接2下载的数据,则仅包含一个
images
文件夹,下面包含了所有的 60,000 张图片,图片命名方式是 “类别+图片序号”,每张图片的前缀nxxxx
是类别,后面的序号以 0 为填充。 - 数据划分按照工作[2]的方式,数据标签为
train.csv
、val.csv
和test.csv
,分别对应训练、验证和测试的数据名称及其标签,这个数据划分文件是工作[2]提出的,也是大部分工作所使用的。
工作 [1] 提出的数据划分方式:Vinyals et al.工作 [2] 提出的数据划分方式:Ravi and Larochelle.
下面是部分图片,可以看到 mini-ImageNet 的图片大小并不统一,因此在输入网络前通常需要 resize。
- 另外推荐一个工具包:Tools for mini-ImageNet Dataset,可以找到工作[1]和[2]的数据划分文件。
.csv
文件内容如下:第一例为文件名(和图片名称一一对应),第二列为标签(和文件名前缀对应)。
tiered-ImageNet(2018)
数据集论文:[1] Meta-learning for semi-supervised few-shot classification, ICLR 2018.
数据来源:tieredImageNet 在 2018 年由 工作[1] 提出,从 ImageNet ILSVRC-2012 中抽取了 34 个超类别(Categories),每个超类别包含 10~30 个不等的子类别(Classes),共 608 个子类别。每个子类别有数量不等的图像,共 779,165 张图像。与 miniImageNet 不同的是,tieredImageNet 考虑了 ImageNet 的类别层级结构。数据按照超类别进行划分,其中 20 个超类(351个子类)作为 training set,6 个超类(97个子类)作为 validation set,8 个超类(160个子类)作为 test set。
与 mini-Imagenet 相比:
- tiered-Imagenet 的规模更大
- 训练/验证/测试数据的划分考虑了 ImageNet 的层级结构,通过划分 super-category 保证了三个集合的类别没有交叉,因此也更有难度。
Train | Val | Test | Total | |
Categories | 20 | 6 | 8 | 34 |
Classes | 351 | 97 | 160 | 608 |
Images | 448,695 | 124,261 | 206,209 | 779,165 |
适用任务:Few-shot Image Classification
数据集使用说明:和 mini-ImageNet 几乎一致,原数据压缩包按照 train、val 和 test 对数据进行了划分,但没有相应的索引文件,建议生成索引文件(按照 mini-ImageNet 的索引文件格式)方便训练。
.csv
文件内容如下:第一例为文件名(和图片名称一一对应),第二列为标签(和文件名前缀对应)。
CIFAR-FS
数据来源:CIFAR-FS 全称 CIFAR100 Few-Shot 数据集,来源于 CIFAR-100。CIFAR-FS 共包含 100 个类别,每个类别包含 600 张图像,合计 60,000 张图像。使用中通常划分为训练集(64类),验证集(16类) 和 测试集(20类),图像尺寸统一为 32*32。
适用任务:Few-shot Image Classification
数据集使用说明:压缩包内包含 data
和 split
两个文件夹,分别为数据和数据划分文件 .txt
,划分文件按照类别名称进行了划分。
FC100
数据来源:FC100 数据集全称是 Few-shot CIFAR100数据集,与 CIFAR-FS 类似,同样来自 CIFAR-100。共包含 100 个类别,每个类别 600 张图像,合计 60,000 张图像。与 CIFAR-FS 不同之处在于,FC100 不是按照类别(Class)进行训练/验证/测试集划分的,而是按照超类(Superclass)进行划分的。FC100 共包含 20 个超类(100 class),其中训练集有 12 个超类(60 class),验证集有 4 个超类(20 class),测试集有 4 个超类(20 class)。
适用任务:Few-shot Image Classification
数据集使用说明:和 CIFAR-FS 数据一致,仅划分 训练/验证/测试集 的方式不同。