欢迎光临散文网 会员登陆 & 注册

ICCV'23开源 | 兼具泛化性与绝对尺度的单目深度估计!

2023-11-27 17:59 作者:3D视觉工坊  | 我要投稿

作者: 泡椒味的口香糖 | 来源:计算机视觉工坊

在公众号「计算机视觉工坊」后台,回复「原论文」可获取论文pdf和代码链接

这里给大家推荐下深度估计微信群,扫码入群,方便大家沟通交流:

0. 笔者个人体会

目前的单目深度估计有两个问题,一个是自监督方法无法估计绝对尺度,另一个是在某个数据集上训练好的模型很难直接泛化到其他数据集。

笔者最近阅读了ICCV 2023的一篇文章ZeroDepth,同时解决了绝对尺度和泛化性两个问题,可以用一个模型直接在室内室外多个数据集上预测绝对深度,感觉在实际应用上有很大价值。因此笔者今天将为大家分享这项工作,当然笔者水平有限,如果有理解不当的地方欢迎大家一起讨论~

1. 效果展示

先看一下ZeroDepth预测的深度图,上方是将RGB和深度值投影的结果,里面还有雷达点云真值做对比,验证深度估计的准确性和绝对尺度。注意ZeroDepth没有在这四个数据集上做过任何微调。这里也推荐工坊推出的新课程《单目深度估计方法:算法梳理与代码实现》。

代码已经开源了,感兴趣的读者可以运行代码测试一下。

2. 摘要

单目深度估计是尺度模糊的,因此需要尺度监督来产生度量预测。即便如此,生成的模型将是特定于几何图形的,所学的尺度不能直接跨域转移。正因为如此,最近的工作反而集中在相对深度,避开尺度有利于up-to-scale的zero-shot转移。在这项工作中,我们介绍了ZeroDepth,一种新的单目深度估计框架,能够预测来自不同域和相机参数的任意测试图像的度量尺度。这是通过(I)使用输入级几何嵌入来实现的,该几何嵌入使得网络能够学习对象上的先验比例;以及(ii)通过以单帧信息为条件的变分潜在表示来解耦编码器和解码器级。我们评估了针对室外(KITTI、DDAD、nuScenes)和室内(NYUv2)基准的ZeroDepth,并使用相同的预训练模型在两种设置中实现了新的最先进水平,优于基于域内数据训练并需要测试时间缩放来产生度量估计的方法。

3. 算法解析

现有单目深度估计方法的问题是什么?

要么用自监督方法学习相对深度,要么学习绝对尺度但无法泛化到其他数据集上。

解决问题的思路是什么?

1、在网络输入中编码相机内参;

2、引入变分潜在表征,将逐点的深度预测改为概率分布;

3、在大规模数据集上训练。

ZeroDepth具体是怎么做的?

ZeroDepth架构是基于Perceiver IO的,所以先简单说一下Perceiver IO的原理。

Perceiver IO (ICLR 2022)建立在Perceiver (ICML 2021) 的基础上,将任意格式的输入转换为2D embedding,来实现跨域通用性。然后将2D embedding映射到潜在表征,由于潜在表征是固定的,所以哪怕输入非常长也不会复杂度爆炸。最重要的是,Perceiver IO可以使用另一个注意模块,使用所需输出元素唯一的Query来预测输出维度。也就是说,最后的解码器接受输出查询数组,并将其与输入的潜在表征相结合,以产生所需的维数。所以Perceiver IO最大的优点是可以面向任意输入输出的任务,并且是线性复杂度。

ZeroDepth的框架就和Perceiver IO很像。输入是图像和相机内参的embedding,首先和潜在表征(Latent representation)做交叉注意力,产生条件潜在表征,经过采样之后由相机embedding做Query输出深度预测。

所以ZeroDepth是在Perceiver IO的基础上,针对单目深度估计任务做出了两个修改:

1、在图像embedding的基础上加入相机参数embedding,这样网络就能够隐式地推理物体的大小形状等物理属性,实现不同数据集和相机参数的泛化。这一点和CoRL 2020的工作TartanVO很像,都是去编码相机内参。

2、引入一个变分的潜在表示,在conditioning之后产生一个分布,这个分布在解码阶段被采样以概率方式产生估计。作者任务,不同数据集在外观和几何形状上差异较大,直接预测所有像素的深度值产生的损失太大,所以要将深度估计任务建模为概率分布。

作者还做了一系列解码器阶段的数据增强,来学习不同数据集之间几何和外观的差异。注意,用来做输出查询的相机embedding不需要做增强。

1、分辨率调整

也就是针对内参变化,去对应修改图像的分辨率。

2、ray调整

作者认为,相同的内参和分辨率会产生相同的embedding,而且因为图像分辨率是离散的,所以不能产生整个操作空间内的连续视角分布。具体增强策略就是加入了[-0.5,0.5]的随机噪声。

3、embedding dropout

对输入embedding随机的产生一个[0,0.5]的缩小比例,可以产生更好的潜在表征。

损失函数就是深度监督+表面法线正则化+KL散度的加权和:

4. 实验结果

ZeroDepth的训练集非常大,包括Parallel Domain(92500张图像,6个相机)、TartanAir(306637张图像,2个相机)、Waymo(198068张图像,5个相机)、Large-Scale Driving(176320张图像,6个相机)、OmniData(Taskonomy,HM3D, Replica, Replica-GSO的组合, 14340580张图像)。评估使用KITTI Eigen(697张图像,限制最大深度80m)、DDAD验证集(3950张图像,限制最大深度200m)、nuScenes验证集(6019张图像,限制最大深度200m)、NYUv2验证集(室内,654张图像)。训练使用了8块A100,每块GPU的bs为16,训练了10个epoch(训练了整整7天!)。

可以看看4个数据集上的定性效果,彩色点云是用RGB+深度图恢复的,然后对比激光雷达点云,可以发现两个点云的重合效果很好。一方面证明了ZeroDepth的跨数据集深度估计效果优秀,另一方面也证明了它可以很好的预测度量深度,不需要再做尺度对齐。

然后在没有微调的情况下,在KITTI、DDAD、nuScenes和NYUv2数据集上进行定量评估,还对比了一些自监督方法。可以发现ZeroDepth的zero-shot泛化能力非常强,各方面指标都取得最优。

KITTI数据集上网络复杂性的消融实验,测试的是潜在表征的尺寸对模型的影响。结果显示潜在表征的尺寸越大越好,而且维度的影响比数量更大。这里也推荐工坊推出的新课程《单目深度估计方法:算法梳理与代码实现》。

数据集的消融实验,训练次数相同的情况下对比误差。去掉真实数据集Waymo和LSD的影响最大,一方面是因为这两个数据集很大,一方面是因为这两个数据集和测试集在视觉上很相似。

ZeroDepth本身是一个zero-shot方案,但作者也测试了4个测试数据集上微调的结果,各项指标都有明显提升。

5. 总结

本文为大家介绍了一种能够直接预测绝对深度,并且在各个数据集泛化性都特别好的单目深度估计方法。但不是太建议在这个模型的基础上做修改,因为训练太贵了。可以考虑直接用这个模型来生成深度图,或者用这个模型去做引导。


ICCV'23开源 | 兼具泛化性与绝对尺度的单目深度估计!的评论 (共 条)

分享到微博请遵守国家法律