https://arxiv.org/abs/2009.05697
https://github.com/CoCoPIE-Pruning/CoCoPIE-ModelZoo/tree/master/YOLObile
YOLObile
比YOLOv3快7倍,同时准确率更高。在手机上实现19FPS实时高准确率目标检测,已开源。
由于近年来在深度神经网络(DNN)的领域的突破,物体检测作为计算机视觉领域的主要任务之一,引起了学术界和工业界的广泛研究。物体检测在众多计算机视觉任务中被广泛采用,包括图像标注、事件检测、物体追踪、分割和活动识别等,其应用包括自动驾驶、无人机避障、机器人视觉、人机交互和增强现实等。考虑到在这些实际场景中的应用,物体检测网络往往被需要在保持高准确率的同时拥有较低计算延迟。而现有的物体检测网络,在资源有限的平台上,尤其是像手机和嵌入式设备上部署这类应用时,很难同时实现高准确率与实时检测。
在过去的几年中,有很多优秀的物体检测网络被相继提出。其中的two-stage检测网络包括RCNN系列和SPPNet等,还有one-stage检测网络如YOLO系列,SSD和Retina-Net等。相较于two-stage网络,one-stage网络在牺牲一定准确率的情况下换来了更快的执行速度。即便如此,这些网络依然需求较大的计算量来达到可接受的准确率,这成为了这些网络难以在移动设备上实现实时推理的主要阻碍。为此,一些轻量级(lightweight)物体检测网络被提出,如SSD-Lite, YOLO-Lite, YOLO-tiny等,以满足在移动设备上快速的物体检测。但是这些轻量级网络的解决方案效果依然不理想,因为他们会导致检测准确率的大幅降低。
近日,由美国东北大学王言治研究组,威廉玛丽学院任彬研究组和匹兹堡大学汤旭龙老师共同提出了名为YOLObile的手机端物体检测加速框架。YOLObile框架通过“压缩-编译”协同设计在手机端实现了高准确率实时物体检测。该框架使用了一种新提出的名为“块打孔”的权重剪枝方案,来对模型进行有效的压缩。他们还提出了一种高效的GPU-CPU协同计算优化方案来进一步提高计算资源的利用率和执行速度,并在他们的编译器优化技术的协助下,最终在手机端实现高准确率的实时物体检测。相比YOLOv3完整版,该框架快7倍,在手机上实现19FPS实时高准确率目标检测。并且同时准确率(mAP)高于YOLOv3,并没有牺牲准确率提高计算速度。
开源模型与代码见:
https://github.com/CoCoPIE-Pruning/CoCoPIE-ModelZoo/tree/master/YOLObile
他们的实验结果表明,当使用YOLOv4为基础模型进行优化时,他们的优化框架可以成功将原模型大小压缩小14倍,在未使用GPU-CPU协同计算优化时,将每秒检测帧数(FPS)提升至17,且达到49的准确率(mAP)。
从下图中可以看到,与众多具有代表性的物体检测网络相比,他们的优化模型在准确率与速度两方面同时具有优异的表现,而不再是简单的牺牲大幅准确率来获取一定程度的速度提升。
下表展示了YOLObile与其他具有代表性的物体检测网络在准确率与速度方面的具体比较。值得注意的是,他们的GPU-CPU协同计算优化方案可以进一步将执行速度提高至19FPS。
“块打孔”权重剪枝方案
在YOLObile优化框架中,他们使用了新提出的名为“块打孔”的权重剪枝(weight pruning)方案。这种剪枝方案意在获得较高的剪枝结构自由度的同时,还能使剪枝后的模型结构较好的利用硬件并行计算。这样就从两方面分别保证了剪枝后模型的准确率以及较高的运算速度。
在这种剪枝方案中,每层的权重矩阵将被划分为等大小的多个小区块(block),因此,每个小区块中将包含来自m个filter的n个channel的权重。在每个小区块中,他们对被修剪权重的位置做出了如下的限定,需要修剪所有filter相同位置的一个或多个权重,同时也修剪所有通道相同位置的一个或多个权重。从另一个角度来看,这种剪枝方案将权重的修剪位置将贯穿了整个小区块中所有的卷积核(kernel)。
1.在准确率方面,通过划分多个小区块,这种剪枝方法实现了更加细粒度的剪枝。相较于传统的结构化剪枝(剪除整个filter或channel),这种方式具有更高的剪枝结构自由度,从而更好地保持了模型的准确率。
2.在硬件表现方面,因为在同一小区块中,所有filter修剪被修剪的位置相同,所以在并行计算时,所有filter将统一跳过读取相同的输入数据,从而减轻处理这些filter的线程之间的内存压力。而限制修剪小区块内各channel的相同位置,确保了所有channel共享相同的计算模式,从而消除处理每个channel的线程之间的计算差异。因此,这种剪枝方案可以大幅度的降低在计算过程中处理稀疏结构的额外开销,从而达到更好的加速效果。
GPU-CPU协同计算优化方案
YOLObile中还使用了GPU-CPU协同计算的方式来进一步降低整个网络的运算时间。现在主流的移动端DNN推理加速框架,如TensorFlow-Lite,MNN和TVM都只能支持CPU或GPU单独运算,因此也导致了潜在的计算资源浪费。YOLObile提出针对网络中的分支结构,比如YOLOv4中大量使用的Cross Stage Partial (CSP)结构,使用CPU来辅助GPU同时进行一些相互无依赖关系的分支运算,从而更好地利用计算资源,减少网络的运算时间。YOLObile框架将待优化的网络分支分为有卷积运算分支和无卷及运算分支,并对于两种情况分别给出了优化方案。
更多技术细节请参考文章
https://arxiv.org/abs/2009.05697
更多手机端AI实时应用视频请查看链接
https://space.bilibili.com/573588276
结语
如何在资源受限的移动设备上实现实时物体检测是一个极具挑战性的难题。现有的物体检测网络很难同时保证高准确率和低网络运算时间。YOLObile优化框架,通过压缩技术与编译器优化的协同设计,提供了一个有效的解决方案,成功的在手机端实现了高准确实时的物体检测任务。