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

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

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

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

jf_pmFSk4VX ? 來源:GiantPandaCV ? 2023-11-23 16:40 ? 次閱讀

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

大家好,我是海濱。寫這篇文章的目的是為宣傳我在23年初到現(xiàn)在完成的一項(xiàng)工作---Yolo系列模型在TensorRT上的部署與量化加速,目前以通過視頻的形式在B站發(fā)布(不收費(fèi),只圖一個(gè)一劍三連)。

麻雀雖小但五臟俱全,本項(xiàng)目系統(tǒng)介紹了YOLO系列模型在TensorRT上的量化方案,工程型較強(qiáng),我們給出的工具可以實(shí)現(xiàn)不同量化方案在Yolo系列模型的量化部署,無論是工程實(shí)踐還是學(xué)術(shù)實(shí)驗(yàn),相信都會對你帶來一定的幫助。

B站地址(求關(guān)注和三連):https://www.bilibili.com/video/BV1Ds4y1k7yr/

Github開源地址(求star):https://github.com/thb1314/mmyolo_tensorrt/

當(dāng)時(shí)想做這個(gè)的目的是是為了總結(jié)一下目標(biāo)檢測模型的量化加速到底會遇到什么坑,只是沒想到不量化坑都會很多。

比如即使是以FP32形式推理,由于TensorRT算子參數(shù)的一些限制和TRT和torch內(nèi)部實(shí)現(xiàn)的不同,導(dǎo)致torch推理結(jié)果會和TensorRT推理結(jié)果天然的不統(tǒng)一,至于為什么不統(tǒng)一這里賣個(gè)關(guān)子大家感興趣可以看下視頻。

下面說一下我們這個(gè)項(xiàng)目做了哪些事情

YOLO系列模型在tensorrt上的部署與精度對齊

該項(xiàng)目詳細(xì)介紹了Yolo系列模型在TensorRT上的FP32的精度部署,基于mmyolo框架導(dǎo)出各種yolo模型的onnx,在coco val數(shù)據(jù)集上對齊torch版本與TensorRT版本的精度。

在此過程中我們發(fā)現(xiàn),由于TopK算子限制和NMS算子實(shí)現(xiàn)上的不同,我們無法完全對齊torch和yolo模型的精度,不過這種風(fēng)險(xiǎn)是可解釋且可控的。

詳解TensorRT量化的三種實(shí)現(xiàn)方式

TensorRT量化的三種實(shí)現(xiàn)方式包括trt7自帶量化、dynamic range api,trt8引入的QDQ算子。

Dynamic range api會在采用基于MQbench框架做PTQ時(shí)講解。

TensorRT引入的QDQ算子方式在針對Yolo模型的PTQ和QAT方式時(shí)都有詳細(xì)的闡述,當(dāng)然這個(gè)過程也沒有那么順利。

在基于PytorchQuantization導(dǎo)出的含有QDQ節(jié)點(diǎn)的onnx時(shí),我們發(fā)現(xiàn)盡管量化版本的torch模型精度很高,但是在TensorRT部署時(shí)精度卻很低,TRT部署收精度損失很嚴(yán)重,通過可視化其他量化形式的engine和問題engine進(jìn)行對比,我們發(fā)現(xiàn)是一些層的int8量化會出問題,由此找出問題量化節(jié)點(diǎn)解決。

詳解MQbench量化工具包在TensorRT上的應(yīng)用

我們研究了基于MQbench框架的普通PTQ算法和包括Adaround高階PTQ算法,且啟發(fā)于Adaround高階PTQ算法。

我們將torch版本中的HistogramObserver引入到MQBench中,activation采用HistogramObserverweight采用MinMaxObserver,在PTQ過程中,weight的校準(zhǔn)前向傳播一次,activation的校準(zhǔn)需要多次因此我們將weight的PTQ過程和activation的PTQ過程分開進(jìn)行,加速PTQ量化。實(shí)踐證明,我們采用上述配置的分離PTQ量化在yolov8上可以取得基本不掉點(diǎn)的int8量化精度。

針對YoloV6這種難量化模型,分別采用部分量化和QAT來彌補(bǔ)量化精度損失

