几分钟走进神奇的光流|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实现光流估计,并开发出一种创新性的训练策略。通过采用模块化架构来构建模型,并对小位移运动进行了专门优化以提升网络性能。感谢您的支持与认可!
看点
- 训练时数据集的使用
- 网络结构
- 还有请留言:-D
0. 预备~
现在大家最热衷于观看网络结构。
0.1 FlowNetS

第一个模型:FlowNetS
主要特色:
- 输入从一张单一图像转换为两张独立图像,并将通道数量从3增加到6
- 通过多层特征的引入来实现Refinement模块的作用,在后续部分将详细阐述其具体架构

0.2 FlowNetC
该模型架构为FlowNetC,在核心优势方面进行了创新性设计。具体而言,在输入图像处理流程中:首先, 输入图像经过三层网络的深度处理以增强特征提取能力; 然后, 处理后的特征图被引入名为correlation layer的专用层进行进一步融合计算, 从而实现了更为高效的特征匹配机制。
0.3 correlation layer
该层的主要功能是对来自不同图片的特征图之间的关系进行分析。该方法采用了卷积神经网络的形式,并且这一设计思路仍然非常巧妙。具体数学表达式如下

其中C表示相关系数(correlation coefficient),而f1和f2分别代表两个feature maps(feature maps)。k表示需要比较的区域(区域),x1和x2则分别对应于这两个feature maps上的点(points)。详细的计算过程仍在原文中阐述(still detailed in the original text),这里只需了解该层的主要功能是用来衡量两层之间的联系(main purpose is to measure the relationship between two layers)即可。
0.4 Refinement

在这里进行持续性的上采操作后,并对前面所述特征图进行重用;同时整合了基于预测所得流动性的改进方案。具体内容参考第一版FlowNet
总的来说,FlowNetS的效果不如FlowNetC的效果
0.5 Chairs 数据库
一群在各种背景下会飞的椅子,确切的说是22872对椅子

0.6 FlyingThings3D(下面称为Things3D)
一堆会飞的东西 但是更接近于现实,22k对


0.7 Sintel
一共1041对

1. Dataset Schedules
本文的三个训练策略

使用不同的训练策略和不同的数据集顺序得到的结果:

可以看出,在采用Chairs这类基础级别样本数据后再结合应用Things3D时,则能够获得比同时进行混合训练更好的效果
2. Stacking Networks
结构如下:

首先,在第一层网络中接收两张图片作为输入;后续各层若包含warplayer模块时;经warplayer处理后的输出图像及其与原始图像的空间差异(亮度误差),同时包含原始图像、处理后的图像以及变形场共五种特征数据;其中,“ warplayer模块的作用即是通过计算得到的一个变形场参数向量来实现对原始图像的空间位置调整;而deformation field则表示了各个像素点在空间上的位移向量;这种机制能够有效捕捉并描述目标物体在不同视角下的形变信息;最后当未采用warplayer模块时,则仅需输入原始图像img1、img2以及变形场flow三种数据。”
2.1 Stacking Two Networks
这部分只用FlowNetS一种网络,具体实验设计如下表:

实验观察:
1. 未施加warp变换时,在Chairs数据集上的错误率呈现出下降趋势,在Sintel数据集上则出现上升。文章认为这是由于模型在Chairs数据集上进行了过拟合所导致(训练过程均基于Chairs数据集进行)。
2. 施加warp变换的效果非常明显。
3. 在Net1模型中引入辅助损失函数能带来明显优势。
4. 固定网1与训练网2结合施加warp变换后的配置在Sintel数据集上取得了最优结果。
2.2 Stacking Multiply Diverse Networks
文章在这里不仅引入了FlowNetS和 FlowNetC两种主流模型,在此基础上又增加了每层通道数仅为 3/8 的 FlowNetc 和 FlowNets(分别以小写字母 s 和 c 标记),其中前者的通道数为 3/8。

本小节开展的实验训练采用Chairs->Things3D的方法进行,并在网络系统中采取逐个安排的方式进行训练

CSS采用FlowNetC+中的2个FlowNetS架构(即每个FlowNetC+包含2个FlowNetS),在其他模块中亦是如此;由此可知,在总参数量较少的情况下(尽管总参数量较少),两个小网络的表现优于单个大网络。
2.3 Small Displacement
在实际应用中发现使用Chairs 及Things3D数据集的效果并不理想,在模型训练过程中发现其与真实场景之间的差异较大导致模型在实际应用中表现欠佳于是作者针对性地创建了一个新的数据集 ChairsSDHom
2.4 Fusion Net
最终采用了将之前的FlowNetCSS-ft-sd及FlowNet-SD的结果进行了整合与结合

3 实验
随便看看就可以了



