介绍
- 主要提升:
- FlowNet2 在小距离移动上的性能更好
- 觉少了噪音,是的输出的结果的边缘更加清晰
- 大幅减少了运算量
- 主要贡献:
- 通过在不同的训练阶段使用不同的 dataset ,提升了网络的性能。
- 通过 warping operation 和 多个网络堆叠,提升了网络的性能。
- 针对小距离移动,设计了专门的dataset、专门的网络结构
- 一种 Fusion 方法将两个网络融合到一起
Dataset Schedules
- 增加了 FlyingThings3D 数据库,和 Chairs 对比这个数据库使用真实的3D模型、光效、物体的种类更多。
- 不同的Learning Rate
- 不同的训练数据
Stacking Networks
第一种方式:只使用 FlowNetS
- 第一层的输入是两张图片
- 第二层的输入是两张图片 + 上一层的光流 + 图片2的warping + 光流估计的错误
- warping 过程使用了 bilinear interpolation
- 问题:什么是 bilinear interpolation?在附录中
- 两个网络的初始化:
- 第一层:使用 Chairs→Things3D 得到的最优结果
- 第二层:随机,并且在 Chairs 数据上训练,learning rate: S-long
- learning rate 更新:
- 第一层:可以固定不变,也可以在400K次迭代后跟随第二层一起更新,这样有利于第二层网络获得更好初始参数。
第一种方法的测试结果
- 不使用 warping 会导致 overfiting
- 使用 warping 总能提升性能
- 在第一层网络后添加 loss 是有效的
- 第一层网络参数不变效果最好
- flow refinement after warping 可以减少 overfiting
- 每次训练一层网络可以减少 overfiting
- 问题:为什么?
第二种方式: FlowNetC + FlowNetS
这里主要探讨不同的组合方式 + 不同的网络size设计
- 每一层网络都是用独立的参数,如果是用相同的参数堆叠多个网络并不能优化性能。
- 每一层单独训练,训练网后固定参数,然后添加新的层。
- 先用 Chairs S-long,然后 Things3D S-fine
- 只在第一层是用 FlowNetC ,因为 FlowNetC 需要输入两张独立的图片。
- 尝试缩小网络的规模,通过减少Channels,合理的设置是 3/8
- 不同组合的测试结果
Small Displacements
Datasets
- 传统光流估计并没有在小距离移动上体现出性能下降,所以猜测可能是训练数据库中缺少相关的样本。
- 所以添加的小距离的数据库:ChairsSDHom ,增加了渐变色背景
- 问题:增加渐变色背景的作用?这种背景模式表示移动方向是任意的,之前的数据库中缺少这种先验知识,所以这里补充上。
- 数据中主要包括了小于一像素的距离
Small Displacement Network and Fusion
- 总体上:通过对 FlowNet2-CSS 进行 fine turn得到这个网络。称为 FlowNet2-CSS-ft-sd
- FlowNet2-CSS-ft-sd 使用混合数据库:Things3D + ChairsSDHom
- 使用了非线性 error,为了减少大距离的 error。
- 问题:细节在补充材料中。非线性方法是指 X^0.4,这样可以突出小的移动距离的异常
- 但是输出的结果中噪音很大,所以需要调整网络结构
- 删除了FlowNetS中第一层的 stride 2
- 网络前几层
7*7
5*5
的 filter 换成多个3*3
,而且变得更深 - 为了去除噪音,获得平滑的边缘,我们在反卷机过程中使用了卷机
- 问题:如何加入?A large dataset to train convolutional networks for disparity, optical flow, and scene flow estimation.
- 这个网络训练很慢,所以为了得到很好的训练结果,每个mini-patch使用8个数据,其中2个来自 Things3D 6个来自ChairsSDHom。
- 这个网络称为 FlowNet2-SD
- 与 FlowNet2-CSS-ft-sd 的融合
- 融合网络的输入包括:image1 + flows + flow magnitudes + error in brightness after warp
- 增加了输出的分辨率。问题:具体看补充内容
- 这么做可以减小噪音
- 融合后的网络称为FlowNet2