(57)【要約】【課題】  直列に接続された複数のステージを含む処理を複数の実行ユニットを用いて実行する場合に処理時間を短縮できる情報処理装置を実現する。【解決手段】  実施形態によれば、情報処理装置は、候補窓設定手段、ステージ決定手段、スコア算出手段及び通過窓決定手段を具備する。候補窓設定手段は入力画像上に複数の候補窓を設定する。ステージ決定手段は、直列に接続され、各ステージが前記候補窓から対象物体を含まない候補窓を棄却する複数のステージから１つのステージ又は２以上のステージを決定する。スコア算出手段は、前記２以上のステージが決定された場合、前記複数の候補窓に対応する、前記２以上のステージのそれぞれにおける複数のスコアを並列に算出する。通過窓決定手段は、前記複数の候補窓のそれぞれに対応する、前記２以上のステージにおける２以上のスコアに基づいて前記複数の候補窓のそれぞれの通過又は棄却を並列に決定する。【選択図】図７
2014063315.tif 000002
【特許請求の範囲】
【請求項１】
複数の実行ユニットと、
入力画像上に複数の候補窓を設定する候補窓設定手段と、
直列に接続された複数のステージであって、各々のステージが前記複数の候補窓から対象物体を含まない候補窓を棄却する複数のステージから、１つの処理対象ステージ又は２以上の処理対象ステージを決定するステージ決定手段と、
前記２以上の処理対象ステージが決定された場合、前記入力画像上に設定された複数の候補窓に対応する、前記２以上の処理対象ステージのそれぞれにおける複数のスコアを、前記複数の実行ユニットによって並列に算出するスコア算出手段と、
前記複数の候補窓のそれぞれに対応する、前記２以上の処理対象ステージにおける２以上のスコアに基づいて、前記２以上の処理対象ステージにおける前記複数の候補窓のそれぞれの通過又は棄却を、前記複数の実行ユニットによって並列に決定する通過窓決定手段とを具備する情報処理装置。
【請求項２】
前記スコア算出手段は、前記１つの処理対象ステージが決定された場合、前記入力画像上に設定された前記複数の候補窓に対応する、前記１つの処理対象ステージにおける複数のスコアを、前記複数の実行ユニットによって並列に算出し、
前記通過窓決定手段は、前記複数の候補窓のそれぞれに対応する、前記１つの処理対象ステージにおける１つのスコアに基づいて、前記１つの処理対象ステージにおける前記複数の候補窓のそれぞれの通過又は棄却を、前記複数の実行ユニットによって並列に決定する請求項１記載の情報処理装置。
【請求項３】
前記ステージ決定手段は、前記１つの処理対象ステージ又は前記２以上の処理対象ステージにおける前記複数の候補窓のそれぞれの通過又は棄却が決定された後、前記１つの処理対象ステージ又は前記２以上の処理対象ステージに後続する、新たな１つの処理対象ステージ又は新たな２以上の処理対象ステージを決定し、
前記スコア算出手段は、前記新たな１つの処理対象ステージが決定された場合、前記通過窓決定手段によって通過が決定された複数の通過窓に対応する、前記新たな１つの処理対象ステージのそれぞれにおける複数のスコアを、前記複数の実行ユニットによって並列に算出し、前記新たな２以上の処理対象ステージが決定された場合、前記複数の通過窓に対応する、前記新たな２以上の処理対象ステージのそれぞれにおける複数のスコアを、前記複数の実行ユニットによって並列に算出し、
前記通過窓決定手段は、前記新たな１つの処理対象ステージが決定された場合、前記複数の通過窓のそれぞれに対応する、前記新たな１つの処理対象ステージにおける１つのスコアに基づいて、前記新たな１つの処理対象ステージにおける前記複数の通過窓のそれぞれの通過又は棄却を、前記複数の実行ユニットによって並列に決定し、前記新たな２以上の処理対象ステージが決定された場合、前記複数の通過窓のそれぞれに対応する、前記新たな２以上の処理対象ステージにおける２以上のスコアに基づいて、前記新たな２以上の処理対象ステージにおける前記複数の通過窓のそれぞれの通過又は棄却を、前記複数の実行ユニットによって並列に決定する請求項２記載の情報処理装置。
【請求項４】
前記通過窓決定手段は、前記複数の候補窓の内の第１候補窓に対応する前記２以上のスコアの合計がしきい値以上である場合に、前記第１候補窓が前記２以上の処理対象ステージを通過することを決定し、前記合計が前記しきい値未満である場合に、前記第１候補窓を棄却することを決定する請求項１記載の情報処理装置。
【請求項５】
前記スコア算出手段は、前記複数の候補窓の内の第１候補窓に含まれる画素の画素値と、前記複数のステージのそれぞれのための前記対象物体の特徴を示す辞書データとを用いて、前記第１候補窓に対応する前記２以上のスコアを算出する請求項１記載の情報処理装置。
【請求項６】
前記複数のステージの内の最終ステージを通過した候補窓に基づいて、前記対象物体が含まれる前記入力画像上の領域を示す情報を出力する位置情報出力手段をさらに具備する請求項１記載の情報処理装置。
【請求項７】
前記ステージ決定手段は、前段のステージを通過した候補窓の数と前記実行ユニットの数とに基づいて、前記１つの処理対象ステージ又は前記２以上の処理対象ステージを決定する請求項１記載の情報処理装置。
【請求項８】
複数の実行ユニットを用いて画像処理を並列に実行する並列処理方法であって、
入力画像上に複数の候補窓を設定し、
直列に接続された複数のステージであって、各々のステージが前記複数の候補窓から対象物体を含まない候補窓を棄却する複数のステージから、１つの処理対象ステージ又は２以上の処理対象ステージを決定し、
前記２以上の処理対象ステージが決定された場合、前記入力画像上に設定された複数の候補窓に対応する、前記２以上の処理対象ステージのそれぞれにおける複数のスコアを、前記複数の実行ユニットによって並列に算出し、
前記複数の候補窓のそれぞれに対応する、前記２以上の処理対象ステージにおける２以上のスコアに基づいて、前記２以上の処理対象ステージにおける前記複数の候補窓のそれぞれの通過又は棄却を、前記複数の実行ユニットによって並列に決定する並列処理方法。
【請求項９】
複数の実行ユニットを備えるコンピュータに画像処理を並列に実行させるプログラムであって、
入力画像上に複数の候補窓を設定する手順と、
直列に接続された複数のステージであって、各々のステージが前記複数の候補窓から対象物体を含まない候補窓を棄却する複数のステージから、１つの処理対象ステージ又は２以上の処理対象ステージを決定する手順と、
前記２以上の処理対象ステージが決定された場合、前記入力画像上に設定された複数の候補窓に対応する、前記２以上の処理対象ステージのそれぞれにおける複数のスコアを、前記複数の実行ユニットによって並列に算出する手順と、
前記複数の候補窓のそれぞれに対応する、前記２以上の処理対象ステージにおける２以上のスコアに基づいて、前記２以上の処理対象ステージにおける前記複数の候補窓のそれぞれの通過又は棄却を、前記複数の実行ユニットによって並列に決定する手順とを前記コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、並列処理を実行する情報処理装置および同装置で用いられる並列処理方法に関する。
【背景技術】
【０００２】
近年、マルチコアプロセッサや、複数のプロセッサを備えるＧＰＵを搭載したコンピュータが普及している。このようなコンピュータでは、マルチスレッドで動作するプログラムによる複数のスレッドのそれぞれを別々のプロセッサ（実行ユニット）に割り当て、並列で処理することができる。
【０００３】
また、コンピュータクラスタやクラウドコンピューティングでは、ネットワークを介して相互に接続された複数のコンピュータによって、同様に、プログラムを並列で処理することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−２７６２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、直列に接続された複数の識別器に対応する機能を有するプログラムのように、複数のステージの処理が順番に（直列に）行われるプログラムでは、あるステージの処理が前ステージの出力を用いて行われる。このような処理では、複数のステージに対応する複数の処理を並列して実行できず、複数のプロセッサを有効に利用できない可能性がある。
【０００６】
本発明は、直列に接続された複数のステージを含む処理を複数の実行ユニットを用いて実行する場合に、処理時間を短縮できる情報処理装置および並列処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
実施形態によれば、情報処理装置は、複数の実行ユニット、候補窓設定手段、ステージ決定手段、スコア算出手段、及び通過窓決定手段を具備する。候補窓設定手段は、入力画像上に複数の候補窓を設定する。ステージ決定手段は、直列に接続された複数のステージであって、各々のステージが前記複数の候補窓から対象物体を含まない候補窓を棄却する複数のステージから、１つの処理対象ステージ又は２以上の処理対象ステージを決定する。スコア算出手段は、前記２以上の処理対象ステージが決定された場合、前記入力画像上に設定された複数の候補窓に対応する、前記２以上の処理対象ステージのそれぞれにおける複数のスコアを、前記複数の実行ユニットによって並列に算出する。通過窓決定手段は、前記複数の候補窓のそれぞれに対応する、前記２以上の処理対象ステージにおける２以上のスコアに基づいて、前記２以上の処理対象ステージにおける前記複数の候補窓のそれぞれの通過又は棄却を、前記複数の実行ユニットによって並列に決定する。
【図面の簡単な説明】
【０００８】
【図１】実施形態に係る情報処理装置のシステム構成を示すブロック図。
【図２】同実施形態の情報処理装置に設けられた複数の実行ユニットによって実行される並列処理の例を説明するための図。
【図３】複数のステージを含む処理の例を説明するための図。
【図４】図３の処理におけるステージとスレッド数との関係を示す図。
【図５】同実施形態の情報処理装置によって実行される、複数のステージを含む処理の例を説明するための図。
【図６】図５の処理におけるステージとスレッド数との関係を示す図。
【図７】同実施形態の情報処理装置によって実行される画像処理プログラムの機能構成を示すブロック図。
【図８】同実施形態の情報処理装置によって用いられる辞書データの例を示す図。
【図９】同実施形態の情報処理装置によって用いられる、ピラミッド化された入力画像上に設定された候補窓の例を示す図。
【図１０】同実施形態の情報処理装置によって用いられるスケーリングされた候補窓の例を示す図。
【図１１】同実施形態の情報処理装置によって実行される複数のステージの並列処理を説明するための図。
【図１２】図１１の複数のステージの並列処理に基づく候補窓の選別の例を説明するための図。
【図１３】図１１の複数のステージの並列処理に基づく候補窓の選別の別の例を説明するための図。
【図１４】同実施形態の情報処理装置によって実行される、複数のステージを含む処理の別の例を説明するための図。
【図１５】同実施形態の情報処理装置によって実行される画像処理の手順の例を示すフローチャート。
【発明を実施するための形態】
【０００９】
以下、実施の形態について図面を参照して説明する。
【００１０】
図１は、一実施形態に係る情報処理装置の構成を示す。この情報処理装置は、例えば、パーソナルコンピュータ、又は各種電子機器に内蔵される組み込みシステムとして実現され得る。本コンピュータは、ＣＰＵ１０１、システムコントローラ１０２、主メモリ１０３、ＧＰＵ（Graphics Processing Unit）１０４、ビデオメモリ（ＶＲＡＭ）１０４Ａ、ＢＩＯＳ−ＲＯＭ１０５、ＨＤＤ１０６、ネットワークコントローラ１０７、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１０８、ＥＥＰＲＯＭ１３、キーボード１４、タッチパッド１５、カメラモジュール１６、表示装置（ＬＣＤ）１７等を備える。コンピュータ内の各部は、内部バスを介して相互に接続されている。
【００１１】
ＣＰＵ１０１は、本コンピュータ内の各種モジュールの動作を制御するプロセッサである。ＣＰＵ１０１は、ストレージデバイスであるＨＤＤ１０６から主メモリ１０３にロードされる各種ソフトウェアを実行する。これらソフトウェアには、オペレーティングシステム（ＯＳ）２０１、および各種アプリケーションプログラムが含まれている。アプリケーションプログラムには、画像処理プログラム２０２が含まれている。この画像処理プログラム２０２は、入力される画像データに対して所定の画像処理を施すためのプログラムであり、例えば、画像から対象物体が含まれる領域を検出する機能等を有する。ＣＰＵ１０１には、主メモリ１０３をアクセス制御するメモリコントローラも内蔵されている。
【００１２】
また、ＣＰＵ１０１は、ＢＩＯＳ−ＲＯＭ１０５に格納された基本入出力システム（ＢＩＯＳ）も実行する。ＢＩＯＳは、ハードウェア制御のためのプログラムである。
【００１３】
システムコントローラ１０２は、ＣＰＵ１０１のローカルバスと各種コンポーネントとの間を接続するデバイスである。システムコントローラ１０２は、ＰＣＩ  ＥＸＰＲＥＳＳ規格やＵＳＢ規格のシリアルバスなどを介して接続された各種コンポーネントとの通信を実行する機能も有している。
【００１４】
ネットワークコントローラ１０７は、例えば、Ｅｔｈｅｒｎｅｔ（登録商標）規格の有線通信や、ＩＥＥＥ  ８０２．１１規格の無線通信等を実行するように構成されたデバイスである。
【００１５】
エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１０８は、電力管理のためのエンベデッドコントローラと、キーボード（ＫＢ）１３、タッチパッド１５等を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。ＥＣ／ＫＢＣ１０８は、ユーザによるパワーボタンの操作に応じて本コンピュータを電源オンまたは電源オフする機能を有している。
【００１６】
ＧＰＵ１０４は、本コンピュータのディスプレイとして使用されるＬＣＤ１７を制御する表示コントローラである。このＧＰＵ１０４によって生成される表示信号はＬＣＤ１７に送られる。
【００１７】
また、ＧＰＵ１０４は、表示信号の生成のようなグラフィックス処理以外にも、画像処理や各種シミュレーション処理等の汎用的な演算も行うことができる。ＧＰＵ１０４は、例えば、スケジューラ２０と複数の実行ユニット（プロセッサ・コア）２１，２２，２３とを備える。ＧＰＵ１０４によってマルチスレッド化されたプログラムが実行される場合、スケジューラ２０は、そのプログラムに対応する処理が分割された複数のスレッドを複数の実行ユニット２１，２２，２３に割り当てる。このスレッドは、複数の実行ユニット２１，２２，２３のそれぞれに割り当てられる処理単位である。複数の実行ユニット２１，２２，２３を備えるＧＰＵ１０４では、割り当てられた複数のスレッドを並列に動作させることができる。上述の画像処理プログラム２０２は、ＧＰＵ１０４によって、画像処理プログラム２０２による処理が分割された複数のスレッドが並列に動作するマルチスレッド処理として実行される。
【００１８】
図２は、画像処理プログラム２０２が並列処理される例を示す。図２に示す例では、画像処理プログラム２０２が、画像上に設定された複数の候補窓（候補ウィンドウ）から、対象物体（例えば、人物の顔）を含む窓を検出する機能を有することを想定する。画像上に設定された候補窓が対象物体を含むか否かを判定するための処理は、候補窓毎に独立した処理である。そのため、複数の候補窓に対する処理（スレッド）のそれぞれは複数の実行ユニット２１，２２，２３に割り当てられ、並列に実行される。これにより、複数の候補窓に対する処理を順次実行する場合よりも高速に、対象物体を含む窓を検出することができる。
【００１９】
また、図３は直列に接続された複数のステージを含む処理（多段ステージ方式の処理）の例を示す。この処理では、直列に接続された複数の識別器のように、前段の処理結果を用いて後段の処理が行われる。例えば、上述の画像上に設定された複数の候補窓から対象物体を含む窓を検出する処理では、対象物体を含むと推定される候補窓がステージ毎に絞り込まれ（すなわち、ふるいにかけられ）、全ステージでの処理が完了した後に残った候補窓が対象物体を含む窓として取得される。
【００２０】
図３に示すように、各ステージでは、候補窓を通過させる（Ｙ）か、棄却する（Ｎ）かが決定される。例えば、第０ステージでは、入力画像上に設定された複数の候補窓のそれぞれを通過させるか、棄却するかが決定される。そして、第１ステージでは、第０ステージを通過した候補窓のそれぞれを通過させるか、棄却するかが決定される。各ステージにおいて棄却された候補窓は対象物体を含まない窓（“非顔”）として、また、全ステージを通過した候補窓は対象物体を含む窓（“顔”）として選別される。
【００２１】
各ステージでは、複数の候補窓に対する複数のスレッドのそれぞれが複数の実行ユニット２１，２２，２３に割り当てられ、並列に実行される。この処理では、後段のステージほど候補窓が絞り込まれていくので、図４に示すように、後段のステージほどスレッド数が減少する。そのため、あるステージでのスレッド数がＧＰＵ１０４に設けられる実行ユニット２１，２２，２３の数よりも少ない場合には、実行ユニット２１，２２，２３の一部がアイドル状態になってしまい、有効に利用されない可能性がある。
【００２２】
そのため本実施形態では、候補窓数に応じて複数のステージを並列に処理する。図５に示す例では、第６ステージから第９ステージまでの４つのステージが並列に処理されている。これら４つのステージの処理は、第５ステージの処理が完了した後にまとめて行われるので、これら４つのステージに対する入力はいずれも第５ステージを通過した候補窓である。そのため、第７ステージから第９ステージでは、本来、前段のステージで棄却される候補窓に対して処理が行われ、無駄な処理が発生する可能性がある。
【００２３】
しかし、図６に示すように、例えば、第６ステージから第９ステージまでの４つのステージをまとめることによって、同時に動作可能なスレッドの数が増えるので、ＧＰＵ１０４に設けられた実行ユニット２１，２２，２３を休みなく稼働させ、有効に利用することができる（すなわち、アイドル状態になる実行ユニット２１，２２，２３を減らすことができる）。そして、第６ステージから第９ステージを直列に（順番に）処理する場合よりも、処理全体に要する時間を短縮することができる。
【００２４】
図７を参照して、画像処理プログラム２０２の構成について説明する。この画像処理プログラム２０２は、入力画像に設定された複数の候補窓を複数のステージのそれぞれでふるいにかけることによって、対象物体を含む窓を検出する機能を有する。画像処理プログラム２０２はＧＰＵ１０４上で実行されることによって、スケジューラ２０及び複数の実行ユニット２１，２２，２３と協働して、上記機能に対応する複数のスレッドの並列処理を行う。
【００２５】
画像処理プログラム２０２は、例えば、辞書リード部３１、候補窓設定部３２、ステージ決定部３３、候補窓選別部３４、及び物体位置情報生成部３７を備える。また、候補窓選別部３４は、スコア算出部３５と通過窓決定部３６とを備える。
【００２６】
辞書リード部３１は、複数のステージのそれぞれで用いられる検出対象物体（例えば、人物の顔）の特徴を示す辞書データを記憶媒体（例えば、ＨＤＤ１０６）から読み出す。この辞書データは、検出対象物体の見た目を予め学習したデータを含む。辞書データは、例えば、対象物体を含む多数の画像を解析することによって得られた、対象物体の特徴を含む。この特徴には、例えば、Joint Haar-like特徴が用いられる。
【００２７】
Joint Haar-like特徴は、複数のHaar-like特徴の共起に基づく特徴である。Haar-like特徴は、図８に示すように、近接する矩形領域の明度差として表される。Haar-like特徴量は、明度値そのものを用いないので、照明条件の変動やノイズの影響を小さくすることができる。
【００２８】
より具体的には、Haar-like特徴量は、矩形領域の平均明度の差分値として求められるスカラ量であり、その値は明度勾配の強度を表す。そして、Haar-like特徴を用いた候補窓（サンプル）の識別では、このHaar-like特徴量に基づいて、例えば、判定対象のサンプルが検出すべき候補窓（正例）であれば１を返し、検出すべきでない候補窓（負例）であれば０を返すように規定されている。
【００２９】
Joint Haar-like特徴量は、共起関係を有する複数のHaar-like特徴量に基づく出力を束ねた値である。例えば、ある判定対象の候補窓に対する３つのHaar-like特徴に基づく識別によって、それぞれ１，１，０という値が返されたとき、Joint Haar-like特徴量は（１１０）２＝６と表される。以下では、判定対象の候補窓に対して算出された特徴量（例えば、Joint Haar-like特徴量）を、スコアとも称する。本実施形態のJoint Haar-like特徴を用いた識別では、例えば、処理対象のステージにおいて、ある候補窓のJoint Haar-like特徴量（スコア）がしきい値以上である場合に、その候補窓が処理対象のステージを通過することが決定され、Joint Haar-like特徴量（スコア）がしきい値未満である場合に、その候補窓を棄却することが決定される。  
Joint Haar-like特徴として用いられる共起関係を有する複数のHaar-like特徴は、ステージ毎に異なり、例えば、後段ほど、複雑な（例えば、組み合わせられた矩形数が多い）Haar-like特徴を含む。
【００３０】
辞書リード部３１は、読み出した辞書データを候補窓選別部３４（スコア算出部３５）に出力する。
【００３１】
また、候補窓設定部３２は、入力画像データを取得し、その入力画像データに基づく入力画像に複数の候補窓を設定する。この入力画像データは、例えば、記憶媒体（メモリ）やカメラモジュール１６を介して取得される。候補窓設定部３２は、例えば、入力画像上に、所定のサイズの候補窓を所定の間隔で設定する。
【００３２】
入力画像上における、対象物体の画像の大きさは未知である。つまり、入力画像上では、対象物体の画像が様々な大きさで含まれ得る。そのため、候補窓は、入力画像上での対象物体の画像のサイズが、対象物体の検出に影響しないように設定される。
【００３３】
図９および図１０は、入力画像上に設定される候補窓の例を示す。図９に示す例では、三段階のピラミッド構造を有する入力画像（すなわち、三段階にスケーリングされた入力画像）７１，７２，７３上に、同じサイズの候補窓７５，７６，７７が設定されている。また、図１０に示す例では、入力画像８１上に、三段階にスケーリングされた候補窓８５，８６，８７が設定されている。このような候補窓の設定により、入力画像上での対象物体の大きさに関わらず、入力画像から対象物体が含まれる領域を検出することができる。
【００３４】
ステージ決定部３３は、直列に接続された複数のステージであって、各々のステージが複数の候補窓から対象物体を含まない候補窓を棄却する複数のステージから、１つの処理対象ステージ又は２以上の処理対象ステージを決定する。この１つの処理対象ステージ又は２以上の処理対象ステージは、予め規定されたステージの処理順序及び組み合わせに基づいて決定されてもよいし、候補窓の数や、ＧＰＵ１０４に設けられた実行ユニット（プロセッサ・コア）２１，２２，２３の数等に基づいて動的に決定されてもよい。
【００３５】
ステージ決定部３３は、入力画像上に設定された候補窓を、決定された１つの処理対象ステージ又は２以上の処理対象ステージによって処理することを候補窓選別部３４に要求する。より具体的には、ステージ決定部３３は、先頭のステージでは、候補窓設定部３２によって設定された複数の候補窓を、決定された１つの処理対象ステージ又は２以上の処理対象ステージによって処理することを候補窓選別部３４に要求する。また、ステージ決定部３３は、先頭のステージ以外のステージでは、直前に処理されたステージ（前段のステージ）を通過した複数の候補窓を、決定された１つの処理対象ステージ又は２以上の処理対象ステージによって処理することを候補窓選別部３４に要求する。
【００３６】
候補窓選別部３４は、ステージ決定部３３による要求に応じて、１つの処理対象ステージにおける複数の候補窓の通過又は棄却を決定する処理、又は２以上の処理対象ステージにおける複数の候補窓の通過又は棄却を決定する処理を、複数の実行ユニット２１，２２，２３によって並列に実行する。候補窓選別部３４は、辞書データを用いて、候補窓が対象物体の見た目に近いか否かを判定することによって、その候補窓の通過又は棄却を決定する。候補窓選別部３４は、複数のスコア算出部（スコア算出スレッド）３５と、複数の通過窓決定部（通過窓決定スレッド）３６とを備え得る。
【００３７】
以下では、まず、１つの処理対象ステージにおける複数の候補窓の通過又は棄却を決定する処理について説明する。
【００３８】
スコア算出部３５は、ステージ決定部３３によって１つの処理対象ステージが決定された場合、入力画像上に設定された複数の候補窓（前段のステージを通過した候補窓）に対応する、１つの処理対象ステージにおける複数のスコア（特徴量）を、複数の実行ユニット２１，２２，２３によって並列に算出する。より具体的には、複数のスコア算出部（スコア算出スレッド）３５のそれぞれは、対象の候補窓に含まれる画素の画素値と、その１つの処理対象ステージのための対象物体の特徴を示す辞書データとを用いて、対象の候補窓のスコアを算出する。対象の候補窓のスコアは、１つの処理対象ステージにおけるスコアと、前段までのステージで算出されたスコアとの累積値であってもよい。複数のスコア算出スレッド３５は、それぞれ複数の実行ユニット２１，２２，２３に割り当てられ、並列に動作する。
【００３９】
通過窓決定部３６は、入力画像上に設定された複数の候補窓のそれぞれに対応する、１つの処理対象ステージにおける１つのスコアに基づいて、複数の候補窓のそれぞれの通過又は棄却を、複数の実行ユニットによって並列に決定する。より具体的には、複数の通過窓決定部（通過窓決定スレッド）３６のそれぞれは、対象の候補窓のスコアに基づいて、その候補窓の通過又は棄却を決定する。複数の通過窓決定スレッド３６は、それぞれ複数の実行ユニット２１，２２，２３に割り当てられ、並列に動作する。例えば、ある通過窓決定スレッド３６は、複数の候補窓の内の第１候補窓に対応する１つのスコアがしきい値以上である場合に、その候補窓が１つの処理対象ステージを通過することを決定し、１つのスコアがしきい値未満である場合に、その候補窓を棄却することを決定する。
【００４０】
通過窓決定部（通過窓決定スレッド）３６は、１つの処理対象ステージを通過することが決定された候補窓をステージ決定部３３に出力する。そして、通過窓決定部（通過窓決定スレッド）３６は、棄却が決定された候補窓を、入力画像上に設定された複数の候補窓から削除する。つまり、通過窓決定部３６は、現在の処理対象ステージによって絞り込まれた候補窓（候補窓群）を、後段のステージで処理される候補窓（通過窓）として、ステージ決定部３３に出力する。
【００４１】
次いで、２以上の処理対象ステージにおける複数の候補窓の通過又は棄却を決定する処理について説明する。
【００４２】
スコア算出部３５は、ステージ決定部３３によって２以上の処理対象ステージが決定された場合、入力画像上に設定された複数の候補窓（前段のステージを通過した候補窓）に対応する、２以上の処理対象ステージのそれぞれにおける複数のスコアを、複数の実行ユニット２１，２２，２３によって並列に算出する。複数のスコア算出部（スコア算出スレッド）３５のそれぞれは、対象の候補窓に含まれる画素の画素値と、２以上の処理対象ステージの各々のための対象物体の特徴を示す辞書データとを用いて、各処理対象ステージにおける対象の候補窓のスコアを算出する。対象の候補窓のスコアは、処理対象ステージにおけるスコアと、前段までのステージで算出されたスコアとの累積値であってもよい。複数のスコア算出スレッド３５は、それぞれ複数の実行ユニット２１，２２，２３に割り当てられ、並列に動作する。より具体的には、候補窓の数と処理対象のステージの数との積に相当する数のスコア算出スレッド（例えば、８０個の候補窓を並列化された４ステージで処理する場合、３２０スレッド）３５が、並列に動作する。
【００４３】
通過窓決定部３６は、複数の候補窓のそれぞれに対応する、２以上の処理対象ステージにおける２以上のスコアに基づいて、複数の候補窓のそれぞれの通過又は棄却を、複数の実行ユニットによって並列に決定する。通過窓決定部３６は、２以上の処理対象ステージにおける２以上のスコアに基づいて、その２以上の処理対象ステージのいずれかのステージで棄却されるべき候補窓をまとめて棄却する。
【００４４】
より具体的には、複数の通過窓決定部（通過窓決定スレッド）３６のそれぞれは、対象の候補窓に対応する、２以上の処理対象ステージにおける２以上のスコアに基づいて、その候補窓の通過又は棄却を決定する。例えば、通過窓決定スレッド３６は、ある候補窓に対応する２以上のスコアの合計がしきい値以上である場合に、その候補窓が２以上の処理対象ステージを通過することを決定し、２以上のスコアの合計がしきい値未満である場合に、その候補窓を棄却することを決定する。複数の通過窓決定スレッド３６は、それぞれ複数の実行ユニット２１，２２，２３に割り当てられ、並列に動作する。より具体的には、候補窓の数に相当する数の通過窓決定スレッド（例えば、８０個の候補窓の場合、８０スレッド）３６が、並列に動作する。
【００４５】
通過窓決定部（通過窓決定スレッド）３６は、２以上の処理対象ステージを通過した候補窓をステージ決定部３３に出力する。そして、通過窓決定部（通過窓決定スレッド）３６は、棄却が決定された候補窓を、入力画像上に設定された複数の候補窓から削除する。つまり、通過窓決定部３６は、現在の２以上の処理対象ステージによって絞り込まれた候補窓（候補窓群）を、後段のステージで処理される候補窓（通過窓）として、ステージ決定部３３に出力する。
【００４６】
１つの処理対象ステージにおける複数の候補窓の通過又は棄却が決定された後、又は２以上の処理対象ステージにおける複数の候補窓の通過又は棄却が決定された後、ステージ決定部３３は、最終ステージまで処理が完了したか否かを判定する。最終ステージまで処理が完了していないとき、ステージ決定部３３は、現在の１つの処理対象ステージ又は２以上の処理対象ステージに後続する、新たな処理対象のステージ（すなわち、新たな１つの処理対象ステージ又は２以上の処理対象ステージ）を決定する。そして、ステージ決定部３３は、通過窓決定部３６によって出力された候補窓、すなわち前段のステージの通過が決定した通過窓を、決定された新たな処理対象のステージによって処理することを候補窓選別部３４に要求する。新たな処理対象のステージによる処理では、通過窓に対して上記説明と同様の処理が施される。
【００４７】
すなわち、スコア算出部３５は、新たな１つの処理対象ステージが決定された場合、通過窓決定部３６によって通過が決定された複数の候補窓（通過窓）に対応する、新たな１つの処理対象ステージのそれぞれにおける複数のスコアを、複数の実行ユニット２１，２２，２３によって並列に算出する。そして、通過窓決定部３６は、複数の通過窓のそれぞれに対応する、新たな１つの処理対象ステージにおける１つのスコアに基づいて、新たな１つの処理対象ステージにおける複数の通過窓のそれぞれの通過又は棄却を、複数の実行ユニットによって並列に決定する。
【００４８】
また、スコア算出部３５は、新たな２以上の処理対象ステージが決定された場合、通過窓決定部３６によって通過が決定された複数の候補窓（通過窓）に対応する、新たな２以上の処理対象ステージのそれぞれにおける複数のスコアを、複数の実行ユニット２１，２２，２３によって並列に算出する。そして、通過窓決定部３６は、複数の通過窓のそれぞれに対応する、新たな２以上の処理対象ステージにおける２以上のスコアに基づいて、新たな２以上の処理対象ステージにおける複数の通過窓のそれぞれの通過又は棄却を、複数の実行ユニット２１，２２，２３によって並列に決定する。
【００４９】
最終ステージまで処理が完了しているとき、ステージ決定部３３は、物体位置情報生成部３７に対象物体の位置情報を生成することを要求する。最終ステージを通過した候補窓は、対象物体の画像を含む領域を示す。物体位置情報生成部３７は、最終ステージを通過した候補窓（候補窓群）に対応する領域に基づいて、対象物体の位置情報（位置情報群）を生成し、出力する。物体位置情報生成部３７は、例えば、最終ステージを通過した候補窓それぞれの座標やサイズを含む情報を生成する。なお、例えば、数画素以内のずれを有する２つの候補窓は、入力画像上の同一の対象物体を示す窓であることが想定される。そのため、物体位置情報生成部３７は、そのような候補窓を１つの候補窓にまとめて位置情報を生成してもよい。
【００５０】
以上の構成により、入力画像から対象物体を含む領域（候補窓）を検出することができる。そして、候補窓を絞り込むための直列に接続された複数のステージを含む画像処理を複数の実行ユニット２１，２２，２３によって実行する場合に、その処理時間を短縮することができる。
【００５１】
なお、上述の並列処理は、複数の実行ユニット２１，２２，２３を備えるＧＰＵ１０４に限らず、マルチコアＣＰＵやコンピュータクラスタ、クラウドサーバ群等によっても同様に実行され得、ＧＰＵ１０４上で実行された場合と同様の効果を得ることができる。
【００５２】
図１１を参照して、直列に接続された複数のステージを含む処理（多段ステージ方式の処理）において、２以上のステージが並列化される具体的な例について説明する。ここでは、第０ステージから第１０ステージを含む処理がＧＰＵ１０４に設けられた４００個の実行ユニット２１，２２，２３によって実行され、また、第６ステージから第９ステージが並列に実行されることを想定する。
【００５３】
第０ステージでは、候補窓設定部３２によって設定された４０００個の候補窓を選別するための４０００個のスレッドが、スケジューラ２０によって４００個の実行ユニット２１，２２，２３に割り当てられる。そして、第１ステージでは、第０ステージを通過した３０００個の候補窓を選別するための３０００個のスレッドが、スケジューラ２０によって４００個の実行ユニット２１，２２，２３に割り当てられる。第０ステージおよび第１ステージでは、スレッドの数が実行ユニット２１，２２，２３の数よりも多いので、実行ユニット２１，２２，２３はアイドル状態になることなく利用され、また、候補窓毎に独立した処理は並列に実行される。同様にして、第２ステージから第５ステージのそれぞれでも、前段のステージを通過した候補窓を選別するためのスレッドが、４００個の実行ユニット２１，２２，２３に割り当てられる。
【００５４】
そして、第５ステージを８０個の候補窓が通過した後、第６ステージから第９ステージまでの４つのステージが並列して処理される。より具体的には、並列化された第６ステージから第９ステージでは、第５ステージを通過した８０個の候補窓をそれら４つのステージで選別するための３２０（＝８０×４）個のスレッドが、４００個の実行ユニット２１，２２，２３に割り当てられる。これにより、第６ステージだけが処理される場合に比べ、アイドル状態になる実行ユニット２１，２２，２３の数を減らすことができるので、実行ユニット２１，２２，２３を有効に利用することができる。
【００５５】
また、第７ステージから第９ステージでは、並列化されない場合には前段のステージで棄却される候補窓に対しても処理が行われる。つまり、第７ステージから第９ステージでは、ステージが直列に処理される場合には発生しない無駄な処理が発生する。例えば、第６ステージを５０個の候補窓が通過する場合、第７ステージでは、並列化されない場合には５０個の候補窓に対する処理が行われるが、並列化された場合には第５ステージを通過した８０個の候補窓に対する処理が行われる。したがって、並列化された場合には、候補窓３０個分だけ無駄な処理が発生する。
【００５６】
しかし、第６ステージから第９ステージまでの４つのステージを並列化することによって、同時に動作可能なスレッドの数が８０個から３２０個に増えるので、ＧＰＵ１０４に設けられた４００個の実行ユニット２１，２２，２３による処理の並列性を向上させることができる。したがって、無駄な処理が発生したとしても、第６ステージだけの処理が実行される場合にはアイドル状態になってしまう実行ユニット２１，２２，２３を、休みなく動作させ、有効に利用することができる。そして、第６ステージから第９ステージが直列に処理される場合よりも早いタイミングで、第７ステージから第９ステージに相当する処理結果を取得することができるので、処理全体に要する時間を短縮することができる。
【００５７】
第１０ステージでは、第６ステージから第９ステージまでを通過した３個の候補窓に対する処理が行われる。
【００５８】
上述の第６ステージから第９ステージまでをまとめた並列処理では、各候補窓の通過又は棄却は、図１２および図１３に示すような方法によって判定される。
【００５９】
図１２に示す例では、候補窓毎に、並列処理によって算出されたステージ毎のスコアが合計される。そして、合計がしきい値以上である場合に、候補窓が第６ステージから第９ステージまでを通過することが決定され、合計がしきい値未満である場合に、その候補窓の棄却が決定される。例えば、しきい値が３０に設定されている場合、図１２に示すように、候補窓１及び候補窓８０は棄却が決定され、候補窓２は通過が決定されている。
【００６０】
また、図１３に示す例では、並列処理によって算出されたスコアに基づいて、各候補窓のステージ毎の通過又は棄却が決定される。例えば、ある候補窓のあるステージでのスコアがしきい値以上である場合に、その候補窓が当該ステージを通過することが決定され、スコアがしきい値未満である場合に、その候補窓が当該ステージで棄却されることが決定される。そして、並列化された全てのステージ（ここでは、第６ステージから第９ステージ）において“通過”が決定されている候補窓（候補窓２）が、それらステージを通過し、並列化されたステージの内の少なくとも１つのステージにおいて“棄却”が決定されている候補窓（候補窓１及び候補窓８０）が棄却される。
【００６１】
なお、図１４に示すように、複数のステージをまとめた並列処理は複数回行われてもよい。図１４に示す例では、第０ステージから第２ステージと、第３ステージから第５ステージと、第６ステージから第９ステージとがそれぞれに並列に処理されている。並列に処理される２以上のステージは、例えば、前段のステージを通過した候補窓の数（残存候補窓の数）と、並列処理の対象のステージ数とを掛けた値（並列度）が一定になるように、ステージ決定部３３によって決定される。
【００６２】
なお、ステージ決定部３３は、画像処理プログラム２０２の実行時に利用可能なリソースを示す情報（例えば、実行ユニット２１，２２，２３の数）に応じて、並列処理の対象のステージを動的に変更してもよい。
【００６３】
図１５のフローチャートを参照して、画像処理の手順の例について説明する。以下では、この画像処理が、入力画像から対象物体を含む領域を検出するための複数のステージが設けられた処理であることを想定する。
【００６４】
まず、辞書リード部３１は、記憶媒体から検出対象物体の辞書データを読み出す（ブロックＢ１１）。辞書データは、検出対象物体を検出するための特徴群を含む。また、候補窓設定部３２は、入力画像データを読み出し（ブロックＢ１３）、読み出した入力画像データに対応する入力画像に複数の候補窓を設定する（ブロックＢ１５）。
【００６５】
次いで、ステージ決定部３３は、１以上の処理対象ステージを決定する（ブロックＢ１７）。１以上の処理対象ステージは、予め規定されたステージの処理順序及び組み合わせに基づいて決定されてもよいし、候補窓の数やＧＰＵ１０４に設けられた実行ユニット（プロセッサ・コア）の数等に基づいて動的に決定されてもよい。
【００６６】
そして、決定された１以上の処理対象ステージに対応する処理が実行される。つまり、決定された１つの処理対象のステージの処理、又は決定された２以上の処理対象のステージが並列化された処理が実行される。
【００６７】
より具体的には、スコア算出部３５は、決定された１以上の処理対象ステージのそれぞれにおける、各候補窓のスコアを並列に算出する（ブロックＢ１９）。つまり、複数の候補窓に対応する複数のスコアを算出するための複数のスレッドがＧＰＵ１０４に設けられた複数の実行ユニットに割り当てられることによって、複数のスコアが並列に算出される。スコアは、例えば、対象物体の見た目に近い特徴量を有する候補窓では高く、対象物体の見た目から遠い特徴量を有する候補窓では低くなる。
【００６８】
通過窓決定部３６は、算出されたスコアに基づいて、各候補窓の通過又は棄却を並列に判定する。すなわち、通過窓決定部３６は、候補窓のスコアがしきい値以上であるか否かを判定し（ブロックＢ２１）、スコアがしきい値以上である場合（ブロックＢ２１のＹＥＳ）に、その候補窓を通過させ（ブロックＢ２３）、スコアがしきい値未満である場合（ブロックＢ２１のＮＯ）に、その候補窓を棄却する（ブロックＢ２５）するスレッドを、複数の候補窓について並列に動作させる。
【００６９】
次いで、ステージ決定部３３は、最終ステージまで処理が完了したか否かを判定する（ブロックＢ２７）。最終ステージまで処理が完了している場合（ブロックＢ２７のＹＥＳ）、物体位置情報生成部３７は、残っている候補窓（すなわち、全ステージを通過した候補窓）に基づいて、対象物体が含まれる入力画像上の位置（領域）を示す位置情報を生成する（ブロックＢ２９）。一方、最終ステージまで処理が完了していない場合（ブロックＢ２７のＮＯ）、ブロックＢ１７に戻ることによって、後続する１以上のステージに対応する処理が実行される。
【００７０】
なお、以上の説明における入力画像は、映像（動画像）を構成する連続した映像フレームの内の１つの映像フレームであってもよい。その場合、１つ前の映像フレームと現在の映像フレームとでは、画像内での対象物体の数やその配置が類似していることが想定される。そのため、ステージ決定部３３は、並列化する２以上の処理対象ステージを、１つ前の映像フレームを処理した際の各ステージでの候補窓の数（残存候補窓数）に基づいて決定してもよい。
【００７１】
しかし、１つ前の映像フレームと現在の映像フレームとの間で、シーンの切り替わり（シーンチェンジ）が発生している場合には、１つ前の映像フレームと現在の映像フレームとでは、画像内での対象物体の数や配置が類似していないことが想定される。そのため、１つ前の映像フレームと現在の映像フレームと間の画素値の相関や、フレーム間での音声の途切れ等に基づいて、１つ前の映像フレームと現在の映像フレームとの間でシーンの切り替わりがあったか否かを判定して、並列化する２以上の処理対象ステージの決定に、１つ前の映像フレームに関する情報を用いるかどうかを判断する。すなわち、１つ前の映像フレームと現在の映像フレームとの間でシーンの切り替わりがあった場合（例えば、フレーム間の画素値の相関が低い場合）には、１つ前の映像フレームに対応する情報を用いずに、並列化する２以上の処理対象ステージを決定し、１つ前の映像フレームと現在の映像フレームとの間でシーンの切り替わりがない場合（例えば、フレーム間の画素値の相関が高い場合）には、１つ前の映像フレームに対応する情報を用いて、並列化する２以上の処理対象ステージを決定する。
【００７２】
以上説明したように、本実施形態によれば、直列に接続された複数のステージを含む処理を複数の実行ユニットを用いて実行する場合に、処理時間を短縮することができる。本実施形態では、複数のステージの内の２以上のステージをまとめて実行して、同時に動作可能なスレッドの数を増やすことによって、ＧＰＵ１０４に設けられた実行ユニット２１，２２，２３を休みなく稼働させ、有効に利用することができる。そして、まとめられた２以上のステージを直列に順次処理する場合よりも、処理全体に要する時間を短縮することができる。
【００７３】
本実施形態の画像処理の手順は全てソフトウェアによって実行することができる。このため、画像処理の手順を実行するプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのプログラムを複数の実行ユニットを備えるコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
【００７４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７５】
２０２…画像処理プログラム、３１…辞書リード部、３２…候補窓設定部、３３…ステージ決定部、３４…候補窓選別部、３５…スコア算出部、３６…通過窓決定部、３７…物体位置情報生成部。
【図１】
2014063315.tif 000003
【図２】
2014063315.tif 000004
【図３】
2014063315.tif 000005
【図４】
2014063315.tif 000006
【図５】
2014063315.tif 000007
【図６】
2014063315.tif 000008
【図７】
2014063315.tif 000009
【図８】
2014063315.tif 000010
【図９】
2014063315.tif 000011
【図１０】
2014063315.tif 000012
【図１１】
2014063315.tif 000013
【図１２】
2014063315.tif 000014
【図１３】
2014063315.tif 000015
【図１４】
2014063315.tif 000016
【図１５】
2014063315.tif 000017