(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-12
(54)【発明の名称】ビデオサンプルのブロックを符号化及び復号する方法、装置及びシステム
(51)【国際特許分類】
H04N 19/90 20140101AFI20241205BHJP
H04N 19/70 20140101ALI20241205BHJP
【FI】
H04N19/90
H04N19/70
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024525739
(86)(22)【出願日】2022-10-26
(85)【翻訳文提出日】2024-06-18
(86)【国際出願番号】 AU2022051286
(87)【国際公開番号】W WO2023130153
(87)【国際公開日】2023-07-13
(32)【優先日】2022-01-07
(33)【優先権主張国・地域又は機関】AU
(81)【指定国・地域】
(71)【出願人】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】ロゼワーン, クリストフアー ジエームズ
【テーマコード(参考)】
5C159
【Fターム(参考)】
5C159MA04
5C159MA05
5C159MA21
5C159MC11
5C159ME01
5C159PP18
5C159UA02
5C159UA05
(57)【要約】
特徴マップフレームデータのサンプル値をテンソル値に変換する装置および方法。本方法は、サンプル値のサンプルの符号およびサンプルの大きさを決定するステップと、決定されたサンプル大きさに基づいて、調整されたサンプル大きさを決定するステップとを含む。次いで、本方法は、調整されたサンプルの大きさに基づいてテンソルの大きさを決定し、決定されたテンソルの大きさに基づいて、正規化テンソルの大きさも決定する。正規化テンソルの大きさに基づいて、本方法は、テンソル値を決定することができる。
【特許請求の範囲】
【請求項1】
特徴マップフレームデータのサンプル値をテンソル値に変換する方法を実行するように構成された装置であって、該方法は、
前記サンプル値のサンプルの符号およびサンプルの大きさを決定するステップと、
前記決定されたサンプルの大きさに基づいて、調整されたサンプルの大きさを決定するステップと、
前記調整されたサンプルの大きさに基づいて、テンソルの大きさを決定するステップと、
前記決定されたテンソルの大きさに基づいて、正規化テンソルの大きさを決定するステップと、
前記正規化テンソルの大きさに基づいて前記テンソル値を決定するステップと
を含む装置。
【請求項2】
前記サンプルの符号および前記サンプルの大きさを決定する前記ステップは、前記サンプル値からDCオフセットを減算することを含む、請求項1に記載の装置。
【請求項3】
前記調整されたサンプルの大きさを決定する前記ステップは、
前記サンプルの大きさがゼロに等しいか、またはゼロより大きいかを判定することと、
前記サンプルの大きさがゼロに等しい場合、前記調整されたサンプルの大きさをゼロに設定することと、
前記サンプルの大きさがゼロより大きい場合、前記調整されたサンプルの大きさを、前記サンプルの大きさと所定の閾値との和に設定することと
を含む、請求項1に記載の装置。
【請求項4】
前記テンソルの大きさは、2の前記調整されたサンプルの大きさ乗から1を引いたものに等しい、請求項1に記載の装置。
【請求項5】
前記正規化テンソルの大きさを決定する前記ステップは、
前記テンソルの大きさを2のべき乗係数で割ることと、
前記サンプルの符号を前記割ったテンソルの大きさに適用して、前記正規化テンソルの大きさを求めることと
を含む、請求項1に記載の装置。
【請求項6】
前記テンソル値を決定する前記ステップは、
前記テンソルの大きさに、前記特徴マップフレームデータの量子化範囲を乗算することを含む、請求項1に記載の装置。
【請求項7】
前記装置は、スマートフォン及びカメラのうちのいずれか一つである、請求項1に記載の装置。
【請求項8】
特徴マップフレームデータのサンプル値をテンソル値に変換する方法であって、
前記サンプル値のサンプルの符号およびサンプルの大きさを決定するステップと、
前記決定されたサンプルの大きさに基づいて、調整されたサンプルの大きさを決定するステップと、
前記調整されたサンプルの大きさに基づいて、テンソルの大きさを決定するステップと、
前記決定されたテンソルの大きさに基づいて、正規化テンソルの大きさを決定するステップと、
前記正規化テンソルの大きさに基づいて前記テンソル値を決定するステップと
を含む方法。
【請求項9】
前記サンプルの符号および前記サンプルの大きさを決定する前記ステップは、前記サンプル値からDCオフセットを減算することを含む、請求項8に記載の方法。
【請求項10】
前記調整されたサンプルの大きさを決定する前記ステップは、
前記サンプルの大きさがゼロに等しいか、またはゼロより大きいかを判定することと、
前記サンプルの大きさがゼロに等しい場合、前記調整されたサンプルの大きさをゼロに設定することと、
前記サンプルの大きさがゼロより大きい場合、前記調整されたサンプルの大きさを、前記サンプルの大きさと所定の閾値との和に設定することと
を含む、請求項8に記載の方法。
【請求項11】
前記テンソルの大きさは、2の前記調整されたサンプルの大きさ乗から1を引いたものに等しい、請求項8に記載の方法。
【請求項12】
前記正規化テンソルの大きさを決定する前記ステップは、
前記テンソルの大きさを2のべき乗係数で割ることと、
前記サンプルの符号を前記割ったテンソルの大きさに適用して、前記正規化テンソルの大きさを求めることと
を含む、請求項8に記載の方法。
【請求項13】
前記テンソル値を決定する前記ステップは、
前記テンソルの大きさに、前記特徴マップフレームデータの量子化範囲を乗算することを含む、請求項8に記載の方法。
【請求項14】
特徴マップフレームデータのサンプル値をテンソル値に変換する方法を実行するためにプロセッサによって実行可能なコンピュータプログラムを含むコンピュータ可読記憶媒体であって、前記方法は、
前記サンプル値のサンプルの符号およびサンプルの大きさを決定するステップと、
前記決定されたサンプルの大きさに基づいて、調整されたサンプルの大きさを決定するステップと、
前記調整されたサンプルの大きさに基づいて、テンソルの大きさを決定するステップと、
前記決定されたテンソルの大きさに基づいて、正規化テンソルの大きさを決定するステップと、
前記正規化テンソルの大きさに基づいて前記テンソル値を決定するステップと
を含む、コンピュータ可読記憶媒体。
【請求項15】
前記サンプルの符号および前記サンプルの大きさを決定する前記ステップは、前記サンプル値からDCオフセットを減算することを含む、請求項14に記載のコンピュータ可読記憶媒体。
【請求項16】
前記調整されたサンプルの大きさを決定する前記ステップは、
前記サンプルの大きさがゼロに等しいか、またはゼロより大きいかを判定することと、
前記サンプルの大きさがゼロに等しい場合、前記調整されたサンプルの大きさをゼロに設定することと、
前記サンプルの大きさがゼロより大きい場合、前記調整されたサンプルの大きさを、前記サンプルの大きさと所定の閾値との和に設定することと
を含む、請求項14に記載のコンピュータ可読記憶媒体。
【請求項17】
前記テンソルの大きさは、2の前記調整されたサンプルの大きさ乗から1を引いたものに等しい、請求項14に記載のコンピュータ可読記憶媒体。
【請求項18】
前記正規化テンソルの大きさを決定する前記ステップは、
前記テンソルの大きさを2のべき乗係数で割ることと、
前記サンプルの符号を前記割ったテンソルの大きさに適用して、前記正規化テンソルの大きさを求めることと
を含む、請求項14に記載のコンピュータ可読記憶媒体。
【請求項19】
前記テンソル値を決定する前記ステップは、
前記テンソルの大きさに、前記特徴マップフレームデータの量子化範囲を乗算することを含む、請求項14に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願への言及
本出願はオーストラリア国特許出願第2022200086号に関し、その内容は、その全体が参照により本明細書に組み込まれる。
【0002】
本発明は一般に、デジタルビデオ信号処理に関し、特に、畳み込みニューラルネットワークからテンソルを符号化および復号するための方法、装置、およびシステムに関する。本発明はまた、ビデオ圧縮技術を使用して畳み込みニューラルネットワークからテンソルを符号化および復号するためのコンピュータプログラムを記録したコンピュータ可読媒体を含むコンピュータプログラム製品に関する。
【背景技術】
【0003】
ビデオ圧縮は、ビデオデータの送信および記憶のためのアプリケーションを含む、多くのアプリケーションをサポートするために使用されるユビキタス技術である。多くのビデオコーディング規格が開発されており、他のものは現在開発中である。ビデオコーディング標準化における最近の発展は、「Joint Video Experts Team」(JVET)と呼ばれるグループの形成につながった。Joint Video Experts Team(JVET)は、2つの標準設定組織(Standards Setting Organisations)(SSO)、つまり、「Video Coding Experts Group」(VCEG)としても知られる、International Telecommunication Union(ITU)のTelecommunication Standardisation Sector(ITU-T)のStudy Group 16、Question 6(SG16/Q6)と、「Moving Picture Experts Group」(MPEG)としても知られる、国際標準化機構/国際電気標準会議合同技術委員会1/小委員会29/Working Group 11(ISO/IEC JTC1/SC29/WG11)と、のメンバを含む。
【0004】
Joint Video Experts Team(JVET)は、「versatile video coding」(VVC)と呼ばれるビデオ圧縮規格を開発した。
【0005】
畳み込みニューラルネットワーク(CNN)は、とりわけ、物体認識、物体追跡、人間の姿勢推定、および行動認識などのマシンビジョンを伴うユースケースに対処する新興の技術である。CNNは典型的には、畳み込み層および全結合層などの多くの層を含み、データは、「テンソル」の形式で1つの層から次の層に渡される。各層の重みは、トレーニングステージで決定され、ここで、非常に大量のトレーニングデータがCNNを通過し、決定された結果がトレーニングデータに関連するグラウンドトゥルースと比較される。確率的勾配降下などのネットワーク重みを更新するためのプロセスは、ネットワークが所望のレベルの精度で実行するまで、ネットワーク重みを反復的に精緻化するために適用される。畳み込みステージが1より大きい「ストライド」を有する場合、畳み込みからの出力テンソルは、対応する入力テンソルよりも低い空間分解能を有する。「最大プーリング」のような動作はまた、入力テンソルと比較して、出力テンソルの空間サイズを低減する。最大プーリングは、入力テンソルをデータサンプルのグループ(たとえば、データサンプルの2×2グループ)に分割し、各グループから、出力テンソル内の対応する値のための出力として最大値を選択することによって出力テンソルを生成する。入力を用いてCNNを実行し、入力を出力に漸進的に変換するプロセスは、一般に「推論」と呼ばれる。
【0006】
一般に、テンソルは4つの次元、すなわち、バッチ、チャネル、高さおよび幅を有する。ビデオデータを推論するときのサイズ「1」の第1次元「バッチ」は、一度に1つのフレームがCNNを通過することを示す。ネットワークをトレーニングするとき、所定の「バッチサイズ」に従って、ネットワークの重みが更新される前に複数のフレームがネットワークを通過するように、バッチ次元の値を増加させることができる。マルチフレームビデオは、所与のビデオのフレームの数に従ってサイズが増加されたバッチ次元を有する単一のテンソルとして通過され得る。しかしながら、メモリ消費およびアクセスに関する実際的な考慮事項のために、ビデオデータの推論は、典型的にはフレーム単位で実行される。「チャネル」次元は、所与のテンソルに対する同時(concurrent)の「特徴マップ」の数を示し、高さおよび幅の次元は、CNNの特定のステージにおける特徴マップのサイズを示す。チャネルカウントは、ネットワークアーキテクチャに従ってCNNを介して変化する。また、特徴マップサイズは、特定のネットワーク層で発生するサブサンプリングに応じて変化する。
【0007】
CNNの第1層への入力は、典型的には第1層へのテンソル入力の次元との互換性のためにリサイズされる、画像またはビデオフレームである。テンソルの次元はCNNアーキテクチャに依存し、一般に、入力幅および高さに関連するいくつかの次元と、さらなる「チャネル」次元と、を有する。
【0008】
チャネルに基づいてテンソルをスライスすることは、いわゆる「特徴マップ」のセットをもたらし、これはテンソルの各スライスが対応する入力画像と何らかの関係を有し、エッジなどの何らかの特性をキャプチャするためである。ネットワークへの入力からさらに離れたレイヤにおいて、関係は、より抽象的であり得る。CNNの「タスク性能」は、特定の入力を使用してタスクを実行する際のCNNの結果を、提供されたグラウンドトゥルース(すなわち、「トレーニングデータ」)と比較することによって測定され、一般に、人間によって準備され、「正しい」結果を示すことが意図される。
【0009】
ネットワークトポロジが決定されると、ネットワークの重みは、より多くのトレーニングデータが利用可能になるにつれて時間更新され得る。また、CNNの一部分を再トレーニングし、ネットワークの他の部分(複数可)における重みを変更しないままにすることも可能である。CNNの全体的な複雑さは、非常に高くなる傾向があり、多数の積和演算が実行され、多数の中間テンソルがメモリに書き込まれ、メモリから読み出される。いくつかのアプリケーションでは、CNNが全体的に「クラウド」において実装され、高く高価な処理能力が必要となる。他のアプリケーションでは、CNNがカメラまたは携帯電話などのエッジデバイスにおいて実装され、柔軟性は低くなるが、処理負荷はより分散される。
【0010】
VVCは特に、ビデオフォーマットが(たとえば、より高い解像度およびより高いフレームレートを有する)能力を増加させるにつれて、ますます高い圧縮性能に対する継続的な需要に対処し、帯域幅コストが比較的高いWANを介したサービス配信に対する増大する市場需要に対処することが予想される。VVCは現代のシリコンプロセスにおいて実施可能であり、達成された性能と実施コストとの間の許容可能なトレードオフを提供する。実装コストはたとえば、シリコンエリア、CPUプロセッサロード、メモリ利用率、および帯域幅のうちの1つまたは複数に関して考慮され得る。VVC規格の汎用性の一部は、ビデオデータを圧縮するために利用可能なツールの幅広い選択、ならびにVVCが適している広範囲のアプリケーションにある。
【0011】
ビデオデータは、画像データのフレームのシーケンスを含み、各フレームは、1つまたは複数のカラーチャネルを含む。一般に、1つの一次カラーチャネルおよび2つの二次カラーチャネルが必要とされる。一次カラーチャネルは一般に「ルマ」チャネルと呼ばれ、二次カラーチャネルは一般に「クロマ」チャネルと呼ばれる。ビデオデータは典型的にはRGB(赤-緑-青)色空間で表示されるが、この色空間は3つのそれぞれの構成要素の間に高い相関度を有する。エンコーダまたはデコーダによって見られるビデオデータ表現はしばしば、YCbCrなどの色空間を使用している。YCbCrは、伝達関数に従って「ルマ」にマッピングされた輝度を、Y(一次)チャネルに集中させ、CbおよびCr(二次)チャネルに彩度を集中させる。非相関YCbCr信号の使用により、ルマチャネルの統計は、クロマチャネルの統計と著しく異なる。主要な差異は、量子化の後、クロマチャネルが対応するルマチャネルブロックの係数と比較して、所与のブロックのための比較的少数の有意係数を含むことである。さらに、CbおよびCrチャネルは、「4:2:0クロマフォーマット」として知られる、ルマチャネルと比較してより低いレート、例えば、水平方向に半分および垂直方向に半分で空間的にサンプリング(サブサンプリング)されてもよい。4:2:0クロマフォーマットは、インターネットビデオストリーミング、ブロードキャストテレビジョン、Blu-RayTMディスクへの保存など、「コンシューマ」アプリケーションで一般的に使用される。ルマサンプルのみが存在する場合、結果として生じるモノクロフレームは、「4:0:0クロマフォーマット」を使用すると言われる。
【0012】
VVC規格は「ブロックベース」アーキテクチャを規定し、フレームは最初に、「コーディングツリーユニット」(CTU)として知られる領域の正方形アレイに分割される。一般に、CTUは、128×128ルマサンプルのような比較的大きな面積を占める。VVC規格を使用するときの他の可能なCTUサイズは、32×32および64×64である。ただし、各フレームの右端および下端のCTUは、面積がより小さくなり得、暗黙の分割はCBがフレーム内に留まることを確実にすることを生じる。各CTUに関連付けられているのは、ルマチャネルおよびクロマチャネルの両方のための「コーディングツリー」(「共有ツリー」)、またはルマチャネルおよびクロマチャネルのそれぞれのための別個のツリーである。コーディングツリーは、CTUのエリアの、「コーディングブロック」(CB)とも呼ばれるブロックのセットへの分解を定義する。共有ツリーが使用中であるとき、単一のコーディングツリーはルマチャネルおよびクロマチャネルの両方のためのブロックを指定し、その場合、コロケートされたコーディングブロックのコレクションは「コーディングユニット」(CU)と呼ばれる(すなわち、各カラーチャネルのためのコーディングブロックを有する各CU)。CBは、特定の順序で符号化または復号するために処理される。4:2:0クロマフォーマットの使用の結果として、128×128ルマサンプルエリアのためのルマコーディングツリーを有するCTUは、128×128ルマサンプルエリアと並置された64×64クロマサンプルエリアのための対応するクロマコーディングツリーを有する。単一のコーディングツリーがルマチャネルおよびクロマチャネルのために使用されているとき、所与のエリアのためのコロケートされたブロックのコレクションは概して、「ユニット」、たとえば、上記のCU、ならびに「予測ユニット」(PU)および「変換ユニット」(TU)と呼ばれる。4:2:0クロマフォーマットビデオデータのカラーチャネルにまたがるCUを有する単一のツリーは、クロマブロックを、対応するルマブロックの幅および高さの半分にする。所与のエリアのために別個のコーディングツリーが使用されるとき、上述のCB、ならびに「予測ブロック」(PB)および「変換ブロック」(TB)が使用される。
【0013】
「ユニット」と「ブロック」との間の上記の区別にもかかわらず、「ブロック」という用語は、すべてのカラーチャネルに動作が適用されるフレームのエリアまたは領域の総称として使用され得る。
【0014】
CUごとに、フレームデータの対応する領域のコンテンツ(サンプル値)の予測ユニット(PU)が生成される(「予測ユニット」)。さらに、予測と、エンコーダへの入力で見られる領域の内容と、の間の差分(または「空間領域」残差)の表現が形成される。各色チャネルにおける差分は、残差係数のシーケンスとして変換され、コーディングされ得、所与のCUのための1つまたは複数のTUを形成する。適用される変換は、残差値の各ブロックに適用される、離散コサイン変換(DCT)または他の変換であり得る。変換は分離可能に適用される(すなわち、2次元変換は、2つのパスで実行される)。ブロックは最初に、ブロック内のサンプルの各行に1次元変換を適用することによって変換される。次いで、部分結果は、部分結果の各列に1次元変換を適用することによって変換され、残差サンプルを実質的に非相関化する変換係数の最終ブロックを生成する。様々なサイズの変換は、矩形形状ブロックの変換を含むVVC規格によってサポートされ、各サイド寸法は2のべき乗である。変換係数は、ビットストリームへのエントロピー符号化のために量子化される。
【0015】
VVCは、イントラフレーム予測およびインターフレーム予測を特徴とする。イントラフレーム予測は、フレーム内のデータサンプルの現在のブロックの予測を生成するために使用されているフレーム内の以前に処理されたサンプルの使用を伴う。インターフレーム予測は、以前に復号されたフレームから取得されたサンプルのブロックを使用して、フレーム中のサンプルの現在のブロックの予測を生成することを伴う。以前に復号されたフレームから取得されたサンプルのブロックは、しばしばフィルタリングが適用された動きベクトルに従って、現在のブロックの空間位置からオフセットされる。イントラフレーム予測ブロックは、(i)均一サンプル値(「DCイントラ予測」)、(ii)オフセットおよび水平および垂直勾配を有するプレーン(「平面イントラ予測」)、(iii)特定の方向に適用された隣接サンプルを有するブロックの母集団(「角度イントラ予測」)、または(iv)隣接サンプルおよび選択された行列係数を使用した行列乗算の結果であり得る。予測されたブロックと対応する入力サンプルとの間のさらなる不一致は、「残差」をビットストリームに符号化することによって、ある程度補正され得る。残差は一般に、空間領域から周波数領域に変換されて、「一次変換領域において残差係数を形成し、これは、「二次変換領域」において残差係数を生成するために、「二次変換」のアプリケーションによってさらに変換され得る。残差係数は量子化パラメータに従って量子化され、デコーダで生成されたサンプルの再構成の精度の損失をもたらすが、ビットストリームにおけるビットレートの低減を伴う。
【発明の概要】
【0016】
本発明の目的は、既存の構成の1つまたは複数の欠点を実質的に克服するか、または少なくとも改善することである。
【0017】
本開示の態様は、特徴マップフレームデータのサンプル値をテンソル値に変換する方法を実行するように構成された装置を提供し、該方法は、前記サンプル値のサンプルの符号およびサンプルの大きさを決定するステップと、前記決定されたサンプルの大きさに基づいて、調整されたサンプルの大きさを決定するステップと、前記調整されたサンプルの大きさに基づいて、テンソルの大きさを決定するステップと、前記決定されたテンソルの大きさに基づいて、正規化テンソルの大きさを決定するステップと、前記正規化テンソルの大きさに基づいて前記テンソル値を決定するステップとを含む。
【0018】
本開示の別の態様は、特徴マップフレームデータのサンプル値をテンソル値に変換する方法を提供し、該方法は、前記サンプル値のサンプルの符号およびサンプルの大きさを決定するステップと、前記決定されたサンプルの大きさに基づいて、調整されたサンプルの大きさを決定するステップと、前記調整されたサンプルの大きさに基づいて、テンソルの大きさを決定するステップと、前記決定されたテンソルの大きさに基づいて、正規化テンソルの大きさを決定するステップと、前記正規化テンソルの大きさに基づいて前記テンソル値を決定するステップとを含む。
【0019】
本開示の別の態様は、特徴マップフレームデータのサンプル値をテンソル値に変換する方法を実行するためにプロセッサによって実行可能なコンピュータプログラムを含むコンピュータ可読記憶媒体を提供し、前記方法は、前記サンプル値のサンプルの符号およびサンプルの大きさを決定するステップと、前記決定されたサンプルの大きさに基づいて、調整されたサンプルの大きさを決定するステップと、前記調整されたサンプルの大きさに基づいて、テンソルの大きさを決定するステップと、前記決定されたテンソルの大きさに基づいて、正規化テンソルの大きさを決定するステップと、前記正規化テンソルの大きさに基づいて前記テンソル値を決定するステップとを含む。
他の態様も開示される。
【図面の簡単な説明】
【0020】
次に、本発明の少なくとも1つの実施形態を、以下の図面および付録を参照して説明する。
【
図1】
図1は、分散マシンタスクシステムを示す概略ブロック図である。
【
図2A】
図2Aは、
図1の分散マシンタスクシステムが実施され得る汎用コンピュータシステムの概略ブロック図を形成する。
【
図2B】
図2Bは、
図1の分散マシンタスクシステムが実施され得る汎用コンピュータシステムの概略ブロック図を形成する。
【
図3A】
図3Aは、CNNのバックボーン部分の機能モジュールを示す概略ブロック図である。
【
図4】
図4は、CNNの代替バックボーン部分の機能モジュールを示す概略ブロック図である。
【
図5】
図5は、分散マシンタスクシステムの一部としての特徴マップ量子化器およびパッカを示す概略ブロック図である。
【
図6】
図6は、ビデオエンコーダの機能モジュールを示す概略ブロック図である。
【
図7】
図7は、ビデオデコーダの機能モジュールを示す概略ブロック図である。
【
図8】
図8は、分散マシンタスクシステムの一部としての特徴マップ逆量子化器およびアンパッカを示す概略ブロック図である。
【
図9A】
図9Aは、CNNのヘッド部を示す概略ブロック図である。
【
図10】
図10は、CNNの代替ヘッド部分を示す概略ブロック図である。
【
図11】
図11は、モノクロフレームにおける特徴マップパッキング配置を示す概略ブロック図である。
【
図12】
図12は、モノクロフレームにおける代替的な特徴マップパッキング配置を示す概略ブロック図である。
【
図13】
図13は、4:2:0クロマサブサンプリングカラーフレームにおける特徴マップパッキング配置を示す概略ブロック図である。
【
図14】
図14は、符号化されたパックされた特徴マップおよび関連するメタデータを保持するビットストリームを示す概略ブロック図である。
【
図15】
図15は、CNNの第1部分を実行し、結果として得られる特徴マップを符号化するための方法を示す。
【
図16】
図16は、テンソル値を量子化して係数を生成する方法を示す。
【
図17】
図17は、特徴マップを復号し、CNNの第2部分を実行するための方法を示す。
【
図18】
図18は、特徴マップフレームデータのサンプル値をテンソル値に変換する方法を示す。
【発明を実施するための形態】
【0021】
添付の図面のいずれか1つまたは複数において、同じ参照符号を有するステップおよび/または特徴が参照される場合、それらのステップおよび/または特徴は反対の意図がない限り、本説明の目的のために、同じ機能または動作を有する。
【0022】
分散マシンタスクシステムは、中間圧縮データを生成するネットワークカメラまたはスマートフォンなどのエッジデバイスを含むことができる。分散マシンタスクシステムはまた、中間圧縮データを操作して何らかのタスク結果を生成するサーバファームベース(「クラウド」)アプリケーションなどの最終デバイスを含み得る。加えて、エッジデバイス機能は、クラウドにおいて具現化されてもよく、中間圧縮データは潜在的に、必要に応じて複数の異なるタスクのために、後の処理のために記憶されてもよい。
【0023】
中間圧縮データの便利な形態は、高性能圧縮規格およびその実装の利用可能性のために、圧縮ビデオビットストリームである。ビデオ圧縮規格は、典型的には平面アレイに配置された、10ビットなど、いくつかの所与のビット深度の整数サンプルを操作する。カラービデオは、用途に応じて、例えば色成分Y、Cb、Cr、またはR、G、Bに対応する3つの平面アレイを有する。CNNは通常、テンソルの形で浮動小数点データを操作し、テンソルは一般に、CNNが動作するが、カラービデオデータの典型的な3つのチャネルよりも多くのチャネルを有する、入ってくるビデオデータと比較して、はるかに小さい空間次元を有する。
【0024】
テンソルは典型的には以下の次元:フレーム、チャネル、高さ、および幅を有する。例えば、次元[1、256、76、136]のテンソルは、各々がサイズ136×76の256個の特徴マップを含むと言われる。ビデオデータの場合、推論は、典型的には複数のフレームを含むテンソルを使用するのではなく、一度に1つのフレームで実行される。
【0025】
VVCエンコーダおよびデコーダは、「制約」として知られる能力シグナリングメカニズムを含む。ビットストリームの初期には、VVC規格のどの能力がビットストリームにおいて使用されないかを示す制約のセットが存在する。制約は、ビットストリームの「プロファイル」および「レベル」とともにシグナリングされる。プロファイルは、ツールのセットがビットストリームを復号するために利用可能である必要がある、ことを広く示す。制約はまた、どのツールが指定されたプロファイルにおいてさらに制約されるかの制御の細かい粒度を提供する。さらなる制約は「サブプロファイリング」として参照される。ビデオエンコーダによって符号化されているデータのタイプに応じて、サブプロファイルを用いてツールのサブセットを定義することによって、デコーダは、ビットストリームの示されたプロファイルのコーディングツールのサブセットが使用されるべきであることを、ビットストリーム復号を開始する前に知ることができる。
【0026】
図1は、分散マシンタスクシステム100の機能モジュールを示す概略ブロック図である。複数のシステムにわたってマシンタスクを分配するという概念は、「協調インテリジェンス」と呼ばれることがある。システム100は、符号化されたデータから特徴マップを符号化および復号するための平面フレームに特徴マップを効率的にパッキングおよび量子化するための方法を実装するために使用され得、その結果、関連するオーバーヘッドデータは過度に負担がかからず、復号された特徴マップのタスク性能はビットストリームのビットレートの変化に対して回復力があり、テンソルの量子化された表現はタスク性能に関して相応の利益を提供しない場合、ビットを不必要に消費しない。
【0027】
システム100は、符号化ビデオ情報の形で符号化データを生成するためのソースデバイス110を含む。システム100はまた、宛先デバイス140を含む。通信チャネル130は、ソースデバイス110から宛先デバイス130に符号化ビデオ情報を通信するために使用される。いくつかの構成では、ソースデバイス110および宛先デバイス140の一方もしくは両方が、それぞれの移動電話ハンドセット(たとえば、「スマートフォン」)またはネットワークカメラおよびクラウドアプリケーションを有しても良い。通信チャネル130は、イーサネット(登録商標)などの有線接続、またはWiFiもしくは5Gなどの無線接続であり得る。さらに、ソースデバイス110および宛先デバイス140は、符号化ビデオデータがファイルサーバ内のハードディスクドライブなどの何らかのコンピュータ可読記憶媒体上でキャプチャされるアプリケーションを備え得る。
【0028】
図1に示すように、ソースデバイス110は、ビデオソース112と、CNNバックボーン114と、特徴マップ量子化器およびパッカ116と、マルチプレクサ118と、ビデオエンコーダ120と、送信機122と、を含む。ビデオソース112は、典型的には画像キャプチャセンサ、非一時的記録媒体上に記憶された以前にキャプチャされたビデオシーケンス、または遠隔画像キャプチャセンサからのビデオフィードなど、キャプチャされたビデオフレームデータ(113として示される)のソースを備える。ビデオソース112はまた、コンピュータグラフィックスカードの出力であってもよく、例えば、コンピューティングデバイス(例えば、タブレットコンピュータ)上で実行される様々なアプリケーションおよびオペレーティングシステムのビデオ出力を表示する。ビデオソース112として画像キャプチャセンサを含み得るソースデバイス110の例は、スマートフォン、ビデオカムコーダ、プロフェッショナルビデオカメラ、およびネットワークビデオカメラを含む。
【0029】
CNNバックボーン114は、ビデオフレームデータ113を受信し、CNNの「バックボーン」に対応するレイヤなど、全体的なCNNの特定のレイヤを実行する。CNNのバックボーンレイヤは例えば、ビデオフレームデータ113によって表される入力画像の異なる空間スケールに対応する複数のテンソルを出力として生成することができる。「フィーチャピラミッドネットワーク(feature pyramid network)」(FPN)アーキテクチャは、バックボーン114から出力される3つのレイヤに対応する3つのテンソルを、様々な空間分解能およびチャネルカウントでもたらすことができる。特徴マップ量子化器およびパッカ116は、CNNバックボーン114から出力されるテンソル115を受信する。特徴マップ量子化器およびパッカ116は、テンソル115内の浮動小数点値をフレーム119にパックされるデータサンプルに量子化することによって、CNNバックボーン114の出力である全体的なCNNの内部層をビデオエンコーダ120にインターフェースするように作用する。たとえば、フレーム119の解像度は2056×1224であり得、フレーム119のビット深度は10ビットであり得る。チャネル次元に沿ってテンソル115をスライスすることはチャネルごとに1つの特徴マップを抽出することをもたらし、所与のテンソルの特徴マップはテンソルの追加の次元から決定される特定のサイズを有する。FPNが使用される場合、着信フレームごとに複数のテンソルが生成され、特徴マップの複数のセットを含み、特徴マップの各セットは異なる空間分解能を有する。すべてのレイヤの特徴マップは、パックされた特徴マップフレーム117などの平面ビデオフレームにパックされる。マルチプレクサ118はソースデバイス110がビデオデータを符号化するように構成されている場合、ソースデバイス110が特徴マップまたはフレームデータ113を符号化するように構成されている場合、パックされた特徴マップフレーム117を選択し、フレーム119をビデオエンコーダ120の形の符号化ユニットに出力する。特徴マップと通常のビデオデータとの間の選択は、メタデータSEIメッセージ内の「frame_type」シンタックスエレメントを使用してビットストリーム内で符号化される。メタデータSEIメッセージは、付録Aを参照して説明される。フレーム119がビデオエンコーダ120に入力され、そこで、非可逆圧縮がフレーム119に適用されて、ビットストリーム121を生成する。ビットストリーム121は通信チャネル130を介した送信のために送信機122に供給されるか、またはビットストリーム121は後で使用するために記憶装置132に書き込まれる。
【0030】
CNNバックボーン114によるテンソルへの変換後、結果として得られる特徴マップのコンテンツは、ビデオデータ113において明確に識別可能である個人(individuals)をもはや識別することができない。記憶装置132を使用する(例えば圧縮された形態での)特徴マップの記憶は、特に偽名化または匿名化のための欧州一般データ保護規則(GDPR)要件に関連して、ユーザプライバシーの観点からより安全であり得る。
【0031】
ソースデバイス110は、CNNバックボーン114のための特定のネットワークをサポートする。しかしながら、宛先デバイス140は、ヘッドCNN150のためのいくつかのネットワークのうちの1つを使用し得る。このようにして、パックされた特徴マップの形の部分的に処理されたデータは、CNNバックボーン114の動作を再度実行する必要なく、様々なタスクを実行する際に後で使用するために記憶され得る。ビデオエンコーダ120は、フレームデータ119を符号化するためにVVCのコーディングツール(または「プロファイル」)の特定のセットを使用する。
【0032】
ビットストリーム121は、送信機122によって、符号化ビデオデータ(または「符号化ビデオ情報」)として通信チャネル130を介して送信される。ビットストリーム121はいくつかの実装形態では記憶装置132に記憶することができ、記憶装置132は、後に通信チャネル130を介して送信されるまで(または通信チャネル130を介した送信の代わりに)、「フラッシュ」メモリまたはハードディスクドライブなどの非一時的記憶デバイスである。例えば、符号化されたビデオデータは、ビデオストリーミングアプリケーションのためのワイドエリアネットワーク(WAN)を介して需要に応じて顧客に提供され得る。
【0033】
宛先デバイス140は、受信機142と、ビデオデコーダ144と、デマルチプレクサ146と、特徴マップアンパッカおよび逆量子化器148と、CNNヘッド150と、CNNタスク152と、表示デバイス160と、を含む。受信機142は通信チャネル130から符号化ビデオデータを受信し、受信したビデオデータをビットストリームとしてビデオデコーダ144に渡す(矢印143で示す)。そして、ビデオデコーダ144は、復号されたフレームデータをデマルチプレクサ146に出力する(矢印145で示す)。復号されたメタデータ155はまた、ビデオデコーダ144によってビットストリーム143から抽出され、特徴マップアンパッカおよび逆量子化器148に渡される。復号されたメタデータ155は、典型的にはビットストリーム143に存在する「補足強化情報」(SEI)メッセージ1413(
図14参照)から取得される。付録Aは各例示的なシンタックスエレメントのセマンティクスとともに、復号されたメタデータ155の例示的なシンタックスを示す。復号されたメタデータ155は、あらゆるフレームのビットストリームから復号され、存在し得る。復号されたメタデータ155は、すべてのフレームよりも少ない頻度で存在し、復号され得る。たとえば、復号されたメタデータ155は、ビットストリーム143中のイントラピクチャにのみ存在し、復号され得る。復号されたメタデータ155が所与のフレームについて存在しないとき、最も最近の利用可能なメタデータが使用される。宛先デバイス140がビットストリーム143のSEIメッセージ1413中の「frame_type」シンタックスエレメントによって示されるように、CNNタスクを実行するように構成される場合、フレームデータ145は、特徴マップフレームデータ147として、特徴マップアンパッカおよび逆量子化器148に出力される。そうではなく、宛先デバイス140がビデオデータの復号を実行するように構成される場合、フレームデータ145は、フレームデータ159として出力され、ビデオとして表示するために表示デバイス160に供給される。特徴マップアンパッカおよび逆量子化器148は、CNNヘッド150に供給されるテンソル149を出力する。CNNヘッド150は、CNNバックボーン114で開始されたタスクの後のレイヤを実行して、タスク結果バッファ152に記憶されたタスク結果151を生成する。表示デバイス160の例は、陰極線管、スマートフォン、タブレットコンピュータ、コンピュータモニタ、またはスタンドアロンテレビセットなどの液晶ディスプレイを含む。ソースデバイス110および宛先デバイス140の各々の機能性は単一のデバイスにおいて具現化されることも可能であり、その例は、携帯電話ハンドセット、タブレットコンピュータ、およびクラウドアプリケーションを含む。
【0034】
上述の例示的なデバイスにもかかわらず、ソースデバイス110および宛先デバイス140の各々は、一般にハードウェア構成要素とソフトウェア構成要素との組合せを通して、汎用コンピューティングシステム内で構成され得る。
図2Aは、コンピュータモジュール201と、キーボード202とマウスポインタデバイス203とスキャナ226と、ビデオソース112として構成され得るカメラ227と、マイクロフォン280となどの入力デバイスと、プリンタ215と、表示デバイス160として構成され得る表示デバイス214と、ラウドスピーカ217とを含む出力デバイスとを含む、そのようなコンピュータシステム200を示す。外部変調器-復調器(Modem)トランシーバデバイス216は、コネクション221を介して通信ネットワーク220との間で通信するためにコンピュータモジュール201によって使用され得る。通信チャネル130を表し得る通信ネットワーク220は、インターネット、セルラー電気通信ネットワーク、またはプライベートWANなどの(WAN)であり得る。コネクション221が電話回線である場合、モデム216は、従来の「ダイヤルアップ」モデムであってもよい。代替として、コネクション221が大容量(たとえば、ケーブルまたは光)コネクションである場合、モデム216はブロードバンドモデムであり得る。ワイヤレスモデムはまた、通信ネットワーク220へのワイヤレス接続のために使用され得る。トランシーバデバイス216は、送信機116および受信機142の機能を提供することができ、通信チャネル130は、コネクション221において具現化され得る。
【0035】
コンピュータモジュール201は、典型的には少なくとも1つのプロセッサユニット205と、メモリユニット206とを含む。例えば、メモリユニット206は、半導体RAM(random access memory)及び半導体ROM(read only memory)を有することができる。コンピュータモジュール201はまた、ビデオディスプレイ214に結合するオーディオビデオインターフェース207、ラウドスピーカ217およびマイクロフォン280と、キーボード202、マウス203、スキャナ226、カメラ227、および任意選択でジョイスティックまたは他のヒューマンインターフェースデバイス(図示せず)に結合するI/Oインターフェース213と、外部モデム216およびプリンタ215のためのインターフェース208とを含む、いくつかの入力/出力(I/O)インターフェースを含む。オーディオ-ビデオインターフェース207からコンピュータモニタ214への信号は一般に、コンピュータグラフィックスカードの出力である。いくつかの実装形態では、モデム216がコンピュータモジュール201内に、たとえばインターフェース208内に組み込まれ得る。コンピュータモジュール201はまた、ローカルエリアネットワーク(LAN)として知られるローカルエリア通信ネットワーク222へのコネクション223を介してコンピュータシステム200の結合を可能にするローカルネットワークインターフェース211を有する。
図2Aに示されるように、ローカル通信ネットワーク222はまた、コネクション224を介してワイドネットワーク220に結合することができ、これは、典型的にはいわゆる「ファイアウォール」デバイスまたは同様の機能のデバイスを含む。ローカルネットワークインターフェース211は、Ethernet
TM回路カード、Bluetooth
TMワイヤレス構成、またはIEEE802.11ワイヤレス構成を有しうるが、インターフェース211のために多数の他のタイプのインターフェースが実施され得る。ローカルネットワークインターフェース211はまた、送信機122および受信機142の機能を提供することができ、通信チャネル130はまた、ローカル通信ネットワーク222において具現化され得る。
【0036】
I/Oインターフェース208および213は、シリアルコネクティビティおよびパラレルコネクティビティのいずれかまたは両方を提供することができ、前者は典型的にはユニバーサルシリアルバス(USB)規格に従って実装され、対応するUSBコネクタ(図示せず)を有する。記憶デバイス209が提供され、典型的にはハードディスクドライブ(HDD)210を含む。また、フロッピーディスク(登録商標)ドライブや磁気テープドライブ(図示せず)などの他の記憶デバイスを用いてもよい。光ディスクドライブ212は、典型的にはデータの不揮発性ソースとして機能するように設けられる。例えば、光ディスク(例えば、CD-ROM、DVD、Blu ray DiscTM)、USB-RAM、ポータブル、外部ハードディスク、およびフロッピーディスクなどのポータブルメモリデバイスを、コンピュータシステム200への適切なデータのソースとして使用することができる。典型的には、HDD210、光ドライブ212、ネットワーク220および222のいずれも、ビデオソース112として、またはディスプレイ214を介して再生のために記憶される復号されたビデオデータの宛先として動作するように構成されてもよい。システム100のソースデバイス110および宛先デバイス140は、コンピュータシステム200において具現化され得る。
【0037】
コンピュータモジュール201の構成要素205~213は、典型的には、相互接続されたバス204を介して、当業者に知られているコンピュータシステム200の従来の動作モードをもたらすように通信する。たとえば、プロセッサ205は、コネクション218を使用してシステムバス204に結合される。同様に、メモリ206および光ディスクドライブ212は、コネクション219によってシステムバス204に結合される。説明された構成を実施することができるコンピュータの例は、IBM-PCおよび互換機、SunSPARCstation、AppleMacTM、または同様のコンピュータシステムを含む。
【0038】
適切または望ましい場合、ビデオエンコーダ120およびビデオデコーダ144、ならびに以下で説明する方法は、コンピュータシステム200を使用して実装され得る。特に、ビデオエンコーダ120、ビデオデコーダ144、および説明される方法は、コンピュータシステム200内で実行可能な1つまたは複数のソフトウェアアプリケーションプログラム233として実装され得る。特に、ビデオエンコーダ120、ビデオデコーダ144、および説明される方法のステップは、コンピュータシステム200内で実行されるソフトウェア233内の命令231(
図2B参照)によって実行される。ソフトウェア命令231は、それぞれが1つまたは複数の特定のタスクを実行するための1つまたは複数のコードモジュールとして形成され得る。ソフトウェアはまた、2つの別個の部分に分割され得、第1部分および対応するコードモジュールは説明された方法を実行し、第2部分および対応するコードモジュールは、第1部分とユーザとの間のユーザインターフェースを管理する。
【0039】
ソフトウェアはたとえば、以下で説明する記憶デバイスを含むコンピュータ可読媒体に記憶され得る。ソフトウェアは、コンピュータ可読媒体からコンピュータシステム200にロードされ、次いで、コンピュータシステム200によって実行される。コンピュータ可読媒体に記録されたそのようなコンピュータプログラムまたはソフトウェアを有するコンピュータ可読媒体は、コンピュータプログラム製品である。コンピュータシステム200におけるコンピュータプログラム製品の使用は、好ましくはソースデバイス110および宛先デバイス140を実装するための有利な装置と、説明された方法と、をもたらす。
【0040】
ソフトウェア233は、典型的には、HDD210またはメモリ206に格納される。ソフトウェアは、コンピュータ可読媒体からコンピュータシステム200にロードされ、コンピュータシステム200によって実行される。したがって、たとえば、ソフトウェア233は光ディスクドライブ212によって読み取られる光学的に読み取り可能なディスク記憶媒体(たとえば、CD-ROM)225に記憶され得る。
【0041】
いくつかの例では、アプリケーションプログラム233が1つまたは複数のCD-ROM225上で符号化されたユーザに供給され、対応するドライブ212を介して読み出されてもよく、あるいはネットワーク220または222からユーザによって読み出されてもよい。さらに、ソフトウェアは、他のコンピュータ可読媒体からコンピュータシステム200にロードすることもできる。コンピュータ可読記憶媒体は実行および/または処理のために、記録された命令および/またはデータをコンピュータシステム200に提供する任意の非一時的有形記憶媒体を指す。このような記憶媒体の例は、フロッピーディスク、磁気テープ、CD-ROM、DVD、Blu-ray DiscTM、ハードディスクドライブ、ROM又は集積回路、USBメモリ、光磁気ディスク、又はPCMCIAカード等のコンピュータ可読カード、などを含み、このようなデバイスはコンピュータモジュール201の内部又は外付けである。コンピュータモジュール201へのソフトウェア、アプリケーションプログラム、命令、および/またはビデオデータもしくは符号化ビデオデータの提供に参加することもできる一時的または非有形のコンピュータ可読伝送媒体の例は、無線または赤外線伝送チャネル、ならびに別のコンピュータまたはネットワーク化されたデバイスへのネットワークコネクション、ならびに電子メール送信およびウェブサイトなどに記録された情報を含むインターネットまたはイントラネットを含む。
【0042】
アプリケーションプログラム233の第2部分および上述の対応するコードモジュールは、ディスプレイ214上にレンダリングされるかまたは表される1つまたは複数のグラフィカルユーザインターフェース(GUI)を実装するために実行され得る。典型的にはキーボード202およびマウス203の操作を通して、コンピュータシステム200およびアプリケーションのユーザは、機能的に適応可能な方法でインターフェースを操作して、GUIに関連するアプリケーションに制御コマンドおよび/または入力を提供することができる。ラウドスピーカ217を介して出力されるスピーチプロンプトと、マイクロフォン280を介して入力されるユーザ音声コマンドとを利用するオーディオインターフェースなど、機能的に適応可能なユーザインターフェースの他の形態も実装され得る。
【0043】
図2Bは、プロセッサ205および「メモリ」234の詳細な概略ブロック図である。メモリ234は、
図2Aのコンピュータモジュール201によってアクセス可能な全てのメモリモジュール(記憶デバイス209及び半導体メモリ206を含む)の論理的集合を表す。
【0044】
コンピュータモジュール201が最初に電源投入されると、パワーオンセルフテスト(POST)プログラム250が実行される。POSTプログラム250は、典型的には
図2Aの半導体メモリ206のROM249に格納される。ソフトウェアを記憶するROM249などのハードウェアデバイスは、ファームウェアと呼ばれることがある。POSTプログラム250は適切な機能を保証するためにコンピュータモジュール201内のハードウェアを検査し、典型的には、正しい動作のために、プロセッサ205、メモリ234(209、206)、および同様に典型的にはROM249に記憶された基本入出力システムソフトウェア(BIOS)モジュール251をチェックする。POSTプログラム250が正常に実行されると、BIOS251は、
図2Aのハードディスクドライブ210を起動する。ハードディスクドライブ210の起動により、ハードディスクドライブ210に常駐するブートストラップローダプログラム252に、プロセッサ205を介して実行させる。これにより、オペレーティングシステム253がRAMメモリ206にロードされ、オペレーティングシステム253が動作を開始する。オペレーティングシステム253はプロセッサ205によって実行可能なシステムレベルアプリケーションであり、プロセッサ管理、メモリ管理、デバイス管理、ストレージ管理、ソフトウェアアプリケーションインターフェース、および汎用ユーザインターフェースを含む、様々な高レベルの機能を果たす。
【0045】
オペレーティングシステム253は、メモリ234(209、206)を管理して、コンピュータモジュール201上で実行される各プロセスまたはアプリケーションが別のプロセスに割り振られたメモリと衝突することなく実行するのに十分なメモリを有することを保証する。さらに、
図2Aのコンピュータシステム200において利用可能な異なるタイプのメモリは、各プロセスが効果的に実行され得るように、適切に使用される必要がある。したがって、集約メモリ234は、メモリの特定のセグメントがどのように割り振られるかを示すことを意図するものではなく(特に明記しない限り)、むしろ、コンピュータシステム200によってアクセス可能なメモリの一般的なビュー、およびそのようなメモリがどのように使用されるかを提供することを意図するものである。
【0046】
図2Bに示されるように、プロセッサ205は、制御部239と、算術論理部(ALU)240と、キャッシュメモリと呼ばれることもあるローカルまたは内部メモリ248とを含む、いくつかの機能モジュールを含む。キャッシュメモリ248は、典型的にはレジスタセクション内にいくつかの記憶レジスタ244~246を含む。1つ以上の内部バス241は、これらの機能モジュールを機能的に相互接続する。プロセッサ205はまた、典型的には、コネクション218を使用して、システムバス204を介して外部デバイスと通信するための1つまたは複数のインターフェース242を有する。メモリ234は、コネクション219を使用してバス204に結合される。
【0047】
アプリケーションプログラム233は、条件付き分岐およびループ命令を含むことができる一連の命令231を含む。また、プログラム233は、プログラム233の実行に用いられるデータ232を含んでもよい。命令231およびデータ232は、それぞれ、メモリロケーション228、229、230および235、236、237に記憶される。命令231およびメモリロケーション228~230の相対的なサイズに応じて、特定の命令はメモリロケーション230に示される命令によって示されるように、単一のメモリロケーションに記憶され得る。代替的に、命令はメモリロケーション228および229に示される命令セグメントによって示されるように、それぞれが別個のメモリロケーションに記憶されるいくつかの部分にセグメント化され得る。
【0048】
一般に、プロセッサ205には、その中で実行される命令のセットが与えられる。プロセッサ205は、プロセッサ205が別の命令セットを実行することによって反応する後続の入力を待つ。各入力は、すべて
図2Aに示される、入力デバイス202、203のうちの1つまたは複数によって生成されたデータ、ネットワーク220、202のうちの1つにわたって外部ソースから受信されたデータ、記憶デバイス206、209のうちの1つから取り出されたデータ、または、対応するリーダ212に挿入された記憶媒体225から取り出されたデータを含む、いくつかのソースのうちの1つまたは複数から提供され得る。命令のセットの実行は、場合によってはデータの出力をもたらし得る。実行はまた、データまたは変数をメモリ234に記憶することを伴い得る。
【0049】
ビデオエンコーダ120、ビデオデコーダ144、および説明する方法は、入力変数254を使用し得、入力変数はメモリ234中の対応するメモリロケーション255、256、257に記憶される。ビデオエンコーダ120、ビデオデコーダ144、および説明される方法は、出力変数261を生成し、それらは、メモリ234中の対応するメモリロケーション262、263、264に記憶される。中間変数258は、メモリロケーション259、260、266、および267に記憶され得る。
【0050】
図2Bのプロセッサ205を参照すると、レジスタ244、245、246、算術論理ユニット(ALU)240、および制御部239は、プログラム233を構成する命令セット内の命令ごとに「フェッチ、デコード、および実行」サイクルを実行するために必要なマイクロオペレーションのシーケンスを実行するように協働する。各フェッチ、デコード、および実行サイクルは:
メモリロケーション228、229、230から命令231をフェッチまたは読み出すフェッチ動作;
制御部239が、どの命令がフェッチされたかを判定するデコード動作と、
制御部239および/またはALU240が命令を実行する実行動作とを含む。
【0051】
その後、次の命令のためのさらなるフェッチ、デコード、および実行サイクルが実行され得る。同様に、格納サイクルは、制御部239が値をメモリロケーション232に格納または書き込むことによって実行されてもよい。
【0052】
説明される
図15、16、17、および18の方法における各ステップまたはサブプロセスは、プログラム233の1つまたは複数のセグメントに関連付けられ、典型的には、プロセッサ205内のレジスタセクション244、245、247、ALU240、および制御部239によって実行され、プログラム233の言及されたセグメントのための命令セット内のすべての命令について、フェッチ、デコード、および実行サイクルを実行するように協働する。
【0053】
図3Aは、CNNバックボーン114として機能し得るCNNのバックボーン部分310の機能モジュールを示す概略ブロック図である。バックボーン部分114は「DarkNet-53」と呼ばれることもあるが、異なるバックボーンも可能であり、その結果、フレームごとにテンソル115の層の数および次元が異なる。
図14および付録Aを参照して説明される、SEIメッセージ1413内の「backbone_id」シンタックスエレメントは、バックボーンのタイプを示す。バックボーンのタイプが未知である場合、テンソル次元は、各レイヤについての特徴マップカウント(「fm_cnt」)および各レイヤについての特徴マップ次元(「fm_width」および「fm_height」)を使用して指定される。
【0054】
図3Aに見られるように、ビデオデータ113は、CNNバックボーン310による処理に適した解像度にフレームをリサイズするリサイザモジュール304に渡され、リサイズされたフレームデータ312を生成する。フレームデータ113の解像度が既にCNNバックボーン310に適している場合、リサイザモジュール304の動作は不要である。リサイズされたフレームデータ312は、畳み込みバッチ正規化漏れ修正線形(convolutional batch normalisation leaky rectified linear)(CBL)モジュール314に渡され、テンソル316を生成する。CBL314は
図3Dに示されるように、CBLモジュール360を参照して説明されるようなモジュールを含む。
【0055】
CBLモジュール360は、テンソル361を入力として受け取り、これは、畳み込みレイヤ362に渡されてテンソル363を生成する。畳み込みレイヤ362が1のストライドを有するとき、テンソル363はテンソル361と同じ空間次元を有する。畳み込みレイヤ362が2などのより大きいストライドを有するとき、テンソル363はテンソル361と比較してより小さい空間次元を有し、例えば、2のストライドのサイズが半分になる。ストライドにかかわらず、テンソル363のチャネル次元のサイズは、特定のCBLブロックのテンソル361のチャネル次元と比較して変化し得る。テンソル363は、テンソル365を出力するバッチ正規化モジュール364に渡される。バッチ正規化モジュール364は、入力テンソル363を正規化し、スケーリング係数およびオフセット値を適用して、出力テンソル365を生成する。スケーリング係数およびオフセット値は、トレーニングプロセスから導出される。テンソル365は、漏れ修正線形活性化(「LeakyReLU」)モジュール366に渡され、テンソル367を生成する。モジュール366は「漏れ」活性化関数を提供し、テンソル内の正の値が通過され、負の値の大きさが、例えば、それらの以前の値の0.1Xに大幅に低減される。
【0056】
テンソル316は、CBLブロック314から、内部で11個の残差ユニットの連結を含む残差ブロック11モジュール320に渡される。
【0057】
残差ブロックは、
図3Bに示されるResBlock340を参照して説明される。ResBlock340は、テンソル343を生成するためにゼロパディングモジュール342によってゼロパディングされたテンソル341を受け取る。テンソル343は、CBLモジュール344に渡されてテンソル345を生成する。テンソル345は残差ユニット346に渡され、残差ブロック340は一連の連結された残差ユニットを含む。残差ユニット346の最後の残差ユニットは、テンソル347を出力する。残差ユニットは
図3Cに見られるように、ResUnit350を参照して説明される。ResUnit350はテンソル351を入力とし、CBLモジュール352に渡されてテンソル353を生成する。テンソル353は、第2CBLユニット354に渡され、テンソル355を生成する。加算モジュール356は、テンソル355をテンソル351と合計してテンソル357を生成する。加算モジュール356は、入力テンソル351が出力テンソル357に実質的に影響を与えるので、「ショートカット」と呼ばれることもある。トレーニングされていないネットワークの場合、ResUnit350は、パススルーテンソルに作用する。トレーニングが実行されると、CBLモジュール352および354は、トレーニングデータおよびグラウンドトゥルースデータに従ってテンソル357をテンソル351から離すように動作する。
【0058】
Res11モジュール320はテンソル322を出力し、これは、バックボーンモジュール310からレイヤのうちの1つとして出力され、また、Res8モジュール324に提供される。Res8モジュール324は8個の残差ユニット(すなわち、350)を含む残差ブロック(すなわち、340)である。Res8モジュール324はテンソル326を生成し、これはRes4モジュール328に渡され、レイヤの1つとしてバックボーンモジュール310からも出力される。Res4モジュールは4つの残差ユニット(すなわち、350)を含む残差ブロック(すなわち、340)である。Res4モジュール324は、レイヤの1つとしてバックボーンモジュール310から出力されるテンソル329を生成する。まとめて、レイヤテンソル322、326、および329は、テンソル115として出力される。バックボーンCNN310は入力として、解像度1088×608のビデオフレームをとり、3つのレイヤに対応する3つのテンソルを生成することができ、次の[1、256、76、136]、[1、512、38、68]、[1、1024、19、34]の次元を有する。3つのレイヤに対応する3つのテンソルの別の例は、[1、512、34、19]、[1、256、68、38]、[1、128、136、76]であってもよく、これらはそれぞれ、CNN310内の第75の特徴マップ、第90の特徴マップ、および第105の特徴マップにおいて分離される。分離点はCNN310に依存する。
【0059】
図4は、CNNバックボーン114として機能し得るCNNの代替バックボーン部分400の機能モジュールを示す概略ブロック図である。バックボーン部分400は特徴ピラミッドネットワーク(「ResNet FPN」)を有する残差ネットワークを実施し、CNNバックボーン114の代替である。フレームデータ113は入力され、テンソル409、413、417、425を介して、ステムネットワーク408、res2モジュール412、res3モジュール416、res4モジュール420、res5モジュール424、およびmaxプールモジュール428を通過し、maxプールモジュール428は、出力としてテンソル429を生成する。ステムネットワーク408は、2のストライドを有する7x7畳み込みと、最大プーリング動作とを含む。res2モジュール412、res3モジュール416、res4モジュール420、およびres5モジュール424は、畳み込み演算、LeakyReLUアクティベーションを実行する。各モジュール421、416、420および424はまた、2のストライドセッティングを介して、処理されたテンソルの解像度の1つの半分を実行する。テンソル409、413、417、および425は、1x1横方向畳み込みモジュール440、442、444、および446に渡され、テンソル441、443、445、および447を生成する。テンソル441は、3x3出力畳み込みモジュール470に渡され、出力テンソル P5 471を生成する。テンソル441はまた、アップサンプリングされたテンソル451を生成するために、アップサンプラモジュール450に渡される。合計モジュール460はテンソル443および451を合計してテンソル461を生成し、これは、アップサンプラモジュール452および3x3横方向畳み込みモジュール472に渡される。モジュール472は、P4テンソル473を出力する。アップサンプラモジュール452は、アップサンプリングされたテンソル453を生成する。合計モジュール462はテンソル445および453を合計してテンソル463を生成し、テンソルは、3x3横方向畳み込みモジュール474およびアップサンプラモジュール454に渡される。モジュール474は、P3テンソル475を出力する。アップサンプラモジュール454は、アップサンプリングされたテンソル455を出力する。合計モジュール464はテンソル447および455を合計してテンソル465を生成し、これは、3x3横方向畳み込みモジュール476に渡される。モジュール476は、P2テンソル477を出力する。アップサンプラモジュール450、452、および454は、計算の複雑さが低いために最近接補間を使用する。テンソル429、471、473、475、および477は、CNNバックボーン400の出力テンソル115を形成する。
【0060】
図5は、分散マシンタスクシステム100の一部としての特徴マップ量子化器およびパッカ116を示す概略ブロック図である。CNNバックボーン114からのテンソル115は、グループ決定モジュール510、範囲決定モジュール514、および量子化器モジュール518に入力される。言い換えれば、量子化器モジュール518は、浮動小数点値から整数値へのマッピング関数または伝達関数を実施する。グループ決定モジュール510は、入力テンソル115の特徴マップ(チャネル)を、所定の基準またはテンソル115に存在するデータの何らかの尺度に基づいて、特徴マップグループ512に割り当てる。特徴マップグループ512は、異なるレイヤのテンソルにまたがってもよく、または個々のレイヤに限定されてもよい。特徴マップグループ512は、範囲決定モジュール514に渡され、メタデータ125の一部として出力される。範囲決定モジュール514はグループごとに、それぞれのグループに属する特徴マップに存在する最大振幅値を示す量子化範囲を決定し、量子化範囲516を生成する。範囲決定モジュール514はすべてのフレームで新しい量子化範囲を決定することができ、または、たとえば、イントラピクチャ上でのみ、より低い頻度で新しい量子化範囲を決定することができる。
【0061】
ビットストリーム121は、量子化範囲が更新されたか否かを示す「qr_update」フラグをメタデータ(付録A参照)に含む。単一の量子化範囲を使用して、量子化範囲が属するグループの特徴マップ内の量子化前の任意の値の最大の大きさを表すことができる。別のアレンジメントでは、特徴マップグループ内の最大正値および特徴マップ内の最大負値のための別個の量子化範囲が使用され、その結果、グループあたり2つの値を有する非対称量子化範囲が得られる。
【0062】
テンソル115は一般に、32ビットの浮動小数点精度値を有し、したがって、各量子化範囲は、浮動小数点値でもある。16ビットおよび8ビットなどの他の浮動小数点精度が可能であり、浮動小数点値の指数部および小数部に対するビットの様々な割り当ても可能である。
【0063】
量子化範囲516は、量子化器モジュール518に渡され、メタデータ125の一部として出力される。量子化器モジュール518は、各特徴マップを2段階でサンプル値に量子化する。まず、特徴マップが属する特徴マップグループの量子化範囲を用いて、特徴マップ値を正規化し、[-1,1]からの範囲の値を得る。第2に、正規化された特徴マップ値は、ビデオエンコーダ120のビット深度に対応するサンプル範囲にスケーリングされる。10ビット演算の場合、正規化された特徴マップに特徴マップグループ512が乗算され、次いで、特徴マップグループ512のオフセットが加算され、合計が整数精度に変換され、整数化された特徴マップ520として出力される。乗算および加算演算は所与の特徴マップグループの特徴マップの中で、最小または最大許容サンプル値(すなわち、10ビットビデオに対して0または1023)の少なくとも1つの値の利用をもたらす。ビデオデコーダ144の出力において生じ得るオーバーシュートに対するある程度の回復力を提供するために、正規化された特徴マップに適用される乗算係数は、クリッピングを導入することなく使用され得る可能な最大の乗算係数と比較して低減され得る。YCbCr色空間で表されるレギュラビデオの場合、16~235または8ビットビデオデータの「ビデオ範囲」と、10ビットビデオデータについて64~940の「ビデオ範囲」とが定義される。したがって、乗算係数を全値の7/8に低減することができ、結果として、YCbCrビデオデータのビデオ範囲に見られるような同様のサンプル範囲が得られる。結果として得られる乗算係数は、7/8×(1<<(bit_depth-1))となる。負のテンソル値を正の範囲にシフトするために使用されるオフセット係数は
図6および
図7を参照して説明されるように、イントラ予測のための利用不可能な参照サンプルのデフォルト予測子に対応する、中間点、すなわち1<<(bit_depth-1)に残される。量子化から生成される整数値が、フレーム内のサンプルのビット深度によって許容される範囲を超える場合、クリッピングが適用されて、整数値がフレーム内のサンプルのビット深度内に留まることを保証する。整数化された特徴マップ520はパッカモジュール522に渡され、それはパッキングフォーマットに従って配置された整数化された特徴マップ520の各特徴マップを含むパックされた特徴マップフレーム117を生成する。パッキングフォーマットは、
図11~13を参照してさらに説明される。結果として得られるパックされた特徴マップフレーム117は、マルチプレクサ118を介してビデオエンコーダ120に渡される。
【0064】
図6は、ビデオエンコーダ120の機能モジュールを示す概略ブロック図である。
図7は、ビデオデコーダ144の機能モジュールを示す概略ブロック図である。一般に、データは、固定サイズのサブブロックへのブロックの分割など、サンプルまたは係数のグループ中で、またはアレイとして、ビデオエンコーダ120内の機能モジュールとビデオデコーダ144内の機能モジュールとの間を通過する。ビデオエンコーダ120およびビデオデコーダ144は
図2Aおよび
図2Bに示すように、汎用コンピュータシステム200を使用して実装され得り、様々な機能モジュールは、コンピュータシステム200内の専用ハードウェアによって、ハードディスクドライブ205上に常駐し、プロセッサ205によってその実行において制御されるソフトウェアアプリケーションプログラム233の1つまたは複数のソフトウェアコードモジュールなど、コンピュータシステム200内で実行可能なソフトウェアによって実装され得る。あるいは、ビデオエンコーダ120およびビデオデコーダ144が専用ハードウェアと、コンピュータシステム200内で実行可能なソフトウェアとの組合せによって実装され得る。ビデオエンコーダ120、ビデオデコーダ144、および説明される方法は代替的に、説明される方法の機能またはサブ機能を実行する1つまたは複数の集積回路など、専用ハードウェアにおいて実装され得る。そのような専用ハードウェアは、グラフィック処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、特定用途向け標準製品(ASSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または1つもしくは複数のマイクロプロセッサおよび関連するメモリを含み得る。特に、ビデオエンコーダ120はモジュール610~690を備え、ビデオデコーダ144はモジュール720~796を備え、これらのモジュールはそれぞれ、ソフトウェアアプリケーションプログラム233の1つまたは複数のソフトウェアコードモジュールとして実装され得る。
【0065】
図6のビデオエンコーダ120は汎用ビデオコーディング(VVC)ビデオ符号化パイプラインの一例であるが、本明細書で説明する処理ステージを実行するために他のビデオコーデックも使用され得る。ビデオエンコーダ120は一連のフレームなどのフレームデータ119を受信し、各フレームは、1つまたは複数のカラーチャネルを含む。フレームデータ119は使用中のプロファイルによってサポートされる任意のクロマフォーマットおよびビット深度、たとえば、8~10ビットのサンプル精度で、VVC規格の「Main 10」プロファイルに対して4:0:0、4:2:0であり得る。ブロックパーティショナ610は最初に、フレームデータ119を、形状が概ね正方形であり、CTUのための特定のサイズが使用されるように構成されたCTUに分割する。CTUの最大有効サイズはたとえば、「シーケンスパラメータセット」中に存在する「sps_log2_ctu_size_minus5」シンタックスエレメントによって構成される、32×32、64×64、または128×128ルマサンプルであり得る。CTUサイズはまた、さらなる分割を伴わないCTUが1つのCUを含むので、最大CUサイズを提供する。ブロックパーティショナ610はさらに、ルマコーディングツリーおよびクロマコーディングツリーに従って、各CTUを1つまたは複数のCBに分割する。ルマチャネルは、一次カラーチャネルと呼ばれることもある。各クロマチャネルは、二次カラーチャネルとも呼ばれ得る。CBは様々なサイズを有し、正方形と非正方形の両方のアスペクト比を含み得る。しかしながら、VVC規格ではCB、CU、PU、およびTUは常に2のべき乗である辺長を有する。したがって、612として表される現在のCBは、CTUのルマコーディングツリーおよびクロマコーディングツリーに従って、CTUの1つまたは複数のブロックにわたる反復に従って進行する、ブロックパーティショナ610から出力される。
【0066】
動作は概してCTUごとに説明されるが、ビデオエンコーダ120およびビデオデコーダ144はメモリ消費を低減するために、より小さいサイズの領域について動作し得る。たとえば、各CTUは、サイズ64×64の「仮想パイプラインデータユニット」(VPDU)として知られる、より小さい領域に分割され得る。VPDUはハードウェアアーキテクチャにおけるパイプライン処理により適したデータの粒度を形成し、メモリフットプリントの低減は、完全なCTUについての動作と比較して、シリコン面積、したがってコストを低減する。CTUサイズが128×128である場合、1つのVPDUの処理が次のVPDUに進む前に完全に完了されることを保証するために、許可されたコーディングツリーに対する制限が設けられる。例えば、128×128CTUのコーディングツリーのルートノードでは、結果として生じるCU(32×128/128×32など、またはそのさらなる分解)が1つの64×64領域から後続の64×64領域への必要な進行で処理され得ないので、三値分割は禁止される。CTUサイズが64×64である場合、エンコーダによって選択されたコーディングツリーにかかわらず、処理は次の64×64領域(すなわち、1つのCTUから次)に進む前に、必ず1つの64×64領域を完了する。
【0067】
フレームデータ119の最初の分割から得られるCTUは、ラスタ走査順序で走査され得、1つまたは複数の「スライス」にグループ化され得る。スライスは、「イントラ」(または「I」)スライスであり得る。イントラスライス(Iスライス)は、スライス内のすべてのCUがイントラ予測されることを示す。一般に、コード化レイヤビデオシーケンス(CLVS)中の第1ピクチャはIスライスのみを含み、「イントラピクチャ」と呼ばれる。CLVSは「ランダムアクセスポイント」(すなわち、復号が開始され得るビデオシーケンス中の中間フレーム)を形成する、周期的なイントラピクチャを含み得る。代替として、スライスは、それぞれ、スライス中の単予測および双予測の追加の利用可能性を示す、単予測または双予測(それぞれ、「P」または「B」スライス)であり得る。
【0068】
ビデオエンコーダ120は、ピクチャ構造に従ってピクチャのシーケンスを符号化する。1つのピクチャ構造は「低遅延」であり、その場合、インター予測を使用するピクチャは、シーケンス中で以前に発生したピクチャのみを参照し得る。低遅延は、後続のピクチャによる可能な参照のために記憶されることに加えて、各ピクチャが復号されるとすぐに出力されることを可能にする。別のピクチャ構造は「ランダムアクセス」であり、ピクチャのコーディング順序は、表示順序とは異なる。ランダムアクセスはインター予測されたピクチャが、復号されたが、まだ出力されていない他のピクチャを参照することを可能にする。表示順序に関して将来の参照ピクチャが復号ピクチャバッファ内に存在するように、ピクチャバッファリングの度合いが必要とされ、その結果、複数フレームの遅延が生じる。
【0069】
4:0:0以外のクロマフォーマットが使用されているとき、Iスライスでは、各CTUのコーディングツリーが64×64レベルより下で、1つはルマ用であり、別の1つはクロマ用である2つの別個のコーディングツリーに発散し得る。別個のツリーの使用は、CTUのルマ64×64エリア内のルマとクロマとの間に異なるブロック構造が存在することを可能にする。たとえば、大きいクロマCBは、多数のより小さいルマCBとコロケートされ得、逆もまた同様である。PまたはBスライスにおいて、CTUの単一のコーディングツリーは、ルマおよびクロマに共通のブロック構造を定義する。単一ツリーの結果として生じるブロックは、イントラ予測またはインター予測され得る。
【0070】
ピクチャのスライスへの分割に加えて、ピクチャはまた、「タイル」に分割され得る。タイルは、ピクチャの矩形領域をカバーするCTUのシーケンスである。CTU走査は、各タイル内でラスタ走査方式で行われ、1つのタイルから次のタイルに進む。スライスは、整数個のタイル、または所与のタイル内のCTUの整数個の連続する行のいずれかであり得る。
【0071】
各CTUについて、ビデオエンコーダ120は2つのステージで動作する。第1ステージ(「サーチ」ステージと呼ばれる)では、ブロックパーティショナ610がコーディングツリーの様々な潜在的な構成をテストする。コーディングツリーの各潜在的構成は、関連する「候補」CBを有する。第1ステージは比較的低い歪みで比較的高い圧縮効率を提供するCBを選択するために、様々な候補CBをテストすることを伴う。テストは一般に、ラグランジュ最適化を伴い、それによって、レート(すなわち、符号化コスト)および歪み(すなわち、入力フレームデータ119に対する誤差)の重み付けされた組合せに基づいて候補CBが評価される。「最良」候補CB(すなわち、評価されたレート/歪みが最も低いCB)が、ビットストリーム121への後続の符号化のために選択される。候補CBの評価に含まれるのは、所与のエリアに対してCBを使用するか、または様々な分割オプションに従ってエリアをさらに分割し、より小さい結果のエリアの各々をさらなるCBでコーディングするか、またはエリアをさらに分割するオプションである。結果として、コーディングツリーおよびCB自体の両方が、サーチステージにおいて選択される。
【0072】
ビデオエンコーダ120はCB、たとえば、CB612ごとに、矢印620によって示される予測ブロック(PB)を生成する。PB620は、関連するCB612のコンテンツの予測である。減算器モジュール622はPB620とCB612との間に、624として示される差分(または、空間領域における差分を参照する「残差」)を生成する。差分624は、PB620およびCB612における対応するサンプル間のブロックサイズ差分である。差分624は、変換され、量子化され、矢印636によって示される変換ブロック(TB)として表される。PB620および関連するTB636は典型的にはたとえば、評価されたコストまたは歪みに基づいて、多くの可能な候補CBのうちの1つから選択される。
【0073】
候補コーディングブロック(CB)は、関連付けられたPBおよび結果として生じる残差のためにビデオエンコーダ120に利用可能な予測モードのうちの1つから生じるCBである。TB636は、ビデオエンコーダ120中の予測されたPBと組み合わされると、ビットストリーム中の追加の信号を犠牲にして、復号されたCBとオリジナルのCB612との間の差を低減する。
【0074】
したがって、各候補コーディングブロック(CB)、すなわち変換ブロック(TB)と組み合わせた予測ブロック(PB)は、関連するコーディングコスト(または「レート」)と、関連する差分(または「歪み」)とを有する。CBの歪みは、典型的には絶対差の和(SAD)、二乗差の和(SSD)、または差に適用されるアダマール変換など、サンプル値の差として推定される。各候補PBから結果として生じる推定は予測モード687を決定するために、差分624を使用してモードセレクタ686によって決定され得る。予測モード687は現在のCBのための特定の予測モード、たとえば、イントラフレーム予測またはインターフレーム予測を使用する決定を示す。各候補予測モードと対応する残差コーディングとに関連するコーディングコストの推定は、残差のエントロピーコーディングよりも著しく低いコストで実行され得る。したがって、いくつかの候補モードが、リアルタイムビデオエンコーダにおいてさえ、レート歪み検知において最適モードを決定するために評価され得る。
【0075】
レート歪みに関して最適モードを決定することは、典型的にはラグランジュ最適化のバリエーションを使用して達成される。
【0076】
ラグランジアンまたは同様の最適化処理は、(ブロックパーティショナ610による)CBへのCTUの最適なパーティショニングの選択、ならびに複数の可能性からの最良の予測モードの選択の両方に使用され得る。モード選択モジュール686における候補モードのラグランジュ最適化プロセスの適用を通して、最も低いコスト測定値を有するイントラ予測モードが「最良」モードとして選択される。最低コストモードは選択された二次変換インデックス688を含み、これはまた、エントロピーエンコーダ638によってビットストリーム121において符号化される。
【0077】
ビデオエンコーダ120の動作の第2ステージ(「コーディング」ステージと呼ばれる)では、各CTUの決定されたコーディングツリーに対する反復がビデオエンコーダ120において実行される。別個のツリーを使用するCTUの場合、CTUの64×64ルマ領域ごとに、ルマコーディングツリーが最初に符号化され、次いでクロマコーディングツリーが符号化される。ルマコーディングツリー内ではルマCBのみが符号化され、クロマコーディングツリー内ではクロマCBのみが符号化される。共有ツリーを使用するCTUの場合、単一のツリーは共有ツリーの共通ブロック構造に従ってCU(すなわち、ルマCBおよびクロマCB)を記述する。
【0078】
エントロピーエンコーダ638は、可変長および固定長コードワードを使用するシンタックスエレメントのビットワイズコーディングと、シンタックスエレメントのための算術コーディングモードとをサポートする。「パラメータセット」などのビットストリームの一部、例えば、シーケンスパラメータセット(SPS)およびピクチャパラメータセット(PPS)は、固定長コードワードと可変長コードワードとの組合せを使用する。連続部分とも呼ばれるスライスは、可変長コーディングを使用するスライスヘッダと、それに続く算術コーディングを使用するスライスデータを有する。スライスヘッダは、スライスレベルの量子化パラメータオフセットなど、現在のスライスに固有のパラメータを定義する。スライスデータは、スライス中の各CTUのシンタックスエレメントを含む。可変長コーディングおよび算術コーディングの使用は、ビットストリームの各部分内での逐次的な構文解析を必要とする。部分は、「ネットワーク抽象化レイヤユニット」または「NALユニット」を形成するための開始コードで区切られ得る。算術コーディングは、コンテキスト適応型バイナリ算術コーディングプロセスを使用してサポートされる。
【0079】
算術的にコーディングされたシンタックスエレメントは、1つ以上の「ビン」のシーケンスからなる。ビンはビットと同様に、「0」または「1」の値を有する。しかしながら、ビンは、ディスクリートビットとしてビットストリーム121内に符号化されない。ビンは、関連する予測(または「可能性が高い」または「最も可能性が高い」)値と、「コンテキスト」として知られる関連する確率とを有する。コーディングされるべき実際のビンが予測値と一致するとき、「最確シンボル」(MPS)がコーディングされる。最も可能性の高いシンボルをコーディングすることは、ビットストリーム121内の消費ビットに関して比較的安価であり、1つ未満のディスクリートビットに相当するコストを含む。コーディングされる実際のビンが可能性のある値と一致しない場合、「最低確率シンボル」(LPS)がコーディングされる。最も可能性の低いシンボルをコーディングすることは、消費されるビットに関して比較的高いコストを有する。ビンコーディング技法は、「0」対「1」の確率が歪んでいるビンの効率的なコーディングを可能にする。2つの可能な値(すなわち、「フラグ」)を有するシンタックスエレメントについては、単一のビンが適切である。多くの可能な値を有するシンタックスエレメントの場合、ビンのシーケンスが必要とされる。
【0080】
シーケンス中の後のビンの存在は、シーケンス中の前のビンの値に基づいて決定され得る。さらに、各ビンは、2つ以上のコンテキストに関連付けられ得る。特定のコンテキストの選択は、シンタックスエレメント中の以前のビン、隣接するシンタックスエレメントのビン値(すなわち、隣接するブロックからのもの)などに依存し得る。文脈コーディングされたビンが符号化されるたびに、そのビン(もしあれば)のために選択されたコンテキストは、新しいビン値を反映する方法で更新される。このように、バイナリ算術コーディング方式は、適応的であると言われる。
【0081】
また、エントロピーエンコーダ638によってサポートされるのは、「バイパスビン」と呼ばれる、コンテキストを欠くビンである。バイパスビンは、「0」と「1」との間の等確率分布を仮定してコーディングされる。したがって、各ビンは、ビットストリーム121中の1ビットのコーディングコストを有する。コンテキストがないことはメモリを節約し、複雑さを低減し、したがって、バイパスビンは特定のビンの値の分布が歪まない場合に使用される。コンテキストおよび適応を使用するエントロピーコーダの一例はCABAC(コンテキスト適応型バイナリ算術コーダ)として当技術分野で知られており、このコーダの多くの変形例がビデオコーディングにおいて使用されている。
【0082】
エントロピーエンコーダ638は量子化パラメータ692を符号化し、現在のCBのために使用されている場合、LFNSTインデックス388を、コンテキストコーディングされたビンとバイパスコーディングされたビンとの組合せを使用して符号化する。量子化パラメータ692は、「デルタQP」を使用して符号化される。デルタQPは、「量子化グループ」として知られる各エリアにおいて最大で1回シグナリングされる。量子化パラメータ692は、ルマCBの残差係数に適用される。調整された量子化パラメータが、コロケートされたクロマCBの残差係数に適用される。調整された量子化パラメータは、オフセットのリストから選択されたCUレベルオフセットおよびマッピングテーブルに従ってルマ量子化パラメータ692からマッピングすることを含み得る。二次変換インデックス688は、変換ブロックに関連する残差が二次変換の適用によって一次係数に変換される係数位置にのみ有意な残差係数を含むときにシグナリングされる。
【0083】
CBに関連する各TBの残差係数は、残差シンタックスを使用してコーディングされる。残差シンタックスは、係数の有意性を示すために主に算術的にコーディングされたビンを使用し、より低い値の大きさとともに、より高い大きさの残差係数のためにバイパスビンを予約することによって、低い大きさで係数を効率的に符号化するように設計される。したがって、非常に低い大きさの値を含む残差ブロックと、有意な係数の疎な配置とが、効率的に圧縮される。さらに、2つの残差コーディング方式が存在する。変換が適用されるときに見られるように、正規残差コーディング方式は、TBの左上隅に主に位置する有意係数を有するTBに対して最適化される。変換スキップ残差コーディング方式は、変換が実行されないTBに利用可能であり、TB全体にわたるそれらの分布にかかわらず、残差係数を効率的に符号化することができる。
【0084】
マルチプレクサモジュール684は、各候補CBのテストされた予測モードから選択された、決定された最良のイントラ予測モードに従って、イントラフレーム予測モジュール664からPB620を出力する。候補予測モードは、ビデオエンコーダ120によってサポートされるすべての考えられる予測モードを含む必要はない。イントラ予測は3つのタイプに分けられ、第1に、PBに、近くの再構成されたサンプルの平均を表す単一の値をポピュレートすることを伴う「DCイントラ予測」、第2に、PBに、平面に従ってサンプルをポピュレートすることを伴い、DCオフセットおよび垂直および水平勾配は、近くの再構成された隣接するサンプルから導出される「平面イントラ予測」。近隣の再構成されたサンプルは、典型的にはある程度までPBの右に延在する現在のPBの上の再構成されたサンプルの行と、ある程度までPBを越えて下方に延在する、現在のPBの左に再構成されたサンプルの列と、を含み、第3に、特定の方向(または「角度」)にPBにわたってフィルタリングされ伝播された再構成された近隣のサンプルをPBにポピュレートすることを含む、「角度イントラ予測」を含む。VVCでは、65個の角度がサポートされ、矩形ブロックは合計87個の角度を生成するために、正方形ブロックには利用できない追加の角度を利用することができる。
【0085】
クロマPBには第4のタイプのイントラ予測が利用可能であり、それによりPBは「クロスコンポーネント線形モデル」(CCLM)モードに従ってコロケートされたルマ再構成サンプルから生成される。3つの異なるCCLMモードが利用可能であり、各モードは、隣接するルマサンプルおよびクロマサンプルから導出された異なるモデルを使用する。導出されたモデルは、コロケートされたルマサンプルからクロマPBのためのサンプルのブロックを生成するために使用される。ルマブロックは、行列の事前定義されたセットから選択された1つの行列を使用して、参照サンプルの行列乗算を使用してイントラ予測され得る。この行列イントラ予測(MIP)はビデオデータの大きなセットについてトレーニングされた行列を使用することによって利得を達成し、行列は、角度、平面、またはDCイントラ予測モードでは容易に捕捉されない予測ブロックと参照サンプルとの間の関係を表す。
【0086】
モジュール664はまた、「イントラブロックコピー」(IBC)方法を使用して現在フレームの近くからブロックをコピーすることによって予測ユニットを生成し得る。参照ブロックの位置はVPDUとして知られる64×64の領域に分割された1つのCTUに相当する領域に制約され、各行またはCTU内および各スライスまたはタイル内の前のCTUの現在のCTUおよびVPDUの処理されたVPDUをカバーする領域はビットストリームの構成されたCTUサイズにかかわらず、1つの128×128ルーマサンプルに対応する領域制限までである。この領域は「IBC仮想バッファ」として知られており、IBC参照領域を制限し、したがって、必要とされる記憶域を制限する。IBCバッファは再構成されたサンプル654でポピュレートされ(すなわち、ループフィルタリングの前に)、したがって、フレームバッファ672への別個のバッファが必要とされる。CTUサイズが128×128であるとき、仮想バッファは現在のCTUに隣接し、その左にあるCTUからのサンプルのみを含む。CTUサイズが32×32または64×64であるとき、仮想バッファは、現在のCTUの左に4または16個までのCTUを含む。CTUサイズにかかわらず、IBC参照ブロックのためのサンプルを取得するための隣接CTUへのアクセスは、ピクチャ、スライス、またはタイルのエッジなどの境界によって制約される。特に、より小さい寸法を有するFPN層の特徴マップの場合、32×32または64×64などのCTUサイズの使用は、以前の特徴マップのセットをカバーするようにより整列された参照領域をもたらす。特徴マップ配置がSAD、SSE、または他の差分メトリックに基づいて順序付けられる場合、IBC予測のための同様の機能マップへのアクセスは、コーディング効率の良い利点を提供する。
【0087】
特徴マップデータを符号化するときの予測ブロックの残差は、自然ビデオについて見られる残差とは異なる。そのような自然ビデオは典型的には、オペレーティングシステムのユーザインターフェースなどに一般に見られるように、画像センサまたはスクリーンコンテンツによってキャプチャされる。特徴マップ残差は多くの詳細を含む傾向があり、これは、様々な変換の主に低周波数係数よりも多くのコーディングをスキップする変換に適している。実験(Experiments)は、特徴マップ残差が変換コーディングから利益を得るのに十分なローカル類似性を有することを示す。しかしながら、特徴マップ残差係数の分布は、変換ブロックのDC(左上)係数に向かってクラスタ化されない。言い換えれば、特徴マップデータを符号化するときに変換が利得を示すのに十分な相関が存在し、これは、特徴マップデータの予測ブロックを生成するためにイントラブロックコピーが使用されるときにも当てはまる。したがって、アダマールコスト推定は、SADまたはSSDコスト推定のみに依存するのではなく、特徴マップデータを符号化するときに、イントラブロックコピーの候補ブロックベクトルから生じる残差を評価するときに使用され得る。SADまたはSSDコスト推定は、スキップコーディングを変換するのにより適した残差を有するブロックベクトルを選択する傾向があり、変換を使用してコンパクトに符号化される残差を有するブロックベクトルを見逃す可能性がある。VVC規格の多重変換選択(MTS)ツールはDCT-2変換に加えて、DST-7およびDCT-8変換の組合せが残差符号化のために水平および垂直に利用可能であるように、特徴マップデータを符号化するときに使用され得る。
【0088】
イントラ予測されたルマコーディングブロックは垂直または水平のいずれかで、等しいサイズの予測ブロックのセットに区分され得、各ブロックは16個のルマサンプルの最小エリアを有する。このイントラサブパーティション(ISP)アプローチは、別個の変換ブロックがルマコーディングブロック中の1つのサブパーティションから次のサブパーティションへの予測ブロック生成に寄与することを可能にし、圧縮効率を改善する。
【0089】
以前に再構成された隣接するサンプルが利用できない場合、例えば、フレームのエッジにおいて、サンプルの範囲の半分のデフォルトハーフトーン値が使用される。例えば、10ビットビデオの場合、512の値が使用される。フレームの左上位置に配置されたCBには以前のサンプルが利用可能ではないので、角度および平面イントラ予測モードはDC予測モード(すなわち、大きさとしてハーフトーン値を有するサンプルの平面)と同じ出力を生成する。
【0090】
インターフレーム予測の場合、予測ブロック682は、動き補償モジュール680によってビットストリーム内のコーディング順序フレームにおいて現在のフレームに先行する1つまたは2つのフレームからのサンプルを使用して生成され、マルチプレクサモジュール684によってPB620として出力される。さらに、インターフレーム予測の場合、単一のコーディングツリーが典型的には、ルマチャネルとクロマチャネルの両方のために使用される。ビットストリーム中のフレームをコーディングする順序は、キャプチャまたは表示されたときのフレームの順序とは異なり得る。1つのフレームが予測のために使用されるとき、ブロックは「単予測」であると言われ、1つの関連する動きベクトルを有する。2つのフレームが予測のために使用されるとき、ブロックは「双予測」であると言われ、2つの関連する動きベクトルを有する。Pスライスの場合、各CUは、イントラ予測または単予測され得る。Bスライスの場合、各CUは、イントラ予測、単予測、または双予測され得る。
【0091】
フレームは、典型的には「ピクチャのグループ」構造を使用してコーディングされ、フレームの時間的階層を可能にする。フレームは複数のスライスに分割され得、スライスの各々はフレームの一部分を符号化する。フレームの時間的階層は、フレームを表示する順序で、フレームが前後のピクチャを参照することを可能にする。画像は、各フレームを復号するための依存性が満たされることを保証するために必要な順序でコーディングされる。予測ユニットのための参照サンプルブロックを選択およびフィルタリングするために1つまたは2つの動きベクトルを使用する代わりに、予測ユニットは複数のより小さいブロックに分割され、動きフィールドが生成され、したがって、各々のより小さいブロックは別個の動きベクトルを有するアフィンインター予測モードが利用可能である。動きフィールドは、予測ユニットの近くの点の動きベクトルを「制御点」として使用する。アフィン予測は深く分割されたコーディングツリーを使用する必要性がより少ない、異なる変換への動きのコーディングを可能にする。VVCに利用可能な双予測モードは、シグナリングされたブロックの中心からの角度およびオフセットを有する、選択された軸に沿った2つの参照ブロックの幾何学的ブレンドを実行する。この幾何学的分割モード(「GPM」)は、コーディングユニットのためにコーディングされた境界のジオメトリを角度および中心オフセットとして、2つのオブジェクト間の境界に沿ってより大きいコーディングユニットを使用することを可能にする。デカルト(x、y)オフセットを使用する代わりに、動きベクトル差は、サポートされる2の累乗距離のセットを用いて、方向(上/下/左/右)および距離としてコーディングされ得る。動きベクトル予測子は、オフセットが適用されないかのように、隣接ブロック(「マージモード」)から取得される。現在のブロックは、選択された隣接ブロックと同じ動きベクトルを共有する。
【0092】
サンプルは、動きベクトル678および参照ピクチャインデックスに従って選択される。動きベクトル678および参照ピクチャインデックスは、すべてのカラーチャネルに適用され、したがって、インター予測はPBではなくPUでの動作に関して主に説明される。各CTUの1つまたは複数のインター予測ブロックへの分解は、単一のコーディングツリーを用いて説明される。インター予測方法は、動きパラメータの数およびそれらの精度において変化し得る。動きパラメータは典型的には参照フレームのリストからのどの参照フレームが使用されるべきかを示す参照フレームインデックスと、参照フレームの各々のための空間変換とを備えるが、より多くのフレーム、専用のフレーム、またはスケーリングおよび回転などの複雑なアフィンパラメータを含み得る。加えて、参照されたサンプルブロックに基づいて密な動き推定を生成するために、所定の動き精緻化処理が適用され得る。
【0093】
PB620を決定して選択し、減算器622で元のサンプルブロックからPB620を減算すると、624として表される最も低いコーディングコストを有する残差が得られ、非可逆圧縮を受ける。非可逆圧縮プロセスは、変換、量子化、およびエントロピーコーディングのステップを含む。順方向一次変換モジュール626は差分624に順方向変換を適用し、差分624を空間領域から周波数領域に変換し、矢印628によって表される一次変換係数を生成する。一次元における最大の一次変換サイズは、シーケンスパラメータセット中の「sps_max_luma_transform_size_64_flag」によって構成される32ポイントDCT-2または64ポイントDCT-2変換のいずれかである。符号化されているCBがブロックサイズ(たとえば、64×64または32×32)として表される最大のサポートされる一次変換サイズよりも大きい場合、一次変換626は、差分624のすべてのサンプルを変換するためにタイル方式で適用される。非正方形CBが使用される場合、タイリングはまた、CBの各寸法において最大の利用可能な変換サイズを使用して実行される。たとえば、32の最大変換サイズが使用されるとき、64×16CBは、タイル方式で構成された2つの32×16一次変換を使用する。CBが最大サポート変換サイズよりもサイズが大きいとき、CBはタイル状にTBで埋められる。例えば、64-pt変換最大サイズを有する128×128CBは、2×2配置で4つの64×64TBで埋められる。32-pt変換最大サイズを有する64×128CBは、2×4配置で8つの32×32TBで埋められる。
【0094】
変換626の適用は、CBのための複数のTBをもたらす。変換の各アプリケーションが32×32よりも大きい差分624、例えば、64×64のTBに対して動作する場合、TBの左上の32×32エリアの外側のすべての結果として生じる一次変換係数628はゼロに設定される(すなわち、破棄される)。残りの一次変換係数628は、量子化器モジュール634に渡される。一次変換係数628は、CBに関連する量子化パラメータ692に従って量子化されて、一次変換係数632を生成する。量子化パラメータ692に加えて、量子化器モジュール634はまた、TB内のそれらの空間位置に従って残差係数をさらにスケーリングすることによって、TB内の不均一量子化を可能にするために「スケーリングリスト」を適用し得る。量子化パラメータ692は、ルマCB対各クロマCBについて異なり得る。一次変換係数632は、順方向二次変換モジュール630に渡され、非分離可能二次変換(NSST)動作を実行するか、または二次変換をバイパスすることによって、矢印636によって表される変換係数を生成する。順方向一次変換は典型的には分離可能であり、行のセット、次いで、各TBの列のセットを変換する。順方向一次変換モジュール626は、水平方向および垂直方向におけるタイプII離散コサイン変換(DCT-2)、または水平方向および垂直方向における変換のバイパス、または幅および高さが16サンプルを超えないルマTBについて水平方向または垂直方向におけるタイプVII離散サイン変換(DST-7)とタイプVIII離散コサイン変換(DCT-8)との組合せのいずれかを使用する。DST-7とDCT-8との組み合わせの使用は、VVC規格において「多重変換選択セット」(MTS)と呼ばれる。
【0095】
モジュール630の順方向二次変換は概して、非分離可能変換であり、それは、イントラ予測されたCUの残差に対してのみ適用され、それにもかかわらず、バイパスされ得る。順方向二次変換は、16個のサンプル(一次変換係数628の左上の4×4サブブロックとして構成される)または48個のサンプル(一次変換係数628の左上の8×8係数において3つの4×4サブブロックとして構成される)のいずれかに対して動作して、二次変換係数のセットを生成する。二次変換係数のセットは、それらが導出される一次変換係数のセットよりも数が少なくてもよい。互いに隣接し、DC係数を含む係数のセットのみに二次変換を適用することにより、二次変換は、「低周波数非分離可能二次変換」(LFNST)と呼ばれる。さらに、LFNSTが適用されるとき、TB中のすべての残りの係数は、一次変換領域および二次変換領域の両方において、ゼロである。
【0096】
量子化パラメータ692は、所与のTBについて一定であり、したがって、TBについての一次変換領域における残差係数の生成のための均一なスケーリングをもたらす。量子化パラメータ692は、シグナリングされた「デルタ量子化パラメータ」とともに周期的に変化し得る。デルタ量子化パラメータ(デルタQP)は、「量子化グループ」と呼ばれる、所与のエリア内に含まれるCUについて1回シグナリングされる。CUが量子化グループサイズよりも大きい場合、デルタQPは、CUのTBのうちの1つを用いて1回シグナリングされる。すなわち、デルタQPは、CUの第1量子化グループについて1回エントロピーエンコーダ638によってシグナリングされ、CUの任意の後続の量子化グループについてはシグナリングされない。「量子化行列」を適用することによって、不均一なスケーリングも可能であり、それによって、各残差係数に適用されるスケーリング係数は、量子化パラメータ692と、スケーリング行列における対応するエントリとの組合せから導出される。スケーリング行列はTBのサイズよりも小さいサイズを有することができ、TBに適用されるとき、TBサイズよりも小さいサイズのスケーリング行列からの各残差係数のためのスケーリング値を提供するために、最近傍アプローチが使用される。残差係数636は、ビットストリーム121における符号化のためにエントロピーエンコーダ638に供給される。典型的には、TUの少なくとも1つの有意な残差係数を有する各TBの残差係数が走査パターンに従って、値の順序付けられたリストを生成するために走査される。走査パターンは一般に、4×4「サブブロック」のシーケンスとしてTBを走査し、4×4セットの残差係数の粒度で規則的な走査動作を提供し、サブブロックの配置は、TBのサイズに依存する。各サブブロック内の走査および1つのサブブロックから次のサブブロックへの進行は、典型的には後方斜め走査パターンに従う。さらに、量子化パラメータ692はデルタQPシンタックスエレメントを使用してビットストリーム121に符号化され、二次変換インデックス688はビットストリーム121に符号化される。
【0097】
上述したように、ビデオエンコーダ120は、ビデオデコーダ144に見られる復号されたフレーム表現に対応するフレーム表現にアクセスする必要がある。したがって、残差係数636は逆二次変換モジュール644を通過し、二次変換インデックス688に従って動作して、矢印642によって表される中間逆変換係数を生成する。中間逆変換係数642は、量子化パラメータ692に従って逆量子化器モジュール640によって逆量子化され、矢印646によって表される逆変換係数を生成する。逆量子化器モジュール640はまた、量子化器モジュール634において実行される順方向スケーリングに対応する、スケーリングリストを使用して残差係数の逆不均一スケーリングを実行し得る。逆変換係数646は、逆一次変換モジュール648に渡されて、TUの、矢印650によって表される残差サンプルを生成する。逆一次変換モジュール648は順方向一次変換モジュール626を参照して説明したように、最大の利用可能な変換サイズによって制約されて、DCT-2変換を水平および垂直に適用する。逆二次変換モジュール644によって実行される逆変換のタイプは、順方向二次変換モジュール630によって実行される順方向変換のタイプに対応する。逆一次変換モジュール648によって実行される逆変換のタイプは、一次変換モジュール626によって実行される一次変換のタイプに対応する。加算モジュール652は、残差サンプル650およびPU620を加算して、CUの再構成されたサンプル(矢印654によって示される)を生成する。
【0098】
再構成されたサンプル654は、参照サンプルキャッシュ656およびループ内フィルタモジュール668に渡される。典型的には、コストのかかるオフチップメモリアクセスを回避するためにASIC上のスタティックRAMを使用して実装される参照サンプルキャッシュ656は、フレーム内の後続のCUのためのイントラフレームPBを生成するための依存性を満たすために必要とされる最小限のサンプル記憶を提供する。最小依存性は、典型的にはCTUの次の行による使用のためのCTUの行の底部に沿ったサンプルの「ラインバッファ」と、CTUの高さによってその範囲が設定される列バッファリングとを含む。参照サンプルキャッシュ656は、参照サンプル(矢印658によって表される)を参照サンプルフィルタ660に供給する。サンプルフィルタ660は、平滑化演算を適用して、フィルタリングされた参照サンプルを生成する(矢印662によって示される)。フィルタリングされた参照サンプル662は、イントラフレーム予測モジュール664によって使用されて、矢印666によって表される、サンプルのイントラ予測されたブロックを生成する。各候補イントラ予測モードについて、イントラフレーム予測モジュール664は、サンプルのブロック、すなわち666を生成する。サンプルのブロック666は、DC、平面、または角度イントラ予測などの技法を使用して、モジュール664によって生成される。サンプルのブロック666はまた、ビデオエンコーダ120によって行列のセットから選択された行列と、入力として隣接する参照サンプルを用いる行列乗算アプローチを使用して生成され得、選択された行列は、インデックスを使用してビットストリーム120中でシグナリングされ、行列のセットのどの行列がビデオデコーダ144によって使用されるべきかを識別する。
【0099】
ループ内フィルタモジュール668は、再構成されたサンプル654にいくつかのフィルタリングステージを適用する。フィルタリングステージは、不連続性に起因するアーチファクトを低減するためにCU境界に整列された平滑化を適用する「デブロッキングフィルタ」(DBF)を含む。ループ内フィルタモジュール668に存在する別のフィルタリングステージは「適応ループフィルタ」(ALF)であり、これは、ウィナーベースの適応フィルタを適用して、歪みをさらに低減する。ループ内フィルタモジュール668においてさらに利用可能なフィルタリングステージは、「サンプル適応オフセット」(SAO)フィルタである。SAOフィルタは最初に、再構成されたサンプルを1つまたは複数のカテゴリに分類し、割り当てられたカテゴリに従って、サンプルレベルでオフセットを適用することによって動作する。
【0100】
矢印670によって表されるフィルタリングされたサンプルは、ループ内フィルタモジュール668から出力される。フィルタリングされたサンプル670は、フレームバッファ672に格納される。フレームバッファ672は典型的にはいくつかの(たとえば、最大16個の)ピクチャを記憶する容量を有し、したがって、メモリ206に記憶される。フレームバッファ672は典型的には、必要とされる大きなメモリ消費のために、オンチップメモリを使用して記憶されない。したがって、フレームバッファ672へのアクセスは、メモリ帯域幅の点でコストがかかる。フレームバッファ672は、参照フレーム(矢印674によって表される)を動き推定モジュール676および動き補償モジュール680に提供する。
【0101】
動き推定モジュール676は(678として示される)いくつかの「動きベクトル」を推定し、各々は現在のCBの位置からのデカルト空間オフセットであり、フレームバッファ672中の参照フレームのうちの1つの中のブロックを参照する。参照サンプルのフィルタリングされたブロック(682として表される)が、動きベクトルごとに生成される。フィルタリングされた参照サンプル682は、モードセレクタ686による潜在的な選択のために利用可能なさらなる候補モードを形成する。さらに、所与のCUについて、PU620は、1つの参照ブロック(「単予測された」)を使用して形成され得るか、または2つの参照ブロック(「双予測された」)を使用して形成され得る。選択された動きベクトルについて、動き補償モジュール680は、動きベクトルにおけるサブピクセル精度をサポートするフィルタリング処理に従ってPB620を生成する。したがって、(多くの候補動きベクトルに対して動作する)動き推定モジュール676は、(選択された候補のみに対して動作する)動き補償モジュール680のものと比較して簡略化されたフィルタリング処理を実行して、低減された計算量を達成することができる。ビデオエンコーダ120がCUのためのインター予測を選択するとき、動きベクトル678はビットストリーム121に符号化される。
【0102】
図6のビデオエンコーダ120は汎用ビデオコーディング(VVC)を参照して説明されるが、他のビデオコーディング規格または実装形態はまた、モジュール610~690の処理ステージを採用し得る。フレームデータ119(およびビットストリーム121)はまた、メモリ206、ハードディスクドライブ210、CD-ROM、ブルーレイディスク
TM、または他のコンピュータ可読記憶媒体から読み出される(またはに対して書き込まれる)ことができる。さらに、フレームデータ119(およびビットストリーム121)は、通信ネットワーク220または無線周波数受信機に接続されたサーバなどの外部ソースから受信(または外部ソースに送信)され得る。通信ネットワーク220は制限された帯域幅を提供することができ、フレームデータ119を圧縮することが困難なときにネットワークを飽和させることを回避するために、ビデオエンコーダ120におけるレート制御の使用を必要とする。さらに、ビットストリーム121は、プロセッサ205の制御下で協調的に動作する、ビデオエンコーダ120の1つまたは複数のインスタンスによって生成された、フレームデータ119の空間セクション(CTUのコレクション)を表す1つまたは複数のスライスから構築され得る。
【0103】
ビデオデコーダ144は
図7に示される。
図7のビデオデコーダ144は汎用ビデオコーディング(VVC)ビデオ復号パイプラインの一例であるが、本明細書で説明する処理ステージを実行するために他のビデオコーデックも使用され得る。
図7に示すように、ビットストリーム143は、ビデオデコーダ144に入力される。ビットストリーム143は、メモリ206、ハードディスクドライブ210、CD-ROM、ブルーレイディスク
TM、または他の非一時的コンピュータ可読記憶媒体から読み出され得る。あるいは、ビットストリーム143が通信ネットワーク220または無線周波数受信機に接続されたサーバなどの外部ソースから受信されてもよい。ビットストリーム143は、復号されるべきキャプチャされたフレームデータを表す符号化されたシンタックスエレメントを含む。
【0104】
ビットストリーム143は、エントロピーデコーダモジュール720に入力される。エントロピーデコーダモジュール720は「ビン」のシーケンスを復号することによってビットストリーム143からシンタックスエレメントを抽出し、シンタックスエレメントの値をビデオデコーダ144内の他のモジュールに渡す。エントロピーデコーダモジュール720は可変長および固定長復号を使用して、算術復号エンジン、SPS、PPS、またはスライスヘッダを復号し、スライスデータのシンタックスエレメントを1つまたは複数のビンのシーケンスとして復号する。各ビンは1つまたは複数の「コンテキスト」を使用することができ、コンテキストは、ビンの「1」値および「0」値をコーディングするために使用される確率レベルを記述する。所与のビンについて複数のコンテキストが利用可能である場合、「コンテキストモデリング」または「コンテキスト選択」ステップが実行されて、ビンを復号するために利用可能なコンテキストのうちの1つが選択される。ビンを復号するプロセスは順次フィードバックループを形成し、したがって、各スライスは、所与のエントロピーデコーダ720のインスタンスによってスライス全体において復号され得る。単一の(または少数の)高性能エントロピーデコーダ720インスタンスはビットストリーム143からのフレームのすべてのスライスを復号することができ、複数の低性能エントロピーデコーダ720インスタンスは、ビットストリーム143からのフレームのスライスを同時に復号することができる。
【0105】
エントロピーデコーダモジュール720は、算術符号化アルゴリズム、例えば「コンテキスト適応型バイナリ算術符号化」(CABAC)を適用して、ビットストリーム143からシンタックスエレメントを復号する。復号されたシンタックスエレメントは、ビデオデコーダ144内のパラメータを再構成するために使用される。パラメータは、残差係数(矢印724によって表される)、量子化パラメータ774、二次変換インデックス770、およびイントラ予測モード(矢印758によって表される)などのモード選択情報を含む。モード選択情報はまた、動きベクトル、および各CTUの1つまたは複数のCBへの区分などの情報を含む。パラメータはPBを生成するために使用され、典型的には以前に復号されたCBからのサンプルデータと組み合わせられる。
【0106】
残差係数724は、逆二次変換モジュール736に渡され、二次変換インデックスに従って、二次変換が適用されるか、または動作が実行されない(バイパス)。逆二次変換モジュール736は二次変換領域係数から、再構成された変換係数732、すなわち一次変換領域係数を生成する。再構成された変換係数732は、逆量子化器モジュール728に入力される。逆量子化器モジュール728は量子化パラメータ774に従って、矢印740によって表される、再構成された中間変換係数を作成するために、残差係数732に対して、すなわち、一次変換係数領域において、逆量子化(または「スケーリング」)を実行する。
逆量子化器モジュール728はまた、スケーリング行列を適用して、逆量子化器モジュール640の動作に対応する、TB内の不均一な逆量子化を提供し得る。不均一逆量子化行列を使用することがビットストリーム143に示される場合、ビデオデコーダ144はビットストリーム143から量子化行列をスケーリングファクタのシーケンスとして読み出し、スケーリングファクタを行列に配置する。逆スケーリングは、量子化パラメータと組み合わせて量子化行列を使用して、再構成された中間変換係数740を作成する。
【0107】
再構成された変換係数740は、逆一次変換モジュール744に渡される。モジュール744は、係数740を周波数領域から空間領域に戻すように変換する。逆一次変換モジュール744は順方向一次変換モジュール626を参照して説明したように、最大利用可能変換サイズによって制約された、逆DCT-2変換を水平および垂直に適用する。モジュール744の動作の結果は、矢印748によって表される残差サンプルのブロックである。残差サンプル748のブロックのサイズは、対応するCBに等しい。残差サンプル748は、加算モジュール750に供給される。
【0108】
加算モジュール750において、残差サンプル748は、復号されたPB(752として表される)に加算されて、矢印756によって表される、再構成されたサンプルのブロックを生成する。再構成されたサンプル756は、再構成されたサンプルキャッシュ760およびループ内フィルタリングモジュール788に供給される。ループ内フィルタリングモジュール788は、792として表される、フレームサンプルの再構成されたブロックを生成する。フレームサンプル792は、フレームバッファ796に書き込まれる。
【0109】
再構成されたサンプルキャッシュ760は、ビデオエンコーダ120の再構成されたサンプルキャッシュ656と同様に動作する。再構成されたサンプルキャッシュ760はメモリ206なしで後続のCBをイントラ予測するのに必要な再構成されたサンプルのための記憶を提供する(例えば、典型的にはオンチップメモリであるデータ232を代わりに使用することによって)。矢印764によって表される参照サンプルは、再構成されたサンプルキャッシュ760から取得され、参照サンプルフィルタ768に供給されて、矢印772によって示されるフィルタリングされた参照サンプルを生成する。フィルタリングされた参照サンプル772は、イントラフレーム予測モジュール776に供給される。モジュール776は、ビットストリーム143においてシグナリングされ、エントロピーデコーダ720によって復号されたイントラ予測モードパラメータ758に従って、矢印780によって表されるイントラ予測サンプルのブロックを生成する。イントラ予測モジュール776は、IBCおよびMIPを含むモジュール664のモードをサポートする。サンプル780のブロックは、DC、平面、または角度イントラ予測などのモードを使用して生成される。
【0110】
CBの予測モードがビットストリーム143においてイントラ予測を使用するように示されるとき、イントラ予測サンプル780は、マルチプレクサモジュール784を介して復号PB752を形成する。イントラ予測はサンプルの予測ブロック(PB)を生成し、これは、同じ色成分における「隣接サンプル」を使用して導出される、1つの色成分におけるブロックである。隣接サンプルは現在のブロックに隣接するサンプルであり、ブロック復号順序に先行することによって、すでに再構成されている。ルマブロックとクロマブロックとがコロケートされる場合、ルマブロックとクロマブロックとは異なるイントラ予測モードを使用し得る。しかしながら、2つのクロマCBは、同じイントラ予測モードを共有する。
【0111】
CBの予測モードがビットストリーム143内のインター予測であると示されるとき、動き補償モジュール734は、738として表されるインター予測サンプルのブロックを生成する。インター予測サンプル738のブロックは、エントロピーデコーダ720によってビットストリーム143から復号された動きベクトルと、フレームバッファ796からサンプル798のブロックを選択およびフィルタリングするための参照フレームインデックスとを使用して生成される。サンプル798のブロックは、フレームバッファ796に記憶された以前に復号されたフレームから取得される。双予測の場合、サンプルの2つのブロックが生成され、一緒にブレンドされて、復号されたPB752のためのサンプルが生成される。フレームバッファ796は、ループ内フィルタリングモジュール788からのフィルタリングされたブロックデータ792でポピュレートされる。ビデオエンコーダ120のループ内フィルタリングモジュール668と同様に、ループ内フィルタリングモジュール788は、DBF、ALF、およびSAOフィルタリング動作のいずれかを適用する。一般に、動きベクトルはルマチャネルとクロマチャネルの両方に適用されるが、ルマチャネルとクロマチャネルにおけるサブサンプル補間のためのフィルタリング処理は異なる。
【0112】
図6および
図7には示されていないが、各クロマチャネル内のサンプル値の範囲のより均一な使用が達成されるようにサンプル値をシフトするために、符号化前にビデオを前処理し、復号後にビデオを後処理するためのモジュールである。マルチセグメント線形モデルは、ビデオエンコーダ120において導出され、サンプルシフトを取り消すためにビデオデコーダ144によって使用するためにビットストリームにおいてシグナリングされる。この線形モデルクロマスケーリング(LMCS)ツールは、量子化のアプリケーションからより高い品質損失をもたらし得るサンプル空間の利用において、ある程度の不均一性、特に限られた範囲の利用を有する特定の色空間およびコンテンツに対して圧縮利点を提供する。
【0113】
図8は、分散マシンタスクシステム100の一部としての特徴マップ逆量子化器およびアンパッカ148を示す概略ブロック図である。復号されたフレーム147はアンパッカーモジュール810に入力され、ここで特徴マップはパッキングフォーマットに従って各フレームから抽出されて、アンパックされた特徴マップ812を生成する。アンパックされた特徴マップ812は、復号されたフレーム147に存在するサンプル値を含む。パッキングフォーマットは、
図11~13を参照してさらに説明される。アンパックされた特徴マップ812内の特徴マップのセットは各特徴マップが1つのグループに属し、1つまたは複数のグループが特徴マップグループ820内に示されるように、復号されたメタデータ155から取得された特徴マップグループ820に従ってグループに割り当てられる。逆量子化器814は、次いで、スケーリングを実行して、アンパックされた特徴マップ812中に存在する整数サンプル値をテンソル149中に存在する浮動小数点値に変換する。スケーリングは、特徴マップのグループに対して量子化範囲を使用する。量子化範囲は、復号されたメタデータ155から抽出された量子化範囲822から得られる。量子化範囲は、対応するグループに属する特徴マップに見られる任意の浮動小数点値の最大の大きさを指定する。逆量子化器814は各グループの特徴マップ812からのサンプルを、検出された最大の大きさの値の符号が正または負であることに応じて、ゼロを中心とし、1または-1に達する範囲に正規化する。正および負の値が等しい最大の大きさを有するまれな場合には、[-1,1]の範囲が観察される。次いで、特徴マップのグループの正規化されたサンプルは、特徴マップのグループの量子化範囲と乗算(スケーリング)される。
【0114】
特徴マップの全てのグループがスケーリングされると、結果はテンソル149の形式の中間データとして出力される。テンソル149は例えば、CNNバックボーン114がFPNを含むとき、各々が異なる空間分解能を有する複数のテンソルを含み得る。ゼロ中心線形対称量子化処理を使用することに加えて、他の量子化処理も可能である。たとえば、正および負の量子化範囲が各特徴マップグループに対してシグナリングされる非対称アプローチが使用され得る。正および負の量子化範囲は、特徴のグループの浮動小数点値によって利用される範囲を、サンプルのビット深度によって与えられる完全なサンプル範囲にマッピングし、これは、もはやゼロ浮動小数点値に対応することが保証されないサンプル範囲の中点として非対称量子化をもたらす。SEIメッセージ1413内の「quant_type」シンタックスエレメントは量子化アプローチを選択し、付録Aを参照して説明される。
【0115】
特徴マップの所与のグループの量子化範囲はグループの特徴マップ内の値から導出されるが、量子化範囲はグループの特徴マップ内の値と同じデータタイプを保持する必要がある。より粗い浮動小数点精度が使用され得、オリジナルの浮動小数点フォーマット(例えば、32ビットIEEE754フォーマット)で表現されたときの範囲が縮小されないように、丸めが適用される。例えば、より粗い浮動小数点精度を上向き丸めて使用することができる。小数部分に割り当てられるビットに関する量子化範囲の精度は付録Aを参照して説明される「qr_fraction_precision」シンタックスエレメントを使用して選択される。量子化範囲の仮数を生成するために、先頭の「1」が小数部分に付加される(すなわち、量子化範囲は「非正規」値でなくてもよい)。量子化範囲は常に正であるので、量子化範囲ごとに符号ビットを符号化する必要はない。量子化範囲は、1より大きくても1より小さくてもよいので、量子化範囲指数に対する符号ビットが必要とされる。システム100のアレンジメントでは、1.0未満の量子化範囲は許可されず、量子化指数符号ビットはSEIメッセージ1413から省略され得る。量子化指数符号ビットがコーディングされない場合、量子化範囲決定モジュール514において、1.0未満の量子化範囲が値1.0にクリップされる。
【0116】
逆量子化器モジュール814および量子化器モジュール518の動作が「量子化」と呼ばれるにもかかわらず、モジュール518および814の動作は、量子化パラメータの使用を伴う、ビデオエンコーダ120およびビデオデコーダ144の量子化動作とは異なる。さらに、モジュール518および814の動作は、テンソルの浮動小数点ドメインとフレームのサンプルドメインとの間の変換を伴う、トーンマッピング動作の一形態と見なされ得る。広範囲のサンプル値空間を利用する目的で、スケーリング(すなわち、特徴マップの各グループの量子化範囲を介して)があるが、量子化器ステップサイズをさらに変更するためにモジュール518および814に適用可能な量子化パラメータはない。
【0117】
図9Aは、物体検出のためのCNNのヘッド部分150を示す概略ブロック図である。宛先デバイス140において実行されるべきタスクに応じて、CNNヘッド150の代わりに異なるネットワークを使用することができる。入力テンソル149は各レイヤのテンソル(すなわち、テンソル910、920、および934)に分離される。テンソル910はCBLモジュール912に渡されてテンソル914を生成し、検出モジュール916およびアップスケーラモジュール922に渡される。検出テンソルの形式のバウンディングボックス918は、非最大抑制(NMS)モジュール948に渡され、検出結果151を生成する。オリジナルのビデオデータ113内の座標をアドレス指定するバウンディングボックスを生成するために、ネットワーク114のバックボーン部分のサイズ変更の前に、オリジナルビデオ幅および高さによるスケーリングが実行される(「orig_source_width」および「orig_source_height」参照、SEIメッセージ1413から復号され、付録Aを参照して説明される)。アップスケーラモジュール922はアップスケールされたテンソル924を生成し、これは、CBLモジュール926に渡され、出力としてテンソル928を生成する。テンソル928は、検出モジュール930およびアップスケーラモジュール936に渡される。検出モジュール930は、NMSモジュール948に供給される検出テンソル932を生成する。アップスケーラモジュール936はモジュール960の別のインスタンスであり、アップスケールされたテンソル938を出力する。アップスケールされたテンソル938はCBLモジュール940に渡され、CBLモジュールはテンソル942を検出モジュール944に出力する。CBLモジュール912、926、および940はそれぞれ、5つのCBLモジュールの連結を含む。アップスケーラモジュール922および936はそれぞれ、
図9Bに示されるようなアップスケーラモジュール960のインスタンスである。
【0118】
アップスケーラモジュール960は、テンソル962を入力として受け付け、テンソル968を生成するためにCBLモジュール966に渡される。テンソル968はアップサンプリングされたテンソル972を生成するために、アップサンプラ970に渡される。連結モジュール974は、アップサンプリングされたテンソル972を入力テンソル964と連結することによって、テンソル976を生成する。検出モジュール916、930、および944は、
図9Cに示されるような検出モジュール980のインスタンスである。検出モジュール960はテンソル982を受信し、CBLモジュール984に渡されてテンソル986を生成する。テンソル986は、検出カーネルを実装する畳み込みモジュール988に渡される。検出カーネル1×1カーネルは、3つのレイヤにおける特徴マップの出力を生成するために適用される。検出カーネルは1×1×(B×(5+C))であり、ここで、Bは特定のセルが予測することができるバウンディングボックスの数であり、典型的には3であり、Cは80であり得るクラスの数であり、255の検出属性(すなわち、テンソル990)のカーネルサイズをもたらす。定数「5」は、4つの境界ボックス属性(ボックス中心x、yおよびサイズスケールx、y)および1つのオブジェクト信頼レベル(「オブジェクト性」)を表す。検出カーネルの結果は入力特徴マップと同じ空間次元を有するが、出力の深さは検出属性に対応する。検出カーネルは、各レイヤ、典型的には3つのレイヤに適用され、多数の候補バウンディングボックスをもたらす。非最大抑制のプロセスはNMSモジュール948によって、結果として得られるバウンディングボックスに適用され、類似のスケールでの重複予測などの冗長ボックスを破棄し、結果として、オブジェクト検出のための出力としてバウンディングボックスの最終セットをもたらす。
【0119】
図10は、CNNの代替ヘッド部分1000を示す概略ブロック図である。ヘッド部分1000は「faster RCNN」として知られる全体的なネットワークの一部を形成し、特徴ネットワーク(すなわち、バックボーン部分400)、領域提案ネットワーク、および検出ネットワークを含む。ヘッド部分1000への入力は、P2-P6レイヤテンソル1010、1012、1014、1016、および1018を含むテンソル149である。P2-P6テンソル1010、1012、1014、1016、および1018は、領域提案ネットワーク(RPN)ヘッドモジュール1020に入力される。RPNヘッドモジュール1020は入力テンソルに対して畳み込みを実行し、2つの後続の兄弟レイヤに供給される中間テンソルを生成し、1つは分類のためのものであり、1つはバウンディングボックスのためのものであり、または「注目領域」(ROI)のためのものであり、分類およびバウンディングボックス1022として回帰する。分類およびバウンディングボックス1022はNMSモジュール1024に渡され、それはより低いスコアを有する重複ボックスを除去することによって、冗長なバウンディングボックスを刈り取って、刈り取られたバウンディングボックス1026を生成する。バウンディングボックス1026は、注目領域(ROI)プーラ1028に渡される。ROIプーラ1028は最大プーリング動作を使用して、様々な入力サイズマップから固定サイズ特徴マップを生成し、サブサンプリングは、入力値の各グループ内の最大値を取って、出力テンソル内に1つの出力値を生成する。
【0120】
ROIプーラ1028への入力は、P2-P5特徴マップ1010、1012、1014、および1016、ならびに注目領域提案1026である。1026からの各提案(ROI)は固定サイズのマップを生成するために、特徴マップ(1010~1016)の一部分に関連付けられる。固定サイズのマップは、特徴マップ1010~1016の基礎となる部分とは無関係のサイズである。特徴マップ1010~1016のうちの1つは、結果として得られるクロップされたマップが例えば、以下のルールに従って十分な詳細を有するように選択される:floor(4+log2(sqrt(box_area)/224))、ここで224は正規のボックスサイズである。したがって、ROIプーラ1028は、テンソル1030を生成する提案1026に従って、入力特徴マップをクロップする。テンソル1030は、全結合(FC)ニューラルネットワークヘッド1032に供給される。FCヘッド1032は、2つの全結合レイヤを実行して、クラススコアおよびバウンディングボックス予測子デルタテンソル1034を生成する。クラススコアは一般に、80要素テンソルであり、各要素は、対応するオブジェクトカテゴリの予測スコアに対応する。バウンディングボックス予測子デルタテンソルは80x4=320要素テンソルであり、対応するオブジェクトカテゴリのバウンディングボックスを含む。最終処理は出力層モジュール1036によって実行され、テンソル1034を受信し、フィルタリング演算を実行して、フィルタリングされたテンソル1038を生成する。低スコアリング(低分類)オブジェクトは、さらなる考慮から除外される。非最大抑制モジュール1040はより低い分類スコアを有する重複ボックスを除去することによって、重複するバウンディングボックスを除去し、推論出力テンソル151をもたらす。
【0121】
図11は、モノクロフレーム1102の形式の2次元アレイにおける特徴マップパッキングアレンジメント1100を示す概略ブロック図である。特徴マップ1110、特徴マップ1112、および特徴マップ1114などの3つのレイヤの特徴マップは、フレーム1102内に配置可能である。
図11の例では、フレーム1102がそれぞれが特徴マップ(例えば、特徴マップ1110)に対応する領域を含む。特徴マップ1110、1112、および1114は、モノクロフレーム1102を満たすラスタスキャンアレンジメントに配置される。フレーム1102のサイズはまず、フレーム1102に配置される全ての特徴マップのエリアに応じて設定され、ターゲットとなるUHDフレームのアスペクト比、すなわち、3840/2160~=1.78に近いアスペクト比を有する。解像度は例えば、幅および高さがそれぞれ4の倍数になるように、最小ブロックサイズの倍数になるように幅および高さを増加させることができる。特徴マップを配置する際に、特徴マップサイズとフレーム幅との不整合のために、最終フレーム高さは、適切なスペースを提供するために増加され得、未使用の空間なしに特徴マップを一緒にパックすることができないことに起因するいくらかの未使用のスペースを可能にする。未使用スペース1104など、フレーム1102内の未使用スペース内のサンプル値はフレームのビット深度の中間トーン点、すなわち、10ビットフレームの場合、512に設定される。特徴マップのサイズは、CNNバックボーン114に依存する。「Darknet-53」バックボーンの場合、サイズは特徴マップ1110に対して136×76であり、256インスタンスを有し、特徴マップ1112に対して68×38であり、512インスタンスを有し、特徴マップ1120に対して34×19であり、1024インスタンスを有する。明確にするために、
図12は典型的な用途に存在するよりも少ない特徴マップを含むフレーム1202を示すが、3つのレイヤおよび相対解像度は以下に説明するように
図12に表される。CNNの「バックボーン」セクションと「ヘッド」セクションとの間の異なるCNNおよび異なる分割は各レイヤについての異なる次元および数の特徴マップ、ならびに異なる数のレイヤ(すなわち、3つのレイヤ以外の量)をもたらし得る。
【0122】
モノクロフレーム1102の形式で2次元アレイ内に特徴マップを配置する際に、フレーム1102内に隣接してフレームの同じグループの特徴マップが配置される。例えば、グループ1106は特徴マップ1110を含み、グループ1108およびグループ1109はレイヤ内の残りの特徴マップを含む。同様に、グループ1114は、レイヤのための2つの追加のグループを有する特徴マップ1112を含む。簡潔にするために、最小の特徴マップ(すなわち、特徴マップ1120)を含むレイヤについてのグループ化は示されていないが、同じグループごとのパッキング手法が使用される。各グループ内で、特徴マップは決定された順序付けに存在し、モノクロフレーム1102内の配置は、順序付けを反映する。
【0123】
図12のモノクロフレーム1202に特徴マップを配置する際、4×4グリッド境界などの特定の境界に対する位置合わせが維持され得る。特徴マップサイズがそのようなアライメントの倍数ではない場合、未使用のサンプルスペースが隣接する特徴マップ間に存在する。例えば、サイズ34×19の特徴マップは36×20のサンプル領域を占めて配置され、未使用スペースは中間トーンサンプル値によって占められる。特徴マップ間の未使用スペースの存在は隣接する特徴マップ内のコンテンツによって引き起こされる1つの特徴マップ内のコーディングアーティファクトの発生を低減し、ビデオコーデックの基礎となるブロック構造に対する特徴マップの位置合わせを改善する。例えば、VVCの場合、4×4の最小ブロックサイズが典型的に使用される。
【0124】
特徴マップを特定の位置合わせグリッドに位置合わせすることに加えて、2つのサンプルなどの特徴マップ間の最小パディングを実施することもできる。最小パディングは特徴マップサイズが位置合わせグリッドの倍数である場合に、隣接する特徴マップ内のコンテンツによって引き起こされる1つの特徴マップ内のアーティファクトを防止するのに役立つ。例えば、サイズ136×76の特徴マップは、それ自体と隣接する特徴マップとの間に挿入された未使用のサンプルスペースを伴わずに、4×4位置合わせグリッドに適合する。最小パディングエリアは隣接する特徴マップ間のいくらかの分離を保証し、これは、1つの特徴マップから隣接する特徴マップへと交差するコーディングアーチファクトを低減するのに役立ち得る。
【0125】
システム100のアレンジメントでは、所与の画像の特徴マップ、すなわち、ビデオソース112からの1つのフレームが2つ以上のフレームにパックされる。例えば、1つの画像からの特徴マップは、4つのフレームにパックされ得る。特徴マップは、類似性に基づいて、サイズ4のグループなどの固定サイズのグループにグループ化され得る。各特徴マップグループは所与のグループの特徴マップが4つのフレームにわたって空間的に並置されるように、4つのフレーム内に配置され得る。そのようなパッキングアレンジメントは、フレームデータ113のフレームレートよりも4倍大きいフレームレートを有するフレーム117をもたらす。4つのフレームのセットは、次いで、低遅延ピクチャ構造またはランダムアクセスピクチャ構造を使用してビデオエンコーダ120によって符号化され得、インター予測コーディングツールが所与の特徴マップグループの空間的に並置された特徴マップ間の相関を活用することを可能にする。
【0126】
図12は、モノクロフレーム1202における代替的な特徴マップパッキングアレンジメント1200を示す概略ブロック図である。特徴マップパッキングアレンジメント1200は、4つの特徴マップの多数のグルーピングが存在する特徴マップグルーピングに適している。
図12のグルーピングは、特徴マップ間の空間的類似性に基づくことができ、同様の特徴マップのグルーピングをもたらす。空間的類似性は、絶対差分和または二乗差和または何らかの他の類似性尺度を使用して測定され得る。グルーピングは、同じレイヤ内の特徴マップに適用され、複数のレイヤにまたがってはいない。
図12に見られるように、グルーピング1210は、4つの特徴マップを含む。グルーピング1210の特徴マップは、構成要素特徴マップのエリア2×2を占めるようにサンプルワイズインターリービングを使用してモノクロフレーム1202に配置される。サンプルワイズインターリービングは同じコーディングツリー構造によって共有される4つの特徴マップのより高い構造的詳細をもたらし、4つの特徴マップ間の詳細は、サンプルごとに異なる。したがって、共通のコーディングツリー構造および共有残差(異なる特徴マップの隣接するサンプルをコーディングするのに必要な局所的差異を除く)が達成され、圧縮効率の増加をもたらす。サイズ4の全てのグループが所与のレイヤについてモノクロフレーム1202にパックされると、特徴マップ1214などの残りの特徴マップはグルーピングに基づいて隣接してパックされるが、インタリーブ方式ではパックされない。残りの特徴マップはパッキングの順序とは別に、それらのグループ構成がパッキングプロセスに影響を及ぼさないので、任意のサイズのグループに割り当てられ得る。次のレイヤでは、グループ1220などの4つのグループがサンプルワイズインターリーブ方法でパックされ、続いて、特徴マップ1224などの他のサイズのグループに属する特徴マップがパックされる。最終レイヤについて、グループ1230などの4つのグループが、サンプルワイズインターリーブ方法でパックされ、続いて、特徴マップ1234などの他のサイズのグループに属する特徴マップがパックされる。
【0127】
図13は、4:2:0クロマサブサンプリングカラーフレーム1301における特徴マップパッキングアレンジメント1300を示す概略ブロック図である。高度の類似性を有し、異なるレイヤに属する2つまたは3つの特徴マップを含む特徴マップグループは、カラーフレーム1301のコロケートされた領域内の異なるカラーチャネルに配置される。したがって、1つのレイヤにおける第1特徴マップの少なくとも一部の位置は、別のレイヤにおける第2特徴マップの少なくとも一部の位置に相対的に対応する。隣接するレイヤ内の2つの特徴マップの場合、より大きい特徴マップは、特徴マップ1304などのルマ平面1302内に配置される。2つの特徴マップのうちより小さい特徴マップは、特徴マップ1314などのクロマ平面1310内に配置される。グループが3つの特徴マップを含む場合、第3特徴マップはクロマ平面1310に配置された特徴マップよりもサイズが小さく、第3特徴マップはサイズが2倍になるように第2クロマ平面1320にパックされ、その結果、2倍のパックされた特徴マップ1324が得られる。グループの2つまたは3つの特徴マップが空間的類似性に基づいてグループ化されたので、
図13の例では、カラーフレーム1301をコーディングするときの圧縮効率を改善するために、インターチャネル相関をターゲットとするコーディングツールが利用可能である。たとえば、クロスカラー成分予測をターゲットとする線形モデルなど、差のモデルに基づいてルマからクロマサンプルを予測することを試みるツールが適用され得る。共有コーディングツリーがルマコーディングブロックおよびクロマコーディングブロックを指定するインタースライスの場合、2つまたは3つの特徴マップのブロック構造は特徴マップが異なる位置に配置された場合と同様に、別個のコーディングツリーを必要とする代わりに、単一のコーディングツリーを使用してコーディングされる。
【0128】
図14は、符号化されたパックされた特徴マップおよび関連するメタデータを保持するビットストリーム1400を示す概略ブロック図である。ビットストリーム1400は、ビデオエンコーダ120によって生成されたビットストリーム121またはビデオデコーダ134によって復号されたビットストリーム143に対応する。ビットストリームは、「ネットワーク抽象化レイヤ」ユニットヘッダによって前置されたシンタックスのグループを含む。例えば、NALユニットヘッダ1408は、シーケンスパラメータセット(SPS)1410に先行する。SPS1410はシンタックスの「一般制約情報」(GCI)ユニット(すなわち、制約フラグ1440)を含み得る、シンタックス1438の「プロファイルレベルティア」(PLT)ユニットを含み得る。GCIはフラグのセットを含み、各フラグは、ビットストリーム1400において使用されない特定のコーディングツールを制約する。PLT1438は、ビットストリーム1400において使用することができる、「プロファイル」として知られているツールの特定のセットをシグナリングすることができる。プロファイルの一例は「Main10」であり、4:0:0または4:2:0クロマフォーマットのいずれかを有する8~10ビットビデオを提供し、広範な展開をターゲットとする。GCIは、「サブプロファイル」として知られる、ツールのサブセットへのプロファイルのツールのセットに対するさらなる制約を示し得る。一般に、ビデオエンコーダ120が(すなわち、マルチプレクサ118を介してビデオソース112からの)ビデオサンプルを符号化しているとき、所与のプロファイルのすべてのツールが、フレームデータを効率的に符号化するために使用され得る。ビデオエンコーダ120がフレームにパックされた(すなわち、モジュール116からの)特徴マップを符号化しているとき、VVC規格のいくつかのツールは、もはや圧縮利点を与えない。パックされた特徴マップに圧縮利点を提供しないツールは、ビデオエンコーダ120によって試される必要はなく、ビットストリーム1400において使用されないものとしてGCIにおいてシグナリングされ得る。SPS1410はまた、クロマフォーマット、ビット深度、ビットストリーム1400によって表されるフレームデータの解像度を示す。
【0129】
SEIメッセージ1413は範囲決定モジュール514によって決定されるように、グループ決定モジュール510および量子化範囲1432によって決定されるように、特徴マップグルーピング1430を符号化する。付録Aは、SEIメッセージ1413の例示的なシンタックスおよびセマンティクスを示す。パッカモジュール522によって使用されるパッキングフォーマットはまた、すべての利用可能な特徴パッキングフォーマットの列挙から1つの特徴パッキングフォーマットを選択するためのインデックスを使用して、SEIメッセージ1413中で符号化され得る。特徴マップを生成するために使用された特定のCNNバックボーンは、所定のCNNバックボーンのセットの列挙から1つのCNNバックボーンを選択するためのインデックスを用いてSEIメッセージ1413内に示されても良く、そのうちのいくつかまたはすべてがソースデバイス110に利用可能である。CNNバックボーンタイプインデックスから、各レイヤにおけるレイヤの数およびチャネルの数、ならびに各レイヤにおける各特徴マップの解像度が決定され得る。所与のグループ内の特徴マップが同じレイヤ内にあるグルーピングの場合、特徴マップインデックスの別個のグループリストが各レイヤについてコーディングされる。所与のグループ内の特徴マップが複数のレイヤにわたり得るグルーピングの場合、特徴マップインデックスとレイヤインデックスペアは、各グループ内のアイテムとしてコーディングされる。存在するそれらが隣接するレイヤ内であり、各レイヤに最大で1つの特徴マップが存在するグルーピングの場合、レイヤインデックスは、グループ内の第1特徴マップにのみ必要とされる。グループがすべてのレイヤの特徴マップを含む場合、例えば、すべての3つのレイヤにおいて、特徴マップインデックスは、各レイヤにおける1つの特徴マップに暗黙的に適用されるので、グループインデックスは必要とされない。
【0130】
各フレームは
図14に見られるように、アクセスユニット1414などの「アクセスユニット」としてビットストリーム1400内に符号化される。各アクセスユニットは、スライス1416などの1つまたは複数のスライスを含む。ビットストリームの第1アクセスユニットについて、一般に「ランダムアクセスポイント」アクセスユニットについて、イントラスライスは、ビットストリーム1400中の他のアクセスユニットに対するいかなる予測依存性も回避するために使用される。スライス1416は、スライスヘッダ1418と、それに続くスライスデータ1420とを含む。スライスデータ1420は、フレームデータのコーディングされた表現を与えるCTUのシーケンスを含む。CTUは正方形であり、典型的には128×128のサイズであり、これは典型的な特徴マップサイズに十分に整合されない。4×4グリッドなどの最小ブロックサイズに特徴マップを配置すると、この位置ずれが部分的に改善される。
【0131】
図15はCNNの第1部分を実行し、ビデオデータのフレームのために結果として得られる特徴マップを符号化するための方法1500を示す。方法1500は、構成されたFPGA、ASIC、またはASSPなどの装置を使用して実装され得る。代替的に、以下で説明するように、方法1500は、プロセッサ205の実行下で、アプリケーションプログラム233の1つまたは複数のソフトウェアコードモジュールとして、ソースデバイス110によって実装され得る。方法1500を実施するアプリケーションプログラム233のソフトウェアコードモジュールは例えば、ハードディスクドライブ210および/またはメモリ206に常駐することができる。方法1500は、ビデオソース112によって生成されたビデオデータの各フレームに対して繰り返される。方法1500は、コンピュータ可読記憶媒体および/またはメモリ206に記憶され得る。
【0132】
方法1500は、実行CNN第1部分ステップ1510で開始する。ステップ1510において、CNNバックボーン114は、プロセッサ205の実行下で、特定のCNNのレイヤのサブセットを実行して、入力フレーム113を中間テンソル115に変換する。予測ヘッドまたはFPNの使用により、テンソル115は、複数のテンソルを含み得る。方法1500は、ビデオソース112からのビデオデータの1つのフレームに対応するテンソルを符号化するように動作する。次に、プロセッサ205における制御は、ステップ1510から特徴マップ類似性判定ステップ1520に進む。中間テンソル115は例えば、メモリ206および/またはハードディスクドライブ210に記憶され得る。
【0133】
特徴マップ類似性判定ステップ1520において、モジュール116は、プロセッサ205の実行下で、各レイヤ内の各他特徴マップと各特徴マップとの類似性の尺度を含む類似性行列を生成する。類似性行列は例えば、メモリ206および/またはハードディスクドライブ210に記憶され得る。類似性尺度は、2つの特徴マップの平均二乗差(MSE)、または2つの特徴マップの絶対差の和(SAD)、または何らかの他の差の尺度であってもよい。異なるレイヤにおける特徴マップの類似性を測定することが望まれる場合、より低い空間分解能を有する特徴マップは差分測定の目的のために、より高い空間分解能と互換性のある分解能を生成するために、(例えば、最近傍補間を使用して)アップスケールされ得る。計算オーバヘッドを低減するために、ステップ1520はまれに、たとえば、CLVS中の各ランダムアクセスポイントについて、またはCLVSの第1ピクチャについてのみ実行される。次に、プロセッサ205における制御は、ステップ1520から特徴マップグルーピング決定ステップ1530に進む。
【0134】
特徴マップグループ決定ステップ1530において、グループ決定器510は、プロセッサ205の実行下で、特徴マップが割り当てられるグループのセットを決定する。特徴マップのグループは例えば、メモリ206および/またはハードディスクドライブ210に記憶され得る。グループ化の一例は、1つのグループに割り当てられる所与のレイヤの特徴マップについてであり、FPNのレイヤごとに1つのグループをもたらす。ステップ1530はステップ1520の類似性行列がたとえば、CLVSの最初のピクチャについて、またはCLVS内のすべてのランダムアクセスポイントについて決定されたときに、実行される必要がある。プロセッサ205における制御は、ステップ1530から特徴マップ配置決定ステップ1540に進む。
【0135】
特徴マップ配置決定ステップ1540において、パッカモジュール522は、プロセッサ205の実行下で、各特徴マップがフレーム内に配置される位置を決定する。フレームがモノクロフレームであるとき、特徴マップはフレーム領域を満たすラスタ走査順序で配置され、フレーム領域はフレームにパックされるべきすべての特徴マップの総面積と目標アスペクト比とに基づいて初期化される。パッキングアレンジメントは、
図11~13を参照して説明される。使用中のパッキングフォーマットは付録Aを参照して説明される、SEIメッセージ1413から復号された「packing_format」シンタックスエレメントから決定される。所与のグループに属する特徴マップは順次パックされ、各グループ内に特徴マップがリストされる順序でパックされる。
図13を参照して説明したように、異なるレイヤに属する各特徴マップを有するサイズ2または3の特徴マップのグループは空間的に、しかし異なる色チャネルで、まとめてパックされる。特徴マップの数およびサイズはソースデバイス110の動作中に変化しないので、配置は一度決定され、後続のフレームとともに使用するために保存され得る。パックされたフレームはたとえば、メモリ206および/またはハードディスクドライブ210に記憶され得る。次に、プロセッサ205における制御は、ステップ1540からグループ範囲決定ステップ1550に進む。
【0136】
グループ範囲決定ステップ1550において、範囲決定器514は、プロセッサ205の実行下で、ステップ1530において決定された特徴マップの各グループにおける浮動小数点データの範囲を決定する。決定された範囲は例えば、メモリ206および/またはハードディスクドライブ210に記憶され得る。対称動作の場合、グループの範囲は、グループに属する特徴マップ内の値の最大の大きさ(絶対)値である。範囲は整数サンプル値への量子化および変換の前に特徴マップデータの正規化のための値を提供する。非対称動作の場合、正および負の範囲が、特徴マップの各グループについて決定され、特徴マップのグループ内で遭遇する最大の正および最大の負の値を示す。量子化範囲は、テンソル115内の特徴マップの各グループに対して決定される。量子化範囲は、ビデオデータのすべてのフレームのテンソルについて決定され得るか、またはより低い頻度の更新が適用され得る。シグナリングオーバヘッドを低減するために、量子化範囲は、ビデオビットストリーム中のみのイントラピクチャまたはランダムアクセスピクチャについて決定され得る。量子化範囲が決定されなかった後続フレームの浮動小数点データテンソルの範囲は、以前に決定された量子化範囲を超え得る。安全マージンは、何らかの指定されたスケーリングファクタによって決定された量子化範囲の大きさを増加させることによって導入され得る。量子化範囲に固定係数、たとえば8/7を乗算すると、使用されるデータのサンプル範囲が、YCbCrビデオデータで使用されるビデオ範囲にほぼ対応する範囲に圧縮される。量子化範囲が決定されない可能性がある後のフレームは、サンプルビット深度、例えば、10ビットビデオの場合[0..1023]の限界までこの範囲を超えるいくつかのヘッドルームを有する。次に、プロセッサ205における制御は、ステップ1550から特徴マップ量子化ステップ1560に進む。
【0137】
特徴マップ量子化ステップ1560において、量子化器モジュール518は、プロセッサ205の実行下で、特徴マップが属するグループの量子化範囲に従って、浮動小数点値から整数サンプル値に各特徴マップを量子化する。決定された整数サンプル値は例えば、メモリ206および/またはハードディスクドライブ210に記憶され得る。ステップ1560は、
図16を参照して説明される。次に、プロセッサ205における制御は、ステップ1560から特徴マップパックステップ1570に進む。
【0138】
特徴マップパックステップ1570において、パッカモジュール522は、プロセッサ205の実行下で、整数特徴マップ520をパックして、パックされた特徴マップフレーム117を生成する。テンソル115の各レイヤからの特徴マップに対応する量子化された特徴マップ520は例えば、1フレームのビデオデータを保持するメモリ206および/またはハードディスクドライブ210内に構成されたメモリバッファに記憶され得る。
図11-13を参照して、特徴マップのパッキングフォーマットについて説明する。次に、プロセッサ205における制御は、ステップ1570からメタデータ符号化ステップ1580に進む。
【0139】
メタデータ符号化ステップ1580において、エントロピーエンコーダ638はプロセッサ205の実行下で、特徴マップグルーピング512および量子化範囲516、すなわち、メタデータ125をビットストリーム120に符号化する。メタデータ125は、SEIメッセージ1413として使用して符号化することができる。SEIメッセージ1413のフォーマットは付録Aを参照して説明される。次に、プロセッサ205における制御は、ステップ1580からフレーム符号化ステップ1590に進む。
【0140】
フレーム符号化ステップ1590において、ビデオエンコーダ120は、プロセッサ205の実行の下で、フレーム119をビットストリーム121に符号化する。ソースデバイス110が特徴マップを符号化するように構成されるとき、フレーム119は、マルチプレクサ118を介してパックされた特徴マップフレーム117から取得される。ソースデバイス110が特徴マップを符号化するように構成されるとき、ビデオエンコーダ120は、ビデオコーディング規格のプロファイルに利用可能なコーディングツールのサブセットを使用し得る。コーディングツールのサブセットは、一般的な制約フラグを使用してシグナリングされ得る。たとえば、「Main10」プロファイルは、ビットストリーム120中のプロファイルレベルティアシンタックス1438中でシグナリングされ得、一般な制約フラグ1440は以下のツール:LFNST(gci_no_lfnst_constraint_flagを介して)、MIP(gci_no_mip_constraint_flagを介して)、LMCS(gci_no_lmcs_constraint_flagを介して)、ISP(gci_no_isp_constraint_flagを介して)、Affine(gci_no_affine_motion_constraint_flagを介して)、GPM(gci_no_gpm_constraint_flagを介して)、MMVD(gci_no_mmvd_constraint_flagを介して)がビットストリーム120において使用されないことをシグナリングし得る。デブロッキングフィルタを無効にすると、特徴マップを符号化するときの圧縮効率が向上し、タスクパフォーマンスが向上する。VVCコーディング規格では、sh_deblocking_filter_disabled_flagを「1」の値でコーディングすることによって、またはph_deblocking_filter_disabled_flagを「1」の値でコーディングすることによって、スライスまたはピクチャレベルでオーバーライドされない限り、pps_deblocking_filter_disabled_flagを「1」に設定したビットストリーム121内のピクチャパラメータセットを参照するピクチャに対してデブロッキングフィルタは無効になっている。デブロッキングはVVC規格の制約フラグを使用して明示的に無効化されず、したがって、デブロッキングフィルタを無効化することは、そのような無効化が利点を示すにもかかわらず、特徴マップ符号化のためのサブプロファイル定義の一部を構成しない。方法1500は完了し、プロセッサ205における処理は次のフレームに進む。
【0141】
図16は、テンソルを量子化して、ビデオエンコーダ120で符号化するためのフレーム117への配置に適した量子化値を生成するための方法1600を示す。方法1600は、構成されたFPGA、ASIC、またはASSPなどの装置を使用して実装され得る。代替的に、以下で説明するように、方法1600は、プロセッサ205の実行下で、アプリケーションプログラム233の1つまたは複数のソフトウェアコードモジュールとして、ソースデバイス110によって実装され得る。方法1600を実施するアプリケーションプログラム233のソフトウェアコードモジュールは例えば、ハードディスクドライブ210および/またはメモリ206に常駐することができる。方法1600は、CNNバックボーン114から得られた各テンソルの各浮動小数点値について繰り返される。方法1600は、コンピュータ可読記憶媒体および/またはメモリ206に記憶され得る。方法1600は、量子化範囲による正規化ステップ1605で開始する。
【0142】
ステップ1605において、量子化器モジュール518は、プロセッサ205の実行下で、特徴マップからの浮動小数点値を、その値を特徴マップの量子化範囲で割ることによって[-1.0、1.0]範囲に正規化して、正規化浮動小数点値を生成する。プロセッサ205における制御は、ステップ1605から符号及び大きさ決定ステップ1610に進む。
【0143】
ステップ1610において、量子化器モジュール518は、プロセッサ205の実行下で、正規化浮動小数点値から符号および大きさを分離する。プロセッサ205における制御は、ステップ1610からスケーリング適用ステップ1620に進む。
【0144】
スケーリング適用ステップ1620において、量子化器モジュール518は、プロセッサ205の実行下で、ステップ1610からの浮動小数点の大きさを事前スケーリング定数で乗算して、事前スケーリングされた大きさを生成する。事前スケーリングされた大きさは、2つの構成要素、浮動小数点値の小数ビットの数を整数ビットに効果的にシフトする2のべき乗の倍率、およびスケーリング係数を有する。スケーリング係数は、1より大きい値を有する。スケーリング係数は、浮動小数点精度から整数精度への量子化を、大きさに下方バイアスを導入するフロア演算を使用して補償するように選択される。スケーリング係数1.31は、量子化および逆量子化の後の再構成された浮動小数点値における誤差を最小化することが見出されたが、2の平方根を近似する値、すなわち1.41などの他の値も使用することができる。65,536の2のべき乗の係数は、log2演算の後、4つのサンプルビットを必要とする0~16の範囲に低減され得る正規化された範囲をもたらす。スケーリング係数の存在は、サンプルに別のビットを追加することができる。全体のサンプルビット幅は、ビデオエンコーダ120によってサポートされる8ビットの最小ビット深度未満のままである。したがって、ビデオエンコーダ120は8ビットサンプル深度を使用し、内部で8ビットで動作するように構成され得、すなわち、8ビットプロファイルが使用され得る。他の2のべき乗係数も使用することができる。プロセッサ205における制御は、ステップ1620からlog2実行ステップ1630に進む。
【0145】
ステップ1630において、量子化器モジュール518は、プロセッサ205の実行下で、事前スケーリングされた大きさの小数部分を切り捨てて、小数点の右側の任意の部分を除去して(すなわち、フロア演算が適用される)、整数の大きさを生成する。log2演算は、1に整数の大きさを加えた結果に対して実行され、log2値を生成する。値1を整数の大きさに加算することにより、対数演算は、ゼロ値テンソルの大きさを扱うことができる。言い換えれば、2のべき乗指数は、事前にスケーリングされた大きさから抽出されて、log2値を生成する。ステップ1620および1630の結果として、テンソルの大きさは、線形空間から複雑性が低い対数空間に変換される。テンソルは多くのサンプルを含むので、低複雑性量子化は実装上の利点を提供する。さらに、実験は、全体的なタスク性能が正確な値、すなわち、各浮動小数点値の小数部分よりも、各テンソルにおける浮動小数点値の指数を維持することにより依存することを示した。プロセッサ205における制御は、ステップ1630からlog2値閾値テストステップ1640に進む。
【0146】
ステップ1640において、量子化器モジュール518は、プロセッサ205の実行下で、log2値を所定の閾値と比較する。log2値が所定の閾値以下である場合、調整されたlog2値はゼロに設定され、プロセッサ205における制御は、ステップ1640からサンプル値生成ステップ1660に進む。log2値が所定の閾値よりも大きい場合、プロセッサ205における制御は、ステップ1640からlog2値調整ステップ1650に進む。所定の閾値は、ゼロに近いいくつかの狭い量子化ビンがゼロビンにマージされることをもたらす。特に、ゼロビンは、10ビット範囲を有する特徴マップ内の浮動小数点値の量子化範囲にわたって均一なビン間隔を有する線形量子化スキームで使用されるのとほぼ同じ範囲をカバーする。+1および-1のビンはまた、10ビット範囲への線形量子化の場合に見られるように、同様のビン間隔をカバーする。線形量子化の場合に対する-1、0、および+1ビンのビンサイズの調整は、多くのテンソル値が主に有意性マップコーディングを使用して(適切に設定された量子化パラメータ692を用いて)ビデオエンコーダ120によって圧縮され得る、これらのビンを利用するので、有益である。
【0147】
ステップ1650において、量子化器モジュール518は、プロセッサ205の実行下で、所定の閾値をlog2値から減算して、調整されたlog2値を生成する。所定の閾値は2のべき乗係数が65536であり、8ビットのサンプルビット幅が使用されるとき、8の値を有し得る。プロセッサにおける制御は、ステップ1650からサンプル値生成ステップ1660に進む。
【0148】
ステップ1660では、量子化器モジュールがプロセッサ205の実行下で、ステップ1610で決定された符号に従って、調整されたlog2値をDCオフセットに加算または減算することによって、パックされた特徴マップフレーム117のためのサンプルを生成する。DCオフセットは、サンプルビット深度によって与えられるサンプル値の範囲の中点に設定され得る。たとえば、128のDCオフセットは、フレーム117が8ビットサンプルを使用するときに使用され得る。方法1600は終了し、プロセッサ205における制御は、量子化されるべき特徴マップ内の次のサンプルに進む。方法1600はDC値に極めて近いサンプル値をもたらし、-1、0、+1の一般的なビン値は、線形量子化の場合と比較してほぼ保存される。DC値から離れた最大エクスカーション(maximum excursions)は、-8から+8に制限され、これは、かなり狭い範囲であり、ビデオエンコーダ120における損失に起因する誤差を低減するために、低QPの使用を必要とする。量子化されたサンプルはここで、対数空間においてテンソル値を符号化するので、ビデオエンコーダ120における損失は再構成されたサンプル値に対して指数関数的効果を有する。
【0149】
図17は符号化されたデータから特徴マップを復号し、CNNの第2の部分を実行するための方法1700を示す。方法1700は、構成されたFPGA、ASIC、またはASSPなどの装置によって実装され得る。代替的に、以下で説明するように、方法1700はプロセッサ205の実行下において、アプリケーションプログラム233の1つまたは複数のソフトウェアコードモジュールとして、宛先デバイス140によって実装され得る。方法1700は、ビットストリーム143において符号化されたビデオデータの各フレームに対して繰り返される。方法1700を実施するアプリケーションプログラム233のソフトウェアコードモジュールは例えば、ハードディスクドライブ210および/またはメモリ206に記憶され得る。方法1700は、特徴マップグルーピング復号ステップ1710で開始する。方法1700は量子化に関連する1つまたは複数のパラメータを決定し、符号化データから復号されたデータサンプルに対して逆量子化を実行して、1つまたは複数のパラメータに従って特徴マップを導出するように構成される。一構成では、方法1700は、逆量子化が実行された後、特徴マップのグループに対応する特徴マップをデインターリーブするように構成される。以下で詳細に説明するように、方法1700は、第2フレーム(または2次元アレイ)に配置された特徴マップの第2グループと第1フレーム(または2次元アレイ)に配置された特徴マップの第1グループの画像に基づいて特徴マップを決定するために使用され得、第1フレームは第2フレームとは異なる。
【0150】
特徴マップグルーピング復号ステップ1710において、エントロピーデコーダ720はプロセッサ205の実行下で、SEIメッセージ1413から、各レイヤの各特徴マップの、特徴マップの1つまたは複数のグループ(すなわち、特徴マップグループ820)への割り当てを示す構造を復号する。復号された構造は例えば、メモリ206および/またはハードディスクドライブ210に記憶され得る。SEIメッセージ1413における特徴マップグルーピングのシンタックスは付録Aを参照して説明される。次いで、プロセッサ205における制御はステップ1710から量子化範囲復号ステップ1720に進む。
【0151】
量子化範囲復号ステップ1720において、エントロピーデコーダ720はプロセッサ205の実行下で、ステップ1710においてSEIメッセージ1413から決定されたように、820の各特徴マップグループについて量子化範囲822の形式でパラメータを復号する。量子化範囲822は、特徴マップグループ内の複数の特徴マップの各々によって共有される。ステップ1720で決定された量子化範囲822は例えば、メモリ206および/またはハードディスクドライブ210に記憶され得る。対称量子化が使用されているとき、ステップ1720において、各特徴マップグループについて単一の値が復号され、それぞれのグループに属する特徴マップ内の浮動小数点データの最大の大きさを表す。非対称量子化がステップ1720で使用されているとき、それぞれのグループに属する特徴マップ内の浮動小数点データの最大値および最小値を表す一対の値が、各特徴マップグループについて復号される。プロセッサ205はビデオデータのすべてのフレームに対してステップ1720を実行するように動作することができ、またはプロセッサ205は、より少ない頻度でステップ1720を実行するように動作することができる。ステップ1720は、ビットストリーム143中のランダムアクセスポイントまたはイントラピクチャで実行され得る。ステップ1720が全てのフレームについて実行されないとき、特徴マップグルーピングおよび/または量子化範囲データの新しいセットがビットストリーム143から復号されるまで、特徴マップグルーピングおよび量子化範囲データは、再使用のために後続のフレームにわたって搬送される。次に、プロセッサ205における制御は、ステップ1720からフレーム復号ステップ1630に進む。
【0152】
フレーム復号ステップ1730において、エントロピーデコーダ114は、プロセッサ205の実行下で、AU1414などのアクセスユニットに対応するビットストリーム143の一部分を復号することによってフレーム145を生成するように動作する。フレーム145はパックされた特徴マップを含んでもよく、または例えばビデオソース112からのフレームに対応する画像を含んでもよい。フレーム145が画像フレームを含む場合、すなわち、パックされた特徴マップを含まない場合、方法1700は終了し、次いで復号は次のフレームに進む。ステップ1730で生成されたフレーム145は例えば、メモリ206および/またはハードディスクドライブ210に記憶され得る。フレーム145がパックされた特徴マップを含む場合、プロセッサ205は、ステップ1730から特徴マップ配置決定ステップ1740に進む。
【0153】
特徴マップ配置決定ステップ1740において、アンパッカモジュール810は、プロセッサ205の実行下で、フレーム145内の各レイヤの各特徴マップの位置を決定する。各特徴マップの空間サイズ、特徴マップグルーピング、および各レイヤにおける特徴マップの数を使用して、配置情報は、ステップ1540のアプローチに従って、
図11~13を参照して説明したように決定される。特徴マップサイズ、量、およびパッキングフォーマットが前のフレームと比較して変化しない場合、特徴マップ配置データは、前のフレームから保持される。次いで、プロセッサ205における制御はステップ1740から、特徴マップアンパックステップ1750に進む。
【0154】
特徴マップアンパックステップ1750において、アンパッカモジュール810はプロセッサ205の実行下で、フレーム147からサンプルを抽出し、ステップ1740からの決定された特徴マップ配置に従って整数特徴マップ812を生成する。ステップ1750で決定された整数特徴マップ812は例えば、メモリ206および/またはハードディスクドライブ210に記憶され得る。次に、プロセッサ205における制御は、ステップ1750から特徴マップ逆量子化ステップ1760に進む。
【0155】
特徴マップ逆量子化ステップ1760において、逆量子化モジュール814はプロセッサ205の実行下で、整数特徴マップ812を浮動小数点特徴マップに変換し、CNNヘッド150への入力としてテンソル149にアセンブルされる。浮動小数点特徴マップは例えば、メモリ206および/またはハードディスクドライブ210に記憶され得る。
図18を参照して、ステップ1760の動作を説明する。方法1800から得られる浮動小数点値は多次元アレイとしてテンソル119にアセンブルされ、一般に、次元は(フレーム、チャネル、高さ、幅)である。FPNが使用される場合、
アセンブリは、FPNレイヤに対応する119におけるテンソルのセットのうち1つのテンソルに特徴マップを書き込むように動作する。プロセッサ205における制御は、ステップ1760からCNN第2部分実行ステップ1770に進む。
【0156】
CNN第2部分実行ステップ1770において、CNNヘッド150はプロセッサ205の実行下で、CNNの残りのステージ(すなわち、特定のタスクに固有のステージ)を実行する。復号され、アンパックされ、逆量子化されたテンソル149は、CNNヘッド150に入力される。CNNヘッド150内では、一連の畳み込み、正規化、全結合レイヤ演算、および活性化ステージが実行され、CNN結果151が得られる。CNN結果151は、例えばメモリ206内に構成されたタスク結果バッファ152に格納される。方法1700は終了し、プロセッサ205における制御は次のフレームに進む。
【0157】
図18は、特徴マップフレームデータ147のサンプル値を、CNNヘッド150によって使用されるテンソル値に変換するための方法1800を示す。方法1800は、構成されたFPGA、ASIC、またはASSPなどの装置を使用して実装され得る。代替的に、以下で説明するように、方法1800はプロセッサ205の実行下において、アプリケーションプログラム233の1つまたは複数のソフトウェアコードモジュールとして、宛先デバイス140によって実装され得る。方法1800を実施するアプリケーションプログラム233のソフトウェアコードモジュールは例えば、ハードディスクドライブ210および/またはメモリ206に常駐することができる。方法1800は、CNNバックボーン114から得られた各テンソルの各浮動小数点値について繰り返される。方法1800は、コンピュータ可読記憶媒体および/またはメモリ206に記憶され得る。方法1800は、符号および大きさの決定ステップ1810で開始する。
【0158】
ステップ1810において、逆量子化器814はプロセッサ205の実行下で、フレーム147から得られたサンプル値からDCオフセットを減算し、結果の符号(sign)と大きさ(magnitude)を分離して、サンプルの符号(sample sign)とサンプルの大きさ(sample magnitude)を得る。DCオフセットは、サンプルビット深度によって与えられるサンプル値の範囲の中点に設定され得る。たとえば、128のDCオフセットは、フレーム147が8ビットサンプルを使用するときに使用され得る。サンプル値は対数空間でテンソル値を符号化するので、DC値から離れる最大エクスカーションは-8~+8に制限される。プロセッサ205における制御は、ステップ1810から大きさテストステップ1820に進む。
【0159】
ステップ1820において、逆量子化器モジュール814は、プロセッサ205の実行下で、サンプルの大きさがゼロに等しいか、またはゼロより大きいかを判定する。サンプルの大きさがゼロに等しい場合(NO)、調整されたサンプルの大きさ(an adjusted sample magnitude)の値はゼロに設定され、プロセッサ205における制御は、ステップ1820から指数適用ステップ1840に進む。サンプルの大きさがゼロよりも大きい場合(YES)、プロセッサ205における制御は、ステップ1820からオフセット適用ステップ1830に進む。
【0160】
ステップ1830において、逆量子化器モジュール814は、プロセッサ205の実行下で、所定の閾値をサンプルの大きさに加えて、調整されたサンプルの大きさを生成する。所定の閾値は2のべき乗係数が65536であり、8ビットのサンプルビット幅が使用されるとき、8の値を有し得る。言い換えれば、調整されたサンプルの大きさは、サンプルの大きさがゼロよりも大きい場合、サンプルの大きさと所定の閾値との合計である。プロセッサにおける制御は、ステップ1830からステップ1840に進む。
【0161】
ステップ1840において、逆量子化器モジュール814はプロセッサ205の実行下で、2の調整されたサンプルの大きさ乗から1を引いた値を計算して、整数テンソルの大きさ(すなわち、tensor magnitude=2adjusted sample magnitude - 1)を計算する。1の値の減算(および対応するステップ1630における1の値の加算)は、対数領域への、および対数領域からのゼロ値テンソル大きさの伝搬を可能にする。プロセッサ205における制御は、ステップ1840から正規化テンソル値生成1850に進む。
【0162】
ステップ1850において、逆量子化器モジュール814はプロセッサ205の実行下で、整数テンソルの大きさ(integer tensor magnitude)を2のべき乗係数、例えば65536で除算し、ステップ1810からのサンプル符号を適用して、正規化テンソルの大きさ(normalised tensor magnitude)を生成する。正規化テンソルの大きさは、-1.0から1.0の範囲内にある。プロセッサ205における制御は、ステップ1850から量子化範囲適用ステップ1860に進む。
【0163】
ステップ1860において、逆量子化器モジュール814はプロセッサ205の実行下で、ステップ1850からの正規化テンソルの大きさ(浮動小数点値である)に、特徴マップ(メタデータ125および関連する復号されたメタデータ155の一部であり、その両方が復号されたフレーム147に関連する)の量子化範囲を乗算して、テンソル値(tensor value)を決定し、テンソル値を、量子化器モジュール518への入力において見られる範囲に復元する。1つまたは複数の特徴マップの1つの量子化範囲は大きさを指定し、すなわち、1つの値は、そのような値が正であるか負であるかにかかわらず、1つまたは複数の特徴マップ内で見られる最大の大きさを表す。次いで、方法1800は終了し、プロセッサ205における制御は、フレーム147における次のサンプルに進む。
【0164】
システム100のアレンジメントにおいて、漏れ修正線形(LeakyReLU)活性化関数の出力においてネットワーク(すなわち、CNNバックボーン114とCNNヘッド150との間の境界)の分割を有する場合、負のテンソル値は線形量子化スキームを使用して量子化され、正のテンソル値は
図15~18の対数スキームを使用して量子化される。負の値の線形量子化はより高い精度を保持し、これはネットワークにおけるそのような拮抗的励起(antagonistic excitations)に有益であり得るが、正の、より大きい値は精度を保持する必要性がより少ない。負の値に線形量子化を使用し、正の値に対数量子化を使用する場合、2つの独立した量子化範囲、すなわち、負の値に1つと正の値に1つを使用することにより、一般に小さい負の大きさを、より小さい量子化範囲値で、したがってより小さい量子化ステップサイズで、したがってより高い精度で表現することができる。
【0165】
方法1600および1800における2のべき乗およびlog2指数関数の使用は、低複雑性実装を可能にする。しかし、デザインに追加の浮動小数点演算を含むより複雑なロジックを導入することを犠牲にして、非整数値を含む他のベース値を使用することが可能である。使用されるベース値にかかわらず、量子化ビン幅がタスク性能に寄与しないが、パックされた特徴マップフレーム117を符号化する困難さを増大させる過度に大きいサンプル値を回避するために、小さいテンソルの大きさについて線形の場合と同等のままであることを保証することが必要である。
【0166】
システム100の別のアレンジメントでは、方法1600および1800の変換がn個のセグメントを有する区分線形モデルで近似され、nは奇数であり、中心セグメントの中央ビンはゼロビンに対応する。一例では、nは3に設定され、中心線形セグメントおよび2つの外側線形セグメントをもたらし、1つは閾値を上回る正の値のためのものであり、もう1つは閾値を下回る負の値のためのものである。区分線形モデルは浮動小数点領域に適用することができ、または整数化された値に適用することができる。例えば、ステップ1620の結果を整数化し(「フロア」演算を適用し)、ステップ1630~1650の代わりに区分線形モデルを実行することができる。方法1800では、区分線形モデルの逆が任意のDCオフセットの除去後に、特徴マップから受信されたサンプル値に対して実行される。対称線形モデルの使用、すなわち、奇数個のセグメントを有し、中心セグメントの中心値が0ビンに対応することは、サンプル領域とテンソル領域との間の大きさを変換しながら、符号を別々に記憶する必要がないことを意味する。
【0167】
システム100の別のアレンジメントでは、方法1600および1800の変換が3セグメントモデルを使用する。中央セグメントは、ゼロビンに対応する中央ビンを有する線形モデルを提供する。2つの外側セグメントは例えば、
図16および
図18を参照して説明した整数log2演算を使用して、中心セグメントに連続的にインターフェースするようにオフセットされた対数モデルを提供する。3セグメントモデルは小さなテンソル値が線形に量子化されることを可能にし、一方、より大きな大きさのテンソル値は、そのような大きさの対数領域の使用のために圧縮される。
【0168】
産業上の利用可能性
記載された構成はコンピュータおよびデータ処理産業に適用可能であり、特に、高い圧縮効率を達成する、ビデオおよび画像信号などの信号の符号化および復号のためのデジタル信号処理に適用可能である。
【0169】
チャネルまたは特徴マップのグループ内の浮動小数点テンソルデータを量子化し、対数量子化領域を使用して、得られた整数値を平面フレームにパッキングするための構成も開示される。対数量子化領域を使用する量子化および逆量子化方法は大きな大きさのテンソル値のための正確な値を符号化するのに費やされるビットがないことに起因して、より大きな圧縮効率を可能にし、そのような精度は、使用中のネットワークのためのタスク性能のさらなる改善をもたらさない。
【0170】
上記は本発明のいくつかの実施形態のみを説明し、本発明の範囲および趣旨から逸脱することなく、修正および/または変更を行うことができ、実施形態は例示的であり、限定的ではない。
【0171】
本明細書の文脈において、単語「含む(comprising)」は「主に含むが、必ずしも単独ではない」または「有する(having)」または「含む(including)」を意味し、「のみからなる」ではない。「含む(comprise)」および「含む(comprises)」などの単語「含む(comprising)」の変形は、対応して変化する意味を有する。
【国際調査報告】