TensorFlow版本的Faster-rcnn https://github.com/smallcorgi/Faster-RCNN_TF
说明:以前自己写过一篇环境配置的文章,但是现在遇到新的问题,驱动一直安装不上。这和Ubuntu的内核有关。所以在此重新写了一篇。 环境:Ubuntu16.04 内核4.13
显卡:GTX1050Ti 2G
英伟达显卡和cuda相关安装文档:
https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#abstract
http://us.download.nvidia.com/XFree86/Linux-x86_64/390.59/README/installdriver.html#OtherFeaturesOfd7638
http://wiki.ubuntu.org.cn/index.php?title=NVIDIA&variant=zh-cn
https://wiki.gentoo.org/wiki/NVidia/nvidia-drivers
一、Ubuntu内核版本降级
1、查看已安装内核:
sudo dpkg --get-selections |grep linux-image
示例:
linux-image-4.4.0-21-genericinstall linux-image-4.4.0-66-generic deinstall linux-image-4.4.0-70-generic deinstall linux-image-4.4.0-71-generic install linux-image-4.4.0-72-generic install
2、查看当前使用内核版本
uname -r
如果显示:4.13.0-36-generic
3:删除内核
tip:删除当前版本重启会使用低一级的已安装内核,如果是最后一个内核版本删除之后重启会进入BIOS界面
sudo apt-get remove linux-image-4.4.0-75-generic4:升级/安装内核
sudo apt-get install linux-image-4.4.0-75-generic
上面的命令是在线安装,也可以手动下载内核后,安装内核。看这篇文章:https://blog.csdn.net/ytusdc/article/details/79675410
5、安装内核头文件
sudo apt-get install linux-headers-$(uname -r)查看内核头文件,
dpkg-query -s linux-headers-$(uname -r)
参考链接:1、http://blog.sina.com.cn/s/blog_413d250e0102xaoc.html
2、http://blog.sina.com.cn/s/blog_16b01ecd40102xkrf.html
二、安装显卡驱动
1、禁用nouveau驱动,参看以前写的文章。
寻找合适的驱动版本
ubuntu-drivers devices
2、安装显卡驱动,基本过程一致,但是在安装run文件时有些不同。
sudo ./NVIDIA-Linux-x86_64-384.59.run –no-opengl-files
- --no-opengl-files:表示只安装驱动文件,不安装OpenGL文件。这个参数不可省略,否则会导致登陆界面死循环,英语一般称为”login loop”或者”stuck in login”。
- –no-x-check:表示安装驱动时不检查X服务,非必需。
- –no-nouveau-check:表示安装驱动时不检查nouveau,非必需。
- -Z, --disable-nouveau:禁用nouveau。此参数非必需,因为之前已经手动禁用了nouveau。
- -A:查看更多高级选项。
必选参数解释:因为NVIDIA的驱动默认会安装OpenGL,而Ubuntu的内核本身也有OpenGL、且与GUI显示息息相关,一旦NVIDIA的驱动覆写了OpenGL,在GUI需要动态链接OpenGL库的时候就引起问题。
nvidia-smi 查看显卡是否安装成功,我的nvidia-settings命令始终报错,但是其他正常,只是电脑不能调节亮度
三、安装cuda
sudo ./cuda.run --no-opengl-libs
--no-opengl-libs:表示只安装驱动文件,不安装OpenGL文件。必需参数,原因同上。注意:不是-no-opengl-files。
--uninstall (deprecated):用于卸载CUDA Driver(已废弃)。
--toolkit:表示只安装CUDA Toolkit,不安装Driver和Samples。
--help:查看更多高级选项。
cudnn配置安装参见另一篇文章。
四、安装TensorFlow
具体安装时少什么安装什么。
安装TensorFlow,注意这里安装的事1.4版本的,因为我们用的cuda版本是8.0的,1.5以上版本的TensorFlow需要cuda9.0.
sudo pip install tensorflow-gpu==1.4 # 安装1.4版本的 sudo pip install tensorflow-gpu # 默认安装的事最新版本的
遇到的问题:
1、安装TensorFlow时会提示更新pip,pip更新到10版本之后,安装命令会报以下错误
错误: ImportError: cannot import name ‘main‘
找到这个pip文件做以下更改,cd /usr/bin,具体位置根据报错修改,把
from pip import main if __name__ == '__main__': sys.exit(main())
改为:
from pip import __main__ if __name__ == '__main__': sys.exit(__main__._main())
2、问题描述: error while loading shared libraries: libcudart.so.8.0: cannot open shared object file: No such file or directory
解决办法:
先试一下命令
sudo ldconfig /usr/local/cuda/lib64如果依然报错,则执行下面的命令后,再执行一遍这个命令
首先确认/etc/profile中的路径包含了cuda8.0的安装路径及相应的库文件
export PATH=$PATH:/usr/local/cuda-8.0/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64 export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda-8.0/lib64
使配置文件生效:
source /etc/profile
若仍提示相同的错误,则执行以下命令,将相应的库文件复制到/usr/lib
sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig sudo ldconfig /usr/local/cuda/lib64 #执行命令
ldconfig命令是一个动态链接库管理命令,是为了让动态链接库为系统共享
TensorFlow 安装完成后,安装faster-rcnn报错
1.编译过程中 nsync_cv.h:No such file or directory,使用python虚拟环境会存在该问题。
解决:根据提示路径找到mutex.h文件,修改其中代码
#include "nsync_cv.h" #include "nsync_mu.h"
改为
#include "external/nsync/public/nsync_cv.h" #include "external/nsync/public/nsync_mu.h"再打开lib文件夹下的make.sh文件添加下述内容,重新编译即可
NSYNC_INC=$TF_INC"/external/nsync/public"
2.运行demo过程中遇到的错误
undefined symbol: _ZTIN10tensorflow8OpKernelE
这个问题卡得最久,因为make.sh文件中缺少了TF_LIB编译参数,还需要添加 -D_GLIBCXX_USE_CXX11_ABI=0
解决:
(1)修改make.sh添加TF_LIB,并修改相应的编译参数
TF_LIB=$(python-c 'import tensorflow as tf; print(tf.sysconfig.get_lib())')
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
4.缺少yaml库
查了网上的方法,都是这样的sudo apt-get install python-yaml我试了,但是在虚拟环境中还是无法import,最后直接下载库,手动安装。注意,是在虚拟环境中,通过pythonsetup.py install 进行安装。
yaml 下载地址 http://pyyaml.org/download/pyyaml/PyYAML-3.12.tar.gz
参考链接:
https://www.cnblogs.com/danpe/p/7825357.html
https://blog.csdn.net/zhongxinleishi/article/details/78972944