将 Azure 自定义视觉训练模型与 tensorflow.js 结合使用



我已经使用 Azure Custom Vision 训练了一个模型,并下载了适用于 Android 的 TensorFlow 文件(见:https://learn.microsoft.com/en-au/azure/cognitive-services/custom-vision-service/export-your-model(。我怎样才能把它与 tensorflow.js一起使用?

我需要一个模型(pb 文件(和权重(json 文件(。但是,Azure给了我一个.pb和一个带有标签的文本文件。

根据我的研究,我还了解到还有不同的 pb 文件,但我找不到 Azure 自定义视觉导出的类型。

我找到了 tfjs 转换器。这是为了将 TensorFlow SavedModel(Azure 中的 *.pb 文件是 SavedModel 吗?(或 Keras 模型转换为 Web 友好的格式。但是我需要填写"output_node_names"(我如何获得这些?我也不是 100% 确定我的 Android pb 文件是否等于"tf_saved_model"。

我希望有人有一个提示或起点。

只是鹦鹉学舌我在这里所说的,以节省您的点击次数。我确实希望尽快提供直接导出到 tfjs 的选项。

这些是我为使导出的TensorFlow模型为我工作而执行的步骤:

  1. 将 PadV2 操作替换为 Pad。这个python函数应该可以做到这一点。 input_filepath 是 .pb 模型文件的路径,output_filepath是将创建的更新的 .pb 文件的完整路径。
import tensorflow as tf
def ReplacePadV2(input_filepath, output_filepath):
    graph_def = tf.GraphDef()
    with open(input_filepath, 'rb') as f:
        graph_def.ParseFromString(f.read())
    for node in graph_def.node:
        if node.op == 'PadV2':
            node.op = 'Pad'
            del node.input[-1]
            print("Replaced PadV2 node: {}".format(node.name))
    with open(output_filepath, 'wb') as f:
        f.write(graph_def.SerializeToString())
  1. 安装 tensorflowjs 0.8.6 或更早版本。转换冻结模型在更高版本中已弃用。
  2. 调用转换器时,将--input_format设置为 tf_frozen_modeloutput_node_names设置为 model_outputs 。这是我使用的命令。
tensorflowjs_converter --input_format=tf_frozen_model --output_json=true --output_node_names='model_outputs' --saved_model_tags=serve  pathtomodifiedmodel.pb  foldertosaveconvertedoutput

理想情况下,tf.loadGraphModel('path/to/converted/model.json')现在应该可以工作(针对 tfjs 1.0.0 及更高版本进行了测试(。

部分答案:

尝试实现同样的事情 - 这是一个答案的开始 - 利用output_node_names:

tensorflowjs_converter --input_format=tf_frozen_model --output_node_names='model_outputs' model.pb web_model

我还不确定如何将其合并到同一代码中 - 您对坎珀曼有什么@Kasper吗?

最新更新