人体トラッキングによって人体から取り出せる情報量は何bitになるのか、という考察とポエム

全身をトラッキングしたい......したいのか?

 前回の記事で、特に手首から指先にかけてのトラッキングについて説明しました。

shike-bengara.hatenablog.com

そもそもこのようなトラッキングをする目的として、「何らかの身体動作を入力とし、何かを動かす」ことが挙げられます。例えば手のジェスチャーをトリガーとして音楽を再生したりとか、トラッキングされた動作をそのまま用いてアバターを動かしたりといった感じです。

 

身体動作を入力とする行動の整理

一旦、「測定対象」の測定結果を計算や機械学習によってよしなにして、「身体動作」をトラッキングし、それを「変換(フィルタリング?写像?操作?)」して「出力」を生む、としたフレームワークを用いて、身体動作を入力とする行動を理解しようとしてみましょう。

 

「測定対象(測定手段)」

  • 筋肉の電位(筋電センサ)
  • 画像(カメラ)
  • 深度画像(ステレオカメラ)
  • 慣性(慣性センサ)
  • 磁界(磁気センサ)
  • 曲げ(静電容量センサ)
  • 圧力(圧力センサ)(ex.つもり制御)
  • ボタン/スライダ入力(エンコーダ)(ex.ロータリーエンコーダで関節角を測る、とかVRコンのボタンを押しているときにその指が曲がっているものとする、とか)

「身体動作」

  • 完全な関節の移動、回転
  • 不完全な関節の移動、回転(指が曲がっている/曲がっていない くらいの精度 情報が落ちている)
  • ジェスチャー(さらに情報が落ちている)
  • 表情
  • 筋肉の動作、力(実際には関節が動いていないことも)

「変換」

  • 動作をそのまま再生する(連続値的に)
  • 動作を別の動作に変換する(連続値的に)
  • 動作を別の種類の動作に変換する(連続値的に)
    (ex.手の高さを音の高さに変換)
  • 動作をトリガーとする(ニ値的に)

「出力」

  • 人型のアバターの動作
  • 非人型のアバターの動作
  • その他の連続値の「滑らかな」操作
    • 音程とか音量とか
  • その他のシステムのニ値的な操作
    • ドアが開くとか
    • スティック入力みたいにも扱える

 

このフレームワークで全てが説明できるのか、chatGPTに人間の行動によって何かが動くシステムの例を出させて確かめてみます。

うーん...

人間が何かを入力してはいるものの、音声とかを入力にできるのは上で考えていませんでしたね。

 

勿論、人間がシステムを動かすためには、身体動作をトラッキングする入力の他にも音声入力やらキーボードやボタン・スライダを使う入力(の中で、特に操作者の身体動作自体を入力として復元しようとしていないもの)などが存在します。これらの入力方法と比べ、身体動作をトラッキングし、入力とするインタラクションが優れている面は何でしょうか。

 

一つには、操作学習をしやすく、無意識的に扱える、つまりインタラクションを身体化できる*1可能性が存在します。例えば、アバターやキャラクターやロボットアームを(一人称視点で)動かすためには、ボタン入力やスライダ入力によって操作するよりも、身体動作を入力としたインタラクションの方が直感的になることが考えられます。物体の表面座標を指し示すときも、十字ボタンで座標を指し示すよりも、人差し指でそれを指さす方が直感的でしょう。同じ自由度(ここでは、アバターの関節の回転角と移動の全体とか、二次元座標xyとか)を持つ対象を操作するときに、十字ボタンやスライダ、キーボードといった身体動作が捨象され自由度だけが別の形で取り出される入力を経由せず、身体の動作をそのまま用いることができれば、より操作対象を身体化できると考えられます*2

 

二つ目には、人間の身体が持つ独立する動作自由度を同時に入力と出来ることが利点として考えられます。例えば5本の指を入力とすれば、DJの同時再生と音量調節を5本同時に行うことが出来るようになります。また、クトゥルフの髭のような、めっちゃ自由度が大きいものを完全に操作するには、当然ながら人間から自由度を沢山取り出すことが必要になります(AIにサポートさせるのも方針として在り得るけれど)。しかしながら、このような「多自由度を入力としたい」場面が実生活の中であまりなく、それこそ身体拡張とかアバター操作の文脈でしか語れない点が弱くはあるんですが......

