Banana Pi BPI-F3 进控时空 K1开发板 AI人工智能AI 部署工具使用手册

1. 工具概述

Spacengine™ 是由 进迭时空 研发的一套 AI 算法模型部署工具,旨在帮助用户快速、高效的在进迭时空 RISC-V 系列芯片产品(以下简称 设备端 或 芯片端)上部署 AI 算法模型。Spacengine™ 依托进迭时空自研 AI 指令及量化技术,针对自研 X60、X100 等 RISC-V 系列芯片进行了深度性能优化,从而显著提升了常见算法模型在 芯片端 的推理性能。

1.1 工具总览

Spacengine™ 主要由工具集(Tools)、AI 引擎(Engine)以及示例包(Samples)构成:

  • Spacengine™ 工具集(Tools)

Spacengine™ 工具集中的功能指令均以 spine 开头。您在部署过程中,主要涉及的指令包括:spine convert, spine simulate 以及 spine helper:

$ spine -h
usage: spine [-h] {convert,simulate,helper} ...

Spacemit AI Toolkit(Version: 2024/01/15)

positional arguments:
  {convert,simulate,helper}

optional arguments:
  -h, --help            show this help message and exit

其中:
spine convert 主要负责算法模型的一键转换和/或量化
spine simulate 提供 PC 端(当前仅限 x86)的模型仿真测试功能
spine helper 提供了一系列的辅助功能
【提示】相关 功能指令 及其子命令支持自动补全

  • Spacengine™ AI 引擎(AI Engine)

得益于进迭时空智算核架构,Spacengine™ AI 引擎以轻量化插件的方式接入 ONNXRumtime 等开源框架,结合深度调优的加速后端,就可以成功的将模型高效的部署到我们的芯片上。目前主要包含 Runtime Library,Profiling 工具,Custom-Ops Plugin 等组件。

  • Spacengine™ 示例包(Samples)

Spacengine™ 示例包为您提供了丰富的模型量化、推理运行代码示例,方便您快速、高效的对进迭时空 RISC-V 系列芯片进行评估和适配。其中,模型应用场景包括但不限于图像分类、目标检测、文字识别等,主干网络涉及但不限于 MobileNet、ResNet 等。

1.2 部署流程

配合 Spacengine™ 工具的 AI 模型部署流程,主要涉及模型转换、模型量化、仿真运行、模型部署(芯片端)这四个阶段:

  • 模型转换

转换工具目前支持 3. 模型转换章节。

  • 模型量化

为了提高模型在 芯片端 的运行性能、充分发挥芯片算力,我们强烈建议您将浮点模型量化为定点模型。量化后,大部分典型模型的精度损失都可以控制在 1% 以内。具体使用细节,您可以参阅 4. 模型量化章节。

  • 仿真测试

对于转换或量化后的 ONNX 模型,您可以在 x86 平台上进行仿真推理测试。正常情况下,该推理结果与 芯片端 运行结果完全一致。您可以参阅 5. 仿真测试章节内容,了解更多使用细节。

  • 模型部署

当模型性能和精度都符合预期后,即可参考 6. 模型部署章节内容,实现 芯片端 具体上层应用的开发。

2. 快速上手

本章节主要介绍进迭时空 AI 部署工具的使用流程,以帮助您快速上手。

2.1 开发环境

当前,进迭时空为您提供 PC(x86_64) 端 Docker 和本地手动配置两种方式(二选一即可)。

【提示】我们强烈建议您选择 Docker 方式,以避免本地手动安装过程中出现问题。

2.1.1 Docker 环境使用

为了简化您的部署流程,进迭时空提供了包含完整开发环境的 Docker 镜像。您可以在相关 Docker 环境中,进行模型转换、量化、测试等工作。因此,您仅需要正确安装 Docker 环境即可。

  • Docker 环境安装指南:
    • Mac 安装 Docker(桌面版)
    • Windows 安装 Docker(桌面版)
    • Linux 安装 Docker(桌面版)
  • Docker 环境快速查看(示例):
$ sudo docker -v
Docker version 24.0.7, build afdd53b

【提示】如果您无 root 权限,请联系您所使用 PC 设备的管理员,将您的用户名添加到 docker 用户组中。届时,您将不再需要 sudo 即可执行 docker 相关命令。

2.1.1.1 获取 Docker 镜像

您可以选择直接从 harbor.spacemit.com 的 spacemit-ai 项目中,拉取 spacemit-ai-sdk 相关镜像(注:x86_64 架构);也可以选择从 https://archive.spacemit.com/spacemit-ai/spacemit-ai-sdk/ 网站手动下载、导入压缩后的镜像文件。

