深度学习论文: Q-YOLO: Efficient Inference for Real-time Object Detection及其PyTorch实现

深度学习论文: Q-YOLO: Efficient Inference for Real-time Object Detection及其PyTorch实现
Q-YOLO: Efficient Inference for Real-time Object Detection
PDF: https://arxiv.org/pdf/2307.04816.pdf
PyTorch代码: https://github.com/shanglianlm0525/CvPytorch
PyTorch代码: https://github.com/shanglianlm0525/PyTorch-Networks

1 概述

本文介绍了一种低比特量化方法,名为Q-YOLO,用于构建高效的一阶段检测器。Q-YOLO能够有效解决传统量化YOLO模型中由于激活分布不平衡而导致的性能下降问题。Q-YOLO引入了完全端到端的后训练量化(PTQ)流程,并采用了精心设计的单侧直方图(UH)激活量化方案。该方案通过直方图分析确定最大截断值,从而最小化均方误差(MSE)量化误差。在COCO数据集上进行了大量实验,结果表明Q-YOLO的有效性,它在精度和计算成本之间取得了更有利的平衡,并且优于其他PTQ方法。
在这里插入图片描述
在YOLOv5s模型的model.21.conv层中绘制了激活值分布直方图(使用2048个箱子)。观察到值在0和-0.2785之间的出现频率非常高,而大于零的值的频率显著减少,这表明激活值存在严重的不平衡现象。

2 Q-YOLO

Q-YOLO对YOLO模型的骨干、中间和头部模块进行量化,并使用标准的MinMax量化方法对权重进行处理。为了解决激活分布不平衡的问题,我们引入了一种新颖的方法,称为基于单侧直方图(UH)的激活量化。UH通过直方图迭代地确定最大截断值,从而最小化量化误差。这种技术显著减少了校准时间,并有效地解决了量化引起的差异,优化了量化过程以保持稳定的激活量化。通过减少激活量化中的信息损失,我们的方法确保了准确的目标检测结果,从而实现了精确可靠的低比特实时目标检测性能。
在这里插入图片描述
量化范围设置是建立量化网格的上下截断阈值(分别表示为u和l)的过程。范围设置中的关键权衡在于两种类型的误差之间的平衡:截断误差舍入误差。当数据被截断以适应预定义的网格限制时,就会产生截断误差。这种截断导致了信息的丢失,并降低了结果量化表示的精度。另一方面,舍入误差是由于舍入操作引入的不准确性而产生的。这种误差会随着时间的推移而累积,并对量化表示的整体准确性产生影响。
MinMax: 没有截断误差。但是对异常值很敏感,强烈的异常值可能会导致过多的舍入误差。
Mean Squared Error (MSE):一定程度上可以缓解大异常值的问题。
Unilateral Histogram-based (UH):本文观察到数值分布集中在下界附近,并伴随着在零以上的出现次数明显减少。对激活值的进一步分析揭示了经验值-0.2785作为下界。这主要是由于YOLO系列中频繁使用的Swish(SILU)激活函数导致的。根据经验证据,我们引入了一种称为单边基于直方图(UH)激活量化的非对称量化方法。在UH中,将最小截断值固定为-0.2785,同时通过迭代确定最小化量化误差的最大截断值,如下所示:
在这里插入图片描述

Unilateral Histogram-based (UH)如下:
在这里插入图片描述
UH激活量化方法具有两个关键优势。

  • 首先,它显著减少了校准时间。
  • 其次,它通过允许更大的整数集合来表示在0和-0.2785之间频繁出现的激活值,从而提高了量化精度,确保了稳定的激活量化。

3 Experiments

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/14644.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#..上位机软件的未来是什么?

C#是一种流行的编程语言,广泛应用于桌面应用程序和上位机软件开发。未来,C#上位机软件将继续不断发展和创新,以满足用户日益增长的需求。以下是我认为C#上位机软件未来可能会涉及的一些方向: 更加智能化:随着人工智能…

架构基本概念和架构本质

什么是架构和架构本质 在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前,我们先讨论架构的概念定义,概念是人认识这个世界的基础&…

python中如何记录日志?

日志是一种可以追踪某些软件运行时所发生事件的方法。一条日志信息对应的是一个事件的发生,而一个事件通常需要包括以下几个内容:事件发生时间、事件发生位置、事件的严重程度--日志级别、事件内容。 logging模块定义的函数和类为应用程序和库的开发实现…

pytest 入门

1,安装pytest 打开终端或命令提示符窗口,在终端中运行以下命令来安装pytest: pip install pytestpip install -i https://pypi.tuna.tsinghua.edu.cn/simple pytest 确保您的系统上已经安装了Python。您可以在终端中运行以下命令来检查Python的安装情况: pytest --version…

【Spring】Spring 下载及其 jar 包

根据 【动力节点】最新Spring框架教程,全网首套Spring6教程,跟老杜从零学spring入门到高级 以及老杜的原版笔记 https://www.yuque.com/docs/share/866abad4-7106-45e7-afcd-245a733b073f?# 《Spring6》 进行整理, 文档密码:mg9b…

