美文网首页
OpenVINO加速YOLOv8目标检测模型(含完整源代码)

OpenVINO加速YOLOv8目标检测模型(含完整源代码)

作者: LabVIEW_Python | 来源:发表于2023-05-08 16:16 被阅读0次

    上文介绍了《使用OpenVINO加速YOLOv8分类模型(含完整源代码)》, 本文接着介绍OpenVINO加速YOLOv8目标检测模型(含完整源代码)。

    首先请先下载本文的范例代码仓

    git clone https://gitee.com/ppov-nuc/yolov8_openvino.git

    本文代码在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)
    
    运行结果如下所示: 运行结果

    相关文章

      网友评论

          本文标题:OpenVINO加速YOLOv8目标检测模型(含完整源代码)

          本文链接:https://www.haomeiwen.com/subject/dygzjdtx.html