点击上方↑↑↑“OpenCV学堂”关注我来源:公众号 新智元 授权
【导读】不用三维构图的三维重建,速度能到每帧73ms。
三维重建(3D Reconstruction)技术一直是计算机图形学和计算机视觉领域的一个重点研究领域。
简单说,三维重建就是基于二维图像,恢复三维场景结构。
据说,林志颖出车祸后,他的面部重建方案就用到了三维重建。
三维重建的不同技术路线,有望融合
其实,三维重建技术已在游戏、电影、测绘、定位、导航、自动驾驶、VR/AR、工业制造以及消费品领域等方面得到了广泛的应用。
随着GPU和分布式计算的发展,以及硬件上,微软的Kinect,华硕的XTion以及因特尔的RealSense等深度相机逐渐成熟,三维重建的成本已经呈现降低的趋势。
从操作上讲,3D重建的过程,大体可以分为五步。
第一步,图像获取。
由于三维重建是照相机的逆操作,因而需要先要用摄像机获取三维物体的二维图像。
这一步不容忽视,因为光照条件、相机的几何特性等对后续的图像处理造成很大的影响。
第二步,摄像机标定。
这一步,是利用摄像机所拍摄到的图像来还原空间中的物体。
通常会假设,摄像机所拍摄到的图像与三维空间中的物体之间存在线性关系,求解线性关系的参数的这个过程,就称为摄像机标定。
第三步,特征提取。
特征主要包括特征点、特征线和区域。
大多数情况下,都是以特征点为匹配基元,特征点以何种形式提取与用何种匹配策略紧密联系。
因此在进行特征点的提取时需要先确定用哪种匹配方法。
第四步,立体匹配。
立体匹配是指根据所提取的特征来建立图像对之间的一种对应关系,也就是将同一物理空间点在两幅不同图像中的成像点进行一一对应起来。
第五步,三维重建。
有了比较精确的匹配结果,结合摄像机标定的内外参数,就可以恢复出三维场景信息。
这五步,环环相扣,只有每个环节的都做得精度高,误差小,才能设计出一个比较精确的立体视觉系统。
在算法上,三维重建大体可分为两类,一个是基于传统多视图几何的三维重建算法。
另一个是基于深度学习的三维重建算法。
目前,由于CNN在图像的特征匹配上有着巨大优势,越来越多的研究人员,开始将目光转向基于深度学习的三维重建。
不过,这种方法多是监督学习方法,对数据集依赖程度很高。
而数据集的收集和标注一直是监督学习的问题来源,因而,基于深度学习的三维重建,多在体积较小的物体重建方向上研究较多。
另外,基于深度学习的三维重建固然保真度高,在精度方面有较好的性能。
但训练模型要花费大量的时间,且用于三维重建的3D卷积层是非常昂贵的。
因而,有研究人员开始重新审视传统的三维重建方法。
传统的三维重建方法固然性能上有不足,但技术相对成熟。
那么,将两种方法进行一定的融合,也许会有更好的结果。
不用3D卷积层,也能3D重建
来自伦敦大学、牛津大学、谷歌和Niantic(从谷歌拆分出来的研究AR的独角兽公司)等机构的研究人员,探索出一条不用3D卷积的3D重建方法。
他们提出了一个简单的最先进的多视图深度估计器。
该多视图深度估计器有两点突破。
一是精心设计的二维CNN,可以利用强大的图像先验,以及并可以得到平面扫描特征量和几何损失;
二是能将关键帧和几何元数据整合到成本量中,从而实现知情的深度平面计分。
据研究人员介绍,他们的方法在深度估计方面比目前最先进的方法有明显的领先优势。
并且在ScanNet和7-Scenes上进行3D重建时接近或更好,但仍然允许在线实时低内存重建。
而且,重建速度非常快,每帧仅用约73ms。
研究人员认为,这使得通过快速深度融合进行精确重建成为可能。
据研究人员介绍,他们的方法是用图像编码器从参考图像和源图像中提取匹配特征,然后输入到cost volume,再使用2D卷积编码/解码器网络处理cost volume的输出结果。
该研究使用PyTorch来实现,并用ResNet18进行匹配特征提取,还使用两块40GB A100 GPU ,经过36小时完成全部工作。
此外,虽然模型不使用3D卷积层,但在深度预测指标上却优于基线模型。
这表明精心设计和训练的2D网络足以进行高质量的深度估计。
感兴趣的读者,可以阅读论文原文:
https://nianticlabs.github.io/simplerecon/resources/SimpleRecon.pdf
不过,需要提醒的是,阅读这篇论文有专业门槛,有些细节可能不容易会注意到。
我们不妨看看外国网友从这篇论文中发现了什么。
一位网名为「stickshiftplease」网友说,「虽然A100上的推理时间约为70毫秒,但这可以通过各种技巧来缩短,并且内存要求不必为40GB,最小的模型运行2.6GB的内存」。
另一个名为「IrreverentHippie」的网友则指出,「请注意,这项研究依然是基于LiDAR的深度传感器进行采样。这就是这种方法获得如此好的质量和准确性的原因」。
还有一个名为「nickthorpie」的网友的评论比较长,他说,「ToF相机的优缺点有据可查。ToF解决了困扰原始图像处理的各种问题。其中,两个主要问题是可扩展性和细节。ToF总是难以识别诸如桌子边缘或细杆之类的小细节。这对于自主或半自主应用程序至关重要。
此外,由于ToF是一种有源传感器,因此当多个传感器一起使用时,例如在拥挤的十字路口或自建仓库中,图片质量会迅速下降。
显然,你在一个场景中收集的数据越多,你所创造的描述就越准确。许多研究人员更喜欢研究原始图像数据,因为它更灵活」。
参考资料:
https://www.reddit.com/r/MachineLearning/comments/xbj6cn/r_simplerecon_3d_reconstruction_without_3d/
https://nianticlabs.github.io/simplerecon/resources/SimpleRecon.pdf