SEA-RAFT

Wang 2024 · 论文

一句话总结 — Simple, Efficient, Accurate RAFT:通过混合Laplace损失、直接回归初始光流、在TartanAir上进行刚性光流预训练以及架构简化,使RAFT获得了最佳的精度-效率帕累托前沿——在Spring数据集上达到最先进水平,同时比同类方法至少快2.3倍。

问题

RAFT之后的光流研究进展大多来自更重的架构——基于Transformer的代价体编码器、更大的骨干网络——却牺牲了让光流能够用于实时系统的速度。同时,RAFT自身的方案也存在弱点:标准的L1L_1端点损失容易被重度遮挡下的模糊、不可预测像素所主导;从零初始化的光流需要大量的精炼迭代(训练时12次,推理时最多32次);而合成的FlyingChairs/Things数据限制了真实感和泛化能力。SEA-RAFT探讨的是,在保持原始架构不变的情况下,损失函数、初始化和数据的改进能带来多大的提升。

方法与架构

SEA-RAFT保留了RAFT的骨架。特征编码器FF和上下文编码器CC(用截断的ImageNet预训练ResNet取代RAFT自定义的编码器)将I1,I2RH×W×3I_1, I_2 \in \mathbb{R}^{H\times W\times 3}映射到1/81/8分辨率特征;构建了一个多尺度4D相关体:

Vk=F(I1)AvgPool(F(I2),2k)Rh×w×h2k×w2k,k=4, (h,w)=18(H,W)V_k = F(I_1) \circ \texttt{AvgPool}(F(I_2), 2^k)^{\top} \in \mathbb{R}^{h\times w\times\frac{h}{2^k}\times\frac{w}{2^k}}, \qquad k=4,\ (h,w)=\tfrac{1}{8}(H,W)

每次迭代在当前光流μ\mu周围以半径r=4r{=}4查找运动特征,M=MotionEncoder(LookUp({Vk},μ,r))M = \texttt{MotionEncoder}(\texttt{LookUp}(\{V_k\},\mu,r)),一个循环单元(用两个ConvNeXt模块取代RAFT的ConvGRU)更新隐藏状态并回归残差:h=RNN(h,M,C(I1))h' = \texttt{RNN}(h, M, C(I_1))Δμ=FlowHead(h)\Delta\mu = \texttt{FlowHead}(h')。三个主要改动:

MixLap(x;α,β1,β2,μ)=αexμeβ12eβ1+(1α)exμeβ22eβ2MixLap(x;\alpha,\beta_1,\beta_2,\mu) = \alpha\cdot\frac{e^{-\frac{|x-\mu|}{e^{\beta_1}}}}{2e^{\beta_1}} + (1-\alpha)\cdot\frac{e^{-\frac{|x-\mu|}{e^{\beta_2}}}}{2e^{\beta_2}}

其中β1=0\beta_1{=}0固定,使第一个组分与L1L_1/端点误差度量匹配,尺度在对数空间中回归以保证稳定性(β2[0,10]\beta_2 \in [0,10]),损失LMoL\mathcal{L}_{MoL}为对像素和两个光流轴平均的真值负对数似然,每次迭代都以常见的指数加权方式应用,Lall=i=1NγNiLMoLi\mathcal{L}_{all}=\sum_{i=1}^{N}\gamma^{N-i}\mathcal{L}_{MoL}^{i}。混合权重α\alpha同时兼作不确定性输出。

变体:SEA-RAFT(S)使用ResNet-18的前6层,(M)使用ResNet-34的前13层;(L)是(M)运行12次推理迭代的版本。

实验结果

对SLAM的意义

当SLAM前端需要以实时速率获得稠密光流时,SEA-RAFT是实用的选择:具备RAFT级别的能力,却没有Transformer级别的延迟。它的两个要素与SLAM的需求直接契合——刚性运动预训练与SLAM所假设的、基本刚性的世界相匹配,而Laplace混合参数提供了逐像素不确定性,可以自然地映射到概率估计中的测量协方差上。它也是一个案例研究,说明损失函数、初始化和数据设计可以胜过架构规模的增长,这对任何学习型SLAM组件都具有借鉴意义。

相关条目