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

BlazePose: On-device Real-time Body Pose tracking
On-device, Real-time Body Pose Tracking with MediaPipe BlazePose
BlazePoseの入力と出力
BlazePoseはDetectorとEstimatorの2つの機械学習モデルで構成されます。Detectorでは、入力された画像から人の領域を切り出します。Estimatorでは、256×256解像度の人画像を入力して、キーポイントを出力します。
BlazePoseのキーポイントは下記の33点となります。一般に使用されるCOCOの17点よりも多くのキーポイントを取得可能です。

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を予測可能です。

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

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
BlazePoseの使用方法
BlazePose (Full Body)を使用するには下記のコマンドを使用します。
$ python3 blazepose-fullbody.py -v 0
ailia-models/pose_estimation_3d/blazepose-fullbody at master · axinc-ai/ailia-models
実行例です。円の大きさがz値を示しています。
上半身のみの推定にはBlazePose (Upper Body)も使用可能です。当初、MediaPipeではUpper Bodyのみがリリースされ、追って、Full Bodyのモデルがリリースされたという経緯があり、Detectorの解像度が128×128であるなど、Full BodyとUpper Bodyで仕様が異なっています。
$ python3 blazepose.py -v 0
ax株式会社はAIを実用化する会社として、クロスプラットフォームでGPUを使用した高速な推論を行うことができるailia SDKを開発しています。ax株式会社ではコンサルティングからモデル作成、SDKの提供、AIを利用したアプリ・システム開発、サポートまで、 AIに関するトータルソリューションを提供していますのでお気軽にお問い合わせください。