IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ テンセント・アメリカ・エルエルシーの特許一覧

<>
  • 特許-ニューラルネットワークモデルの圧縮 図1
  • 特許-ニューラルネットワークモデルの圧縮 図2
  • 特許-ニューラルネットワークモデルの圧縮 図3
  • 特許-ニューラルネットワークモデルの圧縮 図4
  • 特許-ニューラルネットワークモデルの圧縮 図5
  • 特許-ニューラルネットワークモデルの圧縮 図6
  • 特許-ニューラルネットワークモデルの圧縮 図7
  • 特許-ニューラルネットワークモデルの圧縮 図8
  • 特許-ニューラルネットワークモデルの圧縮 図9
  • 特許-ニューラルネットワークモデルの圧縮 図10
  • 特許-ニューラルネットワークモデルの圧縮 図11
  • 特許-ニューラルネットワークモデルの圧縮 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-22
(45)【発行日】2024-01-05
(54)【発明の名称】ニューラルネットワークモデルの圧縮
(51)【国際特許分類】
   G06N 3/06 20060101AFI20231225BHJP
   H03M 7/30 20060101ALI20231225BHJP
【FI】
G06N3/06
H03M7/30 Z
【請求項の数】 5
(21)【出願番号】P 2022527688
(86)(22)【出願日】2021-04-13
(65)【公表番号】
(43)【公表日】2023-02-10
(86)【国際出願番号】 US2021026995
(87)【国際公開番号】W WO2021211522
(87)【国際公開日】2021-10-21
【審査請求日】2022-06-14
(31)【優先権主張番号】63/011,122
(32)【優先日】2020-04-16
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】63/011,908
(32)【優先日】2020-04-17
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】63/042,968
(32)【優先日】2020-06-23
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】63/052,368
(32)【優先日】2020-07-15
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/225,486
(32)【優先日】2021-04-08
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ワン,ウェイ
(72)【発明者】
【氏名】ジャン,ウェイ
(72)【発明者】
【氏名】リィウ,シャン
【審査官】漆原 孝治
(56)【参考文献】
【文献】米国特許出願公開第2019/0094477(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/06
H03M 7/30
(57)【特許請求の範囲】
【請求項1】
復号器でニューラルネットワークを復号する方法であって、
ニューラルネットワークの圧縮表現のビットストリームから、依存量子化有効化フラグを受信するステップであって、前記依存量子化有効化フラグが、依存量子化方法を前記ニューラルネットワークのモデルパラメータに適用するかどうかを示すステップと、
前記依存量子化有効化フラグが、前記依存量子化方法を使用して前記ニューラルネットワークのモデルパラメータを符号化することを示すことに応答して、前記依存量子化方法に基づき、前記ニューラルネットワークのモデルパラメータを再構成するステップと、を含む方法。
【請求項2】
モデルレベル、層レベル、サブ層レベル、3次元コーディングユニット(CU3D)レベル、又は3次元コーディングツリーユニット(CTU3D)レベルで、前記依存量子化有効化フラグを信号で伝送する請求項1に記載の方法。
【請求項3】
前記依存量子化有効化フラグが、均一量子化方法を使用して前記ニューラルネットワークのモデルパラメータを符号化することを示すことに応答して、前記均一量子化方法に基づき、前記ニューラルネットワークのモデルパラメータを再構成するステップをさらに含む請求項1又は2に記載の方法。
【請求項4】
メモリと、処理回路とを含む復号器であって、
前記処理回路は、前記メモリに記憶されたプログラムを実行することにより、請求項1乃至3のいずれか1項に記載の方法を実行する復号器。
【請求項5】
プロセッサーに、請求項1乃至3のいずれか1項に記載の方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、2021年4月8日にて提出された、名称が「Neural Network Model Compression(ニューラルネットワークモデルの圧縮)」である米国特許出願第17/225,486号の優先権を主張し、当該米国特許出願は、2020年4月16日にて提出された、名称が「Dependent Quantization Enabling Flag for Neural Network Model Compression(ニューラルネットワークモデル圧縮の依存量子化有効化フラグ)」である米国仮出願第63/011,122号、2020年4月17日にて提出された、名称が「Sublayer Ordering in Bitstream for Neural Network Model Compression(ニューラルネットワークモデル圧縮のためのビットストリームでのサブ層の順序付け)」である米国仮出願第63/011,908号、2020年6月23日にて提出された、名称が「Sublayer ordering flag for Neural Network Model Compression(ニューラルネットワークモデル圧縮のためのサブ層の順序付けフラグ)」である米国仮出願第63/042,968号、及び2020年7月15日にて提出された、名称が「Syntax Elements for Neural Network Model Compression with Structured Weight Unification(構造化された重みの統一によるニューラルネットワークモデル圧縮のシンタックス要素)」である米国仮出願第63/052,368号の優先権を主張する。先行出願の開示は、援用によりその全体が本明細書に組み込まれる。
【0002】
本開示は、一般的にニューラルネットワークモデルの圧縮/解凍に関する実施形態を説明する。
【背景技術】
【0003】
本明細書で提供される背景説明は、一般的に本開示の背景を提示することを目的とする。当該背景技術部分に記載されている作業程度について、現在署名された発明者の作業、及び出願時に従来技術として適格ではない可能性のある説明の各側面は、本開示に対する従来技術として、明示又は暗黙的に認められていない。
【0004】
コンピュータビジョン、画像認識及び音声認識の分野における様々なアプリケーションは、ニューラルネットワークに依存して、パフォーマンスの改善を実現する。ニューラルネットワークは、接続されたノード(ニューロンとも呼ばれる)のセットに基づいており、これらのノードは、生物学的脳におけるニューロンを、大まかにモデル化する。ニューロンは、複数の層に編成される。1つの層のニューロンは、直前の層及び直後の層のニューロンに接続されることができる。
【0005】
例えば、生物学的脳におけるシナプスのような2つのニューロンの間の接続は、信号を一方のニューロンから他方のニューロンに伝送することができる。その後、信号を受信するニューロンは、当該信号を処理し、接続された他のニューロンに信号を送信することができる。いくつかの例では、ニューロンの出力を取得するために、当該ニューロンの入力の接続の重みによって、当該ニューロンの入力に対して加重を行って、加重後の入力は加算されることで、加重和を生成する。加重和にバイアスを加えることができる。また、加重和は伝達され、活性化関数を介して出力を生成する。
【発明の概要】
【発明が解決しようとする課題】
【0006】
本開示の各態様はニューラルネットワークモデルの圧縮/解凍のための方法及び装置を提供する。いくつかの例では、ニューラルネットワークモデルを解凍するための装置は、受信回路及び処理回路を含む。処理回路は、ニューラルネットワークの圧縮表現のビットストリームから、依存量子化有効化フラグを受信するように配置されることができる。依存量子化有効化フラグは、依存量子化方法をニューラルネットワークのモデルパラメータに適用するかどうかを示すことができる。依存量子化有効化フラグが、依存量子化方法を使用してニューラルネットワークのモデルパラメータを符号化することを示すことに応答して、依存量子化方法に基づき、ニューラルネットワークのモデルパラメータを再構成することができる。
【課題を解決するための手段】
【0007】
実施形態において、モデルレベル、層レベル、サブ層レベル、3次元コーディングユニット(3-dimensional coding unit、CU3D)レベル又は3次元コーディングツリーユニット(3-dimensional coding tree unit、CTU3D)レベルで、依存量子化有効化フラグを信号で伝送する。実施形態において、依存量子化有効化フラグが、均一量子化方法を使用してニューラルネットワークのモデルパラメータを符号化することを示すことに応答して、均一量子化方法に基づき、ニューラルネットワークのモデルパラメータを構築することができる。
【0008】
いくつかの例では、装置は、処理回路を含み、処理回路は、ニューラルネットワークの圧縮表現のビットストリームにおける重み係数の第2のサブ層を受信する前に、ビットストリームにおける係数の1つ又は複数の第1のサブ層を受信するように配置される。第1のサブ層と第2のサブ層は、ニューラルネットワークの層に属する。実施形態において、重み係数の第2のサブ層を再構成する前に、係数の1つ又は複数の第1のサブ層を再構成することができる。
【0009】
実施形態において、係数の1つ又は複数の第1のサブ層は、スケール因子係数サブ層、バイアス係数サブ層、又は、1つ又は複数のバッチ正規化係数サブ層を含む。実施形態において、ニューラルネットワークの層は、畳み込み層又は完全接続層である。実施形態において、1つ又は複数の第1のサブ層の係数は、量子化された値又は量子化されていない値で表される。
【0010】
実施形態において、ニューラルネットワークの圧縮表現のビットストリームとは別に伝送されるニューラルネットワークの構成情報に基づき、第1のサブ層及び第2のサブ層の復号シーケンスを決定することができる。実施形態において、1つ又は複数の第1のサブ層がニューラルネットワークの層において使用可能かどうかを示す1つ又は複数のフラグを受信することができる。実施形態において、ニューラルネットワークの構成情報に基づき、1次元テンソルを、係数の第1のサブ層のうちの1つに対応するバイアス又はローカルスケールテンソルとして推定することができる。実施形態において、推定プロセス中に、再構成された係数の第1のサブ層をマージして、係数の組み合わせテンソルを生成する。重み係数の第2のサブ層の一部に属する再構成された重み係数を、重み係数の第2のサブ層の残りがまだ再構成されている間に、推定プロセスの入力として受信することができる。推定プロセス中に、係数の組み合わせテンソルと受信した再構成された重み係数に対する行列乗算を実行する。
【0011】
いくつかの例では、装置は、ニューラルネットワークの圧縮表現のビットストリームにおける第1の統一有効化フラグを受信するように配置される回路を含むことができる。第1の統一有効化フラグは、統一パラメータリダクション方法をニューラルネットワークのモデルパラメータに適用するかどうかを示すことができる。第1の統一有効化フラグに基づき、ニューラルネットワークのモデルパラメータを再構成することができる。実施形態において、第1の統一有効化フラグは、モデルパラメータセット又は層パラメータセットに含まれる。
【0012】
実施形態において、統一(unification、ユニフィケーション)方法をニューラルネットワークのモデルパラメータに適用すると決定したことに応答して、統一パフォーマンスマップを受信することができる。統一パフォーマンスマップは、1つ又は複数の統一閾値と、対応する統一閾値によって圧縮されるニューラルネットワークの対応する1つ又は複数の推定精度セットとの間のマッピングを示すことができる。
【0013】
実施形態において、統一パフォーマンスマップは、1つ又は複数の統一閾値の数を示すシンタックス要素、1つ又は複数の統一閾値のそれぞれに対応する相応的な統一閾値を示すシンタックス要素、又は1つ又は複数の統一閾値のそれぞれに対応する相応的な推定精度セットを示す1つ又は複数のシンタックス要素、のうちの1つ又は複数を含む。
【0014】
実施形態において、統一パフォーマンスマップは、モデルパラメータテンソル、モデルパラメータテンソルから分割されたスーパーブロック、又はスーパーブロックから分割されたブロックのうちの1つ又は複数の次元を示す1つ又は複数のシンタックス要素をさらに含む。
【0015】
実施形態において、第1の統一有効化フラグがモデルパラメータセットに含まれ、第2の統一有効化フラグが層パラメータセットに含まれ、第1の統一有効化フラグ及び第2の統一有効化フラグがそれぞれ、統一パラメータリダクション方法が有効化されたことを示す値を有することに応答して、層パラメータセットにおける統一パフォーマンスマップのシンタックス要素の値を、ニューラルネットワークの圧縮表現のビットストリームにおける、層パラメータセットを参照する圧縮データに適用すると決定する。
【0016】
本開示の各態様は、非一時的コンピュータ可読媒体をさらに提供し、当該非一時的コンピュータ可読媒体には、指令が記憶され、前記指令は、ニューラルネットワークモデルの解凍のためのコンピュータにより実行される場合、ニューラルネットワークモデル解凍の方法をコンピュータに実行させる。
【図面の簡単な説明】
【0017】
開示された主題のさらなる特徴、性質及び様々な利点は、以下の詳細な説明及び添付の図面からより明らかになるであろう。
【0018】
図1】本開示の実施形態による電子装置(130)のブロック図を示す。
【0019】
図2】重みテンソルにおける重み係数を走査するシンタックス例を示す。
【0020】
図3】ステップサイズシンタックス表の例を示す。
【0021】
図4】本開示のいくつかの実施形態による、量子化された重み係数の絶対値を復号する例を示す。
【0022】
図5】本開示の実施形態による2つのスカラー量子化器を示す。
【0023】
図6】ローカルスケール適応プロセスの例を示す。
【0024】
図7】反復的な再訓練/微調整プロセスの全体的なフレームワークを示す。
【0025】
図8】統一によるパラメータリダクションのための例示的なシンタックス表(800)を示す。
【0026】
図9】統一パフォーマンスマップ(900)のシンタックス構造の例を示す。
【0027】
図10】統一によるパラメータリダクションのための別の例示的なシンタックス表(1000)を示す。
【0028】
図11】本開示の実施形態によるプロセス(1100)を概説するフローチャートを示す。
【0029】
図12】本開示の実施形態によるコンピュータシステムの概略図である。
【発明を実施するための形態】
【0030】
本開示の各態様は、ニューラルネットワークモデルの圧縮/解凍のための様々な技術を提供する。これらの技術は、パラメータ量子化方法制御技術、サブ層処理順序技術、及び重み統一によるパラメータリダクション技術を含むことができる。
【0031】
人工ニューラルネットワークは、マルチメディア分析及び処理、メディアコーディング、データ分析及び他の多くの分野における幅広いタスクに適用できる。人工ニューラルネットワークの使用の成功は、これまでよりもはるかに大規模で複雑なニューラルネットワーク(深層ニューラルネットワーク、DNN)を処理する実行可能性、及び大規模な訓練データセットの使用可能性に基づいている。従って、訓練されたニューラルネットワークは、大量のモデルパラメータを含むので、サイズは、かなり大きく(例えば、数百MB)なる。モデルパラメータは、例えば、重み、バイアス、スケール因子、バッチ正規化(batchnorm)パラメータなどの訓練されたニューラルネットワークの係数を含むことができる。これらのモデルパラメータは、モデルパラメータテンソルに編成される。モデルパラメータテンソルは、ニューラルネットワークの関連するモデルパラメータを1つにグルーピングする多次元構成(例えば、アレイ又は行列)を指す。例えば、ニューラルネットワークにおける層の係数は、使用可能な場合、重みテンソル、バイアステンソル、スケール因子テンソル、batchnormテンソルなどにグルーピングされることができる。
【0032】
多くのアプリケーションは、特定の訓練されたネットワークインスタンスを潜在的に大量の装置に配置する必要があるため、処理能力とメモリ(例えば、モバイル装置やスマートカメラ)及び通信帯域幅の点で制限がある場合がある。これらのアプリケーションは、本明細書に開示されるニューラルネットワークの圧縮/解凍技術から利益を取得できる。
【0033】
I.ニューラルネットワークによる装置及びアプリケーション
【0034】
図1は、本開示の実施形態による電子装置(130)のブロック図を示す。電子装置(130)は、ニューラルネットワークによるアプリケーションを実行するように配置されることができる。いくつかの実施形態では、電子装置(130)は、圧縮(符号化)されたニューラルネットワークモデル(例えば、ビットストリーム形式のニューラルネットワークの圧縮表現)を受信して記憶する。電子装置(130)は、圧縮されたニューラルネットワークモデルを解凍(又は復号)して、ニューラルネットワークモデルを復元することができ、ニューラルネットワークモデルによるアプリケーションを実行することができる。いくつかの実施形態では、圧縮されたニューラルネットワークモデルは、例えばアプリケーションサーバー(110)などのサーバーから提供される。
【0035】
図1の例では、アプリケーションサーバー(110)は、結合された処理回路(120)、メモリ(115)及びインターフェース回路(111)を含む。いくつかの例では、ニューラルネットワークは、適切に生成、訓練又は更新される。ニューラルネットワークは、ソースニューラルネットワークモデルとして、メモリ(115)に記憶されることができる。処理回路(120)は、ニューラルネットワークモデルコーデック(121)を含む。ニューラルネットワークモデルコーデック(121)は、ソースニューラルネットワークモデルを圧縮して、圧縮されたニューラルネットワークモデル(ニューラルネットワークの圧縮表現)を生成することができる符号器を含む。いくつかの例では、圧縮されたニューラルネットワークモデルは、ビットストリームの形式を呈する。圧縮されたニューラルネットワークモデルは、メモリ(115)に記憶されることができる。アプリケーションサーバー(110)は、インターフェース回路(111)を介して、ビットストリームの形式で、圧縮されたニューラルネットワークモデルを例えば電子装置(130)などの他の装置に提供することができる。
【0036】
なお、電子装置(130)は、例えば、スマートフォン、ビデオカメラ、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、ゲーミングヘッドセットなどの任意の適切な装置であってもよい。
【0037】
図1の例では、電子装置(130)は、結合された処理回路(140)、キャッシュメモリ(150)、メインメモリ(160)及びインターフェース回路(131)を含む。いくつかの例では、電子装置(130)は、インターフェース回路(131)を介して、例えば、ビットストリームの形式で、圧縮されたニューラルネットワークモデルを受信する。圧縮されたニューラルネットワークモデルは、メインメモリ(160)に記憶される。
【0038】
処理回路(140)は、例えば、中央処理ユニット(central processing unit、CPU)、グラフィックス処理ユニット(graphics processing unit、GPU)などの任意の適切な処理ハードウェアを含む。処理回路(140)は、ニューラルネットワークによるアプリケーションを実行するための適切な構成要素、及びニューラルネットワークモデルコーデック(141)として配置される適切な構成要素を含む。ニューラルネットワークモデルコーデック(141)は、例えば、アプリケーションサーバー(110)から受信した、圧縮されたニューラルネットワークモデルを復号することができる復号器を含む。一例では、処理回路(140)は、単一のチップ(例えば、集積回路)を含み、1つ又は複数のプロセッサーは、単一のチップに設けられる。別の例では、処理回路(140)は複数のチップを含み、各チップは1つ又は複数のプロセッサーを含む。
【0039】
いくつかの実施形態では、メインメモリ(160)は、比較的大きな記憶空間を有し、例えばソフトウェアコード、メディアデータ(例えばビデオ、オーディオ、画像など)、圧縮されたニューラルネットワークモデルなどの様々な情報を記憶することができる。キャッシュメモリ(150)は、比較的小さな記憶空間を有するが、メインメモリ(160)よりも、アクセス速度が遥かに高速である。いくつかの例では、メインメモリ(160)は、ハードディスクドライブ、ソリッドステートドライブなどを含み、キャッシュメモリ(150)は、静的ランダムアクセスメモリ(static random access memory、SRAM)などを含むことができる。一例では、キャッシュメモリ(150)は、例えばプロセッサーチップに設けられるオンチップメモリであってもよい。別の例では、キャッシュメモリ(150)は、プロセッサーチップとは別の1つ又は複数のメモリチップに設けられるオフチップメモリであってもよい。一般的に、オンチップメモリは、オフチップメモリよりも、アクセス速度が高速である。
【0040】
いくつかの実施形態では、処理回路(140)は、ニューラルネットワークモデルを使用するアプリケーションを実行する場合、ニューラルネットワークモデルコーデック(141)は、圧縮されたニューラルネットワークモデルを解凍してニューラルネットワークモデルを復元することができる。いくつかの例では、キャッシュメモリ(150)は、十分に大きいため、復元されたニューラルネットワークモデルをキャッシュメモリ(150)にキャッシュすることができる。そして、処理回路(140)は、キャッシュメモリ(150)にアクセスして、アプリケーションにおいて、復元されたニューラルネットワークモデルを使用することができる。別の例では、キャッシュメモリ(150)は、限られたメモリ空間を有し(例えば、オンチップメモリ)、圧縮されたニューラルネットワークモデルは、層、又はブロックごとに解凍されることができ、キャッシュメモリ(150)は、復元されたニューラルネットワークモデルを層、又はブロックごとにキャッシュすることができる。
【0041】
なお、ニューラルネットワークモデルコーデック(121)及びニューラルネットワークモデルコーデック(141)は、任意の適切な技術で実現できる。いくつかの実施形態では、符号器及び/又は復号器は、集積回路で実現できる。いくつかの実施形態では、符号器及び復号器は、1つ又は複数のプロセッサーとして実現され、前記1つ又は複数のプロセッサーは、非一時的なコンピュータ可読媒体に記憶されたプログラムを実行する。ニューラルネットワークモデルコーデック(121)及びニューラルネットワークモデルコーデック(141)は、以下に説明する符号化特徴及び復号化特徴に基づき実現することができる。
【0042】
本開示は、ニューラルネットワーク表現(neural network representation、NNR)のための技術を提供し、当該技術は、記憶及び計算を節約するように、例えば、深層ニューラルネットワーク(deep neural network、DNN)モデルなどのニューラルネットワークモデルの符号化及び復号化に使用されることができる。深層ニューラルネットワーク(DNN)は、例えば、セマンティック分類、ターゲット検出/認識、ターゲット追跡、ビデオ品質強化などの幅広いビデオアプリケーションに適用される。
【0043】
ニューラルネットワーク(又は人工ニューラルネットワーク)は一般的に、入力層と出力層との間に複数の層を含む。いくつかの例では、ニューラルネットワークにおける層は、層の入力を層の出力に変換する数学的変換(mathematical manipulation)に対応する。数学的変換は、直線的関係又は非直線的関係であってもよい。ニューラルネットワークは、層をトラバースすることで、各出力の確率を計算する。各数学的変換自体はいずれも層と見なされて、複雑なDNNは多くの層を備える。いくつかの例では、層の数学的変換は、1つ又は複数のテンソル(例えば、重みテンソル、バイアステンソル、スケール因子テンソル、batchnormテンソルなど)で表されることができる。
【0044】
II. 依存量子化の有効化
【0045】
1.走査順序
【0046】
ニューラルネットワークモデルの符号化/復号化には、例えば走査順序技術、量子化技術、エントロピー符号化技術などの様々な技術を使用することができる。
【0047】
走査順序技術のいくつかの例では、重みテンソルの次元は、2を超え(例えば、畳み込み層における4である)、重みテンソルは、2次元テンソルに再形成(reshape)される。一例では、重みテンソルの次元が2以下である(例えば、完全接続層又はバイアス層である)場合、再形成を実行しない。
【0048】
重みテンソルを符号化するために、一定の順序に従って、重みテンソルにおける重み係数を走査する。いくつかの例では、例えば、一番上の行から一番下の行までの各行に対して、左から右へ、重みテンソルにおける重み係数を行優先方式で走査する。
【0049】
図2は、重みテンソルにおける重み係数を走査するシンタックス例を示す。
【0050】
2.量子化
【0051】
いくつかの例では、最近傍量子化は、重み行列における各重み係数に均一に適用される。このような量子化方法は、均一量子化方法と呼ばれる。例えば、ステップサイズは、適切に決定され、ビットストリームに含まれる。一例では、ステップサイズは、32ビット浮動小数点数として定義され、ビットストリームに符号化される。従って、復号器が、ステップサイズ、及び重み係数に対応する整数をビットストリームから復号する場合、復号器は、重み係数を、当該整数とステップサイズとの積として再構成することができる。
【0052】
図3は、ステップサイズシンタックス表の例を示す。シンタックス要素step_sizeは、量子化ステップサイズを示す。
【0053】
3.エントロピー符号化
【0054】
量子化された重み係数を符号化するために、エントロピー符号化技術を使用することができる。いくつかの実施形態では、量子化された重み係数の絶対値は、単項シーケンス(unary sequence)を含むシーケンスに符号化され、当該単項シーケンスの後に、固定長のシーケンスが続く場合がある。
【0055】
いくつかの例では、重み係数の層内の分布は一般的にガウス分布に従って、値が大きい重み係数の割合は非常に小さいが、重み係数の最大値は非常に大きい。いくつかの実施形態では、一進法符号化(unary coding)を使用して、非常に小さな値を符号化し、ゴロム符号化(Golomb coding)に基づき、大きな値を符号化することができる。例えば、maxNumNoRemと呼ばれる整数パラメータは、ゴロム符号化を使用しない場合の最大数を示すために使用される。量子化された重み係数がmaxNumNoRemより大きくない(例えば、等しいか小さい)場合、一進法符号化で、量子化された重み係数を符号化することができる。量子化された重み係数がmaxNumNoRemより大きい場合、量子化された重み係数の、maxNumNoRemに等しい部分は一進法符号化で符号化され、量子化された重み係数の残りはゴロム符号化で符号化される。従って、単項シーケンスは、一進法符号化された第1の部分、及び指数ゴロムの残りビットを符号化するためのビットの第2の部分を含む。
【0056】
いくつかの実施形態では、以下の2つのステップによって、量子化された重み係数を符号化することができる。
【0057】
第1のステップでは、量子化された重み係数に対して、バイナリシンタックス要素sig_flagを符号化する。バイナリシンタックス要素sig_flagは、量子化された重み係数が0に等しいかどうかを指定する。sig_flagが1に等しい(量子化された重み係数が0に等しくないことを示す)場合、バイナリシンタックス要素sign_flagをさらに符号化する。バイナリシンタックス要素sign_flagは、量子化された重み係数が正か負かを示す。
【0058】
第2のステップでは、量子化された重み係数の絶対値を、単項シーケンスを含むシーケンスに符号化し、当該単項シーケンスの後に、固定長のシーケンスが続く場合がある。量子化された重み係数の絶対値がmaxNumNoRem以下である場合、当該シーケンスは、量子化された重み係数の絶対値の一進法符号化を含む。量子化された重み係数の絶対値がmaxNumNoRemより大きい場合、単項シーケンスは、一進法符号化を使用してmaxNumNoRemを符号化するための第1の部分、及び指数ゴロム残りビットを符号化するための第2の部分を含むことができ、固定長のシーケンスは、固定長の残りの部分を符号化するためのものである。
【0059】
いくつかの例では、まず、一進法符号化を適用する。例えば、jなどの変数は、0に初期化され、別の変数Xはj+1に設定される。シンタックス要素abs_level_greater_Xは符号化される。一例では、量子化された重みレベルの絶対値が変数Xより大きい場合、abs_level_greater_Xは、1に設定され、一進法符号化が継続され、量子化された重みレベルの絶対値が変数Xより大きくない場合、abs_level_greater_Xは0に設定され、一進法符号化は完成する。abs_level_greater_Xが1に等しく、且つ変数jがmaxNumNoRemより小さい場合、変数jは1増加し、変数Xも1増加する。そして、別のシンタックス要素abs_level_greater_Xを符号化する。当該プロセスは、abs_level_greater_Xが0に等しくなるか、又は変数jがmaxNumNoRemに等しくなるまで継続される。変数jがmaxNumNoRemに等しい場合、符号化されたビットは、単項シーケンスの第1の部分である。
【0060】
abs_level_greater_Xが1に等しく、且つjがmaxNumNoRemに等しい場合、符号化について、ゴロム符号化を継続する。具体的に、変数jは0にリセットされ、Xは1<<jに設定される。一進法符号化の残りの部分は、量子化された重み係数の絶対値からmaxNumNoRemを引いたものとして計算される。シンタックス要素abs_level_greater_than Xは符号化される。例では、一進法符号化の残り部分が変数Xより大きい場合、abs_level_greater_Xは1に設定され、一進法符号化の残り部分が変数Xより大きくない場合、abs_level_greater_Xは0に設定される。abs_level_greater_Xが1に等しいと場合、変数jは1増加し、1<<jをXに追加し、別のabs_level_greater_Xを符号化する。当該プロセスは、abs_level_greater_Xが0に等しくなるまで継続される。そのため、単項シーケンスの第2の部分は符号化される。abs_level_greater_X が0に等しい場合、一進法符号化の残り部分は、(X, X - 1, … X-(1<<j)+ 1)の値のうちの1つであってもよい。長さがjであるコードは、(X, X - 1, … X-(1<<j)+ 1)のうちの1つ値を指すインデックスを符号化し、当該コードは、固定長の残り部分と呼ばれる。
【0061】
図4は、本開示のいくつかの実施形態による、量子化された重み係数の絶対値を復号する例を示す。図4の例では、QuantWeight[i]は、配列におけるi番目の位置の量子化された重み係数を示し、sig_flagは、量子化された重み係数QuantWeight[i]が非ゼロであるかどうかを指定し(例えば、sig_flagが0であれば、QuantWeight[i]が0であることを示す)、sign_flagは量子化された重み係数QuantWeight[i]が正か負かを指定し(例えば、sign_flagが1であれば、QuantWeight[i]が負であることを示す)、abs_level_greater_x[j] は、QuantWeight[i]の絶対レベルがj+1より大きい(例えば、単項シーケンスの第1の部分)であるかどうかを示し、abs_level_greater_x2[j]は、指数ゴロムの残り部分の単項部分(例えば、単項シーケンスの第2の部分)を含み、abs_remainderは、固定長の残り部分を示す。
【0062】
本開示の一態様によれば、sig_flag、sign_flag及びabs_level_greater_Xという3つのフラグの符号化で、コンテキストモデリング方法を使用することができる。したがって、類似の統計行為を有するフラグは、(コンテキストモデル内部の)確率推定器が底層統計に適応できるために、同じコンテキストモデルに関連付けることができる。
【0063】
一例では、コンテキストモデリング方法は、左側に隣接する量子化された重み係数がゼロであるか、又はゼロより小さいか、又はゼロより大きいかに応じて、sig_flagに3つのコンテキストモデルを使用する。
【0064】
別の例では、コンテキストモデリング方法は、左側に隣接する量子化された重み係数がゼロであるか、又は、ゼロより小さいか、又はゼロより大きいかに応じて、sign_flagに他の3つのコンテキストモデルを使用する。
【0065】
別の例では、abs_level_greater_Xフラグのそれぞれに対して、コンテキストモデリング方法は、1つ又は2つの別個のコンテキストモデルを使用する。一例では、X <= maxNumNoRemである場合、sign_flagに基づき、2つのコンテキストモデルを使用する。X > maxNumNoRemである場合、例では1つのコンテキストモデルのみを使用する。
【0066】
4.依存量子化
【0067】
いくつかの実施形態では、依存スカラー量子化方法は、ニューラルネットワークのパラメータ近似に適用される。関連するエントロピー符号化方法を使用して、量子化方法と連携することができる。当該方法は量子化パラメータ値の間に依存関係を導入することで、パラメータ近似における歪みを低減させる。また、エントロピー符号化の段階では、当該依存関係を使用することができる。
【0068】
依存量子化において、ニューラルネットワークパラメータ(例えば、重みパラメータ)に使用される許容可能な再構成値は、再構成順序で先行するニューラルネットワークパラメータに対して選択された量子化インデックスに依存する。当該方法の主な効果は、通常のスカラー量子化と比較して、(層の全ての再構成ニューラルネットワークパラメータから与えられた)、許容可能な再構成ベクトルがより密にN次元ベクトル空間にパッケージングされることである(Nは層におけるパラメータの数を示す)。つまり、N次元単位体積あたりの許容可能な再構成ベクトルの所定の平均数に対して、(入力ベクトルの典型的な分布にとって)、入力ベクトルと、最も近い再構成ベクトルとの間の平均距離(例えば、平均二乗誤差(Mean Squared Error、MSE)、又は平均絶対誤差(Mean Absolute Error、MAE)歪み)が減少することを意味する。
【0069】
依存量子化プロセスにおいて、パラメータは、再構成値の間の依存関係のため、走査順序(エントロピー復号化される順序と同じ順序)に従って、再構成される。そして、依存スカラー量子化方法は、再構成レベルを有する2つのスカラー量子化器を定義し、2つのスカラー量子化器を切り替えるプロセスを定義することで実現される。したがって、各パラメータについて、図5に示すように、2つの使用可能なスカラー量子化器を有することができる。
【0070】
図5は、本開示の実施形態によって使用される2つのスカラー量子化器を示す。第1の量子化器Q0は、ニューラルネットワークパラメータレベル(ポイントの下の-4~4の数値)を、量子化ステップサイズΔの偶数の整数倍にマッピングする。第2の量子化器Q1は、ニューラルネットワークパラメータレベル(-5~5の数値)を、量子化ステップサイズΔの奇数の整数倍又はゼロにマッピングする。
【0071】
量子化器Q0及びQ1に対して、量子化ステップサイズΔは、使用可能な再構成レベルの位置を一意的に指定する。2つのスカラー量子化器Q0及びQ1の特性は、以下の通りである。
【0072】
Q0:第1の量子化器Q0の再構成レベルは、量子化ステップサイズΔの偶数の整数倍によって与えられる。当該量子化器を使用する場合、再構成されたニューラルネットワークパラメータt’は、以下の式1に基づき計算される。
【数1】


ここで、kは、関連するパラメータレベル(伝送される量子化インデックス)を示す。
【0073】
Ql:第2の量子化器Qlの再構成レベルは、量子化ステップサイズΔの奇数の整数倍、及びゼロに等しい再構成レベルによって与えられる。ニューラルネットワークパラメータレベルkから、再構成されたパラメータt’へのマッピングは以下の式2で指定される。
【数2】


ここで、sgn(.)は、以下の符号関数を示す。
【数3】

【0074】
ビットストリームにおいて、現在の重みパラメータに使用される量子化器(Q0又はQ1)を明示的に信号で伝送する代わりに、使用される量子化器は、符号化/再構成の順序において現在の重みパラメータの前にある重みパラメータレベルのパリティによって決定される。量子化器の間の切り替えは、表1に示されるステートマシンによって実現される。状態には8つの可能な値(0、1、2、3、4、5、6、7)があり、符号化/再構成の順序において現在の重みパラメータの前にある重みパラメータレベルのパリティによって、一意的に決定される。各層について、状態変数は、最初に0に設定される。重みパラメータが再構成された場合、状態は、表1に従って更新され、kは、変換係数レベルの値を示す。次の状態は、現在の状態及び現在の重みパラメータレベルのパリティ(k&1)に依存する。従って、以下の方式で状態の更新を取得することができる。
【数4】

ここで、sttabは、表1を示す。
【0075】
表1は、ニューラルネットワークパラメータに使用されるスカラー量子化器を決定するための状態遷移表を示し、kは、ニューラルネットワークパラメータの値を示す。
【表1】

【0076】
状態は、使用されるスカラー量子化器を一意的に指定する。現在の重みパラメータの状態値が偶数(0、2、4、6)である場合、スカラー量子化器Q0を使用する。さもなければ、状態値が奇数(1、3、5、7)である場合、スカラー量子化器Q1を使用する。
【0077】
5.依存量子化有効化フラグ
【0078】
依存量子化において、与えられたパラメータレベル(伝送される量子化インデックス)kに対して、量子化器Q0を使用すると、再構成されたニューラルネットワークパラメータt’は、t’=2・k・Δに基づき計算され、量子化器Q1を使用すると、再構成されたパラメータt’は、t’=(2・k-sgn(k))・Δによって指定される。
【0079】
現在のモデムの高性能推論エンジンの多くは、低ビットデプス整数(例えば、INT8又はINT4)を使用して行列乗算を実行することが知られている。ただし、依存量子化プロセスによって取得された整数のパラメータレベル(伝送される量子化インデックス)kは、推定エンジンによって直接使用されない場合がある。整数のパラメータレベルは、浮動小数点数再構成パラメータ値に逆量子化され、その後、推定エンジンによって使用される。浮動小数点の数値は、低ビットデプス整数を使用して実行する推定エンジンと一致しない恐れがある。
【0080】
以上の問題を解決するために、いくつかの実施形態では、制御メカニズムを使用して、ニューラルネットワークを圧縮する符号器側の依存量子化ツールをオン又はオフにする。例えば、圧縮されたニューラルネットワークモデルのビットストリームにおいて、dq_flagとして示される依存量子化有効化フラグを信号で伝送する。当該フラグは、依存量子化方法を、圧縮されたニューラルネットワークモデルのモデルパラメータの圧縮に適用するかどうかを示す。
【0081】
復号器でビットストリームを受信した場合、復号器は、依存量子化有効化フラグに基づき、ビットストリームの復号方式を決定する。例えば、依存量子化有効化フラグが、依存量子化方法を使用してニューラルネットワークを符号化することを示すことに応答して、復号器は、依存量子化方法に基づき、ニューラルネットワークのモデルパラメータを再構成する。依存量子化有効化フラグが、依存量子化方法をニューラルネットワークの符号化に使用しないことを示す場合、復号器は、異なる方式でビットストリームを引き続いて処理する。
【0082】
一例では、依存量子化有効化フラグdq_flagは、適用される量子化方法が依存スカラー量子化方法であるか、それとも均一量子化方法であるかを指定する。dq_flagが0に等しい場合、均一量子化方法を使用することを示す。dq_flagが1に等しい場合、依存量子化方法を使用することを示す。一例では、dq_flagがビットストリームに存在しない場合、dq_flagは、0であると推定される。他の例では、dq_flagが0に等しい場合、均一量子化方法以外の別のパラメータ量子化方法を示す。
【0083】
様々な実施形態では、ビットストリームにおいて、様々なレベルでdq_flagを信号で伝送することができる。例えば、モデルレベル、層レベル、サブ層レベル、3次元コーディングユニット(CU3D)レベル、3次元コーディングツリーユニット(CTU3D)レベルなどで、1つ又は複数の依存量子化有効化フラグを信号で伝送することができる。一例では、低いレベルで伝送されるdq_flagは、高いレベルで伝送されるdq_flagをオーバーライドすることができる。この場合、異なる量子化方法を使用して、異なるモデルパラメータテンソルにおける、又はモデルパラメータテンソルの構成内の異なる位置にあるモデルパラメータを圧縮することができる。
【0084】
例えば、ニューラルネットワークは、複数の層(例えば、畳み込み層又は完全接続層)を含むことができる。層は、それぞれがサブ層に対応する複数のテンソル(例えば、重みテンソル、バイアステンソル、スケール因子テンソル又はbatchnormパラメータテンソル)を含む。従って、一実施形態において、モデルヘッドレベルでdq_flagを定義することで、モデルにおける全ての層に対して、依存量子化プロセスをオン又はオフにすることができる。別の実施形態では、各層に対してdq_flagを定義することで、各層レベルで、依存量子化プロセスをオン又はオフにする。別の実施形態では、サブ層レベルでdq_flagを定義する。
【0085】
いくつかの例では、事前定義された階層構造に基づき、テンソル(例えば、重みテンソル)をブロックに分割する。一例では、レイアウトが[R][S][C][K]である畳み込み層に対して、重みテンソルの次元は一般的に4であり、レイアウトが[C][K]である完全接続層に対して、重みテンソルの次元は一般的に2であり、バイアス及びバッチ正規化層に対して、重みテンソルの次元は一般的に1である。R/Sは、畳み込みカーネルのサイズであり、Cは、入力特徴のサイズであり、Kは、出力特徴のサイズである。畳み込み層の場合、2D[R][S]次元を1D[RS]次元に再形成して、4Dテンソル[R][S][C][K]を3Dテンソル[RS][C]][K]に再形成することができる。完全接続層はR=S=1の3Dテンソルの特別な例と見なされる。
【0086】
3Dテンソル[RS][C][K]は、[C][K]平面に沿って、3Dコーディングツリーユニット(CTU3D)と呼ばれる重複しない小さなブロックに分割される。CTU3Dブロックは、四分木構造に基づき、さらに3Dコーディングユニット(CU3D)に分割される。四分木構造におけるノードを分割するかどうかについて、レート歪み(rate-distortion、RD)に基づく決定に依存することができる。いくつかの実施形態では、スライス(slice)、タイル(tile)又は他のブロック分割メカニズムは、CTU3D/CU3D分割方法と組み合わせて使用して、多用途ビデオコーディング(Versatile Video Coding、VVC)標準による分割方式に類似する方式で、[C][K]平面に沿って分割する。
【0087】
実施形態では、以上のCTU3D/CU3D分割方法を使用する場合、1つ又は複数のdq_flagは、異なるブロック分割レベル(例えば、CU3D、CTU3D、スライス、タイルなどのレベル)で定義され、信号で伝送されることができる。
【0088】
III. ビットストリームにおけるサブ層伝送順序
【0089】
1.スケール因子層、バイアス層及びBatchnorm層
【0090】
いくつかの実施形態では、ローカルパラメータスケールツールは、ニューラルネットワークの層又はサブ層に対して量子化を実行した後、ローカルスケール因子をモデルパラメータに追加するために使用されることができる。各量子化誤差による予測パフォーマンスの損失を低減させるために、スケール因子を調整又は最適化することができる。
【0091】
実施形態では、量子化されたニューラルネットワークを入力として、ローカルスケール適応(local scaling adaptation、LSA)方法を実行する。例えば、ニューラルネットワークの畳み込み(conv)層及び完全接続(fc)層の直線成分(重みとも呼ばれる)は、量子化されると予期する(ただし、必ずしもそうではない)。そして、当該方法は因子(スケール因子とも呼ばれる)をconv層及びfc層の重みの出力に導入する。例えば、fc層の場合、因子は、重み行列の行数と同じ次元のベクトルに対応し、当該ベクトルはそれぞれ要素ごとに乗算される。conv層の場合、各出力特徴マップのスケール因子を使用して、畳み込み属性を保存することができる。
【0092】
図6はLSAプロセスの例を示す。第1のステップ(620)では、量子化ステップサイズΔを使用して重みテンソル(610)を量子化する。第2のステップでは、LSAを使用することで、量子化の予測損失を低減させる。示されているように、スケール因子[1.1 0.7-0.3 2.2]を含むベクトルが適用される。
【0093】
いくつかの実施形態では、符号化方法で、スケール因子とbatchnorm層とを折り畳む(batchnorm折り畳み)。conv層又はfc層の後がバッチ正規化層である場合、当該方法を使用することができる。この場合、バッチ正規化層は、以下の方式で、conv/fc層(又はconv/fc層における重みテンソル)と折り畳むことができる。
【数5】

