最近学习深度学习的内容,做行人检测。于是在ubuntu16.04 kylin版本安装了caffe +cuda8+cudnn+matlab+opencv,虽然每一次登陆图形界面都会报错,发送错误报告什么的,但是关掉就可以正常使用。跑完手写体识别mnist的卷积神经网络的学习后,想用matlab接口调用caffe,但是,在这过程中不知道动了什么配置,再登陆ubuntu后就出现了无限循环登陆界面的问题。大概记得错误是can not connect to x service ? 一开始不知道,后来发现应该就是和ubuntu图形界面显示有关,就是说显卡出问题了
查阅网上各种博客论坛,在Ctrl+Alt+F1的命令行界面编译了半天,始终没用解决办法。
(其实按照我后来的了解,我觉得卸载nvida驱动,恢复ubuntu自带的驱动应该就好用,可以先试试)
apt-get autoremove --purge nvidia-* //卸载nvidia驱动
vim /etc/modprobe.d/blacklist.conf 删除nouveau //把nouveau从黑名单删除。
如果不行,想恢复nouveau驱动,详细 参考:http://blog.csdn.net/caspiansea/article/details/419 。
但是这种方法我并没有解决重复登陆界面的问题,于是重装了ubuntu系统,按照这篇博客
http://www.linuxidc.com/Linux/2016-07/132860.htm //装 caffe 参考1
一步步来,看着电视剧等安装结束,安装完显卡,理所当然重新启动,结果。。。再一次循环登陆界面。 于是再次重装系统,这次看着他安装。发现安装nvidia的时候,会出现 unable build xxx kernel (好想说的是无法在xx内核上建立)的错误。 装完后重启就无限登陆界面循环。网上一查 下面这篇博客讲的就是解决显卡安装循环登陆界面的问题,但是不适合我。
http://www.linuxdiyf.com/linux/26370.html //nvidia显卡安装,循环登陆界面解决办法1
1.cuda+nvidia显卡驱动+cudnn的安装
再次重装系统,尝试从官网下载 http://www.geforce.cn/drivers 对应显卡驱动linux,在命令行界面安装 或者 用cuda安装自带的显卡驱动,都会出现无法建立的问题,然后循环登陆界面。经过无限次的重装,最后在下面这篇博客上找到办法。
http://blog.csdn.net/enjoyyl/article/details/47397505? // 安装显卡驱动+cuda 的解决办法。
就是说安装显卡驱动前要安装依赖包
sudo apt-get install -y gcc g++ gfortran build-essential \
git wgetlinux-image-generic libopenblas-dev python-dev \
python-pip python-nose python-numpy python-scipy
代码是copy的,加粗部分应该是比较关键点,其它感觉是安装caffe时候的依赖包。 接着,再安装nvidia显卡驱动就应该成功了,不会出现循环登陆的问题。
( 从cuda官网上下载了cuda8 .deb包,直接安装,了cuda8,附带显卡驱动,没有用官网下的nvidia显卡驱动,亲测成功,如果是.run包,安装见下面cudnn的安装参考博客)
至于cudnn的安装,比较简单
http://blog.csdn.net/zbzb1000/article/details/52864131 //装 caffe 参考2
不过,这篇博客中有很多依赖包的空格都没打,直接copy代码会错。
2.matlab+opencv
ubuntu下 matlab安装网上教程很多,直接网上搜把,感觉比windows下快很多。
opencv的安装,参考
http://blog.csdn.net/jhszh418762259/article/details/52957495
特别注意,依赖包一定要先装上
我装的opencv3.1,参照上面的博客,再make 编译大概进度90%的时候遇到了问题
/home/usrname/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp:120:54: error: 'NppiGraphcutState' has not been declared typedef NppStatus (*init_func_t)(NppiSize oSize, NppiGraphcutState** ppStat
参考
http://blog.csdn.net/hit2015spring/article/details/53510909 /opencv 出错参考
进入opencv-3.1.0/modules/cudalegacy/src/目录,修改graphcuts.cpp文件,将:
#include "precomp.hpp"
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
改为
#include "precomp.hpp"
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
然后make编译就可以了
3. caffe 的安装
caffe的安装,参考一些这篇博客
http://blog.csdn.net/xuezhisdc/article/details/48707101
再说一次,依赖包 一定要先安装。
Makefile.config文件中
CPU_ONLY:=1 改成 # CPU_ONLY:=1 是神经网络训练的时候可以用GPU
#USE_CUDNN=1 改为 USE_CUDNN=1 cudnn开启GPU加速功能
在make的过程中,还遇到了 “fatal error: hdf5.h: 没有那个文件或目录” 的问题,参考:
http://blog.csdn.net/xue_wenyuan/article/details/52037121 // 解决hdf5.h: 没有那个文件或目录
http://blog.csdn.net/xiaxiazls/article/details/52039473 //hdf5.h和image xx.bin找不到的问题
到这儿,改完makefile和makefile.config后,这两个文件应该没问题了,继续make -j16。
然后我又报错了
类似 .build_release/lib/libcaffe.so: undefined reference to google ::protobuf...
参考: http://blog.csdn.net/fansetcool/article/details/51569374 //protobuf未定义解决
即博客中的问题三,重新安装第二部的protobuf依赖
我发现诸如此类问题 undefined reference to xxx(某个依赖) 都是因为这个依赖项的问题
虽然在装caffe之前都apt-get过一次了,但是caffe找不到。缺什么就重装什么
apt-get remove xxx.dev //删除依赖
apt-get install xxx.dev //安装依赖
如果这样还不行,那就下载安装包,解压后安装。这次重装 glog、leveldb等 之类的依赖项基本都装了一遍。
注意重装完之后,运行make clean ,再运行 make 。
终于make成功了。然后make matcaffe 、make run、在最后make runtest的时候,又卡住了。
“ xxxxSolverTest/0.TestSnapshotShare, where TypeParam = caffe::CPUDevice”
参考:http://blog.csdn.net/wonengguwozai/article/details/52724409 //make runtest错误问题
参考上面这篇博客,我试了试三种安装解决方法,每次都报错,
SGDSolverTest、AdaGradSolverTest、RMSPropSolverTest都遇到过,而且什么都不改变的情况下的报错都不一样。 最后,参考上面这篇博客的最后一个办法,安装了Boost1.55.0(我原来版本是boost1.58),然后再make runtest,果然 PASSED 了 。太不容易了,写篇文章做个记录,下次再装说不定可以用到。 caffe编译错误总结比较好的博客 http://blog.sina.com.cn/s/blog_721a75e50102wfig.html