论文
MVSNet: Depth Inference for Unstructured Multi-view Stereo
摘要
MVSNet是深度学习多视立体匹配的开山之作(我个人认为),虽然其在网络结构上与双目立体匹配并没有太大的改进,但是其解决了如何进行多视下怎么可微的进行cost volumn构建。
方法
下图展示了MVSNet的主要结构,如果排除掉cost volumn的构建方法,可以说其与GCNet/PSMNet可以说没啥太大的区别;总体来说,MVSNet也可以分为四个部分,哈斯特征提取、cost volumn构建、cost volumn代价聚合,以及深度优化。
1. 特征提取
此模块无需多言,与其他方法并没有什么太大的区别。
2. cost volumn构建
多张影像进行深度估计,此处有两种方法:第一种先两张两张的做,转化成双目立体匹配,最后融合;第二种,选定一张reference image,估计其深度,同时与多张source image匹配,最后将多个reference image的点云融合起来,得到最终的结果。
相比而言,第二种方法比较优雅,再传统的方法领域里也有非常多的成果(例如colmap等等)。本篇文章也是基于这个思路,但是这个时候就比较头痛了,应该怎么高效的可微的构建cost volumn呢?因为,显然根据不同的深度来投影并计算特征的效率是很低的。
这个时候,MVSNet就充分应用了一个“多视图几何”的常识,假如多张影像共同可见一个平面,那么这些影像之间存在一个单应变换(证明百度即可)。MVSNet假设物方空间都是一系列与Reference Image平行的平面,平面的深度由近及远;然后根据影像之间的位姿和深度,即可求出当前深度下,reference image和source image之间的单应变换,从而高效的完成cost volumn的构建。单应变换的计算公式如下
考虑reference image有多个source image,那么就可以构建多个cost volumn。最后这些cost volumn通过以下公式合并成一个cost volumn,就是就是方差。
3. cost代价聚合和深度优化
cost的代价聚合模式,就是一个3D UNet,没啥好说的。最后回归出深度也用的是GCNet那种方式,soft max,公式如下
深度优化就没啥好说的了,就是导向滤波。
训练及后处理
loss没啥好说的,就是直接比较即可,公式如下
MVSNet还有很多的后处理过程,主要是多张reference image的深度图融合,这里边有滤波啊、融合啊等等之类的东西。
结果
MVSNet开创了一个新的领域,取得的效果也非常不错。唯一的缺点就是,对GPU要求实在是太高了。。。