作者:CJB

Date:2020-2-21

来源:基于深度学习的三维重建算法综述

欢迎加入国内最大的3D视觉交流社区,1700+的领域从业者正在共同进步~

00 前言

01 基于传统多视图几何的三维重建算法

1.1 主动式

(1)结构光

(2)TOF 激光飞行时间法

(3)三角测距法

1.2 被动式

(1)单目视觉

(2)双目/多目视觉

1.3 基于消费级RGB-D相机

02 基于深度学习的三维重建算法

2.1 在传统三维重建算法中引入深度学习方法进行改进

2.2 深度学习重建算法和传统三维重建算法进行融合,优势互补

2.3 模仿动物视觉,直接利用深度学习算法进行三维重建

(1)基于体素

(2)基于点云

(3)基于网格

03 总结

04 参考文献

00 前言

目前,三维重建技术已在游戏、电影、测绘、定位、导航、自动驾驶、VR/AR、工业制造以及消费品领域等方面得到了广泛的应用。方法同样也层出不穷,我们将这些方法依据原理分为两类:

• 基于传统多视图几何的三维重建算法

• 基于深度学习的三维重建算法

总的来说,尽管目前传统的三维重建算法依旧占据研究的主要部分,但是越来越多的研究者开始关注于用CNN探索三维重建,或者说,两者之间的交叉与融合。

有人问,在三维重建中引入深度学习方法有什么意义?我将意义概括为三部分:

• 为传统重建算法性能优化提供新的思路

一项名为 Code SLAM1 的工作,这项研究获得了CVPR 2018年的best paper提名奖,研究利用神经网络框架,并结合图像几何信息实现了单目相机的稠密SLAM。主要贡献在于使用了深度学习方法从单张图像中用神经网络提取出若干个基函数来表示场景的深度,这些基函数表示可以极大简化传统几何方法中的优化问题。显然,深度学习方法的引入可以给传统方法的性能提升提供新的思路,而以前,这部分工作大多由机器学习方法来做。

• 将深度学习重建算法和传统三维重建算法进行融合,优势互补

业界对算法的鲁棒性要求比较高,因此多传感器、乃至多种算法的融合以提升算法鲁棒性是个必然趋势,而深度学习在一些场景中具有天然优势,比如不可见部分的建模,传统算法就很难凭借“经验”来估计物体的深度。

• 模仿动物视觉,直接利用深度学习算法进行三维重建

动物跟人类直接基于大脑而非严格的几何计算来进行物体的三维重建,那么直接基于深度学习的方法在原理上也是可行的。特别需要注意的是,在一些研究中,有些方法直接基于单张图像(非单目,单目指利用单个摄像头)进行三维重建。理论上讲,单张图像已经丢失了物体的三维信息,因此在原理上即不能恢复深度信息,但是人类又能凭借经验大致估计物体的距离,因而也具有一定的“合理性”。

两者形成了各自的理论和体系,但未来三维重建领域研究一定是传统优化方法与深度学习的结合。目前,这方面研究仍处于起步阶段,还有许多问题亟待解决。下面的综述主要侧重于深度学习方法,但也仅列出重要文献,更详细的综述将会在公众后续的文章中介绍。

01 基于传统多视图几何的三维重建算法

传统的三维重建算法按传感器是否主动向物体照射光源可以分为 主动式 和 被动式 两种方法。这些年,也有不少研究直接基于消费级的 RGB-D 相机进行三维重建,如基于微软的 Kinect V1 产品,同样取得了不错的效果。基于传统多视图几何的三维重建算法概括如下:

• 主动式,指通过传感器主动地向物体照射信号,然后依靠解析返回的信号来获得物体的三维信息,常见的有:

– 结构光

– TOF 激光飞行时间

– 三角测距法

• 被动式,直接依靠周围环境光源来获取RGB图像,通过依据多视图几何原理对图像进行解析,从而获取物体的三维信息。常见的依据原理可以分为:

– 单目视觉

– 双目/多目视觉

• 基于消费级RGB-D相机,相机可以基于主动式、被动式不同原理,优点在于基于这些设备的算法更具备实用性。

这些方法它们各自有着各自的优点和缺点,同样有各自所适用的应用范围。下面为想要入门基于深度学习进行三维重建领域的同学简要介绍这些方法,如需要深入了解,请仔细阅读相关文献,SfM和多视图几何等经典算法作为入门三维重建领域的基础永远都不会过时。

