OpenPoseとは
OpenPoseはDeep Learningを使って単眼カメラから人体姿勢を推定するライブラリで,CVPR2017でRealtime Multi-Person 2D Pose Estimation using Part Affinity Fieldsというタイトルで発表されたもの.
OpenPose
公式ページの情報を要約すると,画像,ビデオ,webcam,IPカメラから18点のキーポイントが検出可能.各種フォーマットで結果を保存可能.
他にも,左右の手から21点,顔から70点のキーポイントを検出するオプションもある.
これらはUbuntu,Windows,Nvidia Jetson TX2で動作する.
というわけで,色々な用途に使えるので,よく使うオプションのメモ.
実行方法
例えば,USBカメラを使う場合は以下の通り.
./build/examples/openpose/openpose.bin
ディレクトリ内の画像を一括で処理する場合
./build/examples/openpose/openpose.bin -image_dir /path/to/image
ビデオに対して処理する場合
./build/examples/openpose/openpose.bin -video /path/to/vieo
IPカメラの場合
./build/examples/openpose/openpose.bin -ip_camera (RTSPかHTTPでURLを指定)
姿勢推定結果の画像を保存したい
以下のオプションを追加
-write_images /path/to/directory
元画像を保存したい
以下のオプションを追加
-render_pose 0 -write_images /path/to/output_directory
ちなみに,-render_pose 1 でCPUを使った描画になり,デフォルトの -render_pose 2 よりも高速.
姿勢推定結果の座標値を保存したい
以下のオプションを追加
-write_keypoint /path/to/output_directory
デフォルトではyml形式で保存される.ファイルは,-write_imageをした時の画像と同じ番号が割り振られるので,画像とほぼ同じファイル名で1画像1ファイルで保存されていく.
Part Affinity Fieldsの情報を保存したい
以下のオプションを追加
--heatmaps_add_PAFs true -write_heatmaps /path/to/output_directory
デフォルトではPNG形式で保存される.ファイルは,-write_imageをした時の画像と同じ番号が割り振られるので,画像とほぼ同じファイル名で1画像1ファイルで保存されていく.
全チャネルを横に並べた横に非常に長い画像が生成される.
初歩的な質問で申し訳ありません。
pose_keypoints_3dの出力方法を教えていただけないでしょうか。
よろしくお願いします。
pose_keypoints_3dを出すためには,FLIRのカメラを2台以上(3台以上がベター)をキャリブレーションしたあと,同期して撮影しないといけません.
また,OpenPoseをそれ用にコンパイルする必要があり,結構大変です.
https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/modules/calibration_module.md
https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/modules/3d_reconstruction_module.md#using-a-different-camera-brand
これは結構大変なのですが,代わりの手段として,OpenPoseの2D keypointsから3Dを推定する方法もあります.
以下のページが参考になるかもしれません.
http://akasuku.blog.jp/archives/73745862.html