(57)【特許請求の範囲】
【請求項１】
処理対象である複数の抽出候補データ列に対して、入力判別条件式の内１つまたは複数の判別条件式を計算することによって、連続データ判別処理を行う連続候補データ判別手段と、
前記各抽出候補データ列を示すインデックス情報が含まれる候補ＩＤリストで指定される抽出候補データ列に対して、入力判別条件式の内１つまたは複数の条件式を計算することによって、不連続データ判別処理を行う不連続候補データ判別手段と、
前記連続候補データ判別手段が行った判別結果に基づいて、前記候補ＩＤリストに含まれる候補ＩＤを更新するかどうかを判断する候補ＩＤ更新判定手段と、
前記候補ＩＤ更新判定手段が前記候補ＩＤリストを更新すると判断した場合、および前記不連続候補データ判別手段の実行後に、前記候補ＩＤリストの更新を行う候補ＩＤ更新手段と、を備え、
前記連続候補データ判別手段、前記不連続候補データ判別手段、前記候補ＩＤ更新判定手段、および前記候補ＩＤ更新手段による処理を複数回反復処理することによって、前記複数の抽出候補データ列のうち、前記候補ＩＤ更新手段によって更新された候補ＩＤに対応する候補データが抽出されることを特徴とするデータ処理装置。
【請求項２】
当該データ処理装置は、候補ＩＤ更新判定閾値を保持し、
前記候補ＩＤ更新判定手段は、前記連続候補データ判別手段が行った判別の結果、全抽出候補数のうちの残存候補数の割合が、前記候補ＩＤ更新判定閾値を下回ったときに、前記候補ＩＤリストを更新すると判定する、
ことを特徴とする、請求項１に記載のデータ処理装置。
【請求項３】
当該データ処理装置が保持する前記候補ＩＤ更新判定閾値は、データ処理装置の構成に応じた複数の値であり、
前記候補ＩＤ更新判定手段は、当該データ処理装置の構成に応じた、前記候補ＩＤ更新判定閾値を選択して、更新判定処理を行う、
ことを特徴とする、請求項２に記載のデータ処理装置。
【請求項４】
前記連続候補データ判別手段および前記不連続候補データ判別手段の実行にかかったコストを計測して、前記候補ＩＤ更新判定閾値を更新するコスト計測手段を更に有する、
ことを特徴とする、請求項２または３に記載のデータ処理装置。
【請求項５】
当該データ処理装置は、連続候補データ判別コスト係数および不連続候補データ判別コスト係数を保持し、
前記候補ＩＤ更新判定手段は、前記連続候補データ判別手段が行った判別の結果に基づいて、残存候補数を数え上げ、数え上げた残存候補数と前記不連続候補データ判別コスト係数とから不連続候補データ判別コストを算出するとともに、全抽出候補数と前記連続候補データ判別コスト係数とから連続候補データ判別コストを算出し、前記不連続候補データ判別コストの方が前記連続候補データ判別コストより小さくなるときに、前記候補ＩＤリストを更新すると判定する、
ことを特徴とする、請求項１に記載のデータ処理装置。
【請求項６】
当該データ処理装置が保持する前記連続候補データ判別コスト係数および不連続候補データ判別コスト係数は、データ処理装置の構成に応じた複数の値であり、
前記候補ＩＤ更新判定手段は、当該データ処理装置の構成に応じた、前記連続候補データ判別コスト係数および不連続候補データ判別コスト係数を選択して、更新判定処理を行う、
ことを特徴とする、請求項５に記載のデータ処理装置。
【請求項７】
前記連続候補データ判別手段および前記不連続候補データ判別手段の実行にかかったコストを計測して、前記連続候補データ判別コスト係数および不連続候補データ判別コスト係数を更新するコスト計測手段を更に有する、
ことを特徴とする、請求項５または６に記載のデータ処理装置。
【請求項８】
データ処理装置が、複数の抽出候補データ列および複数の判別条件式情報を入力し、抽出候補データ列のうち、全ての判別条件式を満たすような候補データのみを抽出するようなデータ処理方法において、
処理対象である複数の抽出候補データ列に対して、入力判別条件式の内１つまたは複数の判別条件式を計算することによって、連続データ判別処理を行い、
前記判別条件式を用いた判定の結果に基づいて、各抽出候補データ列を示すインデックス情報が含まれる候補ＩＤリストに含まれる更新ＩＤを更新するかどうかを判断し、
前記候補ＩＤリストを更新すると判断しない場合は、次の判別条件式に対しては、前記の判別条件式を用いた条件判定と、前記候補ＩＤ更新判定を行い、
前記候補ＩＤリストを更新すると判断した場合は、前記候補ＩＤリストの更新を行い、
更新された更新候補ＩＤリストで指定される抽出候補データ列に対して、入力判別条件式の内１つまたは複数の条件式を計算することによって、不連続データ判別処理を行い、
上述した処理を複数回反復処理することによって、更新された候補ＩＤに対応する候補データが抽出されるデータ処理方法。
【請求項９】
コンピュータに、複数の抽出候補データ列および複数の判別条件式情報を入力し、抽出候補データ列のうち、全ての判別条件式を満たすような候補データのみを抽出させるデータ処理プログラムであって、
処理対象である複数の抽出候補データ列に対して、入力判別条件式の内１つまたは複数の判別条件式を計算することによって、連続データ判別処理を行う連続候補データ判別処理と、
各抽出候補データ列を示すインデックス情報が含まれる候補ＩＤリストで指定される抽出候補データ列に対して、入力判別条件式の内１つまたは複数の条件式を計算することによって、不連続データ判別処理を行う不連続候補データ判別処理と、
前記連続候補データ判別処理が行った判別結果に基づいて、前記候補ＩＤリストに含まれる候補ＩＤを更新するかどうかを判断する候補ＩＤ更新判定処理と、
前記候補ＩＤ更新判定処理が前記候補ＩＤリストを更新すると判断した場合と、前記不連続候補データ判別処理の実行後に、前記候補ＩＤリストの更新を行う候補ＩＤ更新処理と、
を前記コンピュータに実行させ、
前記連続候補データ判別処理、前記不連続候補データ判別処理、前記候補ＩＤ更新判定処理、および前記候補ＩＤ更新処理を複数回反復処理することによって、更新された候補ＩＤに対応する候補データを抽出させるデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、データ処理方法、およびデータ処理プログラムに関する。
【背景技術】
【０００２】
近年、様々なデータ処理（例えば、画像処理、音声処理、その他統計処理等）において、データを抽出する抽出計算が用いられている。ここで、「抽出計算」とは、多数の入力データ列に対して、複数の判別条件の全てを満たすような入力データのみを抽出する計算のことをいう。代表的な抽出計算として、画像データから、顔などの特定のオブジェクトを検出する検出処理が知られている。
【０００３】
非特許文献１は、検出処理の手法を開示している。この非特許文献１に開示された検出処理の手法では、次のようにして特定のオブジェクトの検出を行う。まず、検出処理の手法は、画像データをウィンドウと呼ばれる部分領域に分割する処理を行う。引き続いて、検出処理の手法は、それぞれのウィンドウに対して、特定の画素領域から求めたスコアとあらかじめ定めた閾値と比較する処理を行う。最後に、検出処理の手法は、これら処理を複数回繰り返すことで、特定のオブジェクトの検出を行っている。
【０００４】
図１５は、非特許文献１に開示された検出処理の手法を、コンピュータで動作させるためのプログラムとして記述した場合のコードを示す図である。
【０００５】
また、特許文献１は、上記の検出処理を、並列に処理する手法を開示している。特許文献１に開示された手法では、画素領域からスコアを計算するという処理（図１５の内側ループに相当）を、並列に実行している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−２０４９４７号公報
【非特許文献】
【０００７】
【非特許文献１】Rapid Object Detection using a Boosted Cascade of Simple Features, Conference of Computer Vision And Pattern Recognition, 2001.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記特許文献１に開示された並列検出処理では、全ての候補ウィンドウに対して、全てのスコア計算および閾値判別をすることになり、計算量が大きくなるという問題がある。
【０００９】
図１５で示す通り、複数回のスコア計算および閾値判別をする間で、一度閾値判定からもれた場合は、当該ウィンドウについては、残りのスコア計算および閾値判別をする必要がない。そのため、上記特許文献１に開示の並列検出処理は、計算量が大きくなるといえる。
【００１０】
本発明の目的は、上述したいずれかの課題を解決する、データ処理装置、データ処理方法、およびデータ処理プログラムを提供することにある。
【課題を解決するための手段】
【００１１】
本発明のデータ処理装置は、処理対象である複数の抽出候補データ列に対して、入力判別条件式の内１つまたは複数の判別条件式を計算することによって、連続データ判別処理を行う連続候補データ判別手段と；前記各抽出候補データ列を示すインデックス情報が含まれる候補ＩＤリストで指定される抽出候補データ列に対して、入力判別条件式の内１つまたは複数の条件式を計算することによって、不連続データ判別処理を行う不連続候補データ判別手段と；前記連続候補データ判別手段が行った判別結果をもとに、前記候補ＩＤリストに含まれる候補ＩＤを更新するかどうかを判断する候補ＩＤ更新判定手段と；前記候補ＩＤ更新判定手段が候補ＩＤリストを更新すると判断した場合や、前記不連続候補データ判別手段の実行後に、候補ＩＤリストの更新を行う候補ＩＤ更新手段と；を備え、前記連続候補データ判別手段、前記不連続候補データ判別手段、前記候補ＩＤ更新判定手段、および前記候補ＩＤ更新手段による処理を複数回反復処理することによって、前記複数の抽出候補データ列のうち、前記候補ＩＤ更新手段によって更新された候補ＩＤに対応する候補データが抽出されることを特徴とする。
【００１２】
本発明のデータ処理方法は、データ処理装置が、複数の抽出候補データ列および複数の判別条件式情報を入力し、抽出候補データ列のうち、全ての判別条件式を満たすような候補データのみを抽出するようなデータ処理方法であって、処理対象である抽出候補データ列に対して、入力判別条件式の内１つまたは複数の判別条件式を計算することによって、連続データ判別処理を行い；前記判別条件式を用いた判定の結果に基づいて、各抽出候補データ列を示すインデックス情報が含まれる候補ＩＤリストで指定される候補ＩＤを更新するかどうかを判断し；前記候補ＩＤリストを更新すると判断しない場合は、次の判別条件式に対しては、前記の判別条件式を用いた条件判定と、前記候補ＩＤ更新判定を行い；前記候補ＩＤリストを更新すると判断した場合は、候補ＩＤリストの更新を行い；前記候補ＩＤリストで指定される抽出候補データ列に対して、入力判別条件式の内１つまたは複数の条件式を計算することによって、不連続データ判別処理を行い、これら処理を複数回反復処理することによって、更新された候補ＩＤに対応する候補データが抽出される。
【００１３】
本発明のデータ処理プログラムは、コンピュータに、複数の抽出候補データ列および複数の判別条件式情報を入力し、抽出候補データ列のうち、全ての判別条件式を満たすような候補データのみを抽出させるデータ処理プログラムであって、処理対象である抽出候補データ列に対して、入力判別条件式の内１つまたは複数の判別条件式を計算することによって、連続データ判別処理を行う連続候補データ判別処理と；各抽出候補データ列を示すインデックス情報が含まれる候補ＩＤリストで指定される抽出候補データ列に対して、入力判別条件式の内１つまたは複数の条件式を計算することによって、不連続データ判別処理を行う不連続候補データ判別処理と；前記連続候補データ判別処理が行った判別結果に基づいて、候補ＩＤリストに含まれる候補ＩＤを更新するかどうかを判断する候補ＩＤ更新判定処理と；前記候補ＩＤ更新判定処理が候補ＩＤリストを更新すると判断した場合と、前記不連続候補データ判別処理の実行後に、候補ＩＤリストの更新を行う候補ＩＤ更新処理と；を前記コンピュータに実行させ、前述した連続候補データ判別処理、不連続候補データ判別処理、候補ＩＤ更新判定処理、および候補ＩＤ更新処理を複数回反復処理することによって、更新された候補ＩＤに対応する候補データを抽出させる。
【発明の効果】
【００１４】
本発明によれば、連続候補データ判別処理と不連続候補データ判別処理とのどちらを実施するかどうかを切り替えられるようにし、各判別式の判別処理実行後に、次の判別式の判別処理の実行を動的判断させることで、より効率のよい並列判別処理を選択・実行できる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施形態に係るデータ処理装置の構成を例示するブロック図である。
【図２】本発明の第１の実施形態に係るデータ処理装置の機能的な構成を例示するブロック図である。
【図３】本発明の第１の実施形態に係るデータ処理装置の動作の概要を例示するフローチャートである。
【図４】本発明の第１の実施形態に係るデータ処理装置を構成する記憶部に記憶されたデータの具体例を示す図である。
【図５】本発明の第１の実施形態に係る、候補データ判別条件式情報の具体例を表す図である。
【図６】本発明の第１の実施形態に係る、候補ＩＤ更新判定閾値情報の具体例を表す図である。
【図７】本発明の第１の実施形態に係る、連続候補データ判別部で実行される連続候補データ判別処理の概要を例示するプログラムの一例である。
【図８】本発明の第１の実施形態に係る、候補ＩＤ更新判定部で実行される候補ＩＤ更新判定処理の概要を例示するプログラムの一例である。
【図９】本発明の第１の実施形態に係る、候補ＩＤ更新部で実行される候補ＩＤ更新処理の概要を例示するプログラムの一例である。
【図１０】本発明の第１の実施形態に係る、候補ＩＤ更新処理の前後の、記憶部に記憶されたデータの一部を示す図である。
【図１１】本発明の第１の実施形態に係る、不連続候補データ判別部で実行される不連続候補データ判別処理の概要を例示するプログラムの一例である。
【図１２】本発明の第２の実施形態に係る、候補ＩＤ更新判定閾値情報の具体例を表す図である。
【図１３】本発明の第３の実施形態に係る、候補ＩＤ更新判定閾値情報の具体例を表す図である。
【図１４】本発明の第４の実施形態に係るデータ処理装置の機能的な構成を例示するブロック図である。
【図１５】非特許文献１の検出処理の手法を、コンピュータで動作させるためのプログラムとして記述した場合のコードの一例である。
【発明を実施するための形態】
【００１６】
以下、本発明を実施する形態について図面を参照して詳細に説明する。以下の各実施形態に記載されている構成は単なる例示であり、本発明の技術範囲はそれらには限定されない。
【００１７】
次に、発明を実施するための形態について図面を参照して詳細に説明する。
【００１８】
［第１の実施形態］
［構成の説明］
本発明の第１の実施形態に係るデータ処理装置について、図面を参照して詳細に説明する。
【００１９】
図１は、本第１の実施形態におけるデータ処理装置の機能的な構成を例示するブロック図である。
【００２０】
図１を参照すると、本発明の第１の実施形態におけるデータ処理装置１００は、演算処理部１０１と、記憶部１０２と、入力部１０３とを備える。データ処理装置１００を構成するこれらの構成要素の間は、任意の通信手段（例えば、通信バスや通信ネットワーク等）により、相互に通信可能に接続されている。以下、それぞれの構成要素について概要を説明する。
【００２１】
演算処理部１０１は、例えば、後述する記憶部１０２に記憶されたデータに対して任意の演算処理を実行可能な、専用又は汎用のプロセッサ（ＣＰＵ（central processing unit）等）である。演算処理部１０１は、例えば、記憶部１０２に記憶された任意のソフトウェア・プログラム（コンピュータ・プログラム、以下単に「プログラム」と称する場合がある）を実行可能であってもよい。なお、プログラムは、記憶部１０２に限定されず、データ処理装置１００の内外の任意の装置（不図示）に保持されてもよい。この場合、必要に応じて演算処理部１０１が当該プログラムを読み出して実行する。
【００２２】
記憶部１０２は、任意のデータを記憶可能な記憶デバイス（メモリ）である。記憶部１０２は、半導体記憶装置等により実現された揮発性あるいは不揮発性のメモリデバイスにより実現されてもよい。なお、記憶部１０２は、上記に限定されず、任意の記憶デバイス（例えば、磁気記憶デバイス、光磁気記憶デバイス、光記憶デバイス、等）により実現可能である。
【００２３】
入力部１０３は、データ処理装置１００に対して任意のデータを入力可能な入力装置である。入力部１０３は、データ処理装置１００の構成に応じて、任意の入力装置を用いて実現可能である。即ち、入力部１０３は、例えば、ネットワークを介して任意のデータを入力可能なネットワークデバイスでもよい。また、入力部１０３は、例えば、データ処理装置１００のユーザが直接データを入力可能な、インタフェース装置であってもよい。また、入力部１０３は、例えば、任意の記憶媒体（記録媒体）を介してデータを入力可能な、記憶媒体（記録媒体）の読み込みデバイスであってもよい。本第１の実施形態においては、入力部１０３を介して、処理対象のデータ集合である入力データがデータ処理装置１００に入力され、その入力データが記憶部１０２に保持（記憶）される。
【００２４】
上記のように構成された本第１の実施形態におけるデータ処理装置１００は、入力データ列に対して、複数の判別条件の全てを満たすような入力データ列のみを抽出する抽出処理を実行する。より具体的には、本第１の実施形態におけるデータ処理装置１００においては、演算処理部１０１が、記憶部１０２に記憶されたデータ（入力データ列）に対し、抽出処理を実行する。この場合、演算処理部１０１は、特定のプログラムを実行することにより、上記抽出処理を実行してもよい。これに限定されず、演算処理部１０１は、予め組み込まれたロジック等により、上記抽出処理を実行してもよい。
【００２５】
以下、本第１の実施形態におけるデータ処理装置１００の動作について、図面を参照して説明する。
【００２６】
図２は、本第１の実施形態におけるデータ処理装置１００の演算処理部１０１における動作の概要を例示する処理ブロック図である。図２に例示するように、データ処理装置１００の演算処理部１０１における主要な構成要素は、大別して、連続候補データ判別部２０１、不連続候補データ判別部２０２、候補ＩＤ（identification; identity）更新判定部２０３、および候補ＩＤ更新部２０４から成る。
【００２７】
後述するように、連続候補データ判別部２０１、不連続候補データ判別部２０２、候補ＩＤ更新判定部２０３、および候補ＩＤ更新部２０４の組合せが、入力データ列に対して、複数の判別条件の全てを満たすような入力データ列のみを抽出する抽出手段として働く。
【００２８】
連続候補データ判別部２０１は、後述する連続候補データ判別処理を実行する。不連続候補データ判別部２０２は、後述する不連続候補データ判別処理を実行する。候補ＩＤ更新判定部２０３は、後述する候補ＩＤ更新判定処理を実行する。候補ＩＤ更新部２０４は、後述する候補ＩＤ更新処理を実行する。
【００２９】
連続候補データ判別部２０１は、入力となる全抽出候補データ列に対して、入力判別条件式の内１つまたは複数の判別条件式を計算することによって、連続データ判別処理を行う。不連続候補データ判別部２０２は、各抽出候補データ列を示すインデックス情報が含まれる候補ＩＤリストを受け取り、この候補ＩＤリストで指定される抽出候補データ列のみに対して、入力判別条件式の内１つまたは複数の条件式を計算することによって、不連続データ判別処理を行う。候補ＩＤ更新判定部２０３は、連続候補データ判別部２０１が行った判別結果に基づいて、候補ＩＤリストに含まれる候補ＩＤを更新するかどうかを判断する。候補ＩＤ更新部２０４は、候補ＩＤ更新判定部２０３が候補ＩＤリストを更新すると判断した場合、および不連続候補データ判別部２０２の実行後に、候補ＩＤリストの更新を行う。
【００３０】
なお、記憶部１０２（図１）は、候補データ判別条件式情報５００と候補ＩＤ更新判定閾値情報６００とを保持している。
【００３１】
また、図３は、データ処理装置１００の動作の概要を例示するフローチャートである。なお、図３に例示するフローチャートにおける各処理の実行順序は、処理結果に影響を与えない範囲で変更されてもよい。各ステップにおける処理については、後述する。
【００３２】
図４は、本実施形態におけるデータ処理装置１００における、記憶部１０２に記憶されたデータの一部を例示する図である。
【００３３】
図４に例示するように、記憶部１０２は、入力データ配列４０１、全候補数４０２、現候補数４０３、候補ＩＤ配列４０４、候補フラグ配列４０５、及び候補ＩＤ更新済フラグ４０６を保持する。入力データ配列４０１、候補ＩＤ配列４０４、及び候補フラグ配列４０５は、それぞれ連続した記憶領域に配置される。連続した記憶領域は、記憶領域を構成するアドレス等が物理的に連続した記憶領域であってもよく、論理的に連続した記憶領域であってもよい。
【００３４】
入力データ配列４０１は、ｍ個（ｍは自然数）のデータの集合（入力データ）を保持する配列である。以下、入力データ配列４０１を「入力データ配列ｄ」と表し、入力データ配列４０１のｉ番目の要素（ｉは０以上の整数）をｄ[ｉ]と表す場合がある。
【００３５】
全候補数４０２および現候補数４０３は、それぞれ順に、抽出候補の総数および任意の参照時点での抽出候補の数である。全候補数４０２がｎ（ｎは自然数）の場合、データ処理の開始時には、全候補数４０２および現候補数４０３には、ｎが入っている。
【００３６】
候補ＩＤ配列４０４は、最大ｎ個の抽出候補を示す候補ＩＤを保持する配列である。以下、候補ＩＤ配列４０４を「候補ＩＤ配列ｐ」と表し、候補ＩＤ配列４０４のｉ番目の要素（ｉは０以上の整数）をｐ[ｉ]と表す場合がある。なお、データ処理の開始時には、候補ＩＤ配列ｐは、ｐ[ｉ]＝ｉとなる値が入っている。
【００３７】
候補フラグ配列４０５は、候補ＩＤ配列４０４と同サイズの配列である。以下、候補フラグ配列４０５を「候補ＩＤ配列ｑ」と表し、候補フラグ配列４０５のｉ番目の要素（ｉは０以上の整数）をｑ[ｉ]と表す場合がある。候補フラグの要素ｑ[ｉ]は、候補ＩＤ配列４０４の要素ｐ[ｉ]が示す候補ＩＤが、判別処理の結果、抽出候補であるかどうかを示す、ｔｒｕｅもしくはｆａｌｓｅをとり、順に、“候補である”、もしくは、“候補ではない”を意味する。データ処理の開始時には、候補フラグ配列４０５の全要素には、ｔｒｕｅが入っている。
【００３８】
現在候補数４０３は、ｎ候補である。
【００３９】
候補ＩＤ更新済フラグ４０６は、候補ＩＤ配列４０５が初期状態から更新されたかどうかを示すフラグである。候補ＩＤ更新済フラグ４０６の値は、ｔｒｕｅもしくはｆａｌｓｅをとり、順に、“更新済”、もしくは、“未更新”を意味する。データ処理の開始時には、候補ＩＤ更新済フラグ４０６はｆａｌｓｅ（未更新）が入っている。
【００４０】
図５及び図６は、それぞれ、候補データ判別条件式情報５００及び候補ＩＤ更新判定閾値情報６００の一例を示す図である。
【００４１】
図５に示されるように、候補データ判別条件式情報５００は、判別条件式数Ｌ（Ｌは自然数）と、Ｌ個の判別条件式Ｃ（０）、Ｃ（１）、・・・、Ｃ（Ｌ−１）とから成る。それぞれの判別条件式Ｃ（０）〜Ｃ（Ｌ−１）は、自然数ｘを引数として算出される評価値Ｓ(ｘ)と、Ｓ(ｘ)と閾値との大小関係の比較を行う条件式Ｔ(ｙ)とから成る。なお、評価値Ｓ(ｘ)の自然数の引数ｘは、候補ＩＤや、候補ＩＤをインデックスとしてデータ配列ｄを参照した際の参照値などを与えることを想定している。本例では、候補ＩＤを引数として与える場合を例に説明する。
【００４２】
図６に示されるように、候補ＩＤ更新判定閾値情報６００は、０以上１未満の小数値である候補ＩＤ更新判定閾値から成る。
【００４３】
次に、図３のフローチャートを参照しながら、データ処理装置１００の動作について説明する。なお、以下においては、図５及び図６に示す、候補データ判別条件式情報５００及び候補ＩＤ更新判定閾値情報６００を具体例として用いて説明する。
【００４４】
図３のフローチャートで示す通り、データ処理装置１００の演算処理部１０１は、ｉが０から順に、Ｌ−１（Ｌは判別条件式数）までＬ回の反復処理を行う（ステップＳ３０１、Ｓ３０２）。
【００４５】
反復処理の初めに、演算処理部１０１は、候補ＩＤ更新済フラグ４０６を参照する（ステップＳ３０３）。候補ＩＤが更新済みではない場合（ステップＳ３０３の「更新されていない」）、演算処理部１０１の連続候補データ判別部２０１は、連続候補データ判別処理を実行する（ステップＳ３０４）。候補ＩＤが更新済みの場合（ステップＳ３０３の「更新されている」）、演算処理部１０１の不連続候補データ判別部２０２は、不連続候補データ判別処理を実行する（ステップＳ３０５）。
【００４６】
連続候補データ判別部２０１での連続候補データ判別処理の実行後、演算処理部１０１の候補ＩＤ更新判定部２０３は、候補ＩＤ更新判定処理を実行することにより、候補ＩＤを更新するかどうかの判定を行う（ステップＳ３０６）。更新すると判定した場合（ステップＳ３０６の「更新する」）、演算処理部１０１の候補ＩＤ更新部２０４は、候補ＩＤ更新処理を実行することにより、候補ＩＤを更新し（ステップＳ３０７）、反復処理の１回を完了する（ステップＳ３０８）。更新しないと判定した場合（ステップＳ３０６の「更新しない」）、演算処理部１０１は、候補ＩＤを更新せずに反復処理の１回を完了する（ステップＳ３０８）。
【００４７】
一方、不連続候補データ判別部２０２での不連続候補データ判別処理の実行後、演算処理部１０１の候補ＩＤ更新判定部２０３での候補ＩＤ更新判定処理を行わずに、候補ＩＤ更新部２０４は、候補ＩＤ更新処理を実行して、候補ＩＤを更新し（ステップＳ３０７）、反復処理の１回を完了する（ステップＳ３０８）。
【００４８】
Ｌ回の反復処理が終わったときには（ステップＳ３０２のＮＯ）、現候補数４０３には全ての判別式を満たす候補の数、また、候補ＩＤ配列４０４の先頭から現候補数要素には、全ての判別式を満たした候補のＩＤが入っている。
【００４９】
以下、演算処理部１０１の連続候補データ判別部２０１で実行される連続候補データ判別処理、候補ＩＤ更新判定部２０３で実行される候補ＩＤ更新判定処理、候補ＩＤ更新部２０４で実行される候補ＩＤ更新処理、および不連続候補データ判別部２０２で実行される不連続候補データ判別処理について説明する。
【００５０】
図７は、演算処理部１０１の連続候補データ判別部２０１で実行される連続候補データ判別処理を示すプログラムの一例である。
【００５１】
連続候補データ判別部２０１は、現候補数個の抽出候補に対して、ｉ番目の判別条件式Ｃ(ｉ)を満たすかどうかの判別を行う。このとき、連続候補データ判別部２０１は、全ての抽出候補に対して以下の処理を行う。
【００５２】
まず、連続候補データ判別部２０１は、候補ＩＤ（CandidateID）を取得する。連続候補データ判別処理を実行している間は、候補ＩＤ配列４０４が更新されていないため、連続候補データ判別部２０１は、候補ＩＤ配列４０４を参照することなく、ループのインデックスｊが候補ＩＤとなる。連続候補データ判別部２０１は、候補ＩＤを引数として、判別条件式のＣ(ｉ)の評価値を計算する。そして、連続候補データ判別部２０１は、評価値が判別条件式Ｃ(ｉ)の条件式を満たすかどうかの判定を行う。閾値を満たさない場合、連続候補データ判別部２０１は、候補フラグ配列４０５のｊ番目の要素ｑ[ｊ]を ｆａｌｓｅに更新する。なお、これらの処理は、異なる抽出候補に対して独立した処理であるため、連続候補データ判別部２０１は、連続候補データ判別処理を並列に実行することができる。
【００５３】
図８は、演算処理部１０１の候補ＩＤ更新判定部２０３で実行される候補ＩＤ更新判定処理を示すプログラムの一例である。
【００５４】
候補ＩＤ更新判定部２０３は、候補フラグ配列４０５を参照することで、現時点での抽出候補として残っている残存候補数を数え上げる（０行目から６行目）。そして、候補ＩＤ更新判定部２０３は、全候補数のうちの残存候補数の割合である残存率を算出する（９行目）。残存率が候補ＩＤ更新判定閾値を下回った場合、もしくは、最後の判別条件式を用いた判別であった場合、候補ＩＤ更新判定部２０３は、候補ＩＤ更新をすると判定する（１０行目から１２行目）。そうでない場合、候補ＩＤ更新判定部２０３は、候補ＩＤを更新しないと判定する。
【００５５】
図９は、演算処理部１０１の候補ＩＤ更新部２０４で実行される候補ＩＤ更新処理を示すプログラムの一例である。
【００５６】
候補ＩＤ更新部２０４は、候補ＩＤ配列４０４と候補フラグ配列４０５との再構成を行う。候補ＩＤ更新部２０４は、現候補数個分の候補ＩＤ配列４０４と候補フラグ配列４０５とを参照し、抽出候補として残っている候補の候補ID（ｑ[i] が trueであるようなp[i]）のみを、候補ID配列ｐに先頭から代入していくことで、再構成を行う。そして、候補ＩＤ更新部２０４は、最後に、現候補数を残存候補数で更新する。
【００５７】
図１０は、候補ID更新前後の、記憶部１０２の現候補数４０３、候補ID配列４０４、および候補フラグ配列４０５の様子を示した図である。
【００５８】
候補フラグ配列４０５のTはtrueを、Fはfalseを示す。候補ID更新前にて、候補フラグ配列４０５がtrueであるような要素に対応する、候補ID配列４０４の要素（０、１、４、…）のみが、候補ID更新後の候補ID配列に順に保存される。そして、それらの個数（ｎ’）が現候補数４０３に入り、候補フラグ配列４０５の先頭ｎ’個の要素にはtrueが入る。候補ID配列４０４および候補フラグ配列４０５の（ｎ’＋１）以降の要素は、以降利用しないので、どのような値が入っていてもよい。
【００５９】
図１１は、演算処理部１０１の不連続候補データ判別部２０２で実行される不連続候補データ判別処理を示すプログラムの一例である。
【００６０】
不連続候補データ判別部２０２は、現候補数個の抽出候補に対して、ｉ番目の判別条件式Ｃ(ｉ)を満たすかどうかの判別を行う。
【００６１】
不連続候補データ判別部２０２は、連続候補データ判別部２０１での連続候補データ判別処理とほぼ同じような処理をするが、唯一の違いは、候補ＩＤ（CandidateID）の取得方法である。
【００６２】
詳述すると、連続候補データ判別部２０１では、ループのインデックスｊが候補ＩＤとなっていた。これに対して、不連続候補データ判別部２０２では、ループのインデックスｊが示す候補ID配列の要素ｐ[ｊ]が候補ＩＤとなる。換言すれば、不連続候補データ判別部２０２は、抽出候補データを示すインデックス情報である候補ＩＤリストを受け取る。
【００６３】
それ以外の処理は、連続候補データ判別処理と同等である。また、これらの処理は、連続候補データ判別部２０１の連続データ判別処理と同様に、異なる抽出候補に対して独立した処理であるため、不連続候補データ判別部２０２は、不連続データ判別処理を並列に実行することができる。
【００６４】
［効果の説明］
次に、本第１の実施形態の効果について説明する。
【００６５】
先に述べたとおり、連続候補データ判別処理や不連続候補データ判別処理は、異なる抽出候補に対して独立した処理であるため、連続候補データ判別部２０１や不連続候補データ判別部２０２はそれらの処理を並列に実行することができる。
【００６６】
また、連続候補データ判別部２０１が連続候補データ判別処理を並列に実行する場合、評価値計算の際の記憶域１０２の参照が連続（シーケンシャルアクセス）、もしくは、固定値要素とび（ストライドアクセス）になるため、効率的なメモリアクセスをすることができる。一方で、不連続候補データ判別部２０２が不連続候補データ判別処理を並列に実行する場合は、評価値計算の際の記憶域１０２の参照が、候補IDをインデックスとした参照（ランダムアクセス、リストアクセス）となるため、メモリアクセス性能が並列処理の効率性を損なう可能性がある。候補IDを更新しなければ、全判別式に対して、連続候補データ判別部２０１は連続候補データ判別処理で処理することができる。しかしながら、その場合は、抽出候補でない候補（候補フラグがｆａｌｓｅになった候補）に対しても、判別処理を施すことになり、不要な計算を行うことになる。
【００６７】
そこで、本発明の第１の実施形態では、連続候補データ判別処理と不連続候補データ判別処理とのどちらを実施するかどうかを切り替えられるようにし、各判別式の判別処理実行後に、次の判別式の判別処理の実行を動的判断させることで、より効率のよい並列判別処理を選択・実行している。
【００６８】
［第２の実施形態］
上記第１の実施形態の例では、図６に示されるように、候補ＩＤ更新判定閾値情報６００を１つの候補ＩＤ更新判定閾値とした。
【００６９】
これに対して、本発明の第２の実施形態に係るデータ処理装置では、図１２に示されるように、候補ＩＤ更新判定閾値情報６００Ａとして、複数の（例えば、判別条件式数個の）候補ＩＤ更新判定閾値を有する、候補ＩＤ更新判定閾値リストを用いる。
【００７０】
そして、本発明の第２の実施形態に係るデータ処理装置では、残りの判別条件式の数に応じて、候補ＩＤ更新判定部２０３は、候補ＩＤ更新判定処理で用いる候補ＩＤ更新判定閾値を変更するという方法を採用する。
【００７１】
［第３の実施形態］
また、上記第１の実施形態の例では、図６に示されるように、候補ＩＤ更新判定閾値情報６００として、候補ＩＤ更新判定閾値を入力として与えるものとした。
【００７２】
これに対して、本発明の第３の実施形態に係るデータ処理装置では、候補ＩＤ更新判定部２０３が、候補ＩＤ更新判定処理の中で候補ＩＤ更新判定閾値を計算で求めるという構成をとっている。
【００７３】
例えば、図１３で示すように候補ＩＤ更新判定閾値情報６００Ｂとして、プロセッサ別の連続候補データ判別コスト係数、不連続候補データ判別コスト係数を与え、それにより、候補ＩＤ更新判定の閾値を計算で求めるという構成を例に挙げる。
【００７４】
例えば、プロセッサＡの場合、連続候補データ判別コスト係数が1.0であり、不連続候補データ判別コスト係数が3.0である。これは、連続候補データ判別部２０１の連続候補データ判別処理での抽出候補１要素あたりの処理コストが1.0であり、不連続候補データ判別部２０２の不連続候補データ判別処理での抽出候補１要素あたりの処理コストが3.0であることを意味する。
【００７５】
全候補数をｎ、残候補数がｚとする。この場合、仮に候補ＩＤ更新部２０４で候補ＩＤ更新処理を実行しなかった場合は、判別処理１回の総コストは 1.0×ｎである。何故なら、次の連続候補データ判別部２０１の連続候補データ判別処理では全候補に対して処理を行うのからである。これに対して、候補ＩＤ更新部２０４で候補ＩＤ更新処理を実行した場合の総コストは、3.0×ｚである。したがって、候補ＩＤ更新判定部２０３の候補ＩＤ更新判定処理では、それぞれの総コストを比較し、コストが小さくなる方を選択する。
【００７６】
すなわち、候補ＩＤ更新判定部２０３は、連続候補データ判別部２０１が行った判別の結果に基づいて、残存候補数を数え上げ、数え上げた残存候補数と不連続候補データ判別コスト係数とから不連続候補データ判別コストを算出するとともに、全抽出候補数と連続候補データ判別コスト係数とから連続候補データ判別コストを算出し、不連続候補データ判別コストの方が連続候補データ判別コストより小さくなるときに、候補ＩＤを更新すると判定する。
【００７７】
［第４の実施形態］
上記の候補ＩＤ更新判定閾値情報６００Ｂは、入力データとしてデータ処理装置１００の利用者が与えてもよいが、データ処理装置１００の中で、動的に更新してもよい。
【００７８】
例えば、本発明の第４の実施形態に係るデータ処理装置では、図１４に示されるように、演算処理部１０１Ａがコスト計測部２０５を更に有する。コスト計測部２０５は、上記プロセッサ別の候補データ判別コスト係数、不連続候補データ判別コスト係数を、複数の抽出処理を進める中で更新することができる。
【００７９】
詳述すると、コスト計測部２０５は、処理にかかった実行時間や電力、通信量、記憶域のサイズといったコスト情報を計測する。コスト計測部２０５は、連続候補データ判別部２０１および不連続候補データ判別部２０２の実行にかかったコストを計測して、上記プロセッサ別の候補データ判別コスト係数、不連続候補データ判別コスト係数を更新する。
【００８０】
尚、コスト計測部２０５は、上記コストを計測して、上記プロセッサ別の候補ＩＤ更新判定閾値を更新してもよい。
【００８１】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、複数の構成要素の適宜な組合せにより種々の発明を形成できる。
【００８２】
尚、データ処理装置の各部は、ハードウェアとソフトウェアとの組み合わせを用いて実現すればよい。ハードウェアとソフトウェアとを組み合わせた形態では、ＲＡＭ（random access memory）にデータ処理プログラムが展開され、該データ処理プログラムに基づいて制御部（ＣＰＵ（central processing unit））等のハードウェアを動作させることによって、各部を各種手段として実現する。また、該データ処理プログラムは、記録媒体に記録されて頒布されても良い。当該記録媒体に記録されたデータ処理プログラムは、有線、無線、又は記録媒体そのものを介して、メモリに読込まれ、制御部等を動作させる。尚、記録媒体を例示すれば、オプティカルディスクや磁気ディスク、半導体メモリ装置、ハードディスクなどが挙げられる。
【００８３】
上記実施の形態を別の表現で説明すれば、データ処理装置として動作させるコンピュータを、ＲＡＭに展開されたデータ処理プログラムに基づき、連続候補データ判別部２０１、不連続候補データ判別部２０２、候補ＩＤ更新判定部２０３、候補ＩＤ更新部２０４、およびコスト計測部２０５として動作させることで実現することが可能である。
【００８４】
また、本発明の具体的な構成は前述の実施の形態に限られるものではなく、この発明の要旨を逸脱しない範囲の変更があってもこの発明に含まれる。
【００８５】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施の形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用可能性】
【００８６】
本発明は、ＧＰＧＰＵ（General Purpose computing on Graphics Processing Unit）やベクトル型命令を有するＣＰＵで、抽出計算を並列に効率的に処理するデータ処理装置に適用可能である。
【符号の説明】
【００８７】
１００    データ処理装置
１０１、１０１Ａ    演算処理部（プロセッサ）
１０２    記憶部（メモリ）
１０３    入力部
２０１    連続候補データ判別部
２０２    不連続候補データ判別部
２０３    候補ＩＤ更新判定部
２０４    候補ＩＤ更新部
２０５    コスト計測部
５００    候補データ判別条件式情報
６００、６００Ａ、６００Ｂ    候補ＩＤ更新判定閾値情報
【図１】
0006748372.tif 000002
【図２】
0006748372.tif 000003
【図３】
0006748372.tif 000004
【図４】
0006748372.tif 000005
【図５】
0006748372.tif 000006
【図６】
0006748372.tif 000007
【図７】
0006748372.tif 000008
【図８】
0006748372.tif 000009
【図９】
0006748372.tif 000010
【図１０】
0006748372.tif 000011
【図１１】
0006748372.tif 000012
【図１２】
0006748372.tif 000013
【図１３】
0006748372.tif 000014
【図１４】
0006748372.tif 000015
【図１５】
0006748372.tif 000016