在部分量化階段,我們采用量化敏感層分析技術(shù)來判斷哪些層最需要恢復(fù)原始精度,給出各種metric的量化敏感層實(shí)現(xiàn)。

在QAT階段,不同于原始Yolov6論文中蒸餾+RepOPT的方式,我們直接采用上述部分量化后的模型做出初始模型進(jìn)行finetune,結(jié)果發(fā)現(xiàn)finetune后的模型依然取得不錯效果。

針對旋轉(zhuǎn)目標(biāo)檢測,我們同樣給出一種端到端方案,最后的輸出就是NMS后的結(jié)果。通過將TensorRT中的EfficientNMS Plugin和mmcv中旋轉(zhuǎn)框iou計(jì)算的cuda實(shí)現(xiàn)相結(jié)合,給出EfficientNMS for rotated box版本,經(jīng)過簡單驗(yàn)證我們的TRT版本與Torch版本模型輸出基本對齊。

以上就是我們這個(gè)項(xiàng)目做的事情,歡迎各位看官關(guān)注b站和一劍三連。同時(shí),如果各位有更好的想法也歡迎給我們的git倉庫提PR。

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

    關(guān)注

    23

    文章

    4575

    瀏覽量

    92339
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3058

    瀏覽量

    48572
  • 精度
    +關(guān)注

    關(guān)注

    0

    文章

    257

    瀏覽量

    19967

原文標(biāo)題:Yolo系列模型的部署、精度對齊與int8量化加速

