基於OpenVNO部署YOLOv5-seg實時實例分割模型

1. 簡介

本文將介紹在基於OpenVINO在英特爾獨立顯卡上部署YOLOv5實時實例分割模型的全流程,並提供完整範例代碼供讀者使用。

YOLOv5是AI開發者友好度最佳的框架之一,與其它YOLO系列相比:

  • 工程化水平好,工程應用時“坑”少
  • 文檔詳實友好,易讀易懂
  • 既容易在用戶的數據集上重訓練又容易在不同的平臺上進行部署
  • 社區活躍度高(截至2023-1-21有34.7k GitHub星)
  • 項目演進速度快
  • 默認支持OpenVINO部署
  • 在典型行業(製造業、農業、醫療、交通等)有廣泛應用。

2022年11月22日,YOLOv5 v7.0版正式發佈,成爲YOLO系列中第一個支持實時實例分割(Real Time Instance Segmentation)的框架。從此,YOLOv5框架不僅具有實時目標檢測模型,還涵蓋了圖像分類和實例分割

2022年英特爾發佈了代號爲Alchemist的第一代消費級銳炫™桌面獨立顯卡,OpenVINO™ 從2022.2版開始支持英特爾獨立顯卡,包括英特爾® 數據中心 GPU Flex 系列和英特爾® 銳炫™系列。

2. 在英特爾獨立顯卡上部署YOLOv5-seg模型的完整流程

在英特爾獨立顯卡上部署YOLOv5-seg模型的完整流程主要有三步:

  1. 搭建YOLOv5開發環境和OpenVINO部署環境
  2. 運行模型優化器(Model Optimizer)優化並轉換模型
  3. 調用OpenVINO Runtime API函數編寫模型推理程序,完成模型部署
    本文將按照上述三個步驟,依次詳述

2.1 搭建YOLOv5開發環境和OpenVINO部署環境

最近的YOLOv5 Github 代碼倉,即YOLOv5 v7.0,已經將openvino-dev[onnx]寫入requirement.txt文件,當執行pip install -r requirements.txt,會安裝完YOLOv5開發環境和OpenVINO部署環境。

git clone https://github.com/ultralytics/yolov5 # clonecd yolov5
cd yolov5
pip install -r requirements.txt

2.2 驗證YOLOv5開發環境和OpenVINO部署環境

執行完上述命令後,運行命令

python segment\predict.py --source data\images

執行結果如下圖所示,說明YOLOv5開發環境和OpenVINO部署環境已搭建成功

2.3 導出yolov5s-seg OpenVINO IR模型

使用命令:

python export.py --weights yolov5s-seg.pt --include onnx

獲得yolov5s-seg ONNX格式模型:yolov5s-seg.onnx。然後運行命令:

mo -m yolov5s-seg.onnx --data_type FP16

獲得yolov5s-seg IR格式模型:yolov5s-seg.xml和yolov5s-seg.bin

2.4 使用OpenVINO Runtime API編寫yolov5s-seg推理程序

整個推理程序主要有五個關鍵步驟:

第一步:創建Core對象;
第二步:載入yolov5s-seg模型,並面向英特爾獨立顯卡編譯模型
第三步:對圖像數據進行預處理
第四步:執行AI推理計算
第五步:對推理結果進行後處理,並可視化處理結果。

整個代碼框架如下所示:

# Step1: Create OpenVINO Runtime Core
core = Core()
# Step2: Compile the Model, using dGPU A770m
net = core.compile_model("yolov5s-seg.xml", "GPU.1")
output0, output1 = net.outputs[0],net.outputs[1]
b,n,input_h,input_w = net.inputs[0].shape # Get the shape of input node
# Step3: Preprocessing for YOLOv5-Seg
# ...
# Step 4: Do the inference
outputs = net([blob])
pred, proto = outputs[output0], outputs[output1]
# Step 5 Postprocess and Visualize the result
# ...

完整代碼:yolov5seg_ov2022_sync_dgpu.py,運行結果如下圖所示:

3. 結論

YOLOv5 的實時實例分割程序通過OpenVINO 部署在英特爾獨立顯卡上,可以獲得高速度與高精度。讀者還可以將程序通過OpenVINO異步API升級爲異步推理程序或者用OpenVINO C++ API改寫推理程序,這樣可以獲得更高的AI推理計算性能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章