首先,官方的参考文献为:http://caffe.berkeleyvision.org/installation.html。
现在开始:
安装一些依赖包(对于gcc与g++编译器,就不多说了,可以apt-get install build-essentital),命令如下:
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler sudo apt-get install --no-install-recommends libboost-all-dev
现在安装cuda,官方网站:https://developer.nvidia.com/cuda-zone:
点击downloads,然后出现下图,我选择的为linux下的x86_64架构下的ubuntu的14.04的runfile(local)安装包:
安装时,参考官方文档http://developer.download.nvidia.com/compute/cuda/7.5/Prod/docs/sidebar/CUDA_Installation_Guide_Linux.pdf,下面说安装步骤(官方一些没有必要的骤没写):
1.确认有一个CUDA-Capable的显卡,可以输入以面命令,会出来一些信息,说明你的显卡符合条件。
lspci | grep -i nvidia此外,还可以通过官方网站 http://developer.nvidia.com/cuda-gpus 来查看你的显卡是否符合。
2,确认系统有正确的内核头文坐件与开发包,直接输入以下命令安装就好啦(系统不一样,命令也不一样,具体看官方文档)
sudo apt-get install linux-headers-$(uname -r)3,我采用的是runfile方式安装:
首先,禁掉linux系统本身自带的显卡驱动 nouveau,方法为在 /etc/modprobe.d/目录下建一个文件名为:blacklist-nouveau.conf,写入一些内容,具体如下:
vim /etc/modprobe.d/blacklist-nouveau.conf写入:
blacklist nouveau options nouveau modeset=执行:
sudo update-initramfs –u其次,以命令行模式重启电脑,对于debian8,进入命令行模式的方法为,输入:
systemctl set-default multi-user.target进入窗口方式的方法为,输入:
systemctl set-default graphical.target好,现在我们用命令行重启电脑了,确认nouveau驱动没有启动,输入以下命令,不出现任何东西哦
lsmod | grep nouveau
好,现在找到我们下载的cuda_7.5.18.linux.run文件,给它可执行权限,安装它(记得用sudo,给它一些安装包写入的权限):
cd 〈cuda_7.5.18.linux.run文件所在的目录下〉 chmod +x cuda_7.5.18.linux.run sudo ./cuda_7.5.18.linux.run
在这个过程中,分问你安装路径,我直接默就好,还会问你是否安装一些包,我除了openGL没有安装,其余都安装了,因为,笔记本有核心显卡,屏幕显示会用核心显卡,如果安装了openGL,可能会出现显示不正常的现像;台式机没事。
下面是device node verification,看看是是否存在 /dec/nvidia*之类的文件和是否有读写权限,如果没有文件,我们自己添加,没有权限,自己改就好,添加方法,看这个脚本文件:
#!/bin/bash /sbin/modprobe nvidia if [ "$?" -eq ]; then# Count the number of NVIDIA controllers found.
NVDEVS=`lspci | grep -i NVIDIA` N3D=`echo "$NVDEVS" | grep "3D controller" | wc -l` NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc -l` N=`expr $N3D + $NVGA - ` for i in `seq $N`; do mknod -m /dev/nvidia$i c $i done mknod -m /dev/nvidiactl c else
exitfi /sbin/modprobe nvidia-uvm if [ "$?" -eq ]; then
# Find out the major device number used by the nvidia-uvm driver D=`grep nvidia-uvm /proc/devices | awk '{print $1}'` mknod -m /dev/nvidia-uvm c $D else
exitfi
现在我们回到图形桌面,方法如上面已说。设置环境变量,我的办法是在.bashrc里添加如下(我的是64位系统,完成后关):
export PATH=/usr/local/cuda-7.5/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH如果32位的话,这样写:
export PATH=/usr/local/cuda-7.5/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib:$LD_LIBRARY_PATH到此安装基本完成,现在一些确认安装成功的验证步骤:
查看安装的驱动信息(注意,对于iGPU/dGPU没作用):
cat /proc/driver/nvidia/version查看CUDA Toolkit的版本,可以输入:
nvcc –V现在,我们运行一下自带的examples,由于我是默认的安装路径,所以,进入~/~/NVIDIA_CUDA-7.5_Samples下,make.命令如下:
cd ~/NVIDIA_CUDA-.5_Samples make完成以后,在~/NVIDIA_CUDA-7.5_Samples/bin/86_64/linux/release路径下(我的是这样的路径),分别运行deviceQuery与
bandwidthTest文件,会分别出现这样的结果(不一定一样,类似):
CUDA Driver Version
/ Runtime Version 7.5 / 7.5
CUDA Capability Major
/Minor version number: 2.1
Total amount of global memory:
MBytes ( bytes) ( ) Multiprocessors, ( ) CUDA Cores/MP: CUDA Cores GPU Max Clock rate: MHz (1.25 GHz) Memory Clock rate: Mhz Memory Bus Width: -bit L2 Cache Size: bytes Maximum Texture Dimension Size (x,y,z) 1D=(), 2D=(, ), 3D=(, , ) Maximum Layered 1D Texture Size, (num) layers 1D=(), layers Maximum Layered 2D Texture Size, (num) layers 2D=(, ), layers Total amount of constant memory: bytes Total amount of shared memory per block: bytes Total number of registers available per block:
Warp size:
Maximum number of threads per multiprocessor:
Maximum number of threads per block:
Max dimension size of a thread block (x,y,z): (
, , ) Max dimension size of a grid size (x,y,z): (, , ) Maximum memory pitch: bytes Texture alignment: bytes Concurrent copy and kernel execution: Yes with copy engine(s) Run time limit on kernels: No Integrated GPU sharing Host Memory: No Support host page-locked memory mapping: Yes Alignment requirement for Surfaces: Yes Device has ECC support: Disabled Device supports Unified Addressing (UVA): Yes Device PCI Domain ID / Bus ID / location ID: / /
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
deviceQuery, CUDA Driver
= CUDART, CUDA Driver Version = 7.5, CUDA Runtime Version = 7.5, NumDevs = , Device0 = GeForce GT 620M Result = PASS
Device to Host Bandwidth,
Device(s) PINNED Memory Transfers Transfer Size (Bytes) Bandwidth(MB/s) 3316.7
Device to Device Bandwidth,
Device(s) PINNED Memory Transfers Transfer Size (Bytes) Bandwidth(MB/s) 13068.0
Result
= PASS NOTE: The CUDA Samples are not meant for performance measurements. Results may vary when GPU Boost is enabled. yinheyi@yinheyi-Aspire-V5-
好啦,cuda安装完成啦。
现在再安装一下GPU Deployment Kit,下载地址:http://developer.download.nvidia.com/compute/cuda/7.5/Prod/local_installers/cuda_352_79_gdk_linux.run ,安装方法与上面一样,直接运行它就可以啦,不多说啦。
安装BLAS:对于BLAS的依赖,我选择安装ATLAS(还可以通过安装MKL, or OpenBLAS),方法为:
安装Python以及依赖的库:一般我们的系统都自带我python, 我的版本为2.7.
虽然安装我python,但是很多需要的库并没有,我们可以进入我们下载的caffe包(可以在这里下载)里面,打开 caffe包里面的 /python/requirements.txt文件,这里面就是它的依赖的库,在该目录下,可以通过下面命令下载(如果直接输入命令不管用,可以把它写入到一个脚本里面):
for req in $(cat requirements.txt); do pip install $req; done如果提示找不到 pip 命令,则说明没有 pip 这个工具,那么下载它: https://pypi.python.org/packages/source/p/pip/pip-1.5.6.tar.gz,然后解压,里面有一个setup.py的文件,执行这个文件就可以安装pip了。
sudo python setup.py install有些电脑可能会提示 no moudle name setuptools 的错误,这是没有安装setuptools的原因。那就需要先安装一下setuptools, 到https://pypi.python.org/packages/source/s/setuptools/setuptools-19.2.tar.gz 下载安装包setuptools-19.2.tar.gz,然后解压执行:
sudo python setup.py install当我用pip下载相关的库文件时,发现下载的速度好慢,老是失败,后来想改一下镜像源(豆瓣),方法如下:在
~
目录下建立.pip
文件夹,cd .pip
后使用vi pip.conf
建立pip的配置文件,输入如下内容:[global] timeout =index-url = http://pypi.douban.com/simple/ [install] use-mirrors = true
mirrors= http://pypi.douban.com/simple/ trusted-host = pypi.douban.com
然后,可以下载啦,速度还不错。
另外还有个办法,那就是安装anaconda,我就是用的这个方法,anaconda里面已经包括了很多的库文件。
anaconda的下载安装:
我们可以查看anaconda的安装包里都包括什么:https://docs.continuum.io/anaconda/pkg-docs
下载地址:https://www.continuum.io/downloads#linux (这里有 anaconda的所有版本:https://repo.continuum.io/archive/)
安装时,参考官方文档:https://docs.continuum.io/anaconda/install
找到下载好的文件,我的为Anaconda2-4.1.1-linux-x86_64.sh文件,给它可执行权限,直接运行就好啦,在安装过程中,最好选择默认的安装路径,即~/anaconda2,最后安装完成后会出现“Installation finished.” and “Thank you for installing Anaconda!”信息。
安装以后,它会自动的在 ~/.bashrc文件中加入PTAH变量,打开确认一下,如果没有,自己添加如下内容:
#下面的路径对应自己安装的anaconda的路径,下面是我的路径: export PATH="${HOME}/anaconda2/bin:$PATH"下面, 我们再加一下它的动态库的路径:
#下面是我的路径,根据自己的具体路径自己修改一下就好: export LD_LIBRARY_PATH="${HOME}/anaconda2/lib:$LD_LIBRARY_PATH"好啦,现在安装完成啦。
最后,To import the
caffe
Python module after completing the installation, add the module directory to your$PYTHONPATH
byexport PYTHONPATH=caffe的路经/python:$PYTHONPATH
.我的做法就是在.bashrc中加入PYTHONPATH经路经。我加的是:PYTHONPATH=”~/home/yinheyi/caffe/python:$PYTHONPATH"
可能还需要安装一些相关依赖,运行如下命令安装:
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
安装OpenCV:我是在官网上http://opencv.org/下载的,然后自己编译(也可以通过apt-get install来安装,具体方法自己google),可以参才考http://docs.opencv.org/2.4.13/doc/tutorials/introduction/linux_install/linux_install.html#linux-installation.
1,首先下载opencv for linux,然后unpack.
2,然后解决安装之前的依赖问题:
以上第一个是需要的编译器,第二个是需要的依赖包,第三个是可选择的包。
3,进入我们 opencv-2.4.13目录下,创建一个 新的目录,比如名字为release,然后进入release下,cmake就好啦(cmake需要一些参数的,不会用cmake的,自己百度或google学),具体命令如下(我的文件在用户目录下,即~/,第):
上面最后行的参数可以改的。
进入release目录下,执行:
make sudo make install配置openCV参数设置
在/etc/ld.so.conf.d/opencv.conf文件中加入一行:/usr/local/lib ,(加入动态库,不明白的可以自己百度一下ldconfig)
可能会没有opencv.conf这个文件,那我们就自己创建一个:
sudo touch /etc/ld.so.conf.d/opencv.conf,然后写入 /usr/local/lib就可以啦。
使用下面这条命令:
sudo ldconfig最后,在~/.bashrc文件里,加入这么一行。
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
安装:cudnn,下载地址:https://developer.nvidia.com/cudnn(如果你的GPU的compute capability的能力小于3.0,就不需要cudnn来加速,否则后面安装caffe时会出错,下面已经提到)
cudnn是专门针对Deep Learning框架设计的一套GPU计算加速方案,目前支持的DL库包括Caffe,ConvNet, Torch7等。安装的基本原理是把解压后的相关文件复制到CUDA工具箱的相关目录下(官方文档:http://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html)。操作如下:
$ tar -xzvf cudnn-9.0-linux-x64-v7.tgz$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h
/usr/local/cuda/lib64/libcudnn*在复制的过程中,或许需要注意软链接的问题。
现在OK啦。
安装caffe:
先进入caffe包里,然后复制一份名为Makefile.config.example的文件为Makefile.config.根据自己的情况配置一下Makefile.config. 下面是我自己的配置文件。然后,执行:
make all
make test
make runtestOK,完成啦。
在make runtest时,因为用的是anaconda,如果出现了这样的错误:
解决方法:try to remove readline in anaconda lib so as to use the default system one.
进入到 anaconda的 lib 路径下(可以不用进入这个路径的),运行如下代码:
在make runtest时,出现了这样的类似的错误:
[ RUN ] CuDNNConvolutionLayerTest
/.TestSimpleConvolutionGroupCuDNN F1014 ::30.083176 cudnn_conv_layer.cpp:] Check failed: status == CUDNN_STATUS_SUCCESS ( vs. ) CUDNN_STATUS_ARCH_MISMATCH *** Check failure stack trace: ***
@ 0x2b082d0a8daa
(unknown) @ 0x2b082d0a8ce4 (unknown) @ 0x2b082d0a86e6 (unknown) @ 0x2b082d0ab687 (unknown) @ 0x739689 caffe::CuDNNConvolutionLayer<>::LayerSetUp() @ 0x42c1f0 caffe::Layer<>::SetUp() @ 0x49d776 caffe::CuDNNConvolutionLayerTest_TestSimpleConvolutionGroupCuDNN_Test<>::TestBody() @ 0x68d613 testing::internal::HandleExceptionsInMethodIfSupported<>() @ 0x6840b7 testing::Test::Run() @ 0x68415e testing::TestInfo::Run() @ 0x684265 testing::TestCase::Run() @ 0x6875a8 testing::internal::UnitTestImpl::RunAllTests() @ 0x687837 testing::UnitTest::Run() @ 0x41e9d0 main @ 0x2b0831cf1ec5 (unknown) @ 0x4261c7 (unknown) @ (nil) (unknown) make: *** [runtest] Aborted (core dumped) caffe::NetTest_TestReshape_Test<>::TestBody() @ 0x68d613 testing::internal::HandleExceptionsInMethodIfSupported<>() @ 0x6840b7 testing::Test::Run() @ 0x68415e testing::TestInfo::Run() @ 0x684265 testing::TestCase::Run() @ 0x6875a8 testing::internal::UnitTestImpl::RunAllTests() @ 0x687837 testing::UnitTest::Run() @ 0x41e9d0 main @ 0x2b2a9f778ec5 (unknown) @ 0x4261c7 (unknown) @ (nil) (unknown) make: *** [runtest] Aborted (core dumped)
原因在于,我的显卡为GT620M,它的compute capability为2.1,而cuDNN requires a GPU with CUDA compute capability 3.x or higher ,所以呢,我要把Makefile.config中的 USE_CUDNN:=1注释掉,重新编译,执行如下:
make clean
make all -j4 make test -j4 make runtest -j4
具体看的自己的显卡的compute capability,可以在官网看:https://developer.nvidia.com/cuda-gpus。
最后,如果用python 接口,请执行:
make pycaffe打开python, import caffe成功。
如果出现:ImportError: No module named google.protobuf.internal
那就直接在终端中安装protobuf就好,执行:
pip install protobuf现在再试,OK,可以啦。
最最后,如果py-faster-rcnn就不能正常导入caffe,把~/.bashrc中的anaconda的PATH路径去掉。(这是我看到的,我也不知道什么意思,写进去吧, 万一如果出现了可以作为参考)
终结!