(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-07
(45)【発行日】2024-03-15
(54)【発明の名称】クラウドゲーミングシステムにおけるパラメータセット選択方法
(51)【国際特許分類】
H04N 21/235 20110101AFI20240308BHJP
H04N 21/234 20110101ALI20240308BHJP
H04N 21/435 20110101ALI20240308BHJP
H04N 19/46 20140101ALI20240308BHJP
A63F 13/355 20140101ALI20240308BHJP
【FI】
H04N21/235
H04N21/234
H04N21/435
H04N19/46
A63F13/355
(21)【出願番号】P 2022531440
(86)(22)【出願日】2021-07-12
(86)【国際出願番号】 US2021041250
(87)【国際公開番号】W WO2022031405
(87)【国際公開日】2022-02-10
【審査請求日】2022-06-02
(32)【優先日】2020-08-07
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-06-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】シュイ,シアオジョォン
(72)【発明者】
【氏名】リ,シアン
(72)【発明者】
【氏名】リィウ,シャン
【審査官】川中 龍太
(56)【参考文献】
【文献】特開2017-153145(JP,A)
【文献】米国特許出願公開第2019/0075301(US,A1)
【文献】特開2021-057766(JP,A)
【文献】特開2019-114896(JP,A)
【文献】米国特許出願公開第2019/0028705(US,A1)
【文献】米国特許出願公開第2013/0142251(US,A1)
【文献】国際公開第2017/002283(WO,A1)
【文献】特開2020-010331(JP,A)
【文献】特開2019-071959(JP,A)
【文献】特開2020-096342(JP,A)
【文献】中国特許出願公開第110087081(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 21/00 - 21/858
H04N 19/00 - 19/98
A63F 13/355
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
エンコードデバイスによって実行される、ネットワークベースのシステムにおいてビデオコーディングを行う方法であって、
当該方法は:
エンコードに用いられるパラメータセットを決定するためのモデルをトレーニングするステップと、
ビデオコンテンツを取得するステップと、
前記ビデオコンテンツのコンテンツ種類に基づいて、トレーニングされたモデルを用いて、前記ビデオコンテンツをエンコードするための前記パラメータセットを決定するステップ
であって、前記ビデオコンテンツの前記コンテンツ種類は、複数のゲーム種類を含む、ステップと、
前記パラメータセットに従って前記ビデオコンテンツをエンコードするステップと、
エンコードされた前記ビデオコンテンツをデコードデバイスに送信するステップと、
前記パラメータセットを前記デコードデバイスに送信するステップと、を含
み、
前記パラメータセットは、前記ビデオコンテンツの1つ又は複数の画像に対してフィルタリングを行うためのフィルタ係数のセットを含む
、
方法。
【請求項2】
前記パラメータセットは、エンコードされた前記ビデオコンテンツとは別に前記デコードデバイスに送信される、請求項1に記載の方法。
【請求項3】
前記複数のゲーム種類ごとに、少なくとも1つのパラメータセットが決定される、請求項
1に記載の方法。
【請求項4】
前記パラメータセットは、エンコードされた前記ビデオコンテンツより先に前記デコードデバイスに送信される、請求項
2に記載の方法。
【請求項5】
コンピュータプログラムコードを記憶する少なくとも1つのメモリと、
前記少なくとも1つのメモリにアクセスし、前記コンピュータプログラムコードによって指示される通りに動作するように構成される少なくとも1つのプロセッサ、とを備え、
前記コンピュータプログラムコードは、
前記少なくとも1つのプロセッサに、請求項1乃至
4のうちのいずれか1項に記載の方法を実行させるように構成されるエンコードデバイス。
【請求項6】
コンピュータに、請求項1乃至
4のうちのいずれか1項に記載の方法を実行させるように構成されるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、2020年8月7日に出願された米国仮出願第63/062,759号、及び2021年6月29日に出願された米国出願第17/361,973号に基づくものであり、その優先権を主張しており、これらの内容を全て参照により本願に組み込むものとする。
【0002】
本開示は、マルチメディア技術の分野に関し、特に、ネットワークベースのゲーミングシステム及びネットワークベースのゲーミングサービスを提供する方法に関する。
【背景技術】
【0003】
クラウドゲーミングサービスは、複数のサービスプロバイダによって提供されるトレンドのオンラインサービスである。クラウドゲーミングは、ゲーミングオンデマンドと呼ばれることもある。クラウドゲーミングシステムでは、ユーザは、クラウドサーバから提供されるゲーミングサービスに基づいて、リモートでゲームをプレイすることができる。すなわち、ゲームは、リモートクラウドサーバ上で実行され得、ゲームのコンテンツは、ビデオストリーミングによってリモートクラウドサーバからユーザのデバイスに伝送され、ユーザのデバイスのディスプレイに表示され得る。
【0004】
しかしながら、クラウドゲーミングは、複数のユーザにゲーミングサービスを提供するために、重要な技術的インフラストラクチャを必要とする。例えば、大量のビデオコンテンツの配信のために高速インターネットサービスが必要となり、ビデオコンテンツをレンダリングし、ビデオコンテンツを圧縮し、ビデオコンテンツをリアルタイムでコンシューマに配信するために大規模データセンター又はサーバが必要となる場合がある。ユーザ側では、すべてのユーザが強力なゲームプレイ用ハードウェア(例えば、ゲームコンソール、パーソナルコンピュータ(PC)、及び携帯電話)を持っているとは限らないため、ユーザ側で通常のビデオデコード能力しか持たないコンピュータがエンコードされたコンテンツを受信し、クラウドゲーミングに関する大量のデータを処理できるように、サーバ側で強力なエンコードが求められている。また、エンコード方式を認識し、サーバ側で使用されるエンコード方式に従って、エンコードされたビデオコンテンツを効果的にデコードすることが求められている。
【0005】
クラウドゲーミングサービスの速度及び品質を向上させるための1つのアプローチは、学習ベースのビデオコーディングを使用することである。近年、ニューラルネットワーク(NN)を用いた学習ベースの手法が、ビデオコーディングに導入されている。このようなビデオコーディングアプローチでは、フィルタ係数などの最適なコーディングパラメータは、一般に、大量の多様化されたトレーニングデータを通じてトレーニングされる。しかしながら、ビデオコーディングモデルを効率的にトレーニングし、ビデオコーディングの精度を向上させることが求められている。したがって、クラウドゲーミングサービスの速度及び品質を向上させるために、1つ又は複数の学習ベースのビデオコーディングシステム及び方法が提供される。
【発明の概要】
【0006】
一実施形態によれば、エンコードデバイスによって実行される、ネットワークベースのシステムにおいてビデオコーディングを行う方法を提供する。この方法は、エンコードに用いられるパラメータセットを決定するためのモデルをトレーニングするステップと、ビデオコンテンツを取得するステップと、トレーニングされたモデルを用いて、前記ビデオコンテンツをエンコードするための前記パラメータセットを決定するステップと、前記パラメータセットに従って前記ビデオコンテンツをエンコードするステップと、エンコードされた前記ビデオコンテンツをデコードデバイスに送信するステップと、前記パラメータセットを前記デコードデバイスに送信するステップと、を含む。
【0007】
一実施形態によれば、デコードデバイスによって実行される、ネットワークベースのシステムにおいてビデオ復号を行う方法を提供する。この方法は、エンコードデバイスから、エンコードされたビデオコンテンツを受信するステップと、前記エンコードデバイスからパラメータセットが受信されたか否かを決定するステップと、前記パラメータセットが受信されたと決定することに基づいて、前記パラメータセットに従って、エンコードされた前記ビデオコンテンツをデコードするステップと、デコードされたビデオコンテンツを表示デバイスに送信するステップと、を含む。
【0008】
一実施形態によれば、コンピュータプログラムコードを記憶する少なくとも1つのメモリと、前記少なくとも1つのメモリにアクセスし、前記コンピュータプログラムコードによって指示される通りに動作するように構成される少なくとも1つのプロセッサと、を備えるエンコードデバイスを提供する。前記コンピュータプログラムコードは、前記少なくとも1つのプロセッサに、エンコードに用いられるパラメータセットを決定するためのモデルをトレーニングさせるように構成されるトレーニングコードと、前記少なくとも1つのプロセッサに、ビデオコンテンツを取得させるように構成される取得コードと、前記少なくとも1つのプロセッサに、トレーニングされたモデルを用いて、前記ビデオコンテンツをエンコード及び/又はデコードするための前記パラメータセットを決定させるように構成される決定コードと、前記少なくとも1つのプロセッサに、前記パラメータセットに従って前記ビデオコンテンツをエンコードさせるように構成されるエンコードコードと、前記少なくとも1つのプロセッサに、エンコードされた前記ビデオコンテンツ及び前記パラメータセットをデコードデバイスに送信するように、通信インターフェースを制御させるように構成される送信コードと、を含む。
【0009】
一実施形態によれば、コンピュータプログラムコードを記憶する少なくとも1つのメモリと、前記少なくとも1つのメモリにアクセスし、前記コンピュータプログラムコードによって指示される通りに動作するように構成される少なくとも1つのプロセッサと、を備えるデコードデバイスを提供する。前記コンピュータプログラムコードは、前記少なくとも1つのプロセッサに、エンコードデバイスから、エンコードされたビデオコンテンツを受信させるように構成される受信コードと、前記少なくとも1つのプロセッサに、前記エンコードデバイスからパラメータセットが受信されたか否かを決定させるように構成される第1の決定コードと、前記少なくとも1つのプロセッサに、前記パラメータセットが受信されたと決定することに基づいて、前記パラメータセットに従って、エンコードされた前記ビデオコンテンツをデコードさせるように構成されるデコードコードと、前記少なくとも1つのプロセッサに、通信インターフェースを制御させて、デコードされたビデオコンテンツを表示デバイスに送信させるように構成される送信コードと、を含む。
【0010】
一実施形態によれば、コンピュータプログラムコードを記憶する非一時的なコンピュータ読取可能な記憶媒体であって、前記コンピュータプログラムコードは、少なくとも1つのプロセッサによって実行されると、エンコードに用いられるパラメータセットを決定するためのモデルをトレーニングし、ビデオコンテンツを取得し、トレーニングされたモデルを用いて、前記ビデオコンテンツをエンコード及び/又はデコードするための前記パラメータセットを決定し、前記パラメータセットに従って前記ビデオコンテンツをエンコードし、エンコードされたビデオコンテンツをデコードデバイスに送信し、前記パラメータセットを前記デコードデバイスに送信するように構成される、非一時的なコンピュータ読取可能な記憶媒体を提供する。
【0011】
一実施形態によれば、コンピュータプログラムコードを記憶する非一時的なコンピュータ読取可能な記憶媒体であって、前記コンピュータプログラムコードは、少なくとも1つのプロセッサによって実行されると、エンコードデバイスから、エンコードされたビデオコンテンツを受信し、前記エンコードデバイスからパラメータセットが受信されたか否かを決定し、前記パラメータセットが受信されたと決定することに基づいて、前記パラメータセットに従って、エンコードされた前記ビデオコンテンツをデコードし、デコードされたビデオコンテンツを表示デバイスに送信するように構成される、非一時的なコンピュータ読取可能な記憶媒体を提供する。
【図面の簡単な説明】
【0012】
以下の説明では、本開示の1つ又は複数の実施形態を示す図面を簡単に説明する。
【0013】
【
図1】一実施形態によるネットワークベースのゲーミングシステムを示すシーケンス図である。
【0014】
【
図2】一実施形態によるネットワークベースのゲーミングシステムの動作を示す図である。
【0015】
【
図3】一実施形態によるネットワークベースのゲーミングシステムのエンコードデバイスの動作を示すフローチャートである。
【0016】
【
図4】一実施形態によるネットワークベースのゲーミングシステムのデコードデバイスの動作を示すフローチャートである。
【0017】
【
図5】一実施形態によるネットワークベースのゲーミングシステムのエンコードデバイスを示すブロック図である。
【0018】
【
図6】一実施形態によるネットワークベースのゲーミングシステムのデコードデバイスを示すブロック図である。
【0019】
【
図7】一実施形態によるネットワークベースのゲーミングシステムのエンコードデバイス及びデコードデバイスに実装されるコンピュータの一例を示す図である。
【発明を実施するための形態】
【0020】
本明細書では、図面を参照して例示的な実施形態を詳細に説明する。本明細書に記載された本開示の1つ又は複数の実施形態は、例示に過ぎず、本開示の範囲を限定するものとして解釈されるべきではないことを理解されたい。
【0021】
以下、用語「エンコードデバイス」は、用語「エンコーダ」と交換可能に使用される。また、用語「デコードデバイス」は、用語「デコーダ」と交換可能に使用される。
【0022】
図1は、一実施形態によるネットワークベースのゲーミングシステムを示すシーケンス図である。
【0023】
図1を参照すると、ネットワークベースのゲーミングシステム100は、1つ又は複数のクライアント110A~110Cと、サーバ120とを含み得る。サーバ120は、クラウドサーバ又は複数のサーバを含むサーバクラスタであってもよい。サーバ120は、ネットワークに接続され、ネットワークを介して1つ又は複数のクライアント110A~110Cと通信することができる。サーバ120は、1つ又は複数のクライアント110A~110Cに1つ又は複数のソフトウェアサービスを提供するリモートコンピュータシステムであってもよい。例えば、サーバ120は、サーバ120上で稼働するゲーミングエンジンによってゲームコンテンツを生成しレンダリングすることにより、1つ又は複数のクライアント110A~110Cにゲーミングストリーミングサービスを提供してもよい。しかしながら、1つ又は複数の実施形態はこれに限定されず、サーバ120は、オンラインビデオ及び/又はオーディオストリーミングサービスなど、他の種類のサービスを提供するサーバであってもよい。
【0024】
1つ又は複数のクライアント110A~110Cは、パーソナルコンピュータ(PC)、ラップトップ、パーソナルデジタルアシスタント(PDA)、モバイルデバイス、コンソール、タブレットPC、ウェアラブルデバイスなどであってもよい。一実施形態では、1つ又は複数のクライアント110A~110Cは、サーバ120に情報を要求し、サーバ120から情報を受信するためにコンピュータ上で稼働するソフトウェアであってもよい。例えば、クラウドゲーミング環境において、1つ又は複数のクライアント110A~110Cは、ユーザ制御情報をサーバ120に送り、サーバ120からビデオストリーミングを受信し、受信されたビデオストリーミングをユーザが視聴するためにコンピュータ又はモバイルデバイスのディスプレイ上に表示するクラウドゲーミングクライアントソフトウェアを稼働させるコンピュータ又はモバイルデバイスであってもよい。
【0025】
ゲームストリーミングは、ゲームコンソール又は他のローカルデバイス上ではなく、リモートサーバ上で1つ又は複数のゲームソフトウェアを稼働させることによって、ビデオゲームをプレイするためのユニークな方法を提供する。ゲーミングコンテンツは、サーバ側のビデオエンコーダによって圧縮され得、ネットワーク経由で1つ又は複数のクライアントにストリーミングされ得る。これは、ゲームストリーミングサービスにおいていくつかの独自の利点を提供する。まず、ゲームストリーミング会社が使用する専用サーバは、コンシューマーエンド上のハードウェアよりもかなり強力であるため、ビデオエンコード及びレンダリングをコンシューマーエンド上のハードウェアよりもはるかに速い速度で行うことができる。一般に、ローカルマシンは摩耗や破損により、時間の経過とともに性能が低下していく。これに対し、クラウドゲーミングサーバは、技術の発展に応じて継続的にアップグレードされ、ゲーミング性能をアップグレードするための追加コストを消費者に負担させることはない。さらに、ストリーミングサービスは、同じゲームをプレイしている可能性のある複数のユーザに同様のデータを送ることができ、これにより、各ユーザのゲーミングコンテンツを処理するための処理負荷が軽減される。
【0026】
図1を参照すると、クライアント110BのユーザBは、クライアント110AのユーザA及びクライアント110CのユーザCと同じゲームをプレイしている可能性がある。複数のクライアントのうちクライアント110Bは、クライアント110BのユーザBが行った行動を検出してもよい(S101)。例えば、行動は、射撃、アイテム拾い、及び、ゲーム内でユーザが行うことができる他の任意の行動であってもよい。クライアント110Bは、検出された行動をサーバ120に送信してもよい(S102)。サーバ120は、クライアント110Bから送信された、検出された行動を受信し、検出された行動を解析し、ゲームの新たな状態を決定してもよい(S103)。例えば、クライアント110BのユーザBが行った、検出された行動が、他のプレーヤーを射撃していることである場合、サーバ120は、射撃の結果を、同じゲーム内のユーザに表示する新たな状態として決定してもよい。サーバ120は、決定された新たな状態をクライアント110A、クライアント110B及びクライアント110Cに送信してもよい(S104)。クライアント110A、クライアント110B及びクライアント110Cの各々は、決定された新たな状態を受信し、新たな状態をディスプレイに表示してもよい(S105)。
【0027】
図2は、一実施形態によるネットワークベースのゲーミングシステムの動作を示す図である。
【0028】
図2を参照すると、ネットワークベースのゲーミングシステム200は、サーバ側のエンコーダ230とクライアント側のデコーダ250とを含み得る。本実施形態によるネットワークベースのゲーミングシステム200は、1つのエンコーダ及び1つのデコーダのみを示すが、1つ又は複数の実施形態はこれに限定されない。ゲーミングビデオコンテンツをエンコードするための複数のエンコーダ230を含む複数のサーバが存在し得る。また、1つ又は複数のサーバから受信された、エンコードされたゲーミングビデオコンテンツをデコードするための1つ又は複数のデコーダ250をそれぞれ含む、複数のクライアントデバイスが存在し得る。
【0029】
S202では、エンコーダ230は、ゲーミングコンテンツ210を生のビデオコンテンツとして受信してもよい。ここで、生のビデオコンテンツとは、エンコード前のゲーミングコンテンツ210の1つ又は複数の画像を指してもよい。エンコーダ230は、ゲーミングコンテンツ210の生のビデオコンテンツを受信し、生のビデオコンテンツをコード化してもよい。例えば、ゲーミングソフトウェアはクラウドサーバ側で稼働し得、ゲーミングコンテンツはサーバのグラフィック処理装置(GPU)によってレンダリングされ得る。レンダリングされたゲーミングコンテンツは、生のビデオコンテンツとして、例えばYUVフォーマットでエンコーダ230に供給されてもよい。しかしながら、1つ又は複数の実施形態はこれに限定されず、生のビデオコンテンツのフォーマットは、RGB色などの他の任意のコーディングフォーマットであってもよい。
【0030】
S204では、エンコーダ230は、H.264、H.265、AV1、AVS2などの特定のビデオコーディングフォーマット又は規格に従って、圧縮ビデオビットストリームを生成してもよい。サーバのエンコーダ230は、圧縮ビデオビットストリームを、ネットワークを介してクライアント250のデコーダ250に送信してもよい。エンコーダ230の動作は、
図3を参照して以下でより詳細に説明される。
【0031】
S206では、クライアントでのデコーダ250は、エンコーダ230によって生成された圧縮ビデオビットストリームを受信し、圧縮ビデオビットストリームを、表示されるビデオコンテンツにデコードしてもよい。デコーダ250の動作は、
図4を参照して以下でより詳細に説明される。
【0032】
S208では、デコードされたビデオビットストリームを、ユーザが視聴するためにクライアントのディスプレイ270に送信してもよい。
【0033】
図3は、一実施形態によるネットワークベースのゲーミングシステムのエンコードデバイスの動作を示すフローチャートである。
【0034】
図3を参照すると、エンコーダによる学習ベースのビデオコーディングの動作方法が示されている。上述したように、エンコーダは、ゲームのビデオコンテンツをコード化するためにサーバに配置されてもよい。
【0035】
S310では、この方法は、サーバの1つ又は複数のプロセッサによってコーディングパラメータセットを決定するためのモデルをトレーニングするステップを含み得る。学習ベースのビデオコーディングでは、ニューラルネットワークを使用して、大量の多様化されたトレーニングデータを通じてモデルをトレーニングし、フィルタ係数などの最適なコーディングパラメータを決定するようにしてもよい。ここで、パラメータセットは、ビデオコンテンツのエンコード及び/又はデコードに用いられるパラメータのセットであってもよい。
【0036】
トレーニングでは、トレーニングデータの選択は、特定のビデオコーディングの全体的な性能に大きく影響する可能性がある。すなわち、一部のトレーニングデータは、他の種類のビデオコンテンツとは対照的に、ある種類のビデオコンテンツにより関連性が高い場合がある。従って、ある種類のビデオコンテンツのためのモデルを効率的にトレーニングするには、あるトレーニングデータを他のトレーニングデータに優先して迅速に識別する必要がある。
【0037】
モデルをより効率的にトレーニングするために、ビデオコンテンツの種類ごとに1つのパラメータセットを設定してもよい。例えば、アクションゲーム、アドベンチャーゲーム、ロールプレイングゲーム(RPG)、ファーストパーソンシューティング(FPS)ゲーム、スポーツゲームなど、異なる種類のゲームが存在し得る。ゲーム種類ごとに、ビデオコンテンツをコード化及び復号するための1つの最適なパラメータセットを、トレーニングデータに基づいて学習してもよい。例えば、アクションゲーム用のパラメータセットを決定するためのモデルに、アクションゲームにより関連性の高いトレーニングデータを供給してもよい。また、各パラメータセットにパラメータ識別子(ID)を関連付け、コンテンツの種類に応じて、ゲームの種類ごとにパラメータIDを決定してもよい。このように、トレーニングされたモデルをコンテンツの種類ごとに特化させてもよい。
【0038】
より具体的には、初期モデルが予め定められた閾値に達するまで初期モデルが継続的にトレーニングされるように、特定のコンテンツ種類の初期モデルに対して予め定められた閾値を設定してもよい。すなわち、予め定められた閾値においてテストデータに類似するビデオコンテンツをエンコードするためのパラメータセットを初期モデルが出力できるまで、様々なトレーニングデータを初期モデルに反復的に供給してもよい。ここで、テストデータとは、モデルが最終的にトレーニングされるときにモデルによって出力されるべきデータを指してもよい。
【0039】
一実施形態によれば、様々なビデオコンテンツのサンプルトレーニングデータを使用して、ビデオコンテンツの種類ごとに1つ又は複数のモデルをトレーニングしてもよい。しかしながら、本開示の1つ又は複数の実施形態はこれに限定されず、1つのモデルのみをトレーニングして、ビデオコンテンツのエンコードを最適化するための複数のパラメータセットを生成してもよい。
【0040】
トレーニング後、エンコーダ及びデコーダの両方によって1つ又は複数のパラメータセットを想定又は合意して、ビデオコンテンツをコード化し、エンコードされたビデオコンテンツをデコードするようにしてもよい。一実施形態では、デコーダが圧縮ビデオコンテンツを受信すると、デコーダは、想定されたパラメータセットを使用してエンコーダによって行われた学習ベースのビデオコーディングに従って、圧縮ビデオコンテンツをデコードすることができる。例えば、ビデオコンテンツをエンコードするとき、エンコーダは、フィルタ係数のセットを使用してビデオコンテンツをエンコードして、ビデオコンテンツの再構築画像に対してフィルタリングを行ってもよい。しかしながら、ビデオコンテンツの種類に応じて、あるビデオコンテンツの画像のコーディングに用いられるフィルタ係数のセットは、他のビデオコンテンツの画像のコーディングに適していない場合がある。例えば、アクションゲームの画像をコード化するためのフィルタ係数のセットは、スポーツゲームに用いられるべきフィルタ係数のセットに適していないか、関連していない。したがって、サーバは、ビデオコンテンツの種類ごとにビデオコンテンツの品質を向上させるために、異なる種類のビデオコンテンツをコード化するための異なるパラメータセットを決定してもよい。
【0041】
S320では、エンコーダは、ビデオコンテンツを受信してもよい。ビデオコンテンツは、ビデオを構成するように順次配置される1つ又は複数の画像を含み得る。ビデオコンテンツは、ゲーミングコンテンツを含んでもよいと説明したが、1つ又は複数の実施形態はこれに限定されず、ビデオコンテンツは、映画、ドラマ、ショートクリップなど、他の任意の種類のコンテンツを含んでもよい。また、ビデオコンテンツは、ビデオコンテンツの1つ又は複数の画像に関連付けられるオーディオコンテンツを含んでもよい。一実施形態によれば、エンコーダは、ビデオコンテンツを処理しレンダリングするグラフィック処理装置(GPU)からビデオコンテンツを受信してもよい。しかしながら、1つ又は複数の実施形態はこれに限定されず、エンコーダは、カメラなどのビデオソースからビデオコンテンツを受信してもよい。
【0042】
S330では、エンコーダは、トレーニングされたモデルを用いて、ビデオコンテンツをエンコード及び/又はデコードするためのパラメータセットを決定してもよい。ビデオコンテンツがGPU又はカメラから受信されると、エンコーダは、その種類、サイズ、品質等に基づいてビデオコンテンツを識別してもよい。ビデオコンテンツは、その種類、サイズ、及び品質を識別するヘッダ情報を含み得る。例えば、ヘッダ情報は、ビデオコンテンツを、1280×720ピクセルの解像度で約10ギガバイトのサイズを有するゲームとして識別する情報を含み得る。
【0043】
ヘッダ情報に基づいて、エンコーダは、ビデオコンテンツをコード化するためのパラメータセットを決定してもよい。エンコーダは、トレーニングされたモデルを用いて、受信されたビデオコンテンツを圧縮ビデオコンテンツにコード化するために用いられるパラメータセットを決定してもよい。例えば、各ビデオコンテンツに関連付けられるタイトル識別子、ゲーム識別子、及び/又はコンテンツ識別子が存在し得、エンコーダは、そのような情報を使用して、ビデオコンテンツのコーディングに使用されるパラメータセットを選択してもよい。
【0044】
任意選択で、エンコーダは、如何なる具体的なパラメータセットを使用しないか、或いは、トレーニングされたモデルは、受信されたビデオコンテンツに適したパラメータセットを識別できない可能性がある。そのような場合、エンコーダは、デフォルトのパラメータセットを用いて、受信されたビデオコンテンツをコード化してもよい。
【0045】
S340では、エンコーダは、選択されたパラメータセットに従ってビデオコンテンツをエンコードしてもよい。すなわち、エンコーダは、H.264、H.265、AV1、AVS2などの特定のビデオコーディングフォーマット又は規格に従って圧縮ビデオビットストリームを生成する。しかしながら、1つ又は複数の実施形態はこれに限定されず、ビデオコンテンツは、ITU-T H.266(Future Video Coding(将来のビデオコーディング、FVC)とも呼ばれる)などの他のビデオコーディング/圧縮規格に従ってエンコードされてもよい。
【0046】
S350では、クライアントのデコーダがエンコーダのコーディング方式を認識でき、それに応じて圧縮ビデオビットストリームをデコードできるように、パラメータセット情報をクライアントに送信してもよい。一実施形態によれば、パラメータセットは、圧縮ビデオビットストリームとは別にクライアントに送信されるメタデータに含まれてもよい。例えば、クラウドゲーミングにおいて、サーバは、特定のゲーミングコンテンツのトレーニングデータに基づいてパラメータセットを導出し、パラメータセットを、ネットワークを介して補助情報としてクライアント(すなわち、エンドユーザ)に送信してもよい。補助情報は、システムメタデータ、プラグインなどの形態であってもよい。そして、ユーザは、ゲームの開始又はビデオコンテンツのデコードに先立って、パラメータセット情報をダウンロードしてもよい。しかしながら、1つ又は複数の実施形態はこれに限定されず、パラメータセット情報は圧縮ビデオコンテンツのヘッダ情報に付加され、圧縮ビデオコンテンツと共にクライアントに送信されてもよい。
【0047】
S360では、エンコードされたビデオビットストリームをクライアントに送信してもよい。ここで、エンコードされたビデオビットストリームは、パラメータセットとは別に送信され、パラメータセットと同時に送信され得る。しかしながら、1つ又は複数の実施形態はこれに限定されず、デコーダが、エンコードされたビデオビットストリームを受信する前に、エンコードに用いられるパラメータセットを認識できるように、パラメータセットは、エンコードされたビデオビットストリームより先に送信されてもよい。また、エンコードされたビデオビットストリームは、パラメータセットより先にクライアントに送信されてもよい。
【0048】
図4は、一実施形態によるネットワークベースのゲーミングシステムのデコードデバイスの動作を示すフローチャートである。
【0049】
図4を参照すると、デコーダによる学習ベースのビデオ復号の動作方法が示されている。上述したように、デコーダは、サーバから受信されたビデオコンテンツをデコードするためにクライアントデバイスに配置されてもよい。
【0050】
S410では、デコーダは、サーバからビデオビットストリームを受信してもよい。ここで、ビデオビットストリームとは、サーバのエンコーダによってコード化されたビデオコンテンツを指してもよい。
【0051】
S420では、デコーダは、サーバからパラメータセットが受信されたか否かを決定してもよい。すなわち、デコーダがサーバから1つ又は複数のパラメータセットを受信した場合、デコーダは、パラメータセットが受信されたと決定してもよい。一実施形態によれば、デコーダは、ビデオビットストリームとは別に1つ又は複数のパラメータセットを受信してもよい。例えば、デコーダは、ビデオビットストリームの受信に先立って、サーバから1つ又は複数のパラメータセットを受信してもよい。しかしながら、1つ又は複数の実施形態はこれに限定されず、デコーダは、1つ又は複数のパラメータセットの受信に先立ってビデオビットストリームを受信してもよい。
【0052】
S430では、サーバから少なくとも1つのパラメータセットが受信された場合(S420:Yes)、デコーダは、受信されたパラメータセットに従ってビデオビットストリームをデコードしてもよい。一実施形態によれば、複数のパラメータセットは、デコーダによって受信されてもよい。例えば、エンコーダは、複数のパラメータセットを使用してビデオコンテンツをコード化してもよく、それら複数のパラメータセットは、デコーダによって受信されてもよい。そのような場合、デコーダは、受信された複数のパラメータセットから1つ又は複数のパラメータセットを選択し、選択された1つ又は複数のパラメータセットに従ってビデオコンテンツをデコードしてもよい。任意選択で、エンコーダは、デコーダが使用する複数のパラメータセットを決定し、デコーダが使用する複数のパラメータセットを送ってもよい。エンコーダ又はデコーダのいずれかによって1つ又は複数のパラメータセットを選択する際に、例えば、タイトル識別子、ゲーム識別子、及び/又はコンテンツ識別子を使用して1つ又は複数のパラメータセットを選択してもよい。例えば、デコードされるビデオコンテンツが、ゲーム識別子によって示されるスポーツゲームであれば、デコーダは、トレーニングされたモデルに従って、スポーツゲームに最適なパラメータセットを選択してもよい。ここで、トレーニングされたモデルは、エンコーダがビデオコンテンツをエンコードする際に使用するトレーニングされたモデルであってもよい。
【0053】
S440では、サーバからパラメータセットが受信されていないとデコーダが決定した場合(S420:No)、デコーダは、受信されたビデオビットストリームをデコードするためにデフォルトのパラメータセットを使用すべきか否かをさらに決定してもよい。デフォルトのパラメータセットは、様々な種類のビデオコンテンツをデコードするために用いられることができる予め定められたパラメータセットであってもよい。デフォルトのパラメータセットは、ユーザによって予め定義されてもよい。エンコーダに関して上述したように、デコーダは、H.264、H.265、H.266、AV1、AVS2などの特定のビデオコーディングフォーマット又は規格に従って圧縮ビデオビットストリームをデコードしてもよい。
【0054】
シーケンスレベルのシンタックスシグナリングでは、指示フラグは、デフォルトのパラメータセットを使用すべきか、又はデフォルトのパラメータセットの代わりに、他のパラメータセットを取得できるかを示すために使用されてもよい。代替のパラメータセットを使用して受信されたビデオビットストリームをデコードできると決定された場合(S440:No)、デコーダは、他のパラメータセットを取得するようにサーバに問い合わせてもよい。しかしながら、1つ又は複数の実施形態はこれに限定されず、デコーダは、クライアントデバイス、又は他のパラメータセットを提供可能な他の任意のサーバに記憶された他のパラメータセットを取得して、受信されたビデオビットストリームをデコードしてもよい。
【0055】
S450では、指示フラグに従って、デフォルトのパラメータセットを使用すべきであるとデコーダが決定した場合(S440:Yes)、デコーダは、デフォルトのパラメータセットを用いて、受信されたビデオビットストリームをデコードする。
【0056】
S460では、デコーダは、デコードされたビデオビットストリームをクライアントデバイスのディスプレイに送信する。
【0057】
図5は、一実施形態によるネットワークベースのゲーミングシステムのエンコードデバイスを示すブロック図である。エンコードデバイス500は、少なくとも1つのプロセッサと、1つ又は複数のコンピュータプログラムコードを記憶する少なくとも1つのメモリとを備え得る。少なくとも1つのプロセッサは、少なくとも1つのメモリにアクセスし、1つ又は複数のコンピュータプログラムコードによって指示される通りに動作してもよい。
【0058】
図5を参照すると、エンコードデバイス500は、トレーニングコード510と、取得コード520と、決定コード530と、エンコードコード540と、送信コード550とを含み得る。
図5のエンコードデバイスのコンポーネントのいくつかの特徴又は機能は、
図3を参照して上で説明されていることを理解されたい。したがって、その繰り返しの説明は省略する。
【0059】
トレーニングコード510は、コーディングパラメータセットを決定するためのモデルをトレーニングするように構成されてもよい。このモデルを、大量の多様化されたトレーニングデータを通じて、ニューラルネットワーク用いてトレーニングし、フィルタ係数などの最適なコーディングパラメータを決定するようにしてもよい。トレーニングコード510は、
図3を参照して上述したS310の動作を実行してもよい。
【0060】
取得コード520は、ビデオコンテンツを処理しレンダリングするGPUからビデオコンテンツを受信するように構成されてもよい。取得コード520は、
図3を参照して上述したS320の動作を実行してもよい。
【0061】
決定コード530は、トレーニングされたモデルを用いて、ビデオコンテンツをエンコード及び/又はデコードするためのパラメータセットを決定するように構成されてもよい。決定コード530は、
図3を参照して上述したS330の動作を実行してもよい。
【0062】
エンコードコード540は、選択されたパラメータセットに従ってビデオコンテンツをエンコードするように構成されてもよい。エンコードコード540は、
図3を参照して上述したS340の動作を実行してもよい。
【0063】
送信コード550は、パラメータセット情報及びエンコードされたビデオコンテンツをクライアントデバイスに送信するように構成されてもよい。送信コード550は、
図3を参照して上述したS350及びS360の動作を実行してもよい。
【0064】
図6は、一実施形態によるネットワークベースのゲーミングシステムのデコードデバイスを示すブロック図である。デコードデバイス500は、少なくとも1つのプロセッサと、1つ又は複数のコンピュータプログラムコードを記憶する少なくとも1つのメモリとを備え得る。少なくとも1つのプロセッサは、少なくとも1つのメモリにアクセスし、1つ又は複数のコンピュータプログラムコードによって指示される通りに動作してもよい。
【0065】
図6を参照すると、デコードデバイス600は、受信コード610と、第1の決定コード620と、第2の決定コード630と、デコードコード640と、送信コード650とを含み得る。
図6のデコードデバイスのコンポーネントのいくつかの特徴又は機能は、
図4を参照して上で説明されていることを理解されたい。したがって、その繰り返しの説明は省略する。
【0066】
受信コード610は、サーバからビデオビットストリームを受信するように構成されてもよい。このビデオビットストリームは、サーバのエンコーダによってコード化されたビデオコンテンツを指してもよい。受信コード610は、
図4を参照して上述したS410の動作を実行してもよい。
【0067】
第1の決定コード620は、サーバからパラメータセットが受信されたか否かを決定するように構成されてもよい。第1の決定コード620は、
図4を参照して上述したS420の動作を実行してもよい。
【0068】
第2の決定コード630は、サーバからパラメータセットが受信されていないと第1の決定コード620が決定したことに基づいて、デコーダがデフォルトのパラメータセットを用いて、受信されたビデオビットストリームをデコードすべきか否かを決定するように構成されてもよい。第2の決定コード630は、
図4を参照して上述したS440の動作を実行してもよい。
【0069】
デコードコード640は、第1の決定コード620及び第2の決定コード630の決定に従って、ビデオビットストリームをデコードするように構成されてもよい。すなわち、サーバから少なくとも1つのパラメータが受信された場合、デコードコード640は、受信されたパラメータセットに従ってビデオビットストリームをデコードしてもよい。任意選択で、第1の決定コード620が、サーバからパラメータセットを受信していないと決定し、第2の決定コード630が、デフォルトのパラメータをビデオビットストリームのデコードに使用すべきであると決定した場合、デコードコード640は、デフォルトのパラメータセットに従ってビデオビットストリームをデコードしてもよい。デコードコード640は、
図4を参照して上述したS430及びS450の動作を実行してもよい。
【0070】
送信コード650は、デコードされたビデオビットストリームをクライアントデバイスのディスプレイに送信するように構成されてもよい。
【0071】
図7は、一実施形態によるネットワークベースのゲーミングシステムのデバイスの一例を示す図である。デバイス700は、ネットワークベースのゲーミングシステムのエンコードデバイス500及びデコードデバイス600に実装されてもよい。
【0072】
図7を参照すると、デバイス700は、プロセッサ710と、メモリ720と、ストレージ730と、入力インターフェース740と、出力インターフェース750と、通信インターフェース760と、バス770とを備え得る。
【0073】
プロセッサ710は、ハードウェア、ファームウェア、又はハードウェアとソフトウェアとの組み合わせで実装される。プロセッサ710は、中央処理装置(CPU)、グラフィック処理装置(GPU)、加速処理装置(APU)、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、又は他の種類の処理コンポーネントである。いくつかの実装では、プロセッサ710は、機能を実行するようにプログラミングされることが可能な1つ又は複数のプロセッサを含む。
【0074】
メモリ720は、プロセッサ710の使用のための情報及び/又は命令を記憶するランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、及び/又は他の種類の動的又は静的記憶デバイス(例えば、フラッシュメモリ、磁気メモリ、及び/又は光メモリ)を含む。
【0075】
ストレージ730は、デバイス700の動作及び使用に関連する情報及び/又はソフトウェアを記憶する。例えば、ストレージ730は、対応するドライブと共に、ハードディスク(例えば、磁気ディスク、光ディスク、光磁気ディスク、及び/又はソリッドステートディスク)、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、フロッピーディスク、カートリッジ、磁気テープ、及び/又は他の種類の非一時的なコンピュータ読取可能な媒体を含んでもよい。
【0076】
入力インターフェース740は、ユーザ入力(例えば、タッチスクリーンディスプレイ、キーボード、キーパッド、マウス、ボタン、スイッチ、及び/又はマイク)などを経由して、デバイス700による情報の受信を可能にするコンポーネントを含む。加えて、又は任意選択で、入力インターフェース740は、情報をセンシングするためのセンサ(例えば、全地球測位システム(GPS)コンポーネント、加速度計、ジャイロスコープ、及び/又はアクチュエータ)を含んでもよい。出力インターフェース750は、デバイス700からの出力情報を提供するコンポーネント(例えば、ディスプレイ、スピーカ、及び/又は、1つ又は複数の発光ダイオード(LED))を含む。
【0077】
通信インターフェース760は、有線接続、無線接続、又は有線接続と無線接続との組み合わせなどを経由して、デバイス700が他のデバイスと通信することを可能にするトランシーバのようなコンポーネント(例えば、トランシーバ及び/又は個別の受信機と送信機)を含む。通信インターフェース760は、デバイス700が他のデバイスから情報を受信すること、及び/又は他のデバイスに情報を提供することを可能にすることができる。例えば、通信インターフェース760は、イーサネットインターフェース、光インターフェース、同軸インターフェース、赤外線インターフェース、無線周波数(RF)インターフェース、ユニバーサルシリアルバス(USB)インターフェース、Wi-Fiインターフェース、セルラーネットワークインターフェースなどを含んでもよい。
【0078】
バス770は、デバイス700のコンポーネント間の通信を可能にするコンポーネントを含む。
【0079】
デバイス700は、本明細書に記載された1つ又は複数の動作を実行してもよい。デバイス700は、プロセッサ710が、メモリ720及び/又はストレージ730などの非一時的なコンピュータ読取可能な媒体に記憶されたソフトウェア命令を実行することに応答して、上述した動作を実行してもよい。コンピュータ読取可能な媒体は、本明細書では、非一時的なメモリデバイスとして定義される。メモリデバイスは、単一の物理的な記憶デバイス内のメモリ空間、又は複数の物理的な記憶デバイスに分散されたメモリ空間を含む。
【0080】
ソフトウェア命令は、他のコンピュータ読取可能な媒体から、又は通信インターフェース760を経由して他のデバイスから、メモリ720及び/又はストレージ730に読み込まれてもよい。実行されると、メモリ720及び/又はストレージ730に記憶されたソフトウェア命令は、プロセッサ710に、本明細書に記載された1つ又は複数のプロセスを実行させてもよい。加えて、又は任意選択で、ハードワイヤード回路は、ソフトウェア命令の代わりに、又はソフトウェア命令と組み合わせて使用されて、本明細書に記載された1つ又は複数のプロセスを行ってもよい。したがって、本明細書に記載された実装は、ハードウェア回路とソフトウェアとの任意の特定の組み合わせに限定されない。
【0081】
図7に示されるコンポーネントの数及び配置は、一例として提供されている。実際には、デバイス700は、
図7に示されるものよりも追加のコンポーネント、少ないコンポーネント、異なるコンポーネント、又は異なる配置のコンポーネントを含んでもよい。加えて、又は任意選択で、デバイス700の1セットのコンポーネント(例えば、1つ又は複数のコンポーネント)は、デバイス700の他のセットのコンポーネントによって実行されると説明される1つ又は複数の機能を実行してもよい。
【0082】
以上、本開示のいくつかの実施形態が示され、説明されてきた。しかしながら、本開示の1つ又は複数の実施形態は、前述の特定の実施形態に限定されない。本開示の趣旨及び範囲から逸脱することなく、種々の変形、代替、改良及びそれらの均等物を行うことができることが理解され得る。そのような変形、代替、改良及びそれらの均等物は、本開示の保護範囲に含まれるものとし、本開示の発明の概念又は見通しから独立して解釈されるべきではないことを理解されたい。