(57)【要約】  画像ブロックを符号化することは、機械学習モデルに、画像ブロックと第1の量子化パラメータに対応する第1の値とを与えることと、機械学習モデルから第1のモード決定パラメータを取得することと、第1のモード決定パラメータを使用して画像ブロックを符号化することとを含む。第1の値は、非線形関数が第1の量子化パラメータを入力として使用した結果として得られる。機械学習モデルは、訓練データを使用することによってモード決定パラメータを出力するように訓練される。各訓練データは、第2のエンコーダによって符号化される訓練ブロック、訓練ブロックを符号化するために第2のエンコーダによって使用される第2のモード決定パラメータ、および第2の量子化パラメータに対応する第2の値を含む。第2のエンコーダは、訓練ブロックを符号化するために第2の量子化パラメータを使用しており、第2の値は、非線形関数が第2の量子化パラメータを入力として使用した結果として得られる。
2021520082.tif 000002
【特許請求の範囲】
【請求項１】
第1の量子化パラメータを使用して画像ブロックを第1のエンコーダによって符号化するための方法であって、
機械学習モデルを含む機械学習モジュールに、前記画像ブロックと前記第1の量子化パラメータに対応する第1の値とを与えるステップであって、
前記第1の値が、非線形関数が前記第1の量子化パラメータを入力として使用した結果として得られ、
前記機械学習モデルが、
前記機械学習モデルの訓練の入力として訓練データを使用することによって、前記画像ブロックを符号化するためのモード決定パラメータを出力するように訓練され、各訓練データが、
第2のエンコーダによって符号化される訓練ブロック、
前記訓練ブロックを符号化するために前記第2のエンコーダによって使用される第2のモード決定パラメータ、および
第2の量子化パラメータに対応する第2の値を含み、
前記第2のエンコーダが、前記訓練ブロックを符号化するために前記第2の量子化パラメータを使用しており、
前記第2の値が、前記非線形関数が前記第2の量子化パラメータを入力として使用した結果として得られる、ステップと、
前記機械学習モジュールから第1のモード決定パラメータを取得するステップと、
前記第1のモード決定パラメータを使用して前記画像ブロックを圧縮されたビットストリームに符号化するステップとを含む、
方法。
【請求項２】
前記画像ブロックが、イントラ予測される、
請求項1に記載の方法。
【請求項３】
前記訓練データが、
前記画像ブロックの上の隣接するブロックの第1のサンプル、および
前記画像ブロックの左の隣接するブロックの第2のサンプルをさらに含む、
請求項2に記載の方法。
【請求項４】
前記第1のモード決定パラメータが、前記画像ブロックの四分木分割を示す、
請求項1から3のいずれか一項に記載の方法。
【請求項５】
前記機械学習モデルが、畳み込みニューラルネットワークモデルである、
請求項1から4のいずれか一項に記載の方法。
【請求項６】
前記非線形関数が、線形セグメントによって近似される、
請求項1から5のいずれか一項に記載の方法。
【請求項７】
前記非線形関数が、量子化パラメータの指数関数である、
請求項1から6のいずれか一項に記載の方法。
【請求項８】
前記第2のエンコーダが、H.264またはHEVCエンコーダである、
請求項7に記載の方法。
【請求項９】
前記非線形関数が、量子化パラメータの2次関数である、
請求項1から6のいずれか一項に記載の方法。
【請求項１０】
前記第2のエンコーダが、H.263、AV1、またはVP9エンコーダである、
請求項9に記載の方法。
【請求項１１】
前記非線形関数が、レート歪み計算において使用される乗数を決定するために前記第2のエンコーダによって使用される関数と同じ種類である、
請求項1から10のいずれか一項に記載の方法。
【請求項１２】
第1の量子化パラメータを使用して画像ブロックを符号化するための装置であって、
プロセッサを備え、前記プロセッサが、
機械学習モデルに、前記画像ブロックと前記第1の量子化パラメータに対応する第1の値とを与えることであって、
前記第1の値が、非線形関数が前記第1の量子化パラメータを入力として使用した結果として得られ、
前記機械学習モデルが、
前記機械学習モデルの訓練の入力として訓練データを使用することによって、前記画像ブロックを符号化するためのモード決定パラメータを出力するように訓練され、各訓練データが、
エンコーダによって符号化される訓練ブロック、
前記訓練ブロックを符号化するために前記エンコーダによって使用される第2のモード決定パラメータ、および
第2の量子化パラメータに対応する第2の値を含み、
前記エンコーダが、前記訓練ブロックを符号化するために前記第2の量子化パラメータを使用しており、
前記第2の値が、前記非線形関数が前記第2の量子化パラメータを入力として使用した結果として得られる、ことと、
前記機械学習モデルから第1のモード決定パラメータを取得することと、
前記第1のモード決定パラメータを使用して前記画像ブロックを圧縮されたビットストリームに符号化することとを行うように構成された、
装置。
【請求項１３】
前記画像ブロックが、イントラ予測された画像である画像のブロックであり、前記訓練データが、
前記画像ブロックの上の隣接するブロックの第1のサンプル、および
前記画像ブロックの左の隣接するブロックの第2のサンプルをさらに含む、
請求項12に記載の装置。
【請求項１４】
前記第1のモード決定パラメータが、前記画像ブロックの四分木分割を示す、
請求項12または13に記載の装置。
【請求項１５】
前記非線形関数が、線形セグメントによって近似される、
請求項12から14のいずれか一項に記載の装置。
【請求項１６】
前記非線形関数が、量子化パラメータの指数関数または量子化パラメータの2次関数である、
請求項12から15のいずれか一項に記載の装置。
【請求項１７】
画像ブロックを復号するための装置であって、前記装置は、
プロセッサを備え、前記プロセッサが、以下の動作を実行するように構成され、前記動作が、
圧縮されたビットストリーム内で、サブブロックへの前記画像ブロックの四分木分割のインジケーションを受信するステップであって、エンコーダが、
機械学習モデルを訓練するための入力として訓練データを使用することによって訓練される前記機械学習モデルを使用して前記画像ブロックの前記四分木分割を決定しており、各訓練データが、
前記エンコーダによって符号化される訓練ブロック、
前記訓練ブロックを符号化するために前記エンコーダによって使用されるモード決定パラメータ、および
量子化パラメータに対応する値を含み、
前記エンコーダが、前記訓練ブロックを符号化するために前記量子化パラメータを使用しており、
前記値が、非線形関数が前記量子化パラメータを入力として使用した結果として得られる、ステップと
前記画像ブロックの前記四分木分割の前記インジケーションを使用して前記画像ブロックを復号するステップとを含む、
装置。
【請求項１８】
前記非線形関数が、レート歪み計算において使用される乗数を決定するために前記エンコーダによって使用される関数と同じ種類である、
請求項17に記載の装置。
【請求項１９】
画像ブロックを復号するための方法であって、
圧縮されたビットストリーム内で、サブブロックへの前記画像ブロックの四分木分割のインジケーションを受信するステップであって、エンコーダが、
機械学習モデルを訓練するための入力として訓練データを使用することによって訓練される前記機械学習モデルを使用して前記画像ブロックの前記四分木分割を決定しており、各訓練データが、
前記エンコーダによって符号化される訓練ブロック、
前記訓練ブロックを符号化するために前記エンコーダによって使用されるモード決定パラメータ、および
量子化パラメータに対応する値を含み、
前記エンコーダが、前記訓練ブロックを符号化するために前記量子化パラメータを使用しており、
前記値が、非線形関数が前記量子化パラメータを入力として使用した結果として得られる、ステップと、
前記画像ブロックの前記四分木分割の前記インジケーションを使用して前記画像ブロックを復号するステップとを含む、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ビデオ符号化のための機械学習モデルの量子化パラメータに適用される非線形関数の使用に関する。
【背景技術】
【０００２】
デジタルビデオストリームは、フレームまたは静止画のシーケンスを使用して動画を表現し得る。デジタルビデオは、たとえば、テレビ会議、高精細度映像エンターテインメント、映像広告、またはユーザによって生成されたビデオの共有を含む様々な応用に使用することができる。デジタルビデオストリームは、大量のデータを含み、ビデオデータの処理、送信、または記憶のために相当な量のコンピューティングデバイスの計算または通信リソースを消費し得る。圧縮およびその他の符号化技術を含む、ビデオストリームのデータの量を削減するための様々な手法が、提案されている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Dang Ha The Hien、「A guide to receptive field arithmetic for Convolutional Neural Networks」、2017年4月、[2018年8月6日に検索]
【発明の概要】
【課題を解決するための手段】
【０００４】
長年にわたって、ビデオエンコーダの符号化効率は向上してきた。符号化効率は、歪みを最小化しながら(つまり、特定のレベルの映像品質を維持しながら)最も低い可能なビットレートでビデオを符号化することを意味し得る。しかし、向上した符号化効率は、増大した計算の複雑さをもたらした。つまり、より多くの計算時間が、向上した符号化効率を実現するためにエンコーダによって必要とされる。したがって、より少ない計算時間(つまり、削減された計算の複雑さ)で向上した符号化効率を得ることが、望ましい。
【０００５】
開示される実装の1つの態様は、第1の量子化パラメータを使用して画像ブロックを第1のエンコーダによって符号化するための方法である。方法は、機械学習モデルを含む機械学習モジュールに、画像ブロックと第1の量子化パラメータに対応する第1の値とを与えるステップと、機械学習モジュールから第1のモード決定パラメータを取得するステップと、第1のモード決定パラメータを使用して画像ブロックを圧縮されたビットストリームに符号化するステップとを含む。第1の値は、非線形関数が第1の量子化パラメータを入力として使用した結果として得られる。機械学習モデルは、機械学習モデルの訓練の入力として訓練データを使用することによって画像ブロックを符号化するためのモード決定パラメータを出力するように訓練される。各訓練データは、第2のエンコーダによって符号化される訓練ブロック、訓練ブロックを符号化するために第2のエンコーダによって使用される第2のモード決定パラメータ、および第2の量子化パラメータに対応する第2の値を含む。第2のエンコーダは、訓練ブロックを符号化するために第2の量子化パラメータを使用しており、第2の値は、非線形関数が第2の量子化パラメータを入力として使用した結果として得られる。
【０００６】
別の態様は、第1の量子化パラメータを使用して画像ブロックを符号化するための装置である。装置は、機械学習モデルに、画像ブロックと第1の量子化パラメータに対応する第1の値とを与え、機械学習モデルから第1のモード決定パラメータを取得し、第1のモード決定パラメータを使用して画像ブロックを圧縮されたビットストリームに符号化するプロセッサを含む。第1の値は、非線形関数が第1の量子化パラメータを入力として使用した結果として得られる。機械学習モデルは、機械学習モデルの訓練の入力として訓練データを使用することによって画像ブロックを符号化するためのモード決定パラメータを出力するように訓練される。各訓練データは、エンコーダによって符号化される訓練ブロック、訓練ブロックを符号化するためにエンコーダによって使用される第2のモード決定パラメータ、および第2の量子化パラメータに対応する第2の値を含む。エンコーダは、訓練ブロックを符号化するために第2の量子化パラメータを使用しており、第2の値は、非線形関数が第2の量子化パラメータを入力として使用した結果として得られる。
【０００７】
別の態様は、画像ブロックを復号するための装置である。装置は、圧縮されたビットストリーム内で、サブブロックへの画像ブロックの四分木分割のインジケーションを受信することであって、エンコーダが、機械学習モデルを使用して画像ブロックの四分木分割を決定した、こと、および画像ブロックの四分木分割のインジケーションを使用して画像ブロックを復号することを行うプロセッサを含む。機械学習モデルは、機械学習モデルを訓練するための入力として訓練データを使用することによって訓練される。各訓練データは、エンコーダによって符号化される訓練ブロック、訓練ブロックを符号化するためにエンコーダによって使用されるモード決定パラメータ、および量子化パラメータに対応する値を含む。エンコーダは、訓練ブロックを符号化するために量子化パラメータ使用しており、値は、非線形関数が量子化パラメータを入力として使用した結果として得られる。
【０００８】
別の態様は、画像ブロックを復号するための方法である。方法は、圧縮されたビットストリーム内で、サブブロックへの画像ブロックの四分木分割のインジケーションを受信するステップであって、エンコーダが、機械学習モデルを使用して画像ブロックの四分木分割を決定した、ステップを含む。機械学習モデルは、機械学習モデルを訓練するための入力として訓練データを使用することによって訓練される。各訓練データは、エンコーダによって符号化される訓練ブロック、訓練ブロックを符号化するためにエンコーダによって使用されるモード決定パラメータ、および量子化パラメータに対応する値を含む。エンコーダは、訓練ブロックを符号化するために量子化パラメータ使用しており、値は、非線形関数が量子化パラメータを入力として使用した結果として得られる。方法は、画像ブロックの四分木分割のインジケーションを使用して画像ブロックを復号するステップをさらに含む。
【０００９】
本開示のこれらのおよびその他の態様が、実施形態の以下の詳細な説明、添付の請求項、および付属する図面に開示される。
【００１０】
本明細書の説明は、同様の参照番号がいくつかの図を通じて同様の部分を指す添付の図面を参照する。
【図面の簡単な説明】
【００１１】
【図１】ビデオ符号化および復号システムの図である。
【図２】送信局または受信局を実装し得るコンピューティングデバイスの例のブロック図である。
【図３】符号化され、その後復号されるビデオストリームの図である。
【図４】本開示の実装によるエンコーダのブロック図である。
【図５】本開示の実装によるデコーダのブロック図である。
【図６】本開示の実装によるフレームの一部の表現のブロック図である。
【図７】本開示の実装によるブロックの四分木表現の例のブロック図である。
【図８】ブロックを符号化するための最良のモードを探索するためのプロセスの流れ図である。
【図９】予測モードを使用することによって画像ブロックを符号化するレートおよび歪みコストを推定する例のブロック図である。
【図１０】本開示の実装による量子化パラメータの非線形関数を使用するモード決定のための畳み込みニューラルネットワーク(CNN)の例のブロック図である。
【図１１】本開示の実装による、第1の量子化パラメータを使用して画像ブロックをエンコーダによって符号化するためのプロセスの流れ図である。
【図１２】本開示の実装による線形セグメント(linear segment)を使用して量子化パラメータの非線形関数を近似する例の図である。
【図１３】非線形QP関数を入力として使用する第1の機械学習モデルと線形QP関数を使用する第2の機械学習モデルとのレート歪み性能比較の例の図である。
【図１４】本開示の実装による畳み込みフィルタの例の図である。
【図１５】本開示の実装による受容野の例の図である。
【図１６】ブロックの正方形でない分割の例の図である。
【発明を実施するための形態】
【００１２】
最近の映像コーデック(たとえば、MPEG-4 AVCとしても知られるH.264、VP9、HEVCとしても知られるH.265、AVS2、およびAV1)は、符号化効率を高めるために使用される多数のツールおよび構成を定義し、使用する。符号化効率は、通常、レートと歪みとの両方の観点で測定される。レートは、(ブロック、フレームなどの符号化のような)符号化のために必要とされるビット数を指す。歪みは、たとえば、元のビデオブロックと元のビデオブロックの再構築されたバージョンとの間の品質の低下を測定する。レート歪み最適化(RDO)プロセスを実行することによって、映像コーデックは、ビデオを符号化するために必要とされるレートに対する歪みの量を最適化する。
【００１３】
使用されるツールおよび構成(たとえば、パラメータ)の最適な組合せを決定するために、ビデオエンコーダは、モード決定プロセスを使用することができる。モード決定プロセスは、ツールの有効な組合せの少なくとも一部を検査する(たとえば、テストする、評価するなど)ことができる。例においては、すべての可能な組合せが、検査される。
【００１４】
パラメータの第1の組合せが第1のレート(たとえば、レート=100)および第1の歪み(たとえば、歪み=90)をもたらし、パラメータの第2の組合せが第2のレート(たとえば、レート=120)および第2の歪み(たとえば、歪み=80)をもたらすと仮定する。第1の組合せおよび第2の組合せのどちらがパラメータのより優れた組合せであるかを評価するための手順(たとえば、技術など)が、必要とされる。1つの組合せが別の組合せよりも優れているかどうかを評価するために、検査される組合せの各々に関して測定基準が計算されることが可能であり、それぞれの測定基準が比較されることが可能である。例において、測定基準は、以下で説明されるように、レートと歪みとを組み合わせて単一のスカラ値を生成することができる。本開示においては、レート歪みコストが、スカラ値などとして使用される。
【００１５】
モード決定プロセスの例は、符号化ブロックを符号化するための最良のイントラ予測モードを決定するイントラ予測モード決定プロセスである。たとえば、HEVCエンコーダにおいては、35個のイントラ予測モードが、4×4よりも大きいブロックに関して可能である。イントラ予測モードの各々は、それぞれの予測ブロックがどのようにして決定されるかを指示する。この文脈のモード決定プロセスは、イントラ予測モードの各々に関してそれぞれの予測ブロックを決定し、最も小さなレート歪みコストに対応するイントラ予測モードを選択する可能性がある。言い換えると、モード決定プロセスは、最良のレート歪み性能を提供するイントラ予測モードを選択する。
【００１６】
モード決定プロセスの別の例は、(符号化ツリーユニット(coding tree unit)またはCTUとしても知られる)スーパーブロックの最適な下位分割を決定する分割決定プロセスである。分割決定プロセスは、図7に関連して下で説明される。
【００１７】
映像コーデックの量子化パラメータが、レートと歪みとの間のトレードオフを制御するために使用され得る。通常、より大きな量子化パラメータは、より低いレートをもたらすが、より高い歪みももたらす(変換係数などの)より高い量子化を意味し、より小さな量子化パラメータは、より高いレートをもたらすが、より低い歪みをもたらすより低い量子化を意味する。変数QP、q、およびQは、量子化パラメータを指すために本開示において交換可能なように使用される可能性がある。
【００１８】
量子化パラメータの値は、固定され得る。たとえば、エンコーダは、ビデオのすべてのフレームおよび/またはすべてのブロックを符号化するために1つの量子化パラメータ値を使用し得る。その他の例において、量子化パラメータは、たとえば、フレーム毎に変わり得る。たとえば、テレビ会議アプリケーションの場合、エンコーダは、ネットワーク帯域幅の変動に基づいて量子化パラメータ値を変更し得る。
【００１９】
量子化パラメータがレートと歪みとの間のトレードオフを制御するために使用され得るので、量子化パラメータは、パラメータの各組合せに関連する測定基準を計算するために使用され得る。上述のように、測定基準は、符号化パラメータの組合せのレートの値と歪みの値とを組み合わせ得る。
【００２０】
上述のように、測定基準は、レート歪み(RD)コストであることが可能である。最も低いコスト(たとえば、最も低いRDコスト)をもたらす組合せが、たとえば、圧縮されたビットストリームのブロックまたはフレームを符号化するために使用され得る。RDコストは、量子化パラメータを使用して計算される。より広く、エンコーダの決定(たとえば、モードの決定)がRDコストに基づくときにはいつも、QP値が、RDコストを決定するためにエンコーダによって使用される可能性がある。予測モードmiを使用することによって画像ブロックXを符号化するレートおよび歪みコストを典型的なエンコーダによるなどして推定する例が、図8〜図9に関連して説明される。
【００２１】
例において、QRは、レートの値と歪みの値とを1つの測定基準に組み合わせるために使用される乗数を導出するために使用され得る。一部のコーデックは、乗数を(λmodeと表記される)ラグランジュ乗数と呼ぶ可能性があり、その他のコーデックは、rdmultと呼ばれる同様の乗数を使用する可能性がある。各コーデックは、乗数を計算する異なる方法を有する可能性がある。文脈が明らかにしない限り、乗数は、本明細書においてはコーデックに関係なくラグランジュ乗数またはラグランジュパラメータと呼ばれる。
【００２２】
もう一度繰り返しておくと、ラグランジュ乗数は、競合するモード(つまり、パラメータの競合する組合せ)のRDコストを評価するために使用され得る。特に、rmが、モードmを使用する結果として得られる(ビットを単位とする)レートを表すものとし、dmが、結果として得られる歪みを表すものとする。モードmを選択するレート歪みコストは、スカラ値dm+λmodermとして計算され得る。ラグランジュパラメータλmodeを使用することによって、そのとき、2つのモードのコストを比較し、より低い組み合わされたRDコストを有するモードを選択することが可能である。レート歪みコストを評価するこの技術は、少なくとも一部の映像コーデックのモード決定プロセスの基礎である。
【００２３】
異なる映像コーデックは、量子化パラメータからラグランジュ乗数を計算するために異なる技術を使用する可能性がある。これは、部分的には、異なるコーデックが量子化パラメータに関して異なる意味(たとえば、定義、セマンティクスなど)を有し、量子化パラメータの使用の異なる方法を有する可能性があるという事実が原因である。
【００２４】
H.264規格を実装する(本明細書においてはH.264コーデックと呼ばれる)コーデックは、式(1)を使用してラグランジュ乗数λmodeを導出する可能性がある。
λmode=0.85×2(QP-12)/3     (1)
【００２５】
HEVC規格を実装する(本明細書においてはHEVCコーデックと呼ばれる)コーデックは、式(1)と同様の式を使用する可能性がある。H.263規格を実装する(本明細書においてはH.263コーデックと呼ばれる)コーデックは、式(2)を使用してラグランジュ乗数λmodeを導出する可能性がある。
λmode=0.85・QH2632     (2)
【００２６】
VP9規格を実装する(本明細書においてはVP9コーデックと呼ばれる)コーデックは、式(3)を使用して乗数rdmultを導出する可能性がある。
rdmult=88・q2/24     (3)
【００２７】
AV1規格を実装する(本明細書においてはAV1コーデックと呼ばれる)コーデックは、式(4)を使用してラグランジュ乗数λmodeを導出する可能性がある。
λmode=0.12・QAV12/256     (4)
【００２８】
上の場合に見られるように、乗数は、量子化パラメータと非線形の関係にある。HEVCおよびH.264の場合、乗数は、QPと指数関数的な関係にあり、H.263、VP9、およびAV1の場合、乗数は、QPと2次関数的な関係にある。乗数は、エンコーダによって圧縮されたビットストリームに含められる追加的な付随情報を考慮するためにそれぞれのコーデックにおいて使用される前にさらなる変更を経る可能性があることに留意されたい。付随情報の例は、ピクチャタイプ(たとえば、イントラ予測されたフレーム対インター予測されたフレーム)、色成分(たとえば、輝度(luminance)もしくは色度(chrominance))、および/または関心領域を含む。例において、そのようなさらなる変更は、乗数に対する線形の変更であることが可能である。
【００２９】
上述のように、最良のモードが、多くの可能な組合せから選択され得る。可能なツールおよびパラメータの数が増加するにつれて、組合せの数も増加し、ひいてはそれが最良のモードを決定するために必要とされる時間を増やす。たとえば、AV1コーデックは、AV1コーデックと比べておよそ160個の追加的なツールを含み、それによって、最良のモードの探索時間の著しい増加をもたらす。
【００３０】
したがって、機械学習などの技術が、最良のモードを決定するために必要とされる時間を削減するために利用される可能性がある。機械学習は、ビデオ符号化の計算の複雑さの問題に対処するためにうまく適合され得る。
【００３１】
膨大な量の訓練データが、たとえば、モード決定に総当たりの手法を使用することによって生成され得る。つまり、訓練データは、図4および図6〜図9に関連して説明される符号化技術などの標準的な符号化技術をエンコーダが実行することによって取得され得る。特に、総当たりのオンザフライモード決定プロセスが、ビデオデータ入力の大きな集合のために使用するためのモード決定を推測することができる訓練された機械学習モデルによって置き換えられる可能性がある。よく訓練された機械学習モデルは、総当たりの手法に符号化効率の点で、ただし、ずっと低い計算コストで、または通常のもしくはデータフロー指向の計算コスト(regular or dataflow-oriented computational cost)によってほぼ匹敵すると予測され得る。
【００３２】
訓練データは、入力データからモード決定を構成する出力への写像である(たとえば、そのような写像を定義する、構成する)機械学習モデルを導出する(たとえば、学習する、推測するなど)ために機械学習の学習フェーズの間に使用され得る。したがって、機械学習モデルは、(図4および図6〜図9に関連して説明される符号化プロセスなどの)総当たりの計算の重い符号化プロセスを置き換えるために使用されることが可能であり、それによって、モード決定の計算の複雑さを削減する。
【００３３】
機械学習モデルの予測能力(つまり、正確性)は、機械学習モデルを訓練するために使用された入力、および結果(たとえば、最良のモード)を予測するために機械学習モデルに与えられる入力と同じぐらい良い。したがって、機械学習がビデオ符号化のために使用されるとき、入力の正しい組およびそのような入力の正しい(たとえば、適切、最適などの)形態が使用されることが、決定的に重要である。機械学習モデルが訓練されると、モデルは、出力を、そのモデルの入力の決定的関数(deterministic function)として計算する。したがって、機械学習モデルへの正しい入力および入力の適切な形態を使用することが、決定的に重要になり得る。例において、機械学習モデルは、畳み込みニューラルネットワークモデルなどのニューラルネットワークモデルであることが可能である。しかし、本開示において説明される正しい入力およびそのような入力の最適な形態を与えることは、任意の機械学習技術に適用可能である。
【００３４】
情報理論のよく知られている普遍性定理(universal approximation theorem)は、順伝播型ニューラルネットワークがn次元の実座標空間Rnのコンパクト部分集合(compact subset)上の任意の連続関数を近似するために使用され得ることを示す。既存のニューラルネットワークの固有の線形性は、ニューラルネットワークが非線形関数よりも線形関数(たとえば、写像)を近似する(たとえば、写像する、解決する、推測する)ために働かされる(つまり、訓練される)場合により小さなネットワークまたはより短い学習時間が達成される可能性があることを示唆することが留意される。モード決定へのビデオブロックの写像は、連続関数として特徴付けられ得ることも留意される。
【００３５】
普遍性定理は、学習フェーズの実現性または時間および空間の複雑さを特徴付けない。つまり、ニューラルネットワークは理論的には非線形関数を近似することができる可能性があるが、(たとえば、ノードおよび/もしくはレイヤの数の点で)法外に大きなネットワークならびに/または法外に長い訓練時間が、線形関数を使用して非線形関数を近似するためにニューラルネットワークが学習するために必要とされる可能性がある。実用目的では、必要とされる法外なサイズおよび時間は、学習を実行不可能にする可能性がある。
【００３６】
上記のことを考慮すると、量子化パラメータ(つまり、QPの値)自体が機械学習システムへの入力として使用される場合、QPがRDコストの評価にどのようにして使用されるかとQPが機械学習モデルの訓練にどのようにして使用されるかとの間に分断が起こる可能性がある。
【００３７】
上述のように、多くの最近の映像コーデックにおける量子化パラメータからラグランジュ乗数への写像は、非線形である。つまり、写像は、H.263、VP9、およびAV1においては2次関数的であり、H.264およびHEVCにおいては指数関数的である。したがって、QPの線形の(たとえば、スカラの)形態を使用するのに比べて、QPの非線形の(たとえば、指数関数的、2次関数的などの)形態を機械学習モデルへの入力として使用することによって、より優れた性能が達成され得る。より優れた性能は、より小さなネットワークサイズおよび/またはより優れた推測の性能を意味し得る。
【００３８】
ビデオ符号化のために設計された機械学習モデルへの入力としての量子化パラメータの効率的使用が、本開示において説明される。本開示による実装は、総当たりの技術の符号化効率を維持しながらビデオエンコーダのモード決定プロセスの計算の複雑さを大幅に減らすことができる。さらに、本開示による実装は、QP(つまり、QPの線形の値)を機械学習の訓練および推測フェーズの入力として使用する機械学習モデルと比較して、機械学習モデルの推測の性能を高めることができる。
【００３９】
機械学習モデルへの正しい入力および/または入力の正しい形態を使用することに加えて、機械学習モデルのアーキテクチャも、機械学習モデルの性能および/または予測可能な能力にとって決定的に重要になり得る。
【００４０】
高レベルで、一般性を失うことなく、分類深層学習モデル(classification deep-learning model)などの典型的な機械学習モデルは、2つの主たる部分、すなわち、特徴抽出部および分類部を含む。特徴抽出部は、モデルの特徴を検出する。分類部は、検出された特徴を所望の応答に分類しようと試みる。各部は、1つもしくは複数の層および/または1つもしくは複数の演算を含み得る。
【００４１】
上述のように、CNNは、機械学習モデルの例である。CNNにおいては、概して、特徴抽出部は、通常、フィルタ(一般性を失うことなく、典型的にはサイズkの正方形)に基づいて入力画像をフィルタリングするために使用される一連のフィルタである1組の畳み込み演算を含む。たとえば、マシンビジョンの文脈で、これらのフィルタは、入力画像内の特徴を発見するために使用され得る。特徴は、たとえば、エッジ、角、端点などを含み得る。積み重ねられる畳み込み演算の数が増えるにつれて、より後の畳み込み演算が、より高レベルの特徴を発見し得る。
【００４２】
CNNにおいて、分類部は、概して、1組の全結合層である。全結合層は、高レベルの分類器を生成するために画像すべての入力された特徴を調べるものと考えられ得る。いくつかの段階の(たとえば、一連の)高レベルの分類器が、最終的に、所望の分類出力を生成する。
【００４３】
上述のように、典型的なCNNネットワークは、いくつかの畳み込み演算(たとえば、特徴抽出部)と、それに続くいくつかの全結合層とから構成される。それぞれの種類の演算の数およびそれらのそれぞれのサイズは、概して、機械学習の訓練フェーズ中に決定される。当業者が認めるように、追加的な層および/または演算が、各部に含まれ得る。たとえば、Pooling、MaxPooling、Dropout、Activation、Normalization、BatchNormalization、およびその他の演算の組合せが、畳み込み演算と(つまり、特徴抽出部において)および/または全結合演算と(つまり、分類部において)グループ化され得る。全結合層は、密(Dense)演算と呼ばれる可能性がある。当業者が認めるように、畳み込み演算は、SeparableConvolution2DまたはConvolution2D演算を使用し得る。
【００４４】
本開示において使用されるとき、畳み込み層は、Convolution2DまたはSeparableConvolution2D演算から始まり、その後に、別の畳み込み層、密演算、またはCNNの出力が到達されるまで0個以上の演算(たとえば、Pooling、Dropout、Activation、Normalization、BatchNormalization、その他の演算、またはこれらの組合せ)が続く演算のグループであることが可能である。同様に、密層は、密演算(つまり、全結合層)から始まり、その後に、別の畳み込み層、別の密層、またはネットワークの出力が到達されるまで0個以上の演算(たとえば、Pooling、Dropout、Activation、Normalization、BatchNormalization、その他の演算、またはこれらの組合せ)が続く演算または層のグループであることが可能である。畳み込みネットワークに基づく特徴抽出と密演算を使用する特徴分類との間の境界は、特徴抽出からの多次元行列をベクトルへと平坦化するFlatten演算によって示され得る。
【００４５】
典型的なCNNにおいて、畳み込み層の各々は、1組のフィルタからなる可能性がある。フィルタは1回につき入力データのサブセットに対して適用されるが、フィルタは、入力上を端から端まで動かすことによるなどして入力全体に適用される。概して、この層によって実行される演算は、線形の/行列の乗算である。畳み込みフィルタの例は、図14に関連して説明される。畳み込みフィルタの出力は、活性化関数を使用してさらにフィルタリングされる可能性がある。活性化関数は、線形関数または非線形関数(たとえば、シグモイド関数、arcTan関数、tanH関数、ReLu関数など)である可能性がある。
【００４６】
全結合演算の各々は、あらゆる入力が重みによってあらゆる出力に接続される線形演算である。したがって、N個の入力とM個の出力を有する全結合層は、合計N×M個の重みを持ち得る。上述のように、概して、密演算は、その後にその層の出力を生成するための非線形活性化関数が続く可能性がある。
【００４７】
(本明細書において説明されるように分割を推定するためになど)フレームおよびスーパーブロックの分析を実行するために使用される一部のCNNネットワークアーキテクチャは、異なる粒度で(たとえば、スーパーブロックの異なるサブブロックサイズで)特徴を抽出するいくつかの特徴抽出部と、抽出部の各々の最後の畳み込み層の出力を受け取る(連結層(concatenation layer)と呼ばれる可能性がある)平坦化層(flattening layer)とを含む可能性がある。平坦化層は、異なる特徴抽出部によって抽出されたすべての特徴を1つの入力セットに集約する。平坦化層の出力は、分類部の全結合層に供給される(つまり、その入力として使用される)可能性がある。したがって、ネットワーク全体のパラメータの数は、特徴抽出部(つまり、畳み込み層)と分類部(つまり、全結合層)との間のインターフェースのパラメータの数によって支配される(たとえば、定義される、設定される)可能性がある。つまり、ネットワークのパラメータの数は、平坦化層のパラメータによって支配される。
【００４８】
出力が全結合層に供給される平坦化層を含むCNNアーキテクチャは、いくつかの欠点を持ち得る。
【００４９】
たとえば、そのようなアーキテクチャの機械学習モデルは、多数のパラメータおよび演算を有する傾向がある。場合によっては、機械学習モデルは、百万個を超えるパラメータを含む可能性がある。そのような大きなモデルは、制約される(たとえば、計算を制約される、エネルギーを制約される、および/またはメモリを制約される)可能性があるデバイス(たとえば、モバイルデバイス)で分類を推測するためにたとえ使用されたとしても、効果的または効率的に使用されない可能性がある。つまり、一部のデバイスは、そのような大きなモデルを扱う(たとえば、実行する)のに(たとえば、速度の点で)十分な計算能力またはメモリストレージ(たとえば、RAM)を持たない可能性がある。
【００５０】
別の例として、より重要なことに、そのようなネットワークアーキテクチャの全結合層は、特徴抽出部によって抽出されたすべての特徴の大局的視点(global view)を有すると言われる。したがって、全結合層、たとえば、特徴と入力画像内の特徴の位置との間の相関を喪失する可能性がある。したがって、畳み込み演算の受容野が、全結合層によって混ぜ合わされるようになり得る。受容野は、特定の特徴が注目しているおよび/または影響を与えられる入力空間内の領域として定義され得る。受容野の例は、図15に関連して説明される。
【００５１】
問題(すなわち、受容野が混ぜ合わされるようになること)を簡潔に示すために、下でより詳細に説明される図7が参照される。上述のCNN(たとえば、平坦化層および全結合層を含むCNN)が、図7のブロック702の分割を決定するために使用される可能性がある。CNNは、ブロック702の異なる領域および/またはサブブロックサイズに対応する特徴を抽出する可能性がある。したがって、たとえば、ブロック702のブロック702-1、702-2、702-3、および702-4から抽出された特徴が、全結合層への1つの入力ベクトルへと平坦化される。したがって、サブブロック702-2をブロック702-5、702-6、702-7、および702-8に分割すべきかどうかを全結合層によって推測する際に、ブロック702-1、702-3、702-4のうちの少なくとも1つの特徴が、全結合層によって使用される可能性がある。したがって、分割決定が推測されるべきであるサブブロック(たとえば、ブロック702-2)と関連のないサブブロック(たとえば、ブロック702-1、702-3、702-4)の特徴が、推測に使用される可能性がある。これは、誤った推測および/または無関係な情報に基づく推測につながる可能性があるので望ましくない。したがって、画像領域の分析が画像領域の四分木表現の境界に制限されることが、重要である。
【００５２】
したがって、本明細書においてさらに説明されるのは、ビデオ符号化のための受容野に合致する畳み込みモデルである。つまり、四分木分割を決定するためになど、画像領域を分析するとき、画像領域に関して抽出される(たとえば、計算される、推測されるなど)任意の特徴の受容野が、画像領域自体に制限される。本開示による実装は、ブロックの分割を決定するための(訓練中に生成され、推測中に使用される)機械学習モデルが画像領域外からのピクセルなどの無関係なまたは見当外れな特徴に誤って基づいていないことを保証することができる。
【００５３】
本開示の実装は、パラメータの数を削減された、および/または画像ブロック(たとえば、スーパーブロック)の四分木に基づく特徴を抽出するために画像ブロックを分析するときに画像ブロックの受容野を尊重するCNN機械学習モデルをもたらす。したがって、ビデオ符号化におけるモード決定の推測の正確さが、著しく改善され得る。
【００５４】
ビデオ符号化のための機械学習モデルにおける量子化パラメータの効率的な使用およびビデオ符号化のための受容野に合致する畳み込みモデルが、まず教示が組み込まれる可能性があるシステムを参照して本明細書において説明される。
【００５５】
機械学習、畳み込みニューラルネットワークの詳細、および/または当業者に知られている詳細は、本明細書において省略されることが留意される。たとえば、当業者は、CNNの畳み込みフィルタの値およびノード(すなわち、ニューロン)の間の接続の重みが訓練フェーズ中にCNNによって決定されることを認める。したがって、そのようなことは、本明細書において詳細に検討されない。
【００５６】
図1は、ビデオ符号化および復号システム100の図である。送信局102は、たとえば、図2に関連して説明されるハードウェアの内部構成などのハードウェアの内部構成を有するコンピュータであることが可能である。しかし、送信局102のその他の好適な実装が、あり得る。たとえば、送信局102の処理が、複数のデバイスに分散され得る。
【００５７】
ネットワーク104が、ビデオストリームの符号化および復号のために送信局102と受信局106とを接続し得る。特に、ビデオストリームは、送信局102において符号化されることが可能であり、符号化されたビデオストリームは、受信局106において復号されることが可能である。ネットワーク104は、たとえば、インターネットであることが可能である。ネットワーク104は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、仮想プライベートネットワーク(VPN)、セルラ電話ネットワーク、またはビデオストリームを送信局102からこの例においては受信局106に転送する任意のその他の手段であることも可能である。
【００５８】
一例において、受信局106は、図2に関連して説明されるハードウェアの内部構成などのハードウェアの内部構成を有するコンピュータであることが可能である。しかし、受信局106のその他の好適な実装が、あり得る。たとえば、受信局106の処理が、複数のデバイスに分散され得る。
【００５９】
ビデオ符号化および復号システム100のその他の実装が、あり得る。たとえば、実装は、ネットワーク104を省略し得る。別の実装において、ビデオストリームは、符号化され、それから、受信局106またはメモリを有する任意のその他のデバイスに後で送信するために記憶され得る。1つの実装において、受信局106は、符号化されたビデオストリームを(たとえば、ネットワーク104、コンピュータバス、および/または何らかの通信経路を介して)受信し、後で復号するためにビデオストリームを記憶する。例示的な実装においては、リアルタイムトランスポートプロトコル(RTP)が、ネットワーク104を介した符号化されたビデオの送信のために使用される。別の実装においては、RTP意外のトランスポートプロトコル(たとえば、HTTPに基づくビデオストリーミングプロトコル)が、使用される可能性がある。
【００６０】
たとえば、テレビ会議システムにおいて使用されるとき、送信局102および/または受信局106は、以下で説明されるようにビデオストリームの符号化と復号との両方を行う能力を含む可能性がある。たとえば、受信局106は、復号し、見るためにテレビ会議サーバ(たとえば、送信局102)から符号化されたビデオビットストリームを受信し、さらに、その他の参加者による復号および視聴のために自身のビデオビットストリームを符号化し、テレビ会議サーバに送信するテレビ会議の参加者である可能性がある。
【００６１】
図2は、送信局または受信局を実装し得るコンピューティングデバイス200の例のブロック図である。たとえば、コンピューティングデバイス200は、図1の送信局102および受信局106の一方または両方を実装し得る。コンピューティングデバイス200は、複数のコンピューティングデバイスを含むコンピューティングシステムの形態、または単一のコンピューティングデバイス、たとえば、モバイル電話、タブレットコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、デスクトップコンピュータなどの形態であることが可能である。
【００６２】
コンピューティングデバイス200のCPU 202は、中央演算処理装置であることが可能である。代替的に、CPU 202は、情報を操作または処理することができる既存のまたは今後開発される任意のその他の種類の1つのデバイスまたは複数のデバイスであることが可能である。開示される実装は示されるように単一のプロセッサ(たとえば、CPU 202)によって実施され得るが、2つ以上のプロセッサを使用することによって速度および効率面の利点が実現され得る。
【００６３】
実装において、コンピューティングデバイス200のメモリ204は、読み出し専用メモリ(ROM)デバイスまたはランダムアクセスメモリ(RAM)デバイスであることが可能である。任意のその他の好適な種類のストレージデバイスが、メモリ204として使用され得る。メモリ204は、バス212を使用してCPU 202によってアクセスされるコードおよびデータ206を含み得る。メモリ204は、オペレーティングシステム208およびアプリケーションプログラム210をさらに含むことが可能であり、アプリケーションプログラム210は、CPU 202が本明細書において説明される方法を実行することを可能にする少なくとも1つのプログラムを含む。たとえば、アプリケーションプログラム210は、本明細書において説明される方法を実行するビデオ符号化アプリケーションをさらに含むアプリケーション1からNを含み得る。コンピューティングデバイス200は、たとえば、モバイルであるコンピューティングデバイス200によって使用されるメモリカードであることが可能である二次ストレージ214も含み得る。ビデオ通信セッションは大量の情報を含む可能性があるので、それらのビデオ通信セッションは、二次ストレージ214にまるごとまたは部分的に記憶され、処理のために必要に応じてメモリ204にロードされ得る。
【００６４】
コンピューティングデバイス200は、ディスプレイ218などの1つまたは複数の出力デバイスも含み得る。ディスプレイ218は、一例において、ディスプレイをタッチ入力を感知するように動作可能であるタッチ感知要素と組み合わせるタッチ式ディスプレイである可能性がある。ディスプレイ218は、バス212を介してCPU 202に結合され得る。ユーザがコンピューティングデバイス200をプログラミングするかまたはその他の方法で使用することを可能にするその他の出力デバイスが、ディスプレイ218に加えてまたはディスプレイ218の代替として提供され得る。出力デバイスがディスプレイであるかまたはディスプレイを含むとき、ディスプレイは、液晶ディスプレイ(LCD)、ブラウン管(CRT)ディスプレイ、または有機発光ダイオード(LED)(OLED)ディスプレイなどのLEDディスプレイを含む様々な方法で実装され得る。
【００６５】
また、コンピューティングデバイス200は、画像センシングデバイス220、たとえば、カメラ、またはコンピューティングデバイス200を操作するユーザの画像などの画像を感知することができる既存のもしくは今後開発される任意のその他の画像センシングデバイスを含むかまたはそれらと通信し得る。画像センシングデバイス220は、コンピューティングデバイス200を操作するユーザの方に向けられるように位置付けられ得る。例において、画像センシングデバイス220の位置および光軸は、視野がディスプレイ218に直接隣接し、ディスプレイ218が見えるエリアを含むように構成され得る。
【００６６】
また、コンピューティングデバイス200は、音声センシングデバイス222、たとえば、マイクロフォン、またはコンピューティングデバイス200の近くの音声を感知することができる既存のもしくは今後開発される任意のその他の音声センシングデバイスを含むかまたはそれらと通信し得る。音声センシングデバイス222は、コンピューティングデバイス200を操作するユーザの方に向けられるように位置付けられることが可能であり、ユーザがコンピューティングデバイス200を操作する間にユーザによって出された音声、たとえば、話またはその他の発話を受け取るように構成されることが可能である。
【００６７】
図2はコンピューティングデバイス200のCPU 202およびメモリ204を単一のユニットに統合されるものとして示すが、その他の構成も、利用され得る。CPU 202の動作は、直接またはローカルエリアもしくはその他のネットワークを介して結合され得る複数のマシン(各マシンが1つまたは複数のプロセッサを有する)に分散されることが可能である。メモリ204は、ネットワークに基づくメモリまたはコンピューティングデバイス200の動作を実行する複数のマシンのメモリのように複数のマシンに分散され得る。ここでは単一のバスとして示されるが、コンピューティングデバイス200のバス212は、複数のバスから構成され得る。さらに、二次ストレージ214は、コンピューティングデバイス200のその他の構成要素に直接結合されることが可能であり、またはネットワークを介してアクセスされ、メモリカードなどの単一の統合されたユニットもしくは複数のメモリカードなどの複数のユニットを含むことが可能である。したがって、コンピューティングデバイス200は、多種多様な構成で実装され得る。
【００６８】
図3は、符号化され、その後復号されるビデオストリーム300の例の図である。ビデオストリーム300は、ビデオシーケンス302を含む。次のレベルで、ビデオシーケンス302は、いくつかの隣接するフレーム304を含む。3つのフレームが隣接するフレーム304として示されるが、ビデオシーケンス302は、任意の数の隣接するフレーム304を含み得る。そして、隣接するフレーム304は、個々のフレーム、たとえば、フレーム306へとさらに下位分割され得る。次のレベルで、フレーム306は、一連のセグメント308またはプレーン(plane)に分割され得る。セグメント308は、たとえば、並列処理を可能にするフレームのサブセットであることが可能である。セグメント308は、ビデオデータを別々の色に分離することができるフレームのサブセットであることも可能である。たとえば、カラービデオデータのフレーム306は、輝度プレーンおよび2つの色度プレーンを含み得る。セグメント308は、異なる解像度でサンプリングされる可能性がある。
【００６９】
フレーム306がセグメント308に分割されるかいなかにかかわらず、フレーム306は、ブロック310にさらに下位分割される可能性があり、ブロック310は、たとえば、フレーム306内の16×16ピクセルに対応するデータを含み得る。ブロック310は、ピクセルデータの1つまたは複数のセグメント308からのデータを含むように構成されることも可能である。ブロック310は、4×4ピクセル、8×8ピクセル、16×8ピクセル、8×16ピクセル、16×16ピクセル、またはこれより大きなサイズなどの任意のその他の好適なサイズであることもできる。
【００７０】
図4は、本開示の実装によるエンコーダ400のブロック図である。エンコーダ400は、上述のように、メモリ、たとえば、メモリ204に記憶されるコンピュータソフトウェアプログラムを提供することによるなどして送信局102に実装され得る。コンピュータソフトウェアプログラムは、CPU 202などのプロセッサによって実行されるときに送信局102に本明細書において説明される方法でビデオデータを符号化させる機械命令を含み得る。エンコーダ400は、たとえば、送信局102に含まれる特別なハードウェアとして実装されることも可能である。エンコーダ400は、ビデオストリーム300を入力として使用して符号化されたまたは圧縮されたビットストリーム420を生成するために(実線の接続線によって示される)順方向の経路で様々な機能を実行する以下の段階、すなわち、イントラ/インター予測段階402、変換段階404、量子化段階406、およびエントロピー符号化段階408を有する。エンコーダ400は、将来のブロックの符号化のためにフレームを再構築するための(点線の接続線によって示される)再構築経路も含む可能性がある。図4において、エンコーダ400は、再構築経路で様々な機能を実行する以下の段階、すなわち、逆量子化段階410、逆変換段階412、再構築段階414、およびループフィルタリング段階416を有する。エンコーダ400のその他の構造の変化形が、ビデオストリーム300を符号化するために使用され得る。
【００７１】
ビデオストリーム300が符号化のために与えられるとき、フレーム306が、ブロック単位で処理され得る。イントラ/インター予測段階402において、ブロックは、イントラフレーム予測(イントラ予測とも呼ばれる)、またはインターフレーム予測(インター予測とも呼ばれる)、またはこれら両方の組合せを使用して符号化され得る。いずれの場合も、予測ブロックが、形成され得る。イントラ予測の場合、予測ブロックのすべてまたは一部が、既に符号化され、再構築された現在のフレーム内のサンプルから形成される可能性がある。インター予測の場合、予測ブロックのすべてまたは一部が、動きベクトルを使用して決定された1つまたは複数の既に構築された参照フレーム内のサンプルから形成される可能性がある。
【００７２】
次に、引き続き図4を参照すると、予測ブロックが、残差ブロック(残差とも呼ばれる)を生成するためにイントラ/インター予測段階402において現在のブロックから引かれ得る。変換段階404は、残差を、たとえば、ブロックに基づく変換を使用して周波数領域において変換係数に変換する。そのようなブロックに基づく変換(つまり、変換の種類)は、たとえば、離散コサイン変換(DCT)および非対称離散サイン変換(ADST: Asymmetric Discrete Sine Transform)を含む。その他のブロックに基づく変換も、あり得る。さらに、異なる変換の組合せが、単一の残差に適用される可能性がある。変換の適用の一例においては、DCTが、残差ブロックを周波数領域に変換し、変換係数値は、空間周波数に基づく。最低周波数の(DC)係数は、行列の左上にあり、最高周波数の係数は、行列の右下にある。予測ブロックおよびしたがって結果として得られる残差ブロックのサイズが変換ブロックのサイズと異なる可能性があることは、注目に値する。たとえば、予測ブロックは、別々の変換が適用されるより小さなブロックに分けられる可能性がある。
【００７３】
量子化段階406は、変換係数を、量子化値(quantizer value)または量子化レベルを使用して、量子化された変換係数と呼ばれる離散的な量子値に変換する。たとえば、変換係数が、量子化値で割られ、切り捨てられる可能性がある。それから、量子化された変換係数は、エントロピー符号化段階408によってエントロピー符号化される。エントロピー符号化は、トークンおよび二分木を含む任意の数の技術を使用して実行される可能性がある。そして、エントロピー符号化された係数は、(たとえば、使用される予測の種類、変換の種類、動きベクトル、および量子化値を含む可能性がある)ブロックを復号するために使用されるその他の情報と一緒に、圧縮されたビットストリーム420に出力される。ブロックを復号するための情報は、圧縮されたビットストリーム420内のブロック、フレーム、スライス、および/またはセクションヘッダにエントロピー符号化される可能性がある。圧縮されたビットストリーム420は、符号化されたビデオストリームまたは符号化されたビデオビットストリームとも呼ばれることが可能であり、これらの用語は、本明細書において交換可能なように使用される。
【００７４】
(点線の接続線によって示される)図4の再構築経路は、エンコーダ400と(下で説明される)デコーダ500との両方が圧縮されたビットストリーム420を復号するために同じ参照フレームおよびブロックを使用することを保証するために使用され得る。再構築経路は、逆量子化段階410において量子化された変換係数を逆量子化することと、派生残差(derivative residual)ブロック(派生残差とも呼ばれる)を生成するために逆変換段階412において逆量子化された変換係数を逆変換することとを含む、復号プロセス中に行われ、下でより詳細に検討される機能と同様の機能を実行する。再構築段階414において、イントラ/インター予測段階402において予測された予測ブロックが、再構築されたブロックを生成するために派生残差に足され得る。ループフィルタリング段階416は、ブロッキングアーチファクト(blocking artifact)などの歪みを削減するために再構築されたブロックに適用され得る。
【００７５】
エンコーダ400のその他の変化形が、圧縮されたビットストリーム420を符号化するために使用され得る。たとえば、変換に基づかないエンコーダ400は、特定のブロックまたはフレームに関して変換段階404なしに残差信号を直接量子化し得る。別の実装において、エンコーダ400は、単一の段階に組み合わされた量子化段階406および逆量子化段階410を持ち得る。
【００７６】
図5は、本開示の実装によるデコーダ500のブロック図である。デコーダ500は、たとえば、メモリ204に記憶されるコンピュータソフトウェアプログラムを提供することによって受信局106に実装され得る。コンピュータソフトウェアプログラムは、CPU 202などのプロセッサによって実行されるときに受信局106に、以下で説明される方法でビデオデータを復号させる機械命令を含み得る。デコーダ500は、たとえば、送信局102または受信局106に含まれるハードウェアに実装されることも可能である。
【００７７】
上で検討されたエンコーダ400の再構築経路に似たデコーダ500は、一例においては、圧縮されたビットストリーム420から出力ビデオストリーム516を生成するための様々な機能を実行する以下の段階、すなわち、エントロピー復号段階502、逆量子化段階504、逆変換段階506、イントラ/インター予測段階508、再構築段階510、ループフィルタリング段階512、および後置フィルタリング段階514を含む。デコーダ500のその他の構造の変化形が、圧縮されたビットストリーム420を復号するために使用され得る。
【００７８】
圧縮されたビットストリーム420が復号のために与えられるとき、圧縮されたビットストリーム420内のデータ要素が、1組の量子化された変換係数を生成するためにエントロピー復号段階502によって復号され得る。逆量子化段階504は、(たとえば、量子化された変換係数に量子化値を掛けることによって)量子化された変換係数を逆量子化し、逆変換段階506は、エンコーダ400の逆変換段階412によって生成された派生残差と同一であり得る派生残差を生成するために、選択された変換の種類を使用して逆量子化された変換係数を逆変換する。圧縮されたビットストリーム420から復号されたヘッダ情報を使用して、デコーダ500は、エンコーダ400において、たとえば、イントラ/インター予測段階402において生成されたのと同じ予測ブロックを生成するためにイントラ/インター予測段階508を使用し得る。再構築段階510において、予測ブロックが、再構築されたブロックを生成するために派生残差に足され得る。ループフィルタリング段階512は、ブロッキングアーチファクトを削減するために再構築されたブロックに適用され得る。その他のフィルタリングが、再構築されたブロックに適用され得る。例において、後置フィルタリング段階514は、ブロッキング歪み(blocking distortion)を削減するために再構築されたブロックに適用され、結果が、出力ビデオストリーム516として出力される。出力ビデオストリーム516は、復号されたビデオストリームとも呼ばれることが可能であり、これらの用語は、本明細書において交換可能なように使用される。
【００７９】
デコーダ500のその他の変化形が、圧縮されたビットストリーム420を復号するために使用され得る。たとえば、デコーダ500は、後置フィルタリング段階514なしで出力ビデオストリーム516を生成し得る。デコーダ500の一部の実装において、後置フィルタリング段階514は、ループフィルタリング段階512の後に適用される。ループフィルタリング段階512は、任意のデブロッキング(deblocking)フィルタリング段階を含み得る。追加的にまたは代替的に、エンコーダ400は、ループフィルタリング段階416に任意のデブロッキングフィルタリング段階を含む。
【００８０】
コーデックは、複数の変換の種類を使用し得る。たとえば、変換の種類は、変換ブロックを生成するために図4の変換段階404によって使用される変換の種類であることが可能である。たとえば、変換の種類(つまり、逆変換の種類)は、図5の逆量子化段階504によって使用される変換の種類であることが可能である。利用可能な変換の種類は、1次元離散コサイン変換(1D DCT)またはその近似、1次元離散サイン変換(1D DST)またはその近似、2次元DCT (2D DCT)またはその近似、2次元DST (2D DST)またはその近似、および恒等変換(identity transform)を含み得る。その他の変換の種類が、利用可能であり得る。例においては、1次元変換(1D DCTまたは1D DST)が、1つの次元(たとえば、行または列)で適用されることが可能であり、恒等変換が、他方の次元で適用されることが可能である。
【００８１】
1D変換(たとえば、1D DCT、1D DST)が使用される(たとえば、1D DCTが変換ブロックの列に(または行にそれぞれ)適用される)場合、量子化された係数は、1行ずつの(つまり、ラスタ)走査順または1列ずつの走査順を使用することによって符号化され得る。2D変換(たとえば、2D DCT)が使用される場合、異なる走査順が、量子化された係数を符号化するために使用される可能性がある。上で示されたように、使用される変換の種類に基づいて非ゼロマップ(non-zero map)の非ゼロフラグ(non-zero flag)を符号化するためのコンテキスト(context)を導出するために異なるテンプレートが使用され得る。したがって、実装において、テンプレートは、変換ブロックを生成するために使用される変換の種類に基づいて選択され得る。上で示されたように、変換の種類の例は、行(または列)に適用される1D DCTおよび列(または行)に適用される恒等変換、行(または列)に適用される1D DSTおよび列(または行)に適用される恒等変換、行(または列)に適用される1D DCTおよび列(または行)に適用される1D DST、2D DCT、ならびに2D DSTを含む。変換のその他の組合せが、変換の種類を含み得る。
【００８２】
図6は、本開示の実装による、図3のフレーム306などのフレームの一部600の表現のブロック図である。示されるように、フレームの一部600は、行列またはデカルト平面の2行および2列にスーパーブロックと呼ばれる可能性がある4つの64×64のブロック610を含む。スーパーブロックは、より大きいまたはより小さいサイズを持ち得る。図6はサイズ64×64のスーパーブロックに関連して説明されるが、説明は、より大きい(たとえば、128×128の)またはより小さいスーパーブロックサイズに容易に拡張可能である。
【００８３】
例において、一般性を失うことなく、スーパーブロックは、基本的なまたは最大の符号化単位(CU)であり得る。各スーパーブロックは、4つの32×32のブロック620を含み得る。それぞれの32×32のブロック620は、4つの16×16のブロック630を含み得る。それぞれの16×16のブロック630は、4つの8×8のブロック640を含み得る。それぞれの8×8のブロック640は、4つの4×4のブロック650を含み得る。それぞれの4×4のブロック650は、デカルト平面または行列のそれぞれのブロックの4行および4列に表されることが可能である16ピクセルを含み得る。ピクセルは、輝度情報、色情報、および位置情報などの、フレーム内でキャプチャされた画像を表現する情報を含み得る。例において、示される16×16ピクセルのブロックなどのブロックは、輝度ピクセル662を含み得る輝度ブロック660と、UまたはCb色度ブロック670およびVまたはCr色度ブロック680などの2つの色度ブロック670/680とを含み得る。色度ブロック670/680は、色度ピクセル690を含み得る。たとえば、示されるように、輝度ブロック660は、16×16の輝度ピクセル662を含むことが可能であり、各色度ブロック670/680は、8×8色度ピクセル690を含むことが可能である。ブロックの1つの配列が示されるが、任意の配列が使用され得る。図6はN×Nのブロックを示すが、一部の実装においては、N≠Mとして、N×Mのブロックが使用され得る。たとえば、32×64のブロック、64×32のブロック、16×32のブロック、32×16のブロック、または任意のその他のサイズのブロックが、使用され得る。一部の実装においては、N×2Nのブロック、2N×Nのブロック、またはこれらの組合せが、使用され得る。
【００８４】
一部の実装において、ビデオ符号化は、順序付けられたブロックレベルの符号化を含み得る。順序付けられたブロックレベルの符号化は、フレームまたはフレームの一部の左上の角のブロックから始まり、行を左から右におよび上の行から下の行に進み、処理のために各ブロックを順に特定しながらブロックが特定され、処理され得る、ラスタスキャン順などの順序でフレームの符号化ブロックを含み得る。たとえば、フレームの一番上の行の左の列のスーパーブロックが、符号化される第1のブロックであることが可能であり、第1のブロックの直ぐ右隣のスーパーブロックが、符号化される第2のブロックであることが可能である。第1の行の一番右の列のスーパーブロックの後に第2の行の左の列のスーパーブロックが符号化され得るように、一番上から2番目の行が、符号化される第2の行であることが可能である。
【００８５】
例において、ブロックを符号化することは、ラスタスキャン順のブロックでより小さいブロック単位を符号化することを含み得る四分木符号化を使用することを含み得る。たとえば、図6に示されるフレームの一部の左下の角に示される64×64のスーパーブロックは、左上の32×32のブロックが符号化されることが可能であり、それから右上の32×32のブロックが符号化されることが可能であり、それから左下の32×32のブロックが符号化されることが可能であり、それから右下の32×32のブロックが符号化されることが可能である四分木符号化を使用して符号化され得る。それぞれの32×32のブロックは、左上の16×16のブロックが符号化されることが可能であり、それから右上の16×16のブロックが符号化されることが可能であり、それから左下の16×16のブロックが符号化されることが可能であり、それから右下の16×16のブロックが符号化されることが可能である四分木符号化を使用して符号化され得る。それぞれの16×16のブロックは、左上の8×8のブロックが符号化されることが可能であり、それから右上の8×8のブロックが符号化されることが可能であり、それから左下の8×8のブロックが符号化されることが可能であり、それから右下の8×8のブロックが符号化されることが可能である四分木符号化を使用して符号化され得る。それぞれの8×8のブロックは、左上の4×4のブロックが符号化されることが可能であり、それから右上の4×4のブロックが符号化されることが可能であり、それから左下の4×4のブロックが符号化されることが可能であり、それから右下の4×4のブロックが符号化されることが可能である四分木符号化を使用して符号化され得る。一部の実装においては、8×8のブロックが、16×16のブロックに関して省略されることが可能であり、16×16のブロックは、左上の4×4のブロックが符号化されることが可能であり、それから16×16のブロックのその他の4×4のブロックがラスタスキャン順に符号化されることが可能である四分木符号化を使用して符号化され得る。
【００８６】
例において、ビデオ符号化は、対応する符号化されたフレームから元のフレームの情報の一部を省略することによって元のまたは入力されたフレームに含まれる情報を圧縮することを含み得る。たとえば、符号化は、スペクトルの冗長性を低減すること、空間的冗長性を低減すること、時間的冗長性を低減すること、またはこれらの組合せを含み得る。
【００８７】
例において、スペクトルの冗長性を低減することは、YUVまたはYCbCr色モデルまたは色空間と呼ばれ得る輝度成分(Y)ならびに2つの色度成分(UおよびVまたはCbおよびCr)に基づく色モデルを使用することを含み得る。YUV色モデルを使用することは、フレームの一部の輝度成分を表すために比較的多い量の情報を使用し、フレームの一部に関するそれぞれの対応する色度成分を表すために比較的少ない量の情報を使用することを含み得る。たとえば、フレームの一部は、ピクセルの16×16のブロックを含み得る高解像度の輝度成分によって、および各々がフレームの一部をピクセルの8×8のブロックとして表す2つのより低い解像度の色度成分によって表され得る。ピクセルは、値(たとえば、0から255までの範囲の値)を示すことが可能であり、たとえば、8ビットを使用して記憶されるかまたは送信されることが可能である。本開示はYUV色モデルに関連して説明されるが、任意の色モデルが使用され得る。
【００８８】
空間的冗長性を低減することは、上述のように、ブロックを周波数領域に変換することを含み得る。たとえば、図4のエントロピー符号化段階408などのエンコーダのユニットが、空間周波数に基づいて変換係数値を使用してDCTを実行し得る。
【００８９】
時間的冗長性を低減することは、ビデオストリームの既に符号化され、復号され、再構築されたフレームであり得る1つまたは複数の参照フレームに基づいて比較的少ない量のデータを使用してフレームを符号化するためにフレーム間の類似性を使用することを含み得る。たとえば、現在のフレームのブロックまたはピクセルは、参照フレームの空間的に対応するブロックまたはピクセルに類似し得る。現在のフレームのブロックまたはピクセルは、異なる空間的位置の参照フレームのブロックまたはピクセルに類似し得る。したがって、時間的冗長性を低減することは、空間的違い(たとえば、現在のフレーム内のブロックまたはピクセルの位置と参照フレーム内のブロックまたはピクセルの対応する位置との間の平行移動)を示す動き情報を生成することを含み得る。
【００９０】
時間的冗長性を低減することは、現在のフレームの現在のブロックまたはピクセルに対応する参照フレームまたは参照フレームの一部内のブロックまたはピクセルを特定することを含み得る。たとえば、メモリに記憶され得る参照フレームまたは参照フレームの一部が、現在のフレームの現在のブロックまたはピクセルを符号化するために使用する最良のブロックまたはピクセルに関して探索されることが可能である。たとえば、探索は、参照ブロックと現在のブロックとの間のピクセル値の差が最小化される参照フレームのブロックを特定する可能性があり、動き探索と呼ばれ得る。探索される参照フレームの一部は、制限され得る。たとえば、探索エリアと呼ばれ得る探索される参照フレームの一部は、参照フレームの制限された数の行を含み得る。例において、参照ブロックを特定することは、探索エリア内のブロックのピクセルと現在のブロックのピクセルとの間の差分絶対値和(SAD: sum of absolute differences)などのコスト関数を計算することを含み得る。
【００９１】
参照フレーム内の参照ブロックおよび現在のフレーム内の現在のブロックの位置の間の空間的違いが、動きベクトルとして表され得る。参照ブロックと現在のブロックとの間のピクセル値の差は、差分データ、残差データ、または残差ブロックと呼ばれ得る。一部の実装において、動きベクトルを生成することは、動き推定と呼ばれることが可能であり、現在のブロックのピクセルは、fx,yなどのデカルト座標を使用する位置に基づいて示され得る。同様に、参照フレームの探索エリアのピクセルは、rx,yなどのデカルト座標を使用する位置に基づいて示され得る。現在のブロックに関する動きベクトル(MV)は、たとえば、現在のフレームのピクセルと参照フレームの対応するピクセルとの間のSADに基づいて決定され得る。
【００９２】
上述のように、スーパーブロックは、四分木符号化を使用して符号化され得る。図7は、本開示の実装によるブロックの四分木表現の例700のブロック図である。例700は、ブロック702を含む。上述のように、ブロック702は、スーパーブロックまたはCTBと呼ばれ得る。例700は、ブロック702の分割を示す。しかし、ブロック702は、エンコーダ(たとえば、図4のエンコーダ400)または(図10〜図11に関連して説明されるような)機械学習モデルによるなどして異なるように分割され得る。図4のエンコーダ400などのエンコーダによるブロックの分割は、本明細書において符号化の総当たりの手法と呼ばれる。
【００９３】
例700は、ブロック702が4つのブロック、すなわち、ブロック702-1、702-2、702-3、および702-4に分割されることを示す。ブロック702-2は、ブロック702-5、702-6、702-7、および702-8にさらに分割される。したがって、たとえば、ブロック702のサイズがN×N(たとえば、128×128)である場合、ブロック702-1、702-2、702-3、および702-4は、それぞれ、サイズN/2×N/2(たとえば、64×64)であり、ブロック702-5、702-6、702-7、および702-8は、それぞれ、サイズN/4×N/4(たとえば、32×32)である。ブロックが分割される場合、ブロックは、4つの等しいサイズの重なり合わない正方形のサブブロックに分割される。
【００９４】
四分木データ表現が、ブロック702がブロック702-1、702-2、702-3、702-4、702-5、702-6、702-7、および702-8などのサブブロックにどのようにして分割されるかを説明するために使用される。ブロック702の分割の四分木703が、示される。四分木703の各ノードは、ノードが4つのサブノードにさらに分けられる場合、フラグ「1」を割り振られ、ノードが分けられない場合、フラグ「0」を割り振られる。フラグは、分割ビット(たとえば、1)または停止ビット(たとえば、0)と呼ばれることが可能であり、圧縮されたビットストリームに符号化される。四分木において、ノードは、4つの子ノードを有するかまたは子ノードを持たないかのどちらかである。子ノードを持たないノードは、さらに分けられないブロックに対応する。分けられるブロックの子ノードの各々は、サブブロックに対応する。
【００９５】
四分木703において、各ノードは、ブロック702のサブブロックに対応する。対応するサブブロックが、括弧内に示される。たとえば、値0を有するノード704-1は、ブロック702-1に対応する。
【００９６】
根ノード704-0は、ブロック702に対応する。ブロック702が4つのサブブロックに分けられるとき、根ノード704-0の値は、分割ビット(たとえば、1)である。中間レベルで、フラグは、ブロック702のサブブロックが4つのサブサブブロックにさらに分けられるかどうかを示す。この場合、ノード704-2は、ブロック702-2がブロック702-5、702-6、702-7、および702-8に分けられるので、フラグ「1」を含む。ノード704-1、704-3、および704-4の各々は、対応するブロックが分けられないので、フラグ「0」を含む。ノード704-5、704-6、704-7、および704-8は四分木の一番下のレベルにあるので、フラグ「0」または「1」は、これらのノードに必要ない。ブロック702-5、702-6、702-7、および702-8がさらに分けられないことは、これらのブロックに対応するさらなるフラグがないことから推測され得る。
【００９７】
四分木703に関する四分木データ表現は、各ビットが四分木703のノード704を表す2進データ「10100」によって表され得る。2進データは、ブロック702の分割をエンコーダおよびデコーダに示す。エンコーダは、エンコーダが図5のデコーダ500などのデコーダに2進データを伝達する必要がある場合、図4の圧縮されたビットストリーム420などの圧縮されたビットストリームに2進データを符号化することができる。
【００９８】
四分木703の葉ノードに対応するブロックは、予測のための基礎として使用され得る。つまり、予測は、本明細書において符号化ブロックと呼ばれるブロック702-1、702-5、702-6、702-7、702-8、702-3、および702-4の各々に関して実行され得る。図6に関連して述べられたように、符号化ブロックは、輝度ブロックまたは色度ブロックであることが可能である。例において、スーパーブロックの分割は、輝度ブロックに関連して決定され得ることが留意される。同じ分割が、色度ブロックによって使用され得る。
【００９９】
予測の種類(たとえば、イントラまたはインター予測)が、符号化ブロック(たとえば、ブロック702-1、702-5、702-6、702-7、702-8、702-3、または702-4)のレベルで決定される。つまり、符号化ブロックは、予測のための決定点(decision point)である。
【０１００】
上述のように、モード決定プロセス(たとえば、分割決定プロセス)は、ブロック702などの符号化ブロックの四分木分割を決定する。分割決定プロセスは、符号化パラメータの異なる組合せのRDコストを計算する。つまり、たとえば、予測ブロックと予測(たとえば、イントラ予測、インター予測など)の異なる組合せが、最適な分割を決定するために検査される。
【０１０１】
当業者が認めるように、多くのモード決定プロセスが、エンコーダによって実行され得る。
【０１０２】
図8は、ブロックを符号化するための最良のモードを探索するためのプロセス800の流れ図である。プロセス800は、最良のモードを決定するモード決定プロセスの例示的な高レベルのプロセスである。説明を容易にするために、プロセス800は、予測ブロックを符号化するためのイントラ予測モードを選択することに関連して説明される。プロセス800と同様のプロセスによって決定され得る最良のモードのその他の例は、変換の種類を決定することおよび変換のサイズを決定することを含む。プロセス800は、モード決定の総当たりの手法を使用する図4のエンコーダ400などのエンコーダによって実施され得る。
【０１０３】
802において、プロセス800は、画像ブロックを受信する。プロセス800がイントラ予測モードを決定することに関連して説明されるとき、画像ブロックは、予測単位であり得る。図7に関連して説明されたように、葉ノード符号化ブロック(たとえば、ブロック702-1、702-5、702-6、702-7、702-8、702-3、または702-4)の各々は、1つまたは複数の予測単位に分割され得る。したがって、画像ブロックは、1つのそのような予測単位であり得る。
【０１０４】
804において、プロセス800は、モードのリストを決定する(たとえば、選択する、計算する、選ぶなど)。モードのリストは、K個のモードを含むことが可能であり、Kは、整数である。モードのリストは、{m1, m2, ..., mk}と表記され得る。エンコーダは、利用可能なイントラ予測モードのリストを持ち得る。たとえば、利用可能なイントラ予測モードのリストは、{DC_PRED, V_PRED, H_PRED, D45_PRED, D135_PRED, D117_PRED, D153_PRED, D207_PRED, D63_PRED, SMOOTH_PRED, SMOOTH_V_PRED, and SMOOTH_H_PRED, PAETH_PRED}であり得る。これらのイントラ予測モードの説明は、本開示の理解と無関係であるため省略される。804において決定されるモードのリストは、利用可能なイントラ予測モードのリストの任意のサブセットであることが可能である。
【０１０５】
806において、プロセス800は、BEST_COST変数を高い値(たとえば、2,147,483,647に等しい可能性があるINT_MAX)に初期化し、ループ変数iを検査される第1のモードに対応する1に初期化する。
【０１０６】
808において、プロセス800は、modeiに関するRD_COSTiを算出する(たとえば、計算する)。810において、プロセス800は、検査中の現在のモードmodeiのRDコストRD_COSTiが現在の最良のコストBEST_COST未満であるかどうかをテストする。テストが肯定的である場合、812において、プロセス800は、現在のモードのコストであるように最良のコストを更新する(つまり、BEST_COST=RD_COSTi)、現在の最良のモードのインデックス(BEST_MODE)をループ変数iに設定する(BEST_MODE=i)。それから、プロセス800は、次のモード(もしあれば)を検査する準備をするためにループ変数iをインクリメントする(つまり、i=i+1)ために814に進む。テストが否定的である場合、プロセス800は、814に進む。
【０１０７】
816において、検査するさらなるモードが存在する場合、プロセス800は、808に戻り、そうでない場合、プロセス800は、816に進む。818において、プロセス800は、最良のモードのインデックスBEST_MODEを出力する。最良のモードを出力することは、最良のモードをプロセス800の呼び出し元に返すことを意味し得る。最良のモードを出力することは、最良のモードを使用して画像を符号化することを意味し得る。最良のモードを出力することは、その他の意味を持ち得る。プロセス800は、最良のモードを出力した後、終了する。
【０１０８】
図9は、予測モードmiを使用することによって画像ブロックXを符号化するレートおよび歪みコストを推定する例900のブロック図である。プロセス900は、図4のエンコーダ400などのエンコーダによって実行され得る。プロセス900は、ブロックを符号化するRDコストを決定するために予測モードmiを使用して画像ブロックXの仮定の符号化を実行することを含む。プロセス900は、プロセス800によって808において使用され得る。
【０１０９】
仮定の符号化プロセスは、符号化ステップを実行するが、図4の圧縮されたビットストリーム420などの圧縮されたビットストリームにビットを出力しないプロセスである。目的がレート(ビットレートとも呼ばれる)を推定することであるので、仮定の符号化プロセスは、レート推定プロセスと考えられるまたは呼ばれる可能性がある。仮定の符号化プロセスは、画像ブロックXを符号化するために必要とされるビット数(RATE)を算出する。例900は、画像ブロックXと画像ブロックXの再構築されたバージョンとの間の差に基づいて歪み(DISTORTION)も計算する。
【０１１０】
904において、モードmiを使用する予測が、決定される。予測は、図4のイントラ/インター予測段階402に関連して説明されたように決定され得る。906において、残差が、画像ブロック902と予測との間の差として決定される。908および910において、残差は、図4の変換段階404および量子化段階406に関連してそれぞれ説明されたように変換され、量子化される。レート(RATE)は、仮定の符号化を実行するレート推定器912によって計算される。例において、レート推定器912は、図4のエントロピー符号化段階408に関連して説明されたようにエントロピー符号化を実行し得る。
【０１１１】
量子化された残差は、(たとえば、図4の逆量子化段階410に関連して説明されたように)914において逆量子化され、(たとえば、図4の逆変換段階412に関連して説明されたように)916において逆変換され、再構築されたブロックを生成するために(たとえば、図4の再構築段階414に関連して説明されたように)918において再構築される。歪み推定器920が、画像ブロックXと再構築されたブロックとの間の歪み(つまり、ビデオ品質の低下)を計算する。例において、歪みは、画像ブロックXおよび再構築されたブロックのピクセル値の間の平均2乗誤差であることが可能である。歪みは、画像ブロックXおよび再構築されたブロックのピクセル値の間の差分絶対値和誤差であることが可能である。任意のその他の好適な歪みの測定が、使用され得る。
【０１１２】
そして、レートRATEおよび歪みDISTORTIONが、式(5)に示されるようにラグランジュ乗数を使用することによってスカラ値(つまり、RDコスト)へと組み合わされる。
DISTORTION+λmode×RATE     (5)
【０１１３】
式5のラグランジュ乗数λmodeは、例900の動作を実行するエンコーダに応じて上述のように計算され得る。
【０１１４】
図8および図9は、モード決定の通常の(つまり、総当たりの)手法が、基本的に、最良のコストを有するモードを決定するために候補モードを使用することによって画像ブロックXを符号化する主として逐次プロセスであることを示す。モード決定の複雑さを削減するための技術が、使用されてきた。たとえば、たとえばレート歪みコストが閾値未満であることなどの特定の条件が満たされるとすぐに図8のプロセス800のループを終了するための早期終了技術が、使用されてきた。その他の技術は、たとえば、ヒューリスティックス(heuristics)に基づいて利用可能な候補モードのサブセットを選択すること、または候補モード上のマルチパス(multi-passes)を使用することを含む。しかし、そのような技術は、モード決定の複雑さを十分に削減しない可能性がある。
【０１１５】
機械学習が、モード決定の計算の複雑さを削減するために使用され得る。上述のように、エンコーダは、いくつかのモード決定プロセスを実行する可能性がある。モード決定が(たとえば、RDコストを決定するために)QPの使用を必要とする場合、QPの正しい形態(つまり、関数)が機械学習の学習および推測フェーズ中に使用されることが、決定的に重要である。図10は、機械学習モデルによってQPの非線形関数を使用する説明のための例である。
【０１１６】
図10は、本開示の実装による量子化パラメータ(QP)の非線形関数を使用するモード決定のための畳み込みニューラルネットワーク(CNN)1000の例のブロック図である。より詳細には、CNN 1000は、画像ブロックのブロックの分割を決定するために使用され得る。ブロックは、スーパーブロックであることが可能である。たとえば、CNNは、図4のイントラ/インター予測段階402において使用されるブロックサイズを決定するために使用され得る。分割は、図7に関連して説明されたように四分木分割であることが可能である。CNN 1000は、イントラ符号化されたブロックのための分割を決定するために使用され得る。したがって、ブロックは、図3のフレーム304などのイントラ符号化されたフレームのブロックであることが可能である。CNN 1000は、最も小さな可能なブロックの区画が8×8の区画であるエンコーダによって使用され得る。したがって、ブロックを分けるべきかどうかの決定が、16×16以上であるブロック(つまり、スーパーブロックのサブブロック)に関して行われる必要がある。
【０１１７】
CNN 1000のアーキテクチャが、図10に関連して説明される。CNN 1000の訓練および使用(つまり、推測のため)が、図11に関連して説明される。
【０１１８】
以下でさらに説明されるように、CNN 1000の特徴抽出部の並列な分岐の数は、パラメータで表され得る(たとえば、構成可能である)。たとえば、構成において、1つの分岐(たとえば、線形の分岐)のみが、使用され得る。これは、以下でさらに説明される受容野合致特性が維持される限り可能である。ブロックの一番上および左の行を除いて、受容野合致特性は、ブロックの受容野の境界がブロックの境界を超えないことを意味する。
【０１１９】
符号化されるブロック1002(つまり、画像ブロック)が、CNN 1000に与えられる。ブロック1002は、1つの色プレーンのブロックであることが可能である。したがって、ブロック1002は、輝度ブロックであることが可能である。ブロックが1つの色プレーンのブロックであることが、図10において「64×64×1」の「×1」によって示される。上述のように、ブロック1002は、スーパーブロックであることが可能である。サイズ64×64のスーパーブロックがCNN 1000を説明するために示され、使用されるが、ブロック1002は、任意のサイズであることが可能である。たとえば、ブロック1002は、128×128、32×32、または概して四分木分割がエンコーダによって決定される任意のサイズのブロックであることが可能である。上述のように、エンコーダは、H.264、VP9、HEVC、H.263、AV1、またはモード決定を決めるのにQPを使用する任意のその他のエンコーダであることが可能である。別の例においては、予測モードが分割されるべきであるブロックに隣接する(つまり、周辺の)ピクセルに依存し得るので、ブロック1002(つまり、CNN 1000への入力として使用されるブロック)は、分割が決定されるべきであるブロックの外にあるピクセルを含むことが可能である。たとえば、64×64の分割が決定されるべきである場合、サイズ65×65×1のブロックが、CNN 1000への入力として使用され得る。つまり、たとえば、分割が決定されるべきであるブロックの左および上の隣接するピクセルが、CNN 1000への入力ブロックに含まれ得る。そのような場合、以下で説明される受容野の特性を維持するために、第1のフィルタ(たとえば、特徴抽出層の各分岐の第1のフィルタ)は、サイズ2k+1であることが可能であり、ストライド(stride)は、2kであることが可能である。
【０１２０】
示される特徴抽出層1003は、3つの分岐、すなわち、分岐1003-A、分岐1003-B、および分岐1003-Cを含む。特徴抽出層の分岐の数は、より多くのまたはより少ない分岐を含むように構成可能であり得る。分岐の各々は、1つまたは複数の層を含み得る。各層において、それぞれの特徴マップが、抽出される。下の説明においては、次元A×B×Cを有する特徴マップ1004などの特徴マップが、参照される。たとえば、特徴マップ1004は、サイズ8×8×256である。これは、以下のように解釈されるべきである。特徴マップ1004が、256個の特徴マップを含み、特徴マップの各々は、サイズ8×8ピクセル(または特徴)である。したがって、特徴マップ1004は、256個の行列の組と考えられることが可能であり、各行列は、サイズ8×8である。CNN 1000の1つの構成においては、図10と同様に特徴抽出を共有する代わりに、それぞれの分割の種類の特徴抽出が、分離され得る。
【０１２１】
特徴マップの特徴の数は、構成可能であり得る。たとえば、特徴マップ1004は8×8×256であるように示されるが、特徴マップ1004は、8×8×Nであることが可能であり、Nは、特徴の任意の所望の数である。一部の例において、モデルの特徴の数を大きくするまたは小さくするために、機械学習モデルに特徴圧縮率(feature compression rate)が適用され得る。たとえば、特徴圧縮率は、特徴の増大(または削減)のためにすべての特徴マップを乗算され得る。
【０１２２】
分岐1003-Aは、分岐1003-Aの第1の層において、ブロック1002の8×8のブロックに対応する特徴を抽出する。分岐1003-Aは、256個のフィルタ(カーネルとも呼ばれる)をブロック1002と畳み込む。フィルタの各々は、サイズ8×8である。フィルタのサイズに等しいストライド(つまり、8に等しいストライド)が、使用される。したがって、それぞれサイズ8×8の256個の特徴マップ(すなわち、特徴マップ1004)が、抽出される。サイズ8×8のフィルタは、同じサイズのカーネルによって定義され、カーネルの各成分は、実数であることが可能である。例において、成分は、2以上の非負の整数であることが可能である。したがって、8×8のブロックをフィルタリングすることは、ブロックと同じサイズのフィルタカーネルとの間の内積を算出することによって達成される可能性がある。機械学習においては、フィルタカーネル(つまり、カーネルの値を構成する実数)が、訓練プロセスにおいて学習され得る。
【０１２３】
分岐1003-Bは、それぞれサイズ8×8の256個の特徴マップ(すなわち、特徴マップ1008)を抽出する。分岐1003-Bは、まず、ブロック1002を、それぞれサイズ4×4の、ストライド4(つまり、フィルタサイズに等しいストライド)を使用する128個のフィルタと畳み込むことによって、分岐1003-Bの第1の層において特徴マップ1006を抽出する。分岐1003-Bの第2の層において、特徴マップ1006の128個の各々は、ストライド2を使用して2つの2×2のフィルタと畳み込まれ、それによって、特徴マップ1008をもたらす。
【０１２４】
分岐1003-Cは、それぞれサイズ8×8の256個の特徴マップ(すなわち、特徴マップ1014)を抽出する。分岐1003-Cは、まず、ブロック1002を、それぞれサイズ2×2の、ストライド2を使用する64個のフィルタと畳み込むことによって、分岐1003-Cの第1の層において特徴マップ1010を抽出する。分岐1003-Cの第2の層において、特徴マップ1010の64個の各々は、ストライド2を使用して2つの2×2のフィルタと畳み込まれ、それによって、128個の特徴マップ(すなわち、特徴マップ1012)をもたらす。分岐1003-Cの第3の層において、特徴マップ1012の128個の各々は、ストライド2を使用して2つの2×2のフィルタと畳み込まれ、それによって、特徴マップ1014をもたらす。
【０１２５】
フィルタが単位(たとえば、ブロック1002または特徴マップ)に適用される度に、単位は、各次元でフィルタのサイズによって縮小される(つまり、ダウンサンプリングされる)ことに留意されたい。
【０１２６】
特徴マップ1010は、ブロック1002の32×32のブロックの特徴マップである。特徴マップ1006は、ブロック1002の16×16のブロックの特徴マップである。特徴マップ1004は、ブロック1002の8×8のブロックの特徴マップである。特徴マップ1008は、特徴マップ1004のようにサイズ8×8であるように特徴マップ1006を正規化する。同様に、特徴マップ1014が後に続く特徴マップ1012は、同様に、サイズ8×8であるように特徴マップ1010を正規化する。
【０１２７】
例において、特徴マップは、エンコーダによって使用され得る最小の可能な分割の特徴マップであるように連続的な畳み込みによって正規化され得る。したがって、図10のCNN 1000が使用されるときにエンコーダによって使用され得る最小の可能な分割の種類に対応するサイズ8×8。同様に、最小の可能な分割が4×4であったならば、特徴抽出層1003が、サイズ4×4であるように特徴マップを正規化することができる。例において、特徴抽出層1003は、さらなる分岐を含むことが可能であり、分岐の各々が、それぞれサイズ4×4である特徴マップを連続的な畳み込みによって生成する。別の例において、特徴マップは、最も小さな分割のサイズに必ずしも対応しないサイズに正規化され得る。たとえば、特徴マップは、8×8以上である任意のサイズに正規化され得る。
【０１２８】
連結層1016は、特徴マップ1004、1008、および1014を受け取る。さらに、CNN 1000はイントラ予測されるべきであるブロック1002に関する分割を決定する(たとえば、予測する、与えるなど)ために使用されるので、およびイントラ予測が隣接するブロックの少なくとも一部のサンプル(つまり、ピクセル)を使用するので、隣接するブロックの少なくとも一部のサンプルも、連結層1016への入力として使用され得る。(図10においてTOPによって示される)上の隣接するブロックからのサンプルおよび(図10においてLEFTによって示される)左の隣接するブロックからのサンプルが例示を目的として示されるが、ビデオフレームのブロックを処理するために使用されるスキャン順に応じてその他の隣接するブロックが使用される可能性がある。たとえば、LEFTおよびTOPは、ラスタスキャン順の場合に使用される。実装においては、上および左の隣接するブロックのすべてのサンプルが、連結層1016への入力として使用される。しかし、上述のように、上および左の隣接するブロックのサンプルは、入力ブロック(たとえば、図10のブロック1002)に含められ得る。さらに、その他のモード決定パラメータ(たとえば、インター予測パラメータ)を決定するために使用されるCNNにおいて、隣接するブロックからのサンプルは、CNNへの入力として使用される可能性がありまたは使用されない可能性がある。
【０１２９】
実装においては、当業者が認めるように、TOPが、ブロック1002の上の端の周辺にある既に再構築されたピクセルの行であることが可能であり、LEFTは、ブロック1002の左の端の周辺にある既に再構築されたピクセルの列であることが可能である。TOPに対応する最大64個のサンプルおよびLEFTに対応する最大64個のサンプルが、存在し得る。上述のように、TOPおよびLEFTは、その代わりにまたは追加で、CNNに与えられる入力ブロックに加えられ得る。
【０１３０】
QPの非線形関数も、連結層1016への入力として使用される。2次関数(つまり、QP2)が、図10に示される。しかし、上述のように、使用される関数は、コーデックに依存し、より詳細には、使用される関数は、コーデックによって実装される規格に依存する。たとえば、H.263、VP9、またはAV1を実装するコーデックの場合、2次関数が使用され、H.264またはHEVCを実装するコーデックの場合、指数関数が使用される。
【０１３１】
したがって、TOPおよびLEFTが連結層1016に直接供給される場合、合計897個の入力が、連結層1016によって受け取られ得る。897個の入力は、256(つまり、特徴マップ1004)+256(つまり、特徴マップ1008)+256(つまり、特徴マップ1014)+64(つまり、TOP)+64(つまり、LEFT)+1(つまり、QP2などのQPの非線形の値)=897に対応する。一部の実装においては、ブロック1002左上の角に隣接するサンプル(つまり、ピクセル)も、連結層1016への入力として使用され得る。そのような場合、連結層1016は、898個の入力を受け取る。
【０１３２】
CNN 1000は、3つの分類器、すなわち、分類器1018、1020、および1022を含む。分類器1018、1020、1022の各々は、以下でさらに説明されるように、1組の分類層を含み、畳み込みを使用する。
【０１３３】
分類器1018は、ブロック1002のサイズ16×16のサブブロックの分割決定を推測する(つまり、出力する)。ブロック1002は、それぞれサイズ16×16の4×4個のブロックに分割され得ることが留意される。したがって、分類器1018は、連結層1016から受け取られた(それぞれサイズ8×8である)特徴マップを4×4のサイズに縮小する。
【０１３４】
第1に、特徴マップ1019が、2×2の分割可能な畳み込みフィルタを使用する重なり合わない畳み込みを適用して特徴マップの一部を1つに組み合わせ、それによって、それぞれサイズ4×4の256個の特徴マップを生じることによって連結層1016から受け取られた特徴マップから得られる。
【０１３５】
第2に、特徴の次元のサイズを徐々に1まで減らすために、一連の1×1の畳み込みが連続的に適用される。したがって、特徴マップ1019に1×1×128の畳み込み(128はフィルタの数である)が適用され、4×4×128の特徴マップを生じ、その4×4×128の特徴マップに1×1×64の畳み込み(64はフィルタの数である)が適用され、4×4×64の特徴マップを生じ、その4×4×64の特徴マップに1×1×32の畳み込みが適用され、4×4×32の特徴マップを生じ、その4×4×32の特徴マップに1×1×1の畳み込みが適用され、4×4×1の特徴マップ、つまり、特徴マップ1025を生じる。
【０１３６】
ブロック1002のそれぞれの16×16のサブブロックに関して、分類器1018は、サブブロックを分けるべきかまたは分けるべきでないかを推測する。したがって、分類器1018は、ブロック1002の16×16のサブブロックの各々にそれぞれ対応する16個の決定を出力する。16個の決定は、二分決定(binary decision)であることが可能である。つまり、特徴マップ1025は、二分決定の行列と考えられ得る。たとえば、ゼロ(0)が、サブブロックを分けない決定に対応することが可能であり、一(1)が、サブブロックを分ける決定に対応することが可能である。分類器1018の出力の順序は、ブロック1002の16×16のサブブロックのラスタスキャン順に対応し得る。別の例において、決定は、確率(つまり、0から1までの範囲の値)または0から100までの範囲の値などの何らかのその他の値に対応し得る。決定が決定の値の範囲に関する適切な閾値(たとえば、0.9、0.75、90%など)を超えているとき、決定は、二分決定1に対応すると考えられ得る。
【０１３７】
分類器1020は、ブロック1002のサイズ32×32のサブブロックの分割決定を推測する(つまり、出力する)。分類器1020は、特徴マップ1019を受け取り、特徴マップの各々を2×2の分割可能な畳み込みフィルタと畳み込んで特徴マップ1019の特徴マップを1つに組み合わせ、それによって、特徴マップ1021を生じる。ブロック1002は、それぞれサイズ32×32の2×2個のブロックに分割され得ることが留意される。したがって、分類器1020は、特徴マップ1019に関連して上で説明されたように、特徴の次元のサイズを徐々に1まで減らすために1×1のフィルタを使用する一連の重なり合わない畳み込みによって(それぞれサイズ4×4である)特徴マップ1019を2×2のサイズに縮小し、それによって、特徴マップ1027を生じる。ブロック1002のそれぞれの32×32のサブブロックに関して、分類器1020は、サブブロックを分けるべきかまたは分けるべきでないかを推測する。したがって、分類器1020は、ブロック1002の32×32のサブブロックの各々にそれぞれ対応する4個の決定を出力する。
【０１３８】
分類器1022は、ブロック1002自体の分割決定を推測する(つまり、出力する)。分類器1022は、特徴マップ1021を受け取り、特徴マップの各々を2×2の分割可能な畳み込みフィルタと畳み込み、特徴マップ1021の特徴マップの一部を1つに組み合わせる特徴マップ1023を生じる。ブロック1002は、サイズ64×64のただ1つの1×1個のブロックに分割され得ることが留意される。したがって、分類器1022は、特徴マップ1019に関連して上で説明されたように、特徴の次元のサイズを徐々に1まで減らすために1×1のフィルタを使用する一連の重なり合わない畳み込みによって(それぞれサイズ1×1である)特徴マップ1023を1×1のサイズに縮小し、それによって、特徴マップ1029を生じる。ブロック1002に関して、分類器1022は、ブロック1002を分けるべきかまたは分けるべきでないかを推測する。したがって、分類器1022は、ブロック1002を4つの32×32のサブブロックに分けるべきかまたは分けるべきでないかに対応する1つの決定を出力する。
【０１３９】
サイズ64×64のブロックに関して、4×4個の16×16の分割(つまり、特徴マップ1025)、2×2個の32×32の分割(つまり、特徴マップ1027)、および1×1個の64×64の分割(つまり、特徴マップ1029)を最終的にそれぞれ決定するために(それぞれ、分類器1018、1020、および1022の)特徴マップ1019、1021、および1023を得るためのサイズ2×2の分割可能な畳み込みフィルタが、説明された。しかし、通常の場合、分類器1018、1020、および1022が説明されたように4×4個の16×16の分割(つまり、特徴マップ1025)、2×2個の32×32の分割(つまり、特徴マップ1027)、および1×1個の64×64の分割(つまり、特徴マップ1029)を決定する限り、サイズ2kの任意の畳み込みフィルタが使用され得る。
【０１４０】
分類器1018において、4×4×1の次元を有する特徴マップ1025は、サイズ4×4×32である特徴マップ1034から直接導出されるものとして示される(つまり、さらなる介在する畳み込み演算が存在しない)。しかし、必ずしもそうであるとは限らず、任意の数のさらなる畳み込み演算が、特徴マップ1034と特徴マップ1025との間で使用され得る。これが、一点鎖線1036によって示される。同じことが、それぞれ、特徴マップ1027および特徴マップ1029に関連して分類器1020および1022に当てはまり得る。
【０１４１】
例においては、パラメータが、CNNの構成パラメータ(つまり、閾値パラメータ)として使用され得る。残りの特徴の数が閾値パラメータ以下である場合、次の層の特徴の数が、1に設定され得る。図10のCNN 1000の例において、閾値パラメータは、32に設定される。したがって、特徴マップ1034の特徴の数が閾値パラメータ(つまり、32)に等しいので、次の層は、特徴の次元1を有する特徴マップ1025を生成する層に対応する。例において、分類器の各々は、異なるそれぞれの閾値パラメータを用いて構成され得る。別の例においては、すべての分類器が、同じ閾値パラメータを使用するように構成され得る。
【０１４２】
例において、分類器内の特徴マップの次元(つまり、特徴マップの最後の次元)が、特徴削減パラメータFを使用して削減され得る。たとえば、分類器は、数列IncomingFeature, IncomingFeature/F, IncomingFeature/F2, ...,1に従ってチャネルの数を削減することができ、IncomingFeatureは、層によって最初に受け取られる特徴の数である。例において、分類器の各々は、異なるそれぞれの特徴削減パラメータを用いて構成され得る。別の例においては、すべての分類器が、同じ特徴削減パラメータを使用するように構成され得る。
【０１４３】
ここで、分類器1018が、閾値パラメータおよび特徴削減パラメータを示すために使用される。分類器1018に関連して、IncomingFeatureは、(サイズ4×4×256である特徴マップ1019によって示されるように)256であり、特徴削減パラメータFは、2であり、閾値パラメータは、32である。したがって、分類器1018は、数列、256、256/2、256/22、256/23、および1に従ってチャネルの数を削減する。つまり、分類器1018は、数列、256、128、64、32、および1に従ってチャネルの数を削減する。分類器1018は、数列256/23(すなわち、32)においてチャネルの数に関する閾値パラメータ32が達せられるので、チャネルの数が256/24(すなわち、16)である層を含まない。
【０１４４】
CNN 1000は、その他のブロックサイズに関する分割決定を推測するために拡張され得る。
【０１４５】
たとえば、エンコーダは、最も小さな区画がサイズ4×4であることを可能にする可能性がある。したがって、サイズ8×8のサブブロックに関する分割決定を推測するために、特徴抽出層1003の各分岐が連結層1016への入力としてそれぞれサイズ4×4の特徴マップを生成しうるように、特徴抽出層1003に分岐が追加され得る。さらに、連結層1016と分類器1018との間に分類器が追加され得る。追加された分類器は、ブロック1002のサイズ8×8のサブブロックの分割決定を推測する(つまり、出力する)。ブロック1002は、それぞれサイズ8×8の8×8個のサブブロックに分割され得ることが留意される。追加された分類器は、2×2のフィルタを使用する一連の重なり合わない畳み込みによって連結層1016から受け取られた特徴マップを8×8×1のサイズに縮小する。
【０１４６】
たとえば、CNN 1000は、128×128のブロックの分割決定を推測するように構成され得る。128×128のブロックに関して、CNNは、1つ(つまり、1×1の出力行列)の128×128の決定(つまり、ブロックが分けられるべきかまたは分けられないべきかに対応する1つの決定)、4つ(つまり、2×2の出力行列)の64×64の決定、16個(つまり、4×4の出力行列)の32×32の決定、および64個(つまり、8×8の出力行列)の16×16の決定をそれぞれ決める分類器を含むように構成され得る。
【０１４７】
一部の実装において、CNN 1000は、早期終了の特徴を含み得る。たとえば、分類器1022がブロック1002が分割されるべきでないと推測する場合、分類器1020および1018による処理は、継続される必要がない。同様に、分類器1020がブロック1002の32×32のサブブロックのいずれも分けられるべきでないと推測する場合、分類器1020による処理は、継続される必要がない。
【０１４８】
図11は、本開示の実装による、第1の量子化パラメータを使用して画像ブロックをエンコーダ(すなわち、第1のエンコーダ)によって符号化するためのプロセス1100の流れ図である。プロセス1100は、入力データを使用して、モード決定を推測するように機械学習モデルを訓練する。そのとき、プロセス1100は、量子化パラメータ(すなわち、第1の量子化パラメータ)を使用して符号化されるべきである画像ブロックに関するモード決定を推測するために訓練された機械学習モデルを使用する。例において、モード決定は、画像ブロックの四分木分割決定であることが可能である。画像ブロックは、イントラ予測を使用して符号化される画像(たとえば、ビデオフレーム)のブロックであることが可能である。別の例において、モード決定は、図16に関連して説明される分割を含む分割であることが可能である。以下でさらに説明されるように、図16の分割の一部は、正方形のおよび正方形でない下位分割を含み、正方形の下位分割の各々は、図16の分割のうちの1つによってさらに分割され得る。
【０１４９】
1102において、プロセス1100は、機械学習(ML)モデルを訓練する。MLモデルは、訓練データ1112を使用して訓練され得る。訓練データ1112のうちの各訓練データは、図4および図6〜図9に関連して説明されたような(たとえば、第2のエンコーダによって)通常の符号化方法によって符号化されたビデオブロックと、第2のエンコーダによって使用された量子化パラメータ(すなわち、第2の量子化パラメータ)に対応する値(すなわち、第2の値)と、ビデオブロックを符号化するためのモード決定を決める際に第2のエンコーダによって使用された入力に対応する0個以上のさらなる入力と、第2のエンコーダによって決められた結果として得られたモード決定とを含み得る。訓練フェーズにおいて、訓練データの少なくとも一部に関して、MLモデルがビデオブロック、量子化パラメータに対応する値、および訓練データの0個以上のさらなる入力を含む1組の入力に関する訓練データの結果として得られるモード決定を訓練データに関して推測することができるように、MLモデルのパラメータが生成される。
【０１５０】
上述のように、第2の量子化パラメータに対応する第2の値は、第2の量子化パラメータと非線形の関係にある。つまり、第2の値は、第2の量子化パラメータの非線形関数に基づいて第2の量子化パラメータから導出される。
【０１５１】
例において、非線形関数は、第2の量子化パラメータの指数関数であることが可能である。指数関数は、第2のエンコーダがH.264またはHEVCエンコーダであるときに使用され得る。たとえば、cが定数である非線形関数f(Q)=cQPが、使用され得る。例においては、c=1/3である。例において、非線形関数は、第2の量子化パラメータの2次関数であることが可能である。2次関数は、第2のエンコーダがH.263、AV1、またはVP9エンコーダであるときに使用され得る。たとえば、αが0または1に等しくない(つまり、α≠0かつα≠1)非線形関数f(QP)=QPαが、使用され得る。例においては、α=2である。通常の場合、非線形関数は、上述のように、レート歪み計算において使用される乗数を決定するために第2のエンコーダによって使用される関数と同じ種類である。
【０１５２】
MLモデルがブロックとブロックのそれぞれの四分木分割との間の関係を推測するために使用される場合、第2のエンコーダによって決められた結果として得られたモード決定は、訓練データの訓練ブロックの四分木分割を示し得る。四分木分割の多くのインジケーション(たとえば、表現)が、可能である。例において、四分木703に関連して説明された2値フラグのベクトル(たとえば、シーケンス)が、使用され得る。
【０１５３】
MLモデルがイントラ予測されるブロックとブロックのそれぞれの四分木分割との間の関係を推測するために使用される場合、ビデオブロックを符号化するためのモード決定を決める際に第2のエンコーダによって使用された入力に対応する0個以上のさらなる入力は、上の隣接するブロックのサンプル(つまり、第1のサンプル)の少なくとも一部、入力ブロックの左の隣接するブロックのサンプル(つまり、第2のサンプル)の少なくとも一部、左上の隣接するブロックのサンプルの少なくとも一部、またはこれらの組合せを含み得る。簡潔にするために、一般性を失うことなく、左上の隣接するブロックは、上の隣接するブロックかまたは左の隣接するブロックかのどちらかの一部と考えられ得る。したがって、例において、第1のサンプルまたは第2のサンプルは、左上の隣接するブロックからのサンプルを含むと考えられ得る。
【０１５４】
訓練フェーズ(つまり、1102における)の間に、MLモデルは、(図10のブロック1002などの)ブロックおよび量子化パラメータの非線形の値(たとえば、図10に示されたQP2)を入力として受け付ける写像(つまり、関数)を学習(たとえば、訓練、構築、導出など)し、ブロックの分割を出力する。
【０１５５】
訓練フェーズ中に、学習された関数ができるだけ有用であり得るように、MLモデルは、広範な入力ブロックと、現実の応用の典型物において使用されるQP値などの広範な可能なQP値とを使用して訓練されることが好ましい。
【０１５６】
たとえば、入力ブロックに関連して、訓練データセットが暗い(たとえば、低い強度値を有するピクセル)訓練ブロックのみを含む場合、MLモデルは、暗いブロックに関するモード決定をどのようにして決めるべきかを十分に学習するが、推測フェーズ中に暗くないブロックを与えられるときに信頼できない出力を与える可能性がある。たとえば、第2のエンコーダがQP値の離散的な組を使用する場合、QP値の各々が訓練データセット内で十分に表現されることが好ましい。たとえば、QP値が0から1まで変わり得る場合、訓練データは、0から1までの範囲内の様々なQP値を含むことが好ましい。QP値が訓練データ内で使用されない(たとえば、見逃されたQP値)場合、MLモデルは、見逃されたQP値が推測フェーズ中にMLモデルに与えられるとき、不適切な挙動をする(たとえば、誤った出力を与える)可能性がある。別の例において、見逃されたQP値(つまり、訓練フェーズ中に使用されないQP値)が推測フェーズ中に使用される場合、見逃されたQP値は、訓練フェーズ中に使用されるQP値から補間されることが可能であり、そして、補間されたQP値が、推測フェーズ中に使用されることが可能である。
【０１５７】
それから、MLモデルは、推測フェーズ中にプロセス1100によって使用され得る。推測フェーズは、動作1104および1106を含む。区切り1110は、訓練フェーズおよび推測フェーズが時間的に分離され得ることを示す。したがって、推測フェーズは、第1のエンコーダによって実行されることが可能であり、訓練データ1112は、第2のエンコーダによって生成されることが可能である。例において、第1のエンコーダおよび第2のエンコーダは、同じエンコーダである。つまり、訓練データ1112は、推測フェーズを実行する同じエンコーダによって生成され得る。どちらの場合も、推測フェーズは、1102に関連して説明されたように訓練される機械学習モデルを使用する。
【０１５８】
1104において、入力が、MLモジュールに与えられる。つまり、入力が、MLモデルを組み込む、含む、実行する、実装するなどするモジュールに与えられる。入力は、(たとえば、図10のブロック1002に関連して説明された)画像ブロックと、第1の量子化パラメータに対応する値(すなわち、第1の値)の非線形関数とを含む。上述のように、第1の値は、第1の量子化パラメータを非線形関数への入力として使用して非線形関数から導出される(すなわち、結果として得られる)。例において、第1の値は、図10のQP2に関連して説明された通りであり得る。入力は、0個以上のさらなる入力に関連して上で説明されたようにさらなる入力も含み得る。
【０１５９】
1106において、プロセス1100は、機械学習モデルから第1のモード決定パラメータを取得する。例において、プロセス1100は、図10に関連して説明されたように第1のモード決定パラメータを取得する。つまり、たとえば、ブロック1002に関して、図10のCNN 1000は、ブロック1002の四分木分割を示す出力を与える。
【０１６０】
1108において、プロセス1100は、第1のモード決定パラメータを使用して画像ブロックを符号化する。つまり、ブロックの分割を推測する例について続けると、サブブロックの各々に関して(つまり、四分木分割を示す出力に従って)、プロセス1100は、図4のイントラ/インター予測段階402に関連して説明されたようにブロックをイントラ予測し、図4の説明に一致して、最終的に、図4のビットストリーム420などの圧縮されたビットストリームに画像ブロックをエントロピー符号化段階408に関連して説明されたようにエントロピー符号化することができる。
【０１６１】
例において、非線形関数は、線形セグメントによって近似され得る。区分的線形セグメントによって非線形関数を近似することが、図12に関連して示される。
【０１６２】
図12は、本開示の実装による線形セグメントを使用して量子化パラメータの非線形関数を近似する例1200である。2次関数が、非線形関数を説明するために使用される。しかし、上述のように、別の非線形関数の種類も可能である。例1200は、量子化パラメータの非線形関数1202を破線の曲線として示す。非線形関数1202は、QP2である。例1200において、QP値は、0から1までの範囲である。例1200は、0から1までの範囲をいくつかのセグメント、つまり、セグメント1204、1206、および1208に分けることを示す。3つのセグメントが示されるが、より多くのまたはより少ない、ただし、2つ以上のセグメントが、使用され得る。
【０１６３】
0から1までの範囲は、0から0.25までのQP値を含む第1の範囲と、0.25から0.75までのQP値を含む第2の範囲と、0.75から1までのQP値を含む第3の範囲とに分けられ得る。セグメント1204は、関数QP1=0.25QPに対応し、セグメント1206は、関数QP2=QP-0.1875に対応し、セグメント1208は、関数QP3=1.75QP-0.75に対応する。したがって、関数QP1、QP2、またはQP3のうちのどれが訓練フェーズ中に使用される第2の値および推測フェーズ中に使用される第1の値を導出するために使用されるかは、それぞれのQP値に依存する。たとえば、第1の量子化パラメータが0.8である場合、関数QP3が使用される。たとえば、第2の量子化パラメータが0.2である場合、関数QP1が使用される。
【０１６４】
図13は、非線形QP関数を入力として使用する第1の機械学習モデル1316と線形QP関数を使用する第2の機械学習モデル1326とのレート歪み性能比較の例1300である。ピーク信号対雑音比(PSNR)が、歪みの測定基準として使用される。つまり、グラフ1310および1320において、x軸は、kbpsで測定されたサンプルビデオシーケンスを符号化するためのデータレートを示し、一方、y軸は、デシベル(dB)で測定されたPSNR品質を示す。グラフ1310および1320の結果は、以下で説明されるように実験によって得られる。
【０１６５】
第1の機械学習モデル1316は、図10に関連して(上でおよび下で)説明されるアーキテクチャを有するCNNのモデルである。第2の機械学習モデル1326の全結合層は120万個のパラメータを有するが、(すべて畳み込みの(all-convolutional)モデルであり、全結合分類層を含まない)第1の機械学習モデル1316は、(特徴圧縮率0.5を使用して)300,000個のパラメータしかなくずっと小さい。したがって、少なくとも部分的により小さなモデルのサイズのおかげで、第1の機械学習モデル1316を使用して電力および/または容量を制約されたプラットフォーム(たとえば、モバイルデバイス)上で推測を実行することが可能である。削減されたモデルのサイズは、部分的に、QPの非線形の値(この例においてはQP2)を使用することおよび本明細書において説明される受容野に合致する特性を有するCNNアーキテクチャの各々または組合せのおかげである。
【０１６６】
第1の機械学習モデル1316および第2の機械学習モデル1326は、入力層、内部層(internal layer)、および出力層を有する包括的な機械学習モデルとして示される。第1の機械学習モデル1316および第2の機械学習モデル1326は、第1の機械学習モデル1316がQPの非線形関数、すなわち、QP2を使用し、一方、第2の機械学習モデル1326がQPの線形関数、すなわち、QP値自体を使用することを示すためにのみ示される。
【０１６７】
グラフ1310および1320の曲線1312は、図4に関連して説明されたVP9エンコーダのレート歪み性能を示す。つまり、曲線1312は、総当たりの符号化(つまり、機械学習モデルに基づかない符号化)に基づいて生成される。グラフ1310の曲線1314は、VP9ソフトウェアエンコーダにおいて使用されるブロック分割を推測するために第1の機械学習モデル1316を使用した結果として得られるレート歪み性能を示す。グラフ1320の曲線1324は、VP9ソフトウェアエンコーダにおいて使用されるブロック分割を推測するために第2の機械学習モデル1326を使用した結果として得られるレート歪み性能を示す。
【０１６８】
グラフ1310および1320において、より高いQP値は概してより低いデータレートに対応することが留意される。グラフ1320は、QPの線形関数を使用するとき、QP値が増加するにつれてPSNR性能が低下することを示す。しかし、QP2を使用するとき、グラフ1310に示されるように、様々なQP値でより安定したレート歪み性能が得られる。
【０１６９】
グラフは、平均して、QP2を使用するときにより高いレート歪み性能が達成され得ることを示す。BDレート(BD-rate)で表される性能は、QP2を使用するとき、総当たりの符号化よりもおよそ1.78%低く、一方、QPを使用すると、性能は、総当たりの符号化よりもおよそ3.6%低い。
【０１７０】
図11の1108に関連して上で説明されたように、画像ブロックに関するモード決定パラメータを推測するために図10に関連して説明されたMLモデルなどの機械学習モデルを使用するエンコーダは、図4のビットストリーム420などの圧縮されたビットストリームにモード決定パラメータを符号化することができる。上述のように、画像ブロックは、スーパーブロックであることが可能であり、モード決定パラメータは、スーパーブロックの四分木分割を示すことが可能である。
【０１７１】
したがって、図5のデコーダ500などのデコーダが、圧縮されたビットストリーム内で受信されたモード決定パラメータを使用して画像ブロックを復号することができる。
【０１７２】
したがって、画像ブロックを復号するプロセスは、図5の圧縮されたビットストリーム420などの圧縮されたビットストリーム内で、サブブロックへの画像ブロックの四分木分割のインジケーションを受信することと、画像ブロックの四分木分割のインジケーションを使用して画像ブロックを復号することとを含み得る。
【０１７３】
図10〜図11に関連して上で説明されたように、四分木分割は、機械学習モデルを訓練するための入力として訓練データを使用することによって訓練される機械学習モデルを使用してエンコーダによって決定され得る。各訓練データは、エンコーダによって符号化される訓練ブロック、訓練ブロックを符号化するためにエンコーダによって使用されるモード決定パラメータ、および量子化パラメータに対応する値を含み得る。モード決定パラメータは、訓練ブロックの四分木分割を示し得る。エンコーダは、訓練ブロックを符号化するために量子化パラメータ使用しており、値は、非線形関数が量子化パラメータを入力として使用した結果である。上述のように、非線形関数は、レート歪み計算において使用される乗数を決定するためにエンコーダによって使用される関数と同じ種類であることが可能である。
【０１７４】
図14は、本開示の実装による畳み込みフィルタの例1400である。例1400は、画像の領域1402を含む。領域1402は、この例の目的のために6×6の領域として示される。しかし、畳み込みフィルタは任意のサイズのブロック、スーパーブロック、画像の領域、または画像に適用され得ることを理解されたい。図10に関連して述べられたように、畳み込み演算は、特徴マップ1004、1006、1008、1010などのいずれかを生成するために使用され得る。
【０１７５】
この例においては、サイズ3×3のフィルタ1404が使用される。しかし、フィルタは、異なるサイズを持ち得る。例1400は、フィルタサイズに等しいストライドを用いる重なり合わない畳み込み演算を使用する。したがって、水平方向および垂直方向の各々のストライドサイズは、3である。フィルタ1404は、2進(つまり、0および1)値を含むものとして示される。しかし、フィルタの値は、任意の値(たとえば、正のおよび/または負の実数値)であり得る。上述のように、フィルタの値は、図11の1102のように機械学習モデルの訓練フェーズ中に機械学習モデルによって決定され得る。特徴マップ1414は、領域1402とのフィルタ1404の畳み込みの出力である。
【０１７６】
フィルタ1404は、まず下位領域1406と(たとえば、行列の乗算演算を使用して)畳み込まれる。したがって、特徴マップ1414のピクセル1416が、(0×0+9×1+3×0+9×0+4×1+8×1+5×0+1×0+2×1)=23として計算され得る。それから、フィルタ1404は、下位領域1408と畳み込まれる。したがって、ピクセル1418が、(4×0+8×1+3×0+0×0+0×1+0×1+9×0+9×0+10×1)=18として計算され得る。それから、フィルタ1404は、下位領域1410と畳み込まれる。したがって、ピクセル1420が、(9×0+5×1+1×0+5×0+9×1+3×1+8×0+3×0+6×1)=23として計算され得る。それから、フィルタ1404は、下位領域1412と畳み込まれる。したがって、ピクセル1422が、(5×0+1×1+6×0+2×0+7×1+7×1+8×0+10×0+3×1)=18として計算され得る。
【０１７７】
図15は、本開示の実装による受容野の例1500である。例1500は、入力1502を含む。例1500および本明細書の説明は、Dang Ha The Hien、「A guide to receptive field arithmetic for Convolutional Neural Networks」、2017年4月、[2018年8月6日に検索]を参考にして書かれている。インターネット<URL: https://medium.com/mlreview/a-guide-to-receptive-field-arithmetic-for-convolutional-neural-networks-e0f514068807>から検索。
【０１７８】
入力1502は、特徴(たとえば、特徴マップ)を抽出することが望ましい画像の一部であることが可能である。入力1502は、たとえば、ブロック702、ブロック702-1、702-2、702-3、および702-4のうちの1つ、または702-5、702-6、702-7、および702-8のうちの1つであることが可能である。入力1502は、5×5ピクセルのサイズを有するものとして示される。しかし、入力1502のサイズは、受容野の概念の説明と関係がない。
【０１７９】
例1500は、サイズk=3×3、パディングサイズp=1×1、およびストライドs=2×2のフィルタを使用する畳み込み演算を示す。パディング、ストライド、およびカーネル(つまり、フィルタ)サイズの概念の説明は、そのような概念が当業者によく知られているので本明細書においては省略される。サイズk=3×3のフィルタの例が、図14のフィルタ1404に関連して示される。
【０１８０】
例1500は、第1のフィルタとの入力1502の畳み込みの結果である第1の特徴マップ1504および第2のフィルタとの第1の特徴マップの畳み込みの結果である第2の特徴マップ1506を示す。第1のフィルタおよび第2のフィルタは、異なる値を持ち得る。機械学習において、フィルタの値は、訓練フェーズ中に決定され(たとえば、学習され)得る。
【０１８１】
第1の特徴マップ1504の(特徴とも呼ばれる可能性がある)ピクセル1508は、入力1502のピクセルの畳み込みの結果として得られる。そのようなピクセルは、ピクセル1508の受容野である。例1500において、畳み込みはパディングを使用するので、ピクセル1508を生成するために使用されるピクセルの一部(たとえば、パディングされたピクセル)は、入力外であることに留意されたい。ピクセル1508の受容野は、黒い正方形1513などの黒い正方形によって角が示される正方形によって定義される。破線1512などの、ピクセル1508の角から出ている破線も、ピクセル1508の受容野を示す。破線の端点は、黒い正方形である。
【０１８２】
第2の特徴マップ1506の(特徴とも呼ばれる可能性がある)ピクセル1510は、第1の特徴マップ1504のピクセルの畳み込みの結果として得られる。そのようなピクセルは、第1の特徴マップ1504内のピクセル1510の受容野であり、入力1502の受容野を決定するために入力1502にさらに射影され得る。例1500において、畳み込みはパディングを使用するので、ピクセル1510を生成するために使用されるピクセルの一部は、第1の特徴マップ1504外であることに留意されたい。第1の特徴マップ1504のパディングピクセルは、図15をさらにごちゃごちゃにしないように示されない。入力1502内のピクセル1510の受容野は、黒い円1515などの黒い円によって角が示される正方形によって定義される。2点鎖線1514などの、ピクセル1510の角から出ている2点鎖線も、ピクセル1510の入力1502内の受容野を示す。2点鎖線の端点は、黒い円である。
【０１８３】
見て分かるようにおよび理解され得るように、受容野は、ビデオ符号化中の画像分析において重要な役割を果たすことができる。一連の畳み込み層の受容野は、ピクセル(たとえば、特徴)を算出するときに各ピクセル(たとえば、特徴)が「見る」(たとえば、影響を受ける、まとめるなど)画像の「領域」(たとえば、ブロック、スーパーブロック、フレーム、または画像の任意のその他の部分)と解釈され得る。
【０１８４】
初期入力層(たとえば、入力1502)のピクセルは、CNNが初期入力層を分析するのを助けるCNNのより後の層(たとえば、第2の特徴マップ1506を含む第2の層)のための(一連の畳み込みによる)特徴になる。
【０１８５】
本明細書において説明されるように、四分木表現を用いて分割を決定するためのモデルを分析するためにCNNを使用するとき、各分析領域がその四分木表現の境界に制限されるようになることが、決定的に重要であり得る。つまり、たとえば、画像の領域を示し、画像の領域の分割を推測するために使用される特徴が画像のその他の領域からのピクセルを混ぜないことが、決定的に重要であり得る。つまり、たとえば、図7を参照すると、ブロック702-2ならびに/またはブロック702-5、702-6、702-7、および702-8を示す特徴がそれらの受容野内にブロック702-1、702-3、または702-4のいずれからのピクセルも含まないことが、決定的に重要であり得る。
【０１８６】
以下の4つの等式が、CNNの各層において受容野を計算するために使用され得る。
【０１８７】
【数１】
2021520082.tif 000003
【０１８８】
noutは、層の出力される特徴の数である。例1500において、第1の層は、第1の特徴マップ1504に対応し(たとえば、含み)、第2の層は、第2の特徴マップ1506に対応する(たとえば、含む)。ninは、層への入力される特徴の数である。たとえば、第2の層への入力される特徴の数は、第1の特徴マップ1504の特徴の数、つまり、9である。k、p、およびs(集合的に畳み込み特性と呼ばれる)は、それぞれ、畳み込みカーネルサイズ、畳み込みパディングサイズ、および畳み込みストライドサイズである。
【０１８９】
等式(1)は、入力される特徴の数および畳み込み特性に基づいて層の出力される特徴の数を計算する。等式(2)は、出力される特徴マップ内の2つの隣接する特徴の間の距離(つまり、ジャンプ(jump)jout)を計算する。等式(3)は、k個の入力される特徴によって包含されるエリアおよび境界上の入力される特徴の受容野によって包含される追加のエリアとして定義される出力される特徴マップの受容野のサイズ(つまり、rout)を計算する。等式(4)は、第1の出力される特徴の受容野の中心の位置(すなわち、startout)を計算する(たとえば、ピクセル1508およびピクセル1510は、それぞれ、第1の特徴マップ1504および第2の特徴マップ1506において第1の出力される特徴に対応する)。
【０１９０】
受容野の概念を説明したので、図10が、図10のCNN 1000のさらなる特徴を説明するために再び参照される。まず、CNN 1000は、すべて畳み込みのネットワークであることが留意される。つまり、特徴抽出層および分類層は、畳み込み演算を使用する。上述のように、典型的なCNNは分類のために全結合層を含むが、CNN 1000は、分類のために畳み込み層を使用する。
【０１９１】
特徴抽出層(すなわち、特徴抽出層1003)においては、重なり合わない畳み込み演算が、カーネルサイズと同じストライド値を設定することによって各層において入力に対して実行される。特徴抽出層においては、各畳み込み層が、2×2のカーネルをストライド2とともに使用する。この重なり合わない畳み込み演算は、最後の特徴抽出層において(つまり、連結層1016の直前に)、図10の例においてはN=8であるN×Nチャネル(つまり、サイズN×Nの特徴マップ)の各チャネルが、サイズ(64/N)×(64/N)のその対応するサブブロックからの情報のみを見る(たとえば、使用する、影響を受けるなど)ことを保証し、図10の例においては、64×64が、ブロック1002(つまり、入力ブロック)のサイズに対応する。例においては、Nは、2kであることが可能である。
【０１９２】
分類層(つまり、分類器1018、1020、および1022の各々の層)においては、全結合層の代わりに、1×1のカーネルによる畳み込み削減が、所望の出力の数が達せられるまで実行される。畳み込み層が、分類層において使用される。したがって、受容野が、尊重される(たとえば、維持される)。たとえば、CNN 1000においては、サイズ16×16のサブブロックに関する分割決定を(つまり、分類器1018によって)(分類器1018の出力である特徴マップ1025として)推測するために、カーネルサイズ2を用いる重なり合わない畳み込み演算(つまり、連結層1016と分類器1018の第1の層との間の)が、チャネルの数を8×8(つまり、上述の連結層1016の特徴マップの各々のサイズ)から4×4(つまり、特徴マップ1019の各々のサイズ)に削減し、その後、カーネルサイズ1×1を適用し、特徴の次元のサイズを徐々に1(つまり、サイズ4×4×1である特徴マップ1025)まで削減するために実行される。最後の分類層の出力は、入力ブロック1002の16個のサブブロックの分割の決定である4×4×1である。16個のサブブロックの各々は、サイズ16×16ピクセルである。
【０１９３】
同様に、32×32のサブブロックの各々に関する分割決定が、分類器1020によって推測されることが可能であり、64×64のブロックの分割が、分類器1022によって推測されることが可能である。
【０１９４】
当業者が認めるように、サイズ1×1のカーネルが、特徴マップの次元を下げるために使用され得る。たとえば、32個の特徴マップを有するサイズ4×4の入力(たとえば、サイズ4×4×32である特徴マップ1034)は、サイズ1×1の1つのフィルタと畳み込まれるとき、サイズ4×4×1の特徴マップ(たとえば、特徴マップ1025)をもたらす。したがって、サイズ1×1のカーネルが、複数の特徴マップからの情報を合併する(たとえば、組み合わせる)ために使用され得る。
【０１９５】
本明細書において使用されるサイズ1×1のカーネルは、入力の異なる位置からの値を混ぜない。つまり、たとえば、特徴マップ1025の位置(x, y)の値を決定するときは、特徴マップ1034の32個のマップの各々の位置(x, y)の32個の値のみが、使用される。したがって、1×1の畳み込みを使用することによって、受容野が、維持され(たとえば、尊重され)得る。
【０１９６】
(ブロックの分割を決定するためなどで画像データを分析する)技術水準の向上が、重なり合わないカーネルサイズの使用と、受容野を尊重する(特徴抽出のためのおよび分類のための)すべて畳み込みのネットワークとの組合せによってもたらされる。カーネルサイズは、偶数(つまり、2の倍数)であることが可能である。
【０１９７】
簡単にするために、CNN 1000は、(分類器1022を使用する)64×64の区画からの64×64のブロック(すなわち、ブロック1002)の分割から(分類器1018を使用して)それぞれの16×16のサブブロックが8×8のブロックにさらに分割されるべきかどうかに至るまでを決定することに関して説明される。しかし、本明細書の開示は、そのように限定されない。本開示の実装によるCNNアーキテクチャは、以下の通り一般化され得る。
【０１９８】
ブロックがサイズN×N(たとえば、64×64、128×128)であり、畳み込みニューラルネットワーク(CNN)によって決定される最小の区画がサイズS×S(たとえば、4×4、8×8)であるビデオ符号化においてブロックの分割を決定するためのCNNは、特徴抽出層(たとえば、特徴抽出層1003)、連結層(たとえば、連結層1016)、および分類器(たとえば、分類器1018、1020、1022)を含み得る。分類器は、すべて畳み込みの層を含む。NおよびSのその他の値が、可能であり得る。一部の例において、Nは、32、64、または128であることが可能であり、Sは、4、8、または16であることが可能である。
【０１９９】
連結層は、特徴抽出層からブロックの第1の特徴マップを受け取る。それぞれの第1の特徴マップは、サイズS×S(たとえば、8×8)である。第1の特徴マップは、図10の特徴マップ1004、1008、および1014に関連して説明された通りであり得る。
【０２００】
分類器の各々は、1つまたは複数の分類層を含む。各分類層は、それぞれの特徴の次元を有する第2の特徴マップを受け取る。たとえば、図10を参照すると、分類器1018は、(各層の特徴マップを表す5つの正方形によって示される)5つの分類層を含み、分類器1020は、4つの分類層を含み、分類器1022は、3つの分類層を含む。
【０２０１】
分類器の各々は、特定のサイズのサブブロックに関する分割決定を推測するように構成され得る。つまり、分類器は、ブロックのサイズ(αS)×(αS)のサブブロックに関する分割決定を推測するように構成されることが可能であり、αは、2の累乗であり、α=2, ..., N/Sである。したがって、N=64およびS=8であるとき、αは、値2、4、および8のいずれかを持ち得る。たとえば、分類器1018に関連して、α=2であり、分類器1018は、サイズ(2×8)×(2×8)=16×16のブロックに関する分割決定を推測し、分類器1020に関連して、α=4であり、分類器1020は、サイズ(4×8)×(4×8)=32×32のブロックに関する分割決定を推測し、分類器1022に関連して、α=8であり、分類器1022は、サイズ(8×8)×(8×8)=64×64のブロックに関する分割決定を推測する。
【０２０２】
分類器は、分類層のそれぞれの連続する分類層において、それぞれの特徴の次元を半分に減らすためにサイズ1×1のカーネルを適用することと、N/(αS)×N/(αS)×1の出力マップに対応する出力を分類層の最後の層によって出力することとを含む命令によってブロックのサイズ(αS)×(αS)のサブブロックに関する分割決定を推測することができる。つまり、α=8である例として分類器1022を使用すると、分類器1022は、特徴マップ1023をそれぞれサイズ1×1の32個のカーネルと畳み込み、それによって、1×1×32の次元を有する特徴マップ1031をもたらす。(サイズN/(αS)×N/(αS)×1=64/(8×8)×64/(8×8)×1=1×1×1である)特徴マップ1029は、サイズN×Nのブロックが分けられるべきかいなかの決定に対応する。
【０２０３】
第1の分類器(たとえば、図10の分類器1018)は、連結層(たとえば、連結層1016)から第1の特徴マップを受け取り、第1の特徴マップをサイズ(S/2)×(S/2)に縮小するために第1の2×2のカーネルを使用する第1の重なり合わない畳み込み演算を適用することができる。たとえば、分類器1018に関連して説明されたように、分類器1018の第1の層は、連結層1016から8×8の特徴マップを受け取り、それらの特徴マップをサイズ4×4(つまり、特徴マップ1019)に縮小する。分類器1018の例において、特徴マップ1019は、次元256を有するものとして示される。しかし、分類器の各々の最後の層の次元がN/(αS)×N/(αS)×1である限り、必ずしもそうであるとは限らない。
【０２０４】
特徴マップ1019は、説明を目的として、256の特徴の次元を含むものとして示される。しかし、必ずしもそうであるとは限らない。各分類器の第1の層において受け取られる特徴マップの数は、構成可能であり得る。何らかのkに関してカーネル=ストライドサイズ=(2k, 2k)という規則に従うカーネルサイズが、使用され得る。
【０２０５】
ブロック1002がサイズ(64+N)×(64+N)、(128+N)×(128+N)などであるようにN個の隣接する行およびN個の隣接する列が第1の層への入力に含まれる場合、サイズ(2k+N, 2k+N)のカーネルおよび(2k, 2k)のストライドサイズが、N個の左/上の情報を伝播させ、知覚野(perception field)を観測する(たとえば、維持する)ために使用され得る。
【０２０６】
CNNは、サイズ(βS)×(βS)のサブブロックに関する分割決定を推測する第2の分類器を含む。たとえば、第2の分類器は、図10の分類器1022であることが可能である。したがって、β=8である。第2の分類器は、第3の分類器からそれぞれサイズM×Mの第3の特徴マップを受け取ることができる。第3の分類器は、分類器1020であることが可能である。したがって、M=2であり、第3の特徴マップは、特徴マップ1021であることが可能である。第2の分類器は、第3の特徴マップをサイズ(M/2)×(M/2)に縮小するために第2の2×2のカーネルを使用する第2の重なり合わない畳み込み演算を適用することができる。たとえば、分類器1022は、分類器1020から特徴マップ1021を受け取り、特徴マップ1023を生成するために第2の2×2のカーネルを使用する第2の重なり合わない畳み込み演算を適用する。
【０２０７】
分類層の出力はB×B×1(たとえば、4×4×1、2×2×1、または1×1×1)の形態の行列として説明されるが、出力B2の各々が行列内のデカルト座標位置に対応するように、分類層がB*B=B2個の値を出力することを理解されたい。出力値の各々は、ブロックの位置に対応し、その位置のサブブロックが分割されるべきか否かを示す値であることが可能である。たとえば、値0が、サブブロックが分割されるべきでないことを示すことが可能であり、値1が、サブブロックが分割されるべきであることを示すことが可能である。その他の値も、もちろん可能である。
【０２０８】
特徴抽出層は、ブロックの第1の特徴マップの第1のサブセットを生成するためにブロックに(N/S)×(N/S)の重なり合わない畳み込みフィルタを適用する第1の特徴抽出層を含み得る。たとえば、第1の特徴抽出層は、特徴マップ1004を生成するためにブロック1002に(64/8)×(64/8)=8×8の重なり合わない畳み込みフィルタを適用する特徴抽出層1003-Aであることが可能である。
【０２０９】
特徴抽出層は、MがS未満であり、1よりも大きく、2の累乗であるものとして、それぞれサイズ(N/M)×(N/M)のマップを生成するためにブロックにM×Mの重なり合わない畳み込みフィルタを適用し、ブロックの第1の特徴マップの第2のサブセットを生成するためにマップに重なり合わない2×2の畳み込みフィルタを続けて適用するように構成される第2の特徴抽出層をさらに含み得る。特徴抽出層1003-Bおよび1003-Cは、第2の特徴抽出層の例であり得る。
【０２１０】
上述のように、量子化パラメータ(QP)の非線形の値が、CNNへの入力として使用され得る。図10において、QPの非線形の値は、連結層1016への入力として示される。しかし、必ずしもそうであるとは限らず、QPの非線形の値は、CNNのその他の層への入力として使用され得る。たとえば、QPの非線形の値は、分類層のうちの少なくとも1つへの入力として使用され得る。
【０２１１】
上述のように、上述のように構成されるCNNが、ブロックの分割を推測するために図4のエンコーダ400などのエンコーダによって使用され得る。したがって、ブロックの分割は、当技術分野において知られている総当たりの方法によって導出されない。例において、CNNは、イントラ/インター予測段階402によって使用され得る。
【０２１２】
ブロックの分割を推測した後、エンコーダは、インター予測、イントラ予測、その他の技術、またはこれらの組合せなどの知られている予測技術を使用して分割のブロックを予測することができる。
【０２１３】
当技術分野で知られているように、図7に関連して説明されたような四分木が、図4のビットストリーム420などの圧縮されたビットストリームに出力され得る。図5のデコーダ500などのデコーダは、ブロック(すなわち、スーパーブロック)を復号するプロセスにおいて圧縮されたビットストリームから四分木を復号することができる。したがって、四分木は、上で説明されたように構成されるCNNを使用してエンコーダにおいて決定され(たとえば、推測され)、圧縮されたビットストリームに出力され得る。したがって、デコーダは、図10に関連して説明されたように構成されるCNNによって推測された四分木を圧縮されたビットストリームから復号する。
【０２１４】
ブロックの四分木分割を推測することが説明されるが、本開示の実装によるCNNは、四分木によって表される可能性がありまたは表されない可能性がある正方形でない分割を推測するために使用され得る。つまり、たとえば、正方形でない区画は、2つ以上の子であるいくつかの子を有する四分木の内部ノードに対応し得る。図16は、ブロックの正方形でない分割の例1600である。一部のエンコーダは、スーパーブロックの正方形のサブブロックのサイズ64×64、128×128、または任意のその他のサイズのスーパーブロックなどのスーパーブロックを例1600の分割のうちの1つに分割する可能性がある。
【０２１５】
(PARTITION_VERT_Aと呼ばれる可能性がある)分割タイプ1602は、N×Nの符号化ブロックをそれぞれサイズN/2×N/2の2つの水平方向に隣接する正方形のブロック1602A、1602BおよびサイズN×N/2の長方形の予測単位に分ける。(PARTITION_VERT_Bと呼ばれる可能性がある)分割タイプ1608は、N×Nの符号化ブロックをサイズN×N/2の長方形の予測単位およびそれぞれサイズN/2×N/2の2つの水平方向に隣接する正方形のブロック1608A、1608Bに分ける。
【０２１６】
(PARTITION_HORZ_Aと呼ばれる可能性がある)分割タイプ1604は、N×Nの符号化ブロックをそれぞれサイズN/2×N/2の2つの垂直方向に隣接する正方形のブロック1604A、1604BおよびサイズN/2×Nの長方形の予測単位に分ける。(PARTITION_HORZ_Bと呼ばれる可能性がある)分割タイプ1610は、N×Nの符号化ブロックをサイズN/2×Nの長方形の予測単位およびそれぞれサイズN/2×N/2の2つの垂直方向に隣接する正方形のブロック1610A、1610Bに分ける。
【０２１７】
(PARTITION_VERT_4と呼ばれる可能性がある)分割タイプ1606は、N×Nの符号化ブロックをそれぞれサイズN×N/4の4つの垂直方向に隣接する長方形のブロックに分ける。(PARTITION_HORZ_4と呼ばれる可能性がある)分割タイプ1612は、N×Nの符号化ブロックをそれぞれサイズN/4×Nの4つの水平方向に隣接する長方形のブロックに分ける。
【０２１８】
知られているように、その他の分割タイプが、コーデックによって使用され得る。例1600は、エンコーダにおいて利用可能である可能性がある4つの分割タイプを示す。(本明細書においてはPARTITION_SPLIT分割タイプおよび区画分け分割タイプとも呼ばれる)分割タイプ1614は、N×Nの符号化ブロックを4つの等しいサイズの正方形のサブブロックに分ける。たとえば、符号化ブロックがサイズN×Nである場合、サブブロック1614AなどのPARTITION_SPLIT分割タイプの4つのサブブロックの各々は、サイズN/4×N/4である。
【０２１９】
(本明細書においてはPARTITION_VERT分割タイプとも呼ばれる)分割タイプ1616は、符号化ブロックをそれぞれサイズN×N/2の2つの隣接する長方形の予測単位1616A、1616Bに分ける。(本明細書においてはPARTITION_HORZ分割タイプとも呼ばれる)分割タイプ1618は、符号化ブロックをそれぞれサイズN/2×Nの2つの隣接する長方形の予測単位に分ける。(本明細書においてはPARTITION_NONE分割タイプおよび区分けなし分割タイプとも呼ばれる)分割タイプ1620は、予測単位が符号化ブロックと同じサイズ(つまり、N×N)を有するように符号化ブロックのために1つの予測単位を使用する。
【０２２０】
分割タイプ1614〜1620は、本明細書においては基本分割タイプと呼ばれ、分割1602〜1612は、本明細書においては拡張分割タイプと呼ばれる。
【０２２１】
分割は、木によって表され得る。木は、ベクトルによって表され得る。Pがすべての有効な分割(または等価的に分割のそれぞれの表現)の組を表すものとする。したがって、CNNは、組Pへの写像を推測するように訓練され得る。図16に関連して説明された分割を推測するためにCNNを構成することは、適切な組Pを定義することと、適切な訓練データを使用することとを含む。
【０２２２】
N個の可能な結果が存在すると仮定すると、簡単にするためにN*M個の可能な決定が存在し(例においては、M=21およびN=4)、各p(n, j)が、何らかの任意のjに関してsum(range(N)内のn)p(n, j)==1であるようにソフトマックス関数によって組み合わされ得る。
【０２２３】
たとえば、64×64の符号化単位サイズおよび4つの基本分割タイプを使用するVP9の場合、四分木分割のみに関して、上述のように、1つの64×64、4つの32×32、および16個の16×16の決定(つまり、1+4+16=21個の決定)に対応する21個の決定が存在する。CNNが四分木でない分割を決定するためにも使用される場合、21*4=84個の可能な決定が存在し、21は、四分木分割に対応し、4は、基本分割タイプ、すなわち、PARTITION_SPLIT、PARTITION_VERT、PARTITION_HORZ、およびPARTITION_NONEに対応する。
【０２２４】
たとえば、128×128の符号化単位サイズならびに(合計10個の分割タイプに関する)基本および拡張分割タイプを使用するAV1の場合、四分木分割のみに関して、分割タイプ毎に(1つの128×128、4つの64×64、16個の32×32、および64個の16×16=1+4+16+64=85個の決定に対応する)85個の決定が存在する。CNNが四分木でない分割も決定するために使用される場合、(85個の決定掛ける10個の分割タイプ=850個の決定に対応する)850個の決定が存在する。
【０２２５】
説明を簡単にするために、プロセス800および1100が、一連のブロック、ステップ、または動作としてそれぞれ示され、説明される。しかし、本開示によるブロック、ステップ、または動作は、様々な順序でおよび/または同時に行われ得る。加えて、本明細書において提示されず、説明されないその他のステップまたは動作が、使用される可能性がある。さらに、開示される対象による技術を実施するために、示されるすべてのステップまたは動作が必要とされるわけではない可能性がある。
【０２２６】
上述の符号化および復号の態様は、一部の符号化および復号技術を示す。しかし、「符号化」および「復号」は、それらの用語が請求項において使用されるとき、圧縮、解凍、変換、またはデータの任意のその他の処理もしくは変更を意味する可能性があることを理解されたい。
【０２２７】
語「例」または「実装」は、本明細書においては、例、具体例、または事例としての役割を果たすことを意味するために使用される。本明細書において「例」または「実装」として説明されたいずれの態様または設計も、必ずしもその他の態様または設計よりも好ましいかまたは有利であると解釈されるべきでない。むしろ、語「例」または「実装」の使用は、概念を具体的に提示するように意図される。本出願において使用されるとき、用語「または(or)」は、排他的な「または(or)」ではなく包含的な「または(or)」を意味するように意図される。つまり、別途明記されない限り、または文脈によって別途はっきりと示されない限り、「XはAまたはBを含む」は、それらの自然な包含的順列(natural inclusive permutation)のいずれかを意味するように意図される。つまり、XがAを含む、XがBを含む、またはXがAとBとの両方を含む場合、「XがAまたはBを含む」は、上記の場合のいずれかの下で満たされる。加えて、本出願および添付の請求項で使用される冠詞「a」および「an」は、別途明記されない限り、または文脈から単数形を対象とすることが明らかでない限り、通常「1つまたは複数の(one or more)」を意味するとみなされるべきである。さらに、用語「実装」または「1つの実装」の使用は、全体を通じて、そのように説明されない限り同じ実施形態または実装を意味するように意図されていない。
【０２２８】
送信局102および/または受信局106(ならびにそれらに記憶されるおよび/またはエンコーダ400およびデコーダ500によることを含めそれらによって実行されるアルゴリズム、方法、命令など)の実装は、ハードウェア、ソフトウェア、またはそれらの任意の組合せで実現され得る。ハードウェアは、たとえば、コンピュータ、知的財産(IP)コア、特定用途向け集積回路(ASIC)、プログラマブル論理アレー、光プロセッサ、プログラマブルロジックコントローラ、マイクロコード、マイクロコントローラ、サーバ、マイクロプロセッサ、デジタル信号プロセッサ、または任意のその他の好適な回路を含み得る。請求項において、用語「プロセッサ」は、上述のハードウェアのいずれかを単独でかまたは組み合わせてかのどちらかで包含するものと理解されるべきである。用語「信号」および「データ」は、交換可能なように使用される。さらに、送信局102および受信局106の一部は、必ずしも同じ方法で実装されなくてもよい。
【０２２９】
さらに、1つの態様においては、たとえば、送信局102または受信局106は、多目的コンピュータまたは汎用プロセッサを、実行されるときに本明細書において説明されるそれぞれの方法、アルゴリズム、および/または命令のいずれかを実行するコンピュータプログラムとともに使用して実装され得る。追加的にまたは代替的に、たとえば、本明細書において説明される方法、アルゴリズム、または命令のいずれかを実行するためのその他のハードウェアを含み得る専用コンピュータ/プロセッサが、利用され得る。
【０２３０】
送信局102および受信局106は、たとえば、テレビ会議システムのコンピュータに実装され得る。代替的に、送信局102は、サーバに実装されることが可能であり、受信局106は、ハンドヘルド通信デバイスなどのサーバと別のデバイスに実装されることが可能である。この場合、送信局102は、エンコーダ400を使用して、コンテンツを符号化されたビデオ信号に符号化し、符号化されたビデオ信号を通信デバイスに送信することができる。そして今度は、通信デバイスが、それから、デコーダ500を使用して符号化されたビデオ信号を復号することができる。代替的に、通信デバイスは、通信デバイスのローカルに記憶されたコンテンツ、たとえば、送信局102によって送信されなかったコンテンツを復号することができる。その他の送信局102および受信局106の実装方式が、利用可能である。たとえば、受信局106は、可搬型の通信デバイスではなく概して固定のパーソナルコンピュータであることが可能であり、および/またはエンコーダ400を含むデバイスが、デコーダ500も含む可能性がある。
【０２３１】
さらに、本開示の実装のすべてまたは一部は、たとえば、有形のコンピュータが使用可能なまたはコンピュータが読み取り可能な媒体から入手可能なコンピュータプログラム製品の形態をとり得る。コンピュータが使用可能なまたはコンピュータが読み取り可能な媒体は、たとえば、任意のプロセッサによる使用のためにまたは任意のプロセッサに関連してプログラムを有形で含む、記憶する、伝達する、または転送することができる任意のデバイスであることが可能である。媒体は、たとえば、電子、磁気、光、電磁、または半導体デバイスであることが可能である。その他の好適な媒体も、利用可能である。
【０２３２】
上述の実施形態、実装、および態様は、本開示を容易に理解することを可能にするために説明されており、本開示を限定しない。反対に、本開示は、添付の請求項の範囲内に含まれる様々な修正および均等な構成を包含するように意図され、添付の請求項の範囲は、すべてのそのような修正および均等な構成を包含するように法の下で許される通り最も広い解釈を与えられるべきである。
【符号の説明】
【０２３３】
100  ビデオ符号化および復号システム
102  送信局
104  ネットワーク
106  受信局
200  コンピューティングデバイス
202  CPU
204  メモリ
206  データ
208  オペレーティングシステム
210  アプリケーションプログラム
212  バス
214  二次ストレージ
218  ディスプレイ
220  画像センシングデバイス
222  音声センシングデバイス
300  ビデオストリーム
302  ビデオシーケンス
304  隣接するフレーム
306  フレーム
308  セグメント
310  ブロック
400  エンコーダ
402  イントラ/インター予測段階
404  変換段階
406  量子化段階
408  エントロピー符号化段階
410  逆量子化段階
412  逆変換段階
414  再構築段階
416  ループフィルタリング段階
420  圧縮されたビットストリーム
500  デコーダ
502  エントロピー復号段階
504  逆量子化段階
506  逆変換段階
508  イントラ/インター予測段階
510  再構築段階
512  ループフィルタリング段階
514  後置フィルタリング段階
516  出力ビデオストリーム
600  フレームの一部
610  64×64のブロック
620  32×32のブロック
630  16×16のブロック
640  8×8のブロック
650  4×4のブロック
660  輝度ブロック
662  輝度ピクセル
670  色度ブロック
680  色度ブロック
690  色度ピクセル
700  例
702  ブロック
702-1  ブロック
702-2  ブロック
702-3  ブロック
702-4  ブロック
702-5  ブロック
702-6  ブロック
702-7  ブロック
702-8  ブロック
703  四分木
704-0  根ノード
704-1  ノード
704-2  ノード
800  プロセス
900  プロセス、例
902  画像ブロック
912  レート推定器
920  歪み推定器
1000  CNN
1002  ブロック
1003-A  分岐、特徴抽出層
1003-B  分岐、特徴抽出層
1003-C  分岐、特徴抽出層
1004  特徴マップ
1006  特徴マップ
1008  特徴マップ
1010  特徴マップ
1012  特徴マップ
1014  特徴マップ
1016  連結層
1018  分類器
1019  特徴マップ
1020  分類器
1021  特徴マップ
1022  分類器
1023  特徴マップ
1025  特徴マップ
1027  特徴マップ
1029  特徴マップ
1034  特徴マップ
1036  一点鎖線
1100  プロセス
1110  区切り
1112  訓練データ
1200  例
1202  非線形関数
1204  セグメント
1206  セグメント
1208  セグメント
1300  例
1310  グラフ
1312  曲線
1314  曲線
1316  第1の機械学習モデル
1320  グラフ
1324  曲線
1326  第2の機械学習モデル
1400  例
1402  領域
1404  フィルタ
1406  下位領域
1408  下位領域
1410  下位領域
1412  下位領域
1414  特徴マップ
1416  ピクセル
1418  ピクセル
1420  ピクセル
1422  ピクセル
1500  例
1502  入力
1504  第1の特徴マップ
1506  第2の特徴マップ
1508  ピクセル
1510  ピクセル
1512  破線
1513  黒い正方形
1514  2点鎖線
1515  黒い円
1600  例
1602  分割タイプ
1602A  正方形のブロック
1602B  正方形のブロック
1604  分割タイプ
1604A  正方形のブロック
1604B  正方形のブロック
1606  分割タイプ
1608  分割タイプ
1608A  正方形のブロック
1608B  正方形のブロック
1610  分割タイプ
1610A  正方形のブロック
1610B  正方形のブロック
1612  分割タイプ
1614  分割タイプ
1614A  サブブロック
1616  分割タイプ
1616A  長方形の予測単位
1616B  長方形の予測単位
1618  分割タイプ
1620  分割タイプ
【図１】
2021520082.tif 000004
【図２】
2021520082.tif 000005
【図３】
2021520082.tif 000006
【図４】
2021520082.tif 000007
【図５】
2021520082.tif 000008
【図６】
2021520082.tif 000009
【図７】
2021520082.tif 000010
【図８】
2021520082.tif 000011
【図９】
2021520082.tif 000012
【図１０】
2021520082.tif 000013
【図１１】
2021520082.tif 000014
【図１２】
2021520082.tif 000015
【図１３】
2021520082.tif 000016
【図１４】
2021520082.tif 000017
【図１５】
2021520082.tif 000018
【図１６】
2021520082.tif 000019
【国際調査報告】
2021520082.tif 000020
2021520082.tif 000021
2021520082.tif 000022
2021520082.tif 000023