ここで、sは、LSAにおけるスケール因子を示し、Wは、重みテンソルを示し、Xはソースデータを示し、bはバイアスを示し、γ、σ、μ及びβは、batchnormパラメータであり、
【数6】

は、取得したスケール因子を示し、且つ
【数7】

は、取得したバイアスを示す。したがって、この場合、γ、σ、μ及びβを使用して、sではなく、α及びδを信号で伝送することができる。
【0094】
いくつかの実施形態では、新たなbatchnormパラメータのセットを取得する以下のバッチ正規化折り畳み操作(順序付けられたステップ)を使用して、モデルのパラメータを変更できない場合(例えば、復号器がパラメータのタイプの変更をサポートしない場合)、別の形式のbatchnorm折り畳みを適用することができる。
【数8】


【0095】
この場合、σ及びμは、自明な値(trivial value)を含む。いくつかの例では、自明なパラメータは自明な値に設定され、ビットストリームにおいて信号で伝送されない。
【0096】
上記のLSA又はbatchnormの折り畳みの例では、式5~式9におけるスケール因子、バイアス及びbatchnormパラメータs、b、γ、σ、μ、β、α、δは、ニューラルネットワークモデルの層で使用可能である場合、それぞれが対応する層に属するサブ層を形成することができる。各サブ層のパラメータは、パラメータテンソルにグルーピングされることができる。なお、これらのサブ層/テンソルの全ては必ずしも、圧縮されたニューラルネットワークのビットストリームに存在するわけではない。どのサブ層/パラメータがビットストリームに存在するかということは、ニューラルネットワークの構成、及びニューラルネットワークの圧縮に使用されるコーディングツール(例えば、LSA方法や特定のbatchnorm折り畳み方法など)に依存する。
【0097】
2.ビットストリームにおけるサブ層の順序付け
【0098】
いくつかの実施形態では、ニューラルネットワークモデルを介した推定プロセス中に、推定エンジンは、計算コスト及び/又はメモリ帯域幅消費を低減させるために、任意の可能な場合、複数のテンソル、サブ層又は層をマージ(組み合わせ又は融合)する。例えば、ニューラルネットワークモデルにおける層は、複数のサブ層を含んでもよい。これらのサブ層のテンソルが順番に、前の層又はサブ層から生成したデータを1つずつ処理するために使用される場合、中間データは、メモリに記憶され、メモリから、複数のラウンドで検索される。これによって、大量のメモリアクセス及び行列計算が発生する。サブ層をマージした後、前の層/サブ層からのソースデータに対して、1回限りの処理を行うことで、このようなコストを避けることができる。
【0099】
例えば、conv層又はfc層の後がバイアス層である場合、推定エンジンは、バイアス層とconv層又はfc層とをマージする。conv層又はfc層の後がバッチ正規化層である場合、推定エンジンはバッチ正規化層をconv層又はfc層にマージする。conv層又はfc層にスケール因子を導入した場合、推定エンジンはスケール因子をバッチ正規化層にマージし、その後、当該バッチ正規化層をconv層又はfc層にマージすることができる。
【0100】
いくつかの実施形態では、推定プロセスはパイプライン方式で、復号化プロセスと並行して実行することができる。例えば、ビットストリームにおける、圧縮形式の重みテンソルは、ブロックごとに復号される(例えば、行ごと、又はCU3D CU3D)。これらのブロックは、復号化プロセスから順番に出力されることができる。復号化プロセスから重みテンソルブロックを取得できる場合、推定エンジンは、重みテンソルブロックを使用して、前の層/サブ層からのソースデータに対してデータ処理をオンザフライで実行することができる。言い換えると、重みテンソル全体が復号されて使用可能になる前に、推定操作を開始できる。
【0101】
ビットストリームにおいて、スケール因子、バイアス及び/又はバッチ正規化サブ層係数をconv係数又はfc(重みテンソル)係数の後に配置する場合、一部の使用可能な重みテンソルに基づき、前記サブ層/層マージ技術とオンザフライ操作とを組み合わせて使用することができない。
【0102】
いくつかの実施形態では、オンザフライ操作とサブ層/テンソルマージ技術との組み合わせを促進するために、ニューラルネットワークの圧縮表現が付けられたビットストリームにおいて、ニューラルネットワークの層における非重み係数(conv係数又はfc係数(重み係数)以外の係数)のサブ層は、conv係数又はfc係数(重み係数)のサブ層の前に設置される。このようにして、conv係数又はfc係数を再構成する場合、非重み係数のサブ層を再構成するとともに、使用可能にする。重みテンソルの一部(ブロック)が使用可能になった場合、まず、使用可能な非重みサブ層の係数を使用して、当該部分に対してマージ操作を実行することができる。ソースデータをオンザフライで処理するために、マージ操作の結果を推定エンジンに入力することができる。
【0103】
様々な実施形態では、conv係数又はfc係数の前に再構成された係数のサブ層は、スケール因子係数サブ層、バイアス係数サブ層、バッチ正規化係数層、又はconv係数又はfc係数のサブ層とマージ可能な他のタイプのサブ層を含むことができる。
【0104】
実施形態では、ビットストリームにおいて、スケール因子係数、バイアス係数及び/又はバッチ正規化係数は、conv係数又はfc係数の前に設けられる。一実施形態では、ニューラルネットワークモデルにおけるconv層又はfc層の後がバイアスである場合、ビットストリームにおいてバイアス係数は、conv係数又はfc係数の前に設けられることができる。別の実施形態において、conv層又はfc層の後がバッチ正規化層である場合、ビットストリームにおいてバッチ正規化係数は、conv係数又はfc係数の前に設けられる。別の実施形態では、スケール因子がconv層又はfc層に使用される場合、ビットストリームにおいてスケール因子は、conv係数又はfc係数の前に設けられる。別の実施形態では、スケール因子がconv層又はfc層に使用され、且つconv層又はfc層の後がバイアス層及び/又はバッチ正規化層である場合、ビットストリームにおいてスケール因子層、バイアス層及び/又はバッチ正規化層はconv係数又はfc係数の前に設けられる。
【0105】
一実施形態では、上記のスケール因子係数、バイアス係数及び/又はバッチ正規化係数はそれらの初期値(例えば、量子化なし又は非量子化)で示され、任意の適切な符号化方法を選択的に使用して符号化することができる。別の実施形態では、上記のスケール因子係数、バイアス係数及び/又はバッチ正規化係数は、それらの量子化された値で表され、任意の符号化方法を選択的に使用して符号化することができる。
【0106】
一実施形態では、ニューラルネットワークのモデル構成の伝送は、ニューラルネットワークの圧縮表現が付けられたビットストリーム本体から分離されている場合、ビットストリーム本体を受信する復号器は、モデル構成を分析し、それに応じて層又はサブ層の復号シーケンスを調整又は決定するように配置されることができる。例えば、層は、重みテンソルサブ層、及びその後のbatchnormサブ層を含む場合、復号器は、ビットストリーム本体においてbatchnorm層の係数が重みテンソルサブ層の前に設置されると決定することができる。層は重みテンソルサブ層、スケール因子及びバイアスを含む場合、復号器は、ビットストリーム本体においてスケール因子及びバイアスの係数が重みテンソルサブ層の前に設置されると決定することができる。
【0107】
別の実施形態では、ニューラルネットワークのモデル構成をニューラルネットワークの圧縮表現が付けられたビットストリーム本体に埋め込まれている場合、例えば、ニューラルネットワークにおいてconv/fc層(重みテンソルのサブ層)の後がバッチ正規化層であるかどうかを示すために、conv/fc層ヘッドにフラグを追加することができる。ビットストリーム本体を受信する復号器は、それに応じてサブ層/層の復号シーケンスを決定又は調整することができる。
【0108】
別の実施形態では、ニューラルネットワークのモデル構成がニューラルネットワークのビットストリーム本体に埋め込まれている場合、例えば、ニューラルネットワークにおいてバイアス又はローカルスケールテンソルが当該conv/fc層に存在するかどうかを示すために、conv/fc層ヘッドにフラグを追加する。別の実施形態では、ニューラルネットワークの構成情報がニューラルネットワークのビットストリーム本体に埋め込まれている場合、構成情報に基づき、重みテンソル(conv/fcサブ層)の以下の1次元テンソルをニューラルネットワークモデルにおけるバイアステンソル/ローカルスケールテンソルに推定することができる。
【0109】
IV. 統一によるモデルパラメータリダクション
【0110】
いくつかの実施形態では、1つ又は複数のパラメータリダクション方法で、ニューラルネットワークモデルを処理することで、ニューラルネットワークのコンパクト表示を取得する。この方法の例示は、パラメータスパース化、パラメータトリミング、パラメータ(例えば、重み)統一及び分解方法を含むことができる。例えば、統一プロセスでは、モデルパラメータを処理して、類似したパラメータグループを生成することができる。結果として、モデルパラメータのエントロピーを低減することができる。ある場合、統一によって重みを除去するか又はゼロに制限することはない。
【0111】
いくつかの実施形態では、学習による方法で、コンパクトなDNNモデルを取得する。重み係数の値が小さいほど、その重要度が低いという仮定に基づき、重要ではない重み係数を除去することをターゲットとする。いくつかの例では、ネットワークトリミング方法で、当該ターゲットを明らかに追求することができ、スパース性を促進する正則化項をネットワーク訓練ターゲットに追加することができる。いくつかの実施形態では、コンパクトネットワークモデルを学習した後、ネットワークモデルの重み係数は、量子化及びその後のエントロピー符号化によって、さらに圧縮される。このような更なる圧縮プロセスはDNNモデルの記憶サイズを大幅に低減させ、あるシナリオでは、モバイル装置やチップなどでのモデル配置にとって非常に重要である。
【0112】
本開示は、構造化された重み統一方法を使用してDNNモデルを圧縮し、及び圧縮されたDNNモデルを推定プロセスに使用するための方法及び関連するシンタックス要素を提供する。結果として、推定計算のパフォーマンス及び圧縮効率を向上させることができる。
【0113】
1.統一正則化
【0114】
反復ネットワーク再訓練/細分化フレームを使用して、オリジナル訓練ターゲット及び重み統一損失を共同で最適化する。重み統一損失は圧縮率損失、統一歪み損失及び計算速度損失を含む。学習されたネットワーク重み係数は、オリジナルターゲットパフォーマンスを維持することができ、更なる圧縮に適しており、学習された重み係数を使用して計算を高速化することができる。当該方法で、オリジナルの事前訓練DNNモデルを圧縮する。当該方法は、トリミングされたDNNモデルをさらに圧縮するための追加処理モジュールとしても使用できる。
【0115】
以下は、統一正則化技術の例を記載する。D={(x,y)}でデータセットを示し、ターゲットyを入力xに割り当てる。Θ={w}でDNNの重み係数のセットを示す。ネットワーク訓練は、ターゲット損失£(D|Θ)を最小化できるように重み係数の最適なセットΘ*を学習することをターゲットとする。例えば、いくつかのネットワークトリミング方法において、ターゲット損失£(D|Θ)は、経験的データ損失£(D|Θ)及びスパース性を促進する正則化損失£(Θ)という2つの部分がある。
【数9】


