在我的上一篇文章84. 三维重建19-立体匹配15,端到端立体匹配深度学习网络之代价体的计算和正则化中,我们学习到了端到端立体匹配网络的代价体计算及正则化的过程,我看到了3D和4D两类代价立方体、以及混合使用两者的方案。正如下图所示,
当进行了代价立方体的正则化后,下一个步骤就是视差估计了。
那么,今天我就来简要的讲一讲通过正则化后的代价立方体进行视差估计。今天的文章大量参考引用了参考文献[1],再次对作者表示敬意!
在开始之前,还是让我们再看看我们目前的位置(怎么还没有完 ):
那么我们就开始吧~
让我们回到Stefano教授的经典讲义(70. 三维重建5-立体匹配1,立体匹配算法总体理解),经典的视差计算方法采用的是赢者通吃策略(及所谓的Winner Take All, WTA),在这里对某个像素,我们会选取匹配代价最低的那个视差值作为计算出的视差值,如下图所示:
如果用公式表示的话,就是:
当然,如果我们的代价立方体里面做了变换,使得其编码了匹配似然度,那么公式就会变成使用argmax,因为似然值是越匹配越大。
如果我们采用的是分离式的方案,那么这样当然不错。但对于我们现在所讲的端到端的立体匹配来说,这种计算方法则存在下面两个不足之处:
很多学者都在想办法解决这两个问题,我们进行首先要看的就是所谓的soft argmin/argmax操作。
我首次看到在立体匹配网络中引入soft argmin/argmax是在下面这篇论文中
作者们首先将代价立方体中的代价值取其相反数,然后进行soft max归一化然后得到归一化的概率值。然后取每个视差的总和d,通过其归一化概率进行加权
这个式子具体展开就是下面这样:
我们从这个式子可以看出,这里求出的视差d*不再是一个整数值,而是一个浮点数的、亚像素级别的视差值,而且这个式子明显是可导的,这样就可以使得这种“软”操作可以接入到端到端的立体匹配网络中了。
不过,作者明确在论文中指出了这种方法的缺点:与argmin操作相比,它的输出受到所有代价值的影响。这使得它容易受到多模态分布的影响,也就是代价曲线有多个可能的峰值的情况。这种情况下,soft argmin/argmax操作估计所有视差的加权平均值,这使得最终求出的视差值d*明显偏离真值。为了克服这一限制,作者实际上依靠网络的正则化来产生主要是单峰的视差概率分布(我觉得这明显不靠谱,特别是在物体的边缘等视差跳变的地方)。作者还提到网络可以预先缩放匹配代价,以控制归一化后softmax概率的峰值。
论文中的图我给大家解读一下,这里有三张图,分别对应单峰情况(a)、多峰情况(b),以及进行了预先缩放匹配代价后的多峰情况(c)。
每一张图,从上到下分别是原始匹配代价,匹配代价求负值后的概率值,soft max归一化后的匹配概率,视差值,以及匹配概率与对应视差值的乘积。同时,图中还标出了实际argmin操作及soft argmin操作得到的视差值。我们可以看到,对于单峰匹配代价曲线,soft argmin的结果非常接近真实的argmin操作结果 ,而对于多峰情况,加权平均后的视差值则大大偏离了真值。从第三图看到,如果网络学会了对代曲线做缩放,那么就能使得最后算出的视差值接近argmin计算得到的视差值了,因为此时整个曲线变得更加极端,接近单峰模式。
寄希望于网络对每个像素点都学到单峰形态的代价曲线,显然是不靠谱的——特别是对应物体边缘、遮挡区域的像素等,这些地方的代价曲线显然是多峰模式的。一些学者提出了更好的解决方案,我们现在看看下面这篇由中山大学和大疆的几位学者共创的论文:
作者也观察到了第二节所讲述的方法得到的视差图,在物体的边缘区域有过于平滑的现象(Over-Smoothing,看论文标题)。在双峰情况下,下图中真值是红色块对应的视差值,而加权平均后得到的是蓝色三角形对应的视差值,这显然不对。
不仅如此,当我们在更小的空间分辨率上进行代价计算时,就更难以判断某个边界像素到底是位于前景还是背景了。作者认为,这种情况下,视差值像差很大的的归一化代价值之间的关联很少,本来就不应该加权平均到一起。比如下图的代价立方体,它已经经过了下采样,空间上同一个像素的两种匹配代价(两个红色块)之间关联很少,它们的影响只在其局部,所以就不应该把它们混在一起。
所以作者们提出的方案是并不在整个视差范围上使用加权平均操作,而是只在最大概率的视差值附近应用加权平均操作。作者首先找到最大概率的索引,然后从这个索引向左和向右扩展,直到它不再单调递减,于是公式变成了下面这样:
其中:
作者将这种方法与采用普通soft argmin的PSMNet的视差计算结果做了对比,从下图中我们明显看到PSMNet的边缘有一些过平滑的视差值,从外观上来讲就是物体显得胖了一圈,而作者的方案中边缘则更加接近Ground Truth。
视差计算看起来是一个简单的过程,完成这一步后我们就得到了最终的视差图。但从今天的文章你应该看到,当应用到端到端立体匹配时,视差计算也是有不少讲究的。对于我的读者来说,我觉得掌握带范围约束的soft argmin加权平均视差计算就足够了,视差图的进一步提升可以通过网络的其他组成部分去完成。我会在下一篇文章重点谈谈几个端到端立体匹配网络要解决的关键挑战,和对应的论文,敬请期待!
最后看看我们的路标: