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