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

news2024/11/23 22:41:10

深度学习论文: 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.coloradmin.cn/o/795375.html

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

相关文章

LeetCode 918. Maximum Sum Circular Subarray【数组,动态规划】中等

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

215.数组中的第K个最大元素-C++

题目来源:力扣 题目描述: 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法…

Java书签 #解锁MyBatis的4种批量插入方式及ID返回姿势

1. 今日书签 项目开发中,我们经常会用到单条插入和批量插入。但是实际情况可能是,项目初期由于种种原因,在业务各处直接使用单条插入SQL进行开发(未开启批处理),在后面的迭代中,系统性能问题渐…

Spring Boot 集成 Redis 三种模式实践汇总

背景 项目的某个模块集成了 SpringBoot Redis 包,客户端使用 Lettuce,Redis 测试环境单机模式。但是现场反馈的 Redis 环境是集群,如果简单的修改 spring.redis 配置为集群的配置信息,程序能否能无缝衔接呢? 本文记录…

Android Studio 的版本控制Git

Android Studio 的版本控制Git。 Git 是最流行的版本控制工具,本文介绍其在安卓开发环境Android Studio下的使用。 本文参考链接是:https://learntodroid.com/how-to-use-git-and-github-in-android-studio/ 一:Android Studio 中设置Git …

智安网络|实现数据安全:探索数据动态脱敏的落地策略

在当今数字化时代,数据安全成为企业和组织管理中的头等大事。然而,数据共享和数据大规模处理的需求也日益增长,这就需要在数据传输和存储过程中采取措施来保护用户的隐私。数据动态脱敏技术应运而生,为解决数据隐私和保护的问题提…

【雕爷学编程】Arduino动手做(93)--- 0.96寸OLED液晶屏模块3

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

Doris(二) -通过外部表同步数据

前言 参考网址 1.官网 2.ODBC External Table Of Doris 3.Apache doris ODBC外表使用方式 第一步 创建 RESOURCE DROP RESOURCE IF EXISTS mysql_test_odbc; CREATE EXTERNAL RESOURCE mysql_test_odbc PROPERTIES ( "type" "odbc_catalog", "…

《JeecgBoot系列》 表单实现指定列导出Excel“合并单元格“

表单"合计"列导出Excel合并单元格 注解: Excel 参数:mergeVertical,参数设置为Boolean类型,默认为false。当设置为true时,可以纵向合并内容相同的单元格 1.需求 介绍:每个类别下有多个型号&…

linux免交互

免交互 指不需要人为控制就可以完成的自动化操作。 shell脚本和免交互是一个概念,但是有两种写法。shell脚本基于bash。 here Document 免交互 它是一种标准输入,只能接收正确的命令,它主要是使用i/o重定向的方式将命令的列表提供给交互式…

BFS()

目录 多源BFS 矩阵距离 最小步数模型 魔板 八数码 双端队列广搜 电路维修 双向广搜 字串变换 A* 第K短路 多源BFS 单源BFS是求一个点到起点的最短距离 多源BFS是求有很多个起点,某一点到离它最近一个起点的距离 矩阵距离 给定一个 N 行M 列的 01矩阵…

【每日一题】—— C. Tiles Comeback (Codeforces Round 888 (Div. 3))

🌏博客主页:PH_modest的博客主页 🚩当前专栏:每日一题 💌其他专栏: 🔴 每日反刍 🟡 C跬步积累 🟢 C语言跬步积累 🌈座右铭:广积粮,缓称…

FTP客户端登录报错:Login failed

FTP客户端登录报错:Login failed 是selinux的问题,一般用户无法登录用户主目录 [rootchenshuyi ~]# setsebool -P tftp_home_dir 1

Filebeat学习笔记

Filebeat基本概念 简介 Filebeat是一种轻量级日志采集器,内置有多种模块(auditd、Apache、Nginx、System、MySQL等),针对常见格式的日志大大简化收集、解析和可视化过程,只需一条命令即可。之所以能实现这一点&#…

【Go语言】Golang保姆级入门教程 Go初学者介绍chapter1

Golang 开山篇 Golang的学习方向 区块链研发工程师: 去中心化 虚拟货币 金融 Go服务器端、游戏软件工程师 : C C 处理日志 数据打包 文件系统 数据处理 很厉害 处理大并发 Golang分布式、云计算软件工程师:盛大云 cdn 京东 消息推送 分布式文…

集睿致远推出CS5466多功能拓展坞方案:支持DP1.4、HDMI2.1视频8K输出

ASL新推出的 CS5466是一款Type-C/DP1.4转HDMI2.1的显示协议转换芯片,,它通过类型C/显示端口链路接收视频和音 频流,并转换为支持TMDS或FRL输出信令。DP接收器支持81.Gbp s链路速率。HDMI输出端口可以作为TMDS或FRL发射机工作。FRL发射机符合HDMI 2.1规范…

08综合评价作业

某核心企业需要在6个待选的零部件供应商中选择一个合作伙伴,各待选供应商有关数据如表1所列,试从中选择一个最优供应商(理想解法) 评价指标产品质量产品价格/元地理位置/km售后服务/h技术水平经济效益供应能力/件市场影响度交货情况10.83326213.20.20.1…

Emacs之实现鼠标/键盘选中即拷贝外界内容(一百二十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

linux操作历史history定制

history记录 Linux中历史操作记录history是一个很有用的功能,有时忘记了,翻翻以前的命令,十分方便。 # 展示所有历史记录 history # 筛选历史记录 history | grep nginx # 清除全部记录 -c history -c # 指定删除某一行,15是行号 history -…

5-Ngnix配置基于用户访问控制和IP的虚拟主机

目录 5.1.Ngnix配置基于用户访问控制的多虚拟主机 5.1.1.前提条件 5.1.2.Ngnix配置基于用户访问控制的多虚拟主机 5.2.Ngnix配置基于IP的虚拟主机 5.3.Ngnix配置基于IP的多虚拟主机 Nginx配置文件在/usr/local/nginx/conf下,文件名为nginx.conf 5.1.Ngnix配置…