Windows 10にMediaPipe をインストール (WSL不使用)

姿勢検出などのメディア処理をするためのライブラリ 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 をインストールする。

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++ 再頒布可能パッケージ」

もしくは、

https://support.microsoft.com/ja-jp/topic/%E6%9C%80%E6%96%B0%E3%81%AE%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%95%E3%82%8C%E3%82%8B-visual-c-%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89-2647da03-1eea-4433-9aff-95f26a218cc0

から

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 の動作確認

次のコマンドを実行して動作確認をする。

最初の起動の際に以下のメッセージが表示された。

Bazel のための環境変数の設定

環境変数を設定する。実際に使っている環境に応じてパスなどを修正する必要がある。

手元の環境では以下のように設定した。

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 からクローンする。

MediaPipe のルートディレクトリにカレントディレクトリを変更する。

MediaPipe の動作確認

以下の動作確認は、カレントディレクトリがMediaPipe のルートディレクトリである場合の例である。

Hello World! in C++ example

Hello World をビルドし、実行する。

Hello World! のビルド

以下のコマンドを実行してビルドする。

ビルドが失敗する場合には、次のコマンドでクリーンする。

クリーンにできたら、再度上記のコマンドを実行する。

Hello World! の実行

カレントディレクトリが mediapipe の場合には、以下のコマンドを実行する。

set GLOG_logtostderr=1 を忘れると出力がされず、動作確認ができない。

Hand Tracking

GPUを使わない hand_tracking_cpu.exe をビルドし、実行する。

Hand Trackingのビルド

次のコマンドで MediaPipe Hand Tracking CPU をビルドする。

Hand Trackingの実行

カレントディレクトリが mediapipe の場合には、Hand Tracking CPU を以下のコマンドで実行する。

起動してウィンドウが表示され、実際のトラッキング処理が行われるようになるまでにちょっと時間がかかる。最初は、すぐにウィンドウは開いてトラッキングの状況が見えると思っていた。このため、予想よりも時間がかかっていたのでコマンドを止めて、原因調査を始めた。もう少し気長に待っていれば動作の確認がすぐにできて時間を無駄にすることはなかった。

Pose Tracking

CPUを利用する pose_tracking_cpu.exe をビルドし、実行する。

Pose Trackingのビルド

次のコマンドで Pose Tracking CPU をビルドする。

Hand Trackingの実行

カレントディレクトリが mediapipe の場合には、Pose Tracking CPU を以下のコマンドで実行する。

USB接続 camera をつないで、イケアで買った木製人体モデルに目(黒点)をつけて撮影したら以下のように認識された。背景は実行させているPCのディスプレイである。

コメント

  1. フジキシュウジ より:

    質問がありメッセージ差し上げます。
    Bazelをダウンロード後、環境変数pathにフォルダパスを追加しましたが、コマンドプロンプトから動作確認したところ、
    ”bazelは、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません”
    となり、動作しません。
    その前まではすべて順調にインストール出来ていると思うのですが、どうしても原因がわかりません。
    同じような質問、解決法などご存じでしたらご教授願えないでしょうか?

    • epi より:

      コマンドプロンプトかPowerShellで、bazel をダウンロードしたフォルダをカレントディレクトリとして .\bazel.exe を実行できるでしょうか?
      念のために、ダウンロードしたファイルの名前をbazel.exe に変更した際にタイプミスがなかったかご確認ください。

  2. フジキシュウジ より:

    無事にできました。
    ありがとうございます。

  3. はろ より:

    質問すみません
    MediaPipeをVisual Studio 2017で使おうと考えているのですが
    Visual Studio 2017ではできないのですか?