(57)【特許請求の範囲】
【請求項１】
入力画像と被写体を識別するためのデータを有するパラメータとの照合処理を、複数段の処理工程が直列に接続された処理工程群の終端の工程に他の複数の処理工程群が分岐を介して接続された構造により、１つの分岐に後続する複数の処理工程群では、いずれか１つの処理工程群による処理を行うようにして実行する情報処理装置であって、
前記分岐を介して接続された複数の処理工程群のそれぞれについて、分岐直後から所定段までの処理工程に用いられるパラメータを固定パラメータとして固定的に記憶する第１記憶手段と、
前記照合処理に用いられるパラメータのうち前記固定パラメータとは異なるパラメータを可変パラメータとして書き換え可能に記憶するための第２記憶手段と、
前記処理工程群のそれぞれの処理工程について、当該処理工程に対応する前記固定パラメータまたは前記可変パラメータを参照して、前記入力画像から被写体を識別するための照合処理を行う演算手段と、
前記演算手段により前記処理工程群の終端以外の工程を実行中に、後続する処理工程において用いられるパラメータをプリフェッチして前記第２記憶手段に前記可変パラメータとして記憶するプリフェッチ手段と、
前記演算手段の演算結果により、前記処理工程群の終端以外の工程では後続の処理工程を実行するかを判定し、当該処理工程群の終端の工程では前記分岐を介して接続された複数の処理工程群のうちのいずれか１つの処理工程群による処理を実行するかを判定する判定手段と、
前記判定手段の判定結果に基づいて、次に前記演算手段が参照すべきパラメータとして、前記終端以外の工程で後続の処理工程を実行すると判定された場合は、プリフェッチされた前記可変パラメータを選択し、前記終端の工程で前記複数の処理工程群のうちのいずれか１つの処理工程群による処理を実行すると判定された場合は、前記固定パラメータの１つを選択する選択手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記分岐を介して接続された複数の処理工程群のうちのいずれか１つの処理工程群による処理を実行する場合、前記判定手段は、前記処理を実行する分岐先を決定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
コンピュータを、請求項１または２に記載の情報処理装置の各手段として機能させるためのプログラム。
【請求項４】
入力画像と被写体を識別するためのデータを有するパラメータとの照合処理を、複数段の処理工程が直列に接続された処理工程群の終端の工程に他の複数の処理工程群が分岐を介して接続された構造により、１つの分岐に後続する複数の処理工程群では、いずれか１つの処理工程群による処理を行うようにして実行する情報処理装置で実行される情報処理方法であって、
第１記憶手段が、前記分岐を介して接続された複数の処理工程群のそれぞれについて、分岐直後から所定段までの処理工程に用いられるパラメータを固定パラメータとして固定的に記憶する第１記憶工程と、
第２記憶手段が、前記照合処理に用いられるパラメータのうち前記固定パラメータとは異なるパラメータを可変パラメータとして書き換え可能に記憶する第２記憶工程と、
演算手段が、前記処理工程群のそれぞれの処理工程について、当該処理工程に対応する前記固定パラメータまたは前記可変パラメータを参照して、前記入力画像から被写体を識別するための照合処理を行う演算工程と、
プリフェッチ手段が、前記演算工程で前記処理工程群の終端以外の工程を実行中に、後続する処理工程において用いられるパラメータをプリフェッチして前記第２記憶手段に前記可変パラメータとして記憶するプリフェッチ工程と、
判定手段が、前記演算工程の演算結果により、前記処理工程群の終端以外の工程では後続の処理工程を実行するかを判定し、当該処理工程群の終端の工程では前記分岐を介して接続された複数の処理工程群のうちのいずれか１つの処理工程群による処理を実行するかを判定する判定工程と、
選択手段が、前記判定工程の判定結果に基づいて、次に前記演算工程で参照すべきパラメータとして、前記終端以外の工程で後続の処理工程を実行すると判定された場合は、プリフェッチされた前記可変パラメータを選択し、前記終端の工程で前記複数の処理工程群のうちのいずれか１つの処理工程群による処理を実行すると判定された場合は、前記固定パラメータの１つを選択する選択工程と、
を有することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、プログラムに関する。
【背景技術】
【０００２】
従来、デジタルカメラやプリンタでは、入力画像(以下入力データ)中の人物や顔といった特定の被写体を検出し、検出された被写体に適した処理を行う技術が提案されている。この特定の被写体を検出する一例として、顔に対して肌色補正処理を行うための人間の顔を検出する顔検出処理がある。
【０００３】
この顔検出処理には様々な手法が提案されており、複数段の識別器を用いる非特許文献１（以下、「Viola＆Jones方式」）や人間の顔の対称的特徴、テンプレートマッチング、ニューラルネットワークなどを利用するものがある。複数段の識別器を用いる方式では、１または少数の識別回路の辞書データ（パラメータ）を変更することにより、多数の識別器を実現することができる。その際、パラメータを必要に応じて書き換えることで、パラメータを記憶するための内部メモリの回路規模を抑制しつつ、処理を高速化するための技術として、キャッシュ方式及びプリフェッチ方式が用いられている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】P. Viola and M. Jones, "Robust Real-time Object Detection", SECOND INTERNATIONAL WORKSHOP ON STATISTICAL AND COMPUTATIONAL THEORIES OF VISION, July 13 2001.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
内部メモリの回路規模を抑制しつつ処理を高速化するための技術であるキャッシュ方式及びプリフェッチ方式においては、以下のような問題がある。キャッシュ方式では、最古のパラメータから順番に消去される。入力データの処理が動的パラメータ保存部の保存可能な個数（例えば、ｍ個）より多い識別処理（例えば、ｍ＋１番目）へ進んでから識別処理の結果がＦａｌｓｅになると、必ず全パラメータの再ロードが必要となる。即ち、分岐構造の場合、キャッシュ効果が発揮しにくいという問題がある。
【０００６】
また、プリフェッチ方式では、次に必要となるパラメータを予測して、例えば、パラメータiを用いた識別処理iの処理中に、識別処理i＋１で使用するパラメータi＋１のロードを行う。しかし、識別処理iの処理結果がＦａｌｓｅになった場合、予測が外れ、パラメータi＋１のロードが無駄になるという問題がある。更に、分岐構造に適用した場合、分岐先候補のパラメータを全てプリフェッチする方法か、プリフェッチせずに分岐先が決定してからパラメータをロードする方法を取ることが考えられる。しかし、前者においては、実際はその中の１つしか使われないため、無駄なパラメータロードが増えるという問題があり、後者の場合はパラメータロードの間、処理が停止するという問題がある。
【課題を解決するための手段】
【０００７】
本発明は、内部メモリの回路規模を抑制しつつ、処理の高速化を図ることが可能な情報処理技術の提供を目的とする。
【０００８】
上記の目的を達成する本発明にかかる情報処理装置は、入力画像と被写体を識別するためのデータを有するパラメータとの照合処理を、複数段の処理工程が直列に接続された処理工程群の終端の工程に他の複数の処理工程群が分岐を介して接続された構造により、１つの分岐に後続する複数の処理工程群では、いずれか１つの処理工程群による処理を行うようにして実行する情報処理装置であって、
前記分岐を介して接続された複数の処理工程群のそれぞれについて、分岐直後から所定段までの処理工程に用いられるパラメータを固定パラメータとして固定的に記憶する第１記憶手段と、
前記照合処理に用いられるパラメータのうち前記固定パラメータとは異なるパラメータを可変パラメータとして書き換え可能に記憶するための第２記憶手段と、
前記処理工程群のそれぞれの処理工程について、当該処理工程に対応する前記固定パラメータまたは前記可変パラメータを参照して、前記入力画像から被写体を識別するための照合処理を行う演算手段と、
前記演算手段により前記処理工程群の終端以外の工程を実行中に、後続する処理工程において用いられるパラメータをプリフェッチして前記第２記憶手段に前記可変パラメータとして記憶するプリフェッチ手段と、
前記演算手段の演算結果により、前記処理工程群の終端以外の工程では後続の処理工程を実行するかを判定し、当該処理工程群の終端の工程では前記分岐を介して接続された複数の処理工程群のうちのいずれか１つの処理工程群による処理を実行するかを判定する判定手段と、
前記判定手段の判定結果に基づいて、次に前記演算手段が参照すべきパラメータとして、前記終端以外の工程で後続の処理工程を実行すると判定された場合は、プリフェッチされた前記可変パラメータを選択し、前記終端の工程で前記複数の処理工程群のうちのいずれか１つの処理工程群による処理を実行すると判定された場合は、前記固定パラメータの１つを選択する選択手段と、を備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、内部メモリの回路規模を抑制しつつ、処理の高速化を図ることが可能になる。
【図面の簡単な説明】
【００１０】
【図１】実施形態にかかるデータ処理装置の構成の一例を示す図。
【図２】顔検出処理における認識処理を説明するための図。
【図３】顔認識における学習結果の一例を示す図。
【図４】Viola&Jones方式をハードウェアとして実装する場合の概念的な構成を示す図。
【図５】図４に示す概念的なハードウェア構成をより具体的な回路で構成した例を示す図。
【図６】処理部の構成を説明する図。
【図７】（ａ）顔検出を行うための識別処理の分岐構造について説明する図、（ｂ）（ａ）を簡略化したの分岐構造を例示する図。
【図８】分岐構造におけるデータ処理時間を例示的に説明する図。
【図９】２つの動的パラメータ記憶部を切り替える選択部を備えた構成例を示す図。
【図１０】図１の構成によるデータ処理時間を例示的に説明する図。
【図１１】第２実施形態の処理の流れを示す図。
【発明を実施するための形態】
【００１１】
（入力画像から被写体を識別する処理の概要）
顔検出処理としてViola＆Jones方式を例に挙げて説明する。Viola&Jones方式では、Adaboostによる学習結果に基づいて識別処理が実行される。この識別処理は、図２に示すように、ある識別器が識別を行った結果、Ｔｒｕｅを出力した場合、後続の識別処理を行い、Ｆａｌｓｅを出力した場合、後続の識別処理を行わずに識別処理を終了するというカスケード処理になっている。
【００１２】
顔認識においては、多くの顔データを入力し、顔の認識率や誤認識率がある一定の水準になるように学習させた結果、識別処理を行うための、複数の辞書データが生成される。この識別処理とは、パターン照合処理であり、顔検出処理とは、この辞書データを用いた一連のパターン照合処理のことである。そして、辞書データとは、パターン照合処理に必要な特徴パターンやＴｒｕｅ（真）又はＦａｌｓｅ（偽）判定の基準に用いる閾値などのデータである(以下、この辞書データのことをパラメータと呼ぶ)。
【００１３】
図３は、顔認識における学習結果の一例を示す図である。図３において、２００は入力データである。２１０はパラメータの一部である特徴パターンであり、両目部分の小矩形と両目下部分（頬の部分）とを比べると、両目部分が両目下部分より黒っぽいという特徴を示す特徴パターンである。２１１も特徴パターンであり、両目部分において目の部分が黒っぽく、目と目の間である眉間部が目の部分に比べて白っぽいという特徴を示す特徴パターンである。２２０、２２１は入力データ２００に対して特徴パターン２１０、特徴パターン２１１を実際に照合させてパターン照合処理を行っていく状態を示している。
【００１４】
図４は、図２、図３で説明したViola&Jones方式をハードウェアとして実装する場合の概念的な構成を示す図である。図４において、識別器４０１には、識別処理０用パラメータである特徴パターン２１０が保存されている。また、前述した識別処理０の結果がＴｒｕｅかＦａｌｓｅであるかを判定するために用いる閾値０も、識別器４０１用に保存されている。この識別処理０に必要な特徴パターン２１０と閾値０のことを、パラメータ０(以下、「Ｐ０」)と呼ぶ。
【００１５】
Ｐ０を用いた識別処理の結果がＴｒｕｅであった場合、識別器４０１に対して直列に接続されている次の識別器４０２が識別器４０１と同様に、入力データ２００に対する識別処理１を行う。識別処理１では、識別処理１用パラメータである特徴パターン２１１が用いられ、識別処理１の結果がＴｒｕｅかＦａｌｓｅであるかを判定するため閾値１が用いられる。特徴パターン２１１と閾値１とが、識別器４０２用のパラメータＰ１（以下、「Ｐ１」）として保存されている。識別処理０と、識別処理１と、では、識別処理に異なるパラメータが用いられる。更に識別器４０３・・・識別器Ｎを用いた識別処理が実行され、識別器Ｎの識別結果がＴｒｕｅの場合、入力データは顔であると識別される。Ｐ０、Ｐ１・・・を用いた識別処理の結果がＦａｌｓｅであった場合、入力データは顔でないと識別し、処理は終了する。
【００１６】
図５は、図４に示す概念的なハードウェア構成をより具体的な回路で構成した例を示す図である。識別器の処理部５０１は演算部５１１とパラメータ記憶部５１２とを有する。パラメータ記憶部５１２は、識別処理に必要なパラメータを記憶する内部メモリである。前述したように、識別処理０，１の違いは、パラメータのみであることから、外部メモリ５２０に記憶されているパラメータ０〜Nのうち、処理に必要なパラメータを、パラメータ記憶部５１２にロードする。
【００１７】
つまり、識別処理０を行う場合は、外部メモリ５２０から、パラメータ記憶部５１２にＰ０をロードする。演算部５１１はパラメータ記憶部５１２に記憶されたＰ０を参照することで、識別処理０が可能となる。同様に、識別処理１を行う際は、Ｐ１をロードし、演算部５１１で、パラメータ記憶部５１２に記憶されたＰ１を参照し演算を行う。この方法で、識別処理０〜Ｎが可能となる。
【００１８】
更に詳細に識別処理について説明する。例えば、図４に示す識別処理０を行う識別器４０１の場合、演算部５１１は、パラメータ記憶部５１２にＰ０をロードする。演算部５１１はパラメータ記憶部５１２にロードされたＰ０を参照し、Ｐ０の一部である特徴パターン２１０を用いて入力データ２００をパターン照合する。識別処理０は、特徴パターン２１０のパターン照合範囲対象である矩形０＿１の位置に対応する入力データの画素値（輝度）と、矩形０＿２の位置に対応する入力データの画素値（輝度）との総和を取り、矩形０＿１と矩形０＿２の輝度差を計算する。計算された輝度差が閾値０を超えている場合は、入力データ２００が特徴パターン２１０の示す特徴に合致するとし、顔である（Ｒｅｓｕｌｔ=Ｔｒｕｅ）という結果を出力する。
【００１９】
Ｐ０に含まれる特徴パターン２１０には、入力データにおいて照合すべき画素位置が示されている。パターン照合処理を行う演算部５１１は指定された画素位置における矩形内の画素値の総和を演算し、更に各矩形における総和の差分を演算し、閾値０との比較演算を行い、識別処理０の結果を出している。
【００２０】
即ち、演算部５１１は、パラメータにより指定される画素位置や閾値に従って識別処理非依存の同様の演算を行うように実装することが可能である。パラメータ記憶部５１２には、識別処理に必要なステージ分或いは全ステージ分のパラメータを記憶し、処理ステージに応じてパラメータを切り替えることにより、全ステージの識別処理を実現可能である。
【００２１】
近年、Viola&Jones方式に代表される認識処理をデジタルカメラなどに搭載し、例えば顔を検出して合焦を行うといった機能の実現が求められ、認識処理をリアルタイムに（高速に）実装する要求が高まっている。一方、デジタルカメラなどのデジタル家電製品は非常にコストセンシティブであるため、認識処理機能はできるだけ安価に実装したい、即ち回路規模を最小限に抑えたいという要求も高い。
【００２２】
図５に示す例は、演算部５１１を全識別処理で共有することにより、回路規模を抑制した実装例である。この場合、パラメータ記憶部５１２にいくつの識別処理のパラメータを記憶するかが、回路規模の支配的な要因となる。また、いくつの識別処理分のパラメータを記憶するかにより処理速度も大幅に異なる。一般的に外部メモリ５２０と内部メモリ(パラメータ記憶部５１２)とのアクセスの差は大きい。外部メモリは、通常ＤＲＡＭなどで構成され、アクセス時間（パラメータロード時間）は数十ナノ秒から百数十ナノ秒のオーダーである。一方、内部メモリのアクセス時間は数ナノ秒である。つまり、１０〜１００倍の差がある。よって、非常に高速な処理が必要な場合には、全識別処理分のパラメータを高速アクセス可能な内部メモリ（パラメータ記憶部５１２）に記憶しておき、識別処理毎の処理をパラメータの入れ換えを行うことなく実現する方法が一般的に用いられている。
【００２３】
この方法を、図６を用いて、処理部の構成を詳細に説明する。図６は、識別処理毎に処理を切り替えてパターン照合処理を実現する方法を説明するための図である。パターン照合処理を行う処理部６０１は識別処理非依存の実装となっているため、図５と同様に、演算部５１１を１つだけ搭載している。また、識別処理依存であるパラメータを記憶するパラメータ記憶部５１２〜５１４は全識別処理（Ｎ識別処理）分搭載する。
【００２４】
識別処理を開始する前に、外部メモリ５２０からパラメータ記憶部５１２〜５１４へ、全てのパラメータをロードしておく。入力データ２００が入力されると、選択部６０２によってＰ０（パラメータ０）が記憶されているパラメータ記憶部５１２が演算部５１１に設定され、識別処理０が開始される。その結果、Ｔｒｕｅと判断された場合、入力データ２００に対して、選択部６０２は次のＰ１が記憶されているパラメータ記憶部５１３へ切り替えることで、後続の識別処理１が可能となる。
【００２５】
このように、全識別処理用パラメータを内部メモリ(パラメータ記憶部５１２〜５１４)へ記憶することにより、識別処理毎に必要なパラメータを内部メモリと比べてアクセススピードの遅い外部メモリ５２０からロードしなくて済む。従って、ロードする際のオーバーヘッドが不要となり、高速処理が可能となる。
【００２６】
次に、図７（ａ）の参照により顔検出を行うための識別処理の分岐構造について説明する。図７（ａ）に示すように、枝のように後段に行くほど分かれていくことから、分岐構造と呼ばれている。例えば、左右の傾きが±３０度まで対応した顔認識を搭載する場合、パラメータ作成時には、左右の傾きが±３０度を含んだ状態で学習したパラメータを用いた識別処理を先頭(１段目)に置き、顔っぽいかを判定する。後段に行くほど、角度に特化した画像で学習することで、左右どちらの傾きの画像であるかを判定していく。
【００２７】
図７（ａ）では、先頭である一番左から、分岐がある毎に１〜３段とすると、１段目は、顔という概念での判定を行う。２段目から最終的な角度を導き出すために分かれた枝となっており、１段目と２段目の間にある分岐先判定において、分岐後にどの枝(パラメータ列)を選択するかを決定する。ここでは、処理群３のパラメータ列が選択されている。同様に２段目から３段目の間にも分岐先判定があり、更に詳細な角度の判定を行っていく。ここでは、処理群３＿３のパラメータ列が選択されている。このように分岐先選択で次に進むパラメータ列を選択していった結果、入力データ２００が右に３０度に傾いた顔画像であると判定されることになる。
【００２８】
ここで、図６に示す構成における処理時間を、前述した図７（ａ）を簡略化した図７（ｂ）の分岐構造例を用い、パターン照合処理時間の説明をする。図７（ｂ）の分岐構造処理において、入力データ０（以下、Ｉ０）と入力データ１（以下、Ｉ１）の処理例として、図７（ｂ）の７００、７０１をあげる。図７（ｂ）の処理７００において、入力されたＩ０に対し、識別処理０（以下、Ｉ０(Ｓ０)）と、Ｉ０(Ｓ１)と進み、分岐先選択によって、どちらのパラメータ列(Ｓ２＿０,Ｓ２＿１)を選択するかが決定される。
【００２９】
図７（ｂ）の処理７００において、Ｉ０(Ｓ０)の結果、Ｔｒｕｅとなることから、Ｉ０(Ｓ１)を実行する。その後、分岐先選択を実行し、Ｓ２＿０が選択され、Ｉ０(Ｓ２＿０)が実行される。その結果Ｔｒｕｅとなり、Ｉ０(Ｓ３＿０)が実行される。Ｉ０(Ｓ３＿０)がＦａｌｓｅとなることで、Ｉ０の処理は終了し、次の入力データであるＩ１処理へ移行する。図７（ｂ）の処理７０１にＩ１に対する処理を示す。Ｉ１(Ｓ０)の結果Ｔｒｕｅとなり、Ｉ１(Ｓ１)が実行されＦａｌｓｅとなる。これにより、更に次の入力データであるＩ２に対する処理へと移行することになる。このように入力データに対し処理を行い、Ｆａｌｓｅになった時点で、次の入力データ処理へ移行し、Ｓ０から処理を実行していくことにより、複数の入力データの処理を行っていく。
【００３０】
ここで、処理時間の説明に必要な用語を定義する。通過率とは、演算部５１１が識別処理を行った結果、Ｔｒｕｅとなる確率である。識別処理時間とは、各識別処理にかかる時間のことである。パラメータロード時間とは、外部メモリに保存されているパラメータを識別処理切り替えの際にパラメータ記憶部５１２〜５１４へロードするのに必要な時間である。
【００３１】
以下の説明では、パラメータロード時間が識別処理時間の４倍であると仮定する。前述したように、外部メモリは、通常ＤＲＡＭなどで構成され、アクセス時間（パラメータロード時間）は数十ナノ秒から百数十ナノ秒のオーダーである。一方、内部メモリのアクセス時間は数ナノ秒である。また、Viola&Jones方式のパターン照合処理は前述の如く、非常に単純な演算であることから、この仮定は妥当である。更に分岐先選択も簡単なセレクタであることから、分岐される手前の処理と同時に実行可能と過程する。識別処理０に必要なパラメータ(Ｐ０)のロードを行うことを以下、Ｌ(Ｐ０)とする。
【００３２】
図８に示す例は、図７（ｂ）の処理７００、処理７０１で説明した処理順を基に、図７（ｂ）の処理７００の最後の処理であるＩ０(Ｓ３＿０)以降の実行時間を示している。また、実施した全識別処理の通過率が１／２であった場合を例に示す。（Ａ）に示す図６の構成では、全識別処理に必要なパラメータ(Ｐ０〜ＰＮ)が記憶されているため、パラメータロードが実行されることがない。つまり、パラメータロードのために、処理が停止することがない。しかし、図６に示す構成の場合、処理が高速である一方、全識別処理分のパラメータを記憶するための巨大な内部メモリを装備する必要があるため、コスト負担が高くなる。
【００３３】
そこで、パラメータ記憶部５１２〜５１４を巨大化させないために、外部メモリから、識別処理毎に必要なパラメータのみを内部メモリへロードする構成が一般的に用いられている。図８（Ｅ）の例において、動的パラメータ記憶部８１２は、図５で示したパラメータ記憶部５１２がパラメータ１つ分だけ持つサイズである例を示したものである。処理部８０１は、識別処理非依存の演算部５１１と識別処理に依存するパラメータを記憶するためにデータ書き換え可能な動的パラメータ記憶部８１２とを有する。また、処理部８０１は画像源入力データ（Ｄａｔａ_ｉｎ）と画像入力データが有効であることを示す信号ｖａｌｉｄ＿ｉｎに基づき、順次識別処理を実行する。この画像入力データは、制御部８０２内のデータ制御部８２１を経由して入力される。
【００３４】
演算部５１１は、入力されたＤａｔａ＿ｉｎと動的パラメータ記憶部８１２にあるパラメータを用いて、パターン照合処理を行った結果をＲｅｓｕｌｔ／ｖａｌｉｄ＿ｏｕｔとして出力する。この結果は、データ制御部８２１内の検知部８２２で検知される。
【００３５】
そして、データ制御部８２１は、その結果（Ｒｅｓｕｌｔ/ｖａｌｉｄ＿ｏｕｔ）がＴｒｕｅであった場合、現在の入力データに対して、次の識別処理を行う必要があることから、次の識別処理に必要なパラメータの取得を行う。反対に、結果がＦａｌｓｅであった場合、或いは、最終段の識別処理が終わった場合、次の入力データに対する処理を初段の識別処理０から行う必要があることから、パラメータ０のロード（取得）Ｌ(Ｐ０)を行う。
【００３６】
このように、識別処理の切り替え（パラメータロード）が必要な場合は、データ制御部８２１がパラメータ制御部８２３を介してパラメータ取得部８２６で必要なパラメータの入力要求を行い、不図示の外部メモリからパラメータを取得する。取得されたパラメータは、パラメータ転送部８２５によって動的パラメータ記憶部８１２へ転送される。
【００３７】
動的パラメータ記憶部８１２へのパラメータ転送が終了した後、パラメータ切り替え制御部８２４が演算部５１１にパラメータ切り替え完了を通知することで、演算部５１１は次の識別処理が可能となる。
【００３８】
このように、制御部８０２が、演算部５１１からの結果の検知を行い、必要に応じて、次に必要なパラメータを取得し、動的パラメータ記憶部８１２へ転送する。そして、転送終了後、演算部５１１に指示することで、入力された（矩形）の入力データに対して順次識別処理が可能となる。
【００３９】
次に図８（Ａ）と同様の処理を図８（Ｅ）の構成で実行した場合の処理時間を図８（Ｂ）に示し、説明する。Ｉ０（Ｓ３＿０）処理結果がＦａｌｓｅであったため、次の入力データであるＩ１に対する処理を行う。この時、動的パラメータ記憶部８１２には、Ｉ０(Ｓ３＿０)処理で使用したＰ３＿０が記憶されていることから、Ｉ１(Ｓ０)処理前にＬ(Ｐ０)を行う。Ｌ(Ｐ０)が終わると、Ｉ１(Ｓ０)を実行しＴｒｕｅとなることから、Ｌ(Ｐ１)を行う。次に、Ｉ１(Ｓ１)処理結果がＦａｌｓｅになることから、Ｉ２(Ｓ０)処理を行うために、Ｌ(Ｐ０)を行う。
【００４０】
このように、図８（Ｅ）の例では、動的パラメータ記憶部８１２がパラメータ１つ分しか持つことができないため、識別処理切り替えの度に、パラメータをロードする必要がある。そのため、パラメータロードの間、識別処理は停止する。
【００４１】
つまり、図８（Ａ）に示した、図６の全識別処理用のＰ０〜ＰＮを記憶している場合に比べ、図８（Ｂ）（図８（Ｅ））の例は、識別処理が停止する時間（即ち、パラメータロード時間）分、遅延することになる。ここで識別処理時間が１サイクルとした場合、図８（Ａ）と図８（Ｂ）とを比べると、Ｉ５(Ｓ１)の処理が終わるまでに、処理時間の８サイクルに加え、パラメータロードに要する２０サイクル（＝５回×４サイクル）分遅くなっていることがわかる。
【００４２】
図６に示した例のように、全識別処理分のパラメータを内部メモリに記憶する構成の場合、処理は最速であるが、回路規模が最大となる。一方、図８（Ｅ）に示したように、１識別処理分のパラメータを内部メモリに記憶し、識別処理毎に必要なパラメータを外部メモリからロードする構成の場合、回路規模は最小であるが処理速度の低下が著しい。このような課題に対して、内部メモリの回路規模を抑制しつつ処理を高速化するための従来技術として、キャッシュ方式やプリフェッチ方式（次に必要となるパラメータを事前に準備する方法）が広く用いられている。
【００４３】
ここで、キャッシュ方式とプリフェッチ方式を詳細に説明する。尚、キャッシュ方式とプリフェッチ方式を実現する構成として、図９の例を示す。図９は、図８（Ｅ）の構成に動的パラメータ記憶部を１つ追加し、２つの動的パラメータ記憶部９９２，９９３を搭載した例である。また、２つの動的パラメータを演算部５１１に対し、切り替え可能にする選択部６０２を加えた図である。
【００４４】
次に図８（Ａ）と同様の処理を図９の構成で行う場合について、図８（Ｃ）のキャッシュ方式と図８（Ｄ）のプリフェッチ方式を用いた場合の処理時間を説明する。まず、キャッシュ方式について説明する。ここでは、最古のデータより消去している例を挙げる。
【００４５】
Ｉ０(Ｓ３＿０)処理を行っている動的パラメータ記憶部９９３にＰ３＿０が、動的パラメータ記憶部９９２には、１つ前の処理で用いたＰ２＿０が記憶されているとする。Ｉ０(Ｓ３＿０)処理の結果、Ｆａｌｓｅとなることで、Ｉ１(Ｓ０)を行う。しかし、動的パラメータ記憶部９９２には、Ｐ２＿０が、動的パラメータ記憶部９９３にはＰ３＿０が記憶されていることから、最古である動的パラメータ記憶部９９２にあるＰ２＿０を消し、Ｌ(Ｐ０)をロードする。その後、Ｉ１(Ｓ０)を行いTrueとなるが、動的パラメータ記憶部９９２には、Ｐ０が、動的パラメータ記憶部９９３には、Ｐ３＿０が記憶されていることから、Ｌ(Ｐ１)が必要となる。ここで、最古である動的パラメータ記憶部９９３のＰ３＿０を消し、Ｌ(Ｐ１)をロードする。その後、Ｉ１(Ｓ１)を実行し、Ｆａｌｓｅになるが、この時、動的パラメータ記憶部９９２，９９３には夫々Ｐ０,Ｐ１が記憶されていることから、Ｐ０,Ｐ１を用いた処理は停止されることなく実行される。このように実行した結果、Ｉ５(Ｓ１)までにかかる時間は、図８(Ａ)に比べ、２０サイクル遅延となる。ただし、図８（Ｂ）に比べ、８サイクル速い。
【００４６】
次に、プリフェッチ方式について説明する。ここでも、最古のデータより消去する例を挙げる。プリフェッチ方式では、結果を待たず、次の処理分のパラメータロードを実行する。ただし、分岐先がある場合においては、分岐先候補分ロードする方式もあるが、今回は、分岐先選択がある場合は、プリフェッチを停止する場合で説明する。
【００４７】
Ｉ０(Ｓ３＿０)処理を行う時、動的パラメータ記憶部９９３にロードされているＰ３＿０を参照し、Ｉ０(Ｓ３＿０)を実行しており、動的パラメータ記憶部９９２にはＰ４＿０がロードされ始めているとする。Ｉ０(Ｓ３＿０)処理の結果、Ｆａｌｓｅとなることで、次はＩ１(Ｓ０)を行う。しかし、プリフェッチ方式の場合、前述したようにＩ０(Ｓ３＿０)処理と同時に、次に必要と想定されるＬ(Ｐ４＿０)を開始していることから、Ｌ(Ｐ４＿０)を待ち、更にＬ(Ｐ０)を待つ必要がある。Ｌ(Ｐ０)の完了を待って、Ｉ１(Ｓ０)とＬ(Ｐ１)が同時に開始される。Ｉ１(Ｓ０)の結果Ｔｒｕｅとなることで、すでに開始されているＬ(Ｐ１)の完了を3サイクル分待った後、Ｉ１(Ｓ１)を実行する。Ｉ１(Ｓ１)の次に分岐先選択があることで、ここでは、プリフェッチを行わない。Ｉ１(Ｓ１)の結果がＦａｌｓｅになるが、この時点で、動的プリフェッチには、Ｐ０,Ｐ１が記憶されていることから、処理がそのまま続けられる。Ｉ３(Ｓ１)の結果分岐先選択でＰ２＿１が選択されることで、Ｌ(Ｐ２＿１)を行い、次に分岐先選択がないため、プリフェッチであるパラメータロードＬ(Ｐ３＿１)が実行される。このＩ３(Ｓ３＿２)と同時に、次が分岐先選択でないことから、Ｌ(Ｐ３＿２)が実行される。その後、実際はＩ２(Ｓ２＿２)がＦａｌｓｅになることで、Ｉ４(Ｓ０)を実行するために、Ｌ(Ｐ３＿２)とＬ(Ｐ０)を待つことになる。このように処理を実行した結果、Ｉ５(Ｓ１)処理までにかかる時間は、図８（Ａ）に比べ、２３サイクル遅延となるが、図８（Ｂ）に比べ、５サイクル速い。
【００４８】
（第１実施形態）
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。まず、入力データに対してパラメータを参照しながら、所定の演算を行う情報処理装置（データ処理装置）の構成を説明する。データ処理装置は、入力画像から被写体を識別するために、被写体を識別するためのデータを有するパラメータを参照しながら入力画像とパラメータとの照合を行う。この照合処理は、直列に接続された処理工程群と、処理工程群の終端の工程と分岐を介して接続された複数の処理工程群のうちのいずれか１つの処理工程群と、により多段階に実行される。
【００４９】
図１は、本実施形態にかかるデータ処理装置の構成の一例を示すブロック図である。図９の処理部９９１の構成において、２つ設けられていた動的パラメータ記憶部９９２、９９３は、図１の構成では、静的パラメータ記憶部１５０２と動的パラメータ記憶部１５０３とに置き換えられている。静的パラメータ記憶部１５０２（第１記憶手段）は、演算部５１１の処理において固定的に参照される予め定められたパラメータ（固定パラメータ）を記憶する。動的パラメータ記憶部１５０３（第２記憶手段）は、予め定められたパラメータ（固定パラメータ）とは異なる可変パラメータを書き換え可能に記憶する。
【００５０】
図１に示す例では、分岐先判定部１５０４が更に備えられている。演算部５１１の演算結果を検知部８２２が受け、検知部８２２がその演算結果をパラメータ制御部１５０５に送信する。演算結果を受けたパラメータ制御部１５０５はパラメータ切り替え制御部８２４により、パラメータの切り替えが必要かを決断する。つまり、演算結果がＴｒｕｅだった場合、パラメータが切り替わることになる。分岐構造の場合は、パラメータ切り替えが決定されても、どの分岐先になるかが演算結果だけでは決定しない。そのため、分岐先判定部１５０４に結果を渡し、どの分岐先に進むか判定を行う。分岐先判定部１５０４は分岐先を判定し、決定した分岐先を選択部６０２に伝える。選択部６０２は分岐先判定部１５０４からの指示を受け、静的パラメータ記憶部１５０２又は動的パラメータ記憶部１５０３のいずれか一方からパラメータを参照する。選択部６０２で参照されたパラメータは、演算部５１１の演算で使用するパラメータであり、参照したパラメータを用いて、演算部５１１は入力データに対する演算を行う。演算結果は、検知部８２２が受け、結果をパラメータ制御部１５０５に送る。パラメータ制御部１５０５は結果がＴｒｕｅであり、かつ次に分岐がある場合に、分岐先判定部１５０４は、次の分岐先を判定し、決定した分岐先を選択部６０２に伝える。
【００５１】
データ制御部８２１は、分岐先判定部１５０４の判定結果と、検知部８２２を介して、演算部５１１（識別器）が出力する演算結果を示す信号の入力を受け付けることにより、次に必要なパラメータを検知する。検知の結果として、パラメータ制御信号を選択部６０２に出力する。選択部６０２は、パラメータ制御信号に従って、静的パラメータ記憶部１５０２に記憶してあるパラメータの参照が必要な場合は、静的パラメータ記憶部１５０２に記憶された静的パラメータを参照する。同様に、選択部６０２は、パラメータ制御信号に従って、動的パラメータ記憶部１５０３に記憶してあるパラメータの参照が必要な場合は、動的パラメータ記憶部１５０３に記憶された動的パラメータを参照する。
【００５２】
次に、静的パラメータ記憶部１５０２に記憶されたパラメータが複数ある場合について説明する。静的パラメータ記憶部１５０２に複数パラメータが記憶されている場合、パラメータ制御部１５０５は、静的パラメータ記憶部１５０２に記憶したパラメータ番号と、静的パラメータ記憶部１５０２のアドレス(またはポインタ)を記憶する。パラメータ番号は、それぞれのパラメータを特定するための識別情報である。アドレス(またはポインタ)は、パラメータ番号と対応付けられており、パラメータ番号で特定されたパラメータが格納されている記憶領域を特定し、特定された記憶領域から特定されたパラメータを読み出すための情報である。
【００５３】
分岐先判定部１５０４は、静的パラメータ記憶部１５０２に記憶されたパラメータが演算処理に使用されると判定した場合、パラメータ切り替え制御部８２４に、選択されたパラメータ番号を通知する。パラメータ切り替え制御部８２４は通知されたパラメータ番号に対応するアドレス又はポインタを選択部６０２に通知する。選択部６０２は通知されたアドレス又はポインタを用いて、静的パラメータ記憶部１５０２からパラメータを参照する。同様に、パラメータ切り替え制御部８２４は動的パラメータ記憶部に記憶されているパラメータを用いる場合も、通知されたパラメータ番号に対応するアドレス又はポインタを選択部６０２に通知する。選択部６０２は通知されたアドレス又はポインタを用いて、動的パラメータ記憶部１５０３からパラメータを参照する。このように、パラメータ切り替え制御部８２４の指示に従い選択部６０２が静的又は動的パラメータ内のパラメータを参照することで、複数のパラメータを用いた演算が可能となる。
【００５４】
次に、制御部１５０１について詳細に説明する。処理部１５００は入力データ（矩形画像データ）に対し、順次、識別処理を実行する。この矩形画像データは、制御部１５０１内のデータ制御部８２１を経由して演算部５１１に入力される。そして、演算部５１１で実行された識別処理の結果（Ｒｅｓｕｌｔ／ｖａｌｉｄ＿ｏｕｔ）は、データ制御部８２１内の検知部８２２に入力され、検知部８２２は演算部５１１の演算結果を検知する。
【００５５】
データ制御部８２１は、検知部８２２で検知された演算部５１１の識別処理の結果をパラメータ制御部１５０５のパラメータ切り替え制御部８２４に通知する。パラメータ切り替え制御部８２４は、分岐判定が必要な際、分岐先の判定を分岐先判定部１５０４に実行させる。分岐先判定部１５０４は、分岐先の判定を行い、次に識別処理を行う分岐先を決定する。この判定結果及び演算部５１１の演算結果のうち少なくともいずれか一方を基に、パラメータ切り替え制御部８２４は、新しいパラメータの取得が必要か否かを判定する。新しいパラメータが必要であると判定された場合、パラメータ切り替え制御部８２４は、パラメータ取得部８２６に必要なパラメータの入力を要求する。パラメータ取得部８２６はパラメータの入力要求を外部の装置（外部メモリ）に出力する。
【００５６】
パラメータの入力要求に対して、外部の装置（外部メモリ）から送信されたパラメータは、パラメータ取得部８２６に入力される。パラメータ取得部８２６がパラメータを取得し、取得されたパラメータは、パラメータ転送部８２５を用いて、動的パラメータ記憶部１５０３へ転送される。そして、パラメータ制御部１５０５のデータ制御部８２１は、パラメータの転送が終了すると、選択部６０２にパラメータ制御信号を出力するように指示する。これにより、動的パラメータ記憶部１５０３にさきほど転送されたパラメータを演算部５１１に設定（又は参照）できるように、選択部６０２が切り替えを行う。
【００５７】
このように、制御部１５０１が演算部５１１から識別処理の結果を検知し、必要に応じて、次に必要なパラメータを取得し、動的パラメータ記憶部１５０３へ転送する。この転送終了後、選択部６０２へ指示することで、入力された矩形画像データに対する識別処理が可能となる。
【００５８】
次に、図１に示す構成の処理時間を、図１０（ｂ）を参照して、図８との比較の観点で説明する。図１０（ｂ）のタイミングチャート１００４は図１で説明した構成によるデータ処理時間を示す。この例では、静的パラメータ記憶部１５０２に、図７（ｂ）の７００に示す処理の流れに対応するＰ０,Ｐ２＿０,Ｐ２＿１の３つのパラメータが記憶されている例を示す。
【００５９】
Ｉ０（Ｓ３＿０）処理を行うため、動的パラメータ記憶部１５０３には、Ｐ３＿０が記憶されており、静的パラメータ記憶部１５０２には、前述したようにＰ０,Ｐ２＿０,Ｐ２＿１が記憶されているとする。Ｉ０（Ｓ３＿０）処理の結果、Ｆａｌｓｅとなることで、Ｉ１（Ｓ０）を行う。ここで、静的パラメータ記憶部１５０２にＰ０が記憶されていることから処理が瞬時に開始される。その後、Ｉ１（Ｓ０）がＴｒｕｅのなることで、Ｌ（Ｐ１）が開始される。ここで、動的パラメータ記憶部１５０３には、Ｐ１が記憶される。その後、Ｉ１（Ｓ１）がＦａｌｓｅとなり、処理がＩ５（Ｓ１）まで続く間、動的パラメータ記憶部１５０３にあるＰ１と静的パラメータ記憶部１５０２に記憶されたＰ０,Ｐ２＿０,Ｐ２＿１のみが参照されることで、処理の停止が起きない。Ｉ５（Ｓ２＿０）の結果Ｔｒｕｅとなることで、Ｌ（Ｐ３＿０）を行う。ここで、動的パラメータ記憶部１５０３に保持されていたＰ１を削除し、Ｐ３＿０をロードすることになる。このように処理を実行した結果、Ｉ５（Ｓ１）処理までにかかる時間は、図１０（ｂ）のタイミングチャート１００１に比べ、３サイクル遅延となる。
【００６０】
また、図８（Ｃ）、（Ｄ）で説明した例では、動的パラメータ記憶部９９２と動的パラメータ記憶部９９３の例で示した。つまり、パラメータは２つのみを保持できるものであった。しかし、図１０（ｂ）において本実施形態の構成による処理時間と比較するため、動的パラメータ記憶部９９２と９９３内に４つ分のパラメータを保持できる構成を例に挙げ、キャッシュ方式とプリフェッチ方式での処理時間を示す。図１０（ｂ）のキャッシュ方式（タイミングチャート１００２）においては、同様の処理を実行した結果、Ｉ５（Ｓ１）処理までにかかる時間は、図１０（ｂ）のタイミングチャート１００１に比べ、１２サイクル遅延となる。図１０（ｂ）のプリフェッチ方式（タイミングチャート１００３）においては、同様の処理を実行した結果、Ｉ５（Ｓ１）処理までにかかる時間は、図１０（ｂ）のタイミングチャート１００１に比べ、１７サイクル遅延となる。タイミングチャート１００３に対して、本実施形態のタイミングチャート１００４は、タイミングチャート１００２に対して９サイクル高速に処理することができ、タイミングチャート１００３に対して１４サイクル高速に処理することができる。
【００６１】
（第２実施形態）
次に図１、図１１の参照により、本発明の第２実施形態を説明する。図７と異なり、１〜２段目までは処理を続けて行った後、分岐先の選択を行い、識別処理４のどの分岐に進むかを決定するフローとなっている。図１１に示した第２実施形態の処理の流れを図１の参照により説明する。
【００６２】
まず、最初に、静的パラメータ記憶部１５０２に、分岐決定の後、選択される可能性のあるＰ４＿０〜Ｐ４＿８とＰ０を処理開始前にロードする。その際、動的パラメータ記憶部１５０３には、Ｓ０処理でＴｒｕｅとなった場合に必要となるパラメータＰ１の入力要求がパラメータ取得部８２６から、パラメータの管理をする外部の装置（外部メモリ）に出力される。外部の装置（外部メモリ）から送信されたパラメータがパラメータ取得部８２６に入力されると、パラメータ転送部８２５は動的パラメータ記憶部１５０３へパラメータを転送し、動的パラメータ記憶部１５０３にパラメータを格納する。処理部１５００は、このパラメータ取得と並列に、入力データを待っている。入力データを受け取ると、演算部５１１はＩ０（Ｓ０)を行う。この時、パラメータ制御部１５０５から、パラメータ制御信号が選択部６０２へ送られる。パラメータ制御信号には、静的パラメータ記憶部１５０２のＰ０を参照するよう指示が含まれている。選択部６０２は静的パラメータ記憶部１５０２のＰ０を参照し、演算部５１１へパラメータＰ０を設定する。演算部５１１は設定されたパラメータＰ０を用い、Ｉ０（Ｓ０）を行う。Ｉ０（Ｓ０）の結果、識別結果がＴｒｕｅとなり、識別結果がデータ制御部８２１内の検知部８２２へ出力される。データ制御部８２１は識別処理０がＴｒｕｅとなったことから、次の識別処理１を演算部５１１に実行させるために、パラメータ制御部１５０５に指示を出す。パラメータ制御部１５０５は指示を受けると、静的パラメータ記憶部１５０２と動的パラメータ記憶部１５０３に識別処理１用のＰ１が記憶されているかをチェックする。この場合、最初に動的パラメータ記憶部１５０３に記憶していることから、パラメータ制御部１５０５は、パラメータ制御信号を選択部６０２に出力し、動的パラメータ記憶部１５０３にあるＰ１を参照するよう指示を出す。選択部６０２はパラメータＰ１を参照し、演算部５１１へパラメータＰ１を設定する。演算部５１１は設定されたパラメータＰ１を参照し、演算部５１１はＩ０（Ｓ１）処理を実行する。
【００６３】
ここで、動的パラメータ記憶部１５０３が２つ以上のパラメータを記憶できる場合は、次に必要となる識別処理２用のパラメータロードＬ（Ｐ２）を行う。ここで、パラメータ制御部１５０５はパラメータ取得部８２６を用い、Ｌ（Ｐ２）の要求を出す。外部メモリからデータが入力されるとパラメータ転送部８２５が動的パラメータ記憶部１５０３へ記憶する。このように、現在処理されているパラメータから次に必要となるパラメータを推測することで、プリフェッチ動作が可能となっている。このように、処理を進めていき、Ｉ０（Ｓ３＿２）の結果がＴｒｕｅになると、分岐先選択が行なわれる。その結果、どの分岐先に決定しても、すでに静的パラメータ記憶部１５０２に記憶されていることから、すぐに識別処理を開始することができる。
【００６４】
尚、第１、第２実施形態において、静的パラメータ記憶部１５０２と動的パラメータ記憶部１５０３を明示的に分けて説明したが、同じパラメータ記憶部のエリアを区別してもよい。また、静的パラメータ記憶部１５０２へのデータについては、実装する際に、識別対象が決まっている場合、パラメータをＲＯＭ(Read Only Memory)などに記憶してもかまわない。
【００６５】
一方、実装する際に、顔、人、車など識別対象が複数ある場合や横顔、上半身、頭部などのモードなどにより、パラメータを変更する場合は、処理スタート前に静的パラメータ記憶部１５０２にパラメータを記憶する。これにより、複数の対象やモードへの対応が可能となる。本発明は複数の機器（例えば、ホストコンピュータ、インターフェース機器、リーダ、プリンタなど）から構成されるシステムに適用しても、１つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用しても良い。
【００６６】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005686548.tif 000002
【図２】
0005686548.tif 000003
【図３】
0005686548.tif 000004
【図４】
0005686548.tif 000005
【図５】
0005686548.tif 000006
【図６】
0005686548.tif 000007
【図７】
0005686548.tif 000008
【図８】
0005686548.tif 000009
【図９】
0005686548.tif 000010
【図１０】
0005686548.tif 000011
【図１１】
0005686548.tif 000012