(57)【要約】      （修正有）【課題】データ処理装置における内部メモリの回路規模を抑制しつつ、処理の高速化を図る。【解決手段】入力データに対してパラメータを参照してデータ処理を行い、その処理の結果に応じて、固定のパラメータを固定パラメータ保持部１１１３に保持させるか、可変のパラメータを可変パラメータ保持部１１１２に保持させるかを制御する。そして、データ処理を実行する際に、固定パラメータ保持部か可変パラメータ保持部の何れからパラメータを参照するかが切り替え（１１１４）られる。【選択図】図１１
2010271795.tif 000002
【特許請求の範囲】
【請求項１】
入力データに対して繰り返しデータ処理を行うデータ処理装置であって、
前記入力データに対してパラメータを参照してデータ処理を行う処理手段と、
前記処理手段により行われるデータ処理で参照される固定のパラメータを保持する固定パラメータ保持手段と、
前記処理手段により行われるデータ処理で参照される可変のパラメータを保持する可変パラメータ保持手段と、
前記固定パラメータ保持手段か前記可変パラメータ保持手段の何れから前記処理手段がパラメータを参照するかを切り替える切り替え手段と、
前記処理手段によって繰り返しデータ処理が行われる際に、前記データ処理による処理の結果に応じて、前記固定パラメータ保持手段か前記可変パラメータ保持手段の何れかにパラメータを保持させるように制御する制御手段と、
を有することを特徴とするデータ処理装置。
【請求項２】
前記制御手段は、前記処理手段が前記入力データに対してデータ処理を開始前の場合は前記固定パラメータ保持手段にパラメータを保持させ、前記繰り返しデータ処理を処理中の場合は前記可変パラメータ保持手段に保持させるように制御することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記切り替え手段は、前記制御手段が前記固定パラメータ保持手段又は前記可変パラメータ保持手段の何れにパラメータを保持させるかに従って前記制御手段によって前記切り替えが指示されることを特徴とする請求項１又は２に記載のデータ処理装置。
【請求項４】
前記データ処理はパターン照合処理であり、前記パラメータはパターン照合の際に参照する辞書データであることを特徴とする請求項１乃至３の何れか１項に記載のデータ処理装置。
【請求項５】
入力データに対して繰り返しデータ処理を行うデータ処理装置の処理方法であって、
処理手段が、前記入力データに対してパラメータを参照してデータ処理を行う処理工程と、
前記処理工程において行われるデータ処理で参照される固定のパラメータを固定パラメータ保持手段に保持する工程と、
前記処理工程において行われるデータ処理で参照される可変のパラメータを可変パラメータ保持手段に保持する工程と、
切り替え手段が、前記固定パラメータ保持手段か前記可変パラメータ保持手段の何れから前記処理手段がパラメータを参照するかを切り替える切り替え工程と、
制御手段が、前記処理工程において繰り返しデータ処理が行われる際に、前記データ処理による処理の結果に応じて、前記固定パラメータ保持手段か前記可変パラメータ保持手段の何れかにパラメータを保持させるように制御する制御工程と、
を有することを特徴とするデータ処理装置の処理方法。
【請求項６】
コンピュータを請求項１乃至４の何れか１項に記載のデータ処理装置における各手段として機能させるためのプログラム。
【請求項７】
請求項６に記載のプログラムを記録したコンピュータにより読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力データに対して繰り返しデータ処理を行うデータ処理装置及びその処理方法に関するものである。
【背景技術】
【０００２】
従来、デジタルカメラやプリンタでは、入力画像中の人物や顔といった特定の被写体を検出し、検出された被写体に適した処理を行う技術が提案されている。この特定の被写体を検出する一例として、顔に対して肌色補正処理を行うための人間の顔を検出する顔検出処理がある。
【０００３】
この顔検出処理には様々な手法が提案されており、非特許文献１（以下、Viola＆Jones手法）や人間の顔の対称的特徴、テンプレートマッチング、ニューラルネットワークなどを利用するものがある。
【０００４】
ここで、顔検出処理としてViola＆Jones手法を例に挙げて説明する。Viola&Jones手法では、Adaboostによる学習結果に基づいて識別処理が実行される。この識別処理は、図１に示すように、ある識別処理が識別を行った結果、次の識別処理を行う場合はTrueを出力し、次の識別処理を行わない場合はFalseを出力する。そして、Falseであった場合は識別処理を終了するというカスケード処理になっている。
【０００５】
顔認識の場合は、多くの顔データを入力し、顔の認識率や誤認識率がある一定の水準になるように学習させた結果、識別処理を行う段数と、辞書データが出力される。この識別処理とは、パターン照合処理のことである。よって、顔検出処理とは、この辞書データを用いたパターン照合処理群のことである。そして、辞書データとは、パターン照合処理に必要な特徴量やTrue又はFalse判定の基準に用いる閾値などのパラメータである。
【０００６】
図２は、顔認識における学習結果の一例を示す図である。図２において、２００は入力データである。２１０は辞書データの一部である特徴量であり、両目部分の小矩形と両目下部分（頬の部分）とを比べると、両目部分が両目下部分より黒っぽいという特徴を示す特徴量である。２１１も特徴量であり、両目部分において目の部分が黒っぽく、目と目の間である眉間部が目の部分に比べて白っぽいという特徴を示す特徴量である。
【０００７】
２２０、２２１は入力データ２００に対して特徴量２１０、特徴量２１１を実際に照合させてパターン照合処理を行っていく状態を示している。
【０００８】
また、Viola&Jones手法では、図３に示すように、ある区切り（ステージ）で識別処理が区切られ、ステージ毎に閾値を用いてTrue、Falseの識別を行い、顔と非顔を識別していく。また、前段のステージでは、false negative（顔を非顔と判定＝見落とし）を最小化し、false positive（非顔を顔と判定＝誤検出）が比較的高めの確率になるような単純な特徴のみを用いている。
【０００９】
このように、単純な特徴のみを用いると、少ない演算回数で識別処理が可能となるため、プロセッサを用いて処理を行った場合にも高速処理が可能となる。更に、なるべく多くの矩形領域を、より前段で効率良くFalse（非顔）と識別していくことができ、画像全体に対する顔検出処理を短時間に完了することが可能になる。
【００１０】
図４は、Viola&Jones手法をハードウェアとして実装する場合の概念的な構成を示す図である。図４において、識別器４０１には、ステージ０用辞書データである特徴量２１０が保存されている。また、上述したステージ０の結果がTrueかFalseであるかを判定するために用いる閾値０も、識別器４０１用に保存されている。このステージ０に必要な特徴量２１０と閾値０のことを、以下辞書データ０と呼ぶ。また、ステージ０の処理のことを、ステージ０処理と呼ぶ。
【００１１】
上述したように、入力データ２００が識別器４０１に入力され、辞書データ０を用いたステージ０処理が行われる。その結果（True又はFalse）がTrueであった場合、次の識別器４０２が識別器４０１と同様に、入力データ２００とステージ１処理（特徴量２１１）とのパターン照合処理と、閾値１との判定）を行う。ステージ０、１の違いは、ステージ毎に異なる辞書データである。
【００１２】
図５は、図４に示す概念的なハードウェア構成をより具体的な回路で構成した例を示す図である。図５において、処理部５０１は演算部５１１とパラメータ保持部５１２で構成される。
【００１３】
パラメータ保持部５１２は、ステージ処理に必要な辞書データを保持する内部メモリである。例えば、図４に示すステージ０処理を行う識別器４０１の場合、演算部５１１は、パラメータ保持部５１２に保持された辞書データ０に含まれる特徴量２１０を用いて入力データ２００をパターン照合する。ステージ０処理は、特徴量２１０のパターン照合範囲対象である矩形0_1に対する入力データと、矩形0_2に対する入力データとの総和を取り、矩形0_1と矩形0_2の輝度差を計算する。計算された輝度差が閾値０を超えている場合は、入力データ２００が特徴量２１０の示す特徴に合致するとし、顔である（Result=True）という結果を出力する。
【００１４】
辞書データ０に含まれる特徴量２１０には、照合すべき画素位置が示されている。そのため、パターン照合処理を行う演算部５０１は指定された画素位置における矩形内の画素値の総和を演算し、更に各矩形における総和の差分を演算し、閾値２１０との比較演算を行い、ステージ０処理の結果を出している。
【００１５】
即ち、演算部５１１は、辞書データにより指定される画素位置や閾値に従ってステージ非依存の同様の演算を行うように実装することが可能である。パラメータ保持部５１２には、処理に必要なステージ分或いは全ステージ分の辞書データを保持し、処理ステージに応じて辞書データを切り替えることにより、全ステージの識別処理を実現可能である。
【００１６】
近年、Viola&Jones手法に代表される認識処理をデジタルカメラなどに搭載し、例えば顔を検出して合焦を行うといった機能の実現が求められており、認識処理をリアルタイムに（高速に）実装する要求が高まっている。
【００１７】
一方、デジタルカメラなどのデジタル家電製品は非常にコストセンシティブであるため、認識処理機能はできるだけ安価に実装したい、即ち回路規模を最小限に抑えたいという要求も高い。
【００１８】
そこで、図５に示す例は、演算部５０１を全ステージ処理で共有することにより、回路規模を抑制した実装例である。この場合、パラメータ保持部５１２に何ステージ分の辞書データを保持するかが、回路規模の支配的な要因となる。
【００１９】
また、何ステージ分の辞書データを保持するかにより処理速度も大幅に異なる。例えば、非常に高速な処理が必要な場合には、全ステージ分の辞書データを高速アクセス可能な内部メモリ（パラメータ保持部５１２）に保持しておき、ステージ毎の処理を辞書データの入れ換えを行うことなく実現する方法が一般的に用いられている。
【００２０】
この方法を、図６を用いて、詳細に説明する。図６は、ステージ毎の処理を切り替えてパターン照合処理を実現する方法を説明するための図である。
【００２１】
パターン照合処理を行う処理部６０１はステージ非依存の実装となっているため、図５と同様に、演算部５１１を１つだけ搭載している。また、ステージ依存である辞書データを保持するパラメータ保存部５１２〜５１４は全ステージ（Ｎステージ）分搭載する。
【００２２】
処理を開始する前に、パラメータ保持部５１２〜５１４へ、全ての辞書データをロードしておく。入力データ２００が入力されると、パラメータ切り替え部５２１によって辞書データ０（ステージ０用辞書データ）が演算部５１１に設定され、ステージ０処理が開始される。その結果、Trueと判断された場合、入力データ２００に対して、パラメータ切り替え部５２１は次の辞書データ１（ステージ１用辞書データ）へ切り替えることで、次段であるステージ１処理が可能となる。
【００２３】
このように、全ステージ用辞書データを保持することにより、ステージ毎に必要な辞書データを内部メモリと比べてアクセススピードの遅い外部メモリからロードしなくて済む。従って、ロードする際のオーバーヘッドが不要となり、高速処理が可能となる。
【００２４】
ここで、図６に示す構成における処理時間を、図７、図８を用いて説明する。図７、図８は、パターン照合処理の処理時間を説明するための図である。
【００２５】
まず、処理時間の説明に必要な用語を定義する。通過率とは、演算部５１１がステージ処理を行った結果、Trueとなる確率である。ステージ処理時間とは、各ステージ処理にかかる時間のことである。パラメータロード時間とは、外部メモリに保存されている辞書データをステージ切り替えの際にパラメータ保持部５１２〜５１４へロードするのに必要な時間である。
【００２６】
以下の説明では、パラメータロード時間がステージ処理時間の４倍であると仮定する。外部メモリは、通常ＤＲＡＭなどで構成され、アクセス時間（パラメータロード時間）は数十ナノ秒から百数十ナノ秒のオーダーである。
【００２７】
一方、内部メモリのアクセス時間は数ナノ秒であり、Viola&Jones方式のパターン照合処理は上述の如く、非常に単純な演算であることから、この仮定は妥当である。
【００２８】
また、入力データに対してステージ０処理を行うことをＩ０（Ｓ０）とし、ステージ０処理に必要な辞書データ０のロードを行うことをＪ（Ｓ０）とする。
【００２９】
図７に示す例は、全ステージ処理の通過率が１／４であった場合を、図８に示す例は、全ステージ処理の通過率が１／２であった場合を示している。そして、図６に示す構成では、全ステージ処理に必要な辞書データ（０〜Ｎ）が保持されているため、図７及び図８に示す例の何れにおいても、処理は全く停止することなく行われる。
【００３０】
しかし、図６に示す構成の場合、処理が高速である一方、全ステージ分の辞書データを保持するための巨大な内部メモリを装備する必要があるため、非常にコストが高くなる、という問題がある。
【００３１】
そこで、パラメータ保持部５１２〜５１４を巨大化させないために、図９に示すように、可変パラメータ保持部９１２を１つ搭載し、ステージ毎に必要な辞書データのみを外部メモリからロードする構成が一般的に用いられている。
【００３２】
処理部９０１は、ステージ非依存の演算部９１１とステージ処理に依存する辞書データを保持するため、データ書き換え可能な可変パラメータ保持部９１２で構成されている。また、処理部９０１は画像入力データ（Data_in）と画像入力データが有効であることを示す信号valid_inに基づき、順次ステージ処理を実行する。この画像入力データは、制御部９０２内のデータ制御部９２１を経由して入力される。
【００３３】
演算部９１１は、入力されたData_inと可変パラメータ保持部９１２にある辞書データを用いて、パターン照合処理を行った結果をResult（valid_out）として出力する。この結果は、制御部９０２内の検知部９２２で検知される。
【００３４】
そして、制御部９０２は、その結果（Result,valid_out）がTrueであった場合、現在の入力データに対して、次のステージ処理を行う必要があることから、次のステージ処理に必要な辞書データの取得を行う。反対に、結果がFalseであった場合、或いは、最終段のステージ処理が終わった場合、次の入力データに対する処理を初段のステージ０処理から行う必要があることから、辞書データ０ロード（取得）を行う。
【００３５】
このように、ステージ処理切り替え（辞書データ取得）が必要な場合は、データ制御部９２１がパラメータ制御部９２３を介してパラメータ取得部９２６で必要な辞書データの入力要求を行い、不図示の外部メモリから辞書データを取得する。取得された辞書データは、パラメータ転送部９２５によって可変パラメータ保持部９１２へ転送される。
【００３６】
可変パラメータ保持部９１２へのパラメータ転送が終了した後、パラメータ切り替え制御部９２４が演算部９１１にパラメータ切り替え完了を通知することで、演算部９１１は次のステージ処理が可能となる。
【００３７】
このように、制御部９０２が、演算部９１１からの結果の検知を行い、必要に応じて、次に必要な辞書データを取得し、可変パラメータ保持部９１２へ転送する。そして、転送終了後、演算部９１１に指示することで、入力された（矩形）の入力データに対して順次ステージ処理が可能となる。
【００３８】
ここで、上述した図７及び図８を用いて図９に示す構成の処理時間について説明する。尚、図７に示す「従来例（図９）」では、処理の開始前に、可変パラメータ保持部９１２に辞書データ０が保存されているという前提で説明する。
【００３９】
入力画像が入力されると、『Ｉ０（Ｓ０）』の処理を行う。処理結果がFalseであったため、次の入力データに対する処理を行う。この時、可変パラメータ保持部９１２には、次に必要なステージ０用の辞書データ０が既に保存されているため、そのまま『Ｉ１（Ｓ０）』、『Ｉ２（Ｓ０）』と処理することができる。そして、Ｉ３（Ｓ０）を行った結果、Trueとなり、ステージ１用の辞書データ１のロード『Ｊ（Ｓ１）』が終わるのを待ってＩ３（Ｓ１）を行う。Ｉ３（Ｓ１）の結果、Falseとなり、次に必要なＪ（Ｓ０）を行い、Ｉ４（Ｓ０）を行う。
【００４０】
このように、従来例では、可変パラメータ保持部９１２が１つであるために、ステージ処理切り替えの度に、辞書データをロードする必要がある。そのため、辞書データロードの間、ステージ処理は停止する。
【００４１】
つまり、図７に示す従来例（図６）の全ステージ処理用の辞書データ０〜Ｎを保持している場合に比べ、ステージ処理が停止する時間（即ち、辞書データロード時間）分、遅延することになる。ここでステージ処理時間が１サイクルとした場合、図７に示す例では、Ｉ７（Ｓ１）の処理が終わるまでに、処理時間１０サイクルに加え、辞書データロードに要する１２サイクル（＝３回×４サイクル）分遅くなっていることがわかる。
【００４２】
また、図８に示す例では、図７に示す例と同様に、通過率には関係なく、ステージ切り替えの度に、辞書データをロードして処理を行っていく。ここでは、Ｉ４（Ｓ０）の処理が終わるまでに、従来例（図６）に比べ、２０サイクル（＝５回×４）サイクル分、遅延することになる。
【００４３】
上述したように、全ステージ分の辞書データを内部メモリに保持する構成の場合、処理は最速であるが、回路規模が最大となる。一方、１ステージ分の辞書データを内部メモリに保持し、ステージ処理毎に必要な辞書データを外部メモリからロードする構成の場合、回路規模は最小であるが処理速度の低下が著しい。
【００４４】
このような課題に対して、内部メモリの回路規模を抑制しつつ処理を高速化するための従来技術として、キャッシュ手法やプリフェッチ手法（次に必要となるパラメータを事前に準備する方法）が広く用いられている。
【００４５】
ここで、キャッシュ手法とプリフェッチ手法を詳細に説明する。尚、キャッシュ手法とプリフェッチ手法を実現するには、図１０に示すように、図９に示す構成に、複数の可変パラメータ保持部を切り替えるパラメータ切り替え部が加えられる。
【００４６】
図１０は、２つの可変パラメータ保持部を切り替えるパラメータ切り替え部を備えた例を示す図である。図１０に示す１００１、１００２は図９に示す９０１、９０２に、また１０１１、１０１２、１０２１〜１０２６は９１１、９１２、９２１〜９２６にそれぞれ相当する。そして、図１０に示す例では、可変パラメータ保持部１０１３及びパラメータ切り替え部１０１４が更に備えられている。
【００４７】
再び、図７及び図８を用いて、キャッシュ手法とプリフェッチ手法を用いた場合の処理時間を説明する。
【００４８】
まず、図１０に示す構成において、キャッシュ手法を用いた場合の処理時間を説明する（従来例（図１０：キャッシュ））。図７に示す例において、ステージ０、１しか処理が進まない間はキャッシュ手法の場合、全くロスがない。つまり、遅延サイクル＝０である。しかし、図７に示すように、Ｉ１５（Ｓ１）の結果がTrueとなる場合、次のＩ１５（Ｓ２）を行うには、Ｊ（Ｓ２）が必要となる。このＪ（Ｓ２）は、Ｊ（Ｓ０）が保存されている場所にロードするため、Ｊ（Ｓ０）を削除してしまうことになる。Ｉ１５（Ｓ２）の結果がFalseとなることで、次のＩ１６（Ｓ０）を行うために、先ほど削除してしまったＪ（Ｓ０）を再ロードする必要が生じる。
【００４９】
ここで、キャッシュに残っている辞書データが辞書データ０、２となることで、ステージ０処理が続く間は、遅延なく処理が進むが、Ｉ１９（Ｓ０）の結果がTrueとなり、Ｊ（Ｓ１）のロードが必要となる。その結果、Ｉ１６（Ｓ０）が終了するまでに、８サイクルの遅延が生じ、Ｉ１９（Ｓ１）が終了するまでに、１２サイクルの遅延が生じる。
【００５０】
次に、図８に示す例では、Ｉ３（Ｓ１）の結果がTrueとなり、Ｊ（Ｓ２）をロードするために、最古のデータであるＪ（Ｓ０）が消去されてしまう。更に、Ｉ３（Ｓ２）の結果がFalseとなることで、再度、Ｊ（Ｓ０）データ入力が必要となってしまう。
【００５１】
よって、Ｉ４（Ｓ０）が終了するまでに、８サイクル遅延することになる。
【００５２】
次に、図１０に示す構成において、プリフェッチ手法を用いた場合の処理時間を説明する（従来例（図１０：プリフェッチ））。但し、現在処理しているステージＡ処理の次に処理されるものがステージＡ＋１処理であると想定するプリフェッチ手法を例に挙げて説明する。
【００５３】
上述のキャッシュ方式と同様に、図１０において可変パラメータ保持部１０１２、１０１３を２つ搭載し、辞書データ０、１が予め保持されているとする。この場合において、Ｉ０（Ｓ０）の結果がTrueとなり、Ｉ１（Ｓ１）の処理が開始されると同時に、次に必要と想定されるＪ（Ｓ２）をロードするため、Ｊ（Ｓ０）は消去（上書き）されてしまう。Ｉ０（Ｓ１）の結果がTrueとなった場合は、プリフェッチされたＪ（Ｓ２）を用いて瞬時に処理が行える。一方、Ｉ０（Ｓ１）の結果がFalseとなった場合、Ｊ（Ｓ０）のロードが再度必要になるなど、次に必要となるパラメータを想定した結果が間違うことにより、パラメータロードミスのペナルティが発生する。
【００５４】
次に、図７に示す（従来例：プリフェッチ）を用いて説明する。図７に示す例において、Ｉ３（Ｓ１）を開始した時点で、プリフェッチとしてＪ（Ｓ２）のロードを開始する。その際、最古データであるＪ（Ｓ０）を消去してしまう。
【００５５】
しかし、Ｉ３（Ｓ１）の結果がFalseであることで、次の入力データに対して、初段のパターン照合処理に必要なＪ（Ｓ０）をロードする必要がある。そこで、この時点での最古データであるＪ（Ｓ１）を削除し、Ｊ（Ｓ０）を保存することになる。
【００５６】
次に、Ｊ（Ｓ０）が保持できた時点で、もう一方の可変保持部には、Ｊ（Ｓ２）が保存されていることになる。そこで、Ｉ４（Ｓ０）の処理を開始すると同時に、次ぎの処理に必要と予測されるＪ（Ｓ１）のロードを開始する。この例では、Ｉ７（Ｓ１）が終了するまでに、従来例（図６）に比べ、７サイクル分、遅延することになる。
【００５７】
次に、図８に示す例では、Ｉ４（Ｓ０）が終了するまでに、従来例（図６）に比べ、１９サイクル分、遅延することになる。
【００５８】
図７及び図８に示す例の何れの場合にも、認識処理において、有効なプリフェッチ動作を行えるのは、処理がTrueとなる間のみであることがわかる。更に、Ｉ１（Ｓ１）の結果がFalseになった場合に起きているように、Ｉ１（Ｓ１）の結果がFalseになった時点で、現在ロードしているステージ２用の辞書データＪ（Ｓ２）は必要ない。更にＪ（Ｓ２）をロードしたために、Ｊ（Ｓ０）を消去してしまうことから、再度Ｊ（Ｓ０）をロードする時間がかかることになる。
【００５９】
つまり、プリフェッチ方式において、ステージ処理結果がFalseになる回数が多いほど、無駄な辞書データロード回数が増えることになる。
【先行技術文献】
【非特許文献】
【００６０】
【非特許文献１】P. Viola and M. Jones, “Robust Real-time Object Detection”, SECOND INTERNATIONAL WORKSHOP ON STATISTICAL AND COMPUTATIONAL THEORIES OF VISION, July 13 2001.
【発明の概要】
【発明が解決しようとする課題】
【００６１】
内部メモリの回路規模を抑制しつつ処理を高速化するための従来技術であるキャッシュ手法及びプリフェッチ手法においては、以下のような問題があった。
【００６２】
まず、キャッシュ手法では、最古の辞書データから消すことで、現入力データの処理が可変パラメータ保存部の数より多いステージ処理へ進んでからFalseになった場合、次の入力データ処理で、必ず全辞書データの再ロードが必要となる。即ち、キャッシュ効果が全くでないという問題があった。
【００６３】
また、プリフェッチ手法では、次に必要となる辞書データを予測できないため、例えばステージ１処理中に辞書データ２のロードを行う。しかし、ステージ１処理結果がFalseになった場合、辞書データ２のロードが無駄になるだけでなく、次に必要となる辞書データ０が削除されてしまい、再度辞書データ０をロードする時間が必要になるという問題があった。
【００６４】
本発明は、データ処理装置における内部メモリの回路規模を抑制しつつ、処理の高速化を図ることを目的とする。
【課題を解決するための手段】
【００６５】
本発明は、入力データに対して繰り返しデータ処理を行うデータ処理装置であって、
前記入力データに対してパラメータを参照してデータ処理を行う処理手段と、
前記処理手段により行われるデータ処理で参照される固定のパラメータを保持する固定パラメータ保持手段と、
前記処理手段により行われるデータ処理で参照される可変のパラメータを保持する可変パラメータ保持手段と、
前記固定パラメータ保持手段か前記可変パラメータ保持手段の何れから前記処理手段がパラメータを参照するかを切り替える切り替え手段と、
前記処理手段によって繰り返しデータ処理が行われる際に、前記データ処理による処理の結果に応じて、前記固定パラメータ保持手段か前記可変パラメータ保持手段の何れかにパラメータを保持させるように制御する制御手段と、
を有することを特徴とする。
【発明の効果】
【００６６】
本発明によれば、固定パラメータ保持部と可変パラメータ保持部とを有し、使用頻度の高いパラメータを固定に保持することで、パラメータ切り替えに要するパラメータロード時間を短縮することができる。従って、データ処理装置における内部メモリの回路規模を抑制しつつ、処理を高速に行うことが可能となる。
【図面の簡単な説明】
【００６７】
【図１】顔検出処理における認識処理を説明するための図である。
【図２】顔認識における学習結果の一例を示す図である。
【図３】ステージ毎に閾値を用いて識別を行う識別処理を説明するための図である。
【図４】Viola&Jones手法をハードウェアとして実装する場合の概念的な構成を示す図である。
【図５】図４に示す概念的なハードウェア構成をより具体的な回路で構成した例を示す図である。
【図６】従来例における処理部の構成を示す図である。
【図７】パターン照合処理の処理時間を説明するための図である。
【図８】パターン照合処理の処理時間を説明するための図である。
【図９】可変パラメータ保持部を備えた従来の処理部の構成を示す図である。
【図１０】２つの可変パラメータ保持部を切り替えるパラメータ切り替え部を備えた例を示す図である。
【図１１】本実施形態におけるデータ処理装置の構成の一例を示すブロック図である。
【図１２】本実施形態におけるデータ処理装置の処理時間を説明するための図である。
【図１３】図１２に示す状態から更に処理が進んだときの状態を示す図である。
【発明を実施するための形態】
【００６８】
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
【００６９】
まず、入力データに対して繰り返しデータ処理を行い、各データ処理の結果に応じて、次のデータ処理を行うか否かを決定し、データ処理（所謂、カスケード処理）を実行するデータ処理装置の構成を説明する。
【００７０】
図１１は、本実施形態におけるデータ処理装置の構成の一例を示すブロック図である。図１１に示すように、図１０に示す従来の構成に対して固定パラメータ保持部１１１３を備え、演算部１１１１の結果に応じて制御部１１０２がパラメータ切り替えやパラメータ（入力）要求を行い、識別処理を行うものである。
【００７１】
制御部１１０２は、演算部１１１１（識別器）が出力する識別結果信号を入力することにより、次に必要な辞書データを検知する。検知の結果、固定パラメータ保持部１１１３に保存してある辞書データの参照が必要な場合は、パラメータ切り替え部１１１４を用いて固定パラメータよる演算を行う。
【００７２】
そして、固定パラメータ保持部１１１３及び可変パラメータ保持部１１１２の何れにも保存されていない辞書データが必要な場合は、パラメータ（入力）要求により辞書データを可変パラメータ保持部１１１２に設定する。
【００７３】
次に、本実施形態における制御部１１０２について詳細に説明する。前述したように、処理部１１０１は転送されてきた矩形画像データに対し、順次ステージ処理を実行する。この矩形画像データは、制御部１１０２内のデータ制御部１１２１を経由して演算部１１１１に入力される。そして、演算部１１１１からのステージ処理結果をデータ制御部１１２１内の検知部１１２２で検知する。
【００７４】
データ制御部１１２１は、検知部１１２２で検知したステージ処理の結果をパラメータ制御部１１２３のパラメータ切り替え制御部１１２４に通知する。パラメータ切り替え制御部１１２４では、辞書データ取得が必要なことが判明した場合、パラメータ制御部１１２３を経由し、パラメータ取得部１１２６に必要な辞書データの入力を要求する。
【００７５】
ここで、パラメータ取得部１１２６が辞書データを取得し、パラメータ転送部１１２５を用いて、処理中であれば可変パラメータ保持部１１１２へ転送し、処理開始前であれば固定パラメータ保持部１１１３へ転送する。そして、パラメータ制御部１１２３は、この転送が終了すると、パラメータ切り替え制御部１１２４にパラメータ制御信号を出力するように指示する。これにより、固定パラメータ保持部１１１３又は可変パラメータ保持部１１１２のパラメータを演算部１１１１に設定（又は参照）できるように、パラメータ切り替え部１１１４が切り替えを行う。
【００７６】
このように、制御部１１０２が演算部１１１１からステージ処理の結果を検知し、必要に応じて、次に必要な辞書データを取得し、可変パラメータ保持部１１１２へ転送する。この転送終了後、パラメータ切り替え部１１１４へ指示することで、転送されてきた矩形画像データへの、順次ステージ処理が可能となる。
【００７７】
次に、図１１に示す構成の処理時間を、図１２及び図１３を用いて説明する。この例でも、前述した図７及び図８と同じ条件で説明する。
【００７８】
即ち、パラメータロード時間がステージ処理時間の４倍であると仮定する。外部メモリは、通常ＤＲＡＭなどで構成され、アクセス時間（パラメータロード時間）は数十ナノ秒から百数十ナノ秒のオーダーである。一方、内部メモリのアクセス時間は数ナノ秒であり、Viola&Jones方式のパターン照合処理は上述の如く、非常に単純な演算であることからこの仮定は妥当である。
【００７９】
また、入力データに対してステージ０処理を行うことをＩ０（Ｓ０）とし、ステージ０処理に必要な辞書データ０のロードを行うことをＪ（Ｓ０）とする。
【００８０】
図１２は、本実施形態におけるデータ処理装置の処理時間を説明するための図である。図１２に示す（Ａ）の例は、全ステージ処理の通過率が１／４であった場合を、図１２に示す（Ｂ）の例は全ステージ処理の通過率が１／２であった場合を示している。
【００８１】
固定パラメータ保持部１１１３にステージ０処理用の辞書データ０を、可変パラメータ保持部１１１２に辞書データ１を保存しているため、ステージ０、１処理を行っている間は処理を続けることが可能である。つまり、図１２に示す（Ａ）のＩ７（Ｓ１）まで処理が停止する（無駄な）時間はなく、図７に示す従来例（図９、図１０に示すプリフェッチ手法）に比べ、処理時間が速くなっている。
【００８２】
次に、図１３を用いて、更に処理が進んだときの状態を説明する。Ｉ１５（Ｓ１）までは、ステージ０、１処理が続くことで、遅延なく進むが、Ｉ１５（Ｓ１）の結果がTrueとなることで、可変パラメータ保持部１１１２へＪ（Ｓ２）をロードする必要がある。このＪ（Ｓ２）をロードし、Ｉ１５（Ｓ２）を行った結果がFalseとなり、次のＩ１６（Ｓ０）を行う。
【００８３】
ここで、従来のキャッシュ方式では、Ｊ（Ｓ２）を行った際にＪ（Ｓ０）が消去されてしまっているが、本実施形態ではＪ（Ｓ１）を削除し、Ｊ（Ｓ０）は固定パラメータ保存部１１１３に保存しており、Ｉ１６（Ｓ０）は即座に処理が可能となる。そこで、Ｉ１６（Ｓ０）が終了するまでの従来例（図６）に対する遅延は、４サイクルとなる。
【００８４】
Ｉ１５（Ｓ１）まで遅延がなかった従来例（図１０）のキャッシュ手法では、前述したように、Ｉ１５（Ｓ１）の結果がTrueとなるため、最古データである辞書データ０を削除し、Ｊ（Ｓ２）をロードしている。そのため、Ｉ１６（Ｓ０）が終了するまでに、従来例（図６）に比べ、８サイクル遅延してしまう。
【００８５】
つまり、本実施形態の方が、早く処理ができていることがわかる。更に、本実施形態では、固定パラメータ保持部１１１３に保存されている辞書データ０によるステージ０処理を行っている間、可変パラメータ保持部１１１２に入っているＪ（Ｓ２）より先に、Ｊ（Ｓ１）が必要となることがわかっている。そのため、Ｉ１６（Ｓ０）を処理している間に、Ｊ（Ｓ１）を行うことが可能となる。そこで、Ｉ１９（Ｓ１）処理の際には、この例では、遅延なく処理でき、Ｉ１９（Ｓ１）が終了するまでの遅延時間は４サイクルとなり、従来例（図１０）のキャッシュ手法が１２サイクル遅延するのに比べ、早いことがわかる。
【００８６】
次に、図１２に示す（Ｂ）の例を用いて、可変パラメータロードを説明する。この例では、図１２に示す（Ａ）の例と同様に、ステージ０、１処理の間は、前述したように処理を続けることができる。しかし、Ｉ３（Ｓ１）の結果がTrueとなるため、可変パラメータ保持部１１１２にＪ（Ｓ２）をロードする必要がある。制御部１１０２は演算部１１１１からの演算結果を受けた後、Ｊ（Ｓ２）入力の要求を出し、その要求に対するパラメータ入力が制御部１１０２を経由し、可変パラメータ保持部１１１２に保持される。
【００８７】
制御部１１０２は、パラメータ切り替え部１１１４へ可変パラメータ保持部１１１２を選択するよう指示する。このパラメータ切り替え処理の後、演算部１１１１はＩ３（Ｓ２）を開始する。
【００８８】
次に、Ｉ３（Ｓ２）の結果がFalseとなるが、固定パラメータ保持部１１１３に、常に辞書データ０が保持されていることで、すぐＩ４（Ｓ０）の処理を開始できる。つまり、後段パターン照合処理から初段であるステージ０処理へ切り替える際に、固定パラメータ保持部１１１３に、常に保存されていることから、辞書データロードにかかる時間を削減できる。
【００８９】
また、ステージ０処理を処理中のため、次に必要となる辞書データがＪ（Ｓ１）であることが決まっており、可変パラメータ保持部１１１２にＪ（Ｓ１）をロード可能となる。つまり、このプリフェッチ動作により、Ｊ（Ｓ１）のパラメータロード時間を従来例（図９、図１０のキャッシュ方式）に比べ、短縮することが可能となる。
【００９０】
このように、図１２に示す何れの場合にも、従来例より本実施形態の方が高速に処理を行うことができる。
【００９１】
尚、固定パラメータ保持部１１１３と可変パラメータ保持部１１１２を明示的に分けて説明したが、同じパラメータ保持部のエリアを区別することで実施してもかまわない。
【００９２】
また、固定パラメータ保持部１１１３へのデータについては、実装する際に、識別対象が決まっている場合、パラメータをＲＯＭなどに保持してもかまわない。
【００９３】
一方、実装する際に、識別対象が複数ある場合やモードなどにより、変更する場合は、処理スタート前に固定パラメータ保持部１１１３に保持することで、複数の対象やモードへの対応が可能となる。
【００９４】
尚、本発明は複数の機器（例えば、ホストコンピュータ、インターフェース機器、リーダ、プリンタなど）から構成されるシステムに適用しても、１つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用しても良い。
【００９５】
また、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ若しくはＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行する。これによっても、本発明の目的が達成されることは言うまでもない。
【００９６】
また、コンピュータが読み取り可能なプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行う場合も含まれる。
【図１】
2010271795.tif 000003
【図２】
2010271795.tif 000004
【図３】
2010271795.tif 000005
【図４】
2010271795.tif 000006
【図５】
2010271795.tif 000007
【図６】
2010271795.tif 000008
【図７】
2010271795.tif 000009
【図８】
2010271795.tif 000010
【図９】
2010271795.tif 000011
【図１０】
2010271795.tif 000012
【図１１】
2010271795.tif 000013
【図１２】
2010271795.tif 000014
【図１３】
2010271795.tif 000015