(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-26
(45)【発行日】2023-10-04
(54)【発明の名称】ニューラルネットワークのパラメータを圧縮する方法および装置
(51)【国際特許分類】
H04N 19/91 20140101AFI20230927BHJP
H04N 19/70 20140101ALI20230927BHJP
H03M 7/40 20060101ALI20230927BHJP
【FI】
H04N19/91
H04N19/70
H03M7/40
(21)【出願番号】P 2021556689
(86)(22)【出願日】2020-03-18
(86)【国際出願番号】 EP2020057513
(87)【国際公開番号】W WO2020188004
(87)【国際公開日】2020-09-24
【審査請求日】2021-11-17
(32)【優先日】2019-03-18
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】500341779
【氏名又は名称】フラウンホーファー-ゲゼルシャフト・ツール・フェルデルング・デル・アンゲヴァンテン・フォルシュング・アインゲトラーゲネル・フェライン
(74)【代理人】
【識別番号】100134119
【氏名又は名称】奥町 哲行
(72)【発明者】
【氏名】ハーゼ・パウル
(72)【発明者】
【氏名】マルバンゴンザレス・アルトゥーロ
(72)【発明者】
【氏名】キルヒホッファー・ハイナー
(72)【発明者】
【氏名】マリンク・タルマイ
(72)【発明者】
【氏名】マルペ・デトレフ
(72)【発明者】
【氏名】メトレイジ・シュテファン
(72)【発明者】
【氏名】ノイマン・ダビット
(72)【発明者】
【氏名】グエン・ホアントゥン
(72)【発明者】
【氏名】ザメック・ヴォイチェッヒ
(72)【発明者】
【氏名】シエル・トーマス
(72)【発明者】
【氏名】シュヴァルツ・ハイコー
(72)【発明者】
【氏名】ヴィーデマン・ジモン
(72)【発明者】
【氏名】ヴィーガンド・トーマス
【審査官】田部井 和彦
(56)【参考文献】
【文献】国際公開第2016/199330(WO,A1)
【文献】特表2018-506912(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/91
H04N 19/70
H03M 7/40
(57)【特許請求の範囲】
【請求項1】
ニューラルネットワーク(120)の重みパラメータ(110)を符号化するための符号化器(100)であって、
前記符号化器は、前記ニューラルネットワークの複数の重みパラメータを取得するように構成され、
前記符号化器は、コンテキスト依存算術符号化(130)を使用して前記ニューラルネットワークの前記重みパラメータを符号化するように構成され、
前記符号化器は、1つ以上の以前に符号化された重みパラメータ(150)に応じて、および/または1つ以上の重みパラメータの数値表現の1つ以上の以前に符号化されたシンタックス要素(150)に応じて、重みパラメータの符号化のために、または前記重みパラメータの数値表現のシンタックス要素(110a)の符号化のために、コンテキスト(140
1,140
2,…140
n)を選択するように構成され、
前記符号化器は、前記選択されたコンテキストを使用して、前記重みパラメータ、または前記重みパラメータのシンタックス要素を符号化するように構成され、
前記符号化器は、以前に符号化された重みパラメータの符号に応じて、前記重みパラメータのゼロフラグの前記符号化のためのコンテキストを選択するように構成される、符号化器。
【請求項2】
前記符号化器は、所与のコンテキストに関連付けられた1つ以上の以前に符号化されたビン値に応じて、前記所与のコンテキストに関連付けられた所与のビンのビン値の確率を決定するように構成される、請求項1に記載の符号化器。
【請求項3】
前記符号化器は、少なくとも3つの異なるゼロフラグコンテキストの中から、前記重みパラメータのゼロフラグの前記符号化のためのコンテキストを選択するように構成される、請求項1または2に記載の符号化器。
【請求項4】
前記符号化器は、現在符号化されている重みパラメータが重みパラメータの行列の走査行における第1の重みパラメータであるかどうかに応じて、前記重みパラメータのゼロフラグの前記符号化のためのコンテキストを選択するように構成される、請求項1から3のいずれか一項に記載の符号化器。
【請求項5】
前記符号化器は、前記現在符号化されている重みパラメータに先行する重みパラメータが既に符号化されているかどうか、および/または利用可能であるかどうかに応じて、前記重みパラメータのゼロフラグの符号化のための前記コンテキストを選択するように構成される、請求項4に記載の符号化器。
【請求項6】
前記符号化器は、以前に符号化された重みパラメータが0である場合、および前記現在符号化されている重みパラメータに先行する重みパラメータがまだ符号化されていない場合、および前記現在符号化されている重みパラメータに先行する重みパラメータが利用可能ではない場合に、前記重みパラメータのゼロフラグの符号化のための第1のコンテキストを選択し、前記以前に符号化された重みパラメータが0より小さい場合に、前記重みパラメータのゼロフラグの符号化のための第2のコンテキストを選択し、前記以前に符号化された重みパラメータが0より大きい場合に、前記重みパラメータのゼロフラグの符号化のための第3のコンテキストを選択するように構成される、請求項4または5に記載の符号化器。
【請求項7】
前記符号化器は、現在符号化されている重みパラメータのコンテキストを表すコンテキストインデックス値を取得するために、数値形式の前記現在符号化されている重みパラメータの位置に対する複数の位置における複数の重みパラメータの状態を表す複数の状態識別子を決定し、前記状態識別子を組み合わせるように構成される、請求項4から6のいずれか一項に記載の符号化器。
【請求項8】
前記符号化器は、行内のいくつのゼロ値重みパラメータおよび/または利用不可能な重みパラメータが前記現在符号化されている重みパラメータに隣接しているかに応じて、前記重みパラメータのゼロフラグの前記符号化のためのコンテキストを選択するように構成される、請求項4から7のいずれか一項に記載の符号化器。
【請求項9】
前記複数の重みパラメータは行列に配置されており、前記重みパラメータは、l
x-1,y、l
x-2,yおよびl
x-3,yとして表され、前記行列内の位置(x-1,y)、(x-2,y)および(x-3,y)にそれぞれ対応し、状態識別子s
x-1,y、s
x-2,y、s
x-3,yによって表される、請求項8に記載の符号化器。
【請求項10】
前記複数の重みパラメータは行列に配置され、位置(x,y)が利用できないか、または前記位置(x,y)の前記重みパラメータが0に等しい場合、前記行列内の前記位置(x,y)の状態識別子s
x,yは第1の値に等しく、前記位置(x,y)の前記重みパラメータが0より小さい場合、前記位置(x,y)の前記状態識別子s
x,yは第2の値に等しく、前記位置(x,y)の前記重みパラメータが0より大きい場合、前記位置(x,y)の前記状態識別子s
x,yは第3の値に等しい、請求項7または9に記載の符号化器。
【請求項11】
前記複数の重みパラメータは行列に配置され、位置(x,y)が利用できないか、または前記位置(x,y)の前記重みパラメータが0に等しい場合、前記行列内の前記位置(x,y)の状態識別子s
x,yは第1の値に等しく、前記位置(x,y)が利用可能であり、前記位置(x,y)の前記重みパラメータが0でない場合、前記位置(x,y)の前記状態識別子s
x,yは第2の値に等しい、請求項7または9に記載の符号化器。
【請求項12】
前記符号化器は、前記現在符号化されている重みパラメータから見たときに、所定の方向に存在する最も近い非ゼロ重みパラメータの距離に応じて、前記重みパラメータのゼロフラグの前記符号化のためのコンテキストを選択するように構成される、請求項4から11のいずれか一項に記載の符号化器。
【請求項13】
前記符号化器は、前記現在符号化されている重みパラメータに隣接する、単一の以前に符号化された重みパラメータのみを考慮して、前記重みパラメータのゼロフラグの前記符号化のためのコンテキストを選択するように構成される、請求項4から12のいずれか一項に記載の符号化器。
【請求項14】
前記符号化器は、
単一の以前に符号化された重み位置の状態識別子を決定するように構成され、
単一の以前に符号化された重みパラメータが利用できない場合、または前記位置(x,y)における前記重みパラメータが0に等しい場合、前記単一の以前に符号化された重みパラメータの
状態識別子は第1の値に等しく、前記単一の以前に符号化された重みパラメータが0より小さい場合、第2の値に等しく、前記単一の以前に符号化された重みパラメータが0より大きい場合、第3の値に等しく、
前記符号化器は、前記状態識別子に応じて前記コンテキストを選択するように構成される、請求項10または11に記載の符号化器。
【請求項15】
前記符号化器は、前記以前に符号化された重みパラメータが0より小さいか、0に等しいか、または0より大きいかに応じて、異なるコンテキストを選択するように構成される、請求項1から14のいずれか一項に記載の符号化器。
【請求項16】
前記以前に符号化された重みパラメータが利用できない場合には、前記符号化器は、前記以前に符号化された重みパラメータの0値に関連付けられたコンテキストを選択するように構成される、請求項1から15のいずれか一項に記載の符号化器。
【請求項17】
前記符号化器は、重みパラメータの絶対値、またはその最上位部分を表す単項コードまたは切り捨てられた単項コードの2値を算術符号化するように構成される、請求項1から16のいずれか一項に記載の符号化器。
【請求項18】
前記符号化器は、切り捨てられた単項コードの2値を算術符号化するように構成され、前記切り捨てられた単項コードの前記2値は、前記重みパラメータの前記絶対値が、前記2値のビット位置に関連付けられたそれぞれの閾値よりも大きいかどうかを記述し、
所与の重みパラメータが所定の値よりも小さい場合、前記符号化器は、前記重みパラメータが前記切り捨てられた単項コードの最後の2値のビット位置に関連付けられたそれぞれの閾値よりも大きくないことを示す前記2値で、前記切り捨てられた単項コードが終了するように、前記所与の重みパラメータに関連付けられた前記切り捨てられた単項コードを提供するように構成され、
前記所与の重みパラメータが所定の値よりも小さくない場合、前記切り捨てられた単項コードは、前記重みパラメータが、前記切り捨てられた単項コードの最後の2値のビット位置に関連付けられたそれぞれの閾値よりも大きいことを示す前記2値で終了するように、前記符号化器は、別の所与の重みパラメータに関連付けられた前記切り捨てられた単項コードを提供するように構成される、請求項17に記載の符号化器。
【請求項19】
前記符号化器は、単項コードまたは切り捨てられた単項コードの2値を算術符号化するように構成され、
前記単項コードまたは前記切り捨てられた単項コードの前記2値は、前記重みパラメータの前記絶対値が、それぞれの前記2値のそれぞれのビット位置に関連付けられたそれぞれの閾値よりも大きいかどうかを記述し、
隣接するビット位置に関連付けられた閾値間の差は、第1の範囲のビット位置の内で一定であり、
隣接するビット位置に関連付けられた閾値間の差は、前記第1の範囲のビット位置に続く第2の範囲のビット位置において指数関数的に増加する、請求項17または18に記載の符号化器。
【請求項20】
隣接するビット位置に関連付けられた閾値間の差は、前記第2の範囲のビット位置に続く第3の範囲のビット位置において一定である、請求項19に記載の符号化器。
【請求項21】
前記符号化器は、前記単項コードまたは前記切り捨てられた単項コードの異なる位置のビットの符号化のために異なるコンテキストを選択するように構成される、請求項17から20のいずれか一項に記載の符号化器。
【請求項22】
前記符号化器は、前記現在符号化されている重みパラメータの符号に応じて、
単項コードまたは
切り捨てられた単項コードの所与のビット位置におけるビットの符号化のための2つの可能なコンテキストの中からコンテキストを選択するように構成される、請求項4から13のいずれか一項に記載の符号化器。
【請求項23】
前記符号化器は、前記現在符号化されているパラメータの符号に応じて、
単項コードまたは
切り捨てられた単項コードの第1の範囲の1つ以上のビット位置内のビットの符号化のために、ビット位置ごとに2つの可能なコンテキストの中からコンテキストを選択するように構成され、
前記符号化器は、前記現在符号化されている重みパラメータの前記符号とは独立して、前記単項コードまたは前記切り捨てられた単項コードの第2の範囲の1つ以上のビット位置内のビットの符号化のためのコンテキストを選択するように構成されている、請求項4から13および22のいずれか一項に記載の符号化器。
【請求項24】
前記符号化器は、所定のコンテキストを使用して、または前記算術符号化のバイパスモードを使用して、前記単項コードまたは前記切り捨てられた単項コードの前記第2の範囲の1つ以上のビット位置内のビットを符号化するように構成される、請求項19、20および23のいずれか一項に記載の符号化器。
【請求項25】
前記符号化器は、所定のコンテキストを使用して、または前記算術符号化のバイパスモードを使用して、前記重みパラメータの前記絶対値の固定ビット残差を符号化するように構成される、請求項17から21のいずれか一項に記載の符号化器。
【請求項26】
前記符号化器は、重みパラメータの絶対値、またはその最上位部分を表す単項コードまたは切り捨てられた単項コードの複数の2値を算術符号化するように構成される、請求項1から25のいずれか一項に記載の符号化器。
【請求項27】
前記単項コードまたは前記切り捨てられた単項コードの前記2値は、前記重みパラメータの前記絶対値がXより大きいかどうかを示す、請求項17から21および26のいずれか一項に記載の符号化器。
【請求項28】
前記符号化器は、Xが所定の値より小さい場合に、2つの可能なコンテキストの中から、考慮中の2値abs_level_greater_Xの符号化のためのコンテキストを選択し、Xが前記所定の値以上である場合に、ビット位置に関連付けられた所定のコンテキストを使用するように構成される、請求項1から27のいずれか一項に記載の符号化器。
【請求項29】
前記重みパラメータは行列の行および列に編成され、
前記重みパラメータが符号化される順序は、前記行列の第1の行に沿っており、次いで前記行列の後続の第2の行に沿うか、または
前記重みパラメータが符号化される順序は、前記行列の第1の列に沿っており、次いで前記行列の後続の第2の列に沿っている、請求項1から28のいずれか一項に記載の符号化器。
【請求項30】
ニューラルネットワーク(220)の重みパラメータ(260)を復号するための復号器(200)であって、
前記復号器は、前記ニューラルネットワークの重みパラメータを表す複数のビットを取得するように構成され、
前記復号器は、コンテキスト依存算術符号化(230)を使用して前記ニューラルネットワークの前記重みパラメータを復号するように構成され、
前記復号器は、1つ以上の以前に復号された重みパラメータ(250)に応じて、および/または1つ以上の重みパラメータの数値表現の1つ以上の以前に復号されたシンタックス要素(250)に応じて、重みパラメータの復号のために、または前記重みパラメータの数値表現のシンタックス要素(260a)の復号のために、コンテキスト(240
1,240
2,…240
n)を選択するように構成され、
前記復号器は、前記選択されたコンテキストを使用して、前記重みパラメータ、または前記重みパラメータのシンタックス要素を復号するように構成され、
前記復号器は、以前に復号された重みパラメータの符号に応じて、前記重みパラメータのゼロフラグの前記復号のためのコンテキストを選択するように構成される、復号器。
【請求項31】
前記復号器は、所与のコンテキストに関連付けられた1つ以上の以前に復号されたビン値に応じて、前記所与のコンテキストに関連付けられた所与のビンのビン値の確率を決定するように構成される、請求項30に記載の復号器。
【請求項32】
前記復号器は、少なくとも3つの異なるゼロフラグコンテキストの中から、前記重みパラメータのゼロフラグの前記復号のためのコンテキストを選択するように構成される、請求項30または31に記載の復号器。
【請求項33】
前記復号器は、現在復号されている重みパラメータが重みパラメータの行列の走査行における第1の重みパラメータであるかどうかに応じて、前記重みパラメータのゼロフラグの前記復号のためのコンテキストを選択するように構成される、請求項30から32のいずれか一項に記載の復号器。
【請求項34】
前記復号器は、前記現在復号されている重みパラメータに先行する重みパラメータが既に復号されているかどうか、および/または利用可能であるかどうかに応じて、前記重みパラメータのゼロフラグの復号のための前記コンテキストを選択するように構成される、請求項33に記載の復号器。
【請求項35】
前記復号器は、以前に復号された重みパラメータが0である場合、および前記現在復号されている重みパラメータに先行する重みパラメータがまだ復号されていない場合、および前記現在復号されている重みパラメータに先行する重みパラメータが利用可能ではない場合に、前記重みパラメータのゼロフラグの復号のための第1のコンテキストを選択し、前記以前に復号された重みパラメータが0より小さい場合に、前記重みパラメータのゼロフラグの復号のための第2のコンテキストを選択し、前記以前に復号された重みパラメータが0より大きい場合に、前記重みパラメータのゼロフラグの復号のための第3のコンテキストを選択するように構成される、請求項33または34に記載の復号器。
【請求項36】
前記復号器は、現在復号されている重みパラメータのコンテキストを表すコンテキストインデックス値を取得するために、数値形式の前記現在復号されている重みパラメータの位置に対する複数の位置における複数の重みパラメータの状態を表す複数の状態識別子を決定し、前記状態識別子を組み合わせるように構成される、請求項30から35のいずれか一項に記載の復号器。
【請求項37】
前記復号器は、行内のいくつのゼロ値重みパラメータおよび/または利用不可能な重みパラメータが前記現在復号されている重みパラメータに隣接しているかに応じて、前記重みパラメータのゼロフラグの前記復号のためのコンテキストを選択するように構成される、請求項33から36のいずれか一項に記載の復号器。
【請求項38】
前記複数の重みパラメータは行列に配置されており、前記重みパラメータは、l
x-1,y、l
x-2,yおよびl
x-3,yとして表され、前記行列内の位置(x-1,y)、(x-2,y)および(x-3,y)にそれぞれ対応し、状態識別子s
x-1,y、s
x-2,y、s
x-3,yによって表される、請求項37に記載の復号器。
【請求項39】
前記複数の重みパラメータは行列に配置され、位置(x,y)が利用できないか、または前記位置(x,y)の前記重みパラメータが0に等しい場合、前記行列内の前記位置(x,y)の状態識別子s
x,yは第1の値に等しく、前記位置(x,y)の前記重みパラメータが0より小さい場合、前記位置(x,y)の前記状態識別子s
x,yは第2の値に等しく、前記位置(x,y)の前記重みパラメータが0より大きい場合、前記位置(x,y)の前記状態識別子s
x,yは第3の値に等しい、請求項36または38に記載の復号器。
【請求項40】
前記複数の重みパラメータは行列に配置され、位置(x,y)が利用できないか、または前記位置(x,y)の前記重みパラメータが0に等しい場合、前記行列内の前記位置(x,y)の状態識別子s
x,yは第1の値に等しく、前記位置(x,y)が利用可能であり、前記位置(x,y)の前記重みパラメータが0でない場合、前記位置(x,y)の前記状態識別子s
x,yは第2の値に等しい、請求項36または38に記載の復号器。
【請求項41】
前記復号器は、前記現在復号されている重みパラメータから見たときに、所定の方向に存在する最も近い非ゼロ重みパラメータの距離に応じて、前記重みパラメータのゼロフラグの前記復号のためのコンテキストを選択するように構成される、請求項33から40のいずれか一項に記載の復号器。
【請求項42】
前記復号器は、前記現在復号されている重みパラメータに隣接する、単一の以前に復号された重みパラメータのみを考慮して、前記重みパラメータのゼロフラグの前記復号のためのコンテキストを選択するように構成される、請求項33から41のいずれか一項に記載の復号器。
【請求項43】
前記復号器は、
単一の以前に復号された重み位置の状態識別子を決定するように構成され、
単一の以前に復号された重みパラメータが利用できない場合、または前記位置(x,y)における前記重みパラメータが0に等しい場合、前記単一の以前に復号された重みパラメータの
状態識別子は第1の値に等しく、前記単一の以前に復号された重みパラメータが0より小さい場合、第2の値に等しく、前記単一の以前に復号された重みパラメータが0より大きい場合、第3の値に等しく、
前記復号器は、前記状態識別子に応じて前記コンテキストを選択するように構成される、請求項39または40に記載の復号器。
【請求項44】
前記復号器は、前記以前に復号された重みパラメータが0より小さいか、0に等しいか、または0より大きいかに応じて、異なるコンテキストを選択するように構成される、請求項30から43のいずれか一項に記載の復号器。
【請求項45】
前記以前に復号された重みパラメータが利用できない場合には、前記復号器は、前記以前に復号された重みパラメータの0値に関連付けられたコンテキストを選択するように構成される、請求項30から44のいずれか一項に記載の復号器。
【請求項46】
前記復号器は、重みパラメータの絶対値、またはその最上位部分を表す単項コードまたは切り捨てられた単項コードの2値を算術復号するように構成される、請求項33から43のいずれか一項に記載の復号器。
【請求項47】
前記復号器は、切り捨てられた単項コードの2値を算術復号するように構成され、前記切り捨てられた単項コードの前記2値は、前記重みパラメータの前記絶対値が、前記2値のビット位置に関連付けられたそれぞれの閾値よりも大きいかどうかを記述し、
所与の重みパラメータが所定の値よりも小さい場合、前記復号器は、前記重みパラメータが前記切り捨てられた単項コードの最後の2値のビット位置に関連付けられたそれぞれの閾値よりも大きくないことを示す前記2値で、前記切り捨てられた単項コードが終了するように、前記所与の重みパラメータに関連付けられた前記切り捨てられた単項コードを提供するように構成され、
前記所与の重みパラメータが所定の値よりも小さくない場合、前記切り捨てられた単項コードは、前記重みパラメータが、前記切り捨てられた単項コードの最後の2値のビット位置に関連付けられたそれぞれの閾値よりも大きいことを示す前記2値で終了するように、前記復号器は、別の所与の重みパラメータに関連付けられた前記切り捨てられた単項コードを提供するように構成される、請求項46に記載の復号器。
【請求項48】
前記復号器は、単項コードまたは切り捨てられた単項コードの2値を算術復号するように構成され、
前記単項コードまたは前記切り捨てられた単項コードの前記2値は、前記重みパラメータの前記絶対値が、それぞれの前記2値のそれぞれのビット位置に関連付けられたそれぞれの閾値よりも大きいかどうかを記述し、
隣接するビット位置に関連付けられた閾値間の差は、第1の範囲のビット位置の内で一定であり、
隣接するビット位置に関連付けられた閾値間の差は、前記第1の範囲のビット位置に続く第2の範囲のビット位置において指数関数的に増加する、請求項46または47に記載の復号器。
【請求項49】
隣接するビット位置に関連付けられた閾値間の差は、前記第2の範囲のビット位置に続く第3の範囲のビット位置において一定である、請求項48に記載の復号器。
【請求項50】
前記復号器は、前記単項コードまたは前記切り捨てられた単項コードの異なる位置のビットの復号のために異なるコンテキストを選択するように構成される、請求項46から49のいずれか一項に記載の復号器。
【請求項51】
前記復号器は、前記現在復号されている重みパラメータの符号に応じて、前記単項コードまたは前記切り捨てられた単項コードの所与のビット位置におけるビットの復号のための2つの可能なコンテキストの中からコンテキストを選択するように構成される、請求項46から50のいずれか一項に記載の復号器。
【請求項52】
前記復号器は、前記現在復号されているパラメータの符号に応じて、前記単項コードまたは前記切り捨てられた単項コードの第1の範囲の1つ以上のビット位置内のビットの復号のために、ビット位置ごとに2つの可能なコンテキストの中からコンテキストを選択するように構成され、
前記復号器は、前記現在復号されている重みパラメータの前記符号とは独立して、前記単項コードまたは前記切り捨てられた単項コードの第2の範囲の1つ以上のビット位置内のビットの復号のためのコンテキストを選択するように構成されている、請求項46から51のいずれか一項に記載の復号器。
【請求項53】
前記復号器は、所定のコンテキストを使用して、または前記算術符号化のバイパスモードを使用して、前記単項コードまたは前記切り捨てられた単項コードの前記第2の範囲の1つ以上のビット位置内のビットを復号するように構成される、請求項48または49に記載の復号器。
【請求項54】
前記復号器は、所定のコンテキストを使用して、または前記算術符号化のバイパスモードを使用して、前記重みパラメータの前記絶対値の固定ビット残差を復号するように構成される、請求項46から53のいずれか一項に記載の復号器。
【請求項55】
前記復号器は、重みパラメータの絶対値、またはその最上位部分を表す単項コードまたは切り捨てられた単項コードの複数の2値を算術復号するように構成される、請求項46から54のいずれか一項に記載の復号器。
【請求項56】
前記単項コードまたは前記切り捨てられた単項コードの前記2値は、前記重みパラメータの前記絶対値がXより大きいかどうかを示す、請求項46から55のいずれか一項に記載の復号器。
【請求項57】
前記復号器は、Xが所定の値より小さい場合に、2つの可能なコンテキストの中から、考慮中の2値abs_level_greater_Xの復号のためのコンテキストを選択し、Xが前記所定の値以上である場合に、ビット位置に関連付けられた所定のコンテキストを使用するように構成される、請求項30から56のいずれか一項に記載の復号器。
【請求項58】
前記重みパラメータは行列の行および列に編成され、
前記重みパラメータが復号される順序は、前記行列の第1の行に沿っており、次いで前記行列の後続の第2の行に沿うか、または
前記重みパラメータが復号される順序は、前記行列の第1の列に沿っており、次いで前記行列の後続の第2の列に沿っている、請求項30から57のいずれか一項に記載の復号器。
【請求項59】
ニューラルネットワークの重みパラメータを符号化するための方法であって、
前記方法は、前記ニューラルネットワークの複数の重みパラメータを取得することを含み、
前記方法は、コンテキスト依存算術符号化を使用して前記ニューラルネットワークの前記重みパラメータを符号化することを含み、
前記方法は、1つ以上の以前に符号化された重みパラメータに応じて、および/または1つ以上の重みパラメータの数値表現の1つ以上の以前に符号化されたシンタックス要素に応じて、重みパラメータの符号化のために、または前記重みパラメータの数値表現のシンタックス要素の符号化のために、コンテキストを選択することを含み、
前記重みパラメータ、または前記重みパラメータのシンタックス要素は、前記選択されたコンテキストを使用して符号化され、
前記方法は、以前に符号化された重みパラメータの符号に応じて、前記重みパラメータのゼロフラグの前記符号化のためのコンテキストを選択することを含む、方法。
【請求項60】
ニューラルネットワークの重みパラメータを復号するための方法であって、
前記方法は、前記ニューラルネットワークの重みパラメータを表す複数のビットを取得することを含み、
前記方法は、コンテキスト依存算術符号化を使用して前記ニューラルネットワークの前記重みパラメータを復号することを含み、
前記方法は、1つ以上の以前に復号された重みパラメータに応じて、および/または1つ以上の重みパラメータの数値表現の1つ以上の以前に復号されたシンタックス要素に応じて、重みパラメータの復号のために、または前記重みパラメータの数値表現のシンタックス要素の復号のために、コンテキストを選択することを含み、
前記重みパラメータ、または前記重みパラメータのシンタックス要素は、前記選択されたコンテキストを使用して復号され、
前記方法は、以前に復号された重みパラメータの符号に応じて、前記重みパラメータのゼロフラグの前記復号のためのコンテキストを選択することを含む、方法。
【請求項61】
コンピュータプログラムがコンピュータ上で実行されるとき、請求項59または60に記載の方法を実行するためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の一態様による実施形態は、ニューラルネットワークの重みパラメータを符号化するための符号化器に関する。
本発明の一態様によるさらなる実施形態は、ニューラルネットワークの重みパラメータを復号するための復号器に関する。
本発明の一態様によるさらなる実施形態は、ニューラルネットワークの重みパラメータを量子化するための量子化器に関する。
本発明の一態様によるさらなる実施形態は、それぞれの方法およびコンピュータプログラムに関する。
本発明の一態様による実施形態は、ニューラルネットワークを量子化してビットストリームに変換し、結果としてそれらの圧縮表現をもたらす装置に関する。
さらなる実施形態は、添付の特許請求の範囲によって定義される。
【0002】
特許請求の範囲によって定義される任意の実施形態は、本明細書に記載される詳細(特徴および機能)のいずれかによって補足することができることに留意されたい。
また、本明細書に記載の実施形態は、個別に使用することができ、特許請求の範囲に含まれる特徴のいずれかによって補足することもできる。
【0003】
また、本明細書に記載の個々の態様は、個別にまたは組み合わせて使用することができることに留意されたい。したがって、詳細は、態様の別の1つに詳細を追加することなく、個々の態様のそれぞれに追加することができる。
【0004】
本開示は、ビデオ符号化器(入力ビデオ信号の符号化表現を提供するための装置)およびビデオ復号器(符号化表現に基づいてビデオ信号の復号表現を提供するための装置)で使用可能な特徴を明示的または暗黙的に記述することにも留意されたい。したがって、本明細書に記載された特徴のいずれも、ビデオ符号化器のコンテキストおよびビデオ復号器のコンテキストにおいて使用され得る。
【0005】
さらに、方法に関連して本明細書で開示される特徴および機能は、(そのような機能を実行するように構成された)装置で使用することもできる。さらに、装置に関して本明細書に開示された任意の特徴および機能を、対応する方法で使用することもできる。言い換えれば、本明細書に開示された方法は、装置に関して説明された特徴および機能のいずれかによって補完することができる。
【0006】
また、本明細書で説明される特徴および機能のいずれも、「実装の代替手段」のセクションで説明されるように、ハードウェアもしくはソフトウェアで、またはハードウェアとソフトウェアの組み合わせを使用して実装することができる。
【0007】
さらに、本明細書に記載された特徴およびシンタックス要素のいずれも、個別におよび組み合わせてビデオビットストリームに任意選択的に導入することができる。
【背景技術】
【0008】
本文献は、ニューラルネットワークを量子化してビットストリームに変換し、結果として、それらの圧縮表現をもたらす装置を説明する。
装置の方法論は、以下からなる異なる主要部分に分割することができる。
1.関連性の推定
2.量子化
3.可逆符号化
4.可逆復号
装置の方法論に入る前に、まず、ニューラルネットワークのトピックについて簡単に紹介する。
【0009】
ニューラルネットワーク:それらの最も基本的な形態では、ニューラルネットワークは、要素ごとの非線形関数が続くアフィン変換のチェーンを構成する。それらは、以下の画像に示すように、有向非巡回グラフとして表すことができる。各ノードは、エッジのそれぞれの重み値との乗算によって次のノードに順方向伝播される特定の値を伴う。その後、すべての入力値が単純に集約される。
【0010】
図1は、フィードフォワードニューラルネットワークのグラフ表現の例を示す。具体的には、この2層ニューラルネットワークは、4次元の入力ベクトルを実数直線に写像する非線形関数である。
【0011】
数学的には、
図1のニューラルネットワークは、以下の方法で出力を計算する:
ここで、W2およびW1はニューラルネットワークの重みパラメータ(エッジ重み)であり、シグマは何らかの非線形関数である。例えば、いわゆる畳み込み層は、「cuDNN:Efficient Primitives for Deep Learning」(Sharan Chetlurら、arXiv:1410.0759,2014)に記載されているように、それらを行列-行列積としてキャストすることによって使用することもできる。以下では、所与の入力から出力を計算する手順を推論と呼ぶ。また、中間結果は隠れ層または隠れ活性化値と呼ばれ、これは線形変換+要素ごとの非線形性、例えば上記の第1のドット積+非線形性の計算などを構成する。
【0012】
通常、ニューラルネットワークには数百万のパラメータが装備されているため、表現するために数百MBを必要とする場合がある。その結果、それらの推論手順は大きな行列間の多くのドット積演算の計算を含むため、実行されるために高い計算リソースを必要とする。したがって、これらのドット積を実行する複雑さを低減することが非常に重要である。
【0013】
関連性推定:ニューラルネットワークの推論の複雑さを低減する1つの方法は、重みパラメータを量子化することである。しかしながら、量子化の直接的な結果はメモリの複雑さの低減であるため、後述するように、量子化はまた、推論を実行するランタイムを低減することを可能にし得る。
【0014】
重みパラメータを最も効率的な方法で量子化するために、ネットワークの「多かれ少なかれ関連する」部分を区別できる必要がある。すなわち、ネットワークの予測精度に最小限の影響しか与えずにかき乱すかを知るために、各パラメータ(またはパラメータのセット)の「重要性」の測度が必要である。
以下では、いくつかの従来の解決策への導入を提供する。
【0015】
文献ではいくつかの関連性推定方法が提案されている。ネットワークのテイラー展開に基づく測度が提案されている。例えば、「Second order derivatives for network pruning:Optimal brain surgeon」(Babak Hassibiら、Advances in neural information processing systems、1993)、「Optimal brain damage」(Yann LeCunら、in Advances in neural information processing systems,1990)、および「Pruning convolutional neural networks for resource efficient inference」(Pavlo Molchanovら、arXiv:1611.06440,2016)。
【0016】
他の研究では、いくつかの提案された測度はパラメータの大きさに基づく。例えば、「Channel pruning for accelerating very deep neural networks」(Yihui Heら、Proceedings of the IEEE International Conference on Computer Vision、2017年)、「Pruning filters for efficient convnets」(Hao Liら、arXiv:1608.08710,2016)、および「Learning both Weight and connections for Efficient Neural Networks」(Song Hanら、arXiv:1506.02626,2015)に記載されている。
【0017】
さらに、「Network trimming:A data-driven neuron pruning approach towards efficient deep architectures」(Hengyuan Huら、arXiv:1607.03250,2016)のゼロ活性化のカウント、「Structured pruning of deep convolutional neural networks」Sajid Anwarら、ACM Journal on Emerging Technologies in Computing Systems(JETC)、2017)のパーティクルフィルタリング技法、「Nisp:Pruning networks using neuron importance score propagation」(Ruichi Yuら、in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,2018)のニューロン重要度スコア伝搬(NISP)などのカスタム測度、または「On pixel-wise explanations for non-linear classifier decisions by layer-wise relevance propagation」(Sebastian Bachら、PLOS ONE,10(7):e 0130140,2015)の層関連伝搬法などの測度が提案されている。
【0018】
並行作業として、文献は、スケーラブルなベイズ法を調査し、ニューラルネットワークに適用している。例えば、「Variational Dropout and the Local Reparameterization Trick」(Diederik P.Kingmaら、arXiv:1506.02557,2015)、「Variational Dropout Sparsifies Deep Neural Networks」(Dmitry Molchanovら、arXiv:1701.05369,2017)、および「Bayesian Compression for Deep Learning」(Christos Louizosら、arXiv:1705.08665,2017)に記載されている。
【0019】
ここでの目標は、タスクに対して良好に機能する単一のニューラルネットワークを学習するだけでなく、これらの分布全体を学習することである。したがって、結果として、学習アルゴリズムは、平均および分散などの各重みパラメータの十分な統計値を出力する。直接的な結果として、各重みパラメータの「関連性」を、重みパラメータの二次統計値から直接、したがってそれらの分散から導出することができる。言い換えれば、ネットワーク出力の決定に影響を与えることなく、そのパラメータをその平均値から大きくかき乱す可能性があるため、パラメータの分散が高いほど、その値はあまり関連性がない。
【0020】
この状況を考慮して、圧縮されると有害な影響を受けるニューラルネットワークの圧縮表現への圧縮とネットワークの予測精度との間の改善された妥協点を提供する概念が切に望まれている。
【先行技術文献】
【非特許文献】
【0021】
【文献】「cuDNN:Efficient Primitives for Deep Learning」(Sharan Chetlurら、arXiv:1410.0759,2014)
【文献】「Second order derivatives for network pruning:Optimal brain surgeon」(Babak Hassibiら、Advances in neural information processing systems、1993)
【文献】「Optimal brain damage」(Yann LeCunら、in Advances in neural information processing systems,1990)
【文献】「Pruning convolutional neural networks for resource efficient inference」(Pavlo Molchanovら、arXiv:1611.06440,2016)
【文献】「Channel pruning for accelerating very deep neural networks」(Yihui Heら、Proceedings of the IEEE International Conference on Computer Vision、2017年)
【文献】「Pruning filters for efficient convnets」(Hao Liら、arXiv:1608.08710,2016)
【文献】「Learning both Weight and connections for Efficient Neural Networks」(Song Hanら、arXiv:1506.02626,2015)
【文献】「Network trimming:A data-driven neuron pruning approach towards efficient deep architectures」(Hengyuan Huら、arXiv:1607.03250,2016)
【文献】「Structured pruning of deep convolutional neural networks」Sajid Anwarら、ACM Journal on Emerging Technologies in Computing Systems(JETC)、2017)
【文献】「Nisp:Pruning networks using neuron importance score propagation」(Ruichi Yuら、in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,2018)
【文献】「On pixel-wise explanations for non-linear classifier decisions by layer-wise relevance propagation」(Sebastian Bachら、PLOS ONE,10(7):e 0130140,2015)
【文献】「Variational Dropout and the Local Reparameterization Trick」(Diederik P.Kingmaら、arXiv:1506.02557,2015)
【文献】「Variational Dropout Sparsifies Deep Neural Networks」(Dmitry Molchanovら、arXiv:1701.05369,2017)
【文献】「Bayesian Compression for Deep Learning」(Christos Louizosら、arXiv:1705.08665,2017)
【発明の概要】
【0022】
本発明の一態様は、ニューラルネットワークの重みパラメータを符号化するための符号化器である。符号化器は、ニューラルネットワークの複数の重みパラメータを取得し、コンテキスト依存算術符号化を使用して重みパラメータを符号化する。符号化器は、重みパラメータまたは重みパラメータの数値表現のシンタックス要素を符号化するためのコンテキストを選択する。選択は、1つ以上の以前に符号化された重みパラメータおよび/または1つ以上の重みパラメータの数値表現のシンタックス要素に応じて実行される。次いで、符号化器は、選択されたコンテキストを使用して、重みパラメータまたは重みパラメータのシンタックス要素を符号化する。
【0023】
重みパラメータは、例えば、wiまたはqiまたはliとすることができ、ニューラルネットワークは、例えば、ニューラルネットワークの量子化バージョンとすることができる。コンテキスト依存算術符号化は、例えば、コンテキスト適応2値算術符号化、CABACとすることができ、さらに一例として、ビン値の確率は異なるコンテキストに対して決定され、例えば、各ビンはコンテキストに関連付けられる。
【0024】
符号化器は、重みパラメータ、例えばwiの、算術符号化とすることができる符号化のためのコンテキスト、例えばコンテキストインデックスCを有するコンテキストを選択する。あるいは、シンタックス要素、例えばゼロフラグ「sig_flag」または符号フラグ「sign_flag」は、場合によっては算術的に符号化することができる。シンタックス要素はまた、重みパラメータの絶対値の符号化表現または重みパラメータの絶対値の最上位部分の符号化表現であってもよく、これは例えば、ビンの単項シーケンスまたはビンの切り捨てられた単項シーケンスであってもよい。さらに、シンタックス要素は、重みパラメータの絶対値の最下位部分、例えば固定長シーケンスの符号化表現とすることもできる。
シンタックス要素は、重みパラメータの数値表現、例えば丸められたまたは量子化された数値表現を指す。
【0025】
そして、符号化器は、以前に符号化された重みパラメータ、例えば、1つ以上の重みパラメータの数値表現のwiおよび/またはシンタックス要素に応じてコンテキストを選択する。
【0026】
以前に符号化された重みパラメータまたはシンタックス要素に応じてコンテキストを用いて符号化することは、ニューラルネットワークの圧縮に有益であることが見出された。
【0027】
好ましい実施形態では、符号化器は、所与のコンテキストに関連付けられた1つ以上の以前に符号化されたビン値に応じて、所与のコンテキストに関連付けられた所与のビンのビン値の確率を決定する。
【0028】
その中で、ビンは、例えば、重みパラメータのゼロフラグもしくは符号フラグ、または重みパラメータの絶対値表現のビットを表すことができる。ビン値は、例えば、2値、すなわち0および1であり得る。各ビンはコンテキストに関連付けられているが、2つ以上のコンテキストに関連付けることもできる。
【0029】
1つ以上のコンテキストに関連付けられた符号化されたビン値は、例えば、以前に符号化された重みパラメータのゼロフラグ、符号フラグ、または絶対値表現の1つ以上のビットを表すことができるビンの値を指すことができる。
これらの要素の確率は、以前に符号化された重みパラメータから決定できることが見出された。
【0030】
別の好ましい実施形態では、符号化器は、以下の方法のうちの1つで重みパラメータのゼロフラグの符号化のためのコンテキストを選択し、重みパラメータは、現在符号化された重みパラメータを指す。
選択は、以前に符号化された重みパラメータの符号に応じて実行することができる。
【0031】
選択は、少なくとも3つの異なるゼロフラグコンテキストから実行することができる。選択は、以前に符号化された重みパラメータが0に等しいか、0より小さいか、または0より大きいかに応じて3つのコンテキストのうちの1つを選択する。
【0032】
選択は、現在符号化されている重みパラメータが重みパラメータの行列の走査行または走査列の第1の重みパラメータであるかどうかに応じて実行することができる。
【0033】
これの一例は、現在符号化されている重みパラメータのxインデックスが、最小のxインデックスからより大きいxインデックスへの走査順序に対して、可能な最低の値、例えば0をとるかどうかである。
【0034】
別の例は、現在符号化されている重みパラメータのxインデックスが、最大のxインデックスからより小さいxインデックスに向かう走査順序に対して可能な最大値をとるかどうかである。
【0035】
さらなる例は、現在符号化されている重みパラメータのyインデックスが、最小のyインデックスからより大きいyインデックスへの走査順序に対して、可能な最低の値、例えば0をとるかどうかである。
【0036】
さらに別の例は、現在符号化されている重みパラメータのyインデックスが、最大のyインデックスからより小さいyインデックスへの走査順序に対して可能な最大値をとるかどうかである。
【0037】
その中で、例えば、重みパラメータの行列の走査行または走査列の第1の重みパラメータである現在符号化されている重みパラメータにおいて所定のコンテキストが選択的に使用される。
【0038】
選択は、現在符号化されている重みパラメータに先行する重みパラメータが既に符号化されているかどうか、および/または利用可能であるかどうかに応じて実行することができる。
この場合、先行とは、例えば、重みパラメータの行列の走査行または走査列の走査方向を指す。
【0039】
選択基準はまた、以前に符号化された重みパラメータが0であり、現在符号化されている重みパラメータに先行する重みパラメータがまだ符号化されておらず、利用できない場合、第1のコンテキストが選択され、以前に符号化された重みパラメータが0より小さい場合、第2のコンテキストが選択され、以前に符号化された重みパラメータが0より大きい場合、第3のコンテキストが選択されるように選択が実行されるように組み合わせることができる。
【0040】
言い換えれば、重みパラメータ、例えば、現在符号化されている重みパラメータのゼロフラグを符号化するための第1のコンテキストは、以前に符号化された重みパラメータが0である場合、および、例えば、重みパラメータの行列の走査行または走査列の走査方向を考慮するときに、現在符号化されている重みパラメータに先行する重みパラメータがまだ符号化されていない場合、および、例えば、重みパラメータの行列の走査行または走査列の走査方向を考慮するときに、現在符号化されている重みパラメータに先行する重みパラメータが利用できない場合、例えば、走査方向を考慮するときに、現在符号化されている重みパラメータに先行する重みパラメータの位置が重み行列の外側にある場合、に選択される。
【0041】
例えば現在符号化されている重みパラメータに先行する、以前に符号化された重みパラメータが0より小さい場合、重みパラメータ、例えば現在符号化されている重みパラメータのゼロフラグの符号化のための第2のコンテキスト。
【0042】
最後に、例えば、ここでも現在符号化されている重みパラメータに先行する、以前に符号化された重みパラメータが0より大きい場合、重みパラメータ、例えば現在符号化されている重みパラメータのゼロフラグの符号化のための第3のコンテキストが選択される。
ここでも、符号化は算術符号化とすることができ、ゼロフラグは、例えばシンタックス要素「sig_flag」とすることができる。
上記の基準に従ってゼロフラグのためのコンテキストを選択することは、圧縮を改善することができることが見出された。
【0043】
別の好ましい実施形態では、符号化器は、数値形式の現在符号化されている重みパラメータの位置に対する複数の位置における複数の重みパラメータの状態を表す複数の状態識別子を決定する。次いで、符号化器は、現在符号化されている重みパラメータのコンテキストを表すコンテキストインデックス値を取得するために、状態識別子を例えば線形的に組み合わせる。現在符号化されている重みパラメータは、例えば、現在符号化されている重みパラメータのゼロフラグ、例えばシンタックス要素「sig_flag」とすることができる。その中で、例えば、状態識別子値の可能な各群または組み合わせは、コンテキスト値に、またはさらには一意のコンテキスト値にマッピングされる。
【0044】
状態識別子は、例えばsx-1,y、sx,y-1、sx-1,y-1と呼ぶことができ、例えば可用性、符号化状態(すなわち、既に符号化されているか否か)、ゼロ状態(すなわち、0に等しいか否か)、符号、大きさ(例えば、絶対値)などの状態を表すことができる。
【0045】
組み合わせの例は、C=sx-1,y+3*sx,y-1+9*sx-1,y-1に従う。次いで、取得されたコンテキストインデックスは、例えばCとすることができる。
【0046】
そのため好ましくは、符号化器は、行内のゼロ値の、例えば以前に符号化された重みパラメータおよび/または利用できない重みパラメータが、現在符号化されている重みパラメータにいくつ隣接しているかに応じて、上記で詳述したようにコンテキストを選択する。
【0047】
利用不可能な重みパラメータは、例えば、lx-1,y、lx-2,y、lx-3,yと呼ばれ、状態識別子sx-1,y、sx-2,y、sx-3,yによって表され得る。
【0048】
さらに好ましくは、複数の重みパラメータは行列に配置されており、重みパラメータは、lx-1,y、lx-2,yおよびlx-3,yとして表され、行列内の位置(x-1,y)、(x-2,y)および(x-3,y)にそれぞれ対応し、状態識別子sx-1,y、sx-2,y、sx-3,yによって表される。
【0049】
さらに、複数の重みパラメータは行列に配置され、位置(x,y)が利用できない、例えば、行列の外側に位置するか、もしくはまだ符号化されていない、または位置(x,y)の重みパラメータが0に等しい場合、行列内の位置(x,y)の状態識別子sx,yは第1の値、例えば0に等しく、位置(x,y)の重みパラメータが0より小さい場合、位置(x,y)の状態識別子sx,yは第2の値、例えば1に等しく、位置(x,y)の重みパラメータが0より大きい場合、位置(x,y)の状態識別子sx,yは第3の値、例えば2に等しい。
【0050】
あるいは、複数の重みパラメータは行列に配置され、位置(x,y)が利用できない、例えば、行列の外側に位置するか、もしくはまだ符号化されていないか、または位置(x,y)の重みパラメータが0に等しい場合、行列内の位置(x,y)の状態識別子sx,yは第1の値、例えば0に等しく、位置(x,y)が利用可能である、例えば行列の内部に位置し、かつ既に符号化されており、位置(x,y)の重みパラメータが0でない場合、位置(x,y)の状態識別子sx,yは第2の値、例えば1に等しい。
そのようなコンテキストモデリング方式は、広範囲のニューラルネットワークに適合することが見出された。
【0051】
さらに好ましい実施形態では、符号化器は、現在符号化されている重みパラメータから見たとき、例えば考慮されたときに、所定の方向に存在する、例えば重みベクトルの行列内の、最も近い非ゼロの、例えば以前に符号化された、重みパラメータの距離に応じて、やはり上で詳述したように、コンテキストを選択する。ここで、例えば、最も近い非ゼロ重みパラメータの距離を決定する際に、所定数の重みパラメータが考慮される。
方向は、例えば左側または左手側によって、同様の方法で示すことができる。
圧縮は、以前に符号化された最も近い非ゼロ重みパラメータの距離に応じてコンテキストを選択することによって改善できることが分かっている。
【0052】
さらに好ましい実施形態では、符号化器は、現在符号化されている重みパラメータに隣接する単一の以前に符号化された重みパラメータのみを考慮して、重みパラメータのゼロフラグ、例えばシンタックス要素「sig_flag」または符号フラグ、例えばシンタックス要素「sign_flag」の符号化のためのコンテキストを選択する。
【0053】
ここで、現在符号化されている重みパラメータは、例えば重みパラメータの行列内の位置(x,y)に配置することができ、以前に符号化された重みパラメータは、例えば位置(x-1,y)または(x,y-1)に配置することができる。隣接とは、例えば、左隣であること、上隣であること、直接隣であることなどを意味することができる。
【0054】
そのために、好ましくは、符号化器は、単一の以前に符号化された重みパラメータの状態識別子を決定することができ、状態識別子は、単一の以前に符号化された重みパラメータが利用できないか、または位置(x,y)における重みパラメータが0に等しい場合、第1の値、例えば0に等しい。単一の以前に符号化された重みパラメータが0より小さい場合、状態識別子は第2の値、例えば1に等しい。また、以前に符号化された単一の重みパラメータが0より大きい場合、状態識別子は第3の値、例えば2に等しい。次いで、符号化器は、状態識別子に応じて、例えば3つのコンテキストからコンテキストを選択する。
【0055】
ここで「利用できない」とは、例えば、以前に符号化された重みパラメータが重みパラメータの行列の外側に位置するか、またはまだ符号化されていないことを意味する。
【0056】
好ましくは現在符号化されている重みパラメータに隣接する、以前に符号化された1つの重みパラメータのみを考慮してコンテキストを選択することによって、圧縮を改善できることが見出された。
【0057】
さらに好ましい実施形態では、符号化器は、以前に符号化された重みパラメータが0より小さいか、0に等しいか、または0より大きいかに応じて異なるコンテキストを選択する。
【0058】
現在符号化されている重みパラメータのコンテキストが、以前に符号化された重みパラメータが0より小さいか、等しいか、または大きいかに依存する場合、圧縮を改善することができることが見出された。
【0059】
さらに好ましい実施形態では、符号化器は、以前に符号化された重みパラメータが利用できない場合、以前に符号化された重みパラメータの0値に関連付けられたコンテキストを選択する。
【0060】
ここで「利用できない」とは、例えば、以前に符号化された重みパラメータが重みパラメータの行列の外側に位置するか、またはまだ符号化されていないことを意味する。
【0061】
0値に関連付けられたコンテキストが、以前に符号化された重みパラメータが利用可能であるか否かに依存する場合、圧縮を改善することができることが見出された。
【0062】
さらに好ましい実施形態では、符号化器は、重みパラメータの絶対値、またはその最上位部分を表す単項コードまたは切り捨てられた単項コードの2値を算術符号化する。
【0063】
符号化器を使用して(切り捨てられた)単項コードの2値を符号化することにより、そのように動作するニューラルネットワークに、それらの固有の単純さおよび堅牢性を利用して本発明を使用することが可能になることが見出された。
【0064】
さらに好ましい実施形態では、符号化器は、切り捨てられた単項コードの2値を算術符号化し、切り捨てられた単項コードの2値は、重みパラメータの絶対値が2値のビット位置に関連付けられたそれぞれの閾値よりも大きいかどうかを記述する。そこで、符号化器は、所与の重みパラメータが所定の値よりも小さい場合に、重みパラメータが切り捨てられた単項コードの最後の2値のビット位置に関連付けられたそれぞれの閾値以下であることを示す2値、例えば0で、切り捨てられた単項コードが終わるように、所与の重みパラメータに関連付けられた切り捨てられた単項コードを提供する。そこで、符号化器はさらに、切り捨てられた単項コードが終端2値を含まないが、その長さに限定されるように、所与の重みパラメータが所定の値よりも小さい、または所定の値以上である場合に、重みパラメータが切り捨てられた単項コードの最後の2値のビット位置に関連付けられたそれぞれの閾値よりも大きいことを示す2値、例えば1で、切り捨てられた単項コードが終わるように、別の所与の重みパラメータに関連付けられた切り捨てられた単項コードを提供する。これにより、例えば、単項コードが所定の最大許容長に達した場合、および/または現在のビット位置もしくは次のビット位置に関連付けられた閾値、例えばXが所定の閾値、例えばabs_max以上である場合、単項コードの終端2値が選択的に省略されるか、またはさらなる2値の提供が選択的に省略される。
【0065】
最大絶対値abs_maxが符号化器および復号器側で知られている場合、送信される次のabs_level_greater_Xについて、X>=abs_maxが成立するとき、abs_level_greater_Xシンタックス要素の符号化を終了し得るため、圧縮効率を高めることができることが見出された。
【0066】
さらに好ましい実施形態では、符号化器は、重みパラメータの絶対値がそれぞれの2値のそれぞれのビット位置に関連付けられたそれぞれの閾値よりも大きいかどうかを記述する、単項コードまたは切り捨てられた単項コードの2値を算術符号化する。ここで、隣接するビット位置に関連する閾値間の差は、例えば、第1の範囲のビット位置内でXを1だけ増加させることによって、第1の範囲のビット位置内で一定であり、例えば、第2の範囲のビット位置内でX=X+2kに従ってXを増加させ、kはビット位置の増加と共に1だけ増加することによって、第1の範囲のビット位置に続く第2の範囲のビット位置内で指数関数的に増加する。
本発明の一態様により、対応する単項コードについて圧縮を改善できることが見出された。
【0067】
さらに好ましい実施形態では、隣接するビット位置に関連付けられた閾値間の差は、第2の範囲のビット位置に続く第3の範囲のビット位置において一定である、例えば、第2の範囲のビット位置の、最後から2番目の閾値と最後の閾値との間の差に等しい。
隣接するビット位置に関連付けられた閾値間の一定の差で圧縮効率を改善できることが見出された。
【0068】
さらに好ましい実施形態では、符号化器は、例えばビット位置Xに応じて、単項コードまたは切り捨てられた単項コードの異なる位置のビットの符号化のために異なるコンテキストを選択し、例えば、ビット位置Xのビットは、符号化される重みパラメータの絶対値がXより大きいかどうかを示す。
ビット位置に応じてコンテキストを選択することにより、圧縮を改善できることが見出された。
【0069】
さらに好ましい実施形態では、符号化器は、現在符号化されている重みパラメータの符号に応じて、例えば符号フラグ、例えばシンタックス要素「sign_flag」に応じて、単項コードまたは切り捨てられた単項コードの所与のビット位置、例えばビット位置Xのビットの符号化のための2つの可能なコンテキストの中からコンテキストを選択する。
【0070】
別の可能性は、符号化器は、現在符号化されているパラメータの符号に応じて、例えば符号フラグ、例えばシンタックス要素「sign_flag」および任意選択で、ビット位置に応じて、単項コードまたは切り捨てられた単項コードの、例えば、所定の数、例えばX’より小さいXを有するビット位置に対する第1の範囲の1つ以上のビット位置におけるビットの符号化のためのビット位置ごとに、2つの可能なコンテキストの中からコンテキストを選択する。符号化器は、現在符号化されている重みパラメータの符号から独立して、例えば、ビット位置Xのみに依存して、単項コードまたは切り捨てられた単項コードの、例えばX’などの所定の数以上のXを有するビット位置Xに対する、第2の範囲の1つ以上のビット位置内のビットの符号化のためのコンテキストを選択する。
ビットの符号化のための2つの可能なコンテキストからコンテキストを選択することはまた、圧縮効率を改善することができることが見出された。
【0071】
さらに好ましい実施形態では、符号化器は、所定の、例えば固定されたコンテキストを使用して、または算術符号化のバイパスモードを使用して、例えば、所定の数X’以上のXを有するabs_level_greater_Xフラグの、単項コードまたは切り捨てられた単項コードの第2の範囲の1つ以上のビット位置内のビットを符号化する。
【0072】
さらに好ましい実施形態では、符号化器は、所定の、例えば固定されたコンテキストを使用して、または算術符号化のバイパスモードを使用して、重みパラメータの絶対値の固定ビット残り、例えば重みパラメータの絶対値の最下位部分を符号化する。
【0073】
特定の範囲のビット位置または固定ビット余りに対してバイパスモードの固定コンテキストを使用することによって、圧縮を改善することができることが見出された。
【0074】
さらに好ましい実施形態では、符号化器は、重みパラメータの絶対値、またはその最上位部分を表す単項コードまたは切り捨てられた単項コードの、複数の2値、例えばabs_level_greater_Xを算術符号化し、Xは、例えば、1のステップで増加、または1より大きいステップで増加、または増加するステップで増加してもよい。
単項コードの2値を符号化すると、圧縮効率も向上することが見出された。
【0075】
さらに好ましい実施形態では、単項コードまたは切り捨てられた単項コードの2値、例えばabs_level_greater_Xは、重みパラメータ、例えば現在符号化されている重みパラメータの絶対値がXより大きいかどうかを示す。
単項コードがこのように構成される場合、圧縮は特に効率的であり得ることが見出された。
【0076】
さらに好ましい実施形態では、符号化器は、例えば重みパラメータの符号に応じて、Xが所定の値、例えばX’より小さい場合、2つの可能なコンテキストの中から、考慮中の2値abs_level_greater_Xの符号化のためのコンテキストを選択し、Xが所定の値以上である場合、符号から独立しており、ビット位置に依存しない可能性があるビット位置に関連付けられた所定のコンテキストを使用する。
このようにコンテキストを選択することによっても、圧縮を向上させることができることが見出された。
【0077】
さらに好ましい実施形態では、重みパラメータは、少なくとも論理的に、行列の行および列に編成される。ここで、例えば、所与の層の所与の第iのニューロンの異なる入力信号に関連付けられた重み値を第iの行に配置することができ、所与の層の第jの入力信号に関連付けられた重み値を第jの列に配置することができ、または例えば、所与の層の所与の第iのニューロンの異なる入力信号に関連付けられた重み値を第iの列に配置することができ、所与の層の第jの入力信号に関連付けられた重み値を第jの行に配置することができる。
【0078】
それにより、重みパラメータが符号化される順序は、行列の第1の行または列に沿っており、次いで行列の後続の第2の行または列に沿っており、例えば第1および第2の行もしくは列の両方で同じ方向に、または第1および第2の行もしくは列で反対方向にある。
行列がこのように構成されている場合、本発明の一態様による圧縮が特に効率的であることが見出された。
【0079】
本発明の別の態様では、符号化器について上述したのと同じ概念および原理を復号器に適用することができ、したがってそれらは繰り返されない。当然ながら、復号はそれに応じて解凍に関連する。
【0080】
特に、本発明の別の態様は、ニューラルネットワークの重みパラメータを復号するための復号器である。復号器は、ニューラルネットワークの重みパラメータを表す複数のビットを取得し、コンテキスト依存算術符号化を使用して重みパラメータを復号する。復号器は、重みパラメータまたは重みパラメータの数値表現のシンタックス要素を復号するためのコンテキストを選択する。選択は、1つ以上の以前に復号された重みパラメータおよび/または1つ以上の重みパラメータの数値表現のシンタックス要素に応じて実行される。次いで、復号器は、選択されたコンテキストを使用して、重みパラメータまたは重みパラメータのシンタックス要素を復号する。
【0081】
重みパラメータは、例えば、wiまたはqiまたはliとすることができ、ニューラルネットワークは、例えば、ニューラルネットワークの量子化バージョンとすることができる。コンテキスト依存算術符号化は、例えば、コンテキスト適応2値算術符号化、CABACとすることができ、さらに一例として、ビン値の確率は異なるコンテキストに対して決定され、例えば、各ビンはコンテキストに関連付けられる。
【0082】
復号器は、重みパラメータ、例えばwiの、算術復号とすることができる復号のためのコンテキスト、例えばコンテキストインデックスCを有するコンテキストを選択する。あるいは、シンタックス要素、例えばゼロフラグ「sig_flag」または符号フラグ「sign_flag」は、場合によっては算術的に復号することができる。シンタックス要素はまた、重みパラメータの絶対値の復号表現または重みパラメータの絶対値の最上位部分の復号表現であってもよく、これは例えば、ビンの単項シーケンスまたはビンの切り捨てられた単項シーケンスであってもよい。さらに、シンタックス要素は、重みパラメータの絶対値の最下位部分、例えば固定長シーケンスの復号表現とすることもできる。
シンタックス要素は、重みパラメータの数値表現、例えば丸められたまたは量子化された数値表現を指す。
【0083】
そして、復号器は、以前に復号された重みパラメータ、例えば、1つ以上の重みパラメータの数値表現のwiおよび/またはシンタックス要素に応じてコンテキストを選択する。
【0084】
以前に復号された重みパラメータまたはシンタックス要素に応じてコンテキストを用いて復号することは、ニューラルネットワークの圧縮に有益であることが見出された。
【0085】
好ましい実施形態では、復号器は、所与のコンテキストに関連付けられた1つ以上の以前に復号されたビン値に応じて、所与のコンテキストに関連付けられた所与のビンのビン値の確率を決定する。
【0086】
その中で、ビンは、例えば、重みパラメータのゼロフラグもしくは符号フラグ、または重みパラメータの絶対値表現のビットを表すことができる。ビン値は、例えば、2値、すなわち0および1であり得る。各ビンはコンテキストに関連付けられているが、2つ以上のコンテキストに関連付けることもできる。
【0087】
1つ以上のコンテキストに関連付けられた復号されたビン値は、例えば、以前に復号された重みパラメータのゼロフラグ、符号フラグ、または絶対値表現の1つ以上のビットを表すことができるビンの値を指すことができる。
これらの要素の確率は、以前に復号された重みパラメータから決定できることが見出された。
【0088】
別の好ましい実施形態では、復号器は、以下の方法のうちの1つで重みパラメータのゼロフラグの復号化のためのコンテキストを選択し、重みパラメータは、現在復号された重みパラメータを指す。
選択は、以前に復号された重みパラメータの符号に応じて実行することができる。
【0089】
選択は、少なくとも3つの異なるゼロフラグコンテキストから実行することができる。選択は、以前に復号された重みパラメータが0に等しいか、0より小さいか、または0より大きいかに応じて3つのコンテキストのうちの1つを選択する。
【0090】
選択は、現在復号されている重みパラメータが重みパラメータの行列の走査行または走査列の第1の重みパラメータであるかどうかに応じて実行することができる。
【0091】
これの一例は、現在復号されている重みパラメータのxインデックスが、最小のxインデックスからより大きいxインデックスへの走査順序に対して、可能な最低の値、例えば0をとるかどうかである。
【0092】
別の例は、現在復号されている重みパラメータのxインデックスが、最大のxインデックスからより小さいxインデックスに向かう走査順序に対して可能な最大値をとるかどうかである。
【0093】
さらなる例は、現在復号されている重みパラメータのyインデックスが、最小のyインデックスからより大きいyインデックスへの走査順序に対して、可能な最低の値、例えば0をとるかどうかである。
【0094】
さらに別の例は、現在復号されている重みパラメータのyインデックスが、最大のyインデックスからより小さいyインデックスへの走査順序に対して可能な最大値をとるかどうかである。
【0095】
その中で、例えば、重みパラメータの行列の走査行または走査列の第1の重みパラメータである現在復号されている重みパラメータにおいて所定のコンテキストが選択的に使用される。
【0096】
選択は、現在復号されている重みパラメータに先行する重みパラメータが既に復号されているかどうか、および/または利用可能であるかどうかに応じて実行することができる。
この場合、先行とは、例えば、重みパラメータの行列の走査行または走査列の走査方向を指す。
【0097】
選択基準はまた、以前に復号された重みパラメータが0であり、現在復号されている重みパラメータに先行する重みパラメータがまだ復号されておらず、利用できない場合、第1のコンテキストが選択され、以前に復号された重みパラメータが0より小さい場合、第2のコンテキストが選択され、以前に復号された重みパラメータが0より大きい場合、第3のコンテキストが選択されるように選択が実行されるように組み合わせることができる。
【0098】
言い換えれば、重みパラメータ、例えば、現在復号されている重みパラメータのゼロフラグを復号するための第1のコンテキストは、以前に復号された重みパラメータが0である場合、および、例えば、重みパラメータの行列の走査行または走査列の走査方向を考慮するときに、現在復号されている重みパラメータに先行する重みパラメータがまだ復号されていない場合、および、例えば、重みパラメータの行列の走査行または走査列の走査方向を考慮するときに、現在復号されている重みパラメータに先行する重みパラメータが利用できない場合、例えば、走査方向を考慮するときに、現在復号されている重みパラメータに先行する重みパラメータの位置が重み行列の外側にある場合、に選択される。
【0099】
例えば現在復号されている重みパラメータに先行する、以前に復号された重みパラメータが0より小さい場合、重みパラメータ、例えば現在復号されている重みパラメータのゼロフラグの復号のための第2のコンテキスト。
【0100】
最後に、例えば、ここでも現在復号されている重みパラメータに先行する、以前に復号された重みパラメータが0より大きい場合、重みパラメータ、例えば現在復号されている重みパラメータのゼロフラグの復号のための第3のコンテキストが選択される。
ここでも、復号は算術復号とすることができ、ゼロフラグは、例えばシンタックス要素「sig_flag」とすることができる。
上記の基準に従ってゼロフラグのためのコンテキストを選択することは、圧縮を改善することができることが見出された。
【0101】
別の好ましい実施形態では、復号器は、数値形式の現在復号されている重みパラメータの位置に対する複数の位置における複数の重みパラメータの状態を表す複数の状態識別子を決定する。次いで、復号器は、現在復号されている重みパラメータのコンテキストを表すコンテキストインデックス値を取得するために、状態識別子を例えば線形的に組み合わせる。現在復号されている重みパラメータは、例えば、現在復号されている重みパラメータのゼロフラグ、例えばシンタックス要素「sig_flag」とすることができる。その中で、例えば、状態識別子値の可能な各群または組み合わせは、コンテキスト値に、またはさらには一意のコンテキスト値にマッピングされる。
【0102】
状態識別子は、例えばsx-1,y、sx,y-1、sx-1,y-1と呼ぶことができ、例えば可用性、復号状態(すなわち、既に復号されているか否か)、ゼロ状態(すなわち、0に等しいか否か)、符号、大きさ(例えば、絶対値)などの状態を表すことができる。
【0103】
組み合わせの例は、C=sx-1,y+3*sx,y-1+9*sx-1,y-1に従う。次いで、取得されたコンテキストインデックスは、例えばCとすることができる。
【0104】
そのため好ましくは、復号器は、行内のゼロ値の、例えば以前に復号された重みパラメータおよび/または利用できない重みパラメータが、現在復号されている重みパラメータにいくつ隣接しているかに応じて、上記で詳述したようにコンテキストを選択する。
【0105】
利用不可能な重みパラメータは、例えば、lx-1,y、lx-2,y、lx-3,yと呼ばれ、状態識別子sx-1,y、sx-2,y、sx-3,yによって表され得る。
【0106】
さらに好ましくは、複数の重みパラメータは行列に配置されており、重みパラメータは、lx-1,y、lx-2,yおよびlx-3,yとして表され、行列内の位置(x-1,y)、(x-2,y)および(x-3,y)にそれぞれ対応し、状態識別子sx-1,y、sx-2,y、sx-3,yによって表される。
【0107】
さらに、複数の重みパラメータは行列に配置され、位置(x,y)が利用できない、例えば、行列の外側に位置するか、もしくはまだ復号されていない、または位置(x,y)の重みパラメータが0に等しい場合、行列内の位置(x,y)の状態識別子sx,yは第1の値、例えば0に等しく、位置(x,y)の重みパラメータが0より小さい場合、位置(x,y)の状態識別子sx,yは第2の値、例えば1に等しく、位置(x,y)の重みパラメータが0より大きい場合、位置(x,y)の状態識別子sx,yは第3の値、例えば2に等しい。
【0108】
あるいは、複数の重みパラメータは行列に配置され、位置(x,y)が利用できない、例えば、行列の外側に位置するか、もしくはまだ復号されていないか、または位置(x,y)の重みパラメータが0に等しい場合、行列内の位置(x,y)の状態識別子sx,yは第1の値、例えば0に等しく、位置(x,y)が利用可能である、例えば行列の内部に位置し、かつ既に復号されており、位置(x,y)の重みパラメータが0でない場合、位置(x,y)の状態識別子sx,yは第2の値、例えば1に等しい。
そのようなコンテキストモデリング方式は、広範囲のニューラルネットワークに適合することが見出された。
【0109】
さらに好ましい実施形態では、復号器は、現在復号されている重みパラメータから見たとき、例えば考慮されたときに、所定の方向に存在する、例えば重みベクトルの行列内の、最も近い非ゼロの、例えば以前に復号された、重みパラメータの距離に応じて、やはり上で詳述したように、コンテキストを選択する。ここで、例えば、最も近い非ゼロ重みパラメータの距離を決定する際に、所定数の重みパラメータが考慮される。
方向は、例えば左側または左手側によって、同様の方法で示すことができる。
圧縮は、以前に復号された最も近い非ゼロ重みパラメータの距離に応じてコンテキストを選択することによって改善できることが分かっている。
【0110】
さらに好ましい実施形態では、復号器は、現在復号されている重みパラメータに隣接する単一の以前に復号された重みパラメータのみを考慮して、重みパラメータのゼロフラグ、例えばシンタックス要素「sig_flag」または符号フラグ、例えばシンタックス要素「sign_flag」の復号のためのコンテキストを選択する。
【0111】
ここで、現在復号されている重みパラメータは、例えば重みパラメータの行列内の位置(x,y)に配置することができ、以前に復号された重みパラメータは、例えば位置(x-1,y)または(x,y-1)に配置することができる。隣接とは、例えば、左隣であること、上隣であること、直接隣であることなどを意味することができる。
【0112】
そのために、好ましくは、復号器は、単一の以前に復号された重みパラメータの状態識別子を決定することができ、状態識別子は、単一の以前に復号された重みパラメータが利用できないか、または位置(x,y)における重みパラメータが0に等しい場合、第1の値、例えば0に等しい。以前に復号された単一の重みパラメータが0より小さい場合、状態識別子は第2の値、例えば1に等しい。また、以前に復号された単一の重みパラメータが0より大きい場合、状態識別子は第3の値、例えば2に等しい。次いで、復号器は、状態識別子に応じて、例えば3つのコンテキストからコンテキストを選択する。
【0113】
ここで「利用できない」とは、例えば、以前に復号された重みパラメータが重みパラメータの行列の外側に位置するか、またはまだ復号されていないことを意味する。
【0114】
好ましくは現在復号されている重みパラメータに隣接する、以前に復号された1つの重みパラメータのみを考慮してコンテキストを選択することによって、圧縮を改善できることが見出された。
【0115】
さらに好ましい実施形態では、復号器は、以前に復号された重みパラメータが0より小さいか、0に等しいか、または0より大きいかに応じて異なるコンテキストを選択する。
【0116】
現在復号されている重みパラメータのコンテキストが、以前に復号された重みパラメータが0より小さいか、等しいか、または大きいかに依存する場合、圧縮を改善することができることが見出された。
【0117】
さらに好ましい実施形態では、復号器は、以前に復号された重みパラメータが利用できない場合、以前に復号された重みパラメータの0値に関連付けられたコンテキストを選択する。
【0118】
ここで「利用できない」とは、例えば、以前に復号された重みパラメータが重みパラメータの行列の外側に位置するか、またはまだ復号されていないことを意味する。
【0119】
0値に関連付けられたコンテキストが、以前に復号された重みパラメータが利用可能であるか否かに依存する場合、圧縮を改善することができることが見出された。
【0120】
さらに好ましい実施形態では、復号器は、重みパラメータの絶対値、またはその最上位部分を表す単項コードまたは切り捨てられた単項コードの2値を算術復号する。
【0121】
復号器を使用して(切り捨てられた)単項コードの2値を復号することにより、そのように動作するニューラルネットワークに、それらの固有の単純さおよび堅牢性を利用して本発明の態様を使用することが可能になることが見出された。
【0122】
さらに好ましい実施形態では、復号器は、切り捨てられた単項コードの2値を算術復号し、切り捨てられた単項コードの2値は、重みパラメータの絶対値が2値のビット位置に関連付けられたそれぞれの閾値よりも大きいかどうかを記述する。そこで、復号器は、所与の重みパラメータが所定の値よりも小さい場合に、重みパラメータが切り捨てられた単項コードの最後の2値のビット位置に関連付けられたそれぞれの閾値以下であることを示す2値、例えば0で、切り捨てられた単項コードが終わるように、所与の重みパラメータに関連付けられた切り捨てられた単項コードを提供する。そこで、復号器はさらに、切り捨てられた単項コードが終端2値を含まないが、その長さに限定されるように、所与の重みパラメータが所定の値よりも小さい、または所定の値以上である場合に、重みパラメータが切り捨てられた単項コードの最後の2値のビット位置に関連付けられたそれぞれの閾値よりも大きいことを示す2値、例えば1で、切り捨てられた単項コードが終わるように、別の所与の重みパラメータに関連付けられた切り捨てられた単項コードを提供する。これにより、例えば、単項コードが所定の最大許容長に達した場合、および/または現在のビット位置もしくは次のビット位置に関連付けられた閾値、例えばXが所定の閾値、例えばabs_max以上である場合、単項コードの終端2値が選択的に省略されるか、またはさらなる2値の提供が選択的に省略される。
【0123】
最大絶対値abs_maxが復号器および復号器側で知られている場合、送信される次のabs_level_greater_Xについて、X>=abs_maxが成立するとき、abs_level_greater_Xシンタックス要素の復号を終了し得るため、圧縮効率を高めることができることが見出された。
【0124】
さらに好ましい実施形態では、復号器は、重みパラメータの絶対値がそれぞれの2値のそれぞれのビット位置に関連付けられたそれぞれの閾値よりも大きいかどうかを記述する、単項コードまたは切り捨てられた単項コードの2値を算術復号する。ここで、隣接するビット位置に関連する閾値間の差は、例えば、第1の範囲のビット位置内でXを1だけ増加させることによって、第1の範囲のビット位置内で一定であり、例えば、第2の範囲のビット位置内でX=X+2kに従ってXを増加させ、kはビット位置の増加と共に1だけ増加することによって、第1の範囲のビット位置に続く第2の範囲のビット位置内で指数関数的に増加する。
本発明の一態様により、対応する単項コードについて圧縮を改善できることが見出された。
【0125】
さらに好ましい実施形態では、隣接するビット位置に関連付けられた閾値間の差は、第2の範囲のビット位置に続く第3の範囲のビット位置において一定である、例えば、第2の範囲のビット位置の、最後から2番目の閾値と最後の閾値との間の差に等しい。
隣接するビット位置に関連付けられた閾値間の一定の差で圧縮効率を改善できることが見出された。
【0126】
さらに好ましい実施形態では、復号器は、例えばビット位置Xに応じて、単項コードまたは切り捨てられた単項コードの異なる位置のビットの復号のために異なるコンテキストを選択し、例えば、ビット位置Xのビットは、復号される重みパラメータの絶対値がXより大きいかどうかを示す。
ビット位置に応じてコンテキストを選択することにより、圧縮を改善できることが見出された。
【0127】
さらに好ましい実施形態では、復号器は、現在復号されている重みパラメータの符号に応じて、例えば符号フラグ、例えばシンタックス要素「sign_flag」に応じて、単項コードまたは切り捨てられた単項コードの所与のビット位置、例えばビット位置Xのビットの復号のための2つの可能なコンテキストの中からコンテキストを選択する。
【0128】
別の可能性は、復号器は、現在復号されているパラメータの符号に応じて、例えば符号フラグ、例えばシンタックス要素「sign_flag」および任意選択で、ビット位置に応じて、単項コードまたは切り捨てられた単項コードの、例えば、所定の数、例えばX’より小さいXを有するビット位置Xに対する第1の範囲の1つ以上のビット位置におけるビットの復号のためのビット位置ごとに、2つの可能なコンテキストの中からコンテキストを選択する。復号器は、現在復号されている重みパラメータの符号から独立して、例えば、ビット位置Xのみに依存して、単項コードまたは切り捨てられた単項コードの、例えばX’などの所定の数以上のXを有するビット位置Xに対する、第2の範囲の1つ以上のビット位置内のビットの復号のためのコンテキストを選択する。
ビットの復号のための2つの可能なコンテキストからコンテキストを選択することはまた、圧縮効率を改善することができることが見出された。
【0129】
さらに好ましい実施形態では、復号器は、所定の、例えば固定されたコンテキストを使用して、または算術符号化のバイパスモードを使用して、例えば、所定の数X’以上のXを有するabs_level_greater_Xフラグの、単項コードまたは切り捨てられた単項コードの第2の範囲の1つ以上のビット位置内のビットを復号する。
【0130】
さらに好ましい実施形態では、復号器は、所定の、例えば固定されたコンテキストを使用して、または算術符号化のバイパスモードを使用して、重みパラメータの絶対値の固定ビット残り、例えば重みパラメータの絶対値の最下位部分を復号する。
【0131】
特定の範囲のビット位置または固定ビット余りに対してバイパスモードの固定コンテキストを使用することによって、圧縮を改善することができることが見出された。
【0132】
さらに好ましい実施形態では、復号器は、重みパラメータの絶対値、またはその最上位部分を表す単項コードまたは切り捨てられた単項コードの、複数の2値、例えばabs_level_greater_Xを算術復号し、Xは、例えば、1のステップで増加、または1より大きいステップで増加、または増加するステップで増加してもよい。
単項コードの2値を復号すると、圧縮効率も向上することが見出された。
【0133】
さらに好ましい実施形態では、単項コードまたは切り捨てられた単項コードの2値、例えばabs_level_greater_Xは、重みパラメータ、例えば現在復号されている重みパラメータの絶対値がXより大きいかどうかを示す。
単項コードがこのように構成される場合、圧縮は特に効率的であり得ることが見出された。
【0134】
さらに好ましい実施形態では、復号器は、例えば重みパラメータの符号に応じて、Xが所定の値、例えばX’より小さい場合、2つの可能なコンテキストの中から、考慮中の2値abs_level_greater_Xの復号のためのコンテキストを選択し、Xが所定の値以上である場合、符号から独立しており、ビット位置に依存しない可能性があるビット位置に関連付けられた所定のコンテキストを使用する。
このようにコンテキストを選択することによっても、圧縮を向上させることができることが見出された。
【0135】
さらに好ましい実施形態では、重みパラメータは、少なくとも論理的に、行列の行および列に編成される。ここで、例えば、所与の層の所与の第iのニューロンの異なる入力信号に関連付けられた重み値を第iの行に配置することができ、所与の層の第jの入力信号に関連付けられた重み値を第jの列に配置することができ、または例えば、所与の層の所与の第iのニューロンの異なる入力信号に関連付けられた重み値を第iの列に配置することができ、所与の層の第jの入力信号に関連付けられた重み値を第jの行に配置することができる。
【0136】
それにより、重みパラメータが復号される順序は、行列の第1の行または列に沿っており、次いで行列の後続の第2の行または列に沿っており、例えば第1および第2の行もしくは列の両方で同じ方向に、または第1および第2の行もしくは列で反対方向にある。
行列がこのように構成されている場合、本発明の一態様による圧縮が特に効率的であることが見出された。
【0137】
本発明の別の態様では、ニューラルネットワークの重みパラメータを量子化するための量子化器が記載される。量子化器は、ニューラルネットワークの複数の入力重みパラメータ、例えばwiを取得し、非量子化入力重みパラメータの代わりに異なる量子化値、例えばqi,k、例えば、異なる量子化ステップの使用によって引き起こされる予想される歪みを記述する歪み測度、例えばDi,kを使用し、かつ異なる量子化値、例えばqi,kの表現のための推定または計算されたビット努力、例えば、符号化または算術符号化を記述するビット量値、例えばRi,kを使用して、入力重みパラメータ、例えばwiに基づいて量子化重みパラメータ例えば、qiを決定する。
【0138】
量子化された重みパラメータを決定するためにこのような歪み測度を使用することによって、ニューラルネットワークの重みパラメータの量子化を改善することができることが見出された。
【0139】
好ましい実施形態では、量子化器は、例えば入力重みパラメータの計算されたまたは推定された分散、例えばσi
2に応じて歪み測度を決定し、歪み測度は、計算されたまたは推定された分散に対して所与の量子化値の使用によって生じる予想される歪みを記述する。
計算された分散または推定された分散に応じて歪み測度を決定することにより、量子化が改善されることが見出された。
【0140】
さらに好ましい実施形態では、量子化器は、入力重みパラメータ、例えばw
iおよび量子化値、例えばq
i,kに関連する歪み測度、例えばD
i,kを取得するために、入力重みパラメータと量子化値との間の偏差を記述する二次誤差、例えば(w
i-q
i,k)
2と、入力重みパラメータの計算された分散または推定された分散、例えばσ
i
2、例えば標準偏差σ
iの2乗との商
を計算する。
このようにして歪み測度を計算することが特に効率的であることが見出された。
【0141】
さらに好ましい実施形態では、量子化器は、所与の入力重みパラメータに関連付けられた、例えばインデックスkによって指定された複数の可能な量子化値についての歪み測度、例えばDi,kとビット量値、例えばRi,kとを組み合わせるコスト関数、例えばcosti,k=Di,k+λ*Ri,kを評価し、コスト関数の評価に応じて、例えば量子化重みパラメータがコスト関数を最小化するように、所与の入力重みパラメータ、例えばwiに関連付けられた量子化重みパラメータとして量子化値を選択する。
【0142】
圧縮効率と予測精度との間の良好なトレードオフを得るために、上述したようなコスト関数を評価することができ、レート歪み最適化量子化を適用することができることが見出された。
【0143】
さらに好ましい実施形態では、量子化器は、インデックスkでの上記コスト関数を最小化するために所与の入力重みパラメータ、例えばwiと関連付けられた量子化重みパラメータ、例えばqiを選択するように構成されており、ここで、Di,kは、非量子化入力重みパラメータ、例えばwiの代わりにインデックスkを有する量子化値、例えばqi,kを使用することによって生じる予想された、例えば予想された分散に関する、例えば絶対または比較歪みを記述する歪み測度であり、例えばDi,kは、wi、qi,kおよび重みパラメータの決定されたまたは推定された分散σi
2の関数である。また、Ri,kは、インデックスkを有する量子化値または候補量子化値を表すのに必要な推定または計算されたビット数を記述するビット量値、例えばqi,kであり、λは所定の値である。
コスト関数を最小化することにより、圧縮効率を向上させることができることが見出された。
【0144】
さらに好ましい実施形態では、量子化器は、異なる量子化値の、例えばビットストリームへの符号化または算術符号化に必要な推定または計算されたビット数に応じて、ビット量値、例えばRi,kを取得する。
符号化に必要なビット数に応じてビット量値を求めることにより、量子化効率を向上させることができることが見出された。
【0145】
さらに好ましい実施形態では、量子化器は、決定された量子化重みパラメータに関連する歪み測度が所定の値以下になるように、例えば入力重みパラメータと決定された量子化重みパラメータとの間の偏差が入力重みパラメータの標準偏差よりも小さくなるように、または最大で入力重みパラメータの標準偏差に等しくなるように、量子化重みパラメータ、例えばqiを決定する。
歪み測度が所定の値以下であれば、予測の精度を向上させることができることが見出された。
【0146】
さらに好ましい実施形態では、量子化器は、ニューラルネットワーク、例えば人工ニューラルネットワークを訓練する学習アルゴリズム、例えば訓練アルゴリズムを使用して、重みパラメータの分散を記述する分散情報、例えばσi
2を取得する。
訓練によって分散情報を取得することにより、分散情報の品質、したがって予測の精度を向上させることができることが見出された。
【0147】
さらに好ましい実施形態では、量子化器は、入力重みパラメータとして、学習アルゴリズム、例えば訓練アルゴリズムを使用して重みパラメータの平均値を記述する、例えばσi
2などの平均値情報を取得し、ニューラルネットワーク、例えば人工ニューラルネットワークを訓練し、次いで、平均値情報は、例えばニューラルネットワークの効率的な記憶もしくは効率的な動作のために、またはビットストリームにおける効率的な符号化および伝送のために、量子化器によって量子化される。
上記のように、ニューラルネットワークに関連する記憶または動作をより効率的にすることができることが見出された。
【0148】
さらに好ましい実施形態では、量子化器は、量子化重みパラメータのコンテキストベースの算術符号化のためにコンテキストに応じてビット量値を決定し、例えば、現在のコンテキストを考慮して異なる量子化重みパラメータ値の算術符号化にいくつのビットが必要とされるかを量子化器によって決定または推定することができ、現在のコンテキストは、以前に符号化された量子化重みパラメータによって決定することができる。
コンテキストベースの算術符号化のコンテキストに応じてビット量値を決定することにより、量子化効率を改善できることが見出された。
【0149】
本発明のさらなる態様では、ニューラルネットワークの重みパラメータを符号化するための符号化器であって、上述のような量子化器を備える符号化器が記載される。ここで、量子化器は、入力重みパラメータに基づいて量子化重みパラメータを取得し、符号化器は、コンテキスト依存算術符号化を使用して、例えばコンテキスト適応2値算術符号化CABACを使用して、ニューラルネットワークの量子化重みパラメータ、例えばqi、例えば量子化バージョンを符号化し、例えばビン値の確率は異なるコンテキストに対して決定され、例えば各ビンはコンテキストに関連付けられる。
そのような符号化器は、好ましくは、上述の符号化器の任意の特徴または特徴もしくは機能の組み合わせを含む。
上述のような量子化器を備える符号化器は、符号化動作を改善することが見出された。
さらなる態様は、ニューラルネットワークの重みパラメータを符号化、復号、および量子化するための対応する方法に関する。
【0150】
これらの方法は、上述の装置と同じ考慮事項に基づいている。しかしながら、各方法は、装置に関して、本明細書に記載の特徴、機能、および詳細のいずれかによって補足することができることに留意されたい。さらに、本方法は、装置の特徴、機能、および詳細によって、個別に、および組み合わせて補足することができる。
【0151】
特に、符号化および復号のための方法は、ニューラルネットワークの複数の重みパラメータ、例えば、wiまたはqiまたはliを取得することと、例えば、コンテキスト適応2値算術符号化、CABACを使用して、コンテキスト依存算術符号化を使用して、例えば、量子化バージョンのニューラルネットワークの重みパラメータ、例えば、wiまたはqiまたはliを符号化または復号することとを含み、例えば、ビン値の確率は、異なるコンテキストに対して決定され、例えば、各ビンはコンテキストに関連付けられる。
【0152】
本発明のさらなる態様は、コンピュータプログラムがコンピュータ上で実行されるときに、本明細書に記載の方法を実行するためのコンピュータプログラムに関する。
本発明の一態様による実施形態を、添付の図面を参照して以下に説明する。
【図面の簡単な説明】
【0153】
【
図1】フィードフォワードニューラルネットワークのグラフ表現を示す。
【
図2】本発明の一態様による符号化器の例示的な実施形態を示す図である。
【
図3】本発明の一態様による復号器の例示的な実施形態を示す図である。
【
図4】本発明の一態様による量子化器の例示的な実施形態を示す。
【発明を実施するための形態】
【0154】
以下では、ニューラルネットワーク係数を決定するためのいくつかの手法が説明され、これは、例えば、本明細書に開示されるさらなる概念と組み合わせて使用することができる。しかしながら、ニューラルネットワークの係数を決定するための異なる手法が使用されてもよいことに留意されたい。
【0155】
例えば、ここに提示された装置は、後のベイズ手法に基づいて関連性推定を適用する。具体的には、「Variational Dropout Sparsifies Deep Neural Networks」(Dmitry Molchanov、arXiv:1701.05369,2017)に示されたアルゴリズムを適用する。アルゴリズムは、特定のタスクを解くためのネットワークの各重みパラメータの最適な平均および分散を推定するために適用することができる。これらが推定されると、関連性重み付け量子化アルゴリズムが重みパラメータの平均値に適用される。
具体的には、量子化が可能な間隔サイズの測度として各パラメータの標準偏差を使用する(これについては後述する)。
装置は、平均および分散の推定のための2つの選択肢を提案する。
【0156】
第1の選択肢は、上記文献に記載されているように完全にアルゴリズムを適用する。したがって、タスクを解くための最適な構成を達成するために、各重みパラメータの平均および分散の両方を訓練する。平均の初期化は、ランダムであってもよく、または事前訓練されたネットワークから取得されてもよい。この手法には、結果として得られるネットワークが高度に量子化および圧縮され得るという利点がある。しかしながら、訓練されるために高い計算リソースを必要とすることは不利である。ここで、平均および分散の推定には、データの訓練セット全体が必要である。
【0157】
第2の選択肢は、事前訓練されたネットワークを初期化として取り、そのパラメータを分布の平均として固定する(したがって、変化しない)ので、第1の選択肢、すなわち高い計算リソースを必要とする欠点を有さない。そして、上述したアルゴリズムを適用して、各パラメータの分散のみを推定する。この手法は高い圧縮利得を達成できないかもしれないが、このオプションは分散を推定するだけなので、計算リソースが大幅に削減されるという利点がある。この方法は、データの訓練セット全体が利用可能である場合、またはデータサンプルのサブセット(検証セットなど)のみが利用可能である場合に適用され得る。
【0158】
上記のアルゴリズムは、順方向伝播法を確率的アルゴリズムに再定義し、代わりに変分目的を最小化する。具体的には、アルゴリズムは、正則化された目的を最小化しようと試み、
【0159】
第1項は、タスクを良好に解決する(psiによってパラメータ化された)各パラメータの平均および分散を見つけようと試み、他の項は、平均をスパース化し、分散を最大化しようと試みる。
【0160】
したがって、第2の選択肢は、ネットワークの精度に最小限の影響を及ぼしながら、ネットワークの事前訓練値に適用され得る最大分散(または外乱)を見つけようと試みる。そして、第1のオプションは、最大数0の平均値を有するネットワークをさらに見つけようと試みる。したがって、通常、第1のオプションを適用すると、より高い圧縮利得が得られるが、推定のために高い計算リソースを適用する必要がある。
【0161】
以下では、例えばニューラルネットワーク(例えば、上記のように決定されたパラメータの量子化について)のパラメータの量子化に使用することができる手法について説明する。量子化手法は、例えば、本明細書に開示される他の概念のいずれかと組み合わせて使用することができるが、個別に使用することもできる。
量子化:ネットワークの推定平均および分散に基づいて、装置は、パラメータの平均値にコンテキスト適応関連性重み付け量子化方法を適用する。
【0162】
図4は、本発明の一態様による量子化器の一例を示す。ニューラルネットワーク320の重みパラメータを量子化するための量子化器300が、ニューラルネットワーク320の複数の入力重みパラメータ310を取得することが示されている。量子化器300は、非量子化入力重みパラメータの代わりに異なる量子化値の使用によって引き起こされる予想される歪みを記述する歪み測度340を使用し、かつ異なる量子化値の表現のための推定または計算されたビット努力を記述するビット量値を使用して、入力重みパラメータ310に基づいて量子化重みパラメータ330を決定する。
【0163】
しかしながら、異なる量子化概念/量子化アーキテクチャを使用することができることに留意されたい。以下では、量子化、例えばニューラルネットワークパラメータの量子化に使用することができるいくつかの任意選択の詳細について説明するが、これらは個別に使用することもでき、組み合わせて使用することもできる。
【0164】
歪み測度:以下の重み付け距離測度
は、例えば、歪み測度として使用されてもよく、ここで
は、重みのシーケンスの第iの重みであり、ここで
は、関連する標準偏差であり、ここで
は、
のいくつかの可能な量子化バージョンの第
のものである。量子化された重み
がそれぞれの標準偏差間隔内にある場合、歪み値
は1を超えないことに留意されたい。
【0165】
所与の重みの量子化バージョンは、例えば、量子化値
が等距離になるように制約することができる量子化関数
を介して導出され、固定小数点表現を可能にする。
【0166】
レート歪み最適化量子化:圧縮効率と予測精度との間の良好なトレードオフを得るために、レート歪み最適化量子化を適用することができる。したがって、コスト関数を定義することができ、
【0167】
各候補量子化重み
に対して、歪み測度
およびビット量
を有する。パラメータ
は動作点を制御し、実際の用途に応じて選択することができる。例えば、上述したような歪み測度
が適用されてもよい。符号化アルゴリズムによっては、ビット量
を推定してもよい。これは、ビットストリームに
を符号化するのに必要なビット数である。次に、
与えられると、コスト関数
は
で最小化される。
【0168】
さらに、
が1を超えない量子化された重みのみを可能にすることが重要であり得る。この場合、量子化された重み
は、その重み
の標準偏差間隔内に収まることが保証される。
【0169】
以下では、例えば、ニューラルネットワークパラメータまたは量子化されたニューラルネットワークパラメータの可逆符号化および復号のための可逆符号化および復号の概念について説明する。可逆符号化および復号の概念は、例えば、上述のニューラルネットワークパラメータ決定と組み合わせて、および/または上述の量子化と組み合わせて使用されてもよいが、個別に採用されてもよい。
【0170】
可逆符号化および復号化:前のステップで均一量子化器が適用される場合、量子化重みパラメータは、整数値(重みレベル)およびスケーリングファクタによって表すことができる。スケーリングファクタは、量子化ステップサイズと呼ぶことができ、例えば、レイヤ全体に対して固定されてもよい。層のすべての量子化重みパラメータを復元するために、層のステップサイズおよび次元を復号器によって知ることができる。それらは、例えば、別々に送信されてもよい。この場合、2値パターンは、次元(整数)から始まり、その後にステップサイズ
(例えば32ビットの浮動小数点数)が続くビットストリームに単純に書き込まれる。
【0171】
コンテキスト適応2値算術符号化(CABAC)による整数の符号化:量子化された重みレベル(整数表現)は、エントロピ符号化技術を使用して送信され得る。したがって、重みの層は、走査を使用して一連の量子化された重みレベルにマッピングされる。
【0172】
図2は、本発明の一態様による符号化器の一例を示す。ニューラルネットワーク120の重みパラメータ110を符号化するための符号化器100が、ニューラルネットワーク120の複数の重みパラメータ110を取得することが示されている。次いで、符号化器100は、コンテキスト依存算術符号化130を使用してニューラルネットワーク120の重みパラメータ110を符号化し、符号化器100は、1つの重みパラメータ110の符号化のために、または重みパラメータの数値表現のシンタックス要素110aの符号化のために、いくつかの利用可能なコンテキスト140
1、140
2、...、140
nからコンテキストを選択する。選択は、選択のための特定の基準150に応じて実行される。この文書は、この基準150の多くの可能な選択肢を記載している。可能な基準150の1つは、選択が、1つ以上の以前に符号化された重みパラメータに応じて、および/または1つ以上の重みパラメータの数値表現の1つ以上の以前に符号化されたシンタックス要素に応じて実行されることである。符号化器は、選択されたコンテキストを使用して、重みパラメータ110、または重みパラメータのシンタックス要素110aを符号化する。
【0173】
しかしながら、異なる符号化概念を使用することができることに留意されたい。以下では、符号化、例えばニューラルネットワークパラメータの符号化に使用することができるいくつかの任意選択の詳細について説明するが、これらは個別に使用することもでき、組み合わせて使用することもできる。
【0174】
任意選択の例として、好ましい実施形態では、行列の最上段の行から開始して、含まれる値を左から右に符号化する行優先走査順序が使用される。このようにして、すべての行が上から下に符号化される。
別の任意選択の例として、別の好ましい実施形態では、行列は行優先走査を適用する前に転置される。
【0175】
別の任意選択の例として、別の好ましい実施形態では、行列は、行優先走査が適用される前に、水平および/または垂直に反転され、および/または左または右に90/180/270度回転される。
【0176】
レベルの符号化には、CABAC(コンテキスト適応2値算術符号化)が用いられる。詳細は、「Context-Based Adaptive Binary Arithmetic Coding in the H.264/AVC Video Compression Standard」(D.Marpeら、IEEE transactions on circuits and systems for video technology,Vol.13,No.7,ページ620~636,2003年7月)に記載されている。したがって、量子化された重みレベルlは、一連の2値シンボルまたはシンタックス要素に分解され、次いで2値算術符号化器(CABAC)に渡され得る。
【0177】
第1のステップでは、対応するレベルが0に等しいかどうかを指定する、量子化重みレベルについての2値シンタックス要素sig_flagが導出される。sig_flagが1に等しい場合、さらなる2値シンタックス要素sign_flagが導出される。ビンは、現在の重量レベルが正(例えば、ビン=0)であるか負(例えば、ビン=1)であるかを示す。
次に、ビンの単項シーケンスが符号化され、続いて以下のように固定長シーケンスが符号化される。
変数kは負でない整数で初期化され、Xは1<<kで初期化される。
【0178】
量子化重みレベルの絶対値がXより大きいことを示す1つ以上のシンタックス要素abs_level_greater_Xが符号化される。abs_level_greater_Xが1に等しい場合、変数kは更新され(例えば、1だけ増加する)、次いで1<<kがXに追加され、さらなるabs_level_greater_Xが符号化される。この手順は、abs_level_greater_Xが0に等しくなるまで継続される。その後、長さkの固定長コードは、量子化重みインデックスの符号化を完了するのに十分である。例えば、変数
はkビットを使用して符号化することができる。あるいは、変数
をkビットを使用して符号化される
として定義することもできる。あるいは、kビットの固定長コードへの変数
の任意の他のマッピングが使用されてもよい。
【0179】
各abs_level_greater_Xの後にkを1だけ増加させるとき、(sign_flagが考慮されない場合)この手法は指数ゴロム符号化を適用することと同一である。
【0180】
さらに、最大絶対値abs_maxが符号化器および復号器側で知られている場合、abs_level_greater_Xシンタックス要素の符号化は終了されてもよく、次のabs_level_greater_Xが送信される場合、X>=abs_maxが成立する。
CABACを用いた整数の復号化:量子化された重みレベルの復号化(整数表現)は、符号化と同様に機能する。
【0181】
図3は、本発明の一態様による復号器の一例を示す。ニューラルネットワーク220の重みパラメータ260を復号するための復号器200が、ニューラルネットワーク220の複数の重みパラメータ260を取得することが示されている。次に、復号器200は、コンテキスト依存算術符号化230を使用してニューラルネットワーク220の重みパラメータ260を復号し、復号器200は、1つの重みパラメータ260の復号、または重みパラメータの数値表現のシンタックス要素260aの復号のために、いくつかの利用可能なコンテキスト240
1、240
2、...、240
nからコンテキストを選択する。選択は、選択のための特定の基準250に応じて実行される。この文書は、この基準250の多くの可能な選択肢を記載している。可能な基準250の1つは、選択が、1つ以上の以前に復号された重みパラメータに応じて、および/または1つ以上の重みパラメータの数値表現の1つ以上の以前に復号されたシンタックス要素に応じて実行されることである。復号器は、選択されたコンテキストを使用して、重みパラメータ260、または重みパラメータのシンタックス要素260aを復号する。
【0182】
しかしながら、異なる復号概念を使用することができることに留意されたい。以下では、復号、例えばニューラルネットワークパラメータの復号に使用することができるいくつかの任意選択の詳細について説明するが、これらは個別に使用することもでき、組み合わせて使用することもできる。
【0183】
復号器は、まず、sig_flagを復号する。これが1に等しい場合、sign_flagおよびabs_level_greater_Xの単項シーケンスが続き、kの更新(したがって、Xのインクリメント)は符号化器と同じ規則に従わなければならない。最後に、kビットの固定長コードを復号し、整数(例えば、どちらが符号化されたかに応じて、
または
)として解釈する。次いで、復号された量子化重みレベル
の絶対値は、Xから再構成され、固定長部分を形成することができる。例えば、
が固定長部分として使用された場合、
。あるいは、
が符号化されている場合、
。最後のステップとして、符号は、復号されたsign_flagに応じて
に適用される必要があり、量子化された重みレベルlをもたらす。最後に、量子化された重みレベルlにステップサイズ
を乗算することによって、量子化された重み
が再構成される。
【0184】
好ましい実施形態では、kは0で初期化され、以下のように更新される。各abs_level_greater_Xが1に等しい後、kの必要な更新は以下の規則に従って行われ、X>X’の場合、kは1だけインクリメントされ、X’は用途に応じた定数である。例えば、X’は、符号化器によって導出され、復号器にシグナリングされる番号(例えば、0から100の間)である。
【0185】
コンテキストモデリング:CABACエントロピ符号化では、量子化された重みレベルのほとんどのシンタックス要素は、2値確率モデリングを使用して符号化される。各2値決定(ビン)は、コンテキストと関連付けられる。コンテキストは、符号化されたビンのクラスの確率モデルを表す。2つの可能なビン値のうちの1つの確率は、対応するコンテキストで既に符号化されているビンの値に基づいて、各コンテキストについて推定される。用途に応じて、異なるコンテキストモデリング手法を適用することができる。通常、量子化重み符号化に関連するいくつかのビンについて、符号化に使用されるコンテキストは、既に送信されたシンタックス要素に基づいて選択される。実際の用途に応じて、異なる確率推定器、例えば、SBMP(状態ベースのマルチパラメータ推定器)、またはHEVCまたはVTM-4.0の確率推定器を選択することができる。選択は、例えば、圧縮効率および複雑さに影響を及ぼす。
【0186】
SBMPの詳細は、「JVET-K0430-v3-CE5-related:State-based probability estimator」(H.Kirchhofferら、JVET、Ljubljana、2018年)に見出すことができる。
【0187】
HEVCのさらなる詳細は、「ITU-T H.265 High efficiency video coding」(ITU-国際電気通信連合、Series H:Audiovisual and multimedia systems-Infrastructure of audiovisual services-Coding of moving video、2015年4月)に見出すことができる。
【0188】
また、VTM-4.0の詳細は、「JVET-M1001-v6-Versatile Video Coding(Draft 4)」(B.Brossら、JVET、Marrakech、2019年)に記載されている。
【0189】
広範囲のニューラルネットワークに適合するコンテキストモデリング方式を以下に説明する。重み行列内の特定の位置(x,y)における量子化重みレベルlを復号するために、ローカルテンプレートが現在位置に適用される。このテンプレートは、例えば(x-1、y)、(x、y-1)、(x-1、y-1)などのようないくつかの他の(順序付けられた)位置を含む。各位置について、状態識別子が導出される。
【0190】
好ましい実施形態(Si1と示される)では、位置(x,y)の状態識別子
は以下のように導出され、位置(x,y)が行列の外側を指し示す場合、または位置(x,y)における量子化重みレベル
がまだ復号されていないかもしくは0に等しい場合、状態識別子
である。そうでない場合、状態識別子は
であるものとする。
【0191】
別の好ましい実施形態(Si2と示される)では、位置(x,y)の状態識別子
は以下のように導出され、位置(x,y)が行列の外側を指し示す場合、または位置(x,y)における量子化重みレベル
がまだ復号されていないかもしくは0に等しい場合、状態識別子
である。そうでない場合、状態識別子は
であるものとする。
【0192】
特定のテンプレートについて、状態識別子のシーケンスが導出され、状態識別子の値の可能な各群はコンテキストインデックスにマッピングされ、使用されるコンテキストを識別する。テンプレートおよびマッピングは、異なるシンタックス要素に対して異なっていてもよい。例えば、(順序付けられた)位置(x-1、y)、(x、y-1)、(x-1、y-1)を含むテンプレートから、状態識別子
、
、
の順序付けられたシーケンスが導出される。例えば、このシーケンスは、コンテキストインデックス
にマッピングされてもよい。例えば、コンテキストインデックス
は、sig_flagのためのコンテキストの数を識別するために使用され得る。
【0193】
好ましい実施形態(手法1で示される)では、位置(x,y)における量子化重みレベル
のsig_flagまたはsign_flagのローカルテンプレートは、ただ1つの位置(x-1、y)からなる(すなわち、左隣)。関連する状態識別子
は、好ましい実施形態Si1に従って導出される。
【0194】
sig_flagについては、
の値に応じて3つのコンテキストのうちの1つが選択され、sign_flagについては、
の値に応じて他の3つのコンテキストのうちの1つが選択される。
【0195】
別の好ましい実施形態(手法2と示す)では、sigフラグのローカルテンプレートは、3つの順序付き位置(x-1、y)、(x-2、y)、(x-3,y)を含む。状態識別子
、
の関連するシーケンスは、好ましい実施形態Si2に従って導出される。
sig_flagについて、コンテキストインデックス
は以下のように導出される。
の場合
。そうでなければ、
の場合
である。そうでなければ、
の場合
である。そうでない場合、
。
これは、以下の式で表すこともできる。
【0196】
同様に、左への隣接物の数は、コンテキストインデックスCが左への次の非ゼロ重みまでの距離に等しくなるように増減され得る(テンプレートサイズを超えない)。
【0197】
各abs_level_greater_Xフラグは、例えば、2つのコンテキストの独自のセットを適用することができる。その後、sign_flagの値に応じて2つのコンテキストのうちの1つが選択される。
【0198】
好ましい実施形態では、Xが所定の数X’よりも小さいabs_level_greater_Xフラグについて、Xおよび/またはsign_flagの値に応じて異なるコンテキストが区別される。
【0199】
好ましい実施形態では、Xが所定の数X’以上であるabs_level_greater_Xフラグについて、異なるコンテキストはXのみに応じて区別される。
【0200】
別の好ましい実施形態では、Xが所定の数X’以上であるabs_level_greater_Xフラグは、(例えば、算術符号化器のバイパスモードを使用して)1の固定コード長を使用して符号化される。
【0201】
さらに、シンタックス要素の一部または全部は、コンテキストを使用せずに符号化されてもよい。代わりに、それらは1ビットの固定長で符号化される。例えば、CABACのいわゆるバイパスビンを使用して。
別の好ましい実施形態では、固定長余り
はバイパスモードを使用して符号化される。
【0202】
別の好ましい実施形態では、符号化器は、所定の数X’を決定し、X<X’を有する各シンタックス要素abs_level_greater_Xについて、符号に応じて2つのコンテキストを使用し、X>=X’を有する各abs_level_greater_Xについて1つのコンテキストを使用する。
特に有利な態様:
【0203】
本発明の一態様によれば、各パラメータの推定標準偏差は、それぞれの関連性スコアとして解釈することができ、したがって量子化ステップの歪み測度に重み付けすることができる。
さらに、平均パラメータ値およびそれらの分散の分布に基づいて、コンテキスト適応量子化方法を適用することができる。
最後に、効率的なドット積演算を実行できるように、復号手順を適合させることができる。
これらの概念のいずれも、任意選択的に、任意の他の態様と組み合わせて、または個別に、実施形態のいずれかで使用されてもよい。
【0204】
一般化
本明細書に提示された装置(または、一般的に言えば、本明細書に開示される実施形態のいずれか)は、一般化され、他の関連性スコア測度に適合させることができる。すなわち、量子化手順で適用される歪み関数は、
に一般化されてもよく、
ここで、d(.,.)は任意の距離測度であり、R
iは任意の関連性スコア測度であり得る。
【0205】
しかしながら、任意選択的に、任意の他の歪み関数も使用することができる。本明細書に記載の概念のいずれかと共に使用するための歪み測度を生成するために、2つ以上の歪み関数を組み合わせることさえ可能であり得る。
【0206】
他の研究:重み付けエントロピ制約量子化アルゴリズムを適用することを提案したいくつかの研究がある。詳細は、「Towards the limit of network quantization」(Yoojin Choiら、CoRR、abs/1612.01543、2016)および「Weighted-entropy-based quantization for deep neural networks」(Eunhyeok Parkら、CVPR、2017)に見出すことができる。しかしながら、それらの量子化アルゴリズムは、スカラー量子化(「Source Coding:Part I of Fundamentals of Source and Video Coding」(Thomas Wiegand and Heiko Schwarz,Foundation and Trends(登録商標)in Signal Processing:Vol.4:No.1-2,2011)も参照されたい)のエントロピ制約付きLloydアルゴリズムに基づいており、したがって、いかなるコンテキストベースの適応アルゴリズムも、関連するドット積アルゴリズムを改善することを目的とするいかなる最適化も適用しない。さらに、この文書で適用される方法とは対照的に、それらの関連性スコアは、テイラー拡張法またはパラメータの大きさに基づく方法に基づいている。
しかしながら、上記の文献に記載された概念は、本文献の1つ以上の態様と個別にまたは組み合わせて任意選択的に使用することができることが見出された。
【0207】
結論
結論として、本明細書に記載の実施形態は、本明細書に記載の重要な点または態様のいずれかによって任意に補足することができる。しかしながら、本明細書に記載された重要な点および態様は、個別にまたは組み合わせて使用することができ、個別におよび組み合わせて本明細書に記載された実施形態のいずれかに導入することができることに留意されたい。
【0208】
実装の代替手段
いくつかの態様は、装置の文脈で説明されているが、これらの態様は、対応する方法の説明も表しており、ブロックまたは装置は、方法ステップまたは方法ステップの特徴に対応することは明らかである。同様に、方法ステップの文脈で説明される態様は、対応するブロックまたは対応する装置のアイテムまたは特徴の記述も表す。方法ステップの一部または全部は、例えば、マイクロ処理部、プログラム可能なコンピュータまたは電子回路のようなハードウェア装置によって(または使用して)実行されてもよい。いくつかの実施形態では、最も重要な方法ステップの1つ以上は、そのような装置によって実行されてもよい。
【0209】
特定の実装要件に応じて、本発明の態様の実施形態は、ハードウェアまたはソフトウェアで実装することができる。実施形態は、中に格納される電子的に読み取り可能な制御信号を有し、各方法が実行されるようにプログラム可能なコンピュータシステムと協働する(または協働可能な)、例えばフロッピーディスク、DVD、ブルーレイ、CD、ROM、PROM、EPROM、EEPROMまたはフラッシュメモリなどのデジタル記憶媒体を使用して実行することができる。したがって、デジタル記憶媒体はコンピュータ可読であってもよい。
【0210】
本発明の態様によるいくつかの実施形態は、プログラム可能なコンピュータシステムと協働して、本明細書に記載の方法の1つが実行されるような、電子的に読み取り可能な制御信号を有するデータキャリアを備える。
【0211】
一般に、本発明の態様の実施形態は、コンピュータプログラム製品がコンピュータ上で動作するときに、本方法の1つを実行するように動作するプログラムコードを有するコンピュータプログラム製品として実施することができる。プログラムコードは、例えば、機械読み取り可能なキャリアに格納することができる。
他の実施形態は、本明細書に記載の方法の1つを実行するためのコンピュータプログラムを含み、機械読み取り可能なキャリアに格納される。
【0212】
換言すれば、本発明の方法の実施形態は、コンピュータプログラムがコンピュータ上で実行されるときに、本明細書に記載の方法の1つを実行するためのプログラムコードを有するコンピュータプログラムである。
【0213】
したがって、本発明の方法のさらなる実施形態は、本明細書に記載の方法のうちの1つを実行するためのコンピュータプログラムを含み、そこに記録される、データキャリア(またはデジタル記憶媒体またはコンピュータ可読媒体)である。データキャリア、デジタル記憶媒体または記録媒体は、典型的には有形および/または非一時的である。
【0214】
したがって、本発明の方法のさらなる実施形態は、本明細書に記載の方法のうちの1つを実行するためのコンピュータプログラムを表すデータストリームまたは信号のシーケンスである。データストリームまたは信号のシーケンスは、例えば、データ通信接続、例えばインターネットを介して転送されるように構成することができる。
【0215】
さらなる実施形態は、本明細書に記載の方法のうちの1つを実行するように構成された、または適用される処理手段、例えばコンピュータまたはプログラマブル論理装置を含む。
さらなる実施形態は、本明細書で説明される方法の1つを実行するためのコンピュータプログラムがインストールされたコンピュータを含む。
【0216】
本発明の態様によるさらなる実施形態は、本明細書で説明される方法の1つを実行するためのコンピュータプログラムを受信機に転送(例えば、電子的にまたは光学的に)するように構成された装置またはシステムを含む。受信機は、例えば、コンピュータ、モバイル装置、メモリ装置などであってもよい。この装置またはシステムは、例えば、コンピュータプログラムを受信機に転送するためのファイルサーバを備えることができる。
【0217】
いくつかの実施形態では、プログラマブルロジック装置(例えば、フィールドプログラマブルゲートアレイ)を使用して、本明細書に記載の方法の機能の一部または全部を実行することができる。いくつかの実施形態では、フィールドプログラマブルゲートアレイは、本明細書で説明する方法の1つを実行するためにマイクロ処理部と協働することができる。一般に、これらの方法は、好ましくは、任意のハードウェア装置によって実行される。
【0218】
本明細書に記載の装置は、ハードウェア装置を使用して、またはコンピュータを使用して、またはハードウェア装置とコンピュータの組み合わせを使用して実装することができる。
本明細書に記載の装置、または本明細書に記載の装置の任意の構成要素は、少なくとも部分的にハードウェアおよび/またはソフトウェアで実装されてもよい。
【0219】
ここに記載された方法は、ハードウェア装置を使用して、またはコンピュータを使用して、またはハードウェア装置とコンピュータの組み合わせを使用して実行されてもよい。
【0220】
本明細書に記載の方法、または本明細書に記載の装置の任意の構成要素は、ハードウェアおよび/またはソフトウェアによって少なくとも部分的に実行され得る。
【0221】
上述の実施形態は、本発明の態様の原理の単なる例示である。本明細書に記載された構成および詳細の修正および変形は、他の当業者には明らかであることが理解される。したがって、本明細書の実施形態の説明および説明として提示された特定の詳細によってではなく、差し迫った特許請求の範囲によってのみ限定されることが意図される。