【0009】
<第1の実施の形態>
図1は、本発明の第1の実施の形態における画像処理学習装置100のハードウェア構成図である。
図1に示すように、画像処理学習装置100は、CPU(central processing unit)1と、通信インターフェース(IF)2と、メモリ3と、HDD(ハードディスクドライブ)4とを含む。これらの構成要素は、入力装置5と、出力装置6とを合わせてバス7を通して互いに接続されており、データの入出力を行なう。通信IF2は、外部のネットワークに接続するためのインターフェースである。入力装置5は、例えば、キーボードやマウスである。出力装置6は、例えばディスプレイなどである。画像処理学習装置100は、CPU1が、メモリ3又はHDD4等の記憶媒体に記憶されているプログラムを実行することにより実現される。
図2は、本発明の第1の実施の形態における画像処理学習装置100の機能構成を示すブロック図である。
図2に示すように、画像処理学習装置100は、学習データ選択部102と顔向き情報識別部103と多様体位置変換部104と多様体位置推定部105と顔情報識別部106と第1のパラメータ更新量計算部107と第2のパラメータ更新量計算部108とパラメータ更新部109とを含む。また、画像処理学習装置100は、学習データ入力部101及び結果出力部110と接続されている。
学習データ入力部101は、顔検出処理と顔向き推定処理の学習を行わせるための大量の学習データ群を入力する。また、学習データ入力部101は、入力した学習データ群を、たとえば
図1に示すバス7または学習データ選択部102に出力するために一時的に格納する機能を有しても良い。学習データ入力部101は、メモリ3又はHDD4等の記憶媒体に記憶されている学習データ群を読み出して入力しても良い。または学習データ入力手段101は、ユーザが入力装置5を操作して発生した情報に基づいて学習データ群を入力しても良い。または、学習データ入力部101は、
図1の通信IF2を通じてインターネットから学習データ群を受信することで入力しても良い。
学習データ群は、以下で説明する情報から構成されるデータの群である。学習データの情報の1つは、1枚の顔画像情報または1枚の非顔画像情報である。また、学習データの情報の1つは、顔情報である。ここで、顔情報とは、画像が顔画像であるか非顔画像であるか、またはどちらか不明であるか、を示す情報である。また、学習データの情報の1つは、顔向き情報である。顔向き情報とは、顔画像であればどの向きを向いているかに関する情報である。学習データは、以上の画像情報と、顔情報と、顔向き情報との組み合わせで構成される。
以降では、入力される学習データ群の中に学習データがN個あったとし、それぞれの学習データをzi(ここで、i=1,2,3,・・・,N)と表現する。ziは、画像情報xiと、顔情報yiと、顔向き情報wiとを含む。
例えば、xiについては、画像が縦32画素で横32画素のモノクロ画像であれば、xは32×32の場所における階調値を並べた32×32次元のベクトルでも良い。
また、yiについて、xiが顔画像である場合に、yiに“1”、非顔画像である場合にyiに“−1”、どちらか不明である場合にyiに“nil”という記号が、それぞれ付与されても良い。
また、wiについて、顔向きの角度(yaw(Y軸の回転角度)、roll(Z軸の回転角度)、pitch(X軸の回転角度))の情報があれば、その情報が付与され、そうでなければ“nil”という記号が付与されても良い。顔向きの角度の設定基準は、所定の基準で定めれば良いが、画像中の顔が正面を向いている状態を、“yaw=0度、roll=0度、pitch=0度”と設定しても良い。
図3は、学習データ入力部101が入力する学習データの例を示す図である。
図3に示すz1は、顔画像情報x1と、画像が顔画像であるという顔情報y1(=1)と、顔向き情報w1(yaw=0度、roll=10度、pitch=0度の情報)とを含む例である。すなわちz1は、顔画像であるということと顔向きが既知なデータである。
図3に示すz2は、顔画像情報x2と、画像が顔画像であるという顔情報y2(=1)の情報と、顔向きが分かっていないことを示すw2(=“nil”)を含む例である。すなわちz2は、顔画像であることは既知だが、顔向きは不明なデータである。学習時に入力する学習データ群に含まれる顔画像は、人手によって顔領域を指定して切り出した顔画像を用いても良い。
図4は、このような学習データの例を示す図である。
図4に示す学習データz3は、撮影画像Aから一部を切り出した顔画像情報x3と、画像が顔画像であるか非顔画像であるかは不明であるという情報y3(=“nil”)と、顔向き情報であるw3=(yaw=0度、roll=0度、pitch=0度の情報)とを含む例である。このような画像は、撮影環境を事前に測定することで正面を向いた顔を撮影したことが分かっている場合に、顔の位置が分からないため、ランダムもしくは機械的に領域を選択して切り出すことで得られる。
学習時に入力する学習データ群に含まれる顔画像情報は、学習の前半においては、例えば非特許文献1に記載の技術によって検出された画像を顔画像として用いた情報でも良い。この場合、学習の後半においては、顔画像か否か未知のデータとして再活用しても良い。
また、近年デジタルカメラ等に搭載されている顔検出技術は、主に正面を向いた顔を検出する。そのため、学習データ群に含まれる顔画像情報は、デジタルカメラ搭載の顔検出処理を用いて処理され、顔検出が行えた顔向きが正面である顔画像の情報でも良い。学習の後半においては、顔向きが未知のデータとして再活用しても良い。
学習データ選択部102は、前記学習データ入力部101で入力された学習データ群中の学習データziから、1つの学習データzj(jはi=1,2,3,・・・,Nの中から任意に選んだ数字)を選択し、選択したデータzjを出力する。学習データ選択部102は、N個の学習データから学習データzjをランダムに選択しても良い。または、学習データ選択部102は、yjとwjの値それぞれに対して、予め異なる選択確率値を設定または保持し、その選択確率値に従って学習データzjを選択しても良い。例えば、学習データ選択部102は、yj=1の学習データzjを優先的に選択しても良い。また学習データ選択部102は、yj=1であり、かつwjが“nil”では無いような学習データを優先的に選択しても良い。また、学習データ選択部102は、学習初期の段階に限って、顔向きが既知であって、顔画像であるか非顔画像であるかが分かっているデータを優先的に選択しても良い。
顔向き情報識別部103は、学習データ選択部102で選択されたデータzjに対して、顔向きが既知か未知かを識別する。具体的には、顔向き情報識別部103は、zjの中の顔向き情報wjを検出して、wjに“nil”が付与されているか否かを識別し、“nil”以外が付与されていれば、顔向きが既知であると判定した情報を出力しても良い。なお、データzjの中の顔情報yjが“−1”の場合、顔向き情報識別部103は、画像情報xjが非顔画像の情報あることを識別し、さらに、wjを参照せずに顔向きが未知であると判定した情報を出力しても良い。
多様体位置変換部104は、顔向き情報識別部103で顔向きが既知であると識別されたときに出力される情報に基づいて、顔向き情報wjを、予め定めた顔向きを表現する多様体上の位置の情報に変換し出力する。具体的には例えば非特許文献2に記載のように、多様体位置変換部104は、多様体上の位置をpとして、予め定めた顔向き情報wjを位置pに変換する関数Fによって、p=F(wj)と変換しても良い。ここで関数Fは、非特許文献2に記載されているものと同一の関数でも良いが、これに限定されない。
図5は、顔向き情報wjから多様体111上の位置pを求めるイメージを示す図である。
図5において、空間112は、多様体111を埋め込んだ空間と定義する。
仮に、顔向きとしてyawのみを考える。この場合、wjを多様体111上の位置に変換するための関数は、非特許文献2に記載のように、式1に示す関数Fで定義しても良い。
θはyawである。この場合、F(w)で表現される顔向きを表す多様体は、3次元空間中に埋め込まれた多様体になる。
また仮に、顔向きとしてyawとrollを考える。この場合、wjを多様体上の位置に変換するための関数は、yawをθ、rollをφとして、式2に示す関数Fで定義しても良い。
この場合、F(w)で表現される顔向きを表す多様体は、9次元空間中に埋め込まれた多様体になる。
また仮に、顔向きとしてyawとrollとpitchを考える。この場合、顔向きを表す多様体は、yawをθ、rollをφ、pitchをψとして、式3に示す関数Fで定義しても良い。
この場合、F(w)で表現される顔向きを表す多様体は、27次元空間中に埋め込まれた多様体になる。
なお、例えば式4で表されるように、多様体の次元数を増やしても良い。
この場合、式3のF(w)で表現される顔向きを表す多様体は、125次元の空間中に埋め込まれた多様体になる。また、式1のF(w)で表現される顔向きを表す多様体は、5次元の、式2のF(w)で表現される顔向きを表す多様体は、25次元の空間中に埋め込まれた多様体になる。
多様体位置推定部105は、顔向き情報識別手段103で顔向きが未知であると識別されたときに出力される情報に基づいて、学習データに対応する画像を前述の多様体111が埋め込まれた空間112上の位置に変換する関数を用いて変換された画像情報xjの前記空間112上の位置から、予め定めた顔向きを表現する多様体111上のどの点が相応しい点かを推定する。
具体的には、関数Fとは別に、画像情報xjを多様体111が埋め込まれた空間112上の位置に変換する関数G(xj)を準備する。関数Gは、単数ないし複数のパラメータから構成されている。以下このパラメータをλと定義する。非特許文献2において、G(xj)は、非特許文献3にも記載されているようなたたみ込みニューラルネットワーク(以下、CNN)である。このとき、λは、CNNの重みパラメータである。ここで関数G(xj)は、非特許文献2及び非特許文献3に記載されている関数と同一の関数でも良いが、これに限定されない。
多様体位置推定部105は、画像情報xjを関数G(xj)によって別のベクトルvjに対しvj=G(xj)という変換を行う。多様体位置推定部105は、顔向きを表現する多様体111上の位置でvjに最も近い位置であるpを式5によって算出する。
図6は、多様体位置推定部105が、顔向きが未知である学習データから多様体111上の位置を推定する方法を示した図である。
図6に示すように、多様体位置推定部105は、式5によって算出した位置pを顔向きの推定結果として出力する。
例えば、顔向きとしてyawのみを考え、式1のFの定義で表現されるような多様体の場合を考える。この場合、多様体位置推定部105は、式6によって位置pを算出する。
顔情報識別部106は、学習データ選択部102で選択されたデータzjに対して、顔画像であるか非顔画像であるかが既知か未知かを識別し、その識別結果情報を出力する。
具体的には、顔情報識別部106は、yjの値を検出して、yj=1もしくはyj=−1であれば、顔画像であるか非顔であるかが既知であると判断し、yj=0であれば、顔画像であるか非顔画像であるかが未知であると判断しても良い。
または、例えば学習の初期の段階では、顔情報識別部106は、非特許文献1に記載の顔検出技術を活用し、検出ができたのであればyj=1とし、そうでなければyj=−1と判断することで、顔画像であるか非顔であるかが既知であると判断しても良い。
第1のパラメータ更新量計算部107及び第2のパラメータ更新量計算部108は、いずれも実際に顔検出処理及び顔向き推定処理を行う際に、処理の誤差を最小化するようにパラメータの更新量Δλを計算する。
第1のパラメータ更新量計算部107は、顔情報識別部106により顔画像であるか非顔画像であるかが既知であると識別された結果情報に基づいて、関数Gのパラメータλの更新量Δλを計算する。具体的には第1のパラメータ更新量計算部107は、多様体位置変換部104が変換したか、又は多様体位置推定部105が推定した多様体111上の位置pと、関数Gによってベクトルvjに変換された画像情報xjの、多様体111が埋め込まれた空間112上の位置との距離を計算する。第1のパラメータ更新量計算部107は、計算した距離に基づき、顔画像であるか非顔画像であるかに応じてパラメータλの更新量Δλを計算する。
例えば、第1のパラメータ更新量計算部107は、非特許文献2にあるように、顔画像であることが既知であるデータに対しては、多様体位置変換部104が変換したか、又は多様体位置推定部105が推定した多様体111上の位置pを用いて、エネルギー関数Eを、式7のように設定する。
また、例えば、第1のパラメータ更新量計算部107は、非顔画像であることが既知であるデータに対しては、エネルギー関数Eを、式8のように設定する。
第1のパラメータ更新量計算部107は、上記エネルギー関数Eを小さくするような更新量Δλを、式9によって計算する。
αは予め定めた微小な数である。
図7は、顔画像であることが既知である学習データに対する顔向き推定パラメータの更新を示す図である。
図8は、非顔画像であることが既知である学習データに対する顔向き推定パラメータの更新を示す図である。
図7に示すように、上記エネルギー関数Eを小さくするということは、顔画像の場合は、関数G(xj)が位置pに近づくように更新量を計算することであると言える。また、
図8に示すように上記エネルギー関数Eを小さくするということは、非顔画像の場合は、関数G(xj)が位置pから遠ざかるように更新量を計算することであると言える。
上記エネルギー関数は、顔画像の場合と非顔画像の場合で関数の形状が変わる。したがって、第1のパラメータ更新量計算部107は、上記エネルギー関数の代わりに、式10のようにエネルギー関数Eを設定しても良い。
Tは任意のベクトルである。
第2のパラメータ更新量計算部108は、顔情報識別部106で顔画像であるか非顔画像であるかが未知であると識別された結果情報に基づいて、すなわちyj=0となる場合に、関数Gのパラメータλの更新量を計算する。具体的には、第2のパラメータ更新量計算部108は、多様体位置変換部104が変換したか、又は多様体位置推定部105が推定した多様体上の位置と、画像xjの多様体111が埋め込まれた空間112上の位置との距離が近い場合はより近づけ、遠い場合はより遠ざけるようにパラメータの更新量を計算する。
例えば、第1のパラメータ更新量計算部107において、顔画像であるか非顔画像であるかが既知である場合に採用している前記エネルギー関数Eを用いて、顔画像であるか非顔画像であるかが未知である学習データ、すなわちyj=0である学習データに対して、式11のようにエネルギー関数Eを設定しても良い。
第2のパラメータ更新量計算部108は、式11で示すエネルギー関数Eを最小化するようにパラメータの更新量Δλを、式9によって計算する。
図9は、顔画像であるか非顔画像であるかが未知の学習データに対する顔向き推定パラメータの更新を示す図である。
図9に示すように、式11及び式12によってパラメータ更新量を計算するということは、関数G(xj)が位置pに近い場合はより近づけ、位置pから遠い場合はより遠ざけるように計算することであると言える。
図9に示すように、関数G(xj)が位置pに近いか遠いかの判定は、例えば閾値で境界面を定め、顔画像らしい領域と非顔画像らしい領域を定義して判定しても良い。
パラメータ更新部109は、第1のパラメータ更新量計算部107又は第2のパラメータ更新量計算部108で得られた更新量Δλを用いて、パラメータλをλ+Δλへと更新する。
結果出力部110は、パラメータ更新部109で更新したパラメータλをファイルなどに出力する。
次に、
図2及び
図10を参照して本発明の第1の実施の形態の動作について詳細に説明する。
図10は、本発明の第1の実施の形態の動作を示す流れ図である。
まず、ユーザによる操作に基づき、学習データ入力部101は、N個の学習データzi(i=1,,,N)から構成される学習データ群を入力し格納する(ステップA1)。
次に、学習データ選択部102は、学習データ入力部101で入力された学習データ群の中から1つ、以降の処理を行わせる学習データzjを選択する(ステップA2)。
次に、顔向き情報識別部103には、学習データ選択部102で選択された学習データzjの顔向きが既知か未知かを識別する(ステップA3)。
顔向きが既知であることが識別された場合は、顔向き情報識別部103は、学習データzjを多様体位置変換部104に出力する。未知であることが識別された場合、顔向き情報識別部103は、学習データzjを多様体位置推定部105に出力する(ステップA4)。
次にステップA4において顔向きが既知である、すなわちwjが“nil”では無い適切な値であることが識別された場合、多様体位置変換部104は、顔向き情報wjを顔向き多様体111上の位置pに変換する。(ステップA5)。一方、ステップA4において顔向きが未知であることが識別された場合には、多様体位置推定部105は、学習データの画像xjを用いて顔向き多様体111上の位置pを推定する(ステップA6)。ステップA5またはステップA6のいずれのステップに移行した場合にも、画像処理学習装置100は、顔向き多様体111上の位置情報pを得る。
次に、顔情報識別部106は、多様体位置変換部104又は多様体位置推定部105から、学習データzj及び位置情報pの入力を受け、顔画像であるか非顔画像であるかが既知か未知かを識別する(ステップA7)。
顔画像であるか非顔画像であるかが既知であることが識別された場合、顔情報識別部106は、学習データzj及び位置情報pを第1のパラメータ更新量計算部107に出力する。未知であることが識別された場合、顔情報識別部106は、学習データzj及び位置情報pを第2のパラメータ更新量計算部109に出力する(ステップA8)。
次にステップA8において顔画像であるか非顔画像であるかが既知であることが識別された場合、第1のパラメータ更新量計算部107は、画像xjの、多様体111が埋め込まれた空間112上の位置に対応する関数G(xj)と、多様体111上の位置pとの距離を計算し、顔画像であるか非顔画像であるかに応じて更新量を計算する(ステップA9)。一方、前記ステップA8において顔画像であるか非顔画像であるかが未知であることが識別された場合、第2のパラメータ更新量計算部109は、G(xj)がpに近い場合はより近づけ、pから遠い場合はより遠くなるようにパラメータλの更新量を計算する(ステップA10)。
次に、パラメータ更新部109は、パラメータλをλ+Δλへとを更新する(ステップA11)。
さらに、画像処理装置109はパラメータを十分更新したか否かを判断(ステップA12)し、十分更新していないと判断されれば、再度ステップA2にもどり、そうでなければ処理を終了する。具体的には、ステップA12に到達した回数が予め定めた回数を上回れば終了としても良い。または、ステップA11で更新した更新量の大きさを識別し、その大きさが予め定めた値を下回れば終了としても良い。
本実施の形態における画像処理学習プログラムは、コンピュータに
図10に示したステップA1〜A12を実行させるプログラムであって、上述した動作を実行されるプログラムであれば良い。
以上説明したように、本発明の第一の実施の形態に係る画像処理学習装置100によれば、予め用意したすべての画像が、顔情報と、顔画像であればどの向きを向いているかという情報を同時に付与されていなくても、多大なコストをかけずに、顔向き推定処理と顔検出処理を同時に、かつ高精度に学習することができる。
なぜならば、画像処理学習装置100は、顔情報の有無と、顔向き情報の有無に応じて、学習のための処理を切り分けているからである。学習処理の切り分けにより、適切な顔検出処理と顔向き推定処理を実現できるパラメータλを学習することができる。
<第2の実施の形態>
本発明の第2の実施の形態は、第1の実施の形態に係る画像処理学習装置100で学習したパラメータλから構成される関数Gを用いて、顔検出処理及び顔向き推定処理を行う画像処理装置200である。
図11は、本発明の第2の実施の形態に係る画像処理装置と画像処理学習装置の機能構成を示すブロック図である。
図11に示すように、画像処理装置200は、画像処理学習装置100と結果出力部110を介して接続されている。画像処理学習装置100については、第1の実施の形態と同様の構成であるため説明を省略する。画像処理装置200は、顔向き推定部201と顔画像判定部202とを含む。
顔向き推定部201は、入力画像の多様体を含む空間上の位置と、入力画像の多様体上の位置に基づいて顔向きを推定する。入力される入力画像は、本発明に関連する顔検出技術によって抽出された部分画像であっても良い。
具体的には、顔向き推定部201は、まず結果出力部110からのデータujに基づいて入力画像の顔向きが既知か未知かを識別する。顔向き推定部201は、第1の実施の形態における顔向き情報識別部103のように顔向きを推定しても良い。すなわち、顔向き推定部201は、対象データuj(第1の実施の形態における学習データzjと同様の構成によるデータ)の中の顔向き情報wjを参照して、wjにnilが格納されているか否かを識別し、nil以外が格納されていれば顔向きが既知であると判定しても良い。なお、yj=−1の場合はxjが非顔画像であることが分かるので、顔向き情報識別部103は、wjを参照せずに顔向きが未知であると判定しても良い。
顔向きが既知であると識別された場合、顔向き推定部201は、既知である顔向きを推定結果とする。なお、顔向き推定部201は、顔向き情報を多様体上の位置に変換しておいても良い。多様体上の位置は、例えば式1、式2又は式3などによって変換しても良い。また、顔向き推定部201は、画像処理学習装置100の学習によって更新したパラメータλから構成される関数Gを用いて、入力画像の多様体を含む空間上の位置を算出しておいても良い。
顔向きが未知であると識別された場合、顔向き推定部201は、画像処理学習装置100の学習により更新したパラメータλから構成される関数Gを用いて、入力画像の多様体を含む空間上の位置を算出する。顔向き推定部201は、算出した空間上の位置から多様体上の位置を推定し、該推定した多様体上の位置から算出された顔向きを推定し、その結果を出力する。多様体上の位置は、例えば式5などによって推定しても良い。顔向きは、例えば式1、式2又は式3などによって算出しても良い。
顔画像判定部202は、顔向き推定部201が入力画像の多様体を含む空間上の位置と前記多様体上の位置との距離で顔画像であるか非顔画像であるかを判定する。
具体的には、顔画像判定部202は、まず入力画像が顔又は非顔画像であることが既知か未知かを識別する。顔画像判定部202は、第1の実施の形態における顔情報識別部106のように顔・非顔の判定を行っても良い。すなわち、顔画像判定部202は、対象データujの中の顔情報yjの値を検出して、yj=1もしくはyj=−1であれば、顔画像であるか非顔画像であるかが既知であると判断し、yj=0であれば、顔画像であるか非顔画像であるかが未知であると判断しても良い。
顔又は非顔画像であることが既知であると判定された場合、顔画像判定部202は、既知である情報を推定結果とする。
顔又は非顔画像であることが未知である場合、顔画像判定部202は、画像処理学習装置100の学習により更新したパラメータλから構成される関数Gを用いて、入力画像の多様体を含む空間上の位置を算出する。顔向き推定部201によってすでに空間上の位置が算出されていた場合は、その位置を用いても良い。
また、顔画像判定部202は、入力画像の多様体上の位置を算出する。多様体上の位置は、例えば式1、式2又は式3などによって算出しても良い。顔向き推定部201によってすでに入力画像の多様体上の位置が変換又は推定されていた場合は、その位置を用いても良い。
顔画像判定部202は、入力画像の多様体を含む空間上の位置と、入力画像の多様体上の位置との距離が、閾値より小さければ入力画像は顔画像であると判定する。顔画像判定部202は、入力画像の多様体を含む空間上の位置と、入力画像の多様体上の位置との距離が、閾値より大きければ入力画像は非顔画像であると判定する。
次に、
図12を参照して本発明の第2の実施の形態の動作について詳細に説明する。
図12は、本発明の第2の実施の形態の動作を示す流れ図である。
まず、ユーザは、対象データを顔向き推定部201に入力する。または、コンピュータが本発明に関連する顔検出技術において抽出された部分画像を入力しても良い(ステップB1)。
次に、顔向き推定部201は、入力された対象データの画像の顔向きが既知か未知かを識別する(ステップB2)。
顔向きが既知であると識別された場合、顔向き推定部201は、既知である顔向きを推定結果とする(ステップB3)。
顔向きが未知であると識別された場合は、顔向き推定部202は、上述した処理によって対象データの画像の多様体上の位置を推定し、顔向きを算出する(ステップB4)。
次に、顔画像判定部202は、対象データの画像が顔又は非顔画像であることが既知か未知かを識別する(ステップB5)。
顔又は非顔画像であることが既知であると識別した場合、顔画像判定部202は、既知である情報を判定結果とする(ステップB6)。
顔又は非顔画像であることが未知であると識別した場合、顔画像判定部202は、対象データの画像の多様体を含む空間上の位置と、多様体上の位置との距離が、閾値より小さければ、対象データの画像は顔画像であると判定する。また、顔画像判定部202は、閾値より大きければ非顔画像であると判定する(ステップB7)。
本実施の形態における画像処理プログラムは、コンピュータに
図12に示したステップB1〜B6を実行させるプログラムであって、上述した動作を実行されるプログラムであれば良い。
以上説明したように、本発明に係る画像処理装置200によれば、画像処理学習装置100の学習により更新したパラメータλから構成される関数Gを用いることで、顔検出処理及び顔向き推定処理を同時に、かつ高精度に行うことができる。
【実施例】
【0010】
次に、
図10及び
図13を参照して、本発明の第1の実施の形態の具体的な実施例を説明する。
図13は、画像を多様体に変換するニューラルネットワークの例を示す図である。顔向き推定を実現する関数Gとしては、
図13に示すような、32×32の画素から構成される画像を1000個の隠れ層を経て5つの出力層に出力する3層のニューラルネットワークを、非特許文献4も参考にして採用する。
まず、ユーザは、該ニューラルネットワークに対するパラメータλを、はじめはすべて0に設定しておく。また、ユーザは学習用のデータ群を予め用意する。
用意する学習用のデータ群について詳細に説明する。まず、ユーザは、デジタルカメラを用いて、予め顔を含む画像を大量に撮影する。この際に、ユーザは、撮影対象となる人物の立つ位置とカメラの位置を固定することで、顔向きが一定になるようにして撮影を行い、例えば100人の人物の1つの顔向きの画像を計100枚撮影する。
次に、ユーザは、人物の立つ位置とカメラの位置を逐次変更させ、さまざまな顔向きの画像の撮影を繰り返す。ユーザは、全部で例えば10通りの顔向きの画像をそれぞれ100枚ずつ撮影することで、合計1000枚の画像を撮影する。この場合、すでに人物の立つ位置とカメラの位置がわかっているので、ユーザは、これらの画像すべてについて顔向き情報を得ることができる。例えば、ユーザは、顔向き情報として、正面を0度として左右何度方向を向いているか、その角度を撮影状況から計算して得る。本実施例においては、撮影状況から計算して得た角度をwiとし、wiとしてyawのみを考える。
次に、ユーザは、撮影した画像群と顔向き情報をテキスト化したファイルをPCのハードディスクに画像として格納する。そして、該画像群に対し、PCの画像処理ソフトを用いて、人手によって顔以外の領域を削除し、顔が写っている領域部分を切り出す。
この処理は人手の手間がかかるために、例えばユーザは、撮影した1000枚の画像のうちの500枚の画像に対してのみ顔の領域部分を切り出す処理を実施し、500枚の顔画像群を得る。
次にユーザは、顔画像群の大きさをすべて拡大若しくは縮小させて縦32画素、横32画素にそろえ、モノクロ画像に変換して再度PCのハードディスクに格納する。この画像データを学習データ群Aと呼ぶとする。学習データ群Aに属するデータは、顔画像であり、かつ顔向き情報が既知である。すなわち学習データ群Aは、縦32画素、横32画素からなる32×32次元のベクトルxi(i=1...500)と、対応する顔・非顔情報yi=1と、nilでは無い顔向き情報wiを保持する。
次に、ユーザは、撮影した1000枚の画像のうち、顔の領域部分を切り出す処理に利用しなかった残りの500枚の画像に対して、ランダムに画像中の一部矩形領域を切り出す。ユーザは、切り出した画像を縦32画素、横32画素の画像に拡大もしくは縮小し、全部で500枚の画像群を作成する。ユーザは、該画像群をモノクロ画像に変換して再度PCのハードディスクに格納する。この画像データを学習データ群Bと呼ぶとする。学習データ群Bに属するデータは、顔画像であるか否かは不明であるが、仮に顔画像であるとした場合の顔向きは既知である。すなわち学習データ群Bは、縦32画素、横32画素からなる32×32次元のベクトルxi(i=501...1000)と、対応する顔・非顔情報yi=nilと、nilでは無い顔向き情報wiを保持する。
次に、ユーザは、これまでの画像群とは別にあらたに、風景など人物の顔が映らない画像を例えば500枚撮影し、PCのハードディスクに格納する。その後、ユーザは、ランダムに画像中の一部矩形領域を切り出してきて、それを縦32画素、横32画素の画像に拡大もしくは縮小し、全部で500枚の画像群を作成する。ユーザは、該画像群をモノクロ画像に変換して再度PCのハードディスクに格納する。この画像データを学習データ群Cと呼ぶとする。学習データ群Cに属するデータは、非顔画像であることが既知である。すなわち学習データ群Cは、縦32画素、横32画素からなる32×32ベクトルxi(i=1001...1500)と、対応する顔・非顔情報yi=−1と、nilが格納されている顔向き情報wiを保持する。
次に、ユーザは、これまでの画像群とは別にあらたに、インターネットなどから顔を含む画像を例えば1000枚収集し、PCのハードディスクに格納する。そしてユーザは、収集した画像に対し、PCの画像処理ソフトを用いて、人手によって顔の領域部分を切り出す。
この処理は人手の手間がかかるために、例えばユーザは、撮影した1000枚の画像のうちの500枚の画像に対してのみ顔の領域部分を切り出す処理を実施し、500枚の顔画像群を得る。
次に、ユーザは、顔画像群の大きさをすべて拡大若しくは縮小させて縦32画素、横32画素にそろえ、モノクロ画像に変換して再度PCのハードディスクに格納する。この画像データを学習データ群Dと呼ぶとする。学習データ群Dに属するデータは、顔画像であることは既知であるが、顔向き情報は未知である。すなわち学習データ群Dは、縦32画素、横32画素からなる32×32次元のベクトルxi(i=1501...2000)と、対応する顔・非顔情報yi=1と、nilが格納されている顔向き情報wiを保持する。
次に、ユーザは、インターネットなどから収集した1000枚の画像うち、顔の領域部分を切り出す処理に利用しなかった残りの500枚の画像に対して、ランダムに画像中の一部矩形領域を切り出す。ユーザは、切り出した画像を縦32画素、横32画素の画像に拡大もしくは縮小し、全部で500枚の画像群を作成する。ユーザは、該画像群をモノクロ画像に変換して再度PCのハードディスクに格納する。この画像データを学習データ群Eと呼ぶとする。学習データ群Eに属するデータは、顔画像であるか否かは未知であり、かつ仮に顔画像だとした場合でも顔向き情報も未知である。すなわち学習データ群Eは、縦32画素、横32画素からなる32×32次元のベクトルxi(i=2001...2500)と、対応する顔・非顔情報yi=nilと、nilが格納されている顔向き情報wiを保持する。
ユーザによる操作に基づき、学習データ入力部101は、学習データ群AからEまで合計2500個のデータを一括して学習用のデータ群として入力する。すなわち、第1の実施の形態におけるステップA1において、学習データ入力部101は、該2500個(N=2500)の学習データziから構成される学習用のデータ群を入力する。
次にステップA2において、学習データ選択部102は、2500個のデータから構成される学習用のデータ群の中から、ランダムに1つのデータzjを学習データとして選択する。例えば、学習データは、j=120のデータ(2500個のデータのうちの120番目のデータ)であるとする。
次にステップA3において、顔向き情報識別部103は、zjが顔向き情報をもっているか否かを識別する。jが1から1000までの値であればzjは学習データ群AまたはBに属しているため、wjにはnilが格納されておらず、顔向き情報識別部103は、wjにはnil以外の顔向きを示す値が入っていることを検出する。今回はj=120であるために、顔向き情報識別部103は、zjは顔向きが既知のデータであることを識別する。
次にステップA4に移行するが、zjは顔向きが既知であることが識別されたために、ステップA5に移行する。
次にステップA5において、多様体位置変換部104は、顔向き情報wjを、顔向き多様体上の位置に変換する。
本実施例においては、顔向き多様体として5次元空間内部の多様体を考える。多様体位置変換部104は、式12によって、顔向き情報wjを5次元内部の点p=F(wj)に変換する。
本実施例では、顔向き情報wjとしてyawのみを考えているため、そのyawの大きさをθとする。
次にステップA7において、顔情報識別部106は、zjの顔情報を識別する。
jが1から500(学習データ群Aに対応)まで若しくは1001から2000(学習データ群C及びDに対応)までの値であれば、顔情報識別部106は、顔情報を保持していることを識別する。学習データzjはj=120のデータであるから、顔情報識別部106は、zjは顔情報を保持していることを識別する。また、yi=1であるために、顔情報識別部106は、zjが顔画像であることを識別し、ステップA10に移行する。
ステップA10において、第1のパラメータ更新量計算部107は、点pと点G(xj)が近づくような関数Gのパラメータλの更新量を、式10を用いて、式9のように計算することで決定する。
ステップA11において、パラメータ更新部109は、パラメータλをλ+Δλに更新する。
ステップA12において、パラメータ更新部109は、パラメータの更新を十分に行ったかどうかを判定する。パラメータ更新部109は、例えば10000回パラメータλの更新を行ったら終了するという判定を行う。今回は、まだ1回目であるから、終了とは判定されず、ステップA2にもどる。
以下、同様の処理を繰り返し、10000回パラメータλの更新を行ったところで処理が終了する。
<実施の形態の他の表現>
上記の各実施の形態においては、以下に示すような画像処理学習装置、画像処理学習方法、および画像処理学習プログラムの特徴的構成が示されている。
本発明の実施形態における画像処理学習装置は、学習データ群から選択されたデータに対して、顔向きが既知か未知かを識別する顔向き情報識別部と、顔向き情報識別部で顔向きが既知であると識別された場合に、顔向き情報を、多様体上の位置に変換する多様体位置変換部と、顔向き情報識別部で顔向きが未知であると識別された場合に、データに対応する画像を多様体が埋め込まれた空間上の位置に変換する関数を用いて変換された画像の空間上の位置から、多様体上のどの位置が相応しい位置かを推定する多様体位置推定部と、データに対して、顔画像であるか非顔画像であるかが既知か未知かを識別する顔情報識別部と、顔情報識別部で顔画像であるか非顔画像であるかが既知であると識別された場合に、多様体位置変換部が変換したか、又は多様体位置推定部が推定した多様体上の位置と、関数によって変換された画像の空間上の位置との距離を計算し、該距離に基づき、顔画像であるか非顔画像であるかに応じて関数を構成するパラメータの更新量を計算する第1のパラメータ更新量計算部と、顔情報識別部で顔画像であるか非顔画像であるかが未知であると識別された場合に、多様体位置変換部が変換したか、又は多様体位置推定部が推定した多様体上の位置と、画像の空間上の位置との距離が近い場合はより近づけ、遠い場合はより遠ざけるようにパラメータの更新量を計算する第2のパラメータ更新量計算部と、第1のパラメータ更新量計算部又は第2のパラメータ更新量計算部で計算された更新量を用いてパラメータを更新するパラメータ更新部と、を含む。
また、本発明の他の実施形態における画像処理装置は、画像処理学習装置の学習により更新されたパラメータを有する関数を用いて顔検出処理及び顔向き推定処理を行う画像処理装置であって、顔向きが未知の場合、入力画像の多様体を含む空間上の位置と、入力画像の多様体上の位置に基づいて顔向きを推定する顔向き推定部と、顔又は非顔画像であるか否かが未知の場合、入力画像の空間上の位置と多様体上の位置との距離で顔画像であるか非顔画像であるかを判定する顔画像判定部と、さらにを含む。
本発明の実施形態における画像処理学習方法は、学習データ群から選択されたデータに対して、顔向きが既知か未知かを識別し、顔向きが既知であると識別された場合に、顔向き情報を、多様体上の位置に変換し、顔向きが未知であると識別された場合に、データに対応する画像を多様体が埋め込まれた空間上の位置に変換する関数を用いて変換された画像の空間上の位置から、多様体上のどの位置が相応しい位置かを推定し、データに対して、顔画像であるか非顔画像であるかが既知か未知かを識別し、顔画像であるか非顔画像であるかが既知であると識別された場合に、変換又は推定した多様体上の位置と、関数によって変換された画像の空間上の位置との距離を計算し、該距離に基づき、顔画像であるか非顔画像であるかに応じて関数を構成するパラメータの更新量を計算し、顔画像であるか非顔画像であるかが未知であると識別された場合に、変換又は推定した多様体上の位置と、画像の空間上の位置との距離が近い場合はより近づけ、遠い場合はより遠ざけるようにパラメータの更新量を計算し、計算された更新量を用いてパラメータを更新する。
また、本発明の他の実施形態における画像処理方法は、画像処理学習方法の学習により更新されたパラメータを有する関数を用いて顔検出処理及び顔向き推定処理を行う画像処理方法であって、さらに、顔向きが未知の場合、入力画像の多様体を含む空間上の位置と、入力画像の多様体上の位置に基づいて顔向きを推定し、顔又は非顔画像であるか否かが未知の場合、入力画像の空間上の位置と多様体上の位置との距離で顔画像であるか非顔画像であるかを判定する。
本発明の実施形態における画像処理学習プログラムは、学習データ群から選択されたデータに対して、顔向きが既知か未知かを識別し、顔向きが既知であると識別された場合に、顔向き情報を、多様体上の位置に変換し、顔向きが未知であると識別された場合に、データに対応する画像を多様体が埋め込まれた空間上の位置に変換する関数を用いて変換された画像の空間上の位置から、多様体上のどの位置が相応しい位置かを推定し、データに対して、顔画像であるか非顔画像であるかが既知か未知かを識別し、顔画像であるか非顔画像であるかが既知であると識別された場合に、変換又は推定した多様体上の位置と、関数によって変換された画像の空間上の位置との距離を計算し、該距離に基づき、顔画像であるか非顔画像であるかに応じて関数を構成するパラメータの更新量を計算し、顔画像であるか非顔画像であるかが未知であると識別された場合に、変換又は推定した多様体上の位置と、画像の空間上の位置との距離が近い場合はより近づけ、遠い場合はより遠ざけるようにパラメータの更新量を計算し、計算された更新量を用いてパラメータを更新する、処理をコンピュータに実行させる。
また、本発明の他の実施形態における画像処理プログラムは、画像処理学習プログラムの学習により更新されたパラメータを有する関数を用いて顔検出処理及び顔向き推定処理をコンピュータに実行させるための画像処理プログラムであって、さらに、顔向きが未知の場合、入力画像の多様体を含む空間上の位置と、入力画像の多様体上の位置に基づいて顔向きを推定し、顔又は非顔画像であるか否かが未知の場合、入力画像の空間上の位置と多様体上の位置との距離で顔画像であるか非顔画像であるかを判定する、処理をコンピュータに実行させる。
以上、各実施の形態及び実施例を参照して本願発明を説明したが、本願発明は以上の実施の形態及び実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で同業者が理解し得る様々な変更をすることができる。
この出願は、2010年7月7日に出願された日本出願特願2010−154914を基礎とする優先権を主張し、その開示の全てをここに取り込む。