最佳论文!商汤提出手机端实时单目三维重建系统 | ISMAR 2020
摘要 · 看点
商汤研究院和浙江大学 CAD&CG 国家重点实验室合作研发了一个手机端实时单目三维重建系统 Mobile3DRecon。与现有的基于 RGBD 的在线三维重建或离线生成表面网格的系统不同,该系统结合前端位姿跟踪结果,允许用户使用单目摄像头在线重建场景表面网格。在深度估计方面,提出结合多视图半全局匹配算法和深度神经网络优化后处理过程鲁棒地估计场景深度。在表面网格生成过程,本文提出的在线网格生成算法可以实时增量地融合关键帧深度到稠密网格中,从而重建场景表面。通过定性和定量的实验验证,所研制的单目三维重建系统能够正确处理虚拟物体与真实场景之间的遮挡和碰撞,在手机端实现逼真的 AR 效果和交互。
基于该系统发表的论文被AR及MR领域国际顶级会议ISMAR 2020录用,荣获Best Paper Award,并被推荐至 Special Issue of IEEE Transactions on Visualization and Computer Graphics。
论文名称: Mobile3DRecon: Real-time Monocular 3D Reconstruction on a Mobile Phone
Part 1 问题和挑战
遮挡和碰撞检测一直是 AR 行业面对的一大难题,其技术难点在于需要实时获取场景的三维表面信息,从而使虚拟物体和真实环境能融为一体。当前已有的实时场景重建系统通常需要 RGB-D 或 Lidar 摄像头的支持(如 KinectFusion, InfiniTAM, ElasticFusion, BundleFusion 等),然而受硬件的限制目前市面上大部分的手机无法使用该功能;另一类重建系统虽然可以根据单目 RGB 摄像头计算深度,从而重建场景表面(如 MonoFusion, MobileFusion, CHISEL 等),但是需要较大的计算时间和内存开销,大多仅能在 PC 或高端的移动平台上实时运行。针对上述问题,本文提出了一个手机端实时单目三维重建系统 Mobile3Drecon,该工作的主要贡献在于:
1. 提出一种基于多视图关键帧的深度估计方法,能够在手机端高效获取较高精度的场景深度,同时能够一定程度上容忍 SLAM 位姿偏差和弱纹理场景的影响;
2. 提出一种快速有效的增量式网格生成方法,该方法可以融合关键帧深度从而实时增量地重建场景表面网格,同时支持场景动态物体的移除,在中端的手机平台上实时运行;
3. 搭建了一套完整的基于单目 RGB 的实时三维重建系统,该系统在中端手机平台上可以达到 125ms 每关键帧,获取的表面网格精度可以达到厘米级,基于该系统可以在手机端实现逼真的 AR 效果和交互,如图 1 所示。
图1 Mobile3DRecon 系统在小米 8 手机上实时重建室内办公室场景并实现虚实遮挡和碰撞效果
Part 2 方法介绍
本系统框架如图 2 所示。移动设备获取的 RGB 图像和 IMU 信息经过前端视觉惯性 SLAM 系统后可以实时得到关键帧的 6 自由度位姿,该位姿经过后端全局优化后进入深度估计模块,对于新增的每个关键帧,首先基于多视图半全局匹配方法计算关键帧初始深度图,然后采用置信度和深度神经网络优化深度图噪声,优化后的深度图输入增量式网格生成模块后实时构建场景表面稠密网格。通过实时 6 自由度位姿估计和场景表面网格构建,Mobile3DRecon 系统支持用户在手机端实现真实的 AR 遮挡和碰撞效果。下面分别介绍系统的单目深度估计和增量式网格构建两个主要功能模块。
图2 系统框架图
1. 单目深度估计
● 动机
传统基于多视图立体匹配的深度估计算法通常需要较强的 GPU 算力来满足实时计算的要求,而轻量的算法又难以获得精确完整的深度图结果。尽管一些基于深度神经网络的深度估计算法在公开数据集上表现出了较好的效果,然而在实际应用过程中受场景弱纹理和 SLAM 位姿偏差的影响较大,手机平台算力的影响也使其难以在移动端部署。鉴于此,本文期望结合轻量化的深度神经网络和快速的多视图半全局匹配算法实现场景深度计算,考虑到手机平台算力、SLAM 位姿偏差和弱纹理场景的影响,本文希望多视图半全局匹配方法在保证深度估计泛化能力的同时,能够融合多帧信息提升对位姿偏差和弱纹理区域的容忍度,通过结合深度神经网络能够有效改善位姿偏差和弱纹理产生的深度噪声,从而得到精确、完整的深度图结果。
● 方法
本文提出的单目深度估计算法主要包含三个部分:
① 多视图立体匹配算法,用于计算初始深度图
② 置信度去噪算法,用于去除初始深度图噪声
③ 基于深度神经网络的深度图优化算法,用于改善深度图质量
具体方式如下:
① 步骤:多视图深度估计
为了获取关键帧深度信息,首先给定深度空间范围、以及最大深度采样数量,在深度空间按照下式(1)获取离散采样深度。
然后,根据离散采样深度和影像位姿将当前帧的像点投影至多视图参考帧上,计算联合匹配代价。具体的,考虑当前第 t 帧上的像点坐标
和采样深度
,根据对极几何关系找到其在帧 t' 上的对应点
,该对应点位于对应极线上,计算投影点坐标公式如下式(2),式中 K、R、T 分别为相机内参、旋转和平移矩阵。
获取投影点坐标后,使用式(3)计算对应点的 census 联合匹配代价,式中 S(t') 为参考帧t'的分值权重,通过遍历图像的每个像素采样深度后可以计算联合代价体 C。为了对匹配代价进行约束,本文进一步使用文献[1]的半全局优化策略对代价体进行多路径积聚后得到积聚代价体
。
最后,在积聚代价体
上通过使用“胜者为王”算法上获取最优采样位置,并在最优采样位置利用抛物线拟合获取连续采样值,带入公式(1)得到亚像素精度的深度结果。由于使用了多视图半全局匹配算法,影像位姿偏差和场景弱纹理对深度的负面影响一定程度上得到改善,同时该方法非常适合在移动平台上使用 NEON 指令集加速。
② 步骤:置信度噪声剔除
给定步骤①的深度图,参考文献[1]计算深度图每个像素的不确定度 U,不确定度越高代表噪声的可能性越大。其次,考虑深度图上每个像素周围5×5窗口
的深度离散度,通过统计与中心像素深度差值大于阈值
的像素比率作为深度误差概率w,计算公式如下式(4)。
通过联合像素不确定度与深度误差概率确定每个像素的置信度 M,最后剔除置信度小于阈值的深度像素后得到最终的深度图结果。图 3 展示了置信度剔除噪声后的深度图结果。
图3 单目深度估计结果
③ 步骤:基于深度神经网络的深度图优化
去除深度图噪声后,本文使用一个轻量的深度神经网络优化深度图,网络结构如图 4 所示,包含了多任务网络和深度优化网络两个部分。
图4 深度图优化神经网络结构
网络的第一个阶段通过输入深度图和对应的灰度图,使用一个多任务学习来获得原始深度图的噪声预测,使用的损失函数如下式(6),包含了边缘保持的损失
、深度与灰度一致性损失
和高阶的感知损失
三个部分。
网络第二个阶段的输入为原始深度图和一阶段的深度图噪声预测结果,使用 U-Net 残差深度优化网络优化原始输入的深度,得到更高质量的深度输出。本文使用 Demon 数据集[2]训练上述网络,然后使用手机采集的带 TOF 深度的 3700 组序列影像微调该网络。图 5 所示为带有一定位姿偏差的图像,第二列为置信度剔除噪声后的深度图,最后一列为经过深度优化网络后的深度图结果,可以看出深度图仅存在少量的空间噪声。
2. 增量式网格生成
● 动机
在线网格重建的难点在于如何在保证较好重建效果和重建规模的前提下,能够实时在线地重建场景三维表面信息。传统基于 TSDF 融合的方法虽然能够在线融合深度图, TSDF 的更新通常需要在 GPU 平台上才能达到实时,受平台算力的影响该过程很难在一些中低端的手机上实时应用。此外,现有的表面网格生成的算法(如 Marching Cubes[4])是离线的,难以实现在线增量式表面网格生成和更新。鉴于此,本文希望能够实现一种适合手机端 AR 应用的实时增量式在线网格生成算法,通过构建一种快速的基于空间索引的 voxel hash 机制,并对传统的 Marching Cubes 算法进行改进,使其能够在线增量地扩展场景网格表面,从而重建场景三维信息。同时,考虑到空间中的动态物体可能会对 AR 遮挡和碰撞效果产生影响,因此本文希望增量式网格生成算法能够快速有效地剔除空间动态物体。
● 方法
本文的增量式网格生成方法主要包含三个部分:
① 可扩展的哈希函数,用于建立空间体素的索引机制
② 体素融合与动态物体移除,用于将计算的深度图融合到体素中,同时移除不在当前场景的动态物体
③ 增量式网格更新用于快速提取体素块的网格面片,从而重建场景三维信息
具体方式如下:
① 可扩展的哈希函数
本文使用一个三维的 voxel hash 空间索引存储深度的 TSDF 值,索引过程如图 6 所示,为了避免哈希索引的冲突,对于 volume 范围内的点使用一个三维的哈希函数
构建其索引,volume 外的点采用函数
建立索引,通过将空间 volume 进行规则划分,使得体素的哈希表插入、查询的时间复杂度变为常数级,因此该方法具有较高的速度优势。
② 体素的融合与动态物体移除
对于输入的每个关键帧深度图,通过将深度值投影到三维的体素块中,从而判断是否需要分配新的体素块,如果需要则将体素块的 TSDF 和权值信息插入到索引表中,否则按照下式(7)更新当前体素块体素的 TSDF 值和权重。
为了处理动态物体产生的网格,本文将可见的体素投影到当前帧深度上进行可视性检查,如果发现与当前深度存在差异,则更改体素的 TSDF 值。通过这种方式可以使移出场景的动态物体产生的网格被逐渐消除。如图 7 展示了增量式网格构建过程中动态物体移除的过程。
图7 动态物体移除示意图
③ 增量式网格更新
为了获取参与表面提取的体素块,本文对传统的 Marching Cubes 算法进行改进,从而实现一种快速增量式的网格更新策略,通过给每个体素维护一个状态变量
,仅提取或更新状态为 ADD/UPDATE 的体素块的网格面片。图 8 所示为增量式网格重建的更新过程。图中浅黄色表示被关键帧深度图更新的三角面片,绿色表示新增的三角面片。
Part 3 实验结果
本文使用 OPPO R17 Pro 手机采集带有真实场景深度的5组数据,用于从定性和定量两个方面对比 Mobile3DRecon 与一些 SOTA 方法的效果, 其中 ground truth为OPPO R17 Pro 获取的与单目相机对齐的 TOF 深度。图 9 和图 10 所示为室外楼梯场景分别使用 REMODE、DPSNet、MVDepthNet 以及本文方法生成深度图和 mesh 网格,可以看出本文方法生成的深度图细节更加明显,在此基础上生成的网格质量优于其它几种方法。
图9 本文的单目深度估计与其他方法的结果比较
图10 本文方法最终融合的表面网格与其他方法的结果比较
为了定量评价本文方法和 REMODE、DPSNet、MVDepthNet 生成的深度图和网格的精度,本文对比了 5 个场景下几种方法的实验结果,如表 1 所示。分别统计了几种方法的深度和网格与真值深度(ToF)和真值网格在公共有效区域的 RMSE 和 MAE 精度,可以看出 Mobile3DRecon 方法不论是在深度图还是网格质量上都要优于其它的一些 SOTA 方法,深度图和网格精度可以达到厘米级。其余 4 个场景重建的网格结果如图11所示。
表1 Mobile3DRecon 系统重建五个由 OPPO R17 Pro 采集的实验场景的精度评估,每个场景给出了本文的方法和其他方法的深度和网格的 RMSE 和 MAE 误差,以 ToF 深度作为真值
图11 四个由 OPPO R17 Pro 采集的实验场景
用本文方法生成的表面网格结果
本文在 OPPO R17 Pro 和小米8两个中端手机平台上测试了 Mobile3DRecon 各个过程的耗时,如下表所示。Mobile3DRecon 在小米8(高通骁龙845)平台上基本可以达到 OPPO R17 Pro(高通骁龙710)两倍的运行速度,然而即使是在性能较弱的 OPPO R17 Pro 手机上,本系统基于关键帧深度估计和增量式网格构建的过程仍然可以满足每秒5关键帧的运行帧率,从而达到实时的效果。
表2 Mobile3DRecon系统每个关键帧各步骤的详细耗时情况,分别在OPPO R17 Pro和小米8两个手机平台上统计
图 12 展示了 Mobile3DRecon 系统集成到移动端 Unity 的运行效果,可以看出在 OPPO R17 Pro 和小米8手机上该系统能够通过精确重建场景表面网格使得虚拟物体的放置不局限于平面结构,同时室内楼梯和打印机场景的示例也展示了虚拟球与真实场景产生的正确遮挡和碰撞交互效果。
Part 4 结语
本文提出了一个实时的单目三维重建系统,该系统允许用户在一些中端的手机平台上使用单目摄像头提供在线网格生成功能。与现有的基于点云或 TSDF 的在线重建方法不同,Mobile3DRecon 系统可以根据单目摄像头图像鲁棒地估计场景深度,同时将估计的关键帧深度实时增量地融合到稠密网格表面。本文在两个中端手机平台上验证了 Mobile3DRecon 系统的重建结果,通过定量和定性的实验验证了所提出的实时单目三维重建系统的有效性。Mobile3DRecon 系统能够正确处理虚拟物体与真实场景之间的遮挡和碰撞,从而达到逼真的AR效果。
论文作者
杨幸彬、周立阳、姜翰青、唐中樑、王元博、鲍虎军、章国锋
论文链接
https://ieeexplore.ieee.org/document/9201064
References
[1] A. Drory, C, et al. Semi-global matching: A principled derivation in terms of message passing. In German Conference on Pattern Recognition, pp. 43–53. Springer, 2014.
[2] Ummenhofer B, Zhou H, Uhrig J, et al. Demon: Depth and Motion Network for Learning Monocular Stereo. In CVPR, 2017.
[3] Matthias Nießner, Michael Zollhöfer, Izadi S , et al. Real-time 3D Reconstruction at Scale using Voxel Hashing. ACM Transactions on Graphics (TOG), 2013.
[4] W. E. Lorensen and H. E. Cline. Marching cubes: A high resolution 3D surface construction algorithm. ACM SIGGRAPH Computer Graphics, 21(4):163–169, 1987.
[5] P. Ondruska, P. Kohli, and S. Izadi. MobileFusion: Real-time volumetric surface reconstruction and dense tracking on mobile phones. IEEE Transactions on Visualization and Computer Graphics, 21(11):1–1.
[6] Y. Yao, Z. Luo, S. Li, T. Fang, and L. Quan. MVSNet: Depth inference for unstructured multi-view stereo. In ECCV, pp. 767–783, 2018.
[7] S. Im, H.-G. Jeon, S. Lin, and I. S. Kweon. Dpsnet: End-to-end deep plane sweep stereo. In International Conference on Learning Representations, 2019.