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

news/2024/7/10 0:49:57 标签: 深度学习, 目标检测, 人工智能

文章目录

  • 摘要
  • 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.niftyadmin.cn/n/4929183.html

相关文章

maven Jar包反向install到本地仓库

maven Jar包反向install到本地仓库 需求实现 需求 项目打包时报错,缺少一个jar包。 但是在maven仓库都找不到此jar包,其他人提供了这个jar包。 需要把这个jar包install到本地仓库,使项目能正常打包运行。 实现 使用git bash命令执行以下脚…

dotNet 之数据库sqlite

Sqlite3是个特别好的本地数据库,体积小,无需安装,是写小控制台程序最佳数据库。NET Core是同样也是.NET 未来的方向。 **硬件支持型号 点击 查看 硬件支持 详情** DTU701 产品详情 DTU702 产品详情 DTU801 产品详情 DTU802 产品详情 D…

Ozone命令行接口详解

命令行接口简介 Ozone Shell是命令行与Ozone交互的主要界面,底层用的是Java。 有些功能只能通过Ozone Shell进行操作: 创建带有限额限制的Volume管理内部ACLs(访问控制列表)创建带有加密密钥的存储桶 大部分操作除了Shell操作…

Jenkins自动化打包脚本

一、背景 jenkins可以设置定时任务打包,也已手动点按钮打包,还可以通过执行http请求打包,今天我们就通过shell脚本,通过curl命令进行jenkins打包。 二、步骤 2.1 在jenkins上构建项目 设置触发器 2.2 通过shell脚本触发远程构…

selenium官网文档阅读总结(day 4)

1.selenium的工作原理 selenium的工作原理涉及以下主要组件和步骤: (1)WebDriver:这是selenium的核心组件,它是一个用于控制浏览器的API。WebDriver提供了许多方法,用于在浏览器中模拟用户操作。不同的浏览器需要相应…

【Flutter】【基础】CustomPaint 绘画功能(一)

功能:CustomPaint 相当于在一个画布上面画画,可以自己绘制不同的颜色形状等 在各种widget 或者是插件不能满足到需求的时候,可以自己定义一些形状 使用实例和代码: CustomPaint: 能使你绘制的东西显示在你的ui 上面&a…

Objective-C获取变量类型的方法

在Objective-C中,要获取一个对象的类型,可以使用[object class]方法。这将返回一个Class对象,表示该对象的类型。 另外,typeid是C中的关键字,用于获取一个变量的类型信息。在Objective-C中,typeid并不适用于…

Kafka: 详解、使用教程和示例

Kafka: 详细介绍、使用教程和示例 什么是 Kafka? Kafka 是一个分布式的流处理平台,最初由 LinkedIn 开发,现已成为 Apache 基金会的顶级项目。它以高吞吐量、可靠性和可扩展性而闻名,被广泛应用于实时数据传输、日志收集、事件处…