Zero-Shot Depth Completion with Vision-Language Model¶
会议: CVPR 2026
论文: CVF Open Access
代码: 待确认
领域: 3D视觉
关键词: 深度补全, 视觉语言模型, 零样本, 稀疏深度, 文本监督
一句话总结¶
把稀疏深度以「视觉 token + 文本提示 + 文本监督」三种方式注入一个几乎不改结构的 VLM(Qwen2.5-VL 3B),让它像理解语言指令一样理解「哪里该补、哪里该保留」,从而无需稠密真值就能做零样本深度补全,在 7 个跨域 benchmark 上最高提升 17.3%。
研究背景与动机¶
领域现状:深度补全(depth completion)要从稀疏深度(如 LiDAR / 主动立体的离散测点)恢复稠密深度,通常配一张 RGB 图做引导。2024 年前主流是任务专用网络(SPN 系列、双边传播 BPNet 等);2024 年后转向「零样本泛化」,借助 OGNI-DC、G²-MonoDepth、OMNI-DC,乃至把扩散式深度基础模型搬进来的 Marigold-DC(当前 SOTA)。
现有痛点:作者一针见血地指出——现有方法「并没有真正理解补全的本质」。它们拿到稀疏深度,只是把它当作又一路特征 embed 进网络,并不显式知道哪些像素是已知测量值(该保留)、哪些是缺失区域(该预测)。结果就是对有效测点也一并「重新预测」,既浪费了精确测量,又可能把可靠值改坏。
核心矛盾:补全任务天然带有「保留 vs. 预测」的二分结构,但卷积/扩散网络把稀疏深度铺成稠密张量后,这层结构信息就被抹平了,模型无从分辨。而人类一眼就懂:保住测到的、只猜没测到的。
本文目标:找到一种载体,既能吸收稀疏深度的绝对尺度,又能显式表达「补/留」的指令语义。
切入角度:VLM 恰好擅长语义推理与指令跟随。若把「哪里补、哪里留」写成自然语言提示喂给 VLM,它就能把这条指令当作约束来执行;同时 VLM 缺的是几何与绝对尺度,正好用稀疏深度补上。
核心 idea:提出稀疏深度注入机制(Sparse Depth Injection Mechanism, SDIM),用「视觉 tokenization + 文本提示 + 文本监督」三条通道把稀疏深度灌进 VLM,几乎不动其结构,就把一个语义模型改造成能做度量级 3D 感知的深度补全器。
方法详解¶
整体框架¶
方法以冻结/微调的 Qwen2.5-VL(3B)为底座,输入是一张彩色图 \(I\in\mathbb{R}^{3\times h\times w}\) 与对应稀疏深度 \(S\in\mathbb{R}^{1\times h\times w}\)(0 表示缺失),输出是每个像素一句「距相机 x 米」的文本答案,遍历所有像素再拼回一张稠密深度图 \(D\)。整条管线靠 SDIM 的三个部件把稀疏深度分别注入到 VLM 的视觉输入端、文本输入端、监督端:视觉端用零初始化卷积把稀疏深度「软融合」进视觉 token;文本端把稀疏深度的二值 mask 文本化成「哪里补、哪里留」的提示;监督端把稀疏深度本身文本化成「该像素距相机 y 米」当标签来微调,全程不需要稠密真值。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["输入:RGB 图 + 稀疏深度 S<br/>(0=缺失)"] --> B["视觉 tokenization:<br/>零初始化卷积软融合 RGB-D<br/>→ 与图像 token 相加"]
B --> C["VLM 视觉编码器 → 视觉表征 V"]
A --> D["文本提示:稀疏深度二值 mask<br/>文本化 → 哪里补 / 哪里留"]
C --> E["VLM 语言解码器"]
D --> E
E --> F["逐像素文本答案<br/>'距相机 4.230 米'"]
G["文本监督:稀疏深度文本标签<br/>L1 微调(无需稠密真值)"] -.训练.-> E
F --> H["遍历全部像素 → 稠密深度图 D"]
关键设计¶
1. 视觉 tokenization:用零初始化卷积把稀疏深度「软融合」进视觉 token,给 VLM 注入绝对尺度
痛点是:单张 RGB 做深度估计本身是病态的(存在尺度与相机歧义),而 VLM 的视觉编码器只吃 RGB;若粗暴地把 RGB-D 直接 concat 再卷积(hard fusion),等于一上来就把深度这路「陌生分布」硬塞进预训练好的图像 token,破坏其分布、训练不稳。作者改成软融合:先用一个 32 通道、零初始化的卷积(接 BN+LeakyReLU)单独编码稀疏深度 \(\hat S=F^{z}_{\tau_2}(S)\),RGB 同样编码得 \(\hat F\);拼接后过两层卷积投影到高/低维 \(M=F_{\tau_3}(F_{\tau_2}(F_\psi(\hat F,\hat S)))\),再经一层零初始化卷积 \(O=F^{z}_{c}(M)\);最后按 Qwen2.5-VL 原生的 3D 卷积 embedding 把 \(O\) token 化并加到图像 token 上:\(E=F_{e1}(I)+F_{e2}(O)\),送入视觉编码器得 \(V=F_\theta(E)\)。零初始化的妙处在于训练初期深度支路输出≈0,对预训练 token 几乎零扰动,随训练「逐渐」注入深度线索,使融合后的表征分布始终贴近原图像 token 分布。消融里把零初始化换成 He 初始化,RMSE 反而高 7mm,印证了「软」的价值。与启发它的方法不同,作者只在输入端做软融合、且是先 embedding 再相加(而非在 RGB 输入上直接相加),避免复制冻结结构里的复杂模块。
2. 文本提示:把稀疏深度的二值 mask 文本化,显式告诉 VLM「哪里补、哪里留」
这是全文最点题的设计,直接回应「模型不知道该保留还是该预测」的痛点。作者从稀疏深度生成二值 mask(0=缺失、1=有效测量),并把每个像素翻成两类固定模板文本:缺失处写「The mask value is 0; predict the distance to the camera.」,有效处写「The mask value is 1, and the distance to the camera is x meters, preserve the given value.」,其中只有 0/1 与具体值 x 是动态填的。再配一句固定问题 \(Q\)「What is the distance from the current pixel to the camera?」一起喂给语言解码器:\(A=F_\delta(T,Q,V)\),其中 \(T=F_t(S)\) 是 mask+深度的文本化函数。这样「保留 vs. 预测」的二分被写成语言约束,模型在有效像素上被明确要求 preserve 给定值、在缺失像素上才去 predict,于是补全在语言引导下变得可控。消融显示,仅加入 mask 文本(SDIM-d)就带来 9mm MAE / 15mm RMSE 的提升,再把具体深度值也写进提示(SDIM-e)误差进一步下降——因为有效像素的值理论上等同真值,写进提示等于给出一批高可信锚点,既稳住这些位置又为周边缺失区提供参考。
3. 文本监督:用稀疏深度自身生成文本标签微调,彻底摆脱稠密真值
痛点是:传统监督需要稠密真值深度,采集昂贵、且很多场景根本拿不到。作者把稀疏深度的每个有效值 \(y\) 插进固定模板「The pixel is y meters away from the camera.」当作文本标签,沿用文本式有监督微调(每个训练样本只取一个有标注像素,用 L1 损失),从而只靠稀疏深度本身就完成训练,无需稠密真值。因为推理时稀疏深度往往与 RGB 一起天然可得,这套 label-free 方案还可被理解为一种在线(online)方法。推理阶段对每个像素查询其「距相机多少米」,把所有逐像素文本答案 \(A_j\) 经遍历函数还原成稠密深度图:\(D=\mathcal{T}_{j=1}^{hw}(A_j)\)。值得注意:用更稠密的真值监督(SDIM-f)确实比稀疏监督(SDIM-e)更准(真值密度可达稀疏深度的约 300 倍),但两者差距很小,而 SDIM-e 免标注、更易部署,是实际更划算的选择。
损失函数 / 训练策略¶
底座为 Qwen2.5-VL(3B),在 Hypersim + Virtual KITTI 的 20K 子集上微调,文本式 SFT、每样本一个标注像素、L1 损失;8×48GB GPU 训练 10 epoch,总 batch size 16。测试集(NYUv2、VOID、IBims-1、KITTI、DDAD)均未参与预训练或微调,保证零样本评测。
实验关键数据¶
主实验¶
七个零样本 benchmark 上与 9 个代表方法对比,指标为 MAE / RMSE(米,越低越好)。w/ SD 表示用稀疏深度做文本监督(免真值),w/ GT 表示用真值监督。
| 数据集 (指标) | 本文 w/ SD | 本文 w/ GT | 之前最好 | w/ SD 提升 |
|---|---|---|---|---|
| IBims-1 MAE | 0.040 | 0.036 | 0.045 (Marigold-DC‡) | 12.5% |
| VOID 150 MAE | 0.185 | 0.176 | 0.194 (Marigold-DC‡) | 4.9% |
| NYUv2 MAE | 0.044 | 0.042 | 0.048 (Marigold-DC‡) | 9.1% |
| KITTI MAE | 0.418 | 0.406 | 0.434 (Marigold-DC‡) | 3.8% |
| DDAD RMSE | 6.264 | 6.179 | 6.449 (Marigold-DC‡) | 3.0% |
即使是免真值的 w/ SD 版本,也普遍超过那些用真值监督的零样本方法;w/ GT 版本在 NYUv2 上 MAE 0.042 / RMSE 0.120,相对次优提升高达 83.3% / 94.2%。
消融实验(VOID-150,逐步加 SDIM 三部件)¶
| 配置 | 视觉 tokenization | 文本提示 | 文本监督 | MAE | RMSE |
|---|---|---|---|---|---|
| (a) | Concat(硬融合) | — | SD | 0.206 | 0.635 |
| (b) | He init. 融合块 | — | SD | 0.202 | 0.630 |
| (c) | Zero init. 软融合 | — | SD | 0.197 | 0.623 |
| (d) | Zero init. | Mask | SD | 0.188 | 0.608 |
| (e) | Zero init. | Mask + SD值 | SD | 0.185 | 0.604 |
| (f) | Zero init. | Mask + SD值 | GT | 0.176 | 0.592 |
关键发现¶
- 零初始化软融合 > 硬 concat:(a)→(c) RMSE 从 0.635 降到 0.623,其中零初始化相对 He 初始化再降 7mm,说明「让深度支路初期不扰动预训练 token、逐渐注入」是稳定融合的关键。
- 文本提示贡献最直接:(c)→(d) 仅加 mask 文本就拿下 9mm MAE / 15mm RMSE,验证「显式告诉模型哪里补哪里留」确实是现有方法缺的那一环;再写入具体深度值 (e) 进一步提供高可信锚点。
- 免真值代价极小:(e) vs. (f) 仅差 9mm MAE,但 (e) 完全不需要稠密真值,性价比更高。
- backbone 与效率:换 VLM 底座(MolmoE-1B / Seed1.5-VL / Qwen2.5-VL)中 Qwen2.5-VL 全面最优(IBims-1 MAE 0.040);效率上虽因预载 VLM 显存高达 46GB,但比同为零样本的 Marigold-DC 快约 65 倍(0.327 vs. 0.005 FPS)且更准。
- 失败场景:玻璃/反射面附近——这些区域稀疏深度本就稀少甚至「穿透」玻璃测到后方物体,导致错误测量;近处车窗尤其差(玻璃后物体在 RGB 里更清晰造成误导)。作者建议引入玻璃分割并文本化后注入视觉端。
亮点与洞察¶
- 把「补全的二分本质」翻译成语言指令:用一句「mask=1 则 preserve、mask=0 则 predict」的文本提示,优雅解决了卷积/扩散网络「分不清保留与预测」的老问题,这是最让人「啊哈」的点——几何任务里加入语义级显式约束。
- 零初始化软融合是可迁移的 trick:在不改冻结模型结构的前提下,用零初始化卷积让新模态(深度)从零扰动逐步注入预训练表征,这套思路可搬到任意「给预训练大模型加新输入通道」的场景。
- 文本监督把回归问题改写成语言建模:逐像素「距相机 x 米」的文本标签 + L1,使深度补全完全寄生在 VLM 的文本生成能力上,连稠密真值都不需要,对真值稀缺的真实机器人/自驾场景很有吸引力。
局限与展望¶
- 作者承认:仅聚焦深度预测,未验证能否扩展到表面法向等其他稠密预测任务;且基于大 VLM,推理速度偏慢。
- 显存开销巨大(46GB),FPS 仅 0.327,离实时和轻量部署还远——虽然比 Marigold-DC 快,但相对任务专用模型(CFormer/BPNet ~4.5 FPS)仍慢一个量级。
- 玻璃/反射面系统性失败,源于稀疏深度本身在这些区域不可靠,单靠文本约束难解,需要额外的分割/材质先验。
- 评测的稀疏深度多由真值随机采样或 LiDAR 得到,真实低质/噪声稀疏输入下的鲁棒性未充分检验。
相关工作与启发¶
- vs Marigold-DC(扩散式零样本 SOTA):它靠测试时优化把稀疏深度注入扩散深度基础模型,本文则把稀疏深度文本化注入 VLM;本文不仅多数指标更优,还快约 65 倍,且免真值。
- vs BPNet / SPN 系列(任务专用):它们用双边传播/空间传播网络在稀疏深度上做精细扩散,精度高但泛化弱、需大量域内训练;本文走零样本 + 语义引导路线,跨传感器/稀疏度/场景泛化更强(代价是显存大)。
- vs DepthLM / SpatialVLM / SpatialBot(VLM 做 3D 感知):这些工作让 VLM 具备空间/度量推理,本文沿此方向但首次专门把 VLM 用于深度补全,并通过 mask 文本提示引入「保留 vs. 预测」的任务结构。
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ 首个 VLM 深度补全框架,用文本提示显式编码补全的「补/留」本质,视角新颖。
- 实验充分度: ⭐⭐⭐⭐ 七个零样本 benchmark + 逐部件消融 + backbone/效率/失败案例齐全,仅噪声稀疏输入鲁棒性略缺。
- 写作质量: ⭐⭐⭐⭐⭐ 动机层层递进、SDIM 三部件叙述清晰,图表与公式自洽。
- 价值: ⭐⭐⭐⭐ 免真值 + 强零样本泛化对真实场景有吸引力,但显存/速度限制了即时落地。