図3は、本開示の一実施形態による、通信システム(300)の簡略化されたブロック図を示す。通信システム(300)は、例えばネットワーク(350)を介して互いに通信可能な複数の端末デバイスを含む。例えば、通信システム(300)は、ネットワーク(350)を介して相互接続された端末デバイス(310)および(320)の第1のペアを含む。図3の例では、端末デバイス(310)および(320)の第1のペアは、データの単方向送信を実行する。例えば、端末デバイス(310)は、ネットワーク(350)を介して他の端末デバイス(320)に送信するためのビデオデータ(例えば、端末デバイス(310)によって取り込まれたビデオピクチャのストリーム)をコーディングすることができる。エンコーディングされたビデオデータは、1つまたは複数のコーディングされたビデオビットストリームの形式で送信することができる。端末デバイス(320)は、ネットワーク(350)からコーディングされたビデオデータを受信し、コーディングされたビデオデータをデコーディングしてビデオピクチャを復元し、復元されたビデオデータに従ってビデオピクチャを表示することができる。単方向データ伝送は、メディアサービング用途などで一般的であり得る。
別の例では、通信システム(300)は、例えばビデオ会議中に発生する可能性があるコーディングされたビデオデータの双方向送信を実行する端末デバイス(330)および(340)の第2のペアを含む。データの双方向送信の場合、一例では、端末デバイス(330)および(340)の各端末デバイスは、ネットワーク(350)を介して端末デバイス(330)および(340)の他方の端末デバイスに送信するためのビデオデータ(例えば、端末デバイスによって取り込まれたビデオピクチャのストリーム)をコーディングすることができる。端末デバイス(330)および(340)の各端末デバイスはまた、端末デバイス(330)および(340)の他方の端末デバイスによって送信されたコーディングされたビデオデータを受信することができ、コーディングされたビデオデータをデコーディングしてビデオピクチャを復元することができ、復元されたビデオデータに従ってアクセス可能な表示デバイスにビデオピクチャを表示することができる。
図3の例では、端末デバイス(310)、(320)、(330)、および(340)は、サーバ、パーソナルコンピュータ、およびスマートフォンとして示される場合があるが、本開示の原理はそのように限定されなくてもよい。本開示の実施形態は、ラップトップコンピュータ、タブレットコンピュータ、メディアプレーヤ、および/または専用ビデオ会議機器を用いるアプリケーションを見出す。ネットワーク(350)は、例えば、電線(有線)および/または無線の通信ネットワークを含む、端末デバイス(310)、(320)、(330)、および(340)の間でコーディングされたビデオデータを伝達する任意の数のネットワークを表す。通信ネットワーク(350)は、回線交換チャネルおよび/またはパケット交換チャネルでデータを交換することができる。代表的なネットワークには、電気通信ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、および/またはインターネットが含まれる。本説明の目的のために、ネットワーク(350)のアーキテクチャおよびトポロジーは、本明細書で以下に説明されない限り、本開示の動作にとって重要でない可能性がある。
図4は、開示されている主題の用途の例として、ストリーミング環境におけるビデオエンコーダおよびビデオデコーダの配置を示す。開示された主題は、例えば、ビデオ会議、デジタルTV、ならびにCD、DVD、およびメモリスティックなどを含むデジタル媒体への圧縮ビデオの記憶などを含む他のビデオ対応用途に等しく適用可能とすることができる。
ストリーミングシステムは、例えば、圧縮されていないビデオピクチャのストリーム(402)を作成するビデオソース(401)、例えば、デジタルカメラを含むことができるキャプチャサブシステム(413)を含んでもよい。一例では、ビデオピクチャのストリーム(402)は、デジタルカメラによって撮影されたサンプルを含む。エンコーディングされたビデオデータ(404)(またはコーディングされたビデオビットストリーム)と比較したときに多いデータ量を強調するために太い線として描写されたビデオピクチャのストリーム(402)は、ビデオソース(401)に結合されたビデオエンコーダ(403)を含む電子デバイス(420)によって処理することができる。ビデオエンコーダ(403)は、以下でより詳細に記載されるように、開示された主題の態様を可能にするかまたは実装するために、ハードウェア、ソフトウェア、またはそれらの組み合わせを含むことができる。ビデオピクチャのストリーム(402)と比較したときに少ないデータ量を強調するために細い線として描写されたエンコーディングされたビデオデータ(404)(またはエンコーディングされたビデオビットストリーム(404))は、将来の使用のためにストリーミングサーバ(405)に記憶することができる。図4のクライアントサブシステム(406)および(408)などの1つまたは複数のストリーミングクライアントサブシステムは、ストリーミングサーバ(405)にアクセスして、エンコーディングされたビデオデータ(404)のコピー(407)および(409)を探索することができる。クライアントサブシステム(406)は、例えば、電子デバイス(430)内のビデオデコーダ(410)を含むことができる。ビデオデコーダ(410)は、エンコーディングされたビデオデータの入力コピー(407)をデコーディングし、ディスプレイ(412)(例えば、ディスプレイ画面)または他のレンダリングデバイス(描写せず)上でレンダリングすることができるビデオピクチャの出力ストリーム(411)を作成する。いくつかのストリーミングシステムでは、エンコーディングされたビデオデータ(404)、(407)、および(409)(例えば、ビデオビットストリーム)は、特定のビデオコーディング/圧縮規格に従ってエンコーディングすることができる。それ
らの規格の例には、ITU-T勧告H.265が含まれる。一例では、開発中のビデオコーディング規格は、非公式に多用途ビデオコーディング(VVC)として知られている。開示された主題は、VVCの文脈で使用され得る。
電子デバイス(420)および(430)は、他の構成要素(図示せず)を含むことができることに留意されたい。例えば、電子デバイス(420)はビデオデコーダ(図示せず)を含むことができ、電子デバイス(430)もビデオエンコーダ(図示せず)を含むことができる。
図5は、本開示の一実施形態による、ビデオデコーダ(510)のブロック図を示す。ビデオデコーダ(510)は、電子デバイス(530)に含まれ得る。電子デバイス(530)は、受信機(531)(例えば、受信回路)を含むことができる。ビデオデコーダ(510)は、図4の例のビデオデコーダ(410)の代わりに使用することができる。
受信機(531)は、ビデオデコーダ(510)によってデコーディングされる1つまたは複数のコーディングされたビデオシーケンスを受信することができ、同じまたは別の実施形態では、一度に1つのコーディングされたビデオシーケンスを受信し、各コーディングされたビデオシーケンスのデコーディングは、他のコーディングされたビデオシーケンスから独立している。コーディングされたビデオシーケンスは、チャネル(501)から受信されてもよく、チャネル(501)は、エンコーディングされたビデオデータを記憶するストレージデバイスへのハードウェア/ソフトウェアリンクであってもよい。受信機(531)は、それらのそれぞれの使用エンティティ(描写せず)に転送され得る他のデータ、例えば、コーディングされたオーディオデータおよび/または補助データストリームとともにエンコーディングされたビデオデータを受信することができる。受信機(531)は、コーディングされたビデオシーケンスを他のデータから分離することができる。ネットワークジッタに対抗するために、バッファメモリ(515)は、受信機(531)とエントロピーデコーダ/パーサ(520)(以下、「パーサ(520)」)との間に結合されてもよい。特定の用途では、バッファメモリ(515)はビデオデコーダ(510)の一部である。他の用途では、それはビデオデコーダ(510)の外側にあり得る(描写せず)。さらに他の用途では、例えば、ネットワークジッタに対抗するために、ビデオデコーダ(510)の外側にバッファメモリ(描写せず)が存在することができ、加えて、例えば、プレイアウトタイミングを処理するために、ビデオデコーダ(510)の内側に別のバッファメモリ(515)が存在することができる受信機(531)が十分な帯域幅および制御可能性の記憶/転送デバイスから、またはアイソシンクロナスネットワークからデータを受信しているとき、バッファメモリ(515)は必要とされなくてもよいか、または小さい可能性がある。インターネットなどのベストエフォートパケットネットワークで使用するために、バッファメモリ(515)は、必要とされる場合があり、比較的大きい可能性があり、好ましくは適応サイズであり得、オペレーティングシステムまたはビデオデコーダ(510)の外側の同様の要素(描写せず)に少なくとも部分的に実装
されてもよい。
ビデオデコーダ(510)は、コーディングされたビデオシーケンスからシンボル(521)を再構成するためにパーサ(520)を含んでもよい。これらのシンボルのカテゴリには、ビデオデコーダ(510)の動作を管理するために使用される情報、および潜在的に、電子デバイス(530)の不可欠な部分ではないが、図5に示されたように、電子デバイス(530)に結合することができるレンダリングデバイス(512)(例えば、ディスプレイ画面)などのレンダリングデバイスを制御するための情報が含まれる。レンダリングデバイスのための制御情報は、補足拡張情報(SEIメッセージ)またはビデオユーザビリティ情報(VUI)のパラメータセットフラグメント(描写せず)の形式であってもよい。パーサ(520)は、受け取ったコーディングされたビデオシーケンスを構文解析/エントロピーデコーディングすることができる。コーディングされたビデオシーケンスのコーディングは、ビデオコーディング技術または規格に従うことができ、文脈感度の有無にかかわらず、可変長コーディング、ハフマンコーディング、算術コーディングなどを含む様々な原理に従うことができる。パーサ(520)は、グループに対応する少なくとも1つのパラメータに基づいて、コーディングされたビデオシーケンスから、ビデオデコーダ内のピクセルのサブグループのうちの少なくとも1つのためのサブグループパラメータのセットを抽出することができる。サブグループは、グループオブピクチャ(GOP)、ピクチャ、タイル、スライス、マクロブロック、コーディングユニット(CU)、ブロック、変換ユニット(TU)、予測ユニット(PU)などを含むことができる。パーサ(520)はまた、コーディングされたビデオシーケンスから、変換係数、量子化器パラメータ値、動きベクトルなどの情報を抽出することができる。
パーサ(520)は、バッファメモリ(515)から受信したビデオシーケンスに対してエントロピーデコーディング/解析動作を実行して、シンボル(521)を作成し得る。
シンボル(521)の再構成は、コーディングされたビデオピクチャまたはその一部(インターピクチャおよびイントラピクチャ、インターブロックおよびイントラブロックなど)のタイプ、および他の要因に応じて、複数の異なるユニットを含むことができる。どのユニットがどのように関与するかは、パーサ(520)によってコーディングされたビデオシーケンスから解析されたサブグループ制御情報によって制御することができる。パーサ(520)と以下の複数のユニットとの間のそのようなサブグループ制御情報の流れは、分かりやすくするために描写されていない。
すでに述べられた機能ブロック以外に、ビデオデコーダ(510)は、以下に記載されるように、概念的にいくつかの機能ユニットに細分化することができる。商業的制約の下で動作する実際の実装形態では、これらのユニットの多くは、互いに密接に相互作用し、少なくとも部分的には互いに統合することができる。しかしながら、開示された主題を説明するために、以下の機能ユニットへの概念的な細分が適切である。
第1のユニットはスケーラ/逆変換ユニット(551)である。スケーラ/逆変換ユニット(551)は、量子化変換係数、ならびにどの変換を使用するか、ブロックサイズ、量子化係数、量子化スケーリング行列などを含む制御情報を、パーサ(520)からシンボル(521)として受け取る。スケーラ/逆変換ユニット(551)は、アグリゲータ(555)に入力することができるサンプル値を含むブロックを出力することができる。
場合によっては、スケーラ/逆変換(551)の出力サンプルは、イントラコーディングされたブロックに関係することができ、つまり、以前に再構成されたピクチャからの予測情報を使用していないが、現在のピクチャの以前に再構成された部分からの予測情報を使用できるブロックである。そのような予測情報を、イントラピクチャ予測ユニット(552)によって提供することができる。場合によっては、イントラピクチャ予測ユニット(552)は、現在のピクチャバッファ(558)からフェッチされた周囲のすでに再構成された情報を使用して、再構成中のブロックと同じサイズおよび形状のブロックを生成する。現在のピクチャバッファ(558)は、例えば、部分的に再構成された現在のピクチャおよび/または完全に再構成された現在のピクチャをバッファリングする。アグリゲータ(555)は、場合によっては、サンプルごとに、イントラ予測ユニット(552)が生成した予測情報を、スケーラ/逆変換ユニット(551)によって提供される出力サンプル情報に追加する。
他の場合には、スケーラ/逆変換ユニット(551)の出力サンプルは、インターコーディングされ、潜在的に動き補償されたブロックに関連する可能性がある。そのような場合、動き補償予測ユニット(553)は、参照ピクチャメモリ(557)にアクセスして、予測に使用されるサンプルをフェッチすることができる。ブロックに関連するシンボル(521)に従ってフェッチされたサンプルを動き補償した後、これらのサンプルは、出力サンプル情報を生成するために、アグリゲータ(555)によってスケーラ/逆変換ユニット(551)の出力に追加することができる(この場合、残差サンプルまたは残差信号と呼ばれる)。動き補償予測ユニット(553)が予測サンプルをフェッチする参照ピクチャメモリ(557)内のアドレスは、例えば、X、Y、および参照ピクチャ構成要素を有することができるシンボル(521)の形式で動き補償予測ユニット(553)に利用可能な動きベクトルによって制御することができる。動き補償はまた、サブサンプルの正確な動きベクトルが使用されているときに参照ピクチャメモリ(557)からフェッチされたサンプル値の補間、動きベクトル予測メカニズムなどを含むことができる。
アグリゲータ(555)の出力サンプルは、ループフィルタユニット(556)において様々なループフィルタリング技法を受けることができる。ビデオ圧縮技術は、コーディングされたビデオシーケンス(コーディングされたビデオビットストリームとも呼ばれる)に含まれるパラメータによって制御され、パーサ(520)からのシンボル(521)としてループフィルタユニット(556)に利用可能になるループ内フィルタ技術を含むことができるが、コーディングされたピクチャまたはコーディングされたビデオシーケンスの前の(デコーディング順序で)部分のデコーディング中に取得されたメタ情報に応答することができ、以前に再構成およびループフィルタリングされたサンプル値に応答することもできる。
ループフィルタユニット(556)の出力は、レンダリングデバイス(512)に出力されるだけでなく、将来のインターピクチャ予測で使用するために参照ピクチャメモリ(557)に記憶することができるサンプルストリームであり得る。
特定のコーディングされたピクチャは、完全に再構成されると、将来の予測のための参照ピクチャとして使用することができる。例えば、現在のピクチャに対応するコーディングされたピクチャが完全に再構成され、コーディングされたピクチャが参照ピクチャとして(例えば、パーサ(520)によって)識別されると、現在のピクチャバッファ(558)は、参照ピクチャメモリ(557)の一部になることができ、未使用の現在のピクチャバッファは、次のコーディングされたピクチャの再構成を開始する前に再割り当てすることができる。
ビデオデコーダ(510)は、ITU-T Rec.H.265などの規格における所定のビデオ圧縮技術に従ってデコーディング動作を実行し得る。コーディングされたビデオシーケンスがビデオ圧縮技術または規格の構文とビデオ圧縮技術または規格において文書化されたプロファイルの両方を順守するという意味で、コーディングされたビデオシーケンスは、使用されているビデオ圧縮技術または規格によって指定された構文に準拠することができる。具体的には、プロファイルは、ビデオ圧縮技術または規格で使用可能なすべてのツールから、そのプロファイル下で使用するために利用可能な唯一のツールとしていくつかのツールを選択することができる。また、準拠するために必要なことは、コーディングされたビデオシーケンスの複雑さが、ビデオ圧縮技術または規格のレベルによって定義された範囲内にあることであり得る。場合によっては、レベルは、最大ピクチャサイズ、最大フレームレート、最大再構成サンプルレート(例えば毎秒メガサンプルで測定される)、最大参照ピクチャサイズなどを制限する。レベルによって設定された制限は、場合によっては、仮想参照デコーダ(HRD)の仕様と、コーディングされたビデオシーケンスで通知されるHRDバッファ管理のためのメタデータによってさらに制限され得る。
一実施形態では、受信機(531)は、エンコーディングされたビデオとともに追加の(冗長な)データを受信することができる。追加のデータは、コーディングされたビデオシーケンスの一部として含まれてもよい。追加のデータは、データを適切にデコーディングするために、かつ/または元のビデオデータをより正確に再構成するために、ビデオデコーダ(510)によって使用されてもよい。追加のデータは、例えば、時間、空間、または信号ノイズ比(SNR)の拡張層、冗長スライス、冗長ピクチャ、順方向誤り訂正コードなどの形式であり得る。
図6は、本開示の一実施形態による、ビデオエンコーダ(603)のブロック図を示す。ビデオエンコーダ(603)は電子デバイス(620)に含まれる。電子デバイス(620)は送信機(640)(例えば、送信回路)を含む。ビデオエンコーダ(603)は、図4の例のビデオエンコーダ(403)の代わりに使用することができる。
ビデオエンコーダ(603)は、ビデオエンコーダ(603)によってコーディングされるビデオ画像を取り込むことができる(図6の例では電子デバイス(620)の一部ではない)ビデオソース(601)からビデオサンプルを受信することができる。別の例では、ビデオソース(601)は電子デバイス(620)の一部である。
ビデオソース(601)は、ビデオエンコーダ(603)によってコーディングされるべきソースビデオシーケンスを、任意の適切なビット深度(例えば、8ビット、10ビット、12ビット、...)、任意の色空間(例えば、BT.601 Y CrCB、RGB、...)、および任意の適切なサンプリング構造(例えば、Y CrCb 4:2:0、Y CrCb 4:4:4)のものとすることができるデジタルビデオサンプルストリームの形で提供し得る。メディアサービングシステムでは、ビデオソース(601)は、以前に準備されたビデオを記憶する記憶デバイスであり得る。ビデオ会議システムでは、ビデオソース(601)は、ビデオシーケンスとしてローカル画像情報を取り込むカメラであってもよい。ビデオデータは、順番に見たときに動きを伝える複数の個別のピクチャとして提供されてもよい。ピクチャ自体は、ピクセルの空間的配列として編成され得、各ピクセルは、使用中のサンプリング構造、色空間などに応じて1つまたは複数のサンプルを含むことができる。当業者であれば、ピクセルとサンプルとの関係を容易に理解することができる。以下の説明では、サンプルを中心に説明する。
一実施形態によれば、ビデオエンコーダ(603)は、リアルタイムで、またはアプリケーションによって必要とされる任意の他の時間制約の下で、ソースビデオシーケンスのピクチャをコーディングされたビデオシーケンス(643)にコーディングし圧縮することができる。適切なコーディング速度を強制することは、コントローラ(650)の1つの機能である。いくつかの実施形態では、コントローラ(650)は、以下に記載される他の機能ユニットを制御し、他の機能ユニットに機能的に結合されている。分かりやすくするために、結合は描写されていない。コントローラ(650)によって設定されるパラメータは、レート制御関連パラメータ(ピクチャスキップ、量子化器、レート歪み最適化技法のラムダ値、…)、ピクチャサイズ、グループオブピクチャ(GOP)のレイアウト、最大動きベクトル探索範囲などを含むことができる。コントローラ(650)は、特定のシステム設計のために最適化されたビデオエンコーダ(603)に関連する他の適切な機能を有するように構成することができる。
いくつかの実施形態では、ビデオエンコーダ(603)は、コーディングループで動作するように構成される。過度に単純化した説明として、一例では、コーディングループは、(例えば、コーディングされる入力ピクチャ、および参照ピクチャに基づいて、シンボルストリームなどのシンボルを作成することに関与する)ソースコーダ(630)、ならびにビデオエンコーダ(603)に組み込まれた(ローカル)デコーダ(633)を含むことができる。デコーダ(633)は、(シンボルとコーディングされたビデオビットストリームとの間のいかなる圧縮も、開示された主題で考慮されるビデオ圧縮技術において可逆であるため)(リモート)デコーダも作成するのと同様の方式で、シンボルを再構成してサンプルデータを作成する。再構成されたサンプルストリーム(サンプルデータ)は、参照ピクチャメモリ(634)に入力される。シンボルストリームのデコーディングは、デコーダの場所(ローカルまたはリモート)に関係なくビットイグザクトな結果につながるので、参照ピクチャメモリ(634)内のコンテンツも、ローカルエンコーダとリモートエンコーダとの間でビットイグザクトである。言い換えると、エンコーダの予測部分は、デコーディング中に予測を使用するときにデコーダが「見る」のとまったく同じサンプル値を参照ピクチャサンプルとして「見る」。参照ピクチャ同期性のこの基本原理(および、例えばチャネルエラーのために同期性が維持できない場合に生じるドリフト)は、いくつかの関連技術においても使用される。
「ローカル」デコーダ(633)の動作は、図5とともに上記で詳細にすでに記載されている、ビデオデコーダ(510)などの「リモート」デコーダの動作と同じであり得る。しかしながら、図5も簡単に参照すると、シンボルが利用可能であり、エントロピーコーダ(645)およびパーサ(520)によるコーディングされたビデオシーケンスへのシンボルのエンコーディング/デコーディングは可逆であり得、バッファメモリ(515)およびパーサ(520)を含むビデオデコーダ(510)のエントロピーデコーディング部分は、ローカルデコーダ(633)に完全に実装されていないことがある。
一実施形態では、デコーダに存在する構文解析/エントロピーデコーディングを除くデコーダ技術は、対応するエンコーダに同一または実質的に同一の機能形態で存在する。したがって、開示される主題はデコーダの動作に焦点を当てる。エンコーダ技術の説明は、包括的に説明されているデコーダ技術の逆であるため、省略することができる。特定の領域において、より詳細な説明を以下に提供する。
動作中、いくつかの例では、ソースコーダ(630)は、「参照ピクチャ」として指定されたビデオシーケンスからの1つまたは複数の以前にコーディングされたピクチャを参照して入力ピクチャを予測的にコーディングする動き補償予測コーディングを実行することができる。このようにして、コーディングエンジン(632)は、入力ピクチャのピクセルブロックと、入力ピクチャへの予測参照として選択され得る参照ピクチャのピクセルブロックとの間の差をコーディングする。
ローカルビデオデコーダ(633)は、ソースコーダ(630)によって作成されたシンボルに基づいて、参照ピクチャとして指定され得るピクチャのコーディングされたビデオデータをデコーディングすることができる。コーディングエンジン(632)の動作は、好ましくは非可逆プロセスであってもよい。コーディングされたビデオデータが(図6には示されていない)ビデオデコーダでデコーディングされ得るとき、再構成されたビデオシーケンスは、通常、いくらかの誤差を有するソースビデオシーケンスのレプリカであり得る。ローカルビデオデコーダ(633)は、参照ピクチャに対してビデオデコーダによって実行され得るデコーディングプロセスを複製し、再構成された参照ピクチャが参照ピクチャキャッシュ(634)に記憶されるようにすることができる。このようにして、ビデオエンコーダ(603)は、(送信エラーがない)遠端ビデオデコーダによって取得される再構成された参照ピクチャとして共通のコンテンツを有する、再構成された参照ピクチャのコピーをローカルに記憶することができる。
予測器(635)は、コーディングエンジン(632)のための予測探索を実行することができる。すなわち、コーディングされる新しいピクチャの場合、予測器(635)は、新しいピクチャのための適切な予測参照として役立つことができる、(候補参照ピクセルブロックとしての)サンプルデータまたは参照ピクチャ動きベクトル、ブロック形状などの特定のメタデータを求めて、参照ピクチャメモリ(634)を探索することができる。予測器(635)は、適切な予測参照を見つけるために、ピクセルブロックごとにサンプルブロックに対して動作することができる。場合によっては、予測器(635)によって取得された探索結果によって決定されるように、入力ピクチャは、参照ピクチャメモリ(634)に記憶された複数の参照ピクチャから引き出された予測参照を有することができる。
コントローラ(650)は、例えば、ビデオデータをエンコーディングするために使用されるパラメータおよびサブグループパラメータの設定を含む、ソースコーダ(630)のコーディング動作を管理することができる。
すべての前述の機能ユニットの出力は、エントロピーコーダ(645)内でエントロピーコーディングを受けることができる。エントロピーコーダ(645)は、ハフマンコーディング、可変長コーディング、算術コーディングなどの技術に従ってシンボルを可逆圧縮することにより、様々な機能ユニットによって生成されたシンボルをコーディングされたビデオシーケンスに変換する。
送信機(640)は、エントロピーコーダ(645)によって作成されたコーディングされたビデオシーケンスをバッファリングして、通信チャネル(660)を介した送信の準備をすることができ、通信チャネル(660)は、エンコーディングされたビデオデータを記憶する記憶デバイスへのハードウェア/ソフトウェアリンクであってもよい。送信機(640)は、ビデオコーダ(603)からのコーディングされたビデオデータを、送信される他のデータ、例えば、コーディングされたオーディオデータおよび/または補助データストリーム(ソースは図示されていない)とマージすることができる。
コントローラ(650)は、ビデオエンコーダ(603)の動作を管理することができる。コーディング中に、コントローラ(650)は、各コーディングされたピクチャに特定のコーディングされたピクチャタイプを割り当てることができ、それは、それぞれのピクチャに適用され得るコーディング技法に影響を及ぼす場合がある。例えば、ピクチャは、以下のピクチャタイプのうちの1つとして割り当てられることが多い。
イントラピクチャ(Iピクチャ)は、シーケンス内のいかなる他のピクチャも予測のソースとして使用せずにコーディングおよびデコーディングされ得るものであり得る。いくつかのビデオコーデックは、例えば、独立デコーダリフレッシュ(「IDR」)ピクチャを含む、様々なタイプのイントラピクチャを可能にする。当業者は、Iピクチャのそれらの変形およびそれらのそれぞれの用途および特徴を知っている。
予測ピクチャ(Pピクチャ)は、各ブロックのサンプル値を予測するために最大で1つの動きベクトルおよび参照インデックスを使用するイントラ予測またはインター予測を使用してコーディングおよびデコーディングされ得るものであり得る。
双方向予測ピクチャ(Bピクチャ)は、各ブロックのサンプル値を予測するために最大で2つの動きベクトルおよび参照インデックスを使用するイントラ予測またはインター予測を使用してコーディングおよびデコーディングされ得るものであり得る。同様に、多数の予測ピクチャは、単一のブロックの再構成に3つ以上の参照ピクチャと関連メタデータを使用することができる。
ソースピクチャは、通常、空間的に複数のサンプルブロック(例えば、それぞれ4x4、8x8、4x8、または16x16サンプルのブロック)に分割され、ブロックごとにコーディングされる。ブロックは、ブロックのそれぞれのピクチャに適用されるコーディング割り当てによって決定されるように、他の(すでにコーディングされた)ブロックを参照して予測的にコーディングされてもよい。例えば、Iピクチャのブロックは、非予測的にコーディングされてもよいか、またはそれらは、同じピクチャのすでにコーディングされたブロックを参照して予測的にコーディングされてもよい(空間予測若しくはイントラ予測)。Pピクチャのピクセルブロックは、1つの以前にコーディングされた参照ピクチャを参照して、空間予測を介してまたは時間予測を介して予測的にコーディングされてもよい。Bピクチャのブロックは、空間的予測を介して、または以前にコーディングされた1つまたは2つの参照ピクチャを参照する時間的予測を介して、予測的にコーディングされ得る。
ビデオエンコーダ(603)は、ITU-T Rec.H.265などの所定のビデオコーディング技術または規格に従ってコーディング動作を実行することができる。その動作において、ビデオエンコーダ(603)は、入力ビデオシーケンスにおける時間および空間の冗長性を利用する予測コーディング動作を含む様々な圧縮動作を実行することができる。したがって、コーディングされたビデオデータは、使用されているビデオコーディング技術または標準規格によって指定されたシンタックスに準拠し得る。
一実施形態では、送信機(640)は、エンコーディングされたビデオとともに追加のデータを送信することができる。ソースコーダ(630)は、コーディングされたビデオシーケンスの一部としてそのようなデータを含んでもよい。追加のデータは、時間/空間/SNR拡張層、冗長なピクチャおよびスライスなどの他の形式の冗長データ、SEIメッセージ、VUIパラメータセットフラグメントなどを含んでもよい。
ビデオは、時系列で複数のソースピクチャ(ビデオピクチャ)として取り込まれてもよい。(しばしば、イントラ予測と省略される)イントラピクチャ予測は、所与のピクチャ内の空間の相関関係を利用し、インターピクチャ予測は、ピクチャ間の(時間または他の)相関関係を利用する。一例では、現在のピクチャと呼ばれるエンコーディング/デコーディング中の特定のピクチャはブロックに分割される。現在のピクチャ内のブロックが、以前にコーディングされ、ビデオ内にまだバッファリングされている参照ピクチャ内の参照ブロックに類似しているとき、現在のピクチャ内のブロックは、動きベクトルと呼ばれるベクトルによってコーディングすることができる。動きベクトルは、参照ピクチャ内の参照ブロックを指し、複数の参照ピクチャが使用されている場合、参照ピクチャを識別する第3の次元を有することができる。
いくつかの実施形態では、インターピクチャ予測に、双予測技術を使用し得る。双予測技術によれば、両方ともデコーディング順序でビデオ内の現在のピクチャより前にある(しかし、表示順でそれぞれ過去および未来のものであってもよい)第1の参照ピクチャおよび第2の参照ピクチャなどの2つの参照ピクチャが使用される。現在のピクチャ内のブロックは、第1の参照ピクチャ内の第1の参照ブロックを指す第1の動きベクトル、および第2の参照ピクチャ内の第2の参照ブロックを指す第2の動きベクトルによってコーディングすることができる。ブロックは、第1の参照ブロックと第2の参照ブロックとの組み合わせによって予測することができる。
さらに、コーディング効率を改善するために、インターピクチャ予測においてマージモード技法を使用することができる。
本開示のいくつかの実施形態によれば、インターピクチャ予測およびイントラピクチャ予測などの予測は、ブロック単位で実行される。例えば、HEVC規格によれば、ビデオピクチャのシーケンス内のピクチャは、圧縮のためにコーディングツリーユニット(CTU)に分割され、ピクチャ内のCTUは、64×64ピクセル、32×32ピクセル、または16×16ピクセルなどの同じサイズを有する。一般に、CTUは3つのコーディングツリーブロック(CTB)を含み、それらは1つのルマCTBおよび2つのクロマCTBである。各CTUは、1つまたは複数のコーディングユニット(CU)に再帰的に四分木分割することができる。例えば、64×64ピクセルのCTUは、1つの64×64ピクセルのCU、または4つの32×32ピクセルのCU、または16個の16×16ピクセルのCUに分割することができる。一例では、インター予測タイプまたはイントラ予測タイプなどのCUの予測タイプを決定するために、各CUが分析される。CUは、時間および/または空間の予測可能性に応じて、1つまたは複数の予測ユニット(PU)に分割される。一般に、各PUは、1つのルマ予測ブロック(PB)および2つのクロマPBを含む。一実施形態では、コーディング(エンコーディング/デコーディング)における予測動作は、予測ブロックの単位で実行される。予測ブロックの例としてルマ予測ブロックを使用すると、予測ブロックは、8×8ピクセル、16×16ピクセル、8×16ピクセル、16×8ピクセルなどのピクセルの値の行列(例えば、ルマ値)を含む。
図7は、本開示の別の実施形態による、ビデオエンコーダ(703)の図を示す。ビデオエンコーダ(703)は、ビデオピクチャのシーケンス内の現在のビデオピクチャ内のサンプル値の処理ブロック(例えば、予測ブロック)を受信し、処理ブロックをコーディングされたビデオシーケンスの一部であるコーディングされたピクチャにエンコーディングするように構成される。一例では、ビデオエンコーダ(703)は、図4の例のビデオエンコーダ(403)の代わりに使用される。
HEVCの例では、ビデオエンコーダ(703)は、8×8サンプルの予測ブロックなどの処理ブロック用のサンプル値の行列を受信する。ビデオエンコーダ(703)は、処理ブロックが、例えば、レート歪み最適化を使用して、イントラモード、インターモード、または双予測モードを使用して最良にコーディングされるかどうかを決定する。処理ブロックがイントラモードでコーディングされるとき、ビデオエンコーダ(703)は、イントラ予測技法を使用して、処理ブロックをコーディングされたピクチャにエンコーディングすることができ、処理ブロックがインターモードまたは双予測モードでコーディングされるとき、ビデオエンコーダ(703)は、それぞれ、インター予測技法または双予測技法を使用して、処理ブロックをコーディングされたピクチャにエンコーディングすることができる。特定のビデオコーディング技術では、マージモードは、予測子の外側のコーディングされた動きベクトル成分の利点がない、動きベクトルが1つまたは複数の動きベクトル予測子から導出されるインターピクチャ予測サブモードであり得る。特定の他のビデオコーディング技術では、対象ブロックに適用可能な動きベクトル成分が存在してもよい。一例では、ビデオエンコーダ(703)は、処理ブロックのモードを決定するためにモード決定モジュール(図示せず)などの他の構成要素を含む。
図7の例では、ビデオエンコーダ(703)は、図7に示されたように一緒に結合されたインターエンコーダ(730)、イントラエンコーダ(722)、残差計算器(723)、スイッチ(726)、残差エンコーダ(724)、汎用コントローラ(721)、およびエントロピーエンコーダ(725)を含む。
インターエンコーダ(730)は、現在のブロック(例えば、処理ブロック)のサンプルを受信し、ブロックを参照ピクチャ内の1つまたは複数の参照ブロック(例えば、前のピクチャおよび後のピクチャ内のブロック)と比較し、インター予測情報(例えば、インターエンコーディング技法による冗長情報、動きベクトル、マージモード情報の記述)を生成し、任意の適切な技法を使用して、インター予測情報に基づいてインター予測結果(例えば、予測ブロック)を計算するように構成される。いくつかの例では、参照ピクチャは、エンコーディングされたビデオ情報に基づいてデコーディングされた、デコーディングされた参照ピクチャである。
イントラエンコーダ(722)は、現在のブロック(例えば、処理ブロック)のサンプルを受信し、場合によっては、ブロックを同じピクチャ内のすでにコーディングされたブロックと比較し、変換後に量子化係数を生成し、場合によっては、イントラ予測情報(例えば、1つまたは複数のイントラエンコーディング技法によるイントラ予測方向情報)も生成するように構成される。一例では、イントラエンコーダ(722)はまた、同じピクチャ内のイントラ予測情報および参照ブロックに基づいて、イントラ予測結果(例えば、予測ブロック)を計算する。
汎用コントローラ(721)は、汎用制御データを決定し、汎用制御データに基づいてビデオエンコーダ(703)の他の構成要素を制御するように構成される。一例では、汎用コントローラ(721)は、ブロックのモードを決定し、モードに基づいてスイッチ(726)に制御信号を提供する。例えば、モードがイントラモードであるとき、汎用コントローラ(721)は、スイッチ(726)を制御して残差計算器(723)が使用するためのイントラモード結果を選択し、エントロピーエンコーダ(725)を制御してイントラ予測情報を選択し、ビットストリームにイントラ予測情報を含め、モードがインターモードであるとき、汎用コントローラ(721)は、スイッチ(726)を制御して残差計算器(723)が使用するためのインター予測結果を選択し、エントロピーエンコーダ(725)を制御してインター予測情報を選択し、ビットストリームにインター予測情報を含める。
残差計算器(723)は、受信ブロックと、イントラエンコーダ(722)またはインターエンコーダ(730)から選択された予測結果との間の差(残差データ)を計算するように構成される。残差エンコーダ(724)は、残差データをエンコーディングして変換係数を生成するために、残差データに基づいて動作するように構成される。一例では、残差エンコーダ(724)は、残差データを空間領域から周波数領域に変換し、変換係数を生成するように構成される。次いで、変換係数は、量子化変換係数を取得するために量子化処理を受ける。様々な実施形態では、ビデオエンコーダ(703)は残差デコーダ(728)も含む。残差デコーダ(728)は、逆変換を実行し、デコーディングされた残差データを生成するように構成される。デコーディングされた残差データは、イントラエンコーダ(722)およびインターエンコーダ(730)によって適切に使用することができる。例えば、インターエンコーダ(730)は、デコーディングされた残差データおよびインター予測情報に基づいてデコーディングされたブロックを生成することができ、イントラエンコーダ(722)は、デコーディングされた残差データおよびイントラ予測情報に基づいてデコーディングされたブロックを生成することができる。デコーディングされたブロックは、デコーディングされたピクチャを生成するために適切に処理され、デコーディングされたピクチャは、メモリ回路(図示せず)にバッファリングされ、いくつかの例では参照ピクチャとして使用することができる。
エントロピーエンコーダ(725)は、エンコーディングされたブロックを含めるようにビットストリームをフォーマットするように構成される。エントロピーエンコーダ(725)は、HEVC規格などの適切な規格に従って様々な情報を含むように構成される。一例では、エントロピーエンコーダ(725)は、汎用制御データ、選択された予測情報(例えば、イントラ予測情報またはインター予測情報)、残差情報、およびビットストリーム内の他の適切な情報を含むように構成される。開示された主題によれば、インターモードまたは双予測モードのいずれかのマージサブモードでブロックをコーディングするときに残差情報が存在しないことに留意されたい。
図8は、本開示の別の実施形態による、ビデオデコーダ(810)の図を示す。ビデオデコーダ(810)は、コーディングされたビデオシーケンスの一部であるコーディングされたピクチャを受信し、コーディングされたピクチャをデコーディングして再構成されたピクチャを生成するように構成される。一例では、ビデオデコーダ(810)は、図4の例のビデオデコーダ(410)の代わりに使用される。
図8の例では、ビデオデコーダ(810)は、図8に示されたように一緒に結合されたエントロピーデコーダ(871)、インターデコーダ(880)、残差デコーダ(873)、再構成モジュール(874)、およびイントラデコーダ(872)を含む。
エントロピーデコーダ(871)は、コーディングされたピクチャから、コーディングされたピクチャが構成される構文要素を表す特定のシンボルを再構成するように構成することができる。そのようなシンボルは、例えば、(例えば、イントラモード、インターモード、双予測モード、マージサブモードまたは別のサブモードの中の後者2つなどの)ブロックがコーディングされるモード、それぞれ、イントラデコーダ(872)またはインターデコーダ(880)による予測に使用される特定のサンプルまたはメタデータを識別することができる(例えば、イントラ予測情報またはインター予測情報などの)予測情報、例えば、量子化変換係数の形態の残差情報などを含むことができる。一例では、予測モードがインターモードまたは双予測モードであるとき、インター予測情報はインターデコーダ(880)に提供され、予測タイプがイントラ予測タイプであるとき、イントラ予測情報はイントラデコーダ(872)に提供される。残差情報は逆量子化を受けることができ、残差デコーダ(873)に提供される。
インターデコーダ(880)は、インター予測情報を受信し、インター予測情報に基づいてインター予測結果を生成するように構成される。
イントラデコーダ(872)は、イントラ予測情報を受信し、イントラ予測情報に基づいて予測結果を生成するように構成される。
残差デコーダ(873)は、逆量子化を実行して逆量子化変換係数を抽出し、逆量子化変換係数を処理して、残差を周波数領域から空間領域に変換するように構成される。残差デコーダ(873)はまた、(量子化器パラメータ(QP)を含めるために)特定の制御情報を必要とする場合があり、その情報は、エントロピーデコーダ(871)によって提供される場合がある(これは、少量の制御情報のみである可能性があるので、データパスは描写されていない)。
再構成モジュール(874)は、空間領域において、残差デコーダ(873)によって出力された残差と(場合によってはインター予測モジュールまたはイントラ予測モジュールによって出力された)予測結果を組み合わせて、再構成されたピクチャの一部であり得る再構成されたブロックを形成し、同様に、再構成されたピクチャは再構成されたビデオの一部であり得る。見栄えを改善するために、デブロッキング動作などの他の適切な動作が実行できることに留意されたい。
ビデオエンコーダ(403)、(603)、および(703)、ならびにビデオデコーダ(410)、(510)、および(810)は、任意の適切な技法を使用して実装され得ることに留意されたい。一実施形態では、ビデオエンコーダ(403)、(603)、および(703)、ならびにビデオデコーダ(410)、(510)、および(810)は、1つまたは複数の集積回路を使用して実装することができる。別の実施形態では、ビデオエンコーダ(403)、(603)、および(603)、ならびにビデオデコーダ(410)、(510)、および(810)は、ソフトウェア命令を実行する1つまたは複数のプロセッサを使用して実装することができる。
本開示は、人工知能(AI)ベースのニューラル画像圧縮(NIC)などのニューラル画像圧縮技術および/またはニューラルビデオ圧縮技術に関連するビデオコーディング技術を説明する。本開示の態様は、ニューラルネットワークに基づくエンドツーエンド(E2E)最適化画像コーディングフレームワークのためのNIC方法などの、NICにおけるコンテンツ適応型オンライン訓練を含む。ニューラルネットワーク(NN)は、ディープニューラルネットワーク(DNN)、畳み込みニューラルネットワーク(CNN)などの人工ニューラルネットワーク(ANN)を含むことができる。
一実施形態では、関連するハイブリッドビデオコーデックを全体として最適化することは困難である。例えば、ハイブリッドビデオコーデックにおける単一のモジュール(例えば、エンコーダ)の改善は、全体的な性能におけるコーディング利得をもたらさない場合がある。NNベースのビデオコーディングフレームワークでは、学習プロセスまたは訓練プロセス(例えば、機械学習プロセス)を実行することによって最終目的(例えば、本開示に記載されているレート歪み損失Lなどのレート歪み性能)を改善するために、入力から出力まで異なるモジュールを共同で最適化することができ、したがってE2E最適化NICが得られる。
例示的なNICフレームワークまたはシステムは、以下のように説明することができる。NICフレームワークは、入力画像xをニューラルネットワークエンコーダ(例えば、DNNなどのニューラルネットワークに基づくエンコーダ)への入力として使用して、例えば記憶および送信の目的でコンパクトにすることができる圧縮表現(例えば、コンパクトな表現)
を計算することができる。ニューラルネットワークデコーダ(例えば、DNNなどのニューラルネットワークに基づくデコーダ)は、圧縮表現
を入力として使用して、出力画像(再構成画像とも呼ばれる)
を再構成することができる。様々な実施形態において、入力画像xおよび再構成画像
は空間領域にあり、圧縮表現
は空間領域とは異なる領域にある。いくつかの例では、圧縮表現
は量子化され、エントロピーコーディングされる。
いくつかの例では、NICフレームワークは、変分オートエンコーダ(VAE)構造を使用することができる。VAE構造では、ニューラルネットワークエンコーダは、入力画像x全体をニューラルネットワークエンコーダへの入力として直接使用することができる。入力画像x全体は、ブラックボックスとして機能して圧縮表現
を計算するニューラルネットワーク層のセットを通過することができる。圧縮表現
は、ニューラルネットワークエンコーダの出力である。ニューラルネットワークデコーダは、圧縮表現
全体を入力とすることができる。圧縮表現
は、別のブラックボックスとして機能して再構成画像
を計算するニューラルネットワーク層の別のセットを通過することができる。レート歪み(R-D)損失
は、トレードオフハイパーパラメータλを用いて、再構成画像
の歪み損失
とコンパクト表現
のビット消費Rの間のトレードオフを達成するように最適化することができる。
ニューラルネットワーク(例えば、ANN)は、タスク固有のプログラミングなしに、例からタスクを実行することを学習することができる。ANNは、接続されたノードまたは人工ニューロンで構成することができる。ノード間の接続は、第1のノードから第2のノード(例えば、受信ノード)に信号を送信することができ、信号は、接続の重み係数によって示すことができる重みによって修正することができる。受信ノードは、信号を受信ノードに送信するノードからの信号(すなわち、受信ノードの入力信号)を処理し、次いで、入力信号に関数を適用することによって出力信号を生成することができる。関数は、線形関数とすることができる。一例では、出力信号は入力信号の加重総和である。一例では、出力信号は、バイアス項によって示すことができるバイアスによってさらに修正され、したがって、出力信号は、バイアスと入力信号の加重総和との和である。この関数は、例えば、入力信号の重み付き和またはバイアスと加重総和との和に対する非線形演算を含むことができる。出力信号は、受信ノードに接続されたノード(下流ノード)に送信することができる)。ANNは、パラメータ(例えば、接続および/またはバイアスの重み)によって表現または構成することができる。重みおよび/またはバイアスは、重みおよび/またはバイアスを反復的に調整することができる例を用いてANNを訓練することによって取得することができる。決定された重みおよび/または決定されたバイアスで構成された訓練されたANNは、タスクを実行するために使用され得る。
ANN内のノードは、任意の適切なアーキテクチャに編成することができる。様々な実施形態では、ANN内のノードは、ANNへの入力信号を受信する入力層、およびANNからの出力信号を出力する出力層を含む層に編成される。一実施形態では、ANNは、入力層と出力層との間の隠れ層などの層をさらに含む。異なる層は、異なる層のそれぞれの入力に対して異なる種類の変換を実行することができる。信号は、入力層から出力層に移動することができる。
入力層と出力層との間に複数の層を有するANNは、DNNと呼ぶことができる。一実施形態では、DNNは、データがループバックすることなく入力層から出力層に流れるフィードフォワードネットワークである。一例では、DNNは、1つの層内の各ノードが次の層内のすべてのノードに接続される完全接続ネットワークである。一実施形態では、DNNは、データが任意の方向に流れることができるリカレントニューラルネットワーク(RNN)である。一実施形態では、DNNはCNNである。
CNNは、入力層、出力層、および入力層と出力層との間の隠れ層を含むことができる。隠れ層は、2次元(2D)畳み込みなどの畳み込みを実行する畳み込み層(例えば、エンコーダで使用される)を含むことができる。一実施形態では、畳み込み層で実行される2D畳み込みは、畳み込みカーネル(5×5行列などのフィルタまたはチャネルとも呼ばれる)と畳み込み層への入力信号(例えば、2D画像、256×256行列などの2D行列)との間にある。様々な例において、畳み込みカーネルの次元(例えば、5×5)は、入力信号の次元(例えば、256×256)よりも小さい。したがって、畳み込みカーネルによってカバーされる入力信号(例えば、256×256行列)内の部分(例えば、5×5の領域)は、入力信号の領域(例えば、256×256の領域)よりも小さく、したがって、次の層のそれぞれのノードにおける受信フィールドと呼ぶことができる。
畳み込みの間、畳み込みカーネルと入力信号内の対応する受信フィールドとのドット積が計算される。したがって、畳み込みカーネルの各要素は、受信フィールドの対応するサンプルに適用される重みであり、したがって、畳み込みカーネルは重みを含む。例えば、5×5行列によって表される畳み込みカーネルは、25個の重みを有する。いくつかの例では、畳み込み層の出力信号にバイアスが適用され、出力信号はドット積とバイアスとの和に基づく。
畳み込みカーネルは、ストライドと呼ばれるサイズだけ入力信号(例えば、2D行列)に沿ってシフトすることができ、したがって、畳み込み演算は、特徴マップまたは活性化マップ(例えば、別の2D行列)を生成し、それは次にCNNにおける次の層の入力に寄与する。例えば、入力信号は256×256サンプルを有する2D画像であり、ストライドは2サンプル(例えば、2のストライド)である。ストライドが2の場合、畳み込みカーネルは、X方向(例えば、水平方向)および/またはY方向(例えば、垂直方向)に沿って2サンプルだけシフトする。
複数の畳み込みカーネルを同じ畳み込み層で入力信号に適用して、複数の特徴マップをそれぞれ生成することができ、各特徴マップは入力信号の特定の特徴を表すことができる。一般に、各畳み込みカーネルがM×Mサンプルを有するN個のチャネル(すなわち、N個の畳み込みカーネル)、およびストライドSを有する畳み込み層は、Conv:MxM cN sSとして指定することができる。例えば、各畳み込みカーネルが5×5サンプルを有する、192個のチャネル、および2のストライドを伴う畳み込み層は、Conv:5x5 c192 s2として指定される。隠れ層は、2D逆畳み込みなどの逆畳み込みを実行する逆畳み込み層(例えば、デコーダで使用される)を含むことができる。逆畳み込みは、畳み込みの逆である。各逆畳み込みカーネルが5×5サンプルを有する192個のチャネル、および2のストライドを有する逆畳み込み層は、DeConv:5x5 c192 s2として指定される。
様々な実施形態において、CNNは以下の利点を有する。CNNにおける学習可能なパラメータの数(すなわち、訓練されるべきパラメータ)は、フィードフォワードDNNなどのDNNにおける学習可能なパラメータの数よりも大幅に小さくすることができる。CNNでは、比較的多数のノードが同じフィルタ(例えば、同じ重み)および同じバイアス(バイアスが使用される場合)を共有することができ、したがって、同じフィルタを共有するすべての受信フィールドにわたって単一のバイアスおよび単一の重みベクトルを使用することができるので、メモリフットプリントを低減することができる。例えば、100×100サンプルの入力信号の場合、5×5サンプルを有する畳み込みカーネルを有する畳み込み層は、25個の学習可能なパラメータ(例えば、重み)を有する。バイアスが使用される場合には、一方のチャネルは26個の学習可能パラメータ(例えば、25個の重みおよび1つのバイアス)を使用する。畳み込み層がN個のチャネルを有する場合、総学習可能パラメータは26×Nである。他方、DNNにおける完全接続の層については、次の層における各ノードについて100×100(すなわち、10000)の重みが使用される。次の層がL個のノードを有する場合、総学習可能パラメータは10000 x Lである。
CNNは、プーリング層、1つの層内の各ノードを別の層内の各ノードに接続することができる完全接続層、正規化層などの1つまたは複数の他の層をさらに含むことができる。CNN内の層は、任意の適切な順序および任意の適切なアーキテクチャ(例えば、フィードフォワードアーキテクチャ、リカレントアーキテクチャ)で配置することができる。一例では、畳み込み層の後に、プーリング層、完全接続層、正規化層などの他の層が続く。
プーリング層を使用して、1つの層の複数のノードからの出力を次の層の単一のノードに組み合わせることによってデータの次元を削減することができる。以下で、特徴マップを入力として有するプーリング層のプーリング動作について説明する。この説明は、他の入力信号に適切に適合させることができる。特徴マップは、サブ領域(例えば、矩形サブ領域)に分割することができ、それぞれのサブ領域内の特徴は、例えば、平均プーリングにおける平均値または最大プーリングにおける最大値をとることによって、単一の値に独立してダウンサンプリング(またはプーリング)することができる。
プーリング層は、ローカルプーリング、グローバルプーリング、最大プーリング、平均プーリングなどのプーリングを実行することができる。プーリングは非線形ダウンサンプリングの一形態である。ローカルプーリングは、特徴マップ内の少数のノード(例えば、2×2ノードなどのノードのローカルクラスタ)を組み合わせる。グローバルプーリングは、例えば、特徴マップのすべてのノードを組み合わせることができる。
プーリング層は、表現のサイズを縮小することができ、したがって、CNNにおけるパラメータの数、メモリフットプリント、および計算量を低減することができる。一例では、プーリング層は、CNN内の連続する畳み込み層の間に挿入される。一例では、プーリング層の後に、整流線形ユニット(ReLU)層などの活性化関数が続く。一例では、CNNにおける連続する畳み込み層の間でプーリング層が省略される。
正規化層は、ReLU、漏洩ReLU、一般化分割正規化(GDN)、逆GDN(IGDN)などとすることができる。ReLUは、非飽和活性化関数を適用して、負の値を0に設定することによって、特徴マップなどの入力信号から負の値を除去することができる。漏洩ReLUは、平坦な傾き(例えば、0)ではなく、負の値に対して小さい傾き(例えば、0.01)を有することができる。したがって、値xが0より大きい場合には、漏洩ReLUからの出力はxである。そうでない場合、漏洩ReLUからの出力は、値xに小さい傾き(例えば、0.01)を乗算したものである。一例では、勾配は訓練前に決定され、したがって訓練中に学習されない。
図9は、本開示の一実施形態による、例示的なNICフレームワーク(900)(例えば、NICシステム)を示す。NICフレームワーク(900)は、DNNおよび/またはCNNなどのニューラルネットワークに基づくことができる。NICフレームワーク(900)は、画像を圧縮(例えば、エンコーディングする)し、圧縮画像(例えば、エンコーディングされた画像)を解凍(例えば、デコーディングまたは再構成)するために使用することができる。NICフレームワーク(900)は、ニューラルネットワークを使用して実装される第1のサブNN(951)および第2のサブNN(952)の2つのサブニューラルネットワークを含むことができる。
第1のサブNN(951)はオートエンコーダに似ていてもよく、入力画像xの圧縮画像
を生成し、圧縮画像
を解凍して再構成画像
を取得するように訓練されてもよい。第1のサブNN(951)は、メインエンコーダニューラルネットワーク(またはメインエンコーダネットワーク)(911)、量子化器(912)、エントロピーエンコーダ(913)、エントロピーデコーダ(914)、およびメインデコーダニューラルネットワーク(またはメインエンコーダネットワーク)(915)などの複数の構成要素(またはモジュール)を含むことができる。図9を参照すると、メインエンコーダネットワーク(911)は、入力画像x(例えば、圧縮またはエンコーディングされる画像)から潜像または潜在的表現yを生成することができる。一例では、メインエンコーダネットワーク(911)はCNNを使用して実装される。潜在的表現yと入力画像xとの間の関係は、式2を使用して説明され得る。
y=f
1(x;θ
1) 式2
ここで、パラメータθ
1は、メインエンコーダネットワーク(911)内の畳み込みカーネルで使用される重みおよびバイアス(バイアスがメインエンコーダネットワーク(911)で使用される場合)などのパラメータを表す。
潜在的表現yは、量子化された潜像
を生成するために量子化器(912)を使用して量子化することができる。量子化された潜像
は、例えば、エントロピーエンコーダ(913)による可逆圧縮を使用して圧縮され、入力画像xの圧縮表現
である圧縮画像(例えば、エンコーディングされた画像)
(931)を生成することができる。エントロピーエンコーダ(913)は、ハフマンコーディング、算術コーディングなどのエントロピーコーディング技術を使用することができる。一例では、エントロピーエンコーダ(913)は算術エンコーディングを使用し、算術エンコーダである。一例では、エンコーディングされた画像(931)はコーディングされたビットストリームで送信される。
エンコーディングされた画像(931)は、エントロピーデコーダ(914)によって解凍(例えば、エントロピーデコーディング)されて出力を生成することができる。エントロピーデコーダ(914)は、エントロピーエンコーダ(913)で使用されるエントロピーエンコーディング技術に対応するハフマンコーディング、算術エンコーディングなどのエントロピーコーディング技術を使用することができる。一例では、エントロピーデコーダ(914)は算術デコーディングを使用し、算術デコーダである。一例では、エントロピーエンコーダ(913)で可逆圧縮が使用され、エントロピーデコーダ(914)で可逆解凍が使用され、エンコーディングされた画像(931)の送信などによるノイズは省略可能であり、エントロピーデコーダ(914)からの出力は量子化された潜像
である。
メインデコーダネットワーク(915)は、量子化された潜像
をデコーディングして再構成画像
を生成することができる。一例では、メインデコーダネットワーク(915)はCNNを使用して実装される。再構成画像
(すなわち、メインデコーダネットワーク(915)の出力)と量子化された潜像
(すなわち、メインデコーダネットワーク(915)の入力)との間の関係は、式3を使用して説明され得る。
ここで、パラメータθ
2は、メインデコーダネットワーク(915)内の畳み込みカーネルで使用される重みおよびバイアス(バイアスがメインデコーダネットワーク(915)で使用される場合)などのパラメータを表す。したがって、第1のサブNN(951)は、入力画像xを圧縮(例えば、エンコーディング)してエンコーディングされた画像(931)を取得し、エンコーディングされた画像(931)を解凍(例えば、デコーディング)して再構成画像
を取得することができる。再構成画像
は、量子化器(912)によって導入される量子化損失のために入力画像xとは異なり得る。
第2のサブNN(952)は、エントロピーコーディングに使用される量子化された潜像
にわたってエントロピーモデル(例えば、事前確率モデル)を学習することができる。したがって、エントロピーモデルは、条件付きエントロピーモデル、例えば、ガウス混合モデル(GMM)、入力画像xに依存するガウススケールモデル(GSM)とすることができる。第2のサブNN(952)は、コンテキストモデルNN(916)、エントロピーパラメータNN(917)、ハイパーエンコーダ(921)、量子化器(922)、エントロピーエンコーダ(923)、エントロピーデコーダ(924)、およびハイパーデコーダ(925)を含むことができる。コンテキストモデルNN(916)で使用されるエントロピーモデルは、潜像にわたる自己回帰モデル(例えば、量子化された潜像
)とすることができる。一例では、ハイパーエンコーダ(921)、量子化器(922)、エントロピーエンコーダ(923)、エントロピーデコーダ(924)、およびハイパーデコーダ(925)は、ハイパーニューラルネットワーク(例えば、ハイパー・プライアーNN)を形成する。ハイパーニューラルネットワークは、コンテキストベースの予測を補正するのに有用な情報を表すことができる。コンテキストモデルNN(916)およびハイパーニューラルネットワークからのデータは、エントロピーパラメータNN(917)によって組み合わせることができる。エントロピーパラメータNN(917)は、条件付きガウスエントロピーモデル(例えば、GMM)などのエントロピーモデルの平均およびスケールパラメータなどのパラメータを生成することができる。
図9を参照すると、エンコーダ側では、量子化器(912)からの量子化潜像
がコンテキストモデルNN(916)に供給される。デコーダ側では、エントロピーデコーダ(914)からの量子化された潜像
がコンテキストモデルNN(916)に供給される。コンテキストモデルNN(916)は、CNNなどのニューラルネットワークを使用して実現することができる。コンテキストモデルNN(916)は、コンテキストモデルNN(916)が利用可能な量子化された潜像
であるコンテキスト
に基づいて出力o
cm,iを生成することができる。コンテキスト
は、エンコーダ側で以前に量子化された潜像、またはデコーダ側で以前にエントロピーデコーディングされた量子化された潜像を含むことができる。出力o
cm,iとコンテキストモデルNN(916)の入力(例えば、
)との関係は、式4を使用して説明され得る。
ここで、パラメータθ
3は、コンテキストモデルNN(916)内の畳み込みカーネルで使用される重みおよびバイアス(バイアスがコンテキストモデルNN(916)内で使用される場合)などのパラメータを表す。
コンテキストモデルNN(916)からの出力ocm,iおよびハイパーデコーダ(925)からの出力ohcは、エントロピーパラメータNN(917)に供給されて出力oepを生成する。エントロピーパラメータNN(917)は、CNNなどのニューラルネットワークを使用して実装することができる。出力oepとエントロピーパラメータNN(917)の入力(例えば、ocm,iおよびohc)との間の関係は、式5を使用して説明され得る。
oep=f4(ocm,i,ohc;θ4) 式5
ここで、パラメータθ4は、エントロピーパラメータNN(917)内の畳み込みカーネルで使用される重みおよびバイアス(バイアスがエントロピーパラメータNN(917)で使用される場合)などのパラメータを表す。エントロピーパラメータNN(917)の出力oepは、エントロピーモデルを決定する(例えば、条件付けする)際に使用することができ、したがって、条件付きエントロピーモデルは、例えば、ハイパーデコーダ(925)からの出力ohcを介して、入力画像xに依存することができる。一例では、出力oepは、エントロピーモデル(例えば、GMM)を条件付けするために使用される平均およびスケールパラメータなどのパラメータを含む。図9を参照すると、エントロピーモデル(例えば、条件付きエントロピーモデル)は、エントロピーコーディングおよびエントロピーデコーディングにおいて、それぞれエントロピーエンコーダ(913)およびエントロピーデコーダ(914)によって採用することができる。
第2のサブNN(952)については、後述することができる。潜像yは、ハイパーエンコーダ(921)に供給されて、ハイパー潜像zを生成することができる。一例では、ハイパーエンコーダ(921)は、CNNなどのニューラルネットワークを使用して実装される。ハイパー潜像zと潜像yとの間の関係は、式6を使用して説明され得る。
z=f5(y;θ5) 式6
ここで、パラメータθ5は、ハイパーエンコーダ(921)内の畳み込みカーネルで使用される重みおよびバイアス(バイアスがハイパーエンコーダ(921)で使用される場合)などのパラメータを表す。
ハイパー潜像zは、量子化器(922)によって量子化され、量子化された潜像
を生成する。量子化された潜像
は、例えば、エントロピーエンコーダ(923)による可逆圧縮を使用して圧縮され、ハイパーニューラルネットワークからエンコーディングされたビット(932)などのサイド情報を生成することができる。エントロピーエンコーダ(923)は、ハフマンコーディング、算術コーディングなどのエントロピーコーディング技術を使用することができる。一例では、エントロピーエンコーダ(923)は算術エンコーディングを使用し、算術エンコーダである。一例では、エンコーディングされたビット(932)などのサイド情報は、例えばエンコーディングされた画像(931)とともに、コーディングされたビットストリームで送信することができる。
エンコーディングされたビット(932)などのサイド情報は、エントロピーデコーダ(924)によって解凍(例えば、エントロピーデコーディング)して出力を生成することができる。エントロピーデコーダ(924)は、ハフマンコーディング、算術コーディングなどのエントロピーコーディング技術を使用することができる。一例では、エントロピーデコーダ(924)は算術デコーディングを使用し、算術デコーダである。一例では、エントロピーエンコーダ(923)で可逆圧縮が使用され、エントロピーデコーダ(924)で可逆解凍が使用され、サイド情報の送信などによるノイズは省略可能であり、エントロピーデコーダ(924)からの出力は量子化された潜像
とすることができる。ハイパーデコーダ(925)は、量子化された潜像
をデコーディングして出力o
hcを生成することができる。出力o
hcと量子化された潜像
との間の関係は、式7を使用して説明され得る。
ここで、パラメータθ
6は、ハイパーデコーダ(925)内の畳み込みカーネルで使用される重みおよびバイアス(バイアスがハイパーデコーダ(925)で使用される場合)などのパラメータを表す。
上述したように、圧縮されたビットまたはエンコーディングされたビット(932)をサイド情報としてコーディングされたビットストリームに追加することができ、これにより、エントロピーデコーダ(914)が条件付きエントロピーモデルを使用することが可能になる。したがって、エントロピーモデルは、画像依存および空間的に適応可能であり得、したがって、固定エントロピーモデルよりも正確であり得る。
NICフレームワーク(900)は、例えば、図9に示す1つまたは複数の構成要素を省略し、図9に示す1つまたは複数の構成要素を修正し、および/または図9に示されていない1つまたは複数の構成要素を含むように適切に適合させることができる。一例では、固定エントロピーモデルを使用するNICフレームワークは、第1のサブNN(951)を含み、第2のサブNN(952)を含まない。一例では、NICフレームワークは、エントロピーエンコーダ(923)およびエントロピーデコーダ(924)を除くNICフレームワーク(900)内の構成要素を含む。
一実施形態では、図9に示すNICフレームワーク(900)内の1つまたは複数の構成要素は、CNNなどのニューラルネットワークを使用して実装される。NICフレームワーク(例えば、NICフレームワーク(900))内の各NNベースの構成要素(例えば、メインエンコーダネットワーク(911)、メインデコーダネットワーク(915)、コンテキストモデルNN(916)、エントロピーパラメータNN(917)、ハイパーエンコーダ(921)、またはハイパーデコーダ(925))は、任意の適切なアーキテクチャ(例えば、層の任意の適切な組み合わせを有する)を含むことができ、任意の適切なタイプのパラメータ(例えば、重み、バイアス、重みとバイアスの組み合わせなど)を含むことができ、および任意の適切な数のパラメータを含むことができる。
一実施形態では、メインエンコーダネットワーク(911)、メインデコーダネットワーク(915)、コンテキストモデルNN(916)、エントロピーパラメータNN(917)、ハイパーエンコーダ(921)、およびハイパーデコーダ(925)は、それぞれのCNNを使用して実装される。
図10は、本開示の一実施形態によるメインエンコーダネットワーク(911)の例示的なCNNを示す。例えば、メインエンコーダネットワーク(911)は4つのセットの層を含み、各セットの層は畳み込み層5x5 c192 s2とそれに続くGDN層とを含む。図10に示す1つまたは複数の層は、修正および/または省略することができる。追加のレイヤをメインエンコーダネットワーク(911)に追加することができる。
図11は、本開示の一実施形態によるメインデコーダネットワーク(915)の例示的なCNNを示す。例えば、メインデコーダネットワーク(915)は3つのセットの層を含み、各セットの層は逆畳み込み層5x5 c192 s2とそれに続くIGDN層とを含む。加えて、3つのセットの層の後に、逆畳み込み層5x5 c3 s2が続き、その後にIGDN層が続く。図11に示す1つまたは複数の層は、修正および/または省略することができる。追加の層をメインデコーダネットワーク(915)に追加することができる。
図12は、本開示の一実施形態によるハイパーエンコーダ(921)の例示的なCNNを示す。例えば、ハイパーエンコーダ(921)は、畳み込み層3x3 c192 s1とそれに続く漏洩ReLU、畳み込み層5x5 c192 s2とそれに続く漏洩ReLU、および畳み込み層5x5 c192 s2を含む。図12に示す1つまたは複数の層は、修正および/または省略することができる。追加の層をハイパーエンコーダ(921)に追加することができる。
図13は、本開示の一実施形態によるハイパーデコーダ(925)の例示的なCNNを示す。例えば、ハイパーデコーダ(925)は、逆畳み込み層5x5 c192 s2とそれに続く漏洩ReLU、逆畳み込み層5x5 c288 s2とそれに続く漏洩ReLU、および逆畳み込み層3x3 c384 s1を含む。図13に示す1つまたは複数の層は、修正および/または省略することができる。追加の層をハイパーエンコーダ(925)に追加することができる。
図14は、本開示の一実施形態によるコンテキストモデルNN(916)の例示的なCNNを示す。例えば、コンテキストモデルNN(916)は、コンテキスト予測のためのマスクされた畳み込み5x5 c384 s1を含み、したがって式4のコンテキスト
は、限定されたコンテキスト(例えば、5×5の畳み込みカーネル)を含む。図14の畳み込み層は修正することができる。追加の層をコンテキストモデルNN(916)に追加することができる。
図15は、本開示の一実施形態によるエントロピーパラメータNN(917)の例示的なCNNを示す。例えば、エントロピーパラメータNN(917)は、畳み込み層1x1 c640 s1とそれに続く漏洩ReLU、畳み込み層1x1 c512 s1とそれに続く漏洩ReLU、および畳み込み層1x1 c384 s1を含む。図15に示す1つまたは複数の層は、修正および/または省略することができる。追加の層をエントロピーパラメータNN(917)に追加することができる。
NICフレームワーク(900)は、図10~図15を参照して説明したように、CNNを使用して実装することができる。NICフレームワーク(900)は、NICフレームワーク(900)内の1つまたは複数の構成要素(例えば、(911)、(915)、(916)、(917)、(921)、および/または(925))が任意の適切なタイプのニューラルネットワーク(例えば、CNNまたは非CNNベースのニューラルネットワーク)を使用して実装されるように適切に適合させることができる。NICフレームワーク(900)の1つまたは複数の他の構成要素は、ニューラルネットワークを使用して実装することができる。
ニューラルネットワーク(例えば、CNN)を含むNICフレームワーク(900)は、ニューラルネットワークで使用されるパラメータを学習するように訓練することができる。例えば、CNNが用いられるとき、θ1~θ6で表されるパラメータ、例えば、メインエンコーダネットワーク(911)内の畳み込みカーネルで使用される重みおよびバイアス(メインエンコーダネットワーク(911)でバイアスが使用される場合)、メインデコーダネットワーク(915)内の畳み込みカーネルで使用される重みおよびバイアス(メインデコーダネットワーク(915)でバイアスが使用される場合)、ハイパーエンコーダ(921)内の畳み込みカーネルで使用される重みおよびバイアス(ハイパーエンコーダ(921)でバイアスが使用される場合)、ハイパーデコーダ(925)内の畳み込みカーネルで使用される重みおよびバイアス(ハイパーデコーダ(925)でバイアスが使用される場合)、コンテキストモデルNN(916)内の畳み込みカーネルで使用される重みおよびバイアス(コンテキストモデルNN(916)でバイアスが使用される場合)、ならびにエントロピーパラメータNN(917)内の畳み込みカーネルで使用される重みおよびバイアス(エントロピーパラメータNN(917)でバイアスが使用される場合)は、それぞれ、訓練プロセスにおいて学習することができる。
一例では、図10を参照すると、メインエンコーダネットワーク(911)は4つの畳み込み層を含み、各畳み込み層は5×5および192チャネルの畳み込みカーネルを有する。したがって、メインエンコーダネットワーク(911)内の畳み込みカーネルで使用される重みの数は、19200(すなわち、4×5×5×192)である。メインエンコーダネットワーク(911)で使用されるパラメータは、19200個の重みおよび任意選択のバイアスを含む。バイアスおよび/または追加のNNがメインエンコーダネットワーク(911)で使用されるとき、追加のパラメータを含めることができる。
図9を参照すると、NICフレームワーク(900)は、ニューラルネットワーク上に構築された少なくとも1つの構成要素またはモジュールを含む。少なくとも1つの構成要素は、メインエンコーダネットワーク(911)、メインデコーダネットワーク(915)、ハイパーエンコーダ(921)、ハイパーデコーダ(925)、コンテキストモデルNN(916)、およびエントロピーパラメータNN(917)のうちの1つまたは複数を含むことができる。少なくとも1つの構成要素は、個別に訓練することができる。一例では、訓練プロセスは、各構成要素のパラメータを別々に学習するために使用される。少なくとも1つの構成要素は、グループとして共同で訓練することができる。一例では、訓練プロセスは、少なくとも1つの構成要素のサブセットのパラメータを共同で学習するために使用される。一例では、訓練プロセスは、少なくとも1つの構成要素のすべてのパラメータを学習するために使用され、したがって、E2E最適化と呼ばれる。
NICフレームワーク(900)内の1つまたは複数の構成要素の訓練プロセスでは、1つまたは複数の構成要素の重み(または重み係数)を初期化することができる。一例では、重みは、事前訓練された対応するニューラルネットワークモデル(例えば、DNNモデル、CNNモデル)に基づいて初期化される。一例では、重みは、重みを乱数に設定することによって初期化される。
例えば、重みが初期化された後に、1つまたは複数の構成要素を訓練するために、訓練画像のセットを採用することができる。訓練画像のセットは、任意の適切なサイズを有する任意の適切な画像を含むことができる。いくつかの例では、訓練画像のセットは、空間領域内にある生画像、自然画像、コンピュータ生成画像などを含む。いくつかの例では、訓練画像のセットは、空間領域内の残差データを有する残差画像を含む。残差データは、残差計算器(例えば、残差計算器(723))により計算することができる。いくつかの例では、訓練画像のセット内の訓練画像(例えば、生画像および/または残差データを含む残差画像)は、適切なサイズを有するブロックに分割することができ、ブロックおよび/または画像は、NICフレームワーク内のニューラルネットワークを訓練するために使用することができる。したがって、生画像、残差画像、生画像からのブロック、および/または残差画像からのブロックを使用して、NICフレームワーク内のニューラルネットワークを訓練することができる。
簡潔にするために、以下の訓練プロセスは、一例として訓練画像を使用して説明される。説明は、訓練ブロックに適切に適合させることができる。訓練画像のセットの訓練画像tは、圧縮表現(例えば、ビットストリームに、例えば、エンコーディングされた情報)を生成するために図9のエンコーディングプロセスを通過することができる。エンコーディングされた情報は、図9に記載されたデコーディングプロセスを通過して、再構成画像
を計算および再構成することができる。
NICフレームワーク(900)の場合、2つの競合するターゲット、例えば再構成品質とビット消費とのバランスがとられる。品質損失関数(例えば、歪みまたは歪み損失
)を使用して、再構成(例えば、再構成画像
)と元の画像(例えば、訓練画像t)との間の差などの再構成品質を示すことができる。レート(またはレート損失)Rを使用して、圧縮表現のビット消費を示すことができる。一例では、レート損失Rは、例えば、コンテキストモデルを決定する際に使用されるサイド情報をさらに含む。
ニューラル画像圧縮の場合、量子化の微分可能な近似をE2E最適化に使用することができる。様々な例において、ニューラルネットワークに基づく画像圧縮の訓練プロセスでは、量子化をシミュレートするためにノイズ注入が使用され、したがって量子化は量子化器(例えば、量子化器(912))によって実行される代わりにノイズ注入によってシミュレートされる。したがって、ノイズ注入を用いた訓練は、量子化誤差を変分的に近似することができる。ビット/ピクセル(BPP)推定器は、エントロピーコーダをシミュレートするために使用することができ、したがって、エントロピーコーディングは、エントロピーエンコーダ(例えば、(913))およびエントロピーデコーダ(例えば、(914))によって実行される代わりに、BPP推定器によってシミュレートされる。したがって、訓練プロセス中の式1に示す損失関数Lにおけるレート損失Rは、例えば、ノイズ注入およびBPP推定器に基づいて推定することができる。一般に、より高いレートRはより低い歪みDを可能にすることができ、より低いレートRはより高い歪みDをもたらし得る。したがって、式1のトレードオフハイパーパラメータλは、共同R-D損失Lを最適化するために使用することができ、λDとRとの和であるLを最適化することができる。訓練プロセスは、共同R-D損失Lが最小化または最適化されるように、NICフレームワーク(900)内の1つまたは複数の構成要素(例えば、(911)、(915))のパラメータを調整するために使用することができる。
様々なモデルを使用して、歪み損失Dおよびレート損失Rを決定し、したがって式1の共同R-D損失Lを決定することができる。一例では、歪み損失
は、平均二乗誤差、マルチスケール構造類似性(MS-SSIM)品質指数、PSNRとMS-SSIMとの重み付き組み合わせなどに基づくメトリックであるピーク信号対雑音比(PSNR)として表される。
一例では、訓練プロセスのターゲットは、エンコーダ側で使用されるビデオエンコーダなどのエンコーディングニューラルネットワーク(例えば、エンコーディングDNN)、およびデコーダ側で使用されるビデオデコーダなどのデコーディングニューラルネットワーク(例えば、デコーディングDNN)を訓練することである。一例では、図9を参照すると、エンコーディングニューラルネットワークは、メインエンコーダネットワーク(911)、ハイパーエンコーダ(921)、ハイパーデコーダ(925)、コンテキストモデルNN(916)、およびエントロピーパラメータNN(917)を含むことができる。デコーディングニューラルネットワークは、メインデコーダネットワーク(915)、ハイパーデコーダ(925)、コンテキストモデルNN(916)、およびエントロピーパラメータNN(917)を含むことができる。ビデオエンコーダおよび/またはビデオデコーダは、NNに基づくおよび/またはNNに基づかない他の構成要素を含むことができる。
NICフレームワーク(例えば、NICフレームワーク(900))は、E2E方式で訓練することができる。一例では、エンコーディングニューラルネットワークおよびデコーディングニューラルネットワークは、E2E方式で逆伝播勾配に基づいて訓練プロセスにおいて共同で更新される。
NICフレームワーク(900)内のニューラルネットワークのパラメータが訓練された後、NICフレームワーク(900)内の1つまたは複数の構成要素を使用して、画像をエンコーディングおよび/またはデコーディングすることができる。一実施形態では、エンコーダ側で、ビデオエンコーダは、入力画像xを、ビットストリームで送信されるエンコーディングされた画像(931)にエンコーディングするように構成される。ビデオエンコーダは、NICフレームワーク(900)に複数の構成要素を含むことができる。一実施形態では、デコーダ側で、対応するビデオデコーダは、ビットストリーム内のエンコーディングされた画像(931)を再構成画像
にデコーディングするように構成される。ビデオデコーダは、NICフレームワーク(900)に複数の構成要素を含むことができる。
一例では、例えば、コンテンツ適応型オンライン訓練が採用されるとき、ビデオエンコーダはNICフレームワーク(900)内のすべての構成要素を含む。
図16Aは、本開示の一実施形態による、例示的なビデオエンコーダ(1600A)を示す。ビデオエンコーダ(1600A)は、図9を参照して説明されたメインエンコーダネットワーク(911)、量子化器(912)、エントロピーエンコーダ(913)、および第2のサブNN(952)を含み、簡潔にするために詳細な説明は省略する。図16Bは、本開示の一実施形態による、例示的なビデオデコーダ(1600B)を示す。ビデオデコーダ(1600B)は、ビデオエンコーダ(1600A)に対応することができる。ビデオデコーダ(1600B)は、メインデコーダネットワーク(915)、エントロピーデコーダ(914)、コンテキストモデルNN(916)、エントロピーパラメータNN(917)、エントロピーデコーダ(924)、およびハイパーデコーダ(925)を含むことができる。図16A~図16Bを参照すると、エンコーダ側では、ビデオエンコーダ(1600A)は、ビットストリームで送信されるエンコーディングされた画像(931)およびエンコーディングされたビット(932)を生成することができる。デコーダ側では、ビデオデコーダ(1600B)は、エンコーディングされた画像(931)およびエンコーディングされたビット(932)を受信し、デコーディングすることができる。
図17~図18は、本開示の実施形態による、例示的なビデオエンコーダ(1700)および対応するビデオデコーダ(1800)をそれぞれ示す。図17を参照すると、エンコーダ(1700)は、メインエンコーダネットワーク(911)、量子化器(912)、およびエントロピーエンコーダ(913)を含む。メインエンコーダネットワーク(911)、量子化器(912)、およびエントロピーエンコーダ(913)の例は、図9を参照して説明される。図18を参照すると、ビデオデコーダ(1800)は、メインデコーダネットワーク(915)およびエントロピーデコーダ(914)を含む。メインデコーダネットワーク(915)およびエントロピーデコーダ(914)の例は、図9を参照して説明される。図17および図18を参照すると、ビデオエンコーダ(1700)は、ビットストリームで送信されるエンコーディングされた画像(931)を生成することができる。ビデオデコーダ(1800)は、エンコーディングされた画像(931)を受信してデコーディングすることができる。
上述したように、ビデオエンコーダおよびビデオデコーダを含むNICフレームワーク(900)は、訓練画像のセット内の画像および/またはブロックに基づいて訓練することができる。いくつかの例では、圧縮(例えば、エンコーディングされる)および/または送信される入力画像は、訓練画像のセットとは著しく異なる特性を有する。したがって、訓練画像のセットに基づいて訓練されたビデオエンコーダおよびビデオデコーダをそれぞれ使用して入力画像を直接エンコーディングおよびデコーディングすることは、比較的貧弱なR-D損失L(例えば、比較的大きな歪みおよび/または比較的大きなビットレート)をもたらし得る。したがって、本開示の態様は、NICにおけるコンテンツ適応型オンライン訓練方法を含む。様々なコンテンツ適応型オンライン訓練プロセスを使用して、R-D損失Lを改善することができる。
訓練画像のセットによって訓練されたNICフレームワーク(900)、ビデオエンコーダ、およびビデオデコーダは、それぞれ、事前訓練されたNICフレームワーク(900)、事前訓練されたビデオエンコーダ、および事前訓練されたビデオデコーダと呼ぶことができる。事前訓練されたNICフレームワーク(900)、事前訓練されたビデオエンコーダ、および事前訓練されたビデオデコーダ内のパラメータは、それぞれ、NIC事前訓練されたパラメータ、エンコーダ事前訓練されたパラメータ、およびデコーダ事前訓練されたパラメータと呼ばれる。
一実施形態では、NNベースの訓練プロセスは、入力画像(例えば、圧縮および/または送信される画像)を更新された入力画像に反復的に更新してR-D損失Lを改善するために適用される。更新された入力画像が、訓練画像のセットに基づいて訓練された事前訓練されたビデオエンコーダおよび事前訓練されたビデオデコーダをそれぞれ使用してエンコーディングおよびデコーディングされると、最終的なR-D損失Lが取得され、入力画像が、事前訓練されたビデオエンコーダおよび事前訓練されたビデオデコーダをそれぞれ使用してエンコーディングおよびデコーディングされると、初期のR-D損失Lよりも小さい。事前訓練されたNICフレームワーク(900)内のNIC事前訓練されたパラメータ内の1つまたは複数の事前訓練されたパラメータを更新する代わりに入力画像を更新するNNベースの訓練プロセスは、オンライン画像訓練プロセスなどの画像訓練プロセスと呼ぶことができる。画像訓練プロセスは、コンテンツ適応型オンライン訓練プロセスであり、学習ベースの画像コーディングプロセスである。
図19Aは、本開示の一実施形態による、学習ベースの画像コーディングプロセス(1900)の一例を示す。学習ベースの画像圧縮は、エンコーディングマッピングおよびデコーディングマッピングを含む2ステップのマッピングプロセスとして説明することができる。エンコーダによるエンコーディングマッピングでは、元の空間(例えば、高次元空間)内の元の画像x
0を、レート損失R(x
0)を用いてエンコーディングされた画像(例えば、ビットストリーム)(1910)にマッピングすることができる。元の画像x
0は、生画像または残差データを含む画像など、エンコーディングおよび/または送信される入力画像とすることができる。デコーダによるデコーディングマッピングでは、エンコーディングされた画像(1910)は、元の空間内の再構成画像
にマッピングし戻すことができる。エンコーディングされた画像(1910)はビットストリームで送信することができ、レート損失R(x
0)はエンコーディングされた画像(1910)のビット消費を示すことができる。上述したように、再構成画像
の歪み損失は、再構成画像
と元の画像x
0との間の差を示す
であり、対応するR-D損失L1は、式1を
として使用して取得することができる。
一実施形態では、置換画像x’
0が同じエンコーディングマッピングおよびデコーディングマッピングを使用して再構成画像
にマッピングされ得るように、元の画像x
0は画像x’
0(例えば、置換画像)に更新される。再構成画像
の歪み損失は、再構成画像
と元の画像x
0との間の差を示す
であり、対応するR-D損失L2は、式1を
として使用して取得することができ、ここで、R(x’
0)は、置換画像x’
0のエンコーディングされた画像(1920)に対するレート損失である。
一実施形態では、L2が低減され、L1よりも小さくなるように置換画像x’
0を取得するために、NNベースの訓練プロセスを使用して元の画像x
0が反復的に訓練され(例えば、更新され)、したがって、より良好なビデオコーディング性能が達成される。L2がL1より小さいとき、歪み損失
は歪み損失
より小さくすることができ、したがって、置換画像x’
0に基づいて取得された再構成画像
は、元の画像x
0に基づいて取得された再構成画像
より正確である。いくつかの例では、歪み損失
は歪み損失
よりも大きいが、レート損失R(x’
0)はレート損失R(x
0)よりも小さく、ここで、L2はL1よりも小さいため、R-D損失のグローバル最小値を達成することができる。
一実施形態では、元の画像x0からエンコーディングされた画像(例えば、(1910)または(1920))へのエンコーディングプロセス中に、元の画像x0は1つまたは複数の段階で修正される。いくつかの実施形態では、元の画像x0の中間表現をエンコーディングプロセスにおいて生成することができる。元の画像x0を更新する代わりに、R-D損失Lを低減するために、中間表現の1つに対して置換または更新を行うことができ、こうしてコーディング効率を改善する。一例では、エンコーディングプロセスはNN(例えば、DNN、CNN)に基づいて実施され、1つまたは複数の特徴マップがCNNにおいて生成される。R-D損失Lを低減するために、特徴マップのうちの1つを更新することができる。
前処理モジュールでは、R-D損失Lの勾配を使用して入力画像を更新することができる。上述したように、例えば、微分不可能な演算を微分可能な演算(例えば、量子化をノイズ注入に置き換える)に置き換えることによって、モデル(例えば、レート損失Rおよび歪み損失Dを含むR-D損失L)を微分可能とすることができ、勾配を逆伝播することができる。したがって、上記の最適化は、勾配降下を用いて反復的に解くことができる。
画像訓練プロセス前の入力画像と画像訓練プロセス後の更新された入力画像とを区別するために、画像訓練プロセス前の入力画像を初期入力画像と呼ぶ。画像訓練プロセス後の更新された入力画像を最終入力画像と呼ぶ。
上述した学習ベースの画像コーディングプロセスは、画像訓練プロセスとしてエンコーディングされる初期入力画像に適用され、初期入力画像を最終入力画像に反復的に更新して、共同R-D損失Lを低減することができる。画像訓練プロセスは、事前訓練されたE2E NIC圧縮方法の圧縮性能を向上させるための前処理ステップとして使用することができる。
画像訓練プロセスは、複数のエポック(例えば、反復)を含むことができ、初期入力画像は、反復的な微調整プロセスで更新される。一実施形態では、初期入力画像内のそれぞれの1つまたは複数のサンプルの1つまたは複数のサンプル値の反復更新は、(i)最終入力画像の訓練損失(例えば、R-D損失L)または(ii)反復更新の反復回数のうちの1つが所定の条件を満たすまで、画像訓練プロセスにおいて実行される。上述したように、図19Aを参照すると、訓練損失(例えば、R-D損失L)は、最終入力画像(例えば、x’
0)のコーディングされた表現(例えば、(1920))のビット消費またはレート損失(例えば、R(x’
0))、および初期入力画像(例えば、x
0)と最終入力画像の再構成画像(例えば、
)との間の差
に基づいて決定することができる。
画像訓練プロセス(例えば、反復更新)は、訓練損失(例えば、R-D損失L)が平坦化したとき、または平坦化しようとしているときに停止することができる。一例では、画像訓練プロセスは、訓練損失が第1の閾値を下回ると停止する。一例では、画像訓練プロセスは、2つの連続する訓練損失の差が第2の閾値を下回ると停止する。
2つのハイパーパラメータ(例えば、ステップサイズおよび最大ステップ数)を、訓練損失関数(例えば、R-D損失L)とともに画像訓練プロセスにおいて使用することができる。最大反復回数は、画像訓練プロセスを終了するための最大反復回数の閾値として使用することができる。一例では、画像訓練プロセスは、反復回数が最大反復回数に達したときに停止する。
図19Aを参照すると、画像訓練プロセスのエンコーディングプロセスにおいて、最終入力画像(例えば、x’
0)のコーディングされた表現(例えば、(1920))は、例えば、エンコーディングNN、および最終入力画像が初期入力画像(例えば、x
0)から反復更新の反復回数だけ更新された少なくとも1つの訓練モジュールによって、最終入力画像に基づいて生成することができる。画像訓練プロセスのデコーディングプロセスにおいて、最終入力画像の再構成画像(例えば、
)は、デコーディングNNによって最終入力画像のコーディングされた表現に基づいて生成することができる。
1つまたは複数の更新されたサンプル値を有する最終入力画像に対応するエンコーディングされた画像は、例えば、画像訓練プロセスの後にビデオエンコーダによって生成することができる。エンコーディングされた画像を含むコーディングされたビットストリームを生成することができる。一例では、エンコーディングされた画像はコーディングされたビットストリームで送信される。
画像訓練プロセスは、以下で詳細に説明することができる。反復更新を実行するために、図9のNICフレームワーク(900)などのNICフレームワークを使用することができる。図19Bは、本開示の一実施形態による、例示的なNICフレームワーク(1900B)を示す。画像訓練プロセスは、NICフレームワーク(1900B)を使用して実施することができる。NICフレームワーク(1900B)は、図9に記載されているメインエンコーダネットワーク(911)、メインデコーダネットワーク(915)、ハイパーエンコーダ(921)、ハイパーデコーダ(925)、コンテキストモデルNN(916)、およびエントロピーパラメータNN(917)のうちの1つまたは複数を含むことができる。NICフレームワーク(1900B)は、量子化器(912)を置き換えるノイズ注入モジュール、ならびにエントロピーエンコーダ(913)によって実行されるエントロピーエンコーディングおよびエントロピーデコーダ(914)によって実行されるエントロピーデコーディングをシミュレートすることができるエントロピーコーディングシミュレータを含むことができる。
反復更新を示すために、初期入力画像はx0として示され、最終入力画像はx’0として示される。反復更新は複数の反復を含み、各反復はi番目の反復として表され、iは1からKの正の整数範囲であり、Kは反復回数(例えば、反復更新が停止する前の反復の総数)を表す。例えば、K番目の反復で最終入力画像が生成される。1番目の反復では、1番目の入力画像は初期入力画像x0である。
i番目の反復は以下のように説明される。i番目の反復のエンコーディングプロセスでは、i番目の入力画像がメインエンコーダネットワーク(911)などのエンコーディングNNに供給され、i番目の入力画像のi番目の第1の表現を生成することができる。ノイズ注入モジュールによってi番目の第1の表現にノイズを加えて、i番目の第2の表現を生成することができる。i番目のコーディングされた表現は、エントロピーエンコーディングをシミュレートするエントロピーコーディングシミュレータによってi番目の第2の表現に基づいて生成することができる。
i番目の反復のデコーディングプロセスでは、エントロピーデコーディングをシミュレートするエントロピーコーディングシミュレータによって、i番目のコーディングされた表現からi番目の第3の表現を生成することができる。i番目の再構成画像は、i番目の第3の表現に基づいて、メインデコーダネットワーク(915)などのデコーディングNNによって生成することができる。
上述したように、NNベースの画像圧縮の訓練プロセスでは、量子化誤差を変分的に近似するために量子化をシミュレートするためノイズ注入を使用することができる。エントロピーコーディングシミュレータ(例えば、BPP推定器)は、エントロピーコーダをシミュレートするために使用することができる。したがって、i番目の反復について式1に示す損失関数Lにおけるレート損失Rは、例えば、ノイズ注入およびエントロピーコーディング推定器に基づいて推定することができる。R-D損失Lは、推定されたレート損失Rと歪み損失Dとの和として取得することができる。i番目の入力画像の訓練損失(例えば、R-D損失L)または(ii)反復更新の反復回数(例えば、i)が所定の条件を満たすかどうかを決定することができる。i番目の入力画像または(ii)反復更新の反復回数(例えば、i)の訓練損失が所定の条件を満たす場合、反復更新は停止し、i番目の入力画像は最終入力画像であると決定され、i番目の第1の提示は最終入力画像の第1の表現である。反復回数はiである。
i番目の入力画像の訓練損失も(ii)反復更新の反復回数(例えば、i)も所定の条件を満たさない場合、i番目の入力画像内の1つまたは複数のサンプル値に対する調整は、勾配(例えば、i番目の入力画像におけるサンプル値に対するR-D損失Lの勾配)およびステップサイズに基づいて決定することができる。反復更新は、最終入力画像に対する訓練損失または反復更新の反復回数が所定の条件を満たすまで、(i+1)番目の反復などに続く。
いくつかの例において、i番目の反復では、エントロピーモデルであるコンテキストモデルは、サブネットワーク(1952)を使用してi番目の第1の表現に基づいて決定される。サブネットワーク(1952)は、上述したように、第2のノイズ注入モジュールが量子化器(922)を置き換え、エントロピーエンコーディングおよびデコーディングをシミュレートすることができる第2のエントロピーコーディングシミュレータがエントロピーエンコーダ(923)およびエントロピーデコーダ(924)を置き換えることを除いて、第2のサブネットワーク(952)と同一または同様である。i番目のコーディングされた表現は、決定されたコンテキストモデルを用いたi番目の第2の表現に基づいて生成することができる。決定されたコンテキストモデルは、i番目の第1の表現に依存し、したがってi番目の入力画像に依存する。したがって、コンテキストモデルは、固定エントロピーモデルよりも正確であり得る。
ステップサイズは、画像訓練プロセスの学習レートを示すことができる。ステップサイズは、勾配降下アルゴリズムまたは画像訓練プロセスで実行される逆伝播計算で使用することができる。ステップサイズは、任意の適切な方法を使用して決定することができる。一実施形態では、最適な結果を達成するために、異なるタイプのコンテンツを伴う画像に対して異なるステップサイズが使用される。異なるタイプは異なる分散を指すことができる。一例では、ステップサイズは画像の分散に基づいて決定される。例えば、高い分散を有する画像のステップサイズは、低い分散を有する画像のステップサイズよりも大きく、高い分散は低い分散よりも大きい。
一実施形態では、第1のステップサイズを使用して、特定の回数(例えば、100)の反復を実行することができる。次に、第2のステップサイズ(例えば、第1のステップサイズプラスまたはマイナスのサイズ増分)を使用して、特定の反復回数を実行することができる。第1のステップサイズおよび第2のステップサイズからの結果を比較して、使用されるステップサイズを決定することができる。3つ以上のステップサイズを試験して、最適なステップサイズを決定することができる。
ステップサイズは、画像訓練プロセス中に変化し得る。ステップサイズは、画像訓練プロセスの開始時に初期値を有することができ、初期値は、例えば、より細かいチューニングを達成するために一定の反復回数の後に、画像訓練プロセスの後の段階で(例えば、半分)低減することができる。ステップサイズまたは学習レートは、反復画像訓練プロセス中にスケジューラによって変更することができる。スケジューラは、ステップサイズを調整するために使用されるパラメータ調整方法を含むことができる。スケジューラは、ステップサイズがいくつかの間隔で増加、減少、または一定のままであり得るように、ステップサイズの値を決定することができる。一例では、学習レートは、スケジューラによって各ステップで変更される。単一のスケジューラまたは複数の異なるスケジューラを異なる画像に使用することができる。したがって、複数のスケジューラに基づいて複数の最終入力画像を生成することができ、より良好な圧縮性能(例えば、より小さいR-D損失)を伴う複数の最終入力画像のうちの1つを選択することができる。
上述したように、1つまたは複数の更新されたサンプル値を有する最終入力画像x’0に対応するエンコーディングされた画像は、図19Cに示すようなビデオエンコーダによって生成することができる。図19Cは、本開示の一実施形態による、NICフレームワーク(900)に基づく例示的なエンコーディングプロセスを示す。図9を参照して、NICフレームワーク(900)内の構成要素について説明する。
最終入力画像の第1の表現は、メインエンコーダネットワーク(911)などのエンコーディングNNによって生成することができる。一例では、最終入力画像の第1の表現は、反復更新の最終反復(例えば、K番目の反復)で取得することができる。一例では、画像訓練プロセス(例えば、反復更新)の後、最終入力画像の第1の表現は、メインエンコーダネットワーク(911)によって最終入力画像に基づいて取得することができる。
第1の表現は、量子化器(912)によって量子化表現に量子化され得る。エンコーディングされた画像(例えば、(931))は、量子化表現に基づいて生成することができる。
量子化表現は、エンコーディングされた画像(931)にエントロピーエンコーディングすることができる。一例では、エントロピーエンコーディングは算術エンコーディングを含み、エントロピーエンコーダ(913)は算術エンコーダである。
一例では、コンテキストモデルは、図9を参照して説明したように、第2のサブネットワーク(952)を使用して最終入力画像の第1の表現に基づいて決定することができる。量子化表現は、決定されたコンテキストモデルに基づいてエンコーディングされた画像(931)にエントロピーエンコーディングすることができる。決定されたコンテキストモデルは、最終入力画像の第1の表現に依存し、したがって最終入力画像に依存する。したがって、コンテキストモデルは、固定エントロピーモデルよりも正確であり得る。
エンコーディングされた画像(931)は、コーディングされたビデオビットストリームで送信することができる。デコーダ側では、ビデオデコーダは、エンコーディングされた画像(931)をデコーディングすることによって最終入力画像の再構成画像を取得することができる。
反復更新で使用されるNICフレームワークは、任意のタイプのニューラルネットワークを含むことができ、コンテキスト・ハイパー・プライアー・エンコーダ-デコーダフレームワーク(例えば、図(9)に示すNICフレームワーク)、スケール・ハイパー・プライアー・エンコーダ-デコーダフレームワーク、ガウス混合尤度フレームワークおよびガウス混合尤度フレームワークの変形、RNNベースの再帰的圧縮方法およびRNNベースの再帰的圧縮方法の変形などの任意のニューラルネットワークに基づく画像圧縮方法を使用することができる。
上述したように、様々なコンテンツ適応型オンライン訓練プロセスを使用してR-D損失Lを改善することができる。例えば、NICフレームワークで使用される1つまたは複数の事前訓練されたパラメータは、圧縮される(例えば、エンコーディングされる)および/または送信される1つまたは複数の画像に基づいて訓練することができ、1つまたは複数の事前訓練されたパラメータのコンテンツ適応型オンライン訓練は、以下に説明するように、パラメータ訓練プロセス(例えば、オンラインパラメータ訓練プロセス)または微調整プロセスと呼ぶことができる。
いくつかの例では、圧縮(例えば、エンコーディングされる)および/または送信される1つまたは複数の画像は、訓練画像のセットとは著しく異なる特性を有する。したがって、訓練画像のセットに基づいて訓練されたビデオエンコーダおよびビデオデコーダをそれぞれ使用して1つまたは複数の画像を直接エンコーディングおよびデコーディングすることは、比較的貧弱なR-D損失L(例えば、比較的大きな歪みおよび/または比較的大きなビットレート)をもたらし得る。
訓練画像のセットに基づく訓練プロセスと、圧縮(例えば、エンコーディングされる)および/または送信されるべき1つまたは複数の画像に基づく1つまたは複数の事前訓練されたパラメータに対するコンテンツ適応型オンライン訓練プロセスとを区別するために、訓練画像のセットによって訓練されるNICフレームワーク(900)、ビデオエンコーダ、およびビデオデコーダは、それぞれ、事前訓練されたNICフレームワーク(900)、事前訓練されたビデオエンコーダ、および事前訓練されたビデオデコーダと呼ばれる。事前訓練されたNICフレームワーク(900)、事前訓練されたビデオエンコーダ、または事前訓練されたビデオデコーダ内のパラメータは、それぞれ、NIC事前訓練されたパラメータ、エンコーダ事前訓練されたパラメータ、およびデコーダ事前訓練されたパラメータと呼ばれる。一例では、NIC事前訓練されたパラメータは、エンコーダ事前訓練されたパラメータおよびデコーダ事前訓練されたパラメータを含む。一例では、エンコーダ事前訓練されたパラメータとデコーダ事前訓練されたパラメータとは重複せず、エンコーダ事前訓練されたパラメータのいずれもデコーダ事前訓練されたパラメータに含まれない。例えば、(1700)のエンコーダ事前訓練されたパラメータ(例えば、メインエンコーダネットワーク(911)内の事前訓練されたパラメータ)と(1800)のデコーダ事前訓練されたパラメータ(例えば、メインデコーダネットワーク(915)内の事前訓練されたパラメータ)は重複しない。一例では、エンコーダ事前訓練されたパラメータとデコーダ事前訓練されたパラメータとは重複し、エンコーダ事前訓練されたパラメータのうちの少なくとも1つがデコーダ事前訓練されたパラメータに含まれる。例えば、(1600A)のエンコーダ事前訓練されたパラメータ(例えば、コンテキストモデルNN(916)内の事前訓練されたパラメータ)と(1600B)のデコーダ事前訓練されたパラメータ(例えば、コンテキストモデルNN(916)内の事前訓練されたパラメータ)は重複する。NIC事前訓練されたパラメータは、訓練画像のセット内のブロックおよび/または画像に基づいて取得することができる。
事前訓練されたNICフレームワーク(900)内のNIC事前訓練されたパラメータ内の1つまたは複数の事前訓練されたパラメータは、エンコーディングおよび/または送信されるべき1つまたは複数の画像に基づいてさらに訓練する(例えば、微調整される)ことができ、1つまたは複数の画像は訓練画像のセットとは異なり得る。NIC事前訓練されたパラメータで使用される1つまたは複数の事前訓練されたパラメータは、1つまたは複数の画像に基づいて共同R-D損失Lを最適化することによって微調整することができる。1つまたは複数の画像によって微調整された1つまたは複数の事前訓練されたパラメータは、1つまたは複数の置換パラメータまたは1つまたは複数の微調整パラメータと呼ばれる。一実施形態では、NIC事前訓練されたパラメータ内の1つまたは複数の事前訓練されたパラメータが1つまたは複数の置換パラメータによって微調整(例えば、置き換えられる)された後、ニューラルネットワーク更新情報がビットストリームにエンコーディングされて、1つまたは複数の置換パラメータまたは1つまたは複数の置換パラメータのサブセットを示す。一例では、NICフレームワーク(900)が更新され(または微調整され)、1つまたは複数の事前訓練されたパラメータがそれぞれ1つまたは複数の置換パラメータによって置き換えられる。
第1のシナリオでは、1つまたは複数の事前訓練されたパラメータは、1つまたは複数の事前訓練されたパラメータの第1のサブセットおよび1つまたは複数の事前訓練されたパラメータの第2のサブセットを含む。1つまたは複数の置換パラメータは、1つまたは複数の置換パラメータの第1のサブセットおよび1つまたは複数の置換パラメータの第2のサブセットを含む。
1つまたは複数の事前訓練されたパラメータの第1のサブセットは、事前訓練されたビデオエンコーダで使用され、例えば訓練プロセスにおいて、1つまたは複数の置換パラメータの第1のサブセットによって置き換えられる。したがって、事前訓練されたビデオエンコーダは、訓練プロセスによって更新されたビデオエンコーダに更新される。ニューラルネットワーク更新情報は、1つまたは複数の置換パラメータの第2のサブセットを置き換えることになる1つまたは複数の置換パラメータの第2のサブセットを示すことができる。1つまたは複数の画像は、更新されたビデオエンコーダを使用してエンコーディングされ、ニューラルネットワーク更新情報を伴うビットストリームで送信され得る。
デコーダ側では、1つまたは複数の事前訓練されたパラメータの第2のサブセットが、事前訓練されたビデオデコーダにおいて使用される。一実施形態では、事前訓練されたビデオデコーダは、ニューラルネットワーク更新情報を受信してデコーディングし、1つまたは複数の置換パラメータの第2のサブセットを決定する。事前訓練されたビデオデコーダは、事前訓練されたビデオデコーダ内の1つまたは複数の事前訓練されたパラメータの第2のサブセットが1つまたは複数の置換パラメータの第2のサブセットによって置き換えられると、更新されたビデオデコーダに更新される。1つまたは複数のエンコーディングされた画像は、更新されたビデオデコーダを使用してデコーディングすることができる。
図16A~図16Bは、第1のシナリオの一例を示す。例えば、1つまたは複数の事前訓練されたパラメータは、事前訓練されたコンテキストモデルNN(916)内のN1個の事前訓練されたパラメータ、および事前訓練されたメインデコーダネットワーク(915)内のN2個の事前訓練されたパラメータを含む。したがって、1つまたは複数の事前訓練されたパラメータの第1のサブセットは、N1個の事前訓練されたパラメータを含み、1つまたは複数の事前訓練されたパラメータの第2のサブセットは、1つまたは複数の事前訓練されたパラメータと同一である。したがって、事前訓練されたコンテキストモデルNN(916)内のN1個の事前訓練されたパラメータは、事前訓練されたビデオエンコーダ(1600A)が更新されたビデオエンコーダ(1600A)に更新され得るように、N1個の対応する置換パラメータによって置き換えられ得る。事前訓練されたコンテキストモデルNN(916)も、更新されたコンテキストモデルNN(916)になるように更新される。デコーダ側では、N1個の事前訓練されたパラメータをN1個の対応する置換パラメータで置き換えることができ、N2個の事前訓練されたパラメータをN2個の対応する置換パラメータで置き換えることができ、事前訓練されたコンテキストモデルNN(916)を更新されたコンテキストモデルNN(916)に更新し、事前訓練されたメインデコーダネットワーク(915)を更新されたメインデコーダネットワーク(915)に更新する。したがって、事前訓練されたビデオデコーダ(1600B)は、更新されたビデオデコーダ(1600B)に更新することができる。
第2のシナリオでは、1つまたは複数の事前訓練されたパラメータのいずれも、エンコーダ側の事前訓練されたビデオエンコーダで使用されない。むしろ、1つまたは複数の事前訓練されたパラメータは、デコーダ側の事前訓練されたビデオデコーダで使用される。したがって、事前訓練されたビデオエンコーダは更新されず、訓練プロセス後に事前訓練されたビデオエンコーダになることに続く。一実施形態では、ニューラルネットワーク更新情報は、1つまたは複数の置換パラメータを示す。1つまたは複数の画像は、事前訓練されたビデオエンコーダを使用してエンコーディングされ、ニューラルネットワーク更新情報を伴うビットストリームで送信され得る。
デコーダ側では、事前訓練されたビデオデコーダは、ニューラルネットワーク更新情報を受信およびデコーディングして、1つまたは複数の置換パラメータを決定することができる。事前訓練されたビデオデコーダは、事前訓練されたビデオデコーダ内の1つまたは複数の事前訓練されたパラメータが1つまたは複数の置換パラメータによって置き換えられると、更新されたビデオデコーダに更新される。1つまたは複数のエンコーディングされた画像は、更新されたビデオデコーダを使用してデコーディングすることができる。
図16A~図16Bは、第2のシナリオの一例を示す。例えば、1つまたは複数の事前訓練されたパラメータは、事前訓練されたメインデコーダネットワーク(915)内のN2個の事前訓練されたパラメータを含む。したがって、1つまたは複数の事前訓練されたパラメータのいずれも、エンコーダ側の事前訓練されたビデオエンコーダ(例えば、事前訓練されたビデオエンコーダ(1600A))で使用されない。したがって、事前訓練されたビデオエンコーダ(1600A)は訓練プロセス後に事前訓練されたビデオエンコーダになることに続く。デコーダ側では、N2個の事前訓練されたパラメータをN2個の対応する置換パラメータで置き換えることができ、それは、事前訓練されたメインデコーダネットワーク(915)を更新されたメインデコーダネットワーク(915)に更新する。したがって、事前訓練されたビデオデコーダ(1600B)は、更新されたビデオデコーダ(1600B)に更新することができる。
第3のシナリオでは、1つまたは複数の事前訓練されたパラメータは、事前訓練されたビデオエンコーダで使用され、例えば訓練プロセスにおいて、1つまたは複数の置換パラメータによって置き換えられる。したがって、事前訓練されたビデオエンコーダは、訓練プロセスによって更新されたビデオエンコーダに更新される。1つまたは複数の画像は、更新されたビデオエンコーダを使用してエンコーディングされ、ビットストリームで送信され得る。ビットストリームには、ニューラルネットワーク更新情報はエンコーディングされていない。デコーダ側では、事前訓練されたビデオデコーダは更新されず、事前訓練されたビデオデコーダのままである。1つまたは複数のエンコーディングされた画像は、事前訓練されたビデオデコーダを使用してデコーディングすることができる。
図16A~図16Bは、第3のシナリオの一例を示す。例えば、1つまたは複数の事前訓練されたパラメータは、事前訓練されたメインエンコーダネットワーク(911)内にある。したがって、事前訓練されたメインエンコーダネットワーク(911)内の1つまたは複数の事前訓練されたパラメータは、事前訓練されたビデオエンコーダ(1600A)が更新されて更新されたビデオエンコーダ(1600A)になり得るように、1つまたは複数の置換パラメータで置き換えることができる。事前訓練されたメインエンコーダネットワーク(911)も、更新されたメインエンコーダネットワーク(911)になるように更新される。デコーダ側では、事前訓練されたビデオデコーダ(1600B)は更新されない。
第1、第2、および第3のシナリオで説明したような様々な例では、ビデオデコーディングは、事前訓練されたパラメータを更新する能力を有するおよび有さないデコーダを含む、異なる能力を有する事前訓練されたデコーダによって実行され得る。
一例では、圧縮性能は、事前訓練されたビデオエンコーダおよび事前訓練されたビデオデコーダを用いて1つまたは複数の画像をコーディングすることと比較して、更新されたビデオエンコーダおよび/または更新されたビデオデコーダを用いて1つまたは複数の画像をコーディングすることによって向上させることができる。したがって、コンテンツ適応型オンライン訓練方法を使用して、事前訓練されたNICフレームワーク(例えば、事前訓練されたNICフレームワーク(900))をターゲット画像コンテンツ(例えば、送信されるべき1つまたは複数の画像)に適応させることができ、こうして事前訓練されたNICフレームワークを微調整する。したがって、エンコーダ側のビデオエンコーダおよび/またはデコーダ側のビデオデコーダを更新することができる。
コンテンツ適応型オンライン訓練方法は、事前訓練されたE2E NIC圧縮方法の圧縮性能を高めるための前処理ステップ(例えば、事前エンコーディングステップ)として使用することができる。
一実施形態では、1つまたは複数の画像は単一の入力画像を含み、微調整プロセスは単一の入力画像を用いて実行される。NICフレームワーク(900)は、単一の入力画像に基づいて訓練および更新される(例えば、微調整される)。エンコーダ側の更新されたビデオエンコーダおよび/またはデコーダ側の更新されたビデオデコーダを使用して、単一の入力画像および任意選択的に他の入力画像をコーディングすることができる。ニューラルネットワーク更新情報は、エンコーディングされた単一の入力画像とともにビットストリームにエンコーディングすることができる。
一実施形態では、1つまたは複数の画像は複数の入力画像を含み、微調整プロセスは複数の入力画像を用いて実行される。NICフレームワーク(900)は、複数の入力画像に基づいて訓練および更新される(例えば、微調整される)。エンコーダ側の更新されたビデオエンコーダおよび/またはデコーダ側の更新されたデコーダを使用して、複数の入力画像および任意選択的に他の入力画像をコーディングすることができる。ニューラルネットワーク更新情報は、エンコーディングされた複数の入力画像とともにビットストリームにエンコーディングすることができる。
レート損失Rは、ビットストリーム内のニューラルネットワーク更新情報のシグナリングと共に増加する可能性がある。1つまたは複数の画像が単一の入力画像を含むとき、ニューラルネットワーク更新情報はエンコーディングされた画像ごとにシグナリングされ、レート損失Rの第1の増加は、画像ごとのニューラルネットワーク更新情報のシグナリングによるレート損失Rの増加を示すために使用される。1つまたは複数の画像が複数の入力画像を含むとき、ニューラルネットワーク更新情報は複数の入力画像に対してシグナリングされ、複数の入力画像によって共有され、レート損失Rの第2の増加は、画像ごとのニューラルネットワーク更新情報のシグナリングによるレート損失Rの増加を示すために使用される。ニューラルネットワーク更新情報は複数の入力画像によって共有されるため、レート損失Rへの第2の増加はレート損失Rへの第1の増加よりも小さくなり得る。したがって、いくつかの例では、複数の入力画像を使用してNICフレームワークを微調整することが有利であり得る。
一実施形態では、更新されるべき1つまたは複数の事前訓練されたパラメータは、事前訓練されたNICフレームワーク(900)の一構成要素内にある。したがって、事前訓練されたNICフレームワーク(900)の一方の構成要素は、1つまたは複数の置換パラメータに基づいて更新され、事前訓練されたNICフレームワーク(900)の他の構成要素は更新されない。
一構成要素は、事前訓練されたコンテキストモデルNN(916)、事前訓練されたエントロピーパラメータNN(917)、事前訓練されたメインエンコーダネットワーク(911)、事前訓練されたメインデコーダネットワーク(915)、事前訓練されたハイパーエンコーダ(921)、または事前訓練されたハイパーデコーダ(925)とすることができる。事前訓練されたビデオエンコーダおよび/または事前訓練されたビデオデコーダは、事前訓練されたNICフレームワーク(900)内のどの構成要素が更新されるかに応じて更新することができる。
一例では、更新されるべき1つまたは複数の事前訓練されたパラメータは事前訓練コンテキストモデルNN(916)内にあり、したがって事前訓練コンテキストモデルNN(916)は更新され、残りの構成要素(911)、(915)、(921)、(917)、および(925)は更新されない。一例では、エンコーダ側の事前訓練されたビデオエンコーダおよびデコーダ側の事前訓練されたビデオデコーダは、事前訓練されたコンテキストモデルNN(916)を含み、したがって、事前訓練されたビデオエンコーダおよび事前訓練されたビデオデコーダの両方が更新される。
一例では、更新されるべき1つまたは複数の事前訓練されたパラメータは事前訓練されたハイパーデコーダ(925)内にあり、したがって、事前訓練されたハイパーデコーダ(925)は更新され、残りの構成要素(911)、(915)、(916)、(917)、および(921)は更新されない。したがって、事前訓練されたビデオエンコーダは更新されず、事前訓練されたビデオデコーダは更新される。
一実施形態では、更新されるべき1つまたは複数の事前訓練されたパラメータは、事前訓練されたNICフレームワーク(900)の複数の構成要素内にある。したがって、事前訓練されたNICフレームワーク(900)の複数の構成要素は、1つまたは複数の置換パラメータに基づいて更新される。一例では、事前訓練されたNICフレームワーク(900)の複数の構成要素は、ニューラルネットワーク(例えば、DNN、CNN)で構成されたすべての構成要素を含む。一例では、事前訓練されたNICフレームワーク(900)の複数の構成要素は、CNNベースの構成要素、すなわち、事前訓練されたメインエンコーダネットワーク(911)、事前訓練されたメインデコーダネットワーク(915)、事前訓練されたコンテキストモデルNN(916)、事前訓練されたエントロピーパラメータNN(917)、事前訓練されたハイパーエンコーダ(921)、および事前訓練されたハイパーデコーダ(925)を含む。
上述したように、一例では、更新されるべき1つまたは複数の事前訓練されたパラメータは、事前訓練されたNICフレームワーク(900)の事前訓練されたビデオエンコーダ内にある。一例では、更新されるべき1つまたは複数の事前訓練されたパラメータは、NICフレームワーク(900)の事前訓練されたビデオデコーダ内にある。一例では、更新されるべき1つまたは複数の事前訓練されたパラメータは、事前訓練されたNICフレームワーク(900)の事前訓練されたビデオエンコーダおよび事前訓練されたビデオデコーダ内にある。
NICフレームワーク(900)は、ニューラルネットワークに基づくことができ、例えば、NICフレームワーク(900)内の1つまたは複数の構成要素は、CNN、DNNなどのニューラルネットワークを含むことができる。上述したように、ニューラルネットワークは、重み、バイアスなどの異なるタイプのパラメータによって指定することができる。NICフレームワーク(900)内の各ニューラルネットワークに基づく構成要素(例えば、コンテキストモデルNN(916)、エントロピーパラメータNN(917)、メインエンコーダネットワーク(911)、メインデコーダネットワーク(915)、ハイパーエンコーダ(921)、またはハイパーデコーダ(925))は、それぞれの重み、バイアス、または重みおよびバイアスの組み合わせなどの適切なパラメータで構成することができる。CNNが使用されるとき、重みは、畳み込みカーネル内の要素を含むことができる。1つまたは複数のタイプのパラメータを使用してニューラルネットワークを指定することができる。一実施形態では、更新されるべき1つまたは複数の事前訓練されたパラメータはバイアス項であり、バイアス項のみが1つまたは複数の置換パラメータによって置き換えられる。一実施形態では、更新されるべき1つまたは複数の事前訓練されたパラメータは重みであり、重みのみが1つまたは複数の置換パラメータによって置き換えられる。一実施形態では、更新されるべき1つまたは複数の事前訓練されたパラメータは、重みおよびバイアス項を含み、重みおよびバイアス項を含むすべての事前訓練されたパラメータは、1つまたは複数の置換パラメータによって置き換えられる。一実施形態では、他のパラメータを使用してニューラルネットワークを指定することができ、他のパラメータを微調整することができる。
微調整プロセスは複数の反復を含むことができ、1つまたは複数の事前訓練されたパラメータが反復微調整プロセスにおいて更新される。微調整プロセスは、訓練損失が平坦化したとき、または平坦化しようとしているときに停止することができる。一例では、訓練損失(例えば、R-D損失L)が第1のしきい値を下回ると、微調整プロセスが停止する。一例では、2つの連続する訓練損失の間の差が第2の閾値を下回ると、微調整プロセスが停止する。
オンライン画像訓練プロセスで上述したように、2つのハイパーパラメータ(例えば、ステップサイズおよび最大ステップ数)は、損失関数(例えば、R-D損失L)とともに微調整プロセスで使用することができる。最大反復回数は、微調整プロセスを終了するための最大反復回数の閾値として使用することができる。一例では、微調整プロセスは、反復回数が最大反復回数に達したときに停止する。ステップサイズの選択は、オンライン画像訓練プロセスにおいて上述されている。例えば、ステップサイズは、NICフレームワークを更新するために使用される画像の分散に基づいて決定することができる。
微調整プロセスの終わりに、それぞれの1つまたは複数の置換パラメータについて1つまたは複数の更新されたパラメータを計算することができる。一実施形態では、1つまたは複数の更新されたパラメータは、1つまたは複数の置換パラメータと対応する1つまたは複数の事前訓練されたパラメータとの間の差として計算される。一実施形態では、1つまたは複数の更新されたパラメータは、それぞれ1つまたは複数の置換パラメータである。
一実施形態では、1つまたは複数の更新されたパラメータは、例えば、特定の線形または非線形変換を使用して、1つまたは複数の置換パラメータから生成することができ、1つまたは複数の更新されたパラメータは、1つまたは複数の置換パラメータに基づいて生成された代表パラメータである。1つまたは複数の置換パラメータは、より良好な圧縮のために1つまたは複数の更新されたパラメータに変換される。
1つまたは複数の更新されたパラメータの第1のサブセットは、1つまたは複数の置換パラメータの第1のサブセットに対応し、1つまたは複数の更新されたパラメータの第2のサブセットは、1つまたは複数の置換パラメータの第2のサブセットに対応する。
一例では、1つまたは複数の更新されたパラメータは、例えば、レンペル・ジブ・マルコフ連鎖アルゴリズム(LZMA)の変形であるLZMA2、bzip2アルゴリズムなどを使用して圧縮することができる。一例では、1つまたは複数の更新されたパラメータに対して圧縮が省略される。いくつかの実施形態では、1つまたは複数の更新されたパラメータまたは1つまたは複数の更新されたパラメータの第2のサブセットは、ニューラルネットワーク更新情報としてビットストリームにエンコーディングすることができ、ニューラルネットワーク更新情報は、1つまたは複数の置換パラメータまたは1つまたは複数の置換パラメータの第2のサブセットを示す。
微調整プロセスの後、いくつかの例では、エンコーダ側の事前訓練されたビデオエンコーダは、(i)1つまたは複数の置換パラメータの第1のサブセット、または(ii)1つまたは複数の置換パラメータに基づいて更新または微調整することができる。入力画像(例えば、微調整プロセスで使用される1つまたは複数の画像のうちの1つ)は、更新されたビデオエンコーダを使用してビットストリームにエンコーディングすることができる。したがって、ビットストリームは、エンコーディングされた画像およびニューラルネットワーク更新情報の両方を含む。
適用可能であれば、一例では、ニューラルネットワーク更新情報は、1つまたは複数の更新されたパラメータまたは1つまたは複数の更新されたパラメータの第2のサブセットを取得するために、事前訓練されたビデオデコーダによってデコーディングされる(例えば、解凍される)。一例では、1つまたは複数の更新されたパラメータと前述の1つまたは複数の置換パラメータとの間の関係に基づいて、1つまたは複数の置換パラメータまたは1つまたは複数の置換パラメータの第2のサブセットを取得することができる。前述したように、事前訓練されたビデオデコーダは、微調整され得、デコーディングされた更新されたビデオが、エンコーディングされた画像をデコーディングするために使用され得る。
NICフレームワークは、任意のタイプのニューラルネットワークを含むことができ、コンテキスト・ハイパー・プライアー・エンコーダ-デコーダフレームワーク(例えば、図(9)に示すNICフレームワーク)、スケール・ハイパー・プライアー・エンコーダ-デコーダフレームワーク、ガウス混合尤度フレームワークおよびガウス混合尤度フレームワークの変形、RNNベースの再帰的圧縮方法およびRNNベースの再帰的圧縮方法の変形などの任意のニューラルネットワークに基づく画像圧縮方法を使用することができる。
関連するE2E画像圧縮方法と比較して、本開示におけるコンテンツ適応型オンライン訓練方法および装置は、以下の利点を有することができる。適応型オンライン訓練メカニズムは、NICコーディング効率を改善するために利用される。柔軟で一般的なフレームワークの使用は、様々なタイプの事前訓練されたフレームワークおよび品質メトリックに対応することができる。例えば、様々なタイプの事前訓練されたフレームワークにおける特定の事前訓練されたパラメータは、エンコーディングされて送信される画像を伴うオンライン訓練を使用することによって置き換えることができる。
画像訓練プロセスおよびパラメータ訓練プロセスは、任意の順序で組み合わせることができる。一実施形態では、画像訓練プロセスおよびパラメータ訓練プロセスは、順次適用される。例えば、パラメータ訓練プロセスは、NICフレームワーク内の1つまたは複数の事前訓練されたパラメータを更新し、したがってビデオエンコーダおよび/またはビデオデコーダを更新するために適用される。その後、画像訓練プロセスは、更新されたNICフレームワーク、更新されたビデオエンコーダ、および/または更新されたビデオデコーダを使用して入力画像を更新するために適用される。
一実施形態では、画像訓練プロセスおよびパラメータ訓練プロセスは同時に適用される。したがって、NICフレームワーク内の1つまたは複数の事前訓練されたパラメータおよび初期入力画像は、同じ反復更新で更新される。(i)初期入力画像内の1つまたは複数のサンプルの1つまたは複数のサンプル値、および(ii)NICフレームワーク内の1つまたは複数の事前訓練されたパラメータの反復更新は、最終入力画像のR-D損失Lまたは反復更新の反復回数が所定の条件を満たすまで実行することができる。
一例では、1つまたは複数の事前訓練されたパラメータの第1のサブセットで構成されたエンコーディングNN(例えば、メインエンコーダネットワーク(911))が更新される。最後の反復において、最終入力画像のコーディングされた表現は、1つまたは複数の事前訓練されたパラメータの第1のサブセットを置き換える置換パラメータで更新されたエンコーディングNNによって、最終入力画像に基づいて生成することができる。置換パラメータは、反復更新の反復回数だけ1つまたは複数の事前訓練されたパラメータの第1のサブセットから更新されている。
エンコーディングされた画像は、置換パラメータによって更新されたエンコーディングNNに基づいて最終入力画像から生成することができる。
一例では、1つまたは複数の事前訓練されたパラメータの第2のサブセットで構成されたデコーディングNN(例えば、メインデコーダネットワーク(915))は、置換パラメータで更新される。置換パラメータは、反復更新の反復回数によって1つまたは複数の事前訓練されたパラメータの第2のサブセットから決定されている。最後の反復では、最終入力画像の再構成画像は、デコーディングNNの置換パラメータで更新されたデコーディングNNによって、最終入力画像のコーディングされた表現に基づいて生成することができる。ビデオデコーダの置換パラメータを示すニューラルネットワーク更新情報を生成することができる。ニューラルネットワーク更新情報は、コーディングされたビットストリームに含めて送信することができる。
本開示で説明した画像訓練プロセスおよびパラメータ訓練プロセスは、入力が画像の代わりに1つまたは複数のブロックを含む場合にも適用することができる。本開示で説明した画像訓練プロセスおよびパラメータ訓練プロセスは、入力画像またはブロックが生データまたは残差データを含む場合に適用可能である。
図20は、本開示の一実施形態による、プロセス(2000)の概要を示すフローチャートを示している。プロセス(2000)は、生画像または残差画像などの画像をエンコーディングするために使用することができる。様々な実施形態では、プロセス(2000)は、端末デバイス(310)、(320)、(330)および(340)の処理回路、NICフレームワーク(例えば、NICフレームワーク(900)、(1900B))の機能を実行する処理回路、ビデオエンコーダ(1600A)または(1700)の機能を実行する処理回路などの処理回路によって実行される。一例では、処理回路は、(i)ビデオエンコーダ(403)、(603)、および(703)のうちの1つ、ならびに(ii)ビデオエンコーダ(1600A)およびビデオエンコーダ(1700)のうちの1つの機能の組み合わせを実行する。いくつかの実施形態では、プロセス(2000)はソフトウェア命令内に実装され、したがって、処理回路がソフトウェア命令を実行すると、処理回路はプロセス(2000)を実行する。(S2001)から処理を開始する。一例では、NICフレームワークはニューラルネットワークに基づいている。一例では、NICフレームワークは、図9を参照して説明したNICフレームワーク(900)またはフレームワーク(1900B)である。NICフレームワークは、図10~図15を参照して説明したように、CNNに基づくことができる。ビデオエンコーダ(例えば、(1600A)または(1700))は、前述したように、NICフレームワークに、複数の構成要素を含み得る。ニューラルネットワークに基づくNICフレームワークは事前訓練され、したがってビデオエンコーダは事前訓練される。プロセス(2000)は、(S2010)に進む。
(S2010)において、初期入力画像内の複数のサンプルのサンプル値の反復更新は、(i)最終入力画像に対するレート歪み損失L、または(ii)反復更新の反復回数のうちの1つが、図19A~図19Bを参照して説明したような所定の条件を満たすまで実行することができる。レート歪み損失Lは、最終入力画像のコーディングされた表現のビット消費Rおよび初期入力画像と最終入力画像の再構成画像との間の差(例えば、歪み損失D)に基づいて決定することができる。
反復更新は、エンコーディングNNおよび少なくとも1つの訓練モジュールによる最終入力画像に基づいて最終入力画像のコーディングされた表現を生成することを含むことができる。最終入力画像は、初期入力画像から反復更新の反復回数だけ更新されている。反復更新は、デコーディングNNによって最終入力画像のコーディングされた表現に基づいて最終入力画像の再構成画像を生成することを含み得る。
初期入力画像は、任意の適切なサイズを有する任意の適切な画像とすることができる。いくつかの例では、初期入力画像は、空間領域内である生画像、自然画像、コンピュータ生成画像などを含む。いくつかの例では、初期入力画像は、例えば、残差計算器(例えば、残差計算器(723))によって計算された空間領域内の残差データを含む。例えば、図7および図9を参照して、(S2010)を実現するために、様々な装置の構成要素を適切に組み合わせることができ、残差計算器からの残差データは、画像に組み合わされ、NICフレームワーク内のメインエンコーダネットワーク(911)に供給される。
(S2020)では、サンプル値が更新された最終入力画像に対応するエンコーディングされた画像は、図19A~図19Cを参照して上述したように、ビデオエンコーダによって生成することができる。
(S2030)では、エンコーディングされた画像を含むコーディングされたビットストリームを生成することができる。一例では、エンコーディングされた画像はコーディングされたビットストリームで送信される。プロセス(2000)は(S2099)に進み、終了する。
プロセス(2000)は様々なシナリオに適切に適合させることができ、プロセス(2000)のステップはそれに応じて調整することができる。プロセス(2000)のステップのうちの1つまたは複数は、適合させること、省略すること、繰り返すこと、および/または組み合わせることができる。プロセス(2000)を実施するために、任意の適切な順序を使用することができる。追加のステップを追加することができる。
本開示の実施形態は、別々に使用されてもよく、任意の順序で組み合わされてもよい。さらに、方法(または実施形態)の各々、エンコーダ、およびデコーダは、処理回路(例えば、1つ若しくは複数のプロセッサまたは1つ若しくは複数の集積回路)によって実施されてもよい。一例では、1つまたは複数のプロセッサは、非一時的コンピュータ可読媒体に記憶されたプログラムを実行する。
本開示は、ニューラルネットワークベースのエンコーダなどのエンコーダ、ニューラルネットワークベースのデコーダなどのデコーダに使用される方法にいかなる制限も課さない。エンコーダ、デコーダなどで使用されるニューラルネットワークは、DNN、CNNなどの任意の適切なタイプのニューラルネットワークとすることができる。
したがって、本開示のコンテンツ適応型オンライン訓練方法は、異なるタイプのNICフレームワーク、例えば、異なるタイプのエンコーディングDNN、デコーディングDNN、エンコーディングCNN、デコーディングCNNなどに対応することができる。
上記で説明された技術は、1つまたは複数のコンピュータ可読媒体に物理的に記憶された、コンピュータ可読命令を使用するコンピュータソフトウェアとして実施され得る。例えば、図21は、開示されている主題の特定の実施形態を実施するのに適したコンピュータシステム(2100)を示す。
コンピュータソフトウェアは、1つまたは複数のコンピュータ中央処理ユニット(CPU)およびグラフィック処理ユニット(GPU)などによって直接的に、または解釈およびマイクロコードの実行などを通して実行され得る命令を含むコードを作成するために、アセンブリ、コンパイル、リンキング、または同様のメカニズムを受け得る任意の適切な機械コードまたはコンピュータ言語を使用してコーディングされ得る。
命令は、例えばパーソナルコンピュータ、タブレットコンピュータ、サーバ、スマートフォン、ゲーム用デバイス、およびモノのインターネット・デバイスなどを含む様々なタイプのコンピュータまたはその構成要素上で実行され得る。
コンピュータシステム(2100)に関して図21に示されている構成要素は、本質的に例示であり、本開示の実施形態を実施するコンピュータソフトウェアの使用または機能の範囲に関する限定を示唆することを意図されていない。また、構成要素の構成は、コンピュータシステム(2100)の例示的な実施形態に示される構成要素のいずれか1つまたは組み合わせに関連する依存性または要件を有すると解釈されるべきではない。
コンピュータシステム(2100)は、特定のヒューマンインターフェース入力デバイスを含み得る。そのようなヒューマンインターフェース入力デバイスは、例えば、触覚入力(キーストローク、スワイプ、データグローブの動きなど)、音声入力(声、拍手など)、視覚入力(ジェスチャなど)、嗅覚入力(図示せず)を介した、1人または複数の人間のユーザによる入力に応答し得る。ヒューマンインターフェースデバイスを用いて、音声(発話、音楽、周囲音など)、画像(スキャン画像、静止画像カメラから取得される写真画像など)、ビデオ(2次元ビデオ、立体ビデオを含む3次元ビデオなど)など、人間による意識的な入力に必ずしも直接関係ない特定の媒体を取り込むこともできる。
入力ヒューマンインターフェースデバイスは、キーボード(2101)、マウス(2102)、トラックパッド(2103)、タッチスクリーン(2110)、データグローブ(図示せず)、ジョイスティック(2105)、マイクロフォン(2106)、スキャナ(2107)、カメラ(2108)のうちの1つまたは複数(各々のうちのただ1つ)を含んでもよい。
コンピュータシステム(2100)はまた、特定のヒューマンインターフェース出力デバイスを含み得る。そのようなヒューマンインターフェース出力デバイスは、例えば、触覚出力、音、光、および匂い/味によって1人または複数の人間のユーザの感覚を刺激し得る。このようなヒューマンインターフェース出力デバイスは、触覚出力デバイス(例えば、タッチスクリーン(2110)、データグローブ(図示せず)、またはジョイスティック(2105)による触覚フィードバックが含まれることがあるが、入力デバイスとして機能しない触覚フィードバックデバイスもあり得る)、オーディオ出力デバイス(スピーカ(2109)、ヘッドホン(図示せず)など)、視覚出力デバイス(CRTスクリーン、LCDスクリーン、プラズマスクリーン、OLEDスクリーンを含むスクリーン(2110)などであり、それぞれにタッチスクリーン入力機能が有っても無くてもよく、それぞれに触覚フィードバック機能が有っても無くてもよく、それらの一部は、ステレオグラフィック出力、仮想現実の眼鏡(図示せず)、ホログラフィックディスプレイおよびスモークタンク(図示せず)などの手段を通じて2次元視覚出力または3次元以上の出力が可能であり得る)およびプリンタ(図示せず)を含み得る。
コンピュータシステム(2100)はまた、CD/DVDなどの媒体(2121)を有するCD/DVD ROM/RW(2120)を含む光学媒体、サムドライブ(2122)、リムーバブルハードドライブまたはソリッドステートドライブ(2123)、テープおよびフロッピーディスクなどのレガシー磁気媒体(図示せず)、セキュリティドングルなどの専用ROM/ASIC/PLDベースのデバイス(図示せず)など、人間がアクセス可能な記憶デバイスおよびそれらの関連媒体を含むことができる。
当業者はまた、現在開示されている主題に関連して使用される「コンピュータ可読媒体」という用語が、伝送媒体、搬送波、または他の一時的な信号を包含しないことを理解するべきである。
コンピュータシステム(2100)はまた、1つまたは複数の通信ネットワーク(2155)へのインターフェース(2154)を含むことができる。ネットワークは、例えば、無線、有線、光であり得る。ネットワークはさらに、ローカル、ワイドエリア、メトロポリタン、車両および産業用、リアルタイム、遅延耐性などであり得る。ネットワークの例には、Ethernetなどのローカルエリアネットワーク、無線LAN、GSM、3G、4G、5G、LTEなどを含むセルラーネットワーク、ケーブルテレビ、衛星テレビおよび地上波テレビを含むテレビの有線または無線ワイドエリアデジタルネットワーク、CANBusを含む車両用および産業用などが含まれる。特定のネットワークは、一般に、特定の汎用データポートまたは周辺バス(2149)に取り付けられた外部ネットワークインターフェースアダプタ(例えば、コンピュータシステム(2100)のUSBポートなど)を必要とし、他のものは、一般に、後述するようなシステムバスへの取り付け(例えば、PCコンピュータシステムへのイーサネットインターフェースまたはスマートフォンコンピュータシステムへのセルラーネットワークインターフェース)によってコンピュータシステム(2100)のコアに統合される。これらのネットワークのいずれかを使用して、コンピュータシステム(2100)は、他のエンティティと通信することができる。そのような通信は、例えば、ローカルまたはワイドエリアデジタルネットワークを使用する他のコンピュータシステムに対して、単方向で受信のみ(例えば、放送TV)、単方向で送信のみ(例えば、特定のCANbusデバイスへのCANbus)、または双方向であり得る。特定のプロトコルおよびプロトコルスタックは、上記で説明したように、それらのネットワークおよびネットワークインターフェースのそれぞれで使用することができる。
前述のヒューマンインターフェースデバイス、ヒューマンアクセス可能な記憶デバイス、およびネットワークインターフェースを、コンピュータシステム(2100)のコア(2140)に取り付けることができる。
コア(2140)は、1つまたは複数の中央処理ユニット(CPU)(2141)、グラフィック処理ユニット(GPU)(2142)、フィールドプログラマブルゲートエリア(FPGA)(2143)の形態の専用プログラマブル処理ユニット、特定のタスク用のハードウェアアクセラレータ(2144)、グラフィックスアダプタ(2150)などを含むことができる。これらのデバイスは、読み取り専用メモリ(ROM)(2145)、ランダムアクセスメモリ(2146)、ユーザがアクセスすることができない内部ハードドライブ、SSDなどの内部大容量ストレージ(2147)と共に、システムバス(2148)を介して接続されてもよい。一部のコンピュータシステムでは、追加のCPU、GPUなどによる拡張を可能にするために、1つまたは複数の物理プラグの形式でシステムバス(2148)にアクセスすることができる。周辺デバイスを、コアのシステムバス(2148)に直接取り付けることも、周辺バス(2149)を介して取り付けることもできる。一例では、スクリーン(2110)をグラフィックスアダプタ(2150)に接続することができる。周辺バスのアーキテクチャは、PCI、USBなどを含む。
CPU(2141)、GPU(2142)、FPGA(2143)、およびアクセラレータ(2144)は、組み合わせて前述のコンピュータコードを構成できる特定の命令を実行できる。そのコンピュータコードは、ROM(2145)またはRAM(2146)に記憶され得る。過渡的なデータはまた、RAM(2146)に記憶され得、一方、永続データは、例えば内部大容量ストレージ(2147)に記憶され得る。メモリデバイスのいずれかへの高速記憶および取得は、1つまたは複数のCPU(2141)、GPU(2142)、大容量ストレージ(2147)、ROM(2145)、RAM(2146)などと密接に関連付けることができるキャッシュメモリの使用によって可能にすることができる。
コンピュータ可読媒体は、様々なコンピュータ実施動作を行うためのコンピュータコードを有することができる。媒体およびコンピュータコードは、本開示の目的のために特別に設計および構成されたものであってもよいし、またはコンピュータソフトウェア技術の当業者に周知の利用可能な種類のものであってもよい。
一例として、限定するものではないが、アーキテクチャ(2100)、具体的にはコア(2140)を有するコンピュータシステムは、1つまたは複数の有形のコンピュータ可読媒体に組み込まれたソフトウェアを実行するプロセッサ(CPU、GPU、FPGA、アクセラレータなどを含む)の結果として機能を提供することができる。そのようなコンピュータ可読媒体は、上述のようなユーザアクセス可能な大容量ストレージ、ならびにコア内部大容量ストレージ(2147)またはROM(2145)などの非一時的な性質のコア(2140)の特定のストレージに関連付けられた媒体とすることができる。本開示の様々な実施形態を実施するソフトウェアは、そのようなデバイスに記憶され、コア(2140)によって実行され得る。コンピュータ可読媒体は、特定の必要性に応じて、1つまたは複数のメモリデバイスまたはチップを含むことができる。ソフトウェアは、コア(2140)、具体的にはその中のプロセッサ(CPU、GPU、FPGAなどを含む)に、本明細書に記載の特定プロセスまたは特定プロセスの特定部分を実行させることができ、プロセスには、RAM(2146)に記憶されたデータ構造を定義すること、および、ソフトウェアによって定義されたプロセスに従ってそのようなデータ構造を修正することが含まれる。加えて、または代替として、コンピュータシステムは、結線接続されたまたは他の方法で回路(例えば、アクセラレータ(2144))に具現化された論理の結果として、機能を提供することができ、ソフトウェアの代わりに、またはソフトウェアとともに動作して、本明細書に記載の特定プロセスまたは特定プロセスの特定部分を実行することができる。ソフトウェアへの参照は、論理を包含することができ、適切な場合には逆もまた同様である。必要に応じて、コンピュータ可読媒体への言及は、実行のためのソフトウェアを記憶する回路(集積回路(IC)など)、実行のためのロジックを具体化する回路、またはこれらの両方を包含することができる。本開示は、ハードウェアとソフトウェアの任意の適切な組み合わせを包含する。
付記A:頭字語
JEM:共同探索モデル
VVC:多用途ビデオコーディング
BMS:ベンチマークセット
MV:動きベクトル
HEVC:高効率ビデオコーディング
SEI:補足エンハンスメント情報
VUI:ビデオユーザビリティ情報
GOP:グループオブピクチャ
TU:変換ユニット
PU:予測ユニット
CTU:コーディングツリーユニット
CTB:コーディングツリーブロック
PB:予測ブロック
HRD:仮想参照デコーダ
SNR:信号対雑音比
CPU:中央処理ユニット
GPU:グラフィックス処理ユニット
CRT:ブラウン管
LCD:液晶ディスプレイ
OLED:有機発光ダイオード
CD:コンパクトディスク
DVD:デジタルビデオディスク
ROM:読み出し専用メモリ
RAM:ランダムアクセスメモリ
ASIC:特定用途向け集積回路
PLD:プログラマブル論理デバイス
LAN:ローカルエリアネットワーク
GSM:グローバル移動体通信システム
LTE:ロングタームエボリューション
CANBus:コントローラエリアネットワークバス
USB:ユニバーサルシリアルバス
PCI:周辺構成要素相互接続
FPGA:フィールドプログラマブルゲートエリア
SSD:ソリッドステートドライブ
IC:集積回路
CU:コーディングユニット
NIC:ニューラル画像圧縮
R-D:レート歪み
E2E:エンドツーエンド
ANN:人工ニューラルネットワーク
DNN:ディープニューラルネットワーク
CNN:畳み込みニューラルネットワーク
本開示はいくつかの例示的な実施形態を説明してきたが、本開示の範囲内にある変更、置換、および様々な代替の等価物がある。したがって、当業者は、本明細書に明示的に示されていないまたは記載されていないが、本開示の原理を具体化し、したがってその趣旨および範囲内にある多数のシステムおよび方法を考案することができることが理解されよう。