Advertisement

【论文阅读笔记】Looking Fast and Slow: Memory-Guided Mobile Video Object Detection

阅读量:

Looking Fast and Slow: Memory-Guided Mobile Video Object Detection

  • 未经作者同意,本文内容不得擅自转载
  • (一)论文获取途径:
  • (二)基本思路:
  • (三)主要创新点:
  • (四)交错模型(Interleaved Models):
  • (五)主干网络(Backbone):
  • (六)记忆模块(Memory Module):
  • (七)训练流程(Training Procedure):
  • (八)自适应交替策略(Adaptive Interleaving Policy):
  • (九)推理优化措施(Inference Optimizations):
    • 9.1 异步推理(Asynchronous Inference):
    • 9.2 量化处理(Quantization):

    • (十)实验结果:

未经作者允许,本文禁止转载

(一)论文地址:

https://arxiv.org/pdf/1903.10172.pdf

(二)核心思想:

本文探讨了,在计算机视觉系统中采用记忆模型是否能显著提升视频流中目标检测的准确率,以及是否能显著降低计算时间。

作者采用交叉使用的方式,将传统特征提取器(Slow Network)与轻量级特征提取器(Fast Network)相结合,证明了在时间记忆模型存在的条件下,这种方案能够实现计算量最小的精确检测。在手机等移动设备上实现了实时检测,这种方案在计算资源受限的设备上表现出了良好的实时性。

研究表明,作者还证明了记忆模型包含足够的上下文信息,可以应用于强化学习算法的部署,以实现自适应推理策略的实现。

在这里插入图片描述

(三)主要贡献:

这篇文章的主要贡献有:

开发了一个内存管理优化的融合架构,其中多个特征提取器在不同帧上独立运行以降低冗余计算,它们的输出通过公共内存模块进行整合。

开发了一种自适应交叉策略,其中特征提取器的执行顺序基于Q-learning方法确定,这带来了显著的速度与精度的平衡。

• 在移动设备上演示了迄今为止已知的最快的、高精度的视频检测模型;

(四)Interleaved Models(交叉模型):

在这里插入图片描述

假设输入视频序列 V 由帧 I_0, I_1, \dots, I_n 组成,并且当检测到第 k 帧时,已知的帧集合为 I_0, I_1, \dots, I_k

定义 m 个特征提取器为 f_i:R^I\rightarrow R^F\mid_{i=0}^m,它们对应于从图像空间到各自的特征空间 R^F 的映射。

该记忆模型通过公式 m:R^F×R^S\rightarrow R^R×R^S 表示为,其本质是基于输入特征 f 和内部状态表示,映射至公共且细化的特征空间,并且实现了状态的更新。

然后模仿 SSD 飣风格的检测模块,假设该检测器的数学模型为 d:R^R\rightarrow R^D,生成最终的检测结果。

这样第 k 帧图像 I_k 的最终结果 D_k 就可以表示为:

D_k = d(M_k),其中M_k=m(f_i(I_k),s_{k-1})s_{k-1} 是时序模型在 k-1 时刻的状态量;

使用交叉模型的优点是:

多样化的特征提取器能够对各自对应的图像特征进行针对性处理,进而实现整体时间效率的提升;
简洁型的特征提取器显著降低了计算开销;

在研究中,作者采用了两个特征提取器 f_0f_1,其中 m=2。这种选择使得研究能够更有效地进行。其中,f_0 主要专注于显著提升检测的准确性,而 f_1 则专注于显著提升检测的速度。

交替特征提取策略可表示为一个参数τ的简洁方式,即通过先运行f1 τ次,再运行f0来实现交替策略。

当然作者还提出了一个更有效的方法,在下面我们会详细地讲一下;

(五)Backbone(主干网络):

论文阅读笔记

论文阅读笔记

