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

本页目录

  • 概述
  • 安装
  • 用法
  • 基本示例
  • 支持的目标
  • 模型来源
  • 输出结果
  • CLI 选项
  • 控制基准测试持续时间
  • RVC4 相关选项
  • 手动 SNPE 基准测试
  • 工作流
  • 高级示例
  • 具有自定义时长的 NN Archive
  • 具有电源监控的 HubAI 模型
  • 通过 SNPE 进行本地 DLC

基准测试

概述

ModelConverter 基准测试工具 提供了一种在支持的目标(RVC2RVC4)上测量转换后模型设备性能的方法。它旨在产生与 HubAI 模型库 模型卡中通常显示的性能结果相同的类型。

安装

要使用基准测试工具,请安装 ModelConverter 并确保包含其基准测试依赖项。您可以按照 ModelConverter 仓库 中的安装步骤或相应的 ModelConverter 文档部分 进行操作。要从 PyPI 安装 支持基准测试的 ModelConverter,请使用:
Command Line
1pip install modelconv[bench]

用法

您可以按如下方式对模型进行基准测试:
Command Line
1modelconverter benchmark <target> --model-path <path_or_slug>
该命令将结果表打印到控制台。如果传递 --save,它还会将结果写入当前工作目录中的 CSV 文件。

基本示例

要在 RVC4 上对 YOLOv6 Nano 模型进行基准测试,请运行:
Command Line
1modelconverter benchmark rvc4 --model-path yolov6-nano:r2-coco-512x288 --save
这将对模型进行基准测试,将结果打印到控制台,并将它们保存为 yolov6-nano_benchmark_results.csv有关更高级的示例和选项,请参阅 高级示例 部分。

支持的目标

基准测试命令通过位置参数 <target> 支持多个目标:
  • RVC2:DepthAI (DAI) 管道基准测试。
  • RVC4:DepthAI (DAI) 管道基准测试(默认)或通过 ADB 连接到 RVC4 设备进行基于 SNPE 的基准测试。

模型来源

--model-path 参数是必需的,并接受以下模型来源:
  • 本地模型构件.blob 文件(适用于 RVC2)或 .dlc 文件(适用于 RVC4)
  • 本地 NN 存档Luxonis NN 存档(包含模型可执行文件和配置的 .tar.xz 文件)
  • HubAI 模型标识符:来自 HubAI 模型库 的模型标识符,例如 yolov6-nano:r2-coco-512x288
注意:使用 HubAI 标识符时,请确保您的 HUBAI_API_KEY 环境变量已配置为有效的凭据。

输出结果

默认情况下,结果将作为表格打印到控制台。如果提供了 --save,结果将写入 CSV 文件。文件名根据模型名称生成,并遵循以下模式:<model_name>_benchmark_results.csv

CLI 选项

您可以使用其他命令行选项来自定义基准测试过程:
参数描述默认值平台
full运行所有配置的完整基准测试。FalseRVC2, RVC4
save将基准测试结果保存到 CSV 文件。FalseRVC2, RVC4
repetitionsDAI 基准测试的重复次数。10RVC2, RVC4
benchmark-time基准测试持续时间(秒)。20RVC2, RVC4
num-threads推理线程数(仅限 DAI)。2RVC2, RVC4
num-messages每个推理运行的消息数(仅限 DAI)。50RVC2, RVC4
profile要使用的 SNPE 性能配置文件。balancedRVC4
runtime用于推理的 SNPE 运行时。dspRVC4
num-imagesSNPE 推理的图像数量。1000RVC4
device-ip目标设备的 IP 地址。NoneRVC4
device-id目标设备的唯一 ID。NoneRVC4
dai-benchmark使用 DAI 基准测试而不是 SNPE 工具。TrueRVC4
power-benchmark测量功耗(需要 ADB)。FalseRVC4
dsp-benchmark测量 DSP 利用率(需要 ADB)。FalseRVC4

控制基准测试持续时间

您可以通过两种方式控制基准测试的运行时间:
  • 基于时间(推荐用于稳定的平均值):--benchmark-time <seconds>
  • 固定重复次数:--repetitions <N>
默认情况下,启用基于时间的基准测试(--benchmark-time 20),并且它优先于 RVC2 和 RVC4 目标的所有 --repetitions要运行固定次数的重复而不是基于时间,请禁用基于时间的基准测试:
Command Line
1modelconverter benchmark rvc4 \
2  --model-path <path_or_slug> \
3  --benchmark-time -1 \
4  --repetitions 50