自己创建的类,其他类中使用错误

说明:自己创建的类,在其他类中创建,报下面的错误(Cannot resolve sysmbol ‘Redishandler’); 解决:看下是不是漏掉了包名 加上包名,问题解决;

QPoint、QLine、QSize、QRect

QPoint、QLine、QSize、QRect QPointQLineQSizeQRect QPoint // 构造函数 // 构造一个坐标原点, 即(0, 0) QPoint::QPoint(); // 参数为 x轴坐标, y轴坐标 QPoint::QPoint(int xpos, int ypos);// 设置x轴坐标 void QPoint::setX(int x); // 设置y轴坐标 void QPoint::setY(in…

使用jmeter+ant+jenkins+git搭建自动化测试平台

最近正在学习自动化测试,于是随手搭建了一下jmeterantjenkinsgit平台。 接下来,我会按照jdk,jmeter,ant,jenkins,git这个顺序一步一步的搭建起来。 一、jdk。这个就不多说了。我用的是1.8版本的,配环境变…

Golang之路---02 基础语法——常量 (包括特殊常量iota)

常量 //显式类型定义const a string "test" //隐式类型定义const b 20 //多个常量定义 const(c "test2"d 2.3e 27)iota iota是Golang语言的常量计数器,只能在常量表达式中使用 iota在const关键字出现时将被重置为0,const中每新…

【Golang】Golang进阶系列教程--Go 语言数组和切片的区别

文章目录 前言数组声明以及初始化函数参数 切片声明以及初始化函数参数 总结 前言 在 Go 语言中,数组和切片看起来很像,但其实它们又有很多的不同之处,这篇文章就来说说它们到底有哪些不同。 数组和切片是两个常用的数据结构。它们都可以用…

appium的基本使用

appium的基本使用 一、appium的基本使用appium环境安装1、安装Android SDK 2、安装Appium3、安装手机模拟器4、Pycharm安装 appium-python-alicent5、连接appium和模拟器6、Python代码调用appium软件,appium软件在通过adb命令调用android操作系统(模拟器…

使用BERT分类的可解释性探索

最近尝试了使用BERT将告警信息当成一个文本去做分类,从分类的准召率上来看,还是取得了不错的效果(非结构化数据强标签训练,BERT确实是一把大杀器)。但准召率并不是唯一追求的目标,在安全场景下,…

代码版本管理工具 git

1. 去B站看视频学习,只看前39集: 01-Git概述(Git历史)_哔哩哔哩_bilibili 2.学习Linux系统文本编辑器的使用 vi编辑器操作指令分享 (baidu.com) (13条消息) nano编辑器的使用_SudekiMing的博客-CSDN博客 windows下载安装Git官…

状态机实现N位按键消抖

状态机实现N位按键消抖 1、原理 利用状态机实现按键的消抖,具体的原理可参考 (50条消息) 基于FPGA的按键消抖_fpga 按键消抖_辣子鸡味的橘子的博客-CSDN博客 状态机简介: 状态机分类可以主要分为两类:moore和mealy 根据三段式状态机最后…

分布式文件存储与数据缓存 Redis高可用分布式实践(上)

一、Reids概述 1.1 为什么要使用NoSQL 单机Mysql的美好年代 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付。在那个时候,更多的都是静态网页,动态交互类型的网站不多。 遇到问题: 随着用户数的…

内网隧道代理技术(十四)之 Earthworm的使用(一级代理)

Earthworm的使用(一级代理) ew 全称是EarchWorm,是一套轻量便携且功能强大的网络穿透工具,基于标准C开发,具有socks5代理、端口转发和端口映射三大功能,可在复杂网络环境下完成网络穿透,且支持全平台(Windows/Linux/Mac)。该工具能够以“正向”、“反向”、“多级级联”…

安防监控视频汇聚EasyCVR修改录像计划等待时间较长,是什么原因?

安防监控视频EasyCVR视频融合汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发等。音视频流媒体视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、云存储、回放与检…

推荐用于学习RN原生模块开发的开源库—react-native-ble-manager

如题RN的原生模块/Native Modules的开发是一项很重要的技能,但RN官网的示例又比较简单,然后最近我接触与使用、还有阅读了react-native-ble-manager的部份源码,发现里边完全包含了一个Native Modules所涉及的知识点/技术点,故特推…

Kibana+Prometheus+node_exporter 监控告警部署

下载好三个软件包 一、prometheus安装部署 1、解压 linxxubuntu:~/module$ tar -xvf prometheus-2.45.0-rc.0.linux-amd64.tar.gz 2、修改配置文件的IP地址 # my global config global:scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is ever…

【论文阅读】利用道路目标特征的多期车载激光点云配准

目录 引 言1 道路场景点云特征2 配准方法2.1 配准基元获取2.2 特征点提取2.3 两期道路场景车载点云的配准 2.3.1 基于特征点的4PCS 粗配准 3 实验与分析4 结论5 参考文献 摘 要 针对车载移动测量系统获取的城市道路点云场景巨大、目标复杂多样,多期道路场景重访车载…