1.Motivation
a. inter-class similarities(similar appearance between different persons)
b. intra-class variations(same person with different pose, facial expressions, illuminations)
人脸图像存在类间相似,类内变化大的问题。很多方法都会针对这个问题设计Loss或者算法
2.Contribution
针对上述的问题,文章主要做的事情有:
a. 用center-clustering loss来最小化属于同一类的人脸特征之间的距离,解决intra-class variation
b. 分别对人脸的实数值特征和哈希码应用classification loss(即softmax),目的是学习出具有判别性的特征/哈希码, 将人脸从众多身份中辨认出来
c. 提出block hashing layer,这一层的作用是同时减少哈希码之间的冗余度,以及参数的数量
3.Proposed Approach
(1) 网络
和之前的几篇深度哈希论文一样,取最后一个池化层和最后一个卷积层的输出分别做全局最大池化,然后合并在一起进入全连层。这样做的目的是提取多尺度特征,并且减少参数的数量。
(2) 损失函数
文章用了四个loss, 两两分别作用在descriptor(图像连续值特征)和HashCode图像哈希码上。
a. Center-Clustering Loss
作用:让属于同一个人的不同训练数据靠近这个类中心
说明: 是图像的特征, 指类别为 的类中心向量。文章说,这些中心是用Xavier的look-up-table来进行初始化的,使得他们满足高斯分布。Xavier是一种神经网络初始化方法,参考文献:深度学习——Xavier初始化方法
b. Classification Loss from Descriptor
简单的分类损失——交叉熵损失函数
c. Classification Loss from Hashing code
说明:这里的 指的是被松弛了的哈希码,他并不真正是+1/-1的离散值,而是绝对值接近于1的连续近似离散值。哈希码是由本文使用的Block-Clustering Layer得到的,这个概念会在后面解释
d. Quantization Loss
说明:量化损失函数,这个是几乎所有深度哈希方法都会做的。因为神经网络要后向传播,根据损失函数计算梯度,以优化网络,得到适用于自己的任务的一套参数。但是哈希码实际上是+1/-1或0/1的离散值,直接在网络上对特征向量量化到离散值的话,网络无法传递梯度到前层中。因为取0/1,+1/-1是,梯度一般接近于0。因此在网络中要对哈希码做松弛。保持他的连续值,同时增加一个量化损失,让特征绝对值尽可能接近于1。后面要存储哈希码的时候,直接对 应用符号函数sgn即可,信息损失也不会太大。
(3)Block-Clustering Layer
前身是divide-and-encode module,分区编码模块:对全连层的输入进行分块,每一个块用一个单独的小全连层连接,对该块中的每一个元素学习权重,输出一个单一的值。最后将每个块对应的值连接起来就组成了图像的近似哈希码,即 。
作用:哈希码的每一个值都由不同的特征值学习得到,这样哈希值中保留的图像信息就不会重叠。使得哈希码具有判别性。
本文的Block-Clustering Layer与divide-and-encode module的不同之处在于,他并不是对每个Block连接一个小全连层,而是对block取softmax函数后的最大值作为代表该block的判别性信息:
然后近似哈希码有下面的公式得到:
这样可以减少更多的训练参数和冗余度,而且后向传播的时候只提取每一个block输出的最大值,下一层的梯度只传给取最大值的那个神经元。
As a result, discriminative information of the large real-valued descriptor is well maintained while each element of the block is effffectively trained to be a representative value of the block according to the classifification result of the descriptor.
(4) 总体损失函数就是前面几个loss的组合:
4. Experiments
在YoutubeFaces和FaceScrub两个数据集上做的实验。比较的方法有DSH, DHCQ, DDH, 和DDQH。
在这两个数据集上,本文方法比其他的深度哈希方法有较大的提升。原因在与center-clustering loss和classification loss的结合。但其实center loss早在2016年ECCV就有论文提出了,用于人脸识别的。本文只不过将它用在人脸检索上,结合哈希学习。所以并不是什么新方法。
5. Comparison
(1) Deep Supervised Hshing for Fast Image Retrieval(DSH)
说明:DSH的思想是用对比损失保留图像原特征空间中的相似性,所以它以图像对加一个监督信息的形式来作为输入。监督信息 指示两张图像是否相似(相似为0,不相似为1)。两张图像相似时,减少他们之间的距离(Loss中的第一项),不相似时,如果他们的距离小于m,就要增大他们之间的距离(Loss的第二项)。Loss最后一项就是量化损失。
(2)Supervised deep hashing for scalable face image retrieval - IJCAI2018
说明:非常基础的方法,Loss由分类误差和量化误差组成。
(3)Discriminative Deep Hashing for Scalable Face Image Retrieval(DDH)-IJCAI2017
说明:这篇论文和上一篇相比,加了2015CVPR论文Simultaneous Feature Learning and Hash Coding with Deep Neural Networks 里的divide-and-encode模块。本文论文也是借鉴这篇论文提出的block-clustering layer。DDH的损失函数不变,仍是softmax loss和quantization loss
(4)Discriminative Deep Quantization Hashing for Face Image Retrieval(DDQH)-IJCAI2017
说明:这篇论文和上一篇的区别在于,用全局平均池化替换掉divide-and-encode module,以减少网络参数。在Hash Layer后面加了一个批量归一化,目的是调整数据分布,加快收敛。
6. Conclusion
本文提出的深度哈希方法和上述几篇深度哈希论文大同小异。感觉没有什么理论上的前进以及方法的创新,都是用别人的方法拼拼凑凑得到的。
来源:CSDN
作者:ljwherry
链接:https://blog.csdn.net/ljwherry/article/details/103741404