

[Azure Kinect DK] 点群とBodyTrackingデータを活用した非接触身長計
ソリューション開発部 中川です。
これまでAzure Kinect DKを使ったアプリケーション開発のQuickstartをC#版で紹介してきました。
今回は活用事例として、Azure Kinect DKの点群データとBodyTrackingデータを組み合わせたアプリケーションを紹介します。このアプリケーションは、お客様のPoC(Proof of Concept)支援に取り組むなかで副産物的に産まれたものです。
非接触身長計
今回紹介するのは「非接触身長計」です。
Azure Kinectを活用して、人と一切接触せず距離を保ったまま身長を計測できます。
カメラの映像から身長を推定するソフトウェアやスマホアプリもありますが、Azure Kinectを使用することでより多彩なシチュエーションでの測定が可能となります。
紹介動画
まずは非接触身長計がどのように動作するのか、紹介動画をご覧ください。
Body Trackingデータの恩恵
このアプリケーションではAzure Kinectから取得できるBody Trackingデータを活用することにより、直立不動以外の体勢でも身長を測定できることが特徴です。
Body Trackingデータの各関節の3次元位置情報から関節間の距離を計算し、関節をつなぎ合わせることで身長を導き出しています。
その結果、直立不動の姿勢という制約はなくなり、歩いている時、ダンスしている時、椅子に座っている時、寝ている時など、どんな体勢でも身長を計測できるようになりました。
単純に非接触型の身長計というだけでは一般的な身長計に対して優位性が小さいのですが、このように特定の姿勢を取ることが難しい人でも計測可能となったことで、新たな身長測定方法としての価値が生まれました。
また、Azure KinectのBody Trackingは複数人の識別に対応しているので、同時に2,3人をまとめて計測することも可能です。
精度を高める
非接触身長計に限らず、各種センサーを活用したソフトウェアを開発する際に必ず悩まされるのが「精度」の問題です。
最初から文句なし、100点満点の精度が実現されることはまずありません。そして、打てる対策にも限界がある場合がほとんどです。
非接触身長計でまず課題になったのは、BodyTrackingが正確でない場合の取り扱いです。
Kinectから見て死角にあたる位置に頭や手足がある場合、BodyTrackingは機械学習モデルから推測値を出します。推測値と実際の関節の位置が異なる場合、身長が高く出すぎたり、逆に低く出すぎることがあります。
これらの異常値が紛れ込むことによって精度が下がってしまうという問題に直面しました。
異常値を取り除く
この問題に対応するため、単純な方法として、
- 秒間15フレームでフレーム毎に計測値を算出する
- ある程度の時間(1分程度)計測を続ける
- 各フレームの計測結果の中央値を最終的な身長として採用する
という方法を用いて、高すぎる、あるいは低すぎる異常値を取り除くようにしました。
動画中でも身長が徐々に実際値に収束していく様子がお分かりいただけるかと思います。
その他いくつかの対策をおこないましたが、実現できた精度は数ミリの誤差の場合もあれば、2,3cm差が出る場合もあります。
落としどころを見つける
最終的には、落としどころをどこに置くか、を決定する必要があります。
精度問題に取り組む場合、開発するアプリケーションの「目的」「用途」を明確にすることで、落としどころを見つけやすくなります。
非接触身長計の場合、目的を「距離を保って、どんな姿勢でも簡易に身長を計測できる」とした場合、動画の状態でも合格とすることもできるでしょう。しかし目的が例えば「衣服のフィッティングのために厳密な身長を計測する」だと、より精度を高める取り組みが必要となるかもしれません。
「目的」「用途」は最初から明確に、そして必要に応じて落としどころを変更することも開発を成功させるために必要なポイントだと思います。
アークシステムのPoC支援サービス
アークシステムでは、お客様のPoC支援を承っております。
Azure Kinectをはじめ、HoloLens2など先進のMixed Realityデバイスに対応可能なほか、最新技術を活用してDX推進のお手伝いが可能です。
当社のシステム開発サービスについてはこちらをご参照下さい。