ここで、λ≧0はデータ損失と正則化損失の寄与をバランスするハイパーパラメータである。
【0116】
スパースを促進する正則化損失は、重み係数全体にわたって正則化を行い、取得したスパース重みは、推定効率又は計算加速度と弱い関係を有する。別の観点から、トリミングされた後、スパース重みは、別のネットワーク訓練プロセスをさらに経ることができ、当該プロセスから、重み係数の最適なセットを学習でき、更なるモデル圧縮の効率を向上させることができる。
【0117】
いくつかの実施形態では、以下の重み統一損失£(D|Θ)は、オリジナルターゲット損失とともに最適化することができる。
【数10】

ここで、λ≧0は、オリジナル訓練ターゲットと重み統一の寄与をバランスするためのハイパーパラメータである。式11の£(D|Θ)を共同で最適化することで、重み係数の最適なセットを取得でき、これによって、更なる圧縮の有効性に大きく寄与する。また、式11の重み統一損失は、畳み込み演算が一般的な行列乗算(general matrix multiplication、GEMM)プロセスとして実行される基本的なプロセスを考慮に入れることで、計算を大幅に高速化することができる最適化された重み係数を生成する。なお、重み統一損失は、一般的な正則化をする場合(λ>0場合)又は有しない場合(λ=0場合)の一般的なターゲット損失に対する追加正則化項と見なされる。また、当該方法は柔軟に、任意の正則化損失£(Θ)に適用されることができる。
【0118】
実施形態において、重み統一損失£(Θ)は圧縮率損失£(Θ)、統一歪み損失£(Θ)及び計算速度損失£(Θ)をさらに含む。
【数11】

