(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-03
(45)【発行日】2024-12-11
(54)【発明の名称】ニューラルネットワークを利用したコーデック
(51)【国際特許分類】
H04N 19/463 20140101AFI20241204BHJP
【FI】
H04N19/463
(21)【出願番号】P 2023112837
(22)【出願日】2023-07-10
(62)【分割の表示】P 2022104352の分割
【原出願日】2019-06-11
【審査請求日】2023-08-04
(32)【優先日】2018-06-19
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】310021766
【氏名又は名称】株式会社ソニー・インタラクティブエンタテインメント
(74)【代理人】
【識別番号】100105924
【氏名又は名称】森下 賢樹
(72)【発明者】
【氏名】チェン、エリック
(72)【発明者】
【氏名】ワン、ジェイソン
【審査官】田中 崇大
(56)【参考文献】
【文献】特表2007-516640(JP,A)
【文献】米国特許出願公開第2018/0007382(US,A1)
【文献】Stephan Wenger, Gerd Knorr, Jorg Ott, Faouzi Kossentini,Simulation Results for H.263+ Error Resilience modes,ITU - Telecommunications Standardization Sector STUDY GROUP 16 Video Coding Experts Group (Question 15) Fourth Meeting: Tampere,インターネット<URL:http://wftp3.itu.int/av-arch/video-site/9804_Tam/Q15-D-17.doc>,1998年04月15日,pp.1,2,6,7
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/463
(57)【特許請求の範囲】
【請求項1】
ニューラルネットワークを用いてビデオストリームをエンコードする方法であって、
a)他のビデオエンコードパラメータを予測するように訓練された1つ以上の訓練されたニューラルネットワークを用いて、提供されたビデオエンコードパラメータから前記他のビデオエンコードパラメータを予測することと、
b)前記1つ以上のニューラルネットワークからの前記予測された他のビデオエンコードパラメータと、ビデオエンコーダによって判定された実際のエンコードパラメータとの予測誤差を判定することと、
c)予測誤差のないセクションのエンコードパラメータを使用せずに、前記エンコードされていないビデオストリームをエンコードすることと
を含む、方法。
【請求項2】
b)は、予測に誤差がある前記ビデオストリームのセクションの前記予測誤差をエンコードすることをさらに含む、請求項1に記載の方法。
【請求項3】
b)は、予測に誤差がある前記ビデオストリームのセクションの正しいエンコードパラメータをエンコードすることをさらに含む、請求項1に記載の方法。
【請求項4】
前記1つ以上の訓練されたニューラルネットワークは、予測ニューラルネットワーク及び双予測ニューラルネットワークを含む、請求項1に記載の方法。
【請求項5】
a)は、前記予測ニューラルネットワークによって予測されたエンコードパラメータを、入力として、前記双予測ニューラルネットワークに提供することを含む、請求項4に記載の方法。
【請求項6】
前記ビデオストリームの初期のセクションのエンコードパラメータが常にエンコードされる、請求項1に記載の方法。
【請求項7】
前記提供される前記ビデオエンコードパラメータ及びa)で行われる予測は、スライス間の依存関係を取り除くために、スライス境界内に制限される、請求項1に記載の方法。
【請求項8】
ニューラルネットワークを用いてエンコードされたビデオストリームをデコードする方法であって、
a)エンコードされたビデオストリーム内に少なくとも1つのセクションのビデオエンコードパラメータをもつ前記エンコードされたビデオストリームから、前記少なくとも1つのセクションの前記ビデオエンコードパラメータを抽出することと、
b)他のビデオエンコードパラメータを予測するように訓練された1つ以上のニューラルネットワークに、前記少なくとも
1つのセクションのビデオエンコードパラメータを提供することと、
c)前記1つ以上のニューラルネットワークで、前記提供されたビデオエンコードパラメータから前記他のビデオエンコードパラメータを予測することと、
d)前記予測されたビデオエンコードパラメータ及び前記エンコードされたビデオストリームを使用して、前記ビデオストリームをデコードし、1つ以上のデコードされたセクションを生成することと、
e)前記1つ以上のデコードされたセクションを保存または表示することと
を含む、方法。
【請求項9】
前記1つ以上のニューラルネットワークは、予測ニューラルネットワーク及び双予測ニューラルネットワークを含む、請求項8に記載の方法。
【請求項10】
c)は、前記予測ニューラルネットワークによって予測されたエンコードパラメータを、入力として、前記双予測ニューラルネットワークに提供することを含む、請求項9に記載の方法。
【請求項11】
a)は、前記エンコードされたビデオストリームから予測誤差を抽出することをさらに含む、請求項8に記載の方法。
【請求項12】
c)は、前記予測されたビデオエンコードパラメータを前記予測誤差で修正することをさらに含む、請求項11に記載の方法。
【請求項13】
b)で提供される前記ビデオエンコードパラメータ及びc)で行われる予測は、スライス間の依存関係を取り除くために、スライス境界内に制限される、請求項8に記載の方法。
【請求項14】
プロセッサと、
エンコードパラメータ値を予測するように訓練されたニューラルネットワークと、
前記プロセッサに動作可能に結合されたメモリであって、
前記メモリは、ビデオデコードの命令を実施しており、前記メモリは、改善されたビデオデコードの方法を実行するための命令をさらに含み、前記方法は、
a)エンコードされたビデオストリーム内に少なくとも1つのセクションのビデオエンコードパラメータをもつ前記エンコードされたビデオストリームから、前記少なくとも1つのセクションの前記ビデオエンコードパラメータを抽出することと、
b)他のビデオエンコードパラメータを予測するように訓練された1つ以上のニューラルネットワークに、前記少なくとも
1つのセクションのビデオエンコードパラメータを提供することと、
c)前記1つ以上のニューラルネットワークで、前記提供されたビデオエンコードパラメータから前記他のビデオエンコードパラメータを予測することと、
d)前記予測されたビデオエンコードパラメータ及び前記エンコードされたビデオストリームを使用して、前記ビデオストリームをデコードし、1つ以上のデコードされたセクションを生成することと、
e)前記1つ以上のデコードされたセクションを保存または表示することと
を含む、前記メモリと
を備える、システム。
【請求項15】
前記1つ以上のニューラルネットワークは、予測ニューラルネットワーク及び双予測ニューラルネットワークを含む、請求項14に記載のシステム。
【請求項16】
c)は、前記予測ニューラルネットワークによって予測されたエンコードパラメータを、入力として、前記双予測ニューラルネットワークに提供することを含む、請求項15に記載のシステム。
【請求項17】
a)は、前記エンコードされたビデオストリームから予測誤差を抽出することをさらに含み、c)は、前記予測された次のセクションのビデオエンコードパラメータを前記予測誤差で修正することをさらに含む、請求項14に記載のシステム。
【請求項18】
プロセッサと、
パラメータ値を予測するように訓練されたニューラルネットワークと、
前記プロセッサに動作可能に結合されたメモリであって、
前記メモリは、ビデオエンコードの命令を実施しており、前記メモリは、改善されたビデオエンコードの方法を実行するための命令をさらに含み、前記方法は、
a)他のビデオエンコードパラメータを予測するように訓練された1つ以上の訓練されたニューラルネットワークを用いて、提供されたビデオエンコードパラメータから前記他のビデオエンコードパラメータを予測することと、
b)前記1つ以上のニューラルネットワークからの前記予測された他のビデオエンコードパラメータと、ビデオエンコーダによって判定された実際のエンコードパラメータとの予測誤差を判定することと、
c)予測誤差のないセクションのエンコードパラメータを使用せずに、前記エンコードされていないビデオストリームをエンコードすることと
を含む、前記メモリと
を備える、システム。
【請求項19】
前記1つ以上の訓練されたニューラルネットワークは、予測ニューラルネットワーク及び双予測ニューラルネットワークを含む、請求項18に記載のシステム。
【請求項20】
前記他のビデオエンコードパラメータを予測することは、前記予測ニューラルネットワークによって予測されたエンコードパラメータを、入力として、前記双予測ニューラルネットワークに提供することを含む、請求項19に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ビデオストリームのエンコード及びデコードに関する。より詳細には、本開示は、ニューラルネットワークを用いたビデオストリームのエンコード及びデコードに関する。
【背景技術】
【0002】
デジタル信号圧縮は、多くのマルチメディアアプリケーション及びデバイスで広く使用されている。コーダ/デコーダ(コーデック)を用いたデジタル信号圧縮により、音声信号または映像信号などのストリーミングメディアを、インターネットを介して伝送すること、またはコンパクトディスクに保存することができるようになる。H.261、H.263;DV;MPEG-1、MPEG-2、MPEG-4、VC1;及びAVC(H.264)を含めて、多数の異なるデジタルビデオ圧縮の規格が登場している。これらの規格は、他のビデオ圧縮技術と同様に、所与のピクチャ内及び/または連続するピクチャ間の空間的及び時間的冗長性を無くすこと、または低減することにより、ビデオフレームピクチャを効率的に表現することを目指している。このような圧縮規格を用いることにより、ビデオコンテンツを、高度に圧縮されたビデオビットストリームで搬送することができ、結果として、ディスクに効率的に保存すること、またはネットワークを介して効率的に伝送することが可能である。
【0003】
多くのコーデックは、様々な種類のフレームの符号化を利用する。様々なフレーム符号化形式の例としては、イントラ符号化フレーム(Iフレーム)、予測符号化フレーム(Pフレーム)、及び双予測符号化フレーム(Bフレーム)が挙げられる。一般的には、Iフレームは、他のフレームと全く無関係に符号化される。Iフレームは、他のいずれのフレームのデコードからも独立してデコードされ得る。Iフレームは、デコーダが、そのIフレームのその位置で適切にデコードを開始することを可能にする、ランダムアクセスポイントを作成するように、エンコーダによって生成され得る。Iフレームは、一般に、PフレームまたはBフレームに比べてエンコードに多くのビットを必要とする。
【0004】
Pフレームは、Iフレームまたは別のPフレームなどの1つ以上の他のフレームを参照して符号化される。Pフレームは、1つ以上の前のフレームからの画像の変化分を含む。Pフレームをデコードするには、1つ以上の他のフレームを事前にデコードする必要がある。Pフレームは、Iフレームよりもエンコードに必要なビットが少なくて済む。BフレームはPフレームに似ているが、前のフレームと後のフレームとの両方についての差分画像を含む。Bフレームは、事前にデコードされる2つの異なる参照領域を用いて得られた予測を平均化することにより、フレーム内の動き領域の予測を形成するいくつかの予測モードで符号化され得る。Bフレームは、IフレームまたはPフレームよりもエンコードに必要なビットが少なくて済む。
【0005】
インターネットを介した伝送のために、Iフレームを含むビットストリームへビデオストリームを符号化するには、ある種の問題が生じる。1つの問題は、圧縮の遅延である。Iフレームは、一般に、PフレームまたはBフレームよりも多くのビットを必要とするが、ビデオ画像をPフレームまたはBフレームとして圧縮し、エンコードするには、Iフレームとしてよりも多くの時間がかかる。もう1つの問題は、ビットレートジッタと呼ばれるものである。Iフレームは、PフレームまたはBフレームよりもはるかに多くのビット数を消費するので、エンコードされたピクチャを生成するためのビットレートは不均一である。さらに、セクションごとに、適切なデコードを可能にするために、いくつかの異なるパラメータがビデオストリーム内にエンコードされなければならない。これらのパラメータは、エンコードされたビデオストリームに設けられなければならない付加的なビットであり、この結果として、エンコードされたビットストリームのサイズを増加させる。ビットストリームを小さくし、したがってビットレートを平滑化させることがより望ましい。
【0006】
他の幅広い分野にも影響を与えている最近の発展分野の一つに、ニューラルネットワーク(NN)がある。ニューラルネットワークは、画像認識、音声認識、及び手書き認識、ならびに株式市場の予測を含む無数の分野にうまく応用されている。最も単純なレベルのニューラルネットワークは、遷移重み及び内部バイアスを有する一連のノードである。ニューラルネットには、特徴と呼ばれる入力が与えられる。ニューラルネットワークが訓練されているとき、その入力はラベルと呼ばれる所望の結果をもたらすようになる。特徴に対して正しいラベルを生成するようにニューラルネットワークを訓練するために、特定の特徴に対してラベルが正しく与えられるまで、何度もの試行にわたりコスト関数を用いて重みを調節する。画像認識及び株式市場予測などの用途に用いられる一般的なタイプのニューラルネットワークは、再帰型ニューラルネットワーク(RNN)である。RNNは、典型的なノードネットワーク設計に、第2の出力を付け加える。そして、この第2の出力は、単にそのノード自体の繰り返しであってもよい。第2の出力は、ネットワークが、特徴及び関連ラベルに関する無限の履歴情報を維持することを可能にする、追加されたメモリ構成要素を表す。この繰り返しは、前の層と同じ遷移重み及びバイアスを有する付加的な隠れノード層と考えられ得る。
【0007】
こうした文脈の中で、本開示の態様が生じる。
【図面の簡単な説明】
【0008】
本発明の教示は、添付の図面と併せて以下の詳細な説明を検討することにより、容易に理解することができる。
【0009】
【
図1A】本発明の実施形態の文脈内でのストリーミングデータピクチャの1つの可能な分割を説明する概略図である。
【
図1B】本開示の態様による再帰型ニューラルネットワークの1つの可能なノードレイアウトを説明する概略図である。
【
図1C】本開示の態様による展開された再帰型ニューラルネットワークを説明する概略図である。
【
図2】本開示の態様による双予測ニューラルネットワークを訓練するための方法を示すブロック図である。
【
図3】本開示の態様による予測ニューラルネットワークを訓練するための方法を示すブロック図である。
【
図4】本発明の実施形態と関連して用い得るニューラルネットワーク強化デジタルピクチャエンコードを説明するフロー図である。
【
図5】本発明の実施形態と関連して用い得るストリーミングニューラルネットワーク強化データデコードにおける概略プロセスフローを説明するフロー図である。
【
図6】本発明の実施形態による、デジタルピクチャをニューラルネットワークエンコード及び/またはデコードするための装置を説明するブロック図である。
【発明を実施するための形態】
【0010】
以下の詳細な説明は、例示を目的として多くの具体的な詳細を含むが、当業者の誰でも、以下の詳細に対する多くの変形及び改変が本発明の範囲内にあることを認識する。したがって、以下に説明する本発明の例示的な実施形態は、特許請求される発明に対する一般性を一切損なうことなく、かつ特許請求される発明に制限を課すことなく述べられる。
【0011】
序論
本発明の実施形態は、エンコードされたビットストリーム内に含まれる情報量を減らすために、1つ以上の訓練されたニューラルネットワークを使用することを含む新しいエンコードプロトコルを実施する。訓練されたニューラルネットワークにより、コーデックが、前のエンコードパラメータからエンコードパラメータを予測することが可能になり得る。したがって、本開示の態様によれば、ニューラルネットワークによって正確に予測されたエンコードパラメータがエンコードされない場合があり、誤って予測されたパラメータは、ビットストリーム内にエンコードされたエンコード誤差ストリームによって修正され得る。
【0012】
提案するプロトコルは、第1のニューラルネットワーク及び第2のニューラルネットワークを使用する。第1のニューラルネットワーク及び第2のニューラルネットワークはいずれも、他のエンコードパラメータを入力として用いてエンコードパラメータを予測することができる。ただし、第1のニューラルネットワーク(NN)の入力は、第2のNNの入力とは異なる。
【0013】
本開示の特定の態様をより良く理解するために、第1のNN及び第2のNNの入力について説明する前に、いくつかの用語を明確にすることが有用である。従来のビデオエンコーダは、ビデオシーケンスを、符号化されたストリームに圧縮することができる。符号化されたストリームでは、元の入力ビデオピクセルは、MBタイプ、イントラ予測タイプ、動きベクトル、及びDCT係数などのエンコードされたパラメータのシーケンスによって表される。パラメータ間の順序を記述するのには、時間概念が用いられ得る。具体的には、パラメータAがパラメータBよりもビデオシーケンスの先頭近くに配置されている場合、パラメータAはパラメータBの前にあると言われる。それ以外の場合、パラメータAはパラメータBの後にあると言われる。
【0014】
第1のNNの場合、入力は、予測すべき現在のパラメータの前及び後の両方のパラメータを含む。第2のNNの場合、入力は、予測すべき現在のパラメータの前のパラメータのみを有する。これは、符号化されたビデオストリームの予測(P)ピクチャ及び双予測(B)ピクチャに類似している。Pピクチャは、現在のピクチャの前の参照ピクチャのみを使用する。Bピクチャは、現在のピクチャの前及び後の両方の参照ピクチャを使用する。第1のNNは、予測すべき現在のパラメータの前及び後の両方から入力を受け取るので、第1のNNの予測結果は、第2のNNの予測結果よりも優れている。ただし、Bピクチャ予測と同様に、第1のNNは入力として未来のパラメータに依存するので、第1のNNの使用は、未来のパラメータの利用可能性によって制限される。
【0015】
第1のNN及び第2のNNの両方を使用して、符号化されるパラメータを予測することにより、ビデオの符号化効率を向上させることができる。以前のパラメータのみが入力として期待されるので、元の符号化済みビデオストリームを並べ替えることなく、入力は常に第2のNNに利用可能である。ただし、第1のNN予測を有効にするには、第1のNNが予測を開始する前に、いくつかの未来のパラメータが利用可能でなければならない。PピクチャがBピクチャの参照として利用可能でなければならないのと全く同じように、第2のNNの予測結果を第1のNNの入力として使用することができる。しかし、第1のNNの出力を第2のNNの入力として使用することはできない。便宜上、本明細書では、第1のNNのようなニューラルネットワークを「双予測」であると呼び、第2のNNのようなニューラルネットワークを「予測」であると呼ぶことが便利である。
【0016】
第1のNN及び第2のNNの両方が共に使用される場合、一部のパラメータは第1のNNによって予測され得、一部のパラメータは第2のNNによって予測され得る。両方から予測されるパラメータはない。同様に、一部のピクチャはPピクチャとして符号化され、一部のピクチャはBピクチャとして符号化されるが、P及びBの両方として符号化されるピクチャはない。
【0017】
一般に、第2のNN予測が多すぎると、予測精度が低下する。第1のNN予測が多すぎると、第1のNN及び第2のNNの両方の利用可能な入力パラメータの個数が減り、予測精度が低下する可能性もある。全体で最高の予測精度を達成するには、第1のNNと第2のNNの最適な組み合わせを探し当てることが重要である。例えば、第2のNNはDCT係数を予測することができる。その結果、前及び後のDCT係数の両方が、他のパラメータ予測のために第1のNNにとって利用可能になる。第1のNNでは、利用可能なパラメータのみを入力として使用できることに留意されたい。全てのDCT係数が利用可能であったとしても、未来のパラメータ全てが必ずしも利用可能であるとは限らない。例えば、MB1のMB符号化タイプが第1のNNの予測対象である場合、MB0のMB符号化タイプは利用可能であるが、MB2のMB符号化タイプは利用可能ではない。ただし、MB2のDCT係数は利用可能である。一実施態様では、同じデータセットフォーマットが第1のNN及び第2のNNの両方に対応できるよう用意される。パラメータの利用可能性に従って、利用可能でないパラメータは、特別な無効値でマスクされる。予測後に、予測誤差は、最終的なエンコード結果としてエントロピー圧縮される。デコードプロセスを円滑化するために、予測誤差は、保存または伝送される前に並べ替えられてもよい。各ピクチャを1単位として、最初に第2のNNの予測誤差が保存または伝送され得、次に第1のNNの予測誤差が保存または伝送され得る。デコーダ側では、第2のNNが第1のNNの前に実行される。
【0018】
既存のビデオエンコード方法に照らして理解を容易にするために、最終的なエンコード済みストリームの順序が従来のエンコーダ出力順序と異なっていても、本開示では、エンコードパラメータ間の「前」及び「後」の関係を指定するのに、従来のエンコーダ出力順序を引き続き使用する。
【0019】
ピクチャエンコードに関する用語をより良く理解するために、画面空間のセグメンテーションについて、
図1Aに関して説明する。
図1Aは、単一のピクチャ100(例えば、デジタルビデオフレーム)が、1つ以上のセクションに分解され得ることを示す。本明細書で使用するとき、用語「セクション」は、ピクチャ100内の1つ以上のピクセルのグループを指し得る。セクションは、ピクチャ内の単一のピクセルから、ピクチャ全体にまで及び得る。セクションの非限定的な例には、スライス102、マクロブロック104、サブマクロブロック106、ブロック108、及び個々のピクセル110が含まれる。
図1Aに示すように、各スライス102は、マクロブロック104の1つ以上の行、または1つ以上のそのような行の一部分を含む。一行のマクロブロックの個数は、マクロブロックのサイズと、ピクチャ100のサイズ及び解像度によって決まる。例えば、各マクロブロックが16×16ピクセルを含む場合、各行のマクロブロックの個数は、ピクチャ100の幅(ピクセル単位)を16で割ることによって算出され得る。各マクロブロック104は、いくつかのサブマクロブロック106に分解され得る。各サブマクロブロック106は、いくつかのブロック108に分解され得、各ブロックは、いくつかのピクセル110を含み得る。一例として、本発明を限定することなく、一般的なビデオ符号化方式では、各マクロブロック104は、4つのサブマクロブロック106に分解され得る。各サブマクロブロックは、4つのブロック108に分割され得、各ブロックは、16個のピクセル110の4×4の配列を含み得る。
【0020】
ニューラルネットワーク強化エンコード
本開示の態様によれば、エンコードパラメータ、例えば、動きベクトル、イントラ予測モード動きベクトル、及び変換係数を含めることは、現在のフレーム及び/または前のフレームのエンコードパラメータから次のフレームのエンコードパラメータを予測するように訓練されたニューラルネットワークの使用によって低減させることが可能であり、及び/または現在のフレームのエンコードパラメータを、現在のフレームの他のエンコードパラメータから予測することができる。本エンコードシステムでは、以下に詳述する標準的な手段によりエンコードパラメータを導出するエンコード方式が、現在のセクションに対して実行され得、次に、このエンコードパラメータが、現在のエンコードパラメータのセットから次のエンコードパラメータのセットを予測するように訓練されたニューラルネットワーク(以下、第2のNNと呼ばれる)に提供され得る。その後、本システムでは、エンコードされていないビデオストリームの次のセクションのためのエンコードパラメータが導出され得、NNによって行われた次のセクションのためのエンコードパラメータの予測結果が点検され得る。予測が正確であった場合、本システムは、符号化されたビットストリームにそのエンコードパラメータを含めない。予測が正確でなかった場合、本システムは、ビットストリームにエンコードパラメータを含め得る。いくつかの実施形態では、予測が正確でない場合、ニューラルネットワークによって予測されたエンコードパラメータと、標準のエンコードプロセスによって導出される実際のエンコードパラメータとの差(以下、エンコード誤差と呼ぶ)が、符号化されたビットストリームに含められる。このようにして、符号化されたビットストリーム内にエンコードパラメータの削減されたセットが含められ得、したがってビデオストリームのメモリフットプリントが削減され得る。
【0021】
本開示のさらなる態様によれば、前のセクション及び次のセクションのパラメータ値から現在のセクションのエンコードパラメータを予測するように訓練された別のニューラルネットワーク(以下では、このニューラルネットワークが、訓練プロセスにおいて最初に訓練され得るので、第1のNNと呼ぶ)が、追加の精度のために提供され得る。第1のNNの入力として使用される前及び次のセクションのエンコードパラメータは、エンコード誤差を加えた第2のNNの結果から生成され得る。次に、第1のニューラルネットワークが、第2のNNによって生成された前及び次のセクションのパラメータ値のセットから、欠落している現在のセクションのパラメータ値を予測し得る。第2のNNに関して上記で説明したように、この予測結果は、エンコードプロセスから導出される次のセクションの実際のエンコードパラメータと比較され得る。第1のNNによって予測されたエンコードパラメータが正しい場合、それらは符号化されたビットストリームから削除され得、すでに述べたように、予測されたパラメータ値が正しくない場合、実際のエンコードパラメータが、符号化されたビットストリームに含められ、またはその代わりにエンコード誤差が含められるようになる。
【0022】
ニューラルネットワークは、当技術分野で知られている任意のタイプであってよいが、好ましくは、ニューラルネットワークは、再帰型ニューラルネットワーク(RNN)である。RNNは、畳み込みRNN(CRNN)であってもよい。代替実施形態では、RNNは、任意のタイプの長・短期記憶(LSTM)RNNである。
【0023】
図1Bは、RNNの基本形態が、活性化関数S、1つの入力重みU、再帰型隠れノード遷移重みW、及び出力遷移重みVを有するノード120の層であることを示す。活性化関数は、当技術分野で知られている任意の非線形関数であってもよく、tanh関数に限定されず、例えば、活性化関数Sは、シグモイド関数またはReLu関数であってもよいことに留意されたい。他のタイプのニューラルネットワークとは異なり、RNNは、層全体に対して1セットの活性化関数及び重みを有する。
図1Cに示すように、RNNは、時間T及びT+1を経て移行する同じ活性化関数を有した一連のノード120と見なされ得る。すなわち、RNNは、前の時刻Tの結果を現在の時刻T+1に反映させることによって履歴情報を維持する。いくつかの実施形態では、畳み込みRNNが使用され得る。畳み込みRNNでは、いくつかの異なるノード層が接続され、第1のノード層の出力が第2のノード層の入力に接続されるなどして、階層構造が形成される。使用され得る別のタイプのRNNは、入力ゲート活性化関数、出力ゲート活性化関数、及び忘却ゲート活性化関数を有するRNNノードにメモリブロックを追加して、Hochreiter&Schmidhuber「Long Short-term memory」Neural Computation 9(8):1735-1780(1997)によって説明されているように、ネットワークがいくつかの情報をより長期間保持することを可能にするゲーティングメモリをもたらすLSTMニューラルネットワークである。
【0024】
ニューラルネットワークの訓練
図2は、エンコードパラメータを認識して正しく予測するように新しいニューラルネットワークを訓練するための方法200を示す。ニューラルネットワーク(NN)の訓練は、NN210の重みの初期化から始める。初期の重みは、活性化関数のタイプ及びノードへの入力の数によって決まる。NNの初期の重みは、隠れ層での非対称の計算を招くために、これを0にすることはできない。一般に、初期の重みはランダムに分散させる必要がある。例えば、tanh活性化関数を用いるNNは、-1/√nから1/√nの間に分布する乱数値を有するべきである。ただし、nはノードへの入力の数である。
【0025】
NNは、任意数の状態を有し得る。一般的なNNでは、各隠れ状態はその入力として全ての特徴を提供され、ラベル空間と同じ大きさの出力を生成する。CRNNでは、前の層と比較してノード数を減らした余分のノード層を追加することにより、ラベル空間が削減される。いくつかの実施形態では、パラメータ値をエンコードするためのラベル空間は、4ビットの小さい符号なし整数に符号ビットを加えたものである。4ビットよりも大きいパラメータ値の場合、パラメータは、予測を行わずに直接ストリームにエンコードされ得る。
【0026】
NNは、乱数値で初期化されると、特徴データを使用して訓練され得る。両方のニューラルネットタイプ用の訓練データの形式は、システムが実際にエンコード/デコード機能を実行しているときに送出及び受領が行われるデータの形式と厳密に一致している必要があることに留意されたい。同じNNがエンコーダとデコーダとによって使用される場合では特にそうである。このような場合、デコーダ側NNは、エンコーダ側NNと同じ結果を出力することが期待される。本開示の態様によれば、第1のNNが、前のセクション及び次のセクションのエンコードパラメータから正しいエンコードパラメータを予測するように訓練され得る。
【0027】
第1のNNを、前及び次のセクションから現在のセクションのエンコードパラメータを予測するように訓練するには、ビデオエンコードパラメータの配列が作成されなければならない(220)。各配列は、前のセクションから未来のセクションまでのタイムスタンプ順に並べられたビデオストリームの各セクションのエンコードパラメータを含む。これらの配列は、上記のエンコードパラメータ生成方法によって生成され得る。第1のNNの特徴データは、次のセクションまでのビデオストリームの各セクションのラベルを含むため、現在のセクションの少なくとも1つのタイプのエンコードパラメータが無効値でマスクされなければならない(230)。いくつかの例では、ビットストリームのエンコードパラメータの全てが利用可能であるわけではない可能性がある。この場合、次のセクション以降の全ての未来のエンコードパラメータは、無効値でマスクされる。その後、第1のNNには、マスクされたエンコードパラメータを特徴データとして含むエンコードパラメータ配列が提供される。マスクされた配列に対するNNによって予測されたラベルは、実際のエンコードパラメータと比較され、NNは、確率的勾配降下法を用いた標準的な誤差逆伝播アルゴリズムで訓練される(240)。
【0028】
訓練240の各繰り返しの後に、異なるエンコードパラメータタイプがマスクされ得、以前にマスクされたパラメータはマスクが解除され得る。このようにして、第1のNNは、前及び次のセクションのパラメータから、現在のセクションの全てのタイプのエンコードパラメータを認識し、予測するように訓練され得る。同様に、第1のNNは、現在のセクション並びに/または前及び次のセクションの他のパラメータ値から現在のセクションの欠落しているパラメータ値を予測するように訓練され得る。訓練の過程において、現在のセクションの複数のエンコードパラメータがマスクされ得、または現在のセクションの全てのパラメータがマスクされ得ることを理解されたい。さらに、いくつかの実施形態では、訓練時に次のセクションは、予測し、マスクすべきタイプのエンコードパラメータを有し得る。第1のNNの訓練は、予測の誤差率に改善が見られなくなった後に終了する。いくつかの実施形態では、出力トークンが実際のパラメータ値に取って代わってもよい。
【0029】
第1のNNのノード入力、出力、及び遷移重みの検討から、他のエンコードパラメータを使用して、どのエンコードパラメータを正確に予測できるかを判定することができる。さらに、NNの重み及びバイアスのメタ分析を使用して、他のエンコードパラメータタイプの予測におけるエンコードパラメータタイプの重要性を判定することができる。
【0030】
図3は、第2のNNを訓練するための方法を示す。第1のNNと同様に、第2のNNは、方法300に従って、確率的勾配降下法を用いた誤差逆伝播を使用して、次のセクションのエンコードパラメータを予測するように訓練され得る。第2のニューラルネットワークは、上記で
図2を用いて説明したのと同じように、最初に乱数値で初期化される(310)。第2のニューラルネットワークには、現在のセクションまでのセクションごとに各タイプのエンコードパラメータを含む配列が提供される(320)。エンコードパラメータの配列の次のセクションは無効値でマスクされ得(330)、ニューラルネットワークには無効値の配列が提供され得る。正しいラベルは、以下に説明するエンコードパラメータ生成方法から知られる次のセクションのエンコードパラメータである。確率的勾配降下法を用いた通時的誤差逆伝播を使用して、第2のニューラルネットワークの正しい重み及びバイアスを生じさせる(340)。予測の誤差率が低下しなくなるまで、訓練を数回繰り返す。訓練後に、NNは、次のセクションのための有効なエンコードパラメータを生成する。
【0031】
ニューラルネットワークエンコード方法
デジタルピクチャは、
図4に説明される一般化された方法400に従ってエンコードされ得る。エンコーダは、複数のデジタル画像401を受け取り、各画像をエンコードする。デジタルピクチャ401のエンコードは、セクション単位で進行し得る。セクションごとのエンコードプロセスは、任意選択で、パディング402、画像圧縮404、及びピクセル再構成406を含み得る。イントラ符号化ピクチャ及びインター符号化ピクチャの両方に共通のプロセスフローを促進するために、現在処理中のピクチャ401のうちのデコードされていない全てのピクセルは、仮ピクセル値でパディングされて、402において示すようにパディングされたピクチャが生成される。パディングされたピクチャは、バッファに格納された参照ピクチャのリスト403に追加される。ピクチャを402でパディングすることにより、現在処理中のピクチャを、画像圧縮404時及びピクセル再構成406時の後続処理において参照ピクチャとして使用することが容易になる。そのようなパディングは、参照により本明細書に組み込まれる、本発明の譲受人に譲渡された米国特許第8,218,641号に詳細に記載されている。
【0032】
本明細書で使用するとき、画像圧縮とは、データ圧縮のデジタル画像への適用を意味する。画像圧縮404の目的は、与えられた画像401の画像データの冗長性を低減して、その画像のデータを圧縮データという効率的な形で保存または伝送できるようにすることである。画像圧縮404は、非可逆または可逆であってよい。可逆圧縮は、製図、アイコン、または漫画などの人工画像には好ましい場合がある。これは、非可逆圧縮方法が、特に低ビットレートで使用される場合には、圧縮アーティファクトを発生させるためである。可逆圧縮方法はまた、医療画像または保存を目的として行われる画像スキャンなど、高い値のコンテンツについて好ましい場合がある。非可逆方法は、ビットレートの大幅な減少を達成するために、忠実度のわずかな(場合によっては感知できない)損失が許容可能な用途で写真などの自然画像に特に適している。
【0033】
可逆画像圧縮の方法の例には、PCXではデフォルトの方法として使用され、BMP、TGA、TIFFで可能な方法として使用されるランレングス符号化、エントロピー符号化、GIF及びTIFFで使用されるLZWなどの適応辞書アルゴリズム、PNG、MNG、及びTIFFで使用されるデフレートが含まれるが、これらに限定されない。非可逆圧縮の方法の例には、ピクチャ401の色空間を画像内の最も共通した色に縮小すること、クロマサブサンプリング、変換符号化、及びフラクタル圧縮が含まれる。
【0034】
色空間縮小においては、選択した色は圧縮画像のヘッダ内のカラーパレットで指定され得る。各ピクセルは、カラーパレットの色のインデックスを参照しているにすぎない。この方法は、ポスタリゼーションを回避するためにディザリングと組み合わされてもよい。クロマサブサンプリングは、目が色よりも明るさをより強く知覚するという事実を、画像内のクロミナンス情報の半分以上を削除することによって利用する。変換符号化は、おそらく最も一般的に使用される画像圧縮方法である。変換符号化は、通常、離散コサイン変換(DCT)またはウェーブレット変換などのフーリエ関連変換に続いて、量子化及びエントロピー符号化を適用する。フラクタル圧縮は、特定の画像では、画像の一部が同じ画像の他の部分に似ているという事実に依拠する。フラクタルアルゴリズムは、これらの部分、またはより正確には幾何学的形状を、エンコードされた画像を再現させるために使用される「フラクタルコード」と呼ばれる数学的データに変換する。
【0035】
画像圧縮404は、画像401の特定の部分が他の部分よりも高品質でエンコードされる関心領域符号化を含み得る。これは、画像の特定の部分を最初にエンコードし、他の部分を後からエンコードすることを含むスケーラビリティと組み合わされ得る。圧縮データは、画像の分類、検索、または閲覧に使用できる、画像に関する情報(メタ情報またはメタデータと呼ばれることもある)を含むことができる。このような情報には、色及びテクスチャの統計量、小さなプレビュー画像、ならびに作成者/著作権情報が含まれ得る。
【0036】
限定としてではなく、一例として、404での画像圧縮中に、エンコーダは、ピクセルのブロックを圧縮するための最良の方法を検索してもよい。エンコーダは、現在パディングされているピクチャを含む、参照ピクチャリスト403内の全ての参照ピクチャを検索して、良好に一致させることができる。現在のピクチャがイントラピクチャとして符号化される場合、参照リスト内ではパディングされたピクチャのみが利用可能である。404での画像圧縮では、後で、206でのピクセル再構成時に、1つ以上の参照ピクチャ(パディングされたピクチャを含む)と共に使用される動きベクトルMV及び変換係数407を生成する。
【0037】
画像圧縮404は、一般に、最良のインター予測一致のための動き探索MS、最良のイントラ予測一致のためのイントラ探索IS、現在のマクロブロックがインター符号化されているか、またはイントラ符号化されているかを決定するためのインター/イントラ比較C、可逆残差ピクセル405を計算するために最も一致する予測ピクセルで符号化されているセクションからの元の入力ピクセルの減算Sを含む。次に、残差ピクセルは、変換及び量子化XQを受けて、変換係数407を生成する。変換は通常、離散コサイン変換(DCT)などのフーリエ変換に基づいている。既存のビデオ規格では、イントラピクチャを符号化する場合、動き探索MS及びインター/イントラ比較Cはオフにされる。しかしながら、本発明のいくつかの実施形態では、パディングされたピクチャが参照として利用可能である場合、これらの関数はオフにされない。その結果、画像圧縮204は、イントラ符号化ピクチャ及びインター符号化ピクチャに対し同じであり得る。
【0038】
動き検索MSでは、インター符号化ピクチャに対して通常行われるように、動き補償のための最も一致するブロックまたはマクロブロックを求めてピクチャ401を探索することにより、動きベクトルMVを生成し得る。現在のピクチャ401がイントラ符号化されたピクチャである場合、コーデックは通常、ピクチャにわたる予測を許可しない。その代わりに、通常、イントラピクチャと、変換係数を生成してピクセル予測を行うことによって符号化されたピクチャとに対して、全ての動き補償がオフにされる。また一方、いくつかの代替の実施態様では、イントラピクチャを使用して、現在のピクチャ内のセクションをその同じピクチャ内の別のオフセットセクションと照合することにより、インター予測を行い得る。2つのセクション間のオフセットは、406でのピクセル再構成に使用できる動きベクトルMV'として符号化され得る。一例として、エンコーダは、イントラピクチャ内のブロックまたはマクロブロックを同じピクチャ内の他のいくつかのオフセットセクションと照合し、次に2つの間のオフセットを動きベクトルとして符号化しようと試み得る。次に、「インター」ピクチャに対するコーデックの通常の動きベクトル補償を使用して、「イントラ」ピクチャに対する動きベクトル補償を行い得る。特定の既存のコーデックは、2つのブロックまたはマクロブロックの間のオフセットを動きベクトルに変換できる関数を有し、これに従って、406でピクセル再構成を行い得る。ただし、これらの関数は、従来、イントラピクチャのエンコードではオフにされている。いくつかの代替の実施態様では、コーデックは、イントラピクチャのエンコードのために、そのような「インター」ピクチャ関数をオフにしないように指示されてもよい。
【0039】
本明細書で使用するとき、ピクセル再構成は、参照画像から現在処理中の画像への変換に関して、ピクチャを描写するための技法を指す。ピクセル再構成406の出力は、「デコードされたピクセル」と呼ばれることもある。一般に、ピクセル再構成406は、エンコードプロセス400を実装するエンコーダ内のローカルデコーダとして機能する。具体的には、ピクセル再構成406は、画像圧縮404からの動きベクトルMVまたはMV'と、参照リスト内のピクチャからの参照ピクセルとを使用して予測ピクセルPPを得るために、インター予測IP1及び(任意選択で)イントラ予測IP2を含む。画像圧縮404からの変換係数407を使用する逆量子化及び逆変換IQXは、非可逆の残差ピクセル405Lを生成し、これらは予測ピクセルPPに加えられて、デコードされたピクセル409を生成する。デコードされたピクセル409は、参照ピクチャに挿入され、現在処理中のピクチャ401の後続のセクションのための画像圧縮404及びピクセル再構成406での使用に利用可能である。デコードされたピクセルが挿入された後に、参照ピクチャ内のデコードされていないピクセルはパディング402を受けてもよい。
【0040】
限定としてではなく、一例として、ブロック動き補償(BMC)として知られる動き補償の一タイプにおいては、各画像は、ピクセルのブロック(例えば、16×16ピクセルのマクロブロック)に分割され得る。各ブロックは、参照フレーム内の同じサイズのブロックから予測される。ブロックは、予測されたブロックの位置にシフトされること以外は、どのような方法でも変換されない。このシフトは、動きベクトルMVによって表される。隣接するブロックベクトルの間の冗長性を活用するために(例えば、複数のブロックでカバーされる単一の移動物体の場合)、ビットストリーム内の現在の動きベクトルと前の動きベクトルとの差分のみをエンコードするのが一般的である。この差分プロセスの結果は、パンニングが可能な全体的な動き補償と数学的に同等である。エンコードパイプラインのさらに下流では、方法400は、ゼロベクトルの周りの動きベクトルの結果として生じる統計的分布を利用して、出力サイズを低減するために、任意選択で、エントロピー符号化408を使用してもよい。
【0041】
ブロック動き補償は、現在エンコードしている画像を重なり合わないブロックに分割し、それらのブロックが参照画像のどこから生じるかを示す動き補償ベクトルを計算する。参照ブロックは通常、ソースフレーム内で重なり合う。いくつかのビデオ圧縮アルゴリズムは、参照画像リスト403内のいくつかの異なる参照画像の断片から現在の画像を組み立てる。符号化及びデコード方法に関するより多くの情報は、参照により本明細書に組み込まれる所有者が共通の米国特許第8,711,933号に見出すことができる。
【0042】
本開示の態様によれば、本明細書で集合的にエンコードパラメータと呼ばれる、動きベクトルMV、(及び/またはイントラ予測モード動きベクトルMV')及び変換係数407は、第2のニューラルネットワーク420に提供され得る。第2のニューラルネットワークは、上記のように、現在のセクションから次のセクションのエンコードパラメータを予測するように訓練される。予測が行われると、ニューラルネットワーク420によって提供される予測されたエンコードパラメータを、次のセクションの実際のエンコードパラメータと比較することにより、予測誤差を含む予測されたエンコードパラメータが421で決定される。限定ではなく一例として、予測誤差は、次のセクションの実際のエンコードパラメータから、予測されたエンコードパラメータを減算したものであり得る。減算の結果がゼロであれば、エンコードパラメータは正確に予測されたことになる。正確に予測されたエンコードパラメータは、エンコードから削除され得、符号化されたピクチャ411には含められず、またはエントロピーエンコーダ408に渡されない。エンコード誤差決定の結果がゼロ以外の数である場合、エンコード誤差は、(任意選択で)エントロピーエンコード408を使用してエンコードされ得、符号化されたピクチャ411に含められ得る。本開示の代替の態様によれば、エンコード誤差の結果がゼロ以外の数である場合、正しいエンコードパラメータは、(任意選択で)エントロピーエンコード408でエンコードされ得、符号化されたピクチャ411に含められ得る。限定ではなく一例として、予測誤差は、スライスデータ、または符号化されたピクチャ411のヘッダまたはヘッダの一部に含まれ得る。
【0043】
第1のセクションまたはいくつかのセクションについては、実際のエンコードパラメータは、符号化されたピクチャ411内に含まれ得ることに留意されたい。予測誤差421の決定は、セクションが初期のセクションであるか、またはピクチャのグループのセクションであるかを決定することを含み得、セクションが初期のセクションであるか、またはピクチャのグループのセクションであるかが決定された場合、セクションのエンコードパラメータは、(任意選択で)エントロピーエンコードされ、変更されることなく、符号化されたピクチャ411内に含められ得る。これにより、デコードシステムに含まれるニューラルネットワークは、エンコードパラメータを予測するための正しい開始点を持つことができるようになる。さらに、初期のエンコードパラメータは、エンコードパラメータが、変更されていない初期エンコードパラメータであるか、または予測誤差であるかを知らせるフラグをヘッダに含み得る。
【0044】
本開示の代替の実施形態では、第1のニューラルネットワークは、第2のニューラルネットワークの結果及び(任意選択で)予測誤差を提供される。第1のニューラルネットワークは、現在のセクション並びに/または前の及び次のセクションのエンコードパラメータから欠落しているエンコードパラメータを予測するように訓練される。第1のニューラルネットワークは、第2のニューラルネットワークからの予測されたエンコードパラメータ及び(任意選択で)予測誤差を使用して、エンコードパラメータのより正確な予測を生成し得る。いくつかの実施形態では、このプロセスを支援するために、第1のニューラルネットワークはまた、上記のように、「前」及び「後」のパラメータの両方を含む実際のエンコードパラメータ(上記のプロセスを通じて決定される)を提供され得る。第2のニューラルネットワークの結果と同様に、予測誤差が決定されて、符号化されたピクチャに含められ得る。代替の実施形態では、エンコードされたピクチャのセクションは、第1のNNを使用して、予測のためにフラグを立てられ得る。他の代替の実施形態では、どのセクションのどのエンコードパラメータが、第1のNNを使用して予測されるべきかを判定するためにアルゴリズムが使用され得る。限定ではなく一例として、1つのエンコードパラメータタイプが第1のNNによって決定され得、一方、他のエンコードパラメータが第2のNNによって決定され、または他の全てのセクションが第1のNNを使用して予測され得る。いくつかの代替の実施形態では、特定のセクションの実際のエンコードパラメータを符号化ピクチャに含めて、第1のNNを使用した予測を可能にすることができる。他の代替の実施態様では、双予測の第1のNNが階層的に使用され得る。例えば、セクション0、4、8・・・が、第2の(予測)NNによって予測され得る。次に、セクション0及び4の両方は、セクション2を予測するために、第1のNNへの入力として使用され得る。次に、セクション0及び2は、セクション1を予測するために、別の双予測ニューラルネットワークの入力として使用される。セクション2及び4には、セクション3を予測するために、さらに別の双予測NNが使用される。
【0045】
パディング402、画像圧縮404及びピクセル再構成406、予測誤差決定421及び(任意選択の)エントロピー符号化408の結果は、符号化されたピクチャ411である。
【0046】
ニューラルネットワーク強化デコーダシステム
本デコーダシステムは、第2の訓練されたNNを使用して、上記のようにエンコードされたビットストリームから正しいエンコードパラメータを予測する。最初に、エンコードされたビットストリームは、パラメータ値をビットストリームから抽出できるようにするエントロピーデコーダでデコードされ得る。ビデオストリームのまさしく最初のセクションまたはいくつかのセクションのパラメータ値には、ビットストリームに含まれる全てのビデオエンコードパラメータを有している場合があることに留意されたい。これにより、NNは次のセクションの次のパラメータ値を正確に予測できるようになる。エンコードパラメータは、限定としてではなく一例として、符号化されたスライスデータ、またはビットストリーム内のビデオの各フレームのフレームヘッダ、またはビットストリーム内の他の任意の適切な位置に含まれ得る。エンコードされたビットストリームはまた、次のセクションのためのエンコードパラメータの修正されたセットを生成するためにNNによって行われた予測と組み合わされ得る予測誤差ストリームを含み得る。予測誤差は、例えば、ピクチャのヘッダ情報にエンコードされ得る。
【0047】
代替の実施形態では、第2のNNが生成した予測結果に予測誤差を加えたものが、第1のNNの入力として使用される。第1のNNは、第2のNNによって予測されたパラメータを使用して、パラメータのより正確な予測を生成し得る。一般に、第2のNNによる予測が多すぎると、予測精度が低下する。同様に、第1のNNによって行われる予測が多すぎると、第1のNN及び第2のNN両方の利用可能な入力パラメータの個数が減少し、予測精度が低下する可能性もある。全体で最高の予測精度を達成するには、第1のNNと第2のNNとの最適な組み合わせを探し当てることが重要である。限定ではなく一例として、第2のNNを使用して、DCT係数を予測することができる。その結果、DCT係数の前及び後の両方が、第1のNNを使用した他のパラメータ予測に利用可能になる。第1のNNは、利用可能なパラメータのみを入力として使用できることに留意されたい。全てのDCT係数が利用可能であったとしても、未来の全てのパラメータを予測時に使用できるわけではない。例を続けると、MB1のMB符号化タイプが第1のNNの予測対象である場合、MB0のMB符号化タイプは利用可能であるが、MB2のMB符号化タイプは利用可能ではない。しかし、第2のNNによって予測されたMB2のDCT係数が利用可能であるため、第1のNNは、MB0のMB符号化タイプ及びMB2のDCT係数を使用して、MB1のMB符号化タイプを予測するようになる。他の代替の実施形態では、本デコーダは、次のセクションの実際のエンコードパラメータを受け取り、この受け取った次のセクションの実際のエンコードパラメータと、前のセクションの決定されたパラメータと共に、現在のセクションの予測に第1のNNを使用することができる。上記のように、第1のNNは「双予測」であり、第2のNNは「予測」である。したがって、第2のNN予測結果は、第1のNNの入力として使用することができる。しかし、第1のNNの結果を第2のNNの入力として使用することはできない。
【0048】
次に、本開示の態様によれば、修正されたエンコードパラメータのセットがデコードプロセスで使用され得る。
【0049】
デコード方法
図5は、本発明の実施形態と併せて使用し得るストリーミングデータ501のデコードのための方法500における可能なプロセスフローの例を説明する。この特定の例は、例えば、AVC(H.264)規格を使用したビデオデコードのプロセスフローを示す。符号化されたストリーミングデータ501は、最初はバッファに格納され得る。符号化されたストリーミングデータ501(例えば、ビデオデータビットストリーム)がネットワーク、例えばインターネットを介して転送された場合、データ501は、最初に、502で示されるネットワーク抽象化層(NAL)デコードと呼ばれるプロセスを受け得る。NALデコードは、データの伝送を補助するために追加された情報をデータ501から取り除き得る。「ネットワークラッパー」と呼ばれるそのような情報は、データ501をビデオデータとして識別し、またはビットストリームの開始または終了、データの整列のためのビット、及び/またはビデオデータ自体に関するメタデータを示し得る。そのようなメタデータは、パッチフレームを形成するために使用できるイントラ符号化サブセクションを含む2つ以上の連続する継続的なフレームのシーケンスにおける最初の符号化フレームとして特定の符号化フレームを識別するビットをヘッダ内に含み得る。メタデータはまた、エンコードパラメータが変更されていない初期エンコードパラメータであるか、または予測誤差であるかを伝える上記のフラグをヘッダ内に含み得る。
【0050】
さらに、一例として、ネットワークラッパーは、例えば、解像度、ピクチャ表示形式、データを表示するためのカラーパレット変換行列、各ピクチャのビット数に関する情報、スライスまたはマクロブロック、及び低レベルのデコードで使用される情報、例えば、スライスの開始または終了を示すデータを含む、データ501に関する情報を含み得る。この情報は、単一のセクション内のタスクグループのそれぞれに渡すマクロブロックの個数を決定するために使用され得る。
【0051】
その複雑さのために、NALデコードは通常、ピクチャ及びスライスのレベルで行われる。NALデコードに使用される最小のNALバッファは、通常、スライスサイズである。幸いなことに、NALデコードプロセス502は、比較的少ないサイクル数を伴う。その結果、NALデコードプロセス502は、単一のプロセッサ上で行われ得る。
【0052】
いくつかの実施形態では、502でのNALデコードの後、
図5で説明される残りのデコードは、本明細書で、ビデオ符号化層(VCL)デコード504、動きベクトル(MV)再構成510及びピクチャ再構成514と呼ばれる3つの異なるスレッドグループまたはタスクグループに実装され得る。ピクチャ再構成タスクグループ514は、ピクセル予測・再構成516及び後処理520を含み得る。これらのタスクグループは、各タスクグループが、後続の処理のためにマクロブロックが次のタスクグループに送られる前に、ピクチャ(例えば、フレームまたはフィールド)またはセクション内の全てのマクロブロックの処理を完了できるように、データの依存関係に基づいて選択され得る。
【0053】
特定のコーデックは、空間領域から周波数領域へのピクセル情報の変換を含むデータ圧縮の形式を使用する場合がある。特に、そのような変換の1つは、離散コサイン変換(DCT)として知られている。このような圧縮データのデコードプロセスには、周波数領域から空間領域へ戻す逆変換を伴う。DCTを使用して圧縮されたデータの場合は、その逆プロセスは逆離散コサイン変換(IDCT)として知られている。変換されたデータは、離散変換されたデータの数値を表すのに使用されるビット数を減らすために量子化されることがある。例えば、数1、2、3が全て2にマップされ得、数4、5、6が全て5にマップされ得る。データを解凍するには、周波数領域から空間領域への逆変換を実行する前に、逆量子化(IQ)として知られるプロセスが使用される。VCL IQ/IDCTデコードプロセス504のデータ依存関係は、通常は、同じスライス内のマクロブロックのマクロブロックレベルにある。その結果、VCLデコードプロセス504によって生成された結果は、マクロブロックレベルでバッファリングされ得る。
【0054】
VCLデコード504は、多くの場合、VCL構文をデコードするのに使用されるエントロピーデコード506と呼ばれるプロセスを含む。AVC(H.264)などの多くのコーデックは、エントロピーエンコードと呼ばれるエンコードの層を使用する。エントロピーエンコードは、符号の長さと信号の確率を一致させるように信号に符号を割り当てる符号化方式である。一般に、エントロピーエンコーダは、等しい長さの符号で表される記号を、確率の負の対数に比例する符号で表される記号に置き換えることによってデータを圧縮するのに使用される。AVC(H.264)は、コンテキスト適応型可変長符号化(CAVLC)及びコンテキスト適応型バイナリ算術符号化(CABAC)の2つのエントロピーエンコード方式をサポートする。CABACはCAVLCよりも約10%以上高い圧縮を提供する傾向があるため、CABACはAVC(H.264)ビットストリームの生成において多くのビデオエンコーダに支持されている。AVC(H.264)符号化されたデータストリームのエントロピー層のデコードは、計算量が多くなり得、AVC(H.264)符号化されたビットストリームを汎用マイクロプロセッサを使用してデコードするデバイスに課題をもたらす可能性がある。ブルーレイまたはHD-DVD規格の対象となる高ビットレートのストリームをデコードするには、ハードウェアが非常に高速で複雑なものである必要があり、システム全体のコストが非常に高くなる可能性がある。この問題の一般的な解決策の1つは、CABACデコード用の特別なハードウェアを設計することである。あるいは、エントロピーデコードをソフトウェアで実装することもできる。エントロピーデコードのソフトウェア実装の例は、参照により本明細書に組み込まれる、2006年8月25日出願の「ENTROPY DECODING METHODS AND APPARATUS」(代理人案件番号SCEA06054US00)と題されたXunXuに対する所有者が共通の米国特許第8,7494,09号に見出され得る。
【0055】
エントロピーデコード506に加えて、VCLデコードプロセス504は、508で示されるように、逆量子化(IQ)及び/または逆離散コサイン変換(IDCT)を含み得る。これらのプロセスは、マクロブロックからヘッダ509及びデータをデコードし得る。デコードされたヘッダ509は、隣接するマクロブロックのVCLデコードを支援するのに使用され得る。
【0056】
本発明の態様によれば、最初にデコードされたヘッダまたはビデオメタデータの一部(例えば、スライスデータ)は、後続のヘッダまたはビデオメタデータの一部を予測し得るニューラルネットワーク505に提供され得る。次いで、ビデオメタデータの一部は、デコードプロセスで使用するためにヘッダ509に挿入されてもよい。さらに、本発明によれば、VCLデコードプロセスは、エンコードされたヘッダから後続の各セクションのエンコード誤差をデコードし得、このエンコード誤差は、ニューラルネットワーク505によって行われた誤った予測を修正するために、ビデオメタデータと結合され得る。ビデオメタデータは、エンコードパラメータが変更されていない初期エンコードパラメータであるか、または予測誤差であるかを伝える上記のフラグをヘッダ内に含み得る。いくつかの実施態様では、ニューラルネットワークからの予測が、ヘッダ509に挿入され得る。
【0057】
VCLデコード504及びニューラルネットワーク予測505は、マクロブロックレベルのデータ依存頻度で実施され得る。具体的には、同じスライス内の異なるマクロブロックは、ニューラルネットワーク予測の間に並行してVCLデコードを受けることができ、その結果は、さらなる処理のために、動きベクトル再構成タスクグループ510に送られ得る。
【0058】
続いて、ピクチャまたはセクションの内の全てのマクロブロックが、動きベクトル再構成510を受けることができる。MV再構成プロセス510は、所与のマクロブロック511からのヘッダ及び/または同じ場所に配置されたマクロブロックヘッダ513を使用する動きベクトル再構成512を含み得る。動きベクトルは、ピクチャ内の見かけの動きを表す。そのような動きベクトルは、先行するピクチャのピクセルの知識と、ピクチャからピクチャへのそれらのピクセルの相対的な動きとに基づいて、ピクチャ(またはその一部)の再構成を可能にする。動きベクトルが回復されると、ピクセルは、VCLデコードプロセス504からの残差ピクセルとMV再構成プロセス510からの動きベクトルとに基づくプロセスを使用して、516で再構成され得る。MVのデータ依存頻度(及び並列性のレベル)は、MV再構成プロセス510が他のピクチャからの同じ場所に配置されたマクロブロックを含むかどうかに依存する。他のピクチャからの同じ場所に配置されたMBヘッダを含まないMV再構成の場合、MV再構成プロセス510は、スライスレベルまたはピクチャレベルで並行して実施され得る。同じ場所に配置されたMBヘッダを含むMV再構成の場合、データ依存頻度はピクチャレベルであり、MV再構成プロセス510は、スライスレベルでの並列性をもって実施され得る。
【0059】
動きベクトル再構成510の結果は、ピクチャ再構成タスクグループ514に送られ、このピクチャ再構成タスクグループ514は、ピクチャ周波数レベルで並列化され得る。ピクチャ再構成タスクグループ514内で、ピクチャまたはセクションの内の全てのマクロブロックは、デブロッキング520と併せて、ピクセル予測・再構成516を受け得る。ピクセル予測・再構成タスク516及びデブロッキングタスク520は、デコードの効率を高めるために並列化され得る。これらのタスクは、データの依存関係に基づいて、マクロブロックレベルで、ピクチャ再構成タスクグループ514内で並列化され得る。例えば、ピクセル予測・再構成516が1つのマクロブロックに対して実行され得、デブロッキング520がその後に続く。デブロッキング520によって得られたデコード済みピクチャからの参照ピクセルは、後続のマクロブロックでのピクセル予測・再構成516において使用され得る。ピクセル予測・再構成518は、後続のマクロブロックのためのピクセル予測・再構成プロセス518への入力として使用され得る隣接ピクセルを含むデコード済みセクション519(例えば、デコードされたブロックまたはマクロブロック)を生成する。ピクセル予測・再構成516のデータの依存関係により、同じスライス内のマクロブロックに対して、マクロブロックレベルでのある程度の並列処理が可能となる。
【0060】
ピクセル予測は、すでにデコードされたピクチャからのピクセルの代わりに、デコードされている現在のピクチャ内からのピクセルを参照ピクセルとして使用し得る。デコードされていない参照ピクセルは、パディングピクセルに置き換えられ得、このパディングピクセルは、すでにデコードされている現在のピクチャ内のピクセルから決定され得る。ピクセルがデコードされていない場合、パディングピクセルの値は上記のように任意に決定してもよい。
【0061】
後処理タスクグループ520は、ブロック符号化技法が使用される際にブロック間に形成され得る鋭いエッジを平滑化することにより視覚品質及び予測性能を改善するために、デコード済みセクション519内のブロックに適用されるデブロッキングフィルタ522を含み得る。デブロッキングフィルタ522は、結果として生じるデブロックされたセクション524の外観を改善するために使用され得る。
【0062】
デコード済みセクション519またはデブロックされたセクション524は、隣接するマクロブロックをデブロッキングする際に使用するために、隣接するピクセルを提供し得る。さらに、現在デコードしているピクチャからのセクションを含むデコード済みセクション519は、後続のマクロブロックのためのピクセル予測・再構成518用に参照ピクセルを提供し得る。ピクチャ(またはそのサブセクション)がインター符号化されたか、またはイントラ符号化されたかに関係なく、現在のピクチャ内からのピクセルを、上記と同じ現在のピクチャ内のピクセル予測に任意選択で使用できるのは、この段階の間である。デブロッキング520は、同じピクチャ内のマクロブロックに対してマクロブロックレベルで並列化され得る。
【0063】
後処理520の前に生成されたデコード済みセクション519と、後処理セクション524とは、関係する特定のコーデックに応じて、同じバッファ、例えば、出力ピクチャバッファに格納され得る。H.264では、デブロッキングは後処理フィルタであることに留意されたい。H.264は、隣接するマクロブロックのイントラ予測の参照としてデブロッキング前のマクロブロックを使用し、未来のピクチャマクロブロックのインター予測のためにデブロッキング後のマクロブロックを使用するためである。デブロッキング前のピクセル及びデブロッキング後のピクセルの両方が予測に使用されるので、デコーダまたはエンコーダは、デブロッキング前のマクロブロック及びデブロッキング後のマクロブロックの両方をバッファに格納する必要がある。ほとんどの低コストの消費者向けアプリケーションでは、デブロッキング前のピクチャ及びデブロッキング後のピクチャは、メモリ使用量を削減するために、同じバッファを共有している。MPEG2またはMPEG4(MPEG4パート10を除く)(注:H.264はMPEG4パート10とも呼ばれる)など、H.264より前の規格の場合、他のマクロブロック予測の参照として、後処理前のマクロブロック(例えば、デブロッキング前のマクロブロック)のみが使用される。そのようなコーデックでは、事前にフィルタリングされたピクチャは、事後にフィルタリングされたピクチャと同じバッファを共有しない場合がある。
【0064】
したがって、H.264の場合、ピクセルデコード後に、デコード済みセクション519は、出力ピクチャバッファに保存される。後に、後処理セクション524は、出力ピクチャバッファ内のデコード済みセクション519を置き換える。非H.264の場合、デコーダは、デコード済みセクション519のみを出力ピクチャバッファに保存する。後処理は表示時に行われるため、後処理出力はデコーダ出力ピクチャバッファと同じバッファを共有していない場合がある。
【0065】
ほとんどのマルチプロセッサハードウェアプラットフォームでは、プロセッサ間のデータアクセス遅延は、ビデオピクチャ間の時間間隔よりも短くなっている。ただし、マクロブロックの処理速度よりも高速にプロセッサ間データ転送を行い得る並列処理エンジンは数少ない。2つのタスクがピクチャの頻度でデータを交換することは許容される。
図3に関して上記で説明したピクチャ頻度の依存関係に基づいて、デコードプロセス500を5つの別個のタスクに分割することが可能である。これらのタスクは、A)NALデコード502及びデコーダ内部管理、B)VCL構文デコード及びIQ/IDCT504、C)動きベクトル再構成510、ならびにD)ピクセル予測・再構成516、及びE)デブロッキング520である。
【0066】
一般に、NALデコードは、ピクチャまたはスライスレベルのデータ依存頻度で行われ得る。AVC(H.264)などのコーデックの場合、NALデコード302に関与するデータ依存関係は、かなり複雑であり得るが、全体的なNALデコードプロセス502は、比較的低いサイクル数を要し得る。したがって、このプロセスを並列化しようとするよりも、単一のプロセッサ上に全てのNALデコード502を実装する方が効率的である可能性がある。動きベクトル再構成タスク510は、通常、VCL構文デコード及びIQ/IDCT504、ピクセル予測・再構成516、ならびにデブロッキング520の場合の約10分の1のプロセッササイクルを要する。後者の3つのタスクの計算の複雑さは、かなり似ている。ただし、これら3つの大きなサイクルタスクの間の実行サイクルの割り当ては、符号化されたビデオストリームごとに異なる。
【0067】
いくつかのコーデックでは、VCL構文デコード及びIQ/IDCT504内で、各スライス内にマクロブロックレベルのデータ依存関係のみがあるが、ニューラルネットワーク予測の性質上、スライス間にはより大きな依存関係がある。いくつかの実施形態では、この依存関係は、スライス境界内で第2のNN予測及び第1のNN予測を実行することによって制限される。このアプローチは、入力パラメータの個数を大幅に制限して、予測精度を低下させるが、誤差回復力を向上させる。動きベクトル再構成タスク510は、入力のためのVCL構文デコード及びIQ/IDCT504の出力に依存する。ピクセル予測・再構成タスク516は、VCL構文デコード及びIQ/IDCTタスク504と動きベクトル再構成タスク510との出力を入力として受け取る。動きベクトル再構成タスク510及びピクセル予測・再構成タスク518内には、マクロブロックレベルのデータ依存関係があるが、1つのピクチャ内のスライスは互いに独立している。
【0068】
ピクセル予測・再構成タスク516は、動き補償を含み得る。ピクセル予測・再構成タスク516におけるピクチャ依存関係は、そのような動き補償に起因し得る。動き補償とは、動きベクトルによって取得された参照ピクセルに残差ピクセルを追加することである。動き補償の入力は、動きベクトル及び残差ピクセルである。動き補償の出力はデコードされたピクセルである。上記で説明したように、動き補償は通常、先にデコードされたピクチャを使用して現在のピクチャを予測するプロセスである。動き補償プロセスでは、動きベクトルと呼ばれる2次元ベクトルが使用されて、先にデコードされたピクチャのピクセルが参照される。動きベクトル再構成タスク510におけるピクチャレベルの依存関係は、直接予測によってもたらされる。直接予測では、先にデコードされたマクロブロックの動きベクトルが使用されて、現在のマクロブロックの動きベクトルが計算される。AVCデコーダでは、先にデコードされた参照ピクチャは、デブロッキングタスク520の出力である。符号化規格で定義されている動きベクトルの範囲に制限があるため、前のピクチャの全てのピクセルが、現在のピクチャの特定のマクロブロックを予測するのに利用可能であるとは限らない。例えば、AVCレベル4.1ストリームの動きベクトルの範囲は、垂直方向に-512~511.75ピクセル、水平方向に-1024~1023.75ピクセルである。ピクチャサイズが1920×1088ピクセルの場合、参照ピクチャの約4分の1のピクセルがコーナーマクロブロックの予測に使用することができる。対照的に、参照ピクチャのほとんど全てのピクセルは、中央のマクロブロックの予測に使用することができる。
【0069】
図5に示される例では、VCLデコード及びIQ/IDCTタスク508と他の何らかのタスクとの間に依存関係ループがないことに留意されたい。そのため、このタスクは、VCLデコードタスク504、動きベクトル再構成タスク510、またはピクセル予測・再構成タスク516のいずれかまたは全てにマージされて、利用可能なプロセッサの間でタスク負荷のバランスをとることができる。ブロックによってはDCT係数を持たない場合があるので、IQ/IDCTタスク508をブロック構文デコードループにマージすることにより、デコーダが、符号化されたブロックに対してのみIQ/IDCTを実行し、分岐の数を減らすことができるようになる。全てのパラメータがNNによって再構成された後でも、従来のデコードプロセスは、複数のプロセッサで並列に実行することができる。いくつかの実施態様では、NNベースのパラメータ予測は、パイプライン化を使用する別のデコードプロセスと並行して実行され得る。
【0070】
図3に関して上記で説明したデコード方法は、単一のスレッドで実施し得る。あるいは、
図3のデコード方法は、並列処理を実施することができる処理モジュールを用いて複数のスレッドで実施し得る。特に、ピクチャの異なるセクションを並行して処理し得る。本明細書で使用するとき、並列処理とは、ある程度、2つ以上の異なるタスクの処理が時間的に重複することを意味する。
【0071】
コンピューティングデバイス
図6は、本開示の態様によるシステムを示す。本システムは、ユーザ入力デバイス602に結合されたコンピューティングデバイス600を含み得る。ユーザ入力デバイス602は、コントローラ、タッチスクリーン、マイクロフォン、キーボード、マウス、ライトペン、またはユーザがシステムに制御データを入力することを可能にする他のデバイスであり得る。
【0072】
コンピューティングデバイス600は、例えば、シングルコア、デュアルコア、クアッドコア、マルチコア、プロセッサ-コプロセッサ、セルプロセッサなどの周知のアーキテクチャに従って構成され得る1つ以上のプロセッサユニット603を含み得る。コンピューティングデバイスはまた、1つ以上のメモリユニット604(例えば、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、リードオンリーメモリ(ROM)など)を含み得る。
【0073】
プロセッサユニット603は、1つ以上のプログラムを実行することができ、その一部は、メモリ604に格納されてもよく、プロセッサ603は、例えば、データバス605を介してメモリにアクセスすることによって、メモリに動作可能に結合され得る。プログラムは、第1のNN610の訓練を実施するように構成され得る。さらに、メモリ604は、第2のNN621の訓練を実施するプログラムを含み得る。メモリ604はまた、ビデオをエンコード608及び/またはデコード622するためのプログラムを含み得る。メモリ604はまた、第1のNNモジュール610及び第2のNNモジュール621などのソフトウェアモジュールを含み得る。NNの全体的な構造及び確率はまた、データ618として大容量記憶装置615に格納され得る。プロセッサユニット603は、大容量記憶装置615またはメモリ604に格納された1つ以上のプログラム617であって、プロセッサに、特徴データから第1のNN610を訓練する方法200及び/または第2のNNを訓練する方法300を実行させる、1つ以上のプログラム617を実行するようにさらに構成される。本システムは、NN訓練プロセスの一部としてニューラルネットワークを生成し得る。これらのニューラルネットワークは、第1のNNモジュール621または第2のNNモジュール610の一部としてメモリ604に格納され得る。完成したNNは、メモリ604に格納され得、または大容量記憶装置615にデータ618として格納され得る。プログラム617(またはその一部)はまた、例えば、適切なプログラミングによって、
図4及び
図5の方法に従い、エンコードされていないビデオをエンコードし、またはエンコードされたビデオをデコードするように構成され得る。
【0074】
コンピューティングデバイス600はまた、入力/出力(I/O)607、回路、電源(P/S)611、クロック(CLK)612、及びキャッシュ613などの周知のサポート回路を含み得る。これらは、例えばバス605を介して、システムの他の構成要素と通信することができる。コンピューティングデバイスは、ネットワークインタフェース614を含み得る。プロセッサユニット603及びネットワークインタフェース614は、適切なネットワークプロトコル、例えば、PANのためのブルートゥース(登録商標)を介して、ローカルエリアネットワーク(LAN)またはパーソナルエリアネットワーク(PAN)を実装するように構成され得る。コンピューティングデバイスは、任意選択で、ディスクドライブ、CD-ROMドライブ、テープドライブ、フラッシュメモリなどの大容量記憶装置615を含み得、大容量記憶装置は、プログラム及び/またはデータを記憶し得る。コンピューティングデバイスはまた、システムとユーザとの間のインタラクションを容易にするためのユーザインタフェース616を含み得る。ユーザインタフェースは、ディスプレイモニタ、ヘッドマウントディスプレイ、7セグメントディスプレイまたは他のデバイスを含み得る。
【0075】
コンピューティングデバイス600は、電子通信ネットワーク620を介した通信を容易にするために、ネットワークインタフェース614を含んでもよい。ネットワークインタフェース614は、ローカルエリアネットワーク及びインターネットなどのワイドエリアネットワークを介して、有線通信または無線通信を実装するように構成され得る。デバイス600は、ネットワーク620を介して、1つ以上のメッセージパケットによって、データ及び/またはファイルに対する要求の送信及び受信を行い得る。ネットワーク620を介して送信されるメッセージパケットは、メモリ604のバッファ609に一時的に格納され得る。
【0076】
上記は、本発明の好ましい実施形態の完全な説明であるが、様々な代替、修正、及び均等物を使用することが可能である。したがって、本発明の範囲は、上述の説明を参照して決定されるべきでなく、代わりに、均等物のそれらの全範囲とともに添付の特許請求の範囲を参照して決定されるべきである。好ましいかどうかに関わらず、本明細書に説明された任意の特徴は、好ましいかどうかに関わらず、本明細書に説明された任意の他の特徴と組み合わされてよい。続く特許請求の範囲では、不定冠詞「A」または「An」は、明示的に特別の定めがない限り、冠詞に続く品目の1つ以上の数量を指す。添付の特許請求の範囲は、ミーンズプラスファンクションの限定が語句「するための手段(means for)」を使用し、所与の請求項に明示的に記載されない限り、係る限定を含むとして解釈されるべきではない。