Paper Reading | 一种高效的光流估计方法——NeuFlow v2

简介: 本文介绍了一种高效的光流估计方法——NeuFlow v2。

魔搭论文板块全新上线! 作为社区内汇总人工智能技术领域最新学术研究成果的专属功能区域,它不仅提供论文列表及链接,还附加每篇论文的摘要概述与核心亮点,致力于帮助社区用户迅速把握各项研究的核心价值与创新之处。 通过每日更新的论文板块,用户能够及时掌握AI技术的最新研究动态、大模型的最新进展、数据集应用的创新实践,以及AI技术跨界应用的前沿成果,助力探索智能科技的无限可能。

论文标题:

NeuFlow v2: High-Efficiency Optical Flow Estimation on Edge Devices

论文链接:

https://modelscope.cn/papers/43893/overview

模型链接:

https://modelscope.cn/models/z878570312/NeuFlow_v2

论文解读

本文介绍了一种高效的光流估计方法——NeuFlow v2。光流估计在现实世界中有许多应用,但是传统的计算密集型方法难以满足实时性和准确性的需求。本文作者通过引入更轻量级的骨干网络和快速精炼模块,实现了高精度和低计算成本之间的平衡。与现有的最优方法相比,该模型具有10倍到70倍的速度优势,并且在合成数据和真实数据上都表现出与最优方法相当的性能。该模型可以在Jetson Orin Nano上以每秒超过20帧的速度运行。作者提供了完整的训练和评估代码供读者参考。

image.png

方法描述

具体来说,NeuFlow v2包括以下几个关键步骤:

  1. 简单的骨干网络提取特征:本文避免使用耗时的ResNet或是FPN,而是研发了轻量级的骨干网络来提取特征。该方法使用了一个简单的卷积神经网络结构来提取图像的低级特征。该网络在1/2、1/4和1/8倍尺度下分别提取低级特征,并将这些特征通过少量卷积得到最终的特征表示。
  2. 全局匹配和局部微调:该方法首先使用基于transformer的全局匹配来获得初始的光流估计值,然后通过多次迭代来进一步优化这个估计值。具体来说,在每次迭代中,该方法会计算出相邻像素之间的相关性,并将相关性与上下文信息以及之前的隐状态向量结合起来,经过多个卷积层的处理后得到更新后的隐状态向量和光流估计值。
  3. RNN快速微调模块:我们提出了一个更简单的 RNN 模块,能够输出隐状态向量和微调后的光流。该模块计算量小,效率高,可实现更高精度的局部微调,而不是使用耗时的 LSTM 或 GRU等常用模块。

方法改进

相比于之前的版本(NeuFlow v1),该方法主要进行了以下两个方面的改进:

  1. 精简网络结构:该方法去除了冗余部分,只保留了有效的组件。这样做的目的是为了提高模型的效率和准确性。
  2. 引入了CNN块:该方法引入了一个由卷积、归一化和ReLU层组成的CNN块,用于提取多尺度图像的特征。该CNN块不仅能够有效地捕捉到不同尺度下的特征信息,还能够在不增加参数数量的情况下提高模型的表现力。

解决的问题该方法主要解决了光学流估计中的两个问题:

  • 基于深度学习的光流估计精度较高,但速度太慢,无法在边缘计算设备上实时运行。传统光流估计方法则精度不足。我们在保持最高精度的同时达到了10到70倍的加速,实现了在边缘设备上实时运行。

论文实验

本文还介绍了NeuFlow v2的实验结果和与其他光流方法的比较。在实验中,作者使用了FlyingThings、Sintel、KITTI等数据集进行了训练和测试,并对模型的准确度、速度以及内存占用等方面进行了评估。

首先,作者将NeuFlow v2与Sea-Raft-Large、Sea-Raft-Medium、NeuFlow v2、RPKNet、DIP、FlowFormer、GMFlow、RapidFlow等其他光流方法进行了比较。在计算时间方面,NeuFlow v2在RTX 2080和Jetson Orin Nano上均表现出色,而且相对于其他重模型如RPKNet和FlowFormer来说,NeuFlow v2的速度更快,但精度相近。在准确度方面,NeuFlow v2在Sintel和KITTI数据集上的表现都相对较好,特别是相对于Sea-Raft-Large和Sea-Raft-Medium等模型,在Sintel数据集上的表现更加稳定。

