文章目录

  • 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 个样本,图像大小为 基于小样本的医疗图像迁移学习 小样本数据_数据_02。因此 Omniglot 数据集是一个类别极多,但每个类别的样本数量很少的小样本手写字符数据集。

比如,1623个类别里包含:日语平假名52个,日语片假名47个,韩语元音和辅音分别有21个和19个,最常见的拉丁字母表26个,等等。每个类别的字符有20个不同的手写体。

适用任务:Few-shot Image Classification

数据使用说明

  1. 官方划分 Omniglot 数据集为 background setevaluation set,分别包含 30 个类别和 20 个类别。其实 background set 对应的就是我们常说的 training set,用于模型的学习,evaluation set 对应我们的 test set,用于测试模型的性能。
  2. 官方还提供了 2 个更有难度的任务设置:background small 1background small 2 作为训练集,而测试集不变。small 1 和 small 2 分别仅包含 5 个 background set,用于模拟成年人真实的学习数据量。
  3. 每个图像都有笔画数据与其配对,坐标序列为 (x,y,time),且时间 time 以毫秒为单位,笔画数据存储在 matlab 文件中。笔画以 ‘START’ 为开始,笔画间的断点标记为 ‘BREAK’(即抬笔),原始的笔画数据是未经处理的,在时间和空间上的interval不一致,因此如果需要用到笔画数据,需要进行一定的插值处理来获取统一的数据分布。

因此,对于普通使用,只要使用 background set 和 evaluation set 即可:

  • 图片对应着下载文件中的 images_background.zipimages_evaluation.zip
  • 笔画对应着 strokes_background.zipstrokes_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,可以得到如下的可视化字符,其中不同的颜色代表不同的笔画:

基于小样本的医疗图像迁移学习 小样本数据_基于小样本的医疗图像迁移学习_03


可视化指定字母表字母代码:

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

数据集使用说明

  1. 如果是在链接2下载的数据,则仅包含一个 images 文件夹,下面包含了所有的 60,000 张图片,图片命名方式是 “类别+图片序号”,每张图片的前缀 nxxxx 是类别,后面的序号以 0 为填充。
  2. 数据划分按照工作[2]的方式,数据标签为 train.csvval.csvtest.csv,分别对应训练、验证和测试的数据名称及其标签,这个数据划分文件是工作[2]提出的,也是大部分工作所使用的。

工作 [1] 提出的数据划分方式:Vinyals et al.工作 [2] 提出的数据划分方式:Ravi and Larochelle.

下面是部分图片,可以看到 mini-ImageNet 的图片大小并不统一,因此在输入网络前通常需要 resize。

.csv 文件内容如下:第一例为文件名(和图片名称一一对应),第二列为标签(和文件名前缀对应)。

基于小样本的医疗图像迁移学习 小样本数据_数据划分_04


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 文件内容如下:第一例为文件名(和图片名称一一对应),第二列为标签(和文件名前缀对应)。

基于小样本的医疗图像迁移学习 小样本数据_数据划分_05


CIFAR-FS

数据来源:CIFAR-FS 全称 CIFAR100 Few-Shot 数据集,来源于 CIFAR-100。CIFAR-FS 共包含 100 个类别,每个类别包含 600 张图像,合计 60,000 张图像。使用中通常划分为训练集(64类)验证集(16类)测试集(20类),图像尺寸统一为 32*32。

适用任务:Few-shot Image Classification

数据集使用说明:压缩包内包含 datasplit 两个文件夹,分别为数据和数据划分文件 .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 数据一致,仅划分 训练/验证/测试集 的方式不同。