ultralytics / ultralytics

Ultralytics YOLO11 πŸš€
https://docs.ultralytics.com
GNU Affero General Public License v3.0
32.56k stars 6.26k forks source link

Error Export default YOLOv8n Model to edgeTPU Format (onnx2tf issue i think) #14235

Closed ARusDian closed 4 months ago

ARusDian commented 4 months ago

Search before asking

YOLOv8 Component

Export

Bug

got bug but i think it's from onnx to tflite model using raspberry Pi 4 to run on coral usb accelerator.

The Error message said this

raise TypeError(
TypeError: You are passing KerasTensor(type_spec=TensorSpec(shape=(1, 20, 20, 256), dtype=tf.float32, name=None), name='tf.math.multiply_119/Mul:0', description="created by layer 'tf.math.multiply_119'"), an intermediate Keras symbolic input/output, to a TF API that does not allow registering custom dispatchers, such as `tf.cond`, `tf.function`, gradient tapes, or `tf.map_fn`. Keras Functional model construction only supports TF API calls that *do* support dispatching, such as `tf.math.add` or `tf.reshape`. Other APIs cannot be called directly on symbolic Kerasinputs/outputs. You can work around this limitation by putting the operation in a custom Keras layer `call` and calling that layer on this symbolic input/output.

ERROR: input_onnx_file_path: yolov8n.onnx
ERROR: onnx_op_name: wa/model.10/Resize
ERROR: Read this and deal with it. https://github.com/PINTO0309/onnx2tf#parameter-replacement
ERROR: Alternatively, if the input OP has a dynamic dimension, use the -b or -ois option to rewrite it to a static shape and try again.
ERROR: If the input OP of ONNX before conversion is NHWC or an irregular channel arrangement other than NCHW, use the -kt or -kat option.
ERROR: Also, for models that include NonMaxSuppression in the post-processing, try the -onwdt option.

please help :)

Environment

Ultralytics YOLOv8.2.49 πŸš€ Python-3.9.19 torch-2.3.1 CPU (Cortex-A72) Setup complete βœ… (4 CPUs, 7.6 GB RAM, 17.2/58.0 GB disk)

OS Linux-6.6.31+rpt-rpi-v8-aarch64-with-glibc2.36 Environment Linux Python 3.9.19 Install git RAM 7.63 GB CPU Cortex-A72 CUDA None

numpy βœ… 1.24.3<2.0.0,>=1.23.0 matplotlib βœ… 3.9.1>=3.3.0 opencv-python βœ… 4.10.0.84>=4.6.0 pillow βœ… 10.4.0>=7.1.2 pyyaml βœ… 6.0.1>=5.3.1 requests βœ… 2.32.3>=2.23.0 scipy βœ… 1.13.1>=1.4.1 torch βœ… 2.3.1>=1.8.0 torchvision βœ… 0.18.1>=0.9.0 tqdm βœ… 4.66.4>=4.64.0 psutil βœ… 6.0.0 py-cpuinfo βœ… 9.0.0 pandas βœ… 2.2.2>=1.1.4 seaborn βœ… 0.13.2>=0.11.0 ultralytics-thop βœ… 2.0.0>=2.0.0

also i'm using tensorflow 2.13.1 and tensorflow-aarch64 2.13.1

Minimal Reproducible Example

from ultralytics import YOLO

model = YOLO("yolov8n.pt") 
model.export(format="edgetpu")

Additional

Here's the full Log :

Ultralytics YOLOv8.2.49 πŸš€ Python-3.9.19 torch-2.3.1 CPU (Cortex-A72)
YOLOv8n summary (fused): 168 layers, 3151904 parameters, 0 gradients, 8.7 GFLOPs

PyTorch: starting from 'yolov8n.pt' with input shape (1, 3, 640, 640) BCHW and output shape(s) (1, 84, 8400) (6.2 MB)

TensorFlow SavedModel: starting export with tensorflow 2.13.1...

ONNX: starting export with onnx 1.16.1 opset 17...
ONNX: slimming with onnxslim 0.1.31...
ONNX: export success βœ… 7.2s, saved as 'yolov8n.onnx' (12.3 MB)
TensorFlow SavedModel: starting TFLite export with onnx2tf 1.20.0...

Automatic generation of each OP name started ========================================
Automatic generation of each OP name complete!

Model loaded ========================================================================