接下来,作者还进行了一系列的Ablation Study(剪枝实验),以进一步优化NeuFlow v2的性能。具体包括:

  1. Backbone Module(骨干模块):作者发现,使用全尺度图像特征并没有提高精度,反而会导致一些性能下降的情况。
  2. Refine Module(微调模块):作者通过增加或减少CNN层的数量来观察其对精度的影响。结果显示,减少层数会略微降低准确性,而添加更多的层数并不会显著提高准确性。因此,作者选择了8个CNN层作为最佳配置。
  3. Architecture(架构):作者使用了Cross-attention来交换两张图像之间的全局信息,去除它不会显著影响Kitti数据集上的准确性,但在Sintel数据集上会造成较大的性能下降。此外,作者还发现去除全局匹配,并相应添加1/16尺度的微调迭代次数,会使模型推理时间变长,并导致验证集上的准确性小幅下降。
  4. Different Iterations(不同迭代次数):作者发现在1/16次迭代中的默认迭代次数为一次,因为额外的迭代并不能显著提高准确性。相比之下,1/8次迭代可以从更多迭代中受益,虽然增加了推理时间,但也可以进一步提高准确性。

本文通过一系列的实验和分析,证明了NeuFlow v2在光学流领域的优越性能,特别是在速度和准确性方面的平衡表现。同时,作者也为后续的研究提供了有价值的参考和启示。

最佳实践

在魔搭社区免费提供的GPU免费算力上可体验NeuFlow v2:

image.png

!git clone https://github.com/neufieldrobotics/NeuFlow_v2.git
%cd NeuFlow_v2
!python infer.py

results:


点击链接👇直达模型~

https://modelscope.cn/models/z878570312/NeuFlow_v2?from=alizishequ__text

相关文章
|
4月前
|
机器学习/深度学习 数据采集 监控
算法金 | DL 骚操作扫盲,神经网络设计与选择、参数初始化与优化、学习率调整与正则化、Loss Function、Bad Gradient
**神经网络与AI学习概览** - 探讨神经网络设计,包括MLP、RNN、CNN,激活函数如ReLU,以及隐藏层设计,强调网络结构与任务匹配。 - 参数初始化与优化涉及Xavier/He初始化,权重和偏置初始化,优化算法如SGD、Adam,针对不同场景选择。 - 学习率调整与正则化,如动态学习率、L1/L2正则化、早停法和Dropout,以改善训练和泛化。
46 0
算法金 | DL 骚操作扫盲,神经网络设计与选择、参数初始化与优化、学习率调整与正则化、Loss Function、Bad Gradient
|
6月前
|
算法 Linux Python
R语言BUGS序列蒙特卡罗SMC、马尔可夫转换随机波动率SV模型、粒子滤波、Metropolis Hasting采样时间序列分析
R语言BUGS序列蒙特卡罗SMC、马尔可夫转换随机波动率SV模型、粒子滤波、Metropolis Hasting采样时间序列分析
|
6月前
|
前端开发
数据分享|R语言零膨胀泊松回归ZERO-INFLATED POISSON(ZIP)模型分析露营钓鱼数据实例估计IRR和OR
数据分享|R语言零膨胀泊松回归ZERO-INFLATED POISSON(ZIP)模型分析露营钓鱼数据实例估计IRR和OR
|
6月前
R语言POT超阈值模型和极值理论EVT分析
R语言POT超阈值模型和极值理论EVT分析
|
6月前
|
前端开发
R语言用HESSIAN-FREE 、NELDER-MEAD优化方法对数据进行参数估计
R语言用HESSIAN-FREE 、NELDER-MEAD优化方法对数据进行参数估计
|
6月前
|
资源调度 数据可视化 Python
Python随机波动模型Stochastic volatility,SV随机变分推断SVI分析标普500指数时间数据波动性可视化
Python随机波动模型Stochastic volatility,SV随机变分推断SVI分析标普500指数时间数据波动性可视化
|
6月前
|
机器学习/深度学习 存储 数据可视化
R语言混合效应逻辑回归(mixed effects logistic)模型分析肺癌数据
R语言混合效应逻辑回归(mixed effects logistic)模型分析肺癌数据
|
6月前
POT超阈值模型和极值理论EVT分析
POT超阈值模型和极值理论EVT分析
|
6月前
|
数据可视化
R语言使用链梯法Chain Ladder和泊松定律模拟和预测未来赔款数据
R语言使用链梯法Chain Ladder和泊松定律模拟和预测未来赔款数据
|
6月前
|
机器学习/深度学习 算法 计算机视觉
BEV新SOTA | Sparse4D v3用实例去噪+质量估计+解耦注意力全面提升BEV检测性能
BEV新SOTA | Sparse4D v3用实例去噪+质量估计+解耦注意力全面提升BEV检测性能
140 0