参照两位的博客
http://caffe.berkeleyvision.org/ 官网
http://blog.csdn.net/u013476464/article/details/38071075 caffe+ubunutu14.04 +cuda 6.5 安装指南
http://blog.csdn.net/bebelemon/article/details/25567239 ubuntu12.04下配置caffe
http://www.mintos.org/config/ubuntu-nvidia-prime.html(对于ubuntu14.04的话很重要)
error while loading shared libraries: xxx.so.x"错误的原因和解决办法
前前后后装了有20+遍系统,今天终于把caffe搞定了。推荐ubuntu12.04+cuda(5.0,5.5或6.0的版本)+mkl+opencv+caffe
显卡驱动可以不装,cuda的.run文件只安装toolkit和sample即可,程序以后只用cpu运行,且只能运行不含GPU的sample,配置文件会有一个CPU与GPU的选择
http://developer.nvidia.com/cuda-gpus这个网站查看你是否有支持gpu的显卡
前提
执行下面的操作,然后验证硬件支持GPU CUDA,只要型号存在于https://developer.nvidia.com/cuda-gpus,就没问题了 lspci | grep -i nvidia
ubnutu12.04下显示:
NVIDIA Corporation GF119M [GeForce 610M]
gcc --version
没有的话就先安装吧,这个是必须的用来编译CUDA Toolkit,不然安装显卡驱动的时候会出现问题,不过Ubuntu 是默认有的,ubuntu系统推荐安装英文的。
(如果是新装的ubuntu,记得update后换源)
1,安装cuda
下载官方cuda-toolkit,https://developer.nvidia.com/cuda-downloads,
将下载的.run安装文件放到home/yjy/下,yjy是我的用户名。
Mouveau跟Nvidia模块冲突,所以要把Nouveau给禁用了
sudo gedit /etc/modprobe.d/blacklist.conf
在blacklist.conf中添加黑名单内容:
blacklist lbm-nouveau
blacklist nvidia-173
blacklist nvidia-96
blacklist nvidia-current
blacklist nvidia-173-updates
blacklist nvidia-96-updates
alias nvidia nvidia_current_updates
alias nouveau off
alias lbm-nouveau off
之后进入文本模式TTY,CTRL+ALT+FN+F1,
(卸载已经安装过的驱动: sudo apt-get remove --purge nvidia*,重装的系统就不要执行这一步了,这个操作有可能会导致黑屏,进不了桌面系统。couldnot write bytes:Broken pipe有可能也是它引起的)
然后关闭Lightdm
sudo stop lightdm
然后进入yjy文件夹下看一下安装文件的权限
yjy@yjy-ThinkPad:~$ ls
若显示的.run文件名为白色,则给其赋执行权限
sudo chmod +x cuda_6.0.37_linux_64.run
执行.run文件
sudo ./cuda_6.0.37_linux_64.run
安装完成后,启动lightdm
sudo start lightdm
有可能只有桌面,没有左侧的菜单栏,
这时再进文本模式重启即可 sudo reboot
安装过程中会提示Missing recommend library,则重新启动后必须要安装
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
cuda验证
cd /home/yjy/NVIDIA_CUDA-6.0_Samples
make
cd bin/x86_64/linux/release
./deviceQuery
2,MKL安装
MKL下载申请: https://software.intel.com/en-us/intel-education-offerings,会发一个邮件给你下载链接,可以下载试用版本,放在HOME文件夹。(序列号NBJN-JH2S8X57)SKCG-2GD76CVG
解压缩后,若没有权限的话,加执行权限(方法同cuda相同):
开始安装:
sudo ./install_GUI.sh
3,:MKL与CUDA的环境设置
直接在/etc/ld.so.conf.d文件夹中添加配置文件的,添加完之后直接输入即可完成lib的链接工作。
新建intel_mkl.conf,然后里面写上:
/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64
新建cuda.conf,里面内容是:
/usr/local/cuda/lib64
/lib
sudo ldconfig -v
4:OPENCV安装
首先先下载大神脚本https://github.com/jayrambhia/Install-OpenCV,继续放在HOME中。
sudo ./dependencies.sh
由于习惯性使用2.4.8,所以进入2.4文件夹,然后执行对应的安装文件,然后就安装完成了。
sudo ./opencv2_4_8.sh
中间若出现http://sourceforge.net/projects/opencvlibrary 一直链接不上的话,就说明环境已经将该网站地址屏蔽掉了。
方案是拷贝一个已经安装好的把OpenCV-2.4.8.zip(我的是2.4.8)先放在你桌面上,然后执行下面操作 放到/home/yjy/Install-OpenCV-master/Ubuntu/2.4/OpenCV/ 中,
sudo mv /home/yjy/Desktop/OpenCV-2.4.8.zip /home/yjy/Install-OpenCV-master/Ubuntu/2.4/OpenCV/
在2.4文件夹下新建aa.sh文件,首行写入cd OpenCV
在opencv2_4_8.sh 中找到echo "Installing OpenCV 2.4.8",从这一行到最后的全部内容拷贝到aa.sh中。接下来运行aa.sh即可完成安装。
sudo ./aa.sh
下载地址是https://google-glog.googlecode.com/files/glog-0.3.3.tar.gz,然后将解压后的glog-0.3.3放于主目录文件夹:
./configure
sudo make
sudo make install
安装其他依赖项:一个都不能少
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev
6、安装Caffe并测试,https://github.com/BVLC/caffe
切换到Caffe的下载文件夹,然后执行:
cp Makefile.config.example Makefile.config
修改新生成的Makefile.config文件,修改“BLAS := mkl”,
修改Makefile文件,将BLAS ?= atlas修改为BLAS ?= mkl,不然后面编译会报错(如下面红色字体部分)。
make allmake test
make runtest
/usr/bin/g++ src/caffe/solver.cpp -pthread -fPIC -DNDEBUG -O2 -I/usr/local/include/python2.7 -I/usr/local/lib/python2.7/dist-packages/numpy/core/include -I/usr/local/include -Ibuild/src -I./src -I./include -I/usr/local/cuda/include -c -o build/src/caffe/solver.o
In file included from ./include/caffe/util/math_functions.hpp:12:0,
from src/caffe/solver.cpp:13:
./include/caffe/util/mkl_alternate.hpp:13:19: fatal error: cblas.h: No such file or directory
compilation terminated.
出错例子
7、使用MNIST数据集进行测试
Caffe默认情况会安装在$CAFFE_ROOT,就是解压到那个目录,例如:$ home/yjye/caffe-master。具体设置请参考官网: http://caffe.berkeleyvision.org/gathered/examples/mnist.html
数据预处理
具体操作如下:
cd $CAFFE_ROOT
./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.sh
重建LDB文件,就是处理二进制数据集为Caffe识别的数据集,以后所有的数据,包括jpg文件都要处理成这个格式
cd examples/mnist
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
将mnist数据集转化为leveldb文件,生成mnist-train-leveldb/ 和 mnist-test-leveldb/文件夹
../../build/examples/mnist/convert_mnist_data.bin: error while loading shared libraries: libglog.so.0: cannot open shared object file: No such file or directory
sudo su
cat /etc/ld.so.conf
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig
训练mnist
cd examples/mnist
./train_lenet.sh
在运行最后一步时出错
yjy@ThinkPad:~/caffe-master/examples/mnist$ ./train_lenet.sh
../../build/tools/train_net.bin: error while loading shared libraries: libmkl_rt.so: cannot open shared object file: No such file or directory。
后来发现此文件在/opt/intel/mkl/lib/intel64/ 中,要将此路径加入共享文件库
参照http://blog.chinaunix.net/uid-26212859-id-3256667.html
# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
# echo "/opt/intel/mkl/lib/intel64/" >> /etc/ld.so.conf
# ldconfig
即可。最终结果附图
新版的caffe要增加一些东西
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev
ubuntu12.04下增加
# glog
wget https://google-glog.googlecode.com/files/glog-0.3.3.tar.gz
tar zxvf glog-0.3.3.tar.gz
cd glog-0.3.3
./configure
make && make install
# gflags
wget https://github.com/schuhschuh/gflags/archive/master.zip
unzip master.zip
cd gflags-master
mkdir build && cd build
export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1
make && make install
# lmdb
git clone git://gitorious.org/mdb/mdb.git
cd mdb/libraries/liblmdb
make && make install
ubuntu14.04下增加
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler