# 导入必要的库
import openvino as ov
from ultralytics import YOLO
import pathlib
# OpenVINO初始化
# 使用pathlib.Path来处理模型文件路径,这里指定了目标检测模型的XML文件路径
det_model_path = pathlib.Path(r"best.xml")
# 定义一个函数用于创建OpenVINO编译后的模型
def create_openvino_model(model_path, device="CPU"):
# 初始化OpenVINO的核心对象,用于管理设备和读取模型
core = ov.Core()
# 读取指定路径的模型文件
model = core.read_model(model_path)
# 将读取的模型在指定设备(默认是CPU)上进行编译
compiled_model = core.compile_model(model, device)
# 返回编译后的模型
return compiled_model
# 调用create_openvino_model函数,创建目标检测的编译后模型
det_compiled_model = create_openvino_model(det_model_path)
# 使用YOLO模型,指定模型文件路径,任务类型为目标检测
det_model = YOLO(det_model_path.parent, task="detect") # 修改:使用模型文件路径而非目录路径
# 检查预测器是否未初始化
if det_model.predictor is None:
# 定义自定义的预测参数,包括置信度阈值、批量大小、是否保存结果和预测模式
custom = {"conf": 0.25, "batch": 1, "save": False, "mode": "predict"} # method defaults
# 将模型的默认参数和自定义参数合并
args = {**det_model.overrides, **custom}
# 智能加载预测器,并传入合并后的参数和回调函数
det_model.predictor = det_model._smart_load("predictor")(overrides=args, _callbacks=det_model.callbacks)
# 为预测器设置模型
det_model.predictor.setup_model(model=det_model.model)
# 将编译后的OpenVINO模型赋值给预测器的ov_compiled_model属性
det_model.predictor.model.ov_compiled_model = det_compiled_model
# 对'00146.jpg'图像进行推理,并获取结果
# 设置保存结果为True,置信度阈值为0.5,IoU阈值为0.5
results = det_model.predict(r"00006.jpg", save=True, conf=0.5, iou=0.5)
# 处理返回的结果
for result in results:
# 获取检测结果中的边界框信息
boxes = result.boxes
# 显示检测结果图像
result.show()