ゼファーネットのロゴ

人間の姿勢推定に関する包括的なガイド

日付:

人間のポーズ推定は、人の向きをグラフィック形式で表すコンピュータービジョンタスクです。 この手法は、人の体の部分や関節の位置を予測するために広く適用されています。 これは、コンピュータービジョンの研究で最もエキサイティングな分野のひとつであり、そのようなテクノロジーの恩恵を受けることができるアプリケーションが豊富にあるため、多くの注目を集めています。

今日の記事では、人間のポーズ推定とその仕組みについて説明します。 また、Githubでのいくつかのトップおよびオープンソースのポーズ推定プロジェクトと、この分野で大きな進歩を遂げることが証明されているいくつかの最先端のモデル、手法、およびポーズ推定のタイプについて説明します。

この包括的なガイドを読むと、以下のトピックに出くわします。

  1. 人間のポーズ推定とは何ですか?
  2. 人間のポーズ推定の重要性
  3. 2Dと3Dの人間のポーズ推定の違い
  4. 人間のポーズ推定モデルの種類
  5. ボトムアップVS。 ポーズ推定のトップダウン法
  6. 人間のポーズ推定はどのように機能しますか?
  7. 単純な人間のポーズ推定コード
  8. 人間のポーズ推定の応用
  9. 最後の言葉
  10. 著者について
  11. 参考文献

人間のポーズ推定とは何ですか?

Pythonでの機械学習を使用した人間のポーズ推定

https://www.analyticsvidhya.com/blog/2021/10/human-pose-estimation-using-machine-learning-in-python/

人間のポーズ推定は、画像またはビデオ内の人体の部分および関節のポーズを識別および分類します。 一般に、モデルベースの手法は、2Dおよび3D空間で人体のポーズを表現および推測するために使用されます。

基本的には、手首、肩、膝、目、耳、足首、腕などの人体の関節を定義することで一連の座標をキャプチャする方法です。これは、人のポーズを説明できる画像やビデオの重要なポイントです。 。

次に、画像またはビデオが入力としてポーズ推定モデルに与えられると、これらの検出された身体部分と関節の座標が出力として識別され、推定の精度を示す信頼スコアが識別されます。

人間のポーズ推定の重要性

人の検出は、従来のオブジェクト検出のさまざまなアプリケーションの主要な議論の中心でした。 機械学習アルゴリズムの最近の開発により、コンピューターはポーズ検出とポーズ追跡を実行することで人体の言語を理解できるようになりました。 これらの検出の精度とそれらを実行するためのハードウェア要件は、現在、商業的に実行可能になるポイントに達しています。

さらに、このテクノロジーの成長は、コロナウイルスのパンデミックの中で大きく変化します。コロナウイルスのパンデミックでは、高性能のリアルタイムのポーズ検出と追跡により、コンピュータービジョンで最も影響力のあるトレンドがもたらされます。 たとえば、人間の姿勢推定と距離投影ヒューリスティックを組み合わせることにより、社会的距離を伸ばすために使用できます。 それは人々が混雑した場所でお互いから物理的な距離を維持するのを助けます。

人間のポーズの推定は、セキュリティ、ビジネスインテリジェンス、健康と安全、エンターテインメントなど、さまざまな業界に大きな影響を与えます。 この技術がすでにその存在を証明しているそのような分野のXNUMXつは、自動運転です。 リアルタイムの人間の姿勢の検出と追跡の助けを借りて、コンピューターは歩行者の行動を非常に徹底的に感知して予測することができ、より一貫した運転を可能にします。

2Dと3Dの人間のポーズ推定の違い

https://openaccess.thecvf.com/content_cvpr_2017/papers/Chen_3D_Human_Pose_CVPR_2017_paper.pdf

ポーズ推定モデルで人間のポーズを検出できる手法は、主にXNUMXつあります。

  1. 2Dポーズ推定: このタイプのポーズ推定では、入力データ(つまり、画像またはビデオフレーム)を基準にした2D空間での体の関節の位置を単純に推定します。 場所は、各キーポイントのX座標とY座標で表されます。
  2. 3Dポーズ推定: このタイプのポーズ推定では、予測に追加のZ次元を推定することにより、2D画像を3Dオブジェクトに変換します。 3Dポーズ推定により、表現された人物や物の正確な空間測位を予測できます。

