作者‖ flow

编辑‖ 3D视觉开发者社区

导语:本文是由来自牛津大学、百度研究院以及香港中文大学团队发表的论文,该团队提出了域不变的立体匹配网络方法,用于解决立体匹配网络中直接跨域泛化的问题。适合对立体匹配领域感兴趣,并对该领域术语与概念有一定了解的读者学习。

论文链接:

https://arxiv.org/pdf/1911.13287.pdf

代码链接:

https://github.com/feihuzhang/DSMNet

概述


这篇论文来自于牛津大学、百度研究院以及港中文的团队,主要解决的是立体匹配网络的直接跨域泛化问题。文章提出了一个域不变的立体匹配网络,即Domain-invariant Stereo Matching Netwoks, 简称DSM-Net 。

关于立体匹配的跨域泛化,相对来说研究的比较少,但是并不代表泛化不重要,相反,对于在真实数据和GT较难获取的情况下,合成数据的模型泛化显得格外重要。

先看下论文结果:

显然,就结果来说,DSMNet相对于GANet来说,合成数据集上的模型,直接测试真实的KITTI数据集,有着惊艳的效果,从DSMNet的特征图上也可以看出,相对于GANet有着更少的噪点,这说明DSM网络所提取得到的特征并没有强烈的受着训练数据的影响。

模型


简单的问题场景设定:我们现在没办法去拿到真实场景的数据,不能够进行finetune或者重新训练,该怎么使用合成数据训练得到的模型?

往往,同样的匹配任务,对于传统方法来说,都是提取特征,构建代价空间,WTA的方式,为什么我这张影像的结果不错,那张就不行?经常是因为参数不合适,也因此,我们可以通过调整方法本身的参数,视差的搜索范围等等,去适应目标的立体影像对,使其得到一个还可以的结果。

然而,网络模型不是这样的,模型训练好了就是训练好了,再调整是很难的,那怎么办?一个可以选择的解决思路是,我们去考虑所有立体数据的共性。在网络前向推理的时候,针对的尽可能是数据的共性信息。那么问题就在于,如何去提取数据的共性信息,DSM给出了自己的解答,个人总结一下即,用DN替代BN,所谓的DN是Domain normalization,在接下来将会详细介绍,而BN则是batch normalization。

DSM整体的模型结构如下:

其中,合成数据用来训练,真实数据作为泛化目标数据集,用于测试。DSM使用GANet作为baseline,在其基础上,为所有的特征提取模块以及引导模块中的卷积层都挂上DN层,此外,还挂上了该文提出的“非局部代价聚集“。接下来将对DN以及“非局部代价聚集”进行详细的讨论与介绍。

域归一化:Domain Normalization(DN)


本节将介绍BN、IN与DN。

我们已经很清楚BN了,几乎是构建立体匹配网络的必备选项,然而尽管说,BN能够有效地减少internal covariate shift,但是他还是跟训练数据的域特征有着强相关,对于跨域的泛化来说,并不是一件好事情。

BN的数学表达为:

其中,  以及  分别表示输入以及输出的特征,  则表示某个tensor中的元素的标号,  和  分别表示逐通道的均值和方差,计算方式如下:

其中,  表示同一个通道中的元素的标号,而  则是一个小常数,目的是避免除0的操作。注意到,  是一个通道中的元素标号,也就是说,BN层没有跨通道的能力。实际上,BN相当于一个scale层。BN层在训练的时候,会将一个batch内的数据分布转换为正态分布(即强行将输入值的分布变为:均值为0,方差为1)。在训练过程中,均值  以及方差  是每一个batch的均值,且其叠加起来的值将在推理时被应用。但是,由于不同数据集往往由于影像色度,对比度以及照明等情况的不一致,  以及  并不是可以简单推广到其他数据集上的,这也是导致了泛化差的重要原因之一。

