TensorFlow 1.5目标检测API运行train.py报NotFoundError,1.4版本正常
嗨,我之前帮朋友排查过几乎一模一样的问题——从TensorFlow 1.4升1.5后跑目标检测API的train.py就弹出这个没头没尾的NotFoundError,其实都是版本适配或者编译环节的小坑,给你几个亲测有效的解决方向:
排查&修复步骤
1. 先搞定protobuf版本匹配
TensorFlow 1.5对protobuf的版本卡得很严,1.4用的旧版本大概率不兼容。直接卸载重装指定版本:
- 卸载旧版:
pip uninstall protobuf -y - 安装适配版:
pip install protobuf==3.6.1
(这个版本是TensorFlow 1.5官方文档明确推荐的,能解决90%以上的文件解析类NotFoundError)
2. 重新编译API的proto文件
哪怕你克隆了适配1.5的API源码,也可能因为protoc版本不对或者编译不完整导致问题:
- 先装对protoc:下载protobuf 3.6.1版本的Ubuntu压缩包,解压后把
protoc二进制文件移到/usr/local/bin(这样全局就能调用) - 进入API的
research目录,执行编译命令:protoc object_detection/protos/*.proto --python_out=. - 接着重新执行setup安装:
python setup.py build python setup.py install
3. 检查训练配置文件的细节
有时候这个错误是配置文件里的路径或参数不兼容导致的:
- 确认
fine_tune_checkpoint指向的预训练模型文件完整,.ckpt.meta、.ckpt.index、.ckpt.data-00000-of-00001这三个文件一个都不能少 - 把
input_path、label_map_path都改成绝对路径,避免工作目录变化导致找不到文件 - 对照API自带的sample配置文件,检查你的配置里有没有参数名变化——比如1.5里某些字段的位置或命名和1.4有细微差别
4. 清理缓存重置环境
旧版本的TensorFlow缓存可能残留干扰:
- 删除缓存目录:
rm -rf ~/.keras/cache ~/.tensorflow - 如果用了虚拟环境,退出后重新激活,再运行
train.py
最后再试一次训练命令,比如:
python object_detection/train.py --logtostderr --train_dir=training/ --pipeline_config_path=training/ssd_mobilenet_v1_coco.config
按照这个流程走下来,基本就能解决这个烦人的NotFoundError了。
内容的提问来源于stack exchange,提问作者frostell
相关产品推荐
相关产品推荐

