以下、本発明の実施形態について説明する。
図1は本発明の顔検出装置が適用された顔検出システム1の構成を示す概略ブロック図である。この顔検出システム1は、デジタル画像において顔を含む顔画像を、その顔の位置や大きさ、顔の向き、顔の傾きによらず検出するものである。ここで、顔の向きとは、左右首振り方向における向きを意味し、顔の傾きとは、インプレーン(画像面内)方向における傾き(回転位置)を意味するものである。
本顔検出システム1は、特に検出精度、ロバスト性が優れているとされる顔検出の手法として、サンプル画像を用いたマシンラーニングの学習により生成された判別器モジュール(以下、単に判別器という)を用いる手法を採用したものである。この手法は、顔の傾きおよび向きが略揃った複数の異なる顔サンプル画像からなる顔サンプル画像群と、顔でないことが分かっている複数の異なる非顔サンプル画像からなる非顔サンプル画像群とを用いて、顔の特徴を学習させ、ある画像が所定の傾きと向きを持つ顔の画像であるか否かを判別できる判別器を生成して用意しておき、顔画像の検出対象となる画像(以下、検出対象画像という)において部分画像を順次切り出し、その部分画像が顔画像であるか否かを上記の判別器を用いて判別することにより、検出対象画像上の顔画像を検出する手法である。
なお、この手法では、順次切り出した部分画像の各々に対して顔画像であるか否かの判別を行うので、はじめから精度の高い検出をしようとするとその処理量が膨大となり、顔画像の検出に時間がかかるという問題がある。そこで、ここでは、判別処理の効率化を図るため、まず、検出対象画像に対して比較的ラフな顔検出処理(例えば、順次切り出す部分画像の位置を間引きする等)を施して顔画像候補を抽出し、次に、抽出された顔画像候補近傍の画像に対して、精細な判別処理を施してその顔画像候補が真の顔画像であるか否かを判別するようにしている。
顔検出システム1は、図1に示すように、多重解像度化部10、正規化部20、顔検出部50、重複検出判定部60を備えている。顔検出部50は、さらに、検出制御部(顔判別手段)51、解像度画像選択部52、サブウィンドウ設定部53、第1の判別器群54および第2の判別器群(指標値算出手段)55を備えている。
多重解像度化部10は、入力された検出対象画像S0を多重解像度化して解像度の異なる複数の画像(S1_1,S1_2,・・・,S1_n;以下、解像度画像という)からなる解像度画像群S1を得るものである。すなわち、多重解像度化部10は、検出対象画像S0の解像度(画像サイズ)を変換することにより、その解像度を所定の解像度、例えば、短辺が416画素の矩形サイズの画像に規格化し、規格化済みの入力画像S0′を得、この規格化済みの入力画像S0′を基本としてさらに解像度変換を行うことにより、解像度の異なる複数の解像度画像を生成し、解像度画像群S1を得るものである。
このような解像度画像群を生成する理由は、通常、検出対象画像に含まれる顔の大きさは不明であるが、一方、検出しようとする顔の大きさ(画像サイズ)は、後述の判別器の生成方法と関連して一定の大きさに固定されるため、大きさの異なる顔を検出するためには、解像度の異なる画像上で位置をずらしながら所定サイズの部分画像をそれぞれ切り出し、その部分画像が顔画像であるか否かを判別してゆく必要があるためである。
図2は、検出対象画像の多重解像度化の工程を示した図である。多重解像度化、すなわち、解像度画像群の生成は、具体的には、図2に示すように、規格化済みの検出対象画像S0′を基本となる解像度画像S1_1とし、解像度画像S1_1に対して2の−1/3乗倍サイズの解像度画像S1_2と、解像度画像S1_2に対して2の−1/3乗倍サイズ(基本画像S1_1に対しては2の−2/3乗倍サイズ)の解像度画像S1_3とを先に生成し、その後、解像度画像S1_1,S1_2,S1_3のそれぞれを1/2倍サイズに縮小した解像度画像を生成し、それら縮小した解像度画像をさらに1/2倍サイズに縮小した解像度画像を生成する、といった処理を繰り返し行い、複数の解像度画像を所定の数だけ生成するようにする。このようにすることで、輝度を表す画素値の補間処理を必要としない1/2倍の縮小処理を主な処理とし、基本となる解像度画像から2の−1/3乗倍ずつサイズが縮小された複数の画像が高速に生成できる。例えば、解像度画像S1_1が短辺416画素の矩形サイズである場合、解像度画像S1_2,S1_3,・・・は、短辺がそれぞれ、330画素,262画素,208画素,165画素,131画素,104画素,82画素,65画素,・・・の矩形サイズとなり、2の−1/3乗倍ずつ縮小された複数の解像度画像を生成することができる。なお、このように画素値を補間しないで生成される画像は、元の画像パターンの特徴をそのまま担持する傾向が強いので、顔検出処理において精度向上が期待できる点で好ましい。
正規化部20は、解像度画像のコントラストの状態が、後に実行される顔検出処理に適した状態となるように、解像度画像の各々に対して全体正規化処理および局所正規化処理を施し、正規化済みの複数の解像度画像(S1′_1,S1′_2,・・・,S1′_n)からなる解像度画像群S1′を得るものである。
まず、全体正規化処理について説明する。全体正規化処理は、解像度画像のコントラストを顔検出処理に適した所定のレベル、すなわち、後述の判別器の性能を引き出すのに適したレベルに近づけるべく、解像度画像全体の画素値をこの画像における被写体の輝度の対数を表す値に近づける変換曲線にしたがって変換する処理である。
図3は全体正規化処理に用いる変換曲線の一例を示した図である。全体正規化処理としては、例えば、図3に示すような、画素値をsRGB空間におけるいわゆる逆ガンマ変換(=2.2乗する)した後にさらに対数をとるような変換曲線(ルックアップテーブル)にしたがって、画像全体における画素値を変換する処理を考えることができる。これは、次のような理由による。
画像として観測される光強度Iは、通常、被写体の反射率Rと光源の強度Lの積として表現される(I=R×L)。したがって、光源の強度Lが変化すると、画像として観測される光強度Iも変化することになるが、被写体の反射率Rのみを評価することができれば、光源の強度Lに依存しない、すなわち、画像の明るさの影響を受けない精度の高い顔判別を行うことができる。
ここで、光源の強度がLの場合において、被写体上で反射率がR1の部分から観測される光強度をI1、被写体上で反射率がR2の部分から観測される光強度をI2としたとき、それぞれの対数をとった空間では、下記の式が成り立つ。
log(I1)−log(I2)=log(R1×L)−log(R2×L)=log(R1)+log(L)−(log(R2)+log(L))=log(R1)−log(R2)=log(R1/R2)
すなわち、画像における画素値を対数変換することは、反射率の比が差として表現された空間へ変換することとなり、このような空間では、光源の強度Lに依存しない被写体の反射率のみを評価することが可能となる。言い換えると、画像中の明るさによって異なるコントラスト(ここでは画素値の差分そのもの)を揃えることができる。
一方、一般的なデジタルカメラ等の機器で取得された画像の色空間はsRGBである。sRGBとは、機器間の色再現の違いを統一するために、色彩、彩度等を規定・統一した国際標準の色空間のことであり、この色空間においては、ガンマ値(γout)が2.2の画像出力機器において適正な色再現を可能にするため、画像の画素値は、入力輝度を1/γout(=0.45)乗して得られる値となっている。
そこで、画像全体における画素値を、いわゆる逆ガンマ変換、すなわち、2.2乗した後にさらに対数をとるような変換曲線にしたがって変換することにより、光源の強度に依存しない被写体の反射率のみによる評価を適正に行うことができるようになる。
なお、このような全体正規化処理は、別の言い方をすれば、画像全体における画素値を、特定の色空間を別の特性を有する色空間に変換する変換曲線にしたがって変換する処理ということができる。
このような処理を検出対象画像に施すことにより、画像中の明るさによって異なるコントラストを揃えることができ、顔検出処理の精度が向上することとなる。なお、この全体正規化処理は、処理結果が検出対象画像中の斜光や背景、入力モダリティの違いによる影響を受けやすい反面、処理時間が短いという特徴を有する。
次に、局所正規化処理について説明する。局所正規化処理とは、解像度画像上の局所的な領域におけるコントラストのばらつきを抑制するための処理である。すなわち、解像度画像に対して、この解像度画像における各局所領域について、輝度を表す画素値の分散の程度が所定レベル以上である局所領域に対して、この分散の程度を上記の所定レベルより高い一定レベルに近づける第1の輝度階調変換処理を施し、画素値の分散の程度が上記の所定レベル未満である局所領域に対して、この分散の程度を上記の一定レベルより低いレベルに抑える第2の輝度階調変換処理を施すものである。なお、この局所正規化処理は、処理時間は長いが、検出対象画像中の斜光や背景、入力モダリティの違いによる判別結果への影響は小さいという特徴を有する。
図4は局所正規化処理の概念を示した図であり、図5は局所正規化処理のフローを示した図である。また、式(1),(2)は、この局所正規化処理のための画素値の階調変換の式である。
ここで、Xは注目画素の画素値、X′は注目画素の変換後の画素値、mlocalは注目画素を中心とする局所領域における画素値の平均、Vlocalはこの局所領域における画素値の分散、SDlocalはこの局所領域における画素値の標準偏差、(C1×C1)は上記の一定レベルに対応する基準値、C2は上記の所定レベルに対応する閾値、SDcは所定の定数である。なお、本実施形態において、輝度の階調数は8bitとし、画素値の取り得る値は0から255とする。
図4に示すように、まず、部分画像W2における1つの画素を注目画素として設定し(ステップS1)、この注目画素を中心とする所定の大きさ、例えば11×11画素サイズの局所領域における画素値の分散Vlocalを算出し(ステップS2)、分散Vlocalが上記所定のレベルに対応する閾値C2以上であるか否かを判定する(ステップS3)。ステップS3において、分散Vlocalが閾値C2以上であると判定された場合には、上記第1の輝度階調変換処理として、分散Vlocalが上記一定のレベルに対応する基準値(C1×C1)より大きいほど、注目画素の画素値Xと平均mlocalとの差を小さくし、分散mlocalが基準値(C1×C1)より小さいほど、注目画素の画素値Xと平均mlocalとの差を大きくする階調変換を式(1)にしたがって行う(ステップS4)。一方、ステップS3において、分散Vlocalが閾値C2未満であると判定された場合には、上記第2の輝度階調変換処理として、分散Vlocalに依らない線形な階調変換を式(2)にしたがって行う(ステップS5)。そして、ステップS1で設定した注目画素が最後の画素であるか否かを判定する(ステップS6)。ステップS6において、その注目画素が最後の画素でないと判定された場合には、ステップS1に戻り、同じ部分画像上の次の画素を注目画素として設定する。一方、ステップS6において、その注目画素が最後の画素であると判定された場合には、その部分画像に対する局所正規化を終了する。このように、上記ステップS1からS6の処理を繰り返すことにより、解像度画像全体に局所正規化を施すことができる。
なお、上記の所定レベルは、局所領域における全体または一部の輝度に応じて変化させるようにしてもよい。例えば、上記の、注目画素毎に階調変換を行う正規化処理において、閾値C2を注目画素の画素値に応じて変化させるようにしてもよい。すなわち、上記の所定レベルに対応する閾値C2を、注目画素の輝度が相対的に高いときにはより高く設定し、その輝度が相対的に低いときにはより低く設定するようにしてもよい。このようにすることで、輝度の低い、いわゆる暗い領域に低いコントラスト(画素値の分散が小さい状態)で存在している顔も正しく正規化することができる。
なお、ここでは、検出すべき顔の傾きを、入力画像S0の天地方向を基準に入力画像S0の画像面内において30度刻みで回転して設定される計12種類の傾きとし、検出すべき顔の傾きの順序が初期設定として予め所定の順序で設定されている。例えば、入力画像S0の天地方向を基準に時計回りの回転角度で表すとして、上向き3方向である0度、330度、30度、右向き3方向である90度、60度、120度、左向き3方向である270度、240度、300度、そして、下向き3方向である180度、150度、210度の順序とする。
顔検出部50は、正規化部20により正規化処理がなされた解像度画像群S1′の各解像度画像に対して、検出すべき顔の傾きを予め設定された順序にしたがって変えながら顔検出処理を施すことにより、各解像度画像に含まれる顔画像S2を所定数検出するものであり、上述のように、検出制御部(顔判別手段)51、解像度画像選択部52、サブウィンドウ設定部53、第1の判別器群54、および第2の判別器群(指標値算出手段)55とから構成されている。
検出制御部51は、顔検出部50を構成する他の各部を制御して顔検出処理におけるシーケンス制御を主に行うものである。すなわち、解像度画像群S1′の各解像度画像に対して、顔画像の候補となる顔画像候補をラフに検出し、さらにその顔画像候補が真の顔画像であるか否かを判別し、真の顔画像S2を検出するという段階的な顔検出処理を行ったり、検出すべき顔の傾きについて、顔傾き順序設定部40により設定された順序で検出を行ったりするべく、解像度画像選択部52、サブウィンドウ設定部53および第1および第2の判別器群54,55を制御する。例えば、検出制御部51は、適宜、解像度画像選択部52に対して解像度画像の選択を指示したり、サブウィンドウ設定部53に対してサブウィンドウの設定条件を指示したり、また、第1および第2の判別器群54,55を構成する判別器のうち使用する判別器の種類を切り替えたりする。なお、サブウィンドウ設定条件には、サブウィンドウを設定する画像上の範囲、サブウィンドウの移動間隔(検出の粗さ)の他、判別に用いる判別器群の別(ラフ/高精度の検出モード)等が含まれる。
また、検出制御部51は、判別すべき顔の傾きが同一で判別すべき顔の向きが異なる複数種類の判別器から算出された複数のスコアの合計の大小に基づいて、ある部分画像が顔画像であるか否かを判別したり、これら複数のスコア間の比率に基づいて顔画像における顔の任意の向きを特定したりする機能をも有するものである。
解像度画像選択部52は、検出制御部51の制御により、解像度画像群S1′の中から顔検出処理に供する解像度画像をサイズの小さい順に(解像度の粗い順に)順次選択するものである。なお、本実施形態における顔検出の手法が、各解像度画像上で順次切り出された同じサイズの部分画像W1についてその部分画像W1が顔画像であるか否かを判別することにより入力画像S0における顔画像を検出する手法であるから、この解像度画像選択部52は、入力画像S0における検出すべき顔の大きさを毎回変えながら設定するものであって、検出すべき顔の大きさを大から小へ変えながら設定するものと同等なものということができる。
サブウィンドウ設定部53は、検出制御部51により設定されたサブウィンドウ設定条件に基づいて、解像度画像選択部52により選択された解像度画像において、顔画像であるか否かの判別対象となる部分画像W1を切り出すサブウィンドウを、その位置をずらしながら順次設定するものである。
例えば、上記のラフな検出を行う場合には、上記の選択された解像度画像において、所定のサイズすなわち32×32画素サイズの部分画像W1を切り出すサブウィンドウを、所定画素数分、例えば5画素ずつ移動させながら順次設定し、その切り出された部分画像W1を第1の判別器群54へ入力する。判別器群を構成する各判別器は、後述のように、それぞれ、ある画像が所定の傾きおよび向きの顔を含む顔画像である蓋然性を示すスコアを算出するものであるから、このスコアを評価することで、あらゆる向きにある顔の顔画像を判別することが可能となる。また、上記の顔画像候補についてさらに精細な検出処理を行う場合には、その解像度画像のうち顔画像候補を含む所定の大きさの近傍領域内に限定して、またサブウィンドウをより短い間隔で、例えば1画素ずつ移動させながら順次設定し、上記と同様に部分画像(入力画像)W2の切り出しを行い、その切り出された部分画像W2を第2の判別器群55へ入力する。
第1および第2の判別器群54,55は、本来的には、サブウィンドウによって切り出された部分画像W1またはW2が顔画像であるか否かを判別する複数種類の判別器からなるものであるが、この判別器は、部分画像W1またはW2が所定の向きの顔を含む顔画像である蓋然性を示すスコア(指標値)を算出するスコア算出器(指標値算出器)としての機能を有するものであり、本実施形態においては、この第1および第2の判別器群54,55をスコア算出器群として用いる。
第1の判別器群54は、部分画像W1が所定の向きの顔を含む顔画像である蓋然性を示すスコアを比較的高速に算出する複数種類の判別器で構成されており、解像度画像における顔画像の候補をラフに検出するために用いられるものである。一方、第2の判別器群55は、部分画像W2が所定の向きの顔を含む顔画像である蓋然性を示すスコアを比較的高精度に算出する複数種類の判別器で構成されており、上記のラフな検出によって検出された顔画像候補についてより細かい検出処理を施し、顔画像候補が真の顔画像S2であるか否かを判別するために用いられるものである。
図6は第1および第2の判別器群54,55の構成を示した図である。第1の判別器群54は、図6に示すように、判別すべき顔の向きがそれぞれ異なる複数種類の判別器群、すなわち、主に正面顔画像を判別する第1の正面顔判別器群54_F、主に左横顔画像を判別する第1の左横顔判別器群54_Lおよび主に右横顔画像を判別する第1の右横顔判別器群54_Rが並列に接続された構成である。さらに、これら3種の判別器群はそれぞれ、判別すべき顔の傾きが上記の部分画像の天地方向を基準として30度ずつ異なる計12方向に対応した判別器、すなわち、第1の正面顔判別器群54_Fは、判別器54_F0,54_F30,・・・,54_F330、第1の左横顔判別器群54_Lは、判別器54_L0,54_L30,・・・,54_L330、第1の右横顔判別器群54_Rは、判別器54_R0,54_R30,・・・,54_R330から構成されている。
第2の判別器群55も、第1の判別器群と同様、図6に示すように、判別すべき顔の向きがそれぞれ異なる複数種類の判別器群、すなわち、主に正面顔画像を判別する第2の正面顔判別器群55_F、主に左横顔画像を判別する第2の左横顔判別器群55_Lおよび主に右横顔画像を判別する第2の右横顔判別器群55_Rが並列に接続された構成である。さらに、これら3種の判別器群は第1の判別器群と同様、それぞれ、判別すべき顔の傾きが部分画像の天地方向を基準として30度ずつ異なる計12方向に対応した判別器、すなわち、第2の正面顔判別器群55_Fは、判別器55_F0,55_F30,・・・,55_F330、第2の左横顔判別器群55_Lは、判別器55_L0,55_L30,・・・,55_L330、第2の右横顔判別器群55_Rは、判別器55_R0,55_R30,・・・,55_R330から構成されている。
なお、上記の各判別器は、図6に示すように、複数の弱判別器WCが線形に結合したカスケード構造を有しており、弱判別器は、部分画像W1またはW2(以下、単に部分画像Wという)の画素値(輝度)の分布に係る少なくとも1つの特徴量を算出し、この特徴量を用いてこの部分画像W1が所定の向きの顔を含む顔画像である蓋然性を示すスコアを算出するものである。
また、上記第1および第2の判別器群54,55は、いずれも、判別可能な主な顔の画像面外の向きを正面顔、左横顔および右横顔の3種としているが、右斜め顔、左斜め顔をそれぞれ判別する判別器としてもよい。
重複検出判定部60は、顔検出部50によって検出された真の顔画像S2の位置情報に基づいて、解像度画像群S1′の各解像度画像上で検出された顔画像のうち同一の顔を表す画像、すなわち重複して検出された顔画像をそれぞれ1つの顔画像としてまとめる処理を行い、入力画像S0において検出された真の顔画像S3を出力する。判別器は、学習方法にもよるが、一般的に部分画像Wのサイズに対して検出できる顔の大きさにはある程度幅があるので、解像度レベルが隣接する複数の解像度画像において、同一の顔を表す画像が重複して検出される場合があるからである。
ここで、判別器群を構成する各判別器の構成、判別器における処理の流れおよび判別器の学習方法について説明する。
判別器は、図6に示すように、複数の弱判別器WCからなり、後述の学習により多数の弱判別器WCの中から選定された判別に有効な弱判別器WCからなるものである。弱判別器WCには、それぞれ、その弱判別器に固有の特徴量算出アルゴリズムとスコアテーブル(後述の自己のヒストグラム)があり、各弱判別器WCは、部分画像Wから特徴量を算出し、その特徴量とスコアテーブルとに基づいて、部分画像Wが所定の傾きおよび所定の向きの顔を含む顔画像である蓋然性を示すスコアを算出するものである。判別器は、これら複数の弱判別器WCの各々から得られたスコアをすべて足し合わせ、部分画像Wが所定の傾きおよび所定の向きの顔を含む顔画像である蓋然性を示す最終的なスコアとして算出するものである。
部分画像Wが判別器に入力されると、第1番目の弱判別器WCにおいて特徴量xが算出される。例えば、図7に示すように、所定のサイズ、例えば、32×32画素サイズの部分画像Wに対して、4近傍画素平均(画像を2×2画素サイズ毎に複数のブロックに区分し、各ブロックの4画素における画素値の平均値をそのブロックに対応する1つの画素の画素値とする処理)を段階的に行うことにより、16×16画素サイズの画像と、8×8画素サイズの縮小した画像を得、もとの画像を含めたこれら3つの画像の平面内に設定される所定の2点を1ペアとして、複数種類のペアからなる1つのペア群を構成する各ペアにおける2点間の画素値(輝度)の差分値をそれぞれ計算し、これらの差分値の組合せを特徴量とする。各ペアの所定の2点は、例えば、画像上の顔の濃淡の特徴が反映されるよう決められた縦方向に並んだ所定の2点や、横方向に並んだ所定の2点とする。そして、特徴量である差分値の組合せに対応する値をxとして算出する。次に、その値xに応じて所定のスコアテーブル(自己のヒストグラム)から部分画像Wが判別すべき顔(例えば、判別器54_F30の場合には「顔の向きが正面で傾きが回転角度30度の顔」)を表す画像である蓋然性を示す第1のスコアが求められる。次に、第2番目の弱判別器WCの処理に移行し、第2番目の弱判別器WCに固有の特徴量算出アルゴリズムとスコアテーブルにより、第2のスコアが算出される。このようにして、すべての弱判別器WCによりスコアを算出させ、これらすべてのスコアを足し合わせて得られたスコアを、この判別器による最終的なスコアとする。
次に、判別器の学習(生成)方法について説明する。
図8は判別器の学習方法を示すフローチャートである。判別器の学習には、所定のサイズ、例えば32×32画素サイズで規格化され、さらに、前述の正規化部20による正規化処理と同様の処理が施された複数のサンプル画像を用いる。サンプル画像としては、顔であることが分かっている複数の異なる顔サンプル画像からなる顔サンプル画像群と、顔でないことが分かっている複数の異なる非顔サンプル画像からなる非顔サンプル画像群とを用意する。
顔サンプル画像群は、1つの顔サンプル画像につき、縦および/または横を0.7倍から1.2倍の範囲にて0.1倍単位で段階的に拡縮して得られる各サンプル画像に対し、平面上±15度の範囲にて3度単位で段階的に回転させて得られる複数の変形バリエーションを用いる。なおこのとき、顔サンプル画像は、目の位置が所定の位置に来るように顔のサイズと位置を規格化し、上記の平面上の回転、拡縮は目の位置を基準として行うようにする。例えば、d×dサイズのサンプル画像の場合においては、図9に示すように、両目の位置が、サンプル画像の最左上の頂点と最右上の頂点から、それぞれ、内側に1/4d、下側に1/4d移動した各位置とに来るように顔のサイズと位置を規格化し、また、上記の平面上の回転、拡縮は、両目の中間点を中心に行うようにする。
これら各サンプル画像には、重みすなわち重要度が割り当てられる。まず、すべてのサンプル画像の重みの初期値が等しく1に設定される(ステップS21)。
次に、サンプル画像およびその縮小画像の平面内に設定される所定の2点を1ペアとして複数のペアからなるペア群を複数種類設定したときの、この複数種類のペア群のそれぞれについて弱半別器が作成される(ステップS22)。ここで、それぞれの弱判別器とは、サブウィンドウWで切り出された部分画像とその縮小画像の平面内に設定される所定の2点を1ペアとして複数のペアからなる1つのペア群を設定したときの、この1つのペア群を構成する各ペアにおける2点間の画素値(輝度)の差分値の組合せを用いて、顔の画像と顔でない画像とを判別する基準を提供するものである。本実施形態においては、1つのペア群を構成する各ペアにおける2点間の画素値の差分値の組合せについてのヒストグラムを弱判別器のスコアテーブルの基礎として使用する。
図10はサンプル画像からヒストグラムが生成される様子を示した図である。図10の左側のサンプル画像に示すように、この判別器を作成するためのペア群を構成する各ペアの2点は、顔であることが分かっている複数のサンプル画像において、サンプル画像上の右目の中心にある点をP1、右側の頬の部分にある点をP2、眉間の部分にある点をP3、サンプル画像を4近傍画素平均で縮小した16×16画素サイズの縮小画像上の右目の中心にある点をP4、右側の頬の部分にある点をP5、さらに4近傍画素平均で縮小した8×8画素サイズの縮小画像上の額の部分にある点をP6、口の部分にある点をP7として、P1−P2、P1−P3、P4−P5、P4−P6、P6−P7の5ペアである。なお、ある判別器を作成するための1つのペア群を構成する各ペアの2点の座標位置はすべてのサンプル画像において同一である。そして顔であることが分かっているすべてのサンプル画像について上記5ペアを構成する各ペアの2点間の画素値の差分値の組合せが求められ、そのヒストグラムが作成される。ここで、画素値の差分値の組合せとしてとり得る値は、画像の輝度階調数に依存するが、仮に16ビット階調である場合には、1つの画素値の差分値につき65536通りあり、全体では階調数の(ペア数)乗、すなわち65536の5乗通りとなってしまい、学習および検出のために多大なサンプルの数、時間およびメモリを要することとなる。このため、本実施形態においては、画素値の差分値を適当な数値幅で区切って量子化し、n値化する(例えばn=100)。これにより、画素値の差分値の組合せの数はnの5乗通りとなるため、画素値の差分値の組合せを表すデータ数を低減できる。
同様に、顔でないことが分かっている複数の非顔サンプル画像についても、ヒストグラムが作成される。なお、非顔サンプル画像については、顔であることが分かっている顔サンプル画像上における上記各ペアの所定の2点の位置に対応する位置(同様に参照符号P1からP7を用いる)が用いられる。これらの2つのヒストグラムが示す頻度値の比の対数値を取ってヒストグラムで表したものが、図10の一番右側に示す、弱判別器のスコアテーブルの基礎として用いられるヒストグラムである。この弱判別器のヒストグラムが示す各縦軸の値を、以下、判別ポイントと称する。この弱判別器によれば、正の判別ポイントに対応する、画素値の差分値の組合せの分布を示す画像は顔である可能性が高く、判別ポイントの絶対値が大きいほどその可能性は高まると言える。逆に、負の判別ポイントに対応する画素値の差分値の組合せの分布を示す画像は顔でない可能性が高く、やはり判別ポイントの絶対値が大きいほどその可能性は高まる。ステップS22では、判別に使用され得る複数種類のペア群を構成する各ペアの所定の2点間の画素値の差分値の組合せについて、上記のヒストグラム形式の複数の弱判別器が作成される。
続いて、ステップS22で作成した複数の弱半別器のうち、画像が顔であるか否かを判別するのに最も有効な弱判別器が選択される。最も有効な弱判別器の選択は、各サンプル画像の重みを考慮して行われる。この例では、各弱判別器の重み付き正答率が比較され、最も高い重み付き正答率を示す弱判別器が選択される(ステップS23)。すなわち、最初のステップS23では、各サンプル画像の重みは等しく1であるので、単純にその弱判別器によって画像が顔であるか否かが正しく判別されるサンプル画像の数が最も多いものが、最も有効な弱判別器として選択される。一方、後述するステップS25において各サンプル画像の重みが更新された後の2回目のステップS23では、重みが1のサンプル画像、重みが1よりも大きいサンプル画像、および重みが1よりも小さいサンプル画像が混在しており、重みが1よりも大きいサンプル画像は、正答率の評価において、重みが1のサンプル画像よりも重みが大きい分多くカウントされる。これにより、2回目以降のステップS23では、重みが小さいサンプル画像よりも、重みが大きいサンプル画像が正しく判別されることに、より重点が置かれる。
次に、それまでに選択した弱判別器の組合せの正答率、すなわち、それまでに選択した弱判別器を組み合わせて使用して(学習段階では、弱判別器は必ずしも線形に結合させる必要はない)各サンプル画像が顔の画像であるか否かを判別した結果が、実際に顔の画像であるか否かの答えと一致する率が、所定の閾値を超えたか否かが確かめられる(ステップS24)。ここで、弱判別器の組合せの正答率の評価に用いられるのは、現在の重みが付けられたサンプル画像群でも、重みが等しくされたサンプル画像群でもよい。所定の閾値を超えた場合は、それまでに選択した弱判別器を用いれば画像が顔であるか否かを十分に高い確率で判別できるため、学習は終了する。所定の閾値以下である場合は、それまでに選択した弱判別器と組み合わせて用いるための追加の弱判別器を選択するために、ステップS26へと進む。
ステップS26では、直近のステップS23で選択された弱判別器が再び選択されないようにするため、その弱判別器が除外される。
次に、直近のステップS23で選択された弱判別器では顔であるか否かを正しく判別できなかったサンプル画像の重みが大きくされ、画像が顔であるか否かを正しく判別できたサンプル画像の重みが小さくされる(ステップS25)。このように重みを大小させる理由は、次の弱判別器の選択において、既に選択された弱判別器では正しく判別できなかった画像を重要視し、それらの画像が顔であるか否かを正しく判別できる弱判別器が選択されるようにして、弱判別器の組合せの効果を高めるためである。
続いて、ステップS23へと戻り、上記したように重み付き正答率を基準にして次に有効な弱判別器が選択される。
以上のステップS23からS26を繰り返して、顔であるか否かを判別するのに適した弱判別器として、特定のペア群を構成する各ペアの所定の2点間の画素値の差分値の組合せに対応する弱判別器が選択されたところで、ステップS24で確認される正答率が閾値を超えたとすると、顔であるか否かの判別に用いる弱判別器の種類と判別条件とが確定され(ステップS27)、これにより学習を終了する。なお、選択された弱判別器は、その重み付き正答率が高い順に線形結合され、1つの判別器が構成される。また、各弱判別器については、それぞれ得られたヒストグラムを基に、画素値の差分値の組合せに応じてスコアを算出するためのスコアテーブルが生成される。なお、ヒストグラム自身をスコアテーブルとして用いることもでき、この場合、ヒストグラムの判別ポイントがそのままスコアとなる。
このようにして、顔サンプル画像群と非顔サンプル画像群とを用いた学習により、判別器が生成されるわけであるが、上記のように、判別したい顔の傾きおよび向きが異なる複数の判別器を生成するには、それらの各傾きや向きに対応した顔サンプル画像群を用意し、その顔サンプル画像群と非顔サンプル画像群とを用いた学習を顔サンプル画像群の種類毎に行うこととなる。
すなわち、本実施形態においては、顔の向きについては、正面、左横、右横の計3種類、顔の傾きについては、回転角度0度から330度まで30度刻みの計12種類、合計36種類の顔サンプル画像群を用意する。なお、第1の判別器群54と第2の判別器群55とで異なるサンプル画像を用いて学習させる場合には、さらにその2倍、合計72種類の顔サンプル画像群を用意することとなる。
上記の複数の顔サンプル画像群が得られたら、顔サンプル画像群の種類毎に、その顔サンプル画像群と非顔サンプル画像群とを用いて、上記の学習を行うことにより、第1および第2の判別器群54,55を構成する複数の判別器を生成することができる。
なお、上記の学習手法を採用する場合において、弱判別器は、特定のペア群を構成する各ペアの所定の2点間の画素値の差分値の組合せを用いて顔の画像と顔でない画像とを判別する基準を提供するものであれば、上記のヒストグラムの形式のものに限られずいかなるものであってもよく、例えば2値データ、閾値または関数等であってもよい。また、同じヒストグラムの形式であっても、図10の中央に示した2つのヒストグラムの差分値の分布を示すヒストグラム等を用いてもよい。
また、学習の方法としては上記手法に限定されるものではなく、ニューラルネットワーク等他のマシンラーニングの手法を用いることができる。
次に、顔検出システム1における処理の流れについて説明する。
図11a,図11bは、本顔検出システム1における処理の流れを示したフローチャートである。まず、本顔検出システム1に、顔画像を検出する対象となる検出対象画像S0が入力されると(ステップS31)、入力された検出対象画像S0は、多重解像度化部10に供給される。この検出対象画像S0の画像サイズが所定のサイズに変換された画像S0′が生成され、この画像S0′から2の−1/3乗倍ずつサイズ(解像度)が縮小された複数の解像度画像からなる解像度画像群S1が生成される(ステップS32)。
そして、正規化部20において、解像度画像群S1の各解像度化像に対して、上述の全体正規化処理と局所正規化処理が施され、正規化済みの解像度画像群S1′が得られる(ステップS33)。
顔検出部50においては、検出制御部51が、部分画像W1が顔画像である蓋然性を示すスコアを算出するために用いる判別器の種類(判別すべき顔の傾き)を、予め設定された検出すべき顔の傾きの順序と一致するように選択する(ステップS34)。
そして、検出制御部51からの指示を受けた解像度画像選択部52により、解像度画像群S1′の中から画像サイズの小さい順、すなわち、S1′_n,S1′_n−1,・・・,S1′_1の順に所定の解像度画像S1′_iを選択する(ステップS35)。
次に検出制御部51が、サブウィンドウ設定部53に対して、検出モードをラフな検出のモードとするサブウィンドウ設定条件を設定する。これにより、サブウィンドウ設定部53は、解像度画像S1′_i上でサブウィンドウを広めのピッチ、例えば5画素間隔で移動しながら設定して所定サイズの部分画像W1を順次切り出す(ステップS36)。
部分画像W1は、第1の判別器群54の中の上記選択された種類の判別器へ入力される。例えば、判別すべき顔の傾きが検出対象画像S0の天地方向を基準に30度回転した傾きである場合には、部分画像W1は判別器54F_30,54L_30,54R_30の3つの判別器へ入力される。これらの判別器は、それぞれ、入力された部分画像W1が所定の向きの顔を含む顔画像である蓋然性を示すスコアを算出する。すなわち、正面顔判別器が、部分画像W1が正面顔画像である蓋然性を示す正面顔スコアSC_Fを算出し、左横顔判別器が、部分画像W1が左横顔画像である蓋然性を示す左横顔スコアSC_Lを算出し、右横顔判別器が、部分画像W1が右横顔画像である蓋然性を示す右横顔スコアSC_Rを算出する(ステップS37)。
そして、検出制御部51がこれらのスコアを取得し、これらスコアの合計値が閾値SCth以上であるか否かを判定する(ステップS38)。この判定において肯定される場合には、部分画像W1を顔画像候補として判別し、ステップS39に移行して、精細モードでの顔画像検出を行う。一方、この判定において否定される場合には、部分画像W1は顔画像でないと判定し、ステップS45に移行して、検出処理が続行可能か否かの判定を行う。
ステップS39では、検出制御部51が、サブウィンドウ設定部33に対して、検出対象領域を、部分画像W1(顔画像候補)を含む所定の大きさの領域内に限定し、検出モードを精細モードとするサブウィンドウ設定条件を設定する。これにより、サブウィンドウ設定部53は、部分画像W1近傍で、サブウィンドウを狭いピッチ、例えば1画素ずつ移動しながら設定して所定サイズの部分画像W2を順次切り出し、第2の判別器群55中の上記ステップS34にて選択された種類の判別器へ入力する。
これらの判別器は、それぞれ、入力された部分画像W2が所定の向きの顔を含む顔画像である蓋然性を示すスコアを算出する。すなわち、正面顔判別器が、部分画像W2が正面顔画像である蓋然性を示す正面顔スコアSC_Fを算出し、左横顔判別器が、部分画像W2が左横顔画像である蓋然性を示す左横顔スコアSC_Lを算出し、右横顔判別器が、部分画像W2が右横顔画像である蓋然性を示す右横顔スコアSC_Rを算出する(ステップS40)。そして、検出制御部51がこれらのスコアを取得する。
そして、現在の部分画像W2が顔画像候補近傍で最後の部分画像であるか否かを判定する(ステップS41)。ここで、現在の部分画像W2が最後の部分画像でないと判定された場合には、ステップS39に戻り、新たな部分画像W2を切り出し、精細モードでの検出処理を続行する。現在の部分画像W2が最後の部分画像であると判定された場合には、ステップS42に移行し、顔画像候補として判別された1つの部分画像W1に対して切り出された複数の部分画像W2のうち、算出されたスコアの合計値が最も高かった部分画像W2を特定する。
そして、特定された部分画像W2のスコア合計値が閾値SCth以上であるか否かを判定し、この判定において肯定される場合には、その特定された部分画像W2を顔画像と判別し、ステップS44に移行して、その顔の向きを特定する。一方、この判定において否定される場合には、その特定された部分画像W2を非顔画像と判別し、ステップS45に移行する。
ステップS44では、その特定された部分画像W2に対して算出された、正面顔スコアSC_F、左横顔スコアSC_L、右横顔スコアSC_R間の比率を求め、その比率からその顔の向きを特定する。
図12は、算出された各スコアと顔画像であるか否かの判別および特定される顔の向きとの対応関係の一例を示した図である。ここで、顔画像であるか否かの基準となる合計スコアの閾値SCthは60である。図12に示すように、例えば、ケース1の場合のように、左横顔スコアSC_Lが50、正面顔スコアSC_Fが50、右横顔スコアSC_Rが0である場合には、合計スコアが100となり閾値SCthを超えるので、部分画像W2は顔画像であると判別する。次に、その比率を見ると、左横顔スコア:正面顔スコア:右横顔スコア=1:1:0であるから、顔の向きは、左横顔と正面顔との間を1:1で分割する位置、すなわち、左斜め45度と特定する。また、例えば、ケース2の場合のように、左横顔スコアSC_Lが0、正面顔スコアSC_Fが30、右横顔スコアSC_Rが60の場合には、合計スコアが90となり、閾値SCthを超えるので、部分画像W2は顔画像であると判別する。次に、その比率を見ると、左横顔スコア:正面顔スコア:右横顔スコア=0:1:2であるから、顔の向きは、正面顔と右横顔との間を1:2で分割する位置、すなわち、右斜め60度(正面から右横へ60度)と特定する。また、例えば、ケース3の場合のように、左横顔スコアSC_Lが20、正面顔スコアSC_Fが30、右横顔スコアSC_Rが0である場合には、合計スコアが50となり閾値SCthを超えないので、部分画像W2は非顔画像であると判別する。なお、スコアの値が所定の向き側に偏らず、バラバラになるような場合には、算出された複数のスコアの重心を求め、その重心に対応する向きを顔の向きとしてもよい。
ステップS45では、現在の部分画像W1が現在の解像度画像上で最後の部分画像であるか否かを判定する。ここで、現在の部分画像W1が最後の部分画像でないと判定された場合には、ステップS36に戻り、現在の解像度画像上で新たな部分画像W1を切り出し、検出処理を続行する。一方、現在の部分画像W1が最後の部分画像であると判定された場合には、ステップS46に移行し、現在の解像度画像が最後の解像度画像であるか否かを判定する。ここで、現在の解像度画像が最後の解像度画像でないと判定された場合には、ステップS35に戻り、新たな解像度画像を選択し、検出処理を続行する。一方、現在の解像度画像が最後の解像度画像であると判定された場合には、現在選択されている判別器の種類(判別すべき顔の傾き)が最後の順番の種類であるか否かを判定する(ステップS47)。ここで、現在選択されている判別器の種類が、最後の順番の種類でないと判定された場合には、ステップS34に戻り、次の順番の判別器の種類を選択し、検出処理を続行する。一方、現在選択されている判別器の種類が、最後の順番の種類であると判定された場合には、検出処理を終了する。
図13は、上記のステップS35からステップS45までを繰り返すことにより、解像度画像がサイズの小さい順に選択されて、各解像度画像上で部分画像W1が順次切り出され、顔画像検出が実施される様子を示した図である。
そして、ステップS48では、重複検出判定部60により、真の顔画像S2のうち重複して検出された顔画像をそれぞれ1つの顔画像としてまとめる処理を行い、入力画像S0において検出された真の顔画像S3を出力する。
このように、本発明の実施形態である顔検出システムによれば、入力画像における画像上の特徴量に基づいて、入力画像が所定の向きの顔を含む顔画像である蓋然性を示す指標値を、この所定の向きを複数の異なる向きに変えてそれぞれ算出するので、入力画像が顔画像である蓋然性の高さとその顔の向きの情報を、その顔の向きに依らず、上記複数の異なる向きの各顔に対応した成分に分けて各指標値に反映させることができ、また、算出された複数の指標値の合計の大小に基づいて入力画像が顔を含む顔画像であるか否かを判別するとともに、これら複数の指標値間の比率に基づいてこの顔の向きを特定するので、これら限られた複数の指標値の簡単な評価だけで、顔画像であるか否かを判別し顔の向きを特定することができ、短い処理時間で、注目するデジタル画像が顔画像であるか否かを判別するとともに、その顔の任意の向きを特定することが可能となる。
なお、本実施形態においては、判別すべき顔の向きが異なる複数種類の判別器により算出されたスコアに基づいて、部分画像が顔画像であるか否かの判別とその顔の向きの特定とをともに行っているが、例えば、顔画像であることは分かっているが、その顔の向きが分からないような場合において、同様にその画像に対して判別すべき顔の向きが異なる複数種類の判別器を用いてスコアを算出し、それらのスコア間の比率を評価することで、その顔の任意の向きを特定するといったことも可能である。すなわち、より少ない種類の判別器だけで、顔画像を検出したり、その顔の任意の向きを特定したりすることができる。
以上、本発明の実施形態に係る顔検出システムについて説明したが、この顔検出システムのうちの本発明の顔検出装置に対応する部分における各処理をコンピュータに実行させるためのプログラムも、本発明の実施形態の1つである。また、そのようなプログラムを記録したコンピュータ読取可能な記録媒体も、本発明の実施形態の1つである。