Tensorflow2.2 object detection API win10安装大坑——解决多个CUDA安装下运行错误的问题

Tensorflow2.2 object detection API

tensorflow2.2 object detection API运行出现Unknown errors是最坑的一个点,花了将近8个小时才找到问题。下面慢慢来看我的采坑记录,一步一步来都能跑起来这个Demo。

安装流程可按照here
需要注意的点我都标黄了:

  • 所有操作安装都在虚拟环境里操作,我的虚拟环境是tensorflow,这个环境下安装的是tf2.2.0
    开始我就瞎安装,base环境安了tf1.5.0,然后又在tensorflow环境里跑代码,踩了不少坑,尽量都在一个环境里安装

首先,我们打开anaconda prompt

activate tf2

(tf) C:\Users\LR18813040244>
  • (6) 安装Tensorflow object detection API
# From within TensorFlow/models/research/
cp object_detection/packages/tf2/setup.py .
python -m pip install .

win10没有cp指令,运行上面两句会报错,应该跳转到setup.py的目录下执行安装

cd E:\model_examples\my_models\research\object_detection\packages\tf2
python setup.py install

有些依赖下载不下来,我下了一晚上第二天还是一点没动,我也纳闷了,然后就手动下载

  • (7) 检验安装是否成功 (实在运行不成功也没事)
# 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

  • 2.测试自带案例
    这里非常的坑,跑官网代码很可能会跑不起来,这里将详细的给出步骤,可以完全依照我这里写的来,不用看上面那部分了

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

猜你喜欢

转载自blog.csdn.net/weixin_44823313/article/details/113115245
今日推荐