本開示のいくつかの態様および実施形態が、以下で提供される。当業者に明らかになるように、これらの態様および実施形態のうちのいくつかが独立して適用されてよく、それらのうちのいくつかが組合せで適用されてよい。以下の説明では、説明のために、本出願の実施形態の完全な理解をもたらすために具体的な詳細が記載される。しかしながら、様々な実施形態がこれらの具体的な詳細なしに実践され得ることが明らかとなろう。図および説明は限定的であることを意図しない。
以下の説明は、例示的な実施形態を提供するにすぎず、本開示の範囲、適用可能性、または構成を限定することを意図しない。むしろ、例示的な実施形態の以下の説明は、例示的な実施形態を実装することを可能にする説明を当業者に提供する。添付の特許請求の範囲に記載されるような本出願の趣旨および範囲から逸脱することなく、要素の機能および構成において様々な変更が加えられてよいことを理解されたい。
画像キャプチャデバイス(たとえば、カメラ)は、イメージセンサを使用して、光を受け取り、静止画像またはビデオフレームなどの画像フレームをキャプチャするデバイスである。「画像」、「画像フレーム」、および「フレーム」という用語は、本明細書では互換的に使用される。画像キャプチャデバイスは、一般に、シーンから光を受け取り、その光を画像キャプチャデバイスの画像センサーに導く少なくとも1つのレンズを含む。レンズによって受け取られた光は、1つまたは複数の制御機構によって制御される開口を通過し、画像センサーによって受け取られる。1つまたは複数の制御機構は、画像センサーからの情報に基づいて、かつ/または画像プロセッサ(たとえば、ホストまたはアプリケーションプロセスおよび/または画像信号プロセッサ)からの情報に基づいて、露光、焦点、および/またはズームを制御し得る。いくつかの例では、1つまたは複数の制御機構は、画像キャプチャデバイスのレンズをターゲットレンズ位置に移動させるモーターまたは他の制御機構を含む。ビデオは、「ビデオフレーム」と呼ばれることがある連続画像のシーケンスを指すことがある。ビデオを表示することは、ビデオのビデオフレームを連続的に表示することを指す。ビデオは、動きの中の1つまたは複数の物体を示し得る。
データ圧縮は、データの元の表現よりも少ないビットを使用してデータに関する情報を符号化するプロセスである。可逆データ圧縮は、たとえば、冗長性を除去することによって、圧縮プロセスにおいて元のデータファイルからのいずれの情報も失うことなく、データを圧縮する。不可逆データ圧縮技法は、可逆データ圧縮技法よりもデータを圧縮し得ることがある。しかしながら、不可逆データ圧縮技法は、データ圧縮アルゴリズムがあまり必要または重要でないと見なす情報など、元のデータファイルからの一部の情報を失う。データ圧縮を実行するデバイスは、エンコーダと呼ばれる。元のデータファイルからデータを可能な限り近く再現するためにデータ圧縮プロセスを反転させる(復元)デバイスは、デコーダと呼ばれる。
ビデオ圧縮は、フレーム内コーディング、フレーム間コーディング、または両方に基づいて、ビデオを圧縮し得る。空間圧縮としても知られるフレーム内コーディングは、静止画像圧縮技法を使用して、ビデオの個々のビデオフレームを圧縮することを指す。時間圧縮としても知られるフレーム間コーディングは、ビデオの複数のビデオフレーム内の画像データに基づいて、ビデオを圧縮することを指す。たとえば、フレーム間コーディングは、参照ビデオフレーム(たとえば、前のビデオフレーム)に対して、ビデオフレーム内のどのエリアが変化し、どのエリアが変化せずに留まるかを識別するために使用され得る。
動き推定は、ビデオフレーム間で整合するが、ビデオフレーム間でやはり移動する、画像データの冗長記憶を削減し得るフレーム間コーディング技法である。動き推定は、シーンの特定の部分が第1のビデオフレームから第2のビデオフレームに移動する方向および/または距離を有する動きベクトルを決定し得る。オプティカルフローは、特定のピクセルが第1のビデオフレームから第2のビデオフレームにどのように移動するかを記述する(方向および/または距離を有する)動きベクトルを提供する形態の動き推定である。これらの動きベクトルは第1のビデオフレームおよび第2のビデオフレームの表面に対応する2D平坦面に沿って方向および/または距離を提供するため、旧来のオプティカルフロー技法は、2次元(2D)オプティカルフローと呼ばれることがある。密なオプティカルフローは、ビデオフレームのすべてのピクセルに対する動きベクトルを提供する。スパースなオプティカルフローは、シーン内の視覚的特徴(たとえば、隅角、縁部、隆起、および/または塊)を表すピクセルなど、ビデオフレームのピクセルのサブセットに対する動きベクトルを提供する。エンコーダおよび/またはデコーダは、第1のフレームを、2つのフレーム間の使用オプティカルフローに基づいて第2のフレームを予測する予測フレームにワーピングし得る。残差は、予測フレームと第2のフレームとの間の差分、または誤差を識別し得る。
しかしながら、旧来のオプティカルフロー技法は、オプティカルフロー推定において不確実性を生成するシーン内で不正確であり得る。たとえば、オプティカルフロー推定は、動いているシーンおよび/または細かい細部が動くシーンの部分(たとえば、巻き上がる煙、爆発、炎、花火、液体、紙吹雪、ほこり、雨、泡、ボケ効果、粒子効果、またはそれらの組合せ)を遮る遮断を示すシーンに対して不正確であり得る。オプティカルフロー推定において不確実性を伴うシーンのビデオを符号化することは、複雑なオプティカルフローを生成し記憶することを必要とし得る。そのような複雑なオプティカルフローは、計算量的に生成が高価であり得、記憶に対してメモリ集約的であり得、結果的に不正確になり得、送信が高価であり(たとえば、高い帯域幅コストを有し)、またはそれらの組合せである。オプティカルフローにおける不正確さのために、オプティカルフローにおける不確実性を伴うシーンのビデオを符号化することは、複雑な残差を生成し記憶することをやはり必要とし得る。複雑な残差はまた、記憶および送信に対してメモリ集約的であり得る。符号化ビデオデータは、したがって、結果的にメモリ集約的な複雑なオプティカルフローとメモリ集約的な複雑な残差の両方を含むことになり得る。したがって、旧来のオプティカルフロー技法は、動き推定において不確実性を伴うシーンのビデオを圧縮するには非効率であり得る。
マルチスケールオプティカルフローに基づいてデータ符号化を実行するためのシステムおよび技法について本明細書で説明する。マルチスケールオプティカルフローにおいて、符号化デバイスは、入力フレームおよび参照フレームを受信し、入力フレームおよび参照フレームに基づいて、オプティカルフローと重みマップの両方を生成する。2Dオプティカルフローの場合と同様に、マルチスケールオプティカルフローは、特定のピクセルが参照ビデオフレームから入力ビデオフレームにどのように移動するかを記述する(方向および/または距離を有する)動きベクトルを識別し得る。符号化デバイスは、入力画像を予測する予測フレームを生成するために、オプティカルフローおよび重みマップに基づいて参照フレームをワーピングし得る。
重みマップは、オプティカルフロー推定における不確実性に対する確実性のスケールを識別し得る。参照画像内の異なるピクセルは、重みマップ内の(たとえば、0から1までの)所定の範囲内の異なる重み値に対応し得る。いくつかの例では、重みマップ内のより低い重み値は、オプティカルフロー推定におけるより高い確実度に対応し、重みマップのより高い重み値は、オプティカルフロー推定におけるより低い確実度に対応する。例示的な重みマップは図5および図6に示され、黒は0の重み値に対応し、白は1の重み値に対応し、黒と白との間のグレーのシェードは、0から1の重み値に対応する。
重みマップは、入力画像を予測する予測フレームを生成するために参照画像がワーピングされるべきスケールの細かさまたは粗さを識別することも可能である。いくつかの例では、重みマップ内のより低い数は(たとえば、より大きなスケールに重み付けされる)より細かい細部レベルで参照画像のワーピングに対応し、重みマップ内のより高い数は(たとえば、より小さなスケールに重み付けされる)より粗い細部レベルを使用する参照画像のワーピングに対応する。より細かい細部レベルにおいて、符号化デバイスは、その元のサイズで参照フレームを、または参照フレームの(たとえば、元のサイズの半分に)若干ダウンスケーリングされたバリアントをワーピングし得る。より粗い細部レベルにおいて、符号化デバイスは、参照フレームの(たとえば、元のサイズの1/4、元のサイズの1/8、元のサイズの1/16、元のサイズの1/32、元のサイズの1/64、元のサイズの1/128、元のサイズの1/256、元のサイズの1/512、なお一層ダウンスケーリングされたサイズ、または前に列挙したサイズのうちのいずれか2つの間のサイズに)より著しくダウンスケーリングされたバリアントをワーピングし得る。ワーピングフレームは、アップスケーリングされて参照フレームの元のサイズに戻ることが可能であるか、または重みマップに対応する重みで共にマージされることが可能である。
オプティカルフローと重みマップの両方を使用して参照フレームをワーピングすることによって予測フレームを生成することは、重みマップなしに単にオプティカルフローを使用することよりも優れたビデオ圧縮を実現する。符号化デバイスは、符号化デバイスが高い確実度で第1のエリアに対する移動を推定した場合、細かい細部レベルで参照フレームの第1のエリアをワーピングする。符号化デバイスは、符号化デバイスが低い確実度で第1のエリアに対する移動を推定した場合、粗い細部レベルで参照フレームの第2のエリアをワーピングする。符号化デバイスは、重みマップに基づいて、異なるスケールのオプティカルフローをマージすることによって、マージされたオプティカルフローを生成し得る。マージされたオプティカルフローは、特に、オプティカルフロー推定において高い不確実性を伴うエリアにおいて、元のオプティカルフローよりも平滑かつ複雑さが低いことがある。したがって、マージされたオプティカルフローは、記憶に対するメモリ集約性が元のオプティカルフローよりも低い。細部は残差を使用して補正され得る。マルチスケールオプティカルフローを使用すると、残差は2Dオプティカルフローを使用する残差と比較して同様の複雑さレベルを有し得る。前に論じたように、2Dオプティカルフローは、補正のために複雑な残差を必要とするオプティカルフロー推定において高い不確実性を伴うエリア内に不正確さをもたらす。場合によっては、マルチスケールオプティカルフローを使用する残差は、2Dオプティカルフローを使用する残差と比較して低減された複雑さレベルすら有し得る。たとえば、不正確な詳細推定は、最終的に、画像内の大きなエリアをカバーし、したがって、より粗い推定レベルよりも補正がより複雑な、ワーピング誤差をもたらし得る。
符号化デバイスは、オプティカルフローおよび重みマップに基づいて、入力フレームに対応する符号化ビデオデータを生成し得る。いくつかの態様では、符号化デバイスは、1つまたは複数の人工知能(AI)アルゴリズム、トレーニングされた1つまたは複数の機械学習(ML)モデル、1つまたは複数のトレーニングされたニューラルネットワーク(NN)、またはそれらの組合せを使用して、オプティカルフローを生成する。いくつかの態様では、符号化デバイスは、1つまたは複数のAIアルゴリズム、1つまたは複数のトレーニングされたMLモデル、1つまたは複数のトレーニングされたNN、またはそれらの組合せを使用して、重みマップを生成する。いくつかの態様では、符号化デバイスは、1つまたは複数のAIアルゴリズム、1つまたは複数のトレーニングされたMLモデル、1つまたは複数のトレーニングされたNN、またはそれらの組合せを使用して、オプティカルフローおよび重みマップに基づいて、予測フレームを生成するために、参照フレームをワーピングする。
本明細書で説明する技法は、既存のビデオコーデック(たとえば、高効率ビデオコーディング(HEVC)、高度ビデオコーディング(AVC)、または他の好適な既存ビデオコーデック)に適用されてよく、かつ/あるいは、開発されているビデオ規格、ならびに/あるいは、たとえば、多用途ビデオコーディング(VVC)、共同調査モデル(JEM)、および/または開発中の、もしくは開発されるべき他のビデオコーディング規格など、将来のビデオコーディング規格である、どのビデオコーディング規格用の効率的コーディングツールであってもよい。
図1は、符号化デバイス104と復号デバイス112とを含むシステム100の一例を示すブロック図である。符号化デバイス104はソースデバイスの一部であってよく、復号デバイス112は受信デバイスの一部であってよい。ソースデバイスおよび/または受信デバイスは、モバイルもしくは固定の電話ハンドセット(たとえば、スマートフォン、セルラー電話など)、デスクトップコンピュータ、ラップトップもしくはノートブックコンピュータ、タブレットコンピュータ、セットトップボックス、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーミングコンソール、ビデオストリーミングデバイス、インターネットプロトコル(IP)カメラ、または任意の他の好適な電子デバイスなどの、電子デバイスを含み得る。いくつかの例では、ソースデバイスおよび受信デバイスは、ワイヤレス通信用の1つまたは複数のワイヤレストランシーバを含み得る。本明細書で説明するコーディング技法は、(たとえば、インターネットを介した)ストリーミングビデオ送信、テレビジョン放送もしくは送信、データ記憶媒体上に記憶するためのデジタルビデオの符号化、データ記憶媒体上に記憶されたデジタルビデオの復号、または他の適用例を含む、様々なマルチメディア用途におけるビデオコーディングに適用可能である。いくつかの例では、システム100は、ビデオ会議、ビデオストリーミング、ビデオ再生、ビデオ放送、ゲーミング、および/またはビデオ電話などの適用例をサポートするために、一方向または双方向のビデオ送信をサポートすることができる。
符号化デバイス104(またはエンコーダ)は、ビデオコーディング規格またはビデオコーディングプロトコルを使用してビデオデータを符号化して、符号化ビデオビットストリームを生成するために使用され得る。ビデオコーディング規格の例は、そのスケーラブルビデオコーディング(SVC)拡張およびマルチビュービデオコーディング(MVC)拡張を含む、ITU-T H.261、ISO/IEC MPEG-1 Visual、ITU-T H.262またはISO/IEC MPEG-2 Visual、ITU-T H.263、ISO/IEC MPEG-4 Visual、ITU-T H.264(ISO/IEC MPEG-4 AVCとも呼ばれる)、ならびに高効率ビデオコーディング(HEVC)すなわちITU-T H.265を含む。範囲拡張およびスクリーンコンテンツコーディング拡張、3Dビデオコーディング(3D-HEVC)拡張およびマルチビュー拡張(MV-HEVC)、ならびにスケーラブル拡張(SHVC)を含む、マルチレイヤビデオコーディングを扱うHEVCの様々な拡張が存在する。HEVCおよびその拡張は、ビデオコーディング共同研究部会(JCT-VC)、ならびにITU-Tビデオコーディングエキスパートグループ(VCEG)およびISO/IECモーションピクチャエキスパートグループ(MPEG)の3Dビデオコーディング拡張開発共同研究部会(JCT-3V)によって開発されている。MPEGおよびITU-T VCEGはまた、次世代のビデオコーディング規格用の新たなコーディングツールを探究するために、共同探究ビデオチーム(JVET)を形成している。参照ソフトウェアは、JEM(共同探究モデル)と呼ばれる。JVETによって開発された新しいビデオコーディング規格は多用途ビデオコーディング(VVC)として知られている。VVCは、H.266、MPEG-Iパート3、または将来のビデオコーディングと呼ばれることがある。
HEVCは、ITU-Tビデオコーディングエキスパートグループ(VCEG)およびISO/IECモーションピクチャエキスパートグループ(MPEG)のビデオコーディング共同研究部会(JCT-VC)によって2013年に確定された。MPEGおよびITU-T研究グループ16のVCEGによって形成された共同チームであるジョイントビデオエキスパートチーム(JVET)は、2020年に新しいVVCビデオコーディング規格を確定した。VVCは、既存のHEVC規格に勝る圧縮性能の著しい改善を実現し、より高品質のビデオサービスおよび(たとえば、特に、365°全方向没入型マルチメディア、高ダイナミックレンジ(HDR)ビデオなどの)新興のアプリケーションの展開を支援する。
本明細書で説明する多くの実施形態が、JEMモデル、VVC、HEVC規格および/またはその拡張を使用する例を提供する。しかしながら、上述のように、本明細書で説明する技法およびシステムはまた、AVC、MPEG、JPEG(もしくは静止画像のための他のコーディング規格)、それらの拡張、あるいはすでに利用可能であるかまたはまだ利用可能もしくは開発済みでない他の好適なコーディング規格などの、他のコーディング規格に適用可能であり得る。したがって、本明細書で説明する技法およびシステムは特定のビデオコーディング規格に関して説明されることがあるが、説明はその特定の規格のみに適用されるものと解釈されるべきではないことを当業者は諒解されよう。同様に、本明細書で説明する技法およびシステムのうちのいくつかは、ビデオおよび画像の符号化および復号を参照しながら説明されることがあるが、説明はまた、オーディオデータ、テキストデータ、またはマルチメディアデータなど、ビデオデータおよび/または画像データ以外の他のタイプのデータに対するデータ符号化およびデータ復号にも適用され得ることを当業者は諒解されよう。
図1を参照すると、ビデオソース102は、ビデオデータを符号化デバイス104に提供し得る。ビデオソース102は、ソースデバイスの一部であってよく、またはソースデバイス以外のデバイスの一部であってもよい。ビデオソース102は、ビデオキャプチャデバイス(たとえば、ビデオカメラ、カメラフォン、ビデオフォンなど)、記憶されたビデオを収容するビデオアーカイブ、ビデオデータを提供するビデオサーバもしくはコンテンツプロバイダ、ビデオサーバもしくはコンテンツプロバイダからビデオを受信するビデオフィードインターフェース、コンピュータグラフィックスビデオデータを生成するためのコンピュータグラフィックスシステム、そのようなソースの組合せ、または任意の他の好適なビデオソースを含み得る。
ビデオソース102からのビデオデータは、1つまたは複数の入力ピクチャまたは入力フレームを含み得る。ピクチャまたはフレームは、場合によってはビデオの一部である静止画像である。いくつかの例では、ビデオソース102からのデータは、ビデオの一部ではない静止画像であり得る。符号化デバイス104のエンコーダエンジン106(またはエンコーダ)は、ビデオデータを符号化して、符号化ビデオビットストリームを生成する。いくつかの例では、符号化ビデオビットストリーム(または「ビデオビットストリーム」もしくは「ビットストリーム」)は、一連の1つまたは複数のコーディングされたビデオシーケンスである。コーディングされたビデオシーケンス(CVS)は、ベースレイヤの中でいくつかの特性を伴うランダムアクセスポイントピクチャを有するアクセスユニット(AU)から始めて、ベースレイヤの中でいくつかの特性を伴うランダムアクセスポイントピクチャを有する次のAUの直前までの、一連のAUを含む。たとえば、CVSを開始するランダムアクセスポイントピクチャのいくつかの特性は、1に等しいRASLフラグ(たとえば、NoRaslOutputFlag)を含み得る。そうでない場合、ランダムアクセスポイントピクチャ(0に等しいRASLフラグを有する)はCVSを開始しない。アクセスユニット(AU)は、1つまたは複数のコーディングされたピクチャと、同じ出力時間を共有するコーディングされたピクチャに対応する制御情報とを含む。ピクチャのコーディングされたスライスは、ビットストリームレベルで、ネットワークアブストラクションレイヤ(NAL)ユニットと呼ばれるデータユニットの中にカプセル化される。たとえば、HEVCビデオビットストリームは、NALユニットを含む1つまたは複数のCVSを含み得る。NALユニットの各々は、NALユニットヘッダを有する。一例では、ヘッダは、H.264/AVCに対して1バイト(マルチレイヤ拡張を除いて)、HEVCに対して2バイトである。NALユニットヘッダの中のシンタックス要素は、指定されたビットを取り、したがって、すべての種類のシステム、および、特にトランスポートストリーム、リアルタイムトランスポート(RTP)プロトコル、ファイルフォーマットなどの、トランスポートレイヤにとって認識可能である。
ビデオコーディングレイヤ(VCL)NALユニットおよび非VCL NALユニットを含む、NALユニットの2つのクラスがHEVC規格に存在する。VCL NALユニットは、コーディングされたピクチャデータの1つのスライスまたはスライスセグメント(以下で説明する)を含み、非VCL NALユニットは、1つまたは複数のコーディングされたピクチャに関係する制御情報を含む。場合によっては、NALユニットはパケットと呼ばれることがある。HEVC AUは、コーディングされたピクチャデータを含むVCL NALユニットと、(もしあれば)コーディングされたピクチャデータに対応する非VCL NALユニットとを含む。
NALユニットは、ビデオの中のピクチャのコーディングされた表現などの、ビデオデータのコーディングされた表現(たとえば、符号化ビデオビットストリーム、ビットストリームのCVSなど)を形成するビットのシーケンスを含み得る。エンコーダエンジン106は、各ピクチャを複数のスライスに区分することによって、ピクチャのコーディングされた表現を生成する。スライスの中の情報が、同じピクチャ内の他のスライスからのデータに依存することなくコーディングされるように、スライスは他のスライスとは無関係である。スライスは、独立したスライスセグメント、および存在する場合、前のスライスセグメントに依存する1つまたは複数の従属したスライスセグメントを含む、1つまたは複数のスライスセグメントを含む。スライスは、次いで、ルーマサンプルおよびクロマサンプルのコーディングツリーブロック(CTB)に区分される。ルーマサンプルのCTB、およびクロマサンプルの1つまたは複数のCTBは、サンプル用のシンタックスとともにコーディングツリーユニット(CTU)と呼ばれる。CTUは、HEVC符号化のための基本処理単位である。CTUは、様々なサイズの複数のコーディングユニット(CU)にスプリットされ得る。CUは、コーディングブロック(CB)と呼ばれるルーマサンプルアレイおよびクロマサンプルアレイを含む。
ルーマCBおよびクロマCBは、予測ブロック(PB)にさらにスプリットされ得る。PBは、(利用可能であるかまたは使用するために有効化されているとき)インター予測またはイントラブロックコピー予測のために同じ動きパラメータを使用するルーマ成分またはクロマ成分のサンプルのブロックである。ルーマPBおよび1つまたは複数のクロマPBは、関連するシンタックスとともに、予測ユニット(PU)を形成する。インター予測の場合、動きパラメータのセット(たとえば、1つまたは複数の動きベクトル、参照インデックスなど)は、PUごとにビットストリームにおいてシグナリングされ、ルーマPBおよび1つまたは複数のクロマPBのインター予測のために使用される。動きパラメータは、動き情報と呼ばれることもある。CBはまた、1つまたは複数の変換ブロック(TB)に区分され得る。TBは、予測残差信号をコーディングするために同じ2次元変換がそこで適用される、色成分のサンプルの正方形ブロックを表す。変換ユニット(TU)は、ルーマサンプルおよびクロマサンプルのTB、ならびに対応するシンタックス要素を表す。
CUのサイズは、コーディングモードのサイズに対応し、形状が正方形であり得る。たとえば、CUのサイズは、8×8サンプル、16×16サンプル、32×32サンプル、64×64サンプル、または対応するCTUのサイズまでの任意の他の適切なサイズであり得る。「N×N」という句は、垂直寸法(vertical dimension)および水平寸法(たとえば、8ピクセル×8ピクセル)に換算してビデオブロックのピクセル寸法を指すために本明細書で使用される。ブロックの中のピクセルは、行および列に配置され得る。いくつかの実施形態では、ブロックは、水平方向において垂直方向と同じ数のピクセルを有しないことがある。CUに関連付けられたシンタックスデータは、たとえば、1つまたは複数のPUへのCUの区分を記述し得る。区分モードは、CUがイントラ予測モード符号化されるかまたはインター予測モード符号化されるかの間で異なり得る。PUは、形状が非正方形であるように区分され得る。CUに関連付けられたシンタックスデータはまた、たとえば、CTUに従う1つまたは複数のTUへのCUの区分を記述し得る。TUは、形状が正方形または非正方形であり得る。
HEVC規格によれば、変換は、変換ユニット(TU)を使用して実行され得る。TUは、異なるCUに対して異なってよい。TUは、所与のCU内のPUのサイズに基づいてサイズ決定され得る。TUは、同じサイズであってもよく、またはPUよりも小さくてもよい。いくつかの例では、CUに対応する残差サンプルは、残差4分木(RQT)として知られる4分木構造を使用して、より小さいユニットに再分割され得る。RQTのリーフノードは、TUに対応し得る。TUに関連付けられたピクセル差分値は、変換係数を生成するために変換され得る。変換係数は、次いで、エンコーダエンジン106によって量子化され得る。
ビデオデータのピクチャがCUに区分されると、エンコーダエンジン106は、予測モードを使用して各PUを予測する。予測ユニットまたは予測ブロックは、次いで、残差(以下で説明する)を得るために元のビデオデータから減算される。CUごとに、予測モードが、シンタックスデータを使用してビットストリームの内部でシグナリングされ得る。予測モードは、イントラ予測(または、ピクチャ内予測)またはインター予測(または、ピクチャ間予測)を含み得る。イントラ予測は、ピクチャ内で空間的に隣接するサンプル間の相関を利用する。たとえば、イントラ予測を使用すると、たとえば、PUにとっての平均値を見つけるためのDC予測、平坦面をPUに適合させるための平面予測、隣接データから外挿するための方向予測、または任意の他の好適なタイプの予測を使用して、同じピクチャの中の隣接画像データから各PUが予測される。インター予測は、画像サンプルのブロックに対する動き補償予測を導出するために、ピクチャ間の時間的な相関を使用する。たとえば、インター予測を使用すると、(出力順序において現在ピクチャの前または後の)1つまたは複数の参照ピクチャの中の画像データからの動き補償予測を使用して、各PUが予測される。ピクチャエリアを、ピクチャ間予測を使用してコーディングすべきか、それともピクチャ内予測を使用してコーディングすべきかという決定は、たとえば、CUレベルにおいて行われ得る。
いくつかの例では、ピクチャの1つまたは複数のスライスには、スライスタイプが割り当てられる。スライスタイプは、Iスライス、Pスライス、およびBスライスを含む。Iスライス(独立に復号可能なイントラフレーム)は、イントラ予測のみによってコーディングされているピクチャのスライスであり、したがって、Iスライスがスライスの任意の予測ユニットまたは予測ブロックを予測するためにフレーム内のデータしか必要としないので、独立に復号可能である。Pスライス(単方向予測フレーム)は、イントラ予測を用いて、かつ単方向インター予測を用いてコーディングされ得るピクチャのスライスである。Pスライス内の各予測ユニットまたは予測ブロックは、イントラ予測またはインター予測のいずれかを用いてコーディングされる。インター予測が適用されるとき、予測ユニットまたは予測ブロックは、1つの参照ピクチャのみによって予測され、したがって、参照サンプルは、1つのフレームの1つの参照領域だけからのものである。Bスライス(双方向予測フレーム)は、イントラ予測を用いて、かつインター予測(たとえば、双予測または単予測のいずれか)を用いてコーディングされ得るピクチャのスライスである。Bスライスの予測ユニットまたは予測ブロックは、2つの参照ピクチャから双方向に予測され得、ここで、各ピクチャは、1つの参照領域に寄与し、2つの参照領域のサンプルセットが重み付けられて(たとえば、等しい重みを用いて、または異なる重みを用いて)、双方向予測ブロックの予測信号を生成する。上述のように、1つのピクチャのスライスは、独立にコーディングされる。場合によっては、ピクチャは、ただ1つのスライスとしてコーディングされ得る。Iスライスとしてコーディングされたピクチャは、Iフレームと呼ばれることがある。Iスライスを含むピクチャは、Iフレームと呼ばれることがある。Pスライスとしてコーディングされたピクチャは、Pフレームと呼ばれることがある。Pスライスを含むピクチャは、Pフレームと呼ばれることがある。Bスライスとしてコーディングされたピクチャは、Bフレームと呼ばれることがある。Bスライスを含むピクチャは、Bフレームと呼ばれることがある。
上述のように、ピクチャ内予測は、ピクチャ内の空間的に近隣のサンプル間の相関を利用する。ピクチャ間予測は、画像サンプルのブロックに対する動き補償予測を導出するために、ピクチャ間の時間的な相関を使用する。並進動きモデルを使って、あらかじめ復号されたピクチャ(参照ピクチャ)中のブロックの位置は、動きベクトル(Δx,Δy)によって示され、Δxは水平変位を指定し、Δyは、現在ブロックの位置に対する参照ブロックの垂直変位を指定する。場合によっては、動きベクトル(Δx,Δy)は、整数サンプル精度(整数精度とも呼ばれる)とすることができ、その場合、動きベクトルは、参照フレームの整数ペルグリッド(または整数ピクセルサンプリンググリッド)を指す。場合によっては、動きベクトル(Δx,Δy)は、参照フレームの整数ペルグリッドに制限されることなしに、基礎をなす物体の動きをより正確にキャプチャするために、分数サンプル精度(分数ペル精度または非整数精度とも呼ばれる)とすることができる。動きベクトルの精度は、動きベクトルの量子化レベルによって表され得る。たとえば、量子化レベルは、整数精度(たとえば、1ピクセル)または分数ペル精度(たとえば、1/4ピクセル、1/2ピクセル、または他のサブピクセル値)であり得る。対応する動きベクトルが分数サンプル精度を有するとき、予測信号を導出するために、補間が参照ピクチャに適用される。たとえば、分数位置における値を推定するために、(たとえば、1つまたは複数の補間フィルタを使用して)整数位置において利用可能なサンプルがフィルタ処理され得る。以前に復号された参照ピクチャは、参照ピクチャリストに対する参照インデックス(refIdx)によって示される。動きベクトルおよび参照インデックスは、動きパラメータと呼ばれることがある。単予測および双予測を含む、2つの種類のピクチャ間予測が実行され得る。
双予測を使用するインター予測を用いると、動きパラメータの2つのセット(Δx0、y0、refIdx0およびΔx1、y1、refIdx1)が、2つの動き補償予測を(同じ参照ピクチャから、または可能性としては異なる参照ピクチャから)生成するのに使用される。たとえば、双予測を用いると、各予測ブロックは、2つの動き補償予測信号を使用し、B個の予測ユニットを生成する。2つの動き補償予測は次いで、最終動き補償予測を得るように組み合わされる。たとえば、2つの動き補償予測は、平均をとることによって組み合わされ得る。別の例では、重み付き予測が使われてよく、その場合、異なる重みが各動き補償予測に適用されてよい。双予測において使われ得る参照ピクチャは、リスト0およびリスト1と記される、2つの別個のリストに記憶される。動き推定プロセスを使って、エンコーダにおいて動きパラメータが導出され得る。
単予測を使用するインター予測を用いると、動きパラメータの1つのセット(Δx0,Δy0, refIdx0)が、参照ピクチャから動き補償予測を生成するために使用される。たとえば、単予測を用いると、各予測ブロックは、多くとも1つの動き補償予測信号を使用し、P個の予測ユニットを生成する。
PUは、予測プロセスに関するデータ(たとえば、動きパラメータまたは他の好適なデータ)を含み得る。たとえば、PUがイントラ予測を使用して符号化されるとき、PUは、PUのイントラ予測モードを記述するデータを含み得る。別の例として、PUがインター予測を使用して符号化されるとき、PUは、PUの動きベクトルを定義するデータを含み得る。PUの動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分(Δx)、動きベクトルの垂直成分(Δy)、動きベクトルの分解能(たとえば、整数精度、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、参照インデックス、動きベクトルの参照ピクチャリスト(たとえば、リスト0、リスト1、もしくはリストC)、またはそれらの任意の組合せを記述し得る。
符号化デバイス104は、次いで、変換および量子化を実行し得る。たとえば、予測に続いて、エンコーダエンジン106は、PUに対応する残差値を計算し得る。残差値は、コーディングされているピクセルの現在ブロック(PU)と現在ブロックを予測するために使用される予測ブロック(たとえば、現在ブロックの予測されたバージョン)との間のピクセル差分値を含み得る。たとえば、(たとえば、インター予測またはイントラ予測を使用して)予測ブロックを生成した後、エンコーダエンジン106は、予測ユニットによって生成された予測ブロックを現在ブロックから減算することによって残差ブロックを生成することができる。残差ブロックは、現在ブロックのピクセル値と予測ブロックのピクセル値との間の差分を定量化するピクセル差分値のセットを含む。いくつかの例では、残差ブロックは、2次元ブロックフォーマット(たとえば、ピクセル値の2次元行列またはアレイ)で表され得る。そのような例では、残差ブロックは、ピクセル値の2次元表現である。
予測が実行された後に残ることがある任意の残差データは、ブロック変換を使用して変換され、ブロック変換は、離散コサイン変換、離散サイン変換、整数変換、ウェーブレット変換、他の好適な変換関数、またはそれらの任意の組合せに基づき得る。場合によっては、1つまたは複数のブロック変換(たとえば、サイズ32×32、16×16、8×8、4×4、または他の好適なサイズ)が、各CUにおける残差データに適用され得る。いくつかの実施形態では、エンコーダエンジン106によって実装される変換プロセスおよび量子化プロセスのためにTUが使用され得る。1つまたは複数のPUを有する所与のCUはまた、1つまたは複数のTUを含み得る。以下でさらに詳細に説明するように、残差値は、ブロック変換を使用して変換係数に変換され得、次いで、TUを使用して量子化および走査されて、エントロピーコーディングのためのシリアル化変換係数を生成し得る。
いくつかの実施形態では、CUのPUを使用するイントラ予測コーディングまたはインター予測コーディングに続いて、エンコーダエンジン106は、CUのTUに対する残差データを計算し得る。PUは、空間領域(またはピクセル領域)におけるピクセルデータを含み得る。TUは、ブロック変換を適用した後の、変換領域における係数を備え得る。前述のように、残差データは、符号化されていないピクチャのピクセルとPUに対応する予測値との間のピクセル差分値に相当し得る。エンコーダエンジン106は、CUに対する残差データを含むTUを形成し得、次いで、TUを変換してCUに対する変換係数を生成し得る。
エンコーダエンジン106は、変換係数の量子化を実行し得る。量子化は、係数を表すために使用されるデータの量を低減するために変換係数を量子化することによって、さらなる圧縮を実現する。たとえば、量子化は、係数の一部または全部に関連付けられたビット深度を低減し得る。一例では、nビット値を有する係数は、量子化中にmビット値に切り捨てられてもよく、nはmよりも大きい。
量子化が実行されると、コーディングされたビデオビットストリームは、量子化された変換係数、予測情報(たとえば、予測モード、動きベクトル、ブロックベクトルなど)、区分情報、および他のシンタックスデータなど、任意の他の適切なデータを含む。コーディングされたビデオビットストリームの様々な要素が、次いで、エンコーダエンジン106によってエントロピー符号化され得る。いくつかの例では、エンコーダエンジン106は、既定の走査順序を利用して量子化変換係数を走査して、エントロピー符号化され得るシリアル化ベクトルを生成し得る。いくつかの例では、エンコーダエンジン106は適応走査を実行し得る。量子化変換係数を走査してベクトル(たとえば、1次元ベクトル)を形成した後、エンコーダエンジン106は、ベクトルをエントロピー符号化し得る。たとえば、エンコーダエンジン106は、コンテキスト適応型可変長コーディング、コンテキスト適応型バイナリ算術コーディング、シンタックスベースコンテキスト適応型バイナリ算術コーディング、確率間隔区分エントロピーコーディング、または別の好適なエントロピー符号化技法を使用してよい。
符号化デバイス104の出力部110は、符号化ビデオビットストリームデータを構成するNALユニットを、通信リンク120を介して受信デバイスの復号デバイス112に送り得る。復号デバイス112の入力部114は、NALユニットを受信し得る。通信リンク120は、ワイヤレスネットワーク、ワイヤードネットワーク、またはワイヤードネットワークとワイヤレスネットワークの組合せによって提供されるチャネルを含み得る。ワイヤレスネットワークは、任意のワイヤレスインターフェースまたはワイヤレスインターフェースの組合せを含んでよく、任意の好適なワイヤレスネットワーク(たとえば、インターネットまたは他のワイドエリアネットワーク、パケットベースネットワーク、WiFi(商標)、無線周波数(RF)、UWB、WiFi-Direct、セルラー、ロングタームエボリューション(LTE)、WiMax(商標)など)を含んでよい。ワイヤードネットワークは、任意のワイヤードインターフェース(たとえば、ファイバー、イーサネット、電力線イーサネット、同軸ケーブルを介したイーサネット、デジタル信号ライン(DSL)など)を含んでよい。ワイヤードネットワークおよび/またはワイヤレスネットワークは、基地局、ルータ、アクセスポイント、ブリッジ、ゲートウェイ、スイッチなどの様々な機器を使用して実装され得る。符号化ビデオビットストリームデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、受信デバイスに送信され得る。
いくつかの例では、符号化デバイス104は、符号化ビデオビットストリームデータをストレージ108に記憶し得る。出力部110は、エンコーダエンジン106から、またはストレージ108から、符号化ビデオビットストリームデータを取り出し得る。ストレージ108は、分散されるかまたは局所的にアクセスされる様々なデータ記憶媒体のうちのいずれかを含み得る。たとえば、ストレージ108は、ハードドライブ、ストレージディスク、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体を含み得る。
復号デバイス112の入力部114は、符号化ビデオビットストリームデータを受信し、ビデオビットストリームデータをデコーダエンジン116に、またはデコーダエンジン116によって後で使用するためにストレージ118に提供し得る。デコーダエンジン116は、エントロピー復号すること(たとえば、エントロピーデコーダを使用して)、および符号化ビデオデータを構成する1つまたは複数のコーディングされたビデオシーケンスの要素を抽出することによって、符号化ビデオビットストリームデータを復号し得る。デコーダエンジン116は、次いで、符号化ビデオビットストリームデータを再スケーリングし得、符号化ビデオビットストリームデータに対して逆変換を実行し得る。残差データが、次いで、デコーダエンジン116の予測ステージに渡される。デコーダエンジン116は、次いで、ピクセルのブロック(たとえば、PU)を予測する。いくつかの例では、逆変換の出力(残差データ)に予測が加算される。
復号デバイス112は、復号ビデオをビデオ宛先デバイス122に出力し得、ビデオ宛先デバイス122は、復号ビデオデータをコンテンツの消費者に表示するためのディスプレイまたは他の出力デバイスを含み得る。いくつかの態様では、ビデオ宛先デバイス122は、復号デバイス112を含む受信デバイスの一部であってよい。いくつかの態様では、ビデオ宛先デバイス122は、受信デバイス以外の別個のデバイスの一部であってよい。
いくつかの実施形態では、ビデオ符号化デバイス104および/またはビデオ復号デバイス112は、それぞれ、オーディオ符号化デバイスおよびオーディオ復号デバイスと統合されてよい。ビデオ符号化デバイス104および/またはビデオ復号デバイス112はまた、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、個別論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなどの、上記で説明したコーディング技法を実装するために必要な他のハードウェアまたはソフトウェアを含んでよい。ビデオ符号化デバイス104およびビデオ復号デバイス112は、複合エンコーダ/デコーダ(コーデック)の一部としてそれぞれのデバイスの中に統合されてよい。場合によっては、符号化デバイス104は、復号デバイス112によって実行されるとして本明細書で論じる特徴を実行し得、その逆も可能である。
図1に示す例示的なシステムは、データを符号化および/または復号するために使用され得る1つの例示的な例である。本明細書で説明する技法を使用してビデオデータを処理するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。一般に、本開示の技法はビデオ符号化デバイスまたはビデオ復号デバイスによって実行されるが、技法はまた、通常は「コーデック」と呼ばれる複合ビデオエンコーダデコーダによって実行され得る。さらに、本開示の技法はまた、ビデオプリプロセッサによって実行され得る。ソースデバイスおよび受信デバイスは、ソースデバイスが受信デバイスに送信するためのコーディングされたビデオデータを生成する、そのようなコーディングデバイスの例にすぎない。いくつかの例では、ソースデバイスおよび受信デバイスは、デバイスの各々がビデオ符号化および復号構成要素を含むように、実質的に対称的に動作し得る。したがって、例示的なシステムは、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのために、ビデオデバイス間の一方向または双方向のビデオ送信をサポートし得る。
場合によっては、データは、機械学習ベースのシステムを使用して(たとえば、1つまたは複数のニューラルネットワークを使用して)符号化および/または復号され得る。図2は、ビデオデータのイントラコーディングされたフレーム(Iフレームとも呼ばれる)の符号化および復号を示す概念図200である。オートエンコーダ260を備えたコーデックシステム295が示されている。オートエンコーダ260は、入力フレーム220(v)を受信する。オートエンコーダ260は、エンコーダ250とデコーダ255とを含む。エンコーダ250は、入力フレーム220(v)を符号化して、符号化フレームデータ285(ve)を生成し得る。デコーダ255は、再構成された入力フレーム280
を生成するために、符号化フレームデータ285(ve)を復号し得る。再構成された入力フレーム280
は、入力フレーム220(v)の再構成および/または復号されたバージョンである。
図2の符号化フレームデータ285(ve)は、Iフレームまたはイントラコーディングされたフレームと呼ばれることもある、ビデオデータのイントラコーディングされたフレームである。下付き文字「e」(符号化フレームデータ285veにあるような)は、本明細書で、エンコーダ250など、エンコーダによって符号化されている符号化データを指すために使用される。空間圧縮としても知られる、フレーム内コーディングは、静止画像圧縮技法を使用してビデオの個々のビデオフレームを圧縮することを指す。Iフレームとして、符号化フレームデータ285(ve)はフレームデータを記憶し、デコーダ255は、フレームデータを介して、いずれの他のフレームも参照せずに、入力フレーム220(v)全体を再構成された入力フレーム280
に再構成し得る。エンコーダ250は、フレーム内コーディングを使用して、符号化フレームデータ285(ve)を生成し得る。いくつかの例では、エンコーダ250は、1つまたは複数のAIアルゴリズム、1つまたは複数のMLモデル、および/または1つまたは複数のトレーニングされたNNを使用して、入力フレーム220(v)に基づいて符号化フレームデータ285(ve)を符号化し得る。いくつかの例では、符号化フレームデータ285(ve)は、入力フレーム220(v)の潜在空間表現であり得る。いくつかの例では、デコーダ255は、1つまたは複数のAIアルゴリズム、1つまたは複数のトレーニングされたMLモデル、および/または1つまたは複数のトレーニングされたNNを使用して、符号化フレームデータ285(ve)に基づいて、再構成された入力フレーム280
を再構成し得る。
いくつかの例では、エンコーダ250は、可逆圧縮を使用して符号化フレームデータ285(ve)を生成する。エンコーダ250が可逆圧縮を使用して符号化フレームデータ285(ve)を生成する例では、再構成された入力フレーム280
は、入力フレーム220(v)と同一であり得る。いくつかの例では、エンコーダ250は、不可逆圧縮を使用して符号化フレームデータ285(ve)を生成する。エンコーダ250が不可逆圧縮を使用して符号化フレームデータ285(ve)を生成する例では、再構成された入力フレーム280
は、入力フレーム220(v)と同様であり得る。エンコーダ250が不可逆圧縮を使用して符号化フレームデータ285(ve)を生成する例では、再構成された入力フレーム280
は、入力フレーム220(v)と比較して何らかの差異を含み得る。文字上のハットは(再構成された入力フレーム280
にあるような)は、本明細書で、デコーダ255など、デコーダの助けで復号および/または再構成されている、再構成されたデータを指すために使用される。
いくつかの例では、エンコーダ250は、入力フレーム220(v)に対してかつ/またはそのブロックに対して変換コーディングを実行する変換コーダを含む。いくつかの例では、変換コーディングは、離散コサイン変換(DCT)、修正離散コサイン変換(MDCT)、離散サイン変換(DST)、高速フーリエ変換(FFT)、ウェーブレット変換、またはそれらの組合せを含み得る。いくつかの例では、エンコーダ250は、場合によっては変換コーディングに続いて、入力フレーム220(v)に対してかつ/またはそのブロックに対して量子化を実行する量子化器を含む。量子化中にエンコーダ250の量子化器によって実行される量子化の程度は、量子化パラメータ(QP)に基づいてよく、QPを調整することによって修正され得る。QPは、量子化中の入力フレーム220(v)に対する量子化ステップサイズを示すことができ、量子化後にキャプチャされた画像からどれだけの空間詳細が保持されるかを制御し得る。いくつかの例では、エンコーダ250は、場合によっては、変換コーディングおよび/または量子化に続いて、エントロピーコーディングを実行するエントロピーエンコーダを含む。エントロピーコーディングは、たとえば、コンテキスト適応型二値算術コーディング(CABAC:context-adaptive binary arithmetic coding)、算術コーディング、ゴロムコーディング、ハフマンコーディング、レンジコーディング、シャノンコーディング、シャノン-ファノコーディング、シャノン-ファノ-イライアスコーディング、タンストールコーディング、単項コーディング、ユニバーサルコーディング(universal coding)、またはそれらの組合せを含み得る。
いくつかの例では、デコーダ255は、符号化フレームデータ285(ve)に対してかつ/またはそのブロックに対して逆量子化を実行する逆量子化器を含む。いくつかの例では、デコーダ255は、場合によっては逆量子化に続いて、符号化フレームデータ285(ve)に対してかつ/またはそのブロックに対して逆変換を実行する逆変換コーダを含む。
図3Aは、2次元(2D)オプティカルフローおよび2Dワーピングを使用したビデオデータのインターコーディングされたフレームの符号化および復号を示す概念図300である。Warp2Dエンジン310Aと、OptFlow2Dエンジン325と、オートエンコーダ360とを備えたコーデックシステム395Aが示されている。オートエンコーダ360は、エンコーダ350とデコーダ355とを含む。コーデックシステム395Aは参照フレーム305
および入力フレーム320(v)を受信する。コーデックシステム395Aは、入力フレーム320(v)に対応するデータを符号化する符号化フレームデータ385(ve)を生成および/または出力し得る。図3Aの符号化フレームデータ385(ve)は、インターコーディングされたフレームである。時間圧縮としても知られる、フレーム間コーディングは、ビデオ内の1つまたは複数の他のフレームからのフレーム内の冗長性を参照することによって、ビデオ内のフレームを圧縮することを指す。インターコーディングされたフレームは、Pフレーム、予測フレーム、Bフレーム、双方向予測フレーム、またはそれらの組合せを指すことがある。符号化フレームデータ385(ve)の場合、入力フレーム320(v)は、少なくとも参照フレーム305
からの入力フレーム320(v)内の冗長性を参照することによって、符号化および/または圧縮される。コーデックシステム395Aは、参照フレーム305
内のデータおよび符号化フレームデータ385(ve)に基づいて符号化フレームデータ385(ve)を復号して、再構成された入力フレーム380
を生成し得る。
いくつかの例では、参照フレーム305
は第1の時間におけるシーンを示し、入力フレーム320(v)は第2の時間における同じシーンを示す。第1の時間は第2の時間の前であってよく、その場合、参照フレーム305
は、ビデオ内で入力フレーム320(v)の前に配置される。第1の時間は第2の時間の後であってよく、その場合、参照フレーム305
は、ビデオ内で入力フレーム320(v)の後に配置される。参照フレーム305
はイントラコーディングされたフレームであり得る。ハット記号によって示唆されるように、参照フレーム305
は、図2の再構成された入力フレーム280
など、再構成されたフレームであり得る。
OptFlow2Dエンジン325は、参照フレーム305
および入力フレーム320(v)を受信する。OptFlow2Dエンジン325は、参照フレーム305
および入力フレーム320(v)に基づいて、2Dオプティカルフロー330(f2D)を生成する。OptFlow2Dエンジン325は、2Dオプティカルフロー330(f2D)を含み得る、かつ/または1つまたは複数のAIアルゴリズム、1つまたは複数のトレーニングされたMLモデル、1つまたは複数のトレーニングされたNN、またはそれらの組合せを使用して、2Dオプティカルフロー330(f2D)を生成し得る。OptFlow2Dエンジン325は、図8のニューラルネットワーク(NN)800などのNN、図9の畳み込みニューラルネットワーク(CNN)900などのCNN、ディープCNN、全結合層を備えたNN、全結合層を備えたCNN、全結合層を備えたディープCNN、別のタイプのNN、またはそれらの組合せを使用し得る。OptFlow2Dエンジン325は、FlowNet1.0、FlowNet2.0、FlowNetSimple、FlowNetCorr、FlowNetS、FlowNetLite、別のオプティカルフロー推定方法、またはそれらの組合せを使用し得る。
OptFlow2Dエンジン325は、参照フレーム305
を入力フレーム320(v)と比較する。OptFlow2Dエンジン325は、参照フレーム305
と入力フレーム320(v)との間で変化しない不変エリアを識別し得る。OptFlow2Dエンジン325は、参照フレーム305
と入力フレーム320(v)の両方の中に存在するが、参照フレーム305
と入力フレーム320(v)との間で移動する、移動したエリアを識別し得る。
1つの例示的な例では、参照フレーム305
および入力フレーム320(v)は、静止状態の不変背景の前面を歩く人物のシーンを示し得る。この例示的な例では、OptFlow2Dエンジン325は、参照フレーム305
および入力フレーム320(v)の中の静止状態の不変背景の図が不変エリアを表すことを識別し得る。この例示的な例では、OptFlow2Dエンジン325は、参照フレーム305
および入力フレーム320(v)の中の人物の図が移動エリアを表すことを識別し得る。
OptFlow2Dエンジン325によって生成される2Dオプティカルフロー330(f2D)は、移動エリアに対応する参照フレーム305
内の1つまたは複数のピクセルのセットの各々に対して、動きベクトルを識別し得る。いくつかの例では、2Dオプティカルフロー330(f2D)は、参照フレーム305
のすべてのピクセルに対する動きベクトルを識別し得る。各動きベクトルは、ピクセルによって示される要素が参照フレーム305
と入力フレーム320(v)との間を移動する方向および/または距離を識別し得る。方向は、参照フレーム305
の2D画像平面に沿った方向であってよい。距離は、参照フレーム305
の2D画像平面に沿った距離であってよい。距離は、線形距離、ユークリッド距離、またはそれらの組合せであってよい。2D画像平面は、2つの直交する寸法を有し得る。いくつかの例では、2つの直交する寸法は、それぞれ、水平寸法(x)および垂直寸法(y)と呼ばれる。距離は、動きベクトルの振幅(amplitude)と呼ばれることがある。不変エリアでは、2Dオプティカルフロー330(f2D)は、0の距離または振幅を識別し得る。
密なオプティカルフローは、ビデオフレームのすべてのピクセルに対する動きベクトルを提供する。2Dオプティカルフロー330(f2D)は、密なオプティカルフローであり得る。スパースなオプティカルフローは、シーン内の視覚的特徴(たとえば、隅角、縁部、隆起、および/または塊)を表すピクセルなど、ビデオフレームのピクセルのサブセットに対する動きベクトルを提供する。2Dオプティカルフロー330(f2D)は、スパースなオプティカルフローであり得る。
いくつかの例では、2Dオプティカルフロー330(f2D)は、OptFlow2Dエンジン325によってオプティカルフロー画像として生成される。いくつかの例では、オプティカルフロー画像は、オプティカルフロー画像内の対応するピクセルの色相に基づいて、参照フレーム305
内のピクセルに対する動きベクトルの方向を識別する。いくつかの例では、オプティカルフロー画像は、オプティカルフロー画像内の対応するピクセルの飽和またはクロマに基づいて、参照フレーム305
内のピクセルに対する動きベクトルの距離(または振幅)を識別する。1つの例示的な例では、シアンは左方向を表し、青は斜め左上方向を表し、紫は上方向を表し、フクシアは斜め右上方向を表し、赤は右方向を表し、オレンジは斜め右下方向を表し、黄色は下方向を表し、緑は斜め左下方向を表し、列挙した色のいずれか2つの間のいずれかの色はそれらの2つの色に対応する2つの方向間の方向を表す。1つの例示的な例では、白は0の動きベクトル振幅を表し、より高い飽和またはクロマ値はより高い動きベクトル振幅を表す。この色相および飽和コーディング方式を使用するオプティカルフロー画像の一例は、図5の2Dフロー515として示されている。
コーデックシステム395Aのオートエンコーダ360のエンコーダ350は、OptFlow2Dエンジン325によって生成された2Dオプティカルフロー330(f2D)を符号化して、符号化フレームデータ385(ve)の部分であり得る符号化2Dオプティカルフロー(f2D_e)を生成し得る。コーデックシステム395Aのオートエンコーダ360のデコーダ355は、符号化2Dオプティカルフロー(f2D_e)を復号または再構成して、再構成された2Dオプティカルフロー335
を生成し得る。デコーダ355は、再構成された2Dオプティカルフロー335
をコーデックシステム395AのWarp2Dエンジン310Aに渡し得る。
コーデックシステム395AのWarp2Dエンジン310Aは、参照フレーム305
および再構成された2Dオプティカルフロー335
を受信し得る。コーデックシステム395AのWarp2Dエンジン310Aは、再構成された2Dオプティカルフロー335
内の動きベクトルに基づいて、参照フレーム305
をワーピングすることによって、予測フレーム315A
を生成し得る。予測フレーム315A
は、再構成された2Dオプティカルフロー335
に基づく入力フレーム320(v)の予測を表す。たとえば、再構成された2Dオプティカルフロー335
内の不変エリア(たとえば、0振幅を有するエリア)は、参照フレーム305
内にあるため、予測フレーム315A
内で同じ状態に留まる。再構成された2Dオプティカルフロー335
内の移動エリア(たとえば、非0振幅を有するエリア)は、再構成された2Dオプティカルフロー335
内のそれらのそれぞれの動きベクトルの方向および振幅に基づいて、参照フレーム305
内のそれらの位置から予測フレーム315A
内のそれらの新しい位置に移動している。文字の上の波形符号(予測フレーム315A
内にあるような)は、本明細書で、オプティカルフローに従って参照データをワーピングすることによって、Warp2Dエンジン310Aなどのワープエンジンによって生成される予測データを指すために使用される。Warp2Dエンジン310Aは、予測フレーム315A
をコーデックシステム395Aの減算器365に、かつ/またはコーデックシステム395Aの加算器375に渡し得る。
コーデックシステム395Aの減算器365は、予測フレーム315A
および入力フレーム320(v)を受信し得る。コーデックシステム395Aの減算器365は、予測フレーム315A
を入力フレーム320(v)から減算することによって残差340(r)を生成し得、またはその逆も可能である。残差は、2つのフレーム間の差異、または誤差を識別し得る。残差340(r)は、したがって、入力フレーム320(v)と予測フレーム315A
との間の1つまたは複数の差異を識別し得る。コーデックシステム395Aのオートエンコーダ360のエンコーダ350は、減算器365によって生成された残差340(r)を符号化して、符号化フレームデータ385(ve)の部分であり得る符号化残差(re)を生成し得る。コーデックシステム395Aのオートエンコーダ360のデコーダ355は、符号化残差(re)を復号または再構成して、再構成された残差345
を生成し得る。デコーダ355は、再構成された残差345
をコーデックシステム395Aの加算器375に渡し得る。
コーデックシステム395Aの加算器375は、予測フレーム315A
および再構成された残差345
を受信し得る。コーデックシステム395Aの加算器375は、再構成された残差345
を予測フレーム315A
に加算することによって、再構成された入力フレーム380
を生成し得、またはその逆も可能である。再構成された入力フレーム380
は、入力フレーム320(v)を可能な限り近く再構成することを試みる、符号化フレームデータ385(ve)の再構成および/または復号されたバージョンである。
いくつかの例では、エンコーダ350は、可逆圧縮を使用して符号化フレームデータ385(ve)を生成する。エンコーダ350が可逆性圧縮を使用して符号化フレームデータ385(ve)を生成する例では、再構成された入力フレーム380
は、入力フレーム320(v)のビデオデータのすべてを含んでよく、再構成された2Dオプティカルフロー335
は、2Dオプティカルフロー330(f2D)のオプティカルフローデータのすべてを含んでよく、かつ/または再構成された残差345
は、残差340(r)の残差データのすべてを含んでよい。エンコーダ350が不可逆圧縮を使用して符号化フレームデータ385(ve)を生成する例では、再構成された入力フレーム380
は、入力フレーム320(v)のビデオデータと同様のビデオデータを含んでよく、再構成された2Dオプティカルフロー335
は、2Dオプティカルフロー330(f2D)のオプティカルフローデータと同様のオプティカルフローデータを含んでよく、かつ/または再構成された残差345
は、残差340(r)の残差データと同様の残差データを含んでよい。エンコーダ350が不可逆圧縮を使用して符号化フレームデータ385(ve)を生成する例では、再構成された入力フレーム380
は、入力フレーム320(v)のビデオデータと比較してビデオデータ内に1つまたは複数の差異を含んでよく、再構成された2Dオプティカルフロー335
は、2Dオプティカルフロー330(f2D)のオプティカルフローデータと比較してオプティカルフローデータ内に1つまたは複数の差異を含んでよく、かつ/または再構成された残差345
は、残差340(r)の残差データと比較して残差データ内に1つまたは複数の差異を含んでよい。
いくつかの例では、エンコーダ350は、入力フレーム320(v)に対してかつ/またはそのブロックに対して変換コーディングを実行する変換コーダを含む。いくつかの例では、変換コーディングは、入力フレーム320(v)に加えて、残差340(r)に基づいてよい。いくつかの例では、変換コーディングは、離散コサイン変換(DCT)、修正離散コサイン変換(MDCT)、離散サイン変換(DST)、高速フーリエ変換(FFT)、ウェーブレット変換、またはそれらの組合せを含み得る。いくつかの例では、エンコーダ350は、場合によっては、変換コーディングに続いて、入力フレーム320(v)および/またはそのブロックに対して量子化を実行する量子化器を含む。量子化中にエンコーダ350の量子化器によって実行される量子化の程度は、量子化パラメータ(QP)に基づいてよく、QPを調整することによって修正され得る。QPは、量子化中の入力フレーム320(v)の量子化ステップサイズを示すことができ、量子化後にキャプチャされた画像からどれだけの空間詳細が保持されるかを制御し得る。いくつかの例では、エンコーダ350は、場合によっては、変換コーディングおよび/または量子化に続いて、エントロピーコーディングを実行するエントロピーエンコーダを含む。エントロピーコーディングは、たとえば、コンテキスト適応型二値算術コーディング(CABAC)、算術コーディング、ゴロムコーディング、ハフマンコーディング、レンジコーディング、シャノンコーディング、シャノン-ファノコーディング、シャノン-ファノ-イライアスコーディング、タンストールコーディング、単項コーディング、ユニバーサルコーディング、またはそれらの組合せを含み得る。
いくつかの例では、デコーダ355は、符号化フレームデータ385(ve)に対してかつ/またはそのブロックに対して逆量子化を実行する逆量子化器を含む。いくつかの例では、デコーダ355は、場合によっては逆量子化に続いて、符号化フレームデータ385(ve)に対してかつ/またはそのブロックに対して逆変換を実行する逆変換コーダを含む。
いくつかの例では、コーデックシステム395Aのオートエンコーダ360は、2つ以上のオートエンコーダにスプリットされ得る。例示的な例では、コーデックシステム395Aのオートエンコーダ360は、第1のオートエンコーダと第2のオートエンコーダとを含み得る。第1のオートエンコーダは、2Dオプティカルフロー330(f2D)を受信し、再構成された2Dオプティカルフロー335
を出力する。第1のオートエンコーダのエンコーダは、符号化フレームデータ385(ve)の第1の部分を出力し得る。第2のオートエンコーダは、残差340(r)を受信し、再構成された残差345
を出力する。第2のオートエンコーダのエンコーダは、符号化フレームデータ385(ve)の第2の部分を出力し得る。
図3Bは、2次元(2D)オプティカルフローおよび2Dワーピングを使用したビデオデータのインターコーディングされたフレームの符号化および復号を示す概念図390である。Warp2Dエンジン310Bと、Warp2Dエンジン310Cと、OptFlow2Dエンジン325と、オートエンコーダ360とを備えたコーデックシステム395Bが示されている。図3Bのコーデックシステム395Bは、図3Aのコーデックシステム395Aと同様であるが、図3Aのコーデックシステム395AのWarp2Dエンジン310Aの代わりに、Warp2Dエンジン310BとWarp2Dエンジン310Cとを含む。
コーデックシステム395BのWarp2Dエンジン310Cは、参照フレーム305
および2Dオプティカルフロー330(f2D)を受信し得る。コーデックシステム395BのWarp2Dエンジン310Cは、オプティカルフロー330(f2D)内の動きベクトルに基づいて、参照フレーム305
をワーピングすることによって、予測フレーム315C
を生成し得る。予測フレーム315C
は、オプティカルフロー330(f2D)に基づく入力フレーム320(v)の予測を表す。図3Bの予測フレーム315C
は、図3Aの予測フレーム315A
とは異なり得るが、それは、図3Bの予測フレーム315C
はオプティカルフロー330(f2D)を使用して生成されるが、図3Aの予測フレーム315A
は、再構成されたオプティカルフロー335
を使用して生成されるためである。Warp2Dエンジン310Cは、予測フレーム315C
をコーデックシステム395Bの減算器365に渡し得る。コーデックシステム395Bの減算器365は、予測フレーム315C
および入力フレーム320(v)を受信し得る。コーデックシステム395Bの減算器365は、予測フレーム315C
を入力フレーム320(v)から減算することによって、残差340(r)を生成し得、またはその逆も可能である。図3Bの予測フレーム315C
は、図3Aの予測フレーム315A
とは異なり得るため、図3Bの残差340(r)も図3Aの残差340(r)とは異なり得る。
コーデックシステム395BのWarp2Dエンジン310Bは、コーデックシステム395AのWarp2Dエンジン310Aとさらに同様に、参照フレーム305
および再構成された2Dオプティカルフロー335
を受信し得る。コーデックシステム395BのWarp2Dエンジン310Bは、再構成された2Dオプティカルフロー335
内の動きベクトルに基づいて、参照フレーム305
をワーピングすることによって、予測フレーム315B
を生成し得る。予測フレーム315B
は、再構成された2Dオプティカルフロー335
に基づく入力フレーム320(v)の予測を表す。予測フレーム315B
は予測フレーム315C
とは異なり得るが、これは、予測フレーム315B
は再構成された2Dオプティカルフロー335
を使用して生成されるが、予測フレーム315C
はオプティカルフロー330(f2D)を使用して生成されるためである。Warp2Dエンジン310Bは、予測フレーム315B
をコーデックシステム395Bの加算器375に渡し得る。コーデックシステム395Bの加算器375は、予測フレーム315B
および再構成された残差345
を受信し得る。コーデックシステム395Bの加算器375は、再構成された残差345
を予測フレーム315B
に加算することによって、再構成された入力フレーム380
を生成し得、またはその逆も可能である。再構成された入力フレーム380
は、入力フレーム320(v)を可能な限り近く再構成することを試みる、符号化フレームデータ385(ve)の再構成および/または復号されたバージョンである。いくつかの例では、Warp2Dエンジン310Cは、予測フレーム315C
(2Dオプティカルフロー330f2Dに基づく)が予測フレーム315B
(再構成された2Dオプティカルフロー335
に基づく)の代わりに、加算器375に送られるように、Warp2Dエンジン310Bの代わりに使用され得る。
いくつかの例では、コーデックシステム395Bのオートエンコーダ360は、2つ以上のオートエンコーダにスプリットされ得る。例示的な例では、コーデックシステム395Aのオートエンコーダ360は、第1のオートエンコーダと第2のオートエンコーダとを含み得る。第1のオートエンコーダは2Dオプティカルフロー330(f2D)を受信し、再構成された2Dオプティカルフロー335
を出力する。第1のオートエンコーダのエンコーダは、符号化フレームデータ385(ve)の第1の部分を出力し得る。第2のオートエンコーダは、残差340(r)を受信し、再構成された残差345
を出力する。第2のオートエンコーダのエンコーダは、符号化フレームデータ385(ve)の第2の部分を出力し得る。
図4Aは、マルチスケール(MS)オプティカルフローおよびMSワーピングを使用したビデオデータのインターコーディングされたフレームの符号化および復号を示す概念図400である。WarpMSエンジン410Aと、OptFlowMSエンジン425と、オートエンコーダ460とを備えたコーデックシステム495Aが示されている。オートエンコーダ460は、エンコーダ450とデコーダ455とを含む。図4Aのコーデックシステム495Aは、図3Aのコーデックシステム395Aと同様のアーキテクチャを含むが、Warp2Dエンジン310AはWarpMSエンジン410Aに置換され、OptFlow2Dエンジン325はOptFlowMSエンジン425に置換されている。
コーデックシステム495Aは、参照フレーム405
および入力フレーム420(v)を受信する。参照フレーム305
および入力フレーム320(v)のように、参照フレーム405
および入力フレーム420(v)は、異なる時間における同じシーンを示し得る。参照フレーム405
は、イントラコーディングされたフレームであってよい。
OptFlowMSエンジン425は、参照フレーム405
および入力フレーム420(v)受信する。OptFlowMSエンジン425は、参照フレーム405
および入力フレーム420(v)に基づいて、MSオプティカルフロー430(fMS)を生成する。OptFlowMSエンジン425は、MSオプティカルフロー430(fMS)を含み得るか、および/あるいは1つまたは複数のAIアルゴリズム、1つまたは複数のトレーニングされたMLモデル、1つまたは複数のトレーニングされたNN、またはそれらの組合せを使用してMSオプティカルフロー430(fMS)を生成し得る。OptFlowMSエンジン425は、図8のニューラルネットワーク(NN)800などのNN、図9の畳み込みニューラルネットワーク(CNN)900などのCNN、ディープCNN、全結合層を備えたNN、全結合層を備えたCNN、全結合層を備えたディープCNN、別のタイプのNN、またはそれらの組合せを使用し得る。
MSオプティカルフロー430(fMS)を生成するために、OptFlowMSエンジン425は、2Dオプティカルフロー(2Dオプティカルフロー330fMSに関して論じたような)ならびに第3の寸法を表す重みマップを生成し得る。重みはz寸法と呼ばれることがある。MSオプティカルフロー430(fMS)の2Dオプティカルフロー成分は、x寸法およびy寸法に関するフローと呼ばれることがあり、fxyと書かれてよい。MSオプティカルフロー430(fMS)の重みマップ成分は、z寸法に関するフローと呼ばれることがあり、fzと書かれてよい。MSオプティカルフロー430(fMS)の2Dオプティカルフロー成分(fxy)を生成するために、OptFlowMSエンジン425は、マルチスケールフローを生成するように修正された、2Dオプティカルフロー330(f2D)に関して本明細書で論じる任意のシステムおよび技法を使用し得る。たとえば、OptFlowMSエンジン425は、FlowNet1.0、FlowNet2.0、FlowNetSimple、FlowNetCorr、FlowNetS、FlowNetLite、別のオプティカルフロー推定方法、またはそれらの組合せなどの技法の修正された(マルチスケールフローのために修正された)バージョンを使用し得る。MSオプティカルフロー430(fMS)の重みマップ成分(fz)は、参照フレーム405
の各ピクセルに対応する、かつ/またはMSオプティカルフロー430(fMS)の2Dオプティカルフロー成分(fxy)の各ピクセルに対応する、重み値を含み得る。
MSオプティカルフロー430(fMS)の重みマップ成分(fz)は、MSオプティカルフロー430(fMS)の2Dオプティカルフロー成分(fxy)のオプティカルフロー推定における不確実性に対する確実性のスケールを識別し得る。場合によっては、確実性は、信頼性と呼ばれることがある。参照フレーム405
内の異なるピクセルは、重みマップ内の(たとえば、0から1の)所定の範囲内の異なる重み値に対応し得る。MSオプティカルフロー430(fMS)の重みマップ成分の一例は、図5の重みマップ530(fz)として、また図6の重みマップ630(fz)として示されている。図5の例示的な重みマップ530(fz)および図6の例示的な重みマップ630(fz)では、黒は0の重み値に対応し、白は1の重み値に対応し、黒と白との間のグレーのシェードは、0と1との間の重み値に対応する。いくつかの例では、重みマップ内のより低い重み値(たとえば、所定の重みしきい値よりも低い)は、オプティカルフロー推定におけるより高い確実度(たとえば、所定の確実性しきい値よりも高い)に、かつ/またはオプティカルフロー推定におけるより低い不確実度(たとえば、所定の不確実性しきい値よりも低い)に対応する。いくつかの例では、重みマップ内のより高い重み値(たとえば、所定の重みしきい値よりも高い)は、オプティカルフロー推定におけるより低い確実度(たとえば、所定の確実性しきい値よりも低い)に、かつ/またはオプティカルフロー推定のより高い不確実度(たとえば、所定の不確実性しきい値よりも高い)に対応する。いくつかの例では、重み値は、確実性値および/または不確実性値に対して相反関係を有し得る。いくつかの例では、重みマップは、重み値とグレーのシェードとの間の相反関係を使用してよく、白は1の重み値に対応し、黒は0の重み値に対応する。
コーデックシステム495Aのオートエンコーダ460のエンコーダ450は、OptFlowMSエンジン425によって生成されたMSオプティカルフロー430(fMS)を符号化して、符号化フレームデータ485(ve)の部分であり得る符号化MSオプティカルフロー(fMS_e)を生成し得る。コーデックシステム495Aのオートエンコーダ460のデコーダ455は、符号化MSオプティカルフロー(fMS_e)を復号または再構成して、再構成されたMSオプティカルフロー435
を生成し得る。デコーダ455は、再構成されたMSオプティカルフロー435
をコーデックシステム495AのWarpMSエンジン410Aに渡し得る。
コーデックシステム495AのWarpMSエンジン410Aは、参照フレーム405
および再構成されたMSオプティカルフロー435
を受信し得る。コーデックシステム495AのWarpMSエンジン410Aは、再構成されたMSオプティカルフロー435
の再構成された2Dオプティカルフロー成分
内の動きベクトルに基づいて、かつ再構成されたMSオプティカルフロー435
の再構成された重みマップ成分
内の重み値に基づいて、参照フレーム405
をワーピングすることによって、予測フレーム415A
を生成し得る。予測フレーム415A
は、再構成されたMSオプティカルフロー435
に基づく入力フレーム420(v)の予測を表す。WarpMSエンジン410Aは、予測フレーム415A
をコーデックシステム495Aの減算器465に、かつ/またはコーデックシステム495Aの加算器475に渡し得る。
MSオプティカルフロー430(fMS)の重みマップ成分(fz)は、参照フレーム405
が、入力フレーム420(v)を予測する予測フレーム415A
を生成するためにワーピングされるべきスケールの細かさまたは粗さを識別し得る。いくつかの例では、重みマップ内のより低い重み値(たとえば、所定の重みしきい値よりも低い)は、より細かい詳細レベルの参照フレーム405
の対応する部分のワーピングに対応する。いくつかの例では、重みマップ内のより高い重み値(たとえば、所定の重みしきい値よりも高い)は、より粗い詳細レベルを使用した参照フレーム405
の対応する部分のワーピングに対応する。いくつかの例では、重み値は、ワーピングの細かさおよび/または粗さに対して相反関係を有し得る。より細かい詳細レベルで、コーデックシステム495AのWarpMSエンジン410Aは、参照フレーム405
の元のサイズ(たとえば、寸法および/または解像度)、または参照フレーム405
の若干ダウンスケーリングされたバリアント(たとえば、元のサイズの半分)で、参照フレーム405
をワーピングし得る。より粗い詳細レベルで、コーデックシステム495AのWarpMSエンジン410Aは、参照フレーム405
のより著しくダウンスケーリングされた(たとえば、元のサイズの1/4、元のサイズの1/8、元のサイズの1/16、元のサイズの1/32、元のサイズの1/64、元のサイズの1/128、元のサイズの1/256、元のサイズの512、さらによりダウンスケーリングされたサイズ、または前に列挙したサイズのうちのいずれか2つの間のサイズの)バリアントをワーピングし得る。参照フレーム405
のワーピング領域は、アップスケーリングされて参照フレーム405
の元のサイズに戻され、重みマップに対応する重みに基づいて一緒にマージされてよい。予測フレーム415A
を生成するためのコーデックシステム495AのWarpMSエンジン410Aによる再構成されたMSオプティカルフロー435
に基づく参照フレーム405
のワーピングの一例が図5に示されている。
コーデックシステム495Aの減算器465は、予測フレーム415A
および入力フレーム420(v)を受信し得る。コーデックシステム495Aの減算器465は、予測フレーム415A
を入力フレーム420(v)から減算することによって残差440(r)を生成し得、またはその逆も可能である。残差440(r)は、したがって、入力フレーム420(v)と予測フレーム415A
との間の1つまたは複数の差異を識別する。図4Aの予測フレーム415A
は図3Aの予測フレーム315A
とは異なり得るため、図4Aの残差440(r)も図3Aの残差340(r)とは異なり得る。
コーデックシステム495Aのオートエンコーダ460のエンコーダ450は、減算器465によって生成された残差440(r)を符号化して、符号化フレームデータ485(ve)の部分であり得る符号化残差(re)を生成し得る。コーデックシステム495Aのオートエンコーダ460のデコーダ455は、符号化残差(re)を復号または再構成して、再構成された残差445
を生成し得る。デコーダ455は、再構成された残差445
をコーデックシステム495Aの加算器475に渡し得る。
コーデックシステム495Aの加算器475は、予測フレーム415A
および再構成された残差445
を受信し得る。コーデックシステム495Aの加算器475は、再構成された残差445
を予測フレーム415A
に加算することによって、再構成された入力フレーム480
を生成し得、またはその逆も可能である。再構成された入力フレーム480
は、入力フレーム420(v)を可能な限り近く再構成することを試みる符号化フレームデータ485(ve)の再構成および/または復号されたバージョンである。
コーデックシステム495Aは、入力フレーム420(v)に対応するデータを符号化する符号化フレームデータ485(ve)を生成および/または出力し得る。図4Aの符号化フレームデータ485(ve)は、Pフレームおよび/またはBフレームなど、インターコーディングされたフレームである。符号化フレームデータ485(ve)は、たとえば、符号化残差(re)および/または符号化MSオプティカルフロー(fMS_e)を含み得る。
いくつかの例では、エンコーダ450は、可逆圧縮を使用して符号化フレームデータ485(ve)を生成し得る。エンコーダ450が可逆圧縮を使用して符号化フレームデータ485(ve)を生成する例では、再構成された入力フレーム480
は、入力フレーム420(v)のビデオデータのすべてを含んでよく、再構成されたMSオプティカルフロー435
は、MSオプティカルフロー430(fMS)のオプティカルフローデータのすべてを含んでよく、かつ/または再構成された残差445
は、残差440(r)の残差データのすべてを含んでよい。エンコーダ450が不可逆圧縮を使用して符号化フレームデータ485(ve)を生成する例では、再構成された入力フレーム480
は、入力フレーム420(v)のビデオデータと同様のビデオデータを含んでよく、再構成されたMSオプティカルフロー435
は、MSオプティカルフロー430(fMS)のオプティカルフローデータと同様のオプティカルフローデータを含んでよく、かつ/または再構成された残差445
は、残差440(r)の残差データと同様の残差データを含んでよい。エンコーダ450が不可逆圧縮を使用して符号化フレームデータ485(ve)を生成する例では、再構成された入力フレーム480
は、入力フレーム420(v)のビデオデータと比較してビデオデータ内に1つまたは複数の差異を含んでよく、再構成されたMSオプティカルフロー435
は、MSオプティカルフロー430(fMS)のオプティカルフローデータと比較してオプティカルフローデータ内に1つまたは複数の差異を含んでよく、かつ/または再構成された残差445
は、残差440(r)の残差データと比較して残差データ内に1つまたは複数の差異を含んでよい。
いくつかの例では、エンコーダ450は、入力フレーム420(v)に対してかつ/またはそのブロックに対して変換コーディングを実行する変換コーダを含む。いくつかの例では、変換コーディングは、入力フレーム420(v)に加えて、残差440(r)に基づいてよい。いくつかの例では、変換コーディングは、離散コサイン変換(DCT)、修正離散コサイン変換(MDCT)、離散サイン変換(DST)、高速フーリエ変換(FFT)、ウェーブレット変換、またはそれらの組合せを含み得る。いくつかの例では、エンコーダ450は、場合によっては、変換コーディングに続いて、入力フレーム420(v)に対してかつ/またはそのブロックに対して量子化を実行する量子化器を含む。量子化中にエンコーダ450の量子化器によって実行される量子化の程度は、量子化パラメータ(QP)に基づいてよく、QPを調整することによって修正され得る。QPは、量子化中の入力フレーム420(v)に対する量子化ステップサイズを示すことができ、量子化後にキャプチャされた画像からどれだけの空間詳細が保持されるかを制御し得る。いくつかの例では、エンコーダ450は、場合によっては、変換コーディングおよび/または量子化に続いて、エントロピーコーディングを実行するエントロピーエンコーダを含む。エントロピーコーディングは、たとえば、コンテキスト適応型二値算術コーディング(CABAC)、算術コーディング、ゴロムコーディング、ハフマンコーディング、レンジコーディング、シャノンコーディング、シャノン-ファノコーディング、シャノン-ファノ-イライアスコーディング、タンストールコーディング、単項コーディング、ユニバーサルコーディング、またはそれらの組合せを含み得る。
いくつかの例では、デコーダ455は、符号化フレームデータ485(ve)に対してかつ/またはそのブロックに対して逆量子化を実行する逆量子化器を含む。いくつかの例では、デコーダ455は、場合によっては逆量子化に続いて、符号化フレームデータ485(ve)に対してかつ/またはそのブロックに対して逆変換を実行する逆変換コーダを含む。
いくつかの例では、コーデックシステム495Aのオートエンコーダ460は、2つ以上のオートエンコーダにスプリットされ得る。例示的な例では、コーデックシステム495Aのオートエンコーダ460は、第1のオートエンコーダと第2のオートエンコーダとを含み得る。第1のオートエンコーダは、MSオプティカルフロー430(fMS)を受信し、再構成されたMSオプティカルフロー435
を出力する。第1のオートエンコーダのエンコーダは、符号化フレームデータ485(ve)の第1の部分を出力し得る。第2のオートエンコーダは、残差440(r)を受信し、再構成された残差445
を出力する。第2のオートエンコーダのエンコーダは、符号化フレームデータ485(ve)の第2の部分を出力し得る。
図4Bは、マルチスケール(MS)オプティカルフローおよびMSワーピングを使用したビデオデータのインターコーディングされたフレームの符号化および復号を示す概念図490である。WarpMSエンジン410Bと、WarpMSエンジン410Cと、OptFlowMSエンジン425と、オートエンコーダ460とを備えたコーデックシステム495Bが示されている。図4Bのコーデックシステム495Bは図4Aのコーデックシステム495Aと同様であるが、図4Aのコーデックシステム495AのWarpMSエンジン410Aの代わりに、WarpMSエンジン410BとWarpMSエンジン410Cとを含む。
コーデックシステム495BのWarpMSエンジン410Cは、参照フレーム405
およびMSオプティカルフロー430(fMS)を受信し得る。コーデックシステム495BのWarpMSエンジン410Cは、オプティカルフロー430(fMS)内の動きベクトルに基づいて、参照フレーム405
をワーピングすることによって、予測フレーム415C
を生成し得る。予測フレーム415C
は、オプティカルフロー430(fMS)に基づく入力フレーム420(v)の予測を表す。図4Bの予測フレーム415C
は、図4Aの予測フレーム415A
とは異なり得るが、それは、図4Bの予測フレーム415C
はオプティカルフロー430(fMS)を使用して生成されるが、図4Aの予測フレーム415A
は再構成されたMSオプティカルフロー435
を使用して生成されるためである。WarpMSエンジン410Cは、予測フレーム415C
をコーデックシステム495Bの減算器465に渡し得る。コーデックシステム495Bの減算器465は、予測フレーム415C
および入力フレーム420(v)を受信し得る。コーデックシステム495Bの減算器465は、予測フレーム415C
を入力フレーム420(v)から減算することによって残差440(r)を生成し得、またはその逆も可能である。図4Bの予測フレーム415C
は図4Aの予測フレーム415A
とは異なり得るため、図4Bの残差440(r)も図4Aの残差440(r)と異なり得る。予測フレーム415C
を生成するためのコーデックシステム495BのWarpMSエンジン410CによるMSオプティカルフロー430(fMS)に基づく参照フレーム405
のワーピングの一例が図5に示されている。
コーデックシステム495BのWarpMSエンジン410Bは、コーデックシステム495AのWarpMSエンジン410Aにより類似して、参照フレーム405
および再構成されたMSオプティカルフロー435
を受信し得る。コーデックシステム495BのWarpMSエンジン410Bは、再構成されたMSオプティカルフロー435
内の動きベクトルに基づいて参照フレーム405
をワーピングすることによって、予測フレーム415B
を生成し得る。予測フレーム415B
は、再構成されたMSオプティカルフロー435
に基づく入力フレーム420(v)の予測を表す。予測フレーム415B
は予測フレーム415C
とは異なり得るが、それは、予測フレーム415B
は再構成されたMSオプティカルフロー435
を使用して生成されるが、予測フレーム415C
はオプティカルフロー430(fMS)を使用して生成されるためである。WarpMSエンジン410Bは、予測フレーム415B
をコーデックシステム495Bの加算器475に渡し得る。コーデックシステム495Bの加算器475は、予測フレーム415B
および再構成された残差445
を受信し得る。コーデックシステム495Bの加算器475は、再構成された残差445
を予測フレーム415B
に加算することによって、再構成された入力フレーム480
を生成し得、またはその逆も可能である。再構成された入力フレーム480
は、入力フレーム420(v)を可能な限り近く再構成することを試みる符号化フレームデータ485(ve)の再構成および/または復号されたバージョンである。予測フレーム415B
を生成するためのコーデックシステム495BのWarpMSエンジン410Bによる再構成されたMSオプティカルフロー435
に基づく参照フレーム405
のワーピングの一例が図5に示されている。いくつかの例では、WarpMSエンジン410Cは、予測フレーム415C
(MSオプティカルフロー430fMSに基づく)が予測フレーム415B
(再構成されたMSオプティカルフロー435
に基づく)の代わりに、加算器475に送られるように、WarpMSエンジン410Bの代わりに使用され得る。
いくつかの例では、コーデックシステム495Bのオートエンコーダ460は、2つ以上のオートエンコーダにスプリットされ得る。例示的な例では、コーデックシステム495Bのオートエンコーダ460は、第1のオートエンコーダと第2のオートエンコーダとを含み得る。第1のオートエンコーダは、MSオプティカルフロー430(fMS)を受信し、再構成されたMSオプティカルフロー435
を出力する。第1のオートエンコーダのエンコーダは、符号化フレームデータ485(ve)の第1の部分を出力し得る。第2のオートエンコーダは、残差440(r)を受信し、再構成された残差445
を出力する。第2のオートエンコーダのエンコーダは、符号化フレームデータ485(ve)の第2の部分を出力し得る。
図5は、参照フレーム505、オプティカルフロー515、および差分インデックス付けされた重みマップ530のダウンスケーリングされたバリアントを使用して予測フレーム565を生成することを示す概念図500である。図5に示す動作は、コーデックシステム495AのWarpMSエンジン410A、コーデックシステム495BのWarpMSエンジン410B、および/またはコーデックシステム495BのWarpMSエンジン410Cなど、コーデックデバイスのWarpMSエンジンによって実行され得る。コーデックデバイスのWarpMSエンジンは、参照フレーム505
を入力として受信する。概念図500の左側は、図4Aおよび図4Bの参照フレーム405
の一例であり得る、参照フレーム505
を示す。
コーデックデバイスのWarpMSエンジンは、参照フレーム505
に対して1つまたは複数のダウンスケーリング510動作を実行し得る。いくつかの例では、ダウンスケーリング510動作は各々、ダウンスケーリング、ダウンサンプリング、サブサンプリング、ガウス平均化、ガウスぼかし、ガウスフィルタリング、またはそれらの組合せを含み得る。ダウンスケーリング510動作は、画像ピラミッド、ガウスピラミッド、ラプラシアンピラミッド、ステアラブルピラミッド、またはそれらの組合せを生成するために繰り返し実行され得る。画像ピラミッドの一例が、ダウンスケーリング510ラベルの下に示されている。画像ピラミッドは、参照フレーム
の第0のスケールとして標示される、参照フレーム505
自体(またはそのコピー)を含む。参照フレーム
の第0のスケールのサイズは、参照フレーム505
の元のサイズである。画像ピラミッドは、参照フレーム
の第1のスケールとして標示される、ダウンスケーリング510を使用してダウンスケーリングされた参照フレーム505
のコピーを含む。画像ピラミッドは、参照フレーム
の第2のスケールとして標示される、ダウンスケーリング510を使用してダウンスケーリングされた参照フレーム
の第1のスケールのコピーを含む。画像ピラミッドは、参照フレーム
の第3のスケールとして標示される、ダウンスケーリング510を使用してダウンスケーリングされた参照フレーム
の第2のスケールのコピーを含む。1つの例示的な例では、各ダウンスケーリング510は、フレームサイズを半分に切断する。したがって、参照フレーム
の第1のスケールのサイズは、参照フレーム505
の元のサイズの半分であり、参照フレーム
の第2のスケールのサイズは、参照フレーム505
の元のサイズの1/4であり、参照フレーム
の第3のスケールのサイズは、参照フレーム505
の元のサイズの1/8である。参照フレームの各後続スケールは、1つ前の参照フレームよりも粗い詳細レベルを有するが、これは少なくとも、各後続ダウンスケーリング510が(フレームサイズを低減することによって)フレーム解像度を低減するためである。場合によっては、参照フレームの各後続フレームは、直前の参照フレームよりも粗い詳細レベルを有するが、これもやはり、各ダウンスケーリング510が、ガウス平均化、ガウスぼかし、および/またはガウスフィルタを使用して、細部を補整するためである。
コーデックデバイスのWarpMSエンジンは、MSオプティカルフロー(fMS)および/または再構成されたMSオプティカルフロー
を入力として受信する。MSオプティカルフロー(fMS)および/または再構成されたMSオプティカルフロー
のいずれかまたは両方は、図5に関してMSオプティカルフロー(fMS)と呼ばれることがある。図5のMSオプティカルフロー(fMS)は、したがって、図4Aおよび/または図4BのMSオプティカルフロー430(fMS)のかつ/または再構成されたMSオプティカルフロー435
の一例であり得る。図5のMSオプティカルフロー(fMS)は、2Dオプティカルフロー515(fxy)と呼ばれる2Dオプティカルフロー成分をx寸法およびy寸法上に含む。図5の2Dオプティカルフロー515(fxy)は、図4Aおよび/または図4BのMSオプティカルフロー430(fMS)の2Dオプティカルフロー成分(fxy)のかつ/または再構成されたMSオプティカルフロー435
の再構成された2Dオプティカルフロー成分
の一例であり得る。図5のMSオプティカルフロー(fMS)は、重みマップ530(fz)と呼ばれる重みマップ成分をz寸法上に含む。図5の重みマップ530(fz)は、図4Aおよび/または図4BのMSオプティカルフロー430(fMS)の重みマップ成分(fz)のかつ/または再構成されたMSオプティカルフロー435
の再構成された重みマップ成分
の一例であり得る。
参照フレーム505
は、各々がそれぞれの馬に乗っている、認識可能な4人のジョッキーによる競馬を示す。馬およびジョッキーは前景の中にあり、その後ろに背景がある。背景は、植物、建物、フェンス、金属ポスト、および空を含む。空(背景の部分)に対応する2Dオプティカルフロー515(fxy)の大きなエリアは白であり、空(背景の部分)に対応する動きベクトルが運動の0の振幅および/または方向を有することを意味する。2Dオプティカルフロー515(fxy)内の白エリアは「白」と読み取れるテキストで標示される。2Dオプティカルフロー515(fxy)は、異なる飽和および/またはクロマレベルを有する、シアンおよび赤に色付けされたいくつかのエリアを含む。2Dオプティカルフロー515(fxy)内のシアンエリアのうちのいくつかは、「シアン」と読み取れるテキストで標示される。2Dオプティカルフロー515(fxy)内の赤エリアのうちのいくつかは、「赤」と読み取れるテキストで標示される。これらの色ラベルは、図5がモノクロームで示されているにもかかわらず、色が依然として表される得るように、使用される。異なる飽和および/またはクロマレベルは、図5がモノクロームで示されるように、異なる暗さレベルとして表され、図5のより暗いエリアは2Dオプティカルフロー515(fxy)のより高い飽和および/またはクロマレベルに対応し、図5のより明るいエリアは2Dオプティカルフロー515(fxy)内のより低い飽和および/またはクロマレベルに対応する。
たとえば、参照フレーム505
内の最左の馬およびジョッキーに対応する2Dオプティカルフロー515(fxy)のエリアは、概して、異なる部分において異なる飽和および/またはクロマレベルのシアンである。2Dオプティカルフロー515(fxy)内のシアン色は、シアンに着色されたエリア内のピクセルに対する動きベクトルの方向が左を指すことを示す。したがって、参照フレーム505
内の最左の馬およびジョッキーは、参照フレーム505
内の最左の馬およびジョッキーの位置に対して、参照フレーム505
後の後続フレーム内で左に移動している。参照フレーム505
内の最右の馬およびジョッキーに対応する2Dオプティカルフロー515(fxy)のエリアは、概して、異なる部分において異なる飽和および/またはクロマレベルの赤である。2Dオプティカルフロー515(fxy)内の赤色は、シアンに着色されたエリア内のピクセルに対する動きベクトルの方向が右を指すことを示す。したがって、参照フレーム505
内の最右の馬およびジョッキーは、参照フレーム505
内の最右の馬およびジョッキーの位置に対して、参照フレーム505
後の後続フレーム内で右に移動している。基本的に、参照フレーム505
内の最左の馬およびジョッキーはなおさらに先に進んでおり、参照フレーム505
内の最右の馬およびジョッキーはなおさらに後ろに後退している。参照フレーム505
内の植物、フェンス、建物、およびポストに対応する2Dオプティカルフロー515(fxy)の部分は大部分がシアンであり、異なる部分の異なる飽和および/またはクロマレベルの赤のパッチがある。したがって、背景のこれらの部分は大部分が、参照フレーム505
内の背景のこれらの部分の位置に対して、参照フレーム505
後の後続フレーム内で左に移動している可能性が最も高い。赤のパッチは、背景のいくつかの部分が、参照フレーム505
内の背景のこれらの部分の位置に対して、参照フレーム505
後の後続フレーム内で右に移動していることを示し得る。
コーデックデバイスのWarpMSエンジンは、2Dオプティカルフロー515(fxy)上で1つまたは複数のダウンスケーリング520動作を実行し得る。ダウンスケーリング520動作は、ダウンスケーリング、ダウンサンプリング、サブサンプリング、ガウス平均化、ガウスぼかし、ガウスフィルタリング、またはそれらの組合せを含み得る。ダウンスケーリング510動作のように、ダウンスケーリング520動作は、画像ピラミッド、ガウスピラミッド、ラプラシアンピラミッド、ステアラブルピラミッド、またはそれらの組合せを生成するために繰り返し実行され得る。画像ピラミッドの一例は、ダウンスケーリング520ラベルの下に示されている。画像ピラミッドは、2Dオプティカルフローfxy_0の第0のスケールとして標示される、2Dオプティカルフロー515(fxy)自体(またはそのコピー)を含む。2Dオプティカルフローfxy_0の第0のスケールのサイズは、2Dオプティカルフロー515(fxy)の元のサイズである。画像ピラミッドは、2Dオプティカルフローfxy_1の第1のスケールとして標示される、ダウンスケーリング520を使用してダウンスケーリングされた2Dオプティカルフロー515(fxy)のコピーを含む。画像ピラミッドは、2Dオプティカルフローfxy_2の第2のスケールとして標示される、ダウンスケーリング520を使用してダウンスケーリングされた2Dオプティカルフローfxy_1の第1のスケールのコピーを含む。画像ピラミッドは、2Dオプティカルフローfxy_3の第3のスケールとして標示される、ダウンスケーリング520を使用してダウンスケーリングされた2Dオプティカルフローfxy_2の第2のスケールのコピーを含む。1つの例示的な例では、各ダウンスケーリング520は、オプティカルフローのサイズを半分に切断する。したがって、2Dオプティカルフローfxy_1の第1のスケールのサイズは、2Dオプティカルフロー515(fxy)の元のサイズの半分であり、2Dオプティカルフローfxy_2の第2のスケールのサイズは、2Dオプティカルフロー515(fxy)の元のサイズの1/4であり、2Dオプティカルフローfxy_3の第3のスケールのサイズは、2Dオプティカルフロー515(fxy)の元のサイズの1/8である。2Dオプティカルフローの各後続スケールは前のスケールよりも粗い細部レベルを有するが、少なくともこれは、各後続ダウンスケーリング520が(フレームサイズを低減することによって)フレーム解像度を低減するためである。場合によっては、参照フレームの各後続スケールは、直前の参照フレームよりも粗い細部レベルを有するが、これはやはり、各ダウンスケーリング520がガウス平均化、ガウスぼかし、および/またはガウスフィルタを使用して細部を補整するためである。
コーデックデバイスのWarpMSエンジンはまた、2Dオプティカルフロー515(fxy)に対して1つまたは複数の振幅調整525動作を実行し得る。振幅調整525動作は、対応するダウンスケーリング520動作が2Dオプティカルフローのスケールを低減するのと同じスケールで2Dオプティカルフロー内の動きベクトルの振幅を低減し得る。振幅調整525は、各ダウンスケーリングされた2Dオプティカルフローにわたる飽和および/またはクロマを、対応するダウンスケーリング520動作が2Dオプティカルフローのスケールを低減するのと同じスケールに低減することによって実行され得る。ある例示的な例では、2Dオプティカルフローfxy_1の第1のスケールが2Dオプティカルフロー515(fxy)の元のサイズの半分である場合、振幅調整525は、2Dオプティカルフロー515(fxy)の飽和および/クロマと比較して、2Dオプティカルフローのfxy_1の第1のスケールですべてのピクセルの飽和および/またはクロマを半分に低減し得る。より高い飽和および/またはクロマは図5においてより暗い画像エリアとして示され、より低い飽和および/またはクロマは図5においてより明るい画像エリアとして示されるため、2Dオプティカルフローfxy_1の第1のスケールは、2Dオプティカルフローfxy_0の第0のスケールよりも全体的に明るいとして示されている。たとえば、2Dオプティカルフロー515(fxy)が4ピクセルの動きベクトル振幅を示す強い飽和色を有するピクセルを含む場合、2Dオプティカルフローfxy_1の第1のスケールの対応するピクセルは、2ピクセルの動きベクトル振幅を示す、半分に低減された飽和を有することになる。さらに、2Dオプティカルフローfxy_2の第2のスケールが2Dオプティカルフローfxy_1の第1のスケールのサイズの半分である場合、振幅調整525は、2Dオプティカルフローfxy_1の第1のスケールの飽和および/またはクロマと比較して、2Dオプティカルフローfxy_2の第2のスケールのすべてのピクセルの飽和および/またはクロマを半分に低減し得る。図5の文脈で、2Dオプティカルフローfxy_2の第2のスケールは、2Dオプティカルフローfxy_1の第1のスケールよりも全体的に明るいとして示されている。2Dオプティカルフローfxy_3の第3のスケールが2Dオプティカルフローfxy_2の第2のスケールのサイズの半分である場合、振幅調整525は、2Dオプティカルフローfxy_2の第2のスケールの飽和および/またはクロマと比較して、2Dオプティカルフローfxy_3の第3のスケールのすべてのピクセルの飽和および/またはクロマを半分に低減し得る。図5の文脈で、2Dオプティカルフローfxy_3の第3のスケールは、2Dオプティカルフローfxy_2の第2のスケールよりも全体的に明るいとして示されている。振幅調整525動作は、ダウンスケーリングされた参照フレームがダウンスケーリングされた参照フレームとダウンスケーリングされた2Dオプティカルフローの両方のスケールに対して適切な動きベクトル振幅を有する、ダウンスケーリングされた2Dオプティカルフローに基づいて、ワーピングされることを可能にする。
重みマップ530(fz)は、2Dオプティカルフロー515(fxy)のオプティカルフロー推定における不確実性に対する確実性(および/またはその逆)のスケールを識別する。参照フレーム505
および/または2Dオプティカルフロー515(fxy)の異なるピクセルは、重みマップ530(fz)内の(たとえば、両端値を含む、0から1までの)所定の範囲内の異なる重み値に対応し得る。図5の重みマップ530(fz)において、黒は0の重み値に対応し、白は1の重み値に対応し、黒と白との間のグレーのシェードは、0から1の重み値に対応する。図5の文脈で、重みマップ内のより低い重み値(たとえば、所定の重みしきい値よりも低い)は、オプティカルフロー推定におけるより高い確実度(たとえば、所定の確実性しきい値よりも高い)に、かつ/またはオプティカルフロー推定におけるより低い不確実度(たとえば、所定の不確実性しきい値よりも低い)に対応する。図5の文脈で、重みマップ内のよりも高い重み値(たとえば、所定の重みしきい値よりも高い)は、オプティカルフロー推定におけるより低い確実度(たとえば、所定の確実性しきい値よりも低い)に、かつ/またはオプティカルフロー推定におけるより高い不確実度(たとえば、所定の不確実性しきい値よりも高い)に対応する。たとえば、参照フレーム505
内の馬およびジョッキーに対応する、図5の重みマップ530(fz)内のエリアは、参照フレーム505
内の背景に対応する、図5の重みマップ530(fz)内のエリアよりも概して暗く、馬およびジョッキーの移動が背景の移動よりも高い確実性レベルになると決定されることを示す。いくつかの例では、重み値は、確実性値に対してかつ/または不確実性値に対して相反関係を有し得る。いくつかの例では、重みマップは重み値とグレーのシェードとの間の相反関係を使用し得、白は1の重み値に対応し、黒は0の重み値に対応する。
コーデックデバイスのWarpMSエンジンは、重みマップ530(fz)の差分可能インデックス付け535を実行して、複数の差分インデックス付けされた重みマップを生成し得る。複数の差分インデックス付けされた重みマップは各々、重みマップ530(fz)内の異なる範囲の値に基づき得る。差分可能インデックス付け535動作は、重みマップ530(fz)内の各範囲の値を対応する差分インデクス付けされた重みマップ内の0から1の範囲にマッピングし得る。たとえば、差分可能インデックス付け535動作は、重みマップ530(fz)内の0から0.25の重み値を有するすべてのピクセルを対応する差分インデックス付けされた重みマップfz_0内の0から1の範囲にマッピングし得る。差分可能インデックス付け535動作は、重みマップ530(fz)内の0.25から0.50の重み値を有するすべてのピクセルを対応する差分インデックス付けされた重みマップfz_1内の0から1の範囲にマッピングし得る。差分可能インデックス付け535動作は、重みマップ530(fz)内の0.50から0.75の重み値を有するすべてのピクセルを対応する差分インデックス付けされた重みマップfz_2内の0から1の範囲にマッピングし得る。差分可能インデックス付け535動作は、重みマップ530(fz)内の0.75から1.00の重み値を有するすべてのピクセルを対応する差分インデックス付けされた重みマップfz_3内の0から1の範囲にマッピングし得る。差分可能インデックス付け535の例は、図6に示されている。参照フレーム505
に対するダウンスケーリング510画像ピラミッド内に、かつ/または2Dオプティカルフロー515(fxy)に対するダウンスケーリング520画像ピラミッド内にスケールが存在するため、差分可能インデックス付け535は、多くの差分インデックス付けされた重みマップを生成し得る。たとえば、図5では、参照フレーム505
に対するダウンスケーリング510画像ピラミッド内に、かつ2Dオプティカルフロー515(fxy)に対するダウンスケーリング520画像ピラミッド内に4つのスケールが存在する。したがって、差分可能インデックス付け535は、重みマップ530(fz)内の4つの異なる範囲の重み値に基づいて、4個の差分インデックス付けされた重みマップを生成する。
コーデックデバイスのWarpMSエンジンは、差分インデックス付けされた重みマップの少なくともサブセットに対して1つまたは複数のダウンスケーリング540動作を実行し得る。ダウンスケーリング540動作は、差分インデック付けされた重みマップのサートゥンを差分スケーリングされた参照マップのうちの1つのサイズに、かつ/またはダウンスケーリングされた2Dオプティカルフローのうちの1つのサイズにダウンスケーリングし得る。たとえば、図5では、参照フレーム505
の3つのダウンスケーリングされたバリアントがダウンスケーリング510画像ピラミッド内に存在し、2Dオプティカルフロー515(fxy)の3つのダウンスケーリングされたバリアントがダウンスケーリング520画像ピラミッド内に存在する。したがって、参照フレーム505
の3つのそれぞれのダウンスケーリングされたバリアントの、また2Dオプティカルフロー515(fxy)の3つのダウンスケーリングされたバリアントのサイズに整合するように、差分インデックス付けされた重みマップのうち3つがダウンスケーリング540動作中にダウンスケーリングされる。ダウンスケーリング540動作は、ダウンスケーリング、ダウンサンプリング、サブサンプリング、ガウス平均化、ガウスぼかし、ガウスフィルタリング、またはそれらの組合せを含み得る。
コーデックデバイスのWarpMSエンジンは、参照フレーム505
、2Dオプティカルフロー515(fxy)、および重みマップ530(fz)の各スケールiに対してワーピング動作550を実行する。各スケールiに対するワーピング動作550が式
に続いて、WarpMSエンジンによって実行される。この式では、warp2D()は、オプティカルフローに基づく2Dワーピング動作を表す。たとえば、第0のスケールのワーピングが式
に基づいて実行され、第0のスケールのワーピングフレームを生成する。第1のスケールのワーピングが式
に基づいて実行され、第1のスケールのワーピングフレームを生成する。第2のスケールのワーピングが式
において実行され、第2のスケールのワーピングフレームを生成する。第3のスケールのワーピングが式
に基づいて実行され、第3のスケールのワーピングフレームを生成する。
コーデックデバイスのWarpMSエンジンは、第0のスケールよりも高いスケールのすべてのワーピングフレームの第0のスケールのワーピングフレームのサイズへの(たとえば、参照フレーム505
のサイズへの)アップスケーリング555動作を実行する。アップスケーリング555動作は、逆ピラミッドと呼ばれることもある。
コーデックデバイスのWarpMSエンジンは、(0よりも大きいスケールの)アップスケーリング555動作中のアップスケーリング後に、ワーピング動作550中に生成されたワーピングフレームのすべての合計560動作を実行する。合計560動作は、予測フレーム565
を生成する。図5の予測フレーム565
は、図4Aの予測フレーム415A
および/または図4Bの予測フレーム415B
の一例であり得る。
差分インデックス付けされた重みマップfz_iの乗数効果により、高い確実性を有する(したがって、重みマップ530fz内に低い重み値が存在する)2Dワーピング動作には、より細かいスケール(たとえば、図5の第0および第1)のための高い乗数が与えられ、より粗いスケール(たとえば、図5の第2および第3)のための低い乗数が与えられる。他方で、低い確実性を有する(したがって、重みマップ530fz内に高い重み値が存在する)2Dワーピング動作には、より粗いスケール(たとえば、図5の第2および第3)のための高い乗数が与えられ、より細かいスケール(たとえば、図5の第0および第1)のための低い乗数が与えられる。
図6は、重みマップ630の差分可能インデックス付け640を示す概念図600である。図6の重みマップ630(fz)は、図5の重みマップ530(fz)であってよい。重みマップ630(fz)は、各々、図6では、白から黒までのグレーのシェードの(また、いくつかの例では、白および/または黒を含む)範囲から選択されるグレーのシェードとして示される、0から1の値(この範囲は両端値を含んでよくまたは含まなくてもよい)を含む画像として生成される。図6の例示的な重みマップ630(fz)では、黒は0の重み値に対応し、白は1の重み値に対応し、黒と白との間のグレーのシェードは0から1の重み値に対応する。いくつかの例では、重みマップは重み値とグレーのシェードとの間の相反関係を使用することができ、白は1の重み値に対応し、黒は0の重み値に対応する。
4個の差分インデックス付けされた重みマップ650A~650Dが、差分可能インデックス付け640を使用して重みマップ630(fz)に基づいて生成される。重みマップ630(fz)内の0から0.25に及ぶすべての値が最も細かい(第0の)スケールの重みマップ650A(fz_0)内の0から1の範囲にマッピングされる。重みマップ630(fz)内の0.25から0.5に及ぶすべての値が細かい(第1の)スケールの重みマップ650B(fz_1)内の0から1の範囲にマッピングされる。重みマップ630(fz)内の0.5から0.75に及ぶすべての値が粗い(第2の)スケールの重みマップ650C(fz_2)内の0から1の範囲にマッピングされる。重みマップ630(fz)内の0.5から0.75に及ぶすべての値が最も粗い(第3の)スケールの重みマップ650D(fz_3)内の0から1の範囲にマッピングされる。図6の差分インデックス付けされた重みマップ650A~650Dで、黒は0の差分インデックス付けされた重み値に対応し、白は1の差分インデックス付けされた重み値に対応し、黒と白の間のグレーのシェードは、0から1の差分インデックス付けされた重み値に対応する。いくつかの例では、差分インデックス付けされた重みマップ650A~650Dは、差分インデックス付けされた重み値とグレーのシェードとの間の相反関係を使用することができ、白は1の差分インデックス付けされた重み値に対応し、黒は0の差分インデックス付けされた重み値に対応する。
いくつかの例では、差分インデックス付けされた重みマップ650A~650Dのうちの特定の1つに対応する範囲未満の重みマップ630(fz)内の値には、差分インデックス付けされた重みマップ650A~650Dのうちのその1つの中で0の値が与えられる。たとえば、0.25未満の値には、差分インデックス付けされた重みマップ650Bの中で0の値が与えられてよい。いくつかの例では、差分インデックス付けされた重みマップ650A~650Dのうちの特定の1つに対応する範囲よりも大きい重みマップ630(fz)内の値には、差分インデックス付けされた重みマップ650A~650Dのうちのその1つの中で0の値が与えられる。たとえば、0.50未満の値には、差分インデックス付けされた重みマップ650Bの中で0の値が与えられる。いくつかの例では、差分インデックス付けされた重みマップ650A~650Dのうちの特定の1つに対応する範囲よりも大きい重みマップ630(fz)内の値には、差分インデックス付けされた重みマップ650A~650Dのうちのその1つの中に1の値が与えられる。たとえば、0.50未満の値には差分インデックス付けされた重みマップ650B内の1の値が与えられる。いくつかの例では、すべての4個の差分インデックス付けされた重みマップ650A~650D内の特定のピクセルロケーションに対する差分インデックス付けされた重み値の合計は1である。たとえば、特定のピクセルロケーションの場合、最も細かい(第0の)スケールの重み値650A(fz_0)内のそのピクセルロケーションに対する差分インデックス付けされた重み値と、細かい(第1の)スケールの重みマップ650B(fz_1)内のそのピクセルロケーションに対する差分インデックス付けされた重み値と、粗い(第2の)スケールの重みマップ650C(fz_2)内のそのピクセルロケーションに対する差分インデックス付けされた重み値と、最も粗い(第3の)スケールの重みマップ650D(fz_3)内のそのピクセルロケーションに対する差分インデックス付けされた重み値の合計は、1である。
図6の範囲内の任意の以下演算子(「≦」)はいずれも未満演算子(「<」)によって置換され得ることを理解されたい。図6の範囲内の未満演算子(「<」)はいずれも以下演算子(「≦」)によって置換され得ることを理解されたい。たとえば、最も細かい(第0の)スケールの重みマップ650A(fz_0)に対する範囲は、図6で0≦px<0.25と書かれるが、いくつかの例によれば、0≦px≦0.25、0<px≦0.25、または0<px<0.25であり得る。細かい(1st)スケール重みマップ650B(fz_1)に対する範囲は、図6で0.25≦px<0.50と書かれるが、いくつかの例によれば、0.25≦px≦0.50、0.25<px≦0.50、または0.25<px<0.50であり得る。粗い(第2の)スケールの重みマップ650C(fz_2)に対する範囲は、図6で0.50≦px<0.75と書かれるが、いくつかの例によれば、0.50≦px≦0.75、0.50<px≦0.75、または0.50<px<0.75であり得る。最も粗い(第3の)スケールの重みマップ650D(fz_3)に対する範囲は、図6で0.75≦px<1.00と書かれるが、いくつかの例によれば、0.75≦px≦1.00、0.75<px≦1.00、または0.75<px<1.00であり得る。いくつかの例では、差分インデックス付け640は、4個未満の差分インデックス付けされた重みマップ(たとえば、2個または3個の差分インデックス付けされた重みマップ)を生成し得る。いくつかの例では、差分インデックス付け640は、4個よりも多くの差分インデックス付け重みマップ(たとえば、5個、6個、7個、8個、9個、10個、11個、12個、13個、14個、15個、または15を超える差分インデックス付けされた重みマップ)を生成し得る。
図7Aは、いくつかの例による、重みマップ630の差分可能インデックス付け640に関するスケール重み分布グラフ700Aを示す。スケール重み分布グラフ700Aは、0から1に及ぶ元の重みマップ630(fz)内のピクセル値730を表す水平軸を含む。スケール重み分散グラフ700は、4個の差分インデックス付けされた重みマップ650A~650D内のピクセル値735を表す垂直軸を含む。第1の曲線710は、最も細かい(第0の)スケールの重みマップ650A(fz_0)を表す。第2の曲線715は、細かい(第1の)スケールの重みマップ650B(fz_1)を表す。第3の曲線720は、粗い(第2の)スケールの重みマップ650C(fz_2)を表す。第4の曲線725は、最も粗い(第3の)スケールの重みマップ650D(fz_3)を表す。スケール重み分布グラフ700は、元の重みマップ630(fz)からの様々な範囲の重み値がいくつかの例に従って4個の差分インデックス付けされた重みマップ650A~650Dにどのようにマッピングされるかを識別する。
図7Bは、いくつかの例による、重みマップ630の差分可能インデックス付け640に関するスケール重み分布グラフ700Bを示す。スケール重み分布グラフ700Aのように、スケール重み分布グラフ700Bは、元の重みマップ630(fz)内のピクセル値730を表す水平軸と4個の差分インデックス付けされた重みマップ650A~650D内のピクセル値735を表す垂直軸とを含む。第1の曲線710は、最も細かい(第0の)スケールの重みマップ650A(fz_0)を表す。第2の曲線715は、細かい(第1の)スケールの重みマップ650B(fz_1)を表す。第3の曲線720は、粗い(第2の)スケールの重みマップ650C(fz_2)を表す。第4の曲線725は、最も粗い(第3の)スケールの重みマップ650D(fz_3)を表す。スケール重み分布グラフ700は、元の重みマップ630(fz)からの異なる範囲の重み値がいくつかの例に従って4個の差分インデックス付けされた重みマップ650A~650Dにどのようにマッピングされるかを識別する。
図8は、いくつかの例による、ニューラルネットワーク800の一例を示すブロック図である。上述のように、本開示の様々な態様は、知能エンジンを使用して実行され得る。知能エンジンは、たとえば、1つまたは複数の人工知能アルゴリズム、1つまたは複数の機械学習アルゴリズム内に入力されたトレーニングデータを使用してトレーニングされた1つまたは複数の機械学習モデル、1つまたは複数のニューラルネットワーク、またはそれらの組合せを含み得る。図8のニューラルネットワーク800は、符号化デバイス104、復号デバイス112、コーデックシステム295、オートエンコーダ260、エンコーダ250、デコーダ255、コーデックシステム395A、コーデックシステム395B、オートエンコーダ360、エンコーダ350、デコーダ355、OptFlow2Dエンジン325、Warp2Dエンジン310A、Warp2Dエンジン310B、Warp2Dエンジン310C、コーデックシステム495A、コーデックシステム495B、オートエンコーダ460、エンコーダ450、デコーダ455、OptFlowMSエンジン425、WarpMSエンジン410A、WarpMSエンジン410B、WarpMSエンジン410C、畳み込みニューラルネットワーク(CNN)900、マルチスケールワーピングエンジン1000A、マルチスケールワーピングエンジン1000B、図11Aに関して論じたコーデックデバイス、図11Bに関して論じたコーデックデバイス、コンピューティングシステム1200、またはそれらの組合せを実装するために使用され得る。図8のニューラルネットワーク800は、2Dオプティカルフローを生成すること、MSオプティカルフローを生成すること、重みマップを生成すること、2Dワーピングすること、MSワーピングすること、符号化すること、復号すること、予測フレームを生成すること、またはそれらの組合せなど、上で列挙したデバイスのうちのいずれかによって実行されるとして本明細書で説明される任意の動作を実装するために使用され得る。
入力層820は入力データを含む。例示的な一例では、入力層820は、1つまたは複数のカメラ210のうちの1つによってキャプチャされる入力画像のピクセルを表すデータを含むことができる。画像はビデオフレームであってよい。ニューラルネットワーク800は、複数の隠れ層822a、822b~822nを含む。隠れ層822a、822b~822nは「n」個の隠れ層を含み、ただし、「n」は1以上の整数である。隠れ層の数は、所与の適用例にとって必要とされるのと同数の層を含むようにされ得る。ニューラルネットワーク800は、隠れ層822a、822b~822nによって実行される処理から得られた出力を提供する出力層824をさらに含む。例示的な一例では、出力層824は、入力ビデオフレームの中の物体のためのオプティカルフローおよび/または重みマップを提供することができる。例示的な一例では、出力層824は、入力ビデオフレームの符号化されたバージョンを提供することができる。
ニューラルネットワーク800は、相互接続されたノードの多層ニューラルネットワークである。各ノードは情報を表すことができる。ノードに関連する情報は異なる層の間で共有され、情報が処理されるにつれて各層が情報を保持する。場合によっては、ニューラルネットワーク800はフィードフォワードネットワークを含むことができ、その場合、ネットワークの出力がそれ自体にフィードバックされるフィードバック接続はない。場合によっては、ニューラルネットワーク800は再帰ニューラルネットワークを含むことができ、再帰ニューラルネットワークは、入力において読み取りながらノードにわたって情報が搬送されることを可能にするループを有することができる。
様々な層間のノード間相互接続部を通じて、情報がノード間で交換され得る。入力層820のノードは、最初の隠れ層822aの中のノードのセットを活性化することができる。たとえば、示すように、入力層820の入力ノードの各々は、最初の隠れ層822aのノードの各々に接続される。最初の隠れ層822aのノードは、活性化関数を入力ノード情報に適用することによって、各入力ノードの情報を変換することができる。次いで、変換から導出される情報は、次の隠れ層822bのノードに渡され、それを活性化することができ、次の隠れ層822bは固有の指定された機能を実行することができる。例示的な機能は、畳み込み、アップサンプリング、データ変換、および/または任意の他の適切な機能を含む。隠れ層822bの出力は次いで、次の隠れ層のノードを活性化することができ、以下同様である。最後の隠れ層822nの出力は、出力が提供される出力層824の1つまたは複数のノードを活性化することができる。場合によっては、ニューラルネットワーク800の中のノード(たとえば、ノード826)は、複数の出力線を有するものとして示され、ノードは単一の出力を有し、ノードから出力されるものとして示されるすべての線が同じ出力値を表す。
場合によっては、各ノードまたはノード間の相互接続部は、ニューラルネットワーク800のトレーニングから導出されるパラメータのセットである、重みを有することができる。ニューラルネットワーク800は、トレーニングされると、トレーニングされたニューラルネットワークと呼ばれることがあり、トレーニングされたニューラルネットワークは、2Dオプティカルフローを生成すること、MSオプティカルフローを生成すること、重みマップを生成すること、2Dオプティカルフローに基づいてフレームを2Dワーピングすること、MSオプティカルフローに基づいてフレームをMSワーピングすること、データを符号化すること、データを復号すること、予測フレームを生成すること、またはそれらの組合せを行うために使用され得る。たとえば、ノード間の相互接続部は、相互接続されたノードについて学習された情報を表すことができる。相互接続部は、(たとえば、トレーニングデータセットに基づいて)チューニングされ得るチューニング可能な数値重みを有することができ、ニューラルネットワーク800が、入力に対して適応的であること、およびますます多くのデータが処理されるにつれて学習できることを可能にする。
ニューラルネットワーク800は、出力層824を通じて出力を提供するために、異なる隠れ層822a、822b~822nを使用して、入力層820の中のデータからの特徴を処理するように事前トレーニングされる。ニューラルネットワーク800が画像内の物体を識別するために使用される例では、ニューラルネットワーク800は、画像とラベルの両方を含むトレーニングデータを使用してトレーニングされ得る。たとえば、トレーニング画像は、ネットワークの中に入力されることが可能であり、各トレーニング画像は、各画像内の1つまたは複数の物体のクラスを示すラベル(基本的に、物体が何であるのか、および物体がどんな特徴を有するのかをネットワークに示す)を有する。例示的な一例では、トレーニング画像は数字2の画像を含むことができ、その場合、画像のためのラベルは[0 0 1 0 0 0 0 0 0 0]であり得る。
場合によっては、ニューラルネットワーク800は、誤差逆伝搬法と呼ばれるトレーニングプロセスを使用して、ノードの重みを調整することができる。誤差逆伝搬法は、前方パス、損失関数、後方パス、および重み更新を含むことができる。前方パス、損失関数、後方パス、およびパラメータ更新は、1回のトレーニング反復の間に実行される。そのプロセスは、層の重みが正確にチューニングされるようにニューラルネットワーク800が十分良好にトレーニングされるまで、トレーニング画像のセットごとに、ある回数の反復にわたって繰り返され得る。
画像内の物体を識別する例の場合、前方パスは、ニューラルネットワーク800にトレーニング画像を通過させることを含むことができる。ニューラルネットワーク800がトレーニングされる前に、最初に重みがランダム化される。画像は、たとえば、画像のピクセルを表す数字のアレイを含むことができる。アレイの中の各数字は、アレイの中のその位置におけるピクセル強度を表す0から255までの値を含むことができる。一例では、アレイは、28行および28列のピクセルならびに(赤色成分、緑色成分、および青色成分、またはルーマ成分および2つのクロマ成分などの)3つの色成分を有する、数字の28×28×3アレイを含むことができる。
ニューラルネットワーク800のための最初のトレーニング反復に対して、初期化において重みがランダムに選択されることに起因して、出力は、いずれの特定のクラスへの選好も与えない値を含む可能性がある。たとえば、出力が、異なるクラスを物体が含む確率を伴うベクトルである場合、異なるクラスの各々に対する確率値は等しいかまたは少なくとも極めて類似することがある(たとえば、10個の可能なクラスに対して、各クラスが0.1という確率値を有することがある)。初期重みを用いると、ニューラルネットワーク800は低レベルの特徴を決定することができず、したがって、(たとえば、フレームの特定のエリアに対するオプティカルフローまたは重みマッピングの)正確な決定を行うことができない。出力の中の誤差を分析するために、損失関数が使用され得る。任意の好適な損失関数定義が使用され得る。損失関数の一例は、平均二乗誤差(MSE)を含む。MSEは、
として定義され、それは、予測(出力)される解を実際の解から引いて2乗したものの2分の1の総和を計算する。損失は、Etotalの値に等しくなるように設定され得る。
実際の値は予測される出力とは大きく異なるので、最初のトレーニング画像に対して損失(または、誤差)は大きい。トレーニングの目標は、予測される出力がトレーニングラベルと同じになるように、損失の量を最小化することである。ニューラルネットワーク800は、どの入力(重み)がネットワークの損失に最も寄与したのかを決定することによって後方パスを実行することができ、損失が小さくなり最終的に最小化されるように重みを調整することができる。
ネットワークの損失に最も寄与した重みを決定するために、重みに関する損失の微分係数(dL/dWとして示され、ただし、Wは特定の層における重みである)が算出され得る。微分係数が算出された後、フィルタのすべての重みを更新することによって、重み更新が実行され得る。たとえば、重みは、勾配の反対方向で重みが変化するように更新され得る。重み更新は、
として示すことができ、ただし、wは重みを示し、wiは初期重みを示し、ηは学習率を示す。学習率は任意の好適な値に設定することができ、高い学習率はより大きい重み更新を含み、より小さい値はより小さい重み更新を示す。
ニューラルネットワーク800は、任意の好適なディープネットワークを含むことができる。一例は、畳み込みニューラルネットワーク(CNN)を含み、畳み込みニューラルネットワーク(CNN)は、入力層および出力層を含み、入力層と出力層との間に複数の隠れ層を有する。CNNの隠れ層は、一連の畳み込み層、非線形層、(ダウンサンプリングのための)プーリング層、および全結合層を含む。ニューラルネットワーク800は、特に、オートエンコーダ、ディープビリーフネット(DBN:deep belief net)、再帰ニューラルネットワーク(RNN)などの、CNN以外の任意の他のディープネットワークを含むことができる。
図9は、いくつかの例による、畳み込みニューラルネットワーク(CNN)900の一例を示すブロック図である。CNN900の入力層920は、1つまたは複数のカメラ210のうちの1つによってキャプチャされる画像などの、画像を表すデータを含む。たとえば、データは画像のピクセルを表す数字のアレイを含むことができ、アレイの中の各数字は、アレイの中のその位置におけるピクセル強度を表す0から255までの値を含む。上記の以前の例を使用すると、アレイは、28行および28列のピクセルならびに3つの色成分(たとえば、赤色成分、緑色成分、および青色成分、またはルーマ成分および2つのクロマ成分など)を有する、数字の28×28×3アレイを含むことができる。画像は、畳み込み隠れ層922a、随意の非線形活性化層、プーリング隠れ層922b、および全結合隠れ層922cを通過させられて、出力層924における出力を得ることができる。各隠れ層のうちの1つしか図9に示されないが、複数の畳み込み隠れ層、非線形層、プーリング隠れ層、および/または全結合層が、CNN900の中に含まれ得ることを、当業者は諒解されよう。前に説明したように、出力は、2Dオプティカルフローを生成すること、MSオプティカルフローを生成すること、重みマップを生成すること、2Dオプティカルフローに基づいてフレームを2Dワーピングすること、MSオプティカルフローに基づいてフレームをMSワーピングすること、データを符号化すること、データを復号すること、予測フレームを生成すること、またはそれらの組合せを行うことができる。
CNN900の最初の層は、畳み込み隠れ層922aである。畳み込み隠れ層922aは、入力層920の画像データを分析する。畳み込み隠れ層922aの各ノードは、受容野と呼ばれる、入力画像のノード(ピクセル)の領域に接続される。畳み込み隠れ層922aは、1つまたは複数のフィルタと見なすことができ(各フィルタは異なる活性化マップまたは特徴マップに対応する)、フィルタの各畳み込み反復は、畳み込み隠れ層922aのノードまたはニューロンである。たとえば、各畳み込み反復においてフィルタがカバーする入力画像の領域がフィルタの受容野であることになる。例示的な一例では、入力画像が28×28アレイを含み、かつ各フィルタ(および、対応する受容野)が5×5アレイである場合、畳み込み隠れ層922aの中に24×24のノードがある。ノードとそのノードのための受容野との間の各接続は、重みを、また場合によっては、入力画像内のその局所的な特定の受容野を分析するために各ノードが学習するようなバイアス全体を、学習する。隠れ層922aの各ノードは、同じ重みおよびバイアスを有する(共有重みおよび共有バイアスと呼ばれる)。たとえば、フィルタは、重み(数字)のアレイ、および入力と同じ深度を有する。フィルタは、(入力画像の3つの色成分に従って)ビデオフレーム例に対して3という深度を有する。フィルタアレイの説明のための例示的なサイズは、ノードの受容野のサイズに対応する5×5×3である。
畳み込み隠れ層922aの畳み込み性質は、畳み込み層の各ノードがその対応する受容野に適用されることに起因する。たとえば、畳み込み隠れ層922aのフィルタは、入力画像アレイの左上隅角において開始することができ、入力画像の周りで畳み込むことができる。上述のように、フィルタの各畳み込み反復は、畳み込み隠れ層922aのノードまたはニューロンと見なされ得る。各畳み込み反復において、フィルタの値は、画像の対応する個数の元のピクセル値と乗算される(たとえば、5×5フィルタアレイは、入力画像アレイの左上隅角において入力ピクセル値の5×5アレイで乗算される)。各畳み込み反復からの乗算は一緒に加算されて、その反復またはノードに対する総計を取得することができる。そのプロセスは、次に、畳み込み隠れ層922aの中の次のノードの受容野に従って、入力画像内の次のロケーションにおいて継続される。たとえば、フィルタは、あるステップ量(ストライドと呼ばれる)だけ次の受容野まで動かすことができる。ストライドは、1または他の好適な量に設定され得る。たとえば、ストライドが1に設定される場合、フィルタは、各畳み込み反復において1ピクセルだけ右に動かされる。入力ボリュームの固有の各ロケーションにおいてフィルタを処理することは、そのロケーションに対するフィルタ結果を表す数字を生成し、畳み込み隠れ層922aのノードごとに総計値が決定される結果となる。
入力層から畳み込み隠れ層922aへのマッピングは、活性化マップ(または、特徴マップ)と呼ばれる。活性化マップは、入力ボリュームの各ロケーションにおいてフィルタ結果を表す、ノードごとの値を含む。活性化マップは、入力ボリュームに対するフィルタの各反復から得られる様々な総計値を含むアレイを含むことができる。たとえば、5×5フィルタが28×28入力画像の各ピクセルに適用される場合(1というストライド)、活性化マップは24×24アレイを含む。畳み込み隠れ層922aは、画像内の複数の特徴を識別するために、いくつかの活性化マップを含むことができる。図9に示す例は、3つの活性化マップを含む。3つの活性化マップを使用して、畳み込み隠れ層922aは、3つの異なる種類の特徴を検出することができ、各特徴は画像全体にわたって検出可能である。
いくつかの例では、畳み込み隠れ層922aの後に非線形隠れ層が適用され得る。非線形層は、線形演算を算出していたシステムに非線形性を導入するために使用され得る。非線形層の例示的な一例は、正規化線形ユニット(ReLU)層である。ReLU層は、入力ボリュームの中の値のすべてに関数f(x)=max(0,x)を適用することができ、そのことは、すべての負の活性化を0に変える。したがって、ReLUは、畳み込み隠れ層922aの受容野に影響を及ぼすことなく、CNN900の非線形特性を高めることができる。
畳み込み隠れ層922aの後(かつ、使用されるときは非線形隠れ層の後)に、プーリング隠れ層922bが適用され得る。プーリング隠れ層922bは、畳み込み隠れ層922aからの出力の中の情報を簡略化するために使用される。たとえば、プーリング隠れ層922bは、畳み込み隠れ層922aから出力される各活性化マップを取ることができ、プーリング関数を使用して、凝縮された活性化マップ(または、特徴マップ)を生成する。マックスプーリングは、プーリング隠れ層によって実行される関数の一例である。平均プーリング、L2ノルムプーリング、または他の好適なプーリング関数などの、他の形態のプーリング関数が、プーリング隠れ層922aによって使用される。プーリング関数(たとえば、マックスプーリングフィルタ、L2ノルムフィルタ、または他の好適なプーリングフィルタ)は、畳み込み隠れ層922aの中に含まれる各活性化マップに適用される。図9に示す例では、畳み込み隠れ層922aの中の3つの活性化マップのために3つのプーリングフィルタが使用される。
いくつかの例では、マックスプーリングは、(たとえば、2×2のサイズを有する)マックスプーリングフィルタを、(たとえば、2というストライドなどの、フィルタの次元に等しい)あるストライドを用いて、畳み込み隠れ層922aから出力された活性化マップに適用することによって、使用され得る。マックスプーリングフィルタからの出力は、フィルタがその周りで畳み込む、あらゆる部分領域の中の最大数を含む。一例として2×2フィルタを使用すると、プーリング層の中の各ユニットは、前の層の中の2×2ノード(各ノードは活性化マップの中の値である)の領域を要約することができる。たとえば、活性化マップの中の4つの値(ノード)は、フィルタの各反復において2×2のマックスプーリングフィルタによって分析され得、4つの値からの最大値が「マックス」値として出力される。そのようなマックスプーリングフィルタが、24×24ノードの寸法を有する畳み込み隠れ層922aからの活性化フィルタに適用される場合、プーリング隠れ層922bからの出力は、12×12ノードのアレイである。
いくつかの例では、L2ノルムプーリングフィルタも使用され得る。L2ノルムプーリングフィルタは、(マックスプーリングにおいて行われるように最大値を算出するのではなく)活性化マップの2×2領域(または、他の好適な領域)の中の値の二乗和の平方根を算出することと、算出された値を出力として使用することとを含む。
直観的には、プーリング関数(たとえば、マックスプーリング関数、L2ノルムプーリング関数、または他のプーリング関数)は、所与の特徴が画像の領域の中のどこかで見つかるかどうかを決定し、厳密な位置情報を廃棄する。このことは、特徴が見つけられていると、特徴の厳密なロケーションは、他の特徴に対するその近似的なロケーションほど重要ではないので、特徴検出の結果に影響を及ぼすことなく行うことができる。マックスプーリング(ならびに、他のプーリング方法)は、プーリングされるはるかに少ない特徴しかないという利点をもたらし、したがって、CNN900のもっと後の層において必要とされるパラメータの数を減らす。
ネットワークの中の接続の最終の層は、プーリング隠れ層922bからのあらゆるノードを出力層924の中の出力ノードのうちのあらゆる出力ノードに接続する、全結合層である。上記の例を使用すると、入力層は、入力画像のピクセル強度を符号化する28×28ノードを含み、畳み込み隠れ層922aは、3つの活性化マップへの5×5の(フィルタのための)局所的受容野の適用に基づく3×24×24の隠れ特徴ノードを含み、プーリング隠れ層922bは、3つの特徴マップの各々にわたる2×2の領域へのマックスプーリングフィルタの適用に基づく3×12×12の隠れ特徴ノードの層を含む。この例を拡張すると、出力層924は10個の出力ノードを含むことができる。そのような例では、3×12×12のプーリング隠れ層922bのあらゆるノードが、出力層924のあらゆるノードに接続される。
全結合層922cは、前のプーリング隠れ層922bの(高レベル特徴の活性化マップを表すはずである)出力を取得することができ、特定のクラスに最も相関する特徴を決定する。たとえば、全結合層922cは、特定のクラスに最も強く相関する高レベル特徴を決定することができ、高レベル特徴に対する重み(ノード)を含むことができる。全結合層922cの重みとプーリング隠れ層922bの重みとの積が算出されて、異なるクラスに対する確率を取得することができる。たとえば、オプティカルフローを生成するためにCNN900が使用中である場合、あるフレームから別のフレームへの視覚要素の動きの高レベル特徴を表す活性化マップの中に、大きい値が存在する。
いくつかの例では、出力層924からの出力は、M次元ベクトル(前の例では、M=10)を含むことができ、ここで、Mは、オプティカルフローにおける可能な動きベクトル方向、オプティカルフローにおける可能な動きベクトル振幅、重みマップの中の可能な重み値などに対応する、データを含むことができる。例示的な一例では、9次元出力ベクトルが、10個の異なる可能な値が[0 0 0.05 0.8 0 0.15 0 0 0 0]であることを表す場合、そのベクトルは、5%確率の第3の値、80%確率の第4の値、および15%確率の第6の値があることを示す。可能な値にとっての確率は、その値に対する(たとえば、その動きベクトル方向に対する、その動きベクトル振幅に対する、その重み値に対するなど)信頼性レベルまたは確実性レベルと見なされ得る。
図10Aは、1つまたは複数のトレーニングされたニューラルネットワークに基づいて、1つまたは複数のオートエンコーダを使用して、特徴領域内の参照フレーム1005をワーピングするマルチスケールワーピングエンジン1000Aを示す概念図である。時間t(vt)における入力フレーム1010および時間t-1(vt-1)における参照フレーム1005に対応するデータは、エンコーダ1020とデコーダ1025とを備えるオートエンコーダ1015内に入力される。入力フレーム1010(vt)および参照フレーム1005(vt-1)に対応するデータは、時間t-1から時間t(ft)までの移動を示すMSオプティカルフロー(図示せず)と対応する残差(rt)(図示せず)とを含み得る。オートエンコーダ1015は、再構成されたオプティカルフロー1030
および再構成された残差1035
を出力し得る。
参照フレーム1005(vt-1)は、(各々がCNN900内の層のセットを表す一連のブロックによって表される)第1のオートエンコーダを通過し得る。再構成されたオプティカルフロー1030
は(各々が第2のCNN900内の層のセットを表す一連のブロックによって表される)第2のオートエンコーダを通過する。第1のオートエンコーダは、その中でワーピングが特徴空間内で実行されるワーピングブロックを含み得る。再構成されたオプティカルフロー1030
は、第2のオートエンコーダを使用して特徴空間に変換されると、第1のオートエンコーダによって特徴空間に変換されている参照フレーム1005(vt-1)のワーピングを実行するために使用され得る。第1のオートエンコーダは、時間t
において、入力フレーム1010(vt)の予測であり得る予測フレーム1040を生成し得る。予測フレーム1040
および再構成された残差1035
は、加算器1050によって一緒に加算されて、再構成された入力フレーム1055
を生成し得る。再構成された入力フレーム1055
は、入力フレーム1010(vt)の再構成されたバージョンであり得る。予測フレーム1040
はまた、減算器(図示せず)によって入力フレーム1010(vt)から減算されて、残差(rt)を生成し得る。
図10Bは、1つまたは複数のトレーニングされたニューラルネットワークに基づいて、1つまたは複数のオートエンコーダを使用して、特徴領域内で参照フレーム1005をワーピングし、特徴領域内で残差補償を実行する、マルチスケールワーピングエンジン1000Bを示す概念図である。マルチスケールワーピングエンジン1000Bは、マルチスケールワーピングエンジン1000Aと同様であるが、再構成された残差1035
が通過する第3のオートエンコーダを含む。第1のオートエンコーダのワーピングブロックは、再構成された残差1035
の特徴セットバージョンを受信し、第1のオートエンコーダは、したがって、特徴空間内で再構成された残差1035
を生成することが可能である。
マルチスケールワーピングエンジン1000Aは、図4Aのコーデックシステム495Aの、かつ/または図4Bのコーデックシステム495Bの一例であり得る。マルチスケールワーピングエンジン1000Bは、図4Aのコーデックシステム495Aの、かつ/または図4Bのコーデックシステム495Bの一例であり得る。
図11Aは、いくつかの例による、データ符号化のためのプロセス1100Aの一例を示す流れ図である。図11Aの流れ図が示すプロセス1100Aは、コーデックデバイスによって実行され得る。コーデックデバイスは、符号化デバイス104、復号デバイス112、ビデオソース102、ビデオ宛先デバイス122、コーデックシステム295、オートエンコーダ260、エンコーダ250、デコーダ255、コーデックシステム395A、コーデックシステム395B、オートエンコーダ360、エンコーダ350、デコーダ355、OptFlow2Dエンジン325、Warp2Dエンジン310A、Warp2Dエンジン310B、Warp2Dエンジン310C、コーデックシステム495A、コーデックシステム495B、オートエンコーダ460、エンコーダ450、デコーダ455、OptFlowMSエンジン425、WarpMSエンジン410A、WarpMSエンジン410B、WarpMSエンジン410C、ニューラルネットワーク(NN)800、畳み込みニューラルネットワーク(CNN)900、マルチスケールワーピングエンジン1000A、マルチスケールワーピングエンジン1000B、画像キャプチャデバイス、ビデオキャプチャデバイス、画像処理デバイス、ビデオ処理デバイス、画像キャプチャおよび処理デバイス、ビデオキャプチャおよび処理デバイス、カメラ、モバイルハンドセット、ウェアラブルデバイス、ヘッドマウントディスプレイ(HMD)デバイス、車両、クラウドサービスの1つまたは複数のネットワークサーバ、コンピューティングシステム1200、本明細書で論じる別のタイプのシステムもしくはデバイス、またはそれらの組合せであってよく、またはそれらを含んでよい。
動作1105において、コーデックデバイスは、第1の時間におけるシーンを示す入力フレームと第2の時間におけるシーンを示す参照フレームとを含むビデオデータを受信する。たとえば、コーデックデバイスは、カメラ、画像キャプチャデバイス、画像処理デバイス、またはそれらの組合せなど、ビデオソース102からビデオデータを受信し得る。動作1105の入力フレームの例は、入力フレーム220(v)、入力フレーム320(v)、入力フレーム420(v)、時間t(vt)における入力フレーム1010、本明細書で説明する別の入力フレーム、またはそれらの組合せを含む。動作1105の参照フレームの例は、参照フレーム305
、参照フレーム405
、参照フレーム505
、時間t-1(vt-1)における参照フレーム1005、本明細書で説明する別の参照フレーム、またはそれらの組合せを含む。
いくつかの例では、第1の時間は第2の時間の後である。たとえば、図10A~図10Bの時間tは、第1の時間の一例である。図10A~図10Bの時間t-1は、第2の時間の一例である。いくつかの例では、第1の時間は第2の時間の前である。いくつかの例では、第1の時間は第2の時間と同時である(たとえば、入力フレームおよび参照フレームが異なるカメラおよび/または異なる画像センサーを使用してキャプチャされる)。
いくつかの例では、参照フレームは、符号化ビデオデータ内でイントラコーディングされたフレームとして符号化される。いくつかの例では、入力フレームは、符号化ビデオデータ内でイントラコーディングされたフレームとして符号化される。たとえば、入力フレームは、図2のイントラコーディングされたフレームとして符号化される。いくつかの例では、入力フレームは、符号化ビデオデータ内でインターコーディングされたフレームとして符号化される。たとえば、入力フレームは、図3A~3Bで、図4A~図4Bで、また図10A~図10Bで、インターコーディングされたフレームとして符号化される。
動作1110において、コーデックデバイスは、入力フレームおよび参照フレームに基づいてオプティカルフローを生成する。オプティカルフローは、参照フレームと入力フレームとの間のシーンの1つまたは複数のエリア内の1つまたは複数の移動を識別する。動作1110のオプティカルフローの例は、2Dオプティカルフロー330(f2D)、再構成された2Dオプティカルフロー335
、MSオプティカルフロー430(fMS)の2Dオプティカルフロー成分、再構成されたMSオプティカルフロー435
の2Dオプティカルフロー成分、2Dオプティカルフロー515(fxy)、再構成されたオプティカルフロー1030
(および/またはその2Dオプティカルフロー成分)、本明細書で論じる別のタイプのオプティカルフロー、またはそれらの組合せを含む。コーデックデバイスは、たとえば、ダウンスケーリング520を使用して、オプティカルフローをダウンスケーリングし得る。コーデックデバイスは、たとえば、振幅調整525を使用して、オプティカルフロー内の振幅を調整し得る。
いくつかの例では、コーデックデバイスは、1つまたは複数のトレーニングされたニューラルネットワークを使用して、入力フレームおよび参照フレームに基づいて、オプティカルフローを生成する。たとえば、コーデックデバイスは、符号化デバイス104の1つまたは複数のトレーニングされたNN、復号デバイス112の1つまたは複数のトレーニングされたNN、オートエンコーダ260の1つまたは複数のトレーニングされたNN、エンコーダ250の1つまたは複数のトレーニングされたNN、デコーダ255の1つまたは複数のトレーニングされたNN、OptFlow2Dエンジン325の1つまたは複数のトレーニングされたNN、オートエンコーダ360の1つまたは複数のトレーニングされたNN、エンコーダ350の1つまたは複数のトレーニングされたNN、デコーダ355の1つまたは複数のトレーニングされたNN、OptFlowMSエンジン425の1つまたは複数のトレーニングされたNN、オートエンコーダ460の1つまたは複数のトレーニングされたNN、エンコーダ450の1つまたは複数のトレーニングされたNN、デコーダ455の1つまたは複数のトレーニングされたNN、NN800のうちの1つまたは複数、CNN900のうちの1つまたは複数、マルチスケールワーピングエンジン1000Aの1つまたは複数のNN、マルチスケールワーピングエンジン1000Bの1つまたは複数のNN、本明細書で論じる別のNN、またはそれらの組合せを使用して、オプティカルフローを生成し得る。
いくつかの例では、動作1110のオプティカルフローは、2Dオプティカルフロー330(f2D)、再構成された2Dオプティカルフロー335
、MSオプティカルフロー430(fMS)の2Dオプティカルフロー成分、再構成されたMSオプティカルフロー435
の2Dオプティカルフロー成分、2Dオプティカルフロー515(fxy)、再構成されたオプティカルフロー1030
(および/またはその2Dオプティカルフロー成分)、本明細書で論じる別のタイプのオプティカルフロー、またはそれらの組合せなど、2次元オプティカルフローである。オプティカルフローが識別する1つまたは複数の移動は、2つの直交する寸法を有する平面に沿った移動であり得る。2つの直交する寸法は、垂直寸法(y)および水平寸法(x)であってよい。いくつかの態様では、オプティカルフローは、入力フレームの各ピクセルの移動の方向および移動の振幅を識別する。いくつかの態様では、オプティカルフローは、オプティカルフロー画像を使用して識別および/または記憶される。移動の方向は、オプティカルフロー画像内の色相に基づいて識別され得る。移動の振幅は、オプティカルフロー画像内の飽和に基づいて識別され得る。図5の2Dオプティカルフロー515(fxy)は、オプティカルフロー画像として示され、より暗いエリアはより高い飽和を有するエリアを表し、暗いエリアの色相は暗いエリアの上にオーバーレイされたテキストを通して識別される。
動作1115において、コーデックデバイスは、参照フレームおよび入力フレームに基づいて重みマップを生成する。動作1115の重みマップの例は、MSオプティカルフロー430(fMS)の重みマップ成分(fz)、再構成されたMSオプティカルフロー435
の再構成された重みマップ成分
、重みマップ530(fz)、差分インデックス付け535を使用して差分インデックス付けされた重みマップ530(fz)、図5の差分インデックス付けされた重みマップfz_0、図5の差分インデックス付けされた重みマップfz_1、図5の差分インデックス付けされた重みマップfz_2、図5の差分インデックス付けされた重みマップfz_3、重みマップ630(fz)、差分インデックス付け640を使用して差分インデックス付けされた重みマップ630(fz)、最も細かい(第0の)スケールの重みマップ650A(fz_0)、細かい(第1の)スケールの重みマップ650B(fz_1)、粗い(第2の)スケールの重みマップ650C(fz_2)、最も粗い(第3の)スケールの重みマップ650D(fz_3)、再構成されたオプティカルフロー1030
の再構成された重みマップ成分
、本明細書で論じる別のタイプの重みマップ、またはそれらの組合せを含む。コーデックデバイスは、たとえば、ダウンスケーリング540を使用して、重みマップをダウンスケーリングし得る。いくつかの例では、重みマップは、重みマップ画像を使用して識別および/または記憶されてよく、より高い重みは重みマップ画像内により暗く出現し、より低い重みは重みマップ画像内により明るく出現する(またはその逆)。重みマップ画像の例は、重みマップ530(fz)、図5の差分インデックス付けされた重みマップfz_0、図5の差分インデックス付けされた重みマップfz_1、図5の差分インデックス付けされた重みマップfz_2、図5の差分インデックス付けされた重みマップfz_3、重みマップ630(fz)、最も細かい(第0の)スケールの重みマップ650A(fz_0)、細かい(第1の)スケールの重みマップ650B(fz_1)、粗い(第2の)スケールの重みマップ650C(fz_2)、最も粗い(第3の)スケールの重みマップ650D(fz_3)の例で提供されている。
いくつかの例では、コーデックデバイスは、1つまたは複数のトレーニングされたニューラルネットワークを使用して、入力フレームおよび参照フレームに基づいて、重みマップを生成する。たとえば、コーデックデバイスは、符号化デバイス104の1つまたは複数のトレーニングされたNN、復号デバイス112の1つまたは複数のトレーニングされたNN、オートエンコーダ260の1つまたは複数のトレーニングされたNN、エンコーダ250の1つまたは複数のトレーニングされたNN、デコーダ255の1つまたは複数のトレーニングされたNN、OptFlow2Dエンジン325の1つまたは複数のトレーニングされたNN、オートエンコーダ360の1つまたは複数のトレーニングされたNN、エンコーダ350の1つまたは複数のトレーニングされたNN、デコーダ355の1つまたは複数のトレーニングされたNN、OptFlowMSエンジン425の1つまたは複数のトレーニングされたNN、オートエンコーダ460の1つまたは複数のトレーニングされたNN、エンコーダ450の1つまたは複数のトレーニングされたNN、デコーダ455の1つまたは複数のNN、NN800のうちの1つまたは複数、CNN900のうちの1つまたは複数、マルチスケールワーピングエンジン1000Aの1つまたは複数のNN、マルチスケールワーピングエンジン1000Bの1つまたは複数のNN、本明細書で論じた別のNN、またはそれらの組合せを使用して、重みマップを生成し得る。
動作1120において、コーデックデバイスは、少なくとも部分的にオプティカルフローおよび重みマップに基づいてビデオデータを符号化することによって、符号化ビデオデータを生成する。いくつかの例では、符号化ビデオデータは、1つまたは複数のコーディング規格に準拠するデコーダを使用して復号可能である。いくつかの例では、コーデックデバイスは、符号化デバイス104としてふるまうことができ、通信リンク120上で符号化ビデオデータを復号デバイス112に送ることができる。いくつかの例では、コーデックデバイスは、符号化ビデオデータをビデオ宛先デバイス122に送り得る。動作1120の符号化ビデオデータの例は、符号化フレームデータ285(ve)、符号化フレームデータ385(ve)、符号化フレームデータ485(ve)、本明細書で論じる他の符号化フレームデータ、本明細書で論じる他の符号化ビデオデータ、またはそれらの組合せを含む。符号化ビデオデータを生成するためのビデオデータの符号化は、コーデックデバイスのエンコーダ部分によって実行され得る。エンコーダの例は、符号化デバイス104、エンコーダ250、エンコーダ350、エンコーダ450、マルチスケールワーピングエンジン1000Aのエンコーダ部分、マルチスケールワーピングエンジン1000Bのエンコーダ部分、本明細書で論じる別のエンコーダ、またはそれらの組合せを含む。いくつかの態様では、オプティカルフローおよび重みマップに基づいてビデオデータを符号化することは、オプティカルフローおよび重みマップに基づいてビデオデータを圧縮することを含む。オプティカルフローおよび重みマップに基づいてビデオデータを圧縮することは、任意の圧縮方式を使用して実行され得る。
いくつかの例では、コーデックデバイスは、少なくとも部分的にオプティカルフローおよび重みマップに基づいて参照フレームをワーピングすることによって、予測フレームを生成し得る。たとえば、コーデックシステム495Bは、WarpMSエンジン410Cを使用してMSオプティカルフロー430(fMS)の2Dオプティカルフロー成分(fxy)およびMSオプティカルフロー430(fMS)の重みマップ成分(fz)に基づいて参照フレーム405
をワーピングすることによって、予測フレーム415C
を生成する。予測フレームの例は、予測フレーム315A
、予測フレーム315B
、予測フレーム315C
、予測フレーム415A
、予測フレーム415B
、予測フレーム415C
、予測フレーム565
、予測フレーム1040
、本明細書で説明する別の予測フレーム、またはそれらの組合せを含み得る。コーデックデバイスは、入力フレームと予測フレームとの間の差異に基づいて残差を生成し得る。たとえば、コーデックシステム495Bは、入力フレーム420(v)と予測フレーム415C
との間の(減算器465によって計算された)差異に基づいて、残差440(r)を生成する。残差の例は、残差340(r)、再構成された残差345
、残差440(r)、再構成された残差445
、図10Aの残差(r)(図示せず)、図10Bの残差(r)(図示せず)、再構成された残差1035
、本明細書で説明する別の残差、またはそれらの組合せを含む。動作1120のように、オプティカルフローおよび重みマップに基づいてビデオデータを符号化することは、残差に基づいてビデオデータを符号化することを含み得る。
コーデックデバイスは、1つまたは複数のトレーニングされたニューラルネットワークを使用して、オプティカルフローおよび重みマップに基づいて、参照フレームをワーピングし得る。たとえば、コーデックデバイスは、符号化デバイス104の1つまたは複数のトレーニングされたNN、復号デバイス112の1つまたは複数のトレーニングされたNN、オートエンコーダ260の1つまたは複数のトレーニングされたNN、エンコーダ250の1つまたは複数のトレーニングされたNN、デコーダ255の1つまたは複数のトレーニングされたNN、OptFlow2Dエンジン325の1つまたは複数のトレーニングされたNN、Warp2Dエンジン310Aの1つまたは複数のトレーニングされたNN、Warp2Dエンジン310Bの1つまたは複数のトレーニングされたNN、Warp2Dエンジン310Cの1つまたは複数のトレーニングされたNN、オートエンコーダ360の1つまたは複数のトレーニングされたNN、エンコーダ350の1つまたは複数のトレーニングされたNN、デコーダ355の1つまたは複数のトレーニングされたNN、OptFlowMSエンジン425の1つまたは複数のトレーニングされたNN、WarpMSエンジン410Aの1つまたは複数のトレーニングされたNN、WarpMSエンジン410Bの1つまたは複数のトレーニングされたNN、WarpMSエンジン410Cの1つまたは複数のトレーニングされたNN、オートエンコーダ460の1つまたは複数のトレーニングされたNN、エンコーダ450の1つまたは複数のトレーニングされたNN、デコーダ455の1つまたは複数のトレーニングされたNN、ワープエンジン550の1つまたは複数のトレーニングされたNN、NN800のうちの1つまたは複数、CNN900のうちの1つまたは複数、マルチスケールワーピングエンジン1000Aの1つまたは複数のNN、マルチスケールワーピングエンジン1000Bの1つまたは複数のNN、本明細書で論じる別のNN、またはそれらの組合せを使用して、オプティカルフローおよび重みマップに基づいて、参照フレームをワーピングし得る。
いくつかの例では、オプティカルフローおよび重みマップに基づいて参照フレームをワーピングするコーデックデバイスは、いくつかの動作をそれ自体含み得る。たとえば、コーデックデバイスは、重みマップに基づいて少なくとも第1の差分インデックス付けされた重みマップおよび第2の差分インデックス付けされた重みマップを生成し得る。第1の差分インデックス付けされた重みマップおよび/または第2の差分インデックス付けされた重みマップの例は、図5の差分インデックス付けされた重みマップfz_0、図5の差分インデックス付けされた重みマップfz_1、図5の差分インデックス付けされた重みマップfz_2、図5の差分インデックス付けされた重みマップfz_3、最も細かい(第0の)スケールの重みマップ650A(fz_0)、細かい(第1の)スケールの重みマップ650B(fz_1)、粗い(第2の)スケールの重みマップ650C(fz_2)、最も粗い(第3の)スケールの重みマップ650D(fz_3)を含む。コーデックデバイスは、差分可能インデックス付け535、差分可能インデックス付け640、またはそれらの組合せを使用して、第1の差分インデックス付けされた重みマップおよび/または第2の差分インデックス付けされた重みマップを生成し得る。コーデックデバイスは、差分可能インデックス付け535、差分可能インデックス付け640、またはそれらの組合せを使用して、第1の差分インデックス付けされた重みマップおよび/または第2の差分インデックス付けされた重みマップを生成し得る。コーデックデバイスは、少なくとも部分的にオプティカルフローに基づいて参照フレームをワーピングすることによって、第1のワーピングフレームを生成し得る。コーデックデバイスは、少なくとも部分的にオプティカルフローのダウンスケーリングされたバリアントに基づいて参照フレームのダウンスケーリングされたバリアントをワーピングすることによって、第2のワーピングフレームを生成し得る。図5のワーピング動作550を参照すると、コーデックデバイスは、式の以下の部分
を使用して、第1のワーピングフレームおよび/または第2のワーピングフレームを生成し得る。第1のワーピングフレームおよび第2のワーピングフレームは異なり得るが、これはiの異なる値が式において使用されるためである。たとえば、第1のワーピングフレームの場合、iは0であってよく、第2のワーピングフレームの場合、iは0より大きいse正の整数(たとえば、1、2、3)であってよい。
コーデックデバイスは、ダウンスケーリング510を使用して参照フレームのダウンスケーリングされたバリアントをダウンスケーリングし得る。コーデックデバイスは、ダウンスケーリング520を使用してオプティカルフローのダウンスケーリングされたバリアントをダウンスケーリングし得る。いくつかの態様では、コーデックデバイスは、ダウンスケーリング520を使用してダウンスケーリングする前または後に、オプティカルフローのダウンスケーリングされたバリアントの振幅525を調整することもできる。コーデックデバイスは、第1のワーピングフレームと第1の差分インデックス付けされた重みマップの第1の積を決定し得る。コーデックデバイスは、第2のワーピングフレームと第2の差分インデックス付けされた重みマップの第2の積を決定し得る。図5のワーピング動作550を参照すると、コーデックデバイスは、式
を使用して、第1の積および/または第2の積を生成し得る。第1の積および第2の積は異なり得るが、これはiの異なる値が式において使用されるためである。たとえば、第1の積の場合、iは0であってよく、第2の積の場合、iは0より大きい正の整数(たとえば、1、2、3)であってよい。コーデックデバイスは、第1の積と第2の積のアップスケーリングされたバリアントの合計を決定し得る。コーデックデバイスは、アップスケーリング555を使用して、第2の積のアップスケーリングされたバリアントに対してアップスケーリングを実行し得る。コーデックデバイスは、合計560を使用して合計を決定し得る。合計は、予測フレームを生成し得る。たとえば、図5を参照すると、合計560は予測フレーム565
を生成する。
いくつかの例では、コーデックデバイスは、オプティカルフローに基づいて、再構成されたオプティカルフローを生成し得る。たとえば、コーデックシステム495Aは、MSオプティカルフロー430(fMS)に基づいて、再構成されたMSオプティカルフロー435.
を生成する。コーデックシステム495Aは、MSオプティカルフロー430(fMS)の2Dオプティカルフロー成分(fxy)に基づいて、再構成されたMSオプティカルフロー435
の再構成された2Dオプティカルフロー成分
を生成する。コーデックデバイスは、重みマップに基づいて、再構成された重みマップを生成し得る。たとえば、コーデックシステム495Aは、MSオプティカルフロー430(fMS)に基づいて、再構成されたMSオプティカルフロー435
を生成する。コーデックシステム495Aは、MSオプティカルフロー430(fMS)の重みマップ成分(fz)に基づいて、再構成されたMSオプティカルフロー435
の再構成された重みマップ成分
を生成する。コーデックデバイスは、少なくとも部分的に、再構成されたオプティカルフローおよび再構成された重みマップに基づいて参照フレームをワーピングすることによって、予測フレームを生成する。たとえば、コーデックシステム495Aは、WarpMSエンジン410Aを使用して、再構成されたMSオプティカルフロー435
に基づいて参照フレーム405
をワーピングすることによって、予測フレーム415A
を生成する。コーデックシステム495Aは、WarpMSエンジン410Aを使用して、再構成されたMSオプティカルフロー435
の再構成された2Dオプティカルフロー成分
および再構成されたMSオプティカルフロー435
の再構成された重みマップ成分
に基づいて参照フレーム405
をワーピングすることによって、予測フレーム415A
を生成し得る。予測フレームの例は、予測フレーム315A
、予測フレーム315B
、予測フレーム315C
、予測フレーム415A
、予測フレーム415B
、予測フレーム415C
、予測フレーム565
、予測フレーム1040
、本明細書で説明する別の予測フレーム、またはそれらの組合せを含み得る。コーデックデバイスは、入力フレームと予測フレームとの間の差異に基づいて残差を生成し得る。たとえば、コーデックシステム495Aは、入力フレーム420(v)と予測フレーム415A
との間の(減算器465によって計算された)差異に基づいて、残差440(r)を生成する。残差の例は、残差340(r)、再構成された残差345
、残差440(r)、再構成された残差445
、図10Aの残差(r)(図示せず)、図10Bの残差(r)(図示せず)、再構成された残差1035
、本明細書で説明する別の残差、またはそれらの組合せを含む。動作1120のようにオプティカルフローおよび重みマップに基づいてビデオデータを符号化することは、残差に基づいてビデオデータを符号化することを含み得る。
動作1120のようにオプティカルフローおよび重みマップに基づいてビデオデータを符号化することは、オートエンコーダを使用してビデオデータを符号化することを含み得る。オートエンコーダの例は、システム100、オートエンコーダ260、オートエンコーダ360、オートエンコーダ460、マルチスケールワーピングエンジン1000Aの1つまたは複数のオートエンコーダ、マルチスケールワーピングエンジン1000Bの1つまたは複数のオートエンコーダ、本明細書で論じる別のオートエンコーダ、本明細書で論じる別のエンコーダ、本明細書で論じる別のデコーダ、またはそれらの組合せを含む。
コーデックデバイスは、1つまたは複数のトレーニングされたニューラルネットワークを使用して、再構成されたオプティカルフローおよび再構成された重みマップに基づいて、参照フレームをワーピングし得る。たとえば、コーデックデバイスは、符号化デバイス104の1つまたは複数のトレーニングされたNN、復号デバイス112の1つまたは複数のトレーニングされたNN、オートエンコーダ260の1つまたは複数のトレーニングされたNN、エンコーダ250の1つまたは複数のトレーニングされたNN、デコーダ255の1つまたは複数のトレーニングされたNN、OptFlow2Dエンジン325の1つまたは複数のトレーニングされたNN、Warp2Dエンジン310Aの1つまたは複数のトレーニングされたNN、Warp2Dエンジン310Bの1つまたは複数のトレーニングされたNN、Warp2Dエンジン310Cの1つまたは複数のトレーニングされたNN、オートエンコーダ360の1つまたは複数のトレーニングされたNN、エンコーダ350の1つまたは複数のトレーニングされたNN、デコーダ355の1つまたは複数のトレーニングされたNN、OptFlowMSエンジン425の1つまたは複数のトレーニングされたNN、WarpMSエンジン410Aの1つまたは複数のトレーニングされたNN、WarpMSエンジン410Bの1つまたは複数のトレーニングされたNN、WarpMSエンジン410Cの1つまたは複数のトレーニングされたNN、オートエンコーダ460の1つまたは複数のトレーニングされたNN、エンコーダ450の1つまたは複数のトレーニングされたNN、デコーダ455の1つまたは複数のトレーニングされたNN、ワープエンジン550の1つまたは複数のトレーニングされたNN、NN800のうちの1つまたは複数、CNN900のうちの1つまたは複数、マルチスケールワーピングエンジン1000Aの1つまたは複数のNN、マルチスケールワーピングエンジン1000Bの1つまたは複数のNN、本明細書で論じる別のNN、またはそれらの組合せを使用して、オプティカルフローおよび重みマップに基づいて、参照フレームをワーピングし得る。
いくつかの例では、再構成されたオプティカルフローおよび再構成された重みマップに基づいて参照フレームをワーピングするコーデックデバイスは、いくつかの動作をそれ自体含む。たとえば、コーデックデバイスは、再構成された重みマップに基づいて、少なくとも第1の差分インデックス付けされた重みマップおよび第2の差分インデックス付けされた重みマップを生成し得る。第1の差分インデックス付けされた重みマップおよび/または第2の差分インデックス付けされた重みマップの例は、図5の差分インデックス付けされた重みマップfz_0、図5の差分インデックス付けされた重みマップfz_1、図5の差分インデックス付けされた重みマップfz_2、図5の差分インデックス付けされた重みマップfz_3、最も細かい(第0の)スケールの重みマップ650A(fz_0)、細かい(第1の)スケールの重みマップ650B(fz_1)、粗い(第2の)スケールの重みマップ650C(fz_2)、最も粗い(第3の)スケールの重みマップ650D(fz_3)を含む。コーデックデバイスは、差分可能インデックス付け535、差分可能インデックス付け640、またはそれらの組合せを使用して、第1の差分インデックス付けされた重みマップおよび/または第2の差分インデックス付けされた重みマップを生成し得る。コーデックデバイスは、少なくとも部分的に、再構成されたオプティカルフローに基づいて参照フレームをワーピングすることによって、第1のワーピングフレームを生成し得る。コーデックデバイスは、少なくとも部分的に、再構成されたオプティカルフローのダウンスケーリングされたバリアントに基づいて参照フレームのダウンスケーリングされたバリアントをワーピングすることによって、第2のワーピングフレームを生成し得る。図5のワーピング動作550を参照すると、コーデックデバイスは、式の以下の部分
を使用して、第1のワーピングフレームおよび/または第2のワーピングフレームを生成し得る。第1のワーピングフレームおよび第2のワーピングフレームは異なり得るが、それはiの異なる値が式において使用されるためである。たとえば、第1のワーピングフレームの場合、iは0であってよく、第2のワーピングフレームの場合、iは0より大きい正の整数(たとえば、1、2、3)であってよい。
コーデックデバイスは、ダウンスケーリング510を使用して参照フレームのダウンスケーリングされたバリアントをダウンスケーリングし得る。コーデックデバイスは、ダウンスケーリング520を使用して、再構成されたオプティカルフローのダウンスケーリングされたバリアントをダウンスケーリングし得る。いくつかの態様では、コーデックデバイスは、ダウンスケーリング520を使用してダウンスケーリングする前または後に、再構成されたオプティカルフローのダウンスケーリングされたバリアントの振幅525を調整することもできる。コーデックデバイスは、第1のワーピングフレームと第1の差分インデックス付けされた重みマップの第1の積を決定し得る。コーデックデバイスは、第2のワーピングフレームと第2の差分インデックス付けされた重みマップの第2の積を決定し得る。図5のワーピング動作550を参照すると、コーデックデバイスは、式
を使用して、第1の積および/または第2の積を生成し得る。第1の積および第2の積は異なり得るが、それはiの異なる値が式において使用されるためである。たとえば、第1の積の場合、iは0であってよく、第2の積の場合、iは0より大きい正の整数(たとえば、1、2、3)であってよい。コーデックデバイスは、第1の積と第2の積のアップスケーリングされたバリアントの合計を決定し得る。コーデックデバイスは、アップスケーリング555を使用して、第2の積のアップスケーリングされたバリアントに対するアップスケーリングを実行し得る。コーデックデバイスは、合計560を使用して合計を決定し得る。合計は、予測フレームを生成し得る。たとえば、図5を参照すると、合計560は、予測フレーム565
を生成する。
いくつかの例では、動作1115(および/またはその再構成されたバリアント)において生成される重みマップは、参照フレームの第1の領域に対するしきい値を越える値を含み、参照フレームの第2の領域に対するしきい値未満の値を含む。動作1120において生成される符号化ビデオデータは、細かい細部レベルで符号化された第1の領域に対応するデータを含み得、粗い細部レベルで符号化された第2の領域に対応するデータを含み得る。たとえば、しきい値は、図6を参照すると、0.25、0.50、または0.75であってく、これは、重みマップ630を異なる細かさおよび粗さレベルの異なるスケーリングされた重みマップ650A~650Dに差分可能インデックス付けするための差分可能インデックス付け640に対してこれらの値が使用されるためである。しきい値は、図7A~図7Bの曲線710、715、720、または725のうちのいずれか1つまたは複数に対する変曲点、交差点、最大値、最小値、またはそれらの何らかの組合せであってよい。たとえば、しきい値は、0.1、0.2、0.25、0.3、0.4、0.5、0.6、0.7、0.75、0.8、0.9、0.1未満の値、0.9よりも大きい値、またはいずれかの2つの前に列挙した値間の値であってよい。
いくつかの例では、符号化ビデオデータは、デコーダを使用して復号可能である。デコーダは、1つまたは複数のビデオデコーダ規格に準拠し得る。デコーダの例は、復号デバイス112、デコーダ255、デコーダ355、デコーダ455、マルチスケールワーピングエンジン1000Aのデコーダ部分、マルチスケールワーピングエンジン1000Bのデコーダ部分、動作1100Aを実行するコーデックデバイス、動作1100Bを実行するコーデックデバイス、本明細書で論じる別のデコーダ、またはそれらの組合せを含む。
図11Bは、いくつかの例による、データ復号のためのプロセス1100Bの一例を示す流れ図である。図11Bの流れ図が示すプロセス1100Bは、コーデックデバイスによって実行され得る。コーデックデバイスは、符号化デバイス104、復号デバイス112、ビデオソース102、ビデオ宛先デバイス122、コーデックシステム295、オートエンコーダ260、エンコーダ250、デコーダ255、コーデックシステム395A、コーデックシステム395B、オートエンコーダ360、エンコーダ350、デコーダ355、OptFlow2Dエンジン325、Warp2Dエンジン310A、Warp2Dエンジン310B、Warp2Dエンジン310C、コーデックシステム495A、コーデックシステム495B、オートエンコーダ460、エンコーダ450、デコーダ455、OptFlowMSエンジン425、WarpMSエンジン410A、WarpMSエンジン410B、WarpMSエンジン410C、ニューラルネットワーク(NN)800、畳み込みニューラルネットワーク(CNN)900、マルチスケールワーピングエンジン1000A、マルチスケールワーピングエンジン1000B、画像キャプチャデバイス、ビデオキャプチャデバイス、画像処理デバイス、ビデオ処理デバイス、画像キャプチャおよび処理デバイス、ビデオキャプチャおよび処理デバイス、カメラ、モバイルハンドセット、ウェアラブルデバイス、ヘッドマウントディスプレイ(HMD)デバイス、車両、クラウドサービスの1つまたは複数のネットワークサーア、コンピューティングシステム1200、本明細書で論じる他のタイプのシステムまたはデバイス、あるいはそれらの組合せであってよくまたはそれらを含んでよい。いくつかの例では、図11Bのプロセス1100Bを実行するコーデックデバイスは、図11Aのプロセス1100Aを実行する同じコーデックデバイスであってよい。いくつかの例では、図11Bのプロセス1100Bを実行するコーデックデバイスは、図11Aのプロセス1100Aを実行するコーデックデバイスとは異なるコーデックデバイスであってよい。
動作1130において、コーデックデバイスは符号化データを受信する。いくつかの例では、図11Bのプロセス1100Bの動作1130において受信される符号化データは、図11Aのプロセス1100Aの動作1120において生成された符号化データであってよい。いくつかの例では、図11Bのプロセス1100Bを実行するコーデックデバイスは、図11Aのプロセス1100Aを実行する同じコーデックデバイスであり、動作1130において符号化データを受信するコーデックデバイスは、コーデックデバイスのエンコーダ構成要素から符号化データを受信するコーデックデバイスを含む。いくつかの例では、図11Bのプロセス1100Bを実行するコーデックデバイスは、図11Aのプロセス1100Aを実行するコーデックデバイスとは異なるコーデックデバイスであり、動作1130において符号化データを受信するコーデックデバイスは、図11Aのプロセス1100Aを実行するコーデックデバイスから、または図11Aのプロセス1100Aを実行するコーデックデバイスから符号化データを受信する中間デバイスから、符号化データを受信する図11Bのプロセス1100Bを実行するコーデックデバイスを含む。
いくつかの例では、符号化ビデオデータは、エンコーダを使用して符号化される。いくつかの例では、エンコーダは、1つまたは複数のビデオエンコーダ規格に準拠し得る。エンコーダの例は、符号化デバイス104、エンコーダ250、エンコーダ350、エンコーダ450、マルチスケールワーピングエンジン1000Aのエンコーダ部分、マルチスケールワーピングエンジン1000Bのエンコーダ部分、動作1100Aを実行するコーデックデバイス、動作1100Bを実行するコーデックデバイス、本明細書で論じる別のデコーダ、またはそれらの組合せを含む。
動作1135において、コーデックデバイスは、再構成されたオプティカルフローを符号化ビデオデータから生成する。再構成されたオプティカルフローは、参照フレームと入力フレームとの間のシーンの1つまたは複数のエリア内の1つまたは複数の移動を識別する。参照フレームおよび入力フレームは、異なる時間におけるシーンを示し得る。いくつかの例では、動作1135の再構成されたオプティカルフローは、動作1110において生成されたオプティカルフローに基づき得る。たとえば、動作1135の再構成されたオプティカルフローは、符号化ビデオデータから再構成および/または復号された動作1110のオプティカルフローの再構成であり得る。動作1135の再構成されたオプティカルフローは、再構成されたオプティカルフローがその再構成であるオプティカルフローとの差異を含み得る。そのような差異は、たとえば、符号化ビデオデータが不可逆圧縮を使用して圧縮され、再構成プロセスが符号化ビデオデータの少なくとも一部分を復元することによって、再構成されたオプティカルフローを生成する場合、再構成プロセスによって引き起こされることがある。
いくつかの例では、動作1135の参照フレームおよび入力フレームは、動作1105の参照フレームおよび入力フレームであってよい。動作1135の入力フレームの例は、入力フレーム220(v)、入力フレーム320(v)、入力フレーム420(v)、時間t(vt)における入力フレーム1010、本明細書で説明する別の入力フレーム、またはそれらの組合せを含む。動作1135の参照フレームの例は、参照フレーム305
、参照フレーム405
、参照フレーム505
、時間t-1(vt-1)における参照フレーム1005、本明細書で説明する別の参照フレーム、またはそれらの組合せを含む。
動作1135の再構成されたオプティカルフローの例は、再構成された2Dオプティカルフロー335
、再構成されたMSオプティカルフロー435
の2Dオプティカルフロー成分、2Dオプティカルフロー515(fxy)(図5に関して論じた再構成されたオプティカルフローであってよい)、再構成されたオプティカルフロー1030
(および/またはその2Dオプティカルフロー成分)、本明細書で論じる別のタイプの再構成されたオプティカルフロー、またはそれらの組合せを含む。コーデックデバイスは、たとえば、ダウンスケーリング520を使用して、再構成されたオプティカルフローをダウンスケーリングし得る。コーデックデバイスは、たとえば、振幅調整525を使用して、再構成されたオプティカルフロー内の振幅を調整し得る。
いくつかの例では、コーデックデバイスは、1つまたは複数のトレーニングされたニューラルネットワークを使用して、再構成されたオプティカルフローを符号化ビデオデータから生成する。たとえば、コーデックデバイスは、符号化デバイス104の1つまたは複数のトレーニングされたNN、復号デバイス112の1つまたは複数のトレーニングされたNN、オートエンコーダ260の1つまたは複数のトレーニングされたNN、エンコーダ250の1つまたは複数のトレーニングされたNN、デコーダ255の1つまたは複数のトレーニングされたNN、OptFlow2Dエンジン325の1つまたは複数のトレーニングされたNN、オートエンコーダ360の1つまたは複数のトレーニングされたNN、エンコーダ350の1つまたは複数のトレーニングされたNN、デコーダ355の1つまたは複数のトレーニングされたNN、OptFlowMSエンジン425の1つまたは複数のトレーニングされたNN、オートエンコーダ460の1つまたは複数のトレーニングされたNN、エンコーダ450の1つまたは複数のトレーニングされたNN、デコーダ455の1つまたは複数のトレーニングされたNN、NN800のうちの1つまたは複数、CNN900のうちの1つまたは複数、マルチスケールワーピングエンジン1000Aの1つまたは複数のNN、マルチスケールワーピングエンジン1000Bの1つまたは複数のNN、本明細書で論じる別のNN、またはそれらの組合せを使用して、オプティカルフローを生成し得る。
いくつかの例では、動作1135の再構成されたオプティカルフローは、再構成された2Dオプティカルフロー335
、再構成されたMSオプティカルフロー435
の2Dオプティカルフロー成分、2Dオプティカルフロー515(fxy)、再構成されたオプティカルフロー1030
(および/またはその2Dオプティカルフロー成分)、本明細書で論じる別のタイプの再構成されたオプティカルフロー、またはそれらの組合せなど、2次元オプティカルフローである。再構成されたオプティカルフローが識別する1つまたは複数の移動は、2つの直交する寸法を有する平面に沿った移動であり得る。2つの直交する寸法は、垂直寸法(y)および水平寸法(x)であってよい。いくつかの態様では、再構成されたオプティカルフローは、入力フレームの各ピクセルに対する移動の方向および移動の振幅を識別する。いくつかの態様では、再構成されるオプティカルフローは、オプティカルフロー画像を使用して識別および/または記憶される。移動の方向は、オプティカルフロー画像内の色相に基づいて識別され得る。移動の振幅は、オプティカルフロー画像内の飽和に基づいて識別され得る。図5の2Dオプティカルフロー515(fxy)はオプティカルフロー画像として示され、より暗いエリアはより高い飽和を有するエリアを表し、暗いエリアの色相は暗いエリア上にオーバーレイされたテキストを通して識別される。
動作1140において、コーデックデバイスは、再構成された重みマップを符号化ビデオデータから生成する。いくつかの例では、動作1140の再構成された重みマップは、動作1115において生成された重みマップに基づき得る。たとえば、動作1140の再構成された重みマップは、符号化ビデオデータから再構成および/または復号された動作1115の重みマップの再構成であり得る。動作1140の再構成された重みマップは、再構成された重みマップがその再構成である重みマップとの差異を含み得る。そのような差異は、たとえば、符号化ビデオデータが不可逆圧縮を使用して圧縮され、再構成プロセスが符号化ビデオデータの少なくとも一部分を復元することによって再構成された重みマップを生成する場合、再構成プロセスによって引き起こされることがある。
動作1140の再構成された重みマップの例は、再構成されたMSオプティカルフロー435
の再構成された重みマップ成分
、重みマップ530(fz)、差分インデックス付け535を使用して差分インデックス付けされた重みマップ530(fz)、図5の差分インデックス付けされた重みマップfz_0、図5の差分インデックス付けされた重みマップfz_1、図5の差分インデックス付けされた重みマップfz_2、図5の差分インデックス付けされた重みマップfz_3、重みマップ630(fz)、差分インデックス付け640を使用して差分インデックス付けされた重みマップ630(fz)、最も細かい(第0の)スケールの重みマップ650A(fz_0)、細かい(第1の)スケールの重みマップ650B(fz_1)、粗い(第2の)スケールの重みマップ650C(fz_2)、最も粗い(第3の)スケールの重みマップ650D(fz_3)、再構成されたオプティカルフロー1030
の再構成された重みマップ成分
、本明細書で論じる別のタイプの再構成された重みマップ、またはそれらの組合せを含む。コーデックデバイスは、たとえば、ダウンスケーリング540を使用して、再構成された重みマップをダウンスケーリングし得る。いくつかの例では、再構成された重みマップは、重みマップ画像を使用して識別および/または記憶されてよく、より高い重みは重みマップ画像内でより暗く出現し、より低い重みは重みマップ画像内でより明るく出現する(またはその逆)。重みマップ画像の例は、重みマップ530(fz)、図5の差分インデックス付けされた重みマップfz_0、図5の差分インデックス付けされた重みマップfz_1、図5の差分インデックス付けされた重みマップfz_2、図5の差分インデックス付けされた重みマップfz_3、重みマップ630(fz)、最も細かい(第0の)スケールの重みマップ650A(fz_0)、細かい(第1の)スケールの重みマップ650B(fz_1)、粗い(第2の)スケールの重みマップ650C(fz_2)、および最も粗い(第3の)スケールの重みマップ650D(fz_3)の例において提供されている。
いくつかの例では、コーデックデバイスは、1つまたは複数のトレーニングされたニューラルネットワークを使用して、入力フレームおよび参照フレームに基づいて、再構成された重みマップを生成する。たとえば、コーデックデバイスは、符号化デバイス104の1つまたは複数のトレーニングされたNN、復号デバイス112の1つまたは複数のトレーニングされたNN、オートエンコーダ260の1つまたは複数のトレーニングされたNN、エンコーダ250の1つまたは複数のトレーニングされたNN、デコーダ255の1つまたは複数のトレーニングされたNN、OptFlow2Dエンジン325の1つまたは複数のトレーニングされたNN、オートエンコーダ360の1つまたは複数のトレーニングされたNN、エンコーダ350の1つまたは複数のトレーニングされたNN、デコーダ355の1つまたは複数のトレーニングされたNN、OptFlowMSエンジン425の1つまたは複数のトレーニングされたNN、オートエンコーダ460の1つまたは複数のトレーニングされたNN、エンコーダ450の1つまたは複数のトレーニングされたNN、デコーダ455の1つまたは複数のトレーニングされたNN、NN800のうちの1つまたは複数、CNN900のうちの1つまたは複数、マルチスケールワーピングエンジン1000Aの1つまたは複数のNN、マルチスケールワーピングエンジン1000Bの1つまたは複数のNN、本明細書で論じる別のNN、またはそれらの組合せを使用して、再構成された重みマップを生成し得る。
動作1145において、コーデックデバイスは、少なくとも部分的に、再構成されたオプティカルフローおよび再構成された重みマップに基づいて参照フレームをワーピングすることによって、予測フレームを生成する。動作1145の予測フレームの例は、予測フレーム315A
、予測フレーム315B
、予測フレーム315C
、予測フレーム415A
、予測フレーム415B
、予測フレーム415C
、予測フレーム565
、予測フレーム1040
、本明細書で説明する別の予測フレーム、またはそれらの組合せを含む。動作1135および1145の文脈で、参照フレームは再構成された参照フレームであり得る。たとえば、参照フレームは、入力フレームの代わりに参照フレームを用いて、また参照フレームの代わりに第2の参照フレームを用いて、プロセス1100Bを使用して、プロセス1100Bに先立って再構成されていることがある。
コーデックデバイスは、1つまたは複数のトレーニングされたニューラルネットワークを使用して、動作1135の再構成されたオプティカルフローおよび動作1140の再構成された重みマップに基づいて、参照フレームをワーピングし得る。たとえば、コーデックデバイスは、符号化デバイス104の1つまたは複数のトレーニングされたNN、復号デバイス112の1つまたは複数のトレーニングされたNN、オートエンコーダ260の1つまたは複数のトレーニングされたNN、エンコーダ250の1つまたは複数のトレーニングされたNN、デコーダ255の1つまたは複数のトレーニングされたNN、OptFlow2Dエンジン325の1つまたは複数のトレーニングされたNN、Warp2Dエンジン310Aの1つまたは複数のトレーニングされたNN、Warp2Dエンジン310Bの1つまたは複数のトレーニングされたNN、Warp2Dエンジン310Cの1つまたは複数のトレーニングされたNN、オートエンコーダ360の1つまたは複数のトレーニングされたNN、エンコーダ350の1つまたは複数のトレーニングされたNN、デコーダ355の1つまたは複数のトレーニングされたNN、OptFlowMSエンジン425の1つまたは複数のトレーニングされたNN、WarpMSエンジン410Aの1つまたは複数のトレーニングされたNN、WarpMSエンジン410Bの1つまたは複数のトレーニングされたNN、WarpMSエンジン410Cの1つまたは複数のトレーニングされたNN、オートエンコーダ460の1つまたは複数のトレーニングされたNN、エンコーダ450の1つまたは複数のトレーニングされたNN、デコーダ455の1つまたは複数のトレーニングされたNN、ワープエンジン550の1つまたは複数のトレーニングされたNN、NN800のうちの1つまたは複数、CNN900のうちの1つまたは複数、マルチスケールワーピングエンジン1000Aの1つまたは複数のNN、マルチスケールワーピングエンジン1000Bの1つまたは複数のNN、本明細書で論じる別のNN、またはそれらの組合せを使用して、動作1135の再構成されたオプティカルフローおよび動作1140の再構成された重みマップに基づいて、参照フレームをワーピングし得る。
いくつかの例では、動作1135の再構成されたオプティカルフローおよび動作1140の再構成された重みマップに基づいて参照フレームをワーピングするコーデックデバイスは、いくつかの動作をそれ自体含む。たとえば、コーデックデバイスは、動作1140の再構成された重みマップに基づいて、少なくとも第1の差分インデックス付けされた重みマップおよび第2の差分インデックス付けされた重みマップを生成し得る。第1の差分インデックス付けされた重みマップおよび/または第2の差分インデックス付けされた重みマップの例は、図5の差分インデックス付けされた重みマップfz_0、図5の差分インデックス付けされた重みマップfz_1、図5の差分インデックス付けされた重みマップfz_2、図5の差分インデックス付けされた重みマップfz_3、最も細かい(第0の)スケールの重みマップ650A(fz_0)、細かい(第1の)スケールの重みマップ650B(fz_1)、粗い(第2の)スケールの重みマップ650C(fz_2)、および最も粗い(第3の)スケールの重みマップ650D(fz_3)を含む。コーデックデバイスは、差分可能インデックス付け535、差分可能インデックス付け640、またはそれらの組合せを使用して、第1の差分インデックス付けされた重みマップおよび/または第2の差分インデックス付けされた重みマップを生成し得る。コーデックデバイスは、少なくとも部分的に、再構成されたオプティカルフローに基づいて参照フレームをワーピングすることによって、第1のワーピングフレームを生成し得る。コーデックデバイスは、少なくとも部分的に、再構成されたオプティカルフローのダウンスケーリングされたバリアントに基づいて参照フレームのダウンスケーリングされたバリアントをワーピングすることによって、第2のワーピングフレームを生成し得る。図5のワーピング動作550を参照すると、コーデックデバイスは、式の以下の部分
を使用して第1のワーピングフレームおよび/または第2のワーピングフレームを生成し得る。第1のワーピングフレームおよび第2のワーピングフレームは異なり得るが、それはiの異なる値が式において使用されるためである。たとえば、第1のワーピングフレームの場合、iは0であってよく、第2のワーピングフレームの場合、iは0より大きい正の整数(たとえば、1、2、3)であってよい。
コーデックデバイスは、ダウンスケーリング510を使用して、参照フレームのダウンスケーリングされたバリアントをダウンスケーリングし得る。コーデックデバイスは、ダウンスケーリング520を使用して、再構成されたオプティカルフローのダウンスケーリングされたバリアントをダウンスケーリングし得る。いくつかの態様では、コーデックデバイスは、ダウンスケーリング520を使用してダウンスケーリングする前または後に、再構成されたオプティカルフローのダウンスケーリングされたバリアントの振幅525を調整することもできる。コーデックデバイスは、第1のワーピングフレームと第1の差分インデックス付けされた重みマップの第1の積を決定し得る。コーデックデバイスは、第2のワーピングフレームと第2の差分インデックス付けされた重みマップの第2の積を決定し得る。図5のワーピング動作550を参照すると、コーデックデバイスは、式
を使用して第1の積および/または第2の積を生成し得る。第1の積および第2の積は異なり得るが、これはiの異なる値が式において使用されるためである。たとえば、第1の積の場合、iは0であってよく、第2の積の場合、iは0より大きい正の整数(たとえば、1、2、3)であってよい。コーデックデバイスは、第1積と第2の積のアップスケーリングされたバリアントの合計を決定し得る。コーデックデバイスは、アップスケーリング555を使用して第2の積のアップスケーリングされたバリアントに対するアップスケーリングを実行し得る。コーデックデバイスは、合計560を使用して合計を決定し得る。合計は、動作1145の予測フレームを生成し得る。たとえば、図5を参照すると、合計560は予測フレーム565
を生成する。
いくつかの例では、動作1140において生成される、再構成された重みマップは、参照フレームの第1の領域に対するしきい値を越える値を含み、参照フレームの第2の領域に対するしきい値未満の値を含む。動作1130において受信される符号化ビデオデータは、第1の細部レベルで符号化された第1の領域に対応するデータを含み得、粗い細部レベルで符号化された第2の領域に対応するデータを含み得る。たとえば、しきい値は、図6を参照すると、0.25、0.50、または0.75であってく、これは、異なる細かさおよび粗さレベルの異なるスケーリングされた重みマップ650A~650Dに重みマップ630を差分可能インデックス付けするための差分可能インデックス付け640のためにこれらの値が使用されるためである。しきい値は、図7A~図7Bの曲線710、715、720、または725のうちのいずれか1つまたは複数に対する変曲点、交差点、最大値、最小値、またはそれらの何らかの組合せであってよい。たとえば、しきい値は、0.1、0.2、0.25、0.3、0.4、0.5、0.6、0.7、0.75、0.8、0.9、0.1未満の値、0.9よりも大きい値、またはいずれかの2つの前に列挙した値間の値であってよい。
動作1150において、コーデックデバイスは、予測フレームに基づいて、入力フレームに基づく再構成された入力フレームを生成する。入力フレームに基づく再構成された入力フレームは、入力フレームの再構成である、再構成された入力フレームを含み得る。いくつかの例では、動作1150の再構成された入力フレームは、動作1105の入力フレームに基づき得る。たとえば、動作1140の再構成された入力フレームは、予測フレーム(また、いくつかの例では、再構成された残差)に基づいて再構成される、動作1105の入力フレームの再構成であり得る。動作1150の再構成された入力フレームは、再構成された入力フレームがその再構成である入力フレームとの差異を含み得る。そのような差異は、たとえば、符号化ビデオデータが不可逆圧縮を使用して圧縮され、再構成された入力フレームが符号化ビデオデータの少なくとも一部分から復元された、再構成されたデータに基づく予測フレームを使用して生成される場合、再構成プロセスによって引き起こされることがある。
いくつかの例では、コーデックデバイスは、残差に基づく、再構成された残差を符号化ビデオデータから生成する。動作1150において再構成された入力フレームを生成するために、1つまたは複数のプロセッサは、(動作1145の)予測フレームおよび再構成された残差に基づいて、再構成された入力フレームを生成するように構成され得、またそれを生成し得る。残差に基づく再構成された残差は、コーデックデバイスが符号化ビデオデータの少なくとも一部分から再構成した残差の再構成である、再構成された残差を含み得る。再構成された残差は、再構成された残差がその再構成である残差との差異を含み得る。そのような差異は、たとえば、符号化ビデオデータが不可逆圧縮を使用して圧縮され、再構成プロセスが符号化ビデオデータの少なくとも一部分を復元することによって、再構成された残差を生成する場合、再構成プロセスによって引き起こされることがある。
再構成された残差の例は、再構成された残差345
、再構成された残差445
、再構成された残差1035
、本明細書で説明する別の再構成された残差、またはそれらの組合せを含む。残差の例は、残差340(r)、残差440(r)、図10Aの残差(r)(図示せず)、図10Bの残差(r)(図示せず)、本明細書で説明する別の残差、またはそれらの組合せを含む。
いくつかの例では、残差は入力フレームと予測フレームとの間の差異に基づく。そのような残差の例は、図3Aの残差340(r)および図4Aの残差440(r)を含む。
いくつかの例では、残差は入力フレームと第2の予測フレームとの間の差異に基づく。第2の予測フレームは、オプティカルフローおよび重みマップに基づいてワーピングされた参照フレームのバリアントである。オプティカルフローおよび重みマップは、参照フレームおよび入力フレームに基づいて生成されていることがある。そのような残差の例は、図3Bの残差340(r)および図4Bの残差440(r)を含む。図3Bの文脈で、予測フレーム315C
は第2の予測フレームの一例であり得、予測フレーム315B
は動作1145の予測フレームの一例であり得る。図3Bの文脈で、第2の予測フレームは、オプティカルフロー330(f2D)および/または重みマップ(図3Bに示されていない)に基づいてワーピングされた参照フレーム305
のバリアントであり得る。図4Bの文脈で、第2の予測フレームは、オプティカルフロー成分およびマルチスケールフロー430(fMS)の重みマップ成分に基づいてワーピングされた参照フレーム405
のバリアントであり得る。
いくつかの例では、図11Bのプロセス1100Bを実行するコーデックデバイスは、図11Bのプロセス1100Bの一部として、図11Aのプロセス1100Aの一部として本明細書で説明する1つまたは複数の動作を実行し得る。いくつかの例では、図11Aのプロセス1100Aを実行するコーデックデバイスは、図11Aのプロセス1100Aの一部として、図11Bのプロセス1100Bの一部として本明細書で説明する1つまたは複数の動作を実行し得る。
場合によっては、図11A~図11Bの流れ図が示すプロセス1100Aならびに図1、図2、図3A、図3B、図4A、図4B、図5、図6、図8、図9、図10A、および図10Bの概念図において示す技法の少なくともサブセットは、クラウドサービスの1つまたは複数のネットワークサーバによってリモートで実行され得る。いくつかの例では、本明細書で説明するプロセス(たとえば、プロセス1100A、1100B、および/もしくは図1、図2、図3A、図3B、図4A、図4B、図5、図6、図8、図9、図10A、および図10Bの概念図において示す技法、ならびに/または本明細書で説明する他のプロセス)は、コンピューティングシステムまたは装置によって実行され得る。いくつかの例では、プロセス1100A、1100B、ならびに/または図1、図2、図3A、図3B、図4A、図4B、図5、図6、図8、図9、図10A、および図10Bの概念図において示す技法は、符号化デバイス104、復号デバイス112、ビデオソース102、ビデオ宛先デバイス122、コーデックシステム295、オートエンコーダ260、エンコーダ250、デコーダ255、コーデックシステム395A、コーデックシステム395B、オートエンコーダ360、エンコーダ350、デコーダ355、OptFlow2Dエンジン325、Warp2Dエンジン310A、Warp2Dエンジン310B、Warp2Dエンジン310C、コーデックシステム495A、コーデックシステム495B、オートエンコーダ460、エンコーダ450、デコーダ455、OptFlow3Dエンジン425、WarpMSエンジン410A、WarpMSエンジン410B、WarpMSエンジン410C、ニューラルネットワーク(NN)800、畳み込みニューラルネットワーク(CNN)900、マルチスケールワーピングエンジン1000A、マルチスケールワーピングエンジン1000B、画像キャプチャデバイス、ビデオキャプチャデバイス、画像処理デバイス、ビデオ処理デバイス、画像キャプチャおよび処理デバイス、ビデオキャプチャおよび処理デバイス、カメラ、モバイルハンドセット、ウェアラブルデバイス、ヘッドマウントディスプレイ(HMD)デバイス、車両、クラウドサービスの1つまたは複数のネットワークサーバ、コンピューティングシステム1200、本明細書で論じる別のタイプのシステムもしくはデバイスのうちの1つまたは複数、あるいはそれらの何らかの組合せによって実行され得る。プロセス1100A、1100B、ならびに/または図1、図2、図3A、図3B、図4A、図4B、図5、図6、図8、図9、図10A、および図10Bの概念図において示す技法は、図12に示すコンピューティングシステム1200のアーキテクチャを備えたコンピューティングシステムによって実行され得る。コンピューティングシステムは、モバイルデバイス(たとえば、モバイルフォン)、デスクトップコンピューティングシステム、タブレットコンピューティングシステム、ウェアラブルデバイス(たとえば、VRヘッドセット、ARヘッドセット、ARグラス、ネットワーク接続ウォッチもしくはスマートウォッチ、または他のウェアラブルデバイス)、カメラデバイス、サーバコンピュータ、車両もしくは車両のコンピューティングシステム、無人車両もしく無人車両のコンピューティングシステム、ロボットデバイス、テレビ、ならびに/またはプロセス1100A、1100Bおよび/もしくは図1、図2、図3A、図3B、図4A、図4B、図5、図6、図8、図9、図10A、および図10Bの概念図において示す技法を含めて、本明細書で説明するプロセスを実行するためのリソース能力を備えた任意の他のコンピューティングシステムなど、任意の好適なデバイスを含み得る。場合によっては、コンピューティングシステムまたは装置は、1つまたは複数の入力デバイス、1つまたは複数の出力デバイス、1つまたは複数のプロセッサ、1つまたは複数のマイクロプロセッサ、1つまたは複数のマイクロコンピュータ、1つまたは複数のカメラ、1つまたは複数のセンサー、および/または本明細書で説明するプロセスのステップを行うように構成される他の構成要素などの、様々な構成要素を含んでもよい。いくつかの例では、コンピューティングシステムは、ディスプレイ、データを通信および/または受信するように構成されたネットワークインターフェース、それらの任意の組合せ、ならびに/または他の構成要素を含んでよい。ネットワークインターフェースは、インターネットプロトコル(IP)ベースのデータまたは他のタイプのデータを通信および/または受信するように構成され得る。
コンピューティングシステムの構成要素は、回路で実装されてもよい。たとえば、構成要素は、1つまたは複数のプログラム可能電子回路(たとえば、マイクロプロセッサ、グラフィックス処理装置(GPU)、デジタル信号プロセッサ(DSP)、中央処理装置(CPU)、および/または他の適切な電子回路)を含み得る、電子回路もしくは他の電子ハードウェアを含むことができ、かつ/またはそれらを使用して実装することが可能であり、かつ/あるいは、本明細書で説明する様々な動作を実行するために、コンピュータソフトウェア、ファームウェア、もしくはこれらの任意の組合せを含むことができ、かつ/またはそれらを使用して実装することが可能である。
図1、図2、図3A、図3B、図4A、図4B、図5、図6、図8、図9、図10A、および図10Bの概念図、ならびに図11A~図11Bの流れ図が示すプロセスは、論理流れ図として編成され、その動作はハードウェア、コンピュータ命令、またはそれらの組合せで実装され得る動作のシーケンスを表す。コンピュータ命令の文脈で、動作は、1つまたは複数のプロセッサによって実行されたとき、記載された動作を実行する、1つまたは複数のコンピュータ可読記憶媒体上に記憶されたコンピュータ実行可能命令を表す。一般に、コンピュータ実行可能命令は、特定の機能を実行するかまたは特定のデータタイプを実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。動作が説明される順序は、限定として解釈されることを意図せず、説明する任意の数の動作は、プロセスを実装するために任意の順序で、かつ/または並列に組み合わせられ得る。
加えて、図1、図2、図3A、図3B、図4A、図4B、図5、図6、図8、図9、図10A、および図10Bの概念図、ならびに図11A~図11Bの流れ図が示すプロセス、ならびに/または本明細書で説明する他のプロセスは、実行可能命令を用いて構成された1つまたは複数のコンピュータシステムの制御下で実行されてもよく、ハードウェアまたはその組合せによって1つまたは複数のプロセッサ上で集合的に実行するコード(たとえば、実行可能命令、1つまたは複数のコンピュータプログラム、または1つまたは複数のアプリケーション)として実装され得る。上述のように、コードは、たとえば、1つまたは複数のプロセッサによって実行可能な複数の命令を備えるコンピュータプログラムの形で、コンピュータ可読記憶媒体または機械可読記憶媒上に記憶されてもよい。コンピュータ可読記憶媒体または機械可読記憶媒体は非一時的であってもよい。
図12は、本技術のいくつかの態様を実装するためのシステムの一例を示す図である。具体的には、図12はコンピューティングシステム1200の一例を示し、これは、たとえば、内部コンピューティングシステム、リモートコンピューティングシステム、カメラ、またはそれらの任意の構成要素を構成する任意のコンピューティングデバイスとすることができ、システムの構成要素は接続1205を使用して互いに通信している。接続1205は、バスを使用した物理接続、またはチップセットアーキテクチャなどにおけるプロセッサ1210への直接接続とすることができる。接続1205はまた、仮想接続、ネットワーク接続、または論理接続とすることができる。
いくつかの実施形態では、コンピューティングシステム1200は、本開示で説明する機能が、データセンター、複数のデータセンター、ピアネットワークなどに分散することができる分散型システムである。いくつかの実施形態では、説明するシステム構成要素の1つまたは複数は、構成要素の説明の対象である機能の一部またはすべてを各々実行するような多くの構成要素を表す。いくつかの実施形態では、構成要素は物理デバイスまたは仮想デバイスとすることができる。
例示的なシステム1200は、少なくとも1つの処理装置(CPUまたはプロセッサ)1210と、読取り専用メモリ(ROM)1220およびランダムアクセスメモリ(RAM)1225などのシステムメモリ1215を含む様々なシステム構成要素をプロセッサ1210に結合する接続1205とを含む。コンピューティングシステム1200は、プロセッサ1210と直接接続されるか、それに極めて近接しているか、またはその一部として統合される、高速メモリのキャッシュ1212を含むことができる。
プロセッサ1210は、プロセッサ1210、ならびにソフトウェア命令が実際のプロセッサ設計へと組み込まれるような専用プロセッサを制御するように構成される、ストレージデバイス1230内に記憶されるサービス1232、1234、および1236などの、任意の汎用プロセッサおよびハードウェアサービスまたはソフトウェアサービスを含むことができる。プロセッサ1210は基本的に、複数のコアまたはプロセッサ、バス、メモリコントローラ、キャッシュなどを含む、完全に自己完結型のコンピューティングシステムであってもよい。マルチコアプロセッサは、対称でも非対称でもよい。
ユーザ対話を可能にするために、コンピューティングシステム1200は入力デバイス1245を含み、発話のためのマイクロフォン、ジェスチャ入力またはグラフィカル入力のためのタッチ感知スクリーン、キーボード、マウス、モーション入力、発話などの、任意の数の入力機構を表すことができる。コンピューティングシステム1200は出力デバイス1235も含むことができ、これはいくつかの出力機構のうちの1つまたは複数とすることができる。いくつかの事例では、マルチモーダルシステムは、ユーザが複数のタイプの入力/出力を提供してコンピューティングシステム1200と通信することを可能にできる。コンピューティングシステム1200は通信インターフェース1240を含むことができ、これは全般に、ユーザ入力およびシステム出力を支配して管理することができる。通信インターフェースは、オーディオジャック/プラグ、マイクロフォンジャック/プラグ、ユニバーサルシリアルバス(USB)ポート/プラグ、Apple(登録商標)Lightning(登録商標)ポート/プラグ、イーサネットポート/プラグ、光ファイバポート/プラグ、プロプライエタリワイヤードポート/プラグ、BLUETOOTH(登録商標)ワイヤレス信号伝送、BLUETOOTH(登録商標)低エネルギー(BLE)ワイヤレス信号伝送、IBEACON(登録商標)ワイヤレス信号伝送、無線周波数識別(RFID)ワイヤレス信号伝送、近距離通信(NFC)ワイヤレス信号伝送、専用短距離通信(DSRC)ワイヤレス信号伝送、802.11 Wi-Fiワイヤレス信号伝送、ワイヤレスローカルエリアネットワーク(WLAN)信号伝送、可視光通信(VLC)、ワールドワイドインターオペラビリティフォーマイクロウェーブアクセス(WiMAX)、赤外線(IR)通信ワイヤレス信号伝送、公衆交換電話網(PSTN)信号伝送、統合サービスデジタルネットワーク(ISDN)信号伝送、3G/4G/5G/LTEセルラーデータネットワークワイヤレス信号伝送、アドホックネットワーク信号伝送、無線波信号伝送、マイクロ波信号伝送、赤外線信号伝送、可視光信号伝送、紫外光信号伝送、電磁スペクトルに沿ったワイヤレス信号伝送、またはこれらの何らかの組合せを利用したものを含む、ワイヤードおよび/またはワイヤレストランシーバを使用したワイヤード通信またはワイヤレス通信の、受信および/または送信を実行または促進し得る。通信インターフェース1240はまた、1つまたは複数の全地球航法衛星システム(GNSS)システムに関連する1つまたは複数の衛星からの1つまたは複数の信号の受信に基づいて、コンピューティングシステム1200の位置を決定するために使用される、1つまたは複数のGNSS受信機またはトランシーバを含んでよい。GNSSシステムは、限定はしないが、米国の全地球測位システム(GPS)、ロシアの全地球航法衛星システム(GLONASS)、中国の北斗航法衛星システム(BDS)、および欧州のGalileo GNSSを含む。いずれの特定のハードウェア構成上で動作することに対し制約がないので、ここではこの基本的な特徴は、開発されるにつれて、改善されたハードウェアまたはファームウェアの構成により容易に置き換えられることがある。
ストレージデバイス1230は、不揮発性および/または非一時的および/またはコンピュータ可読のメモリデバイスであってよく、ハードディスク、または磁気カセット、フラッシュメモリカード、ソリッドステートメモリデバイス、デジタル多用途ディスク、カートリッジ、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、磁気ストリップ/ストライプ、任意の他の磁気記憶媒体、フラッシュメモリ、メモリスタメモリ、任意の他のソリッドステートメモリ、コンパクトディスク読取り専用メモリ(CD-ROM)光ディスク、再書き込み可能コンパクトディスク(CD)光ディスク、デジタルビデオディスク(DVD)光ディスク、ブルーレイディスク(BDD)光ディスク、ホログラフィック光ディスク、別の光媒体、セキュアデジタル(SD)カード、マイクロセキュアデジタル(microSD)カード、メモリスティック(登録商標)カード、スマートカードチップ、EMVチップ、加入者識別モジュール(SIM)カード、ミニ/マイクロ/ナノ/ピコSIMカード、別の集積回路(IC)チップ/カード、ランダムアクセスメモリ(RAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、読取り専用メモリ(ROM)、プログラマブル読取り専用メモリ(PROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM)、フラッシュEPROM(FLASHEPROM)、キャッシュメモリ(L1/L2/L3/L4/L5/L#)、抵抗性ランダムアクセスメモリ(RRAM/ReRAM)、位相変化メモリ(PCM)、スピン転送トルクRAM(STT-RAM)、別のメモリチップもしくはカートリッジ、および/またはそれらの組合せなどの、コンピュータによってアクセス可能であるデータを記憶できる他のタイプのコンピュータ可読媒体であってよい。
ストレージデバイス1230は、そのようなソフトウェアを定義するコードがプロセッサ1210によって実行されるとシステムに機能を実行させる、ソフトウェアサービス、サーバ、サービスなどを含むことができる。いくつかの実施形態では、特定の機能を実行するハードウェアサービスは、機能を実行するために、プロセッサ1210、接続1205、出力デバイス1235などの必要なハードウェア構成要素と接続している、コンピュータ可読媒体内に記憶されているソフトウェア構成要素を含むことができる。
本明細書で使用する「コンピュータ可読媒体」という用語は、限定はしないが、ポータブルまたは非ポータブルのストレージデバイス、光ストレージデバイス、ならびに命令および/またはデータを記憶、格納、または搬送することが可能な様々な他の媒体を含む。コンピュータ可読媒体は、データが記憶されることが可能な、かつワイヤレスにまたはワイヤード接続を介して伝搬する搬送波および/または一時的な電子信号を含まない、非一時的媒体を含んでよい。非一時的媒体の例は、限定はしないが、磁気ディスクもしくはテープ、コンパクトディスク(CD)もしくはデジタル多用途ディスク(DVD)などの光記憶媒体、フラッシュメモリ、メモリ、またはメモリデバイスを含んでよい。コンピュータ可読媒体は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造、もしくはプログラムステートメントの任意の組合せを表すことがある、コードおよび/または機械実行可能命令を記憶していることがある。コードセグメントは、情報、データ、引数、パラメータ、またはメモリ内容を渡すことおよび/または受けることによって、別のコードセグメントまたはハードウェア回路に結合されてよい。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む、任意の好適な手段を使用して渡され、転送され、または送信されてよい。
いくつかの実施形態では、コンピュータ可読ストレージデバイス、媒体、およびメモリは、ビットストリームなどを含むケーブルまたはワイヤレス信号を含み得る。しかしながら、言及されるとき、非一時的コンピュータ可読記憶媒体は、エネルギー、キャリア信号、電磁波、および信号それ自体などの媒体を明確に除く。
本明細書で提供する実施形態および例の完全な理解を与えるために、上記の説明において具体的な詳細が提供されている。しかしながら、本実施形態がこれらの具体的な詳細なしに実践され得ることが当業者によって理解されよう。説明を明快にするために、いくつかの事例では、本技術は、デバイス、デバイス構成要素、ソフトウェアで具現される方法におけるステップまたはルーチン、またはハードウェアとソフトウェアとの組合せを備える、機能ブロックを含む個々の機能ブロックを含むものとして提示されることがある。図に示すものおよび/または本明細書で説明するもの以外の追加の構成要素が使用されてよい。たとえば、不必要な詳細で実施形態を不明瞭にしないように、回路、システム、ネットワーク、プロセス、および他の構成要素がブロック図の形態で構成要素として示されることがある。他の事例では、実施形態を不明瞭にすることを避けるために、よく知られている回路、プロセス、アルゴリズム、構造、および技法は、不必要な詳細なしに示されることがある。
個々の実施形態が、フローチャート、流れ図、データフロー図、構造図、またはブロック図として示されるプロセスまたは方法として上で説明されることがある。フローチャートは動作を逐次プロセスとして説明することがあるが、動作の多くは並行してまたは同時に実行することができる。加えて、動作の順序は並べ替えられてよい。プロセスは、その動作が完了するときに終了するが、図に含まれない追加のステップを有することができる。プロセスは、メソッド、関数、プロシージャ、サブルーチン、サブプログラムなどに対応してもよい。プロセスが関数に対応するとき、その終了は、その関数が呼出し関数またはメイン関数に戻ることに対応することができる。
上記で説明した例によるプロセスおよび方法は、記憶されたまたは他の方法でコンピュータ可読媒体から入手可能なコンピュータ実行可能命令を使用して実装することができる。そのような命令は、たとえば、汎用コンピュータ、専用コンピュータ、もしくは処理デバイスに特定の機能もしくは機能のグループを実行させるか、または特定の機能もしくは機能のグループを実行するように汎用コンピュータ、専用コンピュータ、もしくは処理デバイスを他の方法で構成する、命令およびデータを含むことができる。使用されるコンピュータリソースの部分は、ネットワークを介してアクセス可能であることができる。コンピュータ実行可能命令は、たとえば、アセンブリ言語、ファームウェア、ソースコードなどの、バイナリ、中間フォーマット命令であってもよい。命令、使用される情報、および/または説明した例による方法の間に作成される情報を記憶するために使用されることがあるコンピュータ可読媒体の例は、磁気または光ディスク、フラッシュメモリ、不揮発性メモリを備えたUSBデバイス、ネットワーク接続されたストレージデバイスなどを含む。
これらの開示によるプロセスおよび方法を実装するデバイスは、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せを含むことができ、様々なフォームファクタのうちのいずれかをとることができる。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実装されるとき、必要なタスクを実行するためのプログラムコードまたはコードセグメント(たとえば、コンピュータプログラム製品)は、コンピュータ可読媒体または機械可読媒体の中に記憶されてよい。プロセッサは、必要なタスクを実行してよい。フォームファクタの典型的な例は、ラップトップ、スマートフォン、モバイルフォン、タブレットデバイスまたは他の小型フォームファクタパーソナルコンピュータ、携帯情報端末、ラックマウントデバイス、スタンドアロンデバイスなどを含む。本明細書で説明する機能性はまた、周辺装置またはアドインカードの中で具現され得る。そのような機能性はまた、さらなる例として、異なるチップの中の回路基板上、または単一のデバイスの中で実行する異なるプロセス上で実装され得る。
命令、そのような命令を伝えるための媒体、命令を実行するためのコンピューティングリソース、およびそのようなコンピューティングリソースをサポートするための他の構造は、本開示で説明する機能を提供するための例示的な手段である。
上記の説明では、本出願の態様はそれらの特定の実施形態を参照しながら説明されるが、本出願がそれらに限定されないことを当業者は認識されよう。したがって、本出願の例示的な実施形態が本明細書で詳細に説明されているが、本発明の概念が別のやり方で様々に具現および採用され得ることと、従来技術によって限定される場合を除き、添付の特許請求の範囲がそのような変形を含むものと解釈されることが意図されることとを理解されたい。上記で説明した適用例の様々な特徴および態様は、個別にまたは共同で使用され得る。さらに、実施形態は、本明細書のより広い趣旨および範囲から逸脱することなく、本明細書で説明するもの以外の任意の数の環境および適用例において利用され得る。したがって、本明細書および図面は、限定的ではなく例示的であると見なされるべきである。例示のために、方法は特定の順序で説明された。代替実施形態では、方法は説明された順序とは異なる順序で実行されてもよいことを諒解されたい。
本明細書において使用される、未満(「<」)およびよりも大きい(「>」)という記号または用語は、本記述の範囲から逸脱することなく、それぞれ、以下(「≦」)および以上(「≧」)という記号で置き換えられることが可能であることが、当業者には諒解されよう。
構成要素がいくつかの動作を実行する「ように構成される」ものとして説明される場合、そのような構成は、たとえば、動作を実行するように電子回路もしくは他のハードウェアを設計することによって、動作を実行するようにプログラマブル電子回路(たとえば、マイクロプロセッサ、または他の適切な電子回路)をプログラムすることによって、またはそれらの任意の組合せで達成することができる。
「に結合される」という句は、直接もしくは間接的にのいずれかで別の構成要素に物理的に接続される任意の構成要素、および/または、直接もしくは間接的にのいずれかで別の構成要素と通信している(たとえば、ワイヤードもしくはワイヤレス接続および/または他の好適な通信インターフェースを介して他の構成要素に接続された)任意の構成要素を指す。
セット「のうちの少なくとも1つ」および/またはセットのうちの「1つまたは複数」と記載する請求項の文言または他の文言は、セットの1つのメンバーまたはセットの(任意の組合せでの)複数のメンバーが請求項を満足することを示す。たとえば、「AおよびBのうちの少なくとも1つ」を記載する請求項の文言は、A、B、またはAおよびBを意味する。別の例では、「A、B、およびCのうちの少なくとも1つ」を記載する請求項の文言は、A、B、C、またはAおよびB、またはAおよびC、またはBおよびC、またはAおよびBおよびCを意味する。セット「の少なくとも1つ」および/またはセットの「1つまたは複数」という文言は、セットに列挙される項目にセットを限定しない。たとえば、「AおよびBのうちの少なくとも1つ」を記述する請求項の文言は、A、B、またはAおよびBを意味することができ、加えて、AおよびBのセットに列挙されていない項目をさらに含むことができる。
本明細書で開示する実施形態に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらの組合せとして実装され得る。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、概してそれらの機能に関して上記で説明された。そのような機能がハードウェアとして実装されるかまたはソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明する機能を特定の適用例ごとに様々な方法で実装することができるが、そのような実装決定は、本出願の範囲からの逸脱を引き起こすものと解釈されるべきではない。
本明細書で説明する技法はまた、電子ハードウェア、コンピュータソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装されてもよい。そのような技法は、汎用コンピュータ、ワイヤレス通信デバイスハンドセット、またはワイヤレス通信デバイスハンドセットおよび他のデバイスにおける適用例を含む複数の用途を有する集積回路デバイスなどの、様々なデバイスのうちのいずれかにおいて実装されてもよい。モジュールまたは構成要素として説明する任意の特徴は、集積論理デバイスの中で一緒に、または個別であるが相互動作可能な論理デバイスとして別々に実装されてもよい。ソフトウェアで実装される場合、技法は、実行されると、上で説明された方法のうちの1つまたは複数を実行する命令を含むプログラムコードを備える、コンピュータ可読データ記憶媒体によって少なくとも部分的に実現されてよい。コンピュータ可読データ記憶媒体は、パッケージング材料を含み得るコンピュータプログラム製品の一部を形成し得る。コンピュータ可読媒体は、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM)、FLASHメモリ、磁気または光データ記憶媒体などの、メモリまたはデータ記憶媒体を備えてよい。技法は、追加または代替として、伝搬される信号または波などの、命令またはデータ構造の形態のプログラムコードを搬送または通信するとともに、コンピュータによってアクセスされ、読み取られ、かつ/または実行され得る、コンピュータ可読通信媒体によって少なくとも部分的に実現されてよい。
プログラムコードは、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の均等な集積論理回路構成もしくは個別論理回路構成などの、1つまたは複数のプロセッサを含み得るプロセッサによって実行されてよい。そのようなプロセッサは、本開示で説明する技法のうちのいずれかを実行するように構成され得る。汎用プロセッサはマイクロプロセッサであってよいが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装されてよい。したがって、本明細書で使用する「プロセッサ」という用語は、上記の構造、上記の構造の任意の組合せ、または本明細書で説明する技法の実装に適した任意の他の構造もしくは装置のうちのいずれかを指すことがある。加えて、いくつかの態様では、本明細書で説明する機能性は、符号化および復号のために構成された専用のソフトウェアモジュールもしくはハードウェアモジュール内に設けられてよく、または複合ビデオエンコーダデコーダ(コーデック)の中に組み込まれてよい。
本開示の例示的な態様は以下を含む。
態様1: データ符号化のための装置であって、メモリと、メモリに結合される1つまたは複数のプロセッサとを備え、1つまたは複数のプロセッサが、第1の時間におけるシーンを示す入力フレームと第2の時間におけるシーンを示す参照フレームとを含むビデオデータを受信することと、入力フレームおよび参照フレームに基づいてオプティカルフローを生成することであって、オプティカルフローが、参照フレームと入力フレームとの間のシーンの1つまたは複数のエリア内の1つまたは複数の移動を識別する、生成することと、参照フレームおよび入力フレームに基づいて重みマップを生成することと、少なくとも部分的にオプティカルフローおよび重みマップに基づいてビデオデータを符号化することによって、符号化ビデオデータを生成することとを行うように構成される、装置。
態様2: 第1の時間が第2の時間の後である、態様1の装置。
態様3: 参照フレームが符号化ビデオデータ内でイントラコーディングされたフレームとして符号化され、入力フレームが符号化ビデオデータ内でインターコーディングされたフレームとして符号化される、態様1または2の装置。
態様4: 1つまたは複数のプロセッサが、少なくとも部分的にオプティカルフローおよび重みマップに基づいて参照フレームをワーピングすることによって、予測フレームを生成することと、入力フレームと予測フレームとの間の差異に基づいて残差を生成することとを行うように構成され、オプティカルフローおよび重みマップに基づいてビデオデータを符号化するために、1つまたは複数のプロセッサが、残差に基づいてビデオデータを符号化するように構成される、態様1から3のいずれかの装置。
態様5: オプティカルフローおよび重みマップに基づいて参照フレームをワーピングするために、1つまたは複数のプロセッサが、1つまたは複数のトレーニングされたニューラルネットワークを使用するように構成される、態様1から4のいずれかの装置。
態様6: オプティカルフローおよび重みマップに基づいて参照フレームをワーピングするために、1つまたは複数のプロセッサが、重みマップに基づいて少なくとも第1の差分インデックス付けされた重みマップおよび第2の差分インデックス付けされた重みマップを生成することと、少なくとも部分的にオプティカルフローに基づいて参照フレームをワーピングすることによって、第1のワーピングフレームを生成することと、少なくとも部分的にオプティカルフローのダウンスケーリングされたバリアントに基づいて参照フレームのダウンスケーリングされたバリアントをワーピングすることによって、第2のワーピングフレームを生成することと、第1のワーピングフレームと第1の差分インデックス付けされた重みマップの第1の積を決定することと、第2のワーピングフレームと第2の差分インデックス付けされた重みマップの第2の積を決定することと、第1の積と第2の積のアップスケーリングされたバリアントの合計を決定することとを行うように構成される、態様1から5のいずれかの装置。
態様7: 1つまたは複数のプロセッサが、オプティカルフローに基づいて、再構成されたオプティカルフローを生成することと、重みマップに基づいて、再構成された重みマップを生成することと、少なくとも部分的に、再構成されたオプティカルフローおよび再構成された重みマップに基づいて参照フレームをワーピングすることによって、予測フレームを生成することと、入力フレームと予測フレームとの間の差異に基づいて残差を生成することとを行うように構成され、オプティカルフローおよび重みマップに基づいてビデオデータを符号化するために、1つまたは複数のプロセッサが、残差に基づいてビデオデータを符号化するように構成される、態様1から6のいずれかの装置。
態様8: オプティカルフローに基づいて、再構成されたオプティカルフローを生成するために、1つまたは複数のプロセッサが、オートエンコーダを使用するように構成される、態様1から7のいずれかの装置。
態様9: 再構成されたオプティカルフローおよび再構成された重みマップに基づいて参照フレームをワーピングするために、1つまたは複数のプロセッサが、1つまたは複数のトレーニングされたニューラルネットワークを使用するように構成される、態様1から8のいずれかの装置。
態様10: 再構成されたオプティカルフローおよび再構成された重みマップに基づいて参照フレームをワーピングするために、1つまたは複数のプロセッサが、再構成された重みマップに基づいて、少なくとも第1の差分インデックス付けされた重みマップおよび第2の差分インデックス付けされた重みマップを生成することと、少なくとも部分的に、再構成されたオプティカルフローに基づいて参照フレームをワーピングすることによって、第1のワーピングフレームを生成することと、少なくとも部分的に、再構成されたオプティカルフローのダウンスケーリングされたバリアントに基づいて参照フレームのダウンスケーリングされたバリアントをワーピングすることによって、第2のワーピングフレームを生成することと、第1のワーピングフレームと第1の差分インデックス付けされた重みマップの第1の積を決定することと、第2のワーピングフレームと第2の差分インデックス付けされた重みマップの第2の積を決定することと、第1の積と第2の積のアップスケーリングされたバリアントの合計を決定することとを行うように構成される、態様1から9のいずれかの装置。
態様11: 重みマップが、参照フレームの第1の領域に対するしきい値よりも大きい値を含み、重みマップが、参照フレームの第2の領域に対するしきい値未満の値を含み、符号化ビデオデータが、細かい細部レベルで符号化された第1の領域に対応するデータを含み、符号化ビデオデータが、粗い細部レベルで符号化された第2の領域に対応するデータを含む、態様1から10のいずれかの装置。
態様12: オプティカルフローが2次元オプティカルフローであり、1つまたは複数の移動が2つの直交する寸法を有する平面に沿う、態様1から11のいずれかの装置。
態様13: オプティカルフローが、入力フレームの各ピクセルに対する移動の方向および移動の振幅を識別する、態様1から12のいずれかの装置。
態様14: オプティカルフローがオプティカルフロー画像を使用して識別され、移動の方向が、オプティカルフロー画像内の色相に基づいて識別され、移動の振幅が、オプティカルフロー画像内の飽和に基づいて識別される、態様1から13のいずれかの装置。
態様15: オプティカルフローを生成するために、1つまたは複数のプロセッサが、1つまたは複数のトレーニングされたニューラルネットワークを使用するように構成される、態様1から14のいずれかの装置。
態様16: 重みマップを生成するために、1つまたは複数のプロセッサが、1つまたは複数のトレーニングされたニューラルネットワークを使用するように構成される、態様1から15のいずれかの装置。
態様17: 符号化ビデオデータが、1つまたは複数のビデオデコーダ規格に準拠するデコーダを使用して復号可能である、態様1から16のいずれかの装置。
態様18: オプティカルフローおよび重みマップに基づいてビデオデータを符号化するために、1つまたは複数のプロセッサが、オプティカルフローおよび重みマップに基づいてビデオデータを圧縮するように構成される、態様1から17のいずれかの装置。
態様19: 装置が、モバイルデバイス、ワイヤレス通信デバイス、およびカメラデバイスのうちの1つである、態様1から18のいずれかの装置。
態様20: 装置がカメラを含み、ビデオデータがカメラによってキャプチャされる、態様1から19のいずれかの装置。
態様21: データ符号化の方法であって、第1の時間におけるシーンを示す入力フレームと第2の時間におけるシーンを示す参照フレームとを含むビデオデータを受信するステップと、入力フレームおよび参照フレームに基づいてオプティカルフローを生成するステップであって、オプティカルフローが、参照フレームと入力フレームとの間のシーンの1つまたは複数のエリア内の1つまたは複数の移動を識別する、ステップと、参照フレームおよび入力フレームに基づいて重みマップを生成するステップと、少なくとも部分的にオプティカルフローおよび重みマップに基づいてビデオデータを符号化することによって、符号化ビデオデータを生成するステップとを含む、方法。
態様22: 第1の時間が第2の時間の後である、態様21の方法。
態様23: 参照フレームが符号化ビデオデータ内でイントラコーディングされたフレームとして符号化され、入力フレームが符号化ビデオデータ内でインターコーディングされたフレームとして符号化される、態様21または22の方法。
態様24: 少なくとも部分的にオプティカルフローおよび重みマップに基づいて参照フレームをワーピングすることによって、予測フレームを生成するステップと、入力フレームと予測フレームとの間の差異に基づいて残差を生成するステップとをさらに含み、オプティカルフローおよび重みマップに基づいてビデオデータを符号化するステップが、残差に基づいてビデオデータを符号化するステップを含む、態様21から23のいずれかの方法。
態様25: オプティカルフローおよび重みマップに基づいて参照フレームをワーピングするステップが、オプティカルフローおよび重みマップに基づいて、1つまたは複数のトレーニングされたニューラルネットワークを使用して、参照フレームをワーピングするステップを含む、態様21から24のいずれかの方法。
態様26: オプティカルフローおよび重みマップに基づいて参照フレームをワーピングするステップが、重みマップに基づいて、少なくとも第1の差分インデックス付けされた重みマップおよび第2の差分インデックス付けされた重みマップを生成するステップと、少なくとも部分的にオプティカルフローに基づいて参照フレームをワーピングすることによって、第1のワーピングフレームを生成するステップと、少なくとも部分的にオプティカルフローのダウンスケーリングされたバリアントに基づいて参照フレームのダウンスケーリングされたバリアントをワーピングすることによって、第2のワーピングフレームを生成するステップと、第1のワーピングフレームと第1の差分インデックス付けされた重みマップの第1の積を決定するステップと、第2のワーピングフレームと第2の差分インデックス付けされた重みマップの第2の積を決定するステップと、第1の積と第2の積のアップスケーリングされたバリアントの合計を決定するステップとを含む、態様21から25のいずれかの方法。
態様27: オプティカルフローに基づいて、再構成されたオプティカルフローを生成するステップと、重みマップに基づいて、再構成された重みマップを生成するステップと、少なくとも部分的に、再構成されたオプティカルフローおよび再構成された重みマップに基づいて参照フレームをワーピングすることによって、予測フレームを生成するステップと、入力フレームと予測フレームとの間の差異に基づいて残差を生成するステップとをさらに含み、オプティカルフローおよび重みマップに基づいてビデオデータを符号化するステップが、残差に基づいてビデオデータを符号化するステップを含む、態様21から26のいずれかの方法。
態様28: オプティカルフローおよび重みマップに基づいて参照フレームをワーピングするステップが、オプティカルフローおよび重みマップに基づいて、オートエンコーダを使用して、参照フレームをワーピングするステップを含む、態様21から27のいずれかの方法。
態様29: オプティカルフローおよび重みマップに基づいて参照フレームをワーピングするステップが、オプティカルフローおよび重みマップに基づいて、1つまたは複数のトレーニングされたニューラルネットワークを使用して、参照フレームをさーピングするステップを含む、態様21から24のいずれかの方法。
態様30: 再構成されたオプティカルフローおよび再構成された重みマップに基づいて参照フレームをワーピングするステップが、再構成された重みマップに基づいて、少なくとも第1の差分インデックス付けされた重みマップおよび第2の差分インデックス付けされた重みマップを生成するステップと、少なくとも部分的に、再構成されたオプティカルフローに基づいて参照フレームをワーピングすることによって、第1のワーピングフレームを生成するステップと、少なくとも部分的に、再構成されたオプティカルフローのダウンスケーリングされたバリアントに基づいて前記参照フレームのダウンスケーリングされたバリアントをワーピングすることによって、第2のワーピングフレームを生成するステップと、第1のワーピングフレームと第1の差分インデックス付けされた重みマップの第1の積を決定するステップと、第2のワーピングフレームと第2の差分インデックス付けされた重みマップの第2の積を決定するステップと、第1の積と第2の積のアップスケーリングされたバリアントの合計を決定するステップとを含む、態様21から29のいずれかの方法。
態様31: 重みマップが、参照フレームの第1の領域に対するしきい値よりも大きい値を含み、重みマップが、参照フレームの第2の領域に対するしきい値未満の値を含み、符号化ビデオデータが、細かい細部レベルで符号化された第1の領域に対応するデータを含み、符号化ビデオデータが、粗い細部レベルで符号化された第2の領域に対応するデータを含む、態様21から30のいずれかの装置。
態様32: オプティカルフローが2次元オプティカルフローであり、1つまたは複数の移動が2つの直交する寸法を有する平面に沿う、態様21から31のいずれかの方法。
態様33: オプティカルフローが、入力フレームの各ピクセルに対する移動の方向および移動の振幅を識別する、態様21から32のいずれかの方法。
態様34: オプティカルフローがオプティカルフロー画像を使用して識別され、移動の方向が、オプティカルフロー画像内の色相に基づいて識別され、移動の振幅が、オプティカルフロー画像内の飽和に基づいて識別される、態様21から33のいずれかの方法。
態様35: 入力フレームおよび参照フレームに基づいてオプティカルフローを生成するステップが、入力フレームおよび参照フレームに基づいて、1つまたは複数のトレーニングされたニューラルネットワークを使用して、オプティカルフローを生成するステップを含む、態様21から34のいずれかの方法。
態様36: 参照フレームおよび入力フレームに基づいて重みマップを生成するステップが、参照フレームおよび入力フレームに基づいて、1つまたは複数のトレーニングされたニューラルネットワークを使用して、重みマップを生成するステップを含む、態様21から35のいずれかの方法。
態様37: 符号化ビデオデータが、1つまたは複数のビデオデコーダ規格に準拠するデコーダを使用して復号可能である、態様21から36のいずれかの方法。
態様38: オプティカルフローおよび重みマップに基づいてビデオデータを符号化するステップが、オプティカルフローおよび重みマップに基づいてビデオデータを圧縮するステップを含む、態様21から37のいずれかの方法。
態様39: データ復号のための装置であって、メモリと、メモリに結合される1つまたは複数のプロセッサとを備え、1つまたは複数のプロセッサが、符号化ビデオデータを受信することと、参照フレームと入力フレームとの間のシーンの1つまたは複数のエリア内の1つまたは複数の移動を識別する、再構成されたオプティカルフローを符号化ビデオデータから生成することであって、参照フレームおよび入力フレームが異なる時間におけるシーンを示す、生成することと、再構成された重みマップを符号化ビデオデータから生成することと、少なくとも部分的に、再構成されたオプティカルフローおよび再構成された重みマップに基づいて参照フレームをワーピングすることによって、予測フレームを生成することと、予測フレームに基づいて、入力フレームに基づく再構成された入力フレームを生成することとを行うように構成される、装置。
態様40: 1つまたは複数のプロセッサが、残差に基づく再構成された残差を符号化ビデオデータから生成するように構成され、再構成された入力フレームを生成するために、1つまたは複数のプロセッサが、予測フレームおよび再構成された残差に基づいて、再構成された入力フレームを生成するように構成される、態様39の装置。
態様41: 残差が入力フレームと予測フレームとの間の差異に基づく、態様40の装置。
態様42: 残差が入力フレームと第2の予測フレームとの間の差異に基づき、第2の予測フレームが、オプティカルフローおよび重みマップに基づいてワーピングされた参照フレームのバリアントであり、オプティカルフローおよび重みマップが、参照フレームおよび入力フレームに基づいて生成されている、態様40の装置。
態様43: 再構成されたオプティカルフローおよび再構成された重みマップに基づいて参照フレームをワーピングするために、1つまたは複数のプロセッサが、再構成された重みマップに基づいて、少なくとも第1の差分インデックス付けされた重みマップおよび第2の差分インデックス付けされた重みマップを生成することと、少なくとも部分的に、再構成されたオプティカルフローに基づいて参照フレームをワーピングすることによって、第1のワーピングフレームを生成することと、少なくとも部分的に、再構成されたオプティカルフローのダウンスケーリングされたバリアントに基づいて参照フレームのダウンスケーリングされたバリアントをワーピングすることによって、第2のワーピングフレームを生成することと、第1のワーピングフレームと第1の差分インデックス付けされた重みマップの第1の積を決定することと、第2のワーピングフレームと第2の差分インデックス付けされた重みマップの第2の積を決定することと、第1の積と第2の積のアップスケーリングされたバリアントの合計を決定することとを行うように構成される、態様39から42のいずれかの装置。
態様44: 再構成されたオプティカルフローおよび再構成された重みマップに基づいて参照フレームをワーピングするために、1つまたは複数のプロセッサが、1つまたは複数のトレーニングされたニューラルネットワークを使用するように構成される、態様39から43のいずれかの装置。
態様45: 再構成されたオプティカルフローを符号化ビデオデータから生成するために、1つまたは複数のプロセッサが、1つまたは複数のトレーニングされたニューラルネットワークを使用するように構成される、態様39から44のいずれかの装置。
態様46: 再構成された重みマップを符号化ビデオデータから生成するために、1つまたは複数のプロセッサが、1つまたは複数のトレーニングされたニューラルネットワークを使用するように構成される、態様39から45のいずれかの装置。
態様47: データ復号のための方法であって、符号化ビデオデータを受信するステップと、参照フレームと入力フレームとの間のシーンの1つまたは複数のエリア内の1つまたは複数の移動を識別する、再構成されたオプティカルフローを符号化ビデオデータから生成するステップであって、参照フレームおよび入力フレームが、異なる時間におけるシーンを示す、ステップと、再構成された重みマップを符号化ビデオデータから生成するステップと、少なくとも部分的に、再構成されたオプティカルフローおよび再構成された重みマップに基づいて参照フレームをワーピングすることによって、予測フレームを生成するステップと、予測フレームに基づいて、入力フレームに基づく再構成された入力フレームを生成するステップとを含む、方法。
態様48: 残差に基づく再構成された残差を符号化ビデオデータから生成するステップであって、再構成された入力フレームを生成するステップが、予測フレームおよび再構成された残差に基づいて、再構成された入力フレームを生成するステップを含む、ステップをさらに含む、態様47に記載の方法。
態様49: 残差が入力フレームと予測フレームとの間の差異に基づく、態様48に記載の方法。
態様50: 残差が入力フレームと第2の予測フレームとの間の差異に基づき、第2の予測フレームが、オプティカルフローおよび重みマップに基づいてワーピングされた参照フレームのバリアントであり、オプティカルフローおよび重みマップが、参照フレームおよび入力フレームに基づいて生成されている、態様48の方法。
態様51: 再構成されたオプティカルフローおよび再構成された重みマップに基づいて参照フレームをワーピングするステップが、再構成された重みマップに基づいて、少なくとも第1の差分インデックス付けされた重みマップおよび第2の差分インデックス付けされた重みマップを生成するステップと、少なくとも部分的に、再構成されたオプティカルフローに基づいて参照フレームをワーピングすることによって、第1のワーピングフレームを生成するステップと、少なくとも部分的に、再構成されたオプティカルフローのダウンスケーリングされたバリアントに基づいて参照フレームのダウンスケーリングされたバリアントをワーピングすることによって、第2のワーピングフレームを生成するステップと、第1のワーピングフレームと第1の差分インデックス付けされた重みマップの第1の積を決定するステップと、第2のワーピングフレームと第2の差分インデックス付けされた重みマップの第2の積を決定するステップと、第1の積と第2の積のアップスケーリングされたバリアントの合計を決定するステップとを含む、態様47から50のいずれかの方法。
態様52: 再構成されたオプティカルフローおよび再構成された重みマップに基づいて参照フレームをワーピングするステップが、再構成されたオプティカルフローおよび再構成された重みマップに基づいて、1つまたは複数のトレーニングされたニューラルネットワークを使用して、参照フレームをワーピングするステップを含む、態様47から51のいずれかの方法。
態様53: 再構成されたオプティカルフローを符号化ビデオデータから生成するステップが、1つまたは複数のトレーニングされたニューラルネットワークを使用して、再構成されたオプティカルフローを符号化ビデオデータから生成するステップを含む、態様47から52のいずれかの方法。
態様54: 再構成された重みマップを符号化ビデオデータから生成するステップが、1つまたは複数のトレーニングされたニューラルネットワークを使用して、再構成された重みマップを符号化ビデオデータから生成するステップを含む、態様47から53のいずれかの方法。
態様55: 態様21から38のいずれか、および/または態様47から54のいずれかによる動作を実行するための手段を備える、デジタル撮像のための装置。
態様56: 実行されると、1つまたは複数のプロセッサに態様21から38のいずれか、および/または態様47から54のいずれかによる動作を実行させる命令を記憶する、コンピュータ可読記憶媒体。