这次是在ubuntu16.04下安装caffe,显卡为NVIDIA GTX650显卡。
目录为:
1.安装显卡驱动(根据网站下载对应的显卡驱动)
2.安装cuda
3.安装cudnn
4.添加依赖
5.安装opencv3.1
6.安装配置caffe
1.安装显卡驱动,
1.1查看自己已安装可以使用(
nvidia-smi
),如果出现下图即为已安装,并且记住驱动版本,接下来下载cuda以及cudnn都是要根据ubuntu系统版本以及nvidia驱动版本进行下载的。
1.2如果没有出来表示没有显卡驱动或者显卡驱动坏了。不知道自己驱动版本的可以使用命令行(
lspci | grep -i nvidia
)查看,如图
可以看出显卡是GeForce GTX650,然后上nvidia的官网下载驱动,并且要根据这个显卡型号下对应的驱动,然后进行安装,安装详细步骤可以查看这个博客:显卡安装详解,这里注意如果显卡驱动坏了或者没有显卡一定要记得禁用自带的还有卸载掉坏了的。直到安装完之后出现1.1里面的图片才可以。
2.安装cuda(这里一定要安装跟显卡版本对应的cudd,好像是驱动版本在384及以下需要8.0的版本,这里建议百度以下显卡驱动版本可以安装的cuda版本,然后再进行下载,不然后面会有很多的弯路,我第一次安装就是安装的10.0版本的后面会出错。附上下载地址cuda下载地址,我下载的是cuda8.0.)
2.1进入cuda run文件目录。
2.2使用命令 :
sudo chmod 777 cuda_8.0.44_linux.run
文件路径可以使用tab键直接出来"(cuda_8.X.XXXXX)
2.3使用命令运行run文件:
sudo ./cuda_8.0.44_linux.run
文件路径"(./cuda_8X.XXXX)
2.4等待安装,弹出确认安装,然后选择安装的东西就可以了,但是有一个选择选择否
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384?
选择driver就可以了。安装完成之后
2.5更改环境变量:打开配置环境变量文件 sudo vi ~/.bashrc ,然后在文件最后添加
export PATH=/usr/local/cuda-9.0/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH}
2.6测试cuda是否安装成功
2.6.1进入测试阳历文件:cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
2.6.2sudo make
2.6.3sudo ./deviceQuery
如图则为安装成功:
3.下载配置Cudnn
3.1下载地址(cudnn下载地址),这里建议不要下载最新的,而是按照cuda的版本下载对应的,我的cuda是8.0的然后下载了这个,如果找不到可以看历史版本
sudo tar -zxvf ./cudnn-8.0-linux-x64-v51.ga.tgz
3.3复制include文件,进入
cd cuda/include
然后执行复制
sudo cp cudnn.h /usr/local/cuda/include
3.4进入lib64的动态文件进行复制和链接,第三行看下面的
cd ..
cd lib64
sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5 #删除原有动态文件
sudo ln -s libcudnn.so.5.0.5 libcudnn.so.5 #生成软衔接
sudo ln -s libcudnn.so.5 libcudnn.so #生成软链接
这里第三行需要获取你的cudnn的版本进行更改,不然后面会报错
使用
locate libcudnn.so
我这里的是5.0.5
3.5使用命令来看是否安装成功
nvcc -V
如果为下图即为安装成功
4.添加依赖
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
sudo apt-get install git cmake build-essential
5.安装opencv3.1
5.1下载以及安装版本,建议3.1,地址(opencv下载地址),建议使用source文件。
5.2在你想要安装的地方创建一个opencv编译文件夹,你的opencv就安装在这个里面,然后进入这个文件夹里面创建build文件夹,并且进入build使用
mkdir build # 创建编译的文件目录
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j8
然后我这里出现了错误
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Kepler ..
然后再进行make -j8操作,如果出现错误可以根据错误进行百度或者google。
5.3进行安装
sudo make install
5.4测试是否安装成功
pkg-config --modversion opencv
如果出现了你对应下载的opencv的版本号就表示下载成功。
6.配置caffe
6,1创建caffe安装目录,然后进入该目录,使用
sudo git clone https://github.com/BVLC/caffe.git
进行下载。
6.2修改caffe里面的Makefile.config。因为make指令只能make Makefile.config文件,而Makefile.config.example是caffe给出的makefile例子。因此,首先将Makefile.config.example的内容复制到Makefile.config:
sudo cp Makefile.config.example Makefile.config
然后使用
sudo vi Makefile.config
进行修改。
6.2.1:如果使用cudnn 则#USE_CUDNN:= 1 前面的注释去掉
6.2.2:如果使用opencv是3版本的,应该将#WITH_PYTHON_LAYER:= 1 前面的注释去掉
6.2.3如果使用python来编写layer,则将#WITH_PYTHON_LAYER:= 1 前面的注释去掉
6.2.4这个比较重要:
#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
6.3修改Makefile文件(tips:如果太难找就按insert 然后esc 在下面的输入栏输入/以及要查找的就可以快速查找了)
打开Makefile文件,做如下修改,将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC$(COMMON_FLAGS)
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
对应替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX)-Xcompiler -fPIC $(COMMON_FLAGS)
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
6.4编辑/usr/local/cuda/include/host_config.h
将其中的第115行注释掉,将
#error-- unsupported GNU version! gcc versionslater than 4.9 are not supported!
改为:
//#error-- unsupported GNU version! gcc versionslater than 4.9 are not supported!
6.5进行编译
make all -j8
如果错误为这里遇到了错误的话这里总结了几种我遇到的错误:
第一种是 cannot find lhdf5_hl,这个是因为我用了别人的建议把Makefile.config里面的文件改了,解决办法是将Make.config 进行删除。在caffe目录下使用 sudo rm Makefile.config然后重新回到5.2进行操作。然后缺少一下什么库的话百度上都有的。这里附上一个缺少库的操作的连接(https://www.jianshu.com/p/fcd0e3105520)。
6.6安装
如果等了一会儿之后出现
就表示安装成功了的。
6.7测试
输入
sudo make runtest -j8
7.测试是否可用(建议使用sudo)
7.1进入caffe的根目录cd caffe
7.2下载mnist数据库并解压
sudo ./data/mnist/get_mnist.sh
出现这个就表示下载成功
7.3将其转换成lmdb数据库格式
sudo ./examples/mnist/create_mnist.sh
出现以下即为成功
7.4训练网络
sudo ./examples/mnist/train_lenet.sh
这个是训练过程
如果最后出现以下就表示成功。
最后的精度是99.02