From 62408aeab82bcb6bd45d2b6f3e3aaa2280a33d11 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 1 Sep 2024 21:37:05 +0200 Subject: [PATCH] `ultralytics 8.2.86` Windows `torch==2.4.0` patch (#15942) Signed-off-by: UltralyticsAssistant Co-authored-by: UltralyticsAssistant --- .github/workflows/ci.yaml | 2 +- pyproject.toml | 1 + tests/test_python.py | 2 ++ ultralytics/__init__.py | 2 +- ultralytics/utils/checks.py | 11 +++++++++++ ultralytics/utils/torch_utils.py | 7 +++++++ 6 files changed, 23 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 372b81e8..c079a5a0 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -156,7 +156,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-14] + os: [ubuntu-latest, macos-14, windows-latest] python-version: ["3.11"] torch: [latest] include: diff --git a/pyproject.toml b/pyproject.toml index 52049f4a..9fae825d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -71,6 +71,7 @@ dependencies = [ "pyyaml>=5.3.1", "requests>=2.23.0", "scipy>=1.4.1", + "torch>=1.8.0,<2.4.0; sys_platform == 'win32'", # Windows CPU errors https://github.com/ultralytics/ultralytics/issues/15049 "torch>=1.8.0", "torchvision>=0.9.0", "tqdm>=4.64.0", # progress bars diff --git a/tests/test_python.py b/tests/test_python.py index 7af4c9f4..f15dd48e 100644 --- a/tests/test_python.py +++ b/tests/test_python.py @@ -252,6 +252,8 @@ def test_labels_and_crops(): for r in results: im_name = Path(r.path).stem cls_idxs = r.boxes.cls.int().tolist() + # Check correct detections + assert cls_idxs == ([0, 0, 5, 0, 7] if r.path.endswith("bus.jpg") else [0, 0]) # bus.jpg and zidane.jpg classes # Check label path labels = save_path / f"labels/{im_name}.txt" assert labels.exists() diff --git a/ultralytics/__init__.py b/ultralytics/__init__.py index 4e5c7bc5..e1bbd656 100644 --- a/ultralytics/__init__.py +++ b/ultralytics/__init__.py @@ -1,6 +1,6 @@ # Ultralytics YOLO 🚀, AGPL-3.0 license -__version__ = "8.2.85" +__version__ = "8.2.86" import os diff --git a/ultralytics/utils/checks.py b/ultralytics/utils/checks.py index b2ccf8d0..80c13ad7 100644 --- a/ultralytics/utils/checks.py +++ b/ultralytics/utils/checks.py @@ -29,11 +29,13 @@ from ultralytics.utils import ( IS_PIP_PACKAGE, LINUX, LOGGER, + MACOS, ONLINE, PYTHON_VERSION, ROOT, TORCHVISION_VERSION, USER_CONFIG_DIR, + WINDOWS, Retry, SimpleNamespace, ThreadingLocked, @@ -224,6 +226,14 @@ def check_version( if not required: # if required is '' or None return True + if "sys_platform" in required: # i.e. required='<2.4.0,>=1.8.0; sys_platform == "win32"' + if ( + (WINDOWS and "win32" not in required) + or (LINUX and "linux" not in required) + or (MACOS and "macos" not in required and "darwin" not in required) + ): + return True + op = "" version = "" result = True @@ -422,6 +432,7 @@ def check_torchvision(): """ # Compatibility table compatibility_table = { + "2.4": ["0.19"], "2.3": ["0.18"], "2.2": ["0.17"], "2.1": ["0.16"], diff --git a/ultralytics/utils/torch_utils.py b/ultralytics/utils/torch_utils.py index 68d9fcf2..c2338e18 100644 --- a/ultralytics/utils/torch_utils.py +++ b/ultralytics/utils/torch_utils.py @@ -1,4 +1,5 @@ # Ultralytics YOLO 🚀, AGPL-3.0 license + import contextlib import gc import math @@ -24,6 +25,7 @@ from ultralytics.utils import ( NUM_THREADS, PYTHON_VERSION, TORCHVISION_VERSION, + WINDOWS, __version__, colorstr, ) @@ -42,6 +44,11 @@ TORCHVISION_0_10 = check_version(TORCHVISION_VERSION, "0.10.0") TORCHVISION_0_11 = check_version(TORCHVISION_VERSION, "0.11.0") TORCHVISION_0_13 = check_version(TORCHVISION_VERSION, "0.13.0") TORCHVISION_0_18 = check_version(TORCHVISION_VERSION, "0.18.0") +if WINDOWS and torch.__version__[:3] == "2.4": # reject all versions of 2.4 on Windows + LOGGER.warning( + "WARNING ⚠️ Known issue with torch>=2.4.0 on Windows with CPU, recommend downgrading to torch<=2.3.1 to resolve " + "https://github.com/ultralytics/ultralytics/issues/15049" + ) @contextmanager