Caffe安装步骤(matcaffe,pycaffe,opencv)

1、系统和硬件配置:

  • Ubuntu18.04 
  • gtx1050ti
  •  16GB

2、环境配置:

  • cuda9.0
  • cuDnn7.3
  • g++5.5
  • gcc5.5
  • opencv3.4
  • Caffe

本来还先装了anaconda但是这里对于新手来说不建议。因为ubuntu自带pyhon,再装上anaconda会使系统中有两个python版本,容易导致混乱。

依照2、环境配置中的顺序首先下载cuda9.0、cuDnn7.0(文件较大,建议提前下载好备用)

下载地址:cuda9.0、cudnn7.3. 选择cuDnn时注意选择与cuda版本对应的版本,本文选择如下图

Caffe安装步骤(matcaffe,pycaffe,opencv)_第1张图片 cuDNN版本

 

下载cuda和cudnn时注意下载位置的选取,以免空间不足导致下载失败

3、开始搭建

   3.1、NVIDIA驱动

      Ubuntu 虽然自带了NVIDIA的驱动但是不完整,具体检测方法可以在终端键入nvidia-smi查看是否有下图显示

Caffe安装步骤(matcaffe,pycaffe,opencv)_第2张图片 nvidia-smi

      若有可以跳过步骤3.1接下来部分。

      在确定之后,在桌面打开终端键入以下代码:

#依次输入
sudo apt install nvidia-utils-390

sudo ubuntu-drivers autoinstall

      之后重启电脑,再次键入nvidia-smi即可查看效果

   3.2、CUDA9.0

      3.2.1、编译器降级

       因为Ubuntu18.04默认gcc7.0,而CUDA9.0只支持gcc6.0及以下版本,因此需要降级,选择降级的是5.5.

首先查看自己的版本:gcc --version,一般显示7.0,因此降级版本并激活

       在终端输入:

#下载gcc、g++编译器
sudo apt-get install gcc-5 g++-5 
#降级操作
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50

       此时再次输入:gcc --version因当显示版本已经更替成功。

      3.2.2、安装依赖项

       依赖项必须需要安装,如果安装失败有可能是没有替换国内的源或在没有科学网上冲浪的原因。

sudo apt-get install freeglut3-dev build-essential 
sudo apt-get install libx11-dev libxmu-dev libxi-dev 
sudo apt-get install libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

      3.2.3、安装CUDA

      3.2.3节中假设cuda的下载目录为/brl/cuda,需要根据各自cuda的下载目录修改下划线部分的路径

#进入cuda目录
cd brl/cuda
#安装cuda
sudo sh cuda_9.0.176_384.81_linux.run --override
#当你输入上面这条命令时,终端界面会让你输入一些选择,需要注意的有下面两点:
# 1、是否要安装显卡驱动--选择否
# 2、决定安装位置--根据自身情况选择安装位置(下面四个补丁也要安装在这个位置上)
# 3、除了1以外所有的选择,全部选是(Y)
#安装cuda的补丁1
sudo sh cuda_9.0.176.1_linux.run
#安装cuda的补丁2
sudo sh cuda_9.0.176.2_linux.run
#安装cuda的补丁3
sudo sh cuda_9.0.176.3_linux.run
#安装cuda的补丁4
sudo sh cuda_9.0.176.4_linux.run

      安装完整之后因为没有安装它提示的驱动,所以会提示安装不完整

      3.2.4、添加环境变量 

      输入以下命令进入.bashrc

sudo gedit ~/.bashrc

      将以下内容加到末尾

export  PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export  LD_LIBRARY_PATH=/usr/local/cuda9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

      让.bashrc文件生效

sudo source ~/.bashrc

       3.2.4 测试CUDA

      输入以下命令测试CUDA是否安装成功  

cd brl/cuda/samples/1_Utilities/deviceQuery 
#需要等一会
make 
sudo ./deviceQuery

      3.2.4 卸载CUDA

      假如安装版本出错或者某些原因需要卸载CUDA,输入以下命令

