以下に、添付図面を参照して、本発明に係る被写体検出手法の好適な実施例を詳細に説明する。なお、以下では、本発明に係る被写体検出手法の概要について図1を用いて説明した後に、本発明に係る被写体検出手法を適用した姿検出装置についての実施例を説明する。
図1は、本発明に係る被写体検出手法の概要を示す図である。なお、同図の(A)には、絞り込み段階における各処理について、同図の(B)には、詳細判定段階における各処理についてそれぞれ示している。
図1に示したように、本発明に係る被写体検出手法では、被写体が存在する可能性の高いエリア(候補エリア)を入力画像から抽出する絞り込み段階と、候補エリアごとに、被写体が存在するか否かを詳細に判定する詳細判定段階の2段階で姿検出を行う点に主たる特徴を有する。
また、本発明に係る被写体検出手法では、候補エリア内における被写体の存在確率の分布を示す確率分布画像を、入力画像から取得する特徴量を変えて複数種類生成し、これらを統合的に評価することによって最終的な判定結果を出力する点にも特徴を有する。
具体的には、図1の(A)に示したように、本発明に係る被写体検出手法では、入力画像を受け取ると、受け取った入力画像から第1の特徴量(特徴量A)を取得する(同図の(A−1)参照)。ここで、入力画像から取得される第1の特徴量(特徴量A)は、たとえば、Sobel特徴量とHaar特徴量との積であらわされるSobel−Haar特徴量である。
具体的には、本発明に係る被写体検出手法では、被写体の存在確率を算出するための判別器(最終判別器F)を、「LDAArray法」による学習によってあらかじめ導出しておき、最終判別器Fを用いて入力画像における被写体の存在確率を算出することで、かかる存在確率を画素値とする確率分布画像を生成する。
なお、「LDAArray法」とは、ブースティング学習手法として広く用いられているアダブースト(AdaBoost)手法を改良した手法である。具体的には、LDAArray法は、所定個数の未2値化判別器をLDA(Linear Discriminant Analysis)法を用いて集約することで集約判別器を導出し、導出した集約判別器に基づいて最終判別器を導出する。かかるLDAArray法の詳細については、図11以降を用いて後述することとする。
つづいて、本発明に係る被写体検出手法では、生成した確率分布画像から被写体が存在する可能性のある候補エリアを抽出する(図1の(A−3)参照)。具体的には、図1の(A)に示したように、確率分布画像中で白くあらわされた領域が被写体の存在確率の高い領域であり、かかる領域を含む所定の矩形領域を候補エリアとして抽出する。
たとえば、図1の(A)に示した場合には、候補エリアとしてエリア1〜エリア3が抽出されている。なお、その他の白くあらわされた領域についても同様に抽出されるものとする。
具体的には、図1の(B)に示したように、本発明に係る被写体検出手法では、まず、入力画像から第1の特徴量とは種類が異なる第2の特徴量(ここでは、特徴量Bおよび特徴量C)を取得する(図1の(B−1)参照)。
ここで、入力画像から取得される第2の特徴量(特徴量Bおよび特徴量C)は、たとえば、入力画像に対してGaborフィルタを掛けることによって取得されるGabor特徴量および入力画像に対してSobelフィルタを掛けることによって取得されるSobel特徴量である。
つづいて、本発明に係る被写体検出手法では、特徴量Bに基づいて各候補エリアの確率分布画像を生成するとともに(図1の(B−2a)参照)、特徴量Cに基づいて各候補エリアの確率分布画像を生成する(図1の(B−2b)参照)。このように、本発明に係る被写体検出手法では、図1の(A−3)において抽出した1つの候補エリアについて、異なる特徴量A〜Cに基づく複数種類の確率分布画像を生成する。
そして、本発明に係る被写体検出手法では、候補エリア内に被写体が存在するか否かをこれら複数種類の確率分布画像に基づいて判定する(図1の(B−3)参照)。たとえば、本発明に係る被写体検出手法では、候補エリア内における最大値および平均値を算出し、算出した最大値および平均値を用いた線形判別分析によってかかる候補エリア内に被写体が存在するか否かを判定する。
このように、本発明に係る被写体検出手法は、入力画像から第1の特徴量を取得し、取得された第1の特徴量に基づいて確率分布画像を生成して、生成された確率分布画像から候補エリアを抽出する。また、本発明に係る被写体検出手法は、入力画像から第1の特徴量とは種類が異なる第2の特徴量を取得し、取得した第2の特徴量ごとに、候補エリア内の確率分布画像をそれぞれ生成し、候補エリアごとに、第1の特徴量に基づく確率分布画像における候補エリア部分および第2の特徴量に基づく確率分布画像を用いて候補エリア内に被写体が存在するか否かを判定することとした。したがって、本発明に係る被写体検出手法によれば、被写体の検出処理に要する時間を短縮しつつ、被写体の検出精度を高めることができる。
なお、特徴量Bに基づく確率分布画像の生成処理、特徴量Cに基づく確率分布画像の生成処理および線形判別処理もLDAArray法による学習の学習結果を用いて行われるが、かかる点の詳細については、実施例において後述するものとする。
以下では、図1を用いて説明した被写体検出手法を、入力画像から人物の姿画像を検出する姿検出装置に対して適用した場合について説明する。また、以下では、人物の頭部および肩部を含んだバストショット画像を姿画像の一例として説明する。ただし、姿画像は、人物の他の部位を含んだ画像であってもよいし、全身画像であってもよい。また、本発明に係る被写体検出手法は、人の姿を検出対象とする場合に限らず、特定の被写体を検出対象とする場合についても同様に適用することができる。
図2は、本実施例に係る姿検出装置10の構成を示すブロック図である。ここで、図2に示したメモリ200は、不揮発性メモリやハードディスクドライブといった記憶デバイスで構成される記憶部であり、スキャナやカメラといった画像読取装置により読み取られた画像を記憶している。
なお、図2には、姿検出装置10の特徴を説明するために必要な構成要素のみを示しており、一般的な構成要素についての記載を省略している。
図2に示すように、姿検出装置10は、LDAArray演算部100と、記憶部11と、演算部12とを備えている。また、記憶部11は、Sobel−Haar用学習情報11aと、Gabor用学習情報11bと、Sobel用学習情報11cと、最終照合値算出用学習情報11dとを記憶する。また、演算部12は、Sobel−Haar特徴量抽出部12aと、マスク画像生成部12bと、候補エリア抽出部12cと、Gabor特徴量抽出部12dと、Sobel特徴量抽出部12eと、最終判定部12fとを備えている。
なお、ここでは、姿検出装置10が判定処理のみを行う場合について説明する。すなわち、姿検出装置10は、各種の学習情報を他の装置からあらかじめ取得しておくものとする。ただし、これに限ったものではなく、姿検出装置10は、学習処理および判定処理の両方を行う構成としてもよい。
図2に示したように、LDAArray演算部100は、Sobel−Haar特徴量抽出部12aからSobel−Haar特徴量を受け取り、受け取ったSobel−Haar特徴量に基づいて確率分布画像を生成してマスク画像生成部12b、候補エリア抽出部12cおよび最終判定部12fへ渡す処理を行う処理部である。
同様に、LDAArray演算部100は、Gabor特徴量抽出部12dからGabor特徴量を受け取るとともに、候補エリア抽出部12cから候補エリアを受け取り、受け取ったGabor特徴量に基づいて候補エリアの確率分布画像を生成する。同様に、LDAArray演算部100は、Sobel特徴量抽出部12eからSobel特徴量を受け取り、受け取ったSobel特徴量に基づいて候補エリアの確率分布画像を生成する。そして、LDAArray演算部100は、これらの確率分布画像を最終判定部12fへ渡す。
なお、LDAArray演算部100は、LDAArray法による学習を実行することで各種の学習情報を導出することも可能である。ここで、LDAArray法を用いた学習処理の概要について図3を用いて説明しておく。図3は、LDAArray法を用いた学習処理の概要を説明するための図である。
図3に示したように、LDAArray法を用いた学習処理(以下、単に「学習処理」と記載する)では、姿画像サンプルおよび非姿画像サンプルに対してSobelフィルタおよびHaarフィルタを掛けた画像について学習を行うことで、Sobel−Haar用学習情報11a、たとえば、Sobel−Haar特徴量に基づいて姿画像の存在確率を算出する場合に使用される最終判別器Fを導出することができる。
具体的には、SobelフィルタおよびHaarフィルタを掛けた姿画像サンプルおよび非姿画像サンプルが最も分離される最終判別器Fを学習によって導出する。
なお、本実施例では、図3に示したように、入力画像に対して方向が異なる4種類のSobelフィルタを掛けることとしている。そして、学習処理では、どの方向のSobelフィルタに対してどの種類のHaarフィルタをどの位置にどの大きさで掛ければ、姿画像サンプルおよび非姿画像サンプルが最も分離されるかといった情報も学習により決定する。なお、かかる情報は、最終判別器FとともにSobel−Haar用学習情報11aとして記憶部11に記憶される。
同様にして、学習処理では、姿画像サンプルおよび非姿画像サンプルに対してGaborフィルタを掛けたものについて学習を行うことで、Gabor用学習情報11bを導出する。また、LDAArray演算部100は、姿画像サンプルおよび非姿画像サンプルに対してSobelフィルタを掛けたものについて学習を行うことで、Sobel用学習情報11cを導出する(図2参照)。
また、学習処理では、Sobel−Haar用学習情報11a、Gabor用学習情報11bおよびSobel用学習情報11cを導出すると、これらの学習情報を用いた学習をさらに行うことによって最終照合値算出用学習情報11dを導出する。
具体的には、まず、複数の姿画像が様々な大きさで写り込んでいるサンプル画像(実際の入力画像に近いサンプル画像)と、姿画像を含まないサンプル画像(たとえば、非姿画像サンプル)とをそれぞれ複数枚用意する。
つづいて、入力画像からSobel−Haar特徴量を抽出してから最終照合値を算出するまでの処理手順(図9において後述するステップS101〜S114の処理手順)を、Sobel−Haar用学習情報11a、Gabor用学習情報11bおよびSobel用学習情報11cを用いて実際に実行し、上記のサンプル画像が最も分離されるような最終照合値の各係数を決定する。
なお、最終照合値は、後述するように、Sobel−Haar特徴量に基づく確率分布画像、Gabor特徴量に基づく確率分布画像およびSobel特徴量に基づく確率分布画像の最大値および平均値をそれぞれ算出し、算出した各値を用いて線形判別分析を行うことで得られるものである。すなわち、学習処理では、線形判別分析に用いる各要素(最大値および平均値)に対してどういった係数を掛ければ上記のサンプル画像が最も分離するか、言い換えれば、どの要素が重要でどの要素が重要でないかといった重み付けを学習によって決定する。そして、これらの係数は、最終照合値算出用学習情報11dとして記憶部11に記憶される。
なお、上記のLDAArray法による学習処理を実行するLDAArray演算部の具体的な構成および学習内容については、図11以降を用いて後述することとする。
また、本実施例では、Sobelフィルタ、GaborフィルタおよびSobel−Haarフィルタの3種類のフィルタを使用する。これら3種類のフィルタを使用するのは、低・中・高周波成分の特徴を抽出するためである。このように、姿検出装置10は、種類の異なる複数のフィルタを用いて入力画像から異なる特徴量を抽出する。
図2に戻り、記憶部11について説明する。記憶部11は、不揮発性メモリやハードディスクドライブといった記憶デバイスで構成される記憶部であり、Sobel−Haar用学習情報11aと、Gabor用学習情報11bと、Sobel用学習情報11cと、最終照合値算出用学習情報11dとを含んでいる。これらは、上述したように、LDAArray演算部100による学習によってあらかじめ決定された学習情報である。
演算部12は、入力画像から姿画像を検出する姿画像検出処理をLDAArray演算部100を利用して行う処理部である。なお、演算部12は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)、プログラムメモリ、RAM(Random Access Memory)などから構成された電子回路である。そして、CPUあるいはMPUは、所定のプログラムメモリ(図示せず)にあらかじめ格納された姿検出プログラムを読み出してRAM(図示せず)に展開することで、本実施例における判定処理時の特徴的な動作を実行する。
以下、判定処理時の説明を行う。Sobel−Haar特徴量抽出部12aは、図2に示したように、メモリ200から入力画像を取得するとともに、取得した入力画像からSobel−Haar特徴量を抽出してLDAArray演算部100へ渡す処理部である。
具体的には、Sobel−Haar特徴量抽出部12aは、入力画像に対してSobelフィルタおよびHaarフィルタを掛け、これによって得られた特徴量をSobel−Haar特徴量としてLDAArray演算部100へ渡す。
なお、各Sobelフィルタ処理後の画像に対して適用すべきHaarフィルタの種類や大きさあるいはHaarフィルタを掛ける場所等については、LDAArray法による学習によってSobel−Haar用学習情報11aとしてあらかじめ決められている。そして、Sobel−Haar特徴量抽出部12aは、かかるSobel−Haar用学習情報11aに基づいてSobel−Haar特徴量を抽出する。
一方、LDAArray演算部100は、Sobel−Haar特徴量抽出部12aからSobel−Haar特徴量を受け取ると、Sobel−Haar特徴量に基づく確率分布画像の生成処理を行う。
以下では、LDAArray演算部100による確率分布画像の生成処理について図4を用いて説明する。図4は、確率分布画像の生成処理について説明するための図である。なお、同図の(A)には、サンプル枠および入力画像の一例を、同図の(B)には、確率分布画像の生成処理の処理手順を、それぞれ示している。
ここで、サンプル枠とは、図3に示した姿画像サンプルおよび非姿画像サンプルのサイズと同サイズの枠である。なお、非姿画像サンプルのサイズは、姿画像サンプルのサイズに合わせている。また、同図の(A)に示したように、ここでは、入力画像中に3人の人物が姿画像サンプル中の人物のサイズと同等の大きさで写り込んでいるものとする。
図4の(B)に示したように、LDAArray演算部100は、まず、入力画像上の所定位置にサンプル枠をセットする(図4の(B−1)参照)。ここでは、入力画像の左上の頂点とサンプル枠の左上の頂点とが一致するようにセットされている。
つづいて、LDAArray演算部100は、記憶部11からSobel−Haar用学習情報11aに含まれる最終判別器(Sobel−Haar用判別器)を取り出し、取り出した最終判別器を用いてサンプル枠における姿画像の存在確率を算出する(図4の(B−2)参照)。
また、LDAArray演算部100は、算出した存在確率を、サンプル枠内の所定位置に位置する画素(代表画素)の画素値として決定する。なお、ここでは、サンプル枠の左上に位置する画素を代表画素とするが、代表画素の位置は、これに限ったものではない。
つづいて、LDAArray演算部100は、サンプル枠の位置を入力画像上で1画素ずらすとともに(図4の(B−3)参照)、ずらし後の位置において、姿画像の存在確率を再度算出する(図4の(B−4)参照)。
そして、LDAArray演算部100は、これらの処理を入力画像の全ての画素について繰り返すことで(図4の(B−5)参照)、姿画像の存在確率を各画素値とする確率分布画像を生成する。
このように、LDAArray演算部100が、姿画像サンプルおよび非姿画像サンプルのサイズをあらわすサンプル枠の位置を入力画像上で1画素ずつずらしていくことで、サンプル枠における姿画像の存在確率を各画素値とする確率分布画像を生成することとした。このため、入力画像のサイズとサンプル枠のサイズが異なる場合であっても、入力画像の全領域について被写体の存在確率を得ることができる。
なお、ここでは、サンプル枠の位置を1画素ずつずらすこととしたが、これに限ったものではなく、たとえば処理速度を上げたい場合には、複数画素ずつずらすこととしてもよい。
また、図11以降で後述するLDAArray演算部100の説明では、最終判別器Fが、1または0の2値の判別結果を出力するものとして説明するが、ここでは、2値化する前の値が存在確率として出力されるものとする。また、ここでは、便宜上、姿画像の存在確率を0〜1の間の数値であらわすものとする。
LDAArray演算部100は、確率分布画像を生成すると、生成した確率分布画像をマスク画像生成部12b、候補エリア抽出部12cおよび最終判定部12fへ渡す。なお、確率分布画像は、不揮発性メモリやハードディスクドライブといった所定の記憶部(たとえば、記憶部11)に記憶され、この記憶部を経由して、マスク画像生成部12b、候補エリア抽出部12cおよび最終判定部12fへ渡されるものとする。
図2に戻り、演算部12の構成要素について説明を続ける。マスク画像生成部12bは、LDAArray演算部100から確率分布画像を受け取ると、受け取った確率分布画像の各画素値を所定の閾値を用いて2値化することによってマスク画像を生成する処理部である。なお、所定の閾値は、不揮発性メモリやハードディスクドライブといった所定の記憶部(たとえば、記憶部11)にあらかじめ記憶されているものとする。
また、マスク画像生成部12bは、生成したマスク画像をGabor特徴量抽出部12dおよびSobel特徴量抽出部12eへ渡す処理も併せて行う。
ここで、マスク画像生成部12bによるマスク画像生成処理について図5を用いて説明する。図5は、マスク画像生成処理について説明するための図である。
図5に示したように、確率分布画像は、姿画像の存在確率が高い画素(すなわち、画素値が高い画素)ほど白く、姿画像の存在確率が低い画素(すなわち、画素値が低い画素)ほど黒くあらわしたグレースケール画像である。すなわち、姿画像は、確率分布画像の白い領域に存在する可能性が高いことになる。
マスク画像生成部12bは、確率分布画像の各画素値を所定の閾値と比較することによって、1または0の何れかの画素値を持つ画素で構成された2値のマスク画像を生成する。ここでは、所定の閾値を0.8とし、0.8以上の画素値を1へ変換し、0.8未満の画素値を0へ変換するものとする。
このようにして生成されたマスク画像は、Gabor特徴量抽出部12dおよびSobel特徴量12eによる特徴量抽出処理を高速化するために使用される。なお、かかる点については、後述する。
図2に戻り、候補エリア抽出部12cについて説明する。候補エリア抽出部12cは、LDAArray演算部100から確率分布画像を受け取ると、受け取った確率分布画像から姿画像の存在候補となる候補エリアを抽出してLDAArray部100へ渡す処理部である。
ここで、候補エリア抽出部12cによる候補エリア抽出処理について図6を用いて説明する。図6は、候補エリア抽出処理を説明するための図である。同図に示すように、候補エリア抽出部12cは、確率分布画像中の白い領域(すなわち、姿画像の存在確率が高い領域)を含む矩形領域を確率分布画像から抽出する。
たとえば、候補エリア抽出部12cは、確率分布画像を9×9の画素エリアごとに見ていき、かかる画素エリア内の画素値の平均値が所定の閾値よりも高いものを候補エリアとして抽出する。なお、ここでは、候補エリアを9×9の画素エリアとするが、これに限ったものではなく、候補エリアのサイズや形状は、任意に設定変更可能である。
また、候補エリア抽出部12cは、候補エリアの順位付けを所定の順位まで行う。具体的には、候補エリア抽出部12cは、候補エリア内の画素値の平均値が高いものほど順位が高くなるように順位付けを行う。また、ここでは、候補エリアの順位付けを1位から7位(候補エリア50a〜50g)まで行うものとする。
なお、ここでは、候補エリアの抽出および順位付けを画素エリア内の画素値の平均値に基づいて行うこととしたが、これに限ったものではなく、最大値等の他の要素に基づいて行うこととしてもよい。
図2に戻り、演算部12のGabor特徴量抽出部12dについて説明する。Gabor特徴量抽出部12dは、入力画像からGabor特徴量を抽出してLDAArray演算部100へ渡す処理部である。
具体的には、本実施例では、入力画像に対してフィルタサイズが5×5のGaborフィルタを8枚(90度ずつ、実部4枚、虚部4枚)それぞれ掛けることで、フィルタサイズ5×5についての実部の特徴量gk realおよび虚部の特徴量gk imag(k=1〜4)を得る。同様に、フィルタサイズが7×7のGaborフィルタを8枚(90度ずつ、実部4枚、虚部4枚)それぞれ掛けることで、フィルタサイズ7×7についての実部の特徴量gk realおよび虚部の特徴量gk imag(k=1〜4)を得る。
そして、Gabor特徴量抽出部12dは、これらを用いてGabor特徴量を得る。具体的には、Gabor特徴量は、フィルタサイズ(5×5および7×7)ごとに各画素5次元あり、1〜4次元は、
式(1−1)のようにあらわされ、5次元目は、式(1−2)のようにあらわされる。なお、kはGaborフィルタの種類、iは次元数、jは画素の番号である。
Sobel特徴量抽出部12eは、入力画像からSobel特徴量を抽出してLDAArray演算部100へ渡す処理部である。
なお、Gabor特徴量抽出部12dおよびSobel特徴量抽出部12eは、Gabor特徴量を抽出する対象となる入力画像内の対象領域およびSobel特徴量を抽出する対象となる入力画像内の対象領域を、マスク画像生成部12bから受け取ったマスク画像を参照することによって絞り込むことで、特徴量の抽出処理を高速化することとしている。なお、かかる点の詳細については、図7を用いて後述することとする。
また、LDAArray演算部100では、Gabor特徴量抽出部12dからGabor特徴量を受け取ると、Gaobor特徴量に基づく確率分布画像の生成処理を行う。同様に、LDAArray演算部100では、Sobel特徴量抽出部12eからSobel特徴量を受け取ると、Sobel特徴量に基づく確率分布画像の生成処理を行う。
ここで、Gabor特徴量抽出部12d、Sobel特徴量抽出部12eおよびLDAArray演算部100による動作について図7を用いて説明する。図7は、Gabor特徴量抽出部12d、Sobel特徴量抽出部12eおよびLDAArray演算部100の動作例を示した図である。
図7に示したように、Gabor特徴量抽出部12dは、マスク画像を参照しつつ、入力画像からGabor特徴量を抽出する(図7の(1a)参照)。
具体的には、Gabor特徴量抽出部12dは、マスク画像のうち、画素値が「1」の画素(すなわち、マスク画像中の白であらわされた画素)をGabor特徴量の抽出対象領域として絞り込む。言い換えれば、画素値が「0」の画素(すなわち、マスク画像中の黒であらわされた画素)は、抽出対象領域とはならない。そして、Gabor特徴量抽出部12dは、入力画像のうち、抽出対象領域のみからGabor特徴量を抽出する。
ただし、Gabor特徴量は、対象となる画素だけでなく、その周辺の画素(たとえば、5×5画素や7×7画素)も加味して求められる。このため、Gabor特徴量抽出部12dは、たとえば、画素値が「1」の画素が1点だけ存在するような領域については、かかる画素の周辺に位置する画素値が「0」の画素も特徴量演算に使用する。
一方、Sobel特徴量抽出部12eもGabor特徴量抽出部12dと同様に、マスク画像を参照しつつ、入力画像からSobel特徴量を抽出する(図7の(1b)参照)。すなわち、Sobel特徴量抽出部12eは、Sobel特徴量を抽出する対象となる入力画像内の対象領域を、マスク画像生成部12bから受け取ったマスク画像を参照することによって絞り込み、絞り込んだ対象領域のみからSobel特徴量を抽出する。
このように、マスク画像生成部12bが、LDAArray演算部100によって生成された確率分布画像を所定の閾値と比較することによって2値のマスク画像を生成し、Gabor特徴量抽出部12dおよびSobel特徴量抽出部12eが、それぞれGabor特徴量およびSobel特徴量を取得する対象となる入力画像内の対象領域をマスク画像に基づいて絞り込むこととしたため、Gabor特徴量およびSobel特徴量の取得に要する時間を短縮することができる。
また、LDAArray演算部100は、Gabor特徴量抽出部12dによって抽出されたGabor特徴量を用い、候補エリア抽出部12cから受け取った各候補エリアの確率分布画像をLDAArray法に基づき生成する(図7の(2a)参照)。具体的には、LDAArray演算部100は、Gabor用学習情報11bに含まれる最終判別器(Gabor用判別器)を記憶部11から取り出し、取り出した最終判別器を用いてサンプル枠における姿画像の存在確率を算出することで、Gabor特徴量に基づく確率分布画像を生成する。
同様に、LDAArray演算部100は、Sobel特徴量抽出部12eによって抽出されたSobel特徴量を用い、候補エリアの確率分布画像をLDAArray法に基づき生成する(図7の(2b)参照)。具体的には、LDAArray演算部100は、Sobel用学習情報11cに含まれる最終判別器(Sobel用判別器)を記憶部11から取り出し、取り出した最終判別器を用いてサンプル枠における姿画像の存在確率を算出することで、Sobel特徴量に基づく確率分布画像を生成する。
このように、LDAarray演算部100が、1つの姿画像をそれぞれ含んだ複数の姿画像サンプルと姿画像を含まない複数の非姿画像サンプルとを用いて特徴量の種類ごとに予め取得された学習情報に基づいて確率分布画像を生成することとしたため、特徴量の種類ごとに適切な確率分布画像を生成することができる。
また、LDAArray演算部100は、確率分布画像の生成処理を候補エリア抽出部12cによって抽出されたエリアについて実行する。すなわち、LDAArray演算部100は、各候補エリアのうち、姿画像の存在確率が高い候補エリアから順に確率分布画像を生成する。
この結果、図7に示したように、Gabor特徴量に基づく確率分布画像およびSobel特徴量に基づく確率分布画像は、それぞれ姿画像の存在確率が高い候補エリアから順に(エリア1→エリア2→エリア3…)生成されることとなる。
また、LDAArray演算部100は、Gabor特徴量に基づく確率分布画像およびSobel特徴量に基づく確率分布画像を生成すると、生成した確率分布画像を最終判定部12fへ渡す。
図2に戻り、最終判定部12fについて説明する。最終判定部12fは、Sobel−Haar特徴量を用いて生成された確率分布画像の候補エリア部分、Gabor特徴量を用いて生成された確率分布画像およびSobel特徴量を用いて生成された確率分布画像に基づいて候補エリア内に姿画像が存在するか否かを最終照合値算出用学習情報11dを用いて判定する処理部である。
具体的には、最終判定部12fは、各確率分布画像の最大値および平均値を算出し、これらの値を線形判別分析して得られる最終照合値を所定の閾値と比較することによって候補エリア内に姿画像が存在するか否かを判定する。
ここで、最終判定部12fによる最終判定処理について図8を用いて説明する。図8は、最終判定処理について説明するための図である。ここでは、同図に示したように、Gabor特徴量に基づく確率分布画像における姿画像の存在確率の最大値をmax1とし、平均値をave1とする。同様に、Sobel特徴量に基づく確率分布画像における姿画像の存在確率の最大値および平均値をそれぞれmax2、ave2とし、Sobel−Haar特徴量に基づく確率分布画像における姿画像の存在確率の最大値および平均値をそれぞれmax3、ave3とする。
図8に示したように、最終判定部12fは、まず、各確率分布画像の最大値max1〜max3および平均値ave1〜ave3を求める。そして、最終判定部12fは、これらの値および記憶部11に記憶された最終照合値算出用学習情報11dを用いて最終照合値を算出する。
具体的には、最終照合値は、「a・max1+b・ave1+c・max2+d・ave2+e・max3+f・ave3」であらわされる。ここで、各最大値max1〜max3および各平均値ave1〜ave3に対して掛けられる係数a〜fが、最終照合値算出用学習情報11dに相当し、上述したようにLDAArray演算部100による学習によってあらかじめ決定されている。
また、最終判定部12fは、最終照合値を算出すると、算出した最終照合値と所定の閾値とを比較し、最終照合値が所定の閾値以上であれば、該当する候補エリア内に姿画像が存在すると判定する。そして、最終判定部12fは、これらの処理を各候補エリアについて実行し、候補エリアごとの判定結果を出力する。
このように、最終判定部12fが、候補エリア内における最大値および平均値を確率分布画像ごとに算出し、算出された最大値および平均値を用いた線形判別分析によって当該候補エリア内に被写体が存在するか否かを判定することとしたため、比較的少ない演算量で、被写体が存在するか否かを精度良く判定することができる。
なお、ここでは、演算量の削減のため、候補エリアの最大値および平均値を算出することとしたが、これに限ったものではなく、最大値および平均値以外の要素を算出することとしてもよい。
また、最終判定部12fは、各候補エリアに対する最終判定処理を、LDAArray演算部100によって確率分布画像が生成された順に実行する。すなわち、姿画像が存在する確率が高い候補エリアから順に最終判定処理が実行されるため、最終判定処理を効率的に行うことができる。すなわち、たとえば、入力画像に複数人が含まれている場合に、上位数人のみを探索する処理を容易に行うことができる。
なお、ここでは、姿画像が存在する確率が高い候補エリアから順に最終判定処理を実行することとしたが、これに限ったものではなく、最終判定部12fは、各候補エリア内に被写体が存在するか否かを所定の順序で(たとえば、左上から順に)判定することとしてもよい。
次に、姿検出装置10が実行する処理手順について図9を用いて説明する。図9は、姿検出装置10の処理手順を示すフローチャートである。
図9に示したように、姿検出装置10では、Sobel−Haar特徴量抽出部12aが、入力画像からSobel−Haar特徴量を抽出し(ステップS101)、LDAArray演算部100が、記憶部11からSobel−Haar用学習情報11aを読み出し、Sobel−Haar特徴量およびSobel−Haar用学習情報11a(Sobel−Haar用判別器)を用い、LDAArray法で確率分布画像を生成する(ステップS102)。
つづいて、姿検出装置10では、マスク画像生成部12bが、確率分布画像を所定の閾値と比較することで、2値のマスク画像を生成するとともに(ステップS103)、候補エリア抽出部12cが、確率分布画像から候補エリアの抽出および候補エリアの順位付けを行う(ステップS104)。
つづいて、Gabor特徴量抽出部12dおよびSobel特徴量抽出部12eは、マスク画像を参照しつつ、入力画像のうち、マスクが「1」に設定されている部分についてGabor特徴量およびSobel特徴量を抽出する(ステップS105)。また、姿検出装置10では、ステップS104において抽出された候補エリアを順位が高い順に1つ選択する(ステップS106)。
そして、LDAArray演算部100は、選択した1つの候補エリアについて、Gabor特徴量およびGabor用学習情報11b(Gabor用判別器)を用い、LDAArray法で候補エリアの確率分布画像を生成する(ステップS107)。同様に、LDAArray演算部100は、Sobel特徴量およびSobel用学習情報11c(Sobel用判別器)を用い、LDAArray法で候補エリアの確率分布画像を生成する(ステップS108)。
つづいて、LDAArray演算部100は、ステップS106において選択した候補エリアの確率分布画像、ステップS107において生成されたGabor特徴量に基づく確率分布画像およびステップS108において生成されたSobel特徴量に基づく確率分布画像からそれぞれ最大値max1〜max3および平均値ave1〜ave3を算出する(ステップS109)。また、LDAArray演算部100は、算出した最大値max1〜max3および平均値ave1〜ave3および記憶部11に記憶された最終照合値算出用学習情報11dを用いて最終照合値を算出する(ステップS110)。
そして、姿検出装置10では、最終判定部12fが、ステップS110において算出された最終照合値が所定の閾値以上であるか否かを判定し(ステップS111)、所定の閾値以上であると判定した場合には(ステップS111、Yes)、ステップS106において選択した候補エリアに姿画像があると判定する(ステップS112)。一方、最終判定部12fは、最終照合値が所定の閾値未満であると判定した場合には(ステップS111、No)、選択した候補エリアに姿画像がないと判定する(ステップS113)。
また、姿検出装置10は、ステップS112,S113の処理を終えると、全ての候補エリアについてステップS106〜S113の処理を行ったか否かを判定し(ステップS114)、未処理の候補エリアがある場合には(ステップS114、No)、未処理の候補エリアについてステップS106〜S113の処理を繰り返す。一方、全ての候補エリアについて処理済であると判定した場合には(ステップS114、Yes)、姿検出装置10は、処理を終える。
ところで、これまでは、姿画像サンプル中の人物と同等の大きさの人物が入力画像に写り込んでいる場合について説明してきた。しかしながら、入力画像には、姿画像サンプル中の人物よりも大きく写りこんでいる人物や小さく写りこんでいる人物が混在しているのが通常である。
このように、入力画像に写りこんでいる人物のサイズが姿画像サンプル中の人物のサイズと異なる場合、入力画像から姿画像を適切に検出することができないおそれがある。そこで、入力画像を様々なサイズに拡大・縮小するとともに、各サイズの入力画像についてそれぞれ絞り込み処理および詳細判定処理を行い、最終判定結果をサイズごとに出力することとしてもよい。
以下では、かかる場合について図10を用いて説明する。図10は、入力画像のサイズ変更を行う場合について説明するための図である。なお、同図の(A)には、入力画像が拡大または縮小される様子を、同図の(B)には、サイズごとの最終判定結果の一例をそれぞれ示している。
また、以下では、姿検出装置10の演算部12が、サイズ変更部(図示せず)をさらに備えるものとする。サイズ変更部は、入力画像を受け取ると、受け取った入力画像を規定のサイズに変更したうえで、Sobel−Haar特徴量抽出部12a、Gabor特徴量抽出部12dおよびSobel特徴量抽出部12eへ渡す処理部である。
これにより、図10の(A)に示したように、図9に示したステップS101〜S109の処理が、サイズ変更部によるサイズ変更後の各入力画像について行われることとなる。
ここで、図10の(A)に示したように、入力画像を縮小することで、入力画像に大きく写りこんでいた人物のサイズが、姿画像サンプルの人物のサイズに近づくこととなり、入力画像を拡大することで、入力画像に小さく写りこんでいた人物のサイズが、姿画像サンプルの人物のサイズに近づくこととなる。
たとえば、入力画像のサイズを0.5倍に縮小した場合に、入力画像から抽出された候補エリアのエリア3に対応する人物のサイズが、姿画像サンプルの人物のサイズと同等となる。同様に、入力画像のサイズを1.5倍に拡大した場合に、入力画像から抽出された候補エリアのエリア1に対応する人物のサイズが、姿画像サンプルの人物のサイズと同等となる。なお、入力画像のサイズを変更しない場合には、入力画像から抽出された候補エリアのエリア2に対応する人物のサイズが、姿画像サンプルの人物のサイズと同等であるものとする。
この結果、図10の(B)に示したように、入力画像のサイズを変更しなかった場合に姿画像が存在しないと判定された候補エリアのエリア1およびエリア3が、入力画像をそれぞれ1.5倍および0.5倍に変更することによって、姿画像が存在すると正しく判定されることとなる。
このように、サイズ変更部が、入力画像を拡大または縮小することで当該入力画像のサイズを変更し、Sobel−Haar特徴量抽出部によるSobel−Haar特徴量抽出処理以降の各処理では、サイズ変更部によるサイズ変更後の入力画像を取り扱い、最終判定部が、候補エリア内に姿画像が存在するか否かを複数のサイズごとにそれぞれ判定することとしたため、サイズがそれぞれ異なる姿画像が入力画像中に写りこんでいる場合であっても、それぞれの姿画像を適切に検出することができる。
したがって、本発明に係る姿検出手法によれば、姿画像の検出精度を高めることが可能である。
ここで、上述してきた実施例では、絞り込み段階において、入力画像からSobel−Haar特徴量を取得することとしたが、これに限ったものではなく、絞り込み段階で取得する特徴量は、ロバーツフィルタやロビンソンフィルタなどの他のフィルタを掛けて得られる特徴量であってもよい。ただし、比較的演算量が少ないSobel−Haar特徴量を用いることで、絞込み段階における演算量を軽減することができる。
また、詳細判定段階において入力画像から取得する特徴量についても、Gabor特徴量およびSobel特徴量に限ったものではなく、他の特徴量であってもよい。ただし、Sobel−Haar特徴量に対して、Gabor特徴量およびSobel特徴量を組み合わせることで、最も高い検出精度を得ることができる。
このように、絞り込み段階において取得される特徴量が、Sobel特徴量とHaar特徴量との積をあらわすSobel−Haar特徴量であり、詳細判定段階において取得される特徴量が、それぞれGabor特徴量およびSobel特徴量であることとしたため、絞り込み段階での特徴量の取得に要する演算量を軽減しつつ、姿画像の検出精度をさらに高めることができる。
上述してきたように、本実施例では、Sobel−Haar特徴量抽出部が、入力画像からSobel−Haar特徴量を取得し、LDAArray部が、Sobel−Haar特徴量に基づいて入力画像内における姿画像の存在確率の分布を示す確率分布画像を生成し、候補エリア抽出部12cが、確率分布画像から姿画像の存在候補となる候補エリアを抽出する。
また、本実施例では、Gabor特徴量抽出部およびSobel特徴量抽出部が、入力画像からSobel−Haar特徴量とは種類が異なるGabor特徴量およびSobel特徴量をそれぞれ取得し、LDAArray部が、Gabor特徴量およびSobel特徴量ごとに、候補エリア内における確率分布画像をそれぞれ生成し、最終判定部が、Sobel−Haar特徴量を用いて生成した確率分布画像の候補エリア部分、Gabor特徴量を用いて生成した確率分布画像およびSobel特徴量を用いて生成した確率分布画像に基づいて候補エリア内に姿画像が存在するか否かを判定することとした。
したがって、本実施例によれば、姿画像の検出処理に要する時間を短縮しつつ、姿画像の検出精度を高めることができる。
また、本実施例では、LDAArray法を用いて確率分布画像を生成することとしたため、確率分布画像の生成に伴う演算量を削減しつつ、確率分布画像を精度良く生成することができる。
なお、LDAArray演算部100は、後述する式(4−1)および式(4−2)に示す学習終了時の係数や特徴量の関数等を学習情報として記憶しておき、判定時には、これらを読み出して判別器を構築することとしてもよい。
また、上述してきた実施例では、入力画像から姿画像を検出する場合について説明してきたが、本発明に係る被写体検出手法は、姿画像の検出に限らず、紙幣識別や貨幣識別のような画像識別にも適用することができる。
以下では、図2に示したLDAArray演算部100の具体的構成および学習内容について説明する。なお、以下では、ブースティング学習手法として広く用いられているアダブースト(AdaBoost)手法について図20を用いて、LDAArray法の概要について図11を用いて、それぞれ説明した後に、図12を用いてLDAArray法を適用したLDAArray演算部300についての説明を行うこととする。
図20は、アダブースト手法の概要を示す図である。アダブースト手法は、YES/NO、正/負といった2値化された判別結果を出力する2値化判別器を学習結果に基づいて多数組み合わせることによって、正答率が高い最終判別器を導出する学習手法である。
ここで、組合せ対象となる判別器は、正答率が50%を若干超える程度の弱い判別器h(以下、「弱判別器h」と記載する)である。すなわち、アダブースト手法では、正答率が低い弱判別器hを多数組み合わせることで、正答率が高い最終判別器H(強判別器H)を学習によって導出する。
まず、アダブースト手法に用いられる数式について説明する。なお、以下では、姿画像のサンプル群をクラスA、非姿画像のサンプル群をクラスBとし、クラスAとクラスBとを判別する場合について説明することとする。
アダブースト手法において、学習回数をs(1≦s≦S)、各特徴量をx、特徴量xに対応する判別器をh-s(x)、判別器hs(x)の重み係数をαsとすると、最終判別器H(x)は、
式(2−1)のようにあらわされる。
ここで、関数sign()は、かっこ内の値が0以上であれば+1、0未満であれば−1とする2値化関数である。また、式(2−2)に示したように、判別器hs(x)は、−1または+1の値をとる2値化判別器であり、クラスAと判別した場合には+1の値をとり、クラスBと判別した場合には−1の値をとる。
アダブースト手法では、式(2−1)に示した判別器hs(x)を1回の学習で1つずつ選択するとともに、選択した判別器hs(x)に対応する重み係数αsを逐次決定していく処理を繰り返すことで、最終判別器H(x)を導出する。以下では、アダブースト手法についてさらに詳細に説明する。
学習サンプルは、{(x1,y1),(x2,y2),…,(xN,yN)}とあらわされる。ここで、xiは各特徴量であり、yiは{−1,+1}(上記したクラスAは+1、上記したクラスBは−1)である。また、Nは、判別対象とする特徴量の総数である。
また、Ds(i)を、i番目の学習サンプルに対してs回目の学習を行った場合のサンプル重みとすると、Ds(i)の初期値は、式「D1(i)=1/N」であらわされる。そして、各特徴量xiに対応する判別器をhs(xi)、各判別器の重み係数をαsとすると、アダブースト手法に用いられる各数式は、
となる。ここで、εsは判別器hsごとの誤り率である。
以下では、図20を用いながら、上記した式(3−1)〜式(3−4)についてそれぞれ説明する。同図の(1)に示したように、1回目の学習では、サンプル重みD1(i)を1/Nとしたうえで、判別器hsごとの学習サンプル分布を算出する。このようにすることで、同図に示したように、クラスAの分布とクラスBの分布とが得られる。
そして、図20の(2)に示したように、式(3−1)を用いて判別器hsごとの誤り率(たとえば、クラスAのサンプルをクラスBと誤判別した確率)εsを算出し、最も誤り率εsが低い、すなわち、最も良好な判別を行った判別器hsを最良判別器として選択する。
つづいて、図20の(3−1)に示したように、式(3−2)を用いて判別器hs(図20の(2)で選択された最良判別器)の重み係数αsを決定する。そして、図20の(3−2)に示したように、式(3−3)を用いて次回の学習における各学習サンプル重みDs+1を更新する。なお、式(3−3)の分母であるZsは、式(3−4)であらわされる。
このようにして、次回の学習サンプル重みDs+1が更新されると、図20の(4)に示したように、判別器hsごとの学習サンプル分布は、図20の(1)に示した分布とは異なるものとなる。そして、学習回数sをカウントアップし、図20の(4)で算出された分布で図20の(1)に示した分布を更新したうえで、図20の(2)以降の処理を繰り返す。
ここで、式(3−3)は、図20の(2)で選択された最良判別器が、次回の学習では、誤り率が0.5である判別器となるように次回の学習サンプル重みDs+1を決定することを示している。すなわち、最良判別器が最も苦手とする学習サンプル重みを用いて次の最良判別器を選択する処理を行うことになる。
このように、アダブースト手法は、学習を繰り返すことで、判別器hs(x)の選択と各判別器hs(x)の重み係数αsの最適化とを行い、最終的には、正答率が高い最終判別器H(x)を導出することができる。しかし、式(2−2)に示したように、アダブースト手法によって選択される判別器hs(x)は、2値化判別器であり、判別器内部で保持する値を最終的には2値に変換したうえで出力する。すなわち、2値変換に伴う判断分岐が必要となり、演算量がかさむという問題がある。
なお、リアルブースト(RealBoost)手法では、多値判別器を用いるので、アダブースト手法で発生する判断分岐による演算量増大の問題を回避することができるが、多値判別器が保持する多値それぞれに対応した重み係数を保持する必要があるため、メモリ使用量が増大するという問題がある。
そこで、アダブースト手法を改良することで、判断分岐による演算量増大という問題を回避するとともに、リアルブースト手法のように大きなメモリを必要とすることなく識別精度を向上させる「LDAArray法」を考案した。以下では、かかるLDAArray法の概要について図11を用いて説明する。
図11の(A)は、図20を用いて説明したアダブースト手法の概要であり、同図の(B)は、LDAArray法の概要である。また、同図の(A)に示したhiは2値化判別器を、同図の(B)に示したfiは、2値化判別器hiが所定の閾値で2値化する前の関数である未2値化判別器を、それぞれあらわしている。
図11の(A)に示したように、アダブースト手法では、1回目の学習で、誤り率が最小の2値化判別器をh1として決定する(図11の(A−1)参照)。そして、2値化判別器h1の重み係数を決定し(図11の(A−2)参照)、次回の学習では、h1が、誤り率が0.5である判別器となるように、各サンプルに対するサンプル重みを更新する(図11の(A−3)参照)。
そして、判別器の選択、選択した判別器に対する重み係数の決定およびサンプル重みの更新を繰り返すことで、最終判別器を導出する。
一方、図11の(B)に示したように、LDAArray法では、所定個数の未2値化判別器fiをLDA(Linear Discriminant Analysis)法を用いて集約することで集約判別器を導出し、導出した1個または複数個の集約判別器に基づいて1個の最終判別器を導出する点に主たる特徴がある。
具体的には、所定の手順に従って未2値化判別器fiを集約し(図11の(B−1)参照)、LDAを用いて集約判別器を導出する(図11の(B−2)参照)。また、導出した集約判別器の重み係数を決定するとともに(図11の(B−3)参照)、各サンプルに対するサンプル重みを更新する(図11の(B−4)参照)。
そして、集約判別器の選択、選択した集約判別器に対する重み係数の決定およびサンプル重みの更新を繰り返すことで、1個の最終判別器を導出する。このように、LDAArray法では、所定数の未2値化判別器fiを後述の式(4−2)で説明するように線形結合するので、判別処理に伴う演算量を削減することができる。
すなわち、排除対象(上記したクラスB)をある程度分離することができるようになるまで未2値化判別器fiを集約するので、無駄な判断分岐(図11の(A)に示した2値化判別器hiが必ず行う2値変換に伴う判断分岐)を削減することができる。また、図11の(A)に示したアダブースト手法では考慮されていなかった特徴量間の関係を、あらたな特徴として捉えることができるので、判別精度を向上させることができる。
図12は、LDAArray演算部300のLDAArrayによる学習時の構成の一例を示すブロック図である。同図に示すように、LDAArray演算部300は、制御部311と、姿画像特徴量抽出部312aと、非姿画像特徴量抽出部312bと、記憶部313とを備えている。また、制御部311は、アダブースト処理部311aと、集約判別器導出部311bと、集約重み係数決定部311cと、サンプル重み更新部311dと、最終判別器決定部311eとをさらに備えている。そして、記憶部313は、姿画像サンプル313aと、非姿画像サンプル313bと、集約判別器候補313cと、集約判別器313dと、集約重み係数313eと、学習情報313fとを記憶する。
姿画像特徴量抽出部312aは、記憶部313から姿画像サンプル313aを読み出し、各種特徴量を抽出してアダブースト処理部311aへ出力する。また、非姿画像特徴量抽出部312bは、記憶部313から非姿画像サンプル313bを読み出し、各種特徴量を抽出してアダブースト処理部311aへ出力する。
なお、ここでは、LDAArray演算部300が、姿画像サンプル313aおよび非姿画像サンプル313bを記憶するとともに、姿画像特徴量抽出部312aおよび非姿画像特徴量抽出部312bを用いてこれらのサンプルから各種特徴量を抽出する場合について説明する。ただし、これに限ったものではなく、LDAArray演算部300は、図2に示したように、各種特徴量を外部(図2に示した場合には、Sobel−Haar特徴量抽出部12a、Gabor特徴量抽出部12dおよびSobel特徴量抽出部12e)から取得するようにしてもよい。
また、図12では、LDAArray演算部300が、制御部311、姿画像特徴量抽出部312a、非姿画像特徴量抽出部312bおよび記憶部313を備える場合について示したが、制御部311内の各処理部、姿画像特徴量抽出部312a、非姿画像特徴量抽出部312bを、図2に示した演算部12内に配置するとともに、記憶部313が記憶する各情報を、図2に示した記憶部11内に記憶させることとしてもよい。
制御部311は、上記したLDAArray法を用いた学習によって最終判別器を導出する処理を行う処理部である。なお、制御部311は、例えば、CPUやMPU、プログラムメモリ、RAMなどから構成された電子回路である。そして、CPUあるいはMPUは、所定のプログラムメモリ(図示せず)にあらかじめ格納されたLDAArrayプログラムを読み出してRAM(図示せず)に展開することで、本実施例に特徴的な動作を実行する。
アダブースト処理部311aは、図20を用いて既に説明したアダブースト手法を実行する処理を行う処理部である。また、アダブースト処理部311aは、姿画像特徴量抽出部312aおよび非姿画像特徴量抽出部312bによって姿画像サンプル313aおよび非姿画像サンプル313bからそれぞれ抽出されたSobel−Haar特徴量、Gabor特徴量、Sobel特徴量の各種特徴量を用いて学習を繰り返し、候補の2値化判別器から2値化判別器を選択する。そして、アダブースト処理部311aは、選択した2値化判別器の重み係数αsを式(3−2)を用いて決定する。この過程を繰り返し、選択した2値化判別器と決定した重み係数との組を集約判別器導出部311bに渡す処理を併せて行う。
そして、アダブースト処理部311aは、サンプル重み更新部311dから更新後のサンプル重みを受け取った場合には、受け取ったサンプル重みでサンプル重みDs(図20参照)を更新する。つづいて、アダブースト処理部311aは、2値化判別器の選択を最初からやり直す。すなわち、図20に示した学習回数sを1としたうえで、2値化判別器の選択処理等を繰り返す。
ここで、アダブースト処理部311aの学習に用いられる姿画像サンプル313aおよび非姿画像サンプル313bから各種特徴量を抽出する姿画像特徴量抽出部312aおよび非姿画像特徴量抽出部312bの動作について図13を用いて説明しておく。図13は、姿有サンプル画像(姿画像)と姿の無いサンプル画像(非姿画像)から特徴量を抽出する処理を示す図である。ここで、姿画像サンプル313aとして記憶部313に記憶されている画像の一つであり、非姿画像は、非姿画像サンプル313bとして記憶部313に記憶されている画像の一つである。
なお、同図の(A)には、姿画像から特徴量を取得する処理の流れを、同図の(B)には、背景画像のような非姿画像から特徴量を取得する処理の流れを、それぞれ示している。また、同図に示した各姿画像および各非姿画像は、事前の拡大/縮小処理によってサイズ合わせがなされているものとする。
図13の(A)に示したように、姿画像を所定サイズのブロックに分割し(図13の(A−1)参照)、各ブロックについて、エッジ方向とその強度(太さ)、全体強度といった特徴量を抽出する(図13の(A−2)参照)。
たとえば、姿画像の左肩に相当するブロック161については、上向きエッジ強度162a、右上向きエッジ強度162b、右向きエッジ強度162c、右下向きエッジ強度162d、ブロック161の全体強度162eといった特徴量が抽出される。なお、162a〜162eに示した矢印の太さは強度をあらわしている。また、図13に示した162a〜162eは、Gabor特徴量の一例であるが、姿画像特徴量抽出部312aおよび非姿画像特徴量抽出部312bは、Sobel−Haar特徴量やSobel特徴量といった他の特徴量の抽出も行う。
このように、各ブロックについて特徴量を抽出する処理を姿画像全体について繰り返すことで、1枚の姿画像についての特徴量が揃うことになる。そして、同様の処理を他の複数枚の姿画像に対しても行う。複数の姿画像サンプル313aから姿画像の特徴量が得られる。
また、図13の(B)に示したように、非姿画像についても姿画像と同様のブロック分割を行い(図13の(B−1)参照)、各ブロックについて、姿画像と同様の手順で特徴量を抽出する(図13の(B−2)参照)。たとえば、姿画像のブロック161に対応する位置のブロック163についても、上向きエッジ強度164a、右上向きエッジ強度164b、右向きエッジ強度164c、右下向きエッジ強度164d、ブロック163の全体強度164eといった特徴量が抽出される。
このように、各ブロックについて特徴量を抽出する処理を非姿画像全体について繰り返すことで、1枚の非姿画像についての特徴量が揃うことになる。そして、同様の処理を他の複数枚の非姿画像に対しても行う。複数の非姿画像サンプル313bから非姿画像の特徴量が得られる。
集約判別器導出部311bは、上記したLDAArray法における集約判別器313dを導出する処理を行う処理部である。具体的には、この集約判別器導出部311bは、アダブースト処理部311aによって所定個数の2値化判別器が選択されると、選択された2値化判別器と決定された重み係数との組を受け取り、これらの2値化判別器をLDAによって結合することで、集約判別器を導出する処理を行う処理部である。
また、集約判別器導出部311bは、集約判別器の候補となる集約判別器候補313c(kt)を2値化判別器の個数に応じてそれぞれ導出し、導出した集約判別器候補313cの中から1つの集約判別器313d(Kt)を決定する処理を併せて行う。
ここで、LDAArray法について各数式を用いて説明しておく。集約判別器Ktの導出回数をあらわす集約カウンタをt(1≦t≦T)、特徴量をx、特徴量xに対応する集約判別器をKt(x)、所定のオフセット値をthとすると、最終判別器F(x)は、
式(4−1)のようにあらわされる。ここで、関数sign()は、かっこ内の値が0以上であれば+1、0未満であれば−1とする2値化関数である。なお、オフセット値thは、図15を用いて後述するoffsettの算出手順と同様の手順で算出することができる。
また、未2値化判別器をfts(x)、LDAによって算出されるfts(x)の重みをβts、所定のオフセット値をoffsettとすると、集約判別器Kt(x)は、式(4−2)のような線形結合式であらわされる。
なお、オフセット値offsettの算出手順については、図15を用いて後述する。また、式(4−2)のオフセット値offsettは必須ではなく、オフセット値offsettを省略したうえで、式(4−1)のオフセット値thで最終的な調整を行うこととしてもよい。
ここで、未2値化判別器fs(i)と、2値化判別器hs(i)との関係は、
式(5)であらわされる。すなわち、未2値化判別器fs(i)を関数sign()で2値化したものが2値化判別器hs(i)となる。
LDAarray法では、集約カウンタtごとに、複数の集約判別器候補の中から集約判別器Kt(x)を1つずつ選択するとともに、選択した集約判別器Kt(x)に対応する重み係数αtを逐次決定していく処理を繰り返すことで、最終判別器F(x)を導出する。以下では、LDAarray法についてさらに詳細に説明する。
学習サンプルは、{(x1,y1),(x2,y2),…,(xN,yN)}とあらわされる。ここで、xiは各特徴量であり、yiは{−1,+1}(上記したクラスAは+1、上記したクラスBは−1)である。また、Nは、判別対象とする特徴量の総数である。
また、Lt(i)を、i番目の学習サンプルについて、t回目の判別器集約を行った場合のサンプル重みとすると、Lt(i)の初期値は、式「L1(i)=1/N」であらわされる。そして、特徴量xiに対応する集約判別器をKt(xi)とすると、LDAarray法に用いられる各数式は、
となる。
LDAarray法では、式(6−1)を用いて集約判別器Ktごとの誤り率(たとえば、クラスAのサンプルをクラスBと誤判別した確率)εtを算出する。そして、式(6−1)で算出された誤り率εtおよび式(6−2)を用いて集約判別器Ktの重み係数αtを決定する。さらに、式(6−3)を用いて次回の集約における各学習サンプル重みLt+1を更新する。なお、式(6−3)の分母であるZtは、Lt+1を「ΣLt+1(i)=1」とするための規格化因子であり、式(6−4)であらわされる。
ここで、式(6−3)は、集約判別器Ktが、次回の集約では、誤り率が0.5である判別器となるように次回の学習サンプル重みLt+1を決定することを示している。
このようにして、次回の集約における学習サンプル重みLt+1が更新されると、LDAarray法では、学習サンプル重みLtを、アダブースト処理における学習サンプル重みDsへコピーする。そして、アダブースト処理では、LDAArray法によって更新された学習サンプル重みDsを初期値として判別器選択処理を繰り返すことになる。
図12の説明に戻り、集約判別器導出部311bについての説明をつづける。集約判別器導出部311bは、最小LDA次元数(min_lda_dim)および最大LDA次元数(max_lda_dim)という2つの次元数を有している。ここで、「次元数」とは、判別器の数を表し、たとえば、特徴量の数に相当させる。また、上記した2つの次元数(最小LDA次元数および最大LDA次元数)としては、処理時間と精度との兼ね合いから導出した値(経験値)を用いることができる。
そして、アダブースト処理部311aによって選択された判別器の個数(s)が最小LDA次元数(min_lda_dim)以上となると、LDAによって集約判別器候補313cを導出する。そして、集約判別器候補313cの導出処理を、判別器の個数(s)が最大LDA次元数(max_lda_dim)と等しくなるまで繰り返す。
たとえば、最小LDA次元数(min_lda_dim)が2であり、最大LDA次元数(max_lda_dim)が5である場合には、2個の判別器を集約した集約判別器候補313c、3個の判別器を集約した集約判別器候補313c、4個の判別器を集約した集約判別器候補313c、5個の判別器を集約した集約判別器候補313cをそれぞれ導出し、導出した集約判別器候補313cの中から1つの集約判別器313dを選択する。
ここで、集約判別器導出部311bが行う集約判別器候補算出処理の概要について図14を用いて説明しておく。図14は、集約判別器候補を算出する処理を示す図である。なお、同図では、最小LDA次元数(min_lda_dim)が4であり、最大LDA次元数(max_lda_dim)が20である場合について示している。
集約判別器導出部311bは、アダブースト処理部311aによって選択された判別器の個数(s)が4、すなわち、最小LDA次元数(min_lda_dim)と等しくなると、クラスA(姿画像サンプル313a)およびクラスB(非姿画像サンプル313b)を用いてLDAによる判別分析を行う。このようにして、sが4である場合の集約判別器の候補kt4(x)を算出する。そして、同様の処理をsが20、すなわち、最大LDA次元数(max_lda_dim)と等しくなるまで繰り返す。
ここで、図14に示した各オフセット値(offsetts)の算出手順について図15を用いて説明しておく。図15は、集約判別器候補313cのオフセットを算出する処理を示す図である。なお、同図に示すグラフ181a、182aおよび183aは、クラスA(姿画像サンプル313a)の確率密度分布をあらわすグラフを、同図に示すグラフ181b、182bおよび183bは、クラスB(非姿画像サンプル313b)の確率密度分布をあらわすグラフを、それぞれ示している。また、同図に示した横軸は各集約判別器候補(ks)の値を、同図に示した縦軸は確率密度を、それぞれあらわしている。
図15に示したように、offsett4は、クラスAのグラフ181aとクラスBのグラフ181bとが、交差する点に対応する横軸値として算出される。すなわち、offsett4は、姿画像を非姿画像と誤認識した確率と非姿画像を姿画像と誤認識した確率とが等しいように調整される。また、誤り率εt4は、同図に示した斜線部の面積として算出される。
なお、図15に示したように、LDA次元数(s)の変化にともなって、offsettsの値も変化する。このため、集約判別器導出部311bは、LDA次元数(s)ごとにoffsettsをそれぞれ算出する。
集約判別器導出部311bは、図14および図15に示した処理を行うことで、各集約判別器の候補kts(x)を、それぞれ算出する。つづいて、集約判別器導出部311bは、算出した集約判別器候補313cの各集約判別器候補kts(x)の中から1つを選択し、集約判別器Ktsとして記憶部313へ記憶する処理を行う。具体的には、集約判別器候補kts(x)のnを記憶する。ここで、かかる選択処理の一例について図16を用いて説明しておく。
図16は、集約判別器選択の一例を示す図である。なお、同図には、最小LDA次元数(min_lda_dim)から最大LDA次元数(max_lda_dim)までの間で1回だけLDA関数を実行させると仮定した場合におけるスキャン総面積(クラスBなどのサンプル画像に対するスキャン総面積)の変化をあらわすグラフ191を示している。また、同図では、グラフ191が、LDA次元数(s)が6のときに最小値192をとる場合について例示している。
たとえば、LDA関数を実行させるLDA次元数(s)をnとすると、スキャン総面積は、n×画像面積+(max_lda_dim−n)×(n回の全面スキャンで排除できなかったエリアの面積)となる。このようにして算出されたスキャン総面積とnとの関係は、たとえば、グラフ191のようになる。
ここで、図16では、LDA次元数(s)が6の場合に最小値192をとる場合について示したが、集約カウンタtが変化すると、スキャン総面積が最小となる次元数も変化する。このため、集約判別器導出部311bは、集約カウンタtに対応する集約判別器候補313cを用いて図16に示した判定処理を行い、スキャン総面積が最小となるLDA次元数(s)の候補ktsを、集約判別器Ktとして選択する。
なお、図16では、スキャン総面積が最小となるLDA次元数(s)を有する候補ktsを、集約判別器Ktとして選択する場合について示したが、LDA次元数(s)を固定することとしてもよい。このようにすることで、LDA処理の処理負荷が集約カウンタtによって変化しないので、並列処理が可能となる。したがって、処理時間の短縮を図ることができる。
図12の説明に戻り、集約重み係数決定部311cについて説明する。集約重み係数決定部311cは、集約判別器導出部311bが集約判別器Ktを導出した場合に、集約判別器Ktに対する重み係数(集約重み係数αt)を決定し、集約重み係数313eとして記憶部313へ記憶させる処理を行う処理部である。なお、集約重み係数αtは、上記した式(6−2)を用いて算出される。
サンプル重み更新部311dは、集約判別器導出部311bによって導出された集約判別器Ktおよび集約重み係数決定部311cによって決定された集約重み係数αtに基づいて次回の集約における各学習サンプル重みLt+1を更新する処理(式(6−3)参照)を行う処理部である。また、サンプル重み更新部311dは、学習サンプル重みLtを、アダブースト処理部311aが用いる学習サンプル重みDsへコピーする処理を行う処理部でもある。
このようにして、集約カウンタtをカウントアップしながら、集約カウンタtに対応する集約判別器313dおよび集約重み係数313eが記憶部313へ記憶されていく。そして、最終判別器決定部311eは、集約判別器313d(Kt)および集約重み係数313e(αt)を用いた最終判別器Fの正答率が所定値以上となったことを条件として集約カウンタtを用いたループを終了する。なお、最終判別器決定部311eは、集約対象とする2値化判別器(hs)がない場合にもかかるループを終了する。
また、最終判別器決定部311eは、ループ終了時における最終判別器Fを学習情報313fとして記憶部313へ記憶する。すなわち、学習情報313fには、Sobel−Haar用判別器、Gabor用判別器およびSobel用判別器がそれぞれ記憶されることとなる。なお、かかる学習情報313fは、図2および3に示した姿検出装置10の記憶部11にも記憶されることとなる。
ここで、制御部311によって行われる集約判別器導出処理についてまとめておく。図17は、集約判別器Ktを導出する処理を示す図である。同図に示したように、制御部311は、LDA候補(集約判別器候補)kt抽出を行い(図17の(A)参照)、学習1回目の集約判別器K1を決定する(図17の(B)参照)。
そして、集約判別器K1を決定したならば、つづいて、集約判別器K2の決定処理を開始し(図17の(C)参照)、集約判別器K2を決定する(図17の(D)参照)。同様にして、集約判別器Ktの決定処理を開始し(図17の(E)参照)、集約判別器Ktを決定する。なお、図17では、集約判別器K1のLDA次元数が4で、集約判別器K2のLDA次元数が5である場合について示しているが、このように、後続のKになるほどLDA次元数が増加するとは限らない。
図12の説明に戻り、記憶部313について説明する。記憶部313は、不揮発性メモリやハードディスクドライブといった記憶デバイスで構成される記憶部であり、姿画像サンプル313aと、非姿画像サンプル313bと、集約判別器候補313cと、集約判別器313dと、集約重み係数313eと、学習情報313fとを記憶する。なお、記憶部313に記憶される各情報については、制御部311の説明において既に説明したので、ここでの説明は省略する。
次に、LDAArray演算部300が実行する処理手順について図18を用いて説明する。図18は、LDAArray演算部300が実行する処理手順を示すフローチャートである。同図に示すように、最小LDA次元(min_lda_dim)および最大LDA次元(max_lda_dim)を設定し(ステップS301)、集約カウンタ(t)を1とするとともに(ステップS302)、アダブーストカウンタ(s)を1とする(ステップS303)。なお、集約カウンタ(t)およびアダブーストカウンタ(s)を用いて図17における判別器fをあらわすと、ft−sとなる。
そして、アダブースト処理部311aは、最良判別器(hs)を選択し(ステップS304)、ステップS304で選択された最良判別器(hs)の重み係数(αs)を算出するとともに(ステップS305)、各サンプルに対するサンプル重み(Ds)を更新する(ステップS306)。なお、このアダブースト処理の処理内容は、一般的に広く知られているものを使用することができるため、ここでの詳細説明は割愛する。
つづいて、集約判別器導出部311bは、アダブーストカウンタ(s)が最小LDA次元数(min_lda_dim)以上であるか否かを判定し(ステップS307)、アダブーストカウンタ(s)が最小LDA次元数(min_lda_dim)未満である場合には(ステップS307,No)、アダブーストカウンタ(s)をカウントアップし(ステップS310)、ステップS304以降の処理を繰り返す。
一方、アダブーストカウンタ(s)が最小LDA次元数(min_lda_dim)以上である場合には(ステップS307,Yes)、未2値化判別器(f1〜fs)についてLDAを行い、集約判別器候補(ks)を算出する(ステップS308)。
つづいて、アダブーストカウンタ(s)が最大LDA次元数(max_lda_dim)と等しいか否かを判定し(ステップS309)、アダブーストカウンタ(s)が最大LDA次元数(max_lda_dim)と等しくない場合には(ステップS309,No)、アダブーストカウンタ(s)をカウントアップし(ステップS310)、ステップS304以降の処理を繰り返す。
一方、アダブーストカウンタ(s)が最大LDA次元数(max_lda_dim)と等しい場合には(ステップS309,Yes)、集約判別器(Kt)を決定する処理を行う(ステップS311)。なお、ステップS311の詳細な処理手順については、図19を用いて後述することとする。
つづいて、集約重み係数決定部311cは、集約判別器(Kt)の重み係数(αt)を決定し(ステップS312)、サンプル重み更新部311dは、サンプル重み(Lt)を更新する(ステップS313)。そして、最終判別器決定部311eは、最終判別器(F)による判別結果に基づいてクラスAとクラスBとの分離が十分であるか、または、未集約判別器がないか、のいずれかの条件を満たすか否かを判定する(ステップS314)。
そして、ステップS314の判定条件を満たした場合には(ステップS314,Yes)、最終判別器(F)を決定して処理を終了する。一方、ステップS314の判定条件を満たさなかった場合には(ステップS314,No)、集約判別器導出部311bが用いるサンプル重み(Lt)をアダブースト処理部311aが用いるサンプル重み(Ds)へコピーする(ステップS315)。そして、集約カウンタ(t)をカウントアップし(ステップS316)、ステップS303以降の処理を繰り返す。
次に、図18のステップS311に示した集約判別器決定処理の詳細な処理手順について図19を用いて説明する。図19は、集約判別器決定処理の処理手順を示すフローチャートである。同図に示すように、集約判別器導出部311bは、LDA次元数(s)の初期値を最小LDA次元数(min_lda_dim)とし(ステップS401)、全面スキャン総面積(s×全面積)を算出する(ステップS402)。
つづいて、s回の全面スキャンで排除できなかったエリアの面積を残存面積としたうえで(ステップS403)、部分スキャン総面積((max_lda_dim−s)×残存面積)を算出する(ステップS404)。そして、総スキャン面積(全面スキャン総面積+部分スキャン総面積)を算出する(ステップS405)。
つづいて、sが最大LDA次元数(max_lda_dim)と等しいか否かを判定し(ステップS406)、sが最大LDA次元数(max_lda_dim)と等しくない場合には(ステップS406,No)、sをカウントアップしたうえで(ステップS407)、ステップS402以降の処理を繰り返す。一方、sが最大LDA次元数(max_lda_dim)と等しい場合には(ステップS406,Yes)、総スキャン面積が最も小さいLDA次元数(s)に対応する集約判別器候補(ks)を集約判別器(Kt)とし(ステップS408)、処理を終了する。
このようにLDAArray法によれば、アダブースト手法における判断分岐による演算量増大という問題を回避するとともに、リアルブースト手法のように大きなメモリを必要とすることなく識別精度を向上させることができる。そして、図14に示した式ktsのうち決定された式Ktsが学習情報313fとして記憶される。