【问题标题】:Accuracy score of inceptionV3 tflite model is not good as of retrained_graph.pb fileinceptionV3 tflite 模型的准确度得分不如 retrained_graph.pb 文件
【发布时间】:2018-11-26 22:54:12
【问题描述】:

retrained_graph.pb 转换为 tflite 文件后模型得分不好。

我们已按照以下步骤获取 tflite 文件:

步骤 1。收集数据图像(.jpg)并放入文件夹结构中,如

tf_files/cockroaches_photos/americancockroach/images

ex:tf_files/cockroaches_photos/americoncockroach/4.jpg

Step2 在训练之前,设置图像大小以及训练模型所需的架构。(inceptionV3/MobileNet)

设置图片大小:

IMAGE_SIZE=299

设置inception_v3的架构:

ARCHITECTURE="inception_v3"

Step3:使用默认 4000 epoch 重新训练模型:

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/i_cockr_photos

就我而言,行尾的输出:

INFO: tensorflow:Final test accuracy = 93.2% (N=44)

Step4:修改scripts/label_image.py如下

input_height=299
input_width=299
input_layer=”Mul”
output_layer=”final_result”

Step5:使用 retrained_graph.pb 对图像进行分类

python -m scripts.label_image --graph=tf_files/retrained_graph.pb --image=tf_files/i_cockr_photos/germancockroach/images.jpg

输出: 评估时间(1-image):0.816s

德国蟑螂 0.88213 棕带蟑螂 0.0920959 美洲蟑螂 0.024512 澳大利亚蜘蛛甲虫 0.000708872 温室蟑螂 0.000419116

Step6:优化模型

python -m tensorflow.python.tools.optimize_for_inference   --input=tf_files/retrained_graph.pb   --output=tf_files/optimized_graph.pb --input_format=TENSORFLOW_GRAPHDEF  --output_format=TENSORFLOW_GRAPHDEF --input_shape=1,299,299,3  --input_names="Mul" --output_names="final_result"

Step7:使用optimized_graph.pb验证优化模型:

python -m scripts.label_image --graph=tf_files/optimized_graph.pb --image=tf_files/i_cockr_photos/germancockroach/images.jpg

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

germancockroach 0.882129
brownbandedcockroach 0.0920963
americancockroach 0.0245122
australianspiderbeetle 0.000708876
greenhousecockroach 0.000419114

Step8:将模型转换为 TFLite 格式: (1)带有retrained_graph.pb

toco  --input_file=/home/sudheer_sure/t_working/tf_files/retrained_graph.pb  --output_file=/home/sudheer_sure/t_working/tf
_files/t_c_labs_retrained_graph.lite  --input_format=TENSORFLOW_GRAPHDEF  --output_format=TFLITE  --input_shape=1,299,299,3 --input_array=Mul --output_array=final_result --inference_type=FLOAT --input_type=FLOAT

(2)使用优化的_graph.pb

toco  --input_file=/home/sudheer_sure/t_working/tf_files/optimized_graph.pb  --output_file=/home/sudheer_sure/t_working/tf
_files/t_c_labs_optimized_graph.lite  --input_format=TENSORFLOW_GRAPHDEF  --output_format=TFLITE  --input_shape=1,299,299,3 --input_array=Mul --output_array=final_result --inference_type=FLOAT --input_type=FLOAT

(3)使用 bazel 转换 tflite retrained_graph.pb 并添加 input_names 和 output_names 参数:

sudo bazel-bin/tensorflow/contrib/lite/toco/toco '--input_format=TENSORFLOW_GRAPHDEF' '--input_file=/home/sudheer_sure/t_working/tf_files/retrained_graph.pb' '--output_format=TFLITE' '--output_file=/home/sudheer_sure/dummy/bazel_toco_retrain_inception_v3.lite' '--inference_type=FLOAT' '--inference_input_type=FLOAT' '--input_arrays=Mul' '--output_arrays=final_result' '--input_shapes=1,299,299,3' '--input_names=DecodeJpeg/contents' '--output_names=pool_3/_reshape'

(4) 使用 bazel 转换 tflite optimizationd_graph.pb 并添加 input_names 和 output_names 参数:

sudo bazel-bin/tensorflow/contrib/lite/toco/toco '--input_format=TENSORFLOW_GRAPHDEF' '--input_file=/home/sudheer_sure/t_working/tf_files/optimized_graph.pb' '--output_format=TFLITE' '--output_file=/home/sudheer_sure/dummy/bazel_toco_object_inception_v3.lite' '--inference_type=FLOAT' '--inference_input_type=FLOAT' '--input_arrays=Mul' '--output_arrays=final_result' '--input_shapes=1,299,299,3' '--input_names=DecodeJpeg/contents' '--output_names=pool_3/_reshape'

您可以在这里比较我们在转换为 tflite 文件之前获得的分数,即直接从重新训练的图形和转换为 tflite 文件之后获得的分数

来自 retarined_graph.pb 的分数:

americancockroach 0.814701

greenhousecockroach 0.157736

germancockroach 0.0224954

brownbandedcockroach 0.00405233

australianspiderbeetle 0.000568162

来自 TensorFlow .lite 文件的分数:

australianspiderbeetle, 0.012658036

confusedflourbeetle, 0.013540811

americancockroach, 0.033697817

请告诉我需要做些什么来解决它。

【问题讨论】:

    标签: tensorflow-lite


    【解决方案1】:

    我认为是ImageClassifier.javaclassifyFrame() 下的applyFilter() 已经平滑了数字。尝试删除它并再次检查输出。 参考this answer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-06
      • 2020-05-07
      • 2019-11-15
      • 1970-01-01
      • 1970-01-01
      • 2016-12-07
      • 2021-01-16
      • 2018-07-19
      相关资源
      最近更新 更多