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

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

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

特開2023-44716ニューラル・ネットワークを使用した心拍数及び呼吸数の共同推定
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023044716
(43)【公開日】2023-03-31
(54)【発明の名称】ニューラル・ネットワークを使用した心拍数及び呼吸数の共同推定
(51)【国際特許分類】
   G06T 7/20 20170101AFI20230324BHJP
   A61B 5/11 20060101ALI20230324BHJP
   A61B 5/113 20060101ALI20230324BHJP
【FI】
G06T7/20 300Z
A61B5/11 120
A61B5/113
【審査請求】未請求
【請求項の数】25
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022103140
(22)【出願日】2022-06-28
(31)【優先権主張番号】17/479,648
(32)【優先日】2021-09-20
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.ZIGBEE
(71)【出願人】
【識別番号】501450960
【氏名又は名称】エヌビディア コーポレーション
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ユージュオ レン
(72)【発明者】
【氏名】ニランジャン アバダナム
(72)【発明者】
【氏名】ラジャス ベッリパディ シェッティ
【テーマコード(参考)】
4C038
5L096
【Fターム(参考)】
4C038VA04
4C038VB32
4C038VB33
4C038VC05
5L096AA06
5L096BA06
5L096CA04
5L096DA02
5L096HA11
5L096KA04
(57)【要約】
【課題】空間的注意とチャネル注意との両方を利用して、対象者の画像を処理することにより、対象者の心拍数及び呼吸数を共同推定するニューラル・ネットワーク・システムを提供する。
【解決手段】動きニューラル・ネットワークは対象者の画像を受信し、特定の特徴データに処理を集中させるために空間的ドメイン注意マスク及びチャネル・ドメイン注意マスクの両方を使用して対象者の心拍数及び呼吸数を推定する。外観ニューラル・ネットワークは対象者の画像から空間的注意マスクを計算し、心拍数及び/又は呼吸数を正確に推定するために対象者の顔(対象者の髪の毛又は肩ではなく)に関連する特徴を示す。チャネル単位ドメインの注意はトレーニング中に学習され、チャネル単位の特徴応答を再較正して処理に最も有益な特徴を選択する。チャネル注意マスクは、トレーニング中に学習され、デプロイメント中に様々な対象者に使用される。
【選択図】図1A
【特許請求の範囲】
【請求項1】
対象者の心拍数又は呼吸数のうちの少なくとも1つを推定するためのコンピュータ実装方法であって、
2つの空間次元で特徴ベクトルのチャネルを生成するために、前記対象者の画像のシーケンスを、動きニューラル・ネットワーク・モデルの層によって処理するステップと、
前記対象者の推定心拍数又は推定呼吸数のうちの少なくとも1つを生成するために、学習されたチャネル注意マスクを前記特徴ベクトルの前記チャネルに適用するステップと、
を含む、コンピュータ実装方法。
【請求項2】
前記処理するステップは、少なくとも1つの空間的注意マスクを前記動きニューラル・ネットワークの2つ以上の前記層間に適用するステップを含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記少なくとも1つの空間的注意マスクを計算するために、注意ニューラル・ネットワークによって、前記シーケンス内の少なくとも1つの画像についての外観マップ及び皮膚セグメンテーション・マスクを処理するステップを更に含む、請求項2に記載のコンピュータ実装方法。
【請求項4】
前記注意ニューラル・ネットワークは、前記少なくとも1つの空間的注意マスクを計算するために、少なくとも1つの外観チャネル注意マスクを前記注意ニューラル・ネットワークの2つ以上の層間に適用する、請求項3に記載のコンピュータ実装方法。
【請求項5】
前記外観マップは、前記対象者の顔、首、及び胸部領域を含む前記対象者の各画像の一部分を含む、請求項3に記載のコンピュータ実装方法。
【請求項6】
前記皮膚セグメンテーション・マスクは、前記対象者の各画像の背景、髪の毛、目、眉、及びひげ領域から、前記対象者の各画像の額、頬、鼻、首、及び胸部領域を含む顔の皮膚を個別に識別するセグメンテーション・マスクを含む、請求項3に記載のコンピュータ実装方法。
【請求項7】
前記少なくとも1つの外観チャネル注意マスクは、畳み込み層とプーリング層との間に適用される、請求項1に記載のコンピュータ実装方法。
【請求項8】
前記画像のシーケンス内の各画像が受信されるフレーム・レートは可変であり、前記処理するステップは、前記フレーム・レートに基づいて前記推定心拍数又は前記推定呼吸数のうちの少なくとも1つを調整するステップを含む、請求項1に記載のコンピュータ実装方法。
【請求項9】
前記画像のシーケンス内の1つ又は複数の画像は圧縮される、請求項1に記載のコンピュータ実装方法。
【請求項10】
前記1つ又は複数の画像は、可変のレベルで圧縮される、請求項9に記載のコンピュータ実装方法。
【請求項11】
前記推定心拍数と前記推定呼吸数との比率が所定の有効範囲外であることを決定するステップと、前記推定心拍数及び前記推定呼吸数を破棄するステップとを更に含む、請求項1に記載のコンピュータ実装方法。
【請求項12】
前記動きニューラル・ネットワーク・モデルの前記層によってパラメータが適用され、グラウンド・トゥルース心拍数又は呼吸数と前記推定心拍数又は呼吸数との間の差を小さくするために、前記パラメータを調整するステップを更に含む、請求項1に記載のコンピュータ実装方法。
【請求項13】
前記動きニューラル・ネットワーク・モデルの前記層によってパラメータが適用され、前記推定心拍数と前記推定呼吸数との推定比率とグラウンド・トゥルース比率範囲との間の差を小さくするために、前記パラメータを調整するステップを更に含む、請求項1に記載のコンピュータ実施方法。
【請求項14】
前記動きニューラル・ネットワーク・モデルの前記層によってパラメータが適用され、前記推定心拍数と前記推定呼吸数との間の相関関係を高めて、心拍数と呼吸数との間の予想される相関関係と整合させるために、前記パラメータを調整するステップを更に含む、請求項1に記載のコンピュータ実施方法。
【請求項15】
前記処理するステップ及び前記適用するステップのうちの少なくとも1つは、サーバ上又はデータ・センタ内で実行され、前記画像のシーケンスは、ユーザ・デバイスから前記サーバ又は前記データ・センタにストリーミングされる、請求項1に記載のコンピュータ実施方法。
【請求項16】
前記処理するステップ及び前記適用するステップのうちの少なくとも1つは、サーバ上又はデータ・センタ内で実行され、推定心拍数又は推定呼吸数のうちの前記少なくとも1つは、ユーザ・デバイスにストリーミングされる、請求項1に記載のコンピュータ実装方法。
【請求項17】
前記処理するステップ及び前記適用するステップのうちの少なくとも1つは、クラウド・コンピューティング環境内で実行される、請求項1に記載のコンピュータ実施方法。
【請求項18】
前記処理するステップ及び前記適用するステップのうちの少なくとも1つは、マシン、ロボット、又は自律車両に採用されるニューラル・ネットワークをトレーニング、テスト、又は認定するために実行される、請求項1に記載のコンピュータ実施方法。
【請求項19】
前記処理するステップ及び前記適用するステップのうちの少なくとも1つは、グラフィックス処理ユニットの一部分を含む仮想マシン上で実行される、請求項1に記載のコンピュータ実施方法。
【請求項20】
対象者の心拍数又は呼吸数のうちの少なくとも1つを推定するためのシステムであって、1つ又は複数の処理ユニットを備え、前記1つ又は複数の処理ユニットは、動きニューラル・ネットワーク・モデルを、
2つの空間次元で特徴ベクトルのチャネルを生成するために、画像のシーケンスを、前記動きニューラル・ネットワーク・モデルの層によって処理することと、
前記対象者の推定心拍数又は推定呼吸数のうちの少なくとも1つを生成するために、学習されたチャネル注意マスクを前記特徴ベクトルの前記チャネルに適用することと
によって実装する、システム。
【請求項21】
前記1つ又は複数の処理ユニットは、前記シーケンス内の各画像についての外観マップ及び皮膚セグメンテーション・マスクを処理することによって前記少なくとも1つの空間的注意マスクを計算するために、注意ニューラル・ネットワークを更に実装する、請求項20に記載のシステム。
【請求項22】
前記皮膚セグメンテーション・マスクは、前記対象者の各画像の背景、髪の毛、目、眉、及びひげ領域から、前記対象者の各画像の額、1つ又は複数の頬、鼻、首、及び胸部のうちの少なくとも1つに対応する顔の皮膚の領域を個別に識別するマスクを含む、請求項21に記載のシステム。
【請求項23】
対象者の心拍数又は呼吸数のうちの少なくとも1つを推定するためのコンピュータ命令を保存する非一時的コンピュータ可読媒体であって、前記コンピュータ命令は、1つ又は複数のプロセッサによって実行される場合に、前記1つ又は複数のプロセッサに、
2つの空間次元で特徴ベクトルのチャネルを生成するために、前記対象者の画像のシーケンスを、動きニューラル・ネットワーク・モデルの層によって処理するステップと、
前記対象者の推定心拍数又は推定呼吸数のうちの少なくとも1つを生成するために、学習されたチャネル注意マスクを前記特徴ベクトルの前記チャネルに適用するステップと
を実行させる、非一時的コンピュータ可読媒体。
【請求項24】
前記少なくとも1つの空間的注意マスクを計算するために、注意ニューラル・ネットワークによって、前記シーケンス内の各画像についての外観マップ及び皮膚セグメンテーション・マスクを処理するステップを更に含む、請求項23に記載の非一時的コンピュータ可読媒体。
【請求項25】
前記注意ニューラル・ネットワークは、前記少なくとも1つの空間的注意マスクを計算するために、少なくとも1つの外観チャネル注意マスクを前記注意ニューラル・ネットワークの層間に適用する、請求項24に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【0001】
心拍数及び呼吸数の測定は、多くの疾患及び症状を診断するための重要なステップである。非接触方法は感染のリスクを低減するため、非接触型カメラ・ベースの生理学的測定は、指先オキシメータなどの接触型機器と比較して、遠隔医療においてアクセス性と利便性がより向上する傾向がある。
【発明の概要】
【発明が解決しようとする課題】
【0002】
しかしながら、環境照明の変動、頭部の動き、顔の表情などに起因して、リモートでの生理学的信号測定は困難である。これらの問題、及び/又は先行技術に関連付けられた他の問題に対処する必要性がある。
【課題を解決するための手段】
【0003】
本開示の実施例は、心拍数及び呼吸数の共同推定を改善するための手法に関する。心拍数及び呼吸数(例えば、呼吸)の両方をより高い精度で推定し、従来のシステムと比較してシステムの複雑さ及びレイテンシを低減するニューラル・ネットワーク・システムを提供するシステム及び方法が開示される。ニューラル・ネットワーク・システムは、二重の注意、特に空間的注意とチャネル注意との両方を利用して、対象者のビデオを処理することによって、対象者の心拍数及び呼吸数を共同で推定する。
【0004】
実施例によれば、対象者の画像の検出ネットワーク・シーケンス及び画像のタイムスタンプ。境界ボックス及び対象者特徴又はランドマーク(例えば、顔の特徴)が、対象者の検出ネットワークを使用して生成される。連続する又はほぼ連続するフレームの境界ボックスから、フレーム間の特徴の動きを符号化する動きマップが生成される。画像のシーケンスから、対象者の外観(例えば、ピクセル位置の色値の平均値として)を符号化する外観マップと、対象者の皮膚を表す画像内の領域のバイナリ・セマンティック・マスクを含む皮膚セグメンテーション・マスクとが生成される。外観マップ及び皮膚セグメンテーション・マスクを使用して、外観ニューラル・ネットワークは、対象者の顔の特徴に対応するピクセルの位置の正確な推定のために、対象者の顔(対象者の髪の毛又は肩ではなく)に関連付けられる特徴を示すことができる空間的注意マスクを対象者の画像から計算する。動きニューラル・ネットワークは、動きマップ及び画像のシーケンスを使用して、画像内の対象者の心拍数及び呼吸数を推定する。空間的注意マスクは、動きネットワークに提供されて、動きニューラル・ネットワークの焦点を方向付け、従来のシステムで可能であるよりも高い精度、より優れた精度、及びより高い効率で結果を生成する。上記のような従来のシステムとは対照的に、空間的ドメイン及びチャネル単位ドメインの両方に注意メカニズムを適用することによって、推定精度が向上される。空間的ドメインの注意は、強い生理学的信号応答を含む顔領域の位置を特定する空間的符号化を強化する。チャネル単位ドメインの注意は、チャネル単位の特徴応答を再較正して、最も有益な特徴を選択する。チャネル注意マスクは、トレーニング中に学習され、デプロイメント中に様々な対象者に使用することができる。
【0005】
一実施例では、ニューラル・ネットワーク・システムは、心拍数と呼吸数との相関関係に基づいてこれらの2つの数を推定することを学習する。一実施例では、顔の皮膚(額、頬、及び鼻)、首、及び胸部を含む領域を識別して、心拍数及び呼吸数を推定するための追加データ(例えば、血液循環)を提供する皮膚セグメンテーション・マスクに空間的注意が基づいている場合に、ニューラル・ネットワーク・システムの精度が向上される。
【0006】
対象者の心拍数又は呼吸数のうちの少なくとも1つを共同で推定するための方法、コンピュータ可読媒体、及びシステムが開示される。一実施例では、対象者の画像のシーケンスが、動きニューラル・ネットワーク・モデルの層によって処理されて、2つの空間次元で特徴ベクトルのチャネルが生成され、学習されたチャネル注意マスクが特徴ベクトルのチャネルに適用されて、対象者の推定心拍数又は推定呼吸数のうちの少なくとも1つが共同で生成される。
【0007】
心拍数及び呼吸数の共同推定のための本システム及び方法について、添付の図面を参照して以下に詳細に説明する。
【図面の簡単な説明】
【0008】
図1A】本開示のいくつかの実施例を実装する際の使用に適している心拍数及び呼吸数の共同推定ネットワーク・システム例のブロック図を示す。
図1B】本開示のいくつかの実施例を実装する際の使用に適している空間的注意マップを示す。
図1C】一実施例による心拍数及び呼吸数の共同推定のための方法のフローチャートを示す。
図2A】本開示のいくつかの実施例を実装する際の使用に適している別の心拍数及び呼吸数の共同推定ネットワーク・システム例のブロック図を示す。
図2B】一実施例による心拍数及び呼吸数の共同推定のための別の方法のフローチャートを示す。
図2C】本開示のいくつかの実施例を実装する際の使用に適している心拍数と呼吸数との周波数関係を示す。
図2D】本開示のいくつかの実施例を実装する際の使用に適している心拍数と呼吸数との比率の分布を示す。
図3A】本開示のいくつかの実施例を実装する際の使用に適している心拍数及び呼吸数の共同推定ネットワーク・システムのためのトレーニング構成のブロック図を示す。
図3B】本開示のいくつかの実施例を実装する際の使用に適している心拍数及び呼吸数の共同推定ネットワーク・システムをトレーニングするための方法の別のフローチャートを示す。
図4】本開示のいくつかの実施例を実装する際の使用に適している並列処理ユニット例を示す。
図5A】本開示のいくつかの実施例を実装する際の使用に適している、図4のPPUを使用して実装される処理システムの概念図である。
図5B】様々な前の実施例の様々なアーキテクチャ及び/又は機能が実装され得る模範的なシステムを示す。
図5C】少なくとも1つの実施例において、機械学習のトレーニング及び利用に使用することができる模範的なシステムのコンポーネントを示す。
図6】本開示のいくつかの実施例を実装する際の使用に適している模範的なストリーミング・システムを示す。
【発明を実施するための形態】
【0009】
心拍数及び呼吸数の共同推定ネットワークに関するシステム及び方法が開示される。特に自動車、ヘルスケア、及びゲーム環境において、心拍数及び/又は呼吸数の推定の多くの使用事例がある。自動車環境では、心拍数及び呼吸数の推定を使用して、運転者のストレス、疲労、又は不能状態(incapacitation)をモニタリングすることができる。推定値に基づいて、最小リスク操作を開始することができる(例えば、音楽の変更、ブレーキ設定の修正、路肩に止める、緊急電話など)。心拍数及び呼吸数の推定も使用して、子どもの存在の検出を実行することができる。ゲーム環境では、心拍数及び呼吸数の推定を使用して、ユーザの没頭及び/又は興奮レベルを測定することができる。ヘルスケア環境では、心拍数及び呼吸数の推定を遠隔治療又はタッチレス・オンサイト・スクリーニングに使用することができる。
【0010】
非接触型カメラ・ベースの生理学的測定は、活発な研究分野であり、特にパンデミックやリモート治療注目の人気の高まりの中で大きな注目を集めている。非接触型カメラ・ベースの生理学的測定は、感染リスクを低減し、遠隔医療及びリモート・ヘルス・モニタリングを可能にする。カメラ・ベースの生理学的測定の基本原理は、血液循環及び呼吸運動によって引き起こされる皮膚色の微妙な変化又は微妙な動きを捉えることである。皮膚色の変化及び動きは、光反射の変化に対応する。イメージング技術を使用して、血流の変化による、及び呼吸時の微妙な皮膚色及び動きの変化を捉えることによって、皮膚表面の血液の容積変化を測定することができる。
【0011】
イメージング・フォトプレチスモグラフィ(iPPG:imaging Photoplethysmography)及びリモート・フォトプレチスモグラフィ(rPPG:remote Photoplethysmography)技術は、皮膚から反射した光の微妙な変化の測定に基づいている。画像心弾動図(iBCG:image Ballistocardiogram)技術は、微妙な動きを引き起こす、体内を流れる血液の機械力の測定に基づいている。心拍数及び呼吸数のどちらも、iPPG、rPPG、及び/又はiBCGベースの方法を使用して回収することができる。血液循環によって引き起こされる皮膚色の変化及び動きが非常に微妙であるため、環境照明の変動、頭部の動き、顔の表情などによって容易に破損される可能性があることから、カメラ・ベースの心拍数及び呼吸数の推定は困難である。
【0012】
このモデルの理論的光学原理では、Shaferの二色性反射モデル(DRM:Dichromatic Reflection Model)を使用して、照明反射信号及び生理学的信号をモデル化することができる。画像内のk番目の皮膚ピクセルのRGB色(赤、緑、青)値は、次の時変関数によって定義することができる:
(t)=l(t)・v(t)+v(t)+v(t) 式(1)
l(t)=l・(1+Ψ(m(t),θ(b(t),r(t))))
(t)=(u・(s+Φ(m(t),θ(b(t),r(t))))
(t)=(u・d+u・(Θ(b(t),r(t)))
ここで、C(t)はRGB値のベクトルを示し、l(t)は照度強度であり、v(t)及びv(t)はそれぞれ鏡面反射及び拡散反射であり、v(t)はカメラ・センサの量子化雑音を示す。l(t)、v(t)、及びv(t)はすべて定常部分l、u・s、u・dと、時変部分(l・Ψ(・)、u・Φ(・)、u・Θ(・))に分解することができる。ここで、m(t)は光源、頭部の動き、及び顔の表情からの照明の変動など、すべての非生理学的変動を示し、Θ(b(t),r(t))はパルスb(t)と呼吸r(t)の両方の情報の組み合わせである時変生理学的信号を示し、Ψ(・)はカメラによって観察される強度変動を示し、Φ(・)は鏡面反射の変化する部分を示し、u及びuはそれぞれ光源及び皮膚組織の単位色ベクトルを示し、uは相対的な拍動強度を示す。lは照度強度の定常部分を示し、s及びdはそれぞれ定常の鏡面反射及び拡散反射を示す。
【0013】
式(1)の皮膚反射モデルは、k番目の皮膚ピクセルのRGB値C(t)と生理学的信号Θ(b(t),r(t))との関係が非線形であり、非線形性の複雑さは、照度の変動、頭部の動き、顔の表現、カメラ強度変動などの非定常項によって引き起こされる可能性があることを示している。C(t)とΘ(b(t),r(t))との複雑な関係をモデル化するために機械学習モデルが望ましい。
【0014】
図1Aは、本開示のいくつかの実施例を実装する際の使用に適している心拍数及び呼吸数の共同推定ネットワーク・システム例100のブロック図を示す。本明細書で説明されるこの配置及び他の配置は、実例としてのみ記載されていることを理解すべきである。他の配置及び要素(例えば、マシン、インターフェース、機能、順序、機能のグループ分けなど)を、示されているものに加えて又は代わりに使用することができ、また、いくつかの要素を完全に省略することもできる。更に、本明細書で説明される要素のうちの多くは、個別の若しくは分散されたコンポーネントとして、又は他のコンポーネントと併せて、並びに任意の適切な組み合わせ及び場所で実装され得る機能的エンティティである。本明細書においてエンティティによって実行されていると説明される様々な機能は、ハードウェア、ファームウェア、及び/又はソフトウェアによって実行され得る。例えば、メモリに保存された命令を実行するプロセッサによって、様々な機能が実行され得る。更に、当業者は、心拍数及び呼吸数の共同推定ネットワーク・システム100の動作を実行する任意のシステムが、本開示の実施例の範囲及び趣旨内であることを理解するであろう。
【0015】
一実施例では、心拍数及び呼吸数の共同推定ネットワーク・システム100は、空間的注意112、空間的注意122、及び動きマップを受信し、特定の特徴データに処理を集中させるために空間的ドメイン注意マスク及びチャネル・ドメイン注意マスクの両方を使用して対象者の心拍数及び呼吸数を推定する動きニューラル・ネットワークを備える。1つ又は複数の実施例では、動きマップは、対象者のシーケンス(例えば、ビデオ・フレーム)内の2つの画像間のピクセル毎の差として計算することができる。画像は、RGB(赤、緑、青)カメラ、IR(赤外)カメラ、及びRGB_IRカメラを含むが、これらに限定されないカメラによって収集され得る。一実施例では、RGB画像がIR画像とインターリーブされてもよい。一実施例では、インターリーブは、画像の信号対雑音比(SNR:Signal to Noise Ratio)又は外部環境によって決定され得る。即ち、IR画像は低照明条件(例えば、夜間)及び照明の変化(例えば、運転中の通過する影)下で堅牢である。IR画像を使用して、RGB画像の照明の変化を相殺することができる。別の実施例では、RGB画像とIR画像とを一緒に連結して4チャネル(赤、緑、青、赤外)をネットワークに入力し、RGBのみ又はIR画像のみのネットワークと比較してネットワークの堅牢性を向上させることができる。
【0016】
一実施例では、動きマップはシーケンス内の2つの画像の各々内の対象者の顔を含む関心領域についてのピクセル毎の差として計算される。一実施例では、別個のニューラル・ネットワーク又は処理ユニットが関心領域を対象者の顔を取り囲む境界ボックスとして識別する。空間的注意112及び122はマスクとして符号化され得、外観ベースであり、且つ各画像の注意ニューラル・ネットワークによって生成され得る。一実施例では、画像は、利用可能なネットワーク帯域幅又はストレージ・リソースに基づいて、必要に応じて圧縮される。圧縮レベルは、可変であっても(即ち、利用可能な帯域幅に依存する)、固定であってもよい。心拍数及び呼吸数の共同推定ネットワーク・システム100の堅牢性及び一般性を向上させるために、トレーニング中、入力画像は可変のレベル(例えば、圧縮率)で圧縮され得る(又は圧縮されない)。
【0017】
動きニューラル・ネットワークの各処理層は、学習したパラメータを入力に適用して、複数のチャネル(C)について空間次元の高さ(H)及び幅(W)で特徴データを生成する。単一のチャネル内の特徴データは、特徴ベクトルである。一実施例では、畳み込み層105は、各々N×32×72×72(N×C×H×W)である2つの層を含み、入力画像は1×3×72×72である。Nは、連続する動きマップの数とも等しいフレーム(例えば、画像)の数である。N>1の場合、動きニューラル・ネットワークは、隣接するフレームの動きマップから時間情報を学習し、堅牢性を向上させることができる。一実施例では、入力が学習されたパラメータで畳み込みされて、プーリング層110への入力を提供する前に、畳み込み層105の層のうちの1つ又は複数の層の入力に時間シフト操作が適用される。時間シフトは、チャネルの一部分を時間次元に沿ってシフトして、時間的に近い画像間での情報交換を容易にすることによって、3D畳み込みの複雑さを軽減することができる。
【0018】
プーリング層110は、特徴マップの次元を低減する。プーリング層110は、畳み込み層105と空間的注意112との間の要素単位の乗算を受信する。一実施例では、プーリング層110はN×36×36×36である。生理学的信号は人間の皮膚に均一に分布しないため、空間的注意112(例えば、ソフト空間的注意マスク)は、ネットワーク精度を向上させるために生理学的信号がより強い領域では、より大きい重みを定義し得る。例えば、対象者の画像から計算された空間的注意マスクは、心拍数及び/又は呼吸数をより正確に推定するために、対象者の顔(対象者の髪の毛又は肩ではなく)に関連付けられた特徴を示すことができる。つまり、空間的注意112及び122は、特定の層の特徴間の空間的関係を定義する。
【0019】
プーリング層110の出力は、プーリング層120に入力される前に畳み込み層115によって処理される。プーリング層120も空間的注意122を受信する。一実施例では、入力が学習されたパラメータで畳み込みされて、プーリング層120への入力を提供する前に、畳み込み層115の層のうちの1つ又は複数の層の入力に時間シフト操作が適用される。プーリング層120は、畳み込み層115と空間的注意122との間の要素単位の乗算を受信する。一実施例では、プーリング層120は、サイズN×64×18×18の次元で実装され得る。一実施例では、空間的注意112は第2の畳み込み層の後であり、空間的注意122は第4の畳み込み層の後である。空間的注意112及び122は、顔の皮膚の位置特定を向上させ、対象者の顔の関連領域と比較して背景領域にはるかに小さい重みを定義する。
【0020】
プーリング層120の出力は、チャネル注意層125に入力される。チャネル単位ドメインの注意は、トレーニング中に学習され、チャネル単位の特徴応答を再較正して、処理に最も有益な特徴を選択する。一実施例では、1次元畳み込みを実行した後、シグモイド関数を実行してチャネル注意を学習する。チャネル注意マスクはサイズ1×1×cで実装でき、チャネル毎のマスクを提供し、各チャネルcにはトレーニング中に学習された重みが割り当てられることを意味する。H及びWの寸法の弁別特徴を選択する空間的注意とは対照的に、チャネル単位の注意では、チャネル次元の弁別特徴が選択される。より重みの大きいチャネルはより有益な特徴を有するが、より重みの小さいチャネルは、心拍数及び/又は呼吸数の推定にはあまり重要ではない。チャネル注意層125によって各特徴ベクトルに適用される学習されたチャネル注意マスクは一般化されてもよく、したがって、トレーニング中に利用可能ではなかったデプロイメント中に対象者に使用することができる。つまり、同じ学習されたチャネル注意マスクが、トレーニング中に見られなかった対象者の心拍数及び/又は呼吸数を推定するために十分に一般化される。一実施例では、対象者固有のチャネル注意マスク及び空間的注意マスクが学習され、デプロイメント中の使用のために選択され得る。
【0021】
チャネル注意が適用された後、チャネル注意層125の出力は、推定心拍数及び/又は呼吸数を生成する全結合(FC)層130に入力される。FC層130によって実行される最終的な平均プーリングの前にチャネル注意層125を挿入することによって、動きニューラル・ネットワークは有益な特徴は強調し、あまり有用ではないものを抑制する。
【0022】
一実施例では、動きニューラル・ネットワークは、心拍数推定のための血液量パルス(BVP:Blood Volume Pulse)、及び/又は呼吸数推定のための呼吸波を計算する。一実施例では、動きニューラル・ネットワークは、マルチタスクで動作し、BVPと呼吸波の両方を計算する。一実施例では、推定心拍数及び呼吸数は、それぞれパルス波形シーケンス及び呼吸波形シーケンスとして表される。心拍数及び呼吸数を1分当たりの拍動(beats per minute)で抽出するために、バタワース・バンドパス・フィルタがFC層130の出力に適用され得る。一実施例では、0.67及び4Hzのフィルタ遮断周波数が心拍数に使用され、0.08及び0.50Hzが呼吸数に使用される。フィルタリングされた信号は、10秒のウィンドウに分割され得、フーリエ変換が適用されて、心拍数及び呼吸数として優位周波数が生成され得る。
【0023】
ユーザの希望に応じて、上記のフレームワークを実装し得る様々な任意選択のアーキテクチャ及び特徴に関して、理解をより助ける情報を記載する。以下の情報は、例示のために記載されているものであり、いかようにも限定と解釈されるべきではないことに強く留意されたい。以下の特徴はいずれも、任意選択で、説明される他の特徴を除外して又は除外することなく組み込むことができる。
【0024】
図1Bは、本開示のいくつかの実施例を実装する際の使用に適している空間的注意マップ135及び140を示す。一実施例では、空間的注意112及び122は、それぞれ空間的注意マップ142及び140を含む。一実施例では、空間的注意マップ142及び140は、図2Aと併せて説明されているように、外観ニューラル・ネットワークによって生成される。
【0025】
空間的注意マップ135と、チャネル注意なしの従来の手法を使用して生成された空間的注意マップ132と比較した場合、空間的注意マップ132は、対象者の頬、鼻、及び額に大きい重み134を示す。しかしながら、空間的注意マップ132内の大きい重みの領域の境界はぼやけていて、対象者のまぶたの領域に誤判定の大きい重みを示している。また、空間的注意マップ132内の大きい重み134の値は、対象者の頬、鼻、及び額についての空間的注意マップ135内の大きい重み136の値未満である。同様に、空間的注意マップ135内の対象者の目、髪の毛、唇、あご、及び首の最も小さい重み133は、空間的注意マップ132内の同じ領域と比較してはるかに明確に定義され、且つより小さい値を有している。全体的に、空間的注意マップ135は、顔領域と背景との間より大きなコントラストと、空間的注意マップ132と比較して生理学的信号がより強い皮膚領域(額と頬)でのより優れた境界位置特定とを明確に示している。
【0026】
チャネル注意を有する従来の手法を使用して生成され、空間的注意マップ140に対応する空間的注意マップ142を比較すると、空間的注意マップ140は、顔領域と背景との間より大きなコントラストを、より優れた空間的及びチャネル単位の特徴抽出を示すより優れた境界位置特定とともに示す。特に、空間的注意マップ142の背景領域は大きい重み144を有するが、空間的注意マップ140の同じ領域は小さい重み148を有し、背景領域がそれほど重要ではないことを正しく示している。空間的注意マップ135と同様に、空間的注意マップ140は、対象者の目、鼻孔、及び唇に対して最も小さい重み143を定義し、対象者の額、鼻、及び頬に対して大きい重み146を維持している。要約すると、空間的注意マップ132及び142と比較して、空間的注意マップ135及び140は、より優れた位置特定とともに皮膚により大きい重みを有し、且つ背景領域により小さい重みを有し、動きニューラル・ネットワークの堅牢性が向上され、背景ノイズが低減される。
【0027】
図1Cは、一実施例による心拍数及び呼吸数の共同推定のための方法150のフローチャートを示す。本明細書で説明される方法150の各ブロックは、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組み合わせを使用して実行され得る計算プロセスを含む。例えば、メモリに保存された命令を実行するプロセッサによって、様々な機能が実行され得る。この方法はまた、コンピュータ・ストレージ媒体に保存されたコンピュータ使用可能命令としても具体化され得る。この方法は、いくつか例を挙げると、スタンドアロン・アプリケーション、サービス又はホスト・サービス(スタンドアロン又は別のホスト・サービスとの組み合わせ)、又は別の製品へのプラグ・インによって提供され得る。更に、方法150は、例として、図1Aのシステム100に関して説明される。しかしながら、この方法は、任意の1つのシステム、又は本明細書で説明されているものを含むが、これらに限定されないシステムの任意の組み合わせによって、追加的又は代替的に実行され得る。更に、当業者は、方法150を実行する任意のシステムが、本開示の実施例の範囲及び趣旨内であることを理解するであろう。
【0028】
ステップ155において、対象者の画像のシーケンスが、動きニューラル・ネットワーク・モデルの層によって処理されて、2つの空間次元で特徴ベクトルのチャネルが生成される。一実施例では、動きニューラル・ネットワーク・モデルは、心拍数及び呼吸数の共同推定ネットワーク・システム100を含む。一実施例では、処理は、少なくとも1つの空間的注意マスクを層間に適用することを含む。一実施例では、少なくとも1つの外観チャネル注意マスクが畳み込み層とプーリング層との間に適用される。
【0029】
一実施例では、画像のシーケンス内の各画像が受信されるフレーム・レートは可変であり、処理は、フレーム・レートに基づいて推定心拍数又は推定呼吸数のうちの少なくとも1つを調整することを含む。一実施例では、心拍数及び呼吸数の共同推定ネットワーク・システム100は、各画像とともに、フレーム・レートの計算に使用できるタイムスタンプを受信する。一実施例では、画像のシーケンス内の1つ又は複数の画像が圧縮される。一実施例では、1つ又は複数の画像は可変のレベルで圧縮される。
【0030】
一実施例では、シーケンス内の各画像について、外観マップと皮膚セグメンテーション・マスクとが注意ニューラル・ネットワークによって処理されて、少なくとも1つの空間的注意マスクが計算される。一実施例では、注意ニューラル・ネットワークは、少なくとも1つの外観チャネル注意マスクを注意ニューラル・ネットワークの層間に適用して、少なくとも1つの空間的注意マスクを計算する。一実施例では、外観マップは、対象者の顔、首、及び胸部領域を含む対象者の各画像の一部分を含む。一実施例では、皮膚セグメンテーション・マスクは、対象者の各画像の背景、髪の毛、目、眉、及びひげ領域から、対象者の各画像の額、頬、鼻、首、及び胸部領域を含む顔の皮膚を個別に識別するマスクを含む。
【0031】
ステップ160において、学習されたチャネル注意マスクが特徴ベクトルのチャネルに適用されて、対象者の推定心拍数又は推定呼吸数のうちの少なくとも1つが生成される。一実施例では、学習されたチャネル注意マスクはチャネル毎のマスクである。つまり、各チャネルには、トレーニング中に学習される重みが割り当てられ、より重みの大きいチャネルはより有益な特徴を有するが、より重みの小さいチャネルは、心拍数及び/又は呼吸数の推定にはあまり重要ではない。一実施例では、学習されたチャネル注意マスクがプーリング層120と最終的な全結合層130との間の各特徴ベクトルに適用される。
【0032】
一実施例では、処理するステップ及び適用するステップのうちの少なくとも1つは、サーバ上又はデータ・センタ内で実行され、画像のシーケンスは、ユーザ・デバイスからサーバ又はデータ・センタにストリーミングされる。一実施例では、処理するステップ及び適用するステップのうちの少なくとも1つは、サーバ上又はデータ・センタ内で実行され、推定心拍数又は推定呼吸数のうちの少なくとも1つがユーザ・デバイスにストリーミングされる。一実施例では、処理するステップ及び適用するステップのうちの少なくとも1つは、クラウド・コンピューティング環境内で実行される。一実施例では、処理するステップ及び適用するステップのうちの少なくとも1つは、マシン、ロボット、又は自律車両に採用されるニューラル・ネットワークのトレーニング、テスト、又は認定のために実行される。一実施例では、処理するステップ及び適用するステップのうちの少なくとも1つは、グラフィックス処理ユニットの一部分を含む仮想マシン上で実行される。
【0033】
図2Aは、本開示のいくつかの実施例を実装する際の使用に適している、別の心拍数及び呼吸数の共同推定ネットワーク・システム例200のブロック図を示す。心拍数及び呼吸数の共同推定ネットワーク・システム200は、外観ニューラル・ネットワーク235に加えて、図1Aに示される動きニューラル・ネットワークを含む。
【0034】
本明細書で説明されるこの配置及び他の配置は、実例としてのみ記載されていることを理解すべきである。他の配置及び要素(例えば、マシン、インターフェース、機能、順序、機能のグループ分けなど)を、示されているものに加えて又は代わりに使用することができ、また、いくつかの要素を完全に省略することもできる。更に、本明細書で説明される要素のうちの多くは、個別の若しくは分散されたコンポーネントとして、又は他のコンポーネントと併せて、並びに任意の適切な組み合わせ及び場所で実装され得る機能的エンティティである。本明細書においてエンティティによって実行されていると説明される様々な機能は、ハードウェア、ファームウェア、及び/又はソフトウェアによって実行され得る。例えば、メモリに保存された命令を実行するプロセッサによって、様々な機能が実行され得る。更に、当業者は、心拍数及び呼吸数の共同推定ネットワーク・システム200の動作を実行する任意のシステムが、本開示の実施例の範囲及び趣旨内であることを理解するであろう。
【0035】
外観ニューラル・ネットワーク235は、入力として外観マップ及び皮膚セグメンテーション・マスクを受信し、学習されたパラメータを適用して各画像フレームの空間的注意112及び122を計算する。一実施例では、外観マップ(例えば、RGB画像)は、対象者のキャプチャされた画像のトリミングされた一部分である。一実施例では、キャプチャされた画像は、対象者の顔領域(首又は胸部の上部が含まれ得る)を識別する境界ボックスにトリミングされる。一実施例では、タスク固有のニューラル・ネットワーク(図示せず)を使用して境界ボックスを識別する。
【0036】
一実施例では、タスク固有のニューラル・ネットワーク(図示せず)を使用して、皮膚セグメンテーション・バイナリ・マスクの導出元の顔のランドマークを識別する。一実施例では、対象者の額、頬領域、鼻、首、及び胸部領域などの顔の皮膚を識別するマスクである皮膚セグメンテーション・マスク(例えば、バイナリ・セグメンテーション)。一実施例では、皮膚セグメンテーション・マスクは、「1」(真)とラベル付けされた「皮膚」ピクセルと、「0」(偽)とラベル付けされた背景ピクセル、髪の毛ピクセル、目、眉、ひげなどのピクセルとを有するバイナリ・マップである。
【0037】
注意ニューラル・ネットワーク235は、外観マップ、皮膚セグメンテーション・マスク、及びチャネル注意層210及び225によって適用される学習されたチャネル注意マスクを使用して、空間的注意112及び122を計算する。トレーニングを通じて、注意ニューラル・ネットワーク235は、心拍数又は呼吸数を推定するために、外観マップのどの領域がより重要であるかを学習する。空間的注意の重みを調べると、額及び頬の領域により大きな重みがある。皮膚セグメンテーション・マスクの目的は、注意ニューラル・ネットワーク235に、心拍数/呼吸数信号が検出可能な皮膚領域では、より大きい重みを使用するべきであることを通知することで、推定の精度を更に向上させることである。
【0038】
一実施例では、外観ニューラル・ネットワーク235は、1×1畳み込みフィルタを使用して、プーリング層110に入力するための空間的注意112と、プーリング層120に入力するための空間的注意122とを生成する。次に、空間的注意112及び122は、要素単位の乗算を介して動きニューラル・ネットワーク内で特徴マップで乗算される。一実施例では、プーリング層110及び120に渡されるマスクされた特徴マップ
【数1】

(ここで、kは層インデックスである)は、
【数2】


として計算され、ここで、σ(・)はシグモイド活性化関数であり、ωは1×1畳み込みカーネルであり、bはバイアスであり、
【数3】

は動きニューラル・ネットワーク特徴マップであり、
【数4】

は外観ニューラル・ネットワーク235の特徴マップであり、
【数5】

は要素単位の乗算であり、H及びWは特徴マップの高さ及び幅である。
【0039】
チャネル注意層125を含む動きニューラル・ネットワークと同様に、外観ニューラル・ネットワーク235にはチャネル単位の注意層、特にチャネル注意層210及び225が含まれる。チャネル注意層210は、畳み込み層205とプーリング層215との間にあり、チャネル注意層225は、畳み込み層220とプーリング層230との間にある。外観ニューラル・ネットワーク235にチャネル単位の注意層を挿入することにより、より優れた顔空間的注意マスクを生成することができる。チャネル注意層210及び225を挿入することによって、外観ニューラル・ネットワーク235が有益な特徴を強調し、あまり有用でないものを抑制するのに役立つ。
【0040】
図2Bは、一実施例による心拍数及び呼吸数の共同推定のための別の方法250のフローチャートを示す。本明細書で説明される方法250の各ブロックは、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組み合わせを使用して実行され得る計算プロセスを含む。例えば、メモリに保存された命令を実行するプロセッサによって、様々な機能が実行され得る。この方法はまた、コンピュータ・ストレージ媒体に保存されたコンピュータ使用可能命令としても具体化され得る。この方法は、いくつか例を挙げると、スタンドアロン・アプリケーション、サービス又はホスト・サービス(スタンドアロン又は別のホスト・サービスとの組み合わせ)、又は別の製品へのプラグ・インによって提供され得る。更に、方法250は、例として、図2Aのシステム200に関して説明される。しかしながら、この方法は、任意の1つのシステム、又は本明細書で説明されているものを含むが、これらに限定されないシステムの任意の組み合わせによって、追加的又は代替的に実行され得る。更に、当業者は、方法250を実行する任意のシステムが、本開示の実施例の範囲及び趣旨内であることを理解するであろう。
【0041】
ステップ255において、対象者の画像のシーケンスが受信される。シーケンス内の各画像を処理して、動きマップ、外観マップ、及び皮膚セグメンテーション・マスクが生成され得る。ステップ260において、シーケンス内の各画像に対して外観マップと皮膚セグメンテーション・マスクが処理される。ステップ260において、外観ニューラル・ネットワーク・モデルが外観マップ及び皮膚セグメンテーション・マスクを処理して、空間的注意マスクを計算する。ステップ265において、画像のシーケンス及びそれに対応する空間的注意マスクが動きニューラル・ネットワーク・モデルによって処理されて、対象者の推定心拍数又は推定呼吸数のうちの少なくとも1つが生成される。
【0042】
空間的ドメインとチャネル単位ドメインとの両方で(二重の)注意を適用することによって、心拍数及び呼吸数の共同推定ネットワーク・システム100及び200の精度が向上される。空間的ドメインの注意は、強い生理学的信号応答を含む顔領域の位置を特定する空間的符号化を強化する。チャネル単位ドメインの注意は、チャネル単位の特徴応答を再較正して、最も有益な特徴を選択する。
【0043】
心拍数及び呼吸数の共同推定ネットワーク・システム100及び200はまた、心拍数と呼吸数との相関関係に依存して精度を向上させることもできる。図2Cは、本開示のいくつかの実施例を実装する際の使用に適している、心拍数と呼吸数との周波数関係を示している。各対象者について、測定された心拍数275が、測定された呼吸数280と比べてより高い周波数を有している。測定された心拍数275と測定された呼吸数280との関係は、ほとんどの対象者で一貫している。心拍数と呼吸数との相関関係は、対象者に固有である場合があり、システムの較正段階中に学習された相関関係は、デプロイメントで適用され得る。
【0044】
図2Dは、本開示のいくつかの実施例を実装する際の使用に適している心拍数と呼吸数との比率の分布を示している。心拍数対呼吸数比のグラフ285は、比率が5.5655の平均比の周りに集まり、最大値が14.8333、最小値が2.5417であることを示している。標準偏差は1.9546で、R=0.3000である。一実施例では、心拍数及び呼吸数の共同推定ネットワーク・システム100及び200のデプロイメント中、推定心拍数と推定呼吸数との比率が心拍数及び呼吸数の所定(グラウンド・トゥルース)の比率範囲外であるときは、推定心拍数及び推定呼吸数は破棄される(例えば、削除される)。一実施例では、心拍数波形又は呼吸数波形の信号対雑音比を使用して心拍数又は呼吸数推定値の精度を評価することによって、誤判定の心拍数又は呼吸数推定が削除される。信号対雑音比は、最初の2つの高調波と、心拍数又は呼吸数の周波数範囲内の残りの周波数との比率として、周波数ドメインで計算することができる。一実施例では、信号対雑音比がゼロ未満の場合、信号はノイズより弱いことから、心拍数又は呼吸数の推定は破棄される。
【0045】
心拍数及び呼吸数の共同推定ネットワーク・システム100及び200のトレーニング中、パラメータ(例えば、重み)が学習され、また、チャネル注意も学習される。心拍数と呼吸数との相関関係をトレーニング中に使用して、心拍数及び呼吸数の共同推定ネットワーク・システム100及び200の精度を向上させることができる。一実施例では、4:1~6:1の心拍数対呼吸数比が、グラウンド・トゥルース比率範囲として使用される。
【0046】
従来では、マルチタスク学習損失Lは、心拍波形の平均二乗誤差(MSE:Mean Squared Error)損失と呼吸数波形のMSE損失との合計である。これは、次のように定義される:
【数6】


ここで、Tは時間ウィンドウであり、p(t)及びr(t)はそれぞれ時変グラウンド・トゥルース・パルス(例えば、心拍数)波形シーケンス及び呼吸波形シーケンスであり、p(t)’及びr(t)’は予測されるパルス波形及び呼吸波形であり、α、βはパルス波形損失と呼吸波形損失とのバランスをとるための経験的パラメータである。一実施例では、α=β=1である。
【0047】
目的関数又は損失関数は、予測心拍数及び呼吸数と、グラウンド・トゥルース心拍数及び呼吸数との差を小さくする。一実施例では、比率ベースの相関関係損失が次の損失関数に含まれる:
【数7】

ここで、γは比率ベースの相関関係損失を制御する経験的パラメータであり、ratio_diffは予測される心拍数と呼吸数との比率と、グラウンド・トゥルース比率範囲との差である。一実施例では、予測される心拍数と呼吸数との比率がグラウンド・トゥルース比率範囲[4:1,6:1]外である場合、式(4)の損失関数Lratioは、より多くのペナルティを与える。一実施例では、トレーニング中、心拍数及び呼吸数の共同推定ネットワーク・システム100及び200のパラメータ(例えば、重み)及びチャネル注意を調整して、推定される心拍数と呼吸数との比率と、グラウンド・トゥルース心拍数と呼吸数との比率との差を小さくする。
【0048】
一実施例では、トレーニング中、パラメータを調整して、推定される心拍数と呼吸数との相関関係を、グラウンド・トゥルースの心拍数と呼吸数との相関関係と整合させる。一実施例では、比率ベースの相関関係損失及び整合相関損失が次の損失関数に含まれる:
【数8】

ここで、σp(t)及びσr(t)はそれぞれパルス波形及び呼吸波形の標準偏差であり、COVは共分散である。
【0049】
図3Aは、本開示のいくつかの実施例を実装する際の使用に適している心拍数及び呼吸数の共同推定ネットワーク・システム100及び200のためのトレーニング構成300のブロック図を示している。本明細書で説明されるこの配置及び他の配置は、実例としてのみ記載されていることを理解すべきである。他の配置及び要素(例えば、マシン、インターフェース、機能、順序、機能のグループ分けなど)を、示されているものに加えて又は代わりに使用することができ、また、いくつかの要素を完全に省略することもできる。更に、本明細書で説明される要素のうちの多くは、個別の若しくは分散されたコンポーネントとして、又は他のコンポーネントと併せて、並びに任意の適切な組み合わせ及び場所で実装され得る機能的エンティティである。本明細書においてエンティティによって実行されていると説明される様々な機能は、ハードウェア、ファームウェア、及び/又はソフトウェアによって実行され得る。例えば、メモリに保存された命令を実行するプロセッサによって、様々な機能が実行され得る。更に、当業者は、トレーニング構成300の動作を実行する任意のシステムが、本開示の実施例の範囲及び趣旨内であることを理解するであろう。
【0050】
図3Aに示されるように、トレーニング構成300には、心拍数及び呼吸数の共同推定ネットワーク・システム200、損失関数ユニット310、比率演算ユニット315、及び圧縮ユニット320が含まれている。心拍数及び呼吸数の共同推定ネットワーク・システム100は、心拍数及び呼吸数の共同推定ネットワーク・システム200の代わりに用いてもよい。比率演算ユニット315は、予測された心拍数、予測された呼吸数、及びグラウンド・トゥルース比率範囲を使用して、心拍数対呼吸数比及びratio_diffを計算する。損失関数ユニット310は、予測された心拍数、予測された呼吸数、ratio_diff、並びにグラウンド・トゥルース心拍数及び呼吸数を受信する。損失関数ユニット310は、式(3)、(4)、又は(5)のうちのいずれかを評価してパラメータ更新を計算し、誤差逆伝播を介して心拍数及び呼吸数の共同推定ネットワーク・システム200のチャネル注意を更新し得る。
【0051】
いくつかの環境では、心拍数及び呼吸数の共同推定ネットワーク・システム200がデプロイされるときに、入力画像が圧縮され得る。これは、通常、視覚アーチファクトを導入し、正確な推定がより困難になることがある。圧縮レベルは、可変であっても(即ち、利用可能な帯域幅に依存する)、固定であってもよい。心拍数及び呼吸数の共同推定ネットワーク・システム100及び200の堅牢性及び一般性を向上させるために、トレーニングでは、可変のレベル(例えば、圧縮率)で圧縮された(又はされない)入力画像を使用することができる。圧縮は、トレーニング中のデータ拡張の一形態として効果的に採用され得る。したがって、トレーニング構成300にはまた、対象者の画像を受信し、且つ任意選択で、動きマップを計算する前に各画像を圧縮する圧縮ユニット320が含まれ得る。一実施例では、任意選択で圧縮された画像を使用して、外観マップ及び皮膚セグメンテーション・マスクも生成される。一実施例では、心拍数及び呼吸数の共同推定ネットワーク・システム100及び200が圧縮されていない入力画像と複数のレベルの圧縮された入力画像との両方を使用してトレーニングされた場合、圧縮されていない入力データの推定の精度は低下しない。
【0052】
図3Bは、本開示のいくつかの実施例を実装する際の使用に適している、心拍数及び呼吸数の共同推定ネットワーク・システム100及び200をトレーニングするための方法330の別のフローチャートを示している。本明細書で説明される方法330の各ブロックは、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組み合わせを使用して実行され得る計算プロセスを含む。例えば、メモリに保存された命令を実行するプロセッサによって、様々な機能が実行され得る。この方法はまた、コンピュータ・ストレージ媒体に保存されたコンピュータ使用可能命令としても具体化され得る。この方法は、いくつか例を挙げると、スタンドアロン・アプリケーション、サービス又はホスト・サービス(スタンドアロン又は別のホスト・サービスとの組み合わせ)、又は別の製品へのプラグ・インによって提供され得る。更に、方法330は、例として、図2Aの心拍数及び呼吸数の共同推定ネットワーク・システム200に関して説明される。しかしながら、この方法は、任意の1つのシステム、又は本明細書で説明されているものを含むが、これらに限定されないシステムの任意の組み合わせによって、追加的又は代替的に実行され得る。更に、当業者は、方法330を実行する任意のシステムが、本開示の実施例の範囲及び趣旨内であることを理解するであろう。
【0053】
ステップ335において、対象者の画像のシーケンスが受信される。ステップ340において、圧縮ユニット320が、シーケンス内の各画像が圧縮されているかどうかを決定する。圧縮される画像の一部分については、圧縮ユニット320はまた、その部分の各画像の圧縮レベルを決定し、ステップ345では、圧縮ユニット320は、その部分の各画像を圧縮してから、動きマップ、外観マップ、及び皮膚セグメンテーション・マスクのうちの1つ又は複数を生成する。ステップ345では、データ拡張と同じ又は可変のレベルで圧縮された画像が生成されて、非圧縮データをトレーニング・データとして使用することができる。これにより、二重注意の心拍数及び呼吸数の共同推定ネットワーク・システム100又は200は、任意の圧縮レベルに対して推定を生成することを学習する。圧縮アーチファクトが生理学的信号を破損することから、画像又はビデオの圧縮は従来からrPPGにアーチファクトをもたらすと考えられているが、圧縮をトレーニング・データ拡張手法として使用して、心拍数及び呼吸数の共同推定ネットワーク・システム100又は200の堅牢性を向上させることができる。そうでなければ、圧縮されていない画像については、圧縮ユニット320は、非圧縮形式の画像を使用して、動きマップ、外観マップ、及び皮膚セグメンテーション・マスクのうちの1つ又は複数を生成する。
【0054】
ステップ350において、外観ニューラル・ネットワーク・モデル235のような外観ニューラル・ネットワーク・モデルが、各外観マップ及び皮膚セグメンテーション・マスクを使用して空間的注意マスクを生成する。ステップ355において、動きニューラル・ネットワーク・モデルが空間的注意マスクを使用して、対象者の推定心拍数及び/又は推定呼吸数を生成する。ステップ365において、推定心拍数及び/又は推定呼吸数に基づいて損失関数が評価される。一実施例では、損失関数ユニット310が損失関数を評価する。一実施例では、推定心拍数と推定呼吸数との比率が損失関数への入力として計算される。一実施例では、式(3)、(4)、又は(5)に従って計算された損失関数のうちの1つが評価される。
【0055】
ステップ370において、トレーニングを続行するかどうかが決定される。一実施例では、損失関数の評価によって、損失が所望の精度レベルに関連付けられた閾値よりも大きいことが示される場合、トレーニングは続行される。ステップ370においてトレーニングが続行されない場合、ステップ375において、トレーニングは完了し、心拍数及び呼吸数の共同推定ネットワーク・システム100又は200がデプロイされ得る。そうでなければ、ステップ380において、心拍数及び呼吸数の共同推定ネットワーク・システム100又は200のパラメータが調整される(例えば、更新される)。一実施例では、チャネル注意マップもステップ380において調整される。
【0056】
一実施例では、パラメータは動きニューラル・ネットワーク・モデル及び/又は注意ニューラル・ネットワーク・モデルの層によって適用され、パラメータは調整されて、グラウンド・トゥルース心拍数又は呼吸数と推定心拍数又は呼吸数との差を小さくする。一実施例では、パラメータは動きニューラル・ネットワーク・モデル及び/又は注意ニューラル・ネットワーク・モデルの層によって適用され、パラメータは調整されて、推定心拍数と推定呼吸数との推定比率と、グラウンド・トゥルース比率範囲との差を小さくする。一実施例では、パラメータは動きニューラル・ネットワーク・モデル及び/又は注意ニューラル・ネットワーク・モデルの層によって適用され、パラメータは調整されて、推定心拍数と推定呼吸数との相関関係を高めて、心拍数と呼吸数との予想される相関関係と整合させる。
【0057】
特に自動車、ヘルスケア、及びゲーム環境において、心拍数及び/又は呼吸数の推定の多くの使用事例がある。自動車環境では、心拍数及び呼吸数の共同推定ネットワーク・システム100又は200を使用して、運転者のストレス、疲労、又は不能状態をモニタリングすることができる。推定値に基づいて、最小リスク操作を開始することができる(例えば、音楽の変更、ブレーキ設定の修正、路肩に止める、緊急電話など)。心拍数及び呼吸数の共同推定ネットワーク・システム100又は200を使用して、子どもの存在の検出を実行することもできる。ヘルスケア環境では、心拍数及び呼吸数の共同推定ネットワーク・システム100又は200を遠隔治療又はタッチレス・オンサイト・スクリーニングに使用することができる。ゲーム環境では、心拍数及び呼吸数の共同推定ネットワーク・システム100又は200を使用して、ユーザの没頭及び/又は興奮レベルを測定することができる。
【0058】
空間的注意とチャネル単位の注意との両方を、動きニューラル・ネットワーク・モデル及び外観ニューラル・ネットワーク・モデルの畳み込みニューラル・ネットワーク・アーキテクチャに統合することによって、心拍数及び呼吸数の推定が向上される。特に、皮膚セグメンテーション・マスクは、顔の皮膚(額、頬、鼻など)、首、及び胸部領域を識別して、心拍数及び呼吸数を推定するための追加データ(例えば、血液循環)を提供することによって、精度を向上させる。対照的に、心拍数及び/又は呼吸数を推定するための従来の手法は、空間的注意マスクに依存し、チャネルベースの注意は使用しない。
【0059】
入力画像のシーケンスを転送するために利用可能な帯域幅は様々であり得、その結果、可変のフレーム・レート及び/又は画像圧縮レベルがもたらされる。ビデオ・フレーム・レートの場合、入力画像のシーケンスは動的であり、心拍数及び呼吸数はそれに応じて調整され得る。動きニューラル・ネットワーク・モデル及び外観ニューラル・ネットワーク・モデルの一般性及び堅牢性を向上させるために、トレーニング中に(可変のレベルの)圧縮拡張を採用することができる。
【0060】
並列処理アーキテクチャ
図4は、一実施例による、並列処理ユニット(PPU:Parallel Processing Unit)400を示す。PPU400を使用して、心拍数及び呼吸数の共同推定ネットワーク・システム100又は200を実装することができる。PPU400を使用して、動きニューラル・ネットワーク・モデル、外観ニューラル・ネットワーク・モデル235、損失関数ユニット310、及び圧縮ユニット320のうちの1つ又は複数を実装することができる。一実施例では、PPU400などのプロセッサは、ニューラル・ネットワーク・モデルを実装するように構成され得る。ニューラル・ネットワーク・モデルは、プロセッサによって実行されるソフトウェア命令として実装されても、又は、他の実施例では、プロセッサが、入力(例えば、値を表す電気信号)のセットを処理するように構成されたハードウェア要素の行列を含んで、ニューラル・ネットワーク・モデルのアクティベーションを表し得る出力のセットを生成することができる。更に他の実施例では、ニューラル・ネットワーク・モデルは、ソフトウェア命令と、ハードウェア要素の行列によって実行される処理との組み合わせとして実装されてもよい。ニューラル・ネットワーク・モデルの実装には、例えば、ニューラル・ネットワーク・モデルの教師付き又は教師なしトレーニングだけでなく、又は、別の方法では、パラメータのセットを使用して推論を実行して、新規の入力のセットを処理することを通じて、ニューラル・ネットワーク・モデルのパラメータのセットを決定することが含まれ得る。
【0061】
一実施例では、PPU400は、1つ又は複数の集積回路デバイスに実装されたマルチ・スレッド・プロセッサである。PPU400は、多くのスレッドを並行して処理するように設計されたレイテンシ隠蔽アーキテクチャである。スレッド(例えば、実行のスレッド)は、PPU400によって実行されるように構成された命令のセットのインスタンス化である。一実施例では、PPU400は、ディスプレイ・デバイスでの表示のための2次元(2D)画像データを生成するために、3次元(3D)グラフィックス・データを処理するためのグラフィックス・レンダリング・パイプラインを実装するように構成されたグラフィックス処理ユニット(GPU:Graphics Processing Unit)である。他の実施例では、PPU400は、汎用計算を実行するために利用され得る。本明細書では、例示のために1つの模範的な並列プロセッサが提供されているが、そのようなプロセッサは、例示のためにのみ記載されているものであり、また、当該プロセッサを補完及び/又は代替するために任意のプロセッサが採用され得ることに強く留意されたい。
【0062】
1つ又は複数のPPU400は、数千もの高性能計算(HPC:High Performance Computing)アプリケーション、データ・センタ・アプリケーション、クラウド計算アプリケーション、及び機械学習アプリケーションを高速化するように構成され得る。PPU400は、自律走行車両、シミュレーション、レイ又はパス・トレーシングなどの計算グラフィックス、深層学習、高精度音声、画像、及びテキスト認識システム、インテリジェント・ビデオ分析、分子シミュレーション、創薬、疾患診断、天気予報、ビッグ・データ分析、天文学、分子動力学シミュレーション、財務モデリング、ロボット工学、工場自動化、リアル・タイム言語翻訳、オンライン検索の最適化、並びにパーソナライズ化されたユーザ推薦などのための多数の深層学習システム及びアプリケーションを高速化するように構成され得る。
【0063】
図4に示されているように、PPU400は、入出力(I/O:Input/Output)ユニット405、フロント・エンド・ユニット415、スケジューラ・ユニット420、作業配分ユニット425、ハブ430、クロスバー(Xbar:Crossbar)470、1つ又は複数の汎用処理クラスタ(GPC:General Processing Cluster)450、及び1つ又は複数のメモリ・パーティション・ユニット480を含む。PPU400は、1つ又は複数の高速NVLink410インターコネクトを介してホスト・プロセッサ又は他のPPU400に接続され得る。PPU400は、インターコネクト402を介してホスト・プロセッサ又は他の周辺デバイスに接続され得る。PPU400は、いくつかのメモリ・デバイスを含むローカル・メモリ404にも接続され得る。一実施例では、ローカル・メモリは、いくつかのダイナミック・ランダム・アクセス・メモリ(DRAM:Dynamic Random Access Memory)デバイスを含み得る。DRAMデバイスは、各デバイス内に複数のDRAMダイがスタックされた高帯域幅メモリ(HBM:High-Bandwidth Memory)サブシステムとして構成され得る。
【0064】
NVLink410インターコネクトは、1つ又は複数のCPUと組み合わされた1つ又は複数のPPU400をシステムがスケーリングし、含めることを可能にし、PPU400とCPUとの間のキャッシュ・コヒーレンス、及びCPUマスタリングをサポートする。データ及び/又はコマンドは、NVLink410によって、ハブ430を経由して、PPU400の他のユニット(1つ又は複数のコピー・エンジン、ビデオ符号化器、ビデオ復号化器、電源管理ユニットなど(明示的には図示せず))に/から送信され得る。NVLink410については、図5Bと併せてより詳細に説明する。
【0065】
I/Oユニット405は、インターコネクト402経由で、ホスト・プロセッサ(図示せず)から通信(例えば、コマンド、データなど)を送信及び受信するように構成されている。I/Oユニット405は、インターコネクト402を介して直接、又はメモリ・ブリッジなどの1つ又は複数の中間デバイスを通じて、ホスト・プロセッサと通信することができる。一実施例では、I/Oユニット405は、インターコネクト402を介してPPU400のうちの1つ又は複数など、1つ又は複数の他のプロセッサと通信することができる。一実施例では、I/Oユニット405は、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe:Peripheral Component Interconnect Express)インターフェースをPCIeバス経由の通信のために実装し、インターコネクト402は、PCIeバスである。代替実施例では、I/Oユニット405は、他のタイプのよく知られているインターフェースを外部デバイスと通信するため実装してもよい。
【0066】
I/Oユニット405は、インターコネクト402経由で受信したパケットを復号化する。一実施例では、パケットは、PPU400に様々な操作を実行させるように構成されたコマンドを表す。I/Oユニット405は、復号化されたコマンドを、コマンドが指定し得るとおりにPPU400の他の様々なユニットに送信する。例えば、いくつかのコマンドは、フロント・エンド・ユニット415に送信され得る。他のコマンドは、ハブ430、又はPPU400の他のユニット(1つ又は複数のコピー・エンジン、ビデオ符号化器、ビデオ復号化器、電源管理ユニットなど(明示的には図示せず))に送信され得る。つまり、I/Oユニット405は、PPU400の様々な論理ユニット間の通信をルーティングするように構成されている。
【0067】
一実施例では、ホスト・プロセッサによって実行されるプログラムが、処理のためにPPU400にワークロードを提供するバッファ内のコマンド・ストリームを符号化する。ワークロードは、いくつかの命令及びこれらの命令によって処理されるデータを含み得る。バッファは、ホスト・プロセッサとPPU400との両方によってアクセス可能(例えば、読み取り/書き込み)であるメモリ内の領域である。例えば、I/Oユニット405は、インターコネクト402に接続されたシステム・メモリ内のバッファに、インターコネクト402経由で送信されたメモリ・リクエストを介してアクセスするように構成され得る。一実施例では、ホスト・プロセッサは、コマンド・ストリームをバッファに書き込み、その後、コマンド・ストリームの先頭へのポインタをPPU400に送信する。フロント・エンド・ユニット415は、1つ又は複数のコマンド・ストリームへのポインタを受信する。フロント・エンド・ユニット415は、1つ又は複数のストリームを管理し、ストリームからコマンドを読み取り、PPU400の様々なユニットにコマンドを転送する。
【0068】
フロント・エンド・ユニット415は、1つ又は複数のストリームによって定義されたタスクを処理するために様々なGPC450を構成するスケジューラ・ユニット420に結合されている。スケジューラ・ユニット420は、スケジューラ・ユニット420によって管理される様々なタスクに関する状態情報を追跡するように構成されている。状態は、どのGPC450にタスクが割り当てられているか、タスクがアクティブであるか又は非アクティブであるか、タスクに関連付けられている優先レベルなどを示し得る。スケジューラ・ユニット420は、1つ又は複数のGPC450での複数のタスクの実行を管理する。
【0069】
スケジューラ・ユニット420は、GPC450での実行のためのタスクをディスパッチするように構成された作業配分ユニット425に結合されている。作業配分ユニット425は、スケジューラ・ユニット420から受信されたいくつかのスケジュール済みタスクを追跡し得る。一実施例では、作業配分ユニット425は、GPC450の各々について保留中タスクのプール及びアクティブ・タスクのプールを管理する。GPC450がタスクの実行を完了すると、そのタスクは、GPC450のアクティブ・タスクのプールから退去させられ、保留中タスクのプールから他のタスクのうちの1つが、GPC450での実行のために選択及びスケジュールされる。アクティブ・タスクがGPC450でアイドル状態になっている場合(データ依存性が解決されるのを待っている間など)、そのアクティブ・タスクは、GPC450から退去させられて、保留中タスクのプールに戻され得る。その一方で、保留中タスクのプール内の別のタスクがGPC450での実行のために選択及びスケジュールされる。
【0070】
一実施例では、ホスト・プロセッサがドライバ・カーネルを実行する。ドライバ・カーネルは、ホスト・プロセッサ上で実行される1つ又は複数のアプリケーションがPPU400での実行のために操作をスケジュールすることを可能にするアプリケーション・プログラミング・インターフェース(API:Application Progamming Interface)を実装する。一実施例では、複数の計算アプリケーションがPPU400によって同時に実行され、PPU400は、複数の計算アプリケーションに対して分離、サービス品質(QoS:Quality of Service)、及び独立したアドレス空間を提供する。アプリケーションは、ドライバ・カーネルに、PPU400による実行のための1つ又は複数のタスクを生成させる命令(例えば、API呼び出し)を生成し得る。ドライバ・カーネルは、PPU400によって処理されている1つ又は複数のストリームにタスクを出力する。各タスクは、本明細書ではワープと呼ばれる、関連スレッドの1つ又は複数のグループを含み得る。一実施例では、1ワープは、並行して実行され得る32個の関連スレッドを含む。協調スレッドとは、タスクを実行するための命令を含み、共有メモリを介してデータを交換し得る複数のスレッドを指し得る。タスクは、GPC450内の1つ又は複数の処理ユニットに割り当てられ得、命令は少なくとも1つのワープによる実行のためにスケジュールされる。
【0071】
作業配分ユニット425は、XBar470を介して1つ又は複数のGPC450と通信する。XBar470は、PPU400のユニットのうちの多くをPPU400の他のユニットに結合するインターコネクト・ネットワークである。例えば、XBar470は、作業配分ユニット425を特定のGPC450に結合するように構成され得る。明示的には示されていないが、PPU400の1つ又は複数の他のユニットも、ハブ430を介してXBar470に接続され得る。
【0072】
タスクはスケジューラ・ユニット420によって管理され、作業配分ユニット425によってGPC450にディスパッチされる。GPC450は、タスクを処理し、結果を生成するように構成されている。結果は、GPC450内の他のタスクによって消費されたり、XBar470経由で異なるGPC450にルーティングされたり、又はメモリ404に保存されたりし得る。結果は、メモリ404に/からデータを読み取り及び書き込みするためのメモリ・インターフェースを実装するメモリ・パーティション・ユニット480を介してメモリ404に書き込まれ得る。結果は、NVLink410を介して別のPPU400又はCPUに送信されることも可能である。一実施例では、PPU400は、PPU400に結合されたメモリ404の別個且つ個別のメモリ・デバイスの数に相当する数Uのメモリ・パーティション・ユニット480を含む。各GPC450は、仮想アドレスの物理アドレスへの変換、メモリ保護、及びメモリ・リクエストの調停を提供するためにメモリ管理ユニットを含み得る。一実施例では、メモリ管理ユニットは、仮想アドレスのメモリ404内の物理アドレスへの変換を実行するための1つ又は複数のトランスレーション・ルックアサイド・バッファ(TLB:Translation Lookaside Buffer)を提供する。
【0073】
一実施例では、メモリ・パーティション・ユニット480は、ラスタ演算(ROP:Raster Operation)ユニット、レベル2(L2:Level two)キャッシュ、及びメモリ404に結合されたメモリ・インターフェースを含む。メモリ・インターフェースは、高速データ転送のために、32、64、128、1024ビット・データ・バスなどを実装し得る。PPU400は、高帯域幅メモリ・スタック又はグラフィックス・ダブル・データ・レート、バージョン5、シンクロナス・ダイナミック・ランダム・アクセス・メモリ、又は他のタイプの永続ストレージなど、最大Y個のメモリ・デバイスに接続され得る。一実施例では、メモリ・インターフェースは、HBM2メモリ・インターフェースを実装し、YはUの半分に相当する。一実施例では、HBM2メモリ・スタックは、PPU400と同じ物理パッケージに位置し、従来のGDDR5 SDRAMシステムと比較して大幅な電力及び面積の節約を提供する。一実施例では、各HBM2スタックは、4つのメモリ・ダイを含み、Y=4であり、各HBM2スタックは、合計で8つのチャネルに対して1つのダイあたりに2つの128ビット・チャネルと、1024ビットのデータ・バス幅とを含む。
【0074】
一実施例では、メモリ404は、データを保護するためにシングル・エラー訂正ダブル・エラー検出(SECDED:Single-Error Correcting Double-Error Detecting)エラー訂正コード(ECC:Error Correction Code)をサポートしている。ECCは、データ破損の影響を受けやすい計算アプリケーションのより高い信頼性を提供する。PPU400が非常に大規模なデータセットを処理する、及び/又はアプリケーションを長時間実行する大規模なクラスタ計算環境では、信頼性が特に重要である。
【0075】
一実施例では、PPU400は、マルチ・レベルのメモリ階層を実装している。一実施例では、メモリ・パーティション・ユニット480は、統合メモリをサポートして、CPU及びPPU400のメモリに単一の統合された仮想アドレス空間を提供し、仮想メモリ・システム間でのデータ共有を可能にする。一実施例では、PPU400による他のプロセッサに位置するメモリへのアクセス頻度はトレースされて、メモリ・ページが、当該ページにより頻繁にアクセスするPPU400の物理メモリに移動されることを確実にする。一実施例では、NVLink410は、アドレス変換サービスをサポートしているため、PPU400はCPUのページ・テーブルに直接アクセスすることができ、PPU400によるCPUメモリへのフル・アクセスが提供される。
【0076】
一実施例では、コピー・エンジンが、複数のPPU400間、又はPPU400とCPUとの間でデータを転送する。コピー・エンジンは、ページ・テーブルにマッピングされていないアドレスのページ・フォールトを生成することができる。その後、メモリ・パーティション・ユニット480は、ページ・フォールトをサービスし、アドレスをページ・テーブルにマッピングし、その後、コピー・エンジンが転送を実行することができる。従来のシステムでは、複数のプロセッサ間での複数のコピー・エンジン操作のためにメモリがピン留めされ(例えば、非ページ可能である)、使用可能なメモリが大幅に削減される。ハードウェア・ページの障害が発生すると、メモリ・ページが存在し、コピー・プロセスが透過的であるかどうかを気にすることなく、アドレスをコピー・エンジンに渡すことができる。
【0077】
メモリ404又は他のシステム・メモリからのデータは、メモリ・パーティション・ユニット480によってフェッチされ、L2キャッシュ460に保存され得る。L2キャッシュ460は、オン・チップに位置し、様々なGPC450間で共有される。図に示されているように、各メモリ・パーティション・ユニット480は、対応するメモリ404に関連付けられたL2キャッシュの一部分を含む。この場合、より低いレベルのキャッシュは、GPC450内の様々なユニットに実装され得る。例えば、GPC450内の処理ユニットの各々は、レベル1(L1:Level one)キャッシュを実装することができる。L1キャッシュは、特定の処理ユニット専用のプライベート・メモリである。L2キャッシュ460は、メモリ・インターフェース470及びXBar470に結合され、L2キャッシュからのデータはフェッチされ、処理のためにL1キャッシュの各々に保存され得る。
【0078】
一実施例では、各GPC450内の処理ユニットは、単一命令、複数データ(SIMD:Single-Instruction,Multiple-Data)アーキテクチャを実装している。このアーキテクチャでは、スレッドのグループ(例えば、ワープ)内の各スレッドが、同じ命令セットに基づいてデータの異なるセットを処理するように構成されている。スレッドのグループ内のすべてのスレッドが同じ命令を実行する。別の実施例では、処理ユニットは、単一命令、複数スレッド(SIMT:Single-Instruction,Multiple-Thread)アーキテクチャを実装している。このアーキテクチャでは、スレッドのグループ内の各スレッドが、同じ命令セットに基づいてデータの異なるセットを処理するように構成されているが、スレッドのグループ内の個々のスレッドは、実行中に分岐することができる。一実施例では、各ワープに対してプログラム・カウンタ、呼び出しスタック、及び実行状態が維持され、ワープ内のスレッドが分岐するときに、ワープとワープ内の直列実行との間での同時並行性が可能になる。別の実施例では、各個々のスレッドに対してプログラム・カウンタ、呼び出しスタック、及び実行状態が維持され、すべてのスレッド間、ワープ内、及びワープ間で等しい同時並行性が可能になる。各個々のスレッドに対して実行状態が維持されるときは、同じ命令を実行するスレッドは収束され、最大効率のために並行して実行され得る。
【0079】
協調グループは、スレッドが通信する粒度を開発者が表現することを可能にする通信スレッドのグループを編成するためのプログラミング・モデルであり、これにより、より豊富で効率的な並列分解の表現が可能になる。協調起動APIは、並列アルゴリズムの実行のためのスレッド・ブロック間の同期をサポートする。従来のプログラミング・モデルは、協調スレッドを同期させるための単一の単純なコンストラクトを提供する。つまり、スレッド・ブロック(例えば、syncthreads( )関数)のすべてのスレッドにわたるバリアである。しかしながら、多くの場合、プログラマは、スレッド・ブロックの粒度よりも小さくスレッドのグループを定義し、定義されたグループ内で同期して、より優れた性能、デザインの柔軟性、及び集合的なグループ全体の関数インターフェースの形式でのソフトウェアの再利用を可能にしたいと考える。
【0080】
協調グループは、プログラマがサブ・ブロック(例えば、単一スレッドのように小さい)及びマルチ・ブロック粒度でスレッドのグループを明示的に定義し、協調グループ内のスレッドの同期化などの集合的な操作を実行することを可能にする。プログラミング・モデルは、ソフトウェア境界を越えたクリーンな構成をサポートしているため、ライブラリ及び効用関数は、収束について仮定することなく、ローカル・コンテキスト内で安全に同期することができる。協調グループ・プリミティブは、プロデューサ・コンシューマ並列性、日和見並列性(opportunistic parallelism)、及びスレッド・ブロックのグリッド全体にわたるグローバル同期など、協調的並列性の新しいパターンを可能にする。
【0081】
各処理ユニットは、完全にパイプライン化された単精度、倍精度、及び/又は混合精度であり得、且つ浮動小数点演算論理ユニット及び整数演算論理ユニットであり得る多数(例えば、128個など)の個別の処理コア(例えば、機能ユニット)を含む。一実施例では、浮動小数点演算論理ユニットは、浮動小数点演算のためのIEEE 754-2008規格を実装している。一実施例では、コアは、64個の単精度(32ビット)浮動小数点コア、64個の整数コア、32個の倍精度(64ビット)浮動小数点コア、及び8個のテンソル・コアを含む。
【0082】
行列演算を実行するように構成されているテンソル・コア。特に、テンソル・コアは、ニューラル・ネットワークのトレーニング及び推論中の畳み込み演算のための行列行列乗算(GEMM:Matrix-Matrix Multiplication)などの深層学習行列演算を実行するように構成されている。一実施例では、各テンソル・コアは、4×4行列に対して演算を行い、行列積和演算D=A・B+Cを実行する。ここで、A、B、C、及びDは4×4行列である。
【0083】
一実施例では、行列乗算入力A及びBは、整数、固定小数点、又は浮動小数点行列であり得る一方で、累積行列C及びDは、等しい又はそれ以上のビット幅の整数、固定小数点、又は浮動小数点行列であり得る。一実施例では、テンソル・コアは、32ビット整数累積を有する1、4、又は8ビット整数入力データに対して演算を行う。8ビット整数行列乗算では、1024回の演算が必要であり、後に8×8×16行列乗算の他の中間積との32ビット整数加算を使用して累積される完全精度積がもたらされる。一実施例では、テンソル・コアは、32ビット浮動小数点累積で16ビット浮動小数点入力データに対して演算を行う。16ビット浮動小数点乗算では、64回の演算が必要であり、後に4×4×4行列乗算の他の中間積との32ビット浮動小数点加算を使用して累積される完全精度積がもたらされる。実際には、テンソル・コアを使用して、これらのより小さな要素から構築される、より大きな2次元又はより高い次元の行列演算を実行する。CUDA 9 C++APIなどのAPIは、特殊化した行列ロード、行列積和、及び行列ストア演算を公開して、CUDA-C++プログラムからテンソル・コアを効率的に使用する。CUDAレベルでは、ワープ・レベルのインターフェースは、ワープの32個のすべてのスレッドにスパンする16×16サイズの行列を想定している。
【0084】
各処理ユニットはまた、特殊関数(例えば、属性評価、逆数平方根など)を実行するM個の特殊関数ユニット(SFU:Special Function Unit)を含み得る。一実施例では、SFUは、階層ツリー・データ構造を横断するように構成されたツリー・トラバーサル・ユニットを含み得る。一実施例では、SFUは、テクスチャ・マップ・フィルタリング演算を実行するように構成されたテクスチャ・ユニットを含み得る。一実施例では、テクスチャ・ユニットは、メモリ404からテクスチャ・マップ(例えば、テクセルの2D配列)をロードし、テクスチャ・マップをサンプリングして、処理ユニットによって実行されるシェーダ・プログラムで使用するためのサンプリングされたテクスチャ値を生成するように構成されている。一実施例では、テクスチャ・マップは、L1キャッシュを構成するか又は含めることができる共有メモリに保存される。テクスチャ・ユニットは、ミップ・マップ(例えば、様々な詳細レベルのテクスチャ・マップ)を使用したフィルタリング演算などのテクスチャ演算を実装する。一実施例では、各処理ユニットは、2つのテクスチャ・ユニットを含む。
【0085】
各処理ユニットはまた、共有メモリとレジスタ・ファイルとの間のロード及びストア演算を実装するN個のロード・ストア・ユニット(LSU:Load Store Unit)を含む。各処理ユニットは、コアの各々をレジスタ・ファイルに、LSUをレジスタ・ファイル、共有メモリに接続するインターコネクト・ネットワークを含む。一実施例では、インターコネクト・ネットワークは、コアのいずれかをレジスタ・ファイル内のレジスタのいずれかに接続し、LSUをレジスタ・ファイル及び共有メモリ内のメモリ場所に接続するように構成され得るクロスバーである。
【0086】
共有メモリは、データ保存、並びに処理ユニット間及び処理ユニット内のスレッド間での通信を可能にするオン・チップ・メモリの配列である。一実施例では、共有メモリは、128KBのストレージ容量を含み、処理ユニットの各々からメモリ・パーティション・ユニット480への経路にある。共有メモリは、読み取り及び書き込みのキャッシュに使用することができる。共有メモリ、L1キャッシュ、L2キャッシュ、及びメモリ404のうちの1つ又は複数がバッキング・ストアである。
【0087】
データ・キャッシュと共有メモリ機能を1つのメモリ・ブロックに組み合わせることで、両方のタイプのメモリ・アクセスにおいて最高の全体的な性能が提供される。容量は、共有メモリを使用しないプログラムによってキャッシュとして使用可能である。例えば、共有メモリが容量の半分を使用するように構成されている場合、テクスチャ及びロード/ストア演算では残りの容量を使用することができる。共有メモリ内への統合により、共有メモリをストリーミング・データ用の高スループット・コンジットとして機能させると同時に、頻繁に再利用されるデータへの高帯域幅及び低レイテンシ・アクセスを提供することが可能となる。
【0088】
汎用並列計算用に構成されていると、グラフィックス処理と比較してより単純な構成を使用することができる。具体的には、固定関数グラフィックス処理ユニットがバイパスされ、より単純なプログラミング・モデルが作成される。汎用並列計算構成では、作業配分ユニット425は、GPC450内の処理ユニットにスレッドのブロックを直接割り当てて配分する。スレッドは、各スレッドが一意の結果を生成することを確実にするために計算において一意のスレッドIDを使用し、プログラムを実行し且つ計算を実行するために処理ユニットを使用し、スレッド間で通信するために共有メモリを使用し、共有メモリ及びメモリ・パーティション・ユニット480を介してグローバル・メモリの読み取り及び書き込みを行うためにLSUを使用して、同じプログラムを実行する。汎用並列計算用に構成されていると、処理ユニットはまた、スケジューラ・ユニット420が処理ユニットでの新しい作業を開始するために使用することができるコマンドを書き込むことができる。
【0089】
PPU400の各々は、テンソル・コア(TC:Tensor Core)、テンソル処理ユニット(TPU:Tensor Processing Unit)、ピクセル・ビジュアル・コア(PVC:Pixel Visual Core)、レイ・トレーシング(RT:Ray Tracing)コア、ビジョン処理ユニット(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:Peripheral Component Interconnect)又はペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe)要素など、1つ又は複数の処理コア及び/又はそのコンポーネントを含むか、及び/又はその機能を実行するように構成され得る。
【0090】
PPU400は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スーパーコンピュータ、スマート・フォン(例えば、ワイヤレスのハンド・ヘルド・デバイス)、携帯情報端末(PDA:Personal Digital Assistant)、デジタル・カメラ、車両、ヘッド・マウント・ディスプレイ、ハンド・ヘルド電子デバイスなどに含まれていてもよい。一実施例では、PPU400は、単一の半導体基板上に具体化される。別の実施例では、PPU400は、追加のPPU400、メモリ404、縮小命令セット・コンピュータ(RISC:Reduced Instruction Set Computer)CPU、メモリ管理ユニット(MMU:Memory Management Unit)、デジタル・アナログ・コンバータ(DAC:Digital-to-Analog Converter)などの1つ又は複数のデバイスとともに、システム・オン・チップ(SoC)に含まれている。
【0091】
一実施例では、PPU400は、1つ又は複数のメモリ・デバイスを含むグラフィックス・カード上に含まれていてもよい。グラフィックス・カードは、デスクトップ・コンピュータのマザーボード上のPCIeスロットとインターフェースするように構成され得る。更に別の実施例では、PPU400は、マザーボードのチップセットに含まれる統合型グラフィックス処理ユニット(iGPU)又は並列プロセッサであってもよい。更に別の実施例では、PPU400は、再構成可能なハードウェアで実現されてもよい。更に別の実施例では、PPU400の一部が、再構成可能なハードウェアで実現されてもよい。
【0092】
模範的な計算システム
人工知能計算などのアプリケーションにおいて、開発者がより多くの並列性を公開及び活用するようになるにつれて、多数のGPU及びCPUを備えたシステムが様々な業界で使用されている。数十から数千もの計算ノードを備えた高性能GPU高速化システムが、データ・センタ、研究施設、スーパーコンピュータに導入され、これまでになく大きな問題を解決する。高性能システム内の処理デバイスの数が増えるにつれて、通信及びデータ転送機構は、帯域幅の増加に対応するように拡張する必要がある。
【0093】
図5Aは、一実施例による、図4のPPU400を使用して実装された処理システム500の概念図である。模範的なシステム500は、図1C、2B、及び/又は3Bにそれぞれに示される方法150、250、及び/又は330を実装するように構成され得る。処理システム500は、CPU530、スイッチ510、及び複数のPPU400とそれぞれのメモリ404を含む。
【0094】
NVLink410は、PPU400の各々間に高速通信リンクを提供する。図5Bに特定の数のNVLink410及びインターコネクト402接続が例示されているが、各PPU400及びCPU530への接続数は異なっていてもよい。スイッチ510は、インターコネクト402とCPU530との間でインターフェースする。PPU400、メモリ404、及びNVLink410は、単一の半導体プラットフォーム上に位置付けられて、並列処理モジュール525を形成することができる。一実施例では、スイッチ510は、様々な異なる接続及び/又はリンク間でインターフェースするために、2つ以上のプロトコルをサポートする。
【0095】
別の実施例(図示せず)では、NVLink410は、PPU400の各々とCPU530との間に1つ又は複数の高速通信リンクを提供し、スイッチ510は、インターコネクト402とPPU400の各々との間でインターフェースする。PPU400、メモリ404、及びインターコネクト402は、単一の半導体プラットフォーム上に位置付けられて、並列処理モジュール525を形成することができる。更に別の実施例(図示せず)では、インターコネクト402は、PPU400の各々とCPU530との間に1つ又は複数の通信リンクを提供し、スイッチ510は、NVLink410を使用してPPU400の各々間でインターフェースして、PPU400間に1つ又は複数の高速通信リンクを提供する。別の実施例(図示せず)では、NVLink410は、スイッチ510を介してPPU400とCPU530との間に1つ又は複数の高速通信リンクを提供する。更に別の実施例(図示せず)では、インターコネクト402は、PPU400の各々間に直接1つ又は複数の通信リンクを提供する。NVLink410高速通信リンクのうちの1つ又は複数は、物理NVLinkインターコネクトとして、又はNVLink410と同じプロトコルを使用して、オン・チップ又はオン・ダイのいずれかのインターコネクトとして実装され得る。
【0096】
本説明のコンテキストでは、単一の半導体プラットフォームとは、ダイ又はチップ上に製作された単独の単位的な半導体ベースの集積回路を指し得る。単一の半導体プラットフォームという用語はまた、接続性が向上したマルチ・チップ・モジュールを指し、オン・チップ操作をシミュレートし、従来のバス実装を利用するよりも大幅な向上があることに留意されたい。当然ながら、様々な回路又はデバイスはまた、ユーザの希望に応じて、個別に又は半導体プラットフォームの様々な組み合わせに位置付けられてもよい。交互に、並列処理モジュール525は、回路ボード基板として実装されてもよく、PPU400及び/又はメモリ404の各々は、パッケージ・デバイスであってもよい。一実施例では、CPU530、スイッチ510、及び並列処理モジュール525は、単一の半導体プラットフォーム上に位置付けられている。
【0097】
一実施例では、各NVLink410の信号速度は、20~25ギガビット/秒であり、各PPU400は、6つのNVLink410インターフェースを含む(図5Aに示されるように、各PPU400に5つのNVLink410インターフェースが含まれる)。各NVLink410は、各方向に25ギガバイト/秒のデータ転送レートを提供し、6つのリンクは、400ギガバイト/秒を提供する。NVLink410は、図5Aに示されるように、PPU-PPU間の通信に排他的に使用することができる。又は、CPU530も1つ又は複数のNVLink410インターフェースを含むときは、PPU-PPU間及びPPU-CPU間の何らかの組み合わせに使用することができる。
【0098】
一実施例では、NVLink410は、CPU530から各PPU400のメモリ404への直接ロード/保存/アトミック・アクセスを可能にする。一実施例では、NVLink410は、コヒーレンシー操作をサポートするため、メモリ404から読み取られたデータをCPU530のキャッシュ階層に保存して、CPU530のキャッシュ・アクセス・レイテンシを低減することを可能にする。一実施例では、NVLink410は、アドレス・トランスレーション・サービス(ATS:Address Translation Service)のサポートを含んでいるため、PPU400がCPU530内のページ・テーブルに直接アクセスすることを可能にする。NVLink410のうちの1つ又は複数はまた、低電力モードで動作するように構成され得る。
【0099】
図5Bは、様々な前の実施例の様々なアーキテクチャ及び/又は機能が実装され得る模範的なシステム565を示す。模範的なシステム565は、図1C、2B、及び/又は3Bにそれぞれに示される方法150、250、及び/又は330を実装するように構成され得る。
【0100】
図に示されているように、通信バス575に接続されている少なくとも1つの中央処理ユニット530を含むシステム565が提供されている。通信バス575は、次のデバイス:メイン・メモリ540、ネットワーク・インターフェース535、CPU530、ディスプレイ・デバイス545、入力デバイス560、スイッチ510、及び並列処理システム525のうちの1つ又は複数を直接又は間接的に結合し得る。通信バス575は、任意の適切なプロトコルを使用して実装され得、また、アドレス・バス、データ・バス、制御バス、又はこれらの組み合わせなどの1つ又は複数のリンク又はバスを表し得る。通信バス575には、業界標準アーキテクチャ(ISA:Industry Standard Architecture)バス、拡張業界標準アーキテクチャ(EISA:Extended Industry Standard Architecture)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA:Video Electronics Standards Association)バス、ペリフェラル・コンポーネント・インターコネクト(PCI)バス、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe)バス、HyperTransport、及び/又は別のタイプのバス若しくはリンクなど、1つ又は複数のバス又はリンクのタイプが含まれ得る。いくつかの実施例では、コンポーネント間に直接接続がある。一実例として、CPU530は、メイン・メモリ540に直接接続され得る。更に、CPU530は、並列処理システム525に直接接続され得る。コンポーネント間に直接又はポイント・ツー・ポイント接続がある場合、通信バス575は、接続を実行するためにPCIeリンクを含み得る。これらの実例では、PCIバスをシステム565に含める必要はない。
【0101】
図5Bの様々なブロックは、通信バス575を介して回線で接続されているものとして示されているが、これは限定を意図したものではなく、明確にするためだけのものである。例えば、いくつかの実施例では、ディスプレイ・デバイス545などのプレゼンテーション・コンポーネントは、入力デバイス560などのI/Oコンポーネントと見なされ得る(例えば、ディスプレイがタッチ・スクリーンの場合)。別の実例として、CPU530及び/又は並列処理システム525は、メモリを含み得る(例えば、メイン・メモリ540は、並列処理システム525、CPU530、及び/又は他のコンポーネントに加えて、ストレージ・デバイスを表し得る)。つまり、図5Bの計算デバイスは例示にすぎない。図5Bの計算デバイスの範囲内であるとすべて企図されるため、「ワークステーション」、「サーバ」、「ラップトップ」、「デスクトップ」、「タブレット」、「クライアント・デバイス」、「モバイル・デバイス」、「ハンド・ヘルド・デバイス」、「ゲーム・コンソール」、「電子制御ユニット(ECU:Electronic Control Unit)」、「仮想現実システム」、及び/又は他のデバイス若しくはシステムのタイプなどのカテゴリ間で区別はされない。
【0102】
システム565はまた、メイン・メモリ540を含む。制御論理(ソフトウェア)及びデータは、様々なコンピュータ可読媒体の形式を取り得るメイン・メモリ540に保存される。コンピュータ可読媒体は、システム565によってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータ可読媒体には、揮発性及び不揮発性媒体、並びにリムーバブル及び非リムーバブル媒体の両方が含まれ得る。例として、限定ではないが、コンピュータ可読媒体は、コンピュータ・ストレージ媒体及び通信媒体を含み得る。
【0103】
コンピュータ・ストレージ媒体には、コンピュータ可読命令、データ構造、プログラム・モジュール、及び/又は他のデータ・タイプなどの情報の保存のための任意の方法又は技術で実装された揮発性及び不揮発性媒体及び/又はリムーバブル及び非リムーバブル媒体の両方が含まれ得る。例えば、メイン・メモリ540は、コンピュータ可読命令(例えば、プログラム及び/又はオペレーティング・システムなどのプログラム要素を表す)を保存し得る。コンピュータ・ストレージ媒体には、RAM、ROM、EEPROM、フラッシュ・メモリ若しくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD:Digital Versatile Disk)若しくは他の光学ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ若しくは他の磁気ストレージ・デバイス、又は、所望の情報を保存するために使用され得、且つシステム565によってアクセスされ得る任意の他の媒体が含まれるが、これらに限定されない。本明細書で使用される場合、コンピュータ・ストレージ媒体は、信号自体は含まない。
【0104】
コンピュータ・ストレージ媒体は、搬送波又は他の輸送機構などの変調されたデータ信号でコンピュータ可読命令、データ構造、プログラム・モジュール、及び/又は他のデータ・タイプを具体化し得、任意の情報配信媒体を含み得る。「変調されたデータ信号」という用語は、信号内の情報を符号化するようにその特性のうちの1つ又は複数が設定又は変更されている信号を指し得る。例として、限定ではないが、コンピュータ・ストレージ媒体には、有線ネットワーク又は直接有線接続などの有線メディア、並びに音響、RF、赤外線、及び他のワイヤレス媒体などのワイヤレス媒体が含まれ得る。上記のいずれかの組み合わせもまた、コンピュータ可読媒体の範囲に含まれる。
【0105】
コンピュータ・プログラムは、実行されると、システム565が様々な機能を実行することを可能にする。CPU530は、コンピュータ可読命令のうちの少なくともいくつかを実行して、システム565の1つ又は複数のコンポーネントを制御して、本明細書で説明される方法及び/又はプロセスのうちの1つ又は複数を実行するように構成され得る。CPU530の各々は、多数のソフトウェア・スレッドを同時に処理することが可能である1つ又は複数のコア(例えば、1、2、4、8、28、72個など)を含み得る。CPU530は、任意のタイプのプロセッサを含み得、また、実装されているシステム565のタイプに応じて、異なるタイプのプロセッサ(例えば、モバイル・デバイスではコア数が少ないプロセッサ、サーバではコア数が多いプロセッサ)を含み得る。例えば、システム565のタイプに応じて、プロセッサは、縮小命令セット計算(RISC)を使用して実装されるアドバンスドRISCマシン(ARM:Advanced RISC Machine)プロセッサ、又は複合命令セット計算(CISC:Complex Instruction Set Computing)を使用して実装される×86プロセッサであり得る。システム565は、1つ又は複数のマイクロプロセッサ、又は数学コ・プロセッサなどの補助コ・プロセッサに加えて、1つ又は複数のCPU530を含み得る。
【0106】
CPU530に加えて又はそれに代えて、並列処理モジュール525は、コンピュータ可読命令のうちの少なくともいくつかを実行して、システム565の1つ又は複数のコンポーネントを制御して、本明細書で説明される方法及び/又はプロセスのうちの1つ又は複数を実行するように構成され得る。並列処理モジュール525は、システム565によって使用されて、グラフィックス(例えば、3Dグラフィックス)がレンダリングされるか、又は汎用計算が実行され得る。例えば、並列処理モジュール525は、GPUでの汎用計算(GPGPU:General-Purpose computing on GPU)に使用され得る。一実施例では、CPU530及び/又は並列処理モジュール525は、方法、プロセス、及び/又はこれらの一部分の任意の組み合わせを個別に又は共同で実行し得る。
【0107】
システム565はまた、入力デバイス560、並列処理システム525、及びディスプレイ・デバイス545を含む。ディスプレイ・デバイス545には、ディスプレイ(例えば、モニタ、タッチ・スクリーン、テレビ画面、ヘッドアップディスプレイ(HUD:Heads-Up-Display)、他のディスプレイ・タイプ、又はこれらの組み合わせ)、スピーカ、及び/又は他のプレゼンテーション・コンポーネントが含まれ得る。ディスプレイ・デバイス545は、他のコンポーネント(例えば、並列処理システム525、CPU530など)からデータを受信し、データ(例えば、画像、ビデオ、サウンドなど)を出力し得る。
【0108】
ネットワーク・インターフェース535は、システム565が、入力デバイス560、ディスプレイ・デバイス545、及び/又は他のコンポーネント(そのうちのいくつかは、システム565に組み込まれていても(例えば、統合されていても)よい)を含む他のデバイスに論理的に結合されることを可能にし得る。例示的な入力デバイス560には、マイク、マウス、キーボード、ジョイスティック、ゲーム・パッド、ゲーム・コントローラ、サテライト・ディッシュ、スキャナ、プリンタ、ワイヤレス・デバイスなどが含まれる。入力デバイス560は、ユーザが生成したエア・ジェスチャ、声、又は他の生理学的入力を処理するナチュラル・ユーザ・インターフェース(NUI:Natural User Interface)を提供し得る。場合によっては、入力は、更なる処理のために適切なネットワーク要素に送信され得る。NUIは、音声認識、スタイラス認識、顔認識、バイオメトリック認識、画面上と画面の隣との両方のジェスチャ認識、エア・ジェスチャ、頭部及び目の追跡、並びにシステム565のディスプレイに関連付けられたタッチ認識(以下により詳細に説明される)の任意の組み合わせを実装し得る。システム565は、ジェスチャ検出及び認識のために、立体カメラ・システム、赤外線カメラ・システム、RGBカメラ・システム、タッチスクリーン技術、及びこれらの組み合わせなどの深度カメラを含み得る。追加的に、システム565は、動きの検出を可能にする加速度計又はジャイロスコープ(例えば、慣性測定ユニット(IMU:Inertia Measurement Unit)の一部として)を含み得る。いくつかの実例では、加速度計又はジャイロスコープの出力は、システム565によって使用されて、没入感のある拡張現実又は仮想現実をレンダリングすることができる。
【0109】
更に、システム565は、通信のために、ネットワーク・インターフェース535を介してネットワーク(例えば、電気通信ネットワーク、ローカル・エリア・ネットワーク(LAN:Local Area Network)、ワイヤレス・ネットワーク、インターネット、ピア・ツー・ピア・ネットワーク、ケーブル・ネットワークなどのワイド・エリア・ネットワーク(WAN:Wide Area Network))に結合され得る。システム565は、分散ネットワーク及び/又はクラウド計算環境内に含まれていてもよい。
【0110】
ネットワーク・インターフェース535は、1つ又は複数の受信器、送信器、及び/又はトランシーバを含み得る。トランシーバは、システム565が、有線及び/又はワイヤレス通信を含む電子通信ネットワークを介して他の計算デバイスと通信することを可能にする。ネットワーク・インターフェース535は、パケット構文解析、並びにネットワーク処理及び通信の高速化(例えば、であり、限定されない)などの操作を実行するために、1つ又は複数の処理ユニット(DPU:Data Processing Unit)を含むネットワーク・インターフェース・コントローラ(NIC:Network Interface Controller)として実装され得る。ネットワーク・インターフェース535は、ワイヤレス・ネットワーク(例えば、Wi-Fi、Z-Wave、ブルートゥース(登録商標)、ブルートゥース LE、ZigBeeなど)、有線ネットワーク(例えば、イーサネット(登録商標)又はInfiniBand経由の通信)、ロー・パワー・ワイド・エリア・ネットワーク(例えば、LoRaWAN、SigFoxなど)、及び/又はインターネットなどの多数の異なるネットワークのうちのいずれかを介した通信を可能にするためにコンポーネント及び機能を含み得る。
【0111】
システム565はまた、セカンダリ・ストレージ(図示せず)を含み得る。セカンダリ・ストレージには、例えば、フロッピー(登録商標)・ディスク・ドライブ、磁気テープ・ドライブ、コンパクト・ディスク・ドライブ、デジタル多用途ディスク(DVD)ドライブ、録音デバイス、ユニバーサル・シリアル・バス(USB:Universal Serial Bus)フラッシュ・メモリを表す、ハード・ディスク・ドライブ及び/又はリムーバブル・ストレージ・ドライブが含まれる。リムーバブル・ストレージ・ドライブは、よく知られている方法でリムーバブル・ストレージ・ユニットに対する読み取り/書き込みを行う。システム565はまた、ハード・ワイヤード電源、バッテリ電源、又はこれらの組み合わせ(図示せず)を含み得る。電源は、システム565のコンポーネントが動作することを可能にするために、システム565に給電し得る。
【0112】
上記のモジュール及び/又はデバイスの各々さえも、単一の半導体プラットフォーム上に位置付けられて、システム565を形成することができる。交互に、様々なモジュールはまた、ユーザの希望に応じて、個別に、又は半導体プラットフォームの様々な組み合わせに位置付けられてもよい。上記では様々な実施例について説明しているが、これらの実施例は、限定ではなく、例としてのみ提示されていることを理解すべきである。したがって、好ましい実施例の幅及び範囲は、上記の模範的な実施例のいずれにも限定されるべきではなく、以下の特許請求の範囲及びその均等物に従ってのみ定義されるべきである。
【0113】
ネットワーク環境例
本開示の実施例を実装する際の使用に適しているネットワーク環境は、1つ又は複数のクライアント・デバイス、サーバ、ネットワーク・アタッチド・ストレージ(NAS:Network Attached Storage)、他のバックエンド・デバイス、及び/又は他のデバイス・タイプを含み得る。クライアント・デバイス、サーバ、及び/又は他のデバイス・タイプ(例えば、各デバイス)は、図5Aの処理システム500及び/又は図5Bの模範的なシステム565の1つ又は複数のインスタンスに実装され得る。例えば、各デバイスは、処理システム500及び/又は模範的なシステム565の同様のコンポーネント、特徴、及び/又は機能を含み得る。
【0114】
ネットワーク環境のコンポーネントは、有線、ワイヤレス、又はその両方であり得るネットワークを介して互いに通信し得る。ネットワークには、複数のネットワーク又はネットワークのネットワークが含まれ得る。例として、ネットワークには、1つ又は複数のワイド・エリア・ネットワーク(WAN)、1つ又は複数のローカル・エリア・ネットワーク(LAN)、インターネット及び/又は公衆電話交換網(PSTN:Public Switched Telephone Network)などの1つ又は複数のパブリック・ネットワーク、並びに/又は、1つ又は複数のプライベート・ネットワークが含まれ得る。ネットワークにワイヤレス電気通信ネットワークが含まれている場合、基地局、通信塔、又は更にはアクセス・ポイント(及び他のコンポーネント)などのコンポーネントがワイヤレス接続性を提供し得る。
【0115】
互換性のあるネットワーク環境には、1つ又は複数のピア・ツー・ピア・ネットワーク環境(この場合、サーバはネットワーク環境に含まれ得ない)、及び1つ又は複数のクライアント・サーバ・ネットワーク環境(この場合、1つ又は複数のサーバがネットワーク環境に含まれ得る)が含まれ得る。ピア・ツー・ピア・ネットワーク環境では、本明細書で説明されるサーバに関する機能は、任意の数のクライアント・デバイスで実装され得る。
【0116】
少なくとも1つの実施例では、ネットワーク環境には、1つ又は複数のクラウド・ベースのネットワーク環境、分散計算環境、これらの組み合わせなどが含まれ得る。クラウド・ベースのネットワーク環境は、フレームワーク層、ジョブ・スケジューラ、リソース・マネージャ、及び1つ又は複数のサーバ(1つ又は複数のコア・ネットワーク・サーバ及び/又はエッジ・サーバを含み得る)で実装される分散ファイル・システムを含み得る。フレームワーク層は、ソフトウェア層のソフトウェア及び/又はアプリケーション層の1つ又は複数のアプリケーションをサポートするためのフレームワークを含み得る。ソフトウェア又はアプリケーションには、それぞれ、ウェブ・ベースのサービス・ソフトウェア又はアプリケーションが含まれ得る。実施例では、クライアント・デバイスのうちの1つ又は複数が、(例えば、1つ又は複数のアプリケーション・プログラミング・インターフェース(API)を介してサービス・ソフトウェア及び/又はアプリケーションにアクセスすることによって)ウェブ・ベースのサービス・ソフトウェア又はアプリケーションを使用し得る。フレームワーク層は、大規模なデータ処理(例えば、「ビッグ・データ」)に分散ファイル・システムを使用し得るなど、無料のオープン・ソースのソフトウェア・ウェブ・アプリケーション・フレームワークの一タイプであり得るが、これに限定されない。
【0117】
クラウド・ベースのネットワーク環境は、本明細書で説明される計算及び/又はデータ・ストレージ機能(又はその1つ又は複数の部分)の組み合わせを実行するクラウド計算及び/又はクラウド・ストレージを提供し得る。これらの様々な機能はいずれも、(例えば、州、地域、国、地球などの全体に分散され得る1つ又は複数のデータ・センタの)中央又はコア・サーバから複数の場所に分散され得る。ユーザ(例えば、クライアント・デバイス)への接続がエッジ・サーバに比較的近い場合、コア・サーバはエッジ・サーバに機能のうちの少なくとも一部分を指定し得る。クラウド・ベースのネットワーク環境は、プライベート(例えば、単一の組織に限定される)であっても、パブリック(例えば、多くの組織で利用可能である)であっても、及び/又はこれらの組み合わせ(例えば、ハイブリッドのクラウド環境)であってもよい。
【0118】
クライアント・デバイスは、図5Aの処理システム例500及び/又は図5Bの模範的なシステム565のコンポーネント、特徴、及び/又は機能のうちの少なくともいくつかを含み得る。例として、限定ではないが、クライアント・デバイスは、パーソナル・コンピュータ(PC:Personal Computer)、ラップトップ・コンピュータ、モバイル・デバイス、スマートフォン、タブレット・コンピュータ、スマート・ウォッチ、ウェアラブル・コンピュータ、携帯情報端末(PDA)、MP3プレーヤ、仮想現実ヘッドセット、全地球測位システム(GPS:Global Positioning System)若しくはデバイス、ビデオ・プレーヤ、ビデオ・カメラ、監視デバイス若しくはシステム、車両、ボート、飛行船、仮想マシン、ドローン、ロボット、ハンドヘルド通信デバイス、病院用デバイス、ゲーム・デバイス若しくはシステム、エンターテインメント・システム、車載コンピュータ・システム、組み込みシステム・コントローラ、リモート・コントロール、電化製品、家庭用電子機器、ワークステーション、エッジ・デバイス、これらの描出したデバイスの任意の組み合わせ、又は任意の他の適切なデバイスとして具体化され得る。
【0119】
機械学習
PPU400などのプロセッサ上で開発された深層ニューラル・ネットワーク(DNN:Deep Neural Network)は、自動運転車から、医薬品開発の迅速化、オンライン画像データベースでの自動画像キャプショニングから、ビデオ・チャット・アプリケーションでのスマートなリアル・タイム言語翻訳まで、様々な使用事例に使用されてきている。深層学習は、人間の脳の神経学習過程をモデル化し、継続的に学習し、継続的によりスマートになり、時間の経過とともにより正確な結果をより迅速にもたらす手法である。子どもは、まず大人から様々な形状を正しく識別して分類するように教育を受け、最終的には、指導なしで形状を特定できるようになる。同様に、深層学習システム又はニューラル学習システムは、基本的なオブジェクト、隠れたオブジェクトなどをよりスマート且つ効率的に識別すると同時に、オブジェクトにコンテキストを割り当てるために、オブジェクト認識及び分類に関するトレーニングを受ける必要がある。
【0120】
最も単純なレベルでは、人間の脳のニューロンは、受け取った様々な入力を観察し、これらの入力の各々に重要度レベルが割り当てられ、作用するために他のニューロンに出力が渡される。人工ニューロン又はパーセプトロンは、ニューラル・ネットワークの最も基本的なモデルである。1つの実例では、パーセプトロンは、パーセプトロンが認識及び分類するようにトレーニングされているオブジェクトの様々な特徴を表す1つ又は複数の入力を受け取ることができ、これらの特徴の各々には、オブジェクトの形状を定義する際のその特徴の重要度に基づいて、特定の重みが割り当てられる。
【0121】
深層ニューラル・ネットワーク(DNN)モデルは、膨大な量の入力データでトレーニングされて複雑な問題を高精度で迅速に解決することができる多数の接続ノードの複数の層(例えば、パーセプトロン、ボルツマン・マシン、放射基底関数、畳み込み層など)を含む。1つの実例では、DNNモデルの第1の層は、自動車の入力画像を様々なセクションに分割し、直線及び角度などの基本パターンを探す。第2の層は、線を集めて、ホイール、フロントガラス、及びミラーなどの上位レベルのパターンを探す。次の層は、車両のタイプを識別し、いくつかの最終層は、入力画像のラベルを生成し、特定の自動車ブランドのモデルを識別する。
【0122】
DNNがトレーニングされると、DNNを導入及び使用して、推論として知られているプロセスでオブジェクト又はパターンを識別及び分類することができる。推論(DNNが所与の入力から有用な情報を抽出するプロセス)の実例としては、ATMマシンに預け入れされた小切手の手書きの数字を識別すること、写真の中の友人の画像を識別すること、5,000万人以上のユーザに推薦する映画を提供すること、無人自動車において様々なタイプの自動車、歩行者、及び道路障害物を識別及び分類すること、又は、人間の音声をリアル・タイムで翻訳することが挙げられる。
【0123】
トレーニング中、データは、入力に対応するラベルを示す予測が生成されるまで、順方向伝播フェーズでDNNを通過する。ニューラル・ネットワークが入力に正しくラベルを付けない場合、正しいラベルと予測ラベルとの間のエラーが解析され、DNNが当該入力とトレーニング・データセットの他の入力に正しくラベルを付けるまで、後方向伝播フェーズ中に各特徴の重みが調整される。複雑なニューラル・ネットワークをトレーニングするには、PPU400でサポートされる浮動小数点乗算及び加算など、大量の並列計算性能が必要である。推論は、トレーニングよりも計算集約的ではなく、トレーニングされたニューラル・ネットワークがこれまでに見たことのない新しい入力に適用されて、画像を分類し、感情を検出し、推薦事項を特定し、音声を認識及び翻訳し、概して新しい情報を推論するレイテンシに敏感なプロセスである。
【0124】
ニューラル・ネットワークは、行列数学演算に大きく依存しており、複雑な多層ネットワークでは、効率と速度との両方のために多大な量の浮動小数点性能及び帯域幅が必要である。行列数学演算に最適化され、且つ数十から数百のTFLOPSの性能を提供する数千の処理コアによって、PPU400は、深層ニューラル・ネットワーク・ベースの人工知能及び機械学習アプリケーションに必要な性能を提供することが可能である計算プラットフォームである。
【0125】
更に、本明細書に開示される手法のうちの1つ又は複数を適用して生成される画像、予測される心拍数、及び/又は予測される呼吸数などのデータを使用して、現実世界のオブジェクト及び環境を認識するために使用されるDNNのトレーニング、テスト、又は認定を行うことができる。このようなデータには、道路、工場、建物、都市部の環境、農村部の環境、人間、動物、及び他の物理的オブジェクト又は現実世界の環境のシーンが含まれ得る。このようなデータを使用して、現実世界の物理的オブジェクトを操作する、処理する、又は修正するためにマシン又はロボットに採用されるDNNのトレーニング、テスト、及び認定を行うことができる。更に、このようなデータを使用して、現実世界で車両をナビゲート及び動かすために自律走行車両に採用されるDNNのトレーニング、テスト、及び認定を行うことができる。追加的に、本明細書に開示される手法のうちの1つ又は複数を適用して生成されるデータを使用して、そのようなマシン、ロボット、及び車両のユーザに情報を伝えることができる。
【0126】
図5Cは、少なくとも1つの実施例による、機械学習のトレーニング及び利用に使用できる模範的なシステム555のコンポーネントを示す。考察するように、様々なコンポーネントは、単一のエンティティ又は複数のエンティティの制御下にあり得る、計算デバイス及びリソースの様々な組み合わせ、又は単一の計算システムによって提供することができる。更に、様々なエンティティによって、態様がトリガされ、開始され、又は要求され得る。少なくとも1つの実施例では、ニューラル・ネットワークのトレーニングは、プロバイダ環境506に関連付けられたプロバイダから指示され得る一方で、少なくとも1つの実施例では、トレーニングは、クライアント・デバイス502又は他のそのようなリソースを介してプロバイダ環境へアクセスする顧客又は他のユーザから要求され得る。少なくとも1つの実施例では、トレーニング・データ(又はトレーニングされたニューラル・ネットワークによって解析されるデータ)は、プロバイダ、ユーザ、又はサード・パーティ・コンテンツ・プロバイダ524によって提供され得る。少なくとも1つの実施例では、クライアント・デバイス502は、ユーザの代理としてナビゲートされる車両又はオブジェクトであり得、例えば、デバイスのナビゲーションを支援するリクエストを提出する及び/又は指示を受信することができる。
【0127】
少なくとも1つの実施例では、プロバイダ環境506によって受信されるように、少なくとも1つのネットワーク504を介してリクエストを提出することができる。少なくとも1つの実施例では、クライアント・デバイスは、デスクトップ・コンピュータ、ノートブック・コンピュータ、コンピュータ・サーバ、スマートフォン、タブレット・コンピュータ、ゲーム・コンソール(ポータブルであるか又はそうでないもの)、コンピュータ・プロセッサ、計算論理、及びセット・トップ・ボックスなどであるが、これらに限定されない、ユーザがそのようなリクエストを生成及び送信することを可能にする任意の適切な電子及び/又は計算デバイスであり得る。ネットワーク504には、インターネット、イントラネット、イーサネット(登録商標)、セルラ・ネットワーク、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、パーソナル・エリア・ネットワーク(PAN:Personal Area Network)、ピア間の直接ワイヤレス接続のアド・ホック・ネットワークなどを含み得る、リクエスト又は他のそのようなデータを送信するための適切なネットワークが含まれ得る。
【0128】
少なくとも1つの実施例では、リクエストは、インターフェース層508で受信することができ、インターフェース層508は、この実例では、トレーニング及び推論マネージャ532にデータを転送することができる。トレーニング及び推論マネージャ532は、リクエスト、及びサービスに対応するデータ又はコンテンツを管理するためのハードウェア及びソフトウェアを含むシステム又はサービスであり得る。少なくとも1つの実施例では、トレーニング及び推論マネージャ532は、ニューラル・ネットワークをトレーニングするためのリクエストを受信することができ、また、トレーニング・モジュール512へのリクエストのためのデータを提供することができる。少なくとも1つの実施例では、トレーニング・モジュール512は、リクエストによって指定されていない場合、使用する適切なモデル又はニューラル・ネットワークを選択し、関連するトレーニング・データを使用してモデルをトレーニングすることができる。少なくとも1つの実施例では、トレーニング・データは、トレーニング・データ・リポジトリ514に保存された、クライアント・デバイス502から受信された、又はサード・パーティ・プロバイダ524から取得されたデータのバッチであり得る。少なくとも1つの実施例では、トレーニング・モジュール512は、トレーニング・データに対する責任を負っている場合がある。ニューラル・ネットワークは、リカレント・ニューラル・ネットワーク(RNN:Recurrent Neural Network)又は畳み込みニューラル・ネットワーク(CNN:Convolutional Neural Network)など、任意の適切なネットワークであり得る。ニューラル・ネットワークがトレーニングされて、成功裏に評価されると、トレーニングされたニューラル・ネットワークは、モデル・リポジトリ516に保存され得る。モデル・リポジトリ516は、例えば、ユーザ、アプリケーション、又はサービスなどの様々なモデル又はネットワークを保存し得る。少なくとも1つの実施例では、多数の異なる要因に基づいて利用され得るように、単一のアプリケーション又はエンティティに対して複数のモデルが存在し得る。
【0129】
少なくとも1つの実施例では、次の時点において、トレーニングされたニューラル・ネットワークによって少なくとも部分的に決定されるか又は影響を受けるコンテンツ(例えば、パス決定)又はデータについて、クライアント・デバイス502(又は別のそのようなデバイス)からリクエストが受信され得る。このリクエストには、例えば、1つ又は複数の推論若しくは他の出力値、分類、又は予測を取得するためにニューラル・ネットワークを使用して処理される入力データが含まれ得る。又は、少なくとも1つの実施例では、入力データは、インターフェース層508によって受信され、推論モジュール518に向けられてもよい。ただし、異なるシステム又はサービスを使用することもできる。少なくとも1つの実施例では、推論モジュール518は、推論モジュール518にローカルにまだ保存されていない場合、本明細書で考察されるようにトレーニングされた深層ニューラル・ネットワーク(DNN)などの適切なトレーニングされたネットワークを、モデル・リポジトリ516から取得することができる。推論モジュール518は、トレーニングされたネットワークへの入力としてデータを提供でき、トレーニングされたネットワークは、その後、出力として1つ又は複数の推論を生成することができる。これには、例えば、入力データのインスタンスの分類が含まれ得る。少なくとも1つの実施例では、推論は、次に、ユーザに対する表示又は通信のために、クライアント・デバイス502に送信され得る。少なくとも1つの実施例では、ユーザのコンテキスト・データはまた、ユーザ・コンテキスト・データ・リポジトリ522に保存され得る。ユーザ・コンテキスト・データ・リポジトリ522には、推論を生成する際又はインスタンスの取得後にユーザに返すデータを決定する際にネットワークへの入力として有用であり得るユーザに関するデータが含まれ得る。少なくとも1つの実施例では、入力又は推論データのうちの少なくとも一部を含み得る関連データはまた、将来のリクエストを処理するためにローカル・データベース534に保存され得る。少なくとも1つの実施例では、ユーザはアカウント情報又は他の情報を使用して、プロバイダ環境のリソース又は機能にアクセスすることができる。少なくとも1つの実施例では、許可され且つ利用可能である場合は、モデルを更にトレーニングするためにユーザ・データも収集及び使用して、将来のリクエストに対してより正確な推論を提供することができる。少なくとも1つの実施例では、リクエストは、ユーザ・インターフェースを介して、クライアント・デバイス502上で実行されている機械学習アプリケーション526へ受信され、同じインターフェースを介して結果が表示され得る。クライアント・デバイスは、リクエストを生成し、結果又は応答を処理するためのプロセッサ528及びメモリ562だけでなく、機械学習アプリケーション526のデータを保存するための少なくとも1つのデータ・ストレージ要素552などのリソースを含み得る。
【0130】
少なくとも1つの実施例では、プロセッサ528(又はトレーニング・モジュール512又は推論モジュール518のプロセッサ)は、中央処理ユニット(CPU:Central Processing Unit)になる。しかしながら、すでに述べたように、このような環境におけるリソースは、GPUを利用して、少なくとも特定のタイプのリクエストのデータを処理することができる。数千のコアによって、PPU300などのGPUは、かなりの並列ワークロードを処理するように設計されているため、ニューラル・ネットワークのトレーニング及び予測の生成のための深層学習によく使われるようになっている。オフライン・ビルド用にGPUを使用することで、より大規模で複雑なモデルのトレーニングを迅速に行うことができるが、オフラインで予測を生成することは、要求時の入力特徴を使用できないか、又は特徴のすべての順列に対して予測を生成し、リアル・タイム・リクエストに役立つためにルックアップ・テーブルに保存しなければならないことを意味する。深層学習フレームワークがCPUモードをサポートしており、妥当なレイテンシで、CPU上でフィード・フォワードを実行するのにモデルが十分に小さく且つ単純である場合、CPUインスタンス上のサービスがモデルをホストすることができる。この場合、トレーニングは、GPUで、オフラインで行うことができ、推論は、CPUで、リアル・タイムで行うことができる。CPUアプローチが実行可能ではない場合は、GPUインスタンスでサービスを実行することができる。しかしながら、GPUの性能及びコスト特性はCPUとは異なるため、ランタイム・アルゴリズムをGPUにオフロードするサービスを実行することは、CPUベースのサービスとは異なる設計が必要になり得る。
【0131】
少なくとも1つの実施例では、プロバイダ環境506におけるエンハンスメントのために、ビデオ・データがクライアント・デバイス502から提供され得る。少なくとも1つの実施例では、クライアント・デバイス502でのエンハンスメントのために、ビデオ・データが処理され得る。少なくとも1つの実施例では、ビデオ・データは、サード・パーティ・コンテンツ・プロバイダ524からストリーミングされ、サード・パーティ・コンテンツ・プロバイダ524、プロバイダ環境506、又はクライアント・デバイス502によってエンハンスされ得る。少なくとも1つの実施例では、プロバイダ環境506においてトレーニング・データとして使用されるために、ビデオ・データがクライアント・デバイス502から提供され得る。
【0132】
少なくとも1つの実施例では、クライアント・デバイス502及び/又はプロバイダ環境506によって、教師付き及び/又は教師なしトレーニングを実行することができる。少なくとも1つの実施例では、トレーニング・データ514(例えば、分類された又はラベル付けされたデータ)のセットが、トレーニング・データとして機能するための入力として提供される。少なくとも1つの実施例では、トレーニング・データには、ニューラル・ネットワークのトレーニング対象となる少なくとも1つのタイプのオブジェクトのインスタンスと、そのタイプのオブジェクトを特定する情報とが含まれ得る。少なくとも1つの実施例では、トレーニング・データには、各々があるタイプのオブジェクトの表現を含んでいる画像のセットが含まれ得る。また、各画像には、ラベル、メタデータ、分類、又はそれぞれの画像内に表されるオブジェクトのタイプを識別する他の情報が含まれているか、又は関連付けられている。トレーニング・データとして、他の様々なタイプのデータを使用することができ、テキスト・データ、オーディオ・データ、ビデオ・データなどが含まれ得る。少なくとも1つの実施例では、トレーニング・データ514は、トレーニング・モジュール512へのトレーニング入力として提供される。少なくとも1つの実施例では、トレーニング・モジュール512は、ニューラル・ネットワーク(又は他のモデル若しくはアルゴリズムなど)をトレーニングするためにトレーニング・アプリケーションを実行する1つ又は複数の計算デバイスなど、ハードウェア及びソフトウェアを含むシステム又はサービスであり得る。少なくとも1つの実施例では、トレーニング・モジュール512は、トレーニングに使用するモデルのタイプを示す指示又はリクエストを受信する。少なくとも1つの実施例では、モデルは、そのような目的に有用である任意の適切な統計モデル、ネットワーク、又はアルゴリズムであり得、人工ニューラル・ネットワーク、深層学習アルゴリズム、学習分類器、ベイズ・ネットワークなどが含まれ得る。少なくとも1つの実施例では、トレーニング・モジュール512は、適切なリポジトリ516から初期モデル又は他のトレーニングされていないモデルを選択し、トレーニング・データ514を利用してモデルをトレーニングし、これにより、同様のタイプのデータを分類したり、他のそのような推論を生成したりするために使用することができるトレーニングされたモデル(例えば、トレーニングされた深層ニューラル・ネットワーク)を生成することができる。トレーニング・データが使用されない少なくとも1つの実施例では、トレーニング・モジュール512に従って、入力データのトレーニングに適切な初期モデルを依然として選択することができる。
【0133】
少なくとも1つの実施例では、モデルは、選択されたモデルのタイプに部分的に応じて、いくつかの異なる方法でトレーニングすることができる。少なくとも1つの実施例では、機械学習アルゴリズムにトレーニング・データのセットを提供することができる。ここで、モデルは、トレーニング・プロセスによって作成されたモデル・アーチファクトである。少なくとも1つの実施例では、トレーニング・データの各インスタンスは、正解(例えば、分類)を含み、これは、ターゲット又はターゲット属性と呼ばれ得る。少なくとも1つの実施例では、学習アルゴリズムは、入力データ属性をターゲット(予測される回答)にマッピングするトレーニング・データのパターンを見つけ、これらのパターンをキャプチャする機械学習モデルが出力される。少なくとも1つの実施例では、次に、機械学習モデルを使用して、ターゲットが指定されていない新しいデータの予測を取得することができる。
【0134】
少なくとも1つの実施例では、トレーニング及び推論マネージャ532は、バイナリ分類モデル、マルチクラス分類モデル、生成モデル、及び回帰モデルを含む機械学習モデルのセットから選択することができる。少なくとも1つの実施例では、使用されるモデルのタイプは、少なくとも部分的に予測されるターゲットのタイプに依存することができる。
【0135】
一実施例では、PPU400は、グラフィックス処理ユニット(GPU)を含む。PPU400は、グラフィックス・データを処理するためのシェーダ・プログラムを指定するコマンドを受信するように構成されている。グラフィックス・データは、点、直線、三角形、四角形、三角形ストリップなどのプリミティブのセットとして定義され得る。通常、プリミティブには、プリミティブのいくつかの頂点(例えば、モデル空間座標系にある)と、プリミティブの各頂点に関連付けられる属性とを指定するデータが含まれる。PPU400は、グラフィックス・プリミティブを処理してフレーム・バッファ(例えば、ディスプレイのピクセルの各々のピクセル・データ)を生成するように構成され得る。
【0136】
アプリケーションが、シーンのモデル・データ(例えば、頂点及び属性の集合)を、システム・メモリ又はメモリ404といったメモリに書き込みを行う。モデル・データは、ディスプレイで可視であり得るオブジェクトの各々を定義する。アプリケーションは、次に、モデル・データのレンダリング及び表示を要求するドライバ・カーネルに対してAPI呼び出しを行う。ドライバ・カーネルは、モデル・データを読み取り、1つ又は複数のストリームにコマンドを書き込み、モデル・データを処理するための操作を実行する。コマンドは、PPU400内の処理ユニットに実装される、頂点シェーダ、ハル・シェーダ、ドメイン・シェーダ、ジオメトリ・シェーダ、及びピクセル・シェーダのうちの1つ又は複数を含む様々なシェーダ・プログラムを参照し得る。例えば、処理ユニットのうちの1つ又は複数は、モデル・データによって定義されたいくつかの頂点を処理する頂点シェーダ・プログラムを実行するように構成され得る。一実施例では、異なる処理ユニットが、異なるシェーダ・プログラムを同時に実行するように構成され得る。例えば、処理ユニットの第1のサブセットは、頂点シェーダ・プログラムを実行するように構成され得、処理ユニットの第2のサブセットは、ピクセル・シェーダ・プログラムを実行するように構成され得る。処理ユニットの第1のサブセットは、頂点データを処理して、処理された頂点データを生成し、処理された頂点データをL2キャッシュ460及び/又はメモリ404に書き込む。処理された頂点データがラスタライズされて(例えば、3次元データからスクリーン空間内の2次元データに変換されて)、フラグメント・データが生成された後、処理ユニットの第2のサブセットは、ピクセル・シェーダを実行して、処理されたフラグメント・データを生成する。これは、次に、他の処理されたフラグメント・データとブレンドされ、メモリ404内のフレーム・バッファに書き込まれる。頂点シェーダ・プログラム及びピクセル・シェーダ・プログラムは同時に実行し、シーンのすべてのモデル・データがフレーム・バッファにレンダリングされるまで、パイプライン化された方法で同じシーンからの異なるデータを処理し得る。次に、フレーム・バッファの内容が、ディスプレイ・デバイスでの表示のためにディスプレイ・コントローラに送信される。
【0137】
本明細書に開示される手法のうちの1つ又は複数を適用して生成される画像、予測される心拍数、及び/又は予測される呼吸数などのデータは、モニタ又は他のディスプレイ・デバイスに表示され得る。いくつかの実施例では、ディスプレイ・デバイスは、画像を生成又はレンダリングするシステム又はプロセッサに直接結合され得る。他の実施例では、ディスプレイ・デバイスは、ネットワーク経由など、システム又はプロセッサに間接的に結合され得る。このようなネットワークの例としては、インターネット、モバイル電気通信ネットワーク、WIFIネットワーク、並びに任意の他の有線及び/又はワイヤレス・ネットワーク・システムが挙げられる。ディスプレイ・デバイスが間接的に結合されている場合、システム又はプロセッサによって生成されたデータは、ネットワーク経由でディスプレイ・デバイスにストリーミングされ得る。このようなストリーミングは、例えば、ビデオゲーム、又は画像をレンダリングする他のアプリケーションが、サーバ、データ・センタ、又は、クラウド・ベースの計算環境で実行されることを可能にし、また、レンダリングされた画像が、サーバ又はデータ・センタから物理的に別個の1つ又は複数のユーザ・デバイス(コンピュータ、ビデオ・ゲーム・コンソール、スマートフォン、他のモバイル・デバイスなど)に送信及び表示されることを可能にする。したがって、本明細書で開示される手法を適用して、ストリーミングされる画像をエンハンスしたり、NVIDIA GeForce Now(GFN)、Google Stadiaなどの画像をストリーミングするサービスを向上させたりすることができる。
【0138】
ストリーミング・システム例
図6は、本開示のいくつかの実施例による、ストリーミング・システム605のシステム図例である。図6は、サーバ603(図5Aの処理システム例500及び/又は図5Bの模範的なシステム565と同様のコンポーネント、特徴、及び/又は機能を含み得る)、クライアント・デバイス604(図5Aの処理システム例500及び/又は図5Bの模範的なシステム565と同様のコンポーネント、特徴、及び/又は機能を含み得る)、及びネットワーク606(本明細書に説明されるネットワークと同様であり得る)を含む。本開示のいくつかの実施例では、システム605が実装され得る。
【0139】
一実施例では、ストリーミング・システム605は、ゲーム・ストリーミング・システムであり、サーバ604は、ゲーム・サーバである。システム605では、ゲーム・セッションでは、クライアント・デバイス604は、入力デバイス626への入力に応答して入力データのみを受信し、入力データをサーバ603に送信し、符号化された表示データをサーバ603から受信し、表示データをディスプレイ624に表示し得る。したがって、より計算集約的な計算及び処理が、サーバ603にオフロードされる(例えば、ゲーム・セッションのグラフィカル出力のためのレンダリング、特に、レイ又はパス・トレーシングがサーバ603のGPU615によって実行される)。つまり、ゲーム・セッションは、サーバ603からクライアント・デバイス604にストリーミングされるため、グラフィックス処理及びレンダリングのためのクライアント・デバイス604の要件が低減される。
【0140】
例えば、ゲーム・セッションのインスタンス化に関して、クライアント・デバイス604は、サーバ603からの表示データの受信に基づいて、ゲーム・セッションのフレームをディスプレイ624に表示し得る。クライアント・デバイス604は、入力デバイス626のうちの1つへの入力を受信し、それに応じて入力データを生成し得る。クライアント・デバイス604は、通信インターフェース621を介して、ネットワーク606(例えば、インターネット)経由でサーバ603に入力データを送信し、サーバ603は、通信インターフェース618を介して入力データを受信し得る。CPU608は、入力データを受信し、入力データを処理し、GPU615にゲーム・セッションのレンダリングを生成させるデータをGPU615に送信し得る。例えば、入力データは、ゲーム内のユーザのキャラクタの動き、武器の発射、再装弾、ボールの受け渡し、車両の旋回などを表し得る。レンダリング・コンポーネント612が、ゲーム・セッション(例えば、入力データの結果を表す)をレンダリングし、レンダ・キャプチャ・コンポーネント614が、ゲーム・セッションのレンダリングを表示データとして(例えば、ゲーム・セッションのレンダリングされたフレームをキャプチャする画像データとして)キャプチャし得る。ゲーム・セッションのレンダリングには、GPUなどの1つ又は複数の並列処理ユニットを使用して計算されるレイ又はパス・トレースされたライティング及び/又はシャドウ効果が含まれ得、GPUは更に、1つ又は複数の専用ハードウェア・アクセラレータ又は処理コアの使用を採用して、サーバ603のレイ又はパス・トレーシング手法を実行し得る。次に、符号化器616が表示データを符号化して、符号化された表示データを生成し得る。符号化された表示データは、通信インターフェース618を介して、ネットワーク606経由でクライアント・デバイス604に送信され得る。クライアント・デバイス604は、通信インターフェース621を介して、符号化された表示データを受信し得る。復号化器622が符号化された表示データを復号化して、表示データを生成し得る。次に、クライアント・デバイス604は、ディスプレイ624を介して表示データを表示し得る。
【0141】
本明細書に説明される手法は、プロセッサ・ベースの命令実行マシン、システム、装置、又はデバイスによる、又はこれらに関連する使用のためにコンピュータ可読媒体に保存された実行可能命令に具体化され得ることに留意されたい。いくつかの実施例では、当業者は、データを保存するために様々なタイプのコンピュータ可読媒体を含めることが可能であることを理解するであろう。本明細書で使用される場合、「コンピュータ可読媒体」には、命令実行マシン、システム、装置、又はデバイスが、コンピュータ可読媒体から命令を読み取り(フェッチし)、説明された実施例を実行するために命令を実行し得るように、コンピュータ・プログラムの実行可能命令を保存するための任意の適切な媒体のうちの1つ又は複数が含まれる。適切なストレージ形式には、電子形式、磁気形式、光学形式、及び電磁形式のうちの1つ又は複数が含まれる。従来の模範的なコンピュータ可読媒体の非包括的リストには、ポータブル・コンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM:Random Access Memory)、読み取り専用メモリ(ROM:Read-Only Memory)、消去可能プログラム可能読み取り専用メモリ(EPROM:Erasable Programmable Read Only Memory)、フラッシュ・メモリ・デバイス、及び光学ストレージ・デバイス(ポータブル・コンパクト・ディスク(CD:Compact Disc)、ポータブル・デジタル・ビデオ・ディスク(DVD:Digital Video Disc)などを含む)が含まれる。
【0142】
添付の図に例示されているコンポーネントの配置は、例示のためのものであり、他の配置が可能であることを理解すべきである。例えば、本明細書で説明される要素のうちの1つ又は複数は、全体的又は部分的に、電子ハードウェア・コンポーネントとして実現され得る。他の要素は、ソフトウェア、ハードウェア、又はソフトウェアとハードウェアとの組み合わせで実装され得る。更に、本明細書で説明される機能を依然として実現しながら、これらの他の要素のうちのいくつか又は全部を組み合わせても、いくつかを完全に省略しても、追加のコンポーネントを追加してもよい。したがって、本明細書で説明される主題は、多くの異なるバリエーションで具体化され得、そのようなバリエーションはすべて特許請求の範囲内であると企図されている。
【0143】
本明細書で説明される主題を理解しやすくするために、多くの態様は、一連のアクションで説明されている。当業者は、特殊回路によって、1つ又は複数のプロセッサによって実行されるプログラム命令によって、又はその両方の組み合わせによって、様々なアクションが実行され得ることを認識するであろう。本明細書における任意の一連のアクションの説明は、その一連を実行するために説明された特定の順序に従う必要があることを意味することを意図するものではない。本明細書に説明されるすべての方法は、本明細書に特に明記されていない限り、又はコンテキストによって明確に矛盾する場合を除き、任意の適切な順序で実行され得る。
【0144】
主題を説明するコンテキスト(特に、次の特許請求の範囲のコンテキスト)における「a」及び「an」及び「the」の用語及び同様の参照の使用は、本明細書に特に明記されていない限り、又はコンテキストによって明確に矛盾する場合を除き、単数形及び複数形の両方を対象とするように解釈されるべきである。1つ又は複数の項目のリストが続く「少なくとも1つ」という用語の使用(例えば、「A及びBのうちの少なくとも1つ」)は、本明細書に特に明記されていない限り、又はコンテキストによって明確に矛盾する場合を除き、リストされた項目から選択される1つの項目(A又はB)、又は、リストされた項目のうちの2つ以上の任意の組み合わせ(A及びB)を意味するものと解釈されるべきである。更に、前述の説明は、例示のためだけであり、限定のためではない。これは、求められる保護の範囲は、以下に記載される特許請求の範囲と、その任意の均等物とともに定義されるためである。本明細書に提供される任意及びすべての実例又は例示的な用語(例えば、「など」)の使用は、単に主題をよりよく例示することを目的としたものであり、特に主張されていない限り、主題の範囲に限定を課すものではない。特許請求の範囲及び書面の説明の両方における、「~に基づく(based on)」という用語及び結果をもたらすための条件を示す他の類似フレーズの使用は、その結果をもたらす他の条件を除外することは意図されていない。本明細書における用語は、請求項に係わらない任意の要素が、請求項に係る発明の実践に不可欠であることを示していると解釈されるべきではない。
図1A
図1B
図1C
図2A
図2B
図2C
図2D
図3A
図3B
図4
図5A
図5B
図5C
図6
【外国語明細書】