You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Azure Custom Vision导出的TensorFlow模型用于TensorFlow.js?

搞定Azure Custom Vision模型转TensorFlow.js的问题

嘿,我之前也踩过这个坑,给你理清楚咋弄哈!首先得明确:你从Azure Custom Vision导出的Android用.pb文件是冻结计算图(Frozen Graph)——它已经把模型结构和权重打包在一起了,根本不需要单独的JSON权重文件!你之前以为要分开的结构是另一种TF模型格式,和这个不一样,所以不用费劲找JSON啦。

接下来直接用TensorFlow.js的转换器就能把这个.pb文件转成TF.js能用的格式,具体步骤一步一步来:

  • 先装转换器工具
    打开终端/命令行,跑下面的命令把依赖装上:

    pip install tensorflow tensorflowjs
    
  • 转换冻结图到TF.js格式
    假设你的.pb文件在./model/frozen_inference_graph.pb,还有标签文件labels.txt,运行下面的转换命令:

    tensorflowjs_converter \
      --input_format=tf_frozen_model \
      --output_node_names='你的输出节点名称' \
      ./model/frozen_inference_graph.pb \
      ./tfjs_model
    

    这里关键是要替换你的输出节点名称,给你俩实用办法找它:

    1. 用TensorFlow自带工具查询:
      saved_model_cli show --dir ./model --all
      
    2. 用Netron可视化工具打开.pb文件,一眼就能定位输出节点(Custom Vision的分类模型一般叫Softmax或者predictions)。
  • 把标签文件转成TF.js友好的格式
    把你的labels.txt改成JSON格式,比如命名成labels.json,内容就是把每行的标签做成数组:

    ["猫", "狗", "鸟"]
    

    (替换成你自己的实际标签即可)

  • 最后在TF.js里加载使用
    转换完成后,./tfjs_model文件夹里会有model.json和一堆权重分片文件,用TF.js的loadGraphModel就能加载:

    import * as tf from '@tensorflow/tfjs';
    
    async function loadMyModel() {
      const model = await tf.loadGraphModel('/tfjs_model/model.json');
      const labels = await fetch('/tfjs_model/labels.json').then(res => res.json());
      // 接下来就可以用model.predict()做推理啦
    }
    loadMyModel();
    

对了,要是转换的时候碰到输入尺寸的报错,就在命令里加个--input_shape参数指定模型输入维度,比如Custom Vision的分类模型通常是[1,224,224,3],命令就改成:

tensorflowjs_converter \
  --input_format=tf_frozen_model \
  --output_node_names='你的输出节点名称' \
  --input_shape='[1,224,224,3]' \
  ./model/frozen_inference_graph.pb \
  ./tfjs_model

内容的提问来源于stack exchange,提问作者Kasper Kamperman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:56:04