FlowNet 2.0
Ilg 2017 · 论文
一句话总结 — 将多个FlowNet模块以带中间变形(warping)的方式堆叠,并加入一个专门处理小位移的子网络,将FlowNet的估计误差降低超过50%,成为首个在交互式帧率下达到经典变分光流方法水准的深度方法。
问题
FlowNet证明了光流估计可以被建模为一个学习问题,但当时光流质量的最先进水平仍由传统变分方法定义——尤其是在小位移和真实世界数据上,FlowNet无法与之竞争。仅仅把单个FlowNet做得更深或更宽并没有帮助。缺失的要素是迭代精化:经典方法会逐步精化一个粗略估计,而FlowNet 2.0在一个可学习的流水线内部重建了这一机制。
方法与架构
论文的三项贡献共同构成了这一流水线:
1. 数据集调度。 训练数据的顺序很重要:先在简单的FlyingChairs上训练FlowNetS/FlowNetC,再在3D的FlyingThings3D上微调,这种做法始终优于单独在任一数据集上训练或在混合数据集上训练——推测的原因是Chairs先教会网络通用的颜色匹配,然后网络才发展出容易混淆的3D运动和光照先验。论文定义了三种学习率调度方案(为60万次迭代,为120万次,以及一个低学习率微调方案)。仅调度方案的改变就使FlowNetS的结果提升约25%,FlowNetC提升约30%,并表明在同等训练条件下,带相关层的FlowNetC优于FlowNetS。
2. 带变形的堆叠网络。 一个引导性的FlowNetC接收;之后每个FlowNetS都接收、、当前光流估计、按该光流通过双线性插值变形后的第二张图像
以及亮度误差,因此每个阶段只需估计与之间剩余的增量。变形操作是可微的,因此整个堆叠结构理论上可以端到端训练,但最好的结果来自逐个训练网络、并冻结之前已训练好的网络(不带变形的堆叠会过拟合)。堆叠结构以其组成部分命名——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。
实验结果
- FlowNet 2.0将FlowNet的估计误差降低超过50%,而速度仅略微下降,其表现与最先进方法相当(在Sintel上与FlowFields相当;微调后在Sintel final上与DeepDiscreteFlow相当),且达到交互式帧率。按PWC-Net对比表中列出的数据,微调模型在Sintel测试集上的EPE为clean通道4.16/final通道5.74。
- 一系列变体覆盖8到140 fps;FlowNet2-s在140 fps下达到与原始FlowNet相当的精度。
- KITTI:在KITTI2012+2015上微调可将误差降低约3倍;在KITTI2012上取得最佳EPE,并在非立体方法中于KITTI2015基准上排名第一。
- 在实际应用中——运动分割和动作识别——原始FlowNet并不实用,而FlowNet2则与最先进的传统光流方法一样可靠,速度却高出几个数量级,运动边界清晰,且对压缩伪影和均匀区域具有鲁棒性。
对SLAM的意义
FlowNet 2.0是深度光流真正变得可用的关键节点:精度足够可信,速度也足够快以用于在线流水线,这使稠密光流成为视觉里程计前端一个切实可行的组成部分。其”堆叠+变形”的迭代精化范式直接引出了PWC-Net,并最终发展为RAFT的循环更新——这正是当今学习型SLAM系统的核心机制——其”Chairs先训、Things3D后微调”的课程式训练方法也成为训练光流和立体匹配网络的标准做法。
相关条目
- FlowNet — 它所精化的原始端到端光流网络
- PWC-Net — 将同样的思想蒸馏为规模小得多的架构
- RAFT — 采用全对相关性和循环更新的现代继任者
- FlowFormer — Transformer时代对精度竞赛的延续