OpenPoseを動かしてみた。

  • 15
    いいね
  • 0
    コメント

背景

CVPR2017で発表された、DeepLearningを使った、単眼カメラでのスケルトン検出アルゴリズムが、OpenPoseという名称でライブラリ化・公開された。

早速、Ubuntu(1404)で、OpenPoseを動かしてみた。
https://github.com/CMU-Perceptual-Computing-Lab/openpose

Screenshot from 2017-05-06 23:33:40.png
上記画像ソースは、[ ぱくたそ(www.pakutaso.com)]様のフリー写真素材を使用しました。

論文

Realtime Multi-Person 2D Human Pose Estimation using Part Affinity Fields, CVPR 2017:
動画:
https://www.youtube.com/watch?v=pW6nZXeWlGM&t=77s
プレゼン:
http://image-net.org/challenges/talks/2016/Multi-person%20pose%20estimation-CMU.pdf
論文:
https://arxiv.org/pdf/1611.08050.pdf

ライブラリのインストール

基本的にはdoc/installation.mdを参照してインストールすれば良い。
https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/installation.md
OpenPoseは、CUDA, cuDNN, OpenCV, Atlas を予めインストールする必要がある。
私の環境はUbuntu1404の為、CUDA8.0とcuDNN5.1をインストールした。

CUDAのインストール

https://developer.nvidia.com/cuda-downloads
から、debをダウンロードしてインストール。

sudo dpkg -i cuda-repo-ubuntu1404-8-0-local-ga2_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda

cuDNNのインストール

https://developer.nvidia.com/rdp/cudnn-download
から、debをダウンロードしてインストール。

sudo dpkg -i libcudnn5-dev_5.1.10-1+cuda8.0_amd64.deb
sudo dpkg -i libcudnn5_5.1.10-1+cuda8.0_amd64.deb

ここで、私の環境では、

libEGL.so.1 is not a symbolic link

が出た為、以下の用にリンクを修正。

sudo mv /usr/lib/nvidia-375/libEGL.so.1 /usr/lib/nvidia-375/libEGL.so.1.org
sudo mv /usr/lib32/nvidia-375/libEGL.so.1 /usr/lib32/nvidia-375/libEGL.so.1.org
sudo ln -s /usr/lib/nvidia-375/libEGL.so.375.39 /usr/lib/nvidia-375/libEGL.so.1
sudo ln -s /usr/lib32/nvidia-375/libEGL.so.375.39 /usr/lib32/nvidia-375/libEGL.so.1

参考:http://stackoverflow.com/questions/43016255/libegl-so-1-is-not-a-symbolic-link

OpenCV , Atlasのインストール

これはapt-getでインストールすれば良い。

sudo apt-get install libopencv-dev
sudo apt-get install libatlas-base-dev

openposeのインストール

openpose直下の、下記のファイルを実行すると、付随して必要なライブラリ・学習器のダウンロード・インストールと、サンプルのコンパイルが行われる。
./install_caffe_and_openpose.sh

サンプルを動かしてみる。

1. サンプル動画で動かしてみる

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

2. Webカメラで動かしてみる

./build/examples/openpose/rtpose.bin

3. サンプル静止画で動かしてみる

./build/examples/openpose/rtpose.bin --image_dir examples/media/

所感

 RGB-Dカメラでも、ステレオでもない、単眼のWEBカメラでリアルタイムにスケルトン検出ができてるのを見ると、純粋に技術の進歩を感じる。