三维重建的目标是确定真实世界物体的相互空间关系。随着VR/AR的发展、元宇宙概念的提出,越来越多与现实场景融合的应用依赖于真实世界的三维信息还原,三维重建作为提供真实世界信息的基础,逐步成为使能上层应用的核心技术挑战。
三维重建在工业界中普遍的解决方案是以环境中多视角采集的图片作为输入,通过分析不同图片中特征点的对应关系,建立非线性最小二乘数学模型进行图片空间位置以及特征点空间位置的联合求解。我们基于MindSpore设计了一套高效的非线性最小二乘优化器,快速求解城市级的图片空间位姿,文章已被计算机视觉三大顶会之一的CVPR接收。该算法的开源代码已经在MindSpore上发布。
-
论文:
Huang, Jingwei, Shan Huang, and Mingwei Sun. "DeepLM: Large-Scale Nonlinear Least Squares on Deep Learning Frameworks Using Stochastic Domain Decomposition." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021.
https://openaccess.thecvf.com/content/CVPR2021/html/Huang_DeepLM_Large-Scale_Nonlinear_Least_Squares_on_Deep_Learning_Frameworks_Using_CVPR_2021_paper.html
-
开源地址:
https://gitee.com/mindspore/mindspore/tree/master/model_zoo/research/3d/DeepLM
算法介绍
随机域分解
除了效率之外,对于大规模问题的处理也是我们需要重点解决的问题,解决思路是将问题随机分块求解。通过分块,我们将全局问题分解为较小的子问题,这样可以显著降低单次求解问题的内存消耗。同时,通过随机分块算法,所有变量都有概率被分配在块的内部而非边界,从而有效提升了分块求解方案的收敛质量。
实验及可视化结果
本方案可以高效求解大规模的平差(Bundle Adjustment)问题,通过使用GPU进行计算能够提速4倍以上。下面为平差优化问题公开数据集BAL上的实验结果以及BAL、1DSFM中一些场景的空间特征与相机位姿求解的可视化结果。
-
测试集链接:
BAL:http://grail.cs.washington.edu/projects/bal/
1DSFM:http://www.cs.cornell.edu/projects/1dsfm/
我们的非线性最小二乘优化器在BAL数据集上同其他SOTA方法的耗时对比(单位为秒)如下:其中Ours-G代表全局优化方案,Ours-B代表采用了随机域分解的方案,Ours-BG代表采用了随机域分解和全局重初始化策略的方案。可以看到对比SOTA方法,我们的算法在耗时上的优势十分明显。
通过随机域算法,我们的求解器可以解决城市级别的平差问题。如下例所示,我们联合求解了28万张照片以及超过12亿个残差项仅耗时6分钟。
适用于多种问题的优化器
我们提供了多个场景下使用我们非线性最小二乘优化器的案例。在拼接多张图像时,本优化器可用于颜色的均一化,如下所示:
本方法还可以用于网格的精确变形,如下所示:
其他例如三维物体对齐、图像融合、函数拟合等经典问题,都可以使用本优化器来完成。
MindSpore代码实现
我们基于MindSpore r1.3版本(https://gitee.com/mindspore/mindspore/tree/r1.3/)实现时,针对Tensor切片操作、内存的分配、动态图执行性能等做了相应的优化,因此在大规模的数据集上性能表现比Pytorch版本更加优异。
在多达600多万次相机采集观察次数的航拍城市场景业务数据集上,MindSpore版本的代码性能相比Pytorch版本进一步提升了15.6%(90.87s VS 107.71s)。
-
相关代码:
https://gitee.com/mindspore/mindspore/tree/master/model_zoo/research/3d/DeepLM
该代码基于MindSpore框架实现,运行的硬件环境为GPU。算法大大提升了城市级图片空间位姿问题的求解效率,对比之前的SOTA方法性能提升明显,实验结果如上表达到业界领先水平。