SSD(based on Caffe)环境配置

  之前在自己的笔记本上配置过caffe,实在是费了老劲。仍记得无数次呆呆的坐在电脑前,读着terminal中的报错信息,各种百度各种谷歌,一点一点的配置环境实在是太痛苦了。不过好在之前跌跌撞撞的配置成功了,可以干活了。然而最近悲催的发现,原来笔记本上的显卡内存太小,运行SSD的demo会内存爆炸,所以没法再撑下去了。去年夏天在宿舍配了一套台式机,本来想着用来打游戏的(装了GTX1060的卡),现在形势所迫,只能先用这台游戏机来干活了。摆在眼前的一件痛苦的事就是,所有的环境都要重新配置一遍,虽说之前鼓捣过一回,但是其实早就忘了,这次又要重新来过,将来单位里上了新的机器,肯定避免不了还要再配置环境。于是决定把配置过程记录下来,一来可以用做将来配置环境的依据,二来也可以给其他朋友一些参考。
  交代一下机器的情况。Ubuntu14.04系统,显卡只有一个是GTX1060的卡,64位系统。配置目标:github上copy下来weiliu89大神的SSD代码能够跑通demo。
#一、Opencv
  用caffe的话基本都要装好opencv,而且根据我的经验,先装opencv,然后在编译caffe更稳,之前曾经先编译了caffe然后再装opencv,出过毛病,后来又翻过头来重弄的,这次长记性了。
  opencv我用的是源码安装,源码我传到百度云了,http://pan.baidu.com/s/1i4PfksH。需要注意的是这是opencv3,caffe编译的时候不能有opencv2和opencv3同时存在,而ubuntu14.04好像默认安装了opencv2,所以装opencv3之前先把opencv2给卸载掉。在terminal中运行即可卸载:

sudo apt-get autoremove libopencv-dev

然后开始装opencv3
先装第三方环境

sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

假设文件下载并解压到HOME目录,然后编译opencv。cmake过程要开着vpn,因为中间会下载一些墙外的包。

cd opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules/ -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install

然后再把连接库的路径添加一下,把/usr/local/lib的路径加到/etc/ld.so.conf中,opencv就装好了。
#二、CUDA8.0
  用的是nvidia的卡,必须得装cuda,最新的cuda是8.0版本的。要根据自己的gpu型号去下载相应版本的cuda,cuda 的安装方式主要有deb、runfile两种,之前deb装跪过一次,所以选runfile。可以去nvidia的官网上下载cuda8.0的runfile安装文件。下完了chmod一下文件的属性,改成可执行文件。然后开始装cuda。
1、禁用掉ubuntu的nouveau,这玩意会和nvidia的卡冲突,先把它干掉,新建文件/etc/modprobe.d/blacklist-nouveau.conf

blacklist nouveau
options nouveau modset=0

2、重新生成kernel initramfs

sudo update-initramfs -u

3、重启系统,然后Ctrl+Alt+F1进入命令行模式,登录后,执行:

sudo service lightdm stop(关掉桌面服务)

4、下面这一步非常重要!一定要注意!!不注意的话就等着eat shit了!!
要先看好自己的电脑显卡情况,主要分两种。
(1)只有一块独立显卡(nvidia 的卡,也就是你将来要用做并行计算的gpu),少部分笔记本和大部分台式机都是这样的硬件配置。直接执行:

sudo ./cuda_8.0.44_linux_ubuntu_14.04.run(这个就是你下载的cuda8.0的runfile文件名)

然后进去安装,按照安装向导各种accept、yes就行了。
装完了重启桌面服务就可以登录图形界面了。

sudo service lightdm start

(2)独立显卡(nvidia 的卡,也就是你将来要用做并行计算的gpu)+集成显卡,现在一般的笔记本都是这种情况,这样的显卡配置,在ubuntu系统中一般是集成显卡用作显示(如果你没特别设置过显卡,那么装了ubuntu系统就是集成显卡做显示),装cuda时要加一条命令(–no-opengl-libs),没有这条命令,cuda安装时会覆盖原来集成显卡的opengllibs,导致你卡在图形界面的用户名密码登录环节,循环登录永远进不了系统,执行:

sudo ./cuda_8.0.44_linux_ubuntu_14.04.run --no-opengl-libs

然后进去安装,按照安装向导各种accept、yes就行了。
装完了重启桌面服务就可以登录图形界面了。

