概要
OpenPoseという骨格推定ができるOSSがめっちゃすごい!
さらに最近、本家にPython APIが実装されたみたいなので、試してみました。
Ubuntu 14.04.5 LTS(GPUあり)です。
インストール
以下、${HOME}/openpose_ws
というフォルダ以下をワークスペースとして説明します
なお、本記事執筆時点でのOpenposeのコミット番号は7c21e0b6b184e4dd0b7e119f470089a4149b6e2d
です。
$ mkdir ${HOME}/openpose_ws
$ cd ${HOME}/openpose_ws
$ git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose
$ cd openpose
($ git checkout 7c21e0b6b184e4dd0b7e119f470089a4149b6e2d) # 必要であれば行ってください
$ mkdir build; cd build
$ cmake -DBUILD_PYTHON=true ..
$ make -j5 # -j5 は自身の環境に合わせて変更してください
$ sudo make install
実行結果
$ cd {HOME}/openpose_ws/openpose/build/examples/tutorial_python
$ python 1_extract_pose.py
上記実行後、detectの結果と以下の画像が表示されればOK
python実装についてのメモ
1_extract_pose.py
の中身を少し見てみたので、メモです。
parameterの辞書を引数としてOpenPose
のインスタンスを生成し(37行目)、
openpose.forward(image, display)
にて、結果を受け取る流れみたいです。
めっちゃ簡単ですね!
なお、forward
関数の第一引数は、numpyarray, 第二引数のdisplay
は、OpenPoseで骨格推定結果を埋め込んだ画像を返り値に含めるかどうかのフラグです。
なので、keypointsの配列のみ欲しい場合は、43行目の部分を
keypoints = openpose.forward(img, False)
と変更する必要有です。
以下、1_extract_pose.py
の抜粋です。
...
22 params = dict()
23 params["logging_level"] = 3
24 params["output_resolution"] = "-1x-1"
25 params["net_resolution"] = "-1x368"
26 params["model_pose"] = "BODY_25"
27 params["alpha_pose"] = 0.6
28 params["scale_gap"] = 0.3
29 params["scale_number"] = 1
30 params["render_threshold"] = 0.05
31 # If GPU version is built, and multiple GPUs are available, set the ID here
32 params["num_gpu_start"] = 0
33 params["disable_blending"] = False
34 # Ensure you point to the correct path where models are located
35 params["default_model_folder"] = dir_path + "/../../../models/"
36 # Construct OpenPose object allocates GPU memory
37 openpose = OpenPose(params)
38
39 while 1:
40 # Read new image
41 img = cv2.imread("../../../examples/media/COCO_val2014_000000000192.jpg")
42 # Output keypoints and the image with the human skeleton blended on it
43 keypoints, output_image = openpose.forward(img, True)
...
OpenPose
クラスは、${HOME}/openpose_ws/openpose/build/python/openpose/openpose.py
にて定義されているので、
もっと詳細が知りたい方は、こちらを確認してみてください。
その他
python2(.7.6)およびpython3(.4.3)でも動作しました!
なお、/usr/local/python/openpose
に必要なライブラリがインストールされるので、PYTHONPATH
を、
インストール先フォルダに設定して、35行目のparams["default_model_folder"] = dir_path + "/../../../models/"
を
自身の環境に合わせて修正することが必要です。