以下、本発明の実施形態を図面に基づいて説明する。
本発明の実施形態における情報処理装置としての並列処理プロセッサの説明を行うにあたり、まず本発明に係る主要概念に関する説明を行う。図21は、異なる入力データに対して、同一の処理を実行する複数の演算処理モジュールを有する並列処理プロセッサの概念図を示している。
演算処理モジュール<i>(i=0、1、・・・、N)は、入力された入力データ<i>に対して所定の処理を実行して出力する。演算処理モジュールが実行する所定の処理は、入力データに依存して処理時間が変動する、処理時間が不定の処理である。例えば、演算の打ち切り処理を含む演算処理や、入力データから特定パターンを検出し、検出された特定パターンの数によって処理時間が変動する演算処理等である。
それぞれの演算処理モジュールにおける処理時間が不定であることから、演算処理モジュールごとの処理終了時間にバラつきが生じ、演算処理モジュールのストール等により並列処理の効率低下が生じる。これに対して、各演算処理モジュールの処理過程状況を参照して、それぞれの演算処理モジュールにおける処理時間を推定し、推定した処理時間に応じて、それぞれの演算処理モジュールに供給するクロック信号の周波数を増減させる手法が考えられる。
ここで、演算処理モジュールの処理過程状況が、実行中の演算処理における演算値に反映される場合、演算値に基づく評価値を参照することで演算処理モジュールの処理過程状況を判定することが可能である。ただし、対象の演算処理モジュールにおける演算値のみを元にした場合、その演算値は対象の演算処理モジュールに入力されたデータに対する一時的な演算処理状況を反映したものに過ぎず、最終的な処理時間と関連性が低いこともある。そこで、本発明の実施形態における並列処理プロセッサは、演算処理モジュールにおける処理時間を推定する際に、その演算処理モジュールにおける評価値のみではなく、並列に処理を実行している他の演算処理モジュールにおける評価値も参照する。
また、本発明の実施形態において、各演算処理モジュールに入力されるデータは、少なくとも空間的又は時間的に近接していることを前提としている。一般的に、空間的又は時間的に近接するデータは、データ特性が類似している可能性が高い。例えば、画像データから部分領域を切り出す場合を考えると、画像上で位置の近い部分領域(互いに重なる場合を含む)は、一般的に近いデータ特性を有する。
したがって、演算処理モジュールにおける処理時間を推定する際に、少なくとも空間的又は時間的に近接した入力データを演算対象とする他の演算処理モジュールにおける評価値も参照することで、入力データの特性を反映した処理時間の推定が可能になる。例えば、入力データが画像データである場合、画像上の局所的なノイズによって、ノイズを含む部分領域を入力データとする演算処理モジュールにおける評価値が、一時的に最終的な処理結果と相関の低い値になり得る。そうなったとしても、近接するノイズを含まない部分領域を入力データとする他の演算処理モジュールにおける評価値を参照することにより、ノイズによる一時的な影響にとらわれずに処理時間を推定することが可能となる。
このように本発明の実施形態における並列処理プロセッサは、空間的又は時間的に近接するデータを処理する複数の演算処理モジュールにおいて、それぞれの演算値を元にした評価値を相互に参照して処理時間を推定する。そして、推定した処理時間を元にして、それぞれの演算処理モジュールに供給するクロック信号の周波数を決定して制御することにより、演算処理モジュールごとの処理終了時間のバラつきを軽減し、並列処理の効率を向上させる。
続いて図面を参照して、本発明の実施形態をより具体的に説明する。
(第1の実施形態)
本発明の第1の実施形態について説明する。第1の実施形態では、複数の演算処理モジュールを有する並列処理プロセッサにおいて、それぞれの演算処理モジュールの実行中の処理状況を反映した評価値を元にして、それぞれの演算処理モジュールに供給するクロック信号の周波数を制御する。
図1は、第1の実施形態における情報処理装置としての並列処理プロセッサの構成例を示すブロック図である。第1の実施形態における並列処理プロセッサは、前処理モジュール11、複数の演算処理モジュール12A(12A−0〜12A−7)、後処理モジュール13、推定処理モジュール14、クロック制御モジュール15、及びクロックモジュール16を有する。
並列処理プロセッサに入力されたデータに対して、前処理モジュール11が所定の前処理を実行し、演算処理モジュール12Aが所定の演算処理を並列に実行し、後処理モジュール13が所定の後処理を実行する。推定処理モジュール14は、処理の実行時に演算処理モジュール12Aにおいて算出される実行中の処理状況に基づく評価値に基づいて、それぞれの演算処理モジュール12Aにおける処理時間を推定する。
クロック制御モジュール15は、基準クロック信号を元にして、演算処理モジュール12Aに供給するクロック信号を生成する。また、クロック制御モジュール15は、推定処理モジュール14によって推定された演算処理モジュール12Aにおける処理時間に応じて、それぞれの演算処理モジュール12Aに供給するクロック信号の周波数を決定する。クロックモジュール16は、クロック制御モジュール15に供給する基準クロック信号を生成する。
第1の実施形態において、並列処理プロセッサは、一例として人間の顔を検出する顔検出処理を実行するものとする。すなわち、前処理モジュール11は、入力された画像に対して積分画像を算出する前処理を実行する。複数の演算処理モジュール12A−0〜12A−7は、前処理モジュール11により算出された積分画像を元にして、人の顔の検出を行うカスケード型検出処理を、それぞれの演算処理モジュールにおいて並列に実行する。後処理モジュール13は、演算処理モジュール12A−0〜12A−7において算出された顔の検出結果を統合する後処理を実行する。なお、顔検出処理は、説明のための処理例の一つであり、並列処理プロセッサが実行する処理は、これに限定されるものではない。
ここで、第1の実施形態における並列処理プロセッサにおいて実行される顔検出処理に関して概略を説明する。図2は、第1の実施形態における顔検出処理を説明するためのフローチャートである。本実施形態における顔検出処理は、現在、広く実施されている参考文献1に記載の処理アルゴリズムをベースとした手法を使用する。
(参考文献1)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).
本技術に関しては、参考文献1やその他の文献で詳述されているので、以下では本実施形態の説明に必要な部分のみ説明する。図2に示すように、本実施形態における顔検出処理は、入力された画像データに対して積分画像を算出する前処理工程101、人間の顔の検出を行うカスケード型検出処理工程102、及び検出された顔の検出結果を統合する後処理工程103を有する。本実施形態では、カスケード型検出処理工程102を複数の演算処理モジュールにより並列に実行するため、複数個のカスケード型検出処理工程102を図示している。本実施形態の場合、演算処理モジュール12Aは8つ実装されているため、図2には、カスケード型検出処理工程102も8つ示している。
図2において、カメラ等により取得された画像データが前処理工程101に入力される。前処理工程101では、例えば参考文献1に記載の算出方法と同様にして、入力された画像データより積分画像データを算出する。続いて、カスケード型検出処理工程102では、前処理工程101において算出された積分画像データを元にして、カスケード型検出処理を実行する。ここで、カスケード型検出処理工程102は、前述したように8並列に処理が実行されるが、それぞれの処理工程では、元画像に対して所定の画素分をずらしたスキャンウィンドウ領域単位でのカスケード型検出処理工程102を並列に実行する。
スキャンウィンドウ領域について説明する。参考文献1にも説明されているように、画像検出処理において、検出対象の物体のサイズは、元の画像のサイズよりも小さい場合が多い。そのため、検出処理対象の領域を、検出対象の物体のサイズに対応したスキャンウィンドウ領域として設定して処理を実行する。
図3に示す例では、入力画像111に対して、検出対象の物体である顔112のサイズに対応する領域をスキャンウィンドウ領域113として設定している。このとき、前述した8つのカスケード型検出処理工程102においては、それぞれの処理工程が1つのスキャンウィンドウ領域に対するカスケード型検出処理工程102を担当する。また、それぞれのカスケード型検出処理工程102は、所定の画素ずつずれて連続したスキャンウィンドウ領域を担当する。スキャンウィンドウのずらし量は、アプリケーションとしての目的によって様々に設定され得るが、本実施形態においては、図3に示すようにラスタスキャン方向に1画素ずつずらすものとする。
それぞれのカスケード型検出処理工程102において実行される処理について、図4に示すフローチャートを用いて説明する。図4に示すように、カスケード型検出処理工程102は、識別処理工程<0>、識別処理工程<1>、識別処理工程<2>、・・・、識別処理工程<99>をカスケード状に構成する。それぞれの識別処理工程では、スキャンウィンドウ領域の画像が検出対象の物体(本実施形態では人物の顔)であるか否かを判定する。
識別処理工程においては、前処理工程101において算出した積分画像データを元にして、例えば参照文献1に記載の算出方法と同様にして、図5(a)〜図5(c)に示すようなHaar−Like特徴量を算出する。図5には、一例としてスキャンウィンドウ領域113上での3種類のHaar−Like特徴量を示している。
続いて、識別処理工程では、算出したHaar−Like特徴量を用いて識別処理を行う。識別処理方法は、各識別処理工程において算出したHaar−Like特徴量を累算した識別評価値を算出し、識別処理工程ごとに、予め設定した所定の閾値と比較する方法を用いる。なお、所定の閾値は、参考文献1で説明されているのと同様に、事前の学習処理により決定される。すなわち、識別評価値が閾値よりも小さければ判定結果がFalse(顔でない)として処理を打ち切る。逆に、識別評価値が閾値よりも大きければ判定結果がTrue(顔である)として、継続して次の識別処理工程を実行する。
そして、最終的にすべての識別処理工程(図4に示す例では、識別処理工程<0>〜識別処理工程<99>)においてTrue(顔である)と判断した場合には、当該スキャンウィンドウ領域の画像は人物の顔であると判定する。そして、カスケード型検出処理工程は、当該スキャンウィンドウ領域の検出結果をTrue(顔を検出した)とする。それ以外の処理を打ち切った場合(最後の識別処理工程<99>でFalseとなる場合を含む)には、カスケード型検出処理工程は、当該スキャンウィンドウ領域の検出結果をFalse(顔を検出しなかった)とする。
なお、本実施形態では、カスケード状に構成された識別処理工程は、図1に示した演算処理モジュール12Aにおいて1工程ずつシリアルに実行される。図4に示したようなカスケード型検出処理工程は、カスケード状に構成された識別処理工程のどの工程で処理が打ち切られるか(もしくは最後まで打ち切られないか)によって、演算処理時間が変動する。したがって、カスケード型検出処理工程は、入力データに応じて処理時間が変動することとなり、実行前の段階では演算処理時間が不定である。
カスケード型検出処理工程102に続く、後処理工程103では、複数のカスケード型検出処理工程102における検出結果を統合する処理を実行する。例えば、図6に示すように、一般的に画像中の検出対象の物体(本実施形態では人物の顔)の近傍では、複数のスキャンウィンドウ領域に対して、カスケード型検出処理工程での検出結果がTrueとなる場合が多い。これは、本実施形態のようにスキャンウィンドウ領域を1画素ずつずらして設定する場合、近接したスキャンウィンドウ領域に含まれる画像データが類似したものになることからも容易に類推できる。
そこで、後処理工程103では、カスケード型検出処理工程102において重複して検出された検出結果を統合し、同一の検出対象の物体に対する検出結果を一つにまとめる処理を実行する。例えば、画像中で近接した画素に対する複数の検出結果は、その検出結果に対応する複数の画素の重心位置の最近傍画素位置で検出されたものとして一つにまとめる。これにより、ある検出対象の物体に対する検出結果を一つにまとめることが可能となる。以上、第1の実施形態における並列処理プロセッサにおいて実行される顔検出処理に関して概略を説明した。
続いて、前述したカスケード型検出処理工程102を実行する際に、演算処理モジュール12Aに供給するクロック信号の周波数を制御する方法に関して説明する。前述したように、複数の演算処理モジュール12Aは、それぞれが担当するスキャンウィンドウ領域に対するカスケード型検出処理工程102を並列に実行する。このとき、各演算処理モジュール12Aは、カスケード型検出処理工程102の各識別処理工程において算出される識別評価値を推定処理モジュール14に随時出力する。推定処理モジュール14は、各演算処理モジュール12Aから入力された識別評価値を記憶保持する。
また、推定処理モジュール14は、保持した複数の演算処理モジュール12Aにおける識別評価値とその組み合わせを元にして、各演算処理モジュール12Aにおいて実行中のカスケード型検出処理工程102の処理時間を推定する処理を実行する。以下では、推定処理モジュール14は、演算処理モジュール12Aにおける処理時間を、Long、Middle、Shortの3種類に推定するとする。
例えば、ある画像データに対する識別処理工程(例えば先頭から10番目の識別処理工程<9>)における、各演算処理モジュール12A−0〜12A−7における識別評価値V0〜V7が図7に示すような値を示したとする。このデータが各演算処理モジュール12A−0〜12A−7から出力され、推定処理モジュール14に記憶保持される。
各演算処理モジュール12Aにおける処理時間を推定する場合、各演算処理モジュール12Aで実行されている処理に係る識別評価値を識別処理工程毎に予め設定した所定の閾値と比較する方法が考えられる。ここで、所定の閾値は、事前に大量のサンプル画像データを用いてテスト処理を行い、統計的に決定する。例えば、人物の顔が写っている画像のみを用いて識別処理工程を実行し、各識別処理工程における識別評価値の平均値を算出し閾値とする。
一例として、事前に行ったテスト処理において、10段目の識別処理工程<9>における識別評価値の平均値が60であった場合、これを閾値θ10と予め設定しているとする。このとき、図7に示したある画像データに対する識別処理工程の途中経過において、演算処理モジュール<2>12A−2から出力された識別評価値V2は、閾値θ10(=60)に対して値が大きい。したがって、演算処理モジュール<2>12A−2で実行中のカスケード型検出処理工程では、統計的に顔を検出する可能性が高く、すなわち今後も識別処理工程が続くことが予想される。
一方、演算処理モジュール<3>12A−3から出力された識別評価値V3は、閾値θ10(=60)に対して値が小さい。この識別評価値V3だけで判断した場合、演算処理モジュール<3>12A−3で実行中のカスケード型検出処理工程では、統計的に顔を検出する可能性が低く、すなわち識別処理工程が途中で打ち切られる可能性が高いと予想されてしまう。しかしながら、前述したように、一般的に画像中の検出対象の物体(本実施形態では人物の顔)の近傍では、複数のスキャンウィンドウ領域に対して、カスケード型検出処理工程の検出結果が集中してTrueとなる場合が多い。
そこで、推定処理モジュール14は、あるスキャンウィンドウ領域の識別評価値が小さくても、近接するスキャンウィンドウ領域に識別評価値が大きいものが集中していれば、当該スキャンウィンドウ領域における識別処理工程も継続する可能性が高いと判定する。すなわち、当該スキャンウィンドウ領域の識別評価値は一時的に小さくなったものであり、その後の識別処理工程を経るにつれて、近接する画素位置におけるスキャンウィンドウ領域の識別評価値と同様の変化をするとみなす。
なお、近接する画素位置との関係に関しても、前述した閾値θと同様に、事前に大量のサンプル画像データを用いてテスト処理を行い、統計的に決定する。例えば、人物の顔が写っている画像に対して識別処理工程を実行し、人物の顔を検出した画素位置に対して近接する画素位置での顔検出数の平均値を算出する。以下の例では、前述したように統計的に算出した近接する画素位置での顔検出数を元にして、各演算処理モジュールにおける処理時間を推定する場合の基準(近接画素における識別評価値の組み合わせ)を設定している。
本実施形態では、推定処理モジュール14は、対象の画素と近接する左右それぞれ2画素との計5画素中の3画素以上で識別評価値が閾値より大きければ、対象の画素における識別評価値が閾値より小さくても、識別処理工程が継続する可能性が高いと判定する。そして、推定処理モジュール14は、対象の画素についての識別処理工程が実行されている演算処理モジュール12Aにおける処理時間の推定結果をLongとしてクロック制御モジュール15に出力する。
例えば、図7に示すように、演算処理モジュール<3>12A−3における識別評価値V3(=50)は、閾値θ10(=60)より小さいが、左右それぞれの2画素の内の3画素に対応する識別評価値V1、V2、V4が閾値より大きい。この場合、推定処理モジュール14は、演算処理モジュール<3>12A−3における処理時間をLongと推定して、推定結果をクロック制御モジュール15に出力する。
なお、近接する左右それぞれ2画素の各画素における識別評価値を処理時間の推定に用いる場合、両端のそれぞれ2画素については、近接する左右それぞれ2画素における識別評価値は存在しない。
本実施形態では、両端の画素については、当該画素と近接する右側の2画素又は左側の2画素との計3画素における識別評価値により処理時間を推定する。すなわち、演算処理モジュール<0>12A−0における処理時間は、演算処理モジュール<0>12A−0〜演算処理モジュール<2>12A−2における識別評価値V0、V1、V2により推定する。また、演算処理モジュール<7>12A−7における処理時間は、演算処理モジュール<5>12A−5〜演算処理モジュール<7>12A−7における識別評価値V5、V6、V7により推定する。
推定処理モジュール14は、3画素中の2画素以上で識別評価値が閾値より大きければ、対象の画素についての識別処理工程が継続する可能性が高いと判定する。そして、推定処理モジュール14は、対象の画素についての識別処理工程が実行されている演算処理モジュール12Aにおける処理時間の推定結果をLongとしてクロック制御モジュール15に出力する。
例えば、図7に示すように、演算処理モジュール<0>12A−0における識別評価値V0(=50)は、閾値θ10(=60)より小さいが、右側の2画素に対応する識別評価値V1、V2が閾値より大きい。この場合、推定処理モジュール14は、演算処理モジュール<0>12A−0における処理時間をLongと推定して、推定結果をクロック制御モジュール15に出力する。
また、両端から1つ内側の画素については、当該画素と、近接する左側の1画素と右側の2画素、又は左側の2画素と右側の1画素との計4画素における識別評価値により処理時間を推定する。すなわち、演算処理モジュール<1>12A−1における処理時間は、演算処理モジュール<0>12A−0〜演算処理モジュール<3>12A−3における識別評価値V0、V1、V2、V3により推定する。また、演算処理モジュール<6>12A−6における処理時間は、演算処理モジュール<4>12A−4〜演算処理モジュール<7>12A−7における識別評価値V4、V5、V6、V7により推定する。
推定処理モジュール14は、4画素中の2画素以上で識別評価値が閾値より大きければ、対象の画素についての識別処理工程が継続する可能性が高いと判定する。そして、推定処理モジュール14は、対象の画素についての識別処理工程が実行されている演算処理モジュール12Aにおける処理時間の推定結果をLongとしてクロック制御モジュール15に出力する。例えば、図7に示すように、演算処理モジュール<1>12A−1における処理時間は、対象の画素を含む近接4画素の内の2画素に対応する識別評価値V1、V2が閾値より大きいのでLongと推定する。
また、前述した例とは逆に、あるスキャンウィンドウ領域の識別評価値が大きくても、近接するスキャンウィンドウ領域に識別評価値が小さいものが集中していれば、当該スキャンウィンドウ領域における識別処理工程も打ち切られる可能性が高いと判定する。すなわち、当該スキャンウィンドウ領域の識別評価値は一時的に大きくなったものであり、その後の識別処理工程を経るにつれて、近接する画素位置におけるスキャンウィンドウ領域の識別評価値と同様の変化をするとみなす。
本実施形態では、推定処理モジュール14は、対象の画素と近接する左右それぞれ2画素の計5画素中の4画素以上で識別評価値が閾値より小さければ、対象の画素における識別評価値が閾値より大きくても、識別処理工程が打ち切られる可能性が高いと判定する。そして、推定処理モジュール14は、対象の画素についての識別処理工程が実行されている演算処理モジュール12Aにおける処理時間の推定結果をShortとしてクロック制御モジュール15に出力する。
例えば、図8(a)に示すように、演算処理モジュール<3>12A−3における識別評価値V3(=70)は、閾値θ10(=60)より大きいが、左右それぞれの2画素の4画素に対応する識別評価値V1、V2、V4、V5が閾値より小さい。この場合、推定処理モジュール14は、演算処理モジュール<3>12A−3における処理時間をShortと推定して、推定結果をクロック制御モジュール15に出力する。
なお、この場合も同様に、両端の画素については、近接する左右それぞれ2画素における識別評価値は存在しないので、本実施形態では、当該画素と近接する右側の2画素又は左側の2画素との計3画素における識別評価値により処理時間を推定する。推定処理モジュール14は、3画素中の2画素以上で識別評価値が閾値より小さければ、対象の画素についての識別処理工程が打ち切られる可能性が高いと判定する。そして、推定処理モジュール14は、対象の画素についての識別処理工程が実行されている演算処理モジュール12Aにおける処理時間の推定結果をShortとしてクロック制御モジュール15に出力する。
例えば、図8(b)に示すように、演算処理モジュール<0>12A−0における識別評価値V0(=70)は、閾値θ10(=60)より大きいが、右側の2画素に対応する識別評価値V1、V2が閾値より小さい。この場合、推定処理モジュール14は、演算処理モジュール<0>12A−0における処理時間をShortと推定して、推定結果をクロック制御モジュール15に出力する。また、例えば、演算処理モジュール<7>12A−7における識別評価値V7(=80)は、閾値θ10(=60)より大きいが、左側の2画素に対応する識別評価値V5、V6が閾値より小さい。この場合、推定処理モジュール14は、演算処理モジュール<7>12A−7における処理時間をShortと推定して、推定結果をクロック制御モジュール15に出力する。
また、両端から1つ内側の画素については、当該画素と、近接する左側の1画素と右側の2画素、又は左側の2画素と右側の1画素との計4画素における識別評価値により処理時間を推定する。推定処理モジュール14は、4画素中の3画素以上で識別評価値が閾値より小さければ、対象の画素についての識別処理工程が打ち切られる可能性が高いと判定する。そして、推定処理モジュール14は、対象の画素についての識別処理工程が実行されている演算処理モジュール12Aにおける処理時間の推定結果をShortとしてクロック制御モジュール15に出力する。
例えば、図8(c)に示すように、演算処理モジュール<1>12A−1における処理時間は、対象の画素を含む近接4画素の内の3画素に対応する識別評価値V0、V2、V3が閾値より小さいのでShortと推定される。また、例えば、演算処理モジュール<6>12A−6における処理時間は、対象の画素を含む近接4画素の内の3画素に対応する識別評価値V4、V5、V7が閾値より小さいのでShortと推定される。
また、推定処理モジュール14は、処理時間の推定結果がLong及びShort以外の場合には、演算処理モジュール12Aにおける処理時間の推定結果をMiddleとしてクロック制御モジュール15に出力する。
図9に、前述した演算処理モジュール12Aにおける処理時間の判定フローを示す。図9には、対象の画素に近接する画素が左右にそれぞれ2画素ずつある場合の判定フローを一例として示している。すなわち、対象の画素と近接する左右それぞれ2画素とを含む計5画素における識別評価値により、対象の画素についての識別処理工程が実行されている演算処理モジュール12Aにおける処理時間を推定する場合を示している。
処理時間の推定処理では、まず、推定処理モジュール14は、5画素中の3画素以上で識別評価値が所定の閾値より大きいか否かを判定する(S101)。その結果、5画素中の3画素以上で識別評価値が所定の閾値より大きければ(S101のYES)、推定処理モジュール14は、演算処理モジュール12Aにおける処理時間をLongと推定する(S102)。
また、ステップS101での判定の結果、識別評価値が所定の閾値より大きい画素が3画素未満であれば(NO)、推定処理モジュール14は、5画素中の4画素以上で識別評価値が所定の閾値より小さいか否かを判定する(S103)。その結果、5画素中の4画素以上で識別評価値が所定の閾値より小さければ(S103のYES)、推定処理モジュール14は、演算処理モジュール12Aにおける処理時間をShortと推定する(S104)。
ステップS103での判定の結果、識別評価値が所定の閾値より小さい画素が4画素未満であれば(NO)、推定処理モジュール14は、演算処理モジュール12Aにおける処理時間をMiddleと推定する(S104)。なお、本実施形態では演算処理モジュール12Aが8つ存在するため、推定処理モジュール14は、それぞれの演算処理モジュールについて処理時間の推定処理を実行し、それぞれの推定結果(計8個)をクロック制御モジュール15に出力する。
次に、クロック制御モジュール15における処理について説明する。クロック制御モジュール15は、クロックモジュール16から供給される基準クロック信号(例えば200MHz)を元にして、各演算処理モジュール12Aに供給する周波数のクロック信号を生成する。
本実施形態では、クロック制御モジュール15は、処理時間の推定結果がLongに対応する周波数として例えば400MHzのクロック信号を生成する。また、処理時間の推定結果がMiddleに対応する周波数として例えば200MHzのクロック信号を生成し、処理時間の推定結果がShortに対応する周波数として例えば100MHzのクロック信号を生成する。なお、基準クロック信号とは周波数が異なるクロック信号(例では400MHzや100MHz)の生成は、それぞれ基準クロック信号を元にして、一般的な逓倍回路や分周回路により容易に生成可能である。
さらに、クロック制御モジュール15は、推定処理モジュール14から入力された各演算処理モジュール12Aにおける処理時間の推定結果を参照して、供給するクロック信号の周波数を決定する。そして、クロック制御モジュール15は、それぞれの推定結果に対応する周波数のクロック信号を各演算処理モジュール12Aに対して供給する。なお、図1では、各演算処理モジュール12Aに供給するクロック信号の周波数が異なり得ることを示すために、クロック制御モジュール15の出力線を分割表示している。
以上のように、処理の実行中に推定された各演算処理モジュール12Aにおける処理時間に応じて、クロック制御モジュール15が、各演算処理モジュール12Aに供給するクロック信号の周波数を制御する。推定処理時間が長い演算処理モジュール12Aのクロック信号の周波数は高くし、逆に推定処理時間が短い演算処理モジュール12Aのクロック信号の周波数は低くする。このように、各演算処理モジュール12Aでの実行中の処理状況に応じて、供給するクロック信号の周波数を制御することで、並列に動作する複数の演算処理モジュール12Aの処理時間を均一化する。
これにより、複数の演算処理モジュールが並列に動作する場合に、一部の処理時間が長い演算処理モジュールに処理時間が律速されることがなくなる。また、複数の演算処理モジュールが並列に動作する場合に、一部の処理時間が短い演算処理モジュールに不必要に周波数の高いクロック信号を供給することによる電力の無駄な消費を削減できる。
本実施形態では、以上説明した各演算処理モジュール12Aに供給するクロック信号の周波数の制御を、カスケード型検出処理における識別処理工程の10段目ごとに実行する。また、識別処理工程の1段目から10段目におけるクロック信号の周波数は、すべての演算処理モジュール12Aに供給するクロック信号の周波数を基準クロック信号と同じ周波数とする。なお、各演算処理モジュール12Aに供給するクロック信号の周波数の制御は、前述した識別処理工程の10段目毎の実行に限るものではなく、必要に応じて適当な処理段数において実行するようにしても良い。また、識別処理工程の開始時(1段目)におけるクロック信号の周波数は、前述した例に限らず、例えば前回の画像フレームの各画素位置において、最終となった識別処理工程において選択した周波数を適用するようにしても良い。
第1の実施形態における並列処理プロセッサは、各演算処理モジュール12Aに供給されるクロック信号の周波数を、それぞれの演算処理モジュール12Aで実行中の識別処理工程に係る評価値及びその組み合わせに応じて決定する。並列に実行する他の識別処理工程の状況も参照してクロック信号の周波数を決定するため、当該画素における一時的な評価値の変動に左右されず、近接する画素におけるデータの類似性を元にした、より精度の高いクロック信号の制御を実現することが可能となる。したがって、各演算処理モジュール12Aに供給するクロック信号の周波数を実行中の処理状況に応じて精度良く制御することができ、並列処理プロセッサにおける処理時間の削減及び消費電力の削減を実現することが可能となる。
なお、本実施形態では、並列処理プロセッサにおける演算処理モジュール12Aの並列数を8つとしたが、それ以外の並列数を取るものであっても良い。また、推定処理モジュール14において、各演算処理モジュール12Aにおける処理時間を推定する際に参照する、それぞれの演算処理モジュール12Aにおける評価値とその組み合わせも、本実施形態で説明したものに限らず、その他のものであっても良い。例えば、評価値として、前述した識別評価値の変化速度を用いても良い。
識別評価値の変化速度を算出する手法としては様々なものが考えられる。最も簡単な手法としては、例えば識別評価値について前段の識別処理工程との差分値を算出し、これを識別評価値の変化速度とすることができる。この場合には、各演算処理モジュールにおいて前段の識別処理工程における識別評価値を記憶保持し、次段の識別処理工程において算出した識別評価値との差分値を算出して評価値とする。
また、評価値としてはこれらに限定するものではなく、その他のものであっても良いが、それらに関しては後述する例において説明を行う。また、基準クロック信号及びそれぞれの演算処理モジュールに供給するクロック信号の周波数に関しても、前述した例に限らず、その他のものであっても良い。また、本実施形態では、カスケード型検出処理を例として説明したが、その他にも位置的に近接する入力データを並列に処理し、かつそれぞれの並列処理における処理時間が不定なものであれば、その他の処理であっても適用が可能である。
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。図10は、第2の実施形態における情報処理装置としての並列処理プロセッサの構成例を示すブロック図である。図10において、図1に示したブロック等と同一の機能を有するブロック等には同一の符号を付し、重複する説明は省略する。第2の実施形態における並列処理プロセッサは、前処理モジュール11、複数の演算処理モジュール12B(12B−0〜12B−7)、後処理モジュール13、共有メモリモジュール17、及びクロック生成モジュール18を有する。
並列処理プロセッサに入力されたデータに対して、前処理モジュール11が所定の前処理を実行し、演算処理モジュール12Bが所定の演算処理を並列に実行し、後処理モジュール13が所定の後処理を実行する。記憶手段としての共有メモリモジュール17は、処理の実行時に演算処理モジュール12Bにおいて算出される実行中の処理状況に基づく評価値を保持する。クロック生成モジュール18は、演算処理モジュール12Aに供給するクロック信号を生成する。クロック生成モジュール18は、周波数が異なる複数のクロック信号を生成する。
また、それぞれの演算処理モジュール12Bは、共有メモリモジュール17に保持された複数の演算処理モジュール12Bにおける評価値に基づいて処理時間を推定し、推定した処理時間に基づいて、供給を受けるクロック信号の周波数を決定する。そして、それぞれの演算処理モジュール12Bは、クロック生成モジュール18が生成する複数のクロック信号から、推定した処理時間に基づいて決定した周波数を有するクロック信号を選択して受信する。
第2の実施形態における並列処理プロセッサは、第1の実施形態における並列処理プロセッサと次の点が異なっている。第2の実施形態における並列処理プロセッサは、推定処理モジュール14の代わりに共有メモリモジュール17を有する。各演算処理モジュール12Bが、その他の演算処理モジュール12Bにおける評価値をも参照して、当該演算処理モジュールにおける処理時間を推定する。そして、各演算処理モジュール12Bが、推定した処理時間に基づいて、クロック生成モジュール18が生成したクロック信号の中で対応する周波数のクロック信号を選択受信する。以下では、第1の実施形態における並列処理プロセッサとの相違点について説明を行い、その他の部分に関しては第1の実施形態と同様として説明を省略する。
第2の実施形態における並列処理プロセッサは、一例として第1の実施形態と同様に、人間の顔を検出する顔検出処理を実行するものとする。つまり、前処理モジュール11は、入力された画像に対して積分画像を算出する前処理を実行する。複数の演算処理モジュール12B−0〜12B−7は、前処理モジュール11により算出された積分画像を元にして、人の顔の検出を行うカスケード型検出処理を、それぞれの演算処理モジュールにおいて並列に実行する。後処理モジュール13は、演算処理モジュール12B−0〜12B−7において算出された顔の検出結果を統合する後処理を実行する。
続いて、第2の実施形態において、カスケード型検出処理工程102を実行する際に、演算処理モジュール12Bに供給するクロック信号の周波数を制御する方法に関して説明する。複数の演算処理モジュール12Bは、第1の実施形態における複数の演算処理モジュール12Aと同様に、それぞれが担当するスキャンウィンドウ領域に対するカスケード型検出処理工程102を並列に実行する。このとき、各演算処理モジュール12Bは、カスケード型検出処理工程102の各識別処理工程において算出される識別評価値を共有メモリモジュール17に随時出力する。共有メモリモジュール17において、各演算処理モジュール12Bにおける識別評価値が、それぞれの演算処理モジュールに対応した所定の領域に記憶保持される。
また、各演算処理モジュール12Bは、共有メモリモジュール17に保持された複数の演算処理モジュール12Bの識別評価値とその組み合わせを元にして、自モジュールにおいて実行中のカスケード型検出処理工程の処理時間を推定する処理を実行する。本実施形態においても、各演算処理モジュール12Bは、自モジュールにおいて実行中のカスケード型検出処理工程の処理時間を、Long、Middle、Shortの3種類に推定するとする。なお、第2の実施形態における処理時間の推定処理は、各演算処理モジュール12Bが、自モジュールに関する推定処理を行う点が異なり、他は第1の実施形態においては推定処理モジュール14が行っていた推定処理と同様であるので説明は省略する。
演算処理モジュール<0>12B−0は、演算処理モジュール<0>12B−0〜演算処理モジュール<2>12B−2における識別評価値V0、V1、V2により、自モジュールで実行中のカスケード型検出処理工程の処理時間を推定する。演算処理モジュール<1>12B−1は、演算処理モジュール<0>12B−0〜演算処理モジュール<3>12B−3における識別評価値V0、V1、V2、V3により、自モジュールで実行中のカスケード型検出処理工程の処理時間を推定する。
また、演算処理モジュール<6>12B−6は、演算処理モジュール<4>12B−4〜演算処理モジュール<7>12B−7における識別評価値V4、V5、V6、V7により、自モジュールで実行中のカスケード型検出処理工程の処理時間を推定する。演算処理モジュール<7>12B−7は、演算処理モジュール<5>12B−5〜演算処理モジュール<7>12B−7における識別評価値V5、V6、V7により、自モジュールで実行中のカスケード型検出処理工程の処理時間を推定する。
その他の演算処理モジュール12Bのそれぞれは、当該演算処理モジュール及び近接する左右2画素に対応する演算処理モジュールにおける識別評価値により、自モジュールで実行中のカスケード型検出処理工程の処理時間を推定する。
次に、演算処理モジュール12B及びクロック生成モジュール18によるクロック信号の選択受信について説明する。クロック生成モジュール18は、基準クロック信号(例えば200MHz)を元にして、各演算処理モジュール12Bに供給する周波数のクロック信号を生成する。
本実施形態では、クロック生成モジュール18は、処理時間の推定結果がLongに対応する周波数として例えば400MHzのクロック信号を生成する。また、処理時間の推定結果がMiddleに対応する周波数として例えば200MHzのクロック信号を生成し、処理時間の推定結果がShortに対応する周波数として例えば100MHzのクロック信号を生成する。なお、各周波数のクロック信号の生成は、それぞれ基準クロック信号を元にして、一般的な逓倍回路や分周回路により容易に生成可能である。
クロック生成モジュール18に対して、各演算処理モジュール12Bが処理時間の推定結果を出力することで、処理時間の推定結果に対応する周波数のクロック信号を選択受信する。クロック生成モジュール18は、各演算処理モジュール12Bに対応してセレクタを有している。クロック生成モジュール18により生成した3種類のクロック信号の何れかが、それぞれの演算処理モジュール12Bからの処理時間の推定結果の入力(Long、Middle、Shortの何れか)に応じて選択されて演算処理モジュールに供給される。
以上のように、処理の実行中に各演算処理モジュール12−Bにおいて推定された処理時間に応じて、各演算処理モジュール12−Bに供給するクロック信号の周波数を制御する。推定処理時間が長い演算処理モジュール12Bのクロック信号の周波数は高くし、逆に推定処理時間が短い演算処理モジュール12Bのクロック信号の周波数は低くする。このように、各演算処理モジュール12Bでの実行中の処理状況に応じて、供給するクロック信号の周波数を制御することで、第1の実施形態と同様に、並列に動作する複数の演算処理モジュール12Bの処理時間を均一化する。
これにより、複数の演算処理モジュールが並列に動作する場合に、一部の処理時間が長い演算処理モジュールに処理時間が律速されることがなくなる。また、複数の演算処理モジュールが並列に動作する場合に、一部の処理時間が短い演算処理モジュールに不必要に周波数の高いクロック信号を供給することによる電力の無駄な消費を削減できる。
本実施形態では、以上説明した各演算処理モジュール12Bに供給するクロック信号の周波数の制御を、カスケード型検出処理における識別処理工程の10段目ごとに実行する。また、識別処理工程の1段目から10段目におけるクロック信号の周波数は、演算処理モジュール12Bから処理時間の推定結果のデフォルト値としてMiddleが出力されることにより、基準周波数である200MHzとする。つまり、すべての演算処理モジュール12Bに基準周波数である200MHzのクロック信号が供給される。
第2の実施形態における並列処理プロセッサは、各演算処理モジュール12Bに供給されるクロック信号の周波数を、それぞれの演算処理モジュール12Bで実行中の識別処理工程に係る評価値及びその組み合わせに応じて決定する。並列に実行する他の識別処理工程の状況も参照してクロック信号の周波数を決定するため、当該画素における一時的な評価値の変動に左右されず、近接する画素におけるデータの類似性を元にした、より精度の高いクロック信号の制御を実現することが可能となる。したがって、各演算処理モジュール12Bに供給するクロック信号の周波数を実行中の処理状況に応じて精度良く制御することができ、並列処理プロセッサにおける処理時間の削減及び消費電力の削減を実現することが可能となる。
なお、本実施形態では、並列処理プロセッサにおける演算処理モジュール12Bの並列数を8つとしたが、それ以外の並列数を取るものであっても良い。また、各演算処理モジュール12Bにおいて処理時間を推定する際に参照する、それぞれの演算処理モジュール12Bにおける評価値とその組み合わせも、本実施形態で説明したものに限らず、その他のものであっても良い。また、基準クロック信号及びそれぞれの演算処理モジュールに供給するクロック信号の周波数に関しても、前述した例に限らず、その他のものであっても良い。
また、本実施形態においては、各演算処理モジュール12Bにおいて実行中の識別処理工程における識別評価値を共有メモリモジュール17に記憶保持するタイミングは、例として挙げた10段目に限らない。例えば、各演算処理モジュール12Bは、すべての識別処理工程における識別評価値を出力して、それを共有メモリモジュール17に記憶保持する。そして、演算処理モジュール12Bが、前述した処理時間の推定処理(及びクロック信号の選択受信の切り替え)のタイミングを各演算処理モジュール12Bにおける実行中の識別処理工程における評価値を元にして決定することも可能である。
例えば、各演算処理モジュール12Bにおいて、実行中の識別処理工程における評価値が所定の閾値以上又は所定の閾値未満になった場合のみ、処理時間の推定処理(及びクロック信号の選択受信の切り替え処理)を実行するようにしても良い。また、例えば、実行中の識別処理工程における評価値と、前回の識別処理工程における評価値との差分値が、所定の閾値以上又は所定の閾値未満になった場合のみ、処理時間の推定処理(及びクロック信号の選択受信の切り替え)を実行するようにしても良い。
これらの場合には、演算処理モジュールごとに識別処理工程の状況に応じて、個別にクロック信号の選択受信を切り替えることが可能となるため、より柔軟なクロック信号の選択受信を実現することが可能となる。また、処理時間の推定処理及びクロック信号の選択受信の切り替えが、識別処理工程の状況に応じて実行されるため、識別処理工程が変化していないにも関わらず無駄に処理が実行されることを避けることが可能となる。
(第3の実施形態)
次に、本発明の第3の実施形態について説明する。図11は、第2の実施形態における情報処理装置としての並列処理プロセッサの構成例を示すブロック図である。図11において、図1に示したブロック等と同一の機能を有するブロック等には同一の符号を付し、重複する説明は省略する。図11に示す第3の実施形態における並列処理プロセッサは、図1に示した第1の実施形態における並列処理プロセッサに、さらに電源電圧制御手段としてのマルチ出力可変電圧源モジュール19を追加したものである。
すなわち、第1の実施形態における並列処理プロセッサでは、それぞれの演算処理モジュール12Aで実行中の識別処理工程の状況を反映した評価値を元にして、それぞれの演算処理モジュール12Aに供給するクロック信号の周波数を制御していた。第3の実施形態における並列処理プロセッサでは、クロック信号の周波数に加えて、それぞれの演算処理モジュール12Aに供給する電源電圧値を制御する。したがって、以下の説明では、第1の実施形態において説明した機能に関しては説明を省略し、第3の実施形態に特有の機能について説明を行う。
第3の実施形態における並列処理プロセッサは、第1の実施形態における並列処理プロセッサと同様にして、カスケード型検出処理工程を実行する際に、演算処理モジュール12Aに供給するクロック信号の周波数を制御する。一般的に、供給するクロック信号の周波数を低くすると、それと同時に電源電圧を下げることが可能である。すなわち、クロック信号の周波数が低くなると、回路における信号の遷移時間が大きくなっても、回路動作に支障は生じない。そこで、第3の実施形態では、クロック信号の周波数が400MHzである場合に回路が正常動作する電源電圧値を基準として、200MHz又は100MHzのクロック信号を供給する演算処理モジュール12Aに対しては、より低い電源電圧を供給する。
第3の実施形態における電源電圧の制御方法を説明する。推定処理モジュール14は、第1の実施形態と同様に、識別処理工程が実行されている演算処理モジュール12Aにおける処理時間を、Long、Middle、又はShortと推定して、マルチ出力可変電圧源モジュール19に出力する。マルチ出力可変電圧源モジュール19は、入力された処理時間の推定結果に対応して、Longの場合には電源電圧VLを、Middleの場合には電源電圧VMを、Shortの場合には電源電圧VSを出力し、演算処理モジュール12Aに供給する。ここで、各電源電圧値VL、VM、VSは、VL>VM>VSの関係にある。
なお、各電源電圧値VL、VM、VSは、対応する周波数のクロック信号でそれぞれの演算処理モジュール12Aを動作させる場合に、回路動作に支障が生じないことを事前に確認しているものとする。また、マルチ出力可変電圧源モジュール19は、最も簡単な構成としては、3種類の電源電圧値に対応した3個の電圧源を有し、各演算処理モジュール12Aにおける処理時間の推定結果に対応した電源電圧値をそれぞれに対して出力するものが考えられる。マルチ出力可変電圧源モジュール19については、それ以外にも様々な実現形態が考えられるが、それらは本発明の主眼とするものではないため、説明を省略する。
また、本実施形態の変形例としては、図12に示すように、図10に示した第2の実施形態における並列処理プロセッサに、さらに電源電圧制御手段としてのマルチ出力可変電圧源モジュール20を追加したものであっても良い。すなわち、第2の実施形態における並列処理プロセッサでは、各演算処理モジュール12Bにおいて推定された処理時間に応じて、クロック信号の中で対応する周波数のクロック信号を選択受信していた。第3の実施形態における並列処理プロセッサでは、処理時間の推定結果に対応する周波数のクロック信号に加えて、供給される電源電圧を選択受信する。以下の説明では、第2の実施形態及び本実施形態において前述した機能に関しては説明を省略し、本変形形態に特有の機能について説明を行う。
図12に示す本実施形態における並列処理プロセッサは、第2の実施形態における並列処理プロセッサと同様にして、カスケード型検出処理工程を実行する際に、演算処理モジュール12Bが、クロック信号の中で対応する周波数のクロック信号を選択受信する。ここで、本変形形態においては、マルチ出力可変電圧モジュール20により生成される複数の電源電圧の中から、各演算処理モジュール12Bがクロック信号の周波数に対応した電源電圧信号を選択受信する。
図12に示すように、各演算処理モジュール12Bは、マルチ出力可変電圧モジュール20に処理時間の推定結果を出力する。マルチ出力可変電圧源モジュール20は、演算処理モジュール12Bから入力された処理時間の推定結果に対応する3種類の電源電圧信号を生成する。すなわち、マルチ出力可変電圧モジュール20は、処理時間の推定結果がLongの場合に対応する電源電圧VL、Middleの場合に対応する電源電圧VM、Shortの場合に対応する電源電圧VSを生成する。各電源電圧値VL、VM、VSは、VL>VM>VSの関係にある。それぞれの演算処理モジュール12Bから入力された処理時間の推定結果に対応して、前述した3種類の電源電圧信号の何れかが選択されて、各演算処理モジュール12Bに対して供給される。
第3の実施形態における並列処理プロセッサは、クロック信号の周波数に加えて、演算処理モジュールに供給する電源電圧値を制御することにより、さらに消費電力の削減を実現することが可能となる。
(第4の実施形態)
次に、本発明の第4の実施形態について説明する。図13は、第4の実施形態における情報処理装置としての並列処理プロセッサの構成例を示すブロック図である。図13において、図1に示したブロック等と同一の機能を有するブロック等には同一の符号を付し、重複する説明は省略する。図13に示す第4の実施形態における並列処理プロセッサは、図1に示した第1の実施形態における並列処理プロセッサに、さらに前回の処理結果を記憶保持する処理結果メモリモジュール21を追加したものである。
すなわち、第1の実施形態における並列処理プロセッサでは、それぞれの演算処理モジュール12Aで実行中の識別処理工程の状況を反映した評価値を元にして、それぞれの演算処理モジュール12Aに供給するクロック信号の周波数を制御していた。第4の実施形態における並列処理プロセッサは、さらに、特に近接する画素における処理結果を含む前回の処理結果も加えて参照して、それぞれの演算処理モジュール12Aに供給するクロック信号の周波数を制御する。以下の説明では、第1の実施形態において説明した機能に関しては説明を省略し、第4の本実施形態に特有の機能について説明を行う。
第4の実施形態における並列処理プロセッサは、第1の実施形態と同様に顔検出処理を実行するが、特に入力される画像データが動画像である場合を想定している。例えば、画像データは、毎秒30フレーム(30fps)のビデオレートで撮影されて、並列処理プロセッサに入力されるものとする。
このとき、本実施形態においてカスケード型検出処理工程を実行する際に、演算処理モジュール12Aに供給するクロック信号の周波数を制御する方法に関して説明する。本実施形態においては、1フレーム画像に対する顔検出処理の結果を、処理結果メモリモジュール21に記憶保持する。処理結果メモリモジュール21に保持する処理結果のデータ形式としては、例えば画像中の全画素位置に対して検出フラグ(1:検出、0:未検出)を設定する方法や、顔が検出された画素位置の画像中でのアドレス情報を保持する方法などが考えられる。本実施形態においては、いずれの方法も適用可能であるが、以下の説明では、画像中の全画素位置に対して検出フラグを設定する方法を採用する。
本実施形態においては、演算処理モジュール12Aに供給するクロック信号の周波数を制御する際に、第1の実施形態と同様に、各演算処理モジュール12Aで実行中の識別処理工程の状況を反映した評価値を参照する。さらに、本実施形態では、同時に処理結果メモリモジュール21に記憶した前回の顔検出処理の結果を参照する。特に、前回の顔検出処理の結果としては、当該画素における検出結果だけでなく、近接する画素における検出結果を参照する。
例えば、まず推定処理モジュール14は、第1の実施形態と同様に、実行中のカスケード型検出処理工程の識別処理工程における評価値及び組み合わせを元にして、各演算処理モジュール12Aにおける処理時間を推定する。ここで、処理時間の推定方法は、第1の実施形態と同様とするが、推定される処理時間は仮の推定時間という位置付けとする。つまり、第1の実施形態における推定結果でのLongはTempLong、第1の実施形態における推定結果でのMiddleはTempMiddle、第1の実施形態における推定結果でのShortはTempShortと対応付ける。
さらに、本実施形態における推定処理モジュール14は、各演算処理モジュール12Aに対応する画素位置に近接する画素位置における前回の検出結果を処理結果メモリモジュール21より読み出す。例えば、本実施形態では、図14に示すように当該画素位置(図中、黒塗り部)を含む3×3の近接の画素位置における前回の処理結果を読み込む。
そして、例えば、推定処理モジュール14は、推定結果がTempShortである場合に、前回の処理結果の近接画素9個中で顔が検出されていたら、最終的な処理時間の推定結果をMiddleに決定する。前回の処理結果の近接画素9個中で顔が検出されていなければ、最終的な処理時間の推定結果をShortに決定する。また、推定処理モジュール14は、推定結果がTempMiddleである場合に、前回の処理結果の近接画素9個中で顔が検出されていたら、最終的な処理時間の推定結果をLongに決定する。前回の処理結果の近接画素9個中で顔が検出されていなければ、最終的な処理時間の推定結果をShortに決定する。また、推定処理モジュール14は、推定結果がTempLongである場合に、前回の処理結果の近接画素9個中で顔が検出されていたら、最終的な処理時間の推定結果をLongに決定する。前回の処理結果の近接画素9個中で顔が検出されていなければ、最終的な処理時間の推定結果をMiddleに決定する。
推定処理モジュール14は、前述したように決定した処理時間の推定結果をクロック制御モジュール15に出力する。クロック制御モジュール15が、入力された各演算処理モジュール12Aにおける処理時間の推定結果に対応した周波数のクロック信号を生成し、それぞれの演算処理モジュール12Aに対して供給することは、第1の実施形態と同様である。また、それ以外の点に関しても第1の実施形態と同様として説明を割愛する。
以上のように、第4の実施形態における並列処理プロセッサは、各演算処理モジュール12Aで実行中の識別処理工程の状況に加えて、さらに、特に近接する画素における処理結果を含む前回の処理結果も加えて参照して、クロック信号の周波数を制御する。例えば、動画像を処理対象とする場合、撮像フレームレートに対してカメラと被写体の相対速度が小さいと、画像フレーム間での被写体の移動量が小さく、検出対象の物体(本実施形態では人物の顔)は、次のフレームの近傍画素位置で検出される可能性が高い。したがって、空間的に近接した画素における処理結果と、時間的に近接した画素における処理結果の両方を参照してクロック信号の周波数を制御することで、より精度の高い処理時間の予測に基づいたクロック信号の制御を実現することが可能となる。
なお、前述した例では、処理結果メモリモジュール21に記憶保持された顔検出処理の結果は、次回の顔検出処理が完了するたびに上書きされるものとするが、複数フレームに渡って、処理結果を処理結果メモリモジュール21に記憶するようにしても良い。この場合、数フレーム前までの時間的に近接する画素の情報を参照することが可能となる。
また、前述した例では、処理結果メモリモジュール21に記憶保持する顔検出処理の結果を、後処理(統合処理)後の処理結果としているが、これを後処理前の顔検出処理の結果としても良い。この場合、統合処理されていない識別評価値そのものの結果を参照することになるため、前回フレームにおける画素の情報をより直接的に参照することが可能となる。
また、前述した例では、第1の実施形態に対して、さらに前回の処理結果を記憶保持する処理結果メモリモジュール21を追加したものを示したが、第2の実施形態や第3の実施形態に対しても同様に処理結果メモリモジュールを追加することが可能である。
(第5の実施形態)
次に、本発明の第5の実施形態について説明する。第5の実施形態における並列処理プロセッサは、第1の実施形態における並列処理プロセッサにおいて、推定処理モジュール14が各演算処理モジュール12Aの処理時間を推定する際に、複数の識別評価値に対する所定の演算結果に基づいて処理時間を推定する。すなわち、第1の実施形態においては、当該画素と近接する画素における識別評価値を所定の閾値と比較し、処理時間を推定していた。第5の実施形態では、当該画素と近接する画素における識別評価値に対して所定の演算を実行して処理時間を推定する。
例えば、本実施形態では、推定処理モジュール14は、対象の画素位置における識別評価値と近接画素における識別評価値とを用いて所定の演算を実行し、演算結果を対象の画素における処理時間の推定結果とする。例えば、演算処理モジュール12A−3における識別評価値V3と、近接画素に対応する演算処理モジュール12Aにおける識別評価値V1、V2、V4、V5とを用いて、T3=a×V1+b×V2+c×V3+b×V4+a×V5の演算を行う。ここで、a、b、cは識別評価値に対する重み付けパラメータを示し、T3は当該画素における推定処理時間を示す。
第5の実施形態では、推定処理モジュール14は、各演算処理モジュール毎に算出した推定処理時間をクロック制御モジュール15に出力する。クロック制御モジュール15は、入力された推定処理時間を元にして、対応する周波数のクロック信号を生成し、それぞれの演算処理モジュールに対して出力する。例えば、クロック制御モジュール15は、図15に示すような推定処理時間に応じて離散的に設定された周波数テーブルを保持し、入力された推定処理時間Tを元に周波数テーブルを参照して、対応する周波数を有するクロック信号を生成する。
または、クロック制御モジュール15は、入力された推定処理時間に対してさらに所定の演算を実行して、対応する周波数を決定するものであっても良い。例えば、推定処理時間に対して、図16に示すようなシグモイド関数を適用してクロック信号の周波数を決定し、対応する周波数のクロック信号を生成するものであっても良い。なお、図16中の式におけるa、bはシグモイド関数の形状を決定するパラメータを示す。
以上、本実施形態で説明したように、各演算処理モジュールにおける処理時間を推定する方法、及びクロック信号の周波数を決定する方法は、参照テーブルを用いたり、もしくは演算式を適用したりすることが可能である。この場合、各演算処理モジュールにおける実行中の識別処理工程の状況を反映した識別評価値を元にして、より詳細に処理時間の推定及びクロック信号の周波数の決定を実行することが可能となる。また、前述した例では、第1の実施形態において処理時間の推定方法及びクロック信号の周波数の決定方法を変更したものを示したが、第2の実施形態、第3の実施形態、及び第4の実施形態に対しても同様に変更を適用することが可能である。
(第6の実施形態)
次に、本発明の第6の実施形態について説明する。図17は、第6の実施形態における情報処理装置としての並列処理プロセッサの構成例を示すブロック図である。第6の実施形態における並列処理プロセッサは、複数の演算処理モジュール12C(12C−0〜12C−7)、推定処理モジュール14、クロック制御モジュール15、及びクロックモジュール16を有する。なお、図17においては、データの入出力を理解しやすくするために、第1の実施形態〜第5の実施形態における並列処理プロセッサを示す図では省略した、演算処理モジュールに対するデータの入力端子22及び演算結果の出力端子23を図示している。
並列処理プロセッサに入力されたデータに対して、演算処理モジュール12Cが所定の演算処理を並列に実行する。推定処理モジュール14は、処理の実行時に演算処理モジュール12Cにおいて算出される評価値に基づいて、それぞれの演算処理モジュール12Cにおける処理時間を推定する。クロック制御モジュール15は、基準クロック信号を元にして、演算処理モジュール12Cに供給するクロック信号を生成する。また、クロック制御モジュール15は、推定処理モジュール14によって推定された演算処理モジュール12Cにおける処理時間に応じて、それぞれの演算処理モジュール12Cに供給するクロック信号の周波数を決定する。クロックモジュール16は、クロック制御モジュール15に供給する基準クロック信号を生成する。
第6の実施形態において、並列処理プロセッサは、一例として所定の投影パターンが投影された画像より距離情報を算出する処理を実行する。ここで、画像より距離情報を算出する処理としては、例えば特開2008−276743号公報(以下、参考文献2と称す)に説明されている。なお、以下に説明する本実施形態では、投影パターンは参考文献2にあるようにバーコードより構成されている。詳細な処理内容については、参考文献2に説明されているので省略するが、本実施形態における並列処理プロセッサにおいては、以下のように処理を実行する。
図18は、第6の実施形態における距離情報算出処理を説明するためのフローチャートである。まず、本実施形態における並列処理プロセッサは、入力された画像に対して線分を検出する線分検出工程33を実行する。続いて、検出した線分画像に対して、各線分より構成されるパターンが、投影パターンのどの部分に相当するかを検出するパターンマッチング処理工程34を実行する。
ここで、パターンマッチング処理工程34は、線分検出工程33で検出された線分の組み合わせ(以下、線分パターンと呼ぶ)が、投影パターン中のバーコードに一致するかどうかを判定する処理に相当する。すなわち、パターンマッチング処理工程34は、線分検出工程33において検出された線分の数が多いほど、バーコードとの一致を判定する線分の組み合わせが多くなるため、処理時間が増加することとなる。
また続いて、パターンマッチング処理工程34において投影パターンと一致した線分パターンに関しては、それぞれの画像上の位置から視差情報を算出し、さらに視差情報から距離情報を算出する視差・距離算出工程35を実行する。なお、視差情報を算出する方法と、視差情報から距離情報を算出する方法は、広く知られているものであるため、詳細な説明を割愛する。なお、視差・距離算出工程35において実行される視差情報の算出処理と、視差情報から距離情報を算出する処理は、投影パターンと一致した線分パターンの画素位置でのみ実行される。したがって、後述するように、投影パターンと一致した線分パターンの検出数に応じて、視差・距離算出工程35の処理時間は増減することとなる。
ここで、前述した距離情報算出処理は、演算処理モジュール12Cにより並列に実行される。本実施形態では、図19に示すように入力画像を複数の領域131に分割し、各分割画像に対して演算処理モジュール12Cを割り当てることにより並列に処理を実行する。例えば、図19に示す例では、画像の最上部を8個の領域に分割して示している。
また、演算対象となる画像データの例を同じく図19に示す。ここで画像には、距離情報を算出する対象物体(画像中央部の物体)が、バーコードを含む投影パターンを投影された状態で写っている。図19から分かるように、一般的に投影パターンは対象物体の表面上に多く検出され、それ以外の部位ではプロジェクターのフォーカス設定等の関係により、ほとんど検出されない。
分割領域ごとに演算処理モジュール12Cで実行される処理時間は、投影パターンと一致した線分パターンの検出数に対応して異なる。したがって、分割領域ごとに演算処理モジュール12Cが並列に演算を実行する場合、前述したように処理時間の不均一が生じ、演算処理モジュール12Cがストールすることとなってしまう。これに対して、演算処理モジュールごとに検出した線分の数に応じて、クロック信号の周波数を制御することにより、各演算処理モジュールにおける処理時間を均一化する方法が考えられる。しかし、実際には画像から検出される線分には、投影パターンに対応しない線分も含まれるため、必ずしも各演算処理モジュールにおける処理時間を反映しない場合も有り得る。
一方、前述した分割領域に関しては、図19において画像中央部に示した8個の分割領域より分かるように、対象物体の連続性から類推すると、対象物体を含む領域が互いに近接し、対象物体を含まない領域が互いに近接する場合が多いと考えられる。そこで、本実施形態では、前述した実施形態と同様に、並列に処理を実行する演算処理モジュール12Cにおいて、近接する分割領域についての処理を実行している他の演算処理モジュールの処理状況を参照する。これにより、各演算処理モジュール12Cにおける処理時間の推定精度を向上させる。
まず、第1の実施形態と同様に、事前に大量のサンプル画像データを用いてテスト処理を行い、所定の閾値を統計的に決定する。例えば、サンプル画像データとして計測対象が写っている画像において、距離情報算出処理を実行し、投影パターンのバーコードが検出される領域における線分の検出数の平均値を算出し、所定の閾値として予め設定する。
このとき、例えば、ある演算処理モジュール12Cにおける線分の検出数が所定の閾値よりも大きいとする。しかし、近接する分割領域に対応する演算処理モジュール12Cにおける線分の検出数が所定の閾値よりも小さければ、対象物体の連続性から類推すると、当該領域で検出された線分は投影パターンによるものではない可能性がある。例えば、図19に示した分割領域132において写っている遠方に位置する壁のキズ38のように、画像に写った何らかの線分である可能性がある。
また、逆に、ある演算処理モジュール12Cにおける線分の検出数が所定の閾値よりも小さいとする。しかし、近接する分割領域に対応する演算処理モジュール12Cにおける線分の検出数が所定の閾値よりも大きければ、対象物体の連続性から類推すると、当該領域で検出された線分は投影パターンによるものである可能性が高い。
そこで、本実施形態では、推定処理モジュール14は、対象の分割領域と近接する左右それぞれ2つの分割領域との計5つの分割領域により判定を行う。推定処理モジュール14は、5つの分割領域中で、3つ以上の分割領域で線分の検出数が閾値より大きければ、当該分割領域における線分の検出数が少なくても、投影パターンに一致する線分パターン数が多い可能性が高いと判定する。そして、推定処理モジュール14は、当該分割領域に関する演算を実行する演算処理モジュール12Cにおける処理時間の推定結果をLongとしてクロック制御モジュール15に出力する。
例えば、図20(a)に示すように、演算処理モジュール<3>12C−3における線分の検出数V3(=50)は、閾値θ(=60)より小さいが、左右それぞれの2つの分割領域の内の3つの分割領域における線分の検出数V1、V2、V4が閾値より大きい。この場合、推定処理モジュール14は、演算処理モジュール<3>12C−3における処理時間をLongと推定して、推定結果をクロック制御モジュール15に出力する。
また、逆に、推定処理モジュール14は、5つの分割領域中で、4つ以上の分割領域で線分の検出数が閾値より小さければ、当該分割領域における線分の検出数が多くても、投影パターンに一致する線分パターン数が少ない可能性が高いと判定する。そして、推定処理モジュール14は、当該分割領域に関する演算を実行する演算処理モジュール12Cにおける処理時間の推定結果をShortとしてクロック制御モジュール15に出力する。
例えば、図20(b)に示すように、演算処理モジュール<3>12C−3における線分の検出数V3(=70)は、閾値θ(=60)より大きいが、左右それぞれの2つの分割領域における線分の検出数V1、V2、V4、V5が閾値より小さい。この場合、推定処理モジュール14は、演算処理モジュール<3>12C−3における処理時間をShortと推定して、推定結果をクロック制御モジュール15に出力する。
また、推定処理モジュール14は、処理時間の推定結果がLong及びShort以外の場合には、演算処理モジュール12Cにおける処理時間の推定結果をMiddleとしてクロック制御モジュール15に出力する。
なお、近接する分割領域の組み合わせに関しても、前述した所定の閾値と同様にして、事前に大量のサンプル画像データを用いてテスト処理を行い、統計的に決定する。例えば、サンプル画像データとして計測対象が写っている画像において、距離情報算出処理を実行し、線分の検出数が閾値を超える近接する分割領域数の平均値を算出する。前述した説明における近接する分割領域の組み合わせの基準は、統計的に算出した近接する分割領域数の平均値を元にして設定している。
なお、推定処理モジュール14、クロック制御モジュール15、及びクロックモジュール16の動作に関しては、基本的に第1の実施形態と同様であるので、詳細な説明を省略する。
第6の実施形態における並列処理プロセッサは、各演算処理モジュール12Cに供給するクロック信号の周波数を、それぞれの演算処理モジュール12Cで実行中の演算処理における線分の検出数及び近接画素における線分の検出数の組み合わせに応じて決定する。並列に実行する他の処理工程の状況も参照してクロック信号の周波数を決定するため、当該分割領域における線分の検出数に左右されず、近接する分割領域におけるデータの類似性を元にしたより精度の高いクロック信号の制御を実現することが可能となる。したがって、各演算処理モジュール12Cに供給するクロック信号の周波数を実行中の処理状況に応じて精度良く制御することができ、並列処理プロセッサにおける処理時間の削減及び消費電力の削減を実現することが可能となる。
また、前述した例では、第1の実施形態において距離情報算出処理を適用したものを例として示したが、第2の実施形態〜第5の実施形態に対しても同様に距離情報算出処理を適用することが可能である。
また、前述した実施形態では、それぞれ距離情報算出処理や顔検出処理を元にして、本発明の実施形態における情報処理装置としての並列処理プロセッサの説明を行ったが、本発明が適用される処理はこれらに限定されるものではない。位置的及び時間的に近接する入力データを並列に処理し、かつそれぞれの並列処理における処理時間がデータに依存して変動し処理時間が不定なものであれば、その他の処理であっても適用が可能である。
(本発明の他の実施形態)
また、本発明は、以下の処理を実行することによっても実現される。即ち、前述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。