加载Tensorflow Object Detection API导出的saved_model.pb报错求助
针对你遇到的FileNotFoundError: Unsuccessful TensorSliceReader constructor: Failed to find any matching files for /content/saved_model/variables/variables错误,可从以下几个方向排查:
1. 确认模型路径是否正确
导出的SavedModel目录结构必须包含:
saved_model.pb文件variables文件夹(内含variables.data-00000-of-00001和variables.index文件)
检查PATH_TO_SAVED_MODEL是否指向包含上述内容的目录。比如如果导出时指定输出目录为/content/exported_model,实际的模型路径应为/content/exported_model/saved_model,而非上级目录。
可通过终端命令查看目录内容验证:
ls /content/saved_model
正常输出应包含saved_model.pb和variables。
2. 检查模型导出是否完整
重新执行导出命令,确保过程无报错。标准导出命令示例:
python exporter_main_v2.py \ --input_type image_tensor \ --pipeline_config_path ./your_pipeline.config \ --trained_checkpoint_dir ./training_checkpoints \ --output_directory ./exported_model
导出完成后,确认exported_model/saved_model下的variables文件夹和saved_model.pb文件存在且文件大小正常(非空)。
3. 排查跨环境复制问题
如果是从训练环境(如Colab)将模型复制到另一笔记本,需确保整个saved_model目录被完整复制,包括所有子文件和文件夹。避免只复制了saved_model.pb而遗漏variables文件夹。
4. 验证TensorFlow版本兼容性
训练、导出模型时的TensorFlow版本,需与加载模型时的版本保持主版本一致(如均为2.x系列)。版本差异可能导致模型结构解析异常,引发路径相关错误。
验证代码
可先执行以下代码确认模型目录结构和加载可行性:
import tensorflow as tf import os PATH_TO_SAVED_MODEL = "/content/saved_model" # 查看目录内容 print("目录内容:", os.listdir(PATH_TO_SAVED_MODEL)) # 尝试加载模型 try: detect_fn = tf.saved_model.load(PATH_TO_SAVED_MODEL) print("模型加载成功") except Exception as e: print("加载失败:", str(e))
内容的提问来源于stack exchange,提问作者andra

