20

爱笑的小姐姐 · 2021年03月05日

AAAI 2021 YOLObile:移动设备上的实时目标检测

本文转自:AI约读社
作者:南山

YOLOv4 在2020年目标检测领域大放异彩取得了SOTA。虽然YOLO系列作为单阶段的代表本身具有较快的速度,但是YOLOv4想要作为移动设备实时的目标检测方法任需要通过轻量化模型和增加推理速度。因此今天小编介绍一篇基于YOLOv4提出新的裁剪方案和GPU-CPU协同工作的论文YOLObile,该论文目前已被AAAI 2021收录。

实验结果表明该裁剪机制以49.0 mAP达到YOLOv4压缩率的14倍。在 YOLObile 框架下,作者在三星 Galaxy S20 手机上实现了 17 FPS 的推理速度。加入了 GPU-CPU 协同机制后,其推理速度增加到了 19.1 FPS,比原来的 YOLOv4速度高出五倍。并且该方法是基于U版的YOLOv3(pytoch版)实现的,代码的可读性高,使用起来很方便。

论文:YOLObile: Real-Time Object Detection on Mobile Devices via Compression-Compilation Co-Design

链接:https://arxiv.org/abs/2009.05697

代码:https://github.com/nightsnack...

image.png

01

模型裁剪和加速

当前部署在移动设备的目标检测算法,主要两个方向,首先就是设计轻量级目标检测架构,它们虽然效率很高,但是准确率下降也很明显,例如YOLO-LITE在coco数据集map下降到了 12.16。最后就是本文的研究方向,对具有较高精度的目标检测网络进行模型压缩和加速,在保证较高精度同时轻量化模型大小,并且提升模型的推理速度。模型压缩的权重裁剪方法被证明是降低计算量和内存消耗最有效的方法,不会牺牲准确性。通过降低权重的冗余性,结构稀疏的模型就可以实现更高的内存和能量效率,推理时延迟更低。

1.1 模型裁剪

当前主流的模型裁剪方案有三种:细粒度非结构化裁剪、粗粒度结构化裁剪和基于模式的裁剪。接下来介绍它们的方法和各自的优缺点。

(1)非结构化裁剪,裁剪方式如下图所示,裁剪权重矩阵中任意位置的权重。    优点:具有较高灵活性,可以搜索到最优化的裁剪结构。缺点:非结构化裁剪会导致权重矩阵中的不规则稀疏,因此难以使用GPU的并行加速,推理速度慢。

image.png

(2)结构化裁剪,裁剪方式如下图所示,裁剪模型权重的整个通道或滤波器。 优点:结构化裁剪会保持权重矩阵的规则形状,因此,它是硬件友好的,可以利用硬件并行来加速。缺点:结构化裁剪会造成精度的明显下降,因为裁剪后的特征变得粗粒度了。
image.png

(3)基于模式的裁剪有两部分构成,即核模式裁剪和连接裁剪。核模式裁剪会在每个卷积核内裁剪掉固定数量的权重,如下图所示。它首先分析剩余权重的位置,形成一个特殊的核模式,然后再裁剪权重。不同的核可以用不同的模式类型,但是模式的总数是固定的。连接裁剪,作为核模式裁剪的补充,可以实现更高的压缩率。连接裁剪会裁剪掉整个卷积核,可以去除输入和输出通道之间的联系。

优点:它在结构化灵活性和结构化规则性方面都很适当,所以同时保留了准确性和硬件的性能。缺点:核模式是针对 3 × 3卷积核特殊设计的,不适用于其它卷积核大小。该缺点就极大地限制了基于模式裁剪的应用场景。

image.png

1.2 编译器辅助模型加速

随着移动端计算机视觉的应用推广,移动平台现有的性能急需取得突破。工业界和学术界都在研究移动端 DNN 的推理框架。在这些工作中,TensorFlow-Lite、Alibaba Mobile Neural Network 和 TVM 是3个代表性的、端到端的 DNN 推理框架,推理效率很高。它们使用了很多先进的性能优化技术,包括多种计算图优化、张量优化、半浮点支持;特别地,TVM 采用了一个更加先进的参数自动调参方法。但是,这些框架都无法支持移动端的稀疏(裁剪)的DNN模型。这就严重束缚了 DNN 移动端推理的性能。

02

YOLObile 框架设计

作者提出了一个 YOLObile 框架,通过压缩-编译协同设计在移动设备上实现实时的目标检测方法。提出了一个新的、针对任意核大小的 block-punched 裁剪机制。为了提高它在移动设备上的计算效率,作者采用了一个 GPU-CPU 协同机制和先进的编译器辅助优化方案。

