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

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

▶ 株式会社ニコンの特許一覧

特許7622351演算装置、演算方法、およびコンピュータプログラム
<>
  • 特許-演算装置、演算方法、およびコンピュータプログラム 図1
  • 特許-演算装置、演算方法、およびコンピュータプログラム 図2
  • 特許-演算装置、演算方法、およびコンピュータプログラム 図3
  • 特許-演算装置、演算方法、およびコンピュータプログラム 図4
  • 特許-演算装置、演算方法、およびコンピュータプログラム 図5
  • 特許-演算装置、演算方法、およびコンピュータプログラム 図6
  • 特許-演算装置、演算方法、およびコンピュータプログラム 図7
  • 特許-演算装置、演算方法、およびコンピュータプログラム 図8
  • 特許-演算装置、演算方法、およびコンピュータプログラム 図9
  • 特許-演算装置、演算方法、およびコンピュータプログラム 図10
  • 特許-演算装置、演算方法、およびコンピュータプログラム 図11
  • 特許-演算装置、演算方法、およびコンピュータプログラム 図12
  • 特許-演算装置、演算方法、およびコンピュータプログラム 図13
  • 特許-演算装置、演算方法、およびコンピュータプログラム 図14
  • 特許-演算装置、演算方法、およびコンピュータプログラム 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-01-20
(45)【発行日】2025-01-28
(54)【発明の名称】演算装置、演算方法、およびコンピュータプログラム
(51)【国際特許分類】
   G06N 3/0464 20230101AFI20250121BHJP
   G06T 7/00 20170101ALI20250121BHJP
   G06F 17/10 20060101ALI20250121BHJP
