Yin W, Zhang C, Chen H最新文章:零样本单图像度量3D预测,已被ICCV 2023接受,计算机视觉工坊有幸邀请到作者与大家一起分享,如果您有相关工作需要分享,文末可以联系我们!
作者:Yin W, Zhang C, Chen H | 来源:3DCV
在公众号「3DCV」后台,回复「原论文」即可获取pdf和代码。
添加微信:dddvisiona,备注:SLAM,拉你入群。文末附行业细分群。
介绍:
由于单图像重建的不稳定,从图像中重建精确的3D场景大多数都建立在多视图几何的基础上。目前最好的单目度量深度估计方法只能处理单个相机模型,由于度量的模糊性,无法进行混合数据训练,而且在大型混合数据集上训练的单目方法通过学习仿射不变深度来实现零样本泛化,而仿射不变深度不能恢复真实世界的度量。
为此,在这项工作中,作者表明零样本单视图测量深度模型的关键在于大规模数据训练和解决来自各种相机模型的度量模糊性。提出了一个相机空间转换模块来解决模糊问题,并且可以插入到现有的单目模型中,通过数千个相机模型训练超过800万张图像从而实现对具有看不见相机设置的现场图像的零样本泛化。
其方法在7个零样本基准上实现SOTA,并在第二届单目深度估计挑战赛中获得了冠军。能够在随机收集的互联网图像上恢复度量三维结构,同时可以延伸到下游任务,即插入其模型就可以显著改善某些任务。例如,可以缓解了单目SLAM的尺度漂移问题。
主要贡献
(1)提出了一种正则和非正则的相机变换方法来解决各种相机设置下的度量深度模糊问题。能够从大规模数据集学习强大的零样本单目测量深度模型。
(2)提出一种随机归一化损失,有效提高深度精度.
(3)模型在7个零样本基准上实现了最先进的性能。可以在野外执行高质量的3D度量结构恢复,并有利于几个下游任务,如单目SLAM、3D场景重建。
Motivation:
根据预测的深度,现有方法可以分为学习度量深度、学习相对深度和学习仿射不变深度,其中度量深度方法必须在具有相同相机性质的数据集上进行训练和测试,因此度量深度方法的训练数据集通常很小,很难使用一台相同的相机收集覆盖不同场景的大数据集,所以这些模型都是不可泛化的,对野外图像的泛化能力很差。学习相对深度,它表示一点离另外一点是近还是远,相对深度的应用非常有限。学习度量深度在训练过程中解耦度量信息,并实现了令人印象深刻的鲁棒性和泛化能力,但是最近最先进的LeReS可以在野外恢复3D场景,但只能恢复到未知的规模和偏移。推荐学习3D视觉工坊近期开设的课程:面向三维视觉算法的C++重要模块精讲:从零基础入门到进阶
这项工作的重点是学习零样本可转移模型以恢复单一图像的度量三维信息。为此,分析了单目深度估计中的度量模糊问题,并研究了不同的相机深度参数的影响,包括像素大小、焦距和传感器大小。观察到焦距是精确度量恢复的关键因素。
在训练中提出了一种规范的相机变换方法。灵感来源于人体重建方法,为了提高姿势的重建形状质量,人体重建将所有样本映射到规范姿势空间以减少姿势方差。类似地,作者将所有训练数据转换到规范相机空间,在该空间中,处理后的图像被粗略地视为由同一相机捕获。为了实现这种转变提出了两种不同的方法。第一种方法试图调整图像外观以模拟标准相机,而另一种方法则转换地面真实标签以进行监督。相机模型没有在网络中编码,这使得适用于现有的架构。在推理过程中,采用去规范变换来恢复度量信息。
度量模糊分析:
下图展示了不同相机在不同距离拍摄的照片。
![80682a3a36d034f267c8f667a6381177.png](https://i-blog.csdnimg.cn/blog_migrate/9133692b6d6c69b7fce0b338c3cb490e.png)
仅从图像的外观来看,人们可能会认为最后两张照片是由同一台相机在相似的位置拍摄的。事实上,由于焦距不同,这些都是在不同的位置拍摄的。因此,相机固有参数对于从单个图像的度量估计至关重要。
下图中A展示了一个简单的针孔透视投影,
![ff2a04e6e8fbbe5cfdf227004f623177.png](https://i-blog.csdnimg.cn/blog_migrate/7463602d1eac22d16c19bc367d074f15.png)
位于da的目标A被投影到A′,基于相似性原理,可得方程:
其中,S和S′分别是真实大小和成像大小。要从单个图像中恢复da,必须提供焦距、目标的成像大小和真实世界中的大小。
但是从单个图像中估计焦距是一个具有挑战性和不适定性的问题。作者假设训练/测试图像的焦距可知来简化问题。
传感器大小和像素大小不影响度量深度估计。
基于透视投影,传感器尺寸只影响视场(FOV),与α无关,因此不影响度量深度估计。对于像素大小,假设两个具有不同像素大小但焦距相同的相机来捕捉位于da的同一物体。图中B显示了它们捕捉的照片。像素表示的焦距。由于第二台相机具有较小的像素大小,尽管在相同的投影成像大小中,像素表示的图像分辨率为。根据透视投影公式,,即α1=α2,因此d1=d2。因此,不同的相机传感器不会影响度量深度估计。
焦距对于度量深度估计至关重要
下图说明了这一点。
![a6bf804a515f669ccd797f18bce372a0.png](https://i-blog.csdnimg.cn/blog_migrate/3f7b9089fa400d0c9c337c9132b2e590.png)
如果两个相机处于距离处,则相机上的成像尺寸相同。因此仅仅从外观上看,当用不同的标签进行监督时,网络就会被混淆。基于这一观察提出了一种规范的相机变换方法来解决监督和图像外观的冲突。
相机变换:
核心思想是建立一个规范的相机空间,并将所有训练数据转换到该空间。因此所有数据都可以粗略地被认为是由规范相机捕获的。
提出了两种变换方法,即变换输入图像或GT label。原始的内部函数是.
变换深度标签
第一种方法直接转换GT深度标签来解决这个问题。具体的,在训练中用比率来缩放GT深度(D*),即。原始相机模型被转换为。在推理中,预测深度(Dc)在正则空间中,需要执行去正则变换来恢复度量信息,即。
变换输入图像
从另一个角度来看,模糊性是由相似的图像外观引起的。因此对输入图像进行变换以模拟典型的相机成像效果。具体的,图像I的大小调整为比率,,即,其中表示图像调整后的大小。然后调整光学中心的大小,因此标准相机模型为。在没有任何缩放的情况下调整GT标签的大小,即。在推理中,去正则变换是在不缩放的情况下将预测调整到原始大小,即
算法Pipeline
![411df94a0f30845111883e4a43d990d1.png](https://i-blog.csdnimg.cn/blog_migrate/85b264ea54c6498fc3b08ff462f67cc2.png)
在执行任一转换后,随机裁剪一个patch进行训练。裁剪只调整FOV和光学中心,因此不会引起任何度量模糊问题。在标签变换方法中 and ,,而在图像变换方法中 and。训练目标如下:
混合数据训练是提高泛化能力的有效方法。收集了11个数据集进行训练,在混合数据中,包括超过10K个不同的相机。所有收集的训练数据都包括成对的相机固有参数,这些参数在正则变换模块中使用。
损失函数:
为了进一步提高性能提出了一种随机归一化损失。其建议从GT和预测的深度中随机裁剪几个补丁,然后对成对的patch使用中值绝对偏差归一化,通过对局部统计数据进行归一化可以增强局部对比度。损失函数如下:
在训练期间从图像中随机裁剪0.125到0.5的原始大小。此外还采用了其他几种损失,包括标度不变对数损失Lsilog、成对正态回归损失LPWN、虚拟正态损失LVNL。总损失如下:
实验:
收集了11个公共RGB-D数据集,以及超过800万个用于训练的数据。分布在不同的室内和室外场景中。所有数据集都提供了相机内部参数。除了训练数据集的测试分割外,还收集了7个未发现的数据集用于稳健性和泛化评估。
采用具有ConvNext-large backbone的UNet架构,用ImageNet-22K预先训练的权重初始化。使用批量大小为192的AdamW,所有层的初始学习率为0.0001,多项式衰减方法的幂为0.9。在48个A100 GPU上训练的最终模型进行500K迭代,在一个小批量中平衡所有数据集以确保每个数据集的比例几乎相等。在训练过程中,图像由标准相机变换模块处理,以50%的几率水平翻转,然后随机裁剪成512×960像素。
在8个零样本基准上进行了测试,包括NYUv2、KITTI、NuScenes、7-scenes , iBIMS-1, DIODE , ETH3D。推荐学习3D视觉工坊近期开设的课程:面向三维视觉算法的C++重要模块精讲:从零基础入门到进阶
为了评估预测度量深度的准确性,首先在NYUv2、KITTI上与最先进的(SOTA)度量深度预测方法进行了比较。
![79567d98326ea2e30097575cefa6c85f.png](https://i-blog.csdnimg.cn/blog_migrate/95f66f56fae0b392ba864520894fd0fe.png)
主要与SOTA度量深度估计方法进行比较,并分别进行室内和室外场景评估。从表中分析,尽管7Scene与NYUv2相似,NuScene与KITTI相似,但现有方法的性能明显下降。相比之下,作者的模型更稳健。
仿射不变深度基准将尺度效应解耦,旨在评估模型对不同场景的泛化能力。在5个数据集上进行了测试,并在评估前手动调整尺度并转移到GT深度。结果如表4所示。尽管作者的方法强制网络恢复更具挑战性的度量信息,但在大多数数据集上都大大优于其他方法。
![d832d9eb5c2f716044725b8e2a117c37.png](https://i-blog.csdnimg.cn/blog_migrate/bf52794ed44d5df3a1a2ee6ccab99926.png)
三维场景重建效果比较:
![22b0748c3ef983b0f9581d1e52a889ad.png](https://i-blog.csdnimg.cn/blog_migrate/8eacbdca2e481250d4e97c1a09addf82.png)
slam效果比较:
![96ee2100377d058368b1166e529cb3be.png](https://i-blog.csdnimg.cn/blog_migrate/1c703c4cf69481da5205ec2d67c8d025.png)
总结:
解决了从单个单目图像重建3D度量场景的问题。为了解决不同焦距引起的图像外观深度模糊问题,提出了一种规范的相机空间变换方法。为了提高鲁棒性,收集了超过8M的数据进行训练。几项零样本评估显示了模型的有效性和稳健性。
—END—高效学习3D视觉三部曲
第一步 加入行业交流群,保持技术的先进性
目前工坊已经建立了3D视觉方向多个社群,包括SLAM、工业3D视觉、自动驾驶方向,细分群包括:[工业方向]三维点云、结构光、机械臂、缺陷检测、三维测量、TOF、相机标定、综合群;[SLAM方向]多传感器融合、ORB-SLAM、激光SLAM、机器人导航、RTK|GPS|UWB等传感器交流群、SLAM综合讨论群;[自动驾驶方向]深度估计、Transformer、毫米波|激光雷达|视觉摄像头传感器讨论群、多传感器标定、自动驾驶综合群等。[三维重建方向]NeRF、colmap、OpenMVS等。除了这些,还有求职、硬件选型、视觉产品落地等交流群。大家可以添加小助理微信: dddvisiona,备注:加群+方向+学校|公司, 小助理会拉你入群。
![03d6fdde903c783d1caf1f26c34ece5c.jpeg](https://i-blog.csdnimg.cn/blog_migrate/8843a89c7a4b9dca1b0c2b731c32dadd.png)
第二步 加入知识星球,问题及时得到解答
针对3D视觉领域的视频课程(三维重建、三维点云、结构光、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、源码分享、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答等进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业、项目对接为一体的铁杆粉丝聚集区,6000+星球成员为创造更好的AI世界共同进步,知识星球入口:「3D视觉从入门到精通」
学习3D视觉核心技术,扫描查看,3天内无条件退款
第三步 系统学习3D视觉,对模块知识体系,深刻理解并运行
如果大家对3D视觉某一个细分方向想系统学习[从理论、代码到实战],推荐3D视觉精品课程学习网址:www.3dcver.com
基础课程:
[1]面向三维视觉算法的C++重要模块精讲:从零基础入门到进阶
[2]面向三维视觉的Linux嵌入式系统教程[理论+代码+实战]
工业3D视觉方向课程:
[1](第二期)从零搭建一套结构光3D重建系统[理论+源码+实践]
SLAM方向课程:
[1]深度剖析面向机器人领域的3D激光SLAM技术原理、代码与实战
[1]彻底剖析激光-视觉-IMU-GPS融合SLAM算法:理论推导、代码讲解和实战
[2](第二期)彻底搞懂基于LOAM框架的3D激光SLAM:源码剖析到算法优化
[3]彻底搞懂视觉-惯性SLAM:VINS-Fusion原理精讲与源码剖析
[4]彻底剖析室内、室外激光SLAM关键算法和实战(cartographer+LOAM+LIO-SAM)
视觉三维重建
[1]彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进)
自动驾驶方向课程:
[1] 深度剖析面向自动驾驶领域的车载传感器空间同步(标定)
[2] 国内首个面向自动驾驶目标检测领域的Transformer原理与实战课程
[4]面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
[5]如何将深度学习模型部署到实际工程中?(分类+检测+分割)
最后
1、3D视觉文章投稿作者招募:文章投稿通道
2、3D视觉课程(自动驾驶、SLAM和工业3D视觉)主讲申请:主讲老师招募