FlowNet

Dosovitskiy 2015 · 论文

一句话总结 — 首个用于光流估计的端到端CNN,引入了相关层(correlation layer)和成为该领域标准的合成训练数据集Flying Chairs。

问题

到2015年,CNN已经改变了识别类任务,但光流并不在其成功范围之内:Horn-Schunck谱系下的变分方法(DeepFlow、EpicFlow)仍占主导地位,每帧耗时数秒到数分钟。光流与此前的CNN应用有本质区别:它不仅需要逐像素定位,还需要在两张图像之间进行特征匹配。有两个障碍阻碍了对它的学习:没有人知道什么架构能够表达稠密的双帧对应关系,也没有数据集能在CNN所需的规模上提供稠密的真值光流(真实场景的真实对应关系几乎不可能获得;当时最大的数据集Sintel也只有1,041对训练图像)。FlowNet同时攻克了这两个障碍。

方法与架构

两种编码器-解码器架构,每种都有9个卷积层(其中6层步长为2,每层后接ReLU,没有全连接层因此输入尺寸可任意;滤波器尺寸从7×77\times7缩小到5×55\times5再到3×33\times3,而通道数在每个步长为2的层大致翻倍):

c(x1,x2)=o[k,k]×[k,k]f1(x1+o),f2(x2+o)c(\mathbf{x}_1,\mathbf{x}_2)=\sum_{\mathbf{o}\in[-k,k]\times[-k,k]}\langle \mathbf{f}_1(\mathbf{x}_1+\mathbf{o}),\,\mathbf{f}_2(\mathbf{x}_2+\mathbf{o})\rangle

其中图块大小K:=2k+1K:=2k+1——这在结构上等同于卷积的一步操作,但它是数据与数据的卷积,因此没有可训练权重。比较所有w2h2w^2 h^2个图块对是不可行的,因此位移被限制在dd以内(邻域D:=2d+1D:=2d+1),步长为s1,s2s_1,s_2,相对位移按通道组织,得到一个w×h×D2w\times h\times D^2的输出。所选参数为:k=0k{=}0,d=20d{=}20,s1=1s_1{=}1,s2=2s_2{=}2

精化:“上卷积”层(反池化+卷积)扩展粗糙特征;在每一步中,上卷积后的特征会与对应的收缩部分特征图以及上采样后的更粗糙光流预测拼接在一起,分辨率翻倍4次达到四分之一分辨率,再通过双线性上采样恢复到全分辨率。可选的变分精化(‘+v’)运行20次由粗到细的无匹配变分求解器迭代,加上5次全分辨率迭代,并采用尊重边界的平滑项α=exp(λb(x,y)κ)\alpha=\exp(-\lambda b(x,y)^{\kappa})

训练:损失为终点误差(EPE——预测光流与真值光流之间的欧氏距离,按像素平均);使用Adam优化器(β1=0.9\beta_1{=}0.9,β2=0.999\beta_2{=}0.999),批大小8,学习率10410^{-4},在30万次迭代后每10万次迭代减半(FlowNetCorr需要从10610^{-6}进行预热以避免梯度爆炸)。数据是专门构建的Flying Chairs数据集:809种渲染椅子(每种62个视角)在964张Flickr背景图上做仿射运动,其位移统计特性与Sintel相匹配——共22,872对图像及其精确的稠密光流。激进的在线数据增强(平移±20%,旋转±17°,缩放0.9–2.0,噪声、亮度/对比度/gamma/颜色扰动)仍然至关重要。

实验结果

对SLAM的意义

FlowNet开启了整个深度光流领域,其后代(RAFT及其变体)如今作为学习型视觉里程计和SLAM系统(例如DROID-SLAM)中的稠密对应关系引擎。它的两个核心成果十年后依然发挥着重要作用:相关层(被PWC-Net、RAFT以及几乎所有后续光流网络复用)以及合成数据方案——在带精确真值的渲染数据上训练、在Sintel/KITTI上评测——这一方案被FlyingThings3D、AutoFlow和Kubric悉数沿用。

相关条目