7,968
社区成员
发帖
与我相关
我的任务
分享使用 QNN 部署 NMS 类后处理逻辑时,为什么经常出现性能或回退问题?
NMS 及其变体包含条件判断、动态索引、排序、循环和动态形状,这些操作不一定适合直接映射到 HTP 数据流。常见问题包括:算子被拆得很碎、部分节点回退 CPU、中间结果反复拷贝、动态 shape 导致运行时重构。建议处理方式:第一,尽量把 NMS 中纯计算部分留在模型内,复杂控制流放到 CPU 后处理;第二,固定输出候选框数量或使用简化版 NMS;第三,避免在 HTP 上做大量动态索引和排序;第四,用 qnn-model-analyzer 检查哪些节点被 fallback。参考分工:
模型内:特征提取、候选框解码、置信度过滤
CPU后处理:NMS、阈值判断、结果组装
如果业务必须在模型内完成,优先检查 HTP 对 NonMaxSuppression、TopK、Gather 的支持情况。参考文档:高通 QNN 检测模型后处理部署建议。