1.1 主动式

(1)结构光

结构光法依靠投影仪将编码的结构光投射到被拍摄物体上,然后由摄像头进行拍摄。由于被拍摄物体上的不同部分相对于相机的距离精度和方向不同,结构光编码的图案的大小和形状也会发生改变。这种变化可以被摄像头捕获,然后通过运算单元将其换算成深度信息,进而获取物体的三维轮廓信息。这种方法缺点是容易受环境光干扰,因此室外体验差。另外,随检测距离增加,其精度也会变差。目前,一些研究通过增大功率、改变编码方式等形式解决这些问题,取得了一定的效果。

(2)TOF 激光飞行时间法

TOF 飞行时间法依靠通过向目标连续发送光脉冲,然后依据传感器接收到返回光的时间或相位差来计算距离目标的距离。但显然这种方式足够的精度需要极为精确的时间测量模块,因此成本相对较高。好处是这种方法测量距离比较远,受环境光干扰比较小。目前这方面研究旨在降低计时器良品率及成本,相应的算法性能也在提升。

(3)三角测距法

三角测距法,即依据三角测距原理,不同于前两者需要较为精密的传感器,三角测距法整体成本较低,并且在近距离的时候精度较高,因而广泛应用于民用和商用产品中,如扫地机器人中。但三角测距的测量误差与距离有关,随着测量距离越来越大,测量误差也越来越大,这是由三角测量的原理导致的,不可避免。

1.2 被动式

被动式方面依靠多视图几何原理基于视差进行计算,我们简要叙述一下这些方法。

(1)单目视觉

单目视觉只使用单一摄像头作为采集设备,具有低成本、易部署等优点。其依靠一段时间内获得的连续图像的视差来重建三维环境。但其存在固有的问题:单张图像可能对应无数真实物理世界场景(病态),因此使用单目视觉方法从图像中估计深度进而实现三维重建的难度较大。依据原理,可以分类为:

目前这种算法广泛应用于手机等移动设备中,常见的算法有SfM[1],REMODE[2]和SVO[3]等。

(2)双目/多目视觉

双目视觉主要利用左右相机得到的两幅校正图像找到左右图片的匹配点,然后根据几何原理恢复出环境的三维信息。但该方法难点在于左右相机图片的匹配,匹配地不精确都会影响最后算法成像的效果。多目视觉采用三个或三个以上摄像机来提高匹配的精度,缺点也很明显,需要消耗更多的时间,实时性也更差。

这两种方法理论上都可较精确恢复深度信息,但实际上受拍摄条件的影响,其精度往往无法得到保证。常见的有SGM[4]和SGBM[5]算法等,其中自动驾驶数据集KITTI中,排名前五十的算法几乎有一半都是对SGM[6]的改进。

1.3 基于消费级RGB-D相机

近年来,也有不少研究直接基于消费级的RGB-D相机进行三维重建,如在微软的Kinect V1、V2产品上,取得了不错的效果。最早,由帝国理工大学的Newcombe等人于2011年提出的Kinect Fusion[7]开启了RGB相机实时三维重建的序幕。此后有 Dynamic Fusion[8]和Bundle Fusion[9]等算法。

02 基于深度学习的三维重建算法

我们将基于深度学习的三维重建算法简要地分为三部分,更详细的文献综述将会在后续的公众号的系列文章中做介绍:

• 在传统三维重建算法中引入深度学习方法进行改进

• 深度学习重建算法和传统三维重建算法进行融合,优势互补

• 模仿动物视觉,直接利用深度学习算法进行三维重建

2.1 在传统三维重建算法中引入深度学习方法进行改进

因为CNN在图像的特征匹配上有着巨大优势,所以这方面的研究有很多,比如:

• DeepVO[10],其基于深度递归卷积神经网络(RCNN)直接从一系列原始RGB图像(视频)中推断出姿态,而不采用传统视觉里程计中的任何模块,改进了三维重建中的视觉里程计这一环。

• BA-Net[11],其将 SfM[12] 算法中的一环集束调整(Bundle Adjustment, BA)优化算法作为神经网络的一层,以便训练出更好的基函数生成网络,从而简化重建中的后端优化过程。

• Code SLAM[13],如之前所提,其通过神经网络提取出若干个基函数来表示场景的深度,这些基函数可以简化传统几何方法的优化问题。

