画像認識をしたいです。
このような要望にお応えします。
カメラ等のハードウェアの発展、AWS, GCP等のクラウド環境の普及により、個人でも大量のデータを取得し、蓄積することが可能になっています。
そこで、データ活用と題しまして、個人でも利用可能なディープラーニングに基づいたPythonの姿勢推定ライブラリを使用して、動画データの人の姿勢推定をしてみます。
姿勢推定は何が嬉しい?
姿勢推定をすることで何ができるのでしょうか。
- 行動意図の分析
- スポーツトップ選手の身体の制御方法の分析
- 複数人の姿勢推定による集団行動の特徴抽出
- 医療現場でのリハビリ支援
- 異常検知(体調不良の検知、挙動不審な人物検知等)
このように、人の姿勢推定の抽出により実現可能となるものは有益であるように思います。
姿勢推定は、他の画像認識タスク(物体検知、セグメンテーション等)と同様に、ディープラーニング手法を適用することで性能が飛躍的によくなっています。
姿勢推定の基本的な考え方としまして、トップダウン的に推定する方法とボトムアップ的に推定する方法が提案されています。
トップダウンではまず物体検知を用いて人物を検知し、検知した人物に対して関節の検知を行います。一方ボトムアップでは、物体検知を用いずに画像中の関節点を一度に推定したあとに、各人物を構成する関節点を求めます。
それでは、姿勢推定をしてみます。
今回は、現在の姿勢推定タスクで最も精度の高いモデルとされているHRNet(Deep High-Resolution Representation Learning for Human Pose Estimation)を使用します。
HRNetについて
HRNetモデルは、COCOデータにおける姿勢推定タスクに関する既存の手法よりも優れたモデルとされています。
HRNetは高解像度のネットワークから開始し、深くなるにつれて低解像度のネットワークを追加します。従来モデルの大部分は、高解像度から低解像度へ接続するような表現でしたが、HRNetではすべての解像度のネットワークを並列に学習させており、この点が従来とは異なります。
また、HRNetは異なる解像度のサブネットワーク間もダウンサンプリングとアップサンプリングにより特徴抽出を行うことで、高解像度・低解像度の各々が持つ情報をやり取りすることでプロセス全体を通じて高解像度の表現を維持して機能します。
Google Colaboratoryの準備
・Googleのアカウントを作成します。
・Googleドライブにアクセスし、「新規」→「その他」から「Google Colaboratory」の順でクリックします。そうすると、Colaboratoryが起動します。
・Colaboratoryが起動したら、以下のコマンドをCoalboratoryのセルに入力し実行します。
そうすることで、Googleドライブをマウントします。
1 2 |
from google.colab import drive drive.mount('/content/drive') |
・実行後、認証コードの入力が促されます。このとき、「Go to this URL in a browser」が指しているURLにアクセスしgoogleアカウントを選択すると、認証コードが表示されますので、それをコピーしenterを押します。これでGoogleドライブのマウントが完了します。
HRNetモデルの準備
Google Colaboratoryの「ランタイム」→「ランタイムのタイプ変更」でGPUを選択します。
ツールをダウンロードする場所に移動します。 本記事では、マイドライブにツールをダウンロードします。
1 |
cd drive/My\ Drive |
gitからツールをダウンロードします。
1 |
!git clone https://github.com/leoxiaobin/deep-high-resolution-net.pytorch.git |
ダウンロードしたフォルダまで移動します。
1 |
cd deep-high-resolution-net.pytorch/ |
ツールの実行に必要なライブラリをインストールします。
1 |
!pip install -r requirements.txt |
libフォルダに移動します。
1 |
cd lib |
コンパイル/ビルドを実行します。
1 |
!make |
cocoapiをダウンロードします。
1 |
!git clone https://github.com/cocodataset/cocoapi.git |
ダウンロードしたフォルダに移動します。
1 |
cd cocoapi/PythonAPI/ |
コンパイル/ビルドを実行します。
1 2 |
!make install !python3 setup.py install --user |
deep-high-resolution-net.pytorchフォルダまで戻ります。
1 |
cd ../../../ |
学習済みモデルをダウンロードします。以下のページの「 Download pretrained models from our model zoo 」を参照ください。
・https://github.com/leoxiaobin/deep-high-resolution-net.pytorch
demoフォルダに移動します。
1 |
cd demo |
下記のコマンドを実行することで、姿勢推定を行うことができます。
1 2 3 4 |
!python inference.py --cfg inference-config.yaml \ --videoFile Yoga-445.mp4 \ --outputDir . \ TEST.MODEL_FILE ../models/pytorch/pose_coco/pose_hrnet_w32_256x192.pth |
出力結果
いかがでしょうか。現在は、画像認識を気軽に試すことができるリソースが豊富に提供されていますので、是非、画像認識をしてみてはいかがでしょうか。