至于IN(Instance normalization),确实在某种角度上来说,克服了对于数据集的依赖,因为它对每一个数据进行归一化,对于IN来说,  则变成了单一的样本,与batch内的其他影像没有关系,理论上来说,IN是域不变的,并且由于其跨空间维度进行归一化,所以其实是减少了影像级别的目视效果的变化的。尽管如此,对于立体匹配任务来说,我们在寻找同名点的时候,其实是在像素级别上的,因此我们会更关注每个像素的多个通道的特征信息,进而,我们潜在的提出了这样的假设:如果对于每一个像素来说,其不同通道的特征满足了同样的分布,是将有利于泛化的,反之,所有会导致这个特征归一化特征以及尺度变化的影响因素都会进一步地影响匹配代价以及相似性的测度计算。

因此,文章提出了所谓的domain normalization(DN),类似于IN,DN首先对对空间维度的特征进行归一化,以避免不同数据集在图像尺度上的显著差别,同时,在通道维度上也进行归一化,目的是加强局部特征的不变性。

具体来说,DN的数学表达为:

其中,  表示某一个像素在通道维度上的下标表达,也就是说,假设通道数一共有  个,那么,  的范围就是从0到  。

BN,IN与DN三者的示意图如下图所示:

再进一步地,关于DN与IN的差别如下图所示,对于左右两个坐标轴内部来说,从左到右的五个柱状分别为合成数据集Sceneflow,KITTI,Middlebury,CityScapes以及ETH3D数据的输出特征的分布表达。可以看到,IN只是减少了影像级别的差别,而DN则是从像素级别出发,对通道维度的特征进行归一化。

非局部代价聚集:Non-local Aggregation(NLF)


提出了一个基于图的非局部滤波器,用于减少网络对影像局部的语义信息的依赖。

设计这个非局部代价聚集的灵感来源于传统方法中的非局部代价聚集。

对于一个2D的影像  而言,我们可以为影像上的每一个像素构建8邻域的链接关系。为了避免图上的循环情况的发生,且为了得到整张图的快速信息狙击,我们将整张图分为两个相反的有向图,分别命名为  以及  ,如下图中的(b)和(c)所示:

我们为属于图  中的每一条边  ,赋予特定的权重  ,具体来说,权重的计算方式为:

其中的  以及  表示两个结点的特征向量,进而,就可以使用\  表示两个像素的相似性。此外,为了训练的鲁棒性以及避免极值的出现,需要进一步的对权重进行归一化,即:

其中的  代表着像素  的邻域,也包括像素  本身,但是需要注意,这里的边都是有向的,也就是说,在  内的像素  的边必须是指向像素  的。

为每一个结点  赋予其特定的特征向量  。我们允许结点  自己向自己传递信息,即  。

对于图  来说,非局部滤波器的数学表达如下:

其中,  表示从结点  到  的一条可行的路径。此外,这里考虑了所有可行的路径,进而  则是所有可行路径的权重的加和,而这样设计所考虑的物理意义是,表示了能够从结点  扩散到结点  的所有信息。

省去推导,可以直接将非局部滤波进行如下的数学表达:

而这样的过程,我们可以借鉴SGM多路径代价聚合近似二维全局的方式,将非局部滤波进行线性实现,该线性实现的数学表达以及反向传播推荐读者去阅读原论文,在此不做赘述。此外,论文还给出了与其他类似的方法的对比与讨论,同样推荐感兴趣的读者去阅读原文。

实验及结果


消融实验

探究了不同网络架构,不同归一化策略,不同NLF层数对网络结果的影响,下表则为消融实验的结果,可以看到,当NLF以及DN拉满的时候(即Feature中带7个NLF,cost volume中带2个),在middlebury以及kitti上都有着很大的精度提升,在都有DN的情况下,NLF个数越多,效果越好。而如果仅仅是将BN改成DN,效果提升的幅度并没有令人惊艳的占到绝对主体,就KITTI数据集上的效果来看,DN提高了1.5%的精度,NLF提高了1.4%的精度。

