ultralytics 8.1.1 Docs, Solutions and Export updates (#7545)

Co-authored-by: Sergiu Waxmann <47978446+sergiuwaxmann@users.noreply.github.com>
Co-authored-by: Vivek Malvi <malvivivek8198@gmail.com>
Co-authored-by: UltralyticsAssistant <web@ultralytics.com>
Co-authored-by: psaxton <psaxton+github.com@gmail.com>
This commit is contained in:
Glenn Jocher 2024-01-12 16:48:57 +01:00 committed by GitHub
parent 30185e0d4c
commit 83165ffe9c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 62 additions and 26 deletions

View file

@ -85,10 +85,12 @@ def benchmark(
emoji, filename = "", None # export defaults
try:
assert i != 9 or LINUX, "Edge TPU export only supported on Linux"
if i == 10:
if i == 5:
assert MACOS or LINUX, "CoreML export only supported on macOS and Linux"
elif i == 10:
assert MACOS or LINUX, "TF.js export only supported on macOS and Linux"
elif i == 11:
assert sys.version_info < (3, 11), "PaddlePaddle export only supported on Python<=3.10"
# elif i == 11:
# assert sys.version_info < (3, 11), "PaddlePaddle export only supported on Python<=3.10"
if "cpu" in device.type:
assert cpu, "inference not supported on CPU"
if "cuda" in device.type:

View file

@ -1,6 +1,7 @@
# Ultralytics YOLO 🚀, AGPL-3.0 license
"""Monkey patches to update/extend functionality of existing functions."""
import time
from pathlib import Path
import cv2
@ -61,7 +62,8 @@ _torch_save = torch.save # copy to avoid recursion errors
def torch_save(*args, **kwargs):
"""
Use dill (if exists) to serialize the lambda functions where pickle does not do this.
Use dill (if exists) to serialize the lambda functions where pickle does not do this. Also adds 3 retries with
exponential standoff in case of save failure to improve robustness to transient issues.
Args:
*args (tuple): Positional arguments to pass to torch.save.
@ -74,4 +76,11 @@ def torch_save(*args, **kwargs):
if "pickle_module" not in kwargs:
kwargs["pickle_module"] = pickle # noqa
return _torch_save(*args, **kwargs)
for i in range(4): # 3 retries
try:
return _torch_save(*args, **kwargs)
except RuntimeError: # unable to save, possibly waiting for device to flush or anti-virus to finish scanning
if i == 3:
raise
time.sleep((2**i) / 2) # exponential standoff 0.5s, 1.0s, 2.0s