IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ トヨタ自動車株式会社の特許一覧 ▶ 国立大学法人名古屋大学の特許一覧

<>
  • 特開-情報処理装置 図1
  • 特開-情報処理装置 図2
  • 特開-情報処理装置 図3
  • 特開-情報処理装置 図4
  • 特開-情報処理装置 図5
  • 特開-情報処理装置 図6
  • 特開-情報処理装置 図7
  • 特開-情報処理装置 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023056751
(43)【公開日】2023-04-20
(54)【発明の名称】情報処理装置
(51)【国際特許分類】
   G06N 3/04 20230101AFI20230413BHJP
【FI】
G06N3/04
【審査請求】未請求
【請求項の数】1
【出願形態】OL
(21)【出願番号】P 2021166148
(22)【出願日】2021-10-08
(71)【出願人】
【識別番号】000003207
【氏名又は名称】トヨタ自動車株式会社
(71)【出願人】
【識別番号】504139662
【氏名又は名称】国立大学法人東海国立大学機構
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】毛利 昌弘
(72)【発明者】
【氏名】高田 広章
(72)【発明者】
【氏名】本田 晋也
(57)【要約】
【課題】畳み込みニューラルネットワークを使用した処理に要する時間を短縮することである。
【解決手段】情報処理装置の制御装置は、所定の周期でセンサ群から検出結果を示すデータDを取得するデータ取得部と、CNNによりデータ取得部からのデータを処理する処理部とを含む。処理部は、所定の周期毎にデータ取得部からデータD(データD1,D2,・・・)を取得する。CNNを使用した1回の処理にデータD1~D10を要し、データD1~D3が揃うと畳み込み層の処理の一部を実行できるケースを想定すると、処理部は、データD1~D10が揃うのを待たずに、データD3を取得した時点で、データD1~D3を用いて実行できるタスクを実行する。そして、処理部は、データDを取得する毎に実行できる処理を順次実行する。
【選択図】図4
【特許請求の範囲】
【請求項1】
畳み込みニューラルネットワークを使用する情報処理装置であって、
入力データを取得するデータ取得部と、
前記畳み込みニューラルネットワークにより前記入力データを処理する処理部とを備え、
前記処理部は、
前記入力データに対して畳み込みの処理を実行する畳み込み層と、
前記畳み込み層の出力に対してプーリングの処理を実行するプーリング層と、
前記プーリング層の出力を入力とする全結合の処理を実行する全結合層とを含み、
前記処理部は、前記畳み込みの処理、前記プーリングの処理および前記全結合の処理に含まれる処理の少なくとも一部を実行できる入力が揃った場合、当該一部の処理を実行する、情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、畳み込みニューラルネットワークを使用する情報処理装置に関する。
【背景技術】
【0002】
国際公開第2020/194465号(特許文献1)には、畳み込み演算を、空間方向への畳み込み演算とチャネル方向への畳み込み演算とに分けて、これらを個別に実行するニューラルネットワーク回路が開示されている。このニューラルネットワーク回路は、チャネル方向への畳み込みを行なう1×1畳み込み演算回路と、1×1畳み込み演算回路の演算結果が格納されるSRAMと、SRAMに格納された演算結果に対して空間方向への畳み込みを行なうN×N畳み込み演算回路とを備える。1×1畳み込み演算回路の演算結果をSRAMに格納することにより、N×N畳み込み演算回路のメモリボトルネックを回避している。メモリボトルネックは、1回の畳み込み演算に必要なデータをメモリから読み出す時間が、1回の畳み込み演算時間を上回ることをいう(特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】国際公開第2020/194465号
【発明の概要】
【発明が解決しようとする課題】
【0004】
畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)が使用される場合、演算量が膨大になることが知られている。たとえば、組み込み系のシステム等では、コスト低減の観点から、汎用のCPU(Central Processing Unit)に比べて処理能力の低いCPU(たとえばマイコン等)が用いられることがある。処理能力の低いCPUでCNNが使用される場合、処理に多くの時間を要してしまう可能性がある。そのため、CNNを使用した処理に要する時間を短縮させる手法が望まれている。
【0005】
本開示は、上記課題を解決するためになされたものであり、その目的は、畳み込みニューラルネットワークを使用した処理に要する時間を短縮することである。
【課題を解決するための手段】
【0006】
この開示に係る情報処理装置は、畳み込みニューラルネットワークを使用する。情報処理装置は、入力データを取得するデータ取得部と、畳み込みニューラルネットワークにより入力データを処理する処理部とを備える。処理部は、入力データに対して畳み込みの処理を実行する畳み込み層と、畳み込み層の出力に対してプーリングの処理を実行するプーリング層と、プーリング層の出力を入力とする全結合の処理を実行する全結合層とを含む。処理部は、畳み込みの処理、プーリングの処理および全結合の処理に含まれる処理の少なくとも一部を実行できる入力が揃った場合、当該一部の処理を実行する。
【0007】
上記構成によれば、処理部は、畳み込みの処理、プーリングの処理および全結合の処理に含まれる処理の少なくとも一部を実行できる入力が揃った場合、当該一部の処理を実行する。すなわち、処理部は、畳み込みニューラルネットワーク(CNN)を使用した処理(畳み込みの処理、プーリングの処理および全結合の処理)を実行するための全ての入力が揃ってから処理を実行するのではなく、実行できる処理から随時実行していく。データの取得とCNNを使用した処理とが並列に実行されるので、CNNを使用した処理を実行するための全ての入力が揃ってから処理を実行する場合に比べ、処理に要する時間を短縮することができる。
【発明の効果】
【0008】
本開示によれば、畳み込みニューラルネットワークを使用した処理に要する時間を短縮することができる。
【図面の簡単な説明】
【0009】
図1】実施の形態に係る情報処理装置の構成を示す図である。
図2】処理部の詳細な構成を説明するための図である。
図3】CNNを使用した従来の処理の概要を説明するための図である。
図4】実施の形態に係る処理部が実行するCNNを使用した処理の概要を説明するための図である。
図5】畳み込み層の処理を説明するための図(その1)である。
図6】畳み込み層の処理を説明するための図(その2)である。
図7】全結合層の処理を説明するための図である。
図8】比較例の各タスクの処理時間を示す図である。
【発明を実施するための形態】
【0010】
以下、本開示の実施の形態について、図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。
【0011】
図1は、本実施の形態に係る情報処理装置1の構成を示す図である。本実施の形態に係る情報処理装置1は、畳み込みニューラルネットワーク(CNN)を使用して入力データを処理し、入力データに対する識別結果(処理結果)を出力する。情報処理装置1は、制御装置2と、記憶装置3と、通信装置4とを備える。
【0012】
記憶装置3は、たとえば、ROM(Read Only Memory)およびRAM(Random Access Memory)を含んで構成される。記憶装置3は、制御装置2により実行されるプログラム等を記憶する。通信装置4は、外部の装置と双方向の通信が可能に構成される。
【0013】
制御装置2は、データ取得部21と、処理部23と、出力部25とを含む。制御装置2は、記憶装置3に記憶されたプログラムを実行することにより、データ取得部21、処理部23、出力部25として機能する。なお、制御装置2は、上記プログラムを記憶するメモリ(図示せず)を備えてもよい。
【0014】
データ取得部21は、センサ群10から検出結果を示すデータを取得する。本実施の形態においては、センサ群10は第1~第5センサ5~9を含む。第1~第5センサ5~9としては、任意のセンサを適用することができる。情報処理装置1が、たとえば車両のエンジンを制御するエンジンECU(Electronic Control Unit)に用いられる場合には、センサ群10は、外気温センサ、気圧センサ、エンジン(ラジエータ)水温センサ、エンジンオイル温度センサ、燃料温度センサ、燃料圧力センサ、および/または、A/Fセンサ等を含んでもよい。データ取得部21は、所定の周期で、第1~第5センサ5~9の各々から検出結果を示すデータを取得し、取得されたデータを処理部23に出力する。
【0015】
処理部23は、CNNを使用して、データ取得部21から受けたデータ(入力データ)を処理し、入力データに対する識別結果(処理結果)を出力部25に出力する。
【0016】
図2は、処理部23の詳細な構成を説明するための図である。処理部23は、畳み込み層231,232、プーリング層233,234、および、全結合層235を含む。畳み込み層231,232およびプーリング層233,234は、入力データから特徴量を抽出する。畳み込み層231,232では、所定のサイズのフィルタ(カーネル)を用いた畳み込み処理が実行される。プーリング層233,234では、畳み込み結果を2次元的に縮小して有効値を抽出するプーリング処理が実行される。なお、図2おいては、2つの畳み込み層231,232および2つのプーリング層233,234が処理部23に含まれる例を示しているが、これらの数は、適宜変更することが可能である。
【0017】
全結合層235は、入力層と、中間層と、出力層とを含む。入力層は、複数のユニットで構成される。各ユニットには、1次元に変換されたプーリング層234の出力が入力される。
【0018】
中間層は、複数の層で構成される。図2では、中間層の層数が2である場合を例示しているが、中間層の層数は適宜変更することができる。中間層の各層は、複数のユニットで構成される。各ユニットは、前の層の各ユニットと、次の層の各ユニットとに接続される。各ユニットは、前の層の各ユニットからの各出力値に重みを乗算し、それらの乗算結果を積算する。次に、各ユニットは、積算結果の各々に対して所定のバイアスを加算(または減算)し、その加算結果(または減算結果)を所定の活性化関数(たとえば、ランプ関数またはシグモナイト関数)に入力し、その活性化関数の出力値を次の層の各ユニットに出力する。
【0019】
出力層は、1つ以上のユニットで構成される。出力層のユニット数は、適宜変更することができる。出力層の各ユニットは、中間層の最終層の各ユニットに接続される。出力層の各ユニットは、中間層の最終層の各ユニットからの出力値を受けて、各出力値に重みを乗算し、それらの乗算結果を積算する。当該乗算結果は、所定の活性化関数(たとえば、ランプ関数またはシグモナイト関数)に入力される。当該活性化関数の出力値は、たとえば確率を示す。
【0020】
一般的には、CNNを使用した処理では、1回のCNNを使用した処理に要するデータ、すなわち、畳み込み層、プーリング層および全結合層の処理を実行するためのデータが全て揃った時点で最初の処理(本実施の形態では畳み込み層の処理)が開始される。たとえば、畳み込み層の処理を実行するために必要となるセンサ群からのデータが全て揃うと、畳み込み層の処理が実行される。また、プーリング層の処理を実行するために必要となる畳み込み層からのデータが全て揃うと、プーリング層の処理が実行される。また、全結合層の処理を実行するために必要となるプーリング層からのデータが全て揃うと、全結合層の処理が実行される。
【0021】
ここで、本実施の形態に係る制御装置2の処理部23が実行するタスクには、実行周期が定められている。なお、以下ではタスクの実行周期を「タスク周期」とも称する。タスク周期は、たとえば、数ms~数十ms等に設定されている。処理部23の処理能力によっては、入力データの取得から結果出力までの一連の処理(ジョブ)にタスク周期以上の時間を要することもある。このような場合には、タスク周期で演算できる範囲に処理を分割して、一連の処理が分割実行される。しかしながら、一連の処理(ジョブ)を各層毎に分割して実行し、また、各層の処理を実行するために必要となる入力が揃ってから各層の処理を実行すると、全体として、処理に要する時間が長くなってしまう。さらに、センサ群10からの入力データの取得にある程度の時間を要するような場合には、処理に要する時間がさらに長くなる。
【0022】
図3は、CNNを使用した従来の処理の概要を説明するための図である。図4は、本実施の形態に係る処理部23が実行するCNNを使用した処理の概要を説明するための図である。図3および図4においては、CNNを使用した1回の処理にセンサ群10からのデータD1~D10を要することを想定する。センサ群10は、所定の周期毎にデータDnを出力し、制御装置2のデータ取得部21がデータDnを取得する。nは自然数である。データDnには、第1~第5センサ5~9が検出した検出値が含まれている。
【0023】
図3を参照して、CNNを使用した従来の処理では、まず、データD1~D10が揃うのを待つ。データD1~D10が揃うまでには、10周期を要する。データD1~D10が揃うと、各層毎に、1回のタスク周期で演算できる範囲で処理が分割される。たとえば、層毎やチャネル毎に処理が分割される。図2に示したようにCNNに2つの畳み込み層が含まれる例を相当すると、たとえば、処理が第1層の処理と第2層の処理とに分割される。このような処理の分割が行なわれると、タスク毎に処理負荷が異なり、処理時間に差異が出る可能性がある。たとえば、畳み込み層の第1層が8フィルタであり、第2層が4フィルタであり、1フィルタの演算に1msを要すると仮定すると、1回目のタスクでは8msの処理時間を要し、2回目のタスクでは4msの処理時間を要する。このように、各タスクにおいて要する処理時間が異なると、タスク周期に近い処理時間を要するタスクの実行時に、何らかの要因に起因してタスク周期内に処理を完了できないケースが生じ得る。また、たとえば組み込み系システムにおいては、各タスク周期における処理負荷は平準化されることが望ましい。
【0024】
図4を参照して、本実施の形態に係る処理部23は、データD1~D10が全て揃うのを待たず、その時点で揃っているデータを用いて実行できるタスクから順次実行する。たとえばデータD1~D3が揃うと畳み込み層231の処理の一部を実行できるケースを想定すると、処理部23は、データD1~D3が揃った時点で、データD1~D3を用いて実行できるタスクを実行する。そして、次の制御周期(所定の周期)でデータD4を取得すると、処理部23は、データD1~D4を用いて実行できるタスクを実行する。処理部23は、データが追加される毎に実行できるタスクを順次実行し、畳み込み層、プーリング層および全結合層のいずれの処理かに関わらず、実行できるタスクから実行していく。すなわち、畳み込み層の処理が全て完了していなくても、プーリング層または/および全結合層に実行できるタスクがあれば当該タスクを実行していく。畳み込み層、プーリング層および全結合層の処理は並列して実行される。
【0025】
さらに、本実施の形態に係る処理部23は、層やチャネルの単位ではなく、処理負荷に基づいて処理を分割する。より具体的には、処理部23は、1のタスクの処理負荷を平準化するように処理を分割する。上述の図3の例を再び用いると、1回目のタスクでは畳み込み層の第1層の6フィルタまで処理し、2回目のタスクでは第1層の2フィルタと、第2層の4フィルタとを処理するように処理が分割される。1回目のタスクにおいて、あえて6フィルタまでの処理に留めることで、各タスクの処理時間が6msとなり、タスク間の処理負荷が平準化される。タスク間の処理負荷が平準化されることで、たとえば組み込み系システム等においてシステムを安定化させることができる。なお、タスク間の処理負荷を平準化させるための目標となる処理負荷を「目標処理負荷」とも称する。タスク周期に対して目標処理負荷を適切に設定することにより、タスク周期内で処理が完了しないというケースの発生を抑制することができる。
【0026】
図5および図6は、畳み込み層の処理を説明するための図である。図5および図6では、3×3のフィルタが用いられる例について説明する。また、スライドは1、パディングはなしとする。
【0027】
時間T1において、データ取得部21がセンサ群10からデータD1を取得する。データD1には、第1~第5センサ5~9の検出結果が含まれている。この時点においては開始できる処理がないため、処理部23はさらにデータが収集されるのを待つ。同様に、時間T2において、データ取得部21がセンサ群10からデータD2を取得する。この時点においても開始できる処理がないため、処理部23はさらにデータが収集されるのを待つ。なお、時間T1と時間T2との間隔は上述の所定の周期である。
【0028】
時間T3において、データ取得部21がセンサ群10からデータD3を取得する。データD3が取得されると、これまでに揃った入力データ(データD1~D3)を用いて畳み込み層231(第1層)の処理を実行できるので、処理部23は畳み込み層231の処理を実行する。すなわち、時間T3において、処理部23は、第1層目バッファの先頭の行を計算する。
【0029】
時間T4において、データ取得部21がセンサ群10からデータD4を取得する。データD4が取得されると、処理部23は、第1層目バッファの次行を計算する。
【0030】
時間T5において、データ取得部21がセンサ群10からデータD5を取得する。データD5が取得されると、処理部23は、第1層目バッファの3行目を計算する。さらに、この時点においては、畳み込み層232(第2層)の処理を実行できる。処理部23は、第2層目バッファの先頭の行を計算する。上記のようにして、処理部23は、時間T5以降も実行できる処理から順次処理する。
【0031】
なお、上述した畳み込み層の処理と同様にして、プーリング層233,234の処理も実行することができる。処理部23は、畳み込み層231,232の処理が全て完了することを待たず、プーリング層233,234の処理においても、実行できる処理から順次実行していく。
【0032】
図7は、全結合層の処理を説明するための図である。一例として、図7に示す入力がプーリング層234から全結合層235に入力されることを想定する。全結合層235の入力層では、たとえば、flatten関数を用いて入力が一次元化される。この時点(図7の入力を受けて当該入力を一次元化した時点)において、重み係数を読み出して、中間層の第1層目の先頭の行を処理することができる。重み係数は、たとえば記憶装置3から読み出される。このように、全結合層235においても、全ての入力が揃う前に、実行可能な処理から順次実行することができる。
【0033】
処理部23は、その時点において実行可能な処理を、所定時間で処理を完了できる処理負荷に分けて、分けられた処理を1のタスクで実行する。
【0034】
出力部25は、処理部23の出力層から受けた結果(確率)に基づいて、識別結果を出力する。たとえば、出力部25は、出力層から受けた確率のうち、最も高い確率のものを識別結果として出力する。
【0035】
図8は、比較例の各タスクの処理時間を示す図である。図8の横軸には実行タスク番号、縦軸には処理負荷(処理時間)が示されている。比較例は、図3で説明した従来の処理を実行した場合である。
【0036】
0~N1のタスクは、処理の開始直後のタスクであり、畳み込み層の処理を実行するための入力データを取得する。そのため、0~N1のタスクの処理負荷は小さくなっている。実行タスク番号が増えるに連れて、すなわち、処理が進むに連れて、処理するデータ量も増加して処理負荷も増加していき、N3以降のタスクでは、奇数回のタスクと偶数回のタスクとに処理負荷の差が生じている。奇数回のタスクの処理負荷はX1、偶数回のタスクの処理負荷はy1(<X1)となっている。奇数回のタスクと偶数回のタスクとの処理負荷の差は、たとえば、フィルタの設定やプーリングの処理の設定等に起因して生じ得る。このように、タスク間で処理負荷に差が生じることは、システムの安定化等の観点から望ましくない。
【0037】
その一方で、本実施の形態においては、1のタスクの処理負荷が目標処理負荷となるように処理が分割されるので、タスク間の処理負荷を平準化することができる。
【0038】
以上のように、本実施の形態に係る情報処理装置1において、制御装置2の処理部23は、CNNを使用した処理に要する入力データが全て揃うのを待たず、あるタスクを実行できる入力データが揃った時点で処理を実行する。これにより、CNNを使用した処理に要する全てのデータが揃ってから処理を開始する(最初のタスクを実行する)場合に比べ、処理に要する時間を短縮することができる。
【0039】
また、処理部23は、1のタスクの処理負荷が目標処理負荷となるように処理を分割する。たとえば、層やチャネルの単位で処理を分割すると、タスク間の処理負荷にばらつきが生じてしまう。層やチャネルの単位ではなく、処理負荷に基づいて処理を分割することで、タスク間の処理負荷を平準化することができる。
【0040】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本開示の範囲は、上記した実施の形態の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0041】
1 情報処理装置、2 制御装置、3 記憶装置、4 通信装置、5 第1センサ、6 第2センサ、7 第3センサ、8 第4センサ、9 第5センサ、10 センサ群、21 データ取得部、23 処理部、25 出力部、231,232 畳み込み層、233,234 プーリング層、235 全結合層。
図1
図2
図3
図4
図5
図6
図7
図8