🌟 Summary
v8.4.172 makes oriented-box cropping work as expected and improves reliability across model training, export, dataset handling, and deployment.
📊 Key Changes
- Rotation-aligned OBB crops:
save_crop=TrueandObjectCroppernow save crops upright and aligned to each oriented bounding box. Areas extending beyond the image are filled with black. - Model correctness fixes: AIFI positional embeddings now match non-square feature maps, and RT-DETR computes matching costs in float32 to avoid AMP precision errors affecting training assignments.
- More reliable training and resume: NaN recovery now correctly restarts the recovered epoch, while resumed runs preserve the selected optimizer and early-stopping progress.
- Improved dataset and export handling: Corrupted dataset caches trigger a rescan; classification datasets recognize more supported image formats; and static INT8 exports can calibrate even when the dataset is smaller than the requested batch.
- Broader Python support: Python 3.14 is added to package support and several Docker and export environments. The Python export image remains on Python 3.13 for dependencies that do not yet support 3.14.
- Platform documentation refreshed: Docs now describe current Platform behavior and APIs, including Agents management, dataset version comparisons, and direct LabelMe imports.
🎯 Purpose & Impact
- OBB users can now get useful, tightly aligned crops instead of no crops or axis-aligned approximations.
- Training and validation should be more dependable, particularly when using AMP, recovering from NaNs, or resuming an interrupted run.
- Dataset and export workflows are more resilient to damaged caches, varied image formats, and small calibration datasets.
- Updated Python support and clearer Platform documentation make it easier to choose compatible environments and follow current workflows.
What's Changed
- Fix NaN conv outputs in JetPack5 Docker image from OpenBLAS 0.3.8 by @glenn-jocher in #26473
- Bump Prettier from 3.8.5 to 3.9.9 by @glenn-jocher in #26472
- Remove
cloudpickleandfilelockbase dependencies and disallow new ones by @glenn-jocher in #26471 - Remove redundant Lost-state checks in ByteTrack and FastTracker second association by @glenn-jocher in #26481
- Use pre-cached assets in COCO-eval and CLI solutions tests by @JaviChulvi in #26476
- Align validation, Edge TPU export, and Platform dataset, Agents API, and billing docs with current behavior by @raimbekovm in #26467
- Fix AIFI position embedding for non-square feature maps by @ArgoHA in #26483
- Align Ultralytics Platform docs with current Platform behavior by @pderrenger in #26485
- Move AMD doc to Deployment Integrations by @lakshanthad in #26489
- Name LabelMe and Labelbox in Platform import format lists and correct Label Studio OBB and VOC notes by @raimbekovm in #26488
- Use >= floors in example requirements to stop Dependabot pin bumps by @dependabot[bot] in #26501
- Restore the shared CI asset cache in Docker tests and keep it out of images by @glenn-jocher in #26502
- Fix corrupt dataset caches, NaN recovery, YOLOE predict state and batching, RT-DETR save_txt, and tracker/cfg/solution bugs by @cainiao33 in #26477
- Fix RT-DETR Hungarian matching precision under AMP by @Nikhi00718 in #26475
- Restore the optimizer=auto choice and early stopping state on resume by @raimbekovm in #26487
- Replace outputs from previous predict and val runs and give each video its own output name by @raimbekovm in #26494
- Fix integer crop coordinates and JPEG output collisions by @Vaishnavi220506 in #26474
- Upgrade CPU containers and isolated exports to newer Python versions by @glenn-jocher in #26510
- Load every supported image format in classification datasets and refresh stale disk cache by @raimbekovm in #26497
- Fix OpenVINO INT8 calibration for undersized datasets by @JaviChulvi in #26507
- Fix yolo_bbox2segment background-first detection and rerun duplicates, and accept jpeg and uppercase masks by @wizzseen in #26508
- Add rotation-aligned OBB crops to save_crop by @Nikhi00718 in #26486
New Contributors
Full Changelog: v8.4.171...v8.4.172