而下表则为了验证DN相比起其他BN、IN等归一化方式,是否真的有用,具体来说,仅仅替换了DSMNet中归一化的方式进行测试,结果看来确实DN相比起BN以及IN,甚至流行的attention,都有着更好的泛化能力,究其原因,或为DN规范了特征向量的分布,并且去除了跨域影像的影像级别以及局部分辨率上的一些区别。

泛化实验

文章的泛化实验设计为:对几个比较流行的网络和DSMNet都只在合成数据上进行训练,而在四个真实场景上进行测试,下表为在KITTI数据集上的表现,结果表明DSM比那些在KITTI域上进行训练的无监督的或者自监督的模型结果指标都要漂亮,甚至比一些有监督的网络的结果还要好。

定性的结果见下图:

耗时实验

毕竟这篇文章致力解决的是泛化问题,对实时性似乎没有更多的讨论,只是说提出的非局部滤波是一个可以高效实现的线性过程,相比起baseline而言,增加的时间不会超过5%。而对于DN以及非局部滤波来说,更是没有引入其他额外的参数。

总结


DSMNet致力于解决立体匹配网络的跨域泛化问题,其提出的DN以及NLF在泛化实验中的表现证明了其能力。

参考文献:


GANet:Feihu Zhang, Victor Prisacariu, Ruigang Yang, and Philip HS Torr. Ga-net: Guided aggregation net for end-toend stereo matching. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), pages 185–194, 2019.

PSMNet:Jia-Ren Chang and Yong-Sheng Chen. Pyramid stereo matching network. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), pages 5410–5418, 2018.

HD3:Zhichao Yin, Trevor Darrell, and Fisher Yu. Hierarchical discrete distribution decomposition for match density estimation. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), pages 6044–6053, 2019.

MADNet:Alessio Tonioni, Fabio Tosi, Matteo Poggi, Stefano Mattoccia, and Luigi Di Stefano. Real-time self-adaptive deep stereo. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), pages 195–204, 2019.

Adaptive Norm: Hyeonseob Nam and Hyo-Eun Kim. Batch-instance normalization for adaptively style-invariant neural networks. In Advances in Neural Information Processing Systems (NIPS), pages 2558–2567, 2018.

Attention: Zilong Huang, Xinggang Wang, Lichao Huang, Chang Huang, Yunchao Wei, and Wenyu Liu. Ccnet: Criss-cross attention for semantic segmentation. In Proceedings of the IEEE International Conference on Computer Vision (ICCV), pages 603–612, 2019.

版权声明:本文由奥比中光3D视觉开发者社区特约作者——flow(奥比中光算法工程师,毕业于中国科学院大学,人工智能领域优秀作者。)授权原创发布,未经授权请勿转载,本文仅做学术分享,版权归原作者所有,若涉及侵权内容请联系删文。

本文仅做学术分享,如有侵权,请联系删文。

3D视觉精品课程推荐:

1.面向自动驾驶领域的多传感器数据融合技术

2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

9.从零搭建一套结构光3D重建系统[理论+源码+实践]

10.单目深度估计方法:算法梳理与代码实现

11.自动驾驶中的深度学习模型部署实战

12.相机模型与标定(单目+双目+鱼眼)

13.重磅!四旋翼飞行器:算法与实战

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

