もうキーボードは不要!? リストバンドで指をトラッキングできるFingerTrakを紹介
FingerTrakとは何なのか
次の動画を見てください。謎のリストバンドを腕につけた人がデスクの上で作業しています。画面には指の関節をオーバーレイするような点と線が見つかります。
これはCornell大学が2020年に発表した、FingerTrakというデバイスです。
FingerTrakは、4つの赤外線カメラのついたリストバンドです。
このリストバンドを装着し、パソコンに繋げることで3Dの指の位置推定が可能になっています。
FingerTrak: Continuous 3D Hand Pose Tracking by Deep Learning Hand Silhouettes Captured by Miniature Thermal Cameras on Wrist より引用
普通モーショントラッキングというと、いかついセンサを関節にまとって測定する必要がありました。しかし、FingerTrakでは赤外線カメラのついたリストバンドなので、低いコストで簡単にモーショントラッキングが実現できる点がとても興味深いです。
FingerTrakのプロジェクトページ、FingerTrakについて発表された論文を読みながらどうして指のトラッキングを実現しているかについて解説していきます。
FingerTrakの技術的解説
手の姿勢認識について
大まかに2つに分かれるみたいです。FingerTrakは2つ目の手の姿勢再構成にあたります。
- 手の姿勢分類: どんなハンドサインかを分類するタスク
- 手の姿勢再構成: 手全体の関節の位置を姿勢するタスク
手の姿勢再構成のアプローチとして有名なのは手袋型デバイスを使用することです。
手袋型デバイスは一般に高いので、もっと手軽にできたらいいのになぁというところで登場したのがFingerTrakです。
FingerTrakは、4箇所から赤外線カメラで撮影された手の輪郭画像から手の20点(下図)の3次元座標を推定するタスクを解いています。
ハードウェア(FinterTrak)
FingerTrak自体は4台の赤外線カメラのついたリストバンドです。
4台の赤外線カメラはそれぞれRaspberry PiとI2C通信していて、その先のパソコンに画像が入力され機械学習モデルの推論がされるアーキテクチャです。
赤外線カメラを使う背景についても書かれていました。
一般的なRGBのカメラは高い解像度が得られますが、手の輪郭を正確にセグメンテーションするのが難しくなってしまいます。赤外線カメラから得られた画像のピクセルは温度情報なので、手の輪郭をきれいにとってくれます。
ここでは、解像度が32x24のMLX90640サーモグラフィーカメラを使用しているそうです。
赤外線カメラから取得された画像の例
赤外線カメラ -> 手の位置推定のモデル
4箇所の画像をCNNで特徴抽出し、連結したものを全結合層に入れて回帰しているみたいです。
実験
11人の被験者を集めてデータセットを構築したみたいです。具体的にはLeap Motionという精度良く手の位置推定をしてくれるデバイスを使って手の20点の座標を取得しています。これをデータセットのグラウンドトゥルースとしています。
FingerTrakから取得されたデータとLeap Motionを使って得られたデータを用いてモデルをスクラッチ学習させました。
結果
関節位置のMAEが1.20cm、関節角度のMAEが6.46度となりました。
参考として、手を俯瞰するような画像から位置推定する手法では、関節位置のMAEが1.0cm程度らしいです。また、ウェアラブルのセンシンググローブを使ったとき関節角度の平均誤差が6.0度らしいです。これだけ見ると、そこそこ良い結果に見えます。
異なる背景、FingerTrakの装着の位置のズレについても良好な結果が示されています。
異なる背景になったときに関節位置のMAEは0.89cm増加していますが、著者はモデルがロバストである良い結果として報告しています。下の画像を見て納得しました。素人目線だと差がわかりません。
同じ背景(BG1)と異なる背景(BG2)における赤外線カメラから撮影された画像と手の位置推定
また、著者らはFingerTrakの装着の位置のズレによる誤差の増加についても言及していました。
こちらも、画像を見た雰囲気では良好な結果にみえます。
FingerTrakからわかったこと
解像度の低い赤外線カメラを使ったとしても、実用上問題ない精度で手の位置推定が実現できるのは単純にすごいなぁと感心しています。
ポータビリティという点でも優れていると感じています。姿勢推定では、第三者視点のカメラ画像を入力とした機械学習モデルがよく知られていますが、手全体を映すようなカメラを用意するのがかなり難しいので、手首に装着するだけでいいのは魅力的です。
FingerTrakはキーボードの代替となり得るか
僕は手の位置推定技術をタイピングに応用したいと勝手に思っています。キーボードなしでタイピングできる世界にとてもワクワクしています。
指の動きをある一定の精度でトラッキングすることができれば、キーボードなしでタイピングが可能になると考えています。
キーボードの代替になるかは次の観点が重要だと思っています。
- 手軽さ
- つけ外しの容易さ、頑丈さは欲しい
- 金額の安さ
- 1万円以内に収まって欲しい
- トラッキング性能の高さ
- 応答性の高さ
主観ですが、この観点からFingerTrakをみると、安く, トラッキング性能は高いが、手軽でなく、応答性が低いようです。
すなわち、まだFingerTrakはキーボードの代替にはなりえないと考えます。
手軽さについては、Raspberry Pi 4台つなげ、その先にPCを置いている点から手軽でないと判断しました。頑張ればマイコン1台で収まりそうなので、手軽にはなりそうです。
意外と重要な視点が応答性だと思っています。リアルタイムでないキーボードは打ちたくないですよね。
余談
シミュレーション
ここで面白いのが、Blenderで手のモデル(図左)を作って、仮想カメラを置いて人工データ(図中)を作り、その4枚の画像から手を再構築するモデル(図右)を作っちゃったことなんですよね。
手のデータはMANOという人間の自然な関節の動きが学習されたモデルから作ったみたいです。
シミュレータ上でたくさんのデータを集め、カメラの台数と位置推定の精度の関係について実験したみたいです。
結果として次のことがわかりました。
- カメラの数を増やすと精度は良くなるが、4〜5台でサチる。
- 手の甲より、手のひら側にカメラを置くほうが精度が上がる。
実験結果から、ハードウェア実装では4台のカメラを使用することになりました。
シミュレーター強い!
赤外線カメラ特有の問題
赤外線カメラを使用しているため、背景に人体と同等以上の温度をしめす物体があるとき、モデルが上手く働かないことがあります。
また、赤外線カメラの解像度(32 x 24)が低いため、細かいジェスチャーの違いの認識を苦手としています。例えば、次の画像のように親指を他の指とつけたとき、重なりを区別することができず、判断できません。
著者らは高解像度のRGBカメラのリストバンドを用いて試したみたいですが、上の静止ポーズ分類というタスクでは92%という高いスコアを出しました。(FingerTrakは40%以下)
実はRGBカメラでも良かったのかもしれません。
グラウンドトゥルースの正確さは改善可能
グラウンドトゥルースが安定して正確でないと、いくらデータやモデルが良くても間違った方向に学習が進んでしまいます。
本実験では、LeapMotionというデバイスを用いてグラウンドトゥルースを作成していますが、このデバイスでもまだ不安定な部分があるため、より正確なデータを収集できるデバイスを見つけてくるみたいです。
Discussion