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



推荐阅读
  • 深入解析经典卷积神经网络及其实现代码
    深入解析经典卷积神经网络及其实现代码 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 最详尽的4K技术科普
    什么是4K?4K是一个分辨率的范畴,即40962160的像素分辨率,一般用于专业设备居多,目前家庭用的设备,如 ... [详细]
  • 利用PaddleSharp模块在C#中实现图像文字识别功能测试
    PaddleSharp 是 PaddleInferenceCAPI 的 C# 封装库,适用于 Windows (x64)、NVIDIA GPU 和 Linux (Ubuntu 20.04) 等平台。本文详细介绍了如何使用 PaddleSharp 在 C# 环境中实现图像文字识别功能,并进行了全面的功能测试,验证了其在多种硬件配置下的稳定性和准确性。 ... [详细]
  • Visual Studio Code (VSCode) 是一款功能强大的源代码编辑器,支持多种编程语言,具备丰富的扩展生态。本文将详细介绍如何在 macOS 上安装、配置并使用 VSCode。 ... [详细]
  • 本文将详细介绍如何注册码云账号、配置SSH公钥、安装必要的开发工具,并逐步讲解如何下载、编译 HarmonyOS 2.0 源码。通过本文,您将能够顺利完成 HarmonyOS 2.0 的环境搭建和源码编译。 ... [详细]
  • 在Windows系统中安装TensorFlow GPU版的详细指南与常见问题解决
    在Windows系统中安装TensorFlow GPU版是许多深度学习初学者面临的挑战。本文详细介绍了安装过程中的每一个步骤,并针对常见的问题提供了有效的解决方案。通过本文的指导,读者可以顺利地完成安装并避免常见的陷阱。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • Android中将独立SO库封装进JAR包并实现SO库的加载与调用
    在Android开发中,将独立的SO库封装进JAR包并实现其加载与调用是一个常见的需求。本文详细介绍了如何将SO库嵌入到JAR包中,并确保在外部应用调用该JAR包时能够正确加载和使用这些SO库。通过这种方式,开发者可以更方便地管理和分发包含原生代码的库文件,提高开发效率和代码复用性。文章还探讨了常见的问题及其解决方案,帮助开发者避免在实际应用中遇到的坑。 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
  • 深入探讨:Java 8 中 HashMap 链表为何选择红黑树而非 AVL 树
    深入探讨:Java 8 中 HashMap 链表为何选择红黑树而非 AVL 树 ... [详细]
  • 在过去,我曾使用过自建MySQL服务器中的MyISAM和InnoDB存储引擎(也曾尝试过Memory引擎)。今年初,我开始转向阿里云的关系型数据库服务,并深入研究了其高效的压缩存储引擎TokuDB。TokuDB在数据压缩和处理大规模数据集方面表现出色,显著提升了存储效率和查询性能。通过实际应用,我发现TokuDB不仅能够有效减少存储成本,还能显著提高数据处理速度,特别适用于高并发和大数据量的场景。 ... [详细]
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • 本文深入探讨了数据库性能优化与管理策略,通过实例分析和理论研究,详细阐述了如何有效提升数据库系统的响应速度和处理能力。文章首先介绍了数据库性能优化的基本原则和常用技术,包括索引优化、查询优化和存储管理等。接着,结合实际应用场景,讨论了如何利用容器化技术(如Docker)来部署和管理数据库,以提高系统的可扩展性和稳定性。最后,文章还提供了具体的配置示例和最佳实践,帮助读者在实际工作中更好地应用这些策略。 ... [详细]
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社区 版权所有