【提示】出于带宽等因素考虑,我们推荐您采用 手动下载相关镜像 的方式。

  • 直接拉取(示例):
$ sudo docker pull harbor.spacemit.com/spacemit-ai/spacemit-ai-sdk:latest
latest: Pulling from spacemit-ai/spacemit-ai-sdk
...

【提示】如您需要特定版本的部署工具,操作时可将 latest 替换为指定版本号或其他标签(e.g. v1.0.0)。

  • 手动下载、导入(示例):
$ wget https://archive.spacemit.com/spacemit-ai/spacemit-ai-sdk/spacemit-ai-sdk.v1.1.0.x86_64.img.tar.gz --no-check-certificate
$ sudo docker load -i spacemit-ai-sdk.v1.1.0.x86_64.img.tar.gz

2.1.1.2 查看 Docker 镜像

  • 示例:
$ sudo docker images | grep spacemit-ai-sdk
REPOSITORY                                       TAG       IMAGE ID        CREATED       SIZE
harbor.spacemit.com/spacemit-ai/spacemit-ai-sdk  latest    4d239b86f5ea    3 days ago    3.83GB

2.1.1.3 创建 Docker 容器

  • 创建容器(示例):
$ NAME=ai_test # 给您的 docker 容器取个名称
$ sudo docker run -itd --name $NAME --net=host harbor.spacemit.com/spacemit-ai/spacemit-ai-sdk:latest /bin/bash

【提示】如您打算挂载宿主机目录到容器中(e.g. 参数 -v <宿主机目录:容器目录>),请回避 /opt 目录(当前进迭时空 AI 部署工具预置文件夹路径)。

  • 查看容器(示例):
$ sudo docker ps -a | grep $NAME
CONTAINER ID   IMAGE                                                   COMMAND        CREATED          STATUS           PORTS    NAMES
0a35d7feebd9   harbor.spacemit.com/spacemit-ai/spacemit-ai-sdk:latest  "/bin/bash"    2 minutes ago    Up 2 minutes              ai_test

2.1.1.4 进入 Docker 容器

  • 进入容器(示例):
$ sudo docker exec -it $NAME /bin/bash
  • 查询版本(示例):
root@xxx:/home/workspace# spine
...
Spacemit AI Toolkit(Version: 2024/01/15)
...

如您所见,相关输出即为当前 docker 开发环境中,进迭时空 AI 部署工具的版本信息。

【注意】当您第一次调用 spine 相关命令(及其子命令)时,spine 会自动为您安装必要的依赖包,故需要网络支持(正常情况下,该过程不会占用您太多时间)。

2.1.2 本地环境搭建

2.1.2.1 环境要求

操作系统:CentOS8 或者 Ubuntu18.04(及以上)

【提示】如果您不需要在 PC 端仿真测试,CentOS7 或者 Ubuntu16.04 即可满足环境要求。

2.1.2.2 获取部署工具

SDK 包下载页面:https://archive.spacemit.com/spacemit-ai/spacemit-ai-sdk/

  • 下载示例(e.g. v1.1.0):
$ wget https://archive.spacemit.com/spacemit-ai/spacemit-ai-sdk/spacemit-ai-sdk.v1.1.0.x86_64.tar.gz --no-check-certificate

2.1.2.3 安装部署工具

  • 解压工具(示例):
$ tar xzf spacemit-ai-sdk.v1.1.0.x86_64.tar.gz
  • 目录结构(示例):
$ tree -L 1 spacemit-ai-sdk.v1.1.0
spacemit-ai-sdk.v1.1.0
├── .spine.rc -> spine*       // 工具集 环境配置脚本
├── bianbu-ai-support         // 上层应用开发支持库(及示例)
├── quick_start*              // 快速上手示例脚本
├── install.sh*               // 依赖环境安装脚本
├── spacemit-gcc              // x86_64-riscv64 编译器
├── spacemit-ort              // 推理引擎(含算子库)
├── spacemit-qemu             // x86_64-riscv64 模拟器
├── spacengine*               // 工具集 入口
├── spacengine-toolkit        // 工具集 Python 环境(paddle/tf2/onnx 等模型相关)
├── spacengine-toolkit-caffe  // 工具集 Python 环境(caffe 官方模型相关)
├── spacengine-toolkit-tf1    // 工具集 Python 环境(tf1 模型相关)
├── spacengine-wheel          // 工具集 Python Wheel 包
├── spacengine-xquant         // 工具集 Python 环境(量化器)
└── spine -> spacengine*      // 工具集 入口(快捷)
  • 安装依赖(示例):
