pypi ultralytics 8.3.195
v8.3.195 - `ultralytics 8.3.195` Zero-dependency 30X faster CPU info (#21972)

one day ago

🌟 Summary

Ultralytics 8.3.195 boosts startup speed and reliability by replacing the py-cpuinfo dependency with a built-in, cross‑platform CPU info utility—plus several quality fixes for checkpoints, OBB predictions, and dataset verification. 🚀

📊 Key Changes

  • Zero-dependency CPU info (priority)

    • Replaced external py-cpuinfo with a lightweight internal utility ultralytics.utils.cpu.CPUInfo for fast, consistent CPU detection across macOS/Linux/Windows. See reference docs for CPUInfo added to the site.
    • Updated get_cpu_info() to use CPUInfo.name().
    • Removed py-cpuinfo from project dependencies.
    • PR: ultralytics 8.3.195 Zero-dependency 30X faster CPU info by @glenn-jocher (view PR #21972) ⚡
  • Checkpoint loading improved

    • Restores all checkpoint arguments on load (model.args now preserves the full args dict; DEFAULT_CFG_KEYS filter removed).
    • PR: Restore all arguments on checkpoint load by @Y-T-G (view PR #21968) 🧠
  • OBB prediction fix

    • Disabled inappropriate box clipping for OBB when using xywh=True in scale_boxes to prevent width/height distortion.
    • PR: Disable box clipping for OBB predictions by @Y-T-G (view PR #21950) 📐
  • Dataset verification bugfix

    • Fixed a typo in verify_image_label using the correct keypoint parameter (prevents shape errors on pose datasets).
    • PR: Fix keypoints typo by @LH-and-FPGA (view PR #21965) 🩹
  • Typing modernization

    • Switched legacy typing generics (List/Dict/...) to built-in list/dict/... across code and examples (no behavior change).
    • PR: Replace Uppercase Python 3.8 Types → 3.9 types by @glenn-jocher (view PR #21961) 🧹

🎯 Purpose & Impact

  • Faster startup and leaner installs

    • Eliminates a dependency and accelerates CPU info retrieval (notable improvement on cold starts and scripts) ⚡
    • Fewer environment conflicts and simpler deployments (especially in constrained or offline environments) 📦
  • More reliable training/resume/export

    • Preserving all checkpoint args improves compatibility with custom configs, training resumption, exports, and Ultralytics HUB workflows 🔁
    • Note: model.args may contain additional keys—ensure downstream code can handle them gracefully ⚠️
  • More accurate predictions and verification

    • Correct handling of OBB xywh boxes prevents subtle geometry errors in outputs ✅
    • Pose dataset checks are more robust thanks to the keypoint variable fix 🧪

Quick tip:

  • Get a human-readable CPU name anywhere in code:
from ultralytics.utils.cpu import CPUInfo
print(CPUInfo.name())  # e.g., "Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz"

Enjoy a snappier, more robust Ultralytics experience with 8.3.195! ✨

What's Changed

New Contributors

Full Changelog: v8.3.194...v8.3.195

Don't miss a new ultralytics release

NewReleases is sending notifications on new releases.