๐ Summary
v8.4.175 focuses on making training, validation, inference, and deployment more reliable across existing Ultralytics modelsโwithout introducing a new model architecture. The headline fix prevents classification images from appearing in both training and validation splits after a split ratio changes.
๐ Key Changes
- ๐๏ธ Safer classification splits (current PR): When an image is reassigned after changing the train/validation ratio, its old split copy is removed. Nested class folders retain their paths, and cached data and split directories are preserved.
- ๐ง More dependable model loading: Pretrained class names are transferred when appropriate, grayscale models make better use of RGB weights, and fine-tuning for fewer classes can retain more learned features. YAML-built pose models also receive the keypoint metadata they need for prediction.
- ๐ More complete and accurate validation: Compiled validation no longer skips the final partial batch. The release also fixes large semantic-segmentation pixel counts and makes pose evaluation ignore unlabeled COCO keypoints as expected.
- ๐ผ๏ธ More robust image and stream handling: Fixes cover 16-bit image inputs, stale image caches, multi-page TIFFs, extensionless image URLs, and RTSP/RTMP/TCP sources that include video-like suffixes.
- ๐ฆ Better export and runtime compatibility: Fixes address larger inference batches for exports with embedded NMS, empty-frame CoreML handling, dynamic YOLOE CoreML exports, and defaults for exported modelsโ input sizes.
- ๐ฅ Tracking and depth improvements: Tracker IDs are now isolated per tracker, and depth prediction uses the same image stretching approach as validation and calibration.
- ๐ Documentation and tooling updates: Documentation clarifies Platform workflows, security and compliance, agent skills, depth calibration, and Hailo benchmarks. CI workflows also adopt shared
uvsetup and failure alerts, and the CUDA Docker image updates to PyTorch 2.14.1.
๐ฏ Purpose & Impact
- Avoid split leakage: Classification images should no longer be evaluated on images that also appear in training after a ratio change, making validation results more trustworthy.
- Reduce unexpected failures: Model loading, image inputs, exported-model inference, and multi-stream tracking should behave more consistently across common configurations.
- Improve evaluation reliability: Keeping partial validation batches and handling edge cases correctly can prevent missing samples or misleading metrics.
- Make workflows easier to follow: Expanded Platform and integration guidance helps users understand dataset management, calibration, security, and deployment options.
What's Changed
- Add compliance and certifications to the security help page by @glenn-jocher in #26552
- Use setup-uv defaults for Python and the venv by @glenn-jocher in #26557
- Expand the Agent Skills docs page by @glenn-jocher in #26558
- Migrate docs Mermaid diagrams to the unified design system by @glenn-jocher in #26573
- Set kpt_shape on PoseModel built from a YAML by @zkoymen in #26574
- Add AI failure analysis to CI Slack alert by @Y-T-G in #26553
- Align docs diagrams with current Platform behavior and fix Axelera diagram labels by @raimbekovm in #26562
- Fix semantic mask reading, class count cache and box labels by @raimbekovm in #26566
- Transfer class names and grayscale first-conv weights when loading pretrained weights by @raimbekovm in #26570
- Convert 16-bit TIFF and PIL images to 8-bit before inference by @raimbekovm in #26577
- Fix drop_last for compiled validation and distributed training shards by @raimbekovm in #26565
- Enforce version specifiers for extras and ~= requirements by @shoutoutuoadi325 in #26575
- Use int64 pixel counts in semantic validation by @aswanth-07 in #26561
- Skip COCO annotations without labeled keypoints in convert_coco by @8rulerstar in #26564
- Route extensionless image URLs and suffixed RTSP/RTMP/TCP streams correctly in predict by @raimbekovm in #26568
- Fix YOLOE CoreML export with
dynamic=Trueby @Y-T-G in #26567 - Document Explore license filters, the default dataset license and metadata in version comparison by @raimbekovm in #26588
- Stretch depth predict input to match validation and add a calibration guide without a depth camera by @Y-T-G in #26556
- Fix embedded-NMS exports for larger batches and CoreML empty frames by @raimbekovm in #26585
- Validate static TorchScript exports at their export imgsz by @amanharshx in #26554
- Fix stale npy reads, multi-stream tracking, custom predictors, CLI brackets and CPU FP16 by @cainiao33 in #26579
- Use the shared failure-alert action for CI and Docker Slack alerts by @glenn-jocher in #26592
- Give each tracker its own track ID counter by @raimbekovm in #26591
- Refresh Platform FAQs by @miles-deans-ultralytics in #26586
- Document the half-stride border of rect validation by @maisternia in #26594
- Transfer the class branch when finetuning to fewer classes by @fcakyon in #26589
- Suppress Slack notifications on workflow reruns by @glenn-jocher in #26613
- Update PyTorch to 2.14.1 and GitHub runners to 2.338.0 by @glenn-jocher in #26612
- Return every output from the OpenCV DNN ONNX backend by @raimbekovm in #26606
- Clone each fixed-batch ReID chunk output before the next call by @raimbekovm in #26610
- Crop letterbox padding on whole pixels for retina and SAM masks by @raimbekovm in #26607
- Skip cls_pw in text-prompt World and YOLOE trainers by @raimbekovm in #26600
- Keep classes without train labels neutral in cls_pw weights by @raimbekovm in #26599
- Read RGBA TIFFs as 3 channels for 3-channel models by @raimbekovm in #26611
- Fix rectangular ONNX inputs in tracker ReID preprocessing by @aswanth-07 in #26596
- Preserve nested images in classification auto-split by @Nikhi00718 in #26598
- Fix image caching, export batching, DOTA merging, and segmentation heads by @cainiao33 in #26604
- Add Raspberry Pi 5 + AI HAT+ (Hailo-8) benchmarks to doc by @lakshanthad in #26614
- More reliable classification training and validation by @Vaishnavi220506 in #26597
New Contributors
- @8rulerstar made their first contribution in #26564
- @maisternia made their first contribution in #26594
- @shoutoutuoadi325 made their first contribution in #26575
Full Changelog: v8.4.174...v8.4.175