2.2 深度学习重建算法和传统三维重建算法进行融合,优势互补

CNN-SLAM13将CNN预测的致密深度图和单目SLAM的结果进行融合,在单目SLAM接近失败的图像位置如低纹理区域,其融合方案给予更多权重于深度方案,提高了重建的效果。

2.3 模仿动物视觉,直接利用深度学习算法进行三维重建

我们知道,三维重建领域主要的数据格式有四种:

• 深度图(depth map),2D图片,每个像素记录从视点到物体的距离,以灰度图表示,越近越黑;

• 体素(voxel),体积像素概念,类似于2D之于像素定义;

• 点云(point cloud),每个点逗含有三维坐标,乃至色彩、反射强度信息;

• 网格(mesh),即多边形网格,容易计算。

因而,依据处理的数据形式不同我们将研究简要分为三部分:1)基于体素;2)基于点云;3)基于网格。而基于深度图的三维重建算法暂时还没有,因为它更多的是用来在2D图像中可视化具体的三维信息而非处理数据。

(1)基于体素

体素,作为最简单的形式,通过将2D卷积扩展到3D进行最简单的三维重建:

• Depth Map Prediction from a Single Image using a Multi-Scale Deep Network, 2014 [14]

该方法是用深度学习做三维重建的开山之作,基于体素形式,其直接用单张图像使用神经网络直接恢复深度图方法,将网络分为全局粗估计和局部精估计,并用一个尺度不变的损失函数进行回归。

• 3D-R2N2: A unified approach for single and multi-view 3d object reconstruction, 2016[15]

Christopher等人基于体素形式提出的3D-R2N2模型使用Encoder-3DLSTM-Decoder的网络结构建立2D图形到3D体素模型的映射,完成了基于体素的单视图/多视图三维重建(多视图的输入会被当做一个序列输入到LSTM中,并输出多个结果)。

但这种基于体素的方法存在一个问题,提升精度即需要提升分辨率,而分辨率的增加将大幅增加计算耗时(3D卷积,立次方的计算量)。

(2)基于点云

相较而言,点云是一种更为简单,统一的结构,更容易学习,并且点云在几何变换和变形时更容易操作,因为其连接性不需要更新。但需要注意的是,点云中的点缺少连接性,因而会缺乏物体表面信息,而直观的感受就是重建后的表面不平整。

• A Point Set Generation Network for 3D Object Reconstruction From a Single Image, 2017[16]

该方法是用点云做三维重建的开山之作,最大贡献在于解决了训练点云网络时候的损失问题,因为相同的几何形状可能在相同的近似程度上可以用不同的点云表示,如何用恰当的损失函数来进行衡量一直是基于深度学习用点云进行三维重建方法的难题。

• Point-Based Multi-View Stereo Network, 2019[17]

该方法通过对场景的点云进行处理,融合三维深度和二维纹理信息,提高了点云的重建精度。

(3)基于网格

我们知道之前的方法的缺点:

• 基于体素,计算量大,并且分辨率和精度难平衡

• 基于点云,点云的点之间缺少连接性,重建后物体表面不光滑

相较而言,网格的表示方法具有轻量、形状细节丰富的特点,重要是相邻点之间有连接关系。因而研究者基于网格来做三维重建。我们知道,网格是由顶点,边,面来描述3D物体的,这正好对应于图卷积神经网络的

所对应。

• Pixel2Mesh[18],用三角网格来做单张RGB图像的三维重建,相应的算法流程如下:

– 对于任意的输入图像都初始化一个椭球体作为初始三维形状。

– 然后网络分为两部分:

• 一部分用全卷积神经网络来提取输入图像的特征

• 另一部分用图卷积网络来表示三维网格结构,

– 对三维网格不断进行变形,最终输出物体的形状。

模型通过四种损失函数来约束形状,取得了很好的效果。贡献在于用端到端的神经网络实现了从单张彩色图直接生成用网格表示的物体三维信息。

03 总结

传统的三维重建算法可以分为:

这些方法各自有各自优点和使用范围,简要概括一下:

而基于深度学习的三维重建算法研究主要有三种:

• 在传统三维重建算法中引入深度学习方法进行改进

• 深度学习重建算法和传统三维重建算法进行融合,优势互补

• 模仿动物视觉,直接利用深度学习算法进行三维重建

