OpenPose(Caffe版)をMacBookで動かしてみる
はじめに
- 画像から人体の骨格情報を取得できるOpenPoseを手持ちのMacBookで使ってみたかったが,ビルドする時に若干詰まったので備忘も兼ねてメモを残してみた.
- OpenPoseにはCPU版とGPU版があり,高い精度の認識結果を早く取得したい場合はGPU版が推奨される.
- 手持ちのMacBookにはGPUがついていなかったためCPU版を入れることにした.
OpenPoseとは?
-
DeepLearningを使って画像から体や顔・手足を認識して人体の骨格情報を取得することができる.
- 通常のカメラで撮影した画像・動画から取得できるため,MicrosoftのKinectやIntelのRealSenseの様な機材の準備が不要.
-
本家大元GitHubのREADMEに実際に認識させた例が掲載されている.
Caffe版とTensorFlow版の2種類のバージョンがあり,今回は上記GitHubのCaffe版を使ってみた.
環境
- モデル: MacBook Pro (Late 2016)
- OS: macOS Catalina (バージョン10.15.4)
- CPU: Intel Core i5-6287U CPU @ 3.10GHz
- メモリ: 16GB
- OpenPoseのバージョン: v1.6.0
導入方法
1. GitHubリポジトリからclone
- OpenPoseのGitHubリポジトリからcloneする.
$ git clone https://github.com/CMU-Perceptual-Computing-Lab/openpose.git
2. cloneしたリポジトリに入る
- cloneしたディレクトリにcdする.(基本はこのディレクトリで作業)
$ cd openpose
3. Homebrewを入れる(未導入の場合)
- OpenPoseを動かすのに必要なパッケージのインストールにmacOS用パッケージ管理システムであるHomebrewが必要となるため,事前にインストールしておく.
- TOPページ記載のスクリプトをターミナルで実行する.
4. CMakeをインストール
- Homebrewを使いビルドに使用するCMakeをインストールする.
$ brew cask install cmake
5. 依存関係のあるパッケージをインストール
- cloneしたディレクトリ内に依存関係のあるパッケージをインストールするシェルスクリプトが同梱されているため,それを実行する.
$ bash ./scripts/osx/install_deps.sh
6. ビルド先のフォルダを作成
- CMakeでビルドした物を入れるため,「build」フォルダを作成する.
$ mkdir build
7. Caffeをcloneする
- OpenPoseのビルドにはCaffeが必要となるため,OpenPoseのディレクトリ内にCaffeをcloneする.
$ cd 3rdparty
$ git clone https://github.com/CMU-Perceptual-Computing-Lab/caffe.git
- Caffeのcloneが完了したらOpenPoseのルートディレクトリに戻る.
$ cd ../
8. CMake起動
- OpenPoseのビルドを設定するため,CMakeを起動する.
$ cmake-gui
9. ビルド設定
-
画面上部の「Where is the source code:」にソースコードのディレクトリを,「Where to build the binaries:」にはビルド先のディレクトリを入力する.
- ソースコードはcloneしたopenposeディレクトリを,ビルド先は6.で作成した「build」フォルダを指定する.
-
「Add Entry」ボタンをクリックし,下記情報を追記する.
- Name: BUILD_CAFFE
- Type: BOOL
- Value: True (チェックボックスを入れる)
10. Configureを実行&Makefileを作成
-
ビルド設定を行ったら「Configure」ボタンをクリックする.
- 画面下部のコンソールに「Configuring done」が表示されたら成功.
-
Configureができたら「Generate」ボタンをクリックする.
- コンソールに「Generating done」が表示されたらMakefileの作成完了.
- 「build」フォルダにMakefileが作成されていることを確認する.
11. ビルドする
- 「build」フォルダに移動し,makeを実行&インストールする.
$ cd build
$ make -j `nproc`
$ sudo make install
OpenPoseを使ってみる
画像を認識させる
- 画像を読み込ませて認識させ,認識結果の画像ファイルや骨格座標データのJSONファイルを出力することができる.
$ ./build/examples/openpose/openpose.bin --image_dir <画像ファイルのフォルダパス> --write-images <認識結果の画像ファイル出力先パス> --write-json <骨格座標データのJSONファイル出力先パス>
-
認識結果
- before
- after
- 「いらすとや」から引用させていただいた画像も認識させることができた.
- before
動画を認識させる
- 動画も認識させることができる.ただしCPU版だと1フレームの処理に時間がかかるため,時間の長い動画等を認識させたい場合はGPU版を使用した方が良いかもしれない.
$ ./build/examples/openpose/openpose.bin --video <動画ファイルのパス> --write-video <認識結果の動画ファイル出力先パス> --write-json <認識した骨格座標データのJSONファイル出力先パス>