【论文学习笔记-12】A Decomposition Model For Stereo Matching(2021 CVPR)
本文提出了在分辨率提高的同时控制计算量的一种立体匹配算法。
Key Observations
①有一些点并不必要在最高分辨率下估计视差值,比如墙,楼梯。只要该部分内容在下采样过程中并不受到明显损失,就可以在下采样后再进行预测,然后再通过高分辨率图像进行微调。
②需要考虑的那些点是图像在下采样过程中会损失的一些图像细节。好消息是,这些损失的细节是稀疏的,(作者认为)同时左图中损失的细节也会匹配到右图中下采样被损失的细节。稀疏的匹配意味着更少的时间和空间的损失。
根据①,本文设计了一个从很低分辨率进行匹配的模型,使得绝大多数视察估计不会在采样中被损失。
根据②,本文的模型使用了一系列的稀疏匹配,每种匹配在一个恰当的高分辨率下,来恢复损失细节的视差。至此,本模型将原本的立体匹配分解成一个低分辨率下的立体匹配和一系列的稀疏匹配问题,从而让立体匹配的开销明显减小。
模型
在Reference Resolution(最低分辨率?)中使用了一个完整的代价,之后会一个尺度一个尺度的进行一系列操作,直到尺度扩张还原到原始分辨率为止。这些操作包括:细节损失检测,稀疏匹配,视差上采样,视差混合。具体的实现为:
在细节损失检测模块,损失的图像信息通过非监督方式,由和相邻分辨率图像的平方误差估计而来。
在稀疏匹配模块中,稀疏的视差图通过互相关和softmax函数来检测,这里通过检测到的损失的细节来guide此模块。
在视差上采样模块中,当前视差图会通过内容自适应权重由上一个分辨率的视差图上采样而来。
在视差混合模块,稀疏匹配和视差上采样模块通过一个对遮挡敏感的softmask进行混合。
最后有一个refinement模块去修正上述得到的混合视差图。
本文证明了原本的深度立体匹配网络随着分辨率的提高,复杂度乘三次方增长,而文本中的稀疏匹配模块复杂度只呈对数增长。最初在reference 分辨率下的立体匹配模块的复杂度是固定的,而其它几个模块也可以高效实现。
立体匹配的计算公式如下:
考虑有多个分辨率的匹配流程,总复杂度为:
文中定理1:设每层间的上采样率为集合
,C是一个介于[1,8/7]的常数,则复杂度上界为:
根据前文所说,A的视差可被分解为两个区域,称为粗纹理区域和细纹理区域,前者可通过下采样后的图高效预测视差,后者则不能,则总视差图为:
这里CA代表粗纹理区域,FA代表细纹理区域。
模型细节
在最低分辨率层,本文直接使用之前的立体匹配方法,代价计算得到Cost Volume后,紧接着是8个包含BN的3D卷积层,模型如图。
本文通过FA来代表在下采样的图像中会失去的细节信息,本文通过一个网络来还原这些失去的位置,通过一个二元掩膜矩阵储存。计算公式基于两层的特征(一层维度不变,一层上采样)以及平方差来计算,公式为:
网络包括三个卷积层一个sigmoid函数,通过非监督的loss来训练,loss函数为
获取细纹理区域后,进入离散匹配阶段,离散匹配的输入是动态的,因此不适合CostVolume,这里使用直接的cross-correlation计算代价,然后使用softmax来预测最后的视差值。公式为:
视差上采样:获得了某层视差图之后,通过一个内容敏感的动态权重来进行视差上采样,其中包括了若干卷积层。
Disparity Fusion:不采用暴力融合方法,因为这种方法由于遮挡的存在效果很差。这里采用了一个通过学习掩膜来对离散视差图和上采样的到的视差图进行融合的方式,称为soft fusion。掩膜通过一个回归网络得到,包含三个卷积和一个sigmoid。输入是左图特征,上采样得到的视差图,离散的视差图,上述提到的二元掩膜矩阵和鲁棒性匹配矩阵V,公式为:
注意:这里和Bi3D通过二元分类计算连续视差的公式相似,Bi3D公式:
回归网络的公式:
最后的混合视差值(相当于加权求和):
Refinement Network: