以下の説明では、添付の図面を参照し、これらの図面は本開示の一部を形成し、例として、本発明の実施形態の特定の態様または本発明の実施形態が使用され得る特定の態様を示している。本発明の実施形態は他の態様で使用されてもよく、図に描写されていない構造的変更または論理的変更を含む場合もあることが理解される。したがって、以下の詳細な説明は、限定的な意味で解釈されるべきではなく、本発明の範囲は、添付の特許請求の範囲によって規定される。
例えば、記載の方法に関連する開示は、その方法を行うように構成された対応するデバイスまたはシステムにも当てはまる場合があり、その逆も同様であることが理解される。例えば、1つ以上の特定の方法ステップが記載されている場合、対応するデバイスは、記載された1つ以上の方法ステップを実行する1つ以上のユニット、例えば機能ユニット(例えば、1つ以上のステップを実行する1つのユニット、または複数のステップのうちの1つ以上をそれぞれ実行する複数のユニット)を、かかる1つ以上のユニットが明示的に記載されていないかまたは図面に示されていない場合であっても、含むことができる。一方、例えば、特定の装置が1つ以上のユニット、例えば機能ユニットに基づいて記載されている場合、対応する方法は、1つ以上のユニットの機能を実行する1つのステップ(例えば、1つ以上のユニットの機能を実行する1つのステップ、または複数のユニットのうちの1つ以上の機能をそれぞれ実行する複数のステップ)を、かかる1つ以上のステップが明示的に記載されていないかまたは図面に示されていない場合であっても、含むことができる。さらに、本明細書に記載された種々の例示的な実施形態および/または態様の特徴は、特に断りのない限り、互いに組み合わせられることができることが理解される。
一部の実施形態は、符号化および復号化されたピクチャまたはビデオデータの品質を改善すること、および/または符号化ピクチャまたはビデオデータを表すために必要とされるデータの量を低減することを目的とする。一部の実施形態は、エンコーダからデコーダにシグナリングされる情報の効率的な選択を提供する。以下では、本開示の実施形態が採用され得る、使用される技術用語およびフレームワークのうちの一部に関する概要が提供される。
人工ニューラルネットワーク
人工ニューラルネットワーク(ANN)またはコネクショニストシステムは、動物の脳を構成する生物の神経ネットワークから漠然と着想を得たコンピューティングシステムである。かかるシステムは、例を考慮することによってタスクを行うことを「学習」し、一般にタスク固有の規則でプログラムされることはない。例えば、画像認識では、それらは、「ネコ」または「ネコではない」と手動でラベル付けされている例示的な画像を解析し、その結果を使用して他の画像内のネコを識別することによって、ネコを含む画像を識別することを学習し得る。それらは、例えば、ネコは毛皮、尾、ひげ、およびネコのような顔を有するというネコの事前知識なしでこれを行う。代わりに、それらは、それらが処理する例から識別特性を自動的に生成する。
ANNは、生物の脳内のニューロンを大まかにモデル化する人工ニューロンと称される接続されたユニットまたはノードの集合に基づくものである。各接続は、生物の脳内のシナプスと同様に、他のニューロンに信号を送信することができる。信号を受信した人工ニューロンは、次いで信号を処理し、そのニューロンに接続されたニューロンにシグナリングすることができる。
ANN実装形態では、接続における「信号」は実数であり、各ニューロンの出力は、その入力の和の何らかの非線形関数によって計算される。この接続はエッジと称される。ニューロンおよびエッジは、学習が進むにつれて調整する重みを典型的には有する。重みは、接続における信号の強度を増減させる。ニューロンは、集約信号がその閾値を超える場合にのみ信号が送信されるような閾値を有し得る。典型的には、ニューロンは層に集約される。異なる層は、それらの入力に対して異なる変換を行い得る。信号は、場合によっては層を複数回トラバースした後に、最初の層(入力層)から最後の層(出力層)まで進む。
ANNのアプローチの当初の目標は、人間の脳が解決するのと同じ方法で問題を解決することであった。時間の経過とともに、特定のタスクを行うことに注意が移り、生物学からの逸脱につながった。ANNは、コンピュータビジョン、音声認識、機械翻訳、ソーシャルネットワークフィルタリング、ボードゲームおよびビデオゲーム、医療診断を含む様々なタスクに対して、さらには絵を描くことのような、人間だけのものであると従来見なされてきた活動においても使用されてきた。
「畳み込みニューラルネットワーク」(CNN)という名前は、このネットワークが畳み込みと称される数学演算を採用することを示している。畳み込みは、特殊な種類の線形演算である。畳み込みネットワークは、それらの層のうちの少なくとも1つにおいて一般的な行列乗算の代わりに畳み込みを使用するニューラルネットワークである。
図1は、CNNなどのニューラルネットワークによる処理の一般的な概念を模式的に示している。畳み込みニューラルネットワークは、入力層および出力層、ならびに複数の隠れ層から構成される。入力層は、入力(図1に示されるような画像の一部など)が処理のために提供される層である。CNNの隠れ層は、乗算または他のドット積で畳み込む一連の畳み込み層から典型的には構成される。層の結果は、チャネルと称されることもある1つ以上の特徴マップ(図1のf.map)である。層の一部または全部に関与するサブサンプリングが存在し得る。結果として、特徴マップは、図1に示されるように、より小さくなり得る。CNNにおける活性化関数は、通常、ReLU(正規化線形ユニット)層であり、その後に、プーリング層、全結合層、正規化層などの追加の畳み込みが続き、これらの入力および出力は活性化関数および最終的な畳み込みによってマスクされるため隠れ層と称される。層は口語的に畳み込みと称されるが、これは慣例によるものにすぎない。数学的には、それは技術的にはスライディングドット積または相互相関である。これは、特定のインデックスポイントで重みがどのように決定されるかに影響を及ぼすという点で、行列内のインデックスにとって重要である。
画像を処理するためのCNNをプログラムする場合、図1に示されるように、入力は、形状(画像数)×(画像幅)×(画像高さ)×(画像深度)を有するテンソルである。次いで、畳み込み層を通過した後、画像は、形状(画像数)×(特徴マップ幅)×(特徴マップ高さ)×(特徴マップチャネル)を有する特徴マップに抽象化される。ニューラルネットワーク内の畳み込み層は、以下の属性を有する必要がある。幅および高さによって定義される畳み込みカーネル(ハイパーパラメータ)。入力チャネルおよび出力チャネルの数(ハイパーパラメータ)。畳み込みフィルタの深度(入力チャネル)は、入力特徴マップの数チャネル(深度)に等しい必要がある。
過去には、従来の多層パーセプトロン(MLP)モデルが画像認識に使用されてきた。しかしながら、ノード間の全結合のために、MLPモデルは高い次元数に悩まされ、高解像度の画像とうまく対応しなかった。RGBカラーチャネルを有する1000×1000ピクセルの画像は300万の重みを有し、これは高すぎて、全結合で大規模に効率的に都合よく処理することができない。また、かかるネットワークアーキテクチャは、データの空間構造を考慮に入れず、遠く離れている入力ピクセルを、互いに近いピクセルと同じように扱う。これは、計算的にも意味的にも、画像データにおける参照の局所性を無視する。よって、空間的に局所的な入力パターンが優勢な画像認識などの目的には、ニューロンの全結合性は無駄である。
畳み込みニューラルネットワークは、視覚野の挙動をエミュレートするように特別に設計された多層パーセプトロンの生物学的に着想を得た変形である。これらのモデルは、自然画像に存在する強い空間的に局所的な相関を利用することによって、MLPアーキテクチャによってもたらされる課題を軽減する。畳み込み層は、CNNのコアビルディングブロックである。層のパラメータは、1組の学習可能なフィルタ(上記のカーネル)から構成され、これらは小さい受容野を有するが、入力ボリュームの全深度にわたって延在する。前方パスの間、各フィルタは入力ボリュームの幅および高さにわたって畳み込まれ、フィルタのエントリと入力との間のドット積を計算し、そのフィルタの2次元活性化マップを生成する。結果として、ネットワークは、入力内のある空間位置で何らかの特定のタイプの特徴を検出したときに活性化するフィルタを学習する。
深度次元に沿って全てのフィルタの活性化マップを積み重ねることが、畳み込み層の全出力ボリュームを形成する。よって、出力ボリューム内の全てのエントリは、入力内の小さい領域を見て、同じ活性化マップ内のニューロンとパラメータを共有するニューロンの出力として解釈されることもできる。特徴マップ、または活性化マップは、所与のフィルタの出力活性化である。特徴マップおよび活性化は同じ意味を有する。これは、いくつかの論文では、画像の異なる部分の活性化に対応するマッピングであるため活性化マップと称され、また、特定の種類の特徴が画像内のどこで見つかるかのマッピングでもあるため、特徴マップとも称される。高い活性化は、特定の特徴が見つかったことを意味する。
CNNの別の重要な概念がプーリングであり、これは非線形ダウンサンプリングの一形態である。プーリングを実装するためのいくつかの非線形関数があり、そのうち最大値プーリングが最も一般的である。最大値プーリングは、入力画像を1組の重なり合わない長方形に分割し、かかるサブ領域ごとに最大値を出力する。
直感的には、特徴の正確な位置は、他の特徴に対するその大まかな位置よりも重要ではない。これは、畳み込みニューラルネットワークにおけるプーリングの使用の背後にある概念である。プーリング層は、表現の空間サイズを漸進的に縮小し、ネットワーク内のパラメータの数、メモリフットプリント、および計算量を低減し、よって過剰適合も制御するのに役立つ。CNNアーキテクチャでは、連続する畳み込み層の間にプーリング層を周期的に挿入することが一般的である。プーリング演算は、別の形態の変換不変性を提供する。
プーリング層は、入力の深度スライスごとに独立して動作し、それを空間的にサイズ変更する。最も一般的な形態は、サイズ2×2のフィルタを有するプーリング層であり、幅と高さの両方に沿って2ずつ入力の深度スライスごとに2のストライドで適用され、活性化の75%を廃棄する。この場合、全ての最大値演算は4つの数にわたるものである。深度次元は不変のままである。最大値プーリングに加えて、プーリングユニットは、平均値プーリングまたはL2ノルムプーリングなどの他の関数を使用することもできる。平均値プーリングは従来よく使用されてきたが、しばしば実際によりうまく機能する最大値プーリングと比較して、最近では、好まれなくなっている。表現のサイズの積極的な縮小のために、より小さいフィルタを使用するか、またはプーリング層を完全に廃棄するという最近の傾向がある。「関心領域」プーリング(ROIプーリングとしても知られている)は、最大値プーリングの変形であり、出力サイズが固定されており、入力される長方形がパラメータである。プーリングは、高速R-CNNアーキテクチャに基づくオブジェクト検出のための畳み込みニューラルネットワークの重要な構成要素である。
上記のReLUは、正規化線形ユニットの略称であり、非飽和活性化関数を適用する。それは、負の値を0に設定することによって、活性化マップから負の値を効果的に除去する。それは、畳み込み層の受容野に影響を与えることなく、決定関数およびネットワーク全体の非線形特性を増加させる。他の関数、例えば飽和双曲線正接およびシグモイド関数も、非線形性を増加させるために使用される。ReLUは、一般化精度を著しく損なうことなくニューラルネットワークを数倍速く訓練するので、他の関数よりも好まれることが多い。
いくつかの畳み込み層および最大値プーリング層の後、ニューラルネットワークにおける高レベルの推論が全結合層を介して行われる。全結合層のニューロンは、通常の(非畳み込み)人工ニューラルネットワークに見られるように、前の層の全ての活性化に接続されている。よって、それらの活性化は、アフィン変換として計算されることができ、行列乗算の後にバイアスオフセット(学習または固定されたバイアス項のベクトル加算)が続く。
「損失層」(損失関数の計算を含む)は、訓練が予測(出力)ラベルと真のラベルとの間の偏差にどのようにペナルティを課すかを指定し、通常、ニューラルネットワークの最終層である。異なるタスクに適した様々な損失関数が使用され得る。ソフトマックス損失は、K個の相互排他的なクラスの単一のクラスを予測するために使用される。シグモイド交差エントロピー損失は、[0,1]におけるK個の独立した確率値を予測するために使用される。ユークリッド損失は、実数値ラベルに回帰するために使用される。
要約すると、図1は、典型的な畳み込みニューラルネットワークにおけるデータフローを示している。第1に、入力画像は、畳み込み層を通過され、この層の学習可能フィルタのセット内のフィルタの数に対応する複数のチャネルを含む特徴マップに抽象化される。次いで、特徴マップは、例えばプーリング層を使用してサブサンプリングされ、これは、特徴マップ内の各チャネルの次元を削減する。次に、データは、異なる数の出力チャネルを有し得る別の畳み込み層に到達する。上述したように、入力チャネルおよび出力チャネルの数は、層のハイパーパラメータである。ネットワークの接続性を確立するために、これらのパラメータは、現在の層の入力チャネルの数が前の層の出力チャネルの数に等しくなるように、2つの接続された層の間で同期される必要がある。入力データ、例えば画像を処理する第1の層に対して、入力チャネルの数は、データ表現のチャネルの数に通常等しく、例えば、画像またはビデオのRGBまたはYUV表現に対して3つのチャネル、またはグレースケール画像またはビデオ表現に対して1つのチャネルである。
オートエンコーダおよび教師なし学習
オートエンコーダは、教師なし方式で効率的なデータコーディングを学習するために使用される人工ニューラルネットワークの一種である。その概略図が図2に示されている。オートエンコーダの目的は、信号「ノイズ」を無視するようにネットワークを訓練することによって、典型的には次元数削減のために、データセットの表現(符号化)を学習することである。削減側とともに、再構成側が学習され、オートエンコーダは、削減された符号化から、その元の入力、よってその名前に可能な限り近い表現を生成しようと試みる。最も単純な場合、1つの隠れ層が与えられると、オートエンコーダのエンコーダステージは、入力xを取得し、それをhにマッピングする
h=σ(Wx+b)。
この画像hは、コード、潜在変数、または潜在表現と、通常称される。ここで、σは、シグモイド関数または正規化線形ユニットなどの要素ごとの活性化関数である。Wは重み行列であり、bはバイアスベクトルである。重みおよびバイアスは、ランダムに通常初期設定され、次いで、逆伝播を介して訓練中に反復的に更新される。その後、オートエンコーダのデコーダ段は、hをxと同じ形状の再構成x’にマッピングする:
x’=σ’(W’h’+b’)
ここで、デコーダのσ’、W’およびb’は、エンコーダの対応するσ、Wおよびbとは無関係であり得る。
変分オートエンコーダモデルは、潜在変数の分布に関して強い仮定を行う。それらは、潜在表現学習に変分アプローチを使用し、その結果、追加の損失成分および確率的勾配変分ベイズ(SGVB)推定量と称される訓練アルゴリズムのための特定の推定量が得られる。データは、有向グラフィカルモデルpθ(x|h)によって生成され、エンコーダが事後分布pθ(x|h)に対する近似qΦ(h|x)を学習していると仮定し、Φおよびθは、それぞれエンコーダ(認識モデル)およびデコーダ(生成モデル)のパラメータを表す。VAEの潜在ベクトルの確率分布は、標準的なオートエンコーダよりもはるかに近く訓練データの確率分布と典型的には一致する。VAEの目的は以下の形式を有する:
式中、DKLは、カルバック・ライブラー情報量を表す。潜在変数に対する事前分布は、中心等方性多変量ガウス分布pθ(h)=N(0,Ι)に、通常、設定される。一般に、変分分布および尤度分布の形状は、それらが因数分解されたガウス分布になるように選択される:
qΦ(h|x)=N(ρ(x),ω2(x)Ι)
pΦ(x|h)=N(μ(h),σ2(h)Ι)
式中、ρ(x)およびω2(x)はエンコーダ出力であり、μ(h)およびσ2(h)はデコーダ出力である。
人工ニューラルネットワーク分野、特に畳み込みニューラルネットワークにおける最近の進歩は、ニューラルネットワークに基づく技術を画像およびビデオ圧縮のタスクに適用するという研究者の関心を可能にする。例えば、変分オートエンコーダに基づくネットワークを使用するエンドツーエンド最適化画像圧縮が提案されている。
それに対応して、データ圧縮は、工学における基本的で十分に研究された問題と見なされており、最小のエントロピーで所与の離散データアンサンブルのためのコードを設計するという目的で、一般に定式化される。この解決策は、データの確率的構造の知識に大きく依拠しており、よって、問題は確率的ソースモデリングに密接に関連されている。しかしながら、全ての実際のコードは有限のエントロピーを有さなければならないため、連続値データ(画像ピクセル強度のベクトルなど)が離散値の有限集合に量子化されなければならず、これは誤差をもたらす。
これに関連して、非可逆圧縮問題として知られている、離散化表現のエントロピー(レート)と量子化から生じる誤差(歪み)という2つの競合するコストをトレードオフしなければならない。データストレージまたは限られた容量のチャネルを介した送信などの異なる圧縮用途は、異なるレート歪みのトレードオフを要求する。
レートと歪みの同時最適化は困難である。さらなる制約がなければ、高次元空間における最適量子化の一般的問題は扱いにくい。このため、ほとんどの既存の画像圧縮方法は、データベクトルを適切な連続値表現に線形変換し、その要素を独立して量子化し、次いで、得られた離散表現を、可逆エントロピーコードを使用して符号化することによって動作する。この方式は、変換の中心的な役割から変換コーディングと称される。
例えば、JPEGは、ピクセルのブロックに対して離散コサイン変換を使用し、JPEG2000は、マルチスケール直交ウェーブレット分解を使用する。典型的には、変換コーディング方法の3つの構成要素、変換、量子化、およびエントロピーコードは、(多くの場合手動パラメータ調整によって)別々に最適化される。HEVC、VVC、およびEVCのような最新のビデオ圧縮規格もまた、予測後に残差信号をコーディングするために変換された表現を使用する。離散コサイン変換および離散サイン変換(DCT、DST)、ならびに低周波数非分離可能手動最適化変換(LFNST)などの、いくつかの変換がその目的のために使用される。
変分画像圧縮
可変自動エンコーダ(VAE)フレームワークは、非線形変換コーディングモデルと見なされることができる。変換プロセスは、4つの部分に主に分けられることができる。これは、VAEフレームワークを示す図3Aに例示されている。
変換プロセスは、主に4つの部分に分割されることができ、図3Aは、VAEフレームワークを例示している。図3Aにおいて、エンコーダ101は、関数y=f(x)を介して入力画像xを(yによって示される)潜在表現にマッピングする。この潜在表現は、以下では「潜在空間」の一部または「潜在空間内の点」とも称され得る。関数f()は、入力信号xをより圧縮可能な表現yに変換する変換関数である。量子化器102は、量子化器関数を表すQを用いて、潜在表現yを
による(離散)値を有する量子化された潜在表現
に変換する。エントロピーモデルまたはハイパーエンコーダ/デコーダ(超事前としても知られる)103は、無損失エントロピーソースコーディングで達成可能な最小レートを得るために、量子化された潜在表現
の分布を推定する。
潜在空間は、類似のデータ点が潜在空間内で互いに近接している圧縮データの表現として理解されることができる。潜在空間は、データ特徴を学習し、解析のためのデータのより単純な表現を見つけるのに有用である。量子化された潜在表現T
、および超事前3のサイド情報
は、算術符号化(AE)を使用してビットストリーム2に含まれる(バイナリ化される)。さらに、量子化された潜在表現を再構成画像
に変換するデコーダ104が提供される。信号
は、入力画像xの推定である。xは、可能な限り
に近いこと、換言すれば、再構成の質が可能な限り高いことが望ましい。しかしながら、
とxとの間の類似性が高いほど、送信される必要があるサイド情報の量は多くなる。サイド情報は、図3Aに示されるビットストリーム1およびビットストリーム2を含み、これらはエンコーダによって生成され、デコーダに送信される。通常、サイド情報の量が多いほど、再構成品質は高くなる。しかしながら、サイド情報の量が多いことは、圧縮率が低いことを意味する。したがって、図3Aにおいて説明されるシステムの1つの目的は、再構成品質とビットストリームにおいて伝達されるサイド情報の量とのバランスをとることである。
図3Aでは、構成要素AE105は算術符号化モジュールであり、量子化された潜在表現
とサイド情報
のサンプルをバイナリ表現ビットストリーム1に変換する。
および
のサンプルは、例えば、整数または浮動小数点数を含み得る。算術符号化モジュールの1つの目的は、サンプル値を(バイナリ化のプロセスを介して)バイナリ数字のストリングに変換することである(これは、次いで、符号化された画像またはさらなるサイド情報に対応するさらなる部分を含み得るビットストリームに含まれる)。
算術復号化(AD)106は、バイナリ化処理を元に戻す処理であり、2進数がサンプル値に変換される。算術復号化は、算術復号化モジュール106によって提供される。
本開示は、この特定の枠組みに限定されないことに留意されたい。さらに、本開示は、画像またはビデオ圧縮に限定されず、オブジェクト検出、画像生成、および認識システムにも適用されることができる。
図3Aでは、互いに連結された2つのサブネットワークが存在する。この文脈におけるサブネットワークは、ネットワーク全体の部分間の論理的な分割である。例えば、図3Aにおいて、モジュール101、102、104、105および106は、「エンコーダ/デコーダ」サブネットワークと称される。「エンコーダ/デコーダ」サブネットワークは、第1のビットストリーム「ビットストリーム1」の符号化(生成)および復号化(解析)を担う。図3Aの第2のネットワークは、モジュール103、108、109、110および107を含み、「ハイパーエンコーダ/デコーダ」サブネットワークと称される。第2のサブネットワークは、第2のビットストリーム「ビットストリーム2」を生成する役割を担う。2つのサブネットワークの目的は異なる。
第1のサブネットワークは、
・入力画像xのその潜在表現yへの変換101(これはそのxを圧縮することがより容易である)、
・潜在表現yを量子化された潜在表現
に量子化すること(102)、
・ビットストリーム「ビットストリーム1」を取得するために算術符号化モジュール105によってAEを使用して量子化された潜在表現
を圧縮すること、
・算術復号化モジュール106を使用してADを介してビットストリーム1を解析すること、および
・解析されたデータを使用して、再構成画像
を再構成すること104を担う。
第2のサブネットワークの目的は、第1のサブネットワークによるビットストリーム1の圧縮がより効率的になるように、「ビットストリーム1」のサンプルの統計的特性(例えば、ビットストリーム1のサンプル間の平均値、分散および相関)を取得することである。第2のサブネットワークは、該情報(例えば、ビットストリーム1のサンプル間の平均値、分散および相関)を含む第2のビットストリーム「ビットストリーム2」を生成する。
第2のネットワークは、量子化された潜在表現
をサイド情報zに変換すること103と、サイド情報zを量子化されたサイド情報
に量子化することと、量子化されたサイド情報
をビットストリーム2に符号化(例えば、バイナリ化)すること109とを含む符号化部分を含む。この例では、算術符号化(AE)によりバイナリ化が行われる。第2のネットワークの復号化部分は、入力ビットストリーム2を復号化量子化サイド情報
に変換する算術復号化(AD)110を含む。算術符号化および復号化動作は可逆圧縮方法であるため、
は
と同一であってもよい。復号化量子化サイド情報
は、その後、復号化されたサイド情報
に変換される107。
は、
の統計的特性(例えば、
のサンプルの平均値、またはサンプル値の分散など)を表す。次に、復号化された潜在表現
は、
の確率モデルを制御するために、上述の算術エンコーダ105および算術デコーダ106に供給される。
図3Aは、VAE(変分オートエンコーダ)の例を説明し、その詳細は、異なる実装形態では異なり得る。例えば、特定の実装形態では、ビットストリーム1のサンプルの統計的特性をより効率的に取得するために、追加の構成要素が存在してもよい。1つのかかる実装形態では、ビットストリーム1の相互相関情報を抽出することをターゲットにするコンテキストモデラが存在し得る。第2のサブネットワークによって提供される統計情報は、AE(算術エンコーダ)105およびAD(算術デコーダ)106構成要素によって使用され得る。
図3Aは、エンコーダおよびデコーダを単一の図で示している。当業者に明らかなように、エンコーダおよびデコーダは、互いに異なるデバイスに埋め込まれてもよく、非常に頻繁に埋め込まれる。
図3Bは、エンコーダを示し、図3Cは、VAEフレームワークのデコーダ構成要素を分離して示している。入力として、エンコーダは、一部の実施形態によれば、ピクチャを受信する。入力ピクチャは、色チャネルまたは他の種類のチャネル、例えば、深度チャネルもしくは動き情報チャネルなどのような1つ以上のチャネルを含み得る。(図3Bに示されるような)エンコーダの出力は、ビットストリーム1およびビットストリーム2である。ビットストリーム1は、エンコーダの第1のサブネットワークの出力であり、ビットストリーム2は、エンコーダの第2のサブネットワークの出力である。
同様に、図3Cでは、2つのビットストリーム、すなわちビットストリーム1およびビットストリーム2が入力として受信され、再構成された(復号化された)画像である
が出力において生成される。上述したように、VAEは、異なるアクションを実行する異なる論理ユニットに分割されることができる。これは、図3Bおよび図3Cに例示されており、図3Bは、ビデオのような信号の符号化に関与し、符号化された情報を提供した構成要素を示している。この符号化された情報は、次いで、例えば、符号化のために、図3Cに示されるデコーダ構成要素によって受信される。符号12xおよび14xで示されるエンコーダおよびデコーダの構成要素は、それらの機能において、図3Aにおいて上述され符号10xで示される構成要素に対応し得ることに留意されたい。
具体的には、図3Bに見られるように、エンコーダは、入力xを信号yに変換するエンコーダ121を含み、信号yは次いで量子化器322に提供される。量子化器122は、算術符号化モジュール125およびハイパーエンコーダ123に情報を提供する。ハイパーエンコーダ123は、すでに上述したビットストリーム2をハイパーデコーダ147に提供し、次に、この情報を算術符号化モジュール105に提供する(125)。
算術符号化モジュールの出力はビットストリーム1である。ビットストリーム1およびビットストリーム2は、信号の符号化の出力であり、次いで、復号化プロセスに提供(送信)される。ユニット101(121)は「エンコーダ」と称されるが、図3Bで説明した完全なサブネットワークを「エンコーダ」と称することも可能である。符号化のプロセスは、概して、入力を符号化された(例えば、圧縮された)出力に変換するユニット(モジュール)を意味する。図3Bから見られるように、ユニット121は、入力xの圧縮バージョンであるyへの変換を実行するため、サブネットワーク全体のコアと、実際には見なされることができる。エンコーダ121における圧縮は、例えば、ニューラルネットワーク、または概して1つ以上の層を有する任意の処理ネットワークを適用することによって達成されてもよい。かかるネットワークでは、圧縮は、入力のチャネルのサイズおよび/または数を低減するダウンサンプリングを含むカスケード処理によって実行され得る。したがって、エンコーダは、例えば、ニューラルネットワーク(NN)ベースのエンコーダなどと称されることがある。
図中の残りの部分(量子化ユニット、ハイパーエンコーダ、ハイパーデコーダ、算術エンコーダ/デコーダ)は、符号化プロセスの効率を向上させるか、または圧縮された出力yを一連のビット(ビットストリーム)に変換することを担う全ての部分である。量子化は、不可逆圧縮によってNNエンコーダ121の出力をさらに圧縮するために提供されてもよい。AE125は、AE125を構成するために使用されるハイパーエンコーダ123およびハイパーデコーダ127と組み合わせて、量子化された信号を無損失圧縮によってさらに圧縮し得るバイナリ化を実行し得る。したがって、図3Bのサブネットワーク全体を「エンコーダ」と称することも可能である。
深層学習(DL)ベースの画像/ビデオ圧縮システムの大部分は、信号をバイナリディジット(ビット)に変換する前に、信号の次元を削減する。例えばVAEフレームワークでは、非線形変換であるエンコーダは、入力画像xをyにマッピングし、yはxよりも小さい幅および高さを有する。yはより小さい幅および高さ、したがってより小さいサイズを有するため、信号の次元(のサイズ)は削減され、したがって、信号yを圧縮することはより容易である。概して、エンコーダは、必ずしも両方の(または概して全ての)次元においてサイズを低減する必要はないことに留意されたい。そうではなく、一部の例示的な実装形態は、1つの次元(または概して、次元のサブセット)においてのみサイズを低減するエンコーダを提供し得る。
J.Balle,L.Valero Laparra,and E.P.Simoncelli(2015)。「Density Modeling of Images Using a Generalized Normalization Transformation」,In:arXiv e-prints,Presented at the 4th Int.Conf.for Learning Representations,2016(以下、「Balle」と称する)において、著者らは、非線形変換に基づく画像圧縮モデルのエンドツーエンド最適化のためのフレームワークを提案した。著者らは、平均二乗誤差(MSE)について最適化するが、線形畳み込みおよび非線形性のカスケードから構築されたより柔軟な変換を用いる。特に、著者らは、生物学的視覚系におけるニューロンのモデルによって着想され、ガウス化の画像密度において有効であることが証明されている、一般化分割正規化(GDN)結合非線形性を使用する。このカスケード変換に続いて、元の画像空間上でパラメトリック形式のベクトル量子化を効果的に実装する均一スカラ量子化(すなわち、各要素が最も近い整数に丸められる)が行われる。圧縮された画像は、近似パラメトリック非線形逆変換を用いて、これらの量子化された値から再構成される。
VAEフレームワークのかかる例は、図4に示されており、401~406でマークされた6つのダウンサンプリング層を利用する。ネットワークアーキテクチャは、超事前モデルを含む。左側(ga,gs)は、画像オートエンコーダアーキテクチャを示し、右側(ha,hs)は、超事前を実装するオートエンコーダに対応する。因数分解された事前モデルは、解析および合成変換gaおよびgsに同一のアーキテクチャを使用する。Qは量子化を表し、AE、ADはそれぞれ算術エンコーダ、算術デコーダを表す。エンコーダは、入力画像xにgaを受けさせ、空間的に変化する標準偏差を有する応答y(潜在表現)をもたらす。符号化gaは、サブサンプリングを有する複数の畳み込み層と、活性化関数として一般化分割正規化(GDN)とを含む。
応答はhaに供給され、zにおける標準偏差の分布を要約する。次いで、zは量子化され、圧縮され、サイド情報として送信される。次いで、エンコーダは、量子化ベクトル
を使用して、算術コーディング(AE)の確率値(または頻度値)取得するために使用される標準偏差の空間分布
を推定し、それを使用して量子化画像表現
(または潜在表現)を圧縮して送信する。デコーダは、圧縮された信号から
を最初に復元する。次に、hsを使用して、
を取得し、これは、
もうまく復元するための正しい確率推定値を提供する。次に、それは、gsに
を供給して再構成画像を取得する。
ダウンサンプリングを含む層は、層記述において下向きの矢印で示される。層記述「Conv Nx5x5/2↓」は、層がN個のチャネルを有する畳み込み層であり、畳み込みカーネルが5×5のサイズであることを意味する。上述したように、2↓は、この層において2倍のダウンサンプリングが実行されることを意味する。2倍のダウンサンプリングは、入力信号の次元の1つが出力において半分に削減されることをもたらす。図4において、2↓は、入力画像の幅と高さの両方が2分の1に縮小されることを示している。6つのダウンサンプリング層があるため、入力画像414(xでも示される)の幅および高さがwおよびhによって与えられる場合、出力信号z^413は、それぞれw/64およびh/64に等しい幅および高さを有する。AE、ADで示されるモジュールは、算術エンコーダ、算術デコーダであり、図3Aから図3Cを参照して説明される。算術エンコーダおよびデコーダは、エントロピーコーディングの特定の実装形態である。AEおよびADは、エントロピーコーディングの他の手段によって置き換えられることができる。情報理論では、エントロピー符号化は、シンボルの値を、復帰可能なプロセスであるバイナリ表現に変換するために使用される無損失データ圧縮方式である。また、図中の「Q」は、図4に関連して上述した量子化動作に対応し、「量子化」のセクションでさらに説明される。また、構成要素413または415の一部としての量子化演算および対応する量子化ユニットは、必ずしも存在するとは限らず、かつ/または別のユニットと置き換えられ得る。
図4には、アップサンプリング層407~412を含むデコーダも示されている。畳み込み層として実装されるが、受信された入力にアップサンプリングを提供しない入力の処理順序で、アップサンプリング層411と410との間にさらなる層420が提供される。対応する畳み込み層430もデコーダに対して示されている。かかる層は、入力のサイズを変更しないが、特定の特性を変更する入力に対する動作を実行するために、NN内に設けられることができる。ただし、かかる層が設けられる必要はない。
デコーダを通るビットストリーム2の処理順序で見られと、アップサンプリング層は、逆の順序で、すなわちアップサンプリング層412からアップサンプリング層407へと実行される。各アップサンプリング層は、ここでは、↑によって示される2のアップサンプリング比を有するアップサンプリングを提供するように示されている。もちろん、全てのアップサンプリング層が同じアップサンプリング比を有することは必ずしも必要ではなく、3、4、8などの他のアップサンプリング比が使用されてもよい。層407~412は、畳み込み層(conv)として実装される。具体的には、これらは、エンコーダの演算とは逆の演算を入力に対して提供することが意図され得るため、アップサンプリング層は、そのサイズがアップサンプリング比に対応する係数だけ増加されるように、受信された入力にデコンボリューション演算を適用し得る。しかしながら、本開示は、概して、デコンボリューションに限定されず、アップサンプリングは、2つの最近傍サンプル間の双線形補間によって、または最近傍サンプルコピーなどによって、任意の他の方法で実行され得る。
第1のサブネットワークでは、一部の畳み込み層(401~403)の後に、エンコーダ側では一般化分割正規化(GDN)が続き、デコーダ側では逆GDN(IGDN)が続く。第2のサブネットワークでは、適用される活性化関数はReLuである。本開示はかかる実装形態に限定されず、概して、GDNまたはReLuの代わりに他の活性化関数が使用され得ることに留意されたい。
エンドツーエンド画像またはビデオ圧縮
DNNベースの画像圧縮方法は、従来のアプローチでは使用されない大規模なエンドツーエンド訓練および高度に非線形の変換を利用することができる。しかしながら、ビデオ圧縮のためのエンドツーエンド学習システムを構築するためにこれらの技術を直接適用することは自明ではない。第1に、ビデオ圧縮のために調整された動き情報をどのように生成し、圧縮するかを学習することは未解決の問題のままである。ビデオ圧縮方法は、ビデオシーケンスにおける時間的冗長性を低減するために動き情報に大きく依存する。
直接的な解決策は、学習ベースのオプティカルフローを使用して動き情報を表すことである。しかしながら、現在の学習ベースのオプティカルフローアプローチは、可能な限り正確なフロー場を生成することを目的とする。正確なオプティカルフローは、しばしば、特定のビデオタスクに対して最適ではない。加えて、オプティカルフローのデータ量は、従来の圧縮システムにおける動き情報と比較して著しく増加し、オプティカルフロー値を圧縮するために既存の圧縮手法を直接適用することは、動き情報を記憶するために必要とされるビット数を著しく増加させることになる。第2に、残差情報と動き情報の両方についてレート歪みベースの目的を最小化することによってDNNベースのビデオ圧縮システムをどのように構築するかが不明である。レート歪み最適化(RDO)は、圧縮のためのビット数(またはビットレート)が与えられたとき、再構成されたフレームのより高い品質(すなわち、より少ない歪み)を達成することを目指す。RDOは、ビデオ圧縮性能にとって重要である。学習ベースの圧縮システムのためのエンドツーエンド訓練の能力を利用するために、RDO戦略は、システム全体を最適化することが必要とされる。
Guo Lu,Wanli Ouyang,Dong Xu,Xiaoyun Zhang,Chunlei Cai,Zhiyong Gao;“DVC:An End-to-end Deep Video Compression Framework”。Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition(CVPR),2019,pp.11006-11015において、著者らは、動き推定、動き圧縮、および残差コーディングを一緒に学習するエンドツーエンドの深層ビデオ圧縮(DVC)モデルを提案した。
かかるエンコーダが図5Aに示されている。特に、図5Aは、エンドツーエンドの訓練可能なビデオ圧縮フレームワークの全体構造を示している。動き情報を圧縮するために、オプティカルフローをより良好な圧縮に適した対応する表現に変換するようにCNNが指定された。具体的には、オートエンコーダ型ネットワークが使用されてオプティカルフローを圧縮する。動きベクトル(MV)圧縮ネットワークが図5Bに示されている。ネットワークアーキテクチャは、図4のga/gsに幾分類似している。特に、オプティカルフローは、GDNおよびIGDNを含む一連の畳み込み演算および非線形変換に供給される。畳み込み(デコンボリューション)のための出力チャネルの数は、2に等しい最後のデコンボリューション層を除いて128である。M×N×2のサイズを有するオプティカルフローが与えられると、MVエンコーダは、M/16×N/16×128のサイズを有する動き表現を生成する。次に、動き表現が量子化され、エントロピーコーディングされ、ビットストリームに送信される。MVデコーダは、量子化表現を受信し、MVエンコーダを使用して動き情報を再構成する。
図5Cは、動き補償部の構造を示している。ここで、前の再構成されたフレームxt-1および再構成された動き情報を使用して、ワーピングユニットは、(通常、双線形補間フィルタなどの補間フィルタの助けを借りて)ワープされたフレームを生成する。次いで、3つの入力を有する別個のCNNが、予測ピクチャを生成する。動き補償CNNのアーキテクチャも図5Cに示されている。
元のフレームと予測フレームとの間の残差情報は、残差エンコーダネットワークによって符号化される。高度に非線形のニューラルネットワークが使用されて、残差を対応する潜在表現に変換する。従来のビデオ圧縮システムにおける離散コサイン変換と比較して、このアプローチは、非線形変換の累乗をより良く利用し、より高い圧縮効率を達成することができる。
上記の概要から、CNNベースのアーキテクチャは、動き推定、動き補償、および残差コーディングを含むビデオフレームワークの異なる部分を考慮して、画像圧縮とビデオ圧縮の両方に適用され得ることが知見され得る。エントロピーコーディングは、データ圧縮に使用される一般的な方法であり、業界で広く採用されており、人間の知覚またはコンピュータビジョンタスクのいずれかのための特徴マップ圧縮にも適用可能である。
機械のビデオコーディング
機械のビデオコーディング(VCM)は、今日普及している別のコンピュータサイエンスの方向である。このアプローチの背後にある主な概念は、オブジェクトセグメンテーション、検出および認識のようなコンピュータビジョン(CV)アルゴリズムによるさらなる処理を対象とした画像またはビデオ情報のコーディング表現を送信することである。人間の知覚を対象とした従来の画像およびビデオコーディングとは対照的に、品質特性は、再構成された品質ではなく、コンピュータビジョンタスクの性能、例えばオブジェクト検出精度である。
最近の研究は、モバイルとクラウドとの間で深層モデルが分割される、協調インテリジェンスと称される新しい展開パラダイムを提案した。種々のハードウェア構成およびワイヤレス接続性モードの下での広範な実験により、エネルギー消費および/または計算レイテンシに関する最適な動作点が、通常はネットワーク内の深い点においてモデルを分割することを伴うことを明らかにした。モデルが完全にクラウド内に、または完全にモバイルに位置する今日の一般的なソリューションは、(あるとしても)めったに最適ではないことが分かった。協調インテリジェンスの概念は、モデル訓練にも拡張されている。この場合、データは、訓練におけるバックプロパゲーション中にクラウドからモバイルへ、および訓練におけるフォワードパス中にモバイルからクラウドへ、ならびに推論の両方の方法で流れる。
深層特徴データの不可逆圧縮は、オブジェクト検出のための最近の深層モデルのコンテキストにおいて、HEVCイントラコーディングに基づいて研究されてきた。圧縮レベルの増加に伴う検出性能の劣化が注目され、特徴値における量子化ノイズに対してよりロバストなモデルを生成することによってこの損失を最小化するための圧縮拡張訓練が提案された。しかしながら、採用されるコーデックは非常に複雑であり、深層特徴圧縮ではなく自然シーン圧縮のために最適化されているため、これは依然として次善の解決策である。
協調インテリジェンスのための深層特徴圧縮の問題は、圧縮効率性と認識精度のトレードオフの研究のために、一般的なYOLOv2ネットワークを使用するオブジェクト検出タスクのためのアプローチによって対処されてきた。ここで、深層特徴という用語は、特徴マップと同じ意味を有する。「深層」という単語は、何らかの隠れた(深)層の出力特徴マップが捕捉され、推論を実行するためにクラウドに転送されるときの協調インテリジェンスの概念に由来する。これは、圧縮された自然画像データをクラウドに送信し、再構成画像を使用してオブジェクト検出を実行するよりも効率的であると思われる。
特徴マップの効率的な圧縮は、人間の知覚およびマシンビジョンの両方のための画像およびビデオの圧縮および再構成に役立つ。圧縮への最新技術のオートエンコーダベースのアプローチの欠点は、マシンビジョンタスクにも有効である。
スキップ接続を有する人工ニューラルネットワーク
残差ニューラルネットワーク(ResNet)は、大脳皮質中の錐体細胞から知られている構築物上に構築される種類の人工ニューラルネットワーク(ANN)である。残差ニューラルネットワークは、一部の層を飛び越えるためにスキップ接続またはショートカットを利用することによってこれを行う。典型的なResNetモデルは、非線形性(ReLU)およびその間のバッチ正規化を含む二層または三層スキップを用いて実装される。スキップ重みを学習するために追加の重み行列が使用され得、これらのモデルはHighwayNetsとして知られている。複数の並列スキップを有するモデルは、DenseNetsと称される。残差ニューラルネットワークのコンテキストでは、非残差ネットワークは、プレーンネットワークとして説明され得る。
層をスキップする1つの動機は、隣接する層がその重みを学習するまで前の層からの活性化を再使用することによって、勾配の消失の問題を回避することである。訓練中、重みは、上流層をミュートし、前にスキップされた層を増幅するように適応する。最も単純なケースでは、隣接層の接続に対する重みだけが適応され、上流層に対する明示的な重みはない。これは、単一の非線形層がステップオーバーされるとき、または中間層が全て線形であるときに最も良く機能する。そうでない場合、スキップされた接続について明示的な重み行列が学習されるべきである(HighwayNetが使用されるべきである)。
スキップは、初期訓練段階においてより少ない層を使用して、ネットワークを効果的に簡略化する。これは、伝播する層がより少ないため、消失する勾配の影響を低減することによって学習を高速化する。次いで、ネットワークは、特徴空間を学習するにつれて、スキップされた層を徐々に復元する。訓練の終わりに向かって、全ての層が拡張されるとき、それは多様体により近いままであり、したがってより速く学習する。残差部分のないニューラルネットワークは、より多くの特徴空間を探索する。これは、それを多様体から離れさせる摂動に対してより脆弱にし、復元するために余分な訓練データを必要とする。
図6に示すように、より長いスキップ接続がUネットに導入された。U-Netアーキテクチャは、LongおよびShelhamerによって最初に提案された、いわゆる「完全畳み込みネットワーク」に由来する。主な概念は、プーリング演算がアップサンプリング演算子によって置き換えられる連続層によって通常の収縮ネットワークを補足することである。従って、これらの層は出力の解像度を増加させる。さらに、連続する畳み込み層は、次いで、この情報に基づいて正確な出力をアセンブルすることを学習することができる。
U-Netにおける1つの重要な変形例は、アップサンプリング部分に多数の特徴チャネルが存在することであり、これは、ネットワークがコンテキスト情報を高解像度層に伝播することを可能にする。結果として、膨張経路は、収縮経路に対して多かれ少なかれ対称であり、U字型アーキテクチャをもたらす。ネットワークは、全結合層なしに、各畳み込みの有効な部分のみを使用する。画像の境界領域内のピクセルを予測するために、入力画像をミラーリングすることによって、欠けているコンテキストが外挿される。このタイリング戦略は、ネットワークを大きな画像に適用するために重要であり、別様で解像度がGPUメモリによって制限されることになる。
スキップ接続を導入することで、異なる空間解像度の特徴をより良好に捕捉することが可能となり、これは、オブジェクト検出およびセグメンテーションなどのコンピュータビジョンタスクのために正常に適用される。しかしながら、画像またはビデオ圧縮のためにかかるスキップ接続を暗示することは、符号化側からの情報が通信チャネル中で転送される必要があり、層の直接接続は、相当量のデータが転送されることを必要とするため、簡単なタスクではない。
従来のハイブリッドビデオ符号化および復号化
ニューラルネットワークフレームワークはまた、後で例示されるように、従来のハイブリッド符号化および復号化と組み合わせて、またはその中で採用され得る。以下では、例示的なハイブリッド符号化および復号化に関して非常に簡潔な概要が与えられる。
図7Aは、本出願の技術を実装するように構成された例示的なビデオエンコーダ20の概略ブロック図を示している。図7Aの例では、ビデオエンコーダ20は、入力201(または入力インターフェース201)と、残差計算ユニット204と、変換処理ユニット206と、量子化ユニット208と、逆量子化ユニット210と、逆変換処理ユニット212と、再構成ユニット214と、ループフィルタユニット220と、復号化ピクチャバッファ(DPB)230と、モード選択ユニット260と、エントロピー符号化ユニット270と、出力272(または出力インターフェース272)とを含む。モード選択ユニット260は、インター予測ユニット244、イントラ予測ユニット254および分割ユニット262を含み得る。インター予測ユニット244は、動き推定ユニットと動き補償ユニット(図示せず)とを含み得る。図7Aに示されているビデオエンコーダ20は、ハイブリッドビデオエンコーダ、またはハイブリッドビデオコーデックによるビデオエンコーダと称されることもある。
エンコーダ20は、例えば入力201を介して、ピクチャ17(またはピクチャデータ17)、例えばビデオまたはビデオシーケンスを形成するピクチャのシーケンスのピクチャを受信するように構成されてもよい。受信されたピクチャまたはピクチャデータは、前処理されたピクチャ19(または前処理されたピクチャデータ19)であってもよい。簡単にするために、以下の説明ではピクチャ17を参照する。ピクチャ17は、(特に、現在のピクチャを他のピクチャ、例えば、同じビデオシーケンス、すなわち、現在のピクチャも含むビデオシーケンスの以前に符号化および/または復号化されたピクチャと区別するためにビデオコーディングにおいて)現在のピクチャまたはコーディングされるピクチャと称されることもある。
(デジタル)ピクチャは、強度値を有するサンプルの2次元アレイまたはマトリクスであるか、またはそのように見なされることができる。アレイ中のサンプルは、ピクセル(画素の短縮形)またはペルと称されることもある。アレイまたはピクチャの水平方向および垂直方向(または軸)におけるサンプルの数は、ピクチャのサイズおよび/または解像度を定義する。色の表現のために、典型的には、3つの色成分が採用され、すなわち、ピクチャは、3つのサンプルアレイを表され得るか、または含み得る。RGBフォーマットまたは色空間では、ピクチャは、対応する赤、緑および青のサンプルアレイを含む。しかしながら、ビデオコーディングでは、各ピクセルは、Yによって示される輝度成分(時々、Lも代わりに使用される)と、CbおよびCrによって示される2つのクロミナンス成分とを含む、輝度およびクロミナンスフォーマットまたは色空間、例えば、YCbCrで典型的には表される。輝度(または短いルーマ)成分Yは、(例えば、グレースケールピクチャにおけるような)明るさまたはグレーレベル強度を表し、2つのクロミナンス(または短いクロマ)成分CbおよびCrは、色度または色情報成分を表す。したがって、YCbCrフォーマットのピクチャは、輝度サンプル値(Y)の輝度サンプルアレイと、クロミナンス値(CbおよびCr)の2つのクロミナンスサンプルアレイとを含む。RGBフォーマットのピクチャは、YCbCrフォーマットに変換または転換されることができ、その逆も同様であり、このプロセスは、色変換または転換としても知られている。ピクチャがモノクロである場合、ピクチャは、輝度サンプルアレイのみを含み得る。したがって、ピクチャは、例えば、モノクロフォーマットにおけるルーマサンプルのアレイ、または4:2:0、4:2:2、および4:4:4カラーフォーマットにおけるルーマサンプルのアレイおよびクロマサンプルの2つの対応するアレイであり得る。
ビデオエンコーダ20の実施形態は、ピクチャ17を複数の(典型的には重複しない)ピクチャブロック203に分割するように構成されたピクチャ分割ユニット(図7Aに示されていない)を含み得る。これらのブロックは、ルートブロック、マクロブロック(H.264/AVC)またはコーディングツリーブロック(CTB)またはコーディングツリーユニット(CTU)(H.265/HEVCおよびVVC)と称されることもある。ピクチャ分割ユニットは、ビデオシーケンスの全てのピクチャに対して同じブロックサイズと、ブロックサイズを定義する対応するグリッドとを使用するように、またはピクチャもしくはピクチャのサブセットもしくはグループの間でブロックサイズを変更し、各ピクチャを対応するブロックに分割するように構成され得る。略語AVCは、アドバンスドビデオコーディングを表す。
さらなる実施形態では、ビデオエンコーダは、ピクチャ17のブロック203、例えば、ピクチャ17を形成する1つ、複数、または全てのブロックを直接受信するように構成され得る。ピクチャブロック203は、現在のピクチャブロックまたはコーディングされるピクチャブロックと称されることもある。
ピクチャ17と同様に、ピクチャブロック203は、ピクチャ17よりも小さい次元ではあるが、強度値(サンプル値)を有するサンプルの2次元アレイまたはマトリクスであるか、またはそのように見なされることができる。換言すれば、ブロック203は、適用されるカラーフォーマットに応じて、例えば、1つのサンプルアレイ(例えば、モノクロピクチャ17の場合はルーマアレイ、またはカラーピクチャの場合はルーマもしくはクロマアレイ)、または3つのサンプルアレイ(例えば、カラーピクチャ17の場合はルーマおよび2つのクロマアレイ)、または任意の他の数および/もしくは種類のアレイを含み得る。ブロック203の水平方向および垂直方向(または軸)におけるサンプルの数は、ブロック203のサイズを定義する。したがって、ブロックは、例えば、サンプルのM×N(M列×N行)アレイ、または変換係数のM×Nアレイであり得る。
図7Aに示されるようなビデオエンコーダ20の実施形態は、ブロックごとにピクチャ17を符号化するように構成され得、例えば、符号化および予測はブロック203ごとに実行される。
図7Aに示すビデオエンコーダ20の実施形態は、スライス(ビデオスライスとも称される)を使用してピクチャを分割および/または符号化するようにさらに構成され得、ピクチャは、1つ以上のスライス(典型的には重複しない)に分割されるか、またはそれを使用して符号化され得、各スライスは、1つ以上のブロック(例えば、CTU)を含み得る。
図7Aに示されるようなビデオエンコーダ20の実施形態は、タイルグループ(ビデオタイルグループとも称される)および/またはタイル(ビデオタイルとも称される)を使用してピクチャを分割および/または符号化するようにさらに構成され得、ピクチャは、1つ以上のタイルグループ(典型的には重複しない)に分割されるか、またはそれを使用して符号化され得、各タイルグループは、例えば、1つ以上のブロック(例えば、CTU)または1つ以上のタイルを含み得、各タイルは、例えば、長方形形状であり得、1つ以上のブロック(例えば、CTU)、例えば、完全ブロックまたは部分ブロックを含み得る。
図7Bは、本出願の技術を実装するように構成されたビデオデコーダ30の一例を示している。ビデオデコーダ30は、復号化ピクチャ331を取得するために、例えばエンコーダ20によって符号化された、符号化ピクチャデータ21(例えば、符号化ビットストリーム21)を受信するように構成される。符号化ピクチャデータまたはビットストリームは、符号化ピクチャデータを復号化するための情報、例えば、符号化ビデオスライス(および/またはタイルグループもしくはタイル)のピクチャブロックを表すデータと、関連するシンタックス要素とを含む。
エントロピー復号化ユニット304は、ビットストリーム21(または概して符号化ピクチャデータ21)を解析し、例えば符号化ピクチャデータ21に対してエントロピー復号化を実行して、例えば量子化係数309および/または復号化コーディングパラメータ(図3には図示せず)、例えばインター予測パラメータ(例えば参照ピクチャインデックスおよび動きベクトル)、イントラ予測パラメータ(例えばイントラ予測モードまたはインデックス)、変換パラメータ、量子化パラメータ、ループフィルタパラメータ、および/または他のシンタックス要素のいずれかまたは全てを取得するように構成される。エントロピー復号化ユニット304は、エンコーダ20のエントロピー符号化ユニット270に関して説明したような符号化方式に対応する復号化アルゴリズムまたは方式を適用するように構成され得る。エントロピー復号化ユニット304は、インター予測パラメータ、イントラ予測パラメータおよび/または他のシンタックス要素をモード適用ユニット360に与え、他のパラメータをデコーダ30の他のユニットに与えるようにさらに構成され得る。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。スライスおよびそれぞれのシンタックス要素に加えて、またはその代替として、タイルグループおよび/またはタイルおよびそれぞれのシンタックス要素が受信および/または使用され得る。
再構成ユニット314(例えば加算器または合計器314)は、例えば再構成された残差ブロック313のサンプル値と予測ブロック365のサンプル値とを加算することによって、再構成された残差ブロック313を予測ブロック365に加算して、サンプル領域における再構成されたブロック315を取得するよう構成されていてもよい。
図7Bに示されるようなビデオデコーダ30の実施形態は、スライス(ビデオスライスとも称される)を使用してピクチャを分割および/または復号化するように構成され得、ピクチャは、1つ以上のスライス(典型的には重複しない)に分割されるか、またはそれを使用して復号化され得、各スライスは、1つ以上のブロック(例えば、CTU)を含み得る。
図7Bに示すようなビデオデコーダ30の実施形態は、タイルグループ(ビデオタイルグループとも称される)および/またはタイル(ビデオタイルとも称される)を使用してピクチャを分割および/または復号化するように構成され得、ピクチャは、1つ以上のタイルグループ(典型的には重複しない)に分割されるか、またはそれを使用して復号化され得、各タイルグループは、例えば、1つ以上のブロック(例えば、CTU)または1つ以上のタイルを含み得、各タイルは、例えば、長方形形状であり得、1つ以上のブロック(例えば、CTU)、例えば、完全ブロックまたは部分ブロックを含み得る。
ビデオデコーダ30の他の変形形態が、符号化ピクチャデータ21を復号化するために使用され得る。例えば、デコーダ30は、ループフィルタリングユニット320を用いずに出力ビデオストリームを生成することができる。例えば、非変換ベースのデコーダ30は、一部のブロックまたはフレームについて、逆変換処理ユニット312なしに直接残差信号を逆量子化することができる。別の実装形態では、ビデオデコーダ30は、単一のユニットに組み合わされた逆量子化ユニット310と逆変換処理ユニット312とを有することができる。
エンコーダ20およびデコーダ30では、現在のステップの処理結果がさらに処理され、次いで、次のステップに出力され得ることを理解されたい。例えば、補間フィルタリング、動きベクトル導出、またはループフィルタリングの後に、クリップまたはシフトなどのさらなる動作が、補間フィルタリング、動きベクトル導出、またはループフィルタリングの処理結果に対して実行され得る。
コーディング効率の向上
上述したように、変分オートエンコーダアプローチに基づく画像およびビデオ圧縮方法は、現実のオブジェクト境界を捕捉するための空間適応処理およびオブジェクトセグメンテーションターゲティングがないことに悩まされている。したがって、コンテンツ適応性が制限される。さらに、動き情報または残差情報など、一部のタイプのビデオ情報の場合、シグナリングオーバーヘッドを妥当なレベルに保つために、スパース表現およびコーディングが望ましい。
したがって、本開示の一部の実施形態は、コンテンツ適応性ならびにスパース信号表現および送信を可能にするために、オートエンコーダの異なる空間解像度層からのセグメンテーション情報コーディングおよび特徴マップコーディングを導入する。
一部の例示的な実装形態では、ビットストリーム中で送信される、低解像度層(潜在空間)以外のエンコーダの層とデコーダの層との間に接続が導入される。一部の例示的な実装形態では、帯域幅を節約するために、異なる解像度層の特徴マップの一部のみがビットストリーム中に与えられる。例えば、異なる解像度層から特徴マップの一部を選択し、送信し、使用するために、信号選択および信号供給論理が導入される。受信機側では、前の解像度層からの出力を現在の解像度層に対応するビットストリームから受信された情報と組み合わせるテンソル組み合わせ論理が導入される。
以下では、エンコーダ側およびデコーダ側に関する一部の詳細な実施形態および例が提供される。
符号化方法およびデバイス
一実施形態によれば、ピクチャまたはビデオ処理のためのデータをビットストリームに符号化するための方法が提供される。かかる方法は、データを処理するステップを含み、データのこの処理は、複数のカスケード層において、特徴マップを生成することを含み、各特徴マップはそれぞれの解像度を含み、生成された特徴マップのうちの少なくとも2つの解像度は互いに異なる。
換言すれば、カスケード層のうちの2つ以上の解像度は、互いに異なり得る。ここで、層の解像度を参照するとき、意味することは、その層によって処理される特徴マップの解像度である。例示的な実装形態では、それは、層によって出力される特徴マップの解像度である。解像度を含む特徴マップは、特徴マップの少なくとも一部が該解像度を有することを意味する。一部の実装形態では、特徴マップ全体が同じ解像度を有し得る。特徴マップの解像度は、例えば、特徴マップ中の複数の特徴マップ要素によって与えられ得る。しかしながら、それは、1つ以上の次元(x、yなど、代替的または追加的に、チャネルの数が考慮され得る)における特徴マップ要素の数によってより具体的に定義されてもよい。
層という用語は、ここでは処理層を指す。それは、上述した一部のニューラルネットワークの層のような訓練可能なまたは訓練されたパラメータ(重み)を有する層である必要はない。むしろ、層は、層出力を取得するための層入力の特定の処理を表し得る。一部の実施形態では、層(複数可)は、訓練されてもよく、訓練可能であってもよい。ここでの訓練は、機械学習または深層学習を指す。
カスケード層を参照するとき、意味することは、層がある所定の順序(シーケンス)を有し、(該所与の順序での)第1の層への入力が、所与の順序に従って第1の層によって、次いでさらなる層によって順次処理されることである。換言すれば、層jの出力は層j+1の入力であり、jは1からカスケード層の総数までの整数である。特定の非限定的な例では、層j+1は、全ての可能なj値について層jと同じかまたはそれよりも低い解像度を含む(または有する)。換言すれば、層の解像度は、カスケード(処理順序)のシーケンス(順序)とともに(例えば、エンコーダ側で)増加しない。しかしながら、本開示は、かかる特定のカスケード層に限定されないことに留意されたい。一部の実施形態では、カスケード処理の層はまた、解像度を増加させる層を含んでもよい。いずれにしても、解像度を変化させない層があってもよい。
特徴マップの低解像度は、例えば、特徴マップごとのより少ない特徴要素を意味し得る。特徴マップの高解像度は、例えば、特徴マップごとにより多くの特徴要素を意味し得る。
方法は、複数の層の中から、最低解像度の特徴マップを生成する層とは異なる層を選択し、選択された層に関連する情報をビットストリームに挿入することを含むビットストリームを生成するステップをさらに含む。
換言すれば、カスケード内の全ての層による処理の結果をビットストリームに出力することに加えて(またはその代わりに)、別の(選択された)層への情報が提供される。1つ以上の選択された層があってもよい。選択された層に関連する情報は、層の出力または層の一部のセグメンテーション情報(後で論じる)などの任意の種類の情報、あるいは層によって処理される特徴マップおよび/または層によって実行される処理にも関連する他の情報とすることができる。換言すれば、一部の例では、情報は、特徴マップの要素および/または(層内の)特徴マップ内の要素の位置であり得る。
カスケード処理への入力は、ピクチャまたはビデオ処理のためのデータである。かかるデータは、例えば、インター予測またはイントラ予測などの予測コーディングに関係され得る。それは、動きベクトル、または予測モードもしくは参照ピクチャもしくは方向などの予測の他のパラメータ、または変換、フィルタリング、エントロピーコーディング、もしくは量子化などの予測とは別のコーディングの他の部分であり得る。ビットストリーム生成は、固定コードワード、可変長コード、または算術符号化を含む、値のビットへの任意の変換(バイナリ化)を含み得る。
ここで、ピクチャは、静止ピクチャまたはビデオピクチャであり得る。ピクチャは、カメラによって捕捉された、または例えばコンピュータグラフィックスなどによって生成されたサンプルなどの、1つ以上のサンプルを指す。ピクチャは、グレースケールで輝度レベルを表すサンプルを含むことができ、または輝度チャネル、クロミナンスチャネル(複数可)、深度チャネル、もしくは他のチャネルのうちの1つ以上を含む複数のチャネルを有することができる。ピクチャまたはビデオ符号化は、(例えば、HEVCまたはVVCなどと同様の)ハイブリッドコーディングまたは上記で説明されたオートエンコーダのいずれかであり得る。
図8は、上記の方法を示すフロー図である。したがって、本方法は、入力データを処理するステップ810を含む。処理されたデータから、選択ステップ820において一部が選択され、生成ステップ830においてビットストリームに含められる。処理ステップで生成される全てのデータがビットストリームに含まれる必要はない。
例示的な実装形態によれば、処理することは、カスケード層のうちの1つ以上によってダウンサンプリングすることをさらに含む。かかる処理を実装する(動作中に実行する)例示的なネットワーク900が図9に示される。
特に、図9は、ネットワーク900に入る画像またはビデオ処理901のための入力データを示している。画像またはビデオ処理のための入力データは、すでに上述したように、直接、画像(ピクチャ)またはビデオのサンプル、予測モード、動きベクトルなど、かかる処理のために使用される任意の種類のデータであり得る。入力901に適用される図9の処理は、複数の処理層911~913によって行われ、各処理層は、各動きベクトルアレイの解像度を低減する。すなわち、カスケード層911~913は、ダウンサンプリング層である。層は、ダウンサンプリング層と称されるとき、ダウンサンプリングを実行することに留意されたい。ダウンサンプリング層911~913が唯一のタスクとしてダウンサンプリングを実行する実施形態があり、ダウンサンプリング層911~913が唯一のタスクとしてダウンサンプリングを実行しない実施形態があってもよい。むしろ、ダウンサンプリング層は、概して他の種類の処理を実行することもできる。
図9に見られるように、ダウンサンプリング層911~913は、処理されたデータ入力および出力とは別に、信号選択論理920につながる追加の選択出力も有する。ここで、「論理」という用語は、機能(ここでは信号選択)を実装する任意の回路を指すことに留意されたい。信号選択論理920は、いずれかの層の選択出力から、ビットストリーム930に含まれる情報を選択する。図9の例では、各層911~913は、層入力をダウンサンプリングする。しかしながら、ダウンサンプリング層の間に、ダウンサンプリングを適用しない層が追加されてもよい。例えば、これらの層は、フィルタリングまたは他の動作によって入力を処理することができる。
図9に示される例において、信号選択論理920は、層911から913の出力から、ビットストリームに含まれる情報を選択する。この選択の目標は、異なる層によって出力された複数の特徴マップから、画像またはビデオを再構成することに関連する情報を選択することであり得る。換言すれば、ダウンサンプリング層および信号選択論理は、エンコーダ(ピクチャまたはビデオエンコーダ)の一部として実装されてもよい。例えば、エンコーダは、図3Aに示されるエンコーダ101、図3Bのエンコーダ121、MVエンコーダネット(図5Aのエンドツーエンド圧縮の一部)、図5BのMVエンコーダ、または図7Aによるエンコーダの一部(例えば、ループフィルタリング220またはモード選択ユニット260または予測ユニット244、254の一部)などであってもよい。
図9は、信号供給論理940およびアップサンプリング層951から953を含むデコーダ側部分(膨張経路と称されてもよい)をさらに含む。エンコーダ側の入力は、ビットストリーム930である。出力911は、例えば、再構成された入力901である。デコーダ側は、以下でより大きな遅延で説明される。
ダウンサンプリングは、例えば、最大(max)プーリング、平均プーリング、またはダウンサンプリングをもたらす任意の他の動作を介して行われ得る。かかる演算の別の例は、畳み込み演算を含む。図10Aは、最大プーリングの例を示している。この例では、アレイ1010の各(隣接する2×2の正方形)4つの要素がグループ化され、アレイ1020内の1つの要素を決定するために使用される。アレイ1020および1010は、本開示の一部の実施形態では特徴マップに対応し得る。しかしながら、アレイはまた、本実施形態の特徴マップの一部に対応してもよい。アレイ1020および1010中のフィールド(要素)は、特徴マップの要素に対応し得る。この図では、特徴マップ1020は、特徴マップ1010をダウンサンプリングすることによって決定される。アレイ1010および1020のフィールド内の数字は、単なる例示である。数の代わりに、フィールドは、例えば、動きベクトルを含んでもよい。図10Aに示す最大プーリングの例では、アレイ1010の左上の4つのフィールドがグループ化され、それらの値のうちの最大値が選択される。この値のグループは、このフィールドに該最大値を割り当てることによって、アレイ1020の左上フィールドを決定する。換言すれば、アレイ1010の4つの左上の値のうち最大のものが、アレイ1020の左上のフィールドに挿入される。
代替的に、一部の実装形態では、minプーリングが使用され得る。最小値プーリングでは、最大値を有するフィールドを選択する代わりに、最小値を有するフィールドが選択される。しかしながら、これらのダウンサンプリング技術は例にすぎず、種々のダウンサンプリング戦略が異なる実施形態において使用され得る。一部の実装形態は、異なる層において、特徴マップ内の異なる領域において、かつ/または異なる種類の入力データに対して、異なるダウンサンプリング技術を使用し得る。
一部の実装形態では、ダウンサンプリングは平均プーリングを用いて実行される。平均プーリングでは、特徴マップ要素のグループの平均が計算され、ダウンサンプリングされた特徴マップの特徴マップ内の対応するフィールドに関連付けられる。
平均プーリングの例が図10Bに示されている。この例では、特徴マップ1050の左上の特徴マップ要素が平均化され、特徴マップ1060の左上の要素がこの平均値をとる。図10Bの右上、右下、左下の3つのグループについても同様のものが示されている。
別の実施形態では、畳み込み演算が、層の一部または全部におけるダウンサンプリングのために使用される。畳み込みでは、フィルタカーネルが、入力特徴マップ内の要素のグループまたはブロックに適用される。カーネルは、それ自体、入力要素のブロックと同じサイズを有する要素のアレイであり得、カーネルの各要素は、フィルタ演算のための重みを記憶する。ダウンサンプリングでは、それぞれカーネルから取られた対応する値で重み付けされた、入力ブロックからの要素の和が計算される。カーネル中の全ての要素の重みが固定されている場合、かかる畳み込みは、上記で説明されたフィルタ演算に対応し得る。例えば、同一の固定された重みおよびカーネルのサイズのストライドを有するカーネルとの畳み込みは、平均プーリング演算に対応する。しかし、本実施形態で用いる畳み込みのストライドはカーネルサイズと異なっていてもよいし、重みが異なっていてもよい。一例では、カーネル重みは、入力特徴マップ中の一部の特徴が強調されるかまたは各々から区別され得るようなものであり得る。さらに、カーネルの重みは、学習可能であるか、または事前に学習され得る。
一実施形態によれば、選択された層に関連する情報は、その層の特徴マップの要素1120を含む。例えば、情報は、特徴マップ情報を伝達することができる。概して、特徴マップは、動きピクチャに関連する任意の特徴を含み得る。
図11は、特徴マップ1110が幅Wおよび高さHを有する動きベクトルの密なオプティカルフローで例示的な実装形態を示している。動きセグメンテーションネット1140は、(例えば、図9のダウンサンプリング層911~913に対応する)3つのダウンサンプリング層と、(例えば、信号選択論理920に対応する)信号選択回路(論理)1100とを含む。図11は、右側の収縮経路における異なる層の出力(L1~L3)の例を示している。
この例では、各層の出力(L1~L3)は、徐々に低い解像度を有する特徴マップである。L1への入力は、密なオプティカルフロー1110である。この例では、L1から出力される特徴マップの1つの要素は、密なオプティカルフロー1110の16(4×4)個の要素から決定される。L1出力(図11の右下)における各正方形は、密なオプティカルフローの16個の動きベクトルからのダウンサンプリング(downspl4)によって取得された動きベクトルに対応する。かかるダウンサンプリングは、例えば、上記で説明されたように、平均プーリングまたは別の演算であり得る。この例示的な実装形態では、その層の特徴マップL1の一部のみが情報1120に含まれる。層L1が選択され、選択された層に関連する4つの動きベクトル(特徴マップ要素)に対応する部分が、選択された情報1120内でシグナリングされる。
そして、第1の層の出力L1は、第2の層(downspl2)に入力される。第2の層の出力L2特徴マップ要素は、L1の4つの要素から決定される。しかしながら、他の例では、低解像度を有する特徴マップの各要素はまた、次に高い解像度を有する特徴マップの任意の他の数の要素から構成されるグループによって決定され得る。例えば、次の層内の1つの要素を決定するグループ内の要素の数は、任意の2の累乗であってもよい。この例では、出力L2特徴マップは、選択された情報1120にも含まれる3つの動きベクトルに対応し、したがって、第2の層も選択された層である。第3の層(downspl2)は、第2の層からの出力L2を、2つの次元の各々において2だけダウンサンプリングする。したがって、第3の層の出力L3の1つの特徴マップ要素は、L2の4つの要素に基づいて取得される。特徴マップL3では、要素はシグナリングされず、すなわち、第3の層は、この例では選択された層ではない。
動きセグメンテーションネット1140の信号選択モジュール1100は、上述の動きベクトル(第1および第2の層の出力からの特徴マップの要素)を選択し、それらをビットストリーム1150に提供する。この提供は、単純なバイナリ化であってもよく、エントロピーコーディングを含んでもよいが、含む必要はない。
要素のグルーブは、図11の例のように正方形形状に配置されてもよい。しかしながら、グループは、例えば、長方形のような任意の他の形状に配置されてもよく、長方形の長辺は、水平方向または垂直方向に配置されてもよい。これらの形状は単なる例である。実装形態では、任意の形状が使用され得る。この形状は、ビットストリーム1150内でもシグナリングされ得る。シグナリングは、どの特徴要素が形状に属し、どれが属さないかを示すフラグのマップによって実装され得る。代替的に、シグナリングは、形状のより抽象的な記述を使用して行われ得る。
この例示的な実装形態では、特徴マップ要素は、全ての要素が、次の層の特徴マップの1つの要素を決定する要素のちょうど1つのグループに属するようにグループ化される。換言すれば、特徴マップ要素グループは重複せず、1つのグループのみがより高い(カスケードされた処理順序において後の)層の特徴マップ要素に寄与する。しかしながら、1つの層の要素が次の層の2つ以上の要素に寄与し得ることが考えられる。換言すれば、処理810において、新しい層出力、例えば、層出力L2が、高解像度を有する層出力L1に基づいて生成されるとき、フィルタ演算が使用され得る。
本実施形態において、(例えば、信号選択1100による)選択820は、複数の出力特徴マップ(L1~L3)から、ビットストリームに含まれる要素を選択する。選択は、選択されたデータをシグナリングするために必要とされるデータの量が少ない一方で、復号化に関連する情報の量をできるだけ大きく保つように実装され得る。例えば、レート歪み最適化、または他の最適化が採用され得る。
上記の例は、3つの層による処理を示している。概して、本方法はこれに限定されない。任意の数の処理層(1つ以上)が採用されることができる。換言すれば、より一般化された例によれば、本方法は、符号化されるデータを取得することを含む。これは、上述したように、動きベクトルの密なフロー1110であってもよい。しかしながら、本開示はそれに限定されず、動きベクトルの代わりに、またはそれに加えて、予測モード、予測方向、フィルタリングパラメータ、またはさらには空間ピクチャ情報(サンプル)もしくは深度情報など、他のデータが処理され得る。
符号化されるデータの処理810は、この例では、複数のN個のカスケード層の各層jによる処理を含む。j番目の層による処理は、
-j=1の場合、符号化されるデータを層入力として取得し、そうでない場合、(j-1)番目の層によって処理された特徴マップを層入力として取得すること(すなわち、j番目の層が現在処理されている層である場合、j-1は先行する層である)と、
-取得された層入力を処理することであって、処理することは、ダウンサンプリングを含む、ことと、
-ダウンサンプリングされた特徴マップを出力することと、を含む。
この例では、j=1は、N個の処理層のうちの最高解像度層である。この層の入力は、密なオプティカルフロー(概して特徴マップとも見なされ得る)であってもよいことに留意されたい。したがって、一部の特定の実施形態では、j=1層は入力層であり得る。しかしながら、N個の処理層が一部の前処理層によって先行されることが考えられるため、これは必ずしも当てはまらない。典型的には、より早い処理層がより遅い処理層よりも高い解像度を有することがエンコーダの特徴である(収縮経路)。これは、デコーダ側で対応して逆にされることができる。処理層のうちの一部は、解像度を変更しないか、または解像度をさらに向上させないことが考えられるが、それでも本開示は適用可能であり得る。
上述の例では、ビットストリーム1150は選択された情報1120を搬送する。それは、例えば、動きベクトルまたは任意の他の特徴とすることができる。換言すれば、ビットストリーム1150は、処理ネットワーク(エンコーダ側処理ネットワーク)の出力層ではない少なくとも1つの層からの特徴マップ要素を搬送する。図11の実施例では、選択された特徴マップの一部のみがビットストリーム内で伝達される。この一部は、1つ以上の特徴要素を有する。特徴マップのどの部分が送信されるかをデコーダが決定することを可能にするために、決定のためのルールが定義され得る。一部の実施形態では、特徴マップのどの部分が伝達されるかを構成するために、セグメンテーション情報がビットストリーム1150中で伝達され得る。かかる例示的な実施形態が以下に説明される。しかしながら、上述の実施形態は例示的なものにすぎず、情報を導出し、他の既知のまたはシグナリングされたパラメータに依存するための規則があり得るため、概して、かかる追加のシグナリングは不要であることに留意されたい。
セグメンテーション情報に関連する例示的な実施形態では、選択された層に関連する情報は、(選択された情報1120に加えて、またはその代わりに)どの層から、かつ/またはその層の特徴マップのどの部分から、その層の特徴マップの要素が選択されたかを示す情報1130を含む。
図11に示す例では、セグメンテーション情報はバイナリフラグによって示されている。例えば、右側では、各低解像度特徴マップまたは特徴マップ部分に0または1のいずれかが割り当てられている。例えば、L3は、それが選択されず、動きベクトル(特徴要素)がL3のためにシグナリングされないため、ゼロ(0)を割り当てられている。特徴マップL2は、4つの部分を有する。層処理L2は、選択された層である。4つの部分のうちの3つの特徴マップ要素(動きベクトル)がシグナリングされ、それに対応して、フラグが1に設定される。特徴マップL2の残りの1つの部分は、動きベクトル(複数可)を含まず、したがって、その部分に対応する動きベクトルはL1特徴マップによって示されるため、フラグは0に設定される。L1は第1の層であるため、残りの動きベクトルがこの層において提供されることは暗黙的である。ここで、バイナリフラグは、対応する特徴マップ部分が部分選択情報であるときに第1の値(例えば、1)をとり、対応する特徴マップ部分が部分選択情報でないときに第2の値(例えば、0)をとることに留意されたい。これはバイナリフラグであるため、これら2つの値のうちの1つしか取ることができない。
かかるセグメンテーション情報は、ビットストリーム中で与えられ得る。図11の左側は、セグメンテーション情報1130の処理を示している。セグメンテーション情報1130は、動きセグメンテーションネット1140の層によっても処理され得ることに留意されたい。それは、特徴マップと同じ層または別の層で処理されてもよい。セグメンテーション情報1130は、次のように解釈されることもできる。最も低い解像度を有する層の1つのスーパーピクセルは、密なオプティカルフロー1110のdownspl4をダウンサンプリングすることによって取得された特徴マップの16×16セルをカバーする。16×16セルをカバーするスーパーピクセルに割り当てられたフラグは0に設定されるため、これは、特徴マップ要素(複数可)(ここでは動きベクトル)がこの層に対して示されない(層が選択されない)ことを意味する。したがって、特徴マップ要素は、それぞれが8×8の特徴要素のセルをカバーする4つの等しいサイズのスーパーピクセルによって表される、次の層の16×16のセルに対応するエリア内に示され得る。これら4つのスーパーピクセルの各々は、フラグに関連付けられる。値1を有するフラグに関連付けられたスーパーピクセルについて、特徴マップ要素(動きベクトル)がシグナリングされる。フラグが0に設定されたスーパーピクセルの場合、動きベクトルはシグナリングされない。シグナリングされていない動きベクトルは、4×4要素のセルをカバーするスーパーピクセルを有する層のためにシグナリングされる。
より概して言えば、ピクチャ/ビデオ復号化のためにデータを符号化するための方法は、ビットストリームに挿入するための(セグメンテーション)情報を選択することをさらに含み得る。この情報は、層j>1によって処理される特徴マップ内の第1の領域(スーパーピクセル)に関する。第1の領域は、複数の要素を含むjより小さい階層で符号化される特徴マップまたは初期データの領域に対応する。この方法は、層k(kは1以上の整数であり、k<jである)によって処理される特徴マップにおける選択から、第1の領域に対応する領域を選択から除外するステップをさらに含む。異なる層間の領域の対応は、本明細書では、対応する領域(スーパーピクセル)が、符号化される特徴マップ(初期データ)内の同じ特徴要素(初期データ要素)を空間的にカバーすることを意味する。図11の例では、セグメント化される初期データは、L1データである。しかし、密なオプティカルフロー1110を参照して対応付けを行ってもよい。
図11の特定の構成では、初期特徴マップ(例えばL1)の各特徴要素が、N個の層のうちの1つのみの1つのスーパーピクセルのみによってカバーされることが保証される。この構成は、セグメンテーション情報と同様に特徴マップを効率的にコーディングするという利点を提供する。カスケード層処理フレームワークは、ニューラルネットワーク処理フレームワークに対応し、このようにして、データをセグメンテーションし、異なる解像度を有する種々のセグメントのデータを提供するために使用されることができる。特に、層のうちの一部におけるダウンサンプリングの利点は、初期特徴マップの表現をシグナリングするために必要とされるデータの量を低減することを含み得る。具体的には、動きベクトルをシグナリングする例では、ダウンサンプリングにより、同様の動きベクトルのグループが1つの共通の動きベクトルによってシグナリングされ得る。しかしながら、動きベクトルをグループ化することによって生じる予測誤差は、良好なインター予測を達成するために小さくする必要がある。これは、ピクチャの異なるエリアについて、動きベクトルをグループ化する異なるレベルが、所望の予測品質を達成するために最適であり得、同時に、動きベクトルをシグナリングするために少量のデータを必要とすることを意味し得る。これは、異なる解像度を有する複数の層を使用して達成され得る。
特徴マップ要素が動きベクトルである一実施形態では、動きベクトルの長さおよび方向は、ダウンサンプリングの目的で平均化されてもよく、平均化された動きベクトルは、ダウンサンプリングされた特徴マップの対応する特徴マップ要素に関連付けられる。通常の平均化では、ダウンサンプリングされた特徴マップ内の1つの要素に対応する要素のグループの全ての要素は、同じ重みを有する。これは、等しい重みを有するフィルタを要素のグループまたはブロックに適用して、ダウンサンプリングされた特徴マップ要素を計算することに対応する。しかしながら、他の実装形態では、かかるフィルタは、層入力における異なる要素に対して異なる重みを有し得る。他の実装形態では、ダウンサンプリングにおける要素のグループまたはブロックの平均を計算する代わりに、それぞれの要素のグループの中央値が計算され得る。
図11の例では、ダウンサンプリングフィルタ演算は、入力要素のサイズ2×2の正方形形状を有するフィルタを使用し、選択されたフィルタ演算に応じて、ダウンサンプリングされた特徴マップ内の1つの要素にマッピングされるフィルタ出力を計算する。フィルタ演算は、エッジ長または正方形フィルタに等しい2のストライドを使用する。これは、2つのフィルタリング動作の間に、フィルタがフィルタと同じサイズのストライドだけ移動されることを意味する。結果として、ダウンサンプリングにおいて、ダウンサンプリングされた要素は、ダウンサンプリングフィルタが適用される層内の重なり合わないブロックから計算される。
しかしながら、一部のさらなる考えられる実施形態では、ストライドは、フィルタのエッジ長とは異なり得る。例えば、ストライドは、フィルタのエッジの長さより小さくてもよい。その結果、ダウンサンプリングされた層内の要素を決定するために使用されるフィルタブロックは重複することがあり、これは、ダウンサンプリングされる特徴マップからの1つの要素が、ダウンサンプリングされた特徴マップ内の2つ以上の要素の計算に寄与することを意味する。
概して、選択された層に関連するデータは、選択された層の特徴マップ内の特徴マップ要素の位置の指示を含む。ここで、図11(特徴マップL1~L3)の概念と同様に、選択された層の特徴マップは、選択された層からの出力、すなわち、選択された層によって処理された特徴マップを指す。
例えば、選択された特徴マップ要素および選択されていない特徴マップ要素の位置は、ビットストリーム内のフラグの位置に基づく複数のバイナリフラグによって示される。図11を参照する上記の説明では、バイナリフラグはセグメンテーション情報1130としてビットストリーム1150に含まれる。デコーダがセグメンテーション情報を解析し、正しく解釈することを可能にするために、フラグと、層および/または層によって処理される特徴マップ内のエリアとの間の割り当てが定義されるべきである。これは、エンコーダとデコーダの両方に知られているフラグをバイナリ化する順序を定義することによって行われることができる。
上記の例は、動きベクトルであるピクチャ/ビデオを符号化する際に使用されるデータに対して提供された。しかしながら、本開示は、かかる実施形態に限定されない。一実施形態では、符号化されるデータは、画像情報および/または予測残差情報および/または予測情報を含む。ここで、画像情報とは、原画像(またはコーディング対象画像)のサンプル値を意味する。サンプル値は、1つ以上の色または他のチャネルのサンプルであり得る。
選択された層に関する情報は、必ずしも動きベクトルまたはスーパーピクセルの動きベクトルである必要はない。追加または代替として、一部の実施形態では、情報は予測情報を含む。予測情報は、参照インデックスおよび/または予測モードを含み得る。例えば、参照インデックスは、参照ピクチャセットからのどの特定のピクチャがインター予測のために使用されるべきかを示してもよい。インデックスは、予測される現在ブロックが位置される現在画像に対して相対的であり得る。予測モードは、例えば、単一または複数の参照フレームを使用するかどうか、および/または組み合わされたイントラ-インター予測などの異なる予測の組み合わせを使用するかどうかを示すことができる。
それにもかかわらず、符号化されるデータが動きベクトルフィールドである場合、効率的な動きベクトルフィールドコーディングおよび再構成が達成され得る。動きフィールドのかかる符号化および復号化を実行し得るデバイスの対応する一般的なブロック方式が、図12に示されている。符号化側では、動き情報は、何らかの動き推定またはオプティカルフロー推定モジュール(ユニット)1210を用いて取得される。動きベクトル(オプティカルフロー)推定への入力は、現在のピクチャおよび(参照ピクチャバッファに記憶された)1つ以上の参照ピクチャである。図12において、ピクチャは、ビデオのピクチャに対して時々使用される用語である「フレーム」と称される。オプティカルフロー推定ユニット1210は、オプティカルフロー1215を出力する。異なる実装形態では、動き推定ユニットは、例えば、何らかのN×Nブロックについて、または密なオプティカルフローと称されることがある元の解像度の各ピクセルについて、すでに異なる空間解像度を有する動き情報を出力することができる。動きベクトル情報は、復号化側に送信され(ビットストリーム1250に埋め込まれ)、動き補償に使用されることが意図されている。動き補償された領域を取得するために、領域の各ピクセルは、定義された動きベクトルを有するべきである。元の解像度のピクセルごとに動きベクトル情報を送信することは、費用が高すぎる場合がある。シグナリングオーバーヘッドを低減するために、動き指定(またはセグメンテーション)モジュール1220が使用される。復号化側の対応するモジュール1270は、動き生成(高密度化)タスクを実行して、動きベクトルフィールド1275を再構成する。動き指定(またはセグメンテーション)モジュール1220は、動き情報(例えば、動きベクトル、および/または場合によっては参照ピクチャ)およびセグメンテーション情報を出力する。この情報は、ビットストリームに追加(符号化)される。
この実施形態では、動きセグメンテーションユニット1220および動き生成ユニット1270は、図13に示されるように、ダウンサンプリング層dwnsplおよび対応するアップサンプリング層upsplのみを含む。最近傍法は、ダウンサンプリングおよびアップサンプリングに使用されることができ、平均プーリングは、ダウンサンプリングに使用されることができる。異なる空間解像度の層からの特徴マップデータは、エンコーダによって選択され、選択された情報1120をどのように解釈し利用するかをデコーダに指示するセグメンテーション情報1130とともに、選択された情報1120としてビットストリームで送信される。動きセグメンテーション(スパース化)ネット1220は、ネットワーク1310として図13に示されている。したがって、密なオプティカルフロー1215は、動きセグメンテーション(スパース化)ネット1310に挿入される。ネット1310は、3つのダウンサンプリング層と、ビットストリーム1350に含まれる情報を選択する信号選択論理1320とを含む。機能は、より一般的な図9を参照してすでに説明したものと同様である。
上述の実施形態では、出力層とは異なる層に関連する情報のシグナリングは、システムのスケーラビリティを改善する。かかる情報は、隠れ層に関する情報であってもよい。以下では、提供されるスケーラビリティおよびフレキシビリティを利用することに関する実施形態および例が提示される。換言すれば、層をどのように選択するか、および情報がどのように見え得るかに関する一部のアプローチが提供される。
本明細書の実施形態の一部は、符号化部分に(ダウンサンプリング動作を組み込んだ層によって実装される)1つ以上の次元(または空間解像度)削減ステップを含むオートエンコーダアーキテクチャを使用する画像またはビデオ圧縮システムを示す。削減(符号化)側とともに、再構成(復号化)側が学習され、ここで、オートエンコーダは、削減された符号化から、その元の入力にできるだけ近い表現を生成しようとし、これは、復号化側での(アップサンプリング動作を組み込む層によって実装される)1つ以上の解像度増加ステップを、通常、意味する。
これ以降、エンコーダの下では、ビットストリームに含まれる潜在信号表現を生成するオートエンコーダの符号化部分が意味される。かかるエンコーダは、例えば、上述の101または121である。デコーダの下では、ビットストリームから取得される潜在信号表現を知覚するオートエンコーダの生成部分が意味される。かかるデコーダは、例えば、上述のデコーダ104または144である。
図11を参照してすでに説明したように、エンコーダは、信号選択論理1100に従って、異なる空間解像度の層から特徴マップ情報の一部(または複数の部分)(選択された情報1120)を選択し、選択された情報1120をビットストリーム1150において送信する。セグメンテーション情報1130は、選択された情報がどの層から得られ、対応する層の特徴マップのどの部分から得られたかを示す。
一実施形態によれば、複数のN個のカスケード層のうちの層jによる処理は、
-j番目の層によって出力された特徴マップ要素を使用して、再構成されたピクチャの一部を再構成することから生じる第1のコストを決定することと、
-(j-1)番目の層によって出力された特徴マップ要素を使用して、ピクチャの一部を再構成することから生じる第2のコストを決定することと、
-第1のコストが第2のコストよりも高い場合、(j-1)番目の層を選択し、(j-1)番目の層中の該一部に関する情報を選択することと、を含む。
どの層を選択すべきかの決定は、歪みに基づいて、または歪みの関数に基づいて実行され得る。例えば、動きベクトルフィールドコーディングの場合、再構成されたピクチャ(またはピクチャ部分)は、動き補償されたピクチャ(またはピクチャ部分)であってもよい。
この例示的な実装形態において選択された情報を選択するために、エンコーダは、ある位置における特定の解像度層から動き情報を送信するコストを推定するコスト計算ユニット(モジュール)を含む。コストは、選択された動きベクトルを用いた動き補償によって引き起こされる歪みと、ラグランジュ乗数によって乗算された動き情報を送信するために必要とされるビット量の推定値とを組み合わせて計算される。換言すれば、一実施形態によれば、レート歪み最適化(RDO)が実行される。
換言すれば、一部の実施形態では、第1のコストおよび第2のコストは、データおよび/または歪みの量を含む。例えば、データの量は、選択された層に関係するデータを送信するために必要とされるデータの量を含む。これは、動き情報または他の情報であってもよい。それはまた、残差コーディングによって引き起こされるオーバーヘッドであるか、またはそれを含み得る。歪みは、再構成されたピクチャをターゲットピクチャ(符号化される元のピクチャまたはかかる符号化されるピクチャの一部)と比較することによって計算される。RDOは1つの可能性にすぎないことに留意されたい。本開示は、かかるアプローチに限定されない。さらに、複雑性または他の要因がコスト関数に含まれてもよい。
図14は、コスト計算の第1の部分を示している。特に、コスト計算(または推定)ユニット1400は、動きセグメンテーションユニット1140のダウンサンプリング層(downspl4)によってダウンサンプリングされたオプティカルフローL1を取得する。コスト計算ユニット1400は、次いで、オプティカルフローをその元の解像度にアップサンプリングし1415、例えば、この場合、2つの方向(xおよびy)の各々において4だけアップサンプリングする。次いで、動き補償1420の実行が、1410から出力されたアップサンプリングされた動きベクトルおよび参照ピクチャ(複数可)1405を使用して行われて、動き補償されたフレーム(ピクチャ)または動き補償されたフレーム(ピクチャ)1420の一部を取得する。次に、動き補償されたピクチャ(部分)1420をターゲットピクチャ1408と比較することによって、歪みが計算される1430。ターゲットピクチャ1408は、例えば、コーディングされるピクチャ(オリジナルピクチャ)であってもよい。一部の例示的な実装形態では、比較は、ターゲットピクチャ1408と動き補償されたピクチャ1420との間の平均二乗誤差(MSE)または絶対差の和(SAD)を計算することによって実行され得る。しかしながら、MS-SSIMまたはVMAFのような主観的知覚を標的としたより高度なメトリックなどの他のタイプの測定/メトリックが、代替として、または加えて使用されてもよい。計算された歪み1430は、次いで、コスト計算モジュール1460に提供される。
さらに、レート推定モジュール1440は、各動きベクトルのビット量の推定値を計算する。レート推定値は、動きベクトルをシグナリングするために使用されるビットだけでなく、(一部の実施形態では)セグメンテーション情報を示すために使用されるビットも含み得る。このようにして取得されたビット数は、例えばピクセル(特徴マップ要素)ごとに正規化されてもよい1450。結果として生じるレート(ビットの量)は、コスト計算モジュール1460に提供される。レート(ビット量)推定を取得するために、各動きベクトル送信のためのビット量の評価は、例えば、動き情報コーディングモジュールを使用して(例えば、コーディングを実行し、結果として生じるビット量を記録することによって)実行されるか、または何らかの簡略化された実装形態では、粗い推定としてそのxまたはy成分の動きベクトルの長さを使用して実行される。他の推定技術が適用されてもよい。セグメンテーション情報を考慮に入れるために、セグメンテーション情報は、セグメンテーション情報コーディングモジュールによって(例えば、セグメンテーション情報を生成してコーディングし、結果として生じるビットの数をカウントすることによって)評価されてもよく、または、より単純な実装形態では、総ビット量に1ビットを加えることによって評価されてもよい。
この例におけるコスト計算の次のステップは、コスト計算1460であり、その後に、動きセグメンテーションユニット1100の対応するダウンサンプリング層の解像度への4によるダウンサンプリング1470(downspl 4)が続く。場合によっては、各点(ピクチャサンプル値)に対して1つの動きベクトルしか送信されることができない。したがって、結果として得られるコストテンソルは、対応するサイズ(次元)を有することができる。したがって、ビット評価値は、ダウンサンプリングフィルタ形状の2乗(例えば、4×4)によって正規化され得る。
次いで、次に、ラグランジュ乗数を使用して、コスト推定ユニット1460は、例えば、式
Cost=D+λ*R、または
Cost=R+β*D
を使用してコストを計算し、ここで、Dは(1430によって計算された)歪みを示し、Rビット推定(1440または1450によって出力されたレート推定)、λおよびβはラグランジュ乗数である。ダウンサンプリング1470は、コストテンソル1480を出力する。当技術分野で知られているように、ラグランジュ乗数ならびにλおよびβは、経験的に取得され得る。
結果として、特徴マップ内の各位置(この場合、密なオプティカルフローのW×H位置)に対するコスト推定を有するテンソル1480が取得される。逐次平均プーリングおよび最近傍法によるアップサンプリングを使用することは、N×N(例えば、4×4)領域における動きベクトルの平均化をもたらし、ここで、N×Nは、アップサンプリング動作のための平均プーリングフィルタ形状およびスケーリングファクタであることに留意されたい。最近傍法を用いたアップサンプリングの間、低解像度の層からの値は、フィルタ形状に対応する高解像度の層の全ての点において複製される(繰り返される)。これは、並進動きモデルに相当する。
コスト選択ユニットの種々の実装形態が可能である。例えば、図15は、別の例示的な実装形態を示している。この例では、図14とは異なり、密なオプティカルフローをx次元およびy次元の各々において4でダウンサンプリングした1501後に取得された動きベクトルフィールドは、アップサンプリングされない1415。むしろ、それは、動き補償1510および推定レート1540のために直接提供される。その代わりに、参照ピクチャ1505およびターゲットピクチャ1505は、動き補償1510および歪み評価1530の前に、対応する解像度にダウンサンプリング1515,1518され得る。これは、図14における元の解像度への初期動きフィールドアップサンプリング1415のステップを除外すること、ならびに図14の最終コストダウンサンプリングステップ1470を除外することにつながる。これにより、ビット正規化1450も不要になる。この実装形態は、処理中にテンソルを記憶するためにより少ないメモリを必要とし得るが、あまり正確でない結果を与え得る。RDOの複雑性を加速または低減するために、L1によって行われるよりもさらに多く、密なオプティカルフローならびに参照ピクチャおよびターゲットピクチャをダウンサンプリングすることが考えられることに留意されたい。しかしながら、かかるRDOの精度はさらに低減され得る。
コスト推定ユニット(1400,1500)を動きセグメンテーションユニット(1220,1310)の各ダウンサンプリング層に適用することで、異なるレベルの動きベクトル平均化(異なる空間解像度)を用いてコストが取得される。次のステップと、して、信号選択論理1100は、各ダウンサンプリング層からのコスト情報を使用して、異なる空間解像度の動き情報を選択する。信号選択論理1100が逐次的な(カスケードされた)ダウンサンプリング層からのコストのペアワイズ比較を実行することを達成するために、信号選択論理1100は、各空間位置において最小コストを選択し、それを(処理のシーケンスにおいて)次のダウンサンプリング層に伝播する。図16は、信号選択ユニット1600の例示的なアーキテクチャを示す図である。
密なオプティカルフロー610は、図11に示されるものと同様に、3つのダウンサンプリング層downspl4、downspl2およびdownspl2に入る。図16の信号選択論理1600は、図11の信号選択論理1100の例示的な実装形態である。特に、LayerMvテンソル611は、コスト計算ユニット613に入るサブサンプリングされた動きベクトルフィールド(特徴マップ)である。また、LayerMvテンソル611は、第1の層の層情報選択ユニット614に入る。層情報選択ユニット614は、この(第1の)層上に選択された動きベクトルがある場合、選択された動きベクトルをビットストリームに提供する。その機能は、以下でさらに説明される。
コスト計算ユニット613は、例えば、図14を参照してコスト計算ユニット1400について説明したように、コストを計算する。これはコストテンソルを出力し、これは次いで、第2の層が動作する解像度に一致するように2でダウンサンプリングされる。第2のダウンサンプリング層downspl 2による処理の後、LayerMVテンソル621は、次の層(第3の層)および第2の層のコスト計算ユニット623に提供される。コスト計算ユニット623は、コスト計算ユニット1400と同様に動作する。図14を参照して説明した例のような4によるアップサンプリング/ダウンサンプリングの代わりに、当業者には明らかなように、各方向における2によるダウンサンプリングが適用される。
コスト計算ユニット613および623からのコストテンソルのペアワイズ比較を実行するために、前の(第1の)ダウンサンプリング層からのコストテンソルは、現在の解像度層(第2の)に(2だけ)ダウンサンプリングされている。次に、2つのコストテンソル間でプーリング演算625が実行される。換言すれば、プーリング演算625は、要素ごとのコストテンソルにおいて、低コストを維持する。低コストを有する層の選択は、プーリング演算結果の要素インデックスごとに捕捉される。例えば、1つの特定のテンソル要素において、第1のテンソルのコストが第2のテンソルの対応する要素のコストよりも低い値を有する場合、インデックスは0に等しく、そうでない場合、インデックスは1に等しい。
訓練目的の勾配伝播を確実にするために、ソフトarg maxが使用されて、勾配を有するプールされたインデックスを取得することができる。勾配伝播が必要とされない場合、インデックスを有する通常のプーリングが使用されることができる。プーリング演算625の結果622として、現在のまたは前の解像度層からの動きベクトルが選択されたか否かを示すインデックス(LayerFlagテンソル)が、動きセグメンテーションユニットの対応するダウンサンプリング層からの動きベクトル(LayerMvテンソル)とともに、現在の(ここでは第2の)層の層情報選択ユニット624に転送される。最良のプールされたコストテンソルは、次のダウンサンプリングレベル(downspl2)に伝播され、次いで、第3の層について演算が繰り返される。
特に、第2の層の出力されたLayerMv 621は、第3の層によってさらにダウンサンプリングされ(downspl 2)、結果として生じる動きベクトルフィールドLayerMv 631は、第3の層のコスト計算ユニット633に提供される。計算されたコストテンソルは、第2の層から伝播され、MinCostプーリングユニット625によって提供されるダウンサンプリングされたコストテンソルと要素ごとに比較される635。MinCostプーリング635による処理の後、現在の(第3の)または前の(第2の)解像度層からの動きベクトルが選択されたかどうかを示すインデックス(LayerFlagテンソル)が、動きセグメンテーションユニットの対応するダウンサンプリング層からの動きベクトル(LayerMvテンソル)とともに、現在の(ここでは第3の)層の層情報選択ユニット634に転送される。この例では、例示の目的のために3つの層のみが存在する。しかしながら、概して、3つより多い層があってもよく、さらなる層およびこれらの層のための信号選択論理は、第2および第3の層について示されるのと同様の機能を有する。
各空間解像度層からプールされた情報を収集するために、次の処理が、層情報選択ユニット634、624、および614を使用して、低解像度層から高解像度層へと、逆の順序で実行される。最初に、最低解像度層(ここでは第3の層)と同じサイズのTakeFromPrevテンソルがゼロによって初期化される601。次いで、以下のように、異なる解像度の層に対して同じ動作が繰り返される。テンソル(NOT TakeFromPrev)の値が1に等しい位置における(現在の層における)LayerFlagテンソルの値は、セグメンテーション情報としてビットストリームにおいて送信されるように選択される。(NOT TakeFromPrev)テンソルは、TakeFromPrevテンソルの要素ごとの否定である。第3の(ここでは最後の)層において、(NOT TakeFromPrev)テンソルは、したがって、1に設定された全ての値を有する(601によって設定された否定されたゼロ)。したがって、最後の(ここでは第3の)層のセグメンテーション情報1130(LayerFlag)が常に送信される。
TakeFromCurrentテンソルは、論理演算TakeFromCurrent=(NOT TakeFromPrev)AND LayerFlagを使用して取得される。このテンソルTakeFromCurrentのフラグは、動きベクトル情報が現在の解像度層からビットストリームで送信されるように選択されるか否かを示す。層情報選択ユニット(634,624,614)は、LayerMvテンソルの値を取ることによって、動きセグメンテーションユニットの対応するダウンサンプリング層から動きベクトル情報を選択し、TakeFromCurrentテンソルの値は1に等しい。この情報は、選択された情報1120としてビットストリームで送信される。
最も低い解像度に対応する第3の(逆の順序の第1の)処理層については、TakeFromPrevがゼロによって初期化されてから全てのフラグが送信され、次いで(NOT TakeFromPrev)の全ての値が1に等しくなる。最高解像度層に対応する最後の処理層については、LayerFlagフラグは送信される必要がない。動き情報が前の層から選択されなかった全ての位置について、位置は、現在の層または次の(最高解像度の)層から選択されるべきであると仮定される。
図16に示されるようなコスト計算は、GPU/NPU上で実行され得る並列化可能な方式であることに留意されたい。この方式は、エンドツーエンドの訓練可能なビデオコーディングソリューションにおいて使用することを可能にする勾配を転送するため、訓練可能でもある。
逆の順序の処理は、デコーダの機能を説明するときに以下に示されるように、セグメンテーション情報および動きベクトル情報を解析するときにデコーダによって実行されるのと同様であることに留意されたい。
信号選択論理1700の別の例示的な実装形態が図17に示されている。図16と比較して、図17のブロック図は、同じ解像度層において複数のコーディングオプションを導入する。これは、層1コスト計算ユニット710内のオプション1~Nによって示される。概して、1つ以上または全ての層は、より多くのオプションを含み得ることに留意されたい。換言すれば、コスト計算ユニット613、623、633のいずれも、より多くのオプションを提供することができる。これらのオプションは、例えば、動き推定/補償のために使用される異なる参照ピクチャ、単仮説予測、双仮説予測または多仮説予測、異なる予測方法、例えば、フレーム間予測またはフレーム内予測、予測なしの直接コーディング、多仮説予測、残差情報の有無、残差の量子化レベルなどのうちの1つ以上または全てとすることができる。コストは、コスト計算ユニット710においてコーディングオプションごとに計算される。次いで、最小コストプーリング720を使用して最良のオプションが選択される。最良の選択されたオプションのインジケータ(例えば、インデックス)705は、層情報選択モジュール730に送信され、次いで、現在の層の対応するポイントが情報を送信するために選択される場合、インジケータBestOptは、ビットストリームにおいて転送される。所与の例では、オプションが第1の層のみについて示されているが、同様のオプション選択論理が、異なる解像度の他の層にも、または全ての層に適用され得ることを理解されたい。
上述したアプローチは、ピクチャ再構成プロセスを制御するフラグまたはスイッチャのような論理情報のセグメンテーションおよび転送にも適しており、また、復号化後に不変のままであり、符号化側と同じに保たれることが意図される情報にも適している。換言すれば、図16の例示的な実装形態において処理される動きベクトルフィールド(密なオプティカルフロー)の代わりに、セグメンテーションを含む任意の1つ以上の他のパラメータが同様の方法で符号化され得る。それは、例えば、動き推定/補償のために使用される異なる参照ピクチャを示すインジケータ、単仮説、双仮説または多仮説予測インジケータ、異なる予測方法、例えば、フレーム間予測またはフレーム内予測、予測を伴わない直接コーディングのインジケータ、多仮説予測、残差情報の有無、残差の量子化レベル、ループ内フィルタのパラメータなどのうちの1つ以上または全てであってもよい。
上記実施形態および例のさらなる変形例
第1の変形例によれば、動きセグメンテーションユニット1310のダウンサンプリング層および/または動き生成ユニット1360のアップサンプリング層は、畳み込み演算を含む。これは図18に示されている。図18に見られるように、図13と比較して、ダウンサンプリング層「dwnspl」およびアップサンプリング層「upspl」は、それぞれ、動きセグメンテーションユニット1810内のダウンサンプリング畳み込み層「conv↓」および動き生成ユニット1860内のアップサンプリング畳み込み層「conv↑」に置き換えられている。畳み込みリスケーリング(ダウンサンプリング、アップサンプリング)層の利点の一部は、学習可能なダウンサンプリングおよびアップサンプリングプロセスを可能にすることである。これは、例えば、動き情報の高密度化のための使用の場合、最適なアップサンプリング変換を見つけることを可能にし、したがって、上述の実施形態および例において説明されたように、ブロックごとに平均化された動きベクトル情報を使用する動き補償によって引き起こされるブロッキング効果を低減し得る。同じことが、テクスチャ復元プロセス、例えば、元の画像強度値またはカスケード層によって処理される予測残差生成に適用可能である。
図18の上記の例では、全てのダウンサンプリング層およびアップサンプリング層は畳み込み層である。概して、本開示は、かかる実装形態に限定されない。概して、セグメンテーションユニット(1310,1810)内および/または生成ユニット(1360,1860)内で、ダウンサンプリングおよび対応するアップサンプリング動作のサブセット(1つ以上)は、畳み込みとして実装され得る。
本明細書で説明される例は、密なオプティカルフロー/動きベクトルフィールド処理のために提供され、したがって、動きセグメンテーションユニット(1310,1810)および/または動き生成ユニット(1360,1860)を指すが、本開示は、かかるデータ/特徴マップに限定されないことを思い出されたい。そうではなく、本明細書の実施形態および例のいずれかにおける動きベクトルフィールドの代わりに、またはそれに加えて、任意のコーディングパラメータ、または画像のサンプルなどのテクスチャ、または予測残差(予測誤差)などが処理されることができる。
例えば、ダウンサンプリングとして動き情報平均化を用いるエンコーダは、畳み込みアップサンプリング層を有するデコーダと組み合わせて使用されることができることに留意されたい。さらに、より良好な潜在表現を見つけることを目的とした畳み込み層を有するエンコーダは、最近傍ベースのアップサンプリング層を実装する動き生成ネットワーク(デコーダ)と組み合わせられることができる。さらなる組み合わせが可能である。換言すれば、アップサンプリング層およびダウンサンプリング層は、同様のタイプである必要はない。
前述の実施形態および例のいずれか(ならびに第1の変形例)と組み合わせられることができる第2の変形例によれば、ネットワークによる処理は、上述の異なる解像度を有するカスケード層の間に1つ以上の追加の畳み込み層を含む。例えば、動きセグメンテーションユニット1310および/または動き生成ユニット1360は、ダウンサンプリング層とアップサンプリング層の一部または全部の間に1つ以上の中間畳み込み層をさらに含む。これは、かかる動きセグメンテーションネットワーク(モジュール)1910および動き生成ネットワーク(モジュール)1860の例示的な実装形態を示す図19に示されている。「モジュール」および「ユニット」という用語は、本明細書では、機能ユニットを示すために交換可能に使用されることに留意されたい。この特定の実施形態では、ユニット1910および1960は、より具体的には、複数のカスケード層を有するネットワーク構造である。
例えば、動きセグメンテーションユニット1910は、動きセグメンテーションユニット1310と比較して、各ダウンサンプリング層「conv↓」(他のタイプのダウンサンプリングであってもよい)の前に追加の畳み込み層「conv」を有する。さらに、動き生成ユニット1960は、動き生成ユニット1360と比較して、(他のタイプのアップサンプリングでもあり得る)各アップサンプリング層「conv↑」の前に追加の畳み込み層「conv」を有する。
これは、動き情報のスパース化によって引き起こされるブロッキングアーチファクトをさらに低減し、より良い潜在表現を見つけることの汎化効果を増加させ得る。第1の変形例に関して上述されたものと同様に、上述した異なる実施形態/変形例からのエンコーダおよびデコーダは、1つの圧縮システムに組み合わせられることができる。例えば、ダウンサンプリング層間に追加の層を有するエンコーダのみを有し、かかる追加の層を有さないデコーダを有することが可能であり、逆もまた同様である。代替的または追加的に、エンコーダおよびデコーダにおいてかかる追加的な層の異なる数および位置を有することが可能である。
第3の変形例によれば、図19にも示されるように、入力信号および出力信号との直接接続が提供される。ここでは同じ図に示されているが、第2および第3の変形例は独立していることに留意されたい。それらは、前述の実施形態および例ならびに他の変形例に、一緒にまたは別個に適用されてもよい。直接接続は一点鎖線で示されている。
一部の実施形態では、オートエンコーダの潜在表現(最低解像度層の出力)のボトルネック情報に加えて、高解像度層(複数可)からの情報がビットストリームに追加される。シグナリングオーバーヘッドを最適化するために、異なる解像度層からの情報の一部のみがビットストリームに挿入され、信号選択論理によって制御される。受信(デコーダ)側では、対応する信号供給論理が、以下でより詳細に説明されるように、ビットストリームからの情報を異なる空間解像度の層に供給する。さらに、ダウンサンプリング層の前の入力信号からの情報がビットストリームに追加されることができ、それにより、可変性および柔軟性がさらに高められることができる。例えば、コーディングは、特定のシーケンスの特徴に調整された、高空間解像度を有する現実のオブジェクト境界およびセグメントに整合されてもよい。
第4の変形例によれば、ダウンサンプリングフィルタおよびアップサンプリングフィルタの形状は、正方形以外の形状、例えば、水平方向または垂直方向を有する長方形、非対称形状、またはマスク演算を採用することによってさらに任意の形状を有することができる。これは、実際のオブジェクト境界をより良好に捕捉するために、セグメンテーションプロセスの可変性をさらに増加させることを可能にする。この変形例は図20に示されている。動きセグメンテーションユニット2010では、先行する実施形態のいずれかと同じであり得る第1のダウンサンプリング層の後に、フィルタ形状セットから選択されたフィルタを採用する2つのさらなるダウンサンプリング層が続く。この変形例は、動きベクトル情報の処理に限定されない。
概して、層によるダウンサンプリングでは、第1のフィルタを使用して入力特徴マップをダウンサンプリングして第1の特徴マップを取得し、第2のフィルタを使用して入力特徴マップをダウンサンプリングして第2の特徴マップを取得することが適用される。コスト計算は、第1の特徴マップを使用して再構成ピクチャの一部を再構成することから生じる第3のコストを決定することと、第2の特徴マップを使用して再構成ピクチャの一部を再構成することから生じる第4のコストを決定することとを含む。そして、選択において、第3のコストが第4のコストよりも小さい場合に第1の特徴マップが選択され、第3のコストが第4のコストよりも大きい場合に第2の特徴マップが選択される。この例では、選択は2つのフィルタから外れていた。しかしながら、本開示は、2つのフィルタに限定されず、むしろ、例えば、全ての選択可能なフィルタのコストを推定し、コストを最小化するフィルタを選択することによって、所定の数のフィルタからの選択が同様の方法で実行されてもよい。
第1のフィルタおよび第2のフィルタの形状は、正方形、水平配向および垂直配向の長方形のいずれかとすることができる。しかしながら、本開示はこれらの形状に限定されない。概して、任意のフィルタ形状が設計されることができる。フィルタは、任意の所望の形状で画定され得るフィルタをさらに含み得る。かかる形状は、マスクを取得することによって示され得、マスクはフラグから構成され、マスクは任意のフィルタ形状を表し、第1のフィルタおよび第2のフィルタのうちの1つ(概して、フィルタセットからの選択可能なフィルタのいずれか)は任意のフィルタ形状を有する。
例示的な実装形態では、変動性を与えるために、エンコーダは、互いに異なる形状を有するフィルタの助けを借りて取得されたコストテンソル間でプーリングすることをさらに含む。選択されたフィルタ形状のインデックスは、動きベクトルについて上記で説明されたのと同様に、セグメンテーション情報(の一部)としてビットストリーム中でシグナリングされる。例えば、水平方向に配向された長方形形状と垂直方向に配向された長方形形状との間の選択の場合、対応するフラグがビットストリーム中でシグナリングされてもよい。例えば、図17を参照して説明された複数の符号化オプションを選択する方法は、同じ解像度層における異なるフィルタ形状の選択のために使用されてもよい。
第5の変形例によれば、異なる動きモデルの所定のセットからの動きモデルは、同じ解像度層において選択されてもよい。前の実施形態では、ダウンサンプリングフィルタおよび/またはアップサンプリングフィルタの特定の場合についてが説明された。かかる場合、動き情報は、並進動きモデルを表す正方形ブロックにわたって平均化され得る。なお、この第5の変形例では、並進動きモードに加えて、他の動きモデルが採用されてもよい。かかる他の動きモデルは、以下の
-アフィン動きモデル、
-高次動きモデル、または
-特定の動きモデル、例えば、ズーム、回転、アフィン、パースペクティブなどを表すように特に訓練されたCNN層
うちの1つ以上を含み得る。
第5の変形例の例示的な実装形態では、オートエンコーダは、並進動きモデル以外を表すCNN層および/または「ハンドクラフト」層のセットをさらに含む。かかるオートエンコーダ(およびデコーダ)が図21に示されている。図21では、「conv fit set」として示されるフィルタのセットを含む層が、エンコーダ側およびデコーダ側に提供される。
例えば、各空間層において、エンコーダは、フィルタのセットからある動きモデルに対応する(1つ以上の)適切なフィルタ(複数可)を選択し、ビットストリームに指示を挿入する。受信側において、信号供給論理は、インジケータを解釈し、セットからの対応するフィルタ(複数可)を使用して、特定の層において畳み込みを実行する。
上記で説明された方法の例は、符号化のための例示的な入力として、動き情報、特に動きベクトルを使用する。これらの方法は、直接画像サンプル値、予測残差情報、フレーム内およびフレーム間予測パラメータなど、異なるタイプの画像またはビデオ情報の圧縮にも適用可能であることに再び留意されたい。
第6の変形例によれば、図16または図17を参照して上記で例示したRDOは、従来のブロックベースのコーデックに適用されてもよい。
従来のビデオコーディング方法、例えば、AVC、HEVC、VVCまたはEVCなどの最先端のビデオコーディング規格は、ブロックベースのコーディング概念を使用し、それに従って、ピクチャは、正方形または長方形の形状のブロックに再帰的に分割される。これらのブロックについて、信号再構成パラメータがエンコーダ側で推定または評価され、ビットストリームでデコーダに送信される。通常、エンコーダは、レート歪みコストに関してピクチャを表すブロックのセットのための最適な再構成パラメータを見つけることを目的とし、再構成品質を最大化し(すなわち、元のピクチャの歪みを最小化し)、再構成プロセスのためのパラメータを送信するために必要とされるビットの量を最小化することを試みる。パラメータ選択(またはコーディングモード決定)のこのタスクは、複雑でリソースを必要とするタスクであり、これはエンコーダの複雑性の主な原因でもある。処理時間が制約されるため、例えば、リアルタイムアプリケーションでは、エンコーダは、モード決定の品質を犠牲にすることがあり、これは、再構成された信号の品質に影響を及ぼす。モード決定プロセスを最適化することは、常に望ましい技術的改良である。
コーディングモード決定のうちの1つは、分割方法に従って現在ブロック(またはコーディングユニット(CU))を複数のブロックに分割すべきか否かの決定である。
第6の変形例によれば、上記の動きセグメンテーションユニット1310(または1810)は、コストの最小化(例えば、レート歪み最適化基準)に基づく分割モード決定に適応される。図22は、かかる最適化の例を示している。
図22に見られるように、層をダウンサンプリングする代わりに、異なる空間解像度の情報を表すためにブロックパーティション構造が使用される。ピクチャまたはピクチャの一部の所与のサイズN×N(正方形ブロックを考慮する)のブロックごとに、コスト計算ユニットは、歪みテンソルを計算し、(元の解像度に一致するように)解像度をさらに16分の1にダウンサンプリングする。図22の所与の例では、第1のブロックサイズは16×16であり、例えば、ダウンサンプリングは、テンソルを取得するために平均プーリング演算によって実行され、その各要素は、16×16ブロックごとの平均歪みを表す。第1の層では、ピクチャは、初期の最高解像度で16×16ブロック2201に分割される。第2の層では、ピクチャ中のブロックサイズ2202が(前の層の4つのブロックを結合することに対応する)32×32になるように解像度が低減される。第3の層では、ブロックサイズ2203が64×64(前の層の4つのブロックを結合することに対応する)になるように、解像度が再び低減される。この場合の前の層からの4つのブロックの結合は、ブロック関連情報のサブサンプリングと見なされ得ることに留意されたい。これは、第1の層では、ブロック関連情報が各16×16ブロックに対して提供されるのに対して、第2の層では、ブロック関連情報が32×32ブロックに対してのみ提供される、すなわち、4倍少ないパラメータが提供されるためである。同様に、第3の層では、ブロック関連情報は、64×64ブロックについてのみ提供され、すなわち、第2の層よりも4倍少ないパラメータが提供され、第1の層よりも16倍少ないパラメータが提供される。
このコンテキストにおけるブロック関連情報は、予測モード、動きベクトル、予測方向、参照ピクチャなどの予測モード固有情報、フィルタリングパラメータ、量子化パラメータ、変換パラメータ、またはブロック(コーディングユニット)レベルで変化し得る他の設定など、ブロックごとにコーディングされる任意の情報である。
そして、第1の層、第2の層、第3の層それぞれのコスト計算ユニット2211、2212、2213は、ブロックサイズ2201、2202、2203それぞれのブロック再構成パラメータと、サイズW×Hの入力ピクチャとに基づいて、コストを計算する。
出力コストテンソルは、ラグランジュ乗数を使用して(例えば、第1の層16×16中の)N×Nブロックのコーディングパラメータを送信するために必要とされるビットの推定値と組み合わせられた、ブロックごとの平均歪みとして取得される。(コスト計算ユニット2211、2212、および2213の各々またはいずれかに対応し得る)ブロックN×Nのためのコスト計算ユニット2300の例示的な構造が図23に示されている。
図23は、N×Nの一般的なブロックサイズ230xの場合のコスト計算ユニット2300の例示的なブロック図を示している。コスト計算ユニット2300は、サイズN×Nのブロックに関連付けられたブロック再構成パラメータ(ブロック関連パラメータ)を取得する2310。この取得は、メモリなどからパラメータ(パラメータ値)をフェッチすることに対応し得る。例えば、ブロック関連パラメータは、インター予測モードなどの特定の予測モードであってもよい。ユニット2310において、ブロック再構成パラメータが取得され、再構成ユニット2320において、ピクチャの一部がこれらのパラメータを使用して再構成される(この例では、全てのブロックがインター予測モードを使用して再構成される)。次に、歪み計算ユニット2330は、ピクチャの再構成された部分の歪みを、符号化される元のピクチャであり得るターゲットピクチャの対応する部分と比較することによって計算する。歪みはサンプルごとに計算され得るため、それをブロックベースで取得するために、(N×Nブロックごとに1つの値への)歪みのダウンサンプリング2340が実行され得る。下側の分岐では、ピクチャをコーディングするのに必要なレートまたはビット数が推定される2360。特に、ビット推定ユニット2360は、N×Nサイズのブロックごとにシグナリングされるビットの数を推定することができる。例えば、インター予測モードに必要なブロック当たりのビット数を計算してもよい。推定された歪みおよびビット量(またはレート)が得られると、例えば、上述のラグランジュ最適化に基づいて、コストが計算され得る2350。出力はコストテンソルである。
本明細書全体を通して、グレースケール画像などのサンプルの2D画像のみが観察される場合、本明細書での「テンソル」という用語は行列であり得ることに留意されたい。しかしながら、出力がより多くの次元を有することもできるように、ピクチャのための色または深度チャネルのような複数のチャネルが存在してもよい。一般的な特徴マップはまた、2次元または3次元よりも多くの次元で提供され得る。
同じコスト評価手順が、(16×16ブロック粒度を有する)第1の層に対して、かつサイズ32×32サンプルのブロックへの四分木分割の次のレベルに対して実行される。再構成パラメータ(ブロック関連パラメータ)のために1つの32×32ブロックを使用することがより良いのか、それとも4つの16×16ブロックを使用することがより良いのかを決定するために、16×16ブロックについて評価されたコストテンソルは、2倍のダウンサンプリングされる(図22参照)。次いで、最小コストプーリング演算2222は、32×32ブロックごとに最適な決定を提供する。プールされたコストのインデックスは、split_flagsとしてビットストリームで送信されるために、層情報選択ユニット2232に渡される。プールされたインデックスに従って最良に選択されたブロックについての再構成パラメータblk_rec_paramsも、層情報選択ユニット2231に渡される。プールされたコストテンソルは、64×64のサイズを有するブロックの次の四分木集約レベル、すなわちMinCostプーリング2223にさらに渡される(2でダウンサンプリングされる)。MinCostプーリング2223はまた、コスト計算ユニット2213において64×64ブロック解像度2203について計算されたコストを受信する。これは、ビットストリームにおいて示されるように、プールされたコストのインデックスをsplit_flagsとして層情報選択ユニット2233に渡す。それはまた、プールされたインデックスに従って最良の選択されたブロックについての再構成パラメータblk_rec_paramsを層情報選択ユニット2233に渡す。
各ブロック集約レベルからプールされた情報を収集するために、図16を参照して上述されたような方法で、層情報選択ユニット2233、2232、および2231を使用して、上位(この例では最高の)集約レベル(64×64サンプル)から下位(この例では最低の)集約レベル(16×16サンプル)へと逆の順序で処理が実行される。
結果は、取得されたパーティション(ブロック)の符号化された値および場合によってはさらなるコーディングパラメータとともに、最適化によって得られた四分木分割を符号化するビットストリームである。上述の方法により、ブロックパーティションの分割フラグを決定することができる。各ブロックの再構成パラメータを得るために、可能なコーディングモードの各々または一部の評価に基づく従来の方法が使用されることができる。
図24は、第7の変形例の一例を示す。第7の変形例は、図22および図23を参照して上記で説明した第6の変形例を発展させたものである。第7の変形例は、コーディングモードの評価が設計に組み込まれる方式を表す。特に、図から分かるように、コスト計算ユニット710は、N個のオプションを評価することができる。用語「N」は、ここでは何らかの整数のためのプレースホルダであることに留意されたい。このオプションの数を示す「N」は、一般的なブロックサイズを示す「N×N」における「N」と同じである必要はない。コスト計算ユニット710において、同じレベルのブロックパーティション分割に対して、例えば、(第1の層におけるような)16×16サンプルのサイズのブロックに対して、エンコーダは、各ブロックに対して全ての可能な(またはその限定されたセットの)コーディングモードにわたって反復する。
blk_rec_params 0、blk_rec_params 1、…、blk_rec_params Nとして示される各16×16ブロックをコーディングするためのN個のオプションを有するエンコーダを考える。パラメータ組み合わせblk_rec_params k(kは0~Nの整数である)は、例えば、(例えば、インターおよびイントラからの)一部の予測モード、(例えば、DCTおよびKLTからの)一部の変換、(あらかじめ定義されたフィルタのうちの)一部のフィルタリング順序またはフィルタ係数セットなどの組み合わせであってもよい。一部の実装形態では、blk_rec_params kは、1つのパラメータのみが最適化される場合、単一のパラメータの値kであり得る。当業者には明らかなように、任意の1つ以上のパラメータは、その使用コストをチェックすることによって最適化されることができる。
ブロック再構成パラメータ(blk_rec_params_k)の各所与のセットを用いて、コスト計算ユニット2410は、各ブロックのコストを表すテンソルを計算する。次いで、最小コストプーリング2420を使用して、各ブロックのための最良コーディングモードが選択され、層情報選択ユニット2430に転送される。最良のプールされたコストテンソルは、2倍さらにダウンサンプリングされ、次の四分木集約レベル(この場合、ブロックサイズ32×32を有する集約に対応する第2の層)に転送される。そして、上記第6の変形例と同様にして、分割(splitting)(分割(partitioning))決定が行われる。図24では、オプション0..Nは、第1の層(集約レベル16×16)においてのみ評価される。しかしながら、本開示は、かかるアプローチに限定されない。むしろ、0..Nのオプションの評価は、各集約レベルにおいて実行され得る。
例えば、四分木集約の次のレベル(32×32、64×64)において、エンコーダは、(それぞれのコストユニット中のコストを計算することによって)評価し、(それぞれのMinCostプーリングユニットによって)各ブロックのための最良コーディングモードをプールし(分かりやすくするために図中に示さず)、これは前の集約レベルと比較される。最良モードおよびそれに応じて設定される対応する再構成パラメータに関する決定は、層情報選択ユニット(第1の層について示される層情報選択ユニット2430など)に提供される。各ブロック集約レベルからプールされた情報を収集するために、第6の変形例で説明したように、層情報選択ユニットを使用して、上位集約レベル(64×64)から下位集約レベル(16×16)への逆の順序で処理が実行される。
異なるブロック形状が使用されて、二分木、三分木、非対称および幾何学的分割などのより高度な分割方法を表すことができる。図25は、ブロックのかかる分割を例示している。換言すれば、最適化は、必ずしも異なるブロックサイズにわたってのみ実行されるのではなく、異なる分割タイプに対しても(例えば、対応するオプションによって)実行されてもよい。図25は、以下の例を示している。
-四分木分割2510。四分木分割では、ブロックが同じサイズの4つのブロックに分割(split)(分割(partitioned))される。
-(対称)二分木分割2520。対称バイナリ分割では、ブロックが同じサイズの2つのブロックに分割される。分割は、垂直分割または水平分割であり得る。垂直または水平は、分割の追加のパラメータである。
-非対称二分木分割2530。非対称バイナリ分割では、ブロックは、異なるサイズの2つのブロックに分割される。サイズ比は、(シグナリングによって引き起こされるオーバーヘッドを節約するために)固定されてもよく、または可変であってもよい(その場合、一部の比オプションも最適化され、すなわち構成可能であってもよい)。
-三分木分割2540。3値分割では、ブロックは、2つの垂直ラインまたは2つの水平ラインによって3つのパーティションに分割される。垂直または水平は、分割の追加のパラメータである。
本開示は、これらの例示的な分割モードに限定されない。三角形のパーティションまたは任意の他の種類のパーティションを採用することが可能である。
第7の変形例では、一般的なビデオコーディング規格に適用可能なハイブリッドアーキテクチャが、強力な(ニューラル)ネットワークベースのアプローチによってサポートされ、権限を与えられる。説明される方法の技術的利点は、モード決定プロセスのために必要とされる計算を高速化することを可能にし得る、高度に並列化可能なGPU/NPUフレンドリーな方式を提供し得る。それは、複数のブロックが同じ決定レベルで考慮されるため、グローバルなピクチャ最適化を可能にすることができ、例えば、再構成パラメータコーディングのために必要とされるビットの量を評価するために、決定を高速化するための学習可能な部分を組み込む。
要約すると、第6または第7の変形例によるカスケード層構造による処理は、異なる層において、それぞれ異なるブロックサイズおよび/または形状を有するブロックにセグメント化された(すなわち、分割/分割された)同じピクチャに関するデータを処理することを含む。層を選択することは、コーディングモードの所定のセットに対して計算されたコストに基づいて層を選択することを含む。
換言すれば、異なる層は、異なるブロックサイズでピクチャデータを処理することができる。したがって、カスケード層は、互いに異なるブロックサイズを処理する少なくとも2つの層を含む。ここで「ブロック」に言及するとき、それが意味するものは、ユニット、すなわち、コーディングが実行されるピクチャの部分である。ブロックは、コーディングユニットまたは処理ユニットなどと称されることもある。
コーディングモードの所定のセットは、コーディングパラメータ値の組み合わせに対応する。異なるブロックサイズは、コーディングモードの単一のセット(1つ以上のコーディングパラメータの値の組み合わせ)において評価され得る。代替的に、評価は、(図25のものなど)ブロックサイズと分割形状との種々の組み合わせを含み得る。しかしながら、本開示はこれに限定されず、第7の変形例において特に言及されるように、例えばブロックごとに、イントラ/インター予測タイプ、イントラ予測モード、残差スキップ、残差データなどのコーディングモードをさらに含み得るコーディングモードの複数の所定のセット(コーディングパラメータ値の組み合わせ)が存在してもよい。
例えば、処理は、少なくとも1つの層について、コーディングモードの異なるセット(コーディングパラメータの値の組み合わせ)についてのコストを決定することと、決定されたコストに基づいてコーディングモードのセットのうちの1つを選択することとを含む。図24は、第1の層のみがかかる選択を実行する場合を示している。しかしながら、これに限定されない。高速では、各コスト計算ユニットは、第1のコスト計算ユニット2410と同じ、0..Nのオプションを含む構造を有することができる。これは、図を簡単にするために図には示されていない。
上述のように、これは、コーデックによって実行され得、ブロックごとに最良のコーディングモードを選択する、GPUフレンドリーなRDOである。図24において、入力画像(ピクチャ)は、各層において同一である。しかしながら、ピクチャの(コストを計算するための)コーディングは、異なるブロックサイズを有する各層において実行される。ブロックサイズとは別に、ブロックサイズのうちの1つ以上について、さらなるコーディングパラメータがテストされ、RDOに基づいて選択され得る。
特に、これらの変形例では、選択された層に関係するデータの指示は、コーディングモードの選択されたセット(例えば、blk_rec_params)を含む。
要約すると、一部の実施形態では、ビデオまたは画像情報コーディングのためのニューラルネットワークオートエンコーダに構造が対応するエンコーダが提供され得る。かかるエンコーダは、異なる空間解像度の層を含むニューラルネットワークによって入力画像またはビデオ情報を解析し、最低解像度層出力に対応する潜在表現をビットストリーム中で転送し、最低解像度層以外の出力をビットストリーム中で転送するように構成され得る。
復号化
上述されたエンコーダは、選択された層特徴データおよび/またはセグメンテーション情報を含むビットストリームを提供する。これに対応して、デコーダは、ビットストリームから受信したデータを複数の層で処理する。さらに、選択された層は、ビットストリームから追加の(直接)入力を受信する。入力は、何らかの特徴データ情報および/またはセグメンテーション情報であり得る。
それに対応して、以下では、特徴データである選択された層に関連する情報に焦点を当てる実施形態が説明される。他の説明される実施形態は、セグメンテーション情報である選択された層に関連する情報に焦点を当てる。ビットストリームが特徴データとセグメンテーション情報の両方を搬送し、層が特徴データとセグメンテーション情報の両方を処理する混合実施形態も存在する。
簡単な例として、ニューラルネットワークオートエンコーダのデコーダは、ビデオまたは画像情報コーディングのために提供され得る。デコーダは、低解像度層入力に対応する潜在表現をビットストリームから読み取り、低解像度層(複数可)以外の層についてビットストリームから読み取られた対応する情報に基づいて層入力情報を取得し、ビットストリームから取得された層情報と前の層からの出力とに基づいて層についての組み合わされた入力を取得し、組み合わされた入力を層に供給し、層の出力に基づいて画像を合成するように構成され得る。
ここで、「低解像度」という用語は、低解像度を有する特徴マップ、例えば、ビットストリームから与えられた潜在空間の特徴マップを処理する層を指す。低解像度は、実際には、ネットワークの最低解像度であってもよい。
デコーダは、ビットストリームから読み取られた対応する情報に基づいてセグメンテーション情報を取得することと、セグメンテーション情報に基づいて層のための組み合わされた入力を取得することとを行うようにさらに構成され得る。セグメンテーション情報は、四分木、双対(二分)木、三分木データ構造、またはそれらの組み合わせであってもよい。層入力情報は、例えば、動き情報、画像情報、および/または予測残差情報などに対応し得る。
一部の例では、層入力情報に対応するビットストリームから取得された情報は、超事前ニューラルネットワークの使用を用いて復号化される。セグメンテーション情報に対応するビットストリームから取得された情報は、超事前ニューラルネットワークを使用して復号化され得る。
デコーダは、動きベクトル(例えば、動きベクトルフィールドまたはオプティカルフロー)の復号化に容易に適用されることができる。それらの動きベクトルのうちの一部は、類似または相関されていてもよい。例えば、一定の背景を横切って移動するオブジェクトを示すビデオでは、類似する動きベクトルの2つのグループがあってもよい。動きベクトルである第1のグループは、オブジェクトを示すピクセルの予測において使用されるベクトルであり得、第2のグループは、背景のピクセルを予測するために使用されるベクトルであり得る。したがって、符号化されたデータ中の全ての動きベクトルをシグナリングする代わりに、符号化されたビデオを表すデータの量を低減するために動きベクトルのグループをシグナリングすることが有益であり得る。これは、より少量のデータを必要とする動きベクトルフィールドの表現をシグナリングすることを可能にし得る。
図9は、デコーダにおいて受信され、上述のようにエンコーダによって生成されるものであるビットストリーム930を示している。復号化側では、システム900のデコーダ部分は、一部の実施形態では、ビットストリーム930から取得されたセグメンテーション情報を解釈する信号供給論理940を含む。セグメンテーション情報に従って、信号供給論理940は、対応する選択された情報(ビットストリームからも取得される)が配置されるべき特徴マップの部分についての特定の(選択された)層、空間サイズ(解像度)および位置を識別する。
一部の実施形態では、セグメンテーション情報は必ずしもカスケードネットワークによって処理されないことに留意されたい。これは、独立して提供されてもよく、ビットストリーム内の他のパラメータから導出されてもよい。他の実施形態では、特徴データはカスケードネットワーク内で必ずしも処理されないが、セグメンテーション情報は処理される。したがって、「特徴情報を用いた復号化」および「セグメンテーション情報を用いた復号化」という2つのセクションは、かかる実施形態の例、ならびにかかる実施形態の組み合わせを説明する。
両方のセクションの実施形態について、上述のエンコーダ側の変形例(第1から第7)は、デコーダ側に対応して適用されることに留意されたい。より分かりやすくするために、変形例の追加の特徴は、両方のセクションでコピーされない。しかしながら、当業者には明らかであるように、それらは、両方のセクションの復号化アプローチに対して代替的にまたは組み合わせて適用され得る。
特徴情報を用いた復号化
本実施形態では、図33に示されるように、ビットストリームからピクチャまたはビデオ処理のためのデータを復号化するための方法が提供される。それに対応して、ビットストリームからピクチャまたはビデオ処理のためのデータを復号化するための装置が提供される。装置は、方法のステップを実行するように構成された処理回路を含むことができる。
方法は、ビットストリームから、特徴マップ要素の2つ以上のセットを取得すること3310を含み、特徴マップ要素の各セットは、(それぞれの)特徴マップに関連する。取得することは、ビットストリームを解析することによって実行され得る。一部の例示的な実装形態では、ビットストリーム解析はまた、エントロピー復号化を含み得る。本開示は、ビットストリームからデータを取得する任意の特定の方法に限定されない。
本方法は、特徴マップ要素の2つ以上のセットの各々を、複数のカスケード層のうちの2つ以上の特徴マップ処理層にそれぞれ入力するステップ3320をさらに含む。
カスケード層は、処理ネットワークの一部を形成し得る。本開示では、「カスケード」という用語は、1つの層の出力が別の層によって後で処理されることを意味する。カスケード層は、直接隣接している必要はない(カスケード層のうちの1つの出力が、カスケード層のうちの第2の層の入力に直接入る)。図9を参照すると、ビットストリーム930からのデータは、特徴マップ要素のセットを適切な層(矢印によって示される)953、952、および/または951に供給する信号供給論理940に入力される。例えば、第1の特徴要素セットは、第1の層953(処理シーケンスの最初)に挿入され、第2の特徴要素セットは、第3の層951に挿入される。セットが第2の層に挿入される必要はない。層の数および(処理順序内の)位置は変化してもよく、本開示はいかなる特定のものにも限定されない。
本方法は、複数のカスケード層による処理の結果として、ピクチャまたはビデオ処理のための該復号化データを取得すること3330をさらに含む。例えば、第1のセットは、ネットワークの全ての層によって処理される潜在特徴マップ要素セットである。第2のセットは、別の層に提供される追加のセットである。図9を参照すると、復号化データ911は、3つの層953、952、および951(この順序で)によって第1のセットを処理した後に取得される。
例示的な実装形態では、2つ以上の特徴マップ処理層のそれぞれにおいて特徴マップが処理され、2つ以上の特徴マップ処理層においてそれぞれ処理される特徴マップは解像度において異なる。例えば、第1の層によって処理される第1の特徴マップは、第2の層によって処理される第2の特徴マップの解像度とは異なる解像度を有する。
特に、2つ以上の特徴マップ処理層における特徴マップの処理は、アップサンプリングを含む。図9は、復号化部が3つの(直接)カスケードされたアップサンプリング層953、952、および951を含むネットワークを示している。
例示的な実装形態では、デコーダは、異なる空間解像度のアップサンプリング層のみを含み、アップサンプリングのために最近傍アプローチが使用される。最近傍アプローチは、所与の形状に対応する高解像度のエリアにおいて低解像度の値を繰り返す。例えば、低解像度の1つの要素が高解像度の4つの要素に対応する場合、1つの要素の値は、高解像度領域において4回繰り返される。この場合、「対応する」という用語は、最高解像度データ(初期特徴マップ、初期データ)内の同じエリアを記述することを意味する。アップサンプリングのかかる方法は、修正なしに低解像度層から高解像度層に情報を送信することを可能にし、それは、論理フラグまたはインジケータ情報などの何らかの種類のデータ、あるいは、例えば、一部の畳み込み層による修正なしにエンコーダ側で取得されたものと同じに保つことが望まれる情報に好適であり得る。かかるデータの一例は、予測情報、例えば、エンコーダ側で推定された動きベクトルを含み得る動き情報、参照ピクチャセットからのどの特定のピクチャが使用されるべきかを示す参照インデックス、単一の参照フレームを使用すべきか複数の参照フレームを使用すべきかを示す予測モード、または組み合わされたイントラ-インター予測のような異なる予測の組み合わせ、残差情報の有無などである。
しかしながら、本開示は、最近傍アプローチによって実行されるアップサンプリングに限定されない。代替的に、アップサンプリングは、何らかの補間または外挿を適用することによって、あるいは畳み込みなどを適用することによって実行され得る。これらのアプローチは、動きベクトルもしくは残差または他のサンプル関連データなど、平滑な特性を有することが予想されるデータをアップサンプリングするのに特に好適であり得る。
図9において、エンコーダ(例えば、符号911~920)およびデコーダ(例えば、符号940~951)は、対応して同じ数のダウンサンプリング層およびアップサンプリング層を有し、アップサンプリングには最近傍法が使用されてもよく、ダウンサンプリングには平均プーリングが使用されてもよい。プーリング層の形状およびサイズは、アップサンプリング層のスケールファクタと整合される。一部の他の可能な実装形態では、プーリングの別の方法、例えば最大プーリングが使用され得る。
複数のエンコーダ実施形態においてすでに例示されたように、ピクチャまたはビデオ処理のためのデータは、動きベクトルフィールドを含み得る。例えば、図12は、エンコーダおよびデコーダ側を示している。デコーダ側では、ビットストリーム1250が解析され、そこから動き情報1260(場合によっては、以下で説明されるセグメンテーション情報を含む)が取得される。次いで、取得された動き情報は、動き生成ネットワーク1270に提供される。動き生成ネットワークは、動き情報の解像度を増加させる、すなわち動き情報を高密度化することができる。再構成された動きベクトルフィールド(例えば、密なオプティカルフロー)1275は、次いで、動き補償ユニット1280に提供される。動き補償ユニット1280は、再構成された動きベクトルフィールドを使用して、参照フレーム(複数可)に基づいて予測ピクチャ/ビデオデータを取得し、それに基づいて動き補償されたフレームを再構成する(例えば、図5Aのエンコーダのデコーダ部分、または図7Bの再構成ユニット314に例示されるように、復号化された残差を加算することによって)。
図13はまた、デコーダ側の動き生成(高密度化)ネットワーク1360を示している。ネットワーク1360は、図9の信号供給論理940と機能が類似した信号供給論理1370と、3つのアップサンプリング(処理)層とを含む。図9を参照して上述された実施形態との主な違いは、図13において、ネットワーク1360が、動きベクトルフィールドを出力する動きベクトル情報処理に特化されていることである。
上述のように、一実施形態によれば、本方法は、ビットストリームから、2つ以上の層に関係するセグメンテーション情報を取得することをさらに含む。次いで、ビットストリームから特徴マップ要素を取得することは、セグメンテーション情報に基づく。特徴マップ要素のセットを2つ以上の特徴マップ処理層にそれぞれ入力することは、セグメンテーション情報に基づく。解析および処理におけるセグメンテーション情報の使用に関する一部の詳細な例が、セグメンテーション情報を使用する復号化に関するセクションにおいて以下に提供される。例えば、図28および図29は、非常に具体的な(単に例示的な)層処理オプションを提供する。
一部の実施形態では、複数のカスケード層は、複数のセグメンテーション情報処理層をさらに含む。本方法はさらに、複数のセグメンテーション情報処理層においてセグメンテーション情報を処理することを含む。例えば、複数のセグメンテーション情報処理層のうちの少なくとも1つにおけるセグメンテーション情報の処理は、アップサンプリングを含む。セグメンテーション情報のかかるアップサンプリングおよび/または特徴マップの該アップサンプリングは、一部の実施形態では、最近傍アップサンプリングを含む。概して、特徴マップ情報に適用されるアップサンプリングとセグメンテーション情報に適用されるアップサンプリングとは異なり得る。さらに、同じネットワーク内のアップサンプリングは異なり得るため、1つのネットワーク(セグメンテーション情報処理または特徴マップ処理)は、異なるタイプのアップサンプリング層を含み得る。かかる例は、例えば図20または図21に示されている。最近傍以外のアップサンプリングタイプは、多項式アプローチ、例えば双一次、三次など、一部の補間アプローチを含み得ることに留意されたい。
例示的な実装形態によれば、セグメンテーション情報の該アップサンプリングおよび/または特徴マップの該アップサンプリングは、(転置された)畳み込みを含む。これは、エンコーダについて上述された第1の変形例に対応する。図18は、最近傍アップサンプリングの代わりに畳み込み演算「conv↑」を含む動き生成ユニット1869をデコーダ側に示している。これは、学習可能なアップサンプリング処理を可能にし、例えば、動き情報の高密度化のためにそれを使用する場合、最適なアップサンプリング変換を見つけることを可能にし、エンコーダを参照して上述されたように、ブロック単位で平均化された動きベクトル情報を使用して、動き補償によって引き起こされるブロッキング効果を低減し得る。同じことが、例えば元の画像強度値または予測残差生成のためのテクスチャ復元プロセスに適用可能である。動き生成ユニット1869は、図9の信号供給論理940または図13の信号供給論理1370に機能的に対応する信号供給論理も含む。
図30は、第1の変形例による例示的なデコーダ側層処理のブロック図を示している。特に、ビットストリーム3030が解析され、信号供給論理3040(信号供給論理940または1370に機能的に対応する)は、畳み込みアップサンプリングフィルタ300に選択命令を提供する。一部の実施形態では、畳み込みフィルタは、(フィルタ1~Nとして示される)N個のフィルタのセットから選択可能である。フィルタ選択は、選択されたフィルタを示し、ビットストリームから解析された情報に基づき得る。選択されたフィルタの指示は、RDOなどの最適化アプローチに基づいてエンコーダによって与えられ(生成され、ビットストリーム中に挿入され)得る。特に、図17または図24に例示されるRDOが適用されてもよい(フィルタサイズ/形状/次数をオプションの1つとして、すなわち最適化されるコーディングパラメータとして扱う)。しかしながら、本開示はそれに限定されず、概して、フィルタは、(コーディングモード、補間方向などの)他のシグナリングされたパラメータに基づいて導出され得る。
要約すると、信号供給論理ユニットは、異なるフィルタ形状を有する異なる層の入力を制御し、ビットストリームから取得されたセグメンテーションおよび動き情報に従って、層出力を次の層に選択的にバイパスする。畳み込みフィルタユニット3000は、1つの層による畳み込みに対応する。複数のかかる畳み込みスワンプフィルタは、図18に示されるようにカスケードされ得る。本開示は、可変または訓練可能なフィルタ設定に限定されないことに留意されたい。概して、畳み込みアップサンプリングはまた、固定畳み込み演算を用いて実行され得る。
この実施形態の態様は、他の実施形態の態様と組み合わせられることができる。例えば、ダウンサンプリング層における動き情報平均化を有するエンコーダは、畳み込みアップサンプリング層を含むデコーダと組み合わせて使用され得る。より良好な潜在表現を見つけることを目的とした畳み込み層を有するエンコーダは、最近傍ベースのアップサンプリング層を含む動き生成ネットワークと組み合わせられることができる。さらなる組み合わせが考えられる。換言すれば、エンコーダおよびデコーダの実装形態は、対称である必要はない。
図32Aは、最近傍アプローチを適用する再構成の2つの例を示している。特に、実施例1では、最低解像度層のセグメンテーション情報のフラグの値が(1に)設定されている場合を示している。これに対応して、動き情報は、1つの動きベクトルを示している。動きベクトルは最低解像度層においてすでに示されているため、さらなる動きベクトルおよびさらなるセグメンテーション情報はビットストリームにおいてシグナリングされない。ネットワークは、1つのシグナリングされた動きベクトルから、最近傍によるアップサンプリング中にそれをコピーすることによって、高解像度(2×2)および最も高い解像度(4×4)を有するそれぞれの動きベクトルフィールドを生成する。結果は、シグナリングされた動きベクトルと同一で等しい16個の動きベクトル全てを有する4×4エリアである。
図32Bは、畳み込み層ベースのアプローチを適用する再構成の2つの例を示している。実施例1は、図32Aの実施例1と同じ入力を有する。特に、最低解像度層のセグメンテーション情報は、(1に)設定されたフラグの値を有する。これに対応して、動き情報は、1つの動きベクトルを示している。しかしながら、1つの動きベクトルを単にコピーする代わりに、(場合によっては訓練された)畳み込み層を適用した後、上位層および最上位層における動きベクトルは完全には同一ではない。
同様に、図32Aの実施例2は、最も低い解像度層におけるセグメンテーション情報0と、次の(高解像度の)層のセグメンテーション情報0101とを示している。それに応じて、セグメンテーション情報によって示される位置に対する2つの動きベクトルが、動き情報としてビットストリーム中でシグナリングされる。これらは中間層に示されている。最下層に見られるように、シグナリングされた動きベクトルは、最高解像度領域をカバーするためにそれぞれ4回コピーされる。最高解像度(最下)層の残りの8つの動きベクトルは、ビットストリーム中でシグナリングされる。図32Bの実施例2は、最近傍コピーの代わりに畳み込みを適用する。動きベクトルはもはやコピーされない。図32Aにおいてコピーされた動きベクトル間の遷移は、ここでは幾分滑らかであり、ブロッキングアーチファクト低減を可能にする。
エンコーダについて上述した第2の変形例と同様に、デコーダにおいて、複数のカスケード層は、異なる解像度を有する層間でアップサンプリングを行わない畳み込み層を含む。エンコーダおよびデコーダは、この点に関して必ずしも対称ではないことに留意されたい:エンコーダは、かかる追加の層を有し得、デコーダは有し得ず、またはその逆も同様である。もちろん、エンコーダおよびデコーダは対称的に設計されてもよく、エンコーダおよびデコーダの対応するダウンサンプリング層とアップサンプリング層との間に追加の層を有してもよい。
セグメンテーション情報処理と特徴マップ処理との組み合わせに関して、ビットストリームから特徴マップ要素を取得することは、複数のセグメンテーション情報処理層のうちの少なくとも1つによって処理された処理済みセグメンテーション情報に基づく。セグメンテーション層は、セグメンテーション情報を使用した復号化のセクションにおいて以下でより詳細に説明されるように、セグメンテーション情報を解析および解釈し得る。本明細書に記載の実施形態および例は、本節の実施形態と組み合わせて適用可能であることに留意されたい。特に、以下の図26から図32Bを参照して説明されるセグメンテーション情報の層処理は、本明細書で説明される特徴マップ処理と組み合わせて実行されてもよい。
例えば、特徴マップ要素の2つ以上のセットの各々を2つ以上の特徴マップ処理層にそれぞれ入力することは、複数のセグメンテーション情報処理層のうちの少なくとも1つによって処理された処理済みセグメンテーション情報に基づく。取得されたセグメンテーション情報は、シンタックス要素のセットによって表され、シンタックス要素のセット中の要素の位置は、どの特徴マップ要素位置にシンタックス要素が関係するかを示す。シンタックス要素のセットは、例えば、固定コード、可変長コードまたは算術コードなどのエントロピーコードを使用してバイナリ化され得るビットストリーム部分であり、それらのいずれもコンテキスト適応型であり得る。本開示は、エンコーダ側とデコーダ側の両方に知られているあらかじめ定義された構造を有すると、ビットストリームのいかなる特定のコーディングまたは形態にも限定されない。このようにして、セグメンテーション情報および特徴マップ情報の解析および処理は、関連して行われ得る。例えば、特徴マップの処理は、シンタックス要素の各々について、(i)シンタックス要素が第1の値を有するとき、ビットストリーム内のシンタックス要素の位置によって示される位置上の特徴マップの要素をビットストリームから解析することと、(ii)そうでない場合(または、より概しては、シンタックス要素が第2の値を有するとき)、ビットストリーム内のシンタックス要素の位置によって示される位置上の特徴マップの要素をビットストリームから解析することをバイパスすることとを含む。シンタックス要素は、エンコーダにおいてビットストリームに順序付けられ、処理ネットワークの特定の層構造によってデコーダから正しい順序で解析されるバイナリフラグであり得る。
オプション(i)および(ii)は、バイナリでないシンタックス要素に対しても提供され得ることに留意されたい。この場合、第1の値は解析を意味し、第2の値はバイパスを意味する。シンタックス要素は、第1の値および第2の値とは別の一部のさらなる値をとり得る。これらはまた、解析またはバイパスをもたらし得るか、あるいは特定のタイプの解析などを示し得る。解析された特徴マップ要素の数は、第1の値に等しいシンタックス要素の量に対応し得る。
例示的な実装形態によれば、複数のN個の特徴マップ処理層の各層1<j<Nによる特徴マップの処理は、ビットストリームからj番目の特徴マップ処理層のセグメンテーション情報要素を解析することと、先行する特徴マップ処理層によって処理された特徴マップを取得するとともに、ビットストリームから特徴マップ要素を解析し、解析された特徴マップ要素を取得された特徴マップと関連付けることとをさらに含み、処理された特徴マップ内の特徴マップ要素の位置は、解析されたセグメンテーション情報要素および先行するセグメンテーション情報処理層によって処理されたセグメンテーション情報によって示される。関連付けは、例えば、以前に処理された特徴マップ要素の置換、または結合、例えば加算、減算もしくは乗算とすることができる。一部の例示的な実装形態が以下に提供される。解析は、非常にコンパクトで効率的なシンタックスの可能性を提供する、以前に処理されたセグメンテーション情報に依存してもよい。
例えば、本方法は、シンタックス要素が第1の値を有するとき、ビットストリームから特徴マップの要素を解析することと、シンタックス要素が第2の値を有するか、または先行するセグメンテーション情報処理層によって処理されたセグメンテーション情報が第1の値を有するとき、ビットストリームから特徴マップの要素を解析することをバイパスすることとを含んでもよい。これは、関連する部分が先行する層で解析された場合、解析がバイパスされることを意味する。例えば、セグメンテーション情報を表すビットストリームから解析されたシンタックス要素は、バイナリフラグである。上述のように、処理されたセグメンテーション情報は、バイナリフラグのセットによって表されることが有益であり得る。バイナリフラグのセットは、1または0のいずれかの値(上述の第1の値および第2の値に対応する)を有するバイナリフラグのシーケンスである。
一部の実施形態では、各セグメンテーション情報処理層jにおけるセグメンテーション情報のアップサンプリングは、入力されたセグメンテーション情報によって示される取得された特徴マップ内の各p番目の位置について、p番目の位置と同じ再構成ピクチャ内の領域に含まれる特徴マップ位置の指示をアップサンプリングされたセグメンテーション情報として決定することをさらに含む。これは、再構成画像(または再構成された特徴マップもしくは概してデータ)と、サブサンプリングされた特徴マップにおける位置と、対応するセグメンテーションフラグとの間の空間的関係を提供する。
すでに上述されたように、エンコーダの実施形態と同様に、ピクチャまたはビデオ処理のためのデータは、ピクチャデータ(ピクチャサンプルなど)および/または予測残差データおよび/または予測情報データを含み得る。本開示で「残差」に言及するとき、これらは、ピクセル領域残差または変換(スペクトル)係数(すなわち、変換された残差、サンプル/ピクセル領域とは異なる領域で表される残差)であり得ることに留意されたい。
上記のエンコーダ側について説明された第4の変形例と同様に、例示的な実装形態によれば、特徴マップのアップサンプリングにおいてフィルタが使用され、フィルタの形状は、正方形、水平長方形、および垂直長方形のうちのいずれか1つである。フィルタ形状は、図25に示すパーティション形状と同様であってもよいことに留意されたい。
例示的なデコーダ側層処理が図20に示されている。動き生成ネットワーク(ユニット)2060は、信号供給論理と、所定のまたはあらかじめ定義されたフィルタのセットから選択され得るフィルタ(アップサンプリングフィルタ)を使用する1つ以上(ここでは2つ)のアップサンプリング層とを含む。選択は、エンコーダ側で、例えばRDOによって、または他の設定によって実行され、ビットストリーム中でシグナリングされ得る。デコーダ側では、フィルタ選択の指示がビットストリームから解析され、適用される。代替的に、フィルタは、ビットストリームに基づいて導出された他のコーディングパラメータに基づいて明示的にシグナリングすることなしに、デコーダにおいて選択され得る。かかるパラメータは、予測タイプ、方向、動き情報、残差、ループフィルタリング特性など、コンテンツと相関する任意のパラメータであり得る。
図31は、N個のフィルタ1~Nのうちの1つの選択をサポートするアップサンプリングフィルタユニット3100のブロック図を示している。フィルタ選択のシグナリングは、N個のフィルタのうちの1つのインデックスを直接含み得る。それは、フィルタ配向、フィルタ次数、フィルタ形状、および/または係数を含み得る。復号化側において、信号供給論理は、フィルタ選択フラグ(例えば、垂直および水平フィルタまたはさらなる配向を区別するための配向フラグ)を解釈し、対応するフィルタ形状セットを有する層に特徴マップ値(複数可)を供給する。図31において、信号供給論理から選択的バイパス論理への直接接続は、フィルタのいずれも選択しないことを可能にする。フィルタ選択インジケータの対応する値はまた、ビットストリーム中でシグナリングされるか、または導出され得る。
概して、特徴マップのアップサンプリングにおいてフィルタが使用され、ビットストリームから情報を入力することは、ビットストリームからフィルタ形状および/またはフィルタ配向および/またはフィルタ係数を示す情報を取得することをさらに含む。各層がそこから選択するためのフィルタのセットを有する実装形態、または各層が1つのフィルタであり、どの層が選択されるべきであり、どの層がバイパスされるべきであるかをフィルタ選択フラグ(インジケータ)に基づいて信号供給論理が決定される実装形態があり得る。
一部の実施形態では、フィルタ形状を示す該情報がフラグから構成されるマスクを示し、第3の値を有するフラグが非ゼロフィルタ係数を示し、第3の値とは異なる第4の値を有するフラグがゼロフィルタ係数を示すという点で、マスクがフィルタ形状を表すという点で、柔軟なフィルタ形状が提供され得る。換言すれば、エンコーダ側についてもすでに説明されたように、フィルタ形状は、非ゼロ係数の位置を示すことによって定義され得る。非ゼロ係数は、あらかじめ定義されたルールに基づいて導出されるか、または同じくシグナリングされ得る。
上記のデコーダの実施形態は、非一時的媒体に記憶されたコンピュータプログラム製品として実装されてもよく、このコンピュータプログラム製品は、1つ以上のプロセッサ上で実行されると、上記の方法のいずれかのステップを実行する。同様に、上記のデコーダの実施形態は、上述の方法のいずれかのステップを実行するように構成された処理回路を含む、画像またはビデオを復号化するためのデバイスとして実装されてもよい。特に、ビットストリームからピクチャまたはビデオ処理のためのデータを復号化するためのデバイスが提供され得、デバイスは、ビットストリームから特徴マップ要素の2つ以上のセットを取得するように構成された取得ユニットであって、特徴マップ要素の各セットが特徴マップに関係する、取得ユニットと、特徴マップ要素の2つ以上のセットの各々を、それぞれ、複数のカスケード層のうちの2つ以上の特徴マップ処理層に入力するように構成された入力ユニットと、複数のカスケード層による処理の結果としてピクチャまたはビデオ処理のための復号化データを取得するように構成された復号化データ取得ユニットとを含む。これらのユニットは、以下でより詳細に説明されるように、ソフトウェアまたはハードウェアで、あるいは両方の組み合わせとして実装され得る。
セグメンテーション情報を用いた復号化
受信側では、この実施形態のデコーダは、セグメンテーション情報の解析および解釈を実行する。したがって、図34に示されるように、ビットストリームからピクチャまたはビデオ処理のためのデータを復号化するための方法が提供される。それに対応して、ビットストリームからピクチャまたはビデオ処理のためのデータを復号化するための装置が提供される。装置は、方法のステップを実行するように構成された処理回路を含むことができる。
方法は、ビットストリームから、セグメンテーション情報要素の2つ以上のセットを取得すること3410を含む。取得することは、ビットストリームを解析することによって実行され得る。一部の例示的な実装形態では、ビットストリーム解析はまた、エントロピー復号化を含み得る。本開示は、ビットストリームからデータを取得する任意の特定の方法に限定されない。本方法は、セグメンテーション情報要素の2つ以上の集合の各々を、複数のカスケード層のうちの2つ以上のセグメンテーション情報処理層にそれぞれ入力すること3420をさらに含む。セグメンテーション情報処理層は、特徴マップ処理層と同じ層または異なる層であってもよいことに留意されたい。換言すれば、1つの層は、1つ以上の機能を有し得る。
さらに、2つ以上のセグメンテーション情報処理層の各々において、方法は、セグメンテーション情報のそれぞれのセットを処理することを含む。ピクチャまたはビデオ処理のために該復号化データを取得すること3430は、複数のカスケード層によって処理されたセグメンテーション情報に基づく。
図26は、3層復号化のための例示的なセグメンテーション情報を示している。セグメンテーション情報は、特徴マップ要素が解析されるかまたは他の方法で取得される層を選択すること(エンコーダ側の記述を参照)と見なされ得る。特徴マップ要素2610は選択されない。したがって、フラグ2611はエンコーダによって0に設定される。これは、最も低い解像度を有する特徴マップ要素2610がビットストリームに含まれないことを意味する。しかし、特徴マップ要素が選択されないことを示すフラグ2611は、ビットストリームに含まれる。例えば、特徴マップ要素が動きベクトルである場合、これは、最大ブロックの動きベクトル2610が選択されず、ビットストリームに含まれないことを意味し得る。
図26に示される例では、特徴マップ2620において、特徴マップ2610の特徴マップ要素を決定するために使用される4つの特徴マップ要素のうち、3つの特徴マップ要素がシグナリングのために選択され(フラグ2621、2622、および2624によって示される)、1つの特徴マップ要素2623は選択されない。動きベクトルを使用する例では、これは、特徴マップ2620から3つの動きベクトルが選択され、それらのそれぞれのフラグが1に設定される一方で、1つの特徴マップ要素が選択されず、そのそれぞれのフラグ2623が0に設定されることを意味し得る。
次いで、ビットストリームは、4つのフラグ2621~2624の全てと、3つの選択された動きベクトルとを含み得る。概して、ビットストリームは、4つのフラグ2621~2624と、3つの選択された特徴マップ要素とを含み得る。特徴マップ2630では、特徴マップ2620の選択されていない特徴マップ要素を決定する要素のうちの1つ以上が選択され得る。
この例では、特徴マップ要素が選択されるとき、高解像度の特徴マップの要素のいずれも選択されない。この例では、フラグ2621、2622、および2624によってシグナリングされる特徴マップ要素を決定するために使用される特徴マップ2630の特徴マップ要素のいずれも選択されない。一実施形態では、これらの特徴マップ要素のフラグのいずれもビットストリームに含まれない。むしろ、フラグを有する特徴マップ要素2623を決定する特徴マップ2630の特徴マップ要素のフラグのみがビットストリームに含まれる。
特徴マップ要素が動きベクトルである例では、特徴マップ要素2621、2622および2624は各々、特徴マップ2630中の各々4つの動きベクトルのグループによって決定され得る。フラグ2621、2622および2624を用いて動きベクトルを決定するグループの各々において、動きベクトルは、(フラグ2623によってシグナリングされる)選択されていない特徴マップ2630中の動きベクトル(特徴マップ要素)を決定する特徴マップ2620中の4つの動きベクトルよりも、互いに対してより多くの類似性を有し得る。
図26は、ビットストリームの特性によって上述された。デコーダは、それに応じてかかるビットストリームを復号化(解析)することに留意されたい、すなわち、デコーダは、上記で説明されたようにフラグの値に基づいてどの情報が含まれる(シグナリングされる)かを決定し、それに応じて解析された情報を解析/解釈する。
例示的な実装形態では、セグメンテーション情報は、図27に示されるように編成される。画像のシーケンスと見なされる画像またはビデオなどの2D情報の場合、ある層の特徴マップは、2次元空間において表され得る。セグメンテーション情報は、この位置に対応する特徴マップ値がビットストリームにおいて提示されるかどうかを示す、2D空間の位置についてのインジケータ(バイナリフラグ)を含む。
図27では、セグメンテーション情報を復号化するための開始層(層0)、例えば、最低解像度の層、すなわち、潜在表現層が存在する。この開始層では、各2D位置はバイナリフラグを含む。かかるフラグが1に等しい場合、選択された情報は、この特定の層におけるこの位置についての特徴マップ値を含む。一方、かかるフラグが0に等しい場合、この特定の層においてこの位置についての情報はない。フラグのこのセット(または概してフラグのテンソル、ここではフラグの行列)は、TakeFromCurrentと称される。TakeFromCurrentテンソルは、例えば、最近傍法を使用して、次の層解像度にアップサンプリングされる。このテンソルをTakeFromPrevとする。このテンソル内のフラグは、対応するサンプル位置が前の層(ここでは層0)において埋められたか否かを示す。
次のステップとして、信号供給論理は、現在の解像度層(LayerFlag)の位置のフラグを読み取る。この例示的な実装形態では、前の層において埋められなかった(1に設定されなかった、特徴マップ要素値(複数可)で埋められなかった)位置のみがシグナリングされる。論理演算を使用して、TakeFromPrev==0または!TakeFromPrev==1として表されることができ、ここで、「!」は、論理NOT演算(否定)を表す。
この層に必要なフラグの量は、TakeFromPrevテンソルにおけるゼロ(論理偽)要素の量、または逆(!TakeFromPrev)テンソルにおける1(論理真)を有する値の量として計算されることができる。TakeFromPrevテンソル内の非ゼロ要素については、ビットストリーム内にフラグは必要ない。これは、図では、読み取る必要のない位置に「-」を示すことによって示されている。実装形態の観点から、逆テンソル上の要素の和をsum(!TakeFromPrev)として計算することがより容易であり得る。信号供給論理は、この算術を使用して、ビットストリームからいくつのフラグを解析する必要があるかを識別することができる。TakeFromPrevの値が1に等しい位置に読み出しフラグが配置されてLayerFlagテンソルを取得する。次いで、現在の解像度層(ここではLayer1)のTakeFromCurrentテンソルは、現在の解像度層のためにビットストリームから読み取られた位置にフラグを保持し、前の解像度層において読み取られた位置(LayerFlagでは「-」によってマークされた位置)の値をゼロにすることによって、TakeFromPrevテンソルとLayerFlagテンソルとの組み合わせとして取得される。これは、論理AND演算子を使用して、TakeFromCurrent=!TakeFromPrev AND LayerFlagのように表現および実装され得る。次いで、前の解像度層で読み取られた位置を考慮に入れるために、TakeFromCurrentテンソルが、TakeFromCurrent=TakeFromCurrent OR TakeFromPrevとして論理OR演算を使用して取得される。ブール演算は、通常の数学演算、例えば、ANDのための乗算およびORのための加算を使用して実装され得ることを理解されたい。これは、勾配を保存および転送するという利点を与え、上述の方法をエンドツーエンド訓練において使用することを可能にする。
次いで、取得されたTakeFromCurrentテンソルは、次の解像度層(ここでは層2)にアップサンプリングされ、上述の動作が繰り返される。
一般性のため、および実装形態を容易にするために、全てのフラグがビットストリームから解析される第1の解像度層を特に考慮することなく、全ての解像度層の処理を統一することが有益である。これは、第1の(低解像度の)層(Layer0)で処理する前にTakeFromPrevをゼロで初期化し、各解像度層について上述のステップを繰り返すことによって達成されることができる。
シグナリングオーバーヘッドをさらに低減するために、一部のさらなる実装形態では、最後の解像度層(ここでは第3の層、すなわちLayer2)のためのLayerFlagsは、ビットストリームに転送される(エンコーダにおいて含められ、デコーダにおいて解析される)必要はない。これは、最後の解像度層について、特徴マップ値が、(全ての)前の解像度層において(前の解像度層のいずれかにおいて)取得されなかった最後の解像度層の全ての位置についての選択された情報(図11の1120参照)としてビットストリームにおいて送信されることを意味する。換言すれば、最後の解像度層について、TakeFromCurrent=!TakeFromPrev、すなわち、TakeFromCurrentは否定されたTakeFromPrevに対応する。この場合も、最後の解像度層の処理の汎用性を保つために、LayerFlagは1で初期化されることができ、TakeFromCurrent=!TakeFromPrev AND LayerFlagという同じ式が使用されることができる。
一部のさらなる可能な実装形態では、最後の解像度層は、元の画像と同じ解像度を有する。最後の解像度層が追加の処理ステップを有さない場合、これは、元のテンソルの一部の値を送信し、オートエンコーダにおける圧縮をバイパスすることを意味する。
以下では、信号供給論理2800の例が、図28を参照して説明される。図28において、デコーダの信号供給論理2800は、ビットストリームで送信される選択された情報(LayerMv)を取得して利用するために、セグメンテーション情報(LayerFlag)を使用する。特に、各層において、ビットストリームは、それぞれのシンタックス解釈ユニット2823、2822、および2821において(この順序で)、セグメンテーション情報(LayerFlag)と、場合によっては選択された情報(LayerMv)とを取得するために解析される。上述したように、第1の層(シンタックス解釈2823)において他の層と同じ動作を可能にするために、TakeFromPrevテンソルは、2820において全てゼロに初期化される。TakeFromPrevテンソルは、前の層のシンタックス解釈(例えば、2823から)から後の層(例えば、2822)のシンタックス解釈への処理の順序で伝播される。ここでの伝播は、図27を参照して上述されたように、2倍のアップサンプリングを含む。
各解像度層におけるセグメンテーション情報(LayerFlag)を解釈する間に、テンソルTakeFromCurrentが取得(生成)される。このテンソルTakeFromCurrentは、特徴マップ情報(LayerMv)が現在の解像度層の各特定の位置についてビットストリーム内に存在するか否かを示すフラグを含む。デコーダは、ビットストリームから特徴マップLayerMvの値を読み出し、TakeFromCurrentテンソルのフラグが1に等しい位置にそれらを配置する。現在の解像度層についてのビットストリームに含まれる特徴マップ値の総量は、TakeFromCurrentにおける非ゼロ要素の量に基づいて、またはsum(TakeFromCurrent)-TakeFromCurrentテンソルの全ての要素にわたる和として計算されることができる。次のステップとして、TakeFromCurrentテンソルの値が1に等しい位置の特徴マップ値を、選択された情報としてビットストリームで送信された特徴マップ値(LayerMv)で置き換えることによって、(例えば、2813で生成され、次の層処理2812の解像度に一致するようにアップサンプリングされた2801)前の解像度層の出力を、(例えば、2812で)各層のテンソル結合論理2813、2812、および2811が結合する。上述のように、第1の層(テンソル結合2813)において他の層と同じ演算を可能にするために、結合テンソルは、2810において全てゼロに初期化される。(2811において)全ての層からのLayerFlagsを処理し、最後の層の出力テンソルを生成した後、2801において、結合テンソルは4でアップサンプリングされて、W×Hである密なオプティカルフローの元のサイズを取得する。
図28の例示的な実装形態は、GPU/NPU上で実行し、並列性を利用することを可能にし得る、完全に並列化可能な方式を提供する。勾配を転送する完全に訓練可能な方式は、エンドツーエンドの訓練可能なビデオコーディングソリューションにおいてそれを使用することを可能にする。
図29は、信号供給論理2900の別の可能な例示的な実装形態を示している。この実装形態は、ビットストリームにおいて転送される(エンコーダにおいて含まれ、デコーダにおいて解析される)動き情報を取得するためにどの層が使用されるべきかを示す異なる解像度の層のインデックスを含むLayerIdxテンソル(図29においてLayerIdxUpと称される)を生成する。各シンタックス解釈ブロック(2923、2922、2923)において、LayerIdxテンソルは、最も高い解像度から最も低い解像度まで番号付けされたアップサンプリング層インデックスによって乗算されたTakeFromCurrentテンソルを加算することによって更新される。次いで、LayerIdxテンソルがアップサンプリングされ、処理順序で次の層に、例えば2923から2922に、および2922から2921に転送される(渡される)。全ての層における処理を同様にするために、テンソルLayerIdxは、2920においてゼロ初期化され、第1の層のシンタックス解釈2923に渡される。
最後の(ここでは第3の)層の後、LayerIdxテンソルは元の解像度にアップサンプリングされる(2995を4でアップサンプリングする)。その結果、LayerIdxの各位置は、動き情報を取るための層のインデックスを含む。LayerIdxの位置は、同じ解像度で特徴マップデータ(ここでは密なオプティカルフロー)の元の解像度に対応し、この例では2D(行列)である。したがって、再構成されたオプティカルフロー中の各位置について、LayerIdxは、(どの層のMayerMVから)どこから動き情報を取るべきかを指定する。
動き情報(LayerMv、図29ではLayerMvUpとも称される)は、次のようにして生成される。各空間解像度層において、テンソル結合ブロック(2913,2912,2911)は、(それぞれのシンタックス解釈ユニット2923、2922、2921を通過した)ビットストリームから取得されたLayerMvを、ビットストリームから取得されたセグメンテーション情報(LayerFlag)に基づく中間テンソルおよび中間TakeFromCurrentブールテンソルと、上述の方法に従って結合する。中間テンソルは、ゼロ(初期化ユニット2910、2919、2918を参照)または任意の他の値によって初期化されることができる。初期値は、最終的に全てのステップが完了した後に、これらの値がこの方法による密なオプティカルフロー再構成2990のために選択されないため、重要ではない。動き情報を含む結合テンソル(2913、2912、2911の各々から出力される)は、アップサンプリングされ、前の空間解像度層の結合テンソルと連結される(2902,2901)。連結は、異なる解像度の層から取得された動き情報に対応する追加の次元に沿って実行される(すなわち、連結前の2Dテンソル2902は、連結後に3Dテンソルになり、連結前の3Dテンソル2901は、連結後に43Dテンソルのままであるが、テンソルのサイズは増加する)。最後に、LayerIdxUpおよびLayerMvUpについての全てのアップサンプリングステップの完了後、LayerMvUpにおける軸上の指標としてLayerIdxUpの値を使用して、LayerMvUpから動き情報を選択することによって、再構成された密なオプティカルフローが取得され、ここで、軸は、LayerMvUp連結ステップ中に増加された次元である。換言すれば、LayerMvUpにおける追加された次元は、層の数にわたる次元であり、LayerIdxUpは、各位置に対して適切な層を選択する。
上記の特定の例示的な実装形態は、本開示を限定するものではない。概して、セグメンテーションは、種々の考えられる方法で実行され、ビットストリーム内でシグナリングされ得る。概して、セグメンテーション情報要素のセットを取得することは、複数のカスケード層のうちの少なくとも1つのセグメンテーション情報処理層によって処理されたセグメンテーション情報に基づく。かかる層は、図28に示されるように、解析されたセグメンテーション情報LayerFlagの意味(セマンティック)を解析/解釈するシンタックス解釈ユニット(2823,2822,2821)を含み得る。
より具体的には、セグメンテーション情報要素のセットの入力は、複数のカスケード層のうちの少なくとも1つによって出力された処理されたセグメンテーション情報に基づく。これは、例えば図28において、シンタックス解釈ユニット(2823,2822,2821)間のTakeFromPrevテンソルの受け渡しによって示されている。エンコーダ側についての説明ですでに説明されたように、一部の例示的な実装形態では、2つ以上のセグメンテーション情報処理層においてそれぞれ処理されるセグメンテーション情報は解像度において異なる。
さらに、2つ以上のセグメンテーション情報処理層におけるセグメンテーション情報の処理は、図9、図13などを参照してすでに例示されたように、アップサンプリングを含む。例えば、セグメンテーション情報の該アップサンプリングは、最近傍アップサンプリングを含む。この実施形態ならびに前の実施形態では、本開示は、最近傍アップサンプリングを適用することによって限定されないことに留意されたい。アップサンプリングは、隣接するサンプル(要素)値の単純なコピーではなく、補間を含み得る。補間は、線形または多項式、例えば、三次アップサンプリングなどの任意の既知の補間であってもよい。コピーに関して、最近傍によって実行されるコピーは、所定の(利用可能な)最近傍、例えば上または左からの要素値のコピーであることに留意されたい。充填される位置から同じ距離に隣接するものがある場合には、コピー元となるかかる隣接するものの事前定義が必要となることがある。
第1の変形例について上述したように、一部の例示的な実装形態では、該アップサンプリングは転置畳み込みを含む。畳み込みアップサンプリングを特徴マップ情報に適用することに加えて、またはその代わりに、畳み込みアップサンプリングは、セグメンテーション情報にも適用され得る。セグメンテーション情報に対して実行されるアップサンプリングタイプは、特徴マップ要素に適用されるアップサンプリングタイプと必ずしも同じではないことに留意されたい。
概して、複数のカスケード層からの複数のN個のセグメンテーション情報処理層の各セグメンテーション情報処理層jについて、入力することは、
-j=1の場合、ビットストリームから(および/または初期化、例えば2820における0への初期化に基づいて)初期セグメンテーション情報を入力し、そうでない場合、(j-1)番目のセグメンテーション情報処理層によって処理されたセグメンテーション情報を入力することと、
-処理されたセグメンテーション情報を出力することとを含む。
これは、入力層に関連するセグメンテーション情報であり、必ずしも(依然として可能性として)ビットストリームからのセグメンテーション情報全体ではない。j番目の層におけるアップサンプリングされたセグメンテーション情報は、j番目の層においてアップサンプリングされた、すなわちj番目の層によって出力されたセグメンテーション情報である。概して、セグメンテーション層による処理は、アップサンプリング(TakeFromPrev)と、ビットストリームからの新しい要素を含めること(LayerFlag)とを含む。
例えば、複数のN個のセグメンテーション情報処理層の各層j<Nによる入力されたセグメンテーション情報の処理は、ビットストリームからセグメンテーション情報要素(LayerFlag)を解析することと、解析されたセグメンテーション情報要素を先行する層によって出力されたセグメンテーション情報(TakeFromPrev)と(例えば、図28のシンタックス解釈ユニット282xにおいて)関連付けることとをさらに含む。関連するセグメンテーション情報内の解析されたセグメンテーション情報要素(LayerFlag)の位置は、先行する層によって出力されたセグメンテーション情報に基づいて決定される。図28および図29に見られるように、位置情報を関連付け、伝播する種々の異なる方法があり得る。本開示は、いかなる特定の実装形態にも限定されない。
例えば、ビットストリームから解析されたセグメンテーション情報要素の量は、先行する層によって出力されたセグメンテーション情報に基づいて決定される。特に、ある領域が前の層からのセグメンテーション情報によってすでにカバーされていた場合、その領域は後続の層上で再びカバーされる必要はない。この設計は、効率的な解析アプローチを提供することに留意されたい。結果として得られる再構成されたセグメンテーション情報の位置に対応する結果として得られる再構成された特徴マップデータの各位置は、(N個の処理層のうちの)単一の層に属するセグメンテーション情報にのみ関連付けられる。これは重複がないことを意味する。しかしながら、本開示は、かかるアプローチに限定されない。セグメンテーション情報は、いくらかの冗長性を維持することにつながり得るとしても、重複していることが考えられる。
図27にすでに示されているように、一部の実施形態では、解析されたセグメンテーション情報要素は、バイナリフラグのセットによって表される。ビットストリーム内のフラグの順序付け(シンタックス)は、フラグとそれらが属する層との間の関連付けを伝達し得る。順序付け(シーケンス)は、エンコーダでの処理と、それに対応してデコーダでの処理との所定の順序によって与えられてもよい。これらは、例えば、図16および図28に例示された。
一部の例示的な実施形態、例えば、第7の変形例を参照して上述した実施形態では、ピクチャまたはビデオ処理のための復号化データを取得することは、セグメンテーション情報に基づいて以下のパラメータのうちの少なくとも1つを決定することを含む。セグメンテーション情報は、動き情報と同様に、ピクチャ内またはピクチャ間予測モード、ピクチャ参照インデックス、単一参照または複数参照予測(双予測を含む)、存在または不在予測残差情報、量子化ステップサイズ、動き情報予測タイプ、動きベクトルの長さ、動きベクトル解像度、動きベクトル予測インデックス、動きベクトル差分サイズ、動きベクトル差分解像度、動き補間フィルタ、ループ内フィルタパラメータ、および/またはポストフィルタパラメータなどを含み得る、コーディングパラメータなどの追加情報の解析を決定し得る。換言すれば、セグメンテーション情報は、セグメンテーション情報処理層によって処理されるとき、コーディングパラメータのどの処理層からコーディングパラメータが取得され得るかを指定し得る。例えば、図22または図23の上記で説明されたエンコーダのアプローチでは、再構成(コーディング)パラメータは、動き情報(LayerMv)の代わりに(またはそれに加えて)ビットストリームから受信され得る。かかる再構成(コーディング)パラメータblk_rec_paramsは、動き情報について図28および図29において例示されるのと同じ方法でデコーダにおいて解析され得る。
概して、セグメンテーション情報は、特徴マップ要素(動き情報または上述の再構成パラメータもしくはサンプル関連データのいずれか)の解析および入力に使用される。本方法は、ビットストリームから、特徴マップ要素のセットを取得することと、セグメンテーション情報処理層によって処理されたセグメンテーション情報に基づいて、特徴マップ要素のセットを複数の層のうちの特徴マップ処理層にそれぞれ入力することとをさらに含み得る。さらに、本方法は、複数のカスケード層によって処理された特徴マップに基づいて、ピクチャまたはビデオ処理のための復号化データを取得することをさらに含む。特に、一部の実施形態では、複数のカスケード層のうちの少なくとも1つは、セグメンテーション情報処理層ならびに特徴マップ処理層である。上述したように、ネットワークは、分離されたセグメンテーション情報処理層および特徴マップ処理層を用いて、または両方の機能を有する結合層を用いて設計され得る。一部の実装形態では、複数の層のうちの各層は、セグメンテーション情報処理層または特徴マップ処理層のいずれかである。
上述の方法は、非一時的媒体に記憶されたコンピュータプログラム製品として具現化されることができ、このコンピュータプログラム製品は、1つ以上のプロセッサ上で実行されると、プロセッサに、これらの方法のいずれかのステップを実行させる。同様に、上記で説明した方法のいずれかの方法ステップを実行するように構成された処理回路を含む、画像またはビデオを復号化するためのデバイスが提供される。本開示によっても提供される装置の機能的構造は、上述の実施形態およびステップによって提供される機能に対応し得る。例えば、ビットストリームからピクチャまたはビデオ処理のためのデータを復号化するためのデバイスが提供され、デバイスは、ビットストリームから、セグメンテーション情報要素の2つ以上のセットを取得するように構成された取得ユニットと、セグメンテーション情報要素の2つ以上のセットの各々を、複数のカスケード層のうちの2つ以上のセグメンテーション情報処理層にそれぞれ入力するように構成された入力ユニットと、2つ以上のセグメンテーション情報処理層の各々において、セグメンテーション情報のそれぞれのセットを処理するように構成された処理ユニットと、複数のカスケード層において処理されたセグメンテーション情報に基づいて、ピクチャまたはビデオ処理のための該復号化データを取得するように構成された復号化データ取得ユニットと、を含む。これらのユニットおよびさらなるユニットは、上述した方法の全ての機能を実行してもよい。
一部の実施形態の概要
特徴情報またはセグメンテーション情報を用いた符号化に関する実施形態
本開示の一態様によれば、画像またはビデオ処理のためのデータをビットストリームに符号化するための方法が提供され、本方法は、データを処理することであって、処理することが、複数のカスケード層において、特徴マップを生成することであって、各特徴マップがそれぞれの解像度を含み、生成された特徴マップのうちの少なくとも2つの解像度が互いに異なる、ことと、複数の層の中から、最低解像度の特徴マップを生成する層とは異なる層を選択することと、選択された層に関係する情報をビットストリームに挿入することを含むビットストリームを生成することと、を含む。
かかる方法は、異なる層からのデータが符号化されることを可能にし、したがって、異なる解像度の特徴または他の種類の層関連情報がビットストリーム中に含まれることを可能にしたため、かかる符号化の改善された効率を与え得る。
本開示の一態様によれば、画像またはビデオ処理のためのデータをビットストリームに符号化するためのデバイスであって、データを処理するように構成された処理ユニットであって、処理することが、複数のカスケード層において、互いに異なる解像度の特徴マップを生成することを含み、各特徴マップがそれぞれの解像度を含む、処理ユニットと、複数の層の中から、最も低い解像度の特徴マップを生成する層とは異なる層を選択するように構成された選択ユニットと、選択された層に関係するデータの指示をビットストリームに挿入することを含む、ビットストリームを生成するように構成された生成ユニットとを含むデバイスである。処理ユニット、選択ユニット、および生成ユニットは、1つ以上のプロセッサなどの処理回路、またはソフトウェアとハードウェアとの任意の組み合わせによって実装され得る。
かかるデバイスは、異なる層からのデータが復号化され、再構成のために使用されることを可能にし、したがって、異なる解像度の特徴または他の種類の層関連情報の使用を可能にしたため、かかる復号化の改善された効率を与え得る。
例示的な実装形態では、処理することは、カスケード層のうちの1つ以上によってダウンサンプリングすることをさらに含む。ダウンサンプリングの適用は、一方では処理の複雑性の低減を可能にし、他方では、ビットストリーム内で提供されるデータを低減することもできる。さらに、異なる解像度を処理する層は、このようにして、異なるスケールの特徴に焦点を当てることができる。したがって、ピクチャ(静止またはビデオ)を処理するネットワークは、効率的に動作し得る。
例えば、1つ以上のダウンサンプリング層は、ダウンサンプリングのための平均プーリングまたは最大プーリングを含む。平均プーリングおよび最大プーリング演算は、複数のフレームワークの一部であり、それらは、低い複雑性でダウンサンプリングするための効率的な手段を提供する。
別の例では、ダウンサンプリングにおいて畳み込みが使用される。畳み込みは、特定のアプリケーションのために適切に選択され得るか、または訓練可能でさえあり得るカーネルを用いてダウンサンプリングする何らかのより高度な方法を提供し得る。これは、動き情報のより適切な潜在表現を見つけることを可能にする学習可能なダウンサンプリング処理を可能にし、適応性を増加させる異なる空間解像度の情報を表現および転送する利点を維持する。
例示的な実装形態では、選択された層に関係する情報は、その層の特徴マップの要素を含む。
異なる解像度を有する特徴を提供することによって、符号化/復号化のスケーラビリティが増加され、そのように生成されたビットストリームは、レート、歪み、複雑性などの最適化基準を満たすためのより多くのフレキシビリティを提供することができ、最終的に、増加したコーディング効率の可能性を提供する。
上記の例のいずれにおいても、例えば、選択された層に関連する情報は、どの層から、かつ/またはその層の特徴マップのどの部分から、その層の特徴マップの要素が選択されたかを示す情報を含む。
セグメンテーション情報をシグナリングすることは、元の(コーディングされる)特徴マップ(データ)の各エリアが1つの層からの情報のみによってカバーされ得るように、異なる層からの特徴マップの効率的なコーディングを与え得る。これは本発明を限定するものではないが、本発明は、場合によっては、符号化される特徴マップ(データ)内の特定の領域の層間の重複も提供することができる。
上述の方法は、例示的な実装形態において、符号化されるデータを取得するステップを含み、符号化されるデータの処理は、複数N個のカスケード層の各層jによる処理を含み、j=1の場合に符号化されるデータを層入力として取得し、そうでない場合に(j-1)番目の層によって処理された特徴マップを層入力として取得することと、取得された層入力を処理することであって、処理することは、ダウンサンプリングを含む、ことと、ダウンサンプリングされた特徴マップを出力することと、を含む。
これに対応して、上述の装置は、例示的な実装形態において、符号化されるデータを取得し、符号化されるデータの処理を実行するように構成された処理ユニットを有し、符号化されるデータの処理は、複数のN個のカスケード層の各層jによる処理を含み、j=1の場合に符号化されるデータを層入力として取得し、そうでない場合に(j-1)番目の層によって処理された特徴マップを層入力として取得することと、取得された層入力を処理することであって、処理はダウンサンプリングを含む、ことと、ダウンサンプリングされた特徴マップを出力することとを含む。
前の例のいずれかによる方法は、一部の実施形態では、ビットストリームに挿入するための情報を選択することであって、情報は、層j>1によって処理される特徴マップにおける第1の領域に関連し、第1の領域は、複数の要素を含むjより小さい層において符号化される特徴マップまたは初期データにおける領域に対応する、ことと、層k(kは1以上の整数であり、k<jである)によって処理される特徴マップにおける選択から、第1の領域に対応する領域を選択から除外することとを含む。
前述の例のいずれかによる装置は、一部の実施形態において、ビットストリームに挿入するための情報を選択することであって、情報は、層j>1によって処理される特徴マップにおける第1の領域に関連し、第1の領域は、複数の要素を含むjより小さい層において符号化される特徴マップまたは初期データにおける領域に対応する、ことと、層k(kは1以上の整数であり、k<jである)によって処理される特徴マップにおける選択から、第1の領域に対応する領域を選択から除外することと、を行うようにさらに構成された処理回路を含む。
ある層におけるかかる選択は、他の層によってカバーされる元の特徴マップのエリアをカバーせず、コーディングオーバーヘッドに関して特に効率的であり得る。
上記の例のいずれにおいても、例えば、符号化されるデータは、画像情報および/または予測残差情報および/または予測情報を含む。
あるいは、選択された層に関連する情報は予測情報を含む。
上記の例のいずれにおいても、例えば、選択された層に関連するデータは、選択された層の特徴マップ内の特徴マップ要素の位置の指示を含む。
かかる表示は、異なる解像度の特徴マップ要素を入力データ領域と適切に関連付けることを可能にする。
上記の例のいずれにおいても、例えば、選択された特徴マップ要素および選択されていない特徴マップ要素の位置は、ビットストリーム内のフラグの位置に基づく複数のバイナリフラグによって示される。
バイナリフラグは、セグメンテーション情報をコーディングする特に効率的な方法を提供する。
一実施形態によれば、上述の方法または装置において、複数のN個のカスケード層のうちの層jによる処理は、j番目の層によって出力された特徴マップ要素を使用して、再構成されたピクチャの一部を再構成することから生じる第1のコストを決定することと、(j-1)番目の層によって出力された特徴マップ要素を使用して、ピクチャの一部を再構成することから生じる第2のコストを決定することと、第1のコストが第2のコストよりも高い場合、(j-1)番目の層を選択し、(j-1)番目の層中の該一部に関する情報を選択することと、を含む。
歪みを含む最適化の提供は、所望の品質を達成するための効率的な手段を提供する。
例えば、第1のコストおよび第2のコストは、データ量および/または歪みを含む。レート(エンコーダによって生成されるデータの量)および再構成されたピクチャの歪みを考慮することによる最適化は、種々のアプリケーションまたはユーザの要件を柔軟に満たすことを可能にする。
代替的または追加的に、符号化されるデータは動きベクトルフィールドである。上述の方法は、密なオプティカルフローまたはサブサンプリングされたオプティカルフローなどの動きベクトルフィールドを圧縮するために容易に適用可能である。これらの方法の適用は、動きベクトルの(レートおよび歪みまたは他の基準に関して)効率的なコーディングを提供し、符号化ピクチャまたはビデオデータのビットストリームサイズをさらに低減することを可能にし得る。
一部の実施形態では、予測情報は、参照インデックスおよび/または予測モードを含む。動きベクトルフィールドに加えて、または動きベクトルフィールドの代わりに、予測に関するさらなる情報が処理され得る。参照インデックスおよび予測モードは、動きベクトルフィールドと同様に、ピクチャのコンテンツと相関され得、したがって、異なる解像度を有する特徴マップ要素の符号化は、効率を改善することができる。
例えば、データの量は、選択された層に関係するデータを送信するために必要とされるデータの量を含む。このようにして、出力層とは異なる層に関係する情報を提供することによって生成されるオーバーヘッドが、最適化中に考慮され得る。
追加または代替として、歪みは、再構成されたピクチャをターゲットピクチャと比較することによって計算される。かかるエンドツーエンドの品質比較は、再構成画像における歪みが適切に考慮されることを保証する。したがって、最適化は、効率的な方法でコーディングアプローチを選択することが可能であり、より正確な方法でアプリケーションまたはユーザによって課される品質要件を満たし得る。
上記の例のいずれにおいても、例えば、処理は、異なる解像度を有するカスケード層の間に追加の畳み込み層を含む。
カスケード層ネットワークにおけるかかる追加の層の提供は、コーディングの品質または効率を向上させるために、種々のタイプのフィルタリングなどの追加の処理を導入することを可能にする。
例示的な実装形態によれば、前述の実施形態に基づく方法または装置の処理回路は、層によるダウンサンプリングにおいて、第1のフィルタを使って入力特徴マップをダウンサンプリングして第1の特徴マップを取得し、第2のフィルタを使って入力特徴マップをダウンサンプリングして第2の特徴マップを取得することと、第1の特徴マップを使って再構成されたピクチャの部分を再構成することから生じる第3のコストを決定することと、第2の特徴マップを使って再構成されたピクチャの部分を再構成することから生じる第4のコストを決定することと、選択することにおいて、第3のコストが第4のコストより小さければ第1の特徴マップを選択することと、を含む。
異なるダウンサンプリングフィルタの適用は、コンテンツの異なる特性に適応するのに役立ち得る。
例えば、第1のフィルタおよび第2のフィルタの形状は、正方形、水平配向の長方形、および垂直配向の長方形のいずれかであってもよい。
これらのフィルタは、依然として単純な形状のものであるが、オブジェクト境界への適応に関して追加の改善を提供することができる。
方法ステップまたは装置の処理回路によって実行されるステップは、マスクを取得することをさらに含み得、マスクは、フラグからなり、マスクは、任意のフィルタ形状を表し、第1および第2のフィルタのうちの1つは、任意のフィルタ形状を有する。
これは、任意の形状のフィルタを設計するための柔軟性を提供する。
方法ステップまたは装置の処理回路によって実行されるステップは、異なるブロックサイズおよび形状を有するブロックにセグメント化された同じピクチャに関係するデータを異なる層中で処理することをさらに含み得、ここにおいて、選択することは、コーディングモードの所定のセットについて計算されたコストに基づいて層を選択することを含む。
一部の例示的な実装形態では、処理することは、少なくとも1つの層について、コーディングモードの異なるセットについてのコストを決定することと、決定されたコストに基づいてコーディングモードのセットのうちの1つを選択することとを含む。
コーディングモードへの最適化の適用は、効率的なレート歪み最適化を可能にし、したがって、改善されたコーディング効率を可能にし得る。
例えば、選択された層に関係するデータの指示は、コーディングモードの選択されたセットを含む。
本開示の一態様によれば、非一時的媒体に記憶されたコンピュータプログラムは、1つ以上のプロセッサ上で実行されると、上記で提示された方法のいずれかのステップを実行するコードを含む。
本開示の一態様によれば、上記で提示した例のいずれかによる方法を実行するように構成された処理回路を含む、画像またはビデオを符号化するためのデバイスが提供される。
上述した装置のいずれも、集積チップ上に具現化されることができる。本発明は、ハードウェア(HW)および/またはソフトウェア(SW)で実装されることができる。さらに、HWベースの実装形態は、SWベースの実装形態と組み合わせられることができる。
本開示は、特定のフレームワークに限定されないことに留意されたい。さらに、本開示は、画像またはビデオ圧縮に限定されず、オブジェクト検出、画像生成、および認識システムにも適用され得る。
明確にするために、前述の実施形態のうちのいずれか1つは、本開示の範囲内の新しい実施形態を作成するように、前述の他の実施形態のうちのいずれか1つ以上と組み合わせられてもよい。
特徴マップ要素を用いた復号化に関する実施形態
一実施形態によれば、ビットストリームからピクチャまたはビデオ処理のためのデータを復号化するための方法が提供され、本方法は、ビットストリームから、特徴マップ要素の2つ以上のセットを取得することであって、特徴マップ要素の各セットは特徴マップに関係する、ことと、特徴マップ要素の2つ以上のセットの各々をそれぞれ、複数のカスケード層のうちの2つ以上の特徴マップ処理層に入力することと、複数のカスケード層による処理の結果として、ピクチャまたはビデオ処理のための該復号化データを取得することと、を含む。
かかる方法は、異なる層からのデータが復号化において使用されることを可能にし、したがって、特徴または他の種類の層関連情報がビットストリームから解析されることを可能にするため、改善された効率を与え得る。
例えば、2つ以上の特徴マップ処理層の各々において特徴マップが処理され、2つ以上の特徴マップ処理層においてそれぞれ処理される特徴マップは、解像度において異なる。
一部の実施形態では、2つ以上の特徴マップ処理層における特徴マップの処理は、アップサンプリングを含む。
アップサンプリングの適用は、一方では、(第1の層が低解像度を有するので)処理の複雑性の低減を可能にし、他方では、ビットストリーム内で与えられ、デコーダにおいて解析されるデータを低減することもできる。さらに、異なる解像度を処理する層は、このようにして、異なるスケールの特徴に焦点を当てることができる。したがって、ピクチャ(静止またはビデオ)を処理するネットワークは、効率的に動作し得る。
例示的な実装形態では、方法は、ビットストリームから、2つまたは複数の層に関係したセグメンテーション情報を取得するステップをさらに含み、ビットストリームから特徴マップ要素を取得することは、セグメンテーション情報に基づいており、2つまたは複数の特徴マップ処理層にそれぞれ特徴マップ要素の集合を入力することはセグメンテーション情報に基づいている。
セグメンテーション情報を使用することは、(再構成される)元の解像度の各エリアが1つの層からの情報のみによってカバーされ得るように、異なる層からの特徴マップの効率的な復号化を提供し得る。これは本発明を限定するものではないが、本発明は、場合によっては、特徴マップ(データ)内の特定のエリアの層間の重複も提供し得る。例えば、複数のカスケード層は、複数のセグメンテーション情報処理層をさらに有し、方法は、複数のセグメンテーション情報処理層においてセグメンテーション情報を処理することをさらに含む。かかるアプローチは、異なる層からの特徴要素の解析を制御する可能性を提供する。
一部の実施形態では、複数のセグメンテーション情報処理層のうちの少なくとも1つにおけるセグメンテーション情報の処理は、アップサンプリングを含む。セグメンテーション情報の階層構造は、ビットストリーム中に挿入される少量のサイド情報を与え、したがって、効率および/または処理時間を向上させることができる。
例えば、セグメンテーション情報の該アップサンプリングおよび/または特徴マップの該アップサンプリングは、最近傍アップサンプリングを含む。最近傍アップサンプリングは、低い計算複雑度が低く、容易に実装されることができる。その上、特にフラグのような論理表示に対しては効率的である。
一部の実施形態および例では、セグメンテーション情報の該アップサンプリングおよび/または特徴マップの該アップサンプリングは転置畳み込みを含む。畳み込みの使用は、ブロッキングアーチファクトを低減するのに役立ち得、アップサンプリングフィルタが選択可能である訓練可能なソリューションを可能にし得る。
例示的な実装形態では、ビットストリームから特徴マップ要素を取得することは、複数のセグメンテーション情報処理層のうちの少なくとも1つによって処理された処理済みセグメンテーション情報に基づく。
例示的な実装形態では、特徴マップ要素の2つ以上のセットの各々を2つ以上の特徴マップ処理層にそれぞれ入力することは、複数のセグメンテーション情報処理層のうちの少なくとも1つによって処理された処理済みセグメンテーション情報に基づく。
一実施形態によれば、取得されたセグメンテーション情報は、シンタックス要素のセットによって表され、シンタックス要素のセット内の要素の位置は、どの特徴マップ要素位置にシンタックス要素が関連するかを示し、特徴マップの処理は、シンタックス要素の各々について、シンタックス要素が第1の値を有するとき、ビットストリーム内のシンタックス要素の位置によって示される位置上の特徴マップの要素をビットストリームから解析することと、そうでない場合、ビットストリーム内のシンタックス要素の位置によって示される位置上の特徴マップの要素をビットストリームから解析することをバイパスすることとを含む。
セグメンテーション情報と特徴マップ情報との間のかかる関係は、周波数情報の効率的なコーディングと、異なる解像度を考慮することによる階層構造における両方の解析とを可能にする。
例えば、複数のN個の特徴マップ処理層の各層1<j<Nによる特徴マップの処理は、ビットストリームからj番目の特徴マップ処理層のセグメンテーション情報要素を解析することと、先行する特徴マップ処理層によって処理された特徴マップを取得するとともに、ビットストリームから特徴マップ要素を解析し、解析された特徴マップ要素を取得された特徴マップと関連付けることとをさらに含み、処理された特徴マップ内の特徴マップ要素の位置は、解析されたセグメンテーション情報要素および先行するセグメンテーション情報処理層によって処理されたセグメンテーション情報によって示される。
特に、シンタックス要素が第1の値を有するとき、ビットストリームから特徴マップの要素を解析することと、シンタックス要素が第2の値を有するか、または先行するセグメンテーション情報処理層によって処理されたセグメンテーション情報が第1の値を有するとき、ビットストリームから特徴マップの要素を解析することをバイパスすることである。
例えば、セグメンテーション情報を表すビットストリームから解析されたシンタックス要素は、バイナリフラグである。特に、処理されたセグメンテーション情報は、バイナリフラグのセットによって表される。
バイナリフラグを設けることにより、効率的なコーディングを可能にする。デコーダ側では、論理フラグの処理が低い複雑性で実行され得る。
例示的な実装形態によれば、各セグメンテーション情報処理層jにおけるセグメンテーション情報のアップサンプリングは、入力されたセグメンテーション情報によって示される取得された特徴マップ内の各p番目の位置について、p番目の位置と同じ再構成ピクチャ内の領域に含まれる特徴マップ位置の指示をアップサンプリングされたセグメンテーション情報として決定することをさらに含む。
例えば、ピクチャまたはビデオ処理のためのデータは、動きベクトルフィールドを含む。ピクチャの解像度と同様の解像度を有する密なオプティカルフローまたは動きベクトルフィールドは、動きをモデル化するために望ましいため、本発明の階層構造は、かかる動き情報を再構成するために容易に適用可能であり、効率的である。層処理およびシグナリングを用いて、レートと歪みとの間の良好なトレードオフが達成され得る。
例えば、ピクチャまたはビデオ処理のためのデータは、ピクチャデータおよび/または予測残差データおよび/または予測情報データを含む。本開示は、種々の異なるパラメータのために使用され得る。しかしながら、ピクチャデータおよび/または予測残差データおよび/または予測情報データは、空間領域において何らかの冗長性を依然として有し得、本明細書で説明する階層化アプローチは、異なる解像度を使用してビットストリームからの効率的な復号化を提供し得る。
一部の実施形態および例では、特徴マップのアップサンプリングにおいてフィルタが使用され、フィルタの形状は、正方形、水平長方形、および垂直長方形のうちのいずれか1つである。
異なるアップサンプリングフィルタの適用は、コンテンツの異なる特性に適応するのに役立ち得る。例えば、特徴マップのアップサンプリングにおいてフィルタが使用され、ビットストリームから情報を入力することは、ビットストリームからフィルタ形状および/またはフィルタ係数を示す情報を取得することをさらに含む。
それに対応して、デコーダは、ビットストリームにおいて伝達されるエンコーダからの情報に基づいて、より良好な再構成品質を提供することができる。
例えば、フィルタ形状を示す該情報がフラグから構成されるマスクを示し、第3の値を有するフラグが非ゼロフィルタ係数を示し、第3の値とは異なる第4の値を有するフラグがゼロフィルタ係数を示すという点で、マスクがフィルタ形状を表す。これは、任意の形状のフィルタを設計するための柔軟性を提供する。
例えば、複数のカスケード層は、異なる解像度を有する層間のアップサンプリングを伴わない畳み込み層を含む。
カスケード層ネットワークにおけるかかる追加の層の提供は、コーディングの品質または効率を向上させるために、種々のタイプのフィルタリングなどの追加の処理を導入することを可能にする。
一実施形態によれば、非一時的媒体に記憶されたコンピュータプログラム製品が提供され、このコンピュータプログラム製品は、1つ以上のプロセッサ上で実行されると、上述の方法のいずれかによる方法を実行する。
一実施形態によれば、上述の実施形態および例のいずれかによる方法を実行するように構成された処理回路を含む、画像またはビデオを復号化するためのデバイスが提供される。
一態様によれば、ビットストリームからピクチャまたはビデオ処理のためのデータを復号化するためのデバイスが提供され、デバイスは、ビットストリームから特徴マップ要素の2つ以上のセットを取得するように構成された取得ユニットであって、特徴マップ要素の各セットが特徴マップに関係する、取得ユニットと、特徴マップ要素の2つ以上のセットの各々を、それぞれ、複数のカスケード層のうちの2つ以上の特徴マップ処理層に入力するように構成された入力ユニットと、複数のカスケード層による処理の結果としてピクチャまたはビデオ処理のための該復号化データを取得するように構成された復号化データ取得ユニットとを含む。
上述した装置のいずれも、集積チップ上に具現化されることができる。本発明は、ハードウェア(HW)および/またはソフトウェア(SW)で実装されることができる。さらに、HWベースの実装形態は、SWベースの実装形態と組み合わせられることができる。
本開示は、特定のフレームワークに限定されないことに留意されたい。さらに、本開示は、画像またはビデオ圧縮に限定されず、オブジェクト検出、画像生成、および認識システムにも適用され得る。
ハードウェアおよびソフトウェアにおける一部の例示的な実装形態
上述のエンコーダ-デコーダ処理チェーンを展開することができる対応するシステムが図35に示されている。図35は、本出願の技術を利用し得る例示的なコーディングシステム、例えば、ビデオ、画像、オーディオ、および/または他のコーディングシステム(またはショートコーディングシステム)を示す概略ブロック図である。ビデオコーディングシステム10のビデオエンコーダ20(またはショートエンコーダ20)およびビデオデコーダ30(またはショートデコーダ30)は、本出願で説明される種々の例による技術を実行するように構成され得るデバイスの例を表す。例えば、ビデオコーディングおよび復号化は、ニューラルネットワーク、または概して、上記の実施形態および例で説明されたものなどの処理ネットワークを採用し得る。
図35に示すように、コーディングシステム10は、符号化ピクチャデータ13を復号化するために、符号化ピクチャデータ21を例えば宛先デバイス14に提供するように構成されたソースデバイス12を含む。
ソースデバイス12は、エンコーダ20を含み、さらに、すなわち任意選択で、ピクチャソース16と、プリプロセッサ(または前処理ユニット)18、例えばピクチャプリプロセッサ18と、通信インターフェースまたは通信ユニット22とを含むことができる。
ピクチャソース16は、任意の種類のピクチャ捕捉デバイス、例えば、現実世界のピクチャを捕捉するためのカメラ、および/または任意の種類のピクチャ生成デバイス、例えば、コンピュータアニメーションピクチャを生成するためのコンピュータグラフィックスプロセッサ、または現実世界のピクチャ、コンピュータ生成ピクチャ(例えば、スクリーンコンテンツ、仮想現実(VR)ピクチャ)、および/またはそれらの任意の組み合わせ(例えば、拡張現実(AR)ピクチャ)を取得および/または提供するための任意の種類の他のデバイスを含み得るか、またはそれらであり得る。ピクチャソースは、前述のピクチャのいずれかを記憶する任意の種類のメモリまたはストレージであり得る。
プリプロセッサ18および前処理ユニット18によって実行される処理とは異なり、ピクチャまたはピクチャデータ17は、原ピクチャまたは原ピクチャデータ17とも称され得る。
プリプロセッサ18は、(生の)ピクチャデータ17を受信し、前処理されたピクチャ19または前処理されたピクチャデータ19を取得するためにピクチャデータ17に対して前処理を実行するように構成される。プリプロセッサ18によって実行される前処理は、例えば、トリミング、(例えば、RGBからYCbCrへの)色フォーマット変換、色補正、またはノイズ除去を含み得る。前処理ユニット18は任意選択の構成要素であり得ることが理解され得る。なお、前処理にはニューラルネットワークを採用してもよい。
ビデオエンコーダ20は、前処理されたピクチャデータ19を受信し、符号化ピクチャデータ21を提供するように構成される。
ソースデバイス12の通信インターフェース22は、符号化ピクチャデータ21を受信し、記憶または直接再構成のために、通信チャネル13を介して符号化ピクチャデータ21(またはその任意のさらに処理されたバージョン)を別のデバイス、例えば、宛先デバイス14または任意の他のデバイスに送信するように構成され得る。
宛先デバイス14は、デコーダ30(例えば、ビデオデコーダ30)を含み、通信インターフェースまたは通信ユニット28と、ポストプロセッサ32(または後処理ユニット32)と、ディスプレイデバイス34とを、さらに、すなわち、任意選択で、含み得る。
宛先デバイス14の通信インターフェース28は、符号化ピクチャデータ21(またはその任意のさらに処理されたバージョン)を、例えばソースデバイス12から直接、または任意の他のソース、例えばストレージデバイス、例えば符号化ピクチャデータストレージデバイスから受信し、符号化ピクチャデータ21をデコーダ30に供給するように構成される。
通信インターフェース22および通信インターフェース28は、ソースデバイス12と宛先デバイス14との間の直接通信リンク、例えば直接ワイヤードまたはワイヤレス接続を介して、あるいは任意の種類のネットワーク、例えばワイヤードもしくはワイヤレスネットワークまたはそれらの任意の組み合わせ、あるいは任意の種類のプライベートおよびパブリックネットワーク、あるいはそれらの任意の種類の組み合わせを介して、符号化ピクチャデータ21または符号化データ13を送信または受信するように構成され得る。
通信インターフェース22は、例えば、符号化ピクチャデータ21を適切なフォーマット、例えばパケットにパッケージ化するように、および/または通信リンクもしくは通信ネットワークを介した送信のための任意の種類の送信符号化もしくは処理を使用して符号化ピクチャデータを処理するように構成され得る。
通信インターフェース22の対応物を形成する通信インターフェース28は、例えば、送信されたデータを受信し、任意の種類の対応する送信復号化または処理および/またはデパッケージングを使用して送信データを処理して、符号化ピクチャデータ21を取得するように構成され得る。
通信インターフェース22と通信インターフェース28の両方は、図35において通信チャネル13に対してソースデバイス12から宛先デバイス14を指す矢印によって示されるような単方向通信インターフェース、または双方向通信インターフェースとして構成され得、例えば、メッセージを送信および受信するように、例えば、接続をセットアップするように、通信リンクおよび/またはデータ送信、例えば、符号化ピクチャデータ送信に関係する任意の他の情報を肯定応答および交換するように構成され得る。デコーダ30は、符号化ピクチャデータ21を受信し、(例えば、上記の実施形態および例で説明したニューラルネットワークを採用して)復号化ピクチャデータ31または復号化ピクチャ31を与えるように構成される。
宛先デバイス14のポストプロセッサ32は、復号化ピクチャデータ31(再構成ピクチャデータとも称される)、例えば、復号化ピクチャ31を後処理して、後処理ピクチャデータ33、例えば、後処理ピクチャ33を取得するように構成される。後処理ユニット32によって実行される後処理は、例えば、(例えば、YCbCrからRGBへの)色フォーマット変換、色補正、トリミング、またはリサンプリング、あるいは、例えば、ディスプレイデバイス34による表示のために、例えば、復号化ピクチャデータ31を準備するための任意の他の処理を含み得る。
宛先デバイス14のディスプレイデバイス34は、例えばユーザまたは視聴者にピクチャを表示するために、後処理されたピクチャデータ33を受信するように構成される。ディスプレイデバイス34は、再構成されたピクチャを表すための任意の種類のディスプレイ、例えば、一体化されたまたは外部のディスプレイまたはモニタであってもよく、またはそれを含んでもよい。ディスプレイは、例えば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)ディスプレイ、プラズマディスプレイ、プロジェクタ、マイクロLEDディスプレイ、LCoS(liquid crystal on silicon)、DLP(digital light processor)または任意の種類の他のディスプレイを有してもよい。
図35は、ソースデバイス12と宛先デバイス14とを別個のデバイスとして示しているが、デバイスの実施形態はまた、ソースデバイス12または対応する機能と宛先デバイス14または対応する機能との両方または両方の機能を含み得る。かかる実施形態では、ソースデバイス12または対応する機能と宛先デバイス14または対応する機能とは、同じハードウェアおよび/もしくはソフトウェアを使用して、または別個のハードウェアおよび/もしくはソフトウェアによって、あるいはそれらの任意の組み合わせによって実装され得る。
説明に基づいて当業者に明らかになるように、図35に示されるようなソースデバイス12および/または宛先デバイス14内の異なるユニットの機能または機能の存在および(正確な)分割は、実際のデバイスおよび適用例に応じて変化し得る。
エンコーダ20(例えば、ビデオエンコーダ20)またはデコーダ30(例えば、ビデオデコーダ30)またはエンコーダ20とデコーダ30の両方は、1つ以上のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、個別論理、ハードウェア、ビデオコーディング専用、またはそれらの任意の組み合わせなどの処理回路を介して実装され得る。エンコーダ20は、ニューラルネットワークを含む種々のモジュールを具現化するために処理回路46を介して実装され得る。デコーダ30は、処理回路46を介して実装され、上記の実施形態および例で説明したような種々のモジュールを具現化することができる。処理回路は、後述されるような種々の動作を実行するように構成され得る。本技術が部分的にソフトウェアで実装される場合、デバイスは、好適な非一時的コンピュータ可読記憶媒体にソフトウェアのための命令を記憶し得、本開示の技術を実行するために1つ以上のプロセッサを使用してハードウェアで命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30のいずれかは、例えば、図36に示されているように、単一のデバイスにおいて結合エンコーダ/デコーダ(コーデック)の一部として統合され得る。
ソースデバイス12および宛先デバイス14は、任意の種類のハンドヘルドまたは固定デバイス、例えば、ノートブックまたはラップトップコンピュータ、モバイルフォン、スマートフォン、タブレットまたはタブレットコンピュータ、カメラ、デスクトップコンピュータ、セットトップボックス、テレビジョン、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、(コンテンツサービスサーバまたはコンテンツ配信サーバなどの)ビデオストリーミングデバイス、ブロードキャスト受信機デバイス、ブロードキャスト送信機デバイスなどを含む、広範囲のデバイスのいずれかを含み得、オペレーティングシステムを使用しないか、または任意の種類のオペレーティングシステムを使用し得る。場合によっては、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。したがって、ソースデバイス12および宛先デバイス14はワイヤレス通信デバイスであり得る。
場合によっては、図35に示されたビデオコーディングシステム10は一例にすぎず、本出願の技術は、符号化デバイスと復号化デバイスとの間のデータ通信を必ずしも含むとは限らないビデオコーディング設定(例えば、ビデオ符号化またはビデオ復号化)に適用し得る。他の例では、データは、ローカルメモリから取り出される、ネットワークを介してストリーミングされる、などである。ビデオ符号化デバイスは、データを符号化し、メモリに記憶し得、および/またはビデオ復号化デバイスは、メモリからデータを取り出し、復号化し得る。一部の例では、符号化および復号化は、互いに通信しないが、単にメモリにデータを符号化し、および/またはメモリからデータを取り出し、復号化するデバイスによって実行される。
図37は、本開示の一実施形態によるビデオコーディングデバイス3700の概略図である。ビデオコーディングデバイス3700は、本明細書で説明されるような開示される実施形態を実装するのに適している。一実施形態では、ビデオコーディングデバイス3700は、図35のビデオデコーダ30などのデコーダ、または図35のビデオエンコーダ20などのエンコーダであり得る。
ビデオコーディングデバイス3700は、データを受信するための入口ポート3710(または入力ポート3710)および受信機ユニット(Rx)3720と、データを処理するためのプロセッサ、論理ユニット、または中央処理ユニット(CPU)3730と、データを送信するための送信機ユニット(Tx)3740および出口ポート3750(または出力ポート3750)と、データを記憶するためのメモリ3760とを含む。ビデオコーディングデバイス3700はまた、光信号または電気信号の出口または入口のために、入口ポート3710、受信機ユニット3720、送信機ユニット3740、および出口ポート3750に結合された光-電気(OE)構成要素および電気-光(EO)構成要素を含み得る。
プロセッサ3730は、ハードウェアおよびソフトウェアによって実装される。プロセッサ3730は、1つ以上のCPUチップ、コア(例えば、マルチコアプロセッサとして)、FPGA、ASIC、およびDSPとして実装され得る。プロセッサ3730は、入口ポート3710、受信機ユニット3720、送信機ユニット3740、出口ポート3750、およびメモリ3760と通信する。プロセッサ3730は、コーディングモジュール3770を含む。コーディングモジュール3770は、上述の開示される実施形態を実装する。例えば、コーディングモジュール3770は、種々のコーディング動作を実装、処理、準備、または提供する。したがって、コーディングモジュール3770を含むことは、ビデオコーディングデバイス3700の機能に実質的な改善を提供し、ビデオコーディングデバイス3700の異なる状態への変換をもたらす。代替的に、コーディングモジュール3770は、メモリ3760に記憶され、プロセッサ3730によって実行される命令として実装される。
メモリ3760は、1つ以上のディスク、テープドライブ、およびソリッドステートドライブを含むことができ、プログラムが実行のために選択されたときにかかるプログラムを記憶し、プログラム実行中に読み取られる命令およびデータを記憶するために、オーバーフローデータストレージデバイスとして使用されることができる。メモリ3760は、例えば、揮発性および/または不揮発性であり得、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、ターナリコンテンツアドレス可能メモリ(TCAM)、および/またはスタティックランダムアクセスメモリ(SRAM)であり得る。
図38は、例示的な実施形態による、図35からのソースデバイス12および宛先デバイス14のいずれかまたは両方として使用され得る装置3800の簡略ブロック図である。
装置3800内のプロセッサ3802は、中央処理装置とすることができる。代替的に、プロセッサ3802は、現在存在するかまたは今後開発される情報を操作または処理することが可能な任意の他のタイプのデバイス、または複数のデバイスであり得る。開示される実装形態は、図示されるような単一のプロセッサ、例えば、プロセッサ3802を用いて実践されることができるが、速度および効率における利点は、2つ以上のプロセッサを使用して達成されることができる。
装置1100内のメモリ3804は、実装形態では、読み取り専用メモリ(ROM)デバイスまたはランダムアクセスメモリ(RAM)デバイスであり得る。任意の他の好適なタイプのストレージデバイスが、メモリ3804として使用されることができる。メモリ3804は、バス3812を使用してプロセッサ3802によってアクセスされるコードおよびデータ3806を含み得る。メモリ3804は、オペレーティングシステム3808およびアプリケーションプログラム3810をさらに含むことができ、アプリケーションプログラム3810は、プロセッサ3802が本明細書で説明する方法を実行することを可能にする少なくとも1つのプログラムを含む。例えば、アプリケーションプログラム3810は、アプリケーション1~Nを含むことができ、アプリケーション1~Nは、本明細書で説明する方法を実行するピクチャコーディング(符号化または復号化)アプリケーションをさらに含む。
装置3800はまた、ディスプレイ3818などの1つ以上の出力デバイスを含み得る。ディスプレイ3818は、一例では、タッチ入力を感知するように動作可能であるタッチセンシティブ要素とディスプレイを組み合わせるタッチセンシティブディスプレイであり得る。ディスプレイ3818は、バス3812を介してプロセッサ3802に結合されることができる。
ここでは単一のバスとして示されているが、装置3800のバス3812は、複数のバスから構成され得る。さらに、二次ストレージは、装置3800の他の構成要素に直接結合されることができ、またはネットワークを介してアクセスされることができ、メモリカードなどの単一の統合ユニット、または複数のメモリカードなどの複数のユニットを含むことができる。したがって、装置3800は、多種多様な構成で実装されることができる。
要約すると、本開示は、(ビットストリームへの静止またはビデオ処理のために)データを符号化するための方法および装置に関する。特に、データは、複数のカスケード層を含むネットワークによって処理される。この処理では、層毎に特徴マップが生成される。少なくとも2つの異なる層によって処理(出力)された特徴マップは、異なる解像度を有する。この処理では、カスケード層の中から、最低解像度の特徴マップを生成する層(例えば、潜在空間)とは異なる層が選択される。ビットストリームは、選択された層に関係する情報を含む。このアプローチでは、異なる解像度で動作することができるスケーラブル処理が提供され、その結果、ビットストリームは、かかる異なる解像度に関する情報を伝達することができる。したがって、データは、コーディングされたピクチャデータのコンテンツに応じて変化し得る解像度に応じて、ビットストリーム内で効率的にコーディングされ得る。
本開示は、(ビットストリームへの静止またはビデオ処理のために)データを復号化するための方法および装置にさらに関する。特に、特徴マップ要素の2つ以上のセットがビットストリームから取得される。特徴マップ要素の各セットは、特徴マップに関連する。特徴マップ要素の2つ以上のセットの各々は、次いで、複数のカスケード層のうちの2つ以上の特徴マップ処理層にそれぞれ入力される。次いで、ピクチャまたはビデオ処理のための復号化データが、複数のカスケード層による処理の結果として取得される。したがって、データは、階層構造において効率的な方法でビットストリームから復号化され得る。
本開示は、(ビットストリームへの静止またはビデオ処理のために)データを復号化するための方法および装置にさらに関する。セグメンテーション情報要素の2つ以上のセットが、ビットストリームから取得される。次いで、セグメンテーション情報要素の2つ以上のセットの各々は、複数のカスケード層のうちの2つ以上のセグメンテーション情報処理層にそれぞれ入力される。2つ以上のセグメンテーション情報処理層の各々において、セグメンテーション情報のそれぞれのセットが処理される。ピクチャまたはビデオ処理のための復号化データは、複数のカスケード層によって処理されたセグメンテーション情報に基づいて取得される。したがって、データは、階層構造において効率的な方法でビットストリームから復号化され得る。