基于语义层次结构的Triplet网络学习方法

著录项
  • CN201910060989.8
  • 20190123
  • CN109919320A
  • 20190621
  • 西北工业大学
  • 何贵青;张琪琦
  • G06N20/00
  • G06N20/00 G06T5/00

  • 陕西省西安市友谊西路127号
  • 陕西(61)
  • 西北工业大学专利中心
  • 金凤
摘要
本发明提供了一种基于语义层次结构的Triplet网络学习方法,构建语义层次结构,层次化Triplets采样,之后层次化Triplet网络训练,再利用bilinear特征增强,从而更新网络的参数。本发明既利用了语义知识指导网络层次化的区分样本结构,又利用了层次间的关系让网络关注到更有效的Triplets对,充分挖掘了batch中样本的有效性,从而提升了网络学习到的深度特征的可分性。同时,本发明还利用bilinear函数对图像细节进行了增强,并与Triplet联合训练,进一步提升了网络的性能。
权利要求

1.一种基于语义层次结构的Triplet网络学习方法,其特征在于包括下述步骤:

步骤1:构建语义层次结构

在一个数据库中,将数据库中已知的图像类别称作细类,作为语义层次结构的第二层,然后根据已知类别之间的视觉相似度或者语义关系将细类归纳为新的类别,即得到粗类,作为语义层次结构的第一层;

步骤2.层次化Triplets采样

首先从样本中随机选择一个样本作为anchor,然后以语义层次结构的第二层细类划分为指导,从和anchor属于同一细类的样本中随机挑选一个样本作为f-positive,从和anchor属于不同细类的样本中随机挑选一个样本作为f-negative;接着以语义层次结构的的第一层粗类划分为指导,从和anchor属于同一粗类的样本中随机挑选一个样本作为c-positive,从和anchor属于不同粗类的样本中随机挑选一个样本作为c-negative;因此,对于每一个anchor样本,得到按照细类匹配的f-positive和f-negative,也得到按照粗类匹配的c-positive和c-negative;

本发明先在粗类中采样,然后在细类中采样,在粗类中采样时,对于每一个anchor样本,采样得到按照粗类匹配的c-positive和c-negative作为一个triplets;在细类中采样时,对于每一个anchor样本,采样得到按照细类匹配的f-positive和f-negative作为一个triplets;然后进入步骤3将在粗类匹配和细类匹配中得到的triplets网络进行训练;

步骤3.层次化Triplet网络训练

假设x是输入图像,为anchor图像,是和anchor来自同一类别的positive图像,是和anchor来自不同类别的negative图像,网络利用三个图像和组成的Triplets对进行网络损失的计算,然后通过最小化网络损失进行网络训练;

本发明利用Triplets匹配方式,即给网络每次输入一个batch,然后在batch中在线生成符合要求的所有Triplets,损失函数L如下式:

其中f(.)表示输入一张图像后,CNN最后一层全连接层所输出的特征向量,B表示本发明随机选取的batch,N表示batchsize的大小,m表示margin的大小,本发明m值范围在1-10之间;

在stage1,首先从粗类中进行采样,对于从同一粗类中选取样本记为从不同粗类中选取样本记为网络损失L表示如下:

在stage2,从细类中进行采样,对于从同一细类中选取样本记为从不同粗类中选取样本记为网络损失L表示如下:

步骤4.bilinear特征增强

本发明利用bilinear函数对网络输出特征进行细节增强,对于anchor,positive,negative,有:

其中,分别表示anchor,positive,negative样本通过最后一层卷积层输出的特征,l表示图像的位置,分别为三个样本增强后的特征,将增强后的特征通过全连接层后分别记为

再计算网络损失,对于同类之间的损失函数Lp表示如下:

异类之间的损失函数Ln表示如下:

因此总体损失函数为:

公式(9)中的损失函数通过反向传播继续更新网络的参数。

说明书
技术领域

本发明涉及机器学习和图像特征提取领域,尤其是一种Triplet网络学习方法。

