0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

OpenCV學(xué)堂 ? 來源:OpenCV學(xué)堂 ? 2023-07-18 09:34 ? 次閱讀

ONNX格式模型量化

深度學(xué)習(xí)模型量化支持深度學(xué)習(xí)模型部署框架支持的一種輕量化模型與加速模型推理的一種常用手段,ONNXRUNTIME支持模型的簡(jiǎn)化、量化等腳本操作,簡(jiǎn)單易學(xué),非常實(shí)用。 ONNX 模型量化常見的量化方法有三種:動(dòng)態(tài)量化、靜態(tài)量化、感知訓(xùn)練量化,其中ONNXRUNTIME支持的動(dòng)態(tài)量化機(jī)制非常簡(jiǎn)單有效,在保持模型精度基本不變的情況下可以有效減低模型的計(jì)算量,可以輕松實(shí)現(xiàn)INT8量化。

動(dòng)態(tài)量化:此方法動(dòng)態(tài)計(jì)算激活的量化參數(shù)(刻度和零點(diǎn))。
靜態(tài)量化:它利用校準(zhǔn)數(shù)據(jù)來計(jì)算激活的量化參數(shù)。
量化感知訓(xùn)練量化:在訓(xùn)練時(shí)計(jì)算激活的量化參數(shù),訓(xùn)練過程可以將激活控制在一定范圍內(nèi)。
當(dāng)前ONNX支持的量化操作主要有:

e0acd6fc-24b2-11ee-962d-dac502259ad0.png

Opset版本最低不能低于10,低于10不支持,必須重新轉(zhuǎn)化為大于opset>10的ONNX格式。模型量化與圖結(jié)構(gòu)優(yōu)化有些是不能疊加運(yùn)用的,模型開發(fā)者應(yīng)該意識(shí)這點(diǎn),選擇適當(dāng)?shù)哪P蛢?yōu)化方法。 ONNXRUNTIME提供的模型量化接口有如下三個(gè):

quantize_dynamic:動(dòng)態(tài)量化
quantize_static:靜態(tài)量化
quantize_qat:量化感知訓(xùn)練量化

FP16量化

首先需要安裝好ONNX支持的FP16量化包,然后調(diào)用相關(guān)接口即可實(shí)現(xiàn)FP16量化與混合精度量化。安裝FP16量化支持包命令行如下:

pip install onnx onnxconverter-common

實(shí)現(xiàn)FP16量化的代碼如下:

e0c49292-24b2-11ee-962d-dac502259ad0.png

INT8量化

最簡(jiǎn)單的量化方式是動(dòng)態(tài)量化與靜態(tài)量化。選擇感知訓(xùn)練量化機(jī)制,即可根據(jù)輸入ONNX格式模型生成INT8量化模型,代碼如下:

e0edb3f2-24b2-11ee-962d-dac502259ad0.png

案例說明

YOLOv8自定義模型ONNXINT8量化版本對(duì)象檢測(cè)演示 以作者訓(xùn)練自定義YOLOv8模型為例,導(dǎo)出DM檢測(cè)模型大小為,對(duì)比導(dǎo)出FP32版本與INT8版本模型大小,相關(guān)對(duì)比信息如下:

e10cf1ea-24b2-11ee-962d-dac502259ad0.png

使用FP32版本實(shí)現(xiàn)DM碼檢測(cè),運(yùn)行截圖如下:

e13ad98e-24b2-11ee-962d-dac502259ad0.png

使用INT8版本實(shí)現(xiàn)DM碼檢測(cè),運(yùn)行截圖如下:

e15759ec-24b2-11ee-962d-dac502259ad0.png

ONNXRUNTIME更多演示

YOLOv8對(duì)象檢測(cè) C++

e17efd08-24b2-11ee-962d-dac502259ad0.jpg

YOLOv8實(shí)例分割模型 C++ 推理:

e18e3cf0-24b2-11ee-962d-dac502259ad0.jpg

UNet語(yǔ)義分割模型 C++ 推理:

e19fa01c-24b2-11ee-962d-dac502259ad0.png

Mask-RCNN實(shí)例分割模型 C++ 推理:

e1b23d58-24b2-11ee-962d-dac502259ad0.png

YOLOv8姿態(tài)評(píng)估模型 C++ 推理:

