(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-02-28
(45)【発行日】2025-03-10
(54)【発明の名称】深層学習を使用する並列化されたレートひずみ最適量子化
(51)【国際特許分類】
H04N 19/126 20140101AFI20250303BHJP
H04N 19/14 20140101ALI20250303BHJP
H04N 19/176 20140101ALI20250303BHJP
H04N 19/46 20140101ALI20250303BHJP
【FI】
H04N19/126
H04N19/14
H04N19/176
H04N19/46
(21)【出願番号】P 2022557846
(86)(22)【出願日】2021-03-23
(86)【国際出願番号】 US2021023680
(87)【国際公開番号】W WO2021211270
(87)【国際公開日】2021-10-21
【審査請求日】2024-03-06
(32)【優先日】2020-04-17
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-06-04
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-10-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】595020643
【氏名又は名称】クゥアルコム・インコーポレイテッド
【氏名又は名称原語表記】QUALCOMM INCORPORATED
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(74)【代理人】
【識別番号】100108855
【氏名又は名称】蔵田 昌俊
(74)【代理人】
【識別番号】100158805
【氏名又は名称】井関 守三
(74)【代理人】
【識別番号】100112807
【氏名又は名称】岡田 貴志
(72)【発明者】
【氏名】キアンファー、ダナ
(72)【発明者】
【氏名】ウィガース、アウケ・ヨリス
(72)【発明者】
【氏名】サイド、アミール
(72)【発明者】
【氏名】コーエン、タコ・セバスティアーン
(72)【発明者】
【氏名】プレザ、レザ
【審査官】大桃 由紀雄
(56)【参考文献】
【文献】韓国公開特許第2003-0009575(KR,A)
【文献】米国特許出願公開第2019/0132591(US,A1)
【文献】特開2020-088740(JP,A)
【文献】Wei Gong et al.,"Progressive Image Transmission Using Self-supervise Backpropagation Neural Network",Conference Record of the Twenty-Fifth Asilomar Conference on Signals, Systems & Computers,IEEE,2002年08月06日,pp.1133-1137,[online], [retrieved on 2025.02.04], Retrieved from the Internet: <URL: https://ieeexplore.ieee.org/document/186624><DOI: 10.1109/ACSSC.1991.186624>
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00-19/98
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
ビデオデータを符号化する方法であって、前記方法は、
スケーリングされた変換係数を決定することと、ここにおいて、前記スケーリングされた変換係数を決定することが、所与の量子化ステップに従って前記ビデオデータのブロックの変換係数をスケーリングすることを備える、
スカラー量子化された係数を決定することと、ここにおいて、前記スカラー量子化された係数を決定することが、前記ブロックの前記スケーリングされた変換係数にスカラー量子化を適用することを備える、
前記ブロックの各それぞれの変換係数についての確率のそれぞれのセットを決定するニューラルネットワークを適用することと、ここにおいて、
前記それぞれの変換係数についての確率の前記それぞれのセットが、複数の可能な調整値中の各可能な調整値についてのそれぞれの確率値を含み、
前記ニューラルネットワークへの入力が、前記スケーリングされた変換係数と前記スカラー量子化された係数とを含む、
前記ブロックの特定の変換係数についての確率の前記セットに基づいて、前記特定の変換係数についての量子化レベルを決定することと、
前記ビデオデータの符号化された表現を含むビットストリーム中で、前記特定の変換係数についての前記決定された量子化レベルをシグナリングすることと、
を備
え、
前記ニューラルネットワークは、前記ブロックの前記変換係数のすべての可能な量子化レベルにわたってブルートフォース探索を実施するレートひずみ最適化アルゴリズムを模倣するようにトレーニングされている、方法。
【請求項2】
前記ニューラルネットワークが完全畳み込みニューラルネットワークである、請求項1に記載の方法。
【請求項3】
前記ニューラルネットワークが自己回帰ネットワークである、請求項1に記載の方法。
【請求項4】
ヒューリスティック探索を使用してトレーニングラベルを集めることと、
前記トレーニングラベルを、前記ニューラルネットワークのためのトレーニングプロセスにおいてトレーニングターゲットとして使用することと
をさらに備える、請求項1に記載の方法。
【請求項5】
前記複数の可能な調整値が{-1,0}からなる、請求項1に記載の方法。
【請求項6】
前記特定の変換係数についての前記量子化レベルを決定することが、
前記特定の変換係数についての確率の前記セットに基づいて、前記複数の可能な調整値中の、前記特定の変換係数についての最も可能性の高い調整値を決定することと、
前記特定の変換係数についての前記最も可能性の高い調整値を前記特定の変換係数の絶対値に加算することによって、前記特定の変換係数についての更新された値を決定することと、
前記特定の変換係数についての前記更新された値に前記特定の変換係数の符号値を乗算することによって、前記特定の変換係数についての前記量子化レベルを決定することと
、
を備える、請求項1に記載の方法。
【請求項7】
前記複数の可能な調整値中の各可能な調整値についての前記それぞれの確率値が、前記可能な調整値についての非正規化対数確率である、請求項1に記載の方法。
【請求項8】
ビデオデータを符号化するためのデバイスであって、前記デバイスが、
前記ビデオデータを記憶するためのメモリと、
回路中に実装された1つまたは複数のプロセッサとを備え、前記1つまたは複数のプロセッサは、
スケーリングされた変換係数を決定することと、ここにおいて、前記スケーリングされた変換係数を決定することが、所与の量子化ステップに従って前記ビデオデータのブロックの変換係数をスケーリングすることを備える、
スカラー量子化された係数を決定することと、ここにおいて、前記スカラー量子化された係数を決定することが、前記ブロックの前記スケーリングされた変換係数にスカラー量子化を適用することを備える、
前記ブロックの各それぞれの変換係数についての確率のそれぞれのセットを決定するニューラルネットワークを適用することと、ここにおいて、
前記それぞれの変換係数についての確率の前記それぞれのセットが、複数の可能な調整値中の各可能な調整値についてのそれぞれの確率値を含み、
前記ニューラルネットワークへの入力が、前記スケーリングされた変換係数と前記スカラー量子化された係数とを含む、
前記ブロックの特定の変換係数についての確率の前記セットに基づいて、前記特定の変換係数についての量子化レベルを決定することと、
前記ビデオデータの符号化された表現を含むビットストリーム中で、前記特定の変換係数についての前記決定された量子化レベルをシグナリングすることと、
を行うように構成さ
れ、
前記ニューラルネットワークは、前記ブロックの前記変換係数のすべての可能な量子化レベルにわたってブルートフォース探索を実施するレートひずみ最適化アルゴリズムを模倣するようにトレーニングされている、デバイス。
【請求項9】
前記ニューラルネットワークが完全畳み込みニューラルネットワークである、請求項
8に記載のデバイス。
【請求項10】
前記ニューラルネットワークが自己回帰ネットワークである、請求項
8に記載のデバイス。
【請求項11】
前記1つまたは複数のプロセッサが、
ヒューリスティック探索を使用してトレーニングラベルを集めることと、
前記トレーニングラベルを、前記ニューラルネットワークのためのトレーニングプロセスにおいてトレーニングターゲットとして使用することと
を行うようにさらに構成された、請求項
8に記載のデバイス。
【請求項12】
前記複数の可能な調整値が{-1,0}からなる、請求項
8に記載のデバイス。
【請求項13】
前記1つまたは複数のプロセッサは、前記特定の変換係数についての前記量子化レベルを決定することの一部として、前記1つまたは複数のプロセッサが、
前記特定の変換係数についての確率の前記セットに基づいて、前記複数の可能な調整値中の、前記特定の変換係数についての最も可能性の高い調整値を決定することと、
前記特定の変換係数についての前記最も可能性の高い調整値を前記特定の変換係数の絶対値に加算することによって、前記特定の変換係数についての更新された値を決定することと、
前記特定の変換係数についての前記更新された値に前記特定の変換係数の符号値を乗算することによって、前記特定の変換係数についての前記量子化レベルを決定することと
、
を行うように構成された、請求項
8に記載のデバイス。
【請求項14】
前記複数の可能な調整値中の各可能な調整値についての前記それぞれの確率値が、前記可能な調整値についての非正規化対数確率である、請求項
8に記載のデバイス。
【請求項15】
命令を記憶したコンピュータ可読記憶媒体であって、前記命令は、実行されたとき、1つまたは複数のプロセッサに、
請求項1乃至7のいずれか一項に記載の方法を実行させる、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
[0001]本出願は、その各々の内容全体が参照により組み込まれる、2020年10月14日に出願された米国特許出願第17/070,589号、2020年4月17日に出願された米国仮特許出願第63/011,685、および2020年6月4日に出願された米国仮特許出願第63/034,618号の優先権を主張する。
【0002】
[0002]本開示は、ビデオ符号化およびビデオ復号に関する。
【背景技術】
【0003】
[0003]デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲーミングデバイス、ビデオゲームコンソール、セルラー電話または衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4、Part10,アドバンストビデオコーディング(AVC)、ITU-T H.265/高効率ビデオコーディング(HEVC)によって定義された規格、およびそのような規格の拡張に記載されているビデオコーディング技法など、ビデオコーディング技法を実装する。ビデオデバイスは、そのようなビデオコーディング技法を実装することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および/または記憶し得る。
【0004】
[0004]ビデオコーディング技法は、ビデオシーケンスに固有の冗長性を低減または除去するための空間(ピクチャ内)予測および/または時間(ピクチャ間)予測を含む。ブロックベースのビデオコーディングでは、ビデオスライス(たとえば、ビデオピクチャまたはビデオピクチャの一部分)が、コーディングツリーユニット(CTU)、コーディングユニット(CU)および/またはコーディングノードと呼ばれることもある、ビデオブロックに区分され得る。ピクチャのイントラコード化(I)スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測を使用して符号化される。ピクチャのインターコード化(PまたはB)スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測、または他の参照ピクチャ中の参照サンプルに対する時間予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【発明の概要】
【0005】
[0005]概して、本開示は、深層学習を使用する並列化されたレートひずみ最適量子化(rate-distortion optimized quantization)を実施するための技法について説明する。本明細書で説明されるように、ビデオエンコーダが、ブロックの各変換係数について、変換係数についての確率のセットを決定するニューラルネットワークを適用する。ビデオエンコーダは、次いで、変換係数についての確率のセットに基づいて、変換係数についての量子化レベルを決定し得る。ビデオエンコーダは、変換係数についての決定された量子化レベルをシグナリングし得る。
【0006】
[0006]一例では、方法が、ビデオデータを符号化する方法を含み、本方法は、スケーリングされた変換係数を決定することと、ここにおいて、スケーリングされた変換係数を決定することが、所与の量子化ステップに従ってビデオデータのブロックの変換係数をスケーリングすることを備える、スカラー量子化された(scalar quantized)係数を決定することと、ここにおいて、スカラー量子化された係数を決定することが、ブロックのスケーリングされた変換係数にスカラー量子化を適用することを備える、ブロックの各それぞれの変換係数についての確率のそれぞれのセットを決定するニューラルネットワークを適用することと、ここにおいて、それぞれの変換係数についての確率のそれぞれのセットが、複数の可能な調整値中の各可能な調整値についてのそれぞれの確率値を含み、ニューラルネットワークへの入力が、スケーリングされた変換係数とスカラー量子化された係数とを含む、ブロックの特定の変換係数についての確率のセットに基づいて、特定の変換係数についての量子化レベルを決定することと、ビデオデータの符号化された表現を含むビットストリーム中で、特定の変換係数についての決定された量子化レベルをシグナリングすることとを備える。
【0007】
[0007]別の例では、本開示は、ビデオデータを符号化するためのデバイスについて説明し、本デバイスは、ビデオデータを記憶するためのメモリと、回路中に実装された1つまたは複数のプロセッサとを備え、1つまたは複数のプロセッサは、スケーリングされた変換係数を決定することと、ここにおいて、スケーリングされた変換係数を決定することが、所与の量子化ステップに従ってビデオデータのブロックの変換係数をスケーリングすることを備える、スカラー量子化された係数を決定することと、ここにおいて、スカラー量子化された係数を決定することが、ブロックのスケーリングされた変換係数にスカラー量子化を適用することを備える、ブロックの各それぞれの変換係数についての確率のそれぞれのセットを決定するニューラルネットワークを適用することと、ここにおいて、それぞれの変換係数についての確率のそれぞれのセットが、複数の可能な調整値中の各可能な調整値についてのそれぞれの確率値を含み、ニューラルネットワークへの入力が、スケーリングされた変換係数とスカラー量子化された係数とを含む、ブロックの特定の変換係数についての確率のセットに基づいて、特定の変換係数についての量子化レベルを決定することと、ビデオデータの符号化された表現を含むビットストリーム中で、特定の変換係数についての決定された量子化レベルをシグナリングすることとを行うように構成される。
【0008】
[0008]別の例では、本開示は、ビデオデータを符号化するためのデバイスについて説明し、本デバイスは、スケーリングされた変換係数を決定するための手段と、ここにおいて、スケーリングされた変換係数を決定することが、所与の量子化ステップに従ってビデオデータのブロックの変換係数をスケーリングすることを備える、スカラー量子化された係数を決定するための手段と、ここにおいて、スカラー量子化された係数を決定することが、ブロックのスケーリングされた変換係数にスカラー量子化を適用することを備える、ブロックの各それぞれの変換係数についての確率のそれぞれのセットを決定するニューラルネットワークを適用するための手段と、ここにおいて、それぞれの変換係数についての確率のそれぞれのセットが、複数の可能な調整値中の各可能な調整値についてのそれぞれの確率値を含み、ニューラルネットワークへの入力が、スケーリングされた変換係数とスカラー量子化された係数とを含む、ブロックの特定の変換係数についての確率のセットに基づいて、特定の変換係数についての量子化レベルを決定するための手段と、ビデオデータの符号化された表現を含むビットストリーム中で、特定の変換係数についての決定された量子化レベルをシグナリングするための手段とを備える。
【0009】
[0009]別の例では、本開示は、命令を記憶したコンピュータ可読記憶媒体について説明し、命令は、実行されたとき、1つまたは複数のプロセッサに、スケーリングされた変換係数を決定することと、ここにおいて、スケーリングされた変換係数を決定することが、所与の量子化ステップに従ってビデオデータのブロックの変換係数をスケーリングすることを備える、スカラー量子化された係数を決定することと、ここにおいて、スカラー量子化された係数を決定することが、ブロックのスケーリングされた変換係数にスカラー量子化を適用することを備える、ブロックの各それぞれの変換係数についての確率のそれぞれのセットを決定するニューラルネットワークを適用することと、ここにおいて、それぞれの変換係数についての確率のそれぞれのセットが、複数の可能な調整値中の各可能な調整値についてのそれぞれの確率値を含み、ニューラルネットワークへの入力が、スケーリングされた変換係数とスカラー量子化された係数とを含む、ブロックの特定の変換係数についての確率のセットに基づいて、特定の変換係数についての量子化レベルを決定することと、ビデオデータの符号化された表現を含むビットストリーム中で、特定の変換係数についての決定された量子化レベルをシグナリングすることとを行わせる。
【0010】
[0010]1つまたは複数の例の詳細が添付の図面および以下の説明に記載される。他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【0011】
【
図1】[0011]本開示の技法を実施し得る例示的なビデオ符号化および復号システムを示すブロック図。
【
図2】[0012]高効率ビデオコーディング(HEVC)、多用途ビデオコーディング(VVC)、および/または他のビデオコーディング規格において使用され得るビデオエンコーダパイプラインをもつ量子化器の例示的な一般的な概略図を示す概念図。
【
図3】[0013]本開示の技法を実施し得る例示的なビデオエンコーダを示すブロック図。
【
図4】[0014]本開示の技法を実施し得る例示的なビデオデコーダを示すブロック図。
【
図5A】[0015]ニューラルネットワークベースのレートひずみ最適量子化パイプラインの例示的な概略図を示す概念図。
【
図5B】[0016]各変換係数の符号(sign)がニューラルネットワーク推論中に無視される、ニューラルネットワークベースのレートひずみ最適量子化パイプラインの例示的な概略図を示す概念図。
【
図6A】[0017]本開示の1つまたは複数の技法による、例示的な完全畳み込みニューラルネットワークを示す概念図。
【
図6B】[0018]本開示の1つまたは複数の技法による、例示的な完全畳み込みニューラルネットワークを示す概念図。
【
図7A】[0019]本開示の1つまたは複数の技法による、調節層(conditioning layer)をもつ自己回帰モデル(ARM)アーキテクチャの例示的な概略図を示す概念図。
【
図7B】[0020]本開示の1つまたは複数の技法による、調節層をもつARMアーキテクチャの別の例示的な概略図を示す概念図。
【
図8】[0021]現在ブロックを符号化するための例示的な方法を示すフローチャート。
【
図9】[0022]ビデオデータの現在ブロックを復号するための例示的な方法を示すフローチャート。
【
図10】[0023]本開示の1つまたは複数の技法による、ビデオデータを符号化する例示的な方法を示すフローチャート。
【発明を実施するための形態】
【0012】
[0024]レートひずみ最適量子化(RDOQ)は、ビデオエンコーダがビデオデータのブロックの個々の変換係数についての量子化レベルを選択する量子化技法である。ビデオエンコーダは、次いで、選択された量子化レベルをシグナリングし得る。変換係数についての量子化レベルを選択するプロセスは、変換係数についての最適レートひずみ(optimal rate-distortion)スコアを作り出す量子化レベルを決定するために、変換係数の異なる量子化レベルをテストすることを伴い得る。そのような探索を実施することは、時間がかかり、リソース集約的であり得る。
【0013】
[0025]本開示は、RDOQと同様であるがより大きい効率およびより少ないリソース消費を伴う結果を達成し得る技法について説明する。本明細書で説明されるように、ビデオエンコーダは、スケーリングされた変換係数を決定し得る。スケーリングされた変換係数を決定することの一部として、ビデオエンコーダは、所与の量子化ステップに従ってビデオデータのブロックの変換係数をスケーリングし得る。さらに、ビデオエンコーダは、スカラー量子化された係数を決定し得る。スカラー量子化された係数を決定することの一部として、ビデオエンコーダは、ブロックのスケーリングされた変換係数にスカラー量子化を適用し得る。さらに、ビデオエンコーダは、ブロックの各それぞれの変換係数についての確率のそれぞれのセットを決定するニューラルネットワークを適用し得る。それぞれの変換係数についての確率のそれぞれのセットは、複数の可能な調整値中の各可能な調整値についてのそれぞれの確率値を含む。ニューラルネットワークへの入力が、スケーリングされた変換係数とスカラー量子化された係数とを含み得る。さらに、ビデオエンコーダは、ブロックの特定の変換係数についての確率のセットに基づいて、特定の変換係数についての量子化レベルを決定し得る。ビデオエンコーダは、ビデオデータの符号化された表現を含むビットストリーム中で、特定の変換係数についての決定された量子化レベルをシグナリングし得る。このようにしてRDOQを実施することは、量子化プロセスを加速し得、あまりリソース集約的でないことがある。
【0014】
[0026]
図1は、本開示の技法を実施し得る例示的なビデオ符号化および復号システム100を示すブロック図である。本開示の技法は、概して、ビデオデータをコーディング(符号化および/または復号)することを対象とする。概して、ビデオデータは、ビデオを処理するための任意のデータを含む。したがって、ビデオデータは、生の符号化されていないビデオ、符号化されたビデオ、復号された(たとえば、再構築された)ビデオ、およびシグナリングデータなどのビデオメタデータを含み得る。
【0015】
[0027]
図1に示されているように、システム100は、この例では、宛先デバイス116によって復号および表示されるべき符号化されたビデオデータを提供するソースデバイス102を含む。特に、ソースデバイス102は、コンピュータ可読媒体110を介して宛先デバイス116にビデオデータを提供する。ソースデバイス102と宛先デバイス116とは、デスクトップコンピュータ、モバイルデバイス(たとえば、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、スマートフォンなどの電話ハンドセット、カメラ)、ブロードキャスト受信機デバイス、セットトップボックス、テレビジョン、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイスなどを含む、広範囲のデバイスのいずれかを備え得る。いくつかの場合には、ソースデバイス102と宛先デバイス116とは、ワイヤレス通信のために装備され得、したがって、ワイヤレス通信デバイスと呼ばれることがある。
【0016】
[0028]
図1の例では、ソースデバイス102は、ビデオソース104と、メモリ106と、ビデオエンコーダ200と、出力インターフェース108とを含む。宛先デバイス116は、入力インターフェース122と、ビデオデコーダ300と、メモリ120と、ディスプレイデバイス118とを含む。本開示によれば、ソースデバイス102のビデオエンコーダ200と、宛先デバイス116のビデオデコーダ300とは、深層学習を使用する並列化されたレートひずみ最適量子化のための技法を適用するように構成され得る。したがって、ソースデバイス102はビデオ符号化デバイスの一例を表し、宛先デバイス116はビデオ復号デバイスの一例を表す。他の例では、ソースデバイスと宛先デバイスとは、他の構成要素または配置を含み得る。たとえば、ソースデバイス102は、外部カメラなど、外部ビデオソースからビデオデータを受信し得る。同様に、宛先デバイス116は、一体型ディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
【0017】
[0029]
図1に示されているシステム100は一例にすぎない。概して、いかなるデジタルビデオ符号化および/または復号デバイスも、深層学習を使用する並列化されたレートひずみ最適量子化のための技法を実施し得る。ソースデバイス102と宛先デバイス116とは、ソースデバイス102が宛先デバイス116への送信のためにコーディングされたビデオデータを生成するようなコーディングデバイスの例にすぎない。本開示は、「コーディング」デバイスを、データのコーディング(符号化および/または復号)を実施するデバイスとして参照する。したがって、ビデオエンコーダ200とビデオデコーダ300とは、コーディングデバイス、特に、それぞれビデオエンコーダとビデオデコーダとの例を表す。いくつかの例では、ソースデバイス102および宛先デバイス116は、ソースデバイス102および宛先デバイス116の各々がビデオ符号化構成要素およびビデオ復号構成要素を含むように、実質的に対称的に動作し得る。したがって、システム100は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのための、ソースデバイス102と宛先デバイス116との間の一方向または双方向ビデオ送信をサポートし得る。
【0018】
[0030]概して、ビデオソース104は、ビデオデータ(すなわち、生の符号化されていないビデオデータ)のソースを表し、ビデオデータの連続的な一連のピクチャ(「フレーム」とも呼ばれる)をビデオエンコーダ200に提供し、ビデオエンコーダ200は、ピクチャのためにデータを符号化する。ソースデバイス102のビデオソース104は、ビデオカメラ、以前にキャプチャされた生のビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースなど、ビデオキャプチャデバイスを含み得る。さらなる代替として、ビデオソース104は、ソースビデオとして、コンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成されたビデオとの組合せを生成し得る。各場合において、ビデオエンコーダ200は、キャプチャされたビデオデータ、プリキャプチャされたビデオデータ、またはコンピュータ生成されたビデオデータを符号化する。ビデオエンコーダ200は、ピクチャを、(「表示順序」と呼ばれることがある)受信順序から、コーディングのためのコーディング順序に並べ替え得る。ビデオエンコーダ200は、符号化されたビデオデータを含むビットストリームを生成し得る。ソースデバイス102は、次いで、たとえば、宛先デバイス116の入力インターフェース122による受信および/または取出しのために、出力インターフェース108を介して符号化されたビデオデータをコンピュータ可読媒体110上に出力し得る。
【0019】
[0031]ソースデバイス102のメモリ106と、宛先デバイス116のメモリ120とは、汎用メモリを表す。いくつかの例では、メモリ106、120は、生のビデオデータ、たとえば、ビデオソース104からの生のビデオ、およびビデオデコーダ300からの生の復号されたビデオデータを記憶し得る。追加または代替として、メモリ106、120は、たとえば、それぞれ、ビデオエンコーダ200とビデオデコーダ300とによって実行可能なソフトウェア命令を記憶し得る。メモリ106およびメモリ120は、この例ではビデオエンコーダ200およびビデオデコーダ300とは別個に示されているが、ビデオエンコーダ200およびビデオデコーダ300は、機能的に同様のまたは等価な目的で内部メモリをも含み得ることを理解されたい。さらに、メモリ106、120は、符号化されたビデオデータ、たとえば、ビデオエンコーダ200からの出力、およびビデオデコーダ300への入力を記憶し得る。いくつかの例では、メモリ106、120の部分は、たとえば、生の復号および/または符号化されたビデオデータを記憶するために、1つまたは複数のビデオバッファとして割り振られ得る。
【0020】
[0032]コンピュータ可読媒体110は、ソースデバイス102から宛先デバイス116に符号化されたビデオデータを移送することが可能な任意のタイプの媒体またはデバイスを表し得る。一例では、コンピュータ可読媒体110は、ソースデバイス102が、たとえば、無線周波数ネットワークまたはコンピュータベースのネットワークを介して、符号化されたビデオデータを宛先デバイス116にリアルタイムで直接送信することを可能にするための通信媒体を表す。出力インターフェース108は、符号化されたビデオデータを含む送信信号を復調し得、入力インターフェース122は、ワイヤレス通信プロトコルなどの通信規格に従って、受信された送信信号を復調し得る。通信媒体は、無線周波数(RF)スペクトルまたは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス102から宛先デバイス116への通信を可能にするために有用であり得る任意の他の機器を含み得る。
【0021】
[0033]いくつかの例では、ソースデバイス102は、出力インターフェース108から記憶デバイス112に符号化されたデータを出力し得る。同様に、宛先デバイス116は、入力インターフェース122を介して記憶デバイス112からの符号化されたデータにアクセスし得る。記憶デバイス112は、ハードドライブ、Blu-ray(登録商標)ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性または不揮発性メモリ、あるいは符号化されたビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。
【0022】
[0034]いくつかの例では、ソースデバイス102は、ソースデバイス102によって生成された符号化されたビデオデータを記憶し得るファイルサーバ114または別の中間記憶デバイスに、符号化されたビデオデータを出力し得る。宛先デバイス116は、ストリーミングまたはダウンロードを介してファイルサーバ114からの記憶されたビデオデータにアクセスし得る。ファイルサーバ114は、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイス116に送信することが可能な任意のタイプのサーバデバイスであり得る。ファイルサーバ114は、(たとえば、ウェブサイトのための)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、コンテンツ配信ネットワークデバイス、またはネットワーク接続ストレージ(NAS)デバイスを表し得る。宛先デバイス116は、インターネット接続を含む任意の標準的なデータ接続を通してファイルサーバ114からの符号化されたビデオデータにアクセスし得る。これは、ファイルサーバ114に記憶された符号化されたビデオデータにアクセスするのに好適であるワイヤレスチャネル(たとえば、Wi-Fi(登録商標)接続)、有線接続(たとえば、デジタル加入者回線(DSL)、ケーブルモデムなど)、またはその両方の組合せを含み得る。ファイルサーバ114と入力インターフェース122とは、ストリーミング送信プロトコル、ダウンロード送信プロトコル、またはそれらの組合せに従って動作するように構成され得る。
【0023】
[0035]出力インターフェース108と入力インターフェース122とは、ワイヤレス送信機/受信機、モデム、ワイヤードネットワーキング構成要素(たとえば、イーサネット(登録商標)カード)、様々なIEEE802.11規格のいずれかに従って動作するワイヤレス通信構成要素、または他の物理的構成要素を表し得る。出力インターフェース108と入力インターフェース122とがワイヤレス構成要素を備える例では、出力インターフェース108と入力インターフェース122とは、4G、4G-LTE(登録商標)(ロングタームエボリューション)、LTEアドバンスト、5Gなど、セルラー通信規格に従って、符号化されたビデオデータなどのデータを転送するように構成され得る。出力インターフェース108がワイヤレス送信機を備えるいくつかの例では、出力インターフェース108と入力インターフェース122とは、IEEE802.11仕様、IEEE802.15仕様(たとえば、ZigBee(登録商標))、Bluetooth(登録商標)規格など、他のワイヤレス規格に従って、符号化されたビデオデータなどのデータを転送するように構成され得る。いくつかの例では、ソースデバイス102および/または宛先デバイス116は、それぞれのシステムオンチップ(SoC)デバイスを含み得る。たとえば、ソースデバイス102は、ビデオエンコーダ200および/または出力インターフェース108に帰属する機能を実施するためのSoCデバイスを含み得、宛先デバイス116は、ビデオデコーダ300および/または入力インターフェース122に帰属する機能を実施するためのSoCデバイスを含み得る。
【0024】
[0036]本開示の技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。
【0025】
[0037]宛先デバイス116の入力インターフェース122は、コンピュータ可読媒体110(たとえば、通信媒体、記憶デバイス112、ファイルサーバ114など)から符号化されたビデオビットストリームを受信する。符号化されたビデオビットストリームは、ビデオブロックまたは他のコーディングされたユニット(たとえば、スライス、ピクチャ、ピクチャグループ、シーケンスなど)の特性および/または処理を記述する値を有するシンタックス要素など、ビデオデコーダ300によっても使用される、ビデオエンコーダ200によって定義されるシグナリング情報を含み得る。ディスプレイデバイス118は、復号されたビデオデータの復号されたピクチャをユーザに表示する。ディスプレイデバイス118は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを表し得る。
【0026】
[0038]
図1には示されていないが、いくつかの例では、ビデオエンコーダ200とビデオデコーダ300とは各々、オーディオエンコーダおよび/またはオーディオデコーダと統合され得、共通のデータストリーム中にオーディオとビデオの両方を含む多重化ストリームをハンドリングするために、適切なMUX-DEMUXユニット、あるいは他のハードウェアおよび/またはソフトウェアを含み得る。適用可能な場合、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
【0027】
[0039]ビデオエンコーダ200とビデオデコーダ300とは各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダおよび/またはデコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、本開示の技法を実施するために1つまたは複数のプロセッサを使用してその命令をハードウェアで実行し得る。ビデオエンコーダ200とビデオデコーダ300との各々は、1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。ビデオエンコーダ200および/またはビデオデコーダ300を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備え得る。
【0028】
[0040]ビデオエンコーダ200とビデオデコーダ300とは、高効率ビデオコーディング(HEVC)とも呼ばれるITU-T H.265、あるいはマルチビューおよび/またはスケーラブルビデオコーディング拡張などのそれらの拡張など、ビデオコーディング規格に従って動作し得る。代替的に、ビデオエンコーダ200とビデオデコーダ300とは、汎用ビデオコーディング(VVC)とも呼ばれるITU-T H.266など、他のプロプライエタリ規格または業界規格に従って動作し得る。VVC規格の最近のドラフトは、Brossら、「Versatile Video Coding (Draft 8)」、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のジョイントビデオエキスパートチーム(JVET)、第17回会合、ブリュッセル、ベルギー、2020年1月7~17日、JVET-Q2001-vE(以下、「VVCドラフト8」)に記載されている。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。
【0029】
[0041]概して、ビデオエンコーダ200とビデオデコーダ300とは、ピクチャのブロックベースのコーディングを実施し得る。「ブロック」という用語は、概して、処理されるべき(たとえば、符号化されるべき、復号されるべき、あるいは、符号化および/または復号プロセスにおいて他の方法で使用されるべき)データを含む構造を指す。たとえば、ブロックは、ルミナンスおよび/またはクロミナンスデータのサンプルの2次元行列を含み得る。概して、ビデオエンコーダ200とビデオデコーダ300とは、YUV(たとえば、Y、Cb、Cr)フォーマットで表されるビデオデータをコーディングし得る。すなわち、ピクチャのサンプルのために赤色、緑色、および青色(RGB)データをコーディングするのではなく、ビデオエンコーダ200とビデオデコーダ300とは、ルミナンス成分とクロミナンス成分とをコーディングし得、ここで、クロミナンス成分は、赤色相と青色相の両方のクロミナンス成分を含み得る。いくつかの例では、ビデオエンコーダ200は、符号化より前に、受信されたRGBフォーマットのデータをYUV表現に変換し、ビデオデコーダ300は、YUV表現をRGBフォーマットに変換する。代替的に、前処理および後処理ユニット(図示せず)が、これらの変換を実施し得る。
【0030】
[0042]本開示は、概して、ピクチャのデータを符号化または復号するプロセスを含むように、ピクチャのコーディング(たとえば、符号化および復号)に言及することがある。同様に、本開示は、ブロックについてのデータを符号化または復号するプロセス、たとえば、予測および/または残差コーディングを含むように、ピクチャのブロックのコーディングに言及することがある。符号化されたビデオビットストリームは、概して、コーディング決定(たとえば、コーディングモード)とブロックへのピクチャの区分とを表すシンタックス要素についての一連の値を含む。したがって、ピクチャまたはブロックをコーディングすることへの言及は、概して、ピクチャまたはブロックを形成するシンタックス要素についての値をコーディングすることとして理解されるべきである。
【0031】
[0043]HEVCは、コーディングユニット(CU)、予測ユニット(PU)、および変換ユニット(TU)を含む、様々なブロックを定義する。HEVCに従って、(ビデオエンコーダ200などの)ビデオコーダは、クワッドツリー構造に従ってコーディングツリーユニット(CTU)をCUに区分する。すなわち、ビデオコーダは、CTUとCUとを4つの等しい重複しない正方形に区分し、クワッドツリーの各ノードは、0個または4つのいずれかの子ノードを有する。子ノードのないノードは、「リーフノード」と呼ばれることがあり、そのようなリーフノードのCUは、1つまたは複数のPUおよび/または1つまたは複数のTUを含み得る。ビデオコーダは、PUとTUとをさらに区分し得る。たとえば、HEVCでは、残差クワッドツリー(RQT)は、TUの区分を表す。HEVCでは、PUはインター予測データを表すが、TUは残差データを表す。イントラ予測されるCUは、イントラモード指示などのイントラ予測情報を含む。
【0032】
[0044]別の例として、ビデオエンコーダ200とビデオデコーダ300とは、VVCに従って動作するように構成され得る。VVCに従って、(ビデオエンコーダ200などの)ビデオコーダは、ピクチャを複数のコーディングツリーユニット(CTU)に区分する。ビデオエンコーダ200は、クワッドツリーバイナリツリー(QTBT)構造またはマルチタイプツリー(MTT)構造など、ツリー構造に従ってCTUを区分し得る。QTBT構造は、HEVCのCUとPUとTUとの間の分離など、複数の区分タイプの概念を除去する。QTBT構造は、2つのレベル、すなわち、クワッドツリー区分に従って区分される第1のレベルと、バイナリツリー区分に従って区分される第2のレベルとを含む。QTBT構造のルートノードは、CTUに対応する。バイナリツリーのリーフノードはコーディングユニット(CU)に対応する。
【0033】
[0045]MTT区分構造では、ブロックは、クワッドツリー(QT)区分と、バイナリツリー(BT)区分と、1つまたは複数のタイプのトリプルツリー(TT)(ターナリツリー(TT)とも呼ばれる)区分とを使用して区分され得る。トリプルツリーまたはターナリツリー区分は、ブロックが3つのサブブロックにスプリットされる区分である。いくつかの例では、トリプルツリーまたはターナリツリー区分は、中心を通して元のブロックを分割することなしにブロックを3つのサブブロックに分割する。MTTにおける区分タイプ(たとえば、QT、BT、およびTT)は、対称または非対称であり得る。
【0034】
[0046]いくつかの例では、ビデオエンコーダ200とビデオデコーダ300とは、ルミナンス成分とクロミナンス成分との各々を表すために単一のQTBTまたはMTT構造を使用し得、他の例では、ビデオエンコーダ200とビデオデコーダ300とは、ルミナンス成分のための1つのQTBT/MTT構造、および両方のクロミナンス成分のための別のQTBT/MTT構造(またはそれぞれのクロミナンス成分のための2つのQTBT/MTT構造)など、2つ以上のQTBTまたはMTT構造を使用し得る。
【0035】
[0047]ビデオエンコーダ200とビデオデコーダ300とは、HEVCに従うクワッドツリー区分、QTBT区分、MTT区分、または他の区分構造を使用するように構成され得る。説明の目的で、本開示の技法の説明はQTBT区分に関して提示される。しかしながら、本開示の技法は、クワッドツリー区分、または同様に他のタイプの区分を使用するように構成されたビデオコーダにも適用され得ることを理解されたい。
【0036】
[0048]いくつかの例では、CTUは、ルーマサンプルのコーディングツリーブロック(CTB)、3つのサンプルアレイを有するピクチャのクロマサンプルの2つの対応するCTB、あるいはモノクロームピクチャ、またはサンプルをコーディングするために使用される3つの別個の色平面とシンタックス構造とを使用してコーディングされるピクチャのサンプルのCTBを含む。CTBは、CTBへの成分の分割が区分になるような何らかの値のNについて、サンプルのN×Nブロックであり得る。成分は、ピクチャを4:2:0、4:2:2、または4:4:4色フォーマットに構成する3つのアレイ(ルーマおよび2つのクロマ)のうちの1つからのアレイまたは単一のサンプル、あるいはピクチャをモノクロームフォーマットに構成するアレイまたはアレイの単一のサンプルである。いくつかの例では、コーディングブロックは、コーディングブロックへのCTBの分割が区分になるような何らかの値のMとNとについて、サンプルのM×Nブロックである。
【0037】
[0049]ブロック(たとえば、CTUまたはCU)は、ピクチャ中で様々な方法でグループ化され得る。一例として、ブリックは、ピクチャ中の特定のタイル内のCTU行の矩形領域を指し得る。タイルは、ピクチャ中の特定のタイル列および特定のタイル行内のCTUの矩形領域であり得る。タイル列は、ピクチャの高さに等しい高さと、(たとえば、ピクチャパラメータセット中などの)シンタックス要素によって指定された幅とを有するCTUの矩形領域を指す。タイル行は、(たとえば、ピクチャパラメータセット中などの)シンタックス要素によって指定された高さと、ピクチャの幅に等しい幅とを有するCTUの矩形領域を指す。
【0038】
[0050]いくつかの例では、タイルは複数のブリックに区分され得、それらの各々は、タイル内に1つまたは複数のCTU行を含み得る。複数のブリックに区分されないタイルもブリックと呼ばれることがある。しかしながら、タイルの真のサブセットであるブリックは、タイルと呼ばれないことがある。
【0039】
[0051]ピクチャ中のブリックはまた、スライス中に配置され得る。スライスは、もっぱら単一のネットワークアブストラクションレイヤ(NAL)ユニット中に含まれていることがあるピクチャの整数個のブリックであり得る。いくつかの例では、スライスは、いくつかの完全なタイル、または1つのタイルの完全なブリックの連続シーケンスのみのいずれかを含む。
【0040】
[0052]本開示は、垂直寸法と水平寸法とに関して(CUまたは他のビデオブロックなどの)ブロックのサンプル寸法を指すために、「N×N(NxN)」および「N×N(N by N)」、たとえば、16×16サンプル(16x16 samples)または16×16サンプル(16 by 16 samples)を互換的に使用し得る。概して、16×16のCUは、垂直方向に16個のサンプルを有し(y=16)、水平方向に16個のサンプルを有する(x=16)。同様に、N×NのCUは、概して、垂直方向にN個のサンプルを有し、水平方向にN個のサンプルを有し、ここで、Nは非負整数値を表す。CU中のサンプルは、行と列とに配置され得る。その上、CUは、必ずしも、水平方向において垂直方向と同じ数のサンプルを有する必要があるとは限らない。たとえば、CUはN×Mサンプルを備え得、ここで、Mは必ずしもNに等しいとは限らない。
【0041】
[0053]ビデオエンコーダ200は、予測および/または残差情報、ならびに他の情報を表すCUのためにビデオデータを符号化する。予測情報は、CUについて予測ブロックを形成するためにCUがどのように予測されるべきかを示す。残差情報は、概して、符号化より前のCUのサンプルと予測ブロックとの間のサンプルごとの差分を表す。
【0042】
[0054]CUを予測するために、ビデオエンコーダ200は、概して、インター予測またはイントラ予測を通してCUについて予測ブロックを形成し得る。インター予測は、概して、以前にコーディングされたピクチャのデータからCUを予測することを指すが、イントラ予測は、概して、同じピクチャの以前にコーディングされたデータからCUを予測することを指す。インター予測を実施するために、ビデオエンコーダ200は、1つまたは複数の動きベクトルを使用して予測ブロックを生成し得る。ビデオエンコーダ200は、概して、たとえば、CUと参照ブロックとの間の差分に関して、CUにぴったり一致する参照ブロックを識別するために動き探索を実施し得る。ビデオエンコーダ200は、参照ブロックが現在CUにぴったり一致するかどうかを決定するために、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差(MAD)、平均2乗差(MSD)、または他のそのような差分計算を使用して差分メトリックを計算し得る。いくつかの例では、ビデオエンコーダ200は、単方向予測または双方向予測を使用して現在CUを予測し得る。
【0043】
[0055]VVCのいくつかの例はまた、インター予測モードと見なされ得るアフィン動き補償モードを提供する。アフィン動き補償モードでは、ビデオエンコーダ200は、ズームインまたはアウト、回転、パースペクティブの動き、あるいは他の変則の動きタイプなど、非並進の動きを表す2つ以上の動きベクトルを決定し得る。
【0044】
[0056]イントラ予測を実施するために、ビデオエンコーダ200は、予測ブロックを生成するようにイントラ予測モードを選択し得る。VVCのいくつかの例は、様々な方向性モード、ならびに平面モードおよびDCモードを含む、67個のイントラ予測モードを提供する。概して、ビデオエンコーダ200は、現在ブロック(たとえば、CUのブロック)のサンプルをそれから予測すべき、現在ブロックに対する隣接サンプルを記述するイントラ予測モードを選択する。そのようなサンプルは、ビデオエンコーダ200がラスタ走査順序で(左から右に、上から下に)CTUとCUとをコーディングすると仮定すると、概して、現在ブロックと同じピクチャ中の現在ブロックの上、左上、または左にあり得る。
【0045】
[0057]ビデオエンコーダ200は、現在ブロックについて予測モードを表すデータを符号化する。たとえば、インター予測モードでは、ビデオエンコーダ200は、様々な利用可能なインター予測モードのうちのどれが使用されるか、ならびに対応するモードの動き情報を表すデータを符号化し得る。たとえば、単方向または双方向インター予測では、ビデオエンコーダ200は、高度動きベクトル予測(AMVP)またはマージモードを使用して動きベクトルを符号化し得る。ビデオエンコーダ200は、アフィン動き補償モードのための動きベクトルを符号化するために、同様のモードを使用し得る。
【0046】
[0058]ブロックのイントラ予測またはインター予測などの予測に続いて、ビデオエンコーダ200は、ブロックについて残差データを計算し得る。残差ブロックなどの残差データは、ブロックと、対応する予測モードを使用して形成された、ブロックについての予測ブロックとの間の、サンプルごとの差分を表す。ビデオエンコーダ200は、サンプル領域ではなく変換領域中に変換データを作り出すために、残差ブロックに1つまたは複数の変換を適用し得る。たとえば、ビデオエンコーダ200は、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換を残差ビデオデータに適用し得る。さらに、ビデオエンコーダ200は、第1の変換に続いて、モード依存非分離可能2次変換(MDNSST:mode-dependent non-separable secondary transform)、信号依存変換、カルーネンレーベ変換(KLT)などの2次変換を適用し得る。ビデオエンコーダ200は、1つまたは複数の変換の適用に続いて変換係数を作り出す。
【0047】
[0059]上述のように、変換係数を作り出すための任意の変換に続いて、ビデオエンコーダ200は変換係数の量子化を実施し得る。量子化は、概して、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。量子化プロセスを実施することによって、ビデオエンコーダ200は、変換係数の一部または全部に関連付けられたビット深度を低減し得る。たとえば、ビデオエンコーダ200は、量子化中にnビット値をmビット値に丸めることがあり、ここで、nはmよりも大きい。いくつかの例では、量子化を実施するために、ビデオエンコーダ200は、量子化されるべき値のビット単位右シフトを実施し得る。
【0048】
[0060]量子化に続いて、ビデオエンコーダ200は、変換係数を走査して、量子化された変換係数を含む2次元行列から1次元ベクトルを作り出し得る。走査は、より高いエネルギー(したがって、より低い頻度)の変換係数をベクトルの前方に配置し、より低いエネルギー(したがって、より高い頻度)の変換係数をベクトルの後方に配置するように設計され得る。いくつかの例では、ビデオエンコーダ200は、あらかじめ定義された走査順序を利用して、量子化された変換係数を走査してシリアル化されたベクトルを作り出し、次いで、ベクトルの量子化された変換係数をエントロピー符号化し得る。他の例では、ビデオエンコーダ200は適応型走査を実施し得る。量子化された変換係数を走査して1次元ベクトルを形成した後に、ビデオエンコーダ200は、たとえば、コンテキスト適応型バイナリ算術コーディング(CABAC)に従って、1次元ベクトルをエントロピー符号化し得る。ビデオエンコーダ200はまた、ビデオデータを復号する際のビデオデコーダ300による使用のために、符号化されたビデオデータに関連付けられたメタデータを記述するシンタックス要素についての値をエントロピー符号化し得る。
【0049】
[0061]CABACを実施するために、ビデオエンコーダ200は、コンテキストモデル内のコンテキストを、送信されるべきシンボルに割り当て得る。コンテキストは、たとえば、シンボルの隣接値が0値であるか否かに関係し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
【0050】
[0062]ビデオエンコーダ200は、さらに、ブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、およびシーケンスベースのシンタックスデータなどのシンタックスデータを、たとえば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、あるいはシーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、またはビデオパラメータセット(VPS)などの他のシンタックスデータ中で、ビデオデコーダ300に対して生成し得る。ビデオデコーダ300は、対応するビデオデータをどのように復号すべきかを決定するために、そのようなシンタックスデータを同様に復号し得る。
【0051】
[0063]このようにして、ビデオエンコーダ200は、符号化されたビデオデータ、たとえば、ブロック(たとえば、CU)へのピクチャの区分ならびにブロックの予測および/または残差情報を記述するシンタックス要素を含むビットストリームを生成し得る。最終的に、ビデオデコーダ300は、ビットストリームを受信し、符号化されたビデオデータを復号し得る。
【0052】
[0064]概して、ビデオデコーダ300は、ビットストリームの符号化されたビデオデータを復号するために、ビデオエンコーダ200によって実施されたものの逆プロセスを実施する。たとえば、ビデオデコーダ300は、ビデオエンコーダ200のCABAC符号化プロセスと逆ではあるが、それと実質的に同様の様式でCABACを使用してビットストリームのシンタックス要素についての値を復号し得る。シンタックス要素は、CTUのCUを定義するために、ピクチャをCTUに区分するための区分情報と、QTBT構造などの対応する区分構造に従う、各CTUの区分とを定義し得る。シンタックス要素は、ビデオデータのブロック(たとえば、CU)についての予測および残差情報をさらに定義し得る。
【0053】
[0065]残差情報は、たとえば、量子化された変換係数によって表され得る。ビデオデコーダ300は、ブロックのための残差ブロックを再生するために、ブロックの量子化された変換係数を逆量子化し、逆変換し得る。ビデオデコーダ300は、ブロックのための予測ブロックを形成するために、シグナリングされた予測モード(イントラまたはインター予測)と、関連する予測情報(たとえば、インター予測のための動き情報)とを使用する。ビデオデコーダ300は、次いで、元のブロックを再生するために(サンプルごとに)予測ブロックと残差ブロックとを組み合わせ得る。ビデオデコーダ300は、ブロックの境界に沿って視覚的アーティファクトを低減するためにデブロッキングプロセスを実施することなど、追加の処理を実施し得る。
【0054】
[0066]
図2は、たとえば、HEVC、VVC、および他のビデオコーディング規格など、様々なビデオコーディングプロセスのいずれかにおいて使用するのに好適な、ビデオエンコーダパイプラインおよびビデオデコーダパイプラインをもつ量子化器の例示的な一般的な概略図を示す概念図である。詳細には、
図2の例に示されているように、ビデオエンコーダ200は、ビデオフレーム(ピクチャ)150を受信する。ビデオフレーム150の各々の各ブロックについて、ビデオエンコーダ200は、残差データのブロック152を生成し得る。ビデオエンコーダ200は、次いで、変換係数154のブロックを生成するためにブロック152に変換(たとえば、DCT変換)を適用し得る。ビデオエンコーダ200は、変換係数154を走査し得る(156)。ビデオエンコーダ200の量子化器158は、走査された変換係数を量子化し得る。ビデオエンコーダ200は、量子化された変換係数を表すシンタックス要素にエントロピー符号化(160)を適用し得る。
【0055】
[0067]さらに、
図2の例では、ビデオデコーダ300は、量子化された変換係数を決定するために、エントロピー符号化されたシンタックス要素にエントロピー復号(162)を適用し得る。ビデオデコーダ300の量子化解除器164は、量子化された変換係数を量子化解除(すなわち、逆量子化)し、逆量子化された変換係数168を決定するために逆走査166を適用し得る。ビデオデコーダ300は、再構築された変換係数168を決定するために逆変換(たとえば、逆DCT)(169)を適用し得る。ビデオデコーダ300は、次いで、再構築された変換係数168に基づいて、再構築されたブロック170を生成し得る。再構築されたブロック170は、再構築されたフレーム172のセット中の再構築されたフレームの一部を形成し得る。
【0056】
[0068]上述のように、ビデオエンコーダ200は量子化を実施し得る。レートひずみ最適量子化(RDOQ)は、量子化の1つの形式である。RDOQは、H.264/AVS、H.265/HEVC、VP9およびAV1など、最近のビデオ圧縮規格のコーディング性能において重要な役割を果たした。実際には、この方式は、変換係数が、符号化されたビットストリームの大部分をポピュレートするので、ひずみの許容される増加という犠牲を払ってビットレートの著しい低減を生じた。しかしながら、多変量RDOQ目標のために最適化することは、2つの制限、すなわち、第1に、符号化時間において変換係数(TC)ごとに最適量子化レベルを発見するためにあまりに多くのクロックサイクルが必要とされ、第2に、共通のRDOQアルゴリズムが本質的に連続的である、により、ハードウェア上に実装するのに法外に費用がかかった。
【0057】
[0069]本開示は、単一のフォワードパスにおいて多くの変換係数についての量子化レベルを推論し、さらに、多くのブロックについての推論を並列化する、すなわち、複数のブロックについての量子化レベルを並列に推論することが可能である、ニューラルネットワークベースの手法の使用によって、これらの制限の両方に対処し得る。本開示の手法は、オフライン教師ありトレーニング中にレートとひずみとのトレードオフを図ることを学習する。いくつかの例では、本開示は、既存のグラフィカル処理ユニット(GPU)またはニューラル処理ユニット(NPU)上で稼働する標準ネットワーク動作のみに基づく。したがって、いくつかの例では、追加のエリアオンチップ(area-on-chip)が専用RDOQ回路として確保される必要がない。
【0058】
[0070]本開示の技法によれば、デバイスなどのコンピューティングシステムが、ニューラルネットワーク(たとえば、完全ニューラル畳み込みネットワークおよび自己回帰モデル)の1つまたは複数のクラスをトレーニングし得、スカラー量子化(SQ)などの量子化方式を改善するように設計されたポスト量子化ステップとして各々を評価し得る。スカラー量子化は、形式
【0059】
【0060】
のものであり得、ここで、xは変換係数であり、sはステップサイズである。いくつかの例では、スカラー量子化は、形式
【0061】
【0062】
のものであり得、ここで、xは変換係数であり、sはステップサイズであり、εは量子化オフセットパラメータである。さらに、本開示は、高品質ラベルを集めるためのデータ収集アルゴリズムについて説明する。完全畳み込みモデルと自己回帰モデルの両方が、低い計算コストを有するように設計され得る。本開示は、それらのモデルを、HEVC参照モデル(HM)、または多用途ビデオコーディング(VVC)などの他のビデオコーディング規格のためのモデルに組み込む。
【0063】
[0071]本開示の技法によれば、ビデオエンコーダ200は、スケーリングされた変換係数を決定し得る。スケーリングされた変換係数を決定することは、所与の量子化ステップに従ってビデオデータのブロックの変換係数をスケーリングすることを含み得る。さらに、ビデオエンコーダ200は、スカラー量子化された係数を決定し得る。スカラー量子化された係数を決定することは、ブロックのスケーリングされた変換係数にスカラー量子化を適用することを含み得る。その後、ビデオエンコーダ200は、ブロックの各それぞれの変換係数についての確率のそれぞれのセットを決定するニューラルネットワークを適用し得る。それぞれの変換係数についての確率のそれぞれのセットは、複数の可能な調整値中の各可能な調整値についてのそれぞれの確率値を含む。ニューラルネットワークへの入力が、スケーリングされた変換係数とスカラー量子化された係数とを含む。さらに、ビデオエンコーダ200は、ブロックの特定の変換係数についての確率のセットに基づいて、特定の変換係数についての量子化レベルを決定し得る。ビデオエンコーダ200は、ビデオデータの符号化された表現を含むビットストリーム中で、特定の変換係数についての決定された量子化レベルをシグナリングし得る。
【0064】
[0072]本開示は、概して、シンタックス要素などのある情報を「シグナリング」することに言及することがある。「シグナリング」という用語は、概して、符号化されたビデオデータを復号するために使用されるシンタックス要素および/または他のデータについての値の通信を指し得る。すなわち、ビデオエンコーダ200は、ビットストリームにおいてシンタックス要素についての値をシグナリングし得る。概して、シグナリングは、ビットストリームにおいて値を生成することを指す。上述のように、ソースデバイス102は、実質的にリアルタイムでビットストリームを宛先デバイス116に移送するか、または、宛先デバイス116による後の取出しのためにシンタックス要素を記憶デバイス112に記憶するときに行われ得るように、非リアルタイムでビットストリームを宛先デバイス116に移送し得る。
【0065】
[0073]
図3は、本開示の技法を実施し得る例示的なビデオエンコーダ200を示すブロック図である。
図3は、説明の目的で提供されており、本開示において広く例示され、説明される技法を限定するものと見なされるべきではない。説明の目的で、本開示は、VVC(開発中のITU-T H.266)、およびHEVC(ITU-T H.265)の技法に従って、ビデオエンコーダ200について説明する。しかしながら、本開示の技法は、他のビデオコーディング規格に構成されたビデオ符号化デバイスによって実施され得る。
【0066】
[0074]
図3の例では、ビデオエンコーダ200は、ビデオデータメモリ230と、モード選択ユニット202と、残差生成ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構築ユニット214と、フィルタユニット216と、復号ピクチャバッファ(DPB)218と、エントロピー符号化ユニット220とを含む。さらに、
図3の例では、量子化ユニット208は、ニューラルネットワーク211を含む量子化ユニット208を含む。ビデオデータメモリ230と、モード選択ユニット202と、残差生成ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構築ユニット214と、フィルタユニット216と、DPB218と、エントロピー符号化ユニット220と、量子化ユニット208と、ニューラルネットワーク211とのいずれかまたはすべては、1つまたは複数のプロセッサにおいてまたは処理回路において実装され得る。たとえば、ビデオエンコーダ200のユニットは、1つまたは複数の回路または論理要素として、ハードウェア回路の一部として、あるいはFPGAのプロセッサ、ASICの一部として実装され得る。その上、ビデオエンコーダ200は、これらおよび他の機能を実施するための追加または代替のプロセッサまたは処理回路を含み得る。
【0067】
[0075]ビデオデータメモリ230は、ビデオエンコーダ200の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオエンコーダ200は、たとえば、ビデオソース104(
図1)から、ビデオデータメモリ230に記憶されたビデオデータを受信し得る。DPB218は、ビデオエンコーダ200による後続のビデオデータの予測において使用するための参照ビデオデータを記憶する参照ピクチャメモリとして働き得る。ビデオデータメモリ230とDPB218とは、同期ダイナミックランダムアクセスメモリ(DRAM)(SDRAM)を含むDRAM、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ230とDPB218とは、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ230は、図示のように、ビデオエンコーダ200の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【0068】
[0076]本開示では、ビデオデータメモリ230への言及は、特にそのように説明されない限り、ビデオエンコーダ200の内部のメモリに限定されるものとして解釈されるべきではなく、または特にそのように説明されない限り、ビデオエンコーダ200の外部のメモリに限定されるものとして解釈されるべきではない。そうではなく、ビデオデータメモリ230への言及は、ビデオエンコーダ200が符号化のために受信するビデオデータ(たとえば、符号化されるべきである現在ブロックのためのビデオデータ)を記憶する参照メモリとして理解されるべきである。
図1のメモリ106はまた、ビデオエンコーダ200の様々なユニットからの出力の一時的記憶を提供し得る。
【0069】
[0077]
図3の様々なユニットは、ビデオエンコーダ200によって実施される動作を理解するのを支援するために示されている。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。固定機能回路は、特定の機能を提供する回路を指し、実施され得る動作に関してプリセットされる。プログラマブル回路は、様々なタスクを実施するように、および実施され得る動作においてフレキシブルな機能を提供するようにプログラムされ得る回路を指す。たとえば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義される様式でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(たとえば、パラメータを受信するかまたはパラメータを出力するために)ソフトウェア命令を実行し得るが、固定機能回路が実施する動作のタイプは、概して不変である。いくつかの例では、ユニットのうちの1つまたは複数は、別個の回路ブロック(固定機能またはプログラマブル)であり得、いくつかの例では、ユニットのうちの1つまたは複数は、集積回路であり得る。
【0070】
[0078]ビデオエンコーダ200は、算術論理ユニット(ALU)、基本機能ユニット(EFU)、デジタル回路、アナログ回路、および/またはプログラマブル回路から形成されるプログラマブルコアを含み得る。ビデオエンコーダ200の動作が、プログラマブル回路によって実行されるソフトウェアを使用して実施される例では、メモリ106(
図1)は、ビデオエンコーダ200が受信し、実行するソフトウェアの命令(たとえば、オブジェクトコード)を記憶し得るか、またはビデオエンコーダ200内の別のメモリ(図示せず)が、そのような命令を記憶し得る。
【0071】
[0079]ビデオデータメモリ230は、受信されたビデオデータを記憶するように構成される。ビデオエンコーダ200は、ビデオデータメモリ230からビデオデータのピクチャを取り出し、ビデオデータを残差生成ユニット204とモード選択ユニット202とに提供し得る。ビデオデータメモリ230中のビデオデータは、符号化されるべきである生のビデオデータであり得る。
【0072】
[0080]モード選択ユニット202は、動き推定ユニット222と、動き補償ユニット224と、イントラ予測ユニット226とを含む。モード選択ユニット202は、他の予測モードに従ってビデオ予測を実施するための追加の機能ユニットを含み得る。例として、モード選択ユニット202は、パレットユニット、(動き推定ユニット222および/または動き補償ユニット224の一部であり得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。
【0073】
[0081]モード選択ユニット202は、概して、符号化パラメータの組合せと、そのような組合せについての得られたレートひずみ値とをテストするために、複数の符号化パスを協調させる。符号化パラメータは、CUへのCTUの区分、CUのための予測モード、CUの残差データのための変換タイプ、CUの残差データのための量子化パラメータなどを含み得る。モード選択ユニット202は、他のテストされた組合せよりも良好であるレートひずみ値を有する符号化パラメータの組合せを最終的に選択し得る。
【0074】
[0082]ビデオエンコーダ200は、ビデオデータメモリ230から取り出されたピクチャを一連のCTUに区分し、スライス内の1つまたは複数のCTUをカプセル化し得る。モード選択ユニット202は、上記で説明されたHEVCのQTBT構造またはクワッドツリー構造など、ツリー構造に従ってピクチャのCTUを区分し得る。上記で説明されたように、ビデオエンコーダ200は、ツリー構造に従ってCTUを区分することから1つまたは複数のCUを形成し得る。そのようなCUは、概して「ビデオブロック」または「ブロック」と呼ばれることもある。
【0075】
[0083]概して、モード選択ユニット202はまた、現在ブロック(たとえば、現在CUまたはHEVCでは、PUとTUとの重複する部分)のための予測ブロックを生成するように、それの構成要素(たとえば、動き推定ユニット222、動き補償ユニット224、およびイントラ予測ユニット226)を制御する。現在ブロックのインター予測のために、動き推定ユニット222は、1つまたは複数の参照ピクチャ(たとえば、DPB218に記憶された1つまたは複数の以前にコーディングされたピクチャ)中で1つまたは複数のぴったり一致する参照ブロックを識別するために動き探索を実施し得る。特に、動き推定ユニット222は、たとえば、絶対差分和(SAD)、2乗差分和(SSD)、平均絶対差(MAD)、平均2乗差(MSD)などに従って、現在ブロックに対して潜在的参照ブロックがどのくらい類似しているかを表す値を計算し得る。動き推定ユニット222は、概して、現在ブロックと考慮されている参照ブロックとの間のサンプルごとの差分を使用してこれらの計算を実施し得る。動き推定ユニット222は、現在ブロックに最もぴったり一致する参照ブロックを示す、これらの計算から得られた最も低い値を有する参照ブロックを識別し得る。
【0076】
[0084]動き推定ユニット222は、現在ピクチャ中の現在ブロックの位置に対して参照ピクチャ中の参照ブロックの位置を定義する1つまたは複数の動きベクトル(MV)を形成し得る。動き推定ユニット222は、次いで、動きベクトルを動き補償ユニット224に提供し得る。たとえば、単方向インター予測では、動き推定ユニット222は、単一の動きベクトルを提供し得るが、双方向インター予測では、動き推定ユニット222は、2つの動きベクトルを提供し得る。動き補償ユニット224は、次いで、動きベクトルを使用して予測ブロックを生成し得る。たとえば、動き補償ユニット224は、動きベクトルを使用して参照ブロックのデータを取り出し得る。別の例として、動きベクトルが部分サンプル精度を有する場合、動き補償ユニット224は、1つまたは複数の補間フィルタに従って予測ブロックについての値を補間し得る。その上、双方向インター予測では、動き補償ユニット224は、それぞれの動きベクトルによって識別された2つの参照ブロックのためのデータを取り出し、たとえば、サンプルごとの平均化または重み付け平均化を通して取り出されたデータを組み合わせ得る。
【0077】
[0085]別の例として、イントラ予測、またはイントラ予測コーディングのために、イントラ予測ユニット226は、現在ブロックに隣接しているサンプルから予測ブロックを生成し得る。たとえば、方向性モードでは、イントラ予測ユニット226は、概して、予測ブロックを作り出すために、隣接サンプルの値を数学的に組み合わせ、現在ブロックにわたって規定の方向にこれらの計算された値をポピュレートし得る。別の例として、DCモードでは、イントラ予測ユニット226は、現在ブロックに対する隣接サンプルの平均を計算し、予測ブロックのサンプルごとにこの得られた平均を含むように予測ブロックを生成し得る。
【0078】
[0086]モード選択ユニット202は、予測ブロックを残差生成ユニット204に提供する。残差生成ユニット204は、ビデオデータメモリ230から現在ブロックの生の符号化されていないバージョンを受信し、モード選択ユニット202から予測ブロックを受信する。残差生成ユニット204は、現在ブロックと予測ブロックとの間のサンプルごとの差分を計算する。得られたサンプルごとの差分は、現在ブロックのための残差ブロックを定義する。いくつかの例では、残差生成ユニット204はまた、残差差分パルスコード変調(RDPCM)を使用して残差ブロックを生成するために、残差ブロック中のサンプル値間の差分を決定し得る。いくつかの例では、残差生成ユニット204は、バイナリ減算を実施する1つまたは複数の減算器回路を使用して形成され得る。
【0079】
[0087]モード選択ユニット202がCUをPUに区分する例では、各PUは、ルーマ予測ユニットと、対応するクロマ予測ユニットとに関連付けられ得る。ビデオエンコーダ200とビデオデコーダ300とは、様々なサイズを有するPUをサポートし得る。上記で示されたように、CUのサイズは、CUのルーマコーディングブロックのサイズを指し得、PUのサイズは、PUのルーマ予測ユニットのサイズを指し得る。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ200は、イントラ予測のための2N×2NまたはN×NのPUサイズと、インター予測のための2N×2N、2N×N、N×2N、N×N、または同様のものの対称PUサイズとをサポートし得る。ビデオエンコーダ200とビデオデコーダ300とはまた、インター予測のための2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズの非対称区分をサポートし得る。
【0080】
[0088]モード選択ユニット202がCUをPUにさらに区分しない例では、各CUは、ルーマコーディングブロックと、対応するクロマコーディングブロックとに関連付けられ得る。上記のように、CUのサイズは、CUのルーマコーディングブロックのサイズを指し得る。ビデオエンコーダ200とビデオデコーダ300とは、2N×2N、2N×N、またはN×2NのCUサイズをサポートし得る。
【0081】
[0089]いくつかの例として、イントラブロックコピーモードコーディング、アフィンモードコーディング、および線形モデル(LM)モードコーディングなどの他のビデオコーディング技法では、モード選択ユニット202は、コーディング技法に関連付けられたそれぞれのユニットを介して、符号化されている現在ブロックのための予測ブロックを生成する。パレットモードコーディングなど、いくつかの例では、モード選択ユニット202は、予測ブロックを生成せず、代わりに、選択されたパレットに基づいてブロックを再構築すべき様式を示すシンタックス要素を生成し得る。そのようなモードでは、モード選択ユニット202は、符号化されるべきこれらのシンタックス要素をエントロピー符号化ユニット220に提供し得る。
【0082】
[0090]上記で説明されたように、残差生成ユニット204は、現在ブロックのためのビデオデータと、対応する予測ブロックとを受信する。残差生成ユニット204は、次いで、現在ブロックのための残差ブロックを生成する。残差ブロックを生成するために、残差生成ユニット204は、予測ブロックと現在ブロックとの間のサンプルごとの差分を計算する。
【0083】
[0091]変換処理ユニット206は、(本明細書では「変換係数ブロック」と呼ばれる)変換係数のブロックを生成するために、残差ブロックに1つまたは複数の変換を適用する。変換処理ユニット206は、変換係数ブロックを形成するために、残差ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット206は、離散コサイン変換(DCT)、方向性変換、カルーネンレーベ変換(KLT)、または概念的に同様の変換を残差ブロックに適用し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに複数の変換、たとえば、回転変換などの1次変換および2次変換を実施し得る。いくつかの例では、変換処理ユニット206は、残差ブロックに変換を適用しない。
【0084】
[0092]量子化ユニット208は、量子化された変換係数ブロックを作り出すために、変換係数ブロック中の変換係数を量子化し得る。量子化ユニット208は、現在ブロックに関連付けられた量子化パラメータ(QP)値に従って変換係数ブロックの変換係数を量子化し得る。ビデオエンコーダ200は(たとえば、モード選択ユニット202を介して)、CUに関連付けられたQP値を調整することによって、現在ブロックに関連付けられた変換係数ブロックに適用される量子化の程度を調整し得る。量子化は、情報の損失をもたらし得、したがって、量子化された変換係数は、変換処理ユニット206によって作り出された元の変換係数よりも低い精度を有し得る。
【0085】
[0093]本開示の1つまたは複数の技法によれば、量子化ユニット208の量子化ユニット208は、スケーリングされた変換係数を決定し得る。スケーリングされた変換係数を決定することは、所与の量子化ステップに従ってビデオデータのブロックの変換係数をスケーリングすることを備え得る。さらに、量子化ユニット208は、スカラー量子化された係数を決定し得る。スカラー量子化された係数を決定することは、ブロックのスケーリングされた変換係数にスカラー量子化を適用することを備え得る。さらに、量子化ユニット208は、ブロックの各それぞれの変換係数についての確率のそれぞれのセットを決定するためにニューラルネットワーク211を適用し得る。それぞれの変換係数についての確率のそれぞれのセットは、複数の可能な調整値中の各可能な調整値についてのそれぞれの確率値を含む。ニューラルネットワーク211への入力が、スケーリングされた変換係数とスカラー量子化された係数とを含み得る。量子化ユニット208は、ブロックの特定の変換係数についての確率のセットに基づいて、特定の変換係数についての量子化レベルを決定し得る。
【0086】
[0094]逆量子化ユニット210および逆変換処理ユニット212は、変換係数ブロックから残差ブロックを再構築するために、それぞれ、量子化された変換係数ブロックに逆量子化および逆変換を適用し得る。再構築ユニット214は、再構築された残差ブロックと、モード選択ユニット202によって生成された予測ブロックとに基づいて、(潜在的にある程度のひずみを伴うが)現在ブロックに対応する再構築されたブロックを作り出し得る。たとえば、再構築ユニット214は、再構築されたブロックを作り出すために、モード選択ユニット202によって生成された予測ブロックからの対応するサンプルに、再構築された残差ブロックのサンプルを加算し得る。
【0087】
[0095]フィルタユニット216は、再構築されたブロックに対して1つまたは複数のフィルタ演算を実施し得る。たとえば、フィルタユニット216は、CUのエッジに沿ってブロッキネスアーティファクトを低減するためのデブロッキング動作を実施し得る。フィルタユニット216の動作は、いくつかの例では、スキップされ得る。
【0088】
[0096]ビデオエンコーダ200は、再構築されたブロックをDPB218に記憶する。たとえば、フィルタユニット216の動作が必要とされない例では、再構築ユニット214は、再構築されたブロックをDPB218に記憶し得る。フィルタユニット216の動作が必要とされる例では、フィルタユニット216は、フィルタ処理された再構築されたブロックをDPB218に記憶し得る。動き推定ユニット222と動き補償ユニット224とは、後で符号化されるピクチャのブロックをインター予測するために、再構築(および潜在的にフィルタ処理)されたブロックから形成された参照ピクチャをDPB218から取り出し得る。さらに、イントラ予測ユニット226は、現在ピクチャ中の他のブロックをイントラ予測するために、現在ピクチャのDPB218中の再構築されたブロックを使用し得る。
【0089】
[0097]概して、エントロピー符号化ユニット220は、ビデオエンコーダ200の他の機能構成要素から受信されたシンタックス要素をエントロピー符号化し得る。たとえば、エントロピー符号化ユニット220は、量子化ユニット208からの量子化された変換係数ブロックをエントロピー符号化し得る。別の例として、エントロピー符号化ユニット220は、モード選択ユニット202からの予測シンタックス要素(たとえば、インター予測のための動き情報またはイントラ予測のためのイントラモード情報)をエントロピー符号化し得る。エントロピー符号化ユニット220は、エントロピー符号化されたデータを生成するために、ビデオデータの別の例であるシンタックス要素に対して1つまたは複数のエントロピー符号化動作を実施し得る。たとえば、エントロピー符号化ユニット220は、コンテキスト適応型可変長コーディング(CAVLC)動作、CABAC動作、可変対可変(V2V)長コーディング動作、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)動作、確率間隔区分エントロピー(PIPE)コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作をデータに対して実施し得る。いくつかの例では、エントロピー符号化ユニット220は、シンタックス要素がエントロピー符号化されないバイパスモードで動作し得る。
【0090】
[0098]ビデオエンコーダ200は、スライスまたはピクチャのブロックを再構築するために必要とされるエントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。特に、エントロピー符号化ユニット220がビットストリームを出力し得る。
【0091】
[0099]上記で説明された動作は、ブロックに関して説明されている。そのような説明は、ルーマコーディングブロックおよび/またはクロマコーディングブロックのための動作であるものとして理解されるべきである。上記で説明されたように、いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、CUのルーマ成分およびクロマ成分である。いくつかの例では、ルーマコーディングブロックおよびクロマコーディングブロックは、PUのルーマ成分およびクロマ成分である。
【0092】
[0100]いくつかの例では、ルーマコーディングブロックに関して実施される動作は、クロマコーディングブロックのために繰り返される必要はない。一例として、ルーマコーディングブロックのための動きベクトル(MV)と参照ピクチャとを識別するための動作は、クロマブロックのためのMVと参照ピクチャとを識別するために繰り返される必要はない。むしろ、ルーマコーディングブロックのためのMVは、クロマブロックのためのMVを決定するためにスケーリングされ得、参照ピクチャは同じであり得る。別の例として、イントラ予測プロセスは、ルーマコーディングブロックおよびクロマコーディングブロックについて同じであり得る。
【0093】
[0101]このようにして、ビデオエンコーダ200は、ビデオデータを記憶するように構成されたメモリと、回路中に実装された1つまたは複数の処理ユニットとを含む、ビデオデータを符号化するように構成されたデバイスの一例を表し、1つまたは複数の処理ユニットは、スケーリングされた変換係数を決定することと、ここにおいて、スケーリングされた変換係数を決定することが、所与の量子化ステップに従ってビデオデータのブロックの変換係数をスケーリングすることを備える、スカラー量子化された係数を決定することと、ここにおいて、スカラー量子化された係数を決定することが、ブロックのスケーリングされた変換係数にスカラー量子化を適用することを備える、ブロックの各それぞれの変換係数についての確率のそれぞれのセットを決定するニューラルネットワークを適用することと、ここにおいて、それぞれの変換係数についての確率のそれぞれのセットが、複数の可能な調整値中の各可能な調整値についてのそれぞれの確率値を含み、ニューラルネットワークへの入力が、スケーリングされた変換係数とスカラー量子化された係数とを含む、ブロックの特定の変換係数についての確率のセットに基づいて、特定の変換係数についての量子化レベルを決定することと、ビデオデータの符号化された表現を含むビットストリーム中で、特定の変換係数についての決定された量子化レベルをシグナリングすることとを行うように構成される。
【0094】
[0102]
図4は、本開示の技法を実施し得る例示的なビデオデコーダ300を示すブロック図である。
図4は、説明の目的で提供されており、本開示において広く例示され、説明される技法を限定するものではない。説明の目的で、本開示は、VVC(開発中のITU-T H.266)、およびHEVC(ITU-T H.265)の技法に従って、ビデオデコーダ300について説明する。しかしながら、本開示の技法は、他のビデオコーディング規格に構成されたビデオコーディングデバイスによって実施され得る。
【0095】
[0103]
図4の例では、ビデオデコーダ300は、コード化ピクチャバッファ(CPB)メモリ320と、エントロピー復号ユニット302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312と、復号ピクチャバッファ(DPB)314とを含む。CPBメモリ320と、エントロピー復号ユニット302と、予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312と、DPB314とのいずれかまたはすべては、1つまたは複数のプロセッサにおいてまたは処理回路において実装され得る。たとえば、ビデオデコーダ300のユニットは、1つまたは複数の回路または論理要素として、ハードウェア回路の一部として、あるいはFPGAのプロセッサ、ASICの一部として実装され得る。その上、ビデオデコーダ300は、これらおよび他の機能を実施するための追加または代替のプロセッサまたは処理回路を含み得る。
【0096】
[0104]予測処理ユニット304は、動き補償ユニット316と、イントラ予測ユニット318とを含む。予測処理ユニット304は、他の予測モードに従って予測を実施するための追加のユニットを含み得る。例として、予測処理ユニット304は、パレットユニット、(動き補償ユニット316の一部を形成し得る)イントラブロックコピーユニット、アフィンユニット、線形モデル(LM)ユニットなどを含み得る。他の例では、ビデオデコーダ300は、より多数の、より少数の、または異なる機能構成要素を含み得る。
【0097】
[0105]CPBメモリ320は、ビデオデコーダ300の構成要素によって復号されるべき、符号化されたビデオビットストリームなどのビデオデータを記憶し得る。CPBメモリ320に記憶されるビデオデータは、たとえば、コンピュータ可読媒体110(
図1)から取得され得る。CPBメモリ320は、符号化されたビデオビットストリームからの符号化されたビデオデータ(たとえば、シンタックス要素)を記憶するCPBを含み得る。また、CPBメモリ320は、ビデオデコーダ300の様々なユニットからの出力を表す一時データなど、コーディングされたピクチャのシンタックス要素以外のビデオデータを記憶し得る。DPB314は、概して、符号化されたビデオビットストリームの後続のデータまたはピクチャを復号するときにビデオデコーダ300が参照ビデオデータとして出力および/または使用し得る復号されたピクチャを記憶する。CPBメモリ320とDPB314とは、SDRAMを含むDRAM、MRAM、RRAM、または他のタイプのメモリデバイスなど、様々なメモリデバイスのいずれかによって形成され得る。CPBメモリ320とDPB314とは、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、CPBメモリ320は、ビデオデコーダ300の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【0098】
[0106]追加または代替として、いくつかの例では、ビデオデコーダ300は、メモリ120(
図1)からコーディングされたビデオデータを取り出し得る。すなわち、メモリ120は、CPBメモリ320とともに上記で説明されたようにデータを記憶し得る。同様に、メモリ120は、ビデオデコーダ300の機能の一部または全部が、ビデオデコーダ300の処理回路によって実行されるべきソフトウェアにおいて実装されたとき、ビデオデコーダ300によって実行されるべき命令を記憶し得る。
【0099】
[0107]
図4に示されている様々なユニットは、ビデオデコーダ300によって実施される動作を理解するのを支援するために示されている。ユニットは、固定機能回路、プログラマブル回路、またはそれらの組合せとして実装され得る。
図3と同様に、固定機能回路は、特定の機能を提供する回路を指し、実施され得る動作に関してプリセットされる。プログラマブル回路は、様々なタスクを実施するように、および実施され得る動作においてフレキシブルな機能を提供するようにプログラムされ得る回路を指す。たとえば、プログラマブル回路は、ソフトウェアまたはファームウェアの命令によって定義される様式でプログラマブル回路を動作させるソフトウェアまたはファームウェアを実行し得る。固定機能回路は、(たとえば、パラメータを受信するかまたはパラメータを出力するために)ソフトウェア命令を実行し得るが、固定機能回路が実施する動作のタイプは、概して不変である。いくつかの例では、ユニットのうちの1つまたは複数は、別個の回路ブロック(固定機能またはプログラマブル)であり得、いくつかの例では、ユニットのうちの1つまたは複数は、集積回路であり得る。
【0100】
[0108]ビデオデコーダ300は、ALU、EFU、デジタル回路、アナログ回路、および/またはプログラマブル回路から形成されるプログラマブルコアを含み得る。ビデオデコーダ300の動作が、プログラマブル回路上で実行するソフトウェアによって実施される例では、オンチップまたはオフチップメモリは、ビデオデコーダ300が受信し、実行するソフトウェアの命令(たとえば、オブジェクトコード)を記憶し得る。
【0101】
[0109]エントロピー復号ユニット302は、CPBから符号化されたビデオデータを受信し、シンタックス要素を再生するためにビデオデータをエントロピー復号し得る。予測処理ユニット304と、逆量子化ユニット306と、逆変換処理ユニット308と、再構築ユニット310と、フィルタユニット312とは、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成し得る。
【0102】
[0110]概して、ビデオデコーダ300は、ブロックごとにピクチャを再構築する。ビデオデコーダ300は、各ブロックに対して個々に再構築演算を実施し得る(ここで、現在再構築されているブロック、すなわち、現在復号されているブロックは、「現在ブロック」と呼ばれることがある)。
【0103】
[0111]エントロピー復号ユニット302は、量子化された変換係数ブロックの量子化された変換係数を定義するシンタックス要素、ならびに量子化パラメータ(QP)および/または(1つまたは複数の)変換モード指示などの変換情報をエントロピー復号し得る。逆量子化ユニット306は、量子化の程度と、同様に、逆量子化ユニット306が適用すべき逆量子化の程度とを決定するために、量子化された変換係数ブロックに関連付けられたQPを使用し得る。逆量子化ユニット306は、量子化された変換係数を逆量子化するために、たとえば、ビット単位の左シフト演算を実施し得る。逆量子化ユニット306は、それにより、変換係数を含む変換係数ブロックを形成し得る。
【0104】
[0112]逆量子化ユニット306が変換係数ブロックを形成した後に、逆変換処理ユニット308は、現在ブロックに関連付けられた残差ブロックを生成するために、変換係数ブロックに1つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット308は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を変換係数ブロックに適用し得る。
【0105】
[0113]さらに、予測処理ユニット304は、エントロピー復号ユニット302によってエントロピー復号された予測情報シンタックス要素に従って予測ブロックを生成する。たとえば、予測情報シンタックス要素が、現在ブロックがインター予測されることを示す場合、動き補償ユニット316は、予測ブロックを生成し得る。この場合、予測情報シンタックス要素は、参照ブロックをそれから取り出すべきDPB314中の参照ピクチャ、ならびに現在ピクチャ中の現在ブロックのロケーションに対する参照ピクチャ中の参照ブロックのロケーションを識別する動きベクトルを示し得る。動き補償ユニット316は、概して、動き補償ユニット224(
図3)に関して説明されたものと実質的に同様である様式で、インター予測プロセスを実施し得る。
【0106】
[0114]別の例として、予測情報シンタックス要素が、現在ブロックがイントラ予測されることを示す場合、イントラ予測ユニット318は、予測情報シンタックス要素によって示されるイントラ予測モードに従って予測ブロックを生成し得る。この場合も、イントラ予測ユニット318は、概して、イントラ予測ユニット226(
図3)に関して説明されたものと実質的に同様である様式で、イントラ予測プロセスを実施し得る。イントラ予測ユニット318は、DPB314から、現在ブロックに対する隣接サンプルのデータを取り出し得る。
【0107】
[0115]再構築ユニット310は、予測ブロックと残差ブロックとを使用して現在ブロックを再構築し得る。たとえば、再構築ユニット310は、現在ブロックを再構築するために、予測ブロックの対応するサンプルに残差ブロックのサンプルを加算し得る。
【0108】
[0116]フィルタユニット312は、再構築されたブロックに対して1つまたは複数のフィルタ演算を実施し得る。たとえば、フィルタユニット312は、再構築されたブロックのエッジに沿ってブロッキネスアーティファクトを低減するためのデブロッキング動作を実施し得る。フィルタユニット312の動作は、必ずしもすべての例において実施されるとは限らない。
【0109】
[0117]ビデオデコーダ300は、再構築されたブロックをDPB314に記憶し得る。たとえば、フィルタユニット312の動作が実施されない例では、再構築ユニット310は、再構築されたブロックをDPB314に記憶し得る。フィルタユニット312の動作が実施される例では、フィルタユニット312は、フィルタ処理された再構築されたブロックをDPB314に記憶し得る。上記で説明されたように、DPB314は、イントラ予測のための現在ピクチャのサンプル、および後続の動き補償のための以前に復号されたピクチャなど、参照情報を、予測処理ユニット304に提供し得る。その上、ビデオデコーダ300は、DPB314からの復号されたピクチャ(たとえば、復号されたビデオ)を、
図1のディスプレイデバイス118などのディスプレイデバイス上での後続の提示のために、出力し得る。
【0110】
[0118]量子化は、ビデオコーディングパイプラインの一部である。いくつかの例では、量子化は、情報の損失が起こるコーディングパイプラインにおける唯一のステップである。現在、ビデオコーディング実装形態は、貪欲探索法(greedy search method)またはヒューリスティックを使用して量子化決定を行い得る。係数を、シフトし、および/またはスケーリングし、最も近い整数値に丸めることによって、丸め得る、スカラー量子化を使用して、初期量子化値が決定される。これらの量子化された値を摂動させることによって、レート(信号を送信するために必要とされるビット数)とひずみ(再構築された信号の品質損失)とのトレードオフを図ることが可能である。十分な時間が与えられれば、全数探索は、あるトレードオフパラメータλについて最適である量子化値のパレートフロント(Pareto front)を見つけることができる。しかしながら、実際には、この探索をオンラインで実施することは実現可能でないことがある。本開示は、ニューラルネットワーク(たとえば、ニューラルネットワーク211)をトレーニングし、全数探索によって作り出された量子化値を出力することを提案する。
【0111】
[0119]RDOQの旧来の手法は、高い計算複雑さを伴う探索アルゴリズムを使用する。これらのソリューションは、フレームレート制限と限られたエリアオンチップとにより、システムオンチップハードウェア上でのリアルタイムビデオコーディングについて実現可能でないことがある。変換係数のブロックの(たとえば、ローカルに)最適な量子化レベルを決定するために、探索アルゴリズムは、ピクセルごとに少なくともいくつかの異なる量子化レベルを試み、最良のものをリアルタイムで選択しなければならない。HMと呼ばれるHEVCのオープンソース参照実装は、貪欲RDOQアルゴリズムを実装する(たとえば、M.Karczewicz、Y.Yan、I.Chong、「Rate distortion optimized quantization」、ITU-T SG16 Q.6のビデオコーディングエキスパートグループ(VCEG)}、VCG-AH21、2008年参照。本開示で説明される手法は、ニューラルネットワーク211の単一のフォワードパスを用いて、多くの変換係数ブロックについての量子化レベルを並列に推論することが可能であり得るように、ニューラルネットワーク211を介して探索アルゴリズムを学習するために深層学習を使用する。これは、ニューラルネットワークの並列化能力と、旧来の方法よりも速い推論の実施とを活用することによって、加速されたRDOQ推論を可能にし得る。専用ニューラル処理ユニット(またはAIプロセッサ)をもつシステムオンチップ(SoC)の場合、ビデオエンコーダ200によって使用されるニューラルネットワーク211の実装は、追加のエリアオンチップを必要としない。ニューラルネットワーク211は、ラベリングされたデータセットを使用して教師あり様式においてオフラインでトレーニングされ得る。ニューラルネットワーク211は、入力XおよびラベルYとして編成され得、ここで、入力Xを見ると、ニューラルネットワーク211は、Yを予測するようにトレーニングされる。本開示では、Xは、スケーリングされた変換係数と、対応するスカラー量子化された変換係数とを含んでいる。ラベルYを収集するために、RDOQアルゴリズムは、RDOQ量子化された変換係数を決定するために使用され得、Yは、スカラー量子化された変換係数とRDOQ量子化された変換係数との間の差分である。
【0112】
[0120]チップ設計における最近の開発は、ニューラルネットワーク推論のための専用構成要素の統合である。ニューラルネットワークがドメイン固有アルゴリズムとともにまたはそれの代わりに使用される場合、ニューラル処理ユニット(NPU)が、システムオンチップ(SoC)上に旧来存在する異なるドメインのための特殊化されたハードウェアの必要をなくし得る。たとえば、一般に高品質画像処理のために必要とされる画像信号プロセッサ(ISP)パイプラインが、ニューラルネットワークと完全に置き換えられる過程にある(または、ニューラルネットワークと置き換えられ得る構成要素を有する)(E.Schwartz、R.Giryes、およびA.M.Bronstein、「DeepISP: Toward learning an end-to-end image processing pipeline」、IEEE Transactions on Image Processing、vol.28、no.2、912~923ページ、2018年参照)。これは、特殊化されたISPハードウェアがチップ上のかなりの量の面積を確保するので、ハードウェア設計の観点からの傾向である。さらに、NPUの電力消費を最適化することに向けられるリソースは、今や、ISPパイプラインだけでなく、NPUを使用するすべての他のプロセスに利益を与える。
【0113】
[0121]同様に、一般にHEVCと呼ばれる、最近のビデオ圧縮規格H.265(G.J.Sullivan、J.Ohm、W.Han、およびT.Wiegand、「Overview of the high efficiency video coding (HEVC) standard」、IEEE Transactions on Circuits and Systems for Video Technology、vol.22、no.12、1649~1668ページ、2012年参照)は、特殊化されたハードウェアにおいて実装され得る。前の作業は、深層学習を使用するHEVC規格の構成要素、たとえば、フレーム内予測モード決定(T.LaudeおよびJ.Ostermann、「Deep learning-based intra prediction mode decision for HEVC」、2016 Picture Coding Symposium(PCS)、IEEE、2016年、1~5ページ参照)、CUツリースプリット決定(M.Xu、T.Li、Z.Wang、X.Deng、R.Yang、およびZ.Guan、「Reducing complexity of HEVC: A deep learning approach」、IEEE Transactions on Image Processing、vol.27、no.10、5044~5059ページ、2018年参照)、残差予測(Z.-T.Zhang、C.-H.Yeh、L.-W.Kang、およびM.-H.Lin、「Efficient CTU-based intra frame coding for HEVC based on deep learning」、2017 Asia-Pacific Signal and Information Processing Association Annual Summit and Conference(APSIPA ASC)、IEEE、2017年、661~664ページ参照)、さらには、フレーム内レート制御(J.-H.Hu、W.-H.Peng、およびC.-H.Chung、「Reinforcement learning for HEVC/H.265 intra-frame rate control」、2018 IEEE International Symposium on Circuits and Systems(ISCAS)、IEEE、2018年、1~5ページ参照)を置き換えるまたは向上させることを目的とする。規格準拠が要件でないときはいつでも、エンドツーエンドで学習されたビデオ圧縮が代替ビデオコーディングパイプラインとして提案された。
【0114】
[0122]レートひずみ最適量子化(RDOQ)は、従来のスカラー量子化(SQ)よりも良好なビットレートを与えることが知られている規格準拠量子化プロシージャである(M.Karczewicz、Y.Ye、およびI.Chong、「Rate distortion optimized quantization」、ITU-T Q、vol.6、2008年参照)。RDOQは、ブロックの統計値がそれの量子化レベルを決定するために使用される、適応量子化の形式である。元のRDOQプロシージャは、たとえば、ビタビのアルゴリズムを使用する、すべての係数についてのすべての可能な量子化レベルにわたるブルートフォース探索を提案する。このブルートフォース探索は、計算コストが高く、並列化することが困難であり得る。したがって、最適を見つけるために必要とされるブルートフォース探索は、ワーストケースシナリオであり得る。
【0115】
[0123]RDOQは、ある所与のコストトレードオフパラメータλについてひずみについてのビットレートのトレードオフを図ることによって、SQよりも優れていることがある。実際には、プロシージャは、以下の離散最適化問題を(たとえば、概算的に)解くことによって各変換係数についての新しい量子化レベルを設定する。
【0116】
【0117】
[0124]式1において、Rはビットレートを測定し、λはラグランジュ係数である。Dは、スケーリングされた変換係数の元のベクトルに対する量子化された変換係数のベクトルのひずみを測定する。
【0118】
[0125]別の例では、プロシージャは、以下の離散問題を(たとえば、概算的に)解くことによって各変換係数についての量子化レベルを決定する。
【0119】
【0120】
式(1’)において、D(q,x)は、量子化レベルqとスケーリングされた変換係数xとの間で算出されたひずみ測度(たとえば、平均2乗誤差)であり、R(q)は、エントロピーコーダを用いてqを符号化することに関連するビットレートであり、
【0121】
【0122】
である。
【0123】
[0126]これらの手法は、リアルタイム符号化復号セットアップにおいて、および(たとえば、ハードウェアが課した)フレームレート制約の存在下で、依然としてあまりに費用がかかり得る。さらに、これらの手法は、並列化することが困難であり得る。さらに、並列化されたバージョンは、ハードウェア上に実装することが困難であり得、RDOQ回路のためにチップ上の追加の面積を確保することを必要とし得る。
【0124】
[0127]両方の懸念に対処する可能性を有する有望なソリューションの方向は、費用がかかるRDOQアルゴリズムをまねるようにニューラルネットワークをトレーニングすることである(たとえば、T.N.Canh、M.Xu、およびB.Jeon、「Rate-distortion optimized quantization: A deep learning approach」、Proc.IEEE High Perform.Extream Comput.Conf、2018年、1~4ページ、以下「Canh」参照)。この手法は、積和(MAC)演算およびエネルギー消費を用いてクロックサイクルとチップ上の面積とのトレードオフを図る。並列化は、(たとえば、たいていのニューラルネットワーク推論ハードウェアが複数のデータポイントのバッチを処理するように設計されるので、推論ハードウェアがデータならびに単一のデータポイントのバッチをパスすることを可能にするので、など)達成することが容易であり得る。しかしながら、Canhは、ほぼ1億3800万個のパラメータを有する、費用がかかるビジュアルジオメトリグループ(VGG:Visual Geometry Group)ベースのセマンティックセグメンテーションモデルを使用する。J.Long、E.Shelhamer、およびT.Darrel、「Fully convolutional networks for semantic segmentation」、IEEE conference on computer vision and pattern recognition、2015年、3431~3440ページを参照されたい。
【0125】
[0128]
図5Aは、ニューラルネットワークベースのRDOQパイプラインの概略図を示す。量子化ユニット208(
図3)は、
図5AのニューラルネットワークベースのRDOQパイプラインを実装し得る。
図5Aの例では、ニューラルネットワーク211は、スケーリングされた変換係数500(スケーリングされたTC)および対応するスカラー量子化された量子化レベル502を入力としてとり、変換係数ごとに付加残差(additive residual)を予測する。たとえば、
図5Aの例に示されているように、パイプラインは加算器512においてネットワーク出力(すなわち、調整値510)とスカラー量子化された量子化レベル(量子化されたTC)502とを適用(たとえば、加算)して、更新された量子化レベル514を作り出す。レートひずみ(R-D)決定プロセス516がビデオエンコーダ200(たとえば、HM16.20または別のエンコーダ)によって適用されて、レートひずみ推定値518を決定する。レートひずみ推定値518は、量子化レベル502を更新された量子化レベル514と置き換えることの影響を推定する。ビデオエンコーダ200は、エントロピーコーディングを実施し、ビットレートを生じることによって、ならびに元の入力されたビデオおよび符号化されたビデオのピーク信号対雑音比を算出することによって、レートひずみ推定値518を算出し得る。
【0126】
[0129]
図5Bは、本開示の1つまたは複数の技法による、ニューラルネットワークベースのRDOQパイプラインの代替の例示的な概略図である。より詳細には、
図5Bは、各変換係数の符号がニューラルネットワーク推論中に無視される、ニューラルネットワークベースのRDOQパイプラインの例示的な概略図を示す概念図である。
図5Bの例では、ニューラルネットワークモデルは、絶対値のスケーリングされた変換係数(スケーリングされたTC)(550)および量子化された変換係数(量子化されたTC)(552)を入力としてとる。さらに、ビデオエンコーダ200は、各変換係数についての付加調整値(554)を予測する。変換係数についての付加調整値を予測するために、ビデオエンコーダ200は、変換係数の符号を廃棄し得る(556)。言い換えれば、ビデオエンコーダ200は、変換係数の絶対値を決定し得る。ビデオエンコーダ200は、次いで、変換係数についての予測された付加調整値(554)を決定するためにニューラルネットワーク(558)を適用し得る。
図5Bの例では、調整値の可能なセットは、{-1,0}である。最終の量子化された変換係数(更新された量子化レベル)(560)を取得するために、ビデオエンコーダ200は、調整(554)を絶対値の量子化された変換係数に加算する(562)。ビデオエンコーダ200は、乗算(566)を通して符号(564)を再び挿入し、それにより、最終量子化レベル(568)を決定する。ビデオエンコーダ200は、次いで、たとえば、
図5Aに関して上記で説明されたように(572)を使用して、最終の量子化された量子化レベルのレートひずみ推定値(570)を取得し得る。
【0127】
[0130]本開示は、Canhの作業を詳細に示し、少なくとも以下の寄与をなす。
【0128】
1)RDOQのための2つのニューラルアーキテクチャ、すなわち、完全畳み込みニューラルネットワークおよび自己回帰ネットワーク。両方のアーキテクチャは、Canhの作業よりも実質的に少数のパラメータを有し、これは、それらのアーキテクチャを、実行するのにより速くなるとともに、よりメモリ効率的になる可能性があるようにする、
2)ブロック全体のレートひずみへのそれの経験的影響に従って変換係数ごとにクロスエントロピー損失をスケーリングするための方法、
3)費用がかかるRDOQアルゴリズムを模倣するようにニューラルネットワークをトレーニングするための高品質トレーニングラベルを取得するための方法、
4)それらの対応するスカラー量子化された量子化レベルが0である変換係数に関する誤分類により増加するレートを制限するための方法。
【0129】
[0131]本開示の1つまたは複数の技法によれば、コンピューティングシステム(たとえば、ソースデバイス102、宛先デバイス116、または1つまたは複数の他のデバイスのうちの1つまたは複数)は、たとえば、
図5Aおよび
図5Bにおいて表示されるように、所与のブロック中の各変換係数についての量子化レベルを決定するようにニューラルネットワークをトレーニングする。コンピューティングシステムは、ヒューリスティック探索を使用して高品質トレーニングラベルを集め得る。コンピューティングシステムは、次いで、これらのトレーニングラベルをトレーニングターゲットとして使用し得る。したがって、いくつかの例では、ネットワークは、RDOQ/ブルートフォース残差を模倣するようにトレーニングされる。
【0130】
[0132]いくつかの例では、コンピューティングシステムは、このデータに関する2つのタイプのニューラルネットワーク、すなわち、完全畳み込みニューラルネットワーク(CNN)および自己回帰モデル(ARM)をトレーニングし得る。これらのニューラルネットワークは、従来のRDOQの代替としてコーデック(たとえば、HMまたは別のコーデック実装形態)に組み込まれ得る。
【0131】
[0133]ビデオエンコーダのハードウェア実装に対するフレームレート制限は、ハードウェア上の従来のRDOQアルゴリズムの実装を禁止し得る。前述のように、そのような実装は、RDOQ回路のためにチップ上の追加の面積を確保することを必要とする。これらの障害は深層学習手法を使用して克服され得、ここで、クロックサイクルとチップ上の面積とが、積和(MAC)演算およびエネルギー消費を用いてトレードオフを図られ得る。
【0132】
[0134]xを、サイズN×Nのスケーリングされた変換係数のブロックとし、ここにおいて、ブロックサイズN∈{4,8,16,32}は、HEVCの下で可能にされるブロック次元に対応する。fRDOQを、ブロックxをN×N量子化レベルqRDOQにマッピングするRDOQアルゴリズムとする。さらに、qSQを、スカラー量子化の方法を使用して取得される量子化された量子化レベルとする。
【0133】
[0135]Canhと同様に、コンピューティングシステムは、qSQの各要素がqRDOQに似ているようにどのように調整されるべきであるかを出力することによって、fRDOQを模倣するようにネットワークをトレーニングし得る。すなわち、量子化されていないスカラー変換係数およびそれの対応するスカラー量子化された係数の入力タプル(x,qSQ)を仮定すれば、ネットワークは、Δ+qSQ=fRDOQ(x)であるようなΔを予測する。このようにして、ネットワークは、コンテンツアグノスティック(content-agnostic)量子化を改善されたコンテンツアウェア量子化に変換することによって改良を実施する。言い換えれば、既存の量子化ベクトルqSQを仮定すれば、
【0134】
【0135】
であるようなベクトルΔを返す。
【0136】
[0136]いくつかの例では、コンピューティングシステムは、qSQの各要素がどのように改良されるべきであるかを出力することによって、fRDOQを模倣するようにネットワークをトレーニングする。特に、コンピューティングシステムは、量子化されていない変換係数xを仮定すれば、調整値Δを出力するようにネットワークをトレーニングする。
【0137】
【0138】
[0137]このようにして、ネットワークは、コンテンツアグノスティック量子化qSQを改善されたコンテンツアウェア量子化
【0139】
【0140】
に変換することによって改良を実施する。いくつかの例では、残差量子化レベルを予測するためにネットワークのみが使用され、探索がスキップされ得る。ネットワーク決定は、ビデオコーディングパイプラインの符号ビット隠蔽(hiding)ステップの前に適用され得る。
【0141】
[0138]ネットワークの性能はラベルの品質によって制限されるので、本開示は、RDOQによって提供されたラベルをさらに改良するために追加のオフライン時間を費やすことを提案する。コンピューティングシステムは、ツリー探索方法を使用する。最初に、量子化されていない係数xは、量子化されていない係数が範囲[0;8]にあるようにスケーリングされる。各量子化されていないスケーリングされた係数について、1つまたは複数の量子化オプション、たとえば切り上げまたは切り捨てが利用可能である。1つの例示的な方法は、係数の所与の順序、たとえばラスタ走査順序について、各4×4係数グループについて最も低いコストを網羅的に探索するローカル貪欲探索を含む。このコンテキストでは、コストは、(式1において述べられているような)共同(joint)レートひずみ目標を指す。このプロセスは、npasses回繰り返され得る。別の例は、A*アルゴリズムに基づくヒューリスティック探索である。得られた量子化レベルは、返され、ネットワークトレーニングのために保存される。
【0142】
[0139]コンピューティングシステムは、教師あり学習を使用して、生成されたデータに関してニューラルネットワークfをトレーニングする。たとえば、コンピューティングシステムは、RDOQソリューションによって生成されたデータ(X,Δ)に関してニューラルネットワークfをトレーニングし得る。ネットワークの最後の層は、N×N×k個の出力を有し、ここで、kは、可能な量子化値の数である。ネットワークの出力は、調整値の各々についての非正規化対数確率(unnormalized log-probability)に対応し得る。コンピューティングシステムは、データによって与えられた量子化値を選択する確率を最大化するか、または等価的に、すべての量子化された係数qi∈qについてのデータの負の対数尤度を最小化するように、ネットワークをトレーニングする。
【0143】
【0144】
[0140]いくつかの例では、コンピューティングシステムは、データによって与えられた量子化値を選択する確率を最大化するか、または等価的に、すべての量子化された係数qi∈qについてのデータの負の対数尤度を最小化するように、ネットワークをトレーニングする。
【0145】
【0146】
[0141]データ分布にわたって(実現不可能な)周辺化を回避するために、ミニバッチ勾配降下が使用される。
【0147】
[0142]専門家軌道(expert trajectory)の例に基づいてネットワークをトレーニングすることは、一般に模倣学習(たとえば、S.Schaal、「Is imitation learning the route to humanoid robots?」Trends in cognitive sciences、vol.3、no.6、233~242ページ、1999年参照)(または、より詳細には、挙動クローニング)と呼ばれる。実際には、ネットワークfの性能は、専門家のそれによって制限される(fFROQ)。すなわち、トレーニングされたネットワークは、提供されたトレーニングラベルと同じくらい良好であるにすぎない。このタスクでは、我々のデータのための最も良好なラベル(量子化レベル)を取得し、提供することは、計算量的に法外であり得る。しかしながら、オフライン探索方法を通してトレーニングラベルの品質を改善することが可能である。テスト時間において、残差量子化レベルを予測するためにネットワークのみが使用され、探索はスキップされる。
【0148】
[0143]たとえば、
図5Bの(556)に示されているように、入力変数の符号はニューラルネットワークのフォワードパス中に廃棄され得る。ビデオエンコーダ200は、調整値を加算した後に符号を挿入する。符号は量子化決定について無関係であるので、符号を廃棄することは、最適化問題を簡略化し得、ネットワーク(たとえば、ニューラルネットワーク558)をよりトレーニングしやすくし得る。ネットワーク(たとえば、ニューラルネットワーク558)へのすべての入力は、経験的平均を減算することと、トレーニングデータセットから取得され得る経験的標準偏差だけスケーリングすることとによって、標準正規分布に従って分布されるように標準化され得る。入力データ統計値は異なるQPと予測構造との間で著しく変動し得るので、QPおよび予測構造の各ペアについて別個のモデルがトレーニングされ得る。
【0149】
[0144]いくつかの例では、コンピューティングシステムは、2つのタイプのニューラルネットワーク、すなわち、フィードフォワードネットワークおよび/または自己回帰ネットワークをトレーニングする。さらに、いくつかの例では、学習タスクを簡略化するために、トレーニングターゲットは、すべてのトレーニングターゲットが有限セット中にあるように、スカラー量子化された係数qSQとトレーニングターゲットqRDOQとクリップΔとの間の差分になるように設定され得る。さらに、いくつかの例では、調整値は、クリッピングを使用して、可能な調整値のサブセットに制限され得る。たとえば、調整値をセット{-1,0;1}に制限するために、以下の式が使用され得る。
【0150】
【0151】
トレーニングセットは、形式(X;Y)のタプルからなり得、ここで、X:=(x;q
SQ)またはそれらの変換であり、Y:=Δであり、推論プロシージャは
図5Aおよび
図5Bに示されている。可能なトレーニングターゲットの数を低減するために、-1よりも小さい値と+1よりも大きい値とが削除される。他の例では、トレーニングターゲットは{-1,0}中にある。
【0152】
[0145]コンピューティングシステムは、2つのタイプのニューラルアーキテクチャ、すなわち、フィードフォワード完全畳み込みモデル(FCN)および自己回帰モデル(ARM)をトレーニングし得る。フィードフォワードモデルは、それらがすべての係数
【0153】
【0154】
についての予測を取得するために単一の推論パスのみを必要とするので、高速である。自己回帰モデルは、代わりに、1つずつ予測を行い、これは、それらをFCNよりも遅くするが、高い複雑さを伴うデータのモデリングを可能にし得る。両方のタイプのネットワークのための推論プロシージャは、
図5Bに示されている。
【0155】
[0146]完全畳み込みニューラルネットワーク:いくつかの例では、その入力が、スケーリングされた変換係数x(たとえば、量子化されていない係数)およびスカラー量子化された量子化レベルqSQ(たとえば、スカラー量子化されたベースライン量子化レベル)またはこれらのうちの何らかの変換を含み得る、完全畳み込みニューラルネットワークfFCNは、変換係数の各々についてのすべてのk個の可能な調整値(たとえば、2つ、3つの可能な調整値)の確率を同時に出力する。
【0156】
【0157】
[0147]この手法は、同様に完全畳み込みアーキテクチャを使用する、T.N.Canh、M.Xu、およびB.Jeon、「Rate-distortion optimized quantization: A deep learning approach」、Proc.IEEE High Perform.Extream Comput.Conf、2018年、1~4ページと同様である。RDOQに勝るこの方法の利点は、探索がもはや必要とされず、チップ上のすでに存在する特殊化されたハードウェア上で容易に実施される単一のニューラルネットワークフォワードコール(forward call)を使用して調整値が取得されることである。
【0158】
[0148]自己回帰ネットワーク:完全畳み込みネットワークなど、フィードフォワードネットワークを使用することの潜在的欠点は、フィードフォワードネットワークがすべての係数について同時に行う共同決定が予測の品質を制限し得ることである。このことの理由は、単一の変換係数についての最適決定が、おそらく、すべての他の変換係数における決定に依存することである。さらに、量子化された値の分布がブロック中のロケーションごとに異なるので、いくつかの決定が最終コストについて他のものよりも重要である可能性がある。この理由で、本開示は、ある所与の係数順序(たとえば、ラスタ走査順序)について、すべての前の係数Δ<iに関して変換係数Iにおいてそれらの出力を調節する、自己回帰ニューラルネットワークを探査する。
【0159】
【0160】
[0149]フィードフォワードの場合と同様に、共同の負の対数尤度は最小化され、これは、条件文(conditional)の成果として表され得る。
【0161】
【0162】
ここで、i=1における第1の係数についての調節は、Δ<1=φに等しい。別の例では、共同の負の対数尤度は、条件文の成果として表され得る。
【0163】
【0164】
式(6’)において、第1の係数i=1は、Δ<1=φに等しい生の変換係数のみに基づく。
【0165】
[0150]自己回帰ニューラルネットワークは推論が並列化されるように設計され(Y.BengioおよびS.Bengio、「Modeling high-dimensional discrete data with multi-layer neural networks」、Advances in Neural Information Processing Systems、2000年、400~406ページ、ならびに、H.LarochelleおよびI.Murray、「The neural autoregressive distribution estimator」、Proceedings of the Fourteenth International Conference on Artificial Intelligence and Statistics、2011年、29~37ページ参照)、これは、教師強制(teacher forcing)として知られる方式を使用する効率的なトレーニングを可能にする。1つずつ出力値を予測し、前の予測
【0166】
【0167】
を埋める代わりに、グランドトゥルースが調節として与えられる。言い換えれば、1つずつ予測する(すなわち、すべてのiについて予測
【0168】
【0169】
を使用する)代わりに、グランドトゥルースΔ<iが、すべての時間ステップについてARMに与えられて、予測
【0170】
【0171】
を並列に作り出す。その結果、ビデオエンコーダ200は、トレーニング中に1回のみネットワーク(たとえば、ニューラルネットワーク558)に問い合わせる。
【0172】
[0151]しかしながら、グランドトゥルースが利用可能でないテスト時間において、完全な予測
【0173】
【0174】
を取得するために必要とされるネットワーク問合せの数は、ブロックの次元数、すなわち、N2に等しくなり得る。これは、ランタイム効率が主要な考慮事項であるとき、自己回帰ニューラルネットワークを、フィードフォワードネットワークほど魅力的でない選択肢にし得る。最近の作業は、条件付き確率がすべての前の出力に依存するとは限らないことを活用することによってこの問題を緩和する(たとえば、A.J.WiggersおよびE.Hoogeboom、「Predictive Sampling with Forecasting Autoregressive Models」、arXiv preprint arXiv:2002.09928、2020年参照)。本開示の技法は、この手法がサンプリング時間を潜在的に低減するためにデータ不平衡を活用することを可能にするので、同様にこの手法を利用し得る。
【0175】
[0152]本開示の他の場所で述べられるように、本開示は、我々の実験のために2つのニューラルネットワークアーキテクチャ、すなわち、完全畳み込みニューラルネットワーク(FCN)、およびグローバル調節をもつ自己回帰モデル(ARM)を探査する。異なる例では、層の数、カーネルサイズ(FCNの場合)、層ごとの隠れユニット/チャネルの数、アクティブ化関数、学習レート、バッチノルム(たとえば、S.IoffeおよびC.Szegedy、「Batch normalization: Accelerating deep network training by reducing internal covariate shift」、Proceedings of the 32nd International Conference on International Conference on Machine Learning-Volume 37、ser.ICML’15.JMLR.org、2015年、448~456ページ参照)およびドロップアウト(たとえば、N.Srivastava、G.Hinton、A.Krizhevsky、I.Sutskever、およびR.Salakhutdinov、「Dropout: A simple way to prevent neural networks from overfitting」、J.Mach.Learn.Res.、vol.15、no.1、1929~1958ページ、2014年1月参照)の使用、ならびに様々な他の態様が、変動され得る。
【0176】
[0153]FCNアーキテクチャは、固定カーネルサイズおよびチャネル深度をもついくつかの2D畳み込み層を含み(または、それらからなり)得る。各層の後に、所定のドロップアウト確率pもつドロップアウト層またはバッチノルム層およびReLU非線形性が続き得る。各層の出力高さおよび幅次元が一定のままであることを保証するために、必要な場合、ゼロパディングが適用され得る。最後の畳み込み層は、1×1畳み込みを実施し得、k、すなわち、可能な調整値の数に等しいチャネル深度を有し得る。いくつかの例では、チャネル深度は、(順序-1、0、および+1において)各予測クラスについてのロジットを出力するために3に等しい。他の例では、チャネル深度は、2または別の値に等しい。
【0177】
[0154]
図6Aは、本開示の1つまたは複数の技法による、例示的な完全畳み込みネットワーク600である。
図6Aの例に示されているように、ネットワーク600に提供された入力データ602は、DCT係数の正方形ブロックを含み得る。いくつかの例では、入力データ602は、スケーリングされた変換係数と、量子化された変換係数とを含む。ネットワーク600は、第1の層セット604と、第2の層セット606と、第3の層セット608とを含む。層セット604、606、608の各々は、ニューロンが2次元3×3受容野(すなわち、3×3 Conv2D)を有する畳み込みネットワークを含む。畳み込みネットワークの出力は、2次元バッチノルム層(バッチノルム2D)または2次元ドロップアウト層(ドロップアウト2D)によって処理される。バッチノルム2D層またはドロップアウト2D層の出力は、正規化線形ユニット(ReLU:rectified linear unit)層によって処理される。層セット608の出力は、各ニューロンが2次元1×1受容野(すなわち、1×1 Conv2D)を有する畳み込み層610に提供される。ネットワーク600は、畳み込み層610の出力を受信する出力層612をも含む。
図6Aの例では、出力層612は、(このコンテキストでは残差と呼ばれることがある)潜在的調整値の確率値(たとえば、対数オッズ)を生成するために、畳み込み層610の出力にロジット関数を適用する。
【0178】
[0155]
図6Bは、本開示の1つまたは複数の技法による、別の例示的な完全畳み込みネットワーク650である。
図6Bの例では、ネットワーク650は、層セット652、654、および656を含む。層セット604、606、および608(
図6A)と同様に、層セット652、654、および656の各々は、3×3 Conv2Dネットワークと、バッチノルム2Dまたはドロップアウト2D層と、ReLU層とを含む。
図6Bの例では、ネットワーク650は入力データ658を受信する。入力データ658は、スケーリングされた変換係数と、量子化された変換係数とを含み得る。さらに、ネットワーク650は、たとえば、データセットの経験的平均を減算すること、および経験的標準偏差で除算することによって入力データ658を標準化する、正規化層660を含む。層セット652は、正規化された入力データを受信する。
【0179】
[0156]ネットワーク650は、各ニューロンが2次元1×1受容野(すなわち、1×1 Conv2D)を有する畳み込み層662をも含む。畳み込み層662は、層セット656の出力を処理する。ネットワーク600は、畳み込み層662の出力にargmax関数を適用し、それによりネットワーク650の出力を生成する、出力層664を含む。
【0180】
[0157]
図7Aは、本開示の1つまたは複数の技法による、調節層をもつ自己回帰モデル(ARM)アーキテクチャ700の例示的な概略図を示す概念図である。
図7Aの例では、ARMアーキテクチャ700は、2つのトラック、すなわち、調節層702と自己回帰層704とを含む(または、それらからなる)。調節層702と自己回帰層704とは、ゲートされた全結合層706によって結合される。自己回帰層704は、入力として、ワンホット符号化された(one-hot encoded)調整Δをとり、ここで、ワンホット符号化された調整ベクトルは、データセット中に記録されたRDOQの調整決定に対応するベクトル要素において数1、およびベクトル中のすべての他の要素について数0を含んでいるが、調節層702は、畳み込みニューラルネットワーク(CNN)と同じ入力をとる。各狭義三角層(strictly triangular layer)は、自己回帰構造が保存されるように重みをマスキングする線形層であり、すなわち、i’番目の出力チャネルは入力Δ
<iのみに依存する。これは、係数に順序を課す。いくつかの例では、ラスタ走査順序が使用される。しかしながら、他の例では、任意の走査順序が使用され得る。ゲート層706の各々は、2n個のチャネルを出力する全結合層を含み(または、それからなり)得る。第1のn個のチャネルはシグモイドを通してパスされ、その結果は、第2のn個のチャネルを乗算される。
【0181】
[0158]上述のように、
図7Aは、調節層702をもつARMの概略図である。第1のARM層は、連続残差の時間依存が犯されないことを保証する、狭義三角重み層を介した因果的接続(causal connection)を使用し得る。各ARM層は、調節ネットワークから、対応する隠れ層を介してブロックに関するグローバル情報(たとえば、スカラー量子化された量子化レベルおよびスケーリングされた変換係数)を受信し得る。各ARM層および/または調節層の後に、所定のドロップアウト確率pまたはバッチノルム層およびReLU非線形性をもつドロップアウト層が続き得る。
【0182】
[0159]別の例示的なARMアーキテクチャ750が
図7Bに示されている。ARMアーキテクチャ750は、各層セットの第2の層がドロップアウトを使用し、バッチノルムを使用しないことを除いて、ARMアーキテクチャ700(
図7A)と同様である。
【0183】
[0160]トレーニング中にニューラルネットワーク(たとえば、ニューラルネットワーク558)のアーキテクチャおよびハイパーパラメータを変動させることに加えて、トレーニング方法へのいくつかの変動が、より強い性能を潜在的に取得するために使用され得る。
【0184】
[0161]異なる入力変換および入力タイプが考慮され得る。例は、オフセットを用いたスカラー量子化された変換係数と、オフセットを用いないスカラー量子化された変換係数とを含む。オフセットを用いたスカラー量子化された変換係数では、ビデオエンコーダ200は、オフセットを用いたHM16.20のスカラー量子化(すなわち、HM-SQ)を使用し得る。スケーリングされた変換係数入力は、同様に、変動される入力であり得、ここで、HM16.20から取得されたスケーリングされた変換係数の代わりに、量子化により失われる情報に等しい、スケーリングされた変換係数と量子化された変換係数との間のオフセットが使用され得る。
【0185】
[0162]調整値:出力クラスの数kは、調整値のセットを決定する。本開示の目的はピクチャごとにビットのレートを減少させることであるので、そのようなセットは、最低でも{-1,0}を含んでいるべきである。k=2を設定することは、モデル(たとえば、ニューラルネットワーク558)によって行われ得る決定の可能なセットを制限する。しかしながら、調整値分布は、0において極めてピークに達し得、バイナリ分類のためのトレーニングの便宜は、モデルの限られた決定能力を上回り得る。
【0186】
[0163]損失スケーリング:ビデオエンコーダ200が正確なレート推定値を取得するためにHM16.20を使用するとき、レートひずみを直接最適化するようにネットワーク(たとえば、ニューラルネットワーク558)をトレーニングするために、確率勾配降下を使用することが可能でないことがある。この制限は、クロスエントロピー損失が常にレートひずみのための好適なプロキシであるとは限らないので、強力なモデルをトレーニングすることに対する障害であり得る。これは、クロスエントロピーがクラスおよび変換係数にわたってすべての分類エラーに等しくペナルティを与えることによるものである。しかしながら、この対称性は、ビデオコーディングにおいて使用されるレートひずみ関数には存在しない。-1のΔの代わりに0のΔを誤って出力することは、逆誤分類(すなわち、0のΔの代わりに-1のΔ)とは異なる、コストへの影響を有する。同様に、ブロック中の左上変換係数(すなわち、DC変換係数)において分類エラーをすることは、別の変換係数において同じ誤りを犯すことと同じ、レートひずみへの影響を有しない。しかしながら、ネットワークをトレーニングするときに損失関数としてクロスエントロピーを使用することは、これらの分類エラーに等しくペナルティを与え得る。
【0187】
[0164]この制限を緩和するために、他の変換係数に対するレートひずみへのそれの経験的影響に従って各変換係数においてクロスエントロピー損失をスケーリングするレートひずみ感度マップが算出され得る。レートひずみ感度マップの使用は、ブロックのレートひずみに対してより大きい影響を有する変換係数に、より重点を置き得る。マップは、トレーニングセットにわたる量子化された変換係数の(たとえば-1または+1だけの)単方向シフトによって引き起こされるレートひずみの変化の絶対値の和をとることによって算出され、合計して1になるためにすべての変換係数にわたってこれらの値の和で除算される。トレーニング中に、各変換係数におけるクロスエントロピー値は、マップ中のそれぞれのスカラー値を乗算され得る。
【0188】
[0165]したがって、いくつかの例では、ニューラルネットワークをトレーニングすることの一部として、デバイス(たとえば、ソースデバイス102または別のデバイス)は、ニューラルネットワークの出力のクロスエントロピー損失を決定し得る(たとえば、特定の変換係数についての決定された量子化レベル)。デバイスは、次いで、レートひずみ感度マップに基づいてニューラルネットワークのクロスエントロピー損失をスケーリングし得る。デバイスは、スケーリングされたクロスエントロピー損失に基づいてニューラルネットワークをトレーニングし得る。たとえば、デバイスは、ニューラルネットワークのパラメータを更新するためにバックプロパゲーションアルゴリズムを実施するために、スケーリングされたクロスエントロピー損失を使用し得る。
【0189】
[0166]前述のように、調整値分布は、かなりスキューされ得る。トレーニングを可能にするために、支配的クラス0に対してより頻度が低いクラスの重みを増加させるためにクラス平衡が使用され得る。クラス平衡のために使用される値は、グリッド探索によって決定され得る。
【0190】
[0167]ゼロマスキング:ニューラルネットワーク(たとえば、ニューラルネットワーク558)の予測によるレートの潜在的増加を制限するために、トレーニングおよび/または推論中に、そのHM-SQレベルが0である変換係数に関する調整が廃棄され得る。これは、0の調整値の確率が最大確率であるように、HM-SQレベルが0である変換係数についてのネットワークの出力を上書きすることによって、行われ得る。0→+/-1に変更することによるレートの増加は、その変更によって誘起されるひずみの潜在的低減についてあまりに高いコストになり得る。
【0191】
[0168]様々な例では、ビデオエンコーダ200は、異なる、層の数、カーネルサイズ(FCNの場合)、アクティブ化関数、学習レート、および/または他の特性を有するネットワーク(たとえば、ニューラルネットワーク558)を使用し得る。いくつかの例では、トレーニング中に、コンピューティングシステムは、バッチノルム(S.IoffeおよびC.Szegedy、「Batch normalization: Accelerating deep network training by reducing internal covariate shift」、Proceedings of the 32nd International Conference on International Conference on Machine Learning-Volume 37、ser.ICML’15.JMLR.org、2015年、448~456ページ参照)またはドロップアウト(N.Srivastava、G.Hinton、A.Krizhevsky、I.Sutskever、およびR.Salakhutdinov、「Dropout: A simple way to prevent neural networks from overfitting」、J.Mach.Learn.Res.、vol.15、no.1、1929~1958ページ、2014年1月参照)を使用し得る。さらに、レートひずみ感度マップとクラス平衡とは、変動され得る。
【0192】
[0169]FCNとARMの両方において、ネットワーク(たとえば、ニューラルネットワーク558)への入力は同じであり、以下のように説明される。ネットワークは、各ブロックbのレベルにおいて動作する。ネットワークへの入力は、bについての量子化レベルqSQ、およびスカラー変換係数である。量子化レベルqSQは、スカラー量子化に基づいて、およびいくつかの例では、ブロックbの変換係数の他の追加の変換(たとえば、絶対値変換)に基づいて、決定され得る。スカラー変換係数は、スケーリングされた変換係数にスカラー量子化を適用することによって、およびいくつかの例では、スケーリングされた変換係数の他の追加の変換(たとえば、絶対値変換)を適用することによって、決定され得る。
【0193】
[0170]
図8は、現在ブロックを符号化するための例示的な方法を示すフローチャートである。現在ブロックは現在CUを備え得る。ビデオエンコーダ200(
図1および
図3)に関して説明されるが、他のデバイスが
図8の方法と同様の方法を実施するように構成され得ることを理解されたい。
【0194】
[0171]この例では、ビデオエンコーダ200は、最初に、現在ブロックを予測する(350)。たとえば、ビデオエンコーダ200は、現在ブロックのための予測ブロックを形成し得る。ビデオエンコーダ200(たとえば、ビデオエンコーダ200の残差生成ユニット204)は、次いで、現在ブロックのための残差ブロックを計算し得る(352)。残差ブロックを計算するために、ビデオエンコーダ200は、元の符号化されていないブロックと、現在ブロックのための予測ブロックとの間の差分を計算し得る。ビデオエンコーダ200は、次いで、残差ブロックを変換し、残差ブロックの変換係数を量子化し得る(354)。たとえば、
図3のコンテキストでは、変換処理ユニット206が残差ブロックを変換し得、量子化ユニット208が、得られた変換係数を量子化し得る。本開示の1つまたは複数の技法によれば、ビデオエンコーダ200(たとえば、ビデオエンコーダ200の量子化ユニット208の量子化ユニット208)は、変換係数を量子化することの一部として、本開示の深層学習技法を使用してRDOQを実施し得る。
【0195】
[0172]次に、
図8の例では、ビデオエンコーダ200は、残差ブロックの量子化された変換係数を走査し得る(356)。走査中に、または走査に続いて、ビデオエンコーダ200(たとえば、ビデオエンコーダ200のエントロピー符号化ユニット220)は、変換係数をエントロピー符号化し得る(358)。たとえば、ビデオエンコーダ200は、CAVLCまたはCABACを使用して変換係数を符号化し得る。ビデオエンコーダ200は、次いで、たとえば、ビットストリーム中で、ブロックのエントロピー符号化されたデータを出力し得る(360)。
【0196】
[0173]
図9は、ビデオデータの現在ブロックを復号するための例示的な方法を示すフローチャートである。現在ブロックは現在CUを備え得る。ビデオデコーダ300(
図1および
図4)に関して説明されるが、他のデバイスが
図9の方法と同様の方法を実施するように構成され得ることを理解されたい。
【0197】
[0174]ビデオデコーダ300は、エントロピー符号化された予測情報、および現在ブロックに対応する残差ブロックの変換係数についてのエントロピー符号化されたデータなど、現在ブロックについてのエントロピー符号化されたデータを受信し得る(370)。ビデオデコーダ300(たとえば、ビデオデコーダ300のエントロピー復号ユニット302)は、現在ブロックのための予測情報を決定するために、および残差ブロックの変換係数を再生するために、エントロピー符号化されたデータをエントロピー復号し得る(372)。ビデオデコーダ300は、現在ブロックのための予測ブロックを計算するために、たとえば、現在ブロックのための予測情報によって示されるイントラ予測またはインター予測モードを使用して、現在ブロックを予測し得る(374)。
図4のコンテキストでは、ビデオデコーダ300の予測処理ユニット304が、現在ブロックを予測(すなわち、現在ブロックのための予測ブロックを生成)し得る。ビデオデコーダ300は、次いで、量子化された変換係数のブロックを作成するために、再生された変換係数を逆走査し得る(376)。ビデオデコーダ300は、次いで、残差ブロックを作り出すために、変換係数を逆量子化し、変換係数に逆変換を適用し得る(378)。たとえば、
図4のコンテキストでは、逆量子化ユニット306が変換係数を逆量子化し得、逆変換処理ユニット308が変換係数に逆変換を適用し得る。変換係数は、本開示の1つまたは複数の技法によるRDOQプロセスを使用して量子化されていることがある。ビデオデコーダ300は、予測ブロックと残差ブロックとを組み合わせることによって、最終的に現在ブロックを復号し得る(380)。
【0198】
[0175]
図10は、本開示の1つまたは複数の技法による、ビデオデータを符号化する例示的な方法を示すフローチャートである。ビデオエンコーダ200(
図1および
図3)に関して説明されるが、他のデバイスが
図10の方法と同様の方法を実施するように構成され得ることを理解されたい。
【0199】
[0176]
図10の例では、量子化ユニット208は、スケーリングされた変換係数を決定する(1000)。スケーリングされた変換係数を決定するために、量子化ユニット208は、所与の量子化ステップに従ってビデオデータのブロックの変換係数をスケーリングし得る。
【0200】
[0177]さらに、
図10の例では、量子化ユニット208は、スカラー量子化された係数を決定し得る(1002)。スカラー量子化された係数を決定するために、量子化ユニット208は、ブロックのスケーリングされた変換係数にスカラー量子化を適用し得る。たとえば、量子化ユニット208は、式
【0201】
【0202】
を使用して、スケーリングされた変換を決定し得、ここで、xはスケーリングされた変換係数であり、sはステップサイズであり、εは量子化オフセットパラメータである。言い換えれば、スカラー量子化された係数を決定するために、量子化ユニット208は、スケーリングされた変換係数の各スケーリングされた変換係数について、第1の値の床関数の出力に等しいものとして、スケーリングされた変換係数に対応するスカラー量子化された係数を決定し得る。第1の値は、第2の値+量子化オフセットパラメータに等しい。第2の値は、ステップサイズで除算されたスケーリングされた変換係数に等しい。
【0203】
[0178]他の例では、量子化オフセットパラメータは使用されない。したがって、そのような例では、スカラー量子化された係数を決定するために、量子化ユニット208は、スケーリングされた変換係数の各スケーリングされた変換係数について、第1の値の床関数の出力に等しいものとして、スケーリングされた変換係数に対応するスカラー量子化された係数を決定し得、ここにおいて、第1の値は、ステップサイズで除算されたスケーリングされた変換係数に等しい。
【0204】
[0179]さらに、
図10の例では、量子化ユニット208は、ブロックの各それぞれの変換係数についての確率のそれぞれのセットを決定するためにニューラルネットワーク211を適用する(1004)。それぞれの変換係数についての確率のそれぞれのセットは、複数の可能な調整値中の各可能な調整値についてのそれぞれの確率値を含む。いくつかの例では、複数の可能な調整値は{-1,0}からなる。他の例では、複数の可能な調整値は{-1,0,1}からなる。いくつかの例では、複数の可能な調整値中の各可能な調整値についてのそれぞれの確率値は、可能な調整値についての非正規化対数確率である。
【0205】
[0180]ニューラルネットワークへの入力が、スケーリングされた変換係数とスカラー量子化された係数とを含む。いくつかの例では、ニューラルネットワーク211は、たとえば、本開示の他の場所で説明されるように、完全畳み込みニューラルネットワークである。他の例では、ニューラルネットワーク211は、たとえば、本開示の他の場所で説明されるように、自己回帰ネットワークである。
【0206】
[0181]本開示の他の場所で説明されるように、(ビデオエンコーダ200を含み得る)コンピューティングシステムは、ニューラルネットワーク211をトレーニングし得る。ニューラルネットワーク211をトレーニングすることの一部として、コンピューティングシステムは、ヒューリスティック探索を使用してトレーニングラベルを集め得る。コンピューティングシステムは、トレーニングラベルを、ニューラルネットワークのためのトレーニングプロセスにおいてトレーニングターゲットとして使用し得る。いくつかの例では、ニューラルネットワーク211は、ブロックの変換係数のすべての可能な量子化レベルにわたってブルートフォース探索を実施するレートひずみ最適化アルゴリズムを模倣するようにトレーニングされる。
【0207】
[0182]
図10の例では、量子化ユニット208は、ブロックの特定の変換係数についての確率のセットに基づいて、特定の変換係数についての量子化レベルを決定する(1006)。たとえば、量子化ユニット208は、特定の変換係数についての確率のセットに基づいて、複数の可能な調整値中の、特定の変換係数についての最も可能性の高い調整値を決定し得る。さらに、この例では、量子化ユニット208は、(たとえば、
図5Bの項目562に示されているように)特定の変換係数についての最も可能性の高い調整値を特定の変換係数の絶対値に加算することによって、特定の変換係数についての更新された値を決定し得る。量子化ユニット208は、次いで、(たとえば、
図5Bの項目566に示されているように)特定の変換係数についての更新された値に特定の変換係数の符号値を乗算することによって、特定の変換係数についての量子化レベルを決定し得る。
【0208】
[0183]いくつかの例では、スカラー量子化された係数を決定することの一部として、量子化ユニット208は、(たとえば、
図5Bの項目556に示されているように)スカラー量子化された係数の符号情報を廃棄し、スケーリングされた変換係数の符号情報を廃棄し得る。さらに、そのような例では、特定の変換係数についての量子化レベルを決定することの一部として、量子化ユニット208は、特定の変換係数についての確率のセットに基づいて、特定の変換係数についての調整値を決定し得る。たとえば、量子化ユニット208は、調整値を、最も大きい確率をもつ調整値として決定し得る。
図5Bのコンテキストでは、調整値は、調整値554のうちの1つであり得る。スケーリングされた変換係数の符号情報を廃棄した後に、量子化ユニット208は、(たとえば、
図5Bの項目562に示されているように)特定の変換係数に対応するスカラー量子化された係数を特定の変換係数についての調整値に加算することによって、特定の変換係数の更新された量子化レベル(たとえば、
図5Bの更新された量子化レベル560のうちの1つ)を決定し得る。量子化ユニット208は、次いで、(たとえば、
図5Bの項目566に示されているように)特定の変換係数についての量子化レベルを決定するために、特定の変換係数についての更新された量子化レベルに特定の変換係数に対応するスカラー量子化された係数の符号(たとえば、
図5Bの引き継がれた符号564)を乗算し得る。
【0209】
[0184]ビデオエンコーダ200は、ビデオデータの符号化された表現を含むビットストリーム中で、特定の変換係数についての決定された量子化レベルをシグナリングし得る(1008)。ビデオエンコーダ200は、ブロックの各変換係数についてステップ1006およびステップ1008を繰り返し得る。
【0210】
[0185]以下は、本開示の1つまたは複数の技法によるものであり得る例の非限定的なセットである。
【0211】
[0186]例1. ビデオデータを符号化する方法であって、方法は、スケーリングされた変換係数を決定することと、ここにおいて、スケーリングされた変換係数を決定することが、所与の量子化ステップに従ってビデオデータのブロックの変換係数をスケーリングすることを備える、スカラー量子化された係数を決定することと、ここにおいて、スカラー量子化された係数を決定することが、ブロックのスケーリングされた変換係数にスカラー量子化を適用することを備える、ブロックの各それぞれの変換係数についての確率のそれぞれのセットを決定するニューラルネットワークを適用することと、ここにおいて、それぞれの変換係数についての確率のそれぞれのセットが、複数の可能な調整値中の各可能な調整値についてのそれぞれの確率値を含み、ニューラルネットワークへの入力が、スケーリングされた変換係数とスカラー量子化された係数とを含む、ブロックの特定の変換係数についての確率のセットに基づいて、特定の変換係数についてのレベルを決定することと、ビデオデータの符号化された表現を含むビットストリーム中で、特定の変換係数についての決定されたレベルをシグナリングすることとを備える、方法。
【0212】
[0187]例2. ニューラルネットワークが完全畳み込みニューラルネットワークである、例1に記載の方法。
【0213】
[0188]例3. ニューラルネットワークが自己回帰ネットワークである、例1に記載の方法。
【0214】
[0189]例4. ヒューリスティック探索を使用してトレーニングラベルを集めることと、トレーニングラベルを、ニューラルネットワークのためのトレーニングプロセスにおいてトレーニングターゲットとして使用することとをさらに備える、例2~3のいずれかに記載の方法。
【0215】
[0190]例5. 複数の可能な調整値が{-1,0}からなる、例1~4のいずれかに記載の方法。
【0216】
[0191]例6. ニューラルネットワークが、ブロックの変換係数のすべての可能な量子化レベルにわたってブルートフォース探索を実施するレートひずみ最適化アルゴリズムを模倣するようにトレーニングされる、例1~5のいずれかに記載の方法。
【0217】
[0192]例7. 特定の変換係数についてのレベルを決定することが、特定の変換係数についての確率のセットに基づいて、複数の可能な調整値中の、特定の変換係数についての最も可能性の高い調整値を決定することと、特定の変換係数についての最も可能性の高い調整値を特定の変換係数の絶対値に加算することによって、特定の変換係数についての更新された値を決定することと、特定の変換係数についての更新された値に特定の変換係数の符号値を乗算することによって、特定の変換係数についてのレベルを決定することとを備える、例1~6のいずれかに記載の方法。
【0218】
[0193]例8. 複数の可能な調整値中の各可能な調整値についてのそれぞれの確率値が、可能な調整値についての非正規化対数確率である、例1~7のいずれかに記載の方法。
【0219】
[0194]例9. スカラー量子化された係数を決定することは、スケーリングされた変換係数の各スケーリングされた変換係数について、第1の値の床関数の出力に等しいものとして、スケーリングされた変換係数に対応するスカラー量子化された係数を決定すること、ここにおいて、第1の値が、第2の値+量子化オフセットパラメータに等しく、第2の値が、ステップサイズで除算されたスケーリングされた変換係数に等しい、を備える、例1~8のいずれかに記載の方法。
【0220】
[0195]例10. スカラー量子化された係数を決定することは、スケーリングされた変換係数の各スケーリングされた変換係数について、第1の値の床関数の出力に等しいものとして、スケーリングされた変換係数に対応するスカラー量子化された係数を決定すること、ここにおいて、第1の値が、ステップサイズで除算されたスケーリングされた変換係数に等しい、を備える、例1~8のいずれかに記載の方法。
【0221】
[0196]例11. スカラー量子化された係数を決定することが、スカラー量子化された係数の符号情報を廃棄することを備え、方法が、スケーリングされた変換係数の符号情報を廃棄することをさらに備え、特定の変換係数についてのレベルを決定することが、特定の変換係数についての確率のセットに基づいて、特定の変換係数についての調整値を決定することと、スケーリングされた変換係数の符号情報を廃棄した後に、特定の変換係数に対応するスカラー量子化された係数を特定の変換係数についての調整値に加算することによって、特定の変換係数の更新されたレベルを決定することと、特定の変換係数についてのレベルを決定するために、特定の変換係数についての更新されたレベルに特定の変換係数に対応するスカラー量子化された係数の符号を乗算することとを備える、例1~10のいずれかに記載の方法。
【0222】
[0197]例12. ビデオデータをコーディングするためのデバイスであって、デバイスが、例1~11のいずれかに記載の方法を実施するための1つまたは複数の手段を備える、デバイス。
【0223】
[0198]例13. 1つまたは複数の手段が、回路中に実装された1つまたは複数のプロセッサを備える、例12に記載のデバイス。
【0224】
[0199]例14. ビデオデータを記憶するためのメモリをさらに備える、例12および13のいずれかに記載のデバイス。
【0225】
[0200]例15. 復号されたビデオデータを表示するように構成されたディスプレイをさらに備える、例12~14のいずれかに記載のデバイス。
【0226】
[0201]例16. デバイスが、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックスのうちの1つまたは複数を備える、例12~15のいずれかに記載のデバイス。
【0227】
[0202]例17. デバイスがビデオデコーダを備える、例12~16のいずれかに記載のデバイス。
【0228】
[0203]例18. デバイスがビデオエンコーダを備える、例12~17のいずれかに記載のデバイス。
【0229】
[0204]例19. 実行されたとき、1つまたは複数のプロセッサに、例1~11のいずれかに記載の方法を実施させる命令を記憶したコンピュータ可読記憶媒体。
【0230】
[0205]上記例に応じて、本明細書で説明された技法のいずれかのいくつかの行為またはイベントは、異なるシーケンスで実施され得、追加、マージ、または完全に除外され得る(たとえば、すべての説明された行為またはイベントが本技法の実践のために必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して同時に実施され得る。
【0231】
[0206]1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【0232】
[0207]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD-ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu-rayディスク(disc)を含み、ここで、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【0233】
[0208]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、あるいは他の等価な集積またはディスクリート論理回路など、回路中に実装された1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」および「処理回路」という用語は、上記の構造、または本明細書で説明された技法の実装に好適な任意の他の構造のいずれかを指し得る。さらに、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用ハードウェアおよび/またはソフトウェアモジュール内に提供されるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素において十分に実装され得る。
【0234】
[0209]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実施するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットが説明されたが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明されたように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作可能なハードウェアユニットの集合によって提供され得る。
【0235】
[0210]様々な例が説明された。これらおよび他の例は、以下の特許請求の範囲内に入る。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1] ビデオデータを符号化する方法であって、前記方法は、
スケーリングされた変換係数を決定することと、ここにおいて、前記スケーリングされた変換係数を決定することが、所与の量子化ステップに従って前記ビデオデータのブロックの変換係数をスケーリングすることを備える、
スカラー量子化された係数を決定することと、ここにおいて、前記スカラー量子化された係数を決定することが、前記ブロックの前記スケーリングされた変換係数にスカラー量子化を適用することを備える、
前記ブロックの各それぞれの変換係数についての確率のそれぞれのセットを決定するニューラルネットワークを適用することと、ここにおいて、
前記それぞれの変換係数についての確率の前記それぞれのセットが、複数の可能な調整値中の各可能な調整値についてのそれぞれの確率値を含み、
前記ニューラルネットワークへの入力が、前記スケーリングされた変換係数と前記スカラー量子化された係数とを含む、
前記ブロックの特定の変換係数についての確率の前記セットに基づいて、前記特定の変換係数についての量子化レベルを決定することと、
前記ビデオデータの符号化された表現を含むビットストリーム中で、前記特定の変換係数についての前記決定された量子化レベルをシグナリングすることと
を備える、方法。
[C2] 前記ニューラルネットワークが完全畳み込みニューラルネットワークである、C1に記載の方法。
[C3] 前記ニューラルネットワークが自己回帰ネットワークである、C1に記載の方法。
[C4] ヒューリスティック探索を使用してトレーニングラベルを集めることと、
前記トレーニングラベルを、前記ニューラルネットワークのためのトレーニングプロセスにおいてトレーニングターゲットとして使用することと
をさらに備える、C1に記載の方法。
[C5] 前記複数の可能な調整値が{-1,0}からなる、C1に記載の方法。
[C6] 前記ニューラルネットワークが、前記ブロックの前記変換係数のすべての可能な量子化レベルにわたってブルートフォース探索を実施するレートひずみ最適化アルゴリズムを模倣するようにトレーニングされる、C1に記載の方法。
[C7] 前記特定の変換係数についての前記量子化レベルを決定することが、
前記特定の変換係数についての確率の前記セットに基づいて、前記複数の可能な調整値中の、前記特定の変換係数についての最も可能性の高い調整値を決定することと、
前記特定の変換係数についての前記最も可能性の高い調整値を前記特定の変換係数の絶対値に加算することによって、前記特定の変換係数についての更新された値を決定することと、
前記特定の変換係数についての前記更新された値に前記特定の変換係数の符号値を乗算することによって、前記特定の変換係数についての前記量子化レベルを決定することとを備える、C1に記載の方法。
[C8] 前記複数の可能な調整値中の各可能な調整値についての前記それぞれの確率値が、前記可能な調整値についての非正規化対数確率である、C1に記載の方法。
[C9] 前記スカラー量子化された係数を決定することは、前記スケーリングされた変換係数の各スケーリングされた変換係数について、
第1の値の床関数の出力に等しいものとして、前記スケーリングされた変換係数に対応するスカラー量子化された係数を決定すること、ここにおいて、
前記第1の値が、第2の値+量子化オフセットパラメータに等しく、
前記第2の値が、ステップサイズで除算された前記スケーリングされた変換係数に等しい、
を備える、C1に記載の方法。
[C10] 前記スカラー量子化された係数を決定することは、前記スケーリングされた変換係数の各スケーリングされた変換係数について、
第1の値の床関数の出力に等しいものとして、前記スケーリングされた変換係数に対応するスカラー量子化された係数を決定すること、ここにおいて、前記第1の値が、ステップサイズで除算された前記スケーリングされた変換係数に等しい、
を備える、C1に記載の方法。
[C11] 前記スカラー量子化された係数を決定することが、前記スカラー量子化された係数の符号情報を廃棄することを備え、
前記方法が、前記スケーリングされた変換係数の符号情報を廃棄することをさらに備え、
前記特定の変換係数についての前記量子化レベルを決定することが、
前記特定の変換係数についての確率の前記セットに基づいて、前記特定の変換係数についての調整値を決定することと、
前記スケーリングされた変換係数の前記符号情報を廃棄した後に、前記特定の変換係数に対応するスカラー量子化された係数を前記特定の変換係数についての前記調整値に加算することによって、前記特定の変換係数の更新された量子化レベルを決定することと、 前記特定の変換係数についての前記量子化レベルを決定するために、前記特定の変換係数についての前記更新された量子化レベルに前記特定の変換係数に対応する前記スカラー量子化された係数の符号を乗算することと
を備える、C1に記載の方法。
[C12] 前記ニューラルネットワークをトレーニングすることをさらに備え、前記ニューラルネットワークをトレーニングすることが、
前記ニューラルネットワークの出力のクロスエントロピー損失を決定することと、
レートひずみ感度マップに基づいて前記ニューラルネットワークの前記クロスエントロピー損失をスケーリングすることと、
前記スケーリングされたクロスエントロピー損失に基づいて前記ニューラルネットワークをトレーニングすることと
を備える、C1に記載の方法。
[C13] ビデオデータを符号化するためのデバイスであって、前記デバイスが、
前記ビデオデータを記憶するためのメモリと、
回路中に実装された1つまたは複数のプロセッサとを備え、前記1つまたは複数のプロセッサは、
スケーリングされた変換係数を決定することと、ここにおいて、前記スケーリングされた変換係数を決定することが、所与の量子化ステップに従って前記ビデオデータのブロックの変換係数をスケーリングすることを備える、
スカラー量子化された係数を決定することと、ここにおいて、前記スカラー量子化された係数を決定することが、前記ブロックの前記スケーリングされた変換係数にスカラー量子化を適用することを備える、
前記ブロックの各それぞれの変換係数についての確率のそれぞれのセットを決定するニューラルネットワークを適用することと、ここにおいて、
前記それぞれの変換係数についての確率の前記それぞれのセットが、複数の可能な調整値中の各可能な調整値についてのそれぞれの確率値を含み、
前記ニューラルネットワークへの入力が、前記スケーリングされた変換係数と前記スカラー量子化された係数とを含む、
前記ブロックの特定の変換係数についての確率の前記セットに基づいて、前記特定の変換係数についての量子化レベルを決定することと、
前記ビデオデータの符号化された表現を含むビットストリーム中で、前記特定の変換係数についての前記決定された量子化レベルをシグナリングすることと
を行うように構成された、デバイス。
[C14] 前記ニューラルネットワークが完全畳み込みニューラルネットワークである、C13に記載のデバイス。
[C15] 前記ニューラルネットワークが自己回帰ネットワークである、C13に記載のデバイス。
[C16] 前記1つまたは複数のプロセッサが、
ヒューリスティック探索を使用してトレーニングラベルを集めることと、
前記トレーニングラベルを、前記ニューラルネットワークのためのトレーニングプロセスにおいてトレーニングターゲットとして使用することと
を行うようにさらに構成された、C13に記載のデバイス。
[C17] 前記複数の可能な調整値が{-1,0}からなる、C13に記載のデバイス。
[C18] 前記ニューラルネットワークが、前記ブロックの前記変換係数のすべての可能な量子化レベルにわたってブルートフォース探索を実施するレートひずみ最適化アルゴリズムを模倣するようにトレーニングされる、C13に記載のデバイス。
[C19] 前記1つまたは複数のプロセッサは、前記特定の変換係数についての前記量子化レベルを決定することの一部として、前記1つまたは複数のプロセッサが、
前記特定の変換係数についての確率の前記セットに基づいて、前記複数の可能な調整値中の、前記特定の変換係数についての最も可能性の高い調整値を決定することと、
前記特定の変換係数についての前記最も可能性の高い調整値を前記特定の変換係数の絶対値に加算することによって、前記特定の変換係数についての更新された値を決定することと、
前記特定の変換係数についての前記更新された値に前記特定の変換係数の符号値を乗算することによって、前記特定の変換係数についての前記量子化レベルを決定することとを行うように構成された、C13に記載のデバイス。
[C20] 前記複数の可能な調整値中の各可能な調整値についての前記それぞれの確率値が、前記可能な調整値についての非正規化対数確率である、C13に記載のデバイス。
[C21] 前記1つまたは複数のプロセッサは、前記スカラー量子化された係数を決定することの一部として、前記1つまたは複数のプロセッサが、前記スケーリングされた変換係数の各スケーリングされた変換係数について、
第1の値の床関数の出力に等しいものとして、前記スケーリングされた変換係数に対応するスカラー量子化された係数を決定すること、ここにおいて、
前記第1の値が、第2の値+量子化オフセットパラメータに等しく、
前記第2の値が、ステップサイズで除算された前記スケーリングされた変換係数に等しい、
を行うように構成された、C13に記載のデバイス。
[C22] 前記1つまたは複数のプロセッサは、前記スカラー量子化された係数を決定することの一部として、前記1つまたは複数のプロセッサが、前記スケーリングされた変換係数の各スケーリングされた変換係数について、
第1の値の床関数の出力に等しいものとして、前記スケーリングされた変換係数に対応するスカラー量子化された係数を決定すること、ここにおいて、前記第1の値が、ステップサイズで除算された前記スケーリングされた変換係数に等しい、
を行うように構成された、C13に記載のデバイス。
[C23] 前記1つまたは複数のプロセッサは、前記スカラー量子化された係数を決定することの一部として、前記1つまたは複数のプロセッサが、前記スカラー量子化された係数の符号情報を廃棄するように構成され、
前記1つまたは複数のプロセッサが、前記スケーリングされた変換係数の符号情報を廃棄するようにさらに構成され、
前記1つまたは複数のプロセッサは、前記特定の変換係数についての前記量子化レベルを決定することの一部として、前記1つまたは複数のプロセッサが、
前記特定の変換係数についての確率の前記セットに基づいて、前記特定の変換係数についての調整値を決定することと、
前記スケーリングされた変換係数の前記符号情報を廃棄した後に、前記特定の変換係数に対応するスカラー量子化された係数を前記特定の変換係数についての前記調整値に加算することによって、前記特定の変換係数の更新された量子化レベルを決定することと、 前記特定の変換係数についての前記量子化レベルを決定するために、前記特定の変換係数についての前記更新された量子化レベルに前記特定の変換係数に対応する前記スカラー量子化された係数の符号を乗算することと
を行うように構成された、C13に記載のデバイス。
[C24] 前記デバイスが、カメラ、コンピュータ、モバイルデバイス、ブロードキャスト受信機デバイス、またはセットトップボックスのうちの1つまたは複数を備える、C13に記載のデバイス。
[C25] 前記1つまたは複数のプロセッサが、
前記ニューラルネットワークの出力のクロスエントロピー損失を決定することと、
レートひずみ感度マップに基づいて前記ニューラルネットワークの前記クロスエントロピー損失をスケーリングすることと、
前記スケーリングされたクロスエントロピー損失に基づいて前記ニューラルネットワークをトレーニングすることと
を行うように構成された、C13に記載の方法。
[C26] ビデオデータを符号化するためのデバイスであって、前記デバイスは、
スケーリングされた変換係数を決定するための手段と、ここにおいて、前記スケーリングされた変換係数を決定することが、所与の量子化ステップに従って前記ビデオデータのブロックの変換係数をスケーリングすることを備える、
スカラー量子化された係数を決定するための手段と、ここにおいて、前記スカラー量子化された係数を決定することが、前記ブロックの前記スケーリングされた変換係数にスカラー量子化を適用することを備える、
前記ブロックの各それぞれの変換係数についての確率のそれぞれのセットを決定するニューラルネットワークを適用するための手段と、ここにおいて、
前記それぞれの変換係数についての確率の前記それぞれのセットが、複数の可能な調整値中の各可能な調整値についてのそれぞれの確率値を含み、
前記ニューラルネットワークへの入力が、前記スケーリングされた変換係数と前記スカラー量子化された係数とを含む、
前記ブロックの特定の変換係数についての確率の前記セットに基づいて、前記特定の変換係数についての量子化レベルを決定するための手段と、
前記ビデオデータの符号化された表現を含むビットストリーム中で、前記特定の変換係数についての前記決定された量子化レベルをシグナリングするための手段と
を備える、デバイス。
[C27] 命令を記憶したコンピュータ可読記憶媒体であって、前記命令は、実行されたとき、1つまたは複数のプロセッサに、
スケーリングされた変換係数を決定することと、ここにおいて、前記スケーリングされた変換係数を決定することが、所与の量子化ステップに従って前記ビデオデータのブロックの変換係数をスケーリングすることを備える、
スカラー量子化された係数を決定することと、ここにおいて、前記スカラー量子化された係数を決定することが、前記ブロックの前記スケーリングされた変換係数にスカラー量子化を適用することを備える、
前記ブロックの各それぞれの変換係数についての確率のそれぞれのセットを決定するニューラルネットワークを適用することと、ここにおいて、
前記それぞれの変換係数についての確率の前記それぞれのセットが、複数の可能な調整値中の各可能な調整値についてのそれぞれの確率値を含み、
前記ニューラルネットワークへの入力が、前記スケーリングされた変換係数と前記スカラー量子化された係数とを含む、
前記ブロックの特定の変換係数についての確率の前記セットに基づいて、前記特定の変換係数についての量子化レベルを決定することと、
前記ビデオデータの符号化された表現を含むビットストリーム中で、前記特定の変換係数についての前記決定された量子化レベルをシグナリングすることと
を行わせる、コンピュータ可読記憶媒体。