diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3a6bd37b..9324a32c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -98,7 +98,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-15, windows-latest] + os: [ubuntu-latest, windows-latest, macos-15, ubuntu-24.04-arm] python-version: ["3.11"] model: [yolo11n] steps: @@ -160,7 +160,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-15, windows-latest] + os: [ubuntu-latest, macos-15, windows-latest, ubuntu-24.04-arm] python-version: ["3.11"] torch: [latest] include: diff --git a/tests/test_exports.py b/tests/test_exports.py index 010cf6bf..970065d6 100644 --- a/tests/test_exports.py +++ b/tests/test_exports.py @@ -11,6 +11,7 @@ from tests import MODEL, SOURCE from ultralytics import YOLO from ultralytics.cfg import TASK2DATA, TASK2MODEL, TASKS from ultralytics.utils import ( + ARM64, IS_RASPBERRYPI, LINUX, MACOS, @@ -157,7 +158,7 @@ def test_export_tflite_matrix(task, dynamic, int8, half, batch): @pytest.mark.skipif(not TORCH_1_9, reason="CoreML>=7.2 not supported with PyTorch<=1.8") @pytest.mark.skipif(WINDOWS, reason="CoreML not supported on Windows") # RuntimeError: BlobWriter not loaded -@pytest.mark.skipif(IS_RASPBERRYPI, reason="CoreML not supported on Raspberry Pi") +@pytest.mark.skipif(LINUX and ARM64, reason="CoreML not supported on aarch64 Linux") @pytest.mark.skipif(checks.IS_PYTHON_3_12, reason="CoreML not supported in Python 3.12") def test_export_coreml(): """Test YOLO exports to CoreML format, optimized for macOS only.""" diff --git a/ultralytics/utils/benchmarks.py b/ultralytics/utils/benchmarks.py index 5ba02195..c183203e 100644 --- a/ultralytics/utils/benchmarks.py +++ b/ultralytics/utils/benchmarks.py @@ -41,7 +41,7 @@ import yaml from ultralytics import YOLO, YOLOWorld from ultralytics.cfg import TASK2DATA, TASK2METRIC from ultralytics.engine.exporter import export_formats -from ultralytics.utils import ARM64, ASSETS, IS_JETSON, IS_RASPBERRYPI, LINUX, LOGGER, MACOS, TQDM, WEIGHTS_DIR +from ultralytics.utils import ARM64, ASSETS, LINUX, LOGGER, MACOS, TQDM, WEIGHTS_DIR from ultralytics.utils.checks import IS_PYTHON_3_12, check_requirements, check_yolo, is_rockchip from ultralytics.utils.downloads import safe_download from ultralytics.utils.files import file_size @@ -100,9 +100,9 @@ def benchmark( elif i == 9: # Edge TPU assert LINUX and not ARM64, "Edge TPU export only supported on non-aarch64 Linux" elif i in {5, 10}: # CoreML and TF.js - assert MACOS or LINUX, "CoreML and TF.js export only supported on macOS and Linux" - assert not IS_RASPBERRYPI, "CoreML and TF.js export not supported on Raspberry Pi" - assert not IS_JETSON, "CoreML and TF.js export not supported on NVIDIA Jetson" + assert MACOS or (LINUX and not ARM64), ( + "CoreML and TF.js export only supported on macOS and non-aarch64 Linux" + ) if i in {5}: # CoreML assert not IS_PYTHON_3_12, "CoreML not supported on Python 3.12" if i in {6, 7, 8}: # TF SavedModel, TF GraphDef, and TFLite