(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-22
(45)【発行日】2024-01-05
(54)【発明の名称】マルチタスクニューラルネットワークを使用するマルチ品質ループフィルタによるビデオ処理の方法、装置及びコンピュータプログラム
(51)【国際特許分類】
H04N 19/126 20140101AFI20231225BHJP
H04N 19/136 20140101ALI20231225BHJP
H04N 19/192 20140101ALI20231225BHJP
【FI】
H04N19/126
H04N19/136
H04N19/192
(21)【出願番号】P 2022561031
(86)(22)【出願日】2021-10-14
(86)【国際出願番号】 US2021055036
(87)【国際公開番号】W WO2022150082
(87)【国際公開日】2022-07-14
【審査請求日】2022-10-06
(32)【優先日】2021-01-11
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-10-13
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ジアン,ウェイ
(72)【発明者】
【氏名】ワン,ウェイ
(72)【発明者】
【氏名】リン,シェン
(72)【発明者】
【氏名】リウ,シャン
【審査官】松元 伸次
(56)【参考文献】
【文献】国際公開第2019/031410(WO,A1)
【文献】米国特許出願公開第2020/0120340(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04N19/00-19/98
(57)【特許請求の範囲】
【請求項1】
マルチタスクニューラルネットワークを使用するマルチ品質ループフィルタでビデオを処理する方法であって、当該方法は、少なくとも1つのプロセッサによって実行され、当該方法は、
ニューラルネットワークの第1の層のセットについて、第1のマスクのセット及び第1の複数の重みパラメータを用いて入力と複数の量子化パラメータ値とに基づいて、第1のマスク化重みパラメータのセットを生成するステップと、
前記複数の量子化パラメータ値に基づいて、第2の複数の重みパラメータを用いて、前記複数の量子化パラメータ値について、前記ニューラルネットワークの第2の層のセットを選択するステップと、
前記第1のマスク化重みパラメータのセットと前記第2の複数の重みパラメータとに基づいて、推論出力を計算するステップと、
前記計算された推論出力を出力するステップと、
を含む、方法。
【請求項2】
前記ニューラルネットワークを、前記ニューラルネットワークの前記第1の層のセットと前記ニューラルネットワークの前記第2の層のセットとに分裂させるステップを更に含み、
前記ニューラルネットワークの前記第1の層のセットのモデルパラメータは、異なる量子化パラメータ値にわたって共有される共有層であり、該共有層の各々について前記第1の複数の重みパラメータのうちの対応する1つを有し、
前記ニューラルネットワークの前記第2の層のセットのモデルパラメータは、前記量子化パラメータ値の各々に対して異なるタスク固有層であり、該タスク固有層の各々について前記第2の複数の重みパラメータのうちの対応する1つを有する、
請求項1に記載の方法。
【請求項3】
前記第1のマスクのセット内の各マスクは、前記第1の複数の重みパラメータのうちの対応する1つが、前記推論出力を計算するために使用されるかどうかを示すバイナリ値である、
請求項1に記載の方法。
【請求項4】
前記ニューラルネットワークは、前記入力、前記推論出力及びそれぞれの量子化パラメータ値に基づいて決定される歪み損失を最小化するために、前記第1のマスクのセットによってそれぞれマスクされていない前記第1の複数の重みパラメータのうちの1つ以上を更新することによってトレーニングされる、
請求項1に記載の方法。
【請求項5】
前記ニューラルネットワークは、
前記第1のマスクのセットによってそれぞれマスクされていない前記第1の複数の重みパラメータのうちの前記更新された1つ以上をプルーニングして、前記第1の複数の重みパラメータのうちのどれがプルーニングされたかを示すバイナリプルーニングマスクを取得することと、
前記歪み損失を最小化するために、前記第1のマスクのセットによってそれぞれマスクされていない前記第1の複数の重みパラメータと、前記取得されたバイナリプルーニングマスクのうちの少なくとも一方を更新することと、
によって更にトレーニングされる、請求項4に記載の方法。
【請求項6】
前記第2の複数の重みパラメータに対応する第2のマスクのセットを選択するステップを更に含む、
請求項1に記載の方法。
【請求項7】
前記第1の複数の重みパラメータ及び前記第1のマスクのセットの畳み込みを実行して、前記第1のマスク化重みパラメータのセットを取得するステップを更に含む、
請求項1に記載の方法。
【請求項8】
マルチタスクニューラルネットワークを使用するマルチ品質ループフィルタでビデオを処理するための装置であって、
プログラムコードを記憶するよう構成される少なくとも1つのメモリと、
前記プログラムコードを読み出し、前記プログラムコードによって指示されるように動作するよう構成される少なくとも1つのプロセッサと、
を含み、前記プログラムコードは、
前記少なくとも1つのプロセッサに、ニューラルネットワークの第1の層のセットについて、第1のマスクのセット及び第1の複数の重みパラメータを用いて入力と複数の量子化パラメータ値とに基づいて、第1のマスク化重みパラメータのセットを生成させるよう構成される生成コードと、
前記少なくとも1つのプロセッサに、前記複数の量子化パラメータ値に基づいて、第2の複数の重みパラメータを用いて、前記複数の量子化パラメータ値について、前記ニューラルネットワークの第2の層のセットを選択させるよう構成される第1選択コードと、
前記少なくとも1つのプロセッサに、前記第1のマスク化重みパラメータのセットと前記第2の複数の重みパラメータとに基づいて、推論出力を計算させるよう構成される計算コードと、
前記少なくとも1つのプロセッサに、前記計算された推論出力を出力させるよう構成される出力コードと、
を含む、装置。
【請求項9】
前記プログラムコードは、前記少なくとも1つのプロセッサに、前記ニューラルネットワークを、前記ニューラルネットワークの前記第1の層のセットと前記ニューラルネットワークの前記第2の層のセットとに分裂させるよう構成される分裂コードを更に含み、
前記ニューラルネットワークの前記第1の層のセットのモデルパラメータは、異なる量子化パラメータ値にわたって共有される共有層であり、該共有層の各々について前記第1の複数の重みパラメータのうちの対応する1つを有し、
前記ニューラルネットワークの前記第2の層のセットのモデルパラメータは、前記量子化パラメータ値の各々に対して異なるタスク固有層であり、該タスク固有層の各々について前記第2の複数の重みパラメータのうちの対応する1つを有する、
請求項8に記載の装置。
【請求項10】
前記第1のマスクのセット内の各マスクは、前記第1の複数の重みパラメータのうちの対応する1つが、前記推論出力を計算するために使用されるかどうかを示すバイナリ値である、
請求項8に記載の装置。
【請求項11】
前記ニューラルネットワークは、前記入力、前記推論出力及びそれぞれの量子化パラメータ値に基づいて決定される歪み損失を最小化するために、前記第1のマスクのセットによってそれぞれマスクされていない前記第1の複数の重みパラメータのうちの1つ以上を更新することによってトレーニングされる、
請求項8に記載の装置。
【請求項12】
前記ニューラルネットワークは、
前記第1のマスクのセットによってそれぞれマスクされていない前記第1の複数の重みパラメータのうちの前記更新された1つ以上をプルーニングして、前記第1の複数の重みパラメータのうちのどれがプルーニングされたかを示すバイナリプルーニングマスクを取得することと、
前記歪み損失を最小化するために、前記第1のマスクのセットによってそれぞれマスクされていない前記第1の複数の重みパラメータと、前記取得されたバイナリプルーニングマスクのうちの少なくとも一方を更新することと、
によって更にトレーニングされる、請求項11に記載の装置。
【請求項13】
前記少なくとも1つのプロセッサに、前記第2の複数の重みパラメータに対応する第2のマスクのセットを選択させるよう構成される第2選択コードを更に含む、
請求項8に記載の装置。
【請求項14】
前記少なくとも1つのプロセッサに、前記第1の複数の重みパラメータ及び前記第1のマスクのセットの畳み込みを実行して、前記第1のマスク化重みパラメータのセットを取得させるよう構成される実行コードを更に含む、
請求項8に記載の装置。
【請求項15】
少なくとも1つのプロセッサによって実行されると、該少なくとも1つのプロセッサに、請求項1乃至7のいずれか一項に記載の方法を実行させるコンピュータプログラム。
【発明の詳細な説明】
【背景技術】
【0001】
H.264/AVC(Advanced Video Coding)、HEVC(High-Efficiency Video Coding)及びVVC(Versatile Video Coding)のような伝統的なビデオコーディング規格は、同様の(再帰的)ブロックベースのハイブリッド予測/変換フレームワークを共有し、この場合、イントラ/インター予測、整数変換及びコンテキスト適応エントロピーコーディングのような個々のコーディングツールが、全体的な効率を最適化するために集中的に手作り(handcrafted)される。時空間ピクセル近傍(spatiotemporal pixel neighborhoods)が予測信号構築のために利用され、後続の変換、量子化及びエントロピーコーディングのための対応する残差を取得する。一方、ニューラルネットワーク(NN:Neural Networks)の性質は、隣接するピクセルの受容野(receptive field)からの時空間情報を解析することによって、異なるレベルの時空間刺激(spatiotemporal stimuli)を抽出することになる。高い非線形性と非局所的時空間相関を探索する能力は、大いに改善される圧縮品質のための有望な機会を提供する。
【0002】
非可逆ビデオ圧縮では、圧縮されたビデオは必然的に圧縮アーチファクトに悩まされ、これはエクスペリエンスの品質(QoE:Quality of Experience)を大幅に低下させる。実際に許容される歪みの量は用途に依存し、一般に、圧縮比が高いほど歪みは大きくなる。圧縮品質を制御するためには多くの方法がある。例えば量子化パラメータ(QP:Quantization Parameter)は量子化ステップサイズを決定する。QP値が大きいほど、量子化ステップサイズは大きく、歪みが大きくなる。ユーザの異なる要求に対応するために、ビデオコーディング方法は、異なる圧縮品質を有するビデオを圧縮する能力を必要とする。例えばVVCは、QP値を0から63の間で変化させることを許容する。
【発明の概要】
【0003】
実施形態によると、マイクロ構造化パラメータ共有に基づいて、マスク化マルチタスクニューラルネットワークを使用するマルチ品質ループフィルタビデオ圧縮の方法は、少なくとも1つのプロセッサによって実行され、ニューラルネットワーク内の第1の層のセットについて、第1のマスクのセット及び第1の複数の重みパラメータを用いて入力と複数の量子化パラメータ値とに基づいて、第1のマスク化重みパラメータのセットを生成するステップと、複数の量子化パラメータ値に基づいて、第2の複数の重みパラメータを用いて、複数の量子化パラメータ値について、ニューラルネットワークの第2の層のセットを選択するステップと、第1のマスク化重みパラメータのセットと第2の複数の重みパラメータとに基づいて、推論出力を計算して出力するステップとを含む。
【0004】
実施形態によると、マイクロ構造化パラメータ共有に基づいて、マスク化マルチタスクニューラルネットワークを使用するマルチ品質ループフィルタビデオ圧縮の装置は、プログラムコードを記憶するよう構成される少なくとも1つのメモリと、プログラムコードを読み出し、プログラムコードによって指示されるように動作するよう構成される少なくとも1つのプロセッサとを含む。プログラムコードは、少なくとも1つのプロセッサに、ニューラルネットワークの第1の層のセットについて、第1のマスクのセット及び第1の複数の重みパラメータを用いて入力と複数の量子化パラメータ値とに基づいて、第1のマスク化重みパラメータのセットを生成させるよう構成される生成コードと、少なくとも1つのプロセッサに、複数の量子化パラメータ値に基づいて、第2の複数の重みパラメータを用いて、複数の量子化パラメータ値について、ニューラルネットワークの第2の層のセットを選択させるよう構成される第1選択コードと、少なくとも1つのプロセッサに、第1のマスク化重みパラメータのセットと第2の複数の重みパラメータとに基づいて、推論出力を計算させるよう構成される計算コードと、少なくとも1つのプロセッサに、計算された推論出力を出力させるよう構成される出力コードと、を含む。
【0005】
実施形態によると、非一時的なコンピュータ読取可能媒体は、マルチタスクニューラルネットワークを使用するマルチ品質ループフィルタでビデオを処理するために、少なくとも1つのプロセッサによって実行されると、該少なくとも1つのプロセッサに、ニューラルネットワークの第1の層のセットについて、第1のマスクのセット及び第1の複数の重みパラメータを用いて入力と複数の量子化パラメータ値とに基づいて、第1のマスク化重みパラメータのセットを生成させ、複数の量子化パラメータ値に基づいて、第2の複数の重みパラメータを用いて、複数の量子化パラメータ値について、ニューラルネットワークの第2の層のセットを選択させ、第1のマスク化重みパラメータのセットと第2の複数の重みパラメータとに基づいて、推論出力を計算させ、計算された推論出力を出力させる、命令を記憶する。
【図面の簡単な説明】
【0006】
【
図1】実施形態に従って、本明細書において説明される方法、装置及びシステムが実装され得る環境の図である。
【0007】
【
図2】
図1の1つ以上のデバイスの例示的な構成要素のブロック図である。
【0008】
【
図3】実施形態に従った、テスト段階中の、マイクロ構造化マスクを使用するビデオ圧縮のマルチ品質ループフィルタ(MQLF:Multi-Quality Loop Filter)方法のためのマルチタスクニューラルネットワーク(MTNN:Multi-Task Neural Network)の推論のブロック図である。
【0009】
【
図4】実施形態に従った、トレーニング段階中の、マイクロ構造化マスクを使用するマルチタスクニューラルネットワークビデオ圧縮のためのトレーニング装置のブロック図である。
【0010】
【
図5】実施形態に従った、トレーニング段階中の、
図4のトレーニング装置からの重み充填(Weight Filling)モジュールの詳細なブロック図である。
【0011】
【
図6】実施形態に従った、トレーニング段階中の、
図4のトレーニング装置からのマイクロ構造化プルーニングモジュールの詳細なブロック図である。
【0012】
【
図7】実施形態に従った、共有マルチタスク層、タスク固有層及びマイクロ構造化マスクを有するMTNNを使用するMQLFによるビデオ圧縮のための方法のフローチャートである。
【0013】
【
図8】実施形態に従った、共有マルチタスク層、タスク固有層及びマイクロ構造化マスクを有するMTNNを使用するMQLFによるビデオ圧縮のための装置のブロック図である。
【発明を実施するための形態】
【0014】
ディープニューラルネットワーク(DNN:Deep Neural Network)ベースの方法は、ビデオノイズ除去、超解像度、ぼけ除去、デブロッキング等、圧縮ビデオの視覚品質を良好に強化するために開発されている。しかしながら、NNベースの品質強化法方法にとって、多数のQPに対応することは困難な問題であった。伝統的に、各QP値は、個々のタスクとして扱われ、1つのNNモデルインスタンスは、各QP値についてトレーニングされて展開される。多数のQP値によって生じる記憶及び計算コストを低減することが重要である。
【0015】
p個のQP値のセットqp1,...qppが与えられると、1つの解決策は、すべてのp個の値を区別することなく1つのセットとして扱い、したがって、異なるQP値のトレーニングデータを組み合わせることによって、すべてのp個の値について1つのNNモデルインスタンスをトレーニングすることである。改善された解決策は、QP値qpiをNNモデルの追加入力として使用し、異なるQP値の組み合わされたトレーニングデータで1つのNNモデルインスタンスをトレーニングすることである。QP値を入力として使用することによって、NNモデルインスタンスがそのパラメータを編成することを自動的に学習し、1つのサブグループが各QP値に対応する、データサンプルのサブグループの分布を暗黙的にモデル化することが期待される。
【0016】
実施形態は、マイクロ構造化パラメータ共有に基づくマルチタスクニューラルネットワーク(MTNN:Multi-Task Neural Network)を用いることによる、マルチ品質ループフィルタ(MQLF:Multi-Quality Loop Filter)メカニズムに関連し得る。1つのMTNNモデルインスタンスが、多数のQP値を収容(accommodate)するために使用され、ここで、バイナリマイクロ構造化マスク(MSM:Micro-Structured Mask)が各QP値に関連付けられ、そのQP値に対するMTNNの推論計算(inference computation)を明示的にガイドする。
【0017】
したがって、本開示の実施形態は、復号されたビデオを処理してノイズ、ブラー及びブロック効果のような1つ以上のタイプのアーチファクトを低減するために、マルチ品質ループフィルタ(MQLF)メカニズムを使用する方法及び装置を説明し得る。マイクロ構造化パラメータ共有に基づくマルチタスクニューラルネットワーク(MTNN)が提案され、ここで、1つのMTNNモデルインスタンスが、多数の量子化パラメータ(QP)値を収容するために使用され、1つのマイクロ構造化マスク(MSM)が各QP値に割り当てられて、そのQP値に対するMTNNの推論計算を明示的にガイドする。
【0018】
図1は、実施形態に従った、本明細書で説明される方法、装置及びシステムが実装され得る環境100の図である。
【0019】
図1に示されるように、環境100は、ユーザデバイス110、プラットフォーム120及びネットワーク130を含み得る。環境100のデバイスは、有線接続、無線接続又は有線及び無線接続の組合せを介して相互接続し得る。
【0020】
ユーザデバイス110は、プラットフォーム120に関連付けられる情報を受信、生成、記憶、処理及び/又は提供することが可能な1つ以上のデバイスを含む。例えばユーザデバイス110は、コンピューティングデバイス(例えばデスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、ハンドヘルドコンピュータ、スマートスピーカ、サーバ等)、携帯電話(例えばスマートフォン、無線電話等)、ウェアラブルデバイス(例えば一対のスマートグラス又はスマートウォッチ)又は類似のデバイスを含み得る。いくつかの実装では、ユーザデバイス110は、プラットフォーム120から情報を受信及び/又はプラットフォーム120へ情報を送信し得る。
【0021】
プラットフォーム120は、本明細書の他の箇所で説明されるように、1つ以上のデバイスを含む。いくつかの実装では、プラットフォーム120は、クラウドサーバ又はクラウドサーバのグループを含み得る。いくつかの実装形態では、プラットフォーム120は、ソフトウェア構成要素がスワップイン又はアウトされ得るようにモジュール化されるよう設計され得る。したがって、プラットフォーム120は、異なる使用のために容易に及び/又は迅速に再構成され得る。
【0022】
いくつかの実装では、図示されるように、プラットフォーム120は、クラウドコンピューティング環境122でホストされ得る。特に、本明細書に記載される実装は、プラットフォーム120がクラウドコンピューティング環境122でホストされるものとして説明するが、いくつかの実装では、プラットフォーム120は、クラウドベースではなくてもよく(すなわち、クラウドコンピューティング環境の外部で実装されてもよく)又は部分的にクラウドベースであってもよい。
【0023】
クラウドコンピューティング環境122は、プラットフォーム120をホストする環境を含む。クラウドコンピューティング環境122は、プラットフォーム120をホストするシステム及び/又はデバイスの物理的な位置及び構成に関するエンドユーザ(例えばユーザデバイス110)の知識を必要としない、計算、ソフトウェア、データアクセス、ストレージ等のサービスを提供し得る。図示されるように、クラウドコンピューティング環境122は、コンピューティングリソース124のグループ(「(複数の)コンピューティングリソース124」と総称され、個々に「コンピューティングリソース124」と称される)を含み得る。
【0024】
コンピューティングリソース124は、1つ以上のパーソナルコンピュータ、ワークステーションコンピュータ、サーバデバイス又は他のタイプの計算及び/又は通信デバイスを含む。いくつかの実装では、コンピューティングリソース124はプラットフォーム120をホストし得る。クラウドリソースは、コンピューティングリソース124において実行される計算インスタンス、コンピューティングリソース124において提供されるストレージデバイス、コンピューティングリソース124によって提供されるデータ転送デバイス等を含み得る。いくつかの実装では、コンピューティングリソース124は、有線接続、無線接続又は有線及び無線接続の組合せを介して、他のコンピューティングリソース124と通信し得る。
【0025】
図1に更に示されるように、コンピューティングリソース124は、1つ以上のアプリケーション(「APP」)124-1、1つ以上の仮想マシン(「VM」)124-2、仮想化ストレージ(「VS」)124-3、1つ以上のハイパーバイザ(「HYP」)124-4等のようなクラウドリソースのグループを含む。
【0026】
アプリケーション124-1は、ユーザデバイス110及び/又はプラットフォーム120に提供され得るか又はこれらによってアクセスされ得る、1つ以上のソフトウェアアプリケーションを含む。アプリケーション124-1は、ユーザデバイス110上にソフトウェアアプリケーションをインストールして実行する必要をなくすことができる。例えばアプリケーション124-1は、プラットフォーム120に関連付けられるソフトウェア及び/又はクラウドコンピューティング環境122を介して提供可能な任意の他のソフトウェアを含み得る。いくつかの実装では、1つのアプリケーション124-1が、仮想マシン124-2を介して、1つ以上の他のアプリケーション124-1へ/から情報を送信/受信し得る。
【0027】
仮想マシン124-2は、物理マシンのような、プログラムを実行するマシン(例えばコンピュータ)のソフトウェア実装を含む。仮想マシン124-2は、仮想マシン124-2による任意の実マシンへの使用及び対応の程度に応じて、システム仮想マシン又はプロセス仮想マシンのいずれかであり得る。システム仮想マシンは、完全なオペレーティングシステム(「OS」)の実行をサポートする完全なシステムプラットフォームを提供し得る。プロセス仮想マシンは、単一のプログラムを実行し、単一のプロセスをサポートし得る。いくつかの実装では、仮想マシン124-2は、ユーザ(例えばユーザデバイス110)に代わって実行してよく、データ管理、同期化又は長時間データ転送のようなクラウドコンピューティング環境122のインフラストラクチャを管理し得る。
【0028】
仮想化ストレージ124-3は、コンピューティングリソース124のストレージシステム又はデバイス内で仮想化技術を使用する、1つ以上のストレージシステム及び/又は1つ以上のデバイスを含む。いくつかの実装では、ストレージシステムのコンテキスト内では、仮想化のタイプは、ブロック仮想化及びファイル仮想化を含み得る。ブロック仮想化は、物理ストレージからの論理ストレージの抽象化(又は分離)を参照してよく、その結果、ストレージシステムは、物理ストレージ又は異種構造に関係なく、アクセスされ得る。この分離は、管理者がエンドユーザのストレージを管理する方法におけるストレージシステムの管理者の柔軟性を許容し得る。ファイル仮想化は、ファイルレベルでアクセスされるデータと、ファイルが物理的に記憶される場所との間の依存関係を排除し得る。これは、ストレージの使用、サーバ統合及び/又は非破壊的なファイルマイグレーション(non-disruptive file migrations)の性能の最適化を可能にし得る。
【0029】
ハイパーバイザ124-4は、複数のオペレーティングシステム(例えば「ゲストオペレーティングシステム」)が、コンピューティングリソース124のようなホストコンピュータ上で同時に実行することを可能にするハードウェア仮想化技術を提供し得る。ハイパーバイザ124-4は、ゲストオペレーティングシステムに対して仮想オペレーティングプラットフォームを提示し得、ゲストオペレーティングシステムの実行を管理し得る。様々なオペレーティングシステムの複数のインスタンスは、仮想化ハードウェアリソースを共有し得る。
【0030】
ネットワーク130は、1つ以上の有線及び/又は無線ネットワークを含む。例えばネットワーク130は、セルラーネットワーク(例えば第5世代(5G)ネットワーク、長期進化(LTE)ネットワーク、第3世代(3G)ネットワーク、コード分割多元接続(CDMA)ネットワーク等)、公衆陸上移動網(PLMN:public land mobile network)、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、電話網(例えば公衆交換電話網(PSTN))、プライベートネットワーク、アドホックネットワーク、イントラネット、インターネット、光ファイバベースのネットワーク等及び/又はこれら又は他のタイプのネットワークの組合せを含んでもよい。
【0031】
図1に示されるデバイス及びネットワークの数及び配置は、一例として提供される。実際には、
図1に示されるものよりも、追加のデバイス及び/又はネットワーク、より少ないデバイス及び/又はネットワーク、異なるデバイス及び/又はネットワーク又は異なるように配置されるデバイス及び/又はネットワークが存在し得る。さらに、
図1に示される2つ以上のデバイスが、単一のデバイス内に実装されてもよく、あるいは
図1に示される単一のデバイスが、複数の分散デバイスとして実装されて得る。加えて又は代替的に、環境100のデバイスのセット(例えば1つ以上のデバイス)は、環境100のデバイスの別のセットによって実行されるものとして説明される1つ以上の機能を実行し得る。
【0032】
図2は、
図1の1つ以上のデバイスの例示的な構成要素のブロック図である。
【0033】
デバイス200は、ユーザデバイス110及び/又はプラットフォーム120に対応し得る。
図2に示されるように、デバイス200は、バス210、プロセッサ220、メモリ230、記憶構成要素240、入力構成要素250、出力構成要素260及び通信インタフェース270を含み得る。
【0034】
バス210は、デバイス200の構成要素間の通信を可能にする構成要素を含む。プロセッサ220は、ハードウェア、ファームウェア又はハードウェアとソフトウェアの組合せで実装される。プロセッサ220は、中央処理ユニット(CPU)、グラフィクス処理ユニット(GPU)、加速処理ユニット(APU)、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)又は別のタイプの処理構成要素である。いくつかの実装では、プロセッサ220は、機能を実行するようにプログラムされることが可能な1つ以上のプロセッサを含む。メモリ230は、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)及び/又はプロセッサ220による使用のための情報及び/又は命令を記憶する別のタイプの動的又は静的ストレージデバイス(例えばフラッシュメモリ、磁気メモリ及び/又は光メモリ)を含む。
【0035】
記憶構成要素240は、デバイス200の操作及び使用に関連する情報及び/又はソフトウェアを記憶する。例えば記憶構成要素240は、ハードディスク(例えば磁気ディスク、光ディスク、光磁気ディスク及び/又はソリッドステートディスク)、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、フロッピーディスク、カートリッジ、磁気テープ及び/又は別のタイプの非一時的なコンピュータ読取可能媒体を、対応するドライブとともに含み得る。
【0036】
入力構成要素250は、デバイス200が、ユーザ入力(例えばタッチスクリーンディスプレイ、キーボード、キーパッド、マウス、ボタン、スイッチ及び/又はマイクロホン)を介するなどして情報を受け取ることを可能にする構成要素を含む。加えて又は代替的に、入力構成要素250は、情報を感知するためのセンサ(例えば全地球測位システム(GPS)構成要素、加速度計、ジャイロスコープ及び/又はアクチュエータ)を含んでもよい。出力構成要素260は、デバイス200からの出力情報を提供する構成要素(例えばディスプレイ、スピーカ及び/又は1つ以上の発光ダイオード(LED))を含む。
【0037】
通信インタフェース270は、デバイス200が有線接続、無線接続又は有線と無線接続の組合せを介するなどして他のデバイスと通信することを可能にする、トランシーバ状の構成要素(例えばトランシーバ及び/又は別個の受信機と送信機)を含む。通信インタフェース270は、デバイス200が別のデバイスから情報を受け取り、かつ/又は別のデバイスに情報を提供することを可能にし得る。例えば通信インタフェース270は、イーサネット(登録商標)インタフェース、光インタフェース、同軸インタフェース、赤外線インタフェース、無線周波数(RF)インタフェース、ユニバーサルシリアルバス(USB)インタフェース、Wi-Fiインタフェース、セルラーネットワークインタフェース等を含み得る。
【0038】
デバイス200は、本明細書で説明される1つ以上のプロセスを実行し得る。デバイス200は、プロセッサ220が、メモリ230及び/又は記憶構成要素240のような、非一時的なコンピュータ読取可能媒体によって記憶されるソフトウェア命令を実行することに応答して、これらのプロセスを実行し得る。コンピュータ読取可能媒体は、本明細書では、非一時的なメモリデバイスとして定義される。メモリデバイスは、単一の物理ストレージデバイス内のメモリ空間又は複数の物理ストレージデバイスにわたって広がるメモリ空間を含む。
【0039】
ソフトウェア命令は、別のコンピュータ読取可能媒体から又は通信インタフェース270を介して別のデバイスから、メモリ230及び/又は記憶構成要素240に読み込まれてよい。実行されると、メモリ230及び/又は記憶構成要素240に記憶されたソフトウェア命令は、プロセッサ220に、本明細書で説明される1つ以上のプロセスを実行させることができる。加えて又は代替的に、ハードワイヤード回路が、本明細書で説明される1つ以上のプロセスを実行するために、ソフトウェア命令の代わりに又はそれと組み合わせて使用されてよい。したがって、本明細書で説明される実施形態は、ハードウェア回路とソフトウェアの特定の組合せに限定されない。
【0040】
図2に示される構成要素の数及び配置は、一例として提供される。実際には、デバイス200は、
図2に示されるものよりも、追加の構成要素、より少ない構成要素、異なる構成要素又は異なる配置の構成要素を含んでもよい。加えて又は代替的に、デバイス200の構成要素(例えば1つ以上の構成要素)のセットは、デバイス200の構成要素の別のセットによって実行されるものとして説明される1つ以上の機能を実行してもよい。
【0041】
マイクロ構造化パラメータ共有に基づく、マスク化マルチタスクニューラルネットワークを使用するマルチ品質ループフィルタのビデオ圧縮のための方法及び装置が、次に詳細に説明される。
【0042】
典型的なビデオ圧縮フレームワークを、以下のように説明することができる。入力ビデオxが複数の画像フレームx
1,...,x
Tを含む仮定する。第1の動き推定(motion estimation)ステップでは、フレームを空間ブロックに区分化し、各ブロックを、より小さなブロックに反復的に区分化することができ、各ブロックについて、現在のフレームx
tと、一組の以前の再構成フレーム
(外1)
との間の一組の動きベクトルm
tが計算される。下付き文字tは、現在のt番目の符号化サイクルを示し、これは、画像フレームのタイムスタンプと一致しなくてよいことに留意されたい。また、以前の再構成フレーム
(外2)
は、複数の以前の符号化サイクルからのフレームを含む。次に、第2の動き補償ステップでは、予測フレーム
(外3)
が、動きベクトルm
tと、元のフレームx
tと予測フレーム
(外4)
との間の残差r
tとに基づいて、以前の再構成フレーム
(外5)
の対応するピクセルをコピーすることによって取得される。第3のステップでは、残差r
tが量子化される(典型的には、より良好な量子化性能を達成するためにr
tのDCT係数が量子化される、DCTのような変換の後に)。量子化ステップの結果として、量子化フレーム
(外6)
が得られる。動きベクトルm
tと量子化フレーム
(外7)
の両方が、エントロピーコーディングによってビットストリームに符号化され、デコーダに送信される。次いで、デコーダ側において、量子化フレーム
(外8)
が、(典型的には、非量子化係数を用いるIDCTのような逆変換を通して)非量子化され、復元された残差
(外9)
を取得する。次に、復元された残差
(外10)
を予測フレーム
(外11)
に加算して、再構成フレーム
(外12)
を取得する。
【0043】
再構成フレーム
(外13)
の視覚品質を改善するために、追加の構成要素が更に使用される。デブロッキングフィルタ(DF)、サンプル適応オフセット(SAO)、適応ループフィルタ(ALF)、クロス構成要素適応ループフィルタ(CCALF)等を含む、以下の強化モジュール(enhancement modules)の1つ又は多数が、再構成フレーム
(外14)
を処理するために選択され得る。選択されたモジュールの処理順序はこれに限定されず、変更することができる。
【0044】
本開示の実施形態は、再構成フレーム
(外15)
の視覚品質を強化するためのMQLFを提案する。目標は、再構成フレーム
(外16)
におけるノイズ、ぼけ、ブロック効果のようなアーチファクトを低減させ、結果として高品質フレーム
(外17)
を得ることである。具体的には、MTNNを使用して、高品質フレーム
(外18)
を計算し、ここで、1つのモデルインスタンスが多数のQP値を収容することができる。バイナリMSMが各QP値に使用され、そのQP値に対するMTNNの推論計算をガイドする。
【0045】
提案されるMQLFは、再構成フレーム
(外19)
の視覚品質を改善するために、前述した追加の構成要素(すなわち、DF、SAO、ALF、CCALF等)の1つ又は多数と組み合わせて使用されることができる。例えば再構成フレーム
(外20)
は、最初にDFを通過し、続いてMQLFを通過し、更に続いてSAOとALFを通過することができる。これらの構成要素が使用される順序は、任意に変更することができる。一例示的な実施形態では、提案される方法はまた、再構成フレーム
(外21)
の視覚品質を強化するために、他のすべての構成要素の置き換えとして単独で使用されることもできる。
【0046】
MQLFは、上述の追加の構成要素(例えばDF、SAO、ALF、CCALF等)の1つ又は多数と組み合わせて、フレームの各々におけるスライス/CUレベルの両方に使用され得る。言い換えると、再構成フレーム
(外22)
は、スライススイッチオン(Slice switch On)が適用される場合のIフレームのように、1つのフレーム全体とすることができ、階層レベル0のフレームを示す。また、再構成フレーム
(外23)
は、フレーム内のブロック、例えばCTUスイッチオン(CTU switch On)が適用される場合のCTUとすることができ、階層構造の下位レベルのフレームを示す。再構成フレーム
(外24)
を計算する特定のビデオ圧縮方法(例えばHEVC、VVC)に対する制限はない。
【0047】
図3は、実施形態に従った、テスト段階中の、マルチ品質ループフィルタ(MQLF:Multi-Quality Loop Filter)装置300のためのマイクロ構造化パラメータ共有によるマルチタスクニューラルネットワーク(MTNN:Multi-Task Neural Network)の推論のブロック図である。
【0048】
図3に示されるように、テスト装置300は、MTNN推論モジュール310を含む。
【0049】
サイズ(h,w,c)の入力
(外25)
を所与とすると、h、w、cはそれぞれ、高さ、幅及びチャネルの数であり、MQLFの推論ワークフローのテスト段階を以下のように説明することができる。
【0050】
MQLFは、1組の共有マルチタスク層(SMTL:Shared Multi-Task Layers)と1組のタスク固有層(TSL:Task-Specific Layers)という2つの部分に分けることができる、MTNNを使用する。SMTLのモデルパラメータは、異なるQP値にわたって共有される(すなわち、異なるQP値に対して同じ)。TSLのモデルパラメータは、各QP値について個別である。ある順序で、好ましくは入力フレーム
(外26)
の低い方から高い方への再構成品質に対応する降順でランク付けられた、p個のQP値qp
1,...,qp
pが存在すると仮定する。
(外27)
が、SMTLの1組の重みパラメータを示すものとし、ここで、各
(外28)
は、j番目の層の重みパラメータである。
(外29)
が、QP値qp
iに対応する1組のバイナリマスクを示すものとし、ここで、各バイナリマスク
(外30)
は、j番目の層の重みパラメータ
(外31)
と同じ形状を有する。バイナリマスク
(外32)
の各エントリは1又は0であり、重みパラメータ
(外33)
内の対応する重みエントリが、QP値qp
iの推論計算に関与するかどうかを示す。
(外34)
が、QP値qp
iに対応するTSLの1組の重みパラメータを示すものとし、ここで、
(外35)
は、j番目の層の重みパラメータである。層のタイプ(例えば畳み込み、正規化、完全接続など)及びSMTLとTSL内の層の位置に対して制限を設けない。例えばSTMLとTSLの層をインターレースして、MTNNを形成することができる。
【0051】
重みパラメータ
(外36)
の各々は、サイズ(c
1,k
1,k
2,k
3,c
2)の一般的な5次元(5D)テンソルである。対応する層の入力は、サイズ(h
1,w
1,d
1,c
1)の4次元(4D)テンソルAであり、出力は、サイズ(h
2,w
2,d
2,c
2)の4DテンソルBである。サイズc
1,k
1,k
2,k
3,c
2,h
1,w
1,d
1,h
2,w
2,d
2は、1以上の整数である。サイズc
1,k
1,k
2,k
3,c
2,h
1,w
1,d
1,h
2,w
2,d
2のいずれかが1に等しいとき、対応するテンソルはより小さい次元に減少する。各テンソルの各アイテムは浮動数(floating number)である。パラメータh
1,w
1及びd
1は入力Aの高さ、重み及び深度である。同様に、パラメータh
2,w
2及びd
2は出力Bの高さ、重み及び深度である。パラメータc
1は、入力Aの入力チャネルの数である。同様に、パラメータc
2は、出力Bの出力チャネルの数である。パラメータk
1,k
2及びk
3は、それぞれ高さ軸、重み軸、深度軸に対応する畳み込みカーネルのサイズである。出力Bは、入力Aと、重みパラメータ
(外37)
と、可能な場合にはマスク
(外38)
とに基づいて、畳み込み演算Θを通して計算される。重みパラメータ
(外39)
については、マスク
(外40)
もそれに関連付けられてよく、マスク
(外41)
のすべてのエントリが1に設定されることに留意されたい。この観点から、個々のタスクとして、各個々のQP値について個々のモデルインスタンスをトレーニングする伝統的な方法は、本開示において提案される方法の特殊なケースとして見なされることができ、この場合、SMTLは層及びマスクを有さず、一方、TSLがすべての層を有する。
【0052】
出力Bは、入力Aを、マスク化された重みと畳み込むことによって取得され得る:
【0053】
【0054】
ここで、・は要素ごとの乗算である。
【0055】
図3を参照すると、上記の学習された重みパラメータ
【数2】
及びマスク
【数3】
が、入力
(外42)
及び関連付けられるターゲットQP値
(外43)
とともに与えられると、対応するマスク
(外44)
を使用して、SMTLのためのマスク化重みパラメータ
(外45)
を生成し、QP値
(外46)
についてのTSLの対応するサブネットワークが、重みパラメータ
(外47)
を用いて選択される。次いで、SMTL推論のためのマスク化重みパラメータ
(外48)
を使用し、かつTSL推論のための重みパラメータ
(外49)
を使用して、MTNN推論モジュール310は、推論出力
(外50)
を計算し、これは、強化された高品質の結果である。
【0056】
各重みパラメータ
(外51)
の形状は、同じ出力を取得するために、整形(reshaped)された入力の、整形された
(外52)
との畳み込みに対応して、変更されることができる。同様に、各マスク
(外53)
の形状も変更することもできる。実施形態において、各重みパラメータの形状は、2つの構成をとり得る。まず、5D重みテンソルを、サイズ(c
1’,c
2’,k)の3Dテンソルに整形し、ここで、c
1’×c
2’×k=c
1×c
2×k
1×k
2×k
3である。例えば構成はc
1’=c
1,c
2’=c
2,k=k
1×k
2×k
3である。次に、5D重みテンソルを、(c
1’,c
2’)の2D行列に整形し、ここで、c
1’×c
2’=c
1×c
2×k
1×k
2×k
3である。例えばいくつかの構成は、c
1’=c
1,c
2’=c
2×k
1×k
2×k
3又はc
2’=c
2,c
1’=c
1×k
1×k
2×k
3を含む。
【0057】
マスクの所望のマイクロ構造は、マスク化重みパラメータを使用する推論計算を加速することができるように、畳み込み演算が実装される方法の基礎となるGEMM行列乗算プロセスと整合するように設計される。実施形態では、ブロックごと(block-wise)のマイクロ構造が、3D整形重みテンソル又は2D整形重み行列における各層のマスク(すなわち、マスク化重みパラメータ)に使用される。具体的には、整形された3D重みテンソルの場合、ブロックは、サイズ(g1’,g2’,gk)のブロックに区分化される。整形された2D重み行列の場合、ブロックは、(g1’,g2’)のブロックに区分化される。g1’,g2’,gkのいずれかがサイズ1をとると、対応するブロックはより小さい次元に減少する。マスクのブロック内のすべてのアイテムは、同じバイナリ値、1又は0を有する。すなわち、重みパラメータは、ブロックごとのマイクロ構造化の方式でマスクされる。
【0058】
実施形態によるNNモデルのトレーニングプロセスを次に説明する。提案される多段階トレーニングフレームワークの全体的なワークフローが
図4に示されている。トレーニング段階の目標は、MTNNモデルインスタンスを、重みパラメータ
(外54)
と、1組のマイクロ構造化マスク
(外55)
で学習し、各マスク
(外56)
及び重みパラメータ
(外57)
は、関心のあるQP値qp
iの各QP値をターゲットとしている。この目標を達成するために、漸進的な多段階トレーニングフレームワークが使用され得る。
【0059】
図4は、実施形態に従った、トレーニング段階中の、マイクロ構造化マスクによるマルチタスクニューラルネットワークのビデオ圧縮のためのトレーニング装置400のブロック図である。
【0060】
図4に示されるように、トレーニング装置400は、重み充填モジュール410と、マイクロ構造化プルーニングモジュール420とを含む。
【0061】
現在のタスクが、QP値qp
iをターゲットとするマスク、重み
(外58)
を有する現在のモデルインスタンス及び対応するマスク
(外59)
をトレーニングすることであると仮定する。また、現在のQP値qp
iは、学習すべき重みパラメータ
(外60)
を有する、それらの対応するTSLを有する。言い換えると、目標は、マスク
(外61)
と、更新された重みパラメータ
(外62)
と、新しい重みパラメータ
(外63)
を取得することである。
【0062】
まず、マスク
(外64)
によってマスク化重みパラメータ
(外65)
がフィックス(fix)される。例えば対応するマスクエントリ
(外66)
が1である重みパラメータである。次いで、学習プロセスが重み充填モジュール410を通して実施され、SMTLの
(外67)
内の残りのフィックスされていない重みと、TSLの重み
(外68)
を満たす(fill up)。この結果、一組の更新された重みパラメータ
(外69)
が得られる。
【0063】
次いで、マイクロ構造化プルーニングモジュール420は、1組の更新された重みパラメータ
(外70)
と、マスク
(外71)
と、
(外72)
とに基づいて、マイクロ構造化プルーニングを実行して、プルーニングされたモデルインスタンス及びマスク、
(外73)
を取得する。
【0064】
図5は、実施形態に従った、トレーニング段階中の、
図4の重み充填モジュール410のワークフローである。
【0065】
図5に示されるように、重み充填モジュール410は、MTNN推論モジュール320、重み固定及び充填モジュール510、損失計算モジュール520、追加損失計算モジュール530及び、バックプロパゲーション(Back-Propagation)及び重み更新モジュール540を含む。
【0066】
現在の重み
(外74)
と、対応するマスク
(外75)
が与えられると、
(外76)
によってマスクされる
(外77)
内の重みパラメータは、重み固定及び充填モジュール510においてフィックスされる。次いで、
(外78)
内の残りの重みパラメータが再初期化(reinitialized)される。例えばこれは、それらをいくつかのランダムな初期値に設定すること又は重み
(外79)
を有する第1の完全なモデルのような、以前に学習された完全なモデルの対応する重みを使用することによって行われてよい。これはSMTLの重みパラメータ
(外80)
を与える。TSLの重みパラメータ
(外81)
も初期化される(例えばそれらをいくつかのランダムな初期値に設定すること又は現在のQP値qp
iについてトレーニングされた個々の完全なモデルのような、何らかの以前に学習された完全なモデルの対応する重みを使用することによって)。その後、トレーニング入力
(外82)
はMTNNを通過して、STML推論のための重みパラメータ
(外83)
及びTSL推論のための重みパラメータ
(外84)
を使用して、MTNN推論モジュール320において、出力
(外85)
を計算する。
【0067】
トレーニングの目的のために、各トレーニング入力
(外86)
は、QP値qp
iに対して対応するグラウンドトゥルース(ground-truth)
(外87)
を有する。例えばトレーニング入力
(外88)
は、QP値qp
iを使用するビデオ圧縮方法でグラウンドトゥルース
(外89)
の圧縮されたバージョンから再構成される。トレーニングの一般的な目標は、グラウンドトゥルース
(外90)
と推定される出力
(外91)
との間の歪みを最小限にすることである。損失計算モジュール520は、MSEやSSIMのような、グラウンドトゥルース
(外92)
と推定される出力
(外93)
との間の歪みを測定するために、歪み損失
【数4】
を計算する。いくつかの例示的な実施形態では、追加損失計算モジュール530は、トレーニングプロセスを規則化するのを助けるために、他の損失を計算することができる。例えば知覚損失を使用することができ、この場合、VGGのような特徴抽出NNへの入力としてグラウンドトゥルース
(外94)
又は推定される出力
(外95)
のいずれかを渡すことによって、特徴マップを計算することができ、グラウンドトゥルース
(外96)
及び推定される出力
(外97)
によって計算された特徴マップの間の差異を測定し、重み付けし、歪み損失
【数5】
と組み合わせることができる。また、敵対的損失(adversarial loss)が使用されてもよく、この場合、弁別器(discriminator)が、
、グラウンドトゥルース
(外98)
又は推定される出力
(外99)
が、元(original)の入力であるか又はMTNNによる生成された入力であるかを分類しようと試みる。分類損失が、敵対的損失として使用され、重み付けされ、歪み損失
【数6】
と組み合わせることができる。バックプロパゲーション及び重み更新モジュール540は、この組み合わされた損失(又は他の損失が使用されない場合には、
【数7】
)の勾配を計算し、SMTLのフィックスされていない重みパラメータ
(外100)
及びTSLの重みパラメータ
(外101)
を更新する。このバックプロパゲーション及び重み更新モジュール540では、(例えば最大反復数に達するまで又は損失が収束するまで)複数の反復が行われてよい。
【0068】
図6は、実施形態に従った、トレーニング段階中の、
図4のマイクロ構造化プルーニングモジュール420の詳細なワークフローである。
【0069】
図6に示されるように、マイクロ構造化プルーニングモジュール420は、MTNN推論モジュール320、損失計算モジュール520、追加損失計算モジュール530、バックプロパゲーション及び重み更新モジュール540及びプルーニングマスク計算モジュール610を含む。
【0070】
まず、重み充填モジュール410からのSMTLの更新された重み
(外102)
とTSLの重み
(外103)
、並びに現在のマスク
(外104)
が与えられると、プルーニングマスク計算モジュール610はプルーニングマスクを計算する。詳細には、
(外105)
によってマスクされる更新された重みパラメータ
(外106)
は、
(外107)
内の残りのフィックスされていない重みパラメータについて、フィックスされ、前述のように、各マイクロ構造化ブロックbについて、プルーニング損失Lp(b)が計算される(例えばブロック内の重みのL
1又はL
2ノルム)。プルーニングマスク計算モジュール610は、マイクロ構造化ブロックを、それらの、プルーニング損失Lp(b)に基づいて昇順にランク付けし、ブロックは、停止基準に到達するまで、ランク付けされたリストからトップダウンにプルーニングされる(例えばプルーニングされたブロック内の対応する重みを0に設定することによって)。例えば検証データセットS
valが与えられると、重み
【数8】
を有するMTNNモデルは、次のように歪み損失L
valを生成する:
【0071】
【0072】
より多くのマイクロブロックがプルーニングされるにつれて、この歪み損失L
valは徐々に増加する。停止基準は、歪み損失L
valが増加することを可能にする相当なパーセンテージ閾値(tolerable percentage threshold)とすることができる。停止基準はまた、プルーニングされるマイクロ構造化ブロックの単純なパーセンテージ(例えば50%)とすることができる。1組のバイナリプルーニングマスク
(外108)
を生成することができ、ここで、プルーニングマスク
(外109)
内のエントリは1であり、これは、
(外110)
内の対応する重みパラメータがプルーニングされることを意味する。次いで、バックプロパゲーション及び重み更新モジュール540において、プルーニングされているとしてマスク
(外111)
によってマスクされる重み
(外112)
内の追加のフィックスされていない重みがフィックスされ、プルーニングマスク
(外113)
のいずれによってもマスクされない残りの重み
(外114)
が更新され、重み
(外115)
が定期的なバックプロパゲーションによって更新されて、トレーニングデータに対して、組み合わされた損失(他の損失が使用されない場合は、歪み損失
【数10】
)を最適化する。複数の反復が、例えば反復の最大数に達するまで又は損失が収束するまで行われ得る。
【0073】
対応するマスク
(外116)
を次のように計算することができる:
【0074】
【0075】
すなわち、
(外117)
においてマスクされていない
(外118)
内のプルーニングされていないエントリは更に、
(外119)
においてマスクされているとして1に設定される。また、上記のマイクロ構造化重みプルーニングプロセスは、更新された重み
(外120)
を出力する。上記のマイクロ構造化プルーニングプロセスは任意に、モデルサイズ及び推論計算を更に低減するために、重み
(外121)
に適用することもできることに留意されたい。すなわち、プルーニングマスク計算モジュール610はまた、TSLの重みをマイクロ構造に整形して区分化し、これらのマイクロ構造のプルーニング損失を計算し、プルーニング損失が小さい最上位にランク付けされたマイクロ構造をプルーニングすることができる。また、任意に、MTNN再構成品質と記憶及び計算のバランスを取るためにそうすることを選択することもできる。
【0076】
最終的に、最後に更新された重み
(外122)
は、MQLFのための学習されたMTNNモデルインスタンスのSMTLについての最終的な出力重み
(外123)
である。
【0077】
図7は、実施形態に従った、共有マルチタスク層、タスク固有層及びマイクロ構造化マスクを有するMTNNを使用するMQLFによるビデオ圧縮のための方法700のフローチャートである。
【0078】
いくつかの実装では、
図7の1つ以上のプロセスブロックは、プラットフォーム120によって実行されてもよい。いくつかの実装では、
図7の1つ以上のプロセスブロックは、ユーザデバイス110のような、プラットフォーム120から分離された又はプラットフォーム120を含む、別のデバイス又はデバイスのグループによって実行されてもよい。
【0079】
図7に示されるように、動作710において、方法700は、ニューラルネットワークの第1の層のセットについて、第1のマスクのセット及び第1の複数の重みパラメータを用いて入力と複数の量子化パラメータ値とに基づいて、第1のマスク化重みパラメータのセットを生成することを含む。第1のマスクのセット内の各マスクは、第1の複数の重みパラメータのうちの対応する1つが、推論出力を計算するために使用されるかどうかを示すバイナリ値であり得る。加えて、第1のマスク化重みパラメータのセットは、第1の複数の重みパラメータ及び第1のマスクのセットの畳み込みを実行することによって取得され得る。
【0080】
動作720において、方法700は、複数の量子化パラメータ値に基づいて、第2の複数の重みパラメータを用いて、複数の量子化パラメータ値について、ニューラルネットワークの第2の層のセットを選択することを含む。第2の複数の重みパラメータに対応する第2のマスクのセットを選択することもできる。
【0081】
動作730において、方法700は、第1のマスク化重みパラメータのセットと、第2の複数の重みパラメータとに基づいて推論出力を計算することを含む。
【0082】
動作740において、方法700は、計算された推論出力を出力することを含む。
【0083】
図7は方法の例示的なブロックを示しているが、いくつかの実装では、この方法は、
図7に示されるものよりも、追加のブロック、より少ないブロック、異なるブロック又は異なる配置のブロックを含んでもよい。加えて又は代替的に、方法のブロックのうちの2つ以上が並行に実行されてよい。
【0084】
例えば方法700の動作は、ニューラルネットワークを、ニューラルネットワークの第1の層のセットとニューラルネットワークの第2の層のセットに分裂させることを含んでもよい。ニューラルネットワークの第1の層のセットのモデルパラメータは、異なる量子化パラメータ値にわたって共有される共有層であってよく、共有層の各々について第1の複数の重みパラメータのうちの対応する1つを有する。ニューラルネットワークの第2の層のセットのモデルパラメータは、量子化パラメータ値の各々に対して異なるタスク固有層であり、該タスク固有層の各々について第2の複数の重みパラメータのうちの対応する1つを有する。
【0085】
ニューラルネットワークは、入力、推論出力及びそれぞれの量子化パラメータ値に基づいて決定される歪み損失を最小化するために、第1のマスクのセットによってそれぞれマスクされていない第1の複数の重みパラメータの1つ以上を更新することによって、トレーニングされる。さらに、ニューラルネットワークは、第1のマスクのセットによってそれぞれマスクされていない第1の複数の重みパラメータのうちの更新された1つ以上をプルーニングして、第1の複数の重みパラメータのうちのどれがプルーニングされたかを示すバイナリプルーニングマスクを取得することと、歪み損失を最小化するために、第1のマスクのセットによってそれぞれマスクされていない第1の複数の重みパラメータと、取得されたバイナリプルーニングマスクのうちの少なくとも一方を更新することとによってトレーニングされる。
【0086】
図8は、実施形態に従った、共有マルチタスク層、タスク固有層及びマイクロ構造化マスクを有するMTNNを使用するMQLFによるビデオ圧縮のための装置800のブロック図である。
【0087】
図8に示されるように、装置800は、生成コード810、第1選択コード820及び計算コード830を含む。
【0088】
生成コード810は、少なくとも1つのプロセッサに、ニューラルネットワークの第1の層のセットについて、第1のマスクのセット及び第1の複数の重みパラメータを用いて入力と複数の量子化パラメータ値とに基づいて、第1のマスク化重みパラメータのセットを生成させるよう構成される。第1のマスクのセット内の各マスクは、第1の複数の重みパラメータのうちの対応する1つが、推論出力を計算するために使用されるかどうかを示すバイナリ値であり得る。
【0089】
第1選択コード820は、少なくとも1つのプロセッサに、複数の量子化パラメータ値に基づいて、第2の複数の重みパラメータを用いて、複数の量子化パラメータ値について、ニューラルネットワークの第2の層のセットを選択させるよう構成される。
【0090】
計算コード830は、少なくとも1つのプロセッサに、第1のマスク化重みパラメータのセットと第2の複数の重みパラメータとに基づいて、推論出力を計算させるよう構成される。
【0091】
出力コード840は、少なくとも1つのプロセッサに、計算された推論出力を出力させるよう構成される。
【0092】
図8は装置の例示的なブロックを示しているが、いくつかの実装では、装置は、
図8に示されたものよりも、追加のブロック、より少ないブロック、異なるブロック又は異なる配置のブロックを含んでもよい。加えて又は代替的に、装置のブロックのうちの2つ以上が組み合わされてもよい。
【0093】
例えば装置800は、少なくとも1つのプロセッサに、ニューラルネットワークを、ニューラルネットワークの第1の層のセットとニューラルネットワークの第2の層のセットに分裂させるよう構成される分裂コードを含んでもよく、ニューラルネットワークの第1の層のセットのモデルパラメータは、異なる量子化パラメータ値にわたって共有される共有層であり、該共有層の各々について第1の複数の重みパラメータのうちの対応する1つを有し、ニューラルネットワークの第2の層のセットのモデルパラメータは、量子化パラメータ値の各々に対して異なるタスク固有層であり、該タスク固有層の各々について第2の複数の重みパラメータのうちの対応する1つを有する。
【0094】
ニューラルネットワークは、入力、推論出力及びそれぞれの量子化パラメータ値に基づいて決定される歪み損失を最小化するために、第1のマスクのセットによってそれぞれマスクされていない第1の複数の重みパラメータのうちの1つ以上を更新すること、第1のマスクのセットによってそれぞれマスクされていない第1の複数の重みパラメータのうちの更新された1つ以上をプルーニングして、第1の複数の重みパラメータのうちのどれがプルーニングされたかを示すバイナリプルーニングマスクを取得することと、歪み損失を最小化するために、第1のマスクのセットによってそれぞれマスクされていない第1の複数の重みパラメータと、取得されたバイナリプルーニングマスクのうちの少なくとも一方を更新することと、によってトレーニングされ得る。
【0095】
さらに、装置800は、少なくとも1つのプロセッサに、第2の複数の重みパラメータに対応する第2のマスクのセットを選択させるよう構成される第2選択コードと、少なくとも1つのプロセッサに、第1の複数の重みパラメータ及び第1のマスクのセットの畳み込みを実行して、第1のマスク化重みパラメータのセットを取得させるよう構成される実行コードとを更に含み得る。
【0096】
従来のループフィルタリング又はNNベースのループフィルタリング方法と比較して、実施形態は、多数のバイナリマスクを使用することによって多数のQP値の圧縮に対応するために、1つのMTNNモデルインスタンスを使用することを説明する。ブロックごとのマイクロ構造化マスクは、個々のQP値の圧縮性能も保持し、推論計算を低減することができる。この方法は、多数のQP値を使用する圧縮のための展開記憶域を大幅に低減する。また、様々なタイプの基礎となるNNLF法及びモデルアーキテクチャ、並びに様々な形状のマイクロ構造を収容する、柔軟で一般的なフレームワークも提供する。
【0097】
提案される方法は、別個に又は任意の順序で組み合わせて使用されてよい。さらに、方法(又は実施形態)の各々は、処理回路(例えば1つ以上のプロセッサ又は1つ以上の集積回路)によって実装されてもよい。一例では、1つ以上のプロセッサは、非一時的なコンピュータ読取可能媒体に記憶されるプログラムを実行する。
【0098】
前述の開示は、例示及び説明を提供するが、網羅的であるように意図されておらず、また、実装を開示された正確な形態に限定するようにも意図されていない。修正及び変形が、上記の開示に照らして可能であり、あるいは実装の実践から取得され得る。
【0099】
本明細書で使用されるとき、構成要素という用語は、ハードウェア、ファームウェア又はハードウェアとソフトウェアの組合せとして広く解釈されるように意図される。
【0100】
本明細書で説明されるシステム及び/又は方法は、ハードウェア、ファームウェア又はハードウェアとソフトウェアの組合せの異なる形態で実装されてもよいことは明らかであろう。これらのシステム及び/又は方法を実装するために使用される実際の特殊化された制御ハードウェア又はソフトウェアコードは、実装を限定するものではない。したがって、システム及び/又は方法の動作及び挙動は、本明細書において、特定のソフトウェアコードを参照することなく記載されており、ソフトウェア及びハードウェアは、本明細書の記載に基づいてシステム及び/又は方法を実装するように設計され得ることが理解される。
【0101】
特徴の組合せが特許請求の範囲に記載され、かつ/又は明細書に開示されているとしても、これらの組合せは、可能な実施の開示を限定するように意図されていない。実際、これらの特徴の多くは、特許請求の範囲に具体的に記載されていない及び/又は明細書に開示されていない方法で組み合わされてもよい。以下に列挙される各従属請求項は、1の請求項のみに直接従属することがあるが、可能な実装の開示は、クレームセット内のすべての他の請求項との組合せで各従属請求項を含む。
【0102】
本明細書中で使用される要素、動作又は命令は、明示的に記述されない限り、重要又は必須と解釈され得ない。また、本明細書で使用されるとき、冠詞「a」及び「an」は、1つ以上のアイテムを含むように意図されており、「1つ以上」と互換的に使用されてよい。さらに、本明細書で使用されるとき、「セット」という用語は、1つ以上のアイテム(例えば関連するアイテム、関連しないアイテム、関連するアイテムと関連しないアイテムの組合せ等)を含むように意図されており、「1つ以上」と互換的に使用されてよい。1つのアイテムのみが意図されている場合、「1」という用語又は類似の言語が使用される。また、本明細書で使用されるとき、「有する(has、have、having)」等は、オープンエンドの用語であるように意図されている。さらに、「に基づいて」というフレーズは、明示的に別段の記載がない限り、「少なくとも部分的に基づいて」を意味するように意図されている。