3Dポーズ推定は、画像や動画の背景シーン、光の状態など、いくつかの要因を推定するデータセットとアルゴリズムの構築に伴う複雑さのため、機械学習エンジニアが直面する重要な課題です。

人間のポーズ推定モデルの種類

2Dおよび3D平面で人体を表現するために使用される人間の姿勢推定モデルには主にXNUMXつのタイプがあります。

OpenCVとPythonを使用した人間のポーズ推定-TechVidvan

https://www.semanticscholar.org/paper/Deep-Learning-Based-Human-Pose-Estimation%3A-A-Survey-Zheng-Wu/0edef16d8fb78625ec5a050e2a7ae4efffef3689

#1。 スケルトンベースのモデル: キネマティックモデルとも呼ばれるこの代表には、主に3Dおよび2Dポーズの推定に使用される、足首、膝、肩、肘、手首、手足の向きなどの一連のキーポイント(関節)が含まれます。

この柔軟で直感的な人体モデルは、人体の骨格構造を構成し、さまざまな体の部分間の関係をキャプチャするために頻繁に適用されます。

#2。 輪郭ベースのモデル: 平面モデルとも呼ばれ、2Dポーズ推定に使用され、体、胴体、手足の輪郭と大まかな幅で構成されます。 基本的には、人体の外観と形状を表しており、人の輪郭の境界と長方形で体の部分が表示されます。

有名な例は アクティブシェイプモデル (ASM)は、主成分分析(PCA)手法を使用して、人体のグラフ全体とシルエットの変形をキャプチャします。

#3。 ボリュームベースのモデル: 体積モデルとも呼ばれ、3Dポーズ推定に使用されます。 これは、複数の人気のある3D人体モデルと、人間の幾何学的メッシュと形状で表されるポーズで構成され、一般に、ディープラーニングベースの3D人間ポーズ推定のためにキャプチャされます。

ボトムアップVS。 ポーズ推定のトップダウン法

人間の姿勢を推定するためのすべての方法は、ボトムアップとトップダウンのXNUMXつの主要なアプローチに分類できます。

  1. ボトムアップ方式 最初に各体の関節を評価してから、それらを配置して独自のポーズを作成します。
  2. トップダウン方式 最初にボディディテクタを実行し、検出されたバウンディングボックス内のボディジョイントを特定します。

人間のポーズ推定はどのように機能しますか?

ポーズ推定とは何か、なぜそれが不可欠なのか、さまざまな方法、モデル、手法の違いがわかったので、今度はその動作を調べます。 はい、人間の姿勢推定がどのように機能するかについて説明します。このセクションは、それぞれ3つのサブカテゴリに分かれています。

  • 基礎構造
  • モデルアーキテクチャの概要
  • 人間のポーズ推定のためのさまざまなアプローチ

フィットネス&セラピーアプリの人間活動認識– InData Labs

https://indatalabs.com/resources/human-activity-recognition-fitness-app

基本構造

ディープラーニングによる人間の姿勢推定の2019年ガイド

https://nanonets.com/blog/human-pose-estimation-2d-guide/

人間の姿勢推定の問題に対して提案されたいくつかの解決策があります。 ただし、全体として、既存の方法は、絶対ポーズ推定、相対ポーズ推定、および両方の組み合わせである適切なポーズ推定のXNUMXつのグループに細分類できます。

XNUMXつ目:絶対ポーズ推定方法は、衛星ベースのナビゲーション信号、ナビゲーションビーコン、アクティブおよびパッシブランドマーク、およびヒートマップマッチングに基づいています。 XNUMX番目:相対ポーズ推定法は、既知の関節からの距離、つまり人間の初期位置と向きを推定することによって人間のポーズを段階的に更新する、デッドレコニングに基づいています。

基本的に、ほとんどのアルゴリズムは、人間のポーズと向きを使用して、背景に関する人物の位置を予測します。 これは、人間のバウンディングボックスを識別し、各ボックスのポーズを評価する2ステップのフレームワークです。