【0119】
これらの損失項の詳細について、以降で説明する。学習有効性及び学習効率について、反復最適化プロセスをさらに説明する。第1のステップでは、必要な構成を満たす重み係数部分を固定し、そして、第2のステップでは、訓練損失をバックプロパゲーションすることで、重み係数の非固定部分を更新する。これらの2つのステップを反復的に行うことで、ますます多くの重みを徐々に固定することができ、ジョイント損失を徐々に効果的に最適化することができる。
【0120】
また、実施形態において、各層は個別に圧縮され、£(D|Θ)は以下のように書かれてもよい。
【数12】


ここで、L(W)は、j番目の層で定義される統一損失であり、Nは、量子化損失が測定される総層数であり、Wは、j番目の層の重み係数を示す。また、L(W)は、各層に対して個別に計算されるため、本開示の他の部分において、スクリプトjは、その一般性を失うことなく、省略される。
【0121】
実施形態において、各ネットワーク層に対して、その重み係数Wは、サイズが(c,k,k,k,c)である一般的な5次元(5-Dimension、5D)テンソルに形成される。層の入力は、サイズが(h,w,d,c)である4次元(4-Dimension、4D)テンソルAであり、層の出力は、サイズが(h,w,d,c)である4DテンソルBである。サイズc、k、k、k、c、h、w、d、h、w、dは、1以上の整数である。サイズc、k、k、k、c、h、w、d、h、w、dのいずれかが数値1を取る場合、対応するテンソルは、低い次元に減少される。各テンソルにおける各項はいずれも浮動小数点数である。Mで、Wと同じサイズを有する5Dバイナリマスクを示し、Mにおける各項はいずれもバイナリ数0/1であり、対応する重み係数がトリミング/保留されるかどうかを示す。MをWに関連付けて導入することで、Wが、トリミングされたDNNモデルに由来する場合に対処し、トリミングされたDNNモデルにおいて、ネットワークにおけるニューロンの間のある接続を計算から除去する。Wは、オリジナルのトリミングされない事前訓練モデルに由来する場合、Mにおける全ての項の値は、1である。A、M及びWに基づき、畳み込み演算
【数13】

