原论文标题:FlowNet 2.0: Evolution of Optical Flow Estimation with Deep Networks
文章是对FlowNet的进一步改进,主要贡献为如下三个方面:

  • 训练数据集的调度对于模型的性能有较大的影响。

PS:光流的数据集都比较小,一般需要几个数据集一起train,故如何使用这些数据集是至关重要的。

  • 使用中间光流warp图片,并以此作为一个监督信号辅助训练。
  • 用一个子网络处理小位移。

经过这些改进,FlowNet 2.0只比前作慢了一点,却降低了50%的测试误差。

1. 数据集调度

最初的FlowNet使用FlyingChairs数据集训练,这个数据集只有二维平面上的运动。而FlyingThings3D是Chairs的加强版,包含了真实的3D运动和光照的影响,且object models的差异也较大。

作者作了如下设定:

  • 使用前作中提出的两种网络结构:FlowNetS和FlowNetC,S代表simple,C代表complex,具体细节可参阅前作。
  • 分别使用Chairs(22k)、Things3D(22k)、两者混合(从44k中sample出22k)以及用Chairs预训练再用Things3D finetune这四种数据集调度方案。
  • 学习率调度策略使用Sshort和Slong+Sfine两种策略,如下图。

得出的实验结果如下图,图中的数字代表模型在Sintel数据集上的EPE,注意,Sintel是一个新的数据集,不包含在训练数据中。

从实验结果中可以得出几个结论:

  • 训练集的使用顺序很重要。即使Thins3D包含了更复杂的运动,但得出的结果却不如Chairs。(PS:根据笔者的经验,如果要在C数据集上测试的话,A和B数据集训练的模型哪个效果更好是比较玄学的,不是说哪个数据集更复杂,效果就越好。本质上还是取决于A与C和B与C之间的domain shift哪个更小。)最好的策略是现在Charis上预训练,再用Things3D fientune,这在笔者之前做过的一个Kaggle比赛中证实过,虽然任务不一样,但两种数据mixed同时训练确实效果极差。作者对此作出了猜测,Chairs帮助网络学习到颜色匹配这样的一般概念,而更复杂的3D和真实光照等信息不宜过早地强加给网络。这对于其他基于深度学习的任务也有一定的参考价值。
  • FlowNetC比FlowNetS更好。
  • 结果的提升。

2. Stacking Networks

传统的光流算法都依赖于迭代过程。作者尝试也使用多个模型stacking,逐步refine的手法来得到更好的结果。首先,stack两个模型。

第一个网络使用两张图片作为输入,第二个网络使用两张图片以及第一个网络预测出的光流场作为输入。

此外,作者尝试了另一种方法,如Figure 2所示,第二个网络除了上述的三个输入之外,又使用Image 2和Flow进行warp,这样,第二个网络就可以集中学习warped image和Image 1的差别,这是一种增量学习的思想。注意,作者将warped image和Image 1的误差图也显式地输入给了第二个网络。实验结果如Table 2所示。需要说明的是,warp的过程是用双线性插值,是可微的,故整个网络可以e2e训练。

从表中可以看出,(1)仅stacking模型而不使用wrap后的图片在Chairs上有更好的结果,但在Sintel则不然;(2)Stacking with warping总是能提高结果;(3)e2e训练时,在Net1之后加中间loss是比较好的;(4)产生最好结果的做法是固定Net1,只训练Net2,当然,要加入warp操作。

出现这样的结果是符合直觉的,若e2e训练,参数量成倍增加,很容易overfitting,但分开train,参数量就没有那么大,能产生比较好的结果。

下面,作者尝试堆叠多个不同模型,即FlowNetC和FlowNetS混合使用,综合考虑速度和性能,CSS最为合理。另外,作者作了一些实验,尝试共享stacking前后模型的参数,发现没什么提升。

3. Small Displacements

上文中所用到的数据集所包含的运动往往比较快,而真实数据集如UCF101,帧间的运动往往比较小,大多在1px左右。所以,基于Chairs,作者按照UCF101的位移直方图构建了一个小位移数据集,称之为ChairsSDHom。

作者用FlowNet2-CSS网络在小位移数据上进一步训练。具体的,作者在Things3D和ChairsSDHom中分别采样了一些数据,具体的采样方法参见文章的补充材料,这里我就不去看了。经过这一轮训练,网络对于小位移的效果有了提高,而且并没有伤害大位移的效果。这个网络命名为FlowNet2-CSS-ft-sd。但是,对于subpixel motion(讲道理我不知道这是指什么,姑且理解为小于1px的运动吧),噪声仍然是个问题,作者猜测FlowNet的网络结构还是不适应这种运动。所以,作者对FlowNetS做了轻微的修改,第一层的步长2改为1,7*7改成5*5,使得网络能够更好地捕捉小位移,这个网络结构称为FlowNet2-SD。

最后,作者又设计了一个小网络来fuse FlowNet2-CSS-ft-sd以及FlowNet2-SD的结果,具体的结构没有说的太清楚,有需要的话可以去看代码。总的来看,结构还是非常复杂的,训练过程也很有讲究,改进的余地应该挺大的。

