BlazePose : 3次元座標を取得可能な骨格検出モデル
ailia SDKで使用できる機械学習モデルである「BlazePose」のご紹介です。エッジ向け推論フレームワークであるailia SDKとailia MODELSに公開されている機械学習モデルを使用することで、簡単にAIの機能をアプリケーションに実装することができます。
BlazePoseの概要
BlazePose (Full Body)はGoogleの開発した3次元座標を取得可能な骨格検出モデルです。33点の(x,y,z)座標を取得可能で、フィットネスアプリなどで使用可能です。

BlazePoseの入力と出力
BlazePoseはDetectorとEstimatorの2つの機械学習モデルで構成されます。Detectorでは、入力された画像から人の領域を切り出します。Estimatorでは、256x256解像度の人画像を入力して、キーポイントを出力します。
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.pdfEdit descriptiondrive.google.com
BlazePoseの使用方法
BlazePose (Full Body)を使用するには下記のコマンドを使用します。
$ python3 blazepose-fullbody.py -v 0
実行例です。円の大きさがz値を示しています。
上半身のみの推定にはBlazePose (Upper Body)も使用可能です。当初、MediaPipeではUpper Bodyのみがリリースされ、追って、Full Bodyのモデルがリリースされたという経緯があり、Detectorの解像度が128x128であるなど、Full BodyとUpper Bodyで仕様が異なっています。
$ python3 blazepose.py -v 0
ailia-ai/ailia-models(Image from…github.com
アイリア株式会社はAIを実用化する会社として、クロスプラットフォームでGPUを使用した高速な推論を行うことができるailia SDKを開発しています。アイリア株式会社ではコンサルティングからモデル作成、SDKの提供、AIを利用したアプリ・システム開発、サポートまで、 AIに関するトータルソリューションを提供していますのでお気軽にお問い合わせください。
ailia Tech BLOG