– 基于体素

– 基于点云

– 基于网格

才疏学浅,做了简单的关于用深度学习做三维重建的叙述,更详细的综述将会在后续公众号的文章中给出。

04 参考文献

[1] Ullman S. The interpretation of structure from motion[J]. Proceedings of the Royal Society of London. Series B. Biological Sciences, 1979,203(1153):405-426.DOI:10.1098/rspb.1979.0006.

[2] Pizzoli M, Forster C, Scaramuzza D B I. REMODE: Probabilistic, Monocular Dense Reconstruction in Real Time: IEEE International Conference on Robotics and Automation (ICRA), 2014[C]. IEEE.

[3] Forster C, Pizzoli M, Scaramuzza D B I. SVO: Fast Semi-Direct Monocular Visual Odometry: IEEE International Conference on Robotics and Automation (ICRA), 2014[C]. IEEE.

[4] Hirschmuller, H., Accurate and efficient stereo processing by semi-global matching and mutual information, in IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2005[C], IEEE.

[5] Hirschmüller, H., Stereo Processing by Semi-Global Matching and Mutual Information. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2007. 30(2): p. 328-341

[6] Hirschmuller, H., Accurate and efficient stereo processing by semi-global matching and mutual information, in IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2005[C], IEEE.

[7] Newcombe, R.A., et al., KinectFusion: Real-Time Dense Surface Mapping and Tracking, in International Symposium on Mixed and Augmented Reality (ISMAR). 2011[C], IEEE.

[8] Newcombe, R.A., D. Fox and S.M.B.I. Seitz, DynamicFusion: Reconstruction and Tracking of Non-rigid Scenes in Real-Time, in IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2015[C], IEEE.

[9] Dai, A., et al., BundleFusion: Real-Time Globally Consistent 3D Reconstruction Using On-the-Fly Surface Reintegration. ACM Trans. Graph., 2017. 36(4).

[10] Wang S, Clark R, Wen H, et al. DeepVO: Towards end-to-end visual odometry with deep Recurrent Convolutional Neural Networks, 2017[C].May.

[11] Tang C, Tan P. BA-Net: Dense Bundle Adjustment Network[J]. CoRR, 2018,abs/1806.04807.

[12] Ullman S. The interpretation of structure from motion[J]. Proceedings of the Royal Society of London. Series B. Biological Sciences, 1979,203(1153):405-426.DOI:10.1098/rspb.1979.0006.

[13] Bloesch M, Czarnowski J, Clark R, et al. CodeSLAM—Learning a Compact, Optimisable Representation for Dense Visual SLAM: IEEE Conference on Computer Vision and Pattern Recognition(CVPR), 2018[C]. IEEE.

[14] Eigen D, Puhrsch C, Fergus R. Depth Map Prediction from a Single Image using a Multi-Scale Deep Network: Advances in Neural Information Processing Systems (NIPS), 2014[C]. Curran Associates, Inc..

[15] Choy C B, Xu D, Gwak J, et al. 3D-R2N2: A unified approach for single and multi-view 3d object reconstruction, 2016[C]. Springer.

[16] Fan H, Su H, Guibas L J. A Point Set Generation Network for 3D Object Reconstruction From a Single Image, 2017[C].July.

[17] Chen R, Han S, Xu J, et al. Point-Based Multi-View Stereo Network, 2019[C].October.

[18] Wang N, Zhang Y, Li Z, et al. Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images, 2018[C].September.

往期干货资源:

