OpenPoseで姿勢推定を行う【pytorch-openpose】 | ジコログ

OpenPoseで姿勢推定を行う【pytorch-openpose】

OpenPoseで姿勢推定を行う【pytorch-openpose】 機械学習

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の動作確認を終わります。

タイトルとURLをコピーしました