DPFlow: Adaptive Optical Flow Estimation with a Dual-Pyramid Framework¶
会议: CVPR 2025
arXiv: 2503.14880
代码: https://github.com/hmorimitsu/ptlflow/tree/main/ptlflow/models/dpflow (有)
领域: 视频理解
关键词: 光流估计, 高分辨率泛化, 双金字塔编码器, 循环网络, Cross-Gated Unit
一句话总结¶
提出DPFlow,结合图像金字塔和特征金字塔的双金字塔循环编码器,配合纯卷积的Cross-Gated Unit (CGU),仅用标准分辨率训练即可自适应泛化至8K分辨率输入,在Sintel、KITTI、Spring等基准上达到SOTA,同时发布Kubric-NK多分辨率光流评测数据集首次支持定量高分辨率评估。
研究背景与动机¶
光流估计为视频处理提供像素级运动信息,是视频恢复、动作识别、视频压缩等任务的基础。随着视频标准已达到8K分辨率,光流方法面临严峻的分辨率泛化挑战。
现有痛点: - 基于全局匹配/注意力的方法(FlowFormer、GMFlow等):注意力机制的二次复杂度限制了输入尺寸,只能采用input tiling(输入切片)处理高分辨率,导致方块伪影和全局上下文丢失 - RAFT类方法:架构较为刚性,在分辨率变化时泛化能力不足,高分辨率下误差显著增大 - 高分辨率训练:虽可缓解问题,但对极高分辨率(4K/8K)不现实 - 缺乏高分辨率评测基准:现有数据集最高只到2K,已有的高分辨率实验仅做定性展示(手工挑选样例),无法可靠比较方法
核心矛盾:需要一个能在标准分辨率训练、在任意高分辨率推理的自适应架构,且需要一个定量评测高分辨率泛化能力的基准。
方法详解¶
整体框架¶
DPFlow采用循环编码器-解码器结构。编码器为新提出的双金字塔循环编码器,结合图像金字塔和特征金字塔提取多尺度特征。解码器采用基于CGU的GRU进行迭代光流精炼。训练使用多尺度Mixture-of-Laplace损失。推理时金字塔层数根据输入分辨率自动适配。
关键设计¶
-
双金字塔循环编码器(Dual-Pyramid Encoder)
- 功能:融合图像金字塔和特征金字塔的优势,自适应提取多尺度特征
- 核心思路:
- 特征金字塔路径(前向循环):共享ConvGRU沿尺度方向传递多尺度信息,每层输出经CGU Block处理
- 图像金字塔路径:每层直接从下采样后的原始图像提取特征,保持对输入信息的直接访问
- 双向循环:增加反向ConvGRU,使浅层能获取深层信息
- 最终特征由前向、反向和图像三路拼接得到:\(X_s = \phi^{out}(\text{concat}(X_s^f, X_s^b, X_s^i))\)
- 设计动机:单一的特征金字塔在深层可能稀释输入信息,单一的图像金字塔无法传递跨尺度信息。双金字塔融合两者优势,且ConvGRU的共享参数+循环结构使网络能自适应不同层数(即不同分辨率)
-
Cross-Gated Unit (CGU)
- 功能:替代注意力机制,以纯卷积方式提取判别性匹配特征
- 核心思路:基于Gated-CNN设计,包含self-gate(单输入时的自门控)和cross-gate(双输入时的交叉门控),使用1×1卷积、深度可分离卷积、GELU激活和Layer Scale
- 设计动机:注意力机制的高计算成本和对输入尺寸变化的敏感性(需要位置编码)是高分辨率泛化的主要障碍。CNN的局部操作天然不依赖输入尺寸,避免了这些问题
-
Kubric-NK数据集
- 功能:首个支持1K-8K四种分辨率、密集标注的光流评测基准
- 核心思路:基于Kubric渲染引擎生成30个序列共600个样本,每个样本在1K(960×540)、2K、4K、8K四种分辨率下渲染,提供光流、深度、法线、物体坐标等标注
- 设计动机:提供统一的定量评测平台,同一场景多分辨率渲染使得可以精确分析分辨率变化对预测精度的影响
- 光流幅度分布与Sintel等常用数据集相似(1K时),高分辨率版本提供更大更具挑战性的运动
实验关键数据¶
主要基准结果¶
| 数据集 | 指标 | DPFlow | 次优方法 | 提升 |
|---|---|---|---|---|
| Sintel(clean+final) | 总排名 | 第1 | FlowFormer++ | 整体最佳 |
| KITTI 2015 | 总排名 | 第1 | MemFlow | 整体最佳 |
| Spring(test) | 1px↓ | 4.53 | SEA-RAFT(4.85) | ↓6.5% |
| Spring(0-shot) | 1px↓ | 6.79 | RPKNet | ↓10.8% |
Kubric-NK高分辨率评估(EPE↓)¶
| 方法 | 1K | 2K | 4K | 8K |
|---|---|---|---|---|
| RAFT | 0.68 | 1.46 | 12.3 | 82.7 |
| FlowFormer++(tiling) | 0.46 | 1.11 | 5.39 | 24.4 |
| RAPIDFlow | 0.36 | 0.82 | 2.14 | 5.83 |
| DPFlow | 0.34 | 0.62 | 1.71 | 4.07 |
- 在8K分辨率上,DPFlow比RAPIDFlow低30%误差,比FlowFormer++低83%误差
- RAFT等非自适应方法在8K上误差暴涨20倍+,GMA等注意力方法甚至OOM
消融实验¶
- 双金字塔 vs 仅特征金字塔:Sintel final 1.70→1.84(+8.2%误差)
- 双金字塔 vs 仅图像金字塔:Sintel final 1.70→1.79(+5.3%误差)
- 移除双向(仅前向):Kubric-8K 4.07→5.12(+25.8%误差)
- CGU vs 注意力:计算量更低且分辨率泛化显著更好
关键发现¶
- 训练checkpoint选择影响巨大:stage 3(混合数据集)适合大多数高分辨率评测
- 高分辨率光流向量幅度与分辨率线性相关,现有方法难以适应这种尺度变化
- Input tiling虽可处理高分辨率,但引入的方块伪影随分辨率增大更加明显
亮点与洞察¶
- 双金字塔的优雅设计:图像金字塔保证信息直达,特征金字塔传递多尺度语义,循环共享参数实现分辨率自适应,是一个简洁而有效的架构创新
- Kubric-NK的社区贡献:填补了高分辨率光流评测的空白,多分辨率同场景设计使得分辨率泛化分析first-class
- 纯CNN路线的回归:在注意力机制大行其道的今天,CGU证明了精心设计的CNN在需要分辨率泛化的任务上仍有独特优势
- 金字塔层数根据输入对角线尺寸自动计算:\(N=\text{round}(\log_2(\max(1,\sqrt{W^2+H^2}/\sqrt{960^2+540^2})))+3\)
局限性¶
- 循环编码器的层数增加方式(每级共享参数)在极端高分辨率时可能导致特征退化
- 仅使用合成数据(Kubric-NK)进行高分辨率评测,真实世界的8K光流质量有待验证
- 纯卷积设计虽利于泛化,但可能在需要全局上下文的场景(如大范围遮挡区域)不如注意力方法
相关工作与启发¶
- RAFT开创了迭代光流估计范式,但单尺度设计限制了分辨率泛化
- RAPIDFlow和RPKNet的循环编码器为自适应架构提供了基础,DPFlow在此基础上进一步引入双金字塔和双向循环
- SEA-RAFT的Mixture-of-Laplace损失被DPFlow采用并扩展到多尺度训练
- 启发:在其他需要分辨率自适应的任务(如视频超分、立体匹配)中,双金字塔+循环的思路同样值得探索
评分¶
⭐⭐⭐⭐ — 方法设计上图像+特征双金字塔的循环编码器是一个优雅的架构贡献,在4个主要基准上达到SOTA。Kubric-NK数据集的发布具有重要的社区意义。8K分辨率上30%的误差降低令人信服地证明了架构的泛化能力。
相关论文¶
- [CVPR 2025] EDCFlow: Exploring Temporally Dense Difference Maps for Event-based Optical Flow Estimation
- [CVPR 2026] U2Flow: Uncertainty-Aware Unsupervised Optical Flow Estimation
- [ICCV 2025] MEMFOF: High-Resolution Training for Memory-Efficient Multi-Frame Optical Flow Estimation
- [ICCV 2025] Unsupervised Joint Learning of Optical Flow and Intensity with Event Cameras
- [ICCV 2025] PriOr-Flow: Enhancing Primitive Panoramic Optical Flow with Orthogonal View