Uubuntu20.04配置openpose

Ubuntu20.04 RTX3060 安装openpose CUDA11.5.2 CUDNN

因为毕设需要用到openpose这个姿态识别库做一些工作,实在是遇到太多坑了,时间长怕又忘了,把具体的一些步骤记录下来。

1. Ubuntu安装
最开始在使用的时候直接就按照openpose的github教程一通操作,因为最开始自己安装的是ubunu18, 没有注意太多细节。后来在openpose编译的过程中才发现各种报错,搞了很久,最后才考虑到自己的显卡型号还要和环境的版本匹配起来,尤其因为他用到的caffe这种非常老的库,兼容性都非常差,最好就完全按照别人已经成功过的版本来做。因为我这里用的电脑显卡是RTX3060,于是按照openpose的github说明重新从系统开始按照对应版本全部重新装了一遍。

Ubuntu的安装在网上直接搜索和win10双系统的安装教程就可以找到,这里不再赘述。

装好系统之后第一步先安装后面要用到的cmkae,要求版本是>= 3.12

可以直接在网上官网下载,ubuntu20以上可以直接

sudo apt-get update
sudo apt-get install cmake-qt-gui
cmake --verison#查看我们的cmake版本
gcc --version#gcc版本,应该是用默认安装好的就可以了

下面是我的显示

y@y:~$ cmake --version
cmake version 3.16.3

CMake suite maintained and supported by Kitware (kitware.com/cmake).
y@y:~$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

2. Cuda11.5.2安装
这里特别要注意的就是Cuda的版本是和你的显卡型号对应的,要查清除哪个cuda对应你的显卡,不然后面编译会报错。

这里还有需要我们先安装nvidia显卡驱动,但是我在试错的过程中发现cuda的安装还会把我的显卡驱动给更新

nvidia-smi#可以查看已经安装的显卡驱动版本

我刚装好系统的时候显示如下

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.47.03    Driver Version: 510.47.03    CUDA Version: 11.6     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   44C    P0    N/A /  N/A |     10MiB /  6144MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1158      G   /usr/lib/xorg/Xorg                  4MiB |
|    0   N/A  N/A      1710      G   /usr/lib/xorg/Xorg                  4MiB |
+-----------------------------------------------------------------------------+

下面代码可以查看系统中安装了哪些nvidia的驱动

sudo dpkg --list | grep nvidia-*

有的教程会希望我们先卸载掉已经安装的nvidia/Cuda包,但是因为我的系统直接重装了,所以我并没有做下面这一步。

#(a) 
#Open a terminal window and type the following three commands to 
#get rid of any NVIDIA/CUDA packages you may already have installed:

sudo rm /etc/apt/sources.list.d/cuda*
sudo apt remove --autoremove nvidia-cuda-toolkit
sudo apt remove --autoremove nvidia-*

#(b) 
#Purge any remaining NVIDIA configuration files and the associated dependencies 
#that they may have been installed with.

$ sudo apt-get purge nvidia*
$ sudo apt-get autoremove
$ sudo apt-get autoclean

#(c) Remove any existing CUDA folders you may have in /usr/local/

    #This threw me for a loop the first several times I tried installing CUDA. 
    #There shouldn’t be any folders with the name “cuda” or “cuda-anything” 
    #in usr/local/ at this point!

$ sudo rm -rf /usr/local/cuda*

下面是cuda11.5.2的安装链接,完全按照教程安装即可

https://developer.nvidia.com/cuda-11-5-2-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=deb_local

下载安装之后需要修改环境变量

sudo gedit ~/.bashrc

在文件最后添加以下环境变量到 ~/.bashrc 并保存退出。

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

or
export PATH=/usr/local/cuda-11.4/bin:$PATH 
export LD_LIBRARY_PATH=/usr/local/cuda-11.4/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda

export PATH=/usr/local/cuda-11.4/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.4/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda
or

echo 'export PATH=/usr/local/cuda-11.4/bin:$PATH' >> ~/.bashrc 
echo  'export LD_LIBRARY_PATH=/usr/local/cuda/lib64' >> ~/.bashrc

激活环境变量

source ~/.bashrc

检查

nvcc -V
nvidia-smi

下面是我的显示

y@y:~$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Thu_Nov_18_09:45:30_PST_2021
Cuda compilation tools, release 11.5, V11.5.119
Build cuda_11.5.r11.5/compiler.30672275_0

