姿勢検出などのメディア処理をするためのライブラリ Google MediaPipe をWindows 10 にインストールしてみた。WSLを使わず、Windows 10 上で動作させることを試みた。USB接続のカメラをつないでMediaPipeが使えることを確認した。
基本的に、MediaPipe の Installing on Windows に記載されている通りに作業すればよいが、Bazel の変数へのバージョンの設定などで手間取ったので、備忘録として残しておく。
ツールとライブラリのインストール
MSYS2のインストールとパスの設定
Installing on Windows に書いてある通り MSYS2 をインストールして、環境変数PATH にパスを設定する。
MSYS2 を c:\msys64 にインストールした場合には、環境変数PATHに c:\msys64\usr\bin を追加する。
必要なパッケージのインストール
コマンドプロンプトやPowerShellから次のコマンドを実行して、git、patch、unzip をインストールする。
1 |
pacman -S git patch unzip |
PythonのインストールとPATHの設定
Python をインストールして、その実行ファイルへのパスを環境変数PATHに追加する。
https://www.python.org/downloads/windows/ からWindows installer (64-bit) python-3.9.1-amd64.exe を使ってインストールした。PATHも上記のMSYS2のところのスクリーンショットのパスが設定された。
VisualC++ Build Tools 2019 のインストール
https://visualstudio.microsoft.com/ja/visual-cpp-build-tools/ から Build Tools をダウンロードしてインストールする。
vs_buildtools__1137247242.1610340260.exe がダウンロードされて、Visual Studio Installerが起動した。
Visual Studio Build Tools 2019 16.8.4 をインストールした。
Microsoft Visual C++ 2019 Redistributable のインストール
Visual Studio Build Tools 2019 のインストールの際にインストール済みになるのではないかと思うが、次の項で説明するようにVisual Studio Installerからインストールすることができるようだ。手元の環境では、以下に示すように単独にインストールをした。
単独でインストールする場合には、https://visualstudio.microsoft.com/ja/downloads/ の「その他のツールとフレームワーク」の「Visual Studio 2019 の Microsoft Visual C++ 再頒布可能パッケージ」
もしくは、
から
x64用のvc_redist.x64.exe をダウンロードして、起動する。
WinSDKのインストール
Visual Studio Installerを利用したWinSDKのインストール
Visual Studio Build Tools 2019のインストーラ(Visual Studio Installer)から Visual Studio Build Tools 2019の「変更」をクリックし、「個別のコンポーネント」タブの「SDK、ライブラリ、およびフレームワーク」にある Windows 10 SDK を選択してもインストールできる(手元の環境では次の項のWinSDKの単独インストールの手順に従った)。
試していないが、この前にインストールしたMicrosoft Visual C++ 2019 RedistributableもVisual Studio Installerからインストール、更新することができるようだ。
WinSDKの単独インストール
Visual Studio Installerを利用しないで単独で WinSDK をインストールしたい場合には、https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk/ から WinSDKをダウンロードしてインストールする。
winsdksetup.exe をダウンロードして起動した。
インストールパスはデフォルト C:\Program Files (x86)\Windows Kits\10\ を選択した。バージョンは、10.0.19041.685 であった(後述のように、これをそのまま Bazelのための環境変数に設定するとうまくビルドできない)。
とりあえず、すべてをインストールしたが、不要なものもある気がする。
OpenCVのインストール
https://opencv.org/releases/ から OpenCV 3.4.10 をダウンロードしてインストールする。
インストールディレクトリが C:\opencv でない場合には、WORKSPACE を編集する必要があるとのこと。素直に、C:\opencvへインストールしたので WORKSPACEの編集は試していない。
Bazelのインストール
https://docs.bazel.build/versions/master/install-windows.html に従ってビルドツール Bazel をインストールする。
Visual C++ Redistributable for Visual Studio 2015 のインストール
Microsoft Visual C++ 2019 Redistributable のインストールでMicrosoft Visual C++ 2015-2019 Redistributableをインストールしていれば不要と思うが、
必要に応じて https://www.microsoft.com/en-us/download/details.aspx?id=48145 からダウンロードしてインストールする。
Bazelのダウンロード
https://github.com/bazelbuild/bazel/releases から bazel-<version>-windows-x86_64.exe というファイルをダウンロードする。
bazel-4.0.0-windows-x86_64.exe をダウンロードした。
bazel.exe にリネームして、デフォルトパス上におくか、bazel.exe のフォルダパスを 環境変数 PATH に追加する。
Bazel の動作確認
次のコマンドを実行して動作確認をする。
1 |
bazel version |
最初の起動の際に以下のメッセージが表示された。
Bazel のための環境変数の設定
環境変数を設定する。実際に使っている環境に応じてパスなどを修正する必要がある。
手元の環境では以下のように設定した。
1 2 3 4 |
set BAZEL_VS=C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools set BAZEL_VC=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC set BAZEL_VC_FULL_VERSION=14.28.29333 set BAZEL_WINSDK_FULL_VERSION=10.0.19041.0 |
BAZEL_VS
Visual Studio の BuildTools へのパスを設定する。
手元の環境では、C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools であった。
BAZEL_VC
Visual C++ へのパスを設定する。
MediaPipe の Installing on Windows では、%BASEL_VS% の直下のVC が例示されているが、手元の環境では %BASEL_VS% にVCがなかったので、Visual Studio 2019 Community をインストールして、次のパスを設定した。
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC
BAZEL_VC_FULL_VERSION
次のパスの下にあるフォルダ名 14.28.29333 を設定した。
%BAZEL_VC%\Tools\MSVC
(C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC)
BAZEL_WINSDK_FULL_VERSION
次のパスの下にあるフォルダ名 10.0.19041.0 を設定した。
C:\Program Files (x86)\Windows Kits\10\Lib
最初、インストールしたSDKのバージョン 10.0.19041.685 を指定したが、MediaPipe が起動しなかった。
MediaPipe のインストールと動作確認
MediaPipe のインストール
MediaPipe をインストールしたいフォルダで次のコマンドを実行して GitHub からクローンする。
1 |
git clone https://github.com/google/mediapipe.git |
MediaPipe のルートディレクトリにカレントディレクトリを変更する。
1 |
cd mediapipe |
MediaPipe の動作確認
以下の動作確認は、カレントディレクトリがMediaPipe のルートディレクトリである場合の例である。
Hello World! in C++ example
Hello World をビルドし、実行する。
Hello World! のビルド
以下のコマンドを実行してビルドする。
1 |
bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH="C://python39//python.exe" mediapipe/examples/desktop/hello_world |
ビルドが失敗する場合には、次のコマンドでクリーンする。
1 |
bazel clean --expunge |
クリーンにできたら、再度上記のコマンドを実行する。
Hello World! の実行
カレントディレクトリが mediapipe の場合には、以下のコマンドを実行する。
set GLOG_logtostderr=1 を忘れると出力がされず、動作確認ができない。
1 2 3 |
cd bazel-bin\mediapipe\examples\desktop\hello_world set GLOG_logtostderr=1 hello_world |
Hand Tracking
GPUを使わない hand_tracking_cpu.exe をビルドし、実行する。
Hand Trackingのビルド
次のコマンドで MediaPipe Hand Tracking CPU をビルドする。
1 |
bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH="C://python39//python.exe" mediapipe/examples/desktop/hand_tracking:hand_tracking_cpu |
Hand Trackingの実行
カレントディレクトリが mediapipe の場合には、Hand Tracking CPU を以下のコマンドで実行する。
1 2 |
set GLOG_logtostderr=1 bazel-bin\mediapipe\examples\desktop\hand_tracking\hand_tracking_cpu.exe --calculator_graph_config_file=mediapipe/graphs/hand_tracking/hand_tracking_desktop_live.pbtxt |
起動してウィンドウが表示され、実際のトラッキング処理が行われるようになるまでにちょっと時間がかかる。最初は、すぐにウィンドウは開いてトラッキングの状況が見えると思っていた。このため、予想よりも時間がかかっていたのでコマンドを止めて、原因調査を始めた。もう少し気長に待っていれば動作の確認がすぐにできて時間を無駄にすることはなかった。
Pose Tracking
CPUを利用する pose_tracking_cpu.exe をビルドし、実行する。
Pose Trackingのビルド
次のコマンドで Pose Tracking CPU をビルドする。
1 |
bazel build -c opt --define MEDIAPIPE_DISABLE_GPU=1 --action_env PYTHON_BIN_PATH="C://python39//python.exe" mediapipe/examples/desktop/pose_tracking:pose_tracking_cpu |
Hand Trackingの実行
カレントディレクトリが mediapipe の場合には、Pose Tracking CPU を以下のコマンドで実行する。
1 2 |
set GLOG_logtostderr=1 bazel-bin\mediapipe\examples\desktop\pose_tracking\pose_tracking_cpu.exe --calculator_graph_config_file=mediapipe/graphs/pose_tracking/pose_tracking_cpu.pbtxt |
USB接続 camera をつないで、イケアで買った木製人体モデルに目(黒点)をつけて撮影したら以下のように認識された。背景は実行させているPCのディスプレイである。
コメント
質問がありメッセージ差し上げます。
Bazelをダウンロード後、環境変数pathにフォルダパスを追加しましたが、コマンドプロンプトから動作確認したところ、
”bazelは、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません”
となり、動作しません。
その前まではすべて順調にインストール出来ていると思うのですが、どうしても原因がわかりません。
同じような質問、解決法などご存じでしたらご教授願えないでしょうか?
コマンドプロンプトかPowerShellで、bazel をダウンロードしたフォルダをカレントディレクトリとして .\bazel.exe を実行できるでしょうか?
念のために、ダウンロードしたファイルの名前をbazel.exe に変更した際にタイプミスがなかったかご確認ください。
無事にできました。
ありがとうございます。
質問すみません
MediaPipeをVisual Studio 2017で使おうと考えているのですが
Visual Studio 2017ではできないのですか?
申し訳ありませんが、試していませんのでわかりません。
蛇足ながら、現時点で Windowsで MediaPipeを使う際に Visual Studio が必須でなければ、pythonを使う方がインストールは簡単だと思います。
以下のようなサイトが参考になると思います。
https://www.cs.k.tsukuba-tech.ac.jp/labo/koba/research/sigaci_ws_in_hi2022/install_mediapipe/
https://yoppa.org/mit-design4-22/14113.html