ubuntu18.04安装cuda10.0+cudnn7.6+opencv3.4+caffe+openpose

安装cuda10.0

  1. cuda官网选择适合自己电脑的版本下载

  2. .在终端输入在第一步中选择好版本后官网给出的安装命令。

  3. 由于显卡驱动是之前就单独安装好的,所以在这里安装cuda时注意不要再安装驱动driver了。除了驱动不装,其他的都都安装。一路指令顺序执行下来。

  4. 环境变量的配置。打开 ~/.bashrc 文件补充代码。
    在终端输入:

    sudo gedit ~/.bashrc
    

    在打开的文件底端补充:

    export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
    export LD_LIBRARY_PATH=/usr/local
    /cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
    

    输入完成后,保存并且关闭文档,终端界面上的警告可以忽略。然后再在终端输入:source ~/.bashrc 让配置生效

  5. 创建链接文件,终端输入:

    sudo gedit /etc/ld.so.conf.d/cuda.conf
    

    在打开的文件中添加语句:

    /usr/local/cuda/lib64
    

    文档保存关闭后终端输入:

    sudo ldconfig
    
  6. 查看cuda是否安装成功, 终端输入:nvcc -V

安装cuDNN-7.6

这里需要注意的是,cuDNN的版本,要与已安装的CUDA版本对应
移动安装文件到用户根目录下
复制文件到CUDA安装目录

sudo cp ~/cuda/include/cudnn.h /usr/local/cuda-10.0/include
sudo cp ~/cuda/lib64/lib* /usr/local/cuda-10.0/lib64

创建库文件链接: 注意进入相关目录找到对应的.so文件,因为写错了.so名称此处也不会报错

cd /usr/local/cuda-10.0/lib64
sudo ln -sf libcudnn.so.7.6.5 libcudnn.so.7
sudo ln -sf libcudnn.so.7 libcudnn.so
sudo ldconfig -v

安装opencv3.4.1

安装依赖项:

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 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功能
sudo apt-get install ffmpeg

确保上面依赖项安装了
然后其他参看下面博客安装:

https://blog.csdn.net/cocoaqin/article/details/78163171

安装caffe
第一步 安装相关依赖库

sudo apt-get --assume-yes install build-essential
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
# Python libs
sudo -H pip install --upgrade numpy protobuf
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

第二步 下载caffe

使用Git直接下载Caffe ,没安装git就按照提示安装一下

git clone https://github.com/BVLC/caffe.git
cd caffe

第三步 修改Makefile.config

1、进入 caffe ,将 Makefile.config.example 文件复制一份并更名为 Makefile.config ,也可以在 caffe 目录下直接调用以下命令完成复制操作 :

sudo cp Makefile.config.example Makefile.config

复制一份的原因是编译 caffe 时需要的是 Makefile.config 文件,而Makefile.config.example 只是caffe 给出的配置文件例子,不能用来编译 caffe。

2、修改 Makefile.config 文件,在 caffe 目录下打开该文件:

sudo gedit Makefile.config

在文件中替换一下几个地方:

...
将
#USE_CUDNN := 1
修改成: 
USE_CUDNN := 1
...
 
...
#如果此处是OpenCV2,则不用修改
将
#OPENCV_VERSION := 3 
修改为: 
OPENCV_VERSION := 3
...
  将
 CUDA_DIR := /usr/local/cuda
修改为
CUDA_DIR := /usr/local/cuda-10.0
...
将
#WITH_PYTHON_LAYER := 1 
修改为 
WITH_PYTHON_LAYER := 1
...
 
...
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 /usr/local/cuda-10.0/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial /usr/local/cuda-10.0/lib64      
...
 
...
将
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
...

3、然后修改 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
...

4、然后修改 /usr/local/cuda/include/host_config.h 文件

将
#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!

第四步 编译
在caffe目录下执行

   #jn  就是cpu的核心数,j8也就是八核
    sudo make all -j8

测试:

sudo make runtest -j8

openpose编译安装:
如果上面caffe按操作来不踩坑,建议参考下面博客编译openpose一般没问题:
https://blog.csdn.net/qq_27838651/article/details/89282776

下载OpenPose:

git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose.git

下载模型(这一步可跳过,因为之后会自动下载):

cd openpose
cd models
./getModels.sh
cd ..

打开cmke软件:

cmake-gui

填写openpose源码目录以及build:
ubuntu18.04安装cuda10.0+cudnn7.6+opencv3.4+caffe+openpose_第1张图片
点击Configure按钮, 选择Unix Makefile和use default native compling,点击finish按钮

