模型部署全流程:SavedModel、TFLite、TF.js、ONNX 的导出与实战

模型部署全流程:SavedModel、TFLite、TF.js、ONNX 的导出与实战

TensorFlow 的最大优势之一,就是拥有“端到端部署闭环”。从训练到导出,用户可根据目标平台灵活选择格式,部署到:

  • 服务端(TF Serving / TensorRT)
  • 移动端(TensorFlow Lite)
  • 浏览器端(TensorFlow.js)
  • 多框架跨平台(ONNX)

本章我们将覆盖四大部署格式,逐一讲清其导出方式、平台支持、转换流程,并通过完整实例演示:


一、SavedModel 格式:TensorFlow 的通用导出标准

✅ SavedModel 是什么?

  • TensorFlow 默认导出格式,目录结构包含:
    saved_model/
      ├── assets/                # 额外文件
      ├── variables/             # 权重
      └── saved_model.pb         # Graph + Signature
    

✅ 导出 SavedModel:

model = ...  # 已训练完毕的 Keras 模型
tf.saved_model.save(model, "export/saved_model")

或者:

model.save("export/saved_model", save_format="tf")

⚠️ 注意:仅 Functional / Sequential 模型能导出结构图,子类模型导出的 call() 会被追踪为默认签名。


✅ 加载 & 推理:

loaded = tf.saved_model.load("export/saved_model")
infer = loaded.signatures["serving_default"]
output = infer(tf.constant([[1.0, 2.0]]))
print(output)

二、TFLite:移动端部署首选格式(安卓、树莓派、MCU)

TensorFlow Lite 是面向低功耗设备优化的推理格式,具备:

  • 模型压缩(量化、剪枝)
  • 高速执行器(NNAPI、GPU Delegate、Hexagon)
  • 极小模型文件(<1MB)

✅ 步骤 1:转换为 TFLite

converter = tf.lite.TFLiteConverter.from_saved_model("export/saved_model")
tflite_model = converter.convert()

with open("model.tflite", "wb") as f:
    f.write(tflite_model)

✅ 示例:模型量化(动态范围)

converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_quant_model = converter.convert()

也支持整数量化、float16、整型 full-int quantization,适配 MCU。


✅ 步骤 2:移动端运行(Android)

使用 TFLite Java/Kotlin API:

Interpreter tflite = new Interpreter(loadModelFile());
float[][] input = {
   {
   1.0f, 2.0f}};
float[][] output = new float[1][1];
tflite.run(input

你可能感兴趣的:(计算机视觉,人工智能学习框架,javascript,neo4j,开发语言,计算机视觉,tensorflow,持续部署,人工智能)