🌟 Summary
Ultralytics v8.4.42 focuses on more reliable training under GPU memory pressure 🧠💪, plus several stability, security, export, and documentation improvements that make YOLO workflows smoother for both developers and end users.
📊 Key Changes
-
Top priority (current PR #24360 by @glenn-jocher): Better OOM recovery during training 🚀
- When CUDA runs out of memory in early training, temporary tensors (
batch,loss,preds) and trainer loss state are now explicitly cleared before retry. - Existing auto-batch retry behavior is preserved (no workflow changes for users).
- When CUDA runs out of memory in early training, temporary tensors (
-
Security hardening in downloads and path handling 🔐
- Safer archive extraction now blocks unsafe zip/tar paths and risky members.
- Safer URL/URI-derived file handling to prevent unsafe path traversal patterns.
- Replaced unsafe parsing behavior in CUDA test logic and improved related safeguards.
-
Export pipeline refactor + reliability fixes 📦
- Export dependency setup moved from central exporter into per-format modules (cleaner architecture, easier maintenance).
- CoreML export now skips unnecessary proxy model loading to avoid export crashes on some Apple Silicon setups.
- Added a new guide for exporting non-YOLO PyTorch models (timm/torchvision/custom) to multiple targets.
-
Backend usability improvement ✨
- Backends can now be called directly like
model(x)instead of onlymodel.forward(x).
- Backends can now be called directly like
-
Bug fixes affecting real workflows 🛠️
- Fixed dataset/image loading when folder names contain square brackets (e.g.
./[data]/). - Fixed hyperparameter tuning checkpoint copying for multi-dataset runs.
- Fixed
plot_results()crash path when CSV plotting fails. - Added safety check for YOLOE head fusion when
one2manybranches are absent.
- Fixed dataset/image loading when folder names contain square brackets (e.g.
-
Platform and docs improvements 📚
- Platform API docs now clearly document segmentation label payloads using
segments(notpolygon). - Jetson guide adds practical memory optimization tips (headless mode, service trimming,
show=False, profiling). - Updated Axelera integration to stable SDK
1.6.0. - Broader docs cleanup: onboarding/order fixes, activity feed path fixes, updated tutorial videos, annotation links, and removed outdated API endpoints.
- Platform API docs now clearly document segmentation label payloads using
🎯 Purpose & Impact
-
Fewer failed training runs on limited VRAM 🎯
The mainv8.4.42change helps training recover more reliably from first-epoch OOM events, reducing frustrating restarts. -
Safer defaults for file and dataset handling 🛡️
Security-focused path and extraction checks reduce risk when working with external files and archives. -
More dependable exports across formats 🌍
Export refactors and CoreML fixes improve cross-platform conversion stability, especially for deployment-heavy teams. -
Better developer ergonomics 👩💻
Callable backends, cleaner export internals, and bug fixes in tuning/plotting/path-loading improve everyday productivity. -
Clearer onboarding and learning resources for all users 🙌
Improved docs (including Ultralytics Platform guidance and Jetson memory tips) make setup and adoption easier for newcomers while still useful for advanced users.
What's Changed
- Add https://youtu.be/m-Lc5MXbydg to docs by @RizwanMunawar in #24294
- Document Platform segment label payloads by @glenn-jocher in #24296
- Update Axelera SDK to 1.6.0 with YOLO classifier fix by @tamrobb in #24278
- docs: 📝 Add memory optimization tips for NVIDIA Jetson devices by @onuralpszr in #24299
- Bump slackapi/slack-github-action from v3.0.1 to v3.0.2 in /.github/workflows by @UltralyticsAssistant in #24309
- Add guide for exporting non-YOLO PyTorch models by @raimbekovm in #24277
- Add https://youtu.be/hsimB10D6Y0 & https://youtu.be/BpSuXSUzEYY to docs by @RizwanMunawar in #24308
- fix(coreml): skip proxy load during export by @amanharshx in #24312
- Remove drifting GPU heuristic table from platform quickstart by @raimbekovm in #24303
- Added banner to licensing section by @matt-ultralytics in #24295
- Correct activity feed access paths on platform by @raimbekovm in #24288
- Correct platform onboarding step order and final step by @raimbekovm in #24289
- Remove ghost API endpoints from platform docs by @mykolaxboiko in #24111
- Fix missing weights copy in hyperparameter tuning iterations by @Laughing-q in #24196
- Bump conda-incubator/setup-miniconda from 3 to 4 in /.github/workflows by @dependabot[bot] in #24319
- Add
__call__wrapper forBaseBackend.forwardmethod by @Laughing-q in #24311 - Set conda workflow permissions by @glenn-jocher in #24317
- add ultralytics.com/annotate link to docs pages by @raimbekovm in #24340
- Remove redundant .keys() call in dict membership test by @tempoo04 in #24339
- Fix Snyk code security findings by @glenn-jocher in #24342
- Fix undefined
axvariable inplot_resultsby @Y-T-G in #24345 - Fix lychee install workflow by @glenn-jocher in #24347
- Fix:
FileNotFoundErrorwhen loading datasets from paths containing square brackets by @prashansapkota in #24353 - YOLOE: check
one2manyhead exists while fusing prompt embeddings by @Y-T-G in #24359 - Refactor: move export package requirements from
exporter.pyinto per-format utility modules by @lakshanthad in #24245 ultralytics 8.4.42Free tensors before OOM batch retry by @glenn-jocher in #24360
New Contributors
- @prashansapkota made their first contribution in #24353
- @tempoo04 made their first contribution in #24339
- @tamrobb made their first contribution in #24278
Full Changelog: v8.4.41...v8.4.42