👀

視線推定手法 Gaze-LLE の論文を読んだ

2024/12/30に公開

こんにちは、初めましての方は初めまして。2024 年も終わりに近づいてきましたが、やり残したことが引っきりなしに頭に浮かびあがってきて年の瀬だということを信じたくない今日この頃です。まあそんなことを言ったところで 2024 年が延びることもないので、やり残したことを踏まえて 2025 年は何をするかの計画を今から立てています(「来年の事を言えば鬼が笑う」なんて言いますが、鬼でももうさすがに来年のことを考えてしまうのは仕方ないと思ってくれるはず…)来年はより満足のいく一年に出来ればと思います。

この記事では視線推定手法 Gaze-LLE: Gaze Target Estimation via Large-Scale Learned Encoders (以降 Gaze-LLE として参照) の論文の紹介をします。学習済みモデルや実装は GitHub で公開されています。

忙しい人向けのまとめ

  • 視線タスクにおいて基盤モデルを用いた手法を提案
  • 学習に必要なパラメータを先行研究より大きく削減しつつより良い結果を達成
  • 頭部の位置を示す Head Prompting の提案

視線推定について

視線推定はその名の通り 「画像中の人物が何を見ているか」を解くタスクです。このタスクが出来ると、人とコミュニケーションするシステムにとって特に有用です。これは私たちがコミュニケーションを取る際のことを考えてみると分かりやすいかと思います。例えば私たちが何かについて話しているとき、その視線は話の対象物に視線が向いていることが多いです。また「そこ」や「あれ」などの代名詞が出た場合もその対象物に視線が向いていることが多いでしょう。さらには、目の前のことについて話しているのに視線が全然違う方に向いている場合は「別のことを考えているんだな」と推測することが出来ます。このように、人とコミュニケーションを取るようなシステムにとって、視線推定は無視できないタスクとなりえます(もちろん視線推定の代わりになる能力が存在する可能性は十分にあるため、ここでは「なります」と断言することは避けています)

このタスクを解くために色々な手法が提案されてきました。例えば GazeFollow という視線推定のデータセットを提案した論文[1]では、それぞれのオブジェクトの顕著性と視線先の確率分布をそれぞれ予測し、その二つの結果から最終的な視線先を推定しています。先行研究ではこのようにいくつかのサブタスクに分解して、それぞれの結果を統合して最終的な結果をだすようなモデルとなっています。しかし、サブタスクに分割するとそれぞれのエラーが蓄積されて最終的な結果に大きく影響を与えることがあります。

また、近年ではセグメンテーションや深度推定など、画像に対するタスクにおいて基盤モデルを活用した手法が提案され、従来の精度を大きく上回っています。そこでこの論文では視線推定タスクにも基盤モデルを取り入れ、その有効性を確かめています。それでは、その手法について見ていきましょう。

提案手法


論文図2より引用

モデルの全体図は以上のようになっています。Scene Encoder 部分で画像の特徴を抽出しており、この部分で基盤モデルを使用します(論文中では DINOv2 を使用していると記載されています)Head prompting は頭の位置を表す位置埋め込みであり、事前実験の結果 Scene Encoder で特徴抽出した後に足し合わせることでより良い性能を発揮できたとのことです。Head prompting を加えた画像の特徴量は以下の式で表すことが出来ます。

S = x_{\mathcal{F}} + (M * p_{\mathrm{head}})

ここで x_{\mathcal{F}} \in \mathbb{R}^{d_{\mathrm{model}}\times H\times W}H\times W の大きさの画像に対する Scene Encoder の出力、M は頭のバウンディングボックスから作成されたマスク、p_{\mathrm{head}}\in \mathbb{R}^{d_{\mathrm{model}}} が学習可能な頭の位置埋め込みです。つまり、頭がある位置に対して追加でベクトルを足し合わせている、ということになります。この効果については後ほど見ていきましょう。

Gaze Decoder 部分では Scene EncoderHead prompting で得られた特徴量表現から視線先を推定します。損失関数は以下のようになっています。

\mathcal{L} = \mathcal{L}_{\mathrm{hm}} + \lambda \mathcal{L}_{\mathrm{in/out}}

