news 2026/6/12 19:25:51

【PromptStereo】零样本立体匹配新范式:用结构与运动Prompt驱动迭代优化(CVPR 2026)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【PromptStereo】零样本立体匹配新范式:用结构与运动Prompt驱动迭代优化(CVPR 2026)

摘要

零样本(zero-shot)立体匹配的核心瓶颈在于迭代优化阶段:现有方法虽然利用了单目深度基础模型做特征提取和视差初始化,但GRU的有限表征能力无法充分利用这些先验。PromptStereo提出Prompt Recurrent Unit(PRU),直接继承Depth Anything V2的DPT解码器架构作为迭代优化器,并设计Structure Prompt和Motion Prompt两路提示信号引导优化方向。在SceneFlow单一数据集训练下,PromptStereo即在KITTI、Middlebury、ETH3D等多个基准上实现零样本SOTA,同时推理速度与RAFT-Stereo持平(0.36s),比MonSter快近一倍。


论文:PromptStereo: Zero-Shot Stereo Matching via Structure and Motion Prompts (CVPR 2026)
代码:Windsrain/PromptStereo


一、问题背景:GRU迭代优化的瓶颈

从RAFT-Stereo到IGEV再到MonSter,主流立体匹配管线遵循统一范式:

特征提取

代价体构建

初始视差

GRU迭代优化
K次迭代

最终视差图

近期方法(MonSter、BridgeDepth)引入单目深度基础模型(Depth Anything V2)做特征提取器,显著提升了泛化性能。但关键问题在于:

阶段利用了基础模型先验?现状
特征提取是(ViT encoder)效果好
视差初始化部分(单目深度做初始猜测)有帮助
迭代优化否(从零训练GRU)瓶颈

核心矛盾:GRU的sigmoid门控将隐藏状态约束在[0,1]范围内,表征能力有限;且GRU从零训练,无法利用基础模型已学到的几何先验。

PromptStereo的洞察:为什么不直接用基础模型的解码器替代GRU做迭代优化?

二、核心方法

2.1 整体框架

图 1:PromptStereo整体架构。左侧为特征提取和代价体构建,中间为Affine-Invariant Fusion,右侧为PRU迭代优化模块。来源:[PromptStereo] GitHub

图 2:PromptStereo完整数据流。红色标注为核心创新点:PRU、Structure Prompt、Motion Prompt、AIF。重绘自 design skill

整体流程:

  1. 共享权重的ViT-L编码器(来自Depth Anything V2)提取左右图特征
  2. 构建Group-wise和All-pair两种相关代价体
  3. Affine-Invariant Fusion融合初始立体视差和单目深度
  4. PRU以Structure Prompt和Motion Prompt为引导,迭代优化视差

2.2 Affine-Invariant Fusion (AIF)

单目深度是相对值(尺度和偏移未知),不能直接与立体视差相加。AIF通过中值归一化对齐两者尺度:

d ^ = d − median ( d ) 1 N ∑ ∣ d − median ( d ) ∣ \hat{d} = \frac{d - \text{median}(d)}{\frac{1}{N}\sum|d - \text{median}(d)|}d^=N1dmedian(d)dmedian(d)

将单目深度投影到视差空间后,用置信度加权融合:

d F = c ⊙ d 0 + ( 1 − c ) ⊙ d M ′ d_F = c \odot d_0 + (1-c) \odot d'_MdF=cd0+(1c)dM

其中c cc为学习的置信度图,d 0 d_0d0为初始立体视差,d M ′ d'_MdM为尺度对齐后的单目深度。

2.3 Prompt Recurrent Unit (PRU)

PRU是本文核心创新,直接继承DPT解码器的预训练权重替代GRU:

为什么不用GRU?

对比维度GRUPRU (DPT Decoder)
初始化随机Depth Anything V2预训练
隐藏状态范围sigmoid约束[0,1]无约束,自由范围
分辨率单分辨率多分辨率(1/8→1/4→1/2→full)
几何先验丰富的单目深度先验
收敛速度32次迭代4次迭代即达高精度

PRU更新机制(多分辨率):

z k = σ ( ConvBlock ( [ h k i , h k i − 1 ] ) ) z_k = \sigma(\text{ConvBlock}([h_k^i, h_k^{i-1}]))zk=σ(ConvBlock([hki,hki1]))

h k + 1 i = ( 1 − z k ) ⊙ h k i + z k ⊙ h ^ k i h_{k+1}^i = (1-z_k) \odot h_k^i + z_k \odot \hat{h}_k^ihk+1i=(1zk)hki+zkh^ki

