(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-26
(45)【発行日】2024-01-10
(54)【発明の名称】品質入力を有するループフィルタのためのマスクされたニューラルネットワークによるモデル共有
(51)【国際特許分類】
H04N 19/117 20140101AFI20231227BHJP
H04N 19/82 20140101ALI20231227BHJP
H04N 19/86 20140101ALI20231227BHJP
G06N 3/045 20230101ALI20231227BHJP
H04N 19/157 20140101ALI20231227BHJP
H04N 19/147 20140101ALI20231227BHJP
【FI】
H04N19/117
H04N19/82
H04N19/86
G06N3/045
H04N19/157
H04N19/147
(21)【出願番号】P 2022556591
(86)(22)【出願日】2021-09-30
(86)【国際出願番号】 US2021052808
(87)【国際公開番号】W WO2022154834
(87)【国際公開日】2022-07-21
【審査請求日】2022-09-20
(32)【優先日】2021-01-14
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-09-27
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ジアン,ウェイ
(72)【発明者】
【氏名】ワン,ウェイ
(72)【発明者】
【氏名】リン,シェン
(72)【発明者】
【氏名】リウ,シャン
【審査官】間宮 嘉誉
(56)【参考文献】
【文献】特表2019-525544(JP,A)
【文献】国際公開第2019/031410(WO,A1)
【文献】国際公開第2019/046295(WO,A1)
【文献】米国特許出願公開第2020/0304802(US,A1)
【文献】AUYEUNG, Cheung et al.,AHG11: A Case Study to Reduce Computation of Neural Network Based In-Loop Filter by Pruning,JVET-T0057 (version 4),ITU,2020年10月08日,pp.1-9,[online],[retrieved on 2023-11-28],Retrieved from the Internet: <URL: https://jvet-experts.org/doc_end_user/documents/20_Teleconference/wg11/JVET-T0057-v4.zip>,JVET-T0057-v4.docx
【文献】WANG, Yingbin et al.,AHG9: Dense Residual Convolutional Neural Network Based In-Loop Filter,VET-L0242 (version 3),ITU,2018年10月11日,pp.1-8,[online],[retrieved on 2023-11-28],Retrieved from the Internet: <URL: https://jvet-experts.org/doc_end_user/documents/12_Macao/wg11/JVET-L0242-v3.zip>,JVET-L0242-v3-clean.docx
【文献】MA, Di et al.,MFRNet: A New CNN Architecture for Post-Processing and In-Loop Filtering,IEEE Journal of Selected Topics in Signal Processing,IEEE,2020年12月09日,Vol.15, No.2,pp.378-387,[online],[retrieved on 2023-11-28],Retrieved from the Internet: <URL: https://ieeexplore.ieee.org/document/9288899>,https://doi.org/10.1109/JSTSP.2020.3043064
(58)【調査した分野】(Int.Cl.,DB名)
G06F 18/00-18/40
G06N 3/00-99/00
H04N 7/12
H04N 19/00-19/98
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
少なくとも1つのプロセッサによって実行される、マルチタスクニューラルネットワークを使用した多品質ループフィルタでビデオを処理する方法であって、
入力における複数の量子化パラメータに基づいて複数のモデルIDを生成するステップと、
第1のセットのマスクを選択するステップであって、前記第1のセットのマスク内の各マスクは前記生成されたモデルIDのうち1つに対応する、ステップと、
前記選択された第1のセットのマスク及びニューラルネットワークの第1のセットの層の第1の複数の重みの畳み込みを実行して、第1のマスクされた重みを取得するステップと、
前記複数の量子化パラメータに基づいて、前記ニューラルネットワークからの第2のセットの層及び第2の複数の重みを選択するステップと、
前記複数の量子化パラメータに基づいて量子化パラメータ値を生成するステップと、
前記生成された量子化パラメータ値を使用して、前記第1のマスクされた重み及び前記第2の複数の重みに基づいて推論出力を計算するステップと
を含む方法。
【請求項2】
前記ニューラルネットワークを前記第1のセットの層及び前記第2のセットの層に分割するステップを更に含み、
前記第1のセットの層のモデルパラメータは、共有層のそれぞれについて前記第1の複数の重みの対応するものによって、異なる量子化パラメータの間で共有される共有層であり、
前記第2のセットの層のモデルパラメータは、タスク固有層のそれぞれについて前記第2の複数の重みのうち対応するものによって、前記量子化パラメータのそれぞれについて異なるタスク固有層である、請求項1に記載の方法。
【請求項3】
前記第1のセットのマスク内の各マスクは、前記第1の複数の重みのうち対応するものがそれぞれのモデルIDの前記量子化パラメータを計算するために使用されるか否かを示すバイナリ値である、請求項1又は2に記載の方法。
【請求項4】
前記ニューラルネットワークは、前記入力、前記推論出力及びそれぞれのモデルIDのそれぞれの量子化パラメータに基づいて決定された歪み損失を最小化するように、前記第1のセットのマスクによってそれぞれマスクされていない前記第1の複数の重みのうち1つ以上を更新することによって訓練される、請求項1乃至3のうちいずれか1項に記載の方法。
【請求項5】
前記ニューラルネットワークは、
前記第1の複数の重みのうちどれがプルーニングされるかを示すバイナリプルーニングマスクを取得するように、前記第1のセットのマスクによってそれぞれマスクされていない前記第1の複数の重みのうち更新された1つ以上をプルーニングし、
前記歪み損失を最小化するように、前記第1のセットのマスク及び前記取得されたバイナリプルーニングマスクによってそれぞれマスクされていない前記第1の複数の重みのうち少なくとも1つを更新することによって更に訓練される、請求項4に記載の方法。
【請求項6】
前記第2の複数の重みに対応する第2のセットのマスクを選択するステップを更に含む、請求項1乃至5のうちいずれか1項に記載の方法。
【請求項7】
前記量子化パラメータを、各サブグループが同じニューラルネットワークモデルインスタンスを共有するサブグループにグループ化するステップを更に含む、請求項1乃至6のうちいずれか1項に記載の方法。
【請求項8】
マルチタスクニューラルネットワークを使用した多品質ループフィルタでビデオを処理するための装置であって、
プログラムコードを記憶するように構成された少なくとも1つのメモリと、
前記プログラムコードを読み取って請求項1乃至7のうちいずれか1項に記載の方法を実行するように構成された少なくとも1つのプロセッサと
を含む装置。
【請求項9】
少なくとも1つのプロセッサに対して、請求項1乃至7のうちいずれか1項に記載の方法を実行させるコンピュータプログラム。
【発明の詳細な説明】
【背景技術】
【0001】
[関連出願への相互参照]
本出願は、2021年1月14日に出願された米国仮特許出願第63/137,291号及び2021年9月27日に出願された米国特許出願第17/486,239号に基づくものであり、これらの優先権を主張する。これらの出願の全内容を参照により援用する。
【0002】
[背景技術]
H.264/AVC(H.264/Advanced Video Coding)、HEVC(High-Efficiency Video Coding)及びVVC(Versatile Video Coding)のような従来のビデオコーディング標準は、同様の(再帰的)ブロックベースのハイブリッド予測/変換フレームワークを共有し、イントラ/インター予測、整数変換及びコンテキスト適応エントロピーコーディングのような個々のコーディングツールが、全体効率を最適化するために集中的に手作りされる。隣接時空間画素は、後続の変換、量子化及びエントロピーコーディングのための対応する残差を取得するために、予測信号構築に利用される。他方、ニューラルネットワーク(NN, Neural Network)の性質は、隣接画素の受容野から時空間情報を解析することにより、異なるレベルの時空間刺激を抽出することにある。高い非線形性及び非局所的な時空間相関を探索する能力は、大幅に改善された圧縮品質についての有望な機会を提供する。
【0003】
非可逆ビデオ圧縮では、圧縮ビデオは必然的に圧縮アーチファクトを受け、これは体感品質(QoE, Quality of Experience)を厳しく劣化させる。実際に許容される歪みの量はアプリケーションに依存し、一般的に、圧縮比が高いほど歪みは大きくなる。圧縮品質を制御するための多くの方法が存在する。例えば、量子化パラメータ(QP, Quantization Parameter)は量子化ステップサイズを決定する。QP値が大きいほど、量子化ステップサイズが大きくなり、歪みが大きくなる。ユーザの異なる要求に対応するために、ビデオコーディング方法は、異なる圧縮品質でビデオを圧縮する能力を必要とする。例えば、VVCは、QP値が0と63との間で変化することを許容する。
【0004】
ディープニューラルネットワーク(DNN, Deep Neural Network)ベースの方法は、ビデオノイズ除去、超解像度、ぼけ除去、デブロッキング等のような圧縮ビデオの視覚品質をうまく向上させるために開発されている。しかし、複数のQPに対応することは、NNベースの品質向上方法にとって困難な問題となっている。従来では、各QP値は、個々のタスクとして扱われ、1つのNNモデルインスタンスは、QP値毎に訓練されて展開される。また、異なる入力チャネルが異なるQP値を使用できる。例えば、既存のVVC設計に基づいて、ルマ成分及びクロマ成分は、異なるQP値を使用することが許容されている。このような場合、組み合わせの数のモデルインスタンスが存在し得る。複数のQP値により引き起こされる記憶及び計算コストを減少させることが重要である。
【0005】
p個のQP値qp1,…qppのセットが与えられた場合、1つの解決策は、全てのp個の値を区別することなく1つのセットとして扱うことであり、したがって、異なるQP値の訓練データを組み合わせることによって全てのp個の値について1つのNNモデルインスタンスを訓練することである。改善された解決策は、QP値qpiをNNモデルの更なる入力として使用し、異なるQP値の組み合わせの訓練データで1つのNNモデルインスタンスを訓練することである。異なる入力チャネルが異なるQP値を使用する場合、異なるQPマップは、異なる入力チャネルについてこれらの対応するQP値を使用して別々に生成され、NNモデルに入力するために組み合わされることができる。QP情報を入力信号として直接使用することにより、NNモデルインスタンスがそのパラメータを組織化し、各QP設定にそれぞれ対応するデータサンプルのサブグループの分布を暗黙のうちにモデル化するように自動的に学習することが望まれる。
【0006】
本開示は、微細構造パラメータ共有(micro-structured parameter sharing)に基づいてマルチタスクニューラルネットワーク(MTNN, Multi-Task Neural Network)を使用することにより、多品質ループフィルタ(MQLF, Multi-Quality Loop Filter)メカニズムを提案する。各入力チャネルは、その個々のQP値を使用することが許容され、1つのMTNNモデルインスタンスは、入力チャネルについて複数のQP設定に対応するために使用される。QP設定毎に、そのQP設定を有する入力についてMTNNの推論計算を明示的に導くために、バイナリ微細構造マスク(MSM, Micro-Structured Mask)が使用される。
【発明の概要】
【0007】
実施形態によれば、微細構造パラメータ共有に基づく、マスクされたマルチタスクニューラルネットワークを使用した多品質ループフィルタビデオ圧縮の方法は、少なくとも1つのプロセッサによって実行され、入力における複数の量子化パラメータに基づいて複数のモデルIDを生成するステップと、第1のセットのマスクを選択するステップであって、第1のセットのマスク内の各マスクは生成されたモデルIDのうち1つに対応する、ステップと、選択された第1のセットのマスク及び第1のセットのニューラルネットワーク層の第1の複数の重みの畳み込みを実行して、第1のマスクされた重みを取得するステップと、複数の量子化パラメータに基づいて、第2のセットのニューラルネットワーク層及び第2の複数の重みを選択するステップとを含む。当該方法は、複数の量子化パラメータに基づいて量子化パラメータ値を生成するステップと、生成された量子化パラメータ値を使用して、第1のマスクされた重み及び第2の複数の重みに基づいて推論出力を計算するステップとを更に含む。
【0008】
実施形態によれば、微細構造パラメータ共有に基づく、マスクされたマルチタスクニューラルネットワークを使用した多品質ループフィルタビデオ圧縮の装置は、プログラムコードを記憶するように構成された少なくとも1つのメモリと、プログラムコードを読み取ってプログラムコードによって命令される通りに動作するように構成された少なくとも1つのプロセッサとを含む。プログラムコードは、少なくとも1つのプロセッサに対して、入力における複数の量子化パラメータに基づいて複数のモデルIDを生成させるように構成されたモデルIDコードと、少なくとも1つのプロセッサに対して、第1のセットのマスクを選択させるように構成された第1の選択コードであって、第1のセットのマスク内の各マスクは生成されたモデルIDのうち1つに対応する、第1の選択コードと、少なくとも1つのプロセッサに対して、選択された第1のセットのマスク及び第1のセットのニューラルネットワーク層の第1の複数の重みの畳み込みを実行させて、第1のマスクされた重みを取得させるように構成された実行コードと、少なくとも1つのプロセッサに対して、複数の量子化パラメータに基づいて、第2のセットのニューラルネットワーク層及び第2の複数の重みを選択させるように構成された第2の選択コードとを含む。プログラムコードは、少なくとも1つのプロセッサに対して、複数の量子化パラメータに基づいて量子化パラメータ値を生成させるように構成された生成コードと、生成された量子化パラメータ値を使用して、第1のマスクされた重み及び第2の複数の重みに基づいて推論出力を計算させるように構成された計算コードとを更に含む。
【0009】
実施形態によれば、命令を記憶した非一時的なコンピュータ読み取り可能媒体は、マルチタスクニューラルネットワークを使用した多品質ループフィルタでビデオを処理するために、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに対して、入力における複数の量子化パラメータに基づいて複数のモデルIDを生成させ、第1のセットのマスクを選択させ、第1のセットのマスク内の各マスクは生成されたモデルIDのうち1つに対応し、選択された第1のセットのマスク及び第1のセットのニューラルネットワーク層の第1の複数の重みの畳み込みを実行させて、第1のマスクされた重みを取得させ、複数の量子化パラメータに基づいて、第2のセットのニューラルネットワーク層及び第2の複数の重みを選択させる命令を記憶する。命令は、少なくとも1つのプロセッサによって実行されると、さらに、少なくとも1つのプロセッサに対して、複数の量子化パラメータに基づいて量子化パラメータ値を生成させ、生成された量子化パラメータ値を使用して、第1のマスクされた重み及び第2の複数の重みに基づいて推論出力を計算させる。
【図面の簡単な説明】
【0010】
【
図1】実施形態に従って本明細書に記載の方法、装置及びシステムが実施され得る環境の図である。
【
図2】
図1の1つ以上のデバイスの例示的なコンポーネントのブロック図である。
【
図3】実施形態による、テスト段階中の微細構造マスクを使用したビデオ圧縮のための多品質ループフィルタ(MQLF, Multi-Quality Loop Filter)方法についてのマルチタスクニューラルネットワーク(MTNN, Multi-Task Neural Network)の推論のブロック図である。
【
図4】実施形態による、訓練段階中の微細構造マスクによるマルチタスクニューラルネットワークビデオ圧縮のための訓練装置のブロック図である。
【
図5】実施形態による、訓練段階中の
図4における訓練装置からの重み充填モジュールの詳細なブロック図である。
【
図6】実施形態による、
図4における訓練装置からの微細構造プルーニングモジュールの詳細なブロック図である。
【
図7】実施形態による、共有マルチタスク層、タスク固有層及び微細構造マスクを有するMTNNを使用したMQLFによるビデオ圧縮のための方法のフローチャートである。
【
図8】実施形態による、共有マルチタスク層、タスク固有層及び微細構造マスクを有するMTNNを使用したMQLFによるビデオ圧縮のための装置のブロック図である。
【発明を実施するための形態】
【0011】
本開示は、ノイズ、ぼけ及びブロック効果のような1つ以上のタイプのアーチファクトを低減するために、復号ビデオを処理するための多品質ループフィルタ(MQLF, Multi-Quality Loop Filter)メカニズムを使用する方法及び装置を記載する。微細構造パラメータ共有に基づくマルチタスクニューラルネットワーク(MTNN, Multi-Task Neural Network)が提案され、QP値についてのMTNNの推論計算を明示的に導くように各QP値に割り当てられた1つの微細構造マスク(MSM, Micro-Structured Mask)によって、複数の量子化パラメータ(QP, Quantization Parameter)値に対応するために1つのMTNNモデルインスタンスが使用される。
【0012】
図1は、実施形態に従って本明細書に記載の方法、装置及びシステムが実施され得る環境100の図である。
【0013】
図1に示すように、環境100は、ユーザデバイス110、プラットフォーム120及びネットワーク130を含んでもよい。環境100のデバイスは、有線接続、無線接続、又は有線及び無線接続の組み合わせを介して相互接続されてもよい。
【0014】
ユーザデバイス110は、プラットフォーム120に関連する情報を受信、生成、記憶、処理及び/又は提供できる1つ以上のデバイスを含む。例えば、ユーザデバイス110は、コンピューティングデバイス(例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、ハンドヘルドコンピュータ、スマートスピーカ、サーバ等)、携帯電話(例えば、スマートフォン、無線電話等)、ウェアラブルデバイス(例えば、スマート眼鏡又はスマートウオッチ)又は同様のデバイスを含んでもよい。いくつかの実装では、ユーザデバイス110は、プラットフォーム120から情報を受信してもよく、及び/又は情報をプラットフォーム120に送信してもよい。
【0015】
プラットフォーム120は、本明細書のどこかに記載のような1つ以上のデバイスを含む。いくつかの実装では、プラットフォーム120は、クラウドサーバ又はクラウドサーバのグループを含んでもよい。いくつかの実装では、プラットフォーム120は、ソフトウェアコンポーネントが交換され得るようにモジュール化されるように設計されてもよい。したがって、プラットフォーム120は、異なる用途のために容易に及び/又は迅速に再構成されてもよい。
【0016】
いくつかの実装では、図示のように、プラットフォーム120は、クラウドコンピューティング環境122においてホストされてもよい。特に、本明細書に記載の実装は、プラットフォーム120をクラウドコンピューティング環境122でホストされるものとして記載するが、いくつかの実装では、プラットフォーム120は、クラウドベースでなくてもよく(すなわち、クラウドコンピューティング環境の外部で実装されてもよい)、或いは、部分的にクラウドベースでもよい。
【0017】
クラウドコンピューティング環境122は、プラットフォーム120をホストする環境を含む。クラウドコンピューティング環境122は、プラットフォーム120をホストするシステム及び/又はデバイスの物理的な位置及び構成に関するエンドユーザ(例えば、ユーザデバイス110)の知識を必要としない計算、ソフトウェア、データアクセス、ストレージ等のサービスを提供してもよい。図示のように、クラウドコンピューティング環境122は、コンピューティングリソース124のグループ(併せて「コンピューティングリソース124」と呼ばれ、個々に「コンピューティングリソース124」と呼ばれる)を含んでもよい。
【0018】
コンピューティングリソース124は、1つ以上のパーソナルコンピュータ、ワークステーションコンピュータ、サーバデバイス又は他のタイプの計算及び/又は通信デバイスを含む。いくつかの実装では、コンピューティングリソース124はプラットフォーム120をホストしてもよい。クラウドリソースは、コンピューティングリソース124で実行する計算インスタンス、コンピューティングリソース124で提供される記憶デバイス、コンピューティングリソース124によって提供されるデータ転送デバイス等を含んでもよい。いくつかの実装では、コンピューティングリソース124は、有線接続、無線接続、又は有線及び無線接続の組み合わせを介して、他のコンピューティングリソース124と通信してもよい。
【0019】
図1に更に示すように、コンピューティングリソース124は、1つ以上のアプリケーション(「APP」)124-1、1つ以上の仮想マシン(「VM」)124-2、仮想化ストレージ(「VS」)124-3、1つ以上のハイパーバイザ(「HYP」)124-4等のようなクラウドリソースのグループを含む。
【0020】
アプリケーション124-1は、ユーザデバイス110及び/又はプラットフォーム120によって提供又はアクセスされ得る1つ以上のソフトウェアアプリケーションを含む。アプリケーション124-1は、ユーザデバイス110上にソフトウェアアプリケーションをインストールして実行する必要性を除去してもよい。例えば、アプリケーション124-1は、プラットフォーム120に関連するソフトウェア、及び/又はクラウドコンピューティング環境122を介して提供可能な他のいずれかのソフトウェアを含んでもよい。いくつかの実装では、1つのアプリケーション124-1は、仮想マシン124-2を介して、情報を1つ以上の他のアプリケーション124-1に送信してもよく/1つ以上の他のアプリケーション124-1から情報を受信してもよい。
【0021】
仮想マシン124-2は、物理マシンのようなプログラムを実行するマシン(例えば、コンピュータ)のソフトウェア実装を含む。仮想マシン124-2は、仮想マシン124-2によるいずれかの実マシンへの使用及び対応の程度に依存して、システム仮想マシン又はプロセス仮想マシンでもよい。システム仮想マシンは、完全なオペレーティングシステム(「OS」)の実行をサポートする完全なシステムプラットフォームを提供してもよい。プロセス仮想マシンは、単一のプログラムを実行し、単一のプロセスをサポートしてもよい。いくつかの実装では、仮想マシン124-2は、ユーザ(例えば、ユーザデバイス110)の代わりに実行してもよく、データ管理、同期又は長時データ転送のようなクラウドコンピューティング環境122のインフラストラクチャを管理してもよい。
【0022】
仮想化ストレージ124-3は、コンピューティングリソース124の記憶システム又はデバイス内で仮想化技術を使用する1つ以上の記憶システム及び/又は1つ以上のデバイスを含む。いくつかの実装では、記憶システムのコンテキスト内で、仮想化のタイプは、ブロック仮想化及びファイル仮想化を含んでもよい。ブロック仮想化は、物理ストレージ又は異種構造に関係なく記憶システムがアクセスされ得るように、物理ストレージからの論理ストレージの抽象化(又は分離)を示してもよい。分離は、記憶システムの管理者が、エンドユーザのためのストレージを管理する方法に柔軟性を許容してもよい。ファイル仮想化は、ファイルレベルでアクセスされるデータと、ファイルが物理的に記憶される位置との間の依存関係を除去してもよい。これは、ストレージの使用の最適化、サーバの統合、及び/又は継続的なファイル移行の実行を可能にし得る。
【0023】
ハイパーバイザ124-4は、複数のオペレーティングシステム(例えば、「ゲストオペレーティングシステム」)がコンピューティングリソース124のようなホストコンピュータ上で同時に実行することを可能にするハードウェア仮想化技術を提供してもよい。ハイパーバイザ124-4は、仮想オペレーティングプラットフォームをゲストオペレーティングシステムに提示してもよく、ゲストオペレーティングシステムの実行を管理してもよい。様々なオペレーティングシステムの複数のインスタンスは、仮想化ハードウェアリソースを共有してもよい。
【0024】
ネットワーク130は、1つ以上の有線及び/又は無線ネットワークを含む。例えば、ネットワーク130は、セルラネットワーク(例えば、第5世代(5G, fifth generation)ネットワーク、ロングタームエボリューション(LTE, long-term evolution)ネットワーク、第3世代(3G, third generation)ネットワーク、符号分割多元接続(CDMA, code division multiple access)ネットワーク等)、公衆陸上移動網(PLMN, public land mobile network)、ローカルエリアネットワーク(LAN, local area network)、広域ネットワーク(WAN, wide area network)、メトロポリタンエリアネットワーク(MAN, metropolitan area network)、電話網(例えば、公衆交換電話網(PSTN, Public Switched Telephone Network))、プライベートネットワーク、アドホックネットワーク、イントラネット、インターネット、光ファイバベースのネットワーク等、及び/又はこれら又は他のタイプのネットワークの組み合わせを含んでもよい。
【0025】
図1に示すデバイス及びネットワークの数及び配置は、一例として提供されている。実際には、
図1に示すものよりも多くのデバイス及び/又はネットワーク、少ないデバイス及び/又はネットワーク、異なるデバイス及び/又はネットワーク、又は異なる配置のデバイス及び/又はネットワークが存在してもよい。さらに、
図1に示す2つ以上のデバイスは、単一のデバイス内に実装されてもよく、或いは、
図1に示す単一のデバイスは、複数の分散デバイスとして実装されてもよい。さらに或いは代替として、環境100の或るセットのデバイス(例えば、1つ以上のデバイス)は、環境100の他のセットのデバイスによって実行されるものとして記載される1つ以上の機能を実行してもよい。
【0026】
図2は、
図1の1つ以上のデバイスの例示的なコンポーネントのブロック図である。
【0027】
デバイス200は、ユーザデバイス110及び/又はプラットフォーム120に対応してもよい。
図2に示すように、デバイス200は、バス210、プロセッサ220、メモリ230、記憶コンポーネント240、入力コンポーネント250、出力コンポーネント260及び通信インタフェース270を含んでもよい。
【0028】
バス210は、デバイス200のコンポーネントの間の通信を可能にするコンポーネントを含む。プロセッサ220は、ハードウェア、ファームウェア、又はハードウェア及びソフトウェアの組み合わせで実装される。プロセッサ220は、中央処理装置(CPU, central processing unit)、グラフィックス処理装置(GPU, graphics processing unit)、加速処理装置(APU, accelerated processing unit)、マイクロプロセッサ、マイクロコントローラ、デジタルシグナルプロセッサ(DSP, digital signal processor)、フィールドプログラマブルゲートアレイ(FPGA, field-programmable gate array)、特定用途向け集積回路(ASIC, application-specific integrated circuit)、又は他のタイプの処理コンポーネントである。いくつかの実装では、プロセッサ220は、機能を実行するようにプログラム可能な1つ以上のプロセッサを含む。メモリ230は、ランダムアクセスメモリ(RAM, random access memory)、読み取り専用メモリ(ROM, read only memory)及び/又は、プロセッサ220により使用される情報及び/又は命令を記憶する他のタイプのダイナミック又はスタティック記憶デバイス(例えば、フラッシュメモリ、磁気メモリ及び/又は、光メモリ)を含む。
【0029】
記憶コンポーネント240は、デバイス200の操作及び使用に関連する情報及び/又はソフトウェアを記憶する。例えば、記憶コンポーネント240は、ハードディスク(例えば、磁気ディスク、光ディスク、光磁気ディスク及び/又はソリッドステートディスク)、コンパクトディスク(CD, compact disc)、デジタル多用途ディスク(DVD, digital versatile disc)、フロッピーディスク、カートリッジ、磁気テープ及び/又は他のタイプの非一時的なコンピュータ読み取り可能媒体を、対応するドライブと共に含んでもよい。
【0030】
入力コンポーネント250は、デバイス200がユーザ入力(例えば、タッチスクリーンディスプレイ、キーボード、キーパッド、マウス、ボタン、スイッチ及び/又はマイクロホン)等を介して情報を受信することを可能にするコンポーネントを含む。さらに或いは代替として、入力コンポーネント250は、情報を感知するためのセンサ(例えば、全地球測位システム(GPS, global positioning system)コンポーネント、加速度計、ジャイロスコープ及び/又はアクチュエータ)を含んでもよい。出力コンポーネント260は、デバイス200からの出力情報を提供するコンポーネント(例えば、ディスプレイ、スピーカ及び/又は1つ以上の発光ダイオード(LED, light-emitting diode))を含む。
【0031】
通信インタフェース270は、デバイス200が有線接続、無線接続、又は有線及び無線接続の組み合わせ等を介して他のデバイスと通信することを可能にするトランシーバのようなコンポーネント(例えば、トランシーバ及び/又は別個の受信機及び送信機)を含む。通信インタフェース270は、デバイス200が他のデバイスから情報を受信し、及び/又は情報を他のデバイスに提供することを可能にしてもよい。例えば、通信インタフェース270は、イーサネットインタフェース、光インタフェース、同軸インタフェース、赤外線インタフェース、無線周波数(RF, radio frequency)インタフェース、ユニバーサルシリアルバス(USB, universal serial bus)インタフェース、Wi-Fiインタフェース、セルラネットワークインタフェース等を含んでもよい。
【0032】
デバイス200は、本明細書に記載の1つ以上のプロセスを実行してもよい。デバイス200は、メモリ230及び/又は記憶コンポーネント240のような非一時的なコンピュータ読み取り可能媒体によって記憶されたソフトウェア命令をプロセッサ220が実行することに応じて、これらのプロセスを実行してもよい。コンピュータ読み取り可能媒体は、本明細書では非一時的なメモリデバイスとして定義される。メモリデバイスは、単一の物理的な記憶デバイス内のメモリ空間、又は複数の物理的な記憶デバイスに分散されたメモリ空間を含む。
【0033】
ソフトウェア命令は、他のコンピュータ読み取り可能媒体から、或いは、通信インタフェース270を介して他のデバイスから、メモリ230及び/又は記憶コンポーネント240に読み込まれてもよい。実行されると、メモリ230及び/又は記憶コンポーネント240に記憶されたソフトウェア命令は、プロセッサ220に本明細書に記載の1つ以上のプロセスを実行させてもよい。さらに或いは代替として、本明細書に記載の1つ以上のプロセスを実行するために、ソフトウェア命令の代わりに或いはソフトウェア命令と組み合わせて配線回路が使用されてもよい。したがって、本明細書に記載の実装は、ハードウェア回路及びソフトウェアのいずれか特定の組み合わせに限定されない。
【0034】
図2に示すコンポーネントの数及び配置は、一例として提供されている。実際には、デバイス200は、
図2に示すものよりも多くのコンポーネント、少ないコンポーネント、異なるコンポーネント、又は異なる配置のコンポーネントを含んでもよい。さらに或いは代替として、デバイス200の或るセットのコンポーネント(例えば、1つ以上のコンポーネント)は、デバイス200の他のセットのコンポーネントによって実行されるものとして記載される1つ以上の機能を実行してもよい。
【0035】
次に、微細構造パラメータ共有に基づく、マスクされたマルチタスクニューラルネットワークを使用した多品質ループフィルタビデオ圧縮のための方法及び装置について、詳細に説明する。
【0036】
典型的なビデオ圧縮フレームワークは、以下のように記述できる。入力ビデオxが複数の画像入力x1,…,xTで構成されると仮定し、各入力xiは、CTUのような画像フレーム内の全体フレーム又はマイクロブロックでもよい。第1の動き推定ステップにおいて、入力は空間ブロックに更に分割でき、各ブロックは反復的により小さいブロックに分割され、各ブロックについて現在の入力xtと前の再構成入力のセット
【0037】
【数1】
との間の動きベクトルのセットm
tが計算される。下付き文字tは、現在の第tの符号化サイクルを示しており、これは画像入力のタイムスタンプと一致しなくてもよい点に留意する。また、前の再構成入力
【0038】
【数2】
s
は、複数の前の符号化サイクルからの再構成入力を含む。言い換えると、前の再構成入力
【0039】
【数3】
における入力の間の時間差は、任意に変化可能である。次いで、第2の動き補償ステップにおいて、動きベクトルm
tに基づいて、前の再構成入力
【0040】
【数4】
の対応する画素と、元の入力x
tと予測入力
【0041】
【数5】
との間の残差r
tとをコピーすることによって、予測入力
【0042】
【数6】
が取得される。第3のステップにおいて、(典型的には、r
tのDCT係数がより良い量子化性能を達成するように量子化されるDCTのような変換の後に)残差r
tが量子化される。量子化ステップは、量子化画像
【0043】
【数7】
を生じる。動きベクトルm
t及び量子化された
【0044】
【数8】
の双方はエントロピーコーディングによりビットストリームに符号化され、デコーダに送信される。次いで、デコーダ側において、量子化された
【0045】
【0046】
【数10】
を取得するために、(典型的には、逆量子化された係数でのIDCTのような逆変換を通じて)逆量子化される。次いで、復元残差
【0047】
【0048】
【0049】
【0050】
再構成入力
【0051】
【数14】
の視覚品質を改善するために、更なるコンポーネントが更に使用される。デブロッキングフィルタ(DF, Deblocking filter)、サンプル適応オフセット(SAO, Sample-Adaptive Offset)、適応ループフィルタ(ALF, Adaptive Loop Filter)、クロスコンポーネント適応ループフィルタ(CCALF, Cross-Component Adaptive Loop Filter)等を含む、以下の拡張モジュールのうち1つ又は複数が、再構成入力
【0052】
【数15】
を処理するために選択されてもよい。選択されたモジュールの処理順序はこれに限定されず、変更可能である。
【0053】
本開示は、ビデオコーディングシステムの再構成入力
【0054】
【数16】
の視覚品質を向上させるためのMQLFを提案する。目標は、再構成入力
【0055】
【数17】
におけるノイズ、ぼけ、ブロック効果のようなアーチファクトを低減し、高画質画像
【0056】
【数18】
を生じることである。具体的には、MTNNが高品質画像
【0057】
【数19】
を計算するために使用され、1つのモデルインスタンスが複数のQP設定に対応できる。バイナリMSMは、そのQP設定のためのMTNNの推論計算を導くために、QP設定毎に使用される。
【0058】
提案されるMQLFは、再構成入力
【0059】
【数20】
の視覚品質を改善するために、上記の更なるコンポーネント(すなわち、DF、SAO、ALF、CCALF等)のうち1つ又は複数と組み合わせて使用できる。例えば、再構成入力
【0060】
【数21】
は、最初にDFを通過し、続いてMQLFを通過し、さらにSAO及びALFを通過することができる。これらのコンポーネントがどのように使用されるかの順序は、任意に変更可能である。一実施形態では、提案される方法はまた、再構成入力
【0061】
【数22】
の視覚品質を向上させるために、他の全てのコンポーネントの置き換えとして単独でも使用できる。
【0062】
MQLFは、フレーム、タイル、スライスCTU及び/又はCUレベルで、上記の更なるコンポーネント(例えば、DF、SAO、ALF、CCALF等)のうち1つ又は複数と組み合わせて動作できる。言い換えると、再構成入力
【0063】
【数23】
は、MQLFに入力されるとき、1つの全体のフレームとすることができる。再構成入力
【0064】
【数24】
はまた、MQLFに入力されるとき、ブロック、例えばタイル、スライス、CTU又はCUとすることができる。再構成入力
【0065】
【数25】
を計算する特定のビデオ圧縮方法(例えば、HEVC、VVC)に限定は存在しない。
【0066】
図3は、実施形態による、テスト段階中の微細構造マスクを使用したビデオ圧縮のための多品質ループフィルタ(MQLF, Multi-Quality Loop Filter)装置300のマルチタスクニューラルネットワーク(MTNN, Multi-Task Neural Network)の推論のブロック図である。
【0067】
図3に示すように、テスト装置300は、生成モデルIDモジュール310、MTNN推論モジュール320及び入力変換モジュール330を含む。
【0068】
サイズ(h,w,c)の入力
【0069】
【数26】
が与えられ、h、w、cがそれぞれチャネルの高さ、幅及び数であり、第kのチャネルの信号が
【0070】
【数27】
によって表される場合、MQLFの推論ワークフローのテスト段階は以下のように記述できる。
【0071】
MQLFは、共有マルチタスク層(SMTL, Shared Multi-Task Layer)及びタスク固有層(TSL, Task-Specific Layer)の2つの部分に分割されるMTNNを使用する。SMTLのモデルパラメータは、異なるQP設定の間で共有される(すなわち、同じである)。TSLのモデルパラメータは、QP設定毎に個別に設定される。第kのチャネルのQP値は
【0072】
【数28】
)
によって表される。或る順序(例えば、低い方から高い方への入力
【0073】
【数29】
の再構成品質に対応する順序)でランク付けされたQP設定のN個の可能な組み合わせが存在すると仮定する。各QP設定は、モデルID id(1≦id≦N)によってインデックス付けされた個々のタスクに対応する。従来の方法では、1つの個々のニューラルネットワークベースのループフィルタ(NNLF, Neural Network-based Loop Filter)モデルインスタンスが使用される。{W
j
SMTL}はSMTLの重みパラメータのセットを表し、それぞれのW
j
SMTLは第jの層の重みパラメータである。{M
j
SMTL(id)}はモデルID idのQP設定に対応するバイナリマスクのセットを表し、各バイナリマスクM
j
SMTL(id)は、第jの層の重みパラメータW
j
SMTLと同じ形状を有する。バイナリマスクM
j
SMTL(id)の各エントリは1又は0であり、重みパラメータW
j
SMTLの対応する重みエントリが、モデルID idのQP設定について推論計算に関与するか否かを示す。{W
j
TSL(id)}はモデルID idのQP設定に対応するTSLの重みパラメータのセットを表し、W
j
TSL(id)は第jの層の重みパラメータである。本開示は、層のタイプ(例えば、畳み込み、正規化、完全接続等)と、SMTL及びTSLにおける層の位置とに如何なる限定も設けない。例えば、STML及びTSLの層は、MTNNを形成するようにインターレースされてもよい。また、MTNNを形成するように、全体のSTMLがTSLの前又は後に配置できる。いくつかの実施形態では、N個のQP設定の総数はサブグループにグループ化でき、QP設定の各サブグループは同じMTNNモデルインスタンスを共有する。
【0074】
重みパラメータWj
SMTL又はWj
TSL(id)のそれぞれは、サイズ(c1,k1,k2,k3,c2)の一般的な5次元(5D, 5-Dmension)テンソルである。対応する層の入力はサイズ(h1,w1,d1,c1)の4次元(4D, 4-Dimension)テンソルAであり、出力はサイズ(h2,w2,d2,c2)の4DテンソルBである。サイズc1、k1、k2、k3、c2、h1、w1、d1、h2、w2、d2は1以上の整数である。サイズc1、k1、k2、k3、c2、h1、w1、d1、h2、w2、d2のいずれかが1に等しい場合、対応するテンソルはより小さい次元に低減する。各テンソル内の各項目は浮動小数点である。パラメータh1、w1及びd1は入力Aの高さ、重み及び深さである。同様に、パラメータh2、w2及びd2は出力Bの高さ、重み及び深さである。パラメータc1は入力Aの入力チャネル数である。同様に、パラメータc2は出力Bの出力チャネル数である。パラメータk1、k2及びk3はそれぞれ高さ、重み及び深さ軸に対応する畳み込みカーネルのサイズである。出力Bは、入力A、重みパラメータWj
SMTL又はWj
TSL(id)、及び利用可能な場合にはマスクMj
SMTL(id)に基づいて、畳み込み演算
【0075】
【数30】
を通じて計算される。重みパラメータW
j
TSL(id)について、マスクM
j
TSL(id)もこれに関連付けられてもよく、マスクM
j
TSL(id)の全てのエントリが1に設定される点に留意する。この観点から、個々のタスクとしてモデルID idによって個々のQP設定毎に個々のモデルインスタンスを訓練する従来の方法は、SMTLが層又はマスクを有さず、TSLがNNの全ての層を有する、本開示において提案される方法の特殊な場合として見ることができる。他方、QPマップを入力として使用する以前の方法は、全てのQP設定について1つのモデルインスタンスを訓練する。これもまた、本開示において提案される方法の特殊な場合として見ることができ、TSLが層を持たず、SMTLがNNの全ての層を含み、全てのQP設定についてのマスクM
j
SMTL(id)のエントリが1に設定される、本開示において提案される方法の特殊な場合として見ることができる。
【0076】
出力Bは、入力Aとマスクされた重みを畳み込むことによって取得されてもよい。
【0077】
【数31】
ここで、・は要素毎の乗算であり、N個のQP設定はMTNNモデルインスタンスを共有する。
【0078】
図3を参照すると、上記の学習された重みパラメータ{W
j
SMTL}、{W
j
TSL(id)}(id=1,…,N)及びマスク{M
j
SMTL(id)}(id=1,…,N)が、入力
【0079】
【数32】
及び異なるチャネルについての関連する目標QP値
【0080】
【数33】
と共に与えられると、生成モデルIDモジュール310は、現在のQP設定に基づいて、モデルID id(1≦id≦N)を生成する。次いで、対応するマスク{M
j
SMTL(id)}が、式(1)に基づいてSMTLのマスクされた重みパラメータ{W
j
SMTL’}を生成するように選択され、モデルID idについてのQP設定のためのTSLの対応するサブネットワークが重みパラメータW
j
TSL(id)によって選択される。次いで、SMTL推論のためのマスクされた重みパラメータ{W
j
SMTL’}を使用して、また、TSL推論のための重みパラメータW
j
TSL(id)を使用して、MTNN推論モジュール320は、推論出力
【0081】
【数34】
を計算し、これは向上した高品質の結果である。MTNN推論モジュール320の入力は、入力
【0082】
【数35】
及び入力変換モジュール330によって生成される更なるQP入力
【0083】
【0084】
【0085】
【数38】
に基づく。例えば、QPマップは、そのQP値に基づいてチャネル毎に生成されてもよく、異なるチャネルの全てのQPマップは、入力
【0086】
【数39】
のそれぞれ対応するチャネルと連結できる。連結された入力は、MTNNの入力として使用できる。いくつかの実施形態では、QP入力は省略でき、したがって、全体の入力変換モジュール330も省略できる。このような場合、入力
【0087】
【数40】
のみがMTNNの入力として使用される。MTNNの入力として、どのようにQP値が変換され、入力
【0088】
【数41】
と組み合わされるかに関して限定は課されない。
【0089】
各重みパラメータWj
SMTLの形状は、同じ出力を取得するために再成形されたWj
SMTLとの再成形入力の畳み込みに対応して、変更できる。同様に、各マスクMj
SMTL(id)の形状も変更できる。各重みパラメータの形状は、2つの構成を取ってもよい。まず、5D重みテンソルがサイズ(c1’,c2’,k)の3Dテンソルに再成形され、c1’×c2’×k=c1×c2×k1×k2×k3である。例えば、構成はc1’=c1、c2’=c2、k=k1×k2×k3である。次に、5D重みテンソルがサイズ(c1’,c2’)の2D行列に再成形され、c1’×c2’=c1×c2×k1×k2×k3である。例えば、いくつかの構成は、c1’=c1、c2’=c2×k1×k2×k3又はc2’=c2、c1’=c1×k1×k2×k3を含む。
【0090】
他の再成形された1D、2D、3D、4D又は5D形状も全て、ここでサポートされる。本実施形態では、2D及び3D構成が、以下の説明において例示目的で使用される。
【0091】
本実施形態では、ブロック毎の微細構造が、3D再成形された重みテンソル又は2D再成形された重み行列における各層のマスク(すなわち、マスクされた重みパラメータ)に使用される。具体的には、再成形された3D重みテンソルの場合、ブロックはサイズ(g1’,g2’,gk)のブロックに分割される。再成形された2D重み行列の場合、ブロックはサイズ(g1’,g2’)のブロックに分割される。g1’、g2’、gkのいずれかがサイズ1となる場合、対応するブロックはより小さい次元に低減される。マスクのブロック内の全ての項目は、同じバイナリ値1又は0を有する。すなわち、重みパラメータは、ブロック毎の微細構造の形式でマスクされる。
【0092】
次に、実施形態におけるNNモデルの訓練プロセスについて説明する。提案される多段階訓練フレームワークの全体的なワークフローが
図4に示されている。本実施形態の訓練段階の目標は、重みパラメータ{W
j
SMTL}及び{W
j
TSL(id)}と、微細構造マスクのセット{M
j
SMTL(id)}(id=1,…,N)でMTNNモデルインスタンスを学習することであり、各マスク{M
j
SMTL(id)}及び重みパラメータ{W
j
TSL(id)}は、モデルID idの各QP設定を目標とする。この目標を達成するために、漸進的な多段階訓練フレームワークが使用されてもよい。
【0093】
図4は、実施形態による、訓練段階中の微細構造マスクによるマルチタスクニューラルネットワークビデオ圧縮のための訓練装置400のブロック図である。
【0094】
図4に示すように、訓練装置400は、重み充填モジュール410及び微細構造プルーニングモジュール420を含む。
【0095】
現在のモデルインスタンスが重み{Wj
SMTL(idi-1)}及び対応するマスク{Mj
SMTL(idi-1)}を有しており、現在のタスクがモデルID idiについてのQP設定を目標とするマスクを訓練することを仮定する。ここで、idi-1はQP設定の最後に学習されたモデルIDであり、iは学習サイクルのインデックスである。また、モデルID idiの現在のQP設定について、重みパラメータ{Wj
TSL(idi)}で対応するTSLを学習させる。言い換えると、目標は、マスク{Mj
SMTL(idi)}と、更新された重みパラメータ{Wj
SMTL(idi)}及び新たな重みパラメータ{Wj
TSL(idi)}とを取得することである。
【0096】
まず、重み充填モジュール410は、マスク{Mj
SMTL(idi-1)}によってマスクされる重みパラメータ{Wj
SMTL(idi-1)}を修正又は設定する。例えば、Mj
SMTL(idi-1)内の対応するマスクエントリが1である重みパラメータである。次いで、SMTLの{Wj
SMTL(idi-1)}における残りの未修正の重み及びTSLの重み{Wj
TSL(idi)}を充填するために学習プロセスが実行される。これは、更新された重みパラメータ{Wj
SMTL’(idi)}及び{Wj
TSL(idi)}のセットを生じる。
【0097】
次いで、微細構造プルーニングモジュール420は、更新された重みパラメータ{Wj
SMTL’(idi)}、{Mj
SMTL(idi-1)}及び{Wj
TSL(idi)}のセットに基づいて微細構造プルーニングを行い、プルーニングされたモデルインスタンス及びマスク{Wj
SMTL(idi)}、{Mj
SMTL(idi)}、{Wj
TSL(idi)}を取得する。
【0098】
図5は、実施形態による、
図4の重み充填モジュール410のワークフローである。
【0099】
図5に示すように、重み充填モジュール410は、MTNN推論モジュール320、重み修正及び充填モジュール510、損失計算モジュール520、追加損失計算モジュール530、並びに逆伝搬及び重み更新モジュール540を含む。
【0100】
現在の重み{Wj
SMTL(idi-1)}及び対応するマスク{Mj
SMTL(idi-1)}が与えられると、{Mj
SMTL(idi-1)}によってマスクされた{Wj
SMTL(idi-1)}内の重みパラメータは、重み修正及び充填モジュール510において修正される。次いで、{Wj
SMTL(idi-1)}内の残りの重みパラメータが再初期化される。例えば、これは、いくつかのランダムな初期値に設定することによって、或いは、重み{Wj
SMTL’(id0)}を有する最初の全モデルのような、前に学習された全モデルの対応する重みを使用することによって行われてもよい。これはSMTLの重みパラメータ{Wj
SMTL’(idi)}を与える。TSLの重みパラメータ{Wj
TSL(idi)}も(例えば、いくつかのランダムな初期値に設定すること、又はモデルID idiを有する現在のQP設定について訓練された個々の全モデルのような、いくつかの以前に学習された全モデルの対応する重みを使用することによって)初期化される。その後、訓練入力
【0101】
【数42】
はMTNNを通過し、STML推論についての重みパラメータ{W
j
SMTL’}及びTSL推論についての重みパラメータ{W
j
TSL(id
i)}を使用してMTNN推論モジュール320内の出力
【0102】
【0103】
訓練目的のために、各訓練入力
【0104】
【数44】
は、モデルID id
iのQP設定について対応するグラウンドトゥルースx
t
h(id
i)を有する。例えば、訓練入力
【0105】
【数45】
は、モデルID id
iのQP設定を使用してビデオ圧縮方法によって生成されるグラウンドトゥルースx
t
h(id
i)の圧縮バージョンから再構成される。訓練の一般的な目標は、グラウンドトゥルースx
t
h(id
i)と推定出力
【0106】
【数46】
との間の歪みを最小化することである。グラウンドトゥルースx
t
h(id
i)と推定出力
【0107】
【数47】
との間のMSE又はSSIMのような、損失計算モジュール520におけるこの歪みを測定するために、歪み損失
【0108】
【数48】
が計算できる。いくつかの実施形態では、追加損失計算モジュール530において、訓練プロセスを正規化するのを助けるために、他の損失も計算できる。例えば、知覚損失が使用でき、そこでは、VGGのような特徴抽出NNへの入力としてグラウンドトゥルースx
t
h(id
i)又は推定出力
【0109】
【数49】
のいずれかを渡すことによって、特徴マップが計算でき、グラウンドトゥルースx
t
h(id
i)によって計算された特徴マップと推定出力
【0110】
【数50】
との差が測定され、重み付けされ、歪み損失
【0111】
【数51】
と組み合される。また、敵対的損失(adversarial loss)が使用でき、そこでは、判別器が、グラウンドトゥルースx
t
h(id
i)又は推定出力
【0112】
【数52】
が元の入力であるかMTNNによる生成された入力であるかを分類することを試みることができる。分類損失は、敵対的損失として使用され、重み付けされ、歪み損失
【0113】
【数53】
L()と組み合わされることができる。逆伝搬及び重み更新モジュール540は、この組み合わされた損失(又は、他の損失が使用されない場合は
【0114】
【数54】
)の勾配を計算し、SMTLの未修正の重みパラメータ{W
j
SMTL’(id
i)}及びTSLの重みパラメータ{W
j
TSL(id
i)}を更新する。この逆伝搬及び重み更新モジュール540において、例えば、最大反復回数に達するまで或いは損失が収束するまで、複数の反復が行われてもよい。
【0115】
図6は、実施形態による、
図4の微細構造プルーニングモジュール420の詳細なワークフローである。
【0116】
図6に示すように、微細構造プルーニングモジュール420は、MTNN推論モジュール320、プルーニングマスク計算モジュール610、損失計算モジュール520、追加損失計算モジュール530、並びに逆伝搬及び重み更新モジュール540を含む。
【0117】
まず、SMTLの更新された重み{Wj
SMTL’(idi)}及び重み充填モジュール410からのTSLの重み{Wj
TSL(idi)}並びに現在のマスク{Mj
SMTL(idi)}が与えられると、プルーニングマスク計算モジュール610は、プルーニングマスク{Pj
SMTL(idi)}を計算する。詳細には、{Mj
SMTL(idi)}によってマスクされる更新された重みパラメータ{Wj
SMTL’(idi)}及び{Wj
SMTL’(idi)}における残りの未修正の重みパラメータが修正され、プルーニング損失Lp(b)(例えば、ブロック内の重みのL1又はL2ノルム)が、上記のように、微細構造ブロックb毎に計算される。プルーニングマスク計算モジュール610は、微細構造ブロックをこれらのプルーニング損失Lp(b)に基づいて昇順にランク付けし、ブロックは、停止基準に到達するまで、ランク付けされたリストからトップダウンに(例えば、プルーニングされるブロック内の対応する重みを0として設定することによって)プルーニングされる。例えば、バリデーションデータセットSvalが与えられると、重みパラメータ{Wj
SMTL’)(idi)}及び{Wj
TSL(idi)}によってMTNNモデルは、以下のように歪み損失Lvalを生成する。
【0118】
【数55】
より多くのマイクロブロックがプルーニングされるにつれて、この歪み損失L
valは次第に増加する。停止基準は、歪み損失L
valを増加させる許容可能なパーセンテージ閾値とすることができる。停止基準はまた、プルーニングされる微細構造ブロックの単純なパーセンテージ(例えば、50%)とすることもできる。バイナリプルーニングマスクのセット{P
j
SMTL(id
i)}が生成でき、マスク内のエントリP
j
SMTL(id
i)が1であることは、W
j
SMTL’(id
i)内の対応する重みパラメータがプルーニングされることを意味する。次いで、逆伝搬及び重み更新モジュール540において、定期的な逆伝搬によって、プルーニングされるものとしてマスク{P
j
SMTL(id
i)}によってマスクされるW
j
SMTL’(id
i)内の更なる未修正の重みが修正され、{P
j
SMTL(id
i)}又は{M
j
SMTL(id
i)}のいずれによってもマスクされないW
j
SMTL’(id
i)内の残りの重みが更新され、重み{W
j
TSL(id
i)}が更新され、訓練データに対する組み合わせの損失(又は他の損失が使用されない場合には歪み損失
【0119】
【数56】
)を最適化する。例えば、最大反復回数に達するまで或いは損失が収束するまで、複数回の反復が行われてもよい。
【0120】
対応するマスク{Mj
SMTL(idi)}は以下のように計算できる。
【0121】
【数57】
すなわち、M
j
SMTL(id
i)内のマスクされていない、P
j
SMTL(id
i)内のプルーニングされないエントリは、M
j
SMTL(id
i)においてマスクされるものとして更に1に設定される。また、上記の微細構造重みプルーニングプロセスは、更新された重み{W
j
SMTL(id
i)}及び{W
j
TSL(id
i)}を出力する。上記の微細構造プルーニングプロセスはまた、モデルサイズ及び推論計算を更に低減するために、任意選択で重み{W
j
TSL(id
i)}に適用できる点に留意する。すなわち、プルーニングマスク計算モジュール610はまた、TSLの重みを微細構造に再形成して分割し、これらの微細構造のプルーニング損失を計算し、小さいプルーニング損失を有する最上位の微細構造をプルーニングすることができる。また、MTNN再構成品質と記憶及び計算とのバランスをとるために、任意選択でこのようにすることを選択できる。
【0122】
最後に、最後に更新された重みパラメータ{Wj
SMTL(idN)}が、MQLFの学習されたMTNNモデルインスタンスのSMTLの最終出力重み{Wj
SMTL}である。
【0123】
図7は、実施形態による、共有マルチタスク層、タスク固有層及び微細構造マスクを有するMTNNを使用したMQLFによるビデオ圧縮のための方法700のフローチャートである。
【0124】
いくつかの実装では、
図7の1つ以上のプロセスブロックは、プラットフォーム120によって実行されてもよい。いくつかの実装では、
図7の1つ以上のプロセスブロックは、ユーザデバイス110のようなプラットフォーム120から分離されるか或いはプラットフォーム120を含む他のデバイス又はデバイスのグループによって実行されてもよい。
【0125】
図7に示すように、動作710において、方法700は、再構成入力における複数の量子化パラメータに基づいて複数のモデルIDを生成することを含む。
【0126】
動作720において、方法700は、第1のセットのマスクを選択することを含み、第1のセットのマスク内の各マスクは生成されたモデルIDのうち1つに対応する。
【0127】
動作730において、方法700は、選択された第1のセットのマスク及び第1のセットのニューラルネットワーク層の第1の複数の重みの畳み込みを実行し、第1のマスクされた重みを取得することを含む。
【0128】
動作740において、方法700は、複数の量子化パラメータに基づいて、第2のセットのニューラルネットワーク層及び第2の複数の重みを選択することを含む。
【0129】
動作750において、方法700は、複数の量子化パラメータに基づいて量子化パラメータ値を生成することを含む。
【0130】
動作760において、方法700は、生成された量子化パラメータ値を使用して、第1のマスクされた重み及び第2の複数の重みに基づいて推論出力を計算することを含む。
【0131】
図7は、当該方法の例示的なブロックを示しているが、いくつかの実装では、当該方法は、
図7に示すものよりも多くのブロック、少ないブロック、異なるブロック又は異なる配置のブロックを含んでもよい。さらに或いは代替として、当該方法のブロックのうち2つ以上が並行して実行されてもよい。
【0132】
図8は、実施形態による、共有マルチタスク層、タスク固有層及び微細構造マスクを有するMTNNを使用したMQLFによるビデオ圧縮のための装置800のブロック図である。
【0133】
図8に示すように、装置800は、モデルIDコード810、第1の選択コード820、実行コード830、第2の選択コード840、生成コード850及び計算コード860を含む。
【0134】
モデルIDコード810は、少なくとも1つのプロセッサに対して、入力における複数の量子化パラメータに基づいて複数のモデルIDを生成させるように構成される。
【0135】
第1の選択コード820は、少なくとも1つのプロセッサに対して、第1のセットのマスクを選択させるように構成され、第1のセットのマスク内の各マスクは生成されたモデルIDのうち1つに対応する。
【0136】
実行コード830は、少なくとも1つのプロセッサに対して、選択された第1のセットのマスク及び第1のセットのニューラルネットワーク層の第1の複数の重みの畳み込みを実行させて、第1のマスクされた重みを取得させるように構成される。
【0137】
第2の選択コード840は、少なくとも1つのプロセッサに対して、複数の量子化パラメータに基づいて、第2のセットのニューラルネットワーク層及び第2の複数の重みを選択させるように構成される。
【0138】
生成コード850は、少なくとも1つのプロセッサに対して、複数の量子化パラメータに基づいて量子化パラメータ値を生成させるように構成される。
【0139】
計算コード860は、生成された量子化パラメータ値を使用して、第1のマスクされた重み及び第2の複数の重みに基づいて推論出力を計算させるように構成される。
【0140】
図8は装置の例示的なブロックを示しているが、いくつかの実装では、装置は、
図8に示すものよりも多くのブロック、少ないブロック、異なるブロック又は異なる配置のブロックを含んでもよい。さらに或いは代替として、装置のブロックのうち2つ以上が組み合わされてもよい。
【0141】
図7及び
図8に関して、ニューラルネットワークは、第1のセットのニューラルネットワーク層及び第2のセットのニューラルネットワーク層に分割されてもよい。第1のセットのニューラルネットワーク層のモデルパラメータは共有層であり、異なる量子化パラメータの間で、共有層のそれぞれについて第1の複数の重みの対応するものによって共有される。第2のセットのニューラルネットワーク層のモデルパラメータは、タスク固有層のそれぞれについて第2の複数の重みのうち対応するものによって、量子化パラメータのそれぞれについて異なるタスク固有層である。
【0142】
ニューラルネットワークは、入力、推論出力、及びそれぞれのモデルIDのそれぞれの量子化パラメータに基づいて決定される歪み損失を最小化するように、第1のセットのマスクによってそれぞれマスクされていない第1の複数の重みのうち1つ以上を更新することによって訓練されてもよい。
【0143】
ニューラルネットワークは、第1の複数の重みのうちどれがプルーニングされるかを示すバイナリプルーニングマスクを取得するように、第1のセットのマスクによってそれぞれマスクされていない第1の複数の重みのうち更新された1つ以上をプルーニングし、歪み損失を最小化するように、第1のセットのマスク及び取得されたバイナリプルーニングマスクによってそれぞれマスクされていない第1の複数の重みのうち少なくとも1つを更新することによって更に訓練されてもよい。
【0144】
第1のセットのマスクにおける
図7及び
図8のマスクエントリは、第1の複数の重みのうち対応するものがそれぞれのモデルIDの量子化パラメータを計算するために使用されるか否かを示す2進数0又は1でもよい。さらに、第2の複数の重みに対応する第2のセットのマスクが選択されてもよい。
【0145】
図7及び
図8において、入力の量子化パラメータは、各サブグループが同じニューラルネットワークモデルインスタンスを共有するサブグループにグループ化されてもよい。
【0146】
従来のループフィルタリング又はNNベースのループフィルタリング方法と比較して、本実施形態は、複数のバイナリマスクを使用することによって複数のQP設定の圧縮に対応するために、1つのMTNNモデルインスタンスを使用することを記載する。ブロック毎の微細構造マスクはまた、個々のQP設定の圧縮性能を保存し、推論計算を低減できる。この方法は、複数のQP設定を使用した圧縮のための展開ストレージを大幅に低減する。また、QPを更なる入力として使用するか、QPを更なる入力として使用しないかで、様々なタイプの基礎となるNNLF方法及びモデルアーキテクチャ、様々な形状の微細構造ブロック、異なるタイプの入力(例えば、フレームレベル又はブロックレベル)、及び異なる入力チャネルについての異なるQP値に対応する、柔軟且つ一般的なフレームワークを提供する。
【0147】
提案される方法は、別々に使用されてもよく、或いは、任意の順序で組み合わされてもよい。さらに、方法(又は実施形態)のそれぞれは、処理回路(例えば、1つ以上のプロセッサ又は1つ以上の集積回路)によって実施されてもよい。一例では、1つ以上のプロセッサは、非一時的なコンピュータ読み取り可能媒体に記憶されたプログラムを実行する。
【0148】
上記の開示は、例示及び説明を提供するが、網羅的であること、又は実装を開示された正確な形式に限定することを意図するものではない。変更及び変形は、上記の開示に鑑みて可能であるか、或いは、実装の実施から取得され得る。
【0149】
本明細書で使用されるとき、コンポーネントという用語は、ハードウェア、ファームウェア、又はハードウェアとソフトウェアとの組み合わせとして広く解釈されることを意図する。
【0150】
本明細書に記載のシステム及び/又は方法は、ハードウェア、ファームウェア、又はハードウェアとソフトウェアとの組み合わせの異なる形式で実施されてもよいことが明らかである。これらのシステム及び/又は方法を実施するために使用される実際の特別な制御ハードウェア又はソフトウェアコードは、実施を限定するものではない。したがって、システム及び/又は方法の動作及び挙動は、特定のソフトウェアコードを参照することなく本明細書に記載されており、ソフトウェア及びハードウェアは、本明細書の記載に基づいてシステム及び/又は方法を実施するように設計されてもよいことが理解される。
【0151】
特徴の組み合わせが特許請求の範囲に記載され、及び/又は、明細書に開示されているとしても、これらの組み合わせは、可能な実装の開示を限定することを意図するものではない。実際に、これらの特徴の多くは、特許請求の範囲に具体的に記載されていない、及び/又は明細書に開示されていない方法で組み合わされてもよい。以下に列挙される各従属請求項は、1つの請求項のみに直接依存することがあるが、可能な実装の開示は、特許請求の範囲の中の他の全ての請求項と組み合わせた各従属請求項を含む。
【0152】
本明細書で使用される要素、動作又は命令は、明示的に記載されない限り、重要又は必須であるものとして解釈されない。また、本明細書で使用されるとき、単数形は1つ以上の項目を含むことを意図しており、「1つ以上」と互換的に使用されてもよい。さらに、本明細書で使用されるとき、「セット」という用語は、1つ以上の項目(例えば、関連項目、非関連項目、関連項目と非関連項目との組み合わせ等)を含むことを意図しており、「1つ以上」と互換的に使用されてもよい。1つの項目のみが意図される場合、「1つ」という用語又は同様の言語が使用される。また、本明細書で使用されるとき、「有する(has)」、「有する(have)」、「有する(having)」等の用語は、オープンエンドの用語であることを意図する。さらに、「に基づいて」という語句は、明示的に別段の記載がない限り、「少なくとも部分的に基づいて」を意味することを意図する。