Siamese网络是一种相似性度量方法,其主要由网络输入构造、卷积神经网络(CNN)和对比损失函数三个部分组成。该网络的原理是对构造的样本对使用卷积神经网络提取图像中的高层特征,然后在网络的顶层通过对比损失函数对两张图像的高层特征进行相似度量。图4-26为一个经典的Siamese网络结构。下面将对Siamese CNN中的三个主要部分进行介绍。
1.网络输入
由于Siamese网络是由两个分支网络所组成的,所以在Siamese网络的输入中通常是由两个图像Xi,Xj所组成的样本对。当两个图像来自相同的类别标签或者同一个语义主题时,将它们所组成的样本对定义为正样本对,即样本对标签Yij=1,而当两个图像来自不同的类别标签或者语义主题时,它们所组成的样本对为负样本对,即样本对标签Yij=0。在训练Siamese CNN网络之前,需要根据训练样本,构造所有可能存在且不重复的训练样本对。
图4-26 经典的Siamese CNN结构
2.卷积神经网络
Siamese网络中的卷积神经网络部分是由卷积层、池化层和全连接层所组成的多层前向网络。其可以看作是一种特征提取器,主要是用来得到图像的高层语义特征向量,以用于后续损失函数的相似度量。值得注意的是,Siamese网络中每个分支的CNN通常具有相同的网络结构和网络参数。当得到Siamese网络的损失函数值后,可通过反向传播方式对CNN的网络参数进行调整,从而使得损失函数能够达到最优值。
3.对比损失函数(www.xing528.com)
对比损失函数是Siamese CNN的一个重要组成部分。它是根据两个图像的特征向量距离构造的一种图像相似度计算函数,其目标是使得正样本间的特征向量距离应该尽量小,而使得负样本间的特征向量距离尽可能的大。采用欧式距离作为度量方式。假设通过CNN得到两个图像的特征向量为GW(Xi),GW(Xj),它们之间的欧式距离平方定义为D(Xi,Xj)=‖GW(Xi)-GW(Xj)‖2,则Siamese网络的对比损失函数定义如下:
Siamese CNN中仍存在以下三个问题需要解决。
(1)训练样本对的选择对Siamese CNN和对比损失函数的训练结果是非常重要的。因此,在训练Siamese CNN之前需要精心选择正样本对与负样本对,甚至需要在所有的样本之间构造正、负样本对。考虑到所有可能的训练样本对组合时,就会使得训练样本对的数目增加到O(N 2),N为训练样本的数量,从而增加CNN网络的训练时间和减缓网络的收敛速度。
(2)Siamese CNN模型中的对比损失函数是基于两个特征向量的欧式距离进行相似度量的,这使得对比损失函数只能在两个维度相同的特征向量上进行。而当面对两种不同模态形式的图像时,其网络结构和参数可能会有一定的差异,从而可能使得每个分支CNN输出的特征向量维度是不同的,因此对比损失函数不能直接对两种不同模态图像的高层语义特征进行相似度量。同时当训练样本数量较大时,在不同模态图像上做语义相似度量也会增加Siamese网络的训练时间。
(3)传统Siamese CNN模型只能辨识两张输入图像是否来自同一个类别标签,并不能完全利用每个图像中的类别标签信息。在CNN的网络参数优化过程中,没有兼顾到Softmax损失函数对网络参数的影响,导致学习到的高层特征向量中出现一些判别性信息的丢失。
针对Siamese CNN模型存在的三个问题,提出两种对比中心损失函数,即模态内中心对比损失函数和跨模态中心对比损失函数,并将两个模态内中心对比损失函数和两个Softmax loss结合在一起使得C2s-S3DCNN能学习到更有区分能力的多模态高层特征。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。