Skip to content

Intel OpenVINO导出

OpenVINO生态系统

在本指南中,我们将介绍如何将YOLOv8模型导出为OpenVINO格式,该格式可以提供高达3倍的CPU加速,以及在Intel GPUNPU硬件上加速YOLO推理。

OpenVINO,全称为Open Visual Inference & Neural Network优化工具包,是一个用于优化和部署AI推理模型的综合工具包。尽管名称中包含“视觉”,OpenVINO还支持包括语言、音频、时间序列等在内的多种额外任务。



观看: 如何使用OpenVINO导出和优化Ultralytics YOLOv8模型以进行推理。

使用示例

将YOLOv8n模型导出为OpenVINO格式,并使用导出的模型进行推理。

Example

from ultralytics import YOLO

# 加载一个YOLOv8n PyTorch模型
model = YOLO("yolov8n.pt")

# 导出模型
model.export(format="openvino")  # 创建'yolov8n_openvino_model/'

# 加载导出的OpenVINO模型
ov_model = YOLO("yolov8n_openvino_model/")

# 运行推理
results = ov_model("https://ultralytics.com/images/bus.jpg")
# 将YOLOv8n PyTorch模型导出为OpenVINO格式
yolo export model=yolov8n.pt format=openvino  # 创建'yolov8n_openvino_model/'

# 使用导出的模型进行推理
yolo predict model=yolov8n_openvino_model source='https://ultralytics.com/images/bus.jpg'

参数

描述
format 'openvino' 导出格式
imgsz 640 图像尺寸,标量或(h, w)列表,例如(640, 480)
half False FP16量化
int8 False INT8量化
batch 1 推理的批量大小
dynamic False 允许动态输入尺寸

OpenVINO的优势

  1. 性能: OpenVINO通过利用Intel CPU、集成和独立GPU以及FPGA的强大功能,提供高性能的推理。
  2. 异构执行支持: OpenVINO提供了一个API,可以一次编写并在任何支持的Intel硬件(CPU、GPU、FPGA、VPU等)上部署。
  3. 模型优化器: OpenVINO提供了一个模型优化器,可以导入、转换和优化来自流行的深度学习框架(如PyTorch、TensorFlow、TensorFlow Lite、Keras、ONNX、PaddlePaddle和Caffe)的模型。
  4. 易用性: 该工具包附带了超过80个教程笔记本(包括YOLOv8优化),教授工具包的不同方面。

OpenVINO导出结构

当您将模型导出为OpenVINO格式时,结果将生成一个包含以下内容的目录:

  1. XML文件: 描述网络拓扑。
  2. BIN文件: 包含权重和偏置二进制数据。
  3. 映射文件: 保存原始模型输出张量到OpenVINO张量名称的映射。

您可以使用这些文件通过OpenVINO推理引擎运行推理。

在部署中使用OpenVINO导出

一旦你获得了OpenVINO文件,你就可以使用OpenVINO Runtime来运行模型。Runtime提供了一个统一的API,用于在所有支持的英特尔硬件上进行推理。它还提供了高级功能,如在英特尔硬件上的负载均衡和异步执行。有关运行推理的更多信息,请参阅使用OpenVINO Runtime进行推理指南

请记住,你需要XML和BIN文件以及任何应用程序特定的设置,如输入大小、归一化的比例因子等,以正确设置和使用Runtime中的模型。

在你的部署应用程序中,通常会执行以下步骤:

  1. 通过创建core = Core()来初始化OpenVINO。
  2. 使用core.read_model()方法加载模型。
  3. 使用core.compile_model()函数编译模型。
  4. 准备输入(图像、文本、音频等)。
  5. 使用compiled_model(input_data)运行推理。

有关更详细的步骤和代码片段,请参阅OpenVINO文档API教程

OpenVINO YOLOv8基准测试

以下YOLOv8基准测试由Ultralytics团队在4种不同的模型格式上运行,测量速度和准确性:PyTorch、TorchScript、ONNX和OpenVINO。基准测试在英特尔Flex和Arc GPU以及英特尔Xeon CPU上以FP32精度(使用half=False参数)运行。

注意

以下基准测试结果仅供参考,可能会因系统的具体硬件和软件配置以及运行基准测试时的系统当前负载而有所不同。

所有基准测试均使用openvino Python包版本2023.0.1运行。

英特尔Flex GPU

英特尔®数据中心GPU Flex系列是一款多功能且强大的解决方案,专为智能视觉云设计。该GPU支持广泛的负载,包括媒体流、云游戏、AI视觉推理和虚拟桌面基础设施负载。它以其开放的架构和内置的AV1编码支持脱颖而出,为高性能、跨架构应用程序提供了一个基于标准的软件堆栈。Flex系列GPU针对密度和质量进行了优化,提供高可靠性、可用性和可扩展性。