度量学习是一种高效的深度学习方法,它通过计算两张图片之间的相似度来计算误差从而更新网络参数。度量学习的目标是通过计算图片之间的相似度,进而使异类图片相似度小,同类图片相似度大,最终学习到可分性强的特征。从最初的Siame络到现在的Triplet网络以及各种Triplet网络的改进和变种,度量学习的方法都体现了它独到的优越性。

Triplet网络通常要求输入一个三元组,包括anchor,positive,negative三个样本,其中positive和anchor来自于同类,negative和anchor来自于异类。Triplet网络在训练时使得两个属于同类的样本在新的特征空间里尽量靠近,两个属于异类的样本在新的特征空间里尽量远离,由此网络可以区分不同类别的样本。网络加入了两个输入差异性的度量,因此当两个输入相似时,Triplet损失函数能够更好地对细节进行建模,学习到更好的特征表示。由此,Triplet网络能够训练出可分性很强的特征,它将会在很多领域发挥巨大的作用,比如图像细粒度识别,目标检测等等。

Triplet损失函数在某些方面相比传统的损失函数具有更大的优越性:首先,在细粒度识别中,当类别数较多时,如果利用传统的损失函数,往往会造成softmax的维数远大于特征的维数,全连接层会产生巨大的计算量,而Triplet网络的训练方式就可以很好地避开这一点,它不需要连接多维的softmax层去衡量特征与标签之间的关系,而是从样本中选择有效的三元组来度量样本特征之间的距离关系;其次,当数据库中每个类别的样本较少时,利用普通的损失函数一般很难进行训练,而Triplet损失函数在这种情况下反倒会有很好的表现;Triplet损失函数还有一个优点是设置阈值,根据阈值margin可以灵活地控制样本之间的距离。

但是Triplet网络也存在很多不足之处:比如,网络的损失函数收敛很慢;采样方式对网络的影响很大,网络是否能够很好的收敛在很大程度上取决于所选的三元组样本是否合理;并且,Triplet网络在大规模数据集上训练较困难,随着样本数量和类别的增多,网络会产生很多对训练没有贡献的Triplets,而我们常常需要搜索整个空间才可以到对网络训练真正有贡献的hard Triplets。因此在细粒度图像中训练Triplet网络是一项更具挑战性的任务。

在网络的采样方式上,Triplet存在的一个很大的困难是可能的Triplets数量与训练样本的数量成正比,所以为了避免在采样时搜索整个样本空间,一些研究人员将Triplets损失函数转化为一种softmax损失。这些方法虽然显示出很好的效果,但是没有考虑到hard Triplets,所以紧接着一些研究综合了分类和hard Triplets的优点进行了改进,同时为了充分利用batch,一些研究还提出在batch中在线生成hard Triplets。在网络的损失函数上也出现过很多的改进。比如将batch内样本的成对距离向量升级为成对距离矩阵,将三元组扩展到四元组等等。

为了克服现有技术的不足,本发明提供一种基于语义层次结构的Triplet网络学习算法,既利用了语义知识指导网络层次化的区分样本结构,又利用了层次间的关系让网络关注到更有效的Triplets对。同时,本发明还利用bilinear函数进一步增强了图像细节。

本发明解决其技术问题所采用的技术方案的步骤如下:

步骤1:构建语义层次结构

在一个数据库中,将数据库中已知的图像类别称作细类,作为语义层次结构的第二层,然后根据已知类别之间的视觉相似度或者语义关系将细类归纳为新的类别,即得到粗类,作为语义层次结构的第一层;

步骤2.层次化Triplets采样

首先从样本中随机选择一个样本作为anchor,然后以语义层次结构的第二层细类划分为指导,从和anchor属于同一细类的样本中随机挑选一个样本作为f-positive,从和anchor属于不同细类的样本中随机挑选一个样本作为f-negative;接着以语义层次结构的的第一层粗类划分为指导,从和anchor属于同一粗类的样本中随机挑选一个样本作为c-positive,从和anchor属于不同粗类的样本中随机挑选一个样本作为c-negative;因此,对于每一个anchor样本,得到按照细类匹配的f-positive和f-negative,也得到按照粗类匹配的c-positive和c-negative;

