当前位置: 首页 > 工具软件 > Caffe > 使用案例 >

血泪安装caffe教程

方昊阳
2023-12-01

先说下心酸过程

公司的服务器是Ubuntu20,cuda是11.1,cudnn是8.几

首先一直报一串好长好长的错误,总结起来是一直是cudnn版本的问题。

caffe的官网一直没有给出对cuda和cudnn版本的要求,这个真的很难受。

后面一直找办法,才从别的博客上发现,caffe要是cudnn在8.0之前的版本,真的绝了。

反正过程中出现很多问题,其他就不吐露了。

正确安装过程:

1.安装依赖包

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

看到有别人写的怎么验证是否全部安装成功,可以再把命令再重新运行一遍,如果出现

升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有X个软件包未被升级。

2.配置环境变量

vim ~/.bashrc

在文件后面加上下面内容

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH 

保存,生效

source ~/.bashrc

3.安装cuda和cudnn

我电脑安装的是cuda10.1和cudnn7.6.3

4.安装opencv3.4.13

下载opencv3.4.13,链接:Releases - OpenCV

选择sources版本。

先安装依赖包:

sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev

解压opencv-3.4.13

unzip opencv-3.4.13.zip
cd opencv-3.4.13
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
sudo make -j8
sudo make install

配置环境

sudo vim /etc/ld.so.conf.d/opencv.conf
#看到一个空文件,或者不是一个空文件,添加以下内容
/usr/local/lib 

使刚刚配置生效

sudo ldconfig 

 出现错误,不是符号链接

进入报错的链接,在目录下创建软连接,即可。

配置bash

sudo vim /etc/bash.bashrc
//在末尾添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig 
export PKG_CONFIG_PATH 

保存生效:

source /etc/bash.bashrc 
//更新
sudo updatedb 

查看是否安装成功

pkg-config --modversion opencv  

显示opencv版本。 

 5.安装caffe

git clone https://github.com/BVLC/caffe.git
cd caffe
sudo cp Makefile.config.example Makefile.config
sudo vim Makefile.config

修改Makefile.config文件:

1.将
#USE_CUDNN := 1
修改成: 
USE_CUDNN := 1

2.将
#OPENCV_VERSION := 3 
修改为: 
OPENCV_VERSION := 3

3.将
#WITH_PYTHON_LAYER := 1 
修改为 
WITH_PYTHON_LAYER := 1

4.
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.我这里使anaconda的python,不使用系统自带的。


6.将前两行删除
CUDA_ARCH := -gencode arch=compute_30,code=sm_20 \
             -gencode arch=compute_35,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_61,code=sm_61
变成
CUDA_ARCH := -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_61,code=sm_61

7.注释掉
#PYTHON_INCLUDE := /usr/include/python2.7 \
                /usr/lib/python2.7/dist-packages/numpy/core/include

把anancoda中python放开
ANACONDA_HOME := $(HOME)/anaconda3
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
                $(ANACONDA_HOME)/include/python3.6m \
                $(ANACONDA_HOME)/lib/python3.6/site-packages/numpy/core/include \

修改 caffe 目录下的 Makefile 文件

将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

将:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

注意-Xcompoler前有空格,要不出现fPIC报错。

报错后,修改后要先make clean,再make

之后编译

make all -j8

编译成功后,可以运行测试

sudo make runtest -j8

没有报错,即成功。

6.要在python中使用caffe,还需要安装pycaffe

cd caffe
sudo make pycaffe -j8

报错:

python/caffe/_caffe.cpp:10:31: fatal error: numpy/arrayobject.h: 没有那个文件或目录

如果有上面报错,输入以下命令:
 

sudo apt-get install python-numpy

 类似资料: