本来还先装了anaconda但是这里对于新手来说不建议。因为ubuntu自带pyhon,再装上anaconda会使系统中有两个python版本,容易导致混乱。
依照2、环境配置中的顺序首先下载cuda9.0、cuDnn7.0(文件较大,建议提前下载好备用)
下载地址:cuda9.0、cudnn7.3. 选择cuDnn时注意选择与cuda版本对应的版本,本文选择如下图
cuDNN版本
下载cuda和cudnn时注意下载位置的选取,以免空间不足导致下载失败
Ubuntu 虽然自带了NVIDIA的驱动但是不完整,具体检测方法可以在终端键入nvidia-smi查看是否有下图显示
nvidia-smi若有可以跳过步骤3.1接下来部分。
在确定之后,在桌面打开终端键入以下代码:
#依次输入
sudo apt install nvidia-utils-390
sudo ubuntu-drivers autoinstall
之后重启电脑,再次键入nvidia-smi即可查看效果
因为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因当显示版本已经更替成功。
依赖项必须需要安装,如果安装失败有可能是没有替换国内的源或在没有科学网上冲浪的原因。
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的下载目录为/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
安装完整之后因为没有安装它提示的驱动,所以会提示安装不完整
输入以下命令进入.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
输入以下命令测试CUDA是否安装成功
cd brl/cuda/samples/1_Utilities/deviceQuery
#需要等一会
make
sudo ./deviceQuery
假如安装版本出错或者某些原因需要卸载CUDA,输入以下命令
cd brl/cuda/bin
sudo ./uninstall_cuda_toolkit_9.0.pl
假设 cuDNN下载目录为brl/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*
#这里的路径与你上面*****处的路径一致
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中的数字部分需要修改
此处选择最后一个(后缀为tar.gz), 假设下载目录为brl/opencv
对下载好的压缩文件进行解压缩(命令行或者图形化界面均可)
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
cd brl/opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make install
sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
从git上下载源码
#选择一个合适的位置,在那里打开终端,并且输入下面命令,这里假设为brl/caffe
git clone https://github.com/BVLC/caffe.git
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
#备份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 \
#以$开头操作均为在终端的操作
$ 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
查看物理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
#注意:此处是你的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这个文件,如果有的话,可以开始测试了。
打开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的测试是可行的
这里对Cafee的matlab接口进行了两个测试
一、Sphereface的测试
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
训练的时候可以看到损失与精度数值,如下图:
MNIST训练集测试结果首先执行以下命令为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
结果