Model conversion started ============================================================
ERROR: The trace log is below.
Traceback (most recent call last):
  File "/home/dian/.pyenv/versions/3.9.19/lib/python3.9/site-packages/onnx2tf/utils/common_functions.py", line 310, in print_wrapper_func
    result = func(*args, **kwargs)
  File "/home/dian/.pyenv/versions/3.9.19/lib/python3.9/site-packages/onnx2tf/utils/common_functions.py", line 383, in inverted_operation_enable_disable_wrapper_func
    result = func(*args, **kwargs)
  File "/home/dian/.pyenv/versions/3.9.19/lib/python3.9/site-packages/onnx2tf/utils/common_functions.py", line 53, in get_replacement_parameter_wrapper_func
    func(*args, **kwargs)
  File "/home/dian/.pyenv/versions/3.9.19/lib/python3.9/site-packages/onnx2tf/ops/Resize.py", line 417, in make_node
    resized_tensor = Lambda(
  File "/home/dian/.pyenv/versions/3.9.19/lib/python3.9/site-packages/tensorflow/python/keras/engine/base_layer.py", line 1045, in __call__
    outputs = call_fn(inputs, *args, **kwargs)
  File "/home/dian/.pyenv/versions/3.9.19/lib/python3.9/site-packages/tensorflow/python/keras/layers/core.py", line 913, in call
    result = self.function(inputs, **kwargs)
  File "/home/dian/.pyenv/versions/3.9.19/lib/python3.9/site-packages/onnx2tf/utils/common_functions.py", line 1142, in upsampling2d_nearest
    return tf.compat.v1.image.resize_nearest_neighbor(
  File "/home/dian/.pyenv/versions/3.9.19/lib/python3.9/site-packages/tensorflow/python/ops/image_ops_impl.py", line 4769, in resize_nearest_neighbor
    return gen_image_ops.resize_nearest_neighbor(
  File "/home/dian/.pyenv/versions/3.9.19/lib/python3.9/site-packages/tensorflow/python/ops/gen_image_ops.py", line 3858, in resize_nearest_neighbor
    return resize_nearest_neighbor_eager_fallback(
  File "/home/dian/.pyenv/versions/3.9.19/lib/python3.9/site-packages/tensorflow/python/ops/gen_image_ops.py", line 3896, in resize_nearest_neighbor_eager_fallback
    _attr_T, (images,) = _execute.args_to_matching_eager([images], ctx, [_dtypes.int8, _dtypes.uint8, _dtypes.int16, _dtypes.uint16, _dtypes.int32, _dtypes.int64, _dtypes.half, _dtypes.float32, _dtypes.float64, _dtypes.bfloat16, ])
  File "/home/dian/.pyenv/versions/3.9.19/lib/python3.9/site-packages/tensorflow/python/eager/execute.py", line 251, in args_to_matching_eager
    tensor = tensor_conversion_registry.convert(t)
  File "/home/dian/.pyenv/versions/3.9.19/lib/python3.9/site-packages/tensorflow/python/framework/tensor_conversion_registry.py", line 234, in convert
    ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
  File "/home/dian/.pyenv/versions/3.9.19/lib/python3.9/site-packages/tensorflow/python/framework/constant_op.py", line 324, in _constant_tensor_conversion_function
    return constant(v, dtype=dtype, name=name)
  File "/home/dian/.pyenv/versions/3.9.19/lib/python3.9/site-packages/tensorflow/python/framework/constant_op.py", line 263, in constant
    return _constant_impl(value, dtype, shape, name, verify_shape=False,
  File "/home/dian/.pyenv/versions/3.9.19/lib/python3.9/site-packages/tensorflow/python/framework/constant_op.py", line 275, in _constant_impl
    return _constant_eager_impl(ctx, value, dtype, shape, verify_shape)
  File "/home/dian/.pyenv/versions/3.9.19/lib/python3.9/site-packages/tensorflow/python/framework/constant_op.py", line 285, in _constant_eager_impl
    t = convert_to_eager_tensor(value, ctx, dtype)
  File "/home/dian/.pyenv/versions/3.9.19/lib/python3.9/site-packages/tensorflow/python/framework/constant_op.py", line 98, in convert_to_eager_tensor
    return ops.EagerTensor(value, ctx.device_name, dtype)
  File "/home/dian/.pyenv/versions/3.9.19/lib/python3.9/site-packages/keras/src/engine/keras_tensor.py", line 285, in __array__
    raise TypeError(
TypeError: You are passing KerasTensor(type_spec=TensorSpec(shape=(1, 20, 20, 256), dtype=tf.float32, name=None), name='tf.math.multiply_119/Mul:0', description="created by layer 'tf.math.multiply_119'"), an intermediate Keras symbolic input/output, to a TF API that does not allow registering custom dispatchers, such as `tf.cond`, `tf.function`, gradient tapes, or `tf.map_fn`. Keras Functional model construction only supports TF API calls that *do* support dispatching, such as `tf.math.add` or `tf.reshape`. Other APIs cannot be called directly on symbolic Kerasinputs/outputs. You can work around this limitation by putting the operation in a custom Keras layer `call` and calling that layer on this symbolic input/output.

ERROR: input_onnx_file_path: yolov8n.onnx
ERROR: onnx_op_name: wa/model.10/Resize
ERROR: Read this and deal with it. https://github.com/PINTO0309/onnx2tf#parameter-replacement
ERROR: Alternatively, if the input OP has a dynamic dimension, use the -b or -ois option to rewrite it to a static shape and try again.
ERROR: If the input OP of ONNX before conversion is NHWC or an irregular channel arrangement other than NCHW, use the -kt or -kat option.
ERROR: Also, for models that include NonMaxSuppression in the post-processing, try the -onwdt option.

Are you willing to submit a PR?

github-actions[bot] commented 4 months ago

πŸ‘‹ Hello @ARusDian, thank you for your interest in Ultralytics YOLOv8 πŸš€! We recommend a visit to the Docs for new users where you can find many Python and CLI usage examples and where many of the most common questions may already be answered.

If this is a πŸ› Bug Report, please provide a minimum reproducible example to help us debug it.

If this is a custom training ❓ Question, please provide as much information as possible, including dataset image examples and training logs, and verify you are following our Tips for Best Training Results.

Join the vibrant Ultralytics Discord 🎧 community for real-time conversations and collaborations. This platform offers a perfect space to inquire, showcase your work, and connect with fellow Ultralytics users.

Install

Pip install the ultralytics package including all requirements in a Python>=3.8 environment with PyTorch>=1.8.

pip install ultralytics

Environments

YOLOv8 may be run in any of the following up-to-date verified environments (with all dependencies including CUDA/CUDNN, Python and PyTorch preinstalled):

Status

Ultralytics CI

If this badge is green, all Ultralytics CI tests are currently passing. CI tests verify correct operation of all YOLOv8 Modes and Tasks on macOS, Windows, and Ubuntu every 24 hours and on every commit.

glenn-jocher commented 4 months ago

@ARusDian hello,

Thank you for providing detailed information about the issue you're encountering while exporting the YOLOv8n model to EdgeTPU format. It appears that the error is related to the onnx2tf conversion process, specifically with handling intermediate Keras symbolic inputs/outputs.

To help resolve this, please follow these steps:

  1. Ensure Latest Versions: Verify that you are using the latest versions of all relevant packages, including onnx, tensorflow, onnx2tf, and coremltools. This can often resolve compatibility issues.

  2. Static Shape Conversion: The error message suggests using the -b or -ois options to rewrite dynamic dimensions to static shapes. This can help in resolving issues related to dynamic dimensions in the ONNX model. You can try this by modifying the conversion command to include these options.

  3. Parameter Replacement: The error also points to a potential solution involving parameter replacement. You can refer to the onnx2tf parameter replacement guide for detailed instructions on how to handle this.

  4. Custom Keras Layer: As a workaround, you can encapsulate the problematic operation within a custom Keras layer. This involves creating a custom layer that performs the operation and then using this layer in your model.

Here is a minimal example of how you might define a custom Keras layer:

import tensorflow as tf
from tensorflow.keras.layers import Layer

class CustomResizeLayer(Layer):
    def __init__(self, **kwargs):
        super(CustomResizeLayer, self).__init__(**kwargs)

    def call(self, inputs):
        return tf.compat.v1.image.resize_nearest_neighbor(inputs, size=(20, 20))

# Usage in your model
inputs = tf.keras.Input(shape=(None, None, 256))
x = CustomResizeLayer()(inputs)
model = tf.keras.Model(inputs, x)
  1. Reproducible Example: If the issue persists, please provide a minimal reproducible example that demonstrates the problem. This will help us diagnose and address the issue more effectively. You can find guidelines for creating a reproducible example here.

  2. Check for Known Issues: Review the onnx2tf GitHub issues for similar problems and potential solutions.

If you continue to experience difficulties, please update this thread with any new findings or additional error messages. We appreciate your patience and cooperation in resolving this issue.

Y-T-G commented 4 months ago

pip install tensorflow==2.16.1 tf-keras==2.16.0 onnx2tf==1.22.3

glenn-jocher commented 4 months ago

Hello @Y-T-G,

Thank you for your suggestion to install specific versions of tensorflow, tf-keras, and onnx2tf. Ensuring compatibility between these packages is indeed crucial for a successful export process.

If you haven't already, please verify that the issue persists with the latest versions of these packages. Sometimes, newer versions include important bug fixes and improvements that can resolve such issues.

Additionally, if the problem continues, providing a minimal reproducible example would be incredibly helpful. This allows us to better understand the context and specifics of the issue you're facing. You can find guidelines for creating a reproducible example here.

Here’s a quick summary of steps you can take:

  1. Update Packages: Ensure you are using the latest versions of tensorflow, tf-keras, and onnx2tf.
  2. Static Shape Conversion: Use the -b or -ois options to rewrite dynamic dimensions to static shapes during the conversion process.
  3. Custom Keras Layer: Consider encapsulating problematic operations within a custom Keras layer.

If you need further assistance, feel free to share more details or any additional error messages you encounter. We're here to help! 😊

ARusDian commented 4 months ago

pip install tensorflow==2.16.1 tf-keras==2.16.0 onnx2tf==1.22.3

this one is working nicely but i need to upgrade my python to 2.10, welp i guess it is alright

so i make 2 different environment one for convert and and for running edge TPU

thanks guys

glenn-jocher commented 4 months ago

Hello @ARusDian,

I'm glad to hear that the suggested versions worked for you! πŸŽ‰ Creating separate environments for conversion and running on the Edge TPU is a smart approach to manage dependencies effectively.

If you encounter any further issues or have additional questions, feel free to reach out. We're here to help! 😊

Best of luck with your project!

yll1 commented 2 months ago

pip install tensorflow==2.16.1 tf-keras==2.16.0 onnx2tf==1.22.3 t want to know the success tftile converion . Can you tell me your python version and post the pip list ,thank you very much!

yll1 commented 2 months ago

i want to know the success tftile converion . Can you tell me your python version and post the pip list ,thank you very much!

yll1 commented 2 months ago

pip install tensorflow==2.16.1 tf-keras==2.16.0 onnx2tf==1.22.3

i want to know the success tftile converion . Can you tell me your python version and post the pip list ,thank you very much!

glenn-jocher commented 2 months ago

I'm unable to provide a specific pip list, but using Python 3.10 with the mentioned package versions should work for TFLite conversion. If you encounter issues, please let us know!

yll1 commented 2 months ago

pip install tensorflow==2.16.1 tf-keras==2.16.0 onnx2tf==1.22.3

this one is working nicely but i need to upgrade my python to 2.10, welp i guess it is alright

so i make 2 different environment one for convert and and for running edge TPU

thanks guys i want to know the success tftile converion . Can you tell me your python version and post the pip list ,thank you very much!

yll1 commented 2 months ago

I'm unable to provide a specific pip list, but using Python 3.10 with the mentioned package versions should work for TFLite conversion. If you encounter issues, please let us know!

I'm unable to provide a specific pip list, but using Python 3.10 with the mentioned package versions should work for TFLite conversion. If you encounter issues, please let us know!

I get through it with the following configuration : python39 tensorflow-gpu ==2.9.1 onnx2tf==1.7.7 29

31 The logs and results show success, but There was a mistake in the process, as follows: failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected

so i want to konw What are the python and dependency version numbers that make ohter people successful?

ARusDian commented 2 months ago

The logs and results show success, but There was a mistake in the process, as follows: failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected

i guess because you installed tf with gpu version, try install cpu version might help, anyways here's my pip list

`pip list` ``` Python 3.10.12 Package Version -------------------------------- --------------------- absl-py 1.4.0 accelerate 0.33.0 aiohappyeyeballs 2.4.0 aiohttp 3.10.5 aiosignal 1.3.1 alabaster 0.7.16 albucore 0.0.14 albumentations 1.4.14 altair 4.2.2 annotated-types 0.7.0 anyio 3.7.1 argon2-cffi 23.1.0 argon2-cffi-bindings 21.2.0 array_record 0.5.1 arviz 0.18.0 asn1crypto 1.5.1 astor 0.8.1 astropy 6.1.3 astropy-iers-data 0.2024.8.27.10.28.29 astunparse 1.6.3 async-timeout 4.0.3 atpublic 4.1.0 attrs 24.2.0 audioread 3.0.1 autograd 1.7.0 babel 2.16.0 backcall 0.2.0 beautifulsoup4 4.12.3 bidict 0.23.1 bigframes 1.15.0 bigquery-magics 0.2.0 bleach 6.1.0 blinker 1.4 blis 0.7.11 blosc2 2.0.0 bokeh 3.4.3 bqplot 0.12.43 branca 0.7.2 build 1.2.2 CacheControl 0.14.0 cachetools 5.5.0 catalogue 2.0.10 certifi 2024.8.30 cffi 1.17.0 chardet 5.2.0 charset-normalizer 3.3.2 chex 0.1.86 clarabel 0.9.0 click 8.1.7 click-plugins 1.1.1 cligj 0.7.2 cloudpathlib 0.19.0 cloudpickle 2.2.1 cmake 3.30.2 cmdstanpy 1.2.4 colorcet 3.1.0 colorlover 0.3.0 colour 0.1.5 community 1.0.0b1 confection 0.1.5 cons 0.4.6 contextlib2 21.6.0 contourpy 1.3.0 cryptography 43.0.0 cuda-python 12.2.1 cudf-cu12 24.4.1 cufflinks 0.17.3 cupy-cuda12x 12.2.0 cvxopt 1.3.2 cvxpy 1.5.3 cycler 0.12.1 cymem 2.0.8 Cython 3.0.11 dask 2024.7.1 datascience 0.17.6 db-dtypes 1.3.0 dbus-python 1.2.18 debugpy 1.6.6 decorator 4.4.2 defusedxml 0.7.1 distributed 2024.7.1 distro 1.7.0 dlib 19.24.2 dm-tree 0.1.8 docstring_parser 0.16 docutils 0.18.1 dopamine_rl 4.0.9 duckdb 0.10.3 earthengine-api 0.1.418 easydict 1.13 ecos 2.0.14 editdistance 0.8.1 eerepr 0.0.4 einops 0.8.0 en-core-web-sm 3.7.1 entrypoints 0.4 et-xmlfile 1.1.0 etils 1.7.0 etuples 0.3.9 eval_type_backport 0.2.0 exceptiongroup 1.2.2 fastai 2.7.17 fastcore 1.7.1 fastdownload 0.0.7 fastjsonschema 2.20.0 fastprogress 1.0.3 fastrlock 0.8.2 filelock 3.15.4 fiona 1.9.6 firebase-admin 6.5.0 Flask 2.2.5 flatbuffers 24.3.25 flax 0.8.4 folium 0.17.0 fonttools 4.53.1 frozendict 2.4.4 frozenlist 1.4.1 fsspec 2024.6.1 future 1.0.0 gast 0.6.0 gcsfs 2024.6.1 GDAL 3.6.4 gdown 5.1.0 geemap 0.34.0 gensim 4.3.3 geocoder 1.38.1 geographiclib 2.0 geopandas 0.14.4 geopy 2.4.1 gin-config 0.5.0 glob2 0.7 google 2.0.3 google-ai-generativelanguage 0.6.6 google-api-core 2.19.2 google-api-python-client 2.137.0 google-auth 2.27.0 google-auth-httplib2 0.2.0 google-auth-oauthlib 1.2.1 google-cloud-aiplatform 1.64.0 google-cloud-bigquery 3.25.0 google-cloud-bigquery-connection 1.15.5 google-cloud-bigquery-storage 2.25.0 google-cloud-bigtable 2.26.0 google-cloud-core 2.4.1 google-cloud-datastore 2.19.0 google-cloud-firestore 2.16.1 google-cloud-functions 1.16.5 google-cloud-iam 2.15.2 google-cloud-language 2.13.4 google-cloud-pubsub 2.23.0 google-cloud-resource-manager 1.12.5 google-cloud-storage 2.8.0 google-cloud-translate 3.15.5 google-colab 1.0.0 google-crc32c 1.5.0 google-generativeai 0.7.2 google-pasta 0.2.0 google-resumable-media 2.7.2 googleapis-common-protos 1.65.0 googledrivedownloader 0.4 graphviz 0.20.3 greenlet 3.0.3 grpc-google-iam-v1 0.13.1 grpcio 1.64.1 grpcio-status 1.48.2 gspread 6.0.2 gspread-dataframe 3.3.1 gym 0.25.2 gym-notices 0.0.8 h5netcdf 1.3.0 h5py 3.11.0 holidays 0.55 holoviews 1.18.3 html5lib 1.1 httpimport 1.3.1 httplib2 0.22.0 huggingface-hub 0.24.6 humanize 4.10.0 hyperopt 0.2.7 ibis-framework 8.0.0 idna 3.8 imageio 2.34.2 imageio-ffmpeg 0.5.1 imagesize 1.4.1 imbalanced-learn 0.12.3 imgaug 0.4.0 immutabledict 4.2.0 importlib_metadata 8.4.0 importlib_resources 6.4.4 imutils 0.5.4 inflect 7.3.1 iniconfig 2.0.0 intel-cmplr-lib-ur 2024.2.1 intel-openmp 2024.2.1 ipyevents 2.0.2 ipyfilechooser 0.6.0 ipykernel 5.5.6 ipyleaflet 0.18.2 ipyparallel 8.8.0 ipython 7.34.0 ipython-genutils 0.2.0 ipython-sql 0.5.0 ipytree 0.2.2 ipywidgets 7.7.1 itsdangerous 2.2.0 jax 0.4.26 jaxlib 0.4.26+cuda12.cudnn89 jedi 0.19.1 jeepney 0.7.1 jellyfish 1.1.0 jieba 0.42.1 Jinja2 3.1.4 joblib 1.4.2 jsonpickle 3.2.2 jsonschema 4.23.0 jsonschema-specifications 2023.12.1 jupyter-client 6.1.12 jupyter-console 6.1.0 jupyter_core 5.7.2 jupyter-server 1.24.0 jupyterlab_pygments 0.3.0 jupyterlab_widgets 3.0.13 kaggle 1.6.17 kagglehub 0.2.9 keras 3.4.1 keyring 23.5.0 kiwisolver 1.4.5 langcodes 3.4.0 language_data 1.2.0 launchpadlib 1.10.16 lazr.restfulclient 0.14.4 lazr.uri 1.0.6 lazy_loader 0.4 libclang 18.1.1 librosa 0.10.2.post1 lightgbm 4.4.0 linkify-it-py 2.0.3 llvmlite 0.43.0 locket 1.0.0 logical-unification 0.4.6 lxml 4.9.4 malloy 2024.1091 marisa-trie 1.2.0 Markdown 3.7 markdown-it-py 3.0.0 MarkupSafe 2.1.5 matplotlib 3.7.1 matplotlib-inline 0.1.7 matplotlib-venn 0.11.10 mdit-py-plugins 0.4.1 mdurl 0.1.2 miniKanren 1.0.3 missingno 0.5.2 mistune 0.8.4 mizani 0.9.3 mkl 2024.2.1 ml-dtypes 0.4.0 mlxtend 0.23.1 more-itertools 10.3.0 moviepy 1.0.3 mpmath 1.3.0 msgpack 1.0.8 multidict 6.0.5 multipledispatch 1.0.0 multitasking 0.0.11 murmurhash 1.0.10 music21 9.1.0 namex 0.0.8 natsort 8.4.0 nbclassic 1.1.0 nbclient 0.10.0 nbconvert 6.5.4 nbformat 5.10.4 nest-asyncio 1.6.0 networkx 3.3 nibabel 5.0.1 nltk 3.8.1 notebook 6.5.5 notebook_shim 0.2.4 numba 0.60.0 numexpr 2.10.1 numpy 1.26.4 nvidia-nccl-cu12 2.22.3 nvtx 0.2.10 oauth2client 4.1.3 oauthlib 3.2.2 opencv-contrib-python 4.10.0.84 opencv-python 4.10.0.84 opencv-python-headless 4.10.0.84 openpyxl 3.1.5 opt-einsum 3.3.0 optax 0.2.2 optree 0.12.1 orbax-checkpoint 0.6.1 osqp 0.6.7.post0 packaging 24.1 pandas 2.1.4 pandas-datareader 0.10.0 pandas-gbq 0.23.1 pandas-stubs 2.1.4.231227 pandocfilters 1.5.1 panel 1.4.5 param 2.1.1 parso 0.8.4 parsy 2.1 partd 1.4.2 pathlib 1.0.1 patsy 0.5.6 peewee 3.17.6 pexpect 4.9.0 pickleshare 0.7.5 Pillow 9.4.0 pip 24.1.2 pip-tools 7.4.1 platformdirs 4.2.2 plotly 5.15.0 plotnine 0.12.4 pluggy 1.5.0 polars 0.20.2 pooch 1.8.2 portpicker 1.5.2 prefetch_generator 1.0.3 preshed 3.0.9 prettytable 3.11.0 proglog 0.1.10 progressbar2 4.2.0 prometheus_client 0.20.0 promise 2.3 prompt_toolkit 3.0.47 prophet 1.1.5 proto-plus 1.24.0 protobuf 3.20.3 psutil 5.9.5 psycopg2 2.9.9 ptyprocess 0.7.0 py-cpuinfo 9.0.0 py4j 0.10.9.7 pyarrow 14.0.2 pyarrow-hotfix 0.6 pyasn1 0.6.0 pyasn1_modules 0.4.0 pycocotools 2.0.8 pycparser 2.22 pydantic 2.8.2 pydantic_core 2.20.1 pydata-google-auth 1.8.2 pydot 1.4.2 pydot-ng 2.0.0 pydotplus 2.0.2 PyDrive 1.3.1 PyDrive2 1.6.3 pyerfa 2.0.1.4 pygame 2.6.0 Pygments 2.16.1 PyGObject 3.42.1 PyJWT 2.9.0 pymc 5.10.4 pymystem3 0.2.0 pynvjitlink-cu12 0.3.0 PyOpenGL 3.1.7 pyOpenSSL 24.2.1 pyparsing 3.1.4 pyperclip 1.9.0 pyproj 3.6.1 pyproject_hooks 1.1.0 pyshp 2.3.1 PySocks 1.7.1 pytensor 2.18.6 pytest 7.4.4 python-apt 2.4.0 python-box 7.2.0 python-dateutil 2.8.2 python-louvain 0.16 python-slugify 8.0.4 python-utils 3.8.2 pytz 2024.1 pyviz_comms 3.0.3 PyYAML 6.0.2 pyzmq 24.0.1 qdldl 0.1.7.post4 ratelim 0.1.6 referencing 0.35.1 regex 2024.5.15 requests 2.32.3 requests-oauthlib 1.3.1 requirements-parser 0.9.0 rich 13.8.0 rmm-cu12 24.4.0 rpds-py 0.20.0 rpy2 3.4.2 rsa 4.9 safetensors 0.4.4 scikit-image 0.23.2 scikit-learn 1.3.2 scipy 1.13.1 scooby 0.10.0 scs 3.2.7 seaborn 0.13.1 SecretStorage 3.3.1 Send2Trash 1.8.3 sentencepiece 0.1.99 setuptools 71.0.4 shapely 2.0.6 shellingham 1.5.4 simple_parsing 0.1.5 six 1.16.0 sklearn-pandas 2.2.0 smart-open 7.0.4 sniffio 1.3.1 snowballstemmer 2.2.0 snowflake-connector-python 3.12.1 sortedcontainers 2.4.0 soundfile 0.12.1 soupsieve 2.6 soxr 0.5.0 spacy 3.7.6 spacy-legacy 3.0.12 spacy-loggers 1.0.5 Sphinx 5.0.2 sphinxcontrib-applehelp 2.0.0 sphinxcontrib-devhelp 2.0.0 sphinxcontrib-htmlhelp 2.1.0 sphinxcontrib-jsmath 1.0.1 sphinxcontrib-qthelp 2.0.0 sphinxcontrib-serializinghtml 2.0.0 SQLAlchemy 2.0.32 sqlglot 20.11.0 sqlparse 0.5.1 srsly 2.4.8 stanio 0.5.1 statsmodels 0.14.2 StrEnum 0.4.15 sympy 1.13.2 tables 3.8.0 tabulate 0.9.0 tbb 2021.13.1 tblib 3.0.0 tenacity 9.0.0 tensorboard 2.17.0 tensorboard-data-server 0.7.2 tensorflow 2.17.0 tensorflow-datasets 4.9.6 tensorflow-hub 0.16.1 tensorflow-io-gcs-filesystem 0.37.1 tensorflow-metadata 1.15.0 tensorflow-probability 0.24.0 tensorstore 0.1.64 termcolor 2.4.0 terminado 0.18.1 text-unidecode 1.3 textblob 0.17.1 tf_keras 2.17.0 tf-slim 1.1.0 thinc 8.2.5 threadpoolctl 3.5.0 tifffile 2024.8.28 tinycss2 1.3.0 tokenizers 0.19.1 toml 0.10.2 tomli 2.0.1 tomlkit 0.13.2 toolz 0.12.1 torch 2.4.0+cu121 torchaudio 2.4.0+cu121 torchsummary 1.5.1 torchvision 0.19.0+cu121 tornado 6.3.3 tqdm 4.66.5 traitlets 5.7.1 traittypes 0.2.1 transformers 4.44.2 tweepy 4.14.0 typeguard 4.3.0 typer 0.12.5 types-pytz 2024.1.0.20240417 types-setuptools 74.1.0.20240907 typing_extensions 4.12.2 tzdata 2024.1 tzlocal 5.2 uc-micro-py 1.0.3 ultralytics 8.2.91 ultralytics-thop 2.0.6 uritemplate 4.1.1 urllib3 2.0.7 vega-datasets 0.9.0 wadllib 1.3.6 wasabi 1.1.3 wcwidth 0.2.13 weasel 0.4.1 webcolors 24.8.0 webencodings 0.5.1 websocket-client 1.8.0 Werkzeug 3.0.4 wheel 0.44.0 widgetsnbextension 3.6.8 wordcloud 1.9.3 wrapt 1.16.0 xarray 2024.6.0 xarray-einstats 0.7.0 xgboost 2.1.1 xlrd 2.0.1 xyzservices 2024.6.0 yarl 1.9.4 yellowbrick 1.5 yfinance 0.2.43 zict 3.0.0 zipp 3.20.1 ```
yll1 commented 2 months ago

@ARusDian hi , 1,From your pip list, you can see that you don't have onnx_graphsurgeon installed, but normally, if you don't have onnx_graphsurgeon installed, you get errors when you convert your model to tflite format. I'm not sure how you fix this. 2,when i change tensorflow to cpu, the problem that failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected is solved

yll1 commented 2 months ago

I'm unable to provide a specific pip list, but using Python 3.10 with the mentioned package versions should work for TFLite conversion. If you encounter issues, please let us know!

@glenn-jocher @ARusDian Thanks for your help, I have successfully converted.PT model to.TFtile format model. Here is my configuration: python3.9.10 onnx==1.14.0 onnx2tf==1.7.7 tensorflow==2.9.1 3 4 Of course, many of the pip installation dependencies in this one are incompatible and I have forcibly ignored them. The compatibility of many of yolov8's dependencies is really poor, and there are many things that need to be improved! Thanks again for your help!

yll1 commented 2 months ago

I'm unable to provide a specific pip list, but using Python 3.10 with the mentioned package versions should work for TFLite conversion. If you encounter issues, please let us know!

@glenn-jocher @ARusDian Thanks for your help, I have successfully converted.PT model to.TFtile format model. Here is my configuration: python3.9.10 onnx==1.14.0 onnx2tf==1.7.7 tensorflow==2.9.1 3 4 Of course, many of the pip installation dependencies in this one are incompatible and I have forcibly ignored them. The compatibility of many of yolov8's dependencies is really poor, and there are many things that need to be improved! Thanks again for your help!

ARusDian commented 2 months ago

i have onnx_graphsurgeon installed, you get errors when you convert your model to tflite format. I'm not sure how you fix this.

the package will auto update it image

ARusDian commented 2 months ago

Of course, many of the pip installation dependencies in this one are incompatible and I have forcibly ignored them.

maybe u can just install it through google collab

glenn-jocher commented 2 months ago

Using Google Colab can help manage dependencies more smoothly. Give it a try for a streamlined setup.

yll1 commented 2 months ago

Using Google Colab can help manage dependencies more smoothly. Give it a try for a streamlined setup.

@glenn-jocher @ARusDian Thanks for your advice, I will try Google Colab。If I have any questions, I'm asking for your advice, thanks again。Best wishes to you

glenn-jocher commented 2 months ago

You're welcome! Feel free to reach out if you have more questions. Best of luck with your project!

yll1 commented 2 months ago

You're welcome! Feel free to reach out if you have more questions. Best of luck with your project!

@glenn-jocher @ARusDian Hello, I have tried model conversion with python3.10 and my configuration is as follows: python3.10, tensorflow==2.17.0,onnx==1.16.0, ultralytics==8.2.91. According to the result, the model conversion is successful, but the printed log has many warnings, as shown below: 1 2

ONNX: starting export with onnx 1.16.0 opset 15... WARNING: The shape inference of prim::Constant type is missing, so it may result in wrong shape inference for the exported graph. Please consider adding it in symbolic function. WARNING: The shape inference of prim::Constant type is missing, so it may result in wrong shape inference for the exported graph. Please consider adding it in symbolic function. WARNING: The shape inference of prim::Constant type is missing, so it may result in wrong shape inference for the exported graph. Please consider adding it in symbolic function. WARNING: The shape inference of prim::Constant type is missing, so it may result in wrong shape inference for the exported graph. Please consider adding it in symbolic function. WARNING: The shape inference of prim::Constant type is missing, so it may result in wrong shape inference for the exported graph. Please consider adding it in symbolic function. WARNING: The shape inference of prim::Constant type is missing, so it may result in wrong shape inference for the exported graph. Please consider adding it in symbolic function.

3

I would like to ask you how to resolve these warning logs,I would like to ask you how to solve these warning logs, I would be very grateful for your help!

glenn-jocher commented 2 months ago

Warnings during model conversion are common and often don't affect functionality. If the model works as expected, they can usually be ignored. For specific concerns, consider consulting the ONNX documentation or community for guidance on handling these warnings.

yll1 commented 2 months ago

Warnings during model conversion are common and often don't affect functionality. If the model works as expected, they can usually be ignored. For specific concerns, consider consulting the ONNX documentation or community for guidance on handling these warnings.

yes, the model works as expected,and often don't affect functionality. as fllows: 7 bus

Thanks for your help!

glenn-jocher commented 2 months ago

You're welcome! If everything is functioning as expected, there's no need for concern. If you have further questions, feel free to ask.

glenn-jocher commented 1 month ago

You're welcome! Feel free to reach out if you have any questions. Best of luck with your project!

dingniaoji commented 1 month ago

just wonder :) will peotry help ultralytics to improve dependency management?

dingniaoji commented 1 month ago

pip install tensorflow==2.16.1 tf-keras==2.16.0 onnx2tf==1.22.3

this one is working nicely but i need to upgrade my python to 2.10, welp i guess it is alright

so i make 2 different environment one for convert and and for running edge TPU

thanks guys

I think you mean python 3.10 not python 2.10.

glenn-jocher commented 1 week ago

You're welcome! Feel free to reach out if you have any questions. Best of luck with your project!