点击Generate按钮,中间会出现一些红色的可配置项。之后按图操作配置caffe编译路径 :
ubuntu18.04安装cuda10.0+cudnn7.6+opencv3.4+caffe+openpose_第2张图片ubuntu18.04安装cuda10.0+cudnn7.6+opencv3.4+caffe+openpose_第3张图片【如果使用OpenPose的 Python API,需要在 CMake GUI 中设置 BUILD_PYTHON, 并且下载pybind11解压后的文件拷贝到3rdparty/pybind11/下即可】
最后点击Generate按钮

OpenPose 编译

cd OPENPOSE_ROOT/build/
make -j`nproc`

编译过程中出现过一个错误: cannot find #include “caffe/proto/caffe.pb.h”
解决办法:首先将caffe.proto中的required改为optional, 然后在caffe目录下输入如下代码:

protoc src/caffe/proto/caffe.proto --cpp_out=.
mkdir include/caffe/proto
mv src/caffe/proto/caffe.pb.h include/caffe/proto

最后重新编译caffe。
测试:

./build/examples/openpose/openpose.bin --video examples/media/video.avi

其他相关
下面是所有安装用到的东西请下载
链接:https://pan.baidu.com/s/1ud2XTUPQmTLcz3_mOgfqzg&shfl=sharepset
提取码:uqx6

链接: https://pan.baidu.com/s/1NQeE_NtOIsyG5XUnSNZymw&shfl=shareset 提取码: 4zu3

两个一样的,如果失效了就留言吧也许会回。

【注意】
[1] - 编译时不采用 cuDNN:

在OpenPose 配置中,去除 CMake 的 USE_CUDNN 勾选.

如果不采用 cuDNN,则需要减少 --net_resolution 设定的尺寸,以避免 GPU 显存不足.

–net_resolution 可尝试:640x320, 320x240, 320x160, 160x80。

如:–net_resolution -1x320.

[2] - 自定义 Caffe 版本:

在OpenPose 配置中,去除 CMake 的 BUILD_CAFEE 勾选,手工定义 Caffe include路径和 library路径.

在OpenPose 配置中,如果是从源码编译安装的 OpenCV,导致 OpenPose 不能找到 OpenCV路径,则可以手工指定 OPENCV_DIR 路径.
如:

cmake -DOpenCV_INCLUDE_DIRS=/home/"${USER}"/softwares/opencv/build/install/include \
  -DOpenCV_LIBS_DIR=/home/"${USER}"/softwares/opencv/build/install/lib \
  -DCaffe_INCLUDE_DIRS=/home/"${USER}"/softwares/caffe/build/install/include \
  -DCaffe_LIBS=/home/"${USER}"/softwares/caffe/build/install/lib/libcaffe.so -DBUILD_CAFFE=OFF ..

cmake -DOpenCV_CONFIG_FILE=/home/"${USER}"/softwares/opencv/build/install/share/OpenCV/OpenCVConfig.cmake \
  -DCaffe_INCLUDE_DIRS=/home/"${USER}"/softwares/caffe/build/install/include \
  -DCaffe_LIBS=/home/"${USER}"/softwares/caffe/build/install/lib/libcaffe.so -DBUILD_CAFFE=OFF ..

Python API

OpenPose的 Python API,需要在 CMake GUI 中设置 BUILD_PYTHON.

如:./build/examples/tutorial_developer/python_1_pose_from_heatmaps.py.

CPU 版本

为了可以手工选择 CPU 版本,则在 CMake GUI 中设置 GPU_MODE 为 CPU_ONLY.

注:CPU 版本的精度比 CUDA 版本的精度高大约 1%. 故结果可能有不同.

Ubuntu 中的 OpenPose 利用了 Caffe 的 Intel MKL(Math Kernel Library) 版本. 也可以通过取消选择USE_MKL,利用自定义的 Caffe 版本.

默认 CPU 版本在 Ubuntu 上大概每秒 0.2 张图像(比 GPU 版本慢 ~50X ). MKL 版本能够提升 2X 的速度,每秒 ~0.4 张图像.
OpenPose 重新安装与删除

[1] - 如果运行了 sudo make install,则,首先在 build/ 中运行 sudo make uninstall.

[2] - 删除 build/ 路径.

[3] - CMake GUI 中,点击 File - Delete Cache.

[4] - 重新安装.(或删除 OPENPOSE_ROOT/ 路径.)

你可能感兴趣的:(Python,ubutn,深度学习tensorflow)