论文题目《End-to-End Learning of Geometry and Context for Deep Stereo Regression》,被2017ICCV收录,后用GC-Net代表这个模型。官方给的代码是tensorflow版的,但由于tensorflow版的可读性不如pytorch,自己改成了pytorch版,在KITTI2015上训练了200个epoch,3像素误差收敛在4.6%左右。链接:https://github.com/gpcv-luochong/gc-net(创作不易,记得点个赞再走哟,亲)
截至目前为至,做立体匹配的文章可以在KIITI排行榜上寻找(http://www.cvlibs.net/datasets/kitti/eval_scene_flow.php?benchmark=stereo),较新的深度学习方法包括Disp-Net,GC-Net,PSM-Net,SCV-Net,Stereo-DRNet,GWC-Net,GA-Net,AA-Net,CSPN。
立体像对的深度估计对计算机视觉的应用来说至关重要,包括自动驾驶、三维重建、物体检测及识别。给定一对矫正过的立体像对,深度估计就是计算每个像素的视差值d。对于参考图像中的每一个像素,视差d是指与其对应的图像上同名点的水平距离。简单来说,对于左图上的像素点(x, y),如果在右图上找到对应的同名点(x+d, y),d就是视差值。然后根据公式Z=f*B/d,可以计算出像素点的深度,f代表焦距,B代表两个相机中心间的距离,d代表视差值[1]。
GC-Net提出一种端到端的监督学习方式,直接从立体像对学习得到视差图。PSM-Net引入了金字塔池化模块,利用全局上下文信息进行立体匹配。空间金字塔池(SPP)和膨胀卷积用于扩大接受域。通过这种方式,PSM-Net将像素级特征扩展到具有不同接受域尺度的区域级特征。结合全局和局部特征线索,形成可靠的视差估计代价量。Gwc-net的创新性在于“组相关”,就是对多通道的特征图沿着通道分组。比如文中实验部分提到的左右特征图是320通道的,就分为了40组,每组8个通道。“组相关”的计算是按照向量内积的方式,但是因为一组有多个通道,又不会丢失很多信息。GA-Net包括半全局聚集(SGA),以及局部引导聚集(LGA)层进行端到端的匹配。GA层主要意义是在具有挑战的区域提高偏差估计的精度,例如遮挡、无纹理/反光区域和小结构。GA层能够用来去替换3D卷积的计算消耗和得到较高的精度。SCV-Net(稀疏成本体积网络)实现精度高,存储成本低,计算速度快。立体匹配的成本体积的概念最初是在GC-Net中提出的。其通过对成本体积的压缩和提出对体块进行了有效的相似度评价,提高了体块的匹配速度的准确性。此外,使用了权重归一化而不是常用的批处理立体匹配任务的标准化,这提高了对传感器噪声的鲁棒性。AA-Net提出了一种基于稀疏点的成本聚合算法缓解众所周知的视差不连续,并且同时保留了高精度和高效率的优点。
从立体像对估计深度是计算机视觉中最基本的问题之一[8]。关键任务是寻找空间像素对应,即立体匹配,然后深度可以恢复三角网。高效、准确的立体匹配算法至关重要对于许多需要快速和可靠响应的现实应用,如机器人导航、增强现实和自动驾驶。通常基于深度学习的密集匹配算法可以分为四个步骤:匹配代价的计算、匹配代价的聚合、视差值的计算、视差值的优化。
可以毫不夸张的说,GC-Net是深度学习的密集匹配中最经典的算法。后续的许多算法都是在其上进行的改进。其创新性的提出了一种深度学习网络,可以从校正后的立体像对中回归出视差图。使用了3D卷积的概念去获得更多的上下文信息,并采用回归的方法去预测视差值,不再使用传统的成本聚合,视差计算,视差优化的方法,利用一个端到端的网络直接生成最终的视差图。这一思路无疑比传统的图块匹配的方法更加先进,而且不用再给图块设置标签,直接将预测结果与真实视差图进行比对,再将误差反向传播即可,后来的许多网络都采用了这一思路。
GC-Net(Geometry and Context Network)采用端到端的学习方式,直接由核线立体像对学习得到深度图。为了更好的利用上下文全局信息,应用3D卷积层处理串联得到的代价体(cost volume)。还提出了一种可微分的柔性argmin操作,对匹配代价体回归得到视差值。这就使得可以直接端到端地训练网络达到亚像素级别的精度,而且不需要任何后处理和规则化的操作。整个GC-Net模型由四个步骤组成:一、利用共享权重的2D卷积层提取一元特征,得到一系列的特征图;二、对所有的特征图进行聚合,将左特征图和右特征图串联得到代价体;三、利用3D卷积和3D反卷积处理得到的代价体,最后应用一个单独的3D反卷积,输出单一特征图;四、采用柔性的argmin操作在视差维度上估算视差值。
而不是设计任何一步立体匹配算法,GC-Net使用深度学习的视差图学习端到端映射。希望能直接从函数中学习到更优的函数数据。此外,这种方法有望大大减少工程设计的复杂性。然而,其意图并不是天真地构建一个机器学习体系结构,将其作为一个黑盒来建模立体匹配算法。相反,提倡利用几十年来对多视图几何研究的深刻见解,指导建筑设计。因此,通过开发代表传统立体视觉中每个主要组成部分的可微层来形成我们的模型管道。这使其能够从头到尾地学习整个模型,同时利用我们的几何知识解决立体匹配中的问题。