NNCF介紹
OpenVINO2023版本衍生出了一個新支持工具包NNCF(Neural Network Compression Framework – 神經(jīng)網(wǎng)絡(luò)壓縮框架),通過對OpenVINO IR格式模型的壓縮與量化更好的提升模型在OpenVINO框架上部署的推理性能。
安裝NNCF
pip install nncf
NNCF關(guān)鍵特性
訓(xùn)練后壓縮算法支持權(quán)重壓縮與量化,訓(xùn)練時壓縮算法支持感知量化、混合精度量化、二值、稀疏、過濾剪枝、運動剪枝等算法。圖示如下:

YOLOv8量化壓縮
基于NNCF實現(xiàn)YOLOv8預(yù)訓(xùn)練模型的訓(xùn)練后量化壓縮(PTQ),實現(xiàn)INT8量化YOLOv8模型生成。首先需要使用YOLOv8命令行工具導(dǎo)出OpenVINO格式模型,命令行如下:
yolo export model=yolov8n.pt format=openvino然后基于YOLOv8框架的函數(shù)構(gòu)建一個YOLOv8模型對應(yīng)的COCO數(shù)據(jù)集的Validator,相關(guān)的代碼如下:

官方給出的代碼里面是有個ValidatorClass,但是我發(fā)現(xiàn)YOLOv8框架早已經(jīng)不支持,這里其實主要是構(gòu)建自己的Dataset跟DataLoader而已,簡單粗暴的點是可以自己直接構(gòu)建,就是要寫點代碼。我發(fā)現(xiàn)了YOLOv8框架里面有個DetectionValidator是可以用的,于是我就用這個,然后直接給一個圖像文件夾就可以獲取dataloader實例了。準(zhǔn)備好驗證數(shù)據(jù)以后,就是最后一步了,啟動模型INT8量化,相關(guān)的代碼如下:

這樣就可以完成PTQ量化模型的生成。最后這部分的代碼,其實在GITHUB的官方教程上是有說明跟給出的,我這里再貼一下:

就是說,實際上針對自定義數(shù)據(jù)集,你自己構(gòu)建一個DataLoader即可。
量化版YOLOv8推理測試
基于量化版本,基于OpenVINO C++ SDK在不同的部署與加速方式下,最終的測試結(jié)果如下:

從此,我又相信YOLOv8+OpenVINO了。
特別說明
請用OpenVINO20023.1版本測試。
審核編輯:湯梓紅
-
模型
+關(guān)注
關(guān)注
1文章
3618瀏覽量
51543 -
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1229瀏覽量
25964 -
OpenVINO
+關(guān)注
關(guān)注
0文章
116瀏覽量
689
原文標(biāo)題:NNCF壓縮與量化YOLOv8模型與OpenVINO部署測試
文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
求助,關(guān)于K230部署yolov8時遇到問題求解
在C++中使用OpenVINO工具包部署YOLOv5模型
YOLOv8自定義數(shù)據(jù)集訓(xùn)練到模型部署推理簡析
在AI愛克斯開發(fā)板上用OpenVINO?加速YOLOv8分類模型
在AI愛克斯開發(fā)板上用OpenVINO?加速YOLOv8目標(biāo)檢測模型
AI愛克斯開發(fā)板上使用OpenVINO加速YOLOv8目標(biāo)檢測模型
在AI愛克斯開發(fā)板上用OpenVINO?加速YOLOv8-seg實例分割模型
教你如何用兩行代碼搞定YOLOv8各種模型推理
在AI愛克斯開發(fā)板上用OpenVINO?加速YOLOv8-seg實例分割模型
三種主流模型部署框架YOLOv8推理演示
基于YOLOv8的自定義醫(yī)學(xué)圖像分割
基于OpenCV DNN實現(xiàn)YOLOv8的模型部署與推理演示
RV1126 yolov8訓(xùn)練部署教程
使用ROCm?優(yōu)化并部署YOLOv8模型

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