You need to enable JavaScript to run this app. 如何将.h5模型转换为.pb模型?解决ImageAI加载.pb模型失败问题
优惠活动
大模型
产品
解决方案
定价
更多

如何将.h5模型转换为.pb模型?解决ImageAI加载.pb模型失败问题

ImageAI视频检测场景下H5转PB模型的适配方案

问题定位

当前调用ImageAI的VideoObjectDetection模块时,直接将目录下的saved_model.pb文件作为模型路径传入,会出现模型读取失败的问题。本质原因是ImageAI的YOLOv3加载逻辑仅支持读取TF SavedModel格式的模型目录,无法直接解析孤立的PB文件,需要完成H5权重到适配性SavedModel目录的转换流程。

具体转换操作

  • 前置依赖准备
    需安装匹配版本的依赖,避免版本不兼容导致图结构解析失败,执行命令:
    pip install tensorflow==2.4.0 keras==2.4.3
  • H5转适配PB模型的核心代码
import tensorflow as tf
from tensorflow import keras

# 加载本地存储的H5格式YOLOv3权重,关闭编译避免自定义层缺失报错
h5_model = keras.models.load_model("你的本地yolov3权重文件.h5", compile=False)

# 导出为ImageAI可识别的SavedModel(包含标准PB计算图与配套变量文件)
tf.saved_model.save(
    h5_model,
    export_dir="./imageai_supported_pb_dir",
    signatures=h5_model.call
)
  • 原有调用代码修正
    核心修正点:模型路径不要直接指向孤立的pb文件,要指向导出的SavedModel根目录
from imageai.Detection import VideoObjectDetection
import os

execution_path = os.getcwd()

detector = VideoObjectDetection()
detector.setModelTypeAsYOLOv3()
detector.setModelPath(os.path.join(execution_path, "./imageai_supported_pb_dir"))
detector.loadModel()

实操注意事项

  • 导出模型时不要使用2.6以上版本的TensorFlow,高版本导出的模型签名格式不被当前ImageAI版本兼容,会触发计算图解析错误
  • 检查导出的imageai_supported_pb_dir目录结构,必须同时包含saved_model.pb文件、variables子目录,缺项会导致模型加载失败
  • 若H5文件中包含YOLOv3的自定义层,需在加载代码前提前注册自定义层映射关系,否则会抛出“未知层”的加载报错

内容的提问来源于stack exchange,提问作者Tee Adkins

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.05 01:06:04