FlowNet 2.0 Evolution of Optical Flow Estimation with Deep Networks

2024-02-04 21:59

本文主要是介绍FlowNet 2.0 Evolution of Optical Flow Estimation with Deep Networks,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Abstract

FlowNet算法证明了光流计算可以被转换为学习问题。在小位移以及现实场景之下,flownet还无法与传统方法比较。 本文提出了3点改进:在训练的不同阶段使用不同的训练集是重要的。第二:提出了warp操作,使用中间预测出来的粗光流应用于第二张图片之上。第三:使用一个子模块专门处理小位移。

Introduction

由Dosovitskiy et al.(A. Dosovitskiy, P. Fischer, E. Ilg, P. Häusser, C. Hazırba¸s,V. Golkov, P. v.d. Smagt, D. Cremers, and T. Brox. Flownet:Learning optical flow with convolutional networks.)等人设计的FlowNet使得对于光流的计算有了一种全新的思路:即使用简单的卷积神经网络(CNN)体系结构直接从数据中学习光流概念,这一想法与所有已建立的变分法完全不同。FlowNet2.0是对现有的flownet模型的巩固与提升。flownet2.0继承了原始flownet的优点,如:匹配大位移,对于光流场细节的把控,能学习特定场景的先验知识等。与此同时,解决了原始flownet中小位移、多伪影(noisy artifacts)的复杂情况。在堆叠多个网络的同时使用变形操作可以有效改善网络的性能。创建了一份新的数据集与一个特定的网络,使用此数据训练的网络能够有效处理小位移情况,在最后,创建一个网络,这个网络的功能为融合处理小位移的网络与之前的网络。

Related Work

FLownet之后也有很多论文使用cnn预测光流,然后并没有达到flownet的精度。还有一种替代选择就是使用块匹配,能达到良好的精度,但是需要exhaustive matching of patches,并且速度非常慢,且基于小块的方法存在固有的不足:无法使用整张图片的信息。

用来预测像素级任务的cnn通常会产生噪声以及模糊现象。可以通过现成的方法来优化CNN网络的预测(对于光流预测来说,可以使用变分法来优化)。warp层的作用为:补偿在第二幅图像中已经估计到的一些初步运动,在Lucas & Kanade的(An iterative image registration technique with an application to stereo vision.)中首次提出,并广泛应用于各种变分光流计算中。

将机器学习模型训练成一系列逐渐增加的任务的策略称为课程学习(Curriculum learning论文)。

 Dataset Schedules

最初的FlowNets是在flyingchair数据集上训练的(我们称之为chair)。这个相当简单的数据集包含了大约22k张椅子的图像对,它们叠加在Flickr上的随机背景图像上。将随机仿射变换应用于椅子和背景,得到第二幅图像和地面真实流场。数据集只包含平面运动。

 flyingthing3d(A large dataset to trainconvolutional networks for disparity, optical flow, and scene Flow estimation.)可以想象成3D版本的椅子,与椅子相比,这些图像显示了真实的3D运动和灯光效果,而且物体模型的多样性也更多。

使用椅子训练再用things3D微调的网络效果最好,我们推测,更简单的椅数据集可以帮助网络学习颜色匹配的一般概念,而不会过早地开发出3D运动和现实照明的混淆先验知识。只单单使用这种策略,就可以使得flownets提高25%,flownetc提高30%。

Stacking Networks

Stacking Two Networks for Flow Refinement

在堆叠结构中,第一层的输入为图片的第一帧与第二帧I_{1},I_{2},输出光流w_{i}。第二层中的输入为I_{1}I_{2}w_{i}。为了使得评价之前的误差以及计算增量更新变得更为容易,通过对I_{2}进行变形得到(加上w_{i}的同时使用的双线性插值)

经过实验如下图,固定住net1的权重,随机初始化net2的值,然后使用s_{long}策略,使用椅子数据集来训练net2可以得到最好的效果。

Stacking Multiple Diverse Networks

 我们进行了这个实验,发现多次使用相同权重的网络堆叠并对这个重复部分进行微调并不能改善结果

堆叠的时候,因为flownet的Siamese structure比较难处理,所以只把flownet放在第一层。

每一个新的网络都是先固定住之前的网络,在用S_{long}在椅子上训练,然后用S_{fine}(椅子->Things3D)。发现CSS效果最好

并且可以使通道数下降,以使得 速度与精度之间取折中。

 Small Displacements

 5.1. Datasets

UCF101数据集中的运动通常小于一个像素点,因此我们创建一个数据集,就是椅子数据集的风格,但是里面包含的运动都是小位移的运动,运动直方图也与UCF101非常类似,把这种数据集称为ChairsSDHom。

5.2. Small Displacement Network and Fusion

 在FlowNet-CSS上微调网络(具体情况为在整个网络结构上使用Things3D与ChairsSDHom的混合数据集训练,并对误差应用非线性以降低大位移的比例)为了使得网络能够处理小位移情况。发现提升了处理小位移的效果,但是没有降低大位移下的表现。此网络称为FlowNet2-CSS-ft-sd

