๐ Summary
๐ก๏ธ Ultralytics v8.4.106 improves reliability by rejecting invalid inputs early, providing clearer model-loading errors, and strengthening automated testing and download recovery.
๐ Key Changes
-
๐ผ๏ธ Clear validation for unreadable image sources (PR #25431, @glenn-jocher)
- Empty image lists, zero-sized images, invalid channel dimensions, and empty tensors are now rejected at the image loader.
- Users receive direct, actionable errors instead of obscure failures such as division-by-zero or array-stacking exceptions.
- Input type checks now use explicit exceptions rather than assertions, so validation remains active when Python runs in optimized mode.
-
โฌ๏ธ More reliable download failure handling (PR #25431)
- Failed downloads are removed instead of being left behind as incomplete files.
- Prevents a partial file from being mistaken for a valid cached download on a later run.
- Retry exhaustion now reports a clear download failure.
- Full-disk detection remains enabled; this release does not address the separate ULTRALYTICS-21BX / 21CW disk-space issues.
-
๐ฆ Cleaner errors for corrupt or unsupported checkpoints (PRs #25428 and #25430)
- Empty, truncated, corrupted, or non-checkpoint files renamed with a
.ptextension now produce a consistent explanation. - Error messages recommend re-downloading, re-exporting, or using an official Ultralytics model such as
yolo26n.pt. - Safe-loading errors for unsupported checkpoint types retain their specialized guidance.
- Empty, truncated, corrupted, or non-checkpoint files renamed with a
-
๐ Improved ONNX error messages (PR #25430)
- Unparseable or corrupted ONNX graphs now raise a helpful error rather than exposing a low-level protobuf exception.
- The message suggests re-exporting with a command such as
yolo export model=yolo26n.pt format=onnx.
-
๐งช Broader and smarter fuzz testing (PR #25424)
- Automated fuzzing now explores malformed CLI arguments, devices, datasets, checkpoints, ONNX files, and image sources.
- A rolling seven-day history reduces repeated tests across workflow runs, allowing more unique command combinations to be tested.
- Synthetic datasets and intentionally damaged model files improve coverage of common user failure scenarios.
-
๐จ Documentation formatting maintenance (PR #25429)
- Documentation was reformatted with Prettier
3.8.5. - No substantive documentation content changed.
- Documentation was reformatted with Prettier
๐ฏ Purpose & Impact
- โ Better user experience: Failures now identify what went wrong and how to fix it.
- ๐ Earlier validation: Invalid image, dataset, checkpoint, and model inputs are stopped before reaching deeper inference code.
- ๐พ Safer caching: Incomplete downloads are less likely to persist and cause repeated failures.
- ๐งฐ Easier troubleshooting: Clear recommendations reduce guesswork when files are corrupted or incompatible.
- ๐ Improved long-term stability: Expanded fuzz testing should uncover more edge cases before users encounter them.
- ๐ No model architecture or training-performance changes: This release focuses primarily on robustness, diagnostics, and developer tooling.
What's Changed
- Raise a clean error for corrupt or truncated checkpoints by @glenn-jocher in #25428
- Expand fuzz exploration: cross-run history, device, malformed CLI, datasets, checkpoints by @glenn-jocher in #25424
- Adopt Prettier 3.8.5 formatting by @glenn-jocher in #25429
- Raise clean errors for unreadable checkpoints and ONNX graphs by @glenn-jocher in #25430
- Reject unreadable image sources, and harden download failure paths by @glenn-jocher in #25431
Full Changelog: v8.4.105...v8.4.106