DSM: 域不变的立体匹配网络解析(Stereo Matching Networks)相关推荐

  1. Stereo Matching 立体匹配学习资料

    Middlebury Stereo Evaluation Camera Calibration and 3D Reconstruction OpenCV学习笔记(18)双目测距与三维重建的OpenCV ...

  2. 多视图立体匹配MVSNet网络解析:保姆级教程

    论文题目:MVSNet: Depth Inference for Unstructured Multi-view Stereo, (ECCV2018 Oral) 开源代码(tensorflow.PyT ...

  3. ​使用端到端立体匹配网络进行单次 3D 形状测量,用于散斑投影轮廓测量

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 标题:Single-shot 3D shape measurement using an end-to ...

  4. 计算机视觉与图形学-立体匹配专题-金字塔立体匹配网络

    (说明:如果您认为下面的文章对您有帮助,请您花费一秒时间点击一下最底部的广告以此来激励本人创作,谢谢!!!) 最近的工作表明,从一对立体图像进行深度估计可以作为一个有监督的学习任务,用卷积神经网络(C ...

  5. 【CVPR2018】PSMNet:一个基于金字塔的端到端立体匹配网络

    PSMNet:一个基于金字塔的端到端双目立体匹配网络 1.简介   在本研究中,我们提出了一种新的金字塔立体匹配网络(PSMNet)来利用立体匹配中的全局上下文信息.空间金字塔池(SPP)和扩张卷积用 ...

  6. 【深度学习】Swin-Unet图像分割网络解析(文末提供剪枝仓库)

    [深度学习]Swin-Unet图像分割网络解析(文末提供剪枝仓库) 文章目录 1 概述 2 Swin-Unet架构 3 bottleneck理解 4 具体结构4.1 Swin Transformer ...

  7. cnn stride and padding_经典CNN网络解析

    NIN网络-Network In Network​blog.csdn.net 梦里寻梦:(四十二)通俗易懂理解--CNN网络框架演进:LeNet至DenseNet​zhuanlan.zhihu.com ...

  8. python立体匹配误匹配率_立体匹配算法(Stereo Matching)及其在OpenCV中的应用

    模拟人的两只眼睛的Stereo相机最近变得很受欢迎.通过对stereo相机拍摄的左右两张图进行匹配找出视差图,可以还原物体的3D信息. 立体匹配(Stereo matching)的步骤如下: 1: 预 ...

  9. yolov3前向传播(一)-- darknet53网络解析与实现

    一.darknet53网络解析与实现 一.darknet53网络结构组成部分 darknet53网络是由 darknet块 下采样卷积块组成的 1.darknet块 1.1 darknet块网络结构 ...

最新文章

  1. bzoj 2342: 双倍回文 回文自动机
  2. 如何用linux登入数据库,Linux中MySQL数据库的使用①-----登录、数据库操作、表结构操作...
  3. 前端学习(3241):react生命周期forceUpdate
  4. 如何在Linux上制作一个屏幕录像视频教程
  5. 明了 | 看了这篇文章,多年不能理解的分布式事物,终于看懂了!
  6. RxJava2.0——从入门到放弃
  7. 我的电脑属性被隐藏 咋能显示
  8. python语言开发环境配置理论_python语言开发环境配置
  9. 利用token 防止表单重复提交
  10. BP神经网络预测(python)
  11. H5 学习之旅-H5表格(7)
  12. html仿酷狗音乐,winform 仿酷狗音乐列表(非常不错)
  13. 橙光游戏软件 怎么整体测试,橙光游戏怎么让编辑来审核?
  14. 武汉大学计算机学院期末考试安排,【通知】关于2019-2020学年第一学期期末考试工作安排的通知...
  15. MongoDB 极简入门实践
  16. 华为鸿蒙微波炉,再见EMUI,你好鸿蒙!华为不止做手机
  17. 了解和掌握Python的函数(文末附python学习资料)
  18. vSAN 6.6在线研讨会-4月20日下午2:30 amp;amp; 小提示:如何理解FTT与纠删码的组合?
  19. 移动端常见芯片名及其对应代号
  20. 真香!java设置全局变量

热门文章

  1. awk 以列为域提取文件内容
  2. 《Clojure数据分析秘笈》——2.6节调整词频值的度量
  3. Kettle数据采集 部署安装
  4. Android Google 服务框架相关问题
  5. 浅谈 nagios监控配置
  6. Exchange Server 2013 DAG高可用部署(四)-服务器配置(上)
  7. jquery.min.map 404 (Not Found)出错的原因及解决办法
  8. 微软职位内部推荐-Principal Dev Manager
  9. 在android平板上取位置和天气的实现方式
  10. 字符编码的知识(二)