少し昔の実験ですが、2020年3月頃から販売されている Azure Kinect の Body Tracking SDK を触ってみたので、そこで得られた知見を共有しようと思います。
Azure Kinect とは
Azure Kinect は Microsoft 社が開発・販売している深度カメラ・RGBカメラ・多チャンネルマイクが搭載されたセンサデバイスです。このセンサデバイスを使うための様々な SDK が公式から提供されており、SDK を利用することで複数人のボディトラッキングや音声認識などが行えます。
やったこと
今回は Azure Kinect の Body Tracking SDK を用いて、高齢者の方の体操中の動きを計測してみました。Body Tracking SDK とは、Microsoftが提供している SDK の一つで、Azure Kinect を使用して、人間の動きをトラッキングするためのソフトウェア開発キットです。このSDKは、人間の骨格構造を検出し、それぞれの骨格の位置を推定することができます。このSDKは C++, C#, Unity などに対応していますが、今回は C# のサンプルコードを用いました。
セットアップ方法
こちらの公式ドキュメントに記載されている手順の通りにセットアップを行いました。
公式ドキュメント: https://learn.microsoft.com/ja-jp/azure/kinect-dk/body-sdk-setup
基本的には、SDK をダウンロードして、インストールするだけではありますが、細かい手順がバージョン毎に異なる場合があるので、ここではセットアップ方法については割愛します。詳細については Microsoft の公式ドキュメントをご参照ください。
ボディトラッキングの結果
体操時のボディトラッキングの例 (深呼吸中に両手を上に伸ばした時のグラフ)二人がカメラの前で座って体操を行いました。
- 手前左側の方の計測値をグラフ化
- 同じ動作 (深呼吸) を計4回行ってもらい、動きを始めと終わりを概ね同期させてグラフ化
このように体操時の各関節の可動域などを定量化して蓄積し、対象者の健康状態との相関を調査することで、体操を行うだけで、その人の健康状態を自動的に判断するアプリケーションに応用できるかもしれません
まとめ
Azure Kinect と Body Tracking SDK を使うことで、ある程度の精度でボディトラッキングが出来ることが分かりました。身体の一部が隠れても全身の骨格位置が出力されていたので、SDK 内部で欠損値予測なども行っているみたいです。
比較対象として、最近は深度センサを使わずに単眼 RGB カメラの映像から3次元ボディトラッキングを行う機械学習モデルが盛んに開発されているので、その辺りとの比較もやっていきたいと思います。
一つ懸念点としては、Azure Kinect は Kinect v2 よりも新しいデバイスであるため、Kinect v2 よりも高精度にボディトラッキングが出来ると思っていましたが、調べてみると一概にそうとは言えないみたいなので、今後の SDK のアップデートなどで変わってくるかもしれませんが、その点については注意が必要ですね。
公式 Github ページ issue : https://github.com/microsoft/Azure-Kinect-Sensor-SDK/issues/514
論文 : https://www.mdpi.com/1424-8220/20/18/5104
参考
- Azure Kinect 公式ホームページ : https://azure.microsoft.com/ja-jp/products/kinect-dk/
- Azure Kinect SDK ドキュメントページ : https://learn.microsoft.com/ja-jp/azure/kinect-dk/
- Azure Kinect SDK 公式 Github: https://github.com/microsoft/Azure-Kinect-Sensor-SDK
コメントを残す