然而,在subpixel运动的情况下,噪声仍然是一个问题,我们推测出flownet不擅长处理这种问题。为了解决这个问题,对flownets进行一些小小的改动,把第一层的stride=2去除,并把初始的7x7,5x5滤波器改为多个3x3滤波器,使得网络更深。因为对于小位移来说,噪声会称为一个大问题,所以在 upconvolutions层中添加了卷积操作来获得更平滑的光流估计。此网络称为FlowNet2-SD;
最后创建一个网络把FlowNet2-CSS-ft-sd与FlowNet2-SD融合,这个网络接受the flows, the flow magnitudes and the errors in brightness after warping as input.这个融合层先把分辨率降低两倍,然后提升至全分辨率。最后发现可以产生清晰的运动边界,小位移以及大位移同样出色。

 

这篇关于FlowNet 2.0 Evolution of Optical Flow Estimation with Deep Networks的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/678915

相关文章

GNSS CTS GNSS Start and Location Flow of Android15

目录 1. 本文概述2.CTS 测试3.Gnss Flow3.1 Gnss Start Flow3.2 Gnss Location Output Flow 1. 本文概述 本来是为了做Android 14 Gnss CTS 的相关环境的搭建和测试,然后在测试中遇到了一些问题,去寻找CTS源码(/cts/tests/tests/location/src/android/locat

OpenGL ES 2.0渲染管线

http://codingnow.cn/opengles/1504.html Opengl es 2.0实现了可编程的图形管线,比起1.x的固定管线要复杂和灵活很多,由两部分规范组成:Opengl es 2.0 API规范和Opengl es着色语言规范。下图是Opengl es 2.0渲染管线,阴影部分是opengl es 2.0的可编程阶段。   1. 顶点着色器(Vert

Python中差分进化differential_evolution的调用及参数说明

在场景应用中,要求我们的函数计算结果尽可能的逼近实际测量结果,可转化计算结果与测量结果的残差,通过最小化残差,便可求出最优的结果。但使用最小二乘等方法来计算时,常常会使迭代的结果显然局部最优点而导致结算错误。 差分进化原理 差分进化(Differential Evolution,DE)是一种基于群体差异的进化算法,其计算思想主要包括以下几个方面: 一、初始化种群 首先,随机生成一个初始种群

QT项目实战之音乐播放器2.0版本

该版本相较于1.0版本最主要的不同在于连接数据库实现类似于歌曲收藏和取消收藏的功能。 详细情况看我的这篇文章http://t.csdnimg.cn/WS5s8。 效果展示 VSMyMusicShow2.0 define.h UseMySQL.h   musicInfo.h   VSMyMusicPlayer.h

Understanding the GitHub Flow

这里看下Github的入门介绍    --链接 GitHub Flow is a lightweight, branch-based workflow that supports teams and projects where deployments are made regularly. This guide explains how and why GitHub Flow works

MemSQL Start[c]UP 2.0 - Round 1A(构造)

题目链接:http://codeforces.com/problemset/problem/452/A 解题思路: 打个表暴力查找匹配。 完整代码: #include <algorithm>#include <iostream>#include <cstring>#include <complex>#include <cstdio>#include <strin

A Comprehensive Survey on Graph Neural Networks笔记

一、摘要-Abstract 1、传统的深度学习模型主要处理欧几里得数据(如图像、文本),而图神经网络的出现和发展是为了有效处理和学习非欧几里得域(即图结构数据)的信息。 2、将GNN划分为四类:recurrent GNNs(RecGNN), convolutional GNNs,(GCN), graph autoencoders(GAE), and spatial–temporal GNNs(S

Deep Ocr

1.圈出内容,文本那里要有内容.然后你保存,并'导出数据集'. 2.找出deep_ocr_recognition_training_workflow.hdev 文件.修改“DatasetFilename := 'Test.hdict'” 310行 write_deep_ocr (DeepOcrHandle, BestModelDeepOCRFilename) 3.推理test.hdev

【深度学习 走进tensorflow2.0】TensorFlow 2.0 常用模块tf.config

无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。人工智能教程 本篇文章将会教大家如何 合理分配显卡资源,设置显存使用策略。主要使用tf.config模块进行设置。下面我们一起了解下具体用法和例子。 一、指定当前程序使用的 GPU 例如,在一台具有 4 块 GPU 和一个 C

Versioned Staged Flow-Sensitive Pointer Analysis

VSFS 1.Introduction2.Approach2.1.相关概念2.2.VSFS 3.Evaluation参考文献 1.Introduction 上一篇blog我介绍了目前flow-sensitive pointer analysis常用的SFS算法。相比IFDS-based方法,SFS显著通过稀疏分析提升了效率,但是其内部依旧有许多冗余计算,留下了很大优化空间。 以