以下、本発明の実施の形態を、図面を参照して説明する。以下では、本発明に係る認識装置を、FPGA(Field-Programmable Gate Array)等のPLD(Programmable Logic Device)によって実現した例について説明する。
[第1の実施の形態]
図1は、第1の実施の形態に係るPLDを適用した学習システムの例を示した図である。図1に示すように、学習システムは、自動車等の車両1と、車両1が備えるECU(Electronic Control Unit)2と、学習装置3と、DB(Data Base)4と、を有している。ECU2は、例えば、無線通信によって、インターネット等のネットワーク5にアクセスし、学習装置3およびDB4と通信を行う。
図1の矢印A1に示す図は、車両1が備えるECU2の拡大図である。矢印A1に示すように、ECU2は、PLD2aを有している。PLD2aは、ニューラルネットワークNNを有している。
DB4には、学習装置3が学習する学習データが記憶されている。学習データは、例えば、道路の画像データや、自動車、バイク、自転車等の車両の画像データ、標識等の画像データである。DB4は、例えば、データセンタやクラウドシステムによって管理されている。
学習装置3は、人工知能を搭載し、DB4に記憶されている学習データ(画像データ)に基づいて学習を行う(図1の矢印A11)。学習装置3は、学習データの学習結果に基づいて、車両1のPLD2aに形成されるニューラルネットワークNNの構造を生成(決定)する。ニューラルネットワークNNの構造とは、例えば、ユニット間の接続関係や重み係数である。
学習装置3は、例えば、数日から数週間等に1度等、周期的にDB4の画像データの学習を行い、PLD2aのニューラルネットワークNNの構造を生成する。そして、学習装置3は、生成したニューラルネットワークNNの構造(構造の情報)を、ネットワーク5を介して、ECU2に送信する(図1の矢印A12)。
ECU2は、学習装置3から、学習装置3が生成したニューラルネットワークNNの構造を受信する。ECU2が有するPDL2aには、学習装置3から送信された構造のニューラルネットワークNNが形成される。すなわち、車両1のPLD2aのニューラルネットワークNNは、その構造が、学習装置3によって周期的に更新される。
車両1には、車両1の前方等、車両1の周囲を撮影するカメラ(図示せず)が搭載されている。PLD2aには、車両1に搭載されたカメラによって撮影される画像データD1が入力される。PLD2aは、学習装置3が生成したニューラルネットワークNNによって、入力された画像データD1の認識(または認知)および判断を行う。
例えば、PLD2aは、入力された画像データD1において、交差点や歩行者、信号の状態を認識し、危険であるか否か判断する。PLD2aは、入力された画像データD1において、危険であると判断した場合、危険を回避する回避行動の指示を出力する。例えば、PLD2aは、車両1が前方の車両に衝突しそうな場合、ブレーキ指示を出力する。
また、PLD2aは、以下で詳述するが、ニューラルネットワークNNによって、入力される画像データD1の中から、特徴のある画像データD2を抽出する。特徴のある画像データD2とは、学習装置3が学習していない画像データ(DB4に記憶されていない画像データ)である。ECU2は、PLD2aによって抽出された特徴のある画像データD2を、ネットワーク5を介して、DB4に送信する(図1の矢印A13)。すなわち、PLD2aによって、特徴があると判断された画像データD2は、DB4に記憶される。
ここで、学習装置3は、DB4の今ある画像データを学習して、PLD2aのニューラルネットワークNNの構造を生成している。しかし、車両1が走行する環境は、日々変化する。例えば、自動車のデザインや危険対象物は、日々変化する。そのため、新たなデザインの自動車や新たな危険対象物が出現した場合、PLD2aのニューラルネットワークNNは、新たなデザインの自動車や新たな危険対象物を適切に認識することができない場合がある。
しかし、上記したように、PLD2aは、ニューラルネットワークNNによって、入力される画像データD1の中から、特徴のある画像データD2(新たなデザインの自動車や新たな危険対象物の画像データ)を抽出する。そして、抽出された特徴のある画像データD2は、ネットワーク5を介してDB4に送信され、記憶される。
これにより、学習装置3は、特徴のある画像データD2を学習でき、新たなデザインの自動車や新たな危険対象物に対応した、ニューラルネットワークNNの構造を生成できる。そして、PLD2aは、新たなデザインの自動車や新たな危険対象物が出現しても、それらを適切に認識および判断することができる。つまり、PLD2aは、使用環境での学習データを効率的に収集し、日々変化する使用環境に応じた認識処理等を行うことができる。
また、PLD2aは、特徴のある画像データD2を抽出し、抽出した特徴のある画像データD2をネットワーク5に送信する。すなわち、車両1は、撮影する全ての画像データをネットワーク5に送信しなくてよい。これにより、DB4の記憶容量を抑制できる。また、ネットワーク5の負荷を抑制できる。
なお、上記では、学習装置3は、周期的にDB4の画像データを更新するとしたが、例えば、自動車メーカが行うECU2のプログラム更新時に、DB4の画像データの学習を行ってもよい。そして、学習装置3が学習して生成したPLD2aのニューラルネットワークNNの構造を、自動車メーカが、ECU2の更新プログラムとともに、ECU2に送信してもよい。
また、図1では、学習装置3とDB4は、別々の装置としているが、1台の装置で構成してもよい。
また、図1では、車両を1台しか示していないが、複数台存在してもよい。
以下では、学習装置3およびDB4を、上位システムと呼ぶことがある。
図2は、図1のPLD2aのブロック構成例を示した図である。図2に示すように、PLD2aは、入力部11と、ニューラルネットワーク12a,12bと、比較部13と、通信部14と、リコンフィグデータメモリ15と、シーケンスデータメモリ16と、リコンフィギュラブルコントローラ17と、タイマ18と、データメモリ19と、を有している。
図1に示した車両1は、カメラを搭載している。車両1が搭載するカメラは、例えば、車両1の周囲を撮影している。入力部11には、車両1が有するカメラから出力される画像データが入力される。
ニューラルネットワーク12a,12bは、図1に示したニューラルネットワークNNに対応している。ニューラルネットワーク12a,12bのそれぞれには、入力部11に入力された画像データが入力される。ニューラルネットワーク12a,12bは、入力された画像データの認識および判断を行う。
ニューラルネットワーク12bの構造は、ニューラルネットワーク12aの構造と一部異なっている。例えば、図2に示すニューラルネットワーク12bの四角の網掛け部分は、ニューラルネットワーク12aの構造と異なっている部分を示している。ニューラルネットワーク12a,12bの構造は、上位システムから送信される。例えば、図1で説明したように、ニューラルネットワーク12a,12bの構造は、学習装置3の学習によって生成され、周期的にPLD2aに送信される。
ニューラルネットワーク12aの出力結果(出力値)は、比較部13および車両制御部に出力される。車両制御部は、ニューラルネットワーク12aの出力結果に基づいて、所定の車両制御(例えば、車両1のブレーキ制御やハンドル制御等)を行う。
ニューラルネットワーク12bの出力結果は、比較部13に出力される。ニューラルネットワーク12bは、入力部11に入力された画像データから、特徴のある画像データを抽出するためのニューラルネットワークである。以下では、特徴のある画像データを、特徴画像データと呼ぶことがある。
比較部13は、ニューラルネットワーク12aの出力結果と、ニューラルネットワーク12bの出力結果とを比較する。比較部13は、ニューラルネットワーク12aの出力結果と、ニューラルネットワーク12bの出力結果とが所定の基準以上(所定の閾値以上)異なる場合、特徴検出信号を通信部14へ出力する。例えば、比較部13は、ニューラルネットワーク12aの出力結果と、ニューラルネットワーク12bの出力結果との類似度が所定以上異なる場合、特徴検出信号を通信部14へ出力する。
通信部14は、無線通信によって、インターネット等のネットワーク5にアクセスし、ネットワーク5に接続された上位システムと通信を行う。通信部14は、上位システムから送信されたニューラルネットワーク12aの構造をリコンフィギュラブルコントローラ17に出力する。また、通信部14は、上位システムから送信されたニューラルネットワーク12bの構造をリコンフィグデータメモリ15に記憶する。なお、以下で説明するが、上位システムから送信されるニューラルネットワーク12bの構造は、複数(複数パターン)ある。
また、通信部14は、比較部13から特徴検出信号が出力されたとき、データメモリ19に記憶されている画像データを上位システムに送信する。すなわち、通信部14は、比較部13によって、入力部11に入力された画像データが特徴画像データであると判断されると、入力部11に入力された画像データ(データメモリ19に記憶されている画像データ)を、上位システムに送信する。これにより、上位システムは、車両1の使用環境に応じた学習を行うことができる。
リコンフィグデータメモリ15には、通信部14が上位システムから受信したニューラルネットワーク12bの構造が記憶される。上記したように、上位システムから送信されるニューラルネットワーク12bの構造は、複数存在する。
図3は、リコンフィグデータメモリ15に記憶されるニューラルネットワーク12bの構造例を説明する図である。図3に示す「00」、「01」…「N」は、ニューラルネットワーク12bの構造を識別する識別子である。識別子は、ニューラルネットワーク12bの構造とともに、上位システムから送信される。
図3に示す網掛け部分は、ニューラルネットワーク12aの構造と異なっている部分を示している。ニューラルネットワーク12bは、各層において、一部の構造が(網掛け部分)が、ニューラルネットワーク12aと異なっている。上位システムからは、(N+1)個の異なるニューラルネットワーク12bの構造(構造の情報)が送信され、リコンフィグデータメモリ15に記憶される。
なお、リコンフィグデータメモリ15には、ニューラルネットワーク12bの構造の全てを記憶しなくてもよい。例えば、リコンフィグデータメモリ15には、ニューラルネットワーク12aの構造と異なっている部分のみ(網掛け部分のみ)を記憶してもよい。
図2の説明に戻る。シーケンスデータメモリ16には、リコンフィギュラブルコントローラ17が、リコンフィグデータメモリ15に記憶されているニューラルネットワーク12bの構造を参照するシーケンスが記憶されている。例えば、シーケンスデータメモリ16には、ニューラルネットワーク12bの識別子が記憶されている。
図4は、シーケンスデータメモリ16のデータ構成例を示している。図4に示す「00」、「01」…「N」は、ニューラルネットワーク12bの識別子に対応している。
図2の説明に戻る。リコンフィギュラブルコントローラ17は、通信部14によって受信されたニューラルネットワーク12aの構造に基づいて、ニューラルネットワーク12aを形成する。
また、リコンフィギュラブルコントローラ17は、シーケンスデータメモリ16に記憶されているシーケンスに従って、リコンフィグデータメモリ15を参照し、ニューラルネットワーク12bを形成する。リコンフィギュラブルコントローラ17は、タイマ18からの周期的な指示に応じて、リコンフィグデータメモリ15を参照し、ニューラルネットワーク12bを形成する。
例えば、図4に示したシーケンス例の場合、リコンフィギュラブルコントローラ17は、タイマ18からの指示に応じて、識別子「00」の構造のニューラルネットワーク12b(図3の「00」に対応するニューラルネットワークを参照)を形成する。リコンフィギュラブルコントローラ17は、タイマ18から次の指示があると、識別子「01」の構造のニューラルネットワーク12b(図3の「01」に対応するニューラルネットワークを参照)を形成する。以下同様にして、リコンフィギュラブルコントローラ17は、タイマ18からの指示に応じて、識別子「N」の構造のニューラルネットワーク12b(図3の「N」に対応するニューラルネットワークを参照)を形成する。リコンフィギュラブルコントローラ17は、識別子「N」の構造のニューラルネットワーク12bを形成すると、次は、識別子「00」の構造のニューラルネットワーク12bを形成する。
データメモリ19には、入力部11に入力された画像データが一時的に記憶される。通信部14は、比較部13からの特徴検出信号に応じて、データメモリ19に記憶されている画像データを、上位システムに送信する。
このように、PLD2aに形成されるニューラルネットワーク12bは、タイマ18の周期に応じて、その構造が変更される。すなわち、比較部13は、ニューラルネットワーク12aの出力結果と、一部の構造が周期的に変更されるニューラルネットワーク12bの出力結果とを比較する。これにより、PLD2aは、様々な特徴画像データを抽出し、上位システムに送信できる。
そして、上位システムは、PLD2aによって抽出された新たな画像データを学習し、新たな学習に基づいたニューラルネットワーク12a,12bを生成できる。PLD2aは、この新たな学習に基づいたニューラルネットワーク12a,12bを受信することにより、新たな環境に対応することができる。
図5は、PLD2aの動作例を説明するタイミングチャートである。なお、通信部14は、上位システムから、ニューラルネットワーク12aの構造と、ニューラルネットワーク12bの複数の構造とを受信しているとする。そして、通信部14は、上位システムから受信したニューラルネットワーク12bの複数の構造を、図3に示したように、リコンフィグデータメモリ15に記憶しているとする。また、リコンフィギュラブルコントローラ17は、通信部14が受信したニューラルネットワーク12aの構造に基づいて、ニューラルネットワーク12aを形成しているとする。
図5に示す「Clk」は、PLD2aが動作する基準クロックを示している。
「Timer」は、タイマ18がリコンフィギュラブルコントローラ17にタイマ信号を出力するタイミングを示している。すなわち、リコンフィギュラブルコントローラ17は、図5の「Timer」に示すタイミングで、リコンフィグデータメモリ15を参照し、ニューラルネットワーク12bを形成する。なお、リコンフィギュラブルコントローラ17は、図4に示したシーケンスデータメモリ16のシーケンス順(識別子順)に、図3に示したリコンフィグデータメモリ15を参照する。
「Reconfig」は、PLD2aに形成されるニューラルネットワーク12bを示している。図5の例の場合、最初の「Timer」に示すタイミングで、まず、識別子「00」のニューラルネットワーク12bが形成されることを示している。次の「Timer」タイミングで、識別子「01」のニューラルネットワーク12bが形成されることを示している。次の「Timer」のタイミングで、識別子「02」のニューラルネットワーク12bが形成されることを示している。
「Input Data(Buffer)」は、データメモリ19が、入力部11に入力される画像データを記憶するタイミングを示している。
「Comp Enbl」は、比較部13がニューラルネットワーク12aの出力結果と、ニューラルネットワーク12bの出力結果とを比較するタイミングを示している。図5の例では、比較部13は、「Comp Enbl」がH状態のとき、ニューラルネットワーク12aの出力結果と、ニューラルネットワーク12bの出力結果とを比較する。
なお、「Comp Enbl」は、少なくとも、ニューラルネットワーク12bのリコンフィグが行われている間は、L状態となっている。すなわち、比較部13は、ニューラルネットワーク12bのリコンフィグが行われている間は、ニューラルネットワーク12aの出力結果と、ニューラルネットワーク12bの出力結果とを比較しない。
「Comp Rslt」は、比較部13から通信部14に出力される特徴検出信号を示している。なお、特徴検出信号は、図5の「Mask」に示すように、ニューラルネットワーク12bのリコンフィグが行われている間、通信部14に出力されないようマスクされる。
「Upload」は、通信部14がデータメモリ19に記憶されている画像データを上位システムに送信するタイミングを示している。通信部14は、特徴検出信号(CompRslt)がアクティブになったとき(比較部13から出力されたとき)、特徴検出信号を出力する元となった画像データをデータメモリ19から抽出し、上位システムに送信する。
図6は、ニューラルネットワーク12a,12bの変更処理例を示したシーケンス図ある。図6には、学習装置3およびPLD2aのシーケンス例が示してある。学習装置3は、例えば、少なくともステップS1の学習周期より短い周期で、繰り返し図6に示すシーケンスを実行する。学習周期は、例えば、1週間である。
まず、学習装置3は、学習周期になったか否か判定する(ステップS1)。学習装置3は、学習周期でないと判定した場合(S1の「No」)、当該シーケンスの処理を終了する。
一方、学習装置3は、学習周期であると判定した場合(S1の「Yes」)、DB4を参照し、DB4に記憶されている画像データを学習する(ステップS2)。DB4に記憶されている画像データは、図1で説明したように、例えば、道路の画像データや、自動車、バイク、自転車等の車両の画像データ、標識等の画像データであり、学習装置3は、これらの画像データに基づいて、例えば、車両1における危険対象物などを学習する。
学習装置3は、ステップS2による学習により、車両1のPLD2aに形成するニューラルネットワーク12a,12bの構造を生成する(ステップS3)。
例えば、学習装置3は、PLD2aが車両1の危険物等を認識するためのニューラルネットワーク12aの構造を生成する。また、学習装置3は、例えば、PLD2aが特徴画像データを抽出するためのニューラルネットワーク12bの構造を生成する。なお、ニューラルネットワーク12bの構造は、上記したように、様々な特徴画像データを抽出できるよう複数生成される(例えば、図3参照)。
学習装置3は、ステップS3にて生成したニューラルネットワーク12a,12bの構造を、車両1に送信する(ステップS4)。
PLD2aの通信部14は、ステップS4にて送信されたニューラルネットワーク12a,12bの構造を受信する(ステップS5)。
PLD2aの通信部14は、ステップS5にて受信したニューラルネットワーク12bの構造を、リコンフィグデータメモリ15に記憶する(ステップS6)。これにより、リコンフィグデータメモリ15には、例えば、図3に示したように、構造が異なる複数のニューラルネットワーク12bの構造が記憶される。
PLD2aのリコンフィギュラブルコントローラ17は、ステップS5にて受信したニューラルネットワーク12a,12bの構造を有する、ニューラルネットワーク12a,12bを形成する(ステップS7)。なお、リコンフィギュラブルコントローラ17は、ニューラルネットワーク12bに対しては、シーケンスデータメモリ16に記憶されているシーケンスの最初のシーケンスに従って、形成する。例えば、図5の例の場合、リコンフィギュラブルコントローラ17は、識別子「00」のニューラルネットワーク12bを形成する。
以上のシーケンスにより、PLD2aには、学習周期ごとに、最新の学習に基づいたニューラルネットワーク12a,12bが形成される。
図7は、ニューラルネットワーク12bの形成および特徴画像データの抽出の処理例を示したシーケンス図ある。図7には、PLD2aおよびDB4のシーケンス例が示してある。PLD2aは、例えば、入力部11に画像データが入力される周期(図5の「Input Data(Buffer)を参照」)で、繰り返し図7に示すシーケンスを実行する。
まず、PLD2aタイマ18は、タイマ時間(図5の「Timer」を参照)になったか否か判定する(ステップS11)。タイマ18は、タイマ時間になっていないと判定した場合(S11の「No」)、処理をステップS13へ移行する。
一方、タイマ18が、タイマ時間になったと判定した場合(S11の「Yes」)、PLD2aのリコンフィギュラブルコントローラ17は、シーケンスデータメモリ16に記憶されているシーケンスに基づいて、リコンフィグデータメモリ15を参照し、ニューラルネットワーク12bを形成する(図5の「Reconfig」を参照)。これにより、PLD2aには、タイマ時間ごとに、例えば、図3に示した識別子「00」〜「N」の構造のニューラルネットワーク12bが、順番に繰り返し形成される。
PLD2aの比較部13は、ニューラルネットワーク12aの出力結果と、ニューラルネットワーク12bの出力結果とを比較する(ステップS13)。
PLD2aの比較部13は、ニューラルネットワーク12aの出力結果と、ニューラルネットワーク12bの出力結果との比較結果が、所定の基準以上異なるか否か判定する(ステップS14)。比較部13は、ニューラルネットワーク12aの出力結果と、ニューラルネットワーク12bの出力結果との比較結果が、所定の基準以上異なっていない場合(S14の「No」)、当該シーケンスの処理を終了する。
一方、比較部13は、ニューラルネットワーク12aの出力結果と、ニューラルネットワーク12bの出力結果との比較結果が、所定の基準以上異なっている場合(S14の「Yes」)、特徴検出信号を通信部14へ出力する(ステップS15)。
PLD2aの通信部14は、ステップS15にて出力された特徴検出信号に基づいて、データメモリ19に記憶されている画像データ(特徴画像データ)を、DB4に送信する(ステップS16)。
DB4は、ステップS16にて送信された特徴画像データを受信する(ステップS17)。そして、DB4は、ステップS17にて受信した特徴画像データを記憶する(ステップS18)。
以上のシーケンスにより、PLD2aには、タイマ時間ごとに、構造の異なるニューラルネットワーク12bが形成される。また、入力部11に特徴のある画像データ入力された場合、特徴画像データとして、DB4に送信および記憶される。これにより、学習装置3は、新たな学習データ(特徴画像データ)を含む学習データに基づいて、学習をすることができる。
図8は、リコンフィギュラブルコントローラ17のブロック構成例を示した図である。図8において、図2と同じものには同じ符号が付してある。図8には、リコンフィギュラブルコントローラ17の他に、図2に示したリコンフィグデータメモリ15と、タイマ18と、が示してある。また、図8には、リコンフィギュラブルコントローラ17の他に、ニューラルネットワーク12a,12bが形成されるニューラルネットワークエリア31a,31bが示してある。なお、図8では、リコンフィギュラブルコントローラ17がシーケンスデータメモリ16を有しているが、図2に示したように、リコンフィギュラブルコントローラ17の外に、シーケンスデータメモリ16が形成されてもよい。また、リコンフィグデータメモリ15は、リコンフィギュラブルコントローラ17内に形成されてもよい。
リコンフィギュラブルコントローラ17は、制御部21と、R/W部22と、を有している。制御部21は、例えば、電源等が投入されたとき、例えば、不揮発性のメモリであるリコンフィグデータメモリ15に記憶されている初期コンフィグ用データを参照して、PLD2aを初期コンフィグする。
次に、制御部21は、リコンフィグデータメモリ15を参照し、R/W部22を介して、順次、ニューラルネットワークエリア31a,31bの各領域をリコンフィグ制御する。その際、制御部21は、シーケンスデータメモリ16のシーケンスに従って、リコンフィグ制御を行う。シーケンスデータメモリ16には、初期コンフィグ用データと、時分割でリコンフィグを行うためのデータ(例えば、ニューラルネットワーク12bの構造)とが別々に記憶される。
ニューラルネットワークエリア31a,31bは、例えば、CRAM(Configuration Random Access Memory)等のコンフィギュレーションメモリである。ニューラルネットワークエリア31aには、例えば、ニューラルネットワーク12aが形成され、ニューラルネットワークエリア31bには、例えば、ニューラルネットワーク12bが形成される。図8のニューラルネットワークエリア31aには、8層(レイヤ0〜レイヤ7)のニューラルネットワーク12aが形成されている例を示している。
図9は、PLD2aのハードウェア構成例を示した図である。図9において、図2および図8と同じものには同じ符号が付してある。なお、図9では、図2に示した入力部11、比較部13、通信部14、リコンフィグデータメモリ15、タイマ18、データメモリ19のハードウェアの図示を省略している。また、図9では、図8と異なり、シーケンスデータメモリ16は、リコンフィギュラブルコントローラ17の外に形成されている。
図9に示すニューラルネットワークエリア31aは、例えば、CRAMで形成され、入力された画像データを認識および判断するニューラルネットワーク12aが形成される。ニューラルネットワークエリア31bは、例えば、CRAMで形成され、入力された画像データから特徴画像データを抽出するためのニューラルネットワーク12bが形成される。
ニューラルネットワークエリア31aは、重み係数を格納する格納エリア51と、ニューラルネットワーク12aの層間等の接続関係の情報を格納する格納エリア52と、演算を行う演算エリア53とを有している。ニューラルネットワークエリア31bも同様の格納エリアおよび演算エリアを有している。
R/W部22は、CRAMに対してデータのリードおよびライト制御を行う。アドレス出力部41は、CRAMの物理アドレスを出力する。シーケンスコントローラ42は、シーケンスデータメモリ16のシーケンスに従って、アドレス出力部41およびコピーアドレスマップメモリ43を制御する。コピーアドレスマップメモリ43は、ニューラルネットワークエリア31a,31bの物理アドレスの対応関係を記憶したメモリである。
制御部21は、時分割でニューラルネットワーク12bの重み係数と接続関係とを変更するため、論理情報を格納するCRAMに重み係数も格納する。ニューラルネットワーク12bが形成されるニューラルネットワークエリア31bは、タイマ18のタイマ時間間隔で書き換えられる。これにより、CRAM内のニューラルネットワークエリア31bは、時分割で自律的に書き換えられる。
従来のニューラルネットワークの重み係数は、RAMブロックに格納され、1ワード毎にR/Wが行われるが、FPGAの特徴である並列化された演算器へのデータ供給を複数同時に実行することが困難である。PLD2aでは、CRAMに重み係数を格納することで、複数の演算器に同時に重み係数値を供給することが可能となる。また、RAMブロックは、ニューラルネットワークのコピー処理を実行している際に、読み出しポートが占有されるため重み係数を読み出すことが困難となるが、PLD2aでは、演算時の読み出し経路とは独立したコンフィギュレーション用バスを、R/W部22を介して行うことで演算処理を停止することなく更新することが可能となる。さらに、RAMブロックは、FPGAの物理配置上、グループ化かつ固定化されているため、ニューラルネットワークの構造を変更した際に配置場所によっては配線遅延が大きくなるが、PLD2aでは、ネットワークと重み係数ともにコンフィギュレーションメモリに実装するため、配置を近接することができ配線遅延を小さくすることができる。以上により書き換えのための新たなメモリや論理回路が不要となり小規模なFPGAへの実装が可能となる。
以上説明したように、PLD2aは、画像データが入力されるニューラルネットワーク12aと、ニューラルネットワーク12aと構造が異なる画像データが入力されるニューラルネットワーク12bと、ニューラルネットワーク12aの出力結果と、ニューラルネットワーク12bの出力結果とを比較する比較部13と、を有する。そして、PLD2aは、ニューラルネットワーク12aの出力結果と、ニューラルネットワーク12bの出力結果とが所定の基準以上異なったときの画像データを、画像データを学習する上位システムに無線送信する通信部14を有する。これにより、PLD2aは、使用環境での画像データを効率的に収集することができる。
また、PLD2aは、使用環境での画像データを効率的に収集するので、上位システムは、日々変化する使用環境に応じたニューラルネットワーク12a,12bを生成できる。また、PLD2aは、上位システムによって生成された、日々変化する使用環境に応じたニューラルネットワーク12a,12bによって、適切な認識処理等を行うことができる。
また、PLD2aは、カメラが撮影する全ての画像データを学習データとしてネットワーク5に送信しない。これにより、DB4の記憶容量を抑制できる。また、ネットワーク5の負荷を抑制できる。
また、PLD2aは、所定の周期で、複数の異なる構造のニューラルネットワーク12bを形成する。これにより、PLD2aは、様々な種類の特徴画像データを抽出することができる。
また、プログラマブルロジックデバイスを用いて、ニューラルネットワーク構造をコンフィギュレーションメモリ上に実現することで、高い性能を小規模、省電力で実現することができる。
また、PLD2aは、2つのニューラルネットワーク12a,12bを備えることにより、認識処理等に負担を掛けずに、使用環境での画像データを収集することができる。
[第2の実施の形態]
第2の実施の形態では、第1の実施の形態に対し、ニューラルネットワーク12bの構造が異なる。第1の実施の形態のニューラルネットワーク12b(図3参照)は、各層の一部の構造がニューラルネットワーク12aと異なっていたが、第2の実施の形態では、ニューラルネットワーク12aに対し、一部の層方向の構造が異なっている。
図10は、第2の実施の形態に係るPLD2aのブロック構成例を示した図である。図10において、図2と同じものには同じ符号が付してある。以下では、図2と異なる部分について説明する。
図10に示すニューラルネットワーク61の構造は、ニューラルネットワーク12aの構造と一部異なっている。例えば、ニューラルネットワーク61は、ニューラルネットワーク12aに対し、一部の層方向の構造が異なっている。より具体的には、ニューラルネットワーク61は、ニューラルネットワーク12aの層方向部分12aaの構造が、ニューラルネットワーク12aと異なっている。
なお、図10には示してないが、ニューラルネットワーク12bのニューラルネットワーク12aと異なっている部分以外の部分は、ニューラルネットワーク12aと同じ構造を有している。すなわち、ニューラルネットワーク12bは、ニューラルネットワーク12aに対し、層方向部分12aaのみが異なっている。
ニューラルネットワーク61の構造は、複数存在する。リコンフィグデータメモリ15には、ニューラルネットワーク61の複数の構造が記憶される。
図11は、リコンフィグデータメモリ15に記憶されるニューラルネットワーク61の構造例を説明する図である。図11に示す「00」、「01」…「N」は、ニューラルネットワーク61の構造を識別する識別子である。
図11に示す点線部分は、ニューラルネットワーク12aと異なっている構造部分を示している。リコンフィグデータメモリ15には、例えば、図11に示すような、識別子「00」〜「N」の複数のニューラルネットワーク61の構造が記憶される。
なお、リコンフィグデータメモリ15には、ニューラルネットワーク12aと異なっている部分のみが記憶される。すなわち、リコンフィグデータメモリ15には、図11に示す点線部分の構造のみが記憶される。そして、図10に示したリコンフィギュラブルコントローラ17は、点線部分以外の構造を、ニューラルネットワーク12aからコピーし、ニューラルネットワーク61を形成する。
以上説明したように、ニューラルネットワーク61は、ニューラルネットワーク12aに対し、一部の層方向の構造が異なっている。これにより、PLD2aは、使用環境での画像データを効率的に収集することができる。
なお、上記では、リコンフィグデータメモリ15には、ニューラルネットワーク12aと異なっている構造部分のみが記憶されるとしたが、ニューラルネットワーク12aと同じ構造部分も記憶してもよい。例えば、リコンフィグデータメモリ15には、図11に示す点線部分以外の構造も記憶してもよい。
[第3の実施の形態]
第3の実施の形態では、ニューラルネットワーク12bの構造が、ニューラルネットワーク12aに対し、1枚の層の全体において異なっている。
図12は、第3の実施の形態に係るPLD2aのブロック構成例を示した図である。図12において、図2と同じものには同じ符号が付してある。以下では、図2と異なる部分について説明する。
図12に示すニューラルネットワーク71の構造は、ニューラルネットワーク12aの構造と一部異なっている。例えば、ニューラルネットワーク71は、ニューラルネットワーク12aに対し、1つの層の構造が異なっている。
ニューラルネットワーク71の構造は、複数存在する。リコンフィグデータメモリ15には、ニューラルネットワーク71の複数の構造が記憶される。
図13は、リコンフィグデータメモリ15に記憶されるニューラルネットワーク71の構造例を説明する図である。図11に示す「00」、「01」…「N」は、ニューラルネットワーク71の構造を識別する識別子である。
図13に示す網掛けの層は、ニューラルネットワーク12aと構造が異なっている層を示している。例えば、識別子「00」のニューラルネットワーク71は、第1層がニューラルネットワーク12aと構造が異なっている。例えば、識別子「01」のニューラルネットワーク71は、第2層がニューラルネットワーク12aと構造が異なっている。リコンフィグデータメモリ15には、例えば、図13に示すような、識別子「00」〜「N」の複数のニューラルネットワーク71の構造が記憶される。
なお、リコンフィグデータメモリ15には、ニューラルネットワーク12aと異なっている部分のみが記憶される。すなわち、リコンフィグデータメモリ15には、図11に示す網掛けの層の構造のみが記憶される。そして、図12に示したリコンフィギュラブルコントローラ17は、網掛け以外の層の構造を、ニューラルネットワーク12aからコピーし、ニューラルネットワーク71を形成する。
なお、上記では、ニューラルネットワーク71は、ニューラルネットワーク12aに対し、1層の構造が異なるとしたが、2層以上の構造が異なっていてもよい。
以上説明したように、ニューラルネットワーク71は、ニューラルネットワーク12aに対し、少なくとも1層の全体の構造が異なっている。これにより、PLD2aは、使用環境での画像データを効率的に収集することができる。
なお、上記では、リコンフィグデータメモリ15には、ニューラルネットワーク12aと構造が異なっている層のみが記憶されるとしたが、ニューラルネットワーク12aと同じ構造の層も記憶してもよい。例えば、リコンフィグデータメモリ15には、図13に示す網掛けの層以外の層の構造も記憶してもよい。
[第4の実施の形態]
第1〜第3の実施の形態では、ニューラルネットワーク12bは、ニューラルネットワーク12aに対し、一部の構造が異なっていた。第4の実施の形態では、ニューラルネットワーク12bの構造は、ニューラルネットワーク12aに対し、全体において異なっている。
図14は、第4の実施の形態に係るPLD2aのブロック構成例を示した図である。図14において、図2と同じものには同じ符号が付してある。以下では、図2と異なる部分について説明する。
図14に示すニューラルネットワーク81は、ニューラルネットワーク12aの全体において、構造が異なっている。すなわち、PLD2aには、ニューラルネットワーク12aと互いに関連性のないニューラルネットワーク81が形成される。
リコンフィグデータメモリ15には、ニューラルネットワーク12aと全体の構造が異なる、複数のニューラルネットワーク81の構造が記憶されている。
以上説明したように、ニューラルネットワーク81は、ニューラルネットワーク12aの全体において構造が異なっている。これにより、PLD2aは、使用環境での画像データを効率的に収集することができる。
上述した認識装置および学習システムの機能構成は、認識装置および学習システムの構成を理解容易にするために、主な処理内容に応じて分類したものである。構成要素の分類の仕方や名称によって、本願発明が制限されることはない。認識装置および学習システムの構成は、処理内容に応じて、さらに多くの構成要素に分類することもできる。また、1つの構成要素がさらに多くの処理を実行するように分類することもできる。また、各構成要素の処理は、1つのハードウェアで実行されてもよいし、複数のハードウェアで実行されてもよい。
また、上述したシーケンスの各処理単位は、認識装置および学習システムの処理を理解容易にするために、主な処理内容に応じて分割したものである。処理単位の分割の仕方や名称によって、本願発明が制限されることはない。認識装置および学習システムの処理は、処理内容に応じて、さらに多くの処理単位に分割することもできる。また、1つの処理単位がさらに多くの処理を含むように分割することもできる。また、本発明は、認識装置および学習システムの機能を実現するプログラム、および当該プログラムを記憶した記憶媒体として提供することもできる。
また、上記の各構成、機能、処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
また、上記した実施形態の技術的要素は、単独で適用されてもよいし、プログラム部品とハードウェア部品のような複数の部分に分けられて適用されるようにしてもよい。