ultralytics 8.2.25 latest TensorFlow 2.16 support (#13176)
Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com> Co-authored-by: UltralyticsAssistant <web@ultralytics.com> Co-authored-by: lakshanthad <lakshanthad@yahoo.com>
This commit is contained in:
parent
d80bd840d1
commit
dd819fc420
9 changed files with 79 additions and 49 deletions
10
.github/workflows/ci.yaml
vendored
10
.github/workflows/ci.yaml
vendored
|
|
@ -206,11 +206,16 @@ jobs:
|
|||
run: |
|
||||
# CoreML must be installed before export due to protobuf error from AutoInstall
|
||||
python -m pip install --upgrade pip wheel
|
||||
slow=""
|
||||
torch=""
|
||||
if [ "${{ matrix.torch }}" == "1.8.0" ]; then
|
||||
torch="torch==1.8.0 torchvision==0.9.0"
|
||||
fi
|
||||
pip install -e . $torch pytest-cov "coremltools>=7.0; platform_system != 'Windows' and python_version <= '3.11'" --extra-index-url https://download.pytorch.org/whl/cpu
|
||||
if [[ "${{ github.event_name }}" =~ ^(schedule|workflow_dispatch)$ ]]; then
|
||||
slow="pycocotools mlflow ray[tune]"
|
||||
fi
|
||||
slow="pycocotools mlflow ray[tune]"
|
||||
pip install -e ".[export]" $torch $slow pytest-cov --extra-index-url https://download.pytorch.org/whl/cpu
|
||||
- name: Check environment
|
||||
run: |
|
||||
yolo checks
|
||||
|
|
@ -220,7 +225,6 @@ jobs:
|
|||
run: |
|
||||
slow=""
|
||||
if [[ "${{ github.event_name }}" =~ ^(schedule|workflow_dispatch)$ ]]; then
|
||||
pip install pycocotools mlflow "ray[tune]"
|
||||
slow="--slow"
|
||||
fi
|
||||
pytest $slow --cov=ultralytics/ --cov-report xml tests/
|
||||
|
|
@ -272,7 +276,7 @@ jobs:
|
|||
- name: Install requirements
|
||||
run: |
|
||||
python -m pip install --upgrade pip wheel
|
||||
pip install --no-cache-dir -e ".[export]" pytest mlflow pycocotools "ray[tune]"
|
||||
pip install -e ".[export]" pytest mlflow pycocotools "ray[tune]"
|
||||
- name: Check environment
|
||||
run: |
|
||||
yolo checks
|
||||
|
|
|
|||
|
|
@ -175,7 +175,7 @@ This guide provides a comprehensive overview of three fundamental types of data
|
|||
Here's a table with the `Analytics` arguments:
|
||||
|
||||
| Name | Type | Default | Description |
|
||||
|--------------|-------------------|---------------|---------------------------------------------|
|
||||
|--------------|-------------------|---------------|-------------------------------------|
|
||||
| `type` | `str` | `None` | Type of data or object. |
|
||||
| `im0_shape` | `tuple` | `None` | Shape of the initial image. |
|
||||
| `writer` | `cv2.VideoWriter` | `None` | Object for writing video files. |
|
||||
|
|
|
|||
|
|
@ -100,8 +100,9 @@ export = [
|
|||
"onnx>=1.12.0", # ONNX export
|
||||
"coremltools>=7.0; platform_system != 'Windows' and python_version <= '3.11'", # CoreML supported on macOS and Linux
|
||||
"openvino>=2024.0.0", # OpenVINO export
|
||||
"tensorflow<=2.13.1; python_version <= '3.11'", # TF bug https://github.com/ultralytics/ultralytics/issues/5161
|
||||
"tensorflowjs>=3.9.0; python_version <= '3.11'", # TF.js export, automatically installs tensorflow
|
||||
"tensorflow>=2.0.0", # TF bug https://github.com/ultralytics/ultralytics/issues/5161
|
||||
"tensorflowjs>=3.9.0", # TF.js export, automatically installs tensorflow
|
||||
"keras", # not installed auotomatically by tensorflow>=2.16
|
||||
"flatbuffers>=23.5.26,<100; platform_machine == 'aarch64'", # update old 'flatbuffers' included inside tensorflow package
|
||||
"numpy==1.23.5; platform_machine == 'aarch64'", # fix error: `np.bool` was a deprecated alias for the builtin `bool` when using TensorRT models on NVIDIA Jetson
|
||||
"h5py!=3.11.0; platform_machine == 'aarch64'", # fix h5py build issues due to missing aarch64 wheels in 3.11 release
|
||||
|
|
@ -111,7 +112,6 @@ explorer = [
|
|||
"duckdb<=0.9.2", # SQL queries, duckdb==0.10.0 bug https://github.com/ultralytics/ultralytics/pull/8181
|
||||
"streamlit", # visualizing with GUI
|
||||
]
|
||||
# tensorflow>=2.4.1,<=2.13.1 # TF exports (-cpu, -aarch64, -macos)
|
||||
# tflite-support # for TFLite model metadata
|
||||
# nvidia-pyindex # TensorRT export
|
||||
# nvidia-tensorrt # TensorRT export
|
||||
|
|
|
|||
|
|
@ -129,6 +129,31 @@ def test_export_coreml_matrix(task, dynamic, int8, half, batch):
|
|||
shutil.rmtree(file) # cleanup
|
||||
|
||||
|
||||
@pytest.mark.slow
|
||||
@pytest.mark.skipif(not checks.IS_PYTHON_MINIMUM_3_10, reason="TFLite export requires Python>=3.10")
|
||||
@pytest.mark.skipif(not LINUX, reason="Test disabled as TF suffers from install conflicts on Windows and macOS")
|
||||
@pytest.mark.parametrize(
|
||||
"task, dynamic, int8, half, batch",
|
||||
[ # generate all combinations but exclude those where both int8 and half are True
|
||||
(task, dynamic, int8, half, batch)
|
||||
for task, dynamic, int8, half, batch in product(TASKS, [False], [True, False], [True, False], [1])
|
||||
if not (int8 and half) # exclude cases where both int8 and half are True
|
||||
],
|
||||
)
|
||||
def test_export_tflite_matrix(task, dynamic, int8, half, batch):
|
||||
"""Test YOLO exports to TFLite format."""
|
||||
file = YOLO(TASK2MODEL[task]).export(
|
||||
format="tflite",
|
||||
imgsz=32,
|
||||
dynamic=dynamic,
|
||||
int8=int8,
|
||||
half=half,
|
||||
batch=batch,
|
||||
)
|
||||
YOLO(file)([SOURCE] * batch, imgsz=32) # exported model inference at batch=3
|
||||
Path(file).unlink() # cleanup
|
||||
|
||||
|
||||
@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")
|
||||
|
|
@ -142,6 +167,7 @@ def test_export_coreml():
|
|||
YOLO(MODEL).export(format="coreml", nms=True, imgsz=32)
|
||||
|
||||
|
||||
@pytest.mark.skipif(not checks.IS_PYTHON_MINIMUM_3_10, reason="TFLite export requires Python>=3.10")
|
||||
@pytest.mark.skipif(not LINUX, reason="Test disabled as TF suffers from install conflicts on Windows and macOS")
|
||||
def test_export_tflite():
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Ultralytics YOLO 🚀, AGPL-3.0 license
|
||||
|
||||
__version__ = "8.2.24"
|
||||
__version__ = "8.2.25"
|
||||
|
||||
import os
|
||||
|
||||
|
|
|
|||
|
|
@ -83,7 +83,6 @@ from ultralytics.utils import (
|
|||
WINDOWS,
|
||||
__version__,
|
||||
callbacks,
|
||||
checks,
|
||||
colorstr,
|
||||
get_default_args,
|
||||
yaml_save,
|
||||
|
|
@ -813,15 +812,16 @@ class Exporter:
|
|||
import tensorflow as tf # noqa
|
||||
except ImportError:
|
||||
suffix = "-macos" if MACOS else "-aarch64" if ARM64 else "" if cuda else "-cpu"
|
||||
version = "" if ARM64 else "<=2.13.1"
|
||||
check_requirements((f"tensorflow{suffix}{version}", "keras"))
|
||||
version = ">=2.0.0"
|
||||
check_requirements(f"tensorflow{suffix}{version}")
|
||||
import tensorflow as tf # noqa
|
||||
if ARM64:
|
||||
check_requirements("cmake") # 'cmake' is needed to build onnxsim on aarch64
|
||||
check_requirements(
|
||||
(
|
||||
"keras",
|
||||
"onnx>=1.12.0",
|
||||
"onnx2tf>=1.15.4,<=1.17.5",
|
||||
"onnx2tf>1.17.5,<=1.22.3",
|
||||
"sng4onnx>=1.0.1",
|
||||
"onnxsim>=0.4.33",
|
||||
"onnx_graphsurgeon>=0.3.26",
|
||||
|
|
@ -835,7 +835,7 @@ class Exporter:
|
|||
LOGGER.info(f"\n{prefix} starting export with tensorflow {tf.__version__}...")
|
||||
check_version(
|
||||
tf.__version__,
|
||||
"<=2.13.1",
|
||||
">=2.0.0",
|
||||
name="tensorflow",
|
||||
verbose=True,
|
||||
msg="https://github.com/ultralytics/ultralytics/issues/5161",
|
||||
|
|
|
|||
|
|
@ -88,14 +88,14 @@ def benchmark(
|
|||
emoji, filename = "❌", None # export defaults
|
||||
try:
|
||||
# Checks
|
||||
if i == 5: # CoreML
|
||||
assert not (IS_RASPBERRYPI or IS_JETSON), "CoreML export not supported on Raspberry Pi or NVIDIA Jetson"
|
||||
if i == 9: # Edge TPU
|
||||
assert LINUX and not ARM64, "Edge TPU export only supported on non-aarch64 Linux"
|
||||
elif i == 7: # TF GraphDef
|
||||
if i == 7: # TF GraphDef
|
||||
assert model.task != "obb", "TensorFlow GraphDef not supported for OBB task"
|
||||
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, "export only supported on macOS and Linux"
|
||||
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"
|
||||
if i in {3, 5}: # CoreML and OpenVINO
|
||||
assert not IS_PYTHON_3_12, "CoreML and OpenVINO not supported on Python 3.12"
|
||||
if i in {6, 7, 8, 9, 10}: # All TF formats
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue