跳至内容

英特尔OpenVINO Export

OpenVINO 生态系统

在本指南中,我们将介绍如何将YOLOv8 模型导出为 OpenVINO格式,这可将CPU速度提高 3 倍,并可在其他英特尔硬件(iGPUdGPUVPU 等)上加速。

OpenVINOOpen Visual Inference & Neural Network Optimization toolkit 的缩写,是一个用于优化和部署人工智能推理模型的综合工具包。虽然名称中包含 Visual,但OpenVINO 还支持语言、音频、时间序列等各种附加任务。



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

使用示例

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

示例

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO('yolov8n.pt')

# Export the model
model.export(format='openvino')  # creates 'yolov8n_openvino_model/'

# Load the exported OpenVINO model
ov_model = YOLO('yolov8n_openvino_model/')

# Run inference
results = ov_model('https://ultralytics.com/images/bus.jpg')
# Export a YOLOv8n PyTorch model to OpenVINO format
yolo export model=yolov8n.pt format=openvino  # creates 'yolov8n_openvino_model/'

# Run inference with the exported model
yolo predict model=yolov8n_openvino_model source='https://ultralytics.com/images/bus.jpg'

论据

钥匙 价值 说明
format 'openvino' 格式导出到
imgsz 640 图像尺寸标量或(高,宽)列表,即(640,480)
half False FP16 量化

的好处OpenVINO

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

OpenVINO 出口结构

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

  1. XML 文件:描述网络拓扑结构。
  2. BIN 文件:包含weights and biases 二进制数据。
  3. 映射文件:保存原始模型输出张量到OpenVINO tensor 名称的映射。

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

在部署中使用OpenVINO 导出

获得OpenVINO 文件后,就可以使用OpenVINO Runtime 运行模型。运行时为所有支持的英特尔硬件提供了统一的推理 API。它还提供跨英特尔硬件负载均衡和异步执行等高级功能。有关运行推理的更多信息,请参阅《使用OpenVINO Runtime 进行推理指南》。

请记住,您需要 XML 和 BIN 文件以及任何特定于应用程序的设置,如输入尺寸、用于归一化的比例因子等,以便正确设置模型并将其用于 Runtime。

在部署应用程序中,通常需要执行以下步骤:

  1. 初始化OpenVINO ,创建 core = Core().
  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 以及英特尔至强 CPU 上以 FP32 精度运行(以 half=False 参数)。

备注

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

所有基准测试都在 openvino Python 软件包版本 2023.0.1.

英特尔 Flex GPU

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

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

Flex GPU 基准测试
模型 格式 现状 大小(MB) mAP50-95(B) 推理时间(毫秒/分钟)
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) 指标和推理时间。

英特尔弧形图形处理器

英特尔® Arc™ 代表着英特尔进军专用 GPU 市场。Arc™ 系列旨在与 AMD 和 Nvidia 等领先 GPU 制造商竞争,同时面向笔记本电脑和台式机市场。该系列包括适用于笔记本电脑等小型设备的移动版本,以及适用于台式电脑的更大更强大的版本。

Arc™ 系列分为三个类别:Arc™ 3、Arc™ 5 和 Arc™ 7,每个数字表示性能级别。每个类别包括多个型号,GPU 型号名称中的 "M "表示移动、集成变体。

早期的评论对 Arc™ 系列,尤其是集成的 A770M GPU 的图形性能给予了高度评价。Arc™ 系列的供货情况因地区而异,预计不久将发布更多型号。英特尔® Arc™ GPU为从游戏到内容创建等一系列计算需求提供了高性能解决方案。

以下基准测试在英特尔® Arc 770 GPU 上以 FP32 精度运行。

Arc GPU 基准测试
模型 格式 现状 大小(MB) 公制/mAP50-95(B) 推理时间(毫秒/分钟)
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

英特尔至强 CPU

英特尔® 至强® CPU 是一款高性能的服务器级处理器,专为复杂和高要求的工作负载而设计。从高端云计算和虚拟化到人工智能和机器学习应用,至强® CPU 提供了当今数据中心所需的强大功能、可靠性和灵活性。

值得一提的是,至强® CPU具有高计算密度和可扩展性,是小型企业和大型企业的理想选择。通过选择英特尔® 至强® CPU,企业可以自信地处理最苛刻的计算任务,并在保持成本效益和运营效率的同时促进创新。

以下基准测试在 FP32 精度的第 4 代 Intel® Xeon® Scalable CPU 上运行。

Xeon CPU 基准测试
模型 格式 现状 大小(MB) 公制/mAP50-95(B) 推理时间(毫秒/分钟)
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

英特尔酷睿处理器

英特尔®酷睿®系列是英特尔公司推出的一系列高性能处理器。该系列包括酷睿 i3(入门级)、酷睿 i5(中端)、酷睿 i7(高端)和酷睿 i9(极致性能)。从日常任务到苛刻的专业工作负载,每个系列都能满足不同的计算需求和预算。每一代产品在性能、能效和功能方面都有改进。

以下基准测试在 FP32 精度的第 13 代 Intel® Core® i7-13700H CPU 上运行。

核心 CPU 基准测试
模型 格式 现状 大小(MB) 公制/mAP50-95(B) 推理时间(毫秒/分钟)
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

复制我们的结果

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

示例

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO('yolov8n.pt')

# Benchmark YOLOv8n speed and accuracy on the COCO128 dataset for all all export formats
results= model.benchmarks(data='coco128.yaml')
# Benchmark YOLOv8n speed and accuracy on the COCO128 dataset for all all export formats
yolo benchmark model=yolov8n.pt data=coco128.yaml

请注意,基准测试结果可能会因系统的具体硬件和软件配置以及运行基准测试时系统的当前工作量而有所不同。为获得最可靠的结果,请使用包含大量图像的数据集,即 data='coco128.yaml' (128 val images), ordata='coco.yaml'` (5000 val images)。

结论

基准测试结果清楚地表明了将YOLOv8 模型导出为OpenVINO 格式的好处。在不同的模型和硬件平台上,OpenVINO 格式的推理速度始终优于其他格式,同时保持了相当的准确性。

对于英特尔® 数据中心 GPU Flex 系列,OpenVINO 格式的推理速度几乎是原始PyTorch 格式的 10 倍。在至强 CPU 上,OpenVINO 格式的推理速度是PyTorch 格式的两倍。不同格式的模型准确性几乎相同。

这些基准测试凸显了OpenVINO 作为深度学习模型部署工具的有效性。通过将模型转换为OpenVINO 格式,开发人员可以显著提高性能,从而更容易在实际应用中部署这些模型。

有关使用OpenVINO 的详细信息和说明,请参阅 OpenVINO 官方文档



创建于 2023-11-12,更新于 2024-02-13
作者:chr043416@gmail.com(1),glenn-jocher(7),Burhan-Q(1)

评论