🌟 Summary
The `v8.3.61` release restores compatibility with Python 3.8, refines several utility components, and makes user-facing improvements for better prediction workflows. It smooths the usability, performance, and flexibility of the Ultralytics ecosystem. 🚀💡
---
📊 Key Changes
- **Python 3.8 Compatibility Restored**: Ensures older Python versions, including 3.8, are now supported by replacing operations incompatible with earlier versions. 🐍✅
- Replaced `|` operator for dictionary merging with the Python 3.8-compatible `**` method.
- **Prediction API Simplification**: The `Predictor` and `SAM2Predictor` classes now output results in a consolidated object (`result`), replacing the previous multi-output format (`masks, scores, boxes`).
- Example updates reflect this newer, simpler API. 🧰
- **CI Workflow Improvements**: Adjusted triggers and settings in GitHub Actions workflows for smoother testing and CI processes.
- **Minor Bug Fixes**: Addressed issues in utility functions, prediction methods, and loss calculations to improve overall reliability and prevent unexpected errors. 🛠️
- **Version Bumped to 8.3.61**: Reflects these refinements in the package version.
---
🎯 Purpose & Impact
- **Broader Python Compatibility**: Expands usability for projects running Python 3.8, accommodating users on older infrastructure without losing core functionality. 🌎
- **Simplified Model Predictions**: A single-output format for `Predictor` and `SAM2Predictor` reduces user friction, improves code readability, and simplifies integration into pipelines. Especially helpful for new users! 🧩🚀
- **Improved Reliability**: Minor bug fixes enhance stability, ensuring smoother performance across diverse use cases.
- **CI Stability & Testing Precision**: Improvements to workflow configurations ensure better support for continuous integration and testing scenarios.
---
Note for Users 🤓:
If you’ve been using the `Predictor` or `SAM2Predictor` classes, make sure to update your scripts with the new `result` structure (e.g., use `result.masks`, `result.boxes`, etc.) instead of relying on separate outputs. This alignment will make your workflows cleaner and future-proof! 😊
What's Changed
* Fix broken examples in SAM Predictor docstrings by Y-T-G in https://github.com/ultralytics/ultralytics/pull/18665
* `ultralytics 8.3.61` Restore Python 3.8 compatibility by glenn-jocher in https://github.com/ultralytics/ultralytics/pull/18666
**Full Changelog**: https://github.com/ultralytics/ultralytics/compare/v8.3.60...v8.3.61