徐传运,孙 越,李 刚,袁含香
(1.重庆理工大学 两江人工智能学院,重庆 401135;2.重庆理工大学 计算机科学与工程学院,重庆 400054)
深度学习现已经被广泛应用于人工智能的众多领域,自2012年以来,Krizhevsky等[1]提出的AlexNet使图像特征提取与分类技术有了重大进步。近些年以卷积神经网络为代表的各类深度学习方法快速发展,凭借其较高的识别率与准确率,己经逐渐取代了诸如SIFT[2](scale-invariant feature transform)、HOG 等[3](histogram of oriented gradient)人工标注特征的方法,成为了计算机视觉领域的标准算法。在超市、电商等应用领域中,随着人力成本的增加和人们对新技术的逐渐接受,根据图像特征对商品进行识别与分类具有越来越重要的研究价值。梁青青等[4]于2013年开始研究货架商品的分割与识别;赵莹等[5]研究了基于人工特征商品图像匹配;孙昂[6]使用改进的Alex-Net对电商网站多类商品图片的分类进行研究;包青平等[7]使用了基于三重损失函数(triplet-loss)的度量学习方法对服装图像进行分类与检索;胡正委等[8]基于Faster RCNN框架探究了在无边框标定情况下训练商品分类并容易运用到其他数据集。在智能零售场景中,利用计算机视觉对商品进行结算是主要研究方向,旷视推出了新零售自动结算场景下的大型超市零售商品数据集RPC[9],为商品检测、小样本学习等研究方向提供了数据支持;Li等[10]提出了DPN网络,其对RPC结算图的检测与识别高于基线。然而另一方面,深度学习分类模型对数据极度饥渴,需要海量标记数据来达到良好效果[1,11-12],尤其在零售商品识别场景下,商品的巨量类别,与飞速迭代,使得收集大规模的标记数据困难重重。面对零售商品样本数据严重不足的问题,如何使用机器学习模型在小样本情况下进行有效学习,是实现零售商品分类商业化的重要研究方向。早期的小样本学习研究主要围绕Vapnik等[13]提出的基于支持向量机(support vector machine,SVM)的应用,但SVM对于种类繁多的计算机视觉任务仍有局限性。进入21世纪后,李飞飞等[14]首次提出了单样本学习(one-shot learning)概念,并首次使用贝叶斯框架实现了小样本分类。2015年,Lake等[15]仍采用贝叶斯方法,并将其运用于小样本学习问题,该算法首次在小样本学习问题上取得超越人类的表现,且该工作第一次提出以C-way K-shot任务作为小样本学习评价标准,并提出小样本学习数据集Omniglot,这些标准为后来的小样本学习的快速发展具有重要意义。近年来随着神经网络的兴起,小样本学习的研究在图像领域有了很大进展。小样本学习使用深度学习模型通过先验知识约束假设空间,从模型上可分为3类[16]:①基于模型(model based);②基于度量(metric based);③基于优化(optimization based)。基于模型的方法旨在设计一种模型结构能够在少量样本上训练并更新参数,直接建立输入x到预测值p的映射函数;基于度量的方法通过批样本与支撑集(support set)的距离分布进行建模,使得同类样本靠近而异类远离,完成分类;基于优化的方法认为传统梯度下降法难以在Few-shot分类任务中拟合,通过调整优化方法来完成小样本分类任务。对于基于度量方法,为了避免严重的过拟合问题,许多研究采取了非参数化的度量方法来优化参数。Koch等[17]最初提出了孪生网络(siamese network)来识别有判别性的特征,然后再推广到未知的类别中。随后Vinyals等[18]为批样本与查询集(query set)分别构建了不同的编码器,提出了基于注意力与记忆的匹配网络(match network)。Snell等[19]以每个类的均值作为对应的原型表示来学习一个度量空间,提出了原型网络(prototypical network)。Sung等[20]认为网络不应该只满足单一固定的距离度量方式,而是通过训练一个网络来学习距离度量,于是提出了关系网络(relation network),并改进了损失函数。最近,Li等[21]考虑到全局特征对小样本数据不友好,使用了局部描述符度量方法,并借鉴朴素贝叶斯最近邻方法[22],提出了深度最近邻网络(deep nearest neighbor neural network),该网络由深度嵌入模块与图像-类别模块组成,其中图像-类别模块可由其他深度嵌入模块替代或共同工作。Xu等[23]基于人类会通过对比来识别特定环境下的物体的特点,提出局部对比学习的思想,从对比差异特征中学习。Geng[24]提出的包含了胶囊网络[25](capsuleNet)的Encoder-Induction-Relation三级框架,应用于NLP语义分类问题。
本文受到DN4[21]与Relation Network[20]的启发,采用深部局部描述符连接和神经网络度量,提出了小样本学习分类模型LDR-Net。与DN4[21]采用最近邻度量方法[22]不同的是,LDR-Net将DN4[21]中的图像-类别模块进行改进与扩展,使支撑集特征图的转置矩阵与查询集特征图矩阵相乘,并将结果直接作为下一个卷积神经网络的输入。该模型在RPC超市零售商品数据集上的对比实验结果表明,LDR-Net在商品的小样本分类任务中的性能优于现有方法。
现实世界中已有大量零售商品图像数据,然而商品类别迭代飞速,例如电商领域有大量的第三方商家商品图片需进行类别标注。针对此问题,本文旨在设计一个基于Few-shot的图像分类器,在训练数据集中学习到类别区分的元知识,再对未知的新类别进行相似度比对,从而达到对开放类别进行分类的目的。
Few-shot任务在训练阶段会将数据集分为多个元任务(meta-task),去学习类别变化的泛化能力,在测试阶段,面对全新类别的少量样本,无需改变已有模型,直接进行分类。其中,训练集包含多个类别,每个类别有多个样本。训练阶段每次迭代(episode)将会在训练集中随机抽取C个类别,每类随机K个样本,总共C×K个数据,构建一个元任务,作为模型的支撑集输入,再从这C类剩余的数据中抽取一批样本(batch)作为模型预测的对象,即要求模型从C×K个数据中学会如何区分这C个类别。这类问题被定义为C-way K-shot问题。
每次迭代都会采样到不同的元任务,训练包含了大量随机不同的类别组合,使得当迭代次数增加时,模型能够在不同的元任务中学习到共性部分,从而在测试中面对包含开放类别的元任务时,也能较好地分类。本文在实验时将采用5-way 1-shot与5-way 5-shot方式,结合卷积神经网络进行训练和测试。
图像局部描述符是计算机视觉中的一个基本研究问题,早期被使用较多的一般为手工设计的局部描述符,如SIFT。本文算法所使用的主要是基于深度特征的局部描述符。
给定一个大小为h×w的输入图像,通过卷积层后输出的特征图可以表示成一个3维的张量T,有c×h×w个元素,从另一个角度来看,T也可以被看成拥有h×w个单元且每个单元包含一个c维的深度特征描述符。因为该描述符的感受野对应着原图像上的某一块局部特征,所以将其称之为深度局部描述符(deep local descriptor)。局部描述符如图1所示,d(i,j)即一个深度局部描述符。
本 文 结 合Relation-Net[20]与DN4[21](deep nearest neighbor neural network)思想,提出了将局部描述符连接并用神经网络学习度量的方法,建立了小样本商品图像分类模型LDR-Net。该模型首先使用卷积神经网络构成特征提取模型fφ来获得高维特征,将得到的特征图中包含所有通道的单个元素作为一个局部特征单位,即深度局部描述符。通过深度局部特征连接方式,将支撑集与查询集生成特征图的每个深度局部描述符各自连接,形成深度局部描述符连接空间,该空间可表示为图片间每个局部特征的拼凑组合。最后使用度量学习网络对其进行映射,提取局部不变特征,学习图像到每个类池的相似度。
根据人类视觉模式中同一类图像的可交换性,一个新图像可由同一类图像的局部特征位置信息打乱拼凑而成,同一类的所有训练样本的局部特征被收集到一个池中。此方法对于零售商品图像有更优秀的效果,模型如图2所示。
该模型由3个模块组成:特征提取网络fφ(·)-深度局部描述符连接Ψ(·)-度量学习网络mΦ(·),θ为最后得到的相似度。
式(1)中,每次迭代支撑集的样本xi与查询集样本xq作为输入数据进入特征提取网络得到fφ(xi)、fφ(xq),即对应图2中的特征图Fi(i=1,2,3,4,5)、Q。在C-way K-shot情形下,xi数量为c*k,xq数量为1。对fφ(xi)、fφ(xq)进行局部描述符连接处理得到Ψ(fφ(xi),fφ(xq)),再将连接后的特征图输入进度量学习模块mΦ(·)。
对于5-way 5-shot训练方式,本文遵循小样本学习文献[18-21]做法将支撑集中所有通过特征提取网络fφ(·)的特征图(feature map)直接进行按类求和,得到5个代表类别的叠加特征图F1-F5,接下来的步骤与5-way 1-shot相同,LDR-Net网络结构如图3所示。
1.3.1 特征提取模型
为了与其他方法公平比较,本文的特征提取网络由之前工作[20]所采取的4层卷积块构成。每个卷积块操作顺序包含一个卷积层、一个批量归一化层(batch normalization)、一个ReLU线性激活层,前3个卷积块后各有一个2×2最大池化层(max-pooling)。
该模块中每个卷积块参数相同,都使用64通道的3×3卷积核[20],步长(stride)为1,填充(padding)为0。批量归一化层中,ε作为一个很小的常数保证公式中分母不等于0,使得数据稳定而添加的值,默认为0.000 01,动量(momentum)同文献[20-21]相同,设置为1。
网络输入尺寸为84×84,输出为64×9×9(c×h×w)。如此设置可以快速降低输出特征图大小,避免后续局部描述符连接生成的矩阵过大,导致度量学习网络参数过多。这样做也可以缓解小样本学习中普遍存在的过拟合问题。
1.3.2 深度局部描述符连接
如图2所示,支撑集与查询集输入图像在经过fφ计算后分别生成大小为c×h×w的特征图Fi与Q,c为通道数,h为特征图高度,w为宽度。在这里将其展开为c×m(m=h×w),公式可表示如下。
式中:D为深度局部特征表示空间;di即为第i个深度局部描述符。本文中输入图像大小为84×84,在这里可得到h=w=9,c=64的特征图,经过上述维度处理后可得到81个深度局部描述符。
接下来对支撑集图像和查询集图像进行深度局部描述符连接,通过Ψ(·)生成一个深度局部描述符连接空间L,特征连接表示如下。
其中DFi、Dq分别为支撑集和查询集维度处理后的深度局部特征表示空间,连接空间L维度为m×m,通道为1,空间中的每一个元素为支撑集图像深度局部描述符转置矩阵与查询集图像相应矩阵的外积。最终查询图像与支撑集的所有图像分别连接,共形成5个深度局部描述符连接空间,如图4所示。
连接空间L中包含了2张图片中每两个深度局部描述符的连接结果,以局部特征为单位展示了2张图片之间的联系,相比于维度叠加[20],该连接方法提供了一种更丰富的图像到类的表示。对于空间L中丰富的特征语义表示,本文不使用传统度量方式,而是尝试使用卷积神经网络去拟合,L将作为下阶段度量学习网络的输入。
1.3.3 度量学习网络
该网络将对深度局部描述符连接空间进行进一步的特征映射,提取图像的类间局部不变特征,学习一种类间度量方式,最后对每个连接空间都生成一个相似度,分数最高者即视为同一类。在本文中,因深度局部描述符连接方式使得合成后的新特征图尺寸增大,拥有相当于原输入图片尺寸甚至更大的规模,为了使网络有效工作,在度量学习模块中需要更深的网络层数对其进行特征映射,使得降维映射更加平滑。
卷积神经网络的确带来了更丰富的度量方式,但鉴于小样本学习极易陷入过拟合的特点,该模块网络参数量应尽量压缩。由此原则,最终选取了如图3所示的网络结构,该部分网络由8个卷积块、4个池化层和2个全连接层组成,卷积块参数与fφ中相同,此结构在最终池化操作后特征图的感受野为76。2个全连接层分别为8维和1维,分别包含ReLU与Sigmoid激活函数,使最终网络输出0到1的值。
1.3.4 损失函数
参考Relation-Net[20],由于使用了卷积神经网络去拟合一种度量方式,从而度量未知的类别,可以视为要解决的是回归问题。所以本文的损失函数不采用交叉熵函数,而是使用了均方误差(mean squared error,MSE)来训练模型。损失函数可表示如下:
模型预测出的相似性分数θiq,将与标签yk(类别匹配为1,不匹配为0)比较,并累加求和得到损失值。
本文旨在研究智能零售场景下的商品图像分类,实验数据来自旷视科技推出的RPC[9]超市零售商品图像数据集。RPC数据集共17个元类(如方便面、纸巾、饮料等),包含200个单类,总共图像数量83 739张,单品图为53 739张,结算图30 000张。本文使用RPC单品图作为数据集,其中单品图包含全部类别商品图像。考虑到元类商品间的差异性,本文在17个元类中各抽取一个单类作为验证集val,再各抽取2个单类作为测试集test,剩余数据全部作为训练集train,分配结果如表1所示。
RPC数据集对于每个单类均有约160张包含不同角度拍摄的样本图片。本文根据官方提供的边框坐标数据,对所有RPC单品图进行边框裁剪处理,图片大小设置为84×84,处理结果如图5所示。
LDR-Net网络模型实验参数设置如表2所示。
表2 实验参数设置
本文采取了5-way 1-shot和5-way 5-shot两种实验方式,LDR-Net特征提取模块fφ使用了基于Mini-ImageNet数据集的Relation-Net特征提取模块作为预训练模型,由于模型更改,度量学习模块mФ则从零开始训练。根据预实验测得学习率衰减最佳步数为50 000,相应的训练次数设为300 000次,学习率、批样本量、测试次数遵循小样本学习文献[19-21]设置。
为了验证本文提出的LDR-Net模型在RPC数据集上进行小样本分类的有效性,将该模型与其他基于度量方式的Few-shot经典模型进行对比实验。对比模型分别为:Matching-Nets、Prototypical-Nets、Relation-Net、DN4(k=1),实验数据集统一为RPC单品图,本文将对比实验的特征提取层统一修改为与LDR-Net一致。
此外为了说明RPC数据集的基本分类性能,本文还实现了一个基线方法k-NN。该方法采用LDR-Net的特征提取网络并额外附加3个全连接层作为分类器来训练RPC全部训练集,测试阶段采用C-way K-shot方式,从上述训练好的网络中提取倒数第2个全连接层的特征,并使用一个k-NN分类器得到最终分类结果,距离度量采用欧氏距离公式,结果如表3所示。
表3 模型实验结果
表3展示了RPC数据集在各个Few-shot分类模型上训练得到的分类结果,表中数据表示测试集600次测试的平均精度。本文提出的LDR-Net在保留神经网络度量学习的前提下,改进了特征连接方式,引入了深度局部描述符连接,相比于DN4在1-shot与5-shot分别提升了1.98%与1.67%,验证了深度局部描述符连接对网络的分类能力有较明显的提升。此外为了进一步研究深度局部描述符连接,在式(3)之前,本文实验了深度局部描述符di的多种范数来生成不同的D,进而生成深度局部描述符连接空间L,并进行对比实验。
表4 深度局部描述符连接空间对比实验
表4展示了深度局部描述符di与其一范数二范数无穷范数对准确率的影响,实验模型结构为图3所示网络结构。无穷范数方法由于损失了大量特征信息,效果较差,原始深度局部描述符和其二范数都可得到较高精度。可以看出,引入深度局部描述符连接对于度量学习性能有着明显提升。
为了进一步研究深度局部描述符方法在小样本学习中的鲁棒性,本文将训练集类别数量逐步缩减,在不同类别数量情况下分别实验探究模型的精度变化。
训练集划分遵循包含全部17个元类的原则,实验训练集组分别为17类、34类、51类、85类、119类、136类、149类,验证集与测试集保持不变。本文分别实验了5-way 1-shot与5-way 5-shot下LDR-Net与其他小样本学习模型的分类效果,结果如下。
根据图6、图7展示,LDR-Net在5-way 1-shot与5-way 5-shot情形下随着训练类别减少,精度仍能保持在80%以上,明显优于Relation-Net[20],略微优于同样采用深度局部描述符的DN4[21],这一结果证明了对比局部特征在小样本学习特别是商品图像领域的鲁棒性。
本文采用深度局部描述符连接结合神经网络度量的方法,提出了小样本学习分类模型LDRNet,将其应用于超市零售商品图像分类,并进一步研究了此应用场景下用神经网络拟合深度局部描述符连接空间的优越性。实验表明,LDR-Net在RPC超市零售商品数据集的表现优于其他小样本图像分类模型,并且卷积神经网络仍有优化空间。本文的研究为零售商品图像分类引入一个新的思路,下一步工作重点是增强数据集,并继续探索更高效的度量学习模块网络结构,结合小样本学习提升对零售商品图像的分类精度与泛化能力。