【新規性喪失の例外の表示】特許法第30条第2項適用 2018年2月8日 一般社団法人電子情報通信学会発行 画像工学研究会信学技法 ITS2017−80、IE2017−112(2018−02)239項〜244項にて公開
【文献】
岡谷 貴之,画像認識のための深層学習の研究動向 −畳込みニューラルネットワークとその利用法の発展−,人工知能,日本,2016年03月01日,第31巻 第2号,169-179
(58)【調査した分野】(Int.Cl.,DB名)
【背景技術】
【0002】
画像認識は、入力された画像に対して、その内容に関するラベルを出力する問題である。ラベルは様々なものがあり得るが、多くは画像中に写る物体や場所、シーンの名称が代表的である。
【0003】
例えば、犬が写る画像が入力された場合、画像認識技術は「犬」というラベルを出力することが期待される。
【0004】
画像認識技術の性能は、入力された画像に対して、いかに正確に期待される(正しい)ラベルを出力できるかにより議論され、より正しいラベルを出力できるものほど高精度であるとされる。
【0005】
画像は、RGBの画素を要素としたテンソルにより構成されているが、このような低レベル(物理信号レベル)な情報と、高レベルな意味的なラベルとの間には大きな隔たりがあるため、画像を入力としてそのまま高精度な認識を実行する(つまり、正確なラベルを出力する)認識器を学習することは困難であると考えられていた。
【0006】
しかしながら、畳み込みニューラルネットワーク(Convolutional Neural Network:CNN)を認識器として用いることで、このような画素の配列から直接ラベルを出力するような学習をしても、高精度な認識ができることが実証された(非特許文献1)。以降、画像認識精度について、CNNによる飛躍的な改善が報告されている。
【0007】
一般に、CNNによる画像認識の認識精度は様々な要因に依存することが知られている。
【0008】
前提として、CNNによる画像認識では、事前に認識したいラベルについて、それが正解となるような画像の集合(学習用画像と呼ぶ)を基にCNNを学習する必要がある。したがって、認識精度は学習用画像の質と量に依存する。
【0009】
また、認識精度に大きく作用する要因としてCNNの構造が挙げられる。通常、CNNは、比較的単純な処理を行う数種類の作用素(層、レイヤなどと呼ばれる)を、幾層にも積み重ねて実現される。
【0010】
例えば、代表的なものに畳み込み層やプーリング層、全結合層などが存在する。
【0011】
畳み込み層は、入力されたテンソルに対して、高さ×幅方向に一定の大きさを持つ畳み込みフィルタを適用する層である(非特許文献1参照)。何種類のフィルタを持つかは任意であり、設計者により設計される。
【0012】
畳み込み層はパラメータとして畳み込みフィルタの重みを有しており、これはデータに基づいて学習される。
【0013】
また、一般に学習すべきパラメータを持たない層としてプーリング層が知られている。入力テンソルに対して高さ×幅方向に一定の大きさを持つ“フィルタ”を適用する点では畳み込み層と同様であるが、プーリング層は当該大きさの範囲に対して、最大の値を出力する(最大値プーリング)、平均値を出力する(平均値プーリング)等、固定的かつ単純な作用を適用する点で異なる。
【0014】
特に、パラメータ数を増加させずに入力テンソルの大きさを減少させたい場合などに利用される。
【0015】
CNNの性能は、これら畳み込み層やプーリング層をどのように構成し、配置するかによって左右される。
【0016】
基本的なCNNの設計指針は、全体のパラメータ数を抑えつつ、精度の高い認識が可能にすることであり、従来から、配置に関する研究の他、畳み込み層やプーリング層自体を改善することを試みる研究が進められてきている。
【0017】
例えば、非特許文献2では、残差ブロックと呼ばれる畳み込み層の変形が開示されている。
【0018】
ある入力テンソルがあった場合に、残差ブロックは、特定の畳み込み層を適用して出力するパスと、何の作用も適用せずにそのまま入力テンソルを出力するパスとを持ち、これら2種の出力の足し合わせを最終的な出力とする。
【0019】
すなわち、元の入力テンソルに対する差分を、畳み込み層に学習させることを狙っている。
【0020】
また、非特許文献3では、Dilated Convolutionと呼ばれる畳み込み層の亜種が開示されている。
【0021】
通常の畳み込み層では、畳み込みフィルタは、高さ・幅方向に連続する一部領域に対して適用されるが、Dilated Convolutionでは一定間隔を開けた不連続な領域に適用される。
【0022】
この工夫により、パラメータ数を増加させることなく、より入力テンソルの広い範囲に作用させることができるようになっている。
【0023】
特に、画像はマルチスケール性、すなわち、同じ物体でも大きく写っている場合もあれば小さく写っている場合もあるという性質があり、様々な大きさをカバーできるような処理系が好ましく、また、より広い範囲を処理することで、複数の物体間の関係性を考慮することもできるという効果が期待できる。
【0024】
また、特許文献1に開示されている技術では、CNNと再帰型ニューラルネット(Recurrent Neural Net:RNN)を組み合わせて用いる映像認識方法が開示されている。
【発明を実施するための形態】
【0045】
以下、本発明の実施の形態について図面を用いて説明する。
【0046】
<本発明の実施の形態に係る画像認識装置の概要>
まず、本発明の実施形態の概要について説明する。
【0047】
本実施形態に係る画像認識装置は、少なくとも一つの畳み込み層と、当該畳み込み層の出力を、所定の2方向に対して相互排反である1以上のブロックに分割し、当該1以上のブロックの各々について、当該ブロックに含まれる当該畳み込み層の出力を、当該ブロック内における位置に応じて相互排反な複数のサブブロックに分割し、全てのブロックにわたり、当該位置が対応するサブブロックに含まれる要素の値を集約して、当該複数のサブブロックの各々における集約結果を出力するプーリング層とを含む畳み込みニューラルネットワーク(CNN)を用いて画像認識を行う。
【0048】
当該プーリング層は、パラメータを持たない新たなプーリング層でありながら、最大値プーリング等とは異なり、一切の情報欠損を起こすことが無い。これにより、本実施形態に係る画像認識装置は、画像認識の安定した精度改善効果を得ることができる。
【0049】
また、当該プーリング層は、当該位置が対応するサブブロックに含まれる要素の値を集約した複数のテンソルを出力する。そして、複数の出力テンソルの各々に対して、共通のパラメータを用いる畳み込み層を適用することで、全体としてもパラメータ数増加の無いCNNを構成することが可能である。
【0050】
すなわち、本実施形態に係る画像認識装置は、当該CNNを用いて画像認識を行うことにより、パラメータ数を増加させることなく、画像認識を精度よく行うことができる。
【0051】
<本発明の実施の形態に係る画像認識装置の構成>
図1を参照して、本発明の実施の形態に係る画像認識装置100の構成について説明する。
図1は、本発明の実施の形態に係る画像認識装置100の構成を示すブロック図である。
【0052】
画像認識装置100は、CPUと、RAMと、後述する画像認識処理ルーチンを実行するためのプログラムを記憶したROMとを備えたコンピュータで構成され、機能的には次に示すように構成されている。
【0053】
図1に示すように、本実施形態に係る画像認識装置100は、CNN記憶部101と、入力部102と、畳み込み部103と、第一ブロック集約部104と、第一ブロック畳み込み部105と、第二ブロック集約部106と、第二ブロック畳み込み部107と、認識処理部108と、出力部109とを備えて構成される。
【0054】
本実施形態のCNNは、畳み込み部103により計算される畳み込み層、第一ブロック集約部104により計算されるプーリング層、第一ブロック畳み込み部105により計算される畳み込み層、第二ブロック集約部106により計算されるプーリング層、第二ブロック畳み込み部107により計算される畳み込み層、及び認識処理部108により計算される出力層により構成される。また、出力層は、Global Ave. Pooling(GAP)層、全結合層、及びソフトマックス関数により構成される。
【0055】
第一ブロック集約部104により計算されるプーリング層と、第二ブロック集約部106により計算されるプーリング層とは同一の構成である。
【0056】
また、第一ブロック畳み込み部105により計算される畳み込み層と、第二ブロック畳み込み部107により計算される畳み込み層とは同一の構成である。
【0057】
CNN記憶部101は、CNNの各層の学習済みパラメータを記憶している。
【0058】
具体的には、CNN記憶部101は、畳み込み部103、第一ブロック集約部104、第一ブロック畳み込み部105、第二ブロック集約部106、第二ブロック畳み込み部107、及び認識処理部108の各々が用いるCNNの各層(複数の畳み込み層、複数のプーリング層、及び出力層)のパラメータを記憶している。本実施形態では、畳み込み部103、第一ブロック畳み込み部105、及び第二ブロック畳み込み部107の各々が用いる畳み込み層のパラメータを同一のものとする。
【0059】
なお、画像認識処理を実行する際には、画像認識装置100を構成するCNNは学習済みであることが一般的であり、本実施形態でも学習済みのCNNを利用することを前提に説明を進めるが、後述のプーリング層及び畳み込み層の構成及び処理は、CNNが学習済みであるかないかに関わらず同一であるため、特に区別しない。
【0060】
入力部102は、1以上のチャネルを有する画像110の入力を受け付ける。
【0061】
具体的には、入力部102は、画像110を、外部からの通信により入力を受け付ける。通信手段は任意のものを用いることができるが、本実施形態においては、インターネット、TCP/IPにより通信するよう接続されているものとする。
【0062】
そして、入力部102は、受け付けた画像110を、畳み込み部103に渡す。
【0063】
畳み込み部103は、入力部102が受け付けた画像110に対して、CNNの畳み込み層の処理を実行する。
【0064】
具体的には、畳み込み部103は、入力された画像110に対して、CNN記憶部101から取得した畳み込み層のパラメータを用いて、当該畳み込み層を適用した結果であるテンソルを得る。
【0065】
ここで、畳み込み層は、従来の畳み込み層を用いてよい(非特許文献1〜3)。
【0066】
なお、画像110は、3次元(3階)テンソルとして表現することができ、実態として入力される画像110は、任意の大きさを持つ3次元テンソルで構わない。
【0067】
また、畳み込み層は1層である必要はなく、複数の畳み込み層を含むように構成しても構わない。畳み込み層の入出力は共に3次元テンソルであるため、何層で構成してもその後の処理は実行可能である。
【0068】
また、畳み込み部103は、結果的に最終的な出力が3次元テンソルであれば、必ずしも畳み込み層だけによって構成されている必要はない。例えば、非特許文献1〜3に記載の全結合層や最大値プーリング層、Rectified Linear Unit(ReLU)等の活性化関数、バッチ正規化等、任意の公知の層や処理要素を介在させても構わない。
【0069】
そして、畳み込み部103は、畳み込み層により得られたテンソルを、第一ブロック集約部104に渡す。
【0070】
第一ブロック集約部104は、畳み込み層の出力を、所定の2方向に対して相互排反である1以上のブロックに分割し、当該1以上のブロックの各々について、当該ブロックに含まれる当該畳み込み層の出力を、当該ブロック内における位置に応じて相互排反な複数のサブブロックに分割し、全てのブロックにわたり、当該位置が対応するサブブロックに含まれる要素の値を集約して、当該複数のサブブロックの各々における集約結果を出力するプーリング層の処理を計算する。
【0071】
具体的には、第一ブロック集約部104は、畳み込み層の出力である3次元テンソルが入力されると、CNN記憶部101から取得したプーリング層のパラメータを用いたプーリング層を適用し、4つの小さな3次元テンソルに分割して出力する。
【0072】
例えば、畳み込み部103の畳み込み層から出力された3次元テンソルXがあり、そのサイズ(高さ・幅・深さ/チャネル数)がH×W×Cであるとする。第一ブロック集約部104は、このテンソルXにプーリング層を適用して、各々サイズがH/2×W/2×Cであるような4つの小さなテンソルに分割して出力する。
【0073】
より具体的には、まず、第一ブロック集約部104は、畳み込み部103により得られたテンソルに対して、4つのテンソルに分割する。分割の仕方を、
図2を用いて説明する。ここで、簡単のため、本実施形態では当該プーリング層に入力されるテンソルのサイズが4×4×1の場合について示すが、その他のサイズの場合であっても同様である。
【0074】
第一ブロック集約部104は、プーリング層を適用することにより、大まかに
図2の(1)〜(3)の3つの処理を実行する。まず、入力テンソルを、高さ及び幅方向に対して、2×2×1のサイズの相互排反なブロックに分割する(
図2(1))。
図2の例では4つのブロックに分割しているが、いくつのブロックに分割されるかは、入力テンソルとブロックのサイズに依存する。
【0075】
例えば、入力テンソルのサイズが8×8×1で、ブロックのサイズを2×2とするならば、16個のブロックに分割される。なお、分割されたブロックのそれぞれも3次元テンソルである。
【0076】
次に、第一ブロック集約部104は、各ブロックの要素について、その要素がブロック内のどの位置にあるか、より具体的には、左上、左下、右上、右下の4種類のどの位置にあるかに基づいてサブブロックに分割する(
図2(2))。
図2の例では、左上は黒、左下は濃いグレー、右上は薄いグレー、右下は白で示している。
【0077】
最後に、第一ブロック集約部104は、全てのブロックについて、同位置のサブブロックに属する要素(
図2では同色の要素)を集約し、最終的に4種の小さいテンソルを構成して出力する(
図2(3))。
【0078】
なお、
図2の例では、分割する際のブロックのサイズを2×2×Cとしたが、これに限られるものではない。望ましくは正方形で、一辺の大きさnが2のべき乗(すなわち、n×n×Cで、nが2のべき乗)になるようなブロックサイズを用いる。
【0079】
例えば、
図3に、入力テンソルのサイズが8×8×1で、これをサイズ4×4×1のブロックに分割する場合の例を図示する。この場合、
図2の例とは異なり、各ブロック内のサブブロックは各々2×2×1のサイズを持つことになる。いずれにしても、サイズH×W×Cの入力テンソルを、サイズH/2×W/2×Cの小さなテンソルに4分割して出力することに変わりはない。
【0080】
第一ブロック集約部104の処理は、通常のプーリング層と同様、学習が必要なパラメータを一切持たないため、ネットワーク全体のパラメータ数になんら影響を及ぼさない点で好ましい性質を持つ。
【0081】
また、通常のプーリング層(最大値プーリング層や平均値プーリング層など)が、入力テンソルの情報を損失してしまうのに対して、第一ブロック集約部104で適用するプーリング層は、元の入力テンソルの情報を一切損失しないという特徴を持つ。
【0082】
したがって、第一ブロック集約部104で適用するプーリング層は、パラメータ数を一切増加させることなく、さらに情報損失を引き起こさずに後の畳み込み層に情報を伝達することができるため、高い認識精度を保持することができるという利点がある。
【0083】
そして、第一ブロック集約部104は、当該プーリング層の出力である4つのテンソルを、第一ブロック畳み込み部105に渡す。
【0084】
第一ブロック畳み込み部105は、第一ブロック集約部104により得られる複数のテンソルの各々に対して、畳み込み層を適用する処理を行う。
【0085】
具体的には、第一ブロック畳み込み部105は、複数のテンソルの各々について、当該テンソルに対し、CNN記憶部101から取得した畳み込み層のパラメータを用いた畳み込み層を適用して、当該畳み込み層を適用した結果であるテンソルを得る(
図4)。
【0086】
第一ブロック畳み込み層105が適用する畳み込み層と、通常の畳み込み層(例えば、畳み込み部103)との違いは、各テンソルに適用する畳み込み層は全て同一のもの、つまり、同一のパラメータを持つ畳み込み層であるということである。
【0087】
すなわち、第一ブロック畳み込み層105が適用する畳み込み層を用いることで、通常の畳み込み層のみを用いる場合と比してパラメータ数が増加しない。
【0088】
また、第一ブロック集約部104で適用するプーリング層は、入力テンソルの情報を損失無く伝達することができるが、第一ブロック畳み込み層105が適用する畳み込み層では、伝達された全ての情報に対して畳み込み処理を適用するため、豊富な情報源を活かした処理ができる構成となっている。すなわち、結果として高い認識精度を保つ効果をより大きく享受できるようになる。
【0089】
そして、第一ブロック畳み込み部105は、複数のテンソルについて、それぞれ当該畳み込み層を適用して得られた複数のテンソルを、第二ブロック集約部106に渡す。
【0090】
第二ブロック集約部106及び第二ブロック畳み込み部107では、第一ブロック集約部104及び第一ブロック畳み込み部105と同様に、第一ブロック畳み込み部105により得られた複数のテンソルの各々について、当該テンソルに対してプーリング層及び畳み込み層を適用する処理を実行する。
【0091】
第二ブロック集約部106では、複数のテンソルの各々について、当該テンソルに対してプーリング層を適用する処理を実行するため、テンソル1つあたり4つの小さいテンソルに分割されることになる。
【0092】
このため、第二ブロック集約部106での処理の終了時点では4×4=16個の小さいテンソルが出力されることになる。
【0093】
第二ブロック畳み込み部107は、全てのテンソルに対して常に同一のパラメータを持つ畳み込み層を適用する。つまり、16個の小さいテンソルに対して全て同一の畳み込み層を適用する。
【0094】
なお、プーリング層・畳み込み層をさらに繰り返す構成とした場合も、同様であり、この処理原理は変わらない。
【0095】
そして、第二ブロック畳み込み部107は、複数のテンソルについて、当該畳み込み層を適用して得られた複数のテンソルを、認識処理部108に渡す。
【0096】
認識処理部108は、第二ブロック畳み込み部107により得られた複数のテンソルに基づいて、画像認識処理を行う。
【0097】
具体的には、認識処理部108は、GAP層を適用して、第二ブロック畳み込み部107により得られた複数のテンソルを、一つのベクトルに集約し、集約したベクトルに対して、CNN記憶部101から取得した全結合層及びソフトマックス関数のパラメータを用いた全結合層及びソフトマックス関数を適用し、ベクトルである認識結果120を求める。
【0098】
一つのベクトルに集約するGAP層の適用では、例えば、非特許文献2に記載のGlobal Average Pooling(GAP)処理等を用いる。
【0099】
なお、このベクトルの各要素は、事前に学習したクラスへの帰属確率(スコア)を表すものであり、ある要素の値が大きいほど、入力された画像110がその要素に対応するクラスへの帰属確率が高いと見做すことができる(非特許文献2)。
【0100】
図5を用いて認識処理部108の処理の流れを説明する。認識処理部108は、畳み込み層の出力である複数のテンソルを受け取ると、次の3ステップの処理によって構成される。
【0101】
まず、複数のテンソルに対してGAP層を適用して一本のベクトルに変換する。次に、当該ベクトルに対して全結合層を適用して、認識したい対象クラス数分の要素を持つベクトルに変換する。最後に、このベクトルに対してソフトマックス関数を適用し、最終的な認識結果を表すベクトルである認識結果120に変換する。
【0102】
そして、認識処理部108は、認識結果120を出力部109に渡す。
【0103】
出力部109は、認識処理部108により得られた認識結果120を出力する。
【0104】
<本発明の実施の形態に係る画像認識装置の作用>
図6は、本発明の実施の形態に係る画像認識処理ルーチンを示すフローチャートである。
【0105】
入力部102に画像110が入力されると、画像認識装置100において、
図6に示す画像認識処理ルーチンが実行される。
【0106】
まず、ステップS201において、入力部102が画像110の入力を受け付ける。
【0107】
ステップS202において、畳み込み部103は、ステップS201により受け付けた画像110に対して、CNNの畳み込み層を適用する処理を実行し、畳み込み層の出力であるテンソルを得る。
【0108】
ステップS203において、第一ブロック集約部104は、上記ステップS202により得られたテンソルに対して、所定の2方向に対して相互排反である1以上のブロックに分割し、当該1以上のブロックの各々について、当該ブロックに含まれる当該畳み込み層の出力を、当該ブロック内における位置に応じて相互排反な複数のサブブロックに分割し、全てのブロックにわたり、当該位置が対応するサブブロックに含まれる要素の値を集約して、当該複数のサブブロックの各々における集約結果を出力するプーリング層を適用して、プーリング層の出力である複数のテンソルを得る。
【0109】
ステップS204において、第一ブロック畳み込み部105は、上記ステップS203により得られた複数のテンソルの各々に対して、畳み込み層を適用する処理を行い、畳み込み層の出力であるテンソルを得る。
【0110】
ステップS205において、第二ブロック集約部106は、上記ステップS204により得られた複数のテンソルの各々に対して、プーリング層を適用する処理を実行し、プーリング層の出力である複数のテンソルを得る。
【0111】
ステップS206において、第二ブロック畳み込み部107は、上記ステップS205により得られた複数のテンソルの各々に対して、畳み込み層を適用する処理を実行し、畳み込み層の出力であるテンソルを得る。
【0112】
ステップS207において、認識処理部108は、上記ステップS206により得られた複数のテンソルに対して出力層を適用することにより、画像認識処理を行う。
【0113】
ステップS208において、上記ステップS207により得られた認識結果120を出力する。
【0114】
<本発明の実施の形態に係るCNNの学習>
本実施形態では学習済みのCNNを仮定して認識処理を説明したが、本実施形態における構成のCNNも、非特許文献1〜3にあるような公知のCNNと同様に、誤差逆伝搬法(確率勾配法などのアルゴリズム)により、同様に学習することが可能である。
【0115】
この場合、学習データとして少なくとも1組の画像ファイルとそのクラス(正解クラス)を示す情報を用意した上で、当該学習データに対する認識精度が高くなるように、すなわち、学習データに含まれる各画像に対する認識結果が正解クラスとなるように、誤差逆伝搬法によってCNNのパラメータを更新していく。
【0116】
より正確には認識結果を表すベクトル内の、正解クラスに対応する要素が高い値を持ち、その他のクラスに対応する要素が小さい値を持つように、CNNのパラメータを更新していく。
【0117】
そして、この学習処理を、終了条件が満たされるまで繰り返せばよい。終了条件については任意のものを用いてよいが、例えば、「所定の回数を繰り返すまで」、「目的関数の値が一定以上変化しなくなるまで」、「精度の値が一定以上になるまで」、「学習データとは別に用意された検証用データを用いた場合の精度の値が一定以上変化しなくなるまで」、「学習データとは別に用意された検証用データを用いた場合の精度の値が一定以上になるまで」などとすればよい。
【0118】
<本発明の実施の形態に係る画像認識装置の実験結果>
次に、本実施形態に係る画像認識装置100の有効性を示すための実験結果について説明する。以下、本実施形態に係る画像認識装置100の第一ブロック集約部104、第二ブロック集約部106で用いたプーリング手法をParallel Grid Pooling(PGP)と呼ぶ。
【0119】
<<データセット>>
画像分類のタスクにおいて標準的なデータセットであるCIFAR−10、CIFAR−100(参考文献1)、SVHN(参考文献2)を用いた実験を行った。
[参考文献1]G. E. Hinton: “Learning multiple layers of representation”, Trends in cognitive sciences, 11, 10, 2007, pp. 428-434.
[参考文献2] Y. Netzer, T. Wang, A. Coates, A. Bissacco, B. Wu and A. Y. Ng: “Reading digits in natural images with unsupervised feature learning”, NIPS Workshop on Machine Learning Systems", Vol. 2011, p. 5.
【0120】
CIFAR−10/100は、60,000枚の32×32のカラー画像からなるデータセットであり、学習用画像が50,000枚とテスト用画像が10,000枚で構成されている。
【0121】
これら2つのデータセットに対して広く用いられている(非特許文献2、参考文献3、4)標準的なデータ拡張(Data Augmentation)手法として、学習時に各端を40×40になるようゼロパディングした画像から32×32の画像をランダムにクロップし、得られた画像をランダムに左右反転した。
[参考文献3]G. Huang, Z. Liu, K. Q. Weinberger and L. van der Maaten:“Densely connected convolutional networks”, CVPR (2017).
[参考文献4]S. Xie, R. Girshick, Piotr, Z. Tu, K. He:“Aggregated residual transformations for deep neural networks”, CVPR (2017).
【0122】
前処理として、チャネルの平均値と標準分散を用いて色の正規化を行った。また、50,000枚の学習用画像全てを用いて学習を行い、学習終了時のテストエラー率を最終結果とした。
【0123】
Street View House Numbers(SVHN)とは、Google Street Viewから家・マンションの部屋番号の数字(0〜9)を集めた、32×32のカラー画像からなるデータセットである。
【0124】
学習用画像が73,257枚、テスト用画像が26,032枚、追加の学習用画像が531,131枚で構成されている。
【0125】
参考文献3、5に従い、データ拡張(Data Augmentation)手法は用いず、追加の学習用画像も含めた全ての学習用画像を用いて学習を行った。
[参考文献5]S. Zagoruyko and N. Komodakis: “Wide residual networks”, BMVC (2016).
【0126】
<<ネットワークモデル>>
PGPの有効性を確認するため、畳み込み層として複数種類のネットワークモデルを用いて実験を行った。
【0127】
具体的には、pre−activationResNet(PreResNet)、PyramidNet、DenseNetの計3種類を畳み込み層のネットワークモデルとして用いた。
【0128】
PreResNetに対しては、ボトルネック構造を持ったモデルを利用し、層の深さを20、29、38、47、74、101、164の7種類に変化させて実験を行った。
【0129】
PyramidNetに対しては、ボトルネック構造を持ったモデルを利用し、パラメータ増加率はα=28とした。
【0130】
DenseNetに対しては、ボトルネック構造を持ち、かつ、省パラメータなモデルであるDenseNet−BCを用いた。
【0131】
PGPを適用した場合の各ネットワークモデルの性能変化をより厳密に確認するため、学習に関するハイパーパラメータ(エポック数、学習率、モーメンタム率等)については同一のものを使用した。
【0132】
<<実装の詳細>>
学習率のスケジューリングにはCosine Annealing(参考文献6)を用いた。
[参考文献6]I. Loshchilov and F. Hutter: “SGDR: stochastic gradient descent with restarts”, ICLR (2017).
【0133】
Cosine Annealingは、最初は学習率を高い値にしてから学習を始め、それからコサイン曲線に従う形で急速かつスムーズに学習率を低い値に落とす学習率のスケジューリング法である。
【0134】
Cosine Annealing のパラメータは、下記式(1)とした。
【0136】
参考文献3に従い、全てのモデルに対して総学習イテレーション数を、CIFAR−10/100では300epoch、SVHNでは40epochとした。また、重み減衰は10
-4に設定し、パラメータが0.9のモーメンタム付きの確率的勾配降下法を用い、ミニバッチサイズは64とした。
【0137】
各層の重みの初期化は参考文献7の方法を用いた。
[参考文献7]K. He, X. Zhang, S. Ren and J. Sun: “Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification”, ICCV, 2015, pp. 1026-103.
【0138】
<<結果>>
各データセットに対して各種ネットワークモデルを学習した結果のテストエラー率をベースライン(Baseline)として評価を行った。
【0139】
畳み込み層としての各ネットワークモデルの出力にPGPを適用して学習した場合の結果を
図7、
図8に示す。
【0140】
全てのデータセットに対して非特許文献3の拡張畳み込み(Dilated)を利用したネットワークは、ベースラインの結果と比較してより低いエラー率を達成した。PGPを用いたネットワークは拡張畳み込みを利用したネットワークを更に上回るエラー率を示した。
【0141】
特にPyramidNetB−164(α=28)にPGPを適用したモデルは、CIFAR−10とCIFAR−100においてそれぞれ0.53%、1.71%改善し、3.38%、17.94%のエラー率を記録した。
【0142】
これは、同程度のパラメータ数を持つ手法の中では最高精度のものである。
【0143】
次に、各ネットワークモデルに対して、ベースラインの重みを転移した場合の各データセットのテストエラー率を
図9に示す。
【0144】
PGPを用いたネットワーク構造が、ほぼ全てのデータセットに対して最良の結果を示した。例えば、PreResNetでは層の深さに関わらずPGPを用いた場合のエラー率が低下しているが、それはPGPの構造自体にデータ拡張の効果があるからと考えられる。
【0145】
各ネットワークモデルに拡張畳み込みもしくはPGPを適用して学習した後、学習した重みを元のネットワークに転移した場合の各データセットのテストエラー率を
図10、11に示す。
【0146】
拡張畳み込みをネットワークモデルに適用して学習した重みを元のネットワークに転移した結果、ベースラインよりもテストエラー率が悪化した。
【0147】
これは、拡張畳み込みを適用したネットワークモデルではGAP層の前に集約する演算があるため、元のネットワークと同じ演算を行う経路が無くなってしまったためにうまく認識性能が発揮できなくなったと考えられる。
【0148】
一方、PGPをネットワークモデルに適用して学習した重みを元のネットワークに転移した結果、ほぼ全てにおいてベースライン及び拡張畳み込みより認識性能が向上することを確認した。
【0149】
画像分類の標準的データセットであるCIFAR−10、CIFAR−100、SVHNを用いた実験により、PGPの有効性を確認した。
【0150】
以上説明したように、本発明の実施形態に係る画像認識装置によれば、少なくとも一つの畳み込み層と、当該畳み込み層の出力を、所定の2方向に対して相互排反である1以上のブロックに分割し、当該1以上のブロックの各々について、当該ブロックに含まれる当該畳み込み層の出力を、当該ブロック内における位置に応じて相互排反な複数のサブブロックに分割し、全てのブロックにわたり、当該位置が対応するサブブロックに含まれる要素の値を集約して、当該複数のサブブロックの各々における集約結果を出力するプーリング層とを含む畳み込みニューラルネットワークを用いて画像認識を行うことにより、畳み込みニューラルネットワークのパラメータ数を増加させることなく、画像認識を精度よく行うことができる。
【0151】
なお、本発明は、上述した実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【0152】
上述の実施形態において、CNNは、畳み込み層、プーリング層、GAP層、全結合層、及びソフトマックス関数により構成されたがこれに限定されるものではない。例えば、これら以外にも、最大値プーリング層、平均値プーリング層、バッチ正規化、Rectified Linear Unit(ReLU)等の活性化関数、非特許文献1〜3に記載の任意の公知の層/処理要素等を更に用いて構成してもよい。
【0153】
また、第一ブロック集約部104及び第二ブロック集約部106は、複数のプーリング層を適用する処理を実行するように構成されてもよい。
【0154】
また、第一ブロック畳み込み部105及び第二ブロック畳み込み部107は、複数の畳み込み層を適用する処理を実行するように構成されてもよい。
【0155】
また、本願明細書中において、プログラムが予めインストールされている実施形態として説明したが、当該プログラムを、コンピュータ読み取り可能な磁気ディスク、光ディスク、半導体メモリ等の記録媒体に格納して提供することも、ネットワークを通して提供することも可能である。
【0156】
また、いかなる構成要素についても、単一のコンピュータやサーバによって実現しなければならないものではなく、ネットワークによって接続された複数のコンピュータに分散して実現することも可能である。