tensorflow lite:将重新训练的图形模型转换为lite格式时出错

时间:2018-04-29 03:54:36

标签: python tensorflow deep-learning

跟随步骤

Step1-克隆git存储库:

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

cd tensorflow-for-poets-2

步骤2 - 下载培训图像或收集自定义图像:

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

步骤5-使用再训练模型检查分类图像

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

评估时间(1-图像):0.281s

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

步骤6:优化模型

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-图像):0.126s

daisy 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个字节

请提供更好的解决方案来克服/解决此问题

2 个答案:

答案 0 :(得分:0)

一整天都在尝试使用1.9及更高版本(可能还有1.8,尚未测试。)进行此操作,您需要删除--input_format字段,并将--input_file参数更改为{ {1}}

所以您最终得到的命令看起来像:

--graph_def_file

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

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

答案 1 :(得分:0)

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

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

希望这会有所帮助!