OpenPose Installation : Ubuntu16.04 + CUDA10.0 + cuDNN7.5

一、Ubuntu16.04 (Desktop)

登陆界面死机

可能是因为 Ubuntu 自带开源显卡驱动 nouveau 与你的硬件不兼容,需要在进入系统前禁用 nouvea 。在 grub 界面(选择开机启动的界面)按 e,在 quiet splash 后面加上 nouveau.modeset=0 ,按 f10 保存重启(仅在接下来的一次重启后有效)。

wifi无法使用

sudo touch /etc/modprobe.d/blacklist.conf
sudo gedit /etc/modprobe.d/blacklist.conf

在打开的文件中输入 blacklist ideapad_laptop(不一定是 ideapad_laptop,因设备而异,可参考 关于ubuntu下Wi-Fi已通过硬件开关禁用的解决办法)。

sudo update-initramfs -u

二、显卡驱动

禁用自带驱动 nouveau

sudo touch /etc/modprobe.d/blacklist-nouveau.conf
sudo gedit /etc/modprobe.d/blacklist-nouveau.conf

在打开的文件中输入

blacklist nouveau
options nouveau modeset=0
sudo update-initramfs -u
reboot

重启后在终端中使用命令 lsmod | grep nouveau 查看 nouveau 是否已被禁用,命令无输出则已被禁用。

安装驱动

驱动版本和 CUDA 版本对应关系参考:CUDA 版本,显卡驱动,Ubuntu版本,GCC版本之间的对应关系。
ctrl + alt + f1 进入init3 文字模式,关闭 x-window 服务 sudo service lightdm stop

  • 使用官方 ppa 源安装
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-410 –no-opengl-files #CUDA10.0要求驱动版本在410及以上
reboot
  • 使用 nVidia 官方下载的 runfile 安装
sudo chmod a+x NVIDIA.run #runfile需在/home目录下
sudo ./NVIDIA.run –no-opengl-files
reboot

卸载驱动

如果安装驱动后出现循环登录等情况,可能需要卸载并更换驱动版本。
ctrl + alt + f1 进入init3 文字模式,关闭 x-window 服务 sudo service lightdm stop

  • 如果驱动是 ppa 源安装的
sudo apt-get remove --purge nvidia-*
sudo apt-get autoremove
sudo apt-get install -f
reboot
  • 如果是 runfile 安装的
sudo nvidia-uninstall
reboot

三、OpenPose Prerequisite

这一部分网上的教程很杂,下文的步骤都是 nVidia 和 OpenPose 官方给出的教程,强烈建议阅读官网的英文文档(见下文)。

https://github.com/CMU-Perceptual-Computing-Lab/openpose
https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/installation.md
https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/prerequisites.md

1.Cmake - gui

sudo apt-get install cmake-qt-gui

2.CUDA10.0

下载 CUDA10.0 deb(local) CUDA10.0 官方文档

sudo dpkg -i cuda-repo-ubuntu1604-10-0-local-10.0.130-410.48_1.0-1_amd64.deb #文件名需要相应修改
sudo apt-key add /var/cuda-repo-/7fa2af80.pub #该条语句会出现在终端的输出中,复制即可
sudo apt-get update
sudo apt-get install cuda
# 安装成功后执行下面的语句,如果是.run文件安装的,还需要额外命令,详见官方文档
echo 'export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}' >> ~/.bashrc
source ~/.bashrc

3.cuDNN7.5

下载 cuDNN7.5 cuDNN7.5 官方文档
分别下载 runtime,developer,sample and user guide 三个 deb 文件,下面的命令中的文件名需要相应更改,并且保持这三个顺序。

sudo dpkg -i libcudnn7_7.0.3.11-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-devel_7.0.3.11-1+cuda9.0_amd64.deb
sudo dpkg -i libcudnn7-doc_7.0.3.11-1+cuda9.0_amd64.deb

安装完成之后在 /usr/src/cudnn_samples_v7 目录中打开终端

cp -r /usr/src/cudnn_samples_v7/ $HOME
cd  $HOME/cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN

终端显示 Test passed! 则 cuDNN 和 CUDA 已经安装成功。

4.OpenCV

sudo apt-get install libopencv-dev

5.Caffe

下载 OpenPose,解压到 /home 目录下,文件名从 openpose-master 改为 openpose
下载 CMU 提供的 Caffe 版本,解压到 /home/openpose/3rdparty,删除 3rdparty 原有的空白的 caffe 文件夹,将解压的文件名称从 caffe-master 改为 caffe

安装依赖库 sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev(这几个库下面的 .sh 脚本中没有写,需要先手动装上)

在 caffe 文件夹中运行终端,输入 sudo ./install_caffe_if_cuda8.sh,自动安装相应的相应的依赖库并且编译 caffe(CMU 提供的 Caffe 版本相较官方版本,已经写好了几个脚本和 makefile.config 文件,可以阅读一下 install_caffe_if_cuda8.sh 文件,caffe 的依赖库也可以在其 官方文档 中查看)。

四、编译运行 OpenPose

1.Build

Caffe 成功编译后,打开 Cmake - gui,source code 路径填 /home/openpose/build the binaries/home/openpose/build/。点击 configure,将下载开始配置并下载 OpenPose 的模型,成功后点击 generate。

2.Run

/home/openpose/build/ 中打开终端,执行 sudo make -j 编译 OpenPose,成功后在 /home/openpose/ 中打开终端,执行 ./build/examples/openpose/openpose.bin --video examples/media/video.avi,运行 OpenPose 官方训练好的模型测试视频(也可以测试图片、摄像头等等,命令参见 官方 quick start 文档)。

如果最后运行时终端提示 out of memory,可能是显存不足,watch -n 0.1 nvidia-smi(watch realtime information of graphics card 命令可以在终端中监控 gpu 使用情况(”0.1“ 为数据刷新频率,单位为s,可以更改)。

./build/examples/openpose/openpose.bin --help 命令可以查看可选命令行参数。例如,net_resolution "720x540" 为调整识别分辨率,低分辨率会降低精度但能减少显存占用,分辨率需为 16 的倍数,并且建议保持或接近原长宽比;-- display 0 为不展示窗口,配合 write_video 来存储输出的视频;-- render_pose 1 为用cpu渲染,改为 2 用 gpu 渲染,cpu 渲染可以略微加快速度。

如果显存不足,可以尝试 ./build/examples/openpose/openpose.bin --video examples/media/video.avi --net_resolution "256x144" --rendor_pose 1;或者在文字模式下关闭 x-window(可以减少一百多 MB 的显存占用),再执行 ./build/examples/openpose/openpose.bin --video examples/media/video.avi --net_resolution "256x144" --render_pose 1 --display 0 --write_video examples/media/output.avi,结束后会在 media 文件下产生识别并渲染过的视频。

你可能感兴趣的