FlowNet 2.0

Ilg 2017 · 论文

一句话总结 — 将多个FlowNet模块以带中间变形(warping)的方式堆叠,并加入一个专门处理小位移的子网络,将FlowNet的估计误差降低超过50%,成为首个在交互式帧率下达到经典变分光流方法水准的深度方法。

问题

FlowNet证明了光流估计可以被建模为一个学习问题,但当时光流质量的最先进水平仍由传统变分方法定义——尤其是在小位移和真实世界数据上,FlowNet无法与之竞争。仅仅把单个FlowNet做得更深或更宽并没有帮助。缺失的要素是迭代精化:经典方法会逐步精化一个粗略估计,而FlowNet 2.0在一个可学习的流水线内部重建了这一机制。

方法与架构

论文的三项贡献共同构成了这一流水线:

1. 数据集调度。 训练数据的顺序很重要:先在简单的FlyingChairs上训练FlowNetS/FlowNetC,再在3D的FlyingThings3D上微调,这种做法始终优于单独在任一数据集上训练或在混合数据集上训练——推测的原因是Chairs先教会网络通用的颜色匹配,然后网络才发展出容易混淆的3D运动和光照先验。论文定义了三种学习率调度方案(SshortS_{\mathit{short}}为60万次迭代,SlongS_{\mathit{long}}为120万次,以及一个低学习率微调方案SfineS_{\mathit{fine}})。仅调度方案的改变就使FlowNetS的结果提升约25%,FlowNetC提升约30%,并表明在同等训练条件下,带相关层的FlowNetC优于FlowNetS。

2. 带变形的堆叠网络。 一个引导性的FlowNetC接收I1,I2I_1, I_2;之后每个FlowNetS都接收I1I_1I2I_2、当前光流估计wi=(ui,vi)w_i = (u_i, v_i)^\top、按该光流通过双线性插值变形后的第二张图像

I~2,i(x,y)=I2(x+ui, y+vi)\tilde{I}_{2,i}(x,y) = I_2(x + u_i,\ y + v_i)

以及亮度误差ei=I~2,iI1e_i = \lVert \tilde{I}_{2,i} - I_1 \rVert,因此每个阶段只需估计I1I_1I~2,i\tilde{I}_{2,i}之间剩余的增量。变形操作是可微的,因此整个堆叠结构理论上可以端到端训练,但最好的结果来自逐个训练网络、并冻结之前已训练好的网络(不带变形的堆叠会过拟合)。堆叠结构以其组成部分命名——FlowNet2-CSS是FlowNetC后接两个FlowNetS;小写字母表示通道数为3/8的精简变体。FlowNet2-CSS相比单个FlowNet2-C提升约30%,相比原始FlowNetC提升约50%;两个小网络的效果优于一个大网络(1100万参数的FlowNet2-ss优于3800万参数的FlowNet2-S)。

3. 小位移子网络与融合。 真实世界视频(例如UCF101)大多是亚像素级运动,而现有训练数据缺乏这类样本;作者构建了ChairsSDHom(Chairs风格但含小位移和均匀背景的数据)以及FlowNet2-SD——一个FlowNetS的变体,去掉了第一层的步长2设置,将7x7/5x5卷积核替换为多个3x3卷积核,并在上卷积之间加入额外卷积以平滑噪声。一个小型融合网络接收两个分支的光流、光流幅值以及变形后的亮度误差,输出最终的全分辨率估计;整个系统称为FlowNet2。

实验结果

对SLAM的意义

FlowNet 2.0是深度光流真正变得可用的关键节点:精度足够可信,速度也足够快以用于在线流水线,这使稠密光流成为视觉里程计前端一个切实可行的组成部分。其”堆叠+变形”的迭代精化范式直接引出了PWC-Net,并最终发展为RAFT的循环更新——这正是当今学习型SLAM系统的核心机制——其”Chairs先训、Things3D后微调”的课程式训练方法也成为训练光流和立体匹配网络的标准做法。

相关条目