利用openvino模型推理图片

简介: 本文介绍了如何使用 OpenVINO 格式模型文件对图片进行推理。通过将训练好的模型转换为 OpenVINO 格式,可实现跨设备部署。文中详细展示了利用 Python 和 OpenVINO API 完成模型加载、编译及推理的步骤。核心代码包括初始化 OpenVINO 模型、设置预测参数(如置信度和 IoU 阈值)以及对图片进行检测并显示结果。注意:OpenVINO 模型文件需完整存放于同一目录下,路径需正确配置,参数可根据模型性能调整。

openvino格式模型文件生成后可以在不同的设备上进行部署,所以我们在训练好模型,并转换成openvino格式模型文件后,一般会进行推理测试,来观察我们训练的结果,那么如何用openvino模型文件对图片进行推理呢,这里我总结了以下,以方便后续查看使用。

# 导入必要的库
import openvino as ov
from ultralytics import YOLO
import pathlib

# OpenVINO初始化
# 使用pathlib.Path来处理模型文件路径,这里指定了目标检测模型的XML文件路径
det_model_path = pathlib.Path(r"best_s_openvino_model/best_s.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

# 对'00.jpg'图像进行推理,并获取结果
# 设置保存结果为True,置信度阈值为0.5,IoU阈值为0.5
results = det_model.predict(r"00.jpg", save=True, conf=0.5, iou=0.5)

# 处理返回的结果
for result in results:
    # 获取检测结果中的边界框信息
    boxes = result.boxes
    # 显示检测结果图像
    result.show()

这里需要注意的是,转换后的openvino模型文件必须在一个目录下,切缺一不可;置信度以及IOU可以根据自己训练后的模型质量进行适当的调整。最后就是路径一定要正确,否则会出错。

相关文章
|
Java C#
C#学习系列相关之多线程(五)----线程池ThreadPool用法
C#学习系列相关之多线程(五)----线程池ThreadPool用法
1223 0
|
计算机视觉
YOLO 目标检测 识别框不显示文字标签(已解决)
YOLO 目标检测 识别框不显示文字标签(已解决)
|
机器学习/深度学习 人工智能 算法
智创 AI 新视界 -- 提升 AI 推理速度的高级方法(16 - 2)
本文深度聚焦提升 AI 推理速度,全面阐述模型压缩(低秩分解、参数量化)、硬件加速(GPU、TPU)及推理算法优化(剪枝感知推理、动态批处理)。结合图像识别等多领域案例与丰富代码示例,以生动形象且专业严谨的方式,为 AI 从业者提供极具价值的技术指南,助力突破 AI 推理速度瓶颈,实现系统性能跃升。
|
编解码 文字识别 自然语言处理
如何使用OCR技术批量识别图片中的文字并重命名文件,OCR 技术批量识别图片中的文字可能出现的错误
### 简介 【批量识别图片内容重命名】工具可批量识别图片中的文字并重命名文件,方便高效处理大量图片。然而,OCR 技术面临字符识别错误(如形近字混淆、生僻字识别不佳)、格式错误(段落错乱、换行问题)和语义理解错误等挑战。为提高准确性,建议提升图片质量、选择合适的 OCR 软件及参数,并结合自动校对与人工审核,确保最终文本的正确性和完整性。
2573 12
如何使用OCR技术批量识别图片中的文字并重命名文件,OCR 技术批量识别图片中的文字可能出现的错误
|
11月前
|
运维 监控 数据可视化
小白也能部署应用,3个免费的容器化部署工具测评
本文对比了三款容器化部署工具:Docker Compose、Portainer 和 Websoft9。Docker Compose 适合开发者编排多容器应用,Portainer 提供图形化管理界面,而 Websoft9 则面向中小企业和非技术人员,提供一键部署与全流程运维支持,真正实现“开箱即用”。三款工具各有定位,Websoft9 更贴近大众用户需求。
小白也能部署应用,3个免费的容器化部署工具测评
|
人工智能 API 开发工具
YOLOV11 使用流程
本内容整理了YOLO V11的常用代码语句,涵盖YOLO模型下载、数据集划分、模型训练与推理优化等关键步骤,适用于目标检测任务。
TeaScript数值书写规则
本内容介绍了数值的多种表示形式,包括十进制整数(如`14123`)、十六进制整数(如`0xFF`)、八进制整数(如`012`)以及实数(如`1.23`)。十进制和实数可带正负号,实数含小数点,支持科学计数法(如`1.23e3`)。十六进制以`0x`开头,八进制以`0`开头,各有对应数字范围。
538 71
|
机器学习/深度学习 计算机视觉 异构计算
YOLOv8优改系列一:YOLOv8融合BiFPN网络,实现网络快速涨点
该专栏专注于YOLOv8的 Neck 部分改进,融合了 BiFPN 网络,大幅提升检测性能。BiFPN 通过高效的双向跨尺度连接和加权特征融合,解决了传统 FPN 的单向信息流限制。文章详细介绍了 BiFPN 的原理及其实现方法,并提供了核心代码修改指导。点击链接订阅专栏,每周定时更新,助您快速提升模型效果。推荐指数:⭐️⭐️⭐️⭐️,涨点指数:⭐️⭐️⭐️⭐️。
1535 0
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
11646 139
|
Linux 网络安全 数据安全/隐私保护
Jetson 学习笔记(十三):SSH远程登录控制(终端控制和图形界面)-成功通过
这篇文章介绍了如何通过SSH命令行和VNC图形界面远程登录和控制NVIDIA Jetson Nano设备。
3437 0
Jetson 学习笔记(十三):SSH远程登录控制(终端控制和图形界面)-成功通过