本次记录在Ubuntu系统上尝试完成谷歌开源TensorFlow Object Detection API物体识别的超详细过程,期间参考了很多博主的文章,在这一如既往地对他们表示我由衷的感谢。另外,本人小小白一个,文中若有错误还望各位不吝赐教!
好,正式开始配置环境吧!
首先,检测NVIDIA图形卡和推荐的驱动程序的模型。执行命令:
ubuntu-drivers devices
sudo ubuntu-drivers autoinstall
#安装CUDA自动安装NVIDIA显卡驱动,此步骤可以跳过
因此直接查看CUDA版本
cat /usr/local/cuda/version.txt
也就是说我使用的服务器为:CUDA Version 10.1.168
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
(base) qh@user:~$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
#define CUDNN_MAJOR 7
#define CUDNN_MINOR 6
#define CUDNN_PATCHLEVEL 3
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
#include "driver_types.h"
好吧,原谅宝宝看不懂这是什么意思哭唧唧——
好吧,经查证,表示我的CuDNN版本为 7.6.3
CUDA 10.1 +cuDNN为 7.6.3,则尝试用
pip install tensorflow-gpu==1.13.1
很慢,考虑加清华镜像的(如果没有换源的话,但我好像换了)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple
tensorflow-gpu==1.13.1
【⭐⭐⭐如果不行的话,那就执行
plan B
pip install tensorflow==2.1】
昂~之前那个安装好像并没有在环境里面哭唧唧,这里我重新新建虚拟环境吧:(先建环境激活后再安装TensorFlow1)
python版本要3.7!
conda create -n tensorflow python=3.7
小tips:
用pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
升级pip更快嗷~!!!
激活后安装TensorFlow,pillow, lxml, matplotlib, jupyter
然后退出,继续安装:
(我继续在虚拟环境中了应该没影响吧?)
1、Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,在GitHub中,下载对应自己的系统的版本:
git clone https://github.com/protocolbuffers/protobuf
在Downloads下创建一个空包,用于存储models
mkdir /home/qh/Downloads/models
然后在克隆到该位置去:
git clone https://github.com/tensorflow/models
/home/qh/Downloads/models也就是:git clone https://github.com/tensorflow/models (需要git的地址)
直接在github下载zip包,本文直接下载的zip包(大概415M,虽然我们只会用到里面很少一部分内容)
下载后,解压到~/tensorflow目录下,为了与github目录结构一致,我们将models-master目录重命名为models得到如下目录结构~/tensorflow/models/research/object_detection
2、找到Tensorflow object detection API的目录,命令行cd到models\research文件:
cd /home/qh/anaconda3/envs/tensorflow/models/research
继续输入:
protoc object_detection/protos/*.proto --python_out=.
出现了一个问题?!!!不知道有没有影响
Import object_detection/protos/image_resizer.proto but not used.
3、在系统变量中新建名为:“PYTHONPATH”的变量,将Tensorflow object detection API目录下的research/ 及 research/slim 两个文件夹的完整目录进行添加。(注意用分号隔开)同时将…\models-master\research\object_detection路径加入到系统变量中
【这是win0里面,Linux里面Linux直接执行:】
export PYTHONPATH=$PYTHONPATH:
pwd
:pwd
/slim
4、加载slim文件夹模块:
A:cd 切换到research/slim文件夹下:
cd /home/qh/anaconda3/envs/tensorflow/models-master/research/slim
输入:
python setup.py install
git clone https://github.com/philferriere/cocoapi
1
cd到PythonAPI目录:
cd /home/qh/anaconda3/envs/tensorflow/models-master/research
输入:
python setup.py install
最后呢,成功!
然后将slim加入PYTHONPATH,输入命令如下:
sudo gedit ~/.bashrc
在打开的文件最下方输入:
export PYTHONPATH=$PYTHONPATH:‘pwd’:‘pwd’/slim
关掉后在终端输入以下,使得修改生效:
source ~/.bashrc
执行import slim成功则说明已经正确设置好了。
小tips:还有一种添加路径的方法 输入命令vim ~/.bashrc 进入文件进行编辑(按i键进入修改模式),输入命令 export
PYTHONPYTH=’/home/qh/anaconda3/envs/tf35/models/slim’,当然,绝对路径自行修改(Esc退出文件,
:wq!保存)。之后再 source ~/.bashrc 保存设置。可以通过 echo $PYTHONPATH 查看环境变量。
python object_detection/builders/model_builder_test.py
查找了博文,发现可能原因:
tensorflow版本与CUDA的版本不对应
查看环境,发现此时我环境里面是:tensorflow-gpu-1.13.1
再查看几者之间的对应关系,对应关系见这里
好吧,开始执行plan B
装tensorflow-2.1.0
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple
tensorflow-2.1.0
*那么一个新的问题又来啦,我该怎么才能直接从之前版本的TensorFlow换到2.1.0去了?难道全部重新安装咩??? *
昂~考虑卸载掉然后重新装吧:
pip uninstall tensorflow-gpu
然而,我佛了
昂,在线等一个plan C……
一定是我哪里没有搞对,再重新回顾回顾:
CUDA 版本为10.1.168+CuDNN版本为 7.6.3,再次查看下表:
看到一个博主说,若确认把cuda,cudnn,tensorflow 等都安装无误,版本关系都正确,仍是报错,请尝试更新pip
死马当活马医,我也想试一下(好像哪里不对,现在没有合适的TensorFlow版本呀!我还没安装呢?!!!)
pip install --upgrade pip
引用一博主的:
中间试了很多方法,具体是哪个方法解决了问题我也不知道了(换了tf低版本),最有可能的应该是下面这2种:
1.检查 /usr/local/cuda-10.0/lib64 下是否有 libcublas.so.10.0如果有, 终端输入:sudo ldconfig /usr/local/cuda-10.0/lib64
2.pip install conda
后来又出现了这个问题,用方法一解决了
尝试用
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --upgrade
tensorflow
自动给我安装了tensorflow-2.2.0
但还是不成功
最后的最后……无果,安装什么都没有match的!!!
移除环境重新来,创建了
tf35 python=3.5
再用
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow
爱安装啥安装啥吧?!
自动给安装的是xxx
然后再继续过一遍之前的步骤。
最后尝试跑一个demo在/home/qh/anaconda3/envs/tf35/models/research
路径下运行输入jupyter notebook,系统会自动打开网页,然后选择object_detection模块,点进去/object_detection/object_detection_tutorial.ipynb
点击run all。
然后报错(由于不是tensorflow2.x版本,第一项就报错,但我给注释掉了昂~)
再接下来又报错:
TypeError: load() missing 2 required positional arguments: ‘tags’ and ‘export_dir’
我再卸掉好了
然后再装,就是要死磕!
结果:
前面不行,后面自动也给我这个版本了唔~!!!好气
昂~好吧,看在你安装好啦的份上!!!我继续
然后又是遇到一堆问题!
比如给models加入了环境变量还是import slim失败:
但是但是!结果出来了!
这大概就是坚持就是胜利吧!
本篇 苦逼 教程就酱紫结束了吧,虽然很艰难,但出来图像了本小白还是敲开心!(尽管对大神来说根本不算什么……)
下一步:尝试开始训练新的模型,尝试做数据准备。下期见~