次に、ひじ、ひざ、手首などの関節の要点を推定します。用途に応じて、XNUMX人または複数の人のポーズを推定できます。

単一ポーズ推定では、モデルは特定のシーンでのXNUMX人の人物のポーズを推定します。 対照的に、マルチポーズ推定の場合、モデルは、指定された入力シーケンス内の複数の人のポーズを推定します。

モデルアーキテクチャの概要

https://nanonets.com/blog/human-pose-estimation-2d-guide/

ここでは、複数の特定のニューラルネットワークアーキテクチャをXNUMXつの記事でカバーすることはできませんが、開始するのに適した堅牢で信頼性の高いアーキテクチャについて説明します。

人間の姿勢推定モデルにはいくつかの種類があります。つまり、上記のボトムアップとトップダウンのアプローチです。 最も有名なアーキテクチャは、入力画像を取得し、一連のナローイングコンボリューションブロックを利用して特徴を抽出するエンコーダから始まります。 エンコーダーの後の次のステップは、ポーズ推定に使用される方法によって異なります。

最も概念的に単純なシステムは、入力画像を受け入れ、予測しようとしている各キーポイントのX、Y、およびZ座標を出力することにより、各キーポイント位置の最終的な出力予測へのリグレッサを実行します。 ただし、実際には、このアーキテクチャは、さらに改良しないと正確な結果が得られないため、使用されません。

やや複雑なアプローチでは、エンコーダーデコーダーアーキテクチャを実践します。 このアーキテクチャでジョイント座標を直接計算する代わりに、エンコーダーはデコーダーに供給され、ヒートマップを生成します。 これらのヒートマップは、入力画像の特定のセクションで検出された関節の可能性を表します。

正確な座標は、後処理中に結合の可能性が最も高いヒートマップの場所を選択することによって選択されます。 さらに、マルチポーズ推定の場合、ヒートマップは、キーポイントの可能性が高い複数の領域、たとえば、画像内の2つ以上の左手で構成されます。 各場所を特定の人間モデルに割り当てるために行われます。

上記のアーキテクチャは、2Dおよび3Dポーズ推定に等しく適用されます。

人間のポーズ推定のためのさまざまなライブラリ

従来のコンピュータビジョン手法の急速な発展に伴い、画像のセグメンテーションやオブジェクトの検出などのポーズ推定は、さまざまなタスクで優れています。

このセクションでは、インターネット上で公開されている最も人気のあるポーズ推定ライブラリの上位XNUMXつをリストして確認します。 以下のライブラリを使用して、カスタムの人間のポーズ推定器を実装できます。

#1。 OpenPose

及び

ドキュメント: https://cmu-perceptual-computing-lab.github.io/openpose/web/html/doc/index.html

Githubリンク: https://github.com/CMU-Perceptual-Computing-Lab/openpose

Githubスター: 22.8K

Githubフォーク: 6.8K

OpenPoseは、リアルタイムで機能する無料の人間の関節検出ライブラリです。 体、顔、手、足の推定の要点を検出します。 これは、単一の入力画像で合計135のキーポイントを共同で検出する最初のマルチパーソンシステムです。 これは、ボトムアップアプローチを使用する最も人気のある複数人の人間のポーズ推定ライブラリのXNUMXつです。

OpenPoseは、組み込みシステムアプリケーション用のカメラフィールド、Webカメラ、およびその他のソースから入力画像を選択する柔軟性をユーザーに提供するオープンソースAPIです。 CUDA GPU、OpenCL GPU、CPUのみのシステムなどのさまざまなハードウェアアーキテクチャをサポートします。 2Dポーズ推定(全身)、3Dポーズ再構成、推定(全身)、ユニティプラグインに広く利用されています。

#2。 PoseDetection

Githubリンク: https://github.com/tensorflow/tfjs-models/tree/master/pose-detection

Githubスター: 10.3K

Githubフォーク: 3.2K

