(57)【要約】  機械学習モデルの様々な側面を強化するための機械学習システムが提供される。幾つかの側面では、物体の実質的にフォトリアリスティックな３次元（３Ｄ）グラフィカルモデルにアクセスし、３Ｄグラフィカルモードの一組のトレーニング画像を生成する。一組のトレーニング画像は、欠陥を追加し、かつ、トレーニング画像のフォトリアリスティックな品質を劣化させるために生成される。一組のトレーニング画像は、人工ニューラルネットワークをトレーニングするためのトレーニングデータとして提供される。
2021526253.tif 000002
【特許請求の範囲】
【請求項１】
第１センサデータを、機械学習モデルの第１部分への入力として提供する段階と、
第２センサデータを、前記機械学習モデルの第２部分への入力として提供する段階であって、前記機械学習モデルは、連結部と、一組の全結合層とを含み、前記第１センサデータは、デバイスにより生成される第１タイプのものであり、前記第２センサデータは、前記デバイスにより生成される異なる第２タイプのものであり、前記連結部は、前記機械学習モデルの前記第１部分の出力を第１入力として受け取り、前記機械学習モデルの前記第２部分の出力を第２入力として受け取り、前記連結部の出力は、前記一組の全結合層に提供される、段階と、
第１データおよび第２データから、環境内の前記デバイスの姿勢を含む、前記機械学習モデルの出力を生成する段階と
を備える方法。
【請求項２】
前記第１センサデータは、画像データを含み、前記第２センサデータは、前記デバイスの動きを識別する、請求項１に記載の方法。
【請求項３】
前記画像データは、赤・緑・青（ＲＧＢ）データを含む、請求項２に記載の方法。
【請求項４】
前記画像データは、３Ｄ点群データを含む、請求項２に記載の方法。
【請求項５】
前記第２センサデータは、慣性測定装置（ＩＭＵ）データを含む、請求項２に記載の方法。
【請求項６】
前記第２センサデータは、全地球測位データを含む、請求項２に記載の方法。
【請求項７】
前記機械学習モデルの前記第１部分は、前記第１タイプのセンサデータ用に調整され、前記機械学習モデルの前記第２部分は、前記第２タイプのセンサデータ用に調整される、請求項１から６の何れか一項に記載の方法。
【請求項８】
第３タイプの第３センサデータを、前記機械学習モデルの第３部分への入力として提供する段階を更に備え、前記出力は更に、第３データに基づいて生成される、請求項１から７の何れか一項に記載の方法。
【請求項９】
前記姿勢の出力は、回転成分および並進成分を含む、請求項１から８の何れか一項に記載の方法。
【請求項１０】
前記一組の全結合層のうちの１つは、前記回転成分を決定するための全結合層を含み、前記一組の全結合層のうちの別の１つは、前記並進成分を決定するための全結合層を含む、請求項９に記載の方法。
【請求項１１】
前記機械学習モデルの前記第１部分および前記第２部分の一方または両方は、それぞれの畳み込み層を含む、請求項１から１０の何れか一項に記載の方法。
【請求項１２】
前記機械学習モデルの前記第１部分および前記第２部分の一方または両方は、１つまたは複数のそれぞれの長短期記憶（ＬＳＴＭ）ブロックを含む、請求項１から１１の何れか一項に記載の方法。
【請求項１３】
前記デバイスは、自律型機械を含み、前記自律型機械は、前記姿勢に基づいて、前記環境内をナビゲートする、請求項１から１２の何れか一項に記載の方法。
【請求項１４】
前記自律型機械は、ロボット、ドローン、または自律型車両のうちの１つを含む、請求項１３に記載の方法。
【請求項１５】
請求項１から１４の何れか一項に記載の方法を実行するための手段を備えるシステム。
【請求項１６】
前記手段は、請求項１から１４の何れか一項に記載の方法の少なくとも一部を実行するためのハードウェア回路を有する、請求項１５に記載のシステム。
【請求項１７】
前記手段は、請求項１から１４の何れか一項に記載の方法の少なくとも一部を実行するためのソフトウェアロジックを有する、請求項１５に記載のシステム。
【請求項１８】
プロセッサに、
第１センサデータを、機械学習モデルの第１部分への入力として提供する手順と、
第２センサデータを、前記機械学習モデルの第２部分への入力として提供する手順であって、前記機械学習モデルは、連結部と、一組の全結合層とを含み、前記第１センサデータは、デバイスにより生成される第１タイプのものであり、前記第２センサデータは、前記デバイスにより生成される異なる第２タイプのものであり、前記連結部は、前記機械学習モデルの前記第１部分の出力を第１入力として受け取り、前記機械学習モデルの前記第２部分の出力を第２入力として受け取り、前記連結部の出力は、前記一組の全結合層に提供される、手順と、
第１データおよび第２データから、環境内の前記デバイスの姿勢を含む、前記機械学習モデルの出力を生成する手順と
を実行させるプログラム。
【請求項１９】
プロセッサと、
メモリと、
一組のセンサと、
前記プロセッサにより実行可能な機械学習エンジンと
を備えるシステムであって、
前記プロセッサは、
前記一組のセンサにより生成される第１センサデータにアクセスすることと、
前記第１センサデータを、機械学習モデルの第１部分への入力として提供することと、
前記一組のセンサにより生成される第２センサデータにアクセスすることと、
前記第２センサデータを、前記機械学習モデルの第２部分への入力として提供することであって、前記機械学習モデルは、連結部と、一組の全結合層とを含み、前記第１センサデータは、前記一組のセンサにより生成される第１タイプのものであり、前記第２センサデータは、前記一組のセンサにより生成される異なる第２タイプのものであり、前記連結部は、前記機械学習モデルの前記第１部分の出力を第１入力として受け取り、前記機械学習モデルの前記第２部分の出力を第２入力として受け取り、前記連結部の出力は、前記一組の全結合層に提供される、提供することと、
第１データおよび第２データから、環境内のデバイスの姿勢を含む前記機械学習モデルの出力を生成することと
を行う、
システム。
【請求項２０】
前記機械学習モデルの前記出力を使用して前記環境内の機械を操作するためのアクチュエータを更に備える、請求項１９に記載のシステム。
【請求項２１】
自律型車両を備える請求項１９に記載のシステム。
【請求項２２】
自律ドローンを備える請求項１９に記載のシステム。
【請求項２３】
ロボットを備える請求項１９に記載のシステム。
【請求項２４】
前記第１センサデータは、画像データを含み、前記第２センサデータは、前記デバイスの動きを識別する、請求項１９から２３の何れか一項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願］
本願は、２０１８年５月２３日に出願された米国仮特許出願第６２／６７５，６０１号に基づく利益を主張するものであり、その出願全体が参照により本明細書に組み込まれる。
【０００２】
本開示は概して、コンピュータシステム、より具体的には機械学習システムの分野に関する。
【背景技術】
【０００３】
コンピュータビジョンおよびグラフィックスの世界は、ＭａｇｉｃＬｅａｐ（商標）、Ｍｉｃｒｏｓｏｆｔ（商標）ＨｏｌｏＬｅｎｓ（商標）、Ｏｃｕｌｕｓ（商標）Ｒｉｆｔ（商標）、並びに、Ｖａｌｖｅ（商標）およびＨＴＣ（商標）からのもののような他のＶＲシステムなど、拡張現実（ＡＲ）製品、仮想現実（ＶＲ）製品、および複合現実（ＭＲ）製品の登場に伴い迅速に収束しつつある。係るシステムにおける現行のアプローチは、並行して実行される別個のグラフィックス処理装置（ＧＰＵ）およびコンピュータビジョンサブシステムを使用することである。これらの並列システムは、プロセッサのアレイおよび／またはプログラマブルハードウェアアクセラレータ上で実行されるソフトウェアに実装されるコンピュータビジョンパイプラインと並行して、前から存在するＧＰＵから組み立てることができる。
【図面の簡単な説明】
【０００４】
開示されている主題の様々な目的、特徴、および利点は、以下の図面に関連して検討すると、開示されている主題の以下の詳細な説明を参照しながらより完全に理解することができる。これらの図面では、同様の参照番号が同様の要素と識別される。添付図面は概略的なものであり、縮尺通りに描画されることを意図するものではない。分かりやすくするために全ての図において全てのコンポーネントをラベル付けすることは行っていない。開示されている主題を当業者が理解できるようにするために図が必要でない場合は、開示されている主題の各実施形態の全てのコンポーネントを示すことも行っていない。
【０００５】
【図１】従来の拡張または複合現実レンダリングシステムを示す。
【０００６】
【図２】幾つかの実施形態に係るボクセルベースの拡張または複合現実レンダリングシステムを示す。
【０００７】
【図３】幾つかの実施形態に係る密なボリュメトリック表現と疎なボリュメトリック表現との違いを示す。
【０００８】
【図４】幾つかの実施形態に係るシーンの合成図を示す。
【０００９】
【図５】幾つかの実施形態に係る例示的な要素ツリー構造の詳細レベルを示す。
【００１０】
【図６】幾つかの実施形態に係る、本願のデータ構造およびボクセルデータを利用できる用途を示す。
【００１１】
【図７】幾つかの実施形態に係る、３Ｄ数字を認識するために使用される例示的なネットワークを示す。
【００１２】
【図８】幾つかの実施形態に係る、暗黙の詳細レベルを使用して同じデータ構造に対して実行される複数の分類を示す。
【００１３】
【図９】幾つかの実施形態に係る２Ｄ畳み込みニューラルネットワークによる演算排除を示す。
【００１４】
【図１０】幾つかの実施形態に係る、例示的なテスト画像の分析から得られた実験結果を示す。
【００１５】
【図１１】幾つかの実施形態に係る、演算をカリングするためのハードウェアを示す。
【００１６】
【図１２】幾つかの実施形態に係る、演算をカリングするためのハードウェアの改良を示す。
【００１７】
【図１３】幾つかの実施形態に係るハードウェアを示す。
【００１８】
【図１４】少なくとも幾つかの実施形態に係る、例示的なトレーニングセット生成器を採用した例示的なシステムを示す。
【００１９】
【図１５】少なくとも幾つかの実施形態に係る合成トレーニングデータの例示的な生成を示す。
【００２０】
【図１６】少なくとも幾つかの実施形態に係る例示的なシャムネットワークを示す。
【００２１】
【図１７】少なくとも幾つかの実施形態に係る、自律的比較を実行するためのシャムネットワークの例示的な使用を示す。
【００２２】
【図１８】少なくとも幾つかの実施形態に係る点群の例示的なボクセル化を示す。
【００２３】
【図１９】少なくとも幾つかの実施形態に係る例示的な機械学習モデルの簡略ブロックダイアグラムである。
【００２４】
【図２０】少なくとも幾つかの実施形態に係る、モデルの例示的なトレーニングの態様を示した簡略ブロックダイアグラムである。
【００２５】
【図２１】少なくとも幾つかの実施形態に係る、ニューラルネットワークを使用してナビゲーション用の３Ｄマップを生成する例示的なロボットを示す。
【００２６】
【図２２】少なくとも幾つかの実施形態に係る、慣性測定データと共に使用するための例示的な機械学習モデルを示したブロックダイアグラムである。
【００２７】
【図２３】少なくとも幾つかの実施形態に係る、画像データと共に使用するための例示的な機械学習モデルを示したブロックダイアグラムである。
【００２８】
【図２４】図２２および図２３の例におけるモデルの態様を組み合わせた例示的な機械学習モデルを示したブロックダイアグラムである。
【００２９】
【図２５Ａ】図２４の例示的な機械学習モデルと同様の機械学習モデルの結果を示したグラフである。
【図２５Ｂ】図２４の例示的な機械学習モデルと同様の機械学習モデルの結果を示したグラフである。
【００３０】
【図２６】少なくとも幾つかの実施形態に係る、例示的なニューラルネットワークオプティマイザを含む例示的なシステムを示す。
【００３１】
【図２７】少なくとも幾つかの実施形態に係る、ニューラルネットワークモデルの例示的な最適化を示したブロックダイアグラムである。
【００３２】
【図２８】例示的なニューラルネットワークモデルの最適化中に生成および使用される例示的な結果を示した表である。
【００３３】
【図２９】例示的なニューラルネットワークモデルの最適化中に生成および使用される結果を示したグラフを示す。
【００３４】
【図３０Ａ】少なくとも幾つかの実施形態に係る、ハイブリッドニューラルネットワーク枝刈りの例を示した簡略ブロックダイアグラムである。
【００３５】
【図３０Ｂ】少なくとも幾つかの実施形態に係る、ニューラルネットワークの例示的な枝刈りを示した簡略フロー図である。
【００３６】
【図３１】少なくとも幾つかの実施形態に係る、ニューラルネットワークの枝刈りに関連して実行される例示的な重みの量子化を示した簡略ブロックダイアグラムである。
【００３７】
【図３２】例示的なニューラルネットワーク枝刈り技術の結果を比較した表である。
【００３８】
【図３３Ａ】少なくとも幾つかの実施形態に係る、機械学習と関連付けられる例示的なコンピュータ実装技術の簡略フロー図である。
【図３３Ｂ】少なくとも幾つかの実施形態に係る、機械学習と関連付けられる例示的なコンピュータ実装技術の簡略フロー図である。
【図３３Ｃ】少なくとも幾つかの実施形態に係る、機械学習と関連付けられる例示的なコンピュータ実装技術の簡略フロー図である。
【図３３Ｄ】少なくとも幾つかの実施形態に係る、機械学習と関連付けられる例示的なコンピュータ実装技術の簡略フロー図である。
【図３３Ｅ】少なくとも幾つかの実施形態に係る、機械学習と関連付けられる例示的なコンピュータ実装技術の簡略フロー図である。
【図３３Ｆ】少なくとも幾つかの実施形態に係る、機械学習と関連付けられる例示的なコンピュータ実装技術の簡略フロー図である。
【００３９】
【図３４】幾つかの実施形態に係る例示的なマルチスロットベクトルプロセッサを示す。
【００４０】
【図３５】幾つかの実施形態に係る例示的なボリュメトリック加速ハードウェアを示す。
【００４１】
【図３６】幾つかの実施形態に係るボクセルキューブの編成を示す。
【００４２】
【図３７】幾つかの実施形態に係る２レベルのスパースボクセルツリーを示す。
【００４３】
【図３８】幾つかの実施形態に係る２レベルのスパースボクセルツリーを示す。
【００４４】
【図３９】幾つかの実施形態に係る例示的なボクセルデータのストレージを示す。
【００４５】
【図４０】幾つかの実施形態に係る例示的なボリュメトリックデータ構造へのボクセルの挿入を示す。
【００４６】
【図４１】幾つかの実施形態に係る例示的な３Ｄボリュメトリック物体の投影を示す。
【００４７】
【図４２Ａ】図４２Ｂと図４２Ｃとの位置関係を示す。
【図４２Ｂ】例示的なボリュメトリックデータ構造を含む例示的な演算を示す。
【図４２Ｃ】例示的なボリュメトリックデータ構造を含む例示的な演算を示す。
【００４８】
【図４３】幾つかの実施形態に係る、投影を使用した簡略マップの生成を示す。
【００４９】
【図４４】幾つかの実施形態に係る、組み込みデバイスからの例示的なボリュメトリック３Ｄ測定値および／または単純な２Ｄ測定値の例示的な集約を示す。
【００５０】
【図４５Ａ】図４５Ｂと図４５Ｃとの位置関係を示す。
【図４５Ｂ】幾つかの実施形態に係る、２Ｄ  ２×２ビットマップ上における２Ｄ経路探索の例示的な加速を示す。
【図４５Ｃ】幾つかの実施形態に係る、２Ｄ  ２×２ビットマップ上における２Ｄ経路探索の例示的な加速を示す。
【００５１】
【図４６】幾つかの実施形態に係る、例示的なボリュメトリックデータ構造を使用した衝突検出の例示的な加速を示す。
【００５２】
【図４７】少なくとも幾つかの実施形態に係るデバイスを有する例示的なネットワークの簡略ブロックダイアグラムである。
【００５３】
【図４８】少なくとも幾つかの実施形態に係る例示的なフォグまたはクラウドコンピューティングネットワークの簡略ブロックダイアグラムである。
【００５４】
【図４９】少なくとも幾つかの実施形態に係る例示的なデバイスを含むシステムの簡略ブロックダイアグラムである。
【００５５】
【図５０】少なくとも幾つかの実施形態に係る例示的な処理デバイスの簡略ブロックダイアグラムである。
【００５６】
【図５１】少なくとも幾つかの実施形態に係る例示的なプロセッサのブロックダイアグラムである。
【００５７】
【図５２】少なくとも幾つかの実施形態に係る例示的なコンピューティングシステムのブロックダイアグラムである。
【発明を実施するための形態】
【００５８】
以下の説明では、開示されている主題を完全に理解できるよう、開示されている主題のシステムおよび方法、並びに、係るシステムおよび方法が動作し得る環境などに関する具体的な詳細を多数記載する。ただし、開示されている主題が係る具体的な詳細なくして実施され得ること、および、当技術分野で周知の特定の特徴が、開示されている主題の複雑化を回避すべく詳細に説明されていないことが、当業者には明らかであろう。更には、以下で提供する実施形態が例示的なものであり、開示されている主題の範囲内にある他のシステムおよび方法の存在が考えられることが解るであろう。
【００５９】
拡張現実、仮想現実、複合現実、自律型デバイス、およびロボットに基づいた、かつ、それらを組み込んだ、３次元空間およびジオメトリのボリュームを表すデータモデルを使用し得る様々な技術が登場している。係る３Ｄデータまたはボリュメトリックデータを使用する様々な実環境および仮想環境の記述には従来大規模なデータセットが含まれているが、幾つかのコンピューティングシステムは望ましい方式での処理に苦心してきた。更には、ドローン、ウェアラブルデバイス、仮想現実システムなどといったデバイスが小さくなるにつれて、係るデバイスのメモリおよび処理リソースも制約され得る。例として、ＡＲ／ＶＲ／ＭＲアプリケーションは、サポートするハードウェアを使用して生成されるグラフィカル表現に高フレームレートを要求し得る。ただし、幾つかのアプリケーションでは、係るハードウェアのＧＰＵおよびコンピュータビジョンサブシステムは、望ましい結果を生成すべく（例えば、信頼できる結果を生成するフレームレートで信頼できるグラフィカルシーンを生成し、数ある例示的な目標の中でもとりわけ、過度の待ち時間に起因するユーザの乗り物酔いを防ぐべく）、最大１３０ｆｐｓ（７ミリ秒）などの高速でデータ（例えば、３Ｄデータ）を処理する必要があり得る。同様に更なるアプリケーションに挑戦して、大きなボリュームを記述したデータを満足のいくように処理する一方で、数ある例示的な問題の中でもとりわけ、対応するシステムの処理、メモリ、電力、アプリケーション要件の制約を満たしてよい。
【００６０】
幾つかの実装では、コンピューティングシステムが、形式に従って定義されたスパースボリュメトリックデータを生成および／または使用するためのロジックを備えてよい。例えば、様々なシステムおよびアプリケーションでコンピュータビジョンおよび３Ｄレンダリングを統合するために、定義されたボリュメトリックデータ構造が提供され得る。物体のボリュメトリック表現は、例えば、ステレオスコピックカメラまたは深度カメラなどの光センサを使用して撮像され得る。物体のボリュメトリック表現は、複数のボクセルを含むことができる。改善されたボリュメトリックデータ構造を定義し、対応するボリュメトリック表現を再帰的に細分化して物体の目標解像度を取得できるようにしてよい。細分化の間、これらのボクセルのうちの１つまたは複数に含まれ得るボリュメトリック表現の空きスペースを、ボリュメトリック表現（およびサポート演算）からカリングすることができる。空きスペースは、物体の幾何学的特性を含まないボリュメトリック表現の領域であってよい。
【００６１】
故に、改善されたボリュメトリックデータ構造では、対応するボリューム内の個々のボクセルが、「占有」（対応するボリュメトリック空間内に存在する何らかのジオメトリのため）、または「空」（対応するボリュームが空きスペースで構成されていることを表す）とタグ付けされ得る。係るタグは更に、対応するサブボリュームのうちの１つまたは複数も占有されていること（例えば、ペアレントまたは上位レベルのボクセルが占有としてタグ付けされている場合）、または、そのサブボリュームの全てが空きスペースであること（すなわち、ペアレントまたは上位レベルのボクセルが空であるとタグ付けされている場合）を指定するものとして解釈され得る。幾つかの実装では、ボクセルを空であるとタグ付けすると、ボクセルおよび／または対応するサブボリュームのボクセルを、対応するボリュメトリック表現を生成するために使用される演算から効果的に除去できることがある。ボリュメトリックデータ構造は、スパースツリー構造に従ったもの、例えば、スパース・セクサクワターナリィ・ツリー（ＳＳＴ：Ｓｐａｒｓｅ  Ｓｅｘａｑｕａｔｅｒｎａｒｙ  Ｔｒｅｅ）形式に従ったものであってよい。更に、スパースボリュメトリックデータ構造への係るアプローチでは、物体のボリュメトリック表現を格納するために従来使用されているよりも比較的少ないストレージ空間が利用され得る。更には、ボリュメトリックデータの圧縮によって、数ある例示的な利益の中でもとりわけ、係る表現の伝送の実行可能性が高まり、係る表現のより高速の処理が可能になり得る。
【００６２】
ボリュメトリックデータ構造をハードウェアアクセラレーションして、３Ｄレンダラを迅速に更新できるようにすることで、別個のコンピュータビジョンシステムおよびグラフィックスシステムで発生し得る遅延をなくすことができる。係る遅延によって待ち時間が生じることがあり、ＡＲ、ＶＲ、ＭＲ、および他のアプリケーションで使用すると、更なる欠点の中でもとりわけ、ユーザに乗り物酔いが生じることがある。加速されたデータ構造内の幾何学的特性の占有についてボクセルを迅速にテストする機能によって、リアルタイムで更新できる低遅延のＡＲ、ＶＲ、ＭＲ、または他のシステムの構築が可能になる。
【００６３】
幾つかの実施形態では、ボリュメトリックデータ構造の機能がフレーム内警告を提供してもよい。例えば、ＡＲ、ＶＲ、ＭＲ、および他のアプリケーションにおいて、画像化されたシーンでユーザが実物体または合成物体と衝突する可能性が高い場合、または、ドローンまたはロボット用のコンピュータビジョンアプリケーションにおいて、画像化されたシーンで係るデバイスが実物体または合成物体と衝突する可能性が高い場合に、ボリュメトリックデータ構造が提供する処理速度によって、差し迫った衝突の警告が可能になる。
【００６４】
本開示の実施形態は、ロボット、拡張および複合現実のヘッドセット用のヘッドマウント型ディスプレイ、並びに、電話およびタブレットなどのアプリケーションにおけるボリュメトリックデータの格納および処理に関するものであり得る。本開示の実施形態では、ボクセルのグループ内の各ボリュメトリック要素（例えば、ボクセル）、および、オプションとして、ボクセルのジオメトリに関連する物理量を単一のビットとして表す。６４個のボクセルのグループに関連する更なるパラメータ、例えば、対応する赤・緑・青（ＲＧＢ）または他の配色のエンコーディング、透明度、切り捨て符号付き距離関数（ＴＳＤＦ）の情報などがボクセルと関連付けられ、（例えば、２つまたはそれより多くのビットが各ボクセルを表すために使用されるように、）関連付けられたオプションの６４ビットデータ構造に格納され得る。係る表現スキームによって、最小メモリ要件が実現され得る。更には、ボクセルを単一のビットで表すと、ボリュメトリック表現の要素を論理的または数学的に組み合わせるための多くの簡略化された計算を実行することができる。ボリュメトリック表現の要素を組み合わせることは、例えば、ボリューム内の平面をＯＲ演算して３Ｄボリュメトリックデータの２Ｄ投影を作成すること、および、とりわけ２．５Ｄ多様体で占有されているボクセルの数をカウントすることにより表面積を計算することを含むことができる。比較には、ＸＯＲロジックを使用して６４ビットサブボリューム（例えば、４＾３サブボリューム）を比較してよく、ボリュームを反転させることができる。ここでは、数ある例の中でもとりわけ、物体をマージして、それらを一緒にＯＲ演算することによりハイブリッド物体を作成することができる。
【００６５】
図１は、急速な頭部の動きに起因する変化と、レンダリングされたグラフィックスにオクルージョンおよびシャドウを生成し得る環境の変化とを考慮するための、ポストレンダリング接続装置を有する並列グラフィックスレンダリングサブシステムおよびコンピュータビジョンサブシステムで構成される従来の拡張または複合現実システムを示す。１つの例示的な実装では、システムは、バス１０１を介した相互接続、オンチップネットワークオンチップ、または他の相互接続によりグラフィックスパイプライン、コンピュータビジョンパイプライン、およびポストレンダリング補正装置の実行を制御するために、ホストメモリ１２４によりサポートされるホストプロセッサ１００を含むことができる。相互接続によって、適切なソフトウェアを実行するホストプロセッサ１００は、グラフィックス処理装置（ＧＰＵ）１０６、関連付けられるグラフィックスメモリ１１１、コンピュータビジョンパイプライン１１６、および関連付けられるコンピュータビジョンメモリ１２４の実行を制御することができる。一例では、ＯｐｅｎＧＬグラフィックスシェーダ１０７を介したＧＰＵ１０６を使用するグラフィックスのレンダリング（例えば、三角形リスト１０５上で動作する）が、コンピュータビジョンパイプラインより遅い速度で行われ得る。結果として、グラフィックスがＧＰＵ１０６によりレンダリングされてから発生した可能性がある頭部姿勢およびオクルージョンのシーンジオメトリの変化を考慮するために、ワープエンジン１０８およびディスプレイ／オクルージョンプロセッサ１０９を介したポストレンダリング補正を実行することができる。ＧＰＵ１０６の出力は、数ある例の中でもとりわけ、頭部姿勢パイプライン１２０からの正しい制御信号１２１およびオクルージョンパイプライン１２２からの正しい制御信号１２３と併せて使用することで、頭部姿勢１１９およびオクルージョンジオメトリ１１３の任意の変化を考慮するための正しいグラフィックス出力を生成できるように、タイムスタンピングされる。
【００６６】
ＧＰＵ１０６と並行して、複数のセンサおよびカメラ（例えば、深度およびビジョンの処理１１７のための能動型ステレオカメラおよび受動型ステレオカメラを含む）が、コンピュータビジョンパイプライン１１６に接続され得る。コンピュータビジョンパイプライン１１６は、少なくとも３つのステージのうちの１つまたは複数を含んでよく、これらのステージの各々は、下位レベルの処理の複数のステージを含むことができる。一例では、コンピュータビジョンパイプライン１１６のステージは、画像信号処理（ＩＳＰ）パイプライン１１８、頭部姿勢パイプライン１２０、およびオクルージョンパイプライン１２２であってよい。ＩＳＰパイプライン１１８は、入力カメラセンサ１１７の出力を受け取り、それらを調整することで、それらがその後の頭部姿勢およびオクルージョンの処理に使用され得るようにすることができる。頭部姿勢パイプライン１２０は、ＩＳＰパイプライン１１８の出力を受け取り、それをヘッドセット１１０内の慣性測定装置（ＩＭＵ）の出力１１９と一緒に使用して、対応する出力グラフィックスフレームがＧＰＵ１０６によりレンダリングされてからの頭部姿勢の変化を計算することができる。頭部姿勢パイプライン（ＨＰＰ）１２０の出力１２１は、ユーザ指定のメッシュと共にワープエンジン１０８に適用されて、ＧＰＵ出力１０２を歪めることで、更新された頭部姿勢位置１１９と一致させることができる。オクルージョンパイプライン１２２は、頭部姿勢パイプライン１２１の出力を受け取り、シーンジオメトリ上に対応するシャドウ１１４を生成するはずである、視野に入る手１１３（または他の例示的な物体）などの視野内の新しい物体を探すことができる。オクルージョンパイプライン１２２の出力１２３は、ワープエンジン１０８の出力１０３の上に視野を正確に重ね合わせるために、ディスプレイおよびオクルージョンプロセッサ１０９により使用され得る。数ある例示的な使用事例および特徴の中でもとりわけ、ディスプレイおよびオクルージョンプロセッサ１０９は、計算された頭部姿勢１１９を使用して合成シャドウ１１４のシャドウマスクを生成し、ディスプレイおよびオクルージョンプロセッサ１０９は、シャドウマスクの上に手１１３のオクルージョンジオメトリを合成して、ワープエンジン１０８の出力１０３の上にグラフィカルシャドウ１１４を生成し、拡張／複合現実ヘッドセット１１０上に表示するための最終出力フレーム１０４を生成することができる。
【００６７】
図２は、本開示の幾つかの実施形態に係るボクセルベースの拡張または複合現実レンダリングシステムを示す。図２に示す装置は、ホストＣＰＵ２００および関連付けられるホストメモリ２０１上に構成されるホストシステムを含むことができる。係るシステムは、バス２０４、オンチップネットワーク、または他の通信機構を介して、統合されたコンピュータビジョンおよびグラフィックスパイプライン２２３、並びに、ヘッドマウント型の拡張または複合現実ディスプレイ２１１上に表示するために最終シーンでレンダリングされる実際のボクセルおよび合成ボクセルを含む、関連付けられる統合されたコンピュータビジョンおよびグラフィックスメモリ２１３と通信することができる。ＡＲ／ＭＲディスプレイ２１１は、複数の能動型および受動型の画像センサ２１４と、頭部姿勢２２２の向きの変化を測定するために使用される慣性測定装置（ＩＭＵ）２１２とを含んでもよい。
【００６８】
組み合わされたレンダリングパイプラインにおいて、合成ジオメトリは、ＯｐｅｎＧＬ  ＪｉＴ（Ｊｕｓｔ−ｉｎ−Ｔｉｍｅ）トランスレータ２０５により処理されて合成ボクセルジオメトリ２０２を生成する三角形リスト２０４から開始して生成され得る。合成ボクセルジオメトリは、例えば、三角形リストから三角形の主平面を選択することにより生成され得る。次に、選択された平面内の各三角形の２Ｄラスタライゼーションが（例えば、Ｘ方向およびＺ方向に）実行され得る。第３座標（例えば、Ｙ）は、三角形全体にわたって補間される属性として作成され得る。ラスタライズされた三角形の各ピクセルは、対応するボクセルの定義をもたらし得る。この処理は、ＣＰＵまたはＧＰＵにより実行され得る。それぞれのラスタライズされた三角形は、ＧＰＵにより実行されると、数ある例示的な実装の中でもとりわけ、ＧＰＵから読み戻されて、ＧＰＵがピクセルを描画したボクセルを作成することができる。例えば、合成ボクセルは、リストの２Ｄバッファを使用して生成されてよく、リストの各エントリは、そのピクセルでレンダリングされたポリゴンの深度情報を格納する。例えば、正投影の視点（例えば、トップダウン）を使用して、モデルがレンダリングされ得る。例えば、例示的なバッファで提供される全ての（ｘ、ｙ）は、対応するボクセルボリューム内（例えば、（ｘ、ｙ、０）から（ｘ、ｙ、４０９５）まで）の（ｘ、ｙ）の列を表すことができる。次に、各列は、各リスト内の情報を使用して、３Ｄスキャンラインとして情報からレンダリングされ得る。
【００６９】
図２の例を続けると、幾つかの実装では、合成ボクセルジオメトリ２０２は、ローカライゼーションおよびマッピングの同時実行（ＳＬＡＭ）パイプライン２１７を使用して構築される、測定されたジオメトリボクセル２２７と組み合わされ得る。ＳＬＡＭパイプラインは、画像信号処理（ＩＳＰ）パイプライン２１５を使用して最初に処理される能動型センサおよび／または受動型画像センサ２１４（例えば、２１４．１および２１４．２）を使用して出力２２５を生成することができ、出力２２５は、深度パイプライン２１６により深度画像２２６に変換され得る。能動型または受動型の画像センサ２１４（２１４．１および２１４．２）は、数ある例の中でもとりわけ、能動型または受動型のステレオセンサ、ストラクチャードライト方式センサ、飛行時間型センサを含むことができる。例えば、深度パイプライン２１６は、ストラクチャードライト方式または飛行時間型のセンサ２１４．１、または代わりに、受動型ステレオセンサ２１４．２からの深度データを処理することができる。１つの例示的な実装では、ステレオセンサ２１４．２は、数ある例示的な実装の中でもとりわけ、一対の受動型ステレオセンサを含むことができる。
【００７０】
深度パイプライン２１５により生成される深度画像は、ＳＬＡＭアルゴリズム（例えば、Ｋｉｎｅｃｔ  Ｆｕｓｉｏｎ）を使用して密なＳＬＡＭパイプライン２１７により処理されて、測定されたジオメトリボクセル２２７のボクセル化モデルを生成することができる。測定されたジオメトリボクセル２２７（例えば、実際のボクセルジオメトリ）を合成ボクセルジオメトリ２０２と組み合わせることで、ディスプレイプロセッサ２１０を介してディスプレイデバイス（例えば、ＶＲアプリケーションまたはＡＲアプリケーションにおけるヘッドマウント型ディスプレイ２１１）に出力するためのシーンの２Ｄレンダリングを生成することができる、レイトレーシングアクセラレータ２０６が提供され得る。係る実装では、測定されたジオメトリボクセル２２７および合成ジオメトリ２０２の実際のボクセルから完全なシーンモデルが構築され得る。結果として、（例えば、図１のように）２Ｄレンダリングされたジオメトリをワープする必要はない。係る実装は、頭部姿勢追跡センサと対応するロジックとを組み合わせて、実際のジオメトリと測定されたジオメトリとを正確に位置合わせすることができる。例えば、例示的な頭部姿勢パイプライン２２１が、ヘッドマウント型ディスプレイ２１２に装着されたＩＭＵ２１２からの頭部姿勢測定２３２を処理することができ、頭部姿勢測定パイプラインの出力２３１は、ディスプレイプロセッサ２１０を介したレンダリング中に考慮され得る。
【００７１】
幾つかの例では、オーディオ残響モデルをレンダリングし、かつ、実世界、仮想、または複合現実のシーンの物理的性質をモデル化すべく、統合されたレンダリングパイプラインが、測定されたジオメトリボクセル２２７（例えば、実際のボクセルモデル）および合成ジオメトリ２０２（例えば、合成ボクセルモデル）を使用してもよい。例として、物理パイプライン２１８は、測定されたジオメトリボクセル２２７および合成ボクセルジオメトリ２０２を受け取り、レイキャスティングアクセラレータ２０６を使用してヘッドマウント型ディスプレイ（ＨＭＤ）２１１内の左右のイヤホンに関する出力オーディオサンプルを計算することで、ボクセルデータ構造に組み込まれた音響反射係数を使用して出力サンプル２３０を計算することができる。同様に、２０２および２２７で構成される統合されたボクセルモデルを使用して、合成ＡＲ／ＭＲシーン内の合成物体の物理的更新を決定することもできる。物理パイプライン２１８は、合成シーンジオメトリを入力として受け取り、レンダリングのために、かつ、物理モデルの将来の反復の基礎として、合成ジオメトリ２０２への更新２２８を計算する前に、レイキャスティングアクセラレータ２０６を使用して衝突を計算する。
【００７２】
幾つかの実装では、図２に示すシステムなどのシステムは更に、数ある例の中でもとりわけ、ＩＳＰパイプライン２１５の出力からのＲＧＢ映像／画像入力、ＳＬＡＭパイプライン２１７の出力からのボリュメトリックシーンデータの何れかを処理できる、畳み込みニューラルネットワーク（ＣＮＮ）を実装および／または利用するための１つまたは複数のハードウェアアクセラレータを備えてよい。ハードウェア（ＨＷ）畳み込みニューラルネットワーク（ＣＮＮ）アクセラレータ２０７を排他的に使用して、または、プロセッサとＨＷ  ＣＮＮアクセラレータ２０７との組み合わせでニューラルネットワーク分類器を実行して、出力分類２３７を生成することができる。ボリュメトリック表現を推論するためのＨＷ  ＣＮＮアクセラレータ２０７の利用可能性によって、数ある例示的な使用の中でもとりわけ、測定されたジオメトリボクセル２２７内のボクセルのグループを、特定の物体クラスに属するものとしてラベル付けすることが可能になり得る。
【００７３】
ボクセルにラベル付けする（例えば、ＣＮＮを使用し、ハードウェアアクセラレーションをサポートする）と、これらのボクセルが属するこれらの物体が、既知の物体に対応するものとしてシステムにより認識されることが可能になり得る。ソースボクセルは、測定されたジオメトリボクセル２２７から除去され、物体に対応する境界ボックス、および／または、数ある例示的な情報の中でもとりわけ、物体の原点、物体の姿勢、物体記述子に関する情報に置き換えられ得る。これによって、例えば、数ある例示的な使用の中でもとりわけ、シーン内の物体と相互作用するロボット、ドローン、または他のコンピューティングシステムによる入力として、または、シーン内の物体の吸音係数を調べてそれらをシーンの音響モデルに反映するオーディオシステムによる入力として使用され得る、はるかにより意味論的に意味のあるシーンの説明が得られることがある。
【００７４】
図２で図示および説明する例示的なシステムのパイプラインを実装するために、１つまたは複数のプロセッサデバイスおよびハードウェアアクセラレータが提供され得る。幾つかの実装では、数ある例示的な実装の中でもとりわけ、組み合わされたレンダリングパイプラインのハードウェア要素およびソフトウェア要素の全てが、ＤＲＡＭコントローラ２０９へのアクセスを共有することができ、ＤＲＡＭコントローラ２０９は次に、共有ＤＤＲメモリデバイス２０８にデータを格納できるようにする。
【００７５】
図３は、幾つかの実施形態に係る密なボリュメトリック表現と疎なボリュメトリック表現との違いを示すために提示されている。図３の例に示すように、実世界または合成の物体３００（例えば、ウサギの像）は、ボクセルの観点から、３０２に示すような密な方式、または、３０４に示すような疎な方式で表現され得る。３０２などの密な表現の利点は、ボリューム内の全てのボクセルへのアクセス速度が均一であることだが、欠点は、必要となり得るストレージの量である。例えば、５１２＾３要素のボリューム（例えば、Ｋｉｎｅｃｔセンサを使用してスキャンされるボリュームに対する１ｃｍの解像度で５ｍに対応する）などの密な表現の場合は、ボクセルごとに４バイトの切り捨て符号付き距離関数（ＴＳＤＦ）を用いて相対的に小さなボリュームを格納するための５１２メガバイト。一方、疎な表現を具現化するオクツリー表現３０４は、実世界のシーンに実際のジオメトリが存在するこれらのボクセルのみを格納することにより、同じボリュームを格納するために必要なデータ量を減らすことができる。
【００７６】
図４を参照すると、幾つかの実施形態に係る例示的なシーンの合成図が示されている。特に、図４は、合成ボクセルデータおよび実世界のボクセルデータについて、同等の境界ボックス４００および４０２内にそれぞれある合成ボクセル４０１および測定された実世界のボクセル４０３を表すために、並列データ構造を使用して、シーン４０４の合成図を維持するか、表示するか、または更なる処理にかけ得る方法を示す。図５は、幾つかの実施形態に係る均一な４＾３要素ツリー構造の詳細レベルを示す。幾つかの実装では、図５の例に表されているようなオクツリー表現を使用して、ボリューム内の各ボクセルを記述するために、わずか１ビットが利用され得る。ただし、オクツリーベースの技術の欠点は、オクツリー内の特定のボクセルにアクセスするために利用される間接的なメモリアクセスの数であり得る。スパースボクセルオクツリーの場合は、数ある例示的な利点の中でもとりわけ、同じジオメトリを有利にも複数の詳細レベルで暗黙的に表すことができるので、レイキャスティング、ゲーム物理学、ＣＮＮ、および他の技術などの操作が可能になり、シーンの空の部分を更なる計算からカリングすることで、必要なストレージだけでなく、消費電力および計算負荷の観点からも全体的な削減をもたらすことが可能になる。
【００７７】
一実装では、改善されたボクセル記述子（本明細書では「ボリュメトリックデータ構造」とも呼ばれる）を提供して、ボリュメトリック情報を、ボクセルあたり１ビットのメモリ要件で５０１に示すような４＾３（または６４ビット）の符号なし整数として編成することができる。この例では、ボクセルあたり１ビットでは、（６４ビットを利用するＳＬＡＭｂｅｎｃｈ／ＫＦｕｓｉｏｎにおけるＴＳＤＦと比較して、）切り捨て符号付き距離関数値を格納するのに不十分である。本例では、更なる（例えば、６４ビット）フィールド５００がボクセル記述子に含まれ得る。この例は、６４ビットフィールド５００のＴＳＤＦを１６ビットとする一方で、ｘ、ｙ、およびｚにおける更なる２ビットの分数型分解能（ｆｒａｃｔｉｏｎａｌ  ｒｅｓｏｌｕｔｉｏｎ）をボクセル記述子５０１に暗黙的に提供して、６４ビットフィールド５００のボクセルＴＳＤＦとボクセル位置５０１との組み合わせを、ＳＬＡＭｂｅｎｃｈ／ＫＦｕｓｉｏｎまたは他の例で使用されているようなはるかに高い解像度のＴＳＤＦと同等にすることができるように、更に強化され得る。例えば、６４ビットフィールド５００（ボクセル記述子）の更なるデータは、それぞれが１バイトである（例えば、受動型のＲＧＢセンサを介したシーンからの）サブサンプリングされたＲＧＢ色情報と、８ビットの透明度値アルファと、２つの１バイトの予約フィールドＲ１およびＲ２とを格納するために使用され得る。これらの予約フィールドは、特定用途向けであってよく、例えば、数ある例の中でもとりわけ、オーディオアプリケーションの音響反射率、物理アプリケーションの剛性、対象材料のタイプを格納するために使用され得る。
【００７８】
図５に示すように、ボクセル記述子５０１は、４つの２Ｄ平面に論理的にグループ化され得る。これらの２Ｄ平面の各々は、１６個のボクセル５０２を含む。これらの２Ｄ平面（またはボクセル平面）は、図５に表すように、４の昇累乗での連続分解に基づいて、オクツリースタイル構造の各レベルを記述することができる。この例示的な実装において、６４ビットのボクセル記述子が選択されるのは、それが、対応するシステム実装で使用される６４ビットのバスインフラストラクチャに適しているからである（ただし、他のボクセル記述子のサイズおよび形式が、他のシステム実装で提供され、バスまたはシステムの他のインフラストラクチャに従ってサイズ設定され得る）。幾つかの実装では、ボクセルを取得するために使用されるメモリアクセスの数を減らすように、ボクセル記述子がサイズ設定され得る。例えば、数ある例示的な検討事項および実装の中でもとりわけ、６４ビットのボクセル記述子を使用することで、２＾３要素で動作する従来のオクツリーと比較して、オクツリー内の任意のレベルでボクセルにアクセスするために必要なメモリアクセスの数を１／２に減らすことができる。
【００７９】
一例では、オクツリーは、４＾３のルートボリューム５０３と、下にある層５０４、５０５、および５０６におけるジオメトリの存在に関するコードが例示的な２５６＾３ボリュームに示されている、それぞれの０でないエントリとから開始して記述され得る。この特定の例では、オクツリーにおける最下位レベルにアクセスすべく、４つのメモリアクセスが使用され得る。係るオーバヘッドが高過ぎる場合は、５０７に示すように、代替アプローチを採用して、オクツリーの最上位レベルを、６４＾３などのより大きなボリュームとしてエンコードすることができる。この場合は、５０７におけるそれぞれの０でないエントリは、下にある２５６＾３ボリューム５０８における下にある４＾３オクツリーの存在を示してよい。この代替編成の結果、５０３、５０４、および５０５に示す代替定式化と比較して、２５６＾３ボリューム５０８内の任意のボクセルにアクセスするために必要なメモリアクセスは２つのみである。この後者のアプローチは、オクツリー構造をホストするデバイスがより大量の組み込みメモリを有することで、外部メモリ内のボクセルオクツリー５０８のより低くアクセス頻度の低い部分のみが許可される場合に有利である。このアプローチは、例えば、フルでより大きな（例えば、６４＾３）ボリュームがオンチップメモリに格納される場合に、ストレージの観点からより多くのコストがかかることがあるが、トレードオフによって、数ある例示的な利点の中でもとりわけ、メモリアクセスの高速化（例えば、２倍）および消費電力の大幅な削減が可能になり得る。
【００８０】
図６を参照すると、幾つかの実施形態に係る、本願のデータ構造およびボクセルデータを利用できる例示的な用途を示したブロックダイアグラムが示されている。図５に示すもののような一例では、例示的なボクセル記述子５００を介して更なる情報が提供され得る。ボクセル記述子は、利用されるメモリ全体をボクセルあたり２ビットに増加させることができるが、ボクセル記述子は、図６に表すようなボクセルデータを使用できる広範囲の用途を可能にし得る。例えば、数ある実装の中でもとりわけ、密なＳＬＡＭシステム６０１（例えば、ＳＬＡＭｂｅｎｃｈ）を使用して生成されるような共有ボリュメトリック表現６０２が、オーディオレイキャスティング６０４で使用されるグラフィックレイキャスティングまたはレイトレーシング６０３を使用してシーンをレンダリングする際に使用され得る。更に他の例では、ボリュメトリック表現６０２は、畳み込みニューラルネットワーク（ＣＮＮ）推論６０５で使用されてもよく、クラウドインフラストラクチャ６０７によりバックアップされ得る。場合によっては、クラウドインフラストラクチャ６０７は、推論を介してアクセスされ得る、木、家具、または他の物体（例えば、６０６）などの物体の詳細なボリュメトリック記述子を含むことができる。物体の推論、またはそうでなければ識別に基づいて、対応する詳細な記述子がデバイスに返され得ることから、ボリュメトリック表現６０２のボクセルを、数ある例示的な特徴の中でもとりわけ、姿勢情報と物体の特性を含む記述子とを有する境界ボックス表現に置き換えることができる。
【００８１】
更に他の実施形態では、上記のボクセルモデルは、ボリュメトリック表現６０２からの３Ｄから２Ｄへの投影を使用して例示的な環境６０８の２Ｄマップを構築するために、幾つかのシステムで更にまたは代替的に利用され得る。これらの２Ｄマップは再び、クラウドインフラストラクチャおよび／または他のネットワークベースのリソース６０７を介して通信機械経由で共有され、クラウドソーシング技術を使用してより高品質のマップを構築するために（例えば、同じクラウドインフラストラクチャを使用して）集約され得る。これらのマップは、接続された機械およびデバイスに対してクラウドインフラストラクチャ６０７により共有され得る。なおも更なる例では、２Ｄマップは、（例えば、車両またはロボットの幅および高さが固定されているものと仮定すると、）投影とそれに続く区分的簡略化６０９とを使用して、超低帯域幅の用途向けに改良され得る。次に、簡略化された経路は、経路の区分的線形セグメントごとに単一のＸ、Ｙ座標系対のみを有することから、車両６０９の経路をクラウドインフラストラクチャ６０７に伝えるために必要とされ、かつ、クラウドソーシング技術を使用してより高品質のマップを構築するために、その同じクラウドインフラストラクチャ６０７に集約される、帯域幅の量を減らすことができる。これらのマップは、接続された機械およびデバイスに対してクラウドインフラストラクチャ６０７により共有され得る。
【００８２】
これらの異なる用途を有効にすべく、幾つかの実装では、共有ソフトウェアライブラリなどを介して共通の機能を提供することができ、幾つかの実施形態では、数ある例の中でもとりわけ、ハードウェアアクセラレータまたはプロセッサ命令セットアーキテクチャ（ＩＳＡ）拡張を使用して共通の機能を加速することができる。例えば、係る機能は、記述子へのボクセルの挿入、ボクセルの削除、またはボクセル６１０の検索を含むことができる。幾つかの実装では、数ある例の中でもとりわけ、ボリューム６３０からの点／ボクセルの削除だけでなく、衝突検出機能６２０もサポートされ得る。上で紹介したように、システムは、対応するボリュメトリック表現６０２（３Ｄボリューム）からＸ、Ｙ、およびＺ方向に２Ｄ投影６４０を素早く生成する機能を備えてよい（例えば、これは、経路または衝突の決定の基礎として役立ち得る）。場合によっては、ヒストグラムピラミッド６５０を使用してボリュメトリック表現６０２から三角形リストを生成できることも有利であり得る。更に、システムは、ボリュメトリック空間６０２の２Ｄ表現および３Ｄ表現における自由経路６６０の高速決定のための機能を備えてよい。係る機能は、様々な用途において有用であり得る。数ある例の中でもとりわけ、ボリューム内のボクセルの数を精緻化する、ポピュレーションカウンタを使用して物体の表面を決定することでボリュメトリック表現６０２のマスクされた領域内の１ビットの数をカウントするなどの更なる機能が提供され得る。
【００８３】
図７の簡略ブロックダイアグラムを参照すると、少なくとも幾つかの実施形態に係る３Ｄ数字を認識する機能を備えたシステムを含む例示的なネットワークが示されている。例えば、図６に示す用途のうちの１つは、図７でより詳細に説明するボリュメトリックＣＮＮアプリケーション６０５である。図７では、例示的なネットワークを使用して、混合された米国立標準技術研究所（ＭＮＩＳＴ）のデータセットなどのデータセットから生成された３Ｄ数字７００を認識する。係るデータセット内の数字は、トレーニング前にＸ、Ｙ、およびＺにおける適切な回転および並進を数字に適用することにより、ＣＮＮベースの畳み込みネットワーク分類器７１０をトレーニングするために使用され得る。トレーニングされたネットワーク７１０は、組み込みデバイスでの推論に使用される場合、数ある例の中でもとりわけ、数字がＸ、Ｙ、およびＺにおける回転および並進の対象になる場合でもシーン内の３Ｄ数字を高精度に分類すること７２０に使用され得る。幾つかの実装では、ＣＮＮ分類器の動作は、図２に示すＨＷ  ＣＮＮアクセラレータ２０７により加速され得る。ニューラルネットワークの第１層は、ボリュメトリック表現６０２のボクセルを使用して乗算を実行する。そのため、０による乗算は常に０であり、データ値Ａによる１（ボクセル）による乗算はＡに等しくなるので、これらの算術演算を省略することができる。
【００８４】
図８は、暗黙の詳細レベルを使用して同じデータ構造に対して実行される複数の分類を示す。ボリュメトリック表現６０２を使用したＣＮＮ分類の更なる改良は、オクツリー表現が、図５に示すように、複数の詳細レベルをオクツリー構造に暗黙的に含むことから、暗黙の詳細レベル８００、８１０、および８２０を並行して使用して、かつ、図８に示すような単一の分類器８３０または複数の分類器を並行して使用して、同じデータ構造に対する複数の分類を実行できることであってよい。従来のシステムでは、分類パス間で画像のサイズ変更が必要になるため、同等の並列分類が遅くなり得る。係るサイズ変更は、同じオクツリーが複数の詳細レベルで同じ情報を含み得ることから、本明細書に記載のボクセル構造を適用する実装では割愛され得る。実際、ボリュメトリックモデルに基づく単一のトレーニングデータセットは、従来のＣＮＮネットワークで必要とされるようなサイズ変更されたトレーニングデータセットではなく、これらの詳細レベルの全てをカバーすることができる。
【００８５】
図９の例を参照すると、幾つかの実施形態に係る２Ｄ  ＣＮＮによる例示的な演算排除が示されている。演算排除は、図９に示すような２Ｄ  ＣＮＮだけでなく、３ＤボリュメトリックＣＮＮでも使用され得る。例えば、図９では、第１層において、ビットマップマスク９００が、入力９１０の予想される「形状」を記述するために使用されてよく、着信映像ストリーム９２０に適用されてよい。一例では、演算排除は、３ＤボリュメトリックＣＮＮだけでなく、２ＤボリュメトリックＣＮＮでも使用され得る。例えば、図９の例の２Ｄ  ＣＮＮでは、ビットマップマスク９００が、入力９１０の予想される「形状」を記述するために、ＣＮＮの第１層に適用されてよく、着信映像ストリーム８２０などのＣＮＮの入力データに適用されてよい。例として、図９には、ＣＮＮネットワークにおけるトレーニングまたは推論のためにビットマップマスクを歩行者の画像に適用する効果が示されている。ここでは、９０１が歩行者９０１の元の画像を表し、９０３が、ビットマップマスクが適用された対応するバージョンを表す。同様に、９０２には、歩行者を含まない画像が示され、９０４には、対応するビットマップマスクバージョンが示されている。検出器により予想される、予想された２Ｄまたは３Ｄジオメトリの知識を通じてＣＮＮのトレーニングまたは推論に必要な演算の数を減らすべく、同じ方法を任意の種類の２Ｄまたは３Ｄ物体に適用することができる。９１１には、３Ｄボリュメトリックビットマップの例が示されている。９２０には、実際のシーンにおける推論のための２Ｄビットマップの使用が示されている。
【００８６】
図９の例示的な実装では、概念的なビットマップが（９００に）示され、実際のビットマップは、特定のクラスの物体９１０に関する一連のトレーニング画像を平均化することにより生成される。示されている例は二次元であるが、ボクセルあたり１ビットの提案されたボリュメトリックデータ形式で、３Ｄ物体に対する同様のビットマップマスクを生成することもできる。実際、数ある例示的な実装の中でもとりわけ、方法は、ボクセル／ピクセルごとに更なるビットを使用して、２Ｄまたは３Ｄ物体の予想される色の範囲または他の特性を指定するように、潜在的に拡張されてもよい。
【００８７】
図１０は、幾つかの実施形態に係る、１０，０００個のＣＩＦＡＲ−１０テスト画像の分析を含む例示的な実験の結果を示した表である。幾つかの実装では、演算排除を使用して、図１０に示すＬｅＮｅｔ１０００などのＣＮＮネットワークで頻繁に行われる正規化線形ユニット（ＲｅＬＵ）演算に起因する１Ｄ、２Ｄ、および３Ｄ  ＣＮＮにおける中間計算を排除することができる。図１０に示すように、１０,０００個のＣＩＦＡＲ−１０テスト画像を使用する実験では、ＲｅＬＵユニットにより生成されるデータ依存０の割合が最大８５％に達することがある。つまり、０の場合は０を認識し、かつ、それに応じて、対応するデータのフェッチも対応する乗算演算の実行も行わない、システムが提供され得る。この例では、８５％は、修正された米国立標準技術研究所（ＭＮＩＳＴ）のテストデータセットから生成されたＲｅＬＵ動的０の割合を表す。これらの０に対応する、対応する演算排除は、数ある例示的な利益の中でもとりわけ、消費電力およびメモリ帯域幅の要件を減らすのに役立ち得る。
【００８８】
些細な演算は、ビットマップに基づいてカリングされ得る。例えば、係るビットマップの使用は、参照により全体が本明細書に組み込まれる「Ｃｉｒｃｕｉｔ  ｆｏｒ  ｃｏｍｐｒｅｓｓｉｎｇ  ｄａｔａ  ａｎｄ  ａ  ｐｒｏｃｅｓｓｏｒ  ｅｍｐｌｏｙｉｎｇ  ｔｈｅ  ｓａｍｅ」と題する米国特許第８,７１３,０８０号に記載および図示されている原理および実施形態に従ったものであってよい。幾つかの実装は、同様に参照により全体が本明細書に組み込まれる「Ｈａｒｄｗａｒｅ  ｆｏｒ  ｐｅｒｆｏｒｍｉｎｇ  ａｒｉｔｈｍｅｔｉｃ  ｏｐｅｒａｔｉｏｎｓ」と題する米国特許第９,１０４,６３３号に記載および図示されているシステム、回路、および、他の実装など、係るビットマップを使用できるハードウェアを提供してよい。
【００８９】
図１１は、幾つかの実施形態に係る、ビットマップに基づいて些細な演算をカリングするための機能を提供すべくシステムに組み込まれ得るハードウェアを示す。この例では、繰り返される畳み込み層を含む多層ニューラルネットワークが提供される。ハードウェアは、１つまたは複数のプロセッサ、１つまたは複数のマイクロプロセッサ、１つまたは複数の回路、および１つまたは複数のコンピュータなどを含むことができる。この特定の例では、ニューラルネットワークは、最初の畳み込み処理層１１００、それに続くプーリング処理１１１０、そして最後に、正規化線形ユニット（ＲｅＬＵ）関数１１２０などの活性化関数処理を含む。ＲｅＬＵ出力ベクトル１１３１を提供するＲｅＬＵユニット１１２０の出力は、ＲｅＬＵ出力ベクトル１１３１を受信する次の畳み込み処理層１１８０に（例えば、場合によっては遅延１１３２を介して）接続され得る。１つの例示的な実装では、次の畳み込みユニット１１８０へのＲｅＬＵユニット１１２０の接続と並行して、ＲｅＬＵビットマップ１１３０が生成されてもよく、ＲｅＬＵビットマップ１１３０は、ＲｅＬＵ出力ベクトル１１３１内のどの要素が０であり、どの要素が０でないかを表す。
【００９０】
一実装では、ニューラルネットワークの計算に含まれる演算を排除する機会を有効なハードウェアに通知するために、ビットマップ（例えば、１１３０）が生成されるか、またはそうでなければ提供され得る。例えば、ＲｅＬＵビットマップ１１３０内のビットは、ビットマップスケジューラ１１６０により解釈され得る。ビットマップスケジューラ１１６０は、０による乗算で常に０が出力として生成されると仮定すると、次の畳み込みユニット１１８０内の乗算器に、対応するバイナリ０がＲｅＬＵビットマップ１１３０に存在する、ＲｅＬＵ出力ベクトル１１３１の０エントリを省略するように命令する。並行して、ＲｅＬＵビットマップ１１３０内の０に対応するデータ／重みに対するアドレス生成器１１４０からのメモリフェッチも、次の畳み込みユニット１１８０により省略されることになる重みをフェッチする価値がほとんどないことから省略され得る。取り付けられたＤＤＲ  ＤＲＡＭストレージデバイス１１７０からＤＤＲコントローラ１１５０を介して重みがフェッチされる場合は、待ち時間が非常に長いことから、一部のオンチップ帯域幅および関連する消費電力を節約することしかできないことがある。一方、重みがオンチップＲＡＭ１１８０ストレージからフェッチされる場合は、特に、ＲＡＭ／ＤＤＲフェッチ遅延１１３２に対応する遅延が次の畳み込みユニット１１８０への入力で追加される場合に、重みフェッチ操作全体を回避／省略することが可能になり得る。
【００９１】
図１２を参照すると、幾つかの実施形態に係る、些細な演算をカリングする（または演算排除を実行する）ための回路および他のロジックを備えた例示的なハードウェアの改良を示すために、簡略ブロックダイアグラムが提示されている。図１２の例に示すように、更なるハードウェアロジックが、すぐ前の最大プーリングユニット１２１０または畳み込みユニット１２００からのＲｅＬＵユニット１２２０入力の符号を事前に予測するために提供され得る。符号予測およびＲｅＬＵビットマップ生成を最大プーリングユニット１２１０に追加することで、ＲｅＬＵビットマップ情報をタイミングの観点からより早く予測して、アドレス生成器１２４０を介して発生し得る遅延を、外部ＤＤＲコントローラ１２５０およびＤＤＲストレージ１２７０または内部ＲＡＭストレージ１２７１を介してカバーすることが可能になり得る。遅延が十分に小さい場合は、メモリからのフェッチの結果が決して使用されないと決定できることから、ＲｅＬＵビットマップをアドレス生成器１２４０で解釈することができ、ＲｅＬＵビットマップ０と関連付けられるメモリフェッチを完全に省略することができる。図１１のスキームに対するこの修正によって、数ある例示的な特徴および機能の中でもとりわけ、更なる電力を節約することができ、ＤＤＲアクセス経路（例えば、１２４０から１２５０まで、１２５０から１２７０まで）またはＲＡＭアクセス経路（例えば、１２４０から１２７１まで）を通じた遅延が遅延ステージ１２３２を保証しないだけの十分な小ささである場合は、次の畳み込みユニット１２８０への入力で遅延ステージ（例えば、１１３２、１２３２）を除去することも可能になり得る。
【００９２】
図１３は、幾つかの実施形態に係る例示的なハードウェアを示した別の簡略ブロックダイアグラムである。例えば、ＣＮＮ  ＲｅＬＵ層は、負の入力に対応する多数の出力０を生成することができる。実際、負のＲｅＬＵ入力は、前の層（例えば、図１３の例におけるプーリング層）への符号入力を見ることにより予測的に決定され得る。浮動小数点および整数演算は、最上位ビット（ＭＳＢ）の観点から明示的に符号付けされ得る。そのため、畳み込み層で乗算される入力のベクトル全体にわたる単純なビット単位の排他的ＯＲ（ＸＯＲ）演算によって、どの乗算が図１３に示すような出力０を生成するかを予測することができる。結果として得られる符号予測されたＲｅＬＵビットマップベクトルは、上記の他の例で説明した方式などで、乗算のサブセットと、関連付けられる係数のメモリからの読み取りとを決定して排除するための基礎として使用され得る。
【００９３】
前のプーリングステージまたは畳み込みステージ（すなわち、対応するＲｅＬＵステージの前のステージ）に戻るＲｅＬＵビットマップの生成を提供すると、更なる電力が生じ得る。例えば、ＲｅＬＵ活性化ロジックにより最終的に０に設定される負の出力を生成するときに乗算器を無効にするために、符号予測ロジックが提供され得る。例えば、これは、乗算器１３１４入力１３０１および１３０２の２つの符号ビット１３１０および１３１５がＸＯＲゲートにより論理的に組み合わされて、ＰｒｅＲｅＬＵビットマップビット１３０３を形成する場合に示される。この同じ信号は、乗算器１３１４の動作を無効にするために使用され得る。そうでなければ、数ある例の中でもとりわけ、次の畳み込みステージ１３９０で乗算のために入力される前に、ＲｅＬＵロジックにより０に設定されるであろう負の出力を生成するエネルギーが不必要に消費されるであろう。
【００９４】
なお、１３００、１３０１、１３０２、および１３０３の表現（表記Ａ）は、図１３のＢに与えられた表現に示されているものの上位レベルのビューを示す。この例では、ブロック１３０２への入力は、２つの浮動小数点オペランドを含むことができる。入力１３０１は、明示的な符号ビット１３１０と、複数のビットを含む指数１３１１と、先と同様に複数のビットを含む仮数１３１２とを含むことができる。同様に、入力１３０２は同様に、符号１３１５と、仮数１３１７と、指数１３１６とを含むことができる。幾つかの実装では、結果１３０３の符号が、１３０１および１３０２の符号、または、１３１０および１３１５の符号にのみそれぞれ依存していることから、仮数および指数の精度が異なり得る。実際、１３０１も１３０２も浮動小数点数である必要はないが、それらが符号付きの数であり、かつ、最上位ビット（ＭＳＢ）が事実上、明示的または暗黙的に符号ビットである限り（例えば、数が１または２の補数である場合など）、任意の整数または固定小数点形式であってよい。
【００９５】
図１３の例を続けると、２つの符号入力１３１０および１３１５は、ＸＯＲ（本明細書では代替的にＥｘＯＲまたはＥＸＯＲと表すこともある）ゲートを使用して組み合わされることで、ビットマップビット１３０３を生成してよく、次に、ビットマップビット１３０３は、ハードウェアを使用して処理されることで、次の畳み込みブロック（例えば、１３９０）で省略され得る下流の乗算を識別してよい。２つの入力番号１３１３（例えば、１３０１に対応する）および１３１８（例えば、１３０２に対応する）が反対の符号を有し、かつ、ＲｅＬＵブロック１３１９により０に設定されるであろう負の出力１３０４を生成することで、次の畳み込みステージ１３９０に入力されるＲｅＬＵ出力ベクトル１３１９１に０値がもたらされる場合は、同じＸＯＲ出力１３０３を使用して、乗算器１３１４を無効にすることもできる。故に、幾つかの実装では、ＰｒｅＲｅＬＵビットマップ１３２０は、並行して、ビットマップスケジューラ１３６０に伝送されてよく、ビットマップスケジューラ１３６０は、畳み込みユニット１３９０上で実行（および／または省略）される乗算をスケジューリングしてよい。例えば、ビットマップ１３２０内の全ての０について、対応する畳み込み演算が、畳み込みユニット１３９０において省略され得る。並行して、ビットマップ１３２０は、畳み込みユニット１３９０で使用するための重みのフェッチを制御する例示的なアドレス生成器１３３０により消費され得る。ビットマップ１３２０内の１に対応するアドレスのリストは、アドレス生成器１３３０でコンパイルされてよく、ＤＤＲコントローラ１３５０を介してＤＤＲストレージ１３７０への経路を制御するか、さもないと、オンチップＲＡＭ１３８０への経路を制御する。何れの場合も、数ある例の中でもとりわけ、ＰｒｅＲｅＬＵビットマップ１３２０内の重みに対応する重みは、フェッチされ、畳み込みブロック１３９０に（例えば、重み入力１３７１へのクロックサイクルの観点から幾らかの待ち時間の後に）提示され得るが、０に対応する重みのフェッチは省略され得る。
【００９６】
上記のように、幾つかの実装では、遅延（例えば、１３６１）をビットマップスケジューラ１３６０と畳み込みユニット１３９０との間に挿入して、アドレス生成器１３３０、ＤＤＲコントローラ１３５０、およびＤＤＲ１３５０を介した遅延のバランス、または、アドレス生成器１３３０および内部ＲＡＭ１３８０を介した経路のバランスをとってよい。遅延は、ビットマップスケジューラにより駆動される畳み込みが、畳み込みユニット１３９０における畳み込み計算に関する対応する重みに合わせて正確に整列することを可能にし得る。実際、タイミングの観点から、ＲｅＬＵブロック１３１９の出力より早くＲｅＬＵビットマップを生成することで、更なる時間を獲得することが可能になり得る。この更なる時間は、メモリ（例えば、ＲＡＭ１３８０またはＤＤＲ１３７０）への読み取りを、それらがアドレス生成器１３３０により生成される前に傍受（ｉｎｔｅｒｃｅｐｔ）するために使用されてよく、その結果、（例えば、０に対応する）読み取りのうちの幾つかが割愛され得る。メモリの読み取りはチップ上の論理演算よりもはるかに高くなることがあるので、係るメモリフェッチを除外すると、数ある例示的な利点の中でもとりわけ、非常に大幅なエネルギー節約につながり得る。
【００９７】
幾つかの実装では、ＤＲＡＭアクセス時間をカバーするための節約がクロックサイクルの観点から依然として不十分である場合は、ブロック指向の技術を使用して、ＤＤＲから符号ビットのグループ（例えば、１３０１）を前もって読み取ることができる。符号ビットのこれらのグループは、（例えば、数ある例の中でもとりわけ、２Ｄまたは３Ｄアレイ／行列間の２Ｄまたは３Ｄ畳み込みにおける符号ビット間の差を計算するための）（複数の）ＸＯＲゲート１３００の組を使用してＰｒｅＲｅＬＵビットマップのブロックを生成すべく、入力画像または中間畳み込み層１３０２からの符号のブロックと共に使用され得る。係る実装では、ＤＤＲまたはオンチップＲＡＭに更なる１ビットのストレージを提供して各重みの符号を格納できるが、これによって、０で乗算されることになるＤＤＲまたはＲＡＭからの重みをＲｅＬＵステージから読み取ることを回避するように、多くの待ち時間サイクルをカバーすることが可能になり得る。幾つかの実装では、ＤＤＲまたはオンチップＲＡＭにおける重みごとの更なる１ビットのストレージは、数ある例示的な検討事項および実装の中でもとりわけ、指数および仮数から独立してアドレス指定できるように符号が格納されることから、回避され得る。
【００９８】
幾つかの実装では、上記のようなモデルを含む機械学習モデルをトレーニングするために、容易に利用可能なトレーニングセットにアクセスするのが特に難しいことがある。実際、場合によっては、トレーニングセットは、数ある例示的な問題の中でもとりわけ、特定の機械学習アプリケーション向けに存在していないか、または、トレーニング対象となるモデルの入力を生成するセンサのタイプに対応していないことがある。幾つかの実装では、合成トレーニングセットを開発して、ニューラルネットワークまたは他の深層強化学習モデルをトレーニングするために利用することができる。例えば、特定の人物、動物、物体、製品などの数百または数千の画像で構成されるトレーニングデータセットを取得または撮像するのではなく、被写体の合成３Ｄ表現を手動で（例えば、グラフィックデザインまたは３Ｄ写真編集ツールを使用して）または自動的に（例えば、３Ｄスキャナを使用して）生成することができ、結果として得られる３Ｄモデルは、３Ｄモデルの被写体に関連するトレーニングデータを自動的に生成するための基礎として使用され得る。このトレーニングデータを他のトレーニングデータと組み合わせて、少なくとも部分的に合成トレーニングデータで構成されるトレーニングデータセットを形成することができ、このトレーニングデータセットを利用して、１つまたは複数の機械学習モデルをトレーニングすることができる。
【００９９】
例として、本明細書で紹介するような深層強化学習モデルまたは他の機械学習モデルを使用して、自律型機械が、店舗、倉庫、または別の企業の棚をスキャンして、店舗内の特定の製品の在庫を評価することを可能にし得る。故に、機械学習モデルは、自律型機械が個々の製品を検出できるようにトレーニングされ得る。場合によっては、機械学習モデルは、棚にある製品を識別することができるだけでなく、（例えば、深度モデルを使用して）棚にある製品の数も識別することができる。店舗が扱い得るありとあらゆる製品、および、製品のありとあらゆる構成（例えば、様々なディスプレイ、様々な照明における製品の各姿勢またはビュー（全部および一部）、製品パッケージの様々な向きのビューなど）について、（例えば、同じ店舗または異なる店舗からの）一連の実世界の画像を用いて機械学習モデルをトレーニングするのではなく、（例えば、製品のプロバイダ、機械学習モデルのプロバイダ、または別のソースにより、）各製品（またはこれらの製品のうちの少なくとも幾つか）の合成３Ｄモデルが生成され得る。３Ｄモデルは、その詳細および解像度がフォトリアリスティックな品質またはそれに近い品質であってよい。３Ｄモデルは、数ある例示的な用途の中でもとりわけ、所与の被写体（例えば、製品）、または更には、異なる被写体の集まり（例えば、様々な組み合わせの製品が、異なる照明の中、異なる向きで、隣り合わせに配置されている、店舗棚上の製品の集まりなど）の様々な異なるビューを生成して、一組の合成トレーニングデータ画像を生成するために、他の３Ｄモデルと共に消費用に提供され得る。
【０１００】
図１４を参照すると、１つまたは複数の機械学習モデル（例えば、１４３５）（深層強化学習モデル、シャムニューラルネットワーク、畳み込みニューラルネットワーク、および他の人工ニューラルネットワークなど）をトレーニングするために機械学習システム１４３０により使用される合成トレーニングデータを生成するためのトレーニングセット生成器１４２０を実装する例示的なコンピューティングシステム（例えば、１４１５）の簡略ブロックダイアグラム１４００が示されている。例えば、３Ｄスキャナ１４０５または他のツールを使用して、（例えば、人物、内部および／または外部アーキテクチャ、景観要素、製品、家具、輸送要素（例えば、道路標識、自動車、トラフィックハザードなど）、および他の例の）３Ｄモデル１４１０の組を生成することができ、これらの３Ｄモデル１４１０は、トレーニングセット生成器１４２０を入力として提供することにより消費され得る。幾つかの実装では、トレーニングデータ生成器１４２０は、３Ｄモデル１４１０から、３Ｄモデル１４１０からの一組のトレーニング画像、点群、深度マップ、または、他のトレーニングデータ１４２５を自動的にレンダリングすることができる。例えば、トレーニングセット生成器１４２０は、幾つかの様々な画像を撮像することで被写体を撮像するための「完全」かつ多様な画像の集まりを満たすべく、３Ｄモデルを自動的に傾斜、回転、およびズームし、かつ、結果として得られる異なる向きおよび姿勢で、かつ、異なる（例えば、コンピュータシミュレートされた）照明の中で、画像に撮像される３Ｄモデルの被写体全体の全部または一部などを用いて、３Ｄモデルの画像の集まりを撮像するようにプログラム的に構成され得る。
【０１０１】
幾つかの実装では、３Ｄモデルから生成される合成トレーニング画像は、それらの基となる実際の被写体に匹敵するフォトリアリスティックな解像度を有し得る。場合によっては、トレーニングセット生成器１４２０は、（高解像度３Ｄモデルと比較して、）結果として得られる画像の解像度および品質を意図的にダウングレードする方式で、画像または他のトレーニングデータを３Ｄモデルから自動的にレンダリングまたは生成するように構成可能であってよい。例えば、画像の品質は、画像を、トレーニング対象となる機械学習モデルへの入力を提供することが期待されるセンサ（例えば、３Ｄスキャナ、カメラなど）により生成され得るものと同等の品質レベルにするための、数ある調節の中でもとりわけ、ノイズを追加することと、フィルタ（例えば、ガウスフィルタ）を適用することと、１つまたは複数のレンダリングパラメータを調節して、ノイズの導入、コントラストの低下、解像度の低下、輝度レベルの変更を行うこととにより、劣化させることができる。
【０１０２】
特に深層ニューラルネットワークをトレーニングするためにデータセットを構築する場合は、トレーニングセット生成器システムにより、幾つかの異なる条件またはルールが定義および検討され得る。例えば、ＣＮＮは従来、正確な結果を生成するためのトレーニングに大量のデータを必要とする。合成データは、利用可能なトレーニングデータセットが小さ過ぎる場合を回避することができる。故に、特定の機械学習モデルについて、目標数のトレーニングデータサンプルが識別されてよく、トレーニングセット生成器は、所望の量のトレーニングサンプルを満たすために生成されるトレーニングサンプルの量およびタイプに基づいたものであってよい。更には、サンプルのばらつきが閾値を超えているセットを生成するための条件が、トレーニングセット生成器により設計および検討され得る。これは、機械学習モデルの過剰適合を最小限に抑え、非常に多様な多数のシナリオで適切に実行するために必要な一般化を提供するためである。係るばらつきは、数ある例の中でもとりわけ、３Ｄモデルから個々のサンプルを生成するために使用されるカメラの角度、カメラの高さ、視野、照明条件などといったトレーニングセット生成器により適用される調節可能なパラメータを通じて実現され得る。
【０１０３】
幾つかの実装では、センサの特定のタイプまたはモデル（例えば、特定の２Ｄまたは３Ｄカメラ、ＬＩＤＡＲセンサなど）の態様を定義するセンサモデル（例えば、１４４０）が提供され得る。モデル１４４０は、生画像、点群、または他のトレーニングデータ（例えば、３Ｄモデルから生成される）に対して行われるフィルタおよび他の修正を定義して、モデル化されたセンサにより生成されるデータ（例えば、解像度、グレアに対する脆弱性、明暗に対する感度、ノイズに対する脆弱性など）をシミュレートする。このような場合は、トレーニングセット生成器は、３Ｄモデルから生成されるサンプルを人為的に劣化させて、モデル化されたセンサにより生成される同等の画像またはサンプルを模倣することができる。このようにして、トレーニングされた機械学習モデルに入力されるデータと品質が同等である合成トレーニングデータのサンプルが（例えば、センサの実世界のバージョンにより生成されるように）生成され得る。
【０１０４】
図１５を参照すると、合成トレーニングデータの例示的な生成を示したブロックダイアグラム１５００が示されている。例えば、特定の被写体の３Ｄモデル１４１０が生成され得る。３Ｄモデルは、被写体の真に迫った表現またはフォトリアリスティックな表現であってよい。図１５の例では、モデル１４１０は、一組のガラスボトルを含む段ボールパッケージを表す。画像の集まり（例えば、１５０５）が、３Ｄモデル１４１０に基づいて生成されてよく、多様な照明、環境、条件（例えば、使用中／静止中、開閉、損傷など）における３Ｄモデルのビューを含む、３Ｄモデル１４１０の様々なビューを撮像する。画像１５０５の集まりは、例示的なトレーニングデータ生成器のセンサフィルタ（例えば、センサモデルで定義される）を使用して処理され得る。画像１５０５の処理によって、画像１５０５を、画像１５０５を劣化させるように修正することで、実際のセンサを使用して撮像された画像の品質および特徴を模倣する「実物そっくりの」画像１４２５を生成することができる。
【０１０５】
幾つかの実装では、合成トレーニングデータサンプルの劣化バージョンの生成を支援するために、モデル（例えば、１４１０）は、モデルの被写体の材料および他の特性を示すためのメタデータを含むことができる。係る実装では、モデルで定義される被写体の特性は、数ある検討事項の中でもとりわけ、照明、モデル化された被写体に対するセンサの位置、被写体の特性（例えば、材料）を考慮して、実際の画像（または点群）が特定のセンサによりどのように生成される可能性が高いかを決定するために、トレーニングデータ生成器により（例えば、センサモデルと組み合わせて）検討され得る。例えば、ボトルのパッケージをモデル化する、図１５の特定の例におけるモデル１４１０は、３Ｄモデルのどの部分（例えば、どのピクセルまたはポリゴン）がガラス材料（ボトル）に対応し、どの部分が段ボール（パッケージ）に対応するかを定義するメタデータを含むことができる。故に、トレーニングデータ生成器が合成画像を生成し、かつ、画像１５０５に対するセンサフィルタリング１５１０を適用（して、例えば、３Ｄモデルの様々な表面に光が反射する方式をモデル化）すると、これらの特性に対するモデル化されたセンサの反応は、トレーニングデータの生成に使用された場合に実際のセンサにより作成されるであろうものとより一致する、信頼できるトレーニングデータを生成するために、より現実的に適用され得る。例えば、３Ｄモデルでモデル化される材料によって、センサの脆弱性をモデル化するトレーニングデータ画像を生成して、例えば、図１５の例におけるボトルのガラス表面からの反射に対応する、グレア、ノイズ、または、他の欠陥を有する画像を生成することが可能であり得るが、あまり反射性がない段ボール表面に対応するノイズまたはグレアは少なくなる。同様に、被写体の３Ｄモデル表現でモデル化される材料のタイプ、温度、および他の特性は、異なるセンサ（例えば、カメラセンサ対ＬＩＤＡＲセンサ）に対して異なる影響を及ぼし得る。故に、例示的なテストデータ生成システムは、実世界のセンサにより生成される可能性が高い画像のバージョンをシミュレートする画像の劣化バージョン（例えば、１４２５）を生成すべく、画像１５０５に適用するフィルタまたは処理を自動的に決定する際に、３Ｄモデルのメタデータおよび特定のセンサモデルの両方を検討することができる。
【０１０６】
更に、幾つかの実装では、画像１５０５の更なる後処理が被写界深度の調節を含むことができる。幾つかの３Ｄレンダリングプログラムでは、ソフトウェアで使用される仮想カメラが完璧であり、近くにある物体および遠くにある物体の両方を、完璧に焦点を合わせて撮像することができる。ただし、これは、実世界のカメラまたはセンサには当てはまらないことがあ（り、トレーニングセット生成器により使用される、対応するセンサモデルの属性内でそのように定義され得）る。故に、幾つかの実装では、後処理（例えば、トレーニングセット生成器を用いて、カメラが背景に焦点を合わせ、かつ、モデル化された被写体の特徴に焦点が合っていないように見せるべきポイントを、自動的に識別および選択することにより、欠陥はあるがよりフォトリアリスティックな画像（例えば、１４２５）の例を作成すること）の間に、画像に対する被写界深度効果が適用され得る。更なる後処理には、画像上にノイズを追加して、写真撮影に存在するノイズの多いアーチファクトをシミュレートすることが含まれ得る。例えば、トレーニングセット生成器は、数ある例示的な技術の中でもとりわけ、レイトレーシングアルゴリズムが物体上で計算する光の跳ね返りの数を制限することにより、ノイズを追加することを含み得る。更には、合成プロセスの結果として発生する過度または非現実的に滑らかな任意のエッジまたは表面を除去する努力の中で、レンダリングされたモデルの上にわずかなピクセル化が適用され得る。例えば、光ぼかし層を追加してピクセルの「ブロック」を平均化することができ、これを他の後処理操作（例えば、対応するセンサモデルに基づく）と組み合わせると、より現実的な合成トレーニングサンプルが得られることがある。
【０１０７】
図１５に示すように、例示的な３Ｄモデル１４１０からトレーニングデータサンプル（例えば、１４２５）を生成する際、サンプル（例えば、画像、点群など）は、深層学習モデル（例えば、１４３５）のトレーニングデータセットを構築するために、他の実際のトレーニングサンプルまたは合成的に生成されたトレーニングサンプルに追加されるか、または含められてよい。同様に図１４の例に示すように、（例えば、例示的な機械学習システム１４３０の）モデルトレーナ１４５５を使用して、１つまたは複数の機械学習モデル１４３５をトレーニングすることができる。場合によっては、合成深度画像を３Ｄモデルから生成することができる。次に、トレーニングされた機械学習モデル１４３５は、数ある例の中でもとりわけ、物体の認識、自動棚卸処理、ナビゲーションなどの様々なタスクを実行するために、自律型機械により使用され得る。
【０１０８】
図１４の例では、例示的なトレーニングセット生成器１４２０を実装するコンピューティングシステム１４１５は、１つまたは複数のデータ処理装置１４４５と、１つまたは複数のコンピュータ可読メモリ要素１４５０と、トレーニングセット生成器１４２０を実装するためにハードウェアおよび／またはソフトウェアに実装されるロジックとを含むことができる。図１４の例は、コンピューティングシステム１４１５（およびそのコンポーネント）を、機械学習モデル（例えば、１４３５）をトレーニングおよび／または実行するために使用される機械学習システム１４３０とは別個のものとして示しているが、幾つかの実装では、単一のコンピューティングシステムを使用して、数ある代替的な実装および例示的なアーキテクチャの中でもとりわけ、モデル生成器１４０５、トレーニングセット生成器１４２０、および機械学習システム１４３０のうちの２つまたはそれより多くの組み合わされた機能を実装できることを理解されたい。
【０１０９】
幾つかの実装では、合成トレーニングデータを使用して１回限りの学習を可能にするコンピューティングシステムが提供され得る。係るシステムによって、何十万もの画像をトレーニングする必要なく物体を分類することが可能になり得る。１回限りの学習では、場合によっては、単一のトレーニング画像であっても、ごくわずかなトレーニング画像からの分類が可能になる。これによって、特定の機械学習モデルをトレーニングするためのトレーニングセットを開発する際の時間およびリソースが節約される。図１６および図１７の例に示すような幾つかの実装では、機械学習モデルは、入力の分類を学習するモデルではなく、２つの入力の区別を学習するニューラルネットワークであってよい。係る機械学習モデルの出力によって、モデルに提供される２つの入力の類似度が識別され得る。
【０１１０】
幾つかの実装では、図１４の例などにおいて、わずかなトレーニング例から物体のカテゴリを分類する能力をシミュレートできる機械学習システムが提供され得る。係るシステムでは、対応する機械学習モデルを効果的にトレーニングすべく、複数のクラスの大規模なデータセットを作成する必要性を除去することもできる。同様に、複数のクラスに対するトレーニングを必要としない機械学習モデルを選択することができる。機械学習モデルは、当該モデルがその物体（例えば、製品、人間、動物、または他の物体）の単一画像を比較画像と共にシステムに供給することにより、その物体を認識するために使用され得る。比較写真がシステムにより認識されない場合は、物体は、機械学習モデル（例えば、シャムネットワーク）を使用して、一致しないと決定される。
【０１１１】
幾つかの実装では、上の例で紹介したような合成トレーニングデータを使用してトレーニングされる機械学習モデルとしてシャムネットワークを利用することができる。例えば、図１６は、２つの同一のニューラルネットワーク１６０５ａ、１６０５ｂで構成される例示的なシャムネットワークを示した簡略ブロックダイアグラム１６００を示す。これらのネットワークの各々は、トレーニング後に同じ重みを有する。比較ブロック（例えば、１６２０）を提供して、２つの同一のネットワークの出力の類似性を評価し、決定された類似度を閾値と比較することができる。類似度が閾値範囲内（例えば、所与の閾値よりも下または上）である場合は、シャムネットワーク（ニューラルネットワーク１６０５ａ、１６０５ｂおよび比較ブロック１６２０で構成される）の出力は、２つの入力が共通の被写体を参照しているかどうかを（例えば、１６２５で）示すことができる。例えば、２つのサンプル１６１０、１６１５（例えば、画像、点群、深度画像など）を、２つの同一のニューラルネットワーク１６０５ａ、１６０５ｂの各々に対するそれぞれの入力として提供することができる。一例では、ニューラルネットワーク２０５ａ、１６０５ｂは、ＲｅｓＮｅｔベースのネットワーク（例えば、ＲｅｓＮｅｔ５０または別の変形例）として実装されてよく、各ネットワークの出力は、比較ブロック１６２０に入力される特徴ベクトルであってよい。幾つかの実装では、比較ブロックは、２つの特徴ベクトル入力から類似性ベクトルを生成して、２つの入力１６１０、１６１５がどのくらい類似しているかどうかを示すことができる。幾つかの実装では、係るシャムネットワーク実装への入力（例えば、１６１０、１６１５）は、エージェントの現在の観測（例えば、自律型機械のセンサにより生成される画像または深度マップ）と目標物とを表す２つの画像を構成することができる。深層シャムネットワークは、差別的組み込み学習のための２ストリームニューラルネットワークモデルの一種であり、合成トレーニングデータを利用した１回限りの学習を可能にし得る。例えば、２つの入力（例えば、１６１０、１６１５）のうちの少なくとも１つは、上記のような合成的に生成されるトレーニング画像または基準画像であってよい。
【０１１２】
幾つかの実装では、合成データを使用してトレーニングされるシャムネットワークまたは他の機械学習モデルの実行において、数ある例示的な実装の中でもとりわけ、汎用マイクロコンピュータとインタフェースを取ることができる専用の機械学習ハードウェア、例えば、機械学習アクセラレータ（例えば、Ｉｎｔｅｌ  Ｍｏｖｉｄｉｕｓニューラルコンピュートスティック（ＮＣＳ））を利用することができる。このシステムは様々なアプリケーションで利用され得る。例えば、ネットワークは、人間、動物、または車両へのアクセスを可能にするアクチュエータをトリガできるようにする前に、人間、動物、または車両が認識されるアプリケーションなど、セキュリティまたは認証のアプリケーションで利用され得る。具体的な例として、スマートドアは、ドアに接近している人間または動物を認識するための画像センサを備えることができ、許可された一組のユーザのうちの１人に一致するものにのみ（機械学習モデルを使用して）アクセスを付与することができる。係る機械学習モデル（例えば、合成データでトレーニングされる）は、数ある例の中でもとりわけ、製品の検証、棚卸、および、店舗での製品認識を使用して、製品が存在するかどうか（または幾つ存在するか）、または、製品が特定の位置内（例えば、適切な棚の上）に存在するかどうか（または幾つ存在するか）を決定する、他のアプリケーションなど、産業用または商業用のアプリケーションでも使用され得る。例えば、図１７の簡略ブロックダイアグラム１７００が示す例に示されるように、消費者製品に関連する２つのサンプル画像１７０５、１７１０が、閾値決定ロジック１７２０を有するシャムネットワークへの入力として提供され得る。シャムネットワークモデル１７２０は、２つのサンプル画像１７０５、１７１０が同じ製品の画像である可能性が高いかどうかを（１７１５で）決定することができる。実際、幾つかの実装では、係るシャムネットワークモデル１７２０によって、様々な回転およびオクルージョンにおける製品の識別が可能になり得る。場合によっては、３Ｄモデルを利用することで、数ある例示的な検討事項および特徴の中でもとりわけ、より複雑な製品および物体に関する複数の基準画像を生成して検証レベルを上げることができる。
【０１１３】
幾つかの実装では、コンピューティングシステムは、点群の登録を実行するため機械学習タスク、または、２つまたはそれより多くの別個の点群のマージを実行するように適合される、ロジックおよびハードウェアを備えることができる。点群のマージを実行するには、点群の内容を位置合わせする変換を見つける必要がある。係る問題は、数ある使用事例の中でもとりわけ、ロボット知覚アプリケーション、未知の環境に関するマップの作成など、自律型機械に関わるアプリケーションにおいてよく見られる。
【０１１４】
幾つかの実装では、２Ｄ画像間の相対的姿勢を見つけるための解決策として畳み込みネットワークを使用することで、従来の特徴ベースのアプローチと同等の結果を提供することができる。３Ｄスキャン技術の進歩により、ニューラルネットワークのトレーニングに有用な３Ｄデータを用いて、複数のデータセットを更に作成することができる。幾つかの実装では、２つまたはそれより多くの異なる入力のストリームを受け入れることができる機械学習モデルが提供され得る。２つまたはそれより多くのデータ入力の各々は、それぞれの３次元（３Ｄ）点群を具現化する。２つの３Ｄ点群は、２つの異なるそれぞれの姿勢から測定される同じ物理的な空間または物体（または、物理的な空間または物体の仮想化バージョン）の表現であってよい。機械学習モデルは、これら２つの３Ｄ点群入力を受け入れ、２つの３Ｄ点群のソース間の相対的または絶対的な姿勢の指標を出力として生成することができる。次に、相対的姿勢の情報を使用して、環境の（３Ｄ点群の）複数のスナップショットから（１つまたはそれより多い複数の異なるセンサおよびデバイス（例えば、環境をスキャンするために移動する複数のドローンまたは同じドローン）から）環境のグローバルな３Ｄ点群表現を生成することができる。相対的姿勢を使用することで、数ある例示的な使用の中でもとりわけ、特定の機械により測定される３Ｄ点群入力を、前に生成された環境のグローバルな３Ｄ点群表現と比較して、環境内の特定の機械の相対的位置を決定することもできる。
【０１１５】
一例では、点をソートするための３Ｄグリッドを作成するボクセル化点群処理技術が使用される。ここでは、図１８の例で示すような畳み込み層が適用され得る。幾つかの実装では、３Ｄのグリッドまたは点群は、本明細書に説明のようなボクセルベースのデータ構造として具現化または表現され得る。例えば、図１８の例では、ボクセルベースのデータ構造（１８１０で表される）が、例示的な３Ｄ環境のＲＧＢ−ＤカメラまたはＬＩＤＡＲスキャンから生成される点群１８０５から生成され得る。幾つかの実装では、シャムネットワークを採用するものなど、比較機械学習モデルに提供され得る２つの点群入力が、一対の３Ｄボクセルグリッド（例えば、１８１０）であってよい。場合によっては、２つの入力は、上記のような複数の潜在的なボクセル解像度の何れか１つで最初にボクセル化され（、ボクセルベースのデータ構造（例えば、１８１０）に変換され）得る。
【０１１６】
図１９の簡略ブロックダイアグラム１９００に表す一例では、機械学習モデルは、表現部分１９２０および回帰部分１９２５で構成され得る。上記のように、シャムネットワークベースの機械学習モデルは、一対の３Ｄボクセルグリッド入力（例えば、１９０５、１９１０）または他の点群データから相対的なカメラ姿勢を直接推定するように構成され得る。幾つかの実装では、３Ｄボクセルグリッドは、ボクセルグリッドデータの組織化された構造を前提として、従来の畳み込み層を有するニューラルネットワークで有利に使用され得る。ネットワークを使用して決定される相対的なカメラ姿勢は、ボクセルグリッド入力の対応する点群をマージするために使用され得る。
【０１１７】
幾つかの実装では、例示的なネットワークの表現部分１９２０は、共有された重みおよびバイアスを有するシャムネットワークを含むことができる。各分岐（またはシャムネットワークのチャネル）は、連続する畳み込み層により形成されて、それぞれの入力１９０５、１９１０の特徴ベクトルを抽出する。更に、幾つかの実装では、各畳み込み層の後に、正規化線形ユニット（ＲｅＬＵ）が活性化関数として提供され得る。場合によっては、データの空間情報が確実に保存されるように、プーリング層が省略され得る。ネットワークの表現部分１９２０から出力される特徴ベクトルを組み合わせて、回帰部分１９２５に入ることができる。回帰部分１９２５は、２つの入力点群１９０５、１９１０間の相対的姿勢を表す出力１９３０を生成できる全結合層の組を含む。幾つかの実装では、回帰部分１９２５は、２つの全結合層の組で構成されてよく、一方は姿勢推定の回転値の生成を担い、第２の層の組は、姿勢の並進値の生成を担う。幾つかの実装では、回帰部分１９２５の全結合層の後には、数ある例示的な特徴および実装の中でもとりわけ、ＲｅＬＵ活性化関数が続くことができる（出力が負の値を有し得ることから、最終層を除く）。
【０１１８】
幾つかの実装では、上の図１９の例などにおいて、自己指導学習が、トレーニングフェーズに機械学習モデル上で実施され得る。例えば、ネットワーク（図１９の例に示す）の目的は回帰問題の解決であるため、その解決をネットワークが実現するように導く損失関数が提供され得る。トレーニングフェーズを提供することで、ラベルに基づく、または、２つの点群の位置合わせの定量化による損失関数などの損失関数を導出することができる。一例では、図２０の簡略ブロックダイアグラム２０００に示すように、例示的なトレーニングフェーズ２０２０が実装され得る。ここでは、損失関数２０２５がネットワーク予測と比較する姿勢をｙが予測するために使用されるデータベースのグラウンドトゥルースを取得するために（例えば、対応するＣＮＮ２０１０に関連して）使用される反復最接近点（ＩＣＰ）ベースの方法２０１５に対して、入力２００５が提供される。このような例では、グラウンドトゥルースがラベル付けされたデータセットを有する必要がない。
【０１１９】
図１９および図２０の例で説明するようなトレーニングされたシャムネットワークベースのモデルを、３Ｄマップの生成およびナビゲーションおよびローカライゼーションなどのアプリケーションで利用することができる。例えば、図２１の例に示すように、係るネットワークは、環境内のナビゲートを支援するために、移動ロボット（例えば、２１０５）または他の自律型機械により（機械学習ハードウェア（例えば、ＮＣＳデバイス２１１０）に関連して）利用され得る。ネットワークは、数あるローカライゼーションおよびマッピングの同時実行（ＳＬＡＭ）アプリケーションの中でもとりわけ、環境２１１５の３Ｄマップを生成するためにも使用され得る（例えば、ロボットまたは自律型機械により後で使用され得る）。
【０１２０】
幾つかの実装では、エッジツーエッジの機械学習を利用して、アプリケーション内でセンサ融合を実行することができる。係る解決策は、複数の異なるセンサのデータを融合することにより経時的にロボットの動きを回帰させるために適用され得る。これはよく研究された問題であるが、現在の解決策では経時的にドリフトするか、または計算コストが高くなる。幾つかの例では、機械学習アプローチは、数ある例示的な利点の中でもとりわけ、データ内のノイズ、照明の変化、被写体ぶれの影響を受けにくい一方で、コンピュータビジョンタスクで利用され得る。例えば、畳み込みニューラルネットワーク（ＣＮＮ）を、物体の認識およびオプティカルフローの計算に使用することができる。ＣＮＮベースのモデルを実行するシステムハードウェアは、数ある例の中でもとりわけ、長短期記憶（ＬＳＴＭ）ブロックなどのハードウェアコンポーネントおよびサブシステムを採用して、信号回帰に関する良好な結果などの更なる効率を認識することができる。
【０１２１】
一例では、各ソースの弱点（例えば、単眼ＲＧＢ：スケールの欠如、ＩＭＵ：経時的なドリフトなど）を独立して克服すべく、異なるタイプのデータ（例えば、ＲＧＢデータおよびＩＭＵデータなど）の複数のソースからの入力を受け入れることができる機械学習モデルを利用するシステムが提供され得る。機械学習モジュールは、各タイプのデータソースの分析に合わせて調整されるそれぞれのニューラルネットワーク（または他の機械学習モデル）を含むことができる。各タイプのデータソースは、全結合層のステージに連結され、供給されて、複数のデータストリームから結果（例えば、姿勢）を生成することができる。係るシステムは、例えば、数ある例示的な用途の中でもとりわけ、ロボット、ドローン、または車両などの機械の自律ナビゲーションを可能にすることを目的としたコンピューティングシステムで使用され得る。
【０１２２】
例えば、図２２の例に示すように、ＩＭＵデータは、ＩＭＵデータ用に調整されるネットワークへの入力として提供され得る。ＩＭＵデータは、加速度および向きを測定することにより被写体の動きを追跡する方法を提供することができる。ただし、場合によっては、ＩＭＵデータを機械学習アプリケーション内で単独で利用すると、経時的にドリフトが生じ得る。幾つかの実装では、ＬＳＴＭを使用してこのデータの関係を経時的に追跡することで、ドリフトを減らすのに役立てることができる。図２２の簡略ブロックダイアグラム２２００で示す一例では、ｎ個の生の加速度計およびジャイロスコープのデータ要素２２０５のサブシーケンスが、（例えば、各データ要素が６つの値（ＩＭＵの加速度計およびジャイロスコープからそれぞれ３軸）で構成される場合に、）例示的なＬＳＴＭ２２１０への入力として使用される。他の例では、入力２２０５は、画像フレーム間のｎ個（例えば、１０個）の相対的姿勢（例えば、フレームｆｉとｆｉ＋１との間のｎ個のＩＭＵ相対的姿勢
【数１】
2021526253.tif 000003
）のサブシーケンスを含むことができる。全結合層（ＦＣ）２２１５をネットワーク内に提供して、変換の回転成分および並進成分を抽出することができる。例えば、全結合層２２１５に続いて、結果として得られる出力は、回転値２２３０を抽出するための全結合層２２２０、および、並進値２２３５を抽出するための全結合層２２２５の各々に供給され得る。幾つかの実装では、モデルは、より少ないＬＳＴＭ層（例えば、１つのＬＳＴＭ層）と、より多くのＬＳＴＭユニット（例えば、５１２ユニットまたは１０２４ユニットなど）とを含むように構築され得る。幾つかの実装では、３つの全結合層２２１５の組が使用され、続いて、回転に関する全結合層２２２０および並進に関する全結合層２２２５が使用される。
【０１２３】
図２３の例を参照すると、単眼ＲＧＢデータなどの画像データのデータストリームを処理できるネットワークの簡略ブロックダイアグラム２３００が示されている。故に、オプティカルフローを計算するためにトレーニングされ、かつ、姿勢推定のための次元削減を特徴とし得る、ＲＧＢ  ＣＮＮ部分が提供され得る。例えば、数ある例の中でもとりわけ、幾つかの全結合層を提供して次元を減らすことができる、および／または、特徴ベクトルを行列として再形成することができる、および、４つのＬＳＴＭの組を使用して、特徴間の対応関係を見つけ、次元を減らすことができる。
【０１２４】
図２３の例では、ＦｌｏｗＮｅｔＳｉｍｐｌｅ、ＦｌｏｗＮｅｔＣｏｒｒ、Ｇｕｉｄｅｄ  Ｏｐｔｉｃａｌ  Ｆｌｏｗ、ＶＩＮｅｔ、または他の光ネットワークなどの予めトレーニングされたオプティカルフローＣＮＮ（例えば、２３１０）を提供して、一対の連続するＲＧＢ画像を入力２３０５として受け入れることができる。モデルは、オプティカルフローＣＮＮ２３１０を通じて画像対２３０５から特徴ベクトルを抽出し、次に、そのベクトルを縮小して入力２３０５に対応する姿勢ベクトルを取得するように更に構築され得る。例えば、光ネットワーク部分２３１０の出力が、１つまたは複数の更なる畳み込み層２３１５の組に提供され（例えば、光ネットワーク部分２３１０の出力から次元を減らすために、および／または、フローベクトルの推定には使用されるが姿勢推定には必要とされない情報を除去するために利用され）てよく、これらの畳み込み層２３１５の出力は、対応するベクトルに（２３２０で）平坦化され得る行列であってよい。ベクトルは、平坦化されたベクトルの次元の縮小（例えば、１５３６から５１２への縮小）を実行するために、全結合層２３２５に提供され得る。この縮小されたベクトルは、ベクトルを行列に変換または再形成するために、再形成ブロック２３３０に戻され得る。次に、再形成された行列の各方向（例えば、左から右／上から下、右から左／下から上、上から下／左から右、および、下から上／右から左）に１つずつある、４つのＬＳＴＭの組２３３５を使用して、時間に沿って特徴の対応関係を追跡し、次元を減らすことができる。次に、数ある例示的な実装の中でもとりわけ、ＬＳＴＭの組２３３５の出力は、一対の画像２３０５に基づいて回転値２３５０を生成するために、回転に関する全結合層２３４０に提供されてよく、一対の画像２３０５に基づいて並進値２３５５を生成するために、並進に関する全結合層２３４５に提供されてよい。
【０１２５】
図２４を参照すると、センサ融合ネットワーク２４０５の簡略ブロックダイアグラム２４００が示されている。センサ融合ネットワーク２４０５は、ＩＭＵニューラルネットワーク部分２４１０（例えば、図２２の例に示すようなもの）およびＲＧＢニューラルネットワーク部分２４１５（例えば、図２３の例に示すようなもの）の結果を連結する。係る機械学習モデル２４０５は更に、各センサタイプから最良のものを選ぶことによりセンサ融合を可能にし得る。例えば、機械学習モデルは、ＣＮＮとＬＳＴＭとを組み合わせてよりロバストな結果をもたらすことができる（例えば、ＣＮＮは、一対の連続する画像から特徴を抽出することができ、ＬＳＴＭは、センサの漸進的な動きに関する情報を取得することができる）。この点でＣＮＮおよびＬＳＴＭの両方の出力は補完的であり、２つの連続するフレームの違い（およびその相対的変換）および実世界の単位でのその表現の正確な推定を機械に与える。
【０１２６】
図２４の例では、数ある例の中でもとりわけ、それぞれのセンサ固有の部分（例えば、２４０５、２４１０）の結果を連結し、組み合わされた機械学習モデル２４０５（またはセンサ融合ネットワーク）の全結合層に提供して、回転姿勢および並進姿勢の両方を組み込んだ姿勢結果を生成することができる。ＩＭＵデータおよび単眼ＲＧＢは個々に、回帰問題の信頼できる解決策に十分な情報を提供していないように見えることがあるが、本明細書で図示および説明するようなこれらのデータ入力を組み合わせることで、よりロバストで信頼できる結果（例えば、図２５Ａおよび図２５Ｂのグラフ２５００ａ、ｂに示されている例示的な結果に示すようなもの）がもたらされ得る。係るネットワーク２４０５は、両方のセンサタイプ（例えば、ＲＧＢおよびＩＭＵ）の有用な情報を活用する。例えば、この特定の例では、ネットワーク２４０５のＲＧＢ  ＣＮＮ部分２４１５は、連続する画像間の相対的変換に関する情報を抽出することができるが、ＩＭＵ  ＬＳＴＭベースの部分２４１０は、変換にスケールを提供する。各部分２４１０、２４１５により出力されるそれぞれの特徴ベクトルは、ＲＧＢ画像２３０５とＩＭＵデータ２２０５との組み合わせに基づいて、ベクトルを連結し、コアの全結合層２４２５にこの結果を供給し、続いて、回転値２４４０を生成するための回転に関する全結合層２４３０、および、並進値２４４５を生成するための並進に関する全結合層２４３５の両方にこの結果を供給するために、連結部ブロック２４２０に供給され得る。図２２から図２４の例はＲＧＢデータとＩＭＵデータとの融合を示しているが、本明細書に記載の原理に従った機械学習モデルで、他のデータタイプを置換（例えば、ＩＭＵデータをＧＰＳデータで置換および補足するなど）し、組み合わせることができることを理解されたい。実際、数ある例示的な修正形態および代替形態の中でもとりわけ、２つより多くのデータストリーム（および連結部に供給される、対応するニューラルネットワーク部分）が、よりロバストな解決を可能にするために、他の例示的な実装で提供され得る。
【０１２７】
幾つかの実装では、ニューラルネットワークオプティマイザが提供され得る。このニューラルネットワークオプティマイザは、ニューラルネットワークを使用して機械学習タスクを実行する特定のアプリケーションおよびハードウェアプラットフォームに推奨される１つまたは複数のニューラルネットワークを、ユーザまたはシステムに対して識別することができる。例えば、図２６に示すように、マイクロプロセッサ２６１０およびコンピュータメモリ２６１５を含むコンピューティングシステム２６０５を提供することができる。コンピューティングシステム２６０５は、ニューラルネットワークオプティマイザ２６２０を実装することができる。ニューラルネットワークオプティマイザ２６２０は、数ある例示的なハードウェアの中でもとりわけ、本明細書に記載のような機械学習ハードウェア（例えば、２６２５）を使用して一組の機械学習タスク（例えば、２６３５）を実行させる実行エンジンを含むことができる。ニューラルネットワークオプティマイザ２６２０は更に、機械学習ハードウェア２６２５上で実行するためにニューラルネットワークオプティマイザ２６２０により選択され、かつ、ニューラルネットワークオプティマイザ２６２０により監視される、一組のニューラルネットワークのうちの１つを使用して、機械学習ハードウェア２６２５により機械学習タスクが実行される際に機械学習タスクの実行を監視するための１つまたは複数のプローブ（例えば、２６３０）を含むことができる。プローブ２６３０は、数ある例示的なパラメータの中でもとりわけ、タスクの実行中に機械学習ハードウェア２６２５により消費される電力、実行中の機械学習ハードウェアの温度、特定のニューラルネットワークを使用してタスクを完了する速度または完了するために経過した時間、特定のニューラルネットワークを使用したタスク結果の正確性、（例えば、使用されているニューラルネットワークを格納するために）利用されるメモリの量などの属性を測定することができる。
【０１２８】
幾つかの実装では、コンピューティングシステム２６０５は、ニューラルネットワーク生成システム（例えば、２６４０）とインタフェースを取ることができる。幾つかの実装では、ニューラルネットワークを評価するコンピューティングシステム（例えば、２６０５）とニューラルネットワーク生成システム２６４０とは、同じコンピューティングシステム上に実装され得る。ニューラルネットワーク生成システム２６４０では、ユーザが様々なタスクおよび解決策のためにニューラルネットワークモデル（例えば、ＣＮＮ）を手動で設計することが可能になり得る。幾つかの実装では、ニューラルネットワーク生成システム２６４０は更に、前に生成されたニューラルネットワークのレポジトリ２６４５を含むことができる。一例では、ニューラルネットワーク生成システム２６４０（例えば、ＣＡＦＦＥ、ＴｅｎｓｏｒＦｌｏｗなどといったシステム）は、一組のニューラルネットワーク２６５０を生成することができる。この組はランダムに生成され、（例えば、所与のアプリケーションに適した幾つかの一般化されたパラメータに基づいて、または、一般的なニューラルネットワークのタイプまたは部類に従って、）新しいニューラルネットワークを０から生成すること、および／または、ニューラルネットワークをレポジトリ２６４５からランダムに選択することができる。
【０１２９】
幾つかの実装では、一組のニューラルネットワーク２６５０が、ニューラルネットワーク生成システム２６４０により生成され、ニューラルネットワークオプティマイザ２６２０に提供され得る。ニューラルネットワークオプティマイザ２６２０は、一組のニューラルネットワーク２６５０の１つ１つを使用して、特定の機械学習ハードウェア（例えば、２６２５）に、１つまたは複数の機械学習タスクの標準化された組を実行させることができる。ニューラルネットワークオプティマイザ２６２０は、ハードウェア２６２５による一組のニューラルネットワーク２６５０の１つ１つの使用に関連して、タスクの性能を監視することができる。ニューラルネットワークオプティマイザ２６２０は更に、一組のニューラルネットワークのうちの「最良のもの」を決定する際に、ニューラルネットワークオプティマイザのプローブ（例えば、２６３０）により測定される、どのパラメータまたは特性が、ニューラルネットワークオプティマイザにより最も高く重み付けされるまたは優先されるかを識別するための入力として、データを受け入れることができる。（例えば、ランダムに生成された）一組のニューラルネットワークの１つ１つの使用中におけるこれらの基準およびニューラルネットワークオプティマイザの観測に基づいて、ニューラルネットワークオプティマイザ２６２０は、提供された基準に基づいて、特定の機械学習ハードウェア（例えば、２６２５）に最適な性能のニューラルネットワークを識別および提供することができる。幾つかの実装では、ニューラルネットワークオプティマイザは、更なる使用およびトレーニングなどのために、この最高性能のニューラルネットワークをハードウェアに自動的にに提供することができる。
【０１３０】
幾つかの実装では、ニューラルネットワークオプティマイザは、ニューラルネットワークオプティマイザ（例えば、２６２０）により評価される最初の（例えば、ランダムに生成された）組のニューラルネットワークから識別される結果を繰り返し改善するために進化的な調査を採用することができる。例えば、ニューラルネットワークオプティマイザは、ニューラルネットワークオプティマイザにより評価される最初の組から、最高性能の１つまたは複数のニューラルネットワークの特性を識別することができる。次に、ニューラルネットワークオプティマイザは、ニューラルネットワーク生成器（例えば、２６４０）に対して、特定のハードウェア（例えば、２６２５）の最高性能のニューラルネットワークで識別されるものと同様の特性を有する別の多様な組のニューラルネットワークを生成する要求を送信することができる。次に、ニューラルネットワークオプティマイザ２６２０は、ニューラルネットワークオプティマイザにより評価される最初のバッチからの最高性能のニューラルネットワークに基づいてニューラルネットワーク生成器により生成される次の組または世代のニューラルネットワークを使用して、その評価を繰り返すことができる。先と同様に、ニューラルネットワークオプティマイザ２６２０は、提供された基準に従って、この第２世代のニューラルネットワークのうちのどのニューラルネットワークの性能が最適であったかを識別することができ、評価のために第３世代のニューラルネットワークを生成する要求をニューラルネットワーク生成器に送信するための基礎として、第２世代における最適な性能のニューラルネットワークの特質を再び決定することができる。故に、ニューラルネットワークオプティマイザ２６２０を用いると、１つの世代から次の世代へと進化（し、理論的には改善）するニューラルネットワークが繰り返し評価される。前の例のように、ニューラルネットワークオプティマイザ２６２０は、数ある例示的な実装の中でもとりわけ、機械学習ハードウェア（例えば、２６２５）により使用される最新世代の最適な性能のニューラルネットワークの指標またはコピーを提供することができる。
【０１３１】
図２７のブロックダイアグラム２７００に示す具体的な例として、Ｍｏｖｉｄｉｕｓ  ＮＣＳなどの機械学習ハードウェア２６２５は、設計空間探索ツールとして機能するニューラルネットワークオプティマイザと共に利用されてよく、ニューラルネットワーク生成器２６４０またはＣＡＦＦＥなどのプロバイダを使用することで、ハードウェアの制約を受けて、最も高い正確性でネットワークを見つけることができる。係る設計空間探索（ＤＳＸ）ツールは、ネットワークグラフおよび帯域幅測定を含む完全なＡＰＩを活用するために提供され得る。更には、機械学習ハードウェアＡＰＩに幾つかの拡張を追加または提供して、数ある例の中でもとりわけ、温度測定、推論時間測定などの設計空間探索に有用な更なるパラメータを引き出すことができる。
【０１３２】
ＤＳＸ概念の力を示すために、例として、顔検出でウェイクアップするように最新の携帯電話に実装されているものなど、小型で常時オンの顔検出器のニューラルネットワーク設計空間を調査する例が提供される。様々なニューラルネットワークが機械学習ハードウェアに提供されてよく、性能は、推論ステージにおけるトレーニングされたネットワークの電力使用量など、ニューラルネットワークの使用ごとに監視されてよい。ＤＳＸツール（またはニューラルネットワークオプティマイザ）は、所与の分類タスクに対して異なるニューラルネットワークを生成することができる。データは、ハードウェアに転送され得る（例えば、ＮＣＳの場合は、ＵＳＢ経由でＮＣＳ  ＡＰＩを使用してＮＣＳとの間で転送され得る）。上で説明した実装では、任意のファイルを手動で編集、コピー、およびペーストするのではなく、設計空間の調査の結果として、複数の異なる目的に最適なモデルを見つけることができる。実例として、図２８は、ランダムに生成された複数の異なるニューラルネットワークのＤＳＸツールの評価の例示的な結果を示した表２８００を示す。この結果は、ニューラルネットワークの１つ１つを使用した機械学習タスクの実行中における機械学習ハードウェア（例えば、ＮＣＳに接続される汎用マイクロプロセッサ）の性能特性を含む（例えば、ＤＳＸツールにより測定され得る数ある例示的なパラメータの中でもとりわけ、正確性、実行時間、温度、メモリ内のニューラルネットワークのサイズ、および測定された電力を示す）。図２９は、検証の正確性と実行時間とを比較した結果（２９００）、および、検証の正確性とサイズとを比較した結果（２９０５）を示す。これらの関係および比率は、数ある例の中でもとりわけ、評価されたニューラルネットワークのうちのどれが特定の機械学習プラットフォームに「最適」であるかを決定するときにＮＣＳにより検討され得る。
【０１３３】
深層ニューラルネットワーク（ＤＮＮ）は、画像分類および物体検出など、様々なコンピュータビジョンタスクに関する最先端の正確性を提供する。ただし、ＤＮＮの成功は、計算およびメモリの大幅な増加によって達成されることが多いので、リソースに制約のある推論エッジデバイスでの展開が困難になる。幾つかの実装では、枝刈りおよび量子化のようなネットワーク圧縮技術によって、計算およびメモリの需要を減らすことができる。これは、特に、小さなカスタムデータセットでの転移学習の場合に、正確性を全くまたはほとんど損なわずに過剰適合を防ぐのにも役立ち得る。
【０１３４】
幾つかの実装では、特定の機械学習ハードウェアにより使用されるニューラルネットワークのサイズを動的かつ自動的に減らすために、ニューラルネットワークオプティマイザ（例えば、２６２０）または他のツールも提供され得る。例えば、ニューラルネットワークオプティマイザは、細粒の枝刈り（例えば、接続または重みの枝刈り）および粗粒の枝刈り（例えば、カーネル、ニューロン、またはチャネルの枝刈り）を実行して、所与の機械学習ハードウェアにより格納および操作されるニューラルネットワークのサイズを減らすことができる。幾つかの実装では、機械学習ハードウェア（例えば、２６２５）は、重みの枝刈りされたニューラルネットワークをハードウェアが効果的に処理できるように、スパース行列乗算を実行できる演算回路を備えてよい。
【０１３５】
一実装では、ニューラルネットワークオプティマイザ２６２０または他のツールは、（例えば、図３０Ａのブロックダイアグラム３０００ａに示すように）ニューラルネットワークのハイブリッド枝刈りを実行して、カーネルレベルおよび重みレベルの両方で枝刈りすることができる。例えば、所与のニューラルネットワークから枝刈り３０１０され得るカーネルまたはチャネルの組を（３００５で）自動的に識別するために、１つまたは複数のアルゴリズム、ルール、またはパラメータが、ニューラルネットワークオプティマイザ２６２０または他のツールにより検討され得る。この第１チャネル枝刈り段階が（３０１５で）完了した後、図３０Ａの例示的な図に示すように、残りのチャネル３０１５に対する重み枝刈り３０２０が実行され得る。例えば、ルールは、閾値が設定されることにより閾値を下回る重みが（３０２５で）枝刈りされる（例えば、「０」の重みを再割り当てされる）ように、重みの枝刈りを管理することができる。次に、ハイブリッド枝刈りされたネットワークを実行または反復して、ネットワークの正確性を枝刈りから回復させ、モデルの正確性を有害に下げることなく、ネットワークのコンパクトバージョンをもたらすことが可能になり得る。更に、幾つかの実装では、枝刈り後に残っている重みを量子化して、枝刈りされたモデルの重みを格納するために必要なメモリの量を更に減らすことができる。例えば、図３１のブロックダイアグラム３１００に示す通り、浮動小数点の重み値（３１０５）が、最も近い基数２の対応物（３１１５）に置き換えられるように、ログスケールの量子化３１１０を実行することができる。このようにして、３２ビットの浮動小数点値を４ビットの基数２の値に置き換えて、ネットワークの重みを格納するために必要なメモリの量を劇的に減らすと同時に、（例えば、図３２の表３２００に示されている例示的な結果に示すように、）数ある例示的な量子化および特徴の中でもとりわけ、コンパクトなニューラルネットワークの正確性の損失をほんの最小限に抑えることができる。実際、図３２の特定の例では、ハイブリッド枝刈りの適用の研究が、ＲｅｓＮｅｔ５０などの例示的なニューラルネットワークに適用されるものとして示されている。更には、モデルサイズを更に減らし、かつ、ハードウェアをより使いやすくするための、枝刈りされた疎で薄いＲｅｓＮｅｔ５０に対する重みの量子化の適用が示されている。
【０１３６】
図３０Ｂの簡略ブロックダイアグラム３０００ｂで示すように、一例では、例示的なニューラルネットワークのハイブリッド枝刈りが、最初または基準のニューラルネットワークモデルへのアクセス３０３５、および、（オプションとして）正則化（Ｌ１、Ｌ２、またはＬ０）によるモデルのトレーニング３０４０により実行され得る。ネットワーク内の個々のニューロン（または接続）の重要性が３０４５で評価され、重要性がより低いと決定されたニューロンは、ネットワークから（３０５０で）枝刈りされ得る。枝刈りされたネットワークは微調整３０５５されてよく、この枝刈りから最終的なコンパクト（または疎）なネットワークが生成３０６０されてよい。図３０Ｂの例に示すように、場合によっては、数ある例示的な実装の中でもとりわけ、枝刈りされたネットワークの微調整３０５５に続いて更なるトレーニングおよび枝刈り（例えば、３０４０〜３０５０）を実行することで、ネットワークを繰り返し枝刈りすることができる。幾つかの実装では、上記のようなハイブリッド枝刈り技術を利用して、ニューロンの重要性の決定３０４５が実行され得る。例えば、細粒の重みの枝刈り／疎化は、（例えば、（ｍｅａｎ＋ｓｔｄ＊ｆａｃｔｏｒ）を用いたグローバルな段階的な枝刈りによって）実行され得る。粗粒のチャネル枝刈りは、感度テストおよび／または幾つかの目標ＭＡＣに基づいて、層ごとに実行され得る（例えば、重み合計枝刈り）。粗い枝刈りは、疎な枝刈りの前に実行され得る。例えば、重みの量子化は、０でない重みに対する制約を０または２の累乗に設定するために、および／または、０に１ビットを使用し、かつ、重みを表すのに４ビットを使用するために実行されてもよい。場合によっては、数ある例示的な技術の中でもとりわけ、低精度（例えば、重みおよび活性化）の量子化が実行され得る。上記のような枝刈り技術は、様々な例示的な利益をもたらし得る。例えば、コンパクトな行列によって、格納されたネットワークパラメータのサイズが縮小されてよく、実行時間の重みの減圧（ｄｅｃｏｍｐｒｅｓｓｉｏｎ）によって、ＤＤＲ帯域幅が縮小されてよい。数ある例示的な利点の中でもとりわけ、加速計算が提供されてもよい。
【０１３７】
図３３Ａは、合成トレーニングデータサンプル（例えば、合成的に生成された画像または合成的に生成された点群）を含むトレーニングデータセットを生成するための例示的な技術の簡略フロー図３３００ａである。例えば、コンピュータメモリからデジタル３Ｄモデルにアクセスすること３３０２ができ、デジタル３Ｄモデルの様々なビューから複数のトレーニングサンプルを生成すること３３０４ができる。これらのトレーニングサンプルは、１つまたは複数の実世界のサンプルにより生成されることから、トレーニングサンプルをシミュレートするためにトレーニングサンプルに欠陥を追加するように修正すること３３０６ができる。トレーニングデータセットを、修正され、合成的に生成されたトレーニングサンプルを含むように生成する３３０８。生成されたトレーニングデータセットを使用して、１つまたは複数のニューラルネットワークをトレーニングすること３３１０ができる。
【０１３８】
図３３Ｂは、シャムニューラルネットワークモデルを使用して１回限りの分類を実行するための例示的な技術の簡略フロー図３３００ｂである。被写体入力を、シャムニューラルネットワークモデルの第１部分への入力として提供すること３３１２ができ、基準入力を、シャムニューラルネットワークモデルの第２部分への入力として提供すること３３１４ができる。モデルの第１部分および第２部分は同一であってよく、同一の重みを有することができる。差分ベクトルなどの被写体入力および基準入力に基づいて、第１部分および第２部分の出力からシャムネットワークの出力を生成すること３３１６ができる。例えば、シャムニューラルネットワークモデルの出力に関する類似性の閾値に基づいて、（例えば、被写体入力の被写体が基準入力の被写体と同じであることを示すべく、）被写体入力が基準入力と適切に類似しているかどうかを、出力が示していると決定すること３３１８ができる。
【０１３９】
図３３Ｃは、例示的なシャムニューラルネットワークモデルを使用して相対的姿勢を決定するための例示的な技術の簡略フロー図３３００ｃである。例えば、    第１入力を、シャムニューラルネットワークモデルの第１部分への入力として受信すること３３２０ができ、第１入力は、（例えば、自律型機械の）第１姿勢からの３Ｄ空間（例えば、点群データ、深度マップデータなど）のビューを表す。第２入力を、シャムニューラルネットワークモデルの第２部分への入力として受信すること３３２２ができ、第２入力は、第２姿勢からの３Ｄ空間のビューを表す。第１入力および第２入力に基づいて、シャムネットワークの出力を生成すること３３２４ができ、出力は、第１姿勢と第２姿勢との間の相対的姿勢を表す。決定された相対的姿勢に基づいて、第１姿勢および第２姿勢と関連付けられる機械の位置、および／または、機械が存在する３Ｄマップを決定すること３３２６ができる。
【０１４０】
図３３Ｄは、センサ融合機械学習モデルを含む例示的な技術の簡略フロー図３３００ｄである。センサ融合機械学習モデルは、２つまたはそれより多くの異なるデータタイプのうちの対応するものと共に使用するように調整される２つまたはそれより多くの機械学習モデルの少なくとも一部を組み合わせる。センサ融合機械学習モデルにおける２つまたはそれより多くの機械学習モデルのうちの第１のものにおいて、第１タイプの第１センサデータを入力として受信すること３３３０ができる。（例えば、（例えば、同じまたは異なる機械上のセンサにより）第１センサデータと同時に生成される）第２タイプの第２センサデータを、２つまたはそれより多くの機械学習モデルのうちの第２のものへの入力として受信すること３３３２ができる。第１機械学習モデルおよび第２機械学習モデルの出力を連結すること３３３４ができ、連結された出力は、センサ融合機械学習モデルの一組の全結合層に提供される３３３６。センサ融合機械学習モデルは、第１センサデータおよび第２センサデータに基づいて出力を生成して、デバイス（例えば、第１センサデータおよび第２センサデータを生成するセンサが配置される機械）の姿勢を定義すること３３３８ができる。
【０１４１】
図３３Ｅは、進化的なアルゴリズムに従って、特定の機械学習ハードウェアに合わせて調整される改善または最適化されたニューラルネットワークを生成するための例示的な技術の簡略フロー図３３００ｅである。例えば、一組のニューラルネットワークにアクセスすること３３４０、または、一組のニューラルネットワークを（例えば、ランダムに選択された属性に従って自動的に）生成することができる。特定のハードウェアが、一組のニューラルネットワークを使用して機械学習タスクを実行すること３３４２ができ、これらのタスクの特定のハードウェアの性能の属性を監視すること３３４４ができる。この監視の結果に基づいて、組内の１つまたは複数の最高性能のニューラルネットワークを識別すること３３４６ができる。（特定のハードウェアに関する）最高性能のニューラルネットワークの特性を決定すること３３４８ができ、係る特性を含む別の組のニューラルネットワークを生成すること３３５０ができる。場合によっては、この新しい組のニューラルネットワークを（例えば、段階３３４２〜３３４８を通じて）テストして、特定のハードウェアについて１つまたは複数の十分に性能の高いまたは最適化されたニューラルネットワークが識別されるまで、ハードウェアとの使用が検討されているニューラルネットワークの組を繰り返し改善することもできる。
【０１４２】
図３３Ｆは、ニューラルネットワークを枝刈りするための例示的な技術の簡略フロー図３３００ｆである。例えば、ニューラルネットワークを識別すること３３５２ができ、ニューラルネットワークのカーネルのサブセットを、重要性がより低いものとして、またはそうでなければ良好な枝刈り候補として決定すること３３５４ができる。このカーネルのサブセットを枝刈り３３５６して、ニューラルネットワークの枝刈りされたバージョンを生成することができる。次に、残りのカーネルを更に枝刈り３３５８して、これらの残りのカーネルから重みのサブセットを枝刈りすることで、粗粒レベルおよび細粒レベルの両方でニューラルネットワークを更に枝刈りすることができる。
【０１４３】
図３４は、幾つかの実施形態に係る例示的なマルチスロットベクトルプロセッサ（例えば、非常に長い命令語（ＶＬＩＷ）ベクトルプロセッサ）を表す簡略ブロックダイアグラムである。この例では、    ベクトルプロセッサは、複数の（例えば、９つの）機能ユニット（例えば、３４０３〜３４１１）を含むことができ、これらのユニットは、ベクトルレジスタファイル（ＶＲＦ）３４０１および汎用レジスタファイル（ＧＲＦ）３４０２によりバックアップされるマルチポートメモリシステム３４００により供給され得る。プロセッサは、命令をデコードし、かつ、機能ユニット３４０３〜３４１１を制御する制御信号を生成する、命令デコーダ（ＩＤＥＣ）３４１２を含む。機能ユニット３４０３〜３４１１は、プレディケイテッド実行ユニット（ＰＥＵ）３４０３、分岐および繰り返しユニット（ＢＲＵ）３４０４、ロードストアポートユニット（例えば、ＬＳＵ０  ３４０５およびＬＳＵ１  ３４０６）、ベクトル演算ユニット（ＶＡＵ）３４０７、スカラ演算ユニット（ＳＡＵ）３４１０、比較および移動ユニット（ＣＭＵ）３４０８、整数演算ユニット（ＩＡＵ）３４１１、およびボリュメトリック加速ユニット（ＶＸＵ）３４０９である。この特定の実装では、ＶＸＵ３４０９は、算術演算、論理演算、および記憶／検索演算（ｓｔｏｒａｇｅ／ｒｅｔｒｉｅｖａｌ  ｏｐｅｒａｔｉｏｎｓ）の両方を含むボリュメトリックデータに対する演算を加速させることができる。図３４の例にはＶＸＵ回路３４０９が単一のコンポーネントとして示されているが、ＶＸＵ（および他の機能ユニット３４０３〜３４１１）の機能は複数の回路に分散され得ることを理解されたい。更に、幾つかの実装では、ＶＸＵ３４０９の機能は、幾つかの実装では、数ある例示的な実装の中でもとりわけ、プロセッサの他の機能ユニット（例えば、３４０３〜３４０８、３４１０、３４１１）のうちの１つまたは複数内に分散され得る。
【０１４４】
図３５は、幾つかの実施形態に係るＶＸＵ３５００の例示的な実装を示した簡略ブロックダイアグラムである。例えば、ＶＸＵ３５００は、ベクトルレジスタファイル３４０１または汎用レジスタファイル３４０２からの入力を受け入れるために、少なくとも１つの６４ビット入力ポート３５０１を提供することができる。この入力は、レジスタファイル３５０３、アドレス生成器３５０４、点アドレス指定ロジック３５０５、点挿入ロジック３５０６、点削除ロジック３５０７、Ｘ次元における３Ｄから２Ｄへの投影ロジック３５０８、Ｙ次元における３Ｄから２Ｄへの投影ロジック３５０９、Z次元における３Ｄから２Ｄへの投影ロジック３５１０、２Ｄヒストグラムピラミッド生成器３５１１、３Ｄヒストピラミッド生成器３５１２、ポピュレーションカウンタ３５１３、２Ｄ経路探索ロジック３５１４、３Ｄ経路探索ロジック３５１５、および、場合によっては、６４ビット符号なし整数ボリュメトリックビットマップ上で動作するための更なる機能ユニットを含む複数の機能ユニットに接続され得る。ブロック３５０２からの出力は、ベクトルレジスタファイルＶＲＦ３４０１または汎用レジスタファイルＧＲＦ３４０２レジスタファイルに書き戻すことができる。
【０１４５】
図３６の例を参照すると、４＾３ボクセルキューブ３６００の編成の表現が表されている。第２ボクセルキューブ３６０１も表されている。この例では、ボクセルキューブを、データ内で６４ビット整数３６０２として定義することができる。ここで、キューブ内の１つ１つのボクセルは、６４ビット整数の単一の対応するビットで表される。例えば、アドレス｛ｘ、ｙ、ｚ｝＝｛３、０、３｝のボクセル３６０２を「１」に設定して、ボクセルキューブ３６０１により表されるボリュメトリック空間内のその座標にジオメトリが存在することを示すことができる。更に、この例では、（ボクセル３６０２以外の）他の全てのボクセルが「空」の空間に対応してよく、数ある例の中でもとりわけ、それらの座標に物理的ジオメトリがないことを示すために「０」に設定され得る。図３７を参照すると、幾つかの実施形態に係る例示的な２レベルのスパースボクセルツリー３７００が示されている。この例では、単一の「占有」ボクセルのみが、ボリューム内（例えば、位置｛１５、０、１５｝）に含まれる。この場合におけるツリーの上位レベル−０  ３７０１は、単一のボクセルエントリ｛３、０、３｝を含む。次に、そのボクセルは、要素｛３、０、３｝に単一のボクセルを含む、ツリーの次のレベル３７０２を指す。スパースボクセルツリーのレベル０に対応するデータ構造内のエントリは、１つのボクセルが占有として設定された６４ビット整数３７０３である。設定されたボクセルは、６４ビット整数のアレイが次に、３７０３で設定されるボクセルボリュームに対応するツリーのレベル１に割り当てられることを意味する。レベル１のサブアレイ３７０４では、ボクセルのうちの１つのみが占有として設定され、他の全てのボクセルが非占有として設定されている。この例ではツリーが２レベルのツリーであることから、レベル１がツリーの最下部を表し、その結果、階層がここで終了する。
【０１４６】
図３８は、特定のボリュームの位置｛１５、０、３｝および｛１５、０、１５｝に占有されたボクセルを含む、幾つかの実施形態に係る２レベルのスパースボクセルツリー３８００を示す。この場合におけるツリー３８０１の上位レベル−０（特定のボリュームを６４個の上位レベル−０のボクセルに細分化する）は、２つのボクセルエントリ｛３、０、０｝および｛３、０、３｝を含み、対応するデータ３８０４は、２つのボクセルが設定（または占有）されていることを示す。スパースボクセルツリー（ＳＶＴ）の次のレベルは、２つのサブキューブ３８０２および３８０３を含む６４ビット整数のアレイとして提供され、これらのサブキューブは、レベル０で設定される各ボクセルに１つずつある。レベル１のサブアレイ３８０５では、２つのボクセルｖ１５およびｖ６３が占有として設定され、他の全てのボクセルが非占有およびツリーとして設定されている。この形式は柔軟である。なぜなら、ツリーの次のレベル内の６４エントリは常に、ツリーの上位層におけるそれぞれの設定されたボクセルに対応して割り当てられるからである。この柔軟性によって、上位層の対応するボクセルが設定されている限り、動的に変化するシーンジオメトリを、柔軟な方式で（すなわち、ランダムなどの固定順序ではなく、）既存のボリュメトリックデータ構造に挿入することが可能になり得る。そうでない場合は、ポインタのテーブルが維持されてメモリ要件が高くなるか、さもないと、予期せぬジオメトリを挿入すべく、ツリーを少なくとも部分的に再構築する必要がある。
【０１４７】
図３９は、幾つかの実施形態に係る、図３８からのボクセルを格納するための代替技術を示す。この例では、全ボリューム３９００が、図２３のようにグローバル座標｛１５、０、３｝および｛１５、０、１５｝に格納される２つのボクセルを含む。このアプローチでは、レベル０よりも下のレベル１のサブキューブの全てを表すために６４エントリのアレイを割り当てるのではなく、（例えば、対応するレベル０のボクセルが占有されているかどうかにより示されるように、）実際にジオメトリを含むレベル１の要素のみが、対応する６４ビットのレベル１レコードとして割り当てられる。その結果、この例のレベル１には、６４個の６４ビットエントリではなく、２つの６４ビットエントリしかない（すなわち、占有されているか空であるかどうかに関係なく、６４個のレベル−１のボクセルの各々について）。故に、この例では、第１のレベル０  ３９０４が図３８の３８０４と同等であるが、次のレベル３９０５は、図３８の対応する３８０５よりもメモリ要件が６２倍小さい。幾つかの実装では、レベル１で空間が割り当てられていないレベル０に新しいジオメトリを挿入する場合は、ツリーをコピーおよび再配置しなければならない。
【０１４８】
図３９の例では、現在の層よりも上の層の占有されているボクセルをカウントすることにより、サブボリュームを導出することができる。このようにして、システムは、ボクセルデータのどこで１つの上位層が終了し、次の下位層が開始するかを決定することができる。例えば、３つの層０ボクセルが占有されている場合は、システムは、３つの対応する層１のエントリがボクセルデータにおいて続くこと、および、次のエントリ（これら３つの後）が層２の第１エントリに対応することなどを予想することができる。係る最適な圧縮は、シーンの特定の部分が経時的に変化しない場合、または、アプリケーションで、ボリュメトリックデータの遠隔伝送、例えば、どのビットも伝送にコストと時間がかかる冥王星の表面をスキャンする宇宙探査機からの遠隔伝送が必要な場合に、非常に有用であり得る。
【０１４９】
図４０は、幾つかの実施形態に係る、対応するボリューム内のジオメトリへの変更を反映するために、６４ビット整数ボリュメトリックデータ構造エントリとして表される４＾３キューブにボクセルが挿入され得る方式を示す。一例では、４０００に示すように、各ボクセルキューブは、６４ビット整数内の４つの論理１６ビット平面として編成され得る。数ある例示的な編成の中でもとりわけ、平面の各々は０から３までのＺ値に対応し、各平面内では、各ｙ値が０から３までの４つの論理４ビット変位をコード化し、最後に、各４ビットｙ平面内では、各ビットが０から３までの４つの考えられるｘの値をコード化する。従って、この例では、ボクセルを４＾３ボリュームに挿入するために、最初に、１ビットをｘ値０から３だけシフトすることができ、次に、その値を０／４／８／１２ビットだけシフトしてｙ値をエンコードすることができ、最後に、４００１のＣコード式に示すように、ｚ値を０／１６／３２／４８ビットのシフトで表すことができる。最後に、各６４ビット整数は、最大６４個のボクセルの組み合わせであってよく、かつ、これらのボクセルの各々は、別個に書き込まれることから、新しいビットマップは、４００２に示すように、古いビットマップ値および新しいビットマップ値をＯＲ演算することにより、スパースボクセルツリーから読み取られる古い６４ビット値と論理的に組み合わせなくてはならない。
【０１５０】
図４１を参照すると、幾つかの実施形態に従って、Ｘ方向に論理ＯＲ演算して２Ｄパターン４１０１を生成すること、Ｙ方向に論理ＯＲ演算して２Ｄ出力４１０２を生成すること、および、最後に、Ｚ方向に論理ＯＲ演算して４１０３に示すパターンを生成することにより、６４ビット整数４１００に格納された３Ｄボリュメトリック物体を投影し得る方法を示すための表現が示されている。図４２は、幾つかの実施形態に従って、入力６４ビット整数からのビットを論理的にＯＲ演算して、Ｘ、Ｙ、およびＺで出力投影を生成する方法を示す。この例では、表４２０１は、Ｘ投影出力ベクトル４２０２を生成するために、入力ベクトル４２００からのどの要素インデックスをＯＲ演算するかを列ごとに示す。表４２０３は、Ｙ投影出力ベクトル４２０４を生成するために、入力ベクトル４２００からのどの要素インデックスをＯＲ演算するかを列ごとに示す。最後に、４２０５は、Ｚ投影出力ベクトル４２０６を生成するために、入力ベクトル４２００からのどの要素インデックスをＯＲ演算するかを列ごとに示す。
【０１５１】
Ｘ投影は、入力データ４２００からのビット０、１、２、３を論理的にＯＲ演算して、Ｘ投影４２０１のビット０を生成する。例えば、４２０１のビット１は、４２００からのビット４、５、６、および７などをＯＲ演算することにより生成され得る。同様に、Ｙ投影４２０４のビット０は、４２００のビット０、４、８、および１２を一緒にＯＲ演算することにより生成され得る。４２０４のビット１は、４２００のビット１、５、９、および１３などを一緒にＯＲ演算することにより生成される。最後に、Ｚ投影４２０６のビット０は、４２００のビット０、１６、３２、および４８を一緒にＯＲ演算することにより生成される。４２０６のビット１は、４２００のビット１、１７、３３および４９などを一緒にＯＲ演算することにより生成され得る。
【０１５２】
図４３は、幾つかの実施形態に係る、投影を使用して簡略マップを生成し得る方法の例を示す。このシナリオにおける目標は、ボクセルボリューム４３０２から、高さｈ４３１０および幅ｗ４３０１の車両４３００が下る経路のコンパクトな２Ｄマップを生成することであってよい。ここで、Ｙ投影ロジックは、ボクセルボリューム４３０２から最初の粗い２Ｄマップ４３０３を生成するために使用され得る。幾つかの実装では、マップを処理して、特定の寸法の特定の車両（例えば、車（または自動型走行車）、ドローンなど）が経路の幅の制約４３０１および高さの制約４３１０を通過できるかどうかをチェックすることができる。これは、Ｚで投影を実行して幅の制約４３０１をチェックすることにより経路が通過可能であることを保証すべく実行されてよく、Ｙでの投影は、計算を車両の高さ４３１０に制限するためにマスクされ得る。（例えば、ソフトウェアでの）更なる後処理を用いると、通過可能で幅および高さの制約を満たす経路の場合、経路に沿ったポイントＡ４３０４、Ｂ４３０５、Ｃ４３０６、Ｄ４３０７、Ｅ４３０８、およびＦ４３０９のＸ座標およびＺ座標のみが、車両が走行できる合法的な経路を完全に再構築すべく、ネットワークを介してのみ記憶または伝送され得ることが分かる。経路が係る区分的セグメントに分解され得ると仮定すると、経路の区分的線形セクションごとに１バイトまたは２バイトのみで、経路を完全に記述することができる。これは、数ある例の中でもとりわけ、（例えば、自律型車両による）係る経路データの高速の伝送および処理に役立ち得る。
【０１５３】
図４４は、ＬＩＤＡＲまたは他の高価な手段を使用して正確な測定を行う代わりに、クラウドソーシングされた高品質のマップを生成すべく、組み込みデバイスからのボリュメトリック３Ｄ測定値または単純な２Ｄ測定値を、数学的手段により幾つかの実施形態に従って集約し得る方法を示す。提案されたシステムでは、複数の組み込みデバイス４４００、４４０１などが、中央サーバ４４１０に伝送され得る、測定を行うことができる様々なセンサを備えることができる。サーバ上で実行されているソフトウェアは、測定値の全ての集約４４０２を実行し、結果として得られる行列の非線形ソルバ４４０３による数値解法を実行して、高精度のマップを生成する。次に、このマップは組み込みデバイスに再分配され得る。実際、データ集約は、衛星４４２０、空中ＬＩＤＡＲ調査４４２１、および地上ＬＩＤＡＲ測定４４２２からの高精度の調査データを含むことで、これらの高忠実度のデータセットが利用可能な場合に、結果として得られるマップの正確性を高めることもできる。幾つかの実装では、マップおよび／または記録された測定値は、数ある例示的な実装の中でもとりわけ、本明細書に記載のような形式のスパースボクセルデータ構造で生成すること、スパースボクセルデータ構造に変換すること、またはそうでなければスパースボクセルデータ構造を使用して表すことができる。
【０１５４】
図４５は、幾つかの実施形態に係る、２Ｄ  ２×２ビットマップ上の２Ｄ経路探索を加速し得る方法を示す図である。動作の原理は、同一のグリッドセルのマップ上のポイント間に接続性が存在するために、ｘまたはｙのセル、または、ｘおよびｙのセルの連続的な実行の値を全て１に設定しなくてはならないことである。従って、それらのセルから引き出されるビットの論理ＡＮＤをインスタンス化して、グリッド内のビットマップをテストして有効な経路が存在するかどうかを確認することができ、Ｎ×Ｎグリッドを通る有効な経路ごとに異なるＡＮＤゲートをインスタンス化することができる。場合によっては、このアプローチでは、８×８の２Ｄグリッドでも２６４−１個の有効な経路を含み得るという点で、組み合わせの複雑さを招くことがある。故に、幾つかの改善された実装では、グリッドは、接続性のテストを階層的に行うことができる２×２または４×４のタイルに縮小され得る。２×２のビットマップ４５００は、ｂ０、ｂ１、ｂ２、およびｂ３とラベル付けされた４ビットを含む。この４ビットは、対応するラベル４５０１〜４５１７で、値００００〜１１１１を取ることができる。これらのビットパターンの各々は、４５２１から４５３０までのラベルが付いた２×２グリッドの面間の様々なレベルの接続性を表す。例えば、２×２グリッド４５００がビットマップ１０１０（７１１２）、１０１１（７１１３）、１１１０（７１１６）、または１１１１（７１１７）を含む場合は、４５００のｘ０とｙ０との間の垂直接続性を表す４５２１またはｖ０が存在する。表４５１８の行１に示すような、４５００の２入力論理ＡＮＤまたはｂ０およびｂ３は、２×２サブグリッドに細分化されたグローバルグリッドを介したグローバルな接続性を決定するために上位レベルのハードウェアまたはソフトウェアで使用され得る接続性マップにｖ０を生成する。グローバルマップがｘ軸またはｙ軸上に奇数のグリッドポイントを含む場合、最上位レベルのグリッドでは、次に大きな偶数のグリッドポイントにパディングする必要がある（例えば、その結果、グローバルグリッド上のｘ軸および／またはｙ軸に更なる０の行を１つ追加する必要がある）。図４５は更に、例示的な７×７グリッド４５５０を示す。このグリッドは、０で満たされた更なる行４５３２および列４５３４を追加することにより８×８にパディングする方法示す。他の技術（例えば、深さ優先検索、幅優先検索もしくはダイクストラ法、または他のグラフベースのアプローチ）と比較して経路探索を高速化すべく、本例ではＮ×Ｎマップ４５５０を２×２マップまで漸進的にサブサンプリングすることができる。例えば、この例では、４５４０のセルＷが、４５５０のセルＡ、Ｂ、Ｃ、およびＤなどの内容をＯＲ演算することにより入力される。同様にして、４５４０の２×２セルのビットは、４５４２のセルに入力するためにＯＲ演算される。経路探索に関して、アルゴリズムは、グリッド４５４２の最も小さな２×２表現から開始し、ビットの各々をテストする。接続性をテストする必要があるのは、４５４０の４×４グリッド（４つの２×２グリッドで構成される）の、２×２グリッド４５４２の１ビットに対応する部分のみである。なぜなら、０ビ���トは、対応する２×２グリッドセルが４５４０にないことを意味していることが分かるからである。このアプローチは、４５２０の８×８グリッドの検索にも使用することができる。例えば、４５４０のセルＷが０を含む場合は、４５２０などのＡＢＣＤに経路がないことが分かる。このアプローチでは、Ａ＊、ダイクストラ、ＤＦＳ、ＢＦＳ、またはそれらの変形例であるかどうかに関係なく、使用されるグラフ検索アルゴリズムから分岐を枝刈りする。これに加えて、２×２編成のハードウェア基本経路ファインダ４５１８を使用すると、関連付けられる計算が更に制限され得る。実際、４×４の基本ハードウェア要素は、４５４０および４５４２と同じ配置の５つの２×２ハードウェアブロックを使用して構成されてよく、実行する必要のあるグラフ検索の量を更に制約する。更には、潜在的に何れのＮ×Ｎトポロジでも４５４２、４５４０、４５００などと同じ配置を有する２１個の２×２ＨＷブロック（７１１８）で、８×８ハードウェアベースの検索エンジンを構築することができる。
【０１５５】
図４６は、幾つかの実施形態に係る、提案されたボリュメトリックデータ構造を使用して衝突検出を加速し得る方法を示した簡略ブロックダイアグラムである。ジオメトリの３Ｄ  Ｎ×Ｎ×Ｎマップは、最も低い詳細レベル（ＬｏＤ）２×２×２ボリューム４６０２、次に高い４×４×４ボリューム４６０１、８×８×８ボリューム４６００など、Ｎ×Ｎ×Ｎまでで構成されるピラミッドにサブサンプリングされ得る。３Ｄ空間で、ドローン、車両、またはロボット４６０５の位置が、ＧＰＳなどの位置付け手段を介して、または、３Ｄマップからの再ローカライゼーションを介して分かっている場合は、ドローン／ロボットのｘ位置、ｙ位置、およびｚ位置を適切にスケーリングすること（それらを関連する回数２で割ること）、および、ジオメトリの存在について４６０２に照会すること（例えば、対応するビットマップビットが衝突の可能性を示すものであるかどうかをチェックすること）により、関連する２×２×２サブボリュームの象限にジオメトリが存在するかどうかをテストするために、その位置が迅速に使用され得る。衝突の可能性が存在する（例えば、「１」が見つかった）場合は、ボリューム４６０１、４６００などでの更なるチェックを実行して、ドローン／ロボットが移動できるかどうかを確認することができる。ただし、４６０２のボクセルが空いている（例えば、「０」である）場合は、ロボット／ドローンは、自由空間と同じように解釈し、方向制御を操作して、マップの大部分を自由に移動することができる。
【０１５６】
本明細書に記載および図示されているシステムおよび解決策のうちの幾つかは、複数の要素を含むか、または複数の要素と関連付けられるものとして説明されているが、明示的に図示または記載されている全ての要素を、本開示の各代替的実装で利用できるわけではない。更には、本明細書に記載の要素のうちの１つまたは複数をシステムの外部に配置することができるが、他の例では、記載されている他の要素、および、図示されている実装に記載されていない他の要素のうちの１つまたは複数の中に、またはその一部として、特定の要素を含めることができる。更には、特定の要素を他のコンポーネントと組み合わることができ、本明細書に記載の目的に加えて、代替的な目的または更なる目的に使用することができる。
【０１５７】
更に、上に提示した例は、単に特定の原理および特徴を示す目的で提供された非限定的な例に過ぎず、本明細書に記載の概念の潜在的な実施形態を必ずしも制限または制約するものではないことを理解されたい。例えば、本明細書に記載のコンポーネントの様々な実装を通じて実現される組み合わせを含む、本明細書に記載の特徴およびコンポーネントの様々な組み合わせを利用して、様々な異なる実施形態を実現することができる。本明細書の内容から、他の実装、特徴、および詳細が解るはずである。
【０１５８】
図４７〜図５２は、本明細書で開示する実施形態に従って使用され得る例示的なコンピュータアーキテクチャのブロックダイアグラムである。実際、本明細書に記載のシステムのコンピューティングデバイス、プロセッサ、および他のロジックおよび回路は、機能の全部または一部、並びに、係る機能を実装するためのサポートソフトウェアおよび／またはハードウェア回路を組み込むことができる。更には、プロセッサおよびコンピューティングシステムのための、当技術分野で知られている他のコンピュータアーキテクチャ設計も、ここに示す例を超えて使用され得る。概して、本明細書で開示する実施形態に適したコンピュータアーキテクチャは、限定されるわけではないが、図４７〜図５２に示す構成を含むことができる。
【０１５９】
図４７は、それぞれのゲートウェイへのリンクを介して結合されるそれぞれのモノのインターネット（ＩｏＴ）ネットワークの例示的なドメイントポロジを示す。モノのインターネット（ＩｏＴ）は、多数のコンピューティングデバイスが互いにおよびインターネットに相互接続されて、非常に低いレベルで機能およびデータの取得を提供する概念である。従って、本明細書で使用される場合、ＩｏＴデバイスは、とりわけ、他のＩｏＴデバイスおよびインターネットなどのより広いネットワークと通信して感知または制御などの機能を実行する半自律型デバイスを含むことができる。係るＩｏＴデバイスは、上で紹介したようなハッシュテーブルを実装および使用するためのロジックおよびメモリを備えることができる。
【０１６０】
ＩｏＴデバイスはメモリ、サイズ、または機能が制限されているため、より少数のより大きなデバイスと同様のコストで、より多数を展開できることが多い。ただし、ＩｏＴデバイスは、スマートフォン、ラップトップ、タブレット、またはＰＣ、または他のより大きなデバイスであってよい。更に、ＩｏＴデバイスは、スマートフォンまたは他のコンピューティングデバイス上のアプリケーションなどの仮想デバイスであってよい。ＩｏＴデバイスは、ＩｏＴデバイスを他のＩｏＴデバイスおよびクラウドアプリケーションに結合すべく、データストレージおよびプロセス制御などのために使用されるＩｏＴゲートウェイを含むことができる。
【０１６１】
ＩｏＴデバイスのネットワークは、配水システム、配電システム、パイプライン制御システム、プラント制御システム、ライトスイッチ、サーモスタット、ロック、カメラ、アラーム、およびモーションセンサなどといった商用ムオートメーションデバイスおよびホームオートメーションデバイスを含むことができる。ＩｏＴデバイスは、遠隔コンピュータ、サーバ、および他のシステムを介してアクセス可能であり、例えば、システムの制御またはデータへのアクセスを行うことができる。
【０１６２】
インターネットおよび同様のネットワークの将来の成長には、非常に多数のＩｏＴデバイスが関与し得る。故に、本明細書に記載の技術の文脈では、係る将来のネットワーキングのための幾つかの革新が、これら全ての層が妨げられずに成長し、アクセス可能な接続されたリソースを発見および作成し、接続されたリソースを非表示にして区分化する能力をサポートする必要性に対処する。任意の数のネットワークプロトコルおよび通信規格を使用することができ、各プロトコルおよび規格は、特定の目的に対処するように設計される。更に、プロトコルは、位置、時間、または空間に関係なく動作する、人間によりアクセス可能なサービスをサポートする仕組みの一部である。革新は、サービス供給、並びに、ハードウェアおよびソフトウェアなどの関連付けられるインフラストラクチャと、セキュリティの強化と、サービスレベルおよびサービス供給契約で指定されるサービス品質（ＱｏＳ）条件に基づくサービスの提供とを含む。理解されるように、図４７および図４８で紹介するものようなＩｏＴデバイスおよびネットワークの使用は、有線技術と無線技術との組み合わせを含む接続性の異種ネットワークにおいて幾つかの新しい課題を提示する。
【０１６３】
具体的には、図４７は、ＩｏＴデバイス４７０４を含む幾つかのモノのインターネット（ＩｏＴ）ネットワークに使用され得るドメイントポロジの簡略図面を提供する。ＩｏＴネットワーク４７５６、４７５８、４７６０、４７６２は、バックボーンリンク４７０２を介してそれぞれのゲートウェイ４７５４に結合される。例えば、幾つかのＩｏＴデバイス４７０４が、ゲートウェイ４７５４と通信することができ、ゲートウェイ４７５４を介して互いに通信することができる。図面を簡略化するため、全てのＩｏＴデバイス４７０４、または通信リンク（例えば、リンク４７１６、４７２２、４７２８、または４７３２）へのラベル付けはしていない。バックボーンリンク４７０２は、光ネットワークを含む任意の数の有線技術または無線技術を含むことができ、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、またはインターネットの一部であってよい。更に、係る通信リンクによって、様々なデバイスの相互接続を容易にするＭＵＸ／ｄｅＭＵＸコンポーネントの使用を含め、ＩｏＴデバイス４７０４およびゲートウェイ４７５４の両方の間の光信号経路が促進される。
【０１６４】
ネットワークトポロジは、Ｂｌｕｅｔｏｏｔｈ（登録商標）Ｌｏｗ  Ｅｎｅｒｇｙ（ＢＬＥ）リンク４７２２を使用するネットワーク４７５６を備えるメッシュネットワークなど、任意の数のタイプのＩｏＴネットワークを含むことができる。存在し得る他のタイプのＩｏＴネットワークは、ＩＥＥＥ８０２．１１（Ｗｉ−Ｆｉ（登録商標））リンク４７２８を介してＩｏＴデバイス４７０４と通信するために使用される無線ローカルエリアネットワーク（ＷＬＡＮ）ネットワーク４７５８、ＬＴＥ／ＬＴＥ−Ａ（４Ｇ）または５Ｇセルラネットワークを介してＩｏＴデバイス４７０４と通信するために使用されるセルラネットワーク４７６０、および、低電力ワイドエリア（ＬＰＷＡ）ネットワーク４７６２、例えば、ＬｏＲａ  Ａｌｌｉａｎｃｅにより公布されたＬｏＲａＷａｎ仕様と互換性のあるＬＰＷＡネットワーク、または、インターネット技術特別調査委員会（ＩＥＴＦ）により公布された仕様と互換性のあるＩＰｖ６  ｏｖｅｒ  Ｌｏｗ  Ｐｏｗｅｒ  Ｗｉｄｅ−Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＰＷＡＮ）ネットワークを含む。更に、それぞれのＩｏＴネットワークは、ＬＴＥセルラリンク、ＬＰＷＡリンク、またはＺｉｇｂｅｅ（登録商標）のようなＩＥＥＥ８０２．１５．４規格に基づくリンクなど、任意の数の通信リンクを使用して、外部ネットワークプロバイダ（例えば、ティア２プロバイダまたはティア３プロバイダ）と通信することができる。それぞれのＩｏＴネットワークは、制約付きアプリケーションプロトコル（ＣｏＡＰ）などの様々なネットワークプロトコルおよびインターネットアプリケーションプロトコルを使用して動作することもできる。それぞれのＩｏＴネットワークは、リンクされたデバイスおよびネットワークのクラスタツリーを形成するリンクのチェーンを提供するコーディネータデバイスと統合することもできる。
【０１６５】
これらのＩｏＴネットワークの各々は、本明細書に記載のもののような新しい技術的特徴の機会を提供することができる。改善された技術およびネットワークによって、ＩｏＴネットワークをフォグデバイスまたはシステムとして使用することを含め、デバイスおよびネットワークの指数成長が可能になり得る。係る改善された技術の使用が増えるにつれて、直接的な人間の介入を必要とせずに、自己管理、機能進化、およびコラボレーションのためにＩｏＴネットワークを開発することができる。改善された技術によって、集中制御されたシステムなくＩｏＴネットワークが機能することさえ可能になり得る。故に、本明細書に記載の改善された技術は、現在の実装をはるかに超えてネットワーク管理および運用機能を自動化および強化するために使用され得る。
【０１６６】
一例では、バックボーンリンク４７０２などを介したＩｏＴデバイス４７０４間の通信が、認証、許可、および会計（ＡＡＡ）のための分散型システムにより保護され得る。分散化ＡＡＡシステムでは、分散型の支払い、クレジット、監査、許可、および認証システムを、相互接続された異種ネットワークインフラストラクチャ全体にわたって実装することができる。これによって、システムおよびネットワークを自律型運用に移行させることができる。これらのタイプの自律型運用では、機械が人的リソースの契約をし、他の機械ネットワークとのパートナシップを交渉することさえできる。これによって、相互の目的の実現と、概説され計画されたサービスレベル契約に対するバランスの取れたサービス供給が可能になるだけでなく、計測、測定、トレーサビリティ、および追跡可能性を提供する解決策を実現することもできる。新しいサプライチェーンの構造および方法を作成することで、人間が全く関与することなく、多数のサービスを作成し、価値を掘り起こし、崩壊させることが可能になり得る。
【０１６７】
係るＩｏＴネットワークは、音、光、電子トラフィック、顔およびパターンの認識、匂い、振動などの感知技術を、ＩｏＴデバイス間の自律型組織に統合することにより更に強化することができる。感覚システムの統合によって、契約上のサービス対象に対する体系的かつ自律的な通信およびサービス供給調整、オーケストレーション、並びに、サービス品質（ＱｏＳ）ベースのリソースのスウォーミングおよび融合が可能になり得る。ネットワークベースのリソース処理の個々の例のうちの幾つかは以下を含む。
【０１６８】
例えば、メッシュネットワーク４７５６は、インラインデータから情報への変換を実行するシステムにより強化され得る。例えば、マルチリンクネットワークを含む処理リソースの自己形成チェーンは、生データの、情報への効率的な変換、並びに、資産とリソースとを区別する能力、および、それぞれの関連付けられる管理を分散することができる。更には、インフラストラクチャおよびリソースベースの信頼およびサービスインデックスの適切なコンポーネントを挿入して、データの整合性、品質、確実さを改善し、データの信頼性の測定基準を供給することができる。
【０１６９】
例えば、ＷＬＡＮネットワーク４７５８は、標準変換を実行するシステムを使用してマルチ標準接続性を提供し、異なるプロトコルを使用するＩｏＴデバイス４７０４が通信することを可能にし得る。更なるシステムが、可視インターネットリソースおよび非表示インターネットリソースを含むマルチ標準インフラストラクチャ全体にわたってシームレスな相互接続性を提供することができる。
【０１７０】
例えば、セルラネットワーク４７６０における通信は、データをオフロードするか、通信をより多くの遠隔デバイスに拡張するか、またはその両方を行うシステムにより強化され得る。ＬＰＷＡネットワーク４７６２は、非インターネットプロトコル（ＩＰ）からＩＰへの相互接続、アドレス指定、およびルーティングを実行するシステムを含むことができる。更に、ＩｏＴデバイス４７０４の各々は、そのデバイスとの広域通信に適したトランシーバを含むことができる。更に、各ＩｏＴデバイス４７０４は、更なるプロトコルおよび周波数を使用する通信のための他のトランシーバを含むことができる。これについては、図４９および図５０に示すＩｏＴ処理デバイスの通信環境およびハードウェアとの関連で更に説明する。
【０１７１】
最後に、ＩｏＴデバイスのクラスタは、クラウドネットワークだけでなく他のＩｏＴデバイスとも通信するように装備され得る。これによって、ＩｏＴデバイスがデバイス間にアドホックネットワークを形成することが可能になり、ＩｏＴデバイスが、フォグデバイスと呼ばれ得る単一のデバイスとして機能することが可能になり得る。この構成については、以下の図４８との関連で更に説明する。
【０１７２】
図４８は、クラウドコンピューティングネットワークのエッジでフォグデバイスとして動作するＩｏＴデバイス（デバイス４８０２）のメッシュネットワークと通信しているクラウドコンピューティングネットワークを示す。ＩｏＴデバイスのメッシュネットワークは、クラウド４８００のエッジで動作するフォグ４８２０と呼ばれ得る。図を簡略化するため、全てのＩｏＴデバイス４８０２へのラベル付けはしていない。
【０１７３】
フォグ４８２０は、幾つかのＩｏＴデバイス４８０２が、例えば、無線リンク４８２２により互いに通信している、大規模に相互接続されたネットワークであると見なされ得る。例として、この相互接続されたネットワークは、Ｏｐｅｎ  Ｃｏｎｎｅｃｔｉｖｉｔｙ  Ｆｏｕｎｄａｔｉｏｎ（商標）（ＯＣＦ）によりリリースされた相互接続仕様を使用して促進され得る。この規格によって、デバイスは互いを発見し、相互接続のための通信を確立することができる。例えば、最適化されたリンク状態ルーティング（ＯＬＳＲ）プロトコル、モバイルアドホックネットワーキングへのより良いアプローチ（Ｂ．Ａ．Ｔ．Ｍ．Ａ．Ｎ．）ルーティングプロトコル、またはＯＭＡライトウェイトＭ２Ｍ（ＬＷＭ２Ｍ）プロトコルをとりわけ含む、他の相互接続プロトコルも使用され得る。
【０１７４】
この例では、３つのタイプのＩｏＴデバイス４８０２、すなわち、ゲートウェイ４８０４、データアグリゲータ４８２６、およびセンサ４８２８が示されているが、ＩｏＴデバイス４８０２と機能との任意の組み合わせが使用され得る。ゲートウェイ４８０４は、クラウド４８００とフォグ４８２０との間の通信を提供するエッジデバイスであってよく、動作データ、フローデータ、および温度データなどといったセンサ４８２８から取得されるデータのためのバックエンド処理機能を提供することもできる。データアグリゲータ４８２６は、任意の数のセンサ４８２８からデータを収集し、分析のためのバックエンド処理機能を実行することができる。結果、生データ、またはその両方は、ゲートウェイ４８０４を介してクラウド４８００に渡され得る。センサ４８２８は、例えば、データの収集およびデータの処理の両方を行うことができる完全なＩｏＴデバイス４８０２であってよい。場合によっては、センサ４８２８は、例えば、データを収集し、データアグリゲータ４８２６またはゲートウェイ４８０４によるデータの処理を可能にするなど、機能がより制限され得る。
【０１７５】
任意のＩｏＴデバイス４８０２からの通信は、ＩｏＴデバイス４８０２の何れかの間の便利な経路（例えば、最も便利な経路）に沿って渡されて、ゲートウェイ４８０４に到達することができる。これらのネットワークでは、相互接続の数によって実質的な冗長性が提供され、幾つかのＩｏＴデバイス４８０２が失われた場合でも通信を維持することができる。更には、メッシュネットワークを使用すると、非常に低電力であるか、またはインフラストラクチャから離れた所に位置するＩｏＴデバイス４８０２を使用することが可能になり得る。なぜなら、別のＩｏＴデバイス４８０２に接続する範囲が、ゲートウェイ４８０４に接続する範囲よりもはるかに小さい可能性があるからである。
【０１７６】
これらのＩｏＴデバイス４８０２から提供されるフォグ４８２０は、クラウド４８００のエッジに配置される単一のデバイス、例えば、フォグデバイスとして、サーバ４８０６などのクラウド４８００内のデバイスに提示され得る。この例では、フォグデバイスから来るアラートは、フォグ４８２０内の特定のＩｏＴデバイス４８０２から来るものとして識別されることなく送信され得る。このように、フォグ４８２０は、とりわけ、データ分析、データ集約、および機械学習などの処理タスクまたはデータ量の多いタスクを実行するためのコンピューティングリソースおよびストレージリソースを提供する分散プラットフォームと見なされ得る。
【０１７７】
幾つかの例では、ＩｏＴデバイス４８０２は、命令型プログラミングスタイルを使用して構成されてよく、例えば、各ＩｏＴデバイス４８０２は、特定の機能および通信パートナを有する。ただし、フォグデバイスを形成するＩｏＴデバイス４８０２は、宣言型プログラミングスタイルで構成されてよく、ＩｏＴデバイス４８０２が、動作および通信を再構成すること、例えば、条件、クエリ、およびデバイス故障に応じて必要なリソースを決定することを可能にする。例として、ＩｏＴデバイス４８０２により監視される機器のサブセットの動作に関するサーバ４８０６に位置するユーザからのクエリによって、フォグ４８２０デバイスは、クエリに応答するために必要な特定のセンサ４８２８などのＩｏＴデバイス４８０２を選択することができる。次に、これらのセンサ４８２８からのデータは、クエリに応答するためにフォグ４８２０デバイスによりサーバ４８０６に送信される前に、センサ４８２８、データアグリゲータ４８２６、またはゲートウェイ４８０４の任意の組み合わせにより集約および分析され得る。この例では、フォグ４８２０内のＩｏＴデバイス４８０２は、クエリに基づいて使用されるセンサ４８２８を選択すること、例えば、流量センサまたは温度センサからのデータを追加することができる。更に、ＩｏＴデバイス４８０２のうちの幾つかが動作可能でない場合は、フォグ４８２０デバイス内の他のＩｏＴデバイス４８０２が、利用可能であれば、類似データを提供することができる。
【０１７８】
他の例では、上記の動作および機能は、電子処理システムの例示的な形態のＩｏＴデバイス機械により具現化されてよく、その中で、例示的な実施形態に従って、命令の組またはシーケンスが実行されて、電子処理システムに、本明細書に記載の方法の何れか１つを実行させることができる。機械は、パーソナルコンピュータ（ＰＣ）、タブレットＰＣ、携帯情報端末（ＰＤＡ）、携帯電話またはスマートフォンの態様により具現化される機械、または、機械により取られるアクションを指定する命令（シーケンシャルまたはその他）を実行できる任意の機械を含む、ＩｏＴデバイスまたはＩｏＴゲートウェイであってよい。更に、上の例では単一の機械のみが描写および言及され得るが、係る機械は、本明細書に記載の方法の何れか１つまたは複数を実行するための命令の組（または複数の組）を個々にまたは共同で実行する機械の任意の集まりを含んでいるとも見なされるものとする。更に、プロセッサベースのシステムに対するこれらの例および同様の例は、本明細書に記載の方法の何れか１つまたは複数を実行するための命令を個々にまたは共同で実行するよう、プロセッサ（例えば、コンピュータ）により制御または操作される１つまたは複数の機械の任意の組を含んでいると見なされるものとする。幾つかの実装では、１つまたはそれより多い複数のデバイスが協調して動作して、機能を実装し、本明細書に記載のタスクを実行することができる。場合によっては、１つまたは複数のホストデバイスが、データの供給、命令の提供、結果の集約、またはそうでなければ複数のデバイスにより提供される共同の動作および機能の促進を行うことができる。機能は、単一のデバイスにより実装されると、デバイスにローカルな機能と見なされることがあるが、単一の機械として動作する複数のデバイスの実装では、数ある例示的な実装の中でもとりわけ、機能はデバイスに対して集合的にローカルと見なされることがあり、このデバイスの集まりは、他の遠隔機械（単一のデバイスまたはコレクションデバイスとして実装される）により提供される結果を提供または消費し得る。
【０１７９】
例えば、図４９は、幾つかのモノのインターネット（ＩｏＴ）デバイスと通信しているクラウドコンピューティングネットワークまたはクラウド４９００の図面を示す。クラウド４９００は、インターネットを表してもよいし、企業の専有ネットワークなどのワイドエリアネットワーク（ＷＡＮ）またはローカルエリアネットワーク（ＬＡＮ）であってもよい。ＩｏＴデバイスは、様々な組み合わせでグループ化される任意の数の異なるタイプのデバイスを含むことができる。例えば、交通制御グループ４９０６が、都市の街路に沿ったＩｏＴデバイスを含むことができる。これらのＩｏＴデバイスは、停止信号、交通流量モニタ、カメラ、および気象センサなどを含むことができる。交通制御グループ４９０６または他のサブグループは、ＬＰＷＡリンクおよび光リンクなどといった有線または無線のリンク４９０８を介してクラウド４９００と通信状態にあってよい。更に、有線または無線のサブネットワーク４９１２は、ＩｏＴデバイスが、例えば、ローカルエリアネットワークおよび無線ローカルエリアネットワークなどを介して、互いに通信することを可能にし得る。ＩｏＴデバイスは、ゲートウェイ４９１０または４９２８などの別のデバイスを使用して、クラウド４９００などの遠隔地と通信することができる。ＩｏＴデバイスは、１つまたは複数のサーバ４９３０を使用して、クラウド４９００またはゲートウェイ４９１０との通信を容易にすることもできる。例えば、１つまたは複数のサーバ４９３０は、ローカルエリアネットワーク間のローカルエッジクラウドまたはフォグの実装をサポートするための中間ネットワークノードとして動作することができる。更に、示されているゲートウェイ４９２８は、クラウドからゲートウェイへ・ゲートウェイから多くのエッジデバイスへといった構成で、例えば、様々なＩｏＴデバイス４９１４、４９２０、４９２４が、クラウド４９００内のリソースの割り当ておよび使用に対して制約されるかまたは動的である状態で、動作することができる。
【０１８０】
ＩｏＴデバイスの他の例示的なグループは、多数ある中でもとりわけ、遠隔気象台４９１４、ローカル情報端末４９１６、アラームシステム４９１８、現金自動支払い機４９２０、アラームパネル４９２２、または、緊急車両４９２４もしくは他の車両４９２６などの移動車両を含むことができる。これらのＩｏＴデバイスの各々は、他のＩｏＴデバイス、サーバ４９０４、別のＩｏＴフォグデバイスもしくはシステム（不図示だが、図４８に示されている）、またはそれらの組み合わせと通信状態にあってよい。ＩｏＴデバイスのグループは、様々な住宅、商業、および産業環境（プライベート環境またはパブリック環境の両方を含む）に展開され得る。
【０１８１】
図４９から分かるように、多数のＩｏＴデバイスがクラウド４９００を介して通信している可能性がある。これによって、複数の異なるＩｏＴデバイスが他のデバイスに対して自律的に情報を要求または提供することが可能になり得る。例えば、ＩｏＴデバイスのグループ（例えば、交通制御グループ４９０６）は、遠隔気象台４９１４のグループに現在の天気予報を要求することができ、遠隔気象台４９１４のグループは、人間が介入することなく予報を提供することができる。更に、緊急車両４９２４は、強盗が進行中であることを、現金自動支払い機４９２０により警告され得る。緊急車両４９２４は、現金自動支払い機４９２０に向かって進んでいる際、交通制御グループ４９０６にアクセスして、その場所へのクリアランスを要求することができる。このクリアランスは、例えば、緊急車両４９２４が妨げられずに交差点へアクセスするのに十分間に合うように交差点での交差交通を遮断するために赤に変わるライトによるものである。
【０１８２】
遠隔気象台４９１４または交通制御グループ４９０６などのＩｏＴデバイスのクラスタは、クラウド４９００だけでなく、他のＩｏＴデバイスとも通信するように装備され得る。これによって、ＩｏＴデバイスがデバイス間にアドホックネットワークを形成することが可能になり、（例えば、図４８を参照して上述したように）フォグデバイスまたはシステムと呼ばれ得る単一のデバイスとして機能することが可能になり得る。
【０１８３】
図５０は、本明細書に記載の技術を実装するためにＩｏＴデバイス５０５０に存在し得るコンポーネントの例のブロックダイアグラムである。ＩｏＴデバイス５０５０は、例に示されているか、または上の開示で言及されているコンポーネントの任意の組み合わせを含むことができる。コンポーネントは、ＩＣ、その一部、ディスクリート電子デバイス、または他のモジュール、ロジック、ハードウェア、ソフトウェア、ファームウェア、またはＩｏＴデバイス５０５０に適合されるそれらの組み合わせとして、または、より大きなシステムのシャーシ内に別の方法で組み込まれるコンポーネントとして実装され得る。更に、図５０のブロックダイアグラムは、ＩｏＴデバイス５０５０のコンポーネントの高レベルの図を示すことを意図している。ただし、他の実装では、示されているコンポーネントのうちの幾つかが省略されてよく、更なるコンポーネントが存在してよく、示されているコンポーネントの異なる配置が行われてよい。
【０１８４】
ＩｏＴデバイス５０５０は、プロセッサ５０５２を含むことができる。プロセッサ５０５２は、マイクロプロセッサ、マルチコアプロセッサ、マルチスレッドプロセッサ、超低電圧プロセッサ、組み込みプロセッサ、または他の既知の処理要素であってよい。プロセッサ５０５２は、プロセッサ５０５２および他のコンポーネントが、単一の集積回路内、または、ＩｎｔｅｌのＥｄｉｓｏｎ（商標）またはＧａｌｉｌｅｏ（商標）ＳｏＣ基板などの単一のパッケージ内に形成される、システムオンチップ（ＳｏＣ）の一部であってよい。例として、プロセッサ５０５２は、Ｉｎｔｅｌ（登録商標）Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｃｏｒｅ（商標）ベースのプロセッサ、例えば、Ｑｕａｒｋ（商標）、Ａｔｏｍ（商標）、ｉ３、ｉ５、ｉ７、または、ＭＣＵクラスのプロセッサ、または、カリフォルニア州サンタクララのＩｎｔｅｌ（登録商標）Ｃｏｒｐｏｒａｔｉｏｎから入手可能な別の係るプロセッサを含むことができる。ただし、カリフォルニア州サニーベールのＡｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ，Ｉｎｃ．（ＡＭＤ）から入手可能なもの、カリフォルニア州サニーベールのＭＩＰＳ  Ｔｅｃｈｎｏｌｏｇｉｅｓ，Ｉｎｃ．のＭＩＰＳベース設計、ＡＲＭ  Ｈｏｌｄｉｎｇｓ，Ｌｔｄ．もしくはその顧客、または、そのライセンシもしくは採用者からライセンス供与されたＡＲＭベースの設計など、任意の数の他のプロセッサが使用され得る。プロセッサは、Ａｐｐｌｅ（登録商標）Ｉｎｃ．のＡ５〜Ａ１０プロセッサ、Ｑｕａｌｃｏｍｍ（登録商標）Ｔｅｃｈｎｏｌｏｇｉｅｓ，Ｉｎｃ．のＳｎａｐｄｒａｇｏｎ（商標）プロセッサ、またはＴｅｘａｓ  Ｉｎｓｔｒｕｍｅｎｔｓ，Ｉｎｃ．のＯＭＡＰ（商標）プロセッサなどのユニットを含むことができる。
【０１８５】
プロセッサ５０５２は、相互接続５０５６（例えば、バス）を介してシステムメモリ５０５４と通信することができる。任意の数のメモリデバイスを使用して、所与の量のシステムメモリを提供することができる。例として、メモリは、ＤＤＲまたはモバイルＤＤＲ規格（例えば、ＬＰＤＤＲ、ＬＰＤＤＲ２、ＬＰＤＤＲ３、またはＬＰＤＤＲ４）などの合同電子デバイス委員会（ＪＥＤＥＣ）の設計に従ったランダムアクセスメモリ（ＲＡＭ）であってよい。様々な実装において、個々のメモリデバイスは、単一のダイパッケージ（ＳＤＰ）、デュアルダイパッケージ（ＤＤＰ）、またはクワッドダイパッケージ（Ｑ１７Ｐ）など、任意の数の異なるパッケージタイプのものであってよい。幾つかの例では、これらのデバイスをマザーボード上に直接はんだ付けして薄型の解決策を提供できるが、他の例では、デバイスは、同様にして所与のコネクタでマザーボードに結合する１つまたは複数のメモリモジュールとして構成される。他のタイプのメモリモジュール、例えば、限定されるわけではないが、ｍｉｃｒｏＤＩＭＭまたはＭｉｎｉＤＩＭＭを含む、異なる種類のデュアルインラインメモリモジュール（ＤＩＭＭ）など、任意の数の他のメモリ実装が使用され得る。
【０１８６】
データ、アプリケーション、およびオペレーティングシステムなどといった情報の永続的なストレージを提供するために、ストレージ５０５８は、相互接続５０５６を介してプロセッサ５０５２に結合することもできる。一例では、ストレージ５０５８は、ソリッドステートディスクドライブ（ＳＳＤＤ）を介して実装され得る。ストレージ５０５８に使用され得る他のデバイスは、ＳＤカード、ｍｉｃｒｏＳＤカード、およびｘＤピクチャカードなどといったフラッシュメモリカード、およびＵＳＢフラッシュドライブを含む。低電力の実装では、ストレージ５０５８は、プロセッサ５０５２と関連付けられるオンダイメモリまたはレジスタであってよい。ただし、幾つかの例では、ストレージ５０５８は、マイクロハードディスクドライブ（ＨＤＤ）を使用して実装され得る。更には、とりわけ、抵抗変化メモリ、相変化メモリ、ホログラフィックメモリ、または化学メモリなど、記載されている技術に加えて、またはその代わりに、任意の数の新しい技術がストレージ５０５８に使用され得る。
【０１８７】
コンポーネントは、相互接続５０５６を介して通信することができる。相互接続５０５６は、業界標準アーキテクチャ（ＩＳＡ）、拡張ＩＳＡ（ＥＩＳＡ）、周辺コンポーネント相互接続（ＰＣＩ）、周辺コンポーネント相互接続拡張（ＰＣＩｘ）、ＰＣＩエクスプレス（ＰＣＩｅ）を含む任意の数の技術、または任意の数の他の技術を含むことができる。相互接続５０５６は、例えば、ＳｏＣベースのシステムで使用される専有バスであってよい。とりわけ、Ｉ２Ｃインタフェース、ＳＰＩインタフェース、ポイントツーポイントインタフェース、および電力バスなどの他のバスシステムが含まれ得る。
【０１８８】
相互接続５０５６は、他のメッシュデバイス５０６４との通信のために、プロセッサ５０５２をメッシュトランシーバ５０６２に結合することができる。メッシュトランシーバ５０６２は、とりわけ、Ｂｌｕｅｔｏｏｔｈ（登録商標）Ｓｐｅｃｉａｌ  Ｉｎｔｅｒｅｓｔ  Ｇｒｏｕｐにより定義されているＢｌｕｅｔｏｏｔｈ（登録商標）Ｌｏｗ  Ｅｎｅｒｇｙ（ＢＬＥ）規格、またはＺｉｇＢｅｅ（登録商標）規格を使用した、ＩＥＥＥ８０２．１５．４規格に基づく２．４ギガヘルツ（ＧＨｚ）伝送など、任意の数の周波数およびプロトコルを使用することができる。特定の無線通信プロトコル用に構成される任意の数の無線機が、メッシュデバイス５０６４への接続に使用され得る。例えば、ＷＬＡＮユニットを使用することで、米国電気電子技術者協会（ＩＥＥＥ）の８０２．１１規格に従ってＷｉ−Ｆｉ（商標）通信を実装することができる。更には、例えば、セルラまたは他の無線広域プロトコルによる無線広域通信が、ＷＷＡＮユニットを介して行われ得る。
【０１８９】
メッシュトランシーバ５０６２は、異なる範囲での通信のために、複数の規格または無線機を使用して通信することができる。例えば、ＩｏＴデバイス５０５０は、ＢＬＥまたは別の低電力無線に基づくローカルトランシーバを使用して、例えば、約１０メートル以内の近接デバイスと通信することで、電力を節約することができる。例えば、約５０メートル以内の、より離れたメッシュデバイス５０６４には、ＺｉｇＢｅｅまたは他の中間電力無線を介して到達することができる。両方の通信技術は、異なる電力レベルで単一の無線を介して行われてもよいし、別個のトランシーバ、例えば、ＢＬＥを使用するローカルトランシーバおよびＺｉｇＢｅｅを使用する別個のメッシュトランシーバ、を介して行われてもよい。
【０１９０】
ローカルエリアネットワークまたはワイドエリアネットワークのプロトコルを介してクラウド５０００内のデバイスまたはサービスと通信するために、無線ネットワークトランシーバ５０６６が含まれ得る。無線ネットワークトランシーバ５０６６は、とりわけ、ＩＥＥＥ８０２．１５．４規格またはＩＥＥＥ８０２．１５．４ｇ規格に従ったＬＰＷＡトランシーバであってよい。ＩｏＴデバイス５０５０は、ＳｅｍｔｅｃｈおよびＬｏＲａ  Ａｌｌｉａｎｃｅにより開発されたＬｏＲａＷＡＮ（商標）（長距離ワイドエリアネットワーク）を使用して、広域で通信することができる。本明細書に記載の技術は、これらの技術に限定されるわけではないが、Ｓｉｇｆｏｘなどの長距離、低帯域幅の通信を実装する任意の数の他のクラウドトランシーバ、および他の技術と共に使用され得る。更には、ＩＥＥＥ８０２．１５．４ｅ仕様に記載のタイムスロットチャネルホッピングなどの他の通信技術が使用され得る。
【０１９１】
本明細書に記載のように、メッシュトランシーバ５０６２および無線ネットワークトランシーバ５０６６について言及されたシステムに加えて、任意の数の他の無線通信およびプロトコルが使用され得る。例えば、無線トランシーバ５０６２および５０６６は、高速通信を実装するためにスペクトラム拡散（ＳＰＡ／ＳＡＳ）通信を使用するＬＴＥまたは他のセルラトランシーバを含むことができる。更には、ネットワーク通信の提供および中速通信のためのＷｉ−Ｆｉ（登録商標）ネットワークなど、任意の数の他のプロトコルが使用され得る。
【０１９２】
無線トランシーバ５０６２および５０６６は、任意の数の３ＧＰＰ（第３世代パートナシッププロジェクト）仕様、特にロングタームエボリューション（ＬＴＥ）、ロングタームエボリューション・アドバンスト（ＬＴＥ−Ａ）、およびロングタームエボリューション・アドバンストプロ（ＬＴＥ−Ａ  Ｐｒｏ）と互換性のある無線機を含むことができる。なお、任意の数の他の、固定通信、モバイル通信、または衛星通信の技術および規格と互換性のある無線機が選択され得る。これらは、例えば、任意のセルラ広域無線通信技術を含むことができる。セルラ広域無線通信技術は、例えば、第５世代（５Ｇ）通信システム、グローバルシステムフォーモバイルコミュニケーションズ（ＧＳＭ（登録商標））無線通信技術、汎用パケット無線サービス（ＧＰＲＳ）無線通信技術、またはＧＳＭ進化型高速データレート（ＥＤＧＥ）無線通信技術、ＵＭＴＳ（ユニバーサル移動体通信システム）通信技術を含むことができる。上記の規格に加えて、無線ネットワークトランシーバ５０６６には、任意の数の衛星アップリンク技術が使用され得る。衛星アップリンク技術は、例えば、とりわけ、ＩＴＵ（国際電気通信連合）またはＥＴＳＩ（欧州電気通信標準化機構）により発行された規格に準拠する無線機を含む。従って、本明細書で提供する例は、既存のものであり、かつ、まだ定式化されていない、他の様々な通信技術に適用可能なものとして理解される。
【０１９３】
クラウド５０００、またはメッシュデバイス５０６４などの他のデバイスへの有線通信を提供するために、ネットワークインタフェースコントローラ（ＮＩＣ）５０６８が含まれ得る。有線通信は、イーサネット（登録商標）接続を提供してもよいし、多数ある中でもとりわけ、コントローラエリアネットワーク（ＣＡＮ）、ローカル相互接続ネットワーク（ＬＩＮ）、ＤｅｖｉｃｅＮｅｔ、ＣｏｎｔｒｏｌＮｅｔ、Ｄａｔａ  Ｈｉｇｈｗａｙ＋、ＰＲＯＦＩＢＵＳ、またはＰＲＯＦＩＮＥＴなどの他のタイプのネットワークに基づいていてもよい。第２ネットワーク、例えば、イーサネットを介してクラウドへの通信を提供するＮＩＣ５０６８、および別のタイプのネットワークを介して他のデバイスへの通信を提供する第２のＮＩＣ５０６８、への接続を可能にするために、更なるＮＩＣ５０６８が含まれ得る。
【０１９４】
相互接続５０５６は、プロセッサ５０５２を、外部のデバイスまたはサブシステムを接続するために使用される外部インタフェース５０７０に結合することができる。外部デバイスは、加速度計、レベルセンサ、流量センサ、光学光センサ、カメラセンサ、温度センサ、全地球測位システム（ＧＰＳ）センサ、圧力センサ、および気圧センサなどといったセンサ５０７２を含むことができる。外部インタフェース５０７０は更に、ＩｏＴデバイス５０５０を、電源スイッチ、バルブアクチュエータ、可聴音生成器、および視覚的警告デバイスなどといったアクチュエータ５０７４に接続するために使用され得る。
【０１９５】
幾つかのオプションの例では、様々な入出力（Ｉ／Ｏ）デバイスが、ＩｏＴデバイス５０５０内に存在するか、またはＩｏＴデバイス５０５０に接続され得る。例えば、センサの読み取り値またはアクチュエータの位置などの情報を示すために、ディスプレイまたは他の出力デバイス５０８４が含まれ得る。入力を受け入れるために、タッチ画面またはキーパッドなどの入力デバイス５０８６が含まれ得る。出力デバイス５０８４は、任意の数の形態の聴覚表示または視覚表示を含むことができる。表示は、バイナリステータスインジケータ（例えば、ＬＥＤ）およびマルチ文字視覚出力などの単純な視覚出力、または表示画面（例えば、ＬＣＤ画面）などのより複雑な出力を含み、文字、グラフィックス、およびマルチメディアオブジェクトなどの出力は、ＩｏＴデバイス５０５０の操作から生成されるか、または生み出される。
【０１９６】
電池５０７６は、ＩｏＴデバイス５０５０に電力を供給することができるが、ＩｏＴデバイス５０５０が固定された場所に装着されている例では、電力系統に結合される電力供給装置を含むことができる。電池５０７６は、リチウムイオン電池、または亜鉛−空気電池、アルミニウム−空気電池、およびリチウム−空気電池などといった金属−空気電池であってよい。
【０１９７】
ＩｏＴデバイス５０５０には、電池５０７６の充電状態（ＳｏＣｈ）を追跡するために、電池モニタ／充電器５０７８が含まれ得る。電池モニタ／充電器５０７８は、電池５０７６の他のパラメータを監視して、電池５０７６の健康状態（ＳｏＨ）および機能状態（ＳｏＦ）などの故障予測を提供するために使用され得る。電池モニタ／充電器５０７８は、Ｌｉｎｅａｒ  ＴｅｃｈｎｏｌｏｇｉｅｓのＬＴＣ４０２０またはＬＴＣ２９９０、アリゾナ州フェニックスのＯＮ  ＳｅｍｉｃｏｎｄｕｃｔｏｒのＡＤＴ７４８８Ａ、またはテキサス州ダラスのＴｅｘａｓ  ＩｎｓｔｒｕｍｅｎｔｓのＵＣＤ９０ｘｘｘファミリのＩＣなどの電池監視集積回路を含むことができる。電池モニタ／充電器５０７８は、電池５０７６上の情報を、相互接続５０５６を介してプロセッサ５０５２に伝えることができる。電池モニタ／充電器５０７８は、プロセッサ５０５２が電池５０７６の電圧または電池５０７６から流れる電流を直接監視できるようにするアナログ−デジタル（ＡＤＣ）変換器を含むこともできる。電池パラメータは、伝送周波数、メッシュネットワーク動作、および感知周波数などといった、ＩｏＴデバイス５０５０が実行できるアクションを決定するために使用され得る。
【０１９８】
電池５０７６を充電するために、発電ブロック５０８０、または電力系統に結合される他の電力供給装置が、電池モニタ／充電器５０７８と結合され得る。幾つかの例では、発電ブロック５０８０を無線受電器と交換することで、例えば、ＩｏＴデバイス５０５０内のループアンテナを介して、無線で電力を取得することができる。電池モニタ／充電器５０７８には、とりわけ、カリフォルニア州ミルピタスのＬｉｎｅａｒ  ＴｅｃｈｎｏｌｏｇｉｅｓのＬＴＣ４０２０チップなどの無線電池充電回路が含まれ得る。選択される特定の充電回路は、電池５０７６のサイズ、ひいては必要な電流に依存する。充電は、とりわけ、Ａｉｒｆｕｅｌ  Ａｌｌｉａｎｃｅにより公布されたＡｉｒｆｕｅｌ規格、ワイヤレスパワーコンソーシアムにより公布されたＱｉ無線充電規格、またはＡｌｌｉａｎｃｅ  ｆｏｒ  Ｗｉｒｅｌｅｓｓ  Ｐｏｗｅｒにより公布されたＲｅｚｅｎｃｅ充電規格を使用して実行され得る。
【０１９９】
ストレージ５０５８は、本明細書に記載の技術を実装するためのソフトウェア、ファームウェア、またはハードウェアのコマンドの形態の命令５０８２を含むことができる。係る命令５０８２は、メモリ５０５４およびストレージ５０５８に含まれるコードブロックとして示されているが、コードブロックの何れかを、例えば、特定用途向け集積回路（ＡＳＩＣ）に組み込まれるハードワイヤード回路に置き換えることができると理解され得る。
【０２００】
一例では、メモリ５０５４、ストレージ５０５８、またはプロセッサ５０５２を介して提供される命令５０８２は、非一時的機械可読媒体５０６０として具現化され得る。非一時的機械可読媒体５０６０は、プロセッサ５０５２に、ＩｏＴデバイス５０５０で電子操作を実行するように指示するコードを含む。プロセッサ５０５２は、相互接続５０５６を介して非一時的機械可読媒体５０６０にアクセスすることができる。例えば、非一時的機械可読媒体５０６０は、図５０のストレージ５０５８で説明されているデバイスにより具現化されてもよいし、光ディスク、フラッシュドライブ、または任意の数の他のハードウェアデバイスなどの特定のストレージユニットを含んでもよい。非一時的機械可読媒体５０６０は、例えば、上記の動作および機能のフローチャートおよびブロックダイアグラムとの関連で説明した通り、プロセッサ５０５２に、アクションの特定のフローまたはシーケンスを実行するように指示するための命令を含むことができる。
【０２０１】
図５１は、ある実施形態に係るプロセッサの例示的な図である。プロセッサ５１００は、上の実装に関連して使用され得るハードウェアデバイスのタイプの例である。プロセッサ５１００は、マイクロプロセッサ、組み込みプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、ネットワークプロセッサ、マルチコアプロセッサ、シングルコアプロセッサ、またはコードを実行するための他のデバイスなど、任意のタイプのプロセッサであってよい。図５１にはプロセッサ５１００が１つだけ示されているが、処理要素は代替的に、図５１に示すプロセッサ５１００を２つ以上含むことができる。プロセッサ５１００は、シングルスレッドコアであってよい。または、少なくとも１つの実施形態では、プロセッサ５１００は、コアごとに２つ以上のハードウェアスレッドコンテキスト（または「論理プロセッサ」）を含み得るという点で、マルチスレッドであってよい。
【０２０２】
図５１は、ある実施形態に係るプロセッサ５１００に結合されるメモリ５１０２も示す。メモリ５１０２は、既知のまたはそうでなければ当業者に利用可能な多種多様なメモリ（メモリ階層の様々な層を含む）の何れかであってよい。係るメモリ要素は、限定されるわけではないが、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）の論理ブロック、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭ）、および電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）を含むことができる。
【０２０３】
プロセッサ５１００は、本明細書で詳述するアルゴリズム、プロセス、または動作と関連付けられる任意のタイプの命令を実行することができる。概して、プロセッサ５１００は、要素または項目（例えば、データ）を、ある状態または状況から別の状態または状況に変換することができる。
【０２０４】
プロセッサ５１００により実行される１つまたは複数の命令であり得るコード５１０４は、メモリ５１０２に格納されてもよいし、ソフトウェア、ハードウェア、ファームウェア、もしくはそれらの任意の適切な組み合わせに、または、必要に応じて特定の必要性に基づき、任意の他の内部コンポーネントもしくは外部コンポーネント、デバイス、要素、もしくは物体に格納されてもよい。一例では、プロセッサ５１００は、コード５１０４により示される命令のプログラムシーケンスに従うことができる。各命令はフロントエンドロジック５１０６に入り、１つまたは複数のデコーダ５１０８により処理される。デコーダは、その出力として、予め定義された形式の固定幅マイクロオペレーションなどのマイクロオペレーションを生成してもよいし、元のコード命令を反映する他の命令、マイクロ命令、またくは制御信号を生成してもよい。フロントエンドロジック５１０６は、レジスタリネーミングロジック５１１０およびスケジューリングロジック５１１２も含み、これらのロジックは概して、リソースを割り当て、実行のために、命令に対応する動作をキューに入れる。
【０２０５】
プロセッサ５１００は、実行ユニット５１１６ａ、５１１６ｂ、５１１６ｎなどの組を有する実行ロジック５１１４を含むこともできる。幾つかの実施形態は、特定の機能または機能の組に特化した実行ユニットを幾つか含むことができる。他の実施形態は、実行ユニットを１つだけ、または、特定の機能を実行できる実行ユニットを１つ含むことができる。実行ロジック５１１４は、コード命令により指定される操作を実行する。
【０２０６】
コード命令により指定される操作の実行の完了後、バックエンドロジック５１１８は、コード５１０４の命令をリタイアすることができる。一実施形態では、プロセッサ５１００は、アウトオブオーダ実行を可能にするが、命令のインオーダリタイアメントを必要とする。リタイアメントロジック５１２０は、様々な既知の形態（例えば、リオーダバッファなど）を取ることができる。このようにして、プロセッサ５１００は、コード５１０４の実行中に、少なくとも、デコーダにより生成される出力、レジスタリネーミングロジック５１１０により利用されるハードウェアのレジスタおよびテーブル、並びに、実行ロジック５１１４により修正される任意のレジスタ（不図示）に関して変換される。
【０２０７】
図５１には示されていないが、処理要素は、プロセッサ５１００を有するチップ上に他の要素を含むことができる。例えば、処理要素は、プロセッサ５１００と共にメモリ制御ロジックを含むことができる。処理要素は、Ｉ／Ｏ制御ロジックを含むことができる、および／または、メモリ制御ロジックと統合されるＩ／Ｏ制御ロジックを含むことができる。処理要素は、１つまたは複数のキャッシュを含むこともできる。幾つかの実施形態では、不揮発性メモリ（フラッシュメモリまたはヒューズなど）もプロセッサ５１００と共にチップ上に含まれ得る。
【０２０８】
図５２は、ある実施形態に係る、ポイントツーポイント（ＰｔＰ）構成で配置されるコンピューティングシステム５２００を示す。特に、図５２は、プロセッサ、メモリ、および入出力デバイスが幾つかのポイントツーポイントインタフェースにより相互接続されるシステムを示す。概して、本明細書に記載のコンピューティングシステムのうちの１つまたは複数は、コンピューティングシステム５２００と同じ方式または類似した方式で構成され得る。
【０２０９】
プロセッサ５２７０および５２８０はそれぞれ、メモリ要素５２３２および５２３４と通信するために、統合されたメモリコントローラロジック（ＭＣ）５２７２および５２８２を含むこともできる。代替的な実施形態では、メモリコントローラロジック５２７２および５２８２は、プロセッサ５２７０および５２８０とは別個のディスクリートロジックであってよい。メモリ要素５２３２および／または５２３４は、本明細書で概説する動作および機能を実現する際にプロセッサ５２７０および５２８０により使用される様々なデータを格納することができる。
【０２１０】
プロセッサ５２７０および５２８０は、他の図に関連して説明されているもののような任意のタイプのプロセッサであってよい。プロセッサ５２７０および５２８０は、ポイントツーポイント（ＰｔＰ）インタフェース回路５２７８および５２８８をそれぞれ使用して、ポイントツーポイントインタフェース５２５０を介してデータを交換することができる。プロセッサ５２７０および５２８０はそれぞれ、ポイントツーポイントインタフェース回路５２７６、５２８６、５２９４および５２９８を使用して、個々のポイントツーポイントインタフェース５２５２および５２５４を介してチップセット５２９０とデータを交換することができる。チップセット５２９０は、ＰｔＰインタフェース回路であり得るインタフェース回路５２９２を使用して、高性能グラフィックスインタフェース５２３９を介して高性能グラフィック回路５２３８とデータを交換することもできる。代替的な実施形態では、図５２に示すＰｔＰリンクの何れかまたは全てが、ＰｔＰリンクではなくマルチドロップバスとして実装され得る。
【０２１１】
チップセット５２９０は、インタフェース回路５２９６を介してバス５２２０と通信状態にあってよい。バス５２２０は、バスブリッジ５２１８およびＩ／Ｏデバイス５２１６などの、それを介して通信する１つまたは複数のデバイスを有することができる。バスブリッジ５２１８は、バス５２１０を介して、ユーザインタフェース５２１２（キーボード、マウス、タッチ画面、または他の入力デバイスなど）、通信デバイス５２２６（モデム、ネットワークインタフェースデバイス、または、コンピュータネットワーク５２６０を介して通信し得る他のタイプの通信デバイスなど）、オーディオＩ／Ｏデバイス５２１４、および／またはデータストレージデバイス５２２８などの他のデバイスと通信状態にあってよい。データストレージデバイス５２２８は、プロセッサ５２７０および／または５２８０により実行され得るコード５２３０を格納することができる。代替的な実施形態では、バスアーキテクチャの任意の部分が１つまたは複数のＰｔＰリンクで実装され得る。
【０２１２】
図５２に示すコンピュータシステムは、本明細書に記載の様々な実施形態を実装するために利用され得るコンピューティングシステムの実施形態の概略図である。図５２に示すシステムの様々なコンポーネントが、システムオンチップ（ＳｏＣ）アーキテクチャで、または本明細書で提供する例および実装の機能および特徴を実現できる任意の他の適切な構成で組み合わされ得ることが解るであろう。
【０２１３】
更なる例では、機械可読媒体は、機械により実行するための命令を格納するか、エンコードするか、または運ぶことができ、かつ、機械に、本開示の方法の何れか１つまたは複数を実行させ、または、係る命令に利用されるかまたは関連付けられるデータ構造を格納するか、エンコードするか、または運ぶことができる、任意の有形の媒体を含むこともできる。従って、「機械可読媒体」は、限定されるわけではないが、ソリッドステートメモリ、並びに、光学的および磁気的な媒体を含むことができる。機械可読媒体の具体的な例には、例として、限定されるわけではないが、半導体メモリデバイス（例えば、電気的プログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）およびフラッシュメモリデバイスを含む不揮発性メモリと、内蔵ハードディスクおよびリムーバブルディスクなどの磁気ディスクと、光磁気ディスクと、ＣＤ−ＲＯＭディスクおよびＤＶＤ−ＲＯＭディスクとが含まれる。機械可読媒体により具現化される命令は、幾つかの転送プロトコル（例えば、ＨＴＴＰ）の何れか１つを利用するネットワークインタフェースデバイスを介した伝送媒体を使用して、通信ネットワーク経由で更に送信または受信され得る。
【０２１４】
本明細書に記載の機能ユニットまたは機能は、それらの実装の独立性をより具体的に強調すべく、コンポーネントまたはモジュールとして参照またはラベル付けされている可能性があることを理解されたい。係るコンポーネントは、任意の数のソフトウェアまたはハードウェアの形態により具現化され得る。例えば、コンポーネントまたはモジュールは、カスタムの超大規模集積（ＶＬＳＩ）回路またはゲートアレイ、論理チップ、トランジスタなどの既製の半導体、または他のディスクリートコンポーネントを含むハードウェア回路として実装され得る。コンポーネントまたはモジュールは、フィールドプログラマブルゲートアレイ、プログラマブルアレイロジック、またはプログラマブルロジックデバイスなどといったプログラマブルハードウェアデバイスに実装されてもよい。コンポーネントまたはモジュールは、様々なタイプのプロセッサにより実行するためのソフトウェアに実装されてもよい。実行可能コードの識別されたコンポーネントまたはモジュールは、例えば、コンピュータ命令の１つまたは複数の物理ブロックまたは論理ブロックを含むことができ、これらは、例えば、目的、手順、または機能として編成され得る。それにもかかわらず、識別されたコンポーネントまたはモジュールの実行ファイルは、物理的に一緒に配置する必要はないが、論理的に一緒に結合されると、コンポーネントまたはモジュールを含み、かつ、コンポーネントまたはモジュールの規定の目的を実現する、異なる場所に格納された全く異なる命令を含むことができる。
【０２１５】
実際、実行可能コードのコンポーネントまたはモジュールは、単一の命令または多くの命令であってよく、更には、幾つかの異なるコードセグメントに、異なるプログラム間に、かつ、幾つかのメモリデバイスまたは処理システム全体にわたって分散され得る。特に、記載されているプロセスの幾つかの側面（コードの書き換えおよびコード分析など）は、コードが展開されているシステム（例えば、センサまたはロボットに組み込まれたコンピュータ）とは異なる処理システム（例えば、データセンタ内のコンピュータ）で行われ得る。同様に、運用データは、本明細書ではコンポーネントまたはモジュール内で識別および図示されてよく、任意の適切な形態で具現化され、任意の適切なタイプのデータ構造内で編成されてよい。運用データは、単一のデータセットとして収集されてもよいし、異なるストレージデバイスを含む異なる場所に分散されてもよく、少なくとも部分的には、単にシステムまたはネットワーク上の電子信号として存在し得る。コンポーネントまたはモジュールは、所望の機能を実行するように動作可能なエージェントを含めて、受動型または能動型であってよい。
【０２１６】
ここに記載の方法、システム、およびデバイスの実施形態の更なる例は、以下の非限定的な構成を含む。以下の非限定的な例の各々は、独立したものであってもよいし、以下にまたは本開示全体を通して提供する他の例の何れか１つまたは複数と任意の順列または組み合わせで組み合わされてもよい。
【０２１７】
本開示は特定の実装および概して関連付けられる方法の観点から説明されているが、当業者には、これらの実装および方法の改変形態および順列が明らかであろう。例えば、本明細書に記載のアクションは、記載のものとは異なる順序で実行されてよく、それでもなお望ましい結果を実現することができる。一例として、添付図面に示すプロセスでは、所望の結果を実現するために、示されている特定の順序、または順番が必ずしも必要ではない。特定の実装では、マルチタスクおよび並列処理が有利であり得る。更には、他のユーザインタフェースのレイアウトおよび機能がサポートされ得る。以下の特許請求の範囲内には他の変形形態が含まれる。
【０２１８】
本明細書は、多くの具体的な実装の詳細を含むが、これらは、任意の発明の範囲または特許請求され得るものの範囲を限定するものとしてではなく、むしろ特定の発明の特定の実施形態に固有の特徴を説明するものとして解釈されるべきである。別個の実施形態の文脈で本明細書に記載の特定の特徴が、単一の実施形態に組み合わせて実装されてもよい。反対に、単一の実施形態の文脈で記載されている様々な特徴が、複数の実施形態に別個に実装されるか、または任意の適切なサブコンビネーションに実装されてもよい。更には、特徴が、特定の組み合わせで機能するものとして上述され、最初はそのように特許請求されてすらいるかもしれないが、場合によっては、特許請求された組み合わせによる１つまたは複数の特徴がその組み合わせから削除されてよく、特許請求された組み合わせは、サブコンビネーションまたはサブコンビネーションの変形形態を対象としたものであってよい。
【０２１９】
同様に、図面には動作が特定の順序で示されているが、これは、望ましい結果を実現するために、係る動作を、示されている特定の順序でまたは順番に実行する必要があると理解されるべきでもないし、示されている全ての動作を実行する必要があると理解されるべきでもない。特定の状況では、マルチタスクおよび並列処理が有利であり得る。更には、上記の実施形態における様々なシステムコンポーネントの分離が、全ての実施形態において係る分離を必要としているとは理解されるべきでない。記載されているプログラムコンポーネントおよびシステムは概して、単一のソフトウェア製品に一緒に統合されるか、または複数のソフトウェア製品にパッケージ化され得ることを理解されたい。
【０２２０】
以下の例は、本明細書に係る実施形態に関する。例１は、メモリから物体の合成３次元（３Ｄ）グラフィカルモデルにアクセスする段階であって、３Ｄグラフィカルモデルは、フォトリアリスティックな解像度を有する、段階と、３Ｄグラフィカルモデルのビューから複数の異なるトレーニングサンプルを生成する段階であって、複数のトレーニングサンプルは、複数のトレーニングサンプルに欠陥を追加して、実世界のセンサデバイスにより生成される実世界のサンプルの特性をシミュレートするために生成される、段階と、複数のトレーニングサンプルを含むトレーニングセットを生成する段階であって、トレーニングデータは、人工ニューラルネットワークをトレーニングする、段階とを備える方法である。
【０２２１】
例２は、例１に記載の主題を含む。ここで、複数のトレーニングサンプルは、デジタル画像を含み、センサデバイスは、カメラセンサを含む。
【０２２２】
例３は、例１および２の何れか１つに記載の主題を含む。ここで、複数のトレーニングサンプルは、物体の点群表現を含む。
【０２２３】
例４は、例３に記載の主題を含む。ここで、センサデバイスは、ＬＩＤＡＲセンサを含む。
【０２２４】
例５は、例１から４の何れか１つに記載の主題を含む。主題は更に、センサデバイスのパラメータを示すためのデータにアクセスする段階と、パラメータに基づいて、複数のトレーニングサンプルに追加する欠陥を決定する段階とを備える。
【０２２５】
例６は、例５に記載の主題を含む。ここで、データは、センサデバイスのモデルを含む。
【０２２６】
例７は、例１から６の何れか１つに記載の主題を含む。主題は更に、３Ｄグラフィカルモデルによりモデル化される物体の１つまたは複数の表面の特性を示すためのデータにアクセスする段階と、特性に基づいて、複数のトレーニングサンプルに追加する欠陥を決定する段階と備える。
【０２２７】
例８は、例７に記載の主題を含む。ここで、３Ｄグラフィカルモデルは、データを含む。
【０２２８】
例９は、例１から８の何れか１つに記載の主題を含む。ここで、欠陥は、ノイズまたはグレアのうちの１つまたは複数を含む。
【０２２９】
例１０は、例１から９の何れか１つに記載の主題を含む。ここで、複数の異なるトレーニングサンプルを生成する段階は、複数の異なる照明設定を３Ｄグラフィカルモデルに適用して、環境内の照明をシミュレートする段階と、複数の異なる照明設定のうちの特定のものの適用中に生成される複数のトレーニングサンプルのサブセットに関する欠陥を決定する段階であって、複数のトレーニングサンプルのサブセットに関する欠陥は、特定の照明設定に基づいている、段階とを有する。
【０２３０】
例１１は、例１から１０の何れか１つに記載の主題を含む。ここで、複数の異なるトレーニングサンプルを生成する段階は、３Ｄグラフィカルモデルを複数の異なるグラフィカル環境に設置する段階であって、グラフィカル環境は、それぞれの実世界の環境をモデル化する、段階と、３Ｄグラフィカルモデルが複数の異なるグラフィカル環境内に設置されている間に、複数のトレーニングサンプルのサブセットを生成する段階とを有する。
【０２３１】
例１２は、例１から１１の何れか１つに記載の方法を実行するための手段を含むシステムである。
【０２３２】
例１３は、例１２に記載の主題を含む。ここで、システムは、装置を含み、装置は、例１から１１の何れか１つに記載の方法の少なくとも一部を実行するためのハードウェア回路を含む。
【０２３３】
例１４は、例１から１１の何れか１つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体である。
【０２３４】
例１５は、シャムニューラルネットワークで被写体入力および基準入力を受信する段階であって、シャムニューラルネットワークは、第１の複数の層を含む第１ネットワーク部分と、第２の複数の層を含む第２ネットワーク部分とを含み、第１ネットワーク部分の重みは、第２ネットワーク部分の重みと同一であり、被写体入力は、第１ネットワーク部分への入力として提供され、基準入力は、第２ネットワーク部分への入力として提供される、段階と、被写体入力および基準入力に基づいて、シャムニューラルネットワークの出力を生成する段階であって、シャムニューラルネットワークの出力は、基準入力と被写体入力との間の類似性を示す、段階とを備える方法である。
【０２３５】
例１６は、例１５に記載の主題を含む。ここで、出力を生成する段階は、基準入力と被写体入力との間の差分量を決定する段階と、差分量が閾値を満たしているかどうかを決定する段階であって、出力は、差分量が閾値を満たしているかどうかを識別する、段階とを有する。
【０２３６】
例１７は、例１６に記載の主題を含む。ここで、基準入力と被写体入力との間の差分量を決定する段階は、第１ネットワーク部分により出力される第１特徴ベクトルと、第２ネットワーク部分により出力される第２特徴ベクトルとを受信する段階と、第１特徴ベクトルおよび第２特徴ベクトルに基づいて、差分ベクトルを決定する段階とを含む。
【０２３７】
例１８は、例１５から１７の何れか１つに記載の主題を含む。ここで、出力を生成する段階は、１回限りの分類を含む。
【０２３８】
例１９は、例１５から１８の何れか１つに記載の主題を含む。主題は更に、１つまたは複数の合成トレーニングサンプルを使用して、シャムニューラルネットワークをトレーニングする段階を備える。
【０２３９】
例２０は、例１９に記載の主題を含む。ここで、１つまたは複数の合成トレーニングサンプルは、例１から１１の何れか１つに記載の方法に従って生成される。
【０２４０】
例２１は、例１５から２０の何れか１つに記載の主題を含む。ここで、基準入力は、合成的に生成されたサンプルを含む。
【０２４１】
例２２は、例２１に記載の主題を含む。ここで、合成的に生成されたサンプルは、例１から１１の何れか１つに記載の方法に従って生成される。
【０２４２】
例２３は、例１５から２２の何れか１つに記載の主題を含む。ここで、被写体入力は、第１デジタル画像を含み、基準入力は、第２デジタル画像を含む。
【０２４３】
例２４は、例１５から２２の何れか１つに記載の主題を含む。ここで、被写体入力は、第１点群表現を含み、基準入力は、第２点群表現を含む。
【０２４４】
例２５は、例１５から２４の何れか１つに記載の方法を実行するための手段を含むシステムである。
【０２４５】
例２６は、例２５に記載の主題を含む。ここで、ここで、システムは、装置を含み、装置は、例１５から２４の何れか１つに記載の方法の少なくとも一部を実行するためのハードウェア回路を含む。
【０２４６】
例２７は、例２５に記載の主題を含む。ここで、システムは、ロボット、ドローン、または自律型車両のうちの１つを含む。
【０２４７】
例２８は、例１５から２４の何れか１つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体である。
【０２４８】
例２９は、シャムニューラルネットワークに第１入力データを提供する段階であって、第１入力データは、第１姿勢からの３Ｄ空間の第１表現を含む、段階と、シャムニューラルネットワークに第２入力データを提供する段階であって、第２入力データは、第２姿勢からの３Ｄ空間の第２表現を含み、シャムニューラルネットワークは、第１の複数の層を含む第１ネットワーク部分と、第２の複数の層を含む第２ネットワーク部分とを含み、第１ネットワーク部分の重みは、第２ネットワーク部分の重みと同一であり、第１入力データは、第１ネットワーク部分への入力として提供され、第２入力データは、第２ネットワーク部分への入力として提供される、段階と、シャムニューラルネットワークの出力を生成する段階であって、出力は、第１姿勢と第２姿勢との間の相対的姿勢を含む、段階とを備える方法である。
【０２４９】
例３０は、例２９に記載の主題を含む。ここで、３Ｄ空間の第１表現は、第１の３Ｄ点群を含み、３Ｄ空間の第２表現は、第２の３Ｄ点群を含む。
【０２５０】
例３１は、例２９から３０の何れか１つに記載の主題を含む。ここで、３Ｄ空間の第１表現は、第１点群を含み、３Ｄ空間の第２表現は、第２点群を含む。
【０２５１】
例３２は、例３１に記載の主題を含む。ここで、第１点群および第２点群はそれぞれ、それぞれのボクセル化された点群表現を含む。
【０２５２】
例３３は、例２９から３２の何れか１つに記載の主題を含む。主題は更に、相対的姿勢に基づいて、少なくとも第１入力データおよび第２入力データから３Ｄ空間の３Ｄマッピングを生成する段階を備える。
【０２５３】
例３４は、例２９から３２の何れか１つに記載の主題を含む。主題は更に、相対的姿勢に基づいて、３Ｄ空間内の第１姿勢の観測者の位置を決定する段階を備える。
【０２５４】
例３５は、例３４に記載の主題を含む。ここで、観測者は、自律型機械を含む。
【０２５５】
例３６は、例３５に記載の主題を含む。ここで、自律型機械は、ロボット、ドローン、または自律型車両のうちの１つを含む。
【０２５６】
例３７は、例２９から３６の何れか１つに記載の方法を実行するための手段を含むシステムである。
【０２５７】
例３８は、例３７に記載の主題を含む。ここで、システムは、装置を含み、装置は、例２９から３６の何れか１つに記載の方法の少なくとも一部を実行するためのハードウェア回路を含む。
【０２５８】
例３９は、例２９から３６の何れか１つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体である。
【０２５９】
例４０は、第１センサデータを、機械学習モデルの第１部分への入力として提供する段階と、第２センサデータを、機械学習モデルの第２部分への入力として提供する段階であって、機械学習モデルは、連結部と、一組の全結合層とを含み、第１センサデータは、デバイスにより生成される第１タイプのものであり、第２センサデータは、デバイスにより生成される異なる第２タイプのものであり、連結部は、機械学習モデルの第１部分の出力を第１入力として受け取り、機械学習モデルの第２部分の出力を第２入力として受け取り、連結部の出力は、一組の全結合層に提供される、段階と、第１データおよび第２データから、環境内のデバイスの姿勢を含む、機械学習モデルの出力を生成する段階とを備える方法である。
【０２６０】
例４１は、例４０に記載の主題を含む。ここで、第１センサデータは、画像データを含み、第２センサデータは、デバイスの動きを識別する。
【０２６１】
例４２は、例４１に記載の主題を含む。ここで、画像データは、赤・緑・青（ＲＧＢ）データを含む。
【０２６２】
例４３は、例４１に記載の主題を含む。ここで、画像データは、３Ｄ点群データを含む。
【０２６３】
例４４は、例４１に記載の主題を含む。ここで、第２センサデータは、慣性測定装置（ＩＭＵ）データを含む。
【０２６４】
例４５は、例４１に記載の主題を含む。ここで、第２センサデータは、全地球測位データを含む。
【０２６５】
例４６は、例４０から４５の何れか１つに記載の主題を含む。ここで、機械学習モデルの第１部分は、第１タイプのセンサデータ用に調整され、機械学習モデルの第２部分は、第２タイプのセンサデータ用に調整される。
【０２６６】
例４７は、例４０から４６の何れか１つに記載の主題を含む。主題は更に、第３タイプの第３センサデータを、機械学習モデルの第３部分への入力として提供する段階を備え、出力は更に、第３データに基づいて生成される。
【０２６７】
例４８は、例４０から４７の何れか１つに記載の主題を含む。ここで、姿勢の出力は、回転成分および並進成分を含む。
【０２６８】
例４９は、例４８に記載の主題を含む。ここで、一組の全結合層のうちの１つは、回転成分を決定するための全結合層を含み、一組の全結合層のうちの別の１つは、並進成分を決定するための全結合層を含む。
【０２６９】
例５０は、例４０から４９の何れか１つに記載の主題を含む。ここで、機械学習モデルの第１部分および第２部分の一方または両方は、それぞれの畳み込み層を含む。
【０２７０】
例５１は、例４０から５０の何れか１つに記載の主題を含む。ここで、機械学習モデルの第１部分および第２部分の一方または両方は、１つまたは複数のそれぞれの長短期記憶（ＬＳＴＭ）ブロックを含む。
【０２７１】
例５２は、例４０から５１の何れか１つに記載の主題を含む。ここで、デバイスは、自律型機械を含み、自律型機械は、姿勢に基づいて、環境内をナビゲートする。
【０２７２】
例５３は、例５２に記載の主題を含む。ここで、自律型機械は、ロボット、ドローン、または自律型車両のうちの１つを含む。
【０２７３】
例５４は、例４０から５２の何れか１つに記載の方法を実行するための手段を含むシステムである。
【０２７４】
例５５は、例５４に記載の主題を含む。ここで、システムは、装置を含み、装置は、例４０から５２の何れか１つに記載の方法の少なくとも一部を実行するためのハードウェア回路を含む。
【０２７５】
例５６は、例４０から５２の何れか１つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体である。
【０２７６】
例５７は、一組のニューラルネットワークのランダム生成を要求する段階と、一組のニューラルネットワークの１つ１つを使用して機械学習タスクを実行する段階であって、機械学習タスクは、特定の処理ハードウェアを使用して実行される、段階と、一組のニューラルネットワークの各々に関する機械学習タスクの実行の属性を監視する段階であって、属性は、機械学習タスクの結果の正確性を含む、段階と、特定の処理ハードウェアを使用して機械学習タスクを実行するために使用される場合に、一組のニューラルネットワークのうちの最高性能のニューラルネットワークを、最高性能のニューラルネットワークの属性に基づいて識別する段階とを備える方法である。
【０２７７】
例５８は、例５７に記載の主題を含む。主題は更に、機械学習アプリケーションを実行する際に機械により使用される最高性能のニューラルネットワークを提供する段階を備える。
【０２７８】
例５９は、例５７から５８の何れか１つに記載の主題を含む。主題は更に、最高性能のニューラルネットワークの特性を決定する段階と、特性に従って第２の組のニューラルネットワークの生成を要求する段階であって、第２の組のニューラルネットワークは、それぞれが特性のうちの１つまたは複数を含む、複数の異なるニューラルネットワークを含む、段階と、第２の組のニューラルネットワークの１つ１つを使用して機械学習タスクを実行する段階であって、機械学習タスクは、特定の処理ハードウェアを使用して実行される、段階と、第２の組のニューラルネットワークの各々に関する機械学習タスクの実行の属性を監視する段階と、属性に基づいて、第２の組のニューラルネットワークのうちの最高性能のニューラルネットワークを識別する段階とを備える。
【０２７９】
例６０は、例５７−５９の何れか１つに記載の主題を含む。主題は更に、パラメータに基づく基準を受信する段階であって、最高性能のニューラルネットワークは、基準に基づいている、段階を備える。
【０２８０】
例６１は、例５７から６０の何れか１つに記載の主題を含む。ここで、属性は、特定の処理ハードウェアの属性を含む。
【０２８１】
例６２は、例６１の主題を含む。ここで、特定の処理ハードウェアの属性は、機械学習タスクの実行中に特定の処理ハードウェアにより消費される電力、機械学習タスクの実行中の特定の処理ハードウェアの温度、および、特定の処理ハードウェア上にニューラルネットワークを格納するために使用されるメモリのうちの１つまたは複数を含む。
【０２８２】
例６３は、例５７から６２の何れか１つに記載の主題を含む。ここで、属性は、一組のニューラルネットワークのうちの対応するものを使用して機械学習タスクを完了するための時間を含む。
【０２８３】
例６４は、例５７から６３の何れか１つに記載の方法を実行するための手段を含むシステムである。
【０２８４】
例６５は、例６４に記載の主題を含む。ここで、システムは、装置を含み、装置は、例５７から６３の何れか１つに記載の方法の少なくとも一部を実行するためのハードウェア回路を含む。
【０２８５】
例６６は、例５７から６３の何れか１つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体。
【０２８６】
例６７は、複数のカーネルを含むニューラルネットワークを識別する段階であって、カーネルの１つ１つは、それぞれの重みの組を含む、段階と、１つまたは複数のパラメータに従って複数のカーネルのサブセットを枝刈りすることで、複数のカーネルを特定のカーネルの組に減らす段階と、ニューラルネットワークの枝刈りされたバージョンを形成するために、特定のカーネルの組における重みのサブセットを枝刈りする段階であって、重みのサブセットを枝刈りする段階によって、重みのサブセットにおける１つまたは複数の０でない重みが０に割り当てられ、重みのサブセットは、重みの元の値に基づいて選択される、段階とを備える方法である。
【０２８７】
例６８は、例６７に記載の主題を含む。ここで、重みのサブセットは、閾値を下回る重みのサブセットの値に基づいて枝刈りされる。
【０２８８】
例６９は、例６７から６８の何れか１つに記載の主題を含む。主題は更に、ニューラルネットワークの枝刈りされたバージョンを使用して機械学習タスクの１つまたは複数の反復を実行することで、カーネルおよび重みの枝刈りによって失われる正確性の少なくとも一部を取り戻す段階を備える。
【０２８９】
例７０は、例６７から６９の何れか１つに記載の主題を含む。主題は更に、ニューラルネットワークの枝刈りされたバージョンで枝刈りされていない重みの値を量子化して、ニューラルネットワークのコンパクトバージョンを生成する段階を備える。
【０２９０】
例７１は、例７０に記載の主題を含む。ここで、量子化は、ログベースの量子化を含む。
【０２９１】
例７２は、例７１に記載の主題を含む。ここで、重みは、浮動小数点値から基数２の値まで量子化される。
【０２９２】
例７３は、例６７から７２の何れか１つに記載の主題を含む。主題は更に、スパース行列演算に適合されるハードウェアを使用して機械学習タスクを実行するためのニューラルネットワークの枝刈りされたバージョンを提供する段階を備える。
【０２９３】
例７４は、例６７から７３の何れか１つに記載の方法を実行するための手段を含むシステムである。
【０２９４】
例７５は、例６４に記載の主題を含む。ここで、システムは、装置を含み、装置は、例６７から７３の何れか１つに記載の方法の少なくとも一部を実行するためのハードウェア回路を含む。
【０２９５】
例７６は、例６７から７３の何れか１つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体である。
【０２９６】
このように、主題の特定の実施形態について説明してきた。他の実施形態は、以下の特許請求の範囲の範囲内に含まれる。場合によっては特許請求の範囲に記載のアクションが異なる順序で実行されてよく、それでもなお望ましい結果を実現することができる。更には、添付図面に示すプロセスは、望ましい結果を実現するために、必ずしも示されている特定の順序、または順番である必要はない。
【０２９７】
（項目１）
メモリから物体の合成３次元（３Ｄ）グラフィカルモデルにアクセスする段階であって、上記３Ｄグラフィカルモデルは、フォトリアリスティックな解像度を有する、段階と、
上記３Ｄグラフィカルモデルのビューから複数の異なるトレーニングサンプルを生成する段階であって、上記複数のトレーニングサンプルは、上記複数のトレーニングサンプルに欠陥を追加して、実世界のセンサデバイスにより生成される実世界のサンプルの特性をシミュレートするために生成される、段階と、
上記複数のトレーニングサンプルを含むトレーニングセットを生成する段階であって、上記トレーニングデータは、人工ニューラルネットワークをトレーニングする、段階と
を備える方法。
（項目２）
上記複数のトレーニングサンプルは、デジタル画像を含み、上記センサデバイスは、カメラセンサを含む、項目１に記載の方法。
（項目３）
上記複数のトレーニングサンプルは、上記物体の点群表現を含む、項目１から２の何れか１つに記載の方法。
（項目４）
上記センサデバイスは、ＬＩＤＡＲセンサを含む、項目３に記載の方法。
（項目５）
上記センサデバイスのパラメータを示すためのデータにアクセスする段階と、
上記パラメータに基づいて、上記複数のトレーニングサンプルに追加する上記欠陥を決定する段階と
を更に備える項目１から４の何れか１つに記載の方法。
（項目６）
上記データは、上記センサデバイスのモデルを含む、項目５に記載の方法。
（項目７）
上記３Ｄグラフィカルモデルによりモデル化される上記物体の１つまたは複数の表面の特性を示すためのデータにアクセスする段階と、
上記特性に基づいて、上記複数のトレーニングサンプルに追加する上記欠陥を決定する段階と
を更に備える項目１から６の何れか１つに記載の方法。
（項目８）
上記３Ｄグラフィカルモデルは、上記データを含む、項目７に記載の方法。
（項目９）
上記欠陥は、ノイズまたはグレアのうちの１つまたは複数を含む、項目１から８の何れか１つに記載の方法。
（項目１０）
複数の異なるトレーニングサンプルを生成する段階は、
複数の異なる照明設定を上記３Ｄグラフィカルモデルに適用して、環境内の照明をシミュレートする段階、
上記複数の異なる照明設定のうちの特定のものの適用中に生成される上記複数のトレーニングサンプルのサブセットに関する上記欠陥を決定する段階であって、上記複数のトレーニングサンプルの上記サブセットに関する上記欠陥は、上記特定の照明設定に基づいている、段階
を有する、項目１から９の何れか１つに記載の方法。
（項目１１）
複数の異なるトレーニングサンプルを生成する段階は、
上記３Ｄグラフィカルモデルを複数の異なるグラフィカル環境に設置する段階であって、上記グラフィカル環境は、それぞれの実世界の環境をモデル化する、段階、
上記３Ｄグラフィカルモデルが複数の異なるグラフィカル環境内に設置されている間に、上記複数のトレーニングサンプルのサブセットを生成する段階
を有する、項目１から１０の何れか１つに記載の方法。
（項目１２）
項目１から１１の何れか１つに記載の方法を実行するための手段を備えるシステム。
（項目１３）
上記システムは、装置を備え、上記装置は、項目１から１１の何れか１つに記載の方法の少なくとも一部を実行するためのハードウェア回路を有する、項目１２に記載のシステム。
（項目１４）
項目１から１１の何れか１つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体。
（項目１５）
シャムニューラルネットワークで被写体入力および基準入力を受信する段階であって、上記シャムニューラルネットワークは、第１の複数の層を含む第１ネットワーク部分と、第２の複数の層を含む第２ネットワーク部分とを含み、上記第１ネットワーク部分の重みは、上記第２ネットワーク部分の重みと同一であり、上記被写体入力は、上記第１ネットワーク部分への入力として提供され、上記基準入力は、上記第２ネットワーク部分への入力として提供される、段階と、
上記被写体入力および上記基準入力に基づいて、上記シャムニューラルネットワークの出力を生成する段階であって、上記シャムニューラルネットワークの上記出力は、上記基準入力と上記被写体入力との間の類似性を示す、段階と
を備える方法。
（項目１６）
上記出力を生成する段階は、
上記基準入力と上記被写体入力との間の差分量を決定する段階と、
上記差分量が閾値を満たしているかどうかを決定する段階であって、上記出力は、上記差分量が上記閾値を満たしているかどうかを識別する、段階と
を有する、項目１５に記載の方法。
（項目１７）
上記基準入力と上記被写体入力との間の上記差分量を決定する段階は、
上記第１ネットワーク部分により出力される第１特徴ベクトルと、上記第２ネットワーク部分により出力される第２特徴ベクトルとを受信する段階と、
上記第１特徴ベクトルおよび上記第２特徴ベクトルに基づいて、差分ベクトルを決定する段階と
を含む、項目１６に記載の方法。
（項目１８）
上記出力を生成する段階は、１回限りの分類を有する、項目１５から１７の何れか１つに記載の方法。
（項目１９）
１つまたは複数の合成トレーニングサンプルを使用して、上記シャムニューラルネットワークをトレーニングする段階を更に備える、項目１５から１８の何れか１つに記載の方法。
（項目２０）
上記１つまたは複数の合成トレーニングサンプルは、項目１から１１の何れか１つに記載の方法に従って生成される、項目１９に記載の方法。
（項目２１）
上記基準入力は、合成的に生成されたサンプルを含む、項目１５から２０の何れか１つに記載の方法。
（項目２２）
上記合成的に生成されたサンプルは、項目１から１１の何れか１つに記載の方法に従って生成される、項目２１に記載の方法。
（項目２３）
上記被写体入力は、第１デジタル画像を含み、上記基準入力は、第２デジタル画像を含む、項目１５から２２の何れか１つに記載の方法。
（項目２４）
上記被写体入力は、第１点群表現を含み、上記基準入力は、第２点群表現を含む、項目１５から２２の何れか１つに記載の方法。
（項目２５）
項目１５から２４の何れか１つに記載の方法を実行するための手段を備えるシステム。
（項目２６）
上記システムは、装置を備え、上記装置は、項目１５から２４の何れか１つに記載の方法の少なくとも一部を実行するためのハードウェア回路を有する、項目２５に記載のシステム。
（項目２７）
ロボット、ドローン、または自律型車両のうちの１つを備える、項目２５に記載のシステム。
（項目２８）
項目１５から２４の何れか１つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体。
（項目２９）
シャムニューラルネットワークに第１入力データを提供する段階であって、上記第１入力データは、第１姿勢からの３Ｄ空間の第１表現を含む、段階と、
上記シャムニューラルネットワークに第２入力データを提供する段階であって、上記第２入力データは、第２姿勢からの３Ｄ空間の第２表現を含み、上記シャムニューラルネットワークは、第１の複数の層を含む第１ネットワーク部分と、第２の複数の層を含む第２ネットワーク部分とを含み、上記第１ネットワーク部分の重みは、上記第２ネットワーク部分の重みと同一であり、上記第１入力データは、上記第１ネットワーク部分への入力として提供され、上記第２入力データは、上記第２ネットワーク部分への入力として提供される、段階と、
上記シャムニューラルネットワークの出力を生成する段階であって、上記出力は、上記第１姿勢と上記第２姿勢との間の相対的姿勢を含む、段階と
を備える方法。
（項目３０）
３Ｄ空間の上記第１表現は、第１の３Ｄ点群を含み、３Ｄ空間の上記第２表現は、第２の３Ｄ点群を含む、項目２９に記載の方法。
（項目３１）
上記３Ｄ空間の上記第１表現は、第１点群を含み、上記３Ｄ空間の上記第２表現は、第２点群を含む、項目２９から３０の何れか１つに記載の方法。
（項目３２）
上記第１点群および上記第２点群はそれぞれ、それぞれのボクセル化された点群表現を含む、項目３１に記載の方法。
（項目３３）
上記相対的姿勢に基づいて、少なくとも上記第１入力データおよび上記第２入力データから上記３Ｄ空間の３Ｄマッピングを生成する段階
を更に備える項目２９から３２の何れか１つに記載の方法。
（項目３４）
上記相対的姿勢に基づいて、上記３Ｄ空間内の上記第１姿勢の観測者の位置を決定する段階
を更に備える項目２９から３２の何れか１つに記載の方法。
（項目３５）
上記観測者は、自律型機械を含む、項目３４に記載の方法。
（項目３６）
上記自律型機械は、ロボット、ドローン、または自律型車両のうちの１つを含む、項目３５に記載の方法。
（項目３７）
項目２９から３６の何れか１つに記載の方法を実行するための手段を備えるシステム。
（項目３８）
上記システムは、装置を備え、上記装置は、項目２９から３６の何れか１つに記載の方法の少なくとも一部を実行するためのハードウェア回路を有する、項目３７に記載のシステム。
（項目３９）
項目２９から３６の何れか１つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体。
（項目４０）
上記第１センサデータを、機械学習モデルの第１部分への入力として提供する段階と、
上記第２センサデータを、上記機械学習モデルの第２部分への入力として提供する段階であって、上記機械学習モデルは、連結部と、一組の全結合層とを含み、上記第１センサデータは、デバイスにより生成される第１タイプのものであり、上記第２センサデータは、上記デバイスにより生成される異なる第２タイプのものであり、上記連結部は、上記機械学習モデルの上記第１部分の出力を第１入力として受け取り、上記機械学習モデルの上記第２部分の出力を第２入力として受け取り、上記連結部の出力は、上記一組の全結合層に提供される、段階と、
上記第１データおよび上記第２データから、環境内の上記デバイスの姿勢を含む、上記機械学習モデルの出力を生成する段階と
を備える方法。
（項目４１）
上記第１センサデータは、画像データを含み、上記第２センサデータは、上記デバイスの動きを識別する、項目４０に記載の方法。
（項目４２）
上記画像データは、赤・緑・青（ＲＧＢ）データを含む、項目４１に記載の方法。
（項目４３）
上記画像データは、３Ｄ点群データを含む、項目４１に記載の方法。
（項目４４）
上記第２センサデータは、慣性測定装置（ＩＭＵ）データを含む、項目４１に記載の方法。
（項目４５）
上記第２センサデータは、全地球測位データを含む、項目４１に記載の方法。
（項目４６）
上記機械学習モデルの上記第１部分は、上記第１タイプのセンサデータ用に調整され、上記機械学習モデルの上記第２部分は、上記第２タイプのセンサデータ用に調整される、項目４０から４５の何れか１つに記載の方法。
（項目４７）
第３タイプの第３センサデータを、上記機械学習モデルの第３部分への入力として提供する段階を更に備え、上記出力は更に、上記第３データに基づいて生成される、項目４０から４６の何れか１つに記載の方法。
（項目４８）
上記姿勢の出力は、回転成分および並進成分を含む、項目４０から４７の何れか１つに記載の方法。
（項目４９）
上記一組の全結合層のうちの１つは、上記回転成分を決定するための全結合層を含み、上記一組の全結合層のうちの別の１つは、上記並進成分を決定するための全結合層を含む、項目４８に記載の方法。
（項目５０）
上記機械学習モデルの上記第１部分および上記第２部分の一方または両方は、それぞれの畳み込み層を含む、項目４０から４９の何れか１つに記載の方法。
（項目５１）
上記機械学習モデルの上記第１部分および上記第２部分の一方または両方は、１つまたは複数のそれぞれの長短期記憶（ＬＳＴＭ）ブロックを含む、項目４０から５０の何れか１つに記載の方法。
（項目５２）
上記デバイスは、自律型機械を含み、上記自律型機械は、上記姿勢に基づいて、上記環境内をナビゲートする、項目４０から５１の何れか１つに記載の方法。
（項目５３）
上記自律型機械は、ロボット、ドローン、または自律型車両のうちの１つを含む、項目５２に記載の方法。
（項目５４）
項目４０から５２の何れか１つに記載の方法を実行するための手段を備えるシステム。
（項目５５）
上記システムは、装置を備え、上記装置は、項目４０から５２の何れか１つに記載の方法の少なくとも一部を実行するためのハードウェア回路を有する、項目５４に記載のシステム。
（項目５６）
項目４０から５２の何れか１つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体。
（項目５７）
一組のニューラルネットワークのランダム生成を要求する段階と、
上記一組のニューラルネットワークの１つ１つを使用して機械学習タスクを実行する段階であって、上記機械学習タスクは、特定の処理ハードウェアを使用して実行される、段階と、
上記一組のニューラルネットワークの各々に関する上記機械学習タスクの上記実行の属性を監視する段階であって、上記属性は、上記機械学習タスクの結果の正確性を含む、段階と、
上記特定の処理ハードウェアを使用して上記機械学習タスクを実行するために使用される場合に、上記一組のニューラルネットワークのうちの最高性能のニューラルネットワークを、上記最高性能のニューラルネットワークの上記属性に基づいて識別する段階と
を備える方法。
（項目５８）
機械学習アプリケーションを実行する際に機械により使用される上記最高性能のニューラルネットワークを提供する段階
を更に備える項目５７に記載の方法。
（項目５９）
上記最高性能のニューラルネットワークの特性を決定する段階と、
上記特性に従って第２の組のニューラルネットワークの生成を要求する段階であって、上記第２の組のニューラルネットワークは、それぞれが上記特性のうちの１つまたは複数を含む、複数の異なるニューラルネットワークを含む、段階と、
上記第２の組のニューラルネットワークの１つ１つを使用して上記機械学習タスクを実行する段階であって、上記機械学習タスクは、上記特定の処理ハードウェアを使用して実行される、段階と、
上記第２の組のニューラルネットワークの各々に関する上記機械学習タスクの上記実行の属性を監視する段階と、
上記属性に基づいて、上記第２の組のニューラルネットワークのうちの最高性能のニューラルネットワークを識別する段階と
を更に備える項目５７から５８の何れか１つに記載の方法。
（項目６０）
上記パラメータに基づく基準を受信する段階であって、上記最高性能のニューラルネットワークは、上記基準に基づいている、段階を更に備える、項目５７から５９の何れか１つに記載の方法。
（項目６１）
上記属性は、上記特定の処理ハードウェアの属性を含む、項目５７から６０の何れか１つに記載の方法。
（項目６２）
上記特定の処理ハードウェアの上記属性は、上記機械学習タスクの実行中に上記特定の処理ハードウェアにより消費される電力、上記機械学習タスクの実行中の上記特定の処理ハードウェアの温度、および、上記特定の処理ハードウェア上に上記ニューラルネットワークを格納するために使用されるメモリのうちの１つまたは複数を含む、項目６１に記載の方法。
（項目６３）
上記属性は、上記一組のニューラルネットワークのうちの上記対応するものを使用して上記機械学習タスクを完了するための時間を含む、項目５７から６２の何れか１つに記載の方法。
（項目６４）
項目５７から６３の何れか１つに記載の方法を実行するための手段を備えるシステム。
（項目６５）
上記システムは、装置を備え、上記装置は、項目５７から６３の何れか１つに記載の方法の少なくとも一部を実行するためのハードウェア回路を有する、項目６４に記載のシステム。
（項目６６）
項目５７から６３の何れか１つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体。
（項目６７）
複数のカーネルを含むニューラルネットワークを識別する段階であって、上記カーネルの１つ１つは、それぞれの重みの組を含む、段階と、
１つまたは複数のパラメータに従って上記複数のカーネルのサブセットを枝刈りすることで、上記複数のカーネルを特定のカーネルの組に減らす段階と、
上記ニューラルネットワークの枝刈りされたバージョンを形成するために、上記特定のカーネルの組における重みのサブセットを枝刈りする段階であって、上記重みのサブセットを上記枝刈りする段階によって、上記重みのサブセットにおける１つまたは複数の０でない重みが０に割り当てられ、上記重みのサブセットは、上記重みの元の値に基づいて選択される、段階と
を備える方法。
（項目６８）
上記重みのサブセットは、閾値を下回る上記重みのサブセットの値に基づいて枝刈りされる、項目６７に記載の方法。
（項目６９）
上記ニューラルネットワークの上記枝刈りされたバージョンを使用して機械学習タスクの１つまたは複数の反復を実行することで、上記カーネルおよび上記重みの上記枝刈りによって失われる正確性の少なくとも一部を取り戻す段階を更に備える、項目６７から６８の何れか１つに記載の方法。
（項目７０）
上記ニューラルネットワークの上記枝刈りされたバージョンで枝刈りされていない重みの値を量子化して、上記ニューラルネットワークのコンパクトバージョンを生成する段階を更に備える、項目６７から６９の何れか１つに記載の方法。
（項目７１）
上記量子化は、ログベースの量子化を含む、項目７０に記載の方法。
（項目７２）
上記重みは、浮動小数点値から基数２の値まで量子化される、項目７１に記載の方法。
（項目７３）
スパース行列演算に適合されるハードウェアを使用して機械学習タスクを実行するための上記ニューラルネットワークの上記枝刈りされたバージョンを提供する段階を更に備える、項目６７から７２の何れか１つに記載の方法。
（項目７４）
項目６７から７３の何れか１つに記載の方法を実行するための手段を備えるシステム。
（項目７５）
上記システムは、装置を備え、上記装置は、項目６７から７３の何れか１つに記載の方法の少なくとも一部を実行するためのハードウェア回路を有する、項目６４に記載のシステム。
（項目７６）
項目６７から７３の何れか１つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体。
【図１】
2021526253.tif 000004
【図２】
2021526253.tif 000005
【図３】
2021526253.tif 000006
【図４】
2021526253.tif 000007
【図５】
2021526253.tif 000008
【図６】
2021526253.tif 000009
【図７】
2021526253.tif 000010
【図８】
2021526253.tif 000011
【図９】
2021526253.tif 000012
【図１０】
2021526253.tif 000013
【図１１】
2021526253.tif 000014
【図１２】
2021526253.tif 000015
【図１３】
2021526253.tif 000016
【図１４】
2021526253.tif 000017
【図１５】
2021526253.tif 000018
【図１６】
2021526253.tif 000019
【図１７】
2021526253.tif 000020
【図１８】
2021526253.tif 000021
【図１９】
2021526253.tif 000022
【図２０】
2021526253.tif 000023
【図２１】
2021526253.tif 000024
【図２２】
2021526253.tif 000025
【図２３】
2021526253.tif 000026
【図２４】
2021526253.tif 000027
【図２５Ａ】
2021526253.tif 000028
【図２５Ｂ】
2021526253.tif 000029
【図２６】
2021526253.tif 000030
【図２７】
2021526253.tif 000031
【図２８】
2021526253.tif 000032
【図２９】
2021526253.tif 000033
【図３０Ａ】
2021526253.tif 000034
【図３０Ｂ】
2021526253.tif 000035
【図３１】
2021526253.tif 000036
【図３２】
2021526253.tif 000037
【図３３Ａ】
2021526253.tif 000038
【図３３Ｂ】
2021526253.tif 000039
【図３３Ｃ】
2021526253.tif 000040
【図３３Ｄ】
2021526253.tif 000041
【図３３Ｅ】
2021526253.tif 000042
【図３３Ｆ】
2021526253.tif 000043
【図３４】
2021526253.tif 000044
【図３５】
2021526253.tif 000045
【図３６】
2021526253.tif 000046
【図３７】
2021526253.tif 000047
【図３８】
2021526253.tif 000048
【図３９】
2021526253.tif 000049
【図４０】
2021526253.tif 000050
【図４１】
2021526253.tif 000051
【図４２Ａ】
2021526253.tif 000052
【図４２Ｂ】
2021526253.tif 000053
【図４２Ｃ】
2021526253.tif 000054
【図４３】
2021526253.tif 000055
【図４４】
2021526253.tif 000056
【図４５Ａ】
2021526253.tif 000057
【図４５Ｂ】
2021526253.tif 000058
【図４５Ｃ】
2021526253.tif 000059
【図４６】
2021526253.tif 000060
【図４７】
2021526253.tif 000061
【図４８】
2021526253.tif 000062
【図４９】
2021526253.tif 000063
【図５０】
2021526253.tif 000064
【図５１】
2021526253.tif 000065
【図５２】
2021526253.tif 000066
【国際調査報告】
2021526253.tif 000067
2021526253.tif 000068
2021526253.tif 000069
2021526253.tif 000070