安装的过程踩了好多坑,收集来很多解决方案,下面我就为大家介绍linux下caffe框架的搭建。
电脑配置
操作系统:Ubuntu16.04
显卡:tesla K40c
第一步:安装相关依赖项
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
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
第二步:安装显卡驱动
安装之前需要做两个工作:
(1)卸载原有的显卡驱动
sudo apt-get remove --purge nvidia*
(2)在NVIDIA的官网查询符合自己显卡的驱动:
选择好显卡型号等信息后点击"SEARCH"
我的显卡的版本号为390
(3)安装显卡驱动(两种方法)
如果是集成显卡(独立显卡忽略此步骤),安装前先执行:
sudo service lightdm stop
方法一:执行以下指令安装驱动:
sudo add-apt-repository ppa:xorg-edgers/ppa
sudo apt-get update
sudo apt-get install nvidia-390 #注意在这里指定自己的驱动版本!
安装以后执行以下命令进行验证:
sudo nvidia-smi
方法二:
打开“系统设置”----“软件和更新”----“附加驱动”
注:版本号和NVIDIA官网的不同也可以正常使用
安装完之后执行以下指令验证是否安装成功:
sudo nvidia-smi
三、安装CUDA
1、下载CUDA
在官网上下载扩展名为.RUN的文件(https://developer.nvidia.com/cuda-downloads)
以上页面点击Download进行下载。
(2)安装CUDA
下载完成后执行以下命令:
sudo sh cuda_8.0.27_linux.run
注:命令文件名需要与下载的文件名相对应。
按键盘上f键直到100%
执行过程需要确定一些命令:安装位置等。注意:选择是否安装nvidia驱动时,选择no。
(3)环境变量配置
打开bashrc文件:
sudo vim ~/.bashrc
将以下内容写入bashrc文件底部:
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
EXPORT LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
注:cuda-8.0是我对应的文件名,需要跟自己安装目录的文件名相对应。
(4)测试CUDA
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
make
sudo ./deviceQuery
执行上述代码后,若显示一些关于GPU的信息,说明安装成功。
4.安装opencv2.7
(1)从https://github.com/Itseez/opencv/archive/2.4.13.zip下载安装包
(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 libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
(3)编译安装
# 打开文件夹"opencv-2.4.13":
cd opencv-2.4.13
# 新建一个文件夹用于存放临时文件:
mkdir release
# 切换到该临时文件夹:
cd release
# 开始编译:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j4 # 开启线程 按照自己的配置
sudo make install
(4)系统配置
# 配置环境,将opencv的库加入到路径,从而让系统可以找到
sudo gedit /etc/ld.so.conf.d/opencv.conf
# 末尾加入/usr/local/lib,保存退出
sudo ldconfig # 使配置生效
sudo gedit /etc/bash.bashrc
# 末尾加入
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
# 保存退出
sudo source /etc/bash.bashrc #使配置生效
(该步骤可能会报错找不到命令,原因是source为root命令)
su # 进入root权限
输入密码
source /etc/bash.bashrc
Ctrl+d #退出root
sudo updatedb #更新database
(5)测试
//文件名字lena.cpp,测试结果会显示lena.jpg图像
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main( )
{
Mat image;
image = imread("lena.jpg", 1 );//目录按照自己的目录
if ( !image.data )
{
printf("No image data \n");
return -1;
}
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", image);
waitKey(0);
return 0;
}
(5-1)编译
g++ lena.cpp `pkg-config --cflags --libs opencv` -o lena
(5-2)在文件夹下运行
./lena
若显示图像,则安装成功。
5.配置caffe
(1)在终端输入:
cd /home/自己定义的caffe路径
(2)从github上获取caffe:
git clone https://github.com/BVLC/caffe.git
若没有git执行:sudo apt-get install git
(3)make操作前需要复制caffe中的Makefile.config.example并重命名为Makefile.config
(4)打开 Makefile.config文件并修改
若使用CUDNN
#USE_CUDNN:=1
修改为:
USE_CUDNN:=1
若opencv的版本是3,
#OPENCV_VERSION:=3
改为:
OPENCV_VERSION:=3
若使用python编写layer
#WITH_PTRHON_LAYER:=1
改为
WITH_PTRHON_LAYER:=1
将# 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
(5)修改makefile文件
打开makefile文件,做如下修改:
将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
(6)编辑/usr/local/cuda/include/host_config.h
将其中的第115行注释掉
将
#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
改为
//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
(7)编译
sudo make all -j24 #-j根据自己电脑配置决定
sudo make pycaffe
sudo make test -j24
(8)测试
sudo make runtest