$ bash install.sh

【提示】您可能需要 root 权限来执行相关依赖软件的安装。若您无法获取相关权限,您可以联系您当前使用设备的管理员协助安装,或使用进迭时空为您提供的 AI 部署工具 docker 镜像(参见 2.1 Docker 环境使用 章节内容)。

  • 导入工具(示例):
# cd spacemit-ai-sdk.v1.1.0
$ source .spine.rc # 注: 仅对当前终端有效(您也可以编辑 ~/.bashrc 文件,使其对所有终端生效)
  • 查询版本(示例):
root@xxx:/home/workspace# spine
...
Spacemit AI Toolkit(Version: 2024/01/15)
...

【注意】当您第一次调用 spine 相关命令(及其子命令)时,spine 会自动为您安装必要的依赖包,故需要网络支持(正常情况下,该过程不会占用您太多时间)。

2.1.3 快速验证

为方便您快速上手进迭时空 AI 部署工具,我们为您准备了 quick_start 脚本工具(SDK 根目录下)。您可以通过运行该工具,快速验证并熟悉 AI 模型部署的全流程。

  • 使用说明(示例):
$ quick_start
Usage: /opt/spacemit-ai-sdk.v1.1.0/quick_start [paddle|demo|all]

其中,参数 paddle 指明快速演示 Paddle 相关模型部署流程(包括:资源下载、模型转换、模型量化、精度验证、仿真运行等);参数 demo 指明快速演示 C/C++ 应用程序编译、测试等流程;参数 all 指明快速演示所有任务(当前:paddle 和 demo)。

【说明】当您首次执行 quick_start paddle 或 quick_start all 时,脚本工具会自动下载并解压 quick_start.tar.gz 数据包(目录结构示例):

dataset/
├── data
│   └── Imagenet
│       ├── Calib            // 校准数据集
│       ├── Test             // 测试数据集
│       ├── calib_list.txt   // 校准数据列表
│       └── test_label.txt   // 测试数据标签
└── paddle
    └── classification
        ├── infer.py         // 推理测试脚本
        └── resnet50
            ├── inference.json  // 量化配置文件
            ├── inference.pdiparams
            └── inference.pdmodel

2.2 模型准备

以 quick_start 中的 Paddle 模型为例(其他框架模型类似,详情参阅 3. 模型转换章节内容),您也可以通过下述命令下载、解压示例模型:

$ wget https://bj.bcebos.com/paddle2onnx/model_zoo/resnet50.tar.gz && tar xvf resnet50.tar.gz
$ tree resnet50
resnet50
├── inference.pdiparams
└── inference.pdmodel

0 directories, 2 files

2.3 模型转换(和量化)

spine convert 主要负责算法模型的一键转换和量化。以 quick_start 脚本工具中的 test_convert_paddle 任务为例,在开发环境中,通过执行下述 spine convert paddle 命令即可完成模型的一键转换:

$ spine convert paddle --model_dir resnet50 \
                        --model_filename inference.pdmodel \
                        --params_filename inference.pdiparams \
                        --save_file resnet50/inference.onnx
[Paddle2ONNX] Start to parse PaddlePaddle model...
[Paddle2ONNX] Model file path: resnet50/inference.pdmodel
[Paddle2ONNX] Paramters file path: resnet50/inference.pdiparams
[Paddle2ONNX] Start to parsing Paddle model...
[Paddle2ONNX] Use opset_version = 9 for ONNX export.
[Paddle2ONNX] PaddlePaddle model is exported as ONNX format now.

【说明】--model_dir 指定 Paddle 模型目录,--model_filename 指定 Paddle 模型文件,--params_filename 指定 Paddle 模型参数文件,--save_file 指定输出 ONNX 模型文件路径。您可以参阅 3. 模型转换章节内容,了解更多模型转换及参数介绍细节。

【提示】--config,-c 参数可以指定量化配置文件,从而进一步将浮点模型量化为定点模型:

$ spine convert paddle --model_dir resnet50 \
                        --model_filename inference.pdmodel \
                        --params_filename inference.pdiparams \
                        --save_file resnet50/inference.onnx \
                        --config resnet50/inference.json
