YOLOv8模型ONNX格式INT8量化轻松搞定

ONNX格式模型量化

深度学习模型量化支持深度学习模型部署框架支持的一种轻量化模型与加速模型推理的一种常用手段,ONNXRUNTIME支持模型的简化、量化等脚本操作,简单易学,非常实用。

ONNX 模型量化常见的量化方法有三种:动态量化、静态量化、感知训练量化,其中ONNXRUNTIME支持的动态量化机制非常简单有效,在保持模型精度基本不变的情况下可以有效减低模型的计算量,可以轻松实现INT8量化。


1. 动态量化:此方法动态计算激活的量化参数(刻度和零点)。
2. 静态量化:它利用校准数据来计算激活的量化参数。
3. 量化感知训练量化:在训练时计算激活的量化参数,训练过程可以将激活控制在一定范围内。

当前ONNX支持的量化操作主要有:

image.png

Opset版本最低不能低于10,低于10不支持,必须重新转化为大于opset>10的ONNX格式。模型量化与图结构优化有些是不能叠加运用的,模型开发者应该意识这点,选择适当的模型优化方法。

ONNXRUNTIME提供的模型量化接口有如下三个:

1. quantize_dynamic:动态量化
2. quantize_static:静态量化
3. quantize_qat:量化感知训练量化

FP16量化

首先需要安装好ONNX支持的FP16量化包,然后调用相关接口即可实现FP16量化与混合精度量化。安装FP16量化支持包命令行如下:

pip install onnx onnxconverter-common

实现FP16量化的代码如下:

import onnx
from onnxconverter_common import float16model = onnx.load("path/to/model.onnx")
model_fp16 = float16.convert_float_to_float16(model)
onnx.save(model_fp16,"path/to/model_fp16.onnx")

INT8量化

最简单的量化方式是动态量化与静态量化。选择感知训练量化机制,即可根据输入ONNX格式模型生成INT8量化模型,代码如下:

import onnx
from onnxruntime.quantization import quantize_qat, QuantTypemodel_fp32 = "path/to/model.onnx"
model_quant = "path/to/model.quant.onnx"# 加载FP32模型
onnx_model = onnx.load(model_fp32)# 进行量化
quantized_model = quantize_qat(model=onnx_model,quantization_type=QuantType.QInt8,force_fusions=True
)# 保存量化模型
onnx.save_model(quantized_model, model_quant)

案例说明

YOLOv8自定义模型ONNXINT8量化版本对象检测演示

以作者训练自定义YOLOv8模型为例,导出DM检测模型大小为,对比导出FP32版本与INT8版本模型大小,相关对比信息如下:

image.png

使用INT8版本实现DM码检测,运行截图如下:

image.png

ONNXRUNTIME更多演示

YOLOv8 对象检测 C++ 

image.png

YOLOv8实例分割模型 C++ 推理:

image.png

UNet语义分割模型 C++ 推理:

image.png

Mask-RCNN实例分割模型 C++ 推理:

image.png

YOLOv8姿态评估模型 C++ 推理:

image.png

人脸关键点检测模型 C++ 推理:

image.png

人脸关键点检测模型 Python SDK 推理:

image.png

学会用C++部署YOLOv5与YOLOv8对象检测,实例分割,姿态评估模型,TorchVision框架下支持的Faster-RCNN,RetinaNet对象检测、MaskRCNN实例分割、Deeplabv3 语义分割模型等主流深度学习模型导出ONNX与C++推理部署,轻松解决Torchvision框架下模型训练到部署落地难题。

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

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

相关文章

刚安装的MySQL使用Navicat操作数据库遇到的问题

刚安装的MySQL使用Navicat操作数据库遇到的问题 一、编辑连接保存报错二、打开数据表很慢三、MySQL的进程出现大量“sleep”状态的进程四、执行sql脚本报错,部分表导不进去五、当前MySQL配置文件 一、编辑连接保存报错 连接上了数据库,编辑连接保存报错…

Mysql:RC隔离级别下如何提高并发?

RC 一、索引二、唯一索引 最近在Mysql RC隔离级别下遇到个问题:源表并发upsert目标表报错:Deadlock found when try to get lock 一、索引 Mysql是支持行锁的,但是行锁只是针对索引列,若删除条件未加索引会导致走表锁,这样就会造成死锁 二、唯一索引 索引建了之后运行还是报…

Linux下内网穿透实现云原生观测分析工具的远程访问

📑前言 本文主要是Linux下内网穿透实现云原生观测分析工具的远程访问设置的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 &…

Peter算法小课堂—八皇后问题

独立集问题&#xff1a;安排互不冲突的个体 四个斜眼枪手 bool valid(int x,int y){for(int i1;i<min(x,y);i)if(f[x-i][y-i]) return 0;for(int i1;i<min(x,N-1-y);i)if(f[x-i][yi]) return 0;return 1; } void dfs(int x,int y,int c){if(cGUNS){ans;print();return;}i…

淘宝天猫1688以图搜图接口,按图搜索商品,API接口调用展示(拍立淘API)

淘宝拍立淘图片搜索接口技术主要基于图像识别和内容匹配。图像识别是利用计算机视觉技术&#xff0c;对上传的图片进行特征提取和识别&#xff0c;从而找到与该图片相似的商品。内容匹配则是通过文本与图片内容的关联性&#xff0c;对商品标题、描述等信息进行匹配&#xff0c;…

Bard和ChatGPT的一些比较

Bard和ChatGPT的一些比较 2023.11.8版权声明&#xff1a;本文为博主chszs的原创文章&#xff0c;未经博主允许不得转载。 选择正确的自动文本生成工具对企业至关重要。本文将详细分析谷歌 Bard 和 ChatGPT 的优缺点&#xff0c;以帮助企业做出明智的选择。无论企业关注的是客…

