如何使用调试日志来调试示例应用?
GST_DEBUG 环境变量设置调试级别。GST_DEBUG 环境变量控制调试输出的详细程度。您可以将其设置为不同的级别,例如:- 0:无(不输出调试信息)
- 1:ERROR(记录所有致命错误)
- 2:WARNING(记录所有警告)
- 3:FIXME(记录未完成的代码路径)
- 4:INFO(记录信息性消息)
- 5:DEBUG(记录一般调试消息)
- 6:LOG(记录所有日志消息)
- 7:TRACE(记录跟踪消息)
- 9:MEMDUMP(记录内存转储)
GST_DEBUG 变量中指定它们。
例如,要为 ML 推理插件和 FPS 启用调试日志,可以使用:哪些常见问题会影响 AI 示例应用的快速开箱即用体验?
-
加载模型文件失败
当模型文件缺失或格式不正确时会出现此问题。 将模型文件复制到正确的路径,并确保在模型转换/量化时和目标设备上使用相同的 SDK 版本。
-
反序列化标签失败
当指定路径下的标签文件不存在时会出现此问题。确保标签文件已复制到设备上且指定的路径正确。
-
设置模块选项失败
在为 LiteRT/Qualcomm AI Engine Direct 用例设置常量时会出现此问题。请参阅 Discover SDKs → IM SDKs 了解如何正确读取和设置模型常量。
如何测量 AI 示例应用的性能分析数据?
-
预处理时间
在将输入送入 AI 推理插件之前,必须对输入进行预处理(包括归一化、缩放和颜色反转)。
该任务由预处理插件
qtimlvconverter负责。您可以通过执行以下命令来测量预处理时间:预处理时间会显示在日志中。 -
模型推理时间
Qualcomm Intelligent Multimedia SDK 支持三个 AI 推理插件,分别使用 Qualcomm Neural Processing SDK、LiteRT 和 Qualcomm AI Engine Direct 框架。
- qtimlsnpe
- qtimltflite
- qtimlqnn
-
后处理时间
AI 推理插件的输出由后处理插件处理。
这些插件获取 AI 模型的结果并生成可以叠加在输入流上或用于进一步计算的元素。
例如,分类用例的文本框、分割用例的分割掩码等。
要测量这些插件的处理时间,请使用以下命令。
后处理时间会显示在日志中。以下以
qtimlvclassification插件为例。
如何测量用例的端到端 FPS?
fpsdisplaysink 元素。
该元素可以将当前帧率和平均帧率以叠加形式显示在视频上,或打印到控制台。示例应用使用 fpsdisplaysink 插件将流水线的 FPS 直接显示在 HDMI 显示器上。在参考应用中用自定义模型替换现有模型的最简单方法是什么?
用户在参考应用中替换了另一个受支持的模型
-
性能测量:
使用 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):这种方法在训练模型时就考虑量化,有助于保持更高的精度。它更复杂,但对精度要求较高的模型很有益。
LiteRT 模型是否需要转换为 DLC 才能进行 NPU 加速?
PyTorch、ONNX 和 TensorFlow 模型最快的部署路径是什么?
用户如何知道模型是否正在 NPU 上运行?
- Qualcomm profiler
-
Sysmon
如果您有 Hexagon SDK 的访问权限,请参阅位于
<Hexagon_sdk_path>/<version>/tools/sysmon_app.html的 sysmon 文档
用户如何在不同的硬件核心上运行模型?
gst-ai-object-detection 示例应用中,修改 config_detection.json 文件中的 runtime 参数。运行时:"cpu""gpu""dsp"
如果使用 AI SDK 进行模型转换失败,该如何处理?
如何调试量化模型在 CPU 和 NPU 上精度不佳的问题?
如何调试在 NPU 上精度不准确的量化模型?
qnn-net-run 的 --debug 选项会转储逐层数值,因此您可以比较 CPU 与 NPU 推理的差异。如何调试示例应用没有 HDMI 输出的问题?
是否可以使用 HDMI 电视运行示例应用?
如何检查 AI 示例应用的硬件运行时?
- CPU
- GPU
- DSP
什么是 devtool 完整性检查(sanity check)错误?如何调试?
更新权限
禁用 BitBake 完整性检查
$ESDK_ROOT/layers/poky/meta/conf/sanity.conf 文件中禁用 BitBake 完整性检查。如何在目标设备上旁加载(sideload)Qualcomm Neural Processing Engine SDK
准备目标设备
将 SDK 文件复制到目标设备
- 对于 QCS8275:将
hexagon-v68替换为hexagon-v75 - 对于 QCS9075:将
hexagon-v68替换为hexagon-v73 - 对于 IQ-X5121:将
hexagon-v68替换为hexagon-v73 - 对于 IQ-X7181:将
hexagon-v68替换为hexagon-v73
验证 SDK 版本
如何使用 SNPE 对 QIM SDK 预处理后的张量运行推理
生成预处理的原始张量
创建用于保存原始张量的文件夹
使用 GStreamer 转储原始张量
使用 SNPE 或 QNN 运行推理
创建输入列表
input_list.txt 文件,如下所示。对 input_list.txt 文件中列出的每个文件执行推理。input_list.txt 中的示例内容在 HTP 后端上运行模型
- SNPE
- QNN

