(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025144065
(43)【公開日】2025-10-02
(54)【発明の名称】情報処理装置、情報処理方法及びプログラム
(51)【国際特許分類】
G06N 3/0464 20230101AFI20250925BHJP
【FI】
G06N3/0464
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2024043653
(22)【出願日】2024-03-19
(71)【出願人】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】近藤 和史
(72)【発明者】
【氏名】中村 隆
(72)【発明者】
【氏名】溝口 慶範
(72)【発明者】
【氏名】山田 貴之
(72)【発明者】
【氏名】山田 顕季
(72)【発明者】
【氏名】石川 尚
(57)【要約】
【課題】低コストでスキップ結合を実現することを可能とする。
【解決手段】複数の畳み込み層を有し、前記複数の畳み込み層のそれぞれが、前段側から入力された入力データから抽出した特徴量ベクトルに基づく出力データを後段側へ伝播させる畳み込み階層と、前記複数の畳み込み層のそれぞれで前記出力データを順に伝播させる順伝播経路と、前記順伝播経路の一部を迂回して前記出力データを伝播させる迂回経路と、を結合させる結合手段と、前記複数の畳み込み層のそれぞれで、前記入力データから前記特徴量ベクトルを抽出する処理を行う処理手段と、を備え、前記処理手段は、前記迂回経路における前記特徴量ベクトルを抽出する処理として、前記特徴量ベクトルの属性情報の一部を抽出する部分抽出処理を行い、前記結合手段は、前記迂回経路が利用される場合、前記順伝播経路からの出力結果と前記部分抽出処理の結果とを結合させる。
【選択図】
図19
【特許請求の範囲】
【請求項1】
複数の畳み込み層を有し、前記複数の畳み込み層のそれぞれが、前段側から入力された入力データから抽出した特徴量ベクトルに基づく出力データを後段側へ伝播させる畳み込み階層と、
前記複数の畳み込み層のそれぞれで前記出力データを順に伝播させる順伝播経路と、前記順伝播経路の一部を迂回して前記出力データを伝播させる迂回経路と、を結合させる結合手段と、
前記複数の畳み込み層のそれぞれで、前記入力データから前記特徴量ベクトルを抽出する処理を行う処理手段と、
を備え、
前記処理手段は、前記迂回経路における前記特徴量ベクトルを抽出する処理として、前記特徴量ベクトルの属性情報の一部を抽出する部分抽出処理を行い、
前記結合手段は、前記迂回経路が利用される場合、前記順伝播経路からの出力結果と前記部分抽出処理の結果とを結合させることを特徴とする情報処理装置。
【請求項2】
前記処理手段は、前記部分抽出処理として、前記特徴量ベクトルの次元、前記特徴量ベクトルのデータ長、前記特徴量ベクトルに含まれる画素のうち、少なくとも1つに基づいて特定される情報を抽出することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記入力データは、複数の画素から構成され、
前記複数の畳み込み層のそれぞれは、複数の畳み込み係数が特定されたフィルタを有し、
前記処理手段は、前記複数の畳み込み層のそれぞれで、前記複数の画素と、前記複数の畳み込み係数とに基づく畳み込み処理を行うことで、前記特徴量ベクトルを抽出することを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記畳み込み階層は、複数のプーリング層を有し、
前記複数のプーリング層のそれぞれは、前記複数の畳み込み層のそれぞれの後段側に配置され、前記特徴量ベクトルを前記出力データとしての代表値に集約することを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記畳み込み階層の後段側に配置され、前記出力データを伸張するアップサンプリング層をさらに備え、
前記処理手段は、前記アップサンプリング層で、前記出力データを伸張することで、前記代表値のサイズを前記入力データまで大きくし、後段データとして出力することを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記アップサンプリング層の後段側に配置され、前記後段データがマッピングされた後段画像データを再構成する活性化層をさらに備え、
前記処理手段は、前記活性化層により再構成された前記後段画像データに基づいて、前記複数の画素から構成される画像データに写る被写体を分類することを特徴とする請求項5に記載の情報処理装置。
【請求項7】
前記畳み込み階層の後段側に配置され、前記代表値がマッピングされた後段画像データを再構成する活性化層をさらに備え、
前記処理手段は、前記活性化層により再構成された前記後段画像データに基づいて、前記複数の画素から構成される画像データに写る被写体を分類することを特徴とする請求項4に記載の情報処理装置。
【請求項8】
前記複数の畳み込み層のそれぞれは、複数の人工ニューロンを有し、
前記複数の人工ニューロンのそれぞれは、
前記畳み込み係数を用いて前記畳み込み処理を行う畳み込み部と、
前記畳み込み部から出力される前記畳み込み処理の結果に基づき、前記特徴量ベクトルの構成要素である特徴量を算出する活性化関数部と、
を有し、
前記処理手段は、前記畳み込み係数を、前記活性化層により再構成された前記後段画像データと、前記入力データと、に基づいて求めることを特徴とする請求項6に記載の情報処理装置。
【請求項9】
前記処理手段は、前記入力データに対し、一定のストライドで前記フィルタをシフトさせながら積和を行うことで、前記フィルタのシフトごとに前記入力データの局所的な特徴を表す特徴量を求め、求めた特徴量の集合を前記特徴量ベクトルとして抽出することを特徴とする請求項3に記載の情報処理装置。
【請求項10】
メインメモリとして機能する第1の記憶装置と、
キャッシュメモリとして機能する第2の記憶装置と、
をさらに備え、
前記第1の記憶装置は、前記入力データを記憶し、
前記第2の記憶装置は、前記複数の畳み込み層のそれぞれにおいて抽出された前記特徴量ベクトルを記憶することを特徴とする請求項1乃至9のいずれか1項に記載の情報処理装置。
【請求項11】
前記処理手段は、前記部分抽出処理を行う場合、前記第1の記憶装置から前記入力データを取得することを特徴とする請求項10に記載の情報処理装置。
【請求項12】
前記第1の記憶装置は、DRAMから構成され、
前記第2の記憶装置は、SRAMから構成されることを特徴とする請求項10に記載の情報処理装置。
【請求項13】
前記畳み込み階層は、前記入力データから構成される画像データを一定の空間領域ごとに分割された分割データが前記畳み込み階層に入力されることを特徴とする請求項3に記載の情報処理装置。
【請求項14】
複数の畳み込み層を有する情報処理装置の情報処理方法であって、
前記複数の畳み込み層のそれぞれが、前段側から入力された入力データから抽出した特徴量ベクトルに基づく出力データを後段側へ伝播させるステップと、
前記複数の畳み込み層のそれぞれで前記出力データを順に伝播させる順伝播経路と、前記順伝播経路の一部を迂回して前記出力データを伝播させる迂回経路と、を結合させるステップと、
前記複数の畳み込み層のそれぞれで、前記入力データから前記特徴量ベクトルを抽出する処理を行うステップと、
を含み、
前記処理を行うステップは、前記迂回経路における前記特徴量ベクトルを抽出する処理として、前記特徴量ベクトルの属性情報の一部を抽出する部分抽出処理を行い、
前記結合させるステップは、前記迂回経路が利用される場合、前記順伝播経路からの出力結果と前記部分抽出処理の結果とを結合させることを特徴とする情報処理方法。
【請求項15】
コンピュータに、請求項14に記載の情報処理方法の各ステップを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【0002】
従来、ニューラルネットワークの学習においてスキップ結合が行われている。スキップ結合は、ディープニューラルネットワークにおいて、途中の複数層をスキップして先の層へつなげる迂回経路により、離れた層の間で順伝播あるいは逆伝搬を行えるようにする構成である。スキップ結合は、勾配消失問題を改善する側面がある一方、ニューラルネットワークの汎化性能が低下する側面もある。そこで、無効化対象とするスキップ結合を選択し、選択したスキップ結合に対してだけ誤差の伝播を遮断する技術が特許文献1に開示されている。特許文献1に開示された技術では、ニューラルネットワークの学習の都度、無効化対象とするスキップ結合を選択する処理が行われる。よって、各層の結合の仕方が異なるニューラルネットを用いた学習を繰り返し行うことが可能となる。したがって、特許文献1に開示された技術では、アンサンブル学習を実現することが可能となるため、全体として、ニューラルネットワークの汎化性能が向上する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記スキップ結合は、それまでの処理結果を保持し続けることが要求される側面もある。一般的に、処理結果を保持し続けるほど、記憶領域として使用される回路面積は増大する。よって、特許文献1に開示された技術は、全体として、ニューラルネットワークの汎化性能を向上させる側面がある一方、記憶領域として使用される回路面積の増大に伴うコストが増加する側面もある。例えば、処理結果の保持に用いられるキャッシュメモリはSRAMから構成されることが多いが、一般的に、SRAM(Static Random Access Memory)は高価なメモリである。よって、SRAMの記憶領域として使用される回路面積は増大させないことが望ましい。しかし、SRAMの記憶領域として使用される回路面積を増大させない場合には、処理結果を保持し続けるためのメモリの記憶領域が不足し、上記スキップ結合を実現できなくなる可能性がある。
【0005】
本開示は、上記課題に鑑みてなされたものであり、低コストでスキップ結合を実現することを可能とすることを目的とする。
【課題を解決するための手段】
【0006】
本開示の一態様に係る情報処理装置は、複数の畳み込み層を有し、前記複数の畳み込み層のそれぞれが、前段側から入力された入力データから抽出した特徴量ベクトルに基づく出力データを後段側へ伝播させる畳み込み階層と、前記複数の畳み込み層のそれぞれで前記出力データを順に伝播させる順伝播経路と、前記順伝播経路の一部を迂回して前記出力データを伝播させる迂回経路と、を結合させる結合手段と、前記複数の畳み込み層のそれぞれで、前記入力データから前記特徴量ベクトルを抽出する処理を行う処理手段と、を備え、前記処理手段は、前記迂回経路における前記特徴量ベクトルを抽出する処理として、前記特徴量ベクトルの属性情報の一部を抽出する部分抽出処理を行い、前記結合手段は、前記迂回経路が利用される場合、前記順伝播経路からの出力結果と前記部分抽出処理の結果とを結合させることを特徴とする。
【発明の効果】
【0007】
本開示によれば、低コストでスキップ結合を可能とする。
【図面の簡単な説明】
【0008】
【
図1】推論実施装置の構成を示すブロック図である。
【
図4】推論部を構成するフィルタの回路概念図である。
【
図6】畳み込み層で実施される処理の概要を説明するフローチャートである。
【
図7】CNNを構成するニューロンの詳細を示す模式図である。
【
図8】畳み込み処理を説明するフローチャートである。
【
図10】推論部を構成するフィルタの回路概念図である。
【
図12】推論部を構成するフィルタの回路概念図である。
【
図14】再抽出の動作を示すフローチャートである。
【
図15】5層目の特徴量ベクトルがスキップ結合される例を示す図である。
【
図16】推論部を構成するフィルタの回路概念図である。
【
図18】推論部を構成するフィルタの回路概念図である。
【
図19】次元圧縮した特徴量ベクトルを用いたスキップ結合を説明する模式図である。
【
図20】スキップ結合を行うモデルの模式図である。
【
図21】スキップ結合の詳細を説明する模式図である。
【
図22】CNNモデルを学習する際の設定画面を示す図である。
【
図23】CNNモデルを学習する際の詳細設定画面の一例を示す図である。
【
図24】CNNモデルを学習する際の詳細設定画面の他の一例を示す図である。
【
図25】自動CNNモデル設計を示すフローチャートである。
【発明を実施するための形態】
【0009】
以下、添付図面を参照して本開示の好適な実施の形態を詳しく説明する。尚、以下の実施の形態は本開示事項を限定するものでなく、また以下の実施の形態で説明されている特徴の組み合わせが本開示の解決手段に必須のものとは限らない。尚、同一の構成要素には同一の参照符号を付す。
【0010】
<<第1実施形態>>
[概要]
ニューラルネットワークの学習を繰り返すにつれ、誤差逆伝搬において求めていた勾配が小さくなっていき、最終的には消失するという勾配消失問題が一般的に知られている。そこで、勾配消失問題を解消するためにスキップ結合が行われている。スキップ結合は、ディープニューラルネットワークにおいて、途中の複数層をスキップして先の層へつなげる迂回経路により、離れた層の間で順伝播あるいは逆伝搬を行えるようにする構成である。スキップ結合では、ニューラルネットワークを構成する複数の層のうち、いくつかの層をスキップする迂回経路を設けることにより、迂回経路と、順伝播経路とが並列して設けられる。このような経路構成により、複数の層のうち、いくつかの層をスキップして特徴を別の経路で遠くの層へ伝播可能となる。よって、複数の層の前段側の層で実施される畳み込み処理等により消失していく特徴を、複数の層の後段側へ伝播させていくことが可能となる。しかし、スキップ結合を実現するためには、各層で抽出した特徴量ベクトルを保持し続けることが必要となる。よって、スキップ結合をしない場合と比べ、スキップ結合をする場合には、メモリの記憶領域がより多く必要となる。さらに、スキップ結合において各層の特徴量ベクトルを保持し、必要に応じて処理に用いる場合には、メインメモリよりもキャッシュメモリに保持しておくことで処理効率を確保している。このため、より多くのキャッシュメモリが必要となる。キャッシュメモリには、一般的に、SRAMが使用されるが、SRAMは高価である。そこで、本実施形態では、低コストでスキップ結合を実現するために各層で抽出した特徴量ベクトルを保持し続ける代わりに、以下の動作が行われる。すなわち、迂回経路における特徴量ベクトルを抽出する処理として、特徴量ベクトルの属性情報の一部を抽出する部分抽出処理が行われる。さらに、迂回経路が利用される場合、順伝播経路からの出力結果と部分抽出処理の結果とが結合される。このような動作によれば、高価なSRAMの記憶領域として使用される回路面積を増大させることなく、スキップ結合を実現することが可能となる。なお、ニューラルネットワークのモデル構成は特に限定するものではない。例えば、エンコーダデコーダのモデルを構成する畳み込みニューラルネットワークであってもよい。あるいは、ResNetに代表されるモデルに存在するInvertedResidualであってもよい。
【0011】
本明細書で使用する主な用語について、予め以下のように定義する。
<用語定義>
人工ニューロン:
フィルタと活性化関数部とから構成される処理単位である。当該フィルタの畳み込み係数を、「重み」とも称する。また、当該フィルタの畳み込み係数を適宜「人工ニューロンの重み」とも称する。人工ニューロンは、当該フィルタの入力データを受け取る。人工ニューロンは、例えば、3×3フィルタであれば、5×5の入力データを受け取り、畳み込み後の値を活性化関数部へ転送し、活性化関数部により算出された特徴量を出力する。
活性化関数部:
非線形な応答特性を持つ関数である。ソフトマックス関数が使用されるが、ReLU(Rectified Linear Unit)関数であってもよい。非線形な応答特性を持つ関数を使用すれば、入力と出力の関係が非線形な応答特性を持つが、特にこれに限定されない。例えば、活性化関数部は、線形な応答特性を持つ関数であってもよい。あるいは、活性化関数部は、恒等関数であってもよい。例えば、スキップ結合により遠くの層へ特徴量ベクトルを送る場合、活性化関数部は、恒等関数で実現されてもよい。
層:
複数の人工ニューロンからなる処理単位である。各々の人工ニューロンは原則として共通のデータが入力される。ただし各々の人工ニューロンの畳み込み係数(重み)は、取得したい特徴に応じて異なる重みを設定できる。複数の人工ニューロンから構成される理由は、入力データを多面的に分析するためである。
特徴量:
1つの人工ニューロンからの出力を特徴量と呼ぶ。異なる人工ニューロンは異なる特徴量出力する。なお、特徴量は、強度のような一定の指標として人工ニューロンから出力されてもよい。
特徴量ベクトル:
1つの層から出力される複数の特徴量からなるベクトルである。このベクトルの次数を、以下では「チャネル」と称する。
【0012】
[前提技術]
以下、図面を参照して発明の実施形態について説明する。本実施形態で説明する実施形態では、EdgeAI端末で推論を実施するにあたり、必要とする学習結果はあらかじめ外部で学習済みである場合を想定する。ここで、EdgeAI端末とは、製品単体が人工知能の結果を享受できる製品である。EdgeAI端末は、CNN(Convolutional Neural Network)で必要とされる「学習」及び「推論」の両方を備えなくてもよい。事前に用意された学習の結果となるパラメータを保持することで、製品は「推論」を実現可能である。CNNは、機械学習を用いたパターン認識の一つである。また、CNNは、製造業者が製品の差別化のための高機能化を実現する処理手法の一つである。CNNがパターン認識を実現する動作概要について説明する。
【0013】
[CNNの動作概要]
まず、予め用意された特徴量抽出方法に則り、入力データの特徴を抽出する。ここで、特徴量抽出方法について説明する。特徴量の抽出は、多段フィルタを用いた膨大な畳み込み処理によって実現可能である。この多段フィルタは、複数のフィルタと、複数の活性化関数部とから構成される。複数のフィルタのそれぞれの後段側には、複数の活性化関数部のそれぞれが配置される。1つのフィルタと1つの活性化関数部との組は、上記で定義した「人工ニューロン」に相当する。活性化関数部は、例えば、入力に対する応答が非線形な関数である。各フィルタは、畳み込み係数を有する。ここで、畳み込み係数の決定方法について説明する。畳み込み係数は、パターンの類型を定めることを目的として、予め膨大なデータを用いることで決定可能である。具体的には、畳み込み係数は、膨大な正解データを用意し、未知のデータが正解になる率が高くなるまで、畳み込み係数を最適化していくことにより決定可能である。このような決定方法を、以下、「学習」と称する。学習の結果として得られた畳み込み係数を用いて膨大な畳み込み処理が行われることで、入力データの特徴量は抽出される。このようにして得られる入力データの特徴量は、各人工ニューロンで得られるため、1種類とは限らない。入力データの複数の特徴量のうちの少なくともいくつかの特徴量は、上記で定義した「特徴量ベクトル」に相当する。CNNは、このようにして、入力データから特徴量ベクトルを抽出する。
【0014】
次に、CNNは、特徴量ベクトルが、予め定められた類型としてのパターンのどれと一致するのかを、CNNの最終層の出力から同定する。このようにして、入力データは、既知のパターンで分類される。これにより、パターン認識は実現される。このようなパターン認識が、上記「推論」に該当する。
【0015】
なお、CNNは、エンコード層と、デコード層とから構成されるエンコーダデコーダのモデルによって実現されてもよい。エンコーダデコーダのモデルにより画素単位で画素の属性が判断されてもよい。エンコーダデコーダのモデルは、画像中の全ての画素について属性を判断する。つまり、エンコーダデコーダのモデルにより画素単位で属性を判断することも可能である。このような処理は、以下、「領域分割」と称する。あるいは、このような処理は、「セグメンテーション」と称されてもよい。なお、ここでいう「セグメンテーション」は、いわゆるセマンティックセグメンテーションに相当する。画素ごとの画素の属性の判断結果の集積により、連続する画素が同一の対象であるかが識別可能である。具体的には、エンコード層は、入力データからダウンサンプリングを実施することにより広域を対象とした特徴量を抽出する。一方、デコード層は、抽出された特徴量の入力データと同解像度にアップサンプリングしながら最終的な判断結果を導出する。このエンコーダデコーダのモデルとして構成されるCNNには、例えば、以下の特性がある。1つは、入力データが非常に多くの層を経て最終的な判断結果に至る特性がある。この結果、処理の中間層において、解像度が変化することも特性である。
【0016】
また、次で説明する特性もある。CNNで用いられる人工ニューロンは、上記フィルタを備える。上記フィルタは入力データに畳み込み処理を実施する。このフィルタは、上記で説明したように、畳み込み係数を有する。畳み込み係数は、いわゆる「重み」である。CNNでは、モデルを通して得られた特徴量を、真の値と比較する。具体的には、CNNでは、計算された特徴量と、真の値との差をとる。この差を「誤差」と称する。この誤差が小さくなるように「重み」を求めていく方法が、誤差逆伝搬法と称される。また、誤差逆伝搬法を繰り返し用いて畳み込み係数を最適化していくことは、上記「学習」の具体例である。このように、学習を通じて畳み込み係数を決定することも、CNNの特性である。
【0017】
[スキップ結合]
これらの特性は、次のような現象を引き起こす可能性がある。例えば、学習時に誤差逆伝播が正しく進行しない現象が引き起こされ得る。その理由は、層が深くなるにつれ、誤差逆伝搬法による処理結果が小さくなり、学習が進まないからである。以下、このような現象は、「勾配消失」と称される。あるいは、各層を通過するごとに解像度が変化していくことで、エンコード時には保持していた入力データの局所的な特徴を示す情報が失われる現象が引き起こされ得る。これらの現象は、学習時の精度劣化になり得る。このような学習時の精度劣化の対策として、従来から「スキップ結合」が使用されてきた。スキップ結合とは、エンコードデコードのモデルであれば、エンコード層のデータをデコード層の畳み込み処理に再度使用することで実現し得る。このような動作は、エンコード時に喪失した情報を用いてデコード時の情報の質を向上させる。同時に、このような動作は、学習時、スキップ結合によって生じる帰還成分も含めた好適な誤差逆伝播を実現させる。よって、エンコード時に喪失された局所エッジを回復させるような学習が可能となる。また、画像の領域境界部を正確に判断可能である。しかし、スキップ結合を実施する場合には、例えば、エンコード層における処理結果をデコード層に引き渡す必要がある。よって、エンコード時に用いる層が進行するほど、各人工ニューロンにおける処理結果がSRAM内に保持されていく。その理由は、デコード時にエンコード時の結果を用いるには、SRAM内に全て記憶しておく必要があるからである。
【0018】
また、CNNは、画像の認識に使用可能である。CNNを画像の認識に使用するには、画像全体に畳み込み処理が行われればよい。ここで、畳み込み処理で用いられるフィルタについてより具体的な一例を説明する。例えば、画像に対し、3×3のフィルタを1つだけ適用することを想定する。畳み込み処理は、畳み込み係数と画像に含まれる画素との積の総和を、中心画素の値とする処理である。したがって、3×3の画像に対し、3×3のフィルタを適用する場合、中心画素の1画素しか値が定まらない。もし、3×3の画像の周囲に隣接する画素にも、3×3のフィルタを適用しようとすると、5×5の画像が必要である。このように、必要とする画像領域に応じて畳み込む際の処理で必要となる周辺画素を、以下、「のりしろ」と称する。各フィルタのサイズが大きくなり、CNN全体として、何層にもわたって2次元的なフィルタの段数の積み重ねも増えれば、さらにのりしろを多くとる必要がある。したがって、必要なのりしろの量は、3次元的に増大する。このようにのりしろが増大すると、それに応じてメモリの記憶領域の使用量も増大させる必要がある。例えば、畳み込み処理では、メインメモリから取得したデータがキャッシュメモリに展開される。キャッシュメモリは、一般的にはSRAMが用いられる。よって、のりしろが増大する状況では、SRAMの記憶領域の使用量が増大する。特に、1つあるいは2つのフィルタに比べて、大規模なフィルタを何段も重ねた場合、SRAMの記憶領域の使用量が3次元的に増大する。
【0019】
以上のことから、何層にもわたって、フィルタを用いた畳み込み処理を行うには、膨大なSRAMの記憶領域が必要となる。さらに、スキップ結合を行うにも、膨大なSRAMの記憶領域が必要となる。例えば、エンコーダデコーダのモデルであれば、スキップ結合が行われることで、デコード時のデータの信頼性を向上させることができるが、必要なSRAMの記憶領域は指数関数的に増加する。SRAMは高価であるため、SRAMの記憶領域を大幅に増加させれば、高コストになる。一方、SRAMの記憶領域を増加させなければ、スキップ結合に要するキャッシュメモリが不足する。なお、エンコーダデコーダのモデルにおけるスキップ結合の一例を説明したが、他のモデルであっても、スキップ結合には通常多くのキャッシュメモリが必要となるので、低コストでスキップ結合を行うことができない状況であった。そこで、本実施形態では、低コストでスキップ結合を行うことが可能となる構成及び動作について、以降で順に説明する。
【0020】
[推論実施装置全体]
図1は、推論実施装置の構成を示すブロック図である。推論実施装置100は、製品本体に実装される情報処理装置である。本実施形態において、製品本体はプリンタを想定する。ただし、推論実施装置の実施される製品本体はプリンタに限らず、パーソナルコンピュータや、スマートフォン等の製品内に、CPUあるいはそれに類するASIC、FPGAといった処理回路を内在したものも、本実施形態の構成をとることができる。推論実施装置100は、データ転送I/F101、データバス102、DRAM(Dynamic Random Access Memory)103を備える。また、推論実施装置100は、CPU(Central Processing Unit)104、推論部105、ROM(Read Only Memory)106を備える。データ転送I/F101は、不図示の製品外部機器からのデータ入出力を行うインタフェイスである。外部機器として例えばパーソナルコンピュータあるいは携帯電話といったように、入力データを生成あるいは保持することができ、且つ製品本体に入力データを転送できる機器が挙げられる。データバス102は、データ転送I/F101から受け取った各種データを、後述する機能ブロックに転送するためのデータバスである。DRAM103は、データ転送I/F101から受け取った各種データを一時的に記憶する領域である。CPU104は、DRAM103に記憶された入力データを、データバス102を通して授受し、必要な処理を行う。推論部105は、画像ブロックに分割されたデータを受け取り、内部で推論を実施する機能ブロックである。推論部105は、SRAMを有する。ROM106は、推論部105に供する各種データを保持する領域である。例えば、ROM106は、予め学習した結果により定まる畳み込み係数を記憶することができる。また、後述するようにDRAM103から推論部105に渡す画像ブロックのサイズもここに記憶されている。これらの構成は例であり、例えばROM106の代わりに任意の記憶媒体を用いてもよい。任意の記憶媒体とは、例えばHDDあるいはUSBインタフェイスを介した外部メモリなどでもよい。また、本実施形態では推論部105において推論が実施される。しかしながら同等の機構を実現するためのファームウェアを記憶媒体に記憶させ、CPU104に処理させてもよい。また、機能拡張の一環として、データ転送I/F101を介してDRAM103から推論部105に渡す画像ブロックのサイズをパラメータとして授受してもよい。
【0021】
[推論部]
図2は、推論部105の構成例を示す概念図である。
図2の推論部105は、エンコーダデコーダのモデルに従って動作することを想定する。エンコーダデコーダのモデルとしては、例えば、SegNet、U-Net等が挙げられる。推論部105は、CPU104が各種プログラムを実行することで推論実施部200として各機能構成を実現する。推論実施部200は、エンコード層201と、デコード層202とを含む。エンコード層201は、入力層203と、処理層204とを含む。エンコード層201は、入力データの特徴をエンコードする。デコード層202は、エンコード層201で得られた処理結果をデコードし、特徴量ベクトルを抽出する。入力層203には、入力データが入力される。ここで、層とは、CNNのモデルにおいて多数のフィルタを連続的に用いて何らかの処理を実現する1つの作用体のことである。必ずしも物理構成として複数のフィルタが必要なわけではない。また、畳み込み係数を漸次更新し、処理結果を次のフィルタの処理に供すれば連続した2つのフィルタ処理をしたことになる。ここでは、そのような層の一例として、入力層203を図示している。処理層204は、入力層203から供される入力データを受けて、その後の処理を実現するための層である。このような処理を通して、前半部において、エンコードを実現する。これらの後続の層も、入力層に等しく複数のフィルタを用いて構成されている。デコード側も、エンコーダ側と同様に複数のフィルタを用いた処理層を持つ構成となる。
図2の一例では、各層が矩形形状の面を有する立方体で示されているが、その大きさにより解像度が示される。つまり、エンコード側では層の処理が進むにつれ、解像度が下がり、デコード側では層の処理が進むにつれ、解像度が上がることが示される。以下の説明では連続して多数のフィルタを使用することを説明する。また、デコード側からの最終的な出力は、最終層における活性化関数部の処理によって一意に決まる。活性化関数部の処理結果により、画素の属性の確率が定まる。なお、
図2の一例では、エンコーダデコーダのモデルを想定しているため、CNNのデコード層についての説明は省略する。
図2の一例では、CNNは、二次元フィルタを複数組み合わせていくつかの層を構成する。構成された層を組み合わせてエンコードとデコードを行う。これらの処理を通して特徴量ベクトルを得る。なお、
図2の推論部105は、エンコーダデコーダのモデルを想定するが、モデルは特にこれに限定されない。例えば、ResNetのモデルを想定してもよい。ResNetのモデルであれば、入力層の後段側に、畳み込み層及びプーリング層が複数段設けられた後、全結合層、出力層が設けられた構成となる。
【0022】
[スキップ結合の概要]
次に、スキップ結合について説明する。
図3は、スキップ結合の構成を示す模式図である。本実施形態において、エンコード層201は、図の上では7つの矩形で表されている。7つの矩形のそれぞれは、層を示す。各層は、複数の人工ニューロンを有する。また、各矩形の長さは、入力データの解像度を示す。つまり、矩形の長さが短くなるにつれ、入力データの解像度は下がる。一方、矩形の長さが長くなるにつれ、入力データの解像度は上がる。よって、
図3のエンコード層201では、7つの層からなる場合が例示されている。なお、層の構成はこれに限定されない。各層は、所望の特徴量を抽出できるように人工ニューロンが組み合わされて構成されればよい。畳み込み層では積和処理による畳み込み処理が実施され、プーリング層では畳み込み処理結果からの代表値の集約が実施される。この結果、入力データの特徴量が抽出されつつ、入力データは間引かれることになり、結果として、入力データの圧縮処理(以下、ダウンサンプリングとも称する)が行われる。すなわち、ダウンサンプリングとは、畳み込み処理で得られた複数の値の中から特定のアルゴリズムで代表値として集約することで行われるプーリングである。そのプーリングを行うための特定のアルゴリズムとしては、例えば、畳み込み処理で得られた複数の値の平均値を求める処理である。これにより、畳み込み処理で得られた複数の値は1つの代表値に集約される。あるいは、畳み込み処理で得られた複数の値の中の最大値を求める処理である。これにより、畳み込み演算で得られた複数の値は1つの代表値に集約される。このように、プーリングを実施することで、画像内の座標の位置が変化したときの性能劣化を抑えることができる。なお、プーリング層を用いない場合には、畳み込み時に走査するフィルタの移動幅(ストライド)を増やし、結果として縮小変倍後の画像の特徴量を取得することによってダウンサンプリングする場合もある。どのような手法であったとしても、エンコード時の任意の層から出力値となる特徴量ベクトルを得ることができる。デコード側の処理層についても同様である。ただし、デコード層では特徴量の解像度を伸長する処理として、アップサンプリング層が使用される。通常の処理は、入力層203にデータが入力され、入力層の後段側へ処理が進んでいく。この処理方向は、順伝播方向である。出力層301は、この層の時点での特徴量ベクトルを出力する層である。次元追加層302は、出力層301から出力された特徴量ベクトルを用いて、次元が追加される層である。ここで、次元の追加について述べる。一般にn次のベクトルとn次のベクトルの加算の結果得られる和の次元はn次である。n次のベクトルと、m次のベクトルとに、数学的な加算は定義されていない。次元の追加はベクトル加法という意味ではなく、異なる次元のベクトルを単に並べて(n+m)次のベクトルを生成することを意味すると約束する。このような処理を、以下では「次元結合」と記す。このように、エンコード側の任意の層の出力を、デコード側の任意の層の入力時に次元を追加するように並べられるような処理方法を、スキップ結合と呼ぶ。つまり、スキップ結合とは、ベクトルの成分を増やす動作になる。なお、アップサンプリング層において、補間によりデータを伸長する処理が行われてもよい。あるいは、転置畳み込み処理や上昇畳み込み処理によりデータを伸長する処理が行われてもよい。
【0023】
以上のことから、本実施形態における情報処理装置は、モデルにかかわらず、以下の構成を備える。すなわち、情報処理装置は、畳み込み階層と、結合手段と、処理手段とを備える。畳み込み階層は、複数の畳み込み層を有する。畳み込み階層は、複数の畳み込み層のそれぞれが、前段側から入力された入力データから抽出した特徴量ベクトルに基づく出力データを後段側へ伝播させる。ここで、前段側とは、各畳み込み層の直前の前段という意味である。また、後段側とは、各畳み込み層の直後の後段という意味である。結合手段は、
図1のCPU104で実現される。結合手段は、順伝播経路と、迂回経路とを結合させる。順伝播経路は、複数の畳み込み層のうちの一部の畳み込み層から他の一部の畳み込み層までの間にある各畳み込み層に出力データを順に伝播させる。迂回経路は、順伝播経路を迂回して一部の畳み込み層から他の一部の畳み込み層へ出力データを伝播させる。処理手段は、
図1のCPU104で実現される。
図1のCPU104は、複数の畳み込み層のそれぞれで、入力データから特徴量ベクトルを抽出する。
図1のCPU104は、複数の畳み込み層のうち、迂回経路による迂回が開始される畳み込み層までに含まれる特徴量ベクトルを再度抽出する処理を再抽出処理として行う。結合手段は、処理手段により再抽出処理が行われた場合、順伝播経路からの出力結果と処理手段により再抽出処理が行われた結果とを結合させる。このような構成によれば、順伝播経路においてキャッシュメモリに各層の特徴量ベクトルを保持させなくても、各層の特徴量ベクトルを再度抽出するため、スキップ結合を実現可能である。したがって、低コストでスキップ結合を可能とする。なお、入力データは、複数の要素から構成される。複数の要素は、例えば、複数の画素である。よって、入力データは、例えば、複数の画素から構成される。また、複数の畳み込み層のそれぞれは、複数の畳み込み係数が特定されたフィルタを有する。このフィルタについては
図4、10、12、16、18を用いて後述する。
図1のCPU104は、複数の畳み込み層のそれぞれで、複数の画素と、複数の畳み込み係数とに基づく畳み込み処理を行うことで、特徴量ベクトルを抽出する。このような動作によれば、フィルタを用いて特徴量ベクトルを抽出可能である。具体的には、
図1のCPU104は、入力データに対し、一定のストライドでフィルタをシフトさせながら積和処理を行うことで、フィルタのシフトごとに入力データの局所的な特徴を表す特徴量を求め、求めた特徴量の集合を特徴量ベクトルとして抽出する。このような動作によれば、フィルタを用いて入力データから特徴量ベクトルを抽出可能である。なお、ここで、フィルタのシフトとは、記憶領域に展開される入力データの画素のうち、フィルタが有する畳み込み係数で処理する領域を一定のストライドでシフトするという意味である。よって、フィルタを物理的に移動するという意味ではない。
【0024】
[フィルタの回路構成]
図4は、推論部105を構成するフィルタ400の回路概念図である。フィルタ400は、SRAM401と、レジスタ402とを有する。
図4の一例では、SRAM401の記憶領域には、データ403と、畳み込み係数のデータセット404とが展開されている。データ403は、メインメモリとして機能するDRAM103から取得され、SRAM401の記憶領域のうち所定の記憶領域に展開されている。データ403は、画素d1乃至d9から構成されている。畳み込み係数のデータセット404は、c1乃至c9から構成され、3×3で配置される。また、レジスタ402には、畳み込み係数のデータセット404と同様の配置構成として3×3でr1乃至r9のデータセット405が配置される。r1乃至r9のデータセット405は、畳み込み処理の際、3×3の位置関係(座標)を保持するために利用される。
【0025】
[畳み込み係数の生成方法]
次に、畳み込み係数の生成方法を述べる。
[生成環境]
図5は、CNNの入力部近傍を示す模式図である。本実施形態では、不図示のパーソナルコンピュータを学習実施装置として用いて生成してもよい。学習実施装置は、パーソナルコンピュータに限らず、プリンタ、スマートフォン等の製品内に、CPU、それに類するASICあるいはFPGAのような処理回路を内在したものであってもよい。あるいは、推論実施装置100が学習により畳み込み係数を生成してもよい。
【0026】
データ501は入力データである。例えば入力データが画像データである場合、データ501は図のように3×3の画素が、座標ごとにR、G、Bの3チャネル分用意される。人工ニューロン502乃至507は、データ501を処理する要素である。人工ニューロン502乃至507は、この例では、データ501を畳み込むための畳み込み係数を保持している。保持されている畳み込係数は、R、G、Bの3チャネル分ある。後述するように、現段階ではこの値は生成対象としての変数である。例えば人工ニューロン502には、データ501を畳み込むための3×3の畳み込み係数がR、G、Bの3チャネル分保持されている。人工ニューロン502乃至507は、異なる特性の畳み込み係数を保持できる。これは、1つの畳み込み処理は1つの特徴量を抽出できるためである。複数の異なる特徴量を抽出するためには、複数の畳み込み処理を行えばよい。本実施形態では、畳み込み層として、6つの人工ニューロン502乃至507を有する1段目の処理層と、4つの人工ニューロン510乃至513を有する2段目の処理層と、を設ける一例を説明する。人工ニューロン502乃至507を有する第1段の処理層は、人工ニューロン502乃至507のそれぞれで畳み込み処理を終えると、6つの特徴量を後段側へ抽出可能である。また、人工ニューロン510乃至513を有する第2段の処理層は、人工ニューロン510乃至513のそれぞれで畳み込み処理を終えると、4つの特徴量を後段側へ抽出可能である。つまり、人工ニューロン510乃至513は、人工ニューロン502乃至507のそれぞれで抽出された特徴量を前段側から受け取り、同様に畳み込み処理を行うことで、4つの特徴量を後段側へ抽出する。
【0027】
[学習の概要]
図6は、畳み込み層で実施される処理の概要を説明するフローチャートである。
図6に示す処理は、CPU104によって実現されてもよい。以下の説明では、CPU104が処理を実行する一例を説明する。なお、
図6におけるステップのうちの一部または全部の機能をASICまたは電子回路等のハードウェアで実現してもよい。各処理の説明における記号「S」は、当該フローチャート図におけるステップであることを意味する。
【0028】
図6に示す処理は、畳み込み層で学習の処理が実行されることより開始される。S601において、CPU104は、DRAM103から入力データを読み出す。S602において、CPU104は、読み出した入力データをSRAM401の記憶領域に展開する。CPU104は、ROM106に予め用意されたプログラムに基づき、畳み込み係数を読み出し、SRAM401の記憶領域に展開する。なお、入力データ及び畳み込み係数のそれぞれは、SRAM401の記憶領域のうち、異なる記憶領域に展開されるのが好ましい。S603において、CPU104は、SRAM401の記憶領域に展開された畳み込み係数を、レジスタ402上の記憶領域に設定する。S604において、CPU104は、入力データに含まれる複数の画素と、畳み込み係数とに基づく畳み込み処理を行う。S604の処理の詳細は後述する。S605において、CPU104は、畳み込み処理の結果をSRAM401の記憶領域に記録する。S606において、CPU104は、畳み込み層で処理すべき入力データが残っているかを全画素について処理済みかで判断する。全画素について処理済みでない場合、CPU104は、S606の処理をS604の処理に戻す。全画素について処理済みである場合、CPU104は、S606の処理をS607の処理へ進ませる。S607において、CPU104は、次処理として、次のフィルタが必要かを判断する。次のフィルタが必要な場合、CPU104は、S607の処理をS603の処理へ戻し、2段目の畳み込み層のファイルのための畳み込み係数をレジスタ402に設定する。この後、S606において、CPU104は、1段目の畳み込み層の結果を2段目の畳み込み層のフィルタの畳み込み係数を用いて畳み込み処理を行う。このようにして、全てのフィルタの処理が終わると、CPU104は、S607の処理を終了することで、S601乃至S607の処理を終了する。
【0029】
[人工ニューロンの概要]
図7は、CNNを構成する人工ニューロン700の詳細を示す模式図である。人工ニューロン700は、畳み込み部701と、活性化関数部702とを有する。人工ニューロン700は、畳み込み層に含まれる。人工ニューロン700は、畳み込み層の前段側から入力を受けて畳み込み層の後段側へ出力する1つの処理機構である。畳み込み部701は、畳み込み係数を用いて畳み込み処理を行う。活性化関数部702は、非線形な特性を持つ関数を有する。具体的には、活性化関数部702は、ソフトマックス関数あるいはReLU関数を有する。活性化関数部702は、畳み込み部701の結果を入力とする関数処理の結果を出力する。畳み込み部701の結果によっては活性化関数部702からの出力が微弱になることもある。つまり、畳み込み部701で用いられる畳み込み係数に依存して、活性化関数部702から次の層に情報を伝達するかどうかが定まる。このような処理を次の段へと繰り返し実施し、モデルの最終段(不図示)まで実施することによって特徴量を抽出する。換言すれば、活性化関数部702は、畳み込み部701から出力される畳み込み処理の結果に基づき、特徴量ベクトルの構成要素である特徴量を算出する。なお、上記で説明したように、複数の畳み込み層を有する階層を、畳み込み階層と称する。畳み込み階層は、複数のプーリング層を有してもよい。複数のプーリング層のそれぞれは、複数の畳み込み層のそれぞれの後段側に配置され、特徴量ベクトルを出力データとしての代表値に集約してもよい。集約は、特定の範囲に含まれる複数の特徴量の中から1つを抽出する動作である。例えば、特定の範囲に含まれる複数の特徴量のうち最大値が抽出されてもよい。あるいは、特定の範囲に含まれる複数の特徴量の平均値が抽出されてもよい。また、アップサンプリング層は、畳み込み階層の後段側に配置されてもよい。CPU104は、アップサンプリング層で、出力データを伸張することで、代表値のサイズを入力データまで大きくし、後段データとして出力してもよい。例えば、アップサンプリング層は、出力データのXY方向を伸張することで、代表値のサイズを入力データまで大きくする。
【0030】
[畳み込み処理]
図8は、畳み込み処理を説明するフローチャートである。
図8に示す処理は、CPU104によって実現されてもよい。以下の説明では、CPU104が処理を実行する一例を説明する。なお、
図8におけるステップのうちの一部または全部の機能をASICまたは電子回路等のハードウェアで実現してもよい。各処理の説明における記号「S」は、当該フローチャート図におけるステップであることを意味する。
【0031】
図8に示す処理は、畳み込み処理が呼び出されることより開始される。S801において、CPU104は、畳み込み係数をレジスタ402に設定する。S802において、CPU104は、SRAM401上の記憶領域に展開される複数の画素のうちの1つの画素と、レジスタ402に設定した畳み込み係数とを乗算する。CPU104は、1つのフィルタ400に含まれる要素数の乗算結果を集めて、加算する。ここで、フィルタ400に含まれる要素とは、畳み込み係数のことである。その要素数とは、畳み込み係数の数である。畳み込み処理のより具体的な説明については
図10を用いて行う。
【0032】
[誤差の取得]
図9は、CNNの出力部近傍を示す模式図である。
図9の一例では、活性化層901が示される。活性化層901は、活性化関数部702を有する。
図7の人工ニューロン700を含む層が最終段に到達すると、活性化関数部702を通して出力される。このような動作によれば、入力データとして入力された画像の特徴が得られる。よって、CNNのモデルは、膨大なフィルタ計算と活性化関数とを用いて、入力データから特徴量を得る。なお、フィルタと活性化関数とを含む処理部から構成されるモデル全体の構成は、用いるモデルの基本設計に依存する。公知のモデルを使用する場合にはそのモデルの構成に依存する。またモデル構造そのものから構築する場合には、モデル構築時にどのようなサイズのフィルタを有する人工ニューロン700をいくつ用いるのか、またそれらからなる複数の層を幾つ設けるのかをどのように決定するかによって定まる。入力データとしての画像データに写る被写体の特徴を示す真の特徴量は、別の方法で用意することができる。例えば、目視による人の判断で値を決めることができる。以下、この値を「正解」と記す。この時、CNNのモデルから得られた値と正解の差をとると、誤差を得ることができる。なお、活性化層901の前段側には、アップサンプリング層が配置されてもよい。すなわち、活性化層901は、アップサンプリング層の後段側に配置されてもよい。活性化層901は、前段側から取得したデータがマッピングされた後段画像データを再構成してもよい。前段側にアップサンプリング層が配置されている場合には、活性化層901は、代表値のサイズを入力データまで大きくした後段データを取得してもよい。前段側にアップサンプリング層が配置されず、畳み込み階層が配置されている場合、活性化層901は、特徴量ベクトルを集約した代表値を取得してもよい。CPU104は、活性化層901により再構成された後段画像データに基づいて、複数の画素から構成される画像データに写る被写体を分類してもよい。CPU104は、畳み込み係数を、活性化層901により再構成された後段画像データと、入力データと、に基づいて求めてもよい。
【0033】
[畳み込み処理の詳細例]
図10は、推論部105を構成するフィルタの回路概念図である。
図10に示すように、画素d1、d2、d3、d4、d7の周囲にのりしろのデータセット1001が確保されている。のりしろのデータセット1001は、o1乃至o7を含む。のりしろのデータセット1001は、レジスタ402におけるr1を決定するためにSRAM401の記憶領域に展開されている。r1は、対応する畳み込み処理の座標のインデックスである。r2以降についても、それぞれ対応する畳み込み処理の座標のインデックスである。のりしろのデータセット1001を用いて畳み込み処理が行われてr1を決定後、次は、r2を決定するために、o1、o5、o6の値を捨て、o4、d3、d6を用いて畳み込み処理が行われる。以後、同様に畳み込み処理が行われ、レジスタ402に畳み込み処理の結果が転送される。その転送の際、画素のない部分の値としては、パディングと呼ばれる「0」で埋める処理が行われる。このようなのりしろにより、畳み込み処理により失う予定だった位置情報の一部を確保できるので、特徴量ベクトルの確度を向上させることが可能となる。
【0034】
<のりしろの変形例1>
図12は、推論部105を構成するフィルタの回路概念図である。
図12に示す例では、
図10に示す例と比べ、使用するのりしろ量が削減されている。
図12の一例では、のりしろのデータセット1201は、d1、d4、d7の左隣に配置されている。
図12の一例によれば、のりしろのデータセット120によりSRAM401の記憶領域の左右方向にデータ配置の空間的局所性があるため、データ進行が左右方向の場合に好適である。また、このようなのりしろであっても、畳み込み処理により失う予定だった位置情報の一部を確保できるので、特徴量ベクトルの確度を向上させることが可能となる。
【0035】
<のりしろの変形例2>
図16は、推論部105を構成するフィルタの回路概念図である。
図16に示す例では、
図10に示す例と比べ、使用するのりしろ量が削減されている。
図16の一例では、のりしろのデータセット1601は、d1、d2、d3の上隣に配置されている。
図16の一例によれば、のりしろのデータセット1601によりSRAM401の記録領域の縦方向にデータ配置の空間的局所性があるため、データ進行が縦方向の場合に好適である。また、このようなのりしろであっても、畳み込み処理により失う予定だった位置情報の一部を確保できるので、特徴量ベクトルの確度を向上させることが可能となる。
【0036】
<のりしろの変形例3>
図18は、推論部105を構成するフィルタの回路概念図である。
図18に示す例では、
図10に示す例と比べ、使用するのりしろ量が削減されている。
図18の一例では、のりしろのデータセット1801が有するo1、o2、o3、o4のそれぞれの間は、互いに画素1つ離して配置されている。また、
図18の一例では、のりしろのデータセット1801が有するo1、o5、o6、o7のそれぞれの間は、互いに画素1つ離して配置されている。
図18の一例によれば、のりしろのデータセット1801によりSRAM401上の記録領域が等間隔にデータ配置の空間的局所性があるため、データ進行が一定ペースの場合に好適である。また、このようなのりしろであっても、畳み込み処理により失う予定だった位置情報の一部を確保できるので、特徴量ベクトルの確度を向上させることが可能となる。
【0037】
[学習と処理単位]
図11は、学習に用いる画像を示す概念図である。画像の分割と水増しとについて述べる。元画像1101は、学習に用いる画像の元になる任意の画像である。ここでは、元画像1101がいくつかの領域に分割される。分割画像1102は、元画像1101が分割されて得られた画像である。水増し画像群1103は、分割画像1102を加工して生成した複数の画像群である。例えば鏡像反転したり、写真や文字、グラフィクスといった任意の画像要素の画素を部分的に上書きしたりするなどの処理を通して生成する。水増し方法の詳細は省略する。
【0038】
[学習]
図13は、学習を説明するフローチャートである。
図13に示す処理は、CPU104によって実現されてもよい。以下の説明では、CPU104が処理を実行する一例を説明する。なお、
図13におけるステップのうちの一部または全部の機能をASICまたは電子回路等のハードウェアで実現してもよい。各処理の説明における記号「S」は、当該フローチャート図におけるステップであることを意味する。
【0039】
図13に示す処理は、ユーザー入力により開始される。なお、ユーザー入力の具体的な実施形態は、第三の実施形態で説明する。本実施形態では、ユーザー入力に基づいて学習が行われると想定する。しかし、学習実施装置と推論実施装置とが同じ情報処理装置で構成されている場合、推論実施装置のフィードバックに基づいて処理が開始されてもよい。
【0040】
S1301において、CPU104は、学習に供せられる任意の画像1枚から、任意の枚数に分割し、
図11の分割画像1102を得る。S1302において、CPU104は、分割された画像を水増し、
図11の水増し画像群1103を得る。S1303において、CPU104は、水増し画像群1103から得られた任意の1枚をCNNのモデルで処理する。S1303の処理により、水増し画像群1103から特徴量が抽出される。S1303の処理の詳細については
図17を用いて説明する。
図17は、CNN処理の概略図である。
図17では、水増し拡大表示画像1701にフィルタ1702が適用され、太枠領域1703内に各画素の計算結果が得られる一例が示される。
【0041】
S1304において、CPU104は、抽出された特徴量を保持する。例えば、抽出された特徴量はSRAM401に保持される。S1305において、CPU104は、全ての水増し画像について処理を終えたかを判断する。全ての水増し画像について処理を終えた場合、CPU104は、S1305の処理をS1306の処理へ進ませる。全ての水増し画像について処理を終えていない場合、CPU104は、S1305の処理をS1303の処理へ戻す。S1306において、CPU104は、保持した情報量を全て足す。具体的には、S1304の処理で保持した特徴量を全て加算する。このように全ての特徴量が加算された特徴量は、以下では、「合計特徴量」と称する。S1307において、CPU104は、水増し処理回数と同じ回数加算された正解の特徴量と、合計特徴量と差を誤差として求める。S1308において、CPU104は、誤差逆伝搬法を用いて誤差を順伝播方向とは逆方向へ伝播させ、各畳み込み層が有するフィルタで特定された畳み込み係数を更新する。なお、誤差逆伝搬法は周知技術であるので、その説明については省略する。S1309において、CPU104は、全ての分割画像1102について誤差伝播を終えたかを判断する。終えていない場合、CPU104は、S1310の処理をS1302へ戻し、次の分割画像について水増しから始める。なお、次の処理は直前の処理において実行された誤差逆伝播の結果を反映した畳み込み係数及び転置畳み込み係数が用いられる。このような誤差逆伝搬の処理を繰り返すことで、畳み込み係数及び転置畳み込み係数が逐次最適化される。終えていた場合、CPU104は、S1309の処理をS1310の処理へ進ませる。S1310において、CPU104は、全画像について処理を終えたかを判断する。終えていない場合、CPU104は、S1310の処理をS1301の処理へ戻し、別の元画像の分割を行う。終えていた場合、CPU104は、S1310乃至S1310の処理を終了する。このように、既知の正解と、モデルから得られる特徴量ベクトルとの誤差を順伝播方向と逆方向に伝播させていくことで、モデルで用いる畳み込み係数及び転置畳み込み係数を求めることを学習と呼ぶ。このように得られた畳み込み係数及び転置畳み込み係数をパラメータとして予め製品本体のROM106に記憶することで、製品本体で推論を実施可能である。なお、本実施形態では、画像の分割の後に画像の水増しを実施しているが、特にこれに限定されない。すなわち、元画像の水増しを先に行い、その後、画像の分割を行ってもよい。
【0042】
[推論の実施]
こうして得られたパラメータは、入力データがどのような画像であるかの認識結果の確率として出力される。このようにして、類型パターンとの一致度を確率として評価することによって、パターンを同定することができる。なお、本実施形態では2次元画像データと2次元フィルタとによる畳み込みを例にとって説明した。しかしながら用途はそこに限定されない。すなわち、例えば音声のような1次元時系列データからのパターン認識に対して1次元フィルタを用いる際に同様の構成であってもよい。あるいは、ボクセルを利用した3次元データからのパターン認識に対して3次元フィルタを用いる際に同様の構成であってもよい。また、一般に特徴量の次元に合わせた好適な構成を組めば、同様に本願効果を得ることができる。
【0043】
「スキップ結合の詳細]
次に、スキップ結合の詳細について
図14、
図15、
図19、
図20を用いて説明する。まず、スキップ結合の構成について、
図19、20、15を用いて説明し、スキップ結合の動作例について、
図14を用いて説明する。
図19は、次元圧縮した特徴量ベクトルを用いたスキップ結合を説明する模式図である。
図19には、エンコード層201には、出力層2002と、次層2003とが含まれている一例が示される。また、
図19には、デコード層202には、中間層2004、ポストアップサンプリング層2005と、次層2006とが含まれている一例が示される。ポストアップサンプリング層2005は、上記で説明したアップサンプリング層と同様の機能を有する。中間層2004は、スキップ結合のスキップ対象の最終層であり、畳み込み層を含む。つまり、不図示の入力層から始まり、出力層2002から中間層2004までの間が迂回される迂回経路と、不図示の入力層から中間層2004までの順伝播経路とが形成される。ここで、迂回経路に含まれる畳み込み層は、出力層2002までに含まれる畳み込み層となる。出力層2002の前段側には、図示は省略するが、畳み込み層が配置される。例えば、モデルがSegNetあるいはU-Netであれば、出力層2002の前段側に、複数の畳み込み層及びプーリング層が配置されている。なお、例えば、モデルがU-Netであれば、スキップ結合時に渡す情報が特徴量全体であるが、モデルがSegNetであれば、スキップ結合時に渡す情報はプーリング座標のインデックスである。プーリング座標のインデックスとは、どの位置でプーリングしたかを示す情報である。なお、
図19では、複数の人工ニューロン2001が出力層2002に含まれる一例が示されるが、次層2003、中間層2004、ポストアップサンプリング層2005、次層2006のそれぞれにも同様に人工ニューロンは含まれている。ここで、1つの人工ニューロン2001に着目すると、人工ニューロン2001は、前段側に配置された不図示の層から特徴量ベクトルを受け取り、特徴量を算出する。この特徴量を1チャネルとする。例えば出力層2002は、8チャネルの特徴量ベクトルを出力する。入力データの解析は順伝播方向に処理される。そのため、この8チャネルの特徴量は次層2003に入力される。他方、デコード側では、中間層2004からポストアップサンプリング層2005へ特徴量ベクトルを入力する。この際、出力層2002からの特徴量ベクトルと中間層2004からの特徴量ベクトルとを次元結合する。ここで、スキップ結合に供される出力層2002からの特徴量ベクトルについて述べる。本実施形態では、この特徴量ベクトルのチャネル数を間引く。例えば、RGB3チャネルのうちRチャネルだけ捨て、GB2チャネルだけ次元結合する。つまり、スキップ結合に供する特徴量ベクトルの次元を、1チャネル以上7チャネル以下に制限する。チャネルの数が多いほどスキップ結合の効果を得やすい。一方、チャネル数が少ないほど使用するSRAMの記憶領域は抑制できる。その理由は、スキップ結合を実施するためには、1つフィルタのSRAMの記憶領域に保持された畳み込み係数を次々に書き換えながら処理結果も保持する処理が含まれるからである。また、チャネルを間引いてスキップ結合するということは、この保持される処理結果を削減する効果がある。このようにして次元結合された特徴量ベクトルが、ポストアップサンプリング層2005に入力される。その処理結果はデコード層202における次層2006に入力される。このようにして、スキップ結合に伴うSRAMの記憶領域の使用量の削減が可能となる。チャネル数を間引く際、間引くチャネルを選択することができる。例えば、連続するチャネルをまとめて間引く方法やチャネルを離散的に間引く方法を選択することができる。ここでは8チャネルを例に説明したが、そのチャネル数は任意である。また、接続する層と層は任意に選択できる。また、本実施形態ではスキップ結合に伴うSRAMの記憶領域の使用量の削減のために特徴量ベクトルのチャネル数を間引く例を示した。しかし、スキップ結合に伴うSRAMの記憶領域の使用量を削減できるならば、間引く対象はチャネル数だけに依存しない。例えば特徴量ベクトルのデータ長を間引いてもよい。例えば、RGB8ビットのうち4ビットだけ選択し、残りの4ビットは捨てる。このように、特徴量ベクトルのデータ長を元の特徴量ベクトルのデータ長未満に制限することで、スキップ結合に伴うSRAMの記憶領域の使用量の削減する効果がある。また、
図17の太枠領域1703内の画素に対する計算結果903の特徴量の数を間引く方法でも、スキップ結合に伴うSRAMの記憶領域の使用量の削減する効果がある。
【0044】
換言すれば、迂回経路における特徴量ベクトルを抽出する演算として、特徴量ベクトルの属性情報の一部を抽出する部分抽出処理が行われる。さらに、迂回経路が利用される場合、順伝播経路からの出力結果と部分抽出処理の結果とが結合される。このような構成によれば、畳み込みニューラルネットワークの構造上、SRAMの記憶領域に記憶されるデータが減るため、SRAMの記憶領域の使用量を常に低減させることが可能となる。したがって、低コストでスキップ結合を実現することが可能である。また、部分抽出処理として、特徴量ベクトルの次元、特徴量ベクトルのデータ長、特徴量ベクトルに含まれる画素のうち、少なくとも1つに基づいて特定される情報が抽出されてもよい。このような構成によっても、畳み込み処理が行われるときに変更可能なパラメータを利用できる。また、次元等のパラメータをモデルの学習中に変更することも可能である。
【0045】
なお、誤差の伝播はポストアップサンプリング層2005から中間層2004へ順伝播方向と逆方向に行われるが、その際の勾配消失を低減しつつ、誤差が小さくなるような重みになるまで畳み込み係数が更新される。この点について、さらに説明する。出力層2002は、本来8チャネルの特徴量ベクトルを出力する。しかし、機械学習を用いたCNNのモデルの構築では、どのチャネルがデータ解析のために好適なチャネルなのかが判断できない。そこで、学習により、好適なチャネルには強い重みをかける処理が行われる。従って、間引かれずに残ったチャネルの重みを最適化できれば、結果として有意なチャネルのみを使用したスキップ結合を実現したことになる。あるいは、一次元データをフーリエ級数展開すると、各振動数の強度(振幅)が求まる。このとき、いわゆるローパスフィルタであれば、高周波成分をカットすればよいが、機械学習の場合にはそうではない。入力に応じて有意な周波数帯の重み(係数)が強くなるような学習がなされる。この結果、スキップ結合における特徴量ベクトルを有意なチャネルに限定して次元圧縮が可能である。つまり、SRAMの記憶領域の使用量を削減しながら性能劣化を軽減することができる。なお、このような誤差逆伝播法を用いて畳み込み係数を最適化させる場合の初期の畳み込み係数は任意の値から始めてもよい。
【0046】
ところで、スキップ結合を実施するためには、各層のニューロンの出力をSRAMの記憶領域に一時的に保持する必要があった。繰り返しになるが、もしスキップ結合をしないのであれば、SRAMの記憶領域のうちこの一時的な記憶領域は不要である。そこで、処理がスキップ結合の必要な層に達した際、必要となるエンコード層の出力を再抽出(再生成とも適宜称する)することもできる。つまり、処理が中間層2004に達した際、CPU104はその結果だけをSRAM401の記憶領域に保持する。また、CPU104は、DRAM103から再度入力データを取得し、入力層203から順伝播方向に処理を進める。CPU104は、出力層2002に達したところで、保持していた中間層2004との結果を次元結合してポストアップサンプリング層2005へ入力する。推論を実施する際、このような動作をすることにより、CPU104はCNNによるSRAMの記憶領域の使用量を削減することもできる。なお、SRAMの記憶領域の使用量を削減するために、次元結合に必要となるエンコード層201の出力を再抽出するために入力層203から順伝播方向に処理を進める方法を説明した。しかし、再抽出を行う際必ずしも入力層203から順伝播方向に処理を進める必要はない。例えば、エンコード層201の中の出力層2002から出力された特徴量ベクトルをSRAMの記憶領域に保持しておくことで、その特徴量ベクトルから処理を開始してもよい。この一例については、
図15を用いて説明する。
【0047】
[スキップ結合の変形例]
図15は、5層目の特徴量ベクトルがスキップ結合される例を示す図である。
図15では、エンコード層に複数の層が配置される一例が示される。各層は、順伝播方向に処理が進む。また、順伝播方向に処理が進むにつれ、次元数(チャネル数)が増加する。ここで、次元数が24の層の特徴量を保持することも可能である。このような動作により、次元数が24の層から計算をやり直せばよくなるため、計算効率を上げることが可能となる。なお、
図15の一例では、エンコード層を含むモデルが示されているが、エンコード層の後段側は特に限定されない。例えば、エンコード層の後段側には、デコード層が配置されるモデルであってもよい。あるいは、エンコード層だけまたは、デコード層だけで構成されるモデルであってもよい。
【0048】
本実施例ではここまで、スキップ結合に伴うSRAMの記憶領域の使用量の削減方法として、特徴量を間引くことによってSRAMの記憶領域に保持される特徴量を削減する方法を説明した。また、スキップ結合に必要な特徴量をSRAMに保持せず、必要な層に達した際に特徴量を再抽出する方法について説明した。どちらの方法でSRAMの記憶領域の使用量を削減するかどうかは、各層において選択することができる。スキップ結合に伴うSRAMの記憶領域の使用量の削減効果としては、必要な層に達した際に特徴量を再抽出する方法の方が効果は高い。その理由は、SRAMの記憶領域にスキップ結合のための特徴量を保持し続けることなく、スキップ結合を行うことができるからである。そのためSRAMの記憶領域の使用量の削減効果の観点では、特徴量を再抽出する方法を用いる方がよい。一方、この方法は処理量が増加する。その理由は、特徴量を再抽出するためには、一度行った処理をもう一度行う必要があるからである。各層においてどちらの方法を選択するかどうかは、SRAMの記憶領域の使用量と処理速度とのトレードオフになる。その理由は、処理量が大きくなると並列性が内在される処理は同時に実行でき、その結果全体として処理速度が大きくなるためである。
【0049】
図20は、スキップ結合を行うモデルの模式図である。次元結合のために特徴量を再抽出する際、再抽出のための処理量は、エンコード層における層が順伝播方向に進むごとに増加する。
図20では、出力層2101、2103、2105が配置されているが、いずれの前段側にも畳み込み層が少なくとも1つは配置されることを想定する。また、出力層2101はスキップ結合により次元結合層2102に接続される。出力層2103はスキップ結合により次元結合層2104に接続される。出力層2105はスキップ結合により次元結合層2106に接続される。ここで、出力層2101、出力層2103、出力層2105のそれぞれの出力を再抽出することについて以下で説明する。出力層2101でスキップ結合する経路が最も少ない処理量で計算することができる経路となる。また、出力層2105でスキップ結合する経路が最も処理量が多くなる経路となる。本実施形態では、次元結合層2102において、出力層2101から出力された特徴量ベクトルを再抽出する方法を用いて次元結合を行う。その理由は、出力層2101は、出力層2103,2105と比べ、前段側に配置される畳み込み層が少ないため、再抽出に必要な処理量を抑えながらスキップ結合に伴うSRAMの記憶領域の使用量を大きく減らす効果が得られるためである。また、次元結合層2104及び次元結合層2106では、出力層2103及び出力層2105から出力された特徴量ベクトルを間引いてSRAMに保持する方法を用いて次元結合が行われる。次元結合層2106の例を用いて理由を説明する。次元結合層2106では、出力層2105の出力を再抽出する必要がある。しかし、出力層2105の再抽出は多くの処理が必要となる。その理由は、再抽出するための処理量は、エンコード層における層が順伝播方向に進むごとに増加するためである。そのため、出力層2103及び出力層2105では、間引いた特徴量をSRAMに保持する方法を選択している。本実施形態では、入力に最も近い出力層2101では特徴量を再抽出する方法を選択し、それ以外の出力層2103,2105では間引いた特徴量をSRAMに保持する方法を選択している。しかし、選択方法はその限りではない。SRAMの記憶領域の削減量と処理効率とを鑑みて、各層においてどちらの方法がよいかを選択することができる。いずれにしても、スキップ結合を行う際に特徴量ベクトルを再抽出することにより、特徴量ベクトルを保持する必要がなく、SRAMの記憶領域の使用量を削減することができる。また学習を行う際は、通常のスキップ結合と同等の特徴量ベクトルを学習し、畳み込み係数を最適化するため同等の精度で推論することができ、本願効果を得ることができる。
【0050】
[スキップ結合の動作]
図14は、再抽出の動作を示すフローチャートである。
図14に示す処理は、CPU104によって実現されてもよい。以下の説明では、CPU104が処理を実行する一例を説明する。なお、
図14におけるステップのうちの一部または全部の機能をASICまたは電子回路等のハードウェアで実現してもよい。各処理の説明における記号「S」は、当該フローチャート図におけるステップであることを意味する。
【0051】
図14に示す処理は、CPU104がスキップ結合の管理を始めることにより開始される。CPU104は、処理が中間層2004に達したかを判定する。処理が中間層2004に達した場合、CPU104はS1401の処理をS1402の処理へ進ませる。処理が中間層2004に達していない場合、CPU104は、S1401の処理を継続する。S1402において、CPU104は、中間層2004に達した際の結果のみをSRAM401に保持させる。つまり、中間層2004の前段側の畳み込み層で抽出された特徴量ベクトルは保持されない。S1403において、CPU104は、DRAM103からデータを再度取得する。ここで、CPU104がDRAM103から再度取得するデータは入力データである。S1404において、CPU104は、入力層から順次処理を進める。つまり、CPU104は入力層から出力層2002に至るまでの各畳み込み層が抽出する特徴量ベクトルを再度求める。S1405において、CPU104は、出力層2002に達したかを判断する。出力層2002に達した場合、CPU104は、S1405の処理をS1406の処理へ進ませる。出力層2002に達していない場合、CPU104は、S1405の処理をS1404の処理へ戻し、出力層2002に達するまで、各層の特徴量ベクトルを抽出する処理を進める。S1406において、CPU104は、中間層2004に達した際の結果と、出力層2002に達した際の結果と、を次元結合する。つまり、出力層2002に達するまでに再抽出した特徴量ベクトルと、中間層2004に達した際の特徴量ベクトルとを次元結合する。ここで、再抽出の間、中間層2004とポストアップサンプリング層2005との間に配置された結合素子は、再抽出結果の入力を待たされる。例えば、中間層2004と結合素子との間に、再抽出に要する分のバッファ(遅延素子)が配置されてもよい。S1407において、CPU104は、次元結合した結果をポストアップサンプリング層2005に入力し、S1401乃至S1407の処理を終了する。なお、S1401乃至S1407において、畳み込み層の後段側にプーリング層が配置されている場合には、特徴量ベクトルを出力データとしての代表値に集約すればよい。
【0052】
<<第2実施形態>>
上述した第一の実施形態では、スキップ結合に伴うSRAMの記憶領域の使用量の削減方法として、特徴量を間引く方法と、特徴量をSRAM内に保持せず再抽出する方法とが選択可能である。どちらの方法を選択したとしてもSRAMの記憶領域の使用量を削減する効果は得られる。ところで、エンコード層で次の層に渡す特徴量ベクトル及び特徴量ベクトルが間引かれたものと、次元結合で用いられる特徴量ベクトルは共通である。そのため判定精度が低下するという課題がある。本実施形態では、SRAMの記憶領域の使用量を削減しつつ判定精度を向上させることが可能な手段を説明する。
図21はスキップ結合の詳細を説明する模式図である。本実施形態では、エンコード層2202が新たに配置されている。エンコード層2202は、任意の出力層2203を有する。出力層2203には、複数の人工ニューロン2201が含まれる。本実施形態におけるCNNモデルの学習について説明する。CNNモデルに画像が入力されるとエンコード層201とエンコード層2202とでは、それぞれ順伝播方向に処理が実行される。例えば、出力層2002は8チャネルの特徴量ベクトルを出力する。出力層2002から出力される特徴量ベクトルは、出力層2002の後段側に配置された次層2003に入力される。一方、デコード層202では、中間層2004からポストアップサンプリング層2005へ特徴量ベクトルが入力される。この際、エンコード層2202内の出力層2203から出力された特徴量ベクトルと中間層2004から出力された特徴量ベクトルとを次元結合する。第1実施形態では、出力層2002から出力された特徴量ベクトルに対し、特徴量を間引く方法や次元結合の際に出力層2002からの特徴量ベクトルを再抽出して、SRAMの記憶領域の使用量の削減を行った。本実施形態では、次元結合に用いる出力層2203から出力された特徴量ベクトルは、チャネル数、データ長、画素数の大きさを第一の実施形態で間引きあるいは再抽出を行った特徴量ベクトルの大きさ以下に設計することが出来る。その理由は、エンコード層2202はモデル構造を自由に変更することが出来るからである。例えば、出力層2203から出力された特徴量ベクトルを第1実施形態で次元結合のために間引きあるいは再抽出を行った特徴量ベクトルの大きさと同じ大きさにした場合について説明する。具体例として、第1実施形態において、中間層2004から出力された特徴量ベクトルと次元結合するために、出力層2002から出力された特徴量ベクトルを8チャネルから4チャネルに間引く場合と比較する。第1実施形態では、出力層2002から出力された特徴量ベクトル8チャネルのうち4チャネルが、次層2003への入力と次元結合のための特徴量ベクトルとのどちらにも用いられる。そのため、モデルの学習において、それぞれで用いられる場合に最適化することはできず、どちらに用いられる場合も有効な特徴量ベクトルになるように、フィルタ係数を決定する必要がある。一方、本実施形態では、出力層2002から出力された特徴量ベクトルは、次層2003への入力だけに用いられる。また、中間層2004から出力された特徴量ベクトルと次元結合をする際は、出力層2203から出力された特徴量ベクトルが用いられる。これら2つの特徴量ベクトルをそれぞれ学習の中で最適化することが出来るため、SRAM401の記憶領域の使用量を抑制しながら、精度を向上させることが出来る。本実施形態では、出力層2203から出力された特徴量ベクトルと、第1実施形態で間引きあるいは再抽出を行った特徴量ベクトルの大きさとが同じに大きさになる場合を説明した。しかし、これは必ずしも一致させる必要はない。いずれにしても、スキップ結合を行う際に特徴量ベクトルを再抽出することにより、特徴量ベクトルを保持する必要がなく、SRAMの記憶領域の使用量を削減することができる。また学習を行う際は、特徴量抽出のためのエンコード層とスキップ結合のためのエンコード層をそれぞれ別に学習し、精度に寄与するようにフィルタ係数を最適化するため、同等以上の精度で推論することができ、本願効果を得ることができる。
【0053】
<<第3実施形態>>
上述した第1実施形態では、スキップ結合に伴うSRAMの記憶領域の使用量の削減方法として、各層に対して特徴量を間引く方法と、特徴量をSRAMに保持せず再抽出する方法とが示される。ここで、特徴量を間引く方法を選択された場合、特徴量ベクトルのチャネル数、データ長、画素数から、どの要素をどの程度間引くかを選択する必要がある。第2実施形態では、上述した選択に加え、次元結合の際に用いる特徴量ベクトルを出力するCNNモデルの構造も選択する必要がある。どちらの実施形態においてもSRAMの記憶領域の使用量を削減する効果は得られる。しかし、ユーザーは、間引く対象あるいは間引く程度、再抽出をするかを選択する必要があった。本実施形態では、SRAM使用量を削減しながら、SRAM使用量の削減に伴う選択を自動で行う手法について説明する。
図22は、CNNモデルを学習する際に、スキップ結合の設定画面2301の一例を示す図である。
図22には、設定画面2301が示される。設定画面2301は、ユーザーの操作を受け付けるユーザインターフェースとして機能する。よって、ユーザーは、設定画面1301を介して、SRAMの記憶領域の使用量の削減に伴う選択を行うことが可能である。設定画面2301の右側上方領域には、モデル設計自動/手動切り替えボタン2302、学習開始ボタン2307が配置される。設定画面2301の右側下方領域には、選択ボタン2306、間引き選択ボタン2304、再生成選択ボタン2305が配置される。設定画面2301の左側領域には、CNNモデル構造表示画面2303が配置される。モデル設計自動/手動切り替えボタン2302は、SRAMの記憶領域の使用量の削減に伴う選択を自動で行うか、手動で行うかの選択を受け付ける。また、本実施形態では自動で行うか、手動で行うかの2種類の選択を受け付けるが、これに限らない。例えば、モデルの設計事項の一部分は手動で設定し、そのほかの部分は自動で設定するなど、より細かい選択を受け付けることができてもよい。次に、モデル設計自動/手動切り替えボタン2302が押下され、CNNモデルのSRAMの記憶領域の使用量の削減に伴う選択を自動で行う場合について説明する。モデル設計自動/手動切り替えボタン2302が押下されると、何に基づいてSRAMの記憶領域の使用量の削減に伴う選択を自動で行うかを設定する詳細設定画面に遷移する。
図23は、CNNモデルを学習する際の詳細設定画面の一例を示す図である。詳細設定画面2401では、主にスキップ結合に伴うSRAMの記憶領域の使用量をどの程度削減するかを設定可能である。詳細設定画面2401には設定バー2402が配置される。設定バー2402は、0%乃至100%の間で、その位置をユーザーにより変更可能である。設定バー2402がユーザーに操作されることにより、スキップ結合に伴うSRAMの記憶領域の使用量の削減割合を受けつけ、CPU104は、それに基づいたCNNモデルの設計事項の設定を行う。また、本実施形態では、SRAMの記憶領域の使用量削減割合を受け付けるが、これに限らない。例えば、CNNモデル全体での積和処理回数、処理速度、SRAMの記憶領域の使用量を受けつけ、CPU104は、それに基づいたCNNモデルのSRAMの記憶領域の使用量の削減に伴う選択を行ってもよい。
【0054】
次に、モデル設計自動/手動切り替えボタン1302が押下され、CNNモデルのSRAMの記憶領域の使用量の削減に伴う選択を手動で行う場合について説明する。CNNモデル構造表示画面1303には、CNNモデルの模式図が表示される。CNNモデルのSRAMの記憶領域の使用量の削減に伴う選択を手動で行う場合には、スキップ結合を行う各層に対して、スキップ結合に基づくSRAMの記憶領域の使用量の削減方法について設定可能である。間引き選択ボタン2304及び再生成選択ボタン2305は、第1実施形態で述べたSRAMの記憶領域の使用量の削減方法の選択肢を示す。つまり、CPU104は、ユーザーが、特徴量ベクトルを間引く方法と、特徴量ベクトルを再生成する方法とのどちらを選択するかを受け付ける。本実施形態では、第1実施形態で述べたSRAMの記憶領域の使用量の削減方法の2種類の選択を受け付けるが、これに限らない。例えば、第2実施形態で説明したように、エンコード時と次元結合時に用いる係数フィルタが異なるようなSRAMの記憶領域の使用量の削減方法の選択を受け付けてもよい。スキップ結合を行う各層において、間引き選択ボタン2304と、再生成選択ボタン2305のどちらかを選択し、選択ボタン2306を押下することで、各層におけるSRAMの記憶領域の使用量の削減方法を設定することができる。スキップ結合を行う各層において、間引き選択ボタン2304が選択され、選択ボタン2306が押下されると、どの要素をどの程度間引くかを設定する詳細設定画面に遷移する。
図24は、CNNモデルを学習する際の詳細設定画面2501の他の一例を示す図である。詳細設定画面2501は、間引き選択ボタン2304が選択され、選択ボタン2306が押下された際に遷移する画面である。詳細設定画面2501の右側上部領域には、決定ボタン2506が配置される。詳細設定画面2501の左側上方領域には、チャネル選択ボタン2502、データ長選択ボタン2503、画素選択ボタン2504が配置される。詳細設定画面2501の左側下方領域には、チャネル選択ボタン2502、データ長選択ボタン2503、画素選択ボタン2504のそれぞれは、どの要素を間引いてSRAMの記憶領域の使用量を削減するかの選択を受け付ける。設定バー2505は、詳細設定画面2501の左側下方領域に配置された各ボタンに対応して動作する。すなわち、チャネル選択ボタン2502が選択されたときには、チャネルという要素を間引く割合を受け付ける。データ長選択ボタン2503が選択されたときには、データ長という要素を間引く割合を受け付ける。画素選択ボタン2504が選択されたときには、画素という要素を間引く割合を受け付ける。それらが選択され、設定バー2505が操作された後、決定ボタン2506が押下されると、スキップ結合を行う層に選択したSRAMの記憶領域の使用量の削減設定を設定することができる。
図22に戻る。SRAMの記憶領域の使用量の削減を行うCNNモデルを学習する際、設定が入力され、学習開始ボタン2307が押下されるとCNNモデルの学習が開始される。本実施形態では、スキップ結合に伴うSRAMの記憶領域の使用量の削減を行うCNNモデルを学習する際の、設定画面2301の一例を示した。しかし、設定できる項目はこの限りではない。例えば学習を行う際の学習条件を入力する手段や、学習を途中で中断する手段、推論を実行する手段などを持ち合わせていてもよい。また、画面の形態はこの形態に限られず、配置や入力手段が本実施形態と異なっていてもよい。
【0055】
次に、自動的にCNNモデルのSRAMの記憶領域の使用量の削減に伴う選択を行う方法の一例について説明する。一般に、精度の高いCNNモデルを探索する手法としてNAS(Neural Architecture Search)と呼ばれる手法がある。この手法では、精度の高いモデルの構造や、SRAMの記憶領域の使用量の削減に伴う選択の探索を行うことができる。その理由は、学習を行う際、モデルの構造あるいは設計事項の設定値の良し悪しを誤差に反映させることができるからである。
図25は、自動CNNモデル設計を示すフローチャートである。
図25に示す処理は、CPU104によって実現されてもよい。以下の説明では、CPU104が処理を実行する一例を説明する。なお、
図25におけるステップのうちの一部または全部の機能をASICまたは電子回路等のハードウェアで実現してもよい。各処理の説明における記号「S」は、当該フローチャート図におけるステップであることを意味する。
【0056】
図25に示す処理は、ユーザーによる学習開始ボタン1307からの入力に基づいて開始される。
図25に示す処理において、
図13に示す処理と同一の処理については同一のステップとし、その説明は省略する。S2501において、CPU104は、モデルの設計事項を確率分布に基づき設定する。モデルの設計事項は、例えば、モデルの構造、SRAMの記憶領域の使用量の削減に伴う選択等の事項である。モデルの構造とは、モデルのアーキテクチャのことであり、例えば、SegNet、U-Net、ResNet等で特定される構造である。この確率分布は、学習の初期はランダムな分布であってもよい。この確率分布は、学習が進むにつれて、S1307で算出される正解との誤差を小さくする設定値が選ばれやすくなるように変化するものである。S2502において、CPU104は、ユーザーが設定画面1301を介して設定した
図25のユーザー設定値が入力される。CPU104は、設定したCNNモデルが
図25のユーザー設定値を満たすかの判断を行う。ここで、ペナルティという言葉を定義する。ペナルティは、S2501で設定されたCNNモデルが
図25のユーザー設定値を満たしているかを反映した評価指標である。本実施形態では、CNNモデルが
図25のユーザー設定値を満たしている場合、ペナルティの値は0とする。一方、CNNモデルが
図25のユーザー設定値を満たしていない場合、ペナルティの値は
図25のユーザー設定値との乖離の大きさに応じて大きくなるものである。例えば、ユーザーがスキップ結合に伴うSRAMの記憶領域の使用量の削減割合を50%と設定した場合、その設定値が
図25のユーザー設定値としてS2502に入力される。S2501では、CPU104がスキップ結合を行う各層において、SRAMの記憶領域の使用量の削減方法を設定している。そのため、SRAMの記憶領域の使用量を削減しなかった場合と比較して、どの程度削減することができるかを算出することができる。CPU104は、その値と
図25のユーザー設定値とを比較し、
図25のユーザー設定値を満たしていれば、S1307の出力をそのままS1308に使用する。一方、
図25のユーザー設定値を満たしていなかった場合、CPU104は、S1307の出力にペナルティの値を反映させて、S1308で使用する。その理由は、S2501において選ばれた設定値の組み合わせが選ばれにくくなるようにする必要があるからである。例えば、SRAMの記憶領域の使用量の削減割合が50%以上の場合、ペナルティを与えず、50%未満であれば、不足した削減比率に応じたペナルティを加算する方法がある。本実施形態では、S1307における出力にペナルティを加算した。しかし、ペナルティの与え方は、これに限定しない。例えば、不足した削減比率に応じてS1307における出力に乗算をしてもよい。この動作によれば、S1308において使用される値はCNNモデルの判定性能に加え、S2501において設定されたSRAMの記憶領域の使用量の削減に伴う選択の良し悪しを反映した値となる。S1308で行われる誤差逆伝播では、CNNモデルの畳み込み係数、及びS2501において設定されたSRAMの記憶領域の使用量の削減に伴う選択を最適化することができる。また、本実施形態ではS2502の処理がS1307とS1308との間で実行されるが、特にこれに限定されない。S2502における評価は、S1301乃至S1308の間であれば、どこで実施されてもよい。あるいは、S1301乃至S1310の間の処理を繰り返す中で、繰り返しごとにS2502を行わなくてもよい。いずれにしても、スキップ結合を行う際に特徴量ベクトルを再抽出することにより、特徴量ベクトルを保持する必要がなく、SRAMの使用量を削減することができる。また、学習を行う際は、SRAMの記憶領域の使用量の削減に伴う選択を自動で学習し、精度に寄与するように畳み込み係数、モデル構造、設定値を最適化するため精度の低下を抑制することができ、効果を得ることができる。
【0057】
以上、本開示の様々な例と実施形態を示して説明したが、本開示の趣旨と範囲は、本明細書内の特定の説明に限定されるものではない。
【0058】
例えば、上述した実施形態では、エンコード層とデコード層とを含むCNNモデルの一例を説明した。また、次元結合に伴うSRAMの記憶領域の使用量の削減方法について、エンコード層内の出力層の出力とデコード層内の中間層の出力との次元結合の例を挙げた。しかし、必ずしもエンコード層とデコード層とを含むCNNモデルである必要はない。例えば、エンコード層を含むが、デコード層を含まないようなCNNモデルにおいても、次元結合を行うことは可能である。あるいは、エンコード層内の2つ以上の出力層からの出力を次元結合し、次層への入力とすることがある。このようなCNNモデルにおいても、次元結合に伴うSRAMの記憶領域の使用量の削減方法として、上述した実施形態で用いた方法によってSRAMの記憶領域の使用量の削減の効果を得ることができる。
【0059】
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0060】
本実施形態の開示は、以下の情報処理装置、情報処理方法、およびプログラムに代表される構成を含むものである。
【0061】
<構成1>
複数の畳み込み層を有し、前記複数の畳み込み層のそれぞれが、前段側から入力された入力データから抽出した特徴量ベクトルに基づく出力データを後段側へ伝播させる畳み込み階層と、
前記複数の畳み込み層のそれぞれで前記出力データを順に伝播させる順伝播経路と、前記順伝播経路の一部を迂回して前記出力データを伝播させる迂回経路と、を結合させる結合手段と、
前記複数の畳み込み層のそれぞれで、前記入力データから前記特徴量ベクトルを抽出する処理を行う処理手段と、
を備え、
前記処理手段は、前記迂回経路における前記特徴量ベクトルを抽出する処理として、前記特徴量ベクトルの属性情報の一部を抽出する部分抽出処理を行い、
前記結合手段は、前記迂回経路が利用される場合、前記順伝播経路からの出力結果と前記部分抽出処理の結果とを結合させることを特徴とする情報処理装置。
【0062】
<構成2>
前記処理手段は、前記部分抽出処理として、前記特徴量ベクトルの次元、前記特徴量ベクトルのデータ長、前記特徴量ベクトルに含まれる画素のうち、少なくとも1つに基づいて特定される情報を抽出することを特徴とする請求項1に記載の情報処理装置。
【0063】
<構成3>
前記入力データは、複数の画素から構成され、
前記複数の畳み込み層のそれぞれは、複数の畳み込み係数が特定されたフィルタを有し、
前記処理手段は、前記複数の畳み込み層のそれぞれで、前記複数の画素と、前記複数の畳み込み係数とに基づく畳み込み処理を行うことで、前記特徴量ベクトルを抽出することを特徴とする構成2に記載の情報処理装置。
【0064】
<構成4>
前記畳み込み階層は、複数のプーリング層を有し、
前記複数のプーリング層のそれぞれは、前記複数の畳み込み層のそれぞれの後段側に配置され、前記特徴量ベクトルを前記出力データとしての代表値に集約することを特徴とする構成3に記載の情報処理装置。
【0065】
<構成5>
前記畳み込み階層の後段側に配置され、前記出力データを伸張するアップサンプリング層をさらに備え、
前記演算手段は、前記アップサンプリング層で、前記出力データを伸張することで、前記代表値のサイズを前記入力データまで大きくし、後段データとして出力することを特徴とする構成4に記載の情報処理装置。
【0066】
<構成6>
前記アップサンプリング層の後段側に配置され、前記後段データがマッピングされた後段画像データを再構成する活性化層をさらに備え、
前記処理手段は、前記活性化層により再構成された前記後段画像データに基づいて、前記複数の画素から構成される画像データに写る被写体を分類することを特徴とする構成5に記載の情報処理装置。
【0067】
<構成7>
前記畳み込み階層の後段側に配置され、前記代表値がマッピングされた後段画像データを再構成する活性化層をさらに備え、
前記処理手段は、前記活性化層により再構成された前記後段画像データに基づいて、前記複数の画素から構成される画像データに写る被写体を分類することを特徴とする構成4に記載の情報処理装置。
【0068】
<構成8>
前記複数の畳み込み層のそれぞれは、複数の人工ニューロンを有し、
前記複数の人工ニューロンのそれぞれは、
前記畳み込み係数を用いて前記畳み込み処理を行う畳み込み部と、
前記畳み込み部から出力される前記畳み込み処理の結果に基づき、前記特徴量ベクトルの構成要素である特徴量を算出する活性化関数部と、
を有し、
前記処理手段は、前記畳み込み係数を、前記活性化層により再構成された前記後段画像データと、前記入力データと、に基づいて求めることを特徴とする構成6又は7に記載の情報処理装置。
【0069】
<構成9>
前記処理手段は、前記入力データに対し、一定のストライドで前記フィルタをシフトさせながら積和を行うことで、前記フィルタのシフトごとに前記入力データの局所的な特徴を表す特徴量を求め、求めた特徴量の集合を前記特徴量ベクトルとして抽出することを特徴とする構成3に記載の情報処理装置。
【0070】
<構成10>
メインメモリとして機能する第1の記憶装置と、
キャッシュメモリとして機能する第2の記憶装置と、
をさらに備え、
前記第1の記憶装置は、前記入力データを記憶し、
前記第2の記憶装置は、前記複数の畳み込み層のそれぞれにおいて抽出された前記特徴量ベクトルを記憶することを特徴とする構成1乃至9のいずれか1項に記載の情報処理装置。
【0071】
<構成11>
前記処理手段は、前記部分抽出処理を行う場合、前記第1の記憶装置から前記入力データを取得することを特徴とする構成10に記載の情報処理装置。
【0072】
<構成12>
前記第1の記憶装置は、DRAMから構成され、
前記第2の記憶装置は、SRAMから構成されることを特徴とする構成10又は11に記載の情報処理装置。
【0073】
<構成13>
前記畳み込み階層は、前記入力データから構成される画像データを一定の空間領域ごとに分割された分割データが前記畳み込み階層に入力されることを特徴とする構成3に記載の情報処理装置。
【0074】
<構成14>
複数の畳み込み層を有する情報処理装置の情報処理方法であって、
前記複数の畳み込み層のそれぞれが、前段側から入力された入力データから抽出した特徴量ベクトルに基づく出力データを後段側へ伝播させるステップと、
前記複数の畳み込み層のそれぞれで前記出力データを順に伝播させる順伝播経路と、前記順伝播経路の一部を迂回して前記出力データを伝播させる迂回経路と、を結合させるステップと、
前記複数の畳み込み層のそれぞれで、前記入力データから前記特徴量ベクトルを抽出する処理を行うステップと、
を含み、
前記処理を行うステップは、前記迂回経路における前記特徴量ベクトルを抽出する処理として、前記特徴量ベクトルの属性情報の一部を抽出する部分抽出処理を行い、
前記結合させるステップは、前記迂回経路が利用される場合、前記順伝播経路からの出力結果と前記部分抽出処理の結果とを結合させることを特徴とする情報処理方法。
【0075】
<構成15>
コンピュータに、構成14に記載の情報処理方法の各ステップを実行させるためのプログラム。
【符号の説明】
【0076】
100 推論実施装置
101 データ転送インタフェイス
102 データバス
103 DRAM
104 CPU
105 推論部
106 ROM