原论文标题: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. golang channel详解和协程优雅退出

    非缓冲chan,读写对称 非缓冲channel,要求一端读取,一端写入.channel大小为零,所以读写操作一定要匹配. func main() { nochan := make(chan int) ...

  2. lumen中间件中设置响应header

    <?php namespace App\Http\Middleware; use Closure; class BeforeMiddleware { public function handle ...

  3. 【HANA系列】对话SAP全球CEO孟鼎铭:未来最大的发展机遇属于中国中小企业

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]对话SAP全球CEO孟鼎铭:未来 ...

  4. Django:(03)请求和响应

    一.HttpRequest 客户端传参的几种方式 传递方式 示例 后端获取方式 数据类型 url路径(path) /news/1/2 正则匹配 str 查询字符串 /news2?category=1& ...

  5. discriminator 鉴别器

    在特定的情况下使用不同的pojo进行关联, 鉴别器元素就是被设计来处理这个情况的.鉴别器非常容易理解,因为它的表现很像 Java 语言中的 switch 语句:discriminator 标签常用的两 ...

  6. 无法从路径’NuGet.CommandLine.2.7.1.nupkg’读取包

    visual-studio-2010或者2013 – 在启用Nuget包恢复时出现奇怪的Nuget错误 我右键单击我的VS2010中的解决方案文件并单击Enable NuGet Package Res ...

  7. Kettle作业的自带定时任务

    文章出处:https://blog.csdn.net/jianlong727/article/details/53966286 7.1.新建作业 7.2.部署作业 在“核心对象”中拖拽两个图标到执行区 ...

  8. spring_mvc入门项目的小总结

    1.先搭建一个maven的web项目 ,然后把文件夹完善一下,创建一个java的文件夹和resource的问件夹,并指定他们各自的功能. 导入pom.xml文件的依赖 <properties&g ...

  9. 19.通过MAPREDUCE 把收集数据进行清洗

    在eclipse软件里创建一个maven项目 jdk要换成本地安装的1.8版本的 加载pom.xml文件 <project xmlns="http://maven.apache.org ...

  10. [转帖]LINUX网络配置---nmtui&nmcli

    LINUX网络配置---nmtui&nmcli https://blog.51cto.com/13625527/2151853?source=dra 两年前曾经打打印过 几页命令 里面就有 n ...