ポーズ検出は、画像やビデオ内の人間のポーズを検出できるオープンソースのリアルタイムポーズ検出ライブラリです。 これは、tensorflow.jsに基づいて構築されたポーズ推定アーキテクチャであり、単一のポーズまたは複数のポーズのいずれかで、肘、腰、手首、膝、足首などの体の部分を検出できます。

ブラウザやモバイルデバイスなどの軽量デバイスで効率的に実行できるように構築されています。 このパッケージは、リアルタイムのポーズ推定を実行するためのXNUMXつの最先端モデルを提供します。

  • MoveNet(17のキーポイントを検出し、50 fps以上で実行)
  • BlazePose(33個のキーポイントを検出)
  • PoseNet(複数のポーズを検出でき、各ポーズには17のキーポイントが含まれています)

#3。 DensePose

ドキュメント: http://densepose.org/

Githubリンク: https://github.com/facebookresearch/Densepose

Githubスター: 6.2K

Githubフォーク: 1.2K

高密度の人間のポーズ推定は、2DRGB画像のすべての人間のピクセルをリアルタイムで身体の3D表面ベースのモデルにマッピングできる無料のオープンソースライブラリです。 このライブラリは、caffe2を搭載したdetectronフレームワークに実装されており、単一および複数のポーズ推定問題にも使用できます。

#4。 AlphaPose


ドキュメント: https://www.mvig.org/research/alphapose.html

Githubリンク: https://github.com/MVIG-SJTU/AlphaPose

Githubスター: 5.7K

Githubフォーク: 1.6K

Alphaposeは、人気のあるトップダウンアプローチを使用し、非常に正確なオープンソースのリアルタイムの複数人のポーズ推定ライブラリです。 このライブラリは、不正確な人間の境界ボックスが存在する場合のポーズの検出に役立ちます。これは、最適に検出された境界ボックスによって人間のポーズを決定するための最適なアーキテクチャです。

Alphaposeは、フレーム全体で同じ人物を示すポーズを関連付けるための効率的なオンラインポーズトラッカーも提供します。 これは最初のオープンソースのオンラインポーズトラッカーであり、PoseFlowと呼ばれます。 このライブラリは、画像、ビデオ、および画像リスト内の正確なリアルタイムの複数人および単一人のキーポイントを検出できます。

#5。 HRNet(高解像度ネット)


ドキュメント: https://jingdongwang2017.github.io/Projects/HRNet/PoseEstimation.html

Githubリンク: https://github.com/leoxiaobin/deep-high-resolution-net.pytorch

Githubスター: 3.5K

Githubフォーク: 810

HRNetは、画像内の特定のオブジェクトまたは人物に関するキーポイントとして認識されているものを見つけるための人間のポーズの推定に使用されるアーキテクチャです。 プロセス全体を通じて高解像度の表現を維持し、非常に正確なキーポイントヒートマップを予測します。

さらに、このアーキテクチャは、テレビで放映されるスポーツで人間の姿勢を検出するのに適しています。 セグメンテーション、顔の位置合わせ、オブジェクト検出など、他の多くの高密度予測タスクは、HRNetの恩恵を受けています。

単純な人間のポーズ推定コード

3Dと2Dの両方のポーズ推定に利用できる公開データセットがたくさんあります。

3Dポーズ推定データセット

2Dポーズ推定データセット

この例では、OpenposeチームがMPIデータセットでCaffeを使用して事前トレーニングしたモデルを使用します。このモデルには、人体のさまざまな関節を識別するための15の重要なポイントがあります。

「ヘッド」:0、「ネック」:1、「RShoulder」:2、「RElbow」:3、「RWrist」:4、「LShoulder」:5、「LElbow」:6、「LWrist」:7、「RHip」 ":8、" RKnee ":9、" RAnkle ":10、" LHip ":11、" LKnee ":12、" LAnkle ":13、"チェスト ":14、"バックグラウンド ":15

キーポイントを接続する手足を作成するために使用されるポーズペアを定義します。 次に、トレーニング済みモデルをダウンロードします。

