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

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

▶ クアルコム,インコーポレイテッドの特許一覧

特許7464803ビデオ圧縮のための機械学習ベースのレートひずみオプティマイザ
<>
  • 特許-ビデオ圧縮のための機械学習ベースのレートひずみオプティマイザ 図1
  • 特許-ビデオ圧縮のための機械学習ベースのレートひずみオプティマイザ 図2
  • 特許-ビデオ圧縮のための機械学習ベースのレートひずみオプティマイザ 図3
  • 特許-ビデオ圧縮のための機械学習ベースのレートひずみオプティマイザ 図4
  • 特許-ビデオ圧縮のための機械学習ベースのレートひずみオプティマイザ 図5
  • 特許-ビデオ圧縮のための機械学習ベースのレートひずみオプティマイザ 図6
  • 特許-ビデオ圧縮のための機械学習ベースのレートひずみオプティマイザ 図7
  • 特許-ビデオ圧縮のための機械学習ベースのレートひずみオプティマイザ 図8
  • 特許-ビデオ圧縮のための機械学習ベースのレートひずみオプティマイザ 図9
  • 特許-ビデオ圧縮のための機械学習ベースのレートひずみオプティマイザ 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-01
(45)【発行日】2024-04-09
(54)【発明の名称】ビデオ圧縮のための機械学習ベースのレートひずみオプティマイザ
(51)【国際特許分類】
   H04N 19/103 20140101AFI20240402BHJP
   H04N 19/147 20140101ALI20240402BHJP
   H04N 19/176 20140101ALI20240402BHJP