$ tree resnet50
resnet50
├── inference.json
├── inference.onnx
├── inference.pdiparams
├── inference.pdmodel
├── inference.q.onnx        // 量化后模型文件
└── inference.q_report.md   // 量化分析报告
  • 配置文件 inference.json 示例:
{
    "model_parameters": {
        "onnx_model": "resnet50/inference.onnx",
        "output_model_file_prefix": "inference.q",
        "working_dir": "resnet50"
    },
    "calibration_parameters": {
        "calibration_step": 500,
        "calibration_device": "cuda",
        "calibration_type": "default",
        "input_parametres": [
            {
                "input_name": "inputs",
                "input_shape": [
                    1,
                    3,
                    224,
                    224
                ],
                "file_type": "img",
                "mean_value": [
                    123.675,
                    116.28,
                    103.53
                ],
                "std_value": [
                    58.395,
                    57.12,
                    57.375
                ],
                "preprocess_file": "IMAGENET",
                "data_list_path": "dataset/data/Imagenet/calib_list.txt"
            }
        ]
    },
    "quantization_parameters": {
        "precision_level": 0
    }
}

其中,dataset 目录解压自 4. 模型量化章节内容。

2.4 精度验证

不同应用场景、领域下的精度评估指标各不相同。以 quick_start 中的 Paddle 分类模型为例,在开发环境中执行下述命令,可以在指定测试数据集上,快速对比、验证量化后模型的精度:

# eval converted onnx model(fp32)
$ /opt/spacemit-ai-sdk.v1.1.0/spacengine-toolkit/bin/python3 -m pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
$ /opt/spacemit-ai-sdk.v1.1.0/spacengine-toolkit/bin/python3 \
    dataset/paddle/classification/infer.py --model resnet50/inference.onnx \
    --image_dir dataset/data/Imagenet/Test --label_path dataset/data/Imagenet/test_label.txt
Prec@1 0.750 = 45 / 60
Prec@5 0.967 = 58 / 60

# eval quantized onnx model(int8)
$ /opt/spacemit-ai-sdk.v1.1.0/spacengine-toolkit/bin/python3 \
    dataset/paddle/classification/infer.py --model resnet50/inference.q.onnx \
    --image_dir dataset/data/Imagenet/Test --label_path dataset/data/Imagenet/test_label.txt
Prec@1 0.750 = 45 / 60
Prec@5 0.933 = 56 / 60

2.5 仿真测试

2.5.1 测试数据

spine helper test 提供创建标准 ONNX 测试数据集功能。以 quick_start 中的 test_simulate_paddle_qemu 函数及上述 Paddle 模型为例,在开发环境中运行下述命令:

$ spine helper test --model_path resnet50/inference.onnx --root_path test_data --test_name resnet50 -r 4 -f p2o.DynamicDimension.0:1 --save_output
[INFO] create random test data under /home/workspace/test_data/resnet50/test_data_set_0 done
[INFO] create random test data under /home/workspace/test_data/resnet50/test_data_set_1 done
[INFO] create random test data under /home/workspace/test_data/resnet50/test_data_set_2 done
[INFO] create random test data under /home/workspace/test_data/resnet50/test_data_set_3 done
$ tree test_data/resnet50/
test_data/resnet50/
├── inference.onnx
├── test_data_set_0
│   ├── input_0.pb
│   └── output_0.pb
├── test_data_set_1
│   ├── input_0.pb
│   └── output_0.pb
├── test_data_set_2
│   ├── input_0.pb
│   └── output_0.pb
└── test_data_set_3
    ├── input_0.pb
    └── output_0.pb

4 directories, 9 files

【说明】--model_path 指定 ONNX 模型路径,--root_path 指定测试数据集根目录,--test_name 指定测试用例名称,-r 指定测试用例数量,-f 指定符号参数对应的 shape,--save_output 指定需要保存 x86 测试输出结果。更多参数细节,可以参阅 5.2.5 数据构建 章节内容。

2.5.2 仿真运行

spine simulate 提供 PC 端(当前仅限 x86 架构)的模型仿真测试功能。该功能基于 SDK 中预置的 qemu-riscv64 以及 x86_64-riscv64 交叉编译工具,支持标准 ONNX 模型及进迭时空 AI 部署工具量化后的模型,并保证推理结果与 芯片端 运行结果完全一致。以上述生成的测试数据集为例:

$ spine simulate test_data/resnet50/
result:
        Models: 1
        Total test cases: 4
                Succeeded: 4
                Not implemented: 0
                Failed: 0
        Stats by Operator type:
                Not implemented(0):
                Failed:
