如何将 tfjs 的 body-pix 模型转换为 keras h5 或 tensorflow 冻结图

tak*_*uma 7 keras tensorflow tensorflow.js

我正在将 body-pix 移植到 Python 和 C++,并希望将 tensorflow.js 的 body-pix 预训练模型导出到 tensorflow 冻结图中。是否可以?

我已经下载了以下文件并尝试使用 tensorflowjs_converter 进行转换,但没有成功。

结果在这里。

$ tensorflowjs_converter --input_format tfjs_layers_model --output_format keras posenet_mobilenet_025_partmap/model.json test.h5

Traceback (most recent call last):
  File "/home/xxx/anaconda3/envs/tfjs_test2/bin/tensorflowjs_converter", line 10, in <module>
    sys.exit(main())
  File "/home/xxx/anaconda3/envs/tfjs_test2/lib/python3.6/site-packages/tensorflowjs/converters/converter.py", line 368, in main
    FLAGS.output_path)
  File "/home/xxx/anaconda3/envs/tfjs_test2/lib/python3.6/site-packages/tensorflowjs/converters/converter.py", line 169, in dispatch_tensorflowjs_to_keras_h5_conversion
    model = keras_tfjs_loader.load_keras_model(config_json_path)
  File "/home/xxx/anaconda3/envs/tfjs_test2/lib/python3.6/site-packages/tensorflowjs/converters/keras_tfjs_loader.py", line 218, in load_keras_model
    use_unique_name_scope=use_unique_name_scope)
  File "/home/xxx/anaconda3/envs/tfjs_test2/lib/python3.6/site-packages/tensorflowjs/converters/keras_tfjs_loader.py", line 65, in _deserialize_keras_model
    model = keras.models.model_from_json(json.dumps(model_topology_json))
  File "/home/xxx/anaconda3/envs/tfjs_test2/lib/python3.6/site-packages/tensorflow/python/keras/saving/model_config.py", line 96, in model_from_json
    return deserialize(config, custom_objects=custom_objects)
  File "/home/xxx/anaconda3/envs/tfjs_test2/lib/python3.6/site-packages/tensorflow/python/keras/layers/serialization.py", line 81, in deserialize
    layer_class_name = config['class_name']
KeyError: 'class_name'

Run Code Online (Sandbox Code Playgroud)

转换器版本在这里。

tensorflowjs 1.0.1

Dependency versions:
  keras 2.2.4-tf
  tensorflow 2.0.0-dev20190405
Run Code Online (Sandbox Code Playgroud)

在 ubuntu 16.04 LTS 和 anaconda 3 上。我尝试过 tensorflowjs 0.8.5,但它也不起作用。

如果你告诉我如何转换它们会很有帮助。keras 格式或 tensorflow 冻结图都可以。我认为两者可以相互转换。

Aja*_*jai 7

  • 下载 model.json 文件

例如:https : //storage.googleapis.com/tfjs-models/savedmodel/bodypix/resnet50/float/model-stride16.json

  • 从 manifest.json 下载相应的权重

https://storage.googleapis.com/tfjs-models/savedmodel/bodypix/resnet50/float/manifest.json

  • 安装 tfjs_graph_converter

来自https://github.com/ajaichemmanam/tfjs-to-tf

  • 将模型转换为 .pb 文件

tfjs_graph_converter path/to/js/model path/to/frozen/model.pb

这里有一个 POSENET 转换为 keras h5 模型的例子。https://github.com/tensorflow/tfjs/files/3943875/posenet.zip 同样的方式您可以使用 bodypix 模型并将其转换。