【YOLOv8量化】普通CPU上加速推理可达100+FPS

2023-12-20 10:20

本文主要是介绍【YOLOv8量化】普通CPU上加速推理可达100+FPS,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

NNCF介绍

OpenVINO2023版本衍生出了一个新支持工具包NNCF(Neural Network Compression Framework – 神经网络压缩框架),通过对OpenVINO IR格式模型的压缩与量化更好的提升模型在OpenVINO框架上部署的推理性能,github。

https://github.com/openvinotoolkit/nncf

安装NNCF

pip install nncf

NNCF关键特性

训练后压缩算法支持权重压缩与量化,训练时压缩算法支持感知量化、混合精度量化、二值、稀疏、过滤剪枝、运动剪枝等算法。图示如下:
在这里插入图片描述

YOLOv8量化压缩

基于NNCF实现YOLOv8预训练模型的训练后量化压缩(PTQ),实现INT8量化YOLOv8模型生成。首先需要使用YOLOv8命令行工具导出OpenVINO格式模型,命令行如下:

yolo export model=yolov8n.pt format=openvino

然后基于YOLOv8框架的函数构建一个YOLOv8模型对应的COCO数据集的Validator,相关的代码如下:
在这里插入图片描述
官方给出的代码里面是有个ValidatorClass,但是我发现YOLOv8框架早已经不支持,这里其实主要是构建自己的Dataset跟DataLoader而已,简单粗暴的点是可以自己直接构建,就是要写点代码。我发现了YOLOv8框架里面有个DetectionValidator是可以用的,于是我就用这个,然后直接给一个图像文件夹就可以获取dataloader实例了。准备好验证数据以后,就是最后一步了,启动模型INT8量化,相关的代码如下:
在这里插入图片描述
这样就可以完成PTQ量化模型的生成。最后这部分的代码,其实在GITHUB的官方教程上是有说明跟给出的,我这里再贴一下:
在这里插入图片描述
在这里插入图片描述
就是说,实际上针对自定义数据集,你自己构建一个DataLoader即可。
量化版YOLOv8推理测试

基于YOLOv8 INT8量化模型,OpenVINO C++ SDK在不同的部署与加速方式下,最终的测试结果如下:
YOLOv8+OpenVINO2023.1 异步推理
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从此,我又相信YOLOv8+OpenVINO了。

特别说明

OpenVINO20023.1版本测试。
学会使用最新版本OpenVINO框架实现模型加速,请看本人新书
《OpenCV应用开发:入门、进阶与工程化实践》
第十五章相关内容!!!!

这篇关于【YOLOv8量化】普通CPU上加速推理可达100+FPS的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/515668

相关文章

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

MySQL的cpu使用率100%的问题排查流程

《MySQL的cpu使用率100%的问题排查流程》线上mysql服务器经常性出现cpu使用率100%的告警,因此本文整理一下排查该问题的常规流程,文中通过代码示例讲解的非常详细,对大家的学习或工作有一... 目录1. 确认CPU占用来源2. 实时分析mysql活动3. 分析慢查询与执行计划4. 检查索引与表

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入

使用Python检查CPU型号并弹出警告信息

《使用Python检查CPU型号并弹出警告信息》本教程将指导你如何编写一个Python程序,该程序能够在启动时检查计算机的CPU型号,如果检测到CPU型号包含“I3”,则会弹出一个警告窗口,感兴趣的小... 目录教程目标方法一所需库步骤一:安装所需库步骤二:编写python程序步骤三:运行程序注意事项方法二

Java程序到CPU上执行 的步骤

相信很多的小伙伴在最初学习编程的时候会容易产生一个疑惑❓,那就是编写的Java代码究竟是怎么一步一步到CPU上去执行的呢?CPU又是如何执行的呢?今天跟随小编的脚步去化解开这个疑惑❓。 在学习这个过程之前,我们需要先讲解一些与本内容相关的知识点 指令 指令是指导CPU运行的命令,主要由操作码+被操作数组成。 其中操作码用来表示要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也

【LeetCode热题100】前缀和

这篇博客共记录了8道前缀和算法相关的题目,分别是:【模版】前缀和、【模版】二维前缀和、寻找数组的中心下标、除自身以外数组的乘积、和为K的子数组、和可被K整除的子数组、连续数组、矩阵区域和。 #include <iostream>#include <vector>using namespace std;int main() {//1. 读取数据int n = 0, q = 0;ci

Chapter 13 普通组件的注册使用

欢迎大家订阅【Vue2+Vue3】入门到实践 专栏,开启你的 Vue 学习之旅! 文章目录 前言一、组件创建二、局部注册三、全局注册 前言 在 Vue.js 中,组件是构建应用程序的基本单元。本章详细讲解了注册和使用 Vue 的普通组件的两种方式:局部注册和全局注册。 本篇文章参考黑马程序员 一、组件创建 ①定义 Vue 组件是一种具有特定功能的 Vue 实

YOLOv8/v10+DeepSORT多目标车辆跟踪(车辆检测/跟踪/车辆计数/测速/禁停区域/绘制进出线/绘制禁停区域/车道车辆统计)

01:YOLOv8 + DeepSort 车辆跟踪 该项目利用YOLOv8作为目标检测模型,DeepSort用于多目标跟踪。YOLOv8负责从视频帧中检测出车辆的位置,而DeepSort则负责关联这些检测结果,从而实现车辆的持续跟踪。这种组合使得系统能够在视频流中准确地识别并跟随特定车辆。 02:YOLOv8 + DeepSort 车辆跟踪 + 任意绘制进出线 在此基础上增加了用户

PyInstaller问题解决 onnxruntime-gpu 使用GPU和CUDA加速模型推理

前言 在模型推理时,需要使用GPU加速,相关的CUDA和CUDNN安装好后,通过onnxruntime-gpu实现。 直接运行python程序是正常使用GPU的,如果使用PyInstaller将.py文件打包为.exe,发现只能使用CPU推理了。 本文分析这个问题和提供解决方案,供大家参考。 问题分析——找不到ONNX Runtime GPU 动态库 首先直接运行python程序

牛客小白月赛100部分题解

比赛地址:牛客小白月赛100_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ A.ACM中的A题 #include<bits/stdc++.h>using namespace std;#define ll long long#define ull = unsigned long longvoid solve() {ll a,b,c;cin>>a>>b>