Ultralytics v8.4.113: Dragonwing QNN Export, Class Activation Heatmaps, and Stronger Edge Deployment
Ultralytics v8.4.113 expands Qualcomm QNN deployment to Dragonwing IQ-8275 devices, introduces clearer class activation heatmaps, improves RKNN and quantized exports, and delivers broad reliability, performance, and documentation updates.
Explore the complete release on the Ultralytics v8.4.113 release page and read on for the highlights. ![]()
New Features
Qualcomm Dragonwing IQ-8275 QNN export
QNN export now supports iq-8275 and qcs8275 targets using Qualcomm SoC model 82:
model.export(format="qnn", name="iq-8275")
The update centralizes supported QNN target mappings, documents Snapdragon and Dragonwing compatibility, and enables Linux x86-64 export testing with onnxruntime-qnn==2.4.0.
Deployment still requires a compatible Qualcomm or Yocto BSP plus matching target-side QNN, FastRPC, DSP firmware, and driver components.
This work was contributed by @glenn-jocher through PR #25558, simplifying deployment to Dragonwing IQ-8275 hardware.
Class activation heatmaps for prediction 
Prediction visualization now produces a useful LayerCAM-style class activation heatmap instead of multiple raw feature-map files.
The new output:
- Saves one heatmap per input
- Highlights regions influencing predicted class scores
- Respects confidence and class filters
- Supports PyTorch models
- Reduces visualization output clutter
The feature was introduced by @Y-T-G in PR #25548, making visualize=True significantly easier to interpret.
Export and Edge Deployment Improvements
Stronger RKNN and quantized exports
RKNN INT8 export now normalizes detection and pose coordinates to preserve class-score precision, then restores coordinates during inference. Additional compatibility work improves ONNX handling, temporary graph cleanup, and support for current rknn-toolkit2 dependencies.
- @JESUSROYETH fixed all-zero class scores in RKNN INT8 exports through PR #25524, improving quantized inference reliability.
- @lakshanthad pinned compatible RKNN package versions in PR #25529, including the required
setuptools<82constraint. - @zgh2022 fixed prompt-free YOLOE-26 RKNN export crashes in PR #25536, covering detection and segmentation workflows.
- @glenn-jocher addressed Docker CI failures and export warnings in PR #25525, strengthening export validation.
More accurate attention FLOPs reporting 
THOP profiling now counts functional attention matrix multiplications in YOLO12 area-attention blocks. Models using area attention are also measured at the requested image size instead of extrapolating from a small stride-sized input.
@glenn-jocher implemented this correction in PR #25545, producing more representative GFLOPs estimates for attention-heavy models.
Performance and Stability
- @raimbekovm vectorized Deep OC-SORT global motion compensation and removed a redundant mean copy in PR #25534, reducing unnecessary computation.
- @JESUSROYETH corrected ECC global motion compensation warping against the first frame in PR #25555, improving tracking consistency.
- @JESUSROYETH changed segmentation-mask plotting to process row bands in PR #25554, lowering temporary memory use and plotting time.
- @JESUSROYETH preserved accumulated heatmap overlays when frames temporarily contain no tracks in PR #25556, preventing visual resets.
- @raimbekovm kept stream readers alive after grayscale frame-read failures in PR #24709, avoiding reader termination and inference crashes.
- @raimbekovm made mixed-text ordering stable across processes and distributed workers in PR #25540, improving reproducibility.
- @raimbekovm retained profiler samples when runtime variance reaches zero in PR #25513, making profiling more robust.
- @raimbekovm replaced rather than accumulated logging stream handlers in PR #25541, preventing duplicate handlers across repeated calls.
Training and Model Fixes
- @fcakyon fixed MuSGD head grouping for custom backbone and head layouts in PR #25532, improving custom architecture support.
- @songjiahao-wq corrected MuSGD batching for higher-rank parameters in PR #25317, preventing incorrect optimizer handling.
- @Zenka737 fixed pose-loss selection for end-to-end models with non-Pose26 heads in PR #25261, ensuring the appropriate loss is used.
- @rudrakumar07 prevented
C2PSAdivision-by-zero failures when its channel count is below 64 in PR #25517, supporting smaller configurations safely.
Documentation and Consistency
Task and mode ordering is now standardized across code, documentation, compatibility tables, and the Ultralytics Platform. Supported-task tables also report model-family capabilities more accurately.
- @glenn-jocher consolidated export task tables and corrected unverified claims in PR #25523, improving export guidance.
- @glenn-jocher restored the shared supported-tasks macro and removed unused model-name sets in PR #25550, simplifying maintenance.
- @glenn-jocher added model-family-specific supported-task rendering in PR #25551, making compatibility information more precise.
- @glenn-jocher established one canonical task and mode order throughout the project in PR #25552, improving consistency.
- @raimbekovm fixed supported-task table rendering in PR #25544, restoring correct documentation output.
- @raimbekovm corrected declared outputs across fourteen docstring examples in PR #25543, improving doctest accuracy.
- @raimbekovm fixed a dangling
chi2inv95reference in the Kalman gating-distance docstring through PR #25516, removing an invalid reference. - @raimbekovm added
imgszto SAMpre_transformexamples in PR #25512, making the examples complete. - @raimbekovm removed unmatchable printed output from Kalman filter examples in PR #25533, improving doctest reliability.
- @raimbekovm clarified emoji-helper behavior in an error-message docstring in PR #25538, improving API documentation.
- @rudrakumar07 corrected missing wording in the
Probsdescription through PR #25522, improving readability. - @gizembm clarified IoA terminology in the Copy-Paste augmentation documentation in PR #25528, making augmentation behavior easier to understand.
YouTube Stream Dependency Evaluation
@ambitious-octopus initially replaced pytube and pafy with yt-dlp in PR #16336. That change was subsequently reverted by @glenn-jocher in PR #25546, so the release retains the previous YouTube stream behavior.
New Contributors
A warm welcome to two first-time contributors:
- @songjiahao-wq made their first contribution with the MuSGD higher-rank parameter fix in PR #25317.
- @zgh2022 made their first contribution with the YOLOE-26 prompt-free RKNN export fix in PR #25536.
Thank you to the entire YOLO community and every contributor who helped make this release possible! ![]()
Try v8.4.113
Upgrade to the latest release:
pip install -U ultralytics
Please try the new QNN target, class activation heatmaps, export improvements, and runtime fixes in your workflows. Share your results and feedback with the community, especially for Qualcomm Dragonwing and RKNN deployments.
For every commit included since the previous version, review the full v8.4.112 to v8.4.113 changelog on GitHub.