HubAI SDK
概述
hubai-sdk 包提供了对 Luxonis Hub 的 AI 和模型 区域的程序化访问。使用它可以在 Python 或命令行中管理模型、变体和实例,或触发在线转换。主要功能:- 在 Hub AI 中管理模型、变体和实例
- 为 RVC2、RVC3、RVC4 和 Hailo 目标运行在线转换
- 从 Python 脚本或
hubaiCLI 使用相同的流程 - 访问 Hub UI 中未公开的高级转换选项
如果您只需要转换流程,请参阅 HubAI 在线转换指南。
安装
Command Line
1pip install hubai-sdkCommand Line
1git clone https://github.com/luxonis/hubai-sdk.git
2cd hubai-sdk
3pip install -e .身份验证
Command Line
1export HUBAI_API_KEY="your-api-key"Python
1import os
2
3from hubai_sdk import HubAIClient
4
5client = HubAIClient(api_key=os.getenv("HUBAI_API_KEY"))hubai CLI 访问。首先登录:Command Line
1hubai login快速入门
Python
1models = client.models.list_models(limit=5)
2print(f"找到 {len(models)} 个模型")
3
4response = client.convert.RVC4(
5 path="path/to/model.onnx",
6 name="my-converted-model",
7)
8
9print(f"转换后的模型已下载到:{response.downloaded_path}")模型管理
HubAIClient.models 命名空间以编程方式进行管理。您可以列出模型、检索特定模型的信息、创建新模型、更新现有模型以及删除模型。Python
1# 列出模型
2models = client.models.list_models(
3 tasks=["OBJECT_DETECTION"],
4 is_public=True,
5 limit=10
6)
7
8# 获取模型信息
9model = client.models.get_model("model-id-or-slug")
10
11# 创建一个新模型
12new_model = client.models.create_model(
13 name="my-model",
14 license_type="MIT",
15 is_public=False,
16 description="我的模型很棒",
17 tasks=["OBJECT_DETECTION"]
18)
19
20# 更新现有模型(仅传递要更新的字段)
21updated_model = client.models.update_model(
22 new_model.id,
23 license_type="Apache 2.0",
24 description="更新的描述"
25)
26
27# 删除模型
28client.models.delete_model(new_model.id)变体管理
Python
1# 列出变体
2variants = client.variants.list_variants(model_id="model-id")
3
4# 获取变体信息
5variant = client.variants.get_variant("variant-id")
6
7new_variant = client.variants.create_variant(
8 name="my-variant",
9 model_id="model-id",
10 variant_version="1.0.0",
11 description="我的第一个变体。"
12)
13
14# 删除变体
15client.variants.delete_variant("variant-id")变体的新版本
Python
1variant = client.variants.get_variant("variant-id")
2
3new_version_of_variant = client.variants.create_variant(
4 name=variant.name,
5 model_id=variant.model_id,
6 variant_version="new-version-number",
7)实例管理
Python
1# 列出实例
2instances = client.instances.list_instances(model_id="model-id", variant_id="variant-id")
3
4# 获取实例信息
5instance = client.instances.get_instance("instance-id")
6
7# 下载实例
8downloaded_path = client.instances.download_instance("instance-id", output_dir="/path/to/output/directory")
9
10# 创建新实例
11from hubai_sdk.utils.types import ModelType
12
13instance = client.instances.create_instance(
14 name="my-instance",
15 variant_id="variant-id",
16 model_type=ModelType.ONNX,
17 input_shape=[1, 3, 288, 512]
18)
19
20# 检索实例配置
21config = client.instances.get_config("instance-id")
22
23# 检索实例文件
24files = client.instances.get_files("instance-id")
25
26# 上传文件到实例
27client.instances.upload_file("path/to/nn_archive.tar.xz", "instance-id")
28
29# 删除实例
30client.instances.delete_instance("instance-id")转换
HubAIClient.convert 命名空间将模型转换为不同的格式。Python
1# 将模型转换为 RVC4 格式
2response = client.convert.RVC4(
3 path="/path/to/your/nn_archive.tar.xz",
4 name="my-converted-model",
5 quantization_mode="INT8_STANDARD",
6 quantization_data="GENERAL",
7)
8
9downloaded_path = response.downloaded_path
10instance = response.instancemy-converted-model 的模型。转换完成后,转换后的模型将下载到 downloaded_path,模型实例将返回到 instance 变量中。Python
1# 将 YOLO 模型转换为 RVC4 格式
2response = client.convert.RVC4(
3 path="path/to/your/yolo-model.pt",
4 name="my-converted-yolo-model",
5 quantization_mode="INT8_STANDARD",
6 quantization_data="GENERAL",
7 yolo_input_shape=[512, 288],
8 yolo_class_names=["list", "of", "class", "names"],
9 yolo_version="yolov8", # 可选覆盖
10)yolo_version。如果省略,后端会尝试从 PyTorch 模型文件中自动检测版本,但该文件仍必须来自支持的 YOLO 版本之一。 SDK 当前公开的显式 yolo_version 值包括 yolov5、yolov6r1、yolov6r3、yolov6r4、yolov7、yolov8、yolov9、yolov10、yolov11、yolov12、yolov26 和 goldyolo。 有关支持的 YOLO 系列、变体以及当前限制的准确列表,请参阅上游的 支持的模型表。有关在线转换的更多信息,请参阅 Hub 在线转换 指南。