本页目录

  • 概述
  • 安装
  • 用法
  • 基本示例
  • 支持的平台
  • 模型来源
  • 输出结果
  • 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 模型 slug:来自 HubAI 模型库 的模型 slug,例如 yolov6-nano:r2-coco-512x288
注意: 使用 HubAI slug 时,请确保您的 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通用工具文档

高级示例

自定义持续时间的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 Model 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地址定位特定设备