以下基准测试在英特尔®数据中心GPU Flex 170上以FP32精度运行。

Flex GPU benchmarks
模型 格式 状态 大小 (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精度运行。

Arc GPU benchmarks
模型 格式 状态 大小 (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精度下运行于第四代英特尔®至强®可扩展处理器。

Xeon CPU benchmarks
模型 格式 状态 大小 (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处理器。

Core CPU benchmarks
模型 格式 状态 大小 (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

Intel Core Ultra GPU benchmarks

模型 格式 精度 状态 大小 (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 |

Intel Core Ultra CPU benchmarks
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

Intel Core Ultra NPU benchmarks

重现我们的结果

要在所有导出格式上重现上述Ultralytics基准测试,请运行以下代码:

Example

from ultralytics import YOLO

# 加载一个YOLOv8n PyTorch模型
model = YOLO("yolov8n.pt")

# 在COCO8数据集上对所有导出格式进行YOLOv8n的速度和准确性基准测试
results = model.benchmarks(data="coco8.yaml")
# 在COCO8数据集上对所有导出格式进行YOLOv8n的速度和准确性基准测试
yolo benchmark model=yolov8n.pt data=coco8.yaml

请注意,基准测试结果可能会因系统的具体硬件和软件配置以及运行基准测试时的系统负载而有所不同。为了获得最可靠的结果,请使用包含大量图像的数据集,例如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方法:

示例

from ultralytics import YOLO

# 加载一个YOLOv8n PyTorch模型
model = YOLO("yolov8n.pt")

# 导出模型
model.export(format="openvino")  # 创建'yolov8n_openvino_model/'
# 将YOLOv8n PyTorch模型导出为OpenVINO格式
yolo export model=yolov8n.pt format=openvino  # 创建'yolov8n_openvino_model/'

更多信息,请参阅导出格式文档

使用OpenVINO与YOLOv8模型有哪些好处?

将Intel的OpenVINO工具包与YOLOv8模型结合使用有以下几个好处:

  1. 性能:在CPU推理上实现高达3倍的加速,并利用Intel GPU和NPU进行加速。
  2. 模型优化器:从PyTorch、TensorFlow和ONNX等流行框架中转换、优化和执行模型。
  3. 易用性:提供超过80个教程笔记本,帮助用户入门,包括针对YOLOv8的教程。
  4. 异构执行:通过统一的API在各种Intel硬件上部署模型。

有关详细的性能比较,请访问我们的基准测试部分

如何使用导出为OpenVINO格式的YOLOv8模型进行推理?

将YOLOv8模型导出为OpenVINO格式后,您可以使用Python或CLI进行推理:

示例

from ultralytics import YOLO

# 加载导出的OpenVINO模型
ov_model = YOLO("yolov8n_openvino_model/")

# 运行推理
results = ov_model("https://ultralytics.com/images/bus.jpg")
# 使用导出的模型进行推理
yolo predict model=yolov8n_openvino_model source='https://ultralytics.com/images/bus.jpg'

更多详情,请参阅我们的预测模式文档

为什么我应该选择Ultralytics YOLOv8而不是其他模型进行OpenVINO导出?

Ultralytics YOLOv8针对实时目标检测进行了优化,具有高精度和速度。特别是与OpenVINO结合时,YOLOv8提供了:

  • 在Intel CPU上高达3倍的加速
  • 在Intel GPU和NPU上无缝部署
  • 在各种导出格式中保持一致且可比的准确性

有关深入的性能分析,请查看我们在不同硬件上的详细YOLOv8基准测试

我可以在PyTorch、ONNX和OpenVINO等不同格式上对YOLOv8模型进行基准测试吗?

是的,您可以在包括PyTorch、TorchScript、ONNX和OpenVINO在内的各种格式上对YOLOv8模型进行基准测试。使用以下代码片段在您选择的数据集上运行基准测试:

示例

from ultralytics import YOLO

# 加载一个YOLOv8n PyTorch模型
model = YOLO("yolov8n.pt")

# 在COCO8数据集上对YOLOv8n的速度和[准确性](https://www.ultralytics.com/glossary/accuracy)进行基准测试,适用于所有导出格式
results = model.benchmarks(data="coco8.yaml")
# 在COCO8数据集上对YOLOv8n的速度和准确性进行基准测试,适用于所有导出格式
yolo benchmark model=yolov8n.pt data=coco8.yaml

有关详细的基准测试结果,请参阅我们的基准测试部分导出格式文档。


📅 Created 11 months ago ✏️ Updated 6 days ago

Comments