OpenPoseをPyTorchで動かす方法を解説していきます。
Windows前提ですが、Linuxでも問題なく動かすことは可能でしょう。
本記事の内容
- pytorch-openposeとは?
- pytorch-openposeのシステム要件
- pytorch-openposeのインストール
- pytorch-openposeの動作確認(使い方)
それでは、上記に沿って解説していきます。
pytorch-openposeとは?
OpenPoseは、姿勢推定ライブラリ(アルゴリズム)と言われています。
姿勢推定は、次のようにも表現されます。
- 姿勢検知
- 骨格認識
- 骨格検知
言葉だけだとイメージは伝わりにくいです。
次の画像を見てください。
OpenPoseで作成した画像は、右側の画像です。
体の軸(骨格・姿勢)を表示してくれます。
簡単ですが、以上がOpenPoseの説明です。
当記事では、OpenPoseではなくpytorch-openposeが主役になります。
pytorch-openposeとは、OpenPoseのPyTorch版と考えればわかりやすいです。
そもそも、OpenPoseはCaffeで動くことを想定して開発されたモノです。
Caffeは、ディープラーニングのフレームワークです。
その意味では、PyTorchやTensorFlowと同じだと考えられます。
その後、Caffe2も開発されていました。
しかし、そのCaffe2は2018年3月にPyTorchにマージされることになりました。
そうなると、残ったPyTorchでOpenPoseを動かすのは自然の流れです。
その流れで開発されたのが、pytorch-openposeということでしょう。
(その確証はありませんが、開発された時期的にはそう思われます)
以上、pytorch-openposeの説明です。
次に、pytorch-openposeのシステム要件を確認します。
pytorch-openposeのシステム要件
pytorch-openposeのシステム要件は、以下。
- Python 3.7
- PyTorch
- OS
PyTorchをインストールしたら、ほぼ要件は満たします。
もしかしたら、Python 3.8とかでも動くのかもしれません。
とにかく、 PyTorchを用意するのがポイントになります。
PyTorchのインストールに関しては、次の記事で解説しています。
なお、GPU対応は任意です。
つまり、CPUだけでも動くということです。
その意味では、pytorch-openposeも気軽に試せすことができますね。
あと、OSはOpenPoseの方では以下のように指定されています。
- Ubuntu (20, 18, 16, 14)
- Windows (10, 8)
- Mac OSX
- Nvidia TX2
ちなみに、Nvidia TX2は組み込みモジュールです。
以上、pytorch-openposeのシステム要件となります。
では、pytorch-openposeをインストールしていきます。
pytorch-openposeのインストール
この時点で、Python 3.7の環境でPyTorchが動くのは必須です。
PyTorchが動く前提で、pytorch-openposeのインストールを進めます。
pytorch-openposeのGitHubページ
https://github.com/Hzzone/pytorch-openpose
最初に、上記のページへアクセス。
「Code」ボタンをクリックします。
そして、「Download ZIP」をクリック。
ダウンロードが始まり、適当な場所にファイルを保存します。
保存したzipファイルを解凍したフォルダを「openpose_pytorch」とします。
openpose_pytorchフォルダ
コマンドプロンプトを起動します。
そして、「openpose_pytorch」に移動します。
ここで以下のコマンドを実行します。
pip install -r requirements.txt
requirements.txt
numpy matplotlib opencv-python scipy scikit-image tqdm
requirements.txtに記載されているライブラリが、インストールされていきます。
インストールが完了したら、学習済みのモデルをダウンロードします。
学習済みモデルのダウンロードページ
https://www.dropbox.com/sh/7xbup2qsn7vvjxo/AABWFksdlgOMXR_r5v3RwKRYa?dl=0
上記のダウンロードページへアクセスして、以下のファイルをダウンロード。
- body_pose_model.pth
- hand_pose_model.pth
それぞれ、modelフォルダに保存します。
以上、pytorch-openposeのインストールが完了です。
最後に、pytorch-openposeの動作確認をします。
pytorch-openposeの動作確認(使い方)
「openpose_pytorch」フォルダの下に、「result」フォルダを作成します。
また、以下のプログラムをtest.pyとして「openpose_pytorch」フォルダに保存。
test.py
import os import cv2 import copy from src import util from src.body import Body INPUT_FILE_NAME = "test.jpg" if __name__ == "__main__": body_estimation = Body('model/body_pose_model.pth') target_image_path = 'images/' + INPUT_FILE_NAME oriImg = cv2.imread(target_image_path) # B,G,R order candidate, subset = body_estimation(oriImg) canvas = copy.deepcopy(oriImg) canvas = util.draw_bodypose(canvas, candidate, subset) basename_name = os.path.splitext(os.path.basename(target_image_path))[0] result_image_path = "result/pose_" + basename_name + ".jpg" cv2.imwrite(result_image_path, canvas)
このプログラムを実行する前に、姿勢推定したい画像を用意します。
なお、ファイル名を変更したければ次の値を変更してください。
INPUT_FILE_NAME = "test.jpg"
test.jpg
このtest.jpgを「images」フォルダに設置します。
画像を設置できたら、test.pyを実行しましょう。
少しばかり待ちます。
処理が終わると、「result」フォルダにpose_test.jpgが作成されています。
pose_test.jpg
この画像に関しては、姿勢推定が完璧です。
以上、pytorch-openposeの動作確認を終わります。