このタスクでの正解は、正解ラベルから \sigma =3 で二次元ガウス分布の確率に変換したものです。\mathcal{L}_{\mathrm{hm}} は各ピクセルに対するバイナリクロスエントロピーであり、それぞれのピクセルの確率を予測します。\mathcal{L}_{\mathrm{in/out}} はそもそも画像内に視線の先を示すオブジェクトが含まれているかどうかの二値分類の損失となっています。これはデータセットによって視線先のオブジェクトが含まれていない場合があるからとのことですが、「人とのコミュニケーションを目指す」という点ではそもそも視界に入っているかも重要なので、これは良い損失関数だと思います。

実験

この論文では GazeFollow[2], VideoAttentionTarget[3], ChildPlay[4], GOO-Real[5] の四つのデータセットで実験をおこなっています。


論文表3より引用

実験結果ではほとんど全ての評価指標において先行研究を上回る性能を達成しています。また学習に必要なパラメータも先行研究と比較すると 1/10 以下になっていることが分かります[6]


論文表4より引用 (VAT は VisualAttentionTarget)

また、GazeFollow データセットで学習したモデルを別のデータセットで評価した結果でも、先行研究のモデルを超える性能を達成できていることが分かります。これについて、論文では

We attribute the strong generalizability of our method to using an encoder that is not specialized to a task or dataset, learning minimal parameters and thus not overfitting to a particular dataset, and not depending on auxiliary models, which may generalize poorly themselves.

と述べられています。うまく基盤モデルの汎用性を活かしたモデルが作成できている、という主張だと解釈しています(間違っていたらすみません…)

分析では Scene Encoder として他のモデルを使った場合や Head prompting の代わりの方法について実験をおこなっています。個人的には Head prompting の Ablation study が面白いと思ったので少し説明します。


論文表8(a)より引用

まず初めに、Head prompting がある場合とない場合の GazeFollow での結果です。Head prompting を入れないと結果が悪くなっており、その有効性が確認できます。

次に予測結果を見てみましょう。まず一番上の画像については、Head prompting があってもなくてもうまく予測できていることが分かります。これは「一人の場合は事前学習済みモデルの表現に含まれる頭の情報をうまく使えているため」と記述されています。では複数人の場合はどうでしょうか? 真ん中と下の画像を見ると、視線先が間違っていることが分かります。ただし、「視線推定をしたい人」の視線先が間違っているだけで、別の人物の視線推定先としてはどちらもあっているように見えます。つまり 「頭の情報は使えているが、どの頭かを判断出来ていない」 のだと思います。これらの結果から、特に多人数が含まれる画像については「誰の視線を推定したいか」を判別するために Head prompting が有効であることが伺えます。

まとめ

この記事では Gaze-LLE の論文を紹介しました。基盤モデルの強力な特徴量抽出のおかげで複雑なパイプラインを組まなくても視線推定をおこなえることが魅力的です。人間のコミュニケーションでは相手の視線先についても考慮しているであろうことを考えると、将来物理的な身体をもったロボットにとって重要なタスクとなるのだろうと思います。

最後に宣伝になりますが、機械学習でビジネスの成長を加速するために、Fusic の機械学習チームがお手伝いたします。機械学習のPoCから運用まで、すべての場面でサポートした実績があります。もし、困っている方がいましたら、ぜひ Fusic にご相談ください。お問い合わせからでも気軽にご連絡いただけます。また Twitter の DM でのメッセージも大歓迎です。

脚注
  1. http://gazefollow.csail.mit.edu/ ↩︎

  2. http://gazefollow.csail.mit.edu/ ↩︎

  3. Detecting Attended Visual Targets in Video ↩︎

  4. A new benchmark for understanding children’s gaze behaviour. ↩︎

  5. Goo: A dataset for gaze object prediction in retail environments. ↩︎

  6. 「学習するパラメータ」であって、「モデルのパラメータ」ではありません。つまり、Scene Encoder を含むとモデルのパラメータ自体はもっと大きくなると思います。もちろん学習に必要なパラメータが少なければ小さい GPU でも学習できるようになるので、この数値が小さいことは良いことだと思います。 ↩︎

GitHubで編集を提案
Fusic 技術ブログ

Discussion