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