cd brl/cuda/bin
sudo ./uninstall_cuda_toolkit_9.0.pl

    4、配置cuDNN

     假设 cuDNN下载目录为brl/cuDNN,请根据自身下载目录将下划线部分修改

    4.1、  解压缩

    配置cuDNN其实比较简单,只需要以此执行以下命令即可

cd brl/cuDNN
tar -zxvf cudnn-9.0-linux-x64-v7.tgz
#这里就是cuda,因为你解压缩以后的文件名就是cuda
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/ #*****
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ -d
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

    4.2、 更新软连接

#这里的路径与你上面*****处的路径一致
cd /usr/local/cuda/lib64/
sudo chmod +r libcudnn.so.7.3.0
sudo ln -sf libcudnn.so.7.3.0 libcudnn.so.7
sudo ln -sf libcudnn.so.7 libcudnn.so
sudo ldconfig
sudo ldconfig /usr/local/cuda/lib64/

#根据cudnn的版本不同libcudnn.so.7.3.0中的数字部分需要修改

    5、配置Opencv3.4(Optional,没有具体使用过,只是编译成功了)

     5.1、下载opencv源码

Caffe安装步骤(matcaffe,pycaffe,opencv)_第3张图片 opencv

   此处选择最后一个(后缀为tar.gz), 假设下载目录为brl/opencv      

    对下载好的压缩文件进行解压缩(命令行或者图形化界面均可)

     5.2、安装依赖

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev
sudo apt-get install libjpeg-dev libpng-dev libtiff5-dev libdc1394-22-dev  # 处理图像所需的包
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev         # 处理视频所需的包
sudo apt-get install libatlas-base-dev gfortran          # 优化opencv功能
# ffmpeg我是单独安装的,如果这个安装失败,可以找找其他方法
sudo apt-get install ffmpeg

    5.3、编译opencv

cd brl/opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make 
sudo make install

  5.4、配置环境

sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig

6、编译Caffe

   从git上下载源码

#选择一个合适的位置,在那里打开终端,并且输入下面命令,这里假设为brl/caffe
git clone https://github.com/BVLC/caffe.git

   6.1、安装依赖包

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev
sudo apt-get install libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev libgdal-dev

 6.2、设置Makefile.config文件

#备份Makefile.config文件
sudo cp Makefile.config.example Makefile.config
#打开Makefile.config文件
sudo gedit Makefile.config

 

将 # Whatever else you find you need goes here. 下面的

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

修改为:(注意路径间的空格)

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial

 WARNING 1:如果你需要安装matcaffe(Matlab的caffe接口)需要修改

MATLAB_DIR := brl/MATLAB/R2016b

其中brl/MATLAB/R2016b为你的matlab安装位置 

WARNING 2:如果你安装的是cuda9.0,那么还需要进行如下操作

找到 UDA_ARCH := -gencode arch=compute_20,code=sm_20 \
                -gencode arch=compute_20,code=sm_21 \
                -gencode arch=compute_30,code=sm_30 \
                -gencode arch=compute_35,code=sm_35 \
                -gencode arch=compute_50,code=sm_50 \
                -gencode arch=compute_52,code=sm_52 \
                -gencode arch=compute_60,code=sm_60 \
                -gencode arch=compute_61,code=sm_61 \
                -gencode arch=compute_61,code=compute_61

把如下这两行删除
                -gencode arch=compute_20,code=sm_20 \ 
                -gencode arch=compute_20,code=sm_21 \

 6.3修改Makefile文件

#以$开头操作均为在终端的操作

$ cd brl/caffe  #进入caffe下载位置

$ sudo gedit Makefile  

修改一:
将opencv_core opencv_highgui opencv_imgproc  修改为

    opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs  

修改二:
将NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)  改为
   NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
  # 这个操作是为了解决版本过低的问题

  #在410行下面加上 CXXFLAGS += -std=c++11
   CXXFLAGS += -MMD -MP

修改三:

$ examples/cpp_classification/classification.cpp  

添加下面两行
#include  
#include

 引入路径

