๐ Summary
๐ Ultralytics v8.4.80 is mainly about making model export precision much simpler and more future-ready, with a new unified quantize argument replacing the older half and int8 switchesโplus a few important reliability, validation, and training stability fixes.
๐ Key Changes
-
New unified
quantizeexport argument by @onuralpszr โญ- Replaces the older
half=Trueandint8=Truestyle with one cleaner setting. - Supports simple values like:
quantize=16for FP16quantize=8for INT8quantize=32for FP32
- Also supports more advanced mixed-precision schemes like
quantize="w8a16"where supported. - Older
halfandint8arguments still work for now, so existing scripts should not break immediately. ๐
- Replaces the older
-
Export docs and integrations updated across the board
- Many export examples and docs were refreshed to use
quantizeinstead ofhalf/int8. - This affects formats and platforms such as ONNX, TensorRT, OpenVINO, CoreML, TFLite, TF.js, RKNN, QNN, Axelera, DEEPX, and more. ๐ฆ
- Many export examples and docs were refreshed to use
-
Better support for modern and future quantization workflows
- The new system is designed to scale beyond just โFP16 or INT8โ.
- This is especially useful as more hardware targets adopt mixed precision and platform-specific quantization modes. โ๏ธ
-
Distributed validation now combines confusion matrices across GPUs
- In multi-GPU validation, confusion matrix plots now reflect results from all workers, not just one process. ๐
-
OBB training stability improved
- A fix prevents some very tiny oriented bounding boxes from causing unstable or invalid loss behavior, including NaNs during training. ๐ก๏ธ
-
HUB/network request reliability improved
- Added real request timeouts and retry behavior so stalled network calls are less likely to hang indefinitely. ๐
-
MLflow integration tests restored and modernized
- Improves confidence that MLflow logging behavior continues to work correctly with newer MLflow versions. ๐งช
-
Tracking docs clarified
- Better explanation of when to use
persist=Trueand how to choose tracker backends likebotsort.yamlorbytetrack.yaml. ๐ฏ
- Better explanation of when to use
-
Ultralytics Platform dataset upload docs improved
- Clearer explanation that browser video uploads depend on codec support, not just file extension.
- AVI was removed from supported browser-upload guidance. ๐ฅ
๐ฏ Purpose & Impact
-
Simpler exporting for everyone ๐
- Instead of remembering two separate boolean flags, users now have one clearer precision setting:
quantize. - This makes export commands easier to read, teach, automate, and maintain.
- Instead of remembering two separate boolean flags, users now have one clearer precision setting:
-
More future-proof deployment workflows ๐ฎ
- The old
half/int8flags were too limited for newer precision schemes. - The new design opens the door to richer hardware-specific export options without adding more confusing flags later.
- The old
-
Safer upgrade path โ
- Backward compatibility is preserved, so current projects using
halforint8should keep working while users gradually migrate.
- Backward compatibility is preserved, so current projects using
-
Better results in multi-GPU setups ๐ฅ๏ธ
- Teams validating models across multiple GPUs should now get more accurate confusion matrix visualizations.
-
More stable training for OBB models ๐ฏ
- Users working with oriented bounding boxes, especially small objects, may see fewer training failures and more reliable optimization.
-
Fewer frustrating network hangs โฑ๏ธ
- HUB-related actions and downloads should fail more gracefully instead of getting stuck indefinitely.
-
Improved docs and onboarding ๐
- Several updates make deployment, tracking, segmentation guides, and Platform uploads easier to understand for both new and experienced users.
Overall, v8.4.80 is a quality-of-life and deployment-focused release: not a flashy new model drop, but a meaningful improvement for anyone exporting YOLO models to production ๐
What's Changed
- Clarify tracking persistence and tracker selection by @joeydufourd in #24889
- Restore MLflow integration tests on modern mlflow by @raimbekovm in #24728
- Gather confusion matrix across GPUs in DDP validation by @Y-T-G in #24803
- Forward socket timeout in hub smart_request by @raimbekovm in #24743
- Fix double assignment and destructive pop in isolating segmentation guide by @raimbekovm in #24701
- Document browser video codec support for Platform dataset uploads by @laodouya in #24802
- Add timeout to requests calls in Hub and downloads by @raimbekovm in #24734
- Fix NaN OBB loss due to sub-stride boxes by @Y-T-G in #24933
- Replace
int8andhalfargs with newquantizeby @onuralpszr in #24918
New Contributors
- @joeydufourd made their first contribution in #24889
Full Changelog: v8.4.79...v8.4.80