HyNet: Local Descriptor with Hybrid Similarity Measure and Triplet Loss(2020)(十二)
本文要解决的问题:
从公式推导descriptor如何训练更加完美,仅仅解决descriptor的问题,detector使用sift或者别的网络得到。
1.梯度下降分析
1.1 首先是梯度方向分析
上述1中的决定梯度方向是分别对x和y求偏导数可以得到上述结果,我们假设:梯度的方向是∆ = ∆∥ + ∆⊥,其中∆∥表示和特征
向量x或者y平行的向量,∆⊥表示和特征向量x或者y垂直的向量,任何梯度方向都可以使用这两个向量之和表示。
当归一化之后忽然发现存在:
这个表示什么意思呢??意思就是如果先对特征向量归一化那么梯度方向和特征向量x的方向垂直了,损失了平行的方向。
具体每个方向如下图所示:
梯度方向分析的结论:一般为了降低噪声干扰都会对特征进行归一化,但是这时候损失掉了平行于特征方向的信息(可以认为是
scale信息)
1.2 然后是梯度幅度分析
假设特征已经进行归一化,那么存在:
由1中幅度就是loss对s的求导,可得(其实就是对θ 的求导):
作者通过大量的数据分析发现θ的范围都是在0-90度:
而上述g函数在0-90度的函数表示为:
可以发现一个是单调递增,一个是单调递减,那这里就有意思了。
对于正样本特征没训练好的时候(也就是比较难训练的特征),这时候夹角应该很大,这时候就需要梯度的幅度大一些。
对于负样本没训练好的时候(也就是比较难训练的特征),这时候夹角应该很小,这时候也需要梯度的幅度大一些。
幅值分析的结论:那么也就是说正样本应该使用gi作为幅度函数,负样本应该使用gL作为幅度函数。
好了有了上述分析,可以构造本文的核心部分,也就是要避开上述存在的问题结合上述分析得到的优势
-
为了避免提取方向上的损失在归一化之前增加可以带遍scale的项,不让平行方向的作用(scale)消失:
2. 为了同时可以兼容1.2分析的不同函数对幅度的影响使用:
因此最终的triplet loss为:
网络框架:
其中FRN是作用在中间feature map层的一种归一化方法,很简单可以参考论文