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

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

▶ エーティーアイ・テクノロジーズ・ユーエルシーの特許一覧

<>
  • 特開-画像誤分類のためのセーフティモニタ 図1
  • 特開-画像誤分類のためのセーフティモニタ 図2
  • 特開-画像誤分類のためのセーフティモニタ 図3
  • 特開-画像誤分類のためのセーフティモニタ 図4
  • 特開-画像誤分類のためのセーフティモニタ 図5
  • 特開-画像誤分類のためのセーフティモニタ 図6
  • 特開-画像誤分類のためのセーフティモニタ 図7
  • 特開-画像誤分類のためのセーフティモニタ 図8
  • 特開-画像誤分類のためのセーフティモニタ 図9
  • 特開-画像誤分類のためのセーフティモニタ 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024050740
(43)【公開日】2024-04-10
(54)【発明の名称】画像誤分類のためのセーフティモニタ
(51)【国際特許分類】
   G06T 7/00 20170101AFI20240403BHJP
   G06V 10/82 20220101ALI20240403BHJP
   G06V 10/774 20220101ALI20240403BHJP
【FI】
G06T7/00 350C
G06V10/82
G06V10/774
【審査請求】有
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2024013261
(22)【出願日】2024-01-31
(62)【分割の表示】P 2021570761の分割
【原出願日】2020-05-11
(31)【優先権主張番号】16/424,162
(32)【優先日】2019-05-28
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VERILOG
(71)【出願人】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】トゥン チュアン クォン
(72)【発明者】
【氏名】ベンジャミン クーン パン チャン
(72)【発明者】
【氏名】デイビッド ポルピーノ ソブレイラ マルケス
(72)【発明者】
【氏名】クラレンス イップ
(72)【発明者】
【氏名】ハン ウィルソン ユウ
(57)【要約】      (修正有)
【課題】セーフティモニタは全体故障検出率を補完し、ネットワークレベルでのみ観察可能な障害をカバーするセーフティクリティカル推論アプリケーションのためのセーフティモニタフレームワークを実装するシスステム、装置及び方法を提供する。
【解決手段】セーフティクリティカル推論アプリケーションとセーフティモニタと推論アクセラレータエンジンを含むセーフティクリティカルシステムの動作は、セーフティモニタフレームワークによって、セーフティクリティカル推論アプリケーションから、入力画像、テストデータ及びニューラルネットワーク仕様を受信し、入力画像にオブジェクトを追加することで修正画像を生成し、推論アクセラレータエンジンに伝達し、前記エンジンによって、修正画像を処理し出力を前記フレームワークに伝達し、前記フレームワークによって、修正画像に対する出力を既知の良好な結果と比較し、元の入力画像の誤分類の尤度を決定する。
【選択図】図6
【特許請求の範囲】
【請求項1】
システムであって、
セーフティモニタを備え、
前記セーフティモニタは、
画像データにおける1つ以上のオブジェクトの検出頻度を追跡することと、
以前に処理された画像データにおいて少なくとも1つのオブジェクトが第1の閾値を超える検出頻度を有することに応じて、前記1つ以上のオブジェクトのうち前記少なくとも1つのオブジェクトを、処理のために現在の画像データに追加することと、
を行うように構成された回路を備える、
システム。
【請求項2】
前記回路は、前記少なくとも1つのオブジェクトを、前記現在の画像データに対応する画像の境界の外側に追加して、修正画像データを生成するように構成されている、
請求項1のシステム。
【請求項3】
前記回路は、前記修正画像データにおける前記少なくとも1つのオブジェクトの場所を特定する、前記修正画像データの構成を記憶するように構成されている、
請求項2のシステム。
【請求項4】
前記回路は、
前記修正画像データを推論アクセラレータに送信することと、
前記推論アクセラレータによる前記修正画像データの処理を示す少なくとも1つの出力を、前記推論アクセラレータから受信することと、
前記少なくとも1つの出力に少なくとも部分的に基づいて、前記現在の画像データの誤分類の尤度を計算することと、
を行うように構成されている、
請求項2のシステム。
【請求項5】
前記現在の画像データは、前記少なくとも1つの出力と、前記現在の画像データに対応する所定のテストベクトルデータと、が一致しないことに応じて、誤分類されたとみなされる、
請求項4のシステム。
【請求項6】
前記少なくとも1つのオブジェクトは、前記以前に処理された画像データに対応する所定のテストベクトルデータに少なくとも部分的に基づいて選択される、
請求項1のシステム。
【請求項7】
前記少なくとも1つのオブジェクトは、前記所定のテストベクトルデータにおいて、前記以前に処理された画像データにおいて推論アクセラレータによって正しく識別される計算確率が第2の閾値を超えるオブジェクトとして識別される、
請求項6のシステム。
【請求項8】
方法であって、
セーフティモニタが、画像データにおける1つ以上のオブジェクトの検出頻度を追跡することと、
前記セーフティモニタが、以前に処理された画像データにおいて少なくとも1つのオブジェクトが第1の閾値を超える検出頻度を有することに応じて、前記1つ以上のオブジェクトのうち前記少なくとも1つのオブジェクトを、処理のために現在の画像データに追加することと、を含む、
方法。
【請求項9】
前記セーフティモニタが、前記少なくとも1つのオブジェクトを、前記現在の画像データに対応する画像の境界の外側に追加して、修正画像データを生成することを含む、
請求項8の方法。
【請求項10】
前記セーフティモニタが、前記修正画像データにおける前記少なくとも1つのオブジェクトの場所を特定する、前記修正画像データの構成を記憶することを含む、
請求項9の方法。
【請求項11】
前記セーフティモニタが、前記修正画像データを推論アクセラレータに送信することと、
前記セーフティモニタが、前記推論アクセラレータによる前記修正画像データの処理を示す少なくとも1つの出力を、前記推論アクセラレータから受信することと、
前記セーフティモニタが、前記少なくとも1つの出力に少なくとも部分的に基づいて、前記現在の画像データの誤分類の尤度を計算することと、を含む、
請求項9の方法。
【請求項12】
前記現在の画像データは、前記少なくとも1つの出力と、前記現在の画像データに対応する所定のテストベクトルデータと、が一致しないことに応じて、誤分類されたとみなされる、
請求項11の方法。
【請求項13】
前記少なくとも1つのオブジェクトは、前記以前に処理された画像データに対応する所定のテストベクトルデータに少なくとも部分的に基づいて選択される、
請求項8の方法。
【請求項14】
前記少なくとも1つのオブジェクトは、前記所定のテストベクトルデータにおいて、前記以前に処理された画像データにおいて推論アクセラレータによって正しく識別される計算確率が第2の閾値を超えるオブジェクトとして識別される、
請求項13の方法。
【請求項15】
システムであって、
推論アクセラレータと、
セーフティモニタと、を備え、
前記セーフティモニタは、
画像データにおける1つ以上のオブジェクトの検出頻度を追跡することと、
以前に処理された画像データにおいて少なくとも1つのオブジェクトが第1の閾値を超える検出頻度を有することに応じて、前記1つ以上のオブジェクトのうち前記少なくとも1つのオブジェクトを、処理のために現在の画像データに追加することと、
を行うように構成された回路を備える、
システム。
【請求項16】
前記回路は、前記少なくとも1つのオブジェクトを、前記現在の画像データに対応する画像の境界の外側に追加して、修正画像データを生成するように構成されている、
請求項15のシステム。
【請求項17】
前記回路は、前記修正画像データにおける前記少なくとも1つのオブジェクトの場所を特定する、前記修正画像データの構成を記憶するように構成されている、
請求項16のシステム。
【請求項18】
前記回路は、
前記修正画像データを推論アクセラレータに送信することと、
前記推論アクセラレータによる前記修正画像データの処理を示す少なくとも1つの出力を、前記推論アクセラレータから受信することと、
前記少なくとも1つの出力に少なくとも部分的に基づいて、前記現在の画像データの誤分類の尤度を計算することと、
を行うように構成されている、
請求項16のシステム。
【請求項19】
前記少なくとも1つのオブジェクトは、前記以前に処理された画像データに対応する所定のテストベクトルデータに少なくとも部分的に基づいて選択される、
請求項15のシステム。
【請求項20】
前記少なくとも1つのオブジェクトは、前記所定のテストベクトルデータにおいて、前記以前に処理された画像データにおいて推論アクセラレータによって正しく識別される計算確率が第2の閾値を超えるオブジェクトとして識別される、
請求項19のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
新しい技術分野に機械学習があり、ニューラルネットワークは、機械学習モデルの1つのタイプである。ニューラルネットワークは、手書き数字分類や顔検出等のタスクにおいて優れた性能を示している。さらに、ニューラルネットワークは、他のより困難な視覚的分類タスクにおいても優れた性能を発揮することが期待されている。ニューラルネットワークの他の用途には、音声認識、言語モデリング、感情分析、テキスト予測等がある。
【0002】
機械学習アルゴリズムの一般的な構成において、ソフトウェアアプリケーションは、ニューラルネットワークを推論アクセラレータハードウェアエンジンに供給する。推論アクセラレータがセーフティクリティカル環境(safety-critical environment)で動作している場合、推論アクセラレータをモニタして異常な動作がないかどうかをチェックすることが望ましい。推論アクセラレータをモニタリングするための典型的な実装では、モニタリングロジックを推論アクセラレータ処理ハードウェアサブブロック内に挿入する。例えば、マシンチェックアーキテクチャは、処理ハードウェア内のモニタリングロジックが異常な動作がないかをチェックするメカニズムである。しかしながら、これらのチェックは、より低いレベルのハードウェアにおけるモニタリングを提供するが、推論アクセラレータの出力においてのみ観察可能な障害を見落とし得る。また、このアプローチでは、ニューラルネットワークレベルでのランダムで断続的な障害を検出することもできない。例えば、推論アクセラレータは、目的オブジェクトの検出の失敗等の誤分類エラーを有し得る。
【0003】
添付図面と併せて以下の説明を参照することによって、本明細書に記載される方法及びメカニズムの利点をより良く理解することができる。
【図面の簡単な説明】
【0004】
図1】コンピューティングシステムの一実施形態のブロック図である。
図2】セーフティクリティカルシステムで実行されるセーフティクリティカル推論アプリケーションの一実施形態のブロック図である。
図3】推論障害検出フレームワークの一実施形態のブロック図である。
図4】一実施形態による、セーフティクリティカルアプリケーションからセーフティモニタフレームワークに送信される画像の例である。
図5】一実施形態による、元の画像からセーフティモニタフレームワークによって生成された修正画像である。
図6】推論アクセラレータのためのセーフティモニタフレームワークを動作する方法の一実施形態を示す一般化されたフロー図である。
図7】セーフティモニタフレームワークを実装する方法の一実施形態を示す一般化されたフロー図である。
図8】セーフティクリティカルアプリケーションが使用する信頼度インジケータを生成する方法の一実施形態を示す一般化されたフロー図である。
図9】画像を修正するのに何れのオブジェクトを用いるかを決定する方法の一実施形態を示す一般化されたフロー図である。
図10】セーフティモニタフレームワークが動作モードを変更する方法の一実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【0005】
以下の説明では、本明細書に示される方法及びメカニズムの十分な理解をもたらすために、多数の具体的な詳細が記載される。しかしながら、当業者は、これらの具体的な詳細無しに様々な実施形態が実施され得ることを認識すべきである。場合によっては、本明細書に説明されるアプローチを曖昧にしないように、周知の構造、構成要素、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図に示される要素は必ずしも縮尺通りに描かれていないことを理解されたい。例えば、いくつかの要素の寸法は、他の要素に対して誇張される場合がある。
【0006】
セーフティクリティカルニューラルネットワークアプリケーションのためのセーフティモニタフレームワークを実装するためのシステム、装置及び方法が本明細書に開示されている。一実施形態では、システムは、セーフティクリティカルニューラルネットワークアプリケーションと、セーフティモニタと、推論アクセラレータエンジンと、を含む。セーフティモニタは、入力画像、テストデータ(例えば、テストベクトル)及びニューラルネットワーク仕様(例えば、層及び重み)を、セーフティクリティカルニューラルネットワークアプリケーションから受信する。一実施形態では、テストデータは、既知の良好なオブジェクト/画像及びこれらのオブジェクト/画像の対応する分類を有する画像のリストを含む。一実施形態では、セーフティモニタは、入力画像を修正して、追加のオブジェクトを入力画像の境界の外側に追加する。このような実施形態では、修正画像は、追加のオブジェクトを元の画像の境界の外側に収容するために、入力画像よりも大きい。一実施形態では、修正画像の構成(すなわち、追加のスペース及び追加のオブジェクトが挿入される場所)は、修正画像とともにシステムフローを通じて渡されるデータ構造(すなわち、メタデータ)に記憶される。
【0007】
一実施形態では、追加のオブジェクトは、前の入力画像で見つかったオブジェクトと同一である1つ以上の冗長オブジェクトを含む。別の実施形態では、追加のオブジェクトは、テストベクトルに提供された1つ以上のオブジェクトを含む。セーフティモニタは、修正画像を推論アクセラレータに提供する。推論アクセラレータは、修正画像を処理し、出力をセーフティモニタに戻す。セーフティモニタは、推論アクセラレータによって生成された出力に基づいて、元の入力画像の誤分類の尤度(likelihood)を決定する。一実施形態では、セーフティモニタは、既知の良好な結果を、修正に関連する出力と比較して、元の入力画像の誤分類の尤度を決定する。セーフティモニタは、誤分類の尤度のインジケータを、セーフティクリティカルアプリケーションに提供する。このアプローチにより、セーフティモニタは、全体的な故障検出率を補完し、ニューラルネットワークの出力でのみ観察可能な障害から保護する。
【0008】
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、少なくとも推論アクセラレータエンジン105と、プロセッサ(複数可)110A~110Bと、入力/出力(I/O)インタフェース120と、バス125と、メモリサブシステム130と、を含む。他の実施形態では、コンピューティングシステム100は、他のコンポーネントを含むことができ、及び/又は、コンピューティングシステム100は、異なる構成とすることができる。一実施形態では、推論アクセラレータエンジン105は、プロセッサ(複数可)110Bに実装されている。推論アクセラレータエンジン105は、プロセッサ(複数可)110B上に様々な機械学習アルゴリズム又は機械学習モデルを実装するためのソフトウェア、ファームウェア及び/又はハードウェアの任意の組み合わせを表す。
【0009】
一実施形態では、推論アクセラレータエンジン105は、1つ以上の層の畳み込みニューラルネットワークを実装する。例えば、この実施形態では、推論アクセラレータエンジン105は、1つ以上の畳み込み層及び/又は1つ以上の完全接続層(fully connected layers)を実装する。別の実施形態では、推論アクセラレータエンジン105は、1つ以上の層の再帰型ニューラルネットワークを実装する。一般的に、「推論エンジン」又は「推論アクセラレータエンジン」は、画像データを受信し、画像データに対する1つ以上のラベル確率を生成するハードウェア及び/又はソフトウェアとして定義される。場合によっては、「推論エンジン」又は「推論アクセラレータエンジン」は、「分類エンジン」又は「分類器」と呼ばれる。
【0010】
推論アクセラレータエンジン105は、実施形態によって異なる様々な用途の何れかで使用される。例えば、一実施形態では、推論アクセラレータエンジン105は、フレームについて1つ以上のラベル確率を生成するように画像又はビデオフレームを分析する。例えば、潜在的な使用ケースには、少なくともアイトラッキング、オブジェクト認識、点群推定、レイトレーシング、ライトフィールドモデリング、深さトラッキング等が含まれる。アイトラッキングの使用ケースでは、推論アクセラレータエンジン105によって生成される確率は、学習パターン、ドウェル(dwell)、変位角(transition angles)、ブリンク(blink)等に基づく。他の実施形態では、推論アクセラレータエンジン105は、他のタイプの使用ケースにおいてトレーニングされ、カスタマイズされる。
【0011】
推論アクセラレータエンジン105は、実施形態によって異なる様々なセーフティクリティカルアプリケーションの何れかによって使用され得る。例えば、一実施形態では、推論アクセラレータエンジン105は、自動車用途に使用される。例えば、推論アクセラレータエンジン105は、自動運転車両(すなわち、自律走行車両)、運転者支援車両又は高度運転支援システムの1つ以上の機能を制御する。他の実施形態では、推論アクセラレータエンジン105は、他のタイプの使用ケースにおいてトレーニングされ、カスタマイズされる。実施形態に応じて、推論アクセラレータエンジン105は、入力画像又はビデオフレーム内で検出された様々なオブジェクトに対して分類結果の確率を生成する。
【0012】
プロセッサ(複数可)110A~110Bは、任意の数及びタイプの処理ユニット(例えば、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC))を表す。一実施形態では、推論アクセラレータエンジン105に関連する処理の一部は、プロセッサ(複数可)110Bによって実行される。さらに、推論アクセラレータエンジン105は、これらのタイプの処理ユニット及び/又は他のタイプの処理要素のうち何れかを用いて実装される。メモリサブシステム130は、任意の数及びタイプのメモリデバイスを含む。例えば、メモリサブシステム130のメモリのタイプは、高帯域メモリ(HBM)、不揮発性メモリ(NVM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、強誘電体ランダムアクセスメモリ(FeRAM)、又は、他のメモリを含むことができる。メモリサブシステム130は、推論アクセラレータエンジン105及びプロセッサ(複数可)110A~110Bによりアクセス可能である。I/Oインタフェース120は、任意の数及びタイプのI/Oインタフェース(例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス、PCIエクステンデッド(PCI-X)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB))を表す。様々なタイプの周辺機器をI/Oインタフェース120に結合することができる。このような周辺機器は、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック又は他のタイプのゲームコントローラ、メディア記録デバイス、外部記憶装置、ネットワークインタフェースカード等を含むが、これらに限定されない。
【0013】
様々な実施形態では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、ゲームコンソール、サーバ、ストリーミングデバイス、ウェアラブルデバイス、又は、他の様々なタイプのコンピューティングシステム若しくはデバイスである。いくつかの実施形態では、コンピューティングシステム100全体又はその1つ以上の部分は、ロボットシステム、自動運転車両、自律型ドローン、外科用ツール、又は、他のタイプの機械デバイス若しくはシステム内に組み込まれている。コンピューティングシステム100のコンポーネントの数は、実施形態毎に異なることに留意されたい。例えば、他の実施形態では、図1に示す数よりも多い又は少ないコンポーネントが存在する。他の実施形態では、コンピューティングシステム100は、図1に示されていない他のコンポーネントを含むことにも留意されたい。さらに、他の実施形態では、コンピューティングシステム100は、図1に示す以外の方法で構成されている。
【0014】
図2を参照すると、セーフティクリティカルシステム200で実行されるセーフティクリティカル推論アプリケーション220の一実施形態のブロック図が示されている。一実施形態では、セーフティクリティカルシステム200は、任意の数及びタイプの処理ユニットを表す処理ユニット(複数可)205,210を少なくとも含む。セーフティクリティカルシステム200は、図を曖昧にすることを回避するために、図示されていない任意の数の他のコンポーネントを含み得ることに留意されたい。一実施形態では、処理ユニット(複数可)205は、1つ以上の中央処理ユニット(CPU)を含む。他の実施形態では、処理ユニット(複数可)205は、他のタイプの処理ユニットを含み得る。一実施形態では、処理ユニット(複数可)210は、1つ以上のグラフィックス処理ユニット(GPU)を含む。他の実施形態では、処理ユニット(複数可)210は、他のタイプの処理ユニット(例えば、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC))を含み得る。
【0015】
一実施形態では、セーフティクリティカル推論アプリケーション220は、処理ユニット(複数可)205で実行される。セーフティクリティカル推論アプリケーション220は、安全性が非常に重要である危険な環境で実行される任意のタイプのソフトウェアアプリケーションを表す。例えば、一実施形態では、セーフティクリティカル推論アプリケーション220は、自動運転又は運転者支援の自動車若しくは他の車両を制御する。他の実施形態では、セーフティクリティカル推論アプリケーション220は、ロボット内若しくは飛行機内の自動操縦制御メカニズムとして、又は、様々な困難で高リスクな環境における他のシステムの一部として動作する。
【0016】
一実施形態では、セーフティモニタフレームワーク230の第1の部分(すなわち、セーフティモニタフレームワーク230A)は、処理ユニット(複数可)205で実行され、セーフティモニタフレームワーク230の第2の部分(すなわち、セーフティモニタフレームワーク230B)は、処理ユニット(複数可)210で実行される。他の実施形態では、セーフティモニタフレームワーク230は、全体が処理ユニット(複数可)205で実行され、又は、全体が処理ユニット(複数可)210で実行される。推論アクセラレータ240は、1つ以上の機械学習推論アルゴリズム及び/又は機械学習推論モデルを実装するために用いられるソフトウェア及び/又はハードウェアの任意の組み合わせを表す。一実施形態では、推論アクセラレータ240は、専用ハードウェア(例えば、FPGA、ASIC、IPコア)を使用して実装される。別の実施形態では、推論アクセラレータ240は、処理ユニット(複数可)210で実行されるように設計されたソフトウェア命令を含む。他の実施形態では、推論アクセラレータ240は、ソフトウェア及び/又はハードウェアの任意の適切な組み合わせとすることができる。一実施形態では、推論アクセラレータ240は、セーフティクリティカル推論アプリケーション220によって提供されるトポロジ及び重み/バイアスに従って動作する。
【0017】
セーフティクリティカル推論アプリケーション220は、推論アクセラレータ240によって処理される画像を提供する。一実施形態では、セーフティモニタフレームワーク230は、セーフティクリティカル推論アプリケーション220から推論アクセラレータ240に送信される入力を受信し、セーフティモニタフレームワーク230は、これらの入力のうち1つ以上を修正し、次いで、修正された入力をセーフティクリティカル推論アプリケーション220に送信する。推論アクセラレータ240が修正された入力を処理した後に、推論アクセラレータ240は、処理結果を、セーフティモニタフレームワーク230を介してセーフティクリティカル推論アプリケーション220に送信する。セーフティモニタフレームワーク230は、その結果を分析して、推論アクセラレータ240が誤動作しているかどうかを判別する。一実施形態では、セーフティモニタフレームワーク230は、セーフティモニタフレームワーク230が、推論アクセラレータ240がセーフティクリティカル推論アプリケーション220によって生成された入力を正確に処理したことをどの程度確信しているかを示す信頼度インジケータを生成する。セーフティモニタフレームワーク230は、信頼度インジケータ及び処理結果の修正バージョンを、セーフティクリティカル推論アプリケーション220に伝達する。一実施形態では、セーフティクリティカル推論アプリケーション220は、信頼度インジケータが閾値を下回る場合に、1つ以上の修正アクション(例えば、シャットダウン、システムの再起動、同じ画像の再試行、ユーザへの警告信号の生成、車両の減速、動作モードの変更)を実行する。
【0018】
図3を参照すると、推論障害検出フレームワーク300の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム310は、セーフティモニタフレームワーク315と、推論アクセラレータハードウェア350と、を含む。一実施形態では、セーフティモニタフレームワーク315は、テスト生成ユニット320と、スケーラユニット325と、結果フィルタ330と、テスト検証ユニット335と、推論スタック340と、推論ドライバ345と、を含む。他の実施形態では、セーフティモニタフレームワーク315は、他のコンポーネントを含み、及び/又は、他の適切な方法で構成される。一実施形態では、セーフティモニタフレームワーク315は、自動安全完全性レベル(ASIL)リスク分類スキームに準拠するように設計されている。他の実施形態では、セーフティモニタフレームワーク315を、他のタイプの環境における他のリスク分類スキームに準拠するように設計することができる。
【0019】
一実施形態では、セーフティクリティカル推論アプリケーション305は、画像、テストベクトル及び推論ネットワーク仕様をセーフティモニタフレームワーク315に伝達する。テストベクトルは、テスト生成ユニット320によって受信され使用されて、元の画像に追加するオブジェクトを決定する。また、テストベクトルは、推論アクセラレータハードウェア350によって生成された結果が正確であるかどうかを判別するために使用される。一実施形態では、冗長オブジェクトが元の画像に追加され、冗長オブジェクトは、前の画像に存在するオブジェクトと同一である。別の実施形態では、前の画像に存在していなかった所定のオブジェクトが元の画像に追加される。例えば、一実施形態では、所定のオブジェクトは、1つ以上のテスト画像において既知の良好なオブジェクトであるとしてテストベクトルで識別されたオブジェクトである。本明細書で用いられる「既知の良好なオブジェクト」は、推論アクセラレータハードウェア350によって一貫した方法で正しく識別又は処理される確率が高いオブジェクトとして定義される。一実施形態では、元の画像に追加される所定のオブジェクトは、処理される画像内で出現する確率が高いことに少なくとも部分的に基づいて選択される。テスト生成ユニット320は、元の画像に1つ以上の追加の所定のオブジェクト(複数可)を追加して、修正画像を生成する。推論スタック340は、修正画像及び推論ネットワーク仕様を推論アクセラレータハードウェア350に伝達する。一実施形態では、修正画像及び推論ネットワーク仕様は、推論ドライバ345を介して推論アクセラレータハードウェア350に伝達される。
【0020】
推論アクセラレータハードウェア350は、修正画像を、提供された推論ネットワーク仕様にしたがって処理し、次いで、推論アクセラレータハードウェア350は、処理結果を推論スタック340に戻す。結果フィルタ330は、結果を分析し、また、結果をフィルタリングして、元の画像に追加された追加のオブジェクトを除去する。結果フィルタ330は、オブジェクト及び分類結果をアプリケーション305に伝達する。オブジェクト及び分類結果は、任意のタイプのデータを含むことができ、タイプは実施形態に応じて異なる。例えば、一実施形態では、アプリケーション305が元の画像内のオブジェクトの数を探している場合、結果は、元の画像内のオブジェクトの数及びこれらの位置を含む。他の実施形態では、アプリケーション305が元の画像内で何を検索しているかに応じて、他のデータをオブジェクト及び分類結果内で伝達することができる。
【0021】
一実施形態では、推論アクセラレータハードウェア350からの結果は、テスト検証ユニット335によって分析される。テスト検証ユニット335は、元の画像に追加された追加のオブジェクト(複数可)が推論アクセラレータハードウェア350によって正しく処理及び/又は分類されたかどうかを判別する。他の実施形態では、テスト検証ユニット335は、推論アクセラレータハードウェア350によって生成された結果を検証するために他の適切な技術を用いることができる。テスト検証ユニット335が、推論アクセラレータハードウェア350が既知の良好なオブジェクトを正しく処理したと判別した場合に、テスト検証ユニット335は、合格というテスト結果インジケータをアプリケーション305に返す。そうではなく、既知の良好なオブジェクトが正しく処理されなかった場合、テスト検証ユニット335は、失敗というテスト結果インジケータをアプリケーション305に返す。失敗というテスト結果インジケータを受信したことに応じて、アプリケーション305は、様々な修正アクション(例えば、再起動、エラーの生成、同じ画像の再生)の何れかを実行することができる。
【0022】
図4を参照すると、一実施形態による、セーフティクリティカルアプリケーションからセーフティモニタフレームワークに送信される画像400Aの例が示されている。図4に示す例では、画像400Aは、トラック402と、人404と、犬406と、馬408と、別の人410と、を含む。これらのオブジェクトを含む画像400Aのこの例は、1つの特定の実施形態を示すに過ぎないことを理解されたい。検出及び正しい識別の尤度が、識別された各オブジェクトを囲む破線のボックスの上部に示されている。一実施形態では、これらの確率は、ターゲットの推論アクセラレータエンジンのトレーニングフェーズ中に決定される。一実施形態では、これらの確率は、セーフティクリティカルアプリケーションが特定のニューラルネットワーク及び/又は画像を処理しているターゲットの推論アクセラレータエンジンのためのセーフティモニタフレームワークに提供するテストデータ内で提供される。
【0023】
図5を参照すると、一実施形態による、元の画像400Aからセーフティモニタフレームワークによって生成された修正画像400Bが示されている。修正画像400Bは、セーフティモニタフレームワーク(例えば、図3のセーフティモニタフレームワーク315)によって修正された後の(図4の)画像400Aを表すことを意図している。示すように、修正画像400Bは、元の画像400Aの境界の外側(右側)の修正画像400Bに追加された既知の良好なオブジェクト領域505とともに元の画像400Aを含む。修正画像400Bの左側の元の画像400Aの領域は変更されないままである。したがって、修正画像400Bの元の画像400Aの部分は、(図4の)画像400Aに見られる元のオブジェクトの全てを含む。
【0024】
一実施形態では、既知の良好なオブジェクト領域505は、テストベクトル画像の1つに見られる既知の良好なオブジェクトを表す人510を含む。他の実施形態では、既知の良好なオブジェクト領域505は、他の数及び/又はタイプのオブジェクトを含み得る。実施形態に応じて、既知の良好なオブジェクト領域505に示されるオブジェクトは、元の画像内のオブジェクトの正確な複製である冗長オブジェクト、及び/又は、元の画像400Aの一部として含まれない新しいオブジェクトを含み得る。さらに、既知の良好なオブジェクト領域505が修正画像400Bの右側に示されているが、これは単に1つの特定の実施形態を表すことを意図していることを理解されたい。他の実施形態では、既知の良好なオブジェクト領域505を、元の画像400Aの上部、左側、及び/又は、下部に追加することができる。いくつかの実施形態では、元の画像の一部が既知の良好なオブジェクト領域505として使用される。例えば、画像の一部が何らかの理由で必須でないと見なされる場合(例えば、特定の領域の画像コンテンツが処理結果に機能的影響を及ぼさないと判別される場合)、その特定の領域を既知の良好なオブジェクト領域として使用することができる。
【0025】
修正画像400Bを生成した後、セーフティモニタフレームワークは、修正画像400Bを推論アクセラレータエンジン(例えば、図3の推論アクセラレータハードウェア350)に伝達する。推論アクセラレータエンジンは、修正画像400Bを処理し、次いで、この処理に基づく出力をセーフティモニタフレームワークに伝達する。セーフティモニタフレームワークは、既知の良好なオブジェクト領域505に追加されたオブジェクトが、以前に提供されたテストデータに従って識別及び/又は処理されたかどうかを判別する。これらの追加されたオブジェクトが正しく識別及び/又は適切に処理された場合、セーフティモニタフレームワークは、合格インジケータをセーフティクリティカルアプリケーションに提供する。また、セーフティモニタフレームワークは、既知の良好なオブジェクト領域505内のオブジェクトを除外することによって、元の画像400Aに関する処理結果をフィルタリングする。次いで、セーフティモニタフレームワークは、これらのフィルタリングされた結果をセーフティクリティカルアプリケーションに提供する。
【0026】
一方、追加されたオブジェクトが誤って識別及び/又は誤って処理された場合、セーフティモニタフレームワークは、失敗インジケータをセーフティクリティカルアプリケーションに提供する。失敗インジケータの受信に応じて、セーフティクリティカルアプリケーションは、1つ以上の修正アプリケーションを実行する。例えば、一実施形態では、失敗インジケータの受信に応じて、セーフティクリティカルアプリケーションが終了する。別の実施形態では、失敗インジケータの受信に応じて、セーフティクリティカルアプリケーションは、推論アクセラレータエンジンによって再処理される同じフレームを生成する。他の実施形態では、失敗インジケータの受信に応じて、セーフティクリティカルアプリケーションは、他のアクションを実行する。
【0027】
図6を参照すると、推論アクセラレータに対するセーフティモニタフレームワークを動作する方法600の一実施形態が示されている。説明のために、この実施形態のステップ及び図7図9のステップを順番に示す。しかしながら、説明する方法の様々な実施形態では、説明する要素のうち1つ以上が同時に実行されてもよいし、図示した順序と異なる順序で実行されてもよいし、完全に省略されてもよいことに留意されたい。他の追加の要素も必要に応じて実行される。本明細書に記載される様々なシステム又は装置の何れも、方法600を実施するように構成されている。
【0028】
セーフティモニタフレームワークは、セーフティクリティカル推論アプリケーションからテストデータ及びニューラルネットワーク仕様を受信する(ブロック605)。テストデータには、トレーニング情報、テストベクトル、及び/又は、他のメタデータを含むことができる。場合によっては、テストデータは、方法600の開始前にセーフティモニタフレームワークによって事前に供給又は受信される。一実施形態では、テストベクトルは、以前に識別された及び/又は処理される画像において識別される確率が高いオブジェクトを含む。また、セーフティモニタフレームワークは、セーフティクリティカル推論アプリケーションから入力画像を受信する(ブロック610)。一実施形態では、入力画像は、リアルタイムアプリケーションにおいて処理される必要がある実画像である。次に、セーフティモニタフレームワークは、テストデータに基づいて、入力画像から修正画像を生成する(ブロック615)。一実施形態では、修正画像は、入力画像の境界の外側に追加された1つ以上の追加のオブジェクトを有する入力画像を含む。例えば、一実施形態では、セーフティモニタフレームワークは、前の入力画像内の第1のオブジェクトを検出する。この実施形態では、第1のオブジェクトが推論アクセラレータエンジンによって識別される閾値確率よりも大きいものとしてテストデータで識別された場合、セーフティモニタフレームワークは、第1のオブジェクトを、元の入力画像の外側のスペースに追加する。この例では、修正画像には、第1のオブジェクトに加えて元の入力画像が含まれている。元の入力画像の外側の領域に任意の数のオブジェクトを追加することができることに留意されたい。修正画像は、元の入力画像と追加の領域との組み合わせから生成される。
【0029】
次いで、セーフティモニタフレームワークは、修正画像を推論アクセラレータエンジンに伝達する(ブロック620)。次に、推論アクセラレータエンジンは、修正画像を処理する(ブロック625)。推論アクセラレータエンジンは、元の画像が修正されていることを認識していないことに留意されたい。したがって、推論アクセラレータエンジンは、画像がセーフティクリティカルアプリケーションから修正されることなく直接受信されたかのように通常の処理を実行する。次いで、推論アクセラレータエンジンは、修正画像の処理からの出力をセーフティモニタフレームワークに伝達する(ブロック630)。セーフティモニタフレームワークは、出力をチェックして、推論アクセラレータエンジンが正常に動作しているか誤動作しているかを判別する(ブロック635)。例えば、修正画像に追加された追加のオブジェクト(複数可)が予測通りに処理された場合、セーフティモニタフレームワークは、推論アクセラレータエンジンが正常に動作していると結論付ける。そうではなく、追加のオブジェクト(複数可)を処理する推論アクセラレータエンジンからの結果が予測しないものである及び/又は修正画像の元の画像部分における同じオブジェクト(複数可)からの結果と一致しない場合、セーフティモニタフレームワークは、推論アクセラレータエンジンが誤動作していると結論付ける。
【0030】
セーフティモニタフレームワークが、推論アクセラレータエンジンが誤動作していると判別した場合(条件付きブロック640:「はい」)、セーフティモニタフレームワークは、エラーメッセージを生成し、セーフティクリティカル推論アプリケーションに伝達する(ブロック645)。また、セーフティモニタフレームワークは、ブロック645において、推論アクセラレータエンジンからの他の出力をセーフティクリティカルアプリケーションに提供することができる。エラーメッセージの受信に応じて、セーフティクリティカルアプリケーションは、1つ以上の修正アクションを実行する(ブロック650)。セーフティクリティカルアプリケーションは、場合によっては、検出されたエラーのタイプ及び/又はセーフティクリティカルアプリケーションの現在のステータスに応じて、処理のために推論アクセラレータエンジンに後続の画像を送信し続けると任意に決定することができることに留意されたい。或いは、セーフティクリティカルアプリケーションは、エラーメッセージの受信に応じて終了を決定することができる。セーフティモニタフレームワークが、推論アクセラレータエンジンが正常に機能していると判別した場合(条件付きブロック640:「いいえ」)、セーフティモニタフレームワークは、非エラーメッセージを生成し、セーフティクリティカルアプリケーションに伝達する(ブロック655)。また、セーフティモニタフレームワークは、ブロック655において、推論アクセラレータエンジンからの他の出力(例えば、フィルタリングされた結果)をセーフティクリティカルアプリケーションに提供することもできる。非エラーメッセージの受信に応じて、セーフティクリティカルアプリケーションは、別の画像をセーフティモニタフレームワークに提供し、次いで、方法600はブロック610に戻る。
【0031】
図7を参照すると、セーフティモニタフレームワークを実装する方法700の一実施形態が示されている。セーフティモニタフレームワークは、セーフティクリティカルアプリケーションから入力画像及びテストデータを受信する(ブロック705)。セーフティモニタフレームワークは、テストデータ内で識別された任意のオブジェクトが前の画像に存在したかどうかを判別する(ブロック710)。この説明のために、入力画像は、カメラ入力ストリームのような画像の連続シーケンスの一部であると想定されている。テストデータによって識別された1つ以上のオブジェクトの何れかが前の画像に存在していた場合(条件付きブロック715:「はい」)、セーフティモニタフレームワークは、これらの識別されたオブジェクトのうち1つ以上の冗長コピーを元の画像の境界の外側に追加することによって、入力画像を修正する(ブロック720)。次いで、セーフティモニタフレームワークは、修正画像を推論アクセラレータエンジンに伝達する(ブロック725)。テストデータによって識別された何れのオブジェクトも前の画像に存在していない場合(条件付きブロック715:「いいえ」)、セーフティモニタフレームワークは、従来の方法で実行される処理を用いて、入力画像を推論アクセラレータエンジンに渡す(ブロック730)。ブロック730後に、方法700は終了する。
【0032】
ブロック725の後に、推論アクセラレータエンジンは、修正画像を処理し、処理結果の第1のセットをセーフティモニタフレームワークに戻す(ブロック735)。セーフティモニタフレームワークは、処理結果の第1のセットを分析して、エラーステータスメッセージを生成する(ブロック740)。エラーステータスメッセージは、推論アクセラレータエンジンのエラーステータス又はその尤度を示すことに留意されたい。一実施形態では、エラーステータスメッセージは、推論アクセラレータエンジンが正常に機能しているか誤動作しているかの何れかを示す単一ビットである。また、セーフティモニタフレームワークは、処理結果の第1のセットを、処理結果の第2のセットに変換する(ブロック745)。一実施形態では、セーフティモニタフレームワークは、元の画像に対する修正に関連する結果データを処理結果の第1のセットから削除することによって、処理結果の第1のセットを、処理結果の第2のセットに変換する。言い換えると、処理結果の第2のセットは、修正画像ではなく元の画像が推論アクセラレータエンジンによって処理された場合のように処理結果が見えるものである。次に、セーフティモニタフレームワークは、エラーステータスメッセージ及び処理結果の第2のセットをセーフティクリティカルアプリケーションに伝達する(ブロック750)。ブロック750後に、方法700は終了する。
【0033】
図8を参照すると、セーフティクリティカルアプリケーションによって使用される信頼度インジケータを生成する方法800の一実施形態が示されている。セーフティモニタフレームワークは、セーフティクリティカルアプリケーションから推論アクセラレータエンジンに送信される画像を傍受(インターセプト)する(ブロック805)。一実施形態では、セーフティモニタフレームワークは、セーフティクリティカルアプリケーションと推論アクセラレータエンジンとの間に介在する。一実施形態では、セーフティクリティカルアプリケーションも推論アクセラレータエンジンも、セーフティモニタフレームワークがこれらの間に介在していることを認識していない。しかしながら、他の実施形態では、セーフティクリティカルアプリケーション及び/又は推論アクセラレータエンジンは、セーフティモニタフレームワークがこれらの間に配置されていることを認識している。セーフティモニタフレームワークは、画像に対して1つ以上の修正を加え、修正画像を推論アクセラレータエンジンに伝達する(ブロック810)。一実施形態では、1つ以上の修正は、1つ以上の追加のオブジェクトを元の画像の外側のスペースに追加することを含む。ビデオストリームの場合、オブジェクト識別の場合の信頼度レベルを向上させる1つの方法は、1つの類似オブジェクト及び1つの異なるオブジェクトを次のビデオフレーム内の追加のスペースに埋め込むことである(オブジェクトが近い時間距離で次のキャプチャフレーム内に存在すると仮定する)。
【0034】
推論アクセラレータエンジンが修正画像を処理した後に、セーフティモニタフレームワークは、推論アクセラレータエンジンからセーフティクリティカルアプリケーションに送信される結果を傍受(インターセプト)する(ブロック815)。セーフティモニタフレームワークは、その結果を分析して、推論アクセラレータエンジンが画像を正しく処理したことの尤度を決定する(ブロック820)。例えば、一実施形態では、セーフティモニタフレームワークは、結果が、誤分類が生じたと示すかどうかを決定する。画像に対する修正処理からの結果がテストデータで提供された結果と一致しない場合、セーフティモニタフレームワークは、推論アクセラレータが元の入力画像を誤って処理したことの尤度が比較的高いと結論付ける。一実施形態では、推論アクセラレータが画像を誤って処理したことの尤度が比較的高いことが、比較的低い(すなわち、ゼロに近い)信頼度インジケータで表現される。
【0035】
次に、セーフティモニタフレームワークは、推論アクセラレータエンジンが画像を正しく処理した確率を示す信頼度インジケータを生成する(ブロック825)。また、セーフティモニタフレームワークは、元の画像に対して行われた修正に関する結果をフィルタリングして除外することによって、結果を修正する(ブロック830)。次いで、セーフティモニタフレームワークは、信頼度インジケータ及び修正結果をセーフティクリティカルアプリケーションに戻す(ブロック835)。ブロック835後に、方法800は終了する。
【0036】
図9を参照すると、画像を修正するのに用いるオブジェクトを決定する方法900の一実施形態が示されている。セーフティモニタは、既知の良好なオブジェクト及びこれらが実画像に存在する確率を含むテストデータを受信する(ブロック905)。一実施形態では、セーフティクリティカルアプリケーションは、テストデータをセーフティモニタに伝達する。また、セーフティモニタは、前の画像の検出された出力を分析して、前の画像における様々なオブジェクトの検出頻度を追跡する(ブロック910)。
【0037】
セーフティモニタは、任意のオブジェクトが第1の閾値よりも大きい出現確率、及び、第2の閾値よりも大きい、前の画像における検出頻度の両方を有するかどうかを判別する(条件付きブロック915)。第1の閾値及び第2の閾値の値は、実施形態によって異なり得ることに留意されたい。任意のオブジェクトが第1の閾値よりも大きい出現確率、及び、第2の閾値よりも大きい、前の画像における検出頻度の両方を有する場合(条件付きブロック915:「はい」)、セーフティモニタは、これらのオブジェクトの1つ以上を、推論アクセラレータエンジンに伝達される次の画像に追加する(ブロック920)。そうではなく、第1の閾値よりも大きい出現確率、及び、第2の閾値よりも大きい、前の画像における検出頻度の両方を有するオブジェクトが存在しない場合(条件付きブロック915:「いいえ」)、セーフティモニタは、第1の閾値よりも大きい出現確率、又は、第2の閾値よりも大きい、前の画像における検出頻度の何れかを有する少なくとも1つのオブジェクトを、次の画像に追加する(ブロック925)。第1の閾値よりも大きい出現確率、又は、第2の閾値よりも大きい、前の画像における検出頻度の何れかを有するオブジェクトが存在しない場合、セーフティモニタは、別のタイプのオブジェクトを次の画像に追加することを選択することができ、又は、何れのオブジェクトも追加しないことを選択することができる。第1の閾値よりも大きい出現確率、及び、第2の閾値よりも大きい、前の画像における検出頻度の両方を有するオブジェクトが存在しない場合、セーフティモニタは、第1の閾値の値及び/又は第2の閾値の値を低下させることができることに留意されたい。ブロック920,925の後に、方法900は終了する。
【0038】
図10を参照すると、セーフティモニタフレームワークが動作モードを変更する方法1000の一実施形態が示されている。セーフティクリティカルアプリケーション及び推論アクセラレータエンジンを有するセーフティクリティカルシステムにおけるセーフティモニタは、第1のモードで動作することによって起動する(ブロック1005)。一実施形態では、第1のモードで動作している間、セーフティモニタは、実画像データを分類のために推論アクセラレータエンジンに送信する。セーフティモニタが第1の条件を検出した場合(条件付きブロック1010:「はい」)、セーフティモニタは、推論アクセラレータエンジンをモニタリングするために第2のモードに切り替わる(ブロック1015)。「第2のモード」は、本明細書において「セーフティモード」とも呼ばれることに留意されたい。一実施形態では、第2のモードで動作する場合、セーフティモニタは、実験画像データを生成し、実験画像データを分類のために推論アクセラレータエンジンに伝達する。「実験画像データ」は、本明細書において「既知の良好なオブジェクト画像データ」とも呼ばれることに留意されたい。この実施形態では、推論アクセラレータエンジンが実験画像データに対する分類結果を生成した後に、セーフティモニタは、分類結果の分析に基づいて信頼度インジケータを生成し、信頼度インジケータは、結果が正確である確率を表す。
【0039】
一実施形態では、第1の条件は、強化されたモニタリングが実行されるべきであるという信号を、セーフティクリティカルアプリケーションから受信することである。例えば、アプリケーション内のコードの特に重要な部分が検出され、アプリケーションは、コードのこの部分が実行されている期間中に、推論アクセラレータエンジンの強化された監視が望ましいと判別することができる。別の実施形態では、第1の条件は、推論アクセラレータエンジンに関連する異常動作を検出することである。別の実施形態では、第1の条件は、タイマーの期限切れである。他の実施形態では、第1の条件は、他のタイプの条件であってもよい。
【0040】
一実施形態では、第1のモードで動作している場合、セーフティモニタは、N個の画像のうち1つを修正する(Nは、1よりも大きい正の整数である)。この実施形態では、第2のモードで動作している場合、セーフティモニタは、M個の画像のうち1つを修正する(Mは、Nよりも小さい正の整数である)。セーフティモニタが第1の条件を検出しなかった場合(条件付きブロック1010:「いいえ」)、セーフティモニタは、第1のモードのままである(ブロック1020)。ブロック1020後に、方法1000は条件付きブロック1010に戻る。
【0041】
ブロック1015の後に、セーフティモニタが第2の条件を検出した場合(条件付きブロック1020:「はい」)、セーフティモニタは、第1のモードに戻る(ブロック1025)。一実施形態では、第2の条件は、第1のモードに再度移行するという信号をセーフティクリティカルアプリケーションから受信することである。別の実施形態では、第2の条件は、推論アクセラレータエンジンによる正常動作への復帰を検出することである。別の実施形態では、第2の条件は、タイマーの値が特定の範囲内にあることである。他の実施形態では、第2の条件は、他のタイプの条件であってもよい。ブロック1025の後に、方法1000は条件付きブロック1010に戻る。そうではなく、セーフティモニタが第2の条件を検出しなかった場合(条件付きブロック1020:「いいえ」)、セーフティモニタは、第2のモードのままである(ブロック1030)。ブロック1030の後に、方法1000は条件付きブロック1020に戻る。他の実施形態では、セーフティモニタは、2つよりも多い異なるタイプのモードで動作することを理解されたい。これらの実施形態では、推論アクセラレータエンジンの頻度を、アプリケーション及び/又は推論アクセラレータエンジンのステータスに応じて、より細かい粒度で調整することができる。例えば、セーフティモニタを、10フレームおき、9フレームおき、8フレームおき、7フレームおき等で変更することができる。或いは、セーフティモニタは、1フレームおき、2フレームおき、3フレームおき等で実験画像データの生成を切り替えることができる。
【0042】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、本明細書に説明する方法及び/又はメカニズムを実施する。例えば、汎用プロセッサ又は特殊目的プロセッサによって実行可能なプログラム命令が考慮される。様々な実施形態では、このようなプログラム命令は、高レベルプログラミング言語によって表すことができる。他の実施形態では、プログラム命令は、高レベルプログラミング言語からバイナリ、中間、又は、他の形式にコンパイルされてもよい。或いは、ハードウェアの動作又は設計を記述したプログラム命令が書き込まれてもよい。このようなプログラム命令は、C等の高レベルプログラミング言語によって表されてもよい。或いは、Verilog等のハードウェア設計言語(HDL)が使用されてもよい。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体の何れかに記憶される。記憶媒体は、プログラム実行のためにプログラム命令をコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。一般的に、このようなコンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
【0043】
上記の実施形態は、実施形態の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に理解されると、多数の変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲は、このような変形及び修正の全てを包含するものと解釈されることが意図されている。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10