Faster R-CNN搭建复现Ubuntu16.04

Faster R-CNN搭建复现

本平台环境参数:

gpu:GTX 1050 Ti(mobile)
cpu:intel i7-7700HQ
内存:16GB
Ubuntu版本:16.04
NVIDIA驱动版本:440
cuda版本:cuda_9.0.176_384.81_linux
cudnn版本:cudnn-9.0-linux-x64-v7.6
TensorFlow版本:tensorflow-gpu-1.8.0

安装顺序

1.在Windows下安装Ubuntu双系统(因之前YOLOv3中已经装过几遍,这里省略)
2.安装NVIDIA驱动(v384)
3.安装CUDA并配置CUDnn
4.安装TensorFlow
5.安装Faster R-CNN

安装NVIDIA驱动

a. 查看gpu和推荐的驱动版本ubuntu-drivers devices
b. 选择自动安装驱动sudo ubuntu-drivers autoinstall,重启后在系统详细信息中可以看到识别到独立显卡
c.输入以下指令进行验证:nvidia-smi,若列出了GPU的信息列表则表示驱动安装成功

安装CUDA 9.0

1.下载CUDA
进入CUDA官网 https://developer.nvidia.com/cuda-downloads 下载CUDA安装包,我选择的是CUDA 9.0,即cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb。
2.安装CUDA
进入CUDA安装包所在目录,执行如下命令进行安装:

sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda

3.配置CUDA
修改配置文件~/.bashrc,把与CUDA相关的配置内容写入到文件尾部:

export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:/usr/local/cuda-9.0/extras/CUPTI/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

4.验证CUDA是否安装成功
使用命令:
nvcc -V 可确认CUDA程序是否正常运行
或:

cat /usr/local/cuda/version.txt 

查看cuda版本

安装cudnn

1.下载cudnn
进入cudnn官网 https://developer.nvidia.com/cudnn 注册登录后,下载cudnn 7.6 for CUDA 9.0
2.安装cudnn
进入cudnn 7.6 for CUDA 9.0文件所在的目录,执行如下命令安装:

cd ~/cudnn
sudo dpkg -i libcudnn7_7.6.0.64-1+cuda9.0_amd64.deb 
sudo dpkg -i libcudnn7-dev_7.6.0.64-1+cuda9.0_amd64.deb 
sudo dpkg -i libcudnn7-doc_7.6.0.64-1+cuda9.0_amd64.deb

(作者选用另一种方法,解压包的方法解决了缺少cudnn.h的问题)
3.验证cudnn是否安装成功
使用命令:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

ubuntu16.04中默认安装了python2.7,通过以下命令查看python版本:

python -V

##安装tensorflow
1.将pip服务器更换为国内的镜像服务器
本次使用pip进行安装tensorflow
修改 ~/.pip/pip.conf (没有就创建一个):

mkdir ~/.pip
vi ~/.pip/pip.conf

添加内容如下:

[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com

2.使用python 2.7安装tensorflow-gpu 1.8.0
#如果本机未安装python和pip,则安装之

sudo apt-get install python-pip python-dev

更新pip

sudo pip install -U pip

安装tensorflow-gpu 1.8.0

sudo pip install tensorflow-gpu==1.8.0

3.验证tensorflow-gpu 1.8.0是否安装成功
执行如下命令:

python -c "import tensorflow as tf; print(tf.__version__)"

输出结果:

1.8.0

表明安装成功。

安装依赖库

apt-get install cython python-opencv python-tk python-scipy python-yaml 
pip install easydict 
pip install matplotlib

至此环境搭建完成

代码下载

本人本次使用的为https://github.com/smallcorgi/Faster-RCNN_TF,可通过以下代码直接下载:

git clone --recursive https://github.com/smallcorgi/Faster-RCNN_TF.git

更新GPU的架构配置

cd Faster-RCNN_TF/lib
vim setup.py

如上,进入lib目录下,在setup.py文件中找到 -arch 这个参数,改成自己的GPU架构。本人1050Ti,因此将 -arch改为sm_61。
大家可以通过nvidia-smi查看自己电脑的GPU配置。

Faster R-CNN搭建复现Ubuntu16.04_第1张图片

链接cython 模块

cd Faster-RCNN_TF/lib
make

下载测试模型(尽量在Win上下载好)
下载在PASCAL VOC 2007上训练的模型进行demo测试
下载地址:https://drive.google.com/file/d/0ByuDEGFYmWsbZ0EzeUlHcGFIVWM/view
或 https://www.dropbox.com/s/cfz3blmtmwj6bdh/VGGnet_fast_rcnn_iter_70000.ckpt?dl=0

模型下载好后,将其(VGGnet_fast_rcnn_iter_70000.ckpt)放在Faster-RCNN_TF/demo_model/目录下

运行demo
运行demo.py文件

cd Faster-RCNN_TF
export CUDA_VISIBLE_DEVICES=n(n为可用的gpu编号)
python ./tools/demo.py --model demo_model/VGGnet_fast_rcnn_iter_70000.ckpt

1.运行demo过程中遇到的错误一
错误:ensorflow.python.framework.errors.NotFoundError: /home/Projects/Faster-RCNN_TF/tools/…/lib/roi_pooling_layer/roi_pooling.so: undefined symbol: _ZTIN10tensorflow8OpKernelE

分析:因为make.sh文件中缺少了TF_LIB 编译参数,还需要添加 -D_GLIBCXX_USE_CXX11_ABI=0
解决:

vim cd Faster-RCNN_TF/lib/make.sh

(1) 修改 make.sh文件添加TF_LIB,并修改相应的编译参数
TF_LIB=$(python -c ‘import tensorflow as tf; print(tf.sysconfig.get_lib())’)

if [ -d “$CUDA_PATH” ]; then
nvcc -std=c++11 -c -o roi_pooling_op.cu.o roi_pooling_op_gpu.cu.cc
-I $TF_INC -D GOOGLE_CUDA=1 -x cu -Xcompiler -fPIC $CXXFLAGS
-arch=sm_37

    g++ -std=c++11 -shared -o roi_pooling.so roi_pooling_op.cc -D_GLIBCXX_USE_CXX11_ABI=0 \
            roi_pooling_op.cu.o -I $TF_INC -L $TF_LIB -ltensorflow_framework -D GOOGLE_CUDA=1 \
            -fPIC $CXXFLAGS -lcudart -L $CUDA_PATH/lib64

else
g++ -std=c++11 -shared -o roi_pooling.so roi_pooling_op.cc
-I $TF_INC -fPIC $CXXFLAGS

(2)重新make,然后运行

2.运行demo过程中遇到的错误二
错误:InternalError: Dst tensor is not initialized.

分析:出现这个错误一般是GPU内存耗尽,挂在后台进程中的IPython内核会这样做,tensorflow 算是一个比较贪心的工具了就算用device_id指定gpu 也会占用别的GPU的显存资源。

解决办法:运行程序之前,先运行export CUDA_VISIBLE_DEVICES=n(n为可用的gpu编号),仅显卡设备 n 这一台GPU可见,然后再去执行Python代码 .py 才不会占用别的GPU资源。

https://blog.csdn.net/qq_29370449/article/details/91447781

你可能感兴趣的:(python,tensorflow)