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

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

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

特開2023-129183より高いダイナミック・レンジによる表示のためのより低いダイナミック・レンジのコンテンツのリマスタリング
<>
  • 特開-より高いダイナミック・レンジによる表示のためのより低いダイナミック・レンジのコンテンツのリマスタリング 図1
  • 特開-より高いダイナミック・レンジによる表示のためのより低いダイナミック・レンジのコンテンツのリマスタリング 図2
  • 特開-より高いダイナミック・レンジによる表示のためのより低いダイナミック・レンジのコンテンツのリマスタリング 図3
  • 特開-より高いダイナミック・レンジによる表示のためのより低いダイナミック・レンジのコンテンツのリマスタリング 図4
  • 特開-より高いダイナミック・レンジによる表示のためのより低いダイナミック・レンジのコンテンツのリマスタリング 図5A
  • 特開-より高いダイナミック・レンジによる表示のためのより低いダイナミック・レンジのコンテンツのリマスタリング 図5B
  • 特開-より高いダイナミック・レンジによる表示のためのより低いダイナミック・レンジのコンテンツのリマスタリング 図6
  • 特開-より高いダイナミック・レンジによる表示のためのより低いダイナミック・レンジのコンテンツのリマスタリング 図7
  • 特開-より高いダイナミック・レンジによる表示のためのより低いダイナミック・レンジのコンテンツのリマスタリング 図8
  • 特開-より高いダイナミック・レンジによる表示のためのより低いダイナミック・レンジのコンテンツのリマスタリング 図9
  • 特開-より高いダイナミック・レンジによる表示のためのより低いダイナミック・レンジのコンテンツのリマスタリング 図10
  • 特開-より高いダイナミック・レンジによる表示のためのより低いダイナミック・レンジのコンテンツのリマスタリング 図11
  • 特開-より高いダイナミック・レンジによる表示のためのより低いダイナミック・レンジのコンテンツのリマスタリング 図12
  • 特開-より高いダイナミック・レンジによる表示のためのより低いダイナミック・レンジのコンテンツのリマスタリング 図13A
  • 特開-より高いダイナミック・レンジによる表示のためのより低いダイナミック・レンジのコンテンツのリマスタリング 図13B
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023129183
(43)【公開日】2023-09-14
(54)【発明の名称】より高いダイナミック・レンジによる表示のためのより低いダイナミック・レンジのコンテンツのリマスタリング
(51)【国際特許分類】
   G06T 5/00 20060101AFI20230907BHJP