三维重建 几何方法 深度学习_三维重建算法综述|传统+深度学习方式相关推荐

  1. 三维重建 几何方法 深度学习_三维重建 3D reconstruction 有哪些实用算法?

    主要的深度学习系列算法有DBN, ConvNets, RNN等,基本上经典的深度学习算法都用过. 详细请看唐路路(研究方向 深度学习 3D重建)在专栏 机器学习&深度学习--学术水准的理解 总 ...

  2. 三维重建算法综述|传统+深度学习

    作者:CJB Date:2020-2-21 来源:基于深度学习的三维重建算法综述 00 前言 01 基于传统多视图几何的三维重建算法 1.1 主动式 (1)结构光 (2)TOF 激光飞行时间法 (3) ...

  3. 仿真的数据能否用来深度学习_数字孪生弥合了深度学习的数据鸿沟

    点击上方"蓝色字体",选择 "设为星标" 关键讯息,D1时间送达! 随着企业开始使用可将其数据投入使用的深度学习(DL)项目,他们必须保护这些数据,而数字孪生是 ...

  4. pytorch深度学习_用于数据科学家的深度学习的最小pytorch子集

    pytorch深度学习 PyTorch has sort of became one of the de facto standards for creating Neural Networks no ...

  5. 证券投资深度学习_安信证券:“深度学习”开启新一轮计算模式变革

    转自公众号 安信计算机 (axzqjsj) 事件:近日GPU巨头企业NVIDIA宣布推出一款致力于加速人工智能和深度学习的芯片TeslaP100,同时推出的还有全球首款面向深度学习的超级计算机NVID ...

  6. 证券投资深度学习_基于风险中性的深度学习选股策略

    今天我们为大家带来最新的研报内容,来自广发证券金工团队的<风险中性的深度学习选股策略>.下面让我们来一起学习吧!https://mp.weixin.qq.com/s?__biz=MzAxN ...

  7. 图像 引言 深度学习_用树莓派4b构建深度学习应用(十二)口罩篇

    前言上一篇我们把环境和网络问题都解决了,这一篇在 COVID-19 仍在全世界肆虐的当下,我们尝试用 AI 来做一个有趣的自动戴口罩应用.主要用 OpenCV + CNN 来提取面部关键点坐标,再将口 ...

  8. 深度学习目标检测算法综述(论文和代码)

    RCNN-→SPP Net-→ Fast RCNN-→ Faster RCNN-→ YOLO-→ SSD 思路是:a,生成候选框 b,CNN提取特征 c,分类网络 d,回归,位置精修(refine) ...

  9. 三维重建 几何方法 深度学习_基于深度学习的三维重建算法:MVSNet、RMVSNet、PointMVSNet、Cascade系列...

    欢迎关注微信公众号"3D视觉学习笔记",分享博士期间3D视觉学习收获 MVSNet:香港科技大学的权龙教授团队的MVSNet(2018年ECCV)开启了用深度做多视图三维重建的先河 ...

最新文章

  1. CSS hack浏览器兼容一览表
  2. 服务器排障 之 nginx 499 错误的解决
  3. iOS KVO crash 自修复技术实现与原理解析
  4. 基于python的在线考试系统-基于Django的在线考试系统
  5. 干净地卸载QTP的小工具 - QTPCleanUninstaller
  6. element ui中动态合并单元格_element ui单元格的动态合并
  7. 心有多高 未来就有多远
  8. 「无捆绑不锁页」极度纯净win10 32位专业版下载地址
  9. 全国高级计算机职称考试试题及答案,全国职称计算机考试复习题「附答案」
  10. 用php写出一个网站的模板,25 个 PHP 的 Web 开发程序网站模板
  11. 秋招跳槽求职P8架构大咖整理“Java后端技术面试笔记”,目标是成为Java架构师,这条件不过分吧
  12. ServletConfig与ServletContext
  13. 一级计算机基础知识考试成绩截图,全国计算机一级考试成绩分析与总结
  14. library Interpositioning 库(内插)干预技术
  15. Linux、Xshell
  16. mysql数据库服务器重启_重启mysql数据库服务器
  17. unix操作系统可以用于服务器管理吗,UNIX操作系统使用必备(四)
  18. 一张图带你了解仙童半导体
  19. Elasticsearch 搜索条件与聚合结果再进行过滤的多重聚合查询-过滤桶的使用(六)
  20. BoxCutter:阵列

热门文章

  1. 学习大数据,公司常用开发的编程语言是什么?
  2. java 加法计算器
  3. nodejs能否替代java_nodejs能代替java吗?
  4. 使用调色板绘制系统界面
  5. 嵌入式系统驱动高级【5】——input子系统
  6. 苹果手机微信语音没声音怎么回事_iphonexs没声音,iphonexs扬声器没声怎么回事?...
  7. 【2020可用】Python使用 imaplib imapclient连接网易邮箱提示 Unsafe Login. Please contact kefu@188.com for help 的解决办法
  8. U-Mail邮件服务器软件的四大优势
  9. t420i升级固态硬盘提升_给电脑升级那些事,加一块希捷酷鱼120固态硬盘很畅快...
  10. 吴恩达对话刘慈欣 预言AI未来20年