π Summary
Ultralytics v8.4.23 is mainly a big under-the-hood inference upgrade π: AutoBackend was fully redesigned into modular backend classes, making multi-format model deployment cleaner, easier to maintain, and more reliable across platforms.
π Key Changes
-
Major architecture refactor (PR #23790 by @Laughing-q) π§©
AutoBackendmoved from one large file to a modular backend system (ultralytics/nn/backends/).- Added dedicated backend classes for many runtimes: PyTorch, TorchScript, ONNX/IMX, OpenVINO, TensorRT, TensorFlow/TFLite, Paddle, NCNN, MNN, RKNN, Triton, ExecuTorch, Axelera, and CoreML.
- Introduced a shared
BaseBackendinterface to standardize model loading, metadata handling, and forward inference behavior. AutoBackendnow uses a singleformatroute + backend map instead of many backend boolean flags.- Inference call sites (predict/validate/solutions) were updated to align with the new format-driven backend behavior (
channels,format, warmup paths, etc.). - Added extensive backend reference docs pages under
docs/en/reference/nn/backends/.
-
Pose dataset conversion improvement (PR #23921 by @glenn-jocher) π€Έ
- NDJSON pose conversion can now infer missing
kpt_shapeautomatically (when possible), instead of failing immediately. - Keeps strict validation for inconsistent or ambiguous keypoint data.
- NDJSON pose conversion can now infer missing
-
Docs correctness and usability fixes π
-
Docs/site maintenance and CI updates π οΈ
π― Purpose & Impact
-
For users deploying models in different formats π
This release should improve consistency and stability of inference behavior across backends, with fewer backend-specific surprises. -
For developers and contributors π©βπ»
The modular backend design is a big win: easier to extend, debug, and maintain than a monolithicAutoBackend. -
For pose dataset workflows π¦
NDJSON conversion is more forgiving and practical, reducing friction when metadata is incomplete. -
For documentation trustworthiness β
Multiple fixes make docs more accurate and navigable, reducing confusion around defaults and TensorRT calibration behavior.
Overall, v8.4.23 is a foundational engineering release: not a flashy model change, but a high-impact internal upgrade that strengthens the reliability of the Ultralytics inference stack over time.
What's Changed
- fix broken anchor links in docs by @raimbekovm in #23868
- Update mkdocs.yml chat.js @v0.2.5 by @glenn-jocher in #23908
- replace print() with LOGGER in build_reference.py by @raimbekovm in #23895
- Bump slackapi/slack-github-action from 2.1.1 to 3.0.1 in /.github/workflows by @dependabot[bot] in #23910
- fix incorrect plots and save defaults in cfg.md by @raimbekovm in #23917
- fix outdated INT8 batch doubling references in TensorRT docs by @raimbekovm in #23911
- Infer NDJSON Pose keypoint length by @glenn-jocher in #23921
- Fix shape and type comment bugs in Autobackend and Tuner by @raimbekovm in #23918
- added google tag manager to main.html by @matt-ultralytics in #23776
ultralytics 8.4.23RefactorAutoBackendinto modular per-backend classes by @Laughing-q in #23790
New Contributors
- @matt-ultralytics made their first contribution in #23776
Full Changelog: v8.4.22...v8.4.23