-
如何使用调试日志调试示例应用?
要在运行 AI 示例应用或 gst-launch-1.0 时排查执行失败,请启用调试日志。
要在 GStreamer 示例应用中启用调试日志,请使用
GST_DEBUG环境变量设置调试级别。GST_DEBUG环境变量控制调试输出的详细程度。您可以将其设置为不同的级别,例如:- 0:None(无调试信息)
- 1:ERROR(记录所有致命错误)
- 2:WARNING(记录所有警告)
- 3:FIXME(记录未完成的代码路径)
- 4:INFO(记录信息性消息)
- 5:DEBUG(记录一般调试消息)
- 6:LOG(记录所有日志消息)
- 7:TRACE(记录跟踪消息)
- 9:MEMDUMP(记录内存转储)
如果要按特定类别筛选调试日志,可以在GST_DEBUG变量中指定这些类别。 例如,要为 ML 推理插件和 FPS 启用调试日志,可以使用: -
哪些常见问题会阻碍 AI 示例应用的开箱即用体验?
AI 示例应用的开箱即用体验被设计得非常快速。但是,以下问题是最常见的、可能会阻碍快速开箱即用体验的问题。
-
加载模型文件失败
此问题出现的原因是模型文件丢失或格式不正确。 将模型文件复制到正确的路径,并确保您在模型转换/量化和目标设备上使用相同的 SDK 版本。
-
反序列化标签失败
出现此问题的原因是指定路径下的标签文件不存在。请确保标签文件已复制到设备,且指定路径正确。
-
设置模块选项失败
出现此问题的原因是设置 LiteRT/Qualcomm AI Engine Direct 用例的常量时出错。有关正确读取和设置模型常量的步骤,请参阅 Discover SDKs → IM SDKs。
-
加载模型文件失败
-
如何测量 AI 示例应用的性能分析?
-
预处理时间
在将输入馈送到 AI 推理插件之前,必须对输入进行预处理(包括归一化、重缩放和颜色反转)。
此任务由预处理插件
qtimlvconverter管理。您可以通过执行以下命令来测量预处理时间:预处理时间会显示在日志中。 -
模型推理时间
Qualcomm Intelligent Multimedia SDK 支持四个 AI 推理插件,它们分别使用 Qualcomm Neural Processing SDK、LiteRT、ONNX 和 Qualcomm AI Engine Direct 框架。
- qtimlsnpe
- qtimltflite
- qtimlqnn
- qtimlonnx
-
后处理时间
AI 推理插件的输出由后处理插件处理。
这些插件接收 AI 模型的结果,并生成可叠加在输入流上或用于进一步计算的元素。
例如,分类用例的文本框、分割用例的分割掩码等。
要测量这些插件的处理时间,请使用以下命令。
后处理时间会显示在日志中。以下以
qtimlvclassification插件为例。
-
预处理时间
在将输入馈送到 AI 推理插件之前,必须对输入进行预处理(包括归一化、重缩放和颜色反转)。
此任务由预处理插件
-
如何测量用例的端到端 FPS?
要在 GStreamer 流水线中测量每秒帧数(FPS),请使用
fpsdisplaysink元素。 此元素可以将当前帧率和平均帧率显示为视频的叠加层,也可以将其打印到控制台。 示例应用使用fpsdisplaysink插件直接在 HDMI 显示器上显示流水线的 FPS。 - 在参考应用中用自定义模型替换现有模型最简单的方法是什么? 请确保您为示例应用使用了正确的模型和标签文件。 在相应的示例应用配置文件中提供模型和标签文件路径。 示例应用将从指定位置使用模型和标签文件。 有关更多信息,请参阅 Discover SDKs → IM SDKs。
-
用户在参考应用中替换了另一个受支持的模型(IMSDK 支持)。如何调试性能和精度问题?
要测量模型的性能和精度问题,请使用 AI SDK 工具并遵循以下步骤:
-
性能测量:
使用 SDK 基准测试工具。例如,如果您使用的是 Qualcomm Neural Processing Engine SDK,请使用 snpe-bench-py -
精度调试器:
- AI Hub 模型:
- 确保您使用的是 AI Hub 中的最新模型。
- 正确填充所选模型的常量。有关更多信息,请参阅 Discover SDKs → IM SDKs。
- 有关 AI Hub 模型精度问题的更多支持,请在 Qualcomm AI Hub slack 上报告您的问题。
- 确保您使用的是 AI Hub 中的最新模型。
- 自定义模型
- 模型量化是精度下降的常见原因。请确保您为模型量化使用了正确的数据集。用户应使用一部分数据集,该数据集是实际部署环境的近似,用于训练后量化(PTQ)。为了让 PTQ 获得良好的结果,用户需要提供合适数量的数据来量化模型,例如,大约 25-30 张 RAW 图像。
- 尝试不同的模型精度(例如 W8A16 和 W16A16),看看模型精度是否有所提高。
- 使用 AIMET 进行训练后量化(PTQ)和量化感知训练(QAT)技术,以实现高级量化。有关更多详情,请参阅 AIMET 文档。
- 模型量化是精度下降的常见原因。请确保您为模型量化使用了正确的数据集。用户应使用一部分数据集,该数据集是实际部署环境的近似,用于训练后量化(PTQ)。为了让 PTQ 获得良好的结果,用户需要提供合适数量的数据来量化模型,例如,大约 25-30 张 RAW 图像。
- AI Hub 模型:
-
性能测量:
-
使用 AI SDK 进行模型量化的最佳实践是什么?
- 准备校准数据 使用与模型在生产中将遇到的数据密切匹配的代表性校准数据。 这有助于准确地确定量化的缩放因子和零点
-
选择正确的量化方法
- 训练后量化(PTQ):此方法更简单、更快。适用于可以接受轻微精度损失的模型。它无需重新训练即可将预训练的浮点模型转换为量化模型。
- 量化感知训练(QAT):此方法涉及在训练模型时考虑量化,这有助于保持较高的精度。它更复杂,但对精度至关重要的模型有益。
- AI SDK 提供了将 LiteRT 转换为 DLC 的工具。用户是必须将 LiteRT 模型转换为 DLC,还是可以在 NPU 上直接加速 LiteRT 模型? 您不一定需要将 LiteRT 模型转换为 DLC 才能在 NPU 上对其进行加速。 Qualcomm 的 AI SDK 支持使用 LiteRT 委托(delegate)直接在 NPU 上运行 LiteRT 模型。 这意味着您可以无需将 LiteRT 模型转换为 DLC 格式,就能利用 NPU 的能力。
- AI SDK 提供了将 PyTorch、Onnx 和 Tensorflow 模型转换为 DLC 的工具。其中哪种是最快的部署路径? 先将模型转换为 ONNX,再转换为 DLC,通常是最快、最灵活的部署方法。
-
用户如何知道模型是否在 NPU 上运行?
使用以下 Qualcomm 提供的工具:
- Qualcomm profiler
-
Sysmon
如果您有权访问 Hexagon SDK,请参阅位于以下路径的 sysmon 文档:
<Hexagon_sdk_path>/<version>/tools/sysmon_app.html
-
用户如何获得 Snapdragon 平台异构 AI 引擎的优势?用户如何在不同的硬件核心(GPU、NPU 等)上运行不同的 AI 模型?
AI SDK 工具和 API 提供了选择运行时(CPU、GPU 或 DSP)的选项。您可以将适当的运行时作为命令行参数选择,或者使用特定的 C/C++ API。
有关更多详情,请参阅 snpe-net-run。
AI 示例应用默认使用 DSP 运行时。您可以通过示例应用配置来更改运行时。
例如,在
gst-ai-object-detection示例应用中,修改config_detection.json文件中的runtime参数。 运行时:"cpu""gpu""dsp"
- 如果使用 AI SDK 进行模型转换失败,该如何操作? 请联系 Qualcomm 支持论坛 获取支持。
- 自定义浮点模型在 CPU 上精度良好,但量化模型在 CPU 和 NPU 上精度都很差。如何调试? 这可能与模型量化有关,请参阅 用户替换模型 常见问题解答,获取有关模型量化的指导
-
自定义量化模型在 CPU 上按预期运行,但同一模型在 NPU 上运行不准确。如何调试?
qnn-net-run的--debug选项会转储每层的值,以便您可以比较 CPU 和 NPU 推理的差异。 - 运行示例应用时,HDMI 屏幕上没有输出。如何调试? 请按照显示调试的说明,调试 HDMI 显示问题。
- 是否可以使用 HDMI 电视代替 HDMI 显示器来运行示例应用? 在大多数情况下都可以工作。如果不行,请改用 HDMI 显示器。
-
如何检查 AI 示例应用的硬件运行时?
许多 GStreamer 示例应用支持在各种运行时(CPU、GPU 和 DSP)上进行推理。要确定应用将使用哪种运行时进行推理,请观察日志。
- CPU
- GPU
- DSP
- CPU
-
什么是 devtool 完整性检查错误?如何调试?
有时,您可能会看到 devtool 显示完整性检查错误。
请确保您对主机具有 sudo 访问权限。如果错误仍然存在,请执行以下解决方法:
1
更新权限
2在 $ESDK_ROOT/layers/poky/meta/conf/sanity.conf 文件中禁用 BitBake 完整性检查
-
在目标设备上侧载 Qualcomm Neural Processing Engine SDK 的步骤。
有关下载 Qualcomm AI Runtime SDK 的更多信息,请参阅 Qualcomm package manager。1
进入目标设备 shell 并运行以下命令
2在主机上进入 QAIRT SDK 根文件夹并运行以下命令
以下命令适用于 QCS6490。- 对于 QCS8275:将
hexagon-v68替换为hexagon-v75 - 对于 QCS9075:将
hexagon-v68替换为hexagon-v73
3验证新的 SDK 版本
- 对于 QCS8275:将
-
从 QIM SDK 获取预处理张量并使用 SNPE 运行推理的调试步骤。
1
从视频文件生成预处理的 raw 张量
1创建一个文件夹来保存 raw 张量
2运行 GStreamer 流水线,将 raw 张量转储到该文件夹
根据您使用的视频和模型,按需调整 rate(输入视频的 FPS)和 dimensions(模型的输入维度)。2使用 SNPE 或 QNN 运行推理
有关更多详情,请参阅使用 Neural Processing Engine 或 AI Engine Direct 部署模型。1创建一个 input_list.txt 文件,包含指向 raw 文件的绝对路径
推理在input_list.txt文件中列出的每个文件上执行。input_list.txt中的示例内容2在 HTP 后端上运行 SNPE DLC 或 QNN 模型
- SNPE
- QNN
常见问题解答(FAQ)
关于在 Qualcomm Dragonwing IoT 平台上运行 AI 示例应用、调试、性能分析、模型量化和硬件运行时的常见问题解答。
此页面对您有帮助吗?

