π Summary
Ultralytics v8.4.78 is mainly a lightweighting and usability release πβthe biggest change removes SciPy from core dependencies, making installs smaller and simpler with no expected behavior changes, while docs were also improved for region counting, predictor argument persistence, and site navigation.
π Key Changes
-
Removed SciPy from core dependencies πͺΆ
- PR #24927 by @glenn-jocher replaces the remaining SciPy-based operations with NumPy-based equivalents.
- This includes an internal replacement for
linear_sum_assignment, used in important matching logic across:- RT-DETR
- SAM / mask matching
- validation
- tracking utilities
- The new implementation was validated against SciPy to machine precision, so this is intended as a drop-in change without functional differences.
-
Smaller and cleaner installation footprint π¦
- Since SciPy was one of the heaviest required packages, removing it reduces the base install size noticeably.
- This can make setup faster and easier, especially in constrained or cloud environments.
-
Region counting documentation was reworked π―
- PR #24816 by @raimbekovm refreshes the RegionCounter guide around actual usage.
- It now better explains:
- how region counting works frame by frame
- how to define one or multiple regions
- how to access counts in code
- the difference between live occupancy and cumulative counting
-
Clarified
model.embed()/ predictor argument persistence π- PR #24926 by @raimbekovm adds an important note that a loaded model may reuse the same predictor across calls.
- This means arguments like
embedcan persist unexpectedly unless reset, such as withembed=None.
-
Large documentation link cleanup across the docs site π
- PR #24915 by @raimbekovm converts many internal docs links from absolute URLs to relative links.
- This helps docs work better in:
- local builds
- GitHub previews
- translated/localized documentation
π― Purpose & Impact
-
Easier installs for everyone β‘
- Removing SciPy lowers dependency weight, which can help users install Ultralytics faster and with fewer environment issues.
-
Better portability and deployment π
- Smaller dependencies are especially useful for CI, Docker images, edge devices, notebooks, and cloud workflows.
-
No intended model behavior changes β
- The SciPy removal is an infrastructure improvement, not a model redesign, so users should get the same results with a leaner package.
-
Improved reliability for advanced workflows π€
- Because the replaced matching logic is used in areas like RT-DETR, SAM, tracking, and validation, this update keeps those features working while reducing external dependency burden.
-
Fewer documentation gotchas π
- The updated RegionCounter guide should make multi-zone counting easier to understand and adopt.
- The predictor persistence note may save users from confusing behavior when mixing
model.embed()andmodel.predict().
-
Better docs experience across languages and previews π
- Relative linking improves navigation and helps non-English readers stay within the correct localized docs flow.
Overall, v8.4.78 is a quality-of-life release π‘: lighter installs, cleaner internals, and clearer documentation, with the SciPy removal being the standout improvement.
What's Changed
- Use relative cross-file links across docs pages by @raimbekovm in #24915
- Document embed argument persistence on the reused predictor by @raimbekovm in #24926
- Restructure region counting guide around RegionCounter usage by @raimbekovm in #24816
- Remove scipy from core dependencies by @glenn-jocher in #24927
Full Changelog: v8.4.77...v8.4.78