π Summary
Ultralytics v8.4.31 is a reliability-focused release that mainly fixes INT8 export calibration for non-square image sizes (the headline change), while also improving training stability, export maintainability, and documentation for deployment and dataset workflows π
π Key Changes
-
π₯ Main update (PR #24028 by @Y-T-G): INT8 calibration now works correctly with non-square
imgsz- Fixes export calibration for commands like
imgsz=640,480withint8. - Affects multiple export targets: OpenVINO, TFLite, TensorRT engine, and IMX.
- Calibration now uses the correct effective size and preserves rectangular shape during preprocessing (
LetterBoxbehavior fixed).
- Fixes export calibration for commands like
-
π§© Export system refactor (PR #23914 by @onuralpszr)
- Export logic was split from one large file into per-format utility modules (
torchscript,openvino,coreml,ncnn,mnn,paddle,rknn,axelera, etc.). - No major user-facing CLI change, but big internal cleanup for maintainability.
- Export logic was split from one large file into per-format utility modules (
-
π Apple Silicon stability improvement (PR #24038 by @Y-T-G)
- More aggressive memory clearing on MPS devices to reduce leak-related OOM issues during train/val.
-
π¦ Better auto-batch with multi-scale (PR #24051 by @glenn-jocher)
- Auto batch-size estimation now accounts for larger effective image sizes when
multi_scaleis enabled.
- Auto batch-size estimation now accounts for larger effective image sizes when
-
π Docs and usability upgrades
- New COCO-to-YOLO conversion guide (PR #23930 by @raimbekovm).
- New YOLO26 training recipe guide (PR #23949 by @raimbekovm).
- Platform docs now clearly explain video inference support on dedicated endpoints (PR #24029 by @t-hakobyan). π₯
-
π οΈ CI and environment robustness
- CI runner migration to
ubuntu-latestand Codecov v6 updates. - Added PyTorch 2.11.0 + Torchvision 0.26.0 slow-test coverage.
- EdgeTPU install command improved for non-interactive environments (
--no-tty).
- CI runner migration to
-
β Dataset conversion validation tightening (PR #24031 by @glenn-jocher)
- Non-classification NDJSONβYOLO conversion now expects a
valsplit (instead of allowingtestas substitute).
- Non-classification NDJSONβYOLO conversion now expects a
π― Purpose & Impact
- Most important impact: users exporting INT8 models with rectangular inputs should see far fewer calibration mismatches and export failures β
- Deployment confidence improves across common edge/runtime formats (OpenVINO, TFLite, TensorRT, IMX) with non-square pipelines π
- Training becomes more reliable on Apple Silicon and with multi-scale auto-batch settings πͺ
- Developer velocity increases thanks to cleaner export architecture, which should make future exporter fixes/features faster and safer π§
- Onboarding gets easier through clearer guides (especially COCO conversion and YOLO26 training best practices), helping both new and advanced users get productive faster πβ¨
What's Changed
- Inference video support documentation by @t-hakobyan in #24029
- Improve val availability in NDJSON to YAML by @glenn-jocher in #24031
- Add COCO to YOLO conversion guide by @raimbekovm in #23930
- Add YOLO26 training recipe guide by @raimbekovm in #23949
- Add
--no-ttyflag foredgetpu_compilerinstallation by @Laughing-q in #24032 - Bump codecov/codecov-action from 5 to 6 in /.github/workflows by @dependabot[bot] in #24034
- Add PyTorch 2.11.0 to Slow Tests CI by @lakshanthad in #24035
- refactor: split
Exporterexport methods into per-format utility modules by @onuralpszr in #23914 - Migrate CI to
ubuntu-latestby @glenn-jocher in #24049 - Sync Platform embed card theme by @Y-T-G in #24048
- Clear MPS memory more aggressively to prevent leak by @Y-T-G in #24038
- Include
multi_scalein auto-batch computation by @glenn-jocher in #24051 ultralytics 8.4.31INT8 calibration with non-squareimgszby @Y-T-G in #24028
Full Changelog: v8.4.30...v8.4.31