(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-08-30
(45)【発行日】2022-09-07
(54)【発明の名称】ニューラルネットワークにおいてデコンボルーション演算を実行する装置及びその方法
(51)【国際特許分類】
G06F 17/10 20060101AFI20220831BHJP
G06N 3/02 20060101ALI20220831BHJP
【FI】
G06F17/10 A
G06N3/02
(21)【出願番号】P 2018208043
(22)【出願日】2018-11-05
【審査請求日】2021-04-15
(31)【優先権主張番号】10-2017-0147617
(32)【優先日】2017-11-07
(33)【優先権主張国・地域又は機関】KR
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【氏名又は名称】大貫 進介
(72)【発明者】
【氏名】宋 準 鎬
(72)【発明者】
【氏名】李 世 煥
(72)【発明者】
【氏名】張 準 祐
【審査官】田中 幸雄
(56)【参考文献】
【文献】SHI, Wenzhe et al.,Is the deconvolution layer the same as a convolutional layer?,arXiv,Cornell University,2016年09月22日,pages1-7,https://arxiv.org/abs/1609.07009
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/10
G06N 3/02
(57)【特許請求の範囲】
【請求項1】
ニューラルネットワークにおいてデコンボルーション演算を実行する装置において、
少なくとも1つのプログラムが保存されたメモリと、
前記少なくとも1つのプログラムを実行することにより、演算を実行するプロセッサと、を含み、
前記プロセッサは、
前記ニューラルネットワークのデコンボルーションレイヤで処理される入力フィーチャマップ及び第1カーネルを前記メモリから獲得し、
前記第1カーネルそれぞれを構成する行列成分の配置を調整
するトランスポーズ演算を行うことにより、第2カーネルを
生成し、
前記第2カーネルそれぞれを分割
するスプリット演算を行うことにより、サブカーネルを生成し、
コンボルーション演算器を利用し、前記入力フィーチャマップ及び前記サブカーネルのコンボルーション演算を行い、
前記コンボルーション演算の結果をマージすることによって出力フィーチャマップを生成する装置。
【請求項2】
前記プロセッサは、
ストライド値を前記メモリから獲得し、
前記ストライド値に基づいて、前記第2カーネルそれぞれを分割することにより、前記サブカーネルを生成することを特徴とする請求項1に記載の装置。
【請求項3】
前記プロセッサは、
前記第2カーネルそれぞれを、前記ストライド値を二乗した個数のサブカーネルに分割することを特徴とする請求項2に記載の装置。
【請求項4】
前記プロセッサは、
前記コンボルーション演算器を利用し、コンボルーションレイヤ及びフリーコネクティッドレイヤにおいて、コンボルーション演算を行うことを特徴とする請求項1ないし
3のうちの何れか一項に記載の装置。
【請求項5】
前記プロセッサは、
前記サブカーネルそれぞれを、前記入力フィーチャマップに対してシフトし、前記入力フィーチャマップとコンボルーション演算を行うことにより、前記サブカーネルを並列に処理し、
前記並列に処理された結果をマージすることにより、出力フィーチャマップを生成することを特徴とする請求項1ないし
4のうちの何れか一項に記載の装置。
【請求項6】
ニューラルネットワークにおいてデコンボルーション演算を実行する装置において、
少なくとも1つのプログラムが保存されたメモリと、
前記少なくとも1つのプログラムを実行することにより、演算を実行するプロセッサと、を含み、
前記プロセッサは、
前記ニューラルネットワークのデコンボルーションレイヤで処理される入力フィーチャマップ及びサブカーネルを前記メモリから獲得し、
コンボルーション演算器を利用し、前記入力フィーチャマップと前記サブカーネルとのコンボルーション演算を行い、
前記コンボルーション演算の結果をマージすることにより、出力フィーチャマップを生成し、
前記メモリから獲得された前記サブカーネルは、
トランスポーズ演算の遂行によって初期カーネルそれぞれを構成する行列成分の配置が調整された後、前記調整された初期カーネルが
スプリット演算の遂行によって分割されることによって生成されるものである、装置。
【請求項7】
前記初期カーネルそれぞれに対して分割された前記サブカーネルの個数は、前記メモリに保存されたストライド値に基づいて決定されることを特徴とする請求項
6に記載の装置。
【請求項8】
前記サブカーネルの個数は、前記ストライド値を二乗した数であることを特徴とする請求項
7に記載の装置。
【請求項9】
前記プロセッサは、
前記コンボルーション演算器を利用し、コンボルーションレイヤ及びフリーコネクティッドレイヤにおいて、コンボルーション演算を行うことを特徴とする請求項
6ないし
8のうちの何れか一項に記載の装置。
【請求項10】
前記プロセッサは、
前記サブカーネルそれぞれを、前記入力フィーチャマップに対してシフトし、前記入力フィーチャマップとコンボルーション演算を行うことにより、前記サブカーネルを並列に処理し、
前記並列に処理された結果をマージすることにより、出力フィーチャマップを求めることを特徴とする請求項
6ないし
9のうちの何れか一項に記載の装置。
【請求項11】
ニューラルネットワーク装置でデコンボルーション演算を行う方法において、
ニューラルネットワークのデコンボルーションレイヤで処理される入力フィーチャマップ及び第1カーネルを獲得する段階と、
前記第1カーネルそれぞれを構成する行列成分の配置を調整
するトランスポーズ演算を行うことにより、第2カーネルを
生成する段階と、
前記第2カーネルそれぞれを分割
するスプリット演算を遂行することにより、サブカーネルを生成する段階と、
コンボルーション演算器を利用し、前記入力フィーチャマップと前記サブカーネルとのコンボルーション演算を行う段階と、
前記コンボルーション演算の結果をマージすることによって出力フィーチャマップを生成する段階と、を含む方法。
【請求項12】
前記サブカーネルを生成する段階は、
ストライド値に基づいて、前記第2カーネルそれぞれを分割することにより、前記サブカーネルを生成する段階を含むことを特徴とする請求項
11に記載の方法。
【請求項13】
前記第2カーネルそれぞれを、前記ストライド値を二乗した個数のサブカーネルに分割することを特徴とする請求項
12に記載の方法。
【請求項14】
前記方法は、
前記コンボルーション演算器を利用し、コンボルーションレイヤ及びフリーコネクティッドレイヤにおいて、コンボルーション演算を行う段階をさらに含むことを特徴とする請求項
11ないし
13のうちの何れか一項に記載の方法。
【請求項15】
前記出力フィーチャマップを生成する段階は、
前記サブカーネルそれぞれを、前記入力フィーチャマップに対してシフトし、前記入力フィーチャマップとコンボルーション演算を行うことにより、前記サブカーネルを並列に処理する段階と、
前記並列に処理された結果をマージすることにより、出力フィーチャマップを生成する段階と、を含むことを特徴とする請求項
11ないし
14のうちの何れか一項に記載の方法。
【請求項16】
請求項
11ないし
15のうちいずれか一項に記載の方法をコンピュータに実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ニューラルネットワークのデコンボルーション演算を行う装置及びその方法に関する。
【背景技術】
【0002】
ニューラルネットワーク(neural network)の原理は、生物学的な脳をモデリングしたコンピュータ科学的アーキテクチャ(computational architecture)を基礎としている。ニューラルネットワーク技術の発展により、多種の電子システムにおいて、ニューラルネットワークを活用し、入力データを分析し、有効な情報を抽出している。
【0003】
最近では、深層神経網(DNN:deep neural network)を低電力で効率的に使用するためのハードウェア加速器に対する研究が活発に進められている。ニューラルネットワークを処理する装置は、複雑な入力データに係わる多量の演算を必要とする。
【0004】
特に、低電力及び低性能で具現されるデバイスにおいて、ニューラルネットワークを利用し、大量の入力データをリアルタイムに分析し、所望の情報を抽出するためには、ニューラルネットワークに係わる演算を効率的に処理することができる技術が要求される。
【先行技術文献】
【特許文献】
【0005】
【文献】米国特許出願公開第2017/0200094号明細書
【文献】米国特許第9547821号明細書
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明が解決しようとする課題は、ニューラルネットワークのデコンボルーション演算を行う装置及びその方法を提供するところにある。また、前記方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体を提供するところにある。解決しようとする技術的課題は、前述のような技術的課題に限定されず、他の技術的課題が存在しうる。
【課題を解決するための手段】
【0007】
前述の技術的課題を達成するための技術的手段として、本開示の第1側面は、少なくとも1つのプログラムが保存されたメモリと、前記少なくとも1つのプログラムを実行することにより、ニューラルネットワークを駆動するプロセッサと、を含み、前記プロセッサは、前記ニューラルネットワークのデコンボルーションレイヤで処理される、入力フィーチャマップ(feature map)及び第1カーネル(kernel)を前記メモリから獲得し、前記第1カーネルそれぞれを構成する行列成分の配置を調整して第2カーネルを算出し、前記第2カーネルそれぞれを分割してサブカーネルを生成し、コンボルーション演算器を利用し、前記入力フィーチャマップと前記サブカーネルとのコンボルーション演算を行い、前記コンボルーション演算の結果をマージすることによって出力フィーチャマップを生成する、デコンボルーション演算を行うニューラルネットワーク装置を提供することができる。
【0008】
また、本開示の第2側面は、少なくとも1つのプログラムが保存されたメモリと、前記少なくとも1つのプログラムを実行することにより、ニューラルネットワークを駆動するプロセッサと、を含み、前記プロセッサは、前記ニューラルネットワークのデコンボルーションレイヤで処理される、入力フィーチャマップ及びサブカーネルを前記メモリから獲得し、コンボルーション演算器を利用し、前記入力フィーチャマップと前記サブカーネルとのコンボルーション演算を行い、前記コンボルーション演算の結果をマージすることによって出力フィーチャマップを生成し、前記メモリから獲得された前記サブカーネルは、初期カーネルそれぞれを構成する行列成分の配置が調整された後、前記調整された初期カーネルが分割されることによって生成されるものである、デコンボルーション演算を行うニューラルネットワーク装置を提供することができる。
【0009】
また、本開示の第3側面は、ニューラルネットワークのデコンボルーションレイヤで処理される、入力フィーチャマップ及び第1カーネルを獲得する段階と、前記第1カーネルそれぞれを構成する行列成分の配置を調整して第2カーネルを算出する段階と、前記第2カーネルそれぞれを分割してサブカーネルを生成する段階と、コンボルーション演算器を利用し、前記入力フィーチャマップと前記サブカーネルとのコンボルーション演算を行う段階と、前記コンボルーション演算の結果をマージすることによって出力フィーチャマップを生成する段階と、を含む、ニューラルネットワーク装置でデコンボルーション演算を行う方法を提供することができる。
【0010】
また、本開示の第4側面は、第3側面の方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体を提供することができる。
【図面の簡単な説明】
【0011】
【
図1】一実施形態によるニューラルネットワークのアーキテクチャについて説明するための図面である。
【
図2】一実施形態によるニューラルネットワークにおいて、入力フィーチャマップ及び出力フィーチャマップの関係について説明するための図面である。
【
図3】一実施形態による、コンボルーションネットワーク及びデコンボルーションネットワークのアーキテクチャについて説明するための図面である。
【
図4】一実施形態による、コンボルーション演算及びデコンボルーション演算について説明するための図面である。
【
図5】一実施形態によるコンボルーション演算器を利用し、デコンボルーション演算を行う方式について説明するための図面である。
【
図6】一実施形態による、デコンボルーションレイヤで行われるトランスポーズ演算及びスピリット演算の例示について説明するための図面である。
【
図7】一実施形態による、デコンボルーションレイヤにおいて、コンボルーション演算を行う例示について説明するための図面である。
【
図8】一実施形態による、デコンボルーションレイヤにおいて、サブカーネル別に並列にコンボルーション演算を行う例示について説明するための図面である。
【
図9】一実施形態によるニューラルネットワーク装置のハードウェア構成を図示したブロック図である。
【
図10】一実施形態による、ニューラルネットワーク装置において、デコンボルーション演算を行う方法のフローチャートである。
【発明を実施するための形態】
【0012】
本明細書において、多様なところに登場する「一部実施形態において」または「一実施形態において」というような語句は、必ずしもいずれも同一実施形態を示すものではない。
【0013】
本開示の一部実施形態は、機能的なブロック構成、及び多様な処理段階で示される。そのような機能ブロックの一部または全部は、特定機能を遂行する多様な個数のハードウェア構成及び/またはソフトウェア構成によっても具現される。例えば、本開示の機能ブロックは、1以上のマイクロプロセッサによっても具現されたり、所定機能のための回路構成によっても具現されたりもする。また、例えば、本開示の機能ブロックは、多様なプログラミング言語またはスクリプティング言語によっても具現される。該機能ブロックは、1以上のプロセッサで実行されるアルゴリズムによっても具現される。また、本開示は、電子的な環境設定、信号処理及び/またはデータ処理などのために、従来技術を採用することができる。「メカニズム」、「要素」、「手段」及び「構成」のような用語は、汎用され、機械的であって物理的な構成として限定されるものではない。
【0014】
また、図面に図示された構成要素間の連結線または連結部材は、機能的な連結、及び/または物理的または回路的な連結を例示的に示しただけである。実際の装置においては、代替可能であったり追加されたりする多様な機能的な連結、物理的な連結、または回路連結によって構成要素間の連結が示される。
【0015】
以下、添付された図面を参照し、本開示について詳細に説明する。
【0016】
図1は、一実施形態によるニューラルネットワークのアーキテクチャについて説明するための図面である。
図1を参照すれば、ニューラルネットワーク1は、ディープニューラルネットワーク(DNN:deep neural network)またはn階層ニューラルネットワーク(n-layers neural networks)のアーキテクチャでもある。DNNまたはn階層ニューラルネットワークは、コンボルーションニューラルネットワーク(CNN:convolutional neural networks)、リカレントニューラルネットワーク(RNN:recurrent neural networks)、Deep Belief Networks、Restricted Boltzman Machinesなどにも該当する。例えば、ニューラルネットワーク1は、コンボルーションニューラルネットワーク(CNN)によっても具現されるが、それに制限されるものではない。
図1においては、ニューラルネットワーク1の例示に該当するコンボルーションニューラルネットワークにおいては、コンボルーションレイヤ以外にも、サブサンプリングレイヤ(subsampling layer(またはプーリングレイヤ(pooling layer))、フリーコネクティッド(fully connected)レイヤなどがさらに含まれてもよい。
【0017】
ニューラルネットワーク1は、入力イメージ、フィーチャマップ(feature maps)及び出力を含む複数レイヤを有するアーキテクチャによっても具現される。ニューラルネットワーク1において、入力イメージは、カーネル(kernel)と呼ばれるフィルタとのコンボルーション演算が行われ、その結果、フィーチャマップが出力される。そのときに生成された出力フィーチャマップは、入力フィーチャマップとして、さらにカーネルとのコンボルーション演算が行われ、新たなフィーチャマップが出力される。そのようなコンボルーション演算が反復的に行われた結果、最終的には、ニューラルネットワーク1を介した入力イメージの特徴に係わる認識結果が出力される。
【0018】
例えば、
図1のニューラルネットワーク1に、24x24ピクセルサイズのイメージが入力された場合、該入力イメージは、カーネルとのコンボルーション演算を介して、20x20サイズを有する4チャネルのフィーチャマップとしても出力される。また、サブサンプリング過程を介して、20x20サイズを有する4チャネルのフィーチャマップのピクセル値のうち一部だけが利用され、10x10サイズを有する4チャネルのフィーチャマップが出力される。サブサンプリング方式としては、最大プーリング(max-pooling)、平均プーリング(average-pooling)などの方式などが適用される。
【0019】
その後にも、10x10フィーチャマップは、カーネルとの反復的なコンボルーション演算及びサブサンプリング演算を介して大きさが小さくなりながら、最終的には、グローバル(global)な特徴が出力される。ニューラルネットワーク1は、多くのレイヤにおいて、コンボルーション演算及びサブサンプリング(または、プーリング)演算を反復的に行うことにより、入力イメージからイメージ全体を代表することができる強靭な特徴をフィルタリングして出力し、出力されたグローバルな特徴がフリーコネクティッドレイヤに入力されることにより、最終的に入力イメージに係わる認識結果を導出することができる。
【0020】
図2は、一実施形態によるニューラルネットワークにおいて、入力フィーチャマップ及び出力フィーチャマップの関係について説明するための図面である。
【0021】
図2を参照すれば、ニューラルネットワークの1レイヤ2において、第1フィーチャマップFM1は、入力フィーチャマップに該当し、第2フィーチャマップFM2は、出力フィーチャマップに該当する。該フィーチャマップは、入力データの多様な特徴が表現されたデータセットを意味する。フィーチャマップFM1,FM2は、二次元マトリックスのエレメントを有するか、あるいは三次元マトリックスのエレメントを有することができ、それぞれのエレメントには、ピクセル値が定義される。フィーチャマップFM1,FM2は、幅W(または、カラムともいう)、高さH(または、ロウという)及び深さDを有する。そのとき、深さDは、チャネルの個数に該当する。
【0022】
第1フィーチャマップFM1及びカーネルに対するコンボルーション演算が行われ、その結果、第2フィーチャマップFM2が生成される。該カーネルは、各エレメントに定義されたウェートであり、第1フィーチャマップFM1とコンボルーション演算を行うことにより、第1フィーチャマップFM1の特徴をフィルタリングする。該カーネルは、第1フィーチャマップFM1をスライディングウィンドウ方式によってシフトしながら、第1フィーチャマップFM1のウィンドウ(または、タイルともいう)とコンボルーション演算を行う。各シフトの間、該カーネルに含まれたウェートそれぞれは、第1フィーチャマップFM1内の重畳されたウィンドウのピクセル値それぞれと乗じられて加えられる。第1フィーチャマップFM1とカーネルとがコンボルーションされることにより、第2フィーチャマップFM2の1つのチャネルが生成される。
図1には、1つのカーネルが図示されているが、実際には、複数のカーネルが第1フィーチャマップFM1とそれぞれコンボルーションされ、複数チャネルの第2フィーチャマップFM2が生成される。
【0023】
一方、第2フィーチャマップFM2は、次のレイヤの入力フィーチャマップに該当する。例えば、第2フィーチャマップFM2は、プーリング(または、サブサンプリング)レイヤの入力フィーチャマップにもなる。
【0024】
図1及び
図2においては、説明の便宜のために、ニューラルネットワーク1の概略的なアーキテクチャについてのみ図示されている。しかし、ニューラルネットワーク1は、図示されているところと異なり、さらに多かったり少なかったりする個数のレイヤ、フィーチャマップ、カーネルなどによっても具現され、その大きさも多様に変形されるということは、当該技術分野の当業者であるならば、理解することができるであろう。
【0025】
図3は、一実施形態による、コンボルーションネットワーク及びデコンボルーションネットワークのアーキテクチャについて説明するための図面である。
【0026】
映像中に含まれた制限された数の客体を分類(classification)したり、映像内の客体を認知し、客体を含む領域をバウンディングボックス(bounding box)で表示したりすることにより、客体を検出(detection)する技術とは異なり、セマンティックセグメンテーション(semantic segmentation(または、シーンセグメンテーション(scene segmentation))は、映像に含まれた特定客体の境界を正確に区別する技術である。すなわち、該セマンティックセグメンテーションは、映像に何(what)があるかということを確認する(semantic)だけではなく、どの位置(where)にあるか(location)まで正確に把握する技術である。
【0027】
該コンボルーションネットワークにおいては、多くの段階のコンボルーションレイヤ、サブサンプリングレイヤ及びフリーコネクティッドレイヤで演算が行われることにより、フィーチャマップの大きさが徐々に小さくなる。それにより、コンボルーションネットワークで生成された出力フィーチャマップでは、入力イメージマップに含まれていた位置情報(または、空間情報)などが失われる。セマンティックセグメンテーションを遂行するために、コンボルーションネットワークで生成された出力フィーチャマップをデコンボルーションネットワークに入力し、フィーチャマップの大きさをさらに大きくすることにより、位置情報のようなディテール情報を再び生かすことができる。
【0028】
図3を参照すれば、該ニューラルネットワークは、コンボルーションネットワーク31及びデコンボルーションネットワーク32で構成され、コンボルーションネットワーク31及びデコンボルーションネットワーク32を介して、セマンティックセグメンテーションが遂行される過程が図示される。
【0029】
コンボルーションネットワーク31に、1216x352ピクセルサイズのイメージ30aが入力される。コンボルーションネットワーク31に入力された1216x352ピクセルサイズのイメージ30aは、さまざまな段階のコンボルーションレイヤ、プーリング(または、サブサンプリング)レイヤ及び/またはフリーコネクティッドレイヤを経て、32倍縮小された38x11ピクセルサイズのフィーチャマップとして出力される。コンボルーションネットワーク31で最終的に出力された38x11ピクセルサイズのフィーチャマップを利用し、入力イメージ30aの特徴が抽出される。しかし、入力イメージ30aに比べ、出力フィーチャマップの大きさが小さくなるようになり、入力イメージ30aのマップに含まれた位置情報などが、出力フィーチャマップにおいては、失われてしまう。
【0030】
コンボルーションネットワーク31の38x11ピクセルサイズの出力フィーチャマップが、デコンボルーションネットワーク32に入力される。デコンボルーションネットワーク32に入力された38x11ピクセルサイズの入力フィーチャマップは、さまざまな段階のデコンボルーションレイヤ、アンプーリング(unpooling)レイヤなどを経て、32倍拡大された1216x352ピクセルサイズの出力フィーチャマップ30bとしても出力される。デコンボルーションネットワーク32において最終的に生成された出力フィーチャマップ30bは、入力イメージ30aとピクセルサイズが同じであり、出力フィーチャマップ30bには、入力イメージ30aの位置情報が含まれる。従って、出力フィーチャマップ30bを利用し、セマンティックセグメンテーションを遂行することができる。
【0031】
図4は、一実施形態による、コンボルーション演算及びデコンボルーション演算について説明するための図面である。
図4を参照すれば、コンボルーション演算は、次のように行われる。ウェート値を含む行列形態のカーネル(または、フィルタ)が、入力フィーチャマップをスライディングウィンドウ方式によってシフトしながら、入力フィーチャマップのウィンドウとコンボルーション演算が行われる。具体的には、コンボルーション演算過程において、入力フィーチャマップとカーネルとの要素別乗算(element-wise multiplication)演算が行われた後、要素別乗算結果の加算演算が行われる。入力フィーチャマップとカーネルとのコンボルーション演算が行われた結果、出力フィーチャマップが生成される。
【0032】
デコンボルーション演算過程においては、入力フィーチャマップとカーネルとのスカラー行列乗算(scalar-matrix multiplication)演算が行われた後、ストライド(stride)間隔ほどシフトされたスカラー行列乗算演算結果間の要素サイズ加算(element-size summation)演算が行われる。入力フィーチャマップとカーネルとのデコンボルーション演算が行われた結果、出力フィーチャマップが生成される。
【0033】
一方、コンボルーションネットワーク及びデコンボルーションネットワークを含むニューラルネットワークで行われる演算では、乗算器及び加算器を利用したMAC(multiply-accumulate)演算が大部分を占め、MAC演算遂行に最大の費用(expense)が消耗される。コンボルーションネットワークにおいては、コンボルーション演算器を利用し、MAC演算の一種であるコンボルーション演算を行う。しかし、コンボルーション演算のパターンとデコンボルーション演算のパターンとが互いに異なるので、デコンボルーションネットワークにおいては、コンボルーション演算器を利用して演算を行うことができない。
【0034】
コンボルーションネットワーク及びデコンボルーションネットワークを含むニューラルネットワークを利用し、セマンティックセグメンテーションを遂行する場合、全体MAC演算量の半分は、コンボルーションネットワークで発生し、残り半分は、デコンボルーションネットワークで発生する。従って、演算コストを減らすためには、コンボルーション演算器を利用することで、コンボルーション演算だけではなく、デコンボルーション演算をも行うことができる処理方式が要求される。
【0035】
図5は、一実施形態による、コンボルーション演算器を利用し、デコンボルーション演算を行う方式について説明するための図面である。
図5を参照すれば、ニューラルネットワーク装置は、ニューラルネットワークのデコンボルーションレイヤで処理される、入力フィーチャマップ510及び第1カーネル520(または、初期カーネル)を獲得することができる。例えば、入力フィーチャマップ510及び第1カーネル520は、4x4サイズを有する行列形態のデータでもある。
【0036】
ニューラルネットワーク装置は、第1カーネル520を構成する行列成分の配置を調整し、第2カーネル530を算出することができる。該ニューラルネットワーク装置は、トランスポーズ(transpose)演算を行い、第1カーネル520を構成する行列成分の配置を調整することができる。一実施形態において、該ニューラルネットワーク装置は、トランスポーズ演算を行うことにより、第1カーネル520を時計回り方向に180°ほど回転させることにより、第2カーネル530を算出することができる。
【0037】
該ニューラルネットワーク装置は、第2カーネル530を分割し、サブカーネル540を生成することができる。該ニューラルネットワーク装置は、スプリット(split)演算を行い、第2カーネル530を分割することができる。該ニューラルネットワーク装置は、ストライド値に基づいて、第2カーネル530を分割することにより、サブカーネル540を生成することができ、一実施形態において、第2カーネル530を、ストライド値(例えば、2)を二乗した個数のサブカーネル540に分割することができる。
【0038】
該ニューラルネットワーク装置は、コンボルーション演算器を利用し、入力フィーチャマップ510とサブカーネル540とのコンボルーション演算を行うことができる。該ニューラルネットワーク装置は、コンボルーション演算器を利用し、コンボルーションレイヤ及びフリーコネクティッドレイヤのコンボルーション演算だけではなく、デコンボルーションレイヤでの演算も行うことができる。
【0039】
該ニューラルネットワーク装置は、コンボルーション演算の結果をマージすることにより、出力フィーチャマップを生成することができる。デコンボルーションレイヤにおいて、
図5に図示された方式によって生成された出力フィーチャマップは、
図4のデコンボルーション演算方式によって生成された出力フィーチャマップと同一でもある。
【0040】
一実施形態において、該ニューラルネットワーク装置は、カーネルの大きさ、ストライド値のようなネットワーク構成情報に基づいて、入力フィーチャマップ及び出力フィーチャマップに、パディング(padding)方式及び/またはクリッピング(clipping)方式を適用することができる。該パディングは、入出力フィーチャマップに、既設定のパラメータ値のダミーデータ(dummy data)を追加する方法であり、該ダミーデータとしては、「0(zero)」が利用されもする。また、該クリッピングは、パディングの逆過程であり、入出力フィーチャマップにおいて、一定領域を切り捨てる過程である。
【0041】
一方、トランスポーズ演算及びスプリット演算は、コンパイル段階で行われ、該ニューラルネットワーク装置は、メモリからサブカーネルデータを獲得することができるが、そのとき、該サブカーネルは、初期カーネルそれぞれを構成する行列成分の配置が調整された後、調整された初期カーネルが分割されることによって生成されたものでもある。
【0042】
図6は、一実施形態による、デコンボルーションレイヤで行われるトランスポーズ演算及びスピリット演算の例示について説明するための図面である。
【0043】
図6を参照すれば、ニューラルネットワーク装置は、デコンボルーションレイヤで処理される第1カーネル610(または、初期カーネル)をメモリから獲得することができる。該ニューラルネットワーク装置は、コンボルーション演算器を利用し、デコンボルーション演算を行うために、第1カーネル610を処理することができる。該ニューラルネットワーク装置は、第1カーネル610を構成する行列成分の配置を調整し、第2カーネル620を算出することができる。一実施形態において、該ニューラルネットワーク装置は、第1カーネル610に対してトランスポーズ演算を行い、第2カーネル620を算出することができる。
【0044】
例えば、第1カーネル610が、4x4サイズを有する[aa ab ac ad;ba bb bc bd;ca cb cc cd;da db dc dd]行列である場合、該ニューラルネットワークは、第1カーネル610に対してトランスポーズ演算を行うことにより、4x4サイズを有する第2カーネル620である[dd dc db da;cd cc cb ca;bd bc bb ba;ad ac ab aa]行列を算出することができる。すなわち、第2カーネル620は、第1カーネル610を、時計回り方向に180°回転させた行列でもある。しかし、第2カーネル620算出方式は、それに制限されるものではない。
【0045】
また、該ニューラルネットワーク装置は、算出された第2カーネル620を分割し、サブカーネル631,632,633,634を生成することができる。一実施形態において、ニューラルネットワーク装置は、スプリット演算を行い、第2カーネル620を分割することにより、サブカーネル631,632,633,634を生成することができる。
【0046】
例えば、ストライド値が2である場合、該ニューラルネットワーク装置は、第2カーネル620の(4,4)成分である「aa」を基準点にし、「aa」から横方向に2並び離れている(4,2)成分である「ac」をサブカーネル631の成分として選択することができる。同様な方式で、ニューラルネットワーク装置は、「aa」から縦方向及び対角線方向に2並び離れている(2,4)成分及び(2,2)成分である「ca」及び「cc」をサブカーネル631の成分として選択することができる。すなわち、サブカーネル631は、[cc ca;ac aa]行列になる。その後、順次に、第2カーネル620で選択されていない(4,3),(3,4)及び(3,3)成分である「ab」、「ba」及び「bb」それぞれを基準点にして、サブカーネル632,633,634を生成することができる。
【0047】
一方、該ニューラルネットワーク装置は、カーネルの大きさと係わりなく、ストライド値に基づいて、第2カーネル620が、いくつのサブカーネルに分割されるかということを決定することができる。一実施形態において、該ニューラルネットワーク装置は、第2カーネル620を、ストライド値を二乗した個数のサブカーネルに分割することができる。例えば、
図6でのように、ストライド値が2である場合、分割されたサブカーネル631,632,633,634の数は、4個(=2
2)になる。
【0048】
他の実施形態において、ストライド値に基づいて、第2カーネル620をサブカーネルに分割する過程において、第2カーネル620成分の個数が十分ではないこともある。例えば、該ストライド値が3である場合、分割されたサブカーネルの数は、9個(=33)になり、9個のサブカーネルを生成するために必要な成分の個数は、36個(=4(行列成分数)x9(サブカーネル数))になる。第2カーネル620成分の個数は、16個であるので、9個のサブカーネルを生成するためには、20個の成分が不足する。一実施形態において、不足な20個の成分に所定値を充填することができ、例えば、不足する20個の成分に「0」を充填することにより、最終的に9個のサブカーネル(36個成分)を生成することができる。
【0049】
図7は、一実施形態によるデコンボルーションレイヤにおいて、コンボルーション演算を行う例示について説明するための図面である。
図7を参照すれば、該ニューラルネットワーク装置は、デコンボルーションレイヤで処理される第1カーネル及び入力フィーチャマップ710を、メモリから獲得することができる。コンボルーション演算のパターンと、デコンボルーション演算のパターンとが互いに異なるので、デコンボルーションレイヤにおいて、コンボルーション演算器を利用するためには、第1カーネルに対する処理が先行されなければならない。
【0050】
ニューラルネットワーク装置は、第1カーネルに対してトランスポーズ演算を行い、第1カーネルを構成する行列成分の配置を調整することにより、第2カーネル720を算出することができる。また、該ニューラルネットワーク装置は、第2カーネル720に対してスプリット演算を行い、第2カーネル720をサブカーネル721,722,723,724に分割することができる。
【0051】
該ニューラルネットワーク装置は、サブカーネルを、スライディングウィンドウ方式によってシフトしながら、入力フィーチャマップ710のウィンドウとコンボルーション演算を行う。該ニューラルネットワーク装置は、1つのウィンドウと、複数のサブカーネルとのコンボルーション演算を行い、次のウィンドウと、複数のカーネルとのコンボルーション演算を行う方式を利用することができる。しかし、コンボルーション演算を行う方式は、それに制限されるものではない。
【0052】
一実施形態において、該ニューラルネットワーク装置は、入力フィーチャマップ710の第1ウィンドウ711と第1サブカーネル721とのコンボルーション演算を行うことができる。例えば、第1ウィンドウ711の成分は、[AA AB;BA BB]であり、第1サブカーネル721の成分は[cc ca;ac aa]である場合、第1ウィンドウ711と第1サブカーネル721とのコンボルーション演算を行った結果、「AAxcc+ABxca+BAxac+Bbxaa」という値が算出される。また、第1ウィンドウ711と第2サブカーネル722とのコンボルーション演算を行うことができ、第1ウィンドウ711と第2サブカーネル722とのコンボルーション演算を行った結果、「AAxcd+ABxcb+BAxad+BBxab」という値が算出される。該ニューラルネットワーク装置は、そのような方式で、残りサブカーネル723,724と第1ウィンドウ711とのコンボルーション演算を行うことができる。
【0053】
第1ウィンドウ711に対してコンボルーション演算を行った後、該ニューラルネットワーク装置は、スライディングウィンドウ方式により、第2ウィンドウ712とサブカーネル721,722,723,724とのコンボルーション演算を行うことができる。例えば、第2ウィンドウ712と第1サブカーネル721とのコンボルーション演算を行った結果、「ABxcc+ACxca+BBxac+BCxaa」という値が算出される。
【0054】
ニューラルネットワーク装置は、入力フィーチャマップ710のウィンドウとサブカーネル721,722,723,724とのコンボルーション演算を行った結果値をマージすることにより、出力フィーチャマップ730を生成することができる。
【0055】
該ニューラルネットワーク装置は、1つのサブカーネルと、1つのウィンドウとのコンボルーション演算結果を、出力フィーチャマップ730の1つの行列成分に対応させることにより、コンボルーション結果をマージすることができる。
【0056】
一実施形態において、第1サブカーネル721ないし第4サブカーネル724、及び1つのウィンドウに対するコンボルーション演算を行えば、4個の値が算出される。該ニューラルネットワーク装置は、算出された4個の値を利用し、2x2行列を形成した後、形成された2x2行列を、出力フィーチャマップ730の行列成分に対応させることができる。
【0057】
例えば、出力フィーチャマップ730の(1,1),(1,2),(2,1)及び(2,2)成分は、それぞれ、第1ウィンドウ711と、第1サブカーネル721ないし第4サブカーネル724とのコンボルーション演算結果に対応する。また、出力フィーチャマップ730の(1,3),(1,4),(2,3)及び(2,4)成分は、それぞれ、第2ウィンドウ712と、第1サブカーネル721ないし第4サブカーネル724とのコンボルーション演算結果に対応し、出力フィーチャマップ730の(3,1),(3,2),(4,1)及び(4,2)成分は、それぞれ、第3ウィンドウ713と、第1サブカーネル721ないし第4サブカーネル724とのコンボルーション演算結果に対応する。しかし、コンボルーション結果をマージする方式は、それらに制限されるものではない。
【0058】
一実施形態において、生成された出力フィーチャマップ730は、次のデコンボルーションレイヤで処理される入力フィーチャマップとして使用される。
【0059】
図8は、一実施形態による、デコンボルーションレイヤにおいて、サブカーネル別に並列にコンボルーション演算を行う例示について説明するための図面である。
図8を参照すれば、ニューラルネットワーク装置は、1つのウィンドウと、複数のサブカーネルとのコンボルーション演算を行う方式の代わりに、入力フィーチャマップ810の複数のウィンドウと、1つのサブカーネルとのコンボルーション演算を行う方式を利用することができる。すなわち、該ニューラルネットワーク装置は、サブカーネル別に、入力フィーチャマップ810に対してシフトし、入力フィーチャマップ810とコンボルーション演算を行うことにより、コンボルーション演算を並列に処理することができる。
【0060】
一実施形態において、ニューラルネットワーク装置は、第1サブカーネル821を入力フィーチャマップ810に対してシフトし、入力フィーチャマップ810の複数のウィンドウとコンボルーション演算を行うことにより、第1中間フィーチャマップ831を生成することができる。同様な方式で、該ニューラルネットワーク装置は、入力フィーチャマップ810の複数のウィンドウと、第2サブカーネル822ないし第4サブカーネル824とのコンボルーション演算を行い、第2中間フィーチャマップ832ないし第4中間フィーチャマップ834を生成することができる。
【0061】
例えば、入力フィーチャマップ810の第1ウィンドウ811と第1サブカーネル821とのコンボルーション演算を行った結果は、第1中間フィーチャマップ831の(1,1)成分に対応し、第2ウィンドウ812と第1サブカーネル821とのコンボルーション演算を行った結果は、第1中間フィーチャマップ831の(1,2)成分に対応する。
【0062】
また、該ニューラルネットワーク装置は、サブカーネル別に、入力フィーチャマップとのコンボルーション演算を並列に遂行し、中間フィーチャマップ生成することができる。該ニューラルネットワーク装置は、生成された複数の中間フィーチャマップをマージすることにより、出力フィーチャマップ840を生成することができる。
【0063】
一実施形態において、該ニューラルネットワーク装置は、入力フィーチャマップの行列サイズ、及び中間フィーチャマップの個数に基づいて、中間フィーチャマップをマージすることができる。例えば、該ニューラルネットワーク装置は、第1中間フィーチャマップ831の行列成分を、出力フィーチャマップ840の(2a-1,2b-1)成分値として適用することができ、第2中間フィーチャマップ832の行列成分を、出力フィーチャマップ840の(2a-1,2b)成分値として適用することができ、第3中間フィーチャマップ833の行列成分を、出力フィーチャマップ840の(2a,2b-1)成分値として適用することができ、第4中間フィーチャマップ834の行列成分を、出力フィーチャマップ840の(2a,2b)成分値として適用することができる(ここで、1≦a≦4(入力フィーチャマップの行数)、1≦b≦4(入力フィーチャマップの列数))。すなわち、第1フィーチャマップ831ないし第4中間フィーチャマップ834の(1,1)成分は、出力フィーチャマップ840の成分841に対応し、第1フィーチャマップ831ないし第4中間フィーチャマップ834の(1,2)成分は、出力フィーチャマップ840の成分842に対応する。
【0064】
しかし、並列的コンボルーション演算の結果として生成された中間フィーチャマップをマージする方式は、それらに制限されるものではない。
【0065】
図9は、一実施形態による、ニューラルネットワーク装置のハードウェア構成を図示したブロック図である。
【0066】
ニューラルネットワーク装置90は、PC(personal computer)、サーバデバイス、モバイルデバイス、埋め込み(embedded)デバイスのような多種のデバイスによっても具現され、具体的な例として、ニューラルネットワークを利用した音声認識、映像認識、映像分類などを遂行するスマートフォン、タブレットデバイス、AR(augmented reality)デバイス、IoT(Internet of Things)デバイス、自律走行自動車、ロボティックス、医療機器などに該当するが、それらに制限されるものではない。さらに、ニューラルネットワーク装置90は、前述のようなデバイスに搭載される専用ハードウェア加速器(HW accelerator)に該当し、ニューラルネットワーク装置90は、ニューラルネットワーク駆動のための専用モジュールであるNPU(neural processing unit)、TPU(tensor processing unit)、Neural Engineのようなハードウェア加速器でもあるが、それらに制限されるものではない。
【0067】
図9を参照すれば、ニューラルネットワーク装置90は、プロセッサ910及びメモリ920を含む。
図9に図示されたニューラルネットワーク装置90には、本実施形態と係わる構成要素だけが図示されている。従って、ニューラルネットワーク装置90には、
図9に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいということは、当該技術分野の当業者に自明であろう。
【0068】
プロセッサ910は、ニューラルネットワーク装置90を実行するための全般的な機能を制御する役割を行う。例えば、プロセッサ910は、ニューラルネットワーク装置90内のメモリ920に保存されたプログラムを実行することにより、ニューラルネットワーク装置90を全般的に制御する。プロセッサ910は、ニューラルネットワーク装置90内に具備されたCPU(central processing unit)、GPU(graphics processing unit)、AP(application processor)などによっても具現されるが、それらに制限されるものではない。
【0069】
メモリ920は、ニューラルネットワーク装置90内で処理される各種データを保存するハードウェアであり、例えば、メモリ920は、ニューラルネットワーク装置90で処理されたデータ及び処理されるデータを保存することができる。また、メモリ920は、ニューラルネットワーク装置90によって駆動されるアプリケーション、ドライバなどを保存することができる。メモリ920は、DRAM(dynamic random access memory)・SRAM(static random access memory)のようなRAM(random access memory)、ROM(read-only memory)、EEPROM(electrically erasable programmable read-only memory)、CD-ROM(compact disc read only memory)、ブルーレイ(登録商標(Blu-ray))、または他の光学ディスクストレージ、HDD(hard disk drive)、SSD(solid-state drive)、またはフラッシュメモリを含んでもよい。
【0070】
プロセッサ910は、メモリ920からニューラルネットワークデータ、例えば、イメージデータ、フィーチャマップデータ、カーネルデータなどをリード/ライト(read/write)し、リード/ライトされたデータを利用し、ニューラルネットワークを実行する。該ニューラルネットワークが実行されるとき、プロセッサ910は、出力フィーチャマップに係わるデータを生成するために、入力フィーチャマップとカーネルとのコンボルーション演算を反復的に遂行する。そのとき、入力フィーチャマップのチャネル数、カーネルのチャネル数、入力フィーチャマップの大きさ、カーネルの大きさ、値の精度(precision)などの多様なファクタに依存してコンボルーション演算の演算量が決定される。
図1に図示されたニューラルネットワーク1と異なり、ニューラルネットワーク装置90で駆動される実際のニューラルネットワークは、さらに複雑なアーキテクチャによっても具現される。それにより、プロセッサ910は、数億から数百億に至るほどに非常に多くの演算量(operation count)のコンボルーション演算を行い、プロセッサ910がコンボルーション演算のために、メモリ920にアクセスする頻度が共に飛躍的に増加してしまう。そのような演算量負担により、比較的処理性能が低いスマートフォン・タブレット・ウェアラブルデバイスのようなモバイルデバイス、埋め込みデバイスなどでは、ニューラルネットワークの処理が円滑ではない。
【0071】
一方、該ニューラルネットワークにおいてカーネルは、浮動小数点(floating point)タイプのウェート、または固定小数点(fixed point)タイプのウェートを有するか、あるいはバイナリー(binary)・ウェートカーネルまたはターナリー(ternary)・ウェートカーネルに該当する。すなわち、該ニューラルネットワークにおいてカーネルは、ニューラルネットワークの活用目的、デバイスの性能など多様な要因を考慮して多様に定義される。
【0072】
プロセッサ910は、コンボルーションネットワーク及びデコンボルーションネットワークを駆動することができる。該コンボルーションネットワーク及び該デコンボルーションネットワークを含むニューラルネットワークを利用し、セマンティックセグメンテーションを遂行する場合、全体MAC演算量の半分は、コンボルーションネットワークで発生し、残り半分は、デコンボルーションネットワークで発生する。従って、演算コストを減らすためには、コンボルーション演算器を利用し、コンボルーション演算だけではなく、デコンボルーション演算を行うことができる処理方式が要求される。
【0073】
プロセッサ910は、コンボルーションネットワークにおいて、コンボルーション演算器を利用し、コンボルーション演算(または、MAC演算)を行う。しかし、コンボルーション演算のパターンと、デコンボルーション演算のパターンとが互いに異なるので、デコンボルーションネットワークにおいて、コンボルーション演算器を利用して演算を行うためには、デコンボルーションネットワークで使用されるカーネルに対する処理が先行されなければならない。
【0074】
プロセッサ910は、デコンボルーションレイヤで処理される、イメージデータ、フィーチャマップデータ及び第1カーネル(または、初期カーネル)データを、メモリ920から獲得することができる。
【0075】
一実施形態において、コンボルーション演算器を利用して演算を行うために、プロセッサ910は、第1カーネルデータを処理することができる。プロセッサ910は、第1カーネルそれぞれを構成する行列成分の配置を調整し、第2カーネルを算出した後、第2カーネルそれぞれを分割してサブカーネルを生成することができる。その後、プロセッサ910は、コンボルーション演算器を利用し、フィーチャマップとサブカーネルとのコンボルーション演算を行うことができる。また、プロセッサ910は、コンボルーション演算の結果をマージすることにより、出力フィーチャマップを生成することができる。
【0076】
他の実施形態において、カーネルに対する処理は、コンパイル段階で行われる。すなわち、プロセッサ910は、メモリ920からサブカーネルデータを獲得することができる。サブカーネルは、初期カーネルそれぞれを構成する行列成分の配置が調整された後、調整された初期カーネルが分割されることによって生成されたものでもある。
【0077】
図10は、一実施形態によるニューラルネットワーク装置において、デコンボルーション演算を行う方法のフローチャートである。
図10に図示された、ニューラルネットワーク装置においてデコンボルーション演算を行う方法は、前述の図面で説明された実施形態に係わるので、以下、省略された内容であるとしても、前述の図面で説明された内容は、
図10の方法にも適用される。
【0078】
図10を参照すれば、段階1010において、ニューラルネットワーク装置は、ニューラルネットワークのデコンボルーションレイヤで処理される、入力フィーチャマップ及び第1カーネルを獲得することができる。
【0079】
段階1020において、該ニューラルネットワーク装置は、第1カーネルそれぞれを構成する行列成分の配置を調整し、第2カーネルを算出することができる。ニューラルネットワーク装置は、トランスポーズ演算を行い、第1カーネルそれぞれを構成する行列成分の配置を調整することができる。
【0080】
段階1030において、該ニューラルネットワーク装置は、第2カーネルそれぞれを分割し、サブカーネルを生成することができる。該ニューラルネットワーク装置は、スプリット演算を行い、第2カーネルそれぞれを分割することができる。
【0081】
該ニューラルネットワーク装置は、ストライド値に基づいて、第2カーネルそれぞれを分割することにより、サブカーネルを生成することができる。一実施形態において、ニューラルネットワーク装置は、第2カーネルそれぞれを、ストライド値を二乗した個数のサブカーネルに分割することができる。
【0082】
段階1040において、該ニューラルネットワーク装置は、コンボルーション演算器を利用し、入力フィーチャマップとサブカーネルとのコンボルーション演算を行うことができる。該ニューラルネットワーク装置は、コンボルーション演算器を利用し、コンボルーションレイヤ、フリーコネクティッドレイヤ及びデコンボルーションレイヤにおいて、コンボルーション演算を行うことができる。
【0083】
段階1050において、該ニューラルネットワーク装置は、コンボルーション演算の結果をマージすることにより、出力フィーチャマップを生成することができる。
【0084】
一実施形態において、該ニューラルネットワーク装置は、1つのウィンドウと、複数のサブカーネルとのコンボルーション演算を行い、次のウィンドウと、複数のカーネルとのコンボルーション演算を行う方式で、コンボルーション演算を行うことができる。該ニューラルネットワーク装置は、入力フィーチャマップのウィンドウと、サブカーネルとのコンボルーション演算を行った結果値をマージすることにより、出力フィーチャマップを生成することができる。
【0085】
他の実施形態において、該ニューラルネットワーク装置は、サブカーネルそれぞれを入力フィーチャマップに対してシフトし、入力フィーチャマップとコンボルーション演算を行うことにより、サブカーネルを並列に処理することができる。また、該ニューラルネットワーク装置は、並列に処理された結果をマージすることにより、出力フィーチャマップを生成することができる。
【0086】
一方、段階1020及び段階1030は、コンパイル段階でも遂行される。該ニューラルネットワーク装置は、メモリからサブカーネルデータを獲得することができる。該サブカーネルは、初期カーネルそれぞれを構成する行列成分の配置が調整された後、調整された初期カーネルが分割されることによって生成されたものでもある。
【0087】
本実施形態は、コンピュータによって実行されるプログラムモジュールのようなコンピュータによって実行可能な命令語を含む記録媒体の形態によっても具現される。コンピュータで読み取り可能な可能媒体は、コンピュータによってアクセスされる任意の可用媒体でもあり、揮発性及び不揮発性の媒体、分離型及び非分離型の媒体をいずれも含む。また、該コンピュータで読み取り可能な媒体は、コンピュータ記録媒体及びコンピュータ通信媒体をいずれも含んでもよい。該コンピュータ記録媒体は、コンピュータで読み取り可能な命令語、データ構造、プログラムモジュール、またはその他データのような情報の保存のための任意の方法または技術によって具現された揮発性及び不揮発性、分離型及び非分離型の媒体をいずれも含む。該通信媒体は、典型的に、コンピュータで読み取り可能な可能命令語、データ構造、プログラムモジュールのような変調されたデータ信号のその他データ、またはその他伝送メカニズムを含み、任意の情報伝達媒体を含む。
【0088】
また、本明細書において、「部」は、プロセッサまたは回路のようなハードウェア構成(hardware component)、及び/またはプロセッサのようなハードウェア構成によって実行されるソフトウェア構成(software component)でもある。
【0089】
前述の本明細書の説明は、例示のためのものであり、本明細書の内容が属する技術分野の当業者であるならば、本発明の技術的思想や、必須な特徴を変更せずとも、他の具体的な形態で容易に変形が可能であるということを理解することができるであろう。従って、以上で記述した実施形態は、全ての面において例示的なものであり、限定的ではないと理解しなければならない。例えば、単一型と説明されている各構成要素は、分散されて実施されもし、同様に、分散されていると説明されている構成要素も、結合された形態で実施されもする。
【0090】
本実施形態の範囲は、前述の詳細な説明よりは、特許請求の範囲によって示され、特許請求の範囲の意味及び範囲、並びにその均等概念から導き出される全ての変更、または変形された形態が含まれると解釈されなければならない。
【産業上の利用可能性】
【0091】
本発明の、ニューラルネットワークのデコンボルーション演算を行う装置及びその方法は、例えば、情報分析関連の技術分野に効果的に適用可能である。
【符号の説明】
【0092】
1 ニューラルネットワーク
2 ニューラルネットワークのレイヤ
30a 入力イメージ
30b,730,840 出力フィーチャマップ
31 コンボリューションネットワーク
32 デコンボリューションネットワーク
510,710,810 入力フィーチャマップ
520,610 第1カーネル
530,620,720 第2カーネル
540,631,632,633,634 サブカーネル
721,821 第1サブカーネル
722,822 第2サブカーネル
723,823 第3サブカーネル
724,824 第4サブカーネル
831 第1中間フィーチャマップ
832 第2中間フィーチャマップ
833 第3中間フィーチャマップ
834 第4中間フィーチャマップ
90 ニューラルネットワーク装置
910 プロセッサ
920 メモリ