開發(fā)者實(shí)戰(zhàn)|基于OpenVINO? 2022.1實(shí)現(xiàn)YOLOv5推理程序

極市導(dǎo)讀
?OpenVINO??工具套件2022.1版于2022年3月22日正式發(fā)布!本次是迄今為止最大變化的版本。?>>加入極市CV技術(shù)交流群,走在計(jì)算機(jī)視覺的最前沿

1.1??
OpenVINO? 2022.1簡(jiǎn)介
OpenVINO? 工具套件2022.1版于2022年3月22日正式發(fā)布,根據(jù)官宣《OpenVINO? 迎來迄今為止最重大更新,2022.1新特性搶先看》,OpenVINO? 2022.1將是迄今為止最大變化的版本。

從開發(fā)者的角度來看,對(duì)于提升開發(fā)效率或運(yùn)行效率有用的特性有:
1
提供預(yù)處理API函數(shù)。OpenVINO? 2022.1之前版本不提供OpenVINO runtime原生的用于數(shù)據(jù)預(yù)處理的API函數(shù),開發(fā)者必須通過第三方庫,比如,OpenCV,來實(shí)現(xiàn)數(shù)據(jù)預(yù)處理。OpenVINO? 2022.1自帶的預(yù)處理API可以將所有預(yù)處理步驟都集成到在執(zhí)行圖中,這樣iGPU、CPU、VPU 或今后Intel的獨(dú)立顯卡都能進(jìn)行數(shù)據(jù)預(yù)處理,大大提高了執(zhí)行效率;相比之前,用OpenCV實(shí)現(xiàn)的預(yù)處理,則只能在CPU上執(zhí)行,如下圖所示。

2
ONNX前端API。前端API意味著模型可以直接被OpenVINO讀入,而無需使用模型優(yōu)化器進(jìn)行模型轉(zhuǎn)換,這對(duì)于使用 ONNX 模型的開發(fā)人員非常有用。OpenVINO? 2022.1自動(dòng)轉(zhuǎn)換ONNX模型的速度相比之前版本,有極大提升,開發(fā)人員已經(jīng)感受不到ONNX模型自動(dòng)轉(zhuǎn)換的時(shí)間消耗了。
3
AUTO 設(shè)備插件。AUTO設(shè)備插件自動(dòng)將AI推理計(jì)算加載到最合適的硬件設(shè)備上(CPU, GPU, VPU等),無需額外的開發(fā)工作即可提高模型在異構(gòu)系統(tǒng)中(例如:12代CPU + Iris Xe 集成顯卡 + DG2 獨(dú)顯) 的推理性能和可移植性。
4
支持直接讀入飛槳模型。這對(duì)于使用飛槳框架的開發(fā)人員非常有用。

1.2??
YOLOv5簡(jiǎn)介
Ultralytics公司貢獻(xiàn)的YOLOv5 PyTorch 實(shí)現(xiàn)版:https://github.com/ultralytics/yolov5
由于其工程化和文檔做的特別好,深受廣大AI開發(fā)者的喜愛,GitHub上的星標(biāo)超過了23.8K,而且被PyTorch官方收錄于PyTorch的官方模型倉。在產(chǎn)業(yè)實(shí)踐中,也有無數(shù)的開發(fā)者將YOLOv5直接用于自己的項(xiàng)目。

由于YOLOv5精度高速度快(最新的YOLOv5模型精度如下所示),使得產(chǎn)業(yè)界里面使用YOLOv5模型做產(chǎn)品和項(xiàng)目的人非常多。

另外,YOLOv5的工程化和文檔化做的極好,沒有任何基礎(chǔ)的人,都可以在不到半天的時(shí)間內(nèi)完成YOLOv5的開發(fā)環(huán)境搭建、模型訓(xùn)練、ONNX模型導(dǎo)出。
YOLOv5的文檔鏈接:
https://docs.ultralytics.com/
1.3??
準(zhǔn)備YOLOv5的OpenVINO??
推理程序開發(fā)環(huán)境
要完成YOLOv5的OpenVINO? 工具套件推理程序開發(fā),需要安裝:
YOLOv5
OpenVINO? 工具套件
由于YOLOv5的工程化做的實(shí)在太好,在Windows10中安裝上述環(huán)境,只需要兩步。
第一步:
git clone?
https://github.com/ultralytics/yolov5.git
第二步:
在YOLOv5文件夾中,修改25、30和35行如下所示。

然后使用命令:
pip install -r requirements.txt
完成開發(fā)環(huán)境安裝。
1.4??
導(dǎo)出YOLOv5 ONNX模型
在YOLOv5文件夾下,使用命令:python export.py --weights yolov5s.pt --include onnx,完成YOLOv5s.onnx模型導(dǎo)出,如下圖所示。

1.5??
用Netron工具查看
YOLOv5s.onnx的輸入和輸出
使用Netron(https://netron.app/),查看YOLOv5s.onnx模型的輸入和輸出。

從圖中可以看出:YOLOv5 6.1版本之后,直接導(dǎo)出的ONNX格式模型會(huì)多出一個(gè)output層,這個(gè)output已經(jīng)完全整合了之前三層的原始輸出,再也不需要搞anchor的比率跟重新寫解析后處理了,output出來每一行85個(gè)數(shù)值,前面5個(gè)數(shù)值分別是:
cx, cy, w, h, score, 后面80個(gè)參數(shù)是MSCOCO的分類得分。
1.6??
使用OpenVINO??開發(fā)
YOLOv5的推理程序
使用OpenVINO? 2022.1開發(fā)推理程序的典型步驟如下所示,從圖中可見,三行 OpenVINO API函數(shù)可以完成YOLOv5s.onnx模型的推理。

完整范例程序如下:






上述范例程序下載鏈接:
https://gitee.com/ppov-nuc/yolov5_infer/blob/main/infer_by_openvino2022.py
運(yùn)行效果如下所示:

綜上所述,基于YOLOv5和OpenVINO? 2022.1訓(xùn)練并部署模型,學(xué)習(xí)輕松,上手快速,使用方便,適合產(chǎn)業(yè)項(xiàng)目實(shí)際應(yīng)用。
公眾號(hào)后臺(tái)回復(fù)“畫圖模板”獲取90+深度學(xué)習(xí)畫圖模板~

#?CV技術(shù)社群邀請(qǐng)函?#

備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測(cè)-深圳)
即可申請(qǐng)加入極市目標(biāo)檢測(cè)/圖像分割/工業(yè)檢測(cè)/人臉/醫(yī)學(xué)影像/3D/SLAM/自動(dòng)駕駛/超分辨率/姿態(tài)估計(jì)/ReID/GAN/圖像增強(qiáng)/OCR/視頻理解等技術(shù)交流群
每月大咖直播分享、真實(shí)項(xiàng)目需求對(duì)接、求職內(nèi)推、算法競(jìng)賽、干貨資訊匯總、與?10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動(dòng)交流~

