上文介绍了《使用OpenVINO加速YOLOv8分类模型(含完整源代码)》, 本文接着介绍OpenVINO加速YOLOv8目标检测模型(含完整源代码)。
首先请先下载本文的范例代码仓
本文代码在AI爱克斯开发板上完成验证
AI爱克斯开发板第一步:使用命令:yolo export model=yolov8n.pt format=onnx,完成yolov8n.onnx模型导出。
导出yolov8n.onnx第二步:使用命令:mo -m yolov8n.onnx --compress_to_fp16,优化并导出FP16精度的OpenVINO IR格式模型。
导出FP16精度的OpenVINO IR格式模型第三步:使用命令:benchmark_app -m yolov8n.xml -d GPU,获得yolov8n.xml模型在AI爱克斯开发板的集成显卡上的异步推理计算性能。
Benchmark性能第四步:使用OpenVINO Python API编写YOLOv8目标检测模型推理程序。基于OpenVINO Python API的YOLOv8目标检测模型的范例程序:yolov8_od_ov_sync_infer_demo.py(请读者克隆本文代码仓),其核心源代码如下所示:
# 实例化Core对象
core = Core()
# 载入并编译模型
net = core.compile_model(f'{MODEL_NAME}.xml', device_name="AUTO")
# 获得模型输出节点
output_node = net.outputs[0] # yolov8n只有一个输出节点
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
# 图像数据前处理
[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)
# 执行推理计算
outputs = ir.infer(blob)[output_node]
# 推理结果后处理并显示处理结果
outputs = np.array([cv2.transpose(outputs[0])])
... ...
cv2.imshow('YOLOv8 OpenVINO Infer Demo on AIxBoard', frame)
运行结果如下所示:
运行结果
网友评论