参考代码:stereo-from-mono
1. 概述
导读:在进行立体匹配的过程中成对且带标签的训练数据是很难去获取的,对此现有的很多方法都是在虚拟的合成数据(如SceneFlow、FlayingThings3D等数据集)上训练完成的,自然其在实际多样化的场景中泛化迁移能力是很弱的。对此文章通过使用MiDas对任意的输入图像进行深度估计,并将深度图转换到视差图,之后按照视差图对源图像进行变换得到另外一个视图,其中会对生成的另外一个视图进行修复和补偿优化从而构建一个双目立体图像对。自此,双目立体图像对构造完成,接下来便是使用一个双目立体匹配网络在这些数据上进行训练。正是由于训练数据的多样化文章提出的算法相比合成数据上训练得到的匹配网络更加鲁棒。
文章的算法在做立体匹配的时候并没有采用合成数据,而是在多样化真实数据基础上通过策略得到合成的图像对,从而极大增加了网络的泛化能力,下面图中展示的就是两种训练策略的对比:
文章中使用到的风格多样化数据集称之为MfS(Mono for Stereo’ dataset),其中包含的数据集有:COCO 2017 ,Mapillary Vistas,ADE20K ,Depth in the Wild,DIODE 。经过整理之后其中包含的数据总量为:597727。
2. 方法设计
2.1 算法pipline
文章算法的整体pipeline见下图所示:
从上图可以看出对于一张输入的图像会先使用MiDas进行深度估计得到该张图的深度估计结果:
Z = g ( I ) Z=g(I) Z=g(I)
之后结合双目视觉系统中的基线和焦距属性从深度中反推出视差,也就是下面的过程:
D ˉ = s Z m a x Z \bar{D}=\frac{sZ_{max}}{Z} Dˉ=ZsZmax
其中,参数 s ∈ [ d m i n , d m a x ] s\in [d_{min},d_{max}] s∈[dmin,dmax]是为了模拟多样化的基线和焦距值,实现数据增广和增强泛化能力的。得到视差图之后就需要按照视差图 D ˉ \bar{D} Dˉ