本发明先在粗类中采样,然后在细类中采样,在粗类中采样时,对于每一个anchor样本,采样得到按照粗类匹配的c-positive和c-negative作为一个triplets;在细类中采样时,对于每一个anchor样本,采样得到按照细类匹配的f-positive和f-negative作为一个triplets;然后进入步骤3将在粗类匹配和细类匹配中得到的triplets网络进行训练;

步骤3.层次化Triplet网络训练

假设x是输入图像,为anchor图像,是和anchor来自同一类别的positive图像,是和anchor来自不同类别的negative图像,网络利用三个图像和组成的Triplets对进行网络损失的计算,然后通过最小化网络损失进行网络训练;

本发明利用Triplets匹配方式,即给网络每次输入一个batch,然后在batch中在线生成符合要求的所有Triplets,损失函数L如下式:

其中f(.)表示输入一张图像后,CNN最后一层全连接层所输出的特征向量,B表示本发明随机选取的batch,N表示batchsize的大小,m表示margin的大小,本发明m值范围在1-10之间;

在stage1,首先从粗类中进行采样,对于从同一粗类中选取样本记为从不同粗类中选取样本记为网络损失L表示如下:

在stage2,从细类中进行采样,对于从同一细类中选取样本记为从不同粗类中选取样本记为网络损失L表示如下:

步骤4.bilinear特征增强

本发明利用bilinear函数对网络输出特征进行细节增强,对于anchor,positive,negative,有:

其中,分别表示anchor,positive,negative样本通过最后一层卷积层输出的特征,l表示图像的位置,分别为三个样本增强后的特征,将增强后的特征通过全连接层后分别记为

再计算网络损失,对于同类之间的损失函数Lp表示如下:

异类之间的损失函数Ln表示如下:

因此总体损失函数为:

公式(9)中的损失函数通过反向传播继续更新网络的参数。

本发明的有益效果为将语义层次结构和Triplet网络学习有效结合,既利用了语义知识指导网络层次化的区分样本结构,又利用了层次间的关系让网络关注到更有效的Triplets对,促使网络学习这些难分的样本,关注这些细类中难以区分的特征,同时这也带来了更多对网络训练有贡献的三元组,充分挖掘了batch中样本的有效性,从而提升了网络学习到的深度特征的可分性。同时,本发明还利用bilinear函数对图像细节进行了增强,并与Triplet联合训练,进一步提升了网络的性能。

图1(a)本发明中为subset of Orchid2608数据库的两层语义层次结构;图1(b)为Fashion60数据库的两层语义层次结构。

图2为本发明中的层次化Triplets采样示意图。

图3为本发明中的层次化Triplet网络结构示意图。

图4(a)为粗类样本间stage1到stage2样本间关系变换示意图,图4(b)为细类样本间stage1到stage2样本间关系变换示意图。

图5为本发明网络与传统网络所提取样本粗类特征可分性对比,图5(a)为传统Triplet训练集特征,图5(b)为层次化Triplet训练集特征,图5(c)为传统Triplet测试集特征,图5(d)为层次化Triplet测试集特征。

图6为本发明网络与传统网络所提取样本细类特征可分性对比,图6(a)为传统Triplet训练集特征,图6(b)为层次化Triplet训练集特征,图6(c)为传统Triplet测试集特征,图6(d)为层次化Triplet测试集特征。

下面结合附图和实施例对本发明进一步说明。

