Raspberry Pi 4下TensorFlow2.2加载交通标识模型触发OSError如何解决
问题原因
- 路径匹配错误:树莓派运行的Linux系统对路径大小写敏感,你代码中写的
./model/traffic_sign.model和实际模型存储的路径可能存在大小写、拼写不一致的问题。 - 相对路径基准错误:你执行Python脚本的工作目录和预期不一致,导致
./开头的相对路径指向的位置没有对应的模型文件。 - 模型格式/结构不完整:TensorFlow 2.2.0的
load_model默认加载SavedModel格式的模型,该格式是一个文件夹,内部必须包含saved_model.pb/saved_model.pbtxt文件以及variables子文件夹等结构。如果你的模型是H5格式的单文件,或者SavedModel文件夹结构损坏,就会触发该报错。 - 权限不足:运行脚本的用户对模型存储路径没有读取权限。
解决方案
- 先验证路径有效性
在你的代码前加入以下片段,确认路径是否匹配:
import os # 打印当前工作目录,确认相对路径基准 print("当前工作目录:", os.getcwd()) model_path = "./model/traffic_sign.model" print("目标路径是否存在:", os.path.exists(model_path)) if os.path.exists(model_path): print("路径下的文件列表:", os.listdir(model_path))
如果输出目标路径不存在,直接改用模型的绝对路径(比如/home/pi/[你的项目名]/model/traffic_sign.model)即可避免相对路径基准问题,同时检查拼写、大小写和实际路径保持一致。
- 检查模型结构
如果路径存在但目录下没有saved_model.pb文件:
- 如果你的模型是H5格式的单文件(比如名为
traffic_sign.h5),直接把load_model的参数改为该H5文件的路径即可,TensorFlow 2.2.0原生支持加载H5格式模型。 - 如果是模型导出不完整,回到训练环境重新导出完整的SavedModel格式模型,确认文件夹结构完整后再拷贝到树莓派上使用。
- 修复读取权限
如果是权限问题,执行以下命令给模型目录加读权限即可:
chmod -R 755 ./model
内容的提问来源于stack exchange,提问作者Fakhrul Amin
相关产品推荐
相关产品推荐

