HubAI
HubAI
概述
快速入门
Python
1import os
2
3from hubai_sdk import HubAIClient
4
5api_key = os.getenv("HUBAI_API_KEY")
6client = HubAIClient(api_key=api_key)
7
8converted_model = client.convert.RVC2(
9 path="path/to/model.onnx",
10 name="my-converted-model",
11)Python API
HubAIClient.convert 命名空间下可用。针对各个目标的特定转换函数可以在目标名称下访问,例如 convert.RVC2 和 convert.RVC4。还有一个通用的转换入口点,如果您想以编程方式选择目标:Python
1from hubai_sdk.utils.types import Target
2
3response = client.convert.convert(
4 target=Target.RVC2,
5 path="path/to/model.onnx",
6 name="my-converted-model",
7)通用参数
| 参数 | 类型 | 描述 |
|---|---|---|
path | str | 模型文件的路径。 |
tool_version | str | None | 转换工具的版本。 |
quantization_mode | Literal["INT8_STANDARD", "INT8_ACCURACY_FOCUSED", "INT8_INT16_MIXED", "FP16_STANDARD", "FP32_STANDARD"] | 目标支持的量化或精度预设,例如 INT8_STANDARD 或 FP16_STANDARD。 |
output_dir | str | None | 保存转换后模型的目录。如果未指定,模型将保存在当前工作目录中。 |
YOLO 参数
| 参数 | 类型 | 描述 |
|---|---|---|
yolo_input_shape | list[int] | None | YOLO 模型的输入形状。 |
yolo_version | str | None | YOLO 版本(例如 "yolov8")。 |
RVC4 参数
RVC4 转换特有的参数。| 参数 | 类型 | 描述 |
|---|---|---|
snpe_onnx_to_dlc_args | list[str] | None | 要传递给 snpe-onnx-to-dlc 工具的参数。 |
snpe_dlc_quant_args | list[str] | None | 要传递给 snpe-dlc-quant 工具的参数。 |
snpe_dlc_graph_prepare_args | list[str] | None | 要传递给 snpe-dlc-graph-prepare 工具的参数。 |
use_per_channel_quantization | bool | 是否使用逐通道量化。默认为 True。 |
use_per_row_quantization | bool | 是否使用逐行量化。默认为 False。 |
htp_socs | list[str] | None | 要使用的 HTP SoC 列表。 |
HubAI 资源参数
| 参数 | 类型 | 描述 |
|---|---|---|
model_id | str | None | 使用现有模型,而不是创建新模型。 |
name | str | None | 要创建的模型名称。如果省略,SDK 将使用模型文件的基本名称。 |
license_type | str | None | HubAI 模型资源的许可证元数据。 |
tasks | list[str] | None | HubAI 模型资源的任务元数据。 |
variant_id | str | None | 使用现有模型变体,而不是创建新变体。 |
variant_version | str | None | 要创建的变体的版本标识符。 |
input_shape | list[int] | None | 要创建的模型实例的输入形状元数据。 |
CLI 参考
Command Line
1hubai login
2hubai convert RVC2 --path /path/to/model.onnx --name "my-model"hubai convert --help。从 BlobConverter 迁移
modelconverter 和 HubAI SDK 取代,未来它们将成为唯一支持的转换方式。blobconverter 仍然可用,可用于转换,但我们建议在新项目中使用 HubAI SDK。HubAI SDK 的 API 与 blobconverter 类似,但在参数和转换方式上存在一些差异。blobconverter 提供了几个用于从不同框架转换模型的函数,例如 from_onnx、from_openvino 和 from_tf。这些函数现在被 HubAI SDK 中的 convert.RVC2 函数取代,该函数接受一个参数 path,用于指定模型文件的路径。下表显示了 blobconverter 和 HubAI SDK 参数之间的映射。参数按其目的分组。第一列显示 blobconverter 的参数,第二列显示 HubAI SDK 中的等效参数,第三列包含其他说明。blobconverter | HubAI SDK | 说明 |
|---|---|---|
model | path | 模型文件路径。 |
xml | path | XML 文件路径。仅用于从 OpenVINO IR 转换。 |
bin | opts["input_bin"] | BIN 文件路径。仅用于从 OpenVINO IR 转换。 |
version | tool_version | 转换工具的版本。 |
data_type | quantization_mode | 模型的量化模式。 |
shaves | number_of_shaves | 要使用的 shave 数量。 |
optimizer_params | mo_args | 要传递给模型优化器的参数。 |
compile_params | compile_tool_args | 要传递给 BLOB 编译器的参数。 |
HubAI SDK 启用了 superblob,这仅在 DepthAI v3 上受支持。如果要将模型转换为旧版 RVC2 格式 (blob),可以将 superblob=False 传递给 convert.RVC2 函数。简单转换
blobconverter 进行简单的 ONNX 转换Python
1import blobconverter
2
3blob = blobconverter.from_onnx(
4 model="resnet18.onnx",
5)HubAI SDK 的等效代码Python
1response = client.convert.RVC2(
2 path="resnet18.onnx",
3)
4
5blob = response.downloaded_path从 OpenVINO IR 转换
blobconverter 示例Python
1import blobconverter
2
3blob = blobconverter.from_openvino(
4 xml="resnet18.xml",
5 bin="resnet18.bin",
6)HubAI SDK 示例Python
1# 当 XML 和 BIN 文件位于同一位置时,
2# 仅需指定 XML
3response = client.convert.RVC2("resnet18.xml")
4blob = response.downloaded_path
5
6# 否则,可以使用
7# `opts` 参数指定 BIN 文件
8response = client.convert.RVC2(
9 path="resnet18.xml",
10 opts={
11 "input_bin": "resnet18.bin",
12 }
13)
14blob = response.downloaded_path从 TFLite 转换
HubAI 在线转换不支持从冻结的 PB 文件进行转换,仅支持 TFLITE 文件。blobconverterPython
1import blobconverter
2
3blob = blobconverter.from_tf(
4 frozen_pb="resnet18.tflite",
5)HubAI SDK 的等效代码Python
1response = client.convert.RVC2(
2 path="resnet18.tflite",
3
4)
5
6blob = response.downloaded_path高级参数
blobconverter.from_onnxPython
1import blobconverter
2
3blob = blobconverter.from_onnx(
4 model="resnet18.onnx",
5 data_type="FP16",
6 version="2021.4",
7 shaves=6,
8 optimizer_params=[
9 "--mean_values=[127.5,127.5,127.5]",
10 "--scale_values=[255,255,255]",
11 ],
12 compile_params=["-ip U8"],
13
14)HubAI SDK 的等效代码Python
1response = client.convert.RVC2(
2 path="resnet18.onnx",
3 quantization_mode="FP16_STANDARD",
4 tool_version="2021.4.0",
5 number_of_shaves=6,
6 mo_args=[
7 "mean_values=[127.5,127.5,127.5]",
8 "scale_values=[255,255,255]"
9 ],
10 compile_tool_args=["-ip", "U8"],
11)
12
13blob = response.downloaded_pathCaffe 转换
Caffe 框架进行转换。从 tools.luxonis.com 迁移
HubAI 在线转换所取代,未来它将成为唯一支持的转换方式。与 Web 应用程序相比,HubAI 在线转换还增加了对实例分割、姿态、定向检测和分类 YOLO 模型转换的支持。有关当前的转换功能,请参阅 HubAI 转换 文档。下面是一个如何轻松将现有的 .pth 文件转换为 RVC2 兼容的 .superblob 格式的示例。Python
1from hubai_sdk import HubAIClient
2
3client = HubAIClient(api_key=api_key)
4
5converted_model = client.convert.RVC2(
6 path="yolov6n.pt",
7 yolo_version="yolov6r4",
8).tar.xz 文件。请考虑查看 YOLO 参数 部分,了解其他可用标志。