【深度学习 video detect】Towards High Performance Video Object Detection for Mobiles

文章目录

  • 摘要
  • Introduction
  • Revisiting Video Object Detection Baseline
    • Practice for Mobiles
  • Model Architecture for Mobiles
    • Light Flow

摘要

尽管在桌面GPU上取得了视频目标检测的最近成功,但其架构对于移动设备来说仍然过于沉重。目前尚不清楚在非常有限的计算资源下,稀疏特征传播和多帧特征聚合的关键原则是否适用。在本文中,我们提出了一种适用于移动设备的轻量级视频目标检测网络架构。我们在稀疏关键帧上应用了轻量级图像目标检测器。设计了一个非常小的网络,名为Light Flow,用于在帧之间建立对应关系。我们还设计了一个流引导的GRU模块,以有效地聚合关键帧上的特征。

对于非关键帧,进行了稀疏特征传播。整个网络可以端到端地进行训练。所提出的系统在移动设备上(例如华为Mate 8)以25.6 fps的速度在ImageNet VID验证集上实现了60.2%的mAP分数。

在这里插入图片描述

Introduction

近年来,利用深度神经网络进行目标检测取得了显著的进展[1]。一般趋势是构建更深、更复杂的目标检测网络[2,3,4,5,6,7,8,9,10,11],以达到更高的准确性。然而,这些提高准确性的进展未必能使网络在尺寸和速度方面更加高效。在许多实际应用中,如机器人、自动驾驶汽车、增强现实和移动手机等,目标检测任务需要在计算资源有限的平台上实时执行。

最近,越来越多的人开始关注构建非常小、低延迟的模型,以便轻松适应移动和嵌入式视觉应用的设计要求,例如SqueezeNet [12]、MobileNet [13] 和ShuffleNet [14]。这些结构是通用的,但并非专门为目标检测任务设计。为此,已经探索了一些适用于静态图像目标检测的小型深度神经网络架构,如YOLO [15]、YOLOv2 [11]、Tiny YOLO [16] 和Tiny SSD [17]。然而,直接将这些检测器应用于视频面临新的挑战。首先,在所有视频帧上应用深度网络会带来无法承受的计算成本。其次,识别准确度会受到视频中很少在静止图像中观察到的恶化外观的影响,如运动模糊、视频散焦、罕见的姿势等。

为了解决这些问题,当前的最佳实践[19,20,21]利用了时间信息来加速和提高视频的检测准确性。一方面,在[19,21]中使用稀疏特征传播来节省大部分帧上昂贵的特征计算。在这些帧上的特征从稀疏的关键帧传播而来。另一方面,在[20,21]中进行了多帧特征聚合,以提高特征质量和检测准确性。

基于这两个原则,最新的工作[21]在桌面GPU上实现了很好的速度-准确性权衡。然而,该架构对于移动设备来说并不友好。例如,作为特征传播和聚合的关键和共同组成部分,流估计在移动设备上的实时计算需求仍然远远不够。具有长期依赖性的聚合也受到移动设备有限运行时内存的限制。

本文描述了一种适用于移动设备的轻量级视频目标检测网络架构。它主要基于两个原则——在大多数非关键帧上传播特征,同时在稀疏的关键帧上计算和聚合特征。然而,我们需要仔细重新设计这两个结构,以考虑速度、尺寸和准确性。在所有帧上,我们提出了Light Flow,一个非常小的深度神经网络,用于估计特征流,可在移动设备上立即使用。在稀疏关键帧上,我们提出了基于流引导的门控循环单元(GRU)特征聚合,这是在内存有限的平台上的有效聚合。此外,我们还利用了轻量级图像目标检测器来在关键帧上计算特征,其中使用了先进而高效的技术,如深度可分离卷积 [22] 和Light-Head R-CNN [23]。

所提出的技术统一为一个端到端的学习系统。全面的实验表明,该模型稳步推进了性能(速度-准确性权衡)的界限,朝着在移动设备上实现高性能的视频目标检测前进。例如,我们在移动设备上(例如华为Mate 8)以25.6帧每秒的速度,在ImageNet VID验证集上实现了60.2%的mAP分数。它比先前在快速目标检测方面的最佳努力速度快一个数量级,并且准确性相当(见图1)。据我们所知,我们首次在移动设备上实现了具有合理准确性的实时视频目标检测。

Revisiting Video Object Detection Baseline

在静态图像中的目标检测在近年来利用深度卷积神经网络(CNN)取得了显著的进展[1]。最先进的检测器共享相似的网络架构,包括两个概念步骤。第一个步骤是特征网络,它通过一个完全卷积的主干网络[24,25,26,27,28,29,30,13,14]从输入图像I中提取一组卷积特征图F,表示为Nf eat(I) = F。第二个步骤是检测网络,它通过在特征图F上执行区域分类和边界框回归,使用多分支子网络生成检测结果y,可以是针对稀疏物体提案[2,3,4,5,6,7,8,9]或密集滑动窗口[10,15,11,31],即Ndet(F) = y。