Pose_Pairs = [["Head"、 "Neck"]、["Neck"、 "RShoulder"]、["RShoulder"、 "RElbow"]、["RElbow"、 "RWrist"]、["Neck"、 "LShoulder "]、[" LShoulder "、" LElbow "]、[" LElbow "、" LWrist "]、[" Neck "、" Chest "]、[" Chest "、" RHip "]、[" RHip "、" RKnee "]、[" RKnee "、" RAnkle "]、[" Chest "、" LHip "]、[" LHip "、" LKnee "]、[" LKnee "、" LAnkle "]] MODEL_URL =" http:// posefs1.perception.cs.cmu.edu/OpenPose/models/ "POSE_FOLDER ="pose / "MPI_FOLDER = $ {POSE_FOLDER}" mpi / "MPI_MODEL = $ {MPI_FOLDER}"pose_iter_160000.caffemodel "wget -c $ {MODEL_URL} $ {MPI_MODEL} -P $ {MPI_FOLDER}

#1。 .prototxtファイルを読み取り、事前にトレーニングされた重みをネットワークにロードします。

net = cv.dnn.readNetFromCaffe(args.proto、args.model)

#2。 次に、画像をバッチでロードし、ニューラルネットワークを通過させます。

blob = cv.dnn.blobFromImage(image、scalefactor、size、mean、swapRB、crop)

#3。 転送関数を呼び出して、入力画像に対して推論を実行します。 次に、各キーポイントの信頼マップを生成します。

inp = cv.dnn.blobFromImage(frame、1.0 / 255、(inWidth、inHeight)、(0、0、0)、swapRB = False、crop = False)net.setInput(inp)

out = net.forward()


#4。 これらの重要なポイントを元の画像に表示します。

for i in range(len(BODY_PARTS)):#対応する体の部分のヒートマップをスライスします。 heatMap = out [0、i、:、:]#元々、すべての極大値を見つけようとします。 サンプルを単純化するために、#グローバルサンプルを見つけます。 ただし、この方法では、同時に0つのポーズしか検出できませんでした。 _、conf、_、point = cv.minMaxLoc(heatMap)x =(frameWidth * point [3])/ out.shape [1] y =(frameHeight * point [2])/ out.shape [XNUMX]#追加信頼度がしきい値よりも高い場合のポイント。 points.append((int(x)、int(y))if conf> args.thr else None)
POSE_PAIRSのペアの場合:partFrom = pair [0] partTo = pair [1] assert(partFrom in BODY_PARTS)assert(partTo in BODY_PARTS)idFrom = BODY_PARTS [partFrom] idTo = BODY_PARTS [partTo] if points [idFrom] and points [idTo ]:cv.line(frame、points [idFrom]、points [idTo]、(255、74、0)、3)cv.ellipse(frame、points [idFrom]、(4、4)、0、0、360 、(255、255、255)、cv.FILLED)cv.ellipse(frame、points [idTo]、(4、4)、0、0、360、(255、255、255)、cv.FILLED)cv。 putText(frame、str(idFrom)、points [idFrom]、cv.FONT_HERSHEY_SIMPLEX、0.75、(255、255、255)、2、cv.LINE_AA)cv.putText(frame、str(idTo)、points [idTo]、 cv.FONT_HERSHEY_SIMPLEX、0.75、(255、255、255)、2、cv.LINE_AA)

#5。 ファイルを保存し、割り当てられた引数を使用してコマンドプロンプトから実行します。

python3 sample.py --input sample.jpg --protopose / mpi /pose_deploy_linevec_faster_4_stages.prototxt --modelpose / mpi /pose_iter_160000.caffemodel --dataset MPI

#6。 結果

画像に対して実行されたポーズ推定の結果

人間のポーズ推定の応用

人間の姿勢推定は、コンピュータビジョンで最も話題になっているトピックであり、さまざまなアプリケーションやユースケースで利用されています。 人間とコンピューターの相互作用、モーション分析、拡張現実、ロボット工学などが含まれます。

一般に、人間のポーズ推定は、ほぼすべてのドメインで無限のアプリケーションを持っています。 開発中の最も一般的なアプリケーションのいくつかは次のとおりです。

1.人間の活動と動きの推定

