BlazePose : 3次元座標を取得可能な骨格検出モデル

elegirl_admin

ailia.AI

ailia.AI 編集部

ailia SDKで使用できる機械学習モデルである「BlazePose」のご紹介です。エッジ向け推論フレームワークであるailia SDKailia MODELSに公開されている機械学習モデルを使用することで、簡単にAIの機能をアプリケーションに実装することができます。

BlazePoseの概要

BlazePose (Full Body)はGoogleの開発した3次元座標を取得可能な骨格検出モデルです。33点の(x,y,z)座標を取得可能で、フィットネスアプリなどで使用可能です。

出典:https://pixabay.com/ja/photos/%E5%A5%B3%E3%81%AE%E5%AD%90-%E7%BE%8E%E3%81%97%E3%81%84-%E8%8B%A5%E3%81%84-%E3%83%9B%E3%83%AF%E3%82%A4%E3%83%88-5204299/

BlazePose: On-device Real-time Body Pose tracking

We present BlazePose, a lightweight convolutional neural network architecture for human pose estimation that is…

arxiv.org

On-device, Real-time Body Pose Tracking with MediaPipe BlazePose

Pose estimation from video plays a critical role enabling the overlay of digital content and information on top of the…

ai.googleblog.com

BlazePoseの入力と出力

BlazePoseはDetectorとEstimatorの2つの機械学習モデルで構成されます。Detectorでは、入力された画像から人の領域を切り出します。Estimatorでは、256×256解像度の人画像を入力して、キーポイントを出力します。

BlazePoseのキーポイントは下記の33点となります。一般に使用されるCOCOの17点よりも多くのキーポイントを取得可能です。

BlazePoseのキーポイント(出典:https://developers.google.com/ml-kit/vision/pose-detection

BlazePoseのアーキテクチャ

DetectorはSSDベースのアーキテクチャとなっています。(1,224,224,3)の画像を入力として、(1,2254,12)のバウンディングボックスと、(1,2254,1)のコンフィデンススコアを出力します。バウンディングボックスの12要素は、(x,y,w,h,kp1x,kp1y,…,kp4x,kp4y)の形式となっており、kp1x〜kp4yは追加のキーポイントとなります。2254の各要素にはそれぞれアンカーが設定されており、アンカーのスケールとオフセットを適用する必要があります。

Detectorの使用方法には2種類あり、boxモードの場合は(x,y)および(w,h)からBounding Boxを決定します。alignmentモードの場合、(kp1x,kp1y)と(kp2x,kp2y)からスケールと角度を決定します。alingmentモードの場合は回転を含むBounding Boxを予測可能です。

出典:https://ai.googleblog.com/2020/08/on-device-real-time-body-pose-tracking.html

Estimatorは学習時はHeatMapを使用しますが、推論時はHeatMapを用いずに直接的にキーポイントを計算します。これにより、高速な推論が可能です。

Tracking network architecture: regression with heatmap supervision(出典:https://ai.googleblog.com/2020/08/on-device-real-time-body-pose-tracking.html

Estimatorは最初の出力が(1,195)のLandmarks、二番目の出力が(1,1)のflagsとなります。Landmarksは(x,y,z,visibility,presence)が33のキーポイントで165要素入っています。

z値は”image pixels”スケールで、xやyと同じスケールで扱うことができます。z値はhipsを基準としており、マイナスの場合はhipsとcameraの間、プラスの場合はhipsの後ろにキーポイントが存在します。

visibilityとpresenceは[min_float,max_float]のレンジで格納されており、sigmoidを適用することでprobablityに変換します。visibilityはフレーム内に存在し他のオブジェクトで遮蔽されていないキーポイントのprobablityを返します。presenceはフレーム内に存在するキーポイントのprobablityを返します。

Model Card BlazePose GHUM 3D.pdf

Edit description

drive.google.com

BlazePoseの使用方法

BlazePose (Full Body)を使用するには下記のコマンドを使用します。

$ python3 blazepose-fullbody.py -v 0

ailia-models/pose_estimation_3d/blazepose-fullbody at master · axinc-ai/ailia-models

(Image from…

github.com

実行例です。円の大きさがz値を示しています。

https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FbPnO7d4ofb8%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DbPnO7d4ofb8&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FbPnO7d4ofb8%2Fhqdefault.jpg&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=youtube

上半身のみの推定にはBlazePose (Upper Body)も使用可能です。当初、MediaPipeではUpper Bodyのみがリリースされ、追って、Full Bodyのモデルがリリースされたという経緯があり、Detectorの解像度が128×128であるなど、Full BodyとUpper Bodyで仕様が異なっています。

$ python3 blazepose.py -v 0

axinc-ai/ailia-models

(Image from…

github.com

ax株式会社はAIを実用化する会社として、クロスプラットフォームでGPUを使用した高速な推論を行うことができるailia SDKを開発しています。ax株式会社ではコンサルティングからモデル作成、SDKの提供、AIを利用したアプリ・システム開発、サポートまで、 AIに関するトータルソリューションを提供していますのでお気軽にお問い合わせください。