(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-25
(45)【発行日】2022-11-02
(54)【発明の名称】ディープ・ニューラル・ネットワークのための圧縮方法、チップ、電子デバイス、および媒体
(51)【国際特許分類】
G06N 3/04 20060101AFI20221026BHJP
G06N 3/08 20060101ALI20221026BHJP
G06T 1/40 20060101ALI20221026BHJP
【FI】
G06N3/04
G06N3/08
G06T1/40
(21)【出願番号】P 2021517260
(86)(22)【出願日】2020-05-12
(86)【国際出願番号】 CN2020089696
(87)【国際公開番号】W WO2020238603
(87)【国際公開日】2020-12-03
【審査請求日】2021-03-25
(31)【優先権主張番号】201910441306.3
(32)【優先日】2019-05-24
(33)【優先権主張国・地域又は機関】CN
【早期審査対象出願】
【前置審査】
(73)【特許権者】
【識別番号】519155675
【氏名又は名称】ネクストヴイピーユー(シャンハイ)カンパニー リミテッド
【氏名又は名称原語表記】NEXTVPU(SHANGHAI)CO.,LTD.
【住所又は居所原語表記】RM501, BLDG 7, #3000 LONGDONG RD, PUDONG NEW DISTRICT, SHANGHAI 201203, P.R. CHINA
(74)【代理人】
【識別番号】100118902
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100106208
【氏名又は名称】宮前 徹
(74)【代理人】
【識別番号】100196508
【氏名又は名称】松尾 淳一
(72)【発明者】
【氏名】チョウ,ジー
(72)【発明者】
【氏名】フェン,シンペン
【審査官】多賀 実
(56)【参考文献】
【文献】米国特許出願公開第2018/0350110(US,A1)
【文献】米国特許出願公開第2018/0189981(US,A1)
【文献】米国特許出願公開第2018/0082181(US,A1)
【文献】国際公開第2019/050771(WO,A1)
【文献】野水 泰之,「JPEG2000最新動向」,画像電子学会誌,画像電子学会,2001年03月25日,第30巻, 第2号,pp.167-175,ISSN 0285-9831
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/10-17/18
G06N 3/02- 3/10
G06T 1/40
G06T 7/00
(57)【特許請求の範囲】
【請求項1】
ディープ・ニューラル・ネットワークのための圧縮方法であって、前記ディープ・ニューラル・ネットワークが複数の層を含み、入力層を除く前記複数の層における少なくとも1つの層の各々に対して、前記方法が、
パラメータ記憶空間から前記層のパラメータを読み出すステップと、
特徴マップ記憶空間から、直前の層によって格納された第1特徴マップを読み出すステップと、
前記読み出したパラメータおよび第1特徴マップに基づいて、第2特徴マップを生成するステップと、
前記第2特徴マップを圧縮して、第3特徴マップを得るステップと、
前記第3特徴マップを前記特徴マップ記憶空間に格納するステップと、
を適用することを含む、方法において
、
前記第2特徴マップに対して実行される圧縮が、損失のある圧縮を含
み、
前記第2特徴マップを圧縮するステップが、前記第2特徴マップに対して非均一量子化を実行するステップであって、前記第2特徴マップの異なる領域が、異なる量子化刻みを有し、
前記第2特徴マップの領域の各々の量子化刻みが、領域の画像の複雑さ、前記第2特徴マップにおける領域の位置、領域の重要度、領域における特異的特徴の存在または不在、および領域における特異的特徴の数の内少なくとも1つに基づいて決定される、
方法。
【請求項2】
請求項1に記載の方法において、この方法が、前記ディープ・ニューラル・ネットワークの訓練プロセスおよび前記ディープ・ニューラル・ネットワークの推論プロセスにおける順方向伝搬フェーズにおいて、使用される、方法。
【請求項3】
請求項1または2に記載の方法において、前記ディープ・ニューラル・ネットワークが、畳み込みニューラル・ネットワークを含み、前記畳み込みニューラル・ネットワークが、複数の畳み込み層を含み、前記方法が、前記複数の畳み込み層の少なくとも1つに対して実行される、方法。
【請求項4】
請求項1~3のいずれか一項に記載の方法において、
前記第1特徴マップが圧縮特徴マップであり、
前記読み出したパラメータおよび第1特徴マップに基づいて第2特徴マップを生成するステップが、
前記第1特徴マップを解凍するステップと、
前記読み出したパラメータおよび解凍した第1特徴マップに基づいて、前記第2特徴マップを生成するステップと、
を含む、方法。
【請求項5】
請求項1~4のいずれか一項に記載の方法において、
前記パラメータ記憶空間から読み出した前記パラメータが圧縮パラメータであり、前記読み出したパラメータおよび第1特徴マップに基づいて第2特徴マップを生成するステップが、
前記読み出したパラメータを解凍するステップと、
前記解凍したパラメータおよび前記第1特徴マップに基づいて、前記第2特徴マップを生成するステップと、
を含む、方法。
【請求項6】
請求項1に記載の方法において、前記第2特徴マップを圧縮するステップが、
前記第2特徴マップを空間ドメインから周波数ドメインに変換するステップと、
変換係数を量子化するステップと、
を含む、方法。
【請求項7】
請求項1に記載の方法において、前記第2特徴マップを圧縮するステップが、更に、
前記第2特徴マップに対して予測コーディングを実行するステップを含み、前記予測コーディングが、内部予測および/または相互予測を含む、方法。
【請求項8】
請求項1に記載の方法において、前記第2特徴マップを圧縮するステップが、前記第2特徴マップの異なる領域を異なる圧縮率で圧縮するステップを含み、前記領域の各々の圧縮率が、当該領域における関心度に依存し、第1関心度の領域の圧縮率が、第2関心度の領域の圧縮率よりも低く、前記第1関心度が、前記第2関心度よりも高い、方法。
【請求項9】
請求項
1~8のいずれか一項に記載の方法において、特異的特徴が、前記ディープ・ニューラル・ネットワークのアプリケーション・シナリオにおいて関心のある特徴を含む、方法。
【請求項10】
請求項
1~9のいずれか一項に記載の方法において、領域における特異的特徴の存在または不在にしたがって領域の各々の量子化刻みを決定するステップが、
前記領域における前記特異的特徴の存在に応答して、第1量子化刻みを前記領域に割り当てるステップと、
前記領域における前記特異的特徴の不在に応答して、第2量子化刻みを前記領域に割り当てるステップと、
を含み、前記第1量子化刻みが、前記第2量子化刻みよりも小さい、方法。
【請求項11】
請求項
1~9のいずれか一項に記載の方法において、前記領域における前記特異的特徴の数にしたがって前記領域の各々の量子化刻みを決定するステップが、
前記領域における前記特異的特徴の数が、予め設定された閾値よりも多いことに応答して、第3量子化刻みを前記領域に割り当てるステップと、
前記領域における前記特異的特徴の数が前記所定の閾値以下であることに応答して、第4量子化刻みを前記領域に割り当てるステップと、
を含み、前記第3量子化刻みが、前記第4量子化刻みよりも小さい、方法。
【請求項12】
請求項1~
11のいずれか一項に記載の方法において、前記ディープ・ニューラル・ネットワークが、物体認識のために、画像および/またはビデオ・データを処理するように構成される、方法。
【請求項13】
チップであって、
パラメータ記憶空間および特徴マップ記憶空間を含むメモリであって、前記パラメータ記憶空間が、ディープ・ニューラル・ネットワークのパラメータを格納するように構成され、前記特徴マップ記憶空間が、前記ディープ・ニューラル・ネットワークの特徴マップを格納するように構成される、メモリと、
前記メモリと協働して、請求項1~
12のいずれか一項に記載の方法を実行するように構成されたディープ・ニューラル・ネットワーク・エンジンと、
を備える、チップ。
【請求項14】
請求項
13に記載のチップにおいて、前記チップが、人工知能ビジョン・チップを含む、チップ。
【請求項15】
電子デバイスであって、
画像および/またはビデオ・データをキャプチャするように構成された撮像センサと、
請求項
13または
14に記載のチップであって、ディープ・ニューラル・ネットワークを使用して、前記キャプチャされた画像および/またはビデオ・データを、物体の認識のために処理するように構成される、チップと、
を含む、電子デバイス。
【請求項16】
電子デバイスであって、
プロセッサと、
プログラムを格納するメモリと、
を含み、前記プログラムが命令を含み、前記プロセッサによって前記命令が実行されると、請求項1~
12のいずれか一項に記載の方法を前記電子デバイスに実行させる、電子デバイス。
【請求項17】
プログラムを格納するコンピュータ読み取り可能記憶媒体であって、前記プログラムが命令を含み、プロセッサによって前記命令が実行されると、請求項1~
12のいずれか一項に記載の方法を前記プロセッサに実行させる、コンピュータ読み取り可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ニューラル・ネットワークに関し、更に特定すれば、ディープ・ニューラル・ネットワークのための圧縮に関する。
【従来技術】
【0002】
ディープ・ニューラル・ネットワーク(DNN)は、人工知能技術の中核である。現在、ディープ・ニューラル・ネットワークは幅広く研究され、関心を集めており、コンピュータ・ビジョン、音声認識、ロボット、自動運転等を含む、人工知能用途の多くの分野において応用されている。
【0003】
ディープ・ニューラル・ネットワークは、入力層、ある数の隠れ層(中間層とも呼ばれる)、および出力層を含む、複数のニューラル・ネットワーク層で構成される。現在のディープ・ニューラル・ネットワークは、通常、数千層までもの非常に多い数の層を有し、各層が多数のノードを含む。したがって、ディープ・ニューラル・ネットワーク全体では、数百万、または数千万ものパラメータを含む場合もあり、非常に大きな記憶空間およびメモリ帯域幅を必要とする。これは、記憶のコストを増大させるだけでなく、ディープ・ニューラル・ネットワークの性能にも影響する。特に、ビデオ監視および自動運転というようなリアル・タイム用途では、ディープ・ニューラル・ネットワークの記憶の問題は、その性能およびハードウェア設計において隘路となりつつある。
【発明の概要】
【課題を解決するための手段】
【0004】
本開示の態様によれば、ディープ・ニューラル・ネットワークのための圧縮方法を提供する。ディープ・ニューラル・ネットワークは、複数の層を含む。この方法は、入力層を除く複数の層における少なくとも1つの層の各々に対して、パラメータ記憶空間から層のパラメータを読み出すステップと、特徴マップ記憶空間から、直前の層によって格納された第1特徴マップを読み出すステップと、読み出したパラメータおよび第1特徴マップに基づいて、第2特徴マップを生成するステップと、第2特徴マップを圧縮して、第3特徴マップを得るステップと、第3特徴マップを特徴マップ記憶空間に格納するステップとを含む。
【0005】
本開示の他の態様によれば、チップを提供する。このチップは、メモリとディープ・ニューラル・ネットワーク・エンジンとを含む。メモリは、パラメータ記憶空間および特徴マップ記憶空間を含み、パラメータ記憶空間が、ディープ・ニューラル・ネットワークのパラメータを格納するように構成され、特徴マップ記憶空間が、ディープ・ニューラル・ネットワークの特徴マップを格納するように構成される。ディープ・ニューラル・ネットワーク・エンジンは、メモリと協働して、本開示による方法を実行するように構成される。
【0006】
本開示の他の態様によれば、電子デバイスを提供する。この電子デバイスは、撮像センサと前述のチップとを含む。撮像センサは、画像および/またはビデオ・データをキャプチャするように構成される。チップは、ディープ・ニューラル・ネットワークを使用して、物体の認識のために、キャプチャされた画像および/またはビデオ・データを処理するように構成される。
【0007】
本開示の他の態様によれば、電子デバイスを提供する。この電子デバイスは、プロセッサと、プログラムを格納するメモリとを含む。プログラムは、命令を含み、プロセッサによって命令が実行されると、本開示による方法を電子デバイスに実行させる。
【0008】
本開示の他の態様によれば、プログラムを格納するコンピュータ読み取り可能記憶媒体を提供する。プログラムは、命令を含み、プロセッサによって命令が実行されると、本開示による方法をプロセッサに実行させる。
【図面の簡単な説明】
【0009】
図面は、実施形態を一例として示し、明細書の一部を形成し、明細書の書面による説明と共に、実施形態の例示的な実施態様(implementation)を説明するために使用される。図示する実施形態は、例示を目的として示されるに過ぎず、特許請求の範囲を限定するのではない。図面全体を通じて、同じ参照番号は同じエレメントを指す。
【
図1】
図1は、本開示の例示的な実施形態によるディープ・ニューラル・ネットワークを示す模式図である。
【
図2】
図2は、本開示の例示的な実施形態による畳み込みニューラル・ネットワーク(CNN:convolutional neural network)を示す模式図である。
【
図3】
図3は、本開示の例示的な実施形態によるディープ・ニューラル・ネットワークのための例示的な圧縮方法を示すフローチャートである。
【
図4】
図4は、本開示の例示的な実施形態による特徴マップの圧縮を示す模式ブロック図である。
【
図5】
図5は、本開示の例示的な実施形態によるディープ・ニューラル・ネットワークの推論プロセスを示す模式図である。
【
図6】
図6は、本開示の例示的実施形態によるディープ・ニューラル・ネットワークの訓練プロセスを示す模式図である。
【
図7】
図7は、本開示の例示的実施形態によるチップを示す模式図である。
【
図8】
図8は、本開示の例示的実施形態による電子デバイスを示す模式図である。
【
図9】
図9は、本開示の例示的実施形態による他の電子デバイスを示す模式図である。
【発明を実施するための形態】
【0010】
本開示において、別段記載がなければ、種々のエレメントについて説明する際に使用される「第1」(first)、「第2」(second)等の用語は、これらのエレメントの位置的関係、時間的関係、重要性の関係のいずれも、限定することを意図するのではなく、単にコンポーネント間で区別することを意図するに過ぎない。ある例では、第1エレメントおよび第2エレメントがエレメントの同じ実例(instance)を指す場合もあり、場合によっては、前後関係の記載に基づいて、第1エレメントおよび第2エレメントが異なる実例を指すこともある。
【0011】
本開示において種々の例の説明に使用する用語は、単に特定の例を説明することを目的とするに過ぎず、限定することを意図しているのではない。エレメントの数が具体的に定められていない場合、コンテキストにおいて特に明示的に示されていないならば、1つ以上のエレメントがあってもよい。更に、本開示において使用する「および/または」という用語は、列挙される項目の内任意のもの、およびそれらの全ての可能な組み合わせも包含するものとする。
【0012】
図1は、例示的なディープ・ニューラル・ネットワークを示す模式図である。ディープ・ニューラル・ネットワークは、入力層および出力層に加えて、少なくとも1つの隠れ層を含むニューラル・ネットワークである。一例として、
図1に示すディープ・ニューラル・ネットワーク100は、入力層110、2つの隠れ層120および130、ならびに出力層140を含む。各層は、数個のノード(ニューロンとも呼ぶ)150を含む。一例として、
図1の入力層110は3つのノードを有し、隠れ層120は4つのノードを有し、隠れ層130は3つのノードを有し、出力層140は2つのノードを有する。尚、
図1はディープ・ニューラル・ネットワークの単純な例に過ぎず、実際のディープ・ニューラル・ネットワークの隠れ層の数、および各層におけるノードの数は、これらの数よりもはるかに多い可能性があることは注記してしかるべきである。
【0013】
入力層110は、写真の画素、オーディオの振幅サンプル、システム・ステータスのディジタル表現等のような、入力データを受け取る。このデータは、隠れ層120に伝搬される。隠れ層120における各ノードは、受け取ったデータを計算し、計算結果を次の隠れ層130に伝搬する。同様に、隠れ層130における各ノードは、受け取ったデータを計算し、計算結果を出力層140に伝搬する。出力層140は、受け取ったデータを処理し、結果、例えば、特定の物体の認識結果を出力する。
【0014】
層間のノードは、全結合または部分結合であってもよい。全結合の場合では、現在の層(例えば、出力層140)におけるいずれのノードも、直前にある層(例えば、隠れ層130)の全てのノードに接続される。部分的結合の場合では、現在の層(例えば、出力層140)における1つ以上のノードが、直前にある層(例えば、隠れ層130)における全てのノードではなく、一部のノードのみに接続されればよい。
図1に示すニューラル・ネットワークでは、全ての層が全結合される。しかしながら、ディープ・ニューラル・ネットワークにおける少なくとも一部の層は、代わりに、部分結合されてもよいことは理解できよう。
【0015】
通常、隠れ層120および130ならびに出力層140における各ノードは、入力データに対して線形または非線形演算を実行する。ノード150が隠れ層130内に位置し、ノード150が4つの入力x1、x2、x3、およびx4と出力yとを有すると仮定すると、
【0016】
【0017】
ここで、wiは、ノード150の入力xiの重み(i=1、2、3、4。あるニューラル・ネットワークでは、重みを接続とも呼ぶ。即ち、隠れ層120における各ノードから隠れ層130におけるノード150への接続が、対応する重みを表すために使用される)であり、bは、ノード150のバイアスであり、関数f()は、ノード150の活性化関数であり、通常、シグモイド関数、双曲線正接(tanh)関数、正規化線形単位(ReLU)関数、または漏洩ReLU関数のような、非線形関数である。尚、バイアスbも活性化関数f()も必要でなく、一部のノードが重みwのみを有するのでもよいことは、理解できよう。
【0018】
ニューラル・ネットワークでは、各ノードの計算に使用される重みwおよびバイアスbは、通常、訓練プロセスにおける連続学習によって得られ、通常、ニューラル・ネットワークのパラメータと呼ばれる。
【0019】
ディープ・ニューラル・ネットワークの層およびノードの数は通常非常に多いので、訓練および推論に必要とされるパラメータの数は膨大となる。例えば、入力データが100×100画素のサイズを有するカラー画像であるとすると、各画素は3つの値R、G、およびBを有するので、入力層は3×104個のノードを有し、各ノードは1つの画素のカラー値を表す。ニューラル・ネットワークの第1隠れ層が1000個のノードを有し、入力層に全結合されると仮定すると、第1隠れ層の計算に必要とされるパラメータ(重みwおよびバイアスb)の数は、3×107+1000となる。層の数が増えるに連れて、パラメータの数もそれに応じて増える。ニューラル・ネットワークの推論プロセスまたは訓練プロセスでは、各層が対応するパラメータをメモリ(DRAM、SRAM、DDR RAM、または他のランダム・アクセス・ソリッド・ステート・メモリのような、種々のランダム・アクセス・メモリまたは揮発性メモリとすればよい、グラフィクス・プロセッサのメモリ等)から読み出す必要、および/または対応するパラメータをメモリに格納する必要があるので、これはメモリの記憶容量およびメモリ帯域幅に大きな負担(pressure)をかけることになる。
【0020】
一般的なディープ・ニューラル・ネットワークは、畳み込みニューラル・ネットワーク(convolutional neural network)であり、その隠れ層は少なくとも1つの畳み込み層を含む。従来のディープ・ニューラル・ネットワークと比較すると、畳み込みニューラル・ネットワークは、画像および音声認識ならびに他の態様において出力する結果に優れ、ネットワークによって必要とされるパラメータの数を減らすことができる。畳み込みニューラル・ネットワークの最も一般的な用途は画像認識である。以下の論述では、一例として、入力データを画像とする。しかしながら、畳み込みニューラル・ネットワークの用途は画像認識に限定されるのではないことは、当業者には当然理解されよう。
【0021】
典型的な畳み込みニューラル・ネットワークでは、入力画像が一連の畳み込み層、随意のプーリング層(pooling layer)、および全結合層を通過した後、対応する認識結果を出力することができる。
図2は、例示的な畳み込みニューラル・ネットワークを示す模式図である。尚、畳み込みニューラル・ネットワークは多くの形態を有し、
図2は単純な例示的な表現に過ぎず、本開示の解決手段はこれに限定されるのではないことは注記してしかるべきである。
【0022】
図2に示すように、畳み込みニューラル・ネットワーク200は入力層210を含むことができる。入力層210は、画像のような入力データを受け取るために使用することができる。随意に、入力層210は、以後の処理をし易くするために、データに対して前処理(例えば、ディミーニング(de-meaning)、正規化、脱相関、ホワイトニング等)を実行する場合もある。一例として、
図2における入力画像は、28×28画素の中間階調画像である。即ち、入力画像のサイズは28×28×1である。各画素は、
図1の入力層110における1つのノードに相当する(equivalent)としてよい。カラー画像が入力される場合、カラー画像は3つのカラー・チャネルR、G、およびBを有するので、カラー画像のサイズは28×28×3となる。
【0023】
図2に示す畳み込みニューラル・ネットワーク200は、更に、2つの畳み込み層220および230も含む。畳み込み層220および230の各々は、入力画像に対して特徴抽出を実行するために、1つ以上の畳み込みカーネル(フィルタとも呼ぶ)を使用することができる。具体的には、各畳み込みカーネルは重み行列であり、画像の特徴を抽出するために、畳み込み層に画像データ入力が畳み込まれる。異なる畳み込みカーネルが、垂直縁、水平縁、曲線、カラー、またはその他の低レベルの特徴、あるいは目、鼻、帽子、またはその他の高レベルの特徴というような、異なる画像の特徴を抽出することができる。これは、通常、畳み込み層における畳み込みカーネルの位置に依存する。このような畳み込み演算の出力を、特徴マップと呼ぶこともできる。入力層210については、その特徴マップは入力画像である。尚、本明細書において言及する「特徴マップ」は、画像に基づいて抽出されるデータにも、畳み込みニューラル・ネットワークにおける畳み込み層の入力および出力データにも限定されないことは注記してしかるべきである。種々のディープ・ニューラル・ネットワークにおける層の全ての入力および出力データを特徴マップと見なすことができる。
【0024】
畳み込み層220は、32個の畳み込みカーネルを有し、各畳み込みカーネルのサイズは5×5×1である。これは、入力データが中間階調画像(深度が1の)である場合である。入力層210の画像がカラー画像である場合、畳み込み層220の各畳み込みカーネルの深度は3となる。即ち、畳み込みカーネルのサイズは5×5×3となる。前述のように、畳み込みカーネルは重み行列であり、畳み込みカーネルに対応する出力特徴マップを得るために、入力画像を畳み込むことができる。更に具体的には、畳み込み層220では、5×5畳み込みカーネルと入力画像における5×5画素ブロックとのドット積を実行して、特徴値を得ることができる。このようなドット積が意味するのは、畳み込みカーネルにおける各重みに、対応する位置における画素を乗算し、次いで総和を実行するということである。加えて、バイアス(あるのであれば)を追加する場合もある。入力画像における5×5画素ブロックの位置は、例えば、左から右に、次いで上から下に、順次交換され(刻みを1と仮定する)、各位置における5×5画素ブロックと1と同じ畳み込みカーネルとのドット積を実行し、24×24特徴値で構成される特徴マップ、即ち、畳み込みカーネルの出力特徴マップを得ることができる。カラー画像の場合、入力画像の深度および畳み込みカーネルの深度は、両方共3である。畳み込みカーネルの各層に入力画像の対応する層が畳み込まれた後、その3つの畳み込み結果に対して算術和(arithmetic summation)を実行することによって、畳み込みカーネルの出力特徴マップを得ることができる。畳み込みカーネル毎に、サイズが24×24の特徴マップを生成することができる。畳み込み層220は32個の畳み込みカーネルを有するので、サイズが24×24の特徴マップが合計32通り生成され、またはサイズが24×24×32の1つの特徴マップが生成される。
【0025】
同様に、畳み込み層230は64個の畳み込みカーネルを有し、各畳み込みカーネルのサイズは3×3×32である。各畳み込みカーネルには、畳み込み層220によって出力された1つの特徴マップが畳み込まれ、22×22の特徴マップを生成する。したがって、畳み込み層230は、サイズが22×22の特徴マップを合計64通り生成するか、またはサイズが22×22×64の1つの特徴マップを生成する。
【0026】
また、畳み込みニューラル・ネットワーク200は、出力層として、全結合層240を含んでもよい。これは
図1における出力層140と同様でよいので、ここでは繰り返さない。
図2では1つの全結合層のみを示すが、複数の全結合層があってもよく、各全結合層が異なる数のノードを有してもよいことは、当業者には当然理解されよう。
【0027】
尚、
図2は畳み込みニューラル・ネットワークの単純な例示に過ぎないことは理解されてしかるべきである。実際の畳み込みニューラル・ネットワークでは、畳み込み層の数は通常それよりも多い。畳み込みカーネルを使用することによって実行される演算は、ドット積に限定されるのではなく、ディジタル信号処理において一般に使用される種々のフィルタリング処理、例えば、ガウス・フィルタ、ラプラス・フィルタ等を使用することによって実行されるもののように、もっと複雑にすることができる。また、各畳み込み層は活性化関数も含むことができる。この活性化関数は、
図1を参照して先に説明した活性化関数f()と同様でよい。特徴マップ毎に、特徴マップの周辺においてゼロ・パディング処理を実行し、入力特徴マップと一致する(consistent with) 二次元サイズの出力特徴マップを作ることもできる。加えて、畳み込み層の間に、随意のプーリング層(図示せず)があってもよく、プーリング層は、画像局所相関の原理を使用して、畳み込み層によって出力された特徴マップをダウンサンプリングして、以降の層の計算量を低減する。
【0028】
畳み込みニューラル・ネットワークのパラメータは、主に、畳み込み層および全結合層における重みであり、更にバイアスも可能である。一般的なディープ・ニューラル・ネットワークにおけるパラメータと同様、これらのパラメータは、訓練済み畳み込みニューラル・ネットワークが得られるまで、訓練と通じて連続的に最適化される。畳み込みニューラル・ネットワークの畳み込み層における異なる画素ブロックが、同じ畳み込みカーネルを共有することができ、従来のディープ・ニューラル・ネットワークと比較すると、畳み込みカーネルのサイズは特徴マップのサイズよりもはるかに小さいので(通常、パラメータ共有および局所知覚と呼ぶ)、畳み込みユーラル・ネットワークはニューラル・ネットワークのパラメータ数を効果的に削減することができる。しかしながら、畳み込みニューラル・ネットワークの層および各層における畳み込みカーネルの数が非常に多いので、畳み込みニューラル・ネットワークのパラメータは、大きな記憶容量およびメモリ帯域幅を占めることに変わりはない。
【0029】
現在、ディープ・ニューラル・ネットワークの記憶の問題を解決するまたは軽減することを意図した研究がいくつか行われている。
1つの発想は、高帯域幅メモリ(HBM)のような、帯域幅がもっと大きいメモリを使用することである。しかし、このやり方はコストが高く、ハードウェアの設計も非常に難しい。
【0030】
他の発想は、ディープ・ニューラル・ネットワークを圧縮することである。1つの圧縮方法は、ニューラル・ネットワークの規模(scale)を変更することである。例えば、ニューラル・ネットワークの層の数または畳み込みカーネルの数を減らす、あるいははニューラル・ネットワークにおける重要でない接続を除去することによって、ニューラル・ネットワークを間引きする(trim)ことができる。または、行列またはテンソル分解の発想を使用して、元のネットワーク・パラメータ行列またはパラメータ・テンソルを、少数のパラメータで構築し直して、ネットワークの記憶オーバーヘッドを低減する。他の圧縮方法は、ニューラル・ネットワークのパラメータ自体を圧縮することである。例えば、64ビット浮動小数点数の代わりに8ビットまたは16ビット整数を使用するというように、低ビット量子化をネットワーク・パラメータに対して実行し、記憶および計算オーバーヘッドを低減することができる。あるいは、例えば、圧縮用ハフマン・コーディングを使用して、損失のない圧縮をパラメータに対して実行してもよい。しかしながら、損失のない圧縮の圧縮率は低く、通常2:1を超えないので、その効果はさほど安定しない。
【0031】
現在のディープ・ニューラル・ネットワークのための圧縮方法の殆どは、ニューラル・ネットワークのパラメータの圧縮を中心に据えることは、学習することができる。しかしながら、本発明者は、ニューラル・ネットワークのパラメータに加えて、特徴マップのアクセスも大きな記憶容量およびメモリ帯域幅を占めることに気が付いた。具体的には、ディープ・ニューラル・ネットワークの推論および訓練プロセスにおいて、各層によって生成された特徴マップを、次の層の読み出しおよび使用のために、メモリ(DRAM、SRAM、DDR RAM、または他のランダム・アクセス・ソリッド・ステート・メモリのような、種々のランダム・アクセス・メモリまたは揮発性メモリ等)に格納する必要がある。入力データが大量である場合(例えば、入力画像の解像度が高い)、特徴マップのアクセスも大量の記憶空間およびメモリ帯域幅を消費し、パラメータのアクセスよりも多いメモリ・リソースさえも消費する。これは、ニューラル・ネットワークの応用に対して、特にニューラル・ネットワークのリアル・タイム用途に対して、大きな課題となる。
【0032】
この目的のため、本開示は、ディープ・ニューラル・ネットワークのために新たな圧縮方法を提案する。この圧縮方法は、既存のニューラル・ネットワーク圧縮技術よりも、ニューラル・ネットワークの大量データのリアル・タイム供給(application)に適している。
【0033】
図3は、本開示の例示的実施形態によるディープ・ニューラル・ネットワークのための例示的な圧縮方法300を示すフローチャートである。方法300は、入力層を除いて、ディープ・ニューラル・ネットワークのいずれの層にでも実行することができる。説明の都合上、説明のための例として、i番目の層を取り上げる。
【0034】
ブロック310において、i番目の層は、計算のためにこの層が必要とするパラメータを、パラメータ記憶空間から読み出す。これらのパラメータは、
図1に関して説明した各ノードが使用する重みwおよびバイアスbのような、ディープ・ニューラル・ネットワークにおける任意のパラメータ、または
図2に関して説明した各畳み込みカーネルの重みおよびバイアスでもよい。
【0035】
実施形態によれば、ブロック310においてパラメータ記憶空間から読み出されるパラメータは、圧縮されたパラメータであってもよい。パラメータ圧縮技法(manner)は、例えば、損失のない圧縮(例えば、ハフマン・コーディング)または損失のある圧縮であってもよい。
【0036】
ブロック320において、i番目の層は、(i-1)番目の層によって格納された第1特徴マップを特徴マップ記憶空間から読み出す。第1特徴マップは、ニューラル・ネットワークの任意の層によって出力されたデータとすることができる。例えば、第1特徴マップは、
図1における入力層110、隠れ層120、または隠れ層130によって出力されたデータ、
図2における入力層210、畳み込み層220、および畳み込み層230によって出力されたデータ、またはプーリング層、全結合層等によって出力されたデータであってもよい。
【0037】
実施形態によれば、第1特徴マップは、圧縮された特徴マップであってもよい。具体的には、i番目の層によって読み出された第1特徴マップが圧縮された特徴マップとなるように、(i-1)番目の層によって生成された特徴マップを圧縮し、特徴マップ記憶空間に格納することができる。他の実施形態によれば、第1特徴マップは、代わりに、圧縮されていない特徴マップであってもよい。例えば、(i-1)番目の層によって生成された特徴マップは圧縮されず、直接特徴マップ記憶空間に格納される。
【0038】
ブロック330において、i番目の層は、読み出したパラメータおよび第1特徴マップに基づいて、第2特徴マップを生成する。実施形態によれば、読み出したパラメータが圧縮されたパラメータである場合、これらのパラメータを解凍し、次いでi番目の層における計算において使用することができる。他の実施形態によれば、読み出した第1特徴マップが圧縮された特徴マップである場合、第1特徴マップを解凍し、次いでi番目の層における計算において使用することができる。(i-1)番目の層の特徴マップおよび対応するパラメータに基づいてi番目の層によって第2特徴マップを生成する例について、
図1に関して行った説明を参照することができる。この場合、各ノード150は、式1を使用してノードの出力を生成することができ、各層において全てのノードの出力を合計した後、このレイヤによって生成される特徴マップを得ることができる。(i-1)番目の層の特徴マップおよび対応するパラメータに基づいてi番目の層によって第2特徴マップを生成する例について、
図2に関して行った説明を参照することができる。この場合、各層の畳み込みカーネルに、直前の層の特徴マップを畳み込み、畳み込みカーネルに対応する特徴マップを生成することができる。層が複数の畳み込みカーネルを有する場合、複数の特徴マップを生成することができ、または複数の特徴マップを組み合わせて1つの高次元(high dimension)特徴マップにすることができる。尚、これらは特徴マップを生成する例に過ぎず、ブロック330における第2特徴マップ生成の実施態様はこれらに限定されるのではないことは理解できよう。
【0039】
ブロック340において、i番目の層は、ブロック330において生成した第2特徴マップを圧縮して、第3特徴マップを得る。第2特徴マップの圧縮は、損失のない圧縮でもよいが、更に好ましくは、損失のある圧縮でもよい。これについては、以下で更に詳しく説明する。
【0040】
実施形態によれば、第2特徴マップを圧縮する前記ステップは、第2特徴マップの異なる領域を異なる圧縮率で圧縮するステップを含み、これらの領域の各々の圧縮率は、その領域おける関心度に依存する。一例では、関心度が高い領域の圧縮率(例えば、第1の関心度)は、関心度が低い領域(例えば、第1の関心度よりも低い第2の関心度)の圧縮率よりも低い。例えば、ニューラル・ネットワークによって処理されるオブジェクトが画像またはビデオであるとき、画像において関心のある領域(即ち、ポートレートのような関心度が高い領域)について、その領域の圧縮および解凍の後に得られる画像が、元の画像との高い類似性を有することが通常望まれ、この理由のために、情報の損失を減らすために、低い圧縮率を使用することができる。また、画像において関心がない領域(即ち、空のような、関心度が低い領域)について、この領域の圧縮および解凍後に得られる画像と元の画像との間における類似性に対する要件を下げることができ、この理由のために、高い圧縮率を使用することができる。類似性測定パラメータは、例えば、ユークリッド距離、ピーク信号対ノイズ比(PSNR:peak signal-to-noise ratio)、構造的類似性評価(SSIM:structural similarity evaluation)等でもよい。
【0041】
ブロック350において、i番目の層は、ブロック340において得られた第3特徴マップを特徴マップ記憶空間に格納する。パラメータ記憶空間および特徴マップ記憶空間は、別々のメモリに配置してもよく、または同じメモリを共有してもよい。一例として、パラメータ記憶空間および特徴マップ記憶空間に使用されるメモリは、DRAM、SRAM、DDR RAM、またはその他のランダム・アクセス・ソリッド・ステート・メモリのような、高速ランダム・アクセス・メモリとするとよい。
【0042】
方法300は、ディープ・ニューラル・ネットワークの推論プロセスおよびディープ・ニューラル・ネットワークの訓練プロセスの双方に適用することができる。これについて、
図5および
図6と関連付けて後に詳しく説明する。
【0043】
方法300を使用することによって、ディープ・ニューラル・ネットワークの少なくとも1つの層によって生成された特徴マップを圧縮し、次いで格納することにより、特徴マップおよびこれらによって占められるメモリ帯域幅に必要とされる記憶空間を大幅に削減することができる。これは、特に、ニューラル・ネットワークのリアル・タイム用途にとって有用である。例えば、ビデオ監視のアプリケーション・シナリオ(application scenario)では、ビデオ画像における物体をリアル・タイムで認識するためにニューラル・ネットワークが使用される場合、大量のビデオ・フレームをリアル・タイムで処理する必要がある。ビデオ・データが高い解像度(例えば、300×300画素よりも高い解像度、またはそれよりも更に高い解像度)を有する場合、これはメモリ帯域幅に対する大きな課題となる。特徴マップを格納する前にこれを圧縮することによって、特徴マップを格納するときおよびメモリから読み出すときに占められるメモリ帯域幅を大幅に削減することができる。これはニューラル・ネットワークのリアル・タイム用途を実現するのに役に立つ。加えて、読み出された圧縮特徴マップは、計算(例えば、畳み込み)のために解凍されるので、方法300はニューラル・ネットワークの推論の精度には殆ど影響を及ぼさない。また、方法300は、ニューラル・ネットワークのパラメータの圧縮および対応するハードウェア設計と組み合わせて、ニューラル・ネットワークの動作を更に加速化し、メモリの電力消費を低減することができる。
【0044】
方法300は、あらゆるディープ・ニューラル・ネットワークに適用することができる。畳み込みニューラル・ネットワークでは、方法300は少なくとも1つの畳み込み層に対して実行することができる。随意に、方法300は、プーリング層および全結合層に対しても、代わりに実行することができる。畳み込みニューラル・ネットワークでは、方法300は、全ての畳み込み層に対して実行することもでき、または選択的に一部の畳み込み層に対して方法300を実行することもできる。通常、入力側に近い畳み込み層によって生成される特徴マップは、出力側に近い畳み込み層によって生成される特徴マップよりも大きく、より多くの記憶空間およびメモリ帯域幅を占める。したがって、好ましくは、入力側に近い1つ以上の畳み込み層に方法300を適用することができる。
【0045】
尚、論理的に必要でなければ、方法300におけるステップの順序は、図示または説明した順序には限定されず、必要に応じて調節することまたは並列に実行することもでき、異なるステップにおける動作を並列にまたは交互に実行できることは注記してしかるべきである。本開示は、これに関して全く限定を強要しない。例えば、ブロック310およびブロック320を逆の順序でまたは並列に実行してもよく、本開示の実施態様には影響を及ぼさない。
【0046】
以下では、一例として、ビデオ・データをニューラル・ネットワークへの入力として取り上げ、特徴マップの圧縮について更に詳しく説明する。特徴マップの圧縮は、(i-1)番目の層、i番目の層のような、ニューラル・ネットワークの任意の層、または
図3に関して説明した全ての層に適用することができる。
【0047】
図4は、本開示の例示的実施形態による特徴マップの圧縮を示す模式ブロック図である。
図4に示すように、ニューラル・ネットワークにおける層によって生成された特徴マップに、予測(ブロック410)、変換(ブロック420)、量子化(ブロック430)、およびエントロピ・コーディング(ブロック440)というような処理(operation)を実行し、特徴マップにおける空間的冗長性、時間的冗長性、およびコーディング冗長性を除去することができる。
図4におけるこれらの処理について、以下で1つずつ説明する。しかしながら、本開示には
図4に示す処理の全てが必要という訳ではなく、必要に応じて特徴マップを圧縮するために、ブロック410から440までの内1つ以上を使用できることは理解できよう。例えば、特徴マップに対して損失のない圧縮を実行する場合、この特徴マップに量子化430を実行しなくてもよく、エントロピ・コーディング440だけをこの特徴マップに実行すればよい。他の例をあげると、特徴マップの圧縮は、変換420、量子化430、およびエントロピ・コーディング440のみを含めばよく、予測410は実行しなくてもよい。
【0048】
ブロック410において、入力された特徴マップに対して予測コーディングを実行する。予測コーディングは、内部予測(intra prediction)および相互予測(inter prediction)の内一方または双方を含むことができる。フレーム内コーディングは、空間的冗長を排除するために使用することができ、フレーム間コーディングは、時間的冗長を排除するために使用することができる。特徴マップを複数のブロックに分割することができ、ブロック毎にコーディングを実行する。一例として、MPEG、H.264、およびH.265のようなビデオ規格に採用されている種々の予測コーディング技法を、ブロック410における特徴マップの予測コーディングに使用することができる。
【0049】
ブロック420において、特徴マップを空間ドメインから周波数ドメインに変換し、信号間における相関を効果的に除去し、エネルギの殆どを低周波数領域に集中させる。この変換の結果に基づいて、高周波数領域における信号を、後続の量子化ステップにおいて破棄することができ、あるいは低周波数領域に小さい量子化刻み、そして高周波数領域には大きな量子化刻みを使用して、高い画質を維持しつつ、高い圧縮率を達成することができる。一例として、離散フーリエ変換(DFT)、離散正弦波変換(DST)、K-L変換、ウェーブレット変換等のような種々の変換技術を使用して、特徴マップを変換することができる。
【0050】
ブロック430において、ブロック420において得られた変換係数を量子化する。量子化において、多数の変換係数を近似的にあらわすために、少数の量子化値を使用することができる。元の変換係数と再現された変換係数との間には差、即ち、歪みがあるので、量子化を使用する特徴マップの圧縮は、損失のある圧縮となる。損失のない圧縮と比較すると、損失のある圧縮の方がアルゴリズムの選択肢が多く、多くの調節可能な圧縮パラメータを有し、圧縮率を制御することによって、異なる要件に適応することができる。本開示の実施形態によれば、損失のある圧縮の使用により、ニューラル・ネットワークの推論精度に対する影響が殆どなく、圧縮率向上を達成することができる。例えば、実施形態によれば、損失のある圧縮の圧縮率が10:1よりも高いとき、ニューラル・ネットワークの推論精度は5%未満しか低下しない。加えて、訓練プロセスにおいて、層の特徴マップに対して損失のある圧縮を実行することは、層のパラメータおよび特徴マップに外乱を追加することと同等であると見なすことができ、訓練が極小値に陥るのを防止することができ、したがってニューラル・ネットワークの推論能力を高めることができる。
【0051】
ブロック440において、ブロック430の量子化結果に対してエントロピ・コーディングを実行し、予測および変換後になおも存在する統計的冗長情報を除去する。一例として、エントロピ・コーディングは、可変長コーディング(VLC)(例えば、ハフマン・コーディング、指数Golombコード(EGC)等)または算術コーディングを使用することができる。
【0052】
以上、特徴マップの圧縮プロセスについて、
図4と関連付けて端的に説明した。尚、これらの説明は、本開示に対する限定ではなく、単に例示的な説明に過ぎないことは、当業者には理解できよう。具体的な実施態様では、特徴マップは、MPEG、H.264、H.265、および他のビデオ規格に基づく圧縮方法、あるいは開発中または今後開発される種々のビデオ圧縮方法というような、種々の知られているビデオ圧縮方法を使用することによって圧縮することができる。これは、本開示において限定されない。
【0053】
本開示の実施形態によれば、特徴マップの圧縮(例えば、
図3のブロック340に示す第2特徴マップの圧縮)は、特徴マップの非均一な量子化を含んでもよい。実施形態によれば、特徴マップの異なる領域に異なる量子化刻み(step)を使用してもよい。各領域の量子化刻みを決定するためには、多くの要因を検討してもよい。
【0054】
実施形態によれば、領域の量子化刻みは、領域の画像の複雑度にしたがって決定されてもよい。例えば、より多くの詳細を保持するために、画像の複雑度が高い領域には小さい量子化刻みを割り当て、画像の複雑度が低い領域には、大きな量子化刻みを割り当てる。一例では、画像の複雑度は、予め設定された閾値によって測定することができる。高い画像の複雑度とは、画像の複雑度がこの予め設定された閾値よりも高いことを意味するのでもよく、低い画像の複雑度は、画像の複雑度がこの予め設定された閾値以下であることを意味するのでもよい。
【0055】
他の実施形態によれば、領域の量子化刻みは、特徴マップにおける領域の位置にしたがって決定されてもよい。たとえば、ビデオ監視の用途では、各ビデオ・カメラによって特別に監視される領域は、画像において比較的固定した位置を有するとして差し支えなく、この位置に対応する特徴マップ領域には、小さな量子化刻みを割り当てるとよい。
【0056】
他の実施形態によれば、領域の量子化刻みは、領域の重要度にしたがって決定されてもよい。例えば、ビデオ画像では、画像における領域の重要度は前もって決定することができ、量子化の間に重要度の順序にしたがって、異なる量子化刻みを割り当てることができる。
【0057】
他の実施形態によれば、領域の量子化刻みは、領域における特異的特徴の存在または不在にしたがって決定されてもよい。特異的特徴は、ニューラル・ネットワークのアプリケーション・シナリオに依存するのでもよい。実施形態によれば、特異的特徴は、アプリケーション・シナリオにおいて関心がある特徴としてもよい。例えば、セキュリティ監視では、特異的特徴は人または個人識別情報(identity)に関する特徴でもよい。交通監視では、特異的特徴は、車両の型番、ナンバー・プレート、信号等に関する特徴でもよい。サッカー試合の生放送では、特異的特徴は、選手、ボール、レフリー、ゴール等に関する特徴でもよい。一例では、特異的特徴が領域内に存在する場合、より多くの詳細を保持するために、小さい量子化刻み(例えば、第1量子化刻み)をその領域に割り当てるとよく、特異的特徴がその領域に存在しない場合、大きな量子化刻み(例えば、第1量子化刻みよりも大きい第2量子化刻み)をその領域に割り当てるとよい。
【0058】
他の実施形態によれば、領域の量子化刻みは、領域における特異的特徴の数にしたがって決定されてもよい。一例では、領域における特異的特徴の数が多い場合(例えば、所定の閾値よりも多い)、より多くの詳細を保持するために、その領域には小さい量子化刻み(例えば、第3量子化刻み)を割り当てるとよく、領域における特異的特徴の数が少ない場合(例えば、所定の閾値以下)、大きな量子化刻み(例えば、第3量子化刻みよりも大きい第4量子化刻み)をその領域に割り当てるとよい。直前の実施形態と同様、特異的特徴は、アプリケーション・シナリオに依存するのでもよく、ここでは繰り返さない。
【0059】
尚、以上で述べたこれらの要因は、個々にまたは組み合わせて検討できることは理解できよう。これは、本開示において限定されない。領域の特性に基づいて、異なる量子化刻みを特徴マップにおける領域に割り当てる。これは、高い圧縮率を達成できるだけでなく、用途にとって重要な特徴マップの詳細をできるだけ多く保持することもでき、これによってニューラル・ネットワークの推論精度を維持する。
【0060】
以下に、
図5および
図6と関連付けて、本開示の例示的な実施形態によるニューラル・ネットワークの推論プロセスおよび訓練プロセスについて説明する。
図5は、本開示の例示的実施形態によるディープ・ニューラル・ネットワークの推論プロセスの模式図である。ニューラル・ネットワークの推論プロセスは、処理されるデータを、訓練済みのニューラル・ネットワークに入力して、推論結果を得るプロセスである。
図5に示すように、ディープ・ニューラル・ネットワークは、入力層532、出力層538、および複数の隠れ層を含む。簡単にするために、
図5は2つの隣接する層、即ち、i番目の層および(i+1)番目の層のみを示す。これらを、それぞれ、参照番号534および536によって示す。また、
図5は、パラメータ記憶空間510、および特徴マップ記憶空間520も示す。推論プロセスにおいて、ニューラル・ネットワークにおける各層は、出力層538が最終的な推論結果を出力するまで、順次入来するデータを処理する。層534および536における処理については、以下で一例をあげて説明する。
【0061】
図5に示すように、i番目の層534は、計算のために層534が必要とするパラメータ512を、パラメータ記憶空間510から読み出す。随意に、パラメータ512が圧縮されている場合、ブロック542においてパラメータ512を解凍する。また、層534は、(i-1)番目の層に格納されている特徴マップ522を、特徴マップ記憶空間520から読み出す。随意に、特徴マップ522が圧縮されている場合、ブロック552において特徴マップ522を解凍する。パラメータ512および特徴マップ522の解凍バージョンに基づいて、層534の特徴マップを生成する。特徴マップを圧縮した後(ブロック554において)、特徴マップ記憶空間520に、層534によって格納された特徴マップ524として、特徴マップを格納する。
【0062】
次に、(i+1)番目の層536は、i番目の層534の動作と同様の動作を実行する。パラメータ514および特徴マップ524を、それぞれ、パラメータ記憶空間510および特徴マップ記憶空間520から読み出し、解凍する(ブロック544および556に示す通り)。次いで、パラメータ514および特徴マップ524の解凍バージョンに基づいて、層536の特徴マップを生成する。特徴マップを圧縮した後(ブロック558において)、特徴マップ記憶空間520に、次の層による使用のために層536によって格納された特徴マップ526として、特徴マップを格納する。
【0063】
類推によって、ニューラル・ネットワークにおける後続の層は、出力層538が最終的な推論結果を出力するまで、以上の動作を順次実行する。尚、
図5は、先に説明したように、各層のパラメータおよび特徴マップの圧縮ならびに解凍について説明するが、このような圧縮および解凍処理(operation)は、ニューラル・ネットワークにおける層の内一部のみにも実行でき、更に、代わりに、圧縮および解凍処理(operation)は、パラメータの代わりに、特徴マップのみにも実行できることは、理解されてしかるべきである。
【0064】
図6は、本開示の例示的実施形態によるディープ・ニューラル・ネットワークの訓練プロセスの模式図である。ニューラル・ネットワークの訓練プロセスは、既知のサンプル集合に基づいて、ニューラル・ネットワークのパラメータを訓練するプロセスである。ニューラル・ネットワークの訓練プロセスは、最終的な出力結果と目標値との間の誤差が所定の閾値未満になるまで連続的に繰り返される。各繰り返しは、通常、2つのフェーズ、即ち、順方向伝搬フェーズ(forward propagation phase)および逆方向伝搬フェーズ(back propagation phase)に分割される。順方向伝搬フェーズは、推論プロセスと同様である。サンプル毎に、各層は順次計算を実行し、最終的な出力値を得る。次に、逆方向伝搬フェーズでは、出力値と目標値との間の誤差を最初に計算する。誤差が所定の閾値よりも大きい場合、逆方向伝搬のために、この誤差を出力層からニューラル・ネットワークに送信し、層の誤差を順次計算し、計算した誤差にしたがって、層のパラメータを更新する。更新したパラメータに基づいて、次の繰り返しの順方向伝搬フェーズを開始する。
【0065】
図6では、明確にするために、破線610を使用して、順方向伝搬フェーズおよび逆方向伝搬フェーズを分離する。
図6の上側部分に示すように、訓練プロセスの順方向伝搬フェーズは、
図5におけるそれと同一であり、ここでは詳細について繰り返さない。
図6の下側部分は、訓練プロセスの逆方向伝搬フェーズを示す。逆方向伝搬フェーズにおいて、順方向伝搬フェーズにおける最終的な出力結果と目標値との間の誤差を、出力層538から入力層532に順次送信する。(i+1)番目の層536は、(i+2)番目の層から受け取った層536の誤差に基づいて、更新パラメータ514を計算し、これをパラメータ記憶空間510に格納する。随意に、更新パラメータを圧縮し(ブロック648において)、次いでパラメータ記憶空間510に格納してもよい。また、層536は、i番目の層534の誤差を計算し、これを層534に逆伝搬する。同様に、層534は、受け取った誤差に基づいて、更新パラメータ512を計算し、これをパラメータ記憶空間510に格納する。随意に、更新パラメータを圧縮し(ブロック646において)、次いでパラメータ記憶空間510に格納してもよい。
図6の左側における大きな矢印によって示すように、逆方向伝搬フェーズが入力層532において終了したとき、全ての層の更新パラメータに基づいて、訓練プロセスは、次の繰り返しの順方向伝搬フェーズを開始する。
【0066】
尚、
図5および
図6は、ニューラル・ネットワークの例示的な推論プロセスおよび訓練プロセスを示すに過ぎないことは、注記してしかるべきである。ニューラル・ネットワークの異なる構造に基づいて、他の対応する推論プロセスおよび訓練プロセスも使用できることは、当業者には理解できよう。
【0067】
図7は、本開示の例示的実施形態によるチップ700を示す模式図である。チップ700は、メモリ710と、ディープ・ニューラル・ネットワーク・エンジン720とを含むことができる。
【0068】
メモリ710は、パラメータ記憶空間および特徴マップ記憶空間を含むことができる。パラメータ記憶空間は、ディープ・ニューラル・ネットワークのパラメータを格納するために使用され、特徴マップ記憶空間は、ディープ・ニューラル・ネットワークの特徴マップを格納するために使用される。実施形態によれば、メモリ710は、DRAM、SRAM、DDR RAM、または他のランダム・アクセス・ソリッド・ステート・メモリのような、種々のランダム・アクセス・メモリまたは揮発性メモリであってもよい。
【0069】
ディープ・ニューラル・ネットワーク・エンジン720は、ディープ・ニューラル・ネットワークを、画像データのような入力データに適用し、画像検出、認識、およびパーティショニング(partitioning)というような処理を実施することができる。ディープ・ニューラル・ネットワーク・エンジン720は、メモリ710と協働して、先に説明した本開示の種々の実施形態における方法を実行することができる。実施形態によれば、ディープ・ニューラル・ネットワーク・エンジン720は、ハードウェアによって実装することができ、例えば、特定用途集積回路(ASIC)によって実装されてもよい。
【0070】
尚、特定の要件にしたがって、ディープ・ニューラル・ネットワーク・エンジン720の実施態様には、種々の変形を行ってもよいことは理解されてしかるべきである。例えば、種々の変形は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはこれらの任意の組み合わせで実装することができる。例えば、ディープ・ニューラル・ネットワーク・エンジン720は、ASICの代わりに、本開示によるロジックおよびアルゴリズムを使用することによって、アセンブリ言語またはハードウェア・プログラミング言語(VERILOG、VHDL、およびC++のような)でハードウェア(例えば、フィールド・プログラマブル・ゲート・アレイ(FPGA)および/またはプログラマブル・ロジック・アレイ(PLA)を含むプログラマブル・ロジック回路)をプログラミングすることによって、実装してもよい。
【0071】
実施形態によれば、チップ700は、人工知能(AI)ビジョン・チップでもよい。加えて、
図7には示されていないが、チップ700は、画像信号(撮像センサによって出力される信号のような)を処理するように構成された画像信号処理(ISP)ユニット、オーディオおよびビデオ信号をエンコードならびにデコードするように構成されたマルチメディア信号コデック等のような、更に他のコンポーネントも含んでもよい。
【0072】
図8は、本開示の例示的実施形態による電子デバイス800を示す模式図である。電子デバイス800は、
図7に示すチップ700と、撮像センサ830とを含むことができる。撮像センサ830は、画像および/またはビデオ・データをキャプチャするように構成することができる。実施形態によれば、電子デバイス800は、ビデオ・カメラ、またはAIビジョン・チップと統合されたカメラでもよい。このような電子デバイス800は、種々のシナリオにおいて使用することができ、例えば、セキュリティ監視における人間の顔または他の特定的な物体の自動検出および認識、自動運転における歩行者、自動車、信号機等のリアル・タイム検出および認識、物体を認識し障害物を回避する際におけるロボットの補助等において使用することができる。
【0073】
図9は、本開示の例示的実施形態による他の電子デバイス900を示す模式図である。電子デバイス900は、処理および/または計算を実行するように構成された任意の機械としてもよく、限定ではないが、ワークステーション、サーバ、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、パーソナル・ディジタル・アシスタント、スマートフォン、内蔵コンピュータ、またはこれらの任意の組み合わせでもよい。本開示の実施形態による前述の方法は、全体的にまたは少なくとも部分的に、電子デバイス900あるいは同様のデバイスまたはシステムによって実行する(implement)ことができる。
【0074】
電子デバイス900は、バス910、1つ以上のプロセッサ920、1つ以上のメモリ930、1つ以上の入力デバイス940、および1つ以上の出力デバイス950を含むことができる。1つ以上のプロセッサ920は、任意の種類のプロセッサでよく、限定ではなく、1つ以上の汎用プロセッサ(中央処理ユニット(CPU)のような)、および/または1つ以上の専用プロセッサ(グラフィクス処理ユニット(GPU)のような)を含むことができる。1つ以上のメモリ930は、不揮発性メモリ(ディスク・ドライブ、光記憶デバイス、ソリッド・ステート・メモリ、フロッピ・ディスク、ハード・ディスク、磁気テープ、およびリード・オンリ・メモリ(ROM)のような)、および/または揮発性メモリ(ランダム・アクセス・メモリ(RAM)およびキャッシュ・メモリのような)を含むことができる。メモリ930は、本開示の実施形態による方法を実行する(implement)ためのデータおよび/またはプログラムを格納することができる。メモリ930に格納されるデータは、例えば、
図5および
図6に示したパラメータ記憶空間および特徴マップ記憶空間におけるデータである。メモリ930に格納されたプログラムは、プロセッサ920によって実行されると、電子デバイス900に、本開示の実施形態による方法を実行させることができる。
【0075】
入力デバイス940は、電子デバイス900に情報を入力できる任意の種類のデバイスでよく、センサ(例えば、前述のような撮像センサ)、マウス、キーボード、タッチスクリーン、マイクロフォン、および/またはリモート・コントローラを含むことができるが、これらに限定されるのではない。出力デバイス950は、情報を出力できる任意の種類のデバイスでよく、ディスプレイ、スピーカ、ビデオ/オーディオ出力端末、バイブレータ、および/または種々の出力インターフェースを含むことができるが、これらに限定されるのではない。
【0076】
尚、電子デバイス900の1つ以上のコンポーネントはネットワーク上で分散されてもよいことは理解されてしかるべきである。例えば、処理の一部を1つのプロセッサによって実行し、他の処理は、この1つのプロセッサから離れた他のプロセッサによって実行することもできる。したがって、電子デバイス900は、複数の位置で処理を実行する分散型コンピューティング・システムとして解釈することができる。
【0077】
加えて、本開示の態様は、プログラムを格納するコンピュータ読み取り可能記憶媒体を含むこともできる。このプログラムは、命令を含み,プロセッサによって命令が実行されると、以上の方法のいずれでもこのプロセッサに実行させる。
【0078】
本開示のいくつかの態様による例示的な方法および製品の実施形態を、以下の項目に列挙する。
1.複数の層を含むディープ・ニューラル・ネットワークのための圧縮方法であって、入力層を除く複数の層における少なくとも1つの層の各々に対して、この方法は、パラメータ記憶空間から層のパラメータを読み出すステップと、特徴マップ記憶空間から、直前の層によって格納された第1特徴マップを読み出すステップと、読み出したパラメータおよび第1特徴マップに基づいて、第2特徴マップを生成するステップと、第2特徴マップを圧縮して、第3特徴マップを得るステップと、第3特徴マップを特徴マップ記憶空間に格納するステップとを含む。
【0079】
2.項目1による方法において、第2特徴マップに対して実行される圧縮が、損失のある圧縮を含む。
3.項目1による方法において、この方法が、ディープ・ニューラル・ネットワークの訓練プロセスおよびディープ・ニューラル・ネットワークの推論プロセスにおける順方向伝搬フェーズにおいて、使用される。
【0080】
4.項目1による方法において、ディープ・ニューラル・ネットワークが、畳み込みニューラル・ネットワークを含み、畳み込みニューラル・ネットワークが、複数の畳み込み層を含み、この方法が、畳み込み層の少なくとも1つに対して実行される。
【0081】
5.項目1による方法において、第1特徴マップが圧縮特徴マップであり、読み出したパラメータおよび第1特徴マップに基づいて第2特徴マップを生成する前記ステップが、第1特徴マップを解凍するステップと、読み出したパラメータおよび解凍した第1特徴マップに基づいて、第2特徴マップを生成するステップとを含む。
【0082】
6.項目1による方法において、パラメータ記憶空間から読み出したパラメータが圧縮パラメータであり、読み出したパラメータおよび第1特徴マップに基づいて第2特徴マップを生成する前記ステップが、読み出したパラメータを解凍するステップと、解凍したパラメータおよび第1特徴マップに基づいて、第2特徴マップを生成するステップとを含む。
【0083】
7.項目2による方法において、第2特徴マップを圧縮する前記ステップが、第2特徴マップを空間ドメインから周波数ドメインに変換するステップと、変換係数を量子化するステップとを含む。
【0084】
8.項目2による方法において、第2特徴マップを圧縮する前記ステップが、更に、第2特徴マップに対して予測コーディングを実行するステップを含み、予測コーディングが、内部予測および/または相互予測を含む。
【0085】
9.項目2による方法において、第2特徴マップを圧縮する前記ステップが、第2特徴マップの異なる領域を異なる圧縮率で圧縮するステップを含み、領域の各々の圧縮率が、当該領域における関心度に依存し、第1関心度の領域の圧縮率が第2関心度の領域の圧縮率よりも低く、第1関心度が第2関心度よりも高い。
【0086】
10.項目2による方法において、第2特徴マップを圧縮する前記ステップが、第2特徴マップに対して非均一量子化を実行するステップを含み、第2特徴マップの異なる領域が、異なる量子化刻みを有する。
【0087】
11.項目10による方法において、第2特徴マップの領域の各々の量子化刻みが、領域の画像の複雑さ、第2特徴マップにおける領域の位置、領域の重要度、領域における特異的特徴の存在または不在、および領域における特異的特徴の数、の内少なくとも1つに基づいて決定される。
【0088】
12.項目11による方法において、特異的特徴が、ディープ・ニューラル・ネットワークのアプリケーション・シナリオにおいて関心のある特徴を含む。
13.項目11による方法において、領域における特異的特徴の存在または不在にしたがって領域の各々の量子化刻みを決定するステップが、領域における特異的特徴の存在に応答して、第1量子化刻みを領域に割り当てるステップと、領域における特異的特徴の不在に応答して、第2量子化刻みを領域に割り当てるステップとを含み、第1量子化刻みが第2量子化刻みよりも小さい。
【0089】
14.項目11による方法において、領域における特異的特徴の数にしたがって領域の各々の量子化刻みを決定するステップが、領域における特異的特徴の数が、予め設定された閾値よりも多いことに応答して、第3量子化刻みを領域に割り当てるステップと、領域における特異的特徴の数が所定の閾値以下であることに応答して、第4量子化刻みを領域に割り当てるステップとを含み、第3量子化刻みが第4量子化刻みよりも小さい。
【0090】
15.項目1による方法において、ディープ・ニューラル・ネットワークが、物体認識のために、画像および/またはビデオ・データを処理するために使用される。
16.チップであって、パラメータ記憶空間および特徴マップ記憶空間を含むメモリであって、パラメータ記憶空間が、ディープ・ニューラル・ネットワークのパラメータを格納するように構成され、特徴マップ記憶空間が、ディープ・ニューラル・ネットワークの特徴マップを格納するように構成される、メモリと、メモリと協働して、項目1から15までのいずれか1つによる方法を実行するように構成されたディープ・ニューラル・ネットワーク・エンジンとを含む。
【0091】
17.項目16によるチップにおいて、メモリがランダム・アクセス・メモリを含む。
18.項目16によるチップにおいて、チップが、人工知能ビジョン・チップを含む。
19.項目18によるチップにおいて、チップが、更に、画像信号を処理するように構成された画像信号処理(ISP)ユニットと、オーディオおよびビデオ信号をエンコードならびにデコードするように構成されたマルチメディア信号コデックとを含む。
【0092】
20.電子デバイスであって、画像および/またはビデオ・データをキャプチャするように構成された撮像センサと、項目16から19のいずれか1つによるチップであって、ディープ・ニューラル・ネットワークを使用して、キャプチャされた画像および/またはビデオ・データを、物体の認識のために処理するように構成される、チップとを含む。
【0093】
21.電子デバイスであって、プロセッサと、プログラムを格納するメモリとを含み、プログラムが命令を含み、プロセッサによって命令が実行されると、項目1から15のいずれか1つによる方法を電子デバイスに実行させる。
【0094】
22.プログラムを格納するコンピュータ読み取り可能記憶媒体であって、プログラムが命令を含み、プロセッサによって命令が実行されると、項目1から15のいずれか1つによる方法をプロセッサに実行させる。
【0095】
以上、本開示の実施形態または例について、図面を参照しながら説明したが、以上で説明した方法、チップ、およびデバイスは、単なる例示的な実施形態または例に過ぎず、本開示の範囲は、これらの実施形態や例によって限定されるのではなく、付与される特許請求の範囲およびその均等の範囲によってのみ定められることは、理解されてしかるべきである。実施形態または例における種々のエレメントは、省略されても、その均等なエレメントによって交換されてもよい。更に、ステップは、本開示において説明した順序とは異なる順序で実行してもよい。更に、実施形態または例における種々のエレメントは、種々の方法で組み合わされてもよい。技術が発展するに連れて、本明細書において説明した多くのエレメントが、本開示の後に現れる均等なエレメントと交換されてもよいことは重要である。