2.1 Block-Punched Pruning 裁剪机制

为了同时实现实现高度的硬件并行的同时,保持高准确率,作者提出了一种新的裁剪机制Block-Punched Pruning。如下图所示,作者将特定层的所有权重分为多个相同大小的块,每个块都包含m个连续滤波器的 n个连续通道。在每个块内,裁剪所有滤波器中相同位置的一组权重,也裁剪所有通道中相同位置的权重。简单来说,就是在一个块内,进行细粒度结构化裁剪策略。其中每个块内裁剪权重的个数是可变的,可以互不相同。

Block-Punched Pruning 裁剪机制将结构化裁剪策略和非结构化策略相结合,在块间进行非结构化的裁剪(每个块间的权重裁剪的位置不同),在块内进行结构化的裁剪(每个权重的裁剪位置相同)。这种权重裁剪方式将这两种方式的优点结合起来了,并互补了相互的缺点。从准确率的角度看,由于其具有非结构裁剪的高灵活性,可以搜索到最优化的裁剪结构,因此其可以保持较高的准确率。从硬件性能的角度,由于其具有结构性裁剪的特征能够保持权重矩阵的规则形状,因此,它是硬件友好的,可以利用GPU硬件并行来加速。

image.png

2.2 通过GPU-CPU 协同机制进行移动端加速

作者为了实现更加高效率的计算方法,进一步提升模型的推理速度,作者提出GPU-CPU 协同计算机制,当前的模型推理框架如TFLite 和 MNN 要么只能在移动端的GPU,要么移动端的CPU上来支持模型推理,这就造成计算资源的浪费。当GPU使用时,CPU大多数时间没有被充分利用。由于模型中的许多分支并没有互相依赖,它们可以在移动端的GPU和移动端的CPU上同步计算,来实现更高的效率和速度。作者将网络模型分成两种分支结构: (1)卷积层分支结构,(2)非卷积操作的分支结构。如下图所示,卷积层分支结构由GPU进行计算,而另一个非卷积操作分支结构根据整体计算时间,这个分支既可用 CPU 也可用 GPU。当我们用 CPU 做并行计算时,我们也需要加上数据拷贝时间τ。GPU-CPU 并行计算时间Tpar 依赖于分支1和分支2的最大时间成本:

image.png
根据Tpar的最小值及Tser的最小值,我们可以选择最适合分支2的运行设备。注意,YOLOv4中每个分支结构的运行设备独立于其它分支结构。所以,所有分支结构的运行设备可以通过贪心算法解决。

image.png

2.3 编辑器辅助加速

受 PatDNN 启发,YOLObile 用到了多个先进的编译器辅助优化办法。由于篇幅限制,作者简单地总结了一下。首先 YOLObile 使用裁剪信息(块和 punched 模式)来压缩存储网络权值,类似于知名的 Compressed Sparse Row 格式,进一步压缩索引数组。其次,YOLObile 重新排序块,提升内存和计算规则性,去除不必要的内存读取。此外,YOLObile 利用一个高度并行的自动调参模型,找到最佳的运行配置参数。YOLObile 为每一层都生成CPU和GPU代码,在推理时根据GPU-CPU协同机制调用最适合的代码。

03

实验结果

作者将YOLObile与其他的方法进行比较,从下面图表可以看出,YOLObile在的map超过了一般的单阶段网络如SSD,但比YOLOv4低,不过YOLObile的推理速度比SSD,YOLOv4和CenterNet快得多(4.5倍,5.5倍)。与轻量化检测器相比如YOLO-Lite和MobileNetv2-SSDLite,虽然YOLObile的FPS较低,但mAP较高。

image.png

04

总结

YOLObile 通过压缩-编译协同设计实现了在移动端进行实时的目标检测,并且超越YOLOv4-tiny!比YOLOv3快7倍!作者提出的Block-Punched Pruning裁剪策略在保持准确率的同时也能使用GPU的并行计算,并且提出GPU-CPU协同计算提升模型的推理速度,成功的在手机端实现了高准确的实时目标检测任务。

推荐阅读

更多嵌入式AI技术相关内容请关注嵌入式AI专栏。
推荐阅读
关注数
18790
内容数
1342
嵌入式端AI,包括AI算法在推理框架Tengine,MNN,NCNN,PaddlePaddle及相关芯片上的实现。欢迎加入微信交流群,微信号:aijishu20(备注:嵌入式)
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息