本发明从一个新的研究方向提升Triplet网络的性能。由于细粒度样本种类间相似度极高,因此本发明考虑到将语义层次中更抽象的类别信息融合进来,提升细类种类的可分性。语义层次结构是由Quillian和Collins在1969年提出的一种概念结构,网络结构中各类属概念按逻辑的上下级关系组织在一起,层次越高的概念,抽象概括的水平越高。由于传统N-way softmax忽略了类间相关性,而利用用语义层次结构可以整理大规模类别中广泛存在的类内相似性和类间差异性,将这种结构应用在细粒度图像中可以很好的说明某些细粒度类之间可能存在的很强的类间相关性。于是本发明首次将这种语义层次结构应用在Triplet网络中,希望在训练网络时,既能够得到样本语义层次的指导作用,层次化的区分样本结构,又能充分利用层次间的关系,使网络关注到更有效的Triplets对,从而提升样本特征的可分性。

步骤1:构建语义层次结构

在一个数据库中,将数据库中已知的图像类别称作细类,作为语义层次结构的第二层,然后根据已知类别之间的视觉相似度或者语义关系将细类归纳为新的类别,即得到粗类,作为语义层次结构的第一层;

本发明考虑利用层次语义结构作为指导。在一个两层的语义结构中,各类属概念按逻辑的上下级关系组织在一起,网络中第一层的概念更抽象,类别间具有较大的类内视觉差异,第二层的概念更具体,类别间具有较小的类内视觉差异,由此,语义层次结构可以将差异性大的粗类分开,指导网络区分不同的粗类;同时将更相似的细类聚集起来,使网络更加关注到相似细类中存在的hard Triplets样本(negative与anchor的距离小于positive与anchor的距离或者margin)。对于一个数据库来说,可以得到若干个具体的语义类别,将这些类别称作细类作为语义层次结构的第二层,然后根据这些类别之间的视觉相似度或者语义关系可以将某些细类归纳到一个类别中,这样就得到了数量更少,语义更抽象的粗类,作为语义层次结构的第一层。

本发明以自然体系为参考,为两种细粒度图像数据库分别构建一种有效的语义层次结构。首先使用一个包含250种类别的植物数据库(Orchid2608的子集),参照兰科植物类别的自然语义结构,为此数据库构建了一个两层的层次语义结构。首先,从数据库获得了250种兰科植物物种类别,然后参照兰科植物自然体系中植物物种和植物属之间的关系,分别到这250种植物所属的兰科植物属,于是这些植物物种类别就被划分到了不同的植物属类别下,然后将这些植物属类别作为粗类,即语义层次结构的第一层。如图1(a)所示,其中,8种粗类代表8类兰科植物属,250种细类分别代表每种植物属下的兰科植物种类。为了验证语义结构的有效性,又使用另外一个包含60种fashion类型的数据库Fashion60,参照每种fashion的功能关系为此数据集构建了一个两层的语义层次模型,如附图1(b)所示。其中,5种粗类代表5种服装大类(包括上衣,裤子,鞋子等等),60种细类代表不同fashion功能下的具体的服装类别。

步骤2.层次化Triplets采样

此前观察层次化样本空间中不同层样本之间的关系。首先从样本中随机选择一个样本作为anchor,然后以语义层次结构的第二层细类划分为指导,从和anchor属于同一细类的样本中随机挑选一个样本作为f-positive,从和anchor属于不同细类的样本中随机挑选一个样本作为f-negative;接着以语义层次结构的的第一层粗类划分为指导,从和anchor属于同一粗类的样本中随机挑选一个样本作为c-positive,从和anchor属于不同粗类的样本中随机挑选一个样本作为c-negative;因此,对于每一个anchor样本,得到按照细类匹配的f-positive和f-negative,也得到按照粗类匹配的c-positive和c-negative;对于f-positive和c-positive来说,拉近anchor和f-positive的距离比拉近和c-positive的距离更容易,对于f-negative和c-negative来说,拉远anchor与c-negative的距离比拉远与f-negative的距离更容易。于是本发明考虑结合层次化语义结构,利用两个层级的样本类别信息同时作用于网络;

