(57)【要約】      （修正有）【課題】ニューラルネットワークを利用した解析処理を高速化する。【解決手段】情報処理装置は、二次元データを取得する。情報処理装置は、取得した二次元データ内の第１ブロック２０について特徴量抽出処理を実行し、第１ブロック２０について特徴量情報を生成する。情報処理装置は、第１ブロック２０の中から複数の第２ブロック３０を抽出する。情報処理装置は、各第２ブロック３０について、特徴量情報に含まれるその第２ブロック３０の特徴量を用いて全結合処理を実行する。各第２ブロック３０は、少なくとも１つの他の第２ブロック３０とその一部のデータ領域が重複する。【選択図】図１
2019125128.tif 000002
【特許請求の範囲】
【請求項１】
二次元データを取得し、前記二次元データ内のデータ領域である第１ブロックについて Convolutional Neural Network（CNN）の特徴量抽出層の処理を実行して、前記第１ブロック内の複数の画像領域それぞれの特徴量を示す特徴量情報を生成する特徴量抽出手段と、
前記第１ブロックの中から複数の第２ブロックを抽出し、各前記第２ブロックについて、前記特徴量情報に含まれるその第２ブロックの特徴量を用いて、CNN の全結合層の処理を実行する全結合処理手段と、を有し、
前記第１ブロックに含まれる各前記第２ブロックは、少なくとも１つの他の第２ブロックとその一部のデータ領域が重複する、情報処理装置。
【請求項２】
前記全結合処理手段は、前記第１ブロックについて特徴量情報を生成する処理が完了した後に、前記全結合層の処理を実行する、請求項１に記載の情報処理装置。
【請求項３】
前記特徴量抽出手段が実行する処理は、CNN の畳み込み層の処理及びプーリング層の処理を含む、請求項１又は２に記載の情報処理装置。
【請求項４】
前記特徴量抽出手段は、第１の方向における大きさが前記第２ブロックの大きさと同じになるように前記第１ブロックを変形し、前記変形後の第１ブロックについて前記特徴量情報の生成を行い、
前記全結合処理手段は、前記変形後の第１ブロックから前記第２ブロックを抽出する、請求項１乃至３いずれか一項に記載の情報処理装置。
【請求項５】
前記全結合処理手段は、前記第２ブロックと同じサイズのスライディングウインドウを前記変形後の第１ブロック内で移動させ、前記スライディングウインドウ内のデータ領域を前記第２ブロックとして抽出することで、前記変形後の第１ブロックから複数の前記第２ブロックを抽出し、
前記スライディングウインドウを移動させる方向は、前記第１の方向とは異なる方向である、請求項４に記載の情報処理装置。
【請求項６】
前記特徴量抽出手段と前記全結合処理手段はハードウエア回路で実装される、請求項１乃至５いずれか一項に記載の情報処理装置。
【請求項７】
前記ハードウエア回路は FPGA（Field-Programmable Gate Array）である、請求項６に記載の情報処理装置。
【請求項８】
前記特徴量抽出手段は、前記特徴量情報を前記 FPGA に内蔵された記憶装置に記憶させ、
前記全結合処理手段は、前記記憶装置から前記特徴量情報を読み出して、前記全結合層の処理を実行する、請求項７に記載の情報処理装置。
【請求項９】
コンピュータによって実行される制御方法であって、
二次元データを取得し、前記二次元データ内のデータ領域である第１ブロックについて Convolutional Neural Network（CNN）の特徴量抽出層の処理を実行して、前記第１ブロック内の複数の画像領域それぞれの特徴量を示す特徴量情報を生成する特徴量抽出ステップと、
前記第１ブロックの中から複数の第２ブロックを抽出し、各前記第２ブロックについて、前記特徴量情報に含まれるその第２ブロックの特徴量を用いて、CNN の全結合層の処理を実行する全結合処理ステップと、を有し、
前記第１ブロックに含まれる各前記第２ブロックは、少なくとも１つの他の第２ブロックとその一部のデータ領域が重複する、制御方法。
【請求項１０】
請求項９に記載の制御方法の各ステップをコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はニューラルネットワークに関する。
【背景技術】
【０００２】
機械学習を利用したデータ解析が行われている。機械学習のモデルの一形態として、ニューラルネットワークが広く利用されている。ニューラルネットワークは、ニューロンと呼ばれる処理単位を複数層につなぎ合わせた構成を持つ。ニューラルネットワークには、Convolutional Neural Network（CNN）、Recurrent Neural Network、Recursive Neural Network などといった様々な形態がある。
【０００３】
ニューラルネットワークを利用したデータ解析に関する先行技術文献には、例えば特許文献１と２がある。特許文献１や２には、CNN を利用した画像解析に関する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−３４６４７２号公報
【特許文献２】特開２０１７−１８７９５４号公報
【非特許文献】
【０００５】
【非特許文献１】Josh Patterson 及び Adam Gibson、「Deep Learning: A Practitioner's Approach」、Oreilly & Associates Inc.、２０１７年８月１９日
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明者は、CNN における解析処理に高速化の余地があることを見出した。本発明の目的の一つは、ニューラルネットワークを利用した解析処理を高速化する技術を提供することである。
【課題を解決するための手段】
【０００７】
本発明の情報処理装置は、１）二次元データを取得し、二次元データ内のデータ領域である第１ブロックについて Convolutional Neural Network（CNN）の特徴量抽出層の処理を実行して、第１ブロック内の複数の画像領域それぞれの特徴量を示す特徴量情報を生成する特徴量抽出手段と、２）第１ブロックの中から複数の第２ブロックを抽出し、各第２ブロックについて、特徴量情報に含まれるその第２ブロックの特徴量を用いて、CNN の全結合層の処理を実行する全結合処理手段と、を有する。
第１ブロックに含まれる各第２ブロックは、少なくとも１つの他の第２ブロックとその一部のデータ領域が重複する。
【０００８】
本発明の制御方法はコンピュータによって実行される。当該制御方法は、１）二次元データを取得し、二次元データ内のデータ領域である第１ブロックについて Convolutional Neural Network（CNN）の特徴量抽出層の処理を実行して、第１ブロック内の複数の画像領域それぞれの特徴量を示す特徴量情報を生成する特徴量抽出ステップと、２）第１ブロックの中から複数の第２ブロックを抽出し、各第２ブロックについて、特徴量情報に含まれるその第２ブロックの特徴量を用いて、CNN の全結合層の処理を実行する全結合処理ステップと、を有する。
第１ブロックに含まれる各第２ブロックは、少なくとも１つの他の第２ブロックとその一部のデータ領域が重複する。
【０００９】
本発明のプログラムは、コンピュータに、本発明の制御方法が有する各ステップを実行させる。
【発明の効果】
【００１０】
本発明によれば、ニューラルネットワークを利用した解析処理を高速化する技術が提供される。
【図面の簡単な説明】
【００１１】
【図１】情報処理装置が処理するデータを例示する図である。
【図２】情報処理装置における解析処理の様子を例示する図である。
【図３】既存の CNN で図２の第１ブロックを処理する様子を例示する図である。
【図４】実施形態１の情報処理装置の機能構成を例示する図である。
【図５】情報処理装置を実現するための計算機を例示する図である。
【図６】情報処理装置の利用環境を例示する図である。
【図７】実施形態１の情報処理装置によって実行される処理の流れを例示するフローチャートである。
【図８】第２ブロックの大きさに合わせて第１ブロックを変形する様子を例示する図である。
【図９】間引き処理を例示する図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。また、特に説明する場合を除き、各ブロック図において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
【００１３】
［実施形態１］
＜概要＞
図１及び図２は、実施形態１の情報処理装置（図４に示す情報処理装置２０００）の概要を説明するための図である。以下で説明する情報処理装置２０００の動作は、情報処理装置２０００の理解を容易にするための例示であり、情報処理装置２０００の動作は以下の例に限定されるわけではない。情報処理装置２０００の動作の詳細やバリエーションについては後述する。
【００１４】
図１は、情報処理装置２０００が処理するデータを例示する図である。情報処理装置２０００は二次元データ（行列データ）１０を扱う。例えば二次元データ１０は画像データである。画像データは、画素の位置（x 座標と y 座標の組み合わせ）に対応づけて、その画素の値を示す行列データである。
【００１５】
第１ブロック２０は、二次元データ１０の一部又は全体のデータ領域である。すなわち、第１ブロック２０のサイズは、二次元データ１０のサイズと同一又はそれ以下である。第２ブロック３０は、第１ブロック２０の一部の画像領域である。すなわち、第１ブロック２０のサイズは、第２ブロック３０のサイズよりも大きい。そのため第１ブロック２０からは、互いに位置が異なる複数の第２ブロック３０を抽出することができる。二次元データ１０が画像データである場合、第１ブロック２０は二次元データ１０の一部又は全体の画像領域であり、第２ブロック３０は第１ブロック２０内の一部の画像領域である。
【００１６】
情報処理装置２０００は、第１ブロック２０から複数の第２ブロック３０を抽出し、これら複数の第２ブロック３０について解析処理を行う。ここで、各第２ブロック３０は、少なくとも１つの第２ブロック３０とその一部が重複する。例えば情報処理装置２０００は、第２ブロック３０と同じ大きさを持つスライディングウインドウを第１ブロック２０内で移動させながら、各位置におけるスライディングウインドウ内のデータ領域を第２ブロック３０として抽出する。スライディングウインドウのずらし量は、そのずらし方向における第２ブロック３０の大きさ（例えばずらし方向が横方向であれば、第２ブロック３０の横幅）よりも小さい。
【００１７】
例えば二次元データ１０が画像データであれば、第２ブロック３０について行われる解析処理は、第２ブロック３０に人や物などのオブジェクトが含まれていないかどうかを判定する処理や、第２ブロック３０に含まれているオブジェクトを特定する処理などの画像解析処理である。
【００１８】
概念的には、情報処理装置２０００は、多層で構成されたニューラルネットワークを用いて解析処理を行う。なお、ここでいう解析処理には、ニューラルネットワークを学習させるためにトレーニングデータを解析する処理と、学習済みのニューラルネットワークを利用して新たなデータを解析する処理の双方が含まれる。情報処理装置２０００が利用するニューラルネットワークは、少なくとも、特徴量抽出層と全結合層を有する。この特徴量抽出層と全結合層で行われる処理はそれぞれ、ニューラルネットワークの一形態である CNN の特徴量抽出層と全結合層で行われる処理に相当する（非特許文献１参照）。特徴量抽出層では、入力された二次元データから特徴量を抽出する処理（以下、特徴量抽出処理）が行われる。全結合層では、特徴量抽出層からの出力を用いた判定や分類等の解析処理（以下、全結合処理）が行われる。例えば二次元データ１０が画像データである場合、全結合層では、特徴量抽出処理で抽出された特徴量を用いて、第２ブロック３０に所定のオブジェクトが含まれているか否かを判定する処理や、第２ブロック３０に含まれているオブジェクトの種類を特定（分類）する処理などが行われる。
【００１９】
ここで情報処理装置２０００は、第１ブロック２０について特徴量抽出処理を行った後に、第１ブロック２０に含まれる複数の第２ブロック３０それぞれについて全結合層処理を行う。図２は、情報処理装置２０００における解析処理の様子を例示する図である。情報処理装置２０００はまず、第１ブロック２０について特徴量抽出処理を行う。その結果、第１ブロック２０に含まれる複数のデータ領域それぞれについての特徴量を示す情報（以下、特徴量情報）が生成される。特徴量情報には、第１ブロック２０に含まれる複数の第２ブロック３０それぞれについての特徴量が含まれることとなる。
【００２０】
例えば図２において、第１ブロック２０から抽出される第２ブロック３０は、第２ブロック３０−１から第２ブロック３０−３の３つである。情報処理装置２０００は、第１ブロック２０を対象とした特徴量抽出処理により、特徴量情報４０を生成する。特徴量情報４０には、第２ブロック３０−１の特徴量、第２ブロック３０−２の特徴量、及び第２ブロック３０−３の特徴量が含まれている。
【００２１】
情報処理装置２０００は、第１ブロック２０について生成された特徴量情報４０を利用して、第１ブロック２０に含まれる複数の第２ブロック３０それぞれについて全結合処理を行う。図２の例において、情報処理装置２０００は、１）特徴量情報４０に含まれる第２ブロック３０−１の特徴量を利用して、第２ブロック３０−１についての全結合処理を行い、２）特徴量情報４０に含まれる第２ブロック３０−２の特徴量を利用して、第２ブロック３０−２についての全結合処理を行い、３）特徴量情報４０に含まれる第２ブロック３０−３の特徴量を利用して、第２ブロック３０−３についての全結合処理を行う。
【００２２】
＜作用・効果＞
既存の CNN と比較しながら、情報処理装置２０００によってもたらされる作用効果について説明する。既存の CNN では、全結合処理の対象となるデータ領域ごとに特徴量抽出処理が行われる。図３は、既存の CNN で図２の第１ブロック２０を処理する様子を例示する図である。図３では、第２ブロック３０−１、第２ブロック３０−２、及び第２ブロック３０−３について個々に特徴量抽出処理が行われる。そして、第２ブロック３０−１から抽出された特徴量、第２ブロック３０−２から抽出された特徴量、第２ブロック３０−３から抽出された特徴量のそれぞれを用いて、第２ブロック３０−１、第２ブロック３０−２、及び第２ブロック３０−３についての全結合処理がそれぞれ行われる。
【００２３】
ここで前述したように、第２ブロック３０は他の第２ブロック３０と一部が重複している。例えば図２と図３では、第２ブロック３０−１の一部と第２ブロック３０−２の一部が互いに重複している。そのため、第２ブロック３０−１と第２ブロック３０−２について個々に特徴量抽出処理を行うと、これらの重複部分については、特徴量抽出処理が複数回（図３では２回）実行されることになる。同様に、第２ブロック３０−２と第２ブロック３０−３についても、その重複部分について特徴量抽出処理が複数回実行される。このように既存の CNN では、同じデータ領域について特徴量を複数回抽出することになるため、処理に無駄が生じている。
【００２４】
これに対し、本実施形態の情報処理装置２０００は、全結合層処理が行われる単位である第２ブロック３０よりも大きい単位の第１ブロック２０についてまとめて特徴抽出処理が行われる。そして、その結果生成される特徴量情報から、複数の第２ブロック３０それぞれについての特徴量を参照することで、各第２ブロック３０についての全結合処理が実行される。この方法によれば、第１ブロック２０に含まれる複数の第２ブロック３０については、特徴量抽出処理が重複して行われることがない。よって、既存の CNN と比較し、二次元データの解析を効率的に行うことができ、二次元データの解析処理に要する時間を削減できるという効果や、二次元データの解析に要する計算機資源を削減できるという効果がもたらされる。
【００２５】
以下、本実施形態の情報処理装置２０００についてさらに詳細に説明する。
【００２６】
＜情報処理装置２０００の機能構成の例＞
図４は、実施形態１の情報処理装置２０００の機能構成を例示する図である。情報処理装置２０００は特徴量抽出部２０２０及び全結合処理部２０４０を有する。特徴量抽出部２０２０は二次元データ１０を取得する。特徴量抽出部２０２０は、取得した二次元データ１０内の第１ブロック２０について特徴量抽出処理を実行し、第１ブロック２０について特徴量情報４０を生成する。前述したように、特徴量情報４０は、第１ブロック２０内に含まれる全ての第２ブロック３０の特徴量に関する情報を含む。
【００２７】
全結合処理部２０４０は、各第２ブロック３０について、特徴量情報４０に含まれるその第２ブロック３０の特徴量を用いて全結合処理を実行する。前述したように、各第２ブロック３０は、少なくとも１つの他の第２ブロック３０とその一部のデータ領域が重複する。
【００２８】
＜情報処理装置２０００のハードウエア構成＞
情報処理装置２０００の各機能構成部は、各機能構成部を実現するハードウエア（例：ハードワイヤードされた電子回路など）で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ（例：電子回路とそれを制御するプログラムの組み合わせなど）で実現されてもよい。以下、情報処理装置２０００の各機能構成部がハードウエアとソフトウエアとの組み合わせで実現される場合について、さらに説明する。
【００２９】
図５は、情報処理装置２０００を実現するための計算機１０００を例示する図である。計算機１０００は任意の計算機である。例えば計算機１０００は、Personal Computer（PC）やサーバマシンなどである。また、計算機１０００は組み込みシステムであってもよい。計算機１０００は、情報処理装置２０００を実現するために設計された専用の計算機であってもよいし、汎用の計算機であってもよい。
【００３０】
計算機１０００は、バス１０２０、プロセッサ１０４０、メモリ１０６０、ストレージデバイス１０８０、及び入出力インタフェース１１００を有する。バス１０２０は、プロセッサ１０４０、メモリ１０６０、ストレージデバイス１０８０、及び入出力インタフェース１１００が、相互にデータを送受信するためのデータ伝送路である。ただし、プロセッサ１０４０などを互いに接続する方法は、バス接続に限定されない。
【００３１】
プロセッサ１０４０は、CPU（Central Processing Unit）、GPU（Graphics Processing Unit）、又は FPGA（Field-Programmable Gate Array）などの種々のプロセッサである。なお、プロセッサ１０４０だけでなく、計算機１０００全体を FPGA などの集積回路で実現してもよい。
【００３２】
メモリ１０６０は、RAM（Random Access Memory）などを用いて実現される主記憶装置である。ストレージデバイス１０８０は、ハードディスク、SSD（Solid State Drive）、メモリカード、又は ROM（Read Only Memory）などを用いて実現される補助記憶装置である。
【００３３】
入出力インタフェース１１００は、計算機１０００と入出力デバイスとを接続するためのインタフェースである。例えば入出力インタフェース１１００には、キーボードなどの入力装置や、ディスプレイ装置などの出力装置が接続される。
【００３４】
ストレージデバイス１０８０は、情報処理装置２０００の各機能構成部を実現するプログラムモジュールを記憶している。プロセッサ１０４０は、これら各プログラムモジュールをメモリ１０６０に読み出して実行することで、各プログラムモジュールに対応する機能を実現する。
【００３５】
＜情報処理装置２０００の利用例＞
情報処理装置２０００の理解を容易にするため、情報処理装置２０００の利用環境を例示する。図６は、情報処理装置２０００の利用環境を例示する図である。図６では、車両６０にカメラ７０及び情報処理装置２０００が設けられている。ただし情報処理装置２０００は、必ずしも車両６０に常設される据え置き型の計算機として実現される必要は無く、車両６０から取り外し可能な可搬型の計算機として実現されてもよい。
【００３６】
情報処理装置２０００は、カメラ７０によって生成される画像データを二次元データ１０として取得し、その画像データについて画像解析を行う。例えば情報処理装置２０００は、車両の周囲の環境を構成する種々の情報を得るために利用される。具体的には、標識、信号、看板、建物、歩行者、又は他の車両などを認識するために利用される。
【００３７】
車両の周囲の環境は時間と共に変化する。そのため情報処理装置２０００は、カメラ７０によって生成される映像を構成する画像データ（動画フレーム）それぞれを画像解析する必要がある。すなわち、各画像データを短い時間で画像解析する必要がある。この点、前述したように、本実施形態の情報処理装置２０００によれば、二次元データの解析に要する時間を削減することができる。そのため情報処理装置２０００は、図６に示す利用環境のように、短時間で二次元データを解析する必要がある環境において、特に好適である。
【００３８】
また、情報処理装置２０００を車両に載せる際には、情報処理装置２０００を実現する計算機を小型化することが好ましい。この点、前述したように、情報処理装置２０００によれば、二次元データの解析に要する計算機資源を削減できるため、情報処理装置２０００を実現する計算機のサイズを小さくすることができる。そのため、情報処理装置２０００は、図６に示す利用環境のように、二次元データの解析に利用される計算機のサイズを小さくすることが求められる環境において、特に好適である。
【００３９】
＜処理の流れ＞
図７は、実施形態１の情報処理装置２０００によって実行される処理の流れを例示するフローチャートである。情報処理装置２０００は、二次元データ１０を取得する（Ｓ１０２）。ループ処理Ａ（Ｓ１０４からＳ１１４）は、二次元データ１０に含まれる第１ブロック２０それぞれについて実行されるループ処理である。Ｓ１０４において、特徴量抽出部２０２０は、二次元データ１０から１つの第１ブロック２０を選択する。ここで選択された第１ブロック２０を第１ブロックｉと呼ぶ。なお、処理すべき全ての第１ブロック２０を対象として既にループ処理Ａが実行されている場合、情報処理装置２０００の処理は終了する。
【００４０】
特徴量抽出部２０２０は、第１ブロックｉについて特徴抽出処理を行う（Ｓ１０６）。
【００４１】
ループ処理Ｂ（Ｓ１０８からＳ１１２）は、第１ブロックｉに含まれる第２ブロック３０それぞれについて実行されるループ処理である。全結合処理部２０４０は、第１ブロックｉの中から、第２ブロック３０を１つ抽出する。ここで抽出される第２ブロック３０を第２ブロックｊと呼ぶ。なお、第１ブロックｉに含まれる全ての第２ブロック３０について既にループ処理Ｂが実行されている場合、図５の処理はＳ１１４に進む。
【００４２】
全結合処理部２０４０は、第２ブロックｊについて全結合処理を行う（Ｓ１１０）。Ｓ１１２はループ処理Ｂの終端であるため、図７の処理はＳ１０８に戻る。
【００４３】
Ｓ１１４はループ処理Ｂの終端であるため、図７の処理はＳ１１４からＳ１０６に戻る。
【００４４】
情報処理装置２０００によって実行される処理の流れは図７に示した流れに限定されない。例えば二次元データ１０全体を第１ブロック２０として扱う場合には、Ｓ１０６からＳ１１２をループ処理とする必要はない。その他にも例えば、情報処理装置２０００は、同一の第１ブロック２０に含まれる複数の第２ブロック３０について全結合処理を並列又は並行に処理してもよい。なお、並列処理や並行処理を実現する具体的な手法には、既存の技術を利用することができる。例えば、情報処理装置２０００を構成するプロセッサ１０４０をマルチコアプロセッサにしたり、情報処理装置２０００に複数のプロセッサ１０４０を設けたりすることが考えられる。また、情報処理装置２０００を複数の計算機で実現してもよい。同様に、複数の第２ブロック３０についての一連の処理を並列又は並行に行ってもよい。
【００４５】
情報処理装置２０００が図７の一連の処理を実行するタイミングは様々である。例えば情報処理装置２０００は、定期的に図７の一連の処理を実行する。その他にも例えば、情報処理装置２０００は、他の装置から送信された二次元データ１０を受信したことに応じ、Ｓ１０４以降の処理を実行するように構成されていてもよい。
【００４６】
＜二次元データ１０の取得：Ｓ１０２＞
特徴量抽出部２０２０は二次元データ１０を取得する（Ｓ１０２）。ここで、情報処理装置２０００が二次元データ１０を取得する方法は様々である。例えば特徴量抽出部２０２０は、二次元データ１０を生成する装置から二次元データ１０を取得する。例えば二次元データ１０が画像データである場合、二次元データ１０を生成する装置はカメラである。
【００４７】
その他にも例えば、特徴量抽出部２０２０は、二次元データ１０が記憶されている記憶装置から二次元データ１０を取得してもよい。その他にも例えば、特徴量抽出部２０２０は、他の装置によって送信される二次元データ１０を受信することで、二次元データ１０を取得してもよい。
【００４８】
＜第１ブロック２０について＞
第１ブロック２０が二次元データ１０の全体である場合、特徴量抽出部２０２０は、二次元データ１０の全体を第１ブロック２０として処理する。一方、第１ブロック２０が二次元データ１０の一部である場合、特徴量抽出部２０２０は、二次元データ１０から第１ブロック２０を抽出する。例えば特徴量抽出部２０２０は、第１ブロック２０を定める情報（二次元データ１０内における第１ブロック２０の位置及び大きさを定める情報）を取得し、その情報に基づいて第１ブロック２０を抽出する。
【００４９】
二次元データ１０から抽出する第１ブロック２０は、１つであってもよいし、複数であってもよい。後者の場合、例えば特徴量抽出部２０２０は、第１ブロック２０のサイズのスライディングウインドウを利用して、二次元データ１０から第１ブロック２０を順次抽出していく。スライディングウインドウのずらし量は任意である。
【００５０】
＜特徴量抽出処理＞
特徴量抽出部２０２０は、第１ブロック２０について特徴量抽出処理を行う。前述したように、特徴量抽出部２０２０が行う特徴量抽出処理は、CNN における特徴量抽出層で実行される処理に相当する。具体的には、特徴量抽出部２０２０は、CNN における畳み込み層（Convolution layer）の処理を第１ブロック２０に対して行う。すなわち特徴量抽出部２０２０は、第１ブロック２０に対して、特徴量抽出に利用するフィルタを畳み込むことで、第１ブロック２０に含まれる複数のデータ領域それぞれから特徴量を抽出し、特徴量情報４０を生成する。例えばフィルタとしては、エッジを検出するためのエッジ検出フィルタなどが利用できる。第１ブロック２０に対して畳み込むフィルタは、予め特徴量抽出部２０２０からアクセス可能な記憶装置（例えばストレージデバイス１０８０）に記憶させておく。
【００５１】
また、特徴量抽出処理では、畳み込み層の処理に加え、CNN におけるプーリング層（Pooling Layer）の処理を行ってもよい。プーリング層では、畳み込み層で得られた特徴量情報４０のサイズを減らす処理が行われる。例えば、特徴量情報４０の複数の領域それぞれについて、その領域内の複数の特徴量を１つの代表値に置き換える処理を行うことで、特徴量情報４０のサイズを減らすことができる。なお、プーリング層において行われる具体的な処理については、既存の技術を利用することができる。
【００５２】
特徴量抽出部２０２０は、生成した特徴量情報を記憶装置（例えばストレージデバイス１０８０）に記憶させる。なお、情報処理装置２０００を FPGA として構成する場合、特徴量抽出部２０２０は、FPGA に内蔵されている記憶装置に特徴量情報を記憶させることが好適である。
【００５３】
＜＜第１ブロック２０の変形＞＞
ここで特徴量抽出部２０２０は、特徴量抽出処理を行う前に第２ブロック３０の大きさに基づいて第１ブロック２０を変形し、変形後の第１ブロック２０について特徴量抽出処理を行ってもよい。図８は、第２ブロック３０の大きさに合わせて第１ブロック２０を変形する様子を例示する図である。例えば特徴量抽出部２０２０は、いずれか一つの方向（以下、第１の方向）について、第１ブロック２０の大きさが第２ブロック３０の大きさと同じになるように、第１ブロック２０を分割する。例えば図８では、y 軸方向について第１ブロック２０の大きさが第２ブロック３０の大きさと同じ dy になるように、第１ブロック２０を複数のデータ領域に分割している。すなわち、第１ブロック２０の縦幅が第２ブロック３０の縦幅と同一になるように変形している。
【００５４】
その後、特徴量抽出部２０２０は、上記分割で得られた複数のデータ領域を、第１の方向とは異なる方向において連結する。例えば図８では、元の第１ブロック２０を分割することで得られた複数のデータ領域を、x 軸方向において連結する。こうすると、全結合処理部２０４０は、スライディングウインドウを利用して第１ブロック２０から第２ブロック３０を抽出する際、スライディングウインドウを一つの方向（図８では x 方向）に移動するだけで、第１ブロック２０全体から第２ブロック３０を抽出できるようになる。
【００５５】
なお、第１ブロック２０を分割する方向（例えば図８における y 軸方向）において、第１ブロック２０の大きさが第２ブロック３０の大きさの整数倍にならないこともある。この場合、例えば特徴量抽出部２０２０は、第１ブロック２０の分割方向における末端（図８の例では最も下）のデータ領域についてゼロパディング等の手法を適用することで、第１ブロック２０の分割方向において、第１ブロック２０の大きさが第２ブロック３０の大きさの整数倍になるように調整する。
【００５６】
第２ブロック３０の大きさに基づいて第１ブロック２０を変形する方法は、上述の方法に限定されない。例えば特徴量抽出部２０２０は、第１ブロック２０の大きさと第２ブロック３０の大きさとに基づき、第１ブロック２０の画素を所定の規則で間引く処理を行ってもよい。図９は、間引き処理を例示する図である。図９の y 方向において、第１ブロック２０の大きさは第２ブロック３０の大きさの N 倍である。そこで、特徴量抽出部２０２０は、y 方向について、連続する N 画素ごとに N-1 画素を間引く処理を行う。これにより、y 方向について、第１ブロック２０のサイズが第２ブロック３０のサイズと同一になる。特徴量抽出部２０２０は、間引き処理後の第１ブロック２０において、スライディングウインドウを x 方向に移動することで、第２ブロック３０を抽出していく。
【００５７】
なお、上述の例では、スライディングウインドウを移動させる方向（図９の x 方向）については画素が間引かれていない。しかし、特徴量抽出部２０２０は、スライディングウインドウを移動させる方向についても画素を間引いてもよい。例えば特徴量抽出部２０２０は、スライディングウインドウを移動させる方向についての間引きを、他方の方向についての間引きと同様に行う（例えば図９のケースでは、x 方向についても、連続する N 画素ごとに N-1 画素を間引く）。
【００５８】
なお、上述のいずれの変形を利用しても、全結合処理部２０４０で行われる処理は同一である。そのため、FPGA 等のハードウエアで情報処理装置２０００を実装する際に、計算機資源を抑えることができる。
【００５９】
＜全結合処理＞
全結合処理部２０４０は、第１ブロック２０から複数の第２ブロック３０を抽出する。例えば前述したように、全結合処理部２０４０は、スライディングウインドウを利用して、第１ブロック２０から第２ブロック３０を抽出する。なお、特徴量抽出部２０２０が第１ブロック２０を第２ブロック３０の大きさに基づいて変形した後に特徴量抽出処理を行う場合、全結合処理部２０４０は、変形後の第１ブロック２０から第２ブロック３０の抽出を行う。
【００６０】
さらに全結合処理部２０４０は、特徴量抽出部２０２０によって生成された特徴量情報に含まれる各第２ブロック３０の特徴量を利用して、各第２ブロック３０について全結合処理を行う。前述したように、全結合処理部２０４０が行う全結合処理は、CNN の全結合層で行われる処理に相当する。全結合処理を実現する具体的な手法については、目的に応じた既存の手法を利用することができる。なお、全結合処理部２０４０は、特徴量情報が記憶されている記憶装置から特徴量情報を読み出して利用する。
【００６１】
なお、記憶領域の使用量を削減するため、不要となったデータを記憶装置から適宜削除することが好適である。例えば特徴量抽出部２０２０が第１ブロック２０を変形する場合、情報処理装置２０００は、変形後の第１ブロック２０を表すデータを、変形後の第１ブロック２０を利用した特徴量抽出処理を終えたタイミングで削除することが好適である。また、情報処理装置２０００は、全結合処理に用いる特徴量情報を、その特徴量情報を用いた全結合処理を終えたタイミングで削除することが好適である。
【００６２】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
【００６３】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
１．  二次元データを取得し、前記二次元データ内のデータ領域である第１ブロックについて Convolutional Neural Network（CNN）の特徴量抽出層の処理を実行して、前記第１ブロック内の複数の画像領域それぞれの特徴量を示す特徴量情報を生成する特徴量抽出手段と、
前記第１ブロックの中から複数の第２ブロックを抽出し、各前記第２ブロックについて、前記特徴量情報に含まれるその第２ブロックの特徴量を用いて、CNN の全結合層の処理を実行する全結合処理手段と、を有し、
前記第１ブロックに含まれる各前記第２ブロックは、少なくとも１つの他の第２ブロックとその一部のデータ領域が重複する、情報処理装置。
２．  前記全結合処理手段は、前記第１ブロックについて特徴量情報を生成する処理が完了した後に、前記全結合層の処理を実行する、１．に記載の情報処理装置。
３．  前記特徴量抽出手段が実行する処理は、CNN の畳み込み層の処理及びプーリング層の処理を含む、１．又は２．に記載の情報処理装置。
４．  前記特徴量抽出手段は、第１の方向における大きさが前記第２ブロックの大きさと同じになるように前記第１ブロックを変形し、前記変形後の第１ブロックについて前記特徴量情報の生成を行い、
前記全結合処理手段は、前記変形後の第１ブロックから前記第２ブロックを抽出する、１．乃至３．いずれか一つに記載の情報処理装置。
５．  前記全結合処理手段は、前記第２ブロックと同じサイズのスライディングウインドウを前記変形後の第１ブロック内で移動させ、前記スライディングウインドウ内のデータ領域を前記第２ブロックとして抽出することで、前記変形後の第１ブロックから複数の前記第２ブロックを抽出し、
前記スライディングウインドウを移動させる方向は、前記第１の方向とは異なる方向である、４．に記載の情報処理装置。
６．  前記特徴量抽出手段と前記全結合処理手段はハードウエア回路で実装される、１．乃至５．いずれか一つに記載の情報処理装置。
７．  前記ハードウエア回路は FPGA（Field-Programmable Gate Array）である、６．に記載の情報処理装置。
８．  前記特徴量抽出手段は、前記特徴量情報を前記 FPGA に内蔵された記憶装置に記憶させ、
前記全結合処理手段は、前記記憶装置から前記特徴量情報を読み出して、前記全結合層の処理を実行する、７．に記載の情報処理装置。
【００６４】
９．  コンピュータによって実行される制御方法であって、
二次元データを取得し、前記二次元データ内のデータ領域である第１ブロックについて Convolutional Neural Network（CNN）の特徴量抽出層の処理を実行して、前記第１ブロック内の複数の画像領域それぞれの特徴量を示す特徴量情報を生成する特徴量抽出ステップと、
前記第１ブロックの中から複数の第２ブロックを抽出し、各前記第２ブロックについて、前記特徴量情報に含まれるその第２ブロックの特徴量を用いて、CNN の全結合層の処理を実行する全結合処理ステップと、を有し、
前記第１ブロックに含まれる各前記第２ブロックは、少なくとも１つの他の第２ブロックとその一部のデータ領域が重複する、制御方法。
１０．  前記全結合処理ステップにおいて、前記第１ブロックについて特徴量情報を生成する処理が完了した後に、前記全結合層の処理を実行する、９．に記載の制御方法。
１１．  前記特徴量抽出ステップにおいて実行する処理は、CNN の畳み込み層の処理及びプーリング層の処理を含む、９．又は１０．に記載の制御方法。
１２．  前記特徴量抽出ステップにおいて、第１の方向における大きさが前記第２ブロックの大きさと同じになるように前記第１ブロックを変形し、前記変形後の第１ブロックについて前記特徴量情報の生成を行い、
前記全結合処理ステップにおいて、前記変形後の第１ブロックから前記第２ブロックを抽出する、９．乃至１１．いずれか一つに記載の制御方法。
１３．  前記全結合処理ステップにおいて、前記第２ブロックと同じサイズのスライディングウインドウを前記変形後の第１ブロック内で移動させ、前記スライディングウインドウ内のデータ領域を前記第２ブロックとして抽出することで、前記変形後の第１ブロックから複数の前記第２ブロックを抽出し、
前記スライディングウインドウを移動させる方向は、前記第１の方向とは異なる方向である、１２．に記載の制御方法。
【００６５】
１４．  ９．乃至１３．いずれか一つに記載の制御方法の各ステップをコンピュータに実行させるプログラム。
【符号の説明】
【００６６】
１０  二次元データ
２０  第１ブロック
３０  第２ブロック
４０  特徴量情報
６０  車両
７０  カメラ
１０００  計算機
１０２０  バス
１０４０  プロセッサ
１０６０  メモリ
１０８０  ストレージデバイス
１１００  入出力インタフェース
２０００  情報処理装置
２０２０  特徴量抽出部
２０４０  全結合処理部
【図１】
2019125128.tif 000003
【図２】
2019125128.tif 000004
【図３】
2019125128.tif 000005
【図４】
2019125128.tif 000006
【図５】
2019125128.tif 000007
【図６】
2019125128.tif 000008
【図７】
2019125128.tif 000009
【図８】
2019125128.tif 000010
【図９】
2019125128.tif 000011