YOLOv11-N on Qualcomm: a documentation recipe (same model, same chip, 27Γ— apart)

This repository is a documentation recipe: the exact steps, version locks, calibration settings and pitfalls behind our YOLOv11-N measurements on real Qualcomm hardware, so anyone can reproduce them. It deliberately contains no model weights and no code β€” YOLOv11 is Β© Ultralytics under AGPL-3.0; get the model from the official sources linked below. What is ours is the data (measurements.json, also in qcs-bench) and this write-up.

Headline: on the RB3 Gen 2 (QCS6490), the default TFLite path takes 134.7 ms with most layers off the NPU, while the w8a8 precompiled QNN path takes 5.03 ms with all 341 layers on the NPU β€” same model, same chip, 27Γ— apart. The runtime path is the performance.

Measured on real hardware (Qualcomm AI Hub Workbench)

Latency = profile estimate / median. Layer placement from each profile's execution detail. Job IDs are the provenance β€” every number below is a Workbench job you can ask us about.

Device Path Result Layers on NPU Latency (est / median)
RB3 Gen 2 (QCS6490) QNN precompiled, w8a8 QDQ βœ… 341 / 341 5.03 / 6.03 ms (compile jprdr9kkg, profile jgk01dnv5)
RB3 Gen 2 (QCS6490) TFLite, float ⚠️ runs, mostly off-NPU 19 / 343 (GPU 168, CPU 156) 134.7 / 160.3 ms (job jp09wkxnp)
RB3 Gen 2 (QCS6490) QNN DLC, FP32 ❌ composes on host, fails on device β€” compile jp8rn8oqg, profile j56mxv6np: QnnModel_composeGraphsFromDlc: MODEL_GRAPH_ERROR
RB3 Gen 2 (QCS6490) QNN precompiled, w8a16 QDQ ❌ compile fails β€” job jp1193rnp: bare exit code 14, no diagnostics (see pitfall 2)
Galaxy S25 (SM8750) TFLite, float βœ… 343 / 343 2.94 / 2.99 ms (profile j5q1nwjeg)
Galaxy S25 (SM8750) QNN precompiled, FP32 βœ… 341 / 341 2.97 / 3.02 ms (profile jpexq2q8g)

Reproduce it

Version lock (what these numbers were produced with):

  • qai-hub-models 0.66.0; model exported from the official Ultralytics weights to ONNX, opset 13, input 1Γ—3Γ—640Γ—640, output 1Γ—84Γ—8400
  • Devices: Dragonwing RB3 Gen 2 Vision Kit and Samsung Galaxy S25 on AI Hub Workbench (cloud-attached real hardware)

Steps:

pip install qai-hub-models==0.66.0
qai-hub configure --api_token <your-token>

# Qualcomm's official recipe for this model (ours points there on purpose):
qai-hub-models export yolov11_det --device "Dragonwing RB3 Gen 2 Vision Kit"

For the w8a8 path that produced the 5.03 ms cell, the flow is: export ONNX β†’ quantize to w8a8 on AI Hub β†’ compile as precompiled QNN for the RB3 Gen 2 β†’ profile and read the per-layer placement, not just the headline latency.

Calibration honesty note: this early run was quantized with 24 synthetic random samples β€” the latency numbers are representative, detection accuracy was not verified for this cell. (Our later recipes β€” NanoDet, DAMO-YOLO β€” use 23 real COCO val2017 images for calibration; do that in production.) Qualcomm's official catalog lists 4.10 ms for this model on RB3 Gen 2 with real calibration: same magnitude, independent confirmation of the path.

Pitfalls (the part vendor blogs don't write)

  1. The default path lies by omission. TFLite float on QCS6490 "works" β€” at 134.7 ms, with DynamicConv2D and friends fallen back to CPU/GPU (19 of 343 layers on the NPU). If you don't read the per-layer profile, you will ship the slow path and never know.
  2. w8a16 precompile fails with a bare exit code 14 and no actionable diagnostic from Workbench. We filed this with Qualcomm: ai-hub-models#364.
  3. QNN DLC is a trap on this chip: the FP32 DLC compiles fine, then the graph fails to compose on the device (MODEL_GRAPH_ERROR). Compile success β‰  runs.
  4. RB3 precompiled QNN requires quantized I/O β€” the FP32 precompile is rejected outright; quantize first, then compile.
  5. Chip generation flips the story. The identical float graph is all-NPU on the Galaxy S25 (2.94 ms) and mostly CPU on the QCS6490. Never extrapolate edge performance across Snapdragon generations.

License & sources

  • Model: YOLOv11 Β© Ultralytics, AGPL-3.0 β€” weights and code from Ultralytics and Qualcomm's official yolov11_det recipe. COCO mAP 39.5 is Ultralytics' published figure; we did not re-measure it.
  • This documentation and the measurement data are by anguoyang; full bench: qcs-bench.
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Collection including anguoyang/yolo11n