diff --git a/pyproject.toml b/pyproject.toml index 7d40d3e130..b5d1bb8abd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -64,7 +64,7 @@ classifiers = [ # Required dependencies ------------------------------------------------------------------------------------------------ dependencies = [ - "numpy>=1.23.5,<2.0.0", # temporary patch for compat errors https://github.com/ultralytics/yolov5/actions/runs/9538130424/job/26286956354 + "numpy>=1.23.0,<2.0.0", # temporary patch for compat errors https://github.com/ultralytics/yolov5/actions/runs/9538130424/job/26286956354 "matplotlib>=3.3.0", "opencv-python>=4.6.0", "pillow>=7.1.2", diff --git a/tests/test_python.py b/tests/test_python.py index 4b7076e4f0..a40b8cb1fa 100644 --- a/tests/test_python.py +++ b/tests/test_python.py @@ -236,13 +236,14 @@ def test_results(model): results = YOLO(WEIGHTS_DIR / model)([SOURCE, SOURCE], imgsz=160) for r in results: r = r.cpu().numpy() + print(r, len(r), r.path) # print numpy attributes r = r.to(device="cpu", dtype=torch.float32) r.save_txt(txt_file=TMP / "runs/tests/label.txt", save_conf=True) r.save_crop(save_dir=TMP / "runs/tests/crops/") r.tojson(normalize=True) r.plot(pil=True) r.plot(conf=True, boxes=True) - print(r, len(r), r.path) + print(r, len(r), r.path) # print after methods def test_labels_and_crops(): diff --git a/ultralytics/__init__.py b/ultralytics/__init__.py index 48f6ce3db3..07545363e0 100644 --- a/ultralytics/__init__.py +++ b/ultralytics/__init__.py @@ -1,6 +1,6 @@ # Ultralytics YOLO 🚀, AGPL-3.0 license -__version__ = "8.2.45" +__version__ = "8.2.46" import os diff --git a/ultralytics/engine/results.py b/ultralytics/engine/results.py index 32342172f3..9e3f2e7be2 100644 --- a/ultralytics/engine/results.py +++ b/ultralytics/engine/results.py @@ -743,9 +743,10 @@ class OBB(BaseTensor): Accepts both torch and numpy boxes. """ - x1 = self.xyxyxyxy[..., 0].min(1).values - x2 = self.xyxyxyxy[..., 0].max(1).values - y1 = self.xyxyxyxy[..., 1].min(1).values - y2 = self.xyxyxyxy[..., 1].max(1).values - xyxy = [x1, y1, x2, y2] - return np.stack(xyxy, axis=-1) if isinstance(self.data, np.ndarray) else torch.stack(xyxy, dim=-1) + x = self.xyxyxyxy[..., 0] + y = self.xyxyxyxy[..., 1] + return ( + torch.stack([x.amin(1), y.amin(1), x.amax(1), y.amax(1)], -1) + if isinstance(x, torch.Tensor) + else np.stack([x.min(1), y.min(1), x.max(1), y.max(1)], -1) + )