此页面由 AI 自动翻译。查看英文原版

本页目录

  • 概述
  • 转换
  • BlobConverter Web 界面
  • BlobConverter Python
  • BlobConverter API
  • 导出示例
  • 将模型导出为 ONNX
  • 使用 BlobConverter 将 ONNX 转换为 .blob

Blobconverter (旧版)

概述

BlobConverter 是我们的 开源工具,支持转换为与 RVC2 和 RVC3 Luxonis 设备兼容的 MyriadX (.blob) 格式。 该工具可通过 Web 界面和 API 访问。 本节将引导您完成所有转换选项。

转换

BlobConverter Web 界面

  • 前往 BlobConverter 网站
  • 选择您希望使用的 OpenVINO 版本。我们将使用 BlobConverter 支持的最新版本, 当前是 2022.1 对于 RAE 和其他具有 RVC3 的设备,您可以直接选择 RVC3。选择版本后, 指示模型来源。在本例中,是 ONNX 模型,但也可以上传 IR 格式的模型。然后点击 Continue
Blobconverter 菜单
  • 通过点击 Choose file 上传 ONNX 文件。
Blobconverter 上传
  • 此外,在继续模型转换之前,您可以通过点击 Advanced 来自定义 转换参数
Blobconverter 高级设置
  • 最后,点击 Convert 并等待过程完成。

BlobConverter Python

我们也提供 BlobConverter 作为 Python 包(PyPI 链接)。您可以使用 pip 进行安装:
Command Line
1pip install blobconverter
现在您可以使用指定的转换参数将 ONNX 模型转换为 blob。
Python
1import blobconverter
2
3blob_path = blobconverter.from_onnx(
4    model="/path/to/model.onnx",
5    data_type="FP16",
6    shaves=6,
7    version="2022.1"
8)
您可以在此处查看更多来自不同模型来源的转换示例。

BlobConverter API

或者,您可以使用 BlobConverter API,这对于自动化工作流特别有用。 这可以通过向 BlobConverter 服务发出 HTTP 请求来完成,并附带必要的模型和参数。您可以通过点击网站右上角的 Use API 按钮找到更多 关于如何执行此操作的信息。

导出示例

本指南将引导您完成将 ResNet18(一种广泛使用的图像分类深度神经网络)导出为 .blob 文件以在 OAK 设备上部署的过程。我们将使用 torchvision 来访问模型的预训练版本。

将模型导出为 ONNX

首先,我们将把 ResNet18 模型从 PyTorch 导出为 ONNX 格式。
Python
1import torch
2import torchvision.models as models
3
4# 从 torchvision 加载预训练的 ResNet18 模型
5resnet18 = models.resnet18(pretrained=True)
6
7# 将模型设置为评估模式
8resnet18.eval()
9
10# 创建一个与模型输入形状匹配的虚拟输入张量
11dummy_input = torch.randn(1, 3, 224, 224)
12
13# 将模型导出为 ONNX 文件
14torch.onnx.export(
15resnet18,
16dummy_input,
17'resnet18.onnx',
18export_params=True,
19opset_version=11,
20input_names=['input'],
21output_names=['output']
22)
参数说明:
  • export_params:此标志确保训练好的参数与模型结构一起导出。
  • opset_version:指定要使用的 ONNX 版本。虽然我们通常使用版本 11 来确保与 ResNet18 的要求兼容,但更高版本也可能适用。
  • input_namesoutput_names:我们使用这些标志为模型的输入和输出节点命名以提高清晰度。 在我们的示例中,输入节点名为“input”,输出节点名为“output”。
  • 导出后,您将获得一个名为“resnet18.onnx”的文件,如第三个参数所示。

使用 BlobConverter 将 ONNX 转换为 .blob

我们不手动将 ONNX 文件转换为 OpenVINO IR,然后再进行编译,而是使用 BlobConverter 来处理这两个步骤。
  • 前往 BlobConverter 网站
  • 选择合适的 OpenVINO 版本,本示例中为 2022.1
  • 上传 .onnx 文件,并在“Advanced”设置中输入任何必要的模型优化器参数。
  • --data_type:设置为 'FP16' 以获得与 VPU 处理器兼容的精度。
  • --mean_values:设置为 [123.675, 116.28, 103.53]。这些值对应于 ImageNet 数据集(ResNet18 在此数据集上训练)中所有图像的红色、绿色和 蓝色通道的平均值。
  • --scale_values:设置为 [58.395, 57.12, 57.375],这是每个通道的标准差。 此缩放可确保输入图像中的像素值范围与训练 数据中的范围匹配,这对于模型正确执行至关重要。
  • --reverse_input_channels:使用此标志从 BGR 切换到 RGB, 因为 Camera 节点以 BGR 格式输出帧,而模型需要 RGB 图像。
  • 因此,最终标志应如下所示:
Command Line
1--data_type=FP16 --mean_values=[123.675,116.28,103.53] --scale_values=[58.395,57.12,57.375] --reverse_input_channels
  • 点击 Convert 开始转换,然后在过程完成后下载 .blob 文件。
ResNet18 转换
按照这些说明操作后,您将获得一个名为 resnet18.blob 的文件,该文件已准备好在 OAK 设备上进行推理。 转换后的模型将期望 BGR 格式的图像,像素值范围为 0 到 255。然后,这些图像将被缩放到 0 到 1 的范围,并使用我们设置的标志进行归一化。