它是随机初始化并与Nf eat一起进行训练。

将这些检测器直接应用于视频目标检测面临两个方面的挑战。就速度而言,将单一图像检测器应用于所有视频帧并不高效,因为主干网络Nf eat通常较深且较慢。

就准确性而言,检测准确性会受到视频中很少在静态图像中观察到的恶化外观的影响,如运动模糊、视频散焦、罕见的姿势。

目前的最佳实践[19,20,21]通过稀疏特征传播和多帧特征聚合分别利用时间信息来解决速度和准确性问题。

稀疏特征传播 由于连续帧之间的内容之间存在很强的关联性,不必在大多数帧上进行详尽的特征提取计算。深度特征流[19]提供了一种高效的方法,它仅在稀疏的关键帧(例如每10帧)上计算昂贵的特征网络,并将关键帧特征图传播到大多数非关键帧,从而实现了5倍的速度提升,但准确性略微降低。

在推断过程中,任何非关键帧i上的特征图都是通过从其前面的关键帧k传播而来的,即:

在这里插入图片描述
多帧特征聚合 为了提高检测准确性,流导引特征聚合(FGFA)[20]从附近的帧中聚合特征图,这些特征图通过估计的光流进行了很好的对齐。

在帧i上的聚合特征图 ˆFi 是通过加权平均附近帧的特征图得到的,其表达式为:
在这里插入图片描述
在这里插入图片描述
为了避免在所有帧上进行密集的聚合,[21] 提出了稀疏递归特征聚合,仅在稀疏的关键帧上操作。这种方法保留了聚合的特征质量,同时降低了计算成本。

具体而言,在连续的两个关键帧 k 和 k0 上,帧 k0 上的聚合特征被计算为:

在这里插入图片描述

Practice for Mobiles

由于稀疏特征传播和多帧特征聚合这两个原则在桌面GPU上产生了最佳实践,以实现高性能(速度和准确性的权衡)的视频目标检测[21]。然而,在移动设备上的计算能力和运行时内存非常有限,因此需要探索适用于移动设备的原则。

  • 特征提取和聚合仅在稀疏的关键帧上操作,而在大多数非关键帧上执行轻量级特征传播。
  • 流估计是特征传播和聚合的关键。然而,在[19、20、21]中使用的流网络Nf low在移动实时处理方面仍然远远不够。具体而言,FlowNet [32] 在相同的输入分辨率下是MobileNet [13] 的11.8倍FLOPs。即使在[19]中使用的最小的FlowNet Inception也多了1.6倍的FLOPs。因此,需要更加轻量级的Nf low。
  • 特征聚合应该在根据光流对齐的特征图上进行操作。否则,由于大目标运动引起的位移会导致聚合严重错误。聚合中的长期依赖也是受欢迎的,因为可以融合更多的时间信息以获得更好的特征质量。
  • 单张图像检测器的主干网络应尽可能小,因为我们需要它来计算稀疏关键帧上的特征。

Model Architecture for Mobiles

基于上述原则,我们设计了一个更小的移动视频目标检测网络架构。推理管道如图2所示。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

接下来,我们将介绍两种专门为移动设备设计的新技术,包括Light Flow,一种更有效的移动设备流量网络,以及一种基于流导向GRU的特征聚合,用于更好地建模长期依赖关系,从而获得更好的质量和准确性。

Light Flow

FlowNet [32]最初是为像素级光流估计而提出的。它设计为编码-解码模式,后面是多分辨率光流预测器。两个输入的RGB帧被连接在一起形成一个6通道的输入。在编码器中,通过一系列卷积层,输入被转换成在空间维度上缩小到输入大小的1/64的特征图束。在解码器中,特征图被馈送到多个反卷积层,以实现高分辨率的光流预测。在每个反卷积层之后,特征图与编码器中的最后特征图连接在一起,它们具有相同的空间分辨率和上采样的粗糙光流预测。每个解码器中连接的特征图后面跟随多个光流预测器。对每个预测器应用损失函数,但在推断过程中仅使用最精细的预测。

为了极大地加速流网络Nf low,我们提出了Light Flow,它是一个基于FlowNet [32]进行若干有意设计的轻量级流网络。它在准确性方面只会带来轻微的降低(端点误差增加了15%),但在理论上速度提高了近65倍(见表2)。
在编码器部分,卷积始终是计算的瓶颈。受MobileNet [13]的启发,我们将所有的卷积替换为3×3的深度可分离卷积[22](每个3×3的深度可分离卷积后面跟着一个1×1的点卷积)。与标准的3×3卷积相比,3×3深度可分离卷积的计算成本减少了8~9倍,而准确性略有降低[13]。

