情報処理装置及び情報処理方法
【課題】簡易に過学習を検出し、効率的に学習を行うことを目的とする。
【解決手段】記憶装置に保持されている学習データに基づいて、弱判別器について順次、学習を実行する学習手段と、学習の際に算出する弱判別器に対する評価値の推移に基づいて、過学習か否かを判定する判定手段と、過学習であると判定された場合、新たな学習データを追加し、弱判別器についての学習を継続させる制御手段とを有することによって課題を解決する。
【解決手段】記憶装置に保持されている学習データに基づいて、弱判別器について順次、学習を実行する学習手段と、学習の際に算出する弱判別器に対する評価値の推移に基づいて、過学習か否かを判定する判定手段と、過学習であると判定された場合、新たな学習データを追加し、弱判別器についての学習を継続させる制御手段とを有することによって課題を解決する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置及び情報処理方法に関する。
【背景技術】
【0002】
近年、画像データ中の特定オブジェクトを検出・識別する様々な手法が提案され実用に供されている。
その中でも、非特許文献1に開示されている手法はその高速性から注目を集めている。非特許文献1の手法は、ブースティング学習アルゴリズムにより生成する複数の弱判別器からなる強判別器をカスケードに接続し、強判別器毎に打ち切り判定(検出対象位置に対する処理の強制終了)を行いながら処理を進める手法である。図1は、非特許文献1に開示されている方式の構成概念を示す図である。31〜3mは学習によって生成する判別器(True:検出対象オブジェクト有り、False:検出対象オブジェクト無し)であり、処理負荷の低い複数の単純な判別フィルタにより構成される。それぞれの判別フィルタは判別能力がそれほど高く無いことから、弱判別器と呼ばれる。また、複数の弱判別器の結果を後述する信頼度値に基づいて統合した判別器(31〜3m)は強判別器と呼ばれる。以下説明のため、ブースティング学習アルゴリズムにより生成した複数の弱判別器からなる強判別器をブースティング判別器という。図2は、ブースティング判別器31〜3mの内部構成を示す図である。411〜41nは、弱判別器、420は、弱判別器の判定結果を統合して判定する閾値処理器である。
【0003】
非特許文献1では矩形フィルタと呼ばれる極めて単純な判別フィルタで弱判別器411〜41nを構成する。図3は、矩形フィルタの例を示す図である。51a〜51cは、検出対象となる画像ブロックであり、画像全体から切り出した所定サイズ(検出対象のオブジェクトを含む大きさ)の部分領域画像である。図4において61は、検出対象の画像データ全体を示し、62は、51a〜51cに対応する部分領域画像を示す。以下、部分領域画像を検出ウインドウという。弱判別器は、検出ウインドウを所定のステップサイズで走査し、検出ウインドウ単位に識別を行うことで画像中の特定オブジェクトの存在有無とその位置とを決定する。52a〜52cは、矩形フィルタの例である。弱判別器は、白領域と黒領域で示すそれぞれの領域の画素値総和の差分を検出ウインドウ内の局所領域特徴としてオブジェクトの存在を判定する。
【0004】
図2及び図3に示す様に、ブースティング判別器は特性の異なる弱判別器を多数使用することで最終的に判別性能の高い識別機能(強判別)を実現する。
特許文献2ではこのようなブースティング判別器を効率的に学習するため手法が提案されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平8−329031号公報
【特許文献2】特開2005−284348号公報
【非特許文献】
【0006】
【非特許文献1】Viola,P.;Jones,M."Rapid object detection using a boosted cascade of simple features". Proc. of Computer Vision and Pattern Recognition, 2001−12, IEEE Computer Society.p.511−518.
【発明の概要】
【発明が解決しようとする課題】
【0007】
ブースティング判別器は数百から数千の弱判別器を学習により生成する必要があるため、学習に膨大な時間を要する。
特許文献2では、既に学習済みの判別器の出力に基づく判別基準値(後述する累積スコア値)に応じて、所定の条件を満たす学習データを学習データセットから順次削除する手法を提案している。特許文献2の手法では、過学習(汎化性能の劣化)を防止するために、予め十分に多数の学習データを用意し、更に弱判別器の学習毎に大量の検定データを使用して性能を評価する必要がある。また、特許文献2の手法では、評価の結果、過学習の状態であると判定した場合、手動で学習データの追加や入れ替えを行う必要があった。
【0008】
本発明はこのような問題点に鑑みなされたもので、簡易に過学習を検出し、効率的に学習を行うことを目的とする。
【課題を解決するための手段】
【0009】
そこで、本発明は、記憶装置に保持されている学習データに基づいて、弱判別器について順次、学習を実行する学習手段と、前記学習の際に算出する弱判別器に対する評価値の推移に基づいて、過学習か否かを判定する判定手段と、前記判定手段により過学習であると判定された場合、新たな学習データを追加し、前記学習手段に弱判別器についての学習を継続させる制御手段と、を有することを特徴とする。
【発明の効果】
【0010】
本発明によれば、簡易に過学習を検出し、効率的に学習を行うことができる。
【図面の簡単な説明】
【0011】
【図1】非特許文献1に開示されている方式の構成概念を示す図である。
【図2】ブースティング判別器31〜3mの内部構成を示す図である。
【図3】矩形フィルタの例を示す図である。
【図4】検出対象の画像データの一例を示す図である。
【図5】情報処理装置の構成の一例を示す図である。
【図6】判別処理部203の詳細を説明する図である。
【図7】パラメータメモリ910の内容の一例を説明するための図(その1)である。
【図8】矩形フィルタの一例を示す図である。
【図9】SATデータから矩形領域を算出する一例を説明する図である。
【図10】検出処理時の動作を説明する図である。
【図11】複数の弱判別器で構成する1つのブースティング判別器を学習する場合の例を説明するフローチャート(その1)である。
【図12】検出対象データのフィルタ出力ヒストグラム1102と非検出対象データのフィルタ出力ヒストグラム1101とを示す図である。
【図13】弱判別器の段数(順に生成する弱判別器の番号)とその信頼度の推移との一例を説明する図である。
【図14】過学習判定の様子を模式的に説明する図である。
【図15】弱判別器の廃棄の例を説明する図である。
【図16】複数の弱判別器で構成する1つのブースティング判別器を学習する場合の例を説明するフローチャート(その2)である。
【図17】平均累積スコアの推移を模式的に示す図である。
【図18】第3の実施形態における判別処理部203の構成を示す図である。
【図19】検出処理時の動作を説明する図(その2)である。
【図20】複数の弱判別器で構成する1つのブースティング判別器を学習する場合の例を説明するフローチャート(その3)である。
【図21】閾値の決定法を説明するための累積ヒストグラムの例を模式的に説明する図である。
【図22】パラメータメモリ910の内容の一例を説明するための図(その2)である。
【図23】弱判別器の段数と対応する打ち切り閾値の推移の例を説明する図である。
【図24】複数の弱判別器で構成する1つのブースティング判別器を学習する場合の例を説明するフローチャート(その4)である。
【発明を実施するための形態】
【0012】
以下、本発明の実施形態について図面に基づいて説明する。
【0013】
<実施形態1>
図5は、情報処理装置の構成の一例を示す図である。情報処理装置は、画像データ中の特定のオブジェクト(画像パターン)を検出する機能を有し、更に、情報処理装置内で検出のための判別器を学習する機能を有する。
図5において201は画像入力部である。画像入力部201は、光学系、CCD又はCMOSセンサー等の光電変換デバイス及びセンサーを制御するドライバー回路/ADコンバーター/各種画像補正を司る信号処理回路/フレームバッファ等により構成される。なお、ここで、CCDとは、Charge−Coupled Devicesの略である。また、COMSとは、Complimentary Metal Oxide Semiconductorの略である。
【0014】
202は、前処理部であり、検出処理を効果的に行うための各種前処理を実行する。より具体的に説明すると、前処理部202は、色変換処理/コントラスト補正処理/SAT(Sammed Area Table)データの生成等、各種画像データ変換をハードウェアで処理する。判別処理部203は、前処理部202の出力を参照して所定のオブジェクトを判別する機能を有する。判別処理部203は、学習によって生成したパラメータに基づいてブースティング判別処理を実行する。206は、DMAC(Direct Memory Access Controller)である。DMAC206は、画像バス204上の各処理部間及び画像バス204上のデバイスとCPU(Central Processing Unit)バス207上のRAM210/ROM209との間のデータ転送等を司る。
【0015】
205は、ブリッジであり、画像バス204とCPUバス207との間のバスブリッジ機能を提供する。208は、CPUであり、実施形態に係る処理を実行すると共に本情報処理装置全体の動作を制御する。209は、ROMであり、CPU208の動作を規定する命令(プログラム)を格納する。RAM210は、CPU208の動作に必要な作業メモリである。RAM210は、DRAM(Dynamic RAM)等の比較的容量の大きいメモリで構成する。CPU208は、ブリッジ205を介して画像バス204上の各種処理部にアクセスすることができる。画像バス204とCPUバス207とを分離することで、ハードウェアによる処理部201〜203とCPU208とは同時に動作することができる。211は、インターフェース部であり、例えば、操作者が情報処理装置の動作を指定する為の入出力インターフェースである。212は、記憶部であり、ハードディスクやフラッシュメモリ等の大容量データ記憶装置である。学習のためのデータセットは記憶部212に格納する。213は、通信部であり、処理部を介して学習のためのデータ群を外部の装置から記憶部212に転送することができる。
【0016】
先ず始めに、本実施形態におけるオブジェクトの検出処理について説明する。
図6は、判別処理部203の詳細を説明する図である。901〜90n(n:弱判別器の数)はそれぞれ1つの弱判別器とその周辺回路を示すブロックであり、物理的には1つの回路で構成する。即ち、901〜90nは論理的な処理構成を示すものであり、実際には1つの処理ブロック901が弱判別演算単位で時分割に各弱判別器(901〜90n)の内容を処理する。もちろん、高速化を目的として、901〜90nの全て或いは幾つかを物理的な回路として構成してもよい。
【0017】
パラメータメモリ910は弱判別器を構成するためのパラメータ情報を格納するメモリである。図7は、パラメータメモリ910の内容の一例を説明するための図(その1)である。パラメータメモリの内容は事前に学習により生成されるものである。以下、弱判別器として非特許文献1に開示されている矩形フィルタを適用する場合について説明する。図7中「矩形数」は検出ウインドウ内の矩形の数を指定する情報であり、例えば、図8で示すフィルタの場合、矩形数が2となる。図8は、矩形フィルタの一例を示す図である。弱判別器は、検出ウインドウ81内の2つの矩形領域82、83の総和の差分値を閾値処理する。「矩形座標」は82、83に示す矩形領域内の画像データの総和を算出するために必要な座標情報である。ここで、弱判別器は、矩形領域内の画像データの総和を、SATデータを参照することで極めて高速に算出することが可能である。950は、SATメモリであり、前処理部202が、算出したSATデータを格納する。情報処理装置は、1枚の画像データに対する検出処理の開始前に検出対象画像データからSATデータを作成し、矩形フィルタ処理においてSATデータを参照して処理する。SATに関しては本実施形態の特徴に関連するものではないため詳細な説明は省略する。なお、SATに関しては非特許文献1等に開示されている。
【0018】
図9は、SATデータから矩形領域を算出する一例を説明する図である。弱判別器は、入力データ領域701内の矩形領域702内データ総和を、SATデータ領域内の4つの座標のSATデータ値S1〜S4を使用して、S4+S1−(S2+S3)により算出することができる。図7における「矩形座標」とは、SATを利用して矩形領域の画像データ総和を算出するための座標値である。「矩形座標」の数は「矩形数」に応じて増減する。「フィルタ係数」は+1又は−1である。「フィルタ閾値」は判別フィルタの一例である矩形フィルタの出力値(矩形フィルタ出力値)を閾値処理するための値である。「信頼度」は、対象とする弱判別器に対する信頼度(強判別器に対する弱判別器の寄与率)である。ブースティング判別は信頼度の符号付き総和をもって判別を行う。「識別閾値」はブースティング判別器の最終判定を行うための閾値である。
【0019】
弱判別器の判定結果をhj(x)、「信頼度」をαj、「識別閾値」をTghとした場合(x:参照データ、j:弱判別器番号)、最終判定処理部960は、式(1)に従って最終判定を行う。ここでhj(x)は検出対象オブジェクトと判断した場合は、1、非検出対象オブジェクトと判断した場合は、−1を出力する。
【数1】
【0020】
最終判定処理部960は、式(1)を満足する場合、検出ウインドウ内に検出対象オブジェクトが存在すると判断する。
弱判別器が図8に示す矩形フィルタの場合、82の領域内データ総和をS1、83の領域内データ総和をS2、矩形領域それぞれに対応する係数をフィルタ係数1、フィルタ係数2とすると、
【数2】
の演算を実行する。ここで、フィルタ係数1を+1、フィルタ係数2を−1とすることで2つの領域の差分値を算出する。弱判別器は式(2)を満足する場合は、1を出力し、満足しない場合は、−1を出力する。判別結果(判定結果)が式(1)のhj(x)に相当する。
【0021】
式(2)は矩形数が2の場合の例であるが、一般的な矩形フィルタ構造の場合、次式で示す判定処理をもって弱判別器を構成する。
【数3】
ここで、p:矩形領域の数、Si:矩形領域内の画素値総和、Ci:矩形領域に対する係数、WThj:j番目の弱判別器に対する判定閾値である。
矩形領域の形状や数、また、Ci及びWThj等は、学習時に決定されるパラメータである。
【0022】
図6に示す弱判別器921〜92nは、検出対象データに対して式(3)に示す所定の判定処理を実行し、対象領域が検出対象オブジェクトを含むか否かを判定する。なお、弱判別器921〜92nは前記パラメータメモリに記された「矩形座標」や「フィルタ係数」等の情報に従って必要なSATデータをSATメモリ950から読み出し、フィルタ演算を行う。
931〜93nは乗算器であり、弱判別器921〜92nの出力(±1)にそれぞれパラメータメモリに格納する信頼度αjを乗じる。941〜940nは加算器(累積加算器)であり、信頼度を乗じた判別器出力値を累積加算する(式(1)の左辺値を算出)。960は最終判定処理部であり、累積加算結果を「識別閾値」で閾値処理する。以上の処理により、式(1)に示すブースティング判定処理を実行する。最終的に式(1)を満足する場合、最終判定処理部960は、検出ウインドウ内に検出対象オブジェクトが存在すると判定する。
980は制御部であり、パラメータメモリの内容を参照してアドレスカウンタ970を制御し、更に判別処理部203全体のシーケンスを制御する。
【0023】
図10は、検出処理時の動作を説明する図(その1)である。図10では、CPU208の動作と判別処理部203との動作を1つのフローチャートに記述している。
まず、検出処理の開始に先立ちCPU208は、ステップS1001で各種初期化処理を実行する。各処理部はCPU208の初期化指示に従って内部のレジスタ・メモリ等を初期化する。
検出処理のための各種設定を終了するとCPU208は、ステップS1002で画像入力部201、ステップ1003で前処理部202を起動する。画像入力部201は撮像装置から1フレーム分の画像データを取得し、図示しない内部バッファに格納する。格納を終了するとCPU208に対して画像取得終了割り込みを発生する。CPU208は、割り込みを検知すると、DMAC206を起動して取得した画像データを前処理部202の内部メモリ(図示しない)に転送する。前処理部202は、画像データの転送が終了すると、前処理を開始する。前処理部202では予め指定するコントラスト補正パラメータ等に従って画像データのコントラストを補正する(ステップS1003)。前処理部202は、補正処理を終了するとSATデータの生成を開始する(ステップS1004)。生成したSATデータは判別処理部203のSATメモリ950に格納される。SATデータのSATメモリ950への転送を終了すると実際の判別処理が開始される。
【0024】
以下、ステップS1005〜S1012は、判別処理部203のハードウェア処理に関する動作を説明するフローである。
先ずステップS1005で処理ブロックを決定する。処理ブロックは図4の62に示す検出ウインドウであり、ウインドウを1画素或いは1ライン単位で走査させながら検出を行うことで全画像中の検出対象オブジェクトを抽出する。
処理ブロックを決定すると、順次、弱判別器演算処理を開始する。先ず、パラメータメモリを参照して、第1番目の弱判別器を構成するためのデータを読み出す(ステップS1006)。制御部980はアドレスカウンタ970を制御することで弱判別器に対応するパラメータメモリの内容を順次読み出す。パラメータメモリの読み出しを完了すると、ステップS1007で読み出した座標情報に従って、所定のSATデータを読み出す。次にステップS1008で所定の矩形フィルタ演算処理を実行する。ここでの演算内容は式(3)の左辺値演算に相当する積和演算である。ステップS1009ではフィルタ演算処理ステップ(S1008)の結果と閾値とを比較し、その結果に基づいて累積スコアを算出する。より具体的に説明すると、式(3)に基づく閾値処理結果である弱判別器921〜92nの出力値(対象物であると判定した場合+1、非対象物であると判定した場合―1を出力)に信頼度1〜信頼度nを乗じた値を加算器941〜94nで累積する。即ち累積スコアとは弱判別器の判定結果に基づく該弱判別器信頼度の累積値である。以上の処理を全ての弱判別器の数だけ繰り返す(ステップS1010)。ステップS1009での処理は式(1)の左辺値を順次算出していることに相当する。
【0025】
ステップS1011では、上記累積スコアと識別閾値とを比較する。識別閾値もパラメータメモリに格納されている。ステップS1011で、処理対象ブロックに検出対象オブジェクトが存在するか否かを閾値判定し、その結果を図示しないメモリに記録する。ステップS1011は式(1)の判定処理に相当する。
以上の処理(ステップS1005〜ステップS1012)を繰り返すことで検出対象オブジェクトの存在有無とその位置を判定する。
判別処理部203は、1フレームの処理が終了するとCPU208の割り込み信号を有効化する。CPU208は、割り込み信号に反応して、判別処理部203の検出結果をRAMに210に転送する(ステップS1013)。未処理のフレームがあれば、ステップS1002へ戻り(ステップS1014)、以上の処理を次のフレーム画像に対して繰り返し実行する。
このように、パラメータメモリ910に格納する弱判別器の処理内容指定情報に従って、所望のブースティング判別処理を実行し、検出対象となるオブジェクトを検出する。
【0026】
次に、情報処理装置の学習処理に関して説明する。
図11は、複数の弱判別器で構成する1つのブースティング判別器を学習する場合の例を説明するフローチャート(その1)である。以下の処理はCPU208の動作を示す。
学習に先立ち、記憶部212には学習に必要なデータ群が格納されているものとする。例えば、画像中から特定の物体を検出する場合、検出対象を含む複数の画像データと検出対象を含まない画像データとを複数用意し、それぞれ検出対象データ・非検出対象データとしてラベル付けしておく。
以下、Adaboostアルゴリズムに従って弱判別器を学習するものとする。基本的な学習方法は非特許文献1に記載の手法と同一である。
まず、ステップS101でCPU208は、記憶部212に保持する学習データから学習に使用するデータを選択する。ここでは、検出対象画像と非検出対象画像を所定の比率でランダムに選択する。
【0027】
ステップS102ではCPU208は、各学習データに対する重み係数を初期化する。重み係数とは学習データの学習処理に対する寄与率に相当する。学習データの総数がm個の場合、CPU208は、全ての重み係数wt,i(t:生成する弱判別器の番号、i:学習データの番号)を以下の式(4)で初期化する。
【数4】
ここでは、全ての学習データに対して共通の重みを与えることになる。
【0028】
次に、ステップS103でCPU208は、式(5)に従って重み係数を正規化する。
【数5】
以降の処理で重み係数が変更された場合、CPU208は、このステップの処理で重み係数の総和が1になる様に正規化する。
【0029】
次に、ステップS103〜S110でCPU208は、1つの弱判別器を学習する。まず、ステップS104でCPU208は、矩形フィルタ群の中から1つの矩形フィルタを選択する。矩形フィルタ群は予め定める形状の基本矩形フィルタに対してその大きさや検出ウインドウ内の位置に応じた変形を有する複数の矩形フィルタ候補である。例えば、図8に示す隣接領域差分フィルタの場合であってもその矩形領域の大きさや、検出ウインドウ内の位置に応じて複数の変形が考えられる。矩形フィルタ群は予め定める基本矩形フィルタを基準にしてその変形も含めた全ての組み合わせを用意しておく。このステップの処理では用意した矩形フィルタ候補を順に選択する。
【0030】
次に、ステップS105でCPU208は、選択した矩形フィルタを用いて全ての学習データに対して矩形フィルタの判別性能評価を行う。まず、CPU208は、全ての学習データに対してそのフィルタ出力値を算出し、検出対象と非検出対象を分離する閾値を決定する。CPU208は、フィルタ出力値の算出は判別処理部203を利用してハードウェアで処理する。CPU208は、閾値の決定を矩形フィルタ出力値のヒストグラムを利用して行う。図12は、検出対象データのフィルタ出力ヒストグラム1102と非検出対象データのフィルタ出力ヒストグラム1101とを示す図である。CPU208は、ヒストグラムを使用して検出対象と非検出対象とをよく分離する閾値Thを決定する。更に、ステップS105でCPU208は、決定した閾値Thを用いて全ての学習データに対する検出誤り率を算出する。式(6)は全ての学習データに対する重み付き誤り率である。
【数6】
ここで、jはフィルタ番号である。iは学習データ番号である。tは弱判別器番号である。
【0031】
hj(xi)は選択した矩形フィルタによる判定出力であり、CPU208は、前記閾値Thを使用して入力対象データxiが検出対象である場合は1を出力し、検出対象を含まない場合は0を出力する。yiは正解ラベルであり入力画像データが検出対象であるか否かによってそれぞれ1又は0が割り当てられている。矩形フィルタ評価ステップ(S105)ではCPU208は、式(6)の重みつき誤り率を算出する。CPU208は、以上の処理(ステップS104、S105)を全ての矩形フィルタ候補に対して実行する。
【0032】
矩形フィルタ候補に対する全ての重みつき誤り率Ejの算出が終了すると(ステップS106)、CPU208は、最も誤り率Ejの小さい矩形フィルタ(即ち最も判別性能が高い矩形フィルタ)を弱判別器として選択する(ステップS107)。
次に、CPU208は、選択した矩形フィルタのEjから式(7)により弱判別器に対する信頼度を算出する(ステップS108)。
【数7】
ここで、tは弱判別器段数である。
CPU208は、算出した信頼度αtをステップS109でRAM210に記録する。
【0033】
ステップS110ではCPU208は、学習データに対する重み係数を下記演算式(8)で更新する。
【数8】
ここで、tは弱判別器段数、iは学習データ番号である。
但し、式(8)で更新する重み係数Wt,jは正しく検出できた学習データiに付随する係数のみである。即ちCPU208は、正しく検出された学習データの重みが小さくなる様に更新する。つまり、ステップS110ではCPU208は、検出を誤った学習データに対する重みを相対的に大きくしていく。
ここまでの処理(ステップS103〜ステップS110)でCPU208は、1つの弱判別器を生成する。
【0034】
次に、ステップS111でCPU208は、RAM210に記録された各弱判別器に対する信頼度の推移に基づいて過学習の判定を行う。図13は、弱判別器の段数(順に生成する弱判別器の番号)とその信頼度の推移との一例を説明する図である。横軸は順に生成する弱判別器の段数を示し、縦軸は弱判別器に対応する信頼度の値(信頼度値)を示す。ここでの推移とは順に生成する弱判別器の番号と番号に対応する弱判別器に付加される信頼度との関係を時系列データと見なした場合の様子を意味する。
【0035】
図13の場合、1201で示す付近の弱判別器で信頼度が急上昇している。ブースティング学習では学習データに対する重み係数を式(8)で更新していくことで苦手な学習データを検出する弱判別器を順次学習生成していく。従って学習初段を除いて信頼度は概ね一定(或いは緩やかな線形変化)の値を取る。しかしながら、生成されるブースティング判別器は弱判別器数の増加と共に判別性能が向上し、学習データの数が十分でない場合、重み付き誤り率Etが極端に小さな値になる場合がある。このような場合、データセットに対する過学習に陥っている可能性が高い。式(7)より、誤り率Etの急激な変化は信頼度αtの変化を引き起こす。本実施形態では、このような観点から、信頼度の推移を過学習の判定条件とする。より具体的に説明するとCPU208は、ステップS108で得られた信頼度とそれ以前に生成した弱判別器の信頼度から得られる予測値との差分量を判定し、差分量が予め定める閾値以上になった場合、過学習と判定する。
【0036】
ステップS1111〜ステップS1113は信頼度推移判定処理(ステップS111)の詳細を示すステップである。ステップS1111ではCPU208は、ステップS109で記録された既に生成済みの弱判別器に対する信頼度を読み出す。ステップS1112ではCPU208は、読み出した複数の弱判別器の信頼度を基に弱判別器の信頼度を予測する。式(9)に単純な移動平均により信頼度の予測を行う場合の演算式を示す。
【数9】
ここで、Ptは、信頼度の予測値である。aは、移動平均を取る数である。
【0037】
ステップS1112ではCPU208は、式(9)に示す演算で予測値Ptを算出する。ステップS1113ではCPU208は、ここで得られたPtと算出したt番目の弱判別器の信頼度αtとの差分値を算出する。即ちCPU208は、式(10)の左辺値を算出する。
【数10】
【0038】
ステップS112ではCPU208は、ステップS1113で算出した差分値と閾値とを比較して過学習か否かを判定する。即ちCPU208は、このステップで式(10)により過学習か否かを判定する。
図14は、過学習判定の様子を模式的に説明する図である。2101は内部パラメータである信頼度の推移を示す。2102はt番目の弱判別器生成時の信頼度予測値Ptを示す。CPU208は、予測値と実際の信頼度との差2103を閾値処理することで内部パラメータの推移の変化(変曲点)を検出する。
なお、ここでは、簡単のため式(9)で示す移動平均値を使用したが、他の様々な手法を適用してもよい。
【0039】
ステップS112で過学習であると判断した場合、CPU208は、ステップS113で学習に使用するデータを追加する。ここでは、CPU208は、記憶部212に格納する学習データの中から学習に使用されていないデータをランダムに選択して学習に使用するデータとして登録する。ステップS114ではCPU208は、生成済みの弱判別器の中で、最後に生成した弱判別器からさかのぼって予め定める数の弱判別器を廃棄(又は論理的に生成した弱判別器を削除)する。これは、ステップS112で過学習と判定した時点で生成されている最新の強判別器は、既に過学習状態の強判別器を構成する可能性が高いためである。即ち、CPU208は、学習データの追加後は、最後に生成した幾つかの弱判別器を廃棄し、弱判別器段数を遡って処理を再開する。
【0040】
図15は、弱判別器の廃棄の例を説明する図である。22001〜22200はCPU208が生成した弱判別器を示し、22001から順にCPU208が学習によって生成したものとする。22200で示す弱判別器の学習時に過学習を判定した場合、CPU208は、22197〜22200の弱判別器を廃棄して、22197で示す弱判別器の学習から再開する。ステップS114では、CPU208は、廃棄する弱判別器の数に応じて生成済み弱判別器数を管理するカウンタを減ずる。
次にCPU208は追加した学習データセットを用いてステップS114で残された弱判別器に対して順次検出処理を実行し、新たに生成する弱判別器の学習のための重み係数を再計算する(ステップS115)。即ち、CPU208は、新たな学習データセットを用いて各弱判別器に対応する式(8)の演算のみを再計算する。以降、CPU208は、ステップS115で再計算した重み係数を使用して、新たな弱判別器の追加学習処理を継続する。
【0041】
ステップS116ではCPU208は、条件を満たすブースティング判別器が生成したか否かを判定し、条件を満たさない場合、ステップS103に戻って弱判別器の生成処理(学習処理)を継続する。ステップS116ではCPU208は、生成した弱判別器の数等の条件に従って処理の終了判定を行う。
以上、本実施形態によれば、弱判別器生成の際に算出する信頼度を基に過学習を判定し、学習データを自動的に追加することが可能になる。これにより、簡単な処理の追加で汎化性能の高い判別器を自動学習させることが可能になる。
【0042】
<実施形態2>
実施形態1では式(7)に示す信頼度を評価値として、その推移で過学習を判定する場合について説明したが、本実施形態ではブースティング判別器の平均累積スコア値を評価値として、その推移に従って過学習を判定する場合について説明する。
本実施形態では、実施形態1との違いについてのみ説明する。図16は、複数の弱判別器で構成する1つのブースティング判別器を学習する場合の例を説明するフローチャート(その2)である。ステップ1301〜ステップS1308は実施形態1におけるステップS101〜S108と同じであるため説明を省略する。但し、本実施形態では、ステップS1317で、CPU208は、検出時と同様に、矩形フィルタ評価時(ステップS1305)のフィルタ判別結果を基に累積スコアを算出し、各学習データに対する累積スコア値の総和を記録する。ここで、累積スコアとは累積した加算器941〜94nの出力であり、実施形態1で説明した様に、弱判別器921〜92nの判定結果に信頼度1〜信頼度nを乗じた値の累積加算値である。平均累積スコアとは各学習データの検出時にステップS1317で算出する累積スコアを全学習データで平均した値である。式(11)に平均累積スコア値
【数11】
の算出式を示す。
【数12】
ここで、tはフィルタ段数である。iは学習データ番号である。mは学習データ数である。
【0043】
ステップS1309ではCPU208は、ステップS1317で記録した累積スコア総和値を使用して式(11)の平均累積スコアを算出する。ステップS1310でCPU208は実施形態1のステップS110と同様に重み係数を更新する。
ステップS1311ではCPU208は、平均累積スコアの推移に基づいて過学習を判定する。図17は、平均累積スコアの推移を模式的に示す図である。横軸は順に生成する弱判別器の番号、縦軸は弱判別器番号に対する平均累積スコアの値である。この場合、1401で示す付近で累積スコアの平均値が急上昇する。これは、累積スコアが信頼度を累積した値であるため、信頼度値の増加に応じて累積スコアも関連を持って変化していくことによりに生じる現象である。累積スコアは信頼度の累積加算値であることから、信頼度の増加をより高い尤度をもって判定することができる(信頼度の推移の変化が強調されるため)。
【0044】
ステップS13111〜ステップS13113は平均累積スコア推移判定処理のステップ(S1311)の詳細を説明する動作フローである。ステップS13111ではCPU208は、ステップS1309で算出し、記録した平均累積スコアを読み出す。ステップS13112ではCPU208は、ステップS13111で読み出した過去の平均累積スコアを用いで累積スコアを予測する。ここでも実施形態1と同様に単純な移動平均により予測を行う。
【数13】
ここで、Ptは平均累積スコアの予測値である。aは移動平均を取る数である。
【0045】
ステップS13112ではCPU208は、式(12)に示す演算で予測値Ptを算出する。ステップS1113では、CPU208は、得られたPtとStとの差分値を算出する。即ちCPU208は、(13)式の左辺値を算出する。
【数14】
【0046】
ステップS1312ではCPU208は、ステップS13113で算出した差分値と予め定める閾値とを比較して過学習を判定する。即ちCPU208は、式(13)により過学習を判定する。
以下、ステップS1313〜ステップS1316は実施形態1のステップS113〜ステップS116と同様であるため説明を省略する。
以上、本実施形態によれば、累積スコアの学習データに対する平均値の推移を判定することで過学習をより適切に判定することができる。
【0047】
<実施形態3>
実施形態1では式(7)に示す信頼度を評価値として、その推移で過学習を判定する場合について説明したが、本実施形態では弱判別器の打ち切り閾値を評価値として、その推移に従って過学習を判定する場合について説明する。
本実施形態では、実施形態1との違いについてのみ説明する。図18は、第3の実施形態における判別処理部203の構成を示す図である。実施形態1では、全ての弱判別器の累積スコアを最終判定処理部960で閾値処理することで検出対象が存在するか否かを判定していた。非特許文献1に開示の手法では、前述したように、このようなブースティング判別器をカスケードに接続しブースティング判別器単位で処理の打ち切りを判定することで高速化を実現していた。本実施形態では、図18に示す様に、各弱判別器の累積スコア出力に対して打ち切りの有無を判定する打ち切り判定処理部1591〜159n−1を設け、弱判別器単位で処理の打ち切りを判定する。なお、図18において打ち切り判定処理部1591〜159n−1以外の処理部ロックは図6の対応するブロックと同一であるため説明を省略する。また、図6と同様に、本実施形態の弱判別器1501〜150nも物理的には1つの弱判別器1501を時分割に使用して演算するものとする。図19は、検出処理時の動作を説明する図(その2)である。
【0048】
以下、図18及び図19を使用して、本実施形態に関するブースティング判別器の検出動作を説明する。ステップS1601〜ステップS1604は実施形態1におけるステップS1001〜ステップS1004と同一である。
以下、ステップS1605〜S1612は判別処理部203のハードウェア処理に関する動作を説明するフローである。
先ずステップS1605で処理ブロックを決定する。処理ブロックは図4の62に示す検出ウインドウであり、ウインドウを1画素或いは1ライン単位で走査させながら検出を行うことで全画像中の検出対象オブジェクトを抽出する。
処理ブロックを決定すると、順次、弱判別器演算処理を開始する。先ず、パラメータメモリを参照して、第1番目の弱判別器を構成するためのデータを読み出す(ステップS1606)。制御部980はアドレスカウンタ970を制御することで弱判別器に対応するパラメータメモリの内容を順次読み出す。パラメータメモリの読み出しを完了すると、ステップS1606で読み出した座標情報に従って、所定のSATデータを読み出す(ステップS1607)。次にステップS1608で所定の矩形フィルタ演算処理を実行する。ここでの演算内容は式(3)の左辺値演算に相当する積和演算である。ステップS1609ではフィルタ演算処理ステップ(S1608)の結果と閾値とを比較し、その結果に基づいて累積スコアを算出する。より具体的に説明すると、式(3)に基づく閾値処理結果である弱判別器921〜92nの出力値(対象物であると判定した場合は+1、非対象物であると判定した場合は−1を出力)に信頼度1〜信頼度nを乗じた値を加算器941〜94nで累積する。
【0049】
次にステップS1610で累積スコア値と学習によって定める打ち切り閾値とを比較する(打ち切り判定処理部1591〜159n−1)。ここでの打ち切り閾値は学習時に決定する値であり、パラメータメモリに記録されているものである。打ち切り閾値の詳細は後述する。累積スコア値が閾値以下の場合、処理ブロックは検出対象オブジェクトでは無いと判断して次のブロックの処理を継続する。累積スコア値が打ち切り閾値を超える場合、所定の数の弱判別器演算を繰り返す(ステップS1606〜ステップS1611)。弱判別器による打ち切りが発生しなかった場合、ステップS1612で、累積スコアを識別閾値と比較する。ここで、処理対象ブロックに検出対象オブジェクトが存在するか否かを最終閾値判定し、その結果を図示しないメモリに記録する。弱判別器による打ち切りが発生した場合、ステップS1612では、最終識別判定は実施せず、検出対象オブジェクトが存在しなかった旨の情報を記録する。
以上の処理を、検出ウインドウを走査しながら繰り返すことで検出対象オブジェクトの存在有無とその位置を判定する(ステップS1605〜ステップS1613)。
【0050】
判別処理部203は、1フレームの処理が終了するとCPU208の割り込み信号を有効化する。CPU208は、割り込み信号に反応して、判別処理部203の検出結果をRAMに210に転送する(ステップS1614)。以上の処理を各フレームに対して順次繰り返し実行する。
このように、本実施形態のブースティング判別器では、弱判別器単位で検出処理の打ち切りを行うことでより高速な検出が可能になる。
次に、本実施形態に関するブースティング判別器の学習処理について説明する。図20は、複数の弱判別器で構成する1つのブースティング判別器を学習する場合の例を説明するフローチャート(その3)である。ここでも、実施形態1との違いについてのみ説明する。ステップS1701〜ステップS1708は実施形態1におけるステップS101〜ステップS108と同一である。
【0051】
ステップS1709ではCPU208は、弱判別器毎に打ち切りを判定するための閾値を決定する。ここでは矩形フィルタの判定閾値を決定した手法と同様に、CPU208は、検出対象データに対する累積スコアのヒストグラムと、非検出対象データに対する累積スコアのヒストグラムとから閾値を決定する。
図21は、閾値の決定法を説明するための累積ヒストグラムの例を模式的に説明する図である。1801は非検出対象データに対する累積スコアのヒストグラムである。1802は検出対象データに対する累積スコアのヒストグラムである。CPU208は、打ち切り閾値を、検出対象データの誤打ち切り割合(誤って打ち切る検出対象データの打ち切り数÷検出対象データ数)が所定以下になる様に閾値を決定する。CPU208は、例えば、ヒストグラムの積分値等を利用して簡単に決定することができる。ステップS1709でCPU208は、決定した打ち切り閾値を弱判別器番号に対応して記録する。
【0052】
図22は、パラメータメモリ910の内容の一例を説明するための図(その2)である。実施形態1におけるパラメータメモリ(図7)に対して、図22のパラメータメモリでは、弱判別器1〜n毎に「打ち切り閾値1〜n」が追加されている。CPU208は、検出時は前述したように、パラメータメモリ上の打ち切り閾値を使用して処理の打ち切りを判定する。
ステップS1710はステップS110と同一である。
ステップS1711ではCPU208は、打ち切り閾値の推移から過学習を判定する。
図23は、弱判別器の段数と対応する打ち切り閾値の推移の例を説明する図である。横軸は順に生成する弱判別器の番号を示し、縦軸は弱判別器に対応する打ち切り閾値を示す。図23の場合、1901で示す付近で打ち切り閾値が急上昇している。打ち切り閾値は、結果的に、実施形態2で説明した平均累積スコアに関連する値となるため(検出対象オブジェクトの打ち切り率を一定とした場合、平均累積スコアの上昇と共に打ち切り閾値も上昇する)、信頼度の急変に伴う平均累積スコアの急変と同様に変化する。本実施形態ではこの様な打ち切り閾値の推移を過学習の判定条件とする。より具体的に説明すると、CPU208は、ステップS1709で決定した打ち切り閾値とそれ以前に生成した弱判別器の打ち切り閾値から得られる予測値とのずれを判定し、ずれが予め定める閾値以上になった場合、過学習と判定する。
【0053】
ステップS17111〜ステップS17113は打ち切り閾値推移判定処理のステップS1711の内容を示すステップである。ステップS17111ではCPU208は、ステップS1709で記録した既に生成済みの弱判別器に対する打ち切り閾値を読み出す。ステップS17112ではCPU208は、読み出した複数の弱判別器の打ち切り閾値Thtから生成した弱判別器の打ち切り閾値を予測する。式(14)に単純な移動平均により打ち切り閾値の予測を行う場合の演算式を示す。
【数15】
Ptは打ち切り閾値の予測値である。aは移動平均を取る数である。
【0054】
ステップS17112ではCPU208は、式(14)に示す演算で予測値Ptを算出する。ステップS17113では、CPU208は、ここで得られたPtとThtとの差分値を算出する。即ちCPU208は、式(15)の左辺値を算出する。
【数16】
【0055】
ステップS1712ではCPU208は、ステップS17113で算出した差分値と閾値とを比較して過学習を判定する。即ちCPU208は、式(15)により過学習を判定する。
以下ステップS1713〜ステップS1716は実施形態1のステップS113〜ステップS116と同一である。
以上、本実施形態によれば、弱判別器毎に決定する打ち切り閾値を利用して過学習を判定することが可能になる。この場合、平均累積スコアを基に判定する方式に比べて少ない処理機能の追加で同様の性能の判定を実現できる。
【0056】
<実施形態4>
実施形態1では式(7)に示す信頼度を評価値として、その推移で過学習を判定する場合について説明したが、本実施形態では過学習の判定に更に検定データを用いた判定も組み合わせた場合について説明する。
本実施形態では、実施形態1との違いについてのみ説明する。図24は、複数の弱判別器で構成する1つのブースティング判別器を学習する場合の例を説明するフローチャート(その4)である。ステップS2001〜S2012及びステップS20111〜S20113は実施形態1の対応する処理ステップS101〜S112及びS1111〜S1113と同一であるため説明を省略する。
【0057】
ステップS2012で過学習と判定した場合、CPU208は、ステップS2017で性能検定処理を実行する。このステップでは、CPU208は、記憶部212に保持された学習に未使用の画像データを使用して検出性能の検定を行う。より具体的に説明すると、CPU208は、検定用データを使用した検出対象オブジェクトの検出率及び非検出対象オブジェクトの誤検出率等から弱判別器の性能を判断する。ステップS2018ではCPU208は、ステップ2017で評価した検出性能(検定結果)を基準にして追加学習データの有無を判定する。ここでの判定は様々な手法が適用可能である。例えば、CPU208は、識別閾値を調整して検出率を一定にした場合の誤検出率等から判定を行う。より具体的に説明すると、CPU208は、直前に生成した弱判別器迄の全ての弱判別器群を使用して算出した検出性能と直前に生成した弱判別器を含む幾つかの弱判別器を除く弱判別器群を用いて算出した検出性能とを比較して判定を行う。即ち、CPU208は、弱判別器を追加したにもかかわらず性能の向上が見られない或いは性能が劣化する場合、データを追加すると判定する。データを追加すると判定した場合、CPU208は、ステップS2013〜ステップS2015で学習データを追加する。ステップS2013〜ステップS2016は実施形態1のステップS113〜ステップS116と同一であるため説明を主略する。
【0058】
以上本実施形態によれば、学習時に得られる内部パラメータである信頼度を用いて過学習の判定を行い、過学習の可能性が予想された場合にのみ検定処理を行うため、所定のタイミングで毎回検定処理を行う場合に比べて学習時間を短縮させることができる。
【0059】
<その他の実施形態>
上述した実施形態は画像データに対して処理する場合について説明したがこれに限るわけではない。音声データ等の1次元データから特定のパターンを抽出する場合等にも適用することができる。
また、上述した実施形態では式(7)に示す信頼度αtを評価値として、その推移に基づいて、過学習の判定を行う場合について説明したが、αtがEtの関数であることからαtの代わりに誤り率Etを評価値として使用して過学習の判定を行ってもよい。
また、上述した実施形態ではブースティングアルゴリズムによる識別器を例に説明を行ったが、ブースティング判別器における信頼度と同様なパラメータを利用する他のアンサンブル学習アルゴリズムに適用してもよい。
【0060】
また、上述した実施形態では弱判別器として矩形フィルタを用いた方式に適用した場合について説明したが、これに限るわけではなく、他の様々な弱判別器を用いた検出器に適用可能である。
また、上述した実施形態では内部パラメータ値の弱判別器段数に対する移動平均を使用して過学習の判定を行ったが、これに限るわけではなく従来提案されている様々な変曲点の算出手法を適用することができる。例えば、微分処理を利用する手法やその他の様々な予測手法を適用することもできる。また、高次の予測や非線形の予測手法を適用してもよい。更に、内部パラメータの推移から過学習パターンを検出する判別器を学習によって生成する等の方法でもよい。例えば複数の内部パラメータ値を入力ベクトルとしてSVM(Support Vector Machine)等により判別器を学習する方法を適用することもできる。この場合、過学習となった特定のパターンを学習データとして予め判別器を学習しておく。
【0061】
また、上述した実施形態では信頼度、累積スコア、打ち切り閾値等の推移に基づいて過学習の判定を行ったが、このような時系列データを利用した判定ではなくその絶対値で判定を行ってもよい。この場合、判定精度は低下するが、より簡単な構成で過学習の判定を行うことができる。
また、上述した実施形態では選択した学習データセット中の全ての学習データを使用して学習を行う場合について説明した。しかしながら、特許文献1に開示されている様に、学習データそれぞれに付与される重み係数に従って学習データをサンプリングして学習するようにしてもよい。
【0062】
また、上述した実施形態では判別処理部203をハードウェアにより実現する場合について説明したが、全てソフトウェアにより実現してもよい。
また、上述した実施形態で説明した機能は、学習専用の装置や汎用コンピュータのソフトウェアとしても適用することができる。
また、上述した実施形態では、学習データを情報処理装置の記録部に全て格納して選択的に利用する場合について説明したが、例えばネットワークに接続する通信部213を介して追加データを他の装置から取得、又は他の装置から転送するようにしてもよい。また、実施形態4で説明したように検定データを使用して性能解析を行う場合、通信部213を介して検定データを他の装置から情報処理装置に追加するようにしてもよい。
【0063】
また、本発明の目的は、上述した実施形態の機能を実現するソフトウェアのプログラムコードを、装置の中央演算処理手段(CPUやMPU)が記憶媒体から読み出し実行することによっても達成される。
また、読み出したプログラムコードの指示に基づき、オペレーティングシステム(OS)等が実際の処理の一部又は全部を行うことで上述した実施形態の機能が実現される場合も含まれる。
本発明を前記記憶媒体に適用する場合、その記憶媒体(コンピュータ読み取り可能な記憶媒体)には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【0064】
以上、上述した各実施形態によれば、簡易に過学習を検出し、効率的に学習を行うことができる。
【0065】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
なお、上述した各実施形態は任意に組み合わせて実行するようにしてもよい。
【符号の説明】
【0066】
201 画像入力部、202 前処理部、203 判別処理部
【技術分野】
【0001】
本発明は、情報処理装置及び情報処理方法に関する。
【背景技術】
【0002】
近年、画像データ中の特定オブジェクトを検出・識別する様々な手法が提案され実用に供されている。
その中でも、非特許文献1に開示されている手法はその高速性から注目を集めている。非特許文献1の手法は、ブースティング学習アルゴリズムにより生成する複数の弱判別器からなる強判別器をカスケードに接続し、強判別器毎に打ち切り判定(検出対象位置に対する処理の強制終了)を行いながら処理を進める手法である。図1は、非特許文献1に開示されている方式の構成概念を示す図である。31〜3mは学習によって生成する判別器(True:検出対象オブジェクト有り、False:検出対象オブジェクト無し)であり、処理負荷の低い複数の単純な判別フィルタにより構成される。それぞれの判別フィルタは判別能力がそれほど高く無いことから、弱判別器と呼ばれる。また、複数の弱判別器の結果を後述する信頼度値に基づいて統合した判別器(31〜3m)は強判別器と呼ばれる。以下説明のため、ブースティング学習アルゴリズムにより生成した複数の弱判別器からなる強判別器をブースティング判別器という。図2は、ブースティング判別器31〜3mの内部構成を示す図である。411〜41nは、弱判別器、420は、弱判別器の判定結果を統合して判定する閾値処理器である。
【0003】
非特許文献1では矩形フィルタと呼ばれる極めて単純な判別フィルタで弱判別器411〜41nを構成する。図3は、矩形フィルタの例を示す図である。51a〜51cは、検出対象となる画像ブロックであり、画像全体から切り出した所定サイズ(検出対象のオブジェクトを含む大きさ)の部分領域画像である。図4において61は、検出対象の画像データ全体を示し、62は、51a〜51cに対応する部分領域画像を示す。以下、部分領域画像を検出ウインドウという。弱判別器は、検出ウインドウを所定のステップサイズで走査し、検出ウインドウ単位に識別を行うことで画像中の特定オブジェクトの存在有無とその位置とを決定する。52a〜52cは、矩形フィルタの例である。弱判別器は、白領域と黒領域で示すそれぞれの領域の画素値総和の差分を検出ウインドウ内の局所領域特徴としてオブジェクトの存在を判定する。
【0004】
図2及び図3に示す様に、ブースティング判別器は特性の異なる弱判別器を多数使用することで最終的に判別性能の高い識別機能(強判別)を実現する。
特許文献2ではこのようなブースティング判別器を効率的に学習するため手法が提案されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平8−329031号公報
【特許文献2】特開2005−284348号公報
【非特許文献】
【0006】
【非特許文献1】Viola,P.;Jones,M."Rapid object detection using a boosted cascade of simple features". Proc. of Computer Vision and Pattern Recognition, 2001−12, IEEE Computer Society.p.511−518.
【発明の概要】
【発明が解決しようとする課題】
【0007】
ブースティング判別器は数百から数千の弱判別器を学習により生成する必要があるため、学習に膨大な時間を要する。
特許文献2では、既に学習済みの判別器の出力に基づく判別基準値(後述する累積スコア値)に応じて、所定の条件を満たす学習データを学習データセットから順次削除する手法を提案している。特許文献2の手法では、過学習(汎化性能の劣化)を防止するために、予め十分に多数の学習データを用意し、更に弱判別器の学習毎に大量の検定データを使用して性能を評価する必要がある。また、特許文献2の手法では、評価の結果、過学習の状態であると判定した場合、手動で学習データの追加や入れ替えを行う必要があった。
【0008】
本発明はこのような問題点に鑑みなされたもので、簡易に過学習を検出し、効率的に学習を行うことを目的とする。
【課題を解決するための手段】
【0009】
そこで、本発明は、記憶装置に保持されている学習データに基づいて、弱判別器について順次、学習を実行する学習手段と、前記学習の際に算出する弱判別器に対する評価値の推移に基づいて、過学習か否かを判定する判定手段と、前記判定手段により過学習であると判定された場合、新たな学習データを追加し、前記学習手段に弱判別器についての学習を継続させる制御手段と、を有することを特徴とする。
【発明の効果】
【0010】
本発明によれば、簡易に過学習を検出し、効率的に学習を行うことができる。
【図面の簡単な説明】
【0011】
【図1】非特許文献1に開示されている方式の構成概念を示す図である。
【図2】ブースティング判別器31〜3mの内部構成を示す図である。
【図3】矩形フィルタの例を示す図である。
【図4】検出対象の画像データの一例を示す図である。
【図5】情報処理装置の構成の一例を示す図である。
【図6】判別処理部203の詳細を説明する図である。
【図7】パラメータメモリ910の内容の一例を説明するための図(その1)である。
【図8】矩形フィルタの一例を示す図である。
【図9】SATデータから矩形領域を算出する一例を説明する図である。
【図10】検出処理時の動作を説明する図である。
【図11】複数の弱判別器で構成する1つのブースティング判別器を学習する場合の例を説明するフローチャート(その1)である。
【図12】検出対象データのフィルタ出力ヒストグラム1102と非検出対象データのフィルタ出力ヒストグラム1101とを示す図である。
【図13】弱判別器の段数(順に生成する弱判別器の番号)とその信頼度の推移との一例を説明する図である。
【図14】過学習判定の様子を模式的に説明する図である。
【図15】弱判別器の廃棄の例を説明する図である。
【図16】複数の弱判別器で構成する1つのブースティング判別器を学習する場合の例を説明するフローチャート(その2)である。
【図17】平均累積スコアの推移を模式的に示す図である。
【図18】第3の実施形態における判別処理部203の構成を示す図である。
【図19】検出処理時の動作を説明する図(その2)である。
【図20】複数の弱判別器で構成する1つのブースティング判別器を学習する場合の例を説明するフローチャート(その3)である。
【図21】閾値の決定法を説明するための累積ヒストグラムの例を模式的に説明する図である。
【図22】パラメータメモリ910の内容の一例を説明するための図(その2)である。
【図23】弱判別器の段数と対応する打ち切り閾値の推移の例を説明する図である。
【図24】複数の弱判別器で構成する1つのブースティング判別器を学習する場合の例を説明するフローチャート(その4)である。
【発明を実施するための形態】
【0012】
以下、本発明の実施形態について図面に基づいて説明する。
【0013】
<実施形態1>
図5は、情報処理装置の構成の一例を示す図である。情報処理装置は、画像データ中の特定のオブジェクト(画像パターン)を検出する機能を有し、更に、情報処理装置内で検出のための判別器を学習する機能を有する。
図5において201は画像入力部である。画像入力部201は、光学系、CCD又はCMOSセンサー等の光電変換デバイス及びセンサーを制御するドライバー回路/ADコンバーター/各種画像補正を司る信号処理回路/フレームバッファ等により構成される。なお、ここで、CCDとは、Charge−Coupled Devicesの略である。また、COMSとは、Complimentary Metal Oxide Semiconductorの略である。
【0014】
202は、前処理部であり、検出処理を効果的に行うための各種前処理を実行する。より具体的に説明すると、前処理部202は、色変換処理/コントラスト補正処理/SAT(Sammed Area Table)データの生成等、各種画像データ変換をハードウェアで処理する。判別処理部203は、前処理部202の出力を参照して所定のオブジェクトを判別する機能を有する。判別処理部203は、学習によって生成したパラメータに基づいてブースティング判別処理を実行する。206は、DMAC(Direct Memory Access Controller)である。DMAC206は、画像バス204上の各処理部間及び画像バス204上のデバイスとCPU(Central Processing Unit)バス207上のRAM210/ROM209との間のデータ転送等を司る。
【0015】
205は、ブリッジであり、画像バス204とCPUバス207との間のバスブリッジ機能を提供する。208は、CPUであり、実施形態に係る処理を実行すると共に本情報処理装置全体の動作を制御する。209は、ROMであり、CPU208の動作を規定する命令(プログラム)を格納する。RAM210は、CPU208の動作に必要な作業メモリである。RAM210は、DRAM(Dynamic RAM)等の比較的容量の大きいメモリで構成する。CPU208は、ブリッジ205を介して画像バス204上の各種処理部にアクセスすることができる。画像バス204とCPUバス207とを分離することで、ハードウェアによる処理部201〜203とCPU208とは同時に動作することができる。211は、インターフェース部であり、例えば、操作者が情報処理装置の動作を指定する為の入出力インターフェースである。212は、記憶部であり、ハードディスクやフラッシュメモリ等の大容量データ記憶装置である。学習のためのデータセットは記憶部212に格納する。213は、通信部であり、処理部を介して学習のためのデータ群を外部の装置から記憶部212に転送することができる。
【0016】
先ず始めに、本実施形態におけるオブジェクトの検出処理について説明する。
図6は、判別処理部203の詳細を説明する図である。901〜90n(n:弱判別器の数)はそれぞれ1つの弱判別器とその周辺回路を示すブロックであり、物理的には1つの回路で構成する。即ち、901〜90nは論理的な処理構成を示すものであり、実際には1つの処理ブロック901が弱判別演算単位で時分割に各弱判別器(901〜90n)の内容を処理する。もちろん、高速化を目的として、901〜90nの全て或いは幾つかを物理的な回路として構成してもよい。
【0017】
パラメータメモリ910は弱判別器を構成するためのパラメータ情報を格納するメモリである。図7は、パラメータメモリ910の内容の一例を説明するための図(その1)である。パラメータメモリの内容は事前に学習により生成されるものである。以下、弱判別器として非特許文献1に開示されている矩形フィルタを適用する場合について説明する。図7中「矩形数」は検出ウインドウ内の矩形の数を指定する情報であり、例えば、図8で示すフィルタの場合、矩形数が2となる。図8は、矩形フィルタの一例を示す図である。弱判別器は、検出ウインドウ81内の2つの矩形領域82、83の総和の差分値を閾値処理する。「矩形座標」は82、83に示す矩形領域内の画像データの総和を算出するために必要な座標情報である。ここで、弱判別器は、矩形領域内の画像データの総和を、SATデータを参照することで極めて高速に算出することが可能である。950は、SATメモリであり、前処理部202が、算出したSATデータを格納する。情報処理装置は、1枚の画像データに対する検出処理の開始前に検出対象画像データからSATデータを作成し、矩形フィルタ処理においてSATデータを参照して処理する。SATに関しては本実施形態の特徴に関連するものではないため詳細な説明は省略する。なお、SATに関しては非特許文献1等に開示されている。
【0018】
図9は、SATデータから矩形領域を算出する一例を説明する図である。弱判別器は、入力データ領域701内の矩形領域702内データ総和を、SATデータ領域内の4つの座標のSATデータ値S1〜S4を使用して、S4+S1−(S2+S3)により算出することができる。図7における「矩形座標」とは、SATを利用して矩形領域の画像データ総和を算出するための座標値である。「矩形座標」の数は「矩形数」に応じて増減する。「フィルタ係数」は+1又は−1である。「フィルタ閾値」は判別フィルタの一例である矩形フィルタの出力値(矩形フィルタ出力値)を閾値処理するための値である。「信頼度」は、対象とする弱判別器に対する信頼度(強判別器に対する弱判別器の寄与率)である。ブースティング判別は信頼度の符号付き総和をもって判別を行う。「識別閾値」はブースティング判別器の最終判定を行うための閾値である。
【0019】
弱判別器の判定結果をhj(x)、「信頼度」をαj、「識別閾値」をTghとした場合(x:参照データ、j:弱判別器番号)、最終判定処理部960は、式(1)に従って最終判定を行う。ここでhj(x)は検出対象オブジェクトと判断した場合は、1、非検出対象オブジェクトと判断した場合は、−1を出力する。
【数1】
【0020】
最終判定処理部960は、式(1)を満足する場合、検出ウインドウ内に検出対象オブジェクトが存在すると判断する。
弱判別器が図8に示す矩形フィルタの場合、82の領域内データ総和をS1、83の領域内データ総和をS2、矩形領域それぞれに対応する係数をフィルタ係数1、フィルタ係数2とすると、
【数2】
の演算を実行する。ここで、フィルタ係数1を+1、フィルタ係数2を−1とすることで2つの領域の差分値を算出する。弱判別器は式(2)を満足する場合は、1を出力し、満足しない場合は、−1を出力する。判別結果(判定結果)が式(1)のhj(x)に相当する。
【0021】
式(2)は矩形数が2の場合の例であるが、一般的な矩形フィルタ構造の場合、次式で示す判定処理をもって弱判別器を構成する。
【数3】
ここで、p:矩形領域の数、Si:矩形領域内の画素値総和、Ci:矩形領域に対する係数、WThj:j番目の弱判別器に対する判定閾値である。
矩形領域の形状や数、また、Ci及びWThj等は、学習時に決定されるパラメータである。
【0022】
図6に示す弱判別器921〜92nは、検出対象データに対して式(3)に示す所定の判定処理を実行し、対象領域が検出対象オブジェクトを含むか否かを判定する。なお、弱判別器921〜92nは前記パラメータメモリに記された「矩形座標」や「フィルタ係数」等の情報に従って必要なSATデータをSATメモリ950から読み出し、フィルタ演算を行う。
931〜93nは乗算器であり、弱判別器921〜92nの出力(±1)にそれぞれパラメータメモリに格納する信頼度αjを乗じる。941〜940nは加算器(累積加算器)であり、信頼度を乗じた判別器出力値を累積加算する(式(1)の左辺値を算出)。960は最終判定処理部であり、累積加算結果を「識別閾値」で閾値処理する。以上の処理により、式(1)に示すブースティング判定処理を実行する。最終的に式(1)を満足する場合、最終判定処理部960は、検出ウインドウ内に検出対象オブジェクトが存在すると判定する。
980は制御部であり、パラメータメモリの内容を参照してアドレスカウンタ970を制御し、更に判別処理部203全体のシーケンスを制御する。
【0023】
図10は、検出処理時の動作を説明する図(その1)である。図10では、CPU208の動作と判別処理部203との動作を1つのフローチャートに記述している。
まず、検出処理の開始に先立ちCPU208は、ステップS1001で各種初期化処理を実行する。各処理部はCPU208の初期化指示に従って内部のレジスタ・メモリ等を初期化する。
検出処理のための各種設定を終了するとCPU208は、ステップS1002で画像入力部201、ステップ1003で前処理部202を起動する。画像入力部201は撮像装置から1フレーム分の画像データを取得し、図示しない内部バッファに格納する。格納を終了するとCPU208に対して画像取得終了割り込みを発生する。CPU208は、割り込みを検知すると、DMAC206を起動して取得した画像データを前処理部202の内部メモリ(図示しない)に転送する。前処理部202は、画像データの転送が終了すると、前処理を開始する。前処理部202では予め指定するコントラスト補正パラメータ等に従って画像データのコントラストを補正する(ステップS1003)。前処理部202は、補正処理を終了するとSATデータの生成を開始する(ステップS1004)。生成したSATデータは判別処理部203のSATメモリ950に格納される。SATデータのSATメモリ950への転送を終了すると実際の判別処理が開始される。
【0024】
以下、ステップS1005〜S1012は、判別処理部203のハードウェア処理に関する動作を説明するフローである。
先ずステップS1005で処理ブロックを決定する。処理ブロックは図4の62に示す検出ウインドウであり、ウインドウを1画素或いは1ライン単位で走査させながら検出を行うことで全画像中の検出対象オブジェクトを抽出する。
処理ブロックを決定すると、順次、弱判別器演算処理を開始する。先ず、パラメータメモリを参照して、第1番目の弱判別器を構成するためのデータを読み出す(ステップS1006)。制御部980はアドレスカウンタ970を制御することで弱判別器に対応するパラメータメモリの内容を順次読み出す。パラメータメモリの読み出しを完了すると、ステップS1007で読み出した座標情報に従って、所定のSATデータを読み出す。次にステップS1008で所定の矩形フィルタ演算処理を実行する。ここでの演算内容は式(3)の左辺値演算に相当する積和演算である。ステップS1009ではフィルタ演算処理ステップ(S1008)の結果と閾値とを比較し、その結果に基づいて累積スコアを算出する。より具体的に説明すると、式(3)に基づく閾値処理結果である弱判別器921〜92nの出力値(対象物であると判定した場合+1、非対象物であると判定した場合―1を出力)に信頼度1〜信頼度nを乗じた値を加算器941〜94nで累積する。即ち累積スコアとは弱判別器の判定結果に基づく該弱判別器信頼度の累積値である。以上の処理を全ての弱判別器の数だけ繰り返す(ステップS1010)。ステップS1009での処理は式(1)の左辺値を順次算出していることに相当する。
【0025】
ステップS1011では、上記累積スコアと識別閾値とを比較する。識別閾値もパラメータメモリに格納されている。ステップS1011で、処理対象ブロックに検出対象オブジェクトが存在するか否かを閾値判定し、その結果を図示しないメモリに記録する。ステップS1011は式(1)の判定処理に相当する。
以上の処理(ステップS1005〜ステップS1012)を繰り返すことで検出対象オブジェクトの存在有無とその位置を判定する。
判別処理部203は、1フレームの処理が終了するとCPU208の割り込み信号を有効化する。CPU208は、割り込み信号に反応して、判別処理部203の検出結果をRAMに210に転送する(ステップS1013)。未処理のフレームがあれば、ステップS1002へ戻り(ステップS1014)、以上の処理を次のフレーム画像に対して繰り返し実行する。
このように、パラメータメモリ910に格納する弱判別器の処理内容指定情報に従って、所望のブースティング判別処理を実行し、検出対象となるオブジェクトを検出する。
【0026】
次に、情報処理装置の学習処理に関して説明する。
図11は、複数の弱判別器で構成する1つのブースティング判別器を学習する場合の例を説明するフローチャート(その1)である。以下の処理はCPU208の動作を示す。
学習に先立ち、記憶部212には学習に必要なデータ群が格納されているものとする。例えば、画像中から特定の物体を検出する場合、検出対象を含む複数の画像データと検出対象を含まない画像データとを複数用意し、それぞれ検出対象データ・非検出対象データとしてラベル付けしておく。
以下、Adaboostアルゴリズムに従って弱判別器を学習するものとする。基本的な学習方法は非特許文献1に記載の手法と同一である。
まず、ステップS101でCPU208は、記憶部212に保持する学習データから学習に使用するデータを選択する。ここでは、検出対象画像と非検出対象画像を所定の比率でランダムに選択する。
【0027】
ステップS102ではCPU208は、各学習データに対する重み係数を初期化する。重み係数とは学習データの学習処理に対する寄与率に相当する。学習データの総数がm個の場合、CPU208は、全ての重み係数wt,i(t:生成する弱判別器の番号、i:学習データの番号)を以下の式(4)で初期化する。
【数4】
ここでは、全ての学習データに対して共通の重みを与えることになる。
【0028】
次に、ステップS103でCPU208は、式(5)に従って重み係数を正規化する。
【数5】
以降の処理で重み係数が変更された場合、CPU208は、このステップの処理で重み係数の総和が1になる様に正規化する。
【0029】
次に、ステップS103〜S110でCPU208は、1つの弱判別器を学習する。まず、ステップS104でCPU208は、矩形フィルタ群の中から1つの矩形フィルタを選択する。矩形フィルタ群は予め定める形状の基本矩形フィルタに対してその大きさや検出ウインドウ内の位置に応じた変形を有する複数の矩形フィルタ候補である。例えば、図8に示す隣接領域差分フィルタの場合であってもその矩形領域の大きさや、検出ウインドウ内の位置に応じて複数の変形が考えられる。矩形フィルタ群は予め定める基本矩形フィルタを基準にしてその変形も含めた全ての組み合わせを用意しておく。このステップの処理では用意した矩形フィルタ候補を順に選択する。
【0030】
次に、ステップS105でCPU208は、選択した矩形フィルタを用いて全ての学習データに対して矩形フィルタの判別性能評価を行う。まず、CPU208は、全ての学習データに対してそのフィルタ出力値を算出し、検出対象と非検出対象を分離する閾値を決定する。CPU208は、フィルタ出力値の算出は判別処理部203を利用してハードウェアで処理する。CPU208は、閾値の決定を矩形フィルタ出力値のヒストグラムを利用して行う。図12は、検出対象データのフィルタ出力ヒストグラム1102と非検出対象データのフィルタ出力ヒストグラム1101とを示す図である。CPU208は、ヒストグラムを使用して検出対象と非検出対象とをよく分離する閾値Thを決定する。更に、ステップS105でCPU208は、決定した閾値Thを用いて全ての学習データに対する検出誤り率を算出する。式(6)は全ての学習データに対する重み付き誤り率である。
【数6】
ここで、jはフィルタ番号である。iは学習データ番号である。tは弱判別器番号である。
【0031】
hj(xi)は選択した矩形フィルタによる判定出力であり、CPU208は、前記閾値Thを使用して入力対象データxiが検出対象である場合は1を出力し、検出対象を含まない場合は0を出力する。yiは正解ラベルであり入力画像データが検出対象であるか否かによってそれぞれ1又は0が割り当てられている。矩形フィルタ評価ステップ(S105)ではCPU208は、式(6)の重みつき誤り率を算出する。CPU208は、以上の処理(ステップS104、S105)を全ての矩形フィルタ候補に対して実行する。
【0032】
矩形フィルタ候補に対する全ての重みつき誤り率Ejの算出が終了すると(ステップS106)、CPU208は、最も誤り率Ejの小さい矩形フィルタ(即ち最も判別性能が高い矩形フィルタ)を弱判別器として選択する(ステップS107)。
次に、CPU208は、選択した矩形フィルタのEjから式(7)により弱判別器に対する信頼度を算出する(ステップS108)。
【数7】
ここで、tは弱判別器段数である。
CPU208は、算出した信頼度αtをステップS109でRAM210に記録する。
【0033】
ステップS110ではCPU208は、学習データに対する重み係数を下記演算式(8)で更新する。
【数8】
ここで、tは弱判別器段数、iは学習データ番号である。
但し、式(8)で更新する重み係数Wt,jは正しく検出できた学習データiに付随する係数のみである。即ちCPU208は、正しく検出された学習データの重みが小さくなる様に更新する。つまり、ステップS110ではCPU208は、検出を誤った学習データに対する重みを相対的に大きくしていく。
ここまでの処理(ステップS103〜ステップS110)でCPU208は、1つの弱判別器を生成する。
【0034】
次に、ステップS111でCPU208は、RAM210に記録された各弱判別器に対する信頼度の推移に基づいて過学習の判定を行う。図13は、弱判別器の段数(順に生成する弱判別器の番号)とその信頼度の推移との一例を説明する図である。横軸は順に生成する弱判別器の段数を示し、縦軸は弱判別器に対応する信頼度の値(信頼度値)を示す。ここでの推移とは順に生成する弱判別器の番号と番号に対応する弱判別器に付加される信頼度との関係を時系列データと見なした場合の様子を意味する。
【0035】
図13の場合、1201で示す付近の弱判別器で信頼度が急上昇している。ブースティング学習では学習データに対する重み係数を式(8)で更新していくことで苦手な学習データを検出する弱判別器を順次学習生成していく。従って学習初段を除いて信頼度は概ね一定(或いは緩やかな線形変化)の値を取る。しかしながら、生成されるブースティング判別器は弱判別器数の増加と共に判別性能が向上し、学習データの数が十分でない場合、重み付き誤り率Etが極端に小さな値になる場合がある。このような場合、データセットに対する過学習に陥っている可能性が高い。式(7)より、誤り率Etの急激な変化は信頼度αtの変化を引き起こす。本実施形態では、このような観点から、信頼度の推移を過学習の判定条件とする。より具体的に説明するとCPU208は、ステップS108で得られた信頼度とそれ以前に生成した弱判別器の信頼度から得られる予測値との差分量を判定し、差分量が予め定める閾値以上になった場合、過学習と判定する。
【0036】
ステップS1111〜ステップS1113は信頼度推移判定処理(ステップS111)の詳細を示すステップである。ステップS1111ではCPU208は、ステップS109で記録された既に生成済みの弱判別器に対する信頼度を読み出す。ステップS1112ではCPU208は、読み出した複数の弱判別器の信頼度を基に弱判別器の信頼度を予測する。式(9)に単純な移動平均により信頼度の予測を行う場合の演算式を示す。
【数9】
ここで、Ptは、信頼度の予測値である。aは、移動平均を取る数である。
【0037】
ステップS1112ではCPU208は、式(9)に示す演算で予測値Ptを算出する。ステップS1113ではCPU208は、ここで得られたPtと算出したt番目の弱判別器の信頼度αtとの差分値を算出する。即ちCPU208は、式(10)の左辺値を算出する。
【数10】
【0038】
ステップS112ではCPU208は、ステップS1113で算出した差分値と閾値とを比較して過学習か否かを判定する。即ちCPU208は、このステップで式(10)により過学習か否かを判定する。
図14は、過学習判定の様子を模式的に説明する図である。2101は内部パラメータである信頼度の推移を示す。2102はt番目の弱判別器生成時の信頼度予測値Ptを示す。CPU208は、予測値と実際の信頼度との差2103を閾値処理することで内部パラメータの推移の変化(変曲点)を検出する。
なお、ここでは、簡単のため式(9)で示す移動平均値を使用したが、他の様々な手法を適用してもよい。
【0039】
ステップS112で過学習であると判断した場合、CPU208は、ステップS113で学習に使用するデータを追加する。ここでは、CPU208は、記憶部212に格納する学習データの中から学習に使用されていないデータをランダムに選択して学習に使用するデータとして登録する。ステップS114ではCPU208は、生成済みの弱判別器の中で、最後に生成した弱判別器からさかのぼって予め定める数の弱判別器を廃棄(又は論理的に生成した弱判別器を削除)する。これは、ステップS112で過学習と判定した時点で生成されている最新の強判別器は、既に過学習状態の強判別器を構成する可能性が高いためである。即ち、CPU208は、学習データの追加後は、最後に生成した幾つかの弱判別器を廃棄し、弱判別器段数を遡って処理を再開する。
【0040】
図15は、弱判別器の廃棄の例を説明する図である。22001〜22200はCPU208が生成した弱判別器を示し、22001から順にCPU208が学習によって生成したものとする。22200で示す弱判別器の学習時に過学習を判定した場合、CPU208は、22197〜22200の弱判別器を廃棄して、22197で示す弱判別器の学習から再開する。ステップS114では、CPU208は、廃棄する弱判別器の数に応じて生成済み弱判別器数を管理するカウンタを減ずる。
次にCPU208は追加した学習データセットを用いてステップS114で残された弱判別器に対して順次検出処理を実行し、新たに生成する弱判別器の学習のための重み係数を再計算する(ステップS115)。即ち、CPU208は、新たな学習データセットを用いて各弱判別器に対応する式(8)の演算のみを再計算する。以降、CPU208は、ステップS115で再計算した重み係数を使用して、新たな弱判別器の追加学習処理を継続する。
【0041】
ステップS116ではCPU208は、条件を満たすブースティング判別器が生成したか否かを判定し、条件を満たさない場合、ステップS103に戻って弱判別器の生成処理(学習処理)を継続する。ステップS116ではCPU208は、生成した弱判別器の数等の条件に従って処理の終了判定を行う。
以上、本実施形態によれば、弱判別器生成の際に算出する信頼度を基に過学習を判定し、学習データを自動的に追加することが可能になる。これにより、簡単な処理の追加で汎化性能の高い判別器を自動学習させることが可能になる。
【0042】
<実施形態2>
実施形態1では式(7)に示す信頼度を評価値として、その推移で過学習を判定する場合について説明したが、本実施形態ではブースティング判別器の平均累積スコア値を評価値として、その推移に従って過学習を判定する場合について説明する。
本実施形態では、実施形態1との違いについてのみ説明する。図16は、複数の弱判別器で構成する1つのブースティング判別器を学習する場合の例を説明するフローチャート(その2)である。ステップ1301〜ステップS1308は実施形態1におけるステップS101〜S108と同じであるため説明を省略する。但し、本実施形態では、ステップS1317で、CPU208は、検出時と同様に、矩形フィルタ評価時(ステップS1305)のフィルタ判別結果を基に累積スコアを算出し、各学習データに対する累積スコア値の総和を記録する。ここで、累積スコアとは累積した加算器941〜94nの出力であり、実施形態1で説明した様に、弱判別器921〜92nの判定結果に信頼度1〜信頼度nを乗じた値の累積加算値である。平均累積スコアとは各学習データの検出時にステップS1317で算出する累積スコアを全学習データで平均した値である。式(11)に平均累積スコア値
【数11】
の算出式を示す。
【数12】
ここで、tはフィルタ段数である。iは学習データ番号である。mは学習データ数である。
【0043】
ステップS1309ではCPU208は、ステップS1317で記録した累積スコア総和値を使用して式(11)の平均累積スコアを算出する。ステップS1310でCPU208は実施形態1のステップS110と同様に重み係数を更新する。
ステップS1311ではCPU208は、平均累積スコアの推移に基づいて過学習を判定する。図17は、平均累積スコアの推移を模式的に示す図である。横軸は順に生成する弱判別器の番号、縦軸は弱判別器番号に対する平均累積スコアの値である。この場合、1401で示す付近で累積スコアの平均値が急上昇する。これは、累積スコアが信頼度を累積した値であるため、信頼度値の増加に応じて累積スコアも関連を持って変化していくことによりに生じる現象である。累積スコアは信頼度の累積加算値であることから、信頼度の増加をより高い尤度をもって判定することができる(信頼度の推移の変化が強調されるため)。
【0044】
ステップS13111〜ステップS13113は平均累積スコア推移判定処理のステップ(S1311)の詳細を説明する動作フローである。ステップS13111ではCPU208は、ステップS1309で算出し、記録した平均累積スコアを読み出す。ステップS13112ではCPU208は、ステップS13111で読み出した過去の平均累積スコアを用いで累積スコアを予測する。ここでも実施形態1と同様に単純な移動平均により予測を行う。
【数13】
ここで、Ptは平均累積スコアの予測値である。aは移動平均を取る数である。
【0045】
ステップS13112ではCPU208は、式(12)に示す演算で予測値Ptを算出する。ステップS1113では、CPU208は、得られたPtとStとの差分値を算出する。即ちCPU208は、(13)式の左辺値を算出する。
【数14】
【0046】
ステップS1312ではCPU208は、ステップS13113で算出した差分値と予め定める閾値とを比較して過学習を判定する。即ちCPU208は、式(13)により過学習を判定する。
以下、ステップS1313〜ステップS1316は実施形態1のステップS113〜ステップS116と同様であるため説明を省略する。
以上、本実施形態によれば、累積スコアの学習データに対する平均値の推移を判定することで過学習をより適切に判定することができる。
【0047】
<実施形態3>
実施形態1では式(7)に示す信頼度を評価値として、その推移で過学習を判定する場合について説明したが、本実施形態では弱判別器の打ち切り閾値を評価値として、その推移に従って過学習を判定する場合について説明する。
本実施形態では、実施形態1との違いについてのみ説明する。図18は、第3の実施形態における判別処理部203の構成を示す図である。実施形態1では、全ての弱判別器の累積スコアを最終判定処理部960で閾値処理することで検出対象が存在するか否かを判定していた。非特許文献1に開示の手法では、前述したように、このようなブースティング判別器をカスケードに接続しブースティング判別器単位で処理の打ち切りを判定することで高速化を実現していた。本実施形態では、図18に示す様に、各弱判別器の累積スコア出力に対して打ち切りの有無を判定する打ち切り判定処理部1591〜159n−1を設け、弱判別器単位で処理の打ち切りを判定する。なお、図18において打ち切り判定処理部1591〜159n−1以外の処理部ロックは図6の対応するブロックと同一であるため説明を省略する。また、図6と同様に、本実施形態の弱判別器1501〜150nも物理的には1つの弱判別器1501を時分割に使用して演算するものとする。図19は、検出処理時の動作を説明する図(その2)である。
【0048】
以下、図18及び図19を使用して、本実施形態に関するブースティング判別器の検出動作を説明する。ステップS1601〜ステップS1604は実施形態1におけるステップS1001〜ステップS1004と同一である。
以下、ステップS1605〜S1612は判別処理部203のハードウェア処理に関する動作を説明するフローである。
先ずステップS1605で処理ブロックを決定する。処理ブロックは図4の62に示す検出ウインドウであり、ウインドウを1画素或いは1ライン単位で走査させながら検出を行うことで全画像中の検出対象オブジェクトを抽出する。
処理ブロックを決定すると、順次、弱判別器演算処理を開始する。先ず、パラメータメモリを参照して、第1番目の弱判別器を構成するためのデータを読み出す(ステップS1606)。制御部980はアドレスカウンタ970を制御することで弱判別器に対応するパラメータメモリの内容を順次読み出す。パラメータメモリの読み出しを完了すると、ステップS1606で読み出した座標情報に従って、所定のSATデータを読み出す(ステップS1607)。次にステップS1608で所定の矩形フィルタ演算処理を実行する。ここでの演算内容は式(3)の左辺値演算に相当する積和演算である。ステップS1609ではフィルタ演算処理ステップ(S1608)の結果と閾値とを比較し、その結果に基づいて累積スコアを算出する。より具体的に説明すると、式(3)に基づく閾値処理結果である弱判別器921〜92nの出力値(対象物であると判定した場合は+1、非対象物であると判定した場合は−1を出力)に信頼度1〜信頼度nを乗じた値を加算器941〜94nで累積する。
【0049】
次にステップS1610で累積スコア値と学習によって定める打ち切り閾値とを比較する(打ち切り判定処理部1591〜159n−1)。ここでの打ち切り閾値は学習時に決定する値であり、パラメータメモリに記録されているものである。打ち切り閾値の詳細は後述する。累積スコア値が閾値以下の場合、処理ブロックは検出対象オブジェクトでは無いと判断して次のブロックの処理を継続する。累積スコア値が打ち切り閾値を超える場合、所定の数の弱判別器演算を繰り返す(ステップS1606〜ステップS1611)。弱判別器による打ち切りが発生しなかった場合、ステップS1612で、累積スコアを識別閾値と比較する。ここで、処理対象ブロックに検出対象オブジェクトが存在するか否かを最終閾値判定し、その結果を図示しないメモリに記録する。弱判別器による打ち切りが発生した場合、ステップS1612では、最終識別判定は実施せず、検出対象オブジェクトが存在しなかった旨の情報を記録する。
以上の処理を、検出ウインドウを走査しながら繰り返すことで検出対象オブジェクトの存在有無とその位置を判定する(ステップS1605〜ステップS1613)。
【0050】
判別処理部203は、1フレームの処理が終了するとCPU208の割り込み信号を有効化する。CPU208は、割り込み信号に反応して、判別処理部203の検出結果をRAMに210に転送する(ステップS1614)。以上の処理を各フレームに対して順次繰り返し実行する。
このように、本実施形態のブースティング判別器では、弱判別器単位で検出処理の打ち切りを行うことでより高速な検出が可能になる。
次に、本実施形態に関するブースティング判別器の学習処理について説明する。図20は、複数の弱判別器で構成する1つのブースティング判別器を学習する場合の例を説明するフローチャート(その3)である。ここでも、実施形態1との違いについてのみ説明する。ステップS1701〜ステップS1708は実施形態1におけるステップS101〜ステップS108と同一である。
【0051】
ステップS1709ではCPU208は、弱判別器毎に打ち切りを判定するための閾値を決定する。ここでは矩形フィルタの判定閾値を決定した手法と同様に、CPU208は、検出対象データに対する累積スコアのヒストグラムと、非検出対象データに対する累積スコアのヒストグラムとから閾値を決定する。
図21は、閾値の決定法を説明するための累積ヒストグラムの例を模式的に説明する図である。1801は非検出対象データに対する累積スコアのヒストグラムである。1802は検出対象データに対する累積スコアのヒストグラムである。CPU208は、打ち切り閾値を、検出対象データの誤打ち切り割合(誤って打ち切る検出対象データの打ち切り数÷検出対象データ数)が所定以下になる様に閾値を決定する。CPU208は、例えば、ヒストグラムの積分値等を利用して簡単に決定することができる。ステップS1709でCPU208は、決定した打ち切り閾値を弱判別器番号に対応して記録する。
【0052】
図22は、パラメータメモリ910の内容の一例を説明するための図(その2)である。実施形態1におけるパラメータメモリ(図7)に対して、図22のパラメータメモリでは、弱判別器1〜n毎に「打ち切り閾値1〜n」が追加されている。CPU208は、検出時は前述したように、パラメータメモリ上の打ち切り閾値を使用して処理の打ち切りを判定する。
ステップS1710はステップS110と同一である。
ステップS1711ではCPU208は、打ち切り閾値の推移から過学習を判定する。
図23は、弱判別器の段数と対応する打ち切り閾値の推移の例を説明する図である。横軸は順に生成する弱判別器の番号を示し、縦軸は弱判別器に対応する打ち切り閾値を示す。図23の場合、1901で示す付近で打ち切り閾値が急上昇している。打ち切り閾値は、結果的に、実施形態2で説明した平均累積スコアに関連する値となるため(検出対象オブジェクトの打ち切り率を一定とした場合、平均累積スコアの上昇と共に打ち切り閾値も上昇する)、信頼度の急変に伴う平均累積スコアの急変と同様に変化する。本実施形態ではこの様な打ち切り閾値の推移を過学習の判定条件とする。より具体的に説明すると、CPU208は、ステップS1709で決定した打ち切り閾値とそれ以前に生成した弱判別器の打ち切り閾値から得られる予測値とのずれを判定し、ずれが予め定める閾値以上になった場合、過学習と判定する。
【0053】
ステップS17111〜ステップS17113は打ち切り閾値推移判定処理のステップS1711の内容を示すステップである。ステップS17111ではCPU208は、ステップS1709で記録した既に生成済みの弱判別器に対する打ち切り閾値を読み出す。ステップS17112ではCPU208は、読み出した複数の弱判別器の打ち切り閾値Thtから生成した弱判別器の打ち切り閾値を予測する。式(14)に単純な移動平均により打ち切り閾値の予測を行う場合の演算式を示す。
【数15】
Ptは打ち切り閾値の予測値である。aは移動平均を取る数である。
【0054】
ステップS17112ではCPU208は、式(14)に示す演算で予測値Ptを算出する。ステップS17113では、CPU208は、ここで得られたPtとThtとの差分値を算出する。即ちCPU208は、式(15)の左辺値を算出する。
【数16】
【0055】
ステップS1712ではCPU208は、ステップS17113で算出した差分値と閾値とを比較して過学習を判定する。即ちCPU208は、式(15)により過学習を判定する。
以下ステップS1713〜ステップS1716は実施形態1のステップS113〜ステップS116と同一である。
以上、本実施形態によれば、弱判別器毎に決定する打ち切り閾値を利用して過学習を判定することが可能になる。この場合、平均累積スコアを基に判定する方式に比べて少ない処理機能の追加で同様の性能の判定を実現できる。
【0056】
<実施形態4>
実施形態1では式(7)に示す信頼度を評価値として、その推移で過学習を判定する場合について説明したが、本実施形態では過学習の判定に更に検定データを用いた判定も組み合わせた場合について説明する。
本実施形態では、実施形態1との違いについてのみ説明する。図24は、複数の弱判別器で構成する1つのブースティング判別器を学習する場合の例を説明するフローチャート(その4)である。ステップS2001〜S2012及びステップS20111〜S20113は実施形態1の対応する処理ステップS101〜S112及びS1111〜S1113と同一であるため説明を省略する。
【0057】
ステップS2012で過学習と判定した場合、CPU208は、ステップS2017で性能検定処理を実行する。このステップでは、CPU208は、記憶部212に保持された学習に未使用の画像データを使用して検出性能の検定を行う。より具体的に説明すると、CPU208は、検定用データを使用した検出対象オブジェクトの検出率及び非検出対象オブジェクトの誤検出率等から弱判別器の性能を判断する。ステップS2018ではCPU208は、ステップ2017で評価した検出性能(検定結果)を基準にして追加学習データの有無を判定する。ここでの判定は様々な手法が適用可能である。例えば、CPU208は、識別閾値を調整して検出率を一定にした場合の誤検出率等から判定を行う。より具体的に説明すると、CPU208は、直前に生成した弱判別器迄の全ての弱判別器群を使用して算出した検出性能と直前に生成した弱判別器を含む幾つかの弱判別器を除く弱判別器群を用いて算出した検出性能とを比較して判定を行う。即ち、CPU208は、弱判別器を追加したにもかかわらず性能の向上が見られない或いは性能が劣化する場合、データを追加すると判定する。データを追加すると判定した場合、CPU208は、ステップS2013〜ステップS2015で学習データを追加する。ステップS2013〜ステップS2016は実施形態1のステップS113〜ステップS116と同一であるため説明を主略する。
【0058】
以上本実施形態によれば、学習時に得られる内部パラメータである信頼度を用いて過学習の判定を行い、過学習の可能性が予想された場合にのみ検定処理を行うため、所定のタイミングで毎回検定処理を行う場合に比べて学習時間を短縮させることができる。
【0059】
<その他の実施形態>
上述した実施形態は画像データに対して処理する場合について説明したがこれに限るわけではない。音声データ等の1次元データから特定のパターンを抽出する場合等にも適用することができる。
また、上述した実施形態では式(7)に示す信頼度αtを評価値として、その推移に基づいて、過学習の判定を行う場合について説明したが、αtがEtの関数であることからαtの代わりに誤り率Etを評価値として使用して過学習の判定を行ってもよい。
また、上述した実施形態ではブースティングアルゴリズムによる識別器を例に説明を行ったが、ブースティング判別器における信頼度と同様なパラメータを利用する他のアンサンブル学習アルゴリズムに適用してもよい。
【0060】
また、上述した実施形態では弱判別器として矩形フィルタを用いた方式に適用した場合について説明したが、これに限るわけではなく、他の様々な弱判別器を用いた検出器に適用可能である。
また、上述した実施形態では内部パラメータ値の弱判別器段数に対する移動平均を使用して過学習の判定を行ったが、これに限るわけではなく従来提案されている様々な変曲点の算出手法を適用することができる。例えば、微分処理を利用する手法やその他の様々な予測手法を適用することもできる。また、高次の予測や非線形の予測手法を適用してもよい。更に、内部パラメータの推移から過学習パターンを検出する判別器を学習によって生成する等の方法でもよい。例えば複数の内部パラメータ値を入力ベクトルとしてSVM(Support Vector Machine)等により判別器を学習する方法を適用することもできる。この場合、過学習となった特定のパターンを学習データとして予め判別器を学習しておく。
【0061】
また、上述した実施形態では信頼度、累積スコア、打ち切り閾値等の推移に基づいて過学習の判定を行ったが、このような時系列データを利用した判定ではなくその絶対値で判定を行ってもよい。この場合、判定精度は低下するが、より簡単な構成で過学習の判定を行うことができる。
また、上述した実施形態では選択した学習データセット中の全ての学習データを使用して学習を行う場合について説明した。しかしながら、特許文献1に開示されている様に、学習データそれぞれに付与される重み係数に従って学習データをサンプリングして学習するようにしてもよい。
【0062】
また、上述した実施形態では判別処理部203をハードウェアにより実現する場合について説明したが、全てソフトウェアにより実現してもよい。
また、上述した実施形態で説明した機能は、学習専用の装置や汎用コンピュータのソフトウェアとしても適用することができる。
また、上述した実施形態では、学習データを情報処理装置の記録部に全て格納して選択的に利用する場合について説明したが、例えばネットワークに接続する通信部213を介して追加データを他の装置から取得、又は他の装置から転送するようにしてもよい。また、実施形態4で説明したように検定データを使用して性能解析を行う場合、通信部213を介して検定データを他の装置から情報処理装置に追加するようにしてもよい。
【0063】
また、本発明の目的は、上述した実施形態の機能を実現するソフトウェアのプログラムコードを、装置の中央演算処理手段(CPUやMPU)が記憶媒体から読み出し実行することによっても達成される。
また、読み出したプログラムコードの指示に基づき、オペレーティングシステム(OS)等が実際の処理の一部又は全部を行うことで上述した実施形態の機能が実現される場合も含まれる。
本発明を前記記憶媒体に適用する場合、その記憶媒体(コンピュータ読み取り可能な記憶媒体)には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【0064】
以上、上述した各実施形態によれば、簡易に過学習を検出し、効率的に学習を行うことができる。
【0065】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
なお、上述した各実施形態は任意に組み合わせて実行するようにしてもよい。
【符号の説明】
【0066】
201 画像入力部、202 前処理部、203 判別処理部
【特許請求の範囲】
【請求項1】
記憶装置に保持されている学習データに基づいて、弱判別器について順次、学習を実行する学習手段と、
前記学習の際に算出する弱判別器に対する評価値の推移に基づいて、過学習か否かを判定する判定手段と、
前記判定手段により過学習であると判定された場合、新たな学習データを追加し、前記学習手段に弱判別器についての学習を継続させる制御手段と、
を有することを特徴とする情報処理装置。
【請求項2】
前記評価値は、信頼度であることを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記評価値は、重み付き誤り率であることを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記評価値は、前記弱判別器を構成する判別フィルタの判別結果に関する累積スコアの平均である平均累積スコアであることを特徴とする請求項1に記載の情報処理装置。
【請求項5】
前記評価値は、前記弱判別器の打ち切り閾値であることを特徴とする請求項1に記載の情報処理装置。
【請求項6】
前記判定手段は、前記過学習であると判定した場合、検定用データを用いて弱判別器の性能を検定し、検定結果に基づいて学習データを追加するか否かを判定し、学習データを追加すると判定した場合、前記制御手段は、新たな学習データを追加し、前記学習手段に弱判別器についての学習を継続させることを特徴とする請求項1乃至5の何れか1項に記載の情報処理装置。
【請求項7】
前記制御手段は、前記過学習であると判定された場合、過学習であると判定した弱判別器を含む、予め定められた数の弱判別器を廃棄し、新たに追加した学習データを含む学習データに基づいて、前記学習手段に廃棄した弱判別器に遡って学習を実行させることを特徴とする請求項1乃至6の何れか1項に記載の情報処理装置。
【請求項8】
情報処理装置が行う情報処理方法であって、
記憶装置に保持されている学習データに基づいて、弱判別器について順次、学習を実行する学習ステップと、
前記学習の際に算出する弱判別器に対する評価値の推移に基づいて、過学習か否かを判定する判定ステップと、
前記判定ステップにおいて過学習であると判定された場合、新たな学習データを追加し、弱判別器についての学習を実行する追加学習ステップと、
を有することを特徴とする情報処理方法。
【請求項9】
前記評価値は、信頼度であることを特徴とする請求項8に記載の情報処理方法。
【請求項10】
前記評価値は、信頼度であることを特徴とする請求項8に記載の情報処理方法。
【請求項11】
前記評価値は、重み付き誤り率であることを特徴とする請求項8に記載の情報処理方法。
【請求項12】
前記評価値は、前記弱判別器を構成する判別フィルタの判別結果に関する累積スコアの平均である平均累積スコアであることを特徴とする請求項8に記載の情報処理方法。
【請求項13】
前記評価値は、前記弱判別器の打ち切り閾値であることを特徴とする請求項8に記載の情報処理方法。
【請求項14】
前記判定ステップでは、前記過学習であると判定した場合、検定用データを用いて弱判別器の性能を検定し、検定結果に基づいて学習データを追加するか否かを判定し、前記追加学習ステップでは、学習データを追加すると判定した場合、新たな学習データを追加し、弱判別器についての学習を実行することを特徴とする請求項8乃至13の何れか1項に記載の情報処理方法。
【請求項15】
前記追加学習ステップでは、前記過学習であると判定した場合、過学習であると判定した弱判別器を含む、予め定められた数の弱判別器を廃棄し、新たに追加した学習データを含む学習データに基づいて、廃棄した弱判別器に遡って学習を実行することを特徴とする請求項8乃至14の何れか1項に記載の情報処理方法。
【請求項1】
記憶装置に保持されている学習データに基づいて、弱判別器について順次、学習を実行する学習手段と、
前記学習の際に算出する弱判別器に対する評価値の推移に基づいて、過学習か否かを判定する判定手段と、
前記判定手段により過学習であると判定された場合、新たな学習データを追加し、前記学習手段に弱判別器についての学習を継続させる制御手段と、
を有することを特徴とする情報処理装置。
【請求項2】
前記評価値は、信頼度であることを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記評価値は、重み付き誤り率であることを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記評価値は、前記弱判別器を構成する判別フィルタの判別結果に関する累積スコアの平均である平均累積スコアであることを特徴とする請求項1に記載の情報処理装置。
【請求項5】
前記評価値は、前記弱判別器の打ち切り閾値であることを特徴とする請求項1に記載の情報処理装置。
【請求項6】
前記判定手段は、前記過学習であると判定した場合、検定用データを用いて弱判別器の性能を検定し、検定結果に基づいて学習データを追加するか否かを判定し、学習データを追加すると判定した場合、前記制御手段は、新たな学習データを追加し、前記学習手段に弱判別器についての学習を継続させることを特徴とする請求項1乃至5の何れか1項に記載の情報処理装置。
【請求項7】
前記制御手段は、前記過学習であると判定された場合、過学習であると判定した弱判別器を含む、予め定められた数の弱判別器を廃棄し、新たに追加した学習データを含む学習データに基づいて、前記学習手段に廃棄した弱判別器に遡って学習を実行させることを特徴とする請求項1乃至6の何れか1項に記載の情報処理装置。
【請求項8】
情報処理装置が行う情報処理方法であって、
記憶装置に保持されている学習データに基づいて、弱判別器について順次、学習を実行する学習ステップと、
前記学習の際に算出する弱判別器に対する評価値の推移に基づいて、過学習か否かを判定する判定ステップと、
前記判定ステップにおいて過学習であると判定された場合、新たな学習データを追加し、弱判別器についての学習を実行する追加学習ステップと、
を有することを特徴とする情報処理方法。
【請求項9】
前記評価値は、信頼度であることを特徴とする請求項8に記載の情報処理方法。
【請求項10】
前記評価値は、信頼度であることを特徴とする請求項8に記載の情報処理方法。
【請求項11】
前記評価値は、重み付き誤り率であることを特徴とする請求項8に記載の情報処理方法。
【請求項12】
前記評価値は、前記弱判別器を構成する判別フィルタの判別結果に関する累積スコアの平均である平均累積スコアであることを特徴とする請求項8に記載の情報処理方法。
【請求項13】
前記評価値は、前記弱判別器の打ち切り閾値であることを特徴とする請求項8に記載の情報処理方法。
【請求項14】
前記判定ステップでは、前記過学習であると判定した場合、検定用データを用いて弱判別器の性能を検定し、検定結果に基づいて学習データを追加するか否かを判定し、前記追加学習ステップでは、学習データを追加すると判定した場合、新たな学習データを追加し、弱判別器についての学習を実行することを特徴とする請求項8乃至13の何れか1項に記載の情報処理方法。
【請求項15】
前記追加学習ステップでは、前記過学習であると判定した場合、過学習であると判定した弱判別器を含む、予め定められた数の弱判別器を廃棄し、新たに追加した学習データを含む学習データに基づいて、廃棄した弱判別器に遡って学習を実行することを特徴とする請求項8乃至14の何れか1項に記載の情報処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【公開番号】特開2010−257140(P2010−257140A)
【公開日】平成22年11月11日(2010.11.11)
【国際特許分類】
【出願番号】特願2009−105486(P2009−105486)
【出願日】平成21年4月23日(2009.4.23)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成22年11月11日(2010.11.11)
【国際特許分類】
【出願日】平成21年4月23日(2009.4.23)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]