ディープラーニングを用いた視線推定

こんにちは。スキルアップAI編集部です。

視線推定はコンピュータビジョンの一分野です。コンピュータビジョンと聞くとMNISTの分類問題や、GANによる画像の生成などを思い浮かべる人が多いのではないでしょうか。視線推定とは簡単に言うと人の顔の画像からその人の視線方向を予測するタスクであり、基礎的な側面と応用の側面の両面での面白さがあります。そこで本ブログでは、視線推定という分野についてお話していきます。この記事を通じて、視線推定という分野に少しでも興味を持っていただけたら幸いです。

# 目次
[1.視線推定とは](#1-視線推定とは)
[2.視線推定の手法と現状](#2-視線推定の手法と現状)
[3.今後の展望](#3-今後の展望)
[4.参考文献](#4-参考文献)

# 1. 視線推定とは
先ほど述べた通り、視線推定は画像から視線を推定するタスクです。推定される視線は2次元の座標もしくは3次元のベクトルで表現されます。見ている場所の座標を推定することを2次元視線推定(2D gaze estimation)、視線の方向を表す3次元ベクトルを推定することを3次元視線推定(3D gaze estimation)といいます。

図1にディープラーニングを用いた視線推定の流れの一例を示します。2次元視線推定では、例えば、ある人がPCの画面を見ているような状況において画面のどこを見ているのかを推定し、それを2次元の座標で表現します。画面のどこを見ているのかを精度良く推定できれば、ウェブ画面の改善などに役立てることができると考えられます。

3次元視線推定では、ある人がどの方向を見ているのかを推定し、それを3次元のベクトルで表現します。見ている方向を精度良く推定できればロボットと人が目でコミュニケーションをうまくとれるようになるでしょう。

2次元視線推定、3次元視線推定のどちらにおいても、入力としては2次元形式の顔画像もしくは3次元形式の顔のデータが与えられます。
![992dbbf382d7df3924b5f7fe1e1e2001-858x475.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/e608484e-5b44-480a-0fd7-26be834d6240.png)
図1. ディープラーニングを用いた視線推定の流れの一例
(参考文献[1]より引用)

# 2. 視線推定の手法と現状
視線推定の手法は、大きく分けると、以下のように分類されます。
![スクリーンショット 2020-11-30 181435.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/91d15b13-4fe4-4674-24ee-5a086cb992c6.png)
これまでは、目を幾何学的にモデル化し視線を推定するアプローチ(model-basedと呼ばれる)がとられていました。この方法では、角膜の反射や虹彩なども考慮する必要があり、低解像度の画像からそのような条件を考慮することは難しく、model-basedな方法では高い精度を達成することが難しいと考えられていました。

そんな中、視線推定の分野にもディープラーニングが取り入れられ始めました。2015年にZhangら[2]によってCNNを用いて顔の画像から直接視線を推定する手法(appearance-basedと呼ばれる)が提案されました。図2にその手法の概要を示します。この手法では従来のmodel-basedな手法に比べ、それほど高画質な入力画像が要求されないという利点があり、様々なデータを用いることができるようになりました。
![2b530e80c7d0de90885e285c5d798063-900x334.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/e613150e-97d6-a8aa-1242-be159d3e1bad.png)
図2. 最初に提案されたCNNベースの手法
(参考文献[2]より引用)

また視線推定の手法にはperson-specificとperson-independentという2つの分類があります。

・person-specific：ある特定の人物の視線を推定するためにその人物に合わせて最適化する手法
・person-independent：一度学習すれば再学習等を行わなくても誰に対しても同じように推定できることを目指す手法

これまでは主にperson-independentな手法が研究されてきましたが、最近では少ないデータでも学習がしやすいことからperson-specificな手法も研究されるようになってきています。今のディープラーニングの技術を持ってすれば、person-independentな手法も実現できそうに思われますが、それには大量のデータを用意する必要があります。視線推定というタスクでは、画像だけ先に用意して後から正解ラベル(視線方向)をつけるということが難しいため、視線推定用のデータを作るところから始めなければならず、大量にデータを用意するのは現実的ではありません。

こういった理由から最近ではperson-specificな手法も提案されるようになってきているのですが、もちろんこれらの手法においては、ある1人の人物のデータをたくさん用意して、その人の画像だけで学習するというやり方はしません。ここで登場するのはfew-shot learningという考え方です。few-shot learningとは、あらかじめ学習済みモデルを用意しておき、最適化したい対象に関するデータを少量用いて学習済みモデルを再学習する手法のことです。few-shot learningを用いた視線推定では汎用的なデータセットを用いて学習した後、視線を推定したい人物のアノテーション付きの画像を数枚(5枚程度)だけ用いてその人物に合わせて最適化します。

視線推定用の代表的なデータセットして、MPIIGaze[2]とGazeCapture[4]があります。 MPIIGazeは15人に関する計約21万枚の画像を含むデータセットで、GazeCaptureは1450人に関する計約250万枚の画像を含むデータセットです。参考までに、GANによる顔画像の生成などで用いられるCelebAというデータセットは約1万人の画像を含んでおり、これに比べると視線推定のデータセットは多様性に欠けるということが言え、これは今後の課題です。

# 3. 今後の展望
person-independentな手法の実現を目指す研究や、person-specificでより精度の高いものを目指す研究などが今後の研究の主流になっていくと考えられますが、どちらにおいても顔の画像から視線に関する特徴をいかに上手く捉えるかということが大きな課題です。 これに関し、2019年、Parkら[3]によって面白い手法が提案されました。それは、視線の方向をずらしながら画像を再構成するように自己符号化器(autoencoder)を学習させることで、潜在ベクトルにおいて視線に関する特徴を明示的に分離し(disentanglingという)、これを特徴量として視線推定器を学習するというものです。図３に、視線方向をずらしながら再構成された目の画像を示します。このような視線に関する特徴を捉えるための新しい手法についても、今後の重要な研究テーマとなるでしょう。
![c8856789ec11ab8b1013037cef6929f9-900x169.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/122d5dce-b9bd-d121-519c-237be00ceb45.png)
図3 .視線方向をずらしながら再構成された目の画像
(参考文献[3]より引用)

図1と図2で紹介した視線推定の方法は、どちらもCNNをベースとしています。CNNの仕組みや実装方法にご興味のある方は、ぜひ現場で使える[ディープラーニング基礎講座](https://bit.ly/3okYuIz)をご検討ください。

# 4. 参考文献
[1] [ZHANG, Xucong, et al.. It’s written all over yourface: Full-face appearance-based gaze estimation. In: Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition Workshops. 2017. p. 51-60.](https://openaccess.thecvf.com/content_cvpr_2017_workshops/w41/html/Bulling_Its_Written_All_CVPR_2017_paper.html)
[2] [ZHANG, Xucong, et al.. Appearance-based gaze estimation in the wild. In: Proceedings of the IEEE conference on computer vision and pattern recognition. 2015. p. 4511-4520.](https://www.cv-foundation.org/openaccess/content_cvpr_2015/html/Zhang_Appearance-Based_Gaze_Estimation_2015_CVPR_paper.html)
[3] [ARK, Seonwook, et al.. Few-shot adaptive gaze estimation. In: Proceedings of the IEEE International Conference on Computer Vision. 2019. p. 9368-9377.](https://openaccess.thecvf.com/content_ICCV_2019/html/Park_Few-Shot_Adaptive_Gaze_Estimation_ICCV_2019_paper.html)
[4] [KRAFKA, Kyle, et al.. Eye tracking for everyone. In: Proceedings of the IEEE conference on computer vision and pattern recognition. 2016. p. 2176-2184.](https://www.cv-foundation.org/openaccess/content_cvpr_2016/html/Krafka_Eye_Tracking_for_CVPR_2016_paper.html)

# 25卒向け！AIエンジニアになるための長期インターンプログラム参加者募集中！
25卒学生向けに、AIの基礎を学びながら就活も一括サポートする無料カリキュラムを提供しています。
修了するとE資格の受験資格も獲得できるプログラムとなっています！

<img width="700" alt="長期インターン" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/bfce4c26-1ebe-c54d-bacb-e804048a7a08.png">

**特長①AIエンジニアやデータサイエンティストの基礎が身に付く**
AIジェネラリスト基礎講座や機械学習のためのPython入門講座など、市場価値向上のための基礎を習得。

**特長②AI・データ分析領域の優良求人を紹介**
非公開求人や選考直結型インターンをご紹介し、早期内定の獲得をサポート。

**特長③長期インターンプログラム専用の学生コミュニティ参加可**
学生同士で就活情報をシェアしたり、学習を進めるうえでアドバイスをしあったりできるコミュニティに参加可能。

＞＞[長期インターン詳細](https://bit.ly/3pXW5JM)

☆☆☆
スキルアップAIのメールマガジンでは会社のお知らせや講座に関するお得な情報を配信しています。
配信を希望される方は[こちら](https://share.hsforms.com/1_XlReV-4Te-zcxCl9lhffA2mtef)

また、SNSでも様々なコンテンツをお届けしています。興味を持った方は是非チェックしてください♪
Twitterは[こちら](https://twitter.com/SkillupAi)
Facebookは[こちら](https://www.facebook.com/skillupai)
LinkedInは[こちら](https://www.linkedin.com/company/skillup-ai)