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

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 本文介绍了一种高效的光流估计方法——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

相关文章
|
数据可视化 PyTorch 算法框架/工具
No module named ‘tensorboard‘ 解决方法
No module named ‘tensorboard‘ 解决方法
2364 0
|
24天前
|
机器学习/深度学习 自然语言处理 安全
从零构建车载语音对话系统:NLU → DST → Policy → NLG → TTS 全链路工程实践
本文详解车载语音助手全链路工程实践,涵盖NLU(意图识别+槽位抽取)、DST(多轮状态追踪)、Policy(安全驱动决策)、NLG(模板化自然语言生成)与TTS(双引擎语音合成)五大模块,基于Pipeline架构实现高可解释、可调试、强安全的工业级Demo,代码开源、开箱即用。(239字)
|
算法 PyTorch 算法框架/工具
Pytorch学习笔记(九):Pytorch模型的FLOPs、模型参数量等信息输出(torchstat、thop、ptflops、torchsummary)
本文介绍了如何使用torchstat、thop、ptflops和torchsummary等工具来计算Pytorch模型的FLOPs、模型参数量等信息。
3376 2
|
存储 人工智能 算法
【AI系统】计算图的优化策略
本文深入探讨了计算图的优化策略,包括算子替换、数据类型转换、存储优化等,旨在提升模型性能和资源利用效率。特别介绍了Flash Attention算法,通过分块计算和重算策略优化Transformer模型的注意力机制,显著减少了内存访问次数,提升了计算效率。此外,文章还讨论了内存优化技术,如Inplace operation和Memory sharing,进一步减少内存消耗,提高计算性能。
1098 34
【AI系统】计算图的优化策略
|
机器学习/深度学习 人工智能 vr&ar
光流法相关论文-LK光流法,HS光流法,Farneback光流法,FlowNet: 端到端的深度光流估计, RAFT: 结构化的光流估计
光流法相关论文-LK光流法,HS光流法,Farneback光流法,FlowNet: 端到端的深度光流估计, RAFT: 结构化的光流估计
1638 0
|
监控 安全 应用服务中间件
网站出现“SSL handshake failed“?SSL握手失败(525)的错误修复指南
本文详细解析了Cloudflare中常见的SSL握手失败(525)错误,从问题定义到根源分析,再到具体解决方案,提供了一站式修复指南。通过检查证书域名匹配、有效性及时钟同步等问题,结合Nginx/Apache配置调整与Cloudflare设置优化,帮助用户彻底解决525错误。同时,文章还提供了预防措施,如自动续期和SSL状态监控,确保网站长期稳定运行。跟随步骤操作,可有效避免SSL相关故障,保障网站安全访问。
9323 0
网站出现“SSL handshake failed“?SSL握手失败(525)的错误修复指南
|
编解码 计算机视觉
mmseg配置解析 align_corners=False
`align_corners=False` 是图像插值操作中的一个参数,影响输入和输出图像的角点对齐方式。`align_corners=True` 严格对齐角点,而 `align_corners=False` 均匀分布像素点,更适用于保持整体比例关系的任务,如语义分割。
529 0
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)