1 介绍
基于深度学习的单应矩阵的估计,单应矩阵是个3*3的矩阵,表示两个图像之间的变换关系。传统方法是预测一个图像4个点之间的对应关系来计算单应矩阵的,但是本文作者通过预测流来计算单应矩阵的,(直接预测单应矩阵参数是不现实的)。
这个网络似乎适用于较小幅度的单应变换。In small-baseline scenarios, a homography flow can be reconstructed inside the space spanned by these flow bases by learning combinational weights.
网络中的LRR块叫做Low Rank Representation,低秩表示。除了这个还提出了一个FIL损失,Feature Identity Loss,特征识别Loss。主要就是表示同一个位置的像素的特征经过任何变换应该是一样的。
作者的创新点
- 单应流的新表达。单应流可以由8个预计算好的单位单应流加权表示,而且是无监督算法。
- 提出了一个新的LRR块,可以减少运动特征的rank,进而隐式且有效的减少运动噪声。
- 提出了一个新的FIL损失,能够更好的训练学习。
2 算法
2.1 网络结构
网络结构如下所示,输入两个图片Ia,IbI_a,I_bIa,Ib,经过特征提取和单应估计网络,输出8个参数。作者实际上参考光流的思想去计算单应矩阵的,先计算出8个单位单应流,然后利用这8个预测出参数与8个单位流加权求和。
单应流和它的基本形式。单应矩阵有8个自由度,可以利用4对对应点直接通过直接馅饼变换计算得到。每个流的维度是H∗W∗2H*W*2H∗W∗2。因为单应矩阵有8个自由度,因此单应流的空间由8个2HW的单位流构成。如下公式所示,其中问题就变为我们要如何计算出hih_ihi。值得注意的是这8个流是正交的。
这段给出正交单位流的计算方法。先定义一个单位流(我理解可能就是单位矩阵),然后对单位矩阵的每个维度进行分别调整,这样就得到8个单应矩阵,一个单应矩阵对应一个流图,因此这里就可以得到8个流图。把每个图展开成一个列向量,拼在一起,得到矩阵M∈R2HW∗2M\in R^{2HW*2}M∈R2HW∗2,对这个进行QR分解,得到M=Q⋅RM=Q\cdot RM=Q⋅R,这里的矩阵Q∈R2HW∗8Q\in R^{2HW*8}Q∈R2HW∗8是正交的,因此取出Q的每一列作为一个单位基本流hih_ihi,即[h1,h2,...,h8]=Q[h_1,h_2,...,h_8]=Q[h1,h2,...,h8]=Q。下图是8个基本流可视化的结果,颜色表示方向,颜色强度表示梯度幅值。
等变warp特征提取器。最早的loss是最小化warp之后的像素差异。之后有人认为同一个块学到的特征应该是相似的,因此最小化warp特征之后对应的特征值差异。给定一个特征提取器f,W(f(I))=f(W(I))W(f(I))=f(W(I))W(f(I))=f(W(I))。输入的两张图片Ia,IbI_a,I_bIa,Ib,对应生成的特征为Fa,FbF_a,F_bFa,Fb,因此产生了一个loss,即Lw=∣W(f(I))∣−f(W(I))L_w=|W(f(I))|-f(W(I))Lw=∣W(f(I))∣−f(W(I))。
基于LRR块的单应估计器。这个block用于预测8个参数,后面的部分主体结构是ResNet-34,插了两个LRR块。每个输入的Min∈RH∗W∗CM_{in} \in R^{H*W*C}Min∈RH∗W∗C经过浅层残差网络后得到Mv∈RH∗W∗KM_v \in R^{H*W*K}Mv∈RH∗W∗K,将每一维展开拼在一起,得到矩阵V∈RHW∗KV\in R^{HW*K}V∈RHW∗K,然后与输入MinM_{in}Min结合,得到Mout=V(VTV)−1VTMinM_{out} = V(V^TV)^{-1}V^TM_{in}Mout=V(VTV)−1VTMin,再重组维度得到Mout∈RH∗W∗CM_{out}\in R^{H*W*C}Mout∈RH∗W∗C的输出特征图。这里的K设置为16。看了消融实验,这个LRR提升的效果还挺明显,但这个思路提出的有点突兀,不知道是参考了哪个网络想到了这个Idea。我理解可能是降秩之后特征更清晰了,更好的表达关键信息,训练效果会更好。
2.2 Loss函数相关
当单应流HabH_{ab}Hab估计出来之后,可以变换特征图Fa→Fa′F_a\rightarrow F'_aFa→Fa′,这样就可以构造出一个Loss。值得注意的是,Loss第一项是要求变换后对应特征值因该相似,第二项是要求两张图的特征图应该是不一样的,防止训练时候出现特征值全是0的情况。
然后构造出一个特征识别Loss,就是相同像素区域附近构成的特征值应该是一样的。也就是,变换特征值或变换图像再算特征值应该是等价的。
理论上,交换两个图片也应该是一样的。
3 实验结果
重合效果特别好,右下角有鬼影我猜是人是运动的原因。
整体最优,绝了!
消融实验,证明每个过程都是有用的。
4 总结
这个算法可以用来计算两个小变动的图像的匹配关系,主要适用于小场景变化。
后续可以尝试改进,使其应用在大场景,或相机pose的估计上。