在解码器部分,每个反卷积操作都被最近邻上采样和随后的深度可分离卷积所取代。[33]用最近邻上采样代替了反卷积,然后是标准卷积,以解决反卷积引起的棋盘状伪影。相比之下,我们借鉴了这个想法,进一步将标准卷积替换为深度可分离卷积,以减少计算成本。

最后,我们采用了一种简单有效的方式来考虑多分辨率的预测。这受到了FCN [34]的启发,FCN在明确的求和方式下融合了多分辨率的语义分割预测作为最终预测。

与[32]不同,我们在推断过程中不仅使用最精细的光流预测作为最终预测。相反,多分辨率的预测被上采样到与最精细预测相同的空间分辨率,然后求平均作为最终预测。此外,在训练期间,仅对平均光流预测应用单个损失函数,而不是在每个预测之后应用多个损失函数。这种方法可以将端点误差减少近10%。

Light Flow的网络架构和实现在表1中进行了说明。每个卷积操作之后都跟随批量归一化[35]和Leaky ReLU非线性变换[36],斜率固定为0.1。与[32,37]类似,Light Flow在Flying Chairs数据集上进行了预训练。在训练Light Flow时,使用Adam [38]作为优化方法,权重衰减为0.00004。在4个GPU上进行了70k次迭代,每个GPU持有64个图像对。

采用了热身学习率策略,首先训练学习率为0.001的模型进行10k次迭代。然后使用学习率为0.01进行20k次迭代,并在每10k次迭代后将学习率除以2。

在将Light Flow应用于我们的方法时,为了进一步提速,进行了两个修改。首先,与[19,20,21]一样,Light Flow应用于输入分辨率为特征网络的一半,并且输出步幅为4的图像。由于特征网络的输出步幅为16,流场被下采样以匹配特征图的分辨率。其次,由于Light Flow非常小,计算量与检测网络Ndet相当,因此在检测网络的中间特征图上应用稀疏特征传播(参见第3.3节,RPN [5]中的256维特征图和Light-Head R-CNN [23]中的490维特征图),以进一步减少非关键帧的计算量。

后面略

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/35793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT的界面切换

QT的界面切换 步骤一: 创建一个新的 ui 界面

使用基于jvm-sandbox的对三层嵌套类型的改造

使用基于jvm-sandbox的对三层嵌套类型的改造 问题背景 先简单介绍下基于jvm-sandbox的imock工具,是Java方法级别的mock,操作就是监听指定方法,返回指定的mock内容。 jvm-sandbox 利用字节码操作和自定义类加载器的技术,将原始方法…

【JVM】CPU飙高排查方案与思路

文章目录 CPU飙高排查方案与思路 CPU飙高排查方案与思路 1.使用top命令查看占用cpu的情况 2.通过top命令查看后,可以查看是哪一个进程占用cpu较高,上图所示的进程为:40940 3.查看进程中的线程信息 4.可以根据进程 id 找到有问题的线程&a…

Ceph分布式存储系统优化分析

Ceph支持多种存储访问接口,现有的多种性能测试工具都可用于Ceph的性能测试,如测试块接口性能的fio,iometer等;测试CephFS接口的filebench,fio等;测试对象接口的cosbench等。Ceph有专用的基准测试集CBT,其包…

【数据结构与算法】十大经典排序算法-插入排序

🌟个人博客:www.hellocode.top 🏰Java知识导航:Java-Navigate 🔥CSDN:HelloCode. 🌞知乎:HelloCode 🌴掘金:HelloCode ⚡如有问题,欢迎指正&#…

第57步 深度学习图像识别:CNN可视化(Pytorch)

基于WIN10的64位系统演示 一、写在前面 由于不少模型使用的是Pytorch,因此这一期补上基于Pytorch实现CNN可视化的教程和代码,以SqueezeNet模型为例。 二、CNN可视化实战 继续使用胸片的数据集:肺结核病人和健康人的胸片的识别。其中&…

问DAO成都丨CyberDAO共识会议在成都圆满落幕

过往匆匆,唯有共识绵延;未来已来,愿与智者同谋。2023年8月9日至8月10日,CyberDAO共识会议在成都市大邑县顺利召开,吸引了上百名Web3.0与元宇宙爱好者参与本次会议。CyberDAO大中华区运营团队合伙人JR、漫威、安祈、可乐…

【Rust】Rust学习 第十一章编写自动化测试

