Siamese Neural Networks for One-shot Image Recognition

一、介绍

机器学习应用中学习好的特征非常computationally expensive,而且当只有少量数据时是非常困难的。这种问题是单标注学习的原型,即每类只有一个样本,以此为依据来预测分类。在这篇文章中,作者提出了一个孪生网络来评价输入图像对的相似度。当网络训练好后,就能利用它强大的判别特性来泛化到未见过数据分别的新的类别。作者的方法在单标注分类任务上有接近state of the art的表现,超过了其他一些深度学习的模型。

二、作者的方法

所谓孪生网络,即是输入一个图片对,对两张图片使用相同的网络提取特征,然后特征间(使用距离度量)计算距离,对距离计算scores,根据损失函数来更新网络权重。 

2.1 网络结构 

对于输入的图片对,首先通过一系列的卷积层,各个卷积层的参数和特征图的大小如上图所示,得到了256x6x6的特征图后展开成一维的特征向量,经过一个fc得到4096维的特征向量。输入图片对的两个特征作差取绝对值(L1 component-wise distance)得到一个4096维的特征,然后经过一个神经元的fc+sigmoid输出[0,1]的相似度分数,使用交叉熵损失函数更新网络。 

三、实施细节

epoch最多200次,单独设置一个随机产生的字母表和写字人的320个单标注学习任务的验证集,当验证的错误率连续20个epochs不再下降时,停止迭代。根据单标注验证错误率选择最优的网络。如果验证的错误率一直在下降,则选择最后一次迭代的网络。 

作者同时使用了仿射变换,来增强训练集。其中仿射变换的T1、T2函数根据多维均匀分布来随机选择参数。具体如下图:

四、实验结果

4.1 Omniglot数据集

Omniglot数据集是由Brenden Lake和他在MIT的合作者一同收集标注的,适用于手写字母识别领域的小样本学习。Omniglot包含来自50个字母表的字母,这50个字母表包括真实的语言和虚构的语言。每个字母表包含15-40个字母。这些字母表中所有的字母20个人每人写一次。Lake把这些数据分成40个字母表的“背景集”和10个字母表的“评价集”。作者保留这两个术语是为了区分可以从背景集生成的正常的训练,验证和测试集,以便调整模型以提高验证表现。背景集用来学习网络的参数,评价集仅仅用来测试单标注分类的表现。

4.2. Verification (验证任务:判断是否是一类)

为了训练网络,作者随机采样相同类和不同类的图片对组成了30k,90k,150k样本数的3个不同大小的数据集(3个数据集分别实验,进行对比)。作者将其中60%用于训练:即50个字母表中的30个,20个人中的12个。作者对每个字母表用相同数目的训练样本数,因此在优化中每个字母表得到相同的表示,虽然不能保证字母表中每个字母也得到相同的表示。

通过仿射变换,作者扩充了数据集。作者对每个训练样本加了8个仿射变换,所以对应的数据集大小变为270k,810k,1350k。

为了在训练过程中监视表现,作者采用了两种策略。一:作者使用余下10个字母表和4个人采样了10k个样本对组成了一个验证集。用剩下的10个字母表和4个人用于测试。二:使用与方法一验证集相同的10个字母表和4个人生成了一个set of 320 one-shot recognition trials用于验证,来模拟测试集的任务。在实践中,第二种方法确定何时停止的至少与第一种方法测试验证错误一样有效,因此我们将其用作为确定停止训练的标注。


表一作者列出了在6个训练集上的最终的验证结果,列出的测试准确率是最好的结果。可以看到,作者的方法验证准确率很高。

4.3 One-shot Learning

作者指出,优化好了一个验证任务表现出色的网络,那么网络对于one-short learning也有很好的性能。即将query image和所有类的单标注样本送入网络,query image的类别即是相似度最高的那个单标注样本所属的类别。

Lake提出了一个20路字母表内分类任务:首先从评价集中选择一个字母表(网络在训练中未曾见过),从字母表中随机选取20个字母。从测试集中20个人里选出两个人,这两个人然后对这20个字母再写20个。第一个人写的20个字母为测试图片,每一个都拿来和第二个人的20张图片对比,目标是正确预测这张图片所属的类别。这样的过程对测试集所有的字母表重复两次,因此有400个单标注实验(10x(20x2)),然后计算分类准确率。结果如下图:

作者的方法除了比不上HBPL外,优于其他所有方法。考虑到HBPL需要额外的类别标签,作者的方法非常有效。

4.4. MNIST One-shot Trial

Omniglot数据集的特点是每类的样本数远小于类数,这和MNIST数据集完全相反。因此测量在Omniglot数据集上训练的模型对于MNIST one-short task的表现是件很有趣的事。作者将MNIST作为一个字母表,测试了10路one-short classfication task。循着Omniglot单标注测试的流程,在MNIST数据集上生成了400个one-shot trials,不在MNIST训练集上进行任何微调网络。所有图片从28x28上采样到35x35。结果如下图所示:

可以看到,1-最近邻方法的表现和Omniglot类似,但是作者的方法从92%掉到了70.3%,但是70.3%仍然是很好的表现,说明作者的方法在Omniglot数据集上训练、直接迁移到MNIST、不进行任何微调仍然有很好的泛化能力。

五、结论

本文作者提出了一个解决单标注分类问题的策略:先根据验证损失来学习一个卷积的孪生网络,然后使用这个网络计算query image和所有单标注的样本的相似度,最相似的单标注样本所属的类别即query image的类别,通过这种方式解决单标注分类问题。作者和现有的Omniglot数据集上sate-of-the-art的分类器进行了比较,作者的方法远远超过所有的baseline,并且逼近之前最好的结果。作者认为他们方法的优秀表现证明不仅使用他们的方法可能达到人类的水平,还证明他们的方法应该被拓展到其他领域的单标注学习的任务中去,尤其是图像分类任务。

在这篇文章中,作者仅仅考虑了图片对和使用全局仿射变换的图片。作者目前一直在试验一种扩展算法,该算法利用有关各个笔画轨迹的数据来产生最终的计算失真。 通过对笔划施加局部仿射变换并将它们叠加到合成图像中,作者希望可以学习到更好地适应新例子中常见变化的特征(增强网络对未知数据的的泛化能力)。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值