冷蔵庫を開けるとか動作に合わせてライトを付ける、のような簡単な操作は、ボタン入力とか「身体全体がこの領域に入ったか」のbool値の入力で十分です。世界の操作対象の大体は、身体の多自由度を活用しなくても十分な状態の数しか持っていないんですよね。良いユースケースを思いつきたい。

 

人間の体から沢山の操作の自由度を取り出せ

ここまで書いて気づいたのですが、身体動作を入力とした対象物の操作において重要となるのは、人間の体から独立且つ同時に取り出すことが可能な入力の数です。ここでは、これを自由度と呼ぶことにしましょう。情報量とか状態の数とかにも近いイメージです。

独立というのは、例えば足の指からは関節の配置的には沢山自由度をとれそうだけれど、実際には足の関節は連携して動くので自由度が縮退している、という感じです。

同時というのは、ラジコンのプロポの多チャンネル性みたいなものです。時系列方向の自由度を上手く活用すれば、1bitの操作入力でも理論上無限の操作を行うことが出来ますが、ある操作を行っているときに別の操作を行うことが難しくなったり、非直観的な操作になったりします。そんなわけで、同時に別のチャンネルの自由度を取り出すことが求められると考えています。

 

入力として取り出せる自由度は、「トラッキングする部位が潜在的に持つ自由度」が「トラッキングシステムの性能」に抑えられることにより求められると考えられます。具体的な話をすると、そもそも手指の自由度はめちゃくちゃ高いですが、Manus Quantiumグローブでは親指の第三関節が逆に曲がる動作などをトラッキングできない分少し入力として取れる自由度が下がります。Quest2のハンドトラッキングでは各指のミリmm以下の動作や小指の動作が正確に取れなくなったり、第三関節と第二関節の独立した動作を取りにくくなったりするので、入力として取れる自由度はさらに下がります。筋電トラッキングやIndexコントローラーによる指トラッキングでは、更に各指の動作の解像度が下がり、もはや各指の開閉の値(bool値×5)の5bitの情報しか取得できません。

当然ながら、取り出せる自由度が大きいほど、複雑なシステムを精確に操作できるようになります。人型のアバターはより精確に動かせるし、マッピング/リマッピングを行えばより多くのシステムや多くの身体パーツを持つ身体を操作できるようになります。

でも、本当にたくさんの自由度が必要?

自己批判

そうは言っても、操作されるシステム側を上手く組めば限られた入力の自由度でも十分ぢゃね?例えば蛇の身体を操作するときって自由度をめちゃくちゃ使って完全に操作しなくても、身体をスパースに操作すれば良くない?例えばメデューサの髪を操作したいときには、それぞれの蛇に沢山の自由度を使って操作する代わりに、蛇の頭の部分だけを操作して体の動きはIKで解けばいいし、さらには一部だけを操作して残りはアニメーションだけさせれば良くない??

 

解答:

操作対象の設計を工夫したりAIとか使ったりして、少ない入力自由度で多くのものを操作するアプローチも勿論大事だが、入力自由度を増やせば、さらに多くのもの、デカいシステム、複数の同時に独立したチャンネルで動くパーツを、主体的に操作することができる。

1bitの入力では、AIやら何やらを使ったとしても、アバターの手を主体性を持って動かすことは不可能である。(正確には、bool値をトリガーにグーパーを作ることは出来るし、時系列的に入力を行えば手をある程度動かすことは出来そうだけど、それぞれの指を独立させて自由に動かすことはどうあがいても不可能)。1bitのキーボードがあれば時系列的に様々な入力を行うことが出来そうだけど、そんなキーボードは使いたいか?ctrl+vを押す代わりに1bitのキーボードでモールス信号で「・--・- (ペースト)」を入力したいか?ある部位を操作している間に意思決定が更新されても、別の部位を操作できないのは辛くないか?つまり、多チャンネル入力はありがたいよねという話である。「音声入力で全部良くない?」っていう考え方も同様に否定される。

 

ある操作対象があった時に、それを主体性を持って、かつ操作対象の各部位を同時に直観的に精確に操作するために必要な最小の自由度が存在するはずである。そして、その操作対象がクソでかになっても主体的に操作できるようには、より多くの自由度を取り出す他ない。

 

そんなクソでか操作対象が実際に存在するのか?ユースケースは?と言われたら、難しいところである。隣の研究室の同期からそこが欠けているとHCIじゃなくない?と言われた。人間の可塑性の限界に迫りたい...

