tensorflow.js - 加载 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 目前有两种类型的模型,
- 允许训练的图层模型,您可以使用 tf.loadModel(...) 加载它们
- 从 TensorFlow 生成的模型转换而来的模型,不允许训练。这就是你所拥有的,你应该使用 tf.loadFrozenModel(...)
这是加载冻结模型并对图像执行预测的示例。https://github.com/tensorflow/tfjs-converter/tree/master/demo/mobilenet
推荐阅读
- reactjs - 反应代码在我的 eccomrece 网站上不起作用
- amazon-web-services - VPC 终端节点 DNS 未响应
- xml - XML 安装程序 - 检测 Joomla 版本
- java - 映射错误,找不到错误
- javascript - 无法在基于事件的函数中更新数组类型的 useState
- javascript - 函数不返回真?
- laravel - 带有 Join 和 If 条件的 Laravel 查询生成器
- javascript - 尽管我尝试存储函数的返回值,但变量的值没有更新
- c# - 在 HangFire 中设置特定的日期和时间
- websocket - ESP32 Websocket JavaScript