OpenPose と 3D再構成 – Part 1: OpenPose のセットアップ

OpenPose で人の動きを取得し、3D再構成につなげるシリーズの第1回です。Part 1 では、Windows に OpenPose をインストールし、コマンドラインから実行して2Dの姿勢推定データ(JSON)を出力するまでを扱います。上の動画で全手順を画面付きで解説しているので、本記事を見ながら一緒に進めてください。

シリーズ全5回の構成スライド
本シリーズは全5回構成です。
  1. OpenPose セットアップ(本記事)
  2. カメラキャリブレーション
  3. 3D再構成
  4. キネマティクスシミュレーション
  5. キネティクスシミュレーション

OpenPose とは

OpenPose は、カーネギーメロン大学 Perceptual Computing Lab が開発した、複数人対応のリアルタイム2D姿勢推定システム(オープンソース)です。動画から body・face・hand のキーポイントを検出し、JSON として書き出します。本シリーズの後半では、複数のカメラ角度から得たこの2Dキーポイントを統合して、動きを3Dで再構成します。

ステップ1 — ポータブル版をダウンロード

「OpenPose release」で検索するか、GitHub の OpenPose リリースページへ直接アクセスします。最新版(収録時点では v1.7.0)を開き、自分の環境に合うポータブル版をダウンロードします。

OpenPose v1.7.0 の GitHub リリースページ(CPU版・GPU版のダウンロード)
OpenPose v1.7.0 のリリースページ。NVIDIA GPU があれば GPU版、なければ CPU版を選びます。
  • GPU版openpose-1.7.0-binaries-win64-gpu-python3.7-flir-3d_recommended.zip(約418MB)。NVIDIA GPU があるならこちら。高速です。
  • CPU版openpose-1.7.0-binaries-win64-cpu-python3.7-flir-3d.zip(約146MB)。CPUのみの場合はこちら。動きますが低速です。

解凍すると、binmodelspython などのフォルダと、目を通しておくとよい Instructions(テキスト)が入っています。ただし最重要なのは次のステップです。

ステップ2 — モデルをダウンロード

OpenPose には学習済みモデルが同梱されていないため、最初に一度だけ取得します。models フォルダを開き、同梱のバッチファイルをダブルクリックすると、必要な body・face・hand のモデルが自動でダウンロードされます。

解凍した OpenPose フォルダ(bin・models・python と Instructions ファイル)
解凍後の OpenPose フォルダ。バッチファイルは models フォルダ内にあります。

ステップ3 — Visual C++ 再頒布可能パッケージを入れる

ここまでで技術的には実行可能ですが、Visual Studio が入っていない環境では起動時にエラーが出るのが一般的です。対処として、Microsoft Visual C++ 再頒布可能パッケージ(Visual Studio 2015–2022)をインストールします。Microsoft 公式ページからダウンロードできます: 最新の Visual C++ 再頒布可能パッケージ。自分の環境に合うもの(最近のPCはほぼ x64)を選んでください。多くの起動エラーはこれで解決します。

Microsoft Visual C++ 再頒布可能パッケージのダウンロードページ
Microsoft Visual C++ 再頒布可能パッケージのダウンロードページ。

デモを動かすだけなら Python は必須ではありません。別のエラーが出た場合は、OpenPose の公式ドキュメントに多くの解決策が載っています。ただし、よくあるエラーは上記の再頒布パッケージで解決します。

ステップ4 — コマンドラインから実行

OpenPose フォルダ内でコマンドプロンプトを開きます(フォルダのアドレスバーに cmd と入力)。よく使う引数はテキストファイルにまとめておき、コピペするのが便利です。姿勢推定データを取得する代表的なコマンドは次のとおりです。

bin\OpenPoseDemo.exe --video INPUT.avi --write_json OUTPUT_FOLDER --display 0 --render_pose 0 --net_resolution -1x320
OpenPoseDemo.exe を video・write_json・display・render_pose・net_resolution 引数付きで実行
主要な引数を付けて OpenPoseDemo.exe を実行している様子。

各引数の意味:

  • --video — 姿勢推定したい入力動画のパス(例: .avi ファイル)
  • --write_json — JSON キーポイントを保存するフォルダ
  • --display 0 — ライブ表示ウィンドウをオフにし、処理時間を大幅に短縮
  • --render_pose 0 — 骨格の重畳描画をスキップ(同じく高速化。後から動画+JSONで重畳可能)
  • --net_resolution -1x320 — ネットワーク入力解像度

メモリ不足のヒント: 高解像度の動画ではメモリクラッシュが起きることがあります。その場合は --net_resolution の末尾の数値を下げます(例: -1x160)。環境に合うまで調整してください。

デモで使ったデータ

動画内のサンプル映像は、被験者のスクワットを 12台のカメラでほぼ360度から、100fps2048×1536 で撮影したものです。この同期した12視点が、シリーズ後半の3D再構成に必要になります。

次回

OpenPose をインストールして JSON キーポイントを出力できたら、Part 2 はカメラキャリブレーションです。各カメラ視点を互いに関連づけるための工程を扱います。見逃さないよう、YouTube のチャンネル登録をぜひ。


著者について

Takashi Fukushima — スポーツ・運動科学 × Human Pose Estimation × Computer Vision × XR を横断して研究・開発しています。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール