上文介紹了《使用OpenVINO加速YOLOv8分類模型(含完整源代碼)》, 本文接著介紹OpenVINO加速YOLOv8目標(biāo)檢測(cè)模型(含完整源代碼)。
首先請(qǐng)先下載本文的范例代碼倉(cāng)
本文代碼在AI愛(ài)克斯開(kāi)發(fā)板上完成驗(yàn)證

AI愛(ài)克斯開(kāi)發(fā)板
第一步:使用命令:yolo export model=yolov8n.pt format=onnx,完成yolov8n.onnx模型導(dǎo)出。

導(dǎo)出yolov8n.onnx
第二步:使用命令:mo -m yolov8n.onnx --compress_to_fp16,優(yōu)化并導(dǎo)出FP16精度的OpenVINO IR格式模型。

導(dǎo)出FP16精度的OpenVINO IR格式模型
第三步:使用命令:benchmark_app -m yolov8n.xml -d GPU,獲得yolov8n.xml模型在AI愛(ài)克斯開(kāi)發(fā)板的集成顯卡上的異步推理計(jì)算性能。

Benchmark性能
第四步:使用OpenVINO Python API編寫YOLOv8目標(biāo)檢測(cè)模型推理程序?;贠penVINO Python API的YOLOv8目標(biāo)檢測(cè)模型的范例程序:yolov8_od_ov_sync_infer_demo.py(請(qǐng)讀者克隆本文代碼倉(cāng)),其核心源代碼如下所示:
# 實(shí)例化Core對(duì)象
core = Core()
# 載入并編譯模型
net = core.compile_model(f'{MODEL_NAME}.xml', device_name="AUTO")
# 獲得模型輸出節(jié)點(diǎn)
output_node = net.outputs[0] # yolov8n只有一個(gè)輸出節(jié)點(diǎn)
ir = net.create_infer_request()
cap = cv2.VideoCapture("store-aisle-detection.mp4")
while True:
start = time.time()
ret, frame = cap.read()
if not ret:
break
# 圖像數(shù)據(jù)前處理
[height, width, _] = frame.shape
length = max((height, width))
image = np.zeros((length, length, 3), np.uint8)
image[0:height, 0:width] = frame
scale = length / 640
blob = cv2.dnn.blobFromImage(image, scalefactor=1 / 255, size=(640, 640), swapRB=True)
# 執(zhí)行推理計(jì)算
outputs = ir.infer(blob)[output_node]
# 推理結(jié)果后處理并顯示處理結(jié)果
outputs = np.array([cv2.transpose(outputs[0])])
... ...
cv2.imshow('YOLOv8 OpenVINO Infer Demo on AIxBoard', frame)
運(yùn)行結(jié)果如下所示:
運(yùn)行結(jié)果