OpenPoseをUbuntu18.04に導入する方法(2019.11)(※2021.11一部更新)


#OpenPoseとは
![Screenshot from 2019-11-21 14-55-50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536871/85f1465e-ac17-1fd6-195a-571b2bd30037.png)

OpenPoseは、画像から骨格を推定することができるソフトです。研究室の教授から薦められたものの、導入に手こずってしまったので手順を具体的に記していこうと思います。

基本的には、以下のOpenPose公式を参考にしています。（英語）
https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master

#環境構築の前に注意！！（スペックに関して）
うちの研究室は画像や音声処理を扱った研究室なのですが、私はもともと音声処理の研究をしています。そのため、コンパクトサイズに収まるMacminiを使用していましたが、CPUに搭載されている内蔵GPUで動かそうとすると、びっくりするぐらい解析に時間がかかります。（0.1fpsくらい、10分の動画なら2~3日かかるレベル）
そこで、教授にお願いして映像処理に対応できるPCを支給してもらいました。（先生ありがとうございます。）

今回使用したPCのスペックはこちらです。

- CPU: Intel Core i7 8700 
- GPU: Nvidia Geforce 1660
- Memory: 8GB
- OS:Ubuntu 18.04

この環境下であれば、サクサクとまでは行かないものの十分作業ができます。

#まずは、GPUまわりのtensolflow環境の構築
まずはじめにGPUの環境を整える必要があります。基本的には以下のサイトがとても参考になるので、そちらを参考にしてほしいです。
https://www.nemotos.net/?p=3176

~~ただし、ひとつだけ注意しなければならないことがあります。~~
**(2021.11更新)注意事項が２つに増えました。**

###1．**OpenPose推奨のCUDA10台のバージョンは、RTX3000番台には非対応**
これらのGPUを使っている場合は、**CUDA11とCUDA10の両方をダウンロード**した上で、CUDA10にあってCUDA11にないファイルをコピペしてください。


###2.NVIDIAアカウントを作成する必要がある
**cuDNNをinstallするときに、**

```terminal:
sudo apt install --no-install-recommends cuda-10-1 libcudnn7 libcudnn7-dev
```
**で導入できるという旨が書かれていますが、cuDNNを導入するためには、nvidiaのアカウントを用いて直接サイトからダウンロードしないと弾かれてしまいます。（ここは盲点です。）**

以下のサイトからダウンロードできます。
https://developer.nvidia.com/rdp/cudnn-download

すべての作業が完了し、terminalで次のような感じになればOKです！

```terminal:
$ nvidia-smi
Thu Nov 21 16:14:59 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.50       Driver Version: 430.50       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 1660    Off  | 00000000:01:00.0  On |                  N/A |
| 33%   36C    P8    15W / 120W |    474MiB /  5936MiB |      1%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1259      G   /usr/lib/xorg/Xorg                            36MiB |
|    0      1305      G   /usr/bin/gnome-shell                          51MiB |
|    0      1626      G   /usr/lib/xorg/Xorg                           194MiB |
|    0      1772      G   /usr/bin/gnome-shell                         121MiB |
|    0      2328      G   /usr/lib/firefox/firefox                       3MiB |
|    0      2549      G   ...quest-channel-token=4185260004788428097    65MiB |
+-----------------------------------------------------------------------------+

```

#OpenCVも忘れずに！
sudo aptで、ぱっと手にはいります。

```terminal:
sudo apt install libopencv-dev
```

#CMake GUIの導入（最重要事項）

（注意！！OpenPoseのオフィシャルによると、Anacondaを導入しているPCでは、OpenPoseがうまく動作しない場合があります。）

##ubuntu 14or16の場合
 
terminalに次のことを打ち込めば、設定は完了です。

```terminal:
sudo apt-get install cmake-qt-gui
```


##ubuntu 18の場合
1.まずは、古いcMakeをアンインストールします。

```terminal:
sudo apt purge cmake-qt-gui
```
その後、次を実行します。

```terminal:
sudo apt-get install qtbase5-dev
```

2.新しいcMakeをダウンロード
次のサイトの、Latest ReleaseのLinux Sourceから、cmake-X.X.X.tar.gzをダウンロードします。
https://cmake.org/download/

それを解凍して、openposeと同じディレクトリに配置しておきます。

3.ｃMakeのインストール

次のコマンドを実行します。

```terminal:
./configure --qt-gui
./bootstrap && make -j`nproc` && sudo make install -j`nproc`
```

これで、エラーが起きなければ準備完了です。

#OpenPoseを実際にインストール

```terminal
$ git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose 
$ cd openpose 
$ sudo bash ./scripts/ubuntu/install_deps.sh
$ mkdir build
$ cd build
$ cmake ..
$ make -j`nproc`
$ sudo make install
```

あとは、実行するだけです。


#OpenPoseを実際に動かしてみる。

以下のコマンドを打ち込みます。

```terminal
$ cd ..
$ ./build/examples/openpose/openpose.bin --video examples/media/video.avi
```

![Screenshot from 2019-11-21 14-55-50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536871/0f30c0c9-497e-2d32-4c33-6e3727a0776d.png)
このような画面が出て来れば、成功です。

自分が用意したものを再生したいときは、video.aviの部分を用意したファイルに変えてもらえればOKです。

#参考になったサイト
- [Ubuntu18.10にopenposeをインストール(環境構築)](https://kimbio.info/ubuntu18-10%E3%81%ABopenpose%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89)
- [Ubuntu 18.04 で、NVIDIAのリポジトリを利用してtensorflow-gpu環境を構築するシンプルな方法](https://www.nemotos.net/?p=3176)