(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-19
(45)【発行日】2022-07-27
(54)【発明の名称】情報処理装置、制御方法、及びプログラム
(51)【国際特許分類】
G06N 3/04 20060101AFI20220720BHJP
G06T 7/00 20170101ALI20220720BHJP
【FI】
G06N3/04
G06T7/00 350C
(21)【出願番号】P 2018004709
(22)【出願日】2018-01-16
【審査請求日】2020-12-07
(73)【特許権者】
【識別番号】000232092
【氏名又は名称】NECソリューションイノベータ株式会社
(74)【代理人】
【識別番号】100110928
【氏名又は名称】速水 進治
(72)【発明者】
【氏名】早川 剛
(72)【発明者】
【氏名】栗田 裕二
(72)【発明者】
【氏名】気屋村 純一
(72)【発明者】
【氏名】深谷 安利
【審査官】金田 孝之
(56)【参考文献】
【文献】国際公開第2017/015887(WO,A1)
【文献】特開2009-211178(JP,A)
【文献】特開平11-045310(JP,A)
【文献】特開2017-004480(JP,A)
【文献】特開2017-191608(JP,A)
【文献】国際公開第2016/037300(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/04
G06T 7/00
(57)【特許請求の範囲】
【請求項1】
二次元データを取得し、前記二次元データ内のデータ領域である第1ブロックについて Convolutional Neural Network(CNN)の特徴量抽出層の処理を実行して、前記第1ブロック内の複数の画像領域それぞれの特徴量を示す特徴量情報を生成する特徴量抽出手段と、
前記第1ブロックの中から複数の第2ブロックを抽出し、各前記第2ブロックについて、前記特徴量情報に含まれるその第2ブロックの特徴量を用いて、CNN の全結合層の処理を実行する全結合処理手段と、を有し、
前記特徴量抽出手段は、第1の方向における大きさが前記第2ブロックの大きさの整数倍になるように前記第1ブロックを変形し、前記変形後の第1ブロックについて前記特徴量情報の生成を行い、
前記全結合処理手段は、前記変形後の第1ブロックから前記第2ブロックを抽出し、
前記第1ブロックに含まれる各前記第2ブロックは、少なくとも1つの他の第2ブロックとその一部のデータ領域が
前記第1の方向とは異なる第2の方向の端部で重複
している、情報処理装置。
【請求項2】
前記全結合処理手段は、前記第1ブロックについて特徴量情報を生成する処理が完了した後に、前記全結合層の処理を実行する、請求項1に記載の情報処理装置。
【請求項3】
前記特徴量抽出手段が実行する処理は、CNN の畳み込み層の処理及びプーリング層の処理を含む、請求項1又は2に記載の情報処理装置。
【請求項4】
前記全結合処理手段は、前記第2ブロックと同じサイズのスライディングウインドウを前記変形後の第1ブロック内で移動させ、前記スライディングウインドウ内のデータ領域を前記第2ブロックとして抽出することで、前記変形後の第1ブロックから複数の前記第2ブロックを抽出し、
前記スライディングウインドウを移動させる方向は、前記第1の方向とは異なる方向である、
請求項1乃至3のいずれか一項に記載の情報処理装置。
【請求項5】
前記特徴量抽出手段と前記全結合処理手段はハードウエア回路で実装される、請求項1乃至
4いずれか一項に記載の情報処理装置。
【請求項6】
前記ハードウエア回路は FPGA(Field-Programmable Gate Array)である、請求項
5に記載の情報処理装置。
【請求項7】
前記特徴量抽出手段は、前記特徴量情報を前記 FPGA に内蔵された記憶装置に記憶させ、
前記全結合処理手段は、前記記憶装置から前記特徴量情報を読み出して、前記全結合層の処理を実行する、請求項
6に記載の情報処理装置。
【請求項8】
コンピュータによって実行される制御方法であって、
二次元データを取得し、前記二次元データ内のデータ領域である第1ブロックについて Convolutional Neural Network(CNN)の特徴量抽出層の処理を実行して、前記第1ブロック内の複数の画像領域それぞれの特徴量を示す特徴量情報を生成する特徴量抽出ステップと、
前記第1ブロックの中から複数の第2ブロックを抽出し、各前記第2ブロックについて、前記特徴量情報に含まれるその第2ブロックの特徴量を用いて、CNN の全結合層の処理を実行する全結合処理ステップと、を有し、
特徴量抽出ステップでは、第1の方向における大きさが前記第2ブロックの大きさの整数倍になるように前記第1ブロックを変形し、前記変形後の第1ブロックについて前記特徴量情報の生成を行い、
前記全結合処理ステップでは、前記変形後の第1ブロックから前記第2ブロックを抽出し、
前記第1ブロックに含まれる各前記第2ブロックは、少なくとも1つの他の第2ブロックとその一部のデータ領域が
前記第1の方向とは異なる第2の方向の端部で重複
している、制御方法。
【請求項9】
請求項
8に記載の制御方法の各ステップをコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はニューラルネットワークに関する。
【背景技術】
【0002】
機械学習を利用したデータ解析が行われている。機械学習のモデルの一形態として、ニューラルネットワークが広く利用されている。ニューラルネットワークは、ニューロンと呼ばれる処理単位を複数層につなぎ合わせた構成を持つ。ニューラルネットワークには、Convolutional Neural Network(CNN)、Recurrent Neural Network、Recursive Neural Network などといった様々な形態がある。
【0003】
ニューラルネットワークを利用したデータ解析に関する先行技術文献には、例えば特許文献1と2がある。特許文献1や2には、CNN を利用した画像解析に関する技術が開示されている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2005-346472号公報
【文献】特開2017-187954号公報
【非特許文献】
【0005】
【文献】Josh Patterson 及び Adam Gibson、「Deep Learning: A Practitioner's Approach」、Oreilly & Associates Inc.、2017年8月19日
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明者は、CNN における解析処理に高速化の余地があることを見出した。本発明の目的の一つは、ニューラルネットワークを利用した解析処理を高速化する技術を提供することである。
【課題を解決するための手段】
【0007】
本発明の情報処理装置は、1)二次元データを取得し、二次元データ内のデータ領域である第1ブロックについて Convolutional Neural Network(CNN)の特徴量抽出層の処理を実行して、第1ブロック内の複数の画像領域それぞれの特徴量を示す特徴量情報を生成する特徴量抽出手段と、2)第1ブロックの中から複数の第2ブロックを抽出し、各第2ブロックについて、特徴量情報に含まれるその第2ブロックの特徴量を用いて、CNN の全結合層の処理を実行する全結合処理手段と、を有する。
特徴量抽出手段は、第1の方向における大きさが第2ブロックの大きさの整数倍になるように第1ブロックを変形し、変形後の第1ブロックについて特徴量情報の生成を行う。
全結合処理手段は、変形後の第1ブロックから第2ブロックを抽出する。
第1ブロックに含まれる各第2ブロックは、少なくとも1つの他の第2ブロックとその一部のデータ領域が第1の方向とは異なる第2の方向の端部で重複している。
【0008】
本発明の制御方法はコンピュータによって実行される。当該制御方法は、1)二次元データを取得し、二次元データ内のデータ領域である第1ブロックについて Convolutional Neural Network(CNN)の特徴量抽出層の処理を実行して、第1ブロック内の複数の画像領域それぞれの特徴量を示す特徴量情報を生成する特徴量抽出ステップと、2)第1ブロックの中から複数の第2ブロックを抽出し、各第2ブロックについて、特徴量情報に含まれるその第2ブロックの特徴量を用いて、CNN の全結合層の処理を実行する全結合処理ステップと、を有する。
特徴量抽出ステップでは、第1の方向における大きさが第2ブロックの大きさの整数倍になるように第1ブロックを変形し、変形後の第1ブロックについて特徴量情報の生成を行う。
全結合処理ステップでは、変形後の第1ブロックから第2ブロックを抽出する。
第1ブロックに含まれる各第2ブロックは、少なくとも1つの他の第2ブロックとその一部のデータ領域が第1の方向とは異なる第2の方向の端部で重複している。
【0009】
本発明のプログラムは、コンピュータに、本発明の制御方法が有する各ステップを実行させる。
【発明の効果】
【0010】
本発明によれば、ニューラルネットワークを利用した解析処理を高速化する技術が提供される。
【図面の簡単な説明】
【0011】
【
図1】情報処理装置が処理するデータを例示する図である。
【
図2】情報処理装置における解析処理の様子を例示する図である。
【
図3】既存の CNN で
図2の第1ブロックを処理する様子を例示する図である。
【
図4】実施形態1の情報処理装置の機能構成を例示する図である。
【
図5】情報処理装置を実現するための計算機を例示する図である。
【
図6】情報処理装置の利用環境を例示する図である。
【
図7】実施形態1の情報処理装置によって実行される処理の流れを例示するフローチャートである。
【
図8】第2ブロックの大きさに合わせて第1ブロックを変形する様子を例示する図である。
【発明を実施するための形態】
【0012】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。また、特に説明する場合を除き、各ブロック図において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
【0013】
[実施形態1]
<概要>
図1及び
図2は、実施形態1の情報処理装置(
図4に示す情報処理装置2000)の概要を説明するための図である。以下で説明する情報処理装置2000の動作は、情報処理装置2000の理解を容易にするための例示であり、情報処理装置2000の動作は以下の例に限定されるわけではない。情報処理装置2000の動作の詳細やバリエーションについては後述する。
【0014】
図1は、情報処理装置2000が処理するデータを例示する図である。情報処理装置2000は二次元データ(行列データ)10を扱う。例えば二次元データ10は画像データである。画像データは、画素の位置(x 座標と y 座標の組み合わせ)に対応づけて、その画素の値を示す行列データである。
【0015】
第1ブロック20は、二次元データ10の一部又は全体のデータ領域である。すなわち、第1ブロック20のサイズは、二次元データ10のサイズと同一又はそれ以下である。第2ブロック30は、第1ブロック20の一部の画像領域である。すなわち、第1ブロック20のサイズは、第2ブロック30のサイズよりも大きい。そのため第1ブロック20からは、互いに位置が異なる複数の第2ブロック30を抽出することができる。二次元データ10が画像データである場合、第1ブロック20は二次元データ10の一部又は全体の画像領域であり、第2ブロック30は第1ブロック20内の一部の画像領域である。
【0016】
情報処理装置2000は、第1ブロック20から複数の第2ブロック30を抽出し、これら複数の第2ブロック30について解析処理を行う。ここで、各第2ブロック30は、少なくとも1つの第2ブロック30とその一部が重複する。例えば情報処理装置2000は、第2ブロック30と同じ大きさを持つスライディングウインドウを第1ブロック20内で移動させながら、各位置におけるスライディングウインドウ内のデータ領域を第2ブロック30として抽出する。スライディングウインドウのずらし量は、そのずらし方向における第2ブロック30の大きさ(例えばずらし方向が横方向であれば、第2ブロック30の横幅)よりも小さい。
【0017】
例えば二次元データ10が画像データであれば、第2ブロック30について行われる解析処理は、第2ブロック30に人や物などのオブジェクトが含まれていないかどうかを判定する処理や、第2ブロック30に含まれているオブジェクトを特定する処理などの画像解析処理である。
【0018】
概念的には、情報処理装置2000は、多層で構成されたニューラルネットワークを用いて解析処理を行う。なお、ここでいう解析処理には、ニューラルネットワークを学習させるためにトレーニングデータを解析する処理と、学習済みのニューラルネットワークを利用して新たなデータを解析する処理の双方が含まれる。情報処理装置2000が利用するニューラルネットワークは、少なくとも、特徴量抽出層と全結合層を有する。この特徴量抽出層と全結合層で行われる処理はそれぞれ、ニューラルネットワークの一形態である CNN の特徴量抽出層と全結合層で行われる処理に相当する(非特許文献1参照)。特徴量抽出層では、入力された二次元データから特徴量を抽出する処理(以下、特徴量抽出処理)が行われる。全結合層では、特徴量抽出層からの出力を用いた判定や分類等の解析処理(以下、全結合処理)が行われる。例えば二次元データ10が画像データである場合、全結合層では、特徴量抽出処理で抽出された特徴量を用いて、第2ブロック30に所定のオブジェクトが含まれているか否かを判定する処理や、第2ブロック30に含まれているオブジェクトの種類を特定(分類)する処理などが行われる。
【0019】
ここで情報処理装置2000は、第1ブロック20について特徴量抽出処理を行った後に、第1ブロック20に含まれる複数の第2ブロック30それぞれについて全結合層処理を行う。
図2は、情報処理装置2000における解析処理の様子を例示する図である。情報処理装置2000はまず、第1ブロック20について特徴量抽出処理を行う。その結果、第1ブロック20に含まれる複数のデータ領域それぞれについての特徴量を示す情報(以下、特徴量情報)が生成される。特徴量情報には、第1ブロック20に含まれる複数の第2ブロック30それぞれについての特徴量が含まれることとなる。
【0020】
例えば
図2において、第1ブロック20から抽出される第2ブロック30は、第2ブロック30-1から第2ブロック30-3の3つである。情報処理装置2000は、第1ブロック20を対象とした特徴量抽出処理により、特徴量情報40を生成する。特徴量情報40には、第2ブロック30-1の特徴量、第2ブロック30-2の特徴量、及び第2ブロック30-3の特徴量が含まれている。
【0021】
情報処理装置2000は、第1ブロック20について生成された特徴量情報40を利用して、第1ブロック20に含まれる複数の第2ブロック30それぞれについて全結合処理を行う。
図2の例において、情報処理装置2000は、1)特徴量情報40に含まれる第2ブロック30-1の特徴量を利用して、第2ブロック30-1についての全結合処理を行い、2)特徴量情報40に含まれる第2ブロック30-2の特徴量を利用して、第2ブロック30-2についての全結合処理を行い、3)特徴量情報40に含まれる第2ブロック30-3の特徴量を利用して、第2ブロック30-3についての全結合処理を行う。
【0022】
<作用・効果>
既存の CNN と比較しながら、情報処理装置2000によってもたらされる作用効果について説明する。既存の CNN では、全結合処理の対象となるデータ領域ごとに特徴量抽出処理が行われる。
図3は、既存の CNN で
図2の第1ブロック20を処理する様子を例示する図である。
図3では、第2ブロック30-1、第2ブロック30-2、及び第2ブロック30-3について個々に特徴量抽出処理が行われる。そして、第2ブロック30-1から抽出された特徴量、第2ブロック30-2から抽出された特徴量、第2ブロック30-3から抽出された特徴量のそれぞれを用いて、第2ブロック30-1、第2ブロック30-2、及び第2ブロック30-3についての全結合処理がそれぞれ行われる。
【0023】
ここで前述したように、第2ブロック30は他の第2ブロック30と一部が重複している。例えば
図2と
図3では、第2ブロック30-1の一部と第2ブロック30-2の一部が互いに重複している。そのため、第2ブロック30-1と第2ブロック30-2について個々に特徴量抽出処理を行うと、これらの重複部分については、特徴量抽出処理が複数回(
図3では2回)実行されることになる。同様に、第2ブロック30-2と第2ブロック30-3についても、その重複部分について特徴量抽出処理が複数回実行される。このように既存の CNN では、同じデータ領域について特徴量を複数回抽出することになるため、処理に無駄が生じている。
【0024】
これに対し、本実施形態の情報処理装置2000は、全結合層処理が行われる単位である第2ブロック30よりも大きい単位の第1ブロック20についてまとめて特徴抽出処理が行われる。そして、その結果生成される特徴量情報から、複数の第2ブロック30それぞれについての特徴量を参照することで、各第2ブロック30についての全結合処理が実行される。この方法によれば、第1ブロック20に含まれる複数の第2ブロック30については、特徴量抽出処理が重複して行われることがない。よって、既存の CNN と比較し、二次元データの解析を効率的に行うことができ、二次元データの解析処理に要する時間を削減できるという効果や、二次元データの解析に要する計算機資源を削減できるという効果がもたらされる。
【0025】
以下、本実施形態の情報処理装置2000についてさらに詳細に説明する。
【0026】
<情報処理装置2000の機能構成の例>
図4は、実施形態1の情報処理装置2000の機能構成を例示する図である。情報処理装置2000は特徴量抽出部2020及び全結合処理部2040を有する。特徴量抽出部2020は二次元データ10を取得する。特徴量抽出部2020は、取得した二次元データ10内の第1ブロック20について特徴量抽出処理を実行し、第1ブロック20について特徴量情報40を生成する。前述したように、特徴量情報40は、第1ブロック20内に含まれる全ての第2ブロック30の特徴量に関する情報を含む。
【0027】
全結合処理部2040は、各第2ブロック30について、特徴量情報40に含まれるその第2ブロック30の特徴量を用いて全結合処理を実行する。前述したように、各第2ブロック30は、少なくとも1つの他の第2ブロック30とその一部のデータ領域が重複する。
【0028】
<情報処理装置2000のハードウエア構成>
情報処理装置2000の各機能構成部は、各機能構成部を実現するハードウエア(例:ハードワイヤードされた電子回路など)で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ(例:電子回路とそれを制御するプログラムの組み合わせなど)で実現されてもよい。以下、情報処理装置2000の各機能構成部がハードウエアとソフトウエアとの組み合わせで実現される場合について、さらに説明する。
【0029】
図5は、情報処理装置2000を実現するための計算機1000を例示する図である。計算機1000は任意の計算機である。例えば計算機1000は、Personal Computer(PC)やサーバマシンなどである。また、計算機1000は組み込みシステムであってもよい。計算機1000は、情報処理装置2000を実現するために設計された専用の計算機であってもよいし、汎用の計算機であってもよい。
【0030】
計算機1000は、バス1020、プロセッサ1040、メモリ1060、ストレージデバイス1080、及び入出力インタフェース1100を有する。バス1020は、プロセッサ1040、メモリ1060、ストレージデバイス1080、及び入出力インタフェース1100が、相互にデータを送受信するためのデータ伝送路である。ただし、プロセッサ1040などを互いに接続する方法は、バス接続に限定されない。
【0031】
プロセッサ1040は、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、又は FPGA(Field-Programmable Gate Array)などの種々のプロセッサである。なお、プロセッサ1040だけでなく、計算機1000全体を FPGA などの集積回路で実現してもよい。
【0032】
メモリ1060は、RAM(Random Access Memory)などを用いて実現される主記憶装置である。ストレージデバイス1080は、ハードディスク、SSD(Solid State Drive)、メモリカード、又は ROM(Read Only Memory)などを用いて実現される補助記憶装置である。
【0033】
入出力インタフェース1100は、計算機1000と入出力デバイスとを接続するためのインタフェースである。例えば入出力インタフェース1100には、キーボードなどの入力装置や、ディスプレイ装置などの出力装置が接続される。
【0034】
ストレージデバイス1080は、情報処理装置2000の各機能構成部を実現するプログラムモジュールを記憶している。プロセッサ1040は、これら各プログラムモジュールをメモリ1060に読み出して実行することで、各プログラムモジュールに対応する機能を実現する。
【0035】
<情報処理装置2000の利用例>
情報処理装置2000の理解を容易にするため、情報処理装置2000の利用環境を例示する。
図6は、情報処理装置2000の利用環境を例示する図である。
図6では、車両60にカメラ70及び情報処理装置2000が設けられている。ただし情報処理装置2000は、必ずしも車両60に常設される据え置き型の計算機として実現される必要は無く、車両60から取り外し可能な可搬型の計算機として実現されてもよい。
【0036】
情報処理装置2000は、カメラ70によって生成される画像データを二次元データ10として取得し、その画像データについて画像解析を行う。例えば情報処理装置2000は、車両の周囲の環境を構成する種々の情報を得るために利用される。具体的には、標識、信号、看板、建物、歩行者、又は他の車両などを認識するために利用される。
【0037】
車両の周囲の環境は時間と共に変化する。そのため情報処理装置2000は、カメラ70によって生成される映像を構成する画像データ(動画フレーム)それぞれを画像解析する必要がある。すなわち、各画像データを短い時間で画像解析する必要がある。この点、前述したように、本実施形態の情報処理装置2000によれば、二次元データの解析に要する時間を削減することができる。そのため情報処理装置2000は、
図6に示す利用環境のように、短時間で二次元データを解析する必要がある環境において、特に好適である。
【0038】
また、情報処理装置2000を車両に載せる際には、情報処理装置2000を実現する計算機を小型化することが好ましい。この点、前述したように、情報処理装置2000によれば、二次元データの解析に要する計算機資源を削減できるため、情報処理装置2000を実現する計算機のサイズを小さくすることができる。そのため、情報処理装置2000は、
図6に示す利用環境のように、二次元データの解析に利用される計算機のサイズを小さくすることが求められる環境において、特に好適である。
【0039】
<処理の流れ>
図7は、実施形態1の情報処理装置2000によって実行される処理の流れを例示するフローチャートである。情報処理装置2000は、二次元データ10を取得する(S102)。ループ処理A(S104からS114)は、二次元データ10に含まれる第1ブロック20それぞれについて実行されるループ処理である。S104において、特徴量抽出部2020は、二次元データ10から1つの第1ブロック20を選択する。ここで選択された第1ブロック20を第1ブロックiと呼ぶ。なお、処理すべき全ての第1ブロック20を対象として既にループ処理Aが実行されている場合、情報処理装置2000の処理は終了する。
【0040】
特徴量抽出部2020は、第1ブロックiについて特徴抽出処理を行う(S106)。
【0041】
ループ処理B(S108からS112)は、第1ブロックiに含まれる第2ブロック30それぞれについて実行されるループ処理である。全結合処理部2040は、第1ブロックiの中から、第2ブロック30を1つ抽出する。ここで抽出される第2ブロック30を第2ブロックjと呼ぶ。なお、第1ブロックiに含まれる全ての第2ブロック30について既にループ処理Bが実行されている場合、
図5の処理はS114に進む。
【0042】
全結合処理部2040は、第2ブロックjについて全結合処理を行う(S110)。S112はループ処理Bの終端であるため、
図7の処理はS108に戻る。
【0043】
S114はループ処理Bの終端であるため、
図7の処理はS114からS106に戻る。
【0044】
情報処理装置2000によって実行される処理の流れは
図7に示した流れに限定されない。例えば二次元データ10全体を第1ブロック20として扱う場合には、S106からS112をループ処理とする必要はない。その他にも例えば、情報処理装置2000は、同一の第1ブロック20に含まれる複数の第2ブロック30について全結合処理を並列又は並行に処理してもよい。なお、並列処理や並行処理を実現する具体的な手法には、既存の技術を利用することができる。例えば、情報処理装置2000を構成するプロセッサ1040をマルチコアプロセッサにしたり、情報処理装置2000に複数のプロセッサ1040を設けたりすることが考えられる。また、情報処理装置2000を複数の計算機で実現してもよい。同様に、複数の第2ブロック30についての一連の処理を並列又は並行に行ってもよい。
【0045】
情報処理装置2000が
図7の一連の処理を実行するタイミングは様々である。例えば情報処理装置2000は、定期的に
図7の一連の処理を実行する。その他にも例えば、情報処理装置2000は、他の装置から送信された二次元データ10を受信したことに応じ、S104以降の処理を実行するように構成されていてもよい。
【0046】
<二次元データ10の取得:S102>
特徴量抽出部2020は二次元データ10を取得する(S102)。ここで、情報処理装置2000が二次元データ10を取得する方法は様々である。例えば特徴量抽出部2020は、二次元データ10を生成する装置から二次元データ10を取得する。例えば二次元データ10が画像データである場合、二次元データ10を生成する装置はカメラである。
【0047】
その他にも例えば、特徴量抽出部2020は、二次元データ10が記憶されている記憶装置から二次元データ10を取得してもよい。その他にも例えば、特徴量抽出部2020は、他の装置によって送信される二次元データ10を受信することで、二次元データ10を取得してもよい。
【0048】
<第1ブロック20について>
第1ブロック20が二次元データ10の全体である場合、特徴量抽出部2020は、二次元データ10の全体を第1ブロック20として処理する。一方、第1ブロック20が二次元データ10の一部である場合、特徴量抽出部2020は、二次元データ10から第1ブロック20を抽出する。例えば特徴量抽出部2020は、第1ブロック20を定める情報(二次元データ10内における第1ブロック20の位置及び大きさを定める情報)を取得し、その情報に基づいて第1ブロック20を抽出する。
【0049】
二次元データ10から抽出する第1ブロック20は、1つであってもよいし、複数であってもよい。後者の場合、例えば特徴量抽出部2020は、第1ブロック20のサイズのスライディングウインドウを利用して、二次元データ10から第1ブロック20を順次抽出していく。スライディングウインドウのずらし量は任意である。
【0050】
<特徴量抽出処理>
特徴量抽出部2020は、第1ブロック20について特徴量抽出処理を行う。前述したように、特徴量抽出部2020が行う特徴量抽出処理は、CNN における特徴量抽出層で実行される処理に相当する。具体的には、特徴量抽出部2020は、CNN における畳み込み層(Convolution layer)の処理を第1ブロック20に対して行う。すなわち特徴量抽出部2020は、第1ブロック20に対して、特徴量抽出に利用するフィルタを畳み込むことで、第1ブロック20に含まれる複数のデータ領域それぞれから特徴量を抽出し、特徴量情報40を生成する。例えばフィルタとしては、エッジを検出するためのエッジ検出フィルタなどが利用できる。第1ブロック20に対して畳み込むフィルタは、予め特徴量抽出部2020からアクセス可能な記憶装置(例えばストレージデバイス1080)に記憶させておく。
【0051】
また、特徴量抽出処理では、畳み込み層の処理に加え、CNN におけるプーリング層(Pooling Layer)の処理を行ってもよい。プーリング層では、畳み込み層で得られた特徴量情報40のサイズを減らす処理が行われる。例えば、特徴量情報40の複数の領域それぞれについて、その領域内の複数の特徴量を1つの代表値に置き換える処理を行うことで、特徴量情報40のサイズを減らすことができる。なお、プーリング層において行われる具体的な処理については、既存の技術を利用することができる。
【0052】
特徴量抽出部2020は、生成した特徴量情報を記憶装置(例えばストレージデバイス1080)に記憶させる。なお、情報処理装置2000を FPGA として構成する場合、特徴量抽出部2020は、FPGA に内蔵されている記憶装置に特徴量情報を記憶させることが好適である。
【0053】
<<第1ブロック20の変形>>
ここで特徴量抽出部2020は、特徴量抽出処理を行う前に第2ブロック30の大きさに基づいて第1ブロック20を変形し、変形後の第1ブロック20について特徴量抽出処理を行ってもよい。
図8は、第2ブロック30の大きさに合わせて第1ブロック20を変形する様子を例示する図である。例えば特徴量抽出部2020は、いずれか一つの方向(以下、第1の方向)について、第1ブロック20の大きさが第2ブロック30の大きさと同じになるように、第1ブロック20を分割する。例えば
図8では、y 軸方向について第1ブロック20の大きさが第2ブロック30の大きさと同じ dy になるように、第1ブロック20を複数のデータ領域に分割している。すなわち、第1ブロック20の縦幅が第2ブロック30の縦幅と同一になるように変形している。
【0054】
その後、特徴量抽出部2020は、上記分割で得られた複数のデータ領域を、第1の方向とは異なる方向において連結する。例えば
図8では、元の第1ブロック20を分割することで得られた複数のデータ領域を、x 軸方向において連結する。こうすると、全結合処理部2040は、スライディングウインドウを利用して第1ブロック20から第2ブロック30を抽出する際、スライディングウインドウを一つの方向(
図8では x 方向)に移動するだけで、第1ブロック20全体から第2ブロック30を抽出できるようになる。
【0055】
なお、第1ブロック20を分割する方向(例えば
図8における y 軸方向)において、第1ブロック20の大きさが第2ブロック30の大きさの整数倍にならないこともある。この場合、例えば特徴量抽出部2020は、第1ブロック20の分割方向における末端(
図8の例では最も下)のデータ領域についてゼロパディング等の手法を適用することで、第1ブロック20の分割方向において、第1ブロック20の大きさが第2ブロック30の大きさの整数倍になるように調整する。
【0056】
第2ブロック30の大きさに基づいて第1ブロック20を変形する方法は、上述の方法に限定されない。例えば特徴量抽出部2020は、第1ブロック20の大きさと第2ブロック30の大きさとに基づき、第1ブロック20の画素を所定の規則で間引く処理を行ってもよい。
図9は、間引き処理を例示する図である。
図9の y 方向において、第1ブロック20の大きさは第2ブロック30の大きさの N 倍である。そこで、特徴量抽出部2020は、y 方向について、連続する N 画素ごとに N-1 画素を間引く処理を行う。これにより、y 方向について、第1ブロック20のサイズが第2ブロック30のサイズと同一になる。特徴量抽出部2020は、間引き処理後の第1ブロック20において、スライディングウインドウを x 方向に移動することで、第2ブロック30を抽出していく。
【0057】
なお、上述の例では、スライディングウインドウを移動させる方向(
図9の x 方向)については画素が間引かれていない。しかし、特徴量抽出部2020は、スライディングウインドウを移動させる方向についても画素を間引いてもよい。例えば特徴量抽出部2020は、スライディングウインドウを移動させる方向についての間引きを、他方の方向についての間引きと同様に行う(例えば
図9のケースでは、x 方向についても、連続する N 画素ごとに N-1 画素を間引く)。
【0058】
なお、上述のいずれの変形を利用しても、全結合処理部2040で行われる処理は同一である。そのため、FPGA 等のハードウエアで情報処理装置2000を実装する際に、計算機資源を抑えることができる。
【0059】
<全結合処理>
全結合処理部2040は、第1ブロック20から複数の第2ブロック30を抽出する。例えば前述したように、全結合処理部2040は、スライディングウインドウを利用して、第1ブロック20から第2ブロック30を抽出する。なお、特徴量抽出部2020が第1ブロック20を第2ブロック30の大きさに基づいて変形した後に特徴量抽出処理を行う場合、全結合処理部2040は、変形後の第1ブロック20から第2ブロック30の抽出を行う。
【0060】
さらに全結合処理部2040は、特徴量抽出部2020によって生成された特徴量情報に含まれる各第2ブロック30の特徴量を利用して、各第2ブロック30について全結合処理を行う。前述したように、全結合処理部2040が行う全結合処理は、CNN の全結合層で行われる処理に相当する。全結合処理を実現する具体的な手法については、目的に応じた既存の手法を利用することができる。なお、全結合処理部2040は、特徴量情報が記憶されている記憶装置から特徴量情報を読み出して利用する。
【0061】
なお、記憶領域の使用量を削減するため、不要となったデータを記憶装置から適宜削除することが好適である。例えば特徴量抽出部2020が第1ブロック20を変形する場合、情報処理装置2000は、変形後の第1ブロック20を表すデータを、変形後の第1ブロック20を利用した特徴量抽出処理を終えたタイミングで削除することが好適である。また、情報処理装置2000は、全結合処理に用いる特徴量情報を、その特徴量情報を用いた全結合処理を終えたタイミングで削除することが好適である。
【0062】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
【0063】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
1. 二次元データを取得し、前記二次元データ内のデータ領域である第1ブロックについて Convolutional Neural Network(CNN)の特徴量抽出層の処理を実行して、前記第1ブロック内の複数の画像領域それぞれの特徴量を示す特徴量情報を生成する特徴量抽出手段と、
前記第1ブロックの中から複数の第2ブロックを抽出し、各前記第2ブロックについて、前記特徴量情報に含まれるその第2ブロックの特徴量を用いて、CNN の全結合層の処理を実行する全結合処理手段と、を有し、
前記第1ブロックに含まれる各前記第2ブロックは、少なくとも1つの他の第2ブロックとその一部のデータ領域が重複する、情報処理装置。
2. 前記全結合処理手段は、前記第1ブロックについて特徴量情報を生成する処理が完了した後に、前記全結合層の処理を実行する、1.に記載の情報処理装置。
3. 前記特徴量抽出手段が実行する処理は、CNN の畳み込み層の処理及びプーリング層の処理を含む、1.又は2.に記載の情報処理装置。
4. 前記特徴量抽出手段は、第1の方向における大きさが前記第2ブロックの大きさと同じになるように前記第1ブロックを変形し、前記変形後の第1ブロックについて前記特徴量情報の生成を行い、
前記全結合処理手段は、前記変形後の第1ブロックから前記第2ブロックを抽出する、1.乃至3.いずれか一つに記載の情報処理装置。
5. 前記全結合処理手段は、前記第2ブロックと同じサイズのスライディングウインドウを前記変形後の第1ブロック内で移動させ、前記スライディングウインドウ内のデータ領域を前記第2ブロックとして抽出することで、前記変形後の第1ブロックから複数の前記第2ブロックを抽出し、
前記スライディングウインドウを移動させる方向は、前記第1の方向とは異なる方向である、4.に記載の情報処理装置。
6. 前記特徴量抽出手段と前記全結合処理手段はハードウエア回路で実装される、1.乃至5.いずれか一つに記載の情報処理装置。
7. 前記ハードウエア回路は FPGA(Field-Programmable Gate Array)である、6.に記載の情報処理装置。
8. 前記特徴量抽出手段は、前記特徴量情報を前記 FPGA に内蔵された記憶装置に記憶させ、
前記全結合処理手段は、前記記憶装置から前記特徴量情報を読み出して、前記全結合層の処理を実行する、7.に記載の情報処理装置。
【0064】
9. コンピュータによって実行される制御方法であって、
二次元データを取得し、前記二次元データ内のデータ領域である第1ブロックについて Convolutional Neural Network(CNN)の特徴量抽出層の処理を実行して、前記第1ブロック内の複数の画像領域それぞれの特徴量を示す特徴量情報を生成する特徴量抽出ステップと、
前記第1ブロックの中から複数の第2ブロックを抽出し、各前記第2ブロックについて、前記特徴量情報に含まれるその第2ブロックの特徴量を用いて、CNN の全結合層の処理を実行する全結合処理ステップと、を有し、
前記第1ブロックに含まれる各前記第2ブロックは、少なくとも1つの他の第2ブロックとその一部のデータ領域が重複する、制御方法。
10. 前記全結合処理ステップにおいて、前記第1ブロックについて特徴量情報を生成する処理が完了した後に、前記全結合層の処理を実行する、9.に記載の制御方法。
11. 前記特徴量抽出ステップにおいて実行する処理は、CNN の畳み込み層の処理及びプーリング層の処理を含む、9.又は10.に記載の制御方法。
12. 前記特徴量抽出ステップにおいて、第1の方向における大きさが前記第2ブロックの大きさと同じになるように前記第1ブロックを変形し、前記変形後の第1ブロックについて前記特徴量情報の生成を行い、
前記全結合処理ステップにおいて、前記変形後の第1ブロックから前記第2ブロックを抽出する、9.乃至11.いずれか一つに記載の制御方法。
13. 前記全結合処理ステップにおいて、前記第2ブロックと同じサイズのスライディングウインドウを前記変形後の第1ブロック内で移動させ、前記スライディングウインドウ内のデータ領域を前記第2ブロックとして抽出することで、前記変形後の第1ブロックから複数の前記第2ブロックを抽出し、
前記スライディングウインドウを移動させる方向は、前記第1の方向とは異なる方向である、12.に記載の制御方法。
【0065】
14. 9.乃至13.いずれか一つに記載の制御方法の各ステップをコンピュータに実行させるプログラム。
【符号の説明】
【0066】
10 二次元データ
20 第1ブロック
30 第2ブロック
40 特徴量情報
60 車両
70 カメラ
1000 計算機
1020 バス
1040 プロセッサ
1060 メモリ
1080 ストレージデバイス
1100 入出力インタフェース
2000 情報処理装置
2020 特徴量抽出部
2040 全結合処理部