【FI】
G06N3/0464
G06T7/00 350C
G06F17/10 A
【請求項の数】 11
(21)【出願番号】P 2020074044
(22)【出願日】2020-04-17
(65)【公開番号】P2021170293
(43)【公開日】2021-10-28
【審査請求日】2023-02-20
(73)【特許権者】
【識別番号】000004112
【氏名又は名称】株式会社ニコン
(74)【代理人】
【識別番号】100099759
【弁理士】
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【弁理士】
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100114018
【弁理士】
【氏名又は名称】南山 知広
(74)【代理人】
【識別番号】100165191
【弁理士】
【氏名又は名称】河合 章
(74)【代理人】
【識別番号】100133835
【弁理士】
【氏名又は名称】河野 努
(74)【代理人】
【識別番号】100122116
【弁理士】
【氏名又は名称】井上 浩二
(72)【発明者】
【氏名】藤嶋 敏之
【審査官】宮司 卓佳
(56)【参考文献】
【文献】特開2019-028657(JP,A)
【文献】特開2020-042367(JP,A)
【文献】特開2000-209590(JP,A)
【文献】特開2019-197445(JP,A)
【文献】国際公開第2019/079198(WO,A1)
【文献】特開平08-054557(JP,A)
【文献】JAESEON KIM et al.,Efficient Semantic Segmentation Using Spatio-Channel Dilated Convolutions,IEEE Xplore [オンライン],2019年,頁1~14,[検索日 2024.02.26] インターネット<URL:https://ieeexplore.ieee.org/abstract/document/8880554>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00- 3/0985
G06T 7/00
G06F 17/10
(57)【特許請求の範囲】
【請求項1】
入力側から出力側に向けて連続して設けられる複数の畳み込み層を有するニューラルネットワークに所定のデータを入力することで所定の処理を実行する演算処理部を有し、
前記複数の畳み込み層のそれぞれは、直前の層から出力されるとともに当該畳み込み層に入力される、チャネル方向および空間方向を含む複数の次元を有する特徴マップの前記チャネル方向のすべての特徴に対し、前記チャネル方向について前記畳み込み層ごとに定められたダイレートサイズの異なるカーネルを用いた畳み込み演算を実行し、
前記複数の畳み込み層ごとに異なる前記ダイレートサイズは、n(nは2以上の自然数)の累乗値であって、最も出力側の畳み込み層から出力される特徴マップの個々の特徴に最も入力側の畳み込み層に入力された特徴マップの前記すべての特徴が結合されるよう設定される、
演算装置。
【請求項2】
前記最も出力側の畳み込み層から出力される特徴マップの前記すべての特徴に、前記最も入力側の畳み込み層に入力された特徴マップの前記複数の畳み込み層のそれぞれに用いられるカーネルのダイレートサイズの合計だけ離間した範囲に含まれる特徴が結合される、請求項1に記載の演算装置。
【請求項3】
前記最も入力側の畳み込み層に入力された特徴マップの所定範囲に含まれる個々の特徴は、前記最も出力側の畳み込み層から出力される特徴マップの前記所定範囲において前記複数の畳み込み層のそれぞれに用いられるカーネルの前記ダイレートサイズの合計だけ離間した範囲に含まれる特徴に結合される、請求項1または2に記載の演算装置。
【請求項4】
前記複数の畳み込み層に含まれる一の畳み込み層は、ストライドが2以上の畳み込み演算を実行する、請求項1-3のいずれか一項に記載の演算装置。
【請求項5】
前記複数の畳み込み層に含まれる一の畳み込み層は、前記ダイレートサイズに基づくストライドにより畳み込み演算を実行する、請求項4に記載の演算装置。
【請求項6】
前記複数の畳み込み層に含まれる一の畳み込み層は、前記ダイレートサイズの2倍のストライドにより畳み込み演算を実行する、請求項4または5に記載の演算装置。
【請求項7】
前記複数の畳み込み層に含まれる一の畳み込み層は、前記ダイレートサイズが2のときにストライドが4の畳み込み演算を実行する、請求項6に記載の演算装置。
【請求項8】
前記ニューラルネットワークは、前記複数の畳み込み層に接続し、転置畳み込み演算を実行する転置畳み込み層をさらに備える、請求項2-7のいずれか一項に記載の演算装置。
【請求項9】
光学系により集光された光に応じた画像データを出力する撮像素子と、
請求項1-8のいずれか一項に記載の演算装置であって、前記演算装置が有する前記演算処理部は、前記画像データを前記所定のデータとして前記ニューラルネットワークに入力することで、前記画像データに表される画像領域のうち識別対象物に対応する領域を識別する処理を実行する、演算装置と、
識別された前記識別対象物に対応する領域に合焦するよう前記光学系を制御する合焦制御部と、を備える撮像装置。
【請求項10】
コンピュータが、入力側から出力側に向けて連続して設けられる複数の畳み込み層を有するニューラルネットワークに所定のデータを入力することで所定の処理を実行する演算方法であって、
前記複数の畳み込み層のそれぞれは、直前の層から出力されるとともに当該畳み込み層に入力される、チャネル方向および空間方向を含む複数の次元を有する特徴マップの前記チャネル方向のすべての特徴に対し、前記チャネル方向について前記畳み込み層ごとに定められたダイレートサイズの異なるカーネルを用いた畳み込み演算を実行し、
前記複数の畳み込み層ごとに異なる前記ダイレートサイズは、n(nは2以上の自然数)の累乗値であって、最も出力側の畳み込み層から出力される特徴マップの個々の特徴に最も入力側の畳み込み層に入力された特徴マップの前記すべての特徴が結合されるよう設定される、
演算方法。
【請求項11】
コンピュータに、入力側から出力側に向けて連続して設けられる複数の畳み込み層を有するニューラルネットワークに所定のデータを入力することで所定の処理を実行させるコンピュータプログラムであって、
前記複数の畳み込み層のそれぞれは、直前の層から出力されるとともに当該畳み込み層に入力される、チャネル方向および空間方向を含む複数の次元を有する特徴マップの前記チャネル方向のすべての特徴に対し、前記チャネル方向について前記畳み込み層ごとに定められたダイレートサイズの異なるカーネルを用いた畳み込み演算を実行し、
前記複数の畳み込み層ごとに異なる前記ダイレートサイズは、n(nは2以上の自然数)の累乗値であって、最も出力側の畳み込み層から出力される特徴マップの個々の特徴に最も入力側の畳み込み層に入力された特徴マップの前記すべての特徴が結合されるよう設定される、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ニューラルネットワークを使用した演算装置、演算方法、およびコンピュータプログラムに関する。
【背景技術】
【0002】
従来、データの内容に基づく学習の結果に従って認識を行うニューラルネットワークの構成が提案されている(例えば非特許文献1を参照)。
【先行技術文献】
【非特許文献】
【0003】
【文献】Andrew G. Howard et. al., “MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications,” arXiv:1704.04861, 2017.
【発明の概要】
【0004】
本開示にかかる演算装置は、入力側から出力側に向けて連続して設けられる複数の畳み込み層を有するニューラルネットワークに所定のデータを入力することで所定の処理を実行する演算処理部を有し、複数の畳み込み層のそれぞれは、直前の層から出力されるとともに当該畳み込み層に入力される、チャネル方向および空間方向を含む複数の次元を有する特徴マップの所定範囲に含まれる個々の特徴に対し、チャネル方向および空間方向を含む複数の次元のうち少なくとも1つについて畳み込み層ごとに定められたダイレートサイズの異なるカーネルを用いた畳み込み演算を実行する。
【0005】
本開示にかかる演算方法は、コンピュータが、入力側から出力側に向けて連続して設けられる複数の畳み込み層を有するニューラルネットワークに所定のデータを入力することで所定の処理を実行する演算方法であって、複数の畳み込み層のそれぞれは、直前の層から出力されるとともに当該畳み込み層に入力される、チャネル方向および空間方向を含む複数の次元を有する特徴マップの所定範囲に含まれる個々の特徴に対し、チャネル方向および空間方向を含む複数の次元のうち少なくとも1つについて畳み込み層ごとに定められたダイレートサイズの異なるカーネルを用いた畳み込み演算を実行する。
【0006】
本開示にかかるコンピュータプログラムは、コンピュータに、入力側から出力側に向けて連続して設けられる複数の畳み込み層を有するニューラルネットワークに所定のデータを入力することで所定の処理を実行させるコンピュータプログラムであって、複数の畳み込み層のそれぞれは、直前の層から出力されるとともに当該畳み込み層に入力される、チャネル方向および空間方向を含む複数の次元を有する特徴マップの所定範囲に含まれる個々の特徴に対し、チャネル方向および空間方向を含む複数の次元のうち少なくとも1つについて畳み込み層ごとに定められたダイレートサイズの異なるカーネルを用いた畳み込み演算を実行する。
【図面の簡単な説明】
【0007】
図1】コンピュータの概略構成を示す模式図である。
図2】プロセッサの機能ブロック図である。
図3】ニューラルネットワークの構造を示す模式図である。
図4】特徴マップの構造の例を示す模式図である。
図5】(a)はダイレートサイズが1のカーネルの構造の例を示す模式図であり、(b)はダイレートサイズが2のカーネルの構造の例を示す模式図であり、(c)はダイレートサイズが4のカーネルの構造の例を示す模式図である。
図6】演算処理部の処理フローチャートである。
図7】ニューラルネットワークの異なる構造を示す模式図である。
図8】ニューラルネットワークのさらに異なる構造を示す模式図である。
図9】ニューラルネットワークのさらに異なる構造を示す模式図である。
図10】(a)はダイレートサイズが1のカーネルの構造の他の例を示す模式図であり、(b)はダイレートサイズが2のカーネルの構造の他の例を示す模式図であり、(c)はダイレートサイズが4のカーネルの構造の他の例を示す模式図である。
図11】一実施形態にかかる演算装置を搭載するカメラの構成を示す模式図である。
図12】一実施形態にかかる演算装置を搭載するカメラの処理フローチャートである。
図13】一実施形態にかかるニューラルネットワークの構造を示す模式図である。
図14】ニューラルネットワークを用いた処理の例を説明する模式図である。
図15】ニューラルネットワークを用いた処理の他の例を説明する模式図である。
【発明を実施するための形態】
【0008】
以下、図面を参照して演算装置、演算方法、およびコンピュータプログラムについて詳細に説明する。ただし、本発明は図面または以下に記載される実施形態には限定されないことを理解されたい。
【0009】
図1は本開示の一実施形態にかかるコンピュータの概略構成を示す模式図であり、図2はプロセッサの機能ブロック図である。
【0010】
本実施形態において、演算装置の一例であるコンピュータ1は、入力された所定のデータをニューラルネットワークに入力することで所定の処理を実行する。そのために、コンピュータ1は、入出力インタフェース11と、メモリ12と、プロセッサ13とを備える。
【0011】
入出力インタフェース11は、コンピュータ1が処理すべきデータを受け付け、または、コンピュータ1により処理されたデータを出力するためのインタフェース回路を有する。入出力インタフェース11は、例えばコンピュータ1を通信ネットワークに接続するための通信インタフェース回路、またはコンピュータ1をキーボード、ディスプレイといった各種周辺機器と接続するための周辺機器インタフェース回路を含む。入出力インタフェース11は、所定のデータの入力を受け付けて、処理結果を出力する。
【0012】
メモリ12は記憶部の一例であり、例えば、半導体メモリ、磁気ディスク装置および光ディスク装置のうちの少なくとも1つを有する。メモリ12は、プロセッサ13による処理に用いられるドライバプログラム、オペレーティングシステムプログラム、アプリケーションプログラム、データ等を記憶する。例えば、メモリ12はアプリケーションプログラムとして、本開示の演算処理を実現するためのコンピュータプログラムを記憶する。また、メモリ12はデータとして、ニューラルネットワークを規定するためのパラメータ群(層数、層構成、カーネル、重み係数等)を記憶する。各種プログラムは、コンピュータ読み取り可能な可搬型記録媒体から、公知のセットアッププログラム等を用いてメモリ12にインストールされてよい。コンピュータ読み取り可能な可搬型記録媒体とは、例えばCD-ROM(Compact Disc Read-Only Memory)、DVD-ROM(DVD Read-Only Memory)等である。
【0013】
プロセッサ13は、1以上のプロセッサおよびその周辺回路を備える。プロセッサ13は、コンピュータ1の全体的な動作を統括的に制御する処理回路であり、例えば、CPU(Central Processing Unit)である。プロセッサ13は、大量の定型的演算を並列に処理可能なGPU(Graphics Processing Unit)を有してもよい。プロセッサ13は、コンピュータ1の各種処理がメモリ12に記憶されているプログラム等に基づいて適切な手段で実行されるように、入出力インタフェース11等の動作を制御する。プロセッサ13は、メモリ12に記憶されているプログラム(オペレーティングシステムプログラム、ドライバプログラム、アプリケーションプログラム等)に基づいて処理を実行する。また、プロセッサ13は、複数のプログラム(アプリケーションプログラム等)を並列に実行することができる。
【0014】
図2に示すように、プロセッサ13は、ニューラルネットワークNN1による演算を実行するための演算処理部131を有する。演算処理部131は、プロセッサ13が有するプロセッサ上で実行されるプログラムによって実装される機能モジュールである。あるいは、演算処理部131は、独立した集積回路、マイクロプロセッサ、またはファームウェアとしてコンピュータ1に実装されてもよい。
【0015】
演算処理部131は、ニューラルネットワークNN1に所定のデータを入力することで所定の処理を実行する。所定の処理は、例えば画像に表わされる物体の種類および位置を特定する物体検出、画像の画素単位でクラス分類を行う領域分割等である。
【0016】
ニューラルネットワークNN1は、上流層UL1と、中流層ML1と、下流層DL1とを有する。
【0017】
図3はニューラルネットワークNN1の構造を示す模式図であり、図4は特徴マップの構造の例を示す模式図であり、図5はカーネル(またはフィルタ)の構造の例を示す模式図である。
【0018】
ニューラルネットワークNN1は、例えばCNN(Convolutional Neural Network)型のアーキテクチャを有するニューラルネットワークである。ニューラルネットワークNN1は、例えば画像データの入力を受け付けて所定の演算を実行し、画像データに表わされる物体を検出する。ニューラルネットワークNN1は、検出対象となる物体が表わされた複数の画像、および、各画像上における物体の位置、種類等を示す情報を教師データとして用いて、誤差逆伝搬法に従って予め学習される。
【0019】
この場合、ニューラルネットワークNN1は、上流層UL1において入力された画像データに対する畳み込み演算を実行し、画像データの解像度と同じ解像度の特徴マップを出力する。そして、上流層UL1は、その特徴マップに対してプーリング処理を行い、解像度を低下させた特徴マップを生成し、その特徴マップを中流層ML1に出力する。中流層ML1は、複数の畳み込み層により畳み込み演算を実行し、入力された特徴マップの解像度と同じ解像度の特徴マップを出力する。下流層DL1は、入力された特徴マップに対してプーリング処理を行い、解像度を低下させた特徴マップを生成する。最終的に得られた様々な解像度の特徴マップから複数のバウンディングボックスが出力され、複数のバウンディングボックスに対してNMS(Non-Maximum Suppression)処理が行われ、物体が検出される。
【0020】
ニューラルネットワークNN1は、上述の上流層UL1、中流層ML1、および下流層DL1のさらに下流側に、異なる上流層、中流層、および下流層を有していてもよい。この場合、異なる上流層は下流層DL1を含み、物体検出などの処理を行ってよい。
【0021】
また、ニューラルネットワークNN1は、セマンティックセグメンテーション用に学習されてもよい。この場合、上流層UL1は、物体検出の場合と同様に入力された画像データの畳み込み演算およびプーリング処理を行って解像度を低下させた特徴マップを生成し、中流層ML1に出力する。中流層ML1は、複数の畳み込み層により畳み込み演算を実行し、入力された特徴マップの解像度と同じ解像度の特徴マップを下流層DL1に出力する。下流層DL1は、上流層UL1と同様、入力された特徴マップに対してプーリング処理を行い、解像度を低下させた特徴マップを生成する。ニューラルネットワークNN1から出力された特徴マップに対して、転置畳み込み演算(transposed convolution)を実行して解像度を上昇させた特徴マップを生成し、画像の各画素を複数のクラスに分類し、セマンティックセグメンテーションが実行される。
【0022】
上流層UL1は、画像データの入力を受け付ける入力層、入力された画像データの畳み込み演算を実行する1以上の畳み込み層等を有し、複数の次元を有する特徴マップ100を出力する。さらに、上流層UL1はプーリング層を有し、得られた特徴マップの解像度をそのプーリング層により低下させてから中流層ML1に出力してもよい。
【0023】
図4は、上流層UL1から出力される特徴マップ100の構造を示している。特徴マップ100は、複数の特徴を複数の次元に配置した構造を有する。特徴マップ100において、複数の特徴はH(高さ)方向およびW(幅)方向を少なくとも有する空間方向に配置され、さらにC(チャネル、深さ)方向に配置される。
【0024】
本実施形態において、図3に示すノードは特徴マップ100のチャネルに対応する。すなわち、特徴マップ100は、上流層UL1の最も出力側に位置する最終層L10に含まれるノード数に応じたチャネル数を有する。図3では、説明の簡単化のために、最終層L10に含まれるノードのうちの8個(N101-N108)が図示される。なお、ノード数および畳み込まれる特徴の数は本実施形態に限定されない。
【0025】
中流層ML1は、入力側から出力側に向けて連続して設けられる複数の畳み込み層L11-L13を有する。畳み込み層L11-L13は、特徴マップの複数の次元の少なくとも1つについて畳み込み演算を実行する。本実施形態では、畳み込み層L11-L13は、少なくともC方向についての畳み込み演算を実行して演算の結果を出力する。
【0026】
複数の畳み込み層のそれぞれは、直前の層から出力されるとともに当該畳み込み層に入力される複数の次元を有する特徴マップの所定範囲に含まれる個々の特徴に対し、畳み込み演算を実行する。すなわち、各畳み込み層は、入力される特徴マップのチャネル数と同数のノードを有し、そのうちN101-N108に対応する8個が図3に示されている。畳み込み層L11に含まれるノードN111-N118は、上流層UL1の最終層L10に含まれるノードN101-N108がそれぞれ出力する特徴と、カーネルの対応する重み係数との積和演算を実行する。それぞれの畳み込み層における畳み込み演算には、複数の次元の少なくとも1つについて畳み込み層ごとに定められたダイレートサイズの異なるカーネルが用いられる。本実施形態では、C方向について、畳み込み層ごとにダイレートサイズの異なるカーネルが用いられる。
【0027】
図3において、入力側の層(例えば畳み込み層L11)のノードと出力側の層(例えば畳み込み層L12)のノードとを接続する線は、入力側の層のノードが出力する特徴が出力側の層のノードの演算に用いられる(以下、「結合されている」ともいう)ことを示す。
【0028】
畳み込み層L11-L13は、特徴マップのC方向について、所定範囲に含まれる個々の特徴に対する畳み込み演算を実行する。図3では、中流層かつ所定の範囲が、2重枠線で示されている。
【0029】
畳み込み層L11に含まれるノードN111-N118は、直前の層である上流層UL1の最終層L10から出力される特徴マップのうちノードN101-N108から出力される個々の特徴に対し、ダイレートサイズが1のカーネルを用いた畳み込み演算を実行する。
【0030】
図5(a)は、ダイレートサイズが1のカーネルK11の構造の例を示す模式図である。図5(a)-(c)において、各カーネルにおける斜線の施されたマス目は、重み係数が設定されていることを示す。また、各カーネルにおける斜線の施されていないマス目は、重み係数が設定されていない(または重み係数として0が設定されている)ことを示す。すなわち、斜線の施されたマス目に対応する重み係数のみが、畳み込み演算の入力として使用される。図5(a)に示すカーネルK11は、対象ノードに対応する位置に重み係数W112が設定され、対象ノードから距離が1となる位置に重み係数W111、W113が設定されている。
【0031】
直前の層である上流層UL1の最終層L10から出力される特徴マップの所定範囲に含まれる個々の特徴に対し、対象ノードを順次変更して(ストライド=1)カーネルK11を適用することで、畳み込み層L11における畳み込み演算が行われる。例えば、ノードN112は、ノードN101が出力する特徴と重み係数W111との積と、ノードN102が出力する特徴と重み係数W112との積と、ノードN103が出力する特徴と重み係数W113との積とを加算し、出力する。なお、本明細書においてストライドとは、中流層に入力される特徴マップを基準とした、カーネルを適用する位置の間隔をいう。
【0032】
畳み込み層L12では図5(b)に示すダイレートサイズが2のカーネルK12を用いた畳み込み演算が実行され、畳み込み層L13では図5(c)に示すダイレートサイズが4のカーネルK13を用いた畳み込み演算が実行される。図5(b)に示すカーネルK12は、対象ノードに対応する位置に重み係数W122が設定され、対象ノードから距離が2となる位置に重み係数W121、W123が設定されている。カーネルK12において、対象ノードから距離が1となる位置には重み係数が設定されていない。図5(c)に示すカーネルK13は、対象ノードに対応する位置に重み係数W132が設定され、対象ノードから距離が4となる位置に重み係数W131、W133が設定されている。カーネルK13において、対象ノードから距離が1、2、3となる位置には重み係数が設定されていない。
【0033】
このように、中流層ML1では、入力側から出力側に向けて連続して設けられる複数の畳み込み層L11-L13によって、畳み込み層ごとにダイレートサイズの異なるカーネルを用いた畳み込み演算が実行される。
【0034】
最も出力側の畳み込み層L13から出力される特徴マップのうち所定範囲に含まれるノードN131-N138から出力される各特徴には、最も入力側の畳み込み層L11に入力された特徴マップのうち所定範囲に含まれる一部の特徴が結合される。一部の特徴とは、畳み込み層L11-L13のそれぞれに用いられるカーネルのダイレートサイズの合計(1+2+4=7)だけ離間した範囲に含まれる特徴である。
【0035】
図3において、例えば畳み込み層L13のノードN135には、畳み込み層L12のノードN121およびノードN125が結合される。
【0036】
畳み込み層L12において、ノードN121には、畳み込み層L11のノードN111およびノードN113が結合される。ノードN125には、畳み込み層L11のノードN113、ノードN114、およびノードN117が結合される。そのため、畳み込み層L13のノードN135には、畳み込み層L12のノードN121およびノードN125を介して、畳み込み層L11のノードN111、N113、N114、N117が結合される。
【0037】
畳み込み層L11において、ノードN111には、上流層UL1の最終層L10のノードN101およびノードN102が結合される。ノードN113には、上流層UL1の最終層L10のノードN102、ノードN103およびノードN104が結合される。ノードN115には、上流層UL1の最終層L10のノードN104、ノードN105およびノードN106が結合される。ノードN117には、上流層UL1の最終層L10のノードN106、ノードN107およびノードN108が結合される。そのため、畳み込み層L13のノード135には、畳み込み層L12のノードN121およびノードN125および畳み込み層L11のノードN111、N113、N114、N117を介して、上流層UL1の最終層L10のノードN101-N108が結合される。
【0038】
このように、畳み込み層L13のノードN131-N138から出力される各特徴には、上流層UL1の最終層L10のノードN101-N108から出力されるすべてのC方向の特徴が結合される。
【0039】
畳み込み層L13から出力された特徴マップは、下流層DL1に入力される。下流層DL1は、最も出力側に、ニューラルネットワークNN1による演算結果を出力する出力層を有する。出力層は、活性化関数としてソフトマックス関数を用いることにより、例えば画像上の着目する領域について検出対象の種類のうち最も確からしい種類を特定できる。また、出力層は、活性化関数としてシグモイド関数を用いることにより、種類ごとに確信度を出力することができる。下流層DL1は、出力層よりも入力側に、転置畳み込み演算を実行する転置畳み込み層、プーリング層などを含んでもよい。
【0040】
図6は、演算処理部131の処理フローチャートである。演算処理部131は、ニューラルネットワークNN1に所定のデータを入力し、以下の処理を実行する。
【0041】
まず、演算処理部131は、ニューラルネットワークNN1の上流層UL1に、所定のデータに対する所定の演算を実行させ、特徴マップ100を出力させる(ステップS1)。特徴マップ100は、畳み込み層L11-L13における畳み込み演算の対象となる所定範囲に対応する特徴を含む。
【0042】
次に、演算処理部131は、ニューラルネットワークNN1の中流層ML1に含まれる複数の畳み込み層L11-L13のうち、未処理かつ最も入力側の層に畳み込み演算を実行させる(ステップS2)。ステップS2での畳み込み演算では、畳み込み層ごとに予め設定されたダイレートサイズのカーネルが用いられる。本実施形態では、畳み込み層L11においてダイレートサイズ=1、畳み込み層L12においてダイレートサイズ=2、畳み込み層L13においてダイレートサイズ=4のカーネルが用いられる。
【0043】
次に、演算処理部131は、中流層ML1に含まれるすべての畳み込み層L11-L13による畳み込み演算が終了したか否かを判定する(ステップS3)。
【0044】
すべての畳み込み層による畳み込み演算が終了していないと判定された場合(ステップS3:N)、演算処理部131はステップS2の処理を実行する。未処理の畳み込み層には、処理済みの畳み込み層に関連づけられるダイレートサイズとは異なるダイレートサイズが関連づけられている。そのため、このようにステップS2の処理を繰り返し実行することにより、複数の畳み込み層のそれぞれにおいて、ダイレートサイズの異なるカーネルを用いた畳み込み演算が実行されることとなる。
【0045】
すべての畳み込み層による畳み込み演算が終了したと判定された場合(ステップS3:Y)、演算処理部131は中流層ML1の出力を下流層DL1に入力し、下流層DL1に所定の演算を実行させる(ステップS4)。演算処理部131は、下流層DL1の最終層から出力される演算結果を取得し、ニューラルネットワークNN1による演算を終了する。
【0046】
1チャネルあたりH×Wの特徴を256チャネル有する特徴マップ(Cin=Cout=256)に対し、3×3のカーネル(kH=kW=3)を用いた畳み込み演算を、非特許文献1に記載されたMobileNetsにより実行する場合の演算負荷は、以下の式1により求められる。
【0047】
{(kH×kW×Cin)+(1×1×Cin×Cout)}×H×W = (2304+65536)×H×W = 67840×H×W
(式1)
【0048】
一方、同じ特徴マップに対し同じカーネルを用いて本開示の演算装置が演算を実行する場合の演算負荷は、以下の式2により求められる。
【0049】
Cin×log2Cin×kH×kW×H×W = 256×8×3×3×H×W = 18432×H×W (式2)
【0050】
このようにニューラルネットワークNN1を用いて演算を行うことにより、演算装置は、演算対象の次元に多数の特徴を有する特徴マップの演算量を削減することができる。
【0051】
なお、畳み込み層L11-L13で用いられるカーネルのダイレートサイズは、1(=20)、2(=21)、4(=22)のように、2の累乗値となっている。このようにダイレートサイズを設定することで、より少ない畳み込み層によってより多くの特徴を結合する畳み込み演算が可能となる。
【0052】
畳み込み層で用いられるカーネルのダイレートサイズは、2以上の自然数の累乗値であってもよい。例えば、ダイレートサイズが1(=30)、3(=31)、9(=32)のような3の累乗値となるカーネルを使用してもよい。さらに、カーネルのダイレートサイズは2以上の自然数の累乗値に限定されず、所定数の畳み込み層によって必要な範囲の特徴が結合できるよう、適宜設定されてよい。
【0053】
本開示において、ニューラルネットワークの構造は、図3に示す構造に限定されない。例えば、ニューラルネットワークの中流層に含まれる複数の畳み込み層での畳み込み演算に用いられるダイレートサイズは、1、2、4のように昇順に設定されていなくてもよい。図7はニューラルネットワークの異なる構造を説明する模式図である。
【0054】
図7に示すニューラルネットワークNN2は、上流層UL2と、中流層ML2と、下流層DL2とを有する。
【0055】
上流層UL2はニューラルネットワークNN1における上流層UL1と、下流層DL2は下流層DL1とそれぞれ同様であるので、詳細な説明を省略する。
【0056】
中流層ML2は、入力側から出力側に向けて連続して設けられる複数の畳み込み層L21-L23を有する。畳み込み層L21に含まれるノードN211-N218は、直前の層である上流層UL2の最終層L20から出力される特徴マップのうちノードN201-N208から出力される個々の特徴に対し、ダイレートサイズが4のカーネルを用いた畳み込み演算を実行する。また、畳み込み層L22に含まれるノードN221-N228は、直前の層である畳み込み層L21から出力される特徴マップのうちノードN211-N218から出力される個々の特徴に対し、ダイレートサイズが1のカーネルを用いた畳み込み演算を実行する。また、畳み込み層L23に含まれるノードN231-N238は、直前の層である畳み込み層L22から出力される特徴マップのうちノードN221-N228から出力される個々の特徴に対し、ダイレートサイズが2のカーネルを用いた畳み込み演算を実行する。
【0057】
このように、連続する複数の畳み込み層でダイレートサイズの異なるカーネルを用いた畳み込み演算を実行するにあたり、ダイレートサイズは入力側から出力側に向けて昇順または降順といった順序で変更される必要はなく、順序は任意である。
【0058】
最も出力側の畳み込み層L23のノードN231-N238から出力される各特徴には、上流層UL2の最終層L20のノードN201-N208から畳み込み層L21のノードN211-N218に入力されたすべてのC方向の特徴が結合される。
【0059】
また、ニューラルネットワークの中流層に含まれる複数の畳み込み層は、ストライドが2以上の畳み込み演算を実行してもよい。図8は、ニューラルネットワークのさらに異なる構造を説明する模式図である。
【0060】
図8に示すニューラルネットワークNN3は、上流層UL3と、中流層ML3と、下流層DL3とを有する。
【0061】
上流層UL3はニューラルネットワークNN1における上流層UL1と同様であるので、詳細な説明を省略する。
【0062】
中流層ML3は、入力側から出力側に向けて連続して設けられる複数の畳み込み層L31-L33を有する。畳み込み層L31に含まれるノードN311-N318は、直前の層である上流層UL3の最終層L30から出力される特徴マップのうちノードN301-N308から出力される個々の特徴に対し、ダイレートサイズが4のカーネルを用いた畳み込み演算を実行する。
【0063】
畳み込み層L32では、ダイレートサイズが1のカーネルを用いた畳み込み演算が実行される。このときの畳み込み演算のストライドは2である。すなわち、ノードN321で畳み込み演算が実行される場合、隣接するノードN322では畳み込み演算は実行されない。また、ノードN321から距離が2の位置にあるノードN323では畳み込み演算が実行される。
【0064】
畳み込み層L33では、ダイレートサイズが2のカーネルを用いた畳み込み演算が実行される。このとき、畳み込み演算のストライドは4である。すなわち、ノードN331およびN335で畳み込み演算が実行され、ノードN332-N334およびノードN336-N338では畳み込み演算は実行されない。
【0065】
最も出力側の畳み込み層L33のノードN331、N335から出力される各特徴には、上流層UL3の最終層L30のノードN301-N308から畳み込み層L31のノードN311-N318に入力されたすべてのC方向の特徴が結合される。
【0066】
下流層DL3に含まれる層L34は、ノードN331、N335から出力される各特徴を用いた転置畳み込み演算を実行する。
【0067】
このように、ニューラルネットワークNN3では、中流層ML3にはストライドが2以上の畳み込み演算を実行する畳み込み層L32、L33が含まれている。そのため、ニューラルネットワークNN3では、ストライドが2以上の畳み込み演算を実行する畳み込み層よりも出力側における演算量が削減される。
【0068】
畳み込み層L31-L33において、ストライドが1、2、4と設定される例を説明したが、本開示はこれに限定されない。すなわち、ストライドが2以上の畳み込み演算を実行する畳み込み層が、中流層ML3のいずれかの位置に配置されていればよい。なお、ストライドが2以上の畳み込み演算を実行する畳み込み層が、入力側に近い位置に配置されると、演算量の削減に効果的である。
【0069】
また、中流層での畳み込み演算の対象となる所定範囲に含まれる個々の特徴が、所定範囲に含まれない特徴と結合されてもよい。図9はニューラルネットワークのさらに異なる構造を説明する模式図である。
【0070】
図9に示すニューラルネットワークNN4は、上流層UL4と、中流層ML4と、下流層DL4とを有する。下流層DL4はニューラルネットワークNN1における下流層DL1と同様であるので、詳細な説明を省略する。
【0071】
上流層UL4は、中流層ML4での畳み込み演算の対象となる所定範囲に対応するノードN401-N408に加えて、所定範囲の外側にノードN400およびノードN409を有する。
【0072】
中流層ML4は、入力側から出力側に向けて連続して設けられる複数の畳み込み層L41-L43を有する。畳み込み層L41は、所定範囲に含まれるノードN411-N418に加えて、所定範囲の外側にノードN410およびノードN419を有する。畳み込み層L42は、所定範囲に含まれるノードN421-N428に加えて、所定範囲の外側にノードN420およびノードN429を有する。畳み込み層L43は、所定範囲に含まれるノードN431-N438に加えて、所定範囲の外側にノードN430およびノードN439を有する。
【0073】
畳み込み層L41において所定範囲の外側のノードN410には、上流層UL4の最終層L40において所定範囲の外側のノードN400と、所定範囲に含まれるノードN401とが結合される。畳み込み層L42において所定範囲の外側のノードN420には、畳み込み層L41において所定範囲の外側のノードN410と、所定範囲に含まれるノードN411とが結合される。畳み込み層L43において所定範囲の外側のノードN430には、畳み込み層L42において所定範囲の外側のノードN420と、所定範囲に含まれるノードN421とが結合される。
【0074】
畳み込み層L41において所定範囲の外側のノードN419には、所定範囲に含まれるノードN408と、上流層UL4の最終層L40において所定範囲の外側のノードN409とが結合される。畳み込み層L42において所定範囲の外側のノードN429には、所定範囲に含まれるノードN418と、畳み込み層L41において所定範囲の外側のノードN419とが結合される。畳み込み層L43において所定範囲の外側のノードN439には、所定範囲に含まれるノードN428と、畳み込み層L42において所定範囲の外側のノードN429とが結合される。
【0075】
このように、ニューラルネットワークNN4では、所定範囲に含まれるノードが所定範囲の外側のノードに結合される。そのため、ニューラルネットワークNN4では、所定範囲に含まれるノードでの演算により出力される特徴を、所定範囲の外側のノードでの演算に使用することができる。
【0076】
また、中流層ML1における畳み込み演算は、C方向以外の次元、例えばHW方向について実行されてもよい。HW方向(2次元)について実行される畳み込み演算では、2次元のカーネルが用いられる。図10は、カーネルの構造の他の例を示す模式図である。図10(a)-(c)において、各カーネルにおける斜線の施されたマス目に重み係数が設定されていることを示している。図10(a)-(c)において、各カーネルにおける斜線の施されていないマス目には、重み係数が設定されていない。
【0077】
図10は、HW方向について実行される畳み込み演算に用いられるカーネルの例を示しており、図10(a)、(b)、(c)はそれぞれダイレートサイズが1、2、4のカーネルK21、K22、K23の構造の例である。なお、図10(a)-(c)に示すカーネルを用いて畳み込まれる2つの次元は、H方向およびW方向に限られず、例えばH方向およびC方向、W方向とC方向であってもよい。
【0078】
また、本開示の演算装置では、演算処理部131は、3次元以上の構造を有するカーネル(不図示)を用いて、3以上の次元についての畳み込みを実行してもよい。
【0079】
次に、一実施形態にかかる演算装置をカメラに搭載した例について説明する。図11は、一実施形態にかかる演算装置を搭載するカメラの構成を示す模式図である。
【0080】
本実施形態にかかる演算装置は、カメラ2に搭載されるマイクロコントローラ4である。カメラ2は、撮像装置の一例であり、イメージセンサ3、マイクロコントローラ4およびレンズ5を備える。イメージセンサ3は、撮像素子の一例であり、レンズ5で集光された被写体からの光を画像データに変換する。マイクロコントローラ4は、プロセッサ、メモリ、入出力インタフェースを集積した集積回路である。マイクロコントローラ4は、イメージセンサ3から入力された画像データに基づいて演算を実行し、オートフォーカスの対象とすべき画像データ中の領域を示す信号を出力する。また、マイクロコントローラ4は、合焦制御部として動作し、画像データに表される所定の領域に合焦するようレンズ5を制御する合焦制御信号を出力する。レンズ5は、光学系の一例であり、被写体からの光をイメージセンサ3に集光させる。レンズ5は、オートフォーカス機構51を有し、オートフォーカス機構51は、マイクロコントローラ4から出力される合焦制御信号に基づいてレンズ5を被写体に合焦させる。
【0081】
図12は、一実施形態にかかる演算装置を備えたカメラの処理フローチャートである。カメラ2は、ユーザによる不図示のシャッターボタンの半押しなどのオートフォーカス実行を指示する動作の検出に応じて、図12の処理を開始する。カメラ2は、オートフォーカス実行を指示する動作が検出されている間、図12の処理を繰り返し実行してもよい。
【0082】
まず、イメージセンサ3は、集光された光に応じた画像データをマイクロコントローラ4に送信する(ステップS10)。
【0083】
次に、マイクロコントローラ4は、受信した画像データをニューラルネットワークに入力し、画像データに含まれる識別対象物に対応する領域を識別する演算を実行させる(ステップS20)。ニューラルネットワークによる演算処理は、図6に示すニューラルネットワークによる演算のフローチャートと同様である。
【0084】
続いて、マイクロコントローラ4は、演算により識別された識別対象物に対応する領域に合焦させるための合焦制御信号を生成し、オートフォーカス機構51に送信する。オートフォーカス機構51は、マイクロコントローラ4より受信した合焦制御信号に基づいて、レンズ5に含まれる合焦レンズの位置を変更する(ステップS30)。画像の特定された領域に焦点が合っているか否かは、コントラストAF方式、位相差AF方式などの方式により判定される。
【0085】
マイクロコントローラ4は、ニューラルネットワークNN1を有する演算処理部131に代えて、ニューラルネットワークNN4を有する演算処理部431を備える。図13は、カメラ2に搭載される演算装置が有するニューラルネットワークNN5の構造を示す模式図である。
【0086】
ニューラルネットワークNN5は、上流層UL5と、中流層ML5と、下流層DL5とを有する。
【0087】
上流層UL5は、それぞれ所定の演算を実行する第1上流層UL5Aおよび第2上流層UL5Bを有する点がニューラルネットワークNN1における上流層UL1と相違し、その他は同様である。
【0088】
中流層ML5は、それぞれ所定の演算を実行する第1中流層ML5Aおよび第2中流層ML5Bを有する。また、中流層ML5は、入力側から出力側に向けて連続して設けられる複数の畳み込み層L51-L52を有する。畳み込み層L51に含まれるノードN511-N514は、直前の層である上流層UL5の最終層L50から出力される特徴マップのうちノードN501-N504から出力される個々の特徴に対し、ダイレートサイズが1のカーネルを用いた畳み込み演算を実行する。また、畳み込み層L51に含まれるノードN515-N518は、上流層UL5の最終層L50から出力される特徴マップのうちノードN505-N508から出力される個々の特徴に対し、ダイレートサイズが1のカーネルを用いた畳み込み演算を実行する。なお、ノードN515-N518の畳み込み演算に用いられるカーネルは、ノードN511-N514の畳み込み演算に用いられるカーネルとは異なるパラメータを有してよい。
【0089】
同様に、畳み込み層L52ではダイレートサイズが2のカーネルを用いた畳み込み演算が実行される。
【0090】
このように、中流層ML5では、入力側から出力側に向けて連続して設けられる複数の畳み込み層L51-L52によって、畳み込み層ごとにダイレートサイズの異なるカーネルを用いた畳み込み演算が実行される。
【0091】
最も出力側の畳み込み層L52から出力される特徴マップのうち所定範囲に含まれるノードN521-N524から出力される各特徴には、最も入力側の畳み込み層L51に入力された特徴マップのうち所定範囲に含まれる一部の特徴が結合される。一部の特徴とは、畳み込み層L51-L52のそれぞれに用いられるカーネルのダイレートサイズの合計(1+2=3)だけ離間した範囲に含まれる特徴である。すなわち、畳み込み層L52のノードN521-N524から出力される各特徴には、上流層UL5の最終層L50の最終層のノードN501-N504から畳み込み層L51のノードN511-N514に入力されたすべての特徴が結合される。畳み込み層L52のノードN525-N528から出力される各特徴についても同様である。
【0092】
ニューラルネットワークNN5において、畳み込み層L52のノードN524には、所定範囲外において距離が2となる畳み込み層L51のノードN516が結合される。そのため、ノードN524には、ノードN505-N507からノードN516に入力された特徴も結合される。
【0093】
下流層DL5は、それぞれ所定の演算を実行する第1下流層DL5Aおよび第2下流層DL5Bを有する点がニューラルネットワークNN1における下流層DL1と相違し、その他は同様である。
【0094】
図14は、ニューラルネットワークを用いた処理の例を説明する模式図である。
【0095】
ニューラルネットワークNN5の第1上流層UL5A、第1中流層ML5Aおよび第1下流層DL5Aは、教師データを学習することで所定の識別対象物(例えば牛)を含む矩形領域を検出可能となる。第1上流層UL5A、第1中流層ML5Aおよび第1下流層DL5Aは、例えばSSD(Single Shot MultiBox Detector)と同様のアーキテクチャとしてよい。この場合、第1上流層UL5Aは、畳み込み演算を実行し、イメージセンサ3が出力する画像PICの解像度と同じ解像度の特徴マップを出力する。そして、第1上流層UL5Aは、その特徴マップに対してプーリング処理を行い、解像度を低下させた特徴マップを生成し、第1中流層ML5Aに出力する。第1中流層ML4Aは畳み込み演算を実行し、入力された特徴マップの解像度と同じ解像度の特徴マップを出力する。第1下流層DL5Aは、プーリング処理を行い、解像度を低下させた特徴マップを生成する。マイクロコントローラ4は、最終的に得られた様々な解像度の特徴マップから複数のバウンディングボックスを検出し、複数のバウンディングボックスに対してNMS処理を行う。このように処理することで、ニューラルネットワークNN5は画像PICから識別対象物を含む矩形領域BB1を検出する。
【0096】
矩形領域BB1に含まれる点は、カメラ2のユーザが注目している点である可能性が大きい。そのため、オートフォーカス機構51は、矩形領域BB1に含まれる点に焦点が合うようにレンズ5を制御する。ここで、矩形領域BB1には、識別対象物に対応する点P1と対応しない点P2とが含まれる。識別対象物に対応しない点P2に焦点が合うようにオートフォーカス機構51が制御された場合、ユーザの意図に即したオートフォーカス制御とならない可能性が大きい。
【0097】
一方、第2上流層UL5B、第2中流層ML5Bおよび第2下流層DL5Bは、教師データを学習することで所定の特徴を有する(例えば識別対象物に対応する)領域を分割可能となる。第2上流層UL5B、第2中流層ML5Bおよび第2下流層DL5Bは、例えばU-Netと同様のアーキテクチャとしてよい。この場合、第2上流層UL5Bは、畳み込み演算およびプーリング処理を実行し、イメージセンサ3が出力する画像PICの解像度よりも解像度の低い特徴マップを出力する。第2中流層ML5Bは畳み込み演算を実行し、入力された特徴マップの解像度と同じ解像度の特徴マップを第2下流層DL5Bに出力する。第2下流層DL5Bは転置畳み込み演算を実行する。また、第2下流層DL5Bは、転置畳み込み演算を実行してもよい。マイクロコントローラ4は、画像PICの画素を複数のクラスに分類する。このように処理することで、ニューラルネットワークNN5は画像PICの領域を、識別対象物のクラスに対応する領域R1、R2と識別対象物以外のクラスに対応する領域R3とに分割する。
【0098】
カメラ2に搭載されたマイクロコントローラ4は、ニューラルネットワークNN5を用いることにより、上述の処理を実行するための演算量を削減することができる。
【0099】
本実施形態のマイクロコントローラ4は、ニューラルネットワークNN5を用いてさらに効率的な演算を実行することができる。図15は、ニューラルネットワークNN5を用いた処理の他の例を説明する模式図である。
【0100】
本実施形態のニューラルネットワークNN5では、第1中流層ML5Aおよび第2中流層ML5Bに含まれる一部のノードは結合されている。このようなニューラルネットワークNN5に対して上述の学習を行う。学習済みのニューラルネットワークNN5では、第1中流層ML5Aと第2中流層ML5Bとの結合により、物体検出を行う第1中流層ML5A側の特徴量と領域分割を行う第2中流層ML5B側の特徴量とが混ざり合う。混ざり合う割合は、第1中流層ML5Aと第2中流層ML5Bとの境界に近いほど大きい。
【0101】
このようなニューラルネットワークNN5に画像PICを入力することで、矩形領域BB1と、識別対象物に対応する領域R1、R2との積集合となる領域が特定され、識別対象物のみが含まれる領域R4が識別される。領域R4には、識別対象物に対応しない点が含まれていないので、領域R4に含まれる点P3に焦点が合うようにオートフォーカス機構51を制御することにより、ユーザの意図に即したオートフォーカス制御を実行することが可能となる。本開示の演算装置は、このようなオートフォーカス制御に好適な畳み込み演算を、少ない演算量で実行することができる。
【0102】
当業者は、本開示の精神および範囲から外れることなく、種々の変更、置換および修正をこれに加えることが可能であることを理解されたい。
【符号の説明】
【0103】
1 コンピュータ
131 演算処理部
NN1 ニューラルネットワーク
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15