django|报错SQLite 3.8.3 or later is required的解决方案

迁移原同事写的程序&#xff0c;到新服务器上边。运行报错。解决方案有三种 降低django版本升级sqlite3&#xff0c;不低于3.8.3版本修改django源码 方案一、降低django版本 卸载高版本django pip uninstall django安装低版本&#xff0c;如 pip install django2.1.7注意&…

asp.net core 获取服务实例的几种方式

在ASP.NET Core中&#xff0c;我们可以使用以下几种方式来获取服务&#xff1a; 构造函数注入&#xff08;Constructor Injection&#xff09;&#xff1a;在需要使用服务的类的构造函数中声明对应的服务类型参数&#xff0c;ASP.NET Core会自动将对应的服务实例注入进来。例如…

贝锐蒲公英智慧运维方案:实现远程网络监控、管理、维护工业设备

为了提升运维效率&#xff0c;能够及时发现和响应设备的故障、异常和潜在问题。 越来越多的企业都在搭建“集中式”的远程智慧运维体系&#xff0c;以提高运维效率和降低成本。 但是&#xff0c;受限于网络&#xff0c;将不同地域的资源和信息进行整合&#xff0c;实现统一管理…

招聘信息采集

首先&#xff0c;我们需要使用PHP的curl库来发送HTTP请求。以下是一个基本的示例&#xff1a; <?php // 初始化curl $ch curl_init();// 设置代理 curl_setopt($ch, CURLOPT_PROXY, "jshk.com.cn");// 设置URL curl_setopt($ch, CURLOPT_URL, "http://www…

linuxC语言缓冲区及小程序的实现

文章目录 1.文件缓冲区1.1介绍1.2缓冲文件系统1.3冲刷函数fflush1.4认识linux下的缓冲区 2.linux小程序的实现2.1 回车\r和换行\n2.2倒计时程序2.3进度条小程序sleep/usleep代码运行结果 1.文件缓冲区 1.1介绍 为缓和 CPU 与 I/O 设备之间速度不匹配&#xff0c;文件缓冲区用以…

2023最新版本 从零基础入门C++与QT(学习笔记) -1- C++输入与输出

&#x1f38f;说在前面 &#x1f388;我预计是使用两个月的时间玩转C与QT &#x1f388;所以这是一篇学习笔记 &#x1f388;根据学习的效率可能提前完成学习,加油&#xff01;&#xff01;&#xff01; 输入(代码如下方代码块) &#x1f384;分析一下构成 &#x1f388;…

HTML页面模拟了一个类似Excel的表格在线diy修改表格内容

html实现在线表格编辑&#xff0c;可以修改每个表格内容&#xff0c;并且可以添加行和列 这个HTML页面模拟了一个类似Excel的表格&#xff0c;可以添加和删除行和列&#xff0c;并且可以编辑每个表格的内容。通过点击按钮可以添加新的行和列&#xff0c;通过按钮可以删除最后一…

力扣第583题 两个字符串的删除操作 c++ 动态规划 附Java代码

题目 583. 两个字符串的删除操作 中等 相关标签 字符串 动态规划 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 示例 1&#xff1a; 输入: word1 "sea", word2 &q…

机器学习模型超参数优化最常用的5个工具包!

优化超参数始终是确保模型性能最佳的关键任务。通常&#xff0c;网格搜索、随机搜索和贝叶斯优化等技术是主要使用的方法。 今天分享几个常用于模型超参数优化的 Python 工具包&#xff0c;如下所示&#xff1a; scikit-learn&#xff1a;使用在指定参数值上进行的网格搜索或…

关灯游戏及扩展

7.8 图形界面应用案例——关灯游戏 题目&#xff1a; [案例]游戏初步——关灯游戏。 关灯游戏是很有意思的益智游戏&#xff0c;玩家通过单击关掉(或打开)一盏灯。如果关(掉&#xff08;或打开)一个电灯&#xff0c;其周围(上下左右)的电灯也会触及开关&#xff0c;成…

JSON可视化管理工具JSON Hero

本文软件由网友 zxc 推荐&#xff1b; 什么是 JSON Hero &#xff1f; JSON Hero 是一个简单实用的 JSON 工具&#xff0c;通过简介美观的 UI 及增强的额外功能&#xff0c;使得阅读和理解 JSON 文档变得更容易、直观。 主要功能 支持多种视图以便查看 JSON&#xff1a;列视图…

css:clip元素裁剪实现Loading加载效果边框

clip 属性定义了元素的哪一部分是可见的。clip 属性只适用于 position:absolute 的元素。 警告&#xff1a; 这个属性已被废弃。建议使用 clip-path 文档 https://developer.mozilla.org/zh-CN/docs/Web/CSS/cliphttps://developer.mozilla.org/zh-CN/docs/Web/CSS/clip-path …

liunx系统目录结构

列出目录 ls -l bin 二进制文件 boot 启动liunx的一些核心文件 dev 外部设备liunx的 etc 存放系统管理的配置文件和子目录都在这里面 home 家目录 lib 动态链接库 windows中的dll lostfound 一般为空 非法关机 存放文件 media 自带识别设备 识别挂载…

Linux安装MySQL8.0服务

Linux安装MySQL8.0服务 文章目录 Linux安装MySQL8.0服务一、卸载1.1 查看mariadb1.2 卸载 二、安装2.1 下载2.2 上传2.3 解压2.4 重命名2.5 删除2.6 创建目录2.7 环境变量2.8 修改配置2.9 配置文件2.9 用户与用户组2.10 初始化2.11 其它 三、开启远程连接MySQL 一、卸载 首先第…