ubuntu 14.04+ GTX 1070+cuda 8.0 + cudnn 5.1+opencv3.0的安装参见我前两篇博客,详细介绍了!
本文重点为caffe的安装与配置细节
1、安装caffe前,安装依赖项和各种库
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libatlas-base-dev libgflags-dev libgoogle-glog-dev liblmdb-dev libboost-all-dev
2、安装caffe需要的python包
网上介绍用现有的anaconda,我反正不建议,因为路径设置麻烦,很容易出错,而且自己安装很简单也挺快的。
首先需要安装pip
sudo apt-get install python-pip
再下载caffe,我把caffe放在用户目录下
sudo apt-get install git
git --version
git clone https://github.com/BVLC/caffe.git
再转到caffe的python目录,安装scipy
cd caffe/python
sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
最后安装requirement里面的包,需要root权限
sudo su
for req in $(cat requirements.txt)
do pip install $req
done //回车键
如果提示报错,一般是缺少必须的包引起的,直接根据提示pip install <package-name>就行了
安装完后退出root权限
exit
3、编译caffe
cd ~/caffe cp Makefile.config.example Makefile.config gedit Makefile.config
这里仅需要修改两处:
# USE_CUDNN := 1 //取消注释
# OPENCV_VERSION := 3//取消注释
make all -j8
make test
make runtest
make pycaffe
在make all -j8 时,
出现错误/usr/bin/ld: 找不到 -lhdf5_hl /usr/bin/ld: 找不到 -lhdf5
然后sudo apt-get install libhdf5-dev sudo apt-get install libhdf5-serial-dev都显示已经最高版本。但在计算机里搜索不到libhdf5.so以及libhdf5_hl.so,然后去官网https://launchpad.net/ubuntu/+source/hdf5/下载libhdf5-dev libhdf5-serial-dev,然后在/usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5.so里面找到,所以,执行以下:
sudo cp /usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5.so /usr/lib/
sudo cp /usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5_hl.so /usr/lib/
make clean
make all -j8
出现错误/usr/bin/ld:cannot find -lopencv_imgcodecs
参见http://blogs.csdn.net/jideljd_2010/article/details/38046901这位大神的博文得到灵感
解决方法:在计算机里搜索libopencv_imgcodecs 的文件,发现有4个相关文件在/home/shan/opencv-3.0.0/build/lib/里,复制移动
sudo cp /home/shan/opencv-3.0.0/build/lib/libopencv_imgcodecs.so /usr/lib/
sudo cp /home/shan/opencv-3.0.0/build/lib/libopencv_imgcodecs.so.3.0 /usr/lib/
sudo cp /home/shan/opencv-3.0.0/build/lib/libopencv_imgcodecs.so3.0.0 /usr/lib/
sudo cp /home/shan/opencv-3.0.0/build/lib/libopencv_imgcodecs_pch_dephelp.a /usr/lib/
在解决的过程中结合了http://blog.csdn.net/w113691/article/details/77942408这位大神的博文
先将Makefile.config文件中
OPENCV_VERSION :=3 注释掉,只修改USE_OPENCV := 1
修改后的结果:
USE_OPENCV := 1
#OPENCV_VERSION := 3
在caffe根目录下,找到Makefile文件,打开文件
查找“Derive include and lib directories”一节,修改“LIBRARIES +=”的最后一行(LIBRARIES +=opencv_imgcodecs ),增加opencv_imgcodecs
opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
(此时应该变为LIBRARIES += opencv_imgcodecs opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs)
保存,退出。
成功解决!
make test 没问题
在make runtest时,出现错误
问题描述: error while loading shared libraries: libcudart.so.8.0: cannot open shared object file: No such file or directory
解决办法:首先确认/etc/profile中的路径包含了cuda8.0的安装路径及相应的库文件
sudo gedit /etc/profile
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
成功解决!
运行make pycaffe
在成功编译caffe的源码之后,可以在python环境中使用caffe。
在Ubuntu环境下,打开python解释程序,输入import caffe时:出现以下错误
>>>import caffe
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named caffe
解决办法:
sudo gedit ~/.bashrc
写入
export PYTHONPATH=~/caffe/python:$PYTHONPATH
source ~/.bashrc
生效后在新终端重新输入import caffe时:无任何输出,证明无错误
至此,全部安装完成!!!!
测试:
caffe测试,执行以下命令:
cd ~/caffe
sudo sh data/mnist/get_mnist.sh
sudo sh examples/mnist/create_mnist.sh
最后测试:
sudo sh examples/mnist/train_lenet.sh
运行成功!