ONNX格式模型量化
深度學(xué)習(xí)模型量化支持深度學(xué)習(xí)模型部署框架支持的一種輕量化模型與加速模型推理的一種常用手段,ONNXRUNTIME支持模型的簡化、量化等腳本操作,簡單易學(xué),非常實用。 ONNX 模型量化常見的量化方法有三種:動態(tài)量化、靜態(tài)量化、感知訓(xùn)練量化,其中ONNXRUNTIME支持的動態(tài)量化機制非常簡單有效,在保持模型精度基本不變的情況下可以有效減低模型的計算量,可以輕松實現(xiàn)INT8量化。
動態(tài)量化:此方法動態(tài)計算激活的量化參數(shù)(刻度和零點)。 靜態(tài)量化:它利用校準數(shù)據(jù)來計算激活的量化參數(shù)。 量化感知訓(xùn)練量化:在訓(xùn)練時計算激活的量化參數(shù),訓(xùn)練過程可以將激活控制在一定范圍內(nèi)。當前ONNX支持的量化操作主要有:
Opset版本最低不能低于10,低于10不支持,必須重新轉(zhuǎn)化為大于opset>10的ONNX格式。模型量化與圖結(jié)構(gòu)優(yōu)化有些是不能疊加運用的,模型開發(fā)者應(yīng)該意識這點,選擇適當?shù)哪P蛢?yōu)化方法。 ONNXRUNTIME提供的模型量化接口有如下三個:
quantize_dynamic:動態(tài)量化 quantize_static:靜態(tài)量化 quantize_qat:量化感知訓(xùn)練量化
FP16量化
首先需要安裝好ONNX支持的FP16量化包,然后調(diào)用相關(guān)接口即可實現(xiàn)FP16量化與混合精度量化。安裝FP16量化支持包命令行如下:
pip install onnx onnxconverter-common
實現(xiàn)FP16量化的代碼如下:
INT8量化
最簡單的量化方式是動態(tài)量化與靜態(tài)量化。選擇感知訓(xùn)練量化機制,即可根據(jù)輸入ONNX格式模型生成INT8量化模型,代碼如下:
案例說明
YOLOv8自定義模型ONNXINT8量化版本對象檢測演示 以作者訓(xùn)練自定義YOLOv8模型為例,導(dǎo)出DM檢測模型大小為,對比導(dǎo)出FP32版本與INT8版本模型大小,相關(guān)對比信息如下:
使用FP32版本實現(xiàn)DM碼檢測,運行截圖如下:
使用INT8版本實現(xiàn)DM碼檢測,運行截圖如下:
ONNXRUNTIME更多演示
YOLOv8對象檢測 C++
YOLOv8實例分割模型 C++ 推理:
UNet語義分割模型 C++ 推理:
Mask-RCNN實例分割模型 C++ 推理:
YOLOv8姿態(tài)評估模型 C++ 推理:
人臉關(guān)鍵點檢測模型 C++ 推理:
人臉關(guān)鍵點檢測模型 Python SDK 推理:
學(xué)會用C++部署YOLOv5與YOLOv8對象檢測,實例分割,姿態(tài)評估模型,TorchVision框架下支持的Faster-RCNN,RetinaNet對象檢測、MaskRCNN實例分割、Deeplabv3 語義分割模型等主流深度學(xué)習(xí)模型導(dǎo)出ONNX與C++推理部署,輕松解決Torchvision框架下模型訓(xùn)練到部署落地難題。
審核編輯:劉清
-
C++語言
+關(guān)注
關(guān)注
0文章
147瀏覽量
7037 -
python
+關(guān)注
關(guān)注
56文章
4811瀏覽量
85075
原文標題:YOLOv8模型ONNX格式INT8量化輕松搞定
文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
esp-dl int8量化模型數(shù)據(jù)集評估精度下降的疑問求解?
yolov7 onnx模型在NPU上太慢了怎么解決?
INT8量化常見問題的解決方案
【愛芯派 Pro 開發(fā)板試用體驗】yolov8模型轉(zhuǎn)換
NCNN+Int8+yolov5部署和量化
![NCNN+<b class='flag-5'>Int8+yolov</b>5部署和<b class='flag-5'>量化</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
Int8量化-ncnn社區(qū)Int8重構(gòu)之路
![<b class='flag-5'>Int8</b><b class='flag-5'>量化</b>-ncnn社區(qū)<b class='flag-5'>Int8</b>重構(gòu)之路](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
使用YOLOv8做目標檢測和實例分割的演示
YOLOv8自定義數(shù)據(jù)集訓(xùn)練到模型部署推理簡析
在AI愛克斯開發(fā)板上用OpenVINO?加速YOLOv8目標檢測模型
![在AI愛克斯開發(fā)板上用OpenVINO?加速<b class='flag-5'>YOLOv8</b>目標檢測<b class='flag-5'>模型</b>](https://file1.elecfans.com/web2/M00/82/B1/wKgZomRdkeGAd8S2AAAm8DCq3H4572.png)
AI愛克斯開發(fā)板上使用OpenVINO加速YOLOv8目標檢測模型
![AI愛克斯開發(fā)板上使用OpenVINO加速<b class='flag-5'>YOLOv8</b>目標檢測<b class='flag-5'>模型</b>](https://file1.elecfans.com/web2/M00/88/B7/wKgaomRwIXSAVKmcAAAm8DCq3H4143.png)
教你如何用兩行代碼搞定YOLOv8各種模型推理
![教你如何用兩行代碼<b class='flag-5'>搞定</b><b class='flag-5'>YOLOv8</b>各種<b class='flag-5'>模型</b>推理](https://file1.elecfans.com/web2/M00/8A/05/wKgZomSOf3iAf_ATAABcweWVywE605.png)
三種主流模型部署框架YOLOv8推理演示
OpenCV4.8+YOLOv8對象檢測C++推理演示
![OpenCV4.8+<b class='flag-5'>YOLOv8</b>對象檢測C++推理演示](https://file1.elecfans.com/web2/M00/A6/4A/wKgaomUTnKaAcPtnAAAnAPpreBA561.png)
Yolo系列模型的部署、精度對齊與int8量化加速
基于YOLOv8的自定義醫(yī)學(xué)圖像分割
![基于<b class='flag-5'>YOLOv8</b>的自定義醫(yī)學(xué)圖像分割](https://file1.elecfans.com/web2/M00/B6/E6/wKgaomWCWJiAM1oBAAARpnn1nSs514.jpg)
評論