tensorflow2.2 object detection API运行出现Unknown errors是最坑的一个点,花了将近8个小时才找到问题。下面慢慢来看我的采坑记录,一步一步来都能跑起来这个Demo。
安装流程可按照here
需要注意的点我都标黄了:
activate tensorflow
(tensorflow) C:\Users\LR18813040244>
# From within TensorFlow/models/research/
cp object_detection/packages/tf2/setup.py .
python -m pip install .
win10没有cp指令,运行上面两句会报错,应该跳转到setup.py的目录下执行安装
cd D:\model_examples\models\research\object_detection\packages\tf2
python setup.py install
有些依赖下载不下来,我下了一晚上第二天还是一点没动,我也纳闷了,然后就手动下载
# From within TensorFlow/models/research/
python object_detection/builders/model_builder_tf2_test.py
这里我没有成功,因为报错说我缺少official模块,但是official模块要求tf >=2.4.0我看到它给我下载tf2.4.0我就马上把关了,因为它会把tf 2.2.0给你卸载了,这样CUDA和cudnn都用不了了,官网给出的匹配关系最高是tf2.3.0
1.打开anaconda prompt激活tensorflow环境
2.定位到object_detection_tutorial.ipynb所在目录
3.用jupyter notebook打开
(tensorflow) D:\model_examples\models\research\object_detection\colab_tutorials>jupyter notebook
4.不需要run all,从这里开始运行
5.报错No module named ‘object_detection’ ,解决办法:在导入模块前加入
!pip install tensorflow-object-detection-api,如下
!pip install tensorflow-object-detection-api
from object_detection.utils import ops as utils_ops
from object_detection.utils import label_map_util
from object_detection.utils import visualization_utils as vis_util
5.如果出现服务挂掉了,会立即重启。把代码中那些相对路径改成绝对路径会解决问题。
6.如果最后这个cell运行报错Unknown errors
大概率是CUDA和cudnn不匹配,看一下anaconda prompt上面提示什么,如果有出现
Loaded runtime CuDNN library: 7.5.1 but source was compiled with: 7.6.5
或者
Could not create cudnn handle: CUDNN_STATUS_ALLOC_FAILED基本就是CUDA和cudnn不匹配了。其实我安装的完全符合要求,我安装了CUDA10.1和cudnn7.6.5,但问题就出在我安装了两个CUDA,以前先安装了CUDA v10.0,因此v10.0相关的环境变量就在上面,现在我要切换CUDA成v10.1,让电脑使用CUDA10.1,那就要把和v10.1的环境变量上移到最上面。详细操作请look here
这样就能让CUDA和cudnn相互匹配了,程序也能跑起来了。
7.实例分割部分masking_model.output_shapes这行会报错,改成下面的代码可解决问题
# masking_model.output_shapes
masking_model.signatures['serving_default'].output_shapes