🌟 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 useCPUInfo.name()
. - Removed
py-cpuinfo
from project dependencies. - PR: ultralytics 8.3.195 Zero-dependency 30X faster CPU info by @glenn-jocher (view PR #21972) ⚡
- Replaced external py-cpuinfo with a lightweight internal utility
-
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) 🧠
- Restores all checkpoint arguments on load (
-
OBB prediction fix
- Disabled inappropriate box clipping for OBB when using
xywh=True
inscale_boxes
to prevent width/height distortion. - PR: Disable box clipping for OBB predictions by @Y-T-G (view PR #21950) 📐
- Disabled inappropriate box clipping for OBB when using
-
Dataset verification bugfix
- Fixed a typo in
verify_image_label
using the correctkeypoint
parameter (prevents shape errors on pose datasets). - PR: Fix
keypoints
typo by @LH-and-FPGA (view PR #21965) 🩹
- Fixed a typo in
-
Typing modernization
- Switched legacy
typing
generics (List/Dict/...) to built-inlist/dict/...
across code and examples (no behavior change). - PR: Replace Uppercase Python 3.8 Types → 3.9 types by @glenn-jocher (view PR #21961) 🧹
- Switched legacy
🎯 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 🧪
- Correct handling of OBB
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
- Replace Uppercase Python 3.8 Types → 3.9 types by @glenn-jocher in #21961
- Restore all arguments on checkpoint load by @Y-T-G in #21968
- Disable box clipping for OBB predictions by @Y-T-G in #21950
- Fix
keypoints
typo inverify_image_label
by @LH-and-FPGA in #21965 ultralytics 8.3.195
Zero-dependency 30X faster CPU info by @glenn-jocher in #21972
New Contributors
- @LH-and-FPGA made their first contribution in #21965
Full Changelog: v8.3.194...v8.3.195