(57)【要約】【課題】ニューラルネットワークにおいてデコンボルーション演算を行う装置及びその方法を提供する。【解決手段】ニューラルネットワークにおいてデコンボルーション演算を行う装置において、少なくとも１つのプログラムが保存されたメモリ、及び少なくとも１つのプログラムを実行することにより、ニューラルネットワークにおける演算を実行するプロセッサを含む。該プロセッサは、ニューラルネットワークのデコンボルーションレイヤで処理される入力フィーチャマップ及び第１カーネルをメモリから獲得する。また、該プロセッサは、第１カーネルを処理してサブカーネルを生成し、コンボルーション演算器を利用し、入力フィーチャマップとサブカーネルとのコンボルーション演算を行う。また、該プロセッサは、コンボルーション演算の結果をマージすることにより、出力フィーチャマップを生成する。【選択図】      図５
2019087252.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワークにおいてデコンボルーション演算を実行する装置において、
少なくとも１つのプログラムが保存されたメモリと、
前記少なくとも１つのプログラムを実行することにより、演算を実行するプロセッサと、を含み、
前記プロセッサは、
前記ニューラルネットワークのデコンボルーションレイヤで処理される入力フィーチャマップ及び第１カーネルを前記メモリから獲得し、
前記第１カーネルそれぞれを構成する行列成分の配置を調整し、第２カーネルを算出し、
前記第２カーネルそれぞれを分割してサブカーネルを生成し、
コンボルーション演算器を利用し、前記入力フィーチャマップ及び前記サブカーネルのコンボルーション演算を行い、
前記コンボルーション演算の結果をマージすることによって出力フィーチャマップを生成する装置。
【請求項２】
前記プロセッサは、
ストライド値を前記メモリから獲得し、
前記ストライド値に基づいて、前記第２カーネルそれぞれを分割することにより、前記サブカーネルを生成することを特徴とする請求項１に記載の装置。
【請求項３】
前記プロセッサは、
前記第２カーネルそれぞれを、前記ストライド値を二乗した個数のサブカーネルに分割することを特徴とする請求項２に記載の装置。
【請求項４】
前記プロセッサは、
トランスポーズ演算を行い、前記第１カーネルそれぞれを構成する行列成分の配置を調整し、
スプリット演算を行い、前記第２カーネルそれぞれを分割することを特徴とする請求項１ないし３のうちの何れか一項に記載の装置。
【請求項５】
前記プロセッサは、
前記コンボルーション演算器を利用し、コンボルーションレイヤ及びフリーコネクティッドレイヤにおいて、コンボルーション演算を行うことを特徴とする請求項１ないし４のうちの何れか一項に記載の装置。
【請求項６】
前記プロセッサは、
前記サブカーネルそれぞれを、前記入力フィーチャマップに対してシフトし、前記入力フィーチャマップとコンボルーション演算を行うことにより、前記サブカーネルを並列に処理し、
前記並列に処理された結果をマージすることにより、出力フィーチャマップを生成することを特徴とする請求項１ないし５のうちの何れか一項に記載の装置。
【請求項７】
ニューラルネットワークにおいてデコンボルーション演算を実行する装置において、
少なくとも１つのプログラムが保存されたメモリと、
前記少なくとも１つのプログラムを実行することにより、演算を実行するプロセッサと、を含み、
前記プロセッサは、
前記ニューラルネットワークのデコンボルーションレイヤで処理される入力フィーチャマップ及びサブカーネルを前記メモリから獲得し、
コンボルーション演算器を利用し、前記入力フィーチャマップと前記サブカーネルとのコンボルーション演算を行い、
前記コンボルーション演算の結果をマージすることにより、出力フィーチャマップを生成し、
前記メモリから獲得された前記サブカーネルは、初期カーネルそれぞれを構成する行列成分の配置が調整された後、前記調整された初期カーネルが分割されることによって生成されるものである、装置。
【請求項８】
前記初期カーネルそれぞれに対して分割された前記サブカーネルの個数は、前記メモリに保存されたストライド値に基づいて決定されることを特徴とする請求項７に記載の装置。
【請求項９】
前記サブカーネルの個数は、前記ストライド値を二乗した数であることを特徴とする請求項８に記載の装置。
【請求項１０】
前記サブカーネルは、
トランスポーズ演算が行われ、前記初期カーネルそれぞれを構成する行列成分の配置が調整された後、スプリット演算が行われ、前記調整された初期カーネルが分割されることによって生成されることを特徴とする請求項７ないし９のうちの何れか一項に記載の装置。
【請求項１１】
前記プロセッサは、
前記コンボルーション演算器を利用し、コンボルーションレイヤ及びフリーコネクティッドレイヤにおいて、コンボルーション演算を行うことを特徴とする請求項７ないし１０のうちの何れか一項に記載の装置。
【請求項１２】
前記プロセッサは、
前記サブカーネルそれぞれを、前記入力フィーチャマップに対してシフトし、前記入力フィーチャマップとコンボルーション演算を行うことにより、前記サブカーネルを並列に処理し、
前記並列に処理された結果をマージすることにより、出力フィーチャマップを求めることを特徴とする請求項７ないし１１のうちの何れか一項に記載の装置。
【請求項１３】
ニューラルネットワーク装置でデコンボルーション演算を行う方法において、
ニューラルネットワークのデコンボルーションレイヤで処理される入力フィーチャマップ及び第１カーネルを獲得する段階と、
前記第１カーネルそれぞれを構成する行列成分の配置を調整し、第２カーネルを算出する段階と、
前記第２カーネルそれぞれを分割してサブカーネルを生成する段階と、
コンボルーション演算器を利用し、前記入力フィーチャマップと前記サブカーネルとのコンボルーション演算を行う段階と、
前記コンボルーション演算の結果をマージすることによって出力フィーチャマップを生成する段階と、を含む方法。
【請求項１４】
前記サブカーネルを生成する段階は、
ストライド値に基づいて、前記第２カーネルそれぞれを分割することにより、前記サブカーネルを生成する段階を含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記第２カーネルそれぞれを、前記ストライド値を二乗した個数のサブカーネルに分割することを特徴とする請求項１４に記載の方法。
【請求項１６】
前記第２カーネルを算出する段階は、
トランスポーズ演算を行い、前記第１カーネルそれぞれを構成する行列成分の配置を調整する段階を含み、
前記サブカーネルを生成する段階は、
スプリット演算を行い、前記第２カーネルそれぞれを分割する段階を含むことを特徴とする請求項１３ないし１５のうちの何れか一項に記載の方法。
【請求項１７】
前記方法は、
前記コンボルーション演算器を利用し、コンボルーションレイヤ及びフリーコネクティッドレイヤにおいて、コンボルーション演算を行う段階をさらに含むことを特徴とする請求項１３ないし１６のうちの何れか一項に記載の方法。
【請求項１８】
前記出力フィーチャマップを生成する段階は、
前記サブカーネルそれぞれを、前記入力フィーチャマップに対してシフトし、前記入力フィーチャマップとコンボルーション演算を行うことにより、前記サブカーネルを並列に処理する段階と、
前記並列に処理された結果をマージすることにより、出力フィーチャマップを生成する段階と、を含むことを特徴とする請求項１３ないし１７のうちの何れか一項に記載の方法。
【請求項１９】
請求項１３ないし１８のうちいずれか一項に記載の方法をコンピュータに実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ニューラルネットワークのデコンボルーション演算を行う装置及びその方法に関する。
【背景技術】
【０００２】
ニューラルネットワーク（neural  network）の原理は、生物学的な脳をモデリングしたコンピュータ科学的アーキテクチャ（computational  architecture）を基礎としている。ニューラルネットワーク技術の発展により、多種の電子システムにおいて、ニューラルネットワークを活用し、入力データを分析し、有効な情報を抽出している。
【０００３】
最近では、深層神経網（ＤＮＮ：deep  neural  network）を低電力で効率的に使用するためのハードウェア加速器に対する研究が活発に進められている。ニューラルネットワークを処理する装置は、複雑な入力データに係わる多量の演算を必要とする。
【０００４】
特に、低電力及び低性能で具現されるデバイスにおいて、ニューラルネットワークを利用し、大量の入力データをリアルタイムに分析し、所望の情報を抽出するためには、ニューラルネットワークに係わる演算を効率的に処理することができる技術が要求される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第２０１７／０２０００９４号明細書
【特許文献２】米国特許第９５４７８２１号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明が解決しようとする課題は、ニューラルネットワークのデコンボルーション演算を行う装置及びその方法を提供するところにある。また、前記方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体を提供するところにある。解決しようとする技術的課題は、前述のような技術的課題に限定されず、他の技術的課題が存在しうる。
【課題を解決するための手段】
【０００７】
前述の技術的課題を達成するための技術的手段として、本開示の第１側面は、少なくとも１つのプログラムが保存されたメモリと、前記少なくとも１つのプログラムを実行することにより、ニューラルネットワークを駆動するプロセッサと、を含み、前記プロセッサは、前記ニューラルネットワークのデコンボルーションレイヤで処理される、入力フィーチャマップ（feature  map）及び第１カーネル（kernel）を前記メモリから獲得し、前記第１カーネルそれぞれを構成する行列成分の配置を調整して第２カーネルを算出し、前記第２カーネルそれぞれを分割してサブカーネルを生成し、コンボルーション演算器を利用し、前記入力フィーチャマップと前記サブカーネルとのコンボルーション演算を行い、前記コンボルーション演算の結果をマージすることによって出力フィーチャマップを生成する、デコンボルーション演算を行うニューラルネットワーク装置を提供することができる。
【０００８】
また、本開示の第２側面は、少なくとも１つのプログラムが保存されたメモリと、前記少なくとも１つのプログラムを実行することにより、ニューラルネットワークを駆動するプロセッサと、を含み、前記プロセッサは、前記ニューラルネットワークのデコンボルーションレイヤで処理される、入力フィーチャマップ及びサブカーネルを前記メモリから獲得し、コンボルーション演算器を利用し、前記入力フィーチャマップと前記サブカーネルとのコンボルーション演算を行い、前記コンボルーション演算の結果をマージすることによって出力フィーチャマップを生成し、前記メモリから獲得された前記サブカーネルは、初期カーネルそれぞれを構成する行列成分の配置が調整された後、前記調整された初期カーネルが分割されることによって生成されるものである、デコンボルーション演算を行うニューラルネットワーク装置を提供することができる。
【０００９】
また、本開示の第３側面は、ニューラルネットワークのデコンボルーションレイヤで処理される、入力フィーチャマップ及び第１カーネルを獲得する段階と、前記第１カーネルそれぞれを構成する行列成分の配置を調整して第２カーネルを算出する段階と、前記第２カーネルそれぞれを分割してサブカーネルを生成する段階と、コンボルーション演算器を利用し、前記入力フィーチャマップと前記サブカーネルとのコンボルーション演算を行う段階と、前記コンボルーション演算の結果をマージすることによって出力フィーチャマップを生成する段階と、を含む、ニューラルネットワーク装置でデコンボルーション演算を行う方法を提供することができる。
【００１０】
また、本開示の第４側面は、第３側面の方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】一実施形態によるニューラルネットワークのアーキテクチャについて説明するための図面である。
【図２】一実施形態によるニューラルネットワークにおいて、入力フィーチャマップ及び出力フィーチャマップの関係について説明するための図面である。
【図３】一実施形態による、コンボルーションネットワーク及びデコンボルーションネットワークのアーキテクチャについて説明するための図面である。
【図４】一実施形態による、コンボルーション演算及びデコンボルーション演算について説明するための図面である。
【図５】一実施形態によるコンボルーション演算器を利用し、デコンボルーション演算を行う方式について説明するための図面である。
【図６】一実施形態による、デコンボルーションレイヤで行われるトランスポーズ演算及びスピリット演算の例示について説明するための図面である。
【図７】一実施形態による、デコンボルーションレイヤにおいて、コンボルーション演算を行う例示について説明するための図面である。
【図８】一実施形態による、デコンボルーションレイヤにおいて、サブカーネル別に並列にコンボルーション演算を行う例示について説明するための図面である。
【図９】一実施形態によるニューラルネットワーク装置のハードウェア構成を図示したブロック図である。
【図１０】一実施形態による、ニューラルネットワーク装置において、デコンボルーション演算を行う方法のフローチャートである。
【発明を実施するための形態】
【００１２】
本明細書において、多様なところに登場する「一部実施形態において」または「一実施形態において」というような語句は、必ずしもいずれも同一実施形態を示すものではない。
【００１３】
本開示の一部実施形態は、機能的なブロック構成、及び多様な処理段階で示される。そのような機能ブロックの一部または全部は、特定機能を遂行する多様な個数のハードウェア構成及び／またはソフトウェア構成によっても具現される。例えば、本開示の機能ブロックは、１以上のマイクロプロセッサによっても具現されたり、所定機能のための回路構成によっても具現されたりもする。また、例えば、本開示の機能ブロックは、多様なプログラミング言語またはスクリプティング言語によっても具現される。該機能ブロックは、１以上のプロセッサで実行されるアルゴリズムによっても具現される。また、本開示は、電子的な環境設定、信号処理及び／またはデータ処理などのために、従来技術を採用することができる。「メカニズム」、「要素」、「手段」及び「構成」のような用語は、汎用され、機械的であって物理的な構成として限定されるものではない。
【００１４】
また、図面に図示された構成要素間の連結線または連結部材は、機能的な連結、及び／または物理的または回路的な連結を例示的に示しただけである。実際の装置においては、代替可能であったり追加されたりする多様な機能的な連結、物理的な連結、または回路連結によって構成要素間の連結が示される。
【００１５】
以下、添付された図面を参照し、本開示について詳細に説明する。
【００１６】
図１は、一実施形態によるニューラルネットワークのアーキテクチャについて説明するための図面である。図１を参照すれば、ニューラルネットワーク１は、ディープニューラルネットワーク（ＤＮＮ：deep  neural  network）またはｎ階層ニューラルネットワーク（n-layers  neural  networks）のアーキテクチャでもある。ＤＮＮまたはｎ階層ニューラルネットワークは、コンボルーションニューラルネットワーク（ＣＮＮ：convolutional  neural  networks）、リカレントニューラルネットワーク（ＲＮＮ：recurrent  neural  networks）、Deep  Belief  Networks、Restricted  Boltzman  Machinesなどにも該当する。例えば、ニューラルネットワーク１は、コンボルーションニューラルネットワーク（ＣＮＮ）によっても具現されるが、それに制限されるものではない。図１においては、ニューラルネットワーク１の例示に該当するコンボルーションニューラルネットワークにおいては、コンボルーションレイヤ以外にも、サブサンプリングレイヤ（subsampling  layer（またはプーリングレイヤ（pooling  layer））、フリーコネクティッド（fully  connected）レイヤなどがさらに含まれてもよい。
【００１７】
ニューラルネットワーク１は、入力イメージ、フィーチャマップ（feature  maps）及び出力を含む複数レイヤを有するアーキテクチャによっても具現される。ニューラルネットワーク１において、入力イメージは、カーネル（kernel）と呼ばれるフィルタとのコンボルーション演算が行われ、その結果、フィーチャマップが出力される。そのときに生成された出力フィーチャマップは、入力フィーチャマップとして、さらにカーネルとのコンボルーション演算が行われ、新たなフィーチャマップが出力される。そのようなコンボルーション演算が反復的に行われた結果、最終的には、ニューラルネットワーク１を介した入力イメージの特徴に係わる認識結果が出力される。
【００１８】
例えば、図１のニューラルネットワーク１に、２４ｘ２４ピクセルサイズのイメージが入力された場合、該入力イメージは、カーネルとのコンボルーション演算を介して、２０ｘ２０サイズを有する４チャネルのフィーチャマップとしても出力される。また、サブサンプリング過程を介して、２０ｘ２０サイズを有する４チャネルのフィーチャマップのピクセル値のうち一部だけが利用され、１０ｘ１０サイズを有する４チャネルのフィーチャマップが出力される。サブサンプリング方式としては、最大プーリング（max-pooling）、平均プーリング（average-pooling）などの方式などが適用される。
【００１９】
その後にも、１０ｘ１０フィーチャマップは、カーネルとの反復的なコンボルーション演算及びサブサンプリング演算を介して大きさが小さくなりながら、最終的には、グローバル（global）な特徴が出力される。ニューラルネットワーク１は、多くのレイヤにおいて、コンボルーション演算及びサブサンプリング（または、プーリング）演算を反復的に行うことにより、入力イメージからイメージ全体を代表することができる強靭な特徴をフィルタリングして出力し、出力されたグローバルな特徴がフリーコネクティッドレイヤに入力されることにより、最終的に入力イメージに係わる認識結果を導出することができる。
【００２０】
図２は、一実施形態によるニューラルネットワークにおいて、入力フィーチャマップ及び出力フィーチャマップの関係について説明するための図面である。
【００２１】
図２を参照すれば、ニューラルネットワークの１レイヤ２において、第１フィーチャマップＦＭ１は、入力フィーチャマップに該当し、第２フィーチャマップＦＭ２は、出力フィーチャマップに該当する。該フィーチャマップは、入力データの多様な特徴が表現されたデータセットを意味する。フィーチャマップＦＭ１，ＦＭ２は、二次元マトリックスのエレメントを有するか、あるいは三次元マトリックスのエレメントを有することができ、それぞれのエレメントには、ピクセル値が定義される。フィーチャマップＦＭ１，ＦＭ２は、幅Ｗ（または、カラムともいう）、高さＨ（または、ロウという）及び深さＤを有する。そのとき、深さＤは、チャネルの個数に該当する。
【００２２】
第１フィーチャマップＦＭ１及びカーネルに対するコンボルーション演算が行われ、その結果、第２フィーチャマップＦＭ２が生成される。該カーネルは、各エレメントに定義されたウェートであり、第１フィーチャマップＦＭ１とコンボルーション演算を行うことにより、第１フィーチャマップＦＭ１の特徴をフィルタリングする。該カーネルは、第１フィーチャマップＦＭ１をスライディングウィンドウ方式によってシフトしながら、第１フィーチャマップＦＭ１のウィンドウ（または、タイルともいう）とコンボルーション演算を行う。各シフトの間、該カーネルに含まれたウェートそれぞれは、第１フィーチャマップＦＭ１内の重畳されたウィンドウのピクセル値それぞれと乗じられて加えられる。第１フィーチャマップＦＭ１とカーネルとがコンボルーションされることにより、第２フィーチャマップＦＭ２の１つのチャネルが生成される。図１には、１つのカーネルが図示されているが、実際には、複数のカーネルが第１フィーチャマップＦＭ１とそれぞれコンボルーションされ、複数チャネルの第２フィーチャマップＦＭ２が生成される。
【００２３】
一方、第２フィーチャマップＦＭ２は、次のレイヤの入力フィーチャマップに該当する。例えば、第２フィーチャマップＦＭ２は、プーリング（または、サブサンプリング）レイヤの入力フィーチャマップにもなる。
【００２４】
図１及び図２においては、説明の便宜のために、ニューラルネットワーク１の概略的なアーキテクチャについてのみ図示されている。しかし、ニューラルネットワーク１は、図示されているところと異なり、さらに多かったり少なかったりする個数のレイヤ、フィーチャマップ、カーネルなどによっても具現され、その大きさも多様に変形されるということは、当該技術分野の当業者であるならば、理解することができるであろう。
【００２５】
図３は、一実施形態による、コンボルーションネットワーク及びデコンボルーションネットワークのアーキテクチャについて説明するための図面である。
【００２６】
映像中に含まれた制限された数の客体を分類（classification）したり、映像内の客体を認知し、客体を含む領域をバウンディングボックス（bounding  box）で表示したりすることにより、客体を検出（detection）する技術とは異なり、セマンティックセグメンテーション（semantic  segmentation（または、シーンセグメンテーション（scene  segmentation））は、映像に含まれた特定客体の境界を正確に区別する技術である。すなわち、該セマンティックセグメンテーションは、映像に何（what）があるかということを確認する（semantic）だけではなく、どの位置（where）にあるか（location）まで正確に把握する技術である。
【００２７】
該コンボルーションネットワークにおいては、多くの段階のコンボルーションレイヤ、サブサンプリングレイヤ及びフリーコネクティッドレイヤで演算が行われることにより、フィーチャマップの大きさが徐々に小さくなる。それにより、コンボルーションネットワークで生成された出力フィーチャマップでは、入力イメージマップに含まれていた位置情報（または、空間情報）などが失われる。セマンティックセグメンテーションを遂行するために、コンボルーションネットワークで生成された出力フィーチャマップをデコンボルーションネットワークに入力し、フィーチャマップの大きさをさらに大きくすることにより、位置情報のようなディテール情報を再び生かすことができる。
【００２８】
図３を参照すれば、該ニューラルネットワークは、コンボルーションネットワーク３１及びデコンボルーションネットワーク３２で構成され、コンボルーションネットワーク３１及びデコンボルーションネットワーク３２を介して、セマンティックセグメンテーションが遂行される過程が図示される。
【００２９】
コンボルーションネットワーク３１に、１２１６ｘ３５２ピクセルサイズのイメージ３０ａが入力される。コンボルーションネットワーク３１に入力された１２１６ｘ３５２ピクセルサイズのイメージ３０ａは、さまざまな段階のコンボルーションレイヤ、プーリング（または、サブサンプリング）レイヤ及び／またはフリーコネクティッドレイヤを経て、３２倍縮小された３８ｘ１１ピクセルサイズのフィーチャマップとして出力される。コンボルーションネットワーク３１で最終的に出力された３８ｘ１１ピクセルサイズのフィーチャマップを利用し、入力イメージ３０ａの特徴が抽出される。しかし、入力イメージ３０ａに比べ、出力フィーチャマップの大きさが小さくなるようになり、入力イメージ３０ａのマップに含まれた位置情報などが、出力フィーチャマップにおいては、失われてしまう。
【００３０】
コンボルーションネットワーク３１の３８ｘ１１ピクセルサイズの出力フィーチャマップが、デコンボルーションネットワーク３２に入力される。デコンボルーションネットワーク３２に入力された３８ｘ１１ピクセルサイズの入力フィーチャマップは、さまざまな段階のデコンボルーションレイヤ、アンプーリング（unpooling）レイヤなどを経て、３２倍拡大された１２１６ｘ３５２ピクセルサイズの出力フィーチャマップ３０ｂとしても出力される。デコンボルーションネットワーク３２において最終的に生成された出力フィーチャマップ３０ｂは、入力イメージ３０ａとピクセルサイズが同じであり、出力フィーチャマップ３０ｂには、入力イメージ３０ａの位置情報が含まれる。従って、出力フィーチャマップ３０ｂを利用し、セマンティックセグメンテーションを遂行することができる。
【００３１】
図４は、一実施形態による、コンボルーション演算及びデコンボルーション演算について説明するための図面である。図４を参照すれば、コンボルーション演算は、次のように行われる。ウェート値を含む行列形態のカーネル（または、フィルタ）が、入力フィーチャマップをスライディングウィンドウ方式によってシフトしながら、入力フィーチャマップのウィンドウとコンボルーション演算が行われる。具体的には、コンボルーション演算過程において、入力フィーチャマップとカーネルとの要素別乗算（element-wise  multiplication）演算が行われた後、要素別乗算結果の加算演算が行われる。入力フィーチャマップとカーネルとのコンボルーション演算が行われた結果、出力フィーチャマップが生成される。
【００３２】
デコンボルーション演算過程においては、入力フィーチャマップとカーネルとのスカラー行列乗算（scalar-matrix  multiplication）演算が行われた後、ストライド（stride）間隔ほどシフトされたスカラー行列乗算演算結果間の要素サイズ加算（element-size  summation）演算が行われる。入力フィーチャマップとカーネルとのデコンボルーション演算が行われた結果、出力フィーチャマップが生成される。
【００３３】
一方、コンボルーションネットワーク及びデコンボルーションネットワークを含むニューラルネットワークで行われる演算では、乗算器及び加算器を利用したＭＡＣ（multiply-accumulate）演算が大部分を占め、ＭＡＣ演算遂行に最大の費用（expense）が消耗される。コンボルーションネットワークにおいては、コンボルーション演算器を利用し、ＭＡＣ演算の一種であるコンボルーション演算を行う。しかし、コンボルーション演算のパターンとデコンボルーション演算のパターンとが互いに異なるので、デコンボルーションネットワークにおいては、コンボルーション演算器を利用して演算を行うことができない。
【００３４】
コンボルーションネットワーク及びデコンボルーションネットワークを含むニューラルネットワークを利用し、セマンティックセグメンテーションを遂行する場合、全体ＭＡＣ演算量の半分は、コンボルーションネットワークで発生し、残り半分は、デコンボルーションネットワークで発生する。従って、演算コストを減らすためには、コンボルーション演算器を利用することで、コンボルーション演算だけではなく、デコンボルーション演算をも行うことができる処理方式が要求される。
【００３５】
図５は、一実施形態による、コンボルーション演算器を利用し、デコンボルーション演算を行う方式について説明するための図面である。図５を参照すれば、ニューラルネットワーク装置は、ニューラルネットワークのデコンボルーションレイヤで処理される、入力フィーチャマップ５１０及び第１カーネル５２０（または、初期カーネル）を獲得することができる。例えば、入力フィーチャマップ５１０及び第１カーネル５２０は、４ｘ４サイズを有する行列形態のデータでもある。
【００３６】
ニューラルネットワーク装置は、第１カーネル５２０を構成する行列成分の配置を調整し、第２カーネル５３０を算出することができる。該ニューラルネットワーク装置は、トランスポーズ（transpose）演算を行い、第１カーネル５２０を構成する行列成分の配置を調整することができる。一実施形態において、該ニューラルネットワーク装置は、トランスポーズ演算を行うことにより、第１カーネル５２０を時計回り方向に１８０°ほど回転させることにより、第２カーネル５３０を算出することができる。
【００３７】
該ニューラルネットワーク装置は、第２カーネル５３０を分割し、サブカーネル５４０を生成することができる。該ニューラルネットワーク装置は、スプリット（split）演算を行い、第２カーネル５３０を分割することができる。該ニューラルネットワーク装置は、ストライド値に基づいて、第２カーネル５３０を分割することにより、サブカーネル５４０を生成することができ、一実施形態において、第２カーネル５３０を、ストライド値（例えば、２）を二乗した個数のサブカーネル５４０に分割することができる。
【００３８】
該ニューラルネットワーク装置は、コンボルーション演算器を利用し、入力フィーチャマップ５１０とサブカーネル５４０とのコンボルーション演算を行うことができる。該ニューラルネットワーク装置は、コンボルーション演算器を利用し、コンボルーションレイヤ及びフリーコネクティッドレイヤのコンボルーション演算だけではなく、デコンボルーションレイヤでの演算も行うことができる。
【００３９】
該ニューラルネットワーク装置は、コンボルーション演算の結果をマージすることにより、出力フィーチャマップを生成することができる。デコンボルーションレイヤにおいて、図５に図示された方式によって生成された出力フィーチャマップは、図４のデコンボルーション演算方式によって生成された出力フィーチャマップと同一でもある。
【００４０】
一実施形態において、該ニューラルネットワーク装置は、カーネルの大きさ、ストライド値のようなネットワーク構成情報に基づいて、入力フィーチャマップ及び出力フィーチャマップに、パディング（padding）方式及び／またはクリッピング（clipping）方式を適用することができる。該パディングは、入出力フィーチャマップに、既設定のパラメータ値のダミーデータ（dummy  data）を追加する方法であり、該ダミーデータとしては、「０（zero）」が利用されもする。また、該クリッピングは、パディングの逆過程であり、入出力フィーチャマップにおいて、一定領域を切り捨てる過程である。
【００４１】
一方、トランスポーズ演算及びスプリット演算は、コンパイル段階で行われ、該ニューラルネットワーク装置は、メモリからサブカーネルデータを獲得することができるが、そのとき、該サブカーネルは、初期カーネルそれぞれを構成する行列成分の配置が調整された後、調整された初期カーネルが分割されることによって生成されたものでもある。
【００４２】
図６は、一実施形態による、デコンボルーションレイヤで行われるトランスポーズ演算及びスピリット演算の例示について説明するための図面である。
【００４３】
図６を参照すれば、ニューラルネットワーク装置は、デコンボルーションレイヤで処理される第１カーネル６１０（または、初期カーネル）をメモリから獲得することができる。該ニューラルネットワーク装置は、コンボルーション演算器を利用し、デコンボルーション演算を行うために、第１カーネル６１０を処理することができる。該ニューラルネットワーク装置は、第１カーネル６１０を構成する行列成分の配置を調整し、第２カーネル６２０を算出することができる。一実施形態において、該ニューラルネットワーク装置は、第１カーネル６１０に対してトランスポーズ演算を行い、第２カーネル６２０を算出することができる。
【００４４】
例えば、第１カーネル６１０が、４ｘ４サイズを有する［ａａ  ａｂ  ａｃ  ａｄ；ｂａ  ｂｂ  ｂｃ  ｂｄ；ｃａ  ｃｂ  ｃｃ  ｃｄ；ｄａ  ｄｂ  ｄｃ  ｄｄ］行列である場合、該ニューラルネットワークは、第１カーネル６１０に対してトランスポーズ演算を行うことにより、４ｘ４サイズを有する第２カーネル６２０である［ｄｄ  ｄｃ  ｄｂ  ｄａ；ｃｄ  ｃｃ  ｃｂ  ｃａ；ｂｄ  ｂｃ  ｂｂ  ｂａ；ａｄ  ａｃ  ａｂ  ａａ］行列を算出することができる。すなわち、第２カーネル６２０は、第１カーネル６１０を、時計回り方向に１８０°回転させた行列でもある。しかし、第２カーネル６２０算出方式は、それに制限されるものではない。
【００４５】
また、該ニューラルネットワーク装置は、算出された第２カーネル６２０を分割し、サブカーネル６３１，６３２，６３３，６３４を生成することができる。一実施形態において、ニューラルネットワーク装置は、スプリット演算を行い、第２カーネル６２０を分割することにより、サブカーネル６３１，６３２，６３３，６３４を生成することができる。
【００４６】
例えば、ストライド値が２である場合、該ニューラルネットワーク装置は、第２カーネル６２０の（４，４）成分である「ａａ」を基準点にし、「ａａ」から横方向に２並び離れている（４，２）成分である「ａｃ」をサブカーネル６３１の成分として選択することができる。同様な方式で、ニューラルネットワーク装置は、「ａａ」から縦方向及び対角線方向に２並び離れている（２，４）成分及び（２，２）成分である「ｃａ」及び「ｃｃ」をサブカーネル６３１の成分として選択することができる。すなわち、サブカーネル６３１は、［ｃｃ  ｃａ；ａｃ  ａａ］行列になる。その後、順次に、第２カーネル６２０で選択されていない（４，３），（３，４）及び（３，３）成分である「ａｂ」、「ｂａ」及び「ｂｂ」それぞれを基準点にして、サブカーネル６３２，６３３，６３４を生成することができる。
【００４７】
一方、該ニューラルネットワーク装置は、カーネルの大きさと係わりなく、ストライド値に基づいて、第２カーネル６２０が、いくつのサブカーネルに分割されるかということを決定することができる。一実施形態において、該ニューラルネットワーク装置は、第２カーネル６２０を、ストライド値を二乗した個数のサブカーネルに分割することができる。例えば、図６でのように、ストライド値が２である場合、分割されたサブカーネル６３１，６３２，６３３，６３４の数は、４個（＝２２）になる。
【００４８】
他の実施形態において、ストライド値に基づいて、第２カーネル６２０をサブカーネルに分割する過程において、第２カーネル６２０成分の個数が十分ではないこともある。例えば、該ストライド値が３である場合、分割されたサブカーネルの数は、９個（＝３３）になり、９個のサブカーネルを生成するために必要な成分の個数は、３６個（＝４（行列成分数）ｘ９（サブカーネル数））になる。第２カーネル６２０成分の個数は、１６個であるので、９個のサブカーネルを生成するためには、２０個の成分が不足する。一実施形態において、不足な２０個の成分に所定値を充填することができ、例えば、不足する２０個の成分に「０」を充填することにより、最終的に９個のサブカーネル（３６個成分）を生成することができる。
【００４９】
図７は、一実施形態によるデコンボルーションレイヤにおいて、コンボルーション演算を行う例示について説明するための図面である。図７を参照すれば、該ニューラルネットワーク装置は、デコンボルーションレイヤで処理される第１カーネル及び入力フィーチャマップ７１０を、メモリから獲得することができる。コンボルーション演算のパターンと、デコンボルーション演算のパターンとが互いに異なるので、デコンボルーションレイヤにおいて、コンボルーション演算器を利用するためには、第１カーネルに対する処理が先行されなければならない。
【００５０】
ニューラルネットワーク装置は、第１カーネルに対してトランスポーズ演算を行い、第１カーネルを構成する行列成分の配置を調整することにより、第２カーネル７２０を算出することができる。また、該ニューラルネットワーク装置は、第２カーネル７２０に対してスプリット演算を行い、第２カーネル７２０をサブカーネル７２１，７２２，７２３，７２４に分割することができる。
【００５１】
該ニューラルネットワーク装置は、サブカーネルを、スライディングウィンドウ方式によってシフトしながら、入力フィーチャマップ７１０のウィンドウとコンボルーション演算を行う。該ニューラルネットワーク装置は、１つのウィンドウと、複数のサブカーネルとのコンボルーション演算を行い、次のウィンドウと、複数のカーネルとのコンボルーション演算を行う方式を利用することができる。しかし、コンボルーション演算を行う方式は、それに制限されるものではない。
【００５２】
一実施形態において、該ニューラルネットワーク装置は、入力フィーチャマップ７１０の第１ウィンドウ７１１と第１サブカーネル７２１とのコンボルーション演算を行うことができる。例えば、第１ウィンドウ７１１の成分は、［ＡＡ  ＡＢ；ＢＡ  ＢＢ］であり、第１サブカーネル７２１の成分は［ｃｃ  ｃａ；ａｃ  ａａ］である場合、第１ウィンドウ７１１と第１サブカーネル７２１とのコンボルーション演算を行った結果、「ＡＡｘｃｃ＋ＡＢｘｃａ＋ＢＡｘａｃ＋Ｂｂｘａａ」という値が算出される。また、第１ウィンドウ７１１と第２サブカーネル７２２とのコンボルーション演算を行うことができ、第１ウィンドウ７１１と第２サブカーネル７２２とのコンボルーション演算を行った結果、「ＡＡｘｃｄ＋ＡＢｘｃｂ＋ＢＡｘａｄ＋ＢＢｘａｂ」という値が算出される。該ニューラルネットワーク装置は、そのような方式で、残りサブカーネル７２３，７２４と第１ウィンドウ７１１とのコンボルーション演算を行うことができる。
【００５３】
第１ウィンドウ７１１に対してコンボルーション演算を行った後、該ニューラルネットワーク装置は、スライディングウィンドウ方式により、第２ウィンドウ７１２とサブカーネル７２１，７２２，７２３，７２４とのコンボルーション演算を行うことができる。例えば、第２ウィンドウ７１２と第１サブカーネル７２１とのコンボルーション演算を行った結果、「ＡＢｘｃｃ＋ＡＣｘｃａ＋ＢＢｘａｃ＋ＢＣｘａａ」という値が算出される。
【００５４】
ニューラルネットワーク装置は、入力フィーチャマップ７１０のウィンドウとサブカーネル７２１，７２２，７２３，７２４とのコンボルーション演算を行った結果値をマージすることにより、出力フィーチャマップ７３０を生成することができる。
【００５５】
該ニューラルネットワーク装置は、１つのサブカーネルと、１つのウィンドウとのコンボルーション演算結果を、出力フィーチャマップ７３０の１つの行列成分に対応させることにより、コンボルーション結果をマージすることができる。
【００５６】
一実施形態において、第１サブカーネル７２１ないし第４サブカーネル７２４、及び１つのウィンドウに対するコンボルーション演算を行えば、４個の値が算出される。該ニューラルネットワーク装置は、算出された４個の値を利用し、２ｘ２行列を形成した後、形成された２ｘ２行列を、出力フィーチャマップ７３０の行列成分に対応させることができる。
【００５７】
例えば、出力フィーチャマップ７３０の（１，１），（１，２），（２，１）及び（２，２）成分は、それぞれ、第１ウィンドウ７１１と、第１サブカーネル７２１ないし第４サブカーネル７２４とのコンボルーション演算結果に対応する。また、出力フィーチャマップ７３０の（１，３），（１，４），（２，３）及び（２，４）成分は、それぞれ、第２ウィンドウ７１２と、第１サブカーネル７２１ないし第４サブカーネル７２４とのコンボルーション演算結果に対応し、出力フィーチャマップ７３０の（３，１），（３，２），（４，１）及び（４，２）成分は、それぞれ、第３ウィンドウ７１３と、第１サブカーネル７２１ないし第４サブカーネル７２４とのコンボルーション演算結果に対応する。しかし、コンボルーション結果をマージする方式は、それらに制限されるものではない。
【００５８】
一実施形態において、生成された出力フィーチャマップ７３０は、次のデコンボルーションレイヤで処理される入力フィーチャマップとして使用される。
【００５９】
図８は、一実施形態による、デコンボルーションレイヤにおいて、サブカーネル別に並列にコンボルーション演算を行う例示について説明するための図面である。図８を参照すれば、ニューラルネットワーク装置は、１つのウィンドウと、複数のサブカーネルとのコンボルーション演算を行う方式の代わりに、入力フィーチャマップ８１０の複数のウィンドウと、１つのサブカーネルとのコンボルーション演算を行う方式を利用することができる。すなわち、該ニューラルネットワーク装置は、サブカーネル別に、入力フィーチャマップ８１０に対してシフトし、入力フィーチャマップ８１０とコンボルーション演算を行うことにより、コンボルーション演算を並列に処理することができる。
【００６０】
一実施形態において、ニューラルネットワーク装置は、第１サブカーネル８２１を入力フィーチャマップ８１０に対してシフトし、入力フィーチャマップ８１０の複数のウィンドウとコンボルーション演算を行うことにより、第１中間フィーチャマップ８３１を生成することができる。同様な方式で、該ニューラルネットワーク装置は、入力フィーチャマップ８１０の複数のウィンドウと、第２サブカーネル８２２ないし第４サブカーネル８２４とのコンボルーション演算を行い、第２中間フィーチャマップ８３２ないし第４中間フィーチャマップ８３４を生成することができる。
【００６１】
例えば、入力フィーチャマップ８１０の第１ウィンドウ８１１と第１サブカーネル８２１とのコンボルーション演算を行った結果は、第１中間フィーチャマップ８３１の（１，１）成分に対応し、第２ウィンドウ８１２と第１サブカーネル８２１とのコンボルーション演算を行った結果は、第１中間フィーチャマップ８３１の（１，２）成分に対応する。
【００６２】
また、該ニューラルネットワーク装置は、サブカーネル別に、入力フィーチャマップとのコンボルーション演算を並列に遂行し、中間フィーチャマップ生成することができる。該ニューラルネットワーク装置は、生成された複数の中間フィーチャマップをマージすることにより、出力フィーチャマップ８４０を生成することができる。
【００６３】
一実施形態において、該ニューラルネットワーク装置は、入力フィーチャマップの行列サイズ、及び中間フィーチャマップの個数に基づいて、中間フィーチャマップをマージすることができる。例えば、該ニューラルネットワーク装置は、第１中間フィーチャマップ８３１の行列成分を、出力フィーチャマップ８４０の（２ａ−１，２ｂ−１）成分値として適用することができ、第２中間フィーチャマップ８３２の行列成分を、出力フィーチャマップ８４０の（２ａ−１，２ｂ）成分値として適用することができ、第３中間フィーチャマップ８３３の行列成分を、出力フィーチャマップ８４０の（２ａ，２ｂ−１）成分値として適用することができ、第４中間フィーチャマップ８３４の行列成分を、出力フィーチャマップ８４０の（２ａ，２ｂ）成分値として適用することができる（ここで、１≦ａ≦４（入力フィーチャマップの行数）、１≦ｂ≦４（入力フィーチャマップの列数））。すなわち、第１フィーチャマップ８３１ないし第４中間フィーチャマップ８３４の（１，１）成分は、出力フィーチャマップ８４０の成分８４１に対応し、第１フィーチャマップ８３１ないし第４中間フィーチャマップ８３４の（１，２）成分は、出力フィーチャマップ８４０の成分８４２に対応する。
【００６４】
しかし、並列的コンボルーション演算の結果として生成された中間フィーチャマップをマージする方式は、それらに制限されるものではない。
【００６５】
図９は、一実施形態による、ニューラルネットワーク装置のハードウェア構成を図示したブロック図である。
【００６６】
ニューラルネットワーク装置９０は、ＰＣ（personal  computer）、サーバデバイス、モバイルデバイス、埋め込み（embedded）デバイスのような多種のデバイスによっても具現され、具体的な例として、ニューラルネットワークを利用した音声認識、映像認識、映像分類などを遂行するスマートフォン、タブレットデバイス、ＡＲ（augmented  reality）デバイス、ＩｏＴ（Internet  of  Things）デバイス、自律走行自動車、ロボティックス、医療機器などに該当するが、それらに制限されるものではない。さらに、ニューラルネットワーク装置９０は、前述のようなデバイスに搭載される専用ハードウェア加速器（ＨＷ  accelerator）に該当し、ニューラルネットワーク装置９０は、ニューラルネットワーク駆動のための専用モジュールであるＮＰＵ（neural  processing  unit）、ＴＰＵ（tensor  processing  unit）、Neural  Engineのようなハードウェア加速器でもあるが、それらに制限されるものではない。
【００６７】
図９を参照すれば、ニューラルネットワーク装置９０は、プロセッサ９１０及びメモリ９２０を含む。図９に図示されたニューラルネットワーク装置９０には、本実施形態と係わる構成要素だけが図示されている。従って、ニューラルネットワーク装置９０には、図９に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、当該技術分野の当業者に自明であろう。
【００６８】
プロセッサ９１０は、ニューラルネットワーク装置９０を実行するための全般的な機能を制御する役割を行う。例えば、プロセッサ９１０は、ニューラルネットワーク装置９０内のメモリ９２０に保存されたプログラムを実行することにより、ニューラルネットワーク装置９０を全般的に制御する。プロセッサ９１０は、ニューラルネットワーク装置９０内に具備されたＣＰＵ（central  processing  unit）、ＧＰＵ（graphics  processing  unit）、ＡＰ（application  processor）などによっても具現されるが、それらに制限されるものではない。
【００６９】
メモリ９２０は、ニューラルネットワーク装置９０内で処理される各種データを保存するハードウェアであり、例えば、メモリ９２０は、ニューラルネットワーク装置９０で処理されたデータ及び処理されるデータを保存することができる。また、メモリ９２０は、ニューラルネットワーク装置９０によって駆動されるアプリケーション、ドライバなどを保存することができる。メモリ９２０は、ＤＲＡＭ（dynamic  random  access  memory）・ＳＲＡＭ（static  random  access  memory）のようなＲＡＭ（random  access  memory）、ＲＯＭ（read-only  memory）、ＥＥＰＲＯＭ（electrically  erasable  programmable  read-only  memory）、ＣＤ−ＲＯＭ（compact  disc  read  only  memory）、ブルーレイ（登録商標（Blu-ray））、または他の光学ディスクストレージ、ＨＤＤ（hard  disk  drive）、ＳＳＤ（solid-state  drive）、またはフラッシュメモリを含んでもよい。
【００７０】
プロセッサ９１０は、メモリ９２０からニューラルネットワークデータ、例えば、イメージデータ、フィーチャマップデータ、カーネルデータなどをリード／ライト（read/write）し、リード／ライトされたデータを利用し、ニューラルネットワークを実行する。該ニューラルネットワークが実行されるとき、プロセッサ９１０は、出力フィーチャマップに係わるデータを生成するために、入力フィーチャマップとカーネルとのコンボルーション演算を反復的に遂行する。そのとき、入力フィーチャマップのチャネル数、カーネルのチャネル数、入力フィーチャマップの大きさ、カーネルの大きさ、値の精度（precision）などの多様なファクタに依存してコンボルーション演算の演算量が決定される。図１に図示されたニューラルネットワーク１と異なり、ニューラルネットワーク装置９０で駆動される実際のニューラルネットワークは、さらに複雑なアーキテクチャによっても具現される。それにより、プロセッサ９１０は、数億から数百億に至るほどに非常に多くの演算量（operation  count）のコンボルーション演算を行い、プロセッサ９１０がコンボルーション演算のために、メモリ９２０にアクセスする頻度が共に飛躍的に増加してしまう。そのような演算量負担により、比較的処理性能が低いスマートフォン・タブレット・ウェアラブルデバイスのようなモバイルデバイス、埋め込みデバイスなどでは、ニューラルネットワークの処理が円滑ではない。
【００７１】
一方、該ニューラルネットワークにおいてカーネルは、浮動小数点（floating  point）タイプのウェート、または固定小数点（fixed  point）タイプのウェートを有するか、あるいはバイナリー（binary）・ウェートカーネルまたはターナリー（ternary）・ウェートカーネルに該当する。すなわち、該ニューラルネットワークにおいてカーネルは、ニューラルネットワークの活用目的、デバイスの性能など多様な要因を考慮して多様に定義される。
【００７２】
プロセッサ９１０は、コンボルーションネットワーク及びデコンボルーションネットワークを駆動することができる。該コンボルーションネットワーク及び該デコンボルーションネットワークを含むニューラルネットワークを利用し、セマンティックセグメンテーションを遂行する場合、全体ＭＡＣ演算量の半分は、コンボルーションネットワークで発生し、残り半分は、デコンボルーションネットワークで発生する。従って、演算コストを減らすためには、コンボルーション演算器を利用し、コンボルーション演算だけではなく、デコンボルーション演算を行うことができる処理方式が要求される。
【００７３】
プロセッサ９１０は、コンボルーションネットワークにおいて、コンボルーション演算器を利用し、コンボルーション演算（または、ＭＡＣ演算）を行う。しかし、コンボルーション演算のパターンと、デコンボルーション演算のパターンとが互いに異なるので、デコンボルーションネットワークにおいて、コンボルーション演算器を利用して演算を行うためには、デコンボルーションネットワークで使用されるカーネルに対する処理が先行されなければならない。
【００７４】
プロセッサ９１０は、デコンボルーションレイヤで処理される、イメージデータ、フィーチャマップデータ及び第１カーネル（または、初期カーネル）データを、メモリ９２０から獲得することができる。
【００７５】
一実施形態において、コンボルーション演算器を利用して演算を行うために、プロセッサ９１０は、第１カーネルデータを処理することができる。プロセッサ９１０は、第１カーネルそれぞれを構成する行列成分の配置を調整し、第２カーネルを算出した後、第２カーネルそれぞれを分割してサブカーネルを生成することができる。その後、プロセッサ９１０は、コンボルーション演算器を利用し、フィーチャマップとサブカーネルとのコンボルーション演算を行うことができる。また、プロセッサ９１０は、コンボルーション演算の結果をマージすることにより、出力フィーチャマップを生成することができる。
【００７６】
他の実施形態において、カーネルに対する処理は、コンパイル段階で行われる。すなわち、プロセッサ９１０は、メモリ９２０からサブカーネルデータを獲得することができる。サブカーネルは、初期カーネルそれぞれを構成する行列成分の配置が調整された後、調整された初期カーネルが分割されることによって生成されたものでもある。
【００７７】
図１０は、一実施形態によるニューラルネットワーク装置において、デコンボルーション演算を行う方法のフローチャートである。図１０に図示された、ニューラルネットワーク装置においてデコンボルーション演算を行う方法は、前述の図面で説明された実施形態に係わるので、以下、省略された内容であるとしても、前述の図面で説明された内容は、図１０の方法にも適用される。
【００７８】
図１０を参照すれば、段階１０１０において、ニューラルネットワーク装置は、ニューラルネットワークのデコンボルーションレイヤで処理される、入力フィーチャマップ及び第１カーネルを獲得することができる。
【００７９】
段階１０２０において、該ニューラルネットワーク装置は、第１カーネルそれぞれを構成する行列成分の配置を調整し、第２カーネルを算出することができる。ニューラルネットワーク装置は、トランスポーズ演算を行い、第１カーネルそれぞれを構成する行列成分の配置を調整することができる。
【００８０】
段階１０３０において、該ニューラルネットワーク装置は、第２カーネルそれぞれを分割し、サブカーネルを生成することができる。該ニューラルネットワーク装置は、スプリット演算を行い、第２カーネルそれぞれを分割することができる。
【００８１】
該ニューラルネットワーク装置は、ストライド値に基づいて、第２カーネルそれぞれを分割することにより、サブカーネルを生成することができる。一実施形態において、ニューラルネットワーク装置は、第２カーネルそれぞれを、ストライド値を二乗した個数のサブカーネルに分割することができる。
【００８２】
段階１０４０において、該ニューラルネットワーク装置は、コンボルーション演算器を利用し、入力フィーチャマップとサブカーネルとのコンボルーション演算を行うことができる。該ニューラルネットワーク装置は、コンボルーション演算器を利用し、コンボルーションレイヤ、フリーコネクティッドレイヤ及びデコンボルーションレイヤにおいて、コンボルーション演算を行うことができる。
【００８３】
段階１０５０において、該ニューラルネットワーク装置は、コンボルーション演算の結果をマージすることにより、出力フィーチャマップを生成することができる。
【００８４】
一実施形態において、該ニューラルネットワーク装置は、１つのウィンドウと、複数のサブカーネルとのコンボルーション演算を行い、次のウィンドウと、複数のカーネルとのコンボルーション演算を行う方式で、コンボルーション演算を行うことができる。該ニューラルネットワーク装置は、入力フィーチャマップのウィンドウと、サブカーネルとのコンボルーション演算を行った結果値をマージすることにより、出力フィーチャマップを生成することができる。
【００８５】
他の実施形態において、該ニューラルネットワーク装置は、サブカーネルそれぞれを入力フィーチャマップに対してシフトし、入力フィーチャマップとコンボルーション演算を行うことにより、サブカーネルを並列に処理することができる。また、該ニューラルネットワーク装置は、並列に処理された結果をマージすることにより、出力フィーチャマップを生成することができる。
【００８６】
一方、段階１０２０及び段階１０３０は、コンパイル段階でも遂行される。該ニューラルネットワーク装置は、メモリからサブカーネルデータを獲得することができる。該サブカーネルは、初期カーネルそれぞれを構成する行列成分の配置が調整された後、調整された初期カーネルが分割されることによって生成されたものでもある。
【００８７】
本実施形態は、コンピュータによって実行されるプログラムモジュールのようなコンピュータによって実行可能な命令語を含む記録媒体の形態によっても具現される。コンピュータで読み取り可能な可能媒体は、コンピュータによってアクセスされる任意の可用媒体でもあり、揮発性及び不揮発性の媒体、分離型及び非分離型の媒体をいずれも含む。また、該コンピュータで読み取り可能な媒体は、コンピュータ記録媒体及びコンピュータ通信媒体をいずれも含んでもよい。該コンピュータ記録媒体は、コンピュータで読み取り可能な命令語、データ構造、プログラムモジュール、またはその他データのような情報の保存のための任意の方法または技術によって具現された揮発性及び不揮発性、分離型及び非分離型の媒体をいずれも含む。該通信媒体は、典型的に、コンピュータで読み取り可能な可能命令語、データ構造、プログラムモジュールのような変調されたデータ信号のその他データ、またはその他伝送メカニズムを含み、任意の情報伝達媒体を含む。
【００８８】
また、本明細書において、「部」は、プロセッサまたは回路のようなハードウェア構成（hardware  component）、及び／またはプロセッサのようなハードウェア構成によって実行されるソフトウェア構成（software  component）でもある。
【００８９】
前述の本明細書の説明は、例示のためのものであり、本明細書の内容が属する技術分野の当業者であるならば、本発明の技術的思想や、必須な特徴を変更せずとも、他の具体的な形態で容易に変形が可能であるということを理解することができるであろう。従って、以上で記述した実施形態は、全ての面において例示的なものであり、限定的ではないと理解しなければならない。例えば、単一型と説明されている各構成要素は、分散されて実施されもし、同様に、分散されていると説明されている構成要素も、結合された形態で実施されもする。
【００９０】
本実施形態の範囲は、前述の詳細な説明よりは、特許請求の範囲によって示され、特許請求の範囲の意味及び範囲、並びにその均等概念から導き出される全ての変更、または変形された形態が含まれると解釈されなければならない。
【産業上の利用可能性】
【００９１】
本発明の、ニューラルネットワークのデコンボルーション演算を行う装置及びその方法は、例えば、情報分析関連の技術分野に効果的に適用可能である。
【符号の説明】
【００９２】
１        ニューラルネットワーク
２        ニューラルネットワークのレイヤ
３０ａ    入力イメージ
３０ｂ，７３０，８４０  出力フィーチャマップ
３１      コンボリューションネットワーク
３２      デコンボリューションネットワーク
５１０，７１０，８１０  入力フィーチャマップ
５２０，６１０        第１カーネル
５３０，６２０，７２０  第２カーネル
５４０，６３１，６３２，６３３，６３４  サブカーネル
７２１，８２１  第１サブカーネル
７２２，８２２  第２サブカーネル
７２３，８２３  第３サブカーネル
７２４，８２４  第４サブカーネル
８３１    第１中間フィーチャマップ
８３２    第２中間フィーチャマップ
８３３    第３中間フィーチャマップ
８３４    第４中間フィーチャマップ
９０      ニューラルネットワーク装置
９１０    プロセッサ
９２０    メモリ
【図１】
2019087252.tif 000003
【図２】
2019087252.tif 000004
【図３】
2019087252.tif 000005
【図４】
2019087252.tif 000006
【図５】
2019087252.tif 000007
【図６】
2019087252.tif 000008
【図７】
2019087252.tif 000009
【図８】
2019087252.tif 000010
【図９】
2019087252.tif 000011
【図１０】
2019087252.tif 000012