假设Triplet网络需要输入一个图像三元组,传统的采样方式之一是每次给网络采样一个Triplets对,匹配的方式可以采用all positive,hard negative等多种现有方式,本发明结合语义层次结构在层次化的样本空间中进行采样,将训练的过程分为2-stagesampling,如附图2所示,即在先在粗类中采样,然后在细类中采样,在粗类中采样时,对于每一个anchor样本,采样得到按照粗类匹配的c-positive和c-negative作为一个triplets;在细类中采样时,对于每一个anchor样本,采样得到按照细类匹配的f-positive和f-negative作为一个triplets;然后进入步骤3将在粗类匹配和细类匹配中得到的triplets网络进行训练;

步骤3.层次化Triplet网络训练

假设x是输入图像,为anchor图像,是和anchor来自同一类别的positive图像,是和anchor来自不同类别的negative图像,网络利用三个图像和组成的Triplets对进行网络损失的计算,然后通过最小化网络损失进行网络训练;

本发明利用Triplets匹配方式,即给网络每次输入一个batch,然后在batch中在线生成符合要求的所有Triplets,损失函数L如下式:

其中f(.)表示输入一张图像后,CNN最后一层全连接层所输出的特征向量,B表示本发明随机选取的batch,N表示batchsize的大小,m表示margin的大小,它的意义是使得negative与anchor的距离,尽量大于这一阈值,m的大小人工设置的,较小的m可能不能把negative和anchor足够分开,较大的m可能会使得损失函数难以收敛,所以一般要进行多次试验,最终选取一个合适的m值,本发明m值范围在1-10之间。

本发明结合语义结构对网络进行训练,层次化Triplet网络的结构图如附图3所示。

在stage1,首先从粗类中进行采样,对于从同一粗类中选取样本记为从不同粗类中选取样本记为网络损失L表示如下:

在stage2,从细类中进行采样,对于从同一细类中选取样本记为从不同粗类中选取样本记为网络损失L表示如下:

层次化训练方式所产生的机理陈述如下:第一,当本发明把图像的特征按照粗类之间关系进行整合,也就是经过stage1的训练后,语义结构中的知识会对网络产生潜移默化的指导的作用。粗类之间的easy Triplets(negative与anchor的距离远大于positive与anchor的距离或者margin)会变为easier Triplets,semi-hard Triplets(negative与anchor的距离稍微大于positive与anchor的距离或者margin)会变为easy Triplets,这也间接的提升了图像粗类间特征的可分性。第二,在细类中,样本本身比较难以区分,更多存在的是semi-hard Triplets和hard Triplets(negative与anchor的距离小于positive与anchor的距离或者margin)。那么在本发明完成粗类的stagel训练后,曾经对于细类来说的semi-hard Triplets会变为hard Triplets,hard Triplets会变为harder Triplets,这样就使得hard Triplets对损失的贡献更强烈,促使网络学习这些难分的样本,关注这些细类中难以区分的特征。同时这也带来了更多对网络训练有贡献的三元组,充分挖掘了batch中样本的有效性。两个阶段中样本之间的变化关系示意图如附图4所示。

步骤4.bilinear特征增强

细类间图像的特征非常相似,只能靠一些微小的的细节特征来区分不同的种类,于是为了进一步增强图像的细节,使得Triplet计算的损失更加准确,本发明利用bilinear函数对网络输出特征进行细节增强,对于anchor,positive,negative,有:

其中,分别表示anchor,positive,negative样本通过最后一层卷积层输出的特征,l表示图像的位置,分别为三个样本增强后的特征,将增强后的特征通过全连接层后分别记为

再计算网络损失,对于同类之间的损失函数Lp表示如下:

异类之间的损失函数Ln表示如下:

因此总体损失函数为:

由此可知经过增强后,同类图像之间的特征将会更加接近,即公式(7)更小,异类图像之间的特征将会更具差异,即公式(8)更大,因此提升了损失函数的作用,致使网络学习到更具有区分性的细节特征。公式(9)中的损失函数通过反向传播继续更新网络的参数。

本发明将使用两种数据库subset of Orchid2608和Fashion60,并分别给出了两种数据库上的一些实验测评结果和分析。所有的实验都是在深度学习框架pytorch上进行,使用的GPU为GeForce GTX 1080。