Failed Test Cases:

【说明】spine simulate 封装了 SDK 目录下的 spacemit-ort/bin/onnx_test_runner 测试工具。如果测试用例目录下存在 标准 输出结果(e.g. spine helper test 构造测试数据时,通过 --save_output 指定保存 x86 输出结果),则 spine simulate test_data 命令还会对 芯片端 仿真测试输出结果进行精度比对(默认:相对误差 1e-5,绝对误差 1e-5)。更多参数细节,可以参阅 5.1.2 spine simulate 章节内容。

2.6 性能测试

SDK 目录下的 spacemit-ort/bin/onnxruntime_perf_test 工具支持在 芯片端 快速测试 AI 算法模型的纯推理性能。该工具兼容 ONNX 模型,故您可以很方便的使用它来评测原始 ONNX 浮点模型,以及转换(和/或量化)后的进迭时空定点模型性能。以上述量化后的 Paddle 模型为例,在 芯片端 执行下述命令:

bianbu@k1:~/desktop$ onnxruntime_perf_test inference.q.onnx -m times -r 100 -e spacemit
using SpaceMITExecutionProvider 
Session creation time cost: 2.74716 s
First inference time cost: 85 ms
Total inference time cost: 6.22935 s
Total inference requests: 100
Average inference time cost: 62.2935 ms
Total inference run time: 6.23146 s
Number of inferences per second: 16.0476 
Total CPU usage: 382 %
Peak working set size: 114634752 bytes
Min Latency: 0.0529422 s
Max Latency: 0.0912857 s
P50 Latency: 0.0603562 s
P90 Latency: 0.0741593 s
P95 Latency: 0.0837052 s
P99 Latency: 0.0912857 s
P999 Latency: 0.0912857 s

【说明】-m times 指定测试模式为固定测试次数,-r 100 指定测试推理 100 次,-e spacemit 使能进迭时空后端加速。更多参数细节,可以参阅 6.1 性能测试 章节内容。

2.7 应用开发

Bianbu AI Support Library 是进迭时空自研的上层应用开发支持库,开箱即用,仅需一两行代码就可以轻松集成图像分类、目标检测等 AI 任务。

  • Demo 编译、运行示例
# 一键交叉编译
$ cd spacemit-ai-sdk.v1.1.0/bianbu-ai-support/demo
$ bash build.sh
...
[INFO] Building demos done.

# 一键运行测试
$ bash build.sh --test
...
[INFO] Prepare ...
[INFO] Smoke test with image classification task ...
[INFO] Run: build/classification_demo data/models/squeezenet1.1-7.onnx data/labels/synset.txt data/imgs/dog.jpg
...
Classify result: n02113023 Pembroke, Pembroke Welsh corgi
...
[INFO] Smoke test with object detection task ...
[INFO] Run: build/detection_demo data/models/nanodet-plus-m_320.onnx data/labels/coco.txt data/imgs/person0.jpg result0.jpg
...
bbox[ 0] x1y1x2y2: (1346, 404,1525, 777), score: 0.727, label_text: person
bbox[ 1] x1y1x2y2: (1476, 412,1598, 766), score: 0.605, label_text: person
bbox[ 2] x1y1x2y2: ( 581, 447, 666, 706), score: 0.602, label_text: person
bbox[ 3] x1y1x2y2: (1840, 430,1919, 654), score: 0.470, label_text: person
bbox[ 4] x1y1x2y2: ( 459, 447, 551, 707), score: 0.462, label_text: person
bbox[ 5] x1y1x2y2: ( 689, 468, 745, 601), score: 0.430, label_text: person
bbox[ 6] x1y1x2y2: ( 660, 460, 722, 641), score: 0.401, label_text: person

【提示】您可以参阅 6.2.1.4 Demo 说明 章节内容,以了解更多现成 Demo 信息。您也可以参阅 6.2.2 AI Engine 章节相关介绍,了解进迭时空 AI 推理引擎的具体使用方式。

2.8 常见问题(FAQ)

2.8.1 部署工具有 windows 或 mac 版本吗?

答:暂时没有,未来可能会提供。

3. 模型转换

本章节主要介绍模型转换工具的使用细节。转换期间,工具会完成模型的格式转换、结构优化以及校准量化(如果您还指定了模型量化配置文件)等流程。转换完成后,工具将输出一个可以在进迭时空 芯片端 运行的模型。

