IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エヌビディア コーポレーションの特許一覧

特表2024-530909信頼できる送信のためのビデオ圧縮技法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-08-27
(54)【発明の名称】信頼できる送信のためのビデオ圧縮技法
(51)【国際特許分類】
   H04N 21/23 20110101AFI20240820BHJP
   H04N 21/24 20110101ALI20240820BHJP
   H04N 19/503 20140101ALI20240820BHJP
【FI】
H04N21/23
H04N21/24
H04N19/503
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024505454
(86)(22)【出願日】2022-07-08
(85)【翻訳文提出日】2024-01-29
(86)【国際出願番号】 US2022036476
(87)【国際公開番号】W WO2023009291
(87)【国際公開日】2023-02-02
(31)【優先権主張番号】17/365,669
(32)【優先日】2021-07-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.BLUETOOTH
(71)【出願人】
【識別番号】501450960
【氏名又は名称】エヌビディア コーポレーション
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ウェイン、ベンジェミン トーマス
(72)【発明者】
【氏名】ローズ、エイミー
(72)【発明者】
【氏名】ウッダード、アンドリュー ジェイムズ
【テーマコード(参考)】
5C159
5C164
【Fターム(参考)】
5C159MA01
5C159PP05
5C159PP06
5C159UA02
5C159UA05
5C159UA33
5C164FA22
5C164GA03
5C164SA32S
5C164SB01S
5C164SB41P
5C164SB46P
5C164YA22
5C164YA24
(57)【要約】
時間敏感データの信頼できる送信のためのシステム及び方法が提示される。特に、様々な実施例は、シーケンスの個々のインスタンスがそのシーケンス中の前のインスタンスからの差分を表す、圧縮された連続データの生成を提供する。送信される必要があるデータの量を低減するために、(個々のビデオ・フレームなどの)データのインスタンスは、参照として前のビデオ・フレームを使用し、ピクセル値が参照フレームとは異なる、ピクセル・ロケーションのためのデータのみを送出して、提供され得る。参照フレームは、ドロップされた、不完全な、又は破損したフレームの影響を最小限に抑えるために、前に受信された及び正常に復号されたフレームを含むことができる。データ送信要件をさらに低減するために、所与のフレームのために送信されるべきデータの最小量を表し得るものなど、現在フレームにとって最適であると決定された参照フレームが選択され得る。
【特許請求の範囲】
【請求項1】
クライアント・デバイスに、表示されるべきビデオ・フレームのシーケンス中の第1のビデオ・フレームのための第1のビデオ・フレーム・データを送出するステップと、
前記クライアント・デバイスに、前記シーケンス中の第2のビデオ・フレームのための第2のビデオ・フレーム・データを送出するステップであって、前記第2のビデオ・フレーム・データが、前記第1のビデオ・フレームに関するピクセル・データの変化を含み、前記クライアント・デバイスが、前記第1のビデオ・フレーム・データと前記第2のビデオ・フレーム・データとを使用する表示のために前記第2のビデオ・フレームを生成することを可能にされる、ステップと、
前記クライアント・デバイスが前記第2のビデオ・フレーム・データを正常に受信したことを示す確認応答が受信されたと決定するステップと、
前記クライアント・デバイスに、前記シーケンス中の第3のビデオ・フレームのための第3のビデオ・フレーム・データを送出するステップであって、前記第3のビデオ・フレーム・データが、前記第1のビデオ・フレーム又は前記第2のビデオ・フレームに関する前記ピクセル・データの変化を含む、ステップと
を含む、コンピュータ実装方法。
【請求項2】
1つ又は複数の最適化パラメータに少なくとも部分的に基づいて、前記第3のビデオ・フレーム・データ中に、前記第1のビデオ・フレームに関する変化を含めるべきなのか前記第2のビデオ・フレームに関する変化を含めるべきなのかを決定するステップ
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記最適化パラメータが、前記変化のためのデータ・サイズ、変化の数、送信の最近性、又はネットワーク性能状態のうちの少なくとも1つに関係する、請求項2に記載のコンピュータ実装方法。
【請求項4】
前記第1のビデオ・フレーム・データと前記第2のビデオ・フレーム・データとをクライアント参照バッファに記憶するステップであって、前記第1のビデオ・フレーム・データと前記第2のビデオ・フレーム・データの両方が、前記第3のビデオ・フレーム・データを決定するための参照フレームとして前記クライアント・デバイスによって使用されるために利用可能である、ステップ
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記クライアント・デバイスから、前記クライアント・デバイスが前記第3のビデオ・フレーム・データを正常に受信したことを示す確認応答を受信するステップと、
前記シーケンス中の1つ又は複数の後続のビデオ・フレームのための参照フレームとして使用するために、前記第1のビデオ・フレーム及び前記第2のビデオ・フレームとともに、前記第3のビデオ・フレームが利用可能になることを引き起こすステップと
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記クライアント・デバイスから、前記クライアント・デバイス上のクライアント参照バッファから前記第1のビデオ・フレームを除去するための要求を受信するステップと、
前記クライアント・デバイスに、前記第1のビデオ・フレームが前記シーケンス中の1つ又は複数の後続のビデオ・フレームのための参照フレームとしての考慮から除去されるべきであり、前記クライアント参照バッファから除去され得るという確認応答を送出するステップと
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項7】
前記クライアント・デバイス上のクライアント参照バッファ中のデータの最近性又は多様性に少なくとも部分的に基づいて、前記クライアント参照バッファから、前記第1のビデオ・フレーム・データと前記第2のビデオ・フレーム・データと前記第3のビデオ・フレーム・データとのうちの少なくとも1つを除去することを決定するステップ
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項8】
前記クライアント・デバイスに送出するステップの前に前記第1のビデオ・フレーム・データと前記第2のビデオ・フレーム・データと前記第3のビデオ・フレーム・データとを符号化するステップ
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項9】
クライアント・デバイスにビデオ・データのストリームを送信するためのストリーミング・サーバと、
前記ストリーム中に含まれるべきビデオ・フレーム・データのシーケンスを符号化するためのエンコーダと
を備える、ビデオ・ストリーミング・システムであって、前記エンコーダは、少なくとも部分的に、
前記ビデオ・ストリーム中の現在フレームのために使用すべき参照フレームであって、ビデオ・データが前記クライアント・デバイスによって受信されたことを確認応答された、参照バッファに記憶された、1つ又は複数の確認されたフレームのうちの1つの確認されたフレームに対応する参照フレームを選択し、
前記選択された参照フレームに対するピクセル・データの変化を含む、前記現在フレームのためのビデオ・データを符号化する
ことによって前記シーケンスを符号化するためのものである、ビデオ・ストリーミング・システム。
【請求項10】
前記エンコーダがさらに、少なくとも1つの選択基準を使用して前記参照フレームを選択するためのものである、請求項9に記載のビデオ・ストリーミング・システム。
【請求項11】
前記少なくとも1つの選択基準が、データ・サイズ、変化の数、送信の最近性、又はネットワーク性能状態のうちの少なくとも1つを含む、請求項9に記載のビデオ・ストリーミング・システム。
【請求項12】
前記エンコーダはさらに、前記クライアント・デバイスから、前記現在フレームが前記クライアント・デバイスによって適切に受信され、復号されたという確認応答を受信するためのものであり、前記現在フレームのためのデータが、追加の確認されたフレームとして前記参照バッファに記憶されるべきである、請求項9に記載のビデオ・ストリーミング・システム。
【請求項13】
前記エンコーダが、前記参照バッファから、参照フレームとして使用するためにもはや利用可能でないことが示された1つ又は複数の確認されたフレームを除去するためのものである、請求項9に記載のビデオ・ストリーミング・システム。
【請求項14】
前記エンコーダは、前記ビデオ・データが前記クライアント・デバイスに送信される前に、前記ビデオ・データに前方誤り訂正を適用するためのものである、請求項9に記載のビデオ・ストリーミング・システム。
【請求項15】
前記システムが、
シミュレーション動作を実施するためのシステム、
自律機械アプリケーションをテスト又は検証するためのシミュレーション動作を実施するためのシステム、
グラフィカル出力をレンダリングするためのシステム、
深層学習動作を実施するためのシステム、
エッジ・デバイスを使用して実装されるシステム、
1つ又は複数の仮想機械(VM)を組み込んだシステム、
少なくとも部分的にデータ・センタにおいて実装されるシステム、或いは
少なくとも部分的にクラウド・コンピューティング・リソースを使用して実装されるシステム
のうちの少なくとも1つを備える、請求項10に記載のビデオ・ストリーミング・システム。
【請求項16】
1つ又は複数のプロセッサによって実行された場合、前記1つ又は複数のプロセッサに、
ビデオ・ストリーム中の現在フレームのために使用すべき参照フレームであって、ビデオ・データがクライアント・デバイスによって受信されたことを確認応答された、参照バッファに記憶された、1つ又は複数の確認されたフレームのうちの1つの確認されたフレームに対応する参照フレームを選択させ、
前記選択された参照フレームに対するピクセル・データの変化を含む、前記現在フレームのためのビデオ・データを符号化させる
命令を含む非一時的コンピュータ可読記憶媒体。
【請求項17】
エンコーダがさらに、少なくとも1つの選択基準を使用して前記参照フレームを選択するためのものである、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【請求項18】
前記少なくとも1つの選択基準が、データ・サイズ、変化の数、送信の最近性、又はネットワーク性能状態のうちの少なくとも1つを含む、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【請求項19】
前記エンコーダはさらに、前記クライアント・デバイスから、前記現在フレームが前記クライアント・デバイスによって適切に受信され、復号されたという確認応答を受信するためのものであり、前記現在フレームのためのデータが、追加の確認されたフレームとして前記参照バッファに記憶されるべきである、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【請求項20】
前記エンコーダが、前記参照バッファから、参照フレームとして使用するためにもはや利用可能でないことが示された1つ又は複数の確認されたフレームを除去するためのものである、請求項16に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、すべての目的のために、その全体が本明細書に組み込まれる、2021年7月30日に出願された、「VIDEO COMPRESSION TECHNIQUES FOR RELIABLE TRANSMISSION」と題する米国非仮特許出願第17/365,669号の優先権を主張する。
【背景技術】
【0002】
データ・ストリーミングは、様々な異なる産業及びアプリケーションのためにますます重要になっている。オンライン・ゲーミングなど、いくつかのアプリケーションでは、ゲームプレイに悪影響を及ぼすレイテンシを回避するために、ゲーム又はビデオ・データのストリーミングが低レイテンシを有することが重要であり得る。従来のビデオ圧縮及びストリーミング技術を使用すると、シーケンス中のビデオ・フレームのためのデータはすべて、シーケンス中の他のフレームに依存しないキー・フレーム(たとえば、「iフレーム」)の場合以外、そのシーケンス中の直前のフレームに関する変化を参照し得る。前のフレームへのこの依拠は、フレームがドロップされたとき、たとえば、その場合、そのシーケンス中の後続のフレームが、適切なフレームを復号するために必要とされる変化情報の一部を逃していることになるので、問題を生じることがある。このフレーム・ドロップを補正するために別のキー・フレームが送出され得るが、新しいキー・フレームを生成する際に経験されるいくらかのレイテンシ、並びに別の比較的大きいキー・フレームを送信するために必要とされる余分の時間及び帯域幅があることになる。
【0003】
本開示による様々な実施例が、図面を参照しながら説明される。
【図面の簡単な説明】
【0004】
図1A】少なくとも1つの実施例による、例示的な画像シーケンスのための画像データを示す図である。
図1B】少なくとも1つの実施例による、例示的な画像シーケンスのための画像データを示す図である。
図1C】少なくとも1つの実施例による、例示的な画像シーケンスのための画像データを示す図である。
図2A】第1のビデオ・シーケンス中のフレームのフローを示す図である。
図2B】第1のビデオ・シーケンス中のフレームのフローを示す図である。
図3A】少なくとも1つの実施例による、第2のビデオ・シーケンス中のフレームのスローを示す図である。
図3B】少なくとも1つの実施例による、第2のビデオ・シーケンス中のフレームのスローを示す図である。
図3C】少なくとも1つの実施例による、第2のビデオ・シーケンス中のフレームのスローを示す図である。
図3D】少なくとも1つの実施例による、第2のビデオ・シーケンス中のフレームのスローを示す図である。
図4】少なくとも1つの実施例による、ビデオ符号化及び送信パイプラインを示す図である。
図5A】少なくとも1つの実施例による、1つ又は複数の後続のフレーム差分を算出するための参照フレームを動的に決定するためのプロセスを示す図である。
図5B】少なくとも1つの実施例による、1つ又は複数の後続のフレーム差分を算出するための参照フレームを動的に決定するためのプロセスを示す図である。
図6】少なくとも1つの実施例による、画像データを符号化し、送信するためのシステムの構成要素を示す図である。
図7A】少なくとも1つの実施例による、推論及び/又は訓練論理(training logic)を示す図である。
図7B】少なくとも1つの実施例による、推論及び/又は訓練論理を示す図である。
図8】少なくとも1つの実施例による、例示的なデータ・センタ・システムを示す図である。
図9】少なくとも1つの実施例による、コンピュータ・システムを示す図である。
図10】少なくとも1つの実施例による、コンピュータ・システムを示す図である。
図11】1つ又は複数の実施例による、グラフィックス・プロセッサの少なくとも一部分を示す図である。
図12】1つ又は複数の実施例による、グラフィックス・プロセッサの少なくとも一部分を示す図である。
図13】少なくとも1つの実施例による、先進コンピューティング・パイプラインのための例示的なデータ・フロー図である。
図14】少なくとも1つの実施例による、先進コンピューティング・パイプラインにおいて機械学習モデルを訓練し、適応させ、インスタンス化し、導入するための例示的なシステムのためのシステム図である。
図15A】少なくとも1つの実施例による、機械学習モデルを訓練するためのプロセスのためのデータ・フロー図である。
図15B】少なくとも1つの実施例による、事前訓練されたアノテーション・モデルを用いてアノテーション・ツールを拡張するためのクライアントサーバ・アーキテクチャを示す図である。
【発明を実施するための形態】
【0005】
様々な実施例による手法が、連続又は差分データの生成、圧縮、及び/又は符号化を提供することができる。特に、様々な実施例は、シーケンスの個々のインスタンスがそのシーケンス中の1つ又は複数の前のインスタンスからの差分を表し得る、圧縮された連続データの生成を提供する。これは、たとえば、限定はしないが、ビデオ・シーケンス中のフレームを含み得る。少なくともいくつかのインスタンス又はアプリケーションでは、レイテンシは重要であるか、さらには重大であり得る。そのようなアプリケーションのために送信される必要があるデータの量を低減するために、データは、様々な圧縮技法のいずれかを使用して圧縮され得る。1つのそのような技法は、初期ビデオ・フレーム(又は他のデータ・インスタンス)を送出することであり、初期ビデオ・フレームは、そのビデオ・フレーム中の各ピクセル・ロケーションのためのピクセル値など、そのフレームのためのすべての関連するデータを含む。次いで、後続のフレームは、参照又は参照フレームとして初期ビデオ・フレームを使用し、ピクセル値が参照フレームとは異なる、ピクセル・ロケーションのためのデータのみを送出して、提供され得る。様々な実施例では、参照フレームは、ドロップされた、不完全な、又は破損したフレームの影響を最小限に抑えるために、シーケンス中の直前のフレームではなく、前に受信された及び正常に復号されたことを確認されたフレームに対応することができる。データ送信要件をさらに低減するために、たとえば、ローカル・デバイス上にキャッシュされ得るいくつかの前に検証された又は確認されたフレームのうちの1つに関して、差分が計算され得る。少なくとも1つの実施例では、差分は、いくつかの潜在的参照フレームの各々に関して現在フレームのために計算又は推定され得る。次いで、送信されるべき差分データの最小量、或いは復号又はレンダリングするための処理の最小量を表し得るものなど、現在フレームにとって「最適」であると決定された参照フレームが選択され得る。可能な参照フレームのセットは、確認応答メッセージが受信側デバイスから受信された場合など、新しいフレームが正常に検証又は確認されたとき、更新され得る。
【0006】
少なくとも1つの実施例では、画像生成システムは、画像又はビデオ・フレームのそのようなシーケンスを生成することができ、それは、順次プレイされたとき、アニメーション又はゲームプレイのシーンなど、コンテンツのシーンを提示することになる。各個々の画像では、静的又は動的であり得る前景物体と背景物体の両方を含み得るものなど、表される様々な物体があり得る。それらの物体のいずれかのロケーション、サイズ、及び配向が、静的なのか動的なのかにかかわらず、画像のための、視点又はズーム・レベルなど、ファクタを決定するために使用される仮想カメラの動きに少なくとも部分的に基づいて変化し得る。そのような画像又はビデオ・シーケンスでは、ビュー、ロケーション、サイズ、及び配向のこれらの変化は、それらの物体を表すために使用される個々のピクセルの変化のセットと見なされ得る。フレーム間のこれらの変化は、最後にいくつかの実施例では、ピクセル・データの差分と見なされ得る。
【0007】
オンライン又はリアルタイムアプリケーション又は使用事例では、これらのビデオ・シーケンスは、ビデオ・ストリーミングなどの技法を使用して配信され得る。ムービーのためのストリーミング・ビデオなどのアプリケーションでは、遅延又はレイテンシは、ユーザにとって迷惑であり得るが、そのユーザがビデオを視聴し、楽しむことを実質的に妨げないことがある。しかしながら、上述のように、他のタイプのビデオ・ストリーミングでは、著しいレイテンシが、エクスペリエンスの楽しみを低減するか、さらには、許容できないエクスペリエンスを生じ得る。たとえば、ライブ・スポーツ・イベントのストリーミングは、視聴者が、たとえば、ビデオ・フィードに関する問題から生じる、ライブストリーム中のいくつかのイベントを逃すこと又はそれらのイベントの視聴における遅延を有することを希望しないことがあるので、少なくともいくぶんレイテンシ敏感であり得る。ビデオ会議などのアプリケーションでは、著しい遅延は、議論の価値又は影響を低減し得る。オンライン・ゲーミングなどのアプリケーションでは、著しいレイテンシ問題は、プレーヤが、長期間にわたってゲームにおいて何が起きているかを効果的に決定することができない場合、プレーヤが負けること又は著しく不利な状況になることを生じ得るので、著しいことがある。ライブ・ビデオ・ストリームに少なくとも部分的に基づいて物理的決定が行われ得るロボティクス又は自律運転などのアプリケーションでは、誤ったアクションがとられること、又は所望のアクションがとられないことを生じるレイテンシは、ひどい結果を有することがある。これら及び他のそのようなアプリケーション又は使用事例では、受信されるデータを単にバッファし、キャッチアップすべきフレームを待つこと又は高信頼トランスポートを使用することによってフレーム損失又は破損に対処することは、十分でないことがある。そのような手法から生じるレイテンシの増加は、オンライン・ゲームの対話性を低くするか、又は、自動化アプリケーションをより遅くし、その反応性を低くすることなど、アプリケーションに悪影響を及ぼすことがある。これらのアプリケーション及び使用事例のうちの少なくともいくつかにとって、データ損失の影響を制限することが可能であることが望ましいことがある。
【0008】
一実例として、ビデオ・シーケンスのフレームに対応し得る、図1Aの初期画像フレーム100について考える。説明を簡単にするために、この初期フレームは、18×18ピクセルのアレイを含む低解像度画像における、塗りつぶしの白い背景の前の塗りつぶしの黒い物体102を示す。この初期画像を送信するために、ピクセル・データ(すなわち、各ピクセル・ロケーションにおいて表示されるべき色)が、すべての324個のピクセルについて送信されなければならない。図1Aはまた、そのシーケンス中の後続のフレーム110を示し、後続のフレーム110は、わずかに異なるロケーションにおける同じ黒い物体102を示す。画像圧縮がない場合、この後続のフレーム110を適切にレンダリング及び表示するために、この場合も、この後続のフレーム中のすべての324個のピクセルのためのピクセル・データを送信することが必要であろう。
【0009】
送信されるべきデータの量を低減するために、シーケンス中の直前のフレームに関する変化のみを含む1つ又は複数のデータ圧縮技法が使用され得る。たとえば、図1Bのオーバーレイされたフレーム120について考える。初期フレーム100と後続のフレーム110との間の比較が行われ得、これは、白い背景ピクセルの多くが白いままであり、物体に対応するピクセル124のうちのいくつかが黒いままであることを示す。値が変化した、ピクセルの2つの領域がある。ピクセルが、初期画像において黒であったが、後続の画像110において白い背景ピクセルに変化した、第1の領域122がある。物体の現在ロケーションを表すために白い背景ピクセルが黒いピクセルに変化する、第2の領域126がある。後続の画像110のために送出されるべきデータの量を低減するために、初期画像100に対する変化130をもつピクセルのみを表すデータが送出され得る。言い換えれば、後続のフレーム中の異なる値をもつ46個のピクセルのためのデータは、後続のフレームのために送信され得、残りの278個のピクセルのためのピクセル・データは、保持され、初期フレーム100から使用され得る。色の変動、又はアンチエイリアシングなどの態様を無視するこの単純な実例でも、データ転送における著しい低減が取得され得る。
【0010】
しかしながら、そのような方式が誤りなしに機能するために、シーケンス中の各フレームは、それがシーケンス中の後続のフレームのための基礎として働くとき、完全に受信され、正確に復号される必要があり得る。フレームがドロップされた場合、これは、ビデオ・シーケンスの視覚的品質に影響を及ぼすことがあるデータの損失を生じることがあるか、又はフレームが適切に復号されることを妨げることがある。一実例として、図2A及び図2Bのビデオ・シーケンスについて考える。図2Aのフレーム200は、例示的なビデオ・シーケンス202に属する。このシーケンス中の初期フレームは、そのフレーム中のすべてのピクセルのためのデータを含むiフレーム(A)である。上述のように、iフレーム(又は他のタイプのキー・フレーム)は、シーケンス中の前のフレームに依存せず、完全なビデオ・フレーム又は画像として独立することができる。後続のフレーム(B)、ここではpフレーム(又は直前のフレームからの進行を表す「進行」フレーム)は、任意の他の関連するタイプの依存するフレーム又は画像データ表現も使用され得るが、iフレームAに依存するか、又は戻ってiフレームAを参照することができ、したがって、pフレームBのために送信されるデータは、その値がiフレームA中の値に関して変化した(又は少なくとも最小量の差で変化した)ピクセルのためのデータのみを含む。pフレームBの左下コーナーにおける小さいボックスは、そのフレームが、戻ってiフレームAを参照することを示し、iフレームAに関する差のためのデータを含む。この例示的なシーケンス202において示されているように、各後続のフレームは、戻って直前のフレームを参照し、したがって、直前のフレームに関する変化のみを含む。
【0011】
しかしながら、ビデオ・シーケンス202中のフレームのうちの1つ又は複数のためのデータ(たとえば、1つ又は複数のパケット)がドロップされたか、部分的に受信されたか、破損したか、或いは場合によっては適切な画像又はビデオ・フレームを復号するために使用されることが不可能であり得ることが起こり得る。図示のように、図2Bのビデオ・シーケンス202中で受信されたフレーム250では、pフレームCは、完全に及び正確に受信されなかった。図示のように、逃したpフレームCに依存するpフレームDは、その場合、pフレームCの変化を反映することが可能でないことになる。良くても、フレームB及びCが極めて類似していない限り、これは、ビデオ信号中に何らかのジャーキネス又はノイズを生じることになるが、最悪の場合、これは、pフレームDのためのビデオ・フレームが適切に復号されること、及び表示のために提供されることが不可能であることを生じ得る。同様に、pフレームEなどの後続のフレームは、この失われた情報を回復することが不可能であることになり、少なくとも部分的に、pフレームCのための失われた変化データに基づく表示されるビデオに関する問題を継続し得る。この実例においてビデオ・ストリームを送出するサーバが、pフレームCのための確認応答を受信しない場合、サーバは、データの損失から回復するために新しいiフレームFが送信される必要があると決定することができる。他の実例では、シーケンスを受信するクライアントが、フレームがドロップされたことを了解し得、新しいiフレームを要求し得る。新しいiフレームの送信は、データが失われなかったかのようにビデオが回復することを可能にするが、新しいiフレームの生成は、いくらかの時間をとり、新しいiフレームのための比較的大きい量のデータの送信もいくらかの時間(及び追加の帯域幅)をとることがあり、したがって、ドロップされたフレームと送出されている新しいiフレームFとの間にいくらかの遅延があることになる。時間制約型、又は少なくともレイテンシ敏感であるアプリケーションでは、そのような遅延又はレイテンシは、前に説明されたように、著しい悪影響を有することがある。
【0012】
いくつかの従来の手法は、シーケンス又はカデンス(cadence)中のフレームが、予想される時間ウィンドウ内に受信されなかったというクライアント側決定に依拠する。たとえば、システムが、60FPSなど、あるフレーム・レートにおいて稼働している場合、クライアント・デバイスは、ビデオ・シーケンス中の次のフレームがネットワーク中から受信されることをいつ予想するべきであるかを近似的に知ることになる。わずかな調整で、クライアント・デバイスは、所与のフレームが到着するのをどのくらいの時間の間待つべきであるかを決定することができる。フレームがその時間期間内に到着しない場合、多くの状況について、そのフレームのためのデータが失われることが仮定され得る。しかしながら、そのような手法は、概して、サーバにその情報を戻し、サーバにそのデータを処理させ、次いで、結果として、新しい、更新された、又は追加のデータを送出させる際に、いくらかのラグがあるので、極めて費用がかかることがある。さらに、ストリームがクライアントによって無効にされた場合、そのポイントの後に受信された又は受信されることになる後続の進行フレームは、無効であることになり、したがって、クライアントは、現在のポイントからビデオ・ストリームを効果的に再開するために、別のiフレームが受信されるまで待たなければならないことになる。
【0013】
いくつかの従来の手法は、データ送信中にパケット損失の影響を最小限に抑えようと試みるために、何らかのタイプの前方誤り訂正(FEC:forward error correction)を利用する。FECは、メディア・サーバなど、送信のソースに冗長データを効果的に送出させ、それにより、クライアント・デバイスなど、送信の受信機は、受信された及び誤りのないデータの部分のみを利用することができる。そのような手法は、クライアントがこの余分の又は冗長なデータを使用して、逃していたデータの少なくとも一部を再構築することを可能にすることができる。限られたデータ損失のために、クライアントは、(1つ又は複数の)失われたパケットを受信することなしに完全に回復することが可能であり得る。しかしながら、そのような手法は、この冗長データのために追加の帯域幅を必要とし、回復を可能にするにはその損失が十分小さくない場合、依然としてパケット損失を受けやすいので、そのような手法は最適でない。
【0014】
したがって、様々な実施例による手法は、データ損失又は破損に関するこれら及び他のそのような問題のうちの少なくともいくつかを回避するようなやり方で、ビデオ・シーケンス又は他のそのようなデータを圧縮又は符号化することができる。そのような手法は、特に、H.264、HEVC、VP9、FLV、又はWEBMなどの符号化フォーマットに少なくとも部分的に基づき得るような、修正された圧縮手法を利用することができる。図3Aは、様々な実施例による、送信され得る例示的なビデオ・シーケンス302のフレーム300の初期セットを示す。この実例では、iフレームAは、少なくとも、このシーケンス中に、参照すべき又はそれから依存すべき前のフレームがないので、このシーケンス中の第1のフレームとして送信される。このiフレームは、フレーム中の各ピクセルのための値を含む、画像データの完全セットを含むことができる。シーケンス302中の次のフレーム、ここではpフレームBは、図2Aに関して説明されたシーケンスと同様に、前のフレームAに関する変化のためのデータを含むことができる。しかしながら、この実例では、このシーケンスを送信するサーバ(又は他のそのようなソース)は、pフレームBが適切に及び完全に受信及び復号されたという確認応答をまだ受信していないことがある。したがって、サーバは、直前のフレームBに関する変化を含むために、シーケンス中の次のフレーム、ここではpフレームCのためのデータを生成しないが、代わりに、最後の確認応答された「良好な」フレーム、ここではiフレームAに関する変化を含むためにpフレームCのためのデータを生成することを決定し得る。このようにして、pフレームCは、pフレームCがpフレームBに関する変化のみを反映した場合よりも多くの送信されるべきデータを伴い得るが、pフレームCのためのデータは、中間のpフレームBがドロップされた又は破損した場合でも、pフレームCが完全に及び正確に復号及び表示されることを可能にすることになる。同様に、この実例における後続のpフレームDも、最後の確認応答されたフレームAに関する変化のためのデータを伴うことができ、したがって、フレームDは、フレームB及び/又はCがドロップされた又は破損した場合でも、顕著な追加されたレイテンシなしに、適切に表示され得る。
【0015】
この実例では、確認応答(又は「ack」)は、pフレームBのために、少なくともpフレームDの生成の後に、受信される。図示のように、次のフレーム(pフレームE)は、次いで、最後の確認応答された良好なフレームに関する変化を表す、送信することを決定されたデータを有することができ、最後の確認応答された良好なフレームは、図3Bに示されているように、今ではpフレームBである。データが、pフレームFのために送信することを決定される前に、フレームC、D、又はEのための確認応答が受信されない場合、pフレームFも、最後の確認応答されたフレームBに関する変化を表すデータを有することができる。しかしながら、フレームFのためのデータが決定される前に、フレームC、D、又はEのための確認応答が受信された場合、そのデータは、その場合、代わりに、確認応答が受信されたそれらのフレームのうち(シーケンス302中の)最も最近のフレームに関する変化を表すことができる。多くの実施例では、フレーム・データは、60フレーム毎秒(fps)など、それらのフレームが表示されるべきであるフレーム・レートを近似し得る一定の間隔において送出される。したがって、フレームの確認応答は、フレームがドロップされない限り、たいていのフレームが結局、最も最近のフレームに依存することになり得るように、同様の頻度で受信されるべきである。確認応答が、いくつかのフレームに対応する持続時間の間受信されない場合、それは、別の手法を使用して対処される必要があり得る問題を示し得る。そのような事例では、新しいiフレームを送出することは、そのフレームが適切に受信されないか、又は適時に受信されないかのいずれかであり得るので、その問題を解決しないことがある。いくつかの実施例では、5つ又はそれ以上のフレームなど、決定された数のフレームが確認応答なしに送信された後に、iフレームが送出され得る。
【0016】
図3Cに示されているように、pフレームCなどのフレームがドロップされた(又は破損されたなど)場合、後続のpフレームDは、依然として、最後の確認応答されたフレームAに関する変化を表すことができる。いくつかの事例では、フレーム・データは、適切に受信されていることがあるが、対応する確認応答は、適切に受信されていないことがある。別のフレーム、ここではpフレームBの、確認応答が受信されたとき、pフレームE及びFについて示されているように、後続のフレームは、そのフレームに依存することができる。この手法は、所与のフレームが、確認応答が受信された(又は他の指示が提供又は決定された)シーケンス中の最も最近のフレームから依存することになる、スライディング・ウィンドウを効果的に作成する。図3Dに示されているように、後続のフレームは、確認応答が受信されると、pフレームDに依存することができ、以下同様である。このようにして、1つ又は複数のフレームがドロップされた場合でも、後続のフレームは、最後の確認応答された良好なフレームからのビデオ・コンテンツの変化(たとえば、差分)を表すデータを利用することによって、適切な画像を回復及び復号又は表示することができる。次いで、ドロップされたフレームは、ビデオの更新の際に(1フレーム程度の)一時的遅延のみを生じ得、一時的遅延は、ほとんど顕著でないことがある、ピクセル値の急変を生じ得、もしあれば最小の、アプリケーションに対する影響を有するように十分に短くなり得る。たとえば、ゲーマーが、約30ミリ秒程度の時間期間の間ビデオ更新を有しないことによって不当に不利にならないことがあるが、いくつかのフレームがドロップされたか又は破損しており、従来の方法の場合のように、新しいiフレームが送出される必要があり、これが1秒又はそれ以上の程度の遅延を生じ得る場合、不利になり得る。前方誤り訂正は、依然としてそのようなプロセスとともに使用され得る。
【0017】
少なくとも1つの実施例では、クライアント・デバイスによって受信されたフレームは、確認された状態又は確認されていない状態にあり得、これは、フレームが適切に受信、復号、検証、及び/又は確認応答されたかどうかに対応し得る。フレームが正常に復号され、確認応答されたとき、たとえば、そのフレームは、確認されたフレームであると考えられ得る。少なくとも1つの実施例では、クライアント・デバイスは、ローカル・バッファ中に最も最近の確認されたフレームのみを保ち得る。この確認されたフレームは、シーケンスの最後の良好なフレームに対応することになり、そのシーケンス中の新しいフレームが確認されるまで後続のフレームを復号するために使用され得る。
【0018】
少なくとも1つの実施例では、クライアント・デバイスは、バッファ中に少なくとも2つの最も最近の確認されたフレームをキャッシュし得る。これは、フレームがクライアントによって確認応答されたが、その確認応答が、次のフレームが生成及び送信される前に、サーバによって受信及び処理されず、次のフレームが、その場合、前の確認されたフレームからの差分を表すことになる場合、通信の非同期性質を考慮するのを助けることができる。このようにして、いずれかの前の確認されたフレームに関する差分データとともに受信されるフレームが適切に復号及び表示され、新しい確認されたフレームとして検証され得る。
【0019】
いくつかの実施例では、クライアント・デバイスは複数の確認されたフレームをバッファし得、したがって、任意の後続の進行フレームが、差分のためのベースとして、それらのバッファされた確認された参照フレームのいずれかを利用することができる。少なくとも1つの実施例では、送信サーバは、クライアント・デバイスによってバッファされる確認された参照フレームのリストを維持することができ、新しい確認されたフレームがこのバッファに追加されるか、又はこのバッファから除去されるたびに、このリストを更新することができる。少なくとも1つの実施例では、クライアント・デバイスは、確認されたフレームをバッファから除去するという要求をサーバに送出し得る。クライアント・デバイスは、次いで、その確認されたフレームをバッファから除去する前に、サーバから確認応答が戻るのを待つことができる。サーバからの確認応答がある時間期間を過ぎて受信されない場合、クライアント・デバイスは、バッファからそのフレームを除去するための別の要求を送出することができる。そのような手法は、バッファのオーバーランを防ぐことができる。そのような手法はまた、サーバが、利用可能である所与のフレームを潜在的参照フレームとしてリストするが、そのフレームがもはやクライアント・デバイス上で利用可能でない状況を回避するのを助けることができる。さらに、これは、フレームがバッファから除去されるとき、フレームがすでに送信されるプロセスにあり、その結果、その確認されたフレームが参照フレームとしてもはや利用可能でない状況を回避するのを助ける。いくつかの実施例では、クライアント・デバイスは、サーバがバッファから除去されるべきフレームを選択することを要求し得、その場合、サーバは、バッファから1つ又は複数の選択されたフレームを除去するようにとの命令で応答することができ、サーバは、そのフレームを参照フレームとしてもはや使用しないことになる。これは、少なくともいくつかの実施例では、サーバがクライアント・デバイス上のバッファのための管理責任を有することを可能にすることができる。
【0020】
少なくとも1つの実施例では、送信サーバ又はソースは、後続の進行フレームのための参照フレームとしてどの確認されたフレームを使用すべきかを決定することを試みることができる。ユーザ構成可能であり得るように、又はネットワーク状態に少なくとも部分的に基づいて行われ得るように、そのような決定を行うための様々なルール又はポリシーが、適切に設定され得る。少なくとも1つの実施例では、最も小さい数の変化を有し得るか、又は後続のフレームのために送信されるべき最小量のデータを生じ得るものなど、最も小さい差分を生じるであろう参照フレームが選択され得る。いくつかの実施例では、著しいネットワーク問題又は懸念がない場合、前のフレーム中の破損した又は不正確なデータの影響を最小限に抑えるために、最も多い変化を含む参照フレームが代わりに選択され得る。いくつかの実施例では、送信サーバは、より古いフレームがクライアント・デバイス上のバッファから除去され得る状況を回避するために、より最近の確認されたフレームを利用することへの選好を有し得る。様々な実施例の範囲内で、選択のための他のルール又は手法も使用され得る。
【0021】
そのような一実装形態では、クライアント・デバイスは、確認されたフレームが後続のフレームのためのベース、参照、又はキー・フレームとしてもはや使用され得ないことをサーバが知るように、その確認されたフレームがバッファからフラッシュされるときをサーバに通知することができる。いくつかの実施例では、サーバは、他のオプションの中でも、その差が最大差分しきい値を超えること、又は現在フレームに関するより小さい差分をもつバッファ中のフレームの最大数を有することに基づき得るものなど、バッファからどの確認されたフレームを除去すべきかに関して、クライアント・デバイスに命令することができる。クライアント・デバイスはまた、クライアントがバッファ中のスペースをクリアすることを必要とするか又は希望する場合、バッファからどのフレームを廃棄すべきかをサーバに質問することができる。いくつかの実施例では、この情報の少なくとも一部は、クライアント・デバイス又は他のそのような受信側から送出された確認応答メッセージを通して伝達され得る。
【0022】
確認されていない後続のフレームはまた、確認応答が送出された又は別の確認要件が満足された後に、これらのフレームがシーケンス中の新しい確認されたフレームになり得るので、バッファに記憶され得る。新しいフレームが確認されるたびに、シーケンス中のより古い確認されたフレームのうちの1つは、少なくとも、バッファ中のフレームの最大数又はサイズが満たされるとき、その最大数又はサイズに近づくとき、又はその最大数又はサイズが超えられるとき、バッファから廃棄され得る。いくつかの実施例では、確認応答又は確認がない長期にわたる期間は、異なる是正措置がとられるか又は問題が調査されるべきであるような、ネットワーク又は他の問題を示し得るので、確認されていないフレームの最大数がバッファ中に保たれ得る。多くのストリームでは、新しいiフレーム又はキー・フレームは、(ピクセル・データのすべてではないにしても大部分が変化することになる)ゲームにおけるシーン又はプログラミング変化或いは新しいレベル又はカットシーンなどの変化のために生成され得、新しいiフレームがクライアントによって受信されたときはいつでも、クライアントは、すべての前のフレームが、そのビデオ・シーケンス中の後続のフレームのためにキー・フレームとして働くことがもはや可能でなくなるので、それらをバッファからフラッシュし得る。少なくともいくつかの実施例では、新しいiフレームは、必要なとき又は要求されるときのみ送出され、したがって、所与のストリームのために送出されるごく少数の(わずか1つの)iフレームがあり得、これは、iフレームが生成、送信、及び記憶されるべきデータの量により、費用がかかることがあるので有益であり得る。問題がネットワーク帯域幅問題である場合、不要なiフレームを送出することは、特に4K又は8Kなどのより高い解像度のために、問題を実際に悪化させることがある。
【0023】
上述のように、そのような手法の利益は、ビデオ及びメディア・アプリケーション以外のアプリケーション及び使用事例のために使用され得る。区別可能な又は参照データが使用され、参照ポイントが有利に時間とともに更新され得る、様々な使用事例について、利点が得られ得る。これは、たとえば、機械又は電気システムのための区別可能な温度又はセンサ・データ送信を含むことができる。そのような手法はまた、ビデオ会議、オーディオ・ストリーミング、自動化などに関係し得るような、レイテンシ及びバッファリングが問題である使用事例では有利に使用され得る。ビデオがそのような手法から恩恵を受け得るオンライン・ゲーミングなどの使用事例の場合でも、同じく恩恵を受けることができる他のデータ又は情報があり得る。たとえば、ゲームをストリーミングするときにクライアント・デバイスからサーバに送出される入力データ(たとえば、他のオプションの中でも、マウス、コントロール・パッド、VRコントロール・スティック、オーディオ入力デバイス、動きセンサ、ジェスチャー制御、又はタッチ・スクリーンからのユーザ入力データ)は、しばしば相対位置移動のセットとして送出される。このデータは低レイテンシの同様の必要を有することができ、この入力データが、データを逃した結果として破損されることを回避することが望ましいことがある。最後の確認応答されたイベントからのイベントを合体する(coalesce)こと(又は各イベントのためのデータをバッファすること)によって、ビデオ・ストリームのための利益と同様の利益が、データの再送出を要求することのオーバーヘッドなしに逃したパケットを扱うことによってなど、得られ得る。そのような手法は、変化するデータ・セットの個々の「状態」又は「タイムスライス」の送信に適用され得、たとえば、データ・セットの後続の状態又はタイムスライスは、同じデータ・セットの特定の前の状態又はタイムスライスに対する差分のセットとして、符号化されるか、或いは少なくとも記述又は生成され得る。
【0024】
図4は、提示のために、少なくとも1つのクライアント・デバイス又は他のそのような受信側にビデオ・データを送信するために使用され得る例示的なビデオ符号化パイプライン400を示す。少なくともいくつかの実施例では、そのようなビデオ・データが同様にオーディオ・データを含むか、又はオーディオ・データに関連することができることを理解されたい。この実例では、レンダリングされるべき現在フレームについてのピクセル・データは、カメラ、メディア・サーバ、又はオンライン・ゲーム・ホストなど、ビデオ・ソース402から受信され得る。この実例では、ビデオ・データは、特定の符号化フォーマットを使用してデータを符号化するように構成されたビデオ・エンコーダ404に受信される。初期フレームの場合、エンコーダ404は、このフレームをiフレーム又はキー・フレームとして符号化することができ、このフレームは、ストリーム・サーバ408又は他のそのような送信機に受け渡されて、少なくとも1つのネットワーク410にわたってクライアント・デバイス412又は他の予定受信側に送信され得る。クライアント・デバイスの受信機414は、このビデオ・データを受信し、そのデータを、ビデオ・フレームを復号するためにビデオ・デコーダ416に受け渡すことができ、次いで、復号されたビデオ・フレームが、ディスプレイ420、或いはプロジェクタ、モニタ、又はウェアラブル・ディスプレイなど、他のそのような機構を介して提示されることを引き起こすことができる。この実例では、ビデオ・デコーダ416は、このフレームが、このビデオ・ストリーム中の後続のフレームのための参照として使用され得る確認されたフレームとして参照バッファ418に記憶されることを引き起こすことができる。ビデオ・デコーダ416はまた、確認応答がストリーム・サーバ408に送出されることを引き起こすことができ、ストリーム・サーバ408は、ビデオ・エンコーダ404に確認応答を通信することができる。ビデオ・エンコーダは、参照バッファ406にそのiフレームのコピーを記憶していることがあり、そのフレームを、このストリーム上の後続のビデオ・フレームのための基礎として次に使用され得る確認されたフレームとして指定することができる。
【0025】
この実例では、このシーケンス中の第2のフレームは、参照フレームとして初期iフレームを使用することができ、これは、この時点で、第1のフレームのための確認応答がすでに受信されたか否かにかかわらず、第2のフレームのための参照フレームとして働くための他のフレームがないからである。このシーケンス中の第3の又は後続のフレームのために、ビデオ・エンコーダ404は、その現在フレームのための差分を決定するための参照フレームとしてどれを使用すべきかを決定するために、参照バッファ406中の確認された参照フレームを検査することができる。上述のように、この選択は、最も小さい数の変化を生じることになるか、又は現在フレームのために送信されるべき最小量のデータを生じることになる参照フレームを選択するためのなど、いくつかの異なるルール、ポリシー、又は手法のいずれかを使用して決定され得る。少なくとも1つの実施例では、ビデオ・エンコーダは、クライアント・デバイス412によって確認された、及びクライアント参照バッファ418中にキャッシュ又はバッファされることを示された、ローカル参照バッファ406中の任意のフレームを、参照フレームとして選択することができる。ビデオ・エンコーダ404は、参照フレームが選択されると、差分を生成し、クライアント・デバイス412に送信され得る現在ビデオ・フレームのためのデータを符号化することができる。この実例において、適切に復号され、検証されると、クライアント・デバイス412は、現在フレームがクライアント参照バッファ418に記憶されることを引き起こし、新しいフレームが、次にそのストリーム上の後続のフレームのための参照フレームとして働き得るという確認応答がストリーム・サーバ408に送出されることを引き起こすことができる。
【0026】
バッファされたフレームの最大数が満たされた又は超えられたなど、バッファ除去基準が満たされた場合、クライアント・デバイス412は、ストリーム・サーバ408又はビデオ・エンコーダ404に、クライアント参照バッファ418からシーケンス中の少なくとも1つのより古い又は前の確認されたフレームを除去するための要求をサブミットすることができる。1つ又は複数の特定のフレームが、クライアント参照バッファ418から除去され得、参照フレームとしてもはや使用されないことになることを確認応答する確認応答が、ビデオ・エンコーダ404及び/又はストリーム・サーバから受信され得る。上述のように、これは、クライアント・デバイスによる除去のために要求された、又は、たとえば、ビデオ・エンコーダ404による除去のために選択された、1つ又は複数のフレームを含むことができる。少なくとも1つの実施例では、ビデオ・エンコーダ404(又は他の責任を負う又は監視構成要素)は、確認されたフレームが、クライアント・デバイスから要求を受信することなしにバッファから除去されるべきであることを命令することができる。少なくとも1つの実施例では、後続のフレームのためのより良い圧縮最適化を可能にするために参照バッファ中のデータの多様性を最大にするために、バッファ中の別の確認されたフレームと最も類似しているフレームを除去するためになど、最も古いフレーム以外のフレームがバッファから除去され得る。様々な実施例では、ビデオ・エンコーダ404は、複数の受信側に送信されるべき複数のストリームを符号化し得、各ストリーム上で送出される進行フレームは、それらのデバイス上で利用可能な確認されたフレームに少なくとも部分的に依存し得る。いくつかの実施例では、ビデオ・エンコーダ上の著しい追加の処理要件を防ぐために、並びに参照バッファ406のサイズを制限するために、異なる参照フレームの最大数がビデオ・エンコーダによって使用されることを可能にされ得る。
【0027】
図5Aは、様々な実施例による、実施され得る送信のためのデータ・ストリームを符号化するための例示的なプロセス500を示す。この実例では、502において、シーケンス中の初期ビデオ・フレームがキー・フレームとして符号化される。これは、他のオプションの中でも、シーケンス全体中の第1のフレーム、又はシーン変化の後の第1のフレームであり得る。504において、この初期キー・フレームは、確認されたフレーム、すなわち、場合によっては後続のフレームのための参照フレームとして使用されることが可能であることが確認されたフレームとしてバッファされ得る。少なくとも1つの実施例では、少なくとも、現在、参照フレームとして使用されるべき他のフレームがないことがあり、確認又は確認応答が最初に受信されない限り、別のキー・フレームを送出することが望ましくないことがあるので、あらゆるキー・フレーム又はiフレームが、参照フレームとして使用され得る確認されたフレームとして指定され得る。506において、このキー・フレームはまた、復号及び表示のために、クライアント・デバイス又は他のそのような受信側に送信され得る。
【0028】
508において、このシーケンス中の後続のフレームについて、バッファされたフレームからの確認されたフレームが、参照フレームとして使用するために決定、又は選択され得る。これは、たとえば、符号化されるべきフレームに関する最も小さい差分又は最小数の変化を生じることになる確認されたフレームを決定することを含むことができる。少なくとも1つの実施例では、これは、2つ又はそれ以上の差分を並列に決定することと、次いで、それらの差分の1つ又は複数の態様に少なくとも部分的に基づいて、確認されたフレームのうちの1つを選択することとを含み得る。次いで、510において、選択された参照フレームに関する差分データを使用して、次のフレームが符号化され得る。このフレームのためのデータは、シーケンスのための将来の参照フレームとしての潜在的使用のためにバッファに記憶され得る。514において、このフレームのための符号化されたデータはまた、現在のビデオ・シーケンスの一部として復号及び表示のためにクライアント・デバイスに送信され得る。このプロセス中、516において、クライアント・デバイス上のバッファに変化があったかどうかに関する決定が行われ得る。これは、たとえば、バッファ中の新しい確認されたフレームの、クライアント・デバイスからの確認応答、又はクライアント参照バッファからの1つ又は複数のフレームの除去の通知を受信することを含むことができる。ビデオ・エンコーダがクライアント・デバイスにクライアント参照バッファからフレームを除去するように命令し得る実施例では、これは、そのような命令の通知が送出されることを含み得る。バッファに変化がない場合、プロセスは続くことができる。クライアント参照バッファに変化がある場合、518において、ローカル・バッファに記憶されたフレーム・データは、現在、クライアント・デバイス上にバッファされ、シーケンス中の1つ又は複数の後続のフレームのための参照フレームとして働くために利用可能である、確認されたフレームを反映するためになど、(1つ又は複数の)変化を反映するために更新され得る。プロセスは、次いで、この更新されたバッファ・データに少なくとも部分的に基づいて続くことができる。
【0029】
図5Bは、様々な実施例による、実施され得るビデオ・データを復号及び表示するためのプロセス550を示す。この実例では、552において、受信、復号、及び表示された初期キー・フレームに後続するフレームなど、シーケンス中の次のビデオ・フレームのための、符号化されたデータが受信される。554において、このフレーム・データは、クライアント参照バッファに記憶された識別された参照フレーム(フレームが、参照フレームがないキー・フレームでない限り)のためのデータを使用して復号され得る。識別された参照フレームは、適切に受信及び復号されたこのシーケンス中の前のフレームを参照することができ、したがって、これらのフレーム間の差分ビデオ・データを使用して完全なビデオ・フレームを復号する目的で参照フレームとして働くことができる。556において、この正常に復号されたビデオ・フレームは、適切なディスプレイ要素を通した表示のためになど、提示のために提供され得る。558において、この正常に復号されたフレームのためのデータはまた、このシーケンス中の1つ又は複数の後続のフレームのための参照フレームとしての潜在的使用のためにクライアント参照バッファに記憶され得る。また、560において、フレームが正常に復号され、クライアント参照バッファに記憶され、潜在的参照フレームとして利用可能であることを示す、確認応答が送出され得る。このプロセス中、562において、クライアント参照バッファから1つ又は複数のフレームを除去するための決定が行われ得る。上述のように、この決定は、他のオプションの中でも、クライアント・デバイス、ビデオ・エンコーダ、又はリモート・サーバによって行われ得る。クライアント・デバイスが、少なくとも1つのフレームが除去されるべきであると決定した場合、564において、クライアント参照バッファから1つ又は複数を除去するための要求が、ビデオ・エンコーダ、或いは符号化プロセスを管理する構成要素又はサーバに送出され得る。要求は、(1つ又は複数の)フレームを指定するか、又はビデオ・エンコーダ(又は他の構成要素)が除去されるべき(1つ又は複数の)フレームを選択することを可能にすることができる。確認応答が受信されると、566において、(1つ又は複数の)指定されたフレームは、クライアント参照バッファから除去され得、シーケンス上の将来のフレームのための潜在的参照フレームとして使用するために利用不可能であることになる。上述のように、他の実施例では、ビデオ・エンコーダは、クライアント・デバイスからの要求に応答するのではなく、1つ又は複数のフレームがクライアント・バッファから除去されることを命令し得る。プロセスは、次いで、クライアント参照バッファ中の現在フレームを使用して続くことができる。
【0030】
説明されたように、本明細書で提示される様々な手法は、パーソナル・コンピュータ又はゲーミング・コンソールなどのクライアント・デバイス上でリアルタイムで実行するのに十分軽量である。そのような処理は、少なくとも1つのネットワークを介して受信されるストリーミング・コンテンツなど、そのクライアント・デバイス上で生成されたか又は外部ソースから受信されたコンテンツに対して実施され得る。ソースは、他のオプションの中でも、ゲーム・ホスト、ストリーミング・メディア・プロバイダ、サード・パーティ・コンテンツ・プロバイダ、又は他のクライアント・デバイスなど、任意の適切なソースであり得る。いくつかの事例では、このコンテンツの処理及び/又はレンダリングは、これらの他のデバイス、システム、又はエンティティのうちの1つによって実施され、次いで、提示又は別のそのような用途のためにクライアント・デバイス(又は別のそのような受信側)に提供され得る。
【0031】
一実例として、図6は、コンテンツを提供、生成、修正、符号化、及び/又は送信するために使用され得る例示的なネットワーク構成600を示す。少なくとも1つの実施例では、クライアント・デバイス602が、クライアント・デバイス602上のコンテンツ・アプリケーション604の構成要素と、そのクライアント・デバイスにローカルに記憶されたデータとを使用するセッションのためのコンテンツを生成又は受信することができる。少なくとも1つの実施例では、コンテンツ・サーバ620(たとえば、クラウド・サーバ又はエッジ・サーバ)上で実行しているコンテンツ・アプリケーション624(たとえば、画像生成又は編集アプリケーション)が、セッション・マネージャとユーザ・データベース634に記憶されたユーザ・データとを利用し得るような、少なくともクライアント・デバイス602に関連付けられたセッションを始動し得、コンテンツ632がコンテンツ・マネージャ626によって決定されることを引き起こすことができる。アニメーション又はゲーミング・アプリケーションに関係し得るような、シーン生成モジュール628が、提供されることを決定されたコンテンツを生成又は取得し得、そのコンテンツの少なくとも一部分は、このタイプのコンテンツ又はプラットフォームのために必要とされる場合、レンダリング・エンジンを使用してレンダリングされ、ダウンロード、ストリーミング、又は別のそのような送信チャネルによって送出するために適切な送信マネージャ622を使用してクライアント・デバイス602に送信される必要があり得る。クライアント・デバイス602に送信する前にこのデータを符号化及び/又は圧縮するために、エンコーダ630が使用され得る。少なくとも1つの実施例では、このコンテンツ632は、シーンについてのビデオ又は画像データを含むことができる。少なくとも1つの実施例では、このコンテンツを受信するクライアント・デバイス602は、このコンテンツを対応するコンテンツ・アプリケーション604に提供することができ、コンテンツ・アプリケーション604は、同じく又は代替的に、提示のためにこのコンテンツの少なくとも一部をレンダリングするためのシーン生成モジュール又はレンダリング・エンジン612(必要な場合)を含み得る。ディスプレイ606を通した画像又はビデオ・コンテンツ、並びに、スピーカー又はヘッドフォンなどの少なくとも1つのオーディオ再生デバイス608を通した音及び音楽などのオーディオなど、クライアント・デバイス602を介した提示のために(1つ又は複数の)ネットワーク640を介して受信されたデータを復号するために、デコーダ614も使用され得る。少なくとも1つの実施例では、このコンテンツの少なくとも一部がすでに、そのコンテンツが前にダウンロードされたか或いはハード・ドライブ又は光ディスク上にローカルに記憶されていることがある場合など、ネットワーク640を介した送信がコンテンツの少なくともその部分のために必要とされないように、クライアント・デバイス602に記憶されるか、クライアント・デバイス602上でレンダリングされるか、又はクライアント・デバイス602にとってアクセス可能であり得る。少なくとも1つの実施例では、このコンテンツを、サーバ620、又はコンテンツ・データベース634から、クライアント・デバイス602に転送するために、データ・ストリーミングなどの送信機構が使用され得る。少なくとも1つの実施例では、このコンテンツの少なくとも一部分が、コンテンツを生成又は提供するためのコンテンツ・アプリケーション662をも含み得るサード・パーティ・コンテンツ・サービス660など、別のソースから取得されるか又はストリーミングされ得る。少なくとも1つの実施例では、この機能性の部分は、複数のコンピューティング・デバイスを使用して、又は、CPUとGPUとの組合せを含み得るものなど、1つ又は複数のコンピューティング・デバイス内の複数のプロセッサを使用して、実施され得る。
【0032】
少なくとも1つの実施例では、コンテンツ・アプリケーション624は、コンテンツがクライアント・デバイス602に送信される前にこのコンテンツを決定又は分析することができるコンテンツ・マネージャ626を含む。少なくとも1つの実施例では、コンテンツ・マネージャ626はまた、提供されるべきコンテンツを生成するか、修正するか、符号化するか、又は向上させることが可能である他の構成要素を含むか、或いはそれとともに動作することができる。少なくとも1つの実施例では、これは、どのフレームが参照フレームとして働くために利用可能であるかを決定することを含むか、又は符号化されるべき特定のフレームのための参照フレームを選択することができる。少なくとも1つの実施例では、画像、ビデオ、又は他のメディア・コンテンツを生成するために、画像、ビデオ、又はシーン生成構成要素628が使用され得る。少なくとも1つの実施例では、コンテンツ・マネージャ626は、選択及び符号化されたコンテンツがクライアント・デバイス602に送信されることを引き起こすことができる。少なくとも1つの実施例では、クライアント・デバイス602上のコンテンツ・アプリケーション604は、この機能性のいずれか又はすべてが、追加又は代替として、クライアント・デバイス602上で実施され得るように、レンダリング・エンジン、或いは画像又はビデオ・デコーダ614などの構成要素をも含み得る。少なくとも1つの実施例では、サード・パーティ・コンテンツ・サービス・システム660上のコンテンツ・アプリケーション662も、そのような機能性を含むことができる。少なくとも1つの実施例では、この機能性の少なくとも一部が実施されるロケーションが、構成可能であり得るか、或いは他のファクタの中でも、クライアント・デバイス602のタイプ、又は適切な帯域幅をもつネットワーク接続の利用可能性など、ファクタに依存し得る。少なくとも1つの実施例では、コンテンツ生成のためのシステムが、1つ又は複数のロケーションにおけるハードウェアとソフトウェアとの任意の適切な組合せを含むことができる。少なくとも1つの実施例では、1つ又は複数の解像度の生成された画像又はビデオ・コンテンツがまた、その画像又はビデオ・コンテンツのコピーを記憶するメディア・ソースからのダウンロード又はストリーミングのためになど、他のクライアント・デバイス650に提供されるか又は利用可能にされ得る。少なくとも1つの実施例では、これは、マルチプレーヤ・ゲームのためのゲーム・コンテンツの画像を送信することを含み得、異なるクライアント・デバイスが、1つ又は複数の超解像を含む、異なる解像度においてそのコンテンツを表示し得る。
【0033】
この実例では、これらのクライアント・デバイスは、デスクトップ・コンピュータ、ノートブック・コンピュータ、セット・トップ・ボックス、ストリーミング・デバイス、ゲーミング・コンソール、スマートフォン、タブレット・コンピュータ、VRヘッドセット、ARゴーグル、ウェアラブル・コンピュータ、又はスマート・テレビジョンを含み得るような、任意の適切なコンピューティング・デバイスを含むことができる。各クライアント・デバイスは、他のオプションの中でも、インターネット、イーサネット、ローカル・エリア・ネットワーク(LAN:local area network)、又はセルラー・ネットワークを含み得るような、少なくとも1つのワイヤード又はワイヤレス・ネットワークにわたって要求をサブミットすることができる。この実例では、これらの要求は、データ・センタ又はサーバ・ファームを含み得るものなど、クラウド・プロバイダ環境における1つ又は複数の電子リソースを動作させるか又は制御し得る、クラウド・プロバイダに関連付けられたアドレスにサブミットされ得る。少なくとも1つの実施例では、要求は、ネットワーク・エッジ上に位置し、クラウド・プロバイダ環境に関連付けられた少なくとも1つのセキュリティ層の外側にある、少なくとも1つのエッジ・サーバによって受信されるか又は処理され得る。このようにして、クライアント・デバイスが、より近接しているサーバと対話することを可能にしながら、クラウド・プロバイダ環境におけるリソースのセキュリティをも改善することによって、レイテンシが低減され得る。
【0034】
少なくとも1つの実施例では、そのようなシステムは、グラフィカル・レンダリング動作を実施するために使用され得る。他の実施例では、そのようなシステムは、自律機械アプリケーションをテスト又は検証するために画像又はビデオ・コンテンツを提供するために、或いは深層学習動作を実施するためになど、他の目的のために使用され得る。少なくとも1つの実施例では、そのようなシステムは、エッジ・デバイスを使用して実装され得るか、又は、1つ又は複数の仮想機械(VM:Virtual Machine)を組み込み得る。少なくとも1つの実施例では、そのようなシステムは、少なくとも部分的にデータ・センタにおいて、又は少なくとも部分的にクラウド・コンピューティング・リソースを使用して、実装され得る。
【0035】
推論及び訓練論理
図7Aは、1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために使用される推論及び/又は訓練論理715を示す。推論及び/又は訓練論理715に関する詳細は、図7A及び/又は図7Bと併せて以下で提供される。
【0036】
少なくとも1つの実施例では、推論及び/又は訓練論理715は、限定はしないが、1つ又は複数の実施例の態様において推論するために訓練及び/又は使用されるニューラル・ネットワークのニューロン又は層を構成するための順方向及び/若しくは出力の重み及び/又は入力/出力データ、並びに/或いは他のパラメータを記憶するためのコード及び/又はデータ・ストレージ701を含み得る。少なくとも1つの実施例では、訓練論理715は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ701を含むか、又はそれに結合され得、コード及び/又はデータ・ストレージ701において、整数及び/又は浮動小数点ユニット(総称して、算術論理ユニット(ALU:arithmetic logic unit))を含む論理を構成するために、重み及び/又は他のパラメータ情報がロードされるべきである。少なくとも1つの実施例では、グラフ・コードなどのコードは、コードが対応するニューラル・ネットワークのアーキテクチャに基づいて、重み又は他のパラメータ情報をプロセッサALUにロードする。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ701は、1つ又は複数の実施例の態様を使用する訓練及び/又は推論中の入力/出力データ及び/又は重みパラメータの順方向伝搬中に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ701の任意の部分は、プロセッサのL1、L2、又はL3キャッシュ或いはシステム・メモリを含む、他のオンチップ又はオフチップ・データ・ストレージとともに含められ得る。
【0037】
少なくとも1つの実施例では、コード及び/又はデータ・ストレージ701の任意の部分は、1つ又は複数のプロセッサ或いは他のハードウェア論理デバイス又は回路の内部又は外部にあり得る。少なくとも1つの実施例では、コード及び/又はコード及び/又はデータ・ストレージ701は、キャッシュ・メモリ、動的なランダムにアドレス指定可能なメモリ(「DRAM」:dynamic randomly addressable memory)、静的なランダムにアドレス指定可能なメモリ(「SRAM」:static randomly addressable memory)、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであり得る。少なくとも1つの実施例では、コード及び/又はコード及び/又はデータ・ストレージ701が、たとえばプロセッサの内部にあるのか外部にあるのか、或いは、DRAM、SRAM、フラッシュ又は何らかの他のストレージ・タイプからなるかどうかの選定が、利用可能なストレージ、オンチップ対オフチップ、実施されている訓練及び/又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練において使用されるデータのバッチ・サイズ、或いはこれらのファクタの何らかの組合せに依存し得る。
【0038】
少なくとも1つの実施例では、推論及び/又は訓練論理715は、限定はしないが、1つ又は複数の実施例の態様において推論するために訓練及び/又は使用されるニューラル・ネットワークのニューロン又は層に対応する逆方向及び/若しくは出力の重み及び/又は入力/出力データを記憶するためのコード及び/又はデータ・ストレージ705を含み得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ705は、1つ又は複数の実施例の態様を使用する訓練及び/又は推論中の入力/出力データ及び/又は重みパラメータの逆方向伝搬中に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも1つの実施例では、訓練論理715は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ705を含むか、又はそれに結合され得、コード及び/又はデータ・ストレージ705において、整数及び/又は浮動小数点ユニット(総称して、算術論理ユニット(ALU))を含む論理を構成するために、重み及び/又は他のパラメータ情報がロードされるべきである。少なくとも1つの実施例では、グラフ・コードなどのコードは、コードが対応するニューラル・ネットワークのアーキテクチャに基づいて、重み又は他のパラメータ情報をプロセッサALUにロードする。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ705の任意の部分は、プロセッサのL1、L2、又はL3キャッシュ或いはシステム・メモリを含む、他のオンチップ又はオフチップ・データ・ストレージとともに含められ得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ705の任意の部分は、1つ又は複数のプロセッサ或いは他のハードウェア論理デバイス又は回路の内部又は外部にあり得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ705は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであり得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ705が、たとえばプロセッサの内部にあるのか外部にあるのか、或いは、DRAM、SRAM、フラッシュ又は何らかの他のストレージ・タイプからなるかどうかの選定が、利用可能なストレージ、オンチップ対オフチップ、実施されている訓練及び/又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練において使用されるデータのバッチ・サイズ、或いはこれらのファクタの何らかの組合せに依存し得る。
【0039】
少なくとも1つの実施例では、コード及び/又はデータ・ストレージ701と、コード及び/又はデータ・ストレージ705とは、別個のストレージ構造であり得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ701と、コード及び/又はデータ・ストレージ705とは、同じストレージ構造であり得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ701と、コード及び/又はデータ・ストレージ705とは、部分的に同じストレージ構造であり、部分的に別個のストレージ構造であり得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ701並びにコード及び/又はデータ・ストレージ705の任意の部分は、プロセッサのL1、L2、又はL3キャッシュ或いはシステム・メモリを含む、他のオンチップ又はオフチップ・データ・ストレージとともに含められ得る。
【0040】
少なくとも1つの実施例では、推論及び/又は訓練論理715は、限定はしないが、訓練及び/又は推論コード(たとえば、グラフ・コード)に少なくとも部分的に基づく、又はそれによって示される論理演算及び/又は数学演算を実施するための、整数及び/又は浮動小数点ユニットを含む、1つ又は複数の算術論理ユニット(「ALU」)710を含み得、その結果が、アクティブ化ストレージ720に記憶されるアクティブ化(たとえば、ニューラル・ネットワーク内の層又はニューロンからの出力値)を作り出し得、これらのアクティブ化は、コード及び/又はデータ・ストレージ701並びに/或いはコード及び/又はデータ・ストレージ705に記憶される入力/出力及び/又は重みパラメータ・データの関数である。少なくとも1つの実施例では、アクティブ化ストレージ720に記憶されるアクティブ化は、命令又は他のコードを実施したことに応答して(1つ又は複数の)ALU710によって実施される線形代数及び又は行列ベースの数学に従って生成され、コード及び/又はデータ・ストレージ705並びに/或いはコード及び/又はデータ・ストレージ701に記憶された重み値は、バイアス値、勾配情報、運動量値などの他の値、或いは他のパラメータ又はハイパーパラメータとともにオペランドとして使用され、これらのいずれか又はすべてが、コード及び/若しくはデータ・ストレージ705又はコード及び/若しくはデータ・ストレージ701、或いはオンチップ又はオフチップの別のストレージに記憶され得る。
【0041】
少なくとも1つの実施例では、(1つ又は複数の)ALU710は、1つ又は複数のプロセッサ或いは他のハードウェア論理デバイス又は回路内に含まれるが、別の実施例では、(1つ又は複数の)ALU710は、それらを使用するプロセッサ或いは他のハードウェア論理デバイス又は回路(たとえば、コプロセッサ)の外部にあり得る。少なくとも1つの実施例では、ALU710は、プロセッサの実行ユニット内に含まれるか、或いはさもなければ、同じプロセッサ内にあるか又は異なるタイプの異なるプロセッサ(たとえば、中央処理ユニット、グラフィックス処理ユニット、固定機能ユニットなど)間で分散されているかのいずれかであるプロセッサの実行ユニットによってアクセス可能なALUのバンク内に含まれ得る。少なくとも1つの実施例では、コード及び/又はデータ・ストレージ701と、コード及び/又はデータ・ストレージ705と、アクティブ化ストレージ720とは、同じプロセッサ或いは他のハードウェア論理デバイス又は回路上にあり得るが、別の実施例では、それらは、異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路中にあるか、或いは、同じプロセッサ又は他のハードウェア論理デバイス若しくは回路と、異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路との何らかの組合せ中にあり得る。少なくとも1つの実施例では、アクティブ化ストレージ720の任意の部分は、プロセッサのL1、L2、又はL3キャッシュ或いはシステム・メモリを含む、他のオンチップ又はオフチップ・データ・ストレージとともに含められ得る。さらに、推論及び/又は訓練コードが、プロセッサ或いは他のハードウェア論理又は回路にアクセス可能な他のコードとともに記憶され、プロセッサのフェッチ、復号、スケジューリング、実行、退去(retirement)及び/又は他の論理回路を使用してフェッチ及び/又は処理され得る。
【0042】
少なくとも1つの実施例では、アクティブ化ストレージ720は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであり得る。少なくとも1つの実施例では、アクティブ化ストレージ720は、完全に又は部分的に、1つ又は複数のプロセッサ又は他の論理回路内にあるか、又はその外部にあり得る。少なくとも1つの実施例では、アクティブ化ストレージ720が、たとえばプロセッサの内部にあるのか外部にあるのか、或いは、DRAM、SRAM、フラッシュ又は何らかの他のストレージ・タイプからなるかどうかの選定が、利用可能なストレージ、オンチップ対オフチップ、実施されている訓練及び/又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練において使用されるデータのバッチ・サイズ、或いはこれらのファクタの何らかの組合せに依存し得る。少なくとも1つの実施例では、図7aに示されている推論及び/又は訓練論理715は、GoogleからのTensorflow(登録商標)処理ユニット、Graphcore(商標)からの推論処理ユニット(IPU:inference processing unit)、又はIntel CorpからのNervana(登録商標)(たとえば、「Lake Crest」)プロセッサなど、特定用途向け集積回路(「ASIC」:application-specific integrated circuit)と併せて使用され得る。少なくとも1つの実施例では、図7aに示されている推論及び/又は訓練論理715は、中央処理ユニット(「CPU」:central processing unit)ハードウェア、グラフィックス処理ユニット(「GPU」:graphics processing unit)ハードウェア、又は、フィールド・プログラマブル・ゲート・アレイ(「FPGA」:field programmable gate array)などの他のハードウェアと併せて使用され得る。
【0043】
図7bは、少なくとも1つ又は複数の実施例による、推論及び/又は訓練論理715を示す。少なくとも1つの実施例では、推論及び/又は訓練論理715は、限定はしないが、ハードウェア論理を含み得、このハードウェア論理において、算出リソース(computational resource)が専用であるか、或いはさもなければ、ニューラル・ネットワーク内のニューロンの1つ又は複数の層に対応する重み値又は他の情報と併せてのみ使用される。少なくとも1つの実施例では、図7bに示されている推論及び/又は訓練論理715は、GoogleからのTensorflow(登録商標)処理ユニット、Graphcore(商標)からの推論処理ユニット(IPU)、又はIntel CorpからのNervana(登録商標)(たとえば、「Lake Crest」)プロセッサなど、特定用途向け集積回路(ASIC)と併せて使用され得る。少なくとも1つの実施例では、図7bに示されている推論及び/又は訓練論理715は、中央処理ユニット(CPU)ハードウェア、グラフィックス処理ユニット(GPU)ハードウェア、又は、フィールド・プログラマブル・ゲート・アレイ(FPGA)などの他のハードウェアと併せて使用され得る。少なくとも1つの実施例では、推論及び/又は訓練論理715は、限定はしないが、コード及び/又はデータ・ストレージ701とコード及び/又はデータ・ストレージ705とを含み、それらは、コード(たとえば、グラフ・コード)、重み値、並びに/或いは、バイアス値、勾配情報、運動量値、及び/又は他のパラメータ若しくはハイパーパラメータ情報を含む他の情報を記憶するために使用され得る。図7bに示されている少なくとも1つの実施例では、コード及び/又はデータ・ストレージ701並びにコード及び/又はデータ・ストレージ705の各々は、それぞれ、算出ハードウェア702及び算出ハードウェア706など、専用算出リソースに関連付けられる。少なくとも1つの実施例では、算出ハードウェア702及び算出ハードウェア706の各々は、線形代数関数などの数学関数を、それぞれコード及び/又はデータ・ストレージ701並びにコード及び/又はデータ・ストレージ705に記憶された情報に対してのみ実施する1つ又は複数のALUを備え、その結果が、アクティブ化ストレージ720に記憶される。
【0044】
少なくとも1つの実施例では、コード及び/又はデータ・ストレージ701及び705の各々と、対応する算出ハードウェア702及び706とは、それぞれ、ニューラル・ネットワークの異なる層に対応し、それにより、コード及び/又はデータ・ストレージ701と算出ハードウェア702との1つの「ストレージ/算出ペア701/702」から生じたアクティブ化は、ニューラル・ネットワークの概念的組織化をミラーリングするために、コード及び/又はデータ・ストレージ705と算出ハードウェア706との「ストレージ/算出ペア705/706」への入力として提供される。少なくとも1つの実施例では、ストレージ/算出ペア701/702及び705/706の各々は、2つ以上のニューラル・ネットワーク層に対応し得る。少なくとも1つの実施例では、ストレージ算出ペア701/702及び705/706の後に、又はそれらと並列に、追加のストレージ/算出ペア(図示せず)が、推論及び/又は訓練論理715中に含められ得る。
【0045】
データ・センタ
図8は、少なくとも1つの実施例が使用され得る例示的なデータ・センタ800を示す。少なくとも1つの実施例では、データ・センタ800は、データ・センタ・インフラストラクチャ層810と、フレームワーク層820と、ソフトウェア層830と、アプリケーション層840とを含む。
【0046】
少なくとも1つの実施例では、図8に示されているように、データ・センタ・インフラストラクチャ層810は、リソース・オーケストレータ812と、グループ化されたコンピューティング・リソース814と、ノード・コンピューティング・リソース(「ノードC.R.」:node computing resource)816(1)~816(N)とを含み得、ここで、「N」は、任意のすべての正の整数を表す。少なくとも1つの実施例では、ノードC.R.816(1)~816(N)は、限定はしないが、任意の数の中央処理ユニット(「CPU」)又は(アクセラレータ、フィールド・プログラマブル・ゲート・アレイ(FPGA)、グラフィックス・プロセッサなどを含む)他のプロセッサ、メモリ・デバイス(たとえば、動的読取り専用メモリ)、ストレージ・デバイス(たとえば、ソリッド・ステート又はディスク・ドライブ)、ネットワーク入力/出力(「NW I/O」:network input/output)デバイス、ネットワーク・スイッチ、仮想機械(「VM」)、電力モジュール、及び冷却モジュールなどを含み得る。少なくとも1つの実施例では、ノードC.R.816(1)~816(N)の中からの1つ又は複数のノードC.R.は、上述のコンピューティング・リソースのうちの1つ又は複数を有するサーバであり得る。
【0047】
少なくとも1つの実施例では、グループ化されたコンピューティング・リソース814は、1つ又は複数のラック(図示せず)内に格納されたノードC.R.の別個のグループ化、又は様々な地理的ロケーション(同じく図示せず)においてデータ・センタ中に格納された多くのラックを含み得る。グループ化されたコンピューティング・リソース814内のノードC.R.の別個のグループ化は、1つ又は複数のワークロードをサポートするように構成されるか又は割り振られ得る、グループ化されたコンピュート・リソース、ネットワーク・リソース、メモリ・リソース、又はストレージ・リソースを含み得る。少なくとも1つの実施例では、CPU又はプロセッサを含むいくつかのノードC.R.は、1つ又は複数のワークロードをサポートするためのコンピュート・リソースを提供するために1つ又は複数のラック内でグループ化され得る。少なくとも1つの実施例では、1つ又は複数のラックはまた、任意の数の電力モジュール、冷却モジュール、及びネットワーク・スイッチを、任意の組合せで含み得る。
【0048】
少なくとも1つの実施例では、リソース・オーケストレータ812は、1つ又は複数のノードC.R.816(1)~816(N)及び/又はグループ化されたコンピューティング・リソース814を構成するか、又はさもなければ、制御し得る。少なくとも1つの実施例では、リソース・オーケストレータ812は、データ・センタ800のためのソフトウェア設計インフラストラクチャ(「SDI」:software design infrastructure)管理エンティティを含み得る。少なくとも1つの実施例では、リソース・オーケストレータは、ハードウェア、ソフトウェア、又はそれらの何らかの組合せを含み得る。
【0049】
少なくとも1つの実施例では、図8に示されているように、フレームワーク層820は、ジョブ・スケジューラ822と、構成マネージャ824と、リソース・マネージャ826と、分散型ファイル・システム828とを含む。少なくとも1つの実施例では、フレームワーク層820は、ソフトウェア層830のソフトウェア832、及び/又はアプリケーション層840の1つ又は複数のアプリケーション842をサポートするためのフレームワークを含み得る。少なくとも1つの実施例では、ソフトウェア832又は(1つ又は複数の)アプリケーション842は、それぞれ、アマゾン・ウェブ・サービス、Google Cloud、及びMicrosoft Azureによって提供されるものなど、ウェブ・ベースのサービス・ソフトウェア又はアプリケーションを含み得る。少なくとも1つの実施例では、フレームワーク層820は、限定はしないが、大規模データ処理(たとえば、「ビッグ・データ」)のために分散型ファイル・システム828を利用し得るApache Spark(商標)(以下「Spark」)など、無料でオープンソースのソフトウェア・ウェブ・アプリケーション・フレームワークのタイプであり得る。少なくとも1つの実施例では、ジョブ・スケジューラ822は、データ・センタ800の様々な層によってサポートされるワークロードのスケジューリングを容易にするために、Sparkドライバを含み得る。少なくとも1つの実施例では、構成マネージャ824は、ソフトウェア層830、並びに大規模データ処理をサポートするためのSpark及び分散型ファイル・システム828を含むフレームワーク層820など、異なる層を構成することが可能であり得る。少なくとも1つの実施例では、リソース・マネージャ826は、分散型ファイル・システム828及びジョブ・スケジューラ822をサポートするようにマッピングされたか又は割り振られた、クラスタ化された又はグループ化されたコンピューティング・リソースを管理することが可能であり得る。少なくとも1つの実施例では、クラスタ化された又はグループ化されたコンピューティング・リソースは、データ・センタ・インフラストラクチャ層810において、グループ化されたコンピューティング・リソース814を含み得る。少なくとも1つの実施例では、リソース・マネージャ826は、リソース・オーケストレータ812と協調して、これらのマッピングされた又は割り振られたコンピューティング・リソースを管理し得る。
【0050】
少なくとも1つの実施例では、ソフトウェア層830中に含まれるソフトウェア832は、ノードC.R.816(1)~816(N)、グループ化されたコンピューティング・リソース814、及び/又はフレームワーク層820の分散型ファイル・システム828の少なくとも部分によって使用されるソフトウェアを含み得る。1つ又は複数のタイプのソフトウェアは、限定はしないが、インターネット・ウェブ・ページ検索ソフトウェアと、電子メール・ウイルス・スキャン・ソフトウェアと、データベース・ソフトウェアと、ストリーミング・ビデオ・コンテンツ・ソフトウェアとを含み得る。
【0051】
少なくとも1つの実施例では、アプリケーション層840中に含まれる(1つ又は複数の)アプリケーション842は、ノードC.R.816(1)~816(N)、グループ化されたコンピューティング・リソース814、及び/又はフレームワーク層820の分散型ファイル・システム828の少なくとも部分によって使用される1つ又は複数のタイプのアプリケーションを含み得る。1つ又は複数のタイプのアプリケーションは、限定はしないが、任意の数のゲノミクス・アプリケーション、コグニティブ・コンピュート、及び、訓練又は推論ソフトウェア、機械学習フレームワーク・ソフトウェア(たとえば、PyTorch、TensorFlow、Caffeなど)を含む、機械学習アプリケーション、又は、1つ又は複数の実施例と併せて使用される他の機械学習アプリケーションを含み得る。
【0052】
少なくとも1つの実施例では、構成マネージャ824、リソース・マネージャ826、及びリソース・オーケストレータ812のいずれかが、任意の技術的に実現可能な様式で獲得された任意の量及びタイプのデータに基づいて、任意の数及びタイプの自己修正アクションを実装し得る。少なくとも1つの実施例では、自己修正アクションは、データ・センタ800のデータ・センタ・オペレータを、不良の恐れのある構成を判定し、十分に利用されていない及び/又は性能の低いデータ・センタの部分を場合によっては回避することから解放し得る。
【0053】
少なくとも1つの実施例では、データ・センタ800は、1つ又は複数の機械学習モデルを訓練するか、或いは、本明細書で説明される1つ又は複数の実施例による1つ又は複数の機械学習モデルを使用して情報を予測又は推論するためのツール、サービス、ソフトウェア又は他のリソースを含み得る。たとえば、少なくとも1つの実施例では、機械学習モデルは、データ・センタ800に関して上記で説明されたソフトウェア及びコンピューティング・リソースを使用して、ニューラル・ネットワーク・アーキテクチャに従って重みパラメータを計算することによって、訓練され得る。少なくとも1つの実施例では、1つ又は複数のニューラル・ネットワークに対応する訓練された機械学習モデルは、本明細書で説明される1つ又は複数の訓練技法を通して計算された重みパラメータを使用することによって、データ・センタ800に関して上記で説明されたリソースを使用して、情報を推論又は予測するために使用され得る。
【0054】
少なくとも1つの実施例では、データ・センタは、上記で説明されたリソースを使用して訓練及び/又は推論を実施するために、CPU、特定用途向け集積回路(ASIC)、GPU、FPGA、又は他のハードウェアを使用し得る。その上、上記で説明された1つ又は複数のソフトウェア及び/又はハードウェア・リソースは、画像認識、音声認識、又は他の人工知能サービスなど、ユーザが、情報を訓練するか又は情報の推論を実施することを可能にするためのサービスとして構成され得る。
【0055】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、図7A及び/又は図7Bと併せて以下で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のために図8のシステムにおいて使用され得る。
【0056】
そのような構成要素は、アップスケールされた解像度と、低減されたアーティファクト存在と、視覚的品質向上とを伴う画像又はビデオ・コンテンツなど、向上されたコンテンツを生成するために使用され得る。
【0057】
コンピュータ・システム
図9は、例示的なコンピュータ・システムを示すブロック図であり、例示的なコンピュータ・システムは、少なくとも1つの実施例による、命令を実行するための実行ユニットを含み得るプロセッサとともに形成された、相互接続されたデバイス及び構成要素、システム・オン・チップ(SOC:system-on-a-chip)又はそれらの何らかの組合せをもつシステム900であり得る。少なくとも1つの実施例では、コンピュータ・システム900は、限定はしないが、本明細書で説明される実施例などにおいて、本開示による、プロセス・データのためのアルゴリズムを実施するための論理を含む実行ユニットを採用するための、プロセッサ902などの構成要素を含み得る。少なくとも1つの実施例では、コンピュータ・システム900は、カリフォルニア州サンタ・クララのIntel Corporationから入手可能なPENTIUM(登録商標)プロセッサ・ファミリー、Xeon(商標)、Itanium(登録商標)、XScale(商標)及び/又はStrongARM(商標)、Intel(登録商標)Core(商標)、又はIntel(登録商標)Nervana(商標)マイクロプロセッサなどのプロセッサを含み得るが、(他のマイクロプロセッサ、エンジニアリング・ワークステーション、セット・トップ・ボックスなどを有するPCを含む)他のシステムも使用され得る。少なくとも1つの実施例では、コンピュータ・システム900は、ワシントン州レドモンドのMicrosoft Corporationから入手可能なWINDOWS(登録商標)オペレーティング・システムのあるバージョンを実行し得るが、他のオペレーティング・システム(たとえば、UNIX(登録商標)及びLinux(登録商標))、組み込みソフトウェア、及び/又はグラフィカル・ユーザ・インターフェースも使用され得る。
【0058】
実施例は、ハンドヘルド・デバイス及び組み込みアプリケーションなど、他のデバイスにおいて使用され得る。ハンドヘルド・デバイスのいくつかの実例は、セルラー・フォン、インターネット・プロトコル・デバイス、デジタル・カメラ、パーソナル・デジタル・アシスタント(「PDA」:personal digital assistant)、及びハンドヘルドPCを含む。少なくとも1つの実施例では、組み込みアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ(「DSP」:digital signal processor)、システム・オン・チップ、ネットワーク・コンピュータ(「NetPC」:network computer)、セット・トップ・ボックス、ネットワーク・ハブ、ワイド・エリア・ネットワーク(「WAN」:wide area network)スイッチ、又は少なくとも1つの実施例による1つ又は複数の命令を実施し得る任意の他のシステムを含み得る。
【0059】
少なくとも1つの実施例では、コンピュータ・システム900は、限定はしないが、プロセッサ902を含み得、プロセッサ902は、限定はしないが、本明細書で説明される技法による機械学習モデル訓練及び/又は推論を実施するための1つ又は複数の実行ユニット908を含み得る。少なくとも1つの実施例では、コンピュータ・システム900は、シングル・プロセッサ・デスクトップ又はサーバ・システムであるが、別の実施例では、コンピュータ・システム900は、マルチプロセッサ・システムであり得る。少なくとも1つの実施例では、プロセッサ902は、限定はしないが、複合命令セット・コンピュータ(「CISC」:complex instruction set computer)マイクロプロセッサ、縮小命令セット・コンピューティング(「RISC」:reduced instruction set computing)マイクロプロセッサ、超長命令語(「VLIW」:very long instruction word)マイクロプロセッサ、命令セットの組合せを実装するプロセッサ、又は、たとえばデジタル信号プロセッサなど、任意の他のプロセッサ・デバイスを含み得る。少なくとも1つの実施例では、プロセッサ902は、プロセッサ・バス910に結合され得、プロセッサ・バス910は、プロセッサ902とコンピュータ・システム900中の他の構成要素との間でデータ信号を送信し得る。
【0060】
少なくとも1つの実施例では、プロセッサ902は、限定はしないが、レベル1(「L1」)の内部キャッシュ・メモリ(「キャッシュ」)904を含み得る。少なくとも1つの実施例では、プロセッサ902は、単一の内部キャッシュ又は複数のレベルの内部キャッシュを有し得る。少なくとも1つの実施例では、キャッシュ・メモリは、プロセッサ902の外部に存在し得る。他の実施例は、特定の実装形態及び必要性に応じて、内部キャッシュと外部キャッシュの両方の組合せをも含み得る。少なくとも1つの実施例では、レジスタ・ファイル906は、限定はしないが、整数レジスタ、浮動小数点レジスタ、ステータス・レジスタ、及び命令ポインタ・レジスタを含む様々なレジスタに、異なるタイプのデータを記憶し得る。
【0061】
少なくとも1つの実施例では、限定はしないが、整数演算及び浮動小数点演算を実施するための論理を含む実行ユニット908も、プロセッサ902中に存在する。少なくとも1つの実施例では、プロセッサ902は、いくつかのマクロ命令のためのマイクロコードを記憶するマイクロコード(「uコード」)読取り専用メモリ(「ROM」:read only memory)をも含み得る。少なくとも1つの実施例では、実行ユニット908は、パック命令セット909に対処するための論理を含み得る。少なくとも1つの実施例では、パック命令セット909を、命令を実行するための関連する回路要素とともに汎用プロセッサ902の命令セットに含めることによって、多くのマルチメディア・アプリケーションによって使用される演算が、汎用プロセッサ902中のパック・データを使用して実施され得る。1つ又は複数の実施例では、多くのマルチメディア・アプリケーションが、パック・データの演算を実施するためにプロセッサのデータ・バスの全幅を使用することによって加速され、より効率的に実行され得、これは、一度に1つのデータ要素ずつ1つ又は複数の演算を実施するために、プロセッサのデータ・バスにわたってより小さい単位のデータを転送する必要をなくし得る。
【0062】
少なくとも1つの実施例では、実行ユニット908はまた、マイクロコントローラ、組み込みプロセッサ、グラフィックス・デバイス、DSP、及び他のタイプの論理回路において使用され得る。少なくとも1つの実施例では、コンピュータ・システム900は、限定はしないが、メモリ920を含み得る。少なくとも1つの実施例では、メモリ920は、ダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイス、スタティック・ランダム・アクセス・メモリ(「SRAM」)デバイス、フラッシュ・メモリ・デバイス、又は他のメモリ・デバイスとして実装され得る。少なくとも1つの実施例では、メモリ920は、プロセッサ902によって実行され得るデータ信号によって表される(1つ又は複数の)命令919及び/又はデータ921を記憶し得る。
【0063】
少なくとも1つの実施例では、システム論理チップが、プロセッサ・バス910及びメモリ920に結合され得る。少なくとも1つの実施例では、システム論理チップは、限定はしないが、メモリ・コントローラ・ハブ(「MCH」:memory controller hub)916を含み得、プロセッサ902は、プロセッサ・バス910を介してMCH916と通信し得る。少なくとも1つの実施例では、MCH916は、命令及びデータ・ストレージのための、並びにグラフィックス・コマンド、データ及びテクスチャのストレージのための、高帯域幅メモリ経路918をメモリ920に提供し得る。少なくとも1つの実施例では、MCH916は、プロセッサ902と、メモリ920と、コンピュータ・システム900中の他の構成要素との間でデータ信号をダイレクトし、プロセッサ・バス910と、メモリ920と、システムI/O922との間でデータ信号をブリッジし得る。少なくとも1つの実施例では、システム論理チップは、グラフィックス・コントローラに結合するためのグラフィックス・ポートを提供し得る。少なくとも1つの実施例では、MCH916は、高帯域幅メモリ経路918を通してメモリ920に結合され得、グラフィックス/ビデオ・カード912は、アクセラレーテッド・グラフィックス・ポート(「AGP」:Accelerated Graphics Port)相互接続914を通してMCH916に結合され得る。
【0064】
少なくとも1つの実施例では、コンピュータ・システム900は、MCH916をI/Oコントローラ・ハブ(「ICH」:I/O controller hub)930に結合するためのプロプライエタリ・ハブ・インターフェース・バスである、システムI/O922を使用し得る。少なくとも1つの実施例では、ICH930は、ローカルI/Oバスを介していくつかのI/Oデバイスに直接接続を提供し得る。少なくとも1つの実施例では、ローカルI/Oバスは、限定はしないが、周辺機器をメモリ920、チップセット、及びプロセッサ902に接続するための高速I/Oバスを含み得る。実例は、限定はしないが、オーディオ・コントローラ929と、ファームウェア・ハブ(「フラッシュBIOS」)928と、ワイヤレス・トランシーバ926と、データ・ストレージ924と、ユーザ入力及びキーボード・インターフェース925を含んでいるレガシーI/Oコントローラ923と、ユニバーサル・シリアル・バス(「USB」:Universal Serial Bus)などのシリアル拡張ポート927と、ネットワーク・コントローラ934とを含み得る。データ・ストレージ924は、ハード・ディスク・ドライブ、フロッピー・ディスク・ドライブ、CD-ROMデバイス、フラッシュ・メモリ・デバイス、又は他の大容量ストレージ・デバイスを備え得る。
【0065】
少なくとも1つの実施例では、図9は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、他の実施例では、図9は、例示的なシステム・オン・チップ(「SoC」)を示し得る。少なくとも1つの実施例では、デバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)又はそれらの何らかの組合せで相互接続され得る。少なくとも1つの実施例では、コンピュータ・システム900の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL:compute express link)相互接続を使用して相互接続される。
【0066】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、図7A及び/又は図7Bと併せて以下で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のために図9のシステムにおいて使用され得る。
【0067】
そのような構成要素は、アップスケールされた解像度と、低減されたアーティファクト存在と、視覚的品質向上とを伴う画像又はビデオ・コンテンツなど、向上されたコンテンツを生成するために使用され得る。
【0068】
図10は、少なくとも1つの実施例による、プロセッサ1010を利用するための電子デバイス1000を示すブロック図である。少なくとも1つの実施例では、電子デバイス1000は、たとえば、限定はしないが、ノートブック、タワー・サーバ、ラック・サーバ、ブレード・サーバ、ラップトップ、デスクトップ、タブレット、モバイル・デバイス、電話、組み込みコンピュータ、又は任意の他の好適な電子デバイスであり得る。
【0069】
少なくとも1つの実施例では、システム1000は、限定はしないが、任意の好適な数又は種類の構成要素、周辺機器、モジュール、又はデバイスに通信可能に結合されたプロセッサ1010を含み得る。少なくとも1つの実施例では、プロセッサ1010は、1℃バス、システム管理バス(「SMBus」:System Management Bus)、ロー・ピン・カウント(LPC:Low Pin Count)バス、シリアル周辺インターフェース(「SPI」:Serial Peripheral Interface)、高精細度オーディオ(「HDA」:High Definition Audio)バス、シリアル・アドバンス・テクノロジー・アタッチメント(「SATA」:Serial Advance Technology Attachment)バス、ユニバーサル・シリアル・バス(「USB」)(バージョン1、2、3)、又はユニバーサル非同期受信機/送信機(「UART」:Universal Asynchronous Receiver/Transmitter)バスなど、バス又はインターフェースを使用して結合した。少なくとも1つの実施例では、図10は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、他の実施例では、図10は、例示的なシステム・オン・チップ(「SoC」)を示し得る。少なくとも1つの実施例では、図10に示されているデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)又はそれらの何らかの組合せで相互接続され得る。少なくとも1つの実施例では、図10の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL)相互接続を使用して相互接続される。
【0070】
少なくとも1つの実施例では、図10は、ディスプレイ1024、タッチ・スクリーン1025、タッチ・パッド1030、ニア・フィールド通信ユニット(「NFC」:Near Field Communication)1045、センサ・ハブ1040、熱センサ1046、エクスプレス・チップセット(「EC」:Express Chipset)1035、トラステッド・プラットフォーム・モジュール(「TPM」:Trusted Platform Module)1038、BIOS/ファームウェア/フラッシュ・メモリ(「BIOS、FWフラッシュ」:BIOS/firmware/flash memory)1022、DSP1060、ソリッド・ステート・ディスク(「SSD」:Solid State Disk)又はハード・ディスク・ドライブ(「HDD」:Hard Disk Drive)などのドライブ1020、ワイヤレス・ローカル・エリア・ネットワーク・ユニット(「WLAN」:wireless local area network)1050、Bluetoothユニット1052、ワイヤレス・ワイド・エリア・ネットワーク・ユニット(「WWAN」:Wireless Wide Area Network)1056、全地球測位システム(GPS:Global Positioning System)1055、USB3.0カメラなどのカメラ(「USB3.0カメラ」)1054、及び/或いは、たとえばLPDDR3規格において実装された低電力ダブル・データ・レート(「LPDDR」:Low Power Double Data Rate)メモリ・ユニット(「LPDDR3」)1015を含み得る。これらの構成要素は、各々、任意の好適な様式で実装され得る。
【0071】
少なくとも1つの実施例では、上記で説明された構成要素を通して、他の構成要素がプロセッサ1010に通信可能に結合され得る。少なくとも1つの実施例では、加速度計1041と、周囲光センサ(「ALS」:Ambient Light Sensor)1042と、コンパス1043と、ジャイロスコープ1044とが、センサ・ハブ1040に通信可能に結合され得る。少なくとも1つの実施例では、熱センサ1039と、ファン1037と、キーボード1046と、タッチ・パッド1030とが、EC1035に通信可能に結合され得る。少なくとも1つの実施例では、スピーカー1063と、ヘッドフォン1064と、マイクロフォン(「mic」)1065とが、オーディオ・ユニット(「オーディオ・コーデック及びクラスdアンプ」)1062に通信可能に結合され得、オーディオ・ユニット1062は、DSP1060に通信可能に結合され得る。少なくとも1つの実施例では、オーディオ・ユニット1064は、たとえば、限定はしないが、オーディオ・コーダ/デコーダ(「コーデック」)及びクラスD増幅器を含み得る。少なくとも1つの実施例では、SIMカード(「SIM」)1057は、WWANユニット1056に通信可能に結合され得る。少なくとも1つの実施例では、WLANユニット1050及びBluetoothユニット1052などの構成要素、並びにWWANユニット1056は、次世代フォーム・ファクタ(「NGFF」:Next Generation Form Factor)において実装され得る。
【0072】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、図7a及び/又は図7bと併せて以下で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715は、本明細書で説明されるニューラル・ネットワーク訓練動作、ニューラル・ネットワーク機能及び/又はアーキテクチャ、或いはニューラル・ネットワーク使用事例を使用して計算された重みパラメータに少なくとも部分的に基づいて、推論又は予測動作のために図10のシステムにおいて使用され得る。
【0073】
そのような構成要素は、アップスケールされた解像度と、低減されたアーティファクト存在と、視覚的品質向上とを伴う画像又はビデオ・コンテンツなど、向上されたコンテンツを生成するために使用され得る。
【0074】
図11は、少なくとも1つの実施例による、処理システムのブロック図である。少なくとも1つの実施例では、システム1100は、1つ又は複数のプロセッサ1102と1つ又は複数のグラフィックス・プロセッサ1108とを含み、単一プロセッサ・デスクトップ・システム、マルチプロセッサ・ワークステーション・システム、或いは多数のプロセッサ1102又はプロセッサ・コア1107を有するサーバ・システムであり得る。少なくとも1つの実施例では、システム1100は、モバイル・デバイス、ハンドヘルド・デバイス、又は組み込みデバイスにおいて使用するためのシステム・オン・チップ(SoC)集積回路内に組み込まれた処理プラットフォームである。
【0075】
少なくとも1つの実施例では、システム1100は、サーバ・ベースのゲーミング・プラットフォーム、ゲーム及びメディア・コンソールを含むゲーム・コンソール、モバイル・ゲーミング・コンソール、ハンドヘルド・ゲーム・コンソール、又はオンライン・ゲーム・コンソールを含むことができるか、或いはそれらの内部に組み込まれ得る。少なくとも1つの実施例では、システム1100は、モバイル・フォン、スマート・フォン、タブレット・コンピューティング・デバイス又はモバイル・インターネット・デバイスである。少なくとも1つの実施例では、処理システム1100はまた、スマート・ウォッチ・ウェアラブル・デバイス、スマート・アイウェア・デバイス、拡張現実デバイス、又は仮想現実デバイスなどのウェアラブル・デバイスを含むことができるか、それらと結合することができるか、又はそれらの内部に組み込まれ得る。少なくとも1つの実施例では、処理システム1100は、1つ又は複数のプロセッサ1102と、1つ又は複数のグラフィックス・プロセッサ1108によって生成されるグラフィカル・インターフェースとを有するテレビ又はセット・トップ・ボックス・デバイスである。
【0076】
少なくとも1つの実施例では、1つ又は複数のプロセッサ1102は、各々、実行されたときにシステム及びユーザ・ソフトウェアのための動作を実施する命令を処理するための1つ又は複数のプロセッサ・コア1107を含む。少なくとも1つの実施例では、1つ又は複数のプロセッサ・コア1107の各々は、特定の命令セット1109を処理するように構成される。少なくとも1つの実施例では、命令セット1109は、複合命令セット・コンピューティング(CISC:Complex Instruction Set Computing)、縮小命令セット・コンピューティング(RISC)、又は超長命令語(VLIW)を介したコンピューティングを容易にし得る。少なくとも1つの実施例では、プロセッサ・コア1107は、各々、異なる命令セット1109を処理し得、命令セット1109は、他の命令セットのエミュレーションを容易にするための命令を含み得る。少なくとも1つの実施例では、プロセッサ・コア1107はまた、デジタル信号プロセッサ(DSP)などの他の処理デバイスを含み得る。
【0077】
少なくとも1つの実施例では、プロセッサ1102はキャッシュ・メモリ1104を含む。少なくとも1つの実施例では、プロセッサ1102は、単一の内部キャッシュ又は複数のレベルの内部キャッシュを有することができる。少なくとも1つの実施例では、キャッシュ・メモリは、プロセッサ1102の様々な構成要素の間で共有される。少なくとも1つの実施例では、プロセッサ1102はまた、外部キャッシュ(たとえば、レベル3(L3)キャッシュ又はラスト・レベル・キャッシュ(LLC:Last Level Cache))(図示せず)を使用し、外部キャッシュは、知られているキャッシュ・コヒーレンシ技法を使用してプロセッサ・コア1107の間で共有され得る。少なくとも1つの実施例では、追加として、レジスタ・ファイル1106がプロセッサ1102中に含まれ、レジスタ・ファイル1106は、異なるタイプのデータを記憶するための異なるタイプのレジスタ(たとえば、整数レジスタ、浮動小数点レジスタ、ステータス・レジスタ、及び命令ポインタ・レジスタ)を含み得る。少なくとも1つの実施例では、レジスタ・ファイル1106は、汎用レジスタ又は他のレジスタを含み得る。
【0078】
少なくとも1つの実施例では、1つ又は複数のプロセッサ1102は、アドレス、データ、又は制御信号などの通信信号を、プロセッサ1102とシステム1100中の他の構成要素との間で送信するために、1つ又は複数のインターフェース・バス1110と結合される。少なくとも1つの実施例では、1つの実施例におけるインターフェース・バス1110は、ダイレクト・メディア・インターフェース(DMI:Direct Media Interface)バスのバージョンなどのプロセッサ・バスであり得る。少なくとも1つの実施例では、インターフェース1110は、DMIバスに限定されず、1つ又は複数の周辺構成要素相互接続バス(たとえば、PCI、PCI Express)、メモリ・バス、又は他のタイプのインターフェース・バスを含み得る。少なくとも1つの実施例では、(1つ又は複数の)プロセッサ1102は、統合されたメモリ・コントローラ1116と、プラットフォーム・コントローラ・ハブ1130とを含む。少なくとも1つの実施例では、メモリ・コントローラ1116は、メモリ・デバイスとシステム1100の他の構成要素との間の通信を容易にし、プラットフォーム・コントローラ・ハブ(PCH:platform controller hub)1130は、ローカルI/Oバスを介してI/Oデバイスへの接続を提供する。
【0079】
少なくとも1つの実施例では、メモリ・デバイス1120は、ダイナミック・ランダム・アクセス・メモリ(DRAM)デバイス、スタティック・ランダム・アクセス・メモリ(SRAM)デバイス、フラッシュ・メモリ・デバイス、相変化メモリ・デバイス、又はプロセス・メモリとして働くのに好適な性能を有する何らかの他のメモリ・デバイスであり得る。少なくとも1つの実施例では、メモリ・デバイス1120は、1つ又は複数のプロセッサ1102がアプリケーション又はプロセスを実行するときの使用のためのデータ1122及び命令1121を記憶するために、システム1100のためのシステム・メモリとして動作することができる。少なくとも1つの実施例では、メモリ・コントローラ1116はまた、随意の外部グラフィックス・プロセッサ1112と結合し、外部グラフィックス・プロセッサ1112は、グラフィックス動作及びメディア動作を実施するために、プロセッサ1102中の1つ又は複数のグラフィックス・プロセッサ1108と通信し得る。少なくとも1つの実施例では、ディスプレイ・デバイス1111は、(1つ又は複数の)プロセッサ1102に接続することができる。少なくとも1つの実施例では、ディスプレイ・デバイス1111は、モバイル電子デバイス又はラップトップ・デバイスの場合のような内部ディスプレイ・デバイス、或いは、ディスプレイ・インターフェース(たとえば、DisplayPortなど)を介して取り付けられた外部ディスプレイ・デバイスのうちの1つ又は複数を含むことができる。少なくとも1つの実施例では、ディスプレイ・デバイス1111は、仮想現実(VR:virtual reality)アプリケーション又は拡張現実(AR:augmented reality)アプリケーションにおいて使用するための立体ディスプレイ・デバイスなどの頭部装着型ディスプレイ(HMD:head mounted display)を含むことができる。
【0080】
少なくとも1つの実施例では、プラットフォーム・コントローラ・ハブ1130は、周辺機器が高速I/Oバスを介してメモリ・デバイス1120及びプロセッサ1102に接続することを可能にする。少なくとも1つの実施例では、I/O周辺機器は、限定はしないが、オーディオ・コントローラ1146と、ネットワーク・コントローラ1134と、ファームウェア・インターフェース1128と、ワイヤレス・トランシーバ1126と、タッチ・センサ1125と、データ・ストレージ・デバイス1124(たとえば、ハード・ディスク・ドライブ、フラッシュ・メモリなど)とを含む。少なくとも1つの実施例では、データ・ストレージ・デバイス1124は、ストレージ・インターフェース(たとえば、SATA)を介して、又は周辺構成要素相互接続バス(たとえば、PCI、PCI Express)などの周辺バスを介して、接続することができる。少なくとも1つの実施例では、タッチ・センサ1125は、タッチ・スクリーン・センサ、圧力センサ、又は指紋センサを含むことができる。少なくとも1つの実施例では、ワイヤレス・トランシーバ1126は、Wi-Fiトランシーバ、Bluetoothトランシーバ、或いは3G、4G、又はロング・ターム・エボリューション(LTE:Long Term Evolution)トランシーバなどのモバイル・ネットワーク・トランシーバであり得る。少なくとも1つの実施例では、ファームウェア・インターフェース1128は、システム・ファームウェアとの通信を可能にし、たとえば、ユニファイド・エクステンシブル・ファームウェア・インターフェース(UEFI:unified extensible firmware interface)であり得る。少なくとも1つの実施例では、ネットワーク・コントローラ1134は、ワイヤード・ネットワークへのネットワーク接続を可能にすることができる。少なくとも1つの実施例では、高性能ネットワーク・コントローラ(図示せず)は、インターフェース・バス1110と結合する。少なくとも1つの実施例では、オーディオ・コントローラ1146は、マルチチャネル高精細度オーディオ・コントローラである。少なくとも1つの実施例では、システム1100は、レガシー(たとえば、パーソナル・システム2(PS/2:Personal System 2))デバイスをシステムに結合するための随意のレガシーI/Oコントローラ1140を含む。少なくとも1つの実施例では、プラットフォーム・コントローラ・ハブ1130は、キーボードとマウス1143との組合せ、カメラ1144、又は他のUSB入力デバイスなど、1つ又は複数のユニバーサル・シリアル・バス(USB)コントローラ1142接続入力デバイスにも接続することができる。
【0081】
少なくとも1つの実施例では、メモリ・コントローラ1116及びプラットフォーム・コントローラ・ハブ1130のインスタンスが、外部グラフィックス・プロセッサ1112などの慎重な外部グラフィックス・プロセッサに組み込まれ得る。少なくとも1つの実施例では、プラットフォーム・コントローラ・ハブ1130及び/又はメモリ・コントローラ1116は、1つ又は複数のプロセッサ1102の外部にあり得る。たとえば、少なくとも1つの実施例では、システム1100は、外部のメモリ・コントローラ1116とプラットフォーム・コントローラ・ハブ1130とを含むことができ、それらは、(1つ又は複数の)プロセッサ1102と通信しているシステム・チップセット内のメモリ・コントローラ・ハブ及び周辺コントローラ・ハブとして構成され得る。
【0082】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、図7A及び/又は図7Bと併せて以下で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715の部分又はすべてが、グラフィックス・プロセッサ1500に組み込まれ得る。たとえば、少なくとも1つの実施例では、本明細書で説明される訓練及び/又は推論技法は、グラフィックス・プロセッサにおいて具体化されたALUのうちの1つ又は複数を使用し得る。その上、少なくとも1つの実施例では、本明細書で説明される推論及び/又は訓練動作は、図7A又は図7Bに示されている論理以外の論理を使用して行われ得る。少なくとも1つの実施例では、重みパラメータは、本明細書で説明される1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、使用事例、又は訓練技法を実施するためのグラフィックス・プロセッサのALUを構成する(示されている又は示されていない)オンチップ又はオフチップ・メモリ及び/又はレジスタに記憶され得る。
【0083】
そのような構成要素は、アップスケールされた解像度と、低減されたアーティファクト存在と、視覚的品質向上とを伴う画像又はビデオ・コンテンツなど、向上されたコンテンツを生成するために使用され得る。
【0084】
図12は、少なくとも1つの実施例による、1つ又は複数のプロセッサ・コア1202A~1202Nと、統合されたメモリ・コントローラ1214と、統合されたグラフィックス・プロセッサ1208とを有するプロセッサ1200のブロック図である。少なくとも1つの実施例では、プロセッサ1200は、破線ボックスによって表される追加コア1202Nまでの追加コアを含むことができる。少なくとも1つの実施例では、プロセッサ・コア1202A~1202Nの各々は、1つ又は複数の内部キャッシュ・ユニット1204A~1204Nを含む。少なくとも1つの実施例では、各プロセッサ・コアはまた、1つ又は複数の共有キャッシュド・ユニット1206へのアクセスを有する。
【0085】
少なくとも1つの実施例では、内部キャッシュ・ユニット1204A~1204Nと共有キャッシュ・ユニット1206とは、プロセッサ1200内のキャッシュ・メモリ階層を表す。少なくとも1つの実施例では、キャッシュ・メモリ・ユニット1204A~1204Nは、各プロセッサ・コア内の命令及びデータ・キャッシュの少なくとも1つのレベル、及びレベル2(L2)、レベル3(L3)、レベル4(L4)などの共有中間レベル・キャッシュの1つ又は複数のレベル、又はキャッシュの他のレベルを含み得、ここで、外部メモリの前の最高レベルのキャッシュは、LLCとして分類される。少なくとも1つの実施例では、キャッシュ・コヒーレンシ論理は、様々なキャッシュ・ユニット1206及び1204A~1204N間でコヒーレンシを維持する。
【0086】
少なくとも1つの実施例では、プロセッサ1200は、1つ又は複数のバス・コントローラ・ユニット1216とシステム・エージェント・コア1210とのセットをも含み得る。少なくとも1つの実施例では、1つ又は複数のバス・コントローラ・ユニット1216は、1つ又は複数のPCI又はPCIエクスプレス・バスなどの周辺バスのセットを管理する。少なくとも1つの実施例では、システム・エージェント・コア1210は、様々なプロセッサ構成要素のための管理機能性を提供する。少なくとも1つの実施例では、システム・エージェント・コア1210は、様々な外部メモリ・デバイス(図示せず)へのアクセスを管理するための1つ又は複数の統合されたメモリ・コントローラ1214を含む。
【0087】
少なくとも1つの実施例では、プロセッサ・コア1202A~1202Nのうちの1つ又は複数は、同時マルチスレッディングのサポートを含む。少なくとも1つの実施例では、システム・エージェント・コア1210は、マルチスレッド処理中にコア1202A~1202Nを協調させ、動作させるための構成要素を含む。少なくとも1つの実施例では、システム・エージェント・コア1210は、追加として、電力制御ユニット(PCU:power control unit)を含み得、PCUは、プロセッサ・コア1202A~1202N及びグラフィックス・プロセッサ1208の1つ又は複数の電力状態を調節するための論理及び構成要素を含む。
【0088】
少なくとも1つの実施例では、プロセッサ1200は、追加として、グラフィックス処理動作を実行するためのグラフィックス・プロセッサ1208を含む。少なくとも1つの実施例では、グラフィックス・プロセッサ1208は、共有キャッシュ・ユニット1206、及び1つ又は複数の統合されたメモリ・コントローラ1214を含むシステム・エージェント・コア1210と結合する。少なくとも1つの実施例では、システム・エージェント・コア1210は、1つ又は複数の結合されたディスプレイへのグラフィックス・プロセッサ出力を駆動するためのディスプレイ・コントローラ1211をも含む。少なくとも1つの実施例では、ディスプレイ・コントローラ1211はまた、少なくとも1つの相互接続を介してグラフィックス・プロセッサ1208と結合された別個のモジュールであり得るか、又はグラフィックス・プロセッサ1208内に組み込まれ得る。
【0089】
少なくとも1つの実施例では、プロセッサ1200の内部構成要素を結合するために、リング・ベースの相互接続ユニット1212が使用される。少なくとも1つの実施例では、ポイントツーポイント相互接続、切替え相互接続、又は他の技法などの代替相互接続ユニットが使用され得る。少なくとも1つの実施例では、グラフィックス・プロセッサ1208は、I/Oリンク1213を介してリング相互接続1212と結合する。
【0090】
少なくとも1つの実施例では、I/Oリンク1213は、様々なプロセッサ構成要素と、eDRAMモジュールなどの高性能組み込みメモリ・モジュール1218との間の通信を容易にするオン・パッケージI/O相互接続を含む、複数の種類のI/O相互接続のうちの少なくとも1つを表す。少なくとも1つの実施例では、プロセッサ・コア1202A~1202Nの各々と、グラフィックス・プロセッサ1208とは、共有ラスト・レベル・キャッシュとして組み込みメモリ・モジュール1218を使用する。
【0091】
少なくとも1つの実施例では、プロセッサ・コア1202A~1202Nは、共通の命令セット・アーキテクチャを実行する同種のコアである。少なくとも1つの実施例では、プロセッサ・コア1202A~1202Nは、命令セット・アーキテクチャ(ISA:instruction set architecture)という観点から異種であり、ここで、プロセッサ・コア1202A~1202Nのうちの1つ又は複数は、共通の命令セットを実行し、プロセッサ・コア1202A~1202Nのうちの1つ又は複数の他のコアは、共通の命令セットのサブセット、又は異なる命令セットを実行する。少なくとも1つの実施例では、プロセッサ・コア1202A~1202Nは、マイクロアーキテクチャという観点から異種であり、ここで、電力消費量が比較的高い1つ又は複数のコアは、電力消費量がより低い1つ又は複数の電力コアと結合する。少なくとも1つの実施例では、プロセッサ1200は、1つ又は複数のチップ上に、又はSoC集積回路として実装され得る。
【0092】
1つ又は複数の実施例に関連する推論及び/又は訓練動作を実施するために、推論及び/又は訓練論理715が使用される。推論及び/又は訓練論理715に関する詳細は、図7a及び/又は図7bと併せて以下で提供される。少なくとも1つの実施例では、推論及び/又は訓練論理715の部分又はすべてが、プロセッサ1200に組み込まれ得る。たとえば、少なくとも1つの実施例では、本明細書で説明される訓練及び/又は推論技法は、グラフィックス・プロセッサ1512、(1つ又は複数の)グラフィックス・コア1202A~1202N、又は図12中の他の構成要素において具体化されたALUのうちの1つ又は複数を使用し得る。その上、少なくとも1つの実施例では、本明細書で説明される推論及び/又は訓練動作は、図7A又は図7Bに示されている論理以外の論理を使用して行われ得る。少なくとも1つの実施例では、重みパラメータは、本明細書で説明される1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、使用事例、又は訓練技法を実施するためのグラフィックス・プロセッサ1200のALUを構成する(示されている又は示されていない)オンチップ又はオフチップ・メモリ及び/又はレジスタに記憶され得る。
【0093】
そのような構成要素は、アップスケールされた解像度と、低減されたアーティファクト存在と、視覚的品質向上とを伴う画像又はビデオ・コンテンツなど、向上されたコンテンツを生成するために使用され得る。
【0094】
仮想化されたコンピューティング・プラットフォーム
図13は、少なくとも1つの実施例による、画像処理及び推論パイプラインを生成及び導入するプロセス1300のための例示的なデータ・フロー図である。少なくとも1つの実施例では、プロセス1300は、1つ又は複数の施設1302において、撮像デバイス、処理デバイス、及び/又は他のデバイス・タイプとともに使用するために導入され得る。プロセス1300は、訓練システム1304及び/又は導入システム1306内で実行され得る。少なくとも1つの実施例では、訓練システム1304は、導入システム1306における使用のための機械学習モデル(たとえば、ニューラル・ネットワーク、物体検出アルゴリズム、コンピュータ・ビジョン・アルゴリズムなど)の訓練、導入、及び実装を実施するために使用され得る。少なくとも1つの実施例では、導入システム1306は、施設1302におけるインフラストラクチャ要件を低減するために、処理及びコンピュート・リソースを分散型コンピューティング環境の間でオフロードするように構成され得る。少なくとも1つの実施例では、パイプライン中の1つ又は複数のアプリケーションは、アプリケーションの実行中に導入システム1306のサービス(たとえば、推論、視覚化、コンピュート、AIなど)を使用するか、又はコールし得る。
【0095】
少なくとも1つの実施例では、先進処理及び推論パイプラインにおいて使用されるアプリケーションのいくつかは、1つ又は複数の処理ステップを実施するために機械学習モデル又は他のAIを使用し得る。少なくとも1つの実施例では、機械学習モデルは、施設1302において生成された(及び、施設1302において1つ又は複数のピクチャ・アーカイブ及び通信システム(PACS:picture archiving and communication system)サーバに記憶された)(撮像データなどの)データ1308を使用して、施設1302において訓練され得るか、(1つ又は複数の)別の施設からの撮像又はシーケンシング・データ1308を使用して訓練され得るか、或いはそれらの組合せであり得る。少なくとも1つの実施例では、訓練システム1304は、導入システム1306のための実用的で導入可能な機械学習モデルを生成するためのアプリケーション、サービス、及び/又は他のリソースを提供するために使用され得る。
【0096】
少なくとも1つの実施例では、モデル・レジストリ1324は、バージョン管理及び物体メタデータをサポートし得る物体ストレージによってバックアップされ得る。少なくとも1つの実施例では、物体ストレージは、たとえば、クラウド・プラットフォーム内から、クラウド・ストレージ(たとえば、図14のクラウド1426)互換アプリケーション・プログラミング・インターフェース(API:application programming interface)を通してアクセス可能であり得る。少なくとも1つの実施例では、モデル・レジストリ1324内の機械学習モデルは、システムの開発者又はパートナーがAPIと対話することによって、アップロード、リスト化、修正、又は削除され得る。少なくとも1つの実施例では、APIは、適切な資格をもつユーザがモデルをアプリケーションに関連付けることを可能にする方法へのアクセスを提供し得、それにより、モデルは、アプリケーションのコンテナ化されたインスタンス化の実行の一部として実行され得る。
【0097】
少なくとも1つの実施例では、訓練パイプライン1404(図14)は、施設1302がそれ自体の機械学習モデルを訓練しているか、或いは、最適化又は更新される必要がある既存の機械学習モデルを有するシナリオを含み得る。少なくとも1つの実施例では、(1つ又は複数の)撮像デバイス、シーケンシング・デバイス、及び/又は他のデバイス・タイプによって生成された撮像データ1308が受信され得る。少なくとも1つの実施例では、撮像データ1308が受信されると、機械学習モデルについてのグランド・トゥルース・データとして使用されるべき撮像データ1308に対応するアノテーションを生成するのを補助するために、AI支援アノテーション1310が使用され得る。少なくとも1つの実施例では、AI支援アノテーション1310は、1つ又は複数の機械学習モデル(たとえば、畳み込みニューラル・ネットワーク(CNN:convolutional neural network))を含み得、1つ又は複数の機械学習モデルは、(たとえば、いくつかのデバイスからの)いくつかのタイプの撮像データ1308に対応するアノテーションを生成するように訓練され得る。少なくとも1つの実施例では、次いで、AI支援アノテーション1310は、グランド・トゥルース・データを生成するために、直接使用され得るか、或いは、アノテーション・ツールを使用して調整又は微調整され得る。少なくとも1つの実施例では、AI支援アノテーション1310、ラベル付きクリニック・データ1312、又はそれらの組合せが、機械学習モデルを訓練するためのグランド・トゥルース・データとして使用され得る。少なくとも1つの実施例では、訓練された機械学習モデルは出力モデル1316と呼ばれることがあり、本明細書で説明されるように、導入システム1306によって使用され得る。
【0098】
少なくとも1つの実施例では、訓練パイプライン1404(図14)は、施設1302が、導入システム1306中の1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実施する際に使用するための機械学習モデルを必要とするが、施設1302は現在そのような機械学習モデルを有しないことがある(或いは、そのような目的のために最適化された、効率的な、又は有効なモデルを有しないことがある)シナリオを含み得る。少なくとも1つの実施例では、既存の機械学習モデルが、モデル・レジストリ1324から選択され得る。少なくとも1つの実施例では、モデル・レジストリ1324は、撮像データに対して様々な異なる推論タスクを実施するように訓練された機械学習モデルを含み得る。少なくとも1つの実施例では、モデル・レジストリ1324中の機械学習モデルは、施設1302とは異なる施設(たとえば、離れた場所にある施設)からの撮像データに関して訓練されていることがある。少なくとも1つの実施例では、機械学習モデルは、1つのロケーション、2つのロケーション、又は任意の数のロケーションからの撮像データに関して訓練されていることがある。少なくとも1つの実施例では、特定のロケーションからの撮像データに関して訓練されているとき、訓練は、そのロケーションにおいて行われ得るか、或いは少なくとも、撮像データの機密性を保護するか又は撮像データが構外へ転送されるのを制限する様式で、行われ得る。少なくとも1つの実施例では、1つのロケーションにおいてモデルが訓練されると、又は部分的に訓練されると、機械学習モデルはモデル・レジストリ1324に追加され得る。少なくとも1つの実施例では、次いで、機械学習モデルは、任意の数の他の施設において再訓練又は更新され得、再訓練又は更新されたモデルが、モデル・レジストリ1324において利用可能にされ得る。少なくとも1つの実施例では、次いで、機械学習モデルは、モデル・レジストリ1324から選択され得、出力モデル1316と呼ばれることがあり、導入システムの1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実施するために導入システム1306において使用され得る。
【0099】
少なくとも1つの実施例では、訓練パイプライン1404(図14)、シナリオは、施設1302が、導入システム1306中の1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実施する際に使用するための機械学習モデルを必要とすることを含み得るが、施設1302は現在そのような機械学習モデルを有しないことがある(或いは、そのような目的のために最適化された、効率的な、又は有効なモデルを有しないことがある)。少なくとも1つの実施例では、モデル・レジストリ1324から選択された機械学習モデルは、母集団、機械学習モデルを訓練するために使用される訓練データのロバストネス、訓練データの異常の多様性、及び/又は訓練データに伴う他の問題における差異のために、施設1302において生成される撮像データ1308のために微調整又は最適化されないことがある。少なくとも1つの実施例では、機械学習モデルを再訓練又は更新するためのグランド・トゥルース・データとして使用されるべき撮像データ1308に対応するアノテーションを生成するのを補助するために、AI支援アノテーション1310が使用され得る。少なくとも1つの実施例では、ラベル付きデータ1312が、機械学習モデルを訓練するためのグランド・トゥルース・データとして使用され得る。少なくとも1つの実施例では、機械学習モデルを再訓練又は更新することは、モデル訓練1314と呼ばれることがある。少なくとも1つの実施例では、モデル訓練1314、たとえばAI支援アノテーション1310、ラベル付きクリニック・データ1312、又はそれらの組合せは、機械学習モデルを再訓練又は更新するためのグランド・トゥルース・データとして使用され得る。少なくとも1つの実施例では、訓練された機械学習モデルは出力モデル1316と呼ばれることがあり、本明細書で説明されるように、導入システム1306によって使用され得る。
【0100】
少なくとも1つの実施例では、導入システム1306は、ソフトウェア1318、サービス1320、ハードウェア1322、並びに/又は他の構成要素、特徴、及び機能性を含み得る。少なくとも1つの実施例では、導入システム1306は、ソフトウェア「スタック」を含み得、それにより、ソフトウェア1318は、サービス1320の上に築かれ得、サービス1320を使用して処理タスクのいくつか又はすべてを実施し得、サービス1320及びソフトウェア1318は、ハードウェア1322の上に築かれ、ハードウェア1322を使用して、導入システム1306の処理、ストレージ、及び/又は他のコンピュート・タスクを実行し得る。少なくとも1つの実施例では、ソフトウェア1318は、任意の数の異なるコンテナを含み得、各コンテナは、アプリケーションのインスタンス化を実行し得る。少なくとも1つの実施例では、各アプリケーションは、先進処理及び推論パイプライン中の1つ又は複数の処理タスク(たとえば、推論、物体検出、特徴検出、セグメント化、画像強調、キャリブレーションなど)を実施し得る。少なくとも1つの実施例では、先進処理及び推論パイプラインは、(たとえば、使用可能なデータ・タイプに出力をコンバートするために)パイプラインを通して処理した後に、各コンテナによる使用及び/又は施設1302による使用のための撮像データを受信及び構成するコンテナに加えて、撮像データ1308を処理するために所望されるか又は必要とされる異なるコンテナの選択に基づいて、定義され得る。少なくとも1つの実施例では、(たとえば、パイプラインを作り上げる)ソフトウェア1318内のコンテナの組合せは、(本明細書でより詳細に説明されるように)仮想機器と呼ばれることがあり、仮想機器は、サービス1320及びハードウェア1322を活用して、コンテナにおいてインスタンス化されたアプリケーションのいくつか又はすべての処理タスクを実行し得る。
【0101】
少なくとも1つの実施例では、データ処理パイプラインは、推論要求(たとえば、導入システム1306のユーザからの要求)に応答して、特定のフォーマットで入力データ(たとえば、撮像データ1308)を受信し得る。少なくとも1つの実施例では、入力データは、1つ又は複数の撮像デバイスによって生成される1つ又は複数の画像、ビデオ、及び/又は他のデータ表現を表し得る。少なくとも1つの実施例では、データは、1つ又は複数のアプリケーションによる処理のためにデータを準備するために、データ処理パイプラインの一部としての事前処理を受け得る。少なくとも1つの実施例では、次のアプリケーションのための出力データを準備するために、並びに/或いは、(たとえば、推論要求への応答としての)ユーザによる送信及び/又は使用のための出力データを準備するために、パイプラインの1つ又は複数の推論タスク又は他の処理タスクの出力に対して後処理が実施され得る。少なくとも1つの実施例では、推論タスクは、訓練システム1304の出力モデル1316を含み得る、訓練された又は導入されたニューラル・ネットワークなど、1つ又は複数の機械学習モデルによって実施され得る。
【0102】
少なくとも1つの実施例では、データ処理パイプラインのタスクは、(1つ又は複数の)コンテナ中にカプセル化され得、(1つ又は複数の)コンテナは、各々、アプリケーションの個別の完全に機能的なインスタンス化と、機械学習モデルを参照することが可能である仮想化コンピューティング環境とを表す。少なくとも1つの実施例では、コンテナ又はアプリケーションは、(本明細書でより詳細に説明される)コンテナ・レジストリのプライベート(たとえば、アクセスの制限された)エリアに公開され得、訓練された又は導入されたモデルは、モデル・レジストリ1324に記憶され、1つ又は複数のアプリケーションに関連し得る。少なくとも1つの実施例では、アプリケーションの画像(たとえば、コンテナ画像)は、コンテナ・レジストリにおいて利用可能であり得、パイプラインにおける導入のためにユーザによってコンテナ・レジストリから選択されると、画像は、ユーザのシステムによる使用のためのアプリケーションのインスタンス化のためのコンテナを生成するために使用され得る。
【0103】
少なくとも1つの実施例では、開発者(たとえば、ソフトウェア開発者、臨床医、医師など)は、供給されたデータに対して画像処理及び/又は推論を実施するためのアプリケーションを(たとえばコンテナとして)開発、公開、及び記憶し得る。少なくとも1つの実施例では、開発、公開、及び/又は記憶は、(たとえば、開発されたアプリケーション及び/又はコンテナがシステムに準拠するか又はシステムと互換性があることを確実にするために)システムに関連するソフトウェア開発キット(SDK:software development kit)を使用して実施され得る。少なくとも1つの実施例では、開発されたアプリケーションは、システム(たとえば、図14のシステム1400)としてサービス1320のうちの少なくともいくつかをサポートし得るSDKを用いて、ローカルに(たとえば、第1の施設において、第1の施設からのデータに対して)テストされ得る。少なくとも1つの実施例では、DICOM物体は、1つから数百個の画像又は他のデータ・タイプをどこにでも含んでいることがあるので、及びデータの変動により、開発者は、入って来るデータの抽出及び準備を管理すること(たとえば、アプリケーションのための構築物を設定すること、事前処理をアプリケーションに組み込むことなど)について責任を負うことがある。少なくとも1つの実施例では、システム1400によって(たとえば、精度について)検証されると、アプリケーションは、ユーザの施設(たとえば、第2の施設)におけるデータに対して1つ又は複数の処理タスクを実施するために、ユーザによる選択及び/又は実装のためにコンテナ・レジストリにおいて利用可能になり得る。
【0104】
少なくとも1つの実施例では、次いで、開発者は、アプリケーション又はコンテナを、システム(たとえば、図14のシステム1400)のユーザによるアクセス及び使用のためにネットワークを通して共有し得る。少なくとも1つの実施例では、完成した及び検証されたアプリケーション又はコンテナは、コンテナ・レジストリに記憶され得、関連する機械学習モデルは、モデル・レジストリ1324に記憶され得る。少なくとも1つの実施例では、推論又は画像処理要求を提供する要求元エンティティは、アプリケーション、コンテナ、データセット、機械学習モデルなどについてコンテナ・レジストリ及び/又はモデル・レジストリ1324をブラウズし、データ処理パイプライン中に含めるための要素の所望の組合せを選択し、撮像処理要求をサブミットし得る。少なくとも1つの実施例では、要求は、要求を実施するために必要である入力データ(及び、いくつかの実例では、関連する患者データ)を含み得、並びに/或いは、要求を処理する際に実行されるべき(1つ又は複数の)アプリケーション及び/又は機械学習モデルの選択を含み得る。少なくとも1つの実施例では、次いで、要求は、データ処理パイプラインの処理を実施するために導入システム1306(たとえば、クラウド)の1つ又は複数の構成要素に渡され得る。少なくとも1つの実施例では、導入システム1306による処理は、コンテナ・レジストリ及び/又はモデル・レジストリ1324からの選択された要素(たとえば、アプリケーション、コンテナ、モデルなど)を参照することを含み得る。少なくとも1つの実施例では、パイプラインによって結果が生成されると、結果は、参照のために(たとえば、ローカルの、構内のワークステーション又は端末上で実行している視聴アプリケーション・スイートにおいて視聴するために)ユーザに返され得る。
【0105】
少なくとも1つの実施例では、パイプラインにおけるアプリケーション又はコンテナの処理又は実行を補助するために、サービス1320が活用され得る。少なくとも1つの実施例では、サービス1320は、コンピュート・サービス、人工知能(AI:artificial intelligence)サービス、視覚化サービス、及び/又は他のサービス・タイプを含み得る。少なくとも1つの実施例では、サービス1320は、ソフトウェア1318中の1つ又は複数のアプリケーションに共通である機能性を提供し得、したがって、機能性は、アプリケーションによってコール又は活用され得るサービスに対して抽象化され得る。少なくとも1つの実施例では、サービス1320によって提供される機能性は、動的に及びより効率的に稼働し得、また、(たとえば、並列コンピューティング・プラットフォーム1430(図14)を使用して)アプリケーションが並列にデータを処理することを可能にすることによって、良好にスケーリングし得る。少なくとも1つの実施例では、サービス1320によって与えられる同じ機能性を共有する各アプリケーションが、サービス1320のそれぞれのインスタンスを有することを必要とされるのではなく、サービス1320は、様々なアプリケーション間で及びそれらの間で共有され得る。少なくとも1つの実施例では、サービスは、非限定的な実例として、検出又はセグメント化タスクを実行するために使用され得る推論サーバ又はエンジンを含み得る。少なくとも1つの実施例では、機械学習モデル訓練及び/又は再訓練能力(capability)を提供し得るモデル訓練サービスが含まれ得る。少なくとも1つの実施例では、GPU加速データ(たとえば、DICOM、RIS、CIS、REST準拠、RPC、生など)抽出、リサイジング、スケーリング、及び/又は他の拡張を提供し得るデータ拡張サービスがさらに含まれ得る。少なくとも1つの実施例では、2次元(2D:two-dimensional)及び/又は3次元(3D:three-dimensional)のモデルにリアル感を追加するために、レイ・トレーシング、ラスタ化、ノイズ除去、鮮鋭化などの画像レンダリング効果を追加し得る視覚化サービスが使用され得る。少なくとも1つの実施例では、仮想機器のパイプライン内の他のアプリケーションについてビーム形成、セグメント化、推論、撮像、及び/又はサポートを提供する仮想機器サービスが含まれ得る。
【0106】
少なくとも1つの実施例では、サービス1320がAIサービス(たとえば、推論サービス)を含む場合、1つ又は複数の機械学習モデルは、(1つ又は複数の)機械学習モデル、又はその処理を、アプリケーション実行の一部として実行するように推論サービス(たとえば、推論サーバ)を(たとえば、APIコールとして)コールすることによって、実行され得る。少なくとも1つの実施例では、セグメント化タスクのための1つ又は複数の機械学習モデルを別のアプリケーションが含む場合、アプリケーションは、セグメント化タスクに関連する処理動作のうちの1つ又は複数を実施するための機械学習モデルを実行するように、推論サービスをコールし得る。少なくとも1つの実施例では、セグメント化アプリケーションと異常検出アプリケーションとを含む先進処理及び推論パイプラインを実装するソフトウェア1318は、1つ又は複数の推論タスクを実施するために各アプリケーションが同じ推論サービスをコールし得るので、合理化され得る。
【0107】
少なくとも1つの実施例では、ハードウェア1322は、GPU、CPU、グラフィックス・カード、AI/深層学習システム(たとえば、NVIDIAのDGXなどのAIスーパーコンピュータ)、クラウド・プラットフォーム、又はそれらの組合せを含み得る。少なくとも1つの実施例では、異なるタイプのハードウェア1322が、導入システム1306中のソフトウェア1318及びサービス1320の効率的で専用のサポートを提供するために使用され得る。少なくとも1つの実施例では、画像処理及び生成の効率、精度、及び有効性を改善するために、AI/深層学習システム内、クラウド・システム中、及び/又は導入システム1306の他の処理構成要素中で、ローカルで(たとえば、施設1302において)処理するためのGPU処理の使用が実装され得る。少なくとも1つの実施例では、ソフトウェア1318及び/又はサービス1320は、非限定的な実例として、深層学習、機械学習、及び/又は高性能コンピューティングに関するGPU処理のために最適化され得る。少なくとも1つの実施例では、導入システム1306及び/又は訓練システム1304のコンピューティング環境の少なくとも一部は、データセンタの1つ又は複数のスーパーコンピュータ又は高性能コンピューティング・システムにおいて、GPU最適化ソフトウェア(たとえば、NVIDIAのDGXシステムのハードウェアとソフトウェアとの組合せ)を用いて実行され得る。少なくとも1つの実施例では、ハードウェア1322は、任意の数のGPUを含み得、それらのGPUは、本明細書で説明されるように、データの並列処理を実施するためにコールされ得る。少なくとも1つの実施例では、クラウド・プラットフォームは、深層学習タスク、機械学習タスク、又は他のコンピューティング・タスクのGPU最適化実行のためのGPU処理をさらに含み得る。少なくとも1つの実施例では、クラウド・プラットフォーム(たとえば、NVIDIAのNGC)は、(たとえば、NVIDIAのDGXシステム上で提供される)(1つ又は複数の)AI/深層学習スーパーコンピュータ及び/又はGPU最適化ソフトウェアを、ハードウェア抽象化及びスケーリング・プラットフォームとして使用して、実行され得る。少なくとも1つの実施例では、クラウド・プラットフォームは、シームレスなスケーリング及びロード・バランシングを可能にするために、複数のGPUに対するアプリケーション・コンテナ・クラスタリング・システム又はオーケストレーション・システム(たとえば、KUBERNETES)を統合し得る。
【0108】
図14は、少なくとも1つの実施例による、撮像導入パイプラインを生成及び導入するための例示的なシステム1400のためのシステム図である。少なくとも1つの実施例では、システム1400は、図13のプロセス1300、並びに/又は先進処理及び推論パイプラインを含む他のプロセスを実装するために使用され得る。少なくとも1つの実施例では、システム1400は、訓練システム1304と導入システム1306とを含み得る。少なくとも1つの実施例では、訓練システム1304及び導入システム1306は、本明細書で説明されるように、ソフトウェア1318、サービス1320、及び/又はハードウェア1322を使用して実装され得る。
【0109】
少なくとも1つの実施例では、システム1400(たとえば、訓練システム1304及び/又は導入システム1306)は、(たとえば、クラウド1426を使用する)クラウド・コンピューティング環境において実装され得る。少なくとも1つの実施例では、システム1400は、ヘルスケア・サービス施設に関してローカルに、又はクラウド・コンピューティング・リソースとローカル・コンピューティング・リソースの両方の組合せとして、実装され得る。少なくとも1つの実施例では、クラウド1426中のAPIへのアクセスは、制定されたセキュリティ対策又はプロトコルを通して、許可されたユーザに限定され得る。少なくとも1つの実施例では、セキュリティ・プロトコルはウェブ・トークンを含み得、ウェブ・トークンは、認証(たとえば、AuthN、AuthZ、Glueconなど)サービスによって署名され得、適切な許可を持ち得る。少なくとも1つの実施例では、(本明細書で説明される)仮想機器のAPI、又はシステム1400の他のインスタンス化は、対話について検査又は許可されたパブリックIPのセットに限定され得る。
【0110】
少なくとも1つの実施例では、システム1400の様々な構成要素は、ワイヤード及び/又はワイヤレス通信プロトコルを介して、限定はしないがローカル・エリア・ネットワーク(LAN)及び/又はワイド・エリア・ネットワーク(WAN)を含む様々な異なるネットワーク・タイプのいずれかを使用して、互いの間で通信し得る。少なくとも1つの実施例では、(たとえば、推論要求を送信するための、推論要求の結果を受信するためのなど)施設とシステム1400の構成要素との間の通信は、(1つ又は複数の)データ・バス、ワイヤレス・データ・プロトコル(Wi-Fi)、ワイヤード・データ・プロトコル(たとえば、イーサネット)などを介して通信され得る。
【0111】
少なくとも1つの実施例では、訓練システム1304は、図13に関して本明細書で説明されたものと同様の訓練パイプライン1404を実行し得る。少なくとも1つの実施例では、1つ又は複数の機械学習モデルが導入システム1306によって導入パイプライン1410において使用されるべきである場合、訓練パイプライン1404は、1つ又は複数の(たとえば、事前訓練された)モデルを訓練又は再訓練し、並びに/或いは、事前訓練されたモデル1406のうちの1つ又は複数を(たとえば、再訓練又は更新の必要なしに)実装するために、使用され得る。少なくとも1つの実施例では、訓練パイプライン1404の結果として、(1つ又は複数の)出力モデル1316が生成され得る。少なくとも1つの実施例では、訓練パイプライン1404は、限定はしないが、撮像データ(又は他の入力データ)コンバージョン又は適応など、任意の数の処理ステップを含み得る。少なくとも1つの実施例では、導入システム1306によって使用される異なる機械学習モデルについて、異なる訓練パイプライン1404が使用され得る。少なくとも1つの実施例では、図13に関して説明された第1の実例と同様の訓練パイプライン1404は、第1の機械学習モデルのために使用され得、図13に関して説明された第2の実例と同様の訓練パイプライン1404は、第2の機械学習モデルのために使用され得、図13に関して説明された第3の実例と同様の訓練パイプライン1404は、第3の機械学習モデルのために使用され得る。少なくとも1つの実施例では、各それぞれの機械学習モデルについて何が必要とされるかに応じて、訓練システム1304内のタスクの任意の組合せが使用され得る。少なくとも1つの実施例では、機械学習モデルのうちの1つ又は複数は、すでに訓練され、導入の準備ができていることがあり、したがって、機械学習モデルは、訓練システム1304によるいかなる処理をも受けないことがあり、導入システム1306によって実装され得る。
【0112】
少なくとも1つの実施例では、(1つ又は複数の)出力モデル1316及び/又は(1つ又は複数の)事前訓練されたモデル1406は、実装形態又は実施例に応じて任意のタイプの機械学習モデルを含み得る。少なくとも1つの実施例では、及び限定はしないが、システム1400によって使用される機械学習モデルは、線形回帰、ロジスティック回帰、判定ツリー、サポート・ベクター・マシン(SVM:support vector machine)、単純ベイズ、k近傍法(Knn:k-nearest neighbor)、k平均クラスタリング、ランダム・フォレスト、次元低減アルゴリズム、勾配ブースティング・アルゴリズム、ニューラル・ネットワーク(たとえば、オート・エンコーダ、畳み込み、リカレント、パーセプトロン、長/短期メモリ(LSTM:Long/Short Term Memory)、ホップフィールド、ボルツマン、深層信念、逆畳み込み、敵対的生成、液体状態機械など)を使用する(1つ又は複数の)機械学習モデル、及び/又は他のタイプの機械学習モデルを含み得る。
【0113】
少なくとも1つの実施例では、訓練パイプライン1404は、少なくとも図15Bに関して本明細書でより詳細に説明されるように、AI支援アノテーションを含み得る。少なくとも1つの実施例では、ラベル付きデータ1312(たとえば、従来のアノテーション)は、任意の数の技法によって生成され得る。少なくとも1つの実施例では、ラベル又は他のアノテーションは、描画プログラム(たとえば、アノテーション・プログラム)、コンピュータ支援設計(CAD:computer aided design)プログラム、ラベル付けプログラム、グランド・トゥルースのためのアノテーション又はラベルを生成するのに好適な別のタイプのプログラム内で生成され得、及び/或いは、いくつかの実例では、手書きされ得る。少なくとも1つの実施例では、グランド・トゥルース・データは、合成的に作り出され(たとえば、コンピュータ・モデル又はレンダリングから生成され)、現実的に作り出され(たとえば、実世界のデータから設計され、作り出され)、(たとえば、データから特徴を抽出し、次いでラベルを生成するために、特徴分析及び学習を使用して)機械自動化され、人間によりアノテーション付けされ(たとえば、ラベラ、又はアノテーション専門家が、ラベルのロケーションを定義し)、及び/又はそれらの組合せであり得る。少なくとも1つの実施例では、撮像データ1308の各インスタンス(又は機械学習モデルによって使用される他のデータ・タイプ)について、訓練システム1304によって生成される対応するグランド・トゥルース・データがあり得る。少なくとも1つの実施例では、訓練パイプライン1404中に含まれるAI支援アノテーションに加えて、又はその代わりにのいずれかで、導入パイプライン1410の一部としてAI支援アノテーションが実施され得る。少なくとも1つの実施例では、システム1400は多層プラットフォームを含み得、多層プラットフォームは、1つ又は複数の医療撮像及び診断機能を実施し得る診断アプリケーション(又は他のアプリケーション・タイプ)のソフトウェア層(たとえば、ソフトウェア1318)を含み得る。少なくとも1つの実施例では、システム1400は、1つ又は複数の施設のPACSサーバ・ネットワークに、(たとえば、暗号化リンクを介して)通信可能に結合され得る。少なくとも1つの実施例では、システム1400は、機械学習モデルを訓練すること、機械学習モデルを導入すること、画像処理、推論、及び/又は他の動作などの動作を実施するために、PACSサーバからのデータにアクセスし、それを参照するように構成され得る。
【0114】
少なくとも1つの実施例では、ソフトウェア層は、セキュアな、暗号化された、及び/又は認証されたAPIとして実装され得、このAPIを通して、アプリケーション又はコンテナが、(1つ又は複数の)外部環境(たとえば、施設1302)から呼び出され(たとえば、コールされ)得る。少なくとも1つの実施例では、次いで、アプリケーションは、それぞれのアプリケーションに関連するコンピュート、AI、又は視覚化タスクを実施するために1つ又は複数のサービス1320をコール又は実行し得、ソフトウェア1318及び/又はサービス1320は、ハードウェア1322を活用して、処理タスクを有効で効率的な様式で実施し得る。
【0115】
少なくとも1つの実施例では、導入システム1306は、導入パイプライン1410を実行し得る。少なくとも1つの実施例では、導入パイプライン1410は任意の数のアプリケーションを含み得、それらのアプリケーションは、上記で説明されたように、AI支援アノテーションを含む、撮像デバイス、シーケンシング・デバイス、ゲノミクス・デバイスなどによって生成された撮像データ(及び/又は他のデータ・タイプ)に連続的に、非連続的に、又は他のやり方で適用され得る。少なくとも1つの実施例では、本明細書で説明されるように、個々のデバイスのための導入パイプライン1410は、デバイスのための仮想機器(たとえば、仮想超音波機器、仮想CTスキャン機器、仮想シーケンシング機器など)と呼ばれることがある。少なくとも1つの実施例では、デバイスによって生成されるデータから所望される情報に応じて、単一のデバイスについて、2つ以上の導入パイプライン1410があり得る。少なくとも1つの実施例では、異常の検出がMRIマシンから所望される場合、第1の導入パイプライン1410があり得、画像強調がMRIマシンの出力から所望される場合、第2の導入パイプライン1410があり得る。
【0116】
少なくとも1つの実施例では、画像生成アプリケーションは、機械学習モデルの使用を含む処理タスクを含み得る。少なくとも1つの実施例では、ユーザは、ユーザ自身の機械学習モデルを使用すること、又はモデル・レジストリ1324から機械学習モデルを選択することを所望し得る。少なくとも1つの実施例では、ユーザは、処理タスクを実施するために、ユーザ自身の機械学習モデルを実装するか、又はアプリケーション中に含めるための機械学習モデルを選択し得る。少なくとも1つの実施例では、アプリケーションは選択可能及びカスタマイズ可能であり得、アプリケーションの構築を定義することによって、特定のユーザのためのアプリケーションの導入及び実装が、よりシームレスなユーザ・エクスペリエンスとして提示される。少なくとも1つの実施例では、サービス1320及びハードウェア1322など、システム1400の他の特徴を活用することによって、導入パイプライン1410は、なお一層ユーザ・フレンドリになり、より容易な統合を提供し、より正確で、効率的で、タイムリーな結果を作り出し得る。
【0117】
少なくとも1つの実施例では、導入システム1306はユーザ・インターフェース1414(たとえば、グラフィカル・ユーザ・インターフェース、ウェブ・インターフェースなど)を含み得、ユーザ・インターフェース1414は、(1つ又は複数の)導入パイプライン1410中に含めるためのアプリケーションを選択し、アプリケーションを配置し、アプリケーション又はそのパラメータ若しくは構築を修正又は変更し、セットアップ及び/又は導入中に(1つ又は複数の)導入パイプライン1410を使用し、それと対話し、並びに/或いは他のやり方で導入システム1306と対話するために使用され得る。少なくとも1つの実施例では、訓練システム1304に関して示されていないが、ユーザ・インターフェース1414(又は異なるユーザ・インターフェース)は、導入システム1306における使用のためのモデルを選択するために、訓練システム1304において訓練又は再訓練するためのモデルを選択するために、及び/或いは訓練システム1304と他のやり方で対話するために使用され得る。
【0118】
少なくとも1つの実施例では、(1つ又は複数の)導入パイプライン1410のアプリケーション又はコンテナと、サービス1320及び/又はハードウェア1322との間で対話を管理するために、アプリケーション・オーケストレーション・システム1428に加えてパイプライン・マネージャ1412が使用され得る。少なくとも1つの実施例では、パイプライン・マネージャ1412は、アプリケーションからアプリケーションへの対話、アプリケーションからサービス1320への対話、及び/或いはアプリケーション又はサービスからハードウェア1322への対話を容易にするように構成され得る。少なくとも1つの実施例では、ソフトウェア1318中に含まれるように示されているが、これは限定を意図しておらず、(たとえば、図12ccに示されている)いくつかの実例では、パイプライン・マネージャ1412は、サービス1320中に含まれ得る。少なくとも1つの実施例では、アプリケーション・オーケストレーション・システム1428(たとえば、Kubernetes、DOCKERなど)は、コンテナ・オーケストレーション・システムを含み得、コンテナ・オーケストレーション・システムは、アプリケーションを、協調、管理、スケーリング、及び導入のための論理ユニットとして、コンテナにグループ化し得る。少なくとも1つの実施例では、(1つ又は複数の)導入パイプライン1410からのアプリケーション(たとえば、再構築アプリケーション、セグメント化アプリケーションなど)を個々のコンテナに関連付けることよって、各アプリケーションは、自己完結型環境(たとえば、カーネル・レベル)において実行して、スピード及び効率を向上させ得る。
【0119】
少なくとも1つの実施例では、各アプリケーション及び/又はコンテナ(又はその画像)は、個々に開発、修正、及び導入され得(たとえば、第1のユーザ又は開発者が、第1のアプリケーションを開発、修正、及び導入し得、第2のユーザ又は開発者が、第1のユーザ又は開発者とは別に第2のアプリケーションを開発、修正、及び導入し得)、これは、(1つ又は複数の)別のアプリケーション又は(1つ又は複数の)コンテナのタスクに邪魔されることなしに単一のアプリケーション及び/又は(1つ又は複数の)コンテナのタスクに集中し、注意を払うことを可能にする。少なくとも1つの実施例では、異なるコンテナ間又はアプリケーション間の通信、及び協調が、パイプライン・マネージャ1412及びアプリケーション・オーケストレーション・システム1428によって補助され得る。少なくとも1つの実施例では、各コンテナ又はアプリケーションの予想される入力及び/又は出力が、(たとえば、アプリケーション又はコンテナの構築に基づいて)システムによって知られている限り、アプリケーション・オーケストレーション・システム1428及び/又はパイプライン・マネージャ1412は、アプリケーション又はコンテナの各々の間の通信、及びそれらの間のリソースの共有を容易にし得る。少なくとも1つの実施例では、(1つ又は複数の)導入パイプライン1410中のアプリケーション又はコンテナのうちの1つ又は複数は、同じサービス及びリソースを共有し得るので、アプリケーション・オーケストレーション・システム1428は、様々なアプリケーション又はコンテナの間でサービス又はリソースをオーケストレートし、ロード・バランシングを行い、共有を決定し得る。少なくとも1つの実施例では、アプリケーション又はコンテナのリソース要件、これらのリソースの現在の使用量又は計画された使用量、及びリソースの利用可能性を追跡するために、スケジューラが使用され得る。少なくとも1つの実施例では、したがって、スケジューラは、異なるアプリケーションにリソースを割り振り、システムの要件及び利用可能性を考慮してアプリケーションの間でリソースを分散させ得る。いくつかの実例では、スケジューラ(及び/又はアプリケーション・オーケストレーション・システム1428の他の構成要素)は、サービス品質(QoS:quality of service)、(たとえば、リアルタイム処理を実行すべきか遅延処理を実行すべきかを決定するための)データ出力を必要とする緊急度など、システムに課される制約(たとえば、ユーザ制約)に基づいて、リソースの利用可能性及び分散を決定し得る。
【0120】
少なくとも1つの実施例では、導入システム1306中のアプリケーション又はコンテナによって活用及び共有されるサービス1320は、コンピュート・サービス1416、AIサービス1418、視覚化サービス1420、及び/又は他のサービス・タイプを含み得る。少なくとも1つの実施例では、アプリケーションは、サービス1320のうちの1つ又は複数をコール(たとえば、実行)して、アプリケーションのための処理動作を実施し得る。少なくとも1つの実施例では、コンピュート・サービス1416は、スーパーコンピューティング又は他の高性能コンピューティング(HPC:high-performance computing)タスクを実施するために、アプリケーションによって活用され得る。少なくとも1つの実施例では、アプリケーションのうちの1つ又は複数を通してデータを、及び/又は単一のアプリケーションの1つ又は複数のタスクを実質的に同時に処理するための(たとえば、並列コンピューティング・プラットフォーム1430を使用する)並列処理を実施するために、(1つ又は複数の)コンピュート・サービス1416が活用され得る。少なくとも1つの実施例では、並列コンピューティング・プラットフォーム1430(たとえば、NVIDIAのCUDA)は、GPU(たとえば、GPU1422)上での汎用コンピューティング(GPGPU:general purpose computing on GPUs)を可能にし得る。少なくとも1つの実施例では、並列コンピューティング・プラットフォーム1430のソフトウェア層は、コンピュート・カーネルの実行のために、仮想命令セット及びGPUの並列算出要素へのアクセスを提供し得る。少なくとも1つの実施例では、並列コンピューティング・プラットフォーム1430はメモリを含み得、いくつかの実施例では、メモリは、複数のコンテナの間で、及び/又は単一のコンテナ内の異なる処理タスクの間で共有され得る。少なくとも1つの実施例では、(たとえば、アプリケーションの複数の異なる段階又は複数のアプリケーションが同じ情報を処理している場合)並列コンピューティング・プラットフォーム1430のメモリの共有セグメントからの同じデータを使用するために、複数のコンテナについて及び/又はコンテナ内の複数のプロセスについて、プロセス間通信(IPC:inter-process communication)コールが生成され得る。少なくとも1つの実施例では、データのコピーをとり、データをメモリ中の異なるロケーションに移動すること(たとえば、読取り/書込み動作)ではなく、メモリの同じロケーション中の同じデータが、任意の数の処理タスクのために(たとえば、同じ時間、異なる時間などに)使用され得る。少なくとも1つの実施例では、データが使用されて、処理の結果として新しいデータが生成されるとき、データの新しいロケーションのこの情報は、様々なアプリケーション間で記憶及び共有され得る。少なくとも1つの実施例では、データのロケーションと、更新された又は修正されたデータのロケーションとは、コンテナ内でペイロードがどのように理解されるかの定義の一部であり得る。
【0121】
少なくとも1つの実施例では、AIサービス1418は、アプリケーションに関連する(たとえば、アプリケーションの1つ又は複数の処理タスクを実施する役割を課された)(1つ又は複数の)機械学習モデルを実行するための推論サービスを実施するために活用され得る。少なくとも1つの実施例では、AIサービス1418は、AIシステム1424を活用して、セグメント化、再構築、物体検出、特徴検出、分類、及び/又は他の推論タスクのための(1つ又は複数の)機械学習モデル(たとえば、CNNなどのニューラル・ネットワーク)を実行し得る。少なくとも1つの実施例では、(1つ又は複数の)導入パイプライン1410のアプリケーションは、訓練システム1304からの出力モデル1316及び/又はアプリケーションの他のモデルのうちの1つ又は複数を使用して、撮像データに関して推論を実施し得る。少なくとも1つの実施例では、アプリケーション・オーケストレーション・システム1428(たとえば、スケジューラ)を使用する推論の2つ又はそれ以上の実例が利用可能であり得る。少なくとも1つの実施例では、第1のカテゴリは、緊急時の至急の要求に関して推論を実施するための、又は診断時の放射線医のためのなど、より高いサービス・レベルの合意を達成し得る高優先度/低レイテンシ経路を含み得る。少なくとも1つの実施例では、第2のカテゴリは、至急でないことがある要求のために、又は分析が後で実施され得る場合に使用され得る標準優先度経路を含み得る。少なくとも1つの実施例では、アプリケーション・オーケストレーション・システム1428は、AIサービス1418の異なる推論タスクのための優先度経路に基づいて、リソース(たとえば、サービス1320及び/又はハードウェア1322)を分散させ得る。
【0122】
少なくとも1つの実施例では、共有ストレージが、システム1400内でAIサービス1418に取り付けられ得る。少なくとも1つの実施例では、共有ストレージは、キャッシュ(又は他のストレージ・デバイス・タイプ)として動作し得、アプリケーションからの推論要求を処理するために使用され得る。少なくとも1つの実施例では、推論要求がサブミットされたとき、要求は、導入システム1306のAPIインスタンスのセットによって受信され得、要求を処理するために、1つ又は複数のインスタンスが(たとえば、最良な適合のために、ロード・バランシングのためになど)選択され得る。少なくとも1つの実施例では、要求を処理するために、要求がデータベースに入れられ得、機械学習モデルは、まだキャッシュにない場合、モデル・レジストリ1324から位置特定され得、検証ステップは、適切な機械学習モデルがキャッシュ(たとえば、共有ストレージ)にロードされ、及び/又はモデルのコピーがキャッシュに保存され得ることを確実にし得る。少なくとも1つの実施例では、アプリケーションがまだ稼働していない場合又はアプリケーションの十分なインスタンスがない場合、(たとえば、パイプライン・マネージャ1412の)スケジューラが、要求において参照されたアプリケーションを起動するために使用され得る。少なくとも1つの実施例では、モデルを実行するための推論サーバがまだ起動されていない場合、推論サーバが起動され得る。任意の数の推論サーバがモデルごとに起動され得る。少なくとも1つの実施例では、推論サーバがクラスタ化されたプル・モデルにおいて、ロード・バランシングが有利であるときはいつでもモデルがキャッシュされ得る。少なくとも1つの実施例では、推論サーバは、対応する分散型サーバに静的にロードされ得る。
【0123】
少なくとも1つの実施例では、推論は、コンテナ中で稼働する推論サーバを使用して実施され得る。少なくとも1つの実施例では、推論サーバのインスタンスは、モデル(随意に、モデルの複数のバージョン)に関連し得る。少なくとも1つの実施例では、モデルに対して推論を実施するための要求が受信されたとき、推論サーバのインスタンスが存在しない場合、新しいインスタンスがロードされ得る。少なくとも1つの実施例では、推論サーバを開始するとき、モデルが推論サーバに渡され得、それにより、推論サーバが異なるインスタンスとして稼働している限り、異なるモデルにサービスするために同じコンテナが使用され得る。
【0124】
少なくとも1つの実施例では、アプリケーション実行中、所与のアプリケーションについての推論要求が受信され得、(たとえば、推論サーバのインスタンスをホストする)コンテナが(まだロードされていない場合)ロードされ得、開始プロシージャがコールされ得る。少なくとも1つの実施例では、コンテナ中の前処理論理が、(たとえば、(1つ又は複数の)CPU及び/又は(1つ又は複数の)GPUを使用して)入って来るデータに対する任意の追加の前処理をロード、復号、及び/又は実施し得る。少なくとも1つの実施例では、推論のためにデータが準備されると、コンテナは、必要に応じてデータに関して推論を実施し得る。少なくとも1つの実施例では、これは、1つの画像(たとえば、手のX線)に対する単一の推論コールを含み得るか、又は何百もの画像(たとえば、胸のCT)に関する推論を必要とし得る。少なくとも1つの実施例では、アプリケーションは、完了する前に結果を要約し得、これは、限定はしないが、単一の信頼性スコア、ピクセル・レベル・セグメント化、ボクセル・レベル・セグメント化、視覚化を生成すること、又は所見を要約するためにテキストを生成することを含み得る。少なくとも1つの実施例では、異なるモデル又はアプリケーションは、異なる優先度を割り当てられ得る。たとえば、リアルタイム(TAT<1分)の優先度を有するモデルもあれば、低優先度(たとえば、TAT<10分)を有するモデルもある。少なくとも1つの実施例では、モデル実行時間は、要求元の機関又はエンティティから測定され得、パートナー・ネットワーク・トラバーサル時間、並びに推論サービスに対する実行を含み得る。
【0125】
少なくとも1つの実施例では、サービス1320と推論アプリケーションとの間での要求の転送は、ソフトウェア開発キット(SDK)の後ろに隠され得、キューを通してロバストなトランスポートが提供され得る。少なくとも1つの実施例では、個々のアプリケーション/テナントIDの組合せについて、要求がAPIを介してキューに入れられ、SDKは、キューから要求を引き出し、要求をアプリケーションに与える。少なくとも1つの実施例では、SDKが要求をピックアップする環境において、キューの名称が提供され得る。少なくとも1つの実施例では、キューを通した非同期通信は、その通信が、ワークが利用可能になったときに、アプリケーションの任意のインスタンスがそのワークをピックアップすることを可能にし得るので、有用であり得る。結果は、データが失われないことを確実にするために、キューを通して返送され得る。少なくとも1つの実施例では、最高優先度のワークは、アプリケーションのほとんどのインスタンスがキューに接続された、キューに進み得、一方で、最低優先度のワークは、単一のインスタンスがキューに接続された、受信された順番にタスクを処理するキューに進み得るので、キューは、ワークをセグメント化するアビリティをも提供し得る。少なくとも1つの実施例では、アプリケーションは、クラウド1426において生成されたGPU加速インスタンス上で稼働し得、推論サービスは、GPU上で推論を実施し得る。
【0126】
少なくとも1つの実施例では、視覚化サービス1420が、アプリケーション及び/又は(1つ又は複数の)導入パイプライン1410の出力を見るための視覚化を生成するために活用され得る。少なくとも1つの実施例では、視覚化を生成するために視覚化サービス1420によってGPU1422が活用され得る。少なくとも1つの実施例では、レイ・トレーシングなどのレンダリング効果が、より高品質の視覚化を生成するために視覚化サービス1420によって実装され得る。少なくとも1つの実施例では、視覚化は、限定はしないが、2D画像レンダリング、3Dボリューム・レンダリング、3Dボリューム再構築、2Dトモグラフィ・スライス、仮想現実表示、拡張現実表示などを含み得る。少なくとも1つの実施例では、仮想化された環境が、システムのユーザ(たとえば、医師、看護師、放射線医など)による対話のための仮想インタラクティブ表示又は環境(たとえば、仮想環境)を生成するために使用され得る。少なくとも1つの実施例では、視覚化サービス1420は、内部ビジュアライザ、シネマティクス、及び/或いは他のレンダリング又は画像処理能力又は機能性(たとえば、レイ・トレーシング、ラスタ化、内部光学など)を含み得る。
【0127】
少なくとも1つの実施例では、ハードウェア1322は、GPU1422、AIシステム1424、クラウド1426、並びに/或いは訓練システム1304及び/又は導入システム1306を実行するために使用される任意の他のハードウェアを含み得る。少なくとも1つの実施例では、GPU1422(たとえば、NVIDIAのTESLA及び/又はQUADRO GPU)は、任意の数のGPUを含み得、任意の数のGPUは、コンピュート・サービス1416、AIサービス1418、視覚化サービス1420、他のサービス、及び/或いはソフトウェア1318の特徴又は機能性のいずれかの処理タスクを実行するために使用され得る。たとえば、AIサービス1418に関して、GPU1422が、撮像データ(又は機械学習モデルによって使用される他のデータ・タイプ)に対する前処理、機械学習モデルの出力に対する後処理を実施するために、及び/又は推論を実施するために(たとえば、機械学習モデルを実行するために)使用され得る。少なくとも1つの実施例では、クラウド1426、AIシステム1424、及び/又はシステム1400の他の構成要素は、GPU1422を使用し得る。少なくとも1つの実施例では、クラウド1426は、深層学習タスクのためのGPU最適化プラットフォームを含み得る。少なくとも1つの実施例では、AIシステム1424は、GPUを使用し得、クラウド1426、或いは深層学習又は推論の役割を課された少なくとも一部分は、1つ又は複数のAIシステム1424を使用して実行され得る。したがって、ハードウェア1322は個別構成要素として示されているが、これは、限定を意図しておらず、ハードウェア1322の任意の構成要素が、ハードウェア1322の任意の他の構成要素と組み合わせられ、それらによって活用され得る。
【0128】
少なくとも1つの実施例では、AIシステム1424は、推論、深層学習、機械学習、及び/又は他の人工知能タスクのために構成された専用のコンピューティング・システム(たとえば、スーパーコンピュータ又はHPC)を含み得る。少なくとも1つの実施例では、AIシステム1424(たとえば、NVIDIAのDGX)は、GPU最適化ソフトウェア(たとえば、ソフトウェア・スタック)を含み得、GPU最適化ソフトウェアは、CPU、RAM、ストレージ、及び/又は他の構成要素、特徴、又は機能性に加えて、複数のGPU1422を使用して実行され得る。少なくとも1つの実施例では、1つ又は複数のAIシステム1424は、システム1400のAIベースの処理タスクのいくつか又はすべてを実施するために、(たとえば、データ・センタにおいて)クラウド1426において実装され得る。
【0129】
少なくとも1つの実施例では、クラウド1426は、GPU加速インフラストラクチャ(たとえば、NVIDIAのNGC)を含み得、GPU加速インフラストラクチャは、システム1400の処理タスクを実行するためのGPU最適化プラットフォームを提供し得る。少なくとも1つの実施例では、クラウド1426は、システム1400のAIベースのタスクのうちの1つ又は複数を実施するための(1つ又は複数の)AIシステム1424を(たとえば、ハードウェア抽象化及びスケーリング・プラットフォームとして)含み得る。少なくとも1つの実施例では、クラウド1426は、アプリケーションとサービス1320との間でシームレスなスケーリング及びロード・バランシングを可能にするために、複数のGPUを活用してアプリケーション・オーケストレーション・システム1428と統合し得る。少なくとも1つの実施例では、クラウド1426は、本明細書で説明されるように、コンピュート・サービス1416、AIサービス1418、及び/又は視覚化サービス1420を含む、システム1400のサービス1320の少なくともいくつかを実行する役割を課され得る。少なくとも1つの実施例では、クラウド1426は、大小のバッチ推論(たとえば、NVIDIAのTENSOR RTを実行すること)を実施し、加速並列コンピューティングAPI及びプラットフォーム1430(たとえば、NVIDIAのCUDA)を提供し、アプリケーション・オーケストレーション・システム1428(たとえば、KUBERNETES)を実行し、(たとえば、より高品質のシネマティクスを作り出すためのレイ・トレーシング、2Dグラフィックス、3Dグラフィックス、及び/又は他のレンダリング技法のための)グラフィックス・レンダリングAPI及びプラットフォームを提供し得、及び/又はシステム1400のための他の機能性を提供し得る。
【0130】
図15Aは、少なくとも1つの実施例による、機械学習モデルを訓練、再訓練、又は更新するためのプロセス1500のデータ・フロー図を示す。少なくとも1つの実施例では、プロセス1500は、図14のシステム1400を非限定的な実例として使用して、実行され得る。少なくとも1つの実施例では、プロセス1500は、本明細書で説明されるように、システム1400のサービス1320及び/又はハードウェア1322を活用し得る。少なくとも1つの実施例では、プロセス1500によって生成される改良されたモデル1512は、導入パイプライン1410中の1つ又は複数のコンテナ化アプリケーションのために、導入システム1306によって実行され得る。
【0131】
少なくとも1つの実施例では、モデル訓練1314は、新しい訓練データ(たとえば、顧客データセット1506、及び/又は入力データに関連する新しいグランド・トゥルース・データなどの新しい入力データ)を使用して、初期モデル1504(たとえば、事前訓練されたモデル)を再訓練又は更新することを含み得る。少なくとも1つの実施例では、初期モデル1504を再訓練又は更新するために、初期モデル1504の(1つ又は複数の)出力又は損失層がリセット又は削除され得、及び/或いは、(1つ又は複数の)更新された又は新しい出力又は損失層と置き換えられ得る。少なくとも1つの実施例では、初期モデル1504は、前に微調整された、前の訓練から残っているパラメータ(たとえば、重み及び/又はバイアス)を有し得、したがって、訓練又は再訓練1314は、最初からモデルを訓練するほど長い時間がかからないか、又は多くの処理を必要としないことがある。少なくとも1つの実施例では、モデル訓練1314中に、初期モデル1504の(1つ又は複数の)リセットされた又は置き換えられた出力又は損失層を有することによって、パラメータは、新しい顧客データセット1506(たとえば、図13の画像データ1308)に関して予測を生成する際の(1つ又は複数の)出力又は損失層の精度に関連する損失計算に基づいて、新しいデータセットのために更新又は再調整され得る。
【0132】
少なくとも1つの実施例では、事前訓練されたモデル1406は、データ・ストア又はレジストリ(たとえば、図13のモデル・レジストリ1324)に記憶され得る。少なくとも1つの実施例では、事前訓練されたモデル1406は、少なくとも部分的に、プロセス1500を実行する施設以外の1つ又は複数の施設において訓練されていることがある。少なくとも1つの実施例では、異なる施設の患者、対象者、顧客のプライバシー及び権利を保護するために、事前訓練されたモデル1406は、構内で生成された顧客又は患者データを使用して、構内で訓練されていることがある。少なくとも1つの実施例では、事前訓練されたモデル1406は、クラウド1426及び/又は他のハードウェア1322を使用して訓練され得るが、プライバシー保護された機密の患者データは、クラウド1426(又は他の構外のハードウェア)の任意の構成要素に転送されないか、それらの構成要素によって使用されないか、又はそれらの構成要素にとってアクセス不可能であり得る。少なくとも1つの実施例では、事前訓練されたモデル1406が2つ以上の施設からの患者データを使用して訓練される場合、事前訓練されたモデル1406は、各施設について個々に訓練されてから、別の施設からの患者又は顧客データに関して訓練され得る。少なくとも1つの実施例では、顧客又は患者データが(たとえば、権利放棄によって、実験での使用のために、など)プライバシー問題から解放された場合、或いは、顧客又は患者データがパブリック・データ・セット中に含まれる場合など、任意の数の施設からの顧客又は患者データが、データセンタ又は他のクラウド・コンピューティング・インフラストラクチャなど、構内及び/又は構外で事前訓練されたモデル1406を訓練するために使用され得る。
【0133】
少なくとも1つの実施例では、導入パイプライン1410における使用のためのアプリケーションを選択するとき、ユーザは、特定のアプリケーションのために使用されるべき機械学習モデルをも選択し得る。少なくとも1つの実施例では、ユーザは、使用のためのモデルを有しないことがあり、したがって、ユーザは、アプリケーションとともに使用するために事前訓練されたモデル1406を選択し得る。少なくとも1つの実施例では、事前訓練されたモデル1406は、(たとえば、患者の多様性、人口統計、使用される医療撮像デバイスのタイプなどに基づいて)ユーザの施設の顧客データセット1506に関して正確な結果を生成するために最適化されないことがある。少なくとも1つの実施例では、事前訓練されたモデル1406を、(1つ又は複数の)アプリケーションとともに使用するために導入パイプライン1410に導入する前に、事前訓練されたモデル1406は、それぞれの施設において使用するために更新、再訓練、及び/又は微調整され得る。
【0134】
少なくとも1つの実施例では、ユーザは、更新、再訓練、及び/又は微調整されるべきである事前訓練されたモデル1406を選択し得、事前訓練されたモデル1406は、プロセス1500内の訓練システム1304のための初期モデル1504と呼ばれることがある。少なくとも1つの実施例では、顧客データセット1506(たとえば、施設におけるデバイスによって生成された撮像データ、ゲノミクス・データ、シーケンシング・データ、又は他のデータ・タイプ)が、初期モデル1504に関して(限定はしないが、転移学習(transfer learning)を含み得る)モデル訓練1314を実施して、改良されたモデル1512を生成するために、使用され得る。少なくとも1つの実施例では、顧客データセット1506に対応するグランド・トゥルース・データが、訓練システム1304によって生成され得る。少なくとも1つの実施例では、グランド・トゥルース・データは、(たとえば、図13のラベル付きクリニック・データ1312として)施設において臨床医、科学者、医師、開業医によって、少なくとも部分的に生成され得る。
【0135】
少なくとも1つの実施例では、グランド・トゥルース・データを生成するために、AI支援アノテーション1310がいくつかの実例において使用され得る。少なくとも1つの実施例では、(たとえば、AI支援アノテーションSDKを使用して実装された)AI支援アノテーション1310は、機械学習モデル(たとえば、ニューラル・ネットワーク)を活用して、顧客データセットについて示唆又は予測されるグランド・トゥルース・データを生成し得る。少なくとも1つの実施例では、ユーザ1510は、コンピューティング・デバイス1508上のユーザ・インターフェース(グラフィカル・ユーザ・インターフェース(GUI:graphical user interface))内でアノテーション・ツールを使用し得る。
【0136】
少なくとも1つの実施例では、ユーザ1510は、コンピューティング・デバイス1508を介してGUIと対話して、(自動)アノテーションを編集又は微調整し得る。少なくとも1つの実施例では、ポリゴン編集特徴が、ポリゴンの頂点をより正確なロケーション又は微調整されたロケーションに移動するために使用され得る。
【0137】
少なくとも1つの実施例では、顧客データセット1506が、関連するグランド・トゥルース・データを有すると、(たとえば、AI支援アノテーション、手動ラベル付けなどからの)グランド・トゥルース・データが、改良されたモデル1512を生成するために、モデル訓練1314中によって使用され得る。少なくとも1つの実施例では、顧客データセット1506は、初期モデル1504に任意の回数適用され得、グランド・トゥルース・データは、改良されたモデル1512について、許容可能なレベルの精度が達成されるまで、初期モデル1504のパラメータを更新するために使用され得る。少なくとも1つの実施例では、改良されたモデル1512が生成されると、改良されたモデル1512は、医療撮像データに対して1つ又は複数の処理タスクを実施するために、施設において1つ又は複数の導入パイプライン1410内で導入され得る。
【0138】
少なくとも1つの実施例では、改良されたモデル1512は、別の施設によって選択されるべきモデル・レジストリ1324において事前訓練されたモデル1406にアップロードされ得る。少なくとも1つの実施例では、彼のプロセスは任意の数の施設において完了され得、それにより、改良されたモデル1512は、より普遍的なモデルを生成するように新しいデータセットに関して任意の回数さらに改良され得る。
【0139】
図15Bは、少なくとも1つの実施例による、事前訓練されたアノテーション・モデルを用いてアノテーション・ツールを拡張するためのクライアントサーバ・アーキテクチャ1532の例示的な図である。少なくとも1つの実施例では、AI支援アノテーション・ツール1536は、クライアントサーバ・アーキテクチャ1532に基づいてインスタンス化され得る。少なくとも1つの実施例では、撮像アプリケーション中のアノテーション・ツール1536は、放射線医を補助し、たとえば、器官及び異常を識別し得る。少なくとも1つの実施例では、撮像アプリケーションは、非限定的な実例として、(たとえば、3D MRI又はCTスキャンにおける)生画像1534において、関心のある特定の器官上の数個の極値点をユーザ1510が識別するのを助け、特定の器官のすべての2Dスライスについて自動アノテーション付けされた結果を受信する、ソフトウェア・ツールを含み得る。少なくとも1つの実施例では、結果は、訓練データ1538としてデータ・ストアに記憶され、(たとえば、限定はしないが)訓練のためのグランド・トゥルース・データとして使用され得る。少なくとも1つの実施例では、コンピューティング・デバイス1508が、AI支援アノテーション1310のために極値点を送出するとき、たとえば、深層学習モデルがこのデータを入力として受信し、セグメント化された器官又は異常の推論結果を返し得る。少なくとも1つの実施例では、図15B中のAI支援アノテーション・ツール1536Bなどの事前インスタンス化されたアノテーション・ツールは、たとえばアノテーション・モデル・レジストリに記憶された、事前訓練されたモデル1542のセットを含み得るアノテーション支援サーバ1540などのサーバに、APIコール(たとえば、APIコール1544)を行うことによって、拡張され得る。少なくとも1つの実施例では、アノテーション・モデル・レジストリは、特定の器官又は異常に対してAI支援アノテーションを実施するように事前訓練された、事前訓練されたモデル1542(たとえば、深層学習モデルなどの機械学習モデル)を記憶し得る。これらのモデルは、訓練パイプライン1404を使用することによって、さらに更新され得る。少なくとも1つの実施例では、事前インストールされたアノテーション・ツールは、新しいラベル付きクリニック・データ1312が追加されるにつれて、経時的に改善され得る。
【0140】
そのような構成要素は、アップスケールされた解像度と、低減されたアーティファクト存在と、視覚的品質向上とを伴う画像又はビデオ・コンテンツなど、向上されたコンテンツを生成するために使用され得る。
【0141】
他の変形形態は、本開示の趣旨内にある。したがって、開示される技法は、様々な修正及び代替構築が可能であるが、それらのいくつかの例示的な実施例が図面に示され、上記で詳細に説明された。しかしながら、特定の1つ又は複数の開示された形態に本開示を限定する意図はなく、その反対に、添付の特許請求の範囲において定義されるように、開示の趣旨及び範囲に入るすべての修正形態、代替構築、及び等価物を網羅することを意図していることが理解されるべきである。
【0142】
開示される実施例を説明する文脈において(特に、以下の特許請求の範囲の文脈において)「a」及び「an」及び「the」という用語、並びに同様の指示語を使用することは、本明細書に別段の記載のない限り、又は文脈によって明らかに否定されない限り、単数と複数の両方を網羅すると解釈されるべきであり、用語の定義であると解釈されるべきではない。「含む、備える(comprising)」、「有する(having)」、「含む(including)」、及び「含んでいる(containing)」という用語は、別段の記載のない限り、オープンエンドの用語(「限定はしないが、~を含む(including, but not limited to,)」を意味する)と解釈されるべきである。「接続される」という用語は、修飾されず、物理的接続を指しているとき、何か介在するものがある場合でも、部分的に又は完全に中に含まれているか、取り付けられるか、又は互いに接合されるものとして解釈されるべきである。本明細書で値の範囲を詳述することは、本明細書に別段の記載のない限り、及び各別個の値が、本明細書に個々に詳述されているかのように明細書に組み込まれていない限り、範囲内に入る各別個の値を個々に参照する簡潔な方法として働くことを単に意図しているにすぎない。「セット」(たとえば、「項目のセット」)又は「サブセット」という用語の使用は、文脈によって別段の記載がないか又は否定されない限り、1つ又は複数の部材を備える空ではない集合として解釈されるべきである。さらに、文脈によって別段の記載がないか又は否定されない限り、対応するセットの「サブセット」という用語は、対応するセットの厳密なサブセットを必ずしも指すとは限らず、サブセットと、対応するセットとは、等しくなり得る。
【0143】
「A、B、及びCのうちの少なくとも1つ」又は「A、B及びCのうちの少なくとも1つ」という形態の言い回しなどの結合語は、別段の具体的な記載がないか又はさもなければ文脈によって明確に否定されない限り、別様に、項目、用語などが、A又はB又はCのいずれか、或いはAとBとCとのセットの任意の空でないサブセットであり得ることを提示するために一般に使用される文脈で、理解される。たとえば、3つの部材を有するセットの説明的な実例では、「A、B、及びCのうちの少なくとも1つ」並びに「A、B及びCのうちの少なくとも1つ」という結合句は、次のセットのいずれかを指す:{A}、{B}、{C}、{A、B}、{A、C}、{B、C}、{A、B、C}。したがって、そのような結合語は、いくつかの実施例が、Aのうちの少なくとも1つ、Bのうちの少なくとも1つ、及びCのうちの少なくとも1つの各々が存在することを必要とすることを全体的に暗示するものではない。さらに、別段の記載がないか又は文脈によって否定されない限り、「複数(plurality)」という用語は、複数である状態を示す(たとえば、「複数の項目(a plurality of items)」は複数の項目(multiple items)を示す)。複数(plurality)は、少なくとも2つの項目であるが、明示的に、又は文脈によってのいずれかでそのように示されているとき、それよりも多いことがある。さらに、別段の記載がないか又はさもなければ文脈から明らかでない限り、「~に基づいて」という言い回しは、「少なくとも部分的に~に基づいて」を意味し、「~のみに基づいて」を意味しない。
【0144】
本明細書で説明されるプロセスの動作は、本明細書に別段の記載がないか又はさもなければ文脈によって明確に否定されない限り、任意の好適な順序で実施され得る。少なくとも1つの実施例では、本明細書で説明されるプロセス(又はその変形形態及び/又は組合せ)などのプロセスは、実行可能命令で構成された1つ又は複数のコンピュータ・システムの制御下で実施され、1つ又は複数のプロセッサ上で、ハードウェアによって、又はそれらの組合せによって集合的に実行するコード(たとえば、実行可能命令、1つ又は複数のコンピュータ・プログラム、又は1つ又は複数のアプリケーション)として実装される。少なくとも1つの実施例では、コードは、たとえば、1つ又は複数のプロセッサによって実行可能な複数の命令を備えるコンピュータ・プログラムの形態で、コンピュータ可読記憶媒体に記憶される。少なくとも1つの実施例では、コンピュータ可読記憶媒体は、一時的信号(たとえば、伝搬する一時的な電気又は電磁送信)を除外するが、一時的信号のトランシーバ内の非一時的データ・ストレージ回路要素(たとえば、バッファ、キャッシュ、及びキュー)を含む非一時的コンピュータ可読記憶媒体である。少なくとも1つの実施例では、コード(たとえば、実行可能コード又はソース・コード)は、1つ又は複数の非一時的コンピュータ可読記憶媒体のセットに記憶され、この記憶媒体は、コンピュータ・システムの1つ又は複数のプロセッサによって実行されたときに(すなわち、実行された結果として)、コンピュータ・システムに本明細書で説明される動作を実施させる実行可能命令を記憶している(又は、実行可能命令を記憶するための他のメモリを有する)。非一時的コンピュータ可読記憶媒体のセットは、少なくとも1つの実施例では、複数の非一時的コンピュータ可読記憶媒体を備え、複数の非一時的コンピュータ可読記憶媒体の個々の非一時的記憶媒体のうちの1つ又は複数は、コードのすべてがないが、複数の非一時的コンピュータ可読記憶媒体は、集合的にコードのすべてを記憶している。少なくとも1つの実施例では、実行可能命令は、異なる命令が異なるプロセッサによって実行されるように実行され、たとえば、非一時的コンピュータ可読記憶媒体は命令を記憶し、メイン中央処理ユニット(「CPU」)は命令のいくつかを実行し、グラフィックス処理ユニット(「GPU」)は他の命令を実行する。少なくとも1つの実施例では、コンピュータ・システムの異なる構成要素は、別個のプロセッサを有し、異なるプロセッサが命令の異なるサブセットを実行する。
【0145】
したがって、少なくとも1つの実施例では、コンピュータ・システムは、本明細書で説明されるプロセスの動作を単独で又は集合的に実施する1つ又は複数のサービスを実装するように構成され、そのようなコンピュータ・システムは、動作の実施を可能にする適用可能なハードウェア及び/又はソフトウェアで構成される。さらに、本開示の少なくとも1つの実施例を実装するコンピュータ・システムは、単一のデバイスであり、別の実施例では、分散型コンピュータ・システムが本明細書で説明される動作を実施するように、及び単一のデバイスがすべての動作を実施しないように、異なるやり方で動作する複数のデバイスを備える分散型コンピュータ・システムである。
【0146】
本明細書で提供されるあらゆる実例、又は例示的な言葉(たとえば、「など、などの(such as)」)の使用は、本開示の実施例をより明らかにすることのみを意図しており、別段の主張のない限り、本開示の範囲に制限を加えるものではない。本明細書のいかなる言葉も、特許請求されていない任意の要素を、本開示の実践に不可欠なものとして示すと解釈されるべきではない。
【0147】
本明細書で引用される出版物、特許出願、及び特許を含むすべての参考文献は、各参考文献が参照により組み込まれることが個別に明確に示され、その全体が本明細書に記載されたかのように、それと同程度まで参照により本明細書に組み込まれる。
【0148】
明細書及び特許請求の範囲において、「結合される」及び「接続される」という用語が、その派生語とともに使用され得る。これらの用語は、互いに同義語として意図されていないことがあることが理解されるべきである。むしろ、特定の実例では、「接続される」又は「結合される」は、2つ又はそれ以上の要素が物理的又は電気的に互いに直接又は間接的に接触していることを示すために使用され得る。「結合される」はまた、2つ又はそれ以上の要素が直接互いに接触していないが、それでもなお互いに連動又は対話することを意味し得る。
【0149】
別段の具体的な記載がない限り、明細書全体を通して、「処理する(processing)」、「算出する(computing)」、「計算する(calculating)」、又は「決定する(determining)」などの用語は、コンピューティング・システムのレジスタ及び/又はメモリ内の、電子的などの物理的な量として表されるデータを、コンピューティング・システムのメモリ、レジスタ又は他のそのような情報ストレージ、送信、若しくはディスプレイ・デバイス内の物理的な量として同様に表される他のデータになるように操作及び/又は変換する、コンピュータ又はコンピューティング・システム、或いは同様の電子コンピューティング・デバイスのアクション及び/又はプロセスを指すことが諒解され得る。
【0150】
同様に、「プロセッサ」という用語は、レジスタ及び/又はメモリからの電子データを処理し、その電子データを、レジスタ及び/又はメモリに記憶され得る他の電子データに変換する任意のデバイス、又はデバイスの一部分を指し得る。非限定的な実例として、「プロセッサ」は、CPU又はGPUであり得る。「コンピューティング・プラットフォーム」は、1つ又は複数のプロセッサを備え得る。本明細書で使用される「ソフトウェア」プロセスは、たとえば、タスク、スレッド、及び知的エージェントなど、経時的にワークを実施するソフトウェア及び/又はハードウェア・エンティティを含み得る。また、各プロセスは、命令を直列で又は並列で、連続的に又は断続的に行うための複数のプロセスを指し得る。「システム」及び「方法」という用語は、1つ又は複数の方法をシステムが具体化し得、方法がシステムと考えられ得る場合に限り、本明細書において交換可能に使用される。
【0151】
本明細書では、アナログ・データ又はデジタル・データを取得すること、獲得すること、受信すること、或いはそれらをサブシステム、コンピュータ・システム、又はコンピュータ実装機械に入力することに言及し得る。アナログ・データ及びデジタル・データを取得すること、獲得すること、受信すること、又は入力することは、関数コール、又はアプリケーション・プログラミング・インターフェースへのコールのパラメータとしてデータを受信することによってなど、様々なやり方で実現され得る。いくつかの実装形態では、アナログ・データ又はデジタル・データを取得する、獲得する、受信する、又は入力するプロセスは、直列又は並列インターフェースを介してデータを転送することによって実現され得る。別の実装形態では、アナログ・データ又はデジタル・データを取得する、獲得する、受信する、又は入力するプロセスは、提供するエンティティから獲得するエンティティにコンピュータ・ネットワークを介してデータを転送することによって実現され得る。アナログ・データ又はデジタル・データを提供すること、出力すること、送信すること、送出すること、又は提示することにも言及し得る。様々な実例では、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送出する、又は提示するプロセスは、関数コールの入力又は出力パラメータ、アプリケーション・プログラミング・インターフェース又はプロセス間通信機構のパラメータとしてデータを転送することによって実現され得る。
【0152】
上記の説明は、説明された技法の例示的な実装形態について述べているが、他のアーキテクチャが、説明された機能性を実装するために使用され得、本開示の範囲内にあることが意図される。さらに、説明を目的として、責任の具体的な分散が上記で定義されたが、様々な機能及び責任は、状況に応じて異なるやり方で分散及び分割され得る。
【0153】
さらに、主題は、構造的特徴及び/又は方法論的行為に特有の言語で説明されたが、添付の特許請求の範囲で特許請求される主題は、説明された特有の特徴又は行為に必ずしも限定されるとは限らないことが理解されるべきである。むしろ、特有の特徴及び行為は、特許請求の範囲を実装する例示的な形態として開示される。
図1A
図1B
図1C
図2A
図2B
図3A
図3B
図3C
図3D
図4
図5A
図5B
図6
図7A
図7B
図8
図9
図10
図11
図12
図13
図14
図15A
図15B
【国際調査報告】