π Summary
Ultralytics v8.4.73 is a stability-focused release that mainly improves INT8 TensorRT export reliability on RTX GPUs π οΈβ‘, while also fixing a memory issue in predict(), improving input order handling, and polishing examples and docs.
π Key Changes
-
Major fix: safer INT8 calibration on RTX GPUs π
- The most important update is from PR #24878 by @glenn-jocher.
- When exporting TensorRT engines with
int8=True, RTX cards using theNvTensorRTRTXExecutionProvidernow perform calibration on the CPU instead ofcuda:0. - This avoids crashes caused by execution provider conflicts and cuDNN compatibility mismatches during calibration.
- Important detail: this does not change the final INT8 engine quality or behaviorβonly the calibration path is changed to make export more reliable.
-
Fix for out-of-memory errors when predicting from large file-path lists πΎ
- PR #24866 fixes a case where passing a large Python list of image paths to
model.predict()could load too much into memory and trigger GPU OOM. - Local path lists are now handled lazily, so batching works as expected instead of trying to process everything at once.
- PR #24866 fixes a case where passing a large Python list of image paths to
-
Prediction input order is now preserved π
- File lists passed in by users are no longer auto-sorted before loading.
- This means results now follow the same order as the input list, which is especially helpful for pipelines that depend on exact input-output alignment.
-
Better error handling in the OpenCV ONNX example πΌοΈ
- PR #24872 adds a clear
FileNotFoundErrorif an image path is missing or unreadable. - This replaces a more confusing later-stage failure.
- PR #24872 adds a clear
-
Small documentation and comment cleanups βοΈ
-
CI installation step made more resilient π
- The release also adds retries to a dependency installation step in CI, helping reduce flaky build failures.
π― Purpose & Impact
-
More dependable INT8 export on RTX hardware β
- Users exporting TensorRT INT8 models on some RTX GPUs should see fewer crashes and failed exports.
- This is especially valuable for deployment workflows where export stability matters more than raw calibration speed.
-
No model accuracy change from the RTX calibration fix π―
- The calibration now runs on CPU for affected RTX setups, but the resulting INT8 engine should remain effectively the same.
- In short: same intended output, fewer headaches.
-
Better scalability for large inference jobs π
- If you run
predict()on long image lists, memory use should be much more manageable. - This can prevent unnecessary GPU OOM issues and make large batch workflows more practical.
- If you run
-
More predictable automation workflows π€
- Preserving user-supplied file order helps when mapping predictions back to source files in scripts, apps, and data pipelines.
-
Friendlier debugging and onboarding π
- Clearer example errors and cleaner docs reduce friction for newer users and save time for experienced developers.
Overall, v8.4.73 is less about new models and more about making export, inference, and examples more robust and predictableβwith the standout improvement being INT8 TensorRT export stability on RTX cards β‘
What's Changed
- fix minor typos and clarify comments by @fbertil in #24881
- Guard against cv2.imread returning None in OpenCV ONNX example by @orbisai0security in #24872
- Fix QueueManager docstring region example by @raimbekovm in #24821
- Fix OOM when passing large list of file paths to predict() by @leeburt in #24866
- Calibrate INT8 on CPU for RTX (NvTensorRTRTX) cards by @glenn-jocher in #24878
New Contributors
Full Changelog: v8.4.72...v8.4.73