ubuntu18.04 openpose opencv3

https://blog.csdn.net/u011117131/article/details/103565254

安裝cuda10.0

    cuda官網選擇適合自己電腦的版本下載

    .在終端輸入在第一步中選擇好版本後官網給出的安裝命令。

    由於顯卡驅動是之前就單獨安裝好的,所以在這裏安裝cuda時注意不要再安裝驅動driver了。除了驅動不裝,其他的都都安裝。一路指令順序執行下來。

    環境變量的配置。打開 ~/.bashrc 文件補充代碼。
    在終端輸入:

    sudo gedit ~/.bashrc
        1

    在打開的文件底端補充:

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

    輸入完成後,保存並且關閉文檔,終端界面上的警告可以忽略。然後再在終端輸入:source ~/.bashrc 讓配置生效

    創建鏈接文件,終端輸入:

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

    在打開的文件中添加語句:

    /usr/local/cuda/lib64
        1

    文檔保存關閉後終端輸入:

    sudo ldconfig
        1

    查看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

    1
    2

創建庫文件鏈接: 注意進入相關目錄找到對應的.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

    1
    2
    3
    4

安裝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

    1
    2
    3
    4
    5
    6
    7

確保上面依賴項安裝了
然後其他參看下面博客安裝:

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

    1

安裝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

    1
    2
    3
    4
    5
    6
    7
    8

第二步 下載caffe

使用Git直接下載Caffe ,沒安裝git就按照提示安裝一下

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

    1
    2

第三步 修改Makefile.config

1、進入 caffe ,將 Makefile.config.example 文件複製一份並更名爲 Makefile.config ,也可以在 caffe 目錄下直接調用以下命令完成複製操作 :

sudo cp Makefile.config.example Makefile.config

    1

複製一份的原因是編譯 caffe 時需要的是 Makefile.config 文件,而Makefile.config.example 只是caffe 給出的配置文件例子,不能用來編譯 caffe。

2、修改 Makefile.config 文件,在 caffe 目錄下打開該文件:

sudo gedit Makefile.config

    1

在文件中替換一下幾個地方:

...

#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
...

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53

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
...

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

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!

    1
    2
    3
    4

第四步 編譯
在caffe目錄下執行

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

    1
    2

測試:

sudo make runtest -j8

    1

openpose編譯安裝:
如果上面caffe按操作來不踩坑,建議參考下面博客編譯openpose一般沒問題:
https://blog.csdn.net/qq_27838651/article/details/89282776

下載OpenPose:

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

    1

下載模型(這一步可跳過,因爲之後會自動下載):

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

    1
    2
    3
    4

打開cmke軟件:

cmake-gui

    1

填寫openpose源碼目錄以及build:
在這裏插入圖片描述
點擊Configure按鈕, 選擇Unix Makefile和use default native compling,點擊finish按鈕

點擊Generate按鈕,中間會出現一些紅色的可配置項。之後按圖操作配置caffe編譯路徑 :
在這裏插入圖片描述在這裏插入圖片描述【如果使用OpenPose的 Python API,需要在 CMake GUI 中設置 BUILD_PYTHON, 並且下載pybind11解壓後的文件拷貝到3rdparty/pybind11/下即可】
最後點擊Generate按鈕

OpenPose 編譯

cd OPENPOSE_ROOT/build/
make -j`nproc`

    1
    2

編譯過程中出現過一個錯誤: 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

    1
    2
    3

最後重新編譯caffe。
測試:

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

    1

其他相關
下面是所有安裝用到的東西請下載
鏈接: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 ..

    1
    2
    3
    4
    5
    6
    7
    8

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/ 路徑.)
https://blog.csdn.net/u011117131/article/details/103565254

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章