(57)【要約】【課題】画像に写る人物の視線方向の推定精度を向上させる。【解決手段】本発明の一側面に係る情報処理装置は、人物の視線方向を推定するための情報処理装置であって、人物の顔を含む画像を取得する画像取得部と、前記人物の目を含む部分画像を前記画像から抽出する画像抽出部と、視線方向を推定するための機械学習を行った学習済みの学習器に前記部分画像を入力することで、前記人物の視線方向を示す視線情報を当該学習器から取得する推定部と、を備える。【選択図】図５
2019028843.tif 000002
【特許請求の範囲】
【請求項１】
人物の顔を含む画像を取得する画像取得部と、
前記人物の目を含む部分画像を前記画像から抽出する画像抽出部と、
視線方向を推定するための機械学習を行った学習済みの学習器に前記部分画像を入力することで、前記人物の視線方向を示す視線情報を当該学習器から取得する推定部と、
を備える、
人物の視線方向を推定するための情報処理装置。
【請求項２】
前記画像抽出部は、前記部分画像として、前記人物の右目を含む第１部分画像と前記人物の左目を含む第２部分画像とを抽出し、
前記推定部は、前記第１部分画像及び前記第２部分画像を学習済みの前記学習器に入力することで、前記視線情報を前記学習器から取得する、
請求項１に記載の情報処理装置。
【請求項３】
前記学習器は、ニューラルネットワークによって構成され、
前記ニューラルネットワークは、入力層を含み、
前記推定部は、前記第１部分画像及び前記第２部分画像を結合して結合画像を作成し、作成した結合画像を前記入力層に入力する、
請求項２に記載の情報処理装置。
【請求項４】
前記学習器は、ニューラルネットワークによって構成され、
前記ニューラルネットワークは、第１部分と、第２部分と、当該第１部分及び第２部分の各出力を結合する第３部分を含み、
前記第１部分と前記第２部分とは並列に配置され、
前記推定部は、前記第１部分画像を前記第１部分に入力し、前記第２部分画像を前記第２部分に入力する、
請求項２に記載の情報処理装置。
【請求項５】
前記第１部分は、１又は複数の畳み込み層及びプーリング層により構成され、
前記第２部分は、１又は複数の畳み込み層及びプーリング層により構成され、
前記第３部分は、１又は複数の畳み込み層及びプーリング層により構成される、
請求項４に記載の情報処理装置。
【請求項６】
前記画像抽出部は、
前記画像において、前記人物の顔の写る顔領域を検出し、
前記顔領域において、前記顔の器官の位置を推定し、
推定した前記器官の位置に基づいて、前記部分画像を前記画像から抽出する、
請求項１から５のいずれか１項に記載の情報処理装置。
【請求項７】
前記画像抽出部は、前記顔領域において、少なくとも２つの前記器官の位置を推定し、推定した前記２つの器官の間の距離に基づいて、前記部分画像を前記画像から抽出する、
請求項６に記載の情報処理装置。
【請求項８】
前記器官は、目尻、目頭、及び鼻を含み、
前記画像抽出部は、前記目尻及び前記目頭の中点を前記部分画像の中心に設定し、前記目頭及び前記鼻の間の距離を基準に前記部分画像のサイズを決定する、
請求項７に記載の情報処理装置。
【請求項９】
前記器官は、目尻及び目頭を含み、
前記画像抽出部は、前記目尻及び前記目頭の中点を前記部分画像の中心に設定し、両目の前記目尻間の距離を基準に前記部分画像のサイズを決定する、
請求項７に記載の情報処理装置。
【請求項１０】
前記器官は、目尻及び目頭を含み、
前記画像抽出部は、前記目尻及び前記目頭の中点を前記部分画像の中心に設定し、両目における前記目頭及び前記目尻の中点間の距離を基準に前記部分画像のサイズを決定する、
請求項７に記載の情報処理装置。
【請求項１１】
前記部分画像の解像度を低下させる解像度変換部を更に備え、
前記推定部は、解像度を低下させた前記部分画像を学習済みの前記学習器に入力することで、前記視線情報を前記学習器から取得する、
請求項１から１０のいずれか１項に記載の情報処理装置。
【請求項１２】
コンピュータが、
人物の顔を含む画像を取得する画像取得ステップと、
前記人物の目を含む部分画像を前記画像から抽出する画像抽出ステップと、
視線方向を推定するための学習を行った学習済みの学習器に前記部分画像を入力することで、前記人物の視線方向を示す視線情報を当該学習器から取得する推定ステップと、
を実行する、
人物の視線方向を推定するための推定方法。
【請求項１３】
人物の目を含む部分画像、及び当該人物の視線方向を示す視線情報の組を学習データとして取得する学習データ取得部と、
前記部分画像を入力すると前記視線情報に対応する出力値を出力するように学習器を学習させる学習処理部と、
を備える、
学習装置。
【請求項１４】
コンピュータが、
人物の目を含む部分画像、及び当該人物の視線方向を示す視線情報の組を学習データとして取得するステップと、
前記部分画像を入力すると前記視線情報に対応する出力値を出力するように学習器を学習させるステップと、
を実行する、
学習方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像中の人物の視線方向を推定するための情報処理装置及び推定方法、並びに学習装置及び学習方法に関する。
【背景技術】
【０００２】
近年、運転者がよそ見をしていることに応じて車両を安全な場所に停車させる、ユーザの視線を利用してポインティング操作を行う等の人物の視線を利用した様々な制御方法が提案されており、これらの制御方法を実現するために人物の視線方向を推定する技術が開発されている。この人物の視線方向を推定する簡易な方法の一つとして、人物の顔が写る画像を解析することで、当該人物の視線方向を推定する方法がある。
【０００３】
例えば、特許文献１には、画像中の人物の視線の向きを検出する視線検出方法が提案されている。具体的には、特許文献１で提案される視線検出方法では、全体画像の中から顔画像を検出し、検出した顔画像の目から複数の目特徴点を抽出すると共に、顔画像の顔を構成する部位から複数の顔特徴点を抽出する。そして、この視線検出方法では、抽出した複数の目特徴点を用いて目の向きを示す目特徴量を生成するとともに、複数の顔特徴点を用いて顔の向きを示す顔特徴量を生成し、生成した目特徴量及び顔特徴量を用いて視線の向きを検出する。特許文献１で提案される視線検出方法は、このような画像処理のステップを採用し、顔の向きと目の向きとを同時に計算して視線の向きを検出するようにすることで、人物の視線方向を効率的に検出することを目的としている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２６５３６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本件発明者らは、上記のような従来の画像処理により人物の視線方向を推定する方法には、次のような問題点があることを見出した。すなわち、視線方向は、人物の顔の向きと目の向きとの組み合わせにより定められる。従来の方法では、この人物の顔の向きと目の向きとを各特徴量により個別に検出しているため、顔の向きの検出誤差と目の向きの検出誤差とが重畳的に生じてしまう可能性がある。これによって、従来の方法では、人物の視線方向の推定精度が低下してしまう恐れがあるという問題点があることを本件発明者らは見出した。
【０００６】
本発明は、一側面では、このような実情を鑑みてなされたものであり、その目的は、画像に写る人物の視線方向の推定精度を向上させることのできる技術を提供することである。
【課題を解決するための手段】
【０００７】
本発明は、上述した課題を解決するために、以下の構成を採用する。
【０００８】
すなわち、本発明の一側面に係る情報処理装置は、人物の視線方向を推定するための情報処理装置であって、人物の顔を含む画像を取得する画像取得部と、前記人物の目を含む部分画像を前記画像から抽出する画像抽出部と、視線方向を推定するための機械学習を行った学習済みの学習器に前記部分画像を入力することで、前記人物の視線方向を示す視線情報を当該学習器から取得する推定部と、を備える。
【０００９】
人物の目を含む部分画像には、当該人物の顔の向きと目の向きとが表れ得る。当該構成では、機械学習により得られる学習済みの学習器の入力として、この人物の目を含む部分画像を利用することで、当該人物の視線方向を推定する。これにより、人物の顔の向きと目の向きとを個別に計算するのではなく、部分画像に表れ得る人物の視線方向を直接推定することができる。従って、当該構成によれば、顔の向きの推定誤差と目の向きの推定誤差とが蓄積するのを防ぐことができるため、画像に写る人物の視線方向の推定精度を向上させることができる。
【００１０】
なお、「視線方向」とは、対象の人物が見ている方向のことであり、当該人物の顔の向きと目の向きとの組み合わせによって定められる。また、「機械学習」とは、データ（学習データ）に潜むパターンをコンピュータにより見つけ出すことであり、「学習器」は、そのような機械学習により所定のパターンを識別する能力を獲得可能な学習モデルにより構成される。この学習器の種類は、部分画像から人物の視線方向を推定する能力を学習可能であれば、特に限定されなくてもよい。「学習済みの学習器」は、「識別器」又は「分類器」と称されてもよい。
【００１１】
上記一側面に係る情報処理装置において、前記画像抽出部は、前記部分画像として、前記人物の右目を含む第１部分画像と前記人物の左目を含む第２部分画像とを抽出してもよく、前記推定部は、前記第１部分画像及び前記第２部分画像を学習済みの前記学習器に入力することで、前記視線情報を前記学習器から取得してもよい。当該構成によれば、両目それぞれの部分画像を学習器の入力として利用することで、画像に写る人物の視線方向の推定精度を向上させることができる。
【００１２】
上記一側面に係る情報処理装置において、前記学習器は、ニューラルネットワークによって構成されてよく、前記ニューラルネットワークは、前記第１部分画像及び前記第２部分画像の両方が入力される入力層を含み、前記推定部は、前記第１部分画像及び前記第２部分画像を結合して結合画像を作成し、作成した結合画像を前記入力層に入力してもよい。当該構成によれば、ニューラルネットワークを用いることで、画像に写る人物の視線方向を推定可能な学習済みの学習器を適切かつ容易に構築することができる。
【００１３】
上記一側面に係る情報処理装置において、前記学習器は、ニューラルネットワークによって構成されてよく、前記ニューラルネットワークは、第１部分と、第２部分と、当該第１部分及び第２部分の各出力を結合する第３部分を含んでもよく、前記第１部分と前記第２部分とは並列に配置されてもよく、前記推定部は、前記第１部分画像を前記第１部分に入力し、前記第２部分画像を前記第２部分に入力してもよい。当該構成によれば、ニューラルネットワークを用いることで、画像に写る人物の視線方向を推定可能な学習済みの学習器を適切かつ容易に構築することができる。なお、この場合、前記第１部分は、１又は複数の畳み込み層及びプーリング層により構成されてよい。前記第２部分は、１又は複数の畳み込み層及びプーリング層により構成されてよい。前記第３部分は、１又は複数の畳み込み層及びプーリング層により構成されてよい。
【００１４】
上記一側面に係る情報処理装置において、前記画像抽出部は、前記画像において、前記人物の顔の写る顔領域を検出し、前記顔領域において、前記顔の器官の位置を推定し、推定した前記器官の位置に基づいて、前記部分画像を前記画像から抽出してもよい。当該構成によれば、人物の目を含む部分画像を適切に抽出することができ、画像に写る人物の視線方向の推定精度を向上させることができる。
【００１５】
上記一側面に係る情報処理装置において、前記画像抽出部は、前記顔領域において、少なくとも２つの前記器官の位置を推定し、推定した前記２つの器官の間の距離に基づいて、前記部分画像を前記画像から抽出してもよい。当該構成によれば、２つの器官の間の距離を基準に、人物の目を含む部分画像を適切に抽出することができ、画像に写る人物の視線方向の推定精度を向上させることができる。
【００１６】
上記一側面に係る情報処理装置において、前記器官は、目尻、目頭、及び鼻を含んでもよく、前記画像抽出部は、前記目尻及び前記目頭の中点を前記部分画像の中心に設定し、前記目頭及び前記鼻の間の距離を基準に前記部分画像のサイズを決定してもよい。当該構成によれば、人物の目を含む部分画像を適切に抽出することができ、画像に写る人物の視線方向の推定精度を向上させることができる。
【００１７】
上記一側面に係る情報処理装置において、前記器官は、目尻及び目頭を含んでもよく、前記画像抽出部は、前記目尻及び前記目頭の中点を前記部分画像の中心に設定し、両目の前記目尻間の距離を基準に前記部分画像のサイズを決定してもよい。当該構成によれば、人物の目を含む部分画像を適切に抽出することができ、画像に写る人物の視線方向の推定精度を向上させることができる。
【００１８】
上記一側面に係る情報処理装置において、前記器官は、目尻及び目頭を含んでもよく、前記画像抽出部は、前記目尻及び前記目頭の中点を前記部分画像の中心に設定し、両目における前記目頭及び前記目尻の中点間の距離を基準に前記部分画像のサイズを決定してもよい。当該構成によれば、人物の目を含む部分画像を適切に抽出することができ、画像に写る人物の視線方向の推定精度を向上させることができる。
【００１９】
上記一側面に係る情報処理装置は、前記部分画像の解像度を低下させる解像度変換部を更に備えてもよく、前記推定部は、解像度を低下させた前記部分画像を学習済みの前記学習器に入力することで、前記視線情報を前記学習器から取得してもよい。当該構成によれば、解像度を低下させた部分画像を学習済みの学習器の入力として利用することで、当該学習器の演算処理の計算量を低減することができ、人物の視線方向を推定するのにかかるプロセッサの負荷を抑えることができる。
【００２０】
また、本発明の一側面に係る学習装置は、人物の目を含む部分画像、及び当該人物の視線方向を示す視線情報の組を学習データとして取得する学習データ取得部と、前記部分画像を入力すると前記視線情報に対応する出力値を出力するように学習器を学習させる学習処理部と、を備える。当該構成によれば、人物の視線方向を推定するのに利用する上記学習済みの学習器を構築することができる。
【００２１】
なお、上記各側面に係る情報処理装置及び学習装置それぞれの別の形態として、以上の各構成を実現する情報処理方法であってもよいし、プログラムであってもよいし、このようなプログラムを記録したコンピュータその他装置、機械等が読み取り可能な記憶媒体であってもよい。ここで、コンピュータ等が読み取り可能な記録媒体とは、プログラム等の情報を、電気的、磁気的、光学的、機械的、又は化学的作用によって蓄積する媒体である。
【００２２】
例えば、本発明の一側面に係る推定方法は、人物の視線方向を推定するための推定方法であって、コンピュータが、人物の顔を含む画像を取得する画像取得ステップと、前記人物の目を含む部分画像を前記画像から抽出する画像抽出ステップと、視線方向を推定するための学習を行った学習済みの学習器に前記部分画像を入力することで、前記人物の視線方向を示す視線情報を当該学習器から取得する推定ステップと、を実行する、情報処理方法である。
【００２３】
また、例えば、本発明の一側面に係る学習方法は、コンピュータが、人物の目を含む部分画像、及び当該人物の視線方向を示す視線情報の組を学習データとして取得するステップと、前記部分画像を入力すると前記視線情報に対応する出力値を出力するように学習器を学習させるステップと、を実行する、情報処理方法である。
【発明の効果】
【００２４】
本発明によれば、画像に写る人物の視線方向の推定精度を向上させることのできる技術を提供することができる。
【図面の簡単な説明】
【００２５】
【図１】図１は、本発明が適用される場面の一例を模式的に例示する。
【図２】図２は、視線方向を説明するための図である。
【図３】図３は、実施の形態に係る視線方向推定装置のハードウェア構成の一例を模式的に例示する。
【図４】図４は、実施の形態に係る学習装置のハードウェア構成の一例を模式的に例示する。
【図５】図５は、実施の形態に係る視線方向推定装置のソフトウェア構成の一例を模式的に例示する。
【図６】図６は、実施の形態に係る学習装置のソフトウェア構成の一例を模式的に例示する。
【図７】図７は、実施の形態に係る視線方向推定装置の処理手順の一例を例示する。
【図８Ａ】図８Ａは、部分画像を抽出する方法の一例を例示する。
【図８Ｂ】図８Ｂは、部分画像を抽出する方法の一例を例示する。
【図８Ｃ】図８Ｃは、部分画像を抽出する方法の一例を例示する。
【図９】図９は、実施の形態に係る学習装置の処理手順の一例を例示する。
【図１０】図１０は、変形例に係る視線方向推定装置のソフトウェア構成の一例を模式的に例示する。
【図１１】図１１は、変形例に係る視線方向推定装置のソフトウェア構成の一例を模式的に例示する。
【発明を実施するための形態】
【００２６】
以下、本発明の一側面に係る実施の形態（以下、「本実施形態」とも表記する）を、図面に基づいて説明する。ただし、以下で説明する本実施形態は、あらゆる点において本発明の例示に過ぎない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。つまり、本発明の実施にあたって、実施形態に応じた具体的構成が適宜採用されてもよい。なお、本実施形態において登場するデータを自然言語により説明しているが、より具体的には、コンピュータが認識可能な疑似言語、コマンド、パラメータ、マシン語等で指定される。
【００２７】
§１  適用例
まず、図１を用いて、本発明が適用される場面の一例について説明する。図１は、本実施形態に係る視線方向推定装置１及び学習装置２の適用場面の一例を模式的に例示する。
【００２８】
図１に示されるとおり、本実施形態に係る視線方向推定装置１は、カメラ３により撮影した画像に写る人物Ａの視線方向を推定するための情報処理装置である。具体的には、本実施形態に係る視線方向推定装置１は、カメラ３から人物Ａの顔を含む画像を取得する。次に、視線方向推定装置１は、カメラ３から取得した画像から人物Ａの目を含む部分画像を抽出する。
【００２９】
この部分画像は、人物Ａの右目及び左目のうちの少なくとも一方を含むように抽出される。すなわち、１件の部分画像は、人物Ａの両目を含むように抽出されてもよいし、人物Ａの右目及び左目のうちのいずれか一方のみを含むように抽出されてもよい。
【００３０】
また、人物Ａの右目及び左目のうちのいずれか一方のみを含むように部分画像を抽出する場合、右目及び左目のうちのいずれか一方のみを含む１件の部分画像のみを抽出するようにしてもよいし、右目を含む第１部分画像と左目を含む第２部分画像との２件の部分画像を抽出するようにしてもよい。本実施形態では、視線方向推定装置１は、人物Ａの右目及び左目をそれぞれ個別に含む２件の部分画像（後述する第１部分画像１２３１及び第２部分画像１２３２）を抽出する。
【００３１】
そして、視線方向推定装置１は、視線方向を推定するための学習を行った学習済みの学習器（後述する畳み込みニューラルネットワーク５）に抽出した部分画像を入力することで、人物Ａの視線方向を示す視線情報を当該学習器から取得する。これにより、視線方向推定装置１は、人物Ａの視線方向を推定する。
【００３２】
ここで、図２を用いて、推定対象となる人物の「視線方向」について説明する。図２は、人物Ａの視線方向を説明するための図である。視線方向とは、人物の見ている方向のことである。図２に示されるとおり、カメラ３の方向（図の「カメラ方向」）を基準に人物Ａの顔の向きが規定される。また、人物Ａの顔の向きを基準に目の向きが規定される。よって、カメラ３を基準とした人物Ａの視線方向は、カメラ方向を基準とした人物Ａの顔の向きと当該顔の向きを基準とした目の向きとの組み合わせによって規定される。本実施形態に係る視線方向推定装置１は、このような視線方向を上記の方法により推定する。
【００３３】
一方、本実施形態に係る学習装置２は、視線方向推定装置１で利用する学習器を構築する、すなわち、人物Ａの目を含む部分画像の入力に応じて、当該人物Ａの視線方向を示す視線情報を出力するように学習器の機械学習を行うコンピュータである。具体的には、学習装置２は、上記部分画像及び視線情報の組を学習データとして取得する。学習装置２は、これらのうちの部分画像を入力データとして利用し、視線情報を教師データ（正解データ）として利用する。つまり、学習装置２は、部分画像を入力すると視線情報に対応する出力値を出力するように学習器（後述する畳み込みニューラルネットワーク６）を学習させる。
【００３４】
これにより、視線方向推定装置１で利用する学習済みの学習器を作成することができる。視線方向推定装置１は、例えば、ネットワークを介して、学習装置２により作成された学習済みの学習器を取得することができる。なお、ネットワークの種類は、例えば、インターネット、無線通信網、移動通信網、電話網、専用網等から適宜選択されてよい。
【００３５】
以上のとおり、本実施形態では、機械学習により得られる学習済みの学習器の入力として人物Ａの目を含む部分画像を利用することで、当該人物Ａの視線方向を推定する。人物Ａの目を含む部分画像には、カメラ方向を基準とした顔の向きと顔の向きを基準とした目の向きとが表れるため、本実施形態によれば、人物Ａの視線方向を適切に推定することができる。
【００３６】
また、本実施形態では、人物Ａの顔の向きと目の向きとを個別に計算するのではなく、部分画像に表れる人物Ａの視線方向を直接推定することができる。従って、本実施形態によれば、顔の向きの推定誤差と目の向きの推定誤差とが蓄積するのを防ぐことができるため、画像に写る人物Ａの視線方向の推定精度を向上させることができる。
【００３７】
なお、このような視線方向推定装置１は、様々な場面で利用されてよい。例えば、本実施形態に係る視線方向推定装置１は、自動車に搭載され、運転者の視線方向を推定し、推定した視線方向に基づいて当該運転者がよそ見をしているか否かを判定するのに利用されてもよい。また、例えば、本実施形態に係る視線方向推定装置１は、ユーザの視線方向を推定し、推定した視線方向に基づいてポインティング操作を行うのに利用されてもよい。また、例えば、本実施形態に係る視線方向推定装置１は、工場の作業者の視線方向を推定し、推定した視線方向に基づいて当該作業者の作業の熟練度の推定に用いてもよい。
【００３８】
§２  構成例
［ハードウェア構成］
＜視線方向推定装置＞
次に、図３を用いて、本実施形態に係る視線方向推定装置１のハードウェア構成の一例について説明する。図３は、本実施形態に係る視線方向推定装置１のハードウェア構成の一例を模式的に例示する。
【００３９】
図３に示されるとおり、本実施形態に係る視線方向推定装置１は、制御部１１、記憶部１２、外部インタフェース１３、通信インタフェース１４、入力装置１５、出力装置１６、及びドライブ１７が電気的に接続されたコンピュータである。なお、図２では、外部インタフェース及び通信インタフェースをそれぞれ、「外部Ｉ／Ｆ」及び「通信Ｉ／Ｆ」と記載している。
【００４０】
制御部１１は、ハードウェアプロセッサであるＣＰＵ（Central Processing Unit）、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）等を含み、情報処理に応じて各構成要素の制御を行う。記憶部１２は、例えば、ハードディスクドライブ、ソリッドステートドライブ等の補助記憶装置であり、プログラム１２１、学習結果データ１２２等を記憶する。記憶部１２は、「メモリ」の一例である。
【００４１】
プログラム１２１は、視線方向推定装置１に人物Ａの視線方向を推定する後述の情報処理（図７）を実行させるための命令を含む。学習結果データ１２２は、学習済みの学習器の設定を行うためのデータである。詳細は後述する。
【００４２】
外部インタフェース１３は、外部装置と接続するためのインタフェースであり、接続する外部装置に応じて適宜構成される。本実施形態では、外部インタフェース１３は、カメラ３に接続される。
【００４３】
カメラ３（撮影装置）は、人物Ａを撮影するために利用される。このカメラ３は、利用場面に応じて、人物Ａの少なくとも顔を撮影するように適宜配置されてよい。例えば、上記運転者のよそ見を検知するケースでは、カメラ３は、運転操作時に運転者の顔が位置すべき範囲を撮影範囲としてカバーするように配置されてよい。なお、カメラ３には、一般のデジタルカメラ、ビデオカメラ等が用いられてよい。
【００４４】
通信インタフェース１４は、例えば、有線ＬＡＮ（Local Area Network）モジュール、無線ＬＡＮモジュール等であり、ネットワークを介した有線又は無線通信を行うためのインタフェースである。入力装置１５は、例えば、キーボード、タッチパネル、マイクロフォン等の入力を行うための装置である。出力装置１６は、例えば、ディスプレイ、スピーカ等の出力を行うための装置である。
【００４５】
ドライブ１７は、例えば、ＣＤ（Compact Disk）ドライブ、ＤＶＤ（Digital Versatile Disk）ドライブ等であり、記憶媒体９１に記憶されたプログラムを読み込むための装置である。ドライブ１７の種類は、記憶媒体９１の種類に応じて適宜選択されてよい。上記プログラム１２１及び／又は学習結果データ１２２は、この記憶媒体９１に記憶されていてもよい。
【００４６】
記憶媒体９１は、コンピュータその他装置、機械等が記録されたプログラム等の情報を読み取り可能なように、当該プログラム等の情報を、電気的、磁気的、光学的、機械的又は化学的作用によって蓄積する媒体である。視線方向推定装置１は、この記憶媒体９１から、上記プログラム１２１及び／又は学習結果データ１２２を取得してもよい。
【００４７】
ここで、図３では、記憶媒体９１の一例として、ＣＤ、ＤＶＤ等のディスク型の記憶媒体を例示している。しかしながら、記憶媒体９１の種類は、ディスク型に限定される訳ではなく、ディスク型以外であってもよい。ディスク型以外の記憶媒体として、例えば、フラッシュメモリ等の半導体メモリを挙げることができる。
【００４８】
なお、視線方向推定装置１の具体的なハードウェア構成に関して、実施形態に応じて、適宜、構成要素の省略、置換及び追加が可能である。例えば、制御部１１は、複数のハードウェアプロセッサを含んでもよい。ハードウェアプロセッサは、マイクロプロセッサ、ＦＰＧＡ（field-programmable gate array）等で構成されてよい。記憶部１２は、制御部１１に含まれるＲＡＭ及びＲＯＭにより構成されてもよい。視線方向推定装置１は、複数台の情報処理装置で構成されてもよい。また、視線方向推定装置１には、提供されるサービス専用に設計されたＰＬＣ（programmable logic controller）等の情報処理装置の他、汎用のデスクトップＰＣ（Personal Computer）、タブレットＰＣ、携帯電話等が用いられてもよい。
【００４９】
＜学習装置＞
次に、図４を用いて、本実施形態に係る学習装置２のハードウェア構成の一例を説明する。図４は、本実施形態に係る学習装置２のハードウェア構成の一例を模式的に例示する。
【００５０】
図４に示されるとおり、本実施形態に係る学習装置２は、制御部２１、記憶部２２、外部インタフェース２３、通信インタフェース２４、入力装置２５、出力装置２６、及びドライブ２７が電気的に接続されたコンピュータである。なお、図４では、図３と同様に、外部インタフェース及び通信インタフェースをそれぞれ、「外部Ｉ／Ｆ」及び「通信Ｉ／Ｆ」と記載している。
【００５１】
制御部２１〜ドライブ２７はそれぞれ、上記視線方向推定装置１の制御部１１〜ドライブ１７と同様である。また、ドライブ２７に取り込まれる記憶媒体９２は、上記記憶媒体９１と同様である。ただし、学習装置２の記憶部２２は、学習プログラム２２１、学習データ２２２、学習結果データ１２２等を記憶する。
【００５２】
学習プログラム２２１は、学習器の機械学習に関する後述の情報処理（図９）を学習装置２に実行させるための命令を含む。学習データ２２２は、人物の目を含む部分画像から当該人物の視線方向を解析可能に学習器の機械学習を行うためのデータである。学習結果データ１２２は、制御部２１により学習プログラム２２１が実行され、学習データ２２２を利用して学習器の機械学習が行われた結果として作成される。詳細は後述する。
【００５３】
なお、上記視線方向推定装置１と同様に、学習プログラム２２１及び／又は学習データ２２２は、記憶媒体９２に記憶されていてもよい。これに応じて、学習装置２は、利用する学習プログラム２２１及び／又は学習データ２２２を記憶媒体９２から取得してもよい。
【００５４】
また、学習装置２の具体的なハードウェア構成に関して、実施形態に応じて、適宜、構成要素の省略、置換及び追加が可能である。更に、学習装置２には、提供されるサービス専用に設計された情報処理装置の他、汎用のサーバ装置、デスクトップＰＣ等が用いられてもよい。
【００５５】
［ソフトウェア構成］
＜視線方向推定装置＞
次に、図５を用いて、本実施形態に係る視線方向推定装置１のソフトウェア構成の一例を説明する。図５は、本実施形態に係る視線方向推定装置１のソフトウェア構成の一例を模式的に例示する。
【００５６】
視線方向推定装置１の制御部１１は、記憶部１２に記憶されたプログラム１２１をＲＡＭに展開する。そして、制御部１１は、ＲＡＭに展開されたプログラム１２１をＣＰＵにより解釈及び実行して、各構成要素を制御する。これによって、図５に示されるとおり、本実施形態に係る視線方向推定装置１は、ソフトウェアモジュールとして、画像取得部１１１、画像抽出部１１２、及び推定部１１３を備えるように構成される。
【００５７】
画像取得部１１１は、人物Ａの顔を含む画像１２３をカメラ３から取得する。画像抽出部１１２は、人物の目を含む部分画像を画像１２３から抽出する。推定部１１３は、視線方向を推定するための機械学習を行った学習済みの学習器（畳み込みニューラルネットワーク５）に部分画像を入力する。これにより、推定部１１３は、人物の視線方向を示す視線情報１２５を学習器から取得する。
【００５８】
本実施形態では、画像抽出部１１２は、部分画像として、人物Ａの右目を含む第１部分画像１２３１と人物Ａの左目を含む第２部分画像１２３２とを抽出する。推定部１１３は、第１部分画像１２３１及び第２部分画像１２３２を学習済みの学習器に入力することで、視線情報１２５を当該学習器から取得する。
【００５９】
（学習器）
次に、学習器について説明する。図５に示されるとおり、本実施形態では、人物の視線方向を推定するための機械学習を行った学習済みの学習器として、畳み込みニューラルネットワーク５が利用される。
【００６０】
畳み込みニューラルネットワーク５は、畳み込み層５１及びプーリング層５２を交互に接続した構造を有する順伝播型ニューラルネットワークである。本実施形態に係る畳み込みニューラルネットワーク５は、複数の畳み込み層５１及び複数のプーリング層５２を備えており、複数の畳み込み層５１及び複数のプーリング層５２は、入力側で交互に配置されている。最も入力側に配置された畳み込み層５１は、本発明の「入力層」の一例である。最も出力側に配置されたプーリング層５２の出力は全結合層５３に入力され、全結合層５３の出力は出力層５４に入力される。
【００６１】
畳み込み層５１は、画像の畳み込みの演算を行う層である。画像の畳み込みとは、画像と所定のフィルタとの相関を算出する処理に相当する。そのため、画像の畳み込みを行うことで、例えば、フィルタの濃淡パターンと類似する濃淡パターンを入力される画像から検出することができる。
【００６２】
プーリング層５２は、プーリング処理を行う層である。プーリング処理は、画像のフィルタに対する応答の強かった位置の情報を一部捨て、画像内に現れる特徴の微小な位置変化に対する応答の不変性を実現する。
【００６３】
全結合層５３は、隣接する層の間のニューロン全てを結合した層である。すなわち、全結合層５３に含まれる各ニューロンは、隣接する層に含まれる全てのニューロンに結合される。全結合層５３は、２層以上で構成されてもよい。出力層５４は、畳み込みニューラルネットワーク５の最も出力側に配置される層である。
【００６４】
各ニューロンには閾値が設定されており、基本的には、各入力と各重みとの積の和が閾値を超えているか否かによって各ニューロンの出力が決定される。制御部１１は、最も入力側に配置された畳み込み層５１に、第１部分画像１２３１及び第２部分画像１２３２の両方を入力し、各層に含まれる各ニューロンの発火判定を入力側から順に行う。これにより、制御部１１は、視線情報１２５に対応する出力値を出力層５４から取得することができる。
【００６５】
なお、この畳み込みニューラルネットワーク５の構成（例えば、各層におけるニューロンの個数、ニューロン同士の結合関係、各ニューロンの伝達関数）、各ニューロン間の結合の重み、及び各ニューロンの閾値を示す情報は、学習結果データ１２２に含まれている。制御部１１は、学習結果データ１２２を参照して、人物Ａの視線方向を推定する処理に用いる学習済みの畳み込みニューラルネットワーク５の設定を行う。
【００６６】
＜学習装置＞
次に、図６を用いて、本実施形態に係る学習装置２のソフトウェア構成の一例を説明する。図６は、本実施形態に係る学習装置２のソフトウェア構成の一例を模式的に例示する。
【００６７】
学習装置２の制御部２１は、記憶部２２に記憶された学習プログラム２２１をＲＡＭに展開する。そして、制御部２１は、ＲＡＭに展開された学習プログラム２２１をＣＰＵにより解釈及び実行して、各構成要素を制御する。これによって、図６に示されるとおり、本実施形態に係る学習装置２は、ソフトウェアモジュールとして、学習データ取得部２１１、及び学習処理部２１２を備えるように構成される。
【００６８】
学習データ取得部２１１は、人物の目を含む部分画像、及び当該人物の視線方向を示す視線情報の組を学習データとして取得する。上記のとおり、本実施形態では、人物の右目を含む第１部分画像及び左目を含む第２部分画像を部分画像として利用する。そのため、学習データ取得部２１１は、人物の右目を含む第１部分画像２２３１、人物の左目を含む第２部分画像２２３２、及び当該人物の視線方向を示す視線情報２２５の組を学習データ２２２として取得する。第１部分画像２２３１及び第２部分画像２２３２はそれぞれ、上記第１部分画像１２３１及び第２部分画像１２３２に対応し、入力データとして利用される。視線情報２２５は、上記視線情報１２５に対応し、教師データ（正解データ）として利用される。学習処理部２１２は、第１部分画像２２３１及び第２部分画像２２３２を入力すると視線情報２２５に対応する出力値を出力するように学習器の機械学習を行う。
【００６９】
図６に示されるとおり、本実施形態において、学習対象となる学習器は、畳み込みニューラルネットワーク６である。当該畳み込みニューラルネットワーク６は、畳み込み層６１、プーリング層６２、全結合層６３、及び出力層６４を備えており、上記畳み込みニューラルネットワーク５と同様に構成される。各層６１〜６４は、上記畳み込みニューラルネットワーク５の各層５１〜５４と同様である。
【００７０】
学習処理部２１２は、ニューラルネットワークの学習処理により、最も入力側の畳み込み層６１に第１部分画像２２３１及び第２部分画像２２３２を入力すると、視線情報２２５に対応する出力値を出力層６４から出力する畳み込みニューラルネットワーク６を構築する。そして、学習処理部２１２は、構築した畳み込みニューラルネットワーク６の構成、各ニューロン間の結合の重み、及び各ニューロンの閾値を示す情報を学習結果データ１２２として記憶部２２に格納する。
【００７１】
＜その他＞
視線方向推定装置１及び学習装置２の各ソフトウェアモジュールに関しては後述する動作例で詳細に説明する。なお、本実施形態では、視線方向推定装置１及び学習装置２の各ソフトウェアモジュールがいずれも汎用のＣＰＵによって実現される例について説明している。しかしながら、以上のソフトウェアモジュールの一部又は全部が、１又は複数の専用のプロセッサにより実現されてもよい。また、視線方向推定装置１及び学習装置２それぞれのソフトウェア構成に関して、実施形態に応じて、適宜、ソフトウェアモジュールの省略、置換及び追加が行われてもよい。
【００７２】
§３  動作例
［視線方向推定装置］
次に、図７を用いて、視線方向推定装置１の動作例を説明する。図７は、視線方向推定装置１の処理手順の一例を例示するフローチャートである。以下で説明する人物Ａの視線方向を推定する処理手順は、本発明の「推定方法」の一例である。ただし、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
【００７３】
＜初期動作＞
まず、制御部１１は、起動時に、プログラム１２１を読み込んで、初期設定の処理を実行する。具体的には、制御部１１は、学習結果データ１２２を参照して、畳み込みニューラルネットワーク５の構造、各ニューロン間の結合の重み及び各ニューロンの閾値の設定を行う。そして、制御部１１は、以下の処理手順に従って、人物Ａの視線方向を推定する処理を実行する。
【００７４】
＜ステップＳ１０１＞
ステップＳ１０１では、制御部１１は、画像取得部１１１として動作し、人物Ａの顔を含み得る画像１２３をカメラ３から取得する。取得する画像１２３は、動画像であってもよいし、静止画像であってもよい。画像１２３のデータを取得すると、制御部１１は、次のステップＳ１０２に処理を進める。
【００７５】
＜ステップＳ１０２＞
ステップＳ１０２では、制御部１１は、画像抽出部１１２として動作し、ステップＳ１０１で取得した画像１２３において、人物Ａの顔の写る顔領域を検出する。顔領域の検出には、パターンマッチング等の公知の画像解析方法が用いられてよい。
【００７６】
顔領域の検出が完了すると、制御部１１は、次のステップＳ１０３に処理を進める。なお、ステップＳ１０１で取得した画像１２３内に人物の顔が写っていない場合は、本ステップＳ１０２において顔領域を検出することができない。この場合、制御部１１は、本動作例に係る処理を終了し、ステップＳ１０１から処理を繰り返してもよい。
【００７７】
＜ステップＳ１０３＞
ステップＳ１０３では、制御部１１は、画像抽出部１１２として動作し、ステップＳ１０２で検出した顔領域において、顔に含まれる各器官を検出することで、当該各器官の位置を推定する。各器官の検出には、パターンマッチング等の公知の画像解析方法が用いられてよい。検出対象となる器官は、例えば、目、口、鼻等である。検出対象となる器官は、後述する部分画像の抽出方法に応じて異なっていてもよい。顔の各器官の検出が完了すると、制御部１１は、次のステップＳ１０４に処理を進める。
【００７８】
＜ステップＳ１０４＞
ステップＳ１０４では、制御部１１は、画像抽出部１１２として動作し、人物Ａの目を含む部分画像を画像１２３から抽出する。本実施形態では、制御部１１は、部分画像として、人物Ａの右目を含む第１部分画像１２３１と人物Ａの左目を含む第２部分画像１２３２とを抽出する。また、本実施形態では、上記ステップＳ１０２及びＳ１０３により、画像１２３において顔領域を検出し、検出した顔領域において各器官の位置を推定している。そこで、制御部１１は、推定した各器官の位置に基づいて、各部分画像（１２３１、１２３２）を抽出する。
【００７９】
器官の位置を基準に各部分画像（１２３１、１２３２）を抽出する方法として、例えば、以下の（１）〜（３）で示す３つの方法が挙げられる。制御部１１は、以下の３つの方法のうちのいずれかの方法により、各部分画像（１２３１、１２３２）を抽出してもよい。ただし、器官の位置を基準に各部分画像（１２３１、１２３２）を抽出する方法は、以下の３つの方法に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。
【００８０】
なお、以下の３つの方法では、各部分画像（１２３１、１２３２）を同様の処理により抽出可能である。そのため、以下では、説明の便宜のため、これらのうち第１部分画像１２３１を抽出する場面を説明し、第２部分画像１２３２を抽出する方法については第１部分画像１２３１と同様として適宜説明を省略する。
【００８１】
（１）第１の方法
図８Ａに例示されるとおり、第１の方法では、目と鼻との間の距離を基準に各部分画像（１２３１、１２３２）を抽出する。図８Ａは、第１の方法により、第１部分画像１２３１を抽出する場面の一例を模式的に例示する。
【００８２】
この第１の方法では、制御部１１は、目尻及び目頭の中点を部分画像の中心に設定し、目頭及び鼻の間の距離を基準に部分画像のサイズを決定する。具体的には、図８Ａに示されるとおり、制御部１１は、まず、上記ステップＳ１０３で推定した各器官の位置のうち、右目ＡＲの目尻ＥＢの位置及び目頭ＥＡの位置の各座標を取得する。続いて、制御部１１は、取得した目尻ＥＢの座標値及び目頭ＥＡの座標値を加算平均することで、目尻ＥＢ及び目頭ＥＡの中点ＥＣの位置の座標を算出する。制御部１１は、この中点ＥＣを、第１部分画像１２３１として抽出する範囲の中心に設定する。
【００８３】
次に、制御部１１は、鼻ＮＡの位置の座標値を更に取得し、取得した右目ＡＲの目頭ＥＡの座標値及び鼻ＮＡの座標値に基づいて、目頭ＥＡと鼻ＮＡとの間の距離ＢＡを算出する。図８Ａの例では、距離ＢＡは縦方向に沿って延びているが、距離ＢＡの方向は、縦方向から傾いていてもよい。そして、制御部１１は、算出した距離ＢＡに基づいて、第１部分画像１２３１の横方向の長さＬ及び縦方向の長さＷを決定する。
【００８４】
このとき、距離ＢＡと横方向の長さＬ及び縦方向の長さＷの少なくとも一方と比率が予め決定されていてもよい。また、横方向の長さＬ及び縦方向の長さＷの比率が予め決定されていてよい。制御部１１は、この角比率と上記距離ＢＡとに基づいて、横方向の長さＬ及び縦方向の長さＷを決定することができる。
【００８５】
例えば、距離ＢＡと横方向の長さＬとの比率は、１：０．７〜１の範囲で設定されてよい。また、例えば、横方向の長さＬと縦方向の長さＷとの比率は、１：０．５〜１に設定されてよい。具体例として、横方向の長さＬと縦方向の長さＷとの比率を、８：５に設定することができる。この場合、制御部１１は、設定された比率と算出した上記距離ＢＡとに基づいて、横方向の長さＬを算出することができる。そして、制御部１１は、算出した横方向の長さＬに基づいて、縦方向の長さＷを算出することができる。
【００８６】
これにより、制御部１１は、第１部分画像１２３１として抽出する範囲の中心及びサイズを決定することができる。制御部１１は、決定した範囲の画素を画像１２３から抽出することで、第１部分画像１２３１を取得することができる。制御部１１は、左目について同様の処理を行うことで、第２部分画像１２３２を取得することができる。
【００８７】
なお、各部分画像（１２３１、１２３２）の抽出にこの第１の方法を採用する場合、上記ステップＳ１０３では、制御部１１は、各器官の位置として少なくとも目尻、目頭、及び鼻の位置を推定する。すなわち、位置を推定する対象となる器官には、少なくとも目尻、目頭、及び鼻が含まれる。
【００８８】
（２）第２の方法
図８Ｂに例示されるとおり、第２の方法では、両目の目尻間の距離を基準に各部分画像（１２３１、１２３２）を抽出する。図８Ｂは、第２の方法により、第１部分画像１２３１を抽出する場面の一例を模式的に例示する。
【００８９】
この第２の方法では、制御部１１は、目尻及び目頭の中点を部分画像の中心に設定し、両目の目尻間の距離を基準に部分画像のサイズを決定する。具体的には、図８Ｂに示されるとおり、制御部１１は、上記第１の方法と同様に、右目ＡＲの目尻ＥＢ及び目頭ＥＡの中点ＥＣの位置の座標を算出し、この中点ＥＣを、第１部分画像１２３１として抽出する範囲の中心に設定する。
【００９０】
次に、制御部１１は、左目ＡＬの目尻ＥＧの位置の座標値を更に取得し、取得した左目ＡＬの目尻ＥＧの座標値及び右目ＡＲの目尻ＥＢの座標値に基づいて、両目尻（ＥＢ、ＥＧ）間の距離ＢＢを算出する。図８Ｂの例では、距離ＢＢは横方向に沿って延びているが、距離ＢＢの方向は、横方向から傾いていてもよい。そして、制御部１１は、算出した距離ＢＢに基づいて、第１部分画像１２３１の横方向の長さＬ及び縦方向の長さＷを決定する。
【００９１】
このとき、上記第１の方法と同様に、距離ＢＢと横方向の長さＬ及び縦方向の長さＷの少なくとも一方と比率が予め決定されていてもよい。また、横方向の長さＬ及び縦方向の長さＷの比率が予め決定されていてよい。例えば、距離ＢＢと横方向の長さＬとの比率は、１：０．４〜０．５の範囲で設定されてよい。この場合、制御部１１は、設定された比率と算出した上記距離ＢＢとに基づいて、横方向の長さＬを算出することができ、算出した横方向の長さＬに基づいて、縦方向の長さＷを算出することができる。
【００９２】
これにより、制御部１１は、第１部分画像１２３１として抽出する範囲の中心及びサイズを決定することができる。そして、上記第１の方法と同様に、制御部１１は、決定した範囲の画素を画像１２３から抽出することで、第１部分画像１２３１を取得することができる。制御部１１は、左目について同様の処理を行うことで、第２部分画像１２３２を取得することができる。
【００９３】
なお、各部分画像（１２３１、１２３２）の抽出にこの第２の方法を採用する場合、上記ステップＳ１０３では、制御部１１は、各器官の位置として少なくとも両目の目尻及び目頭の位置を推定する。すなわち、位置を推定する対象となる器官には、少なくとも両目の目尻及び目頭が含まれる。ただし、第１部分画像１２３１及び第２部分画像１２３２のいずれか一方の抽出を省略する場合には、省略する方に対応する目の目頭の位置の推定は省略されてよい。
【００９４】
（３）第３の方法
図８Ｃに例示されるとおり、第３の方法では、両目における目頭及び目尻の中点間の距離を基準に各部分画像（１２３１、１２３２）を抽出する。図８Ｃは、第３の方法により、第１部分画像１２３１を抽出する場面の一例を模式的に例示する。
【００９５】
この第３の方法では、制御部１１は、目尻及び目頭の中点を部分画像の中心に設定し、両目における目頭及び目尻の中点間の距離を基準に部分画像のサイズを決定する。具体的には、図８Ｃに示されるとおり、制御部１１は、上記第１の方法及び第２の方法と同様に、右目ＡＲの目尻ＥＢ及び目頭ＥＡの中点ＥＣの位置の座標を算出し、この中点ＥＣを、第１部分画像１２３１として抽出する範囲の中心に設定する。
【００９６】
次に、制御部１１は、左目ＡＬの目尻ＥＧ及び目頭ＥＦそれぞれの位置の座標値を更に取得し、中点ＥＣと同様の方法で、左目ＡＬの目尻ＥＧ及び目頭ＥＦの中点ＥＨの位置の座標を算出する。続いて、制御部１１は、各中点（ＥＣ、ＥＨ）の座標値に基づいて、両中点（ＥＣ、ＥＨ）間の距離ＢＣを算出する。図８Ｃの例では、距離ＢＣは横方向に延びているが、距離ＢＣの方向は、横方向から傾いていてもよい。そして、制御部１１は、算出したＢＣに基づいて、第１部分画像１２３１の横方向の長さＬ及び縦方向の長さＷを決定する。
【００９７】
このとき、上記第１の方法及び第２の方法と同様に、距離ＢＣと横方向の長さＬ及び縦方向の長さＷの少なくとも一方と比率が予め決定されていてもよい。また、横方向の長さＬ及び縦方向の長さＷの比率が予め決定されていてよい。例えば、距離ＢＣと横方向の長さＬとの比率は、１：０．６〜０．８の範囲で設定されてよい。この場合、制御部１１は、設定された比率と算出した上記距離ＢＣとに基づいて、横方向の長さＬを算出することができ、算出した横方向の長さＬに基づいて、縦方向の長さＷを算出することができる。
【００９８】
これにより、制御部１１は、第１部分画像１２３１として抽出する範囲の中心及びサイズを決定することができる。そして、上記第１の方法及び第２の方法と同様に、制御部１１は、決定した範囲の画素を画像１２３から抽出することで、第１部分画像１２３１を取得することができる。制御部１１は、左目について同様の処理を行うことで、第２部分画像１２３２を取得することができる。
【００９９】
なお、各部分画像（１２３１、１２３２）の抽出にこの第３の方法を採用する場合、上記ステップＳ１０３では、制御部１１は、各器官の位置として少なくとも両目の目尻及び目頭の位置を推定する。すなわち、位置を推定する対象となる器官には、少なくとも両目の目尻及び目頭が含まれる。
【０１００】
（小括）
以上の３つの方法によれば、人物Ａの各目を含む各部分画像（１２３１、１２３２）を適切に抽出することができる。各部分画像（１２３１、１２３２）の抽出が完了すると、制御部１１は、次のステップＳ１０５に処理を進める。
【０１０１】
なお、以上の３つの方法では、目及び鼻（第１の方法）、両目（第２の方法及び第３の方法）等のように２つの器官の間の距離を、各部分画像（１２３１、１２３２）のサイズの基準として利用している。すなわち、本実施形態では、制御部１１は、２つの器官の間の距離に基づいて、各部分画像（１２３１、１２３２）を抽出している。このように２つの器官の間の距離に基づいて、各部分画像（１２３１、１２３２）のサイズを決定する場合、制御部１１は、上記ステップＳ１０３において、少なくとも２つの器官の位置を推定すればよい。また、各部分画像（１２３１、１２３２）のサイズの基準として利用可能な２つの器官は、以上の３つの例に限定されなくてもよく、目及び鼻以外の器官が、各部分画像（１２３１、１２３２）のサイズの基準として利用されてよい。例えば、本ステップＳ１０４では、目頭と口との間の距離を、各部分画像（１２３１、１２３２）のサイズの基準として利用してもよい。
【０１０２】
＜ステップＳ１０５及びＳ１０６＞
ステップＳ１０５では、制御部１１は、推定部１１３として動作し、抽出した第１部分画像１２３１及び第２部分画像１２３２を畳み込みニューラルネットワーク５の入力として用いて、当該畳み込みニューラルネットワーク５の演算処理を実行する。これにより、ステップＳ１０６では、制御部１１は、視線情報１２５に対応する出力値を当該畳み込みニューラルネットワーク５から取得する。
【０１０３】
具体的には、制御部１１は、ステップＳ１０４で抽出した第１部分画像１２３１及び第２部分画像１２３２を結合して結合画像を作成し、畳み込みニューラルネットワーク５の最も入力側の畳み込み層５１に作成した結合画像を入力する。例えば、ニューラルネットワークの入力層の各ニューロンには、結合画像の各ピクセルの輝度値が入力される。そして、制御部１１は、入力側から順に、各層に含まれる各ニューロンの発火判定を行う。これにより、制御部１１は、視線情報１２５に対応する出力値を出力層５４から取得する。
【０１０４】
なお、画像１２３内に写る人物Ａの各目の大きさは、カメラ３と人物Ａとの間の距離、人物Ａの写る角度等の撮影条件によって変化し得る。そのため、各部分画像（１２３１、１２３２）のサイズは、撮影条件によって異なり得る。そこで、制御部１１は、ステップＳ１０５の前に、畳み込みニューラルネットワーク５の最も入力側の畳み込み層５１に入力可能なように、各部分画像（１２３１、１２３２）のサイズを適宜調節してもよい。
【０１０５】
畳み込みニューラルネットワーク５から得られた視線情報１２５は、画像１２３に写る人物Ａの視線方向の推定結果を示す。推定結果は、例えば、右１２．７度という形式で出力される。従って、以上により、制御部１１は、人物Ａの視線方向の推定が完了し、本動作例に係る処理を終了する。なお、制御部１１は、上記一連の処理を繰り返し実行することで、人物Ａの視線方向をリアルタイムに推定してもよい。また、この人物Ａの視線方向の推定結果は、視線方向推定装置１の利用場面に応じて、適宜活用されてよい。例えば、上記のとおり、視線方向の推定結果は、運転者がよそ見をしているか否かを判定するのに活用されてよい。
【０１０６】
［学習装置］
次に、図９を用いて、学習装置２の動作例を説明する。図９は、学習装置２の処理手順の一例を例示するフローチャートである。なお、以下で説明する学習器の機械学習に関する処理手順は、本発明の「学習方法」の一例である。ただし、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
【０１０７】
＜ステップＳ２０１＞
ステップＳ２０１では、学習装置２の制御部２１は、学習データ取得部２１１として動作し、第１部分画像２２３１、第２部分画像２２３２、及び視線情報２２５の組を学習データ２２２として取得する。
【０１０８】
学習データ２２２は、畳み込みニューラルネットワーク６に対して、画像に写る人物の視線方向を推定可能にするための機械学習に利用されるデータである。このような学習データ２２２は、例えば、１又は複数の人物の顔を様々な条件で撮影し、得られる画像から抽出される第１部分画像２２３１及び第２部分画像２２３２に撮影条件（人物の視線方向）を紐付けることで作成することができる。
【０１０９】
このとき、第１部分画像２２３１及び第２部分画像２２３２は、上記ステップＳ１０４と同じ処理を取得した画像に適用することで得ることができる。また、視線情報２２５は、上記撮影により得られた画像に表れる人物の視線方向の角度の入力を適宜受け付けることで得ることができる。
【０１１０】
なお、学習データ２２２の作成には、上記画像１２３とは異なる画像が用いられる。この画像に写る人物は、上記人物Ａと同一人物であってもよいし、上記人物Ａと異なる人物であってもよい。ただし、上記画像１２３は、人物Ａの視線方向の推定に利用された後に、当該学習データ２２２の作成に利用されてもよい。
【０１１１】
この学習データ２２２の作成は、オペレータ等が入力装置２５を用いて手動で行われてもよいし、プログラムの処理により自動的に行われてもよい。また、学習データ２２２の作成は、学習装置２以外の他の情報処理装置により行われてもよい。学習装置２が学習データ２２２を作成する場合には、制御部２１は、本ステップＳ２０１において、学習データ２２２の作成処理を実行することで、学習データ２２２を取得することができる。一方、学習装置２以外の他の情報処理装置が学習データ２２２を作成する場合には、学習装置２は、ネットワーク、記憶媒体９２等を介して、他の情報処理装置により作成された学習データ２２２を取得することができる。なお、本ステップＳ２０１で取得する学習データ２２２の件数は、畳み込みニューラルネットワーク６の機械学習を行うことができるように、実施の形態に応じて適宜決定されてよい。
【０１１２】
＜ステップＳ２０２＞
次のステップＳ２０２では、制御部２１は、学習処理部２１２として動作して、ステップＳ２０１で取得した学習データ２２２を用いて、第１部分画像２２３１及び第２部分画像２２３２を入力すると視線情報２２５に対応する出力値を出力するように、畳み込みニューラルネットワーク６の機械学習を実施する。
【０１１３】
具体的には、まず、制御部２１は、学習処理を行う対象となる畳み込みニューラルネットワーク６を用意する。用意する畳み込みニューラルネットワーク６の構成、各ニューロン間の結合の重みの初期値、及び各ニューロンの閾値の初期値は、テンプレートにより与えられてもよいし、オペレータの入力により与えられてもよい。また、再学習を行う場合には、制御部２１は、再学習を行う対象となる学習結果データ１２２に基づいて、畳み込みニューラルネットワーク６を用意してもよい。
【０１１４】
次に、制御部２１は、ステップＳ２０１で取得した学習データ２２２に含まれる第１部分画像２２３１及び第２部分画像２２３２を入力データとして用い、視線情報２２５を教師データ（正解データ）として用いて、畳み込みニューラルネットワーク６の学習処理を行う。この畳み込みニューラルネットワーク６の学習処理には、確率的勾配降下法等が用いられてよい。
【０１１５】
例えば、制御部２１は、第１部分画像２２３１及び第２部分画像２２３２を結合することで得られた結合画像を、畳み込みニューラルネットワーク６の最も入力側に配置された畳み込み層６１に入力する。そして、制御部２１は、入力側から順に、各層に含まれる各ニューロンの発火判定を行う。これにより、制御部２１は、出力層６４から出力値を得る。次に、制御部２１は、出力層６４から取得した出力値と視線情報２２５に対応する値との誤差を算出する。続いて、制御部２１は、誤差逆伝搬（Back propagation）法により、算出した出力値の誤差を用いて、各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの誤差を算出する。そして、制御部２１は、算出した各誤差に基づいて、各ニューロン間の結合の重み及び各ニューロンの閾値それぞれの値の更新を行う。
【０１１６】
制御部２１は、各件の学習データ２２２について、畳み込みニューラルネットワーク６から出力される出力値が視線情報２２５に対応する値と一致するまでこの一連の処理を繰り返す。これにより、制御部２１は、第１部分画像２２３１及び第２部分画像２２３２を入力すると視線情報２２５に対応する出力値を出力する畳み込みニューラルネットワーク６を構築することができる。
【０１１７】
＜ステップＳ２０３＞
次のステップＳ２０３では、制御部２１は、学習処理部２１２として動作して、構築した畳み込みニューラルネットワーク６の構成、各ニューロン間の結合の重み、及び各ニューロンの閾値を示す情報を学習結果データ１２２として記憶部２２に格納する。これにより、制御部２１は、本動作例に係る畳み込みニューラルネットワーク６の学習処理を終了する。
【０１１８】
なお、制御部２１は、上記ステップＳ２０３の処理が完了した後に、作成した学習結果データ１２２を視線方向推定装置１に転送してもよい。また、制御部２１は、上記ステップＳ２０１〜Ｓ２０３の学習処理を定期的に実行することで、学習結果データ１２２を定期的に更新してもよい。そして、制御部２１は、作成した学習結果データ１２２を当該学習処理の実行毎に視線方向推定装置１に転送することで、視線方向推定装置１の保持する学習結果データ１２２を定期的に更新してもよい。また、例えば、制御部２１は、作成した学習結果データ１２２をＮＡＳ（Network Attached Storage）等のデータサーバに保管してもよい。この場合、視線方向推定装置１は、このデータサーバから学習結果データ１２２を取得してもよい。
【０１１９】
［作用・効果］
以上のように、本実施形態に係る視線方向推定装置１は、上記ステップＳ１０１〜Ｓ１０４の処理により、人物Ａの顔の写る画像１２３を取得し、取得した画像１２３から、当該人物Ａの右目及び左目をそれぞれ個別に含む第１部分画像１２３１及び第２部分画像１２３２を抽出する。そして、視線方向推定装置１は、上記ステップＳ１０５及びＳ１０６により、抽出した第１部分画像１２３１及び第２部分画像１２３２を学習済みのニューラルネットワーク（畳み込みニューラルネットワーク５）に入力することで、人物Ａの視線方向を推定する。この学習済みのニューラルネットワークは、上記学習装置２により、第１部分画像２２３１、第２部分画像２２３２、及び視線情報２２５を含む学習データ２２２を用いて作成される。
【０１２０】
人物Ａの右目及び左目それぞれを含む第１部分画像１２３１及び第２部分画像１２３２には、カメラ方向を基準とした顔の向きと顔の向きを基準とした目の向きとが共に表れる。そのため、本実施形態によれば、学習済みのニューラルネットワークと人物Ａの目が映る部分画像とを用いることで、人物Ａの視線方向を適切に推定することができる。
【０１２１】
また、本実施形態では、人物Ａの顔の向きと目の向きとを個別に計算するのではなく、上記ステップＳ１０５及びＳ１０６により、第１部分画像１２３１及び第２部分画像１２３２に表れる人物Ａの視線方向を直接推定することができる。従って、本実施形態によれば、顔の向きの推定誤差と目の向きの推定誤差とが蓄積するのを防ぐことができるため、画像に写る人物Ａの視線方向の推定精度を向上させることができる。
【０１２２】
§４  変形例
以上、本発明の実施の形態を詳細に説明してきたが、前述までの説明はあらゆる点において本発明の例示に過ぎない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。例えば、以下のような変更が可能である。なお、以下では、上記実施形態と同様の構成要素に関しては同様の符号を用い、上記実施形態と同様の点については、適宜説明を省略した。以下の変形例は適宜組み合わせ可能である。
【０１２３】
＜４．１＞
上記実施形態では、視線方向推定装置１は、カメラ３から画像１２３を直接取得している。しかしながら、画像１２３の取得方法は、このような例に限られなくてもよい。例えば、カメラ３により撮影された画像１２３は、ＮＡＳ等のデータサーバに保存されてもよい。この場合、視線方向推定装置１は、上記ステップＳ１０１において、当該データサーバにアクセスすることで、画像１２３を間接的に取得してもよい。
【０１２４】
＜４．２＞
上記実施形態では、視線方向推定装置１は、ステップＳ１０２及びＳ１０３により、顔領域の及び顔領域に含まれる器官の検出を行った後に、この検出結果を利用して、各部分画像（１２３１、１２３２）を抽出している。しかしながら、各部分画像（１２３１、１２３２）を抽出する方法は、このような例に限られなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、制御部１１は、上記ステップＳ１０２及びＳ１０３を省略し、パターンマッチング等の公知の画像解析方法により、ステップＳ１０１で取得した画像１２３において、人物Ａの各目の写る領域を検出してもよい。そして、制御部１１は、この各目の写る領域の検出結果を利用して、各部分画像（１２３１、１２３２）を抽出してもよい。
【０１２５】
また、上記実施形態では、視線方向推定装置１は、上記ステップＳ１０４において、検出した２つの器官の間の距離を、各部分画像（１２３１、１２３２）のサイズの基準として利用している。しかしながら、検出した器官を利用して各部分画像（１２３１、１２３２）のサイズを決定する方法は、このような例に限られなくてもよい。制御部１１は、上記ステップＳ１０４において、例えば、目、口、鼻等の１つの器官の大きさに基づいて、各部分画像（１２３１、１２３２）のサイズを決定してもよい。
【０１２６】
また、上記実施形態では、制御部１１は、上記ステップＳ１０４において、右目を含む第１部分画像１２３１及び左目を含む第２部分画像１２３２の２件の部分画像を画像１２３から抽出し、抽出した２件の部分画像を畳み込みニューラルネットワーク５に入力している。しかしながら、画像１２３から抽出される部分画像は、このような例に限られなくてもよい。例えば、制御部１１は、上記ステップＳ１０４において、人物Ａの両目を含む１件の部分画像を画像１２３から抽出してもよい。この場合、制御部１１は、両目の目尻の中点を、部分画像として抽出する範囲の中心に設定してもよい。また、制御部１１は、上記実施形態と同様に、２つの器官間の距離に基づいて、部分画像として抽出する範囲のサイズを決定してもよい。また、例えば、制御部１１は、人物Ａの右目及び左目のいずれか一方のみを含む１件の部分画像を画像１２３から抽出してもよい。それぞれの場合、学習済みのニューラルネットワークは、それぞれに対応する部分画像が用いられて作成される。
【０１２７】
＜４．３＞
また、上記実施形態では、視線方向推定装置１は、上記ステップＳ１０５において、第１部分画像１２３１及び第２部分画像１２３２を結合することで得られる結合画像を、畳み込みニューラルネットワーク５の最も入力側に配置された畳み込み層５１に入力している。しかしながら、第１部分画像１２３１及び第２部分画像１２３２をニューラルネットワークに入力する方法は、このような例に限られなくてもよい。例えば、ニューラルネットワークでは、第１部分画像１２３１を入力する部分と第２部分画像１２３２を入力する部分とが分かれていてもよい。
【０１２８】
図１０は、本変形例に係る視線方向推定装置１Ａのソフトウェア構成の一例を模式的に例示する。視線方向推定装置１Ａは、学習結果データ１２２Ａにより設定される学習済みの畳み込みニューラルネットワーク５Ａの構成が、上記畳み込みニューラルネットワーク５と相違する点を除き、上記視線方向推定装置１と同様に構成される。図１０に例示されるとおり、本変形例に係る畳み込みニューラルネットワーク５Ａは、第１部分画像１２３１及び第２部分画像１２３２をそれぞれ個別に構成される。
【０１２９】
具体的には、畳み込みニューラルネットワーク５Ａは、第１部分画像１２３１の入力を受け付ける第１部分５６と、第２部分画像１２３２の入力を受け付ける第２部分５８と、第１部分５６及び第２部分５８の各出力を結合する第３部分５９と、全結合層５３と、出力層５４と、を備えている。第１部分５６は、１又は複数の畳み込み層５６１及びプーリング層５６２により構成されている。畳み込み層５６１及びプーリング層５６２それぞれの数は、実施の形態に応じて適宜決定されてよい。同様に、第２部分５８は、１又は複数の畳み込み層５８１及びプーリング層５８２により構成されている。畳み込み層５８１及びプーリング層５８２それぞれの数は、実施の形態に応じて適宜決定されてよい。第３部分５９は、上記実施形態の入力部分と同様に、１又は複数の畳み込み層５１Ａ及びプーリング層５２Ａにより構成されている。畳み込み層５１Ａ及びプーリング層５２Ａそれぞれの数は、実施の形態に応じて適宜決定されてよい。
【０１３０】
本変形例では、第１部分５６の最も入力側の畳み込み層５６１が、第１部分画像１２３１の入力を受け付ける。この最も入力側の畳み込み層５６１は「第１入力層」と称してもよい。また、第２部分５８の最も入力側の畳み込み層５８１が、第２部分画像１２３２の入力を受け付ける。この最も入力側の畳み込み層５８１は、「第２入力層」と称してもよい。また、第３部分５９の最も入力側の畳み込み層５１Ａが、各部分（５６、５８）の出力を受け付ける。この最も入力側の畳み込み層５１Ａは「結合層」と称してもよい。ただし、第３部分５９において、最も入力側に配置される層は、畳み込み層５１Ａに限られなくてもよく、プーリング層５２Ａであってもよい。この場合、最も入力側のプーリング層５２Ａが、各部分（５６、５８）の出力を受け付ける結合層となる。
【０１３１】
この畳み込みニューラルネットワーク５Ａは、第１部分画像１２３１及び第２部分画像１２３２を入力する部分が上記畳み込みニューラルネットワーク５と相違しているものの、当該畳み込みニューラルネットワーク５と同様に取り扱うことができる。そのため、本変形例に係る視線方向推定装置１Ａは、上記視線方向推定装置１と同様の処理により、畳み込みニューラルネットワーク５Ａを利用して、第１部分画像１２３１及び第２部分画像１２３２から人物Ａの視線方向を推定することができる。
【０１３２】
すなわち、制御部１１は、上記実施形態と同様に、ステップＳ１０１〜Ｓ１０４の処理を実行し、第１部分画像１２３１及び第２部分画像１２３２を抽出する。そして、制御部１１は、ステップＳ１０５において、第１部分画像１２３１を第１部分５６に入力し、第２部分画像１２３２を第２部分５８に入力する。例えば、制御部１１は、第１部分画像１２３１の各ピクセルの輝度値を第１部分５６の最も入力側に配置される畳み込み層５６１の各ニューロンに入力する。また、制御部１１は、第２部分画像１２３２の各ピクセルの輝度値を第２部分５８の最も入力側に配置される畳み込み層５８１の各ニューロンに入力する。そして、制御部１１は、入力側から順に、各層に含まれる各ニューロンの発火判定を行う。これにより、制御部１１は、ステップＳ１０６において、視線情報１２５に対応する出力値を出力層５４から取得して、人物Ａの視線方向を推定することができる。
【０１３３】
＜４．４＞
また、上記実施形態では、制御部１１は、上記ステップＳ１０５において、第１部分画像１２３１及び第２部分画像１２３２を畳み込みニューラルネットワーク５に入力する前に、第１部分画像１２３１及び第２部分画像１２３２のサイズを調整してもよい。このとき、制御部１１は、第１部分画像１２３１及び第２部分画像１２３２の解像度を低下させてもよい。
【０１３４】
図１１は、本変形例に係る視線方向推定装置１Ｂのソフトウェア構成の一例を模式的に例示する。視線方向推定装置１Ｂは、ソフトウェアモジュールとして、部分画像の解像度を低下させる解像度変換部１１４を更に備えるように構成される点を除き、上記視線方向推定装置１と同様に構成される。
【０１３５】
本変形例では、制御部１１は、上記ステップＳ１０５の処理を実行する前に、解像度変換部１１４として動作し、ステップＳ１０４で抽出した第１部分画像１２３１及び第２部分画像１２３２の解像度を低下させる。低解像度化の処理方法は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、制御部１１は、ニアレストネイバー法、バイリニア補間法、バイキュービック法等により、第１部分画像１２３１及び第２部分画像１２３２の解像度を低下させることができる。そして、制御部１１は、ステップＳ１０５及びＳ１０６により、解像度を低下させた第１部分画像１２３１及び第２部分画像１２３２を畳み込みニューラルネットワーク５に入力することで、当該畳み込みニューラルネットワーク５から視線情報１２５を取得する。当該変形例によれば、畳み込みニューラルネットワーク５の演算処理の計算量を低減することができ、人物Ａの視線方向を推定するのにかかるＣＰＵの負荷を抑えることができる。
【０１３６】
＜４．５＞
上記実施形態では、人物Ａの視線方向を推定するためのニューラルネットワークとして、畳み込みニューラルネットワークを利用している。しかしながら、上記実施形態において人物Ａの視線方向の推定に利用可能なニューラルネットワークの種類は、畳み込みニューラルネットワークに限られなくてもよく、実施の形態に応じて適宜選択されてよい。人物Ａの視線方向を推定するためのニューラルネットワークとして、例えば、一般的な多層構造のニューラルネットワークが用いられてよい。
【０１３７】
＜４．６＞
上記実施形態では、人物Ａの視線方向を推定するのに利用する学習器として、ニューラルネットワークを用いている。しかしながら、学習器の種類は、部分画像を入力として利用可能であれば、ニューラルネットワークに限られなくてもよく、実施の形態に応じて適宜選択されてよい。利用可能な学習器として、例えば、サポートベクターマシン、自己組織化マップ、強化学習により機械学習を行う学習器等を挙げることができる。
【０１３８】
＜４．７＞
上記実施形態では、制御部１１は、上記ステップＳ１０６において、畳み込みニューラルネットワーク５から視線情報１２５を直接的に取得している。しかしながら、視線情報を学習器から取得する方法は、このような例に限られなくてもよい。例えば、視線方向推定装置１は、学習器の出力と視線方向の角度とを対応付けたテーブル形式等の参照情報を記憶部１２に保持していてもよい。この場合、制御部１１は、上記ステップＳ１０５において、第１部分画像１２３１及び第２部分画像１２３２を入力として用いて、畳み込みニューラルネットワーク５の演算処理を行うことで、当該畳み込みニューラルネットワーク５から出力値を得てもよい。そして、上記ステップＳ１０６において、制御部１１は、参照情報を参照することで、畳み込みニューラルネットワーク５から得た出力値に対応する視線情報１２５を取得してもよい。このように、制御部１１は、視線情報１２５を間接的に取得してもよい。
【０１３９】
＜４．８＞
また、上記実施形態では、学習結果データ１２２は、畳み込みニューラルネットワーク５の構成を示す情報を含んでいる。しかしながら、学習結果データ１２２の構成は、このような例に限られなくてもよい。例えば、利用するニューラルネットワークの構成が共通化されている場合には、学習結果データ１２２は、畳み込みニューラルネットワーク５の構成を示す情報を含んでいなくてもよい。
【符号の説明】
【０１４０】
１・１Ａ・１Ｂ…視線方向推定装置、
１１…制御部、１２…記憶部、１３…外部インタフェース、
１４…通信インタフェース、１５…入力装置、
１６…出力装置、１７…ドライブ、
１１１…画像取得部、１１２…画像抽出部、１１３…推定部、
１１４…解像度変換部、
１２１…プログラム、１２２・１２２Ａ…学習結果データ、
１２３…画像、１２３１…第１部分画像、１２３２…第２部分画像、
１２５…視線情報、
２…学習装置、
２１…制御部、２２…記憶部、２３…外部インタフェース、
２４…通信インタフェース、２５…入力装置、
２６…出力装置、２７…ドライブ、
２１１…学習データ取得部、２１２…学習処理部、
２２１…学習プログラム、２２２…学習データ、
３…カメラ（撮影装置）、
５・５Ａ…畳み込みニューラルネットワーク、
５１・５１Ａ…畳み込み層、５２・５２Ａ…プーリング層、
５３…全結合層、５４…出力層、
５６・５８…畳み込み層、５７・５９…プーリング層、
６…畳み込みニューラルネットワーク、
６１…畳み込み層、６２…プーリング層、
６３…全結合層、６４…出力層、
９１・９２…記憶媒体
【図１】
2019028843.tif 000003
【図２】
2019028843.tif 000004
【図３】
2019028843.tif 000005
【図４】
2019028843.tif 000006
【図５】
2019028843.tif 000007
【図６】
2019028843.tif 000008
【図７】
2019028843.tif 000009
【図８Ａ】
2019028843.tif 000010
【図８Ｂ】
2019028843.tif 000011
【図８Ｃ】
2019028843.tif 000012
【図９】
2019028843.tif 000013
【図１０】
2019028843.tif 000014
【図１１】
2019028843.tif 000015