以下に、本発明を実施するための形態について図面を参照して説明する。
(1)第1の実施形態
図1−1〜図1−4は、本発明の第1の実施形態を説明する図である。
図1−1に示すように、本実施形態のサービス提供システムは、1つまたは複数のサーバコンピュータ20と、リソースマネージャ30と、1つまたは複数のアクセラレータ40と、サーバ・アクセラレータ間接続部50と、を有している。また、アクセラレータ40は、内部データ入出力制御部41と、外部データ入出力制御部42と、再構成ハードウェア処理部43と、を有している。
また、図1−2に示すように、再構成ハードウェア処理部43は、タイル間接続部431と、1つまたは複数のタイルブロック部432と、を有している。また、タイルブロック部432は、1つまたは複数のタイル処理部433と、タイル制御部434と、を有している。
また、図1−3に示すように、リソースマネージャ30は、処理内容管理DB31と、処理内容制御部32と、結果データ取得部33と、を有している。また、サーバコンピュータ20は、ソフトウェア(SW)処理管理部21を有し、アクセラレータ40は、ハードウェア(HW)処理管理部44を有している。
本実施形態のサービス提供システムは、ユーザ端末10からのサービス要求に対して、サーバコンピュータ20および再構成ハードウェア処理部43の持つソフトウェアリソース、ハードウェアリソースを用いて、ユーザに要求されたサービスを提供するシステムである。ユーザ端末10は1つまたは複数あり、ユーザはユーザ端末10から同時または別々のタイミングでサービスを要求できる。ユーザ端末10から送られたサービス要求は、ネットワーク(NW)を経由して、本システムに入力される。
リソースマネージャ30は、ユーザからのサービス要求を受け取り、要求されたサービスの提供に必要な機能を、SW機能とHW機能に分け、それら機能の処理内容を制御する。リソースマネージャ30内の結果データ取得部33は、本システムから得られる結果データをフィードバックし、その結果データに関する情報を、リソースマネージャ30内の処理内容制御部32に送ることができる。処理内容制御部32は、ユーザからの要求情報に加え、結果データに関する情報も入力して、それらの情報の変化に応じて、サーバコンピュータ20およびアクセラレータ40での処理内容も必要に応じて変化させて制御することができる。処理内容管理DB31は、処理内容の進捗状況について、リアルタイムに保持・管理する。また、処理内容管理DB31は、SWリソースの利用状況と、HWリソースの利用状況についても、保持・管理する。処理内容制御部32で決定される処理内容は、SW機能はSW処理管理部21を介してサーバコンピュータ20に割り当て、HW機能はHW処理管理部44を介してアクセラレータ40に割り当てる。
SWリソースとは、例えば、1つまたは複数あるサーバコンピュータ20における、CPU、内部メモリ、外部記憶装置などのリソースが挙げられる。また、HWリソースとは、例えば、1つまたは複数あるアクセラレータ40における、処理回路の面積、メモリ容量、記憶装置容量、処理回路間やアクセラレータ40間の配線量などのリソースが挙げられる。それらリソースの利用状況とは、例えば、リソースの割り当て量、割り当て場所、割り当ての設定値などの情報が挙げられる。
処理内容制御部32は、処理内容管理DB31が持つSWリソースの利用状況を参照しながら、サーバコンピュータ20上で空いている最適なSWリソースを選出した上で、割り当てるソフトウェア機能をサーバコンピュータ20上でSW処理するように指示する。同様に、処理内容管理DB31が持つHWリソースの利用状況を参照しながら、アクセラレータ40上で空いている最適なHWリソースを選出した上で、当該ハードウェア機能をアクセラレータ40上でHW処理するように指示する。処理内容制御部32は、指示した内容に基づき処理内容管理DB31を更新する。
また、リソースマネージャ30の処理内容制御に従って、サーバコンピュータ20上でのSW処理結果や処理条件の情報は、そのままサーバコンピュータ20内で次のSW処理に使うこともできるし、次の処理がHW処理であればアクセラレータ40に送信しアクセラレータ40上でHW処理に使うこともできる。同様に、リソースマネージャ30の処理内容制御に従って、アクセラレータ40上でのHW処理結果や処理条件の情報は、そのままアクセレレータ40内で次のHW処理に使うこともできるし、次の処理がSW処理であればサーバコンピュータ20に送信しサーバコンピュータ20上でSW処理に使うこともできる。サーバコンピュータ20とアクセラレータ40間で処理を接続する場合は、サーバ・アクセラレータ間接続部50を介して必要な情報を送受信することができる。
リソースマネージャ30では、SWリソースおよびHWリソースの利用状況の情報と、処理内容の情報を管理することにより、サーバコンピュータ20上では、どこのソフトウェア資源がどの程度利用されているかを把握でき、またアクセラレータ40上では、どこのハードウェア資源がどの程度利用されているかを把握できるので、ユーザ要求を実行するために必要な処理機能に対して、効率的な機能の割り当て管理と処理の制御を行うことができる。
さらに、リソースマネージャ30では、そのようなユーザ要求情報とリソース利用状況に基づいて制御を行うだけでなく、自身の当該システムの処理によって得られた処理結果データの情報も活用して、その情報に基づき処理内容の制御を行うことができる。また、日時、場所などの環境情報(ユーザ要求情報や結果データ情報ではないその他の情報)に基づいて処理内容の制御を行うこともできる。
リソースマネージャ30内における具体的な処理手順の例について、フローチャートを図1−4に示す。
ユーザ要求情報(ステップS101)、リソース利用状況情報(ステップS102)、環境情報(ステップS103)、および結果データ情報(ステップS104)のいずれかもしくは複数の情報に基づいて、処理内容を構成する(ステップS105)。処理内容の構成とは、ユーザ要求情報に従うために必要なSW処理、HW処理の内容を決定することを意味する。その決定に際し、リソース利用状況の変更が必要になった場合は(ステップS106のYes)、リソース利用状況の変更処理を行う(ステップS107)。次に、処理内容に従い、SW機能はサーバコンピュータ20に割り当て、HW機能はアクセラレータ40に割り当てる(ステップS108)。次に、サーバコンピュータ20、アクセラレータ40に対し、実行することが決定されたSW処理、HW処理の指示を出す(ステップS109,S110)。サーバコンピュータ20で行うSW処理の結果として得られる結果データは、リソースマネージャ30にフィードバックして入力することができる。またアクセラレータ40で行うHW処理の結果として得られる結果データは、リソースマネージャ30にフィードバックして入力することができる。いずれかの結果データだけ入力することもできるし、両方の結果データを入力することもできる。またリソースマネージャ30が必要と指示したときだけ入力させることもできる。その後、全てのSW機能が終了していない場合(ステップS111のNo)や、全てのHW機能が終了していない場合(ステップS112のNo)は、ステップS106に戻る。全てのSW機能とHW機能が終了した場合は(ステップS113のYes)、終了処理を行う(ステップS114)。
リソース利用状況の変更が発生する例としては、ユーザ要求が変更された場合、環境情報が変動しリソースマネージャ30等が定める条件に合致するようになった場合、処理内容管理DB31が持つリソース利用状況の内容が変動しリソースマネージャ30等が定める条件に合致するようになった場合、また自システムの処理結果である結果データの内容が変動しリソースマネージャ30等が定める条件に合致するようになった場合などが考えられる。このような時にリソース利用状況を変更して処理を進めることで、リソースの利用を効率化することが可能になる。サーバコンピュータ20でリソース利用を変更することはソフトウェアであることから容易に可能であるとともに、アクセラレータ40でリソース利用を変更することもアクセラレータ40の中に再構成可能ハードウェアを利用して構築しておくことで、ハードウェアであっても変更は可能となる。
ここで、処理内容の構成を行う場合、ユーザ要求情報、リソース利用状況情報、環境情報、および結果データ情報の内容や条件によっては、すべてをSW機能で実行する場合もあるし、すべてをHW機能で実行する場合もあるし、両方混在する場合も考えられる。また、混在する場合でも、複数のSW機能と複数のHW機能が代わる代わる組み合わさる場合もあるし、部分的にSW機能またHW機能のいくつかが並列に処理されたり、少しずれてパイプライン処理されたりすることも容易に考えられる。
そのような機能を有する処理内容制御部32の具体的な実現例としては、プログラム言語(例えば、C言語など)による記述や、スクリプト言語(例えば、Perl、Python、Ruby、Lua、Java(登録商標)、LISP、AWK、Tcl、Windows(登録商標)のコマンドラインシェル、UNIX(登録商標)の各種シェルスクリプト、AppleScript、など)による記述を1つもしくは複数用いることができ、様々なアルゴリズムの処理内容を実行可能である。
また、サーバコンピュータ20を制御する場合でも、アクセラレータ40を制御する場合でも、リソースマネージャ30からの制御用インタフェース(API)を規定しておくことにより、リソースマネージャ30ではその処理内容を自由に変更でき、またサーバコンピュータ20側やアクセラレータ40側ではそのインタフェースを守りさえすれば、任意に処理内容の構成等を変更することが可能である。すなわち、後から新しいサーバコンピュータ20上のSWのプログラムを追加や変更してもリソースマネージャ30の利用ルールを変えなくて済む利点があるし、また新しいアクセラレータ40上のHWのタイル処理部433を追加や変更してもリソースマネージャ30の利用ルールを変えなくて済む利点があるし、これによりいずれの場合も既存のアプリケーションは変更せずにそのまま利用できる。
ここで、タイル処理部433の追加とは、現在利用されていない(処理内容も書き込まれていないか、もしくは利用していないが何らかの処理内容が書き込まれている)タイル処理部433に、必要とする処理内容の回路を書き込んで利用することである。
また、タイル処理部433の変更とは、現在利用しているタイル処理部433に書き込まれた処理内容を、必要とする別の処理内容に書き換えて利用することである。変更の場合は、現在利用している対象タイル処理部433と同じ処理内容を持つ別のタイル処理部433に配線等の接続関係を迂回させて(切り替えて)その別のタイル処理部433に処理を担当させ、対象タイル処理部433へ新しい処理内容を書き込み、書き込みが終わったらその元の対象タイル処理部433に配線等の接続関係を戻し処理も復活させればよい。または、書き込みが終わった後は、戻さないでそのまま別の新しいタイル処理部433で処理させておいてもよい。迂回しようとしても迂回して利用可能な別のタイル処理部433がない場合は、対象タイル処理部433の書き込み中にはその処理を中断し、書き込み後に処理を復活させてもよい。
処理内容制御部32での具体的な制御方法例を以下に示す。処理内容制御部32では、ユーザ要求情報、リソース利用状況情報、環境情報、および結果データ情報の内容や条件に基づいて、サーバコンピュータ20やアクセラレータ40の処理内容を変更する。
環境情報を用いた例として、例えば、ある時間(または日付、季節など)になった時に、自動で、サーバコンピュータ20であれば処理するプログラムの種類を切り替えたり、アクセラレータ40であればタイル処理部433の中身(ハードウェアによる処理内容)を切り替えたりすることによって、より適した処理を行うように自動変更することができる。具体的には、昼の時間帯は昼用アルゴリズムを使い、夜の時間帯は夜用アルゴリズムを使うことで、画像処理等の処理内容(学習データ等)を適したものに自動で変えることができる。時間以外でも、処理時の天候情報(天気、温度、湿度など)に基づいて、処理内容を切り変えることができる。また、例えば映像を処理する場合、その入力映像を撮影したカメラの場所や背景が変わった時に、その場所や背景に適した処理内容に変更することができる。
その場所や背景に適した処理内容を決定する例としては、例えばカメラの場所が屋外か屋内か、背景がシンプルな映像か複雑な映像か、光(照明や太陽)がどのような向きでどの程度当たっている場所か、などの撮影条件等の違い(度合い)によって、画像処理する際の閾値等のパラメータをその場所の条件に適した値(例えば、背景や物体の明るさに応じて検出アルゴリズムのパラメータを変えたり、明るさを調整するフィルタ処理をほどこしたり、また背景の色合いや複雑度に応じてその背景に適した学習データに変えて画像認識処理を行うようにしたりすればよい)に設定・変更することで、カメラの場所を変えてもより精度の高い画像処理を行うことができる。また、その場所の映像中に検出したい物体(人や車など)について何がどの程度の数あるか、その物体はどの程度の大きさか、またその映像中の背景として(検出したい物体かどうかを問わず)動く物体があるか、などの撮影場所の条件の違いによって学習データや画像処理時のパラメータを変えることで、カメラの場所を変えてもより精度の高い画像処理を行うことができる。これらのようなパラメータや学習データ等の変更は、リソースマネージャ30が入力された映像に応じて判断し、より精度の高くなる状態に調整することができる。この際、カメラの場所の変化が検出されたことをトリガーとして、パラメータや学習データ等の変更を行うようにしてもよい。また、カメラの場所とパラメータや学習データ等とを対応付けて記憶したデータベースを予め用意しておき、カメラの場所の変化が検出された場合に、その場所に応じたパラメータや学習データ等をデータベースから読み出し、利用するようにしてもよい。
なお、背景の情報を取得する方法の例としては、例えば入力映像中の色に関する情報(RGBやHSVの割合や全体の明るさ等)を測定したり、入力映像中で時系列の変化を比較して動きのない領域(オプティカルフロー等の画像処理により容易に抽出可能であり、カメラ自体が動いている場合はその既知のカメラの動きを差し引けば同様に可能である)を背景領域として抽出したりすることが容易に可能である。
また、カメラの場所もしくはその変化を取得する方法としては、例えばカメラにGPS機能を搭載し常時カメラの地理的な位置をシステムが(リソースマネージャ30が)把握することは容易に可能である。また、ユーザが持ち運び可能なハンディカメラやモバイル機器のような移動可能なカメラであれば、ユーザがその場所の情報を手動入力したり、場所(エリア)のリスト一覧から選択して入力したりすることにより、ネットワークを介してリソースマネージャ30はそのカメラの場所を容易に把握することが可能である。そのような移動可能なカメラとしては、ユーザが手に持って常に動いている場合や、USBカメラや監視カメラのように利用時は場所を固定するが、取り外して設置場所を移動する場合や、首振り可能な監視カメラのように場所は同じでカメラの向きだけ変えられる場合などが考えられる。
結果データ情報を用いた例として、例えばSWまたはHWで映像処理を実行させた場合、その結果データをリソースマネージャ30にフィードバックさせた時、リソースマネージャ30が、その結果からSWのプログラムの種類または処理パラメータを変更した方がよいと判断したら、もしくはHWのタイル処理部433の処理内容の種類または処理パラメータを変更した方がよいと判断したら、リソースマネージャ30は自動的に(自己判断で)サーバコンピュータ20またはアクセラレータ40へ処理内容を変更(種類の変更または処理パラメータの変更)するように指示を出すことが可能である。
リソースマネージャ30がこれらの変更をした方がよいと判断する場合の例としては、映像中から何かの物体(人や車など)を検出している時に、例えば結果データ情報として検出数が得られる場合に、その検出数が明らかに多過ぎたり(常に最大値だったり)、またはほとんど検出できなかったり(小さ過ぎたり常にゼロだったり)した時に、パラメータとして検出時の閾値を変更すべきと判断した場合、それを処理しているSWまたはHWに対して閾値の変更(検出数が多過ぎる場合は識別処理の閾値を上げ(下げ)ていき、少な過ぎる場合は閾値を下げ(上げ)ていけばよい)を実行すればよい。また他の例として、検出する物体のサイズによって処理が異なる場合に、初めは複数のサイズで並行して複数の検出処理を行わせ、ある程度の時間処理した後に(閾値等を前述のように変えても)検出されない(検出数がゼロのままの)サイズ設定の処理があれば、その映像ではそのサイズの検出処理は必要ないと判断し、処理を削除するようにしてもよい。これにより、映像に多く映る物体のサイズを推定したり、また処理のリソースを最小限に抑えることが可能になる。また、結果データ情報として物体検出座標が得られる場合に、その検出座標が画像上で一定の領域内のみである時は、画像上のその領域以外を対象とする処理は冗長な処理と判断して処理を省略(または停止)するようにSWまたはHWへ指示してもよい。これにより、処理量や消費電力を削減することが可能になる。
ユーザ要求情報を用いた例として、同じユーザがサービスを受けている途中で、映像等の外部データの量や種類を変更する要求を出してきた場合や、処理内容の変更を要求してきた場合に、リソースマネージャ30が予め定められた判断手順に基づいて、サーバコンピュータ20上やアクセラレータ40上の処理内容を変更できるようにすることによって、それら要求情報の変更に対して自動的に(ユーザによる作業を介さずに)対応することが可能である。その判断手順の内容は、リソースマネージャ30上でプログラム言語やスクリプト言語等を用いることで、柔軟な設定は容易に可能である。また、具体的なユーザ要求の例として、ユーザが処理したい映像(カメラ)数を増やしたい(減らしたい)という要求や、映像から検出したい物体の種類を(例えば人検出から車検出に)変えたいという要求などがあった場合、従来はSWのみを用いてプログラムの種類やパラメータを自動的に(予め定められた判断手順に基づいて)システム動作中に変更することは可能であっても、高速な処理を行うための専用HWを用いた場合には、HW自体(回路そのもの)を同様に自動的にシステム動作中に変更することはできず、ユーザ要求に合うようにHWを変えるにはシステムの中断と手動によるHW自体の入れ替えが必要であった。しかし、本システムでは、HWの処理回路構成自体も(予め定めた手順に基づく範囲で)自由に変更できるため、リソースマネージャ30がユーザ要求に基づき(SWの場合と同様に)自動的にかつシステムを中断せずに処理内容を変更することが可能である。
リソース利用状況情報を用いた例として、ユーザ要求情報に変化がなくても、サーバコンピュータ20上やアクセラレータ40上での処理内容の割り当て方を変更することが考えられる。例えば、サーバコンピュータ20上のリソースが多く利用されていてそれ以上処理を追加できなくなったような場合(処理用のマージンが少なくなるような場合)に、サーバコンピュータ20に割り当ててあった処理内容の一部をアクセラレータ40に移し変えたり、逆の場合にアクセラレータ40に割り当ててあった処理内容の一部をサーバコンピュータ20に移し変えたりすることが可能である。また、同様に、サーバコンピュータ20間での処理内容の移し変えや、アクセラレータ40間での処理内容の移し変えも可能である。このような仕組みにより、システムとして、より継続的に動作させられるようになる利点を持たせることができる。
以上のような処理内容制御部32での具体的な制御方法例は、いずれも初めに制御方法を設定さえしておけば、人が場合に応じて手動で設定変更したりせずに、リソースマネージャ30が自己判断で自動的に、最適な状態になるよう制御を継続的に行うことができるようになり、人の稼動が不要でかつ迅速、確実、安定した対応が可能なシステムを実現できる。
リソースマネージャ30は、リソースマネージャ30専用のコンピュータ上にリソースマネージャ30用ソフトウェアプログラムとして搭載することもできるし、1つまたは複数のサーバコンピュータ20上にリソースマネージャ30用ソフトウェアプログラムとして搭載することもできる。
サーバコンピュータ20は、割り当てられたソフトウェア機能を実行可能なソフトウェアプログラムを、サーバコンピュータ20上で実行する。ソフトウェアであるので、サービス要求情報、結果データ、リソース利用状況、環境情報等の変化に基づいたリソース利用状況の変更指示に応じて、柔軟にプログラムの内容およびパラメータを変更して、実行することができる。本システム上には、1つまたは複数のサーバコンピュータ20を有することができる。
サーバコンピュータ20が複数ある場合には、それらはサーバ・アクセラレータ間接続部50を介していずれもリソースマネージャ30と接続できる。その場合、リソースマネージャ30は、必要なソフトウェア機能を必要とする数のサーバコンピュータ20に対して割り当てることができる。リソースマネージャ30は、各サーバコンピュータ20上の処理状況情報をサーバ・アクセラレータ間接続部50を介して管理しておくことにより、処理に余裕のあるサーバコンピュータ20に優先して割り当てることもできる。
アクセラレータ40は、割り当てられたハードウェア機能を実行可能なハードウェア回路を、アクセラレータ40上に構築し、当該機能を実行する。従来のハードウェアで処理を行う装置では固定の機能しか実行できなかったが、本システムでは再構成可能な(リコンフィギャラブルな)ハードウェアデバイスを搭載し、要求に応じて毎回異なる機能を実行するハードウェア回路に書き換えて利用することができる。また、複数のリソース変更指示に応じて、各々異なる回路を構成して利用できるとともに、利用しない回路の不活性化もしくは消去も行えるので、ハードウェアリソースを効率よく利用することができる。
また書き換えたハードウェア上で処理を行う際の各種設定パラメータについては、回路自体の変更でも設定変更できるが、回路の書き換えをせずに、回路上に設定するレジスタ値やメモリ値を、リソースマネージャ30からの制御信号により変更することで、パラメータ値の変更をすることもできる。また回路上に物理的なディップスイッチのような固定的な変更スイッチにより手動で変更する方法も可能である。
アクセラレータ40は、内部データ入出力制御部41、外部データ入出力制御部42、および再構成ハードウェア処理部43から構成される、処理回路の再構成が可能なことを特徴とするハードウェアである。
内部データ入出力制御部41は、サーバコンピュータ20もしくは他のアクセラレータ40からのデータを受信したり、また自分の再構成ハードウェア処理部43の結果データを、サーバコンピュータ20もしくは他のアクセラレータ40へ送信したりするための入出力を制御する。また、リソースマネージャ30から送信されるアクセラレータ40内の処理パラメータ等を制御するための制御データを、アクセラレータ40内に取り込み、再構成ハードウェア処理部43を制御する。さらに、再構成ハードウェア処理部43の処理結果である結果データの情報を、サーバ・アクセラレータ間接続部50を介して、リソースマネージャ30へ送信するために必要な入出力制御も行える。
例えば、サーバコンピュータ20でソフトウェア処理された結果データをアクセラレータ40に入力しハードウェア処理したり、アクセラレータ40でハードウェア処理された結果データをサーバコンピュータ20へ送ってソフトウェア処理したり、リソースマネージャ30からの各種指示情報(パラメータ条件など)をアクセラレータ40に入力しハードウェアの再構成時に用いたり、アクセラレータ40からの結果データをリソースマネージャ30にフィードバック送信したり、外部に送信したりすることができる。これらは、リソースマネージャ30で構成する処理内容において、細分化されたSW処理機能とHW処理機能を実行する際に、その機能間で入出力の接続関係がある場合において、サーバ・アクセラレータ間接続部50を介してデータを送受信することを意味する。また、リソースマネージャ30において、システムの処理結果データに基づいて、処理内容を変更する可能性がある場合に、結果データをリソースマネージャ30に送ることを意味する。
サーバコンピュータ20とアクセラレータ40間の送受信については、具体的には、あるSW機能の出力を別のSW機能で入力として用いる場合、あるHW機能の出力を別のHW機能で入力として用いる場合、あるSW機能の出力を別のHW機能で入力として用いる場合、あるHW機能の出力を別のSW機能で入力として用いる場合が考えられる。このような時にアクセラレータ40上では、サーバ・アクセラレータ間接続部50に対して、データを送信・受信するために内部データ入出力制御部41を利用する。サーバコンピュータ20とアクセラレータ40間のデータ通信は、リソースマネージャ30が管理して実行できる。
外部データ入出力制御部42は、外部から直接当該システムのアクセラレータ40に入力する外部データ(例えばカメラ映像データ、音声データ、各種センサデータ等)について、リソースマネージャ30の指示に基づいて、サーバ・アクセラレータ間接続部50を介してサーバコンピュータ20に送ったり、サーバ・アクセラレータ間接続部50を介して他のアクセラレータ40に送ったり、自分のアクセラレータ40内の再構成ハードウェア処理部43に送ったりするための入出力制御を行う。また、再構成ハードウェア処理部43で処理された結果データについて、リソースマネージャ30の指示に基づき、リソースマネージャ30にフィードバック送信したり、直接外部へ送ったりする場合の入出力制御を行う。外部データの入出力制御の機能は、すべてのアクセラレータ40が装備していてもよいし、複数のアクセラレータ40のうち任意の1個または複数個のアクセラレータ40に装備されていてもよいし、すべてのアクセラレータ40に装備されていなくてもよく、いずれも実行するサービスの内容に応じて変えることができる。
外部から入力するデータの例としては、映像、音声、センサデータ等が挙げられる。また外部へ出力するデータの例としては、映像、音声、または処理結果のデータ(値や値のリスト等)等が挙げられる。例えば複数のカメラ映像が本システムへ入力され、1つまたは複数のアクセラレータ40に接続し入力されることが考えられる。例えば、入力画像から、ユーザが要求する物体(人物、車などの物体)をリアルタイムに検出するような画像認識処理を例とした場合、リソースマネージャ30がその処理を割り振り、サーバコンピュータ20上のプログラムや、アクセラレータ40内のタイル処理部433においてそれぞれ割り当てられた処理を実行し、対象の物体をリアルタイムに検出することが可能になる。処理の結果得られた物体検出の結果データは、リソースマネージャ30や、ユーザ端末10や、ネットワーク上の他の装置に送ることも可能であるし、また外部データ入出力制御部42を通して、外部の装置(ディスプレイ、他の処理装置等)へ送ることも可能である。
再構成ハードウェア処理部43は、その内部に、1つまたは複数のタイルブロック部432を有し、各タイルブロック部432は、内部データ入出力制御部41および外部データ入出力制御部42とタイル間接続部431を介して接続している。タイルブロック部432は、1つまたは複数のタイル処理部433と、それらをタイルブロック部432の外部と接続するタイル制御部434とから構成される。
再構成ハードウェア処理部43の具体的な例として、タイルブロック部432は、再構成可能なLSI、FPGA(Field Programmable Gate Array)などで構成できる。また、タイル処理部433はFPGA内に実装する単位処理回路であり、既存のIP(Intellectual Property)コアや、事前に作成した専用の論理回路ブロックや、メモリ回路ブロックなどとして構成される。またこの時、アクセラレータ40は、1個または複数のFPGAを搭載した1枚のボード(ハードウェア基板)として構成することができ、FPGAとFPGAを接続する配線部分が再構成ハードウェア処理部43に相当し、タイルブロック部432を接続するタイル間接続部431は、FPGAを搭載したボード上におけるFPGA間配線に相当する。タイル間接続部431は、再構成ハードウェア処理部43上のすべてのタイルブロック部432間を任意のネットワークトポロジ(メッシュ結合、リング結合、全結合、バス結合等)で接続できる。または、再構成ハードウェア処理部43上のすべてのタイル処理部433の間を任意のネットワークトポロジ(メッシュ結合、リング結合、全結合、バス結合等)で接続してもよい。これらのタイル処理部433の接続関係は、リソースマネージャ30の指示に基づいて接続が再構成できる。
(2)第2の実施形態
図2−1、図2−2は、本発明の第2の実施形態を説明する図である。
図2−1および図2−2に示すように、本実施形態のサービス提供システムは、第1の実施形態と同じく、ユーザからのサービス要求に対して、サーバコンピュータ20および再構成ハードウェア処理部43の持つソフトウェア(SW)リソース、ハードウェア(HW)リソースを用いて、ユーザが要求したサービスを提供するシステムである。ユーザ端末10は1つまたは複数あり、ユーザはユーザ端末10から同時または別々のタイミングでサービスを要求できる。ユーザ端末10から送られたサービス要求は、ネットワークを経由して、本システムに入力される。
本実施形態におけるリソースマネージャ30、サーバコンピュータ20、およびアクセラレータ40内の内部データ入出力制御部41、外部データ入出力制御部42に関する具体的な内容例は、本発明の第1の実施形態の内容を包含する(本実施形態では記載省略)。
本実施形態では、これに加え、さらにアクセラレータ40間を接続する専用のアクセラレータ間接続部60を備える。また、アクセラレータ40内には、このアクセラレータ間接続部60と再構成ハードウェア処理部43との間をつなぐアクセラレータ間接続入出力制御部45を備える。
これは、第1の実施形態でも、サーバ・アクセラレータ間接続部50を経由することにより、異なるアクセラレータ40上のタイル処理部433どうしでデータの受け渡しを行うことは可能であるが、このサーバ・アクセラレータ間接続部50は複数のサーバコンピュータ20、リソースマネージャ30、複数の外部データ入出力制御部42、およびネットワークを介して複数のユーザ端末10が接続されることも可能であり、さらには映像等の高速・大容量のデータが多数通信されることも可能であり、これによりサーバ・アクセラレータ間接続部50が通信のボトルネックになる問題ともなる。そこで、特に映像等の大容量データの高速処理を行わせる可能性の高いハードウェアのアクセラレータ40について、異なるアクセラレータ40上のタイル間を自由に高速通信可能なように接続させるために、アクセラレータ40間のみに、専用のアクセラレータ間接続部(専用のネットワーク)60を備える。
アクセラレータ間接続部60について、その接続方式は、任意のネットワークトポロジ(メッシュ結合、リング結合、全結合、ハイパーキューブ、または一般的なバス結合等)で接続できる。これらの接続関係は、リソースマネージャ30の指示に基づいて接続関係が構築される。これにより、複数のアクセラレータ40間にまたがるタイル処理部433どうしの接続についても、常に高速な通信を保障して処理を結合して実行することができる。
(3)第3の実施形態
図3−1〜図3−5は、本発明の第3の実施形態を説明する図である。
本実施形態のサービス提供システムは、第1および第2の実施形態と同じく、ユーザ端末10からのサービス要求に対して、サーバコンピュータ20および再構成ハードウェア処理部43の持つソフトウェアリソース、ハードウェアリソースを用いて、ユーザが要求したサービスを提供するシステムである。ユーザ端末10は1つまたは複数あり、ユーザはユーザ端末10から同時または別々のタイミングでサービスを要求できる。ユーザ端末10から送られたサービス要求は、ネットワークを経由して、本システムに入力される。
本実施形態におけるリソースマネージャ30、サーバコンピュータ20、およびアクセラレータ40内の内部データ入出力制御部41、外部データ入出力制御部42、およびアクセラレータ間接続部60、アクセラレータ間接続入出力制御部45に関する具体的な内容例は、本発明の第1および第2の実施形態の内容を包含する(本実施形態では記載省略)。
以下具体的な処理例について説明する。
本実施形態は、外部からの入力データが画像または映像(カメラ映像やストリーミング映像等)の場合に関するものであり、ユーザは映像を画像処理した結果を要求し取得することができる。画像処理は、サーバコンピュータ20上のソフトウェアでも実行することは可能であるが、例えばソフトウェアで処理が困難な場合に、ハードウェアのアクセラレータ40で処理を実行させることにより、目的とする処理を可能にすることができる。ソフトウェアで処理が困難な場合の例としては、対象とする画像の解像度が大きい場合や、要求される画像処理のアルゴリズムが複雑で処理量が大きい場合や、要求される処理時間の制限が短い場合などが考えられる。
アクセラレータ40上の再構成ハードウェア処理部43で、このような画像処理を実行する方法について説明する。
再構成ハードウェア処理部43内の1個のタイル処理部433(物体認識処理タイル)では、例えば画像を入力し、特徴抽出処理と物体識別処理を行い、認識された物体情報データを結果データとして出力することができる(図3−1)。また、2つのタイル処理部433を接続して用いることにより、1個のタイル処理部433(特徴抽出処理タイル)では、画像を入力し、特徴抽出処理を行い、抽出された特徴量情報を出力する処理を行い、別の1個のタイル処理部433(物体識別処理タイル)では、得られた特徴量情報を入力し、物体識別処理を行い、認識された物体情報データを出力することもできる(図3−2)。また、図3−2の物体識別処理タイルにおいて、そのアルゴリズム例として、学習に基づく識別処理(SVM(Support Vector Machine)、AdaBoost、部分空間法等)を行う場合は、事前に学習した学習データが必要になるが、この学習データは物体識別処理タイル内部に保持することも可能(この場合は識別処理は効率化高速化できる可能性がある利点を持つ)であるし、また別のタイル処理部433(学習データタイル)に保持することも可能(この場合は学習データ用のタイル処理部433を他の処理にも同時に利用可能となる利点を持つ)である(図3−3)。
また、一般に画像処理として、画像を入力し各種フィルタ処理などの前処理を行うことができる。例えば、特徴抽出処理の前に入力画像をフィルタ処理(先鋭化、平滑化、エッジ抽出、FFT等による周波数変換、等の処理)し、その結果の画像を入力画像として特徴抽出処理に入力することもできる。これにより、特徴抽出処理や物体識別処理における抽出性能や識別性能を上げることができる可能性がある。また特徴抽出処理を行うために必要な前処理である場合もある。このような前処理を実装したタイル処理部433(前処理タイル)を、特徴抽出処理タイルの前に接続することにより、処理を連結して実行することができる(図3−4)。
また、画像認識処理(物体識別処理)を行った後、クラスタリング等の後処理を行うことができる。例えば、物体識別処理の後に得られた物体情報データ(物体の座標位置情報、等)を入力として、後処理(例えば、物体個数のカウント処理、クラスタリング処理(統合処理)、時間平均処理、等)を行うことにより、さらに追加の物体情報データ(物体個数等)を得たり、クラスタリング処理(統合処理)により得られたデータから、より確からしい物体情報データ(座標位置)を取得したり、時間平均処理により誤認識した可能性のある物体情報データを減らしたり、するなどが可能であり、これにより物体認識性能を向上させることができる。このような後処理を実装したタイル処理部433(後処理タイル)を、物体識別処理タイルの後に接続することにより、処理を連結して実行することができる(図3−4)。もちろんこれら前処理タイルと後処理タイルを両方利用することも容易に可能である(図3−4)。
これらのようなタイル処理部433に各々異なる処理を実装し、それらを連結させることにより、様々な組み合わせの画像処理を行うことが可能である。これらのタイル処理部433の連結方法は、リソースマネージャ30が、要求されている処理内容に基づき、タイル処理部433間の接続を切り替える処理を行ったり、新しくタイル処理部433を生成したり、不要なタイル処理部433を消去または休眠させたりすることにより、連結させて実行できる。
タイル処理部433間の接続を切り替える処理は、タイルブロック部432内のタイル制御部434や、タイルブロック部432間のタイル間接続部431の設定を変更させることにより、アクセラレータ40内の任意の複数のタイル処理部433間を接続することができる。また、アクセラレータ間接続部60を介すれば、アクセラレータ40間にまたがる任意の複数のタイル処理部433間も接続することができる。
また、新しくタイル処理部433を生成する処理は、例えば再構成可能なデバイスであるFPGAであれば、FPGAが通常持つ書き換え機能を用いて、FPGA単位もしくはFPGA内の一部の領域を書き換える(書き込む)ことにより、新しいタイル処理部433を生成したり、不要なタイル処理部433を消去(または休眠)させたりすることは容易に可能である。
具体的な処理実施形態を図3−5に示す。これは、複数の異なる入力画像に対して、それぞれの入力画像毎にハードウェアのアクセラレータ40上に必要な複数のタイル処理部433を生成し処理している例である。入力#1,#2,#3に対しては、入力画像から人物を検出する処理を、入力#4に対しては、自動車を検出する処理を行っている。
このとき、入力#1はアクセラレータ(#1)40の中でのみタイル処理部433が利用されているが、入力#2はアクセラレータ(#1)40とアクセラレータ(#2)40にまたがってタイル処理部433が利用できることを示している。同様に入力#3、入力#4についてもアクセラレータ40間をまたがってタイル処理部433を利用することができる。
また入力#1,#2のように、背景が異なる場所であれば、それぞれの場所に応じた設定を予め担当するタイル処理部433のパラメータに設定しておくことにより、それぞれに特化して識別性能が高く、かつハードウェアにより高速な認識処理を実行できる。また、入力#3では、人物を抽出した結果からさらにカウンタ処理により、人物の数を求めて出力したり、人物の大きさが小さいことを認識してその情報を出力したりしている。またハードウェアで並列処理しているので、入力#1〜#3が人物の検出処理をしている時に、入力#4に対しては自動車を検出する処理を行うことができる。
また統合処理やカウンタ処理など、処理の一部をサーバコンピュータ20側で処理させることも可能である。このときは、アクセラレータ40で処理された結果データ(物体情報データ等)をサーバコンピュータ20側に送信し、サーバコンピュータ20上のソフトウェアで処理を行い結果を出力すればよい。ソフトウェアはハードウェアより処理が遅いことから、高速に処理が必要な部分はハードウェアのアクセラレータ40に割り当て、処理が遅くても問題にならない場合やソフトウェアでも十分に高速に処理できる簡易な処理などの部分はサーバコンピュータ20に割り当てることも可能である。
(4)第4の実施形態
図4−1〜から図4−4は、本発明の第4の実施形態を説明する図である。
本実施形態のサービス提供システムは、第1、第2および第3の実施形態と同じく、ユーザ端末10からのサービス要求に対して、サーバコンピュータ20および再構成ハードウェア処理部43の持つソフトウェアリソース、ハードウェアリソースを用いて、ユーザが要求したサービスを提供するシステムである。ユーザ端末10は1つまたは複数あり、ユーザはユーザ端末10から同時または別々のタイミングでサービスを要求できる。ユーザ端末10から送られたサービス要求は、ネットワークを経由して、本システムに入力される。
本実施形態におけるリソースマネージャ30、サーバコンピュータ20、およびアクセラレータ40内の内部データ入出力制御部41、外部データ入出力制御部42、およびアクセラレータ間接続部60、アクセラレータ間接続入力制御部に関する具体的な内容例は、本発明の第1、第2および第3の実施形態の内容を包含する(本実施形態では記載省略)。
以下具体的な処理例について説明する。
本実施形態は、第3の実施形態と同様に、外部からの入力データが画像または映像(カメラ映像やストリーミング映像等)の場合に関するものであり、ユーザは映像を画像処理した結果を要求し取得することができる。画像処理は、サーバコンピュータ20上のソフトウェアでも実行することは可能であるが、例えばソフトウェアで処理が困難な場合に、ハードウェアのアクセラレータ40で処理を実行させることにより、目的とする処理を可能にすることができる。ソフトウェアで処理が困難な場合の例としては、対象とする画像の解像度が大きい場合や、要求される画像処理のアルゴリズムが複雑で処理量が大きい場合や、要求される処理時間の制限が短い場合などが考えられる。
本実施形態では、特徴抽出処理としてHOG特徴量を抽出する処理を行い、また物体識別処理として、AdaBoost識別処理(RealAdaBoost識別処理を含む)を行う例である。HOG特徴抽出は、各画素位置における画素値の勾配方向と勾配強度をベースとした局所特徴量を抽出するものであり、背景、色、照明条件等に頑健な特徴量であるという利点を持ち、人物抽出等の物体認識のために使うことができることが知られている。またAdaBoostは、各々異なる特徴に着目した多数の弱い識別器を用意し、それらの多数決(または総和等)により、強い識別器を構成するものであり、検出したい物体の形状変化に頑健な学習方式の物体識別処理として使えることが知られている。一般的なAdaBoostアルゴリズムは、多数の弱識別器の出力から多数決により強識別器を作るもので、またこれを改良して、弱識別器の出力を実数値にしてそれらの総和を求めることにより強識別器を作ることにより性能向上を図ったReal AdaBoostアルゴリズム等がある。
タイル処理部433としては、第3の実施形態の特徴抽出処理をHOG特徴抽出処理に特化し、また物体識別処理をAdaBoost識別処理に特化したものである。すなわち、HOGとAdaBoostをまとめて1つのタイルで処理するHOG+AdaBoost処理タイルを生成し、これに入力画像を入力し、物体情報データを出力することができる(図4−1)。また、HOG処理タイルと、AdaBoost処理タイルを分離しておき、それを連結して処理することもできる(図4−2)。また、HOG処理を行った結果を、複数の同じ設定(もしくは異なる設定)のAdaBoost処理に並列に入力させて並列処理を行わせることもできる(図4−3)。また、反対に、HOG処理を複数並列に実行させて1個のAdaBoost処理タイルに入力させることもできる(図4−4)。図4−3、図4−4のような方法については、HOG特徴抽出処理の負荷が大きい場合に図4−4のようにHOG処理タイルを並列に利用したり、AdaBoost識別処理の負荷が大きい場合に図4−3のようにAdaBoost処理タイルを複数並列に利用したりすることができ、リソースマネージャ30が処理負荷のバランスを考慮して効率よく組み合わせることにより、無駄の少ない効率的なハードウェア処理を実行できる。この点については、HOG処理タイルとAdaBoost処理タイルを、それぞれ特徴抽出処理と物体識別処理に置き換えた第3の実施形態においても同じような効率的な並列処理を行うことができる。
また、第3の実施形態と同様に、画像を入力し各種フィルタ処理などの前処理を行うことができる。例えば、HOG処理の前に入力画像をフィルタ処理(先鋭化、平滑化、エッジ抽出、FFT等による周波数変換、等の処理)し、その結果の画像を入力画像としてHOG処理に入力することもできる。これにより、HOG処理やAdaBoost処理における抽出性能や識別性能を上げることができる可能性がある。このような前処理をタイル処理部433に実装し、特徴抽出処理タイルの前に接続することにより、処理を連結して実行することもできる。
また、AdaBoost処理を行った後、クラスタリング等の後処理を行うことができる。例えば、AdaBoost処理の後に得られた物体情報データ(物体の座標位置情報、等)を入力として、後処理(例えば、物体個数のカウント処理、クラスタリング処理(統合処理)、時間平均処理、等)を行うことにより、さらに追加の物体情報データ(物体個数等)を得たり、クラスタリング処理(統合処理)により得られたデータからよりもっともらしい物体情報データ(座標位置)を取得したり、時間平均処理により誤認識した可能性のある物体情報データを減らしたり、するなどが可能であり、これにより物体認識性能を向上させることができる。このような後処理をタイル処理部433として実装し、AdaBoost処理を行うタイル処理部433の後に接続することにより、処理を連結して実行することができる。もちろんこれら前処理タイルと後処理タイルを両方利用することも容易に可能である。
第3の実施形態と同様に、これらのようなタイル処理部433に各々異なる処理を実装し、それらを連結させることにより、様々な組み合わせの画像処理を行うことが可能である。これらのタイル処理部433の連結方法は、リソースマネージャ30が、要求されている処理内容に基づき、タイル処理部433間の接続を切り替える処理を行ったり、新しくタイル処理部433を生成したり、不要なタイル処理部433を消去または休眠させたりすることにより、連結させて実行できる。
タイル処理部433間の接続を切り替える処理は、タイルブロック部432内のタイル制御部434や、タイルブロック部432間のタイル間接続部431の設定を変更させることにより、アクセラレータ40内の任意の複数のタイル処理部433間を接続することができる。また、アクセラレータ間接続部60を介すれば、アクセラレータ40間にまたがる任意のタイル処理部433間も複数接続することができる。
また、新しくタイル処理部433を生成する処理は、例えば再構成可能なデバイスであるFPGAであれば、FPGAが通常持つ書き換え機能を用いて、FPGA単位もしくはFPGA内の一部の領域を書き換える(書き込む)ことにより、新しいタイルを生成したり、不要なタイルを消去(または休眠)させたりすることは容易に可能である。
具体的な処理実施形態は図3−5において特徴抽出をHOGに、物体識別をAdaBoostに置き換えた(特化した)場合に相当する。入力#1,#2,#3に対しては、入力画像から人物を検出する処理を、入力#4に対しては、自動車を検出する処理を行っている。
このとき、入力#1はアクセラレータ(#1)40の中でのみタイル処理部433が利用されているが、入力#2はアクセラレータ(#1)40とアクセラレータ(#2)40にまたがってタイル処理部433が利用できることを示している。同様に入力#3、入力#4についてもアクセラレータ40間をまたがってタイル処理部433を利用することができる。
また入力#1,#2のように、背景が異なる場所であれば、それぞれの場所に応じた設定を予め担当するタイル処理部433のパラメータに設定しておくことにより、それぞれに特化して識別性能が高く、かつハードウェアにより高速な認識処理を実行できる。また、入力#3では、人物を抽出した結果からさらにカウンタ処理により、人物の数を求めて出力したり、人物の大きさが小さいことを認識してその情報を出力したりしている。またハードウェアで並列処理しているので、入力#1〜#3が人物の検出処理をしている時に、入力#4に対しては自動車を検出する処理を行うことができる。
また統合処理やカウンタ処理など、処理の一部をサーバコンピュータ20側で処理させることも可能である。このときは、アクセラレータ40で処理された結果データ(物体情報データ等)をサーバコンピュータ20側に送信し、サーバコンピュータ20上のソフトウェアで処理を行い結果を出力すればよい。ソフトウェアはハードウェアより処理が遅いことから、高速に処理が必要な部分はハードウェアのアクセラレータ40に割り当て、処理が遅くても問題にならない場合やソフトウェアでも十分に高速に処理できる簡易な処理などの部分はサーバコンピュータ20に割り当てることも可能である。
本実施形態は、外部からの入力データが画像または映像(カメラ映像やストリーミング映像等)の場合に関するものであり、また、処理内容としては、特徴抽出処理としてHOG特徴量を抽出する処理を行い、また物体識別処理として、AdaBoost識別処理(RealAdaBoost識別処理を含む)を行う例である。処理内容制御部32での具体的な制御方法例には、第1の実施形態で示したように、ユーザ要求情報、リソース利用状況情報、環境情報、および結果データ情報の内容や条件に基づいて、サーバコンピュータ20やアクセラレータ40の処理内容を変更することとなるが、本実施形態の場合の例について以下に示す。処理内容として、入力された映像から、物体(人や自動車など)を検出する識別処理を行う場合を例として考える。
環境情報を用いた例としては、例えば、これは画像認識処理であることから、昼の時間帯は昼用に特化した識別用の学習データを使い、夜は夜用に特化した識別用の学習データを使う方が識別率が高くなるので、時間によってSW上のプログラムもしくはアクセラレータ40上のタイル処理部433に書き込まれている処理内容を書き換えたり(もしくは既に書き込まれているタイル処理部433に切り替えたり)して、処理内容を最適なものに変更することが考えられる。同様に、天候情報によって学習データを変更したり(書き換えたり)、移動可能なカメラ映像の場合は、その場所や背景によって学習データを変更したりすることが考えられる。さらに、そのような環境情報の変化に応じて、画像処理のための各種パラメータ(特徴抽出処理等でのウィンドウサイズ、識別処理等での閾値処理時の閾値など)を最適になるように変更することも可能である。
その場所や背景に適したパラメータや学習データを決定する例としては、例えばカメラの場所が屋外か屋内か、背景がシンプルな映像か複雑な映像か、光(照明や太陽)がどのような向きでどの程度当たっている場所か、などの撮影条件等の違い(度合い)によって、画像処理する際の閾値等のパラメータをその場所の条件に適した値(例えば、背景や物体の明るさに応じて検出アルゴリズムのパラメータを変えたり、明るさを調整するフィルタ処理をほどこしたり、また背景の色合いや複雑度に応じてその背景に適した学習データに変えて画像認識処理を行うようにしたりすればよい)に設定・変更することで、カメラの場所を変えてもより精度の高い画像処理を行うことができる。また、その場所の映像中に検出したい物体(人や車など)について何がどの程度の数あるか、その物体はどの程度の大きさか、またその映像中の背景として(検出したい物体かどうかを問わず)動く物体があるか、などの撮影場所の条件の違いによって学習データや画像処理時のパラメータを変えることで、カメラの場所を変えてもより精度の高い画像処理を行うことができる。これらのようなパラメータや学習データ等の変更は、リソースマネージャ30が入力された映像に応じて判断し、より精度の高くなる状態に調整することができる。この際、カメラの場所の変化が検出されたことをトリガーとして、パラメータや学習データ等の変更を行うようにしてもよい。また、カメラの場所とパラメータや学習データ等とを対応付けて記憶したデータベースを予め用意しておき、カメラの場所の変化が検出された場合に、その場所に応じたパラメータや学習データ等をデータベースから読み出し、利用するようにしてもよい。
なお、背景の情報を取得する方法の例としては、例えば入力映像中の色に関する情報(RGBやHSVの割合や全体の明るさ等)を測定したり、入力映像中で時系列の変化を比較して動きのない領域(オプティカルフロー等の画像処理により容易に抽出可能であり、カメラ自体が動いている場合はその既知のカメラの動きを差し引けば同様に可能である)を背景領域として抽出したりすることが容易に可能である。
また、移動可能なカメラの場所もしくはその変化を取得する方法としては、例えばカメラにGPS機能を搭載し常時カメラの地理的な位置をシステムが(リソースマネージャ30が)把握することは容易に可能である。また、ユーザが持ち運び可能なハンディカメラやモバイル機器のような移動可能なカメラであれば、ユーザがその場所の情報を手動入力したり、場所(エリア)のリスト一覧から選択して入力したりすることにより、ネットワークを介してリソースマネージャ30はそのカメラの場所を容易に把握することが可能である。そのような移動可能なカメラとしては、ユーザが手に持って常に動いている場合や、USBカメラや監視カメラのように利用時は場所を固定するが、取り外して設置場所を移動する場合や、首振り可能な監視カメラのように場所は同じでカメラの向きだけ変えられる場合などが考えられる。
また、結果データ情報を用いた例としては、画像識別処理の結果データとして、例えば、入力画像から得られた物体(人や自動車等)の識別個数の情報や、その識別した物体座標値(複数あればそのリスト)などが考えられる。識別個数の利用例としては、識別個数がある閾値以上となる場合は、検出人数が多すぎる(誤識別が含まれる)と判断して、識別個数を減らすように、識別処理の閾値(例えばRealAdaBoostであれば強識別器の出力値に対する最終閾値)を変更することができる。逆に、識別個数がずっと0の場合は、識別個数を増やすように、当該閾値を変更することができ、これを繰り返すことで最適な閾値になるように、リソースマネージャ30が自動で調整することができる。
また、結果データ情報を用いた他の例としては、入力画像から物体を検出する際に、検出ウィンドウの最適なサイズが分からない場合に、複数のプログラムもしくはタイル処理部433を利用して、複数のウィンドウサイズに対する処理を並行して処理させ、得られる識別個数などの結果データから、最適なウィンドウサイズを判定する方法が考えられる。また、並行に処理させず、1つのタイル処理部433で1つのウィンドウサイズに対する処理を行い、その結果データ(識別個数等)から、ウィンドウサイズを増減させ、最適なウィンドウサイズに収束させる方法も考えられる。
これらは、第1の実施形態と同様に、初めに制御方法(判断手順)を設定さえしておけば、人が場合に応じて手動で設定変更したりせずに、リソースマネージャ30が自己判断で自動的に、最適な状態になるよう処理内容の変更制御を継続的に行うことができるようになり、人の稼動が不要でかつ迅速、確実、安定した対応が可能なシステムを実現できる。
本発明によれば、サーバコンピュータ20によるソフトウェア処理と、ハードウェアを用いたアクセラレータ40によるハードウェア処理と、を組み合わせることにより、負荷の大きい処理はアクセラレータ40に割り当てることができるため、多数のユーザからの大容量かつリアルタイム処理が必要な処理に対して対応できるようになるという効果が得られる。
また、ハードウェアのアクセラレータ40として、従来のような機能が固定されたハードウェアではなく、再構成可能なハードウェア(FPGA等)を用いたアクセラレータ40とすることにより、処理高速化とともに高い汎用性・柔軟性を持つシステムを実現することができるという効果が得られる。
また、アクセラレータ40として、サービス動作中に異なる機能回路をハードウェア上に再構成できるようにすることにより、複数のユーザからの異なる要求に対しても、サービスを止めることなく、高速な処理を並列かつ機能を変更して処理を実行することができるという効果が得られる。
また、リソースマネージャ30として、ユーザ要求情報だけでなく、環境情報、および結果データ情報の内容や条件にも基づいて、サーバコンピュータ20やアクセラレータ40の処理内容を変更することができ、初めに制御方法を設定さえしておけば、途中で人が手動で設定変更する必要なく、リソースマネージャ30が自己判断で自動的に、最適な状態になるよう制御できるようになり、人の稼動が不要、かつ迅速、確実、安定した対応が可能なシステムを実現できるという効果が得られる。
また、アクセラレータ40内の再構成可能なタイル処理部433に、HOG特徴抽出処理とRealAdaBoost識別処理の機能を実装することにより、複数の映像入力かつ膨大な計算量であっても、リアルタイム処理ができるという効果が得られる。