e1da8510-24b2-11ee-962d-dac502259ad0.png

e217f3b4-24b2-11ee-962d-dac502259ad0.png

人臉關(guān)鍵點(diǎn)檢測(cè)模型 C++ 推理:

e24c7eae-24b2-11ee-962d-dac502259ad0.png

人臉關(guān)鍵點(diǎn)檢測(cè)模型 Python SDK 推理:

e28298ae-24b2-11ee-962d-dac502259ad0.png

學(xué)會(huì)用C++部署YOLOv5與YOLOv8對(duì)象檢測(cè),實(shí)例分割,姿態(tài)評(píng)估模型,TorchVision框架下支持的Faster-RCNN,RetinaNet對(duì)象檢測(cè)、MaskRCNN實(shí)例分割、Deeplabv3 語(yǔ)義分割模型等主流深度學(xué)習(xí)模型導(dǎo)出ONNX與C++推理部署,輕松解決Torchvision框架下模型訓(xùn)練到部署落地難題。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C++語(yǔ)言
    +關(guān)注

    關(guān)注

    0

    文章

    147

    瀏覽量

    6951
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4768

    瀏覽量

    84376

原文標(biāo)題:YOLOv8模型ONNX格式INT8量化輕松搞定

文章出處:【微信號(hào):CVSCHOOL,微信公眾號(hào):OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    esp-dl int8量化模型數(shù)據(jù)集評(píng)估精度下降的疑問求解?

    一 試著將模型進(jìn)行了esp-dl上int16和int8量化,并在測(cè)試數(shù)據(jù)集上進(jìn)行精度評(píng)估,其中int16的
    發(fā)表于 06-28 15:10

    yolov7 onnx模型在NPU上太慢了怎么解決?

    我將 yolov7tiny.pt(yolov7-tiny 模型)轉(zhuǎn)換為具有 uint8 權(quán)重的 yolov7tiny.onnx,然后在 i.
    發(fā)表于 04-04 06:13

    INT8量化常見問題的解決方案

    一、int8的輸出和fp32模型輸出差異比較大 解決方案: 檢查前后處理是否有問題,int8網(wǎng)絡(luò)輸入輸出一般需要做scale處理,看看是否遺漏? 通過量化可視化工具分析
    發(fā)表于 09-19 06:09

    【愛芯派 Pro 開發(fā)板試用體驗(yàn)】yolov8模型轉(zhuǎn)換

    換為onnx格式。 下載yolov8n.pt 將PyTorch模型格式轉(zhuǎn)為onnx
    發(fā)表于 11-20 12:19

    NCNN+Int8+yolov5部署和量化

    【GiantPandaCV引言】?還記得我在兩個(gè)月前寫的文章嗎,關(guān)于yolov4-tiny+ncnn+int8量化的詳細(xì)教程:NCNN+INT8+YOLOV4量化
    發(fā)表于 01-25 16:01 ?2次下載
    NCNN+<b class='flag-5'>Int8+yolov</b>5部署和<b class='flag-5'>量化</b>

    Int8量化-ncnn社區(qū)Int8重構(gòu)之路

    本文是對(duì)NCNN社區(qū)int8模塊的重構(gòu)開發(fā),再也不用擔(dān)心溢出問題了,速度也還行。作者:圈圈蟲首發(fā)知乎傳送門ncnnBUG1989/caffe-int8-conver...
    發(fā)表于 02-07 12:38 ?1次下載
    <b class='flag-5'>Int8</b><b class='flag-5'>量化</b>-ncnn社區(qū)<b class='flag-5'>Int8</b>重構(gòu)之路

    使用YOLOv8做目標(biāo)檢測(cè)和實(shí)例分割的演示

    YOLOv8是來自Ultralytics的最新的基于YOLO的對(duì)象檢測(cè)模型系列,提供最先進(jìn)的性能。
    的頭像 發(fā)表于 02-06 10:11 ?7266次閱讀

    在AI愛克斯開發(fā)板上用OpenVINO?加速YOLOv8目標(biāo)檢測(cè)模型

    《在 AI 愛克斯開發(fā)板上用 OpenVINO 加速 YOLOv8 分類模型》介紹了在 AI 愛克斯開發(fā)板上使用 OpenVINO 開發(fā)套件部署并測(cè)評(píng) YOLOv8 的分類模型,本文將
    的頭像 發(fā)表于 05-12 09:08 ?1240次閱讀
    在AI愛克斯開發(fā)板上用OpenVINO?加速<b class='flag-5'>YOLOv8</b>目標(biāo)檢測(cè)<b class='flag-5'>模型</b>

    AI愛克斯開發(fā)板上使用OpenVINO加速YOLOv8目標(biāo)檢測(cè)模型

    《在AI愛克斯開發(fā)板上用OpenVINO加速YOLOv8分類模型》介紹了在AI愛克斯開發(fā)板上使用OpenVINO 開發(fā)套件部署并測(cè)評(píng)YOLOv8的分類模型,本文將介紹在AI愛克斯開發(fā)板
    的頭像 發(fā)表于 05-26 11:03 ?1161次閱讀
    AI愛克斯開發(fā)板上使用OpenVINO加速<b class='flag-5'>YOLOv8</b>目標(biāo)檢測(cè)<b class='flag-5'>模型</b>

    教你如何用兩行代碼搞定YOLOv8各種模型推理

    大家好,YOLOv8 框架本身提供的API函數(shù)是可以兩行代碼實(shí)現(xiàn) YOLOv8 模型推理,這次我把這段代碼封裝成了一個(gè)類,只有40行代碼左右,可以同時(shí)支持YOLOv8對(duì)象檢測(cè)、實(shí)例分割
    的頭像 發(fā)表于 06-18 11:50 ?2934次閱讀
    教你如何用兩行代碼<b class='flag-5'>搞定</b><b class='flag-5'>YOLOv8</b>各種<b class='flag-5'>模型</b>推理

    三種主流模型部署框架YOLOv8推理演示

    深度學(xué)習(xí)模型部署有OpenVINO、ONNXRUNTIME、TensorRT三個(gè)主流框架,均支持Python與C++的SDK使用。對(duì)YOLOv5~YOLOv8的系列模型,均可以通過C+
    的頭像 發(fā)表于 08-06 11:39 ?2583次閱讀

    YOLOv8實(shí)現(xiàn)任意目錄下命令行訓(xùn)練

    當(dāng)你使用YOLOv8命令行訓(xùn)練模型的時(shí)候,如果當(dāng)前執(zhí)行的目錄下沒有相關(guān)的預(yù)訓(xùn)練模型文件,YOLOv8就會(huì)自動(dòng)下載模型權(quán)重文件。這個(gè)是一個(gè)正常
    的頭像 發(fā)表于 09-04 10:50 ?1057次閱讀
    <b class='flag-5'>YOLOv8</b>實(shí)現(xiàn)任意目錄下命令行訓(xùn)練

    OpenCV4.8+YOLOv8對(duì)象檢測(cè)C++推理演示

    自從YOLOv5更新成7.0版本,YOLOv8推出以后,OpenCV4.6以前的版本都無法再加載導(dǎo)出ONNX格式模型了,只有OpenCV4.
    的頭像 發(fā)表于 09-27 11:07 ?1422次閱讀
    OpenCV4.8+<b class='flag-5'>YOLOv8</b>對(duì)象檢測(cè)C++推理演示

    Yolo系列模型的部署、精度對(duì)齊與int8量化加速

    可視化其他量化形式的engine和問題engine進(jìn)行對(duì)比,我們發(fā)現(xiàn)是一些層的int8量化會(huì)出問題,由此找出問題量化節(jié)點(diǎn)解決。
    的頭像 發(fā)表于 11-23 16:40 ?1153次閱讀

    基于YOLOv8的自定義醫(yī)學(xué)圖像分割

    YOLOv8是一種令人驚嘆的分割模型;它易于訓(xùn)練、測(cè)試和部署。在本教程中,我們將學(xué)習(xí)如何在自定義數(shù)據(jù)集上使用YOLOv8。但在此之前,我想告訴你為什么在存在其他優(yōu)秀的分割模型時(shí)應(yīng)該使用
    的頭像 發(fā)表于 12-20 10:51 ?708次閱讀
    基于<b class='flag-5'>YOLOv8</b>的自定義醫(yī)學(xué)圖像分割