sudo service lightdm start

不管是第(1)种情况还是第(2)中情况,成功装完了cuda还要设置一下cuda和cuda库文件的路径。这部分参考cuda安装过程的最后一步,在cuda安装成功还没有退出命令行模式的时候,有这么两句话:
Please make sure that
-PATH includes /usr/local/cuda-8.0/bin
-LD_LIBRARY_PATH includes /usr/local/cuda-8.0/lib64,按照这两个要求设置路径就完事了。cuda装好了。
#三、cuDnn库
  cuDnn库是nvidia开发的专门优化深度学习函数的库,不管用什么深度学习框架这个库都要装,不装代码得不到并行优化,计算会很慢。这个库装起来比较简单,最新的是cuDnn v5,去nvidia官网下载解压,里面有俩文件夹,一个是include文件夹,一个是lib文件夹。把include文件夹里的东西copy到/usr/local/cuda/include(也就是你的cuda安装路径里的include文件夹),把lib文件夹里的东西copy到/usr/local/cuda/lib64(也就是你的cuda安装路径里的lib64文件夹)。然后还没完,还要创建软连接。

cd /usr/local/cuda/lib64
sudo rm -rf libcudnn.so.5 libcudnn.so
sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5
sudo ln -s libcudnn.so.5 libcudnn.so

然后cuDnn就装好了。
#四、下载并编译caffe-ssd
  终于可以开始编译caffe了。首先先膜一些weiliu89大神,感谢他们的创作的ssd方法,造福人类,解救我于水火之中。
(1)、去git上下载ssd源码,地址:https://github.com/weiliu89/caffe/tree/ssd,参考github上的installation就可以将代码copy到本地。
(2)、升级gcc、g++编译工具。ssd的编译需要gcc和g++编译工具升级到v5,所以先升级。这里提供一种升级方法,要翻墙。

sudo add-apt-respository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-5 g++-5

安装好了gcc-5和g+±5后,再去删除旧的可执行程序,并换成v5的可执行程序。

cd /usr/bin
sudo rm -rf g++ gcc
sudo ln -s g++-5 g++
sudo ln -s gcc-5 gcc

(3)按照caffe的官方tutorial,先配置环境,具体参考:
http://caffe.berkeleyvision.org/install_apt.html
(4)编译caffe(ssd),假设从github上copy下来的caffe放在了主文件夹。

cd ~/caffe
mkdir build
cd build
cmake ..
make all
make install

顺利的话就大功告成,完成了caffe(ssd)的编译,你就可以做各种事情了。但是一般来讲都不会这么顺利,因为编译的过程中需要一些第三方的库,这些库零零散散,而且你的ubuntu系统之前可能因为编程或者干嘛的装过一些,有的人装了有的人没装,乱起八早所以没有统一总结,解决的方法是根据报错的情况,如果读的懂报错的代码就去按照报错debug,如果读不懂就干脆把关键的报错信息百度,然后会得到相应的解答。一般都是因为确实各种各样的库而报错。这里我总结了两个最常见的报错,也是我新装了ubuntu系统并且按照上述教程一直装到现在,编译之后报的两个错误。
!!!第一个,报错“No module named google.protobuf.internal blablabla”,意思就是没找到google.protobuf这个模块,注意这里说的是python的google.protobuf模块,跟我们之前装的protobuf不是一回事(我也不知道为什么python还要单独用这个模块,反正weiliu89大神是用到python编译的),那就装一下就好了。

sudo apt-get install python-protobuf

!!!第二个,报错“No module named skimage.io blablabla”意思就是没找到skimage.io这个模块,没找到那就装。

sudo apt-get install python-skimage

我遇到的就这两个报错,弄好了之后就OK了~但是以我对caffe这个尿性框架的了解,之后在实际工作的时候,可能还会有别的错误,不是说你一开始编译通过了就一定没问题了,可能有些问题你在编译的时候是没碰到所以没被发现而已,这样的错误就只能碰到的时候再办了,caffe就这个德行,第三方的依赖太多,这是它的缺点。
  一篇流水账完成!第一次写这么长的博客,写的不好请见谅,关键是把事讲清楚了就可以,希望以后不会再在配置环境上耽误工夫,也希望能够帮到一些linux、caffe的初学用户,毕竟对着电脑发呆的日子我也经历过,那滋味太难受。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值