ポーズ推定に適用できる最も明白な次元のXNUMXつは、人間の活動と動きの追跡と測定です。 OpenPose、PoseNet、DensePoseなどの多くのアーキテクチャは、アクション、ジェスチャ、または歩行認識のために実践されることがよくあります。 人間の活動追跡のいくつかの例は次のとおりです。

  • AIを利用したスポーツコーチまたはパーソナルジムトレーナー
  • 座っているジェスチャーの検出
  • 職場活動の監視
  • 障害者のための手話コミュニケーション
  • 交通警官の信号検出
  • クリケット審判の信号検出
  • ダンステクニックの検出
  • セキュリティと監視における動きの監視
  • 小売店の群衆のカウントと追跡

2.拡張現実と仮想現実(AR / VR)

拡張現実アプリケーションと仮想現実アプリケーションを組み合わせた場合、人間のポーズ推定は、より現実的で応答性の高い体験を作成する機会を提供します。 たとえば、ポーズが描かれている仮想家庭教師を介して、テニスやゴルフなどのさまざまなゲームをプレイする方法を学ぶことができます。 さらに、米軍は戦闘でARプログラムを実施しました。 兵士が敵と友軍を区別するのに役立ちます。

3。 ロボティクス

従来の産業用ロボットは、多くの制限がある2Dビジョンシステムに基づいています。 ロボットを手動でプログラミングして動きを学習する代わりに、3Dポーズ推定技術を使用できます。 このアプローチにより、応答性が高く、柔軟性があり、現実に即したロボットシステムが作成されます。 これにより、ロボットは、家庭教師の姿勢、外観、または外観を追跡することにより、行動や動きを理解することができます。

4.アニメーションとゲーム

ポーズ推定とモーションキャプチャテクノロジーの最新の進歩により、キャラクターアニメーションは合理化され自動化されたプロセスになっています。 たとえば、MicrosoftのKinect深度カメラは、IRセンサーデータを使用して人間の動きをリアルタイムでキャプチャし、それを使用してキャラクターのアクションを仮想的にゲーム環境にレンダリングします。 同様に、没入型ビデオゲーム体験用のアニメーションのキャプチャも、さまざまなポーズ推定アーキテクチャによって簡単に自動化できます。

エンドノート

ポーズ推定は、テクノロジー、ヘルスケア、ゲームなど、複数のドメインで利用される魅力的なコンピュータービジョンコンポーネントです。人間のポーズ推定に関する包括的なガイドが、人間のポーズ推定の基本、その動作原理、およびその利用方法を説明するのに役立つことを願っています。現実世界では。

著者について

Mrinal Waliaは、機械学習、人工知能、コンピュータービジョンを専門とするコンピューターサイエンスの学士号を取得したプロのPython開発者です。 Mrinalは、フリーランスのブロガー、作家、オタクでもあり、XNUMX年の経験があります。

私の記事を読むのが好きなら、私のソーシャルメディアプロフィールで私とつながり、私をフォローして簡単なバーチャルコーヒーを飲みましょう。

Instagram | Facebook | LinkedIn | githubの | メール |

ありがとう、そして良い一日を過ごしてはいけません、素晴らしい一日を!

もっと記事を読む こちら 人間と物体の検出について。

参考文献

  • https://www.researchgate.net/publication/225561390_A_Novel_Pose_Estimation_System_for_Indoor_Mobile_Robots_Based_on_Two_Optical_Sensors
  • https://viso.ai/deep-learning/pose-estimation-ultimate-overview/
  • https://www.fritz.ai/pose-estimation/#part-how
  • https://learnopencv.com/deep-learning-based-human-pose-estimation-using-opencv-cpp-python/
  • https://cv-tricks.com/pose-estimation/using-deep-learning-in-opencv/

この記事に示されているメディアは Analytics Vidhya が所有するものではなく、著者の裁量で使用されています。 

出典:https://www.analyticsvidhya.com/blog/2022/01/a-comprehensive-guide-on-human-pose-estimation/

スポット画像

最新のインテリジェンス

スポット画像

私たちとチャット

やあ! どんな御用でしょうか?