选自GitHub
作者:Luke Darlow、Amos、Elliot J. Crowley
机器之心编译
参与:李诗萌、王淑婷
就神经网络方面而言,ImageNet 过于庞大,在计算资源不足的情况下,耗费的运行时间过长,而 CIFAR-10 又太小,有时候无法满足需求。于是,本文提出一种方法,将从 CIFAR-10 中选出的图像与 ImageNet 中下采样得到的图像相结合,编译出了 CINIC-10,可以替代 CIFAR-10。
CINIC-10 可以直接替代 CIFAR-10。由于 CIFAR-10 太小(太简单),而 ImageNet 又太大(太难),所以我们将 CINIC-10 编译为基准数据集。虽然 ImageNet32 和 ImageNet 64 比 ImageNet 小,但是它们却更难。CINIC-10 填补了基准数据集的这一空隙。
动机
「我们可以看到近些年来在深度学习领域取得的巨大进步(LeCun 等人,2015)」
可能许多读者都很熟悉这一推论。在许多深度学习方面的论文开头都有类似的话。我们要怎么评估这样的陈述呢?通过基准数据集。在 ImageNet 上,AlexNet(Krizhevsky 等人,2012)比传统的计算机视觉方法表现得更加出色,后来 VGG 网络(Simonyan&Zisserman,2015)超越了 AlexNet,然后又被 ResNet(He 等人,2016)等网络超越。
但 ImageNet 也有缺陷。这是一个庞大的数据集。数据集中的图像很大,至少有关神经网络方面的图像如此,而这个数据集中有超过一百万张这样的图像。在计算资源不充足的情况下,运行一次训练要花好几天的时间(Goyal 等人,2017)。也许是出于这个原因,CIFAR-10 和 CIFAR-100(Krizhevsky,2009)已经成为许多人在现实图像背景下对神经网络进行基准测试的首选数据集。实际上,这正是几个流行的架构展示其能力之处(Huang 等人,2017;Gastaldi,2017)。
在 CIFAR-10 中,10 类里每一类都有 6,000 个样本,而 CIFAR-100 中,100 类里每一类只有 600 个样本。这导致了这些任务间巨大的难度差异;CIFAR-100 可能比 ImageNet 更难。如果有能提供关于任务难度的另一个里程碑的数据集,那这个数据集就会很有用。ImageNet-32 是 CIFAR 的替代品,但这实际上引出了一个比 ImageNet 更具挑战性的问题,因为下采样图像的信息容量显著更低。此外,大部分基准数据集会不均匀地分割训练集、验证集和测试集(CIFAR 中不存在验证集)。而我们需要大小相同的分割,因为它们才可以提供更有原则的泛化性能。
为了克服现有基准数据集的缺点,我们提出了 CINIC-10:CINIC-10 既不是 ImageNet 也不是 CIFAR-10。CINIC-10 是 CIFAR-10 通过添加下采样的 ImageNet 图像扩展得到的。CINIC-10 具有以下几个理想特质:
CINIC-10 有 270,000 张图像,是 CIFAR 的 4.5 倍。
图像大小与 CIFAR 中的一样,也就是说可以用 CINIC-10 替代 CIFAR-10
它具有大小相同的训练、验证和测试分割。在一些实验设置中,可能需要一个以上的训练数据集。尽管如此,通过大小相同的数据集分割,可以公正地评估泛化性能。
可以将训练子集和验证子集结合在一起得到更大的训练集
CINIC-10 中的图像来源于 CIFAR 和 ImageNet。这些图像的分布不一定相同,这就呈现出了新的挑战:分布转移。换言之,我们可以在类别相同的情况下,了解在 CIFAR 图像上训练得到的模型比在 ImageNet 图像上训练得到的模型好多少。
细节
CINIC-10 中共有 270,000 张图像,将这些图像平均分割为三个子集:训练集、验证集和测试集。
在每个子集(90,000 张图像)中有十类(与 CIFAR-10 中的类别相同)。每个子集的每个类别中有 9,000 张图像。使用推荐的数据分割(平均分为三等份)的情况下,CINIC-10 的训练样本数量是 CIFAR-10 的 1.8 倍。CINIC-10 被设计为可以直接和 CIFAR-10 交换。
还可以将训练集和验证集结合在一起,组成更大的训练集。在这种情况下,CINIC-10 的训练样本量是 CIFAR-10 的 3.6 倍。
可以根据下列代码计算(r,g,b)通道的平均值和标准差:
cinic_mean_RGB = [0.47889522, 0.47227842, 0.43047404]
cinic_std_RGB = [0.24205776, 0.23828046, 0.25874835]
将 CINIC-10 保存下来,以便和 PyTorch 数据加载器一起使用。文件夹结构如下所示:
train/
train/airplane
train/automobile
train/...
valid/
valid/...
test/
test/...
基准
用两种方式对 CINIC-10 进行基准测试:(1)建议的三等份分割法,在训练子集上训练,在测试子集上测试;(2)将训练集和验证集结合,在结合的数据集上训练,然后在测试集上测试。
我们从以下地址复制了模型定义。将 epoch 设定为 300,初始学习率为 0.1,动量乘数为 0.9,权值衰减乘数为 0.0001,batch size 为 64。学习率按余弦方式降到 0。
定义地址:https://github.com/kuangliu/pytorch-cifar/
在训练子集上训练的结果
在训练子集和验证子集结合得到的新数据集上训练得到的结果
与 CIFAR-10 模型进行比较,用不同种子训练 5 次。列出这些运行结果的误差,包括标准差:
样本
下图是从 CINIC-10 和 CIFAR-10 中随机挑选的样本,将其进行比较。显而易见,CINIC-10 噪声更大,因为 Imagenet 中的样本没有审查过。
飞机
CIFAR-10
CINIC-10
鸟
CIFAR-10
CINIC-10
论文:CINIC-10 Is Not ImageNet or CIFAR-10
论文链接:https://arxiv.org/abs/1810.03505
摘要:在这篇简短的技术报告中介绍了 CINIC-10 数据集,这个数据集可以作为 CIFAR-10 的扩展替代方案。将 从 CIFAR-10 中挑选的图像以及从 ImageNet 数据库下采样得到的图像结合在一起,编译出了 CINIC-10。我们提出了编译数据集的方法,说明了类别不同的样本图像,给出了库中每一部分的像素分布,还为那些众所周知的模型给出了一些标准基准。关于下载、使用和编译的一些细节可以从相关的 github 库中找到。
本文为机器之心编译,转载请联系本公众号获得授权。
✄------------------------------------------------
加入机器之心(全职记者 / 实习生):hr@jiqizhixin.com
投稿或寻求报道:content@jiqizhixin.com
广告 & 商务合作:bd@jiqizhixin.com