零基礎教你使用OpenVINO?工具套件部署YOLOv3模型

慧聰教育網 2021-06-15 09:13 來源:慧聰教育網

【慧聰教育網】概述

目標檢測(Obiect Detection)近年來一直是深度學習視覺領域理論和應用的研究熱點,目標檢測即是在給定的圖像中找到期望的物體,同時確定物體的標簽和位置。YOLOv3(You Only Look Once,Version 3)是一種實時目標檢測算法。

本文在YOLOv3算法的基礎上,介紹了目標檢測模型的訓練和部署,具體步驟如下。

第一步,使用PaddleX可視化客戶端訓練模型,并同樣使用PaddleX進行了推理預測

第二步,使用OpenVINO? 對訓練的YOLOv3目標檢測模型進行優化加速,再對模型行推理預測。

第三步,對已發布的YOLOv3 IR模型在不同平臺(CPU/iGPU)上進行性能的測試與對比。

訓練目標檢測模型需要極大的算力,本文的硬件平臺選擇為為英特爾?NUC(N ext Unit of Computer)產品線系列的幻影峽谷,英特爾?NUC 是英特爾?公司設計制造的功 能強大的迷你計算機(Mini PC),而該系列中的幻影峽谷是一款具備 AI 訓練能力的迷你計算機。如圖1所示。

零基礎教你使用OpenVINO?工具套件部署YOLOv3模型

圖1 幻影峽谷實物圖

本文使用的幻影峽谷與深度學習模型訓練相關的參數如下。

l  11th Gen Intel? Core? i7-1165G7

l  Intel? Iris? Xe Graphics

l  NVIDIA GeForce RTX 2060

本文需要的軟件運行環境及其對應版本如下。

l  PaddleX Version 1.1.7

l  ONNX 1.9.0

l  OpenVINO 2021.2

使用PaddleX進行模型訓練

第一步,標注數據集并導入。

首先從Kaggle直接下載貓狗數據集,使用Labelimg進行標注,將標注完畢的.xml格式文件和原文件的.jpg格式放在同一文件夾中,本文放在D:\MyDataset路徑中。

打開PaddleX GUI可視化客戶端新建數據集,選擇標注數據對應存儲路徑導入標注好的數據集。校驗成功后按照實際需求劃分訓練集、驗證集以及測試集的比例。之后在可視化客戶端新建項目,新建項目的任務類型需和數據集的任務類型保持一致。本文的YOLOv3算法選擇目標檢測這一任務類型。

第二步,配置參數訓練模型。

項目創建完成后,載入客戶端加載數據集,根據實際需求對模型參數、訓練參數、優化策略三個方面進行參數配置,獲得最佳任務效果。參數配置完成后即可開始訓練,訓練過程中可以通過VisualDL查看模型訓練過程中參數的變化,如圖2所示。

零基礎教你使用OpenVINO?工具套件部署YOLOv3模型

圖2 使用PaddleX GUI進行模型訓練

第三步,導出模型推理預測。

模型訓練完畢,進入模型評估階段,如果在混淆矩陣、模型精度、召回率等指標得到最優效果后,可以將模型導出,根據實際生產環境需求,將模型發布為需要的版本。使用PaddleX客戶端模型訓練完畢后,導出模型,使用python腳本對已發布的模型進行推理預測,模型預測代碼見代碼清單1。

代碼清單1 使用PaddleX進行預測

#使用PaddleX進行預測

import paddlex as pdx

#導入預測圖片路徑和模型

test_jpg = "D:/MyDataset/JPEGImages/1140.jpg"

model = pdx.load_model("C:/Users/NUC/paddlex_workspACE/P0002-T0002_export_model/inference_model")

#predict接口并未過濾低置信度識別結果,用戶根據score值進行過濾

result = model.predict(test_jpg)

#可視化結果存儲在./visualized_test.jpg中

pdx.det.visualize(test_jpg,result,threshold=0.5,save_dir="./")

可得到如下圖3所示推理結果。

零基礎教你使用OpenVINO?工具套件部署YOLOv3模型

圖3 使用PaddleX推理結果

使用OpenVINO?工具套件優化推理

