【入门向】光流法(optical flow)基本原理+深度学习中的应用【FlowNet】【RAFT】

这篇具有很好参考价值的文章主要介绍了【入门向】光流法(optical flow)基本原理+深度学习中的应用【FlowNet】【RAFT】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 理论背景

1.1 光流

光流(optical flow)是空间运动物体在成像平面上的像素运动的瞬时速度
通常将一个描述点的瞬时速度的二维矢量 u ⃗ = ( u , v ) \vec u = (u,v) u =(u,v)称为光流矢量。

1.2 光流场

空间中的运动场转移到图像上就表示为光流场(optical flow field)。

  1. 光流场是很多光流的集合;
  2. 构建光流场是试图重建运动场,进行运动分析,理想情况下,光流场对应于运动场。

2. 基本原理

2.1 假设条件

1. 像素亮度恒定不变
同一像素点在不同帧中的亮度是不变的,这是光流法使用的基本假定(所有光流法及其变种都必须满足),从而可以得到2.2中的约束方程。

2. 时间连续/运动很微小
时间的变化不会引起目标位置的剧烈变化,即相邻帧之间的位移很小。

2.2 约束方程

I ( x , y , t ) = I ( x + d x , y + d y , t + d t ) ( 1 ) I(x,y,t)=I(x+\mathrm d x, y+\mathrm d y, t+\mathrm d t) \qquad(1) I(x,y,t)=I(x+dx,y+dy,t+dt)(1)对右式进行泰勒展开 = I ( x , y , t ) + ∂ I ∂ x d x + ∂ I ∂ y d y + ∂ I ∂ t d t + ϵ =I(x,y,t)+\frac {\partial I}{\partial x}\mathrm d x+\frac {\partial I}{\partial y}\mathrm d y+\frac {\partial I}{\partial t}\mathrm d t+\epsilon =I(x,y,t)+xIdx+yIdy+tIdt+ϵ其中, ϵ \epsilon ϵ是二阶无穷小,可以忽略不计。将 ( 1 ) (1) (1)式左右两侧同除 d t \mathrm dt dt可以得到下式: ∂ I ∂ x d x d t + ∂ I ∂ y d y d t + ∂ I ∂ t d t d t = 0 ( 2 ) \frac {\partial I}{\partial x} \frac {\mathrm dx}{\mathrm dt}+\frac {\partial I}{\partial y} \frac {\mathrm dy}{\mathrm dt}+\frac {\partial I}{\partial t} \frac {\mathrm dt}{\mathrm dt}=0 \qquad(2) xIdtdx+yIdtdy+tIdtdt=0(2)此处我们做以下人为规定: { ∂ I ∂ x = I x ∂ I ∂ x = I y ∂ I ∂ x = I t ( 3 ) d x d t = u d y d t = v \begin{cases} \frac {\partial I}{\partial x}=I_x\\ \frac {\partial I}{\partial x}=I_y\\ \frac {\partial I}{\partial x}=I_t \qquad(3)\\ \frac {\mathrm dx}{\mathrm dt}=u\\ \frac {\mathrm dy}{\mathrm dt}=v \end{cases} xI=IxxI=IyxI=It(3)dtdx=udtdy=v ( 3 ) (3) (3)带入 ( 2 ) (2) (2)中,得到: I x u + I y v + I t = 0 ( 4 ) I_x u+I_y v +I_t=0 \qquad(4) Ixu+Iyv+It=0(4)其中 I x I_x Ix, I y I_y Iy均可以由图像求得, ( u , v ) (u,v) (u,v)即为光流矢量。

约束方程有一个,但未知量有两个,因此需要引入额外的约束条件,从不同角度引入约束也就产生了不同的光流计算方法。

3. 光流估计方法

3.1 思路概述

① 基于梯度的方法(微分法)
利用时变图像灰度的时空微分(时空梯度函数)来计算像素的速度矢量。

② 基于匹配的方法
有基于特征和基于区域两种。

  • 基于特征的方法是对目标特征进行定位和跟踪,目标大的运动和亮度具有更好的鲁棒性。
  • 基于区域的方法是对类似的区域进行定位,通过相似区域的位移计算光流。

③ 基于能量的方法(频率)
要获得均匀光流场的准确的速度估计,必须对输入图像进行时空滤波处理,即对时间和空间进行整合。

④ 基于相位的方法
由Fleet和Jepon最先提出,将相位信息用于光流的计算。

⑤ 神经动力学方法
利用神经网络建立的视觉运动感知的神经动力学模型是对生物视觉系统功能与结构较为直接的模拟。

3.2 优缺点对比

方法 优点 缺点
基于梯度 计算简单,结果较好 对于变化需“平滑”的要求较高
基于匹配(特征) 对目标大的运动和亮度变化具有鲁棒性 特征的提取和精准匹配困难,估计亚像素精度的光流困难,计算量大
基于匹配(区域) 适用于视频编码 光流不稠密,估计亚像素精度的光流困难,计算量大
基于能量 运算思路简单 光流的时间和空间分辨率被降低,需要可靠结果的计算量大
基于相位 相位信息更加可靠,获得的光流场具有更好的鲁棒性 时间复杂性高,精度的提高需要消耗大量时间,对图像序列的时间混叠敏感
神经动力学 对生物视觉系统的直接模拟 方法仍不成熟

4. 稠密光流和稀疏光流

4.1 稠密光流

逐点匹配,计算图像上所有点的偏移量,形成一个稠密的光流场。

4.2 稀疏光流

指定的一组点(最好是具有某种明显的特征,也就是利用上文“基于特征的方法”)进行跟踪。

4.3 优缺点对比

光流类型 优点 缺点
稠密光流 配准的精准度高,效果好 由于要计算每个像素点的偏移量,计算量大,时效性差
稀疏光流 计算量小 需要被跟踪的点具有较为明显的特征

5. 光流法在深度学习中的应用

5.1 FlowNet

《FlowNet: Learning Optical Flow with Convolutional Networks》
此架构由FlowNetS(Simple) 和FlowNetCorr两种,结构均类似U-Net:
【入门向】光流法(optical flow)基本原理+深度学习中的应用【FlowNet】【RAFT】

5.1.1 FlowNetS编码器

【入门向】光流法(optical flow)基本原理+深度学习中的应用【FlowNet】【RAFT】

输入为两相邻帧图像,通道数为6,前3是前一帧图,后3是后一帧图。该架构允许网络自行决定如何处理两个相堆叠的图像。

5.1.2 FlowNetCorr编码器

【入门向】光流法(optical flow)基本原理+深度学习中的应用【FlowNet】【RAFT】

只接受一帧作为输入,第一阶段CNN的权值共享,从两帧图像中计算出两个特征映射 f 1 \mathbf f_1 f1 f 2 \mathbf f_2 f2

FlowNetCorr与前者最大的区别就是引入了一种叫“相关层”的新技术,相关性的计算是乘法补丁比较(multiplicative patch comparisons),给定两个多通道特征图 f 1 , f 2 : R 2 → R c \mathbf f_1, \mathbf f_2 : \Bbb R^2 \to \Bbb R^c f1,f2:R2Rc,其中 w , h , c w,h,c w,h,c分别表示宽度、高度和通道数,将两个特征映射进行乘法块比较,计算公式为: c ( x 1 , x 2 ) = ∑ o ∈ [ − k , k ] × [ − k , k ] ⟨ f 1 ( x 1 + o ) , f 2 ( x 2 + o ) ⟩ ( 5 ) c(\mathbf x_1, \mathbf x_2) = \sum _{\mathbf o \in [-k,k] \times [-k,k]} \langle \mathbf f_1(\mathbf x_1 +\mathbf o), \mathbf f_2(\mathbf x_2+\mathbf o)\rangle \qquad(5) c(x1,x2)=o[k,k]×[k,k]f1(x1+o),f2(x2+o)(5)方块图尺寸为 K : = 2 K + 1 K:=2K+1 K:=2K+1,公式 ( 5 ) (5) (5)的计算实际上就是卷积运算,只不过这里的卷积核是不可训练的,而是用已设定好的权重参数进行卷积运算。

值得一提的是,两幅特征图并没有做全局关联,而是在局部上进行运算。在特征图匹配完成后,相关结果前向传播到后续卷积层,进一步提取更顶层的特征。

5.1.3 FlowNetS和FlowNetCorr解码器

为了既保留从较粗的特征图中传递的高层信息,又保留较低层的精细局部信息,作者设计了下图:
【入门向】光流法(optical flow)基本原理+深度学习中的应用【FlowNet】【RAFT】
编码器输出特征图的分辨率缩小为原始图像的 1 64 \frac 1{64} 641,在解码器中使用可训练的上采样卷积层,每个解码阶段将上一阶段的放大结果和编码器相应层的特征图连接起来,这样有助于网络预测细节。
使用的上采样方法为计算成本较低的双线性上采样

5.2 RAFT

《RAFT: Recurrent All-Pairs Field Transforms for Optical Flow》 RAFT代码
与FlowNet类似,RAFT架构同样有两种:RAFT和RAFT-S,后者是其轻量级版本。

RAFT由三个主要部分构成:

  1. 一个特征提取器,为每个像素提取出一个特征向量;
  2. 一个相关层,为所有像素对产生一个四维“相关体积”,随后汇集产生一个较低分辨率的“体积”;
  3. 一个基于GRU的循环更新运算器,从“相关体积”中检索数值并迭代更新光流场。

接下来,对这三个部分进行详细介绍。

5.2.1 特征提取

编码特征提取 g θ g_{\theta} gθ输入类似于FlowNetCorr,也是分别输入两个连续帧图像,从图像中分别提取特征。卷积构架由6个残差层组成(同ResNet)。
【入门向】光流法(optical flow)基本原理+深度学习中的应用【FlowNet】【RAFT】
另外,作者还引入了一个上下文网络,上下文网络仅仅从第一张输入图像中提取特征,网络结构 h θ h_{\theta} hθ和前面的 g θ g_{\theta} gθ是一样的。

特征提取模块由编码特征提取 g θ g_{\theta} gθ和上下文网络 h θ h_{\theta} hθ两部分共同阻证,两者均只执行一次。

5.2.2 视觉相似性计算

视觉相似性计算的是所有特征图对的内积,从而得到一个名为“相关体积”的四维张量,其中包含了关于大小像素位移的关键信息。
【入门向】光流法(optical flow)基本原理+深度学习中的应用【FlowNet】【RAFT】
与FlowNetCorr的相关层不同,此处计算的是两个特征图的全局相关性,没有任何固定大小的窗口,可以用下式表示: C i j k l = ∑ d f 1 i j d ⋅ f 2 k l d ( 6 ) \mathrm C_{ijkl} = \sum_d \mathbf {f_1}_{ijd} \cdot \mathbf {f_2}_{kld} \qquad(6) Cijkl=df1ijdf2kld(6)将四维张量的后两维使用大小分别为 1 , 2 , 4 , 8 1,2,4,8 1,2,4,8的核进行池化,形成相关金字塔。利用相关金字塔建立多尺度图像相似性特征,使突变运动更为明显,也同时提供了关于大位移和小位移的信息。

5.2.3 迭代更新

使用一个门控循环单元(GRU)序列,来结合之前获取的所有数据。
【入门向】光流法(optical flow)基本原理+深度学习中的应用【FlowNet】【RAFT】

更新算子从初始值 f 0 = 0 \mathbf f_0 = 0 f0=0开始估计一连串的光流值 { f 1 , . . . , f N } \{\mathbf f_1, ..., \mathbf f_N\} {f1,...,fN}。每次迭代产生一个更新方向 Δ f \Delta \mathbf f Δf,并应用于当前估计值: f k + 1 = Δ f + f k + 1 \mathbf f_{k+1}=\Delta \mathbf f+\mathbf f_{k+1} fk+1=Δf+fk+1

5.3 RAFT和RAFT-S的区别

【入门向】光流法(optical flow)基本原理+深度学习中的应用【FlowNet】【RAFT】
在RAFT-S中用瓶颈残差单元(bottleneck residual units) 取代残差单元;RAFT使用两个GRU更新块,大小分别为 1 × 5 1 \times 5 1×5 5 × 1 5 \times 1 5×1,RAFT-S只使用一个GRU更新块,大小为 3 × 3 3 \times 3 3×3
图中可以看到两者的运算量还是有比较大的区别。

参考博客:

计算机视觉–光流法(optical flow)简介

OpenCV进阶(2)OpenCV中的光流

RAFT:使用深度学习的光流估计文章来源地址https://www.toymoban.com/news/detail-409087.html

到了这里,关于【入门向】光流法(optical flow)基本原理+深度学习中的应用【FlowNet】【RAFT】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度学习的基本原理和算法

    深度学习的基本原理、算法和神经网络的基本概念是人工智能领域中非常重要的部分,下面我将分别深入解释这些内容。 深度学习的基本原理 深度学习的基本原理在于使用深层神经网络来模拟人脑神经元的连接方式,从而实现对复杂数据的分析和处理。它依赖于大量的数据

    2024年02月21日
    浏览(39)
  • 【视觉SLAM】ORB-SLAM2S: A Fast ORB-SLAM2 System with Sparse Optical Flow Tracking

    Citations: Y. Diao, R. Cen, F. Xue.ORB-SLAM2S: A Fast ORB-SLAM2 System with Sparse Optical Flow Tracking[C].2021 13th International Conference on Advanced Computational Intelligence (ICACI). Wanzhou,China.2021:160-165. Keywords: Visualization,Simultaneous localization and mapping,Cameras,Real-time systems,Aircraft navigation,Central Processing Unit,Traje

    2023年04月08日
    浏览(68)
  • AI入门之深度学习:基本概念篇

    1、什么是深度学习 1.1 机器学习 图1:计算机有效工作的常用方法:程序员编写规则(程序),计算机遵循这些规则将输入数据转换为适当的答案。这一方法被称为符号主义人工智能,适合用来解决定义明确的逻辑问题,比如早期的PC小游戏:五子棋等,但是像图像分类、语

    2024年03月18日
    浏览(59)
  • 【深度学习模型】扩散模型(Diffusion Model)基本原理及代码讲解

    生成式建模的扩散思想实际上已经在2015年(Sohl-Dickstein等人)提出,然而,直到2019年斯坦福大学(Song等人)、2020年Google Brain(Ho等人)才改进了这个方法,从此引发了生成式模型的新潮流。目前,包括OpenAI的GLIDE和DALL-E 2,海德堡大学的Latent Diffusion和Google Brain的ImageGen,都基

    2023年04月22日
    浏览(50)
  • ChatGPT原理——————深度学习入门知识

    随着ChatGPT的爆火,ChatGPT的原理 ————深度学习这门技术也越来越被人们所重视。很多人都开启了学习深度学习的路程程,本文将详细介绍深度学习的知识。 定义:深度学习是机器学习的一种,它利用包含多层结构的神经网络模型来建模和解决复杂的问题。深度学习模型可

    2023年04月24日
    浏览(49)
  • 稀疏光流法跟中移动物体、监督学习聚类、K均值聚类、加载深度神经网络模型、深度神经网络模型的使用

    目录 1、稀疏光流法跟中移动物体 2、监督学习聚类 3、K均值聚类 4、加载深度神经网络模型 5、深度神经网络模型的使用          

    2024年02月16日
    浏览(48)
  • 网络协议从入门到底层原理学习(一)—— 简介及基本概念

    一、简介 1、网络协议的定义 什么是网络协议? 网络协议是由定义网络上两个或多个设备之间通信的规则、过程和格式组成的正式标准和策略 它们确保计算机网络设备可以使用一种通用语言传输和接收数据,而不管它们的设计、硬件或基础设施如何。 网络协议管理及时、安全

    2024年02月09日
    浏览(52)
  • 《计算机视觉中的深度学习》之目标检测算法原理

    参考:《计算机视觉中的深度学习》 目标检测的挑战: 减少目标定位的准确度 减少背景干扰 提高目标定位的准确度 目标检测系统常用评价指标:检测速度和精度 提高精度:有效排除背景,光照和噪声的影响 提高检测速度:精简检测流程,简化图像处理算法 算法概述:传

    2024年03月27日
    浏览(63)
  • 深度学习疆界:探索基本原理与算法,揭秘应用力量,展望未来发展与智能交互的新纪元

    目录 什么是深度学习 深度学习的基本原理和算法 深度学习的应用实例 深度学习的挑战和未来发展方向 挑战 未来发展方向 深度学习与机器学习的关系 深度学习与人类的智能交互 深度学习是 一种基于神经网络的机器学习方法,旨在模仿人类大脑分析和学习数据的方式 。 深

    2024年02月20日
    浏览(46)
  • 第二章:AI大模型的基本原理2.2 深度学习基础2.2.3 循环神经网络

    循环神经网络(Recurrent Neural Networks,RNN)是一种特殊的神经网络结构,它可以处理序列数据,如自然语言、时间序列预测等。RNN的核心特点是包含反馈连接,使得网络具有内存功能,可以在处理序列数据时保留以前的信息。这一特性使得RNN成为处理自然语言和时间序列数据的

    2024年01月16日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包