原论文标题: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. Mysql——常用命令

    查看版本:show variables like '%version%'   或者   select version() 是否开启binlog:show variables like 'log_bin ...

  2. MVC自定义视图

    编写自定义模板,以单选按钮为例   1.在Shared新建模板视图(文件夹名必须为EditorTemplates)       2.编写模板代码   @model bool   <table&g ...

  3. Python之网络模型与图形绘制工具networkx

    笔记 # https://www.jianshu.com/p/e543dc63454f import networkx as nx import matplotlib.pyplot as plt ## ...

  4. 鸟哥私房菜基础篇:例行性工作排程 (crontab)习题

    猫宁!!! 参考:http://cn.linux.vbird.org/linux_basic/0430cron.php 1-今天假设我有一个命令程序,名称为: ping.sh 这个档名!我想要让系统每 ...

  5. Exchange Server 2010安装

    Exchange Server 2010安装  Exchange Server 2010是Microsoft最新的邮件服务器软件,功能比较强大.在此,我们在虚拟机中安装体验一下,主要步骤如下: (1) ...

  6. 【计算机视觉】基于样本一致性的背景减除运动目标检测算法(SACON)

    SACON(SAmple CONsensus)算法是基于样本一致性的运动目标检测算法.该算法通过对每个像素进行样本一致性判断来判定像素是否为背景. 算法框架图 由上图可知,该算法主要分为四个主要部分, ...

  7. python界面编程

    这是一个简单的加法计算器 首先,要先对这个简易计算器进行布局设计,需要两个输入框,还有一个输入框用于存放就算的结果,还需要两个table,一个是"+"一个是"=" ...

  8. spark 1.6.0 安装与配置(spark1.6.0、Ubuntu14.04、hadoop2.6.0、scala2.10.6、jdk1.7)

    前几天刚着实研究spark,spark安装与配置是入门的关键,本人也是根据网上各位大神的教程,尝试配置,发现版本对应最为关键.现将自己的安装与配置过程介绍如下,如有兴趣的同学可以尝试安装.所谓工欲善其 ...

  9. win10下访问vm虚拟机Linux服务

    一.环境 win10操作系统 centos6.5 VMware® Workstation 14 Pro虚拟机 二.互相访问设置步骤 1.查看如下图所示 2.记住上面的IP和网关,进行如下图操作 点击应 ...

  10. SpringBoot起飞系列-数据访问(九)

    一.前言 前边我们已经学些了开发的基本流程,最重要的一步来了,怎么样和数据库交互才是最重要的,毕竟没有数据那就相当于什么也没做,本文我们来学习使用springboot整合jdbc.mybatis.jp ...