によって、出力Bを計算する。
【数14】

【0122】
パラメータh、w及びd(h、w及びd)は入力テンソルA(出力テンソルB)の高さ、重み及び深さである。パラメータc(c)は入力(出力)チャネルの数である。パラメータk、k及びkはそれぞれ、高さ軸、重み軸及び深さ軸に対応する畳み込みカーネルのサイズである。つまり、各出力チャネルv=1,...,cに対して、式14で説明されている演算は、サイズが(c, k, k, k)である4D重みテンソルWと入力Aの畳み込みと見なされてもよい。
【0123】
実施形態において、式14における加算演算の順序を変更してもよい。実施形態において、式14の演算は以下のように実行することができる。5D重みテンソルは、サイズが(c,c,k)である3Dテンソルに再形成され、ここで、k= k・k・kである。再形成プロセスでは、再形成されたインデックスは、k軸の順序に沿って、再形成アルゴリズムにより決定され、これについて、以降、詳しく説明する。
【0124】
実施形態において、重み係数の所望の構成は、2つの態様を考慮に入れることによって設計される。まず、重み係数の構成は、学習された重み係数を使用する推定計算を高速化するために、畳み込み演算を実現するための基本的なGEMM行列乗算プロセスと一致する。次に、重み係数の構成は、さらなる圧縮のために、量子化及びエントロピーコーディング効率を向上させるのに役立つ。
【0125】
一実施形態において、ブロック当たりの構成は、3D再形成された重みテンソルにおける各層の重み係数に使用される。具体的に、実施形態において、3Dテンソルは、サイズが(g,g,g)であるブロックに分割され、ブロック内の全ての係数は、統一される。ブロックにおける統一の重みは、事前定義された統一ルールに従うように配置され、例えば、全ての値を同じになるように設定することで、量子化プロセスで、1つの値でブロック全体を示すことができ、高い効率を生成する。
【0126】
重みを統一する複数のルールが存在してもよく、各ルールは、当該ルールによって導入された誤差を測定する統一歪み損失に関連付けられる。例えば、重みを同じになるように設定する代わりに、重みは、そのオリジナル符号を維持しながら、同じ絶対値を有するように設定される。
【0127】
このような設計構成を前提とし、反復中に、まず、統一歪み損失、推定した圧縮率損失及び推定した速度損失を考慮して、固定対象となる重み係数の部分を決定する。次に、第2のステップで、通常のニューラルネットワーク訓練プロセスを実行し、バックプロパゲーションメカニズムによって、残りの固定されていない重み係数を更新する。
【0128】
2.ワークフロー
【0129】
図7は、反復的な再訓練/微調整プロセスの全体的なフレームを示し、反復的な再訓練/微調整プロセスは、2つのステップを反復的に交互に実行して、式11のジョイント損失を徐々に最適化する。重み係数W及びマスクMを有する事前訓練されたDNNモデルが与えられた場合、当該モデルは、トリミングされたスパースモデルであってもよいし、トリミングされていない非スパースモデルであってもよく、第1のステップで、当該プロセスは、まず、統一インデックス順序及び方法選択プロセスを介して、インデックスI(W)=[i, …, i]の順序を決定して、重み係数W(及び対応するマスクM)を再形成し、k=k-k-kは、重みWの再形成された3Dテンソルである。
【0130】
具体的に、実施形態において、当該プロセスは、まず、重みWの再形成された3Dテンソルを、サイズが(g,g,g)であるスーパーブロックに分割することができる。Sでスーパーブロックを示す。スーパーブロックS内の重み係数の重み統一損失に基づき、即ち、式12の重み統一損失£(Θ)に基づき、各スーパーブロックSに対して、I(W)を個別に決定する。スーパーブロックサイズの選択は一般的に、後続の圧縮方法に依存する。例えば、当該実施形態において、プロセスは、後続の圧縮プロセスで使用される3次元コーディングツリーユニット(CTU3D)と一致するために、サイズが(64,64,k)であるスーパーブロックを選択することができる。
【0131】
実施形態において、各スーパーブロックSはさらに、サイズが(d、d、d)であるブロックに分割される。重みの統一は、ブロック内で行われる。各スーパーブロックSに対して、重みユニファイアを使用して、ブロックS内の重み係数を統一する。bで、Sにおけるブロックを示し、bにおける重み係数を異なる方式で統一してもよい。例えば、重みユニファイアは、bにおける全ての重みを同じになるように設定し、例えば、bにおける全ての重みの平均値に設定する。この場合、bにおける重み係数のLノルム(例えば、bにおける重みの分散としてのLノルム)は、平均値を使用してブロック全体を示す統一歪み損失£(b)を反映する。
【0132】
また、重みユニファイアは、全ての重みを、オリジナル符号を維持しながら同じ絶対値を有するように設定することができる。この場合、bにおける重みの絶対値のLノルムを使用して、L(b)を測定することができる。言い換えると、重み統一方法uを与え、重みユニファイアは、方法uを使用してbにおける重みを統一することができ、関連付けられる統一歪み損失はL(u,b)である。そして、当該プロセスは、Sにおける全てのブロックにわたって、L(u,b)を平均化し、即ち、L(u,S)=average(L(u,b))を求めることで、スーパーブロックS全体の統一歪み損失£(u,S)を計算する。
【0133】
同様に、式12の圧縮率損失£(u,S)は、方法uを使用してスーパーブロックSにおける重みを統一する圧縮効率を反映する。例えば、全ての重みが同じに設定される場合、1つの数字のみで、ブロック全体を示し、圧縮率はrcompression=g・g・gである。£(u,S)は1/rcompressionに定義される。
【0134】
式12における速度損失£(u,S)は、方法uで統一されたSにおける重み係数を使用することの推定計算速度を反映し、統一重み係数を使用する計算における乗算演算の回数の関数である。
【0135】
これまで、重みWの3Dテンソルを生成するためにインデックスを並べ替える様々な可能な方式、及び重みユニファイアを使用して重みを統一する様々な可能な方法uに対して、当該プロセスは、£(u,S)、£(u,S)、£(u,S)に基づき、式12の重み統一損失£u(u,S)を計算する。最適な重み統一方法u*及び最適な並べ替えインデックスI*(W)を選択することができ、それらの組み合わせは、最小の重み統一損失£*(u,S)を有する。kが小さい場合、当該プロセスは、最適なI*(W)及びu*を網羅的に見つけることができる。kが大きい場合、他の方法で、次善のI*(W)及びu*を検索することができる。本開示は、I*(W)及びu*を決定する具体的な方式を限定するものではない。
【0136】
各スーパーブロックSに対して、インデックスI*(W)の順序及び重み統一方法u*を決定した場合、ターゲットは、式11で説明されているジョイント損失を反復的に最小化することで、更新された最適重み係数W*及び対応する重みマスクM*のセットを見つけることになる。
【0137】
具体的に、第t回の反復に対して、当該プロセスは、現在の重み係数W(t-1)及びマスクM(t-1)を有することができる。また、当該プロセスは、訓練プロセス全体では、重み統一マスクQ(t-1)を保持することができる。重み統一マスクQ(t-1)の形状は、W(t-1)の形状と同じであり、対応する重み係数が統一されるかどうかを記録する。そして、重み統一プロセスによって、統一された重み係数W(t-1)及び新たな統一マスクQ(t-1)を計算する。
【0138】
重み統一プロセスでは、当該プロセスは、決定されたインデックスI*(W)の順序に基づき、Sにおける重み係数を並べ替え、そして、それらの統一損失£(u*,S)に基づき、スーパーブロックを昇順(accenting order)に配列する。ハイパーパラメータqを与え、最初のq個のスーパーブロックを選択して統一する。また、重みユニファイアは、対応する決定された方法u*を使用して、選択したスーパーブロックSにおけるブロックを統一することによって、統一された重みW(t-1)及び重みマスクM(t-1)を取得する。
【0139】
統一マスクQ(t-1)における対応するエントリはいずれも統一と記される。本実施形態において、M(t-1)は、M(t-1)と異なり、トリミングされた重み係数及びトリミングされていない重み係数の両方を有するブロックに対して、オリジナルのトリミングされた重み係数は、重みユニファイアによって、非ゼロ値を有するように再び設定され、M(t-1)における対応する項は、変更される。他のタイプのブロックの場合、M(t-1)は自然に、そのまま保持される。
【0140】
そして、第2のステップでは、当該プロセスは、Q(t-1)における、統一と記される重み係数を固定し、ニューラルネットワーク訓練プロセスで、W(t-1)の残りの固定されていない重み係数を更新することで、更新されたW(t)及びM(t)を生成することができる。
【0141】
D={(x,y)}で訓練データセットを示し、Dは、オリジナルデータセットD={(x,y)}と同じであり、当該オリジナルデータセットD={(x,y)}に基づき、事前訓練された重み係数Wを取得する。Dは、Dと異なるデータセットであってもよいが、オリジナルデータセットDと同じデータ分布を有する。第2のステップでは、各入力xは、現在重み係数W(t-1)及びマスクM(t-1)を使用するネットワークフォワード計算プロセスを介して、現在のネットワークを通過し、推定出力
【数15】

