深度学习

光流估计网络---FlowNet1.0

2019-10-06  本文已影响0人  逆风g
  1. 光流估计网络---FlowNet1.0
  2. 光流估计网络---FlowNet2.0

概述

  1. 卷积神经网络(CNNs)已广泛应用于很多计算机视觉任务,例如图片分类(image classification)语义分割(semantic segmentation)深度估计(depth estimation),这篇论文把CNNs应用到光流估计(Optical flow estimation)任务中,并取得不错的效果:
  1. 本文主要工作

Optical Flow

光流(Optical Flow)示意图:


网络结构


作者把网络分为两部分,一是收缩(contracting)部分,二是扩大(expanding)部分。根据收缩部分的不同,可分为两种网络结构,一是FlowNetSimple,简单粗暴,二是FlowNetCorr,用来模拟传统方法中的特征抽取特征匹配两个过程。
  1. FlowNetSimple
    直接把两张输入图片叠加在一块输入到网络中。
  2. FlowNetCorr
    用网络分别对两张输入图片生成各自特征,再利用“correlation layer”来比较两个特征图。
    correlation layer是啥?
    主要是遍历两张图中的像素,和周围像素构成像素块(patch)一起进行乘法操作,这样会有w²·h²个patch相乘,w为特征图宽度,h为特征图高度。我们从网络结构图中可以看到还有开方操作(sqrt),如果两个图中像素块一致,那么开方后会得到原有像素块内容。
    其中每对patch会涉及c·K²个乘法:

    像素块的尺寸为:2k+1
    为了避免太多的乘法操作,匹配像素块时,会设置一个最大位移d,此时只会在待匹配像素点2d+1大小范围内进行块的匹配,而不是遍历另一张图的所有像素点。并且还为两个特征图设置遍历步长,S1S2。这样在一个特征图里的像素点,只会对应在另一张图里2d+1范围内寻找对应像素点,那么会输出w·h·(2d+1)·(2d+1)大小的特征。
    在后续实验中,k=0,d=20,S1=1,S2=2.
  3. Refinement

    这块是扩大部分,主要是用来恢复特征图的细节信息。利用upconvolutional层进行四次2倍的上采样,而收缩部分下采样了6次,所以这里得到的结果会比原来输入尺寸小4倍。当然,作者发现继续使用upconvolutional,对特征图的细节恢复作用已不明显,为了避免更多计算开销,后续使用双线性插值(bilinear upsampling)更好。作者也在论文中提到另一种他人的后处理方式,恢复细节效果会更好,实验中用后缀+v表示:

数据集

作者的实验所涉及的数据集有:


Flying Chairs为作者自己合成的数据集,从一个公开的3D椅子数据集中取出椅子放进Flickr2中的图片背景中,为生成光流,作者对图里的椅子和背景进行了2d仿射变换,得到image pair中的另一张图。合成的图片大小均为512 × 384

数据扩充

数据扩充主要涉及到:translation, rotation and scaling, as well as additive Gaus- sian noise and changes in brightness, contrast, gamma, and color.

实验结果

网络训练用到的loss为endpoint error(EPE),同时也是实验结果的评测指标:


作者在Sintel数据集上使用fine-tune,试验结果用后缀+ft表示,以下为不同数据集上,不同方法的量化指标对比结果:
  1. 即使在Sintel这样复杂的数据集中,作者方法与其它方法也具有可比性。
  2. KITTI数据集中,用Sintel数据集fine-tune后的结果明显要好于没有fine-tune的结果,代表Sintel比作者的Chairs更加真实,有利于网络学习到真实场景的特征;这里可以发现FlowNetS效果要好于FlowNetC。
  3. Flying Chairs数据集中,作者方法效果最好,代表如果在其它真实场景数据集中有足够的训练样本,作者方法效果将会更好。同时作者也发现使用后处理方法,在此数据集上效果并没有得到提升,表示只要给定网络足够的训练样本,网络得到效果将会足够有保证。
  4. 时间性能上,作者在NVIDIA GTX Ti- tan GPU上的速度最快,远超其它几种方法。
  5. 在Sintel Clean和Chairs中FlowNetC效果要比FlowNetS好,而在Sintel Final和KITTI中则反之。一是因为Sintel Final有一些运动造成的模糊,而Sintel Clean和Chairs中没有,作者分析是FlowNetC过拟合的缘故,如果有足够的训练数据,就能解决。二是因为KITTI中物体运动偏移较大,FlowNetC受限于本文上叙的偏移d的大小。
    以下是Sintel数据集上的部分可视化结果对比:


上一篇 下一篇

猜你喜欢

热点阅读