Ошибки при преобразовании модели Tensorflow в модель Tensorflow Lite

Я хотел использовать yolov4-tiny в фреймворке Tensorflow lite для подсчета объектов, которые пересекают виртуальную линию в видео.

Я преобразовал свои веса даркнета, обученные из репозитория AlexeyAB, используя эти команды:

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

Вы можете найти convert_tflite.py здесь

Первая команда выполнена успешно, используя numpy==1.19.0. Однако второй показывает эти ошибки:

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

Я пробовал другие версии Tensorflow (2.2, 2.3, 2.4), но мне не повезло. Что я должен делать?

Здесь поднимается аналогичная проблема: Tensorflow Issue 44790

Вот подробности моей системы: Виндовс 10, х64 GeForce GTX 1060 Драйвер NVIDIA 460.89 КУДА 11.0.3 КуДНН 8.0.5.39 Питон 3.7.2

Я нашел решение здесь stackoverflow.com/questions/63652692/… Я попытаюсь использовать Ubuntu для запуска преобразования, чтобы иметь возможность использовать tf-nightly.

Addie Ira B. Parico 22.12.2020 14:28

Не могли бы вы опубликовать это как ответ, я все еще сталкиваюсь с ошибкой

SuperCode 07.01.2021 13:35

Этот еще не пробовала, но нашла вот этот

Addie Ira B. Parico 08.01.2021 07:46
Udacity Nanodegree Capstone Project: Классификатор пород собак
Udacity Nanodegree Capstone Project: Классификатор пород собак
Вы можете ознакомиться со скриптами проекта и данными на github .
2
3
2 223
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий
pip install tensorflow==2.3.0rc0

и перезапустите среду выполнения перед началом преобразования

Я решил проблему, следуя ветке по проблемам Github.

В google colab у меня была эта проблема, если я использовал версию TF по умолчанию, которая была 2.4.0 или выше. Запуск !pip install tensorflow==2.3.0 и перезапуск среды выполнения, а затем преобразование устранили проблему.

Для меня это решило мою проблему:

import tensorflow as tf

if tf.__version__ != '2.3.0-rc0':
  !pip uninstall -y tensorflow
  !pip install tensorflow-gpu==2.3.0rc0

И перезапустите среду выполнения, чтобы использовать только что установленные версии.

Другие вопросы по теме