去掉相关体、扭曲和迭代,莫斯科大学 FreeFlow 在 Sintel 拿到 0.68/1.48

FreeFlow: A Bias-free Hierarchical Transformer for Optical Flow Estimation

Vladislav Bargatin, Alexander Yakovenko, Khaled Abud, Dmitriy Vatolin

ECCV 2026

cs.CV

2026-09-10

莫斯科大学丢掉相关体、扭曲和迭代细化,改用层级 Transformer 一次前向估光流。最大号在 Sintel 做到 0.68/1.48,KITTI 离群率 3.23,Spring 一像素误差 3.192,1080p 显存只要 2.58 GB。

这篇在解决什么

光流要给每个像素估两帧之间的位移。FlowNet 证明前馈网络能直接回归,后面却把经典算法的零件又装了回去:金字塔、特征扭曲、全对相关体、迭代更新、凸上采样。RAFT 把这条路走通,后续大多在上面加模块。精度上去了,管线也变硬,难改、难扩、难挪到别的稠密对应任务。

检测、分割、深度那边,通用 ViT 加简单头已经能干活。光流这边 CroCo-Flow 接近纯 Transformer,高分辨率却要切块;WAFT 和 GeoViT 去掉了相关体,还留着迭代扭曲。问题变成:这些任务专用零件拿掉以后,还能不能站上排行榜。

方法

FreeFlow 是一对共享权重的编码器加一个解码器,一次前向出光流,没有相关体、没有扭曲、没有迭代细化。每张图切成 8×8 patch。解码器在当前 token 上做自注意力,同时用第一视角的 query 去看第二视角的 key/value,反复交换两帧信息。

注意力三种轮流排。窗口注意力把 H/8×W/8 的 token 图切成 4×4 共 16 块,块内计算。平移窗口注意力再半窗平移一次,让信息跨过边界。全局注意力先用 stride-2 卷积降一倍分辨率,做满注意力,再转置卷积升回来,二次代价跟窗口块打平。位置编码用 RoPE。注意力 logit 再乘上 token 数的对数,推理分辨率高于训练时不容易散。

预测头只有三层:3×3 卷积扩到 4 倍通道,1×1 到 4096,stride-8 转置卷积升到原分辨率,输出 5 通道,两路光流加三路 Laplace 混合的不确定度。没有 DPT 多层聚合,也没有凸上采样。

训练分两段。先按 CroCo 做跨视角补全,ARKitScenes、MegaDepth、3DStreetView 共 370 万对,224×224,34.6 万步;层级结构要求 mask token 从编码器入口就填进去,mask 比例 0.95,比 CroCo 默认的 0.9 更狠,因为 8×8 patch 离可见区域更近,任务得再难点才有信号。再在 TartanAir、Things、Sintel、KITTI、HD1K 混合上微调,训练帧做 2× 上采样以对齐 FullHD 运动分布,按 token 预算抽可变长宽比裁剪。最大模型在 32 张 GPU 上预训练 4 到 5 天,微调约 3 天。

结果

Spring 上 FreeFlow-L 的 1px 为 3.192,EPE 0.278,Fl 1.048,WAUC 95.235。对照 WAFT-DAv2-a2 的 EPE 0.304、Fl 1.197,分别低约 9% 和 14%。1080p 推理显存 2.58 GB、耗时 607 ms、参数 2.31 亿;同一设置下 WAFT-DAv2-a2 要 20.58 GB。中号 1.66 GB、325 ms、1.02 亿参数,1px 3.392;小号 1.02 GB、144 ms、3460 万参数,1px 5.087。

Sintel Clean/Final 为 0.68/1.48,低于 GeoViT 的 0.79/1.88,Final 也低于五帧 VideoFlow-MOF 的 1.65。KITTI-2015 的 Fl-all 为 3.23,在非立体、非多帧方法里最低;多帧 MEMFOF 是 2.94,ARFlow 是 2.85,这两项它没有追上。

消融在 Spring 子验证集上做。三种注意力全开且 mask 0.95 时,1px 0.624、EPE 0.157。mask 0.9 时去掉全局块,数字还略好一点,可视化却会出现运动不一致。平移窗口拿掉会明显掉点。S/M/L 随深度和宽度一起扩,精度跟着涨。

为什么重要

光流这条线的默认假设是,没有相关体和迭代就上不去榜。FreeFlow 用一份前馈 Transformer 把 Sintel、KITTI、Spring 三个主流榜推到两帧方法的最前面,说明那些零件是有效的归纳偏置,不是物理必需。要在 1080p 上跑又不想切块拼缝的人,2.58 GB 显存是能落地的数字。架构均匀,缩到 3460 万参数还能用。

代价也清楚:这不是下载即用的小模型。预训练加微调是 32 卡一周量级,KITTI 上多帧方法仍然更准。

局限与存疑

「无偏置」是相对相关体、扭曲、迭代和凸上采样说的。窗口切分、RoPE、卷积头、8×8 patch 都还在,换成了通用视觉零件。Sintel 和 KITTI 提交把输入放大 2 倍再把光流缩回去,跟 MEMFOF 同一套,跨论文比较要把这条算进去。消融用的是缩小版,宽 256、编解码各 8 层,不能直接当成大模型的模块贡献。补充材料里把迭代偏置加回去的实验,正文没有展开数字。

术语

原文与代码

相关论文

全部论文解读