TensorFlow1.14运行目标检测代码报错无法导入resnet模块
问题根因
你遇到的问题分为两类:
- 开头的FutureWarning是numpy版本过高,与TensorFlow 1.14的底层依赖规则不匹配导致
- 最终的
ImportError: cannot import name 'resnet'是核心错误:你当前拉取的TensorFlow Object Detection API为适配TF2.x的最新版本,而TF1.14的tensorflow.python.keras.applications模块下没有统一的resnet包,该版本的ResNet相关实现为单独的resnet50、resnet101等子模块,与新版API的导入逻辑不匹配。
解决方案
- 方案1:快速修复导入错误
找到文件/content/gun_detection/models/research/object_detection/models/keras_models/resnet_v1.py,将第22行的导入语句:
from tensorflow.python.keras.applications import resnet
修改为适配TF1.14的导入规则:
from tensorflow.python.keras.applications import resnet50 as resnet
如果你的训练配置用到了ResNet101/152等变体,对应替换为对应的模块名即可。
- 方案2:切换为适配TF1.x的API版本
直接将models仓库切换到TF1.x的最后兼容分支,完全适配你的TF1.14环境,无需手动修改代码:
cd /content/gun_detection/models git checkout r1.13.0
- 方案3:消除numpy版本警告
执行以下命令降级numpy到匹配TF1.14的版本,解决开头的FutureWarning:
!pip install numpy==1.16.4
安装完成后重启Colab运行时,再重新执行训练命令即可。
内容的提问来源于stack exchange,提问作者maverick maiden
相关产品推荐
相关产品推荐

