在Ubuntu18.04 安装Openpose总是不成功。开源的东西就是这样,没有准头,版本之间的依赖关系非常复杂。于是重新安装了最新的Ubuntu20.04版本。现在已经安装好了,将中间所花的时间,所踩的坑,尽量记录下来,整理成文字,希望看到这篇博文的朋友能少走一些弯路。
本人也是在Openpose搭建过程中花费了大量的时间,反复都没能成功后,多次搭建,将成功的经验写出来,本博文持续更新,相信持续的更新,能让本帖真正解决openpose环境搭建的问题。
如有同行觉得有那些无法执行成功,可以在评论区提出,我们会验证并贴出实验结果。
主要参考的资料链接
https://qengineering.eu/install-caffe-on-ubuntu-20.04-with-opencv-4.4.html
这里主要包括对上面英文资料的翻译
Caffe是2013年开发的,当时OpenCV是2.4.13版本,python也只有python2。当前Ubuntu20.04默认python3.8。其他各种组件都在不断的更新,所以这里介绍Ubuntu20.04版本安装Caffe。
安装CUDA
删除以前的cuda
sudo /usr/local/cuda-10.1/bin/cuda-uninstaller
sudo apt --purge remove nvidia* #彻底卸载N卡驱动
在安装Cuda之前,必须选择Openpose已经测试过的版本组合:可以直接查询这个网址
Note: OpenPose has been tested extensively with CUDA 11.1.1 (cuDNN 8.0.5) for Ubuntu 20. Older OpenPose versions (v1.6.X and v1.5.X) were tested with CUDA 10.1 (cuDNN 7.5.1) for Ubuntu 18 and CUDA 8.0 (cuDNN 5.1)
推荐直接使用 ./scripts/ubuntu/install_cuda.sh 安装
所以,为了安装openpose,显卡如果不支持这两个版本,不知道换硬件可不可以。
参考:https://blog.csdn.net/qq_42341984/article/details/110326344
首先通过nvidia-smi命令显示当前nvidia的情况:
edward@Server-adiAi:~/software/openpose$ nvidia-smi
Sun Jan 10 09:47:09 2021
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 455.45.01 Driver Version: 455.45.01 CUDA Version: 11.1 |
|-------------------------------+----------------------+----------------------+
| 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 GeForce RTX 206... Off | 00000000:01:00.0 On | N/A |
| 41% 19C P8 10W / 175W | 230MiB / 7979MiB | 4% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
如果没有安装,则查询当前设备后安装驱动
sudo ubuntu-drivers devices sudo apt install nvidia-driver-435驱动安装之后,需要重新启动电脑。
为什么采用CUDA也是非常无奈的事情,需要根据所购买的卡来下载合适的cuda版本,可以到 https://developer.nvidia.com/cuda-gpus 这个地址去查。
这里严重声明一下:这个地址,如果是在中国下载,或对方检测到了是中国的IP地址,那么,下载会自动跳转,然后下载一个32B的无意义的东西,而且还不给半点提示,这个花费了我们大量的时间。明显就只针对中国人的一种歧视。不是正常人可以干出来的事情。几乎整个AI都被英伟达给绑架了,美国人早点暴露,或许我们会有更好的GPU。退一步讲,既然我们已经购买了英伟达的显卡,为何还对中国实行封锁就非常不道义。封锁是美国政府的事情,既然已经把显卡买到了中国,不开放cuda的行为就像是收了钱还不给货,或者收了钱还把人家正常购买的东西变成废品。这完全不是一个负责人的公司干的事情。
解决办法就是到网上去寻找已经下载了的cuda安装程序。我也是在网上下载的程序,这是我使用的资源:
差一些的显卡是安装不了cuda的,需要性能大于3.0。
安装cudnn
sudo dpkg -i libcudnn8_8.0.3.33-1+cuda11.0_amd64.deb
sudo dpkg -i libcudnn8-dev_8.0.3.33-1+cuda11.0_amd64.deb
sudo dpkg -i libcudnn8-samples_8.0.3.33-1+cuda11.0_amd64.deb
检查cudnn的版本信息输入如下命令:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
如果出现如下信息,说明cuDNN已正确识别。
#define CUDNN_MAJOR 7
#define CUDNN_MINOR 6
#define CUDNN_PATCHLEVEL 5
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
#include "driver_types.h"
cudnn8里面cudnn.h已经没有CUDNN_MAJOR这个信息。编译时,caffe.make 会检查CUDNN_VERSION,将#define CUDNN_VERSION 8005 加入到/usr/include/cudnn.h 所有头文件的前面
用cmake编译的时候,CUDA_VERSION 是根据 /usr/bin/nvcc --version 来寻找cuda版本的
测试cuDNN
官方说法:To verify that cuDNN is installed and is running properly, compile the mnistCUDNN sample located in the /usr/src/cudnn_samples_v8 directory in the debian file.
0. Copy the cuDNN sample to a writable path.
cp -r /usr/src/cudnn_samples_v8/ $HOME
Go to the writable path.
cd ~/cudnn_samples_v8/mnistCUDNN
这个最好是进去再make,不然在文件外面操作可能有权限的问题。
2. Compile the mnistCUDNN sample.
编译文件。
sudo make clean
sudo make
3. Run the mnistCUDNN sample.
运行样例程序。
sudo ./mnistCUDNN
4. If cuDNN is properly installed and running on your Linux system, you will see a message similar to the following:
如果成功运行,会显示下列信息:
Test passed!
---经过测试,这一步需要能够通过。
安装Caffe(直接在Openpose内的caffe编译,然后让opencv/openpose用这个目录下的caffe)
首先安装依赖:
$ sudo apt-get install cmake git unzip
$ sudo apt-get install libprotobuf-dev libleveldb-dev liblmdb-dev
$ sudo apt-get install libsnappy-dev libhdf5-serial-dev protobuf-compiler
$ sudo apt-get install --no-install-recommends libboost-all-dev
$ sudo apt-get install libatlas-base-dev libopenblas-dev
$ sudo apt-get install the python3-dev python3-skimage
$ sudo pip3 install pydot
$ sudo apt-get install graphviz
下载caffe
git clone https://github.com/BVLC/caffe.git
这里必须使用git
clone 之后,需要回退caffe的版本,这一步非常重要。新版本会有很多无法处理的问题,都不知道如何收集这些问题。详细的信息可以参考:
https://blog.csdn.net/weixin_34826139/article/details/112222956
git下载caffe
sudo git clone https://github.com/BVLC/caffe.git
更新版本
git checkout f019d0d
因为是需要编译openpose,所以将caffe拷贝到~/libs/openpose/3rdparty/caffe目录下。