首页 > 解决方案 > 加载 mobilenet v2 有效,但预训练的 mobilenet v2 失败

问题描述

我使用自己的图像重新训练 mobilenet v2 模型,并且可以使用 python 中的输出标记新图像(https://www.tensorflow.org/hub/tutorials/image_retraining)。加载文件有效,但在预测期间失败并显示(Firefox 和 Chromium 的 concole.log):

The dict provided in model.execute(dict) has keys: [images] not part of   model graph.

我使用提供的 retrain.py 重新训练模型

python retrain.py --image_dir flower_photos/ --tfhub_module https://tfhub.dev/google/imagenet/mobilenet_v2_100_224/classification/2 --random_brightness 10 --how_many_training_steps 100

在flower_photos 里面有带有图片名称的文件夹和相应的图片里面。

花照片

--- 赫弗拉蒂奇

-------- 1.jpg

-------- 2.jpg

……

--- 布施温德罗申

-------- 1.jpg

-------- 2.jpg

我可以使用转换此模型

tensorflowjs_converter --input_format=tf_frozen_model --output_node_names='module_apply_default/MobilenetV2/Logits/output' /tmp/output_graph.pb   Mobilenetv2/web_model

但这在https://github.com/tensorflow/tfjs-examples/tree/master/mobilenet提供的示例中不起作用

如果我使用转换原始 mobilenet v2

tensorflowjs_converter --input_format=tf_hub 'https://tfhub.dev/google/imagenet/mobilenet_v2_100_224/classification/2' mobilenetv2/web_model

我可以在提供的示例中加载。

最后,程序应该检测网络摄像头显示的不同的早熟花朵并进行分类。这应该是学生的 PWA,并激励他们体验自然。

标签: tensorflow.js

解决方案


Tensorflow.js 目前有两种类型的模型,

  1. 允许训练的图层模型,您可以使用 tf.loadModel(...) 加载它们
  2. 从 TensorFlow 生成的模型转换而来的模型,不允许训练。这就是你所拥有的,你应该使用 tf.loadFrozenModel(...)

这是加载冻结模型并对图像执行预测的示例。https://github.com/tensorflow/tfjs-converter/tree/master/demo/mobilenet


推荐阅读