人間の可塑性の限界に迫る

そもそも私が興味がある部分はここで、「人間はどこまで非人型の身体を操作できるか」という問いを解きたいと思っている。この問いに関連し良くやられているのが、人間の体から自由度を取り出して別の身体にマッピングするという方法で、例えば手と足の操作を入れ替えたり右手の親指でバーチャルな左腕を操作したり、第三の腕を足で動かしたり、第六の指を拮抗筋の筋電を利用して動かしたりされている。自分が作ったMechanical Brain Hackingでは、ロボットアバタというメタファーを利用して、体験者自身に手足の操作のマッピングをリアルタイムに編集させたりしていた。

www.youtube.com

これらの手法では、入力の自由度を別の身体の動作自由度に変換するアルゴリズムを、どうするのが適切か、ということが一つの大きなトピックである(と私は考えている)。

 

しかしながら、この「マッピングの検討」だけでは、可塑性の限界という問いには到達できないと最近考え始めた。

クトウルフ(ファミ通)

例えばクトゥルフアバターの髭を触手のように完全に操作することは現状出来ない。人間の体から現時点の技術で取れる自由度を全て使ったとしても、操作のための自由度が不足しているからである。(触手は実はnパターンに動けば十分です!という結果があれば、もしかしたら足りているかもしれないけれど。)

本当に解きたい人間の可塑性という問いの中には、「人間が認知的にどこまで自由度が高い身体を操作できるか」も含まれているのに、結局人間の身体をトラッキングしてマッピングする以外の手法がないために、「人間からトラッキングできる自由度を用いて、どこまでの身体を操作できるか」という、トラッキング手法の限界に抑えられたより地に足のついた問いを解いているのが現状かなと思う。悲しいね。

 

よって、上の問いにアクセスするために、人間の体からより多くの自由度を取り出すことが必要だと考える。



理想的なBMIがあったら?

「独立且つ同時」な自由度をいくらでも人間が認知可能な限りで取り出すことができる、とても理想的なBMIがあったら、「人間が認知的にどこまで自由度が高い身体を操作できるか」の問いを遂に解くことが出来そうだ。

人間が身体以上の自由度を持つ身体を操作した時に意識は「大きく」なるのか?二値でアニメーション制御する尻尾と、連続値制御ができる尻尾の操作では意識の「大きさ」が違うのか?意識はどこまで「大きく」なれるのか?

現状のマッピングによる新たな身体の操作は、時系列的な切り替えを除いて考えれば、結局のところ人間の体から同時に取り出せる自由度の数によって新たな身体のデザインが抑えられている。その限界を突破したときに、個としての人間の意識はどこまで「大きく」なれるのだろうか。気になる~~~~~

 

youtu.be

まあ、そんなことを言っても現状のBMIから取れる自由度は僅かです*3。上の動画は2021年のNeuralinkの有名な動画で、猿がテーブルテニスのバーを上下にBMIで動かしている奴ですね。多分bool値×2チャンネルの2bitしか取れていないんじゃないかな...?ワイヤレスなのが凄い。

www.youtube.com

これは2018年くらいの石黒先生の研究室の研究ですが、結構アンドロイドの手を動かすことが出来てそう。凄い。

まあ、それにしても人間の身体をトラッキングして取り出せる以上の自由度をBMIにより取り出せたり、またそれがウェアラブルになって常にアクセスできる未来はまだ遠そうなので、まだ数年は身体をトラッキングしてマッピングを考える分野が生き残るんじゃないかなと思う。

 

自由度の質、評価

ところで、自由度自由度と言ってきたが、それは定量値であるように見えてどのように評価すればいいか分からない、結構あやふやな概念である。

例えば、人差し指と小指の第三関節(根元の関節)の開閉方向の回転だけを考えてみよう。それらの開閉を、0~1の連続値にマッピングすることは出来そうだ。しかし、人差し指の方が小指より精密に動く分だけ、解像度?濃度?のようなものが高く、それを入力として用いるときの情報量は大きくなるはずである。

また、連続値としての入力でなく、bool値としての入力しかトラッキングできない場合も存在する。上にも書いたが、例えばIndexコンによる指の開閉の入力はそんな感じである(本当は三段階くらい取れるっぽいけど)。手で握りこんでるコントローラー部分にタッチセンサがあって、それで各指を閉じているか開いているかを判定している。

www.youtube.com

