tensorflow-yolov4-tflite: [Solved] Errors in converting Tensorflow Model to Tensorflow Lite Model

I wanted to use yolov4-tiny in the Tensorflow lite framework.

I converted my darknet weights trained from @AlexeyAB using these commands:

python save_model.py --weights yolov4-tiny.weights --output ./checkpoints/yolov4-tiny-608-tf --input_size 608 --model yolov4 --tiny --framework tflite
python convert_tflite.py --weights ./checkpoints/yolov4-tiny-608-tf --output ./checkpoints/yolov4-tiny-608.tflite

The first command is successful using numpy==1.19.0. However, the second one shows these errors.


loc("batch_normalization/moving_mean"): error: is not immutable, try running tf-saved-model-optimize-global-tensors to prove tensors are immutable
Traceback (most recent call last):
  File "C:\Python37\lib\site-packages\tensorflow\lite\python\convert.py", line 213, in toco_convert_protos
    enable_mlir_converter)
  File "C:\Python37\lib\site-packages\tensorflow\lite\python\wrap_toco.py", line 38, in wrapped_toco_convert
    enable_mlir_converter)
Exception: <unknown>:0: error: loc("batch_normalization/moving_mean"): is not immutable, try running tf-saved-model-optimize-global-tensors to prove tensors are immutable


During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "convert_tflite.py", line 76, in <module>
    app.run(main)
  File "C:\Python37\lib\site-packages\absl\app.py", line 303, in run
    _run_main(main, args)
  File "C:\Python37\lib\site-packages\absl\app.py", line 251, in _run_main
    sys.exit(main(argv))
  File "convert_tflite.py", line 71, in main
    save_tflite()
  File "convert_tflite.py", line 45, in save_tflite
    tflite_model = converter.convert()
  File "C:\Python37\lib\site-packages\tensorflow\lite\python\lite.py", line 762, in convert
    result = _convert_saved_model(**converter_kwargs)
  File "C:\Python37\lib\site-packages\tensorflow\lite\python\convert.py", line 648, in convert_saved_model
    enable_mlir_converter=True)
  File "C:\Python37\lib\site-packages\tensorflow\lite\python\convert.py", line 216, in toco_convert_protos
    raise ConverterError(str(e))
tensorflow.lite.python.convert.ConverterError: <unknown>:0: error: loc("batch_normalization/moving_mean"): is not immutable, try running tf-saved-model-optimize-global-tensors to prove tensors are immutable

I have tried other versions of Tensorflow (2.2, 2.3, 2.4 with numpy==1.19.0) but I had no luck. What should I do?

There is a similar issue raised here: Tensorflow Issue 44790

System information: Windows 10, x64 GeForce GTX 1060 NVIDIA Driver 460.89 CUDA 11.0.3 CuDNN 8.0.5.39 Python 3.7.2

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 18

Most upvoted comments

In case it helps. In google colab I had this issue if I used the default TF version which was 2.4.0. Running !pip install tensorflow==2.3.0 and restarting the runtime, then converting corrected the issue.

In case it helps. In google colab I had this issue if I used the default TF version which was 2.4.0. Running !pip install tensorflow==2.3.0 and restarting the runtime, then converting corrected the issue.

Thanks! This solution works nicely!

Can u show me the collab and the dataset all od your data? On Wed, 30 Dec 2020, 21:56 Marouaneghoulami, @.***> wrote: Maybe try training again your model with : tensorflow-gpu==2.3.0rc0 opencv-python==4.1.1.26 — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#285 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/ANKLHMUBCYBQRSBCFXAVKU3SXNERNANCNFSM4VFHFU3A .

I’m afraid its confidential, but i faced too the same problem, it was because tensorflow has a new release 2.4.0 but when i uninstalled it and re installed the version as mention above, that seem to solve the problem for me.