d k + 1 = d k + ConvBlock ( h k + 1 0 ) d_{k+1} = d_k + \text{ConvBlock}(h_{k+1}^0)dk+1=dk+ConvBlock(hk+10)

关键设计:Prompt仅注入到最高分辨率层h k 0 h_k^0hk0,低分辨率层保持DPT原始行为。

2.4 Structure Prompt (SP)

捕捉立体视差和单目深度之间的几何差异:

D = ∣ d ^ k − d ^ M ∣ D = |\hat{d}_k - \hat{d}_M|D=d^kd^M

P S = Encoder ( F M , D ) , h = h + ConvBlock ( P S ) P_S = \text{Encoder}(F_M, D), \quad h = h + \text{ConvBlock}(P_S)PS=Encoder(FM,D),h=h+ConvBlock(PS)

直觉:哪里立体和单目"意见不一致",哪里就是优化需要重点关注的区域(如透明物体、反射表面)。使用仿射不变归一化确保比较不受尺度影响。

2.5 Motion Prompt (MP)

编码立体特有的运动信息(GRU方法也有类似输入,但PRU以Prompt方式注入):

P M k = Encoder ( V k , d k ) , h = h + ConvBlock ( P M k ) P_M^k = \text{Encoder}(V_k, d_k), \quad h = h + \text{ConvBlock}(P_M^k)PMk=Encoder(Vk,dk),h=h+ConvBlock(PMk)

其中V k V_kVk为以当前视差为中心的局部代价体。

关键设计选择:两个Prompt都通过残差加法注入(而非拼接或替换),不破坏DPT解码器继承的先验。

渲染错误:Mermaid 渲染失败: Parse error on line 3: ...Structure Prompt
|d_k - d_M| 几何差异] -----------------------^ Expecting 'SQE', 'TAGEND', 'UNICODE_TEXT', 'TEXT', 'TAGSTART', got 'PIPE'

2.6 训练损失

L = ∥ d 0 − d g t ∥ smooth + ∑ k = 1 K γ K − k ∥ d k − d g t ∥ 1 \mathcal{L} = \|d_0 - d_{gt}\|_{\text{smooth}} + \sum_{k=1}^{K} \gamma^{K-k} \|d_k - d_{gt}\|_1L=d0dgtsmooth+k=1KγKkdkdgt1

初始视差用Smooth L1损失,迭代输出用L1损失加指数衰减权重(γ = 0.9 \gamma=0.9γ=0.9),越后面的迭代权重越大。

三、工程实现

组件技术细节
编码器ViT-Large (Depth Anything V2, frozen)
解码器DPT decoder (pre-trained, 可训练)
训练数据SceneFlow (基础) / +FoundationStereo+TartanAir+CREStereo (Unlimited)
输入分辨率192 或 576 高度
推理速度0.36s (与RAFT-Stereo持平)
框架PyTorch + xformers
代码仓库Windsrain/PromptStereo

四、实验分析

零样本泛化性能(SceneFlow训练)

方法KITTI’12 Bad3KITTI’15 Bad3Midd-T Bad2Midd-2021 Bad2ETH3D Bad1速度
RAFT-Stereo4.345.6811.0711.112.610.36s
IGEV-Stereo5.136.039.9510.004.050.37s
MonSter4.625.528.9715.553.200.64s
DEFOM-Stereo3.904.996.778.622.40-
PromptStereo3.774.596.038.261.560.36s

PromptStereo在仅用SceneFlow训练的条件下,全面超越所有同条件方法,尤其在ETH3D上(1.56 vs 2.40)和Middlebury-T上(6.03 vs 6.77)优势明显。

Unlimited训练数据对比

方法Midd-2021 Bad2Booster-Sunny Bad2速度
FoundationStereo7.145.150.65s
MonSter12.4311.550.64s
BridgeDepth13.6611.25-
PromptStereo5.973.670.36s

Middlebury-2021上比FoundationStereo低16%错误率;Booster-Sunny上低29%——透明/反射表面处优势巨大。

消融实验

配置MPSPAIFMidd-T Bad2ETH3D Bad1速度
Baseline (MonSter)---7.272.860.64s
PRU + MP--4.181.380.35s
PRU + MP + SP-3.901.350.36s
PromptStereo3.761.300.36s

PRU本身带来最大提升(7.27→4.18),SP和AIF各贡献增量改进。

