(57)【要約】【課題】それぞれの処理モジュールに供給するクロック信号の周波数を、実行中の処理状況に応じて制御することができる情報処理装置を提供する。【解決手段】入力データに対して演算処理を実行するとともに、実行される演算処理に基づく評価値を算出する複数の演算処理モジュールと、複数の演算処理モジュールそれぞれにおける演算処理にかかる処理時間を、評価値に基づいて推定する推定処理モジュールと、推定された演算処理モジュールにおける処理時間に応じた周波数のクロック信号を演算処理モジュールのそれぞれに供給するクロック制御モジュールとを有し、複数の演算処理モジュールそれぞれにおける処理時間を動的に予測し、供給するクロック信号の周波数を実行される処理に応じて制御する。【選択図】図１
2015138281.tif 000002
【特許請求の範囲】
【請求項１】
入力されるデータに対して所定の処理を実行するとともに、該実行される処理に基づく評価値を算出する複数の演算処理手段と、
前記複数の演算処理手段それぞれにおける所定の処理にかかる処理時間を、前記評価値に基づいて推定する推定処理手段と、
前記推定処理手段により推定された前記演算処理手段における処理時間に応じて、クロック信号の周波数を前記演算処理手段ごとに決定し、決定した周波数の前記クロック信号を前記演算処理手段のそれぞれに供給するクロック制御手段とを有することを特徴とする情報処理装置。
【請求項２】
前記推定処理手段は、少なくとも空間的又は時間的に互いに近接する入力データを処理する前記複数の演算処理手段における前記複数の評価値に基づいて、前記演算処理手段における処理時間を推定することを特徴とする請求項１記載の情報処理装置。
【請求項３】
入力されるデータに対して所定の処理を実行するとともに、実行中の処理状況に基づく評価値を算出する複数の演算処理手段と、
処理の実行時に算出される前記複数の演算処理手段における前記評価値を保持する記憶手段と、
前記複数の演算処理手段に供給する、周波数が異なる複数のクロック信号を生成するクロック生成手段とを有し、
前記演算処理手段のそれぞれは、前記記憶手段に保持された該演算処理手段を含む複数の前記演算処理手段における複数の前記評価値を参照して処理時間を推定し、推定した処理時間に基づいて供給を受けるクロック信号の周波数を決定し、前記クロック生成手段が生成する複数のクロック信号から、推定した処理時間に応じた周波数の前記クロック信号を選択して受信することを特徴とする情報処理装置。
【請求項４】
前記演算処理手段は、少なくとも空間的又は時間的に互いに近接する入力データを処理する前記複数の演算処理手段における前記複数の評価値に基づいて、供給を受けるクロック信号の周波数を選択することを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記演算処理手段における処理時間は、入力されるデータに応じて変動することを特徴とする請求項１〜４の何れか１項に記載の情報処理装置。
【請求項６】
前記演算処理手段のそれぞれに供給する電源電圧を、前記演算処理手段に供給される前記クロック信号の周波数に対応して前記演算処理手段ごとに制御する、電圧値が異なる複数の電源電圧を供給する電源電圧制御手段を有することを特徴とする請求項１〜５の何れか１項に記載の情報処理装置。
【請求項７】
前記演算処理手段が実行する前記所定の処理は、カスケード型の検出処理であることを特徴とする請求項１〜６の何れか１項に記載の情報処理装置。
【請求項８】
前記演算処理手段が実行する前記所定の処理は、特定パターンの検出処理であることを特徴とする請求項１〜６の何れか１項に記載の情報処理装置。
【請求項９】
前記複数の演算処理手段それぞれにおける所定の処理にかかる処理時間を、前記評価値の組み合わせに基づいて推定することを特徴とする請求項１〜８の何れか１項に記載の情報処理装置。
【請求項１０】
複数の演算処理手段が入力されるデータに対して所定の処理を実行するとともに、該実行される処理に基づく評価値を算出する工程と、
前記複数の演算処理手段それぞれにおける所定の処理にかかる処理時間を、前記評価値に基づいて推定する工程と、
推定された前記演算処理手段における処理時間に応じて、クロック信号の周波数を前記演算処理手段ごとに決定し、決定した周波数の前記クロック信号を前記演算処理手段のそれぞれに供給する工程とを有することを特徴とする情報処理装置の制御方法。
【請求項１１】
複数の演算処理手段が入力されるデータに対して所定の処理を実行するとともに、実行中の処理状況に基づく評価値を算出する工程と、
処理の実行時に算出される前記複数の演算処理手段における前記評価値を記憶手段に保持する工程と、
前記複数の演算処理手段に供給する、周波数が異なる複数のクロック信号を生成する工程と、
前記演算処理手段のそれぞれが、前記記憶手段に保持された該演算処理手段を含む複数の前記演算処理手段における複数の前記評価値を参照して処理時間を推定し、推定した処理時間に基づいて供給を受けるクロック信号の周波数を決定し、生成される前記複数のクロック信号から、推定した処理時間に応じた周波数の前記クロック信号を選択して受信する工程とを有することを特徴とする情報処理装置の制御方法。
【請求項１２】
コンピュータを、請求項１〜８の何れか１項に記載の情報処理装置の各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理装置の制御方法に関する。
【背景技術】
【０００２】
並列に処理を行うことができる複数の処理モジュールを有するシステムにおいて、処理時間の最適化又は消費電力の削減のために、処理モジュールに供給するクロック信号の周波数及び電源電圧値を制御する技術が提案されている。例えば、特許文献１には、プロセッサＡがプログラムＡを実行し、プロセッサＢがプログラムＢを実行することによって並列に処理を行い、並列に処理を行った後に同期を取るマルチプロセッサシステムが開示されている。特許文献１では、例えば、プロセッサＡは、プログラムＡの処理時間見積値ＴａとプログラムＢの処理時間見積値Ｔｂとの比率に応じて、入力されるクロック信号の周波数を変更し、そのクロック信号の周波数に応じて、供給される電源電圧を変更する。これにより、プロセッサＡの消費電力を削減する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−２１５５９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
前述した技術は、予め見積もられた処理時間見積値の比率、又はそれぞれのプロセッサにおける過去の処理時間に応じて、次の処理時に供給するクロック信号の周波数及び電源電圧を制御する。前述した技術は、実行中の処理状況に基づいて処理時間の予測を行うことはできず、例えば入力されるデータに依存して処理時間が変動する処理においては、処理モジュールに供給するクロック信号の周波数や電源電圧を適切に制御することは困難である。本発明は、このような事情に鑑みてなされたものであり、それぞれの処理モジュールに供給するクロック信号の周波数を、実行中の処理状況に応じて制御することができる情報処理装置及びその制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明に係る情報処理装置は、入力されるデータに対して所定の処理を実行するとともに、該実行される処理に基づく評価値を算出する複数の演算処理手段と、前記複数の演算処理手段それぞれにおける所定の処理にかかる処理時間を、前記評価値に基づいて推定する推定処理手段と、前記推定処理手段により推定された前記演算処理手段における処理時間に応じて、クロック信号の周波数を前記演算処理手段ごとに決定し、決定した周波数の前記クロック信号を前記演算処理手段のそれぞれに供給するクロック制御手段とを有することを特徴とする。
【発明の効果】
【０００６】
本発明によれば、複数の演算処理手段それぞれにおける処理時間を動的に予測し、供給するクロック信号の周波数を実行される処理に応じて制御することができ、情報処理装置における処理時間の削減及び消費電力の削減を実現することが可能となる。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態における情報処理装置の構成例を示す図である。
【図２】第１の実施形態における顔検出処理を説明するフローチャートである。
【図３】スキャンウィンドウの例を示す図である。
【図４】カスケード型検出処理工程での処理例を示すフローチャートである。
【図５】Ｈａａｒ−Ｌｉｋｅ特徴量の例を示す図である。
【図６】第１の実施形態における検出結果の例を示す図である。
【図７】第１の実施形態における処理例を示す図である。
【図８】第１の実施形態における処理例を示す図である。
【図９】第１の実施形態における処理時間の推定処理の例を示すフローチャートである。
【図１０】第２の実施形態における情報処理装置の構成例を示す図である。
【図１１】第３の実施形態における情報処理装置の構成例を示す図である。
【図１２】第３の実施形態における情報処理装置の他の構成例を示す図である。
【図１３】第４の実施形態における情報処理装置の構成例を示す図である。
【図１４】第４の実施形態における参照画素位置の例を示す図である。
【図１５】第５の実施形態における周波数テーブルの例を示す図である。
【図１６】第５の実施形態における演算関数の例を示す図である。
【図１７】第６の実施形態における情報処理装置の構成例を示す図である。
【図１８】第６の実施形態における距離情報算出処理を説明するフローチャートである。
【図１９】第６の実施形態における画像及びスキャンウィンドウの例を示す図である。
【図２０】第６の実施形態における処理例を示す図である。
【図２１】複数の演算処理モジュールを有する並列処理プロセッサの例を示す図である。
【発明を実施するための形態】
【０００８】
以下、本発明の実施形態を図面に基づいて説明する。
【０００９】
本発明の実施形態における情報処理装置としての並列処理プロセッサの説明を行うにあたり、まず本発明に係る主要概念に関する説明を行う。図２１は、異なる入力データに対して、同一の処理を実行する複数の演算処理モジュールを有する並列処理プロセッサの概念図を示している。
【００１０】
演算処理モジュール＜ｉ＞（ｉ＝０、１、・・・、Ｎ）は、入力された入力データ＜ｉ＞に対して所定の処理を実行して出力する。演算処理モジュールが実行する所定の処理は、入力データに依存して処理時間が変動する、処理時間が不定の処理である。例えば、演算の打ち切り処理を含む演算処理や、入力データから特定パターンを検出し、検出された特定パターンの数によって処理時間が変動する演算処理等である。
【００１１】
それぞれの演算処理モジュールにおける処理時間が不定であることから、演算処理モジュールごとの処理終了時間にバラつきが生じ、演算処理モジュールのストール等により並列処理の効率低下が生じる。これに対して、各演算処理モジュールの処理過程状況を参照して、それぞれの演算処理モジュールにおける処理時間を推定し、推定した処理時間に応じて、それぞれの演算処理モジュールに供給するクロック信号の周波数を増減させる手法が考えられる。
【００１２】
ここで、演算処理モジュールの処理過程状況が、実行中の演算処理における演算値に反映される場合、演算値に基づく評価値を参照することで演算処理モジュールの処理過程状況を判定することが可能である。ただし、対象の演算処理モジュールにおける演算値のみを元にした場合、その演算値は対象の演算処理モジュールに入力されたデータに対する一時的な演算処理状況を反映したものに過ぎず、最終的な処理時間と関連性が低いこともある。そこで、本発明の実施形態における並列処理プロセッサは、演算処理モジュールにおける処理時間を推定する際に、その演算処理モジュールにおける評価値のみではなく、並列に処理を実行している他の演算処理モジュールにおける評価値も参照する。
【００１３】
また、本発明の実施形態において、各演算処理モジュールに入力されるデータは、少なくとも空間的又は時間的に近接していることを前提としている。一般的に、空間的又は時間的に近接するデータは、データ特性が類似している可能性が高い。例えば、画像データから部分領域を切り出す場合を考えると、画像上で位置の近い部分領域（互いに重なる場合を含む）は、一般的に近いデータ特性を有する。
【００１４】
したがって、演算処理モジュールにおける処理時間を推定する際に、少なくとも空間的又は時間的に近接した入力データを演算対象とする他の演算処理モジュールにおける評価値も参照することで、入力データの特性を反映した処理時間の推定が可能になる。例えば、入力データが画像データである場合、画像上の局所的なノイズによって、ノイズを含む部分領域を入力データとする演算処理モジュールにおける評価値が、一時的に最終的な処理結果と相関の低い値になり得る。そうなったとしても、近接するノイズを含まない部分領域を入力データとする他の演算処理モジュールにおける評価値を参照することにより、ノイズによる一時的な影響にとらわれずに処理時間を推定することが可能となる。
【００１５】
このように本発明の実施形態における並列処理プロセッサは、空間的又は時間的に近接するデータを処理する複数の演算処理モジュールにおいて、それぞれの演算値を元にした評価値を相互に参照して処理時間を推定する。そして、推定した処理時間を元にして、それぞれの演算処理モジュールに供給するクロック信号の周波数を決定して制御することにより、演算処理モジュールごとの処理終了時間のバラつきを軽減し、並列処理の効率を向上させる。
【００１６】
続いて図面を参照して、本発明の実施形態をより具体的に説明する。
（第１の実施形態）
本発明の第１の実施形態について説明する。第１の実施形態では、複数の演算処理モジュールを有する並列処理プロセッサにおいて、それぞれの演算処理モジュールの実行中の処理状況を反映した評価値を元にして、それぞれの演算処理モジュールに供給するクロック信号の周波数を制御する。
【００１７】
図１は、第１の実施形態における情報処理装置としての並列処理プロセッサの構成例を示すブロック図である。第１の実施形態における並列処理プロセッサは、前処理モジュール１１、複数の演算処理モジュール１２Ａ（１２Ａ−０〜１２Ａ−７）、後処理モジュール１３、推定処理モジュール１４、クロック制御モジュール１５、及びクロックモジュール１６を有する。
【００１８】
並列処理プロセッサに入力されたデータに対して、前処理モジュール１１が所定の前処理を実行し、演算処理モジュール１２Ａが所定の演算処理を並列に実行し、後処理モジュール１３が所定の後処理を実行する。推定処理モジュール１４は、処理の実行時に演算処理モジュール１２Ａにおいて算出される実行中の処理状況に基づく評価値に基づいて、それぞれの演算処理モジュール１２Ａにおける処理時間を推定する。
【００１９】
クロック制御モジュール１５は、基準クロック信号を元にして、演算処理モジュール１２Ａに供給するクロック信号を生成する。また、クロック制御モジュール１５は、推定処理モジュール１４によって推定された演算処理モジュール１２Ａにおける処理時間に応じて、それぞれの演算処理モジュール１２Ａに供給するクロック信号の周波数を決定する。クロックモジュール１６は、クロック制御モジュール１５に供給する基準クロック信号を生成する。
【００２０】
第１の実施形態において、並列処理プロセッサは、一例として人間の顔を検出する顔検出処理を実行するものとする。すなわち、前処理モジュール１１は、入力された画像に対して積分画像を算出する前処理を実行する。複数の演算処理モジュール１２Ａ−０〜１２Ａ−７は、前処理モジュール１１により算出された積分画像を元にして、人の顔の検出を行うカスケード型検出処理を、それぞれの演算処理モジュールにおいて並列に実行する。後処理モジュール１３は、演算処理モジュール１２Ａ−０〜１２Ａ−７において算出された顔の検出結果を統合する後処理を実行する。なお、顔検出処理は、説明のための処理例の一つであり、並列処理プロセッサが実行する処理は、これに限定されるものではない。
【００２１】
ここで、第１の実施形態における並列処理プロセッサにおいて実行される顔検出処理に関して概略を説明する。図２は、第１の実施形態における顔検出処理を説明するためのフローチャートである。本実施形態における顔検出処理は、現在、広く実施されている参考文献１に記載の処理アルゴリズムをベースとした手法を使用する。
（参考文献１）Viola, P. & Jones, M. (2001). Rapid object detection using a boosted cascade of simple features. In IEEE Computer Vision and Pattern Recognition (pp. I:511-518).
【００２２】
本技術に関しては、参考文献１やその他の文献で詳述されているので、以下では本実施形態の説明に必要な部分のみ説明する。図２に示すように、本実施形態における顔検出処理は、入力された画像データに対して積分画像を算出する前処理工程１０１、人間の顔の検出を行うカスケード型検出処理工程１０２、及び検出された顔の検出結果を統合する後処理工程１０３を有する。本実施形態では、カスケード型検出処理工程１０２を複数の演算処理モジュールにより並列に実行するため、複数個のカスケード型検出処理工程１０２を図示している。本実施形態の場合、演算処理モジュール１２Ａは８つ実装されているため、図２には、カスケード型検出処理工程１０２も８つ示している。
【００２３】
図２において、カメラ等により取得された画像データが前処理工程１０１に入力される。前処理工程１０１では、例えば参考文献１に記載の算出方法と同様にして、入力された画像データより積分画像データを算出する。続いて、カスケード型検出処理工程１０２では、前処理工程１０１において算出された積分画像データを元にして、カスケード型検出処理を実行する。ここで、カスケード型検出処理工程１０２は、前述したように８並列に処理が実行されるが、それぞれの処理工程では、元画像に対して所定の画素分をずらしたスキャンウィンドウ領域単位でのカスケード型検出処理工程１０２を並列に実行する。
【００２４】
スキャンウィンドウ領域について説明する。参考文献１にも説明されているように、画像検出処理において、検出対象の物体のサイズは、元の画像のサイズよりも小さい場合が多い。そのため、検出処理対象の領域を、検出対象の物体のサイズに対応したスキャンウィンドウ領域として設定して処理を実行する。
【００２５】
図３に示す例では、入力画像１１１に対して、検出対象の物体である顔１１２のサイズに対応する領域をスキャンウィンドウ領域１１３として設定している。このとき、前述した８つのカスケード型検出処理工程１０２においては、それぞれの処理工程が１つのスキャンウィンドウ領域に対するカスケード型検出処理工程１０２を担当する。また、それぞれのカスケード型検出処理工程１０２は、所定の画素ずつずれて連続したスキャンウィンドウ領域を担当する。スキャンウィンドウのずらし量は、アプリケーションとしての目的によって様々に設定され得るが、本実施形態においては、図３に示すようにラスタスキャン方向に１画素ずつずらすものとする。
【００２６】
それぞれのカスケード型検出処理工程１０２において実行される処理について、図４に示すフローチャートを用いて説明する。図４に示すように、カスケード型検出処理工程１０２は、識別処理工程＜０＞、識別処理工程＜１＞、識別処理工程＜２＞、・・・、識別処理工程＜９９＞をカスケード状に構成する。それぞれの識別処理工程では、スキャンウィンドウ領域の画像が検出対象の物体（本実施形態では人物の顔）であるか否かを判定する。
【００２７】
識別処理工程においては、前処理工程１０１において算出した積分画像データを元にして、例えば参照文献１に記載の算出方法と同様にして、図５（ａ）〜図５（ｃ）に示すようなＨａａｒ−Ｌｉｋｅ特徴量を算出する。図５には、一例としてスキャンウィンドウ領域１１３上での３種類のＨａａｒ−Ｌｉｋｅ特徴量を示している。
【００２８】
続いて、識別処理工程では、算出したＨａａｒ−Ｌｉｋｅ特徴量を用いて識別処理を行う。識別処理方法は、各識別処理工程において算出したＨａａｒ−Ｌｉｋｅ特徴量を累算した識別評価値を算出し、識別処理工程ごとに、予め設定した所定の閾値と比較する方法を用いる。なお、所定の閾値は、参考文献１で説明されているのと同様に、事前の学習処理により決定される。すなわち、識別評価値が閾値よりも小さければ判定結果がＦａｌｓｅ（顔でない）として処理を打ち切る。逆に、識別評価値が閾値よりも大きければ判定結果がＴｒｕｅ（顔である）として、継続して次の識別処理工程を実行する。
【００２９】
そして、最終的にすべての識別処理工程（図４に示す例では、識別処理工程＜０＞〜識別処理工程＜９９＞）においてＴｒｕｅ（顔である）と判断した場合には、当該スキャンウィンドウ領域の画像は人物の顔であると判定する。そして、カスケード型検出処理工程は、当該スキャンウィンドウ領域の検出結果をＴｒｕｅ（顔を検出した）とする。それ以外の処理を打ち切った場合（最後の識別処理工程＜９９＞でＦａｌｓｅとなる場合を含む）には、カスケード型検出処理工程は、当該スキャンウィンドウ領域の検出結果をＦａｌｓｅ（顔を検出しなかった）とする。
【００３０】
なお、本実施形態では、カスケード状に構成された識別処理工程は、図１に示した演算処理モジュール１２Ａにおいて１工程ずつシリアルに実行される。図４に示したようなカスケード型検出処理工程は、カスケード状に構成された識別処理工程のどの工程で処理が打ち切られるか（もしくは最後まで打ち切られないか）によって、演算処理時間が変動する。したがって、カスケード型検出処理工程は、入力データに応じて処理時間が変動することとなり、実行前の段階では演算処理時間が不定である。
【００３１】
カスケード型検出処理工程１０２に続く、後処理工程１０３では、複数のカスケード型検出処理工程１０２における検出結果を統合する処理を実行する。例えば、図６に示すように、一般的に画像中の検出対象の物体（本実施形態では人物の顔）の近傍では、複数のスキャンウィンドウ領域に対して、カスケード型検出処理工程での検出結果がＴｒｕｅとなる場合が多い。これは、本実施形態のようにスキャンウィンドウ領域を１画素ずつずらして設定する場合、近接したスキャンウィンドウ領域に含まれる画像データが類似したものになることからも容易に類推できる。
【００３２】
そこで、後処理工程１０３では、カスケード型検出処理工程１０２において重複して検出された検出結果を統合し、同一の検出対象の物体に対する検出結果を一つにまとめる処理を実行する。例えば、画像中で近接した画素に対する複数の検出結果は、その検出結果に対応する複数の画素の重心位置の最近傍画素位置で検出されたものとして一つにまとめる。これにより、ある検出対象の物体に対する検出結果を一つにまとめることが可能となる。以上、第１の実施形態における並列処理プロセッサにおいて実行される顔検出処理に関して概略を説明した。
【００３３】
続いて、前述したカスケード型検出処理工程１０２を実行する際に、演算処理モジュール１２Ａに供給するクロック信号の周波数を制御する方法に関して説明する。前述したように、複数の演算処理モジュール１２Ａは、それぞれが担当するスキャンウィンドウ領域に対するカスケード型検出処理工程１０２を並列に実行する。このとき、各演算処理モジュール１２Ａは、カスケード型検出処理工程１０２の各識別処理工程において算出される識別評価値を推定処理モジュール１４に随時出力する。推定処理モジュール１４は、各演算処理モジュール１２Ａから入力された識別評価値を記憶保持する。
【００３４】
また、推定処理モジュール１４は、保持した複数の演算処理モジュール１２Ａにおける識別評価値とその組み合わせを元にして、各演算処理モジュール１２Ａにおいて実行中のカスケード型検出処理工程１０２の処理時間を推定する処理を実行する。以下では、推定処理モジュール１４は、演算処理モジュール１２Ａにおける処理時間を、Ｌｏｎｇ、Ｍｉｄｄｌｅ、Ｓｈｏｒｔの３種類に推定するとする。
【００３５】
例えば、ある画像データに対する識別処理工程（例えば先頭から１０番目の識別処理工程＜９＞）における、各演算処理モジュール１２Ａ−０〜１２Ａ−７における識別評価値Ｖ０〜Ｖ７が図７に示すような値を示したとする。このデータが各演算処理モジュール１２Ａ−０〜１２Ａ−７から出力され、推定処理モジュール１４に記憶保持される。
【００３６】
各演算処理モジュール１２Ａにおける処理時間を推定する場合、各演算処理モジュール１２Ａで実行されている処理に係る識別評価値を識別処理工程毎に予め設定した所定の閾値と比較する方法が考えられる。ここで、所定の閾値は、事前に大量のサンプル画像データを用いてテスト処理を行い、統計的に決定する。例えば、人物の顔が写っている画像のみを用いて識別処理工程を実行し、各識別処理工程における識別評価値の平均値を算出し閾値とする。
【００３７】
一例として、事前に行ったテスト処理において、１０段目の識別処理工程＜９＞における識別評価値の平均値が６０であった場合、これを閾値θ10と予め設定しているとする。このとき、図７に示したある画像データに対する識別処理工程の途中経過において、演算処理モジュール＜２＞１２Ａ−２から出力された識別評価値Ｖ２は、閾値θ10（＝６０）に対して値が大きい。したがって、演算処理モジュール＜２＞１２Ａ−２で実行中のカスケード型検出処理工程では、統計的に顔を検出する可能性が高く、すなわち今後も識別処理工程が続くことが予想される。
【００３８】
一方、演算処理モジュール＜３＞１２Ａ−３から出力された識別評価値Ｖ３は、閾値θ10（＝６０）に対して値が小さい。この識別評価値Ｖ３だけで判断した場合、演算処理モジュール＜３＞１２Ａ−３で実行中のカスケード型検出処理工程では、統計的に顔を検出する可能性が低く、すなわち識別処理工程が途中で打ち切られる可能性が高いと予想されてしまう。しかしながら、前述したように、一般的に画像中の検出対象の物体（本実施形態では人物の顔）の近傍では、複数のスキャンウィンドウ領域に対して、カスケード型検出処理工程の検出結果が集中してＴｒｕｅとなる場合が多い。
【００３９】
そこで、推定処理モジュール１４は、あるスキャンウィンドウ領域の識別評価値が小さくても、近接するスキャンウィンドウ領域に識別評価値が大きいものが集中していれば、当該スキャンウィンドウ領域における識別処理工程も継続する可能性が高いと判定する。すなわち、当該スキャンウィンドウ領域の識別評価値は一時的に小さくなったものであり、その後の識別処理工程を経るにつれて、近接する画素位置におけるスキャンウィンドウ領域の識別評価値と同様の変化をするとみなす。
【００４０】
なお、近接する画素位置との関係に関しても、前述した閾値θと同様に、事前に大量のサンプル画像データを用いてテスト処理を行い、統計的に決定する。例えば、人物の顔が写っている画像に対して識別処理工程を実行し、人物の顔を検出した画素位置に対して近接する画素位置での顔検出数の平均値を算出する。以下の例では、前述したように統計的に算出した近接する画素位置での顔検出数を元にして、各演算処理モジュールにおける処理時間を推定する場合の基準（近接画素における識別評価値の組み合わせ）を設定している。
【００４１】
本実施形態では、推定処理モジュール１４は、対象の画素と近接する左右それぞれ２画素との計５画素中の３画素以上で識別評価値が閾値より大きければ、対象の画素における識別評価値が閾値より小さくても、識別処理工程が継続する可能性が高いと判定する。そして、推定処理モジュール１４は、対象の画素についての識別処理工程が実行されている演算処理モジュール１２Ａにおける処理時間の推定結果をＬｏｎｇとしてクロック制御モジュール１５に出力する。
【００４２】
例えば、図７に示すように、演算処理モジュール＜３＞１２Ａ−３における識別評価値Ｖ３（＝５０）は、閾値θ10（＝６０）より小さいが、左右それぞれの２画素の内の３画素に対応する識別評価値Ｖ１、Ｖ２、Ｖ４が閾値より大きい。この場合、推定処理モジュール１４は、演算処理モジュール＜３＞１２Ａ−３における処理時間をＬｏｎｇと推定して、推定結果をクロック制御モジュール１５に出力する。
【００４３】
なお、近接する左右それぞれ２画素の各画素における識別評価値を処理時間の推定に用いる場合、両端のそれぞれ２画素については、近接する左右それぞれ２画素における識別評価値は存在しない。
【００４４】
本実施形態では、両端の画素については、当該画素と近接する右側の２画素又は左側の２画素との計３画素における識別評価値により処理時間を推定する。すなわち、演算処理モジュール＜０＞１２Ａ−０における処理時間は、演算処理モジュール＜０＞１２Ａ−０〜演算処理モジュール＜２＞１２Ａ−２における識別評価値Ｖ０、Ｖ１、Ｖ２により推定する。また、演算処理モジュール＜７＞１２Ａ−７における処理時間は、演算処理モジュール＜５＞１２Ａ−５〜演算処理モジュール＜７＞１２Ａ−７における識別評価値Ｖ５、Ｖ６、Ｖ７により推定する。
【００４５】
推定処理モジュール１４は、３画素中の２画素以上で識別評価値が閾値より大きければ、対象の画素についての識別処理工程が継続する可能性が高いと判定する。そして、推定処理モジュール１４は、対象の画素についての識別処理工程が実行されている演算処理モジュール１２Ａにおける処理時間の推定結果をＬｏｎｇとしてクロック制御モジュール１５に出力する。
【００４６】
例えば、図７に示すように、演算処理モジュール＜０＞１２Ａ−０における識別評価値Ｖ０（＝５０）は、閾値θ10（＝６０）より小さいが、右側の２画素に対応する識別評価値Ｖ１、Ｖ２が閾値より大きい。この場合、推定処理モジュール１４は、演算処理モジュール＜０＞１２Ａ−０における処理時間をＬｏｎｇと推定して、推定結果をクロック制御モジュール１５に出力する。
【００４７】
また、両端から１つ内側の画素については、当該画素と、近接する左側の１画素と右側の２画素、又は左側の２画素と右側の１画素との計４画素における識別評価値により処理時間を推定する。すなわち、演算処理モジュール＜１＞１２Ａ−１における処理時間は、演算処理モジュール＜０＞１２Ａ−０〜演算処理モジュール＜３＞１２Ａ−３における識別評価値Ｖ０、Ｖ１、Ｖ２、Ｖ３により推定する。また、演算処理モジュール＜６＞１２Ａ−６における処理時間は、演算処理モジュール＜４＞１２Ａ−４〜演算処理モジュール＜７＞１２Ａ−７における識別評価値Ｖ４、Ｖ５、Ｖ６、Ｖ７により推定する。
【００４８】
推定処理モジュール１４は、４画素中の２画素以上で識別評価値が閾値より大きければ、対象の画素についての識別処理工程が継続する可能性が高いと判定する。そして、推定処理モジュール１４は、対象の画素についての識別処理工程が実行されている演算処理モジュール１２Ａにおける処理時間の推定結果をＬｏｎｇとしてクロック制御モジュール１５に出力する。例えば、図７に示すように、演算処理モジュール＜１＞１２Ａ−１における処理時間は、対象の画素を含む近接４画素の内の２画素に対応する識別評価値Ｖ１、Ｖ２が閾値より大きいのでＬｏｎｇと推定する。
【００４９】
また、前述した例とは逆に、あるスキャンウィンドウ領域の識別評価値が大きくても、近接するスキャンウィンドウ領域に識別評価値が小さいものが集中していれば、当該スキャンウィンドウ領域における識別処理工程も打ち切られる可能性が高いと判定する。すなわち、当該スキャンウィンドウ領域の識別評価値は一時的に大きくなったものであり、その後の識別処理工程を経るにつれて、近接する画素位置におけるスキャンウィンドウ領域の識別評価値と同様の変化をするとみなす。
【００５０】
本実施形態では、推定処理モジュール１４は、対象の画素と近接する左右それぞれ２画素の計５画素中の４画素以上で識別評価値が閾値より小さければ、対象の画素における識別評価値が閾値より大きくても、識別処理工程が打ち切られる可能性が高いと判定する。そして、推定処理モジュール１４は、対象の画素についての識別処理工程が実行されている演算処理モジュール１２Ａにおける処理時間の推定結果をＳｈｏｒｔとしてクロック制御モジュール１５に出力する。
【００５１】
例えば、図８（ａ）に示すように、演算処理モジュール＜３＞１２Ａ−３における識別評価値Ｖ３（＝７０）は、閾値θ10（＝６０）より大きいが、左右それぞれの２画素の４画素に対応する識別評価値Ｖ１、Ｖ２、Ｖ４、Ｖ５が閾値より小さい。この場合、推定処理モジュール１４は、演算処理モジュール＜３＞１２Ａ−３における処理時間をＳｈｏｒｔと推定して、推定結果をクロック制御モジュール１５に出力する。
【００５２】
なお、この場合も同様に、両端の画素については、近接する左右それぞれ２画素における識別評価値は存在しないので、本実施形態では、当該画素と近接する右側の２画素又は左側の２画素との計３画素における識別評価値により処理時間を推定する。推定処理モジュール１４は、３画素中の２画素以上で識別評価値が閾値より小さければ、対象の画素についての識別処理工程が打ち切られる可能性が高いと判定する。そして、推定処理モジュール１４は、対象の画素についての識別処理工程が実行されている演算処理モジュール１２Ａにおける処理時間の推定結果をＳｈｏｒｔとしてクロック制御モジュール１５に出力する。
【００５３】
例えば、図８（ｂ）に示すように、演算処理モジュール＜０＞１２Ａ−０における識別評価値Ｖ０（＝７０）は、閾値θ10（＝６０）より大きいが、右側の２画素に対応する識別評価値Ｖ１、Ｖ２が閾値より小さい。この場合、推定処理モジュール１４は、演算処理モジュール＜０＞１２Ａ−０における処理時間をＳｈｏｒｔと推定して、推定結果をクロック制御モジュール１５に出力する。また、例えば、演算処理モジュール＜７＞１２Ａ−７における識別評価値Ｖ７（＝８０）は、閾値θ10（＝６０）より大きいが、左側の２画素に対応する識別評価値Ｖ５、Ｖ６が閾値より小さい。この場合、推定処理モジュール１４は、演算処理モジュール＜７＞１２Ａ−７における処理時間をＳｈｏｒｔと推定して、推定結果をクロック制御モジュール１５に出力する。
【００５４】
また、両端から１つ内側の画素については、当該画素と、近接する左側の１画素と右側の２画素、又は左側の２画素と右側の１画素との計４画素における識別評価値により処理時間を推定する。推定処理モジュール１４は、４画素中の３画素以上で識別評価値が閾値より小さければ、対象の画素についての識別処理工程が打ち切られる可能性が高いと判定する。そして、推定処理モジュール１４は、対象の画素についての識別処理工程が実行されている演算処理モジュール１２Ａにおける処理時間の推定結果をＳｈｏｒｔとしてクロック制御モジュール１５に出力する。
【００５５】
例えば、図８（ｃ）に示すように、演算処理モジュール＜１＞１２Ａ−１における処理時間は、対象の画素を含む近接４画素の内の３画素に対応する識別評価値Ｖ０、Ｖ２、Ｖ３が閾値より小さいのでＳｈｏｒｔと推定される。また、例えば、演算処理モジュール＜６＞１２Ａ−６における処理時間は、対象の画素を含む近接４画素の内の３画素に対応する識別評価値Ｖ４、Ｖ５、Ｖ７が閾値より小さいのでＳｈｏｒｔと推定される。
【００５６】
また、推定処理モジュール１４は、処理時間の推定結果がＬｏｎｇ及びＳｈｏｒｔ以外の場合には、演算処理モジュール１２Ａにおける処理時間の推定結果をＭｉｄｄｌｅとしてクロック制御モジュール１５に出力する。
【００５７】
図９に、前述した演算処理モジュール１２Ａにおける処理時間の判定フローを示す。図９には、対象の画素に近接する画素が左右にそれぞれ２画素ずつある場合の判定フローを一例として示している。すなわち、対象の画素と近接する左右それぞれ２画素とを含む計５画素における識別評価値により、対象の画素についての識別処理工程が実行されている演算処理モジュール１２Ａにおける処理時間を推定する場合を示している。
【００５８】
処理時間の推定処理では、まず、推定処理モジュール１４は、５画素中の３画素以上で識別評価値が所定の閾値より大きいか否かを判定する（Ｓ１０１）。その結果、５画素中の３画素以上で識別評価値が所定の閾値より大きければ（Ｓ１０１のＹＥＳ）、推定処理モジュール１４は、演算処理モジュール１２Ａにおける処理時間をＬｏｎｇと推定する（Ｓ１０２）。
【００５９】
また、ステップＳ１０１での判定の結果、識別評価値が所定の閾値より大きい画素が３画素未満であれば（ＮＯ）、推定処理モジュール１４は、５画素中の４画素以上で識別評価値が所定の閾値より小さいか否かを判定する（Ｓ１０３）。その結果、５画素中の４画素以上で識別評価値が所定の閾値より小さければ（Ｓ１０３のＹＥＳ）、推定処理モジュール１４は、演算処理モジュール１２Ａにおける処理時間をＳｈｏｒｔと推定する（Ｓ１０４）。
【００６０】
ステップＳ１０３での判定の結果、識別評価値が所定の閾値より小さい画素が４画素未満であれば（ＮＯ）、推定処理モジュール１４は、演算処理モジュール１２Ａにおける処理時間をＭｉｄｄｌｅと推定する（Ｓ１０４）。なお、本実施形態では演算処理モジュール１２Ａが８つ存在するため、推定処理モジュール１４は、それぞれの演算処理モジュールについて処理時間の推定処理を実行し、それぞれの推定結果（計８個）をクロック制御モジュール１５に出力する。
【００６１】
次に、クロック制御モジュール１５における処理について説明する。クロック制御モジュール１５は、クロックモジュール１６から供給される基準クロック信号（例えば２００ＭＨｚ）を元にして、各演算処理モジュール１２Ａに供給する周波数のクロック信号を生成する。
【００６２】
本実施形態では、クロック制御モジュール１５は、処理時間の推定結果がＬｏｎｇに対応する周波数として例えば４００ＭＨｚのクロック信号を生成する。また、処理時間の推定結果がＭｉｄｄｌｅに対応する周波数として例えば２００ＭＨｚのクロック信号を生成し、処理時間の推定結果がＳｈｏｒｔに対応する周波数として例えば１００ＭＨｚのクロック信号を生成する。なお、基準クロック信号とは周波数が異なるクロック信号（例では４００ＭＨｚや１００ＭＨｚ）の生成は、それぞれ基準クロック信号を元にして、一般的な逓倍回路や分周回路により容易に生成可能である。
【００６３】
さらに、クロック制御モジュール１５は、推定処理モジュール１４から入力された各演算処理モジュール１２Ａにおける処理時間の推定結果を参照して、供給するクロック信号の周波数を決定する。そして、クロック制御モジュール１５は、それぞれの推定結果に対応する周波数のクロック信号を各演算処理モジュール１２Ａに対して供給する。なお、図１では、各演算処理モジュール１２Ａに供給するクロック信号の周波数が異なり得ることを示すために、クロック制御モジュール１５の出力線を分割表示している。
【００６４】
以上のように、処理の実行中に推定された各演算処理モジュール１２Ａにおける処理時間に応じて、クロック制御モジュール１５が、各演算処理モジュール１２Ａに供給するクロック信号の周波数を制御する。推定処理時間が長い演算処理モジュール１２Ａのクロック信号の周波数は高くし、逆に推定処理時間が短い演算処理モジュール１２Ａのクロック信号の周波数は低くする。このように、各演算処理モジュール１２Ａでの実行中の処理状況に応じて、供給するクロック信号の周波数を制御することで、並列に動作する複数の演算処理モジュール１２Ａの処理時間を均一化する。
【００６５】
これにより、複数の演算処理モジュールが並列に動作する場合に、一部の処理時間が長い演算処理モジュールに処理時間が律速されることがなくなる。また、複数の演算処理モジュールが並列に動作する場合に、一部の処理時間が短い演算処理モジュールに不必要に周波数の高いクロック信号を供給することによる電力の無駄な消費を削減できる。
【００６６】
本実施形態では、以上説明した各演算処理モジュール１２Ａに供給するクロック信号の周波数の制御を、カスケード型検出処理における識別処理工程の１０段目ごとに実行する。また、識別処理工程の１段目から１０段目におけるクロック信号の周波数は、すべての演算処理モジュール１２Ａに供給するクロック信号の周波数を基準クロック信号と同じ周波数とする。なお、各演算処理モジュール１２Ａに供給するクロック信号の周波数の制御は、前述した識別処理工程の１０段目毎の実行に限るものではなく、必要に応じて適当な処理段数において実行するようにしても良い。また、識別処理工程の開始時（１段目）におけるクロック信号の周波数は、前述した例に限らず、例えば前回の画像フレームの各画素位置において、最終となった識別処理工程において選択した周波数を適用するようにしても良い。
【００６７】
第１の実施形態における並列処理プロセッサは、各演算処理モジュール１２Ａに供給されるクロック信号の周波数を、それぞれの演算処理モジュール１２Ａで実行中の識別処理工程に係る評価値及びその組み合わせに応じて決定する。並列に実行する他の識別処理工程の状況も参照してクロック信号の周波数を決定するため、当該画素における一時的な評価値の変動に左右されず、近接する画素におけるデータの類似性を元にした、より精度の高いクロック信号の制御を実現することが可能となる。したがって、各演算処理モジュール１２Ａに供給するクロック信号の周波数を実行中の処理状況に応じて精度良く制御することができ、並列処理プロセッサにおける処理時間の削減及び消費電力の削減を実現することが可能となる。
【００６８】
なお、本実施形態では、並列処理プロセッサにおける演算処理モジュール１２Ａの並列数を８つとしたが、それ以外の並列数を取るものであっても良い。また、推定処理モジュール１４において、各演算処理モジュール１２Ａにおける処理時間を推定する際に参照する、それぞれの演算処理モジュール１２Ａにおける評価値とその組み合わせも、本実施形態で説明したものに限らず、その他のものであっても良い。例えば、評価値として、前述した識別評価値の変化速度を用いても良い。
【００６９】
識別評価値の変化速度を算出する手法としては様々なものが考えられる。最も簡単な手法としては、例えば識別評価値について前段の識別処理工程との差分値を算出し、これを識別評価値の変化速度とすることができる。この場合には、各演算処理モジュールにおいて前段の識別処理工程における識別評価値を記憶保持し、次段の識別処理工程において算出した識別評価値との差分値を算出して評価値とする。
【００７０】
また、評価値としてはこれらに限定するものではなく、その他のものであっても良いが、それらに関しては後述する例において説明を行う。また、基準クロック信号及びそれぞれの演算処理モジュールに供給するクロック信号の周波数に関しても、前述した例に限らず、その他のものであっても良い。また、本実施形態では、カスケード型検出処理を例として説明したが、その他にも位置的に近接する入力データを並列に処理し、かつそれぞれの並列処理における処理時間が不定なものであれば、その他の処理であっても適用が可能である。
【００７１】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。図１０は、第２の実施形態における情報処理装置としての並列処理プロセッサの構成例を示すブロック図である。図１０において、図１に示したブロック等と同一の機能を有するブロック等には同一の符号を付し、重複する説明は省略する。第２の実施形態における並列処理プロセッサは、前処理モジュール１１、複数の演算処理モジュール１２Ｂ（１２Ｂ−０〜１２Ｂ−７）、後処理モジュール１３、共有メモリモジュール１７、及びクロック生成モジュール１８を有する。
【００７２】
並列処理プロセッサに入力されたデータに対して、前処理モジュール１１が所定の前処理を実行し、演算処理モジュール１２Ｂが所定の演算処理を並列に実行し、後処理モジュール１３が所定の後処理を実行する。記憶手段としての共有メモリモジュール１７は、処理の実行時に演算処理モジュール１２Ｂにおいて算出される実行中の処理状況に基づく評価値を保持する。クロック生成モジュール１８は、演算処理モジュール１２Ａに供給するクロック信号を生成する。クロック生成モジュール１８は、周波数が異なる複数のクロック信号を生成する。
【００７３】
また、それぞれの演算処理モジュール１２Ｂは、共有メモリモジュール１７に保持された複数の演算処理モジュール１２Ｂにおける評価値に基づいて処理時間を推定し、推定した処理時間に基づいて、供給を受けるクロック信号の周波数を決定する。そして、それぞれの演算処理モジュール１２Ｂは、クロック生成モジュール１８が生成する複数のクロック信号から、推定した処理時間に基づいて決定した周波数を有するクロック信号を選択して受信する。
【００７４】
第２の実施形態における並列処理プロセッサは、第１の実施形態における並列処理プロセッサと次の点が異なっている。第２の実施形態における並列処理プロセッサは、推定処理モジュール１４の代わりに共有メモリモジュール１７を有する。各演算処理モジュール１２Ｂが、その他の演算処理モジュール１２Ｂにおける評価値をも参照して、当該演算処理モジュールにおける処理時間を推定する。そして、各演算処理モジュール１２Ｂが、推定した処理時間に基づいて、クロック生成モジュール１８が生成したクロック信号の中で対応する周波数のクロック信号を選択受信する。以下では、第１の実施形態における並列処理プロセッサとの相違点について説明を行い、その他の部分に関しては第１の実施形態と同様として説明を省略する。
【００７５】
第２の実施形態における並列処理プロセッサは、一例として第１の実施形態と同様に、人間の顔を検出する顔検出処理を実行するものとする。つまり、前処理モジュール１１は、入力された画像に対して積分画像を算出する前処理を実行する。複数の演算処理モジュール１２Ｂ−０〜１２Ｂ−７は、前処理モジュール１１により算出された積分画像を元にして、人の顔の検出を行うカスケード型検出処理を、それぞれの演算処理モジュールにおいて並列に実行する。後処理モジュール１３は、演算処理モジュール１２Ｂ−０〜１２Ｂ−７において算出された顔の検出結果を統合する後処理を実行する。
【００７６】
続いて、第２の実施形態において、カスケード型検出処理工程１０２を実行する際に、演算処理モジュール１２Ｂに供給するクロック信号の周波数を制御する方法に関して説明する。複数の演算処理モジュール１２Ｂは、第１の実施形態における複数の演算処理モジュール１２Ａと同様に、それぞれが担当するスキャンウィンドウ領域に対するカスケード型検出処理工程１０２を並列に実行する。このとき、各演算処理モジュール１２Ｂは、カスケード型検出処理工程１０２の各識別処理工程において算出される識別評価値を共有メモリモジュール１７に随時出力する。共有メモリモジュール１７において、各演算処理モジュール１２Ｂにおける識別評価値が、それぞれの演算処理モジュールに対応した所定の領域に記憶保持される。
【００７７】
また、各演算処理モジュール１２Ｂは、共有メモリモジュール１７に保持された複数の演算処理モジュール１２Ｂの識別評価値とその組み合わせを元にして、自モジュールにおいて実行中のカスケード型検出処理工程の処理時間を推定する処理を実行する。本実施形態においても、各演算処理モジュール１２Ｂは、自モジュールにおいて実行中のカスケード型検出処理工程の処理時間を、Ｌｏｎｇ、Ｍｉｄｄｌｅ、Ｓｈｏｒｔの３種類に推定するとする。なお、第２の実施形態における処理時間の推定処理は、各演算処理モジュール１２Ｂが、自モジュールに関する推定処理を行う点が異なり、他は第１の実施形態においては推定処理モジュール１４が行っていた推定処理と同様であるので説明は省略する。
【００７８】
演算処理モジュール＜０＞１２Ｂ−０は、演算処理モジュール＜０＞１２Ｂ−０〜演算処理モジュール＜２＞１２Ｂ−２における識別評価値Ｖ０、Ｖ１、Ｖ２により、自モジュールで実行中のカスケード型検出処理工程の処理時間を推定する。演算処理モジュール＜１＞１２Ｂ−１は、演算処理モジュール＜０＞１２Ｂ−０〜演算処理モジュール＜３＞１２Ｂ−３における識別評価値Ｖ０、Ｖ１、Ｖ２、Ｖ３により、自モジュールで実行中のカスケード型検出処理工程の処理時間を推定する。
【００７９】
また、演算処理モジュール＜６＞１２Ｂ−６は、演算処理モジュール＜４＞１２Ｂ−４〜演算処理モジュール＜７＞１２Ｂ−７における識別評価値Ｖ４、Ｖ５、Ｖ６、Ｖ７により、自モジュールで実行中のカスケード型検出処理工程の処理時間を推定する。演算処理モジュール＜７＞１２Ｂ−７は、演算処理モジュール＜５＞１２Ｂ−５〜演算処理モジュール＜７＞１２Ｂ−７における識別評価値Ｖ５、Ｖ６、Ｖ７により、自モジュールで実行中のカスケード型検出処理工程の処理時間を推定する。
【００８０】
その他の演算処理モジュール１２Ｂのそれぞれは、当該演算処理モジュール及び近接する左右２画素に対応する演算処理モジュールにおける識別評価値により、自モジュールで実行中のカスケード型検出処理工程の処理時間を推定する。
【００８１】
次に、演算処理モジュール１２Ｂ及びクロック生成モジュール１８によるクロック信号の選択受信について説明する。クロック生成モジュール１８は、基準クロック信号（例えば２００ＭＨｚ）を元にして、各演算処理モジュール１２Ｂに供給する周波数のクロック信号を生成する。
【００８２】
本実施形態では、クロック生成モジュール１８は、処理時間の推定結果がＬｏｎｇに対応する周波数として例えば４００ＭＨｚのクロック信号を生成する。また、処理時間の推定結果がＭｉｄｄｌｅに対応する周波数として例えば２００ＭＨｚのクロック信号を生成し、処理時間の推定結果がＳｈｏｒｔに対応する周波数として例えば１００ＭＨｚのクロック信号を生成する。なお、各周波数のクロック信号の生成は、それぞれ基準クロック信号を元にして、一般的な逓倍回路や分周回路により容易に生成可能である。
【００８３】
クロック生成モジュール１８に対して、各演算処理モジュール１２Ｂが処理時間の推定結果を出力することで、処理時間の推定結果に対応する周波数のクロック信号を選択受信する。クロック生成モジュール１８は、各演算処理モジュール１２Ｂに対応してセレクタを有している。クロック生成モジュール１８により生成した３種類のクロック信号の何れかが、それぞれの演算処理モジュール１２Ｂからの処理時間の推定結果の入力（Ｌｏｎｇ、Ｍｉｄｄｌｅ、Ｓｈｏｒｔの何れか）に応じて選択されて演算処理モジュールに供給される。
【００８４】
以上のように、処理の実行中に各演算処理モジュール１２−Ｂにおいて推定された処理時間に応じて、各演算処理モジュール１２−Ｂに供給するクロック信号の周波数を制御する。推定処理時間が長い演算処理モジュール１２Ｂのクロック信号の周波数は高くし、逆に推定処理時間が短い演算処理モジュール１２Ｂのクロック信号の周波数は低くする。このように、各演算処理モジュール１２Ｂでの実行中の処理状況に応じて、供給するクロック信号の周波数を制御することで、第１の実施形態と同様に、並列に動作する複数の演算処理モジュール１２Ｂの処理時間を均一化する。
【００８５】
これにより、複数の演算処理モジュールが並列に動作する場合に、一部の処理時間が長い演算処理モジュールに処理時間が律速されることがなくなる。また、複数の演算処理モジュールが並列に動作する場合に、一部の処理時間が短い演算処理モジュールに不必要に周波数の高いクロック信号を供給することによる電力の無駄な消費を削減できる。
【００８６】
本実施形態では、以上説明した各演算処理モジュール１２Ｂに供給するクロック信号の周波数の制御を、カスケード型検出処理における識別処理工程の１０段目ごとに実行する。また、識別処理工程の１段目から１０段目におけるクロック信号の周波数は、演算処理モジュール１２Ｂから処理時間の推定結果のデフォルト値としてＭｉｄｄｌｅが出力されることにより、基準周波数である２００ＭＨｚとする。つまり、すべての演算処理モジュール１２Ｂに基準周波数である２００ＭＨｚのクロック信号が供給される。
【００８７】
第２の実施形態における並列処理プロセッサは、各演算処理モジュール１２Ｂに供給されるクロック信号の周波数を、それぞれの演算処理モジュール１２Ｂで実行中の識別処理工程に係る評価値及びその組み合わせに応じて決定する。並列に実行する他の識別処理工程の状況も参照してクロック信号の周波数を決定するため、当該画素における一時的な評価値の変動に左右されず、近接する画素におけるデータの類似性を元にした、より精度の高いクロック信号の制御を実現することが可能となる。したがって、各演算処理モジュール１２Ｂに供給するクロック信号の周波数を実行中の処理状況に応じて精度良く制御することができ、並列処理プロセッサにおける処理時間の削減及び消費電力の削減を実現することが可能となる。
【００８８】
なお、本実施形態では、並列処理プロセッサにおける演算処理モジュール１２Ｂの並列数を８つとしたが、それ以外の並列数を取るものであっても良い。また、各演算処理モジュール１２Ｂにおいて処理時間を推定する際に参照する、それぞれの演算処理モジュール１２Ｂにおける評価値とその組み合わせも、本実施形態で説明したものに限らず、その他のものであっても良い。また、基準クロック信号及びそれぞれの演算処理モジュールに供給するクロック信号の周波数に関しても、前述した例に限らず、その他のものであっても良い。
【００８９】
また、本実施形態においては、各演算処理モジュール１２Ｂにおいて実行中の識別処理工程における識別評価値を共有メモリモジュール１７に記憶保持するタイミングは、例として挙げた１０段目に限らない。例えば、各演算処理モジュール１２Ｂは、すべての識別処理工程における識別評価値を出力して、それを共有メモリモジュール１７に記憶保持する。そして、演算処理モジュール１２Ｂが、前述した処理時間の推定処理（及びクロック信号の選択受信の切り替え）のタイミングを各演算処理モジュール１２Ｂにおける実行中の識別処理工程における評価値を元にして決定することも可能である。
【００９０】
例えば、各演算処理モジュール１２Ｂにおいて、実行中の識別処理工程における評価値が所定の閾値以上又は所定の閾値未満になった場合のみ、処理時間の推定処理（及びクロック信号の選択受信の切り替え処理）を実行するようにしても良い。また、例えば、実行中の識別処理工程における評価値と、前回の識別処理工程における評価値との差分値が、所定の閾値以上又は所定の閾値未満になった場合のみ、処理時間の推定処理（及びクロック信号の選択受信の切り替え）を実行するようにしても良い。
【００９１】
これらの場合には、演算処理モジュールごとに識別処理工程の状況に応じて、個別にクロック信号の選択受信を切り替えることが可能となるため、より柔軟なクロック信号の選択受信を実現することが可能となる。また、処理時間の推定処理及びクロック信号の選択受信の切り替えが、識別処理工程の状況に応じて実行されるため、識別処理工程が変化していないにも関わらず無駄に処理が実行されることを避けることが可能となる。
【００９２】
（第３の実施形態）
次に、本発明の第３の実施形態について説明する。図１１は、第２の実施形態における情報処理装置としての並列処理プロセッサの構成例を示すブロック図である。図１１において、図１に示したブロック等と同一の機能を有するブロック等には同一の符号を付し、重複する説明は省略する。図１１に示す第３の実施形態における並列処理プロセッサは、図１に示した第１の実施形態における並列処理プロセッサに、さらに電源電圧制御手段としてのマルチ出力可変電圧源モジュール１９を追加したものである。
【００９３】
すなわち、第１の実施形態における並列処理プロセッサでは、それぞれの演算処理モジュール１２Ａで実行中の識別処理工程の状況を反映した評価値を元にして、それぞれの演算処理モジュール１２Ａに供給するクロック信号の周波数を制御していた。第３の実施形態における並列処理プロセッサでは、クロック信号の周波数に加えて、それぞれの演算処理モジュール１２Ａに供給する電源電圧値を制御する。したがって、以下の説明では、第１の実施形態において説明した機能に関しては説明を省略し、第３の実施形態に特有の機能について説明を行う。
【００９４】
第３の実施形態における並列処理プロセッサは、第１の実施形態における並列処理プロセッサと同様にして、カスケード型検出処理工程を実行する際に、演算処理モジュール１２Ａに供給するクロック信号の周波数を制御する。一般的に、供給するクロック信号の周波数を低くすると、それと同時に電源電圧を下げることが可能である。すなわち、クロック信号の周波数が低くなると、回路における信号の遷移時間が大きくなっても、回路動作に支障は生じない。そこで、第３の実施形態では、クロック信号の周波数が４００ＭＨｚである場合に回路が正常動作する電源電圧値を基準として、２００ＭＨｚ又は１００ＭＨｚのクロック信号を供給する演算処理モジュール１２Ａに対しては、より低い電源電圧を供給する。
【００９５】
第３の実施形態における電源電圧の制御方法を説明する。推定処理モジュール１４は、第１の実施形態と同様に、識別処理工程が実行されている演算処理モジュール１２Ａにおける処理時間を、Ｌｏｎｇ、Ｍｉｄｄｌｅ、又はＳｈｏｒｔと推定して、マルチ出力可変電圧源モジュール１９に出力する。マルチ出力可変電圧源モジュール１９は、入力された処理時間の推定結果に対応して、Ｌｏｎｇの場合には電源電圧ＶLを、Ｍｉｄｄｌｅの場合には電源電圧ＶMを、Ｓｈｏｒｔの場合には電源電圧ＶSを出力し、演算処理モジュール１２Ａに供給する。ここで、各電源電圧値ＶL、ＶM、ＶSは、ＶL＞ＶM＞ＶSの関係にある。
【００９６】
なお、各電源電圧値ＶL、ＶM、ＶSは、対応する周波数のクロック信号でそれぞれの演算処理モジュール１２Ａを動作させる場合に、回路動作に支障が生じないことを事前に確認しているものとする。また、マルチ出力可変電圧源モジュール１９は、最も簡単な構成としては、３種類の電源電圧値に対応した３個の電圧源を有し、各演算処理モジュール１２Ａにおける処理時間の推定結果に対応した電源電圧値をそれぞれに対して出力するものが考えられる。マルチ出力可変電圧源モジュール１９については、それ以外にも様々な実現形態が考えられるが、それらは本発明の主眼とするものではないため、説明を省略する。
【００９７】
また、本実施形態の変形例としては、図１２に示すように、図１０に示した第２の実施形態における並列処理プロセッサに、さらに電源電圧制御手段としてのマルチ出力可変電圧源モジュール２０を追加したものであっても良い。すなわち、第２の実施形態における並列処理プロセッサでは、各演算処理モジュール１２Ｂにおいて推定された処理時間に応じて、クロック信号の中で対応する周波数のクロック信号を選択受信していた。第３の実施形態における並列処理プロセッサでは、処理時間の推定結果に対応する周波数のクロック信号に加えて、供給される電源電圧を選択受信する。以下の説明では、第２の実施形態及び本実施形態において前述した機能に関しては説明を省略し、本変形形態に特有の機能について説明を行う。
【００９８】
図１２に示す本実施形態における並列処理プロセッサは、第２の実施形態における並列処理プロセッサと同様にして、カスケード型検出処理工程を実行する際に、演算処理モジュール１２Ｂが、クロック信号の中で対応する周波数のクロック信号を選択受信する。ここで、本変形形態においては、マルチ出力可変電圧モジュール２０により生成される複数の電源電圧の中から、各演算処理モジュール１２Ｂがクロック信号の周波数に対応した電源電圧信号を選択受信する。
【００９９】
図１２に示すように、各演算処理モジュール１２Ｂは、マルチ出力可変電圧モジュール２０に処理時間の推定結果を出力する。マルチ出力可変電圧源モジュール２０は、演算処理モジュール１２Ｂから入力された処理時間の推定結果に対応する３種類の電源電圧信号を生成する。すなわち、マルチ出力可変電圧モジュール２０は、処理時間の推定結果がＬｏｎｇの場合に対応する電源電圧ＶL、Ｍｉｄｄｌｅの場合に対応する電源電圧ＶM、Ｓｈｏｒｔの場合に対応する電源電圧ＶSを生成する。各電源電圧値ＶL、ＶM、ＶSは、ＶL＞ＶM＞ＶSの関係にある。それぞれの演算処理モジュール１２Ｂから入力された処理時間の推定結果に対応して、前述した３種類の電源電圧信号の何れかが選択されて、各演算処理モジュール１２Ｂに対して供給される。
【０１００】
第３の実施形態における並列処理プロセッサは、クロック信号の周波数に加えて、演算処理モジュールに供給する電源電圧値を制御することにより、さらに消費電力の削減を実現することが可能となる。
【０１０１】
（第４の実施形態）
次に、本発明の第４の実施形態について説明する。図１３は、第４の実施形態における情報処理装置としての並列処理プロセッサの構成例を示すブロック図である。図１３において、図１に示したブロック等と同一の機能を有するブロック等には同一の符号を付し、重複する説明は省略する。図１３に示す第４の実施形態における並列処理プロセッサは、図１に示した第１の実施形態における並列処理プロセッサに、さらに前回の処理結果を記憶保持する処理結果メモリモジュール２１を追加したものである。
【０１０２】
すなわち、第１の実施形態における並列処理プロセッサでは、それぞれの演算処理モジュール１２Ａで実行中の識別処理工程の状況を反映した評価値を元にして、それぞれの演算処理モジュール１２Ａに供給するクロック信号の周波数を制御していた。第４の実施形態における並列処理プロセッサは、さらに、特に近接する画素における処理結果を含む前回の処理結果も加えて参照して、それぞれの演算処理モジュール１２Ａに供給するクロック信号の周波数を制御する。以下の説明では、第１の実施形態において説明した機能に関しては説明を省略し、第４の本実施形態に特有の機能について説明を行う。
【０１０３】
第４の実施形態における並列処理プロセッサは、第１の実施形態と同様に顔検出処理を実行するが、特に入力される画像データが動画像である場合を想定している。例えば、画像データは、毎秒３０フレーム（３０ｆｐｓ）のビデオレートで撮影されて、並列処理プロセッサに入力されるものとする。
【０１０４】
このとき、本実施形態においてカスケード型検出処理工程を実行する際に、演算処理モジュール１２Ａに供給するクロック信号の周波数を制御する方法に関して説明する。本実施形態においては、１フレーム画像に対する顔検出処理の結果を、処理結果メモリモジュール２１に記憶保持する。処理結果メモリモジュール２１に保持する処理結果のデータ形式としては、例えば画像中の全画素位置に対して検出フラグ（１：検出、０：未検出）を設定する方法や、顔が検出された画素位置の画像中でのアドレス情報を保持する方法などが考えられる。本実施形態においては、いずれの方法も適用可能であるが、以下の説明では、画像中の全画素位置に対して検出フラグを設定する方法を採用する。
【０１０５】
本実施形態においては、演算処理モジュール１２Ａに供給するクロック信号の周波数を制御する際に、第１の実施形態と同様に、各演算処理モジュール１２Ａで実行中の識別処理工程の状況を反映した評価値を参照する。さらに、本実施形態では、同時に処理結果メモリモジュール２１に記憶した前回の顔検出処理の結果を参照する。特に、前回の顔検出処理の結果としては、当該画素における検出結果だけでなく、近接する画素における検出結果を参照する。
【０１０６】
例えば、まず推定処理モジュール１４は、第１の実施形態と同様に、実行中のカスケード型検出処理工程の識別処理工程における評価値及び組み合わせを元にして、各演算処理モジュール１２Ａにおける処理時間を推定する。ここで、処理時間の推定方法は、第１の実施形態と同様とするが、推定される処理時間は仮の推定時間という位置付けとする。つまり、第１の実施形態における推定結果でのＬｏｎｇはＴｅｍｐＬｏｎｇ、第１の実施形態における推定結果でのＭｉｄｄｌｅはＴｅｍｐＭｉｄｄｌｅ、第１の実施形態における推定結果でのＳｈｏｒｔはＴｅｍｐＳｈｏｒｔと対応付ける。
【０１０７】
さらに、本実施形態における推定処理モジュール１４は、各演算処理モジュール１２Ａに対応する画素位置に近接する画素位置における前回の検出結果を処理結果メモリモジュール２１より読み出す。例えば、本実施形態では、図１４に示すように当該画素位置（図中、黒塗り部）を含む３×３の近接の画素位置における前回の処理結果を読み込む。
【０１０８】
そして、例えば、推定処理モジュール１４は、推定結果がＴｅｍｐＳｈｏｒｔである場合に、前回の処理結果の近接画素９個中で顔が検出されていたら、最終的な処理時間の推定結果をＭｉｄｄｌｅに決定する。前回の処理結果の近接画素９個中で顔が検出されていなければ、最終的な処理時間の推定結果をＳｈｏｒｔに決定する。また、推定処理モジュール１４は、推定結果がＴｅｍｐＭｉｄｄｌｅである場合に、前回の処理結果の近接画素９個中で顔が検出されていたら、最終的な処理時間の推定結果をＬｏｎｇに決定する。前回の処理結果の近接画素９個中で顔が検出されていなければ、最終的な処理時間の推定結果をＳｈｏｒｔに決定する。また、推定処理モジュール１４は、推定結果がＴｅｍｐＬｏｎｇである場合に、前回の処理結果の近接画素９個中で顔が検出されていたら、最終的な処理時間の推定結果をＬｏｎｇに決定する。前回の処理結果の近接画素９個中で顔が検出されていなければ、最終的な処理時間の推定結果をＭｉｄｄｌｅに決定する。
【０１０９】
推定処理モジュール１４は、前述したように決定した処理時間の推定結果をクロック制御モジュール１５に出力する。クロック制御モジュール１５が、入力された各演算処理モジュール１２Ａにおける処理時間の推定結果に対応した周波数のクロック信号を生成し、それぞれの演算処理モジュール１２Ａに対して供給することは、第１の実施形態と同様である。また、それ以外の点に関しても第１の実施形態と同様として説明を割愛する。
【０１１０】
以上のように、第４の実施形態における並列処理プロセッサは、各演算処理モジュール１２Ａで実行中の識別処理工程の状況に加えて、さらに、特に近接する画素における処理結果を含む前回の処理結果も加えて参照して、クロック信号の周波数を制御する。例えば、動画像を処理対象とする場合、撮像フレームレートに対してカメラと被写体の相対速度が小さいと、画像フレーム間での被写体の移動量が小さく、検出対象の物体（本実施形態では人物の顔）は、次のフレームの近傍画素位置で検出される可能性が高い。したがって、空間的に近接した画素における処理結果と、時間的に近接した画素における処理結果の両方を参照してクロック信号の周波数を制御することで、より精度の高い処理時間の予測に基づいたクロック信号の制御を実現することが可能となる。
【０１１１】
なお、前述した例では、処理結果メモリモジュール２１に記憶保持された顔検出処理の結果は、次回の顔検出処理が完了するたびに上書きされるものとするが、複数フレームに渡って、処理結果を処理結果メモリモジュール２１に記憶するようにしても良い。この場合、数フレーム前までの時間的に近接する画素の情報を参照することが可能となる。
【０１１２】
また、前述した例では、処理結果メモリモジュール２１に記憶保持する顔検出処理の結果を、後処理（統合処理）後の処理結果としているが、これを後処理前の顔検出処理の結果としても良い。この場合、統合処理されていない識別評価値そのものの結果を参照することになるため、前回フレームにおける画素の情報をより直接的に参照することが可能となる。
【０１１３】
また、前述した例では、第１の実施形態に対して、さらに前回の処理結果を記憶保持する処理結果メモリモジュール２１を追加したものを示したが、第２の実施形態や第３の実施形態に対しても同様に処理結果メモリモジュールを追加することが可能である。
【０１１４】
（第５の実施形態）
次に、本発明の第５の実施形態について説明する。第５の実施形態における並列処理プロセッサは、第１の実施形態における並列処理プロセッサにおいて、推定処理モジュール１４が各演算処理モジュール１２Ａの処理時間を推定する際に、複数の識別評価値に対する所定の演算結果に基づいて処理時間を推定する。すなわち、第１の実施形態においては、当該画素と近接する画素における識別評価値を所定の閾値と比較し、処理時間を推定していた。第５の実施形態では、当該画素と近接する画素における識別評価値に対して所定の演算を実行して処理時間を推定する。
【０１１５】
例えば、本実施形態では、推定処理モジュール１４は、対象の画素位置における識別評価値と近接画素における識別評価値とを用いて所定の演算を実行し、演算結果を対象の画素における処理時間の推定結果とする。例えば、演算処理モジュール１２Ａ−３における識別評価値Ｖ３と、近接画素に対応する演算処理モジュール１２Ａにおける識別評価値Ｖ１、Ｖ２、Ｖ４、Ｖ５とを用いて、Ｔ３＝ａ×Ｖ１＋ｂ×Ｖ２＋ｃ×Ｖ３＋ｂ×Ｖ４＋ａ×Ｖ５の演算を行う。ここで、ａ、ｂ、ｃは識別評価値に対する重み付けパラメータを示し、Ｔ３は当該画素における推定処理時間を示す。
【０１１６】
第５の実施形態では、推定処理モジュール１４は、各演算処理モジュール毎に算出した推定処理時間をクロック制御モジュール１５に出力する。クロック制御モジュール１５は、入力された推定処理時間を元にして、対応する周波数のクロック信号を生成し、それぞれの演算処理モジュールに対して出力する。例えば、クロック制御モジュール１５は、図１５に示すような推定処理時間に応じて離散的に設定された周波数テーブルを保持し、入力された推定処理時間Ｔを元に周波数テーブルを参照して、対応する周波数を有するクロック信号を生成する。
【０１１７】
または、クロック制御モジュール１５は、入力された推定処理時間に対してさらに所定の演算を実行して、対応する周波数を決定するものであっても良い。例えば、推定処理時間に対して、図１６に示すようなシグモイド関数を適用してクロック信号の周波数を決定し、対応する周波数のクロック信号を生成するものであっても良い。なお、図１６中の式におけるａ、ｂはシグモイド関数の形状を決定するパラメータを示す。
【０１１８】
以上、本実施形態で説明したように、各演算処理モジュールにおける処理時間を推定する方法、及びクロック信号の周波数を決定する方法は、参照テーブルを用いたり、もしくは演算式を適用したりすることが可能である。この場合、各演算処理モジュールにおける実行中の識別処理工程の状況を反映した識別評価値を元にして、より詳細に処理時間の推定及びクロック信号の周波数の決定を実行することが可能となる。また、前述した例では、第１の実施形態において処理時間の推定方法及びクロック信号の周波数の決定方法を変更したものを示したが、第２の実施形態、第３の実施形態、及び第４の実施形態に対しても同様に変更を適用することが可能である。
【０１１９】
（第６の実施形態）
次に、本発明の第６の実施形態について説明する。図１７は、第６の実施形態における情報処理装置としての並列処理プロセッサの構成例を示すブロック図である。第６の実施形態における並列処理プロセッサは、複数の演算処理モジュール１２Ｃ（１２Ｃ−０〜１２Ｃ−７）、推定処理モジュール１４、クロック制御モジュール１５、及びクロックモジュール１６を有する。なお、図１７においては、データの入出力を理解しやすくするために、第１の実施形態〜第５の実施形態における並列処理プロセッサを示す図では省略した、演算処理モジュールに対するデータの入力端子２２及び演算結果の出力端子２３を図示している。
【０１２０】
並列処理プロセッサに入力されたデータに対して、演算処理モジュール１２Ｃが所定の演算処理を並列に実行する。推定処理モジュール１４は、処理の実行時に演算処理モジュール１２Ｃにおいて算出される評価値に基づいて、それぞれの演算処理モジュール１２Ｃにおける処理時間を推定する。クロック制御モジュール１５は、基準クロック信号を元にして、演算処理モジュール１２Ｃに供給するクロック信号を生成する。また、クロック制御モジュール１５は、推定処理モジュール１４によって推定された演算処理モジュール１２Ｃにおける処理時間に応じて、それぞれの演算処理モジュール１２Ｃに供給するクロック信号の周波数を決定する。クロックモジュール１６は、クロック制御モジュール１５に供給する基準クロック信号を生成する。
【０１２１】
第６の実施形態において、並列処理プロセッサは、一例として所定の投影パターンが投影された画像より距離情報を算出する処理を実行する。ここで、画像より距離情報を算出する処理としては、例えば特開２００８−２７６７４３号公報（以下、参考文献２と称す）に説明されている。なお、以下に説明する本実施形態では、投影パターンは参考文献２にあるようにバーコードより構成されている。詳細な処理内容については、参考文献２に説明されているので省略するが、本実施形態における並列処理プロセッサにおいては、以下のように処理を実行する。
【０１２２】
図１８は、第６の実施形態における距離情報算出処理を説明するためのフローチャートである。まず、本実施形態における並列処理プロセッサは、入力された画像に対して線分を検出する線分検出工程３３を実行する。続いて、検出した線分画像に対して、各線分より構成されるパターンが、投影パターンのどの部分に相当するかを検出するパターンマッチング処理工程３４を実行する。
【０１２３】
ここで、パターンマッチング処理工程３４は、線分検出工程３３で検出された線分の組み合わせ（以下、線分パターンと呼ぶ）が、投影パターン中のバーコードに一致するかどうかを判定する処理に相当する。すなわち、パターンマッチング処理工程３４は、線分検出工程３３において検出された線分の数が多いほど、バーコードとの一致を判定する線分の組み合わせが多くなるため、処理時間が増加することとなる。
【０１２４】
また続いて、パターンマッチング処理工程３４において投影パターンと一致した線分パターンに関しては、それぞれの画像上の位置から視差情報を算出し、さらに視差情報から距離情報を算出する視差・距離算出工程３５を実行する。なお、視差情報を算出する方法と、視差情報から距離情報を算出する方法は、広く知られているものであるため、詳細な説明を割愛する。なお、視差・距離算出工程３５において実行される視差情報の算出処理と、視差情報から距離情報を算出する処理は、投影パターンと一致した線分パターンの画素位置でのみ実行される。したがって、後述するように、投影パターンと一致した線分パターンの検出数に応じて、視差・距離算出工程３５の処理時間は増減することとなる。
【０１２５】
ここで、前述した距離情報算出処理は、演算処理モジュール１２Ｃにより並列に実行される。本実施形態では、図１９に示すように入力画像を複数の領域１３１に分割し、各分割画像に対して演算処理モジュール１２Ｃを割り当てることにより並列に処理を実行する。例えば、図１９に示す例では、画像の最上部を８個の領域に分割して示している。
【０１２６】
また、演算対象となる画像データの例を同じく図１９に示す。ここで画像には、距離情報を算出する対象物体（画像中央部の物体）が、バーコードを含む投影パターンを投影された状態で写っている。図１９から分かるように、一般的に投影パターンは対象物体の表面上に多く検出され、それ以外の部位ではプロジェクターのフォーカス設定等の関係により、ほとんど検出されない。
【０１２７】
分割領域ごとに演算処理モジュール１２Ｃで実行される処理時間は、投影パターンと一致した線分パターンの検出数に対応して異なる。したがって、分割領域ごとに演算処理モジュール１２Ｃが並列に演算を実行する場合、前述したように処理時間の不均一が生じ、演算処理モジュール１２Ｃがストールすることとなってしまう。これに対して、演算処理モジュールごとに検出した線分の数に応じて、クロック信号の周波数を制御することにより、各演算処理モジュールにおける処理時間を均一化する方法が考えられる。しかし、実際には画像から検出される線分には、投影パターンに対応しない線分も含まれるため、必ずしも各演算処理モジュールにおける処理時間を反映しない場合も有り得る。
【０１２８】
一方、前述した分割領域に関しては、図１９において画像中央部に示した８個の分割領域より分かるように、対象物体の連続性から類推すると、対象物体を含む領域が互いに近接し、対象物体を含まない領域が互いに近接する場合が多いと考えられる。そこで、本実施形態では、前述した実施形態と同様に、並列に処理を実行する演算処理モジュール１２Ｃにおいて、近接する分割領域についての処理を実行している他の演算処理モジュールの処理状況を参照する。これにより、各演算処理モジュール１２Ｃにおける処理時間の推定精度を向上させる。
【０１２９】
まず、第１の実施形態と同様に、事前に大量のサンプル画像データを用いてテスト処理を行い、所定の閾値を統計的に決定する。例えば、サンプル画像データとして計測対象が写っている画像において、距離情報算出処理を実行し、投影パターンのバーコードが検出される領域における線分の検出数の平均値を算出し、所定の閾値として予め設定する。
【０１３０】
このとき、例えば、ある演算処理モジュール１２Ｃにおける線分の検出数が所定の閾値よりも大きいとする。しかし、近接する分割領域に対応する演算処理モジュール１２Ｃにおける線分の検出数が所定の閾値よりも小さければ、対象物体の連続性から類推すると、当該領域で検出された線分は投影パターンによるものではない可能性がある。例えば、図１９に示した分割領域１３２において写っている遠方に位置する壁のキズ３８のように、画像に写った何らかの線分である可能性がある。
【０１３１】
また、逆に、ある演算処理モジュール１２Ｃにおける線分の検出数が所定の閾値よりも小さいとする。しかし、近接する分割領域に対応する演算処理モジュール１２Ｃにおける線分の検出数が所定の閾値よりも大きければ、対象物体の連続性から類推すると、当該領域で検出された線分は投影パターンによるものである可能性が高い。
【０１３２】
そこで、本実施形態では、推定処理モジュール１４は、対象の分割領域と近接する左右それぞれ２つの分割領域との計５つの分割領域により判定を行う。推定処理モジュール１４は、５つの分割領域中で、３つ以上の分割領域で線分の検出数が閾値より大きければ、当該分割領域における線分の検出数が少なくても、投影パターンに一致する線分パターン数が多い可能性が高いと判定する。そして、推定処理モジュール１４は、当該分割領域に関する演算を実行する演算処理モジュール１２Ｃにおける処理時間の推定結果をＬｏｎｇとしてクロック制御モジュール１５に出力する。
【０１３３】
例えば、図２０（ａ）に示すように、演算処理モジュール＜３＞１２Ｃ−３における線分の検出数Ｖ３（＝５０）は、閾値θ（＝６０）より小さいが、左右それぞれの２つの分割領域の内の３つの分割領域における線分の検出数Ｖ１、Ｖ２、Ｖ４が閾値より大きい。この場合、推定処理モジュール１４は、演算処理モジュール＜３＞１２Ｃ−３における処理時間をＬｏｎｇと推定して、推定結果をクロック制御モジュール１５に出力する。
【０１３４】
また、逆に、推定処理モジュール１４は、５つの分割領域中で、４つ以上の分割領域で線分の検出数が閾値より小さければ、当該分割領域における線分の検出数が多くても、投影パターンに一致する線分パターン数が少ない可能性が高いと判定する。そして、推定処理モジュール１４は、当該分割領域に関する演算を実行する演算処理モジュール１２Ｃにおける処理時間の推定結果をＳｈｏｒｔとしてクロック制御モジュール１５に出力する。
【０１３５】
例えば、図２０（ｂ）に示すように、演算処理モジュール＜３＞１２Ｃ−３における線分の検出数Ｖ３（＝７０）は、閾値θ（＝６０）より大きいが、左右それぞれの２つの分割領域における線分の検出数Ｖ１、Ｖ２、Ｖ４、Ｖ５が閾値より小さい。この場合、推定処理モジュール１４は、演算処理モジュール＜３＞１２Ｃ−３における処理時間をＳｈｏｒｔと推定して、推定結果をクロック制御モジュール１５に出力する。
【０１３６】
また、推定処理モジュール１４は、処理時間の推定結果がＬｏｎｇ及びＳｈｏｒｔ以外の場合には、演算処理モジュール１２Ｃにおける処理時間の推定結果をＭｉｄｄｌｅとしてクロック制御モジュール１５に出力する。
【０１３７】
なお、近接する分割領域の組み合わせに関しても、前述した所定の閾値と同様にして、事前に大量のサンプル画像データを用いてテスト処理を行い、統計的に決定する。例えば、サンプル画像データとして計測対象が写っている画像において、距離情報算出処理を実行し、線分の検出数が閾値を超える近接する分割領域数の平均値を算出する。前述した説明における近接する分割領域の組み合わせの基準は、統計的に算出した近接する分割領域数の平均値を元にして設定している。
【０１３８】
なお、推定処理モジュール１４、クロック制御モジュール１５、及びクロックモジュール１６の動作に関しては、基本的に第１の実施形態と同様であるので、詳細な説明を省略する。
【０１３９】
第６の実施形態における並列処理プロセッサは、各演算処理モジュール１２Ｃに供給するクロック信号の周波数を、それぞれの演算処理モジュール１２Ｃで実行中の演算処理における線分の検出数及び近接画素における線分の検出数の組み合わせに応じて決定する。並列に実行する他の処理工程の状況も参照してクロック信号の周波数を決定するため、当該分割領域における線分の検出数に左右されず、近接する分割領域におけるデータの類似性を元にしたより精度の高いクロック信号の制御を実現することが可能となる。したがって、各演算処理モジュール１２Ｃに供給するクロック信号の周波数を実行中の処理状況に応じて精度良く制御することができ、並列処理プロセッサにおける処理時間の削減及び消費電力の削減を実現することが可能となる。
【０１４０】
また、前述した例では、第１の実施形態において距離情報算出処理を適用したものを例として示したが、第２の実施形態〜第５の実施形態に対しても同様に距離情報算出処理を適用することが可能である。
【０１４１】
また、前述した実施形態では、それぞれ距離情報算出処理や顔検出処理を元にして、本発明の実施形態における情報処理装置としての並列処理プロセッサの説明を行ったが、本発明が適用される処理はこれらに限定されるものではない。位置的及び時間的に近接する入力データを並列に処理し、かつそれぞれの並列処理における処理時間がデータに依存して変動し処理時間が不定なものであれば、その他の処理であっても適用が可能である。
【０１４２】
（本発明の他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、前述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【０１４３】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【０１４４】
１２Ａ、１２Ｂ、１２Ｃ：演算処理モジュール  １４：推定処理モジュール  １５：クロック制御モジュール  １６：クロックモジュール  １７：共有メモリモジュール  １８：クロック生成モジュール  １９、２０：マルチ出力可変電圧源モジュール  ２１：処理結果メモリモジュール
【図１】
2015138281.tif 000003
【図２】
2015138281.tif 000004
【図３】
2015138281.tif 000005
【図４】
2015138281.tif 000006
【図５】
2015138281.tif 000007
【図６】
2015138281.tif 000008
【図７】
2015138281.tif 000009
【図８】
2015138281.tif 000010
【図９】
2015138281.tif 000011
【図１０】
2015138281.tif 000012
【図１１】
2015138281.tif 000013
【図１２】
2015138281.tif 000014
【図１３】
2015138281.tif 000015
【図１４】
2015138281.tif 000016
【図１５】
2015138281.tif 000017
【図１６】
2015138281.tif 000018
【図１７】
2015138281.tif 000019
【図１８】
2015138281.tif 000020
【図１９】
2015138281.tif 000021
【図２０】
2015138281.tif 000022
【図２１】
2015138281.tif 000023