π Summary (single-line synopsis)
Ultralytics v8.4.8 makes end-to-end (NMS-free) YOLO26/YOLOv10 inference actually honor max_det and agnostic_nms, giving you predictable control over how many detections you get and how classes are handled β
π
π Key Changes
- End2end now supports
max_det+agnostic_nms(PR #23396 by @Y-T-G) ποΈ- Adds a safe
set_head_attr(**kwargs)helper to set head/last-layer attributes likeend2end,max_det,agnostic_nmsπ§© - When
end2end=True,predictandvalnow pushmax_det+agnostic_nmsinto the model head, so these flags actually take effect βοΈ - Adds
agnostic_nmssupport inside theDetecthead (affects top-k selection logic used in end-to-end mode) π― - Export pipeline also carries
agnostic_nmsinto the exported head for better parity between Python and exported models π¦
- Adds a safe
- Clearer
end2endcontrols across CLI/docs π- Adds
end2endto config/defaults and docs for predict/val/export args π§Ύ - Expands tests to run export/predict/val with
end2end=True/Falseβ π§ͺ
- Adds
- Notable additional fixes included in this tag (smaller but impactful) π οΈ
- Export reliability: exporter auto-disables end2end for formats that donβt support required ops (RKNN/NCNN/ExecuTorch/Paddle/IMX) and stores
end2endin metadata π§° - YOLOE/YOLO-World training usability: allows passing a YAML file (or
Path) for multi-source data configs ποΈ - Docs improvements: new Compare section + cleaner navigation; sitemap auto-fills missing pages π§
- Stability fixes: rotated-OBB small-box robustness, DDP unwrap fixes for pose validation, PyTorch 1.9 compatibility adjustment, OpenVINO/ONNX example bugfixes π§
- Export reliability: exporter auto-disables end2end for formats that donβt support required ops (RKNN/NCNN/ExecuTorch/Paddle/IMX) and stores
π― Purpose & Impact
- More predictable end-to-end inference results π§
max_detnow reliably limits outputs in end2end mode (no more βwhy didnβt it cap?β confusion).
- Better class-agnostic behavior when you need it π§Ή
agnostic_nmsbecomes meaningful in end2end workflows, helpful when classes overlap heavily or you want βbest boxes regardless of classβ.
- Closer parity between Python and exported deployments π
- Exported models are less likely to behave differently from local inference due to missing head settings.
- Fewer surprises across formats & environments β
- Safer exporting to constrained runtimes, more robust training/validation in edge cases, and improved docs discoverability for new users.
If youβre using YOLO26 (the recommended model family) in end-to-end mode, this release is a practical quality-of-life upgrade. ππ
What's Changed
- Update optimizer selection strategy by @Laughing-q in #23350
- Fix broken links in NVIDIA Jetson documentation by @lakshanthad in #23362
- Add ability to override
end2endmode by @Y-T-G in #23333 - Update small obb candidates selection by @lmycross in #23378
- Update
coco12-formatspredict tests by @Laughing-q in #23374 - fix openvino sample for coordinates by @jules-ai in #23366
- Fix index issue of strides in
select_candidates_in_gtsby @PT0X0E in #23369 - Add note about SAM3 tokenizer error due to incorrect
clippackage by @Y-T-G in #23368 - Fix
stride_valtype issue in STAL by @Laughing-q in #23390 - Export non-e2e version by default for
rknn/executorch/paddle/imxformats by @Laughing-q in #23312 - fix: add unwrap_model to fix DDP AttributeError by @lmycross in #23392
- Fix: use
torch.no_gradfortorch==1.9.0to resolve training issue by @Laughing-q in #23395 - Simplify Docs nav by @glenn-jocher in #23398
- Fix swapped input_height and input_width in ONNX example - Fixes #23126 by @ahmet-f-gumustas in #23402
- Add models compare pages to Docs by @glenn-jocher in #23406
- Fix visual prompt training for YOLOE26 by @ShuaiLYU in #23401
- Add https://youtu.be/7lZa3Yi2kbo to docs by @RizwanMunawar in #23388
- Classify train fixes by @glenn-jocher in #23420
- Fix/yoloe text model attribute in yoloe trainer from scratch by @ShuaiLYU in #23428
- Fix names generation in SAM3VideoSemanticPredictor by @Y-T-G in #23434
- Update NVIDIA Jetson Thor benchmarks with YOLO26 by @lakshanthad in #23443
- Save
close_mosaicas integer inbest_hyperparameters.yamlby @Y-T-G in #23435 - Feat: support multiple data config via yaml for YOLOE training by @ShuaiLYU in #23427
- Fix YOLOE training test by @Laughing-q in #23448
- Fix SMTP port parameter syntax in SecurityAlarm by @ahmet-f-gumustas in #23453
- Disable shuffle only if batch shapes mismatch with
rect=Trueby @Y-T-G in #23419 ultralytics 8.4.8Supportmax_detandagnostic_nmsfor end2end by @Y-T-G in #23396
New Contributors
Full Changelog: v8.4.7...v8.4.8