Windows への OpenPose導入手順
この記事は【目次】MMDモーショントレース自動化への挑戦の為の導入手順になります。
ノンエンジニアの方向けに、できるだけ平易に記載した…つもりです。
v2リリースに伴い、こちらの導入は廃止となりました。クラウド版をご利用ください
クラウド(colab)でMMD自動トレース
OpenPoseとは
OpenPose represents the first real-time multi-person system to jointly detect human body, hand, and facial keypoints (in total 130 keypoints) on single images.
OpenPoseは、単一の画像上で人体、手、顔面のキーポイント(全部で130個のキーポイント)を共同で検出する初めてのリアルタイムマルチユーザシステムです。
OpenPose - GitHub
OpenPoseを動かしてみた。 - Qiita
0. 推奨スペック
Openpose で推奨されているスペックは以下の通り
- OS
- Ubuntu 14 / 16
- Windows 8 / 10 (7もサポート対象外だがいけるらしい)
- GPUバージョン
- NVIDIA 1.6GB以上のグラボ
- 2GB 以上のメモリ
- 8コア以上のCPU
- CPUバージョン
- 8GB 以上のメモリ
- 8コア以上のCPU
1. OpenPoseDemo(ポータブル版) の実行
1.0. インストール公式手順書
This installation section is only intended if you plan to modify the OpenPose code or integrate it with another library or project. If you just want to use the OpenPose demo in Windows, simply use the latest version of the OpenPose binaries which you can find in the Releases section.
お手軽に試すだけなら、 Release ページから、コンパイル済みのバイナリファイルを入手することで実行可能です。
1.1. OpenPose(Portable Demo) の入手
1. Release ページから、最新のzipを入手する
※2018/07/07時点で、GPU版しかサイトに掲載されていないようです。
CPU1.3.0版をご希望の場合、私のGoogleドライブにあげたURLをコメント欄に貼ってます。
2. 解凍して、空白のないパス以下に配置する。私は以下に配置しました。
「C:\MMD\openpose-1.3.0-win64-cpu-binaries
」
3. 学習モデルを入手します。
「models\getModels.bat
」をダブルクリックする。
終わるとコマンドプロンプト(黒い画面)は自動的に閉じられます。
1.2. CUDA8 のインストール
※2018/05時点での最新版は9.1ですが、OpenPoseでは8.0を使用します。
CUDA Toolkit 8.0 - Feb 2017 | NVIDIA Developer
1. OS や インストール方法を選択する
2. 「Base Installer
」 の 「Download
」 ボタンを押下
3. ダウンロードしたexeファイルをダブルクリック
4. インストールパスはそのままで、「OK
」 ボタン
5. しばし待つ
6. 「同意して続行する
」を押下
7. 「高速
」を選択して、「次へ
」押下
8. 承諾のチェックボックをONにして、「NEXT
」
9. しばし待つ
10. セキュリティのポップアップが出たら、「インストール
」押下
11. そのまま「次へ
」
12. 「今すぐ再起動する
」
13. 再起動後、上記作業を、出ているパッチ分繰り返す
1.3. cuDNN 5.1 のインストール
※ CUDA8
に合わせて、過去リリースの cuDNN 5.1
を使用します。
1. 「DOWNLOAD cuDNN
」を押下
2. 承諾のチェックボックスをONにして、「Download cuDNN v7.1.3 (April 17, 2018), for CUDA 8.0
」>一番下の「Archived cuDNN Releases
」を順に押下
「Download cuDNN v5 (May 27, 2016), for CUDA 8.0
」>「cuDNN v5 Library for Windows 10
」を順に押下
3. ダウンロードした圧縮ファイルを解凍
4. 解凍した中身(cuda以下)を、CUDAをインストールしたディレクトリ以下にコピーする。デフォルトのままだと、以下にあるはずです。
「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
」
1.3. CUDAの確認
1. コマンドプロンプトで「nvcc --help
」と入力し、ヘルプが出てくることを確認する。
1.4. OpenPoseDemo の実行
1. コマンドプロンプトで、1.1. でインストールした OpenPose(Portable Demo)のディレクトリに移動し、デモexeを実行する
「bin\OpenPoseDemo.exe --video examples\media\video.avi
」
デモ動画に解析結果が出力されました!
2. まなこ様の「金曜日のおはよう
」も無事解析できました。でも、後ろになんか小さいのがいるw
「bin\OpenPoseDemo.exe --video examples\kinyoubi\158-010f.avi
」
3. 引数に画面内の最大人数を指定することで、背後霊は消えました。
「bin\OpenPoseDemo.exe --video examples\kinyoubi\158-010f.avi --number_people_max 1
」
4. OpenPoseDemo.exe は help を引くことも可能です。色々指定ができます。
「bin\OpenPoseDemo.exe --help
」
2. OpenPose のコンパイル
OpenPose(Portable Demo版)はお手軽に試せますが、自分のマシンに合わせたものではないため、色々不都合もあります。
私の場合、以下のような問題がありました。
- 処理が遅い
- 手や顔の認識機能が使えない
というワケで、自分の環境で、ソースコードをビルドして、マシンに合わせたexeを作成します。
※この作業は必須ではありません。とりあえずモーショントレース自動化をしてみたいという方は、「Portable Demo版」のまま次に進んでください。
※私の環境で上記問題が発生したのは、Portable Demo版のCPU版と自力ビルドのGPU版を比較した為でもあります。(当時はよく分かっていませんでした。)
Portable Demo GPU版と自力ビルド GPU版で、ほとんど差が出なかったという報告もいただいております。ご留意ください。
2.1. CMake GUI のインストール
1. CMake のWebサイトから「Windows win64-x64 Installer
」をダウンロードします。
2. ウィザードに従ってインストールしていきます。「Next
」押下。
3. 承諾のチェックボックスをONにして、「Next
」押下。
4. 「Add CMake tot the system PATH for the current user
」のラジオボタンにチェック(CMakeを環境変数PATHに追加)して、「Next
」押下。
5. インストールパスはデフォルトのまま、「Next
」押下。
6. 「Install
」押下。
2.2. Microsoft Visual Studio (VS) 2015 Enterprise Update 3 のインストール
※ 2018/05 現在、VS2017が最新のため、2015は公式HPからリンクが外されました。そのため、以下URLから直接ISOをダウンロードしてください。
Visual Studio 2015 with Update 3 日本語版
1. ISO起動
2. 「インストール
」押下。
3. しばし待つ
4. インストールが完了したらPC再起動
2.3. OpenPose のソースコード入手
※本来であれば、Git clone の方が手順としては正しいのですが、簡略化しています。(以降同様)
1. OpenPose v1.3.0 のトップページから「Clone or Download
」>「Download ZIP
」を順に押下
※2018/06/20 頃にOpenposeに新しいソースコードがあげられました。
こちらの手順ではv1.3.0でのみ構築を確認しているため、上記URLは、タグ「v1.3.0」のものとなります。
2. ダウンロードした圧縮ファイルを、空白のないパス以下に解凍。私は以下に配置しました。
「C:\MMD\openpose-master
」
3. ビルド先ディレクトリを作成。私は以下に作成しました。
「C:\MMD\openpose-build
」
2.4 Openposeの依存ライブラリ等入手 (※5/20追記)
※ライブラリ等は自動で落ちてくるらしいですが、どうもうまくいかないパターンがあるようなので、手動で事前にダウンロードしてください。
既にある場合は、次へ進んで下さい。
1.以下モデルをそれぞれ「C:\MMD\openpose-master
」以下に配置
-
COCO model ->
models/pose/coco/
-
MPI model ->
models/pose/mpi/
-
Face model ->
models/face/
-
Hands model ->
models/hand/
2.以下依存ライブラリをそれぞれ「C:\MMD\openpose-master
」以下に配置
-
Caffe ->
3rdparty/windows/caffe/
-
Caffe dependencies ->
3rdparty/windows/caffe3rdparty/
-
OpenCV 3.1 ->
3rdparty/windows/opencv/
2.5. OpenPose の構築準備
1. 「CMake GUI
」を起動する。
2. ソースコードディレクトリとビルド先ディレクトリを指定して、「Configure
」ボタン押下
- ソースコードディレクトリ:
C:\MMD\openpose-master
- ビルド先ディレクトリ:
C:\MMD\openpose-build
3. 「Visual Studio 14 2015 Win64
」を選択して、「Finish
」
4. しばし待つ
※Finish
直後の各パラメータの詳細キャプチャを撮り直しました(5/20追記)
5. 終わったら、「Generate
」ボタン押下。(画面真ん中左寄り)
6. ビルドディレクトリ以下に「OpenPose.sln
」が出来ていたら成功。
※依存DLL等のコピー
7. ビルドディレクトリ以下に「x64
」ディレクトリを作成し、「1.1. OpenPose(Portable Demo)」で解凍したデモの中身をコピー
※コピーしないでコンパイルすると、DLL不足エラーとかが頻発しました…正当な方法は別にあるのかもしれませんが、暫定対応。
※コピーしてもDLL不足エラーが出る場合、「1.1. OpenPose(Portable Demo)」の bin
ディレクトリ以下のDLLを、「x64\Release
」にコピーしなおしてください。
既にビルドした「OpenPoseDemo.exe」と「openpose.dll」がある場合には、その2ファイルはコピー対象から外して下さい(10/10追記)
8. 以下ライブラリをそれぞれ「x64\3rdparty\windows
」以下に配置
-
Caffe ->
3rdparty/windows/caffe/
-
Caffe dependencies ->
3rdparty/windows/caffe3rdparty/
-
OpenCV 3.1 ->
3rdparty/windows/opencv/
2.6. OpenPose のコンパイル
1. 「Visual Studio 2015
」を起動する
2. プロジェクトを開く
「C:\MMD\openpose-build\OpenPose.sln
」
3. インストールを求められたら、「インストール
」押下
4. 「次へ
」押下
5. 「インストール
」押下
6. 画面上部のプルダウンで「Release
」「x64
」を選択し、緑色の右向き三角を押下
7. ビルド確認が出たら「はい
」押下
8. しばし待つ
9. コンパイルが終わると、自動的にexeが実行されて、引数なしエラーになるので、慌てず騒がず、「プログラムの終了
」押下
10. 「中断
」押下
11. 「openpose.dll
」「OpenPoseDemo.exe
」が出来ていることを確認したら、「Visual Studio 2015
」を終了する
2.7. OpenPoseDemo.exe の実行
1. ビルド先ディレクトリ以下の「x64
」ディレクトリで、コマンド実行
※本記事では、「C:\MMD\openpose-build\x64
」。
「Release\OpenPoseDemo.exe --video examples\kinyoubi\158-100f.avi
」
2. 先ほどとほぼ同等の画面が出力されました。処理もめっちゃ早くなりました!
3. OpenPose 簡易起動バッチの導入
Openpose では様々なオプションが指定できますが、その分、コマンド文が長くなりがちです。
そのため、モーショントレース用に必要な最低限の設定を行って起動するバッチを作成しました。
1. miu200521358/openpose-simple のトップページから「Clone or Download
」>「Download ZIP
」を順に押下
2. ダウンロードした圧縮ファイルを解凍し、Openposeのbin
フォルダのあるところに配置する
- OpenposeVideo.bat … 動画解析用
- OpenposeImage.bat … 静止画解析用 ※3d-pose-baseline-vmd以降には使えません。
【12/30追記】
Openpose1.4をDLされた方は、以下バッチを実行してください。
- OpenposeVideo1.4.bat … 動画解析用
- OpenposeImage1.4.bat … 静止画解析用
実行方法 (2018/05/10 更新)
映像の場合
-
Openpose
の実行ディレクトリ(bin
とかの一個上) にOpenposeVideo.bat をコピーする- デモ版:
LICENSE
のファイルがある階層。 - 自力ビルド版:
x64
のディレクトリの下。
- デモ版:
- OpenposeVideo.bat を実行する
-
解析対象映像ファイルパス
が聞かれるので、動画のファイルフルパスを入力する -
映像に映っている最大人数
が聞かれるので、映像から読み取りたい最大人数を1始まりで指定する- 未指定の場合、デフォルトで1が設定される(1人分の解析)
- 処理開始
- 処理が終了すると、以下に結果が出力される。
-
解析対象映像ファイルパス/{実行日時}/{解析対象映像ファイル名}_json
ディレクトリ- → json形式のkeypointsデータ
-
解析対象映像ファイルパス/{実行日時}/{解析対象映像ファイル名}_openpose.avi
- → 元映像にOpenposeの解析結果を上乗せしたaviデータ
- aviとして必要な情報が入っていないので、そのままではMMDの背景AVIとして設定できません。一旦AviUtlなどでaviとして別名保存してください。その際、映像サイズが2GB以内になるようにサイズ調整もしておくと、背景AVIとして使用できます。
-
画像の場合
-
Openpose
の実行ディレクトリ(bin
とかの一個上) にOpenposeImage.bat をコピーする- デモ版:
LICENSE
のファイルがある階層。 - 自力ビルド版:
x64
のディレクトリの下。
- デモ版:
- OpenposeImage.bat を実行する
-
解析対象画像ディレクトリパス
が聞かれるので、画像が置かれているディレクトリのフルパスを入力する- ディレクトリ内には複数枚の画像を置ける
-
映像に映っている最大人数
が聞かれるので、映像から読み取りたい最大人数を1始まりで指定する- 未指定の場合、デフォルトで1が設定される(1人分の解析)
- 処理開始
- 処理が終了すると、以下に結果が出力される。
-
解析対象画像ディレクトリパス/{実行日時}/{解析対象画像ディレクトリ名}_json
ディレクトリ- → json形式のkeypointsデータ
-
解析対象画像ディレクトリパス/{実行日時}/{解析対象画像ディレクトリ名}_openpose.avi
- → 元画像にOpenposeの解析結果を上乗せしたaviデータ
-
注意点
-
JSON出力先ディレクトリパス
に12桁の数字列は使わないで下さい。-
short02_000000000000_keypoints.json
のように、{任意ファイル名}_{フレーム番号}_keypoints.json
というファイル名のうち、12桁の数字をフレーム番号として後ほど抽出するため
-