文章出處:【微信號:GiantPandaCV,微信公眾號:GiantPandaCV】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    【飛凌嵌入式OK3576-C開發(fā)板體驗(yàn)】rkllm模型量化構(gòu)建

    ;目前 rk3576 平臺支持“w4a16”和“w8a8”兩種量化類型,rk3588 僅支持“w8a8量化類型; target_platform:
    發(fā)表于 08-27 22:50

    源2.0-M32大模型發(fā)布量化版 運(yùn)行顯存僅需23GB 性能可媲美LLaMA3

    2.0-M32量化版是"源"大模型團(tuán)隊(duì)為進(jìn)一步提高模算效率,降低大模型部署運(yùn)行的計(jì)算資源要求而推出的版本,通過采用領(lǐng)先的量化技術(shù),將原
    的頭像 發(fā)表于 08-25 22:06 ?201次閱讀
    源2.0-M32大<b class='flag-5'>模型</b>發(fā)布<b class='flag-5'>量化</b>版 運(yùn)行顯存僅需23GB 性能可媲美LLaMA3

    深度神經(jīng)網(wǎng)絡(luò)模型量化的基本方法

    深度神經(jīng)網(wǎng)絡(luò)模型量化是深度學(xué)習(xí)領(lǐng)域中的一種重要優(yōu)化技術(shù),旨在通過減少模型參數(shù)的精度(即從高精度浮點(diǎn)數(shù)如32位浮點(diǎn)數(shù)FP32降低到低
    的頭像 發(fā)表于 07-15 11:26 ?525次閱讀

    深度學(xué)習(xí)模型量化方法

    深度學(xué)習(xí)模型量化是一種重要的模型量化技術(shù),旨在通過減少網(wǎng)絡(luò)參數(shù)的比特寬度來減小模型大小和加速
    的頭像 發(fā)表于 07-15 11:01 ?411次閱讀
    深度學(xué)習(xí)<b class='flag-5'>模型</b><b class='flag-5'>量化</b>方法

    【算能RADXA微服務(wù)器試用體驗(yàn)】+ GPT語音與視覺交互:2,圖像識別

    BModel混合精度量化 ├── yolov8s_qtable_fp32 # TPU-MLIR編譯時(shí),用于BM1684的INT8 BModel混合精度量化
    發(fā)表于 07-14 23:36

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

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

    使用esp-dl中的example量化我的YOLO模型時(shí),提示ValueError: current model is not supported by esp-dl錯誤,為什么?

    使用esp-dl中的example量化我的YOLO模型時(shí),提示:ValueError: current model is not supported by esp-dl 錯誤, 請看我的代碼和
    發(fā)表于 06-28 06:47

    yolov5量化INT8出錯怎么處理?

    model_deploy.py --mlir yolov5l.mlir --quantize INT8 --calibration_table yolov5l_cali_table --chip
    發(fā)表于 01-10 06:40

    邊緣側(cè)部署模型優(yōu)勢多!模型量化解決邊緣設(shè)備資源限制問題

    電子發(fā)燒友網(wǎng)報(bào)道(文/李彎彎)大模型的邊緣部署是將大模型部署在邊緣設(shè)備上,以實(shí)現(xiàn)更快速、更低延遲的計(jì)算和推理。邊緣設(shè)備可以是各種終端設(shè)備,如智能手機(jī)、平板電腦、智能家居設(shè)備等。通過將大
    的頭像 發(fā)表于 01-05 00:06 ?3162次閱讀

    【愛芯派 Pro 開發(fā)板試用體驗(yàn)】模型部署(以mobilenetV2為例)

    好,因?yàn)閯討B(tài)是在推理時(shí)去估計(jì)算子的數(shù)據(jù)范圍,誤差較大。 這里采用的是靜態(tài)的訓(xùn)練后量化方式,通過提供一個(gè)和訓(xùn)練集同分布的校準(zhǔn)數(shù)據(jù)集,將算子的權(quán)重從FP32量化INT8 一些細(xì)節(jié):仔細(xì)看看axmodel
    發(fā)表于 12-10 16:34

    OpenVINO? 2023.2 發(fā)布:讓生成式AI在實(shí)際場景中更易用

    在 2023.2 版本中,我們進(jìn)一步優(yōu)化此工作流程,并引入在 CPU 和集成顯卡上運(yùn)行權(quán)重量化int8int4 精度的 LLM 的能力。權(quán)重
    的頭像 發(fā)表于 12-08 16:04 ?866次閱讀
    OpenVINO? 2023.2 發(fā)布:讓生成式AI在實(shí)際場景中更易用

    【愛芯派 Pro 開發(fā)板試用體驗(yàn)】愛芯元智AX650N部署yolov8s 自定義模型

    Pulsar2 工具量化部署到開發(fā)板上 訓(xùn)練自己的YOLOv8s模型 準(zhǔn)備自定義數(shù)據(jù)集 數(shù)據(jù)集結(jié)構(gòu)可以不像下面一樣,這個(gè)只是記錄當(dāng)前測試適合的數(shù)據(jù)集目錄結(jié)構(gòu),常見結(jié)構(gòu)也有VOC結(jié)構(gòu),
    發(fā)表于 11-24 20:40

    解讀大模型FP量化的解決方案

    63.1 的分?jǐn)?shù),只比完整精度模型低了 5.8 分,且比之前的 SOTA 方法平滑量高出了 12.7,這是目前少數(shù)已知可行的 4-bit 量化方案了。
    發(fā)表于 11-24 11:15 ?833次閱讀
    解讀大<b class='flag-5'>模型</b>FP<b class='flag-5'>量化</b>的解決方案

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

    嘗試將最新的yolov8模型轉(zhuǎn)換為愛芯派的模型。 環(huán)境準(zhǔn)備 準(zhǔn)備Docker環(huán)境 首先自己在任意機(jī)器上準(zhǔn)備好docker環(huán)境,詳細(xì)步驟見官網(wǎng)。 Docker 鏡像文件 準(zhǔn)備 yolo8
    發(fā)表于 11-20 12:19

    NNCF壓縮與量化YOLOv8模型與OpenVINO部署測試

    OpenVINO2023版本衍生出了一個(gè)新支持工具包NNCF(Neural Network Compression Framework – 神經(jīng)網(wǎng)絡(luò)壓縮框架),通過對OpenVINO IR格式模型的壓縮與量化更好的提升模型在Op
    的頭像 發(fā)表于 11-20 10:46 ?1368次閱讀
    NNCF壓縮與<b class='flag-5'>量化</b>YOLOv<b class='flag-5'>8</b><b class='flag-5'>模型</b>與OpenVINO<b class='flag-5'>部署</b>測試