(57)【要約】 【課題】マルチプロセッサによる並列処理装置において、ループ処理の最適再配置後に並列処理することにより高速処理が可能なマルチプロセッサによる並列処理装置を提供する。【解決手段】主制御装置である第１プロセッサとの従制御装置である第２プロセッサで構成する。第１プロセッサは、処理の最適配置を行うため処理時間情報を第２プロセッサから取得し、得られた情報を元に最適再配置情報を算出し、第２プロセッサに送信する。第１プロセッサ及び第２プロセッサは、得られた最適再配置情報に基づく並列処理を行うことにより高速処理を実現する。なお、従制御装置が複数のプロセッサで構成されている場合、主制御装置は複数の従制御装置に対して最適再配置情報を送信して並列処理を行うことにより高速処理を実現する。【選択図】図４
2011076495.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも主制御装置である第１プロセッサと従制御装置である第２プロセッサで構成されたマルチプロセッサによる並列処理装置であって、
前記第１及び第２プロセッサは、
処理するデータを取得するデータ取得手段と、
このデータ取得手段によって取得したデータに複数の領域を設定し、当該設定した領域毎のデータを処理する第１データ処理手段と、
このデータ処理手段における処理時間を前記複数の領域毎に算出する処理時間算出手段と、を備え、
前記第１プロセッサはさらに、
前記第２プロセッサで算出された各領域毎の処理時間を受信する処理時間受信手段と、
この処理時間受信手段で受信した各領域毎の処理時間及び当該第１プロセッサで算出された各領域毎の処理時間から処理時間を短縮するための最適配置を算出する第１最適配置算出手段と、
この第１最適配置算出手段によって算出された最適配置情報を前記第２プロセッサに送信する最適配置送信手段と、
当該最適配置情報に基づく最適配置での処理を実行する第２データ処理手段と、
を備え、
前記第２プロセッサはさらに、
前記処理時間算出手段によって算出された処理時間を前記第１プロセッサに送信する処理時間送信手段と、
前記第１プロセッサから送信された最適配置情報を受信する最適配置受信手段と、
この最適配置受信手段によって受信した最適配置情報に基づいて最適配置でのデータ処理を実行する第２データ処理手段と、
を備えたことを特徴とするマルチプロセッサによる並列処理装置。
【請求項２】
少なくとも主制御装置である第１プロセッサと従制御装置である第２プロセッサで構成された並列処理装置であって、
前記第１及び第２プロセッサは、
処理するデータを取得するデータ取得手段と、
このデータ取得手段によって取得したデータに複数の領域を設定し、当該設定した領域毎のデータを処理するデータ処理手段と、
このデータ処理手段における処理時間を前記複数の領域毎に算出する処理時間算出手段と、を備え、
前記第１プロセッサはさらに、
前記第２プロセッサで算出された各領域毎の処理時間を受信する処理時間受信手段と、
当該第１プロセッサの処理時間に対する前記第２プロセッサの処理時間比をＭとするとき、この処理時間比Ｍを用いて第２プロセッサの処理時間を第１プロセッサの処理時間に変換する処理時間変換手段と、
前記処理時間受信手段で前記第２プロセッサから受信した各領域毎の処理時間を前記処理時間変換手段で変換した処理時間及び当該第１プロセッサで算出された各領域毎の処理時間から、処理時間を短縮するための最適配置を算出する第１最適配置算出手段と、
この第１最適配置算出手段によって算出された最適配置情報を前記第２プロセッサに送信する最適配置送信手段と、
当該最適配置情報に基づく最適配置での処理を実行する第２データ処理手段と、
を備え、
前記第２プロセッサはさらに、
前記処理時間算出手段によって算出された処理時間を前記第１プロセッサに送信する処理時間送信手段と、
前記第１プロセッサから送信された最適配置情報を受信する最適配置受信手段と、
この最適配置受信手段によって受信した最適配置情報に基づいて最適配置での処理を実行する第２データ処理手段と、
を備えたことを特徴とするマルチプロセッサによる並列処理装置。
【請求項３】
少なくとも主制御装置である第１プロセッサと従制御装置である第２プロセッサで構成された並列処理装置であって、
前記第１及び第２プロセッサは、
処理するデータを取得するデータ取得手段と、
このデータ取得手段によって取得したデータに複数の領域を設定し、当該設定した領域毎のデータを処理するデータ処理手段と、
このデータ処理手段における処理時間を前記複数の領域毎に算出する処理時間算出手段と、
前記データ処理手段において、前記処理毎に検出成功率を算出する検出成功率算出手段と、を備え、
前記第１プロセッサはさらに、
前記第２プロセッサで算出された各領域毎の処理時間及び検出成功率を受信する処理時間・成功率受信手段と、
この処理時間・成功率受信手段で受信した処理時間及び検出成功率並びに当該第１プロセッサで算出した処理時間及び成功率から処理時間を短縮するための最適配置を算出する第２最適配置算出手段と、
この第２最適配置算出手段によって算出された最適配置情報を前記第２プロセッサに送信する最適配置送信手段と、
当該最適配置情報に基づく最適配置でのデータ処理を実行する第２データ処理手段と、
を備え、
前記第２プロセッサはさらに、
前記処理時間算出手段によって算出された処理時間及び検出成功率を前記第１プロセッサに送信する処理時間・成功率送信手段と、
前記第１プロセッサから送信された最適配置情報を受信する最適配置受信手段と、
この最適配置受信手段によって受信した最適配置情報に基づいて最適配置でのデータ処理を実行する第２データ処理手段と、
を備えたことを特徴とするマルチプロセッサによる並列処理装置。
【請求項４】
前記データ取得手段は、
カメラから出力された画像をキャプチャ装置によって前記第１又は第２プロセッサで処理可能な形式に変換された画像データを取得する機能を有し、
前記第１データ処理手段は、
前記データ取得手段によって取得した画像データを基に顔領域を検出する顔領域検出サイズを複数設定する設定手段と、
この設定された顔領域検出サイズで示される領域で顔領域を検出後、さらに、顔領域検出サイズを前記設定手段によって設定した顔領域検出サイズに変更して同様に顔領域を検出する顔領域検出手段と、
を備え、
前記第２データ処理手段は、
前記第１プロセッサ及び前記第２プロセッサにおいて、最適配置された前記顔領域検出サイズ毎に当該顔領域検出サイズで示される領域で顔領域の検出処理後、さらに当該顔領域検出サイズで示される領域を前記画像データの中で所定量移動しながら顔領域の検出処理をすることを特徴とする請求項１乃至請求項３記載のマルチプロセッサによる並列処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、顔認識処理など画像データを複数のプロセッサを用いて並列処理することにより高速化が可能なマルチプロセッサによる並列処理装置に関する。
【背景技術】
【０００２】
図１１は、マルチプロセッサによる従来のデータ並列処理方法を説明するための図である。図１１（１）は、第１プロセッサからなるシングルプロセッサによるループ処理を示しており、６回のループ処理を実施する場合を示す。図１１（２）は、第１プロセッサ及び第２プロセッサからなるマルチプロセッサによる並列処理を示す。
【０００３】
並列処理は、プログラムの繰り返し部分（ｆｏｒやｗｈｉｌｅ）に着目し、ループ部分を各プロセッサに分割し処理を割り当てる手法である。この図の例では、シングルプロセッサにおける６回のループ処理（繰り返し処理）を、マルチプロセッサを構成する第１プロセッサにはループ１〜３のループ処理を割り当て、第２プロセッサには、ループ４〜６のループ処理を割り当てている。従来のシングルプロセッサではループ１〜ループ６からなる６回のループ処理を実施していたのに対し、マルチプロセッサでは、第１プロセッサ及び第２プロセッサにおいてそれぞれ３回のループ処理になるため、高速化が可能になる。
【０００４】
図１１に示す並列処理の一例として、顔領域検出アルゴリズムがある。顔領域検出アルゴリズムとは、顔らしさを判定する顔領域検出器により画像から顔領域を検出するアルゴリズムのことである。この顔領域検出アルゴリズムにはＡｄａｂｏｏｓｔ（Adaptive boosting）などがある。本アルゴリズムは顔領域検出のサイズを数段階に可変することにより、画像中の顔領域のサイズが大小変化した場合であっても、この変化に対応した顔領域を検出することができる。この顔領域検出サイズの可変は一般的にループ処理されることから、上述したデータ並列化処理が可能である。画像データのレイアウトを構造を解析して処理の高速化を行う方法が知られている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９-１１０４９９号公報（第６−７頁、図４）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
図１１に示した例では、シングルプロセッサにおける６回のループ処理を、第１プロセッサにループ１〜３のループ処理を割り当て、第２プロセッサにループ４〜６のループ処理を割り当てている。なお、ループ処理とは、上述したように繰り返し処理のことである。
【０００７】
ここで、ループ１〜３のループ処理の合計処理時間をＮ秒、ループ４〜６のループ処理の合計処理時間をＭ秒とすると、並列処理におけるオーバヘッド時間（無駄時間）ＯＴは下式（１）で示される。  
ＯＴ＝Ｎ−Ｍ  （但し  Ｎ＞Ｍ  の場合）（秒）・・・・・・・（１）
ＯＴ：並列処理におけるオーバーヘッド時間（秒）
ここでＮとＭが同じ値のとき、理想的な並列状態となり、シングルプロセッサ時と比べて処置速度は２倍に高速化される。そこで、Ｎ＝Ｍに近づくように第１プロセッサと第２プロセッサの処理を最適に配置する必要がある。
【０００８】
しかしながら、各ループの処理時間は画像撮影場所の背景や、環境光により大きく変動する。例えば、以降に説明する顔領域検出処理において、背景に、顔に似たパターンが多数ある場合には処理時間が大きく増大するなど、装置の設置場所等によって各ループ処理の処理時間が変動するため、装置設置前にあらかじめ各プロセッサに対して最適配置を施すことは困難であった。
【０００９】
なお、特許文献１記載の方法は、画像データのレイアウト構造を解析して処理量を解析する方法であり、レイアウト内の情報が等質であり、本発明の課題であるループ処理が極めて多い場合には適用の効果が得られない。
【００１０】
本発明は、上記課題を解決するためになされたもので、ループ処理を複数のプロセッサに割り当て、処理を高速にする場合、その処理の最適配置を行うことが可能なマルチプロセッサによる並列処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するために、本発明の請求項１記載のマルチプロセッサによる並列処理装置は、少なくとも主制御装置である第１プロセッサと従制御装置である第２プロセッサで構成されたマルチプロセッサによる並列処理装置であって、前記第１及び第２プロセッサは、処理するデータを取得するデータ取得手段と、このデータ取得手段によって取得したデータに複数の領域を設定し、当該設定した領域毎のデータを処理する第１データ処理手段と、このデータ処理手段における処理時間を前記複数の領域毎に算出する処理時間算出手段と、を備え、前記第１プロセッサはさらに、前記第２プロセッサで算出された各領域毎の処理時間を受信する処理時間受信手段と、この処理時間受信手段で受信した各領域毎の処理時間及び当該第１プロセッサで算出された各領域毎の処理時間から処理時間を短縮するための最適配置を算出する第１最適配置算出手段と、この第１最適配置算出手段によって算出された最適配置情報を前記第２プロセッサに送信する最適配置送信手段と、当該最適配置情報に基づく最適配置での処理を実行する第２データ処理手段と、を備え、前記第２プロセッサはさらに、前記処理時間算出手段によって算出された処理時間を前記第１プロセッサに送信する処理時間送信手段と、前記第１プロセッサから送信された最適配置情報を受信する最適配置受信手段と、この最適配置受信手段によって受信した最適配置情報に基づいて最適配置でのデータ処理を実行する第２データ処理手段と、を備えたことを特徴とする。
【００１２】
また、本発明の請求項２記載のマルチプロセッサによる並列処理装置は、少なくとも主制御装置である第１プロセッサと従制御装置である第２プロセッサで構成された並列処理装置であって、前記第１及び第２プロセッサは、処理するデータを取得するデータ取得手段と、このデータ取得手段によって取得したデータに複数の領域を設定し、当該設定した領域毎のデータを処理するデータ処理手段と、このデータ処理手段における処理時間を前記複数の領域毎に算出する処理時間算出手段と、を備え、前記第１プロセッサはさらに、前記第２プロセッサで算出された各領域毎の処理時間を受信する処理時間受信手段と、当該第１プロセッサの処理時間に対する前記第２プロセッサの処理時間比をＭとするとき、この処理時間比Ｍを用いて第２プロセッサの処理時間を第１プロセッサの処理時間に変換する処理時間変換手段と、前記処理時間受信手段で前記第２プロセッサから受信した各領域毎の処理時間を前記処理時間変換手段で変換した処理時間及び当該第１プロセッサで算出された各領域毎の処理時間から、処理時間を短縮するための最適配置を算出する第１最適配置算出手段と、この第１最適配置算出手段によって算出された最適配置情報を前記第２プロセッサに送信する最適配置送信手段と、当該最適配置情報に基づく最適配置での処理を実行する第２データ処理手段と、を備え、前記第２プロセッサはさらに、前記処理時間算出手段によって算出された処理時間を前記第１プロセッサに送信する処理時間送信手段と、前記第１プロセッサから送信された最適配置情報を受信する最適配置受信手段と、この最適配置受信手段によって受信した最適配置情報に基づいて最適配置での処理を実行する第２データ処理手段と、を備えたことを特徴とする。
【００１３】
さらに、請求項３記載のマルチプロセッサによる並列処理装置は、少なくとも主制御装置である第１プロセッサと従制御装置である第２プロセッサで構成された並列処理装置であって、前記第１及び第２プロセッサは、処理するデータを取得するデータ取得手段と、このデータ取得手段によって取得したデータに複数の領域を設定し、当該設定した領域毎のデータを処理するデータ処理手段と、このデータ処理手段における処理時間を前記複数の領域毎に算出する処理時間算出手段と、前記データ処理手段において、前記処理毎に検出成功率を算出する検出成功率算出手段と、を備え、前記第１プロセッサはさらに、前記第２プロセッサで算出された各領域毎の処理時間及び検出成功率を受信する処理時間・成功率受信手段と、この処理時間・成功率受信手段で受信した処理時間及び検出成功率並びに当該第１プロセッサで算出した処理時間及び成功率から処理時間を短縮するための最適配置を算出する第２最適配置算出手段と、この第２最適配置算出手段によって算出された最適配置情報を前記第２プロセッサに送信する最適配置送信手段と、当該最適配置情報に基づく最適配置でのデータ処理を実行する第２データ処理手段と、を備え、前記第２プロセッサはさらに、前記処理時間算出手段によって算出された処理時間及び検出成功率を前記第１プロセッサに送信する処理時間・成功率送信手段と、前記第１プロセッサから送信された最適配置情報を受信する最適配置受信手段と、この最適配置受信手段によって受信した最適配置情報に基づいて最適配置でのデータ処理を実行する第２データ処理手段と、を備えたことを特徴とする。
【発明の効果】
【００１４】
ループ処理を複数のプロセッサに割り当て、処理を高速にする場合、当該処理の最適配置を行うことができるため、効率のよいマルチプロセッサによる並列処理装置を提供することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施例１に係るマルチプロセッサによる並列処理装置の構成図
【図２】図１に示す実施例１の顔領域検出アルゴリズム並列化処理を説明する図
【図３】撮像画像、被写体、顔領域検出サイズの関係を示す図
【図４】実施例１係る顔領域検出アルゴリズム並列処理フローチャート
【図５】実施例１に係る顔領域検出アルゴリズム並列化の処理時間短縮を説明するための図
【図６】本発明の実施例２に係るマルチプロセッサによる並列処理装置の構成図
【図７】実施例２に係る顔領域検出アルゴリズム並列処理フローチャート
【図８】実施例２の最適再配置算出アルゴリズムを説明する図
【図９】実施例３に係る顔領域検出アルゴリズム並列処理フローチャート（その１）
【図１０】実施例３に係る顔領域検出アルゴリズム並列処理フローチャート（その２）
【図１１】マルチプロセッサによる従来のデータ並列処理方法を説明するための図
【発明を実施するための形態】
【００１６】
本発明を実施するための形態は以下、図面を参照して本発明の実施例を説明する。
【実施例１】
【００１７】
図１は、本発明の実施例１に係るマルチプロセッサによる並列処理装置の一例で、マルチプロセッサによる並列処理装置の構成図である。本実施例のマルチプロセッサによる並列処理装置は、カメラ１、キャプチャ装置２、第１プロセッサ３、第２プロセッサ４を備えている。ここで第１プロセッサ３又は第２プロセッサ４の何れか一方を主制御装置として機能させ、他方を従制御装置として機能させる。本実施例では、第１プロセッサ３を主制御装置とし、第２プロセッサ４を従制御装置として機能させた場合について説明する。
【００１８】
なお、３個以上のプロセッサで本実施例のマルチプロセッサを構成する場合には、少なくも１個の主制御装置であるプロセッサと複数の従制御装置であるプロセッサによって構成する。ここで、主制御装置は処理の最適配置を行うための処理時間情報など（詳細は後述する）を複数の従制御装置から取得し、得られた情報を元に最適配置情報を算出し、各従制御装置に送信することによって主制御装置及び従制御装置による並列処理を実現している。以下、詳細に説明する。
【００１９】
カメラ１は、ＮＴＳＣ方式（National Television System Committee：アナログテレビジョン放送標準方式）のカメラ又はカメラリンク方式（Camera Link：デジタルカメラと画像入力ボードを接続する規格仕様）のカメラが該当する。本実施例では、当該カメラから出力された画像（画像データ）が用いられる。
【００２０】
キャプチャ装置２は、上記カメラで撮像した画像データをプロセッサで処理可能な形式に変換する機能を有する装置で、専用チップ又はＦＰＧＡで構成される。
【００２１】
第１プロセッサ３及び第２プロセッサ４は、上記キャプチャ装置２と接続され、当該キャプチャ装置から出力される画像データを取得する取得手段を備え、かつ、処理速度が同じ同性能のプロセッサで構成される。
【００２２】
プロセッサ（第１プロセッサ及び第２プロセッサの総称）には、通信機能３１・４１、結果出力機能３３及び再配置機能３２・４２が備えられている。
【００２３】
通信機能３１・４１は、第１プロセッサ３及び第２プロセッサ４が上記画像データを相互に送受信する機能である。この通信方法には、第１プロセッサ３及び第２プロセッサ４の何れからもアクセス可能なメモリ（図示しない）を配置し、当該メモリを共有する方法がある。また、第１プロセッサ３及び第２プロセッサ４をバス接続し、バス通信（８ｂｉｔ、１６ｂｉｔ、３２ｂｉｔなどのデータバスを用いて送受信する通信方式）を用いる方法もある。
【００２４】
結果出力機能３３は、第１プロセッサ３及び第２プロセッサ４を用いて行った並列処理結果を外部に出力する機能である。従って、この結果出力機能３３は第１プロセッサ３又は第２プロセッサ４の何れか一方に備わっていればよいが、本実施例では、主制御装置としての第１プロセッサ３にこの機能が備えられている。なお、再配置機能３２・４２は、後述する。
【００２５】
図２は、顔領域検出アルゴリズム並列化処理を説明する図である。
【００２６】
最初に、本実施例に係る顔領域検出アルゴリズムについて説明する。上記キャプチャ装置２から第１プロセッサ３及び第２プロセッサ４に対して同一画像が送信される。
【００２７】
送信された画像は、第１プロセッサ３及び第２プロセッサ４によって受信され、メモリ（図示しない）に記憶される。
【００２８】
「顔領域検出」とは、記憶された画像の中に人間の顔に該当すると思われるものがあるかどうかを検出することある。また、「顔領域検出アルゴリズム」とはこの顔領域を検出する方法のことである。
【００２９】
キャプチャ装置２から取得した画像には、カメラから人物である被写体までの距離が長いため小さく撮像された顔画像と、距離が短いために大きく撮像された顔画像が１個又は複数混在する場合が想定される。
【００３０】
そのために、本実施例の顔領域検出アルゴリズムでは、撮像された画像に対して、顔領域を検出するための顔領域検出サイズを事前の検証によって複数設定しておく。図に示す一例では、この顔領域検出サイズを６個（顔領域検出サイズＰＳ１〜ＰＳ６）に設定した場合を示す。
【００３１】
図３は、撮像画像、被写体Ｐ、顔領域検出サイズＰＳ１の関係を示す図である。撮像画像（以下、単に画像と称する場合もある。）の中の被写体Ｐの顔領域を検出するために画像の左上端を座標開始点として水平（Ｈ）、垂直（Ｖ）方向に所定の画素からなる顔領域検出サイズＰＳ１を設定する。この設定した範囲で人物の顔に該当するものがあるかどうか検出する。
【００３２】
この検出方法は、人物の特徴を事前に検証して標準パターンとしてデータベース化しておく。当該データベース化された標準パターンと当該顔領域検出サイズＰＳ１内部画像との間で特徴抽出及び複合類似度法による類似度演算を行う。この類似度演算の結果、事前に検証された類似度値の閾値を超える画像が検出された場合に顔領域が検出されたものと見なす方法である。
【００３３】
本実施例の場合、左上端にある顔領域検出サイズＰＳ１と右下端にある被写体Ｐの位置が異なるため、顔領域は、左上端に設定した顔領域検出サイズＰＳ１に対する類似度演算によっては検出されない。
【００３４】
次に、上記類似度演算終了後、水平（Ｈ）方向に画像をΔＨ画素ずらした位置で同様に類似度演算を行い顔領域を検出する。以上の操作を図示Ｈ１方向に繰り返し実施する。この繰り返し処理が上述したループ処理に該当する。
【００３５】
次に垂直方向に画像をΔＶ画素ずらした位置で同様に類似度演算を行い顔領域を検出する。以上の操作を図示矢印Ｈ２、Ｈ３・・・・Ｈｎ回繰り返す。
【００３６】
以上の操作により、例えば、右下に被写体Ｐが撮像されている場合には、上述した類似度演算の結果、類似度値が閾値を超えたとき、顔領域が検出される。
【００３７】
従って、顔領域検出サイズＰＳ１に対する顔領域検知のための演算回数Ｋ１は下式（２）で示される。同様に顔領域検出サイズＰＳ２、ＰＳ３に対する演算回数Ｋ２、Ｋ３も設定される。  
Ｋ１＝ｈ１・ｖ１・・・・・・・・・・・・・・・・・・・（２ａ）
Ｋ２＝ｈ２・ｖ２・・・・・・・・・・・・・・・・・・・（２ｂ）
Ｋ３＝ｈ３・ｖ３・・・・・・・・・・・・・・・・・・・（２ｃ）
Ｋ１〜Ｋ３：顔領域検出サイズＰＳ１〜ＰＳ３に対する顔領域検出のための演算回数
ｈ１〜ｈ３：顔領域検出サイズＰＳ１〜ＰＳ３に対する顔領域ずらし画素数ΔＨで定まる水平方向の演算回数
ｖ１〜ｖ３：顔領域検出サイズＰＳ１２〜ＰＳ３に対する顔領域ずらし画素数ΔＨで定まる水平方向の演算回数
以上説明した顔領域検出を１個のプロセッサで実施するには顔領域検出サイズを６個設定した場合には各顔領域検出サイズに対するＫ１回〜Ｋ６回の類似度演算を行うことになり、膨大なループ処理が必要になる。このループ処理が後述する第２データ処理手段に該当する。
【００３８】
そこで、複数のプロセッサを用いた並列処理を行うことにより、処理時間（演算時間）を短縮することが必要とされる場合がある。本実施例では、その一例として、第１プロセッサ３では、上述した顔領域検出を顔領域検出サイズＰＳ１〜ＰＳ３について行い、第２プロセッサ４では、顔領域検出サイズＰＳ４〜ＰＳ６について行う場合を示している。
【００３９】
図４は、実施例１に係る顔領域検出アルゴリズム並列処理フローチャートである。本実施例に係る並列処理は、ループ処理の再配置による高速化を目的としている。以下図４を用いて第１プロセッサ３及び第２プロセッサ４による最適配置処理を説明する。
【００４０】
第１プロセッサ３は、キャプチャ装置２から送信された画像信号を受信して記憶する（Ｓ１）。受信した画像信号を元に、顔領域検出器の顔領域検出サイズＰＳ１を元に上述した顔領域検出（顔領域検出アルゴリズム）処理を行う（Ｓ１〜Ｓ４）。また、この顔領域検出処理に必要な処理時間を算出する。この処理時間を複数行いその平均処理時間を算出する。
【００４１】
次に、顔領域検出サイズＰＳ２の場合の顔領域検出を行うと共に、上記同様平均処理時間を算出する。以上の処理を受信画像の中の例えば左端に設定した顔領域検出サイズＰＳ１〜ＰＳ３に対して処理する（第１デー処理手段）。
【００４２】
次に、顔領域検出サイズＰＳ３の場合の顔領域検出を行うと共に、上記同様平均処理時間を算出する。以下、第１データ処理手段を具体的に説明する。
【００４３】
第１プロセッサ３で処理する顔領域検出サイズ数ｎが３個（ＰＳ１〜ＰＳ３）であるため、顔領域検出演算回数の合計Ｎ１は顔領域検出サイズ数ｎのＣ（繰り返し回数）倍である。Ｃ＝１の場合は、下式（３）になる。  
Ｎ１＝ΣＬｎ＝Ｌ１＋Ｌ２＋Ｌ３・・・・・・・・・・・・（３）
ｎ：顔領域検出サイズ数（＝３）
Ｎ１：第１プロセッサ３での顔領域検出演算回数の合計回数
Ｌ１〜Ｌ３：顔画像サイズＰＳ１〜ＰＳ３に対する顔領域検出のための演算回数
ここでステップＳ２に示すＩ、１、ｎは類似度演算値Ｉを算出するための試行回数が顔領域検出サイズ数ｎに達するまで繰り返すことを示す一般式である。本実施例では、ｎ＝３となる。
【００４４】
なお、顔領域検出サイズＰＳ１、ＰＳ２、ＰＳ３が図２に示すように異なるサイズの場合には、顔領域検出サイズＰＳ１、ＰＳ２、ＰＳ３ごとに顔領域検出処理時間ＴＴ（１）、ＴＴ（２）、ＴＴ（３）が異なった値になる。
【００４５】
従って、この顔領域検出サイズＰＳ１、ＰＳ２、ＰＳ３毎の処理時間を算出することにより、第１プロセッサ３での顔領域検出処理時間を把握することが可能になる（Ｓ５（処理時間算出手段））。即ち、第１プロセッサ３での顔領域検出処理時間は、顔領域検出サイズＰＳ１、ＰＳ２、ＰＳ３ごとの顔領域検出処理時間ＴＴ（１）、ＴＴ（２）、ＴＴ（３）をそれぞれ上式（２）で算出したＫ１、Ｋ２、Ｋ３倍した演算時間になる。
【００４６】
本実施例では、第１プロセッサ３での顔領域検出サイズ数ｎを３に設定した場合を説明したが、一般的には任意に設定が可能であることから、その繰り返し回数ｎｕｍに対する閾値を設定することができる。本実施例では、この繰り返し回数を含む試行回数ｎｕｍが閾値ＴＨＬを超えるまで顔領域検出を繰り返す（Ｓ１〜Ｓ６（データ処理手段）、Ｓ１２）。
【００４７】
第１プロセッサ３は、第２プロセッサ４で算出した各顔領域検出サイズＰＳ４、ＰＳ５、ＰＳ６に対する顔領域検出処理時間（ＴＴ（４）、ＴＴ（５）、ＴＴ（６））を受信する（Ｓ７（処理時間受信手段））。
【００４８】
この結果、第１プロセッサ３及び第２プロセッサ４による各顔領域検出サイズＰＳ４〜ＰＳ６に対する処理時間が第１プロセッサ３側で認識できることになる。これら第１プロセッサ３及び第２プロセッサ４からの顔領域検出処理時間を元に２つのプロセッサを用いて最も処理時間の短くなる最適再配置を算出する（Ｓ８（第１最適配置算出手段））。
【００４９】
第１プロセッサ３は、上記最適配置算出結果を第２プロセッサ４に送信する（Ｓ９（最適配置送信手段））。第１プロセッサ３は、上記第１最適配置算出結果に基づく最適配置でのデータ処理を実行する（Ｓ１０（第２データ処理手段））。
【００５０】
第２プロセッサ４は、第１プロセッサ３と同様の処理を行う（Ｓ２０からＳ２５（データ処理手段））。この結果、各顔領域検出サイズに対する顔領域検出処理時間が算出され（Ｓ２４（処理時間算出手段））、算出された処理時間は第１プロセッサ３に送信される（Ｓ２６（処理時間送信手段））。
【００５１】
また、第１プロセッサ３で算出された最適配置算出結果を受信する（Ｓ２７（最適配置受信手段））。この受信した最適配置に基づいて最適配置処理を実行する（Ｓ２８（第２データ処理手段））。なお、本実施例に係る最適配置の具体的な処理方法は後述する。
【００５２】
図５は、実施例１に係る顔領域検出アルゴリズム並列化の処理時間短縮を説明するための一例を示す図である。図５（１）において、顔領域検出サイズＰＳ１〜ＰＳ６の場合、その各々に対する顔領域検出処理ＰＴ（１）〜ＰＴ（６）に対する処理時間がＴＴ（１）＝６、ＴＴ（２）＝５、ＴＴ（３）＝４、ＴＴ（４）＝３、ＴＴ（５）＝２、ＴＴ（６）＝１と仮定した場合、最も単純な処理の配置は、第１プロセッサに顔領域検出サイズＰＳ１〜ＰＳ３に該当する処理ＰＴ（１）、ＰＴ（２）、ＰＴ（３）を配置し、第２プロセッサに顔領域検出サイズＰＳ４〜ＰＳ６に該当する処理ＰＴ（４）、ＰＴ（５）、ＰＴ（６）を配置する方法である。図５（２）はこの状態を示す。
【００５３】
図示した例では、処理ＰＴ（１）〜ＰＴ（３）を第１プロセッサ３で処理し、ＰＴ（４）〜ＰＴ（６）を第２プロセッサ４で並列処理しており、その場合の処理時間を示している。この場合、第１プロセッサ３での処理時間は１５（ｍｓ）であり、第２プロセッサ４での処理時間は６（ｍｓ）となる。  
ＴＴ（１）＝６（ｍｓ）
ＴＴ（２）＝５（ｍｓ）
ＴＴ（３）＝４（ｍｓ）
ＴＴ（４）＝３（ｍｓ）
ＴＴ（５）＝２（ｍｓ）
ＴＴ（６）＝１（ｍｓ）
第１プロセッサの処理時間Ｔ１＝６＋５＋４＝１５（ｍｓ）・・（４）
第２プロセッサの処理時間Ｔ２＝３＋２＋１＝６（ｍｓ）・・・（５）
ＯＶ＝１５−６＝９（ｍｓ）・・・・・・・・・・・・・・・・（６）
ＯＶ：（４）と（５）の差分で決まるオーバーヘッド（無駄）時間
上記単純処理の方法では、どの処理も処理時間が一定の場合には処理の配置による効率の変化はないが、上述したように処理時間が異なる場合には、第１プロセッサの処理時間Ｔ１が第２プロセッサの処理時間Ｔ２の２倍以上になっており、上式（５）で示すオーバヘッド時間が発生し、マルチプロセッサによる高速処理が達成できない。
【００５４】
図５（３）は、本実施例による最適配置算出結果に基づく最適配置処理の方法である。
【００５５】
最初に処理時間の最も長い処理ＰＴ（１）を第１プロセッサ３に配置する。次に長い処理ＰＴ（２）を第２プロセッサ４に配置する。
【００５６】
次に長い処理ＰＴ（３）をプロセッサ毎の合計処理時間が短い方に配置する。上述した例では、これまでの配置の結果、第１プロセッサ３の処理時間が６ｍｓで第２プロセッサ４の処理時間が３ｍｓであり、第２プロセッサ４の処理時間の方が少ないため、次の処理である処理ＰＴ（３）を第２プロセッサ４に配置する。
【００５７】
同様に、次に長い処理ＰＴ（４）をプロセッサ毎の合計処理時間が短い第１プロセッサ３に配置する。
【００５８】
同様に、次に長い処理ＰＴ（５）をプロセッサ毎の合計処理時間が短い方に配置する。本実施例では、第１プロセッサ３及び第２プロセッサ４での合計処理時間は同じであるため、ここでは、第２プロセッサ４に配置する。
【００５９】
同様に、次に長い処理ＰＴ（６）をプロセッサ毎の合計処理時間の少ない第１プロセッサ３に配置する。以上の配置の結果、第１プロセッサ３での処理時間は１０（ｍｓ）となり、第２プロセッサ４での処理時間は１１（ｍｓ）となる。
【００６０】
第１プロセッサでの処理時間＝６＋３＋１＝１０（ｍｓ）・・・・（７）
第２プロセッサでの処理時間＝５＋４＋２＝１１（ｍｓ）・・・・（８）
ＯＶ＝１１−１０＝１（ｍｓ）・・・・・・・・・・・・・・・・（９）
ＯＶ：（７）と（８）の差分で決まるオーバーヘッド（無駄）時間
以上説明したように、シングル処理であれば処理時間が２１（＝６＋５＋４＋３＋２＋１）（ｍｓ）必要であるものを、２個のプロセッサによる単純並列処理をした場合には１５（ｍｓ）まで処理時間を短縮することができるが、本実施例に係る最適配置処理によれば第１プロセッサ３の処理時間Ｔ１が１１（ｍｓ）、第２プロセッサ４の処理時間Ｔ２が１０（ｍｓ）に短縮できる。
【００６１】
このようにして設定した再配置実行後、試行回数ｎｕｍを初期化し（ｎｕｍ＝０、図４のＳ１１）、ステップＳ１に移行後、現実の顔領域検出のための演算を所定回数繰り返して顔領域を検出することになる。
【００６２】
本実施例では、プロセッサを２個使用した場合に付いて示したが、それ以上の場合にも同様に使用することが可能である。例えば、プロセッサを３個使用した場合、１個をメインプロセッサとし、他の２個をサブプロセッサとし、各処理を３個のプロセッサで分配（配置）して処理し、各処理ごとに算出された処理時間をメインプロセッサ送信する。メインプロセッサは、全ての処理時間を把握できるので、その中の最も長い処理をメインプロセッサに配置し、以下順番に２個のサブプロセッサに配置する。次に処理時間の長い処理を３個のプロセッサの中で処理時間の短いプロセッサに配置する。以下上述した通りに配置する。この場合にも、プロセッサが２個の場合と同様に処理時間が均等に再配置される。
【００６３】
以上説明したように本発明の実施例１では、マルチプロセッサによる並列処理の際、プロセッサ毎の処理を処理時間が均等になるように配置可能なため、課題である並列処理におけるオーバーヘッド時間を短縮することになり、結果的に高速処理を行うことが可能になる。また、この方法を用いることによって、顔領域検出処理の際、設置環境や昼夜の変化などの背景や環境（光環境）に応じて、最適なマルチプロセッサ並列処理が実現可能になる。
【実施例２】
【００６４】
図６は、本発明の実施例２に係るマルチプロセッサによる並列処理装置の一例でマルチプロセッサによる並列処理装置の構成図である。本実施例１では、第１プロセッサ３と第２プロセッサ４のプロセッサ性能が同程度のものを用いて構成していた。しかしながら、この実施例２では、処理能力が異なるプロセッサを用いて構成してある。例えば、第１プロセッサ３には通信機能３１及びイーサネット（Ｒ）機能３４が備えられているが、第２プロセッサ４には通信機能４１は備えられているがイーサネット（Ｒ）機能は備えられていない。このように、異なる種類のプロセッサを装備した方がコスト的に優れている場合がある。
【００６５】
図７は、実施例２に係る顔領域検出アルゴリズム並列処理フローチャートである。図８は、実施例２の最適再配置算出アルゴリズムを説明する図である。図７に示すフローチャートは図４に示したフローチャートと基本的な動作は同じであるが、第１プロセッサ３において、第２プロセッサからの処理時間受信後に（Ｓ３６）、処理時間変換処理機能（Ｓ３７（処理時間変換手段））が追加されている。
【００６６】
この処理時間変換機能（Ｓ３７）とは、既知のプロセッサの性能差から処理時間を変換する機能である。第１プロセッサ３に比べて第２プロセッサ４の処理時間をＭ（処理時間比）倍とし、第１プロセッサ３での処理時間を「ＴＴ１（１）、ＴＴ１（２）・・・」、第２プロセッサ４での処理時間を「ＴＴ２（１）、ＴＴ２（２）・・・」とするとき、第１プロセッサ３又は第２プロセッサ４側から見た処理時間をそれぞれ上記処理時間比Ｍを用いて変換することができる。
【００６７】
以下に、変換式（１０）、（１１）を示す。  
ＴＴ１（ｎ）＝ＴＴ２（ｎ）×（１／Ｍ）・・・・・・・・・（１０）
ＴＴ２（ｎ）＝ＴＴ１（ｎ）×Ｍ・・・・・・・・・・・・（１１）
Ｍ＝（第２プロセッサの処理速度）／（第１プロセッサの処理速度）・（１２）
ＴＴ１（ｎ）：ＴＴ２（ｎ）を第１プロセッサ３で処理したときの演算時間
ＴＴ２（ｎ）：ＴＴ１（ｎ）を第２プロセッサ４で処理したときの演算時間
Ｍ：処理時間比
変換式（１０）は第２プロセッサ４の処理時間を第１プロセッサ３における処理時間へ変換する変換式であり、変換式（１１）は、第１プロセッサ３の処理時間を第２プロセッサ４における処理時間へ変換する変換式である。
【００６８】
このようにして変換された処理はプロセッサの違いによる区別を必要としないため、その処理はＴＴ（１）〜ＴＴ（６）として表現することができる。
【００６９】
以上のことを前提に以下、図７に示す実施例２における最適配置算出プログラムを説明する。ＴＴ（１）〜ＴＴ（６）において最も時間がかかっている処理を第１プロセッサ３に配置する。図８（１）では、ＴＴ（６）が最も時間がかかっているため、第１プロセッサ３にその処理を配置する。次に、ＴＴ（１）が最も時間がかかっているため、第２プロセッサ４にＴＴ（１）を配置する。
【００７０】
次に、プロセッサ毎の合計処理時間が短い方に、未処理の処理の中から最も時間がかかっている処理を配置する。この例では、合計処理時間の短い第２プロセッサ４にＴＴ（５）を配置する（図８（２）参照）。
【００７１】
次に、プロセッサ毎の合計処理時間が短い方に、未処理の処理の中から最も時間がかかっている処理を配置する。この例では、合計処理時間の短い第１プロセッサ３にＴＴ（２）を配置する（図８（２）参照）。
【００７２】
次に、プロセッサ毎の合計処理時間が短い方に、未処理の処理の中から最も時間がかかっている処理を配置する。この例では、合計処理時間の短い第２プロセッサ４にＴＴ（４）を配置する（図８（３）参照）。
【００７３】
次に、プロセッサ毎の合計処理時間が短い方に、未処理の処理の中から最も時間がかかっている処理を配置する。この例では、合計処理時間の短い第１プロセッサ３にＴＴ（３）を配置する（図８（３）参照）。
【００７４】
以上の方法により、性能の異なったプロセッサであっても顔領域検出処理ＴＴ（１）〜ＴＴ（６）を配置することができる。
【００７５】
以上説明したように、本発明の実施例２では、各プロセッサの処理能力が異なるマルチプロセッサ構成においても、各プロセッサ間の処理時間を均等化でき、並列処理におけるオーバーヘッド時間を最小にできる。この結果、異なる種類のプロセッサでのハード構成が柔軟性を有するものとなり、コスト低減が図れる。
【実施例３】
【００７６】
図９は、本発明の実施例３に係る顔領域検出アルゴリズム並列処理のフローチャート（その１）で実施例３の特徴的な処理部分を示す。
【００７７】
実施例３の構成図は実施例１同様であるためにその構成図を省略する。実施例１と実施例２は、顔領域検出結果の成否に関わらず必ずループ処理を最後までを実施している。
【００７８】
実施例１及び実施例２に示すようにループ処理を最後まで実施する場合は、画像中に顔が複数ある場合を想定しており、複数の顔領域を検出する必要がある場合にはこの処理が必要になる。
【００７９】
これに対して、実施例３では、顔領域検出ができた時点で、ループ処理を終了する場合を想定しており、顔領域検出処理上、１個の顔領域が検出されればよい場合にはこの処理が有効である。顔領域を検出した時点（Ｓ７０のＹ、Ｓ７１のＹ）で処理を終えることができれば、処理時間短縮の効果がある。
【００８０】
図１０は、実施例３に係る顔領域検出アルゴリズム並列処理のフローチャート（その２）である。このフローチャートは、図２に示したフローチャートと基本的な動作は同じであるが、第１プロセッサ３には、処理時間算出処理（Ｓ８４）後に、検出成功率算出処理（Ｓ８５（検出成功率算出手段））が追加される。また、第１プロセッサ３における試行回数ｎｕｍが閾値ＴＨＬを超えた場合には第２プロセッサ４から処理時間及び上記検出成功率算出処理によって算出された成功率を受信する処理時間・成功率受信処理が追加されている（Ｓ８７（処理時間・成功率受信手段））。
【００８１】
第２プロセッサ４には、処理時間算出処理（Ｓ１０４）後に、第１プロセッサ３同様、検出成功率算出処理（Ｓ１０５）が追加さている。また、第２プロセッサ４における試行回数ｎｕｍが閾値ＴＨＬを越えた場合には第２プロセッサ４における処理時間及び検出成功率算出処理（Ｓ１０５（検出成功率算出手段））によって算出された成功率を第１プロセッサ３に送信する処理時間・成功率送信処理（Ｓ１０７（処理時間・成功率送信手段））が追加されている。
【００８２】
検出成功率算出処理（Ｓ８５、Ｓ１０５）は、上記顔領域検出処理毎の検出成功率を算出する機能を有する。なお、検出成功率は下式（１３）で定義される。  
検出成功率Ｒ（ｎ）＝検出成功数／閾値ＴＨＬ・・・（１３）
処理時間・成功率送信処理及び処理時間・成功率受信処理は、処理時間と顔領域検出の検出成功率を送受信する機能である。
【００８３】
次に、本実施例に係る最適配置処理を説明する。
【００８４】
最初に、図４に示す方法により第１プロセッサ３及び第２プロセッサ４に対して処理時間を算出する（Ｓ８４、Ｓ１０４）。
【００８５】
次に、下表１に基づいて顔領域検出処理の処理時間、積算処理時間、検出成功率、検出不可率、検出成功率２、検出不可率２を算出する。ここでは、例としてループ処理での処理回数が３回の場合を示す。
【表１】
2011076495.tif 000003
【００８６】
ここで、積算処理時間は、処理（顔領域検出処理）完了までの合計時間である。また、検出成功率２は、直前までの処理が全て検出不可で対象の処理で検出成功する率を示す。さらに、検出不可率２は、直前までの処理が全て検出不可で対象の処理で検出不可となる率を示す。
【００８７】
この表の値を基に式（１４）の処理時間期待値を算出する。この算出した処理時間期待値を全ての処理順の組合せで算出する。この例の場合、全ての組合せは、１−２−３、１−３−２、２−１−３、２−３−１、３−１−２、３−２−１となる。
【数１】
2011076495.tif 000004
【００８８】
この処理期待値を基に実施例１で説明した最適配置を算出する(第２最適配置算出手段、Ｓ８８)。この結果を基に最適配置によるデータ処理を実行する（Ｓ９０、Ｓ１０９）。
【００８９】
以上説明したように本発明の実施例３では、実施例１による効果（マルチプロセッサによる並列処理の際、プロセッサ毎の処理を処理時間が均等になるように配置できることによる高速処理を行うことが可能になる。）に加えて、ある顔領域検出処理で顔領域が検出された場合に、処理を途中で終了することができるため、最も短時間で並列処理が可能になる効果が得られる。
【００９０】
以上説明したように、本発明の実施例によれば、ループ処理を複数のプロセッサに割り当てて処理を高速にする場合、その処理の最適配置を行うことができるため、最適なマルチプロセッサによる並列処理ができる。
【符号の説明】
【００９１】
１  カメラ
２  キャプチャ
３  第１プロセッサ
４  第２プロセッサ
ＰＳ１〜ＰＳ６  顔領域検出サイズ
Ｐ  被写体
【図１】
2011076495.tif 000005
【図２】
2011076495.tif 000006
【図３】
2011076495.tif 000007
【図４】
2011076495.tif 000008
【図５】
2011076495.tif 000009
【図６】
2011076495.tif 000010
【図７】
2011076495.tif 000011
【図８】
2011076495.tif 000012
【図９】
2011076495.tif 000013
【図１０】
2011076495.tif 000014
【図１１】
2011076495.tif 000015