以下、本発明の実施形態について図を参照しながら説明する。
図1は本発明の第1の実施形態である顔検出システム1の構成を示す概略ブロック図である。この顔検出システム1は、入力されたデジタル画像上の顔を含む画像(以下、顔画像という)を、顔の位置、大きさ、傾き(画像面内での回転位置)、向き(左右首振り方向での向き)によらず検出するものである。
本顔検出システム1は、特に検出精度、ロバスト性が優れているとされる顔検出の手法として、サンプル画像を用いたマシンラーニングの学習により生成された判別器モジュール(以下、単に判別器という)を用いる手法を採用したものである。この手法は、所定の傾きおよび向きの顔を表す複数の異なる顔サンプル画像と、非顔を表す複数の異なる非顔サンプル画像とを用いて、顔の特徴を学習させ、ある画像が、所定の傾きおよび向きの顔を含む顔画像であるか否かを判別できる判別器を生成して用意しておき、顔の検出対象となる画像(以下、検出対象画像という)上の異なる位置において部分画像を順次切り出し、その部分画像が顔画像である蓋然性を示す指標値を前記の判別器を用いて算出し、その指標値の大小に基づいてその部分画像が顔画像であるか否かを判別することにより、検出対象画像に含まれる顔画像を検出する手法である。
顔検出システム1は、図1に示すように、多重解像度化部10と、正規化部20と、顔検出部30と、重複検出判定部40とを備えている。
多重解像度化部10は、入力された検出対象画像S0を多重解像度化して解像度の異なる複数の画像(以下、解像度画像という)からなる解像度画像群S1を得るものである。
検出対象画像S0の画像サイズ、すなわち、解像度を変換することにより、その解像度を所定の解像度、例えば、短辺が416画素の矩形サイズの画像に規格化し、規格化済みの検出対象画像S0′を得る。そして、この規格化済みの検出対象画像S0′を基本としてさらに解像度変換を行うことにより、解像度の異なる複数の解像度画像S1_1〜S1_M(Mは解像度の段階数)を生成し、解像度画像群S1を得る。このような解像度画像群を生成する理由は、通常、検出対象画像S0に含まれる顔の大きさは不明であるが、一方、検出しようとする顔の大きさは、後述の判別器の生成方法と関連して一定の大きさに固定されるため、大きさの異なる顔を検出するためには、解像度の異なる画像上で位置をずらしながら所定サイズの部分画像をそれぞれ切り出し、その部分画像が顔画像であるか否かを判別してゆく必要があるためである。
図2は、検出対象画像S0の多重解像度化の工程を示した図である。多重解像度化、すなわち、解像度画像群の生成は、具体的には、図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′_Mからなる解像度画像群S1′を得るものである。
まず、全体正規化処理について説明する、全体正規化処理は、解像度画像のコントラストを顔検出処理に適した所定のレベル、すなわち、後述の判別器の性能を引き出すのに適したレベルに近づけるべく、解像度画像全体の画素値をこの画像における被写体の輝度の対数を表す値に近づける変換曲線にしたがって変換する処理である。
図3は全体正規化処理に用いる変換曲線の一例を示した図である。全体正規化処理としては、例えば、図3に示すような、画素値をsRGB空間におけるいわゆる逆ガンマ変換(=2.2乗する)した後にさらに対数をとるような変換曲線(ルックアップテーブル)にしたがって、画像全体における画素値を変換する処理を考えることができる。これは、次のような理由による。
画像として観測される光強度Iは、通常、被写体の反射率Rと光源の強度Lの積として表現される(I=R×L)。したがって、光源の強度Lが変化すると、画像として観測される光強度Iも変化することになるが、被写体の反射率Rのみを評価することができれば、光源の強度Lに依存しない、すなわち、画像の明るさの影響を受けない精度の高い顔判別を行うことができる。
ここで、光源の強度がLの場合において、被写体上で反射率がR1の部分から観測される光強度をI1、被写体上で反射率がR2の部分から観測される光強度をI2としたとき、それぞれの対数をとった空間では、下記の式が成り立つ。
すなわち、画像における画素値を対数変換することは、反射率の比が差として表現された空間へ変換することとなり、このような空間では、光源の強度Lに依存しない被写体の反射率のみを評価することが可能となる。言い換えると、画像中の明るさによって異なるコントラスト(ここでは画素値の差分そのもの)を揃えることができる。
一方、一般的なデジタルカメラ等の機器で取得された画像の色空間はsRGBである。sRGBとは、機器間の色再現の違いを統一するために、色彩、彩度等を規定・統一した国際標準の色空間のことであり、この色空間においては、ガンマ値(γout)が2.2の画像出力機器において適正な色再現を可能にするため、画像の画素値は、入力輝度を1/γout(=0.45)乗して得られる値となっている。
そこで、画像全体における画素値を、いわゆる逆ガンマ変換、すなわち、2.2乗した後にさらに対数をとるような変換曲線にしたがって変換することにより、光源の強度に依存しない被写体の反射率のみによる評価を適正に行うことができるようになる。
なお、このような全体正規化処理は、別の言い方をすれば、画像全体における画素値を、特定の色空間を別の特性を有する色空間に変換する変換曲線にしたがって変換する処理ということができる。
このような処理を検出対象画像に施すことにより、画像中の明るさによって異なるコントラストを揃えることができ、顔検出処理の精度が向上することとなる。なお、この全体正規化処理は、処理結果が検出対象画像中の斜光や背景、入力モダリティの違いによる影響を受けやすい反面、処理時間が短いという特徴を有する。
次に、局所正規化処理について説明する。局所正規化処理は、解像度画像上の局所的な領域におけるコントラストのばらつきを抑制するための処理である。すなわち、解像度画像における各局所領域について、輝度を表す画素値の分散の程度が所定レベル以上である局所領域に対しては、この分散の程度を前記の所定レベルより高い一定レベルに近づける第1の輝度階調変換処理を施し、画素値の分散の程度が前記の所定レベル未満である局所領域に対しては、この分散の程度を前記の一定レベルより低いレベルに抑える第2の輝度階調変換処理を施すものである。なお、この局所正規化処理は、処理時間は長いが、検出対象画像中の斜光や背景、入力モダリティの違いによる判別結果への影響は小さいという特徴を有する。
図4は局所正規化処理の概念を示した図であり、図5は局所正規化処理のフローを示した図である。また、式(2),(3)は、この局所正規化処理のための画素値の階調変換の式である。
ここで、Xは注目画素の画素値、X′は注目画素の変換後の画素値、mlocalは注目画素を中心とする局所領域における画素値の平均、Vlocalはこの局所領域における画素値の分散、SDlocalはこの局所領域における画素値の標準偏差、C1は、(C1×C1)が前記の一定レベルに対応する基準値となるような値、C2は前記の所定レベルに対応する閾値、SDcは所定の定数である。なお、本実施形態において、輝度の階調数は8bitとし、画素値の取り得る値は0から255とする。
図4に示すように、まず、解像度画像における1つの画素を注目画素として設定し(ステップST1)、この注目画素を中心とする所定の大きさ、例えば11×11画素サイズの局所領域における画素値の分散Vlocalを算出し(ステップST2)、分散Vlocalが前記所定のレベルに対応する閾値C2以上であるか否かを判定する(ステップST3)。ステップST3において、分散Vlocalが閾値C2以上であると判定された場合には、前記第1の輝度階調変換処理として、分散Vlocalが前記一定のレベルに対応する基準値(C1×C1)より大きいほど、注目画素の画素値Xと平均mlocalとの差を小さくし、分散mlocalが基準値(C1×C1)より小さいほど、注目画素の画素値Xと平均mlocalとの差を大きくする階調変換を式(2)にしたがって行う(ステップST4)。一方、ステップST3において、分散Vlocalが閾値C2未満であると判定された場合には、前記第2の輝度階調変換処理として、分散Vlocalに依らない線形な階調変換を式(3)にしたがって行う(ステップST5)。そして、ステップST1で設定した注目画素が最後の画素であるか否かを判定する(ステップST6)。ステップST6において、その注目画素が最後の画素でないと判定された場合には、ステップST1に戻り、同じ解像度画像上の次の画素を注目画素として設定する。一方、ステップST6において、その注目画素が最後の画素であると判定された場合には、その解像度画像に対する局所正規化を終了する。このように、前記ステップST1からST6の処理を繰り返すことにより、解像度画像全体に局所正規化を施すことができる。
なお、前記の所定レベルは、局所領域における全体または一部の輝度に応じて変化させるようにしてもよい。例えば、前記の、注目画素毎に階調変換を行う正規化処理において、閾値C2を注目画素の画素値に応じて変化させるようにしてもよい。すなわち、前記の所定レベルに対応する閾値C2を、注目画素の輝度が相対的に高いときにはより高く設定し、その輝度が相対的に低いときにはより低く設定するようにしてもよい。このようにすることで、輝度の低い、いわゆる暗い領域に低いコントラスト(画素値の分散が小さい状態)で存在している顔も正しく正規化することができる。
顔検出部30は、正規化部20により正規化処理がなされた解像度画像群S1′の各解像度画像S1′_m(m=1〜M)に対して、検出すべき顔の位置および傾きを所定の順序にしたがって変えながら顔検出処理を施すことにより、すべての解像度画像に含まれる顔画像S2を検出するものである。
なお、本実施例では、検出すべき顔の位置毎に検出すべき顔の傾きを変えて顔画像を検出するようにするが、検出すべき顔の傾き毎に検出すべき顔の位置を変えて顔画像を検出するようにしてもよい。
また、本実施例では、検出すべき全ての顔の傾きを、近接する複数の異なる傾きからなる複数のグループに分割し、後述のスコアの算出および顔画像の抽出をこのグループ毎に行う。具体的には、図12に示すように、検出すべき全ての顔の傾きを、検出対象画像S0の天地方向を基準に検出対象画像S0の画像面内において30度刻みで回転して設定される計12種類の傾きとし、検出すべき顔の傾きを所定の順序、すなわち、この傾きを検出対象画像S0の天地方向を基準に時計回りの回転角度で表すとして、上向き3方向である0度、330度、30度(第1のグループ)、右向き3方向である90度、60度、120度(第2のグループ)、左向き3方向である270度、240度、300度(第3のグループ)、そして、下向き3方向である180度、150度、210度(第4のグループ)の順序で切り替える。
顔検出部30は、図1に示すように、解像度画像選択部31と、サブウィンドウ設定部32と、判別器群33と、顔画像削除部34とから構成されている。なお、サブウィンドウ設定部32および判別器群33が本発明の第1の顔検出装置における指標値算出手段として機能し、判別器群33が本発明の第1の顔検出装置における顔画像抽出手段として機能し、顔画像削除部34が本発明の第1の顔検出装置における顔画像削除手段として機能するものである。
解像度画像選択部31は、多重解像度化部20により生成された解像度画像群S1′の中から顔検出処理に供する解像度画像をサイズの小さい順に、すなわち、解像度の粗い順に1つずつ選択するものである。なお、本実施形態における顔検出の手法が、各解像度画像上で順次切り出された同じサイズの部分画像Wについて、その部分画像Wが顔画像であるか否かを判別することにより検出対象画像S0における顔を検出する手法であるから、この解像度画像選択部31は、検出対象画像S0に対する部分画像Wの相対的な大きさ、すなわち、検出対象画像S0における検出すべき顔の大きさを大から小へ毎回変えながら設定するものと考えることができる。
サブウィンドウ設定部32は、解像度画像選択部31により選択された解像度画像において、顔画像であるか否かの判別対象となる部分画像Wを切り出すサブウィンドウを、その位置を所定幅ずつずらしながら設定するものである。
例えば、前記の選択された解像度画像において、所定のサイズ、すなわち、32×32画素サイズの部分画像Wを切り出すサブウィンドウを、所定画素数分、例えば2画素ずつ移動させながら順次設定し、その切り出された部分画像Wを判別器群33へ入力する。判別器群33を構成する各判別器は、後述のように、それぞれ、入力された部分画像Wが所定の傾きおよび向きの顔を含む顔画像であるか否かを判別するものであるから、このようにすることで、あらゆる傾きおよび向きにある顔の顔画像について判別することが可能となる。
判別器群33は、判別すべき顔の傾きおよび向きがそれぞれ異なる複数種類の判別器から構成されたものであり、各判別器は、入力された部分画像Wの画像パターンに基づいて、この部分画像Wが所定の傾きおよび向きの顔を含む顔画像である蓋然性を示すスコア(指標値)scを算出し、算出されたスコアscが第1の閾値Th1以上であるときに、その部分画像Wをその所定の傾きおよび向きの顔を含む顔画像の候補Diとして判別し抽出するものである。
図6は判別器群33の構成を示した図である。判別器群33は、図6に示すように、判別すべき顔の向きがそれぞれ異なる複数種類の判別器群、すなわち、主に正面顔を判別する正面顔判別器群33_F、主に左横顔を判別する左横顔判別器群33_Lおよび主に右横顔を判別する右横顔判別器群33_Rから構成され、さらに、これら3種の判別器群はそれぞれ、判別すべき顔の傾きが画像の天地方向を基準として30度ずつ異なる計12方向に対応した判別器、すなわち、正面顔判別器群33_Fは、判別器33_F0,33_F30,・・・,33_F330、左横顔判別器群33_Lは、判別器33_L0,33_L30,・・・,33_L330、右横顔判別器群33_Rは、判別器33_R0,33_R30,・・・,33_R330から構成されている。
なお、前記サブウィンドウ設定部32は、検出すべき顔の位置毎に検出すべき顔の傾きを前記所定の順序で切り替えるため、切り出した部分画像Wを入力する判別器を適切な順序で切り替えて選択し、部分画像Wをその選択された判別器に順次入力するようにする。すなわち、検出すべき顔の位置毎に検出すべき顔の傾きを0度、330度、30度(第1のグループ)、90度、60度、120度(第2のグループ)・・・と切り替えるため、はじめ、検出すべき顔の傾きが0度である場合に対応する判別器33_F0,33_L0,33_R0を選択して、これらの判別器に部分画像Wを入力し、次に、検出すべき顔の傾きが330度である場合に対応する判別器33_F330,33_L330,33_R330を選択して、これらの判別器に同部分画像Wを入力する。このようにして、切り出した1つの部分画像Wを所定の順序で選択された各判別器に順次入力してゆき、検出すべき全ての顔の位置および傾きについてスコア算出および判別を行うようにする。ただし、途中、いずれかの判別器によって算出されたスコアscが、第1の閾値Th1より大きい第2の閾値Th2以上であったとき、その後のスコア算出および判別を、検出すべき顔の傾きをそのスコアが算出されたときの傾きに限定して行うべく、部分画像Wを入力する判別器を、判別すべき顔の傾きがその傾きである判別器に限定する。このようにする理由は、誤検出されたものでなく真の顔画像とみなすことができる信頼性の高い顔画像が検出されたときには、同一画像上に含まれる顔の傾きは略同じ傾きに揃うことが多いという経験則に基づき、顔画像が検出される可能性が低くその必要性が乏しいと考えられる、その信頼性の高い顔画像の顔の傾きとは異なる顔の傾きに対する検出処理を省略して、顔検出処理の高速化を図るためである。
なお、このような手法で顔検出処理の高速化を図る場合には、できるだけ早い段階で前記信頼性の高い顔画像が検出された方がよいわけであるが、顔の傾き(天地)は、経験則上、検出対象画像S0に対して真逆になるケースが少ないので、検出すべき顔の傾きを切り替える順序は、前記のように、180度を中心とした第4のグループの傾きを最後とする順序であることが好ましい。特に、検出すべき顔の傾き毎に検出すべき顔の位置を変えて顔画像を検出するような場合に、効果が大きいと思われる。
また、前記の判別器群33は、いずれも、判別可能な主な顔の向きを正面顔、左横顔および右横顔の3種としているが、斜め向きの顔の検出精度を上げるため、右斜め顔、左斜め顔をそれぞれ判別する判別器をさらに設けるようにしてもよい。
ここで、判別器群33を構成する各判別器の構成、判別器における処理の流れおよび判別器の学習方法について説明する。
判別器は、後述の学習により多数の弱判別器WCの中から選定された判別に有効な複数の弱判別器WCを有している。弱判別器WCは、それぞれ、部分画像Wから弱判別器WC毎に固有の所定のアルゴリズムにしたがって特徴量を算出し、その特徴量と所定のスコアテーブルとしての後述の自己のヒストグラムとに基づいて、部分画像Wが所定の傾きおよび向きの顔を含む顔画像である蓋然性を示すスコアscwを求めるものである。判別器は、これら複数の弱判別器WCから得られた個々のスコアscwを合算してスコアscを求め、このスコアscが閾値Th1以上である部分画像Wをその所定の傾きおよび向きの顔を含む顔画像Diとして抽出する。
図7は1つの判別器における処理の流れを示すフローチャートである。部分画像Wが判別器に入力されると、複数の弱判別器WCにおいてそれぞれ種類の異なる特徴量xが算出される(ステップST11)。例えば、図8に示すように、所定のサイズ、例えば、32×32画素サイズの部分画像Wに対して、4近傍画素平均(画像を2×2画素サイズ毎に複数のブロックに区分し、各ブロックの4画素における画素値の平均値をそのブロックに対応する1つの画素の画素値とする処理)を段階的に行うことにより、16×16画素サイズに縮小した画像W′と、8×8画素サイズに縮小した画像W″を得、もとの画像Wを含めたこれら3つの画像の平面内に設定される所定の2点を1ペアとして、複数種類のペアからなる1つのペア群を構成する各ペアにおける2点間の画素値(輝度)の差分値をそれぞれ計算し、これらの差分値の組合せを特徴量とする。各ペアの所定の2点は、例えば、画像上の顔の濃淡の特徴が反映されるよう決められた縦方向に並んだ所定の2点や、横方向に並んだ所定の2点とする。そして、特徴量である差分値の組合せに対応する値をxとして算出する。次に、その値xに応じて所定のスコアテーブル(自己のヒストグラム)から部分画像Wが判別すべき顔(例えば、判別器33_F30の場合には「顔の向きが正面で傾きが回転角度30度の顔」)を含む顔画像である蓋然性を示すスコアscwが弱判別器毎に算出される(ステップST12)。そして、弱判別器毎に算出された個々のスコアscwを合算してスコアscが得られ(ステップST13)、このスコアscが第1の閾値Th1以上であるか否かを判定し(ステップST14)、肯定される場合に、その部分画像Wを、この判別器が判別すべき所定の傾きおよび向きの顔を含む顔画像の候補Di(i=1,2,・・・)として抽出する(ステップST15)。
次に、判別器の学習(生成)方法について説明する。
図9は判別器の学習方法を示すフローチャートである。判別器の学習には、所定のサイズ、例えば32×32画素サイズで規格化され、さらに、前述の正規化部20による正規化処理と同様の処理が施された複数のサンプル画像を用いる。サンプル画像としては、顔であることが分かっている複数の異なる顔サンプル画像(顔サンプル画像群)と、顔でないことが分かっている複数の異なる非顔サンプル画像(非顔サンプル画像群)とを用意する。
顔サンプル画像群は、1つの顔サンプル画像につき、縦および/または横を0.7倍から1.2倍の範囲にて0.1倍単位で段階的に拡縮して得られる各サンプル画像に対し、平面上±15度の範囲にて3度単位で段階的に回転させて得られる複数の変形バリエーションを用いる。なおこのとき、顔サンプル画像は、目の位置が所定の位置に来るように顔のサイズと位置を規格化し、前記の平面上の回転、拡縮は目の位置を基準として行うようにする。例えば、d×dサイズのサンプル画像の場合においては、図10に示すように、両目の位置が、サンプル画像の最左上の頂点と最右上の頂点から、それぞれ、内側に1/4d、下側に1/4d移動した各位置とに来るように顔のサイズと位置を規格化し、また、前記の平面上の回転、拡縮は、両目の中間点を中心に行うようにする。
これら各サンプル画像には、重みすなわち重要度が割り当てられる。まず、すべてのサンプル画像の重みの初期値が等しく1に設定される(ステップST21)。
次に、サンプル画像およびその縮小画像の平面内に設定される所定の2点を1ペアとして複数のペアからなるペア群を複数種類設定したときの、この複数種類のペア群のそれぞれについて弱半別器が作成される(ステップST22)。ここで、それぞれの弱判別器とは、サブウィンドウWで切り出された部分画像とその縮小画像の平面内に設定される所定の2点を1ペアとして複数のペアからなる1つのペア群を設定したときの、この1つのペア群を構成する各ペアにおける2点間の画素値(輝度)の差分値の組合せを用いて、顔の画像と顔でない画像とを判別する基準を提供するものである。本実施形態においては、1つのペア群を構成する各ペアにおける2点間の画素値の差分値の組合せについてのヒストグラムを弱判別器のスコアテーブルの基礎として使用する。
図11はサンプル画像からヒストグラムが生成される様子を示した図である。図11の左側のサンプル画像に示すように、この判別器を作成するためのペア群を構成する各ペアの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つのヒストグラムが示す頻度値の比の対数値を取ってヒストグラムで表したものが、図11の一番右側に示す、弱判別器のスコアテーブルの基礎として用いられるヒストグラムである。この弱判別器のヒストグラムが示す各縦軸の値を、以下、判別ポイントと称する。この弱判別器によれば、正の判別ポイントに対応する、画素値の差分値の組合せの分布を示す画像は顔である可能性が高く、判別ポイントの絶対値が大きいほどその可能性は高まると言える。逆に、負の判別ポイントに対応する画素値の差分値の組合せの分布を示す画像は顔でない可能性が高く、やはり判別ポイントの絶対値が大きいほどその可能性は高まる。ステップST22では、判別に使用され得る複数種類のペア群を構成する各ペアの所定の2点間の画素値の差分値の組合せについて、前記のヒストグラム形式の複数の弱判別器が作成される。
続いて、ステップST22で作成した複数の弱半別器のうち、画像が顔画像であるか否かを判別するのに最も有効な弱判別器が選択される。最も有効な弱判別器の選択は、各サンプル画像の重みを考慮して行われる。この例では、各弱判別器の重み付き正答率が比較され、最も高い重み付き正答率を示す弱判別器が選択される(ステップST23)。すなわち、最初のステップST23では、各サンプル画像の重みは等しく1であるので、単純にその弱判別器によって画像が顔画像であるか否かが正しく判別されるサンプル画像の数が最も多いものが、最も有効な弱判別器として選択される。一方、後述するステップST25において各サンプル画像の重みが更新された後の2回目のステップST23では、重みが1のサンプル画像、重みが1よりも大きいサンプル画像、および重みが1よりも小さいサンプル画像が混在しており、重みが1よりも大きいサンプル画像は、正答率の評価において、重みが1のサンプル画像よりも重みが大きい分多くカウントされる。これにより、2回目以降のステップST23では、重みが小さいサンプル画像よりも、重みが大きいサンプル画像が正しく判別されることに、より重点が置かれる。
次に、それまでに選択した弱判別器の組合せの正答率、すなわち、それまでに選択した弱判別器を組み合わせて使用して(学習段階では、弱判別器は必ずしも線形に結合させる必要はない)各サンプル画像が顔画像であるか否かを判別した結果が、実際に顔画像であるか否かの答えと一致する率が、所定の閾値を超えたか否かが確かめられる(ステップST24)。ここで、弱判別器の組合せの正答率の評価に用いられるのは、現在の重みが付けられたサンプル画像群でも、重みが等しくされたサンプル画像群でもよい。所定の閾値を超えた場合は、それまでに選択した弱判別器を用いれば画像が顔であるか否かを十分に高い確率で判別できるため、学習は終了する。所定の閾値以下である場合は、それまでに選択した弱判別器と組み合わせて用いるための追加の弱判別器を選択するために、ステップST26へと進む。
ステップST26では、直近のステップST23で選択された弱判別器が再び選択されないようにするため、その弱判別器が除外される。
次に、直近のステップST23で選択された弱判別器では顔であるか否かを正しく判別できなかったサンプル画像の重みが大きくされ、画像が顔画像であるか否かを正しく判別できたサンプル画像の重みが小さくされる(ステップST25)。このように重みを大小させる理由は、次の弱判別器の選択において、既に選択された弱判別器では正しく判別できなかった画像を重要視し、それらの画像が顔画像であるか否かを正しく判別できる弱判別器が選択されるようにして、弱判別器の組合せの効果を高めるためである。
続いて、ステップST23へと戻り、前記したように重み付き正答率を基準にして次に有効な弱判別器が選択される。
以上のステップST23からS26を繰り返して、顔画像であるか否かを判別するのに適した弱判別器として、特定のペア群を構成する各ペアの所定の2点間の画素値の差分値の組合せに対応する弱判別器が選択されたところで、ステップST24で確認される正答率が閾値を超えたとすると、顔画像であるか否かの判別に用いる弱判別器の種類と判別条件とが確定され(ステップST27)、これにより学習を終了する。なお、選択された弱判別器は、その重み付き正答率が高い順に線形結合され、1つの判別器が構成される。また、各弱判別器については、それぞれ得られたヒストグラムを基に、画素値の差分値の組合せに応じてスコアを算出するためのスコアテーブルが生成される。なお、ヒストグラム自身をスコアテーブルとして用いることもでき、この場合、ヒストグラムの判別ポイントがそのままスコアとなる。
このようにして、顔サンプル画像群と非顔サンプル画像群とを用いた学習により、判別器が生成されるわけであるが、前記のように、判別したい顔の傾きおよび向き毎に異なる複数の判別器を生成するには、顔の各傾きおよび各向きに対応した複数種類の顔サンプル画像群を用意し、その顔サンプル画像群と非顔サンプル画像群とを用いた学習を顔サンプル画像群の種類毎に行うこととなる。
すなわち、本実施形態においては、顔の向きについては、正面、左横、右横の計3種類、傾きについては、回転角度0度から330度まで30度刻みの計12種類、合計36種類の顔サンプル画像群を用意する。
前記の複数の顔サンプル画像群が得られたら、顔サンプル画像群の種類毎に、その顔サンプル画像群と非顔サンプル画像群とを用いて、前記の学習を行うことにより、判別器群33を構成する複数の判別器を生成することができる。
このように、顔の向き毎に、かつ、顔の傾き毎に学習された複数の判別器を用いることにより、多種の傾きおよび向きの顔を含む顔画像を判別することが可能となる。
なお、前記の学習手法を採用する場合において、弱判別器は、特定のペア群を構成する各ペアの所定の2点間の画素値の差分値の組合せを用いて顔の画像と顔でない画像とを判別する基準を提供するものであれば、前記のヒストグラムの形式のものに限られずいかなるものであってもよく、例えば2値データ、閾値または関数等であってもよい。また、同じヒストグラムの形式であっても、図11の中央に示した2つのヒストグラムの差分値の分布を示すヒストグラム等を用いてもよい。
また、学習の方法としては前記手法に限定されるものではなく、ニューラルネットワーク等他のマシンラーニングの手法を用いることができる。
顔画像削除部34は、前記信頼性の高い顔画像が検出されて、検出すべき顔の傾きを所定の傾きに限定した場合、判別器群33によって検出されたすべての顔画像の候補Diの中の、検出すべき傾きを限定する前に検出された顔画像の候補のうち、限定した傾きとは異なる傾きの顔画像の候補を非顔画像として削除し、残った顔画像の候補を顔画像S2として決定するものである。このようにすれば、既に顔画像の候補として検出された画像のうち、真の顔画像である可能性が低い画像を排除することができ、誤検出を抑制することができる。
重複検出判定部40は、各解像度画像上で検出された顔画像S2の各々に対して、顔画像の位置関係から、その顔画像が、検出対象画像S0上では同一の顔を表す顔画像であって解像度の隣接する複数の解像度画像上で重複して検出されたものであるか否かを判定し、重複して検出されたと認められる複数の顔画像を1つにまとめる処理を行い、重複検出のない真の顔画像S3を出力するものである。
検出対象画像S0を多重解像度化して複数の解像度画像を得る際には、顔画像の検出漏れを防ぐため、隣接する解像度画像間での解像度のギャップは、あまり大きくとることができない。また、判別器は、通常、判別可能な顔の大きさとしてある程度の許容範囲を有している。このような場合、検出対象画像S0上の同一の顔が、隣接する複数の解像度画像において重複して検出される場合がある。重複検出判定部40による前記の処理は、このような重複検出を排除し、正確な検出結果を得るために行われる処理である。
次に、第1の実施形態による顔検出システム1における処理の流れについて説明する。
図13a,13bは、第1の実施形態による顔検出システム1における処理の流れを示したフローチャートである。これらの図に示すように、本システムに検出対象画像S0が供給されると(ステップST31)、多重解像度化部10が、この検出対象画像S0の画像サイズが所定のサイズに変換された画像S0′を生成し、この画像S0′から2の−1/3乗倍ずつサイズ(解像度)が縮小された複数の解像度画像からなる解像度画像群S1が生成される(ステップST32)。そして、正規化部20が、解像度画像群S1の各解像度化像に対して、上述の全体正規化処理と局所正規化処理を施し、正規化済みの解像度画像群S1′を得る(ステップST33)。
次に、顔検出部30の解像度画像選択部31が、解像度画像群S1′の中から画像サイズの小さい順、すなわち、S1′_M,S1′_M-1,・・・,S1′_1の順に所定の解像度画像S1′_mを1つ選択する(ステップST34)。サブウィンドウ設定部32は、選択された解像度画像S1′_m上でサブウィンドウを所定のピッチ、例えば2画素間隔で移動しながら順番に設定して所定サイズの部分画像Wを切り出す(ステップST35)。そして、検出すべき顔の傾きを所定の順序で1つ設定し(ステップST36)、すなわち、判別すべき顔の傾きがこの設定された顔の傾きである所定の判別器を選択し、切り出された現在の部分画像Wをこの選択された判別器に入力する(ステップST37)。部分画像Wが入力された判別器は、複数の弱判別器を用いて、部分画像Wがその判別器に対応する所定の傾きおよび向きの顔を含む顔画像である蓋然性を示すスコアscを算出し(ステップST38)、算出されたスコアscが第1の閾値Th1以上であるときに、この部分画像Wを顔画像の候補Diとして抽出する(ステップST39)。
サブウィンドウ設定部32は、顔画像の候補Diが抽出された場合に、検出すべき顔の傾きが既に限定されているか否かを判定し(ステップST40)、検出すべき顔の傾きが既に限定されていると判定された場合には、ステップST43に移行する。一方、検出すべき顔の傾きが未だ限定されていないと判定された場合には、さらに、その算出されたスコアscが第1の閾値Th1より大きい第2の閾値Th2以上であるか否かを判定する(ステップST41)。ここで、スコアscが第2の閾値Th2以上であると判定された場合には、これ以降に設定する検出すべき顔の傾きを、当該スコアが算出されたときの特定の顔の傾きに限定する設定を行う(ステップST42)。
そして、現在設定されている検出すべき顔の傾きが、順番として最後の傾きであるか否かを判定し(ステップST43)、現在設定されている顔の傾きが最後の傾きでないと判定された場合には、ステップST36に戻り、検出すべき顔の傾きとして次の順番となる新たな傾きを設定し、すなわち、判別すべき顔の傾きがこの設定された傾きである所定の判別器を選択し、切り出された現在の部分画像Wをこの選択された判別器に入力する。一方、現在設定されている検出すべき顔の傾きが最後の傾きであると判定された場合には、ステップST44に移行する。
ステップST44では、現在の部分画像Wが現在の解像度画像上で最後の部分画像であるか否かを判定する。ここで、現在の部分画像Wが最後の部分画像でないと判定された場合には、ステップST35に戻り、現在の解像度画像上で新たな部分画像Wを切り出し、検出処理を続行する。一方、現在の部分画像Wが最後の部分画像であると判定された場合には、ステップST45に移行する。
ステップST45では、顔像度画像選択部31が、現在の解像度画像が最後の解像度画像であるか否かを判定する。ここで、現在の解像度画像が最後の解像度画像でないと判定された場合には、ステップST34に戻り、新たな解像度画像を選択し、顔画像の検出処理を続行する。一方、現在の解像度画像が最後の解像度画像であると判定された場合には、ステップST46に移行する。
ステップST46では、顔画像削除部34が、検出すべき顔の傾きが限定された場合に、検出されたすべての顔画像の候補Diの中の、検出すべき顔の傾きが限定される前に検出された顔画像の候補のうち、限定された傾きとは異なる傾きの顔を含む顔画像の候補を非顔画像として削除するとともに、残りの顔画像の候補を顔画像S2として決定する。
そして、重複検出判定部40が、検出された顔画像S2の位置関係に基づいて、顔画像S2の各々に対して、その顔画像が、入力された検出対象画像S0上では同一の顔を表す顔画像であって解像度の隣接する複数の解像度画像上で重複して検出されたものであるか否かを判定し、重複して検出されたと認められる複数の顔画像を1つにまとめる処理を行い、重複検出のない顔画像S3を得る(ステップST47)。
図14は、前記のステップST34からステップST45までを繰り返すことにより、解像度画像がサイズの小さい順に選択されて、各解像度画像S1′_m上で部分画像Wが順次切り出され、顔検出が実施される様子を示した図である。
また、図15は、解像度画像S1′_m上で各部分画像W毎に検出すべき顔の傾きを変えながら顔検出を行い、途中、スコアscが第2の閾値Th2以上である信頼性の高い顔画像の候補Diが検出されたら、それ以降、検出すべき顔の傾きをその傾きに固定して、検出処理を続行する様子の一例を示した図である。なおこの例では、各部分画像W毎に、検出すべき顔の傾きを(1)0度,(2)330度,(3)30度,・・・,(10)180度,(11)150度,(12)210度の順序で判別してゆき、途中、検出すべき顔の傾きが(3)30度のとき、sc≧Th2で顔画像の候補Diが検出され、その後、検出すべき顔の傾きを(3)30度に固定して顔検出を続行した場合を示している。
このような第1の実施形態による顔検出システムによれば、入力画像上で検出すべき顔の位置および傾きを変えながら、検出すべき顔の位置および傾き毎に、当該位置における部分画像が当該傾きの顔を含む顔画像である蓋然性を示す指標値を算出し、その指標値が第1の閾値以上である部分画像を顔画像として抽出することにより、入力画像に含まれる顔画像を検出する顔検出処理において、算出された指標値が前記第1の閾値より大きい第2の閾値以上であったとき、その後の指標値の算出を、検出すべき顔の傾きを当該指標値が算出されたときの傾きに限定して行うようにしているので、誤検出されたものでなく真の顔画像とみなすことができる信頼性の高い顔画像が検出された場合には、同一画像上に含まれる顔の傾きは略同じ傾きに揃うことが多いという経験則に基づいて、顔画像が検出される可能性が低くその必要性が乏しいと考えられる、前記信頼性の高い顔画像の顔の傾きとは異なる顔の傾きに対する検出処理を省略することができ、顔検出処理の高速化を実現することが可能となる。
次に、本発明の第2の実施形態である顔検出システムについて説明する。
第2の実施形態による顔検出システムの構成およびその構成要素の機能は、基本的に、第1の実施形態による顔検出システムと同様であるが、サブウィンドウ設定部32の処理が若干異なるものである。
すなわち、本実施形態におけるサブウィンドウ設定部32は、第1の実施形態と同様に、切り出した1つの部分画像Wを所定の順序で選択された各判別器に順次入力してゆき、検出すべき全ての顔の位置および傾きについてスコア算出および判別を行うようにするのであるが、途中、いずれかの判別器によって算出されたスコアscが、第1の閾値Th1より大きい第2の閾値Th2以上であったとき、その後のスコア算出および判別を、検出すべき顔の傾きを“そのスコアが算出されたときの傾きが属するグループ内の傾き”に限定して行うべく、部分画像Wを入力する判別器を、判別すべき顔の傾きが“そのグループ内の傾き”である判別器に限定するものである。
この場合、第2の閾値Th2以上のスコアで顔画像の候補が検出された後、すなわち、信頼性の高い顔画像の候補が検出された後に限定する、検出すべき顔の傾きを、その信頼性の高い顔画像の候補の顔の傾きだけとせず、当該顔の傾きに近接する傾きにまで幅を広げて限定するようにしているので、入力画像上に被写体の姿勢等の違いによって顔の傾きが少しずれた複数の顔が存在する場合であっても、このような顔を検出できる確率が高くなる。
図16a,16bは、第2の実施形態による顔検出システム1における処理の流れを示したフローチャートである。これらの図に示すように、本システムに検出対象画像S0が供給されると(ステップST51)、多重解像度化部10が、この検出対象画像S0の画像サイズが所定のサイズに変換された画像S0′を生成し、この画像S0′から2の−1/3乗倍ずつサイズ(解像度)が縮小された複数の解像度画像からなる解像度画像群S1が生成される(ステップST52)。そして、正規化部20が、解像度画像群S1の各解像度化像に対して、上述の全体正規化処理と局所正規化処理を施し、正規化済みの解像度画像群S1′を得る(ステップST53)。
次に、顔検出部30の解像度画像選択部31が、解像度画像群S1′の中から画像サイズの小さい順、すなわち、S1′_M,S1′_M-1,・・・,S1′_1の順に所定の解像度画像S1′_mを1つ選択する(ステップST54)。サブウィンドウ設定部32は、選択された解像度画像S1′_m上でサブウィンドウを所定のピッチ、例えば2画素間隔で移動しながら順番に設定して所定サイズの部分画像Wを切り出す(ステップST55)。そして、検出すべき顔の傾きを前記グループ単位で設定し(ステップST56)、すなわち、判別すべき顔の傾きがこの設定されたグループに属する傾きである所定の判別器を選択し、切り出された現在の部分画像Wをこの選択された判別器に入力する(ステップST57)。部分画像Wが入力された判別器は、複数の弱判別器を用いて、部分画像Wがその判別器に対応する所定の傾きおよび向きの顔を含む顔画像である蓋然性を示すスコアscを算出し(ステップST58)、算出されたスコアscが第1の閾値Th1以上であるときに、この部分画像Wを顔画像の候補Diとして抽出する(ステップST59)。
サブウィンドウ設定部32は、顔画像の候補Diが抽出された場合に、検出すべき顔の傾きが既に限定されているか否かを判定し(ステップST60)、検出すべき顔の傾きが既に限定がされていると判定された場合には、ステップST63に移行する。一方、検出すべき顔の傾きが未だ限定されていないと判定された場合には、さらに、その算出されたスコアscが第1の閾値Th1より大きい第2の閾値Th2以上であるか否かを判定する(ステップST61)。ここで、スコアscが第2の閾値Th2以上であると判定された場合には、これ以降に設定する検出すべき顔の傾きを、現在設定されている顔の傾きのグループに限定する設定を行う(ステップST62)。
そして、現在設定されている検出すべき顔の傾きのグループが、順番として最後のグループであるか否かを判定し(ステップST63)、現在設定されているグループが最後のグループでないと判定された場合には、ステップST56に戻り、検出すべき顔の傾きのグループとして次の順番となる新たなグループを設定して、判別すべき顔の傾きがこの設定されたグループに属する傾きである所定の判別器を選択し、切り出された現在の部分画像Wをこの選択された判別器に入力する。一方、現在設定されているグループが最後のグループであると判定された場合には、ステップST64に移行する。
ステップST64では、現在の部分画像Wが現在の解像度画像上で最後の部分画像であるか否かを判定する。ここで、現在の部分画像Wが最後の部分画像でないと判定された場合には、ステップST55に戻り、現在の解像度画像上で新たな部分画像Wを切り出し、検出処理を続行する。一方、現在の部分画像Wが最後の部分画像であると判定された場合には、ステップST65に移行する。
ステップST65では、顔像度画像選択部31が、現在の解像度画像が最後の解像度画像であるか否かを判定する。ここで、現在の解像度画像が最後の解像度画像でないと判定された場合には、ステップST54に戻り、新たな解像度画像を選択し、顔画像の検出処理を続行する。一方、現在の解像度画像が最後の解像度画像であると判定された場合には、ステップST66に移行する。
ステップST66では、顔画像削除部34が、検出すべき顔の傾きがいずれかのグループに限定された場合に、検出されたすべての顔画像の候補Diの中の、検出すべき顔の傾きが限定される前に検出された顔画像のうち、限定された傾きとは異なる傾きの顔を含む顔画像の候補を非顔画像として削除するとともに、残りの顔画像の候補を顔画像S2として決定する。
そして、重複検出判定部40が、検出された顔画像S2の位置関係に基づいて、顔画像S2の各々に対して、その顔画像が、入力された検出対象画像S0上では同一の顔を表す顔画像であって解像度の隣接する複数の解像度画像上で重複して検出されたものであるか否かを判定し、重複して検出されたと認められる複数の顔画像を1つにまとめる処理を行い、重複検出のない顔画像S3を得る(ステップST67)。
図17は、解像度画像S1′_m上で各部分画像W毎に検出すべき顔の傾きをグループ単位で変えながら顔検出を行い、途中、スコアscが第2の閾値Th2以上である信頼性の高い顔画像の候補Diが検出されたら、それ以降、検出すべき顔の傾きのグループをその傾きが属するグループに限定して、検出処理を続行する様子の一例を示した図である。なおこの例では、各部分画像W毎に、検出すべき顔の傾きを第1のグループ((1)0度,(2)330度,(3)30度),・・・,第4のグループ((10)180度,(11)150度,(12)210度)の順序で判別してゆき、途中、検出すべき顔の傾きが(3)30度のとき、sc≧Th2で顔画像の候補Diが検出され、その後、検出すべき顔の傾きを(3)30度が属する第1のグループに限定して顔検出を続行した場合を示している。
このような第2の実施形態による顔検出システムによれば、入力画像上で検出すべき顔の位置および傾きを変えながら、検出すべき顔の位置および傾き毎に、当該位置における部分画像が当該傾きの顔を含む顔画像である蓋然性を示す指標値を算出し、その指標値が第1の閾値以上である部分画像を顔画像として抽出することにより、入力画像に含まれる顔画像を検出する顔検出処理において、検出すべき全ての顔の傾きを、近接する複数の異なる傾きからなる複数のグループに分割し、指標値の算出を当該グループ毎に行い、算出された指標値が前記第1の閾値より大きい第2の閾値以上であったとき、その後の指標値の算出を、検出すべき顔の傾きを当該指標値が算出されたときの傾きが属するグループ内の傾きに限定して行うようにしているので、誤検出されたものでなく真の顔画像とみなすことができる信頼性の高い顔画像が検出された場合には、同一画像上に含まれる顔の傾きは略同じ傾きに揃うことが多いという経験則に基づいて、顔画像が検出される可能性が低くその必要性が乏しいと考えられる、前記信頼性の高い顔画像の顔の傾きが属するグループとは異なるグループの顔の傾きに対する検出処理を省略することができ、顔検出処理の高速化を実現することが可能となる。
次に、本発明の第3の実施形態である顔検出システムについて説明する。
第1および第2の実施形態では、検出すべき顔の位置毎に検出すべき顔の傾きを変えて顔画像を検出するようにしているが、この第3の実施形態は、検出すべき顔の傾き毎に検出すべき顔の位置を変えて、顔画像を検出するようにしたものである。
この第3の実施形態による顔検出システムは、第2の実施形態の場合と同様、図1の示すように、多重解像度化部10、正規化部20、顔検出部30、重複検出判定部40により構成されており、さらに、顔検出部30は、解像度画像選択部31、サブウィンドウ設定部32、判別器群33、顔画像削除部34により構成されるものであるが、顔検出部30における処理が、第2の実施形態とは異なるものである。
この第3の実施形態において、判別器群33は、第2の実施形態と同様に、合計36種類(顔の傾きが、0度から330度まで30度刻みの計12種類、顔の向きが、正面、左横、右横の計3種類)の判別器により構成されており、検出すべき顔の傾きについても、図12に示すように、近接する複数の異なる傾きからなる複数のグループ、すなわち、検出すべき顔の傾きが0度、330度、30度である第1のグループ、検出すべき顔の傾きが90度、60度、120度である第2のグループ、検出すべき顔の傾きが270度、240度、300度である第3のグループ、検出すべき顔の傾きが180度、150度、210度である第4のグループに分割されている。
そして、サブウィンドウ設定部32が、検出すべき顔の傾きを第1のグループから第4のグループまでグループ単位で順番に設定し、設定された検出すべき顔の傾きに対応した判別器に、解像度画像上で切り出した部分画像Wを順次入力し、部分画像Wが入力された判別器が、その部分画像Wが顔画像であるか否かを判別して顔画像の候補Diを検出する。
このとき、ある顔の傾きのグループに対応した判別器により、信頼するに足るほど十分高いスコアである第2の閾値Th2以上のスコアが算出されて信頼性の高い顔画像の候補が検出された場合には、サブウィンドウ設定部32は、以後、部分画像Wに適用する順番がそれ以降となる傾きのグループに対応する判別器については適用しないようにする。すなわち、検出すべき顔の傾きをその信頼性の高い顔画像の候補における顔の傾きと略同じ傾きに固定する。このようにする理由は、上述のように、ひとつの画像上に複数の顔が含まれる場合には、各顔の傾き(画像上の回転位置)が揃う場合が多いという経験則に基づき、用いる順番がそれ以降となるグループの判別器に対応する顔の傾きについては、顔画像の検出を省略することができ、これにより、顔検出の高速化を図ることができるからである。ただし、首をかしげている顔等にも対処するため、±30度程度の傾きのバラツキを許容できるように、上記のように、検出すべき顔の傾きを近接する複数の異なる傾きからなるグループ毎にまとめ、グループ単位で顔画像を検出するようにしている。
具体例を挙げると、例えば、第1のグループに対応した判別器を用いて顔画像の候補を検出した後、第2のグループのうち検出すべき顔の傾きが60度である場合に対応する判別器を用いて顔画像の候補を検出しているときに、第2の閾値Th2以上のスコアが算出され、信頼性の高い顔画像の候補が検出された場合には、用いる順番がそれ以降となる第3、第4のグループに対応する判別器はその後用いない。各グループについての平均的な検出処理時間を1とすると、上記のような検出すべき顔の傾きの固定を行わない場合には、1×4方向=4の時間がかかるのに対し、上記のような検出すべき顔の傾きの固定を行う場合には、各グループに対応する判別器を適用して顔画像の候補が検出される確率が顔の傾きに依らず等しいと仮定する(すなわち、各グループについて顔が検出される確率が1/4であるとする)と、計算時間の期待値は、1×1/4+2×1/4+3×1/4+4×1/4=2.5となり、上記のような検出すべき顔の傾きの固定を行う場合の方が、検出処理時間が短くより高速である。
また、信頼性の高い顔画像の候補が検出された場合には、それ以前のグループに対応する判別器を用いて検出された顔画像の候補については、誤検出とみなして削除するようにする。上記のような検出すべき顔の傾きの固定を行う場合には、例えば、第2のグループに対応する判別器を用いた際に信頼性の高い顔画像の候補が検出されて、検出すべき顔の傾きの固定が行われたときには、第3、第4のグループに対応する判別器は用いず、これらのグループに属する傾きの顔については検出が行われないため、これらの傾きの顔については誤検出が発生することはない。しかし、第1のグループに対応する判別器を用いた際には、スコアが比較的低い顔画像の候補が検出されている可能性がある。それらは誤検出である可能性が高いと考えることができるため、第1のグループに対応する判別器による検出結果は誤検出とみなして削除することで、誤検出抑制が実現できる。
次に、本発明の第4の実施形態である顔検出システムについて説明する。
第4の実施形態による顔検出システムの構成およびその構成要素の機能は、基本的に、第1の実施形態による顔検出システムと同様であるが、解像度画像選択部31の処理が若干異なるものである。
すなわち、本実施形態では、第1の実施形態と同様に、解像度画像選択部31が多重解像度化部10により生成された複数の解像度画像を1つずつ選択し、その選択された解像度画像上でサブウィンドウ設定部32が切り出した1つの部分画像Wを所定の順序で選択された各判別器に順次入力してゆき、検出すべき全ての顔の位置および傾きについてスコア算出および判別を行うようにするのであるが、途中、いずれかの判別器によって算出されたスコアscが、第1の閾値Th1より大きい第2の閾値Th2以上であったとき、その後のスコア算出および判別を、検出すべき顔の大きさ、すなわち、“そのスコアが算出されたときの顔の大きさに対応する解像度画像”に限定して行うものである。
次に、第1の実施形態による顔検出システム1における処理の流れについて説明する。
図18a,18bは、第4の実施形態による顔検出システム1における処理の流れを示したフローチャートである。これらの図に示すように、本システムに検出対象画像S0が供給されると(ステップST71)、多重解像度化部10が、この検出対象画像S0の画像サイズが所定のサイズに変換された画像S0′を生成し、この画像S0′から2の−1/3乗倍ずつサイズ(解像度)が縮小された複数の解像度画像からなる解像度画像群S1が生成される(ステップST72)。そして、正規化部20が、解像度画像群S1の各解像度化像に対して、上述の全体正規化処理と局所正規化処理を施し、正規化済みの解像度画像群S1′を得る(ステップST73)。
次に、顔検出部30の解像度画像選択部31が、解像度画像群S1′の中から画像サイズの小さい順、すなわち、S1′_M,S1′_M-1,・・・,S1′_1の順に所定の解像度画像S1′_mを1つ選択することにより、検出すべき顔の大きさを選択する(ステップST74)。サブウィンドウ設定部32は、選択された解像度画像S1′_m上でサブウィンドウを所定のピッチ、例えば2画素間隔で移動しながら順番に設定して所定サイズの部分画像Wを切り出す(ステップST75)。そして、検出すべき顔の傾きを所定の順序で1つ設定し(ステップST76)、すなわち、判別すべき顔の傾きがこの設定された顔の傾きである所定の判別器を選択し、切り出された現在の部分画像Wをこの選択された判別器に入力する(ステップST77)。部分画像Wが入力された判別器は、複数の弱判別器を用いて、部分画像Wがその判別器に対応する所定の傾きおよび向きの顔を含む顔画像である蓋然性を示すスコアscを算出し(ステップST78)、算出されたスコアscが第1の閾値Th1以上であるときに、この部分画像Wを顔画像の候補Diとして抽出する(ステップST79)。
サブウィンドウ設定部32は、顔画像の候補Diが抽出された場合に、検出すべき顔の大きさが既に限定されているか否かを判定し(ステップST80)、検出すべき顔の大きさが既に限定されていると判定された場合には、ステップST43に移行する。一方、検出すべき顔の大きさが未だ限定されていないと判定された場合には、さらに、その算出されたスコアscが第1の閾値Th1より大きい第2の閾値Th2以上であるか否かを判定する(ステップST81)。ここで、スコアscが第2の閾値Th2以上であると判定された場合には、これ以降に設定する検出すべき顔の大きさを、当該スコアが算出されたときの特定の顔の大きさと当該大きさから1段階大きい大きさに限定する設定を行う(ステップST42)。
そして、現在設定されている検出すべき顔の傾きが、順番として最後の傾きであるか否かを判定し(ステップST83)、現在設定されている顔の傾きが最後の傾きでないと判定された場合には、ステップST76に戻り、検出すべき顔の傾きとして次の順番となる新たな傾きを設定し、すなわち、判別すべき顔の傾きがこの設定された傾きである所定の判別器を選択し、切り出された現在の部分画像Wをこの選択された判別器に入力する。一方、現在設定されている検出すべき顔の傾きが最後の傾きであると判定された場合には、ステップST84に移行する。
ステップST84では、現在の部分画像Wが現在の解像度画像上で最後の部分画像であるか否かを判定する。ここで、現在の部分画像Wが最後の部分画像でないと判定された場合には、ステップST75に戻り、現在の解像度画像上で新たな部分画像Wを切り出し、検出処理を続行する。一方、現在の部分画像Wが最後の部分画像であると判定された場合には、ステップST85に移行する。
ステップST85では、顔像度画像選択部31が、現在の解像度画像が最後の解像度画像であるか否かを判定する。すなわち、既にすべての解像度画像に対して顔検出処理を行ったか、もしくは、検出すべき顔の大きさがステップ82により限定されることにより、次に顔検出処理を行うべき解像度画像があるか否かを判定する。ここで、現在の解像度画像が最後の解像度画像でないと判定された場合には、ステップST74に戻り、新たな解像度画像を選択し、顔画像の検出処理を続行する。一方、現在の解像度画像が最後の解像度画像であると判定された場合には、ステップST86に移行する。
ステップST86では、顔画像削除部34が、検出すべき顔の大きさを限定する設定がなされた場合に、検出されたすべての顔画像の候補Diの中のうち、検出すべき顔の大きさが検出すべき顔の大きさを限定する設定がなされたときに選択されていた、検出すべき顔の大きさおよび当該大きさ±1段階異なる大きさとは異なる大きさの顔を含む顔画像の候補を非顔画像として削除するとともに、残りの顔画像の候補を顔画像S2として決定する。
そして、重複検出判定部40が、検出された顔画像S2の位置関係に基づいて、顔画像S2の各々に対して、その顔画像が、入力された検出対象画像S0上では同一の顔を表す顔画像であって解像度の隣接する複数の解像度画像上で重複して検出されたものであるか否かを判定し、重複して検出されたと認められる複数の顔画像を1つにまとめる処理を行い、重複検出のない顔画像S3を得る(ステップST87)。
このような第4の実施形態による顔検出システムによれば、入力画像上で検出すべき顔の位置および大きさを変えながら、検出すべき顔の位置および大きさ毎に、当該位置における部分画像が当該大きさの顔を含む顔画像である蓋然性を示す指標値を算出し、その指標値が第1の閾値以上である部分画像を顔画像として抽出することにより、入力画像に含まれる顔画像を検出する顔検出処理において、算出された指標値が前記第1の閾値より大きい第2の閾値以上であったとき、その後の指標値の算出を、検出すべき顔の大きさを当該指標値が算出されたときの大きさに限定して行うようにしているので、誤検出されたものでなく真の顔画像とみなすことができる信頼性の高い顔画像が検出された場合には、同一画像上に含まれる顔の大きさは略同じ大きさに揃うことが多いという経験則に基づいて、顔画像が検出される可能性が低くその必要性が乏しいと考えられる、前記信頼性の高い顔画像の顔の大きさとは異なる顔の大きさに対する検出処理を省略することができ、顔検出処理の高速化を実現することが可能となる。
以上、本発明の実施形態に係る顔検出システムについて説明したが、この顔検出システムのうちの本発明の顔検出装置に対応する部分における各処理をコンピュータに実行させるためのプログラムも、本発明の実施形態の1つである。また、そのようなプログラムを記録したコンピュータ読取可能な記録媒体も、本発明の実施形態の1つである。