y@y:~$ nvidia-smi
Wed Jul  6 05:48:58 2022       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 495.29.05    Driver Version: 495.29.05    CUDA Version: 11.5     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  On   | 00000000:01:00.0 Off |                  N/A |
| N/A   45C    P8    13W /  N/A |     10MiB /  5946MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1204      G   /usr/lib/xorg/Xorg                  4MiB |
|    0   N/A  N/A      1860      G   /usr/lib/xorg/Xorg                  4MiB |
+-----------------------------------------------------------------------------+

3. cuDNN8.3.2安装
链接如下:

https://developer.nvidia.com/rdp/cudnn-archive

下载之后在本地文件夹解压,然后进到解压出来的文件,里面有incldue和lib两个文件

$ sudo cp include/cudnn*.h /usr/local/cuda/include  
$ sudo cp -P lib/libcudnn* /usr/local/cuda/lib64  

# reset the read and write permissions of the cudnn.h file
$ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn* 

测试安装

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR 
lude/cudnn_version.h | grep CUDNN_MAJOR
#define CUDNN_MAJOR 8
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)


cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

lude/cudnn_version.h | grep CUDNN_MAJOR -A 2
#define CUDNN_MAJOR 8
#define CUDNN_MINOR 3
#define CUDNN_PATCHLEVEL 2
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

#endif /* CUDNN_VERSION_H */

如果下载的是deb文件格式安装之后似乎还有一个样例可以测试,但是因为我下载的tar文件,参考大部分教程只需要复制文件夹就可以了,所以找不到可以测试的sample。

4. OpenCV安装

其实openpose的github上提供了一个opencv的依赖包说可以直接运行,但是我之前做的时候总会有一些奇奇怪怪的错误,避免万一自己再重新编译一遍opencv。

我参考的以下这篇文章里面安装opencv的方式

https://www.cnblogs.com/adiTech/p/14255744.html

git下载opencv的时候不要使用sudo

5. Caffe和openpose安装

因为openpose安装过程会自己编译caffe,所以我们只需要安装好caffe的依赖就好了。也有看到很多教程自己编译的了caffe,但是因为caffe的编译需要自己修改makefile文件,我本身对cmake不熟悉,容易出错,所以我就没有自己编译。

从git上下载openpose

git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose
cd openpose/
git submodule update --init --recursive --remote

Install Caffe prerequisites:

cd openpose
sudo bash ./scripts/ubuntu/install_deps.sh

CMake config generation prerequisites:

sudo apt install protobuf-compiler libgoogle-glog-dev

github上有一个python opencv的依赖包(其实不是很确定),但是我这里选择也把他装上

sudo apt-get install libopencv-dev

Clone Caffe and Pybind11 to 3rdparty folder:

我们刚下下来的git里面第三方依赖库是空的,我们需要自己下载对应的库到文件夹里面。

cd openpose/3rdparty/
git clone https://github.com/CMU-Perceptual-Computing-Lab/caffe.git

(Pybind11 is required to build OpenPose for its python API.)

git clone https://github.com/pybind/pybind11

接下来回到build目录里面

cmake-gui ..

然后按照需求generate之后在build文件夹里

make -j`nproc`

在openpose文件夹内跑例程验证

$./build/examples/openpose/openpose.bin --video examples/media/video.avi
$./build/examples/openpose/openpose.bin --video examples/media/video.avi --face --hand

如果要输出到python:

#Compile the Openpose source

sudo make install

#Compile and build the python Openpose

cd openpose/build/python/openpose
sudo make install

#Test: Go to tutorial_api_python run test image using python3

cd openpose/build/examples/tutorial_api_python
python3 01_body_from_image.py

Python API

#To use Openpose API in your python script use the import of Openpose like the below

import sys 
sys.path.append('/usr/local/python') 
from openpose import pyopenpose as op

写在最后:
虽然算是跑起来了,但是其实还有很多问题,比如cmake如果打开了cudnn开关,在跑例程的时候加入–face或者–hand都是报错:

Check failed: error == CUDNN_STATUS_SUCCESS (4 vs. 0) CUDNN_STATUS_INTERNAL_ERROR

而且我的现存大概是有6g的,但是我只能将–net_resolution设置到非常低才会不报out of memory的错误。
最后只能把cudnn的选项去掉进行cmake才能勉强跑起来。

如果有朋友有经验如果解决这些问题,欢迎来指导和讨论~

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值