热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

tiny识别不出yolov4_超越YOLOv4tiny!比YOLOv3快7倍!YOLObile:移动端上的目标检测...

https:arxiv.orgabs2009.05697https:github.comCoCoPIE-PruningCoCoPIE-ModelZootreemasterYOLOb

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优化框架,通过压缩技术与编译器优化的协同设计,提供了一个有效的解决方案,成功的在手机端实现了高准确实时的物体检测任务。



推荐阅读
  • 干货 | 携程AI推理性能的自动化优化实践
    作者简介携程度假AI研发团队致力于为携程旅游事业部提供丰富的AI技术产品,其中性能优化组为AI模型提供全方位的优化方案,提升推理性能降低成本࿰ ... [详细]
  • 人工智能推理能力与假设检验
    最近Google的Deepmind开始研究如何让AI做数学题。这个问题的提出非常有启发,逻辑推理,发现新知识的能力应该是强人工智能出现自我意识之前最需要发展的能力。深度学习目前可以 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 安装Tensorflow-GPU文档第一步:通过Anaconda安装python从这个链接https:www.anaconda.comdownload#window ... [详细]
  • 程度|也就是_论文精读:Neural Architecture Search without Training
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了论文精读:NeuralArchitectureSearchwithoutTraining相关的知识,希望对你有一定的参考价值。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了腾讯最近开源的BERT推理模型TurboTransformers,该模型在推理速度上比PyTorch快1~4倍。TurboTransformers采用了分层设计的思想,通过简化问题和加速开发,实现了快速推理能力。同时,文章还探讨了PyTorch在中间层延迟和深度神经网络中存在的问题,并提出了合并计算的解决方案。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • Learning to Paint with Model-based Deep Reinforcement Learning
    本文介绍了一种基于模型的深度强化学习方法,通过结合神经渲染器,教机器像人类画家一样进行绘画。该方法能够生成笔画的坐标点、半径、透明度、颜色值等,以生成类似于给定目标图像的绘画。文章还讨论了该方法面临的挑战,包括绘制纹理丰富的图像等。通过对比实验的结果,作者证明了基于模型的深度强化学习方法相对于基于模型的DDPG和模型无关的DDPG方法的优势。该研究对于深度强化学习在绘画领域的应用具有重要意义。 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • 用c语言实现线画、填充图元生成算法多边形_【游戏场景剔除】剔除算法综述...
    之前在做场景优化的过程中,看了不少论文和博客阐述不同剔除算法的原理和过程,自己参照着算法去实现了Hiz和软件剔除。一直想写一篇关于剔除算法的综述 ... [详细]
  • 论文阅读:《Bag of Tricks for LongTailed Visual Recognition with Deep Convolutional Neural Networks》
    基于深度卷积神经网络的长尾视觉识别技巧包摘要近年来,挑战性长尾分布上的视觉识别技术取得了很大的进展,主要基于各种复杂的范式(如元学习)。除了这些复杂 ... [详细]
  • TensorFlow入门上
    前置准备在阅读本文之前,请确定你已经了解了神经网络的基本结构以及前向传播、后向传播的基本原理,如果尚未了解,可以查看下文。神经网络初探​chrer.com也可以直接在我博客阅读Te ... [详细]
  • keras归一化激活函数dropout
    激活函数:1.softmax函数在多分类中常用的激活函数,是基于逻辑回归的,常用在输出一层,将输出压缩在0~1之间,且保证所有元素和为1,表示输入值属于每个输出值的概率大小2、Si ... [详细]
  • navicat生成er图_实践案例丨ACL2020 KBQA 基于查询图生成回答多跳复杂问题
    摘要:目前复杂问题包括两种:含约束的问题和多跳关系问题。本文对ACL2020KBQA基于查询图生成的方法来回答多跳复杂问题这一论文工作进行了解读 ... [详细]
author-avatar
挥霍无罪1988
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有