【问题标题】:tensorflow lite: error when converting retrained graph model to lite formattensorflow lite:将重新训练的图形模型转换为 lite 格式时出错
【发布时间】:2019-09-08 21:28:41
【问题描述】:

后续步骤

Step1- 克隆 git 存储库:

git clone https://github.com/googlecodelabs/tensorflow-for-poets-2

cd tensorflow-for-poets-2

Step2- 下载训练图像或收集自定义图像:

curl http://download.tensorflow.org/example_images/flower_photos.tgz \
    | tar xz -C tf_files

Step3- 设置图片大小和架构:

IMAGE_SIZE=224
ARCHITECTURE="mobilenet_0.50_${IMAGE_SIZE}"

Step4- 重新训练模型

python -m scripts.retrain \
  --bottleneck_dir=tf_files/bottlenecks \
  --model_dir=tf_files/models/"${ARCHITECTURE}" \
  --summaries_dir=tf_files/training_summaries/"${ARCHITECTURE}" \
  --output_graph=tf_files/retrained_graph.pb \
  --output_labels=tf_files/retrained_labels.txt \
  --architecture="${ARCHITECTURE}" \
  --image_dir=tf_files/flower_photos

Step5- 使用重新训练的模型检查分类图像

python -m scripts.label_image \
--graph=tf_files/retrained_graph.pb\ -- 
image=tf_files/flower_photos/daisy/3475870145_685a19116d.jpg

评估时间(1-image):0.281s

雏菊 0.725841 蒲公英 0.200525 郁金香 0.0411526 玫瑰 0.0318613 向日葵 0.000619742

Step6:优化模型

IMAGE_SIZE=224
toco \
  --input_file=tf_files/retrained_graph.pb \
  --output_file=tf_files/optimized_graph.pb \
  --input_format=TENSORFLOW_GRAPHDEF \
  --output_format=TENSORFLOW_GRAPHDEF \
  --input_shape=1,${IMAGE_SIZE},${IMAGE_SIZE},3 \
  --input_array=input \
  --output_array=final_result

Step7-验证图像分类优化模型

python -m scripts.label_image \
--graph=tf_files/optimized_graph.pb \
--image=tf_files/flower_photos/daisy/3475870145_685a19116d.jpg

评估时间(1-image):0.126s

雏菊 0.725845 蒲公英 0.200523 郁金香 0.0411517 玫瑰 0.031861 向日葵 0.00061973

Step8-将模型转换为TFlite格式

IMAGE_SIZE=224
toco \
  --input_file=tf_files/retrained_graph.pb \
  --output_file=tf_files/optimized_graph.lite \
  --input_format=TENSORFLOW_GRAPHDEF \
  --output_format=TFLITE \
  --input_shape=1,${IMAGE_SIZE},${IMAGE_SIZE},3 \
  --input_array=input \
  --output_array=final_result \
  --inference_type=FLOAT \
  --input_type=FLOAT

仍然遇到第 0 个输入应该有 602112 字节的问题,但找到了 150528 字节

请给出一个更好的解决方案来克服/实现这个问题来解决

【问题讨论】:

    标签: python tensorflow deep-learning


    【解决方案1】:

    整个上午都在尝试这样做,使用 1.9 及更高版本(可能还有 1.8,尚未测试。)您需要删除 --input_format 字段,并将 --input_file 参数更改为 --graph_def_file

    所以你最终会得到一个看起来有点像的命令:

    toco \
      --graph_def_file=tf_files/retrained_graph.pb \
      --output_file=tf_files/optimized_graph.lite \
      --output_format=TFLITE \
      --input_shape=1,${IMAGE_SIZE},${IMAGE_SIZE},3 \
      --input_array=input \
      --output_array=final_result \
      --inference_type=FLOAT \
      --inference_input_type=FLOAT
    

    然后我能够完成诗人示例,并让我的 tflite 文件在 android 上运行。

    来源: https://github.com/googlecodelabs/tensorflow-for-poets-2/issues/68

    【讨论】:

      【解决方案2】:

      我假设您正在尝试在 Tensorflow for Poets 附带的 android-app 中使用您的模型。如果是这种情况并且您在 Android Studio 中遇到此错误,您应该查看您的 ImageClassifier.java 文件。

      我的猜测是您的静态最终 int DIM_IMG_SIZE_X 和静态最终 int DIM_IMG_SIZE_Y 与您的 IMG_SIZE 的值不同。如果将这两个值设置为 224,应该可以解决问题。

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-14
        • 2020-12-03
        • 2021-04-16
        相关资源
        最近更新 更多