谷歌实时端到端双目系统深度学习网络stereonet
导言
双目匹配可以得到环境中的三维深度信息,进而为机器人,无人车,VR等现实场景下的应用提供有力信息,在对安全验证比较高的人脸支付领域,三维人脸验证也正在逐渐取代安全性较低的二维人脸验证。近年来,深度学习双目系统匹配已经取得了很不错的进展,很多先进的网络性能已经超过传统方法。然而,深度学习双目系统匹配仍然在实用方面面临很多问题,其中一个问题便是无法做到推断实时。这点严重制约了双目匹配网络在实际中的应用。最近谷歌研究员提出了实时端到端双目系统深度学习小网络stereonet,推断速度达到60FPS,远超之前的方法。
Github地址:
https://github.com/meteorshowers/StereoNet
背景分析
为了从立体图像中获得深度估计值,一个典型的立体匹配算法包括四步:匹配代价计算,代价聚合,优化和视差精细化。当前最前沿的研究聚焦于如何利用CNNs准确的计算匹配代价和如何利用半全局匹配(SGM)去优化视差图。
传统匹配算法比较经典的稠密匹配算法是SGM算法,半全局立体匹配算法Semi-Global Matching,SGM由学者Hirschmüller在2005年所提出1,提出的背景是一方面高效率的局部算法由于所基于的局部窗口视差相同的假设在很多情况下并不成立导致匹配效果较差;而另一方面全局算法虽然通过二维相邻像素视差之间的约束(如平滑性约束)而得到更好的匹配效果,但是对内存的占用量大,速度慢。为了结合两者的优点,同时避免两者的缺点,SGM算法依旧采用全局框架,但是在计算能量函数最小化的步骤时使用高效率的一维路径聚合方法来代替全局算法中的二维最小化算法,使用一维最优来近似二维最优,得到的视差图在效果上和全局算法没有太大的差别,但是算法效率却有非常大的提升。
Zbontar 和 LeCun 设计了一个深层的Siamese网络去计算匹配代价,利用一对9*9的图块,该网络被训练去学习预测图块之间的相似性。他们的方法同样采用了经典的立体匹配流程,包括代价聚合,SGM和其他视差优化方法来提高匹配结果。更进一步的研究用于改善立体深度估计,Luo等人提出一种更快的Siamese网络,该网络将匹配代价计算转化为多标签的分类问题。Shaked 和 Wolf 提出一个高速网络(highway network)来计算匹配代价和一个全局的视差网络去预测视差置信度得分,这方便进一步优化视差图。近来出现了一些高性能的双目神经网络,但是其显存与运行速度远远达不到实际应用的场需求,基于此,ECCV2018中stereonet的出现大大提高的双目系统的运行速度。
作者介绍
该工作是由谷歌研究员Sameh Khamis在ECCV18上发表的一个工作。Sameh Khamis博士毕业于马里兰大学,师从美国马里兰大学计算机系主任Larry S.Davis教授。
网络结构分析
上图所示为网络架构,蓝色方框之前的部分是粗粒度的深度估计,这部分首先通过 Encoder 的结构进行图像特征提取,然后将左右两个图片的特征得到相应的 Cost Volume, 之后利用三维卷积操作得到 1/8 分辨率的深度图。
粗粒度的深度估计
提取特征:左右图共享权值的Siamese Network 分别提取左右图的特征,使用 K 个 55 的卷积层进行下采样操作(K 通常取 3 或者 4),在下采样的过程中,卷积的输出通道数保持为 32,然后是 6 个残差块(Residual Block),每个残差块由于卷积、批正则化(Batch Normalization)、矫正线性单元(Leakey ReLU)等操作;最后是一个没有正则化、没有激活层的卷积层,最终得到输出的32通道的特征图。
匹配代价 Cost Volume:首先将两幅图的相关关系进行比较,比较两个特征图并将两个特征图的差异作为基础得到 cost volume,之后再利用带有批正则化和激活层的三维卷积,操作后最终针对每个像素得到单通道的视差。
可导的 Arg Min:利用该函数从 cost volume 的产物中得到最后的深度图,采用 WTA 策略。
层次化的视差优化——考虑边缘结构的上采样
粗粒度的深度估计之后,首先将 1/8 分辨率的深度图直接通过双线性插值的上采样策略上采样放大到全分辨率,将原本输入的 RGB 图像复制成相同维度,由于转置卷积(Deconvolution)存在一些表现性能不佳的劣势,因而转而选用 双线性上采样和卷积(Convolution)操作替换。首先将深度图和 RGB 图像拼接(Concatenate),得到的拼合张量再经过一个 33 的卷积操作得到 32 通道的表示张量,之后再通过 6 个 残差块(Residual Block)的操作,每个残差块由于卷积、批正则化(Batch Normalization)、矫正线性单元(Leakey ReLU)等操作;为了扩大网络,在每个残差块中使用了扩张(Dilate)卷积的操作,最后经过一个 33 的卷积,得到最后的单通道深度图。
下面给出在多层次优化视差图过程中的每一个中间结果,可以看到经过多层次优化,网络的结果得到了明显的提升。
性能比较
可以看到,stereonet能够以优越的性能进行实时推断。是目前最为先进的实时双目匹配网络之一,为双目匹配系统的应用打下了坚定基础。
复现指导:
优点:
借鉴了目前小网络领域的最新发展成果, 如mobilenet,squeezenet等。在图像特征抽取部分利用连续的三个5*5大卷积核进行下采样,将特征图size降低到原图尺寸的八分之一,极大降低了网络计算负担,同时采用了leaky relu等操作,使得stereonet的特征提取过程能够用极小的计算负担提取丰富的图像特征。在refinement阶段,通过创新构造了残差边缘恢复模块,去逐步精修视差图的粗糙边缘,来得到具有锐利边缘的精细视差图。在训练过程中,也采取了deep supervision的思想,在网络的各个refinemet阶段引出侧输出,进行多个loss的整合,加强梯度回传。
对于文章中的refinement的结构把握是实现该网咯的重要过程,也是文章强调的亮点,对此,在上面的叙述过程中,已经专门抽出一小节来结合代码说明。
不足:
由于最后使用了rgb图像去优化视差图,导致了模型的泛化能力存在特别严重的问题,这一点也是其他双目模型存在的一个严重问题,有待后续解决。
代码:
由于商业原因,该项目代码并未开源,目前有研究者完整复现了相关研究,代码地址为Github:
https://github.com/meteorshowers/StereoNet
目前该复现代码略优于论文中report的指标,速度上能够以30~50FPS的速度推断。
对于pytorch 加速有深入研究的同学可以和复现作者联系,共同进一步提高速度。
参考文献:
[1]ECCV 2018
http://link.zhihu.com/?target=https%3A//www.researchgate.net/publication/326495585_StereoNet_Guided_Hierarchical_Refinement_for_Real-Time_Edge-Aware_Depth_Prediction
[2] CVPR 2018
http://link.zhihu.com/?target=https%3A//arxiv.org/pdf/1803.08669.pdf
[3] SIGGRAPH 2009
https://dl.acm.org/citation.cfm?id=1531330
[4] CVPR 2005
http://link.zhihu.com/?target=https%3A//www.robotic.dlr.de/fileadmin/robotic/hirschmu/cvpr05hh.pdf
[5] TPAMI
https://core.ac.uk/download/pdf/11134866.pdf
本文为SIGAI原创
如需转载,欢迎发消息到本订阅号
全文PDF见http://www.tensorinfinity.com/paper_135.html
原文发布于微信公众号 - SIGAI(SIGAICN)