1. 从拿到板子到跑通demo,先看清QCS6490这条路的全貌
做边缘端目标检测的同行应该都有体会:在PC上用x86跑YOLO是一回事,把它弄到一颗ARM架构的SoC上高效跑起来是另一回事。我这次的项目是把YOLOv11的旋转目标检测版(就是yolov11_obb,OBB全称Oriented Bounding Box,旋转框检测,常用来检测航拍图里方向任意的目标,比如船舶、车辆、农田地块这类不能用水平框准确框住的对象)部署到高通跃龙QCS6490这颗芯片上,整个工具链用的是高通官方的QNN SDK。
先交代一下背景,免得后面讲避坑时大家不知道我在说什么场景。QCS6490是高通跃龙(Qualcomm Dragonwing)家族的边缘计算SoC,CPU部分是八个Kryo核心,AI算力主要来自内部的Hexagon DSP NPU模块。这颗芯片在工业手持终端、AI盒子、机器人主控这类产品里很常见,它最吸引人的地方是支持高通自己的QNN(Qualcomm Neural Network)运行时,能把模型推理任务卸载到NPU上执行,功耗和延迟都比纯CPU跑要好很多。
这次任务的目标听起来很简洁:把一个训练好的yolov11_obb PyTorch模型,经过QNN SDK工具链完成格式转换和量化,最终在QCS6490的NPU上跑出推理结果,并且定位出一两个关键坑。但实际上这条路走下来,涉及的环节相当多:环境准备、模型导出、ONNX转换、量化校准、QNN工具链编译、NPU运行时部署、后处理对齐。每一个环节都有各自的坑,环环相扣。
本文不是给QNN SDK写说明书,而是记录我在真实板子上部署yolov11_obb时踩过的坑、比对过的方案、验证过的参数,以及最终沉淀下来的可复用流程。适合以下读者:手里有QCS6490或同系列高通跃龙平台、想把YOLO系列模型部署到NPU上跑的开发者;已经被QNN SDK命令搞晕、想找一条更完整参考路径的同行;以及纯粹对边缘端AI部署流程感兴趣、想了解整套工具链怎么配合的人。
有一点需要提前说明:本文所有步骤都是我在实际部署中验证过的组合,但QNN SDK的版本迭代非常快,不同版本之间命令参数、工具路径可能略有差异。我会在文中标出关键版本信息,方便你对照自己的环境做调整。核心思路和踩坑逻辑是不变的,换了版本也能用得上。