PaddleX支持將訓練好的深度學習模型通過OpenVINO?工具套件對模型優化部署,在初始化 OpenVINO?工具套件使用環境,安裝完畢 OpenVINO?工具套件相關依賴后即可進行加速部署。

第一步,OpenVINO優化

       通過命令行<paddlex –export_inference –model-dir=./path/to/paddle_model –save_dir=./inference_model –fixed_input_shape=[w,h]>將paddle模型導入為inference格式模型,導出包括.success、__model__、__params__和 model.yml 四個文件的inference_model文件。

將PaddleX代碼倉下載到本地文件夾中,初始化OpenVINO環境,再通過命令行<python converter.py --model_dir /path/to/inference_model --save_dir /path/to/openvino_model --fixed_input_shape [w,h]>轉換代碼,將inference格式模型轉換為OpenVINO模型。如圖4所示。

零基礎教你使用OpenVINO?工具套件部署YOLOv3模型

圖4 轉化為openvino_model

第二步,OpenVINO推理預測

加載OpenVINO模型,輸入命令<python PaddleX\deploy\openvino\python\demo.py -m openvino_model\paddle2onnx_model.xml -i images\0001.jpg -c inference_model\model.yml>執行推理程序。推理結果如圖5所示。

零基礎教你使用OpenVINO?工具套件部署YOLOv3模型

圖5 使用OpenVINO推理預測結果

YOLOv3 IR模型性能分析

 將上述訓練并發布的YOLOv3 IR模型中paddle2onnx_model.xml和paddle2onnx_model.bin來做性能測試。通過響應延遲(Latency)和吞吐量(Throughput)是評價模型推理優化性能。

進入openvino默認安裝路徑的C:\Program File (x86)\Intel\openvino_2021.2.185\deployment_tools\tools\benchmark_tool的Windows命令行窗口,打開虛擬環境初始化OpenVINO, 輸入命令<python benchmark_app.py -m PATH_TO_MODEL -d CPU|GPU>分別指定CPU和iGPU測試性能。

基于幻影峽谷的中央處理器第11代英特爾?酷睿?i7-1165G7和英特爾? Iris? Xe Graphics集成顯卡,所得到的YOLOv3 IR模型性能測試結果見表1。

表1 YOLOv3 IR模型性能預測結果

零基礎教你使用OpenVINO?工具套件部署YOLOv3模型

由上述數據可以看到,YOLOv3模型經過OpenVINO優化后,在Iris? Xe Graphics集成顯卡上的吞吐量可以達到19.56FPS,該速度完全滿足大部分AI工程實踐應用。

總結

本文使用了PaddleX的可視化客戶端模式對目標檢測模型進行了訓練,PaddleX還提供Python API的模型訓練模式,其使用方法以及模型零基礎從訓練到部署的詳細步驟見鏈接。

無代碼的模型訓練方式以及像OpenVINO?工具套件對模型的加速和優化,這些模型訓練和部署模式已經成為了新的趨勢,能夠把模型訓練的復雜度降到最低,特別是在使用OpenVINO?工具套件對模型進行加速優化后的YOLOv3模型,在英特爾?11代i7-1165G7上可以跑到10.56FPS的性能,在Iris? Xe Graphics集成顯卡上可以跑出19.56FPS的性能,模型的推理計算性能有了很顯著的提升,完全能滿足常見的AI應用需求,并且在一定程度上能夠擺脫對獨立顯卡的依賴。由此可見,像PaddleX和OpenVINO這樣的深度學習模型訓練和部署的工具,必然會在未來的AI工程應用中大放異彩。源于產業實踐,關注行業需求,節約生產成本,加快創意落地才是王道,才能更快更好的賦能于產業實踐。

如欲了解更多OpenVINO? 開發資料,

請掃描下方二維碼,

我們會把最新資料及時推送給您。

零基礎教你使用OpenVINO?工具套件部署YOLOv3模型

免責聲明:凡注明來源本網的所有作品,均為本網合法擁有版權或有權使用的作品,歡迎轉載,注明出處。非本網作品均來自互聯網,轉載目的在于傳遞更多信息,并不代表本網贊同其觀點和對其真實性負責。
百度 好搜 搜狗

警告:本站禁止未滿18周歲訪客瀏覽,如果當地法律禁止請自覺離開本站!收藏本站:請使用Ctrl+D進行收藏