(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023037566
(43)【公開日】2023-03-15
(54)【発明の名称】ストリーミング・アプリケーションのためのニューラル・ネットワークを使用するエントロピベースのプレフィルタ処理
(51)【国際特許分類】
G06V 10/46 20220101AFI20230308BHJP
G06T 7/00 20170101ALI20230308BHJP
G06T 7/13 20170101ALI20230308BHJP
G06V 10/82 20220101ALI20230308BHJP
H04N 21/2343 20110101ALI20230308BHJP
【FI】
G06V10/46
G06T7/00 350C
G06T7/13
G06V10/82
H04N21/2343
【審査請求】未請求
【請求項の数】23
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022102426
(22)【出願日】2022-06-27
(31)【優先権主張番号】17/466,176
(32)【優先日】2021-09-03
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.TENSORFLOW
(71)【出願人】
【識別番号】501450960
【氏名又は名称】エヌビディア コーポレーション
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ケシャバ プラサード
(72)【発明者】
【氏名】ハッサン サミ―ル アザール
(72)【発明者】
【氏名】ビナヤック ポアー
【テーマコード(参考)】
5C164
5L096
【Fターム(参考)】
5C164PA31
5C164SA32S
5C164SB02P
5C164SB41S
5C164YA21
5C164YA24
5L096AA09
5L096FA06
5L096GA55
5L096HA11
5L096JA11
5L096KA04
5L096KA15
(57)【要約】
【課題】コンテンツ・ストリーミング・アプリケーションのためのニューラル・ネットワークベースのプレフィルタを提供する。
【解決手段】様々な実例で、コンテンツ・ストリーミング・アプリケーションのためのDNNベースのプレフィルタが、エンドユーザ・デバイスの変化するネットワーク又はシステム条件に応じてシーン・エントロピを動的に適応させるために使用される。たとえば、ネットワーク及び/又はシステム性能の問題又は劣化が識別された場合、DNNは、ストリーミング前にフレームの複雑さ又はエントロピを低減するためのフレーム・プレフィルタとして実装され得る- それによって、解像度の変更の必要なしに低ビット・レートでのフレームのストリーミングを可能にする。DNNベースのプレフィルタは、シーン・ナビゲーションがユーザにとってより簡単で自然であるように、オブジェクトなどに沿った画像詳細を維持するように調整され得る。
【選択図】
図1A
【特許請求の範囲】
【請求項1】
フレームに対応する面法線情報又はフレームに対応する深度情報のうちの少なくとも1つを使用して、前記フレーム内で描写されたエッジを示すサリエンシ・マップを生成する、
ディープ・ニューラル・ネットワーク(DNN)を使用して及び前記サリエンシ・マップ及び前記フレームを表すデータに少なくとも部分的に基づいて、プレフィルタ処理済みフレームを計算する、及び
前記プレフィルタ処理済みフレームを表すデータをエンドユーザ・デバイスに送信する
ための処理回路
を備える、プロセッサ。
【請求項2】
前記サリエンシ・マップが、バイナリ画像又はグレースケール画像、及び前記サリエンシ・マップの画素値のうちの1つを含み、エッジに対応する画素の画素値の大きさが、エッジに対応しない画素の画素値の大きさと区別できる、請求項1に記載のプロセッサ。
【請求項3】
前記プレフィルタ処理済みフレームをエンコードしてエンコードされたフレームを生成するための処理回路をさらに備え、前記プレフィルタ処理済みフレームを表す前記データが、前記エンコードされたフレームを表すデータである、請求項1に記載のプロセッサ。
【請求項4】
前記エンドユーザ・デバイスに関連する1つ又は複数のネットワーク又はシステム条件をモニタする、
前記1つ又は複数のネットワーク又はシステム条件に少なくとも部分的に基づいて、エントロピ制御パラメータの値を決定する、及び
前記値に少なくとも部分的に基づいて、前記エントロピ制御パラメータのそれぞれの値にそれぞれ対応する複数のDNNから前記DNNを選択する
ための処理回路をさらに備える、請求項1に記載のプロセッサ。
【請求項5】
前記深度情報が、深度マップに対応し、前記面法線情報が、面法線マップに対応し、前記サリエンシ・マップの前記生成が、
1つ又は複数の第1の中間マップを生成するための前記深度マップ又は前記面法線マップのうちの前記少なくとも1つのスケーリング又は正規化のうちの少なくとも1つ、
1つ又は複数の第2の中間マップを生成するために前記1つ又は複数の第1の中間マップに関して形態的クロージングを実行すること、及び
前記サリエンシ・マップを生成するために前記1つ又は複数の第2の中間マップに関してエッジ検出アルゴリズムを実行すること
を含む、請求項1に記載のプロセッサ。
【請求項6】
前記エッジ検出アルゴリズムが、ソーベル演算子を含む、請求項5に記載のプロセッサ。
【請求項7】
前記DNNが、エッジ詳細を維持することに対応する第1の損失関数及びフィルタ処理の量に対応する第2の損失関数を使用して、トレーニングされる、請求項1に記載のプロセッサ。
【請求項8】
前記DNNが、オートエンコーダ・アーキテクチャを含む、請求項1に記載のプロセッサ。
【請求項9】
前記プレフィルタ処理済みフレームの前記計算がさらに、エントロピ制御パラメータ値が前記DNNに適用されることに少なくとも部分的に基づき、さらに、前記プレフィルタ処理済みフレームのフィルタ処理の量が、前記エントロピ制御パラメータ値に少なくとも部分的に基づく、請求項1に記載のプロセッサ。
【請求項10】
前記プロセッサが、
シミュレーション動作を実行するためのシステム、
深層学習動作を実行するためのシステム、
エッジ・デバイスを使用して実装されたシステム、
1つ又は複数の仮想機械(VM)を組み込むシステム
少なくとも部分的にデータ・センタにおいて実装されたシステム、又は
少なくとも部分的にクラウド計算資源を使用して実装されたシステム
のうちの少なくとも1つに含まれる、請求項1に記載のプロセッサ。
【請求項11】
1つ又は複数のプロセッシング・ユニットと、
エンドユーザ・デバイスに対応するネットワーク又はシステム条件のうちの少なくとも1つに少なくとも部分的に基づいて、複数のディープ・ニューラル・ネットワーク(DNN)からDNNを選択すること、
フレームに対応する面法線又は深度値のうちの少なくとも1つを使用して、前記フレーム内で描写されたエッジを示すサリエンシ・マップを生成すること、
前記選択されたDNNを使用して及び前記サリエンシ・マップ及び前記フレームを表すデータに少なくとも部分的に基づいて、プレフィルタ処理済みフレームを計算すること、及び
前記プレフィルタ処理済みフレームを表すデータをエンドユーザ・デバイスに送信すること
を含む動作を、前記1つ又は複数のプロセッシング・ユニットによって実行されるとき、前記1つ又は複数のプロセッシング・ユニットに実行させる命令を記憶する1つ又は複数のメモリ・ユニットと
を備える、システム。
【請求項12】
前記動作がさらに、
前記ネットワーク又はシステム条件を分析することに少なくとも部分的に基づいて、エントロピ制御パラメータの値を決定すること
を含み、
前記複数のDNNから前記DNNを前記選択することが、前記エントロピ制御パラメータに対応するそれぞれの値を含む前記DNNに少なくとも部分的に基づく、請求項11に記載のシステム。
【請求項13】
前記サリエンシ・マップが、第1の値を有する第1の画素及び第2の値を有する第2の画素を含むバイナリ画像を含み、前記第1の画素が、前記エッジに対応する、請求項11に記載のシステム。
【請求項14】
前記動作がさらに、前記プレフィルタ処理済みフレームをエンコードしてエンコードされたフレームを生成することを含み、前記プレフィルタ処理済みフレームを表す前記データが、前記エンコードされたフレームを表すデータである、請求項11に記載のシステム。
【請求項15】
前記複数のDNNの各DNNが、エントロピ制御パラメータのそれぞれの値を含む、請求項11に記載のシステム。
【請求項16】
前記深度値が、深度マップにおいてエンコードされ、前記面法線が、面法線マップにおいてエンコードされ、前記サリエンシ・マップの前記生成が、
1つ又は複数の第1の中間マップを生成するための前記深度マップ又は前記面法線マップのうちの前記少なくとも1つのスケーリング又は正規化のうちの少なくとも1つ、
1つ又は複数の第2の中間マップを生成するために前記1つ又は複数の第1の中間マップに関して形態的クロージングを実行すること、及び
前記サリエンシ・マップを生成するために前記1つ又は複数の第2の中間マップに関してエッジ検出アルゴリズムを実行すること
を含む、請求項11に記載のシステム。
【請求項17】
前記エッジ検出アルゴリズムが、ソーベル演算子を含む、請求項16に記載のシステム。
【請求項18】
前記システムが、
シミュレーション動作を実行するためのシステム、
深層学習動作を実行するためのシステム、
エッジ・デバイスを使用して実装されたシステム、
1つ又は複数の仮想機械(VM)を組み込むシステム
少なくとも部分的にデータ・センタにおいて実装されたシステム、又は
少なくとも部分的にクラウド計算資源を使用して実装されたシステム
のうちの少なくとも1つに含まれる、請求項11に記載のシステム。
【請求項19】
フレームに対応する面法線又は深度値のうちの少なくとも1つを使用して、前記フレーム内で描写されたエッジを示すサリエンシ・マップを生成することと、
前記選択されたDNNを使用して及び前記サリエンシ・マップ及び前記フレームを表すデータに少なくとも部分的に基づいて、プレフィルタ処理済みフレームを計算することと、
前記プレフィルタ処理済みフレームの第1の画素値と前記サリエンシ・マップから決定されるものとしてのエッジに対応する画素位置における前記フレームの第2の画素値とを比較することに少なくとも部分的に基づいて、第1の損失関数を使用して、第1の損失値を計算することと、
前記プレフィルタ処理済みフレーム内の近接して位置する画素の画素値を比較することに少なくとも部分的に基づいて、第2の損失関数を使用して、第2の損失値を計算することと、
前記第1の損失値及び前記第2の損失値に少なくとも部分的に基づいて前記DNNの1つ又は複数のパラメータを更新することと
を含む、方法。
【請求項20】
前記第1の損失値及び前記第2の損失値の重み付けされた組合せを使用して全損失値を計算することをさらに含み、前記1つ又は複数のパラメータを前記更新することが、前記全損失値に少なくとも部分的に基づく、請求項19に記載の方法。
【請求項21】
前記第2の損失値を前記計算することが、前記DNNの関連エントロピ制御パラメータ値に少なくとも部分的に基づき、1つ又は複数の他のDNNが、前記関連エントロピ制御パラメータ値とは異なるエントロピ制御パラメータ値を含む、請求項19に記載の方法。
【請求項22】
前記DNNが、監視されていない学習を使用して、トレーニングされる、請求項19に記載の方法。
【請求項23】
前記DNNをトレーニングするために使用される少なくとも1つのトレーニング・フレームについて、対応するサリエンシ・マップが、前記少なくとも1つのトレーニング・フレームに関してエッジ検出アルゴリズムを使用して、生成される、請求項19に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストリーミング・アプリケーションのためのニューラル・ネットワークを使用するエントロピベースのプレフィルタ処理に関する。
【背景技術】
【0002】
従来のビデオ・ゲーム・ストリーミング・システムは、変化するネットワーク条件に対処するために、動的解像度変更(たとえば、1080pから720pなど)を用いる。たとえば、これらのシステムは、ネットワーク帯域幅降下としてフレーム解像度を減らすことができ、ネットワーク帯域幅増加としてフレーム解像度を増やすことができる。これを行うために、これらの従来のシステムは、ビデオ・ストリームにおいてイントラコード化フレーム(「Iフレーム」)- 又は他のイントラ・フレーム・タイプ- を導入して解像度移行を可能にすることができる。しかしながら、Iフレームは、空間的圧縮のみを受け、時間的圧縮を受けず、したがって、送信するのにより高いビット・レートを必要とする。結果として、動的解像度変更は、既に緊迫したネットワーク条件に応答して、トリガされ得るので、これらの従来のシステムは、チャネル容量が減らされる時間に高ビット・レートIフレームを送信し得る。したがって、エンドユーザ・デバイスは、不完全なIフレーム(たとえば、パケット損失による)を受信することがある及び/又はより高いレイテンシを有する完全な又は不完全なIフレームを受信することがある。したがって、ストリームのフレームの画質は、低減され得、フレームは、顕著なラグをもたらす- それによって、クラウド・ゲーム、仮想現実、拡張現実、及び/又は混合現実アプリケーションなどの高性能アプリケーションでは特に、ユーザ体験に影響する- より高いレイテンシを有して受信され得る。たとえば、これらの従来のシステムから受信されるストリームは、重要なシーン情報の保存を説明せずにパケット損失によって画像細部が低減された、劣化したビデオ・ストリームを表示し得る。さらに、これらの従来のシステムは、新しい解像度をサポートするためにクライアント・デコーダの再初期化を必要とすることがあるが、これは、エンドユーザ側で追加資源を消費し、一方、表示されるビデオの品質劣化- たとえば、ビデオが減らされたフレーム・レートで又は中断されたフレーム・ペーシングで表示され得る「ハング」、「スタッタ」「ヒッチ」、又は「ジッタ」による劣化の一因となり得る。
【発明の概要】
【課題を解決するための手段】
【0003】
本開示の実施例は、コンテンツ・ストリーミング・アプリケーションのためのニューラル・ネットワークベースのプレフィルタに関する。ストリーミング・ビット・レートを管理するためにネットワーク又はシステム条件を変更することに応答してシーン・エントロピ(たとえば、複雑さ)を動的に適合させる、システム及び方法が開示される。たとえば、従来のシステムとは対照的に、フレーム・エントロピがストリーミング・ビデオのビット・レートを低減するように適合されるべきかどうかを決定するために、エンドユーザ・デバイスのネットワーク及び/又はシステム条件がモニタされ得る。ネットワーク及び/又はシステム条件が最適である場合、低減は必要ない可能性があり、完全な複雑さ(最高エントロピ)フレームが、エンドユーザ・デバイスにストリームされ得る。しかしながら、ネットワーク及び/又はシステム性能の問題又は劣化が識別された場合、ディープ・ニューラル・ネットワーク(DNN)が、ストリーミングの前にフレームの複雑さ又はエントロピを低減する- それによって、解像度の変更の必要なしに、低減されたビット・レートでフレームがストリームされることを可能にする- ためのフレーム・プレフィルタとして実装され得る。結果として、フレーム解像度変更は必要とされないので、Iフレーム又は他のイントラ・フレーム・タイプを低減容量ネットワーク・チャネルに挿入することは、必要でない可能性があり、それによって、エンドユーザ・デバイスのデコーダ再初期化も回避する。プレフィルタからの詳細の損失を説明するために、DNNベースのプレフィルタは、シーン・ナビゲーション- たとえば、アプリケーションのインスタンスに参加するユーザによる- が、ユーザにとってより簡単で自然であり得るように、物体、境界線、及び/又は表面エッジに沿った画像詳細(保持することが視覚的に/知覚的に重要であり得る)を維持するように調整され得る。
【0004】
加えて、実施例において、異なるDNNが、異なるネットワーク及び/又はシステム条件に適応するように異なるエントロピ値についてトレーニングされ得る。たとえば、ネットワーク条件が改善するとき、ネットワーク条件が譲歩されるときよりもフレームをより少なくプレフィルタ処理する(たとえば、より高エントロピのプレフィルタ処理済みフレームをもたらす)、DNNが選択され得る。このようにして、フレーム解像度を調整する- 従来のシステムの欠点- のではなくて、本システムは、エンドユーザ・デバイスの現在のネットワーク及び/又はシステム条件に合うようにビット・レートを調整する知的に選択されたDNNを使用して、フィルタ処理の量を調整することができる。
【0005】
コンテンツ・ストリーミング・アプリケーションのためのニューラル・ネットワークベースのプレフィルタのための本システム及び方法について、以下のような添付の図面を参照して、詳しく後述する。
【図面の簡単な説明】
【0006】
【
図1A】本開示のいくつかの実施例による、フレームをプレフィルタ処理するためにディープ・ニューラル・ネットワーク(DNN)をトレーニングするための例示的プロセスを示すデータ流れ図である。
【
図1B】本開示のいくつかの実施例による、フレームをプレフィルタ処理するためにディープ・ニューラル・ネットワーク(DNN)をトレーニングするための例示的プロセスを示すデータ流れ図である。
【
図1C】本開示のいくつかの実施例による、フレームのプレフィルタ処理において使用するための例示的DNNアーキテクチャの図である。
【
図2A】本開示のいくつかの実施例による、エッジ・マップを生成するための例示的プロセスを示すデータ流れ図である。
【
図2B】本開示のいくつかの実施例による、エッジ・マップを時間的にフィルタ処理する例示的プロセスを示すデータ流れ図である。
【
図2C】本開示のいくつかの実施例による、フレームの例示的視覚化である。
【
図2D】本開示のいくつかの実施例による、
図2Cのフレームを使用して生成される深度図の例示的視覚化である。
【
図2E】本開示のいくつかの実施例による、
図2Cのフレームを使用して生成される面法線マップの例示的視覚化である。
【
図2F】本開示のいくつかの実施例による、
図2Cのフレームを使用して生成されるエッジ・マップの例示的視覚化である。
【
図3】本開示のいくつかの実施例による、フレームをプレフィルタ処理するようにDNNをトレーニングするための方法を示す流れ図である。
【
図4】本開示のいくつかの実施例による、DNNを使用してフレームをプレフィルタ処理するための例示的プロセスを示すデータ流れ図である。
【
図5A】本開示のいくつかの実施例による、異なるエントロピ・レベルにおけるプレフィルタ処理されたフレームの例示的視覚化である。
【
図5B】本開示のいくつかの実施例による、異なるエントロピ・レベルにおけるプレフィルタ処理されたフレームの例示的視覚化である。
【
図5C】本開示のいくつかの実施例による、異なるエントロピ・レベルにおけるプレフィルタ処理されたフレームの例示的視覚化である。
【
図5D】本開示のいくつかの実施例による、異なるエントロピ・レベルにおけるプレフィルタ処理されたフレームの例示的視覚化である。
【
図6】本開示のいくつかの実施例による、DNNを使用してフレームをプレフィルタ処理するための方法を示す流れ図である。
【
図7】本開示のいくつかの実施例の実装に使用するのに適した例示的コンテンツ・ストリーミング・システムのブロック図である。
【
図8】本開示のいくつかの実施例の実装に使用するのに適した例示的コンピューティング・デバイスのブロック図である。
【
図9】本開示のいくつかの実施例の実装に使用するのに適した例示的データ・センタのブロック図である。
【発明を実施するための形態】
【0007】
コンテンツ・ストリーミング・アプリケーションのためのニューラル・ネットワークベースのプレフィルタに関連する、システム及び方法が開示される。たとえば、本開示のシステム及び方法は、フレーム- たとえば、シミュレーション・アプリケーション、仮想現実(VR)、拡張現実(AR)、及び/又は混合現実(MR)アプリケーション、コンテンツ編集アプリケーション、ソーシャル・メディア・アプリケーション、リモート・デスクトップ・アプリケーション、コンテンツ・ストリーミング・アプリケーション、ゲーム・ストリーミング・アプリケーション、ビデオ会議アプリケーション、及び/又は同類のものにおける- のビット・レート又は複雑さを低減するためにフレーム・プレフィルタ処理が実装され得る、任意のアプリケーションのために実装され得る。そのようなものとして、本明細書に記載のプレフィルタは、任意のソースから及び任意の数の異なるアプリケーション・タイプ内で生成される画像又はビデオのフレーム・エントロピ・レベルを調整するのに有用であり得る。
【0008】
本開示のシステム及び方法は、少なくとも1つのディープ・ニューラル・ネットワーク(DNN)を使用してフレームをプレフィルタ処理する(たとえば、圧縮及びエンドユーザ・デバイスへの送信より前に)ことができる。たとえば、エンドユーザ・デバイスの現在のシステム及び/又はネットワーク条件に応じて、フィルタ処理のエントロピ制御パラメータ(たとえば、λ)が決定され得る。いくつかの実施例において、エントロピ制御パラメータは、所与の時間におけるシーンの所望のエントロピ・レベル、複雑さ、又は詳細に反比例し得る。そのようなものとして、システム及び/又はネットワーク性能が低い場合、より低いエントロピ・レベルが望ましいことがあり、したがって、ストリームのビット・レートを減らそうと努めてフレームにより徹底的にフィルタをかける- 又はぼかす- DNNベースのプレフィルタが選択されるように、エントロピ制御パラメータは、高いことがある。そのようなものとして、実施例において、任意の数の異なるDNNが、それぞれのエントロピ制御パラメータに対応するプレフィルタとしてトレーニングされ得る。ネットワーク及び/又はシステム条件が決定され得、ルックアップ・テーブルと比較され得又はアルゴリズムに挿入され得、エントロピ制御パラメータが計算され得る。計算された後は、エントロピ制御パラメータは、対応するDNNベースのプレフィルタを選択するために使用され得、フレームは、プレフィルタ処理されたフレームを生成するために、フィルタ処理され得る。ネットワーク及び/又はシステム性能がストリームの間に変化するとき、DNNベースのプレフィルタは、エントロピ制御パラメータの変更を説明するために、変更され得る。いくつかの実施例において、異なるエントロピ制御パラメータ値の別個のDNNを有することに加えて又はその代わりに、単一のDNNが、現在決定されたエントロピ制御パラメータ値に基づいて異なるレベルのフィルタ処理を実行するようにトレーニングされ得る。そのような実施例において、エントロピ制御パラメータの値が別個の入力としてDNNに提供され得、この値は、関連レベルのフィルタ処理を実行するためにDNNによって使用され得る。
【0009】
トレーニング中に、1つ又は複数のDNNが、1つ又は複数の損失関数を含む監視されていない学習プロセスを通してトレーニングされ得る。たとえば、各反復において、DNNは、フレームにおいて描写された表面、物体、及び/又は境界線の位置を示す値でエンコードされた、現在のフレーム及びエッジ・マップ- たとえば、サリエンシ・マップ、バイナリ・マップ若しくは画像、及び/又は同類のもの- を入力として受信し得る。各フレームのエッジ・マップを計算するために、いくつかの実例において、深度情報及び/又は面法線情報が使用され得る。たとえば、深度情報及び/又は面法線情報は、現在実行しているアプリケーションによって保持され得、この情報は、エッジ・マップ又はサリエンシ・マップを生成するために使用され得る。深度情報若しくは表現及び/又は面法線情報若しくは表現は、次いで、フレームによって描写されるエッジを示すエッジ・マップを生成するために使用され得る。たとえば、深度表現及び/又は正規表現は、スケーリング及び/又は正規化、フィルタ処理され得る(たとえば、拡張及び浸食を含む、形態的クロージングを使用して)、及び/又はエッジ検出動作(たとえば、ソーベル演算子を含む、エッジ検出アルゴリズムを使用することなどによる)を受け得る。生成されるエッジ・マップは、サリエンシ・マップ、バイナリ・マップ若しくは画像、及び/又は別のエッジ・マップ表現を含み得る。そのような実例において、エッジ画素は、第1の値(たとえば、1)でエンコードされ得、非エッジ画素は、フレーム内のエッジの位置を示すための第2の値(たとえば、0)でエンコードされ得る。フレームに対応するエッジ・マップ、及びフレームが、入力としてDNNに適用され得る。
【0010】
DNNは、フィルタ処理された画像を出力として計算することができ、フィルタ処理された画像は、1つ又は複数の損失関数を使用してフレーム及び/又はエッジ・マップと比較され得る- 実施例において、監視されていない方式で。たとえば、エッジ損失関数は、フレーム内の識別されたエッジに沿った及び/又はその近くの画素値が維持される- 又は厳密に維持されるように- シーンを通したナビゲーションがより鮮明であるように- シーンのフレームとシーンの対応するプレフィルタ処理済みフレームとの間のエッジ詳細を維持するために、DNNベースのプレフィルタをトレーニングするために使用され得る。実施例において、エッジ損失関数は、そのフレームとエッジ・マップからのエッジに対応すると決定された画素位置におけるプレフィルタ処理済みフレームとの画素を比較することができる。すなわち、エッジに対応するとして指示されたエッジ・マップからの所与の画素について、フレーム内のその位置における画素値とプレフィルタ処理済みフレームからのその位置における画素値とが、差がペナルティを科されるようなやり方で比較され得る- たとえば、画素値がより異なる場合、損失はより高い。別の実例として、現在の所望のエントロピ制御パラメータ値に対応するフレーム・エントロピを減らす又は満たすことに対応する、エントロピ損失関数が使用され得る(たとえば、エントロピ制御パラメータの値が高いほど、プレフィルタ処理済みフレームのエントロピは低く、逆もしかり)。たとえば、エントロピ損失関数は、近隣の画素の間の勾配を減らすために、プレフィルタ処理されたフレームの部分- エッジ・マップを使用して識別されるものとしてのエッジに対応する部分を除く- 内の画素勾配を測定することができる。そのような実例では、エントロピ制御パラメータ値が高いほど、より高い勾配は、エントロピ損失関数を使用して、より多くペナルティを科される。そのようなものとして、エントロピ制御パラメータの高い値が使用される場合(たとえば、より低いフレーム・エントロピを示す)、近隣の又は周囲の画素の間の勾配は、近隣の又は周囲の画素の間の画素値の差が最小であるように、減らされ得る。同様に、より低いエントロピ制御パラメータ値(たとえば、より高いフレーム・エントロピを示す)について、近隣の又は周囲の画素の間の勾配は、画素の差がより大きくなることを可能にされる(しかし、完全エントロピ・フレームほど大きくない)ように、より少なく減らされ得る。複数の損失関数が使用される場合、損失関数は、トレーニング中に重み付けされ得る。たとえば、エントロピ制御パラメータ値は、より高いエントロピ制御パラメータ値について、近隣の又は周囲の画素の画素値の間の一貫性がより重く実施されるように、損失関数に重みを付けるために使用され得、逆もまた同様である。
【0011】
使用されるDNNは、任意のDNNタイプ- たとえば、畳み込みニューラル・ネットワーク(CNN)- を含むことができ、任意のアーキテクチャ・タイプ- たとえば、オートエンコーダ・アーキテクチャ- を含むことができる。トレーニングされた後は、選択されたDNNベースのプレフィルタが、入力フレーム及び対応するエッジ・マップを使用してプレフィルタ処理済みフレームを生成するために使用され得る。計算されたプレフィルタ処理済みフレームは、次いで、入力フレームより低いビット・レートでエンコード及び圧縮され得- 決して完全ではないエントロピが望ましい場合、そして、エンコードされたフレームが、エンドユーザ・デバイスに送信され得る。結果として、ビット・レートは、ストリームについて低くされる可能性があり、レイテンシが、フレーム解像度変更として導入されない可能性がある- たとえば、フレーム解像度は終始一貫しているので、フレーム内の詳細のレベルのみが変更される。
【0012】
図1A~1Bを参照すると、
図1A~1Bは、本開示のいくつかの実施例による、フレーム・プレフィルタ処理のプロセス100A及び100Bの例示的データ流れ図である。本明細書に記載のこの及び他の配列は単に実例として説明されていることを理解されたい。他の配列及び要素(たとえば、機械、インターフェイス、機能、順番、機能のグループなど)が、示されているものに加えて又はその代わりに使用され得、いくつかの要素は、ともに省略され得る。さらに、本明細書に記載の要素の多数は、個別の若しくは分散された構成要素として又は他の構成要素と併せて、及び任意の適した組合せ及び場所で実装され得る機能エンティティである。エンティティによって実行されているものとして本明細書に記載された様々な機能は、ハードウェア、ファームウェア、及び/又はソフトウェアによって、実施され得る。たとえば、様々な機能は、メモリに記憶されたプロセッサ実行命令によって実施され得る。プロセス100A及び100Bは、
図7の例示的コンテンツ・ストリーミング・システム700、
図8の例示的コンピューティング・デバイス800、及び/又は
図9の例示的データ・センタ900と類似の特徴、機能性、及び/又は構成要素を使用して実装され得る。
【0013】
図1Aのプロセス100Aは、アプリケーション・エンジン102、エッジ・マップ・ジェネレータ104、エッジ・マップ106、フレーム・データ108、DNN110、プレフィルタ処理済みフレーム112、及びトレーニング・エンジン114を含む。いくつかの実施例において、アプリケーション・エンジン102は、アプリケーション視覚化を表示するために必要な画像フレーム、Iフレーム、コード、ファイル、及び他のデータを提供するように構成されたストリーミング・アプリケーションでもよい。非限定的実例として、アプリケーション・エンジン102は、シミュレーション・アプリケーション、仮想現実(VR)、拡張現実(AR)、及び/又は混合現実(MR)アプリケーション、コンテンツ編集アプリケーション、ソーシャル・メディア・アプリケーション、リモート・デスクトップ・アプリケーション、コンテンツ・ストリーミング・アプリケーション、ゲーム・ストリーミング・アプリケーション、ビデオ会議アプリケーション、及び/又は同類のものを実行し得る。
【0014】
動作中、プロセス100Aは、1つ又は複数の損失関数を含む監視されていない学習プロセスを介してDNN110をトレーニングするために実装され得る。最初に、各間隔において、アプリケーション・エンジン102は、エッジ・マップ・ジェネレータ104にフレーム- たとえば、ビデオ、ゲーム、アプリケーションなどのフレームを描写し得る、
図1Bの入力フレーム120- を提供し得る。エッジ・マップ・ジェネレータ104は、フレームの深度情報及び/又は面法線情報を使用してエッジ・マップ106を計算することができる。深度情報及び/又は面法線情報がアプリケーションのために利用不可能なときなど、いくつかの実施例において、エッジ・マップ・ジェネレータ104は、フレーム・データ108を使用してエッジ・マップ106を生成し得る- たとえば、フレーム・データ108でのエッジ検出を使用して。たとえば、フレーム・データによって表される近隣の画素の画素値の間のはっきりしたコントラストは、エッジを示し得る。エッジ・マップ106は、サリエンシ・マップ、バイナリ・マップ若しくは画像、グレースケール・マップ若しくは画像、及び/又は別のエッジ・マップ表現を含み得る。
図1Bの例示的エッジ・マップ122に示すように、エッジ画素(たとえば、白い画素として示された)は、第1の値(たとえば、1)でエンコードされ得、非エッジ画素(たとえば、黒い画素で示された)は、フレーム内のエッジの位置を示すための第2の値(たとえば、0)でエンコードされ得る。
【0015】
深度情報及び/又は面法線情報は、アプリケーション・エンジン102によって維持され得、この情報は、エッジ・マップ106を生成するために使用され得る。
図2C~2Fを簡単に見ると、
図2C~2Fは、フレーム情報の異なる例示的視覚化をそれぞれ描写する、シーンのフレーム220C/D/E/Fを示す。いくつかの実施例において、フレーム220Cは、完全詳細フレームを描写し得、フレーム220Cから深度情報を決定、抽出、及び/又は識別してフレーム220Dを生成するためにエッジ・マップ・ジェネレータ104によって処理され得る。フレーム200Dは、アプリケーション・エンジン102によって及び/又は別のアプリケーション若しくはプロセスによってフレーム220Cにエンコードされ得る深度情報を描写し得る。フレーム220Dにおける深度情報は、次いで、エッジ・マップ220Fを生成するために使用され得る。たとえば、エッジ・マップ・ジェネレータ104は、深度情報における相違点(たとえば、閾値を超える近隣の画素の深度値の差)を使用してフレーム220Cのエッジを識別してエッジ・マップ220Fを生成し得る。いくつかの実施例において、フレーム220Cは、フレーム220Cから面法線情報(たとえば、所与の表面と垂直の線、光線、及び/又はベクトル)を決定、抽出、及び/又は識別して、面法線情報を描写し得るフレーム220Eを生成するために、エッジ・マップ・ジェネレータ104によって処理され得る- たとえば、各画素における面法線値が画素にエンコードされ得る。面法線情報は、次いで、エッジ・マップ220Fを生成するために使用され得る。たとえば、物体のエッジは2つ以上の平面の又は半平面の表面の交点によって形成され得ると仮定することができるので、エッジ・マップ・ジェネレータ104は、閾値を超える表面法線ベクトル変化(たとえば、近隣のベクトルの間の角度)を用いてフレーム220Cのエッジを識別してエッジ・マップ220Fを生成することができる。
【0016】
いくつかの実施例において、フレーム220D及びフレーム220Eうちの1つ又は複数- たとえば、それぞれ、深度図及び面法線マップに対応する- は、フレーム220Fのエッジ・マップを生成するために使用され得る。他の実施例において、フレーム220C- 深度及び/又は面法線情報を最初に決定しない- は、フレーム220Fのエッジ・マップを生成するために使用され得る。たとえば、閾値を超える画素値の変化は、エッジ位置を示すことができ、この情報は、エッジ・マップのためのエッジを決定するために使用され得る。しかしながら、深度図及び/又は面法線マップなしに画素値を単独で使用することは、深度図及び/又は面法線マップを使用することよりも不正確な結果につながり得る。
【0017】
図2Aのプロセス200に示すものなどの、エッジ・マップを生成するためのさらなる実施例において、深度情報及び/又は法線情報は、スケーリング及び/又は正規化、フィルタ処理され得(たとえば、拡張及び浸食を含む、形態的クロージングを使用して)、及び/又はエッジ検出動作(たとえば、ソーベル演算子を含む、エッジ検出アルゴリズムを使用することなどによる)を受け得る。加えて、又は別法として、時間的にフィルタ処理されたエッジ・マップは、
図2Bのプロセス200Bに基づいて生成され得る。たとえば、プロセス200Bにおいて、フレーム運動ベクトル(たとえば、時間t-1から時間tまでの仮想環境内の仮想カメラの動きに対応する)は、運動をワープ若しくは補償するために及びt-1におけるワープされたエッジ・マップを生成するために、使用され得る。そのような実例において、時間t-1に対応するエッジ・マップは、時間t-1のワープされたエッジ・マップ及び時間tのエッジ・マップが混ぜ合わされ得るように、時間tの座標系に変換され得る。ワープされたエッジ・マップは、次いで、以下の方程式(1)に従って、実施例において、時間的に安定したエッジ・マップを生成するために、現在のエッジ・マップと混ぜ合わされ得る:
α
*EMAP(t)+(1-α)
*ワープされたEMAP(t-1)(1)
そこで、αは、最も正確な時間的に安定した結果を生み出すために経験的に決定され得る加重値(たとえば、0.0と1.0の間、非限定的実施例では0.5が使用される)である。
【0018】
図1Aに戻ると、いくつかの実施例において、アプリケーション・エンジンによって提供されるフレームに対応するエッジ・マップ106、及びアプリケーション・エンジンによって提供されるフレームのフレーム・データ108は、DNN110に入力として適用され得る。DNN110は、任意のDNNタイプ- たとえば、畳み込みニューラル・ネットワーク(CNN)- を含むことができ、実施例において、任意のアーキテクチャ・タイプ- たとえば、オートエンコーダ、エンコーダ/デコーダ、及び/又は他のアーキテクチャ- を含むことができる。DNN110として記述されているが、DNN110は、たとえば、及び限定ではなく、任意のタイプのマシン学習モデル、たとえば、線形回帰、ロジスティック回帰、決定木、サポート・ベクトル・マシン(SVM)、ナイーブ・ベイズ、k近傍法(Knn)、K平均クラスタリング、ランダム・フォレスト、次元縮退アルゴリズム、勾配ブースティング・アルゴリズム、ニューラル・ネットワーク(たとえば、オートエンコーダ、畳み込み、循環、パーセプトロン、長/短期メモリ/LSTM、ホップフィールド、ボルツマン、ディープ・ビリーフ、デコンボリューション、敵対的生成、液体状態マシンなど)、コンピュータ・ビジョン・アルゴリズムを使用するマシン学習モデル、及び/又は他のタイプのマシン学習モデルなど、を含み得る。トレーニング・エンジン114によってトレーニングされた後は、DNN110は、フレーム・データ108及びエッジ・マップ106を使用してプレフィルタ処理済みフレーム112を生成するために、使用され得る。
【0019】
図1Cを簡潔に参照すると、
図1Cは、本開示のいくつかの実施例による、入力フレーム120のプレフィルタ処理において使用するための例示的DNNアーキテクチャ110Aである。DNNは、任意の数の層130を含み得る。層130のうちの1つ又は複数は、入力層を含み得る。入力層は、入力フレーム120(たとえば、後処理の前又は後)に関連する値を保持し得る。1つ又は複数の層130は、畳み込み層を含み得る。畳み込み層は、入力層内のローカル領域に接続されたニューロンの出力を計算することができ、各ニューロンは、それらの重みと入力ボリュームにおいてそれらが接続された小さい領域とのドット積を計算する。層130のうちの1つ又は複数は、ReLU(rectified linear unit)層を含み得る。ReLU層は、たとえば、ゼロで閾値化する、要素ごとの活性化関数、max(0,x)など、を適用し得る。ReLU層の結果的ボリュームは、ReLU層の入力のボリュームと同じでもよい。層130のうちの1つ又は複数は、プール層を含み得る。プール層は、プール層の入力より小さいボリュームをもたらし得る、空間的次元(たとえば、高さ及び幅)に沿ったダウン・サンプリング動作を実行し得る。層130のうちの1つ又は複数は、1つ又は複数の完全に接続された層を含み得る。完全に接続された層内の各ニューロンは、前のボリュームにおいてニューロンのそれぞれに接続され得る。完全に接続された層は、クラス・スコアを計算することができ、結果的ボリュームは、1x1xクラスの数でもよい。いくつかの実例において、CNNは、CNNの層130のうちの1つ又は複数の層の出力がCNNの完全に接続された層への入力として提供され得るように、完全に接続された層を含み得る。いくつかの実例において、1つ又は複数の畳み込みストリームは、DNNによって実装され得、畳み込みストリームのいくつか又はすべては、それぞれの完全に接続された層を含み得る。いくつかの非限定的実施例において、DNNは、画像特徴抽出を容易にするための一連の畳み込み及びマックス・プール層と、それに続くグローバル・コンテキスト特徴抽出を容易にするためのマルチスケール拡張畳み込み及びアップサンプリング層を含み得る。
【0020】
入力層、畳み込み層、プール層、ReLU層、及び完全に接続された層が、DNN110に関して本明細書で論じられているが、これは限定を意図していない。たとえば、追加又は代替層が、DNN110、たとえば、正規化層、SoftMax層、及び/又は他の層タイプ、において使用され得る。DNN110がCNNを含む実施例において、CNNの異なる順番及び数の層が、実施例に応じて使用され得る。言い換えれば、DNN110の層130の順番及び数は、任意の1つのアーキテクチャに制限されない。
【0021】
加えて、層130のうちのいくつかは、パラメータ(たとえば、重み及び/又はバイアス)を含み得、たとえば、畳み込み層及び完全に接続された層、一方、他は含まないことがある、たとえば、ReLU層及びプール層。いくつかの実例において、パラメータは、トレーニング中にDNN110によって学習され得る。さらに、層130のうちのいくつかは、追加のハイパーパラメータ(たとえば、学習率、ストライド、エポックなど)を含み得、たとえば、畳み込み層、完全に接続された層、及びプール層、一方、他の層は含まないことがある、たとえば、ReLU層。パラメータ及びハイパーパラメータは、制限されるべきではなく、実施例に応じて異なってもよい。
【0022】
いくつかの実施例において、DNN110をトレーニングするために、トレーニング・エンジン114は、1つ又は複数の損失関数、たとえば、
図1Bの監視されていないトレーニング・ブロック124において使用されるもの、を用いることができる。トレーニング・エンジン114はまた、DNN110のトレーニングにおいて使用するためのトレーニング・データ・ストア126からの様々なトレーニング・データ・セットを受信する及び/又はそれにアクセスすることができる。損失関数に関して、たとえば、トレーニング・エンジン114のエッジ損失関数は、アプリケーション・エンジン102に対応するアプリケーションによって描写されるシーンを介したナビゲーションがより鮮明であるように、フレームのエッジ・マップ106内の識別されたエッジに沿った及び/又は近い画素値が維持される- 又は少なくとも接近して維持される- ように、アプリケーション・エンジン102によって出力されるフレームとプレフィルタ処理済みフレーム112との間でエッジ詳細を維持するようにDNN110をトレーニングするために使用され得る。たとえば、プレフィルタ処理済みフレーム112と比較して入力フレーム120を見ると、入力フレーム120は、プレフィルタ処理済みフレーム112において可視でない相当なレベルの詳細を含む。具体的には、入力フレーム120のグランド130Aは、プレフィルタ処理済みフレーム112のグランド130Bにおいて可視でない細部を含む。実施例において、エッジ損失関数は、フレーム・データ108及びエッジ・マップ106からのエッジに対応すると決定された画素位置におけるプレフィルタ処理済みフレーム112の画素値を比較することができる。すなわち、エッジに対応するものとして示されたエッジ・マップ106からの所与の画素について、フレーム・データ108内のその位置における画素値及びプレフィルタ処理済みフレーム112からのその位置における画素値は、差がペナルティを科されるようなやり方で、比較され得る。
【0023】
いくつかの実例では、エッジ損失関数が、以下の方程式(2)に従って、計算され得る:
Lエッジ=ΣΣ||EMASK(i,j)*(F(i,j)-PF(i,j))||n(2)
そこで、エッジ・マスク(たとえば、122)内の画素位置(i,j)が、オリジナル・フレーム(F)(たとえば、フレーム120)内の対応する画素位置(i,j)をプレフィルタ処理済みフレーム(PF)(128)内の対応する画素位置(i,j)と比較するために使用される。このプロセスは、エッジ・マップからエッジ画素に対応すると決定された各画素について繰り返され得る。
【0024】
別の実例として、現在の所望のエントロピ制御パラメータ値に対応するフレーム・エントロピ(たとえば、エントロピ制御パラメータのより高い値、プレフィルタ処理済みフレームのより低いエントロピ、及び逆もしかり)を減らす又は満たすことに対応する、トレーニング・エンジン114のエントロピ損失関数が使用され得る。たとえば、エントロピ損失関数は、近隣の画素の間の勾配を減らすために、プレフィルタ処理済みフレーム112の部分- エッジ・マップ106を使用して識別されるものとしてのエッジに対応する部分を除く- 内の画素勾配を測定することができる。そのような実例において、エントロピ制御パラメータ値が高いほど、より高い勾配は、エントロピ損失関数を使用して、より多くペナルティを科される。そのようなものとして、エントロピ制御パラメータの高い値が使用される場合(たとえば、より低いフレーム・エントロピを示す)、近隣の又は周囲の画素の間の勾配は、近隣の又は周囲の画素の間の画素値の差が最小であるように、減らされ得る。同様に、より低いエントロピ制御パラメータ値(たとえば、より高いフレーム・エントロピを示す)について、近隣の又は周囲の画素の間の勾配は、画素の差がより大きいことを可能にされる(しかし、完全エントロピ・フレームほど大きくない)ように、より少なく減らされ得る。
【0025】
いくつかの実施例において、エントロピ損失関数が、以下の方程式(3)に従って、計算され得る:
Lエントロピ=ΣΣ||(PF(i,j)-PF(i+m,j+n))||(3)
そこで、(i,j)は、エッジ画素ではない(x,y)画素位置に対応し、mは、x方向における画素距離であり、nは、y方向における画素距離である。たとえば、nは、+1及び-1の値を含むことができ、mは、+1及び-1の値を含むことができ、これらの値の組合せのうちの1つ又は複数が、画素を識別して画素(i,j)と比較するために使用される。
【0026】
複数の損失関数が使用される場合、損失関数は、トレーニング中に重み付けされ得る。たとえば、より高いエントロピ制御パラメータ値について、近隣の又は周囲の画素の画素値の間の一貫性がより重く実施され、逆もしかりであるように、エントロピ制御パラメータ値が、損失関数に重みを付けるために使用され得る。たとえば、全損失関数が、以下の方程式(4)に従って、計算され得る:
全損失=Lエッジ+λ*Lエントロピ(4)
そこで、λは、エントロピ制御パラメータに対応する。そのようなものとして、より低いエントロピを有する実例において、λ値が高いほど、それにより、エントロピ損失関数は、エッジ損失関数と比較して大きく重み付けされる。対照的に、より高いエントロピを有する実例では、λ値が低いほど、それにより、エントロピ損失関数は、エッジ損失関数と比較して少なく重み付けされる。
【0027】
ここで
図3を参照すると、本明細書に記載の方法300の各ブロックは、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組合せを使用して実行することができる計算プロセスを含む。たとえば、様々な機能は、メモリに記憶されたプロセッサ実行命令によって実施され得る。方法300はまた、コンピュータ記憶媒体に記憶されたコンピュータ使用可能命令として実施され得る。方法300は、いくつか例を挙げると、スタンドアロン・アプリケーション、サービス若しくはホスト型サービス(スタンドアロンの若しくは別のホスト型サービスと組み合わせた)、又は別の製品へのプラグインによって提供され得る。加えて、方法300は、例として、
図1のシステムに関して説明される。しかしながら、この方法は、本明細書に記載のものを含むがこれらに限定されない、任意の1つのシステム、又は任意の組合せのシステムによって、加えて又は別法として、実行され得る。
【0028】
図3は、本開示のいくつかの実施例による、フレームをプレフィルタ処理するためにDNNをトレーニングするための方法300を示す流れ図である。方法300は、ブロックB302において、フレームにおいて描写されたエッジを示すサリエンシ・マップを、フレームに対応する面法線又は深度値のうちの少なくとも1つを使用して、生成することを含む。たとえば、深度情報及び/又は面法線情報は、現在実行しているアプリケーションによって保持され得、この情報は、エッジ・マップ又はサリエンシ・マップを生成するために使用され得る。いくつかの実施例では、面法線及び/又は深度値を使用することに加えて又はその代わりに、フレーム・データからの画素値が使用され得る。
【0029】
方法300は、ブロックB304において、DNNを使用して並びにサリエンシ・マップ及びフレームを表すデータに少なくとも部分的に基づいて、プレフィルタ処理済みフレームを計算することを含む。たとえば、DNN110は、フレーム・データ及びエッジ・マップを使用して、プレフィルタ処理されたフレームを生成するために、使用され得る。
【0030】
方法300は、ブロックB306において、プレフィルタ処理されたフレームの第1の画素値とサリエンシ・マップから決定されたものとしてのエッジに対応する画素位置におけるフレームの第2の画素値とを比較することに少なくとも部分的に基づいて、第1の損失関数を使用して、第1の損失値を計算することを含む。たとえば、エッジ損失関数は、そのフレームとエッジ・マップからのエッジに対応すると決定された画素位置におけるプレフィルタ処理済みフレームとの画素値を比較することができる。すなわち、エッジに対応するとして指示されたエッジ・マップからの所与の画素について、フレーム内のその位置における画素値とプレフィルタ処理されたフレームからのその位置における画素値とは、差がペナルティを科されるようなやり方で、比較され得る- たとえば、画素値がより異なる場合、損失はより高い。
【0031】
方法300は、ブロックB308において、プレフィルタ処理されたフレーム内の近接して位置する画素の画素値を比較することに少なくとも部分的に基づいて、第2の損失関数を使用して、第2の損失値を計算することを含む。たとえば、エントロピ損失関数は、近隣の画素の間の勾配を減らすために、プレフィルタ処理されたフレームの部分内- エッジ・マップを使用して識別されるものとしてのエッジに対応する部分を除く- の画素勾配を測定することができる。たとえば、より高いエントロピ制御パラメータ(したがって、より低いフレーム・エントロピ)に対応するDNN110について、近隣の画素の間の差は、より多くペナルティを科され得る。別の実例として、より低いエントロピ制御パラメータ(したがって、より高いフレーム・エントロピ)に対応するDNN110について、近隣の画素の間の差は、少なくペナルティを科され得る- しかし、オリジナル・フレームのそれからフレーム・エントロピを減らすために、やはりペナルティを科され得る。
【0032】
方法300は、ブロックB310において、第1の損失値及び第2の損失値に少なくとも部分的に基づいてDNNの1つ又は複数のパラメータを更新することを含む。たとえば、DNN110のパラメータ(たとえば、重み及び/又はバイアス)は、許容レベルの精度が達成されるまで、トレーニング・エンジン114を使用して更新され得る。いくつかの実施例において、第1の損失値及び第2の損失値は、たとえば本明細書に記載のように、最終損失値を生成するために、ともに使用する- 及び重みを付ける- ことができる。
【0033】
図4を見ると、
図4は、本開示のいくつかの実施例による、DNNを使用してフレームをプレフィルタ処理するための例示的プロセス400を示すデータ流れ図である。
図4は、ビデオ・ゲーム・ストリーミング・システム422、アプリケーション・エンジン102、エッジ・マップ・ジェネレータ104、エッジ・マップ106、フレーム・データ108、選択されたDNN418、プレフィルタ処理済みフレーム112、エンコーダ402、エンコードされたフレーム404、エンドユーザ・デバイス420、チャネル条件モニタ414、チャネル条件データ、DNNセレクタ412、及びDNN430を含む。
【0034】
エンドユーザ・デバイス420は、スマート・フォン、ラップトップ・コンピュータ、タブレット・コンピュータ、デスクトップ・コンピュータ、ウェアラブル・デバイス、ゲーム機、仮想現実(VR)又は拡張現実(AR)システム(たとえば、ヘッドセット、コンピュータ、ゲーム機、リモコン、コントローラ、及び/又は他の構成要素)、コンテンツ・ストリーミング・デバイス(たとえば、NVIDIA SHIELD)、インテリジェント・パーソナル・アシスタントを含み得るスマート・ホーム・デバイス、及び/又はアプリケーション・ストリーミングをサポートする能力を有する別のタイプのデバイスを含み得る。
【0035】
エンドユーザ・デバイス420は、デコーダ406、ディスプレイ408、及びアプリケーション410を含み得る。エンドユーザ・デバイス420のほんの少数の構成要素及び/又は特徴が
図4には示されているが、これは限定を意図していない。たとえば、エンドユーザ・デバイス420は、追加又は代替構成要素、たとえば、
図8のコンピューティング・デバイス800に関して後述するもの、を含み得る。アプリケーション410は、フレーム・プレフィルタ処理がフレームのビット・レート又は複雑さ- たとえば、シミュレーション・アプリケーション、仮想現実(VR)、拡張現実(AR)、及び/又は混合現実(MR)アプリケーション、コンテンツ編集アプリケーション、ソーシャル・メディア・アプリケーション、リモート・デスクトップ・アプリケーション、コンテンツ・ストリーミング・アプリケーション、ゲーム・ストリーミング・アプリケーション、ビデオ会議アプリケーション、及び/又は同類のものにおける- を低減するために実装され得る、任意のアプリケーションでもよい。
【0036】
ディスプレイ408は、アプリケーション410を表示する能力を有する任意のタイプのディスプレイ(たとえば、発光ダイオード・ディスプレイ(LED)、有機LEDディスプレイ(OLED)、液晶ディスプレイ(LCD)、アクティブ・マトリックスOLEDディスプレイ(AMOLED)、量子ドット・ディスプレイ(QDD)、プラズマ・ディスプレイ、LED/LCDディスプレイ、及び/又は別のタイプのディスプレイ)を含み得る。いくつかの実例において、ディスプレイ408は、複数のディスプレイ(たとえば、コンピュータ・ゲームのためのデュアルモニタ・ディスプレイ、ゲームを構成するための第1のディスプレイ及びゲームをプレイするための仮想現実ディスプレイなど)を含み得る。いくつかの実例において、ディスプレイ408は、タッチスクリーン・ディスプレイ、たとえば、スマート・フォン、タブレット・コンピュータ、ラップトップ・コンピュータ、又は同類のもののタッチスクリーン、である。
【0037】
動作中、エンドユーザ・デバイス420は、チャネル条件(たとえば、帯域幅、チャネル容量、ビット・レート、信号対雑音比(SINR)、スペクトル効率、及び/又は追加の状態情報)をビデオ・ゲーム・ストリーミング・システム422のチャネル条件モニタに送信し得る。チャネル条件モニタ414は、送信されたチャネル条件を処理及び/又はフォーマットして、DNNセレクタ412に提供され得るチャネル条件データ416を生成することができる。DNNセレクタ412は、チャネル条件データ416をルックアップ・テーブル又はアルゴリズムに挿入されたチャネル条件データ416と比較することができ、エントロピ制御パラメータが、DNNセレクタ412によって計算され得る。計算された後は、DNNセレクタ412は、チャネル条件データ416に関連する、制御パラメータに対応するDNNを選択するために、DNN430にアクセスする及びエントロピ制御パラメータを使用することができる。DNN430及び選択されたDNN418は、
図1A~1CのDNN110のトレーニングされた又は配備されたインスタンスに対応し得る、ということに留意されたい。
【0038】
DNN430は、異なるレベルのフィルタ処理に- たとえば、異なるエントロピ制御パラメータに- それぞれ対応する、いくつかのDNNを記憶し得る。フィルタ処理のレベルに応じて、プレフィルタ処理されたフレームは、エンドユーザ・デバイス420のディスプレイ408に表示されるとき、いくぶんかの視覚的詳細を含み得る。
図5A~5Dを簡潔に参照すると、たとえば、フレーム500A/B/C/Dのそれぞれは、高いエントロピ、中位のエントロピ、低いエントロピ、及び非常に低いエントロピにそれぞれ対応する、異なるエントロピ制御パラメータ(たとえば、それぞれ、0.1、0.5、1.0、及び3.0)に対応する。フレーム500A/B/C/Dのそれぞれは、アーチ道502A/B/C/Dを含む。図示するように、アーチ道502Aは、アーチ道502Aにおいてはっきり定義された及び可視の煉瓦を有する有意なレベルの詳細を含む。アーチ道502Bは、502Aと比較すると、より少ない詳細を含む。アーチ道502Bは、煉瓦を示すためのある程度のテクスチャを含むが、煉瓦は、視覚的にはっきりと定義されていない。アーチ道502Cは、502Bと比較すると、より少ない詳細を含む。アーチ道502Cは、アーチ道502Cのある程度の詳細を含むが、煉瓦は不可視である。最後に、アーチ道502Dは、アーチ道502Cと比較すると、さらに少ない詳細を含む。アーチ道502Dは、テクスチャを含まず、煉瓦は不可視である。しかしながら、アーチ道502Dのエッジは、維持され、フレーム500A/B/C/Dに対応するゲームをユーザがナビゲートすることを可能にする。
【0039】
図4に戻ると、DNNセレクタ412は、制御パラメータに対応するDNN- たとえば、選択されたDNN418- を選択するために、エントロピ制御パラメータを使用することができる。ビデオ・ゲーム・ストリーミング・システム422は、次いで、選択されたDNN418-
図1A~1Cに関連して記述されるような- にフレーム・データ108及びエッジ・マップ106を提供してプレフィルタ処理済みフレーム112を生成することができる。プレフィルタ処理済みフレーム112は、次いで、エンコードされたフレーム404を生成するために、エンコーダ402によってエンコード及び圧縮され得る。エンコードされたフレーム404は、入力フレームと比較すると、低減されたビット・レートを含むことができ- 選択されたDNN418がエントロピを低減するようにトレーニングされる場合- そして、エンコードされたフレーム404は、次いで、エンドユーザ・デバイス420のアプリケーション410に送信され得る。アプリケーション410は、エンコードされたフレーム404を復号するために及びディスプレイ408を介して表示するためのプレフィルタ処理済みフレーム112を生成するために、デコーダ406を使用することができる。
【0040】
いくつかの実施例において、異なるエントロピ制御パラメータについて異なるDNN430を有することに加えて又はその代わりに- たとえば、変化するエントロピ・レベルのプレフィルタ処理済みフレーム112を生成するために- 単一のDNN430が、エントロピ制御パラメータを入力として使用するようにトレーニングされ得、そして、フレーム・データ108及びエッジ・マップ106に加えて、エントロピ制御パラメータを使用して、DNN430は、所望のエントロピ値に従ってプレフィルタ処理済みフレーム112を計算し得る。
【0041】
ここで
図6を参照すると、本明細書に記載された、方法600の各ブロックは、任意の組合せのハードウェア、ファームウェア、及び/又はソフトウェアを使用して実行され得る計算プロセスを含む。たとえば、様々な機能が、メモリに記憶された命令を実行するプロセッサによって、実施され得る。方法600はまた、コンピュータ記憶媒体に記憶されたコンピュータ使用可能命令として実施され得る。方法600は、いくつか例を挙げると、スタンドアロン・アプリケーション、サービス若しくはホスト型サービス(スタンドアロンの若しくは別のホスト型サービスと組み合わせた)、又は別の製品へのプラグインによって提供され得る。加えて、方法600は、例として、
図4のシステムに関して説明される。しかしながら、この方法は、本明細書に記載のものを含むがこれらに限定されない、任意の1つのシステム、又は任意の組合せのシステムによって、加えて又は別法として、実行され得る。
【0042】
図6は、本開示のいくつかの実施例による、DNNを使用してフレームをプレフィルタ処理するための方法600を示す流れ図である。方法600は、ブロックB602において、エンドユーザ・デバイスに対応するネットワーク又はシステム条件のうちの少なくとも1つに少なくとも部分的に基づいて、複数のディープ・ニューラル・ネットワーク(DNN)からDNNを選択することを含む。たとえば、システム及び/又はネットワーク性能が低い場合、より低いエントロピが望ましいことがあり、したがって、ストリームのビット・レートを減らそうと努めてより徹底的にフレームをフィルタ処理する- 又はぼかす- DNNベースのプレフィルタが選択されるように、エントロピ制御パラメータは、より高いことがある。
【0043】
方法600は、ブロックB604において、フレームにおいて描写されたエッジを示すサリエンシ・マップを、フレームに対応する面法線又は深度値のうちの少なくとも1つを使用して、生成することを含む。たとえば、深度情報及び/又は面法線情報は、現在実行しているアプリケーションによって保持され得、この情報は、エッジ・マップ・ジェネレータ104を使用してエッジ・マップ又はサリエンシ・マップを生成するために使用され得る。実施例において、深度情報及び/又は面法線情報を使用することに加えて又はその代わりに、フレーム・データは、近隣の画素値を比較するために及び近隣の画素値におけるはっきりしたコントラストからエッジを決定するために、使用され得る。
【0044】
方法600は、ブロックB606において、選択されたDNNを使用して並びにサリエンシ・マップ及びフレームを表すデータに少なくとも部分的に基づいて、プレフィルタ処理済みフレームを計算することを含む。たとえば、トレーニング・エンジンによってトレーニングされた後は、選択されたDNN418は、フレーム・データ108及びエッジ・マップ106を使用してプレフィルタ処理済みフレーム112を生成するために使用され得る。
【0045】
方法600は、ブロックB608において、プレフィルタ処理されたフレームを表すデータをエンドユーザ・デバイスに送信することを含む。たとえば、計算されたプレフィルタ処理済みフレーム112は、次いで、入力フレームより低いビット・レートでエンコード及び圧縮され得る- 決して完全ではないエントロピが望ましい場合- そして、エンコードされたフレーム404が、エンドユーザ・デバイス420に送信され得る。結果として、チャネル条件を被ることにより画像解像度を切り替えなければならないのではなくて、フレームのエントロピは、プレフィルタ処理されたフレームが同じフレーム解像度で送信され得るように、調整され得る。このようにして、フレームからフレームへの画素値の差は、エントロピが少ないほど、少なくなり得るので、オリジナル・フレーム・データ108と比較してそのフレーム解像度でプレフィルタ処理済みフレームを送信するために必要とされるデータの量は、低減され得、それにより、低減されたレイテンシをもたらし得る。
【0046】
例示的コンテンツ・ストリーミング・システム
ここで
図7を参照すると、
図7は、本開示のいくつかの実施例による、コンテンツ・ストリーミング・システム700の例示的システム図である。
図7は、アプリケーション・サーバ702(
図8の例示的コンピューティング・デバイス800に類似の構成要素、特徴、及び/又は機能性を含み得る)、クライアント・デバイス704(
図8の例示的コンピューティング・デバイス800に類似の構成要素、特徴、及び/又は機能性を含み得る)、及びネットワーク706(本明細書に記載のネットワークに類似し得る)を含む。本開示のいくつかの実施例において、システム700が、実装され得る。アプリケーション・セッションは、ゲーム・ストリーミング・アプリケーション(たとえば、NVIDIA GeFORCE NOW)、リモート・デスクトップ・アプリケーション、シミュレーション・アプリケーション(たとえば、自律又は半自律車両シミュレーション)、コンピュータ支援設計(CAD:computer aided design)アプリケーション、仮想現実(VR:virtual reality)及び/又は拡張現実(AR:augmented reality)ストリーミング・アプリケーション、深層学習アプリケーション、及び/又は他のアプリケーション・タイプに対応し得る。
【0047】
システム700において、アプリケーション・セッションについて、クライアント・デバイス704は、単に、入力デバイスへの入力に応答して入力データを受信し、入力データをアプリケーション・サーバ702に送信し、エンコードされたディスプレイ・データをアプリケーション・サーバ702から受信し、ディスプレイ・データをディスプレイ724に表示することができる。そのようなものとして、よりコンピュータ負荷の重い計算及び処理は、アプリケーション・サーバ702にオフロードされる(たとえば、アプリケーション・セッションのグラフィック出力のレンダリング- 特に光線又はパス・トレース- は、ゲーム・サーバ702のGPUによって実行される)。言い換えれば、アプリケーション・セッションは、アプリケーション・サーバ702からクライアント・デバイス704にストリーミングされ、それによって、グラフィックス処理及びレンダリングのためのクライアント・デバイス704の要件を減らす。
【0048】
たとえば、アプリケーション・セッションのインスタンス化に関して、クライアント・デバイス704は、ディスプレイ・データをアプリケーション・サーバ702から受信することに基づいてディスプレイ724にアプリケーション・セッションのフレームを表示し得る。クライアント・デバイス704は、入力デバイスのうちの1つへの入力を受信し、応答して入力データを生成することができる。クライアント・デバイス704は、通信インターフェイス720を介して及びネットワーク706(たとえば、インターネット)を介してアプリケーション・サーバ702に入力データを送信することができ、アプリケーション・サーバ702は、通信インターフェイス718を介して入力データを受信することができる。CPUは、入力データを受信し、入力データを処理し、アプリケーション・セッションのレンダリングをGPUに生成させるデータをGPUへ送信することができる。たとえば、入力データは、ゲーム・アプリケーションのゲーム・セッションにおけるユーザのキャラクタの移動、武器を発砲すること、リローディング、ボールをパスすること、車両を回転させることなどを表し得る。レンダリング構成要素712は、アプリケーション・セッション(たとえば、入力データの結果を表す)をレンダリングすることができ、レンダリング・キャプチャ構成要素714は、アプリケーション・セッションのレンダリングをディスプレイ・データとして(たとえば、アプリケーション・セッションのレンダリングされたフレームをキャプチャする画像データとして)キャプチャすることができる。アプリケーション・セッションのレンダリングは、アプリケーション・サーバ702の1つ又は複数の並列処理装置- たとえば、1つ又は複数の専用ハードウェア・アクセラレータ又は処理コアの使用をさらに用いて光線又はパス・トレース技法を実行し得る、GPU- を使用して計算される、光線又はパス・トレース照明及び/又は陰効果を含み得る。いくつかの実施例において、1つ又は複数の仮想機械(VM:virtual machine)- たとえば、1つ又は複数の仮想構成要素、たとえば、vGPU、vCPUなど、を含む- は、アプリケーション・セッションをサポートするために、アプリケーション・サーバ702によって使用され得る。エンコーダ716は、次いで、ディスプレイ・データをエンコードして、エンコードされたディスプレイ・データを生成することができ、エンコードされたディスプレイ・データは、通信インターフェイス718を介してネットワーク706を介してクライアント・デバイス704に送信され得る。クライアント・デバイス704は、エンコードされたディスプレイ・データを通信インターフェイス720を介して受信することができ、デコーダ722は、エンコードされたディスプレイ・データを復号してディスプレイ・データを生成することができる。クライアント・デバイス704は、次いで、ディスプレイ724を介してディスプレイ・データを表示することができる。
【0049】
例示的コンピューティング・デバイス
図8は、本開示のいくつかの実施例の実装において使用するのに適した例示的コンピューティング・デバイス800のブロック図である。コンピューティング・デバイス800は、以下のデバイスを直接に又は間接に結合する相互接続システム802を含み得る:メモリ804、1つ又は複数の中央処理装置(CPU:central processing unit)806、1つ又は複数のグラフィックス・プロセッシング・ユニット(GPU:graphics processing unit)808、通信インターフェイス810、入力/出力(I/O:input/ouput)ポート812、入力/出力構成要素814、電力供給装置816、1つ又は複数のプレゼンテーション構成要素818(たとえば、ディスプレイ)、及び1つ又は複数の論理ユニット820。少なくとも1つの実施例において、コンピューティング・デバイス800は、1つ又は複数の仮想機械(VM)を含み得る、及び/又は、その構成要素のいずれかは、仮想構成要素(たとえば、仮想ハードウェア構成要素)を含み得る。非限定的実例として、GPU808のうちの1つ又は複数は、1つ又は複数のvGPUを含み得、CPU806のうちの1つ又は複数は、1つ又は複数のvCPUを含み得、及び/又は論理ユニット820のうちの1つ又は複数は、1つ又は複数の仮想論理ユニットを含み得る。そのようなものとして、コンピューティング・デバイス800は、個別の構成要素(たとえば、コンピューティング・デバイス800専用の完全なGPU)、仮想構成要素(たとえば、コンピューティング・デバイス800専用のGPUの一部分)、又はその組合せを含み得る。
【0050】
図8の様々なブロックは、線を有する相互接続システム802を介して接続されるものとして示されているが、これは限定を意図しておらず、単に明確にすることを目的としている。たとえば、いくつかの実施例において、プレゼンテーション構成要素818、たとえば、ディスプレイ・デバイス、は、I/O構成要素814と考えられ得る(たとえば、ディスプレイがタッチスクリーンである場合)。別の実例として、CPU806及び/又はGPU808は、メモリを含み得る(たとえば、メモリ804は、GPU808、CPU806、及び/又は他の構成要素のメモリに加えた記憶デバイスを表し得る)。言い換えれば、
図8のコンピューティング・デバイスは、単に、例示である。「ワークステーション」、「サーバ」、「ラップトップ」、「デスクトップ」、「タブレット」、「クライアント・デバイス」、「モバイル・デバイス」、「ハンドヘルド・デバイス」、「ゲーム機」、「電子制御ユニット(ECU)」、「仮想現実システム」、及び/又は他のデバイス又はシステムタイプのようなカテゴリは、すべて、
図8のコンピューティング・デバイスの範囲内にあることが企図されているので、区別されない。
【0051】
相互接続システム802は、1つ又は複数のリンク又はバス、たとえば、アドレス・バス、データ・バス、制御バス、又はその組合せ、を表し得る。相互接続システム802は、1つ又は複数のバス又はリンク・タイプ、たとえば、業界標準アーキテクチャ(ISA:industry standard Architecture)バス、拡張業界標準アーキテクチャ(EISA:extended industry standard Architecture)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA:video electronics standards association)バス、周辺構成要素相互接続(PCI:peripheral component interconnect)バス、周辺構成要素相互接続エクスプレス(PCIe:peripheral component interconnect express)バス、及び/又は別のタイプのバス若しくはリンク、を含み得る。いくつかの実施例において、構成要素間の直接接続が存在する。一実例として、CPU806は、メモリ804に直接接続され得る。さらに、CPU806は、GPU808に直接接続され得る。構成要素間に直接、又は2地点間接続があるとき、相互接続システム802は、接続を実施するためのPCIeリンクを含み得る。これらの実例において、PCIバスは、コンピューティング・デバイス800に含まれる必要はない。
【0052】
メモリ804は、様々なコンピュータ可読媒体のいずれかを含み得る。コンピュータ可読媒体は、コンピューティング・デバイス800によってアクセスされ得る任意の利用可能な媒体でもよい。コンピュータ可読媒体は、揮発性媒体及び不揮発性媒体の両方、並びに取り外し可能な媒体及び取り外し不可能な媒体を含み得る。実例として、そして限定ではなく、コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を含み得る。
【0053】
コンピュータ記憶媒体は、情報、たとえば、コンピュータ可読命令、データ構造、プログラム・モジュール、及び/又は他のデータ・タイプ、を記憶するための任意の方法又は技術において実装される揮発性媒体及び不揮発性媒体の両方及び/又は取り外し可能な媒体及び取り外し不可能な媒体を含み得る。たとえば、メモリ804は、コンピュータ可読命令(たとえば、プログラム及び/又はプログラム要素、たとえば、オペレーティング・システム、を表すを記憶し得る。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュ・メモリ又は他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD:digital versatile disk)又は他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶デバイス、或いは、所望の情報を記憶するために使用され得る及びコンピューティング・デバイス800によってアクセスされ得る任意の他の媒体を含み得るが、これらに限定されない。本明細書では、コンピュータ記憶媒体は、信号それ自体を含まない。
【0054】
コンピュータ記憶媒体は、変調されたデータ信号、たとえば、搬送波又は他のトランスポート機構、においてコンピュータ可読命令、データ構造、プログラム・モジュール、及び/又は他のデータ・タイプを実施し得、任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、信号において情報をエンコードするための方式などで設定又は変更されたそれの特徴のうちの1つ又は複数を有する信号を指し得る。実例として、及び限定ではなく、コンピュータ記憶媒体は、有線媒体、たとえば、有線ネットワーク又は直接有線接続、とワイヤレス媒体、たとえば、音響、RF、赤外線及び他のワイヤレス媒体、とを含み得る。前述のうちのいずれかの組合せもまた、コンピュータ可読媒体の範囲に含まれるべきである。
【0055】
CPU806は、コンピューティング・デバイス800の1つ又は複数の構成要素を制御して本明細書に記載の方法及び/又はプロセスのうちの1つ又は複数を実行するためのコンピュータ可読命令のうちの少なくともいくつかを実行するように構成され得る。CPU806は、多数のソフトウェア・スレッドを同時に処理する能力を有する1つ又は複数のコア(たとえば、1、2、4、8、28、72など)をそれぞれ含み得る。CPU806は、任意のタイプのプロセッサを含み得、実装されるコンピューティング・デバイス800のタイプ(たとえば、モバイル・デバイスのためのより少数のコアを有するプロセッサ及びサーバのためのより多数のコアを有するプロセッサ)に応じて、異なるタイプのプロセッサを含み得る。たとえば、コンピューティング・デバイス800のタイプに応じて、プロセッサは、縮小命令セット・コンピューティング(RISC:Reduced Instruction Set Computing)を使用して実装されるアドバンストRISC機械(ARM:Advanced RISC Machine)プロセッサ又は複合命令セット・コンピュータ(CISC:Complex Instruction Set Computing)を使用して実装されるx86プロセッサでもよい。コンピューティング・デバイス800は、1つ又は複数のマイクロプロセッサ又は補足のコプロセッサ、たとえば、数値演算コプロセッサ、に加えて、1つ又は複数のCPU806を含み得る。
【0056】
CPU806に加えて、又はその代わりに、GPU808は、コンピューティング・デバイス800の1つ又は複数の構成要素を制御して本明細書に記載の方法及び/又はプロセスのうちの1つ又は複数を実行するためのコンピュータ可読命令のうちの少なくともいくつかを実行するように構成され得る。GPU808のうちの1つ又は複数は、統合型GPUでもよく(たとえば、CPU806のうちの1つ又は複数を有する、及び/或いは、GPU808のうちの1つ又は複数は、個別のGPUでもよい。実施例において、GPU808のうちの1つ又は複数は、CPU806のうちの1つ又は複数のCPUのコプロセッサでもよい。GPU808は、グラフィックス(たとえば、3Dグラフィックス)をレンダリングする又は汎用計算を実行するために、コンピューティング・デバイス800によって使用され得る。たとえば、GPU808は、GPUでの汎用計算(GPGPU:General-Purpose computing on GPU)のために使用され得る。GPU808は、数百又は数千のソフトウェア・スレッドを同時に処理する能力を有する数百又は数千のコアを含み得る。GPU808は、レンダリング・コマンド(たとえば、ホスト・インターフェイスを介して受信されるCPU806からのレンダリング・コマンド)に応答して出力画像の画素データを生成し得る。GPU808は、画素データ又は任意の他の適したデータ、たとえば、GPGPUデータ、を記憶するためのグラフィックス・メモリ、たとえば、ディスプレイ・メモリ、を含み得る。ディスプレイ・メモリは、メモリ804の一部として含まれ得る。GPU808は、並行して(たとえば、リンクを介して)動作する2つ以上のGPUを含み得る。リンクは、GPUを直接接続する(たとえば、NVLINKを使用して)ことができる、又はスイッチを介して(たとえば、NVSwitchを使用して)GPUを接続することができる。ともに結合されるとき、各GPU808は、出力の異なる部分の又は異なる出力の画素データ又はGPGPUデータ(たとえば、第1の画像の第1のGPU及び第2の画像の第2のGPU)を生成することができる。各GPUは、それ自体のメモリを含むことができる、又は他のGPUとメモリを共用することができる。
【0057】
CPU806及び/又はGPU808に加えて又はその代わりに、論理ユニット820は、コンピューティング・デバイス800の1つ又は複数の構成要素を制御して本明細書に記載の方法及び/又はプロセスのうちの1つ又は複数を実行するためのコンピュータ可読命令のうちの少なくともいくつかを実行するように構成され得る。実施例において、CPU806、GPU808、及び/又は論理ユニット820は、方法、プロセス及び/又はそれの部分の任意の組合せを別個に又はともに実行することができる。論理ユニット820のうちの1つ又は複数は、CPU806及び/又はGPU808のうちの1つ又は複数の部分でもよい及び/又はそれに統合することができ、及び/又は、論理ユニット820のうちの1つ又は複数は、個別の構成要素でもよい又は他の方法でCPU806及び/又はGPU808の外部でもよい。実施例において、論理ユニット820のうちの1つ又は複数は、CPU806のうちの1つ又は複数及び/又はGPU808のうちの1つ又は複数のコプロセッサでもよい。
【0058】
論理ユニット820の実例は、1つ又は複数の処理コア及び/又はその構成要素、たとえば、データ・プロセッシング・ユニット(DPU:Data Processing Unit)、テンソル・コア(TC:Tensor Core)、テンソル・プロセッシング・ユニット(TPU:Tensor Processing Unit)、画素ビジュアル・コア(PVC:Pixel Visual Core)、ビジョン・プロセッシング・ユニット(VPU:Vision Processing Unit)、グラフィックス・プロセッシング・クラスタ(GPC:Graphics Processing Cluster)、テクスチャ・プロセッシング・クラスタ(TPC:Texture Processing Cluster)、ストリーミング・マルチプロセッサ(SM:Streaming Multiprocessor)、木の走査ユニット(TTU:Tree Traversal Unit)、人工知能アクセラレータ(AIA:Artificial Intelligence Accelerator)、深層学習アクセラレータ(DLA:Deep Learning Accelerator)、演算論理ユニット(ALU:Arithmetic-Logic Unit)、特定用途向け集積回路(ASIC:Application-Specific Integrated Circuit)、浮動小数点ユニット(FPU:Floating Point Unit)、入力/出力(I/O)要素、周辺構成要素相互接続(PCI)又は周辺構成要素相互接続エクスプレス(PCIe)要素、及び/又は同類のものを含む。
【0059】
通信インターフェイス810は、有線及び/又はワイヤレス通信を含む、電子通信ネットワークを介してコンピューティング・デバイス800が他のコンピューティング・デバイスと通信することを可能にする1つ又は複数の受信器、送信器、及び/又は送受信器を含み得る。通信インターフェイス810は、いくつかの異なるネットワーク、たとえば、ワイヤレス・ネットワーク(たとえば、Wi-Fi、Z-Wave、ブルートゥース(登録商標)、ブルートゥース(登録商標)LE、ZigBee(登録商標)など)、有線ネットワーク(たとえば、イーサネット(登録商標)又はInfiniBandを介して通信する)、低電力ワイド・エリア・ネットワーク(たとえば、LoRaWAN、SigFoxなど)、及び/又はインターネット、のいずれかを介する通信を可能にするための構成要素及び機能性を含み得る。1つ又は複数の実施例において、論理ユニット820及び/又は通信インターフェイス810は、ネットワークを介して及び/又は相互接続システム802を介して受信されたデータを1つ又は複数のGPU808(たとえば、そのメモリ)に直接に送信するために、1つ又は複数のデータ・プロセッシング・ユニット(DPU)を含み得る。
【0060】
I/Oポート812は、それらのうちのいくつかはコンピューティング・デバイス800に組み込む(たとえば、統合する)ことができる、I/O構成要素814、プレゼンテーション構成要素818、及び/又は他の構成要素を含む他のデバイスに、コンピューティング・デバイス800が論理的に結合されることを可能にし得る。例示的I/O構成要素814は、マイクロフォン、マウス、キーボード、ジョイスティック、ゲーム・パッド、ゲーム・コントローラ、サテライト・ディッシュ、スキャナ、プリンタ、ワイヤレス・デバイスなどを含む。I/O構成要素814は、ユーザによって生成されるエア・ジェスチャ、音声、又は他の生理的入力を処理するナチュラル・ユーザ・インターフェイス(NUI:natural user interfac)を提供し得る。いくつかの事例において、入力は、さらに処理するために適切なネットワーク要素に送信され得る。NUIは、音声認識、スタイラス認識、顔認識、生体認識、画面上の及び画面付近両方でのジェスチャの認識、エア・ジェスチャ、頭部及び視標追跡、及びコンピューティング・デバイス800のディスプレイに関連するタッチ認識(さらに詳しく後述するような)の任意の組合せを実装し得る。コンピューティング・デバイス800は、ジェスチャ検出及び認識のための深度カメラ、たとえば、ステレオ・カメラ・システム、赤外線カメラ・システム、RGBカメラ・システム、タッチスクリーン技術、及びこれらの組合せを含み得る。加えて、コンピューティング・デバイス800は、動きの検出を可能にする加速度計又はジャイロスコープ(たとえば、慣性測定ユニット(IMU:inertia measurement unit)の一部としての)を含み得る。いくつかの実例において、加速度計又はジャイロスコープの出力は、没入型拡張現実又は仮想現実をレンダリングするためにコンピューティング・デバイス800によって使用され得る。
【0061】
電力供給装置816は、ハードワイヤード電力供給装置、バッテリ電力供給装置、又はその組合せを含み得る。電力供給装置816は、コンピューティング・デバイス800の構成要素が動作することを可能にするために、コンピューティング・デバイス800に電力を提供することができる。
【0062】
プレゼンテーション構成要素818は、ディスプレイ(たとえば、モニタ、タッチスクリーン、テレビジョン画面、ヘッドアップディスプレイ(HUD:heads-up-display)、他のディスプレイ・タイプ、又はその組合せ)、スピーカ、及び/又は他のプレゼンテーション構成要素を含み得る。プレゼンテーション構成要素818は、他の構成要素(たとえば、GPU808、CPU806、DPUなど)からデータを受信し、データを出力する(たとえば、画像、ビデオ、サウンドなどとして)ことができる。
【0063】
例示的データ・センタ
図9は、本開示の少なくとも1つの実施例において使用され得る例示的データ・センタ900を示す。データ・センタ900は、データ・センタ・インフラストラクチャ層910、フレームワーク層920、ソフトウェア層930、及び/又はアプリケーション層940を含み得る。
【0064】
図9に示すように、データ・センタ・インフラストラクチャ層910は、資源オーケストレータ912、グループ化された計算資源914、及びノード計算資源(「ノードC.R.」)916(1)~916(N)を含むことができ、そこで、「N」は、任意の完全な、正の整数を表す。少なくとも1つの実施例において、ノードC.R.916(1)~916(N)は、任意の数の中央処理装置(CPU)又は他のプロセッサ(DPU、アクセラレータ、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate array)、グラフィックス・プロセッサ又はグラフィックス・プロセッシング・ユニット(GPU)などを含む)、メモリ・デバイス(たとえば、ダイナミック・リードオンリ・メモリ)、記憶デバイス(たとえば、ソリッド・ステート又はディスク・ドライブ)、ネットワーク入力/出力(NW I/O:network input/output)デバイス、ネットワーク・スイッチ、仮想機械(VM)、電力モジュール、及び/又は冷却モジュールなどを含み得るが、これらに限定されない。いくつかの実施例において、ノードC.R.916(1)~916(N)のうちの1つ又は複数のノードC.R.は、前述の計算資源のうちの1つ又は複数を有するサーバに対応し得る。加えて、いくつかの実施例において、ノードC.R.916(1)~9161(N)は、1つ又は複数の仮想構成要素、たとえば、vGPU、vCPU、及び/又は同類のもの、を含み得る、及び/又は、ノードC.R.916(1)~916(N)のうちの1つ又は複数は、仮想機械(VM)に対応し得る。
【0065】
少なくとも1つの実施例において、グループ化された計算資源914は、1つ又は複数のラック(図示せず)に格納された別個のグループのノードC.R.916、或いは様々な地理的場所にあるデータ・センタに格納された多数のラック(やはり図示せず)を含み得る。グループ化された計算資源914内のノードC.R.916の別個のグループは、1つ又は複数のワークロードをサポートするために構成され得る又は割り当てられ得るグループ化された計算、ネットワーク、メモリ又はストレージ資源を含み得る。少なくとも1つの実施例において、CPU、GPU、DPU、及び/又は他のプロセッサを含むいくつかのノードC.R.916は、1つ又は複数のワークロードをサポートするための計算資源を提供するために、1つ又は複数のラック内にグループ化され得る。1つ又は複数のラックはまた、任意の数の電力モジュール、冷却モジュール、及び/又はネットワーク・スイッチを、任意の組合せで、含み得る。
【0066】
資源オーケストレータ912は、1つ又は複数のノードC.R.916(1)~916(N)及び/又はグループ化された計算資源914を構成又は他の方法で制御することができる。少なくとも1つの実施例において、資源オーケストレータ912は、データ・センタ900のためのソフトウェア設計インフラストラクチャ(SDI:software design infrastructure)管理エンティティを含み得る。資源オーケストレータ912は、ハードウェア、ソフトウェア、又はその何らかの組合せを含み得る。
【0067】
少なくとも1つの実施例において、
図9に示すように、フレームワーク層920は、ジョブ・スケジューラ932、構成マネージャ934、資源マネージャ936、及び/又は分散型ファイル・システム938を含み得る。フレームワーク層920は、ソフトウェア層930のソフトウェア932及び/又はアプリケーション層940の1つ若しくは複数のアプリケーション942をサポートするために、フレームワークを含み得る。ソフトウェア932又はアプリケーション942は、ウェブベースのサービス・ソフトウェア又はアプリケーション、たとえば、アマゾン・ウェブ・サービス、グーグル・クラウド及びMicrosoft Azureによって提供されるもの、をそれぞれ含み得る。フレームワーク層920は、大規模データ処理(たとえば、「ビッグ・データ」)のための分散型ファイル・システム938を使用し得るApache Spark(商標)(以下「Spark」)などのフリー及びオープン・ソース・ソフトウェア・ウェブ・アプリケーション・フレームワークのタイプでもよいが、これに限定されない。少なくとも1つの実施例において、ジョブ・スケジューラ932は、データ・センタ900の様々な層によってサポートされるワークロードのスケジューリングを容易にするために、Sparkドライバを含み得る。構成マネージャ934は、異なる層、たとえば、ソフトウェア層930と、大規模データ処理をサポートするためのSpark及び分散型ファイル・システム938を含むフレームワーク層920、を構成する能力を有し得る。資源マネージャ936は、分散型ファイル・システム938及びジョブ・スケジューラ932のサポートのためにマップされた又は割り当てられたクラスタ化された又はグループ化された計算資源を管理する能力を有し得る。少なくとも1つの実施例において、クラスタ化された又はグループ化された計算資源は、データ・センタ・インフラストラクチャ層910にグループ化された計算資源914を含み得る。資源マネージャ936は、資源オーケストレータ912と調整してこれらのマップされた又は割り当てられた計算資源を管理することができる。
【0068】
少なくとも1つの実施例において、ソフトウェア層930に含まれるソフトウェア932は、ノードC.R.916(1)~916(N)の少なくとも部分、グループ化された計算資源914、及び/又はフレームワーク層920の分散型ファイル・システム938によって使用されるソフトウェアを含み得る。1つ又は複数のタイプのソフトウェアは、インターネット・ウェブ・ページ検索ソフトウェア、電子メール・ウイルス・スキャン・ソフトウェア、データベース・ソフトウェア、及びストリーミング・ビデオ・コンテンツ・ソフトウェアを含み得るが、これらに限定されない。
【0069】
少なくとも1つの実施例において、アプリケーション層940に含まれるアプリケーション942は、ノードC.R.916(1)~916(N)の少なくとも部分、グループ化された計算資源914、及び/又はフレームワーク層920の分散型ファイル・システム938によって使用される1つ又は複数のタイプのアプリケーションを含み得る。1つ又は複数のタイプのアプリケーションは、任意の数のゲノミクス・アプリケーション、認知計算、並びに、トレーニング若しくは推論ソフトウェア、機械学習フレームワーク・ソフトウェア(たとえば、PyTorch、TensorFlow、Caffeなど)、及び/又は1つ又は複数の実施例と併せて使用される他の機械学習アプリケーションを含む、機械学習アプリケーションを含み得るが、これらに限定されない。
【0070】
少なくとも1つの実施例において、構成マネージャ934、資源マネージャ936、及び資源オーケストレータ912のうちのいずれかは、任意の技術的に可能な方式で取得される任意の量及びタイプのデータに基づいて任意の数及びタイプの自己書換え型アクションを実装することができる。自己書換え型アクションは、よくない可能性のある構成決定を行うこと及びデータ・センタの十分に活用されていない及び/又は実行の不十分な部分をおそらく回避することからデータ・センタ900のデータ・センタ・オペレータを解放し得る。
【0071】
データ・センタ900は、1つ又は複数の機械学習モデルをトレーニングする或いは本明細書に記載の1つ又は複数の実施例による1つ又は複数の機械学習モデルを使用して情報を予測する又は推論するために、ツール、サービス、ソフトウェア或いは他の資源を含み得る。たとえば、機械学習モデルは、データ・センタ900に関して前述されたソフトウェア及び/又は計算資源を使用するニューラル・ネットワーク・アーキテクチャによる重量パラメータの計算によって、トレーニングされ得る。少なくとも1つの実施例において、1つ又は複数のニューラル・ネットワークに対応するトレーニングされた又は配備された機械学習モデルは、たとえば、本明細書に記載のものに限定されない、1つ又は複数のトレーニング技法を介して計算された重量パラメータを使用することによって、データ・センタ900に関して前述された資源を使用する情報の推論又は予測のために使用され得る。
【0072】
少なくとも1つの実施例において、データ・センタ900は、前述の資源を使用するトレーニング及び/又は推論の実行のために、CPU、特定用途向け集積回路(ASIC)、GPU、FPGA、及び/又は他のハードウェア(若しくはそれに対応する仮想計算資源)を使用することができる。さらに、前述の1つ又は複数のソフトウェア及び/又はハードウェア資源は、情報の推論をユーザがトレーニング又は実行することを可能にするためのサービス、たとえば、画像認識、音声認識、又は他の人工知能サービス、として構成され得る。
【0073】
例示的ネットワーク環境
本開示の実施例の実装において使用するのに適したネットワーク環境は、1つ又は複数のクライアント・デバイス、サーバ、ネットワーク接続型ストレージ(NAS:network attached storage)、他のバックエンド・デバイス、及び/又は他のデバイス・タイプを含み得る。クライアント・デバイス、サーバ、及び/又は他のデバイス・タイプ(たとえば、各デバイス)は、
図8のコンピューティング・デバイス800の1つ又は複数のインスタンスで実装され得る- たとえば、各デバイスは、コンピューティング・デバイス800の類似の構成要素、特徴、及び/又は機能性を含み得る。加えて、バックエンド・デバイス(たとえば、サーバ、NASなど)が、実装される場合、バックエンド・デバイスは、データ・センタ900の一部として含まれ得、その実例は、
図9に関して本明細書でさらに詳述される。
【0074】
ネットワーク環境の構成要素は、有線、ワイヤレス、又はその両方でもよい、ネットワークを介して互いに通信し得る。ネットワークは、複数のネットワーク、又はネットワークのネットワークを含み得る。実例として、ネットワークは、1つ又は複数のワイド・エリア・ネットワーク(WAN)、1つ又は複数のローカル・エリア・ネットワーク(LAN)、1つ又は複数のパブリック・ネットワーク、たとえば、インターネット及び/又は公衆交換電話網(PSTN)、及び/又は1つ又は複数のプライベート・ネットワークを含み得る。ネットワークが、ワイヤレス電気通信ネットワークを含む場合、構成要素、たとえば、基地局、通信塔、又はアクセス・ポイントなどさえも(他の構成要素と同様に)、ワイヤレス接続を提供し得る。
【0075】
互換性のあるネットワーク環境は、1つ又は複数のピア・ツー・ピア・ネットワーク環境- サーバがネットワーク環境に含まれないことがある場合- と、1つ又は複数のクライアント・サーバ・ネットワーク環境- 1つ又は複数のサーバがネットワーク環境に含まれ得る場合- とを含み得る。ピア・ツー・ピア・ネットワーク環境では、サーバに関して本明細書に記載した機能性は、任意の数のクライアント・デバイスに実装され得る。
【0076】
少なくとも1つの実施例において、ネットワーク環境は、1つ又は複数のクラウドベースのネットワーク環境、分散された計算環境、その組合せなどを含み得る。クラウドベースのネットワーク環境は、フレームワーク層、ジョブ・スケジューラ、資源マネージャ、並びに、1つ又は複数のコア・ネットワーク・サーバ及び/又はエッジ・サーバを含み得る、サーバのうちの1つ又は複数に実装された分散型ファイル・システムを含み得る。フレームワーク層は、ソフトウェア層のソフトウェア及び/又はアプリケーション層の1つ又は複数のアプリケーションをサポートするために、フレームワークを含み得る。ソフトウェア又はアプリケーションは、それぞれ、ウェブベースのサービス・ソフトウェア又はアプリケーションを含み得る。実施例において、クライアント・デバイスのうちの1つ又は複数は、ウェブベースのサービス・ソフトウェア又はアプリケーションを使用し得る(たとえば、1つ又は複数のアプリケーション・プログラミング・インターフェイス(API:application programming interface)を介してサービス・ソフトウェア及び/又はアプリケーションにアクセスすることによって)。フレームワーク層は、たとえば大規模データ処理(たとえば、「ビッグ・データ」)のための分散型ファイル・システムを使用し得る、フリー及びオープン・ソース・ソフトウェア・ウェブ・アプリケーション・フレームワークのタイプでもよいが、これに限定されない。
【0077】
クラウドベースのネットワーク環境は、本明細書に記載の計算及び/又はデータ・ストレージ機能(又は1つ若しくは複数のその部分)の任意の組合せを実施するクラウド計算及び/又はクラウド・ストレージを提供し得る。これらの様々な機能のいずれも、セントラル又はコア・サーバ(たとえば、州、領域、国、世界に分散され得る1つ又は複数のデータ・センタなどの)から複数の場所に分散され得る。ユーザ(たとえば、クライアント・デバイス)への接続が、エッジ・サーバに比較的近い場合、コア・サーバは、機能性の少なくとも一部分をエッジ・サーバに任じ得る。クラウドベースのネットワーク環境は、プライベート(たとえば、単一の組織に限定される)でもよく、パブリック(たとえば、多数の組織に利用可能)、及び/又はその組合せ(たとえば、ハイブリッド・クラウド環境)でもよい。
【0078】
クライアント・デバイスは、
図8に関して本明細書に記載の例示的コンピューティング・デバイス800の構成要素、特徴、及び機能性のうちの少なくともいくつかを含み得る。実例として、及び限定ではなく、クライアント・デバイスは、パーソナル・コンピュータ(PC)、ラップトップ・コンピュータ、モバイル・デバイス、スマートフォン、タブレット・コンピュータ、スマート・ウォッチ、ウェアラブル・コンピュータ、パーソナル・デジタル・アシスタント(PDA:Personal Digital Assistant)、MP3プレーヤ、仮想現実ヘッドセット、全地球測位システム(GPS)又はデバイス、ビデオプレーヤ、ビデオカメラ、監視デバイス又はシステム、車両、船、飛行船、仮想機械、ドローン、ロボット、ハンドヘルド通信デバイス、病院デバイス、ゲーミング・デバイス又はシステム、娯楽システム、車両コンピュータ・システム、組み込み型システム・コントローラ、リモート制御、器具、民生用電子デバイス、ワークステーション、エッジ・デバイス、これらの描写されたデバイスの任意の組合せ、或いは任意の他の適切なデバイスとして実施され得る。
【0079】
本開示は、コンピュータ又は他の機械、たとえば、パーソナル・データ・アシスタント又は他のハンドヘルド・デバイス、によって実行されている、プログラム・モジュールなどのコンピュータ実行可能命令を含む、コンピュータ・コード又は機械使用可能命令との一般的関連において説明され得る。一般に、ルーティン、プログラム、オブジェクト、構成要素、データ構造などを含む、プログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ・タイプを実装するコードを指す。本開示は、ハンドヘルド・デバイス、民生用電子機器、汎用コンピュータ、より専門的コンピューティング・デバイスなどを含む、様々なシステム構成において実施され得る。本開示はまた、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散型計算環境において実施され得る。
【0080】
本明細書では、2つ以上の要素に関する「及び/又は」の記述は、1つのみの要素、又は要素の組合せを意味すると解釈されるべきである。たとえば、「要素A、要素B、及び/又は要素C」は、要素Aのみ、要素Bのみ、要素Cのみ、要素A及び要素B、要素A及び要素C、要素B及び要素C、或いは要素A、B、及びCを含み得る。加えて、「要素A又は要素Bのうちの少なくとも1つ」は、要素Aのうちの少なくとも1つ、要素Bのうちの少なくとも1つ、或いは要素Aのうちの少なくとも1つ及び要素Bのうちの少なくとも1つを含み得る。さらに、「要素A及び要素Bのうちの少なくとも1つ」は、要素Aのうちの少なくとも1つ、要素Bのうちの少なくとも1つ、或いは要素Aのうちの少なくとも1つ及び要素Bのうちの少なくとも1つを含み得る。
【0081】
本開示の主題は、法的要件を満たすために、本明細書に記載の特異性を有して説明されている。しかしながら、その説明自体は、本開示の範囲を限定することを意図していない。そうではなくて、本発明者により、他の現在又は未来の技術と併せて、本文書に記載されているものと類似の異なるステップ又はステップの組合せを含むために、本請求の主題は他のやり方でも実施され得ることが企図されている。さらに、「ステップ」及び/又は「ブロック」という用語が、用いられる方法の異なる要素を含意するために、本明細書で使用され得るが、それらの用語は、個々のステップの順番が明示的に記載されていない限り及びそのように記載されているときを除いて、本明細書に記載の様々なステップの間の任意の特定の順番を暗示するものとして解釈されるべきではない。
【外国語明細書】