sudo vim ~/.bashrc
export LD_LIBRARY_PATH="/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH"
export PATH=$PATH:/usr/local/MATLAB/R2016b/bin
source ~/.bashrc
sudo ldconfig

 6.4、编译

查看物理cpu个数

grep 'physical id' /proc/cpuinfo | sort -u

查看核心数量

grep 'core id' /proc/cpuinfo | sort -u | wc -l

查看线程数

grep 'processor' /proc/cpuinfo | sort -u | wc -l

开始编译

cd caffe-master
mkdir build
cd build
cmake ..
cd ..
#这里6代表这线程数目,根据上面的命令自行修改,不建议满线程去编译
make all -j6
make test -j6
make runtest -j6

7、安装Caffe接口

   7.1.1、安装MatCaffe接口

#注意:此处是你的Matlab安装位置
cd /brl/MATLAB/R2014a/sys/os/glnxa64/  
sudo mv libstdc++.so.6 libstdc++.so.6_back  
sudo ldconfig  
cd /brl/caffe/
#-j5后边的5视你的电脑情况自行修改,与编译Caffe相同
sudo make matcaffe -j5

    如果执行了上面的命令,提示gcc版本过低的话,不用管它,看/brl/caffe/matlab/+caffe/privat下面,有没有caffe_.mexa64这个文件,如果有的话,可以开始测试了。

     7.1.2、测试matlab接口

     打开Matlab,在命令行输入以下命令将Caffe接口添加到搜索路径中  

addpath brl/caffe/matlab
#这里可能会提示出错,这是因为matlab路径文件现在是只读状态,可以让他变为可写状态
savepath

      接着编译mattest,输入以下命令

sudo make mattest -j5

   这里可能会报错,大概的意思就算找不到.so文件,这是我们只需要执行下面的命令,建立软连接

#加入你缺失的文件是libcublas.so.9.0,可以输入下面的命令
sudo ln -sf /brl/cuda/lib64/libcublas.so.9.0 /brl/matlab/sys/os/glnxa64/libcublas.so.9.0

将所有缺失的文件按照上面的方法进行炮制即可。

     这里可能还是会报错,但不影响使用,因为Caffe的matlab接口已经经过7.1.3的测试是可行的      

        7.1.3、测试Caffe

         这里对Cafee的matlab接口进行了两个测试

          一、Sphereface的测试

         

Caffe安装步骤(matcaffe,pycaffe,opencv)_第4张图片 sphereface结构

        二、Mnist数据集测试

      配置caffe完成后,我们可以利用MNIST数据集对caffe进行测试,过程如下:
      1.将终端定位到Caffe根目录

cd brl/caffe

      2.下载MNIST数据库并解压缩

./data/mnist/get_mnist.sh

     3.将其转换成Lmdb数据库格式

./examples/mnist/create_mnist.sh

    4.训练网络

./examples/mnist/train_lenet.sh

    训练的时候可以看到损失与精度数值,如下图:           

Caffe安装步骤(matcaffe,pycaffe,opencv)_第5张图片 MNIST训练集测试结果

    7.2  安装python接口

      首先执行以下命令为python下载pip

sudo apt-get install python-pip

     首先回到caffe的根目录,然后执行安装代码:

cd brl/caffe
sudo apt-get install gfortran
cd ./python
for req in $(cat requirements.txt); do sudo pip install $req; done

    ps:这里可能会遇到一些问题,这是因为目录权限不够的原因,执行以下命令,并重复执行$for req......done这条命令

#这里假设显示的目录路径为brl/path
sudo chown root brl/path

    安装完成以后,再次回到caffe根目录我们可以执行:

cd ..
sudo pip install -r python/requirements.txt

    编译python接口:

make pycaffe

    配置环境变量,以便python调用:

sudo gedit ~/.bashrc

   将以下内容添加到文件中

export PYTHONPATH=brl/caffe/python:$PYTHONPATH

    然后执行

source ~/.bashrc
结果

 

你可能感兴趣的:(机器学习)