Ubuntu16.04下安装NVIDIA驱动+CUDA10.2+cudnn7+OpenCV3+Caffe-深度学习环境配置(适用于CPU/CUDA8/CUDA9环境)

Ubuntu16.04下安装NVIDIA驱动+CUDA10.2+cudnn7+OpenCV3+Caffe

NVIDIA驱动安装

https://www.nvidia.cn/Download/index.aspx?lang=cn选择对应显卡型号的Linux显卡驱动,这里使用的显卡为RTX2080ti,驱动版本为440.8,文件名为NVIDIA-Linux-x86_64-440.82.run
在登录界面按Ctrl+Alt+F1进入tty终端并登录,执行sudo service lightdm stop关闭图形界面。进入驱动所在路径,执行:

sudo bash NVIDIA-Linux-x86_64-440.82.run

新版驱动经测试,只需要默认参数安装即可,安装完成后执行sudo reboot重启,启动后打开终端执行nvidia-smi成功显示显卡信息即可。

CUDA安装

https://developer.nvidia.com/cuda-toolkit-archive选择对应版本的CUDA下载,以10.2为例,文件名为cuda_10.2.89_440.33.01_linux.run
执行sudo bash cuda_10.2.89_440.33.01_linux.run进行安装,由于已经安装过驱动了,需要取消install driver选项,其余选项默认安装即可。

cudnn安装

https://developer.nvidia.com/cudnn选择对应版本的cudnn下载,以cuda10.2的cudnn7.6.5为例,文件名为cudnn-10.2-linux-x64-v7.6.5.32.tgz
下载cudnn需要注册NVIDIA账户,这里提供Linux平台的二进制文件
执行tar -zxf cudnn-10.2-linux-x64-v7.6.5.32.tgz进行解压,文件被解压到cuda目录下,将cuda路径下的includelib64都拷到cuda安装目录下:

sudo cp cuda/include/* /usr/local/cuda/include
sudo cp cuda/lib64/* /usr/local/cuda/lib64

OpenCV安装

安装依赖的库

sudo apt-get update
sudo apt-get install -y --no-install-recommends \
    build-essential \
    cmake \
    git \
    wget \
    curl \
    ca-certificates \
    libopenblas-dev \
    libboost-all-dev \
    libgflags-dev \
    libgoogle-glog-dev \
    libhdf5-serial-dev \
    libleveldb-dev \
    liblmdb-dev \
    libprotobuf-dev \
    libsnappy-dev \
    pkg-config \
    libgtk2.0-dev \
    pkg-config \
    libavcodec-dev \
    libavformat-dev \
    libswscale-dev \
    libjpeg-dev \
    libpng-dev \
    libtiff-dev \
    libjasper-dev \
    libdc1394-22-dev \
    protobuf-compiler \
    python3-dev \
    python3-setuptools

安装pip和所需的python包

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python3 get-pip.py
sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade Cython wheel python-dateutil numpy

进入https://github.com/opencv/opencv/releases/下载对应版本的source code(tar.gz),这里使用3.4.7版本。
执行tar -zxf 3.4.7.tar.gz进行解压,然后cd opencv-3.4.7进入解压路径进行编译安装:

mkdir build 
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D PYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3 \
    -D PYTHON3_EXECUTABLE=/usr/bin/python3 \
    -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/local/lib/python3.5/dist-packages/numpy/core/include \
    -D PYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages \
    -D CMAKE_CXX_FLAGS="-std=c++11" \
    -D CUDA_NVCC_FLAGS="--compiler-options "-std=c++03"" ..
make -j"$(nproc)" 
sudo make install

Caffe安装

下载Caffe

clone Caffe的仓库,复制Makefile.config.example为Makefile.config:

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

如需使用interp layer和relu6等caffe自定义层,也可以下载我修改的caffe,添加了部分常用的自定义层,提前配置好了CPU和CUDA的Makefile.config文件:

git clone https://github.com/woodsgao/caffe.git
cd caffe
cp Makefile.config.cu101 Makefile.config  # CUDA9以上通用,可以跳过编辑Makefile.config的过程
# CUDA8和CPU分别复制Makefile.config.cu80和Makefile.config.cpu

配置Makefile.config

使用我的仓库的可以跳过这一步
编辑Makefile.config:

  1. 修改python版本为python3.5,注释第71-72行:
    PYTHON_INCLUDE := /usr/include/python2.7 \
    		/usr/lib/python2.7/dist-packages/numpy/core/include
    
  2. 取消第81-83行的注释并修改为:
    PYTHON_LIBRARIES := boost_python-py35 python3.5m
    PYTHON_INCLUDE := /usr/include/python3.5m \
                    /usr/local/lib/python3.5/dist-packages/numpy/core/include
    
  3. 修改第97-98行:
    INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
    LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
    
    改为:
    INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/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
    
  4. 第53行:
    BLAS := atlas
    
    改为:
    BLAS := open
    
    使用openblas来实现cpu上的多线程加速
  5. 取消第五行的注释,CPU环境的不需要:
    USE_CUDNN := 1
    
  6. 取消第23行的注释,此处根据OpenCV版本设定:
    OPENCV_VERSION := 3
    
  7. 根据CUDA版本修改第39-47行:
    CUDA_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
    
    修改为:
    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_60,code=sm_60 \
    	-gencode arch=compute_61,code=sm_61 \
    	-gencode arch=compute_61,code=compute_61
    

编译Caffe

进行编译:

cd python
for req in $(cat requirements.txt) pydot; do pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple $req; done
cd .. 
mkdir -p include/caffe/proto
cd src/caffe/proto
protoc -I=./ --cpp_out=./ ./caffe.proto
cd ../../.. && cp src/caffe/proto/caffe.pb.h include/caffe/proto/
make -j"$(nproc)" all
make -j"$(nproc)" test
make -j"$(nproc)" pycaffe

配置环境变量

添加环境变量,编辑/etc/profile,添加:

export CAFFE_ROOT="/home/woods/caffe"
export PATH="$PATH:$CAFFE_ROOT/build/tools:$CAFFE_ROOT/python"
export PYTHONPATH="$PYTHONPATH:$CAFFE_ROOT/python"

生效环境变量并添加LD_LIBRARY_PATH

source /etc/profile
sudo echo "$CAFFE_ROOT/build/lib" >> /etc/ld.so.conf.d/caffe.conf 
sudo ldconfig

打开python3,执行:

import caffe

成功导入
————————————————

至此完成整个环境的配置

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值