将Tensorflow模型转换为Tensorflow Lite模型时出错

qmelpv7a  于 2023-04-12  发布在  其他
关注(0)|答案(4)|浏览(164)

我想在Tensorflow lite框架中使用yolov 4-tiny来计算视频中跨越虚拟线的对象。
我使用以下命令转换了从AlexeyAB's repo训练的暗网权重:

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 here
第一个命令使用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
以下是我的系统详细信息:Windows 10,x64 GeForce GTX 1060 NVIDIA驱动程序460.89 CUDA 11.0.3 CuDNN8.0.5.39Python 3.7.2

wbrvyc0a

wbrvyc0a1#

pip install tensorflow==2.3.0rc0

并在开始转换之前重新启动运行时

xurqigkl

xurqigkl2#

我通过跟踪Github问题的线索解决了这个问题。
在google colab中,如果我使用默认的TF版本,即2.4.0或更高版本,我会遇到这个问题。
运行!pip install tensorflow==2.3.0并重新启动运行时,然后转换已纠正此问题。

f4t66c6m

f4t66c6m3#

这解决了我的问题:

import tensorflow as tf

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

并重新启动运行时,以便使用新安装的版本。

bmvo0sr5

bmvo0sr54#

同样的错误。我试图安装,但这给予我错误
找到现有安装:tensorflow 2.6.0卸载tensorflow-2.6.0:成功卸载tensorflow-2.6.0警告:以“root”用户身份运行pip可能会导致权限被破坏以及与系统程序包管理器的行为冲突。建议改用虚拟环境:https://pip.pypa.io/warnings/venv查找索引:https://pypi.org/simplehttps://us-python.pkg.dev/colab-wheels/public/simple/错误:找不到满足要求tensorflow-gpu==2.3.0rc0的版本(来自版本:2.5.0、2.5.1、2.5.2、2.5.3、2.6.0、2.6.1、2.6.2、2.6.3、2.6.4、2.6.5、2.7.0rc0、2.7.0rc1、2.7.0、2.7.1、2.7.2、2.7.3、2.7.4、2.8.0rc0、2.8.0rc1、2.8.0、2.8.1、2.8.2、2.8.3、2.8.4、2.9.0rc0、2.9.0rc1、2.9.0rc2、2.9.0、2.9.1、2.9.2、2.9.3、2.10.0rc0、2.10.0rc1、2.10.0rc2、2.10.0rc3、2.10.0、2.10.1、2.11.0rc0、2.11.0rc1、2.11.0rc2、2.11.0、2.12.0)错误:未找到与tensorflow-gpu==2.3.0rc0匹配的分布

相关问题