Ultralytics v8.4.193: Faster CPU Inference and More Reliable Workflows
Ultralytics YOLO v8.4.193 is here! This release delivers substantially faster CPU inference on some systems with ONNX Runtime and OpenVINO, smarter defaults for dynamic exports, and fixes across datasets, training, metrics, and visualization.
Headline Improvement: Faster CPU Inference
CPU ONNX Runtime and OpenVINO models now limit PyTorch preprocessing and postprocessing to at most two threads, reducing competition with the inference runtime.
- On an 8-vCPU test machine: prediction was 19–54% faster across tested backends and batch sizes.
- On 4 vCPUs: results were mostly unchanged, with one ONNX Runtime batch test slightly slower.
- PyTorch
.ptsetup is unchanged.
In PR #26942, @var1914 contributed this targeted CPU performance improvement.
Export and Installation Improvements
- Dynamic export resolution and video reads: @Nikhi00718 updated behavior in PR #26939 so prediction and validation default to the export metadata’s
imgszwhen no explicit size is supplied. Explicit settings still take precedence, and strided video reads now start at frame 0. - More reliable path checks: @MohammadHijjawi97 fixed extensionless paths and dotted parent directories in PR #26918 to improve suffix handling.
- Runtime and solution fixes: @cainiao33 addressed ONNX Runtime variant reinstalls, VisionEye floating-point coordinates, and TrackZone grayscale frames in PR #26932 for more consistent behavior.
- Faster dependency installation: @JaviChulvi updated automatic dependency installation in PR #26950 to prefer
uvwhen available on all platforms, including ARM64.
Dataset and Visualization Fixes
- Individual image paths: @Vaishnavi220506 added support in PR #26946 for individual image paths in dataset
img_path. - Cleaner auto-annotation output: @raimbekovm fixed stale labels in PR #26947 by replacing previous labels with empty files when no objects are detected.
- Correct annotated-image splitting: @aswanth-07 repaired relative-path label lookup in PR #26948 for
autosplitwithannotated_only. - Better DOTA tiling: @raimbekovm changed label handling in PR #26938 to clip labels to tile boundaries instead of dropping affected tiles.
- No huge perspective ghost boxes: @8rulerstar updated
RandomPerspectivein PR #26934 to discard objects crossing the projection plane. - Safer batch plotting: @Vaishnavi220506 fixed plotting in PR #26925 to scale a copy rather than modify shared training or validation images.
- Consistent plotting types: @mottopanikeiku aligned
Results.plottyping in PR #26924 soline_widthis an integer, matching the configuration and annotator.
Model, Metric, and Training Reliability
- Correct class ordering: @raimbekovm updated
check_class_namesin PR #26927 to return names in class-ID order. - Accurate semantic metrics: @aswanth-07 fixed confusion-index overflow in PR #26921 when using compact
uint8labels. - More reliable W&B curves: @raimbekovm corrected class names and skipped label-less validation splits in PR #26922 to keep class curves meaningful.
- Clearer YOLOE errors: @raimbekovm added an explicit rejection in PR #26920 for visual prompts on models with fused class embeddings.
- More representative AutoBatch profiling: @raimbekovm updated profiling in PR #26913 to use the real training loss for RT-DETR and semantic segmentation.
- Distillation checkpoint recovery: @raimbekovm improved checkpoint loading in PR #26937 so mid-run checkpoints can load their student model while resumed training retains wrapper state.
- Safe loading for documented transforms: @Echoslayer enabled the documented letterbox classification transforms in PR #26949 under safe loading.
- Updated compatibility coverage: @glenn-jocher refreshed slow CI in PR #26951 for PyTorch 2.14 and 2.15, including newer-version coverage on Python 3.14.
Documentation and Ultralytics Platform Updates
- @glenn-jocher added eligible Enterprise HIPAA BAA information and sticky project controls in PR #26933 to clarify Platform capabilities.
- @glenn-jocher removed an outdated detect-only RKNN INT8 restriction in PR #26945 from Platform export documentation.
- @raimbekovm documented the
trainsplit argument, early-access annotation, and bulk trash controls in PR #26923 for clearer workflow guidance. - @raimbekovm corrected integration export guides in PR #26944, including format limitations and the transition from TF.js export to LiteRT.
- @Echoslayer clarified
weights_dirlookup and download behavior in PR #26935 to make model-file handling easier to understand.
Upgrade and Share Your Results
Install this release with:
pip install --upgrade ultralytics==8.4.193
Explore the v8.4.193 release notes for the official announcement, or review the full changelog to compare every change.
Give it a try and tell us how it performs! If you benchmark CPU inference, share your CPU, backend, batch size, and before-and-after timings below. Feedback on exports, training, and dataset workflows is welcome too.
Thanks to every contributor who helped make this release faster and more reliable!