🌟 Summary (single-line synopsis)
Ultralytics v8.4.4 refines MuSGD training behavior (better scaling for short vs. long runs) and includes several quality-of-life fixes for exports, segmentation outputs, logging, and filesystem side effects 🚀🧠
📊 Key Changes
-
🧠 MuSGD optimizer scaling update (PR #23279 by @Laughing-q)
MuSGD scale factors are now chosen more appropriately based on total training iterations:- > 10,000 iterations:
(muon=0.1, sgd=1.0) - ≤ 10,000 iterations:
(muon=0.5, sgd=0.5)
This is a behavior change inultralytics/engine/trainer.py.
- > 10,000 iterations:
-
📷 Sony IMX500 export compatibility improved (PR #23266 by @Laughing-q)
- IMX exporter now accepts multiple valid layer counts (a set of allowed values) instead of requiring exactly one, reducing false “unsupported model” failures ✅
- IMX500 docs/examples are refreshed to focus on YOLO11 (model names and paths updated).
-
🧩 Segmentation proto/output handling fixed across backends (PR #23241 by @Laughing-q)
- Segmentation post-processing now pulls the proto masks from the correct output index for both PyTorch and exported models.
- TensorFlow segmentation handling in AutoBackend now triggers based on task == "segment" (more reliable than guessing from output shape/length).
-
📁 No more empty run folders when
save=False(PR #23268 by @Y-T-G)
get_save_dir()no longer auto-creates directories while computing a unique run path—reduces unwanted “predict” folders appearing on disk 🧹 -
📈 TensorBoard OBB graph logging made safer (PR #23276 by @Y-T-G)
TensorBoard graph logging now usessmart_inference_mode()to avoid gradient tracking—often less memory/overhead and fewer callback edge cases ⚙️ -
🔗 Docs branding/link refresh (PR #23283 by @glenn-jocher)
Multiple repo/docs links now point to the Ultralytics Platform entry point (and wording updated accordingly) 🧭
🎯 Purpose & Impact
-
🚀 More consistent training dynamics with MuSGD
If you use MuSGD (muon/sgd), you may see improved stability and convergence depending on whether your run is short or long—especially around the 10k-iteration threshold 🧠📉 -
✅ Fewer export surprises (IMX500 + segmentation exports)
IMX500 exports should fail less often due to minor layer-count differences, and segmentation outputs should be more consistent across PyTorch/exported/TF backends 📦🧩 -
🧹 Cleaner local runs and tooling behavior
Computing a save directory no longer creates folders prematurely, which is especially helpful for dry runs, scripts, andsave=Falsepredictions 📁✨ -
⚡ More robust logging during training
TensorBoard graph logging becomes less intrusive and more reliable (particularly for OBB setups) 📊🛡️
What's Changed
- Fix
YOLOv8/YOLO11IMX export by @Laughing-q in #23266 - Disable automatic directory creation with
mkdirby @Y-T-G in #23268 - Use
YOLO26nfor benchmark tests by @Laughing-q in #23241 - Fix TensorBoard error with OBB by @Y-T-G in #23276
- Replace HUB -> Platform links by @glenn-jocher in #23283
ultralytics 8.4.4MuSGD optimizer scale factor update by @Laughing-q in #23279
Full Changelog: v8.4.3...v8.4.4