以下では、本開示のいくつかの実施形態が図面を参照して説明される。図1ないし図3は、さらなる図に記載されている本発明のより具体的な実施形態と一緒に使用されうるビデオ・コーディング・システムおよび方法を指す。具体的には、図1ないし図3に関連して記載されている実施形態は、ビットストリームのエンコードおよび/またはビットストリームのデコードのためにニューラルネットワークを利用する、後述のエンコード/デコード技法とともに使用されうる。
以下の説明では、添付の図面を参照する。図面は、開示の一部をなし、例示として、本開示の個別的な側面または本開示の実施形態が使用されうる個別的な側面を示す。これらの実施形態は、他の側面で使用されてもよく、図に示されていない構造的または論理的な変更を含んでいてもよいことが理解される。したがって、以下の詳細な説明は、限定する意味では解釈されず、本開示の範囲は、添付の請求項によって定義される。
たとえば、記述される方法に関連する開示は、その方法を実行するように構成された対応する装置またはシステムについても当てはまることがあり、その逆のありうることが理解される。たとえば、一つまたは複数の具体的な方法ステップが記述されている場合、対応する装置は、記述された一つまたは複数の方法ステップを実行するために、一つまたは複数のユニット、たとえば機能ユニットを含む場合がある。一方、たとえば一つまたは複数のユニット、たとえば機能ユニットを含んでいてもよい(たとえば、1つのユニットが前記一つまたは複数のステップを実行する、または複数のユニットがそれぞれ前記複数のステップのうちの一つまたは複数を実行する)。たとえそのような一つまたは複数のユニットが図に明示的に記述または図示されていない場合でもそうである。他方、たとえば、具体的な装置が一つまたは複数のユニット、たとえば機能ユニットに基づいて記述される場合、対応する方法は、前記一つまたは複数のユニットの機能を実行するための1つのステップを含んでいてもよい(たとえば、1つのステップが前記一つまたは複数のユニットの機能を実行する、または複数のステップがそれぞれ前記複数のユニットのうちの一つまたは複数のユニットの機能を実行する)。たとえそのような一つまたは複数のステップが図に明示的に記述または図示されていない場合でもそうである。さらに、ここに記述されたさまざまな例示的な実施形態および/または側面の特徴は、特にそうでない旨の断りがない限り、互いと組み合わされることができることが理解される。
ビデオ・コーディングは典型的には、ビデオまたはビデオ・シーケンスを形成するピクチャーのシーケンスの処理を指す。ビデオ・コーディングの分野では、「ピクチャー」という用語の代わりに、「フレーム」または「画像」という用語が同義語として使用されることがある。ビデオコーディング(または一般にコーディング)は、ビデオ・エンコードとビデオ・デコードの2つの部分を含む。ビデオ・エンコードはソース側で実行され、典型的には、もとのビデオ・ピクチャーを(たとえば圧縮によって)処理して、ビデオ・ピクチャーを表すために必要とされるデータの量を削減することを含む(より効率的な保存および/または伝送のため)。ビデオ・デコードは宛先側で実行され、典型的には、ビデオ・ピクチャーを再構成するために、エンコーダと比較して逆の処理を含む。ビデオピクチャー(または一般にピクチャー)の「コーディング」に言及する実施形態は、ビデオ・ピクチャーまたはそれぞれのビデオ・シーケンスの「エンコード」または「デコード」に関連するものと理解される。エンコード部分とデコード部分の組み合わせは、コーデック(コーディングおよびデコーディング)とも呼ばれる。
可逆ビデオ・コーディングの場合、もとのビデオ・ピクチャーを再構成することができる。すなわち、再構成されたビデオ・ピクチャーはもとのビデオ・ピクチャーと同じ品質をもつ(記憶または伝送の際の伝送損失またはその他のデータ損失がないものとする)。不可逆ビデオ・コーディングの場合、ビデオ・ピクチャーを表すデータの量を減らすために、たとえば量子化によってさらなる圧縮が実行され、ビデオ・ピクチャーはデコーダにおいて完全には再構成できない、すなわち再構成されたビデオ・ピクチャーの品質はもとのビデオ・ピクチャーの品質に比べて低い、または悪い。
いくつかのビデオ・コーディング規格は、「不可逆ハイブリッド・ビデオ・コーデック」のグループの属する(すなわち、サンプル領域での空間的および時間的予測と、変換領域で量子化を適用するための2D変換コーディングを組み合わせる)。ビデオ・シーケンスの各ピクチャーは、典型的には、重複しないブロックの集合にパーティション分割され、コーディングは典型的には、ブロック・レベルで実行される。つまり、エンコーダでは、ビデオは典型的にはブロック(ビデオ・ブロック)レベルで処理される、すなわちエンコードされる。これはたとえば、空間的(ピクチャー内)予測および/または時間的(ピクチャー間)予測を使用して予測ブロックを生成し、現在のブロック(現在処理されている/処理されるべきブロック)から予測ブロックを減算して残差ブロックを取得し、残差ブロックを変換し、変換領域で残差ブロックを量子化して、伝送されるデータの量を減らす(圧縮)ことによる。一方、デコーダでは、エンコーダと比較して逆の処理が、エンコードされたまたは圧縮されたブロックに適用されて、現在のブロックを表現のために再構成する。さらに、エンコーダはデコーダ処理ループを複製し、両方が同一の予測(たとえば、イントラ予測およびインター予測)および/または再構築を、その後のブロックを処理する、すなわちコーディングするために生成するようにする。最近では、いくつかの部分またはエンコードおよびデコード・チェーン全体が、ニューラルネットワーク、または一般に任意の機械学習または深層学習フレームワークを使用して実装されている。
下記では、ビデオ・コーディング・システム10、ビデオ・エンコーダ20およびビデオ・デコーダ30の実施形態が、図1に基づいてについて記述される。
図1Aは、本願の技法を利用しうる例示的なコーディング・システム10、たとえば、ビデオ・コーディング・システム10(または短くコーディング・システム10)を示す概略ブロック図である。ビデオ・コーディング・システム10のビデオ・エンコーダ20(または短くエンコーダ20)とビデオ・デコーダ30(または短くデコーダ30)は、本願で説明されているさまざまな例による技法を実行するように構成されうるデバイスの例を表す。
図1Aに示されるように、コーディング・システム10は、エンコードされたピクチャー・データ13をデコードするために、たとえば宛先デバイス14に、エンコードされたピクチャー・データ21を提供するように構成されたソース・デバイス12を有する。
ソース・デバイス12は、エンコーダ20を有しており、追加的に、すなわち任意的に、ピクチャー・ソース16、プリプロセッサ(または前処理ユニット)18、たとえばピクチャー・プリプロセッサ18、および通信インターフェースまたは通信ユニット22を有していてもよい。本開示のいくつかの実施形態(たとえば、初期の再スケーリングまたは2つの進行する層の間の再スケーリングに関連するもの)は、エンコーダ20によって実装されうる。いくつかの実施形態(たとえば、初期の再スケーリングに関連するもの)は、ピクチャー・プリプロセッサ18によって実装することができる。
ピクチャー・ソース16は、たとえば現実世界の写真を撮影するためのカメラなどの任意の種類のピクチャー捕捉デバイス、および/または任意の種類のピクチャー生成デバイス、たとえばコンピュータアニメーショ化されたピクチャーを生成するためのコンピュータグラフィックスプロセッサ、または現実世界のピクチャー、コンピュータ生成されたピクチャー(たとえば画面コンテンツ、仮想現実(VR)ピクチャー)および/またはそれらの任意の組み合わせ(たとえば拡張現実(AR)ピクチャー)を取得および/または提供するための任意の種類の他のデバイスを含んでいてもよく、あるいはかかるデバイスであってもよい。ピクチャー・ソースは、前述のピクチャーのいずれかを記憶する任意の種類のメモリまたは記憶であってもよい。
ピクチャーまたはピクチャー・データ17は、プリプロセッサ18および前処理ユニット18によって実行される処理と区別して、生ピクチャーまたは生ピクチャー・データ17と呼ばれることもある。
プリプロセッサ18は、(生)ピクチャー・データ17を受領し、ピクチャー・データ17に対して前処理を実行して、前処理されたピクチャー19または前処理されたピクチャー・データ19を取得するように構成されている。プリプロセッサ18によって実行される前処理は、たとえば、トリミング、色フォーマット変換(たとえばRGBからYCbCrへ)、色補正、またはノイズ除去を含むことができる。前処理ユニット18は任意的なコンポーネントであることが理解できる。
ビデオ・エンコーダ20は、前処理されたピクチャー・データ19を受領し、エンコードされたピクチャー・データ21を提供するように構成される(さらなる詳細は、以下で、たとえば図25に基づいて説明される)。エンコーダ20は、処理回路46を介して実装され、図25のエンコーダ20および/またはここに記載されている他の任意のエンコーダ・システムまたはサブシステムに関して議論されているようなさまざまなモジュールを具現することができる。
ソース・デバイス12の通信インターフェース22は、エンコードされたピクチャー・データ21を受領し、エンコードされたピクチャー・データ21(またはそのさらに処理されたバージョン)を、記憶または直接再構成のために、通信チャネル13を通じて別のデバイス、たとえば宛先デバイス14または他の任意のデバイスに送信するように構成されてもよい。
宛先デバイス14は、デコーダ30(たとえばビデオ・デコーダ30)を有しており、さらに、すなわち任意的に、通信インターフェースまたは通信ユニット28、ポストプロセッサ32(または後処理ユニット32)、および表示デバイス34を有していてもよい。
宛先デバイス14の通信インターフェース28は、エンコードされたピクチャー・データ21(またはそのさらに処理されたバージョン)を、たとえばソース・デバイス12から直接、または他の任意のソース、たとえば記憶デバイス、たとえばエンコードされたピクチャー・データの記憶デバイスから受領し、該エンコードされたピクチャー・データ21をデコーダ30に提供するように構成されている。
通信インターフェース22および通信インターフェース28は、エンコードされたピクチャー・データ21またはエンコードされたデータ13を、ソース・デバイス12と宛先デバイス14との間の直接通信リンク、たとえば直接の有線または無線の接続を介して、または任意の種類のネットワーク、たとえば有線または無線ネットワークまたはそれらの任意の組み合わせ、または任意の種類の私設および公共ネットワーク、またはそれらの任意の種類の組み合わせを介して、送信または受信するように構成されてもよい。
通信インターフェース22は、たとえば、エンコードされたピクチャー・データ21を適切なフォーマット、たとえばパケットにパッケージ化し、および/または通信リンクもしくは通信ネットワークを通じた伝送のために任意の種類の伝送エンコードまたは処理を使用して、エンコードされたピクチャー・データを処理するように構成されてもよい。
通信インターフェース22の相手となる通信インターフェース28は、たとえば、送信されたデータを受領し、任意の種類の対応する伝送デコードまたは処理および/またはパッケージング解除を使用して伝送データを処理し、エンコードされたピクチャー・データ21を取得するように構成されてもよい。
通信インターフェース22と通信インターフェース28はどちらも、ソース・デバイス12から宛先デバイス14をポイントする図1Aにおける通信チャネル13についての矢印によって示されているように、一方向の通信インターフェースとして構成されてもよく、または双方向の通信インターフェースとして構成されてもよく、たとえば、メッセージを送信および受信して、たとえば接続をセットアップする、受け取り確認する、および通信リンクおよび/またはデータ伝送に関連する他の任意の情報、たとえば、エンコードされたピクチャー・データ伝送を交換するように構成されてもよい。
デコーダ30は、エンコードされたピクチャー・データ21を受領し、デコードされたピクチャー・データ31またはデコードされたピクチャー31を提供するように構成される(さらなる詳細は下記で、たとえば図3および図26に基付いて記述される)。デコーダ30は、処理回路46を介して実装され、図26のデコーダ30および/またはここに記載されている他の任意のデコーダ・システムまたはサブシステムに関して議論されているさまざまなモジュールを具現してもよい。
宛先デバイス14のポストプロセッサ32は、デコードされたピクチャー・データ31(再構成されたピクチャー・データとも呼ばれる)、たとえば、デコードされたピクチャー31を後処理して、後処理されたピクチャー・データ33、たとえば、後処理されたピクチャー33を取得するように構成されている。後処理ユニット32によって実行される後処理は、たとえば、色フォーマット変換(たとえばYCbCrからRGBへ)、色補正、トリミング、または再サンプリング、または他の任意の処理を、たとえば、デコードされたピクチャー・データ31を表示デバイス34などによる表示のために整えるために、含んでいてもよい。
本開示のいくつかの実施形態は、デコーダ30またはポストプロセッサ32によって実装されてもよい。
宛先デバイス14の表示デバイス34は、後処理されたピクチャー・データ33を、たとえばユーザーまたは閲覧者に対してピクチャーを表示するために受領するように構成される。表示デバイス34は、再構成されたピクチャーを表現するための任意の種類のディスプレイ、たとえば統合されたまたは外部のディスプレイまたはモニターであってもよく、またそれを含んでいてもよい。ディスプレイは、たとえば、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)ディスプレイ、プラズマディスプレイ、プロジェクター、マイクロLEDディスプレイ、液晶オンシリコン(LCoS)、デジタルライトプロセッサ(DLP)または任意の種類の他のディスプレイを含みうる。
図1Aは、ソース・デバイス12と宛先デバイス14を別個のデバイスとして示しているが、デバイスの実施形態は、ソース・デバイス12または対応する機能と宛先デバイス14または対応する機能の両方または両方の機能を含んでいてもよい。そのような実施形態では、ソース・デバイス12または対応する機能と宛先デバイス14または対応する機能は、同じハードウェアおよび/またはソフトウェアを使用して、または別個のハードウェアおよび/またはソフトウェアまたはそれらの任意の組み合わせによって実装されてもよい。
本説明に基づいて当業者に明らかなように、図1Aに示されるような、ソース・デバイス12および/または宛先デバイス14内の種々のユニットまたは機能の存在および(厳密な)分割は、実際のデバイスおよび用途に依存して異なることがある。
エンコーダ20(たとえばビデオ・エンコーダ20)またはデコーダ30(たとえばビデオ・デコーダ30)、またはエンコーダ20とデコーダ30の両方は、図1Bに示されるような処理回路、たとえば、一つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、離散論理、ハードウェア、ビデオ・コーディング専用、またはそれらの任意の組み合わせを介して実装されてもよい。エンコーダ20は、さまざまなモジュールおよび/またはここに記載されている他のエンコーダ・システムまたはサブシステムを具現する処理回路46を介して実装されてもよい。デコーダ30は、さまざまなモジュールおよび/またはここに記載されている他のデコーダ・システムまたはサブシステムを具現する処理回路46を介して実装されてもよい。処理回路は、後述するようにさまざまな動作を実行するように構成されてもよい。図3に示されるように、技術が部分的にソフトウェアで実装されている場合、デバイスは、該ソフトウェアのための命令を、好適な、非一時的なコンピュータ可読記憶媒体に記憶してもよく、本開示の技術を実行するために一つまたは複数のプロセッサを使用してハードウェアで該命令を実行してもよい。ビデオ・エンコーダ20とビデオ・デコーダ30のいずれかが、たとえば図1Bに示されるように、単一のデバイス内の組み合わされたエンコーダ/デコーダ(コーデック)の一部として統合されてもよい。
ソース・デバイス12と宛先デバイス14は、任意の種類のハンドヘルドまたは固定デバイス、たとえば、ノートブックまたはラップトップコンピュータ、携帯電話、スマートフォン、タブレットまたはタブレットコンピュータ、カメラ、デスクトップコンピュータ、セットトップボックス、テレビ、表示デバイス、デジタルメディアプレーヤー、ビデオゲーム機、ビデオストリーミングデバイス(たとえばコンテンツサービスサーバーまたはコンテンツデリバリサーバー)、放送受信機デバイス、放送送信機デバイスなどを含む、幅広い範囲のデバイスのうちの任意のものを含んでいてもよく、オペレーティングシステムを使用しなくてもよく、あるいは任意の種類のオペレーティングシステムを使用してもよい。場合によっては、ソース・デバイス12と宛先デバイス14が無線通信のために装備されていてもよい。よって、ソース・デバイス12と宛先デバイス14は無線通信デバイスであってもよい。
場合によっては、図1Aに示されているビデオ・コーディング・システム10は単に例であり、本願の技術は、必ずしもエンコードデバイスとデコードデバイスとの間の何らかのデータ通信を含まないビデオ・コーディング場面(たとえば、ビデオ・エンコードまたはビデオ・デコード)に適用することができる。他の例では、データがローカルメモリから取得される、ネットワークを通じてストリーミングされる、などする。ビデオ・エンコード・デバイスは、データをエンコードしてメモリに記憶してもよく、および/またはビデオ・デコード・デバイスは、メモリからデータを取得してデコードしてもよい。いくつかの例では、エンコードとデコードは、互いに通信せず、単にデータをメモリにエンコードする、および/またはデータをメモリから取得してデコードするデバイスによって実行される。
説明の便宜上、ここでは、いくつかの実施形態について、たとえば、高効率ビデオコーディング(HEVC)を参照して、または多用途ビデオコーディング(VVC)という、ITU-Tビデオ・コーディング専門家グループ(VCEG)およびISO/IEC動画像専門家グループ(MPEG)のビデオ・コーディングに関する合同協働チーム(JCT-VC)によって開発された次世代ビデオ・コーディング規格を参照して記述される。当業者は、本発明の実施形態がHEVCまたはVVCに限定されないことを理解するであろう。
図2は、本開示のある実施形態によるビデオ・コーディング・デバイス400の概略図である。ビデオ・コーディング・デバイス400は、ここで記載されるような開示される実施形態を実装するのに好適である。ある実施形態では、ビデオ・コーディング・デバイス400は、図1Aのビデオ・デコーダ30のようなデコーダまたは図1Aのビデオ・エンコーダ20のようなエンコーダでもあってもよい。
ビデオ・コーディング・デバイス400は、データを受領するための進入ポート410(または入力ポート410)と受信機ユニット(Rx)420;データを処理するためのプロセッサ、論理ユニット、または中央処理装置(CPU)430;データを送信するための送信機ユニット(Tx)440および進出ポート450(または出力ポート450);およびデータを記憶するためのメモリ460を有する。ビデオ・コーディング・デバイス400は、光または電気信号の進出または進入のために、進入ポート410、受信機ユニット420、送信機ユニット440、および進出ポート450に結合された光対電気(OE)コンポーネントおよび電気対光(EO)コンポーネントをも有していてもよい。
プロセッサ430はハードウェアとソフトウェアによって実装される。プロセッサ430は一つまたは複数のCPUチップ、コア(たとえば、マルチコアプロセッサとして)、FPGA、ASIC、DSPとして実装されうる。プロセッサ430は、進入ポート410、受信機ユニット420、送信機ユニット440、進出ポート450、およびメモリ460と通信している。プロセッサ430は、コーディング・モジュール470を有する。コーディング・モジュール470は、上述の開示された実施形態を実装している。たとえば、コーディング・モジュール470は、さまざまなコーディング動作を実装、処理、準備、または提供する。したがって、コーディング・モジュール470を含めることは、ビデオ・コーディング・デバイス400の機能に対する実質的な改善を提供し、ビデオ・コーディング・デバイス400の、異なる状態への変換をもたらす。あるいはまた、コーディング・モジュール470は、メモリ460に記憶され、プロセッサ430によって実行される命令として実装される。
メモリ460は、一つまたは複数のディスク、テープドライブ、ソリッドステートドライブを含んでいてもよく、オーバーフローデータ記憶デバイスとして使用されて、プログラムを、そのようなプログラムが実行のために選択されたときに記憶し、プログラム実行中に読まれる命令およびデータを記憶してもよい。メモリ460は、たとえば、揮発性および/または不揮発性であってもよく、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、三値連想メモリ(Ternary Content-Addressable Memory、TCAM)、および/または静的ランダムアクセスメモリ(SRAM)であってもよい。
図3は、ある例示的な実施形態に従って、図1からのソース・デバイス12および宛先デバイス14のいずれかまたは両方として使用されうる装置500の簡略化されたブロック図である。
装置500内のプロセッサ502は中央処理装置であることができる。あるいはまた、プロセッサ502は、現在存在するまたは今後開発される、情報を操作または処理することができる、他の任意のタイプのデバイスまたは複数のデバイスであることができる。開示された実装は、図示されるような単一のプロセッサ、たとえばプロセッサ502を用いて実施されることができるが、複数のプロセッサを使用して速度と効率における利点は達成することができる。
装置500内のメモリ504は、ある実装ではリードオンリーメモリ(ROM)デバイスまたはランダムアクセスメモリ(RAM)デバイスであることができる。他の任意の好適なタイプの記憶デバイスがメモリ504として使用されることができる。メモリ504は、バス512を使用してプロセッサ502によってアクセスされるコードとデータ506を含むことができる。メモリ504はさらに、オペレーティングシステム508とアプリケーションプログラム510を含むことができ、アプリケーションプログラム510は、プロセッサ502がここで説明する方法を実行できるようにする少なくとも一つのプログラムを含む。たとえば、アプリケーションプログラム510は、ここで説明する方法を実行するビデオ・コーディング・アプリケーションをさらに含む、アプリケーション1ないしNを含むことができる。
装置500は、ディスプレイ518のような一つまたは複数の出力デバイスをも含むことができる。ディスプレイ518は、一例では、タッチ入力を感知するように動作可能なタッチ感応性素子とディスプレイを組み合わせたタッチ感応性ディスプレイであってもよい。ディスプレイ518は、バス512を介してプロセッサ502に結合されることができる。
ここでは単一のバスとして描かれているが、装置500のバス512は複数のバスで構成されることができる。さらに、二次記憶514は、装置500の他のコンポーネントに直接結合されることができ、あるいはネットワークを介してアクセスされることができ、メモリカードのような単一の統合されたユニットまたは複数のメモリカードのような複数のユニットを含むことができる。よって、装置500は、幅広い多様な構成で実装されることができる。
図25は、本願の技術を実装するように構成された例示的なビデオ・エンコーダ20の概略ブロック図を示す。図25の例では、ビデオ・エンコーダ20は、入力201(または入力インターフェース201)、残差計算ユニット204、変換処理ユニット206、量子化ユニット208、逆量子化ユニット210、および逆変換処理ユニット212、再構成ユニット214、ループフィルタユニット220、デコードピクチャーバッファ(decoded picture buffer、DPB)230、モード選択ユニット260、エントロピー・エンコード・ユニット270、および出力272(または出力インターフェース272)を有する。モード選択ユニット260は、インター予測ユニット244、イントラ予測ユニット254、およびパーティション分割ユニット262を含んでいてもよい。インター予測ユニット244は、動き推定ユニットおよび動き補償ユニット(図示せず)を含んでいてもよい。図25に示されるビデオ・エンコーダ20は、ハイブリッド・ビデオ・エンコーダまたはハイブリッド・ビデオ・コーデックに従ったビデオ・エンコーダと呼ばれることもある。
エンコーダ20は、たとえば入力201を介して、ピクチャー17(またはピクチャー・データ17)、たとえばビデオまたはビデオ・シーケンスを形成するピクチャーのシーケンスのピクチャーを受領するように構成されてもよい。受領されたピクチャーまたはピクチャー・データは、前処理されたピクチャー19(または前処理されたピクチャーデータ19)であってもよい。簡単のため、以下の記述はピクチャー17に言及する。ピクチャー17は、現在のピクチャーまたはコーディングされるべきピクチャーと呼ばれることもある(特に、ビデオ・コーディングにおいて、現在のピクチャーを他のピクチャー、たとえば、同じビデオ・シーケンス、すなわち現在のピクチャーも含むビデオ・シーケンスの、以前にエンコードおよび/またはデコードされたピクチャーから区別するために)。
(デジタル)ピクチャーは、強度値をもつサンプルの二次元配列またはマトリクスと見なすことができる。配列内のサンプルは、ピクセル(ピクチャーエレメントの省略形)またはペルと呼ばれることもある。配列またはピクチャーの水平方向と垂直方向(または軸)のサンプル数は、ピクチャーのサイズおよび/または解像度を定義する。色の表現のためには、典型的には、3つの色成分が用いられる。すなわち、ピクチャーは3つのサンプル配列で表されてもよく、あるいは3つのサンプル配列を含んでいてもよい。RGBフォーマットまたは色空間では、ピクチャーは対応する赤、緑、青のサンプル配列を含む。ただし、ビデオ・コーディングでは、各ピクセルは典型的には、ルミナンスおよびクロミナンスのフォーマットまたは色空間で表される。たとえば、YCbCrは、Y(代わりにLが使用されることもある)によって示されるルミナンス成分と、CbとCrによって示される2つのクロミナンス成分を含む。ルミナンス(または短くルーマ)成分Yは、(たとえばグレースケールのピクチャーにおけるような)輝度またはグレーレベル強度を表し、2つのクロミナンス(または短くクロマ)成分CbとCrは色度または色情報成分を表す。よって、YCbCrフォーマットのピクチャーは、ルミナンス・サンプル値(Y)のルミナンス・サンプル配列と、クロミナンス値(CbとCr)の2つのクロミナンス・サンプル配列を含む。RGBフォーマットのピクチャーはYCbCrフォーマットに変換または転換されてもよく、その逆がなされてもよい。このプロセスは色変換または転換としても知られる。ピクチャーがモノクロの場合、ピクチャーはルミナンス・サンプル配列のみを含んでいてもよい。よって、ピクチャーは、たとえば、モノクロ・フォーマットにおけるルーマ・サンプルの配列、または4:2:0、4:2:2、および4:4:4色フォーマットにおけるルーマ・サンプルの配列と、クロマ・サンプルの2つの対応する配列であってもよい。
ビデオ・エンコーダ20の実施形態は、ピクチャー17を複数の(典型的には重複しない)ピクチャー・ブロック203にパーティション分割するように構成されたピクチャー・パーティション分割ユニット(図2には描かれていない)を有していてもよい。これらのブロックは、ルート・ブロック、マクロ・ブロック(H.264/AVC)またはコーディングツリーブロック(CTB)またはコーディングツリーユニット(CTU)(H.265/HEVCおよびVVC)と呼ばれることもある。ピクチャー・パーティション分割ユニットは、ビデオ・シーケンスのすべてのピクチャーについての同じブロック・サイズと、該ブロック・サイズを定義する対応するグリッドを使用するように構成されてもよく、あるいは、ピクチャーまたはピクチャーの部分集合もしくはグループの間でブロック・サイズを変更し、各ピクチャーを対応するブロックに分割するように構成されてもよい。略語AVCはAdvanced Video Coding(先進ビデオ・コーディング)を表す。
さらなる実施形態では、ビデオ・エンコーダは、ピクチャー17のブロック203、たとえば、ピクチャー17を形成する一つ、いくつか、またはすべてのブロックを直接受領するように構成されてもよい。ピクチャー・ブロック203は、現在のピクチャー・ブロックまたはコーディングされるべきピクチャー・ブロックと呼ばれることもある。
ピクチャー17と同様に、ピクチャー・ブロック203は、ピクチャー17よりも小さい寸法ではあるが、強度値(サンプル値)をもつサンプルの二次元配列またはマトリクスである、またはそのように見なすことができる。つまり、ブロック203は、適用される色フォーマットに依存して、たとえば、1つのサンプル配列(たとえば、モノクロ・ピクチャー17の場合のルーマ配列またはカラー・ピクチャーの場合のルーマまたはクロマ配列)または3つのサンプル配列(たとえば、カラー・ピクチャー17の場合のルーマと2つのクロマ配列)、または他の任意の数および/または種類の配列を含みうる。ブロック203の水平方向および垂直方向(または軸)におけるサンプル数は、ブロック203のサイズを定義する。よって、ブロックは、たとえば、サンプルのMxN(M列N行)配列、または変換係数のMxN配列であってもよい。
図25に示されるようなビデオ・エンコーダ20の実施形態は、ブロックごとにピクチャー17をエンコードするように構成されてもよい。たとえば、ブロック203ごとにエンコードと予測が実行される。
図25に示されるようなビデオ・エンコーダ20の実施形態は、スライス(ビデオスライスとも呼ばれる)を使用してピクチャーをパーティション分割および/またはエンコードするようにさらに構成されてもよく、ここで、ピクチャーは一つまたは複数のスライス(典型的には重複しない)にパーティション分割される、またはかかるスライスを使ってエンコードされ、各スライスは一つまたは複数のブロック(たとえばCTU)を含みうる。
図25に示されるようなビデオ・エンコーダ20の実施形態は、タイル・グループ(ビデオ・タイル・グループとも呼ばれる)および/またはタイル(ビデオタイルとも呼ばれる)を使用してピクチャーをパーティション分割および/またはエンコードするようにさらに構成されてもよく、ここで、ピクチャーは、一つまたは複数のタイルグループ(典型的には重複しない)にパーティション分割される、またはかかるタイル・グループを使ってエンコードされ、各タイル・グループは、たとえば、一つまたは複数のブロック(たとえばCTU)または一つまたは複数のタイルを含みうる。ここで、各タイルは、たとえば、長方形の形状であってもよく、一つまたは複数のブロック(たとえばCTU)、たとえば完全なブロックまたは半端なブロックを含んでいてもよい。
図26は、本願の技術を実装するように構成されたビデオ・デコーダ30の例を示している。ビデオ・デコーダ30は、たとえばエンコーダ20によってエンコードされた、エンコードされたピクチャー・データ21(たとえばエンコードされたビットストリーム21)を受領して、デコードされたピクチャー331を得るように構成されている。エンコードされたピクチャー・データまたはビットストリームは、エンコードされたピクチャー・データをデコードするための情報、たとえば、エンコードされたビデオ・スライス(および/またはタイル・グループまたはタイル)のピクチャー・ブロックを表すデータと、関連する構文要素を含む。
エントロピー・デコード・ユニット304は、ビットストリーム21(または一般にエンコードされたピクチャー・データ21)をパースし、エンコードされたピクチャー・データ21に対してたとえばエントロピー・デコードを実行して、たとえば量子化された係数309および/またはデコードされたコーディング・パラメータ(図3には示さず)、たとえば、インター予測パラメータ(たとえば参照ピクチャー・インデックスおよび動きベクトル)、イントラ予測パラメータ(たとえばイントラ予測モードまたはインデックス)、変換パラメータ、量子化パラメータ、ループフィルタパラメータ、および/または他の構文要素を得るように構成されている。エントロピー・デコード・ユニット304は、エンコーダ20のエントロピー・エンコード・ユニット270に関して記述されているようなエンコード方式に対応するデコード・アルゴリズムまたは方式を適用するように構成されていてもよい。エントロピー・デコード・ユニット304は、モード適用ユニット360にインター予測パラメータ、イントラ予測パラメータおよび/または他の構文要素を提供し、デコーダ30の他のユニットに他のパラメータを提供するようにさらに構成されていてもよい。ビデオ・デコーダ30は、ビデオ・スライス・レベルおよび/またはビデオ・ブロック・レベルで構文要素を受領してもよい。スライスおよびそれぞれの構文要素への追加または代替として、タイル・グループおよび/またはタイルおよびそれぞれの構文要素が受領および/または使用されてもよい。
再構成ユニット314(たとえば加算器または総和器314)は、再構成された残差ブロック313を予測ブロック365に加えて、サンプル領域での再構成されたブロック315を得るように構成されていてもよい。これはたとえば、再構成された残差ブロック313のサンプル値と予測ブロック365のサンプル値を加算することによる。
図26に示されるようなビデオ・デコーダ30の実施形態は、スライス(ビデオスライスとも呼ばれる)を使用してピクチャーを分割および/またはデコードするように構成されてもよい。ここで、ピクチャーは、一つまたは複数のスライス(典型的には重複しない)にパーティション分割されてもよく、またはかかるスライスを使ってデコードされてもよく、各スライスは一つまたは複数のブロック(たとえばCTU)を含みうる。
図26に示されるようなビデオ・デコーダ30の実施形態は、タイル・グループ(ビデオ・タイル・グループとも呼ばれる)および/またはタイル(ビデオ・タイルとも呼ばれる)を使用してピクチャーをパーティション分割および/またはデコードするように構成されてもよい。ここで、ピクチャーは、一つまたは複数のタイルグループ(典型的には重複しない)にパーティション分割されてもよく、またはかかるタイル・グループを使ってデコードされてもよく、各タイル・グループは、たとえば一つまたは複数のブロック(たとえばCTU)または一つまたは複数のタイルを含んでいてもよく、ここで、各タイルは、たとえば長方形の形状であってもよく、一つまたは複数のブロック(たとえばCTU)、たとえば完全なブロックまたは半端なブロックを含んでいてもよい。
ビデオ・デコーダ30の他の変形が、エンコードされたピクチャー・データ21をデコードするために使用できる。たとえば、デコーダ30は、ループ・フィルタリング・ユニット320なしで出力ビデオストリームを生成することができる。たとえば、非変換ベースのデコーダ30は、ある種のブロックまたはフレームについて、逆変換処理ユニット312なしで直接、残差信号を逆量子化することができる。別の実装では、ビデオ・デコーダ30は、逆量子化ユニット310と逆変換処理ユニット312を単一のユニットに組み合わせることができる。
エンコーダ20およびデコーダ30では、現在のステップの処理結果がさらに処理されて、次のステップに出力されてもよいことを理解しておくべきである。たとえば、補間フィルタリング、動きベクトル導出、またはループ・フィルタリングの後に、該補間フィルタリング、動きベクトル導出、またはループ・フィルタリングの処理結果に対して、クリップまたはシフトなどのさらなる操作が実行されてもよい。
以下では、本発明のより具体的な、限定しない、例示的な実施形態が記述される。その前に、本開示の理解を助けるいくつかの説明が提供される。
人工ニューラルネットワーク
人工ニューラルネットワーク(artificial neural network、ANN)またはコネクショニスト・システム(connectionist system)は、動物の脳を構成する生体ニューラルネットワークから漠然と着想を得たコンピューティング・システムである。そのようなシステムは、一般にはタスク固有の規則をプログラムされることなく、例を考慮することによって、タスクを実行するように「学習」する。たとえば、画像認識では、手動で「猫」または「猫でない」とラベル付けされた例示的な画像を分析し、その結果を使用して他の画像における猫を識別することによって、猫を含む画像を識別することを学習しうる。これは、たとえば毛皮、尾、ひげ、猫のような顔をもつといった、猫に関する予備知識なしに行われる。代わりに、システムは、処理する例から識別特徴を自動的に生成する。
ANNは、生物学的な脳におけるニューロンをゆるくモデル化する、人工ニューロンと呼ばれる接続された単位またはノードの集まりに基づいている。それぞれの接続は、生物学的な脳におけるシナプスのように、他のニューロンに信号を送ることができる。信号を受け取った人工ニューロンは、それを処理し、それに接続されたニューロンに信号を送ることができる。ANN実装では、接続における「信号」は実数であり、各ニューロンの出力は、その諸入力の和の何らかの非線形関数によって計算できる。接続はエッジと呼ばれる。ニューロンとエッジは典型的には、学習が進むにつれて調整される重みをもつ。重みは接続における信号の強度を増加または減少させる。ニューロンは、集約信号がその閾値を超える場合にのみ信号が送られるような閾値を有していてもよい。典型的には、ニューロンは諸層に集約される。異なる層は、その入力に対して異なる変換を実行してもよい。信号は、最初の層(入力層)から最後の層(出力層)まで、可能性としては層を複数回横切った後に進む。
ANNアプローチの当初の目標は、人間の脳と同じ仕方で問題を解決することであった。時の経過とともに、特定のタスクを実行することに関心が移り、生物学からの逸脱が生じた。ANNは、コンピュータビジョン、発話認識、機械翻訳、ソーシャルネットワークフィルタリング、ボードゲームやビデオゲームのプレイ、医療診断を含む多様なタスクで使用されてきており、絵を描くことのように伝統的に人間だけのものと考えられてきた活動においても使用されてきている。
畳み込みニューラルネットワーク
「畳み込みニューラルネットワーク」(convolutional neural network、CNN)という名前は、ネットワークが畳み込みと呼ばれる数学的演算を採用していることを示す。畳み込みは特殊な種類の線形演算である。畳み込みネットワークは、単に、その層のうちの少なくとも1つにおいて、一般行列乗算の代わりに畳み込みを使用するニューラルネットワークである。畳み込みニューラルネットワークは、入力層と出力層、および複数の隠れ層で構成される。入力層は、処理のために入力が提供される層である。
たとえば、図4のニューラルネットワークはCNNである。CNNの隠れ層は典型的には、乗算または他のドット積を用いて畳み込む一連の畳み込み層で構成される。ある層の結果は、一つまたは複数の特徴マップであり、チャネルとも呼ばれる。一部またはすべての層に関わるサブサンプリングがあってもよい。結果として、特徴マップがより小さくなることがある。CNNにおける活性化関数は、すでに上で例示したようにRELU(Rectified Linear Unit[整流線形ユニット])層またはGDN層であってもよく、その後に、プーリング層、全結合層、正規化層などの追加的な畳み込みが続いてもよく、それらは、それらの入力と出力は活性化関数および最終畳み込みによってマスクされるため、隠れ層と呼ばれる。これらの層は口語的に畳み込みと呼ばれるが、これは単に慣例によるものである。数学的には、技術的にはスライディング・ドット積または相互相関である。これは、特定のインデックス・ポイントにおいて重みがどのように決定されるかに影響するという点で、マトリクス内のインデックスにとって重要である。
ピクチャーまたは画像を処理するためのCNNをプログラミングするとき、入力は(画像の数)×(画像幅)×(画像高さ)×(画像深さ)の形状をもつテンソルである。次に、畳み込み層を通過した後、画像は(画像の数)×(特徴マップ幅)×(特徴マップ高さ)×(特徴マップ・チャネル)の形状をもつ特徴マップに抽象化される。ニューラルネットワーク内の畳み込み層は、次の属性をもつ必要がある。幅および高さ(ハイパーパラメータ)によって定義される畳み込みカーネル。入力チャネルと出力チャネルの数(ハイパーパラメータ)。畳み込みフィルタ(入力チャネル)の深さは、入力特徴マップのチャネル数(深さ)と等しくあるべきである。
過去には、画像認識のためには伝統的な多層パーセプトロン(multilayer perceptron、MLP)モデルが使用されてきた。しかしながら、ノード間の全結合性のため、高い次元性に悩まされ、より高解像度の画像ではうまくスケールしなかった。RGB色チャネルをもつ1000×1000ピクセルの画像は300万個の重みをもち、これは全結合性をもつスケールで効率的に処理するには高すぎる。また、そのようなネットワークアーキテクチャーは、データの空間的構造は考慮に入れず、遠く離れた入力ピクセルを互いに近くにあるピクセルと同じように扱う。これは、計算上でも意味上でも、画像データ内の参照の局所性を無視する。よって、ニューロンの全結合性は、空間的に局所的な入力パターンによって支配される画像認識などの目的のためには無駄である。
畳み込みニューラルネットワークは、視覚皮質の挙動をエミュレートするように特別に設計された、多層パーセプトロンの生物学的に触発された変形である。CNNモデルは、自然な画像に存在する強い空間的な局所相関を利用することによって、MLPアーキテクチャーによって呈される課題を緩和する。畳み込み層はCNNの中核的な構成要素である。その層のパラメータは、学習可能なフィルタ(前述のカーネル)の集合からなる。それらのフィルタは小さな受容野をもつが、入力ボリュームの完全な深さまで延在する。順方向パスの間、各フィルタは入力ボリュームの幅および高さにわたって畳み込みされ、フィルタと入力のエントリー間のドット積を計算し、そのフィルタの2次元活性化マップを生成する。結果として、ネットワークは、入力の何らかの空間位置で何らかの特定のタイプの特徴を検出したときに活性になるフィルタを学習する。
深さ次元に沿ってすべてのフィルタについての活性化マップをスタックすると、畳み込み層の完全な出力ボリュームが形成される。よって、出力ボリュームにおけるすべてのエントリーは、入力における小さな領域を見るニューロンであって、同じ活性化マップにおけるニューロンとパラメータを共有するニューロンの出力としても解釈できる。特徴マップまたは活性化マップは、所与のフィルタについての出力活性化である。特徴マップと活性化は同じ意味である。いくつかの論文では、画像の異なる部分の活性化に対応するマッピングであるため活性化マップと呼ばれ、また、画像におけるある種の特徴が見出される場所のマッピングでもあるため、特徴マップとも呼ばれる。高い活性化は、ある種の特徴が見つかったことを意味する。
CNNのもう1つの重要な概念は、非線形ダウンサンプリングの一形態であるプーリングである。プーリングを実装するためのいくつかの非線形関数があり、そのうち最大プーリング(max pooling)が最も一般的である。最大プーリングは、入力画像を重複しない長方形の集合にパーティション分割し、そのような各サブ領域について最大値を出力する。直感的には、特徴の正確な位置は、他の特徴に対するその大まかな位置ほど重要ではない。これが、畳み込みニューラルネットワークにおいてプーリングを使用することの背後にある発想である。プーリング層は、表現の空間的サイズを漸進的に縮小し、ネットワークにおけるパラメータ数、メモリ・フットプリント、および計算量を削減し、よってオーバーフィッティングも制御する役割を果たす。CNNアーキテクチャーでは、相続く畳み込み層の間に定期的にプーリング層を挿入するのが一般的である。プーリング操作は、別の形式の並進不変性を提供する。
プーリング層は、入力のすべての深さスライスに対して独立して作用し、該スライスを空間的にサイズ変更する。最も一般的な形は、サイズ2×2のフィルタをもつプーリング層であり、幅および高さの両方に沿って2ごとの、入力のすべての深さスライスにおける2つのダウンサンプルのストライドで適用され、活性化の75%を破棄する。この場合、すべての最大操作は4つの数に対してである。深さ寸法は変更されない。
最大プーリングに加えて、プーリング・ユニットは、平均プーリングやl2ノルム・プーリングなどの他の関数を使用できる。平均プーリングは歴史的によく使用されたが、実際上より優れたパフォーマンスを発揮する最大プーリングと比較して、最近では好まれなくなっている。表現のサイズの積極的な縮小のため、最近ではより小さなフィルタを使用する、またはプーリング層を完全に破棄することに向けた傾向がある。「関心領域(Region of Interest)」プーリング(ROIプーリングとも呼ばれる)は、最大プーリングの変形であり、出力サイズは固定で、入力長方形はパラメータである。プーリングは高速R-CNNアーキテクチャーに基づくオブジェクト検出のための畳み込みニューラルネットワークの重要な構成要素である。
前述のReLUは、非飽和活性化関数を適用する整流線形ユニット(rectified linear unit)の略である。負の値を0に設定することにより、活性化マップから負の値を効果的に除去する。これは、畳み込み層の受容野に影響を与えることなく、決定関数と全体的なネットワークの非線形特性を増加させる。非線形性を増加させるために他の関数も使用され、たとえば、飽和双曲線正接とシグモイド関数である。ReLUは、一般化精度に大きなペナルティを与えずにニューラルネットワークを数倍速くトレーニングするため、他の関数よりも好まれることが多い。
いくつかの畳み込み層および最大プーリング層の後、ニューラルネットワークにおける高レベル推論は全結合層を介して行われる。全結合層におけるニューロンは、通常の(非畳み込み)人工ニューラルネットワークにおいて見られるように、前の層のすべての活性化への接続をもつ。よって、それらの活性化は、行列乗算の後にバイアス・オフセット(学習されるまたは固定されたバイアス項のベクトル加算)が続くアフィン変換として計算できる。
「損失層」は、トレーニングが予測(出力)されるラベルと真のラベルの間の偏差にどのようにペナルティを与えるかを指定し、通常はニューラルネットワークの最終層である。種々のタスクに適したさまざまな損失関数が使用されうる。ソフトマックス(softmax)損失は、K個の相互に排他的なクラスのうちの単一のクラスを予測するために使用される。シグモイド交差エントロピー損失は、[0,1]内のK個の独立した確率値を予測するために使用される。ユークリッド損失は、実数値ラベルへの回帰のために使用される。
ピクチャー・サイズ
ピクチャー・サイズとは、ピクチャーの幅wもしくは高さh、または幅と高さのペアを指す。画像の幅と高さは通例、ルーマ・サンプルの数で測定される。
ダウンサンプリング
ダウンサンプリングは、離散入力信号のサンプリング・レート(サンプリング間隔)が小さくされるプロセスである。たとえば、入力信号がhとwのサイズをもつ画像であり、ダウンサンプリングの出力がh2とw2のサイズをもつ場合、少なくとも次のいずれかが成立する:
・h2<h
・w2<w
一例では、ダウンサンプリングは、m番目ごとのサンプルだけを保持し、入力信号(たとえば画像)の残りを破棄することによって実装されてもよい。
アップサンプリング:
アップサンプリングは、離散入力信号のサンプリングレート(サンプリング間隔)が大きくされるプロセスである。たとえば、入力画像がhとwのサイズをもち、ダウンサンプリングの出力がサイズh2とw2をもつ場合、次のうち少なくとも1つが成立する:
h2>h
w2>w
再サンプリング:
ダウンサンプリングとアップサンプリングのプロセスは、どちらも再サンプリングの例である。再サンプリングは、入力信号のサンプリングレート(サンプリング間隔)が変更されるプロセスである。再サンプリングは、入力信号のサイズ変更(またはスケール変更)のためのアプローチである。
アップサンプリングまたはダウンサンプリングのプロセス中に、再サンプリングされた信号の精度を改善し、エイリアシング効果を低減するためにフィルタリングが適用されてもよい。補間フィルタリングは、通例、再サンプリング位置周辺のサンプル位置におけるサンプル値の重み付けされた組み合わせを含む。これは次のように実装できる:
ここで、f()は再サンプリングされた信号を指し、(x
r,y
r)は再サンプリング座標(再サンプリングされたサンプルの座標)であり、C(k)は補間フィルタ係数であり、s(x,y)は入力信号である。座標x,yは入力画像のサンプルの座標である。総和演算は、(x
r,y
r)の近傍Ω
rにある(x,y)について行われる。つまり、新しいサンプルf(x
r,y
r)は、入力ピクチャー・サンプルs(x,y)の重み付けされた和として得られる。重み付けは係数C(k)によって実行される。ここで、kはフィルタ・マスク内のフィルタ係数の位置(インデックス)を示す。たとえば、1Dフィルタの場合、kは1からフィルタの次数までの値を取る。2D画像に適用されうる2Dフィルタの場合、kは可能なすべての(ゼロ以外の)フィルタ係数の中の1を示すインデックスであってもよい。インデックスは、慣例により、フィルタ・マスク(フィルタ・カーネル)内の係数の特定の位置に関連付けられる。
クロッピング:
デジタル画像の外縁をトリミングする(切る)こと。クロッピングは、画像を(サンプル数の点で)小さくするためおよび/または画像のアスペクト比(長さ対幅)を変更するために使用できる。これは、信号からサンプルを、通例は信号の縁にあるサンプルを除去することとして理解できる。
パディング:
パディングとは、事前に定義されたサンプル値を使用するか、入力画像における既存の位置におけるサンプル値を使用する(たとえばコピーするまたは組み合わせる)ことにより新しいサンプルを(たとえば画像の縁において)生成することによって、入力(すなわち、入力画像)のサイズを大きくすることを指す。生成されるサンプルは、存在しない実際のサンプル値の近似である。
サイズ変更:
サイズ変更とは、入力ピクチャーのサイズが変更される一般的な用語である。サイズ変更は、パディングまたはクロッピングの方法のいずれかを使用して実行されてもよい。あるいはまた、サイズ変更は、再サンプリングによって実行されてもよい。
整数除算:
整数除算は、端数部分(余り)が破棄される除算である。
畳み込み:
畳み込みは、1次元では、入力信号f()とフィルタg()について次のように定義されうる:
ここで、mは入力信号およびフィルタ内のインデックスである。そして、nは入力信号に対するフィルタの位置(シフト)を示す。nとmはいずれも整数である。2DにおけるS畳み込みは、当分野でよく知られているように、同様に機能しうる。一般性のため、mは上式のようにマイナス無限大からプラス無限大の間の値をもつと考えることができる。しかしながら、実際上は、フィルタf[]は有限の長さをもつことがあり、その場合、フィルタ・サイズを超えるmについては、フィルタ係数f[m]は0に等しい。
ダウンサンプリング層:
入力の次元を少なくとも1つ減らすことにつながるニューラルネットワークの層。一般に、入力は3つ以上の次元をもち、それらの次元はチャネル数、幅、高さを含みうる。ダウンサンプリング層は通例、幅および/または高さの次元の縮小を指す。ダウンサンプリング層は、畳み込み(可能性としてはストライドを用いる)、平均化、最大プーリングなどの操作を使用して実装できる。
特徴マップ:
特徴マップは、前の諸層の入力画像または特徴マップ出力にフィルタ(カーネル)または機能検出器を適用することによって生成される。特徴マップの視覚化は、モデルにおける各畳み込み層についての特定の入力についての内部表現に対する洞察を提供する。一般的な用語では、特徴マップはニューラルネットワーク層の出力である。特徴マップは典型的には、一つまたは複数の特徴要素を含む。
潜在空間:
潜在空間とは、NNのボトルネック層において生成される特徴マップを指す。これは図5および図9に示される例において例解される。ネットワークの目的が入力信号の次元の縮小であるNNトポロジーの場合(オートエンコーダ・トポロジーにおけるように)、ボトルネック層は通例、入力信号の次元が最小に縮小される層を指す。次元の縮小の目的は通例、入力の、よりコンパクトな表現を実現することである。したがって、ボトルネック層は圧縮に好適な層であり、よって、ビデオ・コーディング・アプリケーションの場合、ボトルネック層に基づいてビットストリームが生成される。
オートエンコーダ・トポロジーは通例、ボトルネック層で相互に接続されたエンコーダとデコーダからなる。エンコーダの目的は、入力の次元を小さくし、よりコンパクト(またはより直感的)にすることである。デコーダの目的は、エンコーダの操作を元に戻し、よって、ボトルネック層に基づいて可能な限り入力を再構成することである。
アップサンプリング層:
ニューラルネットワークのある層は、入力の次元の少なくとも1つを増加させる。一般に、入力は3つ以上の次元をもつことがあり、次元はチャネル数、幅、および高さを含みうる。アップサンプリング層は通例、幅および/または高さの次元の増加を指す。アップサンプリング層は、畳み込み解除、複製などの操作で実装できる。
オートエンコーダと教師なし学習
オートエンコーダは、教師なしで効率的なデータ・コーディングを学習するために使用される人工ニューラルネットワークのタイプである。その概略図が図5に示されており、これは図4のCNNベースのVAE構造の簡略化された表現と考えることができる。オートエンコーダの目的は、信号「ノイズ」を無視するようにネットワークをトレーニングすることによって、典型的には次元削減のために、データのセットの表現(エンコード)を学習することである。削減側とともに、再構成側が学習され、ここで、オートエンコーダは、削減されたエンコードから、もとの入力に可能な限り近い表現を生成しようとする。このため、その名前が付けられている。
最も単純な場合には、1つの隠れ層が与えられた場合、オートエンコーダのエンコーダ・ステージは入力xを取得し、それをhにマッピングする。
h=σ(Wx+b).
この画像hは通例、コード、潜在変数、または潜在表現と呼ばれる。ここで、σはシグモイド関数または整流線形ユニットなどの要素ごとの活性化関数である。Wは重み行列、bはバイアス・ベクトルである。重みとバイアスは通例、ランダムに初期化され、次いで、トレーニング中に逆伝搬(Backpropagation)を通じて逐次反復的に更新される。その後、オートエンコーダのデコーダ・ステージは、hをxと同じ形の再構成x'にマップする。
x'=σ'(W'h'+b')
ここで、デコーダについてのσ'、W'、b'は、エンコーダについての対応するσ、W、bとは無関係であってもよい。
変分オートエンコーダ・モデル(variational autoencoder model)は、潜在変数の分布に関する強い仮定をする。変分オートエンコーダ・モデルは、潜在表現学習のために変分アプローチを使用し、その結果、追加的な損失成分と、確率的勾配変分ベイズ(Stochastic Gradient Variational Bayes、SGVB)推定量と呼ばれるトレーニング・アルゴリズムのための具体的な推定量が得られる。これは、データが有向グラフィカル・モデルp
θ(x|h)によって生成され、エンコーダが、事後分布p
θ(h|x)に対する近似q
φ(h|x)を学習しようとしていると想定する。ここで、φおよびθは、それぞれエンコーダ(認識モデル)およびデコーダ(生成モデル)のパラメータを表す。VAEの潜在ベクトルの確率分布は、典型的には、標準的なオートエンコーダよりもはるかによくトレーニング・データの確率分布と一致する。VAEの目的関数は次の形をもつ:
ここで、D
KLはカルバック・ライブラー発散(Kullback-Leibler divergence)を表す。潜在変数に対する事前分布は、通例、中心等方性多変量ガウス分布p
θ=N(0,I)に設定される。一般的には、変分および尤度分布の形状は、因子分解されたガウス分布になるように選択される。
ここで、ρ(x)およびω
2(x)はエンコーダ出力であり、μ(h)およびσ
2(h)はデコーダ出力である。
人工ニューラルネットワーク分野、および特に畳み込みニューラルネットワークにおける最近の進歩は、画像およびビデオ圧縮のタスクにニューラルネットワークに基づく技術を適用する研究者の関心を可能にする。たとえば、変分オートエンコーダに基づくネットワークを使用するエンドツーエンド最適化画像圧縮(End-to-End Optimized Image Compression)が提案されている。よって、データ圧縮は工学における基本的で、よく研究されている問題と考えられており、一般的には、所与の離散データ・アンサンブルについて、最小のエントロピーをもつコードを設計することを目標として定式化される。この解決策は、データの確率的構造の知識に大きく依存しており、よって、問題は確率的ソース・モデリングと密接に関連している。しかしながら、すべての実用的なコードは有限のエントロピーをもたなければならないため、連続値データ(画像ピクセル強度のベクトルなど)は離散的な値の有限集合に量子化されなければならず、これは誤差を導入する。不可逆圧縮問題として知られるこの文脈では、離散化された表現のエントロピー(レート)と量子化から生じる誤差(歪み)という2つの競合するコストをトレードオフさせなければならない。データ記憶や限られた容量のチャネルを通じた伝送などの異なる圧縮用途は、異なるレートと歪みのトレードオフを要求する。レートと歪みの合同最適化は困難である。さらなる制約条件なしでは、高次元空間における最適量子化の一般的な問題は手に負えない。このため、ほとんどの既存の画像圧縮方法は、データベクトルを好適な連続値表現に線形変換し、その要素を独立して量子化し、その後、結果として得られる離散表現を可逆エントロピー符号を使用してエンコードすることによって動作する。この方式は、前記変換の中心的な役割のため、変換コーディングと呼ばれる。たとえば、JPEGはピクセルのブロックに対して離散コサイン変換を使用し、JPEG2000はマルチスケール直交ウェーブレット分解を使用する。典型的には、変換コーディング方法の3つの構成要素――変換、量子化器、およびエントロピー符号――は別個に最適化される(しばしば、手動のパラメータ調整を通じて)。HEVC、VVC、EVCなどの現代のビデオ圧縮標準も、予測後の残留信号をコーディングするために変換表現を使用する。離散コサイン変換やサイン変換(DCT、DST)、低周波の非分離可能手動最適化変換(low frequency non-separable manually optimized transform、LFNST)など、前記いくつかの変換が、その目的のために使用される。
VAEフレームワークは、非線形変換コーディング・モデルと考えることができる。変換プロセスは、主に4つの部分に分割できる。これは、VAEフレームワークを示す図6に例示されている。
変換プロセスは主に4つの部分に分割できる:図6はVAEフレームワークを例示している。図6では、エンコーダ601は入力画像xを関数y=f(x)を介して潜在表現(yで表される)にマップする。この潜在表現は、以下では「潜在空間」の一部または「潜在空間」内の点と呼ばれることもある。関数f()は、入力信号xをより圧縮可能な表現yに変換する変換関数である。量子化器602は、潜在表現yを
によって(離散的な)値をもつ量子化された潜在表現
〔以下、便宜上、^yのように記すこともある〕に変換する。ここで、Qは量子化器関数を表す。エントロピー・モデルまたはハイパーエンコーダ/デコーダ(ハイパープライアーとも呼ばれる)603は、無損失エントロピー・ソース・コーディングで達成可能な最小レートを得るために、量子化された潜在表現^yの分布を推定する。
潜在空間(latent space)は、類似のデータ・ポイントが潜在空間内でより接近している圧縮データの表現として理解できる。潜在空間は、データ特徴を学習し、分析のためにデータのより単純な表現を見つけるために有用である。
量子化された潜在表現T、^yおよびハイパープライアー3のサイド情報^zは、算術コーディング(arithmetic coding、AE)を使用してビットストリーム2に含められる(バイナリ化される)。
さらに、量子化された潜在表現を再構成された画像^xに変換するデコーダ604が提供される。
信号^xは入力画像xの推定である。xが^xにできるだけ近いこと、つまり再構成品質ができるだけ高いことが望ましい。ただし、^xとxの間の類似性が高いほど、伝送されるのに必要なサイド情報の量が多くなる。サイド情報は、図6に示されるビットストリーム1とビットストリーム2を含み、これらはエンコーダによって生成され、デコーダに送信される。通常、サイド情報の量が多いほど再構成品質が高くなる。ただし、サイド情報の量が多いことは、圧縮率が低いことを意味する。したがって、図6に示されるシステムの1つの目的は、再構成品質とビットストリームにおいて伝達されるサイド情報の量のバランスを取ることである。
図6では、コンポーネントAE 605は算術エンコーディング・モジュールであり、これは量子化された潜在表現^yとサイド情報^zのサンプルをバイナリ表現ビットストリーム1に変換する。^yおよび^zのサンプルは、たとえば整数または浮動小数点数を含みうる。算術エンコーディング・モジュールの1つの目的は、サンプル値を(バイナリ化のプロセスを介して)バイナリ数字のストリングに変換することである(該ストリングはその後、エンコードされた画像またはさらなるサイド情報に対応するさらなる部分を含みうるビットストリームに含められる)。
算術デコード(arithmetic decoding、AD)606は、バイナリ化プロセスを元に戻すプロセスであり、バイナリ数字がサンプル値に変換し戻される。算術デコードは、算術デコード・モジュール606によって提供される。
本開示は、この特定のフレームワークに限定されないことに注意されたい。さらに、本開示は、画像またはビデオ圧縮に制約されず、オブジェクト検出、画像生成、および認識システムにも適用できる。
図6では、互いに連結された2つのサブネットワークがある。この文脈でのサブネットワークとは、全ネットワークの部分間での論理的な分割である。たとえば、図6では、モジュール601,602,604,605,606は「エンコーダ/デコーダ」サブネットワークと呼ばれる。「エンコーダ/デコーダ」サブネットワークは、第1のビットストリーム「ビットストリーム1」のエンコード(生成)とデコード(パース)を受け持つ。図6における第2のネットワークはモジュール603,608,609,610,607を含み、「ハイパーエンコーダ/デコーダ」サブネットワークと呼ばれる。第2のサブネットワークは、第2のビットストリーム「ビットストリーム2」の生成を受け持つ。2つのサブネットワークの目的は異なる。
第1のサブネットワークは次のことを受け持つ:
・入力画像xのその潜在表現y(これはxよりも圧縮するのが簡単)への変換601、
・潜在表現yを量子化された潜在表現^yに量子化602、
・量子化された潜在表現^yを算術エンコーディング・モジュール605によるAEを使用して圧縮して、ビットストリーム「ビットストリーム1」を得る。
・算術デコード・モジュール606を使用するADを介してビットストリーム1をパースParsing、
・パースされたデータを使用して、再構成された画像(^x)を再構成604。
第2のサブネットワークの目的は、第1のサブネットワークによるビットストリーム1の圧縮がより効率的になるように、「ビットストリーム1」のサンプルの統計的特性(たとえばビットストリーム1のサンプル間の平均値、分散、相関)を取得することである。第2のサブネットワークは、前述の情報(たとえばビットストリーム1のサンプル間の平均値、分散、相関)を含む第2のビットストリーム「ビットストリーム2」を生成する。
第2のネットワークは、量子化された潜在表現^yをサイド情報zに変換603し、サイド情報zを量子化されたサイド情報^zに量子化し、量子化されたサイド情報^zをビットストリーム2にエンコード(たとえばバイナリ化)609することを含むエンコード部を含む。この例では、バイナリ化は算術エンコード(AE)によって実行される。第2のネットワークのデコード部は算術デコード(AD)610を含み、これが、入力ビットストリーム2をデコードされた量子化されたサイド情報^z'に変換する。算術エンコードおよびデコード動作は可逆圧縮方法であるため、^z'は^zと同じである可能性がある。次いで、デコードされた量子化されたサイド情報^z'は、デコードされたサイド情報^y'に変換607される。^y'は^yの統計的特性(たとえば、^yのサンプルの平均値、またはサンプル値の分散など)を表す。デコードされた潜在表現は^y'は次いで、^yの確率モデルを制御するために、前述の算術エンコーダ605および算術デコーダ606に提供される。
図6は、異なる実装においては詳細が異なる可能性がある、VAE(variational autoencoder[変分オートエンコーダ])の例を記述している。たとえば、ある個別的な実装では、ビットストリーム1のサンプルの統計的特性をより効率的に得るために、追加的なコンポーネントが存在していてもよい。1つのそのような実装では、ビットストリーム1の相互相関情報を抽出することを目標とするコンテキスト・モデラーが存在してもよい。第2のサブネットワークによって提供される統計情報は、AE(算術エンコーダ)605およびAD(算術デコーダ)606コンポーネントによって使用されてもよい。
図6は、エンコーダとデコーダを単一の図で示している。当業者には明らかなように、エンコーダとデコーダは、相互に異なる装置に組み込まれていてもよく、非常にしばしばそうである。
図7はエンコーダを示し、図8はVAEフレームワークのデコーダ・コンポーネントを単離して示している。入力として、エンコーダは、いくつかの実施形態によれば、ピクチャーを受領する。入力ピクチャーは、色チャネルまたは他の種類のチャネル、たとえば深さチャネルまたは動き情報チャネルなど、一つまたは複数のチャネルを含みうる。エンコーダの出力は(図7に示されるように)、ビットストリーム1とビットストリーム2である。ビットストリーム1はエンコーダの第1のサブネットワークの出力であり、ビットストリーム2はエンコーダの第2のサブネットワークの出力である。
同様に、図8では、2つのビットストリーム、ビットストリーム1とビットストリーム2が入力として受領され、再構成された(デコードされた)画像である^zが出力において生成される。
上記のように、VAEは、異なるアクションを実行する異なる論理ユニットに分割できる。これは図7および図8で例示されている。ここで、図7はビデオのような信号のエンコードに参加し、エンコードされた情報を提供するコンポーネントを示す。このエンコードされた情報は、その後、たとえばエンコードのために、図8に示されるデコーダ・コンポーネントによって受領される。符号9xxおよび10xxで表されるエンコーダおよびデコーダのコンポーネントは、その機能において、図6で言及された、符号6xxで表されるコンポーネントに対応しうることに注意されたい。
具体的には、図7に見られるように、エンコーダは、入力xを信号yに変換するエンコーダ901を含む。信号yはその後、量子化器902に提供される。量子化器902は、算術エンコード・モジュール905とハイパーエンコーダ903に情報を提供する。ハイパーエンコーダ903は、すでに論じたビットストリーム2をハイパーデコーダ907に提供し、ハイパーデコーダ907は次に算術エンコード・モジュール605に情報を信号伝達する。
算術エンコード・モジュールの出力はビットストリーム1である。ビットストリーム1とビットストリーム2は信号のエンコードの出力であり、それはその後、デコード・プロセスに提供(伝送)される。
ユニット901は「エンコーダ」と呼ばれるが、図7に記載される完全なサブネットワークを「エンコーダ」と呼ぶことも可能である。一般にエンコードのプロセスは、入力をエンコードされた(たとえば圧縮された)出力に変換するユニット(モジュール)を意味する。図7から見て取れるように、ユニット901は入力xをxの圧縮バージョンであるyに変換することを実行するため、実際にはサブネットワーク全体のコアとして考えることができる。エンコーダ901での圧縮は、たとえばニューラルネットワーク、または一般には一つまたは複数の層をもつ任意の処理ネットワークを適用することによって達成されうる。そのようなネットワークでは、圧縮は、入力のサイズおよび/またはチャネル数を削減するダウンサンプリングを含むカスケード処理によって実行されうる。よって、エンコーダは、たとえばニューラルネットワーク(NN)ベースのエンコーダなどと呼ばれることがある。
図における残りの部分(量子化ユニット、ハイパーエンコーダ、ハイパーデコーダ、算術エンコーダ/デコーダ)は、すべてエンコード・プロセスの効率を改善するか、または圧縮された出力yを一連のビット(ビットストリーム)に変換することを受け持つ部分である。不可逆圧縮によってNNエンコーダ901の出力をさらに圧縮するために量子化が提供されてもよい。AE 905は、AE 905を構成するために使用されるハイパーエンコーダ903およびハイパーデコーダ907と組み合わせて、量子化された信号を可逆圧縮によってさらに圧縮しうるバイナリ化を実行してもよい。したがって、図7のサブネットワーク全体を「エンコーダ」と呼ぶことが可能である。
深層学習(Deep Learning、DL)ベースの画像/ビデオ圧縮システムの大半は、信号をバイナリ数字(ビット)に変換する前に信号の次元を削減する。たとえば、VAEフレームワークでは、非線形変換であるエンコーダは、入力画像xをyにマップする。ここで、yはxよりも小さい幅および高さをもつ。yはより小さな幅および高さ、よってより小さいサイズをもつため、信号の次元(のサイズ)が削減され、よって、信号yを圧縮することは、より簡単である。一般に、エンコーダは必ずしも両方の(または一般的にすべての)次元でサイズを削減する必要はない。むしろ、いくつかの例示的実装は、1つの次元において(または一般には次元の部分集合において)のみ、サイズを削減するエンコーダを提供してもよい。
圧縮の一般的な原理が図9に例示されている。エンコーダの出力とデコーダの入力である潜在空間は、圧縮されたデータを表す。潜在空間のサイズは、入力信号のサイズよりもはるかに小さい場合があることに注意されたい。ここで、サイズという用語は、解像度、たとえばエンコーダによって出力される特徴マップ(単数または複数)のサンプル数を指してもよい。解像度は、各次元ごとのサンプル数の積(たとえば、幅×高さ×入力ピクチャーまたは特徴マップのチャネル数)として与えられてもよい。
入力信号のサイズの削減は、深層学習ベースのエンコーダとデコーダを表す図9において例示されている。図9では、入力画像xは、エンコーダの入力である入力データに対応している。変換された信号yは、入力信号よりも少なくとも1次元において、より小さな次元性またはサイズをもつ潜在空間に対応している。円の各列は、エンコーダまたはデコーダの処理チェーンにおける層を表す。各層内の円の数は、その層における信号のサイズまたは次元性を示す。
図9から、エンコード動作は入力信号のサイズの削減に対応し、デコード動作は画像のもとのサイズの再構成に対応することがわかる。
信号サイズの削減のための方法の一つはダウンサンプリングである。ダウンサンプリングは、入力信号のサンプリングレートが低減されるプロセスである。たとえば、入力画像がhおよびwのサイズをもち、ダウンサンプリングの出力がh2およびw2である場合、少なくとも次のいずれかが成立する:
・h2<h
・w2<w
信号サイズの削減は通例、処理層のチェーンに沿って段階的に行われ、一度にすべて行われるわけではない。たとえば、入力画像xがhおよびw(高さと幅を示す)の寸法(または次元のサイズ)をもち、潜在空間yが寸法h/16およびw/16をもつ場合、サイズの削減はエンコード中に4つの層で行われる可能性があり、各層は信号のサイズを各次元において因子2により削減する。
いくつかの深層学習ベースのビデオ/画像圧縮方法は、複数のダウンサンプリング層を用いる。例として、図4のVAEフレームワークは、801から806でマークされた6つのダウンサンプリング層を使用している。ダウンサンプリングを含む層は、層の説明における下向き矢印で示されている。層の説明「Conv Nx5x5/2↓」は、層がN個のチャネルをもつ畳み込み層であり、畳み込みカーネルのサイズが5x5であることを意味する。前述のように、2↓は、因子2のダウンサンプリングがこの層で実行されることを意味する。因子2のダウンサンプリングは、入力信号の次元の1つが出力において半分に減少する結果となる。図4では、2↓は、入力画像の幅と高さの両方が因子2により減らされることを示している。6つのダウンサンプリング層があるため、入力画像814(xでも表される)の幅と高さがwとhで与えられる場合、出力信号^z 813はそれぞれw/64とh/64に等しい幅および高さをもつ。AEおよびADで表されるモジュールは算術エンコーダおよび算術デコーダであり、これらは図6ないし図8に関してすでに説明されている。算術エンコーダおよびデコーダは、エントロピー・コーディングの具体的な実装である。AEおよびAD(コンポーネント813と815の一部として)は、他のエントロピー・コーディングの手段によって置き換えることができる。情報理論において、エントロピー・エンコードは、シンボルの値をバイナリ表現に変換することのために使用される可逆データ圧縮方式であり、これは可逆プロセスである。また、図における「Q」は、図6に関連して上記でも言及された量子化動作に対応しており、上記で「量子化」の節でさらに説明されている。また、量子化動作と、コンポーネント813または815の一部としての対応する量子化ユニットは、必ずしも存在しない、および/または別のユニットで置き換えることができる。
図4には、アップサンプリング層807ないし812を含むデコーダも示されている。入力の処理順序において、アップサンプリング層811と810の間にさらに層820が提供される。これは、畳み込み層として実装されているが、受領される入力に対するアップサンプリングを提供しない。対応する畳み込み層830もデコーダについて示されている。そのような層は、入力のサイズを変更しないが、特定の特性を変更する、入力に対する操作を実行するために、NNにおいて提供されることができる。ただし、そのような層が提供されることは必要ではない。
デコーダを通じたビットストリーム2の処理順序で見ると、アップサンプリング層は逆順、つまり、アップサンプリング層812からアップサンプリング層807の順に実行される。ここでは、各アップサンプリング層は、↑で示されるアップサンプリング比2のアップサンプリングを提供するように示されている。もちろん、すべてのアップサンプリング層が同じアップサンプリング比をもつとは限らず、3、4、8などの他のアップサンプリング比も使用されうる。層807ないし層812は畳み込み層(conv)として実装される。具体的には、エンコーダは逆の、入力に対する操作を提供することが意図されている場合があるので、アップサンプリング層は、そのサイズがアップサンプリング比に対応する倍数だけ大きくされるように、受領された入力に畳み込み解除演算を適用してもよい。しかしながら、本開示は一般に畳み込み解除に限定されず、アップサンプリングは、2つの近傍サンプル間の双線形補間または最近傍サンプルコピーなど、他の任意の仕方で実行されうる。
第1のサブネットワークでは、いくつかの畳み込み層(801ないし803)の後に、エンコーダ側では一般化除算正規化(generalized divisive normalization、GDN)、デコーダ側では逆GDN(IGDN)が続く。第2のサブネットワークでは、適用される活性化関数はReLuである。本開示はそのような実装に限定されず、一般には、GDNまたはReLuの代わりに他の活性化関数が使用されてもよいことに留意されたい。
図10は、図4のものと同様の、VAEベースのエンコーダ・デコーダ構造の別の例を示している。図10では、エンコーダとデコーダ(合わせて1200で表される)が、いくつかのダウンサンプリング層とアップサンプリング層を含みうることが示されている。各層は、因子2のダウンサンプリングまたは因子2のアップサンプリングを適用する。さらに、エンコーダとデコーダは、エンコーダ側では一般化除算正規化(GDN)1201、デコーダ側では逆GDN(IGDN)1202のようなさらなるコンポーネントを含むことができる。さらに、エンコーダとデコーダの両方が、一つまたは複数のReLu、具体的には漏洩ReLus 1203を含んでいてもよい。また、エンコーダにおいて因子分解されたエントロピー・モデル1205が、デコーダにおいてガウシアン・エントロピー・モデル1206が提供されることもできる。さらに、複数の畳み込みマスク1204が提供されてもよい。さらに、図10の実施形態では、エンコーダはユニバーサル量子化器(UnivQuan)1207を含み、デコーダは注目モジュール1208を含む。
ダウンサンプリング動作の総数とストライドは、入力チャネル・サイズ、すなわちニューラルネットワークへの入力のサイズに関する条件を定義する。
ここで、入力チャネル・サイズが64=2x2x2x2x2x2の整数倍である場合、すべての進行するダウンサンプリング動作の後、チャネル・サイズは整数のままである。アップサンプリング中にデコーダにおいて対応するアップサンプリング動作を適用し、諸アップサンプリング層を通じた入力の処理の終わりに同じ再スケーリングを適用することにより、出力サイズは再び、エンコーダでの入力サイズと同一になる。
それにより、もとの入力の信頼できる再構成が得られる。
受容野:
ニューラルネットワークのコンテキスト内では、受容野(receptive field)は出力特徴マップにおけるサンプルを生成する入力内の領域のサイズとして定義される。基本的には、それは(任意の層の)出力特徴と入力領域(パッチ)との関連付けの指標である。受容野の概念は、ローカルな操作(すなわち、畳み込み、プーリングなど)に適用されることに注意されたい。たとえば、サイズが3x3のカーネルをもつ畳み込み動作は、入力層における3x3サンプルの受容野をもつ。この例では、畳み込みノードによって1つの出力サンプルを得るために9つの入力サンプルが使用される。
全受容野:
全受容野(total receptive field、TRF)は、たとえばニューラルネットワークの一つまたは複数の処理層を適用することによって、出力サンプルの指定された集合を取得するために使用される入力サンプルの集合を指す。
全受容野は、図11によって例示できる。図11では、2つの連続した転置畳み込み(畳み込み解除とも呼ばれる)層を用いた一次元入力(図の左側にある7つのサンプル)の処理が例示される。入力は左から右に処理される。つまり、「deconv層1」がまず入力を処理し、その出力は「deconv層2」によって処理される。この例では、カーネルは両方の畳み込み解除層において3のサイズをもつ。これは、各層において1つの出力サンプルを得るために3つの入力サンプルが必要であることを意味する。この例では、出力サンプルの集合は破線の長方形の内側にマークされ、3つのサンプルを含む。畳み込み解除カーネルのサイズのため、3つの出力サンプルを含むサンプルの出力セットを取得するには、入力において7つのサンプルが必要である。したがって、マークされた3つの出力サンプルの全受容野は、入力における7つのサンプルである。
図11では、7つの入力サンプル、5つの中間出力サンプル、3つの出力サンプルがある。サンプル数の減少は、入力信号が有限(各方向に無限大まで延在しない)であるため、入力の境界において「欠けているサンプル」があるという事実のためである。つまり、畳み込み解除動作は、各出力サンプルに対応する3つの入力サンプルを必要とするため、入力サンプル数が7である場合、5つの中間出力サンプルしか生成できない。実際、生成できる出力サンプルの量は、入力サンプル数より(k-1)サンプル少ない。ここで、kはカーネル・サイズである。図11では入力サンプル数が7なので、カーネル・サイズ3での第1の畳み込み解除の後、中間サンプルの数は5になる。カーネル・サイズ3での第2の畳み込み解除の後には、出力サンプル数は3になる。
図11で観察できるように、3つの出力サンプルの全受容野は入力における7つのサンプルである。全受容野のサイズは、1より大きいカーネル・サイズをもつ処理層の相続く適用によって増加する。一般に、出力サンプルのある集合の全受容野は、出力層から始めて入力層まで、各ノードの接続をたどり、出力サンプルの集合に直接または間接的に(1つより多くの処理層を介して)接続されている入力内のすべてのサンプルの和集合を見出すことによって計算される。たとえば、図11では、各出力サンプルは前の層の3つのサンプルに接続されている。和集合は、中間出力層における5つのサンプルを含み、これらは入力層における7つのサンプルに接続される。
各動作(畳み込みまたは畳み込み解除またはその他)の後に、サンプルの数を同じに保つことが望ましい場合がある。そのような場合、入力の境界においてパディングを適用して、「欠けているサンプル」を補償することができる。図12は、サンプル数が等しく保たれるこの場合を示している。パディングは、畳み込み、畳み込み解除、または他の任意の処理層についての必須の動作ではないため、本開示は両方の場合に適用できることに注意されたい。
これは、ダウンサンプリングと混同されるべきではない。ダウンサンプリングのプロセスでは、M個のサンプルごとに出力においてN個のサンプルがあり、N<Mである。違いは、Mは通例、入力の数よりもはるかに小さいことである。図11では、ダウンサンプリングはなく、サンプル数の減少は、入力のサイズが無限ではなく、入力に「欠けているサンプル」があるという事実から帰結している。たとえば、入力サンプル数が100だったとすると、カーネル・サイズはk=3であるため、2つの畳み込み層が使用される場合、出力サンプル数は100-(k-1)-(k-1)=96となる。対照的に、両方の畳み込み解除層がダウンサンプリングを実行していたとすると(M=2、N=1の比率で)、出力サンプル数は
となっていたはずである。
図13は、ダウンサンプリング比2(N=1、M=2)で2つの畳み込み層を使用するダウンサンプリングを例示している。この例では、ダウンサンプリングと境界における「欠けているサンプル」の複合効果のため、7つの入力サンプルが3つになる。出力サンプルの数は、各処理層の後に次の式
を使用して計算できる。ここで、kはカーネル・サイズであり、rはダウンサンプリング比である。
畳み込みと畳み込み解除(すなわち転置畳み込み)の動作は、数式の観点からは同一である。違いは、畳み込み解除動作が前の畳み込み操作が行われたことを前提としているという事実に由来する。言い換えると、畳み込み解除は、以前に適用された畳み込みを補償するために信号をフィルタリングするプロセスである。畳み込み解除の目標は、畳み込みが行われる前に存在していたとおりに信号を再生成することである。本開示は、畳み込み動作および畳み込み解除動作の両方に(実際には、後に説明されるように、カーネル・サイズが1より大きい他の動作にも)適用される。
図14は、全受容野をどのように計算するかを説明する別の例を示している。図14では、二次元入力サンプル配列が、それぞれ3x3のカーネル・サイズをもつ2つの畳み込み層によって処理される。2つの畳み込み解除層の適用後、出力アレイが得られる。出力サンプルの集合(配列)は、実線の長方形(「出力サンプル」)でマークされ、2x2=4個のサンプルを含む。出力サンプルのこの集合の全受容野は、6x6=36サンプルを含む。全受容野は次のように計算できる:
・各出力サンプルは中間出力における3x3サンプルに接続される。出力サンプルの集合に接続されている中間出力におけるすべてのサンプルの和集合は、4x4=16個のサンプルを含む。
・中間出力における16個のサンプルのそれぞれは、入力における3x3サンプルに接続される。中間出力における16個のサンプルに接続されている、入力におけるすべてのサンプルの和集合は、6x6=36個のサンプルを含む。よって、2x2出力サンプルの全受容野は、入力における36サンプルである。
画像およびビデオ圧縮システムでは、非常に大きなサイズの入力画像の圧縮および圧縮解除は、通例、入力画像を複数の部分に分割することによって実行される。VVCおよびHEVCは、たとえば入力画像をタイルまたは波面処理単位にパーティション分割することによって、そのような分割方法を採用している。
伝統的なビデオ・コーディング・システムでタイルが使用される場合、通例、入力画像は長方形の複数の部分に分割される。図15は1つのそのようなパーティション分割を例示している。図15では、部分1と部分2は互いに独立して処理されてもよく、各部分のデコードのためのビットストリームは、独立してデコード可能な単位にカプセル化される。結果として、デコーダは各ビットストリーム(部分1と部分2に対応)を独立してパースする(サンプル再構成のために必要な構文要素を得る)ことができ、各部分のサンプルも独立して再構成できる。
図16に示される波面並列処理では、各部分は通例、諸コーディングツリーブロック(Coding tree block、CTB)の1行からなる。波面並列処理とタイルの違いは、波面並列処理では、各部分に対応するビットストリームがほぼ互いに独立してデコードできることである。しかしながら、各部分のサンプル再構成はいまだ部分間の依存関係をもつため、サンプル再構成は独立して実行されることはできない。つまり、波面並列処理は、サンプル再構成は従属のままにしつつ、パースするプロセスを独立させる。
波面もタイルも、デコード動作の全体または一部を互いに独立して実行することを可能にする技術である。独立した処理の利点は次のとおりである:
・画像全体を処理するために複数の同一の処理コアが使用できる。そのため、処理速度を上げることができる。
・大きな画像を処理するために処理コアの能力が十分でない場合、画像を複数の部分に分割でき、そうした部分は、処理のために必要とする資源がより少ない。この場合、より能力の低い処理ユニットが、たとえ資源の制限のため画像全体を処理できなくても、各部分を処理することができる。
処理速度やメモリの要求を満たすために、HEVC/VVCは、フレーム全体のエンコード/デコードを処理するのに十分な大きさの処理メモリを使用する。これを達成するために、最高級のGPUカードが使用される。HEVC/VVCのような伝統的なコーデックの場合、フレーム全体がブロックに分割され、各ブロックが1つずつ処理されるため、フレーム全体を処理するためのメモリ要件は通例、大きな懸案ではない。しかしながら、処理速度は大きな懸案である。そのため、1つの処理ユニットがフレーム全体を処理するために使用される場合、処理ユニットの速度が非常に高い必要があるため、よって、処理ユニットは通例、非常に高価である。
一方、NNベースのビデオ圧縮アルゴリズムでは、従来のハイブリッド・コーダにおけるブロック・ベースではなく、エンコード/デコードにおいてフレーム全体を考慮する。NNベースのコーディング/デコード・モジュールを介して処理するには、メモリ要件は高すぎる。
伝統的なハイブリッド・ビデオ・エンコーダおよびデコーダでは、必要なメモリの量は最大許容ブロック・サイズに比例する。たとえば、VVCでは、最大ブロック・サイズは128x128サンプルである。
しかしながら、NNベースのビデオ圧縮のために必要なメモリは、サイズWxHに比例する。ここで、WおよびHは入力/出力画像の幅および高さを表す。典型的なビデオ解像度は3840x2160のピクチャー・サイズ(4Kビデオ)を含むので、メモリ要件がハイブリッド・ビデオ・コーダと比較して、異常に高くなる可能性があることがわかる。
もう1つの問題は、単一の処理ユニット(たとえばCPUまたはGPU)で大きな入力を処理するためには、ユニットが単位時間あたり大量の演算を実行する必要があるため、処理ユニットが非常に高速である必要があることである。これは、ユニットが、高いクロック周波数と高いメモリ帯域幅を有する必要があることを要求し、これらはチップ製造業者にとって高価な設計基準である。特に、物理的な制限のため、メモリ帯域幅およびクロック周波数を増やすことは容易ではない。
エンコードおよび/またはデコードのためのNNベースのビデオ・コーディング・アルゴリズムは、開発の初期段階にあり、図6に示されているVAEの実装を含む消費者装置はない。また、消費者装置のコストは実装されるメモリに非常に敏感である。
したがって、NNベースのビデオ・コーディング・アルゴリズムが携帯電話などの消費者装置において実装されるようコスト効率がよくなるためには、メモリ・フットプリントと処理ユニットの必要とされる動作周波数を低減する必要がある。そのような最適化はまだなされていない。
本開示は、エンドツーエンドAIコーデックとハイブリッドAIコーデックの両方に適用可能である。ハイブリッドAIコーデックでは、たとえば、フィルタリング動作(再構成されたピクチャーのフィルタリング)が、ニューラルネットワーク(NN)によって実行できる。本開示は、そのようなNNベースの処理モジュールに適用される。一般に、本開示は、プロセスの少なくとも一部がNNを含み、そのようなNNが畳み込みまたは転置畳み込み演算を含む場合に、ビデオ圧縮および圧縮解除プロセスの全体または一部に適用されることができる。たとえば、本開示は、ループ内フィルタリング、ポストフィルタリング、および/またはプレフィルタリングを含む、エンコーダおよび/またはデコーダによる処理部分として実行される個々の処理タスクに適用可能である。
本開示のいくつかの実施形態は、NNベースのビデオ・エンコード‐デコード・フレームワーク内でメモリ資源と計算量との間のトレードオフを可能にするという点で、上記の問題についての解決策を提供しうる。
本開示は、入力を複数の部分に分割し、それぞれの部分を互いに独立して処理することを採用しており、以下のように要約される。
1.入力空間Liにおいて、N個の領域を決定する。ここで、Liの和集合が完全な入力空間を構成する。N>1である。
2.それぞれのLiを、NNを用いて独立に処理し、再構成された領域Riを得る。
3.Riをマージして、再構成ピクチャーを得る。ここで、Riの和集合が完全な目標出力を構成する。
目標出力は出力再構成ピクチャーである。出力再構成ピクチャーのサイズは、ビットストリーム内の指示に従って取得できる。あるいはまた、それはビットストリームにおいて明示的にコーディングされることができる。
一例では、入力空間は、ビットストリームのパースによってビットストリームに従って得られる潜在空間であることができる。入力空間は、幅=w、高さ=h、およびサイズがDに等しい第3の次元(たとえば深さまたはチャネル数)をもつ行列形式をもつことができる。
N個の領域Liは、好ましくは、入力サンプルを重複するまたは重複しない諸集合にグループ化することによって得られる。それらの集合は、好ましくは、互いに隣接する(分離していない)サンプルを含む。
一例では、Liは入力空間をN個の領域に分割することによって得られてもよく、ここで、各領域はサイズwi、hi、Dをもち、ここで、Wiは幅、Hiは高さ、DはLiの深さである。入力空間を幅と高さの方向においてのみ分割することが望ましいため、Liの深さは潜在空間全体の深さに等しい。
処理はデコードまたはエンコードでありうる。
以下で論じられる例示的実装における前述のニューラルネットワーク(NN)は、次のものでありうる。
・出力サンプルを得るために2つ以上の入力サンプルが使用される少なくとも1つの処理層を含むネットワーク(これは、本発明で扱われる問題が生じるときの一般的な条件である)。
・少なくとも1つの畳み込み(または転置畳み込み)層を含むネットワーク。一例では、畳み込みのカーネルは1より大きい。
・少なくとも1つのプーリング層(最大プーリング、平均プーリングなど)を含むネットワーク。
・デコード・ネットワーク、ハイパーデコーダ・ネットワーク、またはエンコード・ネットワーク。
・上記の一部(サブネットワーク)。
前記入力は次のものでありうる。
・特徴マップ。
・隠れ層の出力。
・潜在空間特徴マップ。潜在空間はビットストリームに従って得られてもよい。
・入力画像。
第1の実施形態
この例示的かつ非限定的な実施形態では、ビットストリームからピクチャーを再構成する方法が提供される。この方法は、ビットストリームに基づいて、ピクチャーを表すサンプルの入力集合(図17に示されるL)を取得することを含んでいてもよい。この方法は、入力集合Lを2つ以上の入力部分集合(たとえば、図17に示されるL1,L2)に分割することを含む。次いで、この方法は、2つ以上の入力部分集合(L1,L2)のそれぞれについてのサイズ((h1,w1);(h2,w2))および/または2つ以上の出力部分集合(R1,R2)のそれぞれについてのサイズ((H1,W1);(H2,W2))を決定することを含んでいてもよい。
この決定は、ビットストリームからのサイド情報に基づいていてもよい。ただし、この実施形態では、そのような信号伝達は、いくつかの実装では必要ないことがある。たとえば、入力部分集合には、それぞれの出力部分集合の全受容野を含むことが想定されてもよい。出力部分集合が所定の仕方で(たとえば、重複なしで、または既知の事前設定された重複をもって)組み合わされることがさらに想定される場合、および入力/出力サイズ関係と全受容野がニューラルネットワークの特徴として知られている場合は、信号伝達は必要ない。
この方法は、さらに、一つまたは複数の層を含むニューラルネットワークによる処理を含む、前記2つ以上の入力部分集合(L1,L2)のそれぞれを処理するステップを含みうる。ここで、ニューラルネットワークは、前記2つ以上の入力部分集合(L1,L2)のうちの入力部分集合の複数のサンプルを使用して、前記2つ以上の出力部分集合(R1,R2)のうちのそれぞれの出力部分集合の1つのサンプルを生成し、それにより、前記2つ以上の入力部分集合について、前記それぞれの2つ以上の出力部分集合(R1,R2)を得る。
下記は、前記2つ以上の出力部分集合を組み合わせることによってピクチャー(R)を再構成するステップである。この実施形態における入力部分集合のサイズは、前記一つまたは複数の層による処理の後、それぞれの出力部分集合(R1;R2)のサイズを得るために必要とされるサイズに等しい。つまり、領域L1,L2は全受容野を含む。
ある例示的実装は、次のステップを含んでいてもよい:
1.入力空間(Li)においてN個の重複する領域を決定する。ここで、各領域LiはRiの1つの完全な(すなわち全)受容野を含む。ここで、Riの和集合が完全な標的ピクチャーを構成する。
2.NNを使用して各Liを独立に処理し、再構成された領域Riを得る。
3.Riをマージして、再構成された出力(すなわち、再構成されたピクチャー)を得る。
上記の例示的実装では、入力空間の分割は、各領域LiがそれぞれRiの完全な受容野を含むようなものである。また、Riの和集合は標的ピクチャーR全体を構成する。
図17Aが例示的実装を示す。まず、入力がL1、L2、L3、L4の4つの重複する領域に分割される。L1とL2が図に示されている。L1とL2が重複していることがわかる。図では、LとRのインデックスは入力と出力における対応する分割で同じである。たとえば、L4はR4に対応する。Riの配置はLiと同じパターンに従う。つまり、L1が入力空間の左上に対応する場合、R1は出力空間の左上に対応する。L2がL1の右にある場合、R2はR1の右にある。
全受容野の決定は、各処理層のカーネル・サイズに依存する。それは、入力サンプルを処理の逆方向にたどることによって決定できる。全受容野は、みな出力サンプルの集合の計算において使用される入力サンプルの和集合からなる。したがって、全受容野は各層間の接続に依存し、出力から始めて入力の方向にすべての接続をたどることによって決定できる。
図14に示される畳み込み層の例では、畳み込み層1と2のカーネル・サイズはそれぞれK1xK1とK2xK2であり、ダウンサンプリング比はそれぞれR1とR2である。畳み込み層は通例、通常の入力出力接続を用いる(たとえば各出力について常にKxKの入力サンプルが使用される)。この例では、全受容野のサイズの計算は次のようにできる。
W=((w×R2)+K2-1)×R1+(K1-1),
H=((h×R2)+K2-1)×R1+(K1-1),
ここで、HとWは全受容野のサイズを表し、hとwはそれぞれ出力サンプル集合の高さと幅である。
上記の例では、畳み込み演算は2次元空間で記述される。畳み込みが適用される空間の次元数がより高い場合、3D畳み込み演算が適用されてもよい。3D畳み込み演算は、2D畳み込み演算のストレートな拡張であり、演算のすべてに追加的な次元が加えられる。たとえば、カーネル・サイズはK1×K1×NおよびK2×K2×Nとして表されることができ、前の例に基づいて全受容野はW×H×Nとして表されることができる。ここで、Nは第3次元のサイズを表す。2D畳み込みおよび3D畳み込み演算からの拡張はストレートであるため、本発明は2Dおよび3D畳み込み演算の両方に適用される。言い換えれば、第3次元(またはさらには第4次元)のサイズは1より大きくすることができ、本発明は同じ仕方で適用できる。
上記の式は、どのようにして全受容野のサイズを決定するかを示す例である。全受容野の決定は、各層の実際の入出力接続に依存する。
次に、各Liは独立して処理される。この例では、処理ユニットはデコーダである。したがって、L1の処理はL1のサンプルのみに依存し、L1の外部の他のどのサンプルにも依存しない。結果として、たとえばLiの集合が並列に処理されてもよい。デコード・プロセスの出力はRiである。Riの和集合が目標再構成画像を構成する。この例では、Riは重複する領域をもつので、まずクロッピング操作が適用されて、重複する領域のないR-cropiを得る。最後に、R-cropiが連結されて、完全な出力再構成ピクチャーが得られる。
この例では、LiはRiの全受容野を含む。
RiとLiの決定は次のように行うことができる。
・まずN個の重複しない領域R-cropiを決定する。たとえばR-cropiは同じサイズのN×M領域であってもよく、ここで、N×Mはメモリ制限に従ってデコーダによって決定される。
・R-cropiの全受容野を決定する。Liは各R-cropiの全受容野にそれぞれ等しく設定される。
・各Liを処理してRiを得る。これは、RiがNNによって生成された出力サンプル集合のサイズであることを意味する。なお、実際の処理は必要ないことがありうる。ひとたびLiのサイズが決定されれば、Riのサイズと位置を関数に従って決定することが可能でありうる。NNの構造はすでにわかっているので、サイズLiとRiの関係はすでに知ることができ、よって、実際に前記処理を行うことなく、Liに従って関数でRiを計算することができる。
・サイズRiがR-cropiに等しくない場合は、RiをクロッピングしてR-cropiを得る。
・NNによる前記処理中に入力または中間出力のサンプルにパディング操作が適用される場合、R-cropiのサイズがRiに等しくないことがありうる。たとえば、入力および中間出力のサンプルについていくつかのサイズ要件が満たされる必要がある場合、NNにパディングが適用されてもよい。たとえば、入力サイズが16サンプルの倍数でなければならないことがNNによって(たとえば、そのある種の構造のため)要求されることがありうる。この場合、Liがある方向において16サンプルの倍数でない場合、それを16の倍数にするために、その方向にパディングが適用されてもよい。つまり、パディングされたサンプルは、それぞれのNN層のサイズ要件をもつ各Liの整数倍数性を確保するためのダミー・サンプルである。
・クロッピングで除去されるサンプルは、「その計算において、パディングされたサンプルを含む出力サンプル」を決定することによって得ることができる。このオプションは、論じられている例示的実装に適用可能であってもよい。
RiとLiの決定は次のように行うことができ、図17Bに示されている「単純な」非クロッピング・ケースと呼ばれてもよい。
・まず、N個の重複しない領域Riを決定する。たとえば、Riは同じサイズのN×M領域であってもよく、ここで、N×Mはメモリ制限に従ってデコーダによって決定される。
・Riの全受容野を決定する。Liは、それぞれのRiの全受容野と等しくなるようにそれぞれ設定される。全受容野は、Riにおける出力サンプルのそれぞれをLiまで逆方向にたどることによって計算される。したがって、Liは、Riにおけるサンプルの少なくとも1つの計算において使用されるすべてのサンプルからなる。
・各Liを処理してRiを得る。これは、RiがNNによって生成された出力サンプル集合のサイズであることを意味する。
この例示的実装は、入力空間を複数の、より小さな、独立して処理可能な領域に分割することによって、全ピーク・メモリの問題を解決する。
上記の例示的実装では、Liの重複する領域は、入力を領域に分割しない場合と比較して、追加的な処理を必要とする。重複する領域が大きいほど、より多くの余計な処理が必要となる。特に、場合によっては、Riの全受容野が大きすぎることがありうる。そのような場合、再構成されたピクチャー全体を得るための計算の総数が増えすぎる可能性がある。
注1:前記例示的実装は、ビットストリームに追加的な指示が含められることを要求しない。これは、本開示およびその関連する実装とは異なる(後述の第2の実施形態を参照)。本開示において、なぜビットストリームに追加的な指示が含められる必要があるかは、後に説明される。一方、ここでの例示的実装では、すべての出力サンプルの処理は、それぞれの全受容野におけるサンプルのすべてを使用するため、追加的な指示は必要ない。これは、各出力サンプルの再構成のために必要なすべてのサンプルがすでに利用可能であることを意味する。結果として、前記例示的実装の規則に従う入力空間の任意の分割は、同一の出力につながる。つまり、デコーダは、たとえば、入力空間をM×Nの等しいサイズの領域に分割してもよい(たとえば、実装されるメモリが一度にM×Nサンプルの処理しか許容できないという事実のため)。出力は、前記例示的実装の規則に従う場合に入力がK×Lサンプルに分割される場合の結果と同一になりうる。したがって、デコーダは自分自身の分割パターンとサイズを選ぶ自由をもつため、エンコーダからデコーダへのビットストリームにおいて指示が含められる必要はない。
ここに記載されているすべての実施形態および/または例示的実装は、同じ仕方でエンコーダにも適用されうる。エンコーダに適用されるとき、入力空間はx(図6におけるように)となり、再構成される出力は^xとなる(図6におけるように)。
上で論じた例示的実装は、次のような利点を提供しうる:
・前記例示的実装は、複数のNN処理ステップの適用によって再構成された出力を得ることを可能にする。それらのNN処理ステップは独立しているため、より低い能力(たとえばより小さなメモリ)の複数の処理ユニットが処理のために使用できる。あるいはまた、同じ処理ユニットを複数回使用してNN処理が実行できる。分割は全受容野を含むように実行されるため、分割が実行されない場合に得られるのと同一の再構成された出力を得ることが可能である。結果として、ビットストリームにおいてパーティション分割に関する情報を含める必要がなく、よって、信号伝達のオーバーヘッドが低減される。
・分割があってもなくても結果が同一であるため、Liの数およびサイズは、デコーダによって、その能力に基づいて決定されることができる。また、エンコーダによってビットストリームに指示が含められる必要はなく、「各領域はRiのいずれかの全受容野を含む」という条件が満たされるので、エンコーダとデコーダは同一の結果を得ることができる。
第2の実施形態
前に論じた例示的実装では、各入力ピクチャー部分Liはその全受容野を使用しており、そのことは処理されるべき入力サンプルの数を増す可能性がある。よって、全受容野の使用は、より多数のサンプルを処理するために、処理ユニットの記憶および/または速度に対してより高い要求を課すことがありうる。
この問題は、入力空間が複数のLiに分割され、各Li(iは入力空間の部分集合の整数番号)がRiの全受容野の部分集合のみを含むという点で、この実施形態において対処される。
本開示のある実施形態によれば、ビットストリームからピクチャーを再構成する方法が提供される。ピクチャーは、静止画像または、たとえばビデオ・シーケンス(動画)のフレームに対応するビデオ・ピクチャーであってもよい。
この方法は、図21のフローチャートに示されており、ビットストリームに基づいて、ピクチャーを表すサンプルの入力集合(L)を取得するためのステップS2110を含む。サンプルの入力集合は、ピクチャーのサンプルを含みうる。サンプルの入力集合の取得は、たとえば、HEVCまたはVVCまたは別のコーデックなどのハイブリッド・コーデックを用いて再構成することによって実行されてもよい。たとえば、再構成は、図26に示されるようにデコーダにおいて(再構成314を参照)でまたは図25に示されるようにエンコーダにおいて(再構成214を参照)実行されうる。あるいはまた、入力サンプル集合は、ビットストリームから入力特徴マップをパースすることによって得られてもよい。特徴マップは、たとえば、算術符号のようなエントロピー符号、または別の種類の可変長符号を使用してエンコードされうるので、パースはデコードを含みうる。
さらに、この方法は、入力集合Lを2つ以上の入力部分集合L1およびL2に分割するステップS2120を含む。入力部分集合はそれぞれ一つまたは複数のサンプルを含みうる。入力部分集合(L1,L2)は入力空間の一部または全体をカバーしうる。今の例では、図18に示されるL1およびL2は、ピクチャーLの左側の入力空間の部分集合をカバーするが、入力ピクチャーLの右側に同様にして、2つのさらなる入力集合L3およびL4が設けられてもよい。
ある例示的実装では、2つ以上の入力部分集合(L1,L2)は一つまたは複数のサンプルだけ重複している。よって、ニューラルネットワークを含む処理を通じて生成される出力部分集合Riは、近傍の入力部分集合のサンプル(重複サンプルに対応する)が使用されるため、より正確である。よって、Liの重複は、出力部分集合Riの和集合である再構成されるピクチャーの全体的な品質を改善する。特に、入力部分集合Liの境界に沿った歪みが低減される。
重複とは、それぞれが入力集合の一つまたは複数のサンプルを含む入力部分集合が、同じ一つまたは複数のサンプルを共有することを意味する。よって、入力部分集合の和集合は、サンプルの入力集合全体を、よってピクチャー全体をカバーする。部分集合は、互いに隣接するサンプルの領域に対応してもよい。図18に示されるように、L1は長方形の形状をもつ隣接するサンプルの部分集合である。しかしながら、本開示はそのような入力部分集合に限定されない。むしろ、Liは不連続なサンプルの集合であってもよい。該不連続なサンプル集合は、インターレース状、チェス盤、タイル状などであってもよい。
この方法は、ビットストリームからサイド情報をパースするためのステップS2130も含む。ある例示的実装では、サイド情報のパースは、シーケンスパラメータセット(SPS)またはピクチャーパラメータセット(PPS)またはピクチャーヘッダ(PH)のうちの一つまたは複数をパースすることを含む。一般に、サイド情報は、シーケンスまたはピクチャーまたは該ピクチャーのスライスもしくはタイルに関連するヘッダに属していてもよい。よって、サイド情報は柔軟な仕方でパースされてもよく、これは、それがシーケンスの一部(ピクチャー、ピクチャーのグループ、ピクチャーの一部)の処理を制御できることを意味する。SPS、PPS、PHという用語は、HEVCまたはVVCなどのいくつかの現在のハイブリッド・コーデックから知られている。一般に、本開示はこれらのコーデックのビットストリーム構文/意味に限定されない。「サイド情報」という用語は、典型的には、エンコードされたピクチャー・データとは別に、ビットストリームにおいてエンコードされたピクチャー・データに付随する任意の情報を指す。エンコーダとデコーダの両方が同じ仕方でサイド情報をパースおよび解釈しうるよう、そのようなサイド情報は、標準などの規約によって定義された構文を有していてもよい。サイド情報は、ビデオ・シーケンス全体またはシーケンスのピクチャーの部分集合に適用される設定を伝える構文要素に構造化されてもよい。1つの特定のピクチャーに、あるいはさらにはピクチャーの一部(スライスまたはタイルまたはコーディング単位など)に適用される設定(パラメータ)があってもよい。本開示のサイド情報は、ニューラルネットワークによる処理の前/後にセグメント化が行われる任意のレベル(シーケンス、ピクチャーのグループ、ピクチャー、ピクチャーの一部)で信号伝達されてもよい。前述のように、シーケンスレベル、ピクチャーグループのレベル、またはピクチャーは、本開示に関連するサイド情報の信号伝達に適用されうる。信号伝達は、これらのレベルのいずれかでありうる。あるいはまた、レベルは選択可能であってもよい(たとえば、そのようなサイド情報が存在するか否かを各レベルで信号伝達する存在フラグによって)。
さらに、この方法は、サイド情報に基づいて、前記2つ以上の入力部分集合(L1,L2)のそれぞれについてのサイズ((h1,w1);(h2,w2))および/または2つ以上の出力部分集合(R1,R2)のそれぞれについてのサイズ((H1,W1);(H2,W2))を決定するステップS2140を含む。入力部分集合および/または出力部分集合のサイズの決定は、ビットストリームから直接(h1,w1)、(h2,w2)、(H1,W1)、および/または(H2,W2)のいずれかを含むそれぞれのパラメータをパースすることを含みうる。あるいはまた、サイズの決定は、ビットストリームにサイド情報として含まれていないパラメータを、ビットストリームにサイド情報として含まれている一つまたは複数の他のパラメータから導出することを含みうる。それにより、導出はニューラルネットワークのようなネットワークの特性を利用しうる。そのような特性は、たとえば、層の数、各処理層のカーネル・サイズK、および/または利用可能な入力サンプルの数またはNNの最初の処理層と最後の処理層の出力サンプルの数を含みうる。サイズ((h1,w1);(h2,w2))は、異なる領域Liについて同じであっても異なっていてもよい。同様に、サイズ((H1,W1);(H2,W2))は異なる領域Riについて同じであっても異なっていてもよい。
つまり、入力部分集合および/または出力部分集合のサイズは、相互に関連している可能性があるため、パースされてもよく、および/または導出されてもよい。結果として、それらのパラメータの全部または一部は、ビットストリームに含まれるサイド情報を通じて、信号伝達されうる。信号伝達のいくつかの例は、以下でさらに説明する。
この方法は、一つまたは複数の層を含むニューラルネットワークを用いて処理することS2152を処理することを含む、前記2つ以上の入力部分集合(L1,L2)のそれぞれを処理するためのステップS2150をさらに含む。各入力部分集合の処理は、エンドツーエンドのエンコードまたは図25および図26でのフィルタリング220、230などのループ内フィルタリングを含んでいてもよい。代替的または追加的に、処理はデコーダ30からの出力信号332のポストフィルタリングであってもよい。
ある例示的実装では、前記2つ以上の入力部分集合(L1,L2)は独立して処理される。よって、入力部分集合は並列に処理されてもよく、これは、1つの入力部分集合が別の部分集合の処理のいかなる(中間または最終)結果も使用しないことを意味する。よって、入力部分集合の処理がより高速に実行されてもよく、ピクチャー再構成のパフォーマンスをさらに改善しうる。あるいはまた、たとえL1とL2の処理に依存関係が存在しない場合でも、入力部分集合のそれぞれが逐次的に、つまり、たとえば事前定義されたシーケンス順序に従って一度に1つずつ、処理されてもよい。シリアルおよび並列の両方のアプローチは、処理における独立性のため、必要なメモリを削減する。
ある例示的実装では、ニューラルネットワークは、前記2つ以上の入力部分集合(L1,L2)のうちのある入力部分集合の複数のサンプルを使用して、前記2つ以上の出力部分集合(R1,R2)のうちのそれぞれの出力部分集合の1つのサンプルを生成する。この処理では、ニューラルネットワークはそれにより、前記2つ以上の入力部分集合について、前記それぞれの2つ以上の出力部分集合(R1,R2)を得る。
たとえば、ニューラルネットワーク(NN)によって使用される前記複数のサンプルは、NNの最初の入力層のカーネル・サイズに依存してもよい。ニューラルネットワーク(NN)の前記一つまたは複数の層は、一つまたは複数のプーリング層および/または一つまたは複数のサブサンプリング層を含んでいてもよい。NNは、前記一つまたは複数のプーリング層を介して前記複数のサンプルをプーリングすることによって、出力部分集合の前記1つのサンプルを生成しうる。代替的または追加的に、前記1つの出力サンプルは、一つまたは複数のダウンサンプリング畳み込み層によるサブサンプリング(すなわちダウンサンプリング)を通じてNNによって生成されてもよい。プーリングとダウンサンプリングが組み合わされて、前記1つの出力サンプルを生成してもよい。
この方法は、さらに、前記2つ以上の出力部分集合を組み合わせることによってピクチャー(R)を再構成するステップS2160を含む。この方法の実装例によると、前記2つ以上の出力部分集合(R1,R2)を組み合わせることは、図20に示される、一つまたは複数の組み合わされたサンプルによる前記2つ以上の出力部分集合(R1,R2)の重複を含む。図20の例では、デコーダは、入力部分集合L1ないしL4の処理後に、それぞれが図20でマークされた領域xに対応する重複をもつ4つの出力部分集合R1ないしR4を得る。それぞれのサンプルが組み合わされた後、それらの領域Riが前記領域xで重複していることがわかる。それにより、組み合わされたサンプルは、第1の出力部分集合(R1)からのサンプルと第2の出力部分集合(R2)からのサンプルの組み合わせとして得られるサンプルである。こうして、出力部分集合Riのサンプルを重ねることにより、再構成されたピクチャーの品質がさらに改善される。特に、境界に沿った再構成されたピクチャーの品質が改善されうるため、ピクチャーの劣化や歪みが軽減される。
前記2つ以上の出力部分集合を組み合わせることはさらに、出力部分集合のクロッピング、(重み付けされた)平均化、またはマージを含んでいてもよい。クロッピングは、それぞれの領域Riの重複領域に属する出力部分集合のサンプルを除去することを意味する。平均化(重み付け)は、領域R1と領域R2の両方のサンプルを合計し、それぞれの合計に重みを乗算することを意味する。重みは整数または実数でありうる。マージは、領域R1とR2のそれぞれの出力サンプルが隣接するように出力部分集合を組み合わせることを意味する。
ある実装例によれば、前記入力部分集合のうちの少なくとも1つのサイズは、前記一つまたは複数の層によって処理した後にそれぞれの出力部分集合(R1;R2)のサイズを得るために必要とされるサイズよりも小さい。
前記一つまたは複数の層は、パディングおよび/またはサイズ変更のための一つまたは複数の層を含んでいてもよい。これらの一つまたは複数の層について、前記一つまたは複数の入力部分集合のサイズがより小さいことは、それぞれの入力部分集合の入力サンプルの数が、たとえばニューラルネットワークの最初の層によって提供されるすべてのサンプル(全受容野)をカバーしていない可能性があることを意味する。つまり、入力部分集合のサイズは、全受容野の部分集合をカバーしているだけである。
上記のピクチャー処理の結果として、入力サンプルLを複数の部分集合L1とL2に分割し、ビットストリームからパースされたサイド情報を活用することによって、入力サンプル集合Lからピクチャーが効率的に再構成されうる。各入力部分集合Liはニューラルネットワークを用いて処理される。さらに、処理される入力部分集合のサイズはそれぞれの出力部分集合のサイズよりも小さいため、より低い必要メモリでピクチャー再構成が実行されうる。
全受容野(およびその部分集合)に関する上記のサンプル・カバレッジの意味は、図11を参照して説明されうる。前述のように、全受容野とは、たとえばニューラルネットワークの一つまたは複数の処理層を適用することによって、指定された出力サンプルの集合を得るために使用される入力サンプルの集合を指す。図11は、2つの連続する転置畳み込み層を用いた入力(図の左側にある7つのサンプル)の処理を例示している。
上の例では、入力層は最大7つのサンプルをサポートしている。これらの最大入力サンプルは、実際に前記3つの出力サンプルを生成するために必要とされる。よって、ニューラルネットワークの最初の層によってサポートされるサンプルの数は、全受容野(total receptive field、TRF)を定義する。しかしながら、入力入力部分集合のサイズ(すなわち、前記部分集合のサンプル数)は、TRFのサイズよりも小さい場合がある。つまり、入力部分集合はTRF全体をカバーするのではなく、TRFの部分集合をカバーする。
上記の方法の例示的実装(実装2と呼ばれる)は、次のように要約できる。
1. 入力空間(Li)におけるN個の重複する領域を決定。それらの領域の少なくとも1つはRiの1つの全受容野の部分集合を構成し、Riの和集合が完全なターゲット・ピクチャーを構成する。
2. NNを使用して各Liを独立に処理し、再構成された領域Riを得る。
3. Riをマージして再構成されたピクチャーを得る。
この方法のある実装例によれば、前記2つ以上の入力部分集合(L1,L2)のそれぞれは、長方形入力集合(L)の長方形領域である。同様に、前記2つ以上の出力部分集合(R1,R2)のそれぞれは、長方形の再構成されたピクチャー(R)の長方形領域である。よって、出力部分集合Riを組み合わせることは、それらの長方形形状のため、迅速に実行される可能性があり、そのことは、ピクチャー再構成の効率をさらに改善する。さらに、入力部分集合と出力部分集合の長方形形状は、形状が非常に規則的であるため、最小限のパラメータ(幅と高さなど)によって特徴付けられる可能性がある。よって、サイド情報のために好適なパラメータの数が最小限に保持されることができ、そのため、信号伝達オーバーヘッドが削減されうる。さらにまた、入力および出力部分集合両方の形状が長方形であるため、それぞれのサイズは単純な演算を通じて関連している(そして互いから決定される)。図18ないし図20はそれぞれ、入力部分集合Liと出力部分集合Riの長方形領域の例を示す。入力部分集合と出力部分集合について長方形形状を使用することで、長方形の入力部分集合から生成された出力部分集合をシームレスに組み合わせることができる。
図18は、本開示の例示的実装を例示する。図17と比較すると、入力領域Liは、それぞれのRiの全受容野の部分集合のみを表すため、今や図18に示されるものより小さい。各領域Liはデコーダによって独立に処理され、それにより2つの領域R1とR2(すなわち、出力部分集合)が得られる。
全受容野の部分集合が出力サンプルの集合を得るために使用されるので、欠けているサンプルを生成するためにパディング操作が必要になる場合がある。
例示的実装では、前記2つ以上の入力部分集合のそれぞれの処理は、前記一つまたは複数の層で処理する前にパディングを含む。よって、入力部分集合において欠けているサンプルがパディング・プロセスによって追加されてもよく、これは、再構成される出力部分集合Riの品質を改善する。よって、出力部分集合Riを組み合わせた後の再構成されたピクチャーの品質も改善される。
パディングとは、あらかじめ定義されたサンプル値を使用するか、または入力画像における諸位置のサンプル値を使用することによって、画像(またはピクチャー)の境界において新しいサンプルを生成することによって、入力(すなわち、入力画像)のサイズを大きくすることをいう。生成されるサンプルは、存在しない実際のサンプル値の近似値である。したがって、たとえば、パディングされるべきサンプルの一つまたは複数の最近接サンプルに基づいて、パディングされたサンプルが得られてもよい。たとえば、サンプルは、最近接サンプルをコピーすることによってパディングされる。同じ距離にさらなる近傍サンプルがある場合、その中で使用されるべき近傍サンプルは、規約によって(たとえば標準によって)指定されてもよい。もう一つの可能性は、複数の近傍サンプルからパディング・サンプルを補間することである。あるいはまた、パディングにはゼロ値のサンプルを使用することを含みうる。前記処理によって生成された中間サンプルも、パディングされる必要がある場合がある。中間サンプルは、前記一つまたは複数のパディングされたサンプルを含む入力部分集合のサンプルに基づいて生成されてもよい。前記パディングは、ニューラルネットワークの入力前に、またはニューラルネットワーク内で実行されうる。ただし、パディングは前記一つまたは複数の層の処理より前に実行される。
ある実装例によると、パディングされるサンプルの位置および/または量は、サイド情報に基づいて決定される。このように、パディングされるサンプルの位置および数は、信号伝達されたサイド情報に基づいて、デコード側によって、迅速に決定されうる。たとえば、パディングされるサンプルの数は、それぞれの入力領域Liのサイズ(wi,hi)から、該サイズを全受容野のサイズと比較することによって、決定されてもよい。また、サイド情報にパディング・タイプを含めることによって、パディングのタイプが信号伝達されてもよい。
図12は、実装2についてのパディング操作の適用を示している。図12に示されている例では、出力サンプルの集合は5つのサンプルを含む。2つの転置畳み込み(畳み込み解除)操作が入力に適用され、各畳み込み解除操作はサイズ3のカーネルの適用を含む。カーネル・サイズは3であるため、各畳み込み解除操作を適用する前に、入力のそれぞれの側に、1つのパディングされたサンプルが必要である。パディングされたサンプルは空の円で表される。図12からわかるように、パディングは典型的には、サンプル境界で行われる。
パディング操作は、次の2つの目的に資する:
・全受容野の部分集合の使用に起因する欠けているサンプルの生成。つまり、入力部分集合のサイズは、上記で説明されているように全受容野のサイズよりも小さい。「欠けている」サンプルから所望の出力サンプルを生成するために、(実装2では)入力および/または中間出力サンプルにおいてパディングを適用する必要がある。これは図12に例示されている。「パディングされたサンプル1」は、出力サンプル1の計算において使用される。そのため、パディングされたサンプル1は、全受容野における「欠けている」サンプルを完成させるために使用される。
・パディング操作は、カーネル・サイズが1より大きい畳み込み/畳み込み解除操作を適用した後に、サンプル数を一定に、または所望の数に保つ助けとなる。たとえば、カーネル・サイズが1より大きい場合、conv/deconv(畳み込み/畳み込み解除)操作の各適用後のサイズの縮小を補償するために、入力空間の境界においてパディング操作が適用される必要があってもよい。これは図12に例示されている。「パディングされたサンプル2」は、どの出力サンプルの計算にも使用されないが、NNの出力サイズをある種の制約に従わせる目的がある。図12の例では、出力のサイズは入力サイズと同じサイズであるべきである。第1の実施形態の場合と同様に、各入力部分集合Liが全受容野を含む場合にも、パディングが必要とされることがあることに注意されたい。図11が示すように、各Liが全受容野(TRF)を含む場合、入力部分集合LiのサイズがTRFよりも小さければ、TRFの境界におけるそれらのサンプルのパディングが必要とされることがある。
図12では、パディングされたサンプルによって影響を受ける出力サンプルがドット充填で描かれている。出力ステージでは、7つのうちの4つのサンプルが出力値の計算において少なくとも1つのパディングされたサンプルを使用した。パディングされたサンプルは実際のサンプルではなく、実際のサンプルの近似であるため、パディングされたサンプルを使用する出力サンプルは、より劣った精度をもつ。つまり、出力サンプルの計算において少なくとも1つのパディングされたサンプルが使用されるため、再構成の品質が低下する。
一方、再構成品質の低下は、計算において少なくとも1つのパディングされたサンプルを使用するすべての出力サンプルについて均等ではない。たとえば、図12では、出力サンプル2の計算は、出力サンプル1の場合よりも多くのパディングされたサンプルを必要とする。したがって、出力サンプル1は出力サンプル2よりも正確であることが期待される。だが、出力サンプル1は、計算においてパディングされたサンプルを使用しなかったサンプルより精度が劣る。
この方法の例示的実装では、前記2つ以上の入力部分集合のそれぞれの処理は、前記一つまたは複数の層で処理した後、一つまたは複数のサンプルをクロッピングすることを含む。クロッピングは、それぞれの領域Riの重複領域に属する出力部分集合のサンプルを除去することを意味する。出力部分集合Riのクロッピングは、Riが組み合わされる前に実行されてもよい。一例では、クロッピングは、前記2つ以上の入力部分集合のうちの一つまたは複数をニューラルネットワークを用いて処理した後に実行され、前記2つ以上の出力部分集合(R1,R2)のうちのそれぞれ一つまたは複数を得る。クロッピングにより、再構成されたピクチャーのサイズを小さくしたり、および/またはピクチャーのアスペクト比(長さ対幅)を変更したりすることができる。そのため、再構成されたピクチャーのサイズがディスプレイの好ましいサイズに適合されることができ、そのことは、ディスプレイ上のピクチャーの閲覧再現を改善する(適応的なピクチャー・サイズ)。
よって、再構成された出力にマージする前に、Riに対してクロッピング操作が実行されてもよい(すなわち、上記の処理に第3のステップが追加されてもよい)。図18および図19は、入力部分集合Liがデコーダによって処理された後、デコーダがまだ重複領域をもつ出力部分集合Riを出力として提供することを示している。この場合、クロッピングはニューラルネットワークの後に実行される。あるいはまた、クロッピングはネットワーク内で実行されてもよく、その場合、提供される出力部分集合Riはネットワーク内部クロッピングの結果として、もはや重複領域をもたない。クロッピングによって、ピクチャー・サイズを合わせることができる。
一例によると、前記2つ以上の出力部分集合を組み合わせることは、重複なしのマージである。これは図18および図19に描かれている。これらの図は、出力部分集合Riがクロッピングにかけられた後、それぞれのクロッピングされた領域Ri-cropが、クロッピングされた領域の重複なしにシームレスにマージされることを示している。
上記の例示的実装では、入力空間の領域Liは重複している。該実装は、Lが重複しないように適応されてもよい。それぞれの代替的な実装は次のようになりうる。
1. 入力空間(Li)内のN個の重複しない領域を決定。これらの領域の少なくとも1つはRiのうちの1つの全受容野の部分集合を構成し、Riの和集合が完全なターゲット・ピクチャーを構成する。
2. NNを使用して各Liを独立に処理し、再構成された領域Riを得る。
3. Riをマージして、再構成されたピクチャーを得る。
図19は、Liが重複しない領域として選択されるこの場合を示している。これは、再構成された出力全体(すなわち出力ピクチャー)を得るために必要な計算の総量が最小化される特別な場合である。ただし、再構成品質は損なわれる可能性がある。
先に論じたように、入力部分集合(L1,L2)は、第1の実施形態の処理とは逆に、全受容野(TRF)を含まなくてもよい。TRFの部分野を使用した結果、デコード側は、ピクチャーがエンコーダ側でどのようにパーティション分割されたかを知らないことがある。そのため、いくつかの例示的実装では、ピクチャーがどのようにパーティション分割されたかを判断するために、情報(たとえばパラメータに関する)がデコーダ側に信号伝達されてもよい。
よって、第2の実施形態の前記例示的実装では、入力空間と出力空間においてパーティション分割がどのように実行されるかを推測するために、各RiとLiのサイズおよび座標を知る必要がある。入力空間と出力空間のパーティション分割は、エンコーダだけでなくデコーダにも適用される。また、Riにクロッピングを適用する必要がある場合があるため、各Riについてのクロッピング量も知る必要があろう。これについては下記で論じる。
この方法のある例示的実装によれば、クロッピングされるべきサンプルの位置および/または量は、サイド情報に基づいて決定される。よって、クロッピングされたサンプルの位置および/または数は、信号伝達されたサイド情報に基づいて、デコード側によって、迅速に決定されうる。
前述のように、サイド情報はビットストリームに含まれている。サイド情報はビットストリームからパースされるため、前記決定のために必要とされるすべてのパラメータがサイド情報において信号伝達されうる。あるいはまた、パラメータの一部がビットストリームに含められてもよく、その際、必要とされる残りのパラメータは、信号されたパラメータから導出されてもよい。
たとえば、サイド情報には以下のうちの一つまたは複数の指示を含む:
・入力部分集合の数、
・入力集合のサイズ、
・前記2つ以上の入力部分集合のそれぞれのサイズ(h1,w1)、
・再構成されたピクチャー(R)のサイズ(H,W)、
・前記2つ以上の出力部分集合のそれぞれのサイズ(H1,W1)、
・前記2つ以上の入力部分集合(L1,L2)の間の重複の量、
・前記2つ以上の出力部分集合(R1,R2)の間の重複の量。
よって、サイド情報を通じた多様なパラメータの信号伝達が柔軟な仕方で実行されうる。よって、信号伝達オーバーヘッドは、他のパラメータが信号伝達されるパラメータから導出されるなか、上記のパラメータのうちのどれがサイド情報において信号伝達されるかに依存して適応されうる。前記2つ以上の入力部分集合のそれぞれのサイズは異なっていてもよい。あるいはまた、入力部分集合が共通のサイズを有していてもよい。
一例では、サイド情報において示される入力部分集合のサイズと、ネットワークへの入力のサイズとネットワークからの出力のサイズとの関係を指定するニューラルネットワークのニューラルネットワーク・サイズ変更パラメータとに従って、クロッピングされるサンプルの位置および/または量が決定される。よって、位置および/またはクロッピング量は、入力部分集合のサイズとニューラルネットワークの特性(すなわち、そのサイズ変更パラメータ)の両方を考慮することによって、より正確に決定されうる。よって、クロッピング量および/または位置が、ニューラルネットワークの属性に適合されることができ、そのことは、再構成されたピクチャーの品質をさらに改善する。
サイズ変更パラメータは加法的な項であってもよく、出力サイズを得るために入力サイズから減算される。つまり、出力部分集合の出力サイズは、ちょうどある整数によって、その対応する入力部分集合と関連付けられる。あるいはまた、サイズ変更パラメータは比であってもよい。この場合、出力部分集合のサイズは、入力部分集合のサイズにその比を乗算して出力部分集合のサイズを得ることによって、入力部分集合のサイズに関連付けられる。
上記で論じたように、Li、Ri、およびクロッピング量の決定は、ビットストリームから、事前定義された規則に従って、または両者の組み合わせで、得ることができる。
・クロッピングの量を示す指標がビットストリームに含められる(そしてビットストリームからパースされる)ことができる。この場合、クロッピング量(すなわち重複量)はサイド情報に含まれる。
・クロッピングの量は固定数でもよい。たとえば、そのような数は標準によって事前に定義されていてもよく、あるいは入力と出力のサイズ(寸法)の間の関係がひとたびわかったら固定されるのでもよい。
・クロッピングの量は、水平方向、垂直方向、または両方向におけるクロッピングに関連付けられることができる。
クロッピングは、事前に構成された規則に従って行うことができる。クロッピング量が得られた後、クロッピング規則は次のようなものであってもよい:
・出力空間におけるRiの位置(左上、中心など)に応じて。クロッピングは、ある辺(上、左、下、または右)で適用されることができる。これは、Riのその辺が出力境界と一致しない場合である。
Liのサイズおよび/または座標がビットストリームに含められることができる。あるいはまた、パーティションの数がビットストリームにおいて示されることができ、各Liのサイズは、入力のサイズとパーティションの数に基づいて計算されることができる。
各入力部分集合Liの重複量は次のようなものであることができる:
・重複の量を示す指標がビットストリームに含められる(そしてビットストリームからパースされるまたは導出される)ことができる。
・重複の量は固定数であることができる。前述のように、この文脈での「固定」とは、たとえば標準などの規約もしくは独自の構成によって知られているか、またはエンコード・パラメータもしくはニューラルネットワークのパラメータの一部として事前に構成されていることを意味する。
・重複の量は、水平方向、垂直方向、または両方向におけるクロッピングに関連していることができる。
・重複の量は、クロッピングの量に基づいて計算されることができる。
以下では、どのパラメータがビットストリームに含まれる(そしてそこからパースされる)サイド情報を介して信号伝達されうるか、およびこれらの信号伝達されたパラメータがその後、残りのパラメータを導出するためにどのように使用されるかを示すために、いくつかの数値例が提供される。これらの例は単に例示するものであり、本開示を限定するものではない。
たとえば、ビットストリームにおいて、Liの信号伝達に関連する次の情報が含められることができる。
・縦軸におけるパーティション数=2。これは、諸図における空間Lが垂直方向に2で分割される例に対応する。
・横軸におけるパーティション数=2。これは、諸図における空間Lが水平方向に2で分割される例に対応する。
・等しいサイズのパーティション・フラグ=真。これは、諸図において、L1,L2,L3,L4を同じサイズで示すことによって例示されている。
・入力空間Lのサイズ(wL=200,hL=200)。これらの例では、幅wと高さhはサンプル数単位で測られる。
・重複量=10。この例では、重複はサンプル数の単位で測られる。
上記の情報によると、重複量が10であり、パーティションが均等サイズであることが示されているため、パーティションのサイズはw=(200/2+10)=110、h=(200/2+10)=110として得られる。
さらに、パーティションのサイズは(110,110)であり、各軸におけるパーティションの数は2であるため、パーティションの左上の座標は次のように得られる:
・第1のパーティションL1に関する左上の座標(x=0、y=0)、
・第2のパーティションL2に関する左上の座標(x=90、y=0)、
・第3のパーティションL3に関する左上の座標(x=0、y=90)、
・第4のパーティションL4に関する左上の座標(x=90、y=90)。
以下の諸例は、図20を参照して示されている、上記のパラメータの全部または一部を信号伝達する異なるオプションを例示している。図20は、入力部分集合Li、出力部分集合Ri、入力ピクチャー、および再構成されたピクチャーに関連するさまざまなパラメータがどのようにリンクされているかを示している。
上記の信号伝達されるパラメータは、本開示を限定するものではないことに注意されたい。以下に説明するように、入力空間および出力空間のサイズ、ならびに部分空間、クロッピングまたはパディングを導出されうるもとになる情報を信号伝達するための多くの可能な態様がある。いくつかのさらなる例が以下に示される。
第1の信号伝達の例:
図20は、次の情報がビットストリームに含められる第1の例を示している:
・潜在空間(デコーダ側での入力空間に対応する)における領域の数。これは4に等しい。
・潜在空間の全サイズ(高さおよび幅)。これは(h,w)に等しい。(上記ではwL,hLと呼ばれている)。
・領域(ここでは4つのLiのサイズ)、すなわち入力部分集合のサイズを導出するために使われるh1とw1。
・再構成された出力Rの全サイズ(H,W)。
・H1およびW1。H1およびW1は出力部分集合のサイズを表す。
次に、次の情報が事前に定義されている、または事前に決定されている。
・領域Ri間の重複の量X。たとえば、Xはクロッピング量をも決定する。
・領域Li間の重複の量y。
ビットストリームに含まれる情報とあらかじめ決められている情報により、LiおよびRiのサイズは次のように決定できる:
・L1=(h1+y,w1+y)
・L2=((h-h1)+y,w1+y)
・L3=(h1+y,(w-w1)+y)
・L4=((h-h1)+y,(w-w1)+y)
・R1=(H1+X,W1+X)
・R2=((H-H1)+X,W1+X)
・R3=(H1+X,(W-W1)+X)
・R4=((H-H1)+X,(W-W1)+X)
第1の信号伝達の例からわかるように、入力部分集合L1のサイズ(h1,w1)は、残りのすべての入力部分集合L2ないしL4のそれぞれのサイズを導出するために使用される。これは、図20に示されるように、入力部分集合L1ないしL4について同じ重複量yが使用されるため可能である。この場合、若干数のパラメータが信号伝達されるだけでよい。出力部分集合R1ないしR4にも同様の議論が当てはまり、出力部分集合R2ないしR4のサイズを導出するには、出力部分集合R1のサイズ(H1,W1)の信号伝達が必要とされるだけである。
上記で、h1とw1、H1とW1はそれぞれ入力空間と出力空間の中間における座標である。よって、この第1の信号伝達の例では、単一の座標(h1,w1)と(H1,W1)が、入力空間と出力空間の分割の4つへのパーティション分割を計算するために使用される。あるいはまた、2つ以上の入力部分集合および/または出力部分集合のサイズが信号伝達されてもよい。
別の例では、Liを処理するNNの構造、つまり入力のサイズがLiである場合に出力のサイズが何になるかがわかっていれば、LiからRiを計算することが可能性でありうる。この場合、出力部分集合Riのサイズ(Hi,Wi)はサイド情報を通じて信号伝達されなくてもよい。ただし、いくつかの他の実装では、実際にNN演算を実行する前にはサイズRiの決定が時として可能でないことがありうるため、(この場合のように)ビットストリームにおいてサイズRiを信号伝達することが望ましいことがある。
第2の信号伝達の例:
信号伝達の第2の例は、公式に従ってh1とw1に基づいてH1とW1を決定することを含む。公式はたとえば、式は次のようになってもよい:
・H1=(h1+y)×スカラー-X
・W1=(w1+y)×スカラー-X
ここでスカラーは正の数である。スカラーは、エンコーダおよび/またはデコーダ・ネットワークのサイズ変更比に関連している。たとえば、スカラーは、デコーダについては16などの整数、エンコーダについては1/16などの端数であることができる。よって、第2の信号伝達の例では、H1とW1はビットストリームにおいて信号伝達されず、それぞれの入力部分集合L1の信号伝達されたサイズから導出される。さらに、スカラーはサイズ変更パラメータの例である。
第3の信号伝達の例:
信号伝達の第3の例では、領域Liの間の重複の量yは事前に決定されておらず、ビットストリームにおいて信号伝達される。その際、出力部分集合のクロッピング量Xは、次のような公式に従って、入力部分集合のクロッピング量yに基づいて決定される:
・X=y×スカラー
ここで、スカラーは正の数である。スカラーは、エンコーダおよび/またはデコーダ・ネットワークのサイズ変更比に関連している。たとえば、スカラーは、デコーダについては16などの整数、エンコーダについては1/16などの端数であることができる。
これまで、上記の説明した方法は、ピクチャーを再構成することとともに、装置(たとえばデコーダ)が再構成方法に対応する処理を実行できるようにするさまざまなパラメータをサイド情報を介して信号伝達することに関する。前述のように、同様または類似の処理が、ピクチャーを表す情報をビットストリーム中にエンコードするとともに、ビットストリームに含められるべきサイド情報を準備する処理装置によって実行されてもよい。以下では、エンコード装置によって実行されうるエンコード処理が詳述される。
本開示のある実施形態によれば、ピクチャーをビットストリーム中にエンコードするための処理方法が提供される。ピクチャーは静止画像、または、たとえばビデオ・シーケンス(動画)のフレームに対応するビデオ・ピクチャーであってもよい。
この方法は、図22のフローチャートに示されており、ピクチャーを表すサンプルの入力集合(L)を2つ以上の入力部分集合(L1,L2)に分割するステップ2210を含む。サンプルの入力集合は、ピクチャーの一つまたは複数のサンプルを含んでいてもよい。入力部分集合は、一つまたは複数のサンプルを含んでいてもよい。入力部分集合(L1,L2)は、入力空間の一部または全体をカバーしうる。
なお、エンコーダ側では、入力空間Lは画像の諸チャネルを表してもよく、出力空間RはNNの一つまたは複数の層による処理後の潜在空間の諸チャネルを表してもよい。次いで、出力空間チャネルは、サイド情報を搬送するビットストリームと同じビットストリーム、または異なるビットストリームでありうるビットストリームにエンコードされてもよい。ビットストリーム生成(たとえばバイナリ化)は、NNの一部(たとえば層)と見なされてもよく、あるいはNNに続くバイナリ化(たとえばエントロピー・コーディング)モジュールによって実装されてもよい。他方、デコード側では、入力空間Lはビットストリームから導出された(たとえば、パース――可能なエントロピー・デコードを含む――され、解釈された)潜在空間のチャネルを表し、出力空間Rは再構成されたピクチャーを表す。本開示では、「サンプル」という用語は、ピクチャー・サンプルを指すだけでなく、特徴マップ・サンプル(要素)を指すためにも使用される。まとめると、Lは入力を表し、RはNNの出力を表す。
この方法は、さらに、前記2つ以上の入力部分集合(L1,L2)のそれぞれについてのサイズ((h1,w1);(h2,w2))および/または前記2つ以上の出力部分集合(R1,R2)のそれぞれについてのサイズ((H1,W2);(H2,W2))に基づいてサイド情報を決定するステップ2220を含む。なお、エンコーダ側では、入力部分集合のサイズ(および/または出力部分集合および/またはパディング/クロッピング量)が最適化可能であってもよい、つまり、エンコーダを使用するユーザーまたはアプリケーションによって、またはレート歪み最適化またはメモリ・コストも考慮した最適化などのある種の最適化を実行することによって構成可能であってもよい。
さらに、この方法は、一つまたは複数の層を含むニューラルネットワークを用いた処理ステップ2232を含む、前記2つ以上の入力部分集合(L1,L2)のそれぞれを処理するステップ2230を含む。各入力部分集合の処理は、エンドツーエンドのコーディングまたはループ内/ポストフィルタリング/プレフィルタリングを含みうる。さらに、後処理を含んでいてもよい。
ある例示的実装では、前記2つ以上の入力部分集合(L1,L2)は一つまたは複数のサンプルだけ重複している。重複とは、入力集合の一つまたは複数のサンプルをそれぞれ含む入力部分集合L1とL2が、同じ一つまたは複数のサンプルを共有することを意味する。よって、入力部分集合(L1,L2)の和集合は、サンプルの入力集合全体を、よってピクチャー全体をカバーする。部分集合(L1,L2)は、互いに隣接するサンプルの領域および/またはサンプルの不連続な集合に対応してもよい。該不連続なサンプル集合は、インターレース状、チェス盤などであってもよい。よって、ニューラルネットワークを含む処理を通じて生成される出力部分集合Riは、近傍の入力部分集合のサンプル(重複サンプルに対応し、普通、隣接する部分集合Li間の境界に共通に位置する)が使用されるので、より正確である。よって、Liの重複は、生成される出力部分集合Riの全体的な品質を改善する。特に、入力部分集合Liの境界に沿った歪みが緩和される。
ある例示的実装では、前記2つ以上の入力部分集合(L1,L2)は独立して処理される。よって、それらの入力部分集合は並列に処理されてもよく、これは、1つの入力部分集合が別の部分集合の処理のいかなる(中間または最終)結果も使用しないことを意味する。よって、入力部分集合の処理は高速に実行されることができ、エンコーダ‐デコーダ・フレームワーク内のピクチャー再構成のパフォーマンスをさらに改善する。あるいはまた、たとえL1とL2の処理に依存関係が存在しない場合でも、入力部分集合のそれぞれが逐次的に、つまり、たとえば事前定義されたシーケンス順序に従って一度に1つずつ処理されてもよい。
この方法の例示的実装では、ニューラルネットワークは、前記2つ以上の入力部分集合(L1,L2)のうちのある入力部分集合の複数のサンプルを使用して、前記2つ以上の出力部分集合(R1,R2)のうちのそれぞれの出力部分集合の1つのサンプルを生成し、それにより、前記2つ以上の入力部分集合について、それぞれの2つ以上の出力部分集合(R1,R2)を得る。結果として、入力サンプルLをサイド情報を利用して複数の部分集合L1とL2に分割し、各入力部分集合Liがニューラルネットワークで処理されることで、サンプルの入力集合Lからピクチャーが効率的にエンコードされうる。さらに、処理される入力部分集合Liのサイズがそれぞれの出力部分集合Riのサイズよりも小さいため、ピクチャー・エンコードは、より低い必要メモリで実行されうる。
たとえば、ニューラルネットワーク(NN)によって使用される前記複数のサンプルは、NNの最初の入力層のカーネル・サイズに依存してもよい。ニューラルネットワーク(NN)の前記一つまたは複数の層は、一つまたは複数のプーリング層および/または一つまたは複数のサブサンプリング層を含んでいてもよい。NNは、前記一つまたは複数のプーリング層を介して前記複数のサンプルをプーリングすることによって、出力部分集合の前記1つのサンプルを生成しうる。代替的または追加的に、前記1つの出力サンプルは、一つまたは複数のダウンサンプリング畳み込み層によるサブサンプリング(すなわちダウンサンプリング)を通じてNNによって生成されてもよい。プーリングとダウンサンプリングが組み合わされて、前記1つの出力サンプルを生成してもよい。
この方法はまた、サイド情報をビットストリームに挿入するステップS2240も含む。例示的実装によれば、前記2つ以上の出力部分集合(R1,R2)の指示がビットストリームに挿入される。言い換えれば、(コーディングされた)入力部分集合および/または(コーディングされた)出力部分集合がビットストリームに挿入されてもよい。ビットストリームへの出力部分集合の指示は、デコード側での入力集合Lの入力部分集合への分割を改善する可能性がある。ある実装例では、サイド情報の挿入は、シーケンスパラメータセットまたはピクチャーパラメータセットまたはピクチャーヘッダのうちの一つまたは複数にサイド情報を挿入することを含む。よって、サイド情報は柔軟な仕方で挿入される(そして信号伝達される)ことができ、これは、シーケンスの一部(ピクチャー、ピクチャーグループ、ピクチャーの一部)を制御できることを意味する。
ある実装例によれば、前記入力部分集合の少なくとも1つのサイズは、前記一つまたは複数の層による処理後に、それぞれの出力部分集合(R1;R2)のサイズを得るために必要とされるサイズよりも小さい。
上記の処理の結果、入力サンプルLをサイド情報を利用して複数の部分集合L1とL2に分割し、各入力部分集合Liがニューラルネットワークで処理されることで、サンプルの入力集合Lからピクチャーが効率的にエンコードされうる。さらに、処理される入力部分集合Liのサイズがそれぞれの出力部分集合Riのサイズよりも小さいため、ピクチャー・エンコードは、より低い必要メモリで実行されうる。
前記一つまたは複数の層は、パディングおよび/またはサイズ変更のための一つまたは複数の層を含むことができる。これらの一つまたは複数の層について、一つまたは複数の入力部分集合のサイズがより小さいことは、それぞれの入力部分集合の入力サンプルの数が、たとえばニューラルネットワークの最初の層によって提供されるすべてのサンプル(全受容野)をカバーしていない可能性があることを意味する。つまり、入力部分集合のサイズは、全受容野の部分集合をカバーするだけである。
全受容野(およびその部分集合)に関する上記のサンプル・カバレッジの意味は、図11を参照して再構成方法との関係で上記ですでに説明されている。完全性のために、デコーダ側に関して前述したように、全受容野TRFは、一つまたは複数の処理層(NN層など)を適用することによって、出力サンプルの指定された集合を得るために使用される入力サンプルの集合を指す。諸層は、一つまたは複数のカーネルを用いて入力を処理する畳み込み層であってもよい(畳み込み解除層について前述したのと同様)。カーネル(またはポーリング層など)を適用する処理により、出力サンプルの全受容野は入力サンプルの数より大きくなることがある。つまり、場合によっては、入力部分集合がTRF全体をカバーせず、TRFの部分集合をカバーする。
この方法のある実装例によると、前記2つ以上の入力部分集合(L1,L2)のそれぞれが長方形の入力集合(L)の長方形の領域であり、前記2つ以上の出力部分集合(R1,R2)のそれぞれが長方形領域である。図18ないし図20はそれぞれ、入力部分集合Liと出力部分集合Riの長方形領域の例を示す。よって、入力部分集合および出力部分集合の長方形形状は、形状が非常に規則的であるため、最小限のパラメータ(幅と高さなど)によって特徴付けられる可能性がある。よって、サイド情報のために好適なパラメータの数が最小限に保持されることができ、そのため、信号伝達オーバーヘッドが削減されうる。さらにまた、入力および出力部分集合両方の形状が長方形であるため、それぞれのサイズは単純な演算を通じて関連している(そして互いから決定される)。入力部分集合と出力部分集合について長方形形状を使用することで、長方形の入力部分集合から生成された出力部分集合をシームレスに組み合わせることができる。各領域Liはエンコーダによって独立に処理されてもよく、それにより2つの領域R1とR2(すなわち、出力部分集合)が得られる。
上記で論じた再構成方法と同様に、全受容野の部分集合が出力サンプルの集合を得るために使用されるので、欠けているサンプルを生成するためにエンコード側でもパディング操作が必要になる場合がある。
例示的実装では、前記2つ以上の入力部分集合のそれぞれの処理は、前記一つまたは複数の層で処理する前にパディングを含む。よって、入力部分集合において欠けているサンプルがパディング・プロセスによって追加されてもよい。
前述したように、パディングとは、新しいサンプルをたとえばピクチャーまたはピクチャー領域のボーダー(境界)に挿入することによって、入力(すなわち、入力画像)のサイズを大きくすることをいう。パディング・サンプルは、事前定義された値(0など)をもつサンプル、または既存のピクチャー(領域)値から導出された値をもつサンプル(この場合はピクチャーが入力であるため)であってもよい。パディング・サンプルは、たとえばパディング・サンプルに対して事前定義された相対位置にあるサンプルの値(たとえばパディング・サンプルの左のサンプルまたは上のサンプル)など、ピクチャー(領域)の最近接サンプルから値をコピーすることによって導出されてもよい。
一例によると、パディングされるサンプルの位置および/または量は、サイド情報に基づいて決定される。このように、エンコード側によって、信号伝達されるサイド情報に基づいて、パディングされるサンプルの位置および数が決定されてもよい。
前に説明されたように、パディングは図12を参照して非限定的に示されている。その例はここでも当てはまる。
ある実装例では、前記2つ以上の入力部分集合のそれぞれの処理は、前記一つまたは複数の層で処理した後、一つまたは複数のサンプルをクロッピングすることを含む。クロッピングとは、それぞれの領域Riの重複領域に属する前記出力部分集合のサンプルを除去することを意味する。一例では、クロッピングは、前記2つ以上の入力部分集合のうちの一つまたは複数をニューラルネットワークで処理した後、前記2つ以上の出力部分集合(R1,R2)のうちのそれぞれ一つまたは複数を得るために実行される。クロッピングによって、再構成されるべきピクチャーのサイズを小さくしたり、および/またはピクチャーのアスペクト比(長さ対幅)を変更したりすることができる。そのため、ピクチャーのサイズはディスプレイの好ましいサイズに適合されることができ、そのことは、ディスプレイ上のピクチャーの観察再現を改善する(適応的なピクチャー・サイズ)。クロッピングによって、ピクチャー・サイズを合わせることができる。さらに、クロッピングは、出力部分集合(R1とR2)が重複する領域をもつ場合に、出力の重複するセクションを削除する助けになる。
よって、クロッピング操作(すなわち、上記の処理に第3のステップが追加されてもよい)は、再構成された出力にマージする前に、Riに対して実行されてもよい。図18および図19は、入力部分集合Liがデコーダによって処理された後、デコーダがまだ重複領域をもつ出力部分集合Riを出力として提供することを示している。この場合、クロッピングはニューラルネットワークの後に実行される。あるいはまた、クロッピングはネットワークにおいて実行されてもよく、その場合、提供された出力部分集合Riは、ネットワーク内部のクロッピングの結果として、もはや重複領域をもたない。
ピクチャー再構成について前述したように、入力部分集合(L1,L2)は、第1の実施形態の処理とは対照的に、全受容野(TRF)を含まなくてもよく、これはエンコーダ側の処理についても当てはまる。TRFのサブフィールドを使用した結果、エンコード側はそれ自体ではピクチャーをどのようにパーディション分割するかを知らない。そのため、エンコード側はピクチャーをどのようにパーティション分割するかを示すサイド情報を決定する必要がある場合がある。それぞれのサイド情報は、たとえばピクチャーまたは他のパラメータに関連するパラメータを含みうる。その後、サイド情報は、たとえば前記ビットストリームにおいて、デコーダ側に信号伝達されてもよい。
特に、エンコーダは、再構成品質を制御するために、入力および出力空間において重複するパラメータの受け入れ可能な選択を決定してもよい。たとえば、エンコーダは、入力ピクチャーのサイズ(h,w)を使用し、ニューラルネットワークの入力‐出力特性に基づいて、入力部分集合Liの重複量yおよび/または出力部分集合Riの重複量Xを決定することができる。そのような特性は、(一つまたは複数の次元での)入力サイズと出力サイズの比などでありうる。一般に、特性は、ネットワークの特定の諸層またはネットワーク全体の入力/出力サイズ関係、NNの前記一つまたは複数の層において適用されるカーネル(単数または複数)のサイズ、またはNNの前記諸層において実行されるサブサンプリング、アップサンプリング、ポーリングなどを含む他の操作のサイズからの一つまたは複数のパラメータでありうる。本開示は、いかなる特定のパラメータにも限定されない。
この方法のある例示的実装によれば、サイド情報は、クロッピングされるサンプルの位置および/または量に基づいて決定される。よって、デコード側によって信号伝達されたサイド情報に基づいて、クロッピングされるサンプルの位置および/または数が迅速に決定されうる。一例では、クロッピングされるべきサンプルの位置および/または量は、サイド情報において示される入力部分集合のサイズと、ネットワークへの入力のサイズとネットワークからの出力のサイズとの関係を指定するニューラルネットワークのニューラルネットワーク・サイズ変更パラメータに応じて、決定される。よって、入力部分集合のサイズとニューラルネットワークの特性(すなわち、そのサイズ変更パラメータ)の両方を考慮することによって、位置および/またはクロッピング量が、より正確に決定されうる。よって、クロッピング量および/または位置は、ニューラルネットワークの属性に適合されることができ、そのことは、再構成されるピクチャーの品質をさらに改善する。
サイズ変更パラメータは加法的な項であってもよく、出力サイズを得るために入力サイズから減算される。つまり、出力部分集合の出力サイズは、ちょうどある整数によって、その対応する入力部分集合と関連付けられる。あるいはまた、サイズ変更パラメータは比であってもよい。この場合、出力部分集合のサイズは、入力部分集合のサイズにその比を乗算して出力部分集合のサイズを得ることによって、入力部分集合のサイズに関連付けられる。
本方法のある例示的実装では、サイド情報は:
・前記入力部分集合の数、
・前記入力集合のサイズ、
・前記2つ以上の入力部分集合のそれぞれのサイズ(h1,w1)、
・再構成されたピクチャー(R)のサイズ(H,W)、
・前記2つ以上の出力部分集合のそれぞれのサイズ(H1,W1)、
・前記2つ以上の入力部分集合(L1,L2)間の重複量
・前記2つ以上の出力部分集合(R1,R2)間の重複量
のうちの一つまたは複数の指示を含む。
よって、サイド情報を通じた多様なパラメータの信号伝達は柔軟な仕方で実行されうる。よって、信号伝達オーバーヘッドは、他のパラメータが信号伝達されるパラメータから導出される一方で上記のパラメータのうちどれがサイド情報において信号伝達されるかに依存して適応されてもよい。前記2つ以上の入力部分集合のそれぞれのサイズは異なっていてもよい。あるいはまた、入力部分集合が共通のサイズを有していてもよい。
さらに、エンコーダは、受け容れ可能なトレードオフを達成するよう、利用可能なメモリおよび/または処理速度(たとえばCPUのクロック周波数)に関する情報をさらに使用して、重複量yおよび/またはX(すなわちクロッピング量)を決定してもよい。受け容れ可能なトレードオフのポイントは、アプリケーションのタイプに依存してもよい。たとえば、モバイル・デバイスへのビデオ・ストリーミングの場合、メモリおよび計算資源がこの場合には制限されるため、小さな重複パラメータと多数のパーティションを選択することがありうる。他のアプリケーションでは、品質のほうが関心事であることがあり、その場合は重複量を増やすことができる。
よって、エンコード側は、デコード側にパラメータを信号伝達するために、上記のパラメータのさまざまなタイプをサイド情報に含めてもよい。異なる信号伝達シナリオのいくつかの例が、デコード側との関連で議論されている。図20はデコーダ側を示しているが、同様の処理は、単に矢印の名前を「デコーダ」から「エンコーダ」に変更することによって、エンコーダ側にも適用される。これは、エンコーダでは、前述のように、Lがピクチャー空間(入力空間)を表し、Rが潜在空間を表すためである。
デコーダ側を参照して前述した第1、第2、第3の信号伝達例は、エンコーダ側についても適用可能である。エンコーダ側ではビットストリームが生成され、デコーダ側ではビットストリームがパースされる。ただし、ビットストリームに含まれ、第1、第2、および第3の信号伝達例で説明されている信号伝達パラメータは、両側に適用される。以上で説明したサイド情報として提供されるパラメータは、このように、エンコーダ側の実施形態ではビットストリームに挿入される。デコーダ側の実施形態では、ビットストリームからパースされる。
本開示のある実施形態によれば、ビットストリームからピクチャーを再構成する装置が提供される。図23は、ピクチャーを再構成するための装置2300のブロック図を示している。本装置は、ビットストリームに基づいて、ピクチャーを表すサンプルの入力集合(L)を取得する段階と;入力集合(L)を2つ以上の入力部分集合(L1,L2)に分割する段階と;ビットストリームからサイド情報をパースする段階と;サイド情報に基づいて、前記2つ以上の入力部分集合(L1,L2)のそれぞれについてのサイズ((h1,w1);(h2,w2))および/または2つ以上の出力部分集合(R1,R2)のそれぞれについてのサイズ((H1,W1);(H2,W2))を決定する段階と;一つまたは複数の層を含むニューラルネットワークを用いた処理を含め、前記2つ以上の入力部分集合(L1,L2)のそれぞれを処理する段階であって、ニューラルネットワークは前記2つ以上の入力部分集合(L1,L2)のうちのある入力部分集合の複数のサンプルを使用して、前記2つ以上の出力部分集合(R1,R2)のうちのそれぞれの出力部分集合の1つのサンプルを生成し、それにより、前記2つ以上の入力部分集合について、前記それぞれの2つ以上の出力部分集合(R1,R2)を得るものである、段階と;前記2つ以上の出力部分集合を組み合わせることにより、前記ピクチャー(R)を再構成する段階とを実行するように構成された処理回路2310を含み、ここで、前記入力部分集合のうちの少なくとも1つの入力部分集合のサイズが、前記一つまたは複数の層による処理の後に、前記それぞれの出力部分集合(R1,R2)の前記サイズを得るために必要とされるサイズより小さい。
装置2300のある例示的実装では、処理回路2310の前記構成は、該回路が前記処理のためのそれぞれのモジュールを含むことを含んでいてもよい。これは、図23に示されるように、取得モジュール2312、分割モジュール2314、パース・モジュール2316、決定モジュール2318、処理モジュール2320、および再構成モジュール2322を含みうる。
本開示のある実施形態によれば、ビットストリームからピクチャーを再構成するための装置が提供され、本装置は、一つまたは複数のプロセッサと;前記一つまたは複数のプロセッサに結合され、前記一つまたは複数のプロセッサによる実行のためのプログラミングを記憶している非一時的なコンピュータ可読記憶媒体とを有しており、前記プログラミングは、前記一つまたは複数のプロセッサによって実行されると、上記で言及されているピクチャーの再構成に関連する方法を実行するように本装置を構成する。
ある実装例では、ビットストリームからピクチャーを再構成する装置は、上記で言及されている再構成方法のいずれかの側面による方法のステップを実行するように構成された処理回路を有していてもよい。
本開示のある側面によれば、ピクチャーをビットストリームにエンコードするための処理装置が提供される。図24は、ピクチャーをエンコードするための処理装置2400のブロック図を示している。本処理装置は:ピクチャーを表すサンプルの入力集合(L)を2つ以上の入力部分集合(L1,L2)に分割する段階と;前記2つ以上の入力部分集合(L1,L2)のそれぞれについてのサイズ((h1,w1);(h2,w2))および/または2つ以上の出力部分集合(R1,R2)のそれぞれについてのサイズ((H1,W1);(H2,W2))に基づいてサイド情報を決定する段階と;一つまたは複数の層を含むニューラルネットワークを用いた処理を含め前記2つ以上の入力部分集合(L1,L2)のそれぞれを処理する段階であって、ニューラルネットワークは、前記2つ以上の入力部分集合(L1,L2)のうちのある入力部分集合の複数のサンプルを使用して、前記2つ以上の出力部分集合(R1,R2)のうちのそれぞれの出力部分集合の1つのサンプルを生成し、それにより、前記2つ以上の入力部分集合について、前記それぞれの2つ以上の出力部分集合(R1,R2)を得るものである、段階と;前記ビットストリームに前記サイド情報を挿入する段階とを実行するように構成された処理回路2410を含み、前記入力部分集合のうち少なくとも1つの入力部分集合のサイズが、前記一つまたは複数の層による処理の後に、前記それぞれの出力部分集合(R1;R2)のサイズを得るために必要とされるサイズよりも小さい。
装置2400のある例示的実装では、処理回路2410の前記構成は、該回路が前記処理のためのそれぞれのモジュールを含むことを含みうる。これは、図24に示されるように、分割モジュール2412、決定モジュール2414、処理モジュール2416、および挿入モジュール2418を含んでいてもよい。
本開示のある側面によれば、ピクチャーをビットストリームにエンコードするための処理装置が提供される。本処理装置は:一つまたは複数のプロセッサと;前記一つまたは複数のプロセッサに結合され、前記一つまたは複数のプロセッサによる実行のためのプログラミングを記憶している非一時的なコンピュータ可読記憶媒体とを有しており、前記プログラミングは、前記一つまたは複数のプロセッサによって実行されると、上記で言及されている、ピクチャーのエンコードに関連する方法を実行するように本装置を構成する。
ある実装例では、ピクチャーをビットストリームにエンコードするための処理装置は、上記で言及されているエンコード方法のいずれかの側面による方法のステップを実行するように構成された処理回路を含を有していてもよい。
上記で議論された本開示の例示的実装は、以下の利点を提供しうる:
・第2の実施形態の例示的実装は、再構成品質と計算量の間の望ましいトレードオフを得るために、出力領域Riと入力領域Liのサイズの調整を可能にする一方で、必要とされるメモリの需要を削減する。
・第1の実施形態の例示的実装と比較して、第2の実施形態の例示的実装は、再構成品質と計算量を調整する柔軟性を提供する利点を提供することができる。この例示的実装では、全受容野の部分集合が入力として使用されるが、エンコーダは、再構成品質を制御するために、入力空間と出力空間における重複するパラメータの受け容れ可能な選択について決定をすることができる。
たとえば、エンコーダは、入力ピクチャーのサイズ(h,w)を使用し、ニューラルネットワークの入力‐出力特性に基づいて、入力部分集合Liの重複量yおよび/または出力部分集合Riの重複量Xを決定することができる。さらに、エンコーダは、利用可能なメモリおよび/または処理速度(たとえばCPUのクロック周波数)に関する情報をさらに使用して、重複量yおよび/またはXを決定してもよい。受け容れ可能なトレードオフ点は、アプリケーションのタイプに依存する。たとえば、モバイル・デバイスへのビデオ・ストリーミングの場合、メモリおよび計算資源がこの場合は限られているため、小さな重複パラメータと多数のパーティションを選択することが望ましいことがある。他のアプリケーションでは、品質のほうが関心事であることがあり、その場合は重複量を増やすことができる。
たとえば、全受容野とその部分集合が
・全受容野サイズ:(H,W)
・部分集合サイズ:(H-X,W-X)
によって与えられるとする。
必要とされるピーク・メモリと計算量の削減(全受容野から部分集合に移行することによる)は、(X(H+W)+X2)/(W*H)の比として与えられる。たとえば、H=W=20の場合、Xがたった1に等しいとき、計算量の削減は10.25%である。この例示的な計算は、入力空間のサイズにおけるほんの1行の削減が、メモリおよび合計計算回数における約25%の削減に対応することを示している。これは、メモリおよび計算の合計数が入力の幅と高さの乗算に比例するという事実によるものである。
メモリ要件および計算量は処理されるサンプル数に比例し、これは幅に入力の高さをかけたものに比例する。上記の例では、全受容野を入力として使用される場合の入力サイズはW×Hである。全受容野の部分集合が使用される場合、入力サイズは(W-X)×(H-X)に縮小される(この場合、Xは0より大きい整数)。したがって、計算量およびメモリ要件における削減割合は、
によって与えられることができる。
しかしながら、再構成品質の低下は、特にXが小さい場合、計算量の削減よりもはるかに少なくなる。Xが小さい場合、これは、全受容野の外側セクションにあるサンプルのみが入力に含まれないことを意味する。図12は、入力の境界にあるサンプル(この場合、該サンプルは欠けているので、パディングされたサンプル)が、少数の出力サンプルにのみ影響することを示している。たとえば、図12におけるパディングされたサンプル1は、出力における2つのサンプル(出力サンプル1と出力サンプル2)にのみ影響し、そのうちの1つは出力サンプル集合に含まれさえしない(出力サンプル2)。他方、中央にある利用可能なサンプル1は、5つの出力サンプルに影響する。したがって、図12から、パディングされたサンプル1を除去すること(つまり、欠けている実際の値の代わりにパディングされたバージョンを使用すること)は、再構成品質に対して小さな影響をもつだけであることがわかる。
まとめると、Xが小さい場合、複雑さの低下のほうが再構成の品質の低下より大きな重みをもつ。本開示は、望ましいトレードオフが達成できるように、Xを(適応的にまたは事前に決定された仕方で)選択することを許容する。受け容れ可能なトレードオフ点は、アプリケーションのタイプに依存する。たとえば、モバイル・デバイスへのビデオストリームの場合、メモリおよび計算資源がこの場合には限られるため、小さな重複パラメータおよび多数のパーティションを選択することが望ましいことがある。他のアプリケーションでは、品質のほうが関心事であることがあり、重複量Xを増やすことができる。
本開示の実施形態は、入力サンプルの残りの部分とは独立して入力の一部を処理する可能性を提供する。これは、一度に処理されるサンプルの量が削減されるため、メモリ要件が軽減されることを意味する。本開示は、以下により入力全体の処理を実装することをさらに可能にする:
・より能力の低い複数の処理ユニット(すなわち、より少ないメモリをもつユニット)を使用する、または
・より能力の低い単一の処理ユニットを複数の処理ラウンドで使用する。
特に第1のオプションの実装コストは、より安価であると期待される。しばしば克服するのが困難でありうる、処理速度に対する物理的な限界があるためである。他方、処理ユニット(たとえばCPUとGPU)の状態は、より低い動作周波数で動作する、より能力の低い複数の同一の処理コアを含む。
本開示は、特定のフレームワークに限定されないことに留意されたい。さらに、本開示は、画像またはビデオ圧縮に制約されず、オブジェクト検出、画像生成、および認識システムにも適用されうる。
本発明は、ハードウェア(HW)および/またはソフトウェア(SW)で実装できる。さらに、HWベースの実装は、SWベースの実装と組み合わせることができる。
明確のために、上記の実施形態の任意のものは、他の上記の実施形態の任意の一つまたは複数と組み合わされて、本開示の範囲内で新しい実施形態を作り出してもよい。
まとめると、本開示は、ニューラルネットワーク・ベースのビットストリームのピクチャー・デコードおよびエンコードに関し、該ピクチャーは、ビットストリームから得られるサンプルの入力集合Lによって表される。ピクチャーは、入力集合Lを処理した結果として生成される出力部分集合Riから再構成される。具体的には、入力集合Lが複数の入力部分集合Liに分割され、ビットストリームからパースされたサイド情報が、入力部分集合および出力部分集合のサイズを決定するために使用される。それらの入力部分集合は、それぞれ、一つまたは複数の層をもつニューラルネットワークによる処理を含む処理にかけられる。ニューラルネットワークは、入力部分集合の複数のサンプルを入力として使用し、出力部分集合の1つのサンプルを生成し、それにより、各入力部分集合について、それぞれの出力部分集合を得る。出力部分集合を組み合わせることによって、ピクチャーが再構成される。特に、少なくとも1つの入力部分集合のサイズは、ニューラルネットワークの一つまたは複数の層によって処理された後、それぞれの出力部分集合(R1;R2)のサイズを得るために必要なサイズよりも小さい。同様の処理がエンコード側で実行されてもよい。この処理は、メモリおよび計算資源に関する要件と制限の間のトレードオフをもって、ニューラルネットワークに基づくフレームワーク内でのピクチャー全体の効率的な再構成を可能にする。