🌟 Summary (single-line synopsis)
Ultralytics 8.4.10 improves YOLOE-26 out-of-the-box predictions by defaulting to class-agnostic NMS, plus several export, OpenVINO, HUB, SAM, and docs reliability upgrades 🚀🧠
📊 Key Changes
- 🧠 YOLOE-26 inference default change (most important): YOLOE predictions now default to
agnostic_nms=True, reducing overlapping duplicate boxes across different classes (set inultralytics/models/yolo/model.py). - 📦 Version bump:
8.4.9→8.4.10. - 🍏 CoreML export feature: CoreML export now correctly honors
agnostic_nms(previously the argument existed but wasn’t applied in the CoreML NMS pipeline). - ⚙️ TensorRT setup reliability: added
check_tensorrt()helper and used it in export + tests to reduce missing-dependency failures; also adds special handling to pin compatible TensorRT on Jetson JetPack 7 / CUDA 13 ARM for RT-DETR exports. - 🏎️ OpenVINO bugfix: fixes an
UnboundLocalErrorrisk by making the inference-mode check safe whendynamicis false. - ☁️ Ultralytics HUB robustness: HUB session now raises clearer
HUBModelError(instead of genericValueErroror silently returningNone) when loading/creating HUB models fails. - 🧩 SAM results metadata fix: improves how class
namesare generated (especially for single-object outputs and “visual” naming mode). - 🛡️ Instances safety + debugging: avoids crashes when
segments=Noneduring zero-area filtering, and adds a helpfulInstances.__repr__()for easier debugging. - 📚 Docs improvements: YOLOE examples simplified to
model.set_classes(["person", "bus"])(no manual text embedding handling), ExecuTorch docs updated with YOLO26 benchmarks, and Benchmark docs video link refreshed.
🎯 Purpose & Impact
- 🎯 More consistent YOLOE predictions by default: class-agnostic NMS helps suppress duplicate overlapping detections across classes, improving “it just works” behavior for new users.
- ⚠️ Behavior change to expect: YOLOE outputs may differ vs. 8.4.9 (some boxes previously kept may now be suppressed). If you relied on per-class duplicates, explicitly set
agnostic_nms=False. - 🍏 More predictable exports across formats: CoreML now matches other exporters when
agnostic_nmsis enabled—fewer surprises when deploying to Apple devices. - 🤖 Smoother Jetson/TensorRT experience: fewer export failures and less manual dependency wrangling, especially on newer Jetson stacks (JetPack 7).
- 🧯 Fewer runtime errors: OpenVINO, Instances filtering, HUB model handling, and SAM naming fixes reduce “random crash” scenarios and make failures easier to diagnose.
- 🧼 Cleaner onboarding + examples: YOLOE prompting is easier to copy/paste, and YOLO26 guidance in docs stays aligned with the recommended models.
You can update with: pip install -U ultralytics ⬆️✅
What's Changed
- fix: 🐞 Add requirement check for TensorRT in
test_export_engine_matrixby @onuralpszr in #23496 - Add https://youtu.be/UF7pYdLSMng to docs by @RizwanMunawar in #23497
- Fix
autobackend.pywhen using OpenVINO by @zboszor in #23505 - Force update
tensorrton CUDA 13 ARM to10.15.xto fix a bug with RT-DETR exports by @lakshanthad in #23499 - Update
executorchdoc with YOLO26 benchmarks on Raspberry Pi 5 by @lakshanthad in #23500 - 🐞 fix
remove_zero_area_boxesinstance when segment isNoneby @Bovey0809 in #23495 - Add repr for Instance Class for devlopers who needs better debugging … by @Bovey0809 in #23473
- Update YOLOE docs example by @Laughing-q in #23526
- Remove debug asserts from TVP loss classes by @raimbekovm in #23523
- Improve HUB session error handling with HUBModelError by @ahmet-f-gumustas in #23512
- Fix names generation for single object detection in SAM3SemanticPredictor by @Y-T-G in #23513
- CoreML Export: Add Support for Class-Agnostic NMS by @K-saif in #23493
ultralytics 8.4.10YOLOE-26 defaultagnostic_nms=Trueby @Laughing-q in #23525
New Contributors
Full Changelog: v8.4.9...v8.4.10