を生成する。グラウンドトゥルースアノテーション(ground-truth annotation)y及び推定出力
【数16】

に基づき、ターゲット損失計算プロセスで、式11におけるターゲット訓練損失£(D|Θ)を計算することができる。
【0142】
そして、ターゲット損失G(W(t-1))の勾配を計算することができる。例えばTensorflow又はPytorchなどの深層学習フレームで使用される自動勾配計算方法は、G(W(t-1))の計算に使用される。勾配G(W(t-1))及び統一マスクQ(t-1)に基づき、バックプロパゲーション及び重み更新プロセスを使用して、バックプロパゲーションによって、W(t-1)の、固定されていない重み係数及び対応するマスクM(t-1)を更新する。
【0143】
再訓練プロセス自体は反復プロセスでもあり、図7において、点線枠で示される。一般的に、例えば、ターゲット損失が収束するまで、W(t-1)の、固定されていない部分及び対応するM(t-1)を複数回の反復で更新する。そして、システムは、次の反復tに進み、新たなハイパーパラメータq(t)を与え、W(t-1)、u*及びI*(W)に基づき、重み統一プロセスで、新たな統一重み係数W(t)、マスクM(t)及び対応する統一マスクQ(t)を計算する。
【0144】
なお、再形成された重み係数を並べ替えるインデックスI(W)=[i ,…,i]の順序は、トリビアルオリジナル順序(trivial original order)を採用できるため、選択可能及び無視可能である。この場合、当該プロセスは、再形成された重み係数を並べ替えるプロセスをスキップすることができる。
【0145】
本明細書が開示される統一によるパラメータリダクション方法は、以下の技術的利点を提供する。統一正則化は、学習された重み係数に対して更なる圧縮を行う効率を向上させ、最適化された重み係数を使用する計算を高速化するように意図される。DNNモデルのサイズを大幅に削減し、推定計算を高速化することができる。
【0146】
また、反復的な再訓練プロセスによって、当該方法は、オリジナル訓練ターゲットのパフォーマンスを効果的に維持しながら、圧縮及び計算効率を追求することができる。反復的な再訓練プロセスは、異なる時間で異なる損失を導入する柔軟性をさらに与えることで、システムは、最適化プロセス中に、異なるターゲットに専念する。また、当該方法は、一般的に、異なるデータ形態を有するデータセットに適用できる。入力/出力データは、汎用の4Dテンソルであり、実のビデオスニペット、画像、又は抽出された特徴マップであってもよい。
【0147】
3.統一によるパラメータリダクションのためのシンタックス要素
【0148】
いくつかの実施形態では、1つ又は複数のシンタックス要素を使用して、重み統一によるモデルパラメータリダクション方法で、ニューラルネットワークモデル(例えば、DNNモデル)を圧縮し、及び、対応する圧縮されたニューラルネットワークモデルを使用する。
【0149】
図8は、統一によるパラメータリダクションの例示的なシンタックス表(800)を示す。シンタックス表(800)は、ビットストリームで伝送されるモデルパラメータセットのペイロード部分における、mps_unification_flagとして示されるモデルレベル統一フラグのシンタックス要素を含む。mps_unification_flagは、ビットストリームにおいて当該モデルパラメータセットを参照する圧縮データユニットに統一を適用するかどうかを指定することができる。ビットストリームにおいて、圧縮データユニットには、圧縮されたニューラルネットワークモデルの圧縮データが含まれる。
【0150】
mps_unification_flagは、復号され、また、例えば、統一が適用されたことを示す値(例えば、1)を有する場合、ビットストリームにおけるモデルパラメータセットペイロードシンタックス部分で、unification_performance_map()として示されるモデルレベル統一パフォーマンスマップのシンタックス構成を受信する。実施形態において、モデルパラメータセットにおけるunification_performance_map()はモデルレベルで、閾値の数、再形成されたテンソル次元、スーパーブロック及びブロック次元、統一閾値などを指定することができる。実施形態において、unification_performance_map()は(統一プロセスに適用される)異なる統一閾値と、取得したニューラル推定精度との間のマッピングを指定することができる。
【0151】
一例では、ニューラルネットワークの出力の異なる側面又は特性に対して、取得した精度を個別に提供する。例えば、分類器ニューラルネットワークに対して、全てのクラスを考慮した全体的な精度に加えて、各統一閾値はいずれも、各クラスに対する個別の精度にマッピングされる。ニューラルネットワークの出力順序、即ち、ニューラルネットワーク訓練中に指定された順序に基づき、クラスをソートする。
【0152】
図9は、統一パフォーマンスマップのシンタックス構成(900)の例を示す。構成(900)において、シンタックス要素count_thresholdsは統一閾値の数を指定する。一例では、当該数は非ゼロである。シンタックス要素count_reshape_tensor_dimensionsは、再形成されたテンソルに対してどの次元のカウンターを指定したかということを指定する。例えば、3次元テンソルに再形成された重みテンソルの場合、count_dimsは3である。
【0153】
シンタックス要素reshaped_tensor_dimensionsは、次元値の配列又はリストを指定する。例えば、3次元テンソルに再形成された畳み込み層の場合、dimは、長さが3である配列又はリストである。シンタックス要素count_super_block_dimensionsは、どの次元のカウンターを指定したかということを指定する。例えば、3次元スーパーブロックの場合、count_dimsは3である。シンタックス要素super_block_dimensionsは、次元値の配列又はリストを指定する。例えば、3次元スーパーブロックの場合、dimは、長さが3である配列又はリスト、即ち、[64, 64, kernel_size]である。シンタックス要素count_block_dimensionsは、どの次元のカウンターを指定したかということを指定する。例えば、3次元ブロックの場合、count_dimsは3である。
【0154】
シンタックス要素block_dimensionsは、次元値の配列又はリストを指定する。例えば、3次元ブロックの場合、dimは、長さが3である配列又はリスト、即ち、[2, 2, 2]である。シンタックス要素unification_thresholdは、テンソルブロックに適用されることで、当該テンソルブロックにおける重みの絶対値を統一する閾値を指定する。シンタックス要素nn_accuracyは、ニューラルネットワークの全体的な精度を指定する(例えば、全てのクラスを考慮した分類精度)。
【0155】
シンタックス要素count_classesは、統一閾値ごとに個別の精度を提供するクラスの数を指定する。シンタックス要素nn_class_accuracyは、ある統一閾値が適用されるときのあるクラスの精度を指定する。
【0156】
図10は、統一によるパラメータリダクションの別の例示的なシンタックス表(1000)を示す。シンタックス表(1000)は、ビットストリームで伝送される層パラメータセットのペイロード部分を示す。層パラメータセットは、lps_unification_flagとして示される層レベル統一フラグのシンタックス要素を含む。lps_unification_flagは、ビットストリームにおいて当該層パラメータセットを参照する圧縮データユニットに統一を適用するかどうかを指定する。圧縮データユニットには、圧縮されたニューラルネットワークモデルの層の圧縮データが含まれる。
【0157】
lps_unification_flagは、復号され、また、例えば、統一が適用されたことを示す値(例えば、1)を有する場合、ビットストリームにおける層パラメータセットペイロードシンタックス部分で、unification_performance_mapとして示される層レベル統一パフォーマンスマップのシンタックス構成を受信することができる。実施形態において、層パラメータセットにおけるunification_performance_map()は、層レベルで、閾値の数、再形成されたテンソル次元、スーパーブロック及びブロック次元、統一閾値などを指定する。
【0158】
実施形態において、層パラメータセットにおけるunification_performance_map()は、(層レベルに適用される)異なる統一閾値と、取得したニューラル推定精度との間のマッピングを指定することができる。実施形態において、層パラメータセットにおけるunification_performance_map()は、図9に示されるモデルレベルにおける構成に類似する構成を有することができる。
【0159】
一例では、モデルパラメータセットにおけるmps_unification_flag、及び層パラメータセットにおけるlps_unification_flagの両方はいずれもビットストリームにおいて、信号で伝送される。例えば、mps_unification_flag & lps_unification_flagの値は1に等しい。このようなシナリオにおいて、層パラメータセットにおけるunification_performance_map()のシンタックス要素の値は、当該層パラメータセットを参照する圧縮データユニットに使用される。言い換えると、層パラメータセットにおけるunification_performance_map()を参照する層について、層パラメータセットにおけるunification_performance_map()のシンタックス要素の値は、モデルパラメータセットにおけるunification_performance_map()のシンタックス要素の値をオーバーライドする。
【0160】
図11は、本開示の実施形態によるプロセス(1100)を概説するフローチャートを示す。プロセス(1100)は例えば、ニューラルネットワークの圧縮表現に対応するビットストリームを復号(解凍)するために、電子装置(130)のような装置で使用されることができる。当該プロセスは、(S1101)から開始し、(S1110)に進むことができる。
【0161】
(S1110)で、依存量子化有効化フラグをビットストリームで受信することができる。例えば、モデルレベル、層レベル、サブ層レベル、3次元コーディングユニット(CU3D)レベル又は3次元コーディングツリーユニット(CTU3D)レベルで、依存量子化有効化フラグを信号で伝送する。従って、依存量子化フラグは、ニューラルネットワーク構成における異なるレベルの圧縮データに適用されることができる。
【0162】
(S1120)で、依存量子化有効化フラグに基づき、依存量子化方法をニューラルネットワークの各モデルパラメータに適用するかどうかを決定する。例えば、依存量子化有効化フラグの値1は、依存量子化方法が適用されていることを示し、値0は、均一量子化方法が適用されていることを示す。
【0163】
(S1130)で、依存量子化方法を適用する場合、依存量子化方法に基づき、ニューラルネットワークの各モデルパラメータを再構成することができる。例えば、依存量子化方法を使用して、対応してエントロピー復号化及び逆量子化操作を実行することができる。プロセス(1100)は、(S1199)に進む。
【0164】
(S1140)で、均一量子化方法を適用する場合、均一量子化方法に基づき、ニューラルネットワークの各モデルパラメータを再構成することができる。例えば、均一量子化方法を使用して、対応してエントロピー復号化及び逆量子化操作を実行することができる。プロセス(1100)は(S1199)に進む。
【0165】
(S1199)で、(S1130)又は(S1140)のステップが完成した後、プロセス(1100)は終了する。
【0166】
上記の技術は、コンピュータ可読指令を使用するコンピュータソフトウェアとして実現し、物理的に1つ又は複数のコンピュータ可読媒体に記憶することができる。例えば、図12は、開示された主題のいくつかの実施形態を実現するのに適したコンピュータシステム(1200)を示す。
【0167】
コンピュータソフトウェアは、任意の適切なマシンコード又はコンピュータ言語を使用して符号化することができ、これらのマシンコード又はコンピュータ言語は、アセンブリ、コンパイル、リンク又は類似のメカニズムによって、1つ又は複数のコンピュータ中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)などによって直接的に実行されるか、又は解釈、マイクロコードによって実行される指令を含むコードを作成することができる。
【0168】
指令は、例えば、パーソナルコンピュータ、タブレットコンピュータ、サーバー、スマートフォン、ゲーム装置、モノのインターネット装置などを含む様々なタイプのコンピュータ又はその構成要素で実行することができる。
【0169】
図12に示される、コンピュータシステム(1200)についての構成要素は、本質的に例示的なものであり、本開示の実施形態を実現するためのコンピュータソフトウェアの使用範囲又は機能に対する任意の限定を示唆するものではない。構成要素の配置も、コンピュータシステム(1200)の例示的な実施形態に示めされる構成要素のいずれか1つ又はその組み合わせに関する任意の依存性又は要件を有すると解釈されるべきではない。
【0170】
コンピュータシステム(1200)はいくつかのヒューマンマシンインターフェイス入力装置を含んでもよい。このようなヒューマンマシンインターフェイス入力装置は、1つ又は複数の人間ユーザーの、例えば触覚入力(例えば、キーストローク、スワイプ、データグローブ移動)、オーディオ入力(例えば、音声、たたき)、視覚入力(例えば、ジェスチャー)、嗅覚入力(図示せず)による入力に応答することができる。ヒューマンマシンインターフェイス装置はさらに、例えば、オーディオ(例えば、音声、音楽、環境音)、画像(例えば、スキャン画像、静止画像カメラから取得した写真画像)、ビデオ(例えば、立体ビデオを含む2次元ビデオ、3次元ビデオ)などの、必ず人間による意識的な入力に直接関連しないいくつかのメディアをキャプチャするために使用される。
【0171】
入力ヒューマンマシンインターフェイス装置は、キーボード(1201)、マウス(1202)、タッチパッド(1203)、タッチパネル(1210)、データグローブ(図示せず)、ジョイスティック(1205)、マイク(1206)、スキャナ(1207)、カメラ(1208)のうちの1つ又は複数を含んでもよい(それぞれが1つだけを描く)。
【0172】
コンピュータシステム(1200)はさらにいくつかのヒューマンマシンインターフェイス出力装置を含んでもよい。このようなヒューマンマシンインターフェイス出力装置は、例えば触覚出力、音、光及び匂い/味を介して1つ又は複数の人間ユーザーの感覚を刺激できる。このようなヒューマンマシンインターフェイス出力装置は、触覚出力装置(例えば、タッチスクリーン(1210)、データグローブ(図示せず)又はジョイスティック(1205)による触覚フィードバックがあるが、入力装置として使用されない触覚フィードバック装置も存在する)、オーディオ出力装置(例えば、スピーカー(1209)、ヘッドフォン(図示せず))、視覚出力装置(例えば、スクリーン(1210)、CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含み、それぞれのタッチスクリーン入力能力の有無にかかわらず、それぞれの触覚フィードバック能力の有無にかかわらず、そのうちのいくつかは、例えば、立体出力方式で、2次元の視覚出力又は3次元以上の出力を出力することができ、例えば、バーチャルリアリティ眼鏡(図示せず)、ホログラフィックディスプレイ及びスモークタンク(図示せず))、及びプリンター(図示せず)である。
【0173】
コンピュータシステム(1200)はさらに、人間がアクセス可能な記憶装置及びそれらに関連する媒体、例えば、CD/DVDなどの媒体(1221)を有するCD/DVD ROM/RW(1220)を含む光学媒体、サムドライブ(1222)、リームバブルハードドライブ又はソリッドステートドライブ(1223)、磁気テープとフロッピーディスクのような伝統磁気媒体(図示せず)、専用ROM/ASIC/PLDによる、セキュリティドングル(図示せず)のようなデバイスなどを含んでもよい。
【0174】
当業者は、現在開示された主題を結合して使用される「コンピュータ可読媒体」という用語には、伝送媒体、搬送波又は他の一時的な信号が含まれていないことを理解すべきである。
【0175】
コンピュータシステム(1200)は、1つ又は複数の通信ネットワークへのインターフェースを含んでもよい。ネットワークは、例えば無線、有線、光ネットワークであってもよい。ネットワークはさらに、ローカル、ワイドエリア、メトロポリタン、車両、工業、リアルタイム、遅延耐性ネットワークなどであってもよい。ネットワークの例は、例えば、イーサネットや無線LANなどのローカルエリアネットワーク、セルラーネットワーク(GSM、3G、4G、5G、LTEなどを含む)、テレビ有線又は無線広域デジタルネットワーク(有線テレビ、衛星テレビ及び地上波テレビを含む)、車両及び工業ネットワーク(CANBusを含む)などを含む。いくつかのネットワークは一般的に、ある汎用データポート又は周辺バス(1249)(例えばコンピュータシステム(1200)のUSBポート)に接続される外部ネットワークインターフェースアダプタを必要とし、他のネットワークは一般的に、以下に記載するシステムバス(例えば、PCコンピュータシステムへのイーサネットインターフェース、又はスマートフォンコンピュータシステムへのセルラーネットワークインターフェース)に接続されることによって、コンピュータシステム(1200)のコアに統合される。これらのネットワークのいずれかによって、コンピュータシステム(1200)は他のエンティティと通信できる。このような通信は、一方向の受信のみ(例えば、放送テレビ)、一方向の送信のみ(例えば、あるCANbusデバイスへのCANbus)、又は双方向(例えば、ローカルエリア又はワイドエリアデジタルネットワークを介して他のコンピュータシステムに達する)であってもよい。あるプロトコル及びプロトコルスタックは、上記のこれらのネットワーク及びネットワークインターフェースのそれぞれで使用できる。
【0176】
前述のヒューマンマシンインターフェイス装置、人間がアクセス可能な記憶装置及びネットワークインターフェースは、コンピュータシステム(1200)のコア(1240)に接続されることができる。
【0177】
コア(1240)は、1つ又は複数の中央処理ユニット(CPU)(1241)、グラフィック処理ユニット(GPU)(1242)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Area、FPGA)形式である専門プログラム可能な処理ユニット(1243)、特定のタスクのためのハードウェアアクセラレータ(1244)などを含んでもよい。これらのデバイスは、読み取り専用メモリ(ROM)(1245)、ランダムアクセスメモリ(RAM)(1246)、例えばユーザーがアクセスできない内部ハードディスクドライブ、ソリッドステートドライブ(SSD)などの内部大容量記憶装置(1247)とともに、システムバス(1248)を介して接続されることができる。いくつかのコンピュータシステムにおいて、1つ又は複数の物理プラグという形式でシステムバス(1248)にアクセスすることで、追加のCPU、GPUなどによる拡張を可能にすることができる。周辺機器は、直接的又は周辺バス(1249)を介してコアのシステムバス(1248)に接続される。周辺バスのアーキテクチャは、PCI、USBなどを含む。
【0178】
CPU(1241)、GPU(1242)、FPGA(1243)及びアクセラレータ(1244)はある指令を実行でき、これらの指令を組み合わせると、上記のコンピュータコードを構成する。当該コンピュータコードはROM(1245)又はRAM(1246)に記憶されることができる。移行データもRAM(1246)に記憶されることができ、永久データは例えば内部大容量記憶装置(1247)に記憶されることができる。キャッシュメモリを使用することによって任意のメモリ装置への高速記憶及び検索を有効にでき、前記キャッシュメモリは、1つ又は複数のCPU(1241)、GPU(1242)、大容量記憶装置(1247)、ROM(1245)、RAM(1246)などに密接に関連付けることができる。
【0179】
コンピュータ可読媒体は、コンピュータが実現する様々な操作を実行するためのコンピュータコードをその上に有することができる。メディアとコンピュータコードは、本開示の目的のために、専門に設計及び構築されるメディアとコンピュータコードであってもよいし、又はコンピュータソフトウェア分野の当業者にとって公知且つ使用可能なタイプであってもよい。
【0180】
限定ではなく例として、アーキテクチャ(1200)、特にコア(1240)を有するコンピュータシステムは、プロセッサー(CPU、GPU、FPGA、アクセラレータなどを含む)が1つ又は複数の有形コンピュータ可読媒体に含まれるソフトウェアを実行することで機能を提供することができる。このようなコンピュータ可読媒体は、以上で紹介した、ユーザーがアクセス可能な大容量記憶装置に関する媒体、及び例えばコア内部大容量記憶装置(1247)やROM(1245)などの非一時的なコア(1240)のいくつかの記憶装置に関連付けられた媒体あってもよい。本開示を実現するための様々な実施形態のソフトウェアは、このような装置に記憶され、コア(1240)によって実行される。特定の需要に応じて、コンピュータ可読媒体には1つ又は複数の記憶装置又はチップが含まれてもよい。ソフトウェアは、コア(1240)、特にそのうちのプロセッサー(CPU、GPU、FPGAなどを含む)に、本明細書に記載の、RAM(1246)に記憶されるデータ構造を定義すること、及びソフトウェアによって定義されたプロセスに従ってこのようなデータ構造を修正することが含まれる特定プロセス又は特定プロセスの特定部分を実行させる。加えて、又は代替として、コンピュータシステムは、論理が配線されているか又は他の方式で回路(例えば、アクセラレータ(1244))に組み込まれている結果として機能を提供することができ、当該配線又は回路は、ソフトウェアの代わりとして、又はソフトウェアとともに動作して、本明細書に記載されている特定プロセス又は特定プロセスの特定部分を実行することができる。適切な場合、ソフトウェアへの参照にはロジックが含まれ、その逆も可能である。適切な場合、コンピュータ可読媒体への参照には、実行するためのソフトウェアを記憶する回路(例えば、集積回路(integrated circuit、IC))、実行するためのロジックを含む回路、又はその両方が含まれる。本開示にはハードウェアとソフトウェアとの任意の適切な組み合わせが含まれる。
【0181】
本開示は、既にいくつかの例示的な実施形態を説明しているが、本開示の範囲内にある変更、置き換え及び様々な代替の同等物が存在する。従って、本明細書に明示的に示されていないか又は記載されていないが本開示の原理を具体化したので本開示の精神及び範囲内にある様々なシステム及び方法は、当業者にとって考案することができる。

付録:頭字語
DNN:深層ニューラルネットワーク
NNR:ニューラルネットワークのコーディングされた表現
CTU:コーディングツリーユニット
CTU3D:3次元コーディングツリーユニット
CU:コーディングユニット
CU3D:3次元コーディングユニット
RD:レート歪み
VVC:多用途ビデオコーディング
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12