RVC4 相关选项

选择设备

在 RVC4 上,您可以通过以下任一方式定位特定设备:
  • --device-ip <ip>。指定目标 RVC4 设备的 IP 地址。
  • --device-id <id>。指定目标 RVC4 设备的唯一 ID。
如果未提供,则从可用设备中自动选择设备。如果同时提供了两者,则 device-id 具有优先权。

电源和 DSP 监控

在 RVC4 上,该工具可以选择性地在基准测试运行期间记录其他指标:
  • --power-benchmark:启用后,基准测试将从设备 hwmon 节点(如果可用)收集电源读数,并报告系统和处理器在基准测试运行期间的平均功耗统计信息。
  • --dsp-benchmark:启用后,基准测试将收集设备的 DSP 利用率数据,并报告基准测试运行期间的平均 DSP 利用率。
这些选项需要设备的 (root) ADB 访问权限。

DAI 与 SNPE 基准测试

RVC4 支持两种基准测试方法:
  • DAI 基准测试(默认):通过 --dai-benchmark 启用。
  • 通过 ADB 的 SNPE 工具:通过 --no-dai-benchmark 启用。
何时使用每种方法:
  • 大多数用例使用默认的 DAI 基准测试。
  • 当您需要手动进行 SNPE 风格的基准测试或直接基准测试 .dlc 文件时,请使用 SNPE 路径。
SNPE 基准测试要求:SNPE 路径需要设备的 ADB 访问权限。该工具内部使用 snpe-parallel-run,行为如下:
  • 准备一组图像并将其发送到设备进行推理(通过 --num-images 配置)。
  • 支持通过 --runtime--profile 选项进行运行时和性能定制。
  • 默认在两个线程上运行(以匹配 DAI 默认值)。

手动 SNPE 基准测试

对于高级用例或自定义工作流,您可以使用 SNPE 工具直接基准测试模型,无需 modelconverter benchmark。当以下情况时,此方法很有用:
  • 构建自定义基准测试脚本或自动化
  • 与现有 SNPE 流水线集成
  • 需要对基准测试参数进行细粒度控制

工作流

  1. 检查 DLC 模型 提取输入张量元数据,包括张量名称、形状和数据类型。使用 snpe-dlc-info 获取此信息。
  2. 准备输入数据
    • 创建与预期张量形状和类型匹配的输入 .raw 文件。
    • 生成一个 input_list.txt 文件,其中列出了要处理的所有输入文件。
  3. 运行 SNPE 基准测试工具 根据您的基准测试目标选择合适的工具:
有关这些工具的详细用法和选项,请参阅 SNPE General Tools 文档

高级示例

具有自定义时长的 NN Archive

在 RVC2 上基准测试导出的 NN Archive,具有更长的测试时长,并保存结果以供将来比较。
Command Line
1modelconverter benchmark rvc2 \
2  --model-path path/to/model_archive.tar.xz \
3  --benchmark-time 60 \
4  --save
要点:
  • 运行 60 秒基于时间的基准测试以获得更稳定的结果
  • 将结果打印到控制台并保存到 CSV 以进行比较

具有电源监控的 HubAI 模型

在 RVC4 上使用其 HubAI 模型 Slug 基准测试 Model Zoo 模型,并包含功耗和 DSP 利用率指标。
Command Line
1modelconverter benchmark rvc4 \
2  --model-path yolov6-nano:r2-coco-512x288 \
3  --device-ip 192.168.1.50 \
4  --power-benchmark \
5  --dsp-benchmark
要点:
  • 使用 --device-id <id> 作为 --device-ip <ip> 的替代方法
  • 电源和 DSP 监控需要 ADB 访问和设备支持

通过 SNPE 进行本地 DLC

使用 SNPE 工具和受控工作负载大小来基准测试本地 .dlc 文件。
Command Line
1modelconverter benchmark rvc4 \
2  --model-path path/to/model.dlc \
3  --no-dai-benchmark \
4  --device-ip 192.168.1.50 \
5  --num-images 500
要点:
  • 使用 SNPE 基准测试路径而不是 DAI(通过 --no-dai-benchmark
  • 处理 500 个生成的输入图像
  • 以 IP 地址为目标设备