4. Experiments

这部分没有太多好说的,总之就是各种SOTA了。值得一提的是,作者还用了Motion Segmentation和Action Recognition两个任务来衡量光流的好坏,前者我了解不太多,后者就是用很常见的Two Stream模型,两个任务都需要光流作为输入。最后的结论当然是以FlowNet2得到的光流作为输入,效果最好喽!此处不再赘述。

FlowNet2.0论文笔记的更多相关文章

  1. Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现(转)

    Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文, ...

  2. 论文笔记之:Visual Tracking with Fully Convolutional Networks

    论文笔记之:Visual Tracking with Fully Convolutional Networks ICCV 2015  CUHK 本文利用 FCN 来做跟踪问题,但开篇就提到并非将其看做 ...

  3. Deep Learning论文笔记之(八)Deep Learning最新综述

    Deep Learning论文笔记之(八)Deep Learning最新综述 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文,但老感觉看完 ...

  4. Deep Learning论文笔记之(六)Multi-Stage多级架构分析

    Deep Learning论文笔记之(六)Multi-Stage多级架构分析 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些 ...

  5. Multimodal —— 看图说话(Image Caption)任务的论文笔记(一)评价指标和NIC模型

    看图说话(Image Caption)任务是结合CV和NLP两个领域的一种比较综合的任务,Image Caption模型的输入是一幅图像,输出是对该幅图像进行描述的一段文字.这项任务要求模型可以识别图 ...

  6. 论文笔记(1):Deep Learning.

    论文笔记1:Deep Learning         2015年,深度学习三位大牛(Yann LeCun,Yoshua Bengio & Geoffrey Hinton),合作在Nature ...

  7. 论文笔记(2):A fast learning algorithm for deep belief nets.

    论文笔记(2):A fast learning algorithm for deep belief nets. 这几天继续学习一篇论文,Hinton的A Fast Learning Algorithm ...

  8. 【论文笔记】Malware Detection with Deep Neural Network Using Process Behavior

    [论文笔记]Malware Detection with Deep Neural Network Using Process Behavior 论文基本信息 会议: IEEE(2016 IEEE 40 ...

  9. 论文笔记:语音情感识别(四)语音特征之声谱图,log梅尔谱,MFCC,deltas

    一:原始信号 从音频文件中读取出来的原始语音信号通常称为raw waveform,是一个一维数组,长度是由音频长度和采样率决定,比如采样率Fs为16KHz,表示一秒钟内采样16000个点,这个时候如果 ...

随机推荐

  1. idea 中的new file 没有jsp

    idea 的new file中没有你需要的文件,原因是IDEA认为当前包下不应该创建该文件,以就没有创建该文件的选项. 以jsp 文件为例.其他文件类似. 解决方法: File ---> pro ...

  2. 20190925 - 使 macOS 的 rm 命令删除到回收站的不完美办法

    今天使用 macOS 时,使用 rm 删除了一个不重要文件,为保证以后不删除重要文件,找到一个让 rm 命令更安全的办法. 使用 MacPorts 安装 rmtrash 命令. sudo port i ...

  3. python3 速查参考- python基础 9 -> MySQL基础概念、数据库create、alter、insert、update、delete、select等基础命令

    前置步骤: 下载一个绿色版的mysql数据库客户端连接工具 :http://wosn.net/821.html mysql平台为win7(以后会有CentOS上的) 学习目的: 掌握数据库的基本概念, ...

  4. Nginx进程信号管理

    CHLD信号:work进程异常退出会给Master进程发送CHLD信号,这时Master进程就知道Worker进程退出了,然后重新起一个Worker进程: TERM信号:退出进程,不优雅: QUIT信 ...

  5. springboot整合es客户端操作elasticsearch(二)

    在上章节中整合elasticsearch客户端出现版本问题进行了处理,这章来进行springboot整合得操作 环境:elaticsearch6.2.1,springboot 2.1.8 客户端版本采 ...

  6. D3 GEO应用专题(一):绘制旋转的3D地球

    https://gallery.echartsjs.com/explore.html#sort=rank~timeframe=all~author=all 雷达图 https://blog.csdn. ...

  7. vue中打包之后的dist文件不放在服务器的根目录下

    在工作当中,我使用webpack打包的dist,由于管理的问题,无法被放在服务器根目录下 ,但在目前的vue配置,dist不放在根目录下,访问页面会成为一片空白,于是便要对vue框架的config进行 ...

  8. sql常用到的查询连接

    一.内连接(Inner Join) select * from a inner join b on a.name=b.name; 此语句的结果为同时匹配表a和表b的记录集.即内连接取的是两个表的交集. ...

  9. 取整math函数

    floor(a); ceil(a);  

  10. Python—格式化输出

    Python提供了很多种格式化方式(包括但不限于以下几种): [,]分隔 name = 'jack' age = -0.5 print(name, 'is', age, 'years old.') j ...