LoginSignup
378
338

More than 5 years have passed since last update.

OpenPoseを動かしてみた。

Last updated at Posted at 2017-05-06

目次

1.OpenPoseを動かしてみた。
2.OpenPoseチュートリアルのソースコードを読む。
3.WindowsでOpenPoseを動かしてみた。
4.OpenPoseのFace Estimationを動かしてみた。
5.OpenPoseのHand Estimationを動かしてみた。

背景

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

早速、Ubuntu(1404)で、OpenPoseのPose Estimationを動かしてみたので、手順を解説します。
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:
動画:
Realtime Multi-Person 2D Human Pose Estimation using Part Affinity Fields, CVPR 2017 Oral - YouTube
プレゼン:
Multi-person pose estimation-CMU
論文:
https://arxiv.org/pdf/1611.08050.pdf

使用環境

Description: Ubuntu 14.04.5(x64) LTS trusty
CUDA Version 8.0.61
NVIDIA-SMI 375.66 / Driver Version: 375.66 / GeForce GTX 1050
gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
OpenPose 1.0.0rc1(Apr 2017)

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

基本的には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

HOMEの.bashrcに以下を追記。

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

cuDNNのインストール

https://developer.nvidia.com/rdp/cudnn-download
から、debをダウンロードしてインストール。
ダウンロードにはユーザ登録が必要となる。

ver5.1

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

ver6.0

sudo dpkg -i libcudnn6-dev_6.0.21-1+cuda8.0_amd64.deb 
sudo dpkg -i libcudnn6_6.0.21-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

参考:linux - libEGL.so.1 is not a symbolic link - Stack Overflow

OpenCV , Atlasのインストール

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

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

openposeのインストール

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

 ./ubuntu/install_caffe_and_openpose_if_cuda8.sh 

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

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

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

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

./build/examples/openpose/openpose.bin

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

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

ソースをコンパイルしてみる。

openposeは/example/usercode以下にソースコードを格納すると、openpose直下のMakefileでコンパイルが通るようになっている。最小のサンプルである、"1_extract_from_image"(静止画を読み出し、スケルトン推定を行うサンプル)をusercode以下にコピーし、makeする。

cp examples/tutorial_pose/1_extract_from_image.cpp examples/user_code/
make

makeされた実行ファイルは、./build/examples/user_code/の下に格納されている。
./build/examples/user_code/1_extract_from_image.bin

なお、1_extract_from_image.cppは27行目でファイル名を指定している。ここのjpegファイル名を変更すれば、任意の画像を読み出すことができる。

DEFINE_string(image_path, "examples/media/COCO_val2014_000000000192.jpg","Process the desired image.");

所感

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

378
338
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
378
338