【说明】

  1. (当前)进迭时空模型文件后缀名为 .onnx,兼容标准 ONNX 格式模型;
  2. 如果您还指定了模型量化配置文件,那您还将得到一个量化后的模型文件。

3.1 使用说明

$ spine convert -h
usage: spine convert [-h] {onnx,tf1,tf2,paddle,caffe} ...

positional arguments:
  {onnx,tf1,tf2,paddle,caffe}

optional arguments:
  -h, --help            show this help message and exit

转换工具目前预置了 ONNX、TensorFlow、Paddle、Caffe 四种框架的模型格式转换支持。由于进迭时空 AI 推理引擎兼容 ONNX 模型格式(opset >= 7),故对于 Pytorch、MXNet 等其他框架下的模型,您可以通过先将模型转换成 ONNX 格式,再调用转换工具(详情可以参阅 3.1.5 其他模型 章节内容)。

3.1.1 ONNX 模型

除模型量化外,转换工具针对 ONNX 模型还提供了子图提取、shape 修改、模型文件检查等功能。

3.1.1.1 使用说明

$ spine convert onnx -h
usage: spine convert onnx [-h] --input INPUT --output OUTPUT [--checker] [--onnxsim] [--verbose] [--inputs INPUTS] [--outputs OUTPUTS]
                            [--free_dim_param FREE_DIM_PARAM [FREE_DIM_PARAM ...]]
                            [--free_dim_denotation FREE_DIM_DENOTATION [FREE_DIM_DENOTATION ...]] [--config CONFIG]

optional arguments:
  -h, --help            show this help message and exit
  --input INPUT         input onnx model path
  --output OUTPUT       output jdsk model path
  --checker             enable onnx.checker.check_model
  --onnxsim             enable onnxsim(https://github.com/daquexian/onnx-simplifier) to simplify the onnx model
  --verbose, -v         verbose message, option is additive
  --inputs INPUTS       expected input tensor names with shapes(option)
  --outputs OUTPUTS     expected output tensor names with shapes(option)
  --free_dim_param FREE_DIM_PARAM [FREE_DIM_PARAM ...], -f FREE_DIM_PARAM [FREE_DIM_PARAM ...]
                        [dimension_name:override_value] specify a value(must > 0) to override a free dimension by name(dim.dim_param).
  --free_dim_denotation FREE_DIM_DENOTATION [FREE_DIM_DENOTATION ...], -F FREE_DIM_DENOTATION [FREE_DIM_DENOTATION ...]
                        [dimension_denotation:override_value] specify a value(must > 0) to override a free dimension by
                        denotation(dim.denotation).
  --config CONFIG, -c CONFIG
                        config file path for calibration

3.1.1.2 参数说明

参数

必要/可选

默认值

说明

-h, --help

可选

打印使用说明

--input

必要

输入模型路径

--output

必要

输出模型路径

--checker

可选

False

使能模型检查

--onnxsim

可选

False

使能 onnxsim 优化模型

--verbose, -v

可选

0

使能调试信息

--inputs

可选

None

重新指定模型输入节点及 shape(可选),格式示例:input_1[n1,n2],input2[n3,n4],...

--outputs

可选

None

重新指定模型输出节点及 shape(可选),格式示例:input_1[n1,n2],input2[n3,n4],...

-f, --free_dim_param

可选

None

重新指定某些输入数据 shape,格式示例:dimension_name:override_value [...]

-F, --free_dim_denotation

可选

None

重新指定某些输入数据 shape,格式示例:dimension_den0tation:override_value [...]

--config, -c

可选

None

模型校准配置文件路径(详情参阅 4. 模型量化 章节)

3.1.1.3 使用示例

3.1.1.3.1 提取模型 backbone

  • 示例模型:https://github.com/onnx/models/blob/main/validated/vision/object_detection_segmentation/yolov3/model/yolov3-12.onnx
$ spine convert onnx --input yolov3-12.onnx \
                      --output yolov3-12-backbone.onnx \
                      --inputs input_1 \
                      --outputs Transpose__467:0,Transpose__469:0,Transpose__472:0

【提示】您可以通过 Netron 可视化工具,查看需要提取的网络的输入输出名称(及 shape)。

3.1.1.3.2 修改模型输入 shape

spine convert onnx 当前提供了两种方式来修改模型的输入和/或输出 shape 信息:

  • 通过 --inputs 和/或 --outputs(适用于模型输入或输出个数较少场景)
$ spine convert onnx --input yolov3-12.onnx \
                      --output yolov3-12-1x3x416x416.onnx \
                     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值