【FI】
G06T5/00 740
【審査請求】未請求
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022078664
(22)【出願日】2022-05-12
(31)【優先権主張番号】17/684,779
(32)【優先日】2022-03-02
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.BLUETOOTH
(71)【出願人】
【識別番号】501450960
【氏名又は名称】エヌビディア コーポレーション
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】シャヴェーン クマール
(72)【発明者】
【氏名】アンジュル パトニー
(72)【発明者】
【氏名】エリック シュー
(72)【発明者】
【氏名】アントン ムーア
【テーマコード(参考)】
5B057
【Fターム(参考)】
5B057BA29
5B057CA08
5B057CA12
5B057CA16
5B057CB08
5B057CB12
5B057CB16
5B057CE06
5B057CE11
5B057DA20
5B057DB02
5B057DB09
5B057DC40
(57)【要約】      (修正有)
【課題】機械学習モデル及び畳み込みニューラル・ネットワーク(CNN)を使用して、より低いダイナミック・レンジの画像コンテンツであるDR画像を、より高いダイナミック・レンジの、高ダイナミック・レンジ(HDR)画像に拡張する。
【解決手段】方法は、第1の画素値範囲を含む画像を受信し、訓練済み機械学習モデルを使用して、画像を含む入力を処理して、第1の出力及び第2の出力を生成し、画像を拡張して、第1の画素値範囲より大きい第2の画素値範囲を含む画像データを生成し、第1の演算子を使用して画像データを更新する。第1の演算子は、ローカル演算子又はグローバル演算子であり、第1の出力に基づいて画像データ内のバンディング・アーチファクトを低減するためにフィルタを適用する。方法はさらに、第2の演算子を使用して画像データを更新し、第2の出力に基づいて、拡張された画像の領域の輝度を修正、画像データを出出力する。
【選択図】図3
【特許請求の範囲】
【請求項1】
メモリと、
前記メモリと動作可能に結合された処理デバイスと
を含むシステムであって、前記処理デバイスが、
第1の画素値範囲に対応する画像を受信すること、
訓練済み機械学習モデルを使用して前記画像に対応する入力を処理して、第1の出力及び第2の出力を生成すること、
前記画像を拡張して、第2の画素値範囲に対応する画像データを生成することであって、前記第2の画素値範囲が前記第1の画素値範囲よりも大きい、生成すること、
第1の演算子を使用して前記画像データを更新することであって、前記第1の演算子が、前記第1の出力に基づいて、前記画像データ内の1つ又は複数のバンディング・アーチファクトを低減するためにフィルタを適用する、更新すること、
第2の演算子を使用して前記画像データを更新することであって、前記第2の演算子が、前記第2の出力に基づいて、前記拡張された画像の領域の輝度を修正する、更新すること、並びに
前記画像データを1つ又は複数のデバイスに出力すること
を行う、システム。
【請求項2】
前記画像が、標準ダイナミック・レンジ(SDR)画像を含み、出力される前記画像データが、高ダイナミック・レンジ(HDR)画像を含む、請求項1に記載のシステム。
【請求項3】
前記第1の演算子が、可変幅のクランプされたバイラテラル・フィルタを含むローカル演算子であり、前記第2の演算子が、輝度乗数を含むグローバル演算子である、請求項1に記載のシステム。
【請求項4】
前記第1の出力が、前記画像内の各画素について前記第1の演算子によって考慮されるべき前記画素からの距離を示す第1の拡張マップを含み、
前記第2の出力が、前記画像内の各画素について前記画素の分類を示す第2の拡張マップを含み、第1の分類を有する1つ又は複数の画素が、前記拡張された画像の、輝度が変更される対象となる前記領域に含まれる、請求項1に記載のシステム。
【請求項5】
前記第1の分類が、ユーザ・インターフェース分類を含み、前記第2の演算子が、前記領域に対応する少なくとも1つの輝度値を低減する、請求項4に記載のシステム。
【請求項6】
前記第1の分類が、高反射率分類を含み、前記第2の演算子が、前記領域に対応する少なくとも1つの輝度値を増加させる、請求項4に記載のシステム。
【請求項7】
前記訓練済み機械学習モデルが、前記画像を入力として使用して、前記第1の出力及び前記第2の出力を2つ以上の異なるチャネルに出力する深層ニューラル・ネットワーク(DNN)を含み、前記2つ以上の異なるチャネルが、少なくとも、第1の拡張マップを含む第1のチャネルと、第2の拡張マップを含む第2のチャネルとを含む、請求項1に記載のシステム。
【請求項8】
前記入力が、前記訓練済み機械学習モデルの1つ又は複数の以前の出力をさらに含む、請求項1に記載のシステム。
【請求項9】
前記画像を拡張するために、前記処理デバイスが、8ビット入力画像を逆量子化して、10ビット画像データ、12ビット画像データ、16ビット画像データ、又は32ビット画像データのうちの少なくとも1つを生成する、請求項1に記載のシステム。
【請求項10】
前記画像が、フレーム・シーケンスを含むビデオのフレームを含み、前記処理デバイスが、前記シーケンスの少なくとも1つのフレームの拡張された画像データをディスプレイ・デバイスに出力する、請求項1に記載のシステム。
【請求項11】
処理デバイスによって、第1の画素値範囲に対応する画像を受信するステップと、
前記処理デバイスによって、訓練済み機械学習モデルを使用して前記画像に対応する入力を処理して、第1の出力及び第2の出力を生成するステップと、
前記画像を拡張して、第2の画素値範囲に対応する画像データを生成するステップであって、前記第2の画素値範囲が前記第1の画素値範囲よりも大きい、生成するステップと、
第1の演算子を使用して前記画像データを更新するステップであって、前記第1の演算子が、前記第1の出力に基づいて、前記画像データ内の1つ又は複数のバンディング・アーチファクトを低減するためにフィルタを適用する、更新するステップと、
第2の演算子を使用して前記画像データを更新するステップであって、前記第2の演算子が、前記第2の出力に基づいて、前記拡張された画像の領域の輝度を修正する、更新するステップと、
前記処理デバイスによって、前記画像データを出力するステップと
を含む、方法。
【請求項12】
前記画像が、標準ダイナミック・レンジ(SDR)画像を含み、出力される前記画像データが、高ダイナミック・レンジ(HDR)画像を含む、請求項11に記載の方法。
【請求項13】
前記第1の演算子が、可変幅のクランプされたバイラテラル・フィルタを含むローカル演算子であり、前記第2の演算子が、輝度乗数を含むグローバル演算子である、請求項11に記載の方法。
【請求項14】
前記第1の出力が、前記画像内の少なくとも1つの画素について前記第1の演算子によって考慮されるべき前記画素からの距離を示す第1の拡張マップを含み、
前記第2の出力が、前記画像内の少なくとも1つの画素について前記画素の分類を示す第2の拡張マップを含み、第1の分類を有する1つ又は複数の画素が、前記拡張された画像の、輝度が変更される対象となる前記領域に含まれる、請求項11に記載の方法。
【請求項15】
前記第1の分類が、ユーザ・インターフェース分類を含み、前記第2の演算子が、前記領域に対応する少なくとも1つの輝度値を低減する、請求項14に記載の方法。
【請求項16】
前記第1の分類が、高反射率分類を含み、前記第2の演算子が、前記領域に対応する少なくとも1つの輝度値を増加させる、請求項14に記載の方法。
【請求項17】
実行されると、処理デバイスに、
第1の画素値範囲に対応する画像を受信すること、
訓練済み機械学習モデルを使用して前記画像に対応する入力を処理して、第1の出力及び第2の出力を生成すること、
前記画像を拡張して、第2の画素値範囲に対応する画像データを生成することであって、前記第2の画素値範囲が前記第1の画素値範囲よりも大きい、生成すること、
第1の演算子を使用して前記画像データを更新することであって、前記第1の演算子が、前記第1の出力に基づいて、前記画像データ内の1つ又は複数のバンディング・アーチファクトを低減するためにフィルタを適用する、更新すること、
第2の演算子を使用して前記画像データを更新することであって、前記第2の演算子が、前記第2の出力に基づいて、前記拡張された画像の領域の輝度を修正する、更新すること、並びに
前記画像データを1つ又は複数のデバイスに出力すること
を含む動作を実行させる命令を記憶する、非一時的なマシン読取り可能ストレージ媒体。
【請求項18】
前記画像が、標準ダイナミック・レンジ(SDR)画像を含み、出力される前記画像データが、高ダイナミック・レンジ(HDR)画像を含む、請求項17に記載の非一時的なマシン読取り可能ストレージ媒体。
【請求項19】
前記第1の演算子が、可変幅のクランプされたバイラテラル・フィルタを含むローカル演算子であり、前記第2の演算子が、輝度乗数を含むグローバル演算子である、請求項17に記載の非一時的なマシン読取り可能ストレージ媒体。
【請求項20】
前記訓練済み機械学習モデルが、前記画像を入力として使用して、前記第1の出力及び前記第2の出力を2つ以上の異なるチャネルに出力する畳み込みニューラル・ネットワーク(CNN)を含み、前記2つ以上の異なるチャネルが、少なくとも、第1の拡張マップを含む第1のチャネルと、第2の拡張マップを含む第2のチャネルとを含む、請求項17に記載の非一時的なマシン読取り可能ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施例は、一般に、画像処理に関連し、より詳細には、画像コンテンツのダイナミック・レンジを拡張することに関連する。
【背景技術】
【0002】
多くの場合、画像コンテンツは、特定のディスプレイ解像度及びダイナミック・レンジを用いて生成される。ディスプレイ解像度は、画像の画素数に対応してもよく、ダイナミック・レンジは、各画素についての許容値の範囲を示してもよい。たとえば、画像コンテンツは、高精細(HD:High Definition)解像度と、標準ダイナミック・レンジ(SDR:Standard Dynamic-Range)とを有してもよい。HD解像度は、幅が1920画素、高さが1080画素であることを示すことができ、SDRは、各画素が0~255(たとえば、8ビット値)又は0~1023(たとえば、10ビット値)の範囲内の値を有し得ることを示すことができ、ピーク表示明度約100cd/m、黒レベル約0.1cd/m、及びRec.709若しくはsRGBの色域を伴う。
【発明の概要】
【課題を解決するための手段】
【0003】
本開示は、以下に示す詳細な説明、及び本開示の様々な実施例の添付の図面から、より完全に理解されよう。しかしながら、図面は、本開示を特定の実施例に限定するものと解釈されるべきではなく、説明及び理解のみを目的としている。
【図面の簡単な説明】
【0004】
図1】本開示のいくつかの実施例による、画像と、画像のうちの1つ又は複数のダイナミック・レンジを拡張するための技術とを含む例示的なコンピューティング環境を示す図である。
図2】本開示のいくつかの実施例による、1つ又は複数の画像のダイナミック・レンジを拡張する技術を含む処理デバイスの詳細なブロック図である。
図3】本開示のいくつかの実施例による、1つ又は複数の画像のダイナミック・レンジを拡張するための方法のフロー図である。
図4】本開示の実施例が動作することができる例示的なコンピュータ・システムのブロック図である。
図5A】少なくとも一実施例による、推論及び/又は訓練論理を示す図である。
図5B】少なくとも一実施例による、推論及び/又は訓練論理を示す図である。
図6】少なくとも一実施例による、例示的なデータ・センタ・システムを示す図である。
図7】少なくとも一実施例による、コンピュータ・システムを示す図である。
図8】少なくとも一実施例による、コンピュータ・システムを示す図である。
図9】1つ又は複数の実施例による、グラフィックス・プロセッサの少なくとも一部分を示す図である。
図10】1つ又は複数の実施例による、グラフィックス・プロセッサの少なくとも一部分を示す図である。
図11】少なくとも一実施例による、先進コンピューティング・パイプラインのための実例データ・フロー図である。
図12】少なくとも一実施例による、先進コンピューティング・パイプラインにおいて機械学習モデルを訓練、適応、インスタンス化、及び導入するための実例システムのシステム図である。
図13A】少なくとも一実施例による、機械学習モデルを訓練するためのプロセスのデータ・フロー図である。
図13B】少なくとも一実施例による、事前訓練済みアノテーション・モデルを用いてアノテーション・ツールを拡張するためのクライアント・サーバ・アーキテクチャを示す図である。
【発明を実施するための形態】
【0005】
画像コンテンツは、多くの場合、多くの最新のディスプレイ・デバイスによってサポートされているものよりもはるかに低いダイナミック・レンジ及び色域を含む。たとえば、典型的なゲーミング・エンジンは、標準ダイナミック・レンジ(SDR:Standard Dynamic-Range)コンテンツを生成する場合があるが、最新のTV及びモニタは、高ダイナミック・レンジ(HDR:High Dynamic-Range)コンテンツをサポートすることができる。コンテンツのダイナミック・レンジは、知覚可能な誤差なしで表示され得る輝度又は明度の範囲に対応する場合があり、画像の最大色調値と最小色調値との間の比率として表される場合がある。SDRコンテンツをHDRコンテンツに拡張することは、従来、逆トーン・マッピングを使用して明度の範囲を広げることを含み、多くの場合、HDRコンテンツをより不自然に見せる過度に明るい部分及び視覚的なアーチファクト(たとえば、ハロー、バンディング)を伴う画像コンテンツがもたらされる。
【0006】
本開示の態様は、機械学習モデル(たとえば、畳み込みニューラル・ネットワーク(CNN:Convolutional Neural Network))を使用して画像コンテンツのダイナミック・レンジを拡張する、従来の逆トーン・マッピング技法を強化したものである、拡張プロセスのための技術を提供することによって、上記の欠陥及び他の欠陥に対処する。1つ又は複数の実施例では、入力として、より低いダイナミック・レンジ画像(たとえば、低コントラスト比の8ビットRGB)を取ることができ、画像コンテンツを更新するために使用される1つ又は複数の拡張マップを出力することができる機械学習モデルが実装される。拡張マップは、画像内の1つ又は複数の露出過度の領域の位置を識別する拡張マップを含んでもよい。露出過度の領域は、鏡面ハイライト、ユーザ・インターフェース要素(たとえば、ヘッドアップ・ディスプレイ)、他の属性、又はそれらの組合せに対応してもよい。別の拡張マップは、バンディングを伴う領域又は拡張時にバンディングが発生し得る領域に対応してもよく、デバンディングを実行するための値を示してもよい。値は、バンディングを最小化するために使用されてもよく、画像の各領域(たとえば、各画素位置)について値が存在してもよく、バンド(たとえば、ハローの輪郭)に沿った位置では、値が大きくなる場合がある。
【0007】
本技術は、機械学習モデルの出力を1つ又は複数の画像演算子への入力として使用してもよい。画像演算子は、1つ又は複数のグローバル演算子、1つ又は複数のローカル演算子、又はそれらの組合せを含んでもよい。グローバル演算子(たとえば、クランプされたバイラテラル・フィルタ)は、拡張マップのうちの1つ又は複数を使用して画像データを更新し、画像内のすべての輪郭を平滑化することなく、バンディングを伴う領域の輪郭を平滑化してもよい。ローカル演算子(たとえば、0.5乗数)は、拡張マップのうちの1つ又は複数を使用して、対応する露出過度の領域を識別して暗くしてもよい。更新された画像データは、ビット・マップの形式であってもよく、HDR伝達関数への入力として使用されることが可能であり、HDR伝達関数は、その画像データを符号化して、HDR画像の最終フォーマットを作成することができる(たとえば、Rec.2020又はRec.2100に準拠した10ビット符号化)。次いで、フォーマットされたHDR画像は、ユーザに表示するためのディスプレイ・デバイスに提供されることが可能である。
【0008】
機械学習モデルは、出力を複数のチャネルとして提供することができ、出力チャネルのうちのいくつかは、後続の画像処理のためのフィードバックとして使用されてもよい。出力チャネルは拡張マップを含んでもよく、各拡張マップは、1つ又は複数の出力チャネル(たとえば、出力行列の層)に対応してもよい。機械学習モデルは、フレームを処理することからの1つ又は複数の出力チャネルを機械学習モデルへの入力として使用して1つ又は複数の後続のフレームを処理できるフィードバック・ループを含んでもよい。このフィードバックにより、機械学習モデルは、フレーム間の動きを考慮した時間的態様(たとえば、時間的安定性)を提供することが可能になり得る。これにより、機械学習モデルがフレーム間の移動を使用して拡張を向上させることが可能になり得る。たとえば、それにより、画像の静止領域と非静止コンテンツとを区別することが容易になり得る。(たとえば、ヘッドアップ・ディスプレイ対シーンの移動)
【0009】
本明細書に開示される技術は、より低いダイナミック・レンジのコンテンツ(たとえば、SDR)をより高いダイナミック・レンジのコンテンツ(たとえば、HDR)に拡張するために使用され得る逆トーン・マッピング技法を置き換える又は補足することができる。逆トーン・マッピング技法は、典型的には、機械学習モデルを使用せずに実行され、機械学習モデルを使用する精度の低い逆トーン・マッピング技法は、モデルに、変換全体を実行させ、最終的なHDR画像を出力させる場合がある。機械学習モデルに変換全体を実行させると、機械学習モデルが非常に大きくなる可能性があり、その機械学習モデルは、ダイナミック・レンジの低いコンテンツを変換するために大量のコンピューティング・リソース及び時間を消費する可能性があり、より不透明で、エンド・ユーザによって修正されにくい。本明細書の実施例で開示される技術は、コンピューティング・リソースの消費が少なく且つより高速に(たとえば、リアルタイムで)実行できる、はるかに小さい機械学習モデルを使用するが、それでもなお、機械学習モデルを使用して変換全体を実行する逆トーン・マッピング技法よりも、より自然なHDRコンテンツを提供することができる。より小さいモデルは、画像のダイナミック・レンジの拡張をさらに最適化するために検査及び手動で修正され得る拡張マップも生成する。
【0010】
上記で参照された技術の様々な態様が、限定としてではなく実例として以下に詳細に説明されている。以下に提供する実例は、1つ又は複数の画像信号プロセッサのパイプラインに組み込まれた技術について説明しており、イメージ・センサから画像が受信された後、且つ永続的に記憶される前に適用されてもよい。他の実例では、画像データが永続的に記憶された後に、本技術を使用して画像を更新してもよい。
【0011】
図1は、本開示のいくつかの実施例による、1つ又は複数の画像のダイナミック・レンジ拡張101を実行するための技術を含む例示的なコンピューティング環境100を示す。コンピューティング環境100は、画像110A~110B、画像拡張器120、機械学習モデル130、拡張マップ135A~135B、及び演算子140A~140Bを含んでもよい。
【0012】
画像110A~110Bは、画像コンテンツを含み、画像値を使用して画像コンテンツを表してもよい。画像値は、画素センサを備えた画像センサに由来する又は画像センサから導出される画素値に対応してもよい。各画像は、カラー画像又は単色画像であってもよく、静止画像(たとえば、写真)、画像シーケンス(たとえば、ビデオのフレーム)内の画像、又はそれらの組合せに対応してもよい。画像はまた、画像センサによって生成されていない合成画像(たとえば、ゲームのフレーム)であってもよい。画像110Aは、ダイナミック・レンジ拡張101のための入力画像であってもよく、画像110Bは、ダイナミック・レンジ拡張101のための出力画像であってもよい。画像110A~110Bのそれぞれは、値のセットに対応してもよく、セットは、サイズ(たとえば、セット・サイズ)を有してもよく、各値は、サイズ(たとえば、画素サイズ)を有してもよい。セット・サイズは、解像度と呼ばれることがあり、画素の量で測定されてもよく、720×480(たとえば、標準精細(SD:Standard-Definition))、1920×1800(高精細(HD))、3840×2160(超高精細(4K UHD:Ultra High Definition))、7680×4320(8K UHD)、又は他のサイズ若しくは比率であってもよい。値サイズは、画素サイズと呼ばれることがあり、ビット数に基づく範囲(たとえば、画素値範囲)を有してもよい。たとえば、値サイズは、8ビット(たとえば、範囲0~255)、10ビット(たとえば、範囲0~1023)、12ビット(たとえば、範囲0~4K)、他のビット数、又はそれらの組合せであってもよい。値サイズ(たとえば、画素サイズ)は、それぞれの画像のダイナミック・レンジに関連してもよい。
【0013】
画像110A~110Bのそれぞれのダイナミック・レンジは、画像の明るい領域(たとえば、最も明るい領域)と画像の暗い領域(たとえば、最も暗い領域)との間の輝度の範囲である。一実例では、ダイナミック・レンジは、1つ又は複数の最も明るい画素(たとえば、最大の輝度値)と1つ又は複数の最も暗い画素(たとえば、最小の輝度値)との間の比率として表されてもよい。別の実例では、ダイナミック・レンジは、ビット深度(たとえば、8ビット)、色域(たとえば、Rec.709又はsRGB)、他の数値若しくは非数値、又はそれらの組合せとして表されてもよい。入力画像110Aのダイナミック・レンジは、ダイナミック・レンジ拡張101のために、出力画像110Bのダイナミック・レンジよりも小さくてもよい。たとえば、入力画像110Aは、標準ダイナミック・レンジ(SDR)画像、低ダイナミック・レンジ(LDR)画像、又は他の用語であってもよく、出力画像110Bは、高ダイナミック・レンジ(HDR)画像、広ダイナミック・レンジ、拡大されたダイナミック・レンジ、拡張されたダイナミック・レンジ、又は他の用語であってもよい。ダイナミック・レンジという用語は、輝度範囲、光度範囲、明度範囲、強度範囲、他の範囲、若しくはそれらの組合せと同じ又は同様であってもよい。
【0014】
画像110Aのダイナミック・レンジは、ダイナミック・レンジ拡張101によって表されるように拡張されて、出力画像110Bを作成してもよい。一実例では、ダイナミック・レンジ拡張101は、逆トーン・マッピング手順の一部であるか又はそれを補足してもよい。別の実例では、ダイナミック・レンジ拡張101は、逆トーン・マッピング手順の代替又は代用であってもよい。いずれの実例においても、ダイナミック・レンジ拡張101は、1つ又は複数の画像拡張器120、機械学習モデル130、及び画像演算子140を使用して、1つ又は複数の処理デバイスによって実行される技法であってもよい。
【0015】
画像拡張器120は、入力として画像110Aを受信してもよく、画像を拡張して画像データ122を作成してもよい。画像を拡張することは、値サイズ、値、セット・サイズ、又はそれらの組合せを変更することを含んでもよい。たとえば、画像110Aは、特定のサイズ(たとえば、8ビット)及び特定の範囲(たとえば、0~255)を伴う値のセットを有してもよく、画像拡張器120は、より大きいサイズ(たとえば、12ビット)及びより大きい範囲(0~4,095)を伴う値を含む更新されたセットを生成してもよい。画像拡張器120はまた、拡張された値サイズに基づいて値を拡張してもよい。値の拡張は、1つ又は複数の数学演算を含んでもよく、線形、非線形、又はそれらの組合せであってもよい。画像拡張器120は、セット・サイズの変更を回避し(たとえば、同じ解像度)、セット・サイズを拡張し(たとえば、解像度を上げる)、又はセット・サイズを低減してもよい(たとえば、解像度を下げる)。画像拡張器120は、機械学習モデル130が画像110Aを処理するために使用される前、最中、又は後に画像110Aを拡張してもよい。
【0016】
機械学習モデル130は、画像110Aを入力として取り、1つ又は複数の拡張マップ135A~135Bを出力できる任意のモデルであってもよい。機械学習モデル130は、1つ又は複数の数学的モデル、統計モデル、他のモデル、又はそれらの組合せであるか又はそれらを含んでもよい。機械学習モデル130は、複数の層(たとえば、3つ以上の層)を有する深層ニューラル・ネットワーク(DNN:Deep Neural Network)であってもよい。複数の層のうちの少なくとも1つは、畳み込み演算(たとえば、畳み込み層)を含んでもよく、機械学習モデル130は、畳み込みニューラル・ネットワーク(CNN)と呼ばれることがある。
【0017】
機械学習モデル130は、追加的に又は代替的に、アップサンプリングを実行する1つ又は複数の層を含んでもよく、1つ又は複数の復号層を有する自己符号化器、1つ又は複数の逆畳み込み層(たとえば、アップ・コンボリューション層)を有するu-net、他の深層ニューラル・ネットワーク、若しくはそれらの組合せと同じ又は同様であってもよい。アップサンプリング(たとえば、アップサンプリング層)は、マップ(たとえば、活性化マップ、特徴マップ、拡張マップ)の形式でデータを受信してもよく、受信されたデータの次元又は解像度を増加させてもよい。アップサンプリングは、入力画像の次元又は解像度に近いプーリング演算及び出力マップによって行われるダウンサンプリングを相殺してもよい(たとえば、入力画像及び出力拡張マップは同じ又は同様の次元/解像度を有してもよい)。
【0018】
上記のタスクの一部又はすべてを実行するために使用され得る機械学習モデルのタイプの1つは、深層ニューラル・ネットワークなどの人工ニューラル・ネットワークである。人工ニューラル・ネットワークには、一般に、特徴を所望の出力空間にマッピングする分類器又は回帰層を有する特徴表現構成要素を含む。たとえば、畳み込みニューラル・ネットワーク(CNN)は、畳み込みフィルタの複数の層をホストする。プーリングが実行され、非線形性は下位層で対処されてもよく、通常はその上に多層パーセプトロンが追加され、畳み込み層によって抽出された最上層の特徴が決定(たとえば、分類出力など)にマッピングされる。深層学習は、特徴の抽出及び変換のために非線形処理ユニットの一連の複数の層を使用する機械学習アルゴリズムのクラスである。連続する各層は、前の層からの出力を入力として使用する。深層ニューラル・ネットワークは、教師あり(たとえば、分類)及び/又は教師なし(たとえば、パターン分析)の方式で学習してもよい。深層ニューラル・ネットワークは層の階層を含み、様々な層が、様々なレベルの抽象化に対応する様々なレベルの表現を学習する。深層学習では、各レベルは、入力データをもう少し抽象的で複合的な表現に変換することを学習する。たとえば、画像認識アプリケーションでは、生の入力は画素の行列であってもよく、第1の表現層は、画素を抽象化し、エッジを符号化してもよく、第2の層は、エッジの配置を構成及び符号化してもよく、第3の層は、より高いレベルの形状(たとえば、歯、唇、歯茎など)を符号化してもよく、第4の層は、走査の役割を認識してもよい。特に、深層学習プロセスは、どの機能をどのレベルに最適に配置するかを独自に学習することができる。「深層学習」における「深層」とは、データが変換される際に通る層の数を指す。より正確には、深層学習システムは、実質的な貢献度割当て経路(CAP:credit assignment path)深度を有する。CAPは、入力から出力への変換のチェーンである。CAPは、入力と出力との間の潜在的な因果関係を表す。順伝播型ニューラル・ネットワークの場合、CAPの深度は、ネットワークの深度であってもよく、隠れ層の数に1を加えたものであってもよい。信号が層を2回以上伝播し得る再帰型ニューラル・ネットワークの場合、CAP深度は、場合によっては無制限である。
【0019】
一実施例では、1つ又は複数の機械学習モデルに対してU-netアーキテクチャが使用される。U-netは、符号化器と復号器とを適切に連結して組み合わせて局所的な特徴と大域的な特徴との両方を捕捉する深層ニューラル・ネットワークの一種である。符号化器は、一連の畳み込み層であり、入力から出力への処理時に高さ及び幅を減らしながらチャネル数を増やす一連の畳み込み層であり、一方、復号器は、高さ及び幅を増やし、チャネル数を減らす。同じ画像の高さ及び幅を伴う符号化器からの層は、復号器からの出力と連結されてもよい。符号化器及び復号器からの畳み込み層のいずれか又はすべては、従来の又は深度別に分離可能な畳み込みを使用してもよい。
【0020】
一実施例では、1つ又は複数の機械学習モデルは、再帰型ニューラル・ネットワーク(RNN:recurrent neural network)である。RNNは、ニューラル・ネットワークが時間的依存関係を捕捉することを可能にするメモリを含むニューラル・ネットワークの一種である。RNNは、現在の入力と過去の入力との両方に依存する入出力マッピングを学習することが可能である。RNNは、訓練データセットを使用して、(たとえば、ビデオ・データなどの時間的に変化するデータを固定数のクラスに属するものとして分類するために)固定数の出力を生成するように訓練されてもよい。使用され得るRNNの種類の1つは、長短期記憶(LSTM:long short term memory)ニューラル・ネットワークである。
【0021】
RNNのための一般的なアーキテクチャは、LSTM(長短期記憶)である。残念なことに、LSTMは、畳み込みネットワークほど空間情報を捕捉しないので、画像にはあまり適していない。この目的のために、LSTMセル内に畳み込み演算を含むLSTMの変形であるConvLSTMを利用することができる。ConvLSTMは、LSTMセル内に畳み込み演算を含むLSTM(長短期記憶)の変形である。ConvLSTMは、LSTMセル内の各ゲートで行列乗算を畳み込み演算に置き換える。そうすることにより、ConvLSTMは、多次元データにおける畳み込み演算によって、基礎となる空間的特徴を捕捉する。ConvLSTMとLSTMと間の主な違いは、入力次元の数である。LSTM入力データは1次元であるため、ビデオ、衛星、レーダ画像データセットなどの空間シーケンス・データには適していない。ConvLSTMは、その入力として3Dデータ用に設計される。一実施例では、CNN-LSTM機械学習モデルが使用される。CNN-LSTMは、CNN(畳み込み層)とLSTMとの統合である。最初に、モデルのCNN部分がデータを処理し、1次元の結果がLSTMモデルに送られる。
【0022】
機械学習モデル130は、アノテーション付けされた画像のセットを使用して訓練された訓練済み機械学習モデルであってもよい。画像のセットは、訓練セットと呼ばれることがあり、増強された画像、合成画像、合成された画像、シミュレートされた画像、他の画像、又はそれらの組合せを含んでもよい。画像は、静止画像(たとえば、写真)、動画(たとえば、ビデオ・フレーム)、他の画像、又はそれらの組合せであってもよい。画像は、画像内に埋め込まれている又は画像とは別のアノテーション(たとえば、別のアノテーション・ファイル)に関連付けられてもよい。アノテーションは、元の画像の一部であってもよく、又は人間、プログラム、処理デバイス、又はそれらの組合せによって後で元の画像に追加されてもよい。
【0023】
訓練画像のセットに関連付けられたアノテーションは、画像の、バンディング領域、露出過度の領域、他の領域、又はそれらの組合せに対応する部分を示してもよい。アノテーションは、領域の内側、領域の外側、領域の輪郭上、又はそれらの組合せにある特定の画素値又は特定の画素位置を識別することによって、領域を示してもよい。バンディング領域は、画像の、バンディング(たとえば、カラー・バンディング)を伴う部分を含んでもよい。バンディングは、画像の、自然なグラデーション(たとえば、日没)を表す部分をデジタルで量子化するときに発生する画像アーチファクトであってもよい。自然なグラデーションは、日陰の段階的な変化として表されるべきであるが、多くの場合、日陰の段階的な変化が少ないバンド(たとえば、急激な輪郭)として表される。バンディングの輪郭は、画像内の他の輪郭とは異なる(たとえば、物体のボーダとは異なる)。
【0024】
露出過度の領域は、画像内で露出過度であるか又は拡張されると露出過度になり得る画素に対応してもよい。一実例では、露出過度の領域は、画像の高反射エリア又は鏡面反射に対応してもよい。鏡面反射は、照明されたときに反射物体に現れる鏡面ハイライト(たとえば、輝点)であるか又はそれを含んでもよい。露出過度の領域は、追加的に又は代替的に、画像内の他の画像コンテンツの上に重ね合わされたユーザ・インターフェース(UI:User Interface)のユーザ・インターフェース要素に対応してもよい。ユーザ・インターフェース要素は、ユーザ入力要素(たとえば、制御要素、ボタン、ツマミ)、ユーザ出力要素(たとえば、表示要素、マップ、コンパス、スピード・メータ、ボーダ、リスト、テーブル、ガイド)、又はそれらの組合せとして使用される、グラフィカル・ユーザ・インターフェース(GUI:Graphical User Interface)要素であってもよい。一実例では、画像は、ゲーミング・エンジン用であってもよく、露出過度の領域は、ヘッドアップ・ディスプレイ(HUD:Heads-Up Display)のユーザ・インターフェース要素を含んでもよい。別の実例では、画像は、メディア・プレーヤからのものであってもよく、露出過度の領域は、コンテンツをナビゲートするためのユーザ・インターフェース要素(たとえば、再生、一時停止、残り時間、コンテンツ・ガイド、字幕、又はクローズド・キャプション)を含んでもよい。
【0025】
訓練フレームワークは、アノテーション付き画像を分析し、機械学習モデル130を生成又は更新してもよい。訓練フレームワークは、訓練画像のセット内のパターンを識別し、重み、バイアス、フィルタ、カーネル、機械学習モデル130の他の部分を調整して、入力画像と拡張マップ135A~135Bを含むモデル出力との間のマッピングを示してもよい。一実例では、機械学習モデル130は、両方の拡張マップ135A~135Bを生成する単一のモデルであってもよい。別の実例では、機械学習モデル130は、複数のモデルを含んでもよく、モデルのうちの少なくとも1つは、拡張マップ135Aを生成するために使用されてもよく、モデルのうちの少なくとも1つは、拡張マップ135Bを生成するために使用されてもよい。
【0026】
ニューラル・ネットワークの訓練は、教師あり学習の方式で達成されてもよく、教師あり学習の方式は、ネットワークを介してラベル付き入力で構成される訓練データセットを送り出すこと、その出力を観察すること、(出力とラベル値との間の差分を測定することによって)誤差を定義すること、並びに、誤差が最小化されるように、深層勾配降下法及び逆伝播法の手法を使用して、ネットワークの重みをそのすべての層及びノードにわたって調整することを含む。多くの適用例では、訓練データセット内の多くのラベル付き入力にわたってこのプロセスを繰り返すと、訓練データセット内に存在する入力とは異なる入力が提示されたときに正しい出力を作成できるネットワークがもたらされる。大きい画像などの高次元の環境では、この一般化は、十分に大きく多様な訓練データセットが利用可能になったときに達成される。
【0027】
訓練を実現するために、処理論理は、1つ又は複数の訓練データセットを1つ又は複数の未訓練の機械学習モデルに入力する。機械学習モデルに最初の入力を入力する前に、機械学習モデルは初期化されてもよい。処理論理は、訓練データセットに基づいて未訓練の機械学習モデルを訓練して、本明細に記載の様々な動作を実行する1つ又は複数の訓練済み機械学習モデルを生成する。
【0028】
訓練は、1つ又は複数の画像を機械学習モデルに一度に1つずつ入力することによって実行されてもよい。機械学習モデルに入力されるデータは、単一の層又は複数の層を含んでもよい。機械学習モデルは、入力を処理して出力を生成する。人工ニューラル・ネットワークは、データ点における値(たとえば、強度値、及び/又は高さマップ内の画素の高さの値)で構成される入力層を含む。次の層は、隠れ層と呼ばれ、隠れ層のノードはそれぞれ、入力値のうちの1つ又は複数を受け取る。各ノードは、入力値に適用するパラメータ(たとえば、重み)を含む。したがって、各ノードは、基本的に、入力値を多変数関数(たとえば、非線形の数学的変換)に入力して、出力値を作成する。次の層は、別の隠れ層又は出力層であってもよい。いずれの場合も、次の層のノードは、前の層のノードから出力値を受け取り、各ノードは、それらの値に重みを適用し、次いで、独自の出力値を作成する。これは、各層において実行されてもよい。最終層は出力層であり、機械学習モデルが作成できるクラス、予測、及び/又は出力ごとに1つのノードがある。たとえば、露出過度の領域を識別又は予測するように訓練されている人工ニューラル・ネットワークの場合、第1のクラスは露出過度の領域に対応してもよく、第2のクラスは露出過度ではない領域に対応してもよい。実施例では、クラス、予測などは、画像内の画素ごとに決定されてもよい。画素レベルのセグメンテーションの場合、最終層は、画像/内の画素ごとに、画像の画素が第1のクラスに属する確率、画素が第2のクラスに属する確率、及び任意選択で、画素が1つ又は複数の他のクラスに属する確率を適用してもよい。
【0029】
したがって、出力は、1つ若しくは複数の予測及び/又は1つ若しくは複数の確率マップを含んでもよい。たとえば、出力された確率マップは、入力画像内の画素ごとに、画素が第1のクラスに属する第1の確率、画素が第2のクラスに属する第2の確率などを含んでもよい。
【0030】
次いで、処理論理は、生成された確率マップ及び/又は他の出力を、訓練データ項目に含まれていた既知の確率マップ及び/又はラベルと比較してもよい。処理論理は、出力された確率マップ及び/又はラベルと提供された確率マップ及び/又はラベルとの間の差異に基づいて誤差(すなわち、分類誤差)を決定する。処理論理は、誤差に基づいて、機械学習モデル内の1つ又は複数のノードの重みを調整する。誤差項又はデルタは、人工ニューラル・ネットワークのノードごとに決定されてもよい。人工ニューラル・ネットワークは、この誤差に基づいて、そのノードのうちの1つ又は複数に対するそのパラメータのうちの1つ又は複数(ノードの1つ又は複数の入力に対する重み)を調整する。最上位層にあるノードが最初に更新され、その後に次の層にあるノードが更新され、以下同様であるように、パラメータは逆伝播方式で更新されてもよい。人工ニューラル・ネットワークは、「ニューロン」の複数の層を含み、各層は、前の層にあるニューロンから値を入力として受け取る。各ニューロンのパラメータは、前の層にあるニューロンのそれぞれから受け取った値に関連付けられた重みを含む。したがって、パラメータを調整することは、人工ニューラル・ネットワーク内の1つ又は複数の層にある1つ又は複数のニューロンに対する入力のそれぞれに割り当てられた重みを調整することを含んでもよい。
【0031】
モデル・パラメータが最適化されると、モデルが改善されたかどうかを判定するため、また深層学習モデルの現在の精度を判定するために、モデル検証が実行されてもよい。1回又は複数回の訓練の後、処理論理は、停止基準が満たされているかどうかを判定してもよい。停止基準は、精度のターゲット・レベル、訓練データセットからの処理済み画像のターゲット数、1つ若しくは複数の前のデータ点にわたるパラメータに対する変更のターゲット量、それらの組合せ、及び/又は他の基準であってもよい。一実施例では、停止基準は、少なくとも最小数のデータ点が処理され、少なくともしきい値精度が達成されたときに満たされる。しきい値精度は、たとえば、70%、80%、又は90%の精度であってもよい。一実施例では、機械学習モデルの精度が向上しなくなった場合、停止基準が満たされる。停止基準が満たされていない場合、さらなる訓練が実行される。停止基準が満たされている場合、訓練は完了してもよい。機械学習モデルが訓練されると、訓練データセットの確保された部分を使用してモデルをテストしてもよい。
【0032】
拡張マップ135A~135Bは、ダイナミック・レンジ拡張101の一部として画像データ122を更新するために演算子140によって使用されるデータを含んでもよい。拡張マップ135A~135Bは、それぞれ、要素のn次元行列として表されてもよく、各要素は、画像の特定の領域に対応する値を含んでもよい。領域は、単一の画素位置又は複数の画素位置のセットに対応してもよい。たとえば、n次元行列は、2次元テーブルであってもよく、各要素は、入力画像内の特定の画素位置に対する数値を含んでもよい。一実例では、機械学習モデル130を使用して生成される拡張マップ135A~135Bは、特徴マップ、活性化マップ、分類マップ、セグメンテーション・マップ、距離マップ、マスク、他の用語、又はそれらの組合せを指すことがある。
【0033】
拡張マップ135Aは、分類マップと同じ又は同様であってもよく、画像内の1つ又は複数の露出過度の領域を分類する値を含んでもよい。一実例では、拡張マップ135A内の各値は、画像内の対応する画素位置が露出過度の領域の一部であるかどうかを示してもよい。拡張マップ135Aが2つの分類に対応する場合、それはマスク(たとえば、バイナリ・マスク、露出過度マスク)と呼ばれることがあり、領域の一部であるすべての画素又は領域の一部ではない画素のすべてをマスクしてもよい。画像を拡張するとき、領域に対応する画素位置が、異なる方法で扱われる可能性があるので、拡張マップ135Aは有用である場合がある。たとえば、露出過度の領域は、高い輝度を有する可能性があり、演算子140に関して以下に述べるように、画像内の他の領域とは異なる技法を使用して更新されてもよい。拡張マップ135Bは、画像の、バンディングの結果である部分(たとえば、バンディング輪郭)に対応する値を含んでもよい。一実例では、拡張マップ135B内の各値は、画像内の対応する画素位置に適用するためのバンディングの量を示してもよく、これについては、デバンディング演算子及びデバンディング・モジュール224に関して以下でより詳細に説明する。
【0034】
演算子140は、拡張マップ135を使用して画像データ122を更新してもよく、1つ又は複数のローカル演算子、グローバル演算子、又はそれらの組合せを含んでもよい。ローカル演算子は、空間的に変化する演算子と同じ又は同様であってもよく、周囲領域の値(たとえば、近傍の画素値)に従って領域の値(たとえば、画素値)を変更してもよい。グローバル演算子は、ほとんど又はすべての値を周囲領域の値(たとえば、近傍の画素値)に依存せずに同じ方法で変更する空間的に均一な演算子と同じ又は同様であってもよい。ローカル演算子及びグローバル演算子は、1つ又は複数の線形関数、非線形関数、又はそれらの組合せを使用することができる。一実例では、演算子140は、輝度修正演算子及びバンディング演算子を含んでもよい。
【0035】
輝度修正演算子は、拡張マップ135Aを使用して画像データ122を更新して、特定の領域の輝度を修正してもよい。輝度修正演算子は、隣接する画素位置にある値に依存せずに(たとえば、近傍に依存せずに)画素位置を更新するグローバル演算子の実例であってもよい。更新される画素位置は、拡張マップ135Aを使用して識別されてもよい。たとえば、上記で述べたように、拡張マップ135Aは、関心領域に対応する画素位置を識別してもよく、輝度修正演算子は、それらの画素を修正して、輝度値を減少させる(たとえば、露出過度の画素を暗くする)、輝度値を増加させる(たとえば、高反射率画素を明るくする)、又はそれらの組合せを行ってもよい。図2に関して以下に述べるように、輝度修正演算子は、グローバル乗数値(たとえば、0.5乗数、又は2.0乗数)であってもよい。
【0036】
デバンディング演算子は、拡張マップ135Bを使用して画像データ122を更新して、バンディングを低減してもよい(たとえば、カラー・バンディングを最小化する)。デバンディング演算子は、ローカル演算子の一例であってもよく、隣接する画素位置にある値に基づいて(たとえば、近傍に依存して)画素位置を評価してもよい。各画素位置に使用する隣接する画素の量は、拡張マップ135B内の対応する要素値に基づいてもよい。拡張マップ135B内の各要素値は、画素距離、画素量、他の値、又はそれらの組合せを示してもよい。拡張マップ135Bは、各画素位置に対する要素値を有してもよく、バンド輪郭に沿った要素値は、画像の他の領域(たとえば、他の輪郭)に対応する要素値よりも大きい要素値を有してもよい。図2に関して以下で述べるように、デバンディング演算子は、ブラーリング演算子又は平滑化演算子(たとえば、クランプされたバイラテラル・フィルタ)であってもよい。
【0037】
画像110Aのデータを分析及び更新するプロセスは、特定のデータ・フロー(たとえば、画像パイプライン)に従って任意の順序で行うことができる。順序は、逐次的に、並列的に、又はそれらの組合せで行われる1つ又は複数の更新を含んでもよい。図1に示す実例では、画像110Aのデータは、画像拡張器120及び機械学習モデル130に提供されてもよく、それぞれの出力は、演算子140に提供されてもよい。演算子140は、画像データ122に逐次的に適用されてもよく、輝度修正演算子は、デバンディング演算子の前に適用されてもよく、輝度修正演算子の前にデバンディング演算子、他の順序、又はそれらの組合せであってもよい。
【0038】
図2は、本開示の1つ又は複数の態様による、1つ又は複数の画像のダイナミック・レンジを拡張するための技術を実装する例示的な処理デバイス200を示すブロック図を示す。図1に関して上記で述べたように、処理デバイス200は、画像110Aを受信し、ダイナミック・レンジ拡張101を実行して画像110Bを作成するように構成されてもよい。図2に示す実例では、処理デバイス200は、機械学習モデル構成要素210、画像更新構成要素220を含んでもよく、データ・ストア230に関連付けられてもよい。ブロックのうちの1つ又は複数は、論理ブロックであってもよく、ハードウェア(たとえば、集積回路(IC:integrated circuit)若しくは他の回路)、コンピュータ・コード(たとえば、ファームウェア、ソフトウェア、若しくは他のプログラム)、又はそれらの組合せとして実装されてもよい。一般性を失うことなく、より多い若しくはより少ない構成要素又はモジュールが含まれてもよい。たとえば、2つ以上の構成要素が単一の構成要素に組み合わされてもよく、又は構成要素の機能が2つ以上の構成要素に分割されてもよい。
【0039】
処理デバイス200は、1つ又は複数の画像のデータを処理することが可能な1つ又は複数のデバイスであってもよい。処理デバイス200は、画像プロセッサと呼ばれることがあり、1つ又は複数の画像信号プロセッサ(ISP:Image Signal Processor)、デジタル信号プロセッサ(DSP:Digital Signal Processor)、グラフィカル・プロセッシング・ユニット(GPU:Graphical Processing Unit)、中央処理装置(CPU:Central Processing Unit)、データ処理ユニット(DPU:Data Processing Unit)、フィールド・プログラマブル・ゲート・アレイ(FPGA:Field Programmable Gate Array)、特定用途向け集積回路(ASIC:Application Specific Integrated Circuit)、他の集積回路、又はそれらの組合せであるか又はそれらを含んでもよい。
【0040】
処理デバイス200は、別のデバイスから、1つ又は複数の画像をアナログ信号、デジタル信号、又はそれらの組合せとして受信してもよい。他のデバイスは、1つ又は複数の画像のソースであってもよく、ゲーミング・エンジン(たとえば、ゲーム・コンソール又はプログラム)、メディア・プレーヤ(たとえば、セット・トップ・ボックス、DVDプレーヤ、ストリーミング・アプリケーション)、ホスト・プロセッサ(たとえば、CPU)、イメージ・センサ(たとえば、カメラ)、ストレージ・デバイス(メイン・メモリなど)、他のソース、又はそれらの組合せであってもよい。画像は、画像シーケンスであってもよく、シーケンス内の各画像はビデオ・フレームであってもよい。処理デバイス200は、画像を、符号化された画像、生画像、又はそれらの組合せとして受信してもよい。受信された画像は、ディスプレイ・デバイスによってサポートされる画素値範囲よりも小さい画素値範囲を有してもよい。画素値範囲の概念は、ビット深度と同じ又は同様であってもよい。たとえば、受信された画像は、低ダイナミック・レンジ(たとえば、ビット深度10)を伴う画素値範囲を有してもよく、ディスプレイ・デバイスによってサポートされる画素値範囲は、高ダイナミック・レンジ(HDR)(たとえば、10よりも大きいビット深度)であってもよい。処理デバイス200は、受信された画像を画像110Aとしてデータ・ストア230(たとえば、プロセッサ・メモリ又はメイン・メモリ)内に記憶してもよい。
【0041】
機械学習モデル構成要素210は、1つ又は複数の画像を処理し、拡張マップ135A~135Bを生成してもよい。一実例では、機械学習モデル構成要素210は、処理モジュール212、拡張マップ・モジュール214、及び時間的フィードバック・モジュール216を含んでもよい。
【0042】
処理モジュール212は、処理デバイス200が、訓練済み機械学習モデルを使用して1つ又は複数の画像を処理することを可能にしてもよい。処理モジュール212は、推論エンジン又は推論エンジンとのインターフェースとして機能してもよく、データ・ストア230から機械学習モデル130の一部又はすべてをロードしてもよい。上記で述べたように、機械学習モデル130は、畳み込みニューラル・ネットワーク(CNN)であってもよく、重み値、バイアス値、フィルタ値、他の値、又はそれらの組合せを含んでもよい。処理モジュール212は、データ・ストア230からの画像にアクセスし、各画像を、入力の1つ又は複数のチャネル(たとえば、赤チャネル、青チャネル、緑チャネル(RBG))として提供してもよい。次いで、処理モジュール212は、機械学習モデル130を考慮して入力チャネルを処理して、1つ又は複数の出力を作成してもよい。一実例では、機械学習モデル130は、画像を処理し、異なる出力(たとえば、異なる拡張マップ)で複数のチャネルを出力するために使用される、単一のモデルであってもよい。別の実例では、機械学習モデル130は、複数のモデルを含んでもよく、モデルのうちの少なくとも1つは、第1の出力を生成するために使用されてもよく、モデルのうちの少なくとも1つは、第2の出力を生成するために使用されもよい。複数のモデルが、モデル・パイプライン内に配置されてもよく、直列、並列、又はそれらの組合せで実行されてもよい。
【0043】
拡張マップ・モジュール214は、処理デバイス200が、処理モジュール212の出力データにアクセスし、出力データを1つ又は複数の拡張マップ135A~135Bとしてデータ・ストア230内に記憶することを可能にしてもよい。一実例では、出力データは複数のチャネルを含んでもよく、あるチャネルは第1の出力を含んでもよく、別のチャネルは第2の出力を含んでもよい。第1の出力は、入力画像内の各画素についての値を含む拡張マップを含んでもよく、値は、各画素位置の距離(たとえば、平滑化距離、ブラー距離、フィルタ幅)を示してもよい。第2の出力は、画像内の各画素についての値を含む拡張マップを含んでもよく、値は、画素位置の分類を示してもよい。特定の分類(たとえば、真/1、又は偽/0)を有する画素は、輝度が修正される画像の領域に対応してもよい。一実例では、分類は、ユーザ・インターフェース分類に対応してもよく、画素が1つ又は複数のユーザ・インターフェース要素に対応していることを示してもよい。
【0044】
時間的フィードバック・モジュール216は、処理デバイス200が、機械学習モデル130の出力を、後続の処理ラウンドのために機械学習モデル130への入力として使用する、フィードバック・ループを導入することを可能にしてもよい。フィードバック・ループは、機械学習モデルの外部、機械学習モデルの内部、又はそれらの組合せである1つ又は複数のフィードバック・ループを含んでもよい。機械学習モデル130の外部にあるフィードバック・ループは、機械学習モデル130の出力層からデータを取り、データを機械学習モデル130の入力層に提供してもよい(たとえば、データを入力層の1つ又は複数のノードに送り込んでもよい)。機械学習モデル130の内部にあるフィードバック・ループは、機械学習モデル130の隠れ層からデータを取り、データを同じ層又は前の層に送り込んでもよい。たとえば、フィードバック・ループは、ある隠れ層のノードから別の隠れ層のノード(たとえば、再帰型ニューラル・ネットワーク(RNN)、トランスフォーマ)にデータを送り込んでもよい。
【0045】
上記で述べたように、順序付けられた画像シーケンス(たとえば、時系列に順序付けられたビデオ・フレーム)の一部である複数の画像が存在してもよく、処理モジュール212は、シーケンス内の画像を処理し、次いで、処理された画像からの出力を入力として使用して、シーケンス内の1つ又は複数の後続の画像を処理してもよい。一実例では、機械学習モデル130は複数の出力チャネル(たとえば、12又は16の出力チャネル)を有してもよく、出力チャネルのいくつかは拡張マップを含んでもよく、残りのチャネルは、後続の処理のためのフィードバックとして使用されてもよい。フィードバック・ループの一部分であるチャネルは、蓄積された時間的情報及びモデル履歴を含んでもよい。情報を機械学習モデル130にフィードバックすることは、機械学習モデル130が画像間の動き(たとえば、隣接するビデオ・フレーム間の差異)を考慮した時間的態様(たとえば、時間的安定性)を提供することを可能にし得るので、有利であってもよい。以前の出力を現在の入力と整合させるために、蓄積された時間的情報及びモデル履歴は、モードに入力される前に、入力シーケンスからの速度ベクトル又は動きベクトルによって変換されてもよい。これにより、機械学習モデル130は、フレーム間の移動を使用して、画像の静止領域と非静止コンテンツとをより適切に区別できるようになる(たとえば、ヘッドアップ・ディスプレイ対シーンの移動)。
【0046】
画像更新構成要素220は、処理デバイス200が入力画像110Aのデータを更新してダイナミック・レンジを拡張し、出力画像110Bを作成することを可能にしてもよい。図2に示す実例では、画像更新構成要素220は、画像拡張モジュール222、デバンディング・モジュール224、輝度修正モジュール226、及び出力モジュール228を含んでもよい。
【0047】
画像拡張モジュール222は、処理デバイスが、画像110Aのデータを拡張して、拡張された画像データ122を生成することを可能にしてもよい。画像110のデータは、より小さい画素値範囲(たとえば、0~1023)を有してもよく、より大きい画素値範囲(たとえば、0~65,535)を有する画像データ122を生成するために使用されてもよい。画像拡張モジュール222は、図1の画像拡張器120と同じ又は同様であってもよい。一実例では、画像拡張モジュール222は、逆量子化を実行して、特定の範囲(たとえば、1024の10ビット範囲)内にある画像110Aの値のセットを、より大きい範囲(たとえば、65,536の16ビット範囲)に拡張してもよい。これは、より小さい範囲のより低い部分、中間の部分、及びより高い部分にある値を、より大きい範囲のそれぞれのより低い部分、中間の部分、及びより高い部分にあるように更新することを含んでもよい(たとえば、0は0のままであり、1023は65,535になる)。
【0048】
輝度修正モジュール226は、処理デバイスが、画像データ122を更新して、拡張マップ135Aによって識別される特定の領域の輝度を修正することを可能にしてもよい。輝度修正モジュール226は、上記で述べた輝度修正演算子を使用して、1つ又は複数の特定の画素の強度を修正してもよい(たとえば、露出過度の画素を暗くするか又は露出不足の画素を明るくする)。修正された画素は、拡張マップ135Aを使用して識別されてもよい。修正は、識別された領域の画素値に1つ又は複数のグローバル値を乗算、除算、減算、又は加算することを含む、1つ又は複数の線形演算又は非線形演算を含んでもよい。グローバル値は、1つの画像全体にわたって又は複数の画像全体にわたって一定のままである所定の値であってもよく、処理デバイスが画像を受信する前に決定されてもよい。たとえば、グローバル値は、デバイス(たとえば、処理デバイス、ホスト・マシン、グラフィックス・カード、イメージ・センサ)、プログラム(たとえば、ゲーミング・エンジン、メディア・プレーヤ、デバイス・ドライバ、ファームウェア、オペレーティング・システム)、ユーザ(たとえば、ゲーム設計者、コンテンツ製作者、閲覧者、技術者、管理者)、他のエンティティ、又はそれらの組合せによって提供されてもよい。一実例では、輝度修正演算子は、特定の画素の強度をグローバル値で乗算する輝度乗数であってもよい。輝度乗数は、乗算演算(たとえば、0.5で乗算)、除算演算(たとえば、2で除算)、ビットシフト演算(たとえば、右に1ビットシフト)、他の演算、又はそれらの組合せを使用してもよい。
【0049】
デバンディング・モジュール224は、処理デバイスが、バンディングを低減する(たとえば、カラー・バンディングを最小化する)デバンディング演算子を使用して画像データ122を更新することを可能にしてもよい。上記で述べたように、デバンディング演算子は、機械学習モデル130の出力(たとえば、拡張マップ135B)を使用して、各画素位置に使用する隣接画素の量を決定してもよい。一実例では、デバンディング演算子は、ブラーリング演算子であってもよく、拡張マップ135B内の要素値は、ブラー距離であってもよい。別の実例では、デバンディング演算子は平滑化演算子であってもよく、拡張マップ135B内の要素値は平滑化距離であってもよい。平滑化演算子は、バイラテラル・フィルタ(たとえば、クランプされたバイラテラル・フィルタ)と同じ又は同様であってもよい。
【0050】
バイラテラル・フィルタは、非線形、エッジ保存、及び/又はノイズ低減である平滑化フィルタであってもよい。バイラテラル・フィルタは、近くの画素からの強度値の加重平均に基づいて、各画素の強度に対する置換値を決定してもよい。重みは、ガウス分布に基づいてもよく、ガウシアン・ブラー又は選択的ガウシアン・ブラーと呼ばれることがある。バイラテラル・フィルタは、追加的に又は代替的に、画素距離値(たとえば、ユークリッド距離)、放射測定差分値(たとえば、色強度、深度距離などの差分の範囲)、他の値、又はそれらの組合せに依存してもよい。一実例では、バイラテラル・フィルタは、クランプされたバイラテラル・フィルタであってもよい。
【0051】
クランプされたバイラテラル・フィルタは、対応する値がしきい値差分を超えたときに、置換値又は置換値の算出に使用される1つ若しくは複数の近くの画素のいずれかを除外することによって、鮮明なエッジを保持してもよい。しきい値差分は、任意の数値に基づく所定の値であってもよく、数値は、ビット数(1ビット差、2ビット差など)に基づいてもよい。たとえば、差分しきい値が1ビットである場合、強度の2倍(たとえば、明度の2倍)を超える任意の値、又は強度の2分の1(たとえば、明度の2分の1)未満の任意の値は除外されてもよい。差分しきい値が2ビットである場合、強度の4倍(たとえば、明度の4倍)を超える任意の値、又は強度の4分の1(たとえば、明度の25%)未満の任意の値は除外されてもよい。バイラテラル・フィルタをクランプすることは、はるかに明るい又は暗い近くの画素が平滑化演算子に与える影響を低減させる可能性がある。これにより、平滑化演算子は、不自然な輪郭(たとえば、カラー・バンディング)を変更し、自然な輪郭(たとえば、物体の輪郭)への変更を最小化することが可能になる。
【0052】
出力モジュール228は、処理デバイス200が、拡張された画像データ122を1つ又は複数のデバイスに出力することを可能にしてもよい。デバイスには、ディスプレイ・デバイス、データ・ストレージ・デバイス、データ送信デバイス、別の処理デバイス、他のデバイス、又はそれらの組合せが含まれてもよい。画像データをディスプレイ・デバイス(たとえば、テレビ、モニタ、プロジェクタ)に出力することは、画像データを表示又は再生することと同じ又は同様であってもよい。画像データをデータ・ストレージ・デバイス(たとえば、メモリ、ハード・ドライブ、ソリッド・ステート・ドライブ)に出力することは、画像データを記憶することと同じ又は同様であってもよい。画像データをデータ送信デバイス(たとえば、ネットワーク、バス、相互接続部)に出力することは、画像データをストリーミングすることと同じ又は同様であってもよい。
【0053】
処理デバイス200は、1つ又は複数のデバイスにデータを出力する前、最中、又は後に画像データ122を符号化してもよい。画像データを符号化するプロセスは、伝達関数を使用して、画像コンテンツをHDRビデオ・フォーマット、HDR静止画フォーマット、又はそれらの組合せに符号化することを含んでもよい。伝達関数は、バンディングの人間の視覚的知覚に基づいてもよく、知覚されるバンディングをさらに最小化することが可能であってもよい。伝達関数は、SDRにおいて使用されるガンマ曲線を置き換えることによって、画像データ122をHDRコンテンツとして符号化してもよい。知覚量子化器は、任意の数のビット(たとえば、12ビット値)を使用してもよく、最大10000cd/m(nit)から0.0001nitに至るまでの輝度範囲(たとえば、画素値範囲、ダイナミック・レンジ)を表すことが可能であってもよい。伝達関数は、非線形関数、線形伝達関数、又はそれらの組合せ(たとえば、最初は線形部分で、その後に非線形部分が続く)であってもよい。一実例では、伝達関数は、知覚量子化器(PQ:Perceptual Quantizer)、光電伝達関数(OETF:Opto-Electronic Transfer Function)、電光伝達関数(EOTF:Electro-Optical Transfer Function)、光光伝達関数(OOTF:Opto-Optical Transfer Function)、他の伝達関数、又はそれらの組合せであってもよい。また、符号化された画像は、Rec.709、Rec.2020、Rec.2100、他の標準化された若しくは独自の符号化、又はそれらの組合せなど、国際電気通信連合無線通信部門(ITU-R:International Telecommunication Union Radio communication Sector)の推奨される符号化に準拠してもよい。推奨される符号化は、高ダイナミック・レンジ(HDR)及び広色域(WCG:Wide Color Gamut)を備えた超高精細テレビ(UHDTV:Ultra-High-Definition Television)の、画像解像度、プログレッシブ・スキャンによるフレーム・レート、ビット深度、原色、RGB及びルーマとクロマの色表現、クロマ・サブサンプリング、並びに伝達関数を含む態様を定義する場合がある。
【0054】
図3は、本開示の1つ又は複数の態様による、1つ又は複数の画像のダイナミック・レンジを拡張するための方法300の1つの説明的な実例のフロー図を示す。方法300及びその個々の機能、ルーチン、サブルーチン、又は動作のそれぞれは、1つ又は複数の処理デバイスによって実行されてもよい。特定の実装形態では、方法300は、単一のコンピューティング・デバイス(たとえば、ゲーム・コンソール、メディア・プレーヤ、又はディスプレイ・デバイス)の処理デバイスによって実行されてもよい。代替として、方法300は、2つ以上のコンピューティング・デバイスの処理デバイスによって実行されてもよく、各コンピューティング・デバイスは、方法の1つ又は複数の個々の機能、ルーチン、サブルーチン、又は動作を実行する。
【0055】
説明を簡単にするために、本開示の方法は、一連の行為として描写及び説明されている。しかしながら、本開示による行為を、様々な順序で且つ/又は同時に、本明細書に提示及び記載されていない他の行為とともに行うことができる。さらに、開示された主題に従って方法を実施するには、図示されたすべての行為が必要とされるわけではない。さらに、当業者には、方法が、状態図又はイベントを介して一連の相互に関連する状態として代替的に表現され得ることが理解及び認識されよう。さらに、本明細書に開示される方法は、そのような方法をコンピューティング・デバイスに伝送及び転送することを容易にするために、製造品上に記憶されることが可能であることが認識されるべきである。本明細書で使用される「製造品」という用語は、任意のコンピュータ読取り可能デバイス又はストレージ媒体からアクセス可能なコンピュータ・プログラムを包含することを意図している。一実施例では、方法300は、図2に示すような機械学習モデル構成要素210及び画像更新構成要素220を使用して実行されてもよい。
【0056】
方法300は、処理デバイス(たとえば、処理デバイス200)の処理論理によって実行されてもよく、動作310において開始してもよい。動作310において、処理論理は、第1の画素値範囲を含む画像を受信してもよい。画像は、カラー画像又は単色画像であってもよく、静止画像(たとえば、写真)、画像シーケンス(たとえば、ビデオ・フレーム)内の画像、又はそれらの組合せに対応してもよい。第1の画素値範囲(たとえば、第1のビット深度)は、画素値(たとえば、8ビット、10ビット)のサイズに対応してもよく、8ビット画素値の場合は0~255の範囲、10ビット画素値の場合は0~1023の範囲を有してもよい。画素値範囲は、画像のダイナミック・レンジに関連してもよく、ダイナミック・レンジは、画像の最も明るい領域(たとえば、最も明るい画素)と画像の最も暗い領域(たとえば、最も暗い画素)との間の輝度の範囲である。
【0057】
動作320において、処理論理は、訓練済み機械学習モデルを使用して、画像を含む入力を処理して、第1の出力及び第2の出力を生成することができる。一実例では、第1の出力は、画像内の各画素について第1の演算子によって考慮される画素からの距離を示す第1の拡張マップであってもよい。第2の出力は、画像内の各画素について画素の分類を示す第2の拡張マップであってもよい。第1の分類を有する画素は、輝度がその後修正されることになる拡張された画像の領域内に含まれてもよい。
【0058】
訓練済み機械学習モデルは、畳み込みニューラル・ネットワーク(CNN)であるか又はそれを含んでもよい。CNNは、画像を入力として使用し、第1の出力及び第2の出力を異なるチャネルで出力してもよい。異なるチャネルは、第1の拡張マップを含む第1のチャネルと、第2の拡張マップを含む第2のチャネルとを含んでもよい。一実例では、訓練済み機械学習モデルは、訓練済み機械学習モデルの1つ又は複数の以前の出力(たとえば、以前の画像を処理することからの出力チャネル)を入力として使用してもよい。
【0059】
動作330において、処理論理は、画像を拡張して、第2の画素値範囲(たとえば、第2のビット深度)を含む画像データを生成することができる。第2の画素値範囲は、第1の画素値範囲より大きくてもよい。入力を拡張すること及び処理することは、逆トーン・マッピング手順の一部であってもよい。一実例では、画像を拡張することは、8ビットの入力画像を逆量子化して10ビット、12ビット、16ビット、又は32ビットの画像データを生成することを含んでもよい。入力画像は、より低いダイナミック・レンジ(たとえば、SDR)画像であるか又はそれを含んでもよく、出力される画像データは、より高いダイナミック・レンジ(たとえば、HDR)画像であるか又はそれを含んでもよい。
【0060】
動作340において、処理論理は、第1の演算子を使用して画像データを更新することができる。第1の演算子は、ローカル演算子又はグローバル演算子であってもよい。第1の演算子は、第1の出力に基づいて画像データ内のバンディング・アーチファクトを低減するためにフィルタを適用してもよい。一実例では、第1の演算子は、クランプされたバイラテラル・フィルタを含むローカル演算子であってもよい。
【0061】
動作350において、処理論理は、第2の演算子を使用して画像データを更新することができる。第2の演算子は、ローカル演算子又はグローバル演算子であってもよい。第2の演算子は、第2の出力に基づいて、拡張された画像の領域の輝度を修正してもよい。一実例では、領域は、ユーザ・インターフェース分類として分類されてもよく、第2の演算子は、領域に対応する少なくとも1つの輝度値を低減してもよい(たとえば、1未満の値又は端数を乗算する)。別の実例では、領域は、高反射率分類として分類されてもよく、第2の演算子は、領域に対応する少なくとも1つの輝度値を増加させてもよい(たとえば、1を超える値又は端数を乗算する)。
【0062】
動作360において、処理論理は、画像データを出力することができる。一実例では、入力画像は、フレーム・シーケンスを含むビデオのフレームを含み、出力することは、各フレーム・シーケンスの拡張された画像データを、ディスプレイ・デバイス、ストレージ・デバイス、送信デバイス、他のデバイス、又はこれらの組合せに出力することを含んでもよい。ブロック360を参照して本明細書で上述した動作を完了することに応答して、方法は終了してもよい。
【0063】
図4は、コンピュータ・システム400の例示的なマシンを示しており、コンピュータ・システム400の中で、本明細書に述べる方法論のうちのいずれか1つ又は複数をマシンに実行させるための命令セットが実行され得る。いくつかの実施例では、コンピュータ・システム400は、キャッシュ・コントローラ、メモリ・コントローラ、又はそれらの組合せを伴うプロセッサを含むコンピューティング・デバイスとすることができる。代替的な実施例では、マシンは、LAN、イントラネット、エクストラネット、及び/又はインターネット内の他のマシンに接続(たとえば、ネットワーク化)され得る。マシンは、クライアント・サーバ・ネットワーク環境内のサーバ又はクライアント・マシンの容量で、ピアツーピア(若しくは分散)ネットワーク環境内のピア・マシンとして、又はクラウド・コンピューティング・インフラストラクチャ若しくは環境内のサーバ若しくはクライアント・マシンとして動作することができる。
【0064】
マシンは、パーソナル・コンピュータ(PC:personal computer)、タブレットPC、セット・トップ・ボックス(STB:set-top box)、携帯情報端末(PDA:Personal Digital Assistant)、携帯電話、ウェブ・アプライアンス、サーバ、ネットワーク・ルータ、スイッチ若しくはブリッジ、又はそのマシンによって行われるアクションを指定する(逐次的な若しくは他の方法による)命令セットを実行することが可能な任意のマシンとすることができる。さらに、単一のマシンが示されているが、「マシン」という用語は、本明細書に述べる方法論のうちのいずれか1つ又は複数を実行するための、命令のセット(若しくは複数のセット)を個別に又は共同で実行するマシンの集合体を含むと解釈されるものとする。
【0065】
例示的なコンピュータ・システム400は、処理デバイス402(たとえば、プロセッサ200)、メイン・メモリ404(たとえば、読取り専用メモリ(ROM:read-only memory)、フラッシュ・メモリ、同期DRAM(SDRAM:synchronous dynamic random access memory)又はRambus DRAM(RDRAM)などのダイナミック・ランダム・アクセス・メモリ(DRAM)など)、スタティック・メモリ406(たとえば、フラッシュ・メモリ、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)など)、及びデータ・ストレージ・システム418を含み、これらは、バス430を介して互いに通信する。
【0066】
処理デバイス402は、マイクロプロセッサ、中央処理装置などの1つ又は複数の汎用処理デバイスを表す。より具体的には、処理デバイスは、複合命令セット・コンピューティング(CISC:complex instruction set computing)・マイクロプロセッサ、縮小命令セット・コンピューティング(RISC:reduced instruction set computing)・マイクロプロセッサ、超長命令語(VLIW:very long instruction word)マイクロプロセッサ、又は他の命令セットを実装するプロセッサ若しくは命令セットの組合せを実装するプロセッサとすることができる。処理デバイス402は、データ処理ユニット(DPU)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワーク・プロセッサなどの1つ又は複数の専用処理デバイスとすることもできる。処理デバイス402は、本明細書に述べる動作及びステップを実行するための命令426を実行するように構成される。コンピュータ・システム400は、ネットワーク420を介して通信するためのネットワーク・インターフェース・デバイス408をさらに含むことができる。
【0067】
データ・ストレージ・システム418は、マシン読取り可能ストレージ媒体424(非一時的なコンピュータ読取り可能媒体としても知られる)を含むことができ、マシン読取り可能ストレージ媒体424上には、1つ又は複数の命令セット426、又は本明細書に記載の方法論若しくは機能のうちのいずれか1つ又は複数を具現化するソフトウェアが記憶される。命令426はまた、コンピュータ・システム400によるその実行中に、メイン・メモリ404内に且つ/又は処理デバイス402内に完全に若しくは少なくとも部分的に常駐することができ、メイン・メモリ404及び処理デバイス402もまた、マシン読取り可能ストレージ媒体を構成する。マシン読取り可能ストレージ媒体424、データ・ストレージ・システム418、及び/又はメイン・メモリ404は、図1のデータ・ストア230に対応することができる。
【0068】
一実施例では、命令426は、図2の画像更新構成要素220に対応する機能を実装するための命令を含む。マシン読取り可能ストレージ媒体424は、例示的な実施例では単一の媒体であるように示されているが、「非一時的なマシン読取り可能ストレージ媒体」という用語は、1つ又は複数の命令セットを記憶する単一の媒体又は複数の媒体を含むと解釈されるべきである。「マシン読取り可能ストレージ媒体」という用語はまた、マシンによって実行するための命令セットを記憶又は符号化することが可能であり、本開示の方法論のうちのいずれか1つ又は複数をマシンに実行させる任意の媒体を含むと解釈されるものとする。したがって、「マシン読取り可能ストレージ媒体」という用語は、これらに限定されないが、ソリッド・ステート・メモリ、光学媒体、及び磁気媒体を含むと解釈されるものとする。
【0069】
推論及び訓練の論理
図5Aは、1つ又は複数の実施例に関して推論及び/又は訓練の動作を実行するために使用される推論及び/又は訓練論理(ハードウェア構造)515を示す。推論及び/又は訓練論理515に関する詳細事項は、図5A及び/又は図5Bと併せて以下に提供される。
【0070】
少なくとも一実施例では、推論及び/又は訓練論理515は、1つ又は複数の実施例の態様において推論するように訓練及び/若しくは使用されるニューラル・ネットワークのニューロン若しくは層を構成するための順伝播及び/若しくは出力の重み、及び/若しくは入力/出力データ、及び/若しくは他のパラメータを記憶するためのコード並びに/又はデータ・ストレージ501を、限定することなく含んでもよい。少なくとも一実施例では、訓練論理515は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ501を含んでもよく、又はそれに結合されてもよく、コード及び/又はデータ・ストレージ501には、重み及び/又は他のパラメータ情報がロードされて、整数及び/又は浮動小数点ユニット(総称して算術論理演算ユニット(ALU)を含む論理が構成される。少なくとも一実施例では、グラフ・コードなどのコードは、コードが対応するニューラル・ネットワークのアーキテクチャに基づき、重み又は他のパラメータ情報をプロセッサALUにロードする。少なくとも一実施例では、コード及び/又はデータ・ストレージ501は、1つ又は複数の実施例の態様を使用した訓練及び/又は推論中に、入力/出力データ及び/又は重みパラメータを順伝播する間に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも一実施例では、コード及び/又はデータ・ストレージ501の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。
【0071】
少なくとも一実施例では、コード及び/又はデータ・ストレージ501の任意の部分は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路の内部にあっても外部にあってもよい。少なくとも一実施例では、コード及び/又はコード及び/又はデータ・ストレージ501は、キャッシュ・メモリ、ダイナミック・ランダム・アドレス可能メモリ(「DRAM」:dynamic randomly addressable memory)、スタティック・ランダム・アドレス可能メモリ(「SRAM」:static randomly addressable memory)、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、コード及び/又はコード及び/又はデータ・ストレージ501が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ、若しくは何らか他のタイプのストレージから構成されるかの選択は、オン・チップ対オフ・チップで利用可能なストレージ、実行される訓練及び/又は推論の機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
【0072】
少なくとも一実施例では、推論及び/又は訓練論理515は、1つ又は複数の実施例の態様において推論するために訓練及び/若しくは使用されるニューラル・ネットワークのニューロン若しくは層に対応した、逆伝播及び/若しくは出力の重み、及び/若しくは入力/出力データを記憶するためのコード並びに/又はデータ・ストレージ505を、限定することなく含んでもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ505は、1つ又は複数の実施例の態様を使用した訓練及び/又は推論中に、入力/出力データ及び/又は重みパラメータを逆伝播する間に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも一実施例では、訓練論理515は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ505を含んでもよく、又はそれに結合されてもよく、コード及び/又はデータ・ストレージ505には、重み及び/又は他のパラメータ情報がロードされて、整数及び/又は浮動小数点ユニット(総称して算術論理演算ユニット(ALU)を含む論理が構成される。少なくとも一実施例では、グラフ・コードなどのコードは、コードが対応するニューラル・ネットワークのアーキテクチャに基づき、重み又は他のパラメータ情報をプロセッサALUにロードする。少なくとも一実施例では、コード及び/又はデータ・ストレージ505の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ505の任意の部分は、1つ又は複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路の内部にあっても外部にあってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ505は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ505が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ、若しくは何らか他のタイプのストレージから構成されるかの選択は、オン・チップ対オフ・チップで利用可能なストレージ、実行される訓練及び/又は推論の機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
【0073】
少なくとも一実施例では、コード及び/又はデータ・ストレージ501と、コード及び/又はデータ・ストレージ505は、別々のストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ501と、コード及び/又はデータ・ストレージ505は、同じストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ501と、コード及び/又はデータ・ストレージ505は、部分的に同じストレージ構造で、部分的に別々のストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ501と、コード及び/又はデータ・ストレージ505との任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。
【0074】
少なくとも一実施例では、推論及び/又は訓練論理515は、訓練及び/又は推論コード(たとえばグラフ・コード)に少なくとも部分的に基づく、又はそれにより示される論理演算及び/又は算術演算を実行するための、整数及び/又は浮動小数点ユニットを含む1つ又は複数の算術論理演算ユニット(「ALU」)510を、限定することなく含んでもよく、その結果が、アクティブ化ストレージ520に記憶されるアクティブ化(たとえば、ニューラル・ネットワーク内の層若しくはニューロンからの出力値)を生成してもよく、これらは、コード及び/若しくはデータ・ストレージ501、並びに/又はコード及び/若しくはデータ・ストレージ505に記憶される入力/出力及び/又は重みパラメータのデータの関数である。少なくとも一実施例では、アクティブ化ストレージ520に記憶されるアクティブ化は、命令又は他のコードを実行したことに応答して、ALU510によって実行される線形代数計算及び又は行列ベースの計算に従って生成され、ここでコード及び/或いはデータ・ストレージ505並びに/又はコード及び/或いはデータ・ストレージ501に記憶された重み値は、バイアス値、勾配情報、運動量値などの他の値、又は他のパラメータ若しくはハイパーパラメータとともにオペランドとして使用され、これらのいずれか又はすべてが、コード及び/若しくはデータ・ストレージ505、又はコード及び/若しくはデータ・ストレージ501、又はオン・チップ若しくはオフ・チップの別のストレージに記憶されてもよい。
【0075】
少なくとも一実施例では、ALU510は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路内に含まれるが、別の実施例では、ALU510は、それらを使用するプロセッサ又は他のハードウェア論理デバイス若しくは回路の外部にあってもよい(たとえばコプロセッサ)。少なくとも一実施例では、ALU510は、プロセッサの実行ユニット内に含まれてもよく、又は同じプロセッサ内にあるか異なるタイプの異なるプロセッサ(たとえば、中央処理装置、グラフィックス・プロセッシング・ユニット、固定機能ユニットなど)の間で分散されているかのいずれかであるプロセッサの実行ユニットによりアクセス可能なALUバンク内に、他のやり方で含まれてもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ501、コード及び/又はデータ・ストレージ505、並びにアクティブ化ストレージ520は、同じプロセッサ又は他のハードウェア論理デバイス若しくは回路にあってもよく、別の実施例では、それらは異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路にあってもよく、或いは同じプロセッサ又は他のハードウェア論理デバイス若しくは回路と、異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路との何らかの組合せにあってもよい。少なくとも一実施例では、アクティブ化ストレージ520の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。さらに、推論及び/又は訓練コードが、プロセッサ又は他のハードウェア論理若しくは回路にアクセス可能な他のコードとともに記憶されてもよく、プロセッサのフェッチ、デコード、スケジューリング、実行、リタイア、及び/又は他の論理回路を使用してフェッチ及び/又は処理されてもよい。
【0076】
少なくとも一実施例では、アクティブ化ストレージ520は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、アクティブ化ストレージ520は、完全に又は部分的に、1つ若しくは複数のプロセッサ又は他の論理回路の内部にあってもよく、又は外部にあってもよい。少なくとも一実施例では、アクティブ化ストレージ520が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ、若しくは何らか他のタイプのストレージから構成されるかの選択は、オン・チップ対オフ・チップの利用可能なストレージ、実行される訓練及び/又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。少なくとも一実施例では、図5Aに示す推論及び/又は訓練論理515は、グーグルからのTensorflow(登録商標)処理ユニット、Graphcore(商標)からの推論処理ユニット(IPU:inference processing unit)、又はインテルコーポレーションからのNervana(登録商標)(たとえば「Lake Crest」)プロセッサなどの特定用途向け集積回路(「ASIC:application-specific integrated circuit」)と併せて使用されてもよい。少なくとも一実施例では、図5Aに示す推論及び/又は訓練論理515は、中央処理装置(「CPU」:central processing unit)ハードウェア、グラフィックス・プロセッシング・ユニット(「GPU」:graphics processing unit)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(「FPGA」:field programmable gate array)など他のハードウェアと併せて使用されてもよい。
【0077】
図5Bは、少なくとも1つ又は複数の実施例による、推論及び/又は訓練論理515を示す。少なくとも一実施例では、推論及び/又は訓練論理515は、ハードウェア論理を限定することなく含んでもよく、このハードウェア論理では、計算リソースが、ニューラル・ネットワーク内のニューロンの1つ若しくは複数の層に対応する重み値又は他の情報の専用のものであるか、又は他のやり方でそれらと併せてしか使用されない。少なくとも一実施例では、図5Bに示す推論及び/又は訓練論理515は、グーグルからのTensorflow(登録商標)処理ユニット、Graphcore(商標)からの推論処理ユニット(IPU)、又はインテルコーポレーションからのNervana(登録商標)(たとえば「Lake Crest」)プロセッサなどの特定用途向け集積回路(ASIC)と併せて使用されてもよい。少なくとも一実施例では、図5Bに示す推論及び/又は訓練論理515は、中央処理装置(CPU)ハードウェア、グラフィックス・プロセッシング・ユニット(「GPU」)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)など他のハードウェアと併せて使用されてもよい。少なくとも一実施例では、推論及び/又は訓練論理515は、限定することなく、コード及び/又はデータ・ストレージ501、並びにコード及び/又はデータ・ストレージ505を含み、これらを使用して、コード(たとえばグラフ・コード)、重み値、並びに/又はバイアス値、勾配情報、運動量値、及び/若しくは他のパラメータ若しくはハイパーパラメータ情報を含む他の情報を記憶してもよい。図5Bに示す少なくとも一実施例では、コード及び/又はデータ・ストレージ501並びにコード及び/又はデータ・ストレージ505のそれぞれは、それぞれ計算ハードウェア502及び計算ハードウェア506などの専用計算リソースに関連付けられる。少なくとも一実施例では、計算ハードウェア502及び計算ハードウェア506のそれぞれは、線形代数関数などの数学的関数を、それぞれコード及び/又はデータ・ストレージ501並びにコード及び/又はデータ・ストレージ505に記憶された情報に対してのみ実行する1つ又は複数のALUを備え、その結果は、アクティブ化ストレージ520に記憶される。
【0078】
少なくとも一実施例では、コード並びに/又はデータ・ストレージ501及び505のそれぞれ、並びに対応する計算ハードウェア502及び506は、ニューラル・ネットワークの異なる層にそれぞれ対応し、それにより、コード及び/又はデータ・ストレージ501並びに計算ハードウェア502との1つの「ストレージ/計算の対501/502」から結果的に生じるアクティブ化は、ニューラル・ネットワークの概念的組織化を反映させるために、コード及び/又はデータ・ストレージ505並びに計算ハードウェア506との「ストレージ/計算の対505/506」への入力として提供される。少なくとも一実施例では、ストレージ/計算の対501/502、及び505/506は、2つ以上のニューラル・ネットワークの層に対応してもよい。少なくとも一実施例では、ストレージ/計算の対501/502、及び505/506の後に、又はそれと並列に、追加のストレージ/計算の対(図示せず)が、推論及び/又は訓練論理515に含まれてもよい。
【0079】
データ・センタ
図6は、少なくとも一実施例が使用されてもよい例示的なデータ・センタ600を示す。少なくとも一実施例では、データ・センタ600は、データ・センタ・インフラストラクチャ層610、フレームワーク層620、ソフトウェア層630、及びアプリケーション層640を含む。
【0080】
図6に示すように、少なくとも一実施例では、データ・センタ・インフラストラクチャ層610は、リソース・オーケストレータ612と、グループ化済みコンピューティング・リソース614と、ノード・コンピューティング・リソース(「ノードC.R.」)616(1)~616(N)とを含んでもよく、ここで「N」は任意の正の整数を表す。少なくとも一実施例では、ノードC.R.616(1)~616(N)は、任意の数の中央処理装置(「CPU」)又は(アクセラレータ、フィールド・プログラマブル・ゲート・アレイ(FPGA)、グラフィックス・プロセッサなどを含む)他のプロセッサ、メモリ・デバイス(たとえば、ダイナミック読取り専用メモリ)、ストレージ・デバイス(たとえば、半導体ドライブ又はディスク・ドライブ)、ネットワーク入力/出力(「NW I/O」:network input/output)デバイス、ネットワーク・スイッチ、仮想機械(「VM」:virtual machine)、電源モジュール、及び冷却モジュールを含んでもよいが、これらに限定されない。少なくとも一実施例では、ノードC.R.616(1)~616(N)のうち1つ又は複数のノードC.R.は、上述したコンピューティング・リソースのうちの1つ又は複数を有するサーバであってもよい。
【0081】
少なくとも一実施例では、グループ化済みコンピューティング・リソース614は、1つ若しくは複数のラック(図示せず)内に収容されたノードC.R.の別々のグループ、又は様々なグラフィカル・ロケーション(同じく図示せず)においてデータ・センタに収容された多数のラックを含んでもよい。グループ化済みコンピューティング・リソース614内のノードC.R.の別々のグループは、1つ若しくは複数のワークロードをサポートするように構成又は配分されてもよいグループ化済みのコンピュート・リソース、ネットワーク・リソース、メモリ・リソース、又はストレージ・リソースを含んでもよい。少なくとも一実施例では、CPU又はプロセッサを含むいくつかのノードC.R.は、1つ又は複数のラック内でグループ化されて、1つ又は複数のワークロードをサポートするためのコンピュート・リソースが提供されてもよい。少なくとも一実施例では、1つ又は複数のラックはまた、任意の数の電源モジュール、冷却モジュール、及びネットワーク・スイッチを任意の組合せで含んでもよい。
【0082】
少なくとも一実施例では、リソース・オーケストレータ612は、1つ又は複数のノードC.R.616(1)~616(N)及び/若しくはグループ化済みコンピューティング・リソース614を構成してもよく、又は他のやり方で制御してもよい。少なくとも一実施例では、リソース・オーケストレータ612は、データ・センタ600用のソフトウェア設計インフラストラクチャ(「SDI」:software design infrastructure)管理エンティティを含んでもよい。少なくとも一実施例では、リソース・オーケストレータは、ハードウェア、ソフトウェア、又はこれらの何らかの組合せを含んでもよい。
【0083】
図6に示すように、少なくとも一実施例では、フレームワーク層620は、ジョブ・スケジューラ622、構成マネージャ624、リソース・マネージャ626、及び分配ファイル・システム628を含む。少なくとも一実施例では、フレームワーク層620は、ソフトウェア層630のソフトウェア632、及び/又はアプリケーション層640の1つ若しくは複数のアプリケーション642をサポートするためのフレームワークを含んでもよい。少なくとも一実施例では、ソフトウェア632又はアプリケーション642はそれぞれ、アマゾン・ウェブ・サービス、グーグル・クラウド、及びマイクロソフト・アジュールによって提供されるものなど、ウェブ・ベースのサービス・ソフトウェア又はアプリケーションを含んでもよい。少なくとも一実施例では、フレームワーク層620は、大規模なデータ処理(たとえば「ビック・データ」)のために分配ファイル・システム628を使用することができるApache Spark(商標)(以下「Spark」)など、無料でオープン・ソースのソフトウェア・ウェブ・アプリケーション・フレームワークの一種であってもよいが、これに限定されない。少なくとも一実施例では、ジョブ・スケジューラ622は、データ・センタ600の様々な層によってサポートされるワークロードのスケジューリングを容易にするために、Sparkドライバを含んでもよい。少なくとも一実施例では、構成マネージャ624は、ソフトウェア層630、並びに大規模なデータ処理をサポートするためのSpark及び分配ファイル・システム628を含むフレームワーク層620などの異なる層を構成することが可能であってもよい。少なくとも一実施例では、リソース・マネージャ626は、分配ファイル・システム628及びジョブ・スケジューラ622をサポートするようにマッピング若しくは配分されたクラスタ化済み又はグループ化済みのコンピューティング・リソースを管理することが可能であってもよい。少なくとも一実施例では、クラスタ化済み又はグループ化済みのコンピューティング・リソースは、データ・センタ・インフラストラクチャ層610にあるグループ化済みコンピューティング・リソース614を含んでもよい。少なくとも一実施例では、リソース・マネージャ626は、リソース・オーケストレータ612と連携して、これらのマッピング又は配分されたコンピューティング・リソースを管理してもよい。
【0084】
少なくとも一実施例では、ソフトウェア層630に含まれるソフトウェア632は、ノードC.R.616(1)~616(N)、グループ化済みコンピューティング・リソース614、及び/又はフレームワーク層620の分配ファイル・システム628のうちの少なくとも一部分によって使用されるソフトウェアを含んでもよい。1つ又は複数のタイプのソフトウェアは、インターネット・ウェブ・ページ検索ソフトウェア、電子メール・ウイルス・スキャン・ソフトウェア、データベース・ソフトウェア、及びストリーミング・ビデオ・コンテンツ・ソフトウェアを含んでもよいが、これらに限定されない。
【0085】
少なくとも一実施例では、アプリケーション層640に含まれるアプリケーション642は、ノードC.R.616(1)~616(N)、グループ化済みコンピューティング・リソース614、及び/又はフレームワーク層620の分配ファイル・システム628のうちの少なくとも一部分によって使用される1つ若しくは複数のタイプのアプリケーションを含んでもよい。1つ若しくは複数のタイプのアプリケーションは、任意の数のゲノム学アプリケーション、認識コンピュート、並びに訓練若しくは推論のソフトウェア、機械学習フレームワーク・ソフトウェア(たとえば、PyTorch、TensorFlow、Caffeなど)を含む機械学習アプリケーション、又は1つ若しくは複数の実施例と併せて使用される他の機械学習アプリケーションを含んでもよいが、これらに限定されない。
【0086】
少なくとも一実施例では、構成マネージャ624、リソース・マネージャ626、及びリソース・オーケストレータ612のうちのいずれかは、任意の技術的に実行可能なやり方で取得された任意の量及びタイプのデータに基づき、任意の数及びタイプの自己修正措置を実装してもよい。少なくとも一実施例では、自己修正措置は、データ・センタ600のデータ・センタ演算子が、不良の恐れのある構成を決定しないようにし、十分に利用されていない且つ/又は性能の低いデータ・センタの部分をなくせるようにしてもよい。
【0087】
少なくとも一実施例では、データ・センタ600は、1つ若しくは複数の機械学習モデルを訓練し、又は本明細書に記載の1つ若しくは複数の実施例による1つ若しくは複数の機械学習モデルを使用して情報を予測若しくは推論するためのツール、サービス、ソフトウェア、又は他のリソースを含んでもよい。たとえば、少なくとも一実施例では、機械学習モデルは、データ・センタ600に関して上述したソフトウェア及びコンピューティング・リソースを使用して、ニューラル・ネットワーク・アーキテクチャに従って重みパラメータを計算することによって、訓練されてもよい。少なくとも一実施例では、1つ又は複数のニューラル・ネットワークに対応する訓練済み機械学習モデルは、本明細書に記載の1つ又は複数の技法によって計算された重みパラメータを使用することにより、データ・センタ600に関して上述したリソースを使用して、情報を推論又は予測するために使用されてもよい。
【0088】
少なくとも一実施例では、データ・センタは、上述したリソースを使用して訓練及び/又は推論を実行するために、CPU、特定用途向け集積回路(ASIC)、GPU、FPGA、又は他のハードウェアを使用してもよい。さらに、上述した1つ又は複数のソフトウェア及び/又はハードウェアのリソースは、画像認識、音声認識、又は他の人工知能サービスなどの情報の訓練又は推論の実行を、ユーザが行えるようにするためのサービスとして構成されてもよい。
【0089】
推論及び/又は訓練論理515を使用して、1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作が実行される。推論及び/又は訓練論理515に関する詳細事項は、図5A及び/又は図5Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理515は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図6のシステムにおいて使用されてもよい。
【0090】
こうした構成要素を使用して、ネットワーク訓練プロセスにおける障害事例を模倣した合成データを生成することができ、これは、過剰適合を回避するために合成データの量を制限しながらネットワークのパフォーマンスを向上させるのに役立つ可能性がある。
【0091】
コンピュータ・システム
図7は、例示的なコンピュータ・システムを示すブロック図であり、このコンピュータ・システムは、少なくとも一実施例による、命令を実行するための実行ユニットを含んでもよいプロセッサとともに形成された、相互接続されたデバイス及び構成要素、システム・オン・チップ(SoC)、又はこれら700の何らかの組合せを有するシステムであってもよい。少なくとも一実施例では、コンピュータ・システム700は、本明細書に記載の実施例などにおいて本開示に従ってデータを処理するためのアルゴリズムを実行する論理を含む実行ユニットを使用するための、プロセッサ702などの構成要素を、限定することなく含んでもよい。少なくとも一実施例では、コンピュータ・システム700は、カリフォルニア州サンタクララのインテルコーポレーションから入手可能なPENTIUM(登録商標)プロセッサ・ファミリー、Xeon(商標)、Itanium(登録商標)、XScale(商標)及び/又はStrongARM(商標)、Intel(登録商標)Core(商標)、又はIntel(登録商標)Nervana(商標)マイクロプロセッサなどのプロセッサを含んでもよいが、(他のマイクロプロセッサ、エンジニアリング・ワークステーション、セット・トップ・ボックスなどを有するPCを含め)他のシステムが使用されてもよい。少なくとも一実施例では、コンピュータ・システム700は、ワシントン州、レドモンドのマイクロソフトコーポレーションから入手可能なWINDOWS(登録商標)のオペレーティング・システムのあるバージョンを実行してもよいが、他のオペレーティング・システム(たとえば、UNIX(登録商標)及びLinux(登録商標))、組み込みソフトウェア、及び/又はグラフィカル・ユーザ・インターフェースが使用されてもよい。
【0092】
実施例は、携帯型デバイス及び組み込みアプリケーションなど、他のデバイスで使用されてもよい。携帯型デバイスのいくつかの実例は、セルラー・フォン、インターネット・プロトコル・デバイス、デジタル・カメラ、パーソナル・デジタル・アシスタント(「PDA」:personal digital assistants)、及び携帯型PCを含む。少なくとも一実施例では、組み込みアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ(「DSP」:digital signal processor)、システム・オン・チップ、ネットワーク・コンピュータ(「NetPC」:network computers)、セット・トップ・ボックス、ネットワーク・ハブ、広域ネットワーク(「WAN」:wide area network)スイッチ、又は少なくとも一実施例による1つ又は複数の命令を実行することができる任意の他のシステムを含んでもよい。
【0093】
少なくとも一実施例では、コンピュータ・システム700は、限定することなくプロセッサ702を含んでもよく、このプロセッサ702は限定することなく、本明細書に記載の技法による機械学習モデルの訓練及び/又は推論を実行するための1つ又は複数の実行ユニット708を含んでもよい。少なくとも一実施例では、コンピュータ・システム700は、シングル・プロセッサのデスクトップ又はサーバ・システムであるが、別の実施例では、コンピュータ・システム700はマルチプロセッサ・システムであってもよい。少なくとも一実施例では、プロセッサ702は、限定することなく、複合命令セット・コンピュータ(「CISC」:complex instruction set computer)マイクロプロセッサ、縮小命令セット・コンピューティング(「RISC」)マイクロプロセッサ、超長命令語(「VLIW」)マイクロプロセッサ、命令セットの組合せを実装するプロセッサ、又は任意の他のプロセッサ・デバイス、たとえばデジタル信号プロセッサなどを含んでもよい。少なくとも一実施例では、プロセッサ702は、プロセッサ・バス710に結合されてもよく、このプロセッサ・バスは、プロセッサ702とコンピュータ・システム700内の他の構成要素との間でデータ信号を送信してもよい。
【0094】
少なくとも一実施例では、プロセッサ702は、限定することなく、レベル1(「L1」)の内部キャッシュ・メモリ(「キャッシュ」)704を含んでもよい。少なくとも一実施例では、プロセッサ702は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ702の外部にあってもよい。他の実施例は、特定の実装形態及び必要性に応じて、内部キャッシュと外部キャッシュの両方の組合せも含んでよい。少なくとも一実施例では、レジスタ・ファイル706は、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタを限定することなく含む様々レジスタに、異なるタイプのデータを記憶してもよい。
【0095】
少なくとも一実施例では、整数及び浮動小数点の演算を実行するための論理を限定することなく含む実行ユニット708も、プロセッサ702にある。少なくとも一実施例では、プロセッサ702は、ある一定のマクロ命令のためのマイクロコードを記憶するマイクロコード(「uコード」)読取り専用メモリ(「ROM」:read only memory)も含んでよい。少なくとも一実施例では、実行ユニット708は、パック命令セット709に対処する論理を含んでもよい。少なくとも一実施例では、パック命令セット709を、命令を実行する関連回路とともに汎用プロセッサの命令セットに含めることにより、多くのマルチメディア・アプリケーションによって使用される演算を、汎用プロセッサ702のパック・データを使用して実行することができる。1つ又は複数の実施例では、プロセッサのデータ・バスの全幅を使用してパック・データの演算を実行することによって、多くのマルチメディア・アプリケーションを加速し、より効率的に実行することができ、これにより、1度に1つのデータ要素に対して1つ又は複数の演算を実行するためにプロセッサのデータ・バス間でより小さい単位のデータを転送する必要をなくすことができる。
【0096】
少なくとも一実施例では、実行ユニット708はまた、マイクロコントローラ、組み込みプロセッサ、グラフィックス・デバイス、DSP、及び他のタイプの論理回路において使用されてもよい。少なくとも一実施例では、コンピュータ・システム700は、限定することなくメモリ720を含んでもよい。少なくとも一実施例では、メモリ720は、ダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイス、スタティック・ランダム・アクセス・メモリ(「SRAM」)デバイス、フラッシュ・メモリ・デバイス、又は他のメモリ・デバイスとして実装されてもよい。少なくとも一実施例では、メモリ720は、プロセッサ702によって実行されてもよいデータ信号によって表される命令719、及び/又はデータ721を記憶してもよい。
【0097】
少なくとも一実施例では、システム論理チップが、プロセッサ・バス710及びメモリ720に結合されてもよい。少なくとも一実施例では、システム論理チップは、限定することなく、メモリ・コントローラ・ハブ(「MCH」:memory controller hub)716を含んでもよく、プロセッサ702は、プロセッサ・バス710を介してMCH716と通信してもよい。少なくとも一実施例では、MCH716は、命令及びデータを記憶するため、及びグラフィックス・コマンド、データ、及びテクスチャを記憶するために、高帯域幅メモリ経路718をメモリ720に提供してもよい。少なくとも一実施例では、MCH716は、プロセッサ702と、メモリ720と、コンピュータ・システム700の他の構成要素との間でデータ信号を導き、プロセッサ・バス710と、メモリ720と、システムI/Oインターフェース722との間でデータ信号をブリッジしてもよい。少なくとも一実施例では、システム論理チップは、グラフィックス・コントローラに結合するためのグラフィックス・ポートを提供してもよい。少なくとも一実施例では、MCH716は、高帯域幅メモリ経路718を介してメモリ720に結合されてもよく、グラフィックス/ビデオカード712は、アクセラレーテッド・グラフィックス・ポート(「AGP」:Accelerated Graphics Port)相互接続714を介してMCH716に結合されてもよい。
【0098】
少なくとも一実施例では、コンピュータ・システム700は、MCH716をI/Oコントローラ・ハブ(「ICH」:I/O controller hub)730に結合するためのプロプライエタリ・ハブ・インターフェース・バスであるシステムI/O722を使用してもよい。少なくとも一実施例では、ICH730は、ローカルのI/Oバスを介していくつかのI/Oデバイスに直接接続を提供してもよい。少なくとも一実施例では、ローカルI/Oバスは、周辺装置をメモリ720、チップセット、及びプロセッサ702に接続するための高速I/Oバスを、限定することなく含んでもよい。例としては、オーディオ・コントローラ729、ファームウェア・ハブ(「フラッシュBIOS」)728、ワイヤレス・トランシーバ726、データ・ストレージ724、ユーザ入力及びキーボードのインターフェース725を含むレガシーI/Oコントローラ723、ユニバーサル・シリアル・バス(「USB」:Universal Serial Bus)などのシリアル拡張ポート727、及びネットワーク・コントローラ734が、限定することなく含まれてもよい。データ・ストレージ724は、ハード・ディスク・ドライブ、フロッピー(登録商標)・ディスク・ドライブ、CD-ROMデバイス、フラッシュ・メモリ・デバイス、又は他の大容量ストレージ・デバイスを備えてもよい。
【0099】
少なくとも一実施例では、図7は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、一方他の実施例では、図7は例示的なシステム・オン・チップ(「SoC」)を示してもよい。少なくとも一実施例では、デバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、コンピュータ・システム700の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL:compute express link)相互接続を使用して相互接続されてもよい。
【0100】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理515が使用される。推論及び/又は訓練論理515に関する詳細事項は、図5A及び/又は図5Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理515は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図7のシステムにおいて使用されてもよい。
【0101】
こうした構成要素を使用して、ネットワーク訓練プロセスにおける障害事例を模倣した合成データを生成することができ、これは、過剰適合を回避するために合成データの量を制限しながらネットワークのパフォーマンスを向上させるのに役立つ可能性がある。
【0102】
図8は、少なくとも一実施例による、プロセッサ810を利用するための電子デバイス800を示すブロック図である。少なくとも一実施例では、電子デバイス800は、たとえば限定することなく、ノートブック、タワー・サーバ、ラック・サーバ、ブレード・サーバ、ラップトップ、デスクトップ、タブレット、モバイル・デバイス、電話、組み込みコンピュータ、又は任意の他の好適な電子デバイスであってもよい。
【0103】
少なくとも一実施例では、システム800は、任意の好適な数又は種類の構成要素、周辺装置、モジュール、若しくはデバイスに通信可能に結合されたプロセッサ810を、限定することなく含んでもよい。少なくとも一実施例では、プロセッサ810は、1°Cバス、システム・マネージメント・バス(「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)バスなどのバス若しくはインターフェースを使用して結合される。少なくとも一実施例では、図8は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、一方他の実施例では、図8は例示的なシステム・オン・チップ(「SoC」)を示してもよい。少なくとも一実施例では、図8に示すデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、図8の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL)相互接続を使用して相互接続されてもよい。
【0104】
少なくとも一実施例では、図8は、ディスプレイ824、タッチ画面825、タッチ・パッド830、近距離無線通信ユニット(「NFC」:Near Field Communications unit)845、センサ・ハブ840、熱センサ846、エクスプレス・チップセット(「EC」:Express Chipset)835、トラステッド・プラットフォーム・モジュール(「TPM」:Trusted Platform Module)838、BIOS/ファームウェア/フラッシュ・メモリ(「BIOS、FWフラッシュ」:BIOS/firmware/flash memory)822、DSP860、ソリッド・ステート・ディスク(「SSD」:Solid State Disk)若しくはハード・ディスク・ドライブ(「HDD」:Hard Disk Drive)などのドライブ820、ワイヤレス・ローカル・エリア・ネットワーク・ユニット(「WLAN」:wireless local area network unit)850、Bluetoothユニット852、ワイヤレス広域ネットワーク・ユニット(「WWAN」:Wireless Wide Area Network unit)856、全地球測位システム(GPS:Global Positioning System)855、USB3.0カメラなどのカメラ(「USB3.0カメラ」)854、及び/又は、たとえばLPDDR3規格に実装された低電力ダブル・データ・レート(「LPDDR」:Low Power Double Data Rate)メモリ・ユニット(「LPDDR3」)815を含んでもよい。これらの構成要素は、それぞれ任意の好適なやり方で実装されてもよい。
【0105】
少なくとも一実施例では、上述した構成要素を介して、他の構成要素がプロセッサ810に通信可能に結合されてもよい。少なくとも一実施例では、加速度計841、周囲光センサ(「ALS」:Ambient Light Sensor)842、コンパス843、及びジャイロスコープ844が、センサ・ハブ840に通信可能に結合されてもよい。少なくとも一実施例では、熱センサ839、ファン837、キーボード846、及びタッチ・パッド830が、EC835に通信可能に結合されてもよい。少なくとも一実施例では、スピーカ863、ヘッドフォン864、及びマイクロフォン(「mic」)865が、オーディオ・ユニット(オーディオ・コーデック及びクラスdアンプ)862に通信可能に結合されてもよく、このオーディオ・ユニットが、DSP860に通信可能に結合されてもよい。少なくとも一実施例では、オーディオ・ユニット864は、たとえば限定することなく、オーディオ・コーダ/デコーダ(「コーデック」)及びクラスDアンプリファイアを含んでもよい。少なくとも一実施例では、SIMカード(「SIM」)857は、WWANユニット856に通信可能に結合されてもよい。少なくとも一実施例では、WLANユニット850及びBluetoothユニット852などの構成要素、並びにWWANユニット856は、次世代フォーム・ファクタ(「NGFF」:Next Generation Form Factor)に実装されてもよい。
【0106】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理515が使用される。推論及び/又は訓練論理515に関する詳細事項は、図5A及び/又は図5Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理515は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図8のシステムにおいて使用されてもよい。
【0107】
こうした構成要素を使用して、ネットワーク訓練プロセスにおける障害事例を模倣した合成データを生成することができ、これは、過剰適合を回避するために合成データの量を制限しながらネットワークのパフォーマンスを向上させるのに役立つ可能性がある。
【0108】
図9は、少なくとも一実例による処理システムのブロック図である。少なくとも一実施例では、システム900は、1つ又は複数のプロセッサ902、及び1つ又は複数のグラフィックス・プロセッサ908を含み、単一プロセッサのデスクトップ・システム、マルチプロセッサのワークステーション・システム、又は多数のプロセッサ902若しくはプロセッサ・コア907を有するサーバ・システムであってもよい。少なくとも一実施例では、システム900は、モバイル・デバイス、携帯型デバイス、又は組み込みデバイスで使用するためのシステム・オン・チップ(SoC)集積回路内に組み込まれた処理プラットフォームである。
【0109】
少なくとも一実施例では、システム900は、サーバ・ベースのゲーミング・プラットフォーム、ゲーム及びメディアのコンソールを含むゲーム・コンソール、モバイル・ゲーミング・コンソール、携帯型ゲーム・コンソール、若しくはオンライン・ゲーム・コンソールを含んでもよく、又はそれらに組み込まれてもよい。少なくとも一実施例では、システム900は、モバイル・フォン、スマート・フォン、タブレット・コンピューティング・デバイス、又はモバイル・インターネット・デバイスである。少なくとも一実施例では、処理システム900はまた、スマート・ウォッチ・ウェアラブル・デバイス、スマート・アイウェア・デバイス、拡張現実デバイス、若しくは仮想現実デバイスなどのウェアラブル・デバイスを含んでもよく、それらに結合されてもよく、又はそれらの中に一体化されてもよい。少なくとも一実施例では、処理システム900は、1つ又は複数のプロセッサ902と、1つ又は複数のグラフィックス・プロセッサ908によって生成されるグラフィカル・インターフェースとを有するテレビ又はセット・トップ・ボックス・デバイスである。
【0110】
少なくとも一実施例では、1つ又は複数のプロセッサ902はそれぞれ、実行されたときにシステム及びユーザ・ソフトウェアのための動作を実行する命令を処理するための1つ又は複数のプロセッサ・コア907を含む。少なくとも一実施例では、1つ又は複数のプロセッサ・コア907のそれぞれは、特定の命令セット909を処理するように構成される。少なくとも一実施例では、命令セット909は、複合命令セット・コンピューティング(CISC)、縮小命令セット・コンピューティング(RISC)、又は超長命令語(VLIW)を介したコンピューティングを容易にしてもよい。少なくとも一実施例では、プロセッサ・コア907はそれぞれ、異なる命令セット909を処理してもよく、この命令セットは、他の命令セットのエミュレーションを容易にする命令を含んでもよい。少なくとも一実施例では、プロセッサ・コア907はまた、デジタル信号プロセッサ(DSP)などの他の処理デバイスを含んでもよい。
【0111】
少なくとも一実施例では、プロセッサ902はキャッシュ・メモリ904を含む。少なくとも一実施例では、プロセッサ902は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ902の様々な構成要素間で共有される。少なくとも一実施例では、プロセッサ902はまた、外部キャッシュ(たとえば、レベル3(L3)キャッシュ又はラスト・レベル・キャッシュ(LLC))(図示せず)を使用し、このキャッシュは、知られているキャッシュ・コヒーレンス技法を使用して、プロセッサ・コア907間で共有されてもよい。少なくとも一実施例では、さらにレジスタ・ファイル906がプロセッサ902に含まれ、このレジスタ・ファイルは、異なるタイプのデータを記憶するための異なるタイプのレジスタ(たとえば、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタ)を含んでもよい。少なくとも一実施例では、レジスタ・ファイル906は、汎用レジスタ又は他のレジスタを含んでもよい。
【0112】
少なくとも一実施例では、1つ又は複数のプロセッサ902は、1つ又は複数のインターフェース・バス910に結合されて、アドレス、データ、又は制御信号などの通信信号を、プロセッサ902とシステム900内の他の構成要素との間で送信する。少なくとも一実施例では、インターフェース・バス910は、一実施例では、ダイレクト・メディア・インターフェース(DMI)バスのバージョンなどのプロセッサ・バスとすることができる。少なくとも一実施例では、インターフェース910は、DMIバスに限定されず、1つ又は複数のペリフェラル・コンポーネント・インターコネクト・バス(たとえば、PCI、PCIエクスプレス)、メモリ・バス、又は他のタイプのインターフェース・バスを含んでもよい。少なくとも一実施例では、プロセッサ902は、統合メモリ・コントローラ916、及びプラットフォーム・コントローラ・ハブ930を含む。少なくとも一実施例では、メモリ・コントローラ916は、メモリ・デバイスとシステム900の他の構成要素との間の通信を容易にし、一方でプラットフォーム・コントローラ・ハブ(PCH)930は、ローカルI/Oバスを介してI/Oデバイスへの接続を提供する。
【0113】
少なくとも一実施例では、メモリ・デバイス920は、ダイナミック・ランダム・アクセス・メモリ(DRAM)デバイス、スタティック・ランダム・アクセス・メモリ(SRAM)デバイス、フラッシュ・メモリ・デバイス、相変化メモリ・デバイス、又はプロセス・メモリとしての役割を果たすのに好適な性能を有する何らかの他のメモリ・デバイスとすることができる。少なくとも一実施例では、メモリ・デバイス920は、システム900のためのシステム・メモリとして動作して、1つ又は複数のプロセッサ902がアプリケーション若しくはプロセスを実行するときに使用するためのデータ922及び命令921を記憶することができる。少なくとも一実施例では、メモリ・コントローラ916はまた、任意選択の外部グラフィックス・プロセッサ912と結合しており、このグラフィックス・プロセッサは、プロセッサ902内の1つ又は複数のグラフィックス・プロセッサ908と通信して、グラフィックス及びメディアの動作を実行してもよい。少なくとも一実施例では、ディスプレイ・デバイス911は、プロセッサ902に接続することができる。少なくとも一実施例では、ディスプレイ・デバイス911は、モバイル電子デバイス又はラップトップ・デバイスのような内部ディスプレイ・デバイス、又はディスプレイ・インターフェース(たとえば、ディスプレイ・ポートなど)を介して取り付けられる外部ディスプレイ・デバイスのうちの1つ又は複数を含むことができる。少なくとも一実施例では、ディスプレイ・デバイス911は、仮想現実(VR)アプリケーション又は拡張現実(AR)アプリケーションで使用するための立体ディスプレイ・デバイスなどの頭部装着型ディスプレイ(HMD)を含むことができる。
【0114】
少なくとも一実施例では、プラットフォーム・コントローラ・ハブ930は、周辺装置が高速I/Oバスを介してメモリ・デバイス920及びプロセッサ902に接続できるようにする。少なくとも一実施例では、I/O周辺装置は、オーディオ・コントローラ946、ネットワーク・コントローラ934、ファームウェア・インターフェース928、ワイヤレス・トランシーバ926、タッチ・センサ925、データ・ストレージ・デバイス924(たとえば、ハード・ディスク・ドライブ、フラッシュ・メモリなど)を含むが、これらに限定されない。少なくとも一実施例では、データ・ストレージ・デバイス924は、ストレージ・インターフェース(たとえば、SATA)を介して、又はペリフェラル・コンポーネント・インターコネクト・バス(たとえば、PCI、PCIエクスプレス)などのペリフェラル・バスを介して、接続することができる。少なくとも一実施例では、タッチ・センサ925は、タッチ画面センサ、圧力センサ、又は指紋センサを含むことができる。少なくとも一実施例では、ワイヤレス・トランシーバ926は、WiFiトランシーバ、Bluetoothトランシーバ、又は3G、4G、若しくはLong Term Evolution(LTE)トランシーバなどのモバイル・ネットワーク・トランシーバとすることができる。少なくとも一実施例では、ファームウェア・インターフェース928は、システム・ファームウェアとの通信を可能にし、たとえば、ユニファイド・エクステンシブル・ファームウェア・インターフェース(UEFI)とすることができる。少なくとも一実施例では、ネットワーク・コントローラ934は、有線ネットワークへのネットワーク接続を可能にすることができる。少なくとも一実施例では、高性能ネットワーク・コントローラ(図示せず)は、インターフェース・バス910と結合する。少なくとも一実施例では、オーディオ・コントローラ946は、多チャネル・ハイ・デフィニション・オーディオ・コントローラである。少なくとも一実施例では、システム900は、レガシー(たとえば、パーソナル・システム2(PS/2))デバイスをシステムに結合するための任意選択のレガシーI/Oコントローラ940を含む。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ930は、キーボードとマウス943の組合せ、カメラ944、又は他のUSB入力デバイスなど、1つ又は複数のユニバーサル・シリアル・バス(USB)コントローラ942の接続入力デバイスにも接続することができる。
【0115】
少なくとも一実施例では、メモリ・コントローラ916及びプラットフォーム・コントローラ・ハブ930のインスタンスは、外部グラフィックス・プロセッサ912などの個別の外部グラフィックス・プロセッサに一体化されてもよい。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ930及び/又はメモリ・コントローラ916は、1つ又は複数のプロセッサ902の外部にあってもよい。たとえば、少なくとも一実施例では、システム900は、外部のメモリ・コントローラ916及びプラットフォーム・コントローラ・ハブ930を含むことができ、これらは、プロセッサ902と通信するシステム・チップセット内のメモリ・コントローラ・ハブ及び周辺装置コントローラ・ハブとして構成されてもよい。
【0116】
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理515が使用される。推論及び/又は訓練論理515に関する詳細事項は、図5A及び/又は図5Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理515の一部又はすべてが、グラフィックス・プロセッサ912に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、グラフィックス・プロセッサに具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図5A又は図5Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサのALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示している又は図示せず)に記憶されてもよい。
【0117】
こうした構成要素を使用して、ネットワーク訓練プロセスにおける障害事例を模倣した合成データを生成することができ、これは、過剰適合を回避するために合成データの量を制限しながらネットワークのパフォーマンスを向上させるのに役立つ可能性がある。
【0118】
図10は、少なくとも一実施例による、1つ又は複数のプロセッサ・コア1002A~1002N、統合メモリ・コントローラ1014、及び統合グラフィックス・プロセッサ1008を有するプロセッサ1000のブロック図である。少なくとも一実施例では、プロセッサ1000は、破線の四角によって表される追加コア1002Nを含むそれ以下の数の追加コアを含むことができる。少なくとも一実施例では、プロセッサ・コア1002A~1002Nのそれぞれは、1つ又は複数の内部キャッシュ・ユニット1004A~1004Nを含む。少なくとも一実施例では、各プロセッサ・コアはまた、1つ又は複数の共有キャッシュ・ユニット1006にアクセスできる。
【0119】
少なくとも一実施例では、内部キャッシュ・ユニット1004A~1004N、及び共有キャッシュ・ユニット1006は、プロセッサ1000内のキャッシュ・メモリ階層を表す。少なくとも一実施例では、キャッシュ・メモリ・ユニット1004A~1004Nは、各プロセッサ・コア内の命令及びデータのキャッシュの少なくとも1つのレベル、並びにレベル2(L2)、レベル3(L3)、レベル4(L4)などの共有中間レベル・キャッシュの1つ又は複数のレベル、又はキャッシュの他のレベルを含んでもよく、ここで外部メモリの前の最高レベルのキャッシュは、LLCとして分類される。少なくとも一実施例では、キャッシュ・コヒーレンス論理は、様々なキャッシュ・ユニット1006及び1004A~1004N間でコヒーレンスを維持する。
【0120】
少なくとも一実施例では、プロセッサ1000はまた、1つ又は複数のバス・コントローラ・ユニット1016とシステム・エージェント・コア1010のセットを含んでもよい。少なくとも一実施例では、1つ又は複数のバス・コントローラ・ユニット1016は、1つ又は複数のPCI若しくはPCIエクスプレス・バスなどのペリフェラル・バスのセットを管理する。少なくとも一実施例では、システム・エージェント・コア1010は、様々なプロセッサ構成要素のための管理機能を提供する。少なくとも一実施例では、システム・エージェント・コア1010は、様々な外部メモリ・デバイス(図示せず)へのアクセスを管理するための1つ又は複数の統合メモリ・コントローラ1014を含む。
【0121】
少なくとも一実施例では、プロセッサ・コア1002A~1002Nの1つ又は複数は、同時マルチスレッディングのサポートを含む。少なくとも一実施例では、システム・エージェント・コア1010は、マルチスレッドの処理中にコア1002A~1002Nを調整し動作させるための構成要素を含む。少なくとも一実施例では、システム・エージェント・コア1010はさらに、電力制御ユニット(PCU)を含んでもよく、このユニットは、プロセッサ・コア1002A~1002N及びグラフィックス・プロセッサ1008の1つ又は複数の電力状態を調整するための論理及び構成要素を含む。
【0122】
少なくとも一実施例では、プロセッサ1000はさらに、グラフィックス処理動作を実行するためのグラフィックス・プロセッサ1008を含む。少なくとも一実施例では、グラフィックス・プロセッサ1008は、共有キャッシュ・ユニット1006と、1つ又は複数の統合メモリ・コントローラ1014を含むシステム・エージェント・コア1010とに結合する。少なくとも一実施例では、システム・エージェント・コア1010はまた、1つ又は複数の結合されたディスプレイに対してグラフィックス・プロセッサの出力を行わせるためのディスプレイ・コントローラ1011を含む。少なくとも一実施例では、ディスプレイ・コントローラ1011はまた、少なくとも1つの相互接続を介してグラフィックス・プロセッサ1008に結合された別個のモジュールであってもよく、又はグラフィックス・プロセッサ1008内に一体化されていてもよい。
【0123】
少なくとも一実施例では、プロセッサ1000の内部構成要素を結合するために、リング・ベースの相互接続ユニット1012が使用される。少なくとも一実施例では、ポイントツーポイント相互接続、スイッチ相互接続、又は他の技法などの代替的な相互接続ユニットが使用されてもよい。少なくとも一実施例では、グラフィックス・プロセッサ1008は、I/Oリンク1013を介してリング相互接続1012と結合する。
【0124】
少なくとも一実施例では、I/Oリンク1013は、様々なプロセッサ構成要素と、eDRAMモジュールなどの高性能組み込みメモリ・モジュール1018との間の通信を容易にするオン・パッケージI/O相互接続を含む多様なI/O相互接続のうちの少なくとも1つを表す。少なくとも一実施例では、プロセッサ・コア1002A~1002Nのそれぞれ及びグラフィックス・プロセッサ1008は、共有ラスト・レベル・キャッシュとして組み込みメモリ・モジュール1018を使用する。
【0125】
少なくとも一実施例では、プロセッサ・コア1002A~1002Nは、共通の命令セット・アーキテクチャを実行する同種のコアである。少なくとも一実施例では、プロセッサ・コア1002A~1002Nは、命令セット・アーキテクチャ(ISA)の観点から見れば異種であり、ここでプロセッサ・コア1002A~1002Nのうちの1つ又は複数は、共通の命令セットを実行するが、プロセッサ・コア1002A~1002Nのうちの1つ又は複数の他のコアは、共通の命令セットのサブセット、又は異なる命令セットを実行する。少なくとも一実施例では、プロセッサ・コア1002A~1002Nは、マイクロ・アーキテクチャの観点から見れば異種であり、ここで電力消費量が相対的に高い1つ又は複数のコアは、電力消費量がより低い1つ又は複数のコアと結合する。少なくとも一実施例では、プロセッサ1000は、1つ又は複数のチップ上に、又はSoC集積回路として実装することができる。
【0126】
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理515が使用される。推論及び/又は訓練論理515に関する詳細事項は、図5A及び/又は図5Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理515の一部又はすべてが、プロセッサ1000に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、グラフィックス・プロセッサ712、グラフィックス・コア1002A~1002N、又は図10の他の構成要素に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図7A又は図7Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ1200のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示している又は図示せず)に記憶されてもよい。
【0127】
こうした構成要素を使用して、ネットワーク訓練プロセスにおける障害事例を模倣した合成データを生成することができ、これは、過剰適合を回避するために合成データの量を制限しながらネットワークのパフォーマンスを向上させるのに役立つ可能性がある。
【0128】
仮想化コンピューティング・プラットフォーム
図11は、少なくとも一実施例による、画像処理及び推論パイプラインを生成及び導入するプロセス1100の実例データ・フロー図である。少なくとも一実施例では、プロセス1100は、1つ又は複数の施設1102において、撮像デバイス、処理デバイス、及び/又は他のタイプのデバイスとともに使用するために導入されてもよい。プロセス1100は、訓練システム1104内及び/又は導入システム1106内で実行されてもよい。少なくとも一実施例では、訓練システム1104を使用して、導入システム1106で使用するための機械学習モデル(たとえば、ニューラル・ネットワーク、物体検出アルゴリズム、コンピュータ・ビジョン・アルゴリズムなど)の訓練、導入、及び実装が実行されてもよい。少なくとも一実施例では、導入システム1106は、処理及び計算のリソースを分散コンピューティング環境間でオフロードするように構成されて、施設1102におけるインフラストラクチャ要件を低減してもよい。少なくとも一実施例では、パイプライン内の1つ又は複数のアプリケーションは、アプリケーションの実行中に導入システム1106のサービス(たとえば、推論、仮想化、計算、AIなど)を使用又はコールしてもよい。
【0129】
少なくとも一実施例では、先進処理及び推論パイプラインで使用されるアプリケーションのいくつかは、1つ又は複数の処理ステップを実行するために機械学習モデル又は他のAIを使用してもよい。少なくとも一実施例では、機械学習モデルは、施設1102で生成された(且つ、施設1102において1つ若しくは複数の画像アーカイブ及び通信システム(PACS)サーバに記憶された)(撮像データなどの)データ1108を使用して、施設1102において訓練されてもよく、1つ又は複数の別の施設からの撮像若しくはシーケンシングのデータ1108を使用して訓練されてもよく、又はそれらの組合せであってもよい。少なくとも一実施例では、訓練システム1104を使用して、導入システム1106向けの実用的で導入可能な機械学習モデルを生成するためのアプリケーション、サービス、及び/又は他のリソースが提供されてもよい。
【0130】
少なくとも一実施例では、モデル・レジストリ1124は、バージョン管理及び物体メタデータをサポートすることができる物体ストレージによってバックアップされてもよい。少なくとも一実施例では、物体ストレージには、たとえば、クラウド・プラットフォーム内から、クラウド・ストレージ(たとえば、図12のクラウド1226)の互換性アプリケーション・プログラミング・インターフェース(API)を介してアクセス可能であってもよい。少なくとも一実施例では、モデル・レジストリ1124内の機械学習モデルは、システムの開発者又はパートナがAPIと対話することによって、アップロード、リスト化、修正、又は削除されてもよい。少なくとも一実施例では、APIは、適切な資格を有するユーザがモデルをアプリケーションに関連付けできるようにする方法へのアクセスを提供してもよく、それによりアプリケーションのコンテナ化されたインスタンスを実行することの一部として、モデルを実行できるようになる。
【0131】
少なくとも一実施例では、訓練パイプライン1204(図12)は、施設1102が独自の機械学習モデルを訓練している状況、又は最適化若しくは更新される必要がある既存の機械学習モデルを有している状況を含んでもよい。少なくとも一実施例では、撮像デバイス、シーケンシング・デバイス、及び/又は他のタイプのデバイスによって生成された撮像データ1108が受信されてもよい。少なくとも一実施例では、撮像データ1108が受信されると、機械学習モデルのグラウンド・トゥルース・データとして使用されることになる撮像データ1108に対応するアノテーションの生成を支援するために、AI支援アノテーション1110が使用されてもよい。少なくとも一実施例では、AI支援アノテーション1110は、1つ又は複数の機械学習モデル(たとえば、畳み込みニューラル・ネットワーク(CNN))を含んでもよく、これは(たとえば特定のデバイスからの)特定のタイプの撮像データ1108に対応するアノテーションを生成するように訓練されてもよい。少なくとも一実施例では、次いでAI支援アノテーション1110は、グラウンド・トゥルース・データを生成するために直接使用されてもよく、又はアノテーション・ツールを使用して調節若しくは微調整されてもよい。少なくとも一実施例では、AI支援アノテーション1110、ラベル付きクリニック・データ1112、又はこれらの組合せが、機械学習モデルを訓練するためのグラウンド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、訓練済み機械学習モデルは出力モデル1116と呼ばれてもよく、本明細書に記載の導入システム1106によって使用されてもよい。
【0132】
少なくとも一実施例では、訓練パイプライン2404(図12)は、施設1102が、導入システム1106内の1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実行する際に使用する機械学習モデルを必要としているが、施設1102は現在そのような機械学習モデルを有していないかもしれない(又はそうした目的のために最適化された、効率よい、若しくは有効なモデルを有していないかもしれない)という状況を含んでもよい。少なくとも一実施例では、既存の機械学習モデルが、モデル・レジストリ1124から選択されてもよい。少なくとも一実施例では、モデル・レジストリ1124は、撮像データに対して様々な異なる推論タスクを実行するように訓練された機械学習モデルを含んでもよい。少なくとも一実施例では、モデル・レジストリ1124の機械学習モデルは、施設1102とは異なる施設(たとえば、離れた場所にある施設)からの撮像データについて訓練されたものであってもよい。少なくとも一実施例では、機械学習モデルは、1つの場所、2つの場所、又は任意の数の場所からの撮像データについて訓練されたものであってもよい。少なくとも一実施例では、特定の場所からの撮像データについて訓練されるとき、訓練は、その場所で行われてもよく、又は少なくとも、撮像データの機密性を保護するようなやり方で、若しくは撮像データが構外へ転送されるのを制限するようなやり方で行われてもよい。少なくとも一実施例では、1つの場所においてモデルが訓練されると、又は部分的に訓練されると、機械学習モデルはモデル・レジストリ1124に加えられてもよい。少なくとも一実施例では、次いで機械学習モデルは、任意の数の他の施設において再訓練又は更新されてもよく、再訓練又は更新されたモデルが、モデル・レジストリ1124において利用可能にされてもよい。少なくとも一実施例では、次いで機械学習モデルは、モデル・レジストリ1124から選択されてもよく、出力モデル1116と呼ばれてもよく、導入システム1106において使用されて、導入システムの1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実行してもよい。
【0133】
少なくとも一実施例では、訓練パイプライン1204(図12)は、シナリオは、施設1102が、導入システム1106内の1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実行する際に使用する機械学習モデルを必要としているが、施設1102は現在そのような機械学習モデルを有していないかもしれない(又はそうした目的のために最適化された、効率よい、若しくは有効なモデルを有していないかもしれない)という状況を含み得る。少なくとも一実施例では、モデル・レジストリ1124から選択された機械学習モデルは、母集団、機械学習モデルを訓練するために使用される訓練データの頑健性、訓練データの異常の多様性、及び/又は訓練データに伴う他の問題に違いがあることから、施設1102において生成される撮像データ1108向けに微調整又は最適化されていないことがある。少なくとも一実施例では、機械学習モデルを再訓練又は更新するためのグラウンド・トゥルース・データとして使用されることになる撮像データ1108に対応するアノテーションの生成を支援するために、AI支援アノテーション1110が使用されてもよい。少なくとも一実施例では、ラベル付きデータ1112が、機械学習モデルを訓練するためのグラウンド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、機械学習モデルを再訓練又は更新することは、モデル訓練1114と呼ばれてもよい。少なくとも一実施例では、モデル訓練1114、たとえばAI支援アノテーション1110、ラベル付きクリニック・データ1112、又はこれらの組合せは、機械学習モデルを再訓練若しくは更新するためのグラウンド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、訓練済み機械学習モデルは出力モデル1116と呼ばれてもよく、本明細書に記載の導入システム1106によって使用されてもよい。
【0134】
少なくとも一実施例では、導入システム1106は、ソフトウェア1118、サービス1120、ハードウェア1122、並びに/又は他の構成要素、特徴、及び機能を含んでもよい。少なくとも一実施例では、導入システム1106は、ソフトウェア「スタック」を含んでもよく、それによりソフトウェア1118は、サービス1120の上に構築されてもよく、サービス1120を使用して一部若しくはすべての処理タスクを実行してもよく、サービス1120及びソフトウェア1118は、ハードウェア1122の上に構築され、ハードウェア1122を使用して、導入システム1106の処理、ストレージ、及び/又は他の計算のタスクを実行してもよい。少なくとも一実施例では、ソフトウェア1118は、任意の数の異なるコンテナを含んでもよく、ここで各コンテナは、アプリケーションのインスタンス化を実行してもよい。少なくとも一実施例では、各アプリケーションは、先進処理及び推論パイプラインの1つ又は複数の処理タスク(たとえば、推論、物体検出、特徴検出、セグメント化、画像強調、キャリブレーションなど)を実行してもよい。少なくとも一実施例では、先進処理及び推論パイプラインは、(たとえば、使用可能なタイプのデータに出力を再変換するように)パイプラインを通して処理した後に、各コンテナによって使用される、且つ/又は施設1102によって使用される撮像データを受信及び構成するコンテナに加えて、撮像データ1108を処理するのに所望される又は必要とされる異なるコンテナの選択に基づき定義されてもよい。少なくとも一実施例では、(たとえばパイプラインを構成する)ソフトウェア1118内のコンテナの組合せは、(本明細書においてより詳細に記載する)仮想機器と呼ばれてもよく、仮想機器は、サービス1120及びハードウェア1122を利用して、コンテナにおいてインスタンス化されたアプリケーションの一部又はすべての処理タスクを実行してもよい。
【0135】
少なくとも一実施例では、データ処理パイプラインは、推論要求(たとえば、導入システム1106のユーザからの要求)に応答して、特定のフォーマットで入力データ(たとえば、撮像データ1108)を受け取ってもよい。少なくとも一実施例では、入力データは、1つ又は複数の撮像デバイスによって生成される1つ又は複数の画像、ビデオ、及び/又は他のデータ表現を表してもよい。少なくとも一実施例では、データは、データ処理パイプラインの一部としての事前処理を受けて、1つ又は複数のアプリケーションによって処理できるようにデータが準備されてもよい。少なくとも一実施例では、パイプラインの1つ若しくは複数の推論タスク又は他の処理タスクの出力に対して後処理が実行されて、次のアプリケーション用に出力データが準備されてもよく、且つ/又は送信及び/若しくはユーザによる使用のために(たとえば、推論要求への応答として)出力データが準備されてもよい。少なくとも一実施例では、推論タスクは、訓練済み若しくは導入済みのニューラル・ネットワークなど、1つ又は複数の機械学習モデルによって実行されてもよく、このモデルは、訓練システム1104の出力モデル1116を含んでもよい。
【0136】
少なくとも一実施例では、データ処理パイプラインのタスクはコンテナにカプセル化されてもよく、コンテナはそれぞれ、アプリケーションの個別の完全に機能的なインスタンス化、及び機械学習モデルを参照できる仮想化コンピューティング環境を表す少なくとも一実施例では、コンテナ又はアプリケーションは、(本明細書においてより詳細に記載する)コンテナ・レジストリのプライベート(たとえば、アクセスの制限された)区域に発行されてもよく、訓練済み又は導入済みのモデルは、モデル・レジストリ1124に記憶され、1つ又は複数のアプリケーションに関連付けられてもよい。少なくとも一実施例では、アプリケーションの画像(たとえば、コンテナの画像)は、コンテナ・レジストリにおいて入手可能であってもよく、パイプラインに導入するためにユーザによってコンテナ・レジストリから選択されると、画像は、ユーザのシステムで使用できるようにアプリケーションをインスタンス化するためのコンテナを生成するために使用されてもよい。
【0137】
少なくとも一実施例では、開発者(たとえば、ソフトウェア開発者、臨床医、医師など)は、供給されたデータに対して画像処理及び/又は推論を実行するために、アプリケーションを(たとえばコンテナとして)開発、公開、及び記憶してもよい。少なくとも一実施例では、開発、公開、及び/又は記憶は、(たとえば、開発されたアプリケーション及び/又はコンテナが、確実にシステムに準拠するように、又はシステムと互換性があるようにするために)システムに関連付けられたソフトウェア開発キット(SDK)を使用して実行されてもよい。少なくとも一実施例では、開発されたアプリケーションは、システム(たとえば図12のシステム1200)としてサービス1120の少なくとも一部をサポートすることができるSDKを用いて、ローカルに(たとえば第1の施設において、第1の施設からのデータについて)テストされてもよい。少なくとも一実施例では、DICOM物体は、1個から数百個にわたる画像又は他のタイプのデータをどこにでも含むことができるうえに、データのバリエーションがあることから、開発者は、入力されるデータの抽出及び準備を管理する(たとえば、アプリケーション用の構成を設定する、事前処理をアプリケーションに構築するなどの)責任を負うことがある。少なくとも一実施例では、システム1200によって(たとえば、精度が)検証されると、アプリケーションは、ユーザによって選択及び/又は実装できるようにコンテナ・レジストリにおいて利用可能にされて、ユーザの施設(たとえば、第2の施設)におけるデータに対して1つ又は複数の処理タスクが実行されてもよい。
【0138】
少なくとも一実施例では、次いで開発者は、アプリケーション又はコンテナを、システム(たとえば、図12のシステム1200)のユーザによってアクセス及び使用できるようにネットワークを通して共有してもよい。少なくとも一実施例では、完成し検証されたアプリケーション又はコンテナは、コンテナ・レジストリに記憶されてもよく、関連する機械学習モデルは、モデル・レジストリ1124に記憶されてもよい。少なくとも一実施例では、推論又は画像処理の要求を出す要求元エンティティは、コンテナ・レジストリ及び/又はモデル・レジストリ1124をブラウジングしてアプリケーション、コンテナ、データセット、機械学習モデルなどを探し、データ処理パイプラインに含めるための要素の所望の組合せを選択し、撮像処理要求を送出してもよい。少なくとも一実施例では、要求は、要求を実行するために必要な入力データ(及びいくつかの実例では、関連する患者データ)を含んでもよく、且つ/又は要求を処理する際に実行されることになるアプリケーション及び/又は機械学習モデルの選択を含んでもよい。少なくとも一実施例では、次いで要求は、導入システム1106(たとえばクラウド)の1つ又は複数の構成要素に渡されて、データ処理パイプラインの処理が実行されてもよい。少なくとも一実施例では、導入システム1106による処理は、コンテナ・レジストリ及び/又はモデル・レジストリ1124から選択された要素(たとえば、アプリケーション、コンテナ、モデルなど)を参照することを含んでもよい。少なくとも一実施例では、パイプラインによって結果が生成されると、結果がユーザに返されて参照されてもよい(たとえば、ローカルで、構内のワークステーション又は端末で実行している視聴アプリケーション・スイートで視聴されてもよい)。
【0139】
少なくとも一実施例では、パイプラインにおけるアプリケーション又はコンテナの処理又は実行を支援するために、サービス1120が利用されてもよい。少なくとも一実施例では、サービス1120は、計算サービス、人工知能(AI)サービス、視覚化サービス、及び/又は他のタイプのサービスを含んでもよい。少なくとも一実施例では、サービス1120は、ソフトウェア1118の1つ又は複数のアプリケーションに共通の機能を提供してもよく、それにより機能は、アプリケーションによってコール又は利用されることが可能なサービスに対して抽象化されてもよい。少なくとも一実施例では、サービス1120によって提供される機能は、動的でより効率的に実行されてもよく、それと同時に、(たとえば、並列コンピューティング・プラットフォーム1230(図12)を使用して)アプリケーションが並列にデータを処理できるようにすることにより、良好にスケーリングされてもよい。少なくとも一実施例では、サービス1120により提供される同じ機能を共有する各アプリケーションに、サービス1120のそれぞれのインスタンスを有するよう要求するのではなく、サービス1120が、様々なアプリケーション間で共有されてもよい。少なくとも一実施例では、サービスは、非限定的な実例として、検出又はセグメント化のタスクを実行するために使用されてもよい推論のサーバ又はエンジンを含んでもよい。少なくとも一実施例では、機械学習モデルの訓練及び/又は再訓練の機能を提供することができるモデル訓練サービスが含まれてもよい。少なくとも一実施例では、GPU加速化データ(たとえば、DICOM、RIS、CIS、REST準拠、RPC、生など)の抽出、リサイズ、スケーリング、及び/又は他の拡張を提供することができるデータ拡張サービスがさらに含まれてもよい。少なくとも一実施例では、レイ・トレーシング、ラスタ化、ノイズ除去、鮮鋭化などの画像レンダリング効果を加えることができる視覚化サービスが使用されて、2次元(2D)及び/又は3次元(3D)のモデルにリアル感が付加されてもよい。少なくとも一実施例では、仮想機器のパイプライン内の他のアプリケーションについてビーム形成、セグメント化、推論、撮像、及び/又はサポートを実現する仮想機器サービスが含まれてもよい。
【0140】
少なくとも一実施例では、サービス1120がAIサービス(たとえば、推論サービス)を含む場合、1つ又は複数の機械学習モデルは、機械学習モデル、又はその処理を、アプリケーション実行の一部として実行するように推論サービス(たとえば、推論サーバ)に(APIコールとして)コールすることによって、実行されてもよい。少なくとも一実施例では、セグメント化タスクのための1つ又は複数の機械学習モデルを別のアプリケーションが含む場合、セグメント化タスクに関連付けられた処理動作のうちの1つ又は複数を実行するための機械学習モデルを実行するように、アプリケーションは推論サービスをコールしてもよい。少なくとも一実施例では、セグメント化アプリケーション及び異常検出アプリケーションを含む先進処理及び推論パイプラインを実装するソフトウェア1118は、1つ又は複数の推論タスクを実行するためにそれぞれのアプリケーションが同じ推論サービスをコールすることがあるので、合理化されてもよい。
【0141】
少なくとも一実施例では、ハードウェア1122は、GPU、CPU、グラフィックス・カード、AI/深層学習システム(たとえば、NVIDIAのDGXなどのAIスーパーコンピュータ)、クラウド・プラットフォーム、又はそれらの組合せを含んでもよい。少なくとも一実施例では、異なるタイプのハードウェア1122を使用して、導入システム1106のソフトウェア1118及びサービス1120のための効率的で専用のサポートが提供されてもよい。少なくとも一実施例では、画像処理及び画像生成の効率、精度、及び有効性を向上させるために、AI/深層学習システム内、クラウド・システム、及び/又は導入システム1106の他の処理構成要素において、ローカルで(たとえば、施設1102で)処理を行うためのGPU処理の使用が実装されてもよい。少なくとも一実施例では、ソフトウェア1118及び/又はサービス1120は、非限定的な実例として深層学習、機械学習、及び/又は高性能コンピューティングに関するGPU処理のために最適化されてもよい。少なくとも一実施例では、導入システム1106及び/又は訓練システム1104のコンピューティング環境のうちの少なくとも一部は、データ・センタの1つ若しくは複数のスーパーコンピュータ、又は高性能コンピューティング・システムにおいて、GPU最適化ソフトウェア(たとえば、NVIDIAのDGXシステムのハードウェアとソフトウェアの組合せ)を用いて実行されてもよい。少なくとも一実施例では、ハードウェア1122は、任意の数のGPUを含んでもよく、これらのGPUは、本明細書に記載するように、データの並列処理を実行するためにコールされてもよい。少なくとも一実施例では、クラウド・プラットフォームはさらに、深層学習タスク、機械学習タスク、又は他のコンピューティング・タスクのGPU最適化された実行のためのGPU処理を含んでもよい。少なくとも一実施例では、クラウド・プラットフォーム(たとえば、NVIDIAのNGC)は、(たとえば、NVIDIAのDGXシステムによって提供される)AI/深層学習スーパーコンピュータ、及び/又はGPU最適化ソフトウェアをハードウェア抽象化及びスケーリングのプラットフォームとして使用して、実行されてもよい。少なくとも一実施例では、クラウド・プラットフォームは、シームレスなスケーリング及びロード・バランシングを可能にするために、複数のGPUに対するアプリケーション・コンテナ・クラスタリング・システム又はオーケストレーション・システム(たとえば、KUBERNETES)を統合してもよい。
【0142】
図12は、少なくとも一実施例による撮像導入パイプラインを生成及び導入するための実例システム1200を示すシステム図である。少なくとも一実施例では、システム1200は、図11のプロセス1100、及び/又は先進処理及び推論パイプラインを含む他のプロセスを実装するために使用されてもよい。少なくとも一実施例では、システム1200は、訓練システム1104及び導入システム1106を含んでもよい。少なくとも一実施例では、訓練システム1104及び導入システム1106は、本明細書に記載するように、ソフトウェア1118、サービス1120、及び/又はハードウェア1122を使用して実装されてもよい。
【0143】
少なくとも一実施例では、システム1200(たとえば、訓練システム1104及び/又は導入システム1106)は、クラウド・コンピューティング環境(たとえば、クラウド1226)において実装されてもよい。少なくとも一実施例では、システム1100は、ヘルスケア・サービス施設に関してローカルに実装されてもよく、又はクラウドとローカル・コンピューティング・リソースとの組合せとして実装されてもよい。少なくとも一実施例では、クラウド1226のAPIへのアクセスは、制定されたセキュリティ対策又はプロトコルを介して許可されたユーザに限定されてもよい。少なくとも一実施例では、セキュリティ・プロトコルはウェブ・トークンを含んでもよく、このウェブ・トークンは、認証(たとえば、AuthN、AuthZ、Glueconなど)のサービスによって署名されてもよく、適切な許可を持っていてもよい。少なくとも一実施例では、(本明細書に記載の)仮想機器のAPI、又はシステム1200の他のインスタンス化は、対話について検査済み又は許可済みのパブリックIPのセットに限定されてもよい。
【0144】
少なくとも一実施例では、システム1200の様々な構成要素は、有線及び/又は無線の通信プロトコルを介して、ローカル・エリア・ネットワーク(LAN)及び/又は広域ネットワーク(WAN)を含むがこれらに限定されない様々な異なるタイプのネットワークのうちの任意のものを使用して、相互に通信してもよい。少なくとも一実施例では、(たとえば推論要求を送信するため、推論要求の結果を受信するためなど)施設とシステム1200の構成要素との間の通信は、1つ又は複数のデータ・バス、無線データ・プロトコル(Wi-Fi)、有線データ・プロトコル(たとえば、イーサネット(登録商標))などを介して通信されてもよい。
【0145】
少なくとも一実施例では、訓練システム1104は、図11に関して本明細書に記載したものと同様の訓練パイプライン1204を実行してもよい。少なくとも一実施例では、1つ又は複数の機械学習モデルが導入システム1106により導入パイプライン1210において使用されることになる場合、訓練パイプライン1204を使用して、1つ又は複数の(たとえば、事前訓練された)モデルが訓練若しくは再訓練されてもよく、且つ/又は事前訓練されたモデル1206のうちの1つ又は複数が(たとえば再訓練若しくは更新を必要とせずに)実装されてもよい。少なくとも一実施例では、訓練パイプライン1204の結果として、出力モデル1116が生成されてもよい。少なくとも一実施例では、訓練パイプライン1204は、撮像データ(若しくは他の入力データ)の変換若しくは適合、などであるがこれらに限定されない任意の数の処理ステップを含んでもよい。少なくとも一実施例では、導入システム1106によって使用される異なる機械学習モデルについて、異なる訓練パイプライン1204が使用されてもよい。少なくとも一実施例では、図11に関して記載した第1の実例と同様の訓練パイプライン1204は、第1の機械学習モデルに使用されてもよく、図11に関して記載した第2の実例と同様の訓練パイプライン1204は、第2の機械学習モデルに使用されてもよく、図11に関して記載した第3の実例と同様の訓練パイプライン1204は、第3の機械学習モデルに使用されてもよい。少なくとも一実施例では、それぞれの各機械学習モデルに要求されるものに応じて、訓練システム1104内のタスクの任意の組合せが使用されてもよい。少なくとも一実施例では、機械学習モデルのうちの1つ又は複数は、すでに訓練済みで導入の準備が整っていてもよく、それにより機械学習モデルは、訓練システム1104によるいかなる処理も受けなくてもよく、導入システム1106によって実装されてもよい。
【0146】
少なくとも一実施例では、出力モデル1116及び/又は事前訓練されたモデル1206は、実装形態又は実施例に応じて任意のタイプの機械学習モデルを含んでもよい。少なくとも一実施例では、限定することなく、システム1200によって使用される機械学習モデルは、線形回帰、ロジスティック回帰、決定木、サポート・ベクター・マシン(SVM)、ナイーブ・ベイズ、k近傍法(k-nearest neighbor:Knn)、k平均クラスタリング、ランダム・フォレスト、次元縮小アルゴリズム、勾配ブースティング・アルゴリズム、ニューラル・ネットワーク(たとえば、オート・エンコーダ、畳み込み、再帰、パーセプトロン、長/短期メモリ(LSTM)、ホップフィールド、ボルツマン、ディープ・ビリーフ、逆畳み込み、敵対的生成、液体状態マシンなど)を使用する機械学習モデル、及び/又は他のタイプの機械学習モデルを含んでもよい。
【0147】
少なくとも一実施例では、訓練パイプライン1204は、少なくとも図13Bに関して、より詳細に本明細書に記載するAI支援アノテーションを含んでもよい。少なくとも一実施例では、ラベル付きデータ1112(たとえば、従来のアノテーション)は、任意の数の技法によって生成されてもよい。少なくとも一実施例では、ラベル又は他のアノテーションは、描画プログラム(たとえば、アノテーション・プログラム)、コンピュータ支援設計(CAD)プログラム、ラベル付けプログラム、グラウンド・トゥルース用のアノテーション若しくはラベルの生成に適した別のタイプのプログラム内で生成されてもよく、且つ/又はいくつかの実例では、手書きされてもよい。少なくとも一実施例では、グラウンド・トゥルース・データは、合成により生成されてもよく(たとえば、コンピュータ・モデル又はレンダリングから生成されてもよく)、現実的に生成されてもよく(たとえば、実世界のデータから設計及び生成されてもよく)、機械自動化されてもよく(たとえば、特徴の分析及び学習を使用して、データから特徴を抽出し、次いでラベルを生成してもよく)、人間によりアノテーション付けされてもよく(たとえば、ラベラ、又はアノテーション専門家がラベルのロケーションを定義してもよく)、且つ/又はこれらの組合せであってもよい。少なくとも一実施例では、撮像データ1108のインスタンス(又は機械学習モデルによって使用される他のタイプのデータ)ごとに、訓練システム1104によって生成される対応するグラウンド・トゥルース・データが存在してもよい。少なくとも一実施例では、訓練パイプライン1204に含まれるAI支援アノテーションに加えて又はその代わりに、導入パイプライン1210の一部としてAI支援アノテーションが実行されてもよい。少なくとも一実施例では、システム1200は多層プラットフォームを含んでもよく、このプラットフォームは、1つ又は複数の医療用撮像及び診断の機能を実行することができる診断アプリケーション(又は他のタイプのアプリケーション)のソフトウェア層(たとえば、ソフトウェア1118)を含んでもよい。少なくとも一実施例では、システム1200は、1つ又は複数の施設のPACSサーバ・ネットワークに、(たとえば、暗号化リンクを介して)通信可能に結合されてもよい。少なくとも一実施例では、システム1200は、PACSサーバからのデータにアクセスし、それを参照するように構成されて、機械学習モデルの訓練、機械学習モデルの導入、画像処理、推論、及び/又は他の動作などの動作を実行してもよい。
【0148】
少なくとも一実施例では、ソフトウェア層は、セキュアな、暗号化された、且つ/又は認証されたAPIとして実装されてもよく、これを介して、アプリケーション又はコンテナが、外部環境(たとえば、施設1102)から呼び出し(たとえばコール)されてもよい。少なくとも一実施例では、次いでアプリケーションは、それぞれのアプリケーションに関連付けられた計算、AI、又は視覚化のタスクを実行するために1つ又は複数のサービス1120をコール又は実行してもよく、ソフトウェア1118及び/又はサービス1120は、ハードウェア1122を利用して、処理タスクを有効且つ効率的なやり方で実行してもよい。
【0149】
少なくとも一実施例では、導入システム1106は、導入パイプライン1210を実行してもよい。少なくとも一実施例では、導入パイプライン1210は任意の数のアプリケーションを含んでもよく、これらは、上に記載のAI支援アノテーションを含め、撮像デバイス、シーケンシング・デバイス、ゲノミクス・デバイスなどによって生成された撮像データ(及び/又は他のタイプのデータ)に連続的に、非連続的に、又は他のやり方で適用されてもよい。少なくとも一実施例では、本明細書に記載するように、個々のデバイス用の導入パイプライン1210は、デバイス用の仮想機器(たとえば、仮想超音波機器、仮想CTスキャン機器、仮想シーケンシング機器など)と呼ばれてもよい。少なくとも一実施例では、デバイスによって生成されるデータに必要な情報に応じて、1つのデバイスにつき2つ以上の導入パイプライン1210が存在してもよい。少なくとも一実施例では、異常検出がMRIマシンに必要とされる場合、第1の導入パイプライン1210が存在してもよく、画像強調がMRIマシンの出力に必要とされる場合、第2の導入パイプライン1210が存在してもよい。
【0150】
少なくとも一実施例では、画像生成アプリケーションは、機械学習モデルの使用を含む処理タスクを含んでもよい。少なくとも一実施例では、ユーザは、独自の機械学習モデルを使用すること、又はモデル・レジストリ1124から機械学習モデルを選択することを望む場合がある。少なくとも一実施例では、ユーザは、処理タスクを実行するために、独自の機械学習モデルを実装してもよく、又は機械学習モデルを選択してアプリケーションに含めてもよい。少なくとも一実施例では、アプリケーションは選択可能及びカスタマイズ可能であってもよく、アプリケーションの構造を定義することにより、特定のユーザ向けのアプリケーションの導入及び実装が、よりシームレスなユーザ・エクスペリエンスとして提示される。少なくとも一実施例では、システム1200の他の特徴、たとえばサービス1120及びハードウェア1122などを利用することにより、導入パイプライン1210は、さらによりユーザ・フレンドリになることができ、より容易な統合を実現でき、より正確で、効率的で、タイムリーな結果を生み出すことができる。
【0151】
少なくとも一実施例では、導入システム1106はユーザ・インターフェース1214(たとえば、グラフィカル・ユーザ・インターフェース、ウェブ・インターフェースなど)を含んでもよく、これらは、アプリケーションを選択して導入パイプライン1210に含める、アプリケーションを構成する、アプリケーション又はそのパラメータ若しくは構造を修正又は変更する、セットアップ及び/又は導入中に導入パイプライン1210を使用しそれと対話する、且つ/又は他のやり方で導入システム1106と対話するために使用されてもよい。少なくとも一実施例では、訓練システム1104に関して図示されていないが、ユーザ・インターフェース1214(又は異なるユーザ・インターフェース)は、導入システム1106で使用するモデルを選択するため、訓練システム1104において訓練若しくは再訓練するモデルを選択するため、且つ/又は他のやり方で訓練システム1104と対話するために使用されてもよい。
【0152】
少なくとも一実施例では、アプリケーション・オーケストレーション・システム1228に加えてパイプライン・マネージャ1212を使用して、導入パイプライン1210のアプリケーション又はコンテナと、サービス1120及び/又はハードウェア1122との間で対話が管理されてもよい。少なくとも一実施例では、パイプライン・マネージャ1212は、アプリケーションからアプリケーションへの対話、アプリケーションからサービス1120への対話、及び/又はアプリケーション若しくはサービスからハードウェア1122への対話を容易にするように構成されてもよい。少なくとも一実施例では、ソフトウェア1118に含まれるように図示してあるが、これは限定を意図しておらず、いくつかの事例では、パイプライン・マネージャ1212は、サービス1120に含まれてもよい。少なくとも一実施例では、アプリケーション・オーケストレーション・システム1228(たとえば、Kubernetes、DOCKERなど)は、コンテナ・オーケストレーション・システムを含んでもよく、このシステムは、アプリケーションを、調整、管理、スケーリング、及び導入のための論理ユニットとして、コンテナにグループ化することができる。少なくとも一実施例では、導入パイプライン1210からのアプリケーション(たとえば、再構築アプリケーション、セグメント化アプリケーションなど)を個々のコンテナに関連付けることより、各アプリケーションは自己完結型環境内(たとえば、カーネル・レベル)で実行して、スピード及び効率を向上させることができる。
【0153】
少なくとも一実施例では、各アプリケーション及び/又はコンテナ(又はその画像)は、個々に開発、修正、及び導入されてもよく(たとえば、第1のユーザ又は開発者が、第1のアプリケーションを開発、修正、及び導入し、第2のユーザ又は開発者が、第1のユーザ又は開発者とは別に第2のアプリケーションを開発、修正、及び導入してもよく)、これにより、別のアプリケーション又はコンテナのタスクに邪魔されることなく、1つのアプリケーション及び/又はコンテナのタスクに集中し、注意を払うことが可能になる。少なくとも一実施例では、異なるコンテナ間又はアプリケーション間の通信、及び協調が、パイプライン・マネージャ1212及びアプリケーション・オーケストレーション・システム1228によって支援されてもよい。少なくとも一実施例では、各コンテナ又はアプリケーションの予測される入力及び/又は出力が、(たとえば、アプリケーション又はコンテナの構造に基づき)システムによって知られている限り、アプリケーション・オーケストレーション・システム1228及び/又はパイプライン・マネージャ1212は、アプリケーション又はコンテナのそれぞれ間の通信、及びそれらの間でのリソースの共有を容易にすることができる。少なくとも一実施例では、導入パイプライン1210のアプリケーション又はコンテナのうちの1つ又は複数は、同じサービス及びリソースを共有することができるので、アプリケーション・オーケストレーション・システム1228は、様々なアプリケーション間又はコンテナ間でサービス又はリソースをオーケストレートし、ロード・バランシングを行い、共有を決定してもよい。少なくとも一実施例では、スケジューラを使用して、アプリケーション又はコンテナのリソース要件、これらのリソースの現在の使用量又は計画された使用量、及びリソースの利用可能性が追跡されてもよい。少なくとも一実施例では、こうしてスケジューラは、異なるアプリケーションにリソースを配分し、システムの要件及び利用可能性を考慮してアプリケーション間でリソースを分配してもよい。いくつかの実例では、スケジューラ(及び/又はアプリケーション・オーケストレーション・システム1228の他の構成要素)は、サービスの品質(QoS)、(たとえば、リアルタイム処理を実行するか、遅延処理を実行するかを決定するための)データ出力を必要とする緊急度など、システムに課される制約(たとえば、ユーザ制約)に基づき、リソースの利用可能性及び分配を決定してもよい。
【0154】
少なくとも一実施例では、導入システム1106のアプリケーション又はコンテナによって利用及び共有されるサービス1120は、計算サービス1216、AIサービス1218、視覚化サービス1220、及び/又は他のタイプのサービスを含んでもよい。少なくとも一実施例では、アプリケーションは、サービス1120のうちの1つ又は複数をコール(たとえば実行)して、アプリケーションのための処理動作を実行してもよい。少なくとも一実施例では、計算サービス1216は、スーパーコンピューティング又は他の高性能コンピューティング(HPC)のタスクを実行するために、アプリケーションによって利用されてもよい。少なくとも一実施例では、アプリケーションのうちの1つ又は複数を介してデータを実質的に同時に処理するため、且つ/又は1つのアプリケーションの1つ又は複数のタスクを実質的に同時に処理するために、計算サービス1216を利用して(たとえば、並列コンピューティング・プラットフォーム1230を使用して)並列処理が実行されてもよい。少なくとも一実施例では、並列コンピューティング・プラットフォーム1230(たとえば、NVIDIAのCUDA)は、GPU(たとえば、GPU1222)上での汎用コンピューティング(GPGPU)を可能にしてもよい。少なくとも一実施例では、並列コンピューティング・プラットフォーム1230のソフトウェア層は、計算カーネルを実行するために仮想命令セット及びGPUの並列計算要素へのアクセスを提供してもよい。少なくとも一実施例では、並列コンピューティング・プラットフォーム1230はメモリを含んでもよく、いくつかの実施例では、メモリは、複数のコンテナ間で、且つ/又は1つのコンテナ内の異なる処理タスク間で共有されてもよい。少なくとも一実施例では、複数のコンテナ、及び/又はコンテナ内の複数のプロセスが、並列コンピューティング・プラットフォーム1230のメモリの共有セグメントからの同じデータを使用するために(たとえば、アプリケーションの複数の異なるステージ、又は複数のアプリケーションが、同じ情報を処理する場合)、プロセス間通信(IPC)コールが生成されてもよい。少なくとも一実施例では、データのコピーを作成し、データをメモリの異なるロケーションに移動(たとえば、読取り/書込みの動作)させるのではなく、メモリの同じロケーションの同じデータが、任意の数の処理タスクに(たとえば、同じ時間、異なる時間などに)使用されてもよい。少なくとも一実施例では、データが使用されて、処理の結果として新規データが生成されるとき、データの新規ロケーションのこの情報は、様々なアプリケーションに記憶され、それらの間で共有されてもよい。少なくとも一実施例では、データのロケーション及び更新済み又は修正済みのデータのロケーションは、コンテナ内でペイロードがどのように理解されるかという定義の一部であってもよい。
【0155】
少なくとも一実施例では、AIサービス1218は、アプリケーションに関連付けられた(たとえば、アプリケーションの1つ又は複数の処理タスクを実行する役割を課された)機械学習モデルを実行するための推論サービスを実行するために利用されてもよい。少なくとも一実施例では、AIサービス1218は、セグメント化、再構築、物体検出、特徴検出、分類、及び/又は他の推論タスクのための機械学習モデル(たとえば、CNNなどのニューラル・ネットワーク)を実行するために、AIシステム1224を利用してもよい。少なくとも一実施例では、導入パイプライン1210のアプリケーションは、訓練システム1104からの出力モデル1116及び/又はアプリケーションの他のモデルのうちの1つ又は複数を使用して、撮像データについて推論を実行してもよい。少なくとも一実施例では、アプリケーション・オーケストレーション・システム1228(たとえば、スケジューラ)を使用する推論の2つ以上の実例が利用可能であってもよい。少なくとも一実施例では、第1のカテゴリは、緊急時の緊急要求について推論を実行するため、又は診断時の放射線医のためなど、より高いサービス・レベル合意を達成できる高優先順位/低レイテンシの経路を含むことができる。少なくとも一実施例では、第2のカテゴリは、緊急ではない要求のため、又は分析が後で実行されてもよい場合に使用することができる標準優先順位の経路を含んでもよい。少なくとも一実施例では、アプリケーション・オーケストレーション・システム1228は、AIサービス1218の異なる推論タスク向けの優先順位経路に基づき、リソース(たとえば、サービス1120及び/又はハードウェア1122)を分配してもよい。
【0156】
少なくとも一実施例では、共有ストレージが、システム1200内でAIサービス1218に取り付けられてもよい。少なくとも一実施例では、共有ストレージは、キャッシュ(又は他のタイプのストレージ・デバイス)として動作してもよく、アプリケーションからの推論要求を処理するために使用されてもよい。少なくとも一実施例では、推論要求が送出されたとき、要求は、導入システム1106のAPIインスタンスのセットによって受信されてもよく、1つ又は複数のインスタンスが(たとえば、最良な適合のため、ロード・バランシングのためなどに)選択されて、要求が処理されてもよい。少なくとも一実施例では、要求を処理するために、要求がデータベースに入れられてもよく、機械学習モデルは、まだキャッシュにない場合には、モデル・レジストリ1124から特定されてもよく、検証ステップは、適切な機械学習モデルがキャッシュ(たとえば、共有ストレージ)に確実にロードされるようにしてもよく、且つ/又はモデルのコピーがキャッシュに保存されてもよい。少なくとも一実施例では、アプリケーションがまだ実行されていない場合、又はアプリケーションの十分なインスタンスが存在しない場合には、スケジューラ(たとえば、パイプライン・マネージャ1212)を使用して、要求において参照されたアプリケーションが起動されてもよい。少なくとも一実施例では、モデルを実行するための推論サーバがまだ起動されていない場合には、推論サーバが起動されてもよい。任意の数の推論サーバがモデルごとに起動されてもよい。少なくとも一実施例では、推論サーバがクラスタ化済みであるプル・モデルでは、ロード・バランシングが有利な場合にはいつでもモデルがキャッシュされてもよい。少なくとも一実施例では、推論サーバは、対応する分散サーバに静的にロードされてもよい。
【0157】
少なくとも一実施例では、推論は、コンテナ内で実行される推論サーバを使用して実行されてもよい。少なくとも一実施例では、推論サーバのインスタンスは、モデルに(任意選択でモデルの複数のバージョンに)関連付けられてもよい。少なくとも一実施例では、モデルに対して推論を実行する要求が受信されたとき、推論サーバのインスタンスが存在しない場合には、新規のインスタンスがロードされてもよい。少なくとも一実施例では、推論サーバをスタートするとき、モデルが推論サーバに渡されてもよく、それにより、推論サーバが異なるインスタンスとして実行されている限り、同じコンテナを使用して異なるモデルにサービス提供されてもよい。
【0158】
少なくとも一実施例では、アプリケーションの実行中、所与のアプリケーションについて推論要求が受信されてもよく、(たとえば、推論サーバのインスタンスをホストする)コンテナが(まだロードされていなければ)ロードされてもよく、開始プロシージャがコールされてもよい。少なくとも一実施例では、コンテナの事前処理論理が、(たとえばCPU及び/又はGPUを使用して)入力データに対する任意の追加的な事前処理をロード、デコード、及び/又は実行してもよい。少なくとも一実施例では、推論のためにデータが準備されると、コンテナは、必要に応じてデータに推論を実行してもよい。少なくとも一実施例では、これは1つの画像(たとえば手のX線)に対する単一の推論コールを含んでもよく、又は何百もの画像(たとえば胸のCT)について推論を要求してもよい。少なくとも一実施例では、アプリケーションは、完了前に結果を要約してもよく、これは限定することなく、単一の信頼性スコア、ピクセル・レベルのセグメント化、ボクセル・レベルのセグメント化、視覚化の生成、又は所見を要約するためのテキストの生成を含んでもよい。少なくとも一実施例では、異なるモデル又はアプリケーションには、異なる優先順位が割り当てられてもよい。たとえば、リアルタイム(TAT<1分)の優先順位を有するモデルもあれば、低優先順位(たとえば、TAT<10分)を有するモデルもある。少なくとも一実施例では、モデル実行時間は、要求元の施設又はエンティティから測定されてもよく、推論サービスに対する実行に加えてパートナ・ネットワーク横断時間を含んでもよい。
【0159】
少なくとも一実施例では、サービス1120と推論アプリケーションの間での要求の移行は、ソフトウェア開発キット(SDK)の後ろに隠されてもよく、キューを通して頑健な移送が提供されてもよい。少なくとも一実施例では、個々のアプリケーション/テナントIDの組合せを求めて、要求がAPIを介してキューに入れられ、SDKは、キューから要求を引き出し、要求をアプリケーションに与える。少なくとも一実施例では、SDKが要求をピックアップする環境において、キューの名称が提供されてもよい。少なくとも一実施例では、キューを介した非同期の通信は、その通信が利用可能になったときに、その通信によって、アプリケーションの任意のインスタンスがワークをピックアップできるようになるので、有用な場合がある。結果はキューを介して返送されて、データが失われないようにしてもよい。少なくとも一実施例では、最高優先順位のワークは、アプリケーションのほとんどのインスタンスがキューに接続された状態のキューに進むことができ、一方で最低優先順位のワークは、1つのインスタンスがキューに接続された状態の、受信した順番にタスクを処理するキューに進むことができるので、キューは、ワークをセグメント化する機能も提供することができる。少なくとも一実施例では、アプリケーションは、クラウド1226に生成されたGPU加速インスタンス上で実行されてもよく、推論サービスは、GPU上で推論を実行してもよい。
【0160】
少なくとも一実施例では、視覚化サービス1220を利用して、アプリケーション及び/又は導入パイプライン1210の出力を見るための視覚化が生成されてもよい。少なくとも一実施例では、視覚化を生成するために、視覚化サービス1220によってGPU1222が利用されてもよい。少なくとも一実施例では、レイ・トレーシングなどのレンダリング効果が、視覚化サービス1220によって実装されて、より高品質の視覚化が生成されてもよい。少なくとも一実施例では、視覚化は、2D画像のレンダリング、3Dボリュームのレンダリング、3Dボリュームの再構築、2Dトモグラフィ・スライス、仮想現実表示、拡張現実表示などを、限定することなく含んでもよい。少なくとも一実施例では、仮想化された環境を使用して、システムのユーザが対話するための仮想のインタラクティブ表示又はインタラクティブ環境(たとえば、仮想環境)が生成されてもよい。少なくとも一実施例では、視覚化サービス1220は、内部ビジュアライザ、シネマティクス、及び/又は他のレンダリング若しくは画像処理の能力若しくは機能(たとえば、レイ・トレーシング、ラスタ化、内部光学など)を含んでもよい。
【0161】
少なくとも一実施例では、ハードウェア1122は、GPU1222、AIシステム1224、クラウド1226、並びに/又は訓練システム1104及び/若しくは導入システム1106を実行するために使用される任意の他のハードウェアを含んでもよい。少なくとも一実施例では、GPU1222(たとえば、NVIDIAのTESLA及び/又はQUADROのGPU)は、任意の数のGPUを含んでもよく、これらは、計算サービス1216、AIサービス1218、視覚化サービス1220、他のサービス、及び/又はソフトウェア1118の任意の特徴若しくは機能の処理タスクを実行するために使用されてもよい。たとえば、AIサービス1218に関して、GPU1222を使用して、撮像データ(又は機械学習モデルによって使用される他のタイプのデータ)に対して事前処理が実行されてもよく、機械学習モデルの出力に対して事後処理が実行されてもよく、且つ/又は推論が実行されてもよい(たとえば、機械学習モデルが実行されてもよい)。少なくとも一実施例では、クラウド1226、AIシステム1224、及び/又はシステム1200の他の構成要素は、GPU1222を使用してもよい。少なくとも一実施例では、クラウド1226は、深層学習タスクのためにGPU最適化されたプラットフォームを含んでもよい。少なくとも一実施例では、AIシステム1224は、GPUを使用してもよく、クラウド1226、又は深層学習若しくは推論の役割を課された少なくとも一部分は、1つ又は複数のAIシステム1224を使用して実行されてもよい。したがって、ハードウェア1122は、個別構成要素として示されているが、これは限定を意図したものではなく、ハードウェア1122の任意の構成要素が、ハードウェア1122の任意の他の構成要素と組み合わされてもよく、それらによって利用されてもよい。
【0162】
少なくとも一実施例では、AIシステム1224は、推論、深層学習、機械学習、及び/又は他の人工知能タスク向けに構成された専用のコンピューティング・システム(たとえば、スーパーコンピュータ又はHPC)を含んでもよい。少なくとも一実施例では、AIシステム1224(たとえば、NVIDIAのDGX)は、GPU最適化されたソフトウェア(たとえば、ソフトウェア・スタック)を含んでもよく、これは、CPU、RAM、ストレージ、及び/又は他の構成要素、特徴、若しくは機能に加えて、複数のGPU1222を使用して実行されてもよい。少なくとも一実施例では、1つ又は複数のAIシステム1224は、システム1200の一部又はすべてのAIベースの処理タスクを実行するために、(たとえば、データ・センタにおいて)クラウド1226に実装されてもよい。
【0163】
少なくとも一実施例では、クラウド1226は、GPU加速化インフラストラクチャ(たとえば、NVIDIAのNGC)を含んでもよく、これは、システム1200の処理タスクを実行するためのGPU最適化されたプラットフォームを提供してもよい。少なくとも一実施例では、クラウド1226は、システム1200のAIベースのタスクのうちの1つ又は複数を実行するためのAIシステム1224を(たとえば、ハードウェア抽象化及びスケーリングのプラットフォームとして)含んでもよい。少なくとも一実施例では、クラウド1226は、複数のGPUを利用してアプリケーション・オーケストレーション・システム1228と統合されて、アプリケーションとサービス1120の間でシームレスなスケーリング及びロード・バランシングを可能にしてもよい。少なくとも一実施例では、クラウド1226は、本明細書に記載する計算サービス1216、AIサービス1218、及び/又は視覚化サービス1220を含むシステム1200のサービス1120の少なくとも一部を実行する役割を課されてもよい。少なくとも一実施例では、クラウド1226は、大小のバッチ推論(たとえば、NVIDIAのテンソルRTの実行)を実行してもよく、加速化された並列コンピューティングのAPI及びプラットフォーム1230(たとえば、NVIDIAのCUDA)を提供してもよく、アプリケーション・オーケストレーション・システム1228(たとえば、KUBERNETES)を実行してもよく、グラフィックス・レンダリングのAPI及びプラットフォーム(たとえば、高品質のシネマティクスを生成するためのレイ・トレーシング、2Dグラフィックス、3Dグラフィックス、及び/又は他のレンダリング技法)を提供してもよく、且つ/又はシステム1200のための他の機能を提供してもよい。
【0164】
図13Aは、少なくとも一実施例による、機械学習モデルを訓練、再訓練、又は更新するためのプロセス1300のデータ・フロー図を示す。少なくとも一実施例では、プロセス1300は、図12のシステム1200を非限定的な実例として使用して、実行されてもよい。少なくとも一実施例では、プロセス1300は、本明細書に記載のシステム1200のサービス1120及び/又はハードウェア1122を利用してもよい。少なくとも一実施例では、プロセス1300によって生成される精緻化モデル1312は、導入パイプライン1210内の1つ又は複数のコンテナ化アプリケーションのために、導入システム1106によって実行されてもよい。
【0165】
少なくとも一実施例では、モデル訓練1114は、新規訓練データ(たとえば、顧客データセット1306、及び/又は入力データに関連付けられた新規グラウンド・トゥルース・データなどの新規入力データ)を使用して、初期モデル1304(たとえば、事前訓練済みモデル)を再訓練又は更新することを含んでもよい。少なくとも一実施例では、初期モデル1304を再訓練又は更新するために、初期モデル1304の出力又は損失層がリセットされてもよく、削除されてもよく、且つ/又は更新済み若しくは新規の出力若しくは損失層と置換されてもよい。少なくとも一実施例では、初期モデル1304は、以前に微調整された、前の訓練から残っているパラメータ(たとえば、重み及び/又はバイアス)を有してもよく、それにより、訓練又は再訓練1114は、最初からモデルを訓練するほど長い時間がかからず、又は多くの処理を必要としなくても済む。少なくとも一実施例では、モデル訓練1114の間に、初期モデル1304のリセット又は置換された出力又は損失層を有することにより、パラメータは、新規の顧客データセット1306(たとえば、図11の画像データ1108)について予測を生成する際の出力又は損失層の精度に関連付けられた損失計算に基づき、新規データセットのために更新又は再調整されてもよい。
【0166】
少なくとも一実施例では、事前訓練済みモデル1206は、データ・ストア又はレジストリ(たとえば、図11のモデル・レジストリ1124)に記憶されてもよい。少なくとも一実施例では、事前訓練済みモデル1206は、少なくとも部分的に、プロセス1300を実行する施設とは異なる1つ又は複数の施設において訓練済みであってもよい。少なくとも一実施例では、異なる施設の患者、対象者、顧客のプライバシー及び権利を保護するために、事前訓練済みモデル1206は、構内で生成された顧客又は患者のデータを使用して、構内で訓練されたものであってもよい。少なくとも一実施例では、事前訓練済みモデル1206は、クラウド1226及び/又は他のハードウェア1122を使用して訓練されてもよいが、プライバシー保護された機密の患者データは、クラウド1226(又は他の構外のハードウェア)の任意の構成要素に転送できず、それらの構成要素によって使用されず、又はアクセス不可能であってもよい。少なくとも一実施例では、事前訓練済みモデル1206が2つ以上の施設からの患者データを使用して訓練される場合、事前訓練済みモデル1206は、各施設について個々に訓練されてから、別の施設からの患者若しくは顧客のデータについて訓練されてもよい。少なくとも一実施例では、顧客又は患者のデータが(たとえば、実験での使用を目的とした権利放棄などによって)プライバシー問題から解放されている場合、又は顧客若しくは患者のデータがパブリック・データ・セットに含まれる場合などには、任意の数の施設からの顧客又は患者のデータを使用して、データ・センタ又は他のクラウド・コンピューティング・インフラストラクチャなど、構内及び/又は構外で事前訓練済みモデル1206が訓練されてもよい。
【0167】
少なくとも一実施例では、導入パイプライン1210で使用するアプリケーションを選択するとき、ユーザは、特定のアプリケーションで使用することになる機械学習モデルも選択することができる。少なくとも一実施例では、ユーザは、使用するモデルを有していないことがあり、したがって、ユーザはアプリケーションとともに使用する事前訓練済みモデル1206を選択してもよい。少なくとも一実施例では、訓練済みモデル1206は、(たとえば、患者の多様性、人口統計、使用される医療用撮像デバイスのタイプなどに基づき)ユーザの施設の顧客データセット1306について正確な結果を生成するように最適化されてもよい。少なくとも一実施例では、事前訓練済みモデル1206を、アプリケーションとともに使用するために導入パイプライン1210に導入する前に、事前訓練済みモデル1206は、それぞれの施設において使用するために更新、再訓練、及び/又は微調整されてもよい。
【0168】
少なくとも一実施例では、ユーザは、更新、再訓練、及び/又は微調整されることになる事前訓練済みモデル1206を選択してもよく、事前訓練済みモデル1206は、プロセス1300内でシステム1104を訓練するための初期モデル1304と呼ばれてもよい。少なくとも一実施例では、顧客データセット1306(たとえば、施設のデバイスによって生成された撮像データ、ゲノミクス・データ、シーケンシング・データ、又は他のタイプのデータ)を使用して、初期モデル1304について(限定することなく転送学習(transfer learning)を含んでもよい)モデル訓練1114が実行されて、精緻化モデル1312が生成されてもよい。少なくとも一実施例では、顧客データセット1306に対応するグラウンド・トゥルース・データが、訓練システム1104によって生成されてもよい。少なくとも一実施例では、グラウンド・トゥルース・データは、(たとえば、図11のラベル付きクリニック・データ1112として)施設において臨床医、科学者、医師、開業医によって、少なくとも部分的に生成されてもよい。
【0169】
少なくとも一実施例では、AI支援アノテーション1110がいくつかの実例において使用されて、グラウンド・トゥルース・データが生成されてもよい。少なくとも一実施例では、(たとえば、AI支援アノテーションSDKを使用して実装された)AI支援アノテーション1110は、機械学習モデル(たとえば、ニューラル・ネットワーク)を利用して、顧客データセットについて示唆又は予測されるグラウンド・トゥルース・データを生成してもよい。少なくとも一実施例では、ユーザ1310は、コンピューティング・デバイス1308上のユーザ・インターフェース(グラフィカル・ユーザ・インターフェース(GUI))内でアノテーション・ツールを使用してもよい。
【0170】
少なくとも一実施例では、ユーザ1310は、コンピューティング・デバイス1308を介してGUIと対話して、(自動)アノテーションを編集又は微調整してもよい。少なくとも一実施例では、ポリゴン編集特徴を使用して、ポリゴンの頂点をより正確なロケーション又は微調整されたロケーションに移動させてもよい。
【0171】
少なくとも一実施例では、顧客データセット1306が、関連付けられたグラウンド・トゥルース・データを得ると、(たとえば、AI支援アノテーション、手動ラベリングなどからの)グラウンド・トゥルース・データが、モデル訓練1114中に使用されて、精緻化モデル1312が生成されてもよい。少なくとも一実施例では、顧客データセット1306は、初期モデル1304に任意の回数、適用されてもよく、グラウンド・トゥルース・データは、精緻化モデル1312について許容可能なレベルの精度が達成されるまで、初期モデル1304のパラメータを更新するために使用されてもよい。少なくとも一実施例では、精緻化モデル1312が生成されると、精緻化モデル1312は、医療用撮像データに対して1つ又は複数の処理タスクを実行するために、施設において1つ又は複数の導入パイプライン1210内に導入されてもよい。
【0172】
少なくとも一実施例では、精緻化モデル1312は、別の施設によって選択されることになるモデル・レジストリ1124の事前訓練済みモデル1206にアップロードされてもよい。少なくとも一実施例では、このプロセスは任意の数の施設において完了されてもよく、それにより精緻化モデル1312は、新規データセットについて任意の回数さらに精緻化されて、より普遍的なモデルが生成されてもよい。
【0173】
図13Bは、少なくとも一実施例による、事前訓練済みのアノテーション・モデルを用いてアノテーション・ツールを強化するためのクライアント・サーバのアーキテクチャ1332の実例の図である。少なくとも一実施例では、AI支援アノテーション・ツール1336は、クライアント・サーバのアーキテクチャ1332に基づきインスタンス化されてもよい。少なくとも一実施例では、撮像アプリケーションのアノテーション・ツール1336は、たとえば放射線医が器官及び異常を識別するのを支援してもよい。少なくとも一実施例では、撮像アプリケーションは、非限定的な実例として(たとえば、3DのMRI又はCTスキャンの)生画像1334において、特定の対象器官上の数少ない極値点をユーザ1310が識別するのを援助し、特定の器官の2Dスライスすべてについて自動アノテーション付けされた結果を受信するソフトウェア・ツールを含んでもよい。少なくとも一実施例では、結果は、訓練データ1338としてデータ・ストアに記憶されてもよく、(たとえば、限定することなく)訓練用のグラウンド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、コンピューティング・デバイス1308が、AI支援アノテーション1110のために極値点を送るとき、たとえば深層学習モデルがこのデータを入力として受信してもよく、セグメント化された器官又は異常の推論結果を返してもよい。少なくとも一実施例では、図13BのAI支援アノテーション・ツール1336Bなどの事前インスタンス化されたアノテーション・ツールは、たとえばアノテーション・モデル・レジストリに記憶された事前訓練済みモデル1342のセットを含むことができるアノテーション支援サーバ1340などのサーバに、APIコール(たとえば、APIコール1344)を行うことによって、拡張されてもよい。少なくとも一実施例では、アノテーション・モデル・レジストリは、特定の器官又は異常に対してAI支援アノテーションを実行するように事前訓練された事前訓練済みモデル1342(たとえば、深層学習モデルなどの機械学習モデル)を記憶してもよい。これらのモデルは、訓練パイプライン1204を使用することにより、さらに更新されてもよい。少なくとも一実施例では、事前インストールされたアノテーション・ツールは、ラベル付き新規クリニック・データ1112が加えられるにつれて、経時的に改善されてもよい。
【0174】
他の変形形態は、本開示の範囲内にある。したがって、開示した技法は、様々な修正及び代替的な構成が可能であるが、それらのうち一定の例示的な実施例が図面に示され、上で詳細に説明されてきた。しかし、特定の1つ又は複数の開示された形に本開示を限定する意図はなく、その反対に、添付の特許請求の範囲に定義される開示の趣旨及び範囲に入るすべての修正形態、代替的な構成、及び等価物を網羅することを意図している。
【0175】
開示される実施例を説明する文脈において(特に、以下の特許請求の範囲の文脈において)「a」及び「an」及び「the」という用語、並びに同様の指示語を使用することは、本明細書に別段の記載のない限り、又は文脈によって明らかに否定されない限り、単数と複数の両方を網羅すると解釈されるべきであり、用語の定義であると解釈されるべきではない。「備える(comprising)」、「有する(having)」、「含む(including)」、「収容する(containing)」という用語は、別段の記載のない限り、オープンエンドの用語(「含むが、これに限定されない」を意味する)と解釈される。「接続される」という用語は、修飾されずに物理的接続を指している場合には、何か介在するものがあったとしても、部分的に又は完全に中に収容される、取り付けられる、又は互いに接合されるものとして解釈される。本明細書において値の範囲を詳述することは、本明細書において別段の記載がない限り、またそれぞれ別々の値が、本明細書に個々に詳述されているかのように明細書に組み込まれていない限り、範囲内に含まれるそれぞれ別々の値を個々に参照する簡潔な方法として機能することを単に意図しているにすぎない。「セット」(たとえば、「アイテムのセット」)又は「サブセット」という用語の使用は、文脈によって別段の記載がない、又は否定されていない限り、1つ又は複数の部材を備える空ではない集合として解釈されるべきである。さらに、文脈によって別段の記載がない、又は否定されていない限り、対応するセットの「サブセット」という用語は、対応するセットの厳密なサブセットを必ずしも指すのではなく、サブセットと対応するセットは等しくてもよい。
【0176】
「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}。したがって、こうした結合語は、ある一定の実施例が、少なくとも1つのA、少なくとも1つのB、及び少なくとも1つのCのそれぞれの存在を必要とすることを全体的に暗示するものではない。さらに、別段の記載のない、又は文脈によって否定されていない限り、「複数」という用語は、複数である状態を示す(たとえば、「複数の項目(a plurality of items)」は複数の項目(multiple items)を示す)。複数とは、少なくとも2つの項目であるが、明示的に、又は文脈によって示されている場合にはそれより多くてもよい。さらに、別段の記載のない、又は文脈からそうでないことが明らかでない限り、「~に基づく」という言い回しは、「少なくとも部分的に~に基づく」を意味し、「~だけに基づく」を意味しない。
【0177】
本明細書に記載のプロセスの動作は、本明細書に別段の記載のない、又は文脈によって明確に否定されない限り、任意の好適な順序で実行することができる。少なくとも一実施例では、本明細書に記載のプロセス(又はその変形及び/又は組合せ)などのプロセスは、実行可能命令で構成された1つ又は複数のコンピュータ・システムの制御下で実行され、1つ又は複数のプロセッサ上で、ハードウェアによって、又はそれらの組合せによって集合的に実行されるコード(たとえば、実行可能な命令、1つ若しくは複数のコンピュータ・プログラム、又は1つ若しくは複数のアプリケーション)として実装される。少なくとも一実施例では、コードは、たとえば1つ又は複数のプロセッサによって実行可能な複数の命令を備えるコンピュータ・プログラムの形で、コンピュータ読取り可能ストレージ媒体に記憶される。少なくとも一実施例では、コンピュータ読取り可能ストレージ媒体は、一時的な信号(たとえば、伝播する一時的な電気若しくは電磁送信)を除外するが、一時的な信号のトランシーバ内の非一時的なデータ・ストレージ回路(たとえば、バッファ、キャッシュ、及びキュー)を含む非一時的なコンピュータ読取り可能ストレージ媒体である。少なくとも一実施例では、コード(たとえば、実行可能コード又はソース・コード)は、1つ又は複数の非一時的なコンピュータ読取り可能ストレージ媒体のセットに記憶され、このストレージ媒体には、コンピュータ・システムの1つ又は複数のプロセッサによって実行されたときに(すなわち、実行された結果として)、コンピュータ・システムに本明細書に記載の動作を実行させる実行可能命令が記憶されている(又は、実行可能命令を記憶するための他のメモリを有する)。非一時的なコンピュータ読取り可能ストレージ媒体のセットは、少なくとも一実施例では、複数の非一時的なコンピュータ読取り可能ストレージ媒体を備え、複数の非一時的なコンピュータ読取り可能ストレージ媒体の個々の非一時的なストレージ媒体のうちの1つ又は複数には、すべてのコードがないが、複数の非一時的なコンピュータ読取り可能ストレージ媒体は、集合的にすべてのコードを記憶している。少なくとも一実施例では、実行可能命令は、異なる命令が異なるプロセッサによって実行されるように実行され、たとえば、非一時的なコンピュータ読取り可能ストレージ媒体は命令を記憶し、メインの中央処理装置(「CPU」)は一部の命令を実行し、グラフィックス・プロセッシング・ユニット(「GPU」)は他の命令を実行する。少なくとも一実施例では、コンピュータ・システムの異なる構成要素は、別々のプロセッサを有し、異なるプロセッサは、命令の異なるサブセットを実行する。
【0178】
したがって、少なくとも一実施例では、コンピュータ・システムは、本明細書に記載のプロセスの動作を単独で又は集合的に実行する1つ又は複数のサービスを実装するように構成され、こうしたコンピュータ・システムは、動作の実行を可能にする適用可能なハードウェア及び/又はソフトウェアで構成される。さらに、本開示の少なくとも一実施例を実装するコンピュータ・システムは、単一のデバイスであり、別の実施例では、異なるやり方で動作する複数のデバイスを備える分散型のコンピュータ・システムであり、それにより単一のデバイスがすべての動作を実行しないように分散型のコンピュータ・システムが本明細書に記載の動作を実行する。
【0179】
本明細書に提供されるあらゆる例、又は例示的な言葉(たとえば、「など」)の使用は、本開示の実施例をより明らかにすることだけを意図しており、別段の主張のない限り、本開示の範囲に制限を加えるものではない。本明細書のいかなる言葉も、特許請求されていない任意の要素を、本開示の実践に不可欠なものとして示すと解釈されるべきではない。
【0180】
本明細書に引用される出版物、特許出願、及び特許を含むすべての参考文献は、各参考文献が参照により組み込まれることがあたかも個別に明確に示され、その全体が本明細書に記載されたかのように、それと同程度まで参照により本明細書に組み込まれる。
【0181】
明細書及び特許請求の範囲において、「結合される」及び「接続される」という用語が、その派生語とともに使用されてもよい。これらの用語は、互いに同義語として意図されていない場合があることを理解すべきである。むしろ、特定の実例では、「接続される」又は「結合される」は、2つ以上の要素が物理的又は電気的に互いに直接又は間接的に接触していることを示すために使用されてもよい。また「結合される」は、2つ以上の要素が直接互いに接触していないが、なお互いに連動又は相互作用することを意味してもよい。
【0182】
別段の具体的な記載のない限り、明細書全体を通して「処理する」、「コンピューティング」、「計算する」、又は「判定する」などの用語は、コンピューティング・システムのレジスタ及び/又はメモリ内の、電子的などの物理的な量として表されるデータをコンピューティング・システムのメモリ、レジスタ、又は他のそのような情報ストレージ・デバイス、送信デバイス、若しくはディスプレイ・デバイス内の物理的な量として同様に表される他のデータになるよう操作及び/又は変換するコンピュータ若しくはコンピューティング・システム、又は同様の電子コンピューティング・デバイスの行為及び/又はプロセスを指す。
【0183】
同様に、「プロセッサ」という用語は、レジスタ及び/又はメモリからの電子データを処理し、その電子データを、レジスタ及び/又はメモリに記憶することができる他の電子データに変換する任意のデバイス、又はデバイスの一部分を指してもよい。非限定的な実例として、「プロセッサ」は、CPU、GPU、DPU、又はハードウェアアクセラレータであってもよい。「コンピューティング・プラットフォーム」は、1つ又は複数のプロセッサを備えてもよい。本明細書で使用する「ソフトウェア」プロセスは、たとえば、タスク、スレッド、及び知的エージェントなど、経時的にワークを実行するソフトウェア及び/又はハードウェアのエンティティを含んでもよい。また、各プロセスは、命令を直列で又は並列で連続的に又は断続的に実行するための複数のプロセスを指してもよい。「システム」及び「方法」という用語は、1つ又は複数の方法をシステムが具体化することができ、方法がシステムと考えられてもよい場合に限り、本明細書において交換可能に使用される。
【0184】
本明細書では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又はそれらをサブシステム、コンピュータ・システム、又はコンピュータ実装機械に入力することに言及することができる。アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力することは、関数呼出し、又はアプリケーション・プログラミング・インターフェースへの呼出しのパラメータとしてデータを受信するなど、様々なやり方で実現することができる。いくつかの実装形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、直列又は並列のインターフェースを介してデータを転送することによって実現することができる。別の実装形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、提供するエンティティから取得するエンティティにコンピュータ・ネットワークを介してデータを転送することによって実現することができる。また、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示することにも言及することができる。様々な実例では、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示するプロセスは、関数呼出しの入力又は出力のパラメータ、アプリケーション・プログラミング・インターフェース若しくはプロセス間通信機構のパラメータとしてデータを転送することによって実現することができる。
【0185】
上の議論は、説明した技法の例示的な実装形態について述べているが、記載した機能を実装するために他のアーキテクチャが使用されてもよく、この他のアーキテクチャは、本開示の範囲内にあることが意図される。さらに、議論を目的として、役割の具体的な分配が上記に定義されているが、様々な機能及び役割は、状況に応じて異なるやり方で分配及び分割されてもよい。
【0186】
さらに、主題は、構造的特徴及び/又は方法論的動作に特有の言語で説明されてきたが、添付の特許請求の範囲で特許請求される主題は、説明した特有の特徴又は動作に必ずしも限定されないことが理解されるべきである。むしろ、特有の特徴及び動作は、特許請求の範囲を実装する例示的な形として開示されている。
【0187】
前述の詳細な説明のいくつかの部分は、コンピュータ・メモリ内のデータ・ビットに対する演算のアルゴリズム及び記号表現の観点で提示されている。これらのアルゴリズムの記述及び表現は、データ処理の技術分野における当業者が、他の当業者に作業内容を最も効果的に伝達するために使用される方法である。アルゴリズムは、ここでは一般に、所望の結果につながる自己矛盾のない一連の演算であると考えられる。これらの演算は、物理量の物理的な操作を必要とする演算である。通常、必ずしもそうとは限らないが、これらの量は、保存、組合せ、比較、及び他の方法で操作されることが可能な電気信号又は磁気信号の形式を取る。主に一般的な使用法の理由から、これらの信号をビット、値、要素、記号、文字、用語、数値などと呼ぶと便利な場合があることがわかっている。
【0188】
しかしながら、これらの用語及び同様の用語はすべて、適切な物理的な量に関連付けられており、これらの量に適用される簡便なラベルにすぎないことに留意されたい。本開示は、コンピュータ・システムのレジスタ及びメモリ内の物理的(電子的)な量として表されるデータを、コンピュータ・システムのメモリ若しくはレジスタ又は他のそのような情報ストレージ・システム内の物理的な量として同様に表される他のデータになるように操作及び変換する、コンピュータ・システム又は同様の電子コンピューティング・デバイスの行為及びプロセスを指すことができる。
【0189】
本開示はまた、本明細書における動作を実行するための装置に関する。この装置は、所期の目的のために特別に構築されることが可能であり、又はコンピュータ内に記憶されたコンピュータ・プログラムによって選択的に起動若しくは再構成される汎用コンピュータを含むことができる。こうしたコンピュータ・プログラムは、フロッピー・ディスク、光ディスク、CD-ROM、及び磁気光学ディスクを含む任意のタイプのディスク、読取り専用メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、EPROM、EEPROM、磁気カード若しくは光カード、又はそれぞれがコンピュータ・システム・バスに接続された、電子命令を記憶するのに好適な任意のタイプの媒体などであるがこれらに限定されない、コンピュータ読取り可能ストレージ媒体に記憶されることが可能である。
【0190】
本明細書に提示されるアルゴリズム及び表示は、任意の特定のコンピュータ又は他の装置に本質的に関連するものではない。本明細書の教示によるプログラムとともに様々な汎用システムを使用することができ、又は本方法を実行するためのより特殊化された装置を構築すると便利であることがわかっている。これらの様々なシステムの構造は、以下の説明に示すようなものになる。さらに、本開示は、何らかの特定のプログラミング言語を参照して説明されてはいない。本明細書に記載されるように本開示の教示を実施するために様々なプログラミング言語を使用できることが理解されよう。
【0191】
本開示は、本開示によるプロセスを実行するためのコンピュータ・システム(又は他の電子デバイス)をプログラムするために使用され得る、命令を記憶したマシン読取り可能媒体を含むことができるコンピュータ・プログラム製品又はソフトウェアとして提供されることが可能である。マシン読取り可能媒体は、マシン(たとえば、コンピュータ)によって読取り可能な形式で情報を記憶するための任意のメカニズムを含む。いくつかの実施例では、マシン読取り可能(たとえば、非一時的なコンピュータ読取り可能)媒体は、読取り専用メモリ(「ROM」)、ランダム・アクセス・メモリ(「RAM」)、磁気ディスク・ストレージ媒体、光学ストレージ媒体、フラッシュ・メモリ構成要素などのマシン(たとえば、コンピュータ)読取り可能ストレージ媒体を含む。
【0192】
前述の明細書では、本開示の実施例について、その特定の例示的な実施例を参照しながら説明してきた。添付の特許請求の範囲に記載されるように、本開示の実施例のより広い趣旨及び範囲から逸脱することなく、様々な修正を加えることができることは明らかであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で見なされるべきである。
図1
図2
図3
図4
図5A
図5B
図6
図7
図8
図9
図10
図11
図12
図13A
図13B
【外国語明細書】