๐ Summary
Release v8.4.196 improves ONNX INT8 model accuracy and makes several practical fixes to training, video analytics, exports, and documentation.
๐ Key Changes
- More accurate ONNX INT8 exports: The main update applies per-channel weight quantization for ONNX opset 13 and newer, helping preserve smaller weight values that can be lost with a single scale. Older opsets retain per-tensor quantization. On the reported COCO evaluation, detection mAP rose from 0.3557 to 0.3814, while segmentation box mAP rose from 0.3213 to 0.3595 and mask mAP from 0.2862 to 0.3046. Some classes may still score lower. The change was tested with all 167 existing ONNX tests passing, and 51 INT8 artifacts loading and running on ONNX Runtime 1.20.0. See PR #26978.
- More reliable video solutions: Speed estimation now uses the source videoโs frame rate by default, while an explicitly set FPS still takes precedence. Analytics output also uses the chartโs actual dimensions, avoiding empty output videos in some configurations.
- Safer training and data handling: Resume now selects the checkpoint most recently modified, including on Windows. DOTA readers and annotation visualization now accept UTF-8 BOM label files, and semantic training preserves small positive class-weight totals when normalizing cross-entropy loss.
- Cleaner model exports: Re-exporting to RKNN, Ascend, ExecuTorch, or IMX replaces old files in the output directory, reducing the risk of accidentally loading a stale model.
- Updated guidance: The screen-prediction example now uses streaming, so it can handle a continuous source without collecting results indefinitely. DGX Spark guidance now recommends TensorRT FP16 over INT8 for YOLO26 at batch size 1, based on measurements showing INT8 was slower for smaller models and less accurate across the tested models. Documentation links, wording, and several technical details were also corrected.
๐ฏ Purpose & Impact
- ๐ Better quality from quantized ONNX models: Per-channel scales can reduce accuracy loss in INT8 exports, including the near-constant depth-map issue reported for YOLO26 depth exports.
- โ๏ธ More dependable workflows: Checkpoint selection, DOTA label reading, video analytics, and model re-exports behave more predictably in common edge cases.
- ๐งญ Clearer usage and deployment advice: Updated examples and hardware-specific precision recommendations help users avoid misleading results and choose a suitable export option.
What's Changed
- Polish wording on SAM 3, Solutions, Sony IMX500, Kaggle, IBM watsonx and FastSAM docs by @glenn-jocher in #26980
- Weave reference links into docs prose and correct dataset, model and integration details by @glenn-jocher in #26981
- Select the most recently saved checkpoint when resuming by @Vaishnavi220506 in #26973
- Accept UTF-8 BOM labels in DOTA splitting and annotation visualization by @Sonica-B in #26882
- Use the source video fps for yolo solutions speed and size analytics output to the chart by @raimbekovm in #26966
- Preserve weighted semantic cross-entropy normalization by @aswanth-07 in #26969
- Fix the screen and webcam examples that never return by @Echoslayer in #26979
- Replace the RKNN, Ascend, ExecuTorch and IMX export directories on re-export by @raimbekovm in #26941
- Recommend TensorRT FP16 for YOLO26 on DGX Spark by @atakann in #26968
ultralytics 8.4.196Improve ONNX INT8 accuracy with per-channel weight quantization by @amanharshx in #26978
New Contributors
Full Changelog: v8.4.195...v8.4.196