pypi ultralytics 8.4.193
v8.4.193 - `ultralytics 8.4.193` Up to 2x faster CPU ONNX Runtime and OpenVINO prediction (#26942)

4 hours ago

🌟 Summary

Ultralytics 8.4.193 makes CPU inference with ONNX Runtime and OpenVINO substantially faster on some systems, alongside fixes that improve export behavior, data handling, training reliability, and documentation.

πŸ“Š Key Changes

  • πŸš€ Faster CPU inference β€” the main release change: For CPU ONNX Runtime and OpenVINO models, PyTorch now uses at most two threads for preprocessing and postprocessing, reducing competition with the inference runtime. On an 8-vCPU test machine, prediction was 19–54% faster across the tested backends and batch sizes. On 4 vCPUs, results were mostly unchanged, with one ONNX Runtime batch test slightly slower. PyTorch .pt setup is unchanged.
  • πŸ“ Dynamic exports use their intended image size: When a dynamic export is loaded without an explicit imgsz, prediction and validation now default to the size recorded in the export metadata. This avoids silently running models at an unsuitable default resolution; an explicitly provided size still takes precedence.
  • 🧰 More dependable data and visualization workflows: Dataset loading now accepts individual image paths. Related fixes improve annotated-image splitting with relative paths, replace stale auto-annotation labels with empty files when no objects are found, clip DOTA tile labels instead of discarding affected tiles, prevent perspective augmentation from creating huge ghost boxes, and avoid altering shared image batches while plotting.
  • βœ… Improved model and metric correctness: Class names are returned in class-ID order; semantic metrics handle compact uint8 labels correctly; and W&B class curves now skip label-less validation splits and use the right class names. YOLOE now clearly rejects visual prompts on fused models rather than failing later or reporting misleading results.
  • πŸ‹οΈ Training and checkpoint fixes: AutoBatch profiling better reflects the actual training loss for RT-DETR and semantic segmentation. Distillation checkpoints saved mid-run can load their student model, while resumed distillation training retains its wrapper state.
  • πŸ“¦ Smoother exports and installs: Exported model paths and ONNX Runtime variants receive more consistent handling, and automatic dependency installation now prefers uv when availableβ€”including on ARM64. The release also updates CI coverage for newer PyTorch versions on Python 3.14.
  • πŸ“š Documentation and Platform updates: Export guides clarify format behavior and limitations, including the transition from TF.js export to LiteRT. Platform docs also cover eligible Enterprise HIPAA BAAs, early-access annotation, and bulk deletion controls.

🎯 Purpose & Impact

  • ⚑ CPU deployment users may see a major inference speedup, particularly on 8-vCPU systems using ONNX Runtime or OpenVINO. The change is limited to those CPU backends and does not alter .pt setup.
  • 🎯 Exported models are more likely to run at the resolution they were designed for, helping avoid unexpected prediction or validation results when imgsz is omitted.
  • πŸ› οΈ Training and dataset workflows are more robust: fewer silently skipped images or tiles, less stale annotation output, and more trustworthy metrics and plots.
  • πŸ”Ž Results and errors are clearer: class labels stay aligned with class IDs, and unsupported YOLOE visual-prompt workflows now fail with a direct explanation.
  • πŸ“ Documentation better reflects current behavior, helping users choose export settings and understand Platform features.

What's Changed

  • Add HIPAA BAA to Platform plan docs and sticky project controls by @glenn-jocher in #26933
  • Drop detect-only RKNN INT8 rule from Platform export docs by @glenn-jocher in #26945
  • Replace previous auto_annotate labels for images without detections by @raimbekovm in #26947
  • Return class names in id order from check_class_names by @raimbekovm in #26927
  • Skip W&B class curves for label-less val splits and name rows by class index by @raimbekovm in #26922
  • Refuse visual prompts on YOLOE models with fused class embeddings by @raimbekovm in #26920
  • Document the train split argument, Platform early access annotation and bulk trash by @raimbekovm in #26923
  • Fix wrong statements on integration export pages by @raimbekovm in #26944
  • Fix check_suffix for extensionless paths and dotted parent directories by @MohammadHijjawi97 in #26918
  • Fix uint8 label overflow in SemanticMetrics confusion index by @aswanth-07 in #26921
  • Type Results.plot line_width as int to match the cfg and Annotator by @mottopanikeiku in #26924
  • Plot a scaled copy instead of rescaling the shared train/val batch by @Vaishnavi220506 in #26925
  • Fix ONNX Runtime variant reinstalls, VisionEye float points and TrackZone grayscale frames by @cainiao33 in #26932
  • Accept individual image paths in dataset img_path by @Vaishnavi220506 in #26946
  • Fix autosplit annotated_only label lookup for relative image paths by @aswanth-07 in #26948
  • Allow the docs letterbox classify transforms under safe load by @Echoslayer in #26949
  • Clarify weights_dir lookup and download behavior by @Echoslayer in #26935
  • Clip DOTA tile labels to the window instead of dropping the tile by @raimbekovm in #26938
  • Drop RandomPerspective objects that cross the projection plane by @8rulerstar in #26934
  • Default dynamic exports to their export imgsz and start strided video reads at frame 0 by @Nikhi00718 in #26939
  • Prefer uv for requirement AutoUpdate on all platforms by @JaviChulvi in #26950
  • Profile the real loss in AutoBatch for RT-DETR and semantic segmentation by @raimbekovm in #26913
  • Update slow CI for PyTorch 2.14 and 2.15 by @glenn-jocher in #26951
  • Load the student from mid-run distillation checkpoints by @raimbekovm in #26937
  • ultralytics 8.4.193 Up to 2x faster CPU ONNX Runtime and OpenVINO prediction by @var1914 in #26942

Full Changelog: v8.4.192...v8.4.193

Don't miss a new ultralytics release

NewReleases is sending notifications on new releases.