几分钟走进神奇的光流|FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks

故事背景

那是15年的春天,本文的作者和其他几个人,使用CNN做光流估计,于是FlowNet成了第一个用CNN做光流的模型,当时的结果还不足以和传统结果相匹配。2016年冬天,作者和一群小伙伴又基于Flow Net的工作进行了改进,效果得到了提升,可以与传统方法相匹敌。
15年的思想主要是把两张用来估计光流信息的图片输入网络,经过训练使网络学到光流信息,后面会讲到当时用到的两个网络。
作者
Eddy Ilg, Nikolaus Mayer, Tonmoy Saikia, Margret Keuper, Alexey Dosovitskiy, Thomas Brox
项目地址
http://lmb.informatik.uni-freiburg.de/Publications/2016/IMKDB16/
FlowNet1.0 地址
http://lmb.informatik.uni-freiburg.de/resources/binaries/

一句话总结

本文依然是用CNN来做光流估计,提出了一种训练方法,引入了Stack的结构,对小位移单独处理,提高了网络的效果。好评!

看点

  1. 训练时数据集的使用
  2. 网络结构
  3. 还有请留言:-D

0. 预备~

到了大家最喜欢看网络结构的时候了
这一节主要介绍在第一版FlowNet中的两个网络结构及几个数据库

0.1 FlowNetS

几分钟走进神奇的光流|FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks_第1张图片
第一个模型:FlowNetS
主要特色:
- 输入由原来的一张图片变为了两张,通道数由3变为6
- 多层feature引入最后的Refinement模块,Refinement的具体结构将在后面涉及
几分钟走进神奇的光流|FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks_第2张图片

0.2 FlowNetC

第二个模型:FlowNetC
主要特色:
- 图片不再直接放到通道,而是先分别通过一个三层网络 然后进入一个名叫 correlation layer的层

0.3 correlation layer

该层的主要作用是比较来自两张图片的feature map的关系,文章用了卷积的形式,还是比较巧妙的,具体方程如下
这里写图片描述
C代表correlation,f1和f2分别代表两个feature map, k代表要比较的区域,x1,x2分别代表两个feature map上的点。具体的计算流程还是看原文本,这里只要知道这个层的主要作用是计算两个层的关系就可以了。

0.4 Refinement

几分钟走进神奇的光流|FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks_第3张图片
这里就是不断的上采然后 前面的feature map的reuse,这里还加入了预测得到的flow。具体细节同样请看第一版的FlowNet

总的来说,FlowNetS的效果不如FlowNetC的效果

0.5 Chairs 数据库

一群在各种背景下会飞的椅子,确切的说是22872对椅子
几分钟走进神奇的光流|FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks_第4张图片

0.6 FlyingThings3D(下面称为Things3D)

一堆会飞的东西 但是更接近于现实,22k对
几分钟走进神奇的光流|FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks_第5张图片
几分钟走进神奇的光流|FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks_第6张图片

0.7 Sintel

一共1041对
几分钟走进神奇的光流|FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks_第7张图片

1. Dataset Schedules

本文的三个训练策略
几分钟走进神奇的光流|FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks_第8张图片
使用不同的训练策略和不同的数据集顺序得到的结果:
几分钟走进神奇的光流|FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks_第9张图片
这里可以看出,先使用Chairs这样简单的样本然后再使用Things3D,可以得到比一起mixed训练更好的结果

2. Stacking Networks

结构如下:
几分钟走进神奇的光流|FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks_第10张图片
- 首先,第一个网络的输入是两幅图片
- 其次,在之后的网络含有warp layer时
- 输入经过warp layer及双线性差值之后的 img2及其I1的差值(brightness error)及img1,img2,flow(共5种)
- 所谓warplayer 就是将原图根据得到的flow的值进行位置变化
- 再次,当没有warp layer时 输入 img1 img2 及flow(3种)

2.1 Stacking Two Networks

这部分只用FlowNetS一种网络,具体实验设计如下表:
几分钟走进神奇的光流|FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks_第11张图片
实验观察:
1. 不加warp时,叠加网络,在Chairs数据集上错误率下降,Sintel上上升,文章认为,这是由于过拟合造成的(训练是在Chairs上训练的)
2. Warp的效果很明显
3. 在Net1上加辅助loss有利
4. 在Sintel数据集上的最优结果来自fixed net1+training net2+warp

2.2 Stacking Multiply Diverse Networks

文章在这里除了引入FlowNetS,FlowNetC,还引入了每层只有3/8个通道的FlowNetc和FlowNets以小写的s和c表示,3/8的来源:
几分钟走进神奇的光流|FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks_第12张图片
这小节做的试验训练方法都是用Chairs->Things3D的方法,且网络按照one-by-one的设置训练
试验设置及结果:
几分钟走进神奇的光流|FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks_第13张图片
CSS表示FlowNetC+2个FlowNetS,其他以此类推,由此可见,两个小网络虽然在一起参数更少但是效果好于一个大网络

2.3 Small Displacement

上面使用的Chairs 及Things3D数据集相对真实场景的变动较大,所以训练的效果在实际应用时并不太好,所以作者就重新做了一个数据集,叫作ChairsSDHom, 使用FlowNet2-CSS在ChairsSDHom及Sintel上finetune 得到FlowNet-Css-ft-sd, finetune时对small displacement的loss权重加强,效果在微变物体上表现变好,变化大的物体的效果也还不错,但是仍然还有噪声。
于是作者就设计了网络结构图中右下角的FlowNet-SD。
主要改进:
- 将FlowNetS的第一层的stride=2变为1
- 将7x7和5x5变为几个3x3
- 在上采样前加了卷积层用了平滑噪声

2.4 Fusion Net

最后的Fusion用了融合前面FlowNetCSS-ft-sd及FlowNet-SD的结果,结构如下:
几分钟走进神奇的光流|FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks_第14张图片

3 实验

随便看看就可以了
几分钟走进神奇的光流|FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks_第15张图片
几分钟走进神奇的光流|FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks_第16张图片
几分钟走进神奇的光流|FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks_第17张图片

你可能感兴趣的:(光流,深度学习,cnn,FlowNet)