【FI】
H04N19/103
H04N19/147
H04N19/176
【請求項の数】 30
(21)【出願番号】P 2023545861
(86)(22)【出願日】2021-12-06
(65)【公表番号】
(43)【公表日】2024-01-11
(86)【国際出願番号】 US2021072765
(87)【国際公開番号】W WO2022169533
(87)【国際公開日】2022-08-11
【審査請求日】2023-07-27
(31)【優先権主張番号】17/165,680
(32)【優先日】2021-02-02
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】507364838
【氏名又は名称】クアルコム,インコーポレイテッド
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100163522
【弁理士】
【氏名又は名称】黒田 晋平
(72)【発明者】
【氏名】マハント・シッダラマンナ
(72)【発明者】
【氏名】ナヴィーン・スリニヴァサマーシー
(72)【発明者】
【氏名】アプールヴァ・ナガラジャン
(72)【発明者】
【氏名】プラサント・シェカー・シン
(72)【発明者】
【氏名】パワン・クマール・バヘティ
(72)【発明者】
【氏名】ナレンドラナス・マラヤス
【審査官】田中 純一
(56)【参考文献】
【文献】特表2020-537445(JP,A)
【文献】特表2008-533937(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 7/12
H04N 19/00 - 19/98
(57)【特許請求の範囲】
【請求項1】
データ符号化のための装置であって、
メモリと、
前記メモリに結合された1つまたは複数のプロセッサと
を含み、前記1つまたは複数のプロセッサが、
ビデオデータのビデオフレームのブロックへの第1の圧縮モードの適用に基づいて、前記ブロック第1の残差部分を決定することと、
1つまたは複数のニューラルネットワーク(NN)による前記ブロックの前記第1の残差部分の処理に応答した前記1つまたは複数のNNの第1の1つまたは複数の出力に基づいて、第1のひずみ予測および第1のビットレート予測を決定することと、
前記第1のひずみ予測および前記第1のビットレート予測に応じて、第1のレートひずみコスト予測を算出することと、
前記ビデオフレームの前記ブロックへの第2の圧縮モードの適用に基づいて、前記ブロックの第2の残差部分を決定することであって、前記第2の圧縮モードが、前記第1の圧縮モードとは異なる、決定することと、
前記1つまたは複数のNNによる前記ブロックの前記第2の残差部分の処理に応答した前記1つまたは複数のNNの第2の1つまたは複数の出力に基づいて、第2のひずみ予測および第2のビットレート予測を決定することと、
前記第2のひずみ予測および前記第2のビットレート予測に応じて、第2のレートひずみコスト予測を算出することと、
前記第1のレートひずみコスト予測および前記第2のレートひずみコスト予測に基づいて、前記ブロックを圧縮するための予測モードを決定することと
を行うように構成される、装置。
【請求項2】
前記装置が、モバイルデバイス、ワイヤレス通信デバイス、およびカメラデバイスのうちの1つである、請求項1に記載の装置。
【請求項3】
前記装置がカメラを含み、前記ビデオデータが前記カメラによってキャプチャされる、請求項1に記載の装置。
【請求項4】
前記1つまたは複数のNNが、第1のニューラルネットワーク(NN)および第2のNNを含み、前記1つまたは複数のプロセッサが、
前記第1のNNによる前記ブロックの前記第1の残差部分の処理に応答した前記第1のNNの第1の出力に基づいて、前記第1のひずみ予測を決定することと
前記第2のNNによる前記ブロックの前記第1の残差部分の処理に応答した前記第2のNNの第2の出力に基づいて、前記第1のビットレート予測を決定することと
を行うように構成される、請求項1に記載の装置。
【請求項5】
前記1つまたは複数のNNがニューラルネットワーク(NN)を含み、前記1つまたは複数のプロセッサが、
前記NNによる前記ブロックの前記第1の残差部分の処理に応答した前記NNの第1の出力に基づいて、前記第1のひずみ予測を決定することと
前記NNによる前記ブロックの前記第1の残差部分の処理に応答した前記NNの第2の出力に基づいて、前記第1のビットレート予測を決定することと
を行うように構成される、請求項1に記載の装置。
【請求項6】
前記1つまたは複数のプロセッサが、
前記ブロックに対する前記第1の圧縮モードおよび前記第2の圧縮モードのうちの少なくとも1つに関連付けられたメタデータを受信することと、
前記1つまたは複数のNNによる前記ブロックの前記第1の残差部分の処理に応答した前記1つまたは複数のNNの前記第1の1つまたは複数の出力に基づいて、ビットレート残差予測を決定することと、
レート推定エンジンによる前記メタデータの処理に応答した前記レート推定エンジンの出力に基づいて、ビットレートメタデータ予測を決定することであって、前記第1のビットレート予測が、前記ビットレート残差予測と前記ビットレートメタデータ予測の和である、決定することと
を行うように構成される、請求項1に記載の装置。
【請求項7】
前記第1のレートひずみコスト予測を算出するために使用される関数が、前記第1のひずみ予測と前記第1のビットレート予測の和をラグランジュ乗数で乗算したものである、請求項1に記載の装置。
【請求項8】
前記第1の圧縮モードが、第1のフレーム間圧縮モードおよび第1のフレーム内圧縮モードのうちの1つであり、前記第2の圧縮モードが、第2のフレーム間圧縮モードおよび第2のフレーム内圧縮モードのうちの1つである、請求項1に記載の装置。
【請求項9】
前記1つまたは複数のプロセッサが、
前記ブロックを圧縮するための決定された前記予測モードに基づいて圧縮されたビデオデータを生成するために、前記ビデオデータを圧縮する
ように構成される、請求項1に記載の装置。
【請求項10】
前記圧縮されたビデオデータが、1つまたは複数のビデオコーディング規格に準拠するデコーダを使用して復号可能である、請求項9に記載の装置。
【請求項11】
前記第1のひずみ予測が、前記1つまたは複数のNNによる、量子化パラメータ(QP)、前記ブロックのブロックサイズ、圧縮モード、および前記ブロックの前記第1の残差部分に関連付けられた情報のうちの少なくとも1つの処理さらに基づいて決定され、
前記第1のビットレート予測が、前記1つまたは複数のNNによる、前記QP、前記ブロックの前記ブロックサイズ、前記圧縮モード、および前記ブロックの前記第1の残差部分に関連付けられた前記情報のうちの少なくとも1つの処理さらに基づいて決定される
請求項1に記載の装置。
【請求項12】
前記1つまたは複数のプロセッサが、
前記QPを決定する
ように構成される、請求項11に記載の装置。
【請求項13】
前記ブロックのブロックサイズが、4平方ピクセル、8平方ピクセル、16平方ピクセル、32平方ピクセル、64平方ピクセル、および128平方ピクセルのうちの1つである、請求項1に記載の装置。
【請求項14】
前記第2の残差部分を決定するために使用される前記ブロックが、前記第1の残差部分を決定するために使用される前記ブロックとは異なるブロックサイズを有し、前記1つまたは複数のプロッサが、
前記第1のレートひずみコスト予測および前記第2のレートひずみコスト予測の最小値に基づいて、前記ブロックに対するブロックサイズを選択する
ように構成される、請求項1に記載の装置。
【請求項15】
前記1つまたは複数のプロセッサが、
前記第1のレートひずみコスト予測および前記第2のレートひずみコスト予測の最小値に基づいて、前記ブロックを圧縮するための前記予測モードを決定することと
を行うように構成される、請求項1に記載の装置。
【請求項16】
前記1つまたは複数のプロセッサが、
前記1つまたは複数のNNを使用して前記ビデオデータの後処理を実行する
ように構成される、請求項1に記載の装置。
【請求項17】
前記1つまたは複数のNNが、畳み込みニューラルネットワーク(CNN)、ディープCNN、全結合層を備えたニューラルネットワーク(NN)、全結合層を備えたCNN、および全結合層を備えたディープCNNのうちの少なくとも1つを含む、請求項1に記載の装置。
【請求項18】
データ符号化の方法であって、
ビデオデータのビデオフレームのブロックへの第1の圧縮モードに適用に基づいて、前記ブロック第1の残差部分を決定するステップと、
1つまたは複数のニューラルネットワーク(NN)による前記ブロックの前記第1の残差部分の処理に応答した前記1つまたは複数のNNの第1の1つまたは複数の出力に基づいて、第1のひずみ予測および第1のビットレート予測を決定するステップと、
前記第1のひずみ予測および前記第1のビットレート予測に応じて、第1のレートひずみコスト予測を算出するステップと、
前記ビデオフレームの前記ブロックへの第2の圧縮モードの適用に基づいて、前記ブロックの第2の残差部分を決定するステップであって、前記第2の圧縮モードが、前記第1の圧縮モードとは異なる、決定するステップと、
前記1つまたは複数のNNによる前記ブロックの前記第2の残差部分の処理に応答した前記1つまたは複数のNNの第2の1つまたは複数の出力に基づいて、第2のひずみ予測および第2のビットレート予測を決定するステップと、
前記第2のひずみ予測および前記第2のビットレート予測に応じて、第2のレートひずみコスト予測を算出するステップと、
前記第1のレートひずみコスト予測および前記第2のレートひずみコスト予測に基づいて、前記ブロックを圧縮するための予測モードを決定するステップと
を含む、方法。
【請求項19】
前記方法が、モバイルデバイス、ワイヤレス通信デバイス、およびカメラデバイスのうちの少なくとも1つを使用して実行される、請求項18に記載の方法。
【請求項20】
前記1つまたは複数のNNが、第1のニューラルネットワーク(NN)および第2のNNを含み、前記第1のひずみ予測を決定する前記ステップが、前記第1のNNによる前記ブロックの前記第1の残差部分の処理に応答した前記第1のNNの第1の出力に基づき、前記第1のビットレート予測を決定する前記ステップが、前記第2のNNによる前記ブロックの前記第1の残差部分の処理に応答した前記第2のNNの第2の出力に基づく、請求項18に記載の方法。
【請求項21】
前記1つまたは複数のNNがニューラルネットワーク(NN)を含み、前記第1のひずみ予測を決定する前記ステップが、前記NNによる前記ブロックの前記第1の残差部分の処理に応答した前記NNの第1の出力に基づき、前記第1のビットレート予測を決定する前記ステップが、前記NNによる前記ブロックの前記第1の残差部分の処理に応答した前記NNの第2の出力に基づく、請求項18に記載の方法。
【請求項22】
前記ブロックに対する前記第1の圧縮モードおよび前記第2の圧縮モードのうちの少なくとも1つに関連付けられたメタデータを受信するステップと、
前記1つまたは複数のNNによる前記ブロックの前記第1の残差部分の処理に応答した前記1つまたは複数のNNの前記第1の1つまたは複数の出力に基づいて、ビットレート残差予測を決定するステップと、
レート推定エンジンによる前記メタデータの処理に応答した前記レート推定エンジンの出力に基づいて、ビットレートメタデータ予測を決定するステップであって、前記第1のビットレート予測が、前記ビットレート残差予測と前記ビットレートメタデータ予測の和である、決定するステップと
をさらに含む、請求項18に記載の方法。
【請求項23】
前記第1のレートひずみコスト予測を算出するために使用される関数が、前記第1のひずみ予測と前記第1のビットレート予測の和をラグランジュ乗数で乗算したものである、請求項18に記載の方法。
【請求項24】
前記第1の圧縮モードが、第1のフレーム間圧縮モードおよび第1のフレーム内圧縮モードのうちの1つであり、前記第2の圧縮モードが、第2のフレーム間圧縮モードおよび第2のフレーム内圧縮モードのうちの1つである、請求項18に記載の方法。
【請求項25】
前記ブロックを圧縮するための決定された前記予測モードに基づいて圧縮されたビデオデータを生成するために、前記ビデオデータを圧縮するステップであって、前記圧縮されたビデオデータが、1つまたは複数のビデオコーディング規格に準拠するデコーダを使用して復号可能である、圧縮するステップ
をさらに含む、請求項18に記載の方法。
【請求項26】
前記第1のひずみ予測が、前記1つまたは複数のNNによる、量子化パラメータ(QP)、前記ブロックのブロックサイズ、圧縮モード、および前記ブロックの前記第1の残差部分に関連付けられた情報のうちの少なくとも1つの処理さらに基づいて決定され、
前記第1のビットレート予測が、前記1つまたは複数のNNによる、前記QP、前記ブロックの前記ブロックサイズ、前記圧縮モード、および前記ブロックの前記第1の残差部分に関連付けられた前記情報のうちの少なくとも1つの処理さらに基づいて決定される
請求項18に記載の方法。
【請求項27】
前記QPを決定するステップ
をさらに含む、請求項26に記載の方法。
【請求項28】
前記第2の残差部分を決定するために使用される前記ブロックが、前記第1の残差部分を決定するために使用される前記ブロックとは異なるブロックサイズを有し
前記第1のレートひずみコスト予測および前記第2のレートひずみコスト予測の最小値に基づいて、前記ブロックに対するブロックサイズを選択するステップ
をさらに含む、請求項18に記載の方法。
【請求項29】
前記第1のレートひずみコスト予測および前記第2のレートひずみコスト予測の最小値に基づいて、前記ブロックを圧縮するための前記予測モードを決定するステップと
をさらに含む、請求項18に記載の方法。
【請求項30】
命令を記憶した非一時的コンピュータ可読記憶媒体であって、前記命令が、1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに
ビデオデータのビデオフレームのブロックへの第1の圧縮モードの適用に基づいて、前記ブロック第1の残差部分を決定することと、
1つまたは複数のニューラルネットワーク(NN)による前記ブロックの前記第1の残差部分の処理に応答した前記1つまたは複数のNNの第1の1つまたは複数の出力に基づいて、第1のひずみ予測および第1のビットレート予測を決定することと、
前記第1のひずみ予測および前記第1のビットレート予測に応じて、第1のレートひずみコスト予測を算出することと、
前記ビデオフレームの前記ブロックへの第2の圧縮モードの適用に基づいて、前記ブロックの第2の残差部分を決定することであって、前記第2の圧縮モードが、前記第1の圧縮モードとは異なる、決定することと、
前記1つまたは複数のNNによる前記ブロックの前記第2の残差部分の処理に応答した前記1つまたは複数のNNの第2の1つまたは複数の出力に基づいて、第2のひずみ予測および第2のビットレート予測を決定することと、
前記第2のひずみ予測および前記第2のビットレート予測に応じて、第2のレートひずみコスト予測を算出することと、
前記第1のレートひずみコスト予測および前記第2のレートひずみコスト予測に基づいて、前記ブロックを圧縮するための予測モードを決定することと
を行わせる、非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、データ処理に関する。より具体的には、本出願は、データ圧縮のためのレートひずみ最適化(RDO)において使用するための人工知能を使用した、ひずみおよびビットレートなどの値を予測するための技術および技法に関する。
【背景技術】
【0002】
データ圧縮は、データの元の表現よりも少ないビットを使用してデータに関する情報を符号化するプロセスである。ロスレスデータ圧縮技法は、圧縮プロセスにおいて元のデータファイルからのいずれの情報も失わない。代わりに、ロスレスデータ圧縮は、たとえば、冗長性を除去することによって、より効率的にデータを単に記憶する。ロッシー圧縮技法は、他方で、元のデータファイルからあまり必要または重要でないと見なされる一部の情報を失う。データ圧縮を実行するデバイスは、エンコーダと呼ばれる。元のデータファイルからのデータを可能な限り近く再生するためにデータ圧縮プロセスを反転させる(復元)デバイスは、デコーダと呼ばれる。
【0003】
レートひずみ最適化(RDO)は、データ圧縮を最適化するために使用され得る技法である。しかしながら、RDOは計算コストが非常に高い。たとえば、ビデオ圧縮において、RDOは、従来、ビットレートとひずみの両方を最小限に抑える最適バランスを見つける最適ビデオ圧縮設定を探索することを必要とする。RDOは、従来、異なるビデオ圧縮設定の下で符号化および復号の複数のパスを実行し、各パスの下でビットレートおよびひずみを算出することによって、最適ビデオ圧縮設定を探索する。RDOは計算コストが非常に高いため、ほとんどのエンコーダは、RDOよりも計算コストが高くないが、下位のビデオ圧縮を生成する、RDO以外の技法を使用する。RDO以外の技法を使用して符号化されるファイルは、概して、RDOベースの圧縮を使用して符号化されたファイルよりも大きく、よりひずみがある。
【発明の概要】
【課題を解決するための手段】
【0004】
【数1】
を使用して、レートひずみ最適化(RDO)を実行するために、人工知能ベースのシステム(たとえば、1つまたは複数のニューラルネットワークを含む機械学習システム)を使用するデータ符号化のためのシステムおよび技法について説明する。たとえば、ビデオエンコーダは、1つまたは複数のニューラルネットワークによるビデオフレームのブロックの残差部分の入力としての受信に応答した1つまたは複数のニューラルネットワークの出力に基づいて、
【数2】
を生成し得る。ビデオエンコーダは、圧縮のモードに関連付けられたメタデータに基づいて、ビットレートメタデータ予測
【数3】
を決定し、
【数4】
と決定し得る。ビデオエンコーダは、
【数5】
に応じて、レートひずみコスト予測
【数6】
を決定し得、
【数7】
に基づいて、ブロックを圧縮するための予測モードを決定し得る。
【0005】
一例では、データ符号化のための装置が提供される。装置は、メモリと、メモリに結合された1つまたは複数のプロセッサ(たとえば、回路で実装される)とを含む。1つまたは複数のプロセッサは、ビデオデータのビデオフレームのブロックの残差部分を受信することと、1つまたは複数のニューラルネットワーク(NN)によるブロックの残差部分の入力としての受信に応答した1つまたは複数のNNの1つまたは複数の出力に基づいて、ひずみ予測およびビットレート予測を決定することと、ひずみ予測およびビットレート予測に応じて、レートひずみコスト予測を算出することと、レートひずみコスト予測に基づいて、ブロックを圧縮するための予測モードを決定することとを行うように構成され、またこれらを行うことが可能である。
【0006】
別の例では、データ符号化の方法が提供される。方法は、ビデオデータのビデオフレームのブロックの残差部分を受信するステップを含む。方法は、1つまたは複数のニューラルネットワーク(NN)によるブロックの残差部分の入力としての受信に応答した1つまたは複数のNNの1つまたは複数の出力に基づいて、ひずみ予測およびビットレート予測を決定するステップを含む。方法は、ひずみ予測およびビットレート予測に応じて、レートひずみコスト予測を算出するステップを含む。方法は、レートひずみコスト予測に基づいて、ブロックを圧縮するための予測モードを決定するステップを含む。
【0007】
別の例では、命令を記憶した非一時的コンピュータ可読媒体であって、命令が、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、ビデオデータのビデオフレームのブロックの残差部分を受信することと、1つまたは複数のニューラルネットワーク(NN)によるブロックの残差部分の入力としての受信に応答した1つまたは複数のNNの1つまたは複数の出力に基づいて、ひずみ予測およびビットレート予測を決定することと、ひずみ予測およびビットレート予測に応じて、レートひずみコスト予測を算出することと、レートひずみコスト予測に基づいて、ブロックを圧縮するための予測モードを決定することとを行わせる、非一時的コンピュータ可読媒体が提供される。
【0008】
別の例において、データ符号化のための装置が提供される。装置は、ビデオデータのビデオフレームのブロックの残差部分を受信するための手段を含む。装置は、1つまたは複数のニューラルネットワーク(NN)によるブロックの残差部分の入力としての受信に応答した1つまたは複数のNNの1つまたは複数の出力に基づいて、ひずみ予測およびビットレート予測を決定するための手段を含む。装置は、ひずみ予測およびビットレート予測に応じて、レートひずみコスト予測を算出するための手段を含む。装置は、レートひずみコスト予測に基づいて、ブロックを圧縮するための予測モードを決定するための手段を含む。
【0009】
いくつかの態様では、1つまたは複数のNNは、第1のニューラルネットワーク(NN)および第2のNNを含み、ひずみ予測を決定することは、第1のNNによるブロックの残差部分の入力としての受信に応答した第1のNNの第1の出力に基づき、ビットレート予測を決定することは、第2のNNによるブロックの残差部分の入力としての受信に応答した第2のNNの第2の出力に基づく。
【0010】
いくつかの態様では、1つまたは複数のNNはニューラルネットワーク(NN)を含み、ひずみ予測を決定することは、NNによるブロックの残差部分の入力としての受信に応答したNNの第1の出力に基づき、ビットレート予測を決定することは、NNによるブロックの残差部分の入力としての受信に応答したNNの第2の出力に基づく。
【0011】
いくつかの態様では、上記で説明した方法、装置、およびコンピュータ可読媒体は、ブロックに対する圧縮モードに関連付けられたメタデータを受信することと、1つまたは複数のニューラルネットワーク(NN)によるブロックの残差部分の入力としての受信に応答した1つまたは複数のNNの1つまたは複数の出力に基づいて、ビットレー残差予測を決定することと、レート推定エンジンによるメタデータの入力としての受信に応答したレート推定エンジンの出力に基づいて、ビットレートメタデータ予測を決定することであって、ビットレート予測が、ビットレート残差予測とビットレートメタデータ予測の和である、決定することとを含む。いくつかの態様では、レートひずみコスト予測を算出するために使用される関数は、ひずみ予測とビットレート予測の和をラグランジュ乗数で乗算したものである。いくつかの態様では、圧縮モードは、フレーム間圧縮およびフレーム内圧縮のうちの1つである。
【0012】
いくつかの態様では、上記で説明した方法、装置、およびコンピュータ可読媒体は、ブロックを圧縮するための予測モードに基づいてビデオデータを圧縮することによって、圧縮されたビデオデータを生成することをさらに含む。いくつかの態様では、圧縮されたビデオデータは、1つまたは複数のビデオデコーダ規格に準拠するデコーダを使用して復号可能である。
【0013】
いくつかの態様では、ひずみ予測は、1つまたは複数のNNによる、量子化パラメータ(QP)、ブロックのブロックサイズ、圧縮モード、およびブロックの残差部分に関連付けられた情報のうちの少なくとも1つの受信に応答して決定される。いくつかの態様では、ビットレート予測は、1つまたは複数のNNによる、QP、ブロックのブロックサイズ、圧縮モード、およびブロックの残差部分に関連付けられた情報のうちの少なくとも1つの受信に応答して決定される。いくつかの態様では、上記で説明した方法、装置、およびコンピュータ可読媒体は、QPを決定することをさらに含む。
【0014】
いくつかの態様では、ブロックのブロックサイズは、4平方ピクセル(square pixels)、8平方ピクセル、16平方ピクセル、32平方ピクセル、64平方ピクセル、および128平方ピクセルのうちの1つである。
【0015】
いくつかの態様では、上記で説明した方法、装置、およびコンピュータ可読媒体は、異なるブロックサイズを備えたブロックの修正された変形態に基づいて、第2のレートひずみコスト予測を算出することと、レートひずみコスト予測および第2のレートひずみコスト予測の最小値に基づいて、ブロックに対するブロックサイズを選択することとをさらに含む。いくつかの態様では、上記で説明した方法、装置、およびコンピュータ可読媒体は、異なる圧縮モードを備えたブロックの修正された変形態に基づいて、第2のレートひずみコスト予測を算出することと、レートひずみコスト予測および第2のレートひずみコスト予測の最小値に基づいて、ブロックを圧縮するための予測モードを決定することとをさらに含む。
【0016】
いくつかの態様では、上で説明した方法、装置、およびコンピュータ可読媒体は、1つまたは複数のNNを使用してビデオデータの後処理を実行することをさらに含む。
【0017】
いくつかの態様では、1つまたは複数のNNは、畳み込みニューラルネットワーク(CNN)、ディープCNN、全結合層を備えたニューラルネットワーク(NN)、全結合層を備えたCNN、および全結合層を備えたディープCNNのうちの少なくとも1つを含む。
【0018】
いくつかの態様では、装置は、ビデオデータをキャプチャするためのカメラを備える。いくつかの態様では、装置は、モバイルデバイス(たとえば、モバイル電話、すなわち、いわゆる「スマートフォン」もしくは他のモバイルデバイス)、ワイヤレス通信デバイス、ウェアラブルデバイス、エクステンデッドリアリティデバイス(たとえば、仮想現実(VR)デバイス、拡張現実(AR)デバイス、もしくは複合現実(MR)デバイス)、パーソナルコンピュータ、ラップトップコンピュータ、サーバコンピュータ、または他のデバイスを備える。いくつかの態様では、1つまたは複数のプロセッサは、画像信号プロセッサ(ISP)を含む。いくつかの態様では、装置は、1つまたは複数の画像をキャプチャするための1つのカメラまたは複数のカメラを含む。いくつかの態様では、装置、画像データをキャプチャする画像センサーを含む。いくつかの態様では、装置は、画像、画像の処理に関連付けられた1つまたは複数の通知、および/または他の表示可能な他のデータを表示するためのディスプレイをさらに含む。
【0019】
本概要は、特許請求される主題の主要なまたは必須の特徴を識別することは意図されず、特許請求される主題の範囲を決定するために単独で使用されることも意図されない。本主題は、この特許の明細書全体、いずれかまたはすべての図面、および各請求項の適切な部分を参照することによって理解されるはずである。
【0020】
上記のことは、他の特徴および実施形態とともに、以下の明細書、特許請求の範囲、および添付の図面を参照するとより明らかになるだろう。
【0021】
本出願の例示的な実施形態について、以下の図を参照しながら以下で詳細に説明する。
【図面の簡単な説明】
【0022】
図1】画像キャプチャおよび処理デバイスのアーキテクチャを示すブロック図である。
図2】レートひずみ最適化(RDO)を使用した画像の例示的なブロック区分を示す概念図である。
図3】レートひずみ最適化(RDO)において使用するためのビットレートRおよびひずみDを決定するためのエンコーダおよびデコーダの使用を示す概念図である。
図4】異なるモードに対するひずみDおよびビットレートRを決定し、ひずみDおよびビットレートRに基づいてRDOを実行する、レートひずみ最適化(RDO)基準エンコーダを示す概念図である。
図5】真のRDOを実行する代わりにレートひずみ最適化(RDO)を推定するために、絶対差分和(SAD)、絶対変換差分和(SATD)、および/または簡素化ビットレート推定値を決定するエンコーダを示す概念図である。
図6】異なるモードに対して
【数8】
に基づいてRDOを実行するために、1つまたは複数のニューラルネットワークを使用するエンコーダを示す概念図である。
図7
【数9】
の和を決定することによって、入力ブロックのためのコスト予測
【数10】
を決定するエンコーダを示す概念図である。
図8】特定の入力ブロックに関連付けられた特定の残差に対して予測されるひずみ
【数11】
を決定するニューラルネットワーク(NN)を示す概念図である。
図9】データ符号化技法を示す流れ図である。
図10】本技術のいくつかの態様を実装するためのシステムの例を示す図である。
【発明を実施するための形態】
【0023】
本開示のいくつかの態様および実施形態が、以下で提供される。当業者に明らかになるように、これらの態様および実施形態のうちのいくつかが独立して適用されてよく、それらのうちのいくつかが組合せで適用されてよい。以下の説明では、説明のために、本出願の実施形態の完全な理解をもたらすために具体的な詳細が記載される。しかしながら、様々な実施形態がこれらの具体的な詳細なしに実践され得ることが明らかとなろう。図および説明は限定的であることを意図しない。
【0024】
以下の説明は、例示的な実施形態を提供するにすぎず、本開示の範囲、適用可能性、または構成を限定することを意図しない。むしろ、例示的な実施形態の以下の説明は、例示的な実施形態を実装することを可能にする説明を当業者に提供する。添付の特許請求の範囲に記載されるような本出願の趣旨および範囲から逸脱することなく、要素の機能および構成において様々な変更が加えられてよいことを理解されたい。
【0025】
画像キャプチャデバイス(たとえば、カメラ)は、画像センサーを使用して、光を受け取り、静止画像またはビデオフレームなどの画像フレームをキャプチャするデバイスである。「画像」、「画像フレーム」、および「フレーム」という用語は、本明細書では互換的に使用される。画像キャプチャデバイスは、一般に、シーンから光を受け取り、その光を画像キャプチャデバイスの画像センサーに向ける、少なくとも1つのレンズを含む。レンズによって受けられた光は、1つまたは複数の制御機構によって制御される開口を通過し、画像センサーによって受けられる。1つまたは複数の制御機構は、画像センサーからの情報に基づいて、かつ/または画像プロセッサ(たとえば、ホストもしくはアプリケーションプロセッサおよび/または画像信号プロセッサ)からの情報に基づいて、露光、焦点、および/またはズームを制御し得る。いくつかの例では、1つまたは複数の制御機構は、画像キャプチャデバイスのレンズをターゲットレンズ位置に移動させるモータまたは他の制御機構を含む。ビデオは、「ビデオフレーム」と呼ばれることがある、連続画像のシーケンスを指すことがある。ビデオを表示することは、ビデオのビデオフレームを連続的に表示することを指す。ビデオは、動いている1つまたは複数のオブジェクトを描写し得る。
【0026】
ビデオ圧縮は、ビデオデータの圧縮を指す。ビデオ圧縮は、フレーム内圧縮とフレーム間圧縮の両方を含む。空間圧縮としても知られるフレーム内圧縮は、静止画像圧縮技法を使用した個々のビデオフレームの圧縮を指す。時間圧縮としても知られるフレーム間圧縮は、近隣ビデオフレームのどの領域が変更を含み、近隣ビデオフレームのどの領域が冗長性を含むかを識別することによる複数のビデオフレームの圧縮を指す。冗長性は、領域にほとんど変更がない状態に留まる場所に見つけることができる。たとえば、ほとんど静的な背景の前で移動する人物を描写するビデオは、その背景を描写するビデオフレームの領域内のビデオフレーム間に冗長性を含むことがある。加えて、フレーム間圧縮はまた、動き推定を使用してフレーム間の対象物の移動を識別することができ、さらなる冗長性除去のためにその情報を使用し得る。
【0027】
ビデオエンコーダおよびビデオデコーダを含むビデオエンコーディングデバイスは、ビデオデータを符号化および復号するためのビデオ圧縮技法を実装する。ビデオ圧縮技法は、空間予測(たとえば、フレーム内予測もしくはイントラ予測)、時間予測(たとえば、フレーム間予測もしくはインター予測)、インターレイヤ予測(ビデオデータの異なるレイヤにわたる)、および/またはビデオシーケンスに固有の冗長性を低減もしくは除去するための他の予測技法を含めて、異なる予測モードを適用することを含み得る。ビデオエンコーダは、以下でより詳細に説明する、元のビデオシーケンスの各ピクチャをビデオブロックまたはコーディングユニット(CU)と呼ばれる方形領域に区分し得る。これらのビデオブロックは、特定の予測モードを使用して符号化され得る。
【0028】
ビデオデータのコーディングは、ビデオフレームをコーディングブロックに区分することを含み得る。たとえば、4分木構造がビデオフレームを区分するために使用されてよく、ビデオフレームは、最大コーディングユニット(LCU)、コーディングツリーユニット(CTU)など、およびそのサブブロック(たとえば、特に、コーディングユニット(CU)、予測ユニット(PU)、変換ユニット(TU))を含み得る。概して「ブロック」への言及は、別段に規定されていない限り、そのようなビデオブロック(たとえば、コーディングツリーブロック、コーディングブロック、予測ブロック、変換ブロック、または他の適切なブロックもしくはサブブロック)を指すことがある。本明細書で使用するLCUは、特定のコーディング規格による最大コーディングユニットを指す。LCUの例は、他のコーディングユニットの中でも、マクロブロック、CTUを含む。
【0029】
予測ブロックは、フレーム間予測またはフレーム内予測のいずれかを使用して、現在コーディングブロックに対して生成され得る。予測ブロックは、現在コーディングブロックに極めてマッチすることが見つかるコーディングブロックを含む。フレーム間予測モードの場合、予測ブロックは、参照フレームまたは参照ピクチャと呼ばれる、別の時間的ロケーション内に位置し得る。ビデオエンコーダは、たとえば、水平変位成分、垂直変位成分、または両方の組合せを含む、2次元(2D)動きベクトルに基づいて、予測ブロックの探索を符号化されることになるブロックのある空間変位に制限し得る。フレーム内予測モードの場合、ビデオエンコーダは、同じピクチャ内の以前に符号化された近隣ブロックからのデータに基づいて、空間予測技法を使用して、予測ブロックを形成し得る。
【0030】
残差コーディングブロックは、現在コーディングブロックから予測ブロックを減算することによって生成され得る。残差コーディングブロックの中の残差ビデオデータは、1つまたは複数のTU内に含められてよい。変換および量子化エンジンは、その場合、離散コサイン変換(DCT)、離散サイン変換(DST)、離散フーリエ変換(DFT)、離散ハートレー変換(DHT)、同様の変換、またはそれらの組合せなどの変換を使用して、残差ビデオデータを残差変換係数に変換し得る。変換から得られる変換係数は、ビットレート(R)をさらに低減させるために量子化され得る。量子化の程度、したがって、ビットレートRは、量子化パラメータ(QP)に基づいてよく、これは、量子化の後にキャプチャされた画像からどの程度の空間詳細が保持されるかを制御し得る。
【0031】
ビデオデコーダは、上記で論じたシンタックス要素および制御情報を使用して、現在フレームを復号するための予測データ(たとえば、予測ブロック)を構築し得る。たとえば、ビデオデコーダは、予測ブロックと圧縮された予測誤差とを加算し得る。ビデオデコーダは、量子化係数を使用して変換基底関数を重み付けすることによって、圧縮された予測誤差を決定し得る。再構築されたフレームと元のフレームとの間の差分は、ひずみ(D)または再構築誤差と呼ばれる。
【0032】
本明細書で説明する技法は、既存のビデオコーデック(たとえば、高効率ビデオコーディング(HEVC)、高度ビデオコーディング(AVC)、または他の適切な既存ビデオコーデック)のうちのどれかに適用されてもよく、かつ/あるいは、開発されているビデオ規格、ならびに/あるいは、たとえば、多用途ビデオコーディング(VVC)、共同調査モデル(JEM)、VP9、AOMedia Video 1(AV1)、および/または開発中の、もしくは開発されるべき他のビデオコーディング規格など、将来のビデオコーディング規格である、どのビデオコーディング規格用の効率的コーディングツールであってもよい。
【0033】
CU区分とも呼ばれるブロック区分は、ビデオフレームまたは他の画像をブロックまたはCUに区分することを指す。これらのブロックは、フレーム内圧縮とフレーム間圧縮の両方を実行する際に使用するための可変サイズ(たとえば、128×128ピクセル、64×64ピクセル、32×32ピクセル、16×16ピクセル、8×8ピクセル)の正方形であり得る。異なるブロックサイズは、区分されることになる画像の領域が平坦かつ単純である(たとえば、無地の壁または澄んだ青空を示す)か、または複雑である(たとえば、エッジおよび/またはテクスチャを示す)かなど、様々な要因に応じて最適であり得る。ビデオフレームの区分を最適化することは、より良いコーディング性能を実現し、所与のビットレートRにおいて符号化されるビデオに対してより少ないひずみDを可能にし得る。
【0034】
ビデオエンコーダは、最適化された区分を識別することによって、ビデオフレームの区分を最適化するためにレートひずみ最適化(RDO)を実行し得る。しかしながら、RDOは計算コストが非常に高い。具体的には、ひずみDおよびビットレートRを算出することは、両方とも計算コストが高く、RDOは、複数の圧縮モードと複数のブロックサイズの両方においてひずみDおよびビットレートRを繰り返して決定することを必要とする。エンコーダは、本明細書でさらに論じるように、絶対差分和(SAD)または絶対変換差分和(SATD)技法を使用してRDOを推定し得る。しかしながら、SADまたはSATDを使用してRDOを推定することは、圧縮品質を著しく低下させる。いくつかの例では、SAD/SATDを使用して圧縮されたビデオ内のビットレートは、同じビデオ品質においてRDOを使用して圧縮された同じビデオよりもおおよそ20%高い。
【0035】
以下でより詳細に説明するように、人工知能を使用して、ひずみDを予測する、予測されるひずみ
【数12】
を生成するための、およびビットレートRを予測する、予測されるビットレート
【数13】
を生成するためのシステムおよび技法について本明細書で説明する。これらのシステムおよび技法は、
【数14】
を使用してRDOを実行するために使用される。人工知能は、1つまたは複数の機械学習モデル、1つまたは複数のニューラルネットワーク、1つまたは複数の他の人工知能エンジン、またはそれらの組合せを含み得る。
【数15】
を使用して、RDOを実行することは、ひずみDおよびビットレートRを使用してRDOを実行することと比較して、ビデオ圧縮の同様の最適化を用いて、ひずみDおよびビットレートRを使用してRDOを実行するよりもかなり高速かつより効率的であり得る。
【数16】
を使用してRDOを実行することは、SAD/SATDを使用してRDOを推定することと比較して同様の速度および効率を用いて、SAD/SATDを使用してRDOを推定することと比較して、かなりより最適化されたビデオ圧縮を生成し得る。
【0036】
図1は、符号化デバイス104および復号デバイス112を含むシステム100の例を示すブロック図である。符号化デバイス104はソースデバイスの一部であってよく、復号デバイス112は受信デバイスの一部であってよい。ソースデバイスおよび/または受信デバイスは、モバイルもしくは固定の電話ハンドセット(たとえば、スマートフォン、セルラー電話など)、デスクトップコンピュータ、ラップトップもしくはノートブックコンピュータ、タブレットコンピュータ、セットトップボックス、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイス、インターネットプロトコル(IP)カメラ、または任意の他の好適な電子デバイスなどの、電子デバイスを含み得る。いくつかの例では、ソースデバイスおよび受信デバイスは、ワイヤレス通信用の1つまたは複数のワイヤレストランシーバを含み得る。本明細書で説明するコーディング技法は、(たとえば、インターネットを介した)ストリーミングビデオ送信、テレビジョン放送もしくは送信、データ記憶媒体上に記憶するためのデジタルビデオの符号化、データ記憶媒体上に記憶されたデジタルビデオの復号、または他の適用例を含む、様々なマルチメディア用途におけるビデオコーディングに適用可能である。いくつかの例では、システム100は、ビデオ会議、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、ゲーミング、および/またはビデオ電話などの適用例をサポートするために、一方向または双方向のビデオ送信をサポートすることができる。
【0037】
符号化デバイス104(またはエンコーダ)は、ビデオコーディング規格またはビデオコーディングプロトコルを使用してビデオデータを符号化して、符号化ビデオビットストリームを生成するために使用され得る。ビデオコーディング規格の例は、そのスケーラブルビデオコーディング(SVC)拡張およびマルチビュービデオコーディング(MVC)拡張を含む、ITU-T H.261、ISO/IEC MPEG-1 Visual、ITU-T H.262またはISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IEC MPEG-4 Visual、ITU-T H.264(ISO/IEC MPEG-4 AVCとしても知られる)、ならびに高効率ビデオコーディング(HEVC)すなわちITU-T H.265を含む。レンジ拡張およびスクリーンコンテンツコーディング拡張、3Dビデオコーディング(3D-HEVC)拡張およびマルチビュー拡張(MV-HEVC)、ならびにスケーラブル拡張(SHVC)を含む、マルチレイヤビデオコーディングを扱うHEVCの様々な拡張が存在する。HEVCおよびその拡張は、ビデオコーディング共同研究部会(JCT-VC)、ならびにITU-Tビデオコーディングエキスパートグループ(VCEG)およびISO/IECモーションピクチャエキスパートグループ(MPEG)の3Dビデオコーディング拡張開発共同研究部会(JCT-3V)によって開発されている。MPEGおよびITU-T VCEGはまた、次世代のビデオコーディング規格用の新たなコーディングツールを探究するために、共同探究ビデオチーム(JVET)を形成している。参照ソフトウェアは、JEM(共同探究モデル)と呼ばれる。JVETによって開発された新しいビデオコーディング規格は、多用途ビデオコーディング(VCC)として知られる。VVCは、H.266、MPEG-I Part 3、またはFuture Video Codingと呼ばれることがある。
【0038】
HEVCは、ITU-Tビデオコーディングエキスパートグループ(VCEG:Video Coding Experts Group)およびISO/IECモーションピクチャエキスパートグループ(MPEG:Motion Picture Experts Group)のジョイントコラボレーションチームオンビデオコーディング(JCT-VC:Joint Collaboration Team on Video Coding)によって2013年に確定された。MPEGおよびITU-T研究グループ16のVCEGによって形成された共同チームであるジョイントビデオエキスパートチーム(JVET:Joint Video Experts Team)は、新しいVVCビデオコーディング規格を2020年に確定した。VVCは、既存のHEVC規格に勝る圧縮性能の著しい改善を実現し、より高品質のビデオサービスおよび(たとえば、特に、365°全方向没入型マルチメディア、高ダイナミックレンジ(HDR)ビデオなどの)新興のアプリケーションの展開を支援する。
【0039】
本明細書で説明する多くの実施形態が、JEMモデル、VVC、HEVC規格、および/またはその拡張を使用する例を提供する。しかしながら、上述のように、本明細書で説明する技法およびシステムはまた、AVC、MPEG、JPEG(もしくは静止画像のための他のコーディング規格)、それらの拡張、あるいはすでに利用可能であるかまたはまだ利用可能もしくは開発済みでない他の好適なコーディング規格などの、他のコーディング規格に適用可能であり得る。したがって、本明細書で説明する技法およびシステムは特定のビデオコーディング規格に関して説明されることがあるが、この説明はその特定の規格のみに適用されるものと解釈されるべきではないことを当業者は諒解されよう。同様に、本明細書で説明する技法およびシステムのうちのいくつかは、ビデオおよび画像符号化ならびに復号を参照しながら説明されることがあるが、この説明は、オーディオデータ、テキストデータ、またはマルチメディアデータなど、ビデオデータおよび/または画像データ以外の他のタイプのデータのためのデータ符号化およびデータ復号にも適用され得ることを当業者は諒解されよう。
【0040】
図1を参照すると、ビデオソース102は、ビデオデータを符号化デバイス104に提供し得る。ビデオソース102は、ソースデバイスの一部であってよく、またはソースデバイス以外のデバイスの一部であってもよい。ビデオソース102は、ビデオキャプチャデバイス(たとえば、ビデオカメラ、カメラフォン、ビデオフォンなど)、記憶されたビデオを含むビデオアーカイブ、ビデオデータを提供するビデオサーバもしくはコンテンツプロバイダ、ビデオサーバもしくはコンテンツプロバイダからビデオを受信するビデオフィードインターフェース、コンピュータグラフィックスビデオデータを生成するためのコンピュータグラフィックスシステム、そのようなソースの組合せ、または任意の他の好適なビデオソースを含み得る。
【0041】
ビデオソース102からのビデオデータは、1つもしくは複数の入力ピクチャまたは入力フレームを含み得る。ピクチャまたはフレームは、場合によってはビデオの一部である静止画像である。いくつかの例では、ビデオソース102からのデータは、ビデオの一部ではない静止画像であり得る。符号化デバイス104のエンコーダエンジン106(またはエンコーダ)は、ビデオデータを符号化して、符号化ビデオビットストリームを生成する。いくつかの例では、符号化ビデオビットストリーム(または「ビデオビットストリーム」もしくは「ビットストリーム」)は、一連の1つまたは複数のコーディングされたビデオシーケンスである。コーディングされたビデオシーケンス(CVS)は、ベースレイヤの中でいくつかの特性を伴うランダムアクセスポイントピクチャを有するアクセスユニット(AU)から始めて、ベースレイヤの中でいくつかの特性を伴うランダムアクセスポイントピクチャを有する次のAUの直前までの、一連のAUを含む。たとえば、CVSを開始するランダムアクセスポイントピクチャのいくつかの特性は、1に等しいRASLフラグ(たとえば、NoRaslOutputFlag)を含み得る。そうでない場合、ランダムアクセスポイントピクチャ(0に等しいRASLフラグを有する)はCVSを開始しない。アクセスユニット(AU)は、1つまたは複数のコーディングされたピクチャと、同じ出力時間を共有するコーディングされたピクチャに対応する制御情報とを含む。ピクチャのコーディングされたスライスは、ビットストリームレベルで、ネットワークアブストラクションレイヤ(NAL)ユニットと呼ばれるデータユニットの中にカプセル化される。たとえば、HEVCビデオビットストリームは、NALユニットを含む1つまたは複数のCVSを含み得る。NALユニットの各々は、NALユニットヘッダを有する。一例では、ヘッダは、H.264/AVCに対して1バイト(マルチレイヤ拡張を除いて)、HEVCに対して2バイトである。NALユニットヘッダの中のシンタックス要素は、指定されたビットを取り、したがって、すべての種類のシステム、および特にトランスポートストリーム、リアルタイムトランスポート(RTP)プロトコル、ファイルフォーマットなどの、トランスポートレイヤにとって認識可能である。
【0042】
ビデオコーディングレイヤ(VCL:video coding layer)NALユニットおよび非VCL NALユニットを含む、NALユニットの2つのクラスがHEVC規格に存在する。VCL NALユニットは、コーディングされたピクチャデータの1つのスライスまたはスライスセグメント(以下で説明する)を含み、非VCL NALユニットは、1つまたは複数のコーディングされたピクチャに関係する制御情報を含む。場合によっては、NALユニットはパケットと呼ばれることがある。HEVC AUは、コーディングされたピクチャデータを含むVCL NALユニットと、(もしあれば)コーディングされたピクチャデータに対応する非VCL NALユニットとを含む。
【0043】
NALユニットは、ビデオの中のピクチャのコーディングされた表現などの、ビデオデータのコーディングされた表現(たとえば、符号化ビデオビットストリーム、ビットストリームのCVSなど)を形成するビットのシーケンスを含み得る。エンコーダエンジン106は、各ピクチャを複数のスライスに区分することによって、ピクチャのコーディングされた表現を生成する。スライスの中の情報が、同じピクチャ内の他のスライスからのデータに依存することなくコーディングされるように、スライスは他のスライスとは無関係である。スライスは、独立したスライスセグメント、および存在する場合、前のスライスセグメントに依存する1つまたは複数の従属したスライスセグメントを含む、1つまたは複数のスライスセグメントを含む。スライスは、次いで、ルーマサンプルおよびクロマサンプルのコーディングツリーブロック(CTB:coding tree block)に区分される。ルーマサンプルのCTB、およびクロマサンプルの1つまたは複数のCTBは、サンプル用のシンタックスとともにコーディングツリーユニット(CTU:coding tree unit)と呼ばれる。CTUは、HEVC符号化のための基本処理単位である。CTUは、様々なサイズの複数のコーディングユニット(CU)にスプリットされ得る。CUは、コーディングブロック(CB)と呼ばれるルーマサンプルアレイおよびクロマサンプルアレイを含む。
【0044】
ルーマCBおよびクロマCBは、予測ブロック(PB)にさらにスプリットされ得る。PBは、(利用可能であるかまたは使用するために有効化されているとき)インター予測またはイントラブロックコピー予測のために同じ動きパラメータを使用するルーマ成分またはクロマ成分のサンプルのブロックである。ルーマPBおよび1つまたは複数のクロマPBは、関連するシンタックスとともに、予測ユニット(PU)を形成する。インター予測の場合、動きパラメータのセット(たとえば、1つまたは複数の動きベクトル、参照インデックスなど)は、PUごとにビットストリームにおいてシグナリングされ、ルーマPBおよび1つまたは複数のクロマPBのインター予測のために使用される。動きパラメータは、動き情報と呼ばれることもある。CBはまた、1つまたは複数の変換ブロック(TB)に区分され得る。TBは、予測残差信号をコーディングするために同じ2次元変換がそこで適用される、色成分のサンプルの正方形ブロック(square block)を表す。変換ユニット(TU)は、ルーマサンプルおよびクロマサンプルのTB、ならびに対応するシンタックス要素を表す。
【0045】
CUのサイズは、コーディングモードのサイズに対応し、形状が正方形であり得る。たとえば、CUのサイズは、8×8サンプル、16×16サンプル、32×32サンプル、64×64サンプル、または対応するCTUのサイズまでの任意の他の適切なサイズであり得る。「N×N」という句は、垂直寸法および水平寸法(たとえば、8ピクセル×8ピクセル)に換算してビデオブロックのピクセル寸法を指すために本明細書で使用される。ブロックの中のピクセルは、行および列に配置され得る。いくつかの実施形態では、ブロックは、水平方向において垂直方向と同じ数のピクセルを有しないことがある。CUに関連付けられたシンタックスデータは、たとえば、1つまたは複数のPUへのCUの区分を記述し得る。区分モードは、CUがイントラ予測モード符号化されるかまたはインター予測モード符号化されるかの間で異なり得る。PUは、形状が非正方形であるように区分され得る。CUに関連付けられたシンタックスデータはまた、たとえば、CTUに従う1つまたは複数のTUへのCUの区分を記述し得る。TUは、形状が正方形または非正方形であり得る。
【0046】
HEVC規格によれば、変換は、変換ユニット(TU)を使用して実行され得る。TUは、異なるCUに対して異なってよい。TUは、所与のCU内のPUのサイズに基づいてサイズ決定され得る。TUは、同じサイズであってもよく、またはPUよりも小さくてもよい。いくつかの例では、CUに対応する残差サンプルは、残差4分木(RQT)として知られる4分木構造を使用して、より小さいユニットに再分割され得る。RQTのリーフノードは、TUに対応し得る。TUに関連付けられたピクセル差分値は、変換係数を生成するために変換され得る。変換係数は、次いで、エンコーダエンジン106によって量子化され得る。
【0047】
ビデオデータのピクチャがCUに区分されると、エンコーダエンジン106は、予測モードを使用して各PUを予測する。予測ユニットまたは予測ブロックは、次いで、残差(以下で説明する)を得るために元のビデオデータから減算される。CUごとに、予測モードが、シンタックスデータを使用してビットストリームの内部でシグナリングされ得る。予測モードは、イントラ予測(または、イントラピクチャ予測)またはインター予測(または、インターピクチャ予測)を含み得る。イントラ予測は、ピクチャ内で空間的に近隣のサンプル間の相関を利用する。たとえば、イントラ予測を使用すると、たとえば、PUにとっての平均値を見つけるためのDC予測、平坦面をPUに適合させるための平面予測、近隣データから外挿するための方向予測、または任意の他の好適なタイプの予測を使用して、同じピクチャの中の近隣画像データから各PUが予測される。インター予測は、画像サンプルのブロックに対する動き補償予測を導出するために、ピクチャ間の時間的な相関を使用する。たとえば、インター予測を使用すると、(出力順序において現在ピクチャの前または後の)1つまたは複数の参照ピクチャの中の画像データからの動き補償予測を使用して、各PUが予測される。ピクチャエリアを、インターピクチャ予測を使用してコーディングすべきか、それともイントラピクチャ予測を使用してコーディングすべきかという決定は、たとえば、CUレベルにおいて行われ得る。
【0048】
いくつかの例では、ピクチャの1つまたは複数のスライスには、スライスタイプが割り当てられる。スライスタイプは、Iスライス、Pスライス、およびBスライスを含む。Iスライス(独立に復号可能なイントラフレーム)は、イントラ予測のみによってコーディングされているピクチャのスライスであり、したがって、Iスライスがスライスの任意の予測ユニットまたは予測ブロックを予測するためにフレーム内のデータしか必要としないので、独立に復号可能である。Pスライス(単方向予測フレーム)は、イントラ予測を用いて、かつ単方向インター予測を用いてコーディングされ得るピクチャのスライスである。Pスライス内の各予測ユニットまたは予測ブロックは、イントラ予測またはインター予測のいずれかを用いてコーディングされる。インター予測が適用されるとき、予測ユニットまたは予測ブロックは、1つの参照ピクチャのみによって予測され、したがって、参照サンプルは、1つのフレームの1つの参照領域だけからのものである。Bスライス(双方向予測フレーム)は、イントラ予測を用いて、かつインター予測(たとえば、双予測または単予測のいずれか)を用いてコーディングされ得るピクチャのスライスである。Bスライスの予測ユニットまたは予測ブロックは、2つの参照ピクチャから双方向に予測され得、ここで、各ピクチャは、1つの参照領域に寄与し、2つの参照領域のサンプルセットが重み付けられて(たとえば、等しい重みを用いて、または異なる重みを用いて)、双方向予測ブロックの予測信号を生成する。上記で説明したように、1つのピクチャのスライスは、独立にコーディングされる。場合によっては、ピクチャは、ただ1つのスライスとしてコーディングされ得る。
【0049】
上述のように、イントラピクチャ予測は、ピクチャ内の空間的に近隣のサンプル間の相関を利用する。ピクチャ間予測は、画像サンプルのブロックに対する動き補償予測を導出するために、ピクチャ間の時間的な相関を使う。並進動きモデルを使って、以前に復号されたピクチャ(参照ピクチャ)中のブロックの位置は、動きベクトル(Δx、Δy)によって示され、Δxは水平変位を指定し、Δyは、現在ブロックの位置に相対した参照ブロックの垂直変位を指定する。場合によっては、動きベクトル(Δx,Δy)は、整数サンプル精度(整数精度とも呼ばれる)とすることができ、その場合、動きベクトルは、参照フレームの整数ペルグリッド(または整数ピクセルサンプリンググリッド)を指す。場合によっては、動きベクトル(Δx,Δy)は、参照フレームの整数ペルグリッドに制限されることなしに、基礎をなすオブジェクトの動きをより正確にキャプチャするために、分数サンプル精度(分数ペル精度または非整数精度とも呼ばれる)とすることができる。動きベクトルの精度は、動きベクトルの量子化レベルによって表される。たとえば、量子化レベルは、整数精度(たとえば、1ピクセル)または分数ペル精度(たとえば、1/4ピクセル、1/2ピクセル、または他のサブピクセル値)であり得る。対応する動きベクトルが分数サンプル精度を有するとき、予測信号を導出するために、補間が参照ピクチャに適用される。たとえば、分数位置における値を推定するために、(たとえば、1つまたは複数の補間フィルタを使用して)整数位置において利用可能なサンプルがフィルタ処理され得る。以前に復号された参照ピクチャは、参照ピクチャリストに対する参照インデックス(refIdx)によって示される。動きベクトルおよび参照インデックスは、動きパラメータと呼ばれることがある。単予測および双予測を含む、2つの種類のインターピクチャ予測が実行され得る。
【0050】
双予測を使うインター予測を用いると、動きパラメータの2つのセット(Δx0,y0,refIdx0およびΔx1,y1,refIdx1)が、2つの動き補償予測を(同じ参照ピクチャから、または可能性としては異なる参照ピクチャから)生成するために使用される。たとえば、双予測を用いると、各予測ブロックは、2つの動き補償予測信号を使用し、B個の予測ユニットを生成する。2つの動き補償予測は次いで、最終動き補償予測を得るように組み合わされる。たとえば、2つの動き補償予測は、平均をとることによって組み合わされ得る。別の例では、重み付き予測が使われてよく、その場合、異なる重みが各動き補償予測に適用されてよい。双予測において使われ得る参照ピクチャは、リスト0およびリスト1として示す、2つの別個のリスト内に記憶される。動き推定プロセスを使って、エンコーダにおいて動きパラメータが導出され得る。
【0051】
単予測を使用するインター予測を用いると、動きパラメータの1つのセット(Δx0,y0,refIdx0)が、参照ピクチャから動き補償予測を生成するために使用される。たとえば、単予測を用いると、各予測ブロックは、多くとも1つの動き補償予測信号を使用し、P個の予測ユニットを生成する。
【0052】
PUは、予測プロセスに関するデータ(たとえば、動きパラメータまたは他の好適なデータ)を含み得る。たとえば、PUがイントラ予測を使用して符号化されるとき、PUは、PUのイントラ予測モードを記述するデータを含み得る。別の例として、PUがインター予測を使用して符号化されるとき、PUは、PUの動きベクトルを定義するデータを含み得る。PUの動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分(Δx)、動きベクトルの垂直成分(Δy)、動きベクトルの解像度(たとえば、整数精度、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、参照インデックス、動きベクトルの参照ピクチャリスト(たとえば、リスト0、リスト1、もしくはリストC)、またはそれらの任意の組合せを記述し得る。
【0053】
符号化デバイス104は、次いで、変換および量子化を実行し得る。たとえば、予測に続いて、エンコーダエンジン106は、PUに対応する残差値を算出し得る。残差値は、コーディングされているピクセルの現在ブロック(PU)と現在ブロックを予測するために使用される予測ブロック(たとえば、現在ブロックの予測されたバージョン)との間のピクセル差分値を含み得る。たとえば、(たとえば、インター予測またはイントラ予測を使用して)予測ブロックを生成した後、エンコーダエンジン106は、予測ユニットによって生成された予測ブロックを現在ブロックから減算することによって残差ブロックを生成することができる。残差ブロックは、現在ブロックのピクセル値と予測ブロックのピクセル値との間の差分を定量化するピクセル差分値のセットを含む。いくつかの例では、残差ブロックは、2次元ブロックフォーマット(たとえば、ピクセル値の2次元行列またはアレイ)で表され得る。そのような例では、残差ブロックは、ピクセル値の2次元表現である。
【0054】
予測が実行された後に残ることがある任意の残差データは、ブロック変換を使用して変換され、ブロック変換は、離散コサイン変換、離散サイン変換、整数変換、ウェーブレット変換、他の好適な変換関数、またはそれらの任意の組合せに基づき得る。場合によっては、1つまたは複数のブロック変換(たとえば、サイズ32×32、16×16、8×8、4×4、または他の好適なサイズ)が、各CUにおける残差データに適用され得る。いくつかの実施形態では、エンコーダエンジン106によって実装される変換プロセスおよび量子化プロセスのためにTUが使用され得る。1つまたは複数のPUを有する所与のCUはまた、1つまたは複数のTUを含み得る。以下でさらに詳細に説明するように、残差値は、ブロック変換を使用して変換係数に変換され得、次いで、TUを使用して量子化および走査されて、エントロピーコーディングのためのシリアル化変換係数を生成し得る。
【0055】
いくつかの実施形態では、CUのPUを使用するイントラ予測コーディングまたはインター予測コーディングに続いて、エンコーダエンジン106は、CUのTUに対する残差データを算出し得る。PUは、空間領域(またはピクセル領域)におけるピクセルデータを含み得る。TUは、ブロック変換を適用した後の、変換領域における係数を含み得る。前述のように、残差データは、符号化されていないピクチャのピクセルとPUに対応する予測値との間のピクセル差分値に相当し得る。エンコーダエンジン106は、CUに対する残差データを含むTUを形成し得、次いで、TUを変換してCUに対する変換係数を生成し得る。
【0056】
エンコーダエンジン106は、変換係数の量子化を実行し得る。量子化は、係数を表すために使用されるデータの量を低減するために変換係数を量子化することによって、さらなる圧縮を実現する。たとえば、量子化は、係数の一部または全部に関連付けられたビット深度を低減し得る。一例では、nビット値を有する係数は、量子化中にmビット値に切り捨てられてもよく、nはmよりも大きい。
【0057】
量子化が実行されると、コーディングされたビデオビットストリームは、量子化された変換係数、予測情報(たとえば、予測モード、動きベクトル、ブロックベクトルなど)、区分情報、および他のシンタックスデータなど、任意の他の適切なデータを含む。コーディングされたビデオビットストリームの様々な要素が、次いで、エンコーダエンジン106によってエントロピー符号化され得る。いくつかの例では、エンコーダエンジン106は、既定の走査順序を利用して量子化変換係数を走査して、エントロピー符号化され得るシリアル化ベクトルを生成し得る。いくつかの例では、エンコーダエンジン106は適応走査を実行し得る。量子化変換係数を走査してベクトル(たとえば、1次元ベクトル)を形成した後、エンコーダエンジン106は、ベクトルをエントロピー符号化し得る。たとえば、エンコーダエンジン106は、コンテキスト適応型可変長コーディング、コンテキスト適応型バイナリ算術コーディング、シンタックスベースコンテキスト適応型バイナリ算術コーディング、確率間隔区分エントロピーコーディング、または別の好適なエントロピー符号化技法を使用してよい。
【0058】
符号化デバイス104の出力部110は、符号化ビデオビットストリームデータを構成するNALユニットを、通信リンク120を介して受信デバイスの復号デバイス112に送り得る。復号デバイス112の入力部114は、NALユニットを受信し得る。通信リンク120は、ワイヤレスネットワーク、ワイヤードネットワーク、またはワイヤードネットワークとワイヤレスネットワークの組合せによって提供されるチャネルを含み得る。ワイヤレスネットワークは、任意のワイヤレスインターフェースまたはワイヤレスインターフェースの組合せを含んでよく、任意の好適なワイヤレスネットワーク(たとえば、インターネットまたは他のワイドエリアネットワーク、パケットベースネットワーク、WiFi(商標)、無線周波数(RF)、UWB、WiFi-Direct、セルラー、ロングタームエボリューション(LTE)、WiMax(商標)など)を含んでよい。ワイヤードネットワークは、任意のワイヤードインターフェース(たとえば、ファイバ、イーサネット、電力線イーサネット、同軸ケーブルを介したイーサネット、デジタル信号ライン(DSL)など)を含んでよい。ワイヤードネットワークおよび/またはワイヤレスネットワークは、基地局、ルータ、アクセスポイント、ブリッジ、ゲートウェイ、スイッチなどの様々な機器を使用して実装され得る。符号化ビデオビットストリームデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、受信デバイスに送信され得る。
【0059】
いくつかの例では、符号化デバイス104は、符号化ビデオビットストリームデータを記憶装置108内に記憶し得る。出力部110は、エンコーダエンジン106から、または記憶装置108から、符号化ビデオビットストリームデータを取り出し得る。記憶装置108は、分散されるかまたは局所的にアクセスされる様々なデータ記憶媒体のうちのいずれかを含み得る。たとえば、記憶装置108は、ハードドライブ、記憶ディスク、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体を含み得る。
【0060】
復号デバイス112の入力部114は、符号化ビデオビットストリームデータを受信し、ビデオビットストリームデータをデコーダエンジン116に、またはデコーダエンジン116によって後で使用するために記憶装置118に提供し得る。デコーダエンジン116は、エントロピー復号すること(たとえば、エントロピーデコーダを使用して)、および符号化ビデオデータを構成する1つまたは複数のコーディングされたビデオシーケンスの要素を抽出することによって、符号化ビデオビットストリームデータを復号し得る。デコーダエンジン116は、次いで、符号化ビデオビットストリームデータを再スケーリングし得、符号化ビデオビットストリームデータに対して逆変換を実行し得る。残差データが、次いで、デコーダエンジン116の予測ステージに渡される。デコーダエンジン116は、次いで、ピクセルのブロック(たとえば、PU)を予測する。いくつかの例では、逆変換の出力(残差データ)に予測が加算される。
【0061】
復号デバイス112は、復号ビデオをビデオ宛先デバイス122に出力し得、ビデオ宛先デバイス122は、復号ビデオデータをコンテンツの消費者に表示するためのディスプレイまたは他の出力デバイスを含み得る。いくつかの態様では、ビデオ宛先デバイス122は、復号デバイス112を含む受信デバイスの一部であってよい。いくつかの態様では、ビデオ宛先デバイス122は、受信デバイス以外の別個のデバイスの一部であってよい。
【0062】
いくつかの実施形態では、ビデオ符号化デバイス104および/またはビデオ復号デバイス112は、それぞれ、オーディオ符号化デバイスおよびオーディオ復号デバイスと統合されてよい。ビデオ符号化デバイス104および/またはビデオ復号デバイス112はまた、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、個別論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなどの、上記で説明したコーディング技法を実装するために必要な他のハードウェアまたはソフトウェアを含んでよい。ビデオ符号化デバイス104およびビデオ復号デバイス112は、複合エンコーダ/デコーダ(コーデック)の一部としてそれぞれのデバイスの中に統合されてよい。符号化デバイス104の詳細の例が、図3図8のエンコーダ305、400、500、600、700、および800を参照しながら本明細書で説明される。復号デバイス112の詳細の例が、図3のデコーダ310を参照しながら以下で説明される。場合によっては、符号化デバイス104は、たとえば、レートひずみ最適化(RDO)のためのひずみDを決定するために、復号デバイス112によって実行されるとして本明細書で論じる特徴を実行し得る。
【0063】
HEVC規格の拡張は、MV-HEVCと呼ばれるマルチビュービデオコーディング拡張、およびSHVCと呼ばれるスケーラブルビデオコーディング拡張を含む。MV-HEVC拡張およびSHVC拡張は階層化コーディングの概念を共有し、異なるレイヤが符号化ビデオビットストリームの中に含まれる。コーディングされたビデオシーケンスの中の各レイヤは、固有のレイヤ識別子(ID)によってアドレス指定される。レイヤIDは、NALユニットが関連付けられたレイヤを識別するために、NALユニットのヘッダの中に存在し得る。MV-HEVCでは、異なるレイヤは、ビデオビットストリームの中で同じシーンの異なるビューを表現することができる。SHVCでは、異なる空間解像度(すなわち、ピクチャ解像度)で、または異なる再構築忠実度でビデオビットストリームを表す、異なるスケーラブルレイヤが提供される。スケーラブルレイヤは、(レイヤID=0である)ベースレイヤ、および(レイヤID=1、2、...nである)1つまたは複数のエンハンスメントレイヤを含み得る。ベースレイヤは、HEVCの最初のバージョンのプロファイルに準拠し得、ビットストリームの中の最低利用可能レイヤを表現する。エンハンスメントレイヤは、空間分解能、時間分解能もしくはフレームレート、および/または再構築忠実度(すなわち、品質)がベースレイヤと比較して増大している。エンハンスメントレイヤは、階層的に編成され、下位レイヤに依存することがある(または、依存しないこともある)。いくつかの例では、異なるレイヤは、単一規格コーデックを使用してコーディングされ得る(たとえば、HEVC、SHVC、または他のコーディング規格を使用してすべてのレイヤが符号化される)。いくつかの例では、異なるレイヤは、多規格コーデックを使用してコーディングされ得る。たとえば、ベースレイヤがAVCを使用してコーディングされてよく、1つまたは複数のエンハンスメントレイヤがHEVC規格に対するSHVC拡張および/またはMV-HEVC拡張を使用してコーディングされてよい。
【0064】
概して、レイヤは、VCL NALユニットのセット、および非VCL NALユニットの対応するセットを含む。NALユニットは、特定のレイヤID値を割り当てられる。レイヤが下位レイヤに依存することがあるという意味で、レイヤは階層的であり得る。レイヤセットとは、自蔵式であるビットストリーム内で表されるレイヤのセットを指し、自蔵式とは、レイヤセット内のレイヤが、復号プロセスにおけるレイヤセットの中の他のレイヤに依存することができるが、いかなる他のレイヤにも復号のために依存しないことを意味する。したがって、レイヤセットの中のレイヤは、ビデオコンテンツを表現できる独立したビットストリームを形成することができる。レイヤセットの中のレイヤのセットは、サブビットストリーム抽出プロセスの動作によって別のビットストリームから取得され得る。レイヤセットは、いくつかのパラメータに従って動作することをデコーダが望むときに復号されるべきレイヤのセットに相当し得る。
【0065】
前に説明したように、HEVCビットストリームは、VCL NALユニットおよび非VCL NALユニットを含む、NALユニットのグループを含む。VCL NALユニットは、コードディングされたビデオビットストリームを形成するコーディングされたピクチャデータを含む。たとえば、コーディングされたビデオビットストリームを形成するビットのシーケンスがVCL NALユニットに存在する。非VCL NALユニットは、他の情報に加えて、符号化ビデオビットストリームに関する高レベル情報を有するパラメータセットを含み得る。たとえば、パラメータセットは、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、およびピクチャパラメータセット(PPS)を含み得る。パラメータセットの目的の例は、ビットレート効率、エラーレジリエンシー、およびシステムレイヤインターフェースを提供することを含む。各スライスは、スライスを復号するために復号デバイス112が使用し得る情報にアクセスするために、単一のアクティブなPPS、SPS、およびVPSを参照する。識別子(ID)は、パラメータセットごとにコーディングされてもよく、VPS ID、SPS ID、およびPPS IDを含む。SPSは、SPS IDおよびVPS IDを含む。PPSは、PPS IDおよびSPS IDを含む。各スライスヘッダは、PPS IDを含む。IDを使用すると、アクティブなパラメータセットが所与のスライスに対して識別され得る。
【0066】
PPSは、所与のピクチャの中のすべてのスライスに適用される情報を含む。このことにより、ピクチャの中のすべてのスライスは、同じPPSを参照する。異なるピクチャの中のスライスも、同じPPSを参照し得る。SPSは、同じコードディングされたビデオシーケンス(CVS)またはビットストリームの中のすべてのピクチャに適用される情報を含む。前に説明したように、コーディングされたビデオシーケンスは、ベースレイヤの中で(上記で説明された)いくつかの特性を伴うランダムアクセスポイントピクチャ(たとえば、瞬時復号参照(IDR)ピクチャもしくはブロークンリンクアクセス(BLA)ピクチャ、または他の適切なランダムアクセスポイントピクチャ)から始めて、ベースレイヤの中でいくつかの特性を伴うランダムアクセスポイントピクチャを有する次のアクセスユニット(AU)の直前(またはビットストリームの末尾)までの、一連のAUである。SPSの中の情報は、コーディングされたビデオシーケンス内のピクチャごとに変化しないことがある。コーディングされたビデオシーケンスの中のピクチャは、同じSPSを使用し得る。VPSは、コードディングされたビデオシーケンスまたはビットストリーム内のすべてのレイヤに適用される情報を含む。VPSは、コーディングされたビデオシーケンス全体に適用されるシンタックス要素を有するシンタックス構造を含む。いくつかの実施形態では、VPS、SPS、またはPPSは、符号化ビットストリームとともにインバンドで送信され得る。いくつかの実施形態では、VPS、SPS、またはPPSは、コーディングされたビデオデータを含むNALユニットとは別個の送信において、アウトオブバンドで送信され得る。
【0067】
ビデオビットストリームはまた、補足強調情報(SEI)メッセージを含み得る。たとえば、SEI NALユニットは、ビデオビットストリームの一部であり得る。場合によっては、SEIメッセージは、復号プロセスによって必要とされない情報を含むことができる。たとえば、SEIメッセージの中の情報は、デコーダがビットストリームのビデオピクチャを復号するのに必須でないことがあるが、デコーダは、ピクチャ(たとえば、復号出力)の表示または処理を改善するためにその情報を使用することができる。SEIメッセージの中の情報は、埋込みメタデータであってよい。例示的な一例では、SEIメッセージの中の情報は、コンテンツの視認性を改善するためにデコーダ側エンティティによって使用され得る。いくつかの事例では、いくつかのアプリケーション規格は、アプリケーション規格に準拠するすべてのデバイスに品質の改善がもたらされ得るように、ビットストリームの中にそのようなSEIメッセージの存在を要求することがある(たとえば、多くの他の例に加えて、SEIメッセージがビデオのすべてのフレームに対して搬送されるフレーム互換平面立体視3DTVビデオフォーマット用のフレームパッキングSEIメッセージの搬送、回復点SEIメッセージの処理、DVBにおけるパンスキャンスキャン方形SEIメッセージの使用)。
【0068】
いくつかの実施形態では、ビデオ符号化デバイス104および/またはビデオ復号デバイス112は、それぞれ、オーディオ符号化デバイスおよびオーディオ復号デバイスと統合されてよい。ビデオ符号化デバイス104および/またはビデオ復号デバイス112はまた、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、個別論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなどの、上記で説明したコーディング技法を実装するために必要な他のハードウェアまたはソフトウェアを含んでよい。ビデオ符号化デバイス104およびビデオ復号デバイス112は、複合エンコーダ/デコーダ(コーデック)の一部としてそれぞれのデバイスの中に統合されてよい。符号化デバイス104の詳細の例が、図3図8のエンコーダ305、400、500、600、700、および800を参照しながら本明細書で説明される。復号デバイス112の詳細の例が、図3のデコーダ310を参照しながら以下で説明される。場合によっては、符号化デバイス104は、たとえば、レートひずみ最適化(RDO)のためのひずみDを決定するために、復号デバイス112によって実行されるとして本明細書で論じる特徴を実行し得る。
【0069】
図1に示す例示的なシステムは、本明細書で使用され得る1つの例示的な例である。本明細書で説明する技法を使用してビデオデータを処理するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。一般に、本開示の技法はビデオ符号化デバイスまたはビデオ復号デバイスによって実行されるが、これらの技法はまた、通常は「コーデック」と呼ばれる複合ビデオエンコーダデコーダによって実行され得る。さらに、本開示の技法はまた、ビデオプリプロセッサによって実行され得る。ソースデバイスおよび受信デバイスは、ソースデバイスが受信デバイスに送信するためのコーディングされたビデオデータを生成する、そのようなコーディングデバイスの例にすぎない。いくつかの例では、ソースデバイスおよび受信デバイスは、デバイスの各々がビデオ符号化および復号構成要素を含むように、実質的に対称的に動作し得る。したがって、例示的なシステムは、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのために、ビデオデバイス間の一方向または双方向のビデオ送信をサポートし得る。
【0070】
上記で説明したように、各ブロックに対して、動き情報(本明細書で動きパラメータとも呼ばれる)のセットが利用可能であり得る。動き情報のセットは、前方予測方向および後方予測方向のための動き情報を含む。前方予測方向および後方予測方向は、双方向予測モードの2つの予測方向であり、その場合、「前方」および「後方」という用語は必ずしも幾何学的意味を有するとは限らない。代わりに、「前方」および「後方」は、現在ピクチャの参照ピクチャリスト0(RefPicList0またはL0)および参照ピクチャリスト1(RefPicList1またはL1)に対応する。いくつかの例では、あるピクチャまたはスライスについて1つの参照ピクチャリストのみが利用可能であるとき、RefPicList0のみが利用可能であり、スライスの各ブロックの動き情報は常に前方である。
【0071】
場合によっては、動きベクトルはその参照インデックスとともに、コーディングプロセス(たとえば、動き補償)において使用される。関連付けられた参照インデックスを用いたそのような動きベクトルは、動き情報の単予測セットとして示される。各予測方向について、動き情報は、参照インデックスと動きベクトルとを含んでよい。場合によっては、簡単のために、動きベクトルが関連する参照インデックスを有すると仮定されるような方法で、動きベクトル自体が参照されることがある。参照インデックスは、現在の参照ピクチャリスト(RefPicList0またはRefPicList1)中の参照ピクチャを識別するために使用される。動きベクトルは、現在ピクチャの座標位置から参照インデックスによって識別された参照ピクチャ内の座標へのオフセットを提供する、水平成分および垂直成分を有する。たとえば、参照インデックスは、現在ピクチャ内のブロックのために使用されるべき特定の参照ピクチャを示すことができ、動きベクトルは、参照ピクチャ内のどこに、最も良くマッチするブロック(現在ブロックに最も良くマッチするブロック)があるかを示すことができる。
【0072】
ピクチャ順序カウント(POC)は、ピクチャの表示順序を識別するためにビデオコーディング規格において広く使用され得る。1つのコーディングされたビデオシーケンス内の2つのピクチャが同じPOC値を有し得る場合があるが、それは通常、コーディングされたビデオシーケンス内で発生しない。複数のコーディングされたビデオシーケンスがビットストリーム中に存在するとき、POCの同じ値をもつピクチャは、復号順序に関して互いに近いことがある。ピクチャのPOC値は、参照ピクチャリスト構築、HEVCの場合のような参照ピクチャセットの導出、および動きベクトルスケーリングのために使用される。
【0073】
H.264/AVCでは、各インターマクロブロック(MB)は、1個の16×16MB区分、2個の16×8MB区分、2個の8×16MB区分、および4個の8×8MB区分を含めて、4つの異なる様式で区分され得る。1個のMB内の異なるMB区分は、各方向に対して異なる参照インデックス値(RefPicList0またはRefPicList1)を有し得る。場合によっては、MBが4個の8×8MB区分に区分されないとき、各方向に対してMB区分ごとに1つの動きベクトルのみを有し得る。場合によっては、MBが4個の8×8MB区分に区分されるとき、各8×8MB区分はサブブロックにさらに区分されてよく、その場合、各サブブロックは各方向に異なる動きベクトルを有し得る。いくつかの例では、1個の8×8サブブロック、2個の8×4サブブロック、2個の4×8サブブロック、および4個の4×4サブブロックを含む、8×8MB区分からサブブロックを得るための4つの異なる様式が存在する。各サブブロックは、各方向に異なる動きベクトルを有し得る。したがって、動きベクトルは、サブブロック以上のレベルで存在する。
【0074】
AVCでは、Bスライス内のスキップおよび/または直接モード用に、MBレベルまたはMB区分レベルのいずれかにおいて時間的直接モードが有効化され得る。各MB区分の場合、動きベクトルを導出するために、現在ブロックのRefPicList1[0]内の現在MB区分とコロケートされたブロックの動きベクトルが使用される。コロケートされたブロック内の各動きベクトルは、POC距離に基づいてスケーリングされる。
【0075】
空間的直接モードもAVCにおいて実行され得る。たとえば、AVCでは、直接モードは、空間ネイバーから動き情報を予測することもできる。
【0076】
HEVCでは、スライスの中の最大のコーディング単位は、コーディングツリーブロック(CTB)と呼ばれる。CTBは4分木を含み、4分木のノードがコーディングユニットである。CTBのサイズは、HEVCメインプロファイルでは16×16から64×64にわたり得る。場合によっては、8×8CTBサイズがサポートされ得る。コーディングユニット(CU)は、CTBの同じサイズであってよく、8×8程度に小さくてもよい。場合によっては、各コーディングユニットは、1つのモードを用いてコーディングされる。CUがインターコーディングされるとき、CUは、2つまたは4つの予測ユニット(PU)へとさらに区分されることがあり、またはさらなる区分が適用されないときには1つだけのPUになることがある。1つのCUの中に2個のPUが存在するとき、それらはサイズが半分の長方形、またはCUの1/4もしくは3/4のサイズを有する2つの長方形であり得る。
【0077】
CUがインターコーディングされるとき、動き情報の1つのセットが各PUに対して存在する。加えて、各PUは、動き情報のセットを導出するために固有のインター予測モードでコーディングされる。
【0078】
HEVCにおける動き予測の場合、予測ユニット(PU)用のマージモードおよび高度動きベクトル予測(AMVP)モードを含めて、2つのインター予測モードが存在する。スキップはマージの特殊事例と見なされる。AMVPモードまたはマージモードのいずれでも、動きベクトル(MV)候補リストが複数の動きベクトル予測子のために維持される。現在のPUの、動きベクトル、ならびにマージモードにおける参照インデックスは、MV候補リストから1つの候補をとることによって生成される。いくつかの例では、以下で説明するように、記憶された動きベクトルとともに、1つまたは複数の記憶された局所照明補償(LIC)フラグがMV候補リストの中に含まれてよい。
【0079】
ブロックの動き予測(また、適用可能な場合、照明補償)のためにMV候補リストが使用される例では、MV候補リストは、符号化デバイスおよび復号デバイスによって別個に構築され得る。たとえば、MV候補リストは、ブロックを符号化するとき、符号化デバイスによって生成され得、ブロックを復号するとき、復号デバイスによって生成され得る。MV候補リスト内の動き情報候補に関する情報(たとえば、1つまたは複数の動きベクトルに関する情報、場合によってはMV候補リスト内に記憶され得る1つまたは複数のLICフラグに関する情報、および/または他の情報)は、符号化デバイスと復号デバイスとの間でシグナリングされ得る。たとえば、マージモードでは、記憶された動き情報候補に対するインデックス値は、(たとえば、ピクチャパラメータセット(PPS)、シーケンスパラメータセット(SPS)、ビデオパラメータセット(VPS)、スライスヘッダ、ビデオビットストリーム内でまたはそこから別個に送られる、補足エンハンスメント情報(SEI)メッセージなど、シンタックス構造で、かつ/または他のシグナリングで)符号化デバイスから復号デバイスにシグナリングされ得る。復号デバイスは、MV候補リストを構築し、シグナリングされた参照またはインデックスを使用して、動き補償予測のために使用するための1つまたは複数の動き情報候補を構築されたMV候補リストから取得し得る。たとえば、復号デバイス112は、MV候補リストを構築し、ブロックの動き予測のためにインデックス付けされたロケーションからの動きベクトル(また、場合によっては、LICフラグ)を使用し得る。AMVPモードの場合、参照またはインデックスに加えて、差分または残差値がデルタとしてシグナリングされてもよい。たとえば、AMVPモードの場合、復号デバイスは、1つまたは複数のMV候補リストを構築し、ブロックの動き補償予測を実行する際にシグナリングされたインデックス値を使用して取得された1つまたは複数の動き情報候補にデルタ値を適用し得る。
【0080】
いくつかの例では、MV候補リストは、マージモードのための最大5個の候補、およびAMVPモードのための2個の候補を含む。他の例では、マージモードおよび/またはAMVPモードのために異なる数の候補がMV候補リスト内に含まれてよい。マージ候補は、動き情報のセットを含み得る。たとえば、動き情報のセットは、参照ピクチャリスト(リスト0およびリスト1)と参照インデックスの両方に対応する動きベクトルを含んでよい。マージ候補がマージインデックスによって識別される場合、現在のブロックの予測のために参照ピクチャが使用され、ならびに関連する動きベクトルが決定される。しかしながら、AMVPモードでは、リスト0またはリスト1のいずれかからの各々の潜在的な予測方向に対して、AMVP候補が動きベクトルのみを含んでいるので、MVPインデックスとともに参照インデックスがMV候補リストに明示的にシグナリングされる必要がある。AMVPモードでは、予測された動きベクトルがさらに改善され得る。
【0081】
このように、マージ候補は、動き情報のフルセットに対応するが、AMVP候補は、特定の予測方向および参照インデックスのための1つだけの動きベクトルを含む。両方のモードに対する候補は、同じ空間隣接ブロックおよび時間隣接ブロックから同様に導出される。
【0082】
いくつかの例では、マージモードは、インター予測されたPUが、空間的に近隣の動きデータ位置および2つの時間的にコロケートされた動きデータ位置のうちの1つのグループから選択された動きデータ位置を含むインター予測されたPUから、1つまたは複数の同じ動きベクトル、予測方向、および1つまたは複数の参照ピクチャインデックスを継承することを可能にする。AMVPモードの場合、PUの1つまたは複数の動きベクトルは、エンコーダおよび/またはデコーダによって構築されたAMVP候補リストからの1つまたは複数の動きベクトル予測子(MVP)に対して叙述的にコーディングされ得る。場合によっては、PUの単一方向インター予測の場合、エンコーダおよび/またはデコーダは、単一AMVP候補リストを生成し得る。場合によっては、PUの双方向予測の場合、エンコーダおよび/またはデコーダは、1つが前方予測方向からの空間的および時間的近隣PUの動きデータを使用し、1つが後方予測方向からの空間的および時間的近隣PUの動きデータを使用する、2つのAMVP候補を生成し得る。両方のモードのための候補は、空間的および/または時間的な近隣ブロックから同様に導出される。
【0083】
いくつかの例では、サンプルレート変換がビデオデータに適用され得る。サンプルレート変換は、リサンプリング、ダウンサンプリング、アップサンプリング、補間、および/または他のサンプルレート変換技法を含み得る。たとえば、補間は、他の補間技法の中でも、区分的固定補間、直線補間、多項補間、およびスプライン補間を含み得る。リサンプリングは、ダウンサンプリング、アップサンプリング、および/またはダウンサンプリングとアップサンプリングの組合せ、または異なるサンプリングレートにおいて新しいサンプルを取得することを含み得る。
【0084】
いくつかのシステムでは、動き予測は、ブロック単位の動きデータシグナリングを簡素化するためのインター予測ブロックマージング技法で強化され得る。補間タスクは、画像用のピクセルグリッドとは無関係であるピクチャ間のオブジェクトの変位によりそのような文脈で使用される。断片的精度(たとえば、画像内のピクセル間の変位を推定する)は、このようにしてより正確に動きをキャプチャするために使用され得る。この断片的精度は、以前に復号されたブロックからの動きデータの推定を可能にし得る。補間および断片的参照ピクチャサンプルの場合、高い精度はフィルタリングを改善し得る。例示的なシステムは、システムに応じて、1/4ピクセル精度、1/8ピクセル精度、1/16ピクセル精度、または他のそのような精度を備えた動きベクトルをサポートし得る。いくつかの例では、ルーマ成分およびクロマ成分は同じシステム内で異なる断片的精度を有し得る。補間フィルタは、この文脈において画像を処理するために使用され得る。加えて、(たとえば、動きベクトル値に基づいて)異なる状況において、複数の異なる補間フィルタが使用され得る。利用可能である異なる補間フィルタから選択することは、本明細書で補間フィルタ交換と呼ばれる。
【0085】
リサンプリングは、1つの画像からのピクセル値を利用し、ピクセル値からデータを「リサンプリング」して新しい画像に対する新しいピクセル値を生成することを指す。上記で説明したように、リサンプリングは、より高い解像度画像からのピクセル値がより低い解像度において画像を生成するために使用されるダウンサンプリング、ならびにより低い解像度画像からのピクセル値がより高い解像度において画像を生成するために使用されるアップサンプリングを含み得る。上記で説明した動き予測の文脈で、異なるサイズ(たとえば、解像度)を有する参照画像および現在画像は、動きベクトルを生成し、動き予測を実行するために使用され得る。リサンプリングは、参照ピクチャと現在ピクチャとの間のスケーリング差分を管理するためにそのような状況で使用され得る。加えて、参照ピクチャおよび現在ピクチャが同じサイズでないとき、フィルタは、リサンプリングなしの補間フィルタリングに適しているが、参照ピクチャリサンプリングを用いた補間フィルタリングには適していない、フィルタインデックスによって示され得る。いくつかの画像処理システムでは、たとえば、補間のために使用される平滑化フィルタは、参照ピクチャリサンプリングのために使用されるとき、不十分な結果を生み出すことがある。本明細書で説明する例は、適切なフィルタ値を識別し、符号化デバイスおよび復号デバイスの動作中に改善された符号化結果および復号結果を生成することによって、復号デバイスおよび符号化デバイスの動作を改善する。一例では、現在ピクチャの現在ブロックに関するフィルタインデックス情報を識別し、現在ピクチャの第1のピクチャサイズ値および参照ピクチャの第2のピクチャサイズ値が異なる(たとえば、参照ピクチャリサンプリングが使用される)と決定することによって、改善が実装される。この文脈で、この例は、(たとえば、現在フィルタインデックスを使用せずに)フィルタインデックス情報によって識別された現在フィルタインデックスの代わりにデフォルトフィルタインデックスを使用してリサンプリングプロセスを実行する。様々な例の追加の態様について以下で説明する。
【0086】
図2は、レートひずみ最適化(RDO)を使用した画像200の例示的なブロック区分250を示す概念図である。画像200は、比較的単純かつ平坦な白色背景の前の前景内に女性を描写する。画像200は、ビデオのビデオフレームであり得る。凡例290は、水平X軸と、水平X軸に直角な垂直Y軸とを示す。画像200は、X軸およびY軸に広がる平面上に示される。
【0087】
いくつかの画像およびビデオ符号化技法は、画像およびまたはビデオフレームをブロックまたはCUに区分することをサポートする。このプロセスはブロック区分またはCU区分と呼ばれることがある。これらのブロックは、128平方ピクセル(128×128ピクセル)、64平方ピクセル(64×64ピクセル)、32平方ピクセル(32×32ピクセル)、16平方ピクセル(16×16ピクセル)、8平方ピクセル(8×8ピクセル)、または4平方ピクセル(4×4ピクセル)など、様々なサイズの方形であってよい。エンコーダは、フレーム内および/またはフレーム間圧縮を実行するために使用するためにこれらのブロックを使用し得る。たとえば、高効率ビデオコーディング(HEVC)は、64平方ピクセルのサイズを有する最大コーディングユニット(LCU)をサポートし、このLCUは、32平方ピクセル、16平方ピクセル、または8平方ピクセルのサイズを有するより小さなCUに区分され得る。LCUの4分木区分を正確に推定し得るビデオエンコーダは、ビデオデータの効率的な圧縮を実行し得る。
【0088】
図2に示す画像200の例示的なブロック区分250は、様々なサイズのブロックを生成する。たとえば、32平方ピクセルのサイズを有する第1の大型ブロック205Aは、画像の真左上に示されている。第1の大型ブロック205Aは、Y軸に沿って画像200の真上にあり、X軸に沿って画像200の真左にある。第1の大型ブロック205Aは、画像200内に示された女性の後ろの背景を示す平坦エリア220内に配置される。第1の大型ブロック205Aは、画像200内の女性の描写から比較的離れて配置される。16平方ピクセルのサイズを有する第1の中型ブロック210Aは、Y軸に沿って画像200の上部付近に、画像200のX軸に沿って水平中央の左に示されている。第1の中型ブロック210Aは、画像200内に描写された女性の後ろの背景を描写する平坦エリア220内に配置される。第1の中型ブロック210Aは、画像200内の女性の描写に近く、X軸に沿った第1の中型ブロック210Aの右の次のブロックは背景と女性の髪の一部分との間のエッジを描写する。8平方ピクセルのサイズを有する第1の小型ブロック215Aは、Y軸に沿って画像200の上部近く、画像のX軸に沿って水平中央の右に示されている。第1の小型ブロック215Aは、背景と女性の髪の一部分との間のエッジを描写する。女性の髪はテクスチャエリア225である。
【0089】
場合によっては、より小さなブロックサイズ(たとえば、16×16、8×8、4×4)は、オブジェクトまたはテクスチャコンテンツのエッジを描写するエリアなど、より複雑な画像またはビデオフレームのエリア内に最も良く使用される。したがって、第1の小型ブロック215Aは、平坦エリア220(背景)とテクスチャエリア225(女性の髪)との間のエッジを描写する。第1の中型ブロック210Aは、同様のエッジ近くに配置される。他方で、より大きなブロックサイズ(たとえば、128×128、64×64、32×32、16×16)は、場合によっては、比較的単純かつ/もしくは平坦な、かつ/またはテクスチャおよび/またはエッジなど、複雑性に欠ける、画像またはビデオフレームのエリア内に最も良く使用される。したがって、第1の大型ブロック205Aは、平坦エリア220(背景)を描写する。第1の中型ブロック210Aは、平坦エリア220(背景)とテクスチャエリア225(女性の髪)との間のエッジ近くに配置されているにもかかわらず、同様に、平坦エリア220(背景)を描写する。平坦エリアを符号化するためのより大きなブロックサイズ、また複雑なエリアを符号化するためのより小さなブロックサイズの使用は最適であることが多いが、RDOは、これが常にそうとは限らないことを明らかにしている。
【0090】
画像またはビデオフレームのエリア内に描かれたコンテンツの複雑性は、ブロック区分のための最適ブロックサイズの信頼性の高いインジケータではない。RDOは、場合によっては、テクスチャエリア225など、複雑な画像200のエリア内により大きなブロックサイズ(たとえば、128×128、64×64、32×32、16×16)が最適であり得ることを明らかにしている。たとえば、第2の大型ブロック205Bは、テクスチャエリア225(女性の髪)と、テクスチャエリア225(女性の髪)と女性の顔との間のエッジ、エッジテクスチャエリア225(女性の髪)および女性の耳、ならびに女性の耳の異なる部分を描写するいくつかのエッジを含めて、いくつかのエッジの両方を描写する。同様に、RDOは、場合によっては、平坦かつ単純で、複雑性に欠ける、画像200のエリア内により小さいブロックサイズ(たとえば、16×16、8×8、4×4)が最適であり得ることを明らかにしている。たとえば、第2の小型ブロック215Bは、平坦エリア220(背景)を描き、画像200内で女性の描写から比較的離れて配置されている。第2の中型ブロック210Bは、画像200内で比較的平坦な、女性の手の皮膚の単純エリアを描写する。
【0091】
この一貫性のなさにより、画像200のブロック区分250の最適化は複雑な問題である。ビデオフレームのブロック区分250を最適化することは、ビデオフレームを含むビデオの圧縮のためのBjontegaardレート差分(BDレート)を増大させる。最適化されたブロック区分250を使用したビデオの圧縮は、最適化されたブロック区分250を用いずに圧縮された同じビデオに対して同じビデオ品質(たとえば、同じひずみD)を維持しながら、ビットレートRを低減し得る。同様に、最適化されたブロック区分250を使用したビデオの圧縮は、最適化されたブロック区分250を用いずに圧縮された同じビデオに対して同じビットレートRを維持しながら、ビデオ品質を増大させ得る(たとえば、ひずみDを低減し得る)。
【0092】
いくつかのビデオコーデックは、より旧来型のビデオコーデックよりもより多様なブロックサイズをサポートし得る。たとえば、いくつかのビデオコーデックは、より旧来型のビデオコーデックがサポートしない、128×128ブロックサイズおよび/または4×4ブロックサイズをサポートし得る。加えて、いくつかのビデオコーデックは長方形ブロックをサポートし得る。長方形ブロックは、方形であるが、正方形ではない。たとえば、方形ブロックサイズは、寸法N×Mを有するブロックを含み得る。NおよびMは各々、たとえば、4ピクセル、8ピクセル、16ピクセル、32ピクセル、64ピクセル、128ピクセル、128を超えるピクセル、または先に記載したピクセル数のうちのいずれかのピクセルであってよい。正方形ブロックサイズでは、N=Mである。長方形ブロックサイズでは、NはMとは別である。そのようなコーデックによってサポートされるますます多様なブロックサイズはより高いビデオ圧縮最適化を可能にするが、ますます多様なブロックサイズはまた、RDOを介して実行するには、ブロック区分250の最適化をより困難に、かつより計算コストを高くする。
【0093】
場合によっては、第1の大型ブロック205Aおよび第2の大型ブロック205Bを含めて、ブロック区分250内の大型ブロックは、CTUまたはLCUの例であり得る。場合によっては、ブロック区分250内の大型ブロックは、CTUまたはLCUよりも小さくてよく、CTUまたはLCUから区分されてよい。
【0094】
図3は、レートひずみ最適化(RDO)において使用するためのビットレートR365およびひずみD325を決定するためのエンコーダ305およびデコーダ310の使用を示す概念図300である。概念図は、エンコーダ305およびデコーダ310を示す。エンコーダ305は、入力ブロック(IB)315を受信する。いくつかの例では、入力ブロック315は、最大コーディングユニット(LCU)もしくはコーディングツリーユニット(CTU)、またはそのサブブロック(たとえば、コーディングユニット(CU)、予測ユニット(PU)、変換ユニット(TU))であり得る。エンコーダ305は、フレーム間予測および/またはフレーム内予測を使用して入力ブロック315に対応する予測ブロック(PB)330を識別する。予測ブロック330は、入力ブロック315に極めてマッチすることが見つかるコーディングブロックである。フレーム間予測モードの場合、予測ブロック330は、入力ブロック315を備えたフレームとは別の時間ロケーションに配置され得る。他の時間ロケーションは、入力ブロック315を備えたフレーム前の以前のビデオフレームであり得る。前のビデオフレームは、参照フレームと呼ばれることがある。ビデオエンコーダは、たとえば、X軸に沿った水平変位成分およびY軸に沿った垂直変位成分を含む2次元(2D)動きベクトルに基づいて、予測ブロックの探索を入力ブロック315からの一定の空間変位に制限し得る。フレーム内予測モードの場合、エンコーダ305は、入力ブロック315を含むビデオフレーム内の以前に符号化された近隣ブロックからのデータに基づいて、空間予測を使用して予測ブロック330を形成し得る。
【0095】
エンコーダ305は、残差コーディングブロックを生成するために、予測ブロック330を入力ブロック315から減算する。エンコーダ305は、残差コーディングブロックをエンコーダ305の変換および量子化エンジン内に入力し、変換および量子化エンジンは、変換340および量子化350を実行する。変換340において、エンコーダ305の変換および量子化エンジンは、離散コサイン変換(DCT)、修正離散コサイン変換(MDCT)、離散サイン変換(DST)、高速フーリエ変換(FFT)、ウェーブレット変換、またはそれらの組合せなど、変換を使用して、残差コーディングブロックを残差変換係数に変換する。変換340は、ロッシー圧縮方式であってよい。量子化350において、エンコーダ305の変換および量子化エンジンは、残差変換係数を量子化して、ビットレートR365を低減する。量子化350中にエンコーダ305の変換および量子化エンジンによって実行される量子化の程度は、量子化パラメータ(QP)に基づいてよく、QPを調整することによって修正されてよい。QPは、量子化中のビデオフレームに対する量子化ステップサイズを示し、量子化の後にキャプチャされた画像からどの程度の空間的詳細が保持されるかを制御する。QPが低減すると、圧縮中により多くの画像詳細が保持され、ビデオ品質の増大およびビットレートR365の増大につながる。QPが増大すると、圧縮中により多くの画像詳細がアグリゲートされ、ビデオ品質の低下およびビットレートR365の低下につながる。エンコーダ305のエントロピーエンコーダは、エントロピーコーディング360を実行し、これにより、ビットレートR365を生成する。エントロピーコーディング360は、ロスレスデータ圧縮方式であり得る。エントロピーコーディング360は、たとえば、コンテキスト適応型バイナリ算術コーディング(CABAC)、算術コーディング、ゴロムコーディング、ハフマンコーディング、レンジコーディング(range coding)、シャノンコーディング、シャロン-ファノコーディング、シャノン-ファノ-イライアスコーディング、タンストールコーディング、単項コーディング、ユニバーサルコーディング、またはそれらの組合せを含み得る。
【0096】
デコーダ310は、エンコーダ305によって符号化された符号化ビデオデータを受信し得る。デコーダ310は、符号化ビデオデータ内のシンタックス要素および制御情報に基づいて、入力ブロック315に対応する予測ブロック330を決定し得る。デコーダ310は、逆変換および逆量子化エンジンを含み得る。ビットレート365、QP、および/または符号化ビデオ内のかつ/もしくはそれに関連付けられた他の情報に基づいて、デコーダ310の逆変換および逆量子化エンジンは、逆量子化プロセス350および逆変換プロセス345を実行し得る。逆量子化プロセス350は、再構築された残差変換係数を生成し得る。逆変換プロセス345は、再構築された残差変換係数を受信し、再構築された残差コーディングブロックを生成する。デコーダ310は、再構築された残差コーディングブロックを予測ブロック330に加えて、再構築されたブロック(RB)355を生成する。
【0097】
デコーダ310によって生成された、再構築されたブロック(RB)355は、たとえば、D=Σn(IB(n)-RB(n))2と算出され得る、平均2乗誤差(MSE)320比較を使用して、エンコーダ305内に入力される入力ブロック315と比較され得る。再構築されたブロック355と入力ブロック315との間の差分は、ひずみD325と呼ばれることがある。ひずみD325は、エンコーダ305、デコーダ310、別のデバイス、またはそれらの組合せによって算出され得る。
【0098】
変換プロセス340と量子化プロセス350は両方とも計算コストが高いため、ビットレートR365を決定することは計算コストが高いプロセスである。エントロピーコーディング360も計算コストが高いことがあり、たとえば、HEVC/H.264において使用されるコンテキスト適応型バイナリ算術コーディング(CABAC)は計算コストが高い。逆量子化プロセス350、逆変換プロセス345、および平均2乗誤差320は各々、計算コストが高いため、ひずみD325を決定することも計算コストが高いプロセスである。平均2乗誤差320は、たとえば、2乗演算を含む。レートひずみ最適化(RDO)は、エンコーダ305を使用した符号化およびデコーダ310を使用した復号の複数のパスを実行することを必要とする。具体的には、図4に示すように、RDOは、各々、圧縮モード(たとえば、フレーム間またはフレーム内)、ブロックサイズ、および/またはQP値の特定の組合せに対応する、ビットレートR365およびひずみD325に対する複数の異なる値を決定することを必要とする。したがって、RDOは、ビットレートR365を決定するために、またひずみD325を決定するために計算コストが高い演算を複数回実行することを必要とし、必要とされる計算量的リソースおよび時間をさらに増大させる。
【0099】
図4は、異なるモード405A~μに対するひずみDおよびビットレートRを決定し、ひずみDおよびビットレートRに基づいてRDOを実行する、レートひずみ最適化(RDO)基準エンコーダ400を示す概念図である。RDOは、ひずみDの最小化とビットレートRの最小化との間の最適な平衡を見つけるために使用され得る。場合によっては、RDOは、所与のビットレートRに対するひずみDを最小限に抑えて、たとえば、特定のファイルサイズにおいて可能な最高品質ビデオを生成するために使用される。場合によっては、RDOは、所与のひずみDに対するビットレートRを最小限に抑えて、たとえば、特定のビデオ品質に対して可能な最小ファイルサイズを生成するために使用される。
【0100】
RDOは、異なる圧縮モード、ブロックサイズ、およびQP値で符号化および復号の複数のパスを実行することを必要とする。圧縮モードは、フレーム間圧縮またはフレーム内圧縮を指す。簡単のために、圧縮モード、ブロックサイズ、およびQP値の異なる組合せは図4において異なるモード405A~μと単に呼ばれる。図4のRDO基準エンコーダ400は、第1のモード405Aの下で、エンコーダ305によって行われる符号化およびデコーダ310によって行われる復号と同様の符号化および復号410Aを実行する。エンコーダ400は、符号化および復号410Aを実行する際、第1のモード405Aに対応するビットレート値RAおよび第1のモード405Aに対応するひずみ値DAを生成する。エンコーダ400は、JA=DA+λRAを算出することによって、第1のモード405Aの使用に対応するコストJA415Aを決定する。ラムダ(λ)は、ラグランジュ乗数を表す。エンコーダ400は、第2のモード405Bで第2の符号化および復号410Bを実行し、第2のモード405Bでコスト415B JB=DB+λRBを決定する。エンコーダ400は、第3のモード405Cで第3の符号化および復号410Cを実行し、第3のモード405Cでコスト415C JC=DC+λRCを決定する。エンコーダ400が最終的な第μのモード405μに達するまで、エンコーダ400は、1つまたは複数の追加の符号化、復号、およびコスト算出を実行する。エンコーダ400は、第μのモード405μで最終的な符号化および復号410μを実行し、第μのモード405μでコスト415μ Jμ=Dμ+λRμを決定する。この例では、μは3よりも大きい任意の数を表し得る。エンコーダ400は、min(JA,JB,JC,...Jμ)と書くことができるコスト415A~μの最小値440を見つけるために最小関数を算出する。図4の例では、エンコーダ400は、第3のモード405Cに対応する第3のコストJC 415Cがコスト415A~μの最小値440であると決定する。第3のコストJC 415Cは最小値440であるため、エンコーダ400は、ビデオデータの現在ブロックを符号化するために第3のモード405Cが最適であると結論付ける。コストJは、レートひずみコストJと呼ばれることがある。
【0101】
図3に関して論じたように、各符号化および復号410A~μは、それ自体、計算量的に規模が大きい。図4のエンコーダ400によって実行されるRDOプロセスは、コスト415A~μの最小値440が決定され得るように、多数の(μ)符号化および復号410A~μプロセスを実行する。エンコーダ400は、ビデオデータの各ビデオフレームの各ブロックに対して図4に示すRDOプロセスを実行する。いくつかの例では、各ブロックは、LCUもしくはCTI、またはそれらのサブブロック(たとえば、CU、PU、TU)であり得る。結果として、計算コストが高いRDOプロセスが各ビデオに対して複数回実行され、計算コストをさらに高める。
【0102】
モード405A~μのうちの1つの下で符号化されることになるブロックは、モード405A~μのうちの異なる1つのモードの下で符号化されることになるブロックと比較してわずかに修正されてよい。したがって、モード405A~μのうちの1つの下で符号化されることになるブロックは、モードの405A~μのうちの異なる1つのモードの下で符号化されることになるブロックの修正された変形態と呼ばれることがある。
【0103】
図5は、真のRDOを実行する代わりに、レートひずみ最適化(RDO)を推定するために絶対差分和(SAD)、絶対変換差分和(SATD)、および/または簡素化ビットレート推定値を決定するエンコーダ500を示す概念図である。RDOは非常に最適化された圧縮をもたらすが、計算コストが高いため、エンコーダ500は、真のRDO算出を実行する代わりに、効率性を増大させるために、RDOを推定する。RDOを推定するための1つの技法は、代わりに簡素化ひずみ推定値Eを算出することによってひずみDを算出し、かつ/または代わりに簡素化ビットレート推定値Oを算出することによってビットレートRを推定することである。このRDO推定技法は、エンコーダ500によって使用される。エンコーダ500が実行するこの技法はRDOとは異なるため、エンコーダ500は、非RDOエンコーダと呼ばれることがある。
【0104】
SADおよびSATDは、図3の平均2乗誤差(MSE)320算出よりも実行がより高速かつ計算コストが高いブロック間の類似性の2つの測定値である。SATDは、SADよりも計算コストがより高く、場合によっては、SADよりもより正確であり得る。SATDはさらに、概して、MSE320よりも計算コストが低い。したがって、いくつかのエンコーダは、ひずみDの推定値を出力するために、図3のMSE320演算をSADまたはSATDと置換することがある。加えて、いくつかのエンコーダは、ひずみDの推定値として、入力ブロック310および予測ブロック330に基づいて、SADまたはSATDを単に実行し得る。同様に、エンコーダ500など、いくつかのエンコーダは、ひずみDの推定値として、入力ブロック310および予測ブロック330の残差に基づいて、SADまたはSATDを実行し得る。変換340、量子化350、逆量子化350、逆変換345、および再構築されたブロック315の生成など、計算コストが高いステップが省かれるため、どちらのプロセスも計算コストをさらに低減する。しかしながら、これは、推定値の精度をなおさらに低減する。そのようなSADまたはSATD演算の出力は、簡素化ひずみ推定値Eと呼ばれることがある。エンコーダ500のような、いくつかのエンコーダは、ひずみDの推定値として簡素化ひずみ推定値Eを使用する。
【0105】
同様に、エンコーダ500は、簡素化ビットレート推定値Oを生成するために簡素化ビット予測アルゴリズムを使用する。たとえば、エンコーダ500の簡素化ビット予測アルゴリズムは、実際のエントロピー符号化(たとえば、CABAC符号化)を無視し、代わりに、(たとえば、以下でさらに論じる
【0106】
【数17】
【0107】
決定のいくつかの態様に類似した)Rに近い簡素化ビットレート推定値Oとしてビットレートメタデータを使用する。いくつかの例では、エンコーダ500の簡素化ビット予測アルゴリズムは、非ゼロ係数の数に基づいて、簡素化ビットレート推定値Oを算出し得る。簡素化ビット予測アルゴリズムは、入力ブロック315および/または予測ブロック330を入力と見なすことができ、変換340、量子化350、および/またはエントロピーコーディング360を省くことができる。簡素化ビット予測アルゴリズムは、変換340、量子化350、および/またはエントロピーコーディング360よりも計算コストがより低いが、精度もやはり低い。たとえば、CABACなど、いくつかのエントロピーコーダは計算コストが高いため、エンコーダ500は、CABACまたは他の計算コストが高いエントロピーコーダを使用することを避けるために、真のビットレートRの代わりに、簡素化ビット予測アルゴリズムおよび簡素化ビットレート推定値Oを使用し得る。
【0108】
エンコーダ400のように、エンコーダ500は、異なる圧縮モード、ブロックサイズ、およびQP値でコスト推定値Γを生成する複数のパスを実行する。図4のモード405A~μと同様に、圧縮モード、ブロックサイズ、およびQP値のこれらの異なる組合せは、図5で単に異なるモード505A~Ψと呼ばれる。エンコーダ500は、Γ=E+λOを算出することによって、コスト推定値Γを生成する。コスト推定値Γは、所与のモードに対するコストJの簡素化推定値と見なされてよい。図5のエンコーダ500は、第1のモード505Aの下で、入力ブロックと予測ブロックとの間の残差510Aを決定する。残差510Aに基づいて、エンコーダ500は、第1のモード505Aに対応する簡素化ひずみ推定値EAおよび第1のモード505Aに対応する簡素化ビットレート推定値OAを決定する。エンコーダ500は、ΓA=EA+λOAを算出することによって、第1のモード505Aの使用に対応するコスト推定値ΓA 515Aを決定する。エンコーダ500は、第2のモード505Bの下で第2の残差510Bを決定し、第2の残差510Bに基づいて、第2のモード505Bの下でコスト推定値515B ΓB=EB+λOBを決定する。エンコーダ500は、第3のモード505Cの下で第3の残差510Cを決定し、第3の残差510Cに基づいて、第3のモード505Cの下でコスト推定値515C ΓC=EC+λOCを決定する。エンコーダ500は、エンコーダ500が最終的な第Ψのモード505Ψに最終的に達するまで、エンコーダ500は、1つまたは複数の残差、簡素化ひずみ推定値E、簡素化ビットレート推定値O、およびコスト推定値Γの算出を実行する。エンコーダ500は、第Ψのモード505Ψの下で最終的な第Ψの残差510Ψを決定し、第Ψの残差510Ψに基づいて、第Ψのモード505Ψの下でコスト推定値515Ψ ΓΨ=EΨ+λOΨを決定する。この例では、Ψは3よりも大きい任意の数を表し得る。エンコーダ500は、min(ΓABC,…ΓΨ)と書かれてよい、コスト推定値515A~Ψの最小値540を見つけるために最小関数を算出する。図5の例では、エンコーダ500は、第3のモード505Cに対応する第3のコスト推定値ΓC 515Cがコスト515A~Ψの最小値540であると決定する。第3のコスト推定値ΓC 515Cは最小値540であるため、エンコーダ500は、ビデオデータの現在ブロックを符号化するために第3のモード505Cが最適であると結論付ける。最小値540はエンコーダ400によって決定された最小値440を推定するため、最小値540は、最小推定値540または簡素化最小推定値540と呼ばれることがある。コスト推定値Γは、簡素化コスト推定値Γ、レートひずみコスト推定値Γ、簡素化レートひずみコスト推定値Γ、または単にコストΓと呼ばれることがある。
【0109】
最小推定値540を見つけ、第3のモード505Cが最小推定値540に対応すると決定することによって、エンコーダ500はRDOを推定する。簡素化ひずみ推定値Eおよび簡素化ビットレート推定値Oを使用してRDOを推定するエンコーダ500は、真のRDOを実行するエンコーダ400よりも実行する計算コストが低い。しかしながら、簡素化ひずみ推定値Eおよび簡素化ビットレート推定値Oを使用してRDOを推定するエンコーダ500は、真のRDOを実行するエンコーダ400と比較して著しく低減された圧縮品質をもたらす。いくつかの例では、非RDOエンコーダ500を用いて圧縮されたビデオのビットレートは、RDOエンコーダ400を使用した同じビデオの圧縮と比較して同じビデオ品質のおおよそ20%だけ増大した。
【0110】
図6は、異なるモードに対して
【数18】
に基づいてRDOを実行するために、1つまたは複数のニューラルネットワーク615A~Ωを使用するエンコーダ600を示す概念図である。エンコーダ600は、AIベースのエンコーダ、MLベースのエンコーダ、またはMNベースのエンコーダと呼ばれることがある。非RDOエンコーダ500と同様に、NNベースのエンコーダ600は、モード605A~Ωに対する残差610A~Ωを算出する。エンコーダ600は、1つまたは複数のニューラルネットワーク(NN)615A~Ωを使用して、ひずみ予測
【数19】
と呼ばれるひずみDの正確な予測を生成する。エンコーダ600は、1つまたは複数のニューラルネットワーク(NN)615A~Ωを使用して、ビットレート予測
【数20】
と呼ばれるビットレートRの正確な予測を生成する。エンコーダ600の1つまたは複数のNN615A~Ωは、所与のモードに対応する残差610A~Ωの残差に基づいて、モード605A~Ωの所与のモードに対してひずみ予測
【数21】
を生成し得る。エンコーダ600の1つまたは複数のNN615A~Ωは、所与のモードに対応する残差610A~Ωの残差に基づいて、モード605A~Ωの所与のモードに対して、ビットレート予測
【数22】
またはその少なくとも成分(たとえば、以下で論じるような
【数23】
)を生成し得る。
【数24】
に基づいて、エンコーダ600は、
【数25】
と呼ばれる、コストJA 415A~Jμ 415μの正確な予測を生成し得る。エンコーダ600は、式
【数26】
を使用して、コスト予測
【数27】
を決定する。
【0111】
RDOエンコーダ400および非RDOエンコーダ500のように、NNベースのエンコーダ600は、異なる圧縮モード、ブロックサイズ、およびQP値で、コスト予測
【0112】
【数28】
【0113】
を生成する複数のパスを実行する。図4のモード405A~μと同様に、圧縮モード、ブロックサイズ、およびQP値のこれらの異なる組合せは、図6において単に異なるモード605A~Ωと呼ばれる。エンコーダ600は、
【数29】
を生成する。コスト予測
【数30】
は、所与のモードに対するコストJの予測と見なされ得る。図6のエンコーダ600は、第1のモード605Aの下で、入力ブロックと予測ブロックとの間の残差610Aを決定する。残差610Aに基づいて、エンコーダ600は、第1のモード605Aに対応するひずみ予測
【数31】
620Aおよび第1のモード605Aに対応するビットレート予測
【数32】
625Aを決定する。エンコーダ600は、
【数33】
を計算することによって、第1のモード605Aの使用に対応するコスト予測
【数34】
630Aを決定する。エンコーダ600は、第2のモード605Bの下で第2の残差610Bを決定し、第2の残差610Bに基づいて、ひずみ予測
【数35】
620Bおよびビットレート予測
【数36】
625Bを決定し、第2のモード605Bの下でコスト予測
【数37】
630Bを決定する。エンコーダ600は、第3のモード605Cの下で第3の残差610Cを決定し、第3の残差610Cに基づいて、ひずみ予測
【数38】
620Cおよびビットレート予測
【数39】
625Cを決定し、第3のモード605Cの下でコスト予測
【数40】
630Cを決定する。エンコーダ600が最終的な第Ωのモード605Ωに最終的に達するまで、エンコーダ600は、1つまたは複数の残差、
【数41】
算出を実行する。エンコーダ600は、第Ωのモード605Ωの下で最終的な第Ωの残差610Ωを決定し、第Ωの残差610Ωに基づいて、ひずみ予測
【数42】
620Ωおよびビットレート予測
【数43】
625Ωを決定し、第Ωのモード605Ωの下でコスト予測
【数44】
630Ωを決定する。この例では、Ωは3よりも大きな任意の数を表し得る。エンコーダ600は、
【数45】
と書かれてよい、コスト予測630A~Ωの最小値640を見つけるために最小関数を算出する。図6の例では、エンコーダ600は、第3のモード605Cに対応する第3のコスト予測
【数46】
630Cがコスト予測630A~Ωの最小値640であると決定する。第3のコスト予測
【数47】
630Cは最小値640であるため、エンコーダ600は、ビデオデータの現在ブロックを符号化するために第3のモード605Cが最適であると結論付ける。最小値640はエンコーダ400によって決定される最小値440を予測するため、最小値640は最小予測640と呼ばれることがある。
【数48】
と呼ばれることがある。
【0114】
エンコーダ600は、各モードに対してNN615Aの異なるNNを用いて示されている。いくつかの例では、エンコーダ600が、異なるモード605A~Ωに対して、
【数49】
を並行して決定することができるように、異なるNNが異なるモードに対して使用され得る。いくつかの例では、異なるモード605A~Ωに対して、
【数50】
を決定するために、1つまたは複数のNNの単一のセットが使用され得る。いくつかの例では、モード605A~Ωの各モードに対して、ひずみ予測
【数51】
620A~Ωを決定するために、第1のNNが使用され、ビットレート予測
【数52】
625A-Ωを決定するために、第2のNNが使用される。第1のNN 715Aおよび第2のNN 715Bをこのように使用するエンコーダ700の例は、図7に示される。いくつかの例では、
【数53】
の両方を決定するために、単一のNNが使用される。
【0115】
いくつかの例では、図7に関してさらに示し、論じるように、ビットレート予測
【数54】
は、中間ビットレート予測値
【数55】
の和である。エンコーダ600による、ビットレート予測
【数56】
の算出は、
【数57】
と表現され得る。
【数58】
は、ビットレート残差予測と呼ばれることがある。
【数59】
は、ビットレートメタデータ予測と呼ばれることがある。いくつかの例では、エンコーダ600は、1つまたは複数のNN615A~Ωによる、モード605A~Ωのうちのモードに対応する残差610A~Ωの残差の入力としての受信に応答して、1つまたは複数のニューラルネットワーク(NN)615A~Ωの1つまたは複数の出力に基づいて、ビットレート残差予測
【数60】
を決定し得る。いくつかの例では、エンコーダ600は、レート予測エンジンによるメタデータの入力としての受信に応答して、レート推定エンジン750の出力に基づいて、ビットレートメタデータ予測
【数61】
を決定し得る。メタデータは、特定の圧縮モード(たとえば、フレーム内またはフレーム間)に関連付けられ得る。
【0116】
1つまたは複数のNN615A~Ωの使用は、NNベースのエンコーダ600に追加のフレキシビリティを与える。たとえば、追加のビデオ品質利得のためのビデオ後処理のために同じニューラルネットワークハードウェア(1つまたは複数のNN615A~Ω)が使用され得る。たとえば、ビデオ復号フロー中、復号出力は、たとえば、リンギング/ブロッキングアーティファクトを低減すること、エラー処理を改善すること、より高いフレームレートビデオを(たとえば、フレーム補間を通じて)生成すること、輝度を調整すること、コントラストを調整すること、色飽和度を調整すること、カラーマッピングを調整すること、トーンマッピングを調整すること、他の画像特性を調整すること、赤目補正を実行すること、視線補正を実行すること、肌のシミ補正を実行すること、またはそれらの組合せによって、追加のビデオ品質利得のためにさらに処理され得る。
【0117】
本明細書で論じる1つまたは複数のNN615A~Ωは、畳み込みニューラルネットワーク(CNN)、ディープCNN、全結合層を備えたNN、全結合層を備えたCNN、全結合層を備えたディープCNN、別のタイプのNN、またはそれらの組合せであってよい。場合によっては、1つまたは複数のNN615A~Ωは、1つまたは複数の機械学習(ML)モデル、1つまたは複数の人工知能(AI)エンジン、またはそれらの組合せによって補足されてよく、または置換されてよい。
【0118】
所与のモードに対してエンコーダ600によって決定されるひずみ予測
【数62】
は、同じモードに対してエンコーダ500によって決定される簡素化ひずみ推定値Eよりもさらにかなり正確である(たとえば、Dの値により近い)ことがあり、同等の計算コストで同等に適時に計算され得る。所与のモードに対してエンコーダ600によって決定されるビットレート予測
【数63】
は、同じモードに対してエンコーダ500によって決定される簡素化ビットレート推定値Oよりもさらにかなり正確である(たとえば、Rの値により近い)ことがあり、同等の計算コストで同等に適時に計算され得る。所与のモードに対してエンコーダ600によって決定されるコスト予測
【数64】
は、同じモードに対してエンコーダ500によって決定されるコスト推定値Γよりもさらにかなり正確である(たとえば、Jの値により近い)ことがあり、同等の計算コストで同等に適時に計算され得る。所与のモードに対してエンコーダ600によって決定される最小予測640は、同じモードに対してエンコーダ500によって決定される最小推定値540よりもさらにかなり正確である(たとえば、最小値440の値により近い)ことがあり、同等の計算コストで同等に適時に計算され得る。いくつかの例では、38.5dBのピーク信号対雑音比(PSNR)におけるRDOエンコーダ400によるRDOを使用したビデオの圧縮は、7.9Mbpsビットレートを実現する。いくつかの例では、PSNR=38.5dBにおける非RDOエンコーダ500によるRDO推定を使用した同じビデオの圧縮は、11Mbpsビットレートを実現し、これは、RDOエンコーダ400によるRDOの使用と比較して28%のかなりのビットレート削減になる。いくつかの例では、PSNR=38.5dBにおけるNNベースのエンコーダ600によるPDO予測を使用した同じビデオの圧縮は、8.4Mbpsビットレートを実現し、これは、RDOエンコーダ400によるRDOの使用と比較して6%だけの小さなビットレート削減になる。この例は、NNベースのエンコーダ600が圧縮最適化において非RDOエンコーダ500を著しく改善することを示す。
【0119】
図7は、
【数65】
の関数を決定することによって、入力ブロック705に対するコスト予測
【数66】
750を決定するエンコーダ700を示す概念図である。エンコーダ700は、入力ブロック(IB)705を受信する。いくつかの例では、入力ブロック705は、LCUもしくはCTU、またはそれらのサブブロック(たとえば、CU、PU、TU)である。エンコーダ700は、フレーム間予測および/またはフレーム内予測を使用して、入力ブロック705に対応する予測ブロック(PB)740を識別する。エンコーダ700は、入力ブロック705から予測ブロック740を減算して、残差710として図7において識別される、残差コーディングブロックを生成する。エンコーダ700は、残差710を1つまたは複数のNN720内に入力する。1つまたは複数のNN720は、入力ブロック705に対応する残差710、量子化パラメータ(QP)、入力ブロック705に対応するブロックサイズおよび圧縮モード(たとえば、フレーム内圧縮またはフレーム間圧縮)、また場合によっては、他のタイプの情報を入力として受信する。1つまたは複数のNN720内に入力される情報に基づいて、1つまたは複数のNN720は、
【数67】
を生成する。
【0120】
1つまたは複数のNN720は、第1のNN715Aおよび第2のNN715Bを含み得る。第1のNN715Aおよび第2のNN715Bは、1つまたは複数のNN720によって受信される入力に関して論じたように、同じ入力を受信し得る。第1のNN715Aおよび第2のNN715Bは、1つまたは複数のNN720によって受信されているとして論じる入力の異なるサブセットを受信し得る。いくつかの例では、第1のNN715Aは、その入力(たとえば、残差710、QP760、ブロックサイズ765、圧縮モード770、またはそれらの組合せ)の受信に応答して、ひずみ予測
【数68】
725を生成する。いくつかの例では、第2のNN715Bは、その入力(たとえば、残差710、QP760、ブロックサイズ765、圧縮モード770、またはそれらの組合せ)の受信に応答して、ビットレート残差予測
【数69】
730を生成する。いくつかの例では、1つまたは複数のNN720は、1つまたは複数の中間値を出力し、エンコーダ700は、1つまたは複数の中間値をフォーマットし、変換し、算術的に調整し、かつ/または場合によっては、処理して、
【数70】
を生成する。
【0121】
エンコーダ700は、予測ブロック740および/またはそれによりエンコーダ700が予測ブロック740を識別したプロセスに基づいて、フレーム内またはフレーム間予測の詳細など、インター/イントラ予測詳細745を決定し得る。インター/イントラ予測詳細745は、たとえば、ブロックサイズ、CTUをCUにどのようにスプリットするかについての判定、インター予測情報、イントラ予測情報、またはそれらの組合せを含み得る。たとえば、ブロックが、32×32など、比較的大きなブロックサイズを有する場合、
【数71】
735は小さくてよい。ブロックがより小さなブロックに分解される場合、
【数72】
735はより大きくてよい。イントラ予測情報は、イントラモードが最確モード(MPM)の部分であるか否かを含み得る。インター予測情報は、フレーム間コーディングおよびマージングなどの情報を含んでよく、動きベクトル差分(MVD)のサイズを含んでよい。エンコーダ700のレート推定エンジン750は、インター/イントラ予測詳細745を入力として受信し得、ビットレートメタデータ予測
【数73】
735を出力し得る。たとえば、レート推定エンジン750は、ビットレートメタデータ予測
【数74】
735の部分としてインター/イントラ予測詳細745を含めることによって、インター/イントラ予測詳細745に基づいて、ビットレートメタデータ予測
【数75】
735を生成し得る。いくつかの例では、レート予測エンジン750は、1つまたは複数の中間値を出力し、エンコーダ700はこの中間値をフォーマットし、変換し、算術的に調整し、かつ/または場合によっては処理して、ビットレートメタデータ予測
【数76】
735を生成する。
【0122】
エンコーダ700は、エンコーダ700が、
【数77】
を決定すると、エンコーダ700は、コスト予測
【数78】
750を決定する。エンコーダ700は、
【数79】
を決定する。いくつかの例では、エンコーダ700は、
【数80】
を決定する。
【0123】
図8は、特定の入力ブロックに関連付けられる特定の残差805に対するひずみ予測
【数81】
865を決定するニューラルネットワーク(NN)890を示す概念図である。図8のエンコーダ800のNN890は、畳み込みニューラルネットワーク(CNN)、ディープCNN、全結合層を備えたニューラルネットワーク(NN)、全結合層を備えたCNN、全結合層を備えたディープCNN、別のタイプのNN、またはそれらの組合せのうちの少なくとも1つであってよい。NN890は、畳み込み層のセット(たとえば、畳み込み層885のセット)、全結合層のセット、1つまたは複数の非線形アクティブ化層(たとえば、1つまたは複数の正規化線形ユニットまたはReLU)、および/または他のニューラルネットワーク層を含み得る。
【0124】
NN890は残差805を受信し、残差805は、X軸に沿って32ピクセル(たとえば、凡例290を参照)、Y軸に沿って32ピクセル、およびX軸およびY軸に直角な(深さを表す)Z軸に沿って1ピクセルの次元を有し得る。NN890はまた、QP870、圧縮モード875(たとえば、フレーム内またはフレーム間)、およびブロックサイズ880を受信し得る。
【0125】
上述のように、NN890は、畳み込み層のセット885を含み得る。図8に示す畳み込み層885のセットは、畳み込み層の第1のセット886を含む。1つの例示的な例では、畳み込み層の第1のセット886は、32個の畳み込みフィルタを含み得る。畳み込み層の第1のセット886は、たとえば、第1の3×3 2次元畳み込み層(conv2D)810、第2の3x3conv2D815、および第3の3x3conv2D820を含み得る。畳み込み層の第1のセット886は、特徴空間の次元を低減し得る。たとえば、図8において、第1の3×3conv2D810の出力は、30×30×32の次元を有し、第2の3×3conv2D815の出力は、28×28×32の次元を有し、第3の3×3conv2D820の出力は、26×26×32の次元を有する。各層の出力は、続く層の入力であり得る。非線形アクティブ化関数(正規化線形ユニット、またはReLUなど)は、この場合も、畳み込み層の各々の出力に適用され得る。
【0126】
畳み込み層のセット885は、畳み込み層の第1のセット886に続いて、畳み込み層の第2のセット887に先行して、最大プーリング層825を含み得る。畳み込み層の第1のセット886の出力は、最大プーリング層825の入力として働き得る。最大プーリング層825は、畳み込みを実行するのではなく、各受容野にわたって最大値を計算し得る。最大プーリング層825は、畳み込み層の第1のセット886の出力を効果的にダウンサンプリングし、すべての続く層に必要とされる演算数を低減し得る。
【0127】
畳み込み層のセット885は、最大プーリング層825に続いて、畳み込み層の第2のセット887を含み得る。最大プーリング層825の出力は、第2の畳み込み層887に対する入力として働き得る。畳み込み層の第2のセット887は、たとえば、64個の畳み込みフィルタを含み得る。畳み込み層の第2のセット887は、たとえば、第4の3×3conv2D830、第5の3×3conv2D835、および第6の3×3conv2D840を含み得る。畳み込み層の第2のセット887は、特徴空間の次元数をさらに低減し得る。たとえば、図8において、第4の3×3conv2D830の出力は13×13×32の次元を有し、第5の3×3conv2D835の出力は11×11×64の次元を有し、第6の3×3conv2D840の出力は7×7×64の次元を有する。各層の出力は、続く層の入力であり得る。非線形アクティブ化関数(ReLUなど)は、この場合も、畳み込み層の各々の出力に適用され得る。
【0128】
NN890は、平坦化ブロックデータ演算845を使用して、畳み込み層の第2のセット887の出力を1次元(1D)ベクトルに平坦化し得る。QP870、圧縮モード875、およびブロックサイズ880に対応するデータは、平坦化1Dベクトルに付加され得る。22、25、27、30が{0,0.33,0.66,1}にマッピングされることを示す、QP870データの例が示される。フレーム内およびフレーム間モードが{0,1}にマッピングされることを示す、圧縮モード875データの例が示される。8×8、16×16、32×32が{0,0.5,1}にマッピングされることを示す、ブロックサイズ880データの例が示される。場合によっては、QP870、圧縮モード875、およびブロックサイズ880に対するデータは、この演算よりも早くまたは遅くNN890内に入力され得る。QP870、圧縮モード875、およびブロックサイズ880に対応するデータが付加されるまで、平坦化ベクトルは3136×1の次元を有する。QP870、圧縮モード875、およびブロックサイズ880に対応するデータが付加された後、平坦化ベクトルは3139×1の寸法を有し、式中、3139=3136+3である。QP870、圧縮モード875、およびブロックサイズ880に対応する、3つの付加されたパラメータに対応する3。
【0129】
NN890は、平坦化ブロックデータ演算845によって出力されたベクトルを高密度層のセット888に渡すことができ、これはひずみ予測
【数82】
865を生成し得る。高密度層は、全結合層と呼ばれることもある。各高密度層は、高密度層に対するベクトル入力に線形演算を実行し得る。高密度層のセット888は、たとえば、第1の高密度層850、第2の高密度層855、および第3の高密度層860を含み得る。高密度層のセット888の各高密度層の出力は、高密度層のセット888の続く高密度層の入力であり得る。非線形アクティブ化関数(ReLUなど)は、第1の高密度層850の出力に、また第2の高密度層855の出力に適用され得る。
【0130】
NN890は、異なる残差805が与えられ、かつ異なるQP、ブロックサイズ、および圧縮モードが与えられた場合、RDO(たとえば、RDOエンコーダ400によって実行されるような)を実行するエンコーダ400を使用して生成されたトレーニングデータを使用してトレーニングされ得る。NN890によって出力されたいずれかのトレーニングおよびテスト誤差が最小精度レベルに達するまで低減されるまで、NN890はトレーニングされ得る。最小誤差に対応する重みは、
【数83】
の重み付けれた組合せを生成するために、NN890によって使用される。より具体的には、NN890は、異なるQP、ブロックサイズ、および圧縮モードで多くの異なる残差805に対して複数の異なるひずみD値を生成するRDOエンコーダ400のトレーニングデータに基づいて、ひずみ予測
【数84】
865を生成するようにトレーニングされ得る。同様に、NN890または第2のNNは、異なるQP、ブロックサイズ、および圧縮モードで多くの異なる残差805に対して複数の異なるビットレートR値を生成するRDOエンコーダ400のトレーニングデータに基づいて、ビットレート残差予測
【数85】
を生成するようにトレーニングされ得る。場合によっては、NN890または第2のNNは、トレーニングデータに対するビットレートR値を生成するために、RDOエンコーダ400内に入力された同じ残差805、QP、ブロックサイズ、および圧縮モードに対してビットレート推定エンジン735によって出力された
【数86】
を生成するようにトレーニングされ得る。
【0131】
いくつかの例では、エンコーダ600、エンコーダ700、またはエンコーダ800を使用して符号化されたビデオデータは、1つまたは複数のビデオ符号化および復号規格(たとえば、HEVC、VVC、MPEG、AVC、または他の規格)に準拠するデコーダを使用して復号可能であり得る。いくつかの例では、エンコーダ600、エンコーダ700、またはエンコーダ800を使用して符号化されたビデオデータは、復号するための特殊デコーダを必要としない。
【0132】
図9は、データ符号化技法900を示す流れ図である。図9の流れ図によって示すデータ符号化技法900は、デバイスによって実行され得る。デバイスは、符号化デバイス104、復号デバイス112、エンコーダ305、デコーダ310、エンコーダ400、エンコーダ500、エンコーダ600、エンコーダ700、1つまたは複数のニューラルネットワーク720、レート推定エンジン750、エンコーダ800、ニューラルネットワーク890、画像キャプチャデバイス、ビデオキャプチャデバイス、画像処理デバイス、ビデオ処理デバイス、画像キャプチャおよび処理デバイス、ビデオキャプチャおよび処理デバイス、クラウドサービスの1つまたは複数のネットワークサーバ、コンピューティングシステム1000、またはそれらのいくつかの組合せであってよい。
【0133】
動作905において、デバイスはビデオデータのビデオフレームのブロックの残差部分を受信する。ブロックのブロックサイズは、4平方ピクセル、8平方ピクセル、16平方ピクセル、32平方ピクセル、64平方ピクセル、128平方ピクセル、128を超える平方ピクセル、または前に記載した値のうちのいずれかの間の値であってよい。ブロックは、4ピクセル、8ピクセル、16ピクセル、32ピクセル、64ピクセル、128ピクセル、128を越えるピクセル、または前に記載した値のうちのいずれかの間の値の長さの第1のサイドを有し得る。ブロックは、4ピクセル、8ピクセル、16ピクセル、32ピクセル、64ピクセル、128ピクセル、128を越えるピクセル、または前に記載した値のうちのいずれかの間の値の長さの第2のサイドを有し得る。図2の画像200は、動作905のビデオデータのビデオフレームの例である。図2のブロック205A、205B、210A、210B、215A、および215Bは、動作905のビデオフレームのブロックのそれぞれの例である。図2の画像200は残りのフレームであってよい。ビデオデータのビデオフレームのブロックの残差部分は、たとえば、図1におけるようにビデオソース102から受信され得る。図5の残差データ510A~510Ψは、動作905のビデオデータのビデオフレームのブロックの残差部分の例である。図6の残差データ610A~610Ωは、動作905のビデオデータのビデオフレームのブロックの残差部分の例である。図7の残差データ710は、動作905のビデオデータのビデオフレームのブロックの残差部分の例である。図8の残差データ805は、動作905のビデオデータのビデオフレームのブロックの残差部分の例である。
【0134】
動作910において、デバイスは、1つまたは複数のニューラルネットワーク(NN)によるブロックの残差部分の入力としての受信に応答して、1つまたは複数のNNの1つまたは複数の出力に基づいて、
【数87】
を決定する。1つまたは複数のNNは、畳み込みニューラルネットワーク(CNN)、ディープCNN、全結合層を備えたニューラルネットワーク(NN)、全結合層を備えたCNN、全結合層を備えたディープCNN、またはそれらの組合せのうちの少なくとも1つを含み得る。図6
【数88】
は、動作910のひずみ予測
【数89】
の例である。図6
【数90】
は、動作910のビットレート予測
【数91】
の例である。図6のニューラルネットワークNNA615A~NNΩ615Ωは、動作910の1つまたは複数のニューラルネットワーク(NN)の例である。図7のひずみ予測
【数92】
725は、動作910のひずみ予測
【数93】
の例である。図7のビットレート残差予測
【数94】
730は、動作910のビットレート予測
【数95】
の例である。図7
【数96】
の和は、動作910のビットレート予測
【数97】
の例である。図7のニューラルネットワーク720は、動作910の1つまたは複数のニューラルネットワーク(NN)の例である。図8のひずみ予測
【数98】
865は、動作910のひずみ予測
【数99】
の例である。図8のニューラルネットワーク890は、動作910の1つまたは複数のニューラルネットワーク(NN)の例である。
【0135】
いくつかの例では、1つまたは複数のNNは、第1のニューラルネットワーク(NN)および第2のNNを含む。ひずみ予測を決定することは、第1のNNによるブロックの残差部分の入力としての受信に応答した第1のNNの第1の出力に基づき、ビットレート予測を決定することは、第2のNNによるブロックの残差部分の入力としての受信に応答した第2のNNの第2の出力に基づく。図7の第1のNN715Aは、第1のNNの例である。図7の第2のNN715Bは、第2のNNの例である。
【0136】
いくつかの例では、1つまたは複数のNNはニューラルネットワーク(NN)を含む。ひずみ予測を決定することは、NNによるブロックの残差部分の入力としての受信に応答したNNの第1の出力に基づき、ビットレート予測を決定することは、NNによるブロックの残差部分の入力としての受信に応答した同じNNの第2の出力に基づく。たとえば、単一のNNは、ひずみ予測とビットレート予測の両方を決定するために使用され得る。図6のニューラルネットワークNNA 615A~NNΩ 615Ωおよび図7のニューラルネットワーク720は、1つまたは複数のニューラルネットワーク(NN)の例である。
【0137】
ひずみ予測は、1つまたは複数のNNによる量子化パラメータ(QP)、ブロックのブロックサイズ、圧縮モード、ブロックの残差部分に関連付けられた情報、またはそれらの組合せのうちの少なくとも1つの受信に応答して決定され得る。ビットレート予測は、1つまたは複数のNNによる、QP、ブロックのブロックサイズ、圧縮モード、ブロックの残差部分に関連付けられた情報、またはそれらの組合せのうちの少なくとも1つの受信に応答して決定され得る。デバイスは、QPをさらに決定し得る。たとえば、図7のニューラルネットワーク720は、QP760、ブロックサイズ765、および/または圧縮モード770を使用して、図7
【数100】
を生成する。同様に、図8のニューラルネットワーク890は、QP870、ブロックサイズ880、および/または圧縮モード875を使用して、図8
【数101】
を生成する。
【0138】
いくつかの例では、デバイスは、ブロックに対する圧縮モードに関連付けられたメタデータを受信し得る。圧縮モードは、フレーム間圧縮またはフレーム内圧縮であってよい。デバイスは、1つまたは複数のNNによるブロックの残差部分の入力としての受信に応答した1つまたは複数のニューラルネットワーク(NN)の1つまたは複数の出力に基づいてビットレート残差予測を決定し得る。デバイスは、レート推定エンジンによるメタデータの入力としての受信に応答したレート推定エンジンの出力に基づいて、ビットレートメタデータ予測を決定し得る。ビットレート予測は、ビットレート残差予測とビットレートメタデータ予測の和であってよい。レートひずみコスト予測を算出するために使用される関数は、ひずみ予測とビットレート予測の和をラグランジュ乗数で乗算したものであってよい。たとえば、(図7のコスト予測750において示した)図7
【数102】
の例である。ラグランジュ乗数λの例については、図4のコスト415A~415μ、図5のコスト推定値515A~515Ψ、図6のコスト予測630A~630Ω、図7のコスト予測750に関して論じた。
【0139】
動作915において、デバイスは、
【数103】
を算出する。図6のコスト予測630A~630Ωは、動作915のレートひずみコスト予測
【数104】
の例である。図7のコスト予測750は、動作915のレートひずみコスト予測
【数105】
の例である。
【0140】
動作920において、デバイスは、レートひずみコスト予測
【数106】
に基づいて、ブロックを圧縮するための予測モードを決定する。たとえば、図6の最小予測640(コスト予測
【数107】
630C)に対応するモード605Cは、動作920のブロックを圧縮するための予測モードの例である。場合によっては、デバイスは、ブロックを圧縮するための予測モードに基づいてビデオデータを圧縮することによって、圧縮されたビデオデータを生成し得る。デバイスはまた、ブロックを圧縮するための予測モードに基づいてビデオデータを圧縮することによって、圧縮されたビデオデータを生成し得る。圧縮されたビデオデータは、図1におけるように通信リンク120に沿って符号化デバイス104から復号デバイス112に送られ得る。圧縮されたビデオデータは、図3におけるようにエンコーダ305からデコーダ310に送られ得る。圧縮されたビデオデータは、本明細書で識別されるコーデック規格のうちのいずれか、本明細書で識別されるビデオデコーダ規格のうちのいずれか、本明細書で識別されるビデオエンコーダ規格のうちのいずれかに関連付けられたいずれかのビデオデコーダ規格、またはそれらの組合せなど、1つまたは複数のビデオデコーダ規格に準拠するデコーダを使用して復号可能であり得る。復号デバイス112および/またはデコーダ310は、そのようなデコーダの例である。デバイスはまた、1つまたは複数のNNを使用して、ビデオデータの後処理を実行し得る。
【0141】
いくつかの例では、デバイスはまた、異なるブロックサイズを備えたブロックの修正された変形態に基づいて、第2のレートひずみコスト予測を算出する。そのような例では、デバイスは、レートひずみコスト予測および第2のレートひずみコスト予測の最小値に基づいて、ブロックに対するブロックサイズを選択し得る。いくつかの例では、デバイスはまた、異なる圧縮モードを備えたブロックの修正された変形態に基づいて、第2のレートひずみコスト予測を算出する。そのような例では、デバイスは、レートひずみコスト予測および第2のレートひずみコスト予測の最小値に基づいて、ブロックを圧縮するための予測モードを決定し得る。図6のコスト予測630A~630Ωのうちの2つは、それぞれ、レートひずみコスト予測および第2のレートひずみコスト予測の例であり得る。図6の最小予測640は、レートひずみコスト予測および第2のレートひずみコスト予測の最小値の例である。たとえば、図6のコスト予測
【数108】
630Cは、レートひずみコスト予測または第2のレートひずみコスト予測のうちのいずれかの例であり得る。図6の異なるモード605A~605Ωは、ブロックに対する異なるブロックサイズ、ブロックに対する異なる圧縮モード、またはそれらの組合せの例であり得る。
【0142】
場合によっては、図9の流れ図によって示すデータ符号化技法900、および図1図3図4図5図6図7、および図8の概念図に示される技法の少なくともサブセットがクラウドサービスの1つまたは複数のネットワークサーバによって遠隔で実行され得る。いくつかの例では、本明細書で説明するプロセス(たとえば、データ符号化技法900、図1図3図4図5図6図7、および図8の概念図に示される技法、および/または本明細書で説明する他のプロセス)は、コンピューティングデバイスまたは装置によって実行され得る。いくつかの例では、データ符号化技法900および/または図1図3図4図5図6図7、および図8の概念図に示される技法は、符号化デバイス104、復号デバイス112、エンコーダ305、デコーダ310、エンコーダ400、エンコーダ500、エンコーダ600、エンコーダ700、1つまたは複数のニューラルネットワーク720、レート推定エンジン750、エンコーダ800、ニューラルネットワーク890、画像キャプチャデバイス、ビデオキャプチャデバイス、画像処理デバイス、ビデオ処理デバイス、画像キャプチャおよび処理デバイス、ビデオキャプチャおよび処理デバイス、クラウドサービスの1つまたは複数のネットワークサーバ、コンピューティングシステム1000、またはそれらのいくつかの組合せのうちの1つまたは複数によって実行され得る。データ符号化技法900および/または図1図3図4図5図6図7、および図8の概念図に示される技法は、図10に示すコンピューティングシステム1000のアーキテクチャを備えたコンピューティングシステムによって実行され得る。コンピューティングデバイスは、モバイルデバイス(たとえば、モバイルフォン)、デスクトップコンピューティングシステム、タブレットコンピューティングシステム、ウェアラブルデバイス(たとえば、VRヘッドセット、ARヘッドセット、ARグラス、ネットワーク接続ウォッチもしくはスマートウォッチ、または他のウェアラブルデバイス)、カメラデバイス、サーバコンピュータ、車両もしくは車両のコンピューティングシステム、ロボティックデバイス、テレビジョン、ならびに/またはデータ符号化技法900および/または図1図3図4図5図6図7、および図8の概念図に示す技法を含めて、本明細書で説明するプロセスを実行するためのリソース能力を備えた任意の他のコンピューティングシステムなど、任意の好適なデバイスを含み得る。場合によっては、コンピューティングシステムまたは装置は、1つまたは複数の入力デバイス、1つまたは複数の出力デバイス、1つまたは複数のプロセッサ、1つまたは複数のマイクロプロセッサ、1つまたは複数のマイクロコンピュータ、1つまたは複数のカメラ、1つまたは複数のセンサー、および/あるいは本明細書で説明するプロセスのステップを実行するように構成される他の構成要素などの、様々な構成要素を含み得る。いくつかの例では、コンピューティングシステムは、ディスプレイ、データを通信および/もしくは受信するように構成されたネットワークインターフェース、それらの任意の組合せ、ならびに/または他の構成要素を含んでよい。ネットワークインターフェースは、インターネットプロトコル(IP)ベースのデータまたは他のタイプのデータを通信および/または受信するように構成され得る。
【0143】
コンピューティングシステムの構成要素は、回路構成の中に実装され得る。たとえば、構成要素は、1つまたは複数のプログラマブル電子回路(たとえば、マイクロプロセッサ、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、中央処理装置(CPU)、および/または他の好適な電子回路)を含み得る、電子回路または他の電子ハードウェアを含むことができ、かつ/またはそれらを使用して実装されることが可能であり、かつ/あるいは本明細書で説明する様々な動作を実行するために、コンピュータソフトウェア、ファームウェア、またはそれらの任意の組合せを含むことができ、かつ/またはそれらを使用して実装されることが可能である。
【0144】
図1図3図4図5図6図7、および図8の概念図、および図9の流れ図によって示されたプロセスは、論理フロー図として編成され、それらの動作は、ハードウェア、コンピュータ命令、またはそれらの組合せで実装され得る動作のシーケンスを表す。コンピュータ命令の文脈では、動作は、1つまたは複数のプロセッサによって実行されると、記載された動作を実行する、1つまたは複数のコンピュータ可読記憶媒体上に記憶されたコンピュータ実行可能命令を表す。概して、コンピュータ実行可能命令は、特定の機能を実行するかまたは特定のデータタイプを実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。動作が説明される順序は、限定として解釈されることを意図せず、説明する任意の数の動作は、プロセスを実装するために任意の順序で、かつ/または並列に組み合わせられ得る。
【0145】
加えて、図1図3図4図5図6図7、および図8の概念図、および図9の流れ図で示されるプロセス、ならびに/または本明細書で説明する他のプロセスは、実行可能命令を用いて構成された1つまたは複数のコンピュータシステムの制御下で実行されてもよく、ハードウェアまたはその組合せによって1つまたは複数のプロセッサ上で集合的に実行するコード(たとえば、実行可能命令、1つまたは複数のコンピュータプログラム、あるいは1つまたは複数のアプリケーション)として実装されてもよい。上で述べたように、コードは、たとえば、1つまたは複数のプロセッサによって実行可能な複数の命令を備えるコンピュータプログラムの形で、コンピュータ可読記憶媒体または機械可読記憶媒体上に記憶されてもよい。コンピュータ可読記憶媒体または機械可読記憶媒体は非一時的であってもよい。
【0146】
図10は、本技術のいくつかの態様を実装するためのシステムの例を示す図である。詳細には、図10はコンピューティングシステム1000の一例を示し、コンピューティングシステム1000は、たとえば、システムの構成要素が接続部1005を使用して互いに通信している、内部コンピューティングシステム、リモートコンピューティングシステム、カメラ、またはそれらの任意の構成要素を構成する、任意のコンピューティングデバイスであり得る。接続部1005は、バスを使用する物理接続、またはチップセットアーキテクチャなどにおけるプロセッサ1010への直接接続であり得る。接続部1005はまた、仮想接続、ネットワーク接続、または論理接続であり得る。
【0147】
いくつかの実施形態では、コンピューティングシステム1000は、本開示において説明する機能が、データセンター、複数のデータセンター、ピアネットワークなどに分散され得る分散型システムである。いくつかの実施形態では、説明するシステム構成要素のうちの1つまたは複数は、構成要素の説明の対象である機能の一部またはすべてを各々実行するような多くの構成要素を表す。いくつかの実施形態では、構成要素は物理デバイスまたは仮想デバイスであり得る。
【0148】
例示的なシステム1000は、少なくとも1つの処理装置(CPUまたはプロセッサ)1010と、読取り専用メモリ(ROM)1020およびランダムアクセスメモリ(RAM)1025などのシステムメモリ1015を含む様々なシステム構成要素をプロセッサ1010に結合する接続部1005とを含む。コンピューティングシステム1000は、プロセッサ1010と直接接続されるか、プロセッサ1010に極めて近接近しているか、またはプロセッサ1010の一部として統合される、高速メモリのキャッシュ1012を含むことができる。
【0149】
プロセッサ1010は、プロセッサ1010、ならびにソフトウェア命令が実際のプロセッサ設計へと組み込まれるような専用プロセッサを制御するように構成される、記憶デバイス1030内に記憶されるサービス1032、1034、および1036などの、任意の汎用プロセッサおよびハードウェアサービスまたはソフトウェアサービスを含むことができる。プロセッサ1010は基本的に、複数のコアまたはプロセッサ、バス、メモリコントローラ、キャッシュなどを含む、完全に自己完結型のコンピューティングシステムであってもよい。マルチコアプロセッサは、対称でも非対称でもよい。
【0150】
ユーザ対話を可能にするために、コンピューティングシステム1000は入力デバイス1045を含み、発話のためのマイクロフォン、ジェスチャ入力またはグラフィカル入力のためのタッチ感知スクリーン、キーボード、マウス、モーション入力、発話などの、任意の数の入力機構を表し得る。コンピューティングシステム1000は出力デバイス1035も含むことができ、これはある数の出力機構のうちの1つまたは複数であり得る。いくつかの事例では、マルチモーダルシステムは、ユーザが複数のタイプの入力/出力を提供してコンピューティングシステム1000と通信することを可能にできる。コンピューティングシステム1000は通信インターフェース1040を含むことができ、これは一般に、ユーザ入力およびシステム出力を支配して管理することができる。通信インターフェースは、オーディオジャック/プラグ、マイクロフォンジャック/プラグ、ユニバーサルシリアルバス(USB)ポート/プラグ、Apple(登録商標)Lightning(登録商標)ポート/プラグ、イーサネットポート/プラグ、光ファイバポート/プラグ、プロプライエタリ有線ポート/プラグ、BLUETOOTH(登録商標)ワイヤレス信号伝送、BLUETOOTH(登録商標)low energy(BLE)ワイヤレス信号伝送、IBEACON(登録商標)ワイヤレス信号伝送、無線周波識別(RFID)ワイヤレス信号伝送、近距離通信(NFC)ワイヤレス信号伝送、専用短距離通信(DSRC)ワイヤレス信号伝送、802.11 Wi-Fiワイヤレス信号伝送、ワイヤレスローカルエリアネットワーク(WLAN)信号伝送、可視光通信(VLC)、Worldwide Interoperability for Microwave Access(WiMAX)、赤外線(IR)通信ワイヤレス信号伝送、公衆交換電話網(PSTN)信号伝送、統合サービスデジタルネットワーク(ISDN)信号伝送、3G/4G/5G/LTEセルラーデータネットワークワイヤレス信号伝送、アドホックネットワーク信号伝送、ラジオ波信号伝送、マイクロ波信号伝送、赤外線信号伝送、可視光信号伝送、紫外光信号伝送、電磁スペクトルに沿ったワイヤレス信号伝送、またはこれらの何らかの組合せを利用したものを含む、有線および/またはワイヤレストランシーバを使用した有線通信またはワイヤレス通信の、受信および/または送信を実行または促進し得る。通信インターフェース1040はまた、1つまたは複数の全地球航法衛星システム(GNSS)システムに関連する1つまたは複数の衛星からの1つまたは複数の信号の受信に基づいて、コンピューティングシステム1000の位置を決定するために使用される、1つまたは複数のGNSS受信機またはトランシーバを含み得る。GNSSシステムは、限定はしないが、米国の全地球測位システム(GPS)、ロシアの全地球航法衛星システム(GLONASS)、中国の北斗航法衛星システム(BDS)、および欧州のGalileo GNSSを含む。いずれの特定のハードウェア構成上で動作することに対し制約がないので、ここではこの基本的な特徴は、それらが開発されるにつれて、改善されたハードウェアまたはファームウェアの構成により容易に置き換えられることがある。
【0151】
記憶デバイス1030は、不揮発性のかつ/または非一時的なかつ/またはコンピュータ可読のメモリデバイスであってよく、ハードディスク、または磁気カセット、フラッシュメモリカード、ソリッドステートメモリデバイス、デジタル多用途ディスク、カートリッジ、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、磁気ストリップ/ストライプ、任意の他の磁気記憶媒体、フラッシュメモリ、メモリスタメモリ、任意の他のソリッドステートメモリ、コンパクトディスク読取り専用メモリ(CD-ROM)光ディスク、再書き込み可能コンパクトディスク(CD)光ディスク、デジタルビデオディスク(DVD)光ディスク、ブルーレイディスク(BDD)光ディスク、ホログラフィック光ディスク、別の光媒体、セキュアデジタル(SD)カード、マイクロセキュアデジタル(microSD)カード、メモリスティック(登録商標)カード、スマートカードチップ、EMVチップ、加入者識別モジュール(SIM)カード、ミニ/マイクロ/ナノ/ピコSIMカード、別の集積回路(IC)チップ/カード、ランダムアクセスメモリ(RAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、読取り専用メモリ(ROM)、プログラマブル読取り専用メモリ(PROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM)、フラッシュEPROM(FLASHEPROM)、キャッシュメモリ(L1/L2/L3/L4/L5/L#)、抵抗性ランダムアクセスメモリ(RRAM/ReRAM)、位相変化メモリ(PCM)、スピン転送トルクRAM(STT-RAM)、別のメモリチップもしくはカートリッジ、および/またはそれらの組合せなどの、コンピュータによってアクセス可能であるデータを記憶できる他のタイプのコンピュータ可読媒体であってよい。
【0152】
記憶デバイス1030は、そのようなソフトウェアを定義するコードがプロセッサ1010によって実行されるとシステムに機能を実行させる、ソフトウェアサービス、サーバ、サービスなどを含むことができる。いくつかの実施形態では、特定の機能を実行するハードウェアサービスは、機能を実行するために、プロセッサ1010、接続部1005、出力デバイス1035などの必要なハードウェア構成要素に関してコンピュータ可読媒体内に記憶された、ソフトウェア構成要素を含むことができる。
【0153】
本明細書で使用する「コンピュータ可読媒体」という用語は、限定はしないが、ポータブルまたは非ポータブルの記憶デバイス、光記憶デバイス、ならびに命令および/またはデータを記憶、格納、または搬送することが可能な様々な他の媒体を含む。コンピュータ可読媒体は、データが記憶されることが可能な、かつワイヤレスにまたは有線接続を介して伝搬する搬送波および/または一時的な電子信号を含まない、非一時的媒体を含んでよい。非一時的媒体の例は、限定はしないが、磁気ディスクもしくはテープ、コンパクトディスク(CD)もしくはデジタル多用途ディスク(DVD)などの光記憶媒体、フラッシュメモリ、メモリ、またはメモリデバイスを含んでよい。コンピュータ可読媒体は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造、もしくはプログラムステートメントの任意の組合せを表すことがある、コードおよび/または機械実行可能命令を記憶していることがある。コードセグメントは、情報、データ、引数、パラメータ、またはメモリ内容を渡すことおよび/または受けることによって、別のコードセグメントまたはハードウェア回路に結合されてよい。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む、任意の好適な手段を使用して渡され、転送され、または送信されてよい。
【0154】
いくつかの実施形態では、コンピュータ可読記憶デバイス、媒体、およびメモリは、ビットストリームなどを含むケーブルまたはワイヤレス信号を含み得る。しかしながら、言及されるとき、非一時的コンピュータ可読記憶媒体は、エネルギー、キャリア信号、電磁波、および信号それ自体などの媒体を明確に除く。
【0155】
本明細書で提供する実施形態および例の完全な理解を与えるために、上記の説明において具体的な詳細が提供されている。しかしながら、本実施形態がこれらの具体的な詳細なしに実践され得ることが当業者によって理解されよう。説明を明快にするために、いくつかの事例では、本技術は、デバイス、デバイス構成要素、ソフトウェアで具現される方法におけるステップまたはルーチン、またはハードウェアとソフトウェアとの組合せを備える、機能ブロックを含む個々の機能ブロックを含むものとして提示されることがある。図に示されるものおよび/または本明細書で説明されるもの以外の追加の構成要素が使用されてよい。たとえば、不必要な詳細で実施形態を不明瞭にしないように、回路、システム、ネットワーク、プロセス、および他の構成要素がブロック図の形態で構成要素として示されることがある。他の事例では、実施形態を不明瞭にすることを避けるために、よく知られている回路、プロセス、アルゴリズム、構造、および技法は、不必要な詳細なしに示されることがある。
【0156】
個々の実施形態が、フローチャート、流れ図、データフロー図、構造図、またはブロック図として示されるプロセスまたは方法として上で説明されることがある。フローチャートは動作を逐次プロセスとして説明することがあるが、動作の多くは並行してまたは同時に実行することができる。加えて、動作の順序は並べ替えられてよい。プロセスは、その動作が完了するときに終了するが、図に含まれない追加のステップを有することも可能である。プロセスは、方法、関数、プロシージャ、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応するとき、その終了は、その関数が呼出し関数またはメイン関数に戻ることに対応することがある。
【0157】
上記で説明した例によるプロセスおよび方法は、記憶されたまたは他の方法でコンピュータ可読媒体から入手可能なコンピュータ実行可能命令を使用して実装され得る。そのような命令は、たとえば、汎用コンピュータ、専用コンピュータ、または処理デバイスに特定の機能または機能のグループを実行させるか、または特定の機能または機能のグループを実行するように汎用コンピュータ、専用コンピュータ、または処理デバイスを他の方法で構成する、命令およびデータを含むことができる。使用されるコンピュータリソースの部分は、ネットワークを介してアクセス可能であり得る。コンピュータ実行可能命令は、たとえば、アセンブリ言語、ファームウェア、ソースコードなどの、バイナリ、中間フォーマット命令であってもよい。命令、使用される情報、および/または説明した例による方法の間に作成される情報を記憶するために使用されることがあるコンピュータ可読媒体の例は、磁気または光ディスク、フラッシュメモリ、不揮発性メモリを備えたUSBデバイス、ネットワーク接続された記憶デバイスなどを含む。
【0158】
これらの開示によるプロセスおよび方法を実装するデバイスは、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せを含むことができ、様々なフォームファクタのうちのいずれかをとることができる。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実装されるとき、必要なタスクを実行するためのプログラムコードまたはコードセグメント(たとえば、コンピュータプログラム製品)は、コンピュータ可読媒体または機械可読媒体の中に記憶されてよい。プロセッサは、必要なタスクを実行してよい。フォームファクタの典型的な例は、ラップトップ、スマートフォン、モバイルフォン、タブレットデバイスまたは他の小型フォームファクタパーソナルコンピュータ、携帯情報端末、ラックマウントデバイス、スタンドアロンデバイスなどを含む。本明細書で説明する機能性はまた、周辺装置またはアドインカードの中で具現され得る。そのような機能性はまた、さらなる例として、異なるチップの中の回路基板上、または単一のデバイスの中で実行する異なるプロセス上で実装され得る。
【0159】
命令、そのような命令を伝えるための媒体、命令を実行するためのコンピューティングリソース、およびそのようなコンピューティングリソースをサポートするための他の構造は、本開示で説明する機能を提供するための例示的な手段である。
【0160】
上記の説明では、本出願の態様はそれらの特定の実施形態を参照しながら説明されているが、本出願がそれらに限定されないことを当業者は認識されよう。したがって、本出願の例示的な実施形態が本明細書で詳細に説明されているが、本発明の概念が別のやり方で様々に具現および採用され得ることと、従来技術によって限定される場合を除き、添付の特許請求の範囲がそのような変形を含むものと解釈されることが意図されることとを理解されたい。上記で説明した適用例の様々な特徴および態様は、個別にまたは共同で使用され得る。さらに、実施形態は、本明細書のより広い趣旨および範囲から逸脱することなく、本明細書で説明するもの以外の任意の数の環境および適用例において利用され得る。したがって、本明細書および図面は、限定的ではなく例示的であると見なされるべきである。例示のために、方法は特定の順序で説明された。代替実施形態では、方法は説明された順序とは異なる順序で実行され得ることを諒解されたい。
【0161】
本明細書において使用される、未満(「<」)およびよりも大きい(「>」)という記号または用語は、本記述の範囲から逸脱することなく、それぞれ、以下(「≦」)および以上(「≧」)という記号で置き換えられ得ることを、当業者は諒解されよう。
【0162】
構成要素がいくつかの動作を実行する「ように構成される」ものとして説明される場合、そのような構成は、たとえば、動作を実行するように電子回路または他のハードウェアを設計することによって、動作を実行するようにプログラマブル電子回路(たとえば、マイクロプロセッサ、または他の適切な電子回路)をプログラムすることによって、またはそれらの任意の組合せで達成され得る。
【0163】
「に結合された」という句は、直接または間接的にのいずれかで別の構成要素に物理的に接続された任意の構成要素、および/または、直接または間接的にのいずれかで別の構成要素と通信している(たとえば、ワイヤードもしくはワイヤレス接続および/または他の好適な通信インターフェースを介して他の構成要素に接続された)任意の構成要素を指す。
【0164】
セット「のうちの少なくとも1つ」および/またはセットのうちの「1つまたは複数」と記載する請求項の文言または他の文言は、セットの1つのメンバーまたはセットの(任意の組合せでの)複数のメンバーが請求項を満足することを示す。たとえば、「AおよびBのうちの少なくとも1つ」を記載する請求項の文言は、A、B、またはAおよびBを意味する。別の例では、「A、B、およびCのうちの少なくとも1つ」を記載する請求項の文言は、A、B、C、またはAおよびB、またはAおよびC、またはBおよびC、またはAおよびBおよびCを意味する。セット「の少なくとも1つ」および/またはセットの「1つまたは複数」という文言は、セットに列挙される項目にセットを限定しない。たとえば、「AおよびBのうちの少なくとも1つ」を記述する請求項の文言は、A、B、またはAおよびBを意味することができ、加えて、AおよびBのセットに列挙されていない項目をさらに含むことができる。
【0165】
本明細書で開示する実施形態に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらの組合せとして実装され得る。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、概してそれらの機能に関して上記で説明した。そのような機能がハードウェアとして実装されるかまたはソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装することができるが、そのような実装決定は、本出願の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【0166】
本明細書で説明する技法はまた、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装され得る。そのような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、またはワイヤレス通信デバイスハンドセットおよび他のデバイスにおける適用例を含む複数の用途を有する集積回路デバイスなどの、様々なデバイスのうちのいずれかにおいて実装され得る。モジュールまたは構成要素として説明する任意の特徴は、集積論理デバイスの中で一緒に、または個別であるが相互動作可能な論理デバイスとして別々に実装され得る。ソフトウェアにおいて実装される場合、技法は、実行されると、上記で説明した方法のうちの1つまたは複数を実行する命令を含むプログラムコードを備えるコンピュータ可読データ記憶媒体によって少なくとも部分的に実現され得る。コンピュータ可読データ記憶媒体は、パッケージング材料を含み得るコンピュータプログラム製品の一部を形成し得る。コンピュータ可読媒体は、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM)、FLASHメモリ、磁気または光データ記憶媒体などの、メモリまたはデータ記憶媒体を備えてよい。技法は、追加または代替として、伝搬される信号または波などの、命令またはデータ構造の形態のプログラムコードを搬送または通信するとともに、コンピュータによってアクセスされ、読み取られ、かつ/または実行され得る、コンピュータ可読通信媒体によって少なくとも部分的に実現されてよい。
【0167】
プログラムコードは、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の均等な集積論理回路構成もしくは個別論理回路構成などの、1つまたは複数のプロセッサを含み得るプロセッサによって実行されてよい。そのようなプロセッサは、本開示で説明する技法のうちのいずれかを実行するように構成され得る。汎用プロセッサはマイクロプロセッサであってよいが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装されてよい。したがって、本明細書で使用する「プロセッサ」という用語は、上記の構造、上記の構造の任意の組合せ、または本明細書で説明する技法の実装に適した任意の他の構造もしくは装置のうちのいずれかを指すことがある。加えて、いくつかの態様では、本明細書で説明する機能性は、符号化および復号のために構成された専用のソフトウェアモジュールもしくはハードウェアモジュール内に設けられてよく、または複合ビデオエンコーダデコーダ(コーデック)の中に組み込まれてもよい。
【0168】
本開示の例示的な態様は以下を含む。
【0169】
態様1:データ符号化のための装置であって、メモリと、メモリに結合された1つまたは複数のプロセッサとを含み、1つまたは複数のプロセッサが、ビデオデータのビデオフレームのブロックの残差部分を受信することと、1つまたは複数のニューラルネットワーク(NN)によるブロックの残差部分の入力としての受信に応答した1つまたは複数のNNの1つまたは複数の出力に基づいて、ひずみ予測およびビットレート予測を決定することと、ひずみ予測およびビットレート予測に応じて、レートひずみコスト予測を算出することと、レートひずみコスト予測に基づいて、ブロックを圧縮するための予測モードを決定することとを行うように構成される、装置。
【0170】
態様2:装置が、モバイルデバイス、ワイヤレス通信デバイス、およびカメラデバイスのうちの1つである、態様1の装置。
【0171】
態様3:装置がカメラを含み、ビデオデータがカメラによってキャプチャされる、態様1または2の装置。
【0172】
態様4:1つまたは複数のNNが、第1のニューラルネットワーク(NN)および第2のNNを含み、ひずみ予測を決定することが、第1のNNによるブロックの残差部分の入力としての受信に応答した第1のNNの第1の出力に基づき、ビットレート予測を決定することが、第2のNNによるブロックの残差部分の入力としての受信に応答した第2のNNの第2の出力に基づく、態様1から3のいずれか1つの装置。
【0173】
態様5:1つまたは複数のNNがニューラルネットワーク(NN)を含み、ひずみ予測を決定することが、NNによるブロックの残差部分の入力としての受信に応答したNNの第1の出力に基づき、ビットレート予測を決定することが、NNによるブロックの残差部分の入力としての受信に応答したNNの第2の出力に基づく、態様1から4のいずれか1つの装置。
【0174】
態様6:1つまたは複数のプロセッサが、ブロックに対する圧縮モードに関連付けられたメタデータを受信することと、1つまたは複数のニューラルネットワーク(NN)によるブロックの残差部分の入力としての受信に応答した1つまたは複数のNNの1つまたは複数の出力に基づいて、ビットレート残差予測を決定することと、レート推定エンジンによるメタデータの入力としての受信に応答したレート推定エンジンの出力に基づいて、ビットレートメタデータ予測を決定することであって、ビットレート予測が、ビットレート残差予測とビットレートメタデータ予測の和である、決定することとを行うように構成される、態様1から5のいずれか1つの装置。
【0175】
態様7:レートひずみコスト予測を算出するために使用される関数が、ひずみ予測とビットレート予測の和をラグランジュ乗数で乗算したものである、態様1から6のいずれか1つの装置。
【0176】
態様8:圧縮モードが、フレーム間圧縮およびフレーム内圧縮のうちの1つである、態様1から7のいずれか1つの装置。
【0177】
態様9:1つまたは複数のプロセッサが、ブロックを圧縮するための予測モードに基づいてビデオデータを圧縮することによって、圧縮されたビデオデータを生成することを行うように構成される、態様1から8のいずれか1つの装置。
【0178】
態様10:圧縮されたビデオデータが、1つまたは複数のビデオデコーダ規格に準拠するデコーダを使用して復号可能である、態様1から9のいずれか1つの装置。
【0179】
態様11:ひずみ予測が、1つまたは複数のNNによる、量子化パラメータ(QP)、ブロックのブロックサイズ、圧縮モード、およびブロックの残差部分に関連付けられた情報のうちの少なくとも1つの受信に応答して決定され、ビットレート予測が、1つまたは複数のNNによる、QP、ブロックのブロックサイズ、圧縮モード、およびブロックの残差部分に関連付けられた情報のうちの少なくとも1つの受信に応答して決定される、態様1から10のいずれか1つの装置。
【0180】
態様12:1つまたは複数のプロセッサが、QPを決定する
ように構成される、態様1から11のいずれか1つの装置。
【0181】
態様13:ブロックのブロックサイズが、4平方ピクセル、8平方ピクセル、16平方ピクセル、32平方ピクセル、64平方ピクセル、および128平方ピクセルのうちの1つである、態様1から12のいずれか1つの装置。
【0182】
態様14:1つまたは複数のプロセッサが、異なるブロックサイズを備えたブロックの修正された変形態に基づいて、第2のレートひずみコスト予測を算出することと、レートひずみコスト予測および第2のレートひずみコスト予測の最小値に基づいて、ブロックに対するブロックサイズを選択することとを行うように構成される、態様1から13のいずれか1つの装置。
【0183】
態様15:1つまたは複数のプロセッサが、異なる圧縮モードを備えたブロックの修正された変形態に基づいて、第2のレートひずみコスト予測を算出することと、レートひずみコスト予測および第2のレートひずみコスト予測の最小値に基づいて、ブロックを圧縮するための予測モードを決定することとを行うように構成される、態様1から14のいずれか1つの装置。
【0184】
態様16:1つまたは複数のプロセッサが、1つまたは複数のNNを使用してビデオデータの後処理を実行するように構成される、態様1から15のいずれか1つの装置。
【0185】
態様17:1つまたは複数のNNが、畳み込みニューラルネットワーク(CNN)、ディープCNN、全結合層を備えたニューラルネットワーク(NN)、全結合層を備えたCNN、および全結合層を備えたディープCNNのうちの少なくとも1つを含む、態様1から16のいずれか1つの装置。
【0186】
態様18:データ符号化の方法であって、ビデオデータのビデオフレームのブロックの残差部分を受信するステップと、1つまたは複数のニューラルネットワーク(NN)によるブロックの残差部分の入力としての受信に応答した1つまたは複数のNNの1つまたは複数の出力に基づいて、ひずみ予測およびビットレート予測を決定するステップと、ひずみ予測およびビットレート予測に応じて、レートひずみコスト予測を算出するステップと、レートひずみコスト予測に基づいて、ブロックを圧縮するための予測モードを決定するステップとを含む、方法。
【0187】
態様19:方法が、モバイルデバイス、ワイヤレス通信デバイス、およびカメラデバイスのうちの少なくとも1つを使用して実行される、態様18の方法。
【0188】
態様20:1つまたは複数のNNが、第1のニューラルネットワーク(NN)および第2のニューラルネットワークNNを含み、ひずみ予測を決定するステップが、第1のNNによるブロックの残差部分の入力としての受信に応答した第1のNNの第1の出力に基づき、ビットレート予測を決定するステップが、第2のNNによるブロックの残差部分の入力としての受信に応答した第2のNNの第2の出力に基づく、態様18または19の方法。
【0189】
態様21:1つまたは複数のNNがニューラルネットワーク(NN)を含み、ひずみ予測を決定するステップが、NNによるブロックの残差部分の入力としての受信に応答したNNの第1の出力に基づき、ビットレート予測を決定するステップが、NNによるブロックの残差部分の入力としての受信に応答したNNの第2の出力に基づく、態様18から20のいずれか1つの方法。
【0190】
態様22:ブロックに対する圧縮モードに関連付けられたメタデータを受信するステップと、1つまたは複数のニューラルネットワーク(NN)によるブロックの残差部分の入力としての受信に応答した1つまたは複数のNNの1つまたは複数の出力に基づいて、ビットレート残差予測を決定するステップと、レート推定エンジンによるメタデータの入力としての受信に応答したレート推定エンジンの出力に基づいて、ビットレートメタデータ予測を決定するステップであって、ビットレート予測が、ビットレート残差予測とビットレートメタデータ予測の和である、決定するステップとをさらに含む、態様18から21のいずれか1つの方法。
【0191】
態様23:レートひずみコスト予測を算出するために使用される関数が、ひずみ予測とビットレート予測の和をラグランジュ乗数で乗算したものである、態様18から22のいずれか1つの方法。
【0192】
態様24:圧縮モードが、フレーム間圧縮またはフレーム内圧縮のうちの1つである、態様18から23のいずれか1つの方法。
【0193】
態様25:ブロックを圧縮するための予測モードに基づいてビデオデータを圧縮することによって、圧縮されたビデオデータを生成するステップであって、圧縮されたビデオデータが、1つまたは複数のビデオデコーダ規格に準拠するデコーダを使用して復号可能である、生成するステップをさらに含む、態様18から24のいずれか1つの方法。
【0194】
態様26:ひずみ予測が、1つまたは複数のNNによる、量子化パラメータ(QP)、ブロックのブロックサイズ、圧縮モード、およびブロックの残差部分に関連付けられた情報のうちの少なくとも1つの受信に応答して決定され、ビットレート予測が、1つまたは複数のNNによる、QP、ブロックのブロックサイズ、圧縮モード、およびブロックの残差部分に関連付けられた情報のうちの少なくとも1つの受信に応答して決定される、態様18から25のいずれか1つの方法。
【0195】
態様27:QPを決定するステップをさらに含む、態様18から26のいずれか1つの方法。
【0196】
態様28:異なるブロックサイズを備えたブロックの修正された変形態に基づいて、第2のレートひずみコスト予測を算出するステップと、レートひずみコスト予測および第2のレートひずみコスト予測の最小値に基づいて、ブロックに対するブロックサイズを選択するステップとをさらに含む、態様18から27のいずれか1つの方法。
【0197】
態様29:異なる圧縮モードを備えたブロックの修正された変形態に基づいて、第2のレートひずみコスト予測を算出するステップと、レートひずみコスト予測および第2のレートひずみコスト予測の最小値に基づいて、ブロックを圧縮するための予測モードを決定するステップとをさらに含む、態様18から28のいずれか1つの方法。
【0198】
態様30:その上にプログラムを実施した非一時的コンピュータ可読記憶媒体であって、プログラムが、データ符号化の方法を実行するためにプロセッサによって実行可能であり、方法が、ビデオデータのビデオフレームのブロックの残差部分を受信するステップと、1つまたは複数のニューラルネットワーク(NN)によるブロックの残差部分の入力としての受信に応答した1つまたは複数のNNの1つまたは複数の出力に基づいて、ひずみ予測およびビットレート予測を決定するステップと、ひずみ予測およびビットレート予測に応じて、レートひずみコスト予測を算出するステップと、レートひずみコスト予測に基づいて、ブロックを圧縮するための予測モードを決定するステップとを含む、非一時的コンピュータ可読記憶媒体。
【符号の説明】
【0199】
100 システム
102 ビデオソース
104 符号化デバイス、ビデオ符号化デバイス
106 エンコーダエンジン
108 記憶装置
110 出力部
112 復号デバイス、ビデオ復号デバイス
114 入力部
116 デコーダエンジン
118 記憶装置
120 通信リンク
122 ビデオ宛先デバイス
200 画像、平坦エリア
205A 第1の大型ブロック、ブロック
205B 第2の大型ブロック、ブロック
210A 第1の中型ブロック、ブロック
210B 第2の中型ブロック、ブロック
215A 第1の小型ブロック、ブロック
215B 第2の小型ブロック、ブロック
220 平坦エリア
225 テクスチャエリア、エッジテクスチャエリア
250 ブロック区分
290 凡例
300 概念図
305 エンコーダ
310 デコーダ
315 入力ブロック(IB)
320 平均2乗誤差(MSE)
325 ひずみD
330 予測ブロック(PB)
340 変換、変換プロセス
345 逆変換プロセス
350 量子化、逆量子化プロセス、量子化プロセス、逆量子化
355 再構成されたブロック(RB)
360 エントロピーコーディング
365 ビットレートR
400 エンコーダ、レートひずみ最適化(RDO)基準エンコーダ
405A モード、第1のモード
405B モード、第2のモード
405C モード、第3のモード
405μ モード、第μのモード
410A 符号化および復号
410B 第2の符号化および復号
410C 第3の符号化および復号
410μ 最終的な符号化および復号
415A コストJA
415B コストJB
415C コスト、コストJC
415μ コストJμ
440 最小値
500 エンコーダ、非RDOエンコーダ
505A 第1のモード、モード
505B 第2のモード、モード
505C 第3のモード、モード
505Ψ 第Ψのモード、モード
510A~510Ψ 残差データ
510A 残差
510B 第2の残差
510C 第3の残差
510Ψ 第Ψの残差
515A コスト推定値ΓA
515B コスト推定値ΓB
515C コスト推定値ΓC、第3のコスト推定値
515Ψ コスト推定値ΓΨ
540 最小値、最小推定値、簡素化最小推定値
600 エンコーダ、NNベースのエンコーダ
605A~605Ω モード
605A 第1のモード
605B 第2のモード
605C 第3のモード
605Ω 第Ωのモード
610A~610Ω 残差、残差データ
610A 残差
610B 第2の残差
610C 第3の残差
610Ω 第Ωの残差
615A~615Ω ニューラルネットワーク(NN)、ニューラルネットワークNNA~NNΩ
620A ひずみ予測
620B ひずみ予測
620C ひずみ予測
620Ω ひずみ予測
625A ビットレート予測
625B ビットレート予測
625C ビットレート予測
625Ω ビットレート予測
630A コスト予測
630B コスト予測
630C コスト予測
630Ω コスト予測
640 最小値、最小予測
700 エンコーダ
705 入力ブロック(IB)
710 残差、残差データ
715A 第1のNN
715B 第2のNN
720 NN
725 ひずみ予測
730 ビットレート残差予測
735 ビットレートメタデータ予測
740 予測ブロック(RB)
745 インター/イントラ予測詳細
750 レート推定エンジン
760 QP
765 ブロックサイズ
770 圧縮モード
800 エンコーダ
805 残差、残差データ
810 第1の3×3 2次元畳み込み層(conv2D)
815 第2の3x3conv2D
820 第3の3x3conv2D
825 最大プーリング層
830 第4の3×3conv2D
835 第5の3×3conv2D
840 第6の3×3conv2D
845 平坦化ブロックデータ演算
850 第1の高密度層
855 第2の高密度層
860 第3の高密度層
865 ひずみ予測
870 QP
875 圧縮モード
880 ブロックサイズ
885 畳み込み層のセット
886 畳み込み層の第1のセット
887 畳み込み層の第2のセット
888 高密度層のセット
890 ニューラルネットワーク(NN)
900 データ符号化技法
1000 コンピューティングシステム
1005 接続部
1010 プロセッサ、処理装置、CPU
1012 キャッシュ
1015 システムメモリ
1020 読取り専用メモリ(ROM)
1025 ランダムアクセスメモリ(RAM)
1030 記憶デバイス
1032 サービス
1034 サービス
1035 出力デバイス
1036 サービス
1040 通信インターフェース
1045 入力デバイス
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10