两个提取器的 backbone 作者都基于经典的 MobileNetV2 网络进行了设计。如需更详细的解析,可参考我的这篇博客: [【论文阅读笔记

两个提取器的 backbone 作者都基于经典的 MobileNetV2 网络进行了设计。如需更详细的解析,可参考我的这篇博客: [【论文阅读笔记

其中:

f_0 的深度乘子为 1.4、输入分辨率为 320×320;

f_1 的深度乘子为 0.35、输入分辨率为 160×160;

并且作者调整为 f_1 的最后一个下采样步长设置为 1,从而使得输出的特征层大小与 f_0 一致。

并且作者也将预选框的比率调整为 \lbrace 1,0.5,2.0\rbrace,从而减小计算量;

(六)Memory Module(记忆模块):

该模块的主要功能是通过时间维度上进行信息整合,将来自两个提取器的特性进行结合,特别地,通过结合时间上下文信息来提升来自小网络的特性。

在这里插入图片描述

为了提高传统 ConvSTLM 的检测速度,作者主要做了以下改进:

  1. 设计了一种瓶颈结构,通过在输出之前引入跳跃连接,使得瓶颈成为输出的一部分;
  2. 通过将LSTM的状态划分为若干组,并对每组状态应用分组卷积进行处理。

假设第 t 时刻前的状体量为 h_{t-1}t 时刻输入的特征图为 x_t

首先,将状态量按通道划分为G个相等的区间区间1h_{t-1}、2h_{t-1}、…、^Gh_{t-1},然后将这G个区间分别与当前输入x_t进行连接。通过瓶颈结构的长短期记忆单元,输出四个门控门:b_t、f_t、i_t和o_t。

LSTM新增的状态量^gc_t,^gh_t采用相同的方式进行计算,无需进行聚合操作,仍保持分组的结构。

最后使用一个跳跃连接结构连接生成输出组:

^gM_t=[^gh_t,b_t]

最后在通道维度上将他们链接,就得到了 c_t,h_t,M_t

分组卷积通过稀疏连接层实现了加速效果,而跳跃连接结构则允许输出中包含较少的临时相关特征,无需在内存中进行存储。

研究中作者采用了 G=4,channels 数为 320,带来的速度提升还是比较明显的:

在这里插入图片描述

作者进一步研究发现,LSTM 模型中输入和遗忘门的 sigmoid 激活通常不会完全饱和,这将导致长期依赖项的缓慢状态衰减,由输入和遗忘门的 sigmoid 激活通常不会完全饱和引起。

为解决该问题,作者提出了一种简便的方法:在执行 f_1 时省略状态更新步骤,从而实现了对 f_0 状态量的重复利用。

(七)Training Procedure(训练过程):

训练过程包括两个阶段;

为了实现 LSTM 的较为合理的初始化权重获取,我们建议在 ImageNet 数据库中进行交替模型的预训练任务。

ImageNet 被定义为单张图片的分类任务。在此处,作者将每张图片复制三次,并将其展开为三个步骤,每一步都会随机选择一个特征提取器。

采用 SSD 的目标检测任务的训练方法,将 LSTM 分解为六个步骤,通过裁剪特定区域的图片来模拟视频中的平移和缩放。

(八)Adaptive Interleaving Policy(自适应交替策略):

(我没看懂,,,这里就简介一下吧,,,)

在这里插入图片描述

这里作者提供了一个使用强化学习来优化交替策略的方法;

作者构建一个策略网络 π 检查 LSTM 的运行状态和输出下一功能;

然后,利用 DDQN 对策略网络进行训练,算法如图:

在这里插入图片描述

(我是看不懂了,,,最近补一下强化学习)

(九)Inference Optimizations(推理优化):

作者深入研究了针对实际应用场景的两项优化措施,这些优化使帧率提升了三倍以上,同时保证了算法的准确性和部署的简便性。

9.1 Asynchronous Inference(异步推理):

基于关键帧的检测方法的一个问题是,这些方法主要局限于平摊运行时的处理。然而,这些方法在关键帧上承担了大部分计算任务,导致帧间延迟存在显著差异。

因此作者提出了一个异步推理的策略:

在这里插入图片描述

当以同步模式启动交错架构时,每一步都会启动一个特征提取模块,由此可知,最大的潜在延迟将取决于 f_0

然而,在单独线程中执行特性提取器(命名为异步运行模式)相对容易实现;

在异步模式下,每一步中,f1被执行,专注于检测任务,而f_0则持续每τ帧运行一次以更新状态量。

在每一阶段均采用最新可用的内存,该轻量级特征提取模块无需等待更大规模的特征提取模块运行;

9.2 Quantization(量化):

研究表明,该方法表明,在完成所有数学运算(包括加法、乘法、sigmoid 激活函数和 ReLU6 激活函数)后,可以引入伪量化操作。

激活后的输出范围,将 sigmoid 的输出范围固定在 [0,1] 区间内,同时将 ReLU6 的输出范围限定在 [0,6] 之间,以确保所有连接操作的输入具有相同的输出范围,从而避免了重新排序操作的必要。

(十)实验结果:

在这里插入图片描述
在这里插入图片描述

全部评论 (0)

还没有任何评论哟~