PRU通用性验证

PRU不仅适用于MonSter,也能提升RAFT-Stereo和IGEV:

方法KITTI’15 Bad3Midd-T Bad2ETH3D Bad1
RAFT-Stereo5.688.412.29
Prompt-RAFT4.786.391.49
IGEV-Stereo6.037.043.61
Prompt-IGEV4.846.502.21

作为即插即用模块,PRU对所有GRU-based方法都有显著提升。

收敛速度对比

图 3:PRU vs GRU收敛曲线。PRU在4次迭代时已达到GRU 32次迭代才能达到的精度水平,最终精度差距达67%。重绘自 design skill

迭代次数MonSter (Midd-2021)PromptStereo (Midd-2021)
410.754.35
810.643.28
169.612.79
328.462.78

PRU在4次迭代(4.35)即优于MonSter 32次迭代(8.46)。

小结

核心贡献

  1. PRU:用基础模型解码器替代GRU做迭代优化,这个思路简洁而有效——不是设计更复杂的模块,而是直接"继承"已有知识
  2. 双Prompt机制:Structure Prompt抓单目-立体差异区域,Motion Prompt编码立体运动信息,两者通过残差注入不破坏继承先验
  3. AIF:仿射不变融合解决了单目深度的尺度模糊问题

局限性

  • 依赖Depth Anything V2的ViT-L,参数量和显存需求大
  • 在KITTI等小视差场景上优势不如大视差场景明显
  • Unlimited训练需要多个大规模合成数据集

个人判断:PromptStereo的PRU思路代表了一个重要趋势——将基础模型的知识从"特征提取"扩展到"迭代优化"。传统方法把GRU当作黑盒优化器从零训练,浪费了大量基础模型已学到的几何理解。PRU证明了"站在巨人肩膀上做优化"比"自己重新学优化"高效得多。这一范式有望推广到光流估计、场景流等其他稠密匹配任务。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 19:24:59

CSDN博客下载器终极指南:如何快速备份你的技术博客内容

CSDN博客下载器终极指南:如何快速备份你的技术博客内容 【免费下载链接】CSDNBlogDownloader 项目地址: https://gitcode.com/gh_mirrors/cs/CSDNBlogDownloader CSDNBlogDownloader是一款专为技术博主和学习者设计的CSDN博客下载工具,让你轻松实…

作者头像 李华
网站建设 2026/6/12 19:20:53

ArcGIS Pro 基础:属性表的关联功能使用

关联和连接功能的区别:(1):连接只能实现:一对一和一对多;(2):关联可以实现:一对一、一对多、多对多;(3):连接可…

作者头像 李华
网站建设 2026/6/12 19:18:57

TensorFlow 2.0实战:轻量级App评论情感分析模型

1. 项目概述:用TensorFlow 2.0亲手训练一个能读懂安卓用户情绪的模型你有没有点开过某个App的Google Play商店页面,快速扫一眼“一星差评”里那些带着火药味的句子——“闪退三次直接卸载!”“更新后耗电快得像在烧钱!”“客服回复…

作者头像 李华
网站建设 2026/6/12 19:18:05

从原理图到时序:手把手拆解一个4 CLK GOA驱动电路的工作流程

从原理图到时序:手把手拆解一个4 CLK GOA驱动电路的工作流程现代液晶显示器的核心挑战之一是如何高效驱动数百万个像素的栅极线。传统外挂驱动芯片方案在成本和边框宽度上逐渐显现瓶颈,而GOA(Gate On Array)技术直接将驱动电路集成…

作者头像 李华
网站建设 2026/6/12 19:15:54

编写程序结合运动强度,计算运动前后加餐的最佳食物种类与食用时间。

用 Python 构建一个基于运动强度的加餐时机与食物种类推荐系统,用于说明「如何让运动数据变成可执行的营养配合建议」。 一、实际应用场景描述 在运动健康管理、健身教学与智能穿戴课程中,运动前后饮食常用于: - 减脂期能量管理 - 增肌期营养…

作者头像 李华
网站建设 2026/6/12 19:15:53

2026年商丘市信得过的TOP10家电门店,看看哪几家是本地人的心头好?

2026年商丘市信得过的TOP10家电门店,看看哪几家是本地人的心头好?2026年商丘市家电市场愈发成熟,消费者选购时不仅看重产品品质,更关注门店的服务能力与性价比。本次测评基于真实到店体验、本地用户口碑调研及公开政策数据&#x…

作者头像 李华