Intel OpenVINO导出
在本指南中,我们将介绍如何将YOLOv8模型导出为OpenVINO格式,该格式可以提供高达3倍的CPU加速,以及在Intel GPU和NPU硬件上加速YOLO推理。
OpenVINO,全称为Open Visual Inference & Neural Network优化工具包,是一个用于优化和部署AI推理模型的综合工具包。尽管名称中包含“视觉”,OpenVINO还支持包括语言、音频、时间序列等在内的多种额外任务。
观看: 如何使用OpenVINO导出和优化Ultralytics YOLOv8模型以进行推理。
使用示例
将YOLOv8n模型导出为OpenVINO格式,并使用导出的模型进行推理。
Example
参数
键 | 值 | 描述 |
---|---|---|
format |
'openvino' |
导出格式 |
imgsz |
640 |
图像尺寸,标量或(h, w)列表,例如(640, 480) |
half |
False |
FP16量化 |
int8 |
False |
INT8量化 |
batch |
1 |
推理的批量大小 |
dynamic |
False |
允许动态输入尺寸 |
OpenVINO的优势
- 性能: OpenVINO通过利用Intel CPU、集成和独立GPU以及FPGA的强大功能,提供高性能的推理。
- 异构执行支持: OpenVINO提供了一个API,可以一次编写并在任何支持的Intel硬件(CPU、GPU、FPGA、VPU等)上部署。
- 模型优化器: OpenVINO提供了一个模型优化器,可以导入、转换和优化来自流行的深度学习框架(如PyTorch、TensorFlow、TensorFlow Lite、Keras、ONNX、PaddlePaddle和Caffe)的模型。
- 易用性: 该工具包附带了超过80个教程笔记本(包括YOLOv8优化),教授工具包的不同方面。
OpenVINO导出结构
当您将模型导出为OpenVINO格式时,结果将生成一个包含以下内容的目录:
- XML文件: 描述网络拓扑。
- BIN文件: 包含权重和偏置二进制数据。
- 映射文件: 保存原始模型输出张量到OpenVINO张量名称的映射。
您可以使用这些文件通过OpenVINO推理引擎运行推理。
在部署中使用OpenVINO导出
一旦你获得了OpenVINO文件,你就可以使用OpenVINO Runtime来运行模型。Runtime提供了一个统一的API,用于在所有支持的英特尔硬件上进行推理。它还提供了高级功能,如在英特尔硬件上的负载均衡和异步执行。有关运行推理的更多信息,请参阅使用OpenVINO Runtime进行推理指南。
请记住,你需要XML和BIN文件以及任何应用程序特定的设置,如输入大小、归一化的比例因子等,以正确设置和使用Runtime中的模型。
在你的部署应用程序中,通常会执行以下步骤:
- 通过创建
core = Core()
来初始化OpenVINO。 - 使用
core.read_model()
方法加载模型。 - 使用
core.compile_model()
函数编译模型。 - 准备输入(图像、文本、音频等)。
- 使用
compiled_model(input_data)
运行推理。
有关更详细的步骤和代码片段,请参阅OpenVINO文档或API教程。
OpenVINO YOLOv8基准测试
以下YOLOv8基准测试由Ultralytics团队在4种不同的模型格式上运行,测量速度和准确性:PyTorch、TorchScript、ONNX和OpenVINO。基准测试在英特尔Flex和Arc GPU以及英特尔Xeon CPU上以FP32精度(使用half=False
参数)运行。
英特尔Flex GPU
英特尔®数据中心GPU Flex系列是一款多功能且强大的解决方案,专为智能视觉云设计。该GPU支持广泛的负载,包括媒体流、云游戏、AI视觉推理和虚拟桌面基础设施负载。它以其开放的架构和内置的AV1编码支持脱颖而出,为高性能、跨架构应用程序提供了一个基于标准的软件堆栈。Flex系列GPU针对密度和质量进行了优化,提供高可靠性、可用性和可扩展性。
以下基准测试在英特尔®数据中心GPU Flex 170上以FP32精度运行。
模型 | 格式 | 状态 | 大小 (MB) | mAP50-95(B) | 推理时间 (ms/im) |
---|---|---|---|---|---|
YOLOv8n | PyTorch | ✅ | 6.2 | 0.3709 | 21.79 |
YOLOv8n | TorchScript | ✅ | 12.4 | 0.3704 | 23.24 |
YOLOv8n | ONNX | ✅ | 12.2 | 0.3704 | 37.22 |
YOLOv8n | OpenVINO | ✅ | 12.3 | 0.3703 | 3.29 |
YOLOv8s | PyTorch | ✅ | 21.5 | 0.4471 | 31.89 |
YOLOv8s | TorchScript | ✅ | 42.9 | 0.4472 | 32.71 |
YOLOv8s | ONNX | ✅ | 42.8 | 0.4472 | 43.42 |
YOLOv8s | OpenVINO | ✅ | 42.9 | 0.4470 | 3.92 |
YOLOv8m | PyTorch | ✅ | 49.7 | 0.5013 | 50.75 |
YOLOv8m | TorchScript | ✅ | 99.2 | 0.4999 | 47.90 |
YOLOv8m | ONNX | ✅ | 99.0 | 0.4999 | 63.16 |
YOLOv8m | OpenVINO | ✅ | 49.8 | 0.4997 | 7.11 |
YOLOv8l | PyTorch | ✅ | 83.7 | 0.5293 | 77.45 |
YOLOv8l | TorchScript | ✅ | 167.2 | 0.5268 | 85.71 |
YOLOv8l | ONNX | ✅ | 166.8 | 0.5268 | 88.94 |
YOLOv8l | OpenVINO | ✅ | 167.0 | 0.5264 | 9.37 |
YOLOv8x | PyTorch | ✅ | 130.5 | 0.5404 | 100.09 |
YOLOv8x | TorchScript | ✅ | 260.7 | 0.5371 | 114.64 |
YOLOv8x | ONNX | ✅ | 260.4 | 0.5371 | 110.32 |
YOLOv8x | OpenVINO | ✅ | 260.6 | 0.5367 | 15.02 |
此表展示了五种不同模型(YOLOv8n、YOLOv8s、YOLOv8m、YOLOv8l、YOLOv8x)在四种不同格式(PyTorch、TorchScript、ONNX、OpenVINO)下的基准测试结果,提供了每种组合的状态、大小、mAP50-95(B)指标和推理时间。
Intel Arc GPU
Intel® Arc™ 代表了英特尔进军独立GPU市场的尝试。Arc™系列旨在与AMD和NVIDIA等领先的GPU制造商竞争,服务于笔记本电脑和台式机市场。该系列包括适用于笔记本电脑等紧凑型设备的移动版本,以及适用于台式机的大型、更强大的版本。
Arc™系列分为三个类别:Arc™ 3、Arc™ 5和Arc™ 7,每个数字表示性能水平。每个类别包含多个型号,GPU型号名称中的“M”表示移动集成变体。
早期的评测对Arc™系列,特别是集成A770M GPU,给予了高度评价,称其图形性能令人印象深刻。Arc™系列的可用性因地区而异,预计将很快推出更多型号。Intel® Arc™ GPU为从游戏到内容创作的各种计算需求提供了高性能解决方案。
以下基准测试在Intel® Arc 770 GPU上以FP32精度运行。
模型 | 格式 | 状态 | 大小 (MB) | metrics/mAP50-95(B) | 推理时间 (ms/im) |
---|---|---|---|---|---|
YOLOv8n | PyTorch | ✅ | 6.2 | 0.3709 | 88.79 |
YOLOv8n | TorchScript | ✅ | 12.4 | 0.3704 | 102.66 |
YOLOv8n | ONNX | ✅ | 12.2 | 0.3704 | 57.98 |
YOLOv8n | OpenVINO | ✅ | 12.3 | 0.3703 | 8.52 |
YOLOv8s | PyTorch | ✅ | 21.5 | 0.4471 | 189.83 |
YOLOv8s | TorchScript | ✅ | 42.9 | 0.4472 | 227.58 |
YOLOv8s | ONNX | ✅ | 42.7 | 0.4472 | 142.03 |
YOLOv8s | OpenVINO | ✅ | 42.9 | 0.4469 | 9.19 |
YOLOv8m | PyTorch | ✅ | 49.7 | 0.5013 | 411.64 |
YOLOv8m | TorchScript | ✅ | 99.2 | 0.4999 | 517.12 |
YOLOv8m | ONNX | ✅ | 98.9 | 0.4999 | 298.68 |
YOLOv8m | OpenVINO | ✅ | 99.1 | 0.4996 | 12.55 |
YOLOv8l | PyTorch | ✅ | 83.7 | 0.5293 | 725.73 |
YOLOv8l | TorchScript | ✅ | 167.1 | 0.5268 | 892.83 |
YOLOv8l | ONNX | ✅ | 166.8 | 0.5268 | 576.11 |
YOLOv8l | OpenVINO | ✅ | 167.0 | 0.5262 | 17.62 |
YOLOv8x | PyTorch | ✅ | 130.5 | 0.5404 | 988.92 |
YOLOv8x | TorchScript | ✅ | 260.7 | 0.5371 | 1186.42 |
YOLOv8x | ONNX | ✅ | 260.4 | 0.5371 | 768.90 |
YOLOv8x | OpenVINO | ✅ | 260.6 | 0.5367 | 19 |
Intel Xeon CPU
Intel® Xeon® CPU是一款高性能的服务器级处理器,专为复杂和苛刻的工作负载设计。从高端云计算和虚拟化到人工智能和机器学习应用,Xeon® CPU提供了当今数据中心所需的力量、可靠性和灵活性。
值得注意的是,Xeon® CPU提供了高计算密度和可扩展性,使其成为小型企业和大型企业的理想选择。通过选择Intel® Xeon® CPU,组织可以自信地处理其最苛刻的计算任务,促进创新,同时保持成本效益和运营效率。 以下基准测试在FP32精度下运行于第四代英特尔®至强®可扩展处理器。
模型 | 格式 | 状态 | 大小 (MB) | metrics/mAP50-95(B) | 推理时间 (ms/im) |
---|---|---|---|---|---|
YOLOv8n | PyTorch | ✅ | 6.2 | 0.3709 | 24.36 |
YOLOv8n | TorchScript | ✅ | 12.4 | 0.3704 | 23.93 |
YOLOv8n | ONNX | ✅ | 12.2 | 0.3704 | 39.86 |
YOLOv8n | OpenVINO | ✅ | 12.3 | 0.3704 | 11.34 |
YOLOv8s | PyTorch | ✅ | 21.5 | 0.4471 | 33.77 |
YOLOv8s | TorchScript | ✅ | 42.9 | 0.4472 | 34.84 |
YOLOv8s | ONNX | ✅ | 42.8 | 0.4472 | 43.23 |
YOLOv8s | OpenVINO | ✅ | 42.9 | 0.4471 | 13.86 |
YOLOv8m | PyTorch | ✅ | 49.7 | 0.5013 | 53.91 |
YOLOv8m | TorchScript | ✅ | 99.2 | 0.4999 | 53.51 |
YOLOv8m | ONNX | ✅ | 99.0 | 0.4999 | 64.16 |
YOLOv8m | OpenVINO | ✅ | 99.1 | 0.4996 | 28.79 |
YOLOv8l | PyTorch | ✅ | 83.7 | 0.5293 | 75.78 |
YOLOv8l | TorchScript | ✅ | 167.2 | 0.5268 | 79.13 |
YOLOv8l | ONNX | ✅ | 166.8 | 0.5268 | 88.45 |
YOLOv8l | OpenVINO | ✅ | 167.0 | 0.5263 | 56.23 |
YOLOv8x | PyTorch | ✅ | 130.5 | 0.5404 | 96.60 |
YOLOv8x | TorchScript | ✅ | 260.7 | 0.5371 | 114.28 |
YOLOv8x | ONNX | ✅ | 260.4 | 0.5371 | 111.02 |
YOLOv8x | OpenVINO | ✅ | 260.6 | 0.5371 | 83.28 |
英特尔酷睿CPU
英特尔®酷睿™系列是英特尔的高性能处理器系列。该系列包括酷睿i3(入门级)、酷睿i5(中端)、酷睿i7(高端)和酷睿i9(极致性能)。每个系列都针对不同的计算需求和预算,从日常任务到要求苛刻的专业工作负载。随着每一代新产品的推出,性能、能效和功能都有所提升。
以下基准测试在FP32精度下运行于第13代英特尔®酷睿™i7-13700H处理器。
模型 | 格式 | 状态 | 大小 (MB) | metrics/mAP50-95(B) | 推理时间 (ms/im) |
---|---|---|---|---|---|
YOLOv8n | PyTorch | ✅ | 6.2 | 0.4478 | 104.61 |
YOLOv8n | TorchScript | ✅ | 12.4 | 0.4525 | 112.39 |
YOLOv8n | ONNX | ✅ | 12.2 | 0.4525 | 28.02 |
YOLOv8n | OpenVINO | ✅ | 12.3 | 0.4504 | 23.53 |
YOLOv8s | PyTorch | ✅ | 21.5 | 0.5885 | 194.83 |
YOLOv8s | TorchScript | ✅ | 43.0 | 0.5962 | 202.01 |
YOLOv8s | ONNX | ✅ | 42.8 | 0.5962 | 65.74 |
YOLOv8s | OpenVINO | ✅ | 42.9 | 0.5966 | 38.66 |
YOLOv8m | PyTorch | ✅ | 49.7 | 0.6101 | 355.23 |
YOLOv8m | TorchScript | ✅ | 99.2 | 0.6120 | 424.78 |
YOLOv8m | ONNX | ✅ | 99.0 | 0.6120 | 173.39 |
YOLOv8m | OpenVINO | ✅ | 99.1 | 0.6091 | 69.80 |
YOLOv8l | PyTorch | ✅ | 83.7 | 0.6591 | 593.00 |
YOLOv8l | TorchScript | ✅ | 167.2 | 0.6580 | 697.54 |
YOLOv8l | ONNX | ✅ | 166.8 | 0.6580 | 342.15 |
YOLOv8l | OpenVINO | ✅ | 167.0 | 0.0708 | 117.69 |
YOLOv8x | PyTorch | ✅ | 130.5 | 0.6651 | 804.65 |
YOLOv8x | TorchScript | ✅ | 260.8 | 0.6650 | 921.46 |
YOLOv8x | ONNX | ✅ | 260.4 | 0.6650 | 526.66 |
YOLOv8x | OpenVINO | ✅ | 260.6 | 0.6619 | 158.73 |
Intel Ultra 7 155H Meteor Lake CPU
Intel® Ultra™ 7 155H 代表了高性能计算的新基准,专为从游戏玩家到内容创作者的最苛刻用户设计。Ultra™ 7 155H 不仅仅是一颗CPU;它在一个芯片内集成了强大的GPU和先进的NPU(神经处理单元),为多样化的计算需求提供全面的解决方案。
这种混合架构使得Ultra™ 7 155H在传统CPU任务和GPU加速工作负载中表现出色,同时NPU增强了AI驱动的流程,使得机器学习操作更快更高效。这使得Ultra™ 7 155H成为需要高性能图形、复杂计算和AI推理的应用的理想选择。
Ultra™ 7系列包括多个型号,每个型号提供不同级别的性能,'H'标识表示适用于笔记本电脑和紧凑型设备的高功率变体。早期基准测试突显了Ultra™ 7 155H在多任务环境中的卓越性能,特别是CPU、GPU和NPU的结合带来了显著的效率和速度。
作为英特尔对尖端技术的承诺的一部分,Ultra™ 7 155H旨在满足未来计算的需求,预计将发布更多型号。Ultra™ 7 155H的可用性因地区而异,并且它继续因其在一个芯片中集成三个强大的处理单元而受到赞誉,为计算性能设定了新标准。
以下基准测试在Intel® Ultra™ 7 155H上以FP32和INT8精度运行。
基准测试
模型 | 格式 | 精度 | 状态 | 大小 (MB) | metrics/mAP50-95(B) | 推理时间 (ms/im) |
---|---|---|---|---|---|---|
YOLOv8n | PyTorch | FP32 | ✅ | 6.2 | 0.6381 | 35.95 |
YOLOv8n | OpenVINO | FP32 | ✅ | 12.3 | 0.6117 | 8.32 |
YOLOv8n | OpenVINO | INT8 | ✅ | 3.6 | 0.5791 | 9.88 |
YOLOv8s | PyTorch | FP32 | ✅ | 21.5 | 0.6967 | 79.72 |
YOLOv8s | OpenVINO | FP32 | ✅ | 42.9 | 0.7136 | 13.37 |
YOLOv8s | OpenVINO | INT8 | ✅ | 11.2 | 0.7086 | 9.96 |
YOLOv8m | PyTorch | FP32 | ✅ | 49.7 | 0.737 | 202.05 |
YOLOv8m | OpenVINO | FP32 | ✅ | 99.1 | 0.7331 | 28.07 |
YOLOv8m | OpenVINO | INT8 | ✅ | 25.5 | 0.7259 | 21.11 |
YOLOv8l | PyTorch | FP32 | ✅ | 83.7 | 0.7769 | 393.37 |
YOLOv8l | OpenVINO | FP32 | ✅ | 167.0 | 0.0 | 52.73 |
YOLOv8l | OpenVINO | INT8 | ✅ | 42.6 | 0.7861 | 28.11 |
YOLOv8x | PyTorch | FP32 | ✅ | 130.5 | 0.7759 | 610.71 |
YOLOv8x | OpenVINO | FP32 | ✅ | 260.6 | 0.748 | 73.51 |
YOLOv8x | OpenVINO | INT8 | ✅ | 66.0 | 0.8085 | 51.71 |
模型 | 格式 | 精度 | 状态 | 大小 (MB) | metrics/mAP50-95(B) | 推理时间 (ms/im) |
---|---|---|---|---|---|---|
YOLOv8n | PyTorch | FP32 | ✅ | 6.2 | 0.6381 | 34.69 |
YOLOv8n | OpenVINO | FP32 | ✅ | 12.3 | 0.6092 | 39.06 |
YOLOv8n | OpenVINO | INT8 | ✅ | 3.6 | 0.5968 | 18.37 |
YOLOv8s | PyTorch | FP32 | ✅ | 21.5 | 0.6967 | 79.9 |
YOLOv8s | OpenVINO | FP32 | ✅ | 42.9 | 0.7136 | 82.6 |
YOLOv8s | OpenVINO | INT8 | ✅ | 11.2 | 0.7083 | 29.51 |
| YOLOv8m | PyTorch | FP32 | ✅ | 49.7 | 0.737 | 202.43 | | YOLOv8m | OpenVINO | FP32 | ✅ | 99.1 | 0.728 | 181.27 | | YOLOv8m | OpenVINO | INT8 | ✅ | 25.5 | 0.7285 | 51.25 | | YOLOv8l | PyTorch | FP32 | ✅ | 83.7 | 0.7769 | 385.87 | | YOLOv8l | OpenVINO | FP32 | ✅ | 167.0 | 0.7551 | 347.75 | | YOLOv8l | OpenVINO | INT8 | ✅ | 42.6 | 0.7675 | 91.66 | | YOLOv8x | PyTorch | FP32 | ✅ | 130.5 | 0.7759 | 603.63 | | YOLOv8x | OpenVINO | FP32 | ✅ | 260.6 | 0.7479 | 516.39 | | YOLOv8x | OpenVINO | INT8 | ✅ | 66.0 | 0.8119 | 142.42 |
Model | Format | Precision | Status | Size (MB) | metrics/mAP50-95(B) | Inference time (ms/im) |
---|---|---|---|---|---|---|
YOLOv8n | PyTorch | FP32 | ✅ | 6.2 | 0.6381 | 36.98 |
YOLOv8n | OpenVINO | FP32 | ✅ | 12.3 | 0.6103 | 16.68 |
YOLOv8n | OpenVINO | INT8 | ✅ | 3.6 | 0.5941 | 14.6 |
YOLOv8s | PyTorch | FP32 | ✅ | 21.5 | 0.6967 | 79.76 |
YOLOv8s | OpenVINO | FP32 | ✅ | 42.9 | 0.7144 | 32.89 |
YOLOv8s | OpenVINO | INT8 | ✅ | 11.2 | 0.7062 | 26.13 |
YOLOv8m | PyTorch | FP32 | ✅ | 49.7 | 0.737 | 201.44 |
YOLOv8m | OpenVINO | FP32 | ✅ | 99.1 | 0.7284 | 54.4 |
YOLOv8m | OpenVINO | INT8 | ✅ | 25.5 | 0.7268 | 30.76 |
YOLOv8l | PyTorch | FP32 | ✅ | 83.7 | 0.7769 | 385.46 |
YOLOv8l | OpenVINO | FP32 | ✅ | 167.0 | 0.7539 | 80.1 |
YOLOv8l | OpenVINO | INT8 | ✅ | 42.6 | 0.7508 | 52.25 |
YOLOv8x | PyTorch | FP32 | ✅ | 130.5 | 0.7759 | 609.4 |
YOLOv8x | OpenVINO | FP32 | ✅ | 260.6 | 0.7637 | 104.79 |
YOLOv8x | OpenVINO | INT8 | ✅ | 66.0 | 0.8077 | 64.96 |
重现我们的结果
要在所有导出格式上重现上述Ultralytics基准测试,请运行以下代码:
Example
请注意,基准测试结果可能会因系统的具体硬件和软件配置以及运行基准测试时的系统负载而有所不同。为了获得最可靠的结果,请使用包含大量图像的数据集,例如data='coco128.yaml'
(128张验证图像)或data='coco.yaml'
(5000张验证图像)。
结论
基准测试结果清楚地展示了将YOLOv8模型导出为OpenVINO格式的优势。在不同的模型和硬件平台上,OpenVINO格式在推理速度方面始终优于其他格式,同时保持了相当的准确性。
对于Intel®数据中心GPU Flex系列,OpenVINO格式能够提供比原始PyTorch格式快近10倍的推理速度。在Xeon CPU上,OpenVINO格式的速度是PyTorch格式的两倍。不同格式下模型的准确性几乎相同。 基准测试突显了OpenVINO作为部署深度学习模型的工具的有效性。通过将模型转换为OpenVINO格式,开发者可以实现显著的性能提升,从而更容易在实际应用中部署这些模型。
有关使用OpenVINO的更多详细信息和说明,请参阅官方OpenVINO文档。
常见问题
如何将YOLOv8模型导出为OpenVINO格式?
将YOLOv8模型导出为OpenVINO格式可以显著提升CPU速度,并在Intel硬件上启用GPU和NPU加速。要导出,您可以使用以下Python或CLI方法:
示例
更多信息,请参阅导出格式文档。
使用OpenVINO与YOLOv8模型有哪些好处?
将Intel的OpenVINO工具包与YOLOv8模型结合使用有以下几个好处:
- 性能:在CPU推理上实现高达3倍的加速,并利用Intel GPU和NPU进行加速。
- 模型优化器:从PyTorch、TensorFlow和ONNX等流行框架中转换、优化和执行模型。
- 易用性:提供超过80个教程笔记本,帮助用户入门,包括针对YOLOv8的教程。
- 异构执行:通过统一的API在各种Intel硬件上部署模型。
有关详细的性能比较,请访问我们的基准测试部分。
如何使用导出为OpenVINO格式的YOLOv8模型进行推理?
将YOLOv8模型导出为OpenVINO格式后,您可以使用Python或CLI进行推理:
示例
更多详情,请参阅我们的预测模式文档。
为什么我应该选择Ultralytics YOLOv8而不是其他模型进行OpenVINO导出?
Ultralytics YOLOv8针对实时目标检测进行了优化,具有高精度和速度。特别是与OpenVINO结合时,YOLOv8提供了:
- 在Intel CPU上高达3倍的加速
- 在Intel GPU和NPU上无缝部署
- 在各种导出格式中保持一致且可比的准确性
有关深入的性能分析,请查看我们在不同硬件上的详细YOLOv8基准测试。
我可以在PyTorch、ONNX和OpenVINO等不同格式上对YOLOv8模型进行基准测试吗?
是的,您可以在包括PyTorch、TorchScript、ONNX和OpenVINO在内的各种格式上对YOLOv8模型进行基准测试。使用以下代码片段在您选择的数据集上运行基准测试:
示例
有关详细的基准测试结果,请参阅我们的基准测试部分和导出格式文档。