首先,本发明训练最原始的Triplet网络作为baseline。在训练时,Triplets匹配方式选择online batch sampling,即给网络输入一个batch,然后从batch中匹配所有可能的Triplets,即对于任意一个anchor,选择batch中所有可能的positive和negative样本组成Triplets。其中,batch的采样方法为balanced sample,即本发明选取一定的粗类,再从每个粗类中选取一定的细类,以保证对于粗类和细类都能得到均衡的样本分布。本发明采用的embedding net是alexnet(去掉卷积和池化层中间的RELU层,去掉dropout层),并且利用一层softmax进行最终的分类。初始学习率设置为0.001,Margin设置为10。

1.层次化Triplet网络

选择上述最优结构的embedding net,利用本发明中提出的算法对网络进行训练。为了对特征进行准确的可视化,我们训练两维的特征,然后将特征表示出来。

在Orchid数据集中,选取5类粗类的特征,将它表示出来如图5所示。对于细类来说,选取前10类细类,并将他们的特征表示出来,如图6所示。

由特征图可以看出,本发明的训练方法和传统Triplet相比同时提升了粗类和细类图像特征的可分性,同类之间的样本特征更加聚集,异类之间的样本特征更加分离。这也说明了这种训练方式的有效性,本发明猜测粗类准确率的提升是因为粗类语义引入的知识导向作用,而细类准确率的提升是因为stage1将相似的细类聚集以后,正如上一部分算法中所讨论的一样,促使网络更加关注相似类别中存在的hard Triplets,而正是这些hardTriplets才是真正对网络训练有贡献的三元组,因此最终提升了特征的可分性。

为了进一步证明本发明算法的有效性,本发明用单层sofmax分类器对特征进行分类,输出维度为待分类的种类数。同时我们还发现,不同粗类stage1的训练程度对于细类stage2也有很大的影响,并且在不同的数据库上也会呈现不同的效果。以下分别是两个数据库上的分类结果:

表1层次化Triplet和传统Triplet的分类结果对比

Orchid

Fashion60

首先,从图表可以看出,stage1中不同程度的粗类训练会为最终的分类带来不同的影响,当粗类的训练程度过高时,反而会使得最终的分类准确率呈下降趋势。我们分析这可能是因为,适当对粗类语义的引入可以利用语义结构的指导作用,将不同的粗类分开,利于最终粗类的区分,将粗类中的细类适当的聚集在一起,利于网络关注到相似样本中的hard Triplets,由此为网络带来性能的提升,但stage 1过多的训练可能会使得每种粗类下的细类太聚集,以至于在区分细类时无法将细类有效的分开,干扰了网络本身对于细类的训练。

其次,在Orchid数据库中的分类提升效果大于Fashion60数据库中的提升效果,我们分析这可能是由于Orchid数据库的细类较多,粗类之间相似度较小,所以利用这种语义层次结构可以更好的关注到hard Triplets,区分相似的图像,从而提升训练效果。而Fashion60数据库的细类较少,粗类之间相似度较大,网络中本身需要区分的hardTriplets相对来说就会少一点,所以利用这种语义层次结构带来的提升效果相对来说不是很明显。所以我们猜测这种训练方法能够使得网络在学习的时候更加关注图像的细节特征,从而更适用于细粒度图像分类。

2.bilinear特征增强

为了得到更高的分类准确率,本发明用bilinear函数对图像细节特征进行加强,以下是在Orchid数据库上的分类结果:

表2 bilinear增强后的分类结果

Orchid

由实验结果可以看出,当本发明增强图像的细节特征后,粗类语义给予网络很少的干预效果时,就会提升最终的分类结果,过多的干预反而会对网络产生影响,致使分类准确率的下降。我们分析这可能是因为图像的特征细节得到增强后,网络本身的性能已经得到了很好的提升,所以带给语义所能提升的空间就减小了。

以上显示和描述了本发明的基本原理、主要特征和优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

本文发布于:2024-09-24 05:26:52,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/73140.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议