Rust 是一个相当注重正确性的编程语言,不过正确性是一个难以证明的复杂主题。Rust 的类型系统在此问题上下了很大的功夫,不过它不可能捕获所有种类的错误。为此,Rust 也在语言本身包含了编写软件测试的支持。 编写一个叫做 add_two 的将传递…

[C++ 网络协议编程] TCP/IP协议

目录 1. TCP/IP协议栈 2. TCP原理 2.1 TCP套接字中的I/O缓冲 2.2 TCP工作原理 2.2.1 三次握手(连接) 2.2.2 与对方主机的数据交换 2.2.3 四次握手(断开与套接字的连接) TCP(Transmission Control Protocol传输控…

无涯教程-Perl - ref函数

描述 如果EXPR为引用,则此函数返回真值;如果未提供EXPR,则为$_。返回的实际值还定义了引用所引用的实体的类型。 内置类型为- REFSCALARARRAYHASHCODEGLOBLVALUEIO::Handle 如果使用bless()函数为变量设置了祝福,则将返回新的数据类型。新的数据类型通常将是一个…

大数据-玩转数据-Flink 自定义Sink(Mysql)

一、说明 如果Flink没有提供给我们可以直接使用的连接器,那我们如果想将数据存储到我们自己的存储设备中,mysql 的安装使用请参考 mysql-玩转数据-centos7下mysql的安装 创建表 CREATE TABLE sensor (id int(10) ) ENGINEInnoDB DEFAULT CHARSETutf8二…

4个简化IT服务台任务的ChatGPT功能

最近几个月,ChatGPT 风靡全球,这是一个 AI 聊天机器人,使用户能够生成脚本、文章、锻炼图表等。这项技术在各行各业都有无穷无尽的应用,在本文中,我们将研究这种现代技术如何帮助服务台团队增强服务交付和客户体验。 什…

最佳实践:如何优雅地提交一个 Amazon EMR Serverless 作业?

《大数据平台架构与原型实现:数据中台建设实战》一书由博主历时三年精心创作,现已通过知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详…

章节7:XSS检测和利用

章节7&#xff1a;XSS检测和利用 测试payload <script>alert(XSS)</script> <script>alert(document.cookie)</script> ><script>alert(document.cookie)</script> ><script>alert(document.cookie)</script> &qu…

golang—面试题大全

目录标题 sliceslice和array的区别slice扩容机制slice是否线程安全slice分配到栈上还是堆上扩容过程中是否重新写入go深拷贝发生在什么情况下&#xff1f;切片的深拷贝是怎么做的copy和左值进行初始化区别slice和map的区别 mapmap介绍map的key的类型map对象如何比较map的底层原…

《Java极简设计模式》第03章:工厂方法模式(FactoryMethod)

作者&#xff1a;冰河 星球&#xff1a;http://m6z.cn/6aeFbs 博客&#xff1a;https://binghe.gitcode.host 文章汇总&#xff1a;https://binghe.gitcode.host/md/all/all.html 源码地址&#xff1a;https://github.com/binghe001/java-simple-design-patterns/tree/master/j…

腾讯云标准型CVM云服务器详细介绍

腾讯云CVM服务器标准型实例的各项性能参数平衡&#xff0c;标准型云服务器适用于大多数常规业务&#xff0c;例如&#xff1a;web网站及中间件等&#xff0c;常见的标准型云服务器有CVM标准型S5、S6、SA3、SR1、S5se等规格&#xff0c;腾讯云服务器网来详细说下云服务器CVM标准…

NAS搭建指南一——服务器的选择与搭建

一、服务器的选择 有自己的本地的公网 IP 的请跳过此篇文章按需求选择一个云服务器&#xff0c;目的就是为了进行 frp 的搭建&#xff0c;完成内网穿透我选择的是腾讯云服务器&#xff0c;我的配置如下&#xff0c;仅供参考&#xff1a; 4. 腾讯云服务器官网地址 二、服务器…

day9 10-牛客67道剑指offer-JZ66、19、20、75、23、76、8、28、77、78

文章目录 1. JZ66 构建乘积数组暴力解法双向遍历 2. JZ19 正则表达式匹配3. JZ20 表示数值的字符串有限状态机遍历 4. JZ75 字符流中第一个不重复的字符5. JZ23 链表中环的入口结点快慢指针哈希表 6. JZ76 删除链表中重复的结点快慢指针三指针如果只保留一个重复结点 7. JZ8 二…

gitblit-使用

1.登入GitBlit服务器 默认用户和密码: admin/admin 2.创建一个新的版本库 点击图中的“版本库”&#xff0c;然后点击图中“创建版本库” 填写名称和描述&#xff0c;注意名称最后一定要加 .git选择限制查看、克隆和推送勾选“加入README”和“加入.gitignore文件”在图中的1处…