🌟 Summary
The release of Ultralytics v8.3.76 introduces improved dynamic batch inference for ONNX models with NMS export, a better object tracking experience, and various code and documentation enhancements. 🚀
📊 Key Changes
-
Dynamic Batch Improvements:
- Solved issues with
dynamic=True
andnms=True
where the batch size was fixed at export. - Enabled dynamic input handling by introducing padding for unmatched batch sizes during ONNX exports.
- Solved issues with
-
Tracking Enhancements:
- Addressed errors when processing Torch tensors in
model.track()
. - Improved integration of original input images with trackers for accuracy.
- Addressed errors when processing Torch tensors in
-
Performance Accuracy:
- Fixed GPU memory conversion errors for logging VRAM usage to ensure accurate reporting.
-
Documentation Updates:
- Standardized formatting in documentation for better consistency.
- Enhanced examples for interpreting prediction results across detection, pose, segmentation, and more.
-
Other Code Refinements:
- Addressed layer miscount in logging by ensuring layers with no parameters are also displayed.
- Enhanced GitHub issue templates for clearer differentiation between bug reports and feature requests.
🎯 Purpose & Impact
- 🛠 Improved Model Deployment: Dynamic padding during export ensures robust handling of varying batch sizes while maintaining compatibility with ONNX workflows.
- 🎥 Better Tracking: Smoother operation for streamed data and enhanced consistency in object tracking results benefit both developers and end-users.
- 📋 Accurate Logging: Correct VRAM usage metrics improve debugging and resource optimization.
- 📚 Developer Friendliness: Updated docs and examples make it easier for users to understand and utilize prediction results effectively.
- 🚀 Efficiency Boost: Code tweaks and fixes culminate in faster, more accurate model handling without disruptions.
This release addresses several community-reported issues, focusing on operational accuracy and usability across export, tracking, and development workflows! 🙌
What's Changed
- Initialize
model_name
attribute by @LoveAndHope-dev in #19224 - Update results.boxes docs: boxes.id may be None by @shankangke in #19227
- Fix bytes to GB conversion for logged VRAM usage by @Y-T-G in #19254
- Fix memory conversion by @Y-T-G in #19256
- Use new "Issue Type" in templates by @Y-T-G in #19257
- Add https://youtu.be/im7xBCnPURg to docs by @RizwanMunawar in #19265
- Support CoreML NMS export for Segment, Pose and OBB by @Y-T-G in #19173
- Fix layer count; show layers with no params in detailed log by @Y-T-G in #19202
- Standardize
str
formatting in docs by @lakshanthad in #19276 - Add detailed usage with demos to reCamera doc by @lakshanthad in #19275
- Add examples showing how to use
result
for all tasks by @Y-T-G in #19282 - Update
model_data.py
by @RizwanMunawar in #19267 - Revert "Support CoreML NMS export for Segment, Pose and OBB" by @glenn-jocher in #19273
- Fix error with
torch
tensor input inmodel.track()
by @Y-T-G in #19278 ultralytics 8.3.76
fixdynamic
batch inference with NMS export by @Y-T-G in #19249
New Contributors
- @LoveAndHope-dev made their first contribution in #19224
Full Changelog: v8.3.75...v8.3.76