🌟 Summary
A reliability-focused release with an important TIFF-reading fix, plus improvements to segmentation prompts, model loading, validation, integrations, and Platform workflows—without introducing a new model architecture.
📊 Key Changes
- Multi-page TIFF handling (PR #26842): By default, grayscale TIFF scans now load as their first page instead of incorrectly combining pages into image channels. Only
cv2.IMREAD_UNCHANGEDstacks same-size pages, preserving the option for multispectral workflows. - More reliable YOLOE and YOLO-World loading: Checkpoint type now determines the correct model wrapper, so specialized models continue to work when saved under generic filenames such as
best.pt. Changing class names on a text-fused YOLOE model now raises a clear error instead of silently relabeling predictions or failing later. - More faithful SAM mask refinement: Floating-point prompt masks retain negative and fractional values, avoiding unintended changes to mask-refinement inputs.
- Improved data and metric handling: Fixes cover multipart polygon connections, confusion-matrix matching, classification prediction with rectangular image sizes, and validation on datasets without labels. Dataset downloads also recognize archive URLs with query strings.
- Smoother integrations and runtime behavior: Weights & Biases now supports training inside a user-started run, preserving its settings and leaving it open afterward. Additional fixes improve Platform training resume behavior and OpenVINO/LiteRT device handling.
- Updated CI and documentation: CPU runners gain SSH,
rsync, and libraries needed to import GUI OpenCV. Documentation clarifies Platform dataset workflows and training features, corrects export examples, and refreshes several guides and screenshots.
🎯 Purpose & Impact
- Prevents TIFF-related training failures: Scanned documents are no longer mistaken for multi-channel images or allowed to produce images with excessive channel counts. Users who intentionally need TIFF pages as bands should use
cv2.IMREAD_UNCHANGED. - Makes model and data workflows more predictable: Correct model selection, clearer YOLOE class-change errors, and more accurate mask and polygon handling reduce confusing failures and incorrect results.
- Improves validation and experiment tracking: Label-free validation avoids unnecessary warnings, confusion-matrix matching is more consistent, and existing W&B runs retain their history and remain available for further logging.
- Reduces setup friction: More complete CPU runners and clearer Platform and export documentation make common CI and training tasks easier to run.
What's Changed
- Add rsync to the CPU GitHub runner image by @glenn-jocher in #26796
- Include OpenSSH in the CPU GitHub runner image by @glenn-jocher in #26797
- Use YOLO11n example model name for IMX500 in export table by @Ali-Tharwat in #26803
- Fix Platform resume forking a duplicate model on transient send failure by @cainiao33 in #26790
- Preserve floating-point SAM mask prompt logits by @Nikhi00718 in #26794
- Make the BCHW tensor contiguous before the BGR to RGB flip in predict by @Y-T-G in #26801
- Fix dataset autodownload for archive URLs with query strings by @cainiao33 in #26789
- Fix LoadStreams to raise a clear error for an empty streams manifest by @cainiao33 in #26791
- Keep the polygon semantic background class under classes filtering by @raimbekovm in #26798
- Route YOLOE and YOLO-World checkpoints by loaded model type by @raimbekovm in #26793
- Fix bare 'intel' device string crash in OpenVINO and LiteRT backends by @cainiao33 in #26809
- Fix IMX500 row in docs export table by @glenn-jocher in #26812
- Docs: Platform dataset download steps and Objects365 segmentation weight names by @glenn-jocher in #26813
- Name the IMX500 export model without a template expression by @glenn-jocher in #26814
- Fix documentation dataset and author links by @glenn-jocher in #26820
- Add GUI OpenCV libraries to the CPU runner image by @glenn-jocher in #26829
- Add https://youtu.be/L6Mz0OJQ6SU to docs by @RizwanMunawar in #26816
- Reject class changes on text-fused YOLOE heads in set_classes by @raimbekovm in #26824
- Document detect and OBB training on Platform segment datasets by @JaviChulvi in #26826
- Log W&B training into a user-started run and leave it open by @raimbekovm in #26821
- Add training arguments to the config of a user-started W&B run by @raimbekovm in #26831
- Bridge reversed multi-part segments at their closest points by @mottopanikeiku in #26834
- Docs: show full-frame classification transforms by @Nikhila-Dhevi-R in #26835
- Fix #26827: Match confusion matrix detections in confidence order by @lu123bing in #26828
- Align docs with Axelera nms default and Platform changes, refresh Platform screenshots by @raimbekovm in #26817
- Fix rectangular classification prediction sizes by @aswanth-07 in #26810
- Skip class-averaged PR curves when validating a split without labels by @raimbekovm in #26837
- Hoist constant linspace and trapezoid selection out of compute_ap by @cainiao33 in #26815
- Fix LetterBox crash on 2D inputs that need no resize by @cainiao33 in #26811
- Support case-insensitive model file extensions by @Vaishnavi220506 in #26819
- Validate every settings.update() form and keep the config dir fallback private per user by @raimbekovm in #26792
- Wait out GitLab 429s in the mirror workflow instead of failing repos by @glenn-jocher in #26840
- Read multi-page grayscale TIFFs as their first page unless every band is requested by @glenn-jocher in #26842
New Contributors
- @Ali-Tharwat made their first contribution in #26803
Full Changelog: v8.4.183...v8.4.184