:两张匹配图
:分为表示两张图上的像素坐标
:分别表示I1和I2图片通过网络输出的dense的feature map(W*H*128)
:表示的是x1像素坐标处从feature map中取出来的特征向量(descriptor)
下边来看具体实现
1. loss
定义无监督的匹配(既然不需要标注匹配那么是如何实现的呢,请往下看):
上图中M1表示image1输出的dense 的feature map,M2表示image2输出的dense的feature map,
首先计算x1在M2中的匹配的分布情况,那么可以得到:
其中分母表示x1和M2中的所有detector的descriptor计算距离(向量积)之和,分子表示和M2中的某个detector
计算距离,可以知道,越是正确的匹配上述p越大,因此得到的这个概率可以认为是x1和M2种的x的匹配的概率
那么如何无监督的得到x1在M2中的匹配x2呢??有了概率求期望啊,期望就是“匹配”的位置啊:
(x1的匹配的期望的位置)
好了已经有了“匹配”了,而且这个匹配还是可微的,那么可以通过relative pose计算loss了(Fx1是极线),
看上图,所谓loss,其实就是误差,有relative pose,想当然的就可以使用极线约束来计算误差呀!!!
1. 1 假设有匹配的image pair, 他们之间的relative pose F,有极线约束:,
这样就可以计算右边这张图中的x2到x1投影过来的极线的距离就是误差,有:
dist表示点到直线的距离h1->2表示上述的到的x2的位置
1. 2 有了上述极线还不够,更强的约束是x2的反投影应该距离x1很近,那么有:
Ok,最终的loss:
另外文中还在这个loss之前增加了一个均方根的权重,很简单理解。
另外文中在训练的时候为了加速,先在coarse的feature map上得到上述loss,然后再在一个小窗口中得到fine的dense map的loss(提速)都很容易理解
效果提升的也可以