DISK: Learning local features with policy gradient
这篇paper引用强化学习进行关键点的检测。是2020NIPS paper.
动机上来说直接优化成功的匹配点数量。
流程
特征提取
使用UNet从图片提取输出heatmap以及特征矢量(128维)。这篇paper模仿 superPoint的做法,将图片分为由方块组成的网格,然后每一个网格中最多只会有一个keypoint.
而每一个网格内得分最高的点是否为keypoint除了softmax的相对score外还有一个sigmoid的绝对score。
图片的特征集
匹配分布
已知两个特征的特征集,作者计算每两个descriptor之间的距离。从而得到距离矩阵.在训练的时候,作者根据的行或列的softmax值来计算从 或者 的匹配概率。
作者指出为了避免学出难以找出一一对应的特征点,一般采用循环一致匹配(Cycle-consistent matching)以及比率测试(ratio test)两个技巧。
- 循环一致匹配要求两个keypoint必须是相互间都是nearest neighbours才能算是一个一个完整的match
- 比率测试是SIFT开始引入的技巧,对于一个keypoint,它与最近点的距离必须与次近点的特征距离大一定的倍率,才能算是正确的match.
但是这两个技巧都是不可导的。作者提出的方案是放松循环一直匹配的要求。这里采取的方案是只要两个keypoint在softmax中互相采样到就算是consistent.
而两个特征成功匹配上的概率可以计算是 . 因而采样本身不影响梯度的计算.
Reward
对于正确匹配的点与不正确的点分别给一定量的reward。
如果两个点是有深度标注且重投影距离足够小,则记录为正确的匹配。如果两个点没有深度标注,且距离不大,则不计算reward,其他点记录为不正确的匹配点。
梯度
这里采用policy gradient的算法.
目标: 计算
- 期望表达:
- Log-Gradient Trick:
- Factorizing : 。这个等式讲的就是两个点成功匹配的概率是由距离匹配以及两张图各自的分类结果累乘而得的。
由此,仅仅通过匹配的reward,就可以使整个网络端到端训练。