他には、腕に付ける筋電センサなんかも結構取れる自由度の質は低く、指の開閉しかとれなていない。

 

ラッキング部位+トラッキング装置のペアは、一つの自由度を持つ。その自由度同士を比べるにはどうすればいいだろうか?あるペアは「ある解像度aの連続値A」と「ある解像度bの連続値B」と「ある解像度cの連続値C」をメンバ変数として持っており、他のペアは「ある解像度dの連続値D」と「ある解像度eの連続値E」をメンバ変数として持っているとして、これらから取り出せる自由度の大きさをどのように比較すべきか?

 

ある指の関節の駆動範囲が64度で、人間がその関節は1度ずつ動かせるとした場合、それは入力としては64段階=6bitの情報量を持つような気もする。(これは同時に6チャンネルでbool値を送れるという意味。)しかし、1度ずつ動かせることは1度単位でその関節の角度を指定できることとは異なり、例えば0度→40度→30度→60度の動きを一度の狂いもなく出来る人間は、その指関節にサーボモータを埋め込んでいるのでもない限り、いないと思う。(このような考え方をすると、ダンサーさんの身体は情報量を多く持てる?指関節は頑張っても8段階くらいにしか正確に切り替え可能に動かすことができず、そう考えると3bitの情報量しか持てないような気もする。人間の身体動作の入力をbit数で扱うとき、この関節は3bitと考えるべき?6bitと考えるべき?

勿論、トラッキングする手法の解像度によってもbit数は落ちる。2mmがトラッキングできる最小の解像度の場合だと、前者の手法で取得できるのは32段階/5bitになるし、後者の手法で入力できるのは3bitのままである。

(この辺りのことを考えていた翌日、篠田先生がハプティックスの講義の中で皮膚感覚のデジタル化の話をしており、皮膚感覚に関してほぼ同じアプローチでデジタル化を考えていたので個人的に盛り上がった。)

 

更には、薬指と小指の非独立性なども、自由度の大きさを落とす原因になりそうだけれど、どのように評価すればいいか見当もつかない。薬指が3bit、小指は2bitの情報を持てるけど、合わせたときには自由度が落ちて4bitになるかもしれない。

 

もしも、このような「トラッキングする部位」と「トラッキング手法」によって入力に使える自由度の大きさ、情報量を定量化する手法ができたら最高だし、恐らくbit数とかで記述することは出来ると思うが、今後の課題である。BMIによる入力とかと身体トラッキング入力を比較する手段としても使えそう。

 

この図に対しても、「この段階では何bitで、この段階で自由度が落ちてて....基本的に自由度は上から下で落ちていくよね」みたいな説明をより具体的に出来て嬉しそうである。

 

友人にこれを解きたい、と言ったら「マッピングに対する入力の部分を定量化するのはアツいけれど、結局ものを使うときにはマッピングの方が大事だし、操作する対象を意識しないとHCIじゃないんじゃない?」って言われた。HCIって何なんだよ。

 

主張まとめ

  • 人体トラッキングによって取得できる、システムへの入力として使える情報量や自由度はbit数とかで評価できそう
    • 指関節は0~1の連続値で動くけど、入力として使える情報量はトラッキングシステムの解像度の限界や指の動作の精密性の限界で抑えられる、と思う
  • 人間の魂から理想的なBMIを用いて取り出せる限界の情報量 >= 身体動作の持つ情報量 > トラッキングシステムによって取り出せる情報量, 今のBMIによって取り出せる情報量 >= システムの操作に必要な自由度 
    • 最後の>は操作に必要となる要件、それ以外の>は公理
  • 大きな自由度が操作に必要なシステムを操作するためには大きな自由度を取り出すことが求められる
    • 入力の自由度を用いて色々操作して出力(システムの操作)を行う部分の認知的に楽なマッピングの設計やフィードバックシステムの設計は別の問題
    • 現在はトラッキングによって取得できる自由度に限界があるため、操作できるシステムの大きさにも限界がある
      • (勿論、人間の認知がシステムの大きさのボトルネックになっていると考えられる例もあるけれど...)
  • 人間の意識から直接自由度を取り出せるようになれば、クトゥルフの触手など、操作により大きな自由度を有するものも手足のようにフルコントロールできる可能性があり、そのときに人間の意識や魂は「大きく」なるのかが気になる

*1:言葉の濫用

*2:要出典

*3:サーベイしないと