(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024001220
(43)【公開日】2024-01-09
(54)【発明の名称】深層学習システム
(51)【国際特許分類】
G06N 3/0442 20230101AFI20231226BHJP
【FI】
G06N3/0442
【審査請求】有
【請求項の数】21
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023178605
(22)【出願日】2023-10-17
(62)【分割の表示】P 2020564708の分割
【原出願日】2019-05-21
(31)【優先権主張番号】62/675,601
(32)【優先日】2018-05-23
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.TENSORFLOW
2.3GPP
(71)【出願人】
【識別番号】520132791
【氏名又は名称】モビディウス リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】モロニー、デイヴィッド マクダラ
(72)【発明者】
【氏名】バックリー、レオニー ライディーン
(72)【発明者】
【氏名】ロドリゲス マーティン デ ラ シエッラ、ルイス エム.
(72)【発明者】
【氏名】マルケス ロドリゲス-ペラル、カルロス
(72)【発明者】
【氏名】ブリック、コーマック エム.
(72)【発明者】
【氏名】バーン、ジョナサン デイヴィッド
(72)【発明者】
【氏名】シュ、シャオファン
(72)【発明者】
【氏名】ペナ カリッロ、デクスモント アレハンドロ
(72)【発明者】
【氏名】パク、ミ スン
(72)【発明者】
【氏名】パッラ、アレッサンドロ
(57)【要約】 (修正有)
【課題】機械学習モデルの様々な側面を強化する機械学習システム、方法、プログラム及び記憶媒体を提供する。
【解決手段】トレーニングセット生成器1420を採用したコンピューティングシステム1415は、物体の実質的にフォトリアリスティックな3次元(3D)グラフィカルモデル1410にアクセスし、3Dグラフィカルモードの一組のトレーニング画像を生成する。一組のトレーニング画像は、欠陥を追加し、かつ、トレーニング画像のフォトリアリスティックな品質を劣化させるために生成される。一組のトレーニング画像は、人工ニューラルネットワークをトレーニングするためのトレーニングデータとして提供される。
【選択図】
図14
【特許請求の範囲】
【請求項1】
プロセッサに、
第1センサデータを、機械学習モデルの第1部分への入力として提供する手順であって、
前記機械学習モデルの前記第1部分は、前記第1センサデータに基づいて生成された行列を受け取る長短期記憶(LSTM)層を有し、前記LSTM層は、異なる方向に前記行列のデータ要素を処理し、
前記第1センサデータは、デバイスにより捕捉され、第1タイプのものである、手順と、
第2センサデータを、前記機械学習モデルの第2部分への入力として提供する手順であって、
前記第2センサデータは、前記デバイスにより捕捉され、前記第1タイプとは異なる第2タイプのものであり、
前記機械学習モデルは、連結部と、一組の全結合層とを含み、
前記連結部は、前記LSTM層の出力を第1入力として受け取り、前記機械学習モデルの前記第2部分の出力を第2入力として受け取り、
前記連結部の出力は、前記一組の全結合層に提供される、手順と、
前記第1センサデータおよび前記第2センサデータから、環境内の前記デバイスの姿勢を含む前記機械学習モデルの出力を生成する手順と
を実行させるためのコンピュータプログラム。
【請求項2】
前記第2センサデータは、前記デバイスの動きを識別する、請求項1に記載のコンピュータプログラム。
【請求項3】
前記第1センサデータは、二次元の赤・緑・青(RGB)データを含む、請求項2に記載のコンピュータプログラム。
【請求項4】
前記第1センサデータは、3D点群データを含む、請求項2に記載のコンピュータプログラム。
【請求項5】
前記第2センサデータは、慣性測定装置(IMU)データを含む、請求項2に記載のコンピュータプログラム。
【請求項6】
前記第2センサデータは、全地球測位データを含む、請求項2に記載のコンピュータプログラム。
【請求項7】
前記機械学習モデルの前記第1部分は、前記第1タイプのセンサデータ用に調整され、前記機械学習モデルの前記第2部分は、前記第2タイプのセンサデータ用に調整される、請求項1から6の何れか一項に記載のコンピュータプログラム。
【請求項8】
前記プロセッサに、
第3タイプの第3センサデータを、前記機械学習モデルの第3部分への入力として提供する手順を更に実行させ、前記出力は更に、前記第3センサデータに基づいて生成される、請求項1から7の何れか一項に記載のコンピュータプログラム。
【請求項9】
前記姿勢の出力は、回転成分および並進成分を含む、請求項1から8の何れか一項に記載のコンピュータプログラム。
【請求項10】
前記一組の全結合層は、前記回転成分を決定するための全結合層、および、前記並進成分を決定するための別の全結合層を含む、請求項9に記載のコンピュータプログラム。
【請求項11】
前記機械学習モデルの前記第1部分および前記第2部分の一方または両方は、それぞれの畳み込み層を含む、請求項1から10の何れか一項に記載のコンピュータプログラム。
【請求項12】
前記デバイスは、前記姿勢に基づいて、前記環境内をナビゲートする、請求項1から11の何れか一項に記載のコンピュータプログラム。
【請求項13】
前記異なる方向は、第1方向および第2方向を含み、前記第1方向は、前記第2方向とは反対である、請求項1から12の何れか一項に記載のコンピュータプログラム。
【請求項14】
前記第1方向または前記第2方向は、前記行列の左側列から前記行列の右側列へ、かつ、前記行列の一番上の行から前記行列の一番下の行への方向である、請求項13に記載のコンピュータプログラム。
【請求項15】
前記機械学習モデルは、更に、
前記第1センサデータに基づいてベクトルを生成する追加の全結合層と、
前記ベクトルを前記行列に変換する再形成ブロックと
を有する、請求項1から14の何れか一項に記載のコンピュータプログラム。
【請求項16】
請求項1から15の何れか一項に記載のコンピュータプログラムを格納しているコンピュータ可読記憶媒体。
【請求項17】
第1センサデータを、機械学習モデルの第1部分への入力として提供する段階であって、
前記機械学習モデルの前記第1部分は、前記第1センサデータに基づいて生成された行列を受け取る長短期記憶(LSTM)層を有し、前記LSTM層は、異なる方向に前記行列のデータ要素を処理し、
前記第1センサデータは、デバイスにより捕捉され、第1タイプのものである、段階と、
第2センサデータを、前記機械学習モデルの第2部分への入力として提供する段階であって、
前記第2センサデータは、前記デバイスにより捕捉され、前記第1タイプとは異なる第2タイプのものであり、
前記機械学習モデルは、連結部と、一組の全結合層とを含み、
前記連結部は、前記LSTM層の出力を第1入力として受け取り、前記機械学習モデルの前記第2部分の出力を第2入力として受け取り、
前記連結部の出力は、前記一組の全結合層に提供される、段階と、
前記第1センサデータおよび前記第2センサデータから、環境内の前記デバイスの姿勢を含む前記機械学習モデルの出力を生成する段階と
を備える方法。
【請求項18】
前記機械学習モデルは、更に、
前記第1センサデータに基づいてベクトルを生成する追加の全結合層と、
前記ベクトルを前記行列に変換する再形成ブロックと
を有する、請求項17に記載の方法。
【請求項19】
プロセッサと、
メモリと、
一組のセンサと、
前記プロセッサにより実行可能な機械学習エンジンと
を備えるシステムであって、
前記プロセッサは、
前記一組のセンサにより生成される第1センサデータにアクセスすることであって、前記第1センサデータは、デバイスにより捕捉され、第1タイプのものである、アクセスすることと、
前記第1センサデータを、機械学習モデルの第1部分への入力として提供することであって、前記機械学習モデルの前記第1部分は、前記第1センサデータに基づいて生成された行列を受け取る長短期記憶(LSTM)層を有し、前記LSTM層は、異なる方向に前記行列のデータ要素を処理する、提供することと、
前記一組のセンサにより生成される第2センサデータにアクセスすることであって、前記第2センサデータは、前記デバイスにより捕捉され、前記第1タイプとは異なる第2タイプのものである、アクセスすることと、
前記第2センサデータを、前記機械学習モデルの第2部分への入力として提供することであって、前記機械学習モデルは、連結部と、一組の全結合層とを含み、前記連結部は、前記LSTM層の出力を第1入力として受け取り、前記機械学習モデルの前記第2部分の出力を第2入力として受け取り、前記連結部の出力は、前記一組の全結合層に提供される、提供することと、
前記第1センサデータおよび前記第2センサデータから、環境内の前記デバイスの相対的姿勢を含む前記機械学習モデルの出力を生成することと
を行う、
システム。
【請求項20】
前記機械学習モデルの前記出力を使用して前記環境内の機械を操作するためのアクチュエータを更に備える、請求項19に記載のシステム。
【請求項21】
前記システムは、自律型車両、自律ドローン、または、ロボットを備える請求項20に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願]
本願は、2018年5月23日に出願された米国仮特許出願第62/675,601号に基づく利益を主張するものであり、その出願全体が参照により本明細書に組み込まれる。
【0002】
本開示は概して、コンピュータシステム、より具体的には機械学習システムの分野に関する。
【背景技術】
【0003】
コンピュータビジョンおよびグラフィックスの世界は、MagicLeap(商標)、Microsoft(商標)HoloLens(商標)、Oculus(商標)Rift(商標)、並びに、Valve(商標)およびHTC(商標)からのもののような他のVRシステムなど、拡張現実(AR)製品、仮想現実(VR)製品、および複合現実(MR)製品の登場に伴い迅速に収束しつつある。係るシステムにおける現行のアプローチは、並行して実行される別個のグラフィックス処理装置(GPU)およびコンピュータビジョンサブシステムを使用することである。これらの並列システムは、プロセッサのアレイおよび/またはプログラマブルハードウェアアクセラレータ上で実行されるソフトウェアに実装されるコンピュータビジョンパイプラインと並行して、前から存在するGPUから組み立てることができる。
【図面の簡単な説明】
【0004】
開示されている主題の様々な目的、特徴、および利点は、以下の図面に関連して検討すると、開示されている主題の以下の詳細な説明を参照しながらより完全に理解することができる。これらの図面では、同様の参照番号が同様の要素と識別される。添付図面は概略的なものであり、縮尺通りに描画されることを意図するものではない。分かりやすくするために全ての図において全てのコンポーネントをラベル付けすることは行っていない。開示されている主題を当業者が理解できるようにするために図が必要でない場合は、開示されている主題の各実施形態の全てのコンポーネントを示すことも行っていない。
【0005】
【
図1】従来の拡張または複合現実レンダリングシステムを示す。
【0006】
【
図2】幾つかの実施形態に係るボクセルベースの拡張または複合現実レンダリングシステムを示す。
【0007】
【
図3】幾つかの実施形態に係る密なボリュメトリック表現と疎なボリュメトリック表現との違いを示す。
【0008】
【
図4】幾つかの実施形態に係るシーンの合成図を示す。
【0009】
【
図5】幾つかの実施形態に係る例示的な要素ツリー構造の詳細レベルを示す。
【0010】
【
図6】幾つかの実施形態に係る、本願のデータ構造およびボクセルデータを利用できる用途を示す。
【0011】
【
図7】幾つかの実施形態に係る、3D数字を認識するために使用される例示的なネットワークを示す。
【0012】
【
図8】幾つかの実施形態に係る、暗黙の詳細レベルを使用して同じデータ構造に対して実行される複数の分類を示す。
【0013】
【
図9】幾つかの実施形態に係る2D畳み込みニューラルネットワークによる演算排除を示す。
【0014】
【
図10】幾つかの実施形態に係る、例示的なテスト画像の分析から得られた実験結果を示す。
【0015】
【
図11】幾つかの実施形態に係る、演算をカリングするためのハードウェアを示す。
【0016】
【
図12】幾つかの実施形態に係る、演算をカリングするためのハードウェアの改良を示す。
【0017】
【
図13】幾つかの実施形態に係るハードウェアを示す。
【0018】
【
図14】少なくとも幾つかの実施形態に係る、例示的なトレーニングセット生成器を採用した例示的なシステムを示す。
【0019】
【
図15】少なくとも幾つかの実施形態に係る合成トレーニングデータの例示的な生成を示す。
【0020】
【
図16】少なくとも幾つかの実施形態に係る例示的なシャムネットワークを示す。
【0021】
【
図17】少なくとも幾つかの実施形態に係る、自律的比較を実行するためのシャムネットワークの例示的な使用を示す。
【0022】
【
図18】少なくとも幾つかの実施形態に係る点群の例示的なボクセル化を示す。
【0023】
【
図19】少なくとも幾つかの実施形態に係る例示的な機械学習モデルの簡略ブロックダイアグラムである。
【0024】
【
図20】少なくとも幾つかの実施形態に係る、モデルの例示的なトレーニングの態様を示した簡略ブロックダイアグラムである。
【0025】
【
図21】少なくとも幾つかの実施形態に係る、ニューラルネットワークを使用してナビゲーション用の3Dマップを生成する例示的なロボットを示す。
【0026】
【
図22】少なくとも幾つかの実施形態に係る、慣性測定データと共に使用するための例示的な機械学習モデルを示したブロックダイアグラムである。
【0027】
【
図23】少なくとも幾つかの実施形態に係る、画像データと共に使用するための例示的な機械学習モデルを示したブロックダイアグラムである。
【0028】
【
図24】
図22および
図23の例におけるモデルの態様を組み合わせた例示的な機械学習モデルを示したブロックダイアグラムである。
【0029】
【
図25A】
図24の例示的な機械学習モデルと同様の機械学習モデルの結果を示したグラフである。
【
図25B】
図24の例示的な機械学習モデルと同様の機械学習モデルの結果を示したグラフである。
【0030】
【
図26】少なくとも幾つかの実施形態に係る、例示的なニューラルネットワークオプティマイザを含む例示的なシステムを示す。
【0031】
【
図27】少なくとも幾つかの実施形態に係る、ニューラルネットワークモデルの例示的な最適化を示したブロックダイアグラムである。
【0032】
【
図28】例示的なニューラルネットワークモデルの最適化中に生成および使用される例示的な結果を示した表である。
【0033】
【
図29】例示的なニューラルネットワークモデルの最適化中に生成および使用される結果を示したグラフを示す。
【0034】
【
図30A】少なくとも幾つかの実施形態に係る、ハイブリッドニューラルネットワーク枝刈りの例を示した簡略ブロックダイアグラムである。
【0035】
【
図30B】少なくとも幾つかの実施形態に係る、ニューラルネットワークの例示的な枝刈りを示した簡略フロー図である。
【0036】
【
図31】少なくとも幾つかの実施形態に係る、ニューラルネットワークの枝刈りに関連して実行される例示的な重みの量子化を示した簡略ブロックダイアグラムである。
【0037】
【
図32】例示的なニューラルネットワーク枝刈り技術の結果を比較した表である。
【0038】
【
図33A】少なくとも幾つかの実施形態に係る、機械学習と関連付けられる例示的なコンピュータ実装技術の簡略フロー図である。
【
図33B】少なくとも幾つかの実施形態に係る、機械学習と関連付けられる例示的なコンピュータ実装技術の簡略フロー図である。
【
図33C】少なくとも幾つかの実施形態に係る、機械学習と関連付けられる例示的なコンピュータ実装技術の簡略フロー図である。
【
図33D】少なくとも幾つかの実施形態に係る、機械学習と関連付けられる例示的なコンピュータ実装技術の簡略フロー図である。
【
図33E】少なくとも幾つかの実施形態に係る、機械学習と関連付けられる例示的なコンピュータ実装技術の簡略フロー図である。
【
図33F】少なくとも幾つかの実施形態に係る、機械学習と関連付けられる例示的なコンピュータ実装技術の簡略フロー図である。
【0039】
【
図34】幾つかの実施形態に係る例示的なマルチスロットベクトルプロセッサを示す。
【0040】
【
図35】幾つかの実施形態に係る例示的なボリュメトリック加速ハードウェアを示す。
【0041】
【
図36】幾つかの実施形態に係るボクセルキューブの編成を示す。
【0042】
【
図37】幾つかの実施形態に係る2レベルのスパースボクセルツリーを示す。
【0043】
【
図38】幾つかの実施形態に係る2レベルのスパースボクセルツリーを示す。
【0044】
【
図39】幾つかの実施形態に係る例示的なボクセルデータのストレージを示す。
【0045】
【
図40】幾つかの実施形態に係る例示的なボリュメトリックデータ構造へのボクセルの挿入を示す。
【0046】
【
図41】幾つかの実施形態に係る例示的な3Dボリュメトリック物体の投影を示す。
【0047】
【
図42B】例示的なボリュメトリックデータ構造を含む例示的な演算を示す。
【
図42C】例示的なボリュメトリックデータ構造を含む例示的な演算を示す。
【0048】
【
図43】幾つかの実施形態に係る、投影を使用した簡略マップの生成を示す。
【0049】
【
図44】幾つかの実施形態に係る、組み込みデバイスからの例示的なボリュメトリック3D測定値および/または単純な2D測定値の例示的な集約を示す。
【0050】
【
図45B】幾つかの実施形態に係る、2D 2×2ビットマップ上における2D経路探索の例示的な加速を示す。
【
図45C】幾つかの実施形態に係る、2D 2×2ビットマップ上における2D経路探索の例示的な加速を示す。
【0051】
【
図46】幾つかの実施形態に係る、例示的なボリュメトリックデータ構造を使用した衝突検出の例示的な加速を示す。
【0052】
【
図47】少なくとも幾つかの実施形態に係るデバイスを有する例示的なネットワークの簡略ブロックダイアグラムである。
【0053】
【
図48】少なくとも幾つかの実施形態に係る例示的なフォグまたはクラウドコンピューティングネットワークの簡略ブロックダイアグラムである。
【0054】
【
図49】少なくとも幾つかの実施形態に係る例示的なデバイスを含むシステムの簡略ブロックダイアグラムである。
【0055】
【
図50】少なくとも幾つかの実施形態に係る例示的な処理デバイスの簡略ブロックダイアグラムである。
【0056】
【
図51】少なくとも幾つかの実施形態に係る例示的なプロセッサのブロックダイアグラムである。
【0057】
【
図52】少なくとも幾つかの実施形態に係る例示的なコンピューティングシステムのブロックダイアグラムである。
【発明を実施するための形態】
【0058】
以下の説明では、開示されている主題を完全に理解できるよう、開示されている主題のシステムおよび方法、並びに、係るシステムおよび方法が動作し得る環境などに関する具体的な詳細を多数記載する。ただし、開示されている主題が係る具体的な詳細なくして実施され得ること、および、当技術分野で周知の特定の特徴が、開示されている主題の複雑化を回避すべく詳細に説明されていないことが、当業者には明らかであろう。更には、以下で提供する実施形態が例示的なものであり、開示されている主題の範囲内にある他のシステムおよび方法の存在が考えられることが解るであろう。
【0059】
拡張現実、仮想現実、複合現実、自律型デバイス、およびロボットに基づいた、かつ、それらを組み込んだ、3次元空間およびジオメトリのボリュームを表すデータモデルを使用し得る様々な技術が登場している。係る3Dデータまたはボリュメトリックデータを使用する様々な実環境および仮想環境の記述には従来大規模なデータセットが含まれているが、幾つかのコンピューティングシステムは望ましい方式での処理に苦心してきた。更には、ドローン、ウェアラブルデバイス、仮想現実システムなどといったデバイスが小さくなるにつれて、係るデバイスのメモリおよび処理リソースも制約され得る。例として、AR/VR/MRアプリケーションは、サポートするハードウェアを使用して生成されるグラフィカル表現に高フレームレートを要求し得る。ただし、幾つかのアプリケーションでは、係るハードウェアのGPUおよびコンピュータビジョンサブシステムは、望ましい結果を生成すべく(例えば、信頼できる結果を生成するフレームレートで信頼できるグラフィカルシーンを生成し、数ある例示的な目標の中でもとりわけ、過度の待ち時間に起因するユーザの乗り物酔いを防ぐべく)、最大130fps(7ミリ秒)などの高速でデータ(例えば、3Dデータ)を処理する必要があり得る。同様に更なるアプリケーションに挑戦して、大きなボリュームを記述したデータを満足のいくように処理する一方で、数ある例示的な問題の中でもとりわけ、対応するシステムの処理、メモリ、電力、アプリケーション要件の制約を満たしてよい。
【0060】
幾つかの実装では、コンピューティングシステムが、形式に従って定義されたスパースボリュメトリックデータを生成および/または使用するためのロジックを備えてよい。例えば、様々なシステムおよびアプリケーションでコンピュータビジョンおよび3Dレンダリングを統合するために、定義されたボリュメトリックデータ構造が提供され得る。物体のボリュメトリック表現は、例えば、ステレオスコピックカメラまたは深度カメラなどの光センサを使用して撮像され得る。物体のボリュメトリック表現は、複数のボクセルを含むことができる。改善されたボリュメトリックデータ構造を定義し、対応するボリュメトリック表現を再帰的に細分化して物体の目標解像度を取得できるようにしてよい。細分化の間、これらのボクセルのうちの1つまたは複数に含まれ得るボリュメトリック表現の空きスペースを、ボリュメトリック表現(およびサポート演算)からカリングすることができる。空きスペースは、物体の幾何学的特性を含まないボリュメトリック表現の領域であってよい。
【0061】
故に、改善されたボリュメトリックデータ構造では、対応するボリューム内の個々のボクセルが、「占有」(対応するボリュメトリック空間内に存在する何らかのジオメトリのため)、または「空」(対応するボリュームが空きスペースで構成されていることを表す)とタグ付けされ得る。係るタグは更に、対応するサブボリュームのうちの1つまたは複数も占有されていること(例えば、ペアレントまたは上位レベルのボクセルが占有としてタグ付けされている場合)、または、そのサブボリュームの全てが空きスペースであること(すなわち、ペアレントまたは上位レベルのボクセルが空であるとタグ付けされている場合)を指定するものとして解釈され得る。幾つかの実装では、ボクセルを空であるとタグ付けすると、ボクセルおよび/または対応するサブボリュームのボクセルを、対応するボリュメトリック表現を生成するために使用される演算から効果的に除去できることがある。ボリュメトリックデータ構造は、スパースツリー構造に従ったもの、例えば、スパース・セクサクワターナリィ・ツリー(SST:Sparse Sexaquaternary Tree)形式に従ったものであってよい。更に、スパースボリュメトリックデータ構造への係るアプローチでは、物体のボリュメトリック表現を格納するために従来使用されているよりも比較的少ないストレージ空間が利用され得る。更には、ボリュメトリックデータの圧縮によって、数ある例示的な利益の中でもとりわけ、係る表現の伝送の実行可能性が高まり、係る表現のより高速の処理が可能になり得る。
【0062】
ボリュメトリックデータ構造をハードウェアアクセラレーションして、3Dレンダラを迅速に更新できるようにすることで、別個のコンピュータビジョンシステムおよびグラフィックスシステムで発生し得る遅延をなくすことができる。係る遅延によって待ち時間が生じることがあり、AR、VR、MR、および他のアプリケーションで使用すると、更なる欠点の中でもとりわけ、ユーザに乗り物酔いが生じることがある。加速されたデータ構造内の幾何学的特性の占有についてボクセルを迅速にテストする機能によって、リアルタイムで更新できる低遅延のAR、VR、MR、または他のシステムの構築が可能になる。
【0063】
幾つかの実施形態では、ボリュメトリックデータ構造の機能がフレーム内警告を提供してもよい。例えば、AR、VR、MR、および他のアプリケーションにおいて、画像化されたシーンでユーザが実物体または合成物体と衝突する可能性が高い場合、または、ドローンまたはロボット用のコンピュータビジョンアプリケーションにおいて、画像化されたシーンで係るデバイスが実物体または合成物体と衝突する可能性が高い場合に、ボリュメトリックデータ構造が提供する処理速度によって、差し迫った衝突の警告が可能になる。
【0064】
本開示の実施形態は、ロボット、拡張および複合現実のヘッドセット用のヘッドマウント型ディスプレイ、並びに、電話およびタブレットなどのアプリケーションにおけるボリュメトリックデータの格納および処理に関するものであり得る。本開示の実施形態では、ボクセルのグループ内の各ボリュメトリック要素(例えば、ボクセル)、および、オプションとして、ボクセルのジオメトリに関連する物理量を単一のビットとして表す。64個のボクセルのグループに関連する更なるパラメータ、例えば、対応する赤・緑・青(RGB)または他の配色のエンコーディング、透明度、切り捨て符号付き距離関数(TSDF)の情報などがボクセルと関連付けられ、(例えば、2つまたはそれより多くのビットが各ボクセルを表すために使用されるように、)関連付けられたオプションの64ビットデータ構造に格納され得る。係る表現スキームによって、最小メモリ要件が実現され得る。更には、ボクセルを単一のビットで表すと、ボリュメトリック表現の要素を論理的または数学的に組み合わせるための多くの簡略化された計算を実行することができる。ボリュメトリック表現の要素を組み合わせることは、例えば、ボリューム内の平面をOR演算して3Dボリュメトリックデータの2D投影を作成すること、および、とりわけ2.5D多様体で占有されているボクセルの数をカウントすることにより表面積を計算することを含むことができる。比較には、XORロジックを使用して64ビットサブボリューム(例えば、4^3サブボリューム)を比較してよく、ボリュームを反転させることができる。ここでは、数ある例の中でもとりわけ、物体をマージして、それらを一緒にOR演算することによりハイブリッド物体を作成することができる。
【0065】
図1は、急速な頭部の動きに起因する変化と、レンダリングされたグラフィックスにオクルージョンおよびシャドウを生成し得る環境の変化とを考慮するための、ポストレンダリング接続装置を有する並列グラフィックスレンダリングサブシステムおよびコンピュータビジョンサブシステムで構成される従来の拡張または複合現実システムを示す。1つの例示的な実装では、システムは、バス101を介した相互接続、オンチップネットワークオンチップ、または他の相互接続によりグラフィックスパイプライン、コンピュータビジョンパイプライン、およびポストレンダリング補正装置の実行を制御するために、ホストメモリ124によりサポートされるホストプロセッサ100を含むことができる。相互接続によって、適切なソフトウェアを実行するホストプロセッサ100は、グラフィックス処理装置(GPU)106、関連付けられるグラフィックスメモリ111、コンピュータビジョンパイプライン116、および関連付けられるコンピュータビジョンメモリ124の実行を制御することができる。一例では、OpenGLグラフィックスシェーダ107を介したGPU106を使用するグラフィックスのレンダリング(例えば、三角形リスト105上で動作する)が、コンピュータビジョンパイプラインより遅い速度で行われ得る。結果として、グラフィックスがGPU106によりレンダリングされてから発生した可能性がある頭部姿勢およびオクルージョンのシーンジオメトリの変化を考慮するために、ワープエンジン108およびディスプレイ/オクルージョンプロセッサ109を介したポストレンダリング補正を実行することができる。GPU106の出力は、数ある例の中でもとりわけ、頭部姿勢パイプライン120からの正しい制御信号121およびオクルージョンパイプライン122からの正しい制御信号123と併せて使用することで、頭部姿勢119およびオクルージョンジオメトリ113の任意の変化を考慮するための正しいグラフィックス出力を生成できるように、タイムスタンピングされる。
【0066】
GPU106と並行して、複数のセンサおよびカメラ(例えば、深度およびビジョンの処理117のための能動型ステレオカメラおよび受動型ステレオカメラを含む)が、コンピュータビジョンパイプライン116に接続され得る。コンピュータビジョンパイプライン116は、少なくとも3つのステージのうちの1つまたは複数を含んでよく、これらのステージの各々は、下位レベルの処理の複数のステージを含むことができる。一例では、コンピュータビジョンパイプライン116のステージは、画像信号処理(ISP)パイプライン118、頭部姿勢パイプライン120、およびオクルージョンパイプライン122であってよい。ISPパイプライン118は、入力カメラセンサ117の出力を受け取り、それらを調整することで、それらがその後の頭部姿勢およびオクルージョンの処理に使用され得るようにすることができる。頭部姿勢パイプライン120は、ISPパイプライン118の出力を受け取り、それをヘッドセット110内の慣性測定装置(IMU)の出力119と一緒に使用して、対応する出力グラフィックスフレームがGPU106によりレンダリングされてからの頭部姿勢の変化を計算することができる。頭部姿勢パイプライン(HPP)120の出力121は、ユーザ指定のメッシュと共にワープエンジン108に適用されて、GPU出力102を歪めることで、更新された頭部姿勢位置119と一致させることができる。オクルージョンパイプライン122は、頭部姿勢パイプライン121の出力を受け取り、シーンジオメトリ上に対応するシャドウ114を生成するはずである、視野に入る手113(または他の例示的な物体)などの視野内の新しい物体を探すことができる。オクルージョンパイプライン122の出力123は、ワープエンジン108の出力103の上に視野を正確に重ね合わせるために、ディスプレイおよびオクルージョンプロセッサ109により使用され得る。数ある例示的な使用事例および特徴の中でもとりわけ、ディスプレイおよびオクルージョンプロセッサ109は、計算された頭部姿勢119を使用して合成シャドウ114のシャドウマスクを生成し、ディスプレイおよびオクルージョンプロセッサ109は、シャドウマスクの上に手113のオクルージョンジオメトリを合成して、ワープエンジン108の出力103の上にグラフィカルシャドウ114を生成し、拡張/複合現実ヘッドセット110上に表示するための最終出力フレーム104を生成することができる。
【0067】
図2は、本開示の幾つかの実施形態に係るボクセルベースの拡張または複合現実レンダリングシステムを示す。
図2に示す装置は、ホストCPU200および関連付けられるホストメモリ201上に構成されるホストシステムを含むことができる。係るシステムは、バス204、オンチップネットワーク、または他の通信機構を介して、統合されたコンピュータビジョンおよびグラフィックスパイプライン223、並びに、ヘッドマウント型の拡張または複合現実ディスプレイ211上に表示するために最終シーンでレンダリングされる実際のボクセルおよび合成ボクセルを含む、関連付けられる統合されたコンピュータビジョンおよびグラフィックスメモリ213と通信することができる。AR/MRディスプレイ211は、複数の能動型および受動型の画像センサ214と、頭部姿勢222の向きの変化を測定するために使用される慣性測定装置(IMU)212とを含んでもよい。
【0068】
組み合わされたレンダリングパイプラインにおいて、合成ジオメトリは、OpenGL JiT(Just-in-Time)トランスレータ205により処理されて合成ボクセルジオメトリ202を生成する三角形リスト204から開始して生成され得る。合成ボクセルジオメトリは、例えば、三角形リストから三角形の主平面を選択することにより生成され得る。次に、選択された平面内の各三角形の2Dラスタライゼーションが(例えば、X方向およびZ方向に)実行され得る。第3座標(例えば、Y)は、三角形全体にわたって補間される属性として作成され得る。ラスタライズされた三角形の各ピクセルは、対応するボクセルの定義をもたらし得る。この処理は、CPUまたはGPUにより実行され得る。それぞれのラスタライズされた三角形は、GPUにより実行されると、数ある例示的な実装の中でもとりわけ、GPUから読み戻されて、GPUがピクセルを描画したボクセルを作成することができる。例えば、合成ボクセルは、リストの2Dバッファを使用して生成されてよく、リストの各エントリは、そのピクセルでレンダリングされたポリゴンの深度情報を格納する。例えば、正投影の視点(例えば、トップダウン)を使用して、モデルがレンダリングされ得る。例えば、例示的なバッファで提供される全ての(x、y)は、対応するボクセルボリューム内(例えば、(x、y、0)から(x、y、4095)まで)の(x、y)の列を表すことができる。次に、各列は、各リスト内の情報を使用して、3Dスキャンラインとして情報からレンダリングされ得る。
【0069】
図2の例を続けると、幾つかの実装では、合成ボクセルジオメトリ202は、ローカライゼーションおよびマッピングの同時実行(SLAM)パイプライン217を使用して構築される、測定されたジオメトリボクセル227と組み合わされ得る。SLAMパイプラインは、画像信号処理(ISP)パイプライン215を使用して最初に処理される能動型センサおよび/または受動型画像センサ214(例えば、214.1および214.2)を使用して出力225を生成することができ、出力225は、深度パイプライン216により深度画像226に変換され得る。能動型または受動型の画像センサ214(214.1および214.2)は、数ある例の中でもとりわけ、能動型または受動型のステレオセンサ、ストラクチャードライト方式センサ、飛行時間型センサを含むことができる。例えば、深度パイプライン216は、ストラクチャードライト方式または飛行時間型のセンサ214.1、または代わりに、受動型ステレオセンサ214.2からの深度データを処理することができる。1つの例示的な実装では、ステレオセンサ214.2は、数ある例示的な実装の中でもとりわけ、一対の受動型ステレオセンサを含むことができる。
【0070】
深度パイプライン215により生成される深度画像は、SLAMアルゴリズム(例えば、Kinect Fusion)を使用して密なSLAMパイプライン217により処理されて、測定されたジオメトリボクセル227のボクセル化モデルを生成することができる。測定されたジオメトリボクセル227(例えば、実際のボクセルジオメトリ)を合成ボクセルジオメトリ202と組み合わせることで、ディスプレイプロセッサ210を介してディスプレイデバイス(例えば、VRアプリケーションまたはARアプリケーションにおけるヘッドマウント型ディスプレイ211)に出力するためのシーンの2Dレンダリングを生成することができる、レイトレーシングアクセラレータ206が提供され得る。係る実装では、測定されたジオメトリボクセル227および合成ジオメトリ202の実際のボクセルから完全なシーンモデルが構築され得る。結果として、(例えば、
図1のように)2Dレンダリングされたジオメトリをワープする必要はない。係る実装は、頭部姿勢追跡センサと対応するロジックとを組み合わせて、実際のジオメトリと測定されたジオメトリとを正確に位置合わせすることができる。例えば、例示的な頭部姿勢パイプライン221が、ヘッドマウント型ディスプレイ212に装着されたIMU212からの頭部姿勢測定232を処理することができ、頭部姿勢測定パイプラインの出力231は、ディスプレイプロセッサ210を介したレンダリング中に考慮され得る。
【0071】
幾つかの例では、オーディオ残響モデルをレンダリングし、かつ、実世界、仮想、または複合現実のシーンの物理的性質をモデル化すべく、統合されたレンダリングパイプラインが、測定されたジオメトリボクセル227(例えば、実際のボクセルモデル)および合成ジオメトリ202(例えば、合成ボクセルモデル)を使用してもよい。例として、物理パイプライン218は、測定されたジオメトリボクセル227および合成ボクセルジオメトリ202を受け取り、レイキャスティングアクセラレータ206を使用してヘッドマウント型ディスプレイ(HMD)211内の左右のイヤホンに関する出力オーディオサンプルを計算することで、ボクセルデータ構造に組み込まれた音響反射係数を使用して出力サンプル230を計算することができる。同様に、202および227で構成される統合されたボクセルモデルを使用して、合成AR/MRシーン内の合成物体の物理的更新を決定することもできる。物理パイプライン218は、合成シーンジオメトリを入力として受け取り、レンダリングのために、かつ、物理モデルの将来の反復の基礎として、合成ジオメトリ202への更新228を計算する前に、レイキャスティングアクセラレータ206を使用して衝突を計算する。
【0072】
幾つかの実装では、
図2に示すシステムなどのシステムは更に、数ある例の中でもとりわけ、ISPパイプライン215の出力からのRGB映像/画像入力、SLAMパイプライン217の出力からのボリュメトリックシーンデータの何れかを処理できる、畳み込みニューラルネットワーク(CNN)を実装および/または利用するための1つまたは複数のハードウェアアクセラレータを備えてよい。ハードウェア(HW)畳み込みニューラルネットワーク(CNN)アクセラレータ207を排他的に使用して、または、プロセッサとHW CNNアクセラレータ207との組み合わせでニューラルネットワーク分類器を実行して、出力分類237を生成することができる。ボリュメトリック表現を推論するためのHW CNNアクセラレータ207の利用可能性によって、数ある例示的な使用の中でもとりわけ、測定されたジオメトリボクセル227内のボクセルのグループを、特定の物体クラスに属するものとしてラベル付けすることが可能になり得る。
【0073】
ボクセルにラベル付けする(例えば、CNNを使用し、ハードウェアアクセラレーションをサポートする)と、これらのボクセルが属するこれらの物体が、既知の物体に対応するものとしてシステムにより認識されることが可能になり得る。ソースボクセルは、測定されたジオメトリボクセル227から除去され、物体に対応する境界ボックス、および/または、数ある例示的な情報の中でもとりわけ、物体の原点、物体の姿勢、物体記述子に関する情報に置き換えられ得る。これによって、例えば、数ある例示的な使用の中でもとりわけ、シーン内の物体と相互作用するロボット、ドローン、または他のコンピューティングシステムによる入力として、または、シーン内の物体の吸音係数を調べてそれらをシーンの音響モデルに反映するオーディオシステムによる入力として使用され得る、はるかにより意味論的に意味のあるシーンの説明が得られることがある。
【0074】
図2で図示および説明する例示的なシステムのパイプラインを実装するために、1つまたは複数のプロセッサデバイスおよびハードウェアアクセラレータが提供され得る。幾つかの実装では、数ある例示的な実装の中でもとりわけ、組み合わされたレンダリングパイプラインのハードウェア要素およびソフトウェア要素の全てが、DRAMコントローラ209へのアクセスを共有することができ、DRAMコントローラ209は次に、共有DDRメモリデバイス208にデータを格納できるようにする。
【0075】
図3は、幾つかの実施形態に係る密なボリュメトリック表現と疎なボリュメトリック表現との違いを示すために提示されている。
図3の例に示すように、実世界または合成の物体300(例えば、ウサギの像)は、ボクセルの観点から、302に示すような密な方式、または、304に示すような疎な方式で表現され得る。302などの密な表現の利点は、ボリューム内の全てのボクセルへのアクセス速度が均一であることだが、欠点は、必要となり得るストレージの量である。例えば、512^3要素のボリューム(例えば、Kinectセンサを使用してスキャンされるボリュームに対する1cmの解像度で5mに対応する)などの密な表現の場合は、ボクセルごとに4バイトの切り捨て符号付き距離関数(TSDF)を用いて相対的に小さなボリュームを格納するための512メガバイト。一方、疎な表現を具現化するオクツリー表現304は、実世界のシーンに実際のジオメトリが存在するこれらのボクセルのみを格納することにより、同じボリュームを格納するために必要なデータ量を減らすことができる。
【0076】
図4を参照すると、幾つかの実施形態に係る例示的なシーンの合成図が示されている。特に、
図4は、合成ボクセルデータおよび実世界のボクセルデータについて、同等の境界ボックス400および402内にそれぞれある合成ボクセル401および測定された実世界のボクセル403を表すために、並列データ構造を使用して、シーン404の合成図を維持するか、表示するか、または更なる処理にかけ得る方法を示す。
図5は、幾つかの実施形態に係る均一な4^3要素ツリー構造の詳細レベルを示す。幾つかの実装では、
図5の例に表されているようなオクツリー表現を使用して、ボリューム内の各ボクセルを記述するために、わずか1ビットが利用され得る。ただし、オクツリーベースの技術の欠点は、オクツリー内の特定のボクセルにアクセスするために利用される間接的なメモリアクセスの数であり得る。スパースボクセルオクツリーの場合は、数ある例示的な利点の中でもとりわけ、同じジオメトリを有利にも複数の詳細レベルで暗黙的に表すことができるので、レイキャスティング、ゲーム物理学、CNN、および他の技術などの操作が可能になり、シーンの空の部分を更なる計算からカリングすることで、必要なストレージだけでなく、消費電力および計算負荷の観点からも全体的な削減をもたらすことが可能になる。
【0077】
一実装では、改善されたボクセル記述子(本明細書では「ボリュメトリックデータ構造」とも呼ばれる)を提供して、ボリュメトリック情報を、ボクセルあたり1ビットのメモリ要件で501に示すような4^3(または64ビット)の符号なし整数として編成することができる。この例では、ボクセルあたり1ビットでは、(64ビットを利用するSLAMbench/KFusionにおけるTSDFと比較して、)切り捨て符号付き距離関数値を格納するのに不十分である。本例では、更なる(例えば、64ビット)フィールド500がボクセル記述子に含まれ得る。この例は、64ビットフィールド500のTSDFを16ビットとする一方で、x、y、およびzにおける更なる2ビットの分数型分解能(fractional resolution)をボクセル記述子501に暗黙的に提供して、64ビットフィールド500のボクセルTSDFとボクセル位置501との組み合わせを、SLAMbench/KFusionまたは他の例で使用されているようなはるかに高い解像度のTSDFと同等にすることができるように、更に強化され得る。例えば、64ビットフィールド500(ボクセル記述子)の更なるデータは、それぞれが1バイトである(例えば、受動型のRGBセンサを介したシーンからの)サブサンプリングされたRGB色情報と、8ビットの透明度値アルファと、2つの1バイトの予約フィールドR1およびR2とを格納するために使用され得る。これらの予約フィールドは、特定用途向けであってよく、例えば、数ある例の中でもとりわけ、オーディオアプリケーションの音響反射率、物理アプリケーションの剛性、対象材料のタイプを格納するために使用され得る。
【0078】
図5に示すように、ボクセル記述子501は、4つの2D平面に論理的にグループ化され得る。これらの2D平面の各々は、16個のボクセル502を含む。これらの2D平面(またはボクセル平面)は、
図5に表すように、4の昇累乗での連続分解に基づいて、オクツリースタイル構造の各レベルを記述することができる。この例示的な実装において、64ビットのボクセル記述子が選択されるのは、それが、対応するシステム実装で使用される64ビットのバスインフラストラクチャに適しているからである(ただし、他のボクセル記述子のサイズおよび形式が、他のシステム実装で提供され、バスまたはシステムの他のインフラストラクチャに従ってサイズ設定され得る)。幾つかの実装では、ボクセルを取得するために使用されるメモリアクセスの数を減らすように、ボクセル記述子がサイズ設定され得る。例えば、数ある例示的な検討事項および実装の中でもとりわけ、64ビットのボクセル記述子を使用することで、2^3要素で動作する従来のオクツリーと比較して、オクツリー内の任意のレベルでボクセルにアクセスするために必要なメモリアクセスの数を1/2に減らすことができる。
【0079】
一例では、オクツリーは、4^3のルートボリューム503と、下にある層504、505、および506におけるジオメトリの存在に関するコードが例示的な256^3ボリュームに示されている、それぞれの0でないエントリとから開始して記述され得る。この特定の例では、オクツリーにおける最下位レベルにアクセスすべく、4つのメモリアクセスが使用され得る。係るオーバヘッドが高過ぎる場合は、507に示すように、代替アプローチを採用して、オクツリーの最上位レベルを、64^3などのより大きなボリュームとしてエンコードすることができる。この場合は、507におけるそれぞれの0でないエントリは、下にある256^3ボリューム508における下にある4^3オクツリーの存在を示してよい。この代替編成の結果、503、504、および505に示す代替定式化と比較して、256^3ボリューム508内の任意のボクセルにアクセスするために必要なメモリアクセスは2つのみである。この後者のアプローチは、オクツリー構造をホストするデバイスがより大量の組み込みメモリを有することで、外部メモリ内のボクセルオクツリー508のより低くアクセス頻度の低い部分のみが許可される場合に有利である。このアプローチは、例えば、フルでより大きな(例えば、64^3)ボリュームがオンチップメモリに格納される場合に、ストレージの観点からより多くのコストがかかることがあるが、トレードオフによって、数ある例示的な利点の中でもとりわけ、メモリアクセスの高速化(例えば、2倍)および消費電力の大幅な削減が可能になり得る。
【0080】
図6を参照すると、幾つかの実施形態に係る、本願のデータ構造およびボクセルデータを利用できる例示的な用途を示したブロックダイアグラムが示されている。
図5に示すもののような一例では、例示的なボクセル記述子500を介して更なる情報が提供され得る。ボクセル記述子は、利用されるメモリ全体をボクセルあたり2ビットに増加させることができるが、ボクセル記述子は、
図6に表すようなボクセルデータを使用できる広範囲の用途を可能にし得る。例えば、数ある実装の中でもとりわけ、密なSLAMシステム601(例えば、SLAMbench)を使用して生成されるような共有ボリュメトリック表現602が、オーディオレイキャスティング604で使用されるグラフィックレイキャスティングまたはレイトレーシング603を使用してシーンをレンダリングする際に使用され得る。更に他の例では、ボリュメトリック表現602は、畳み込みニューラルネットワーク(CNN)推論605で使用されてもよく、クラウドインフラストラクチャ607によりバックアップされ得る。場合によっては、クラウドインフラストラクチャ607は、推論を介してアクセスされ得る、木、家具、または他の物体(例えば、606)などの物体の詳細なボリュメトリック記述子を含むことができる。物体の推論、またはそうでなければ識別に基づいて、対応する詳細な記述子がデバイスに返され得ることから、ボリュメトリック表現602のボクセルを、数ある例示的な特徴の中でもとりわけ、姿勢情報と物体の特性を含む記述子とを有する境界ボックス表現に置き換えることができる。
【0081】
更に他の実施形態では、上記のボクセルモデルは、ボリュメトリック表現602からの3Dから2Dへの投影を使用して例示的な環境608の2Dマップを構築するために、幾つかのシステムで更にまたは代替的に利用され得る。これらの2Dマップは再び、クラウドインフラストラクチャおよび/または他のネットワークベースのリソース607を介して通信機械経由で共有され、クラウドソーシング技術を使用してより高品質のマップを構築するために(例えば、同じクラウドインフラストラクチャを使用して)集約され得る。これらのマップは、接続された機械およびデバイスに対してクラウドインフラストラクチャ607により共有され得る。なおも更なる例では、2Dマップは、(例えば、車両またはロボットの幅および高さが固定されているものと仮定すると、)投影とそれに続く区分的簡略化609とを使用して、超低帯域幅の用途向けに改良され得る。次に、簡略化された経路は、経路の区分的線形セグメントごとに単一のX、Y座標系対のみを有することから、車両609の経路をクラウドインフラストラクチャ607に伝えるために必要とされ、かつ、クラウドソーシング技術を使用してより高品質のマップを構築するために、その同じクラウドインフラストラクチャ607に集約される、帯域幅の量を減らすことができる。これらのマップは、接続された機械およびデバイスに対してクラウドインフラストラクチャ607により共有され得る。
【0082】
これらの異なる用途を有効にすべく、幾つかの実装では、共有ソフトウェアライブラリなどを介して共通の機能を提供することができ、幾つかの実施形態では、数ある例の中でもとりわけ、ハードウェアアクセラレータまたはプロセッサ命令セットアーキテクチャ(ISA)拡張を使用して共通の機能を加速することができる。例えば、係る機能は、記述子へのボクセルの挿入、ボクセルの削除、またはボクセル610の検索を含むことができる。幾つかの実装では、数ある例の中でもとりわけ、ボリューム630からの点/ボクセルの削除だけでなく、衝突検出機能620もサポートされ得る。上で紹介したように、システムは、対応するボリュメトリック表現602(3Dボリューム)からX、Y、およびZ方向に2D投影640を素早く生成する機能を備えてよい(例えば、これは、経路または衝突の決定の基礎として役立ち得る)。場合によっては、ヒストグラムピラミッド650を使用してボリュメトリック表現602から三角形リストを生成できることも有利であり得る。更に、システムは、ボリュメトリック空間602の2D表現および3D表現における自由経路660の高速決定のための機能を備えてよい。係る機能は、様々な用途において有用であり得る。数ある例の中でもとりわけ、ボリューム内のボクセルの数を精緻化する、ポピュレーションカウンタを使用して物体の表面を決定することでボリュメトリック表現602のマスクされた領域内の1ビットの数をカウントするなどの更なる機能が提供され得る。
【0083】
図7の簡略ブロックダイアグラムを参照すると、少なくとも幾つかの実施形態に係る3D数字を認識する機能を備えたシステムを含む例示的なネットワークが示されている。例えば、
図6に示す用途のうちの1つは、
図7でより詳細に説明するボリュメトリックCNNアプリケーション605である。
図7では、例示的なネットワークを使用して、混合された米国立標準技術研究所(MNIST)のデータセットなどのデータセットから生成された3D数字700を認識する。係るデータセット内の数字は、トレーニング前にX、Y、およびZにおける適切な回転および並進を数字に適用することにより、CNNベースの畳み込みネットワーク分類器710をトレーニングするために使用され得る。トレーニングされたネットワーク710は、組み込みデバイスでの推論に使用される場合、数ある例の中でもとりわけ、数字がX、Y、およびZにおける回転および並進の対象になる場合でもシーン内の3D数字を高精度に分類すること720に使用され得る。幾つかの実装では、CNN分類器の動作は、
図2に示すHW CNNアクセラレータ207により加速され得る。ニューラルネットワークの第1層は、ボリュメトリック表現602のボクセルを使用して乗算を実行する。そのため、0による乗算は常に0であり、データ値Aによる1(ボクセル)による乗算はAに等しくなるので、これらの算術演算を省略することができる。
【0084】
図8は、暗黙の詳細レベルを使用して同じデータ構造に対して実行される複数の分類を示す。ボリュメトリック表現602を使用したCNN分類の更なる改良は、オクツリー表現が、
図5に示すように、複数の詳細レベルをオクツリー構造に暗黙的に含むことから、暗黙の詳細レベル800、810、および820を並行して使用して、かつ、
図8に示すような単一の分類器830または複数の分類器を並行して使用して、同じデータ構造に対する複数の分類を実行できることであってよい。従来のシステムでは、分類パス間で画像のサイズ変更が必要になるため、同等の並列分類が遅くなり得る。係るサイズ変更は、同じオクツリーが複数の詳細レベルで同じ情報を含み得ることから、本明細書に記載のボクセル構造を適用する実装では割愛され得る。実際、ボリュメトリックモデルに基づく単一のトレーニングデータセットは、従来のCNNネットワークで必要とされるようなサイズ変更されたトレーニングデータセットではなく、これらの詳細レベルの全てをカバーすることができる。
【0085】
図9の例を参照すると、幾つかの実施形態に係る2D CNNによる例示的な演算排除が示されている。演算排除は、
図9に示すような2D CNNだけでなく、3DボリュメトリックCNNでも使用され得る。例えば、
図9では、第1層において、ビットマップマスク900が、入力910の予想される「形状」を記述するために使用されてよく、着信映像ストリーム920に適用されてよい。一例では、演算排除は、3DボリュメトリックCNNだけでなく、2DボリュメトリックCNNでも使用され得る。例えば、
図9の例の2D CNNでは、ビットマップマスク900が、入力910の予想される「形状」を記述するために、CNNの第1層に適用されてよく、着信映像ストリーム820などのCNNの入力データに適用されてよい。例として、
図9には、CNNネットワークにおけるトレーニングまたは推論のためにビットマップマスクを歩行者の画像に適用する効果が示されている。ここでは、901が歩行者901の元の画像を表し、903が、ビットマップマスクが適用された対応するバージョンを表す。同様に、902には、歩行者を含まない画像が示され、904には、対応するビットマップマスクバージョンが示されている。検出器により予想される、予想された2Dまたは3Dジオメトリの知識を通じてCNNのトレーニングまたは推論に必要な演算の数を減らすべく、同じ方法を任意の種類の2Dまたは3D物体に適用することができる。911には、3Dボリュメトリックビットマップの例が示されている。920には、実際のシーンにおける推論のための2Dビットマップの使用が示されている。
【0086】
図9の例示的な実装では、概念的なビットマップが(900に)示され、実際のビットマップは、特定のクラスの物体910に関する一連のトレーニング画像を平均化することにより生成される。示されている例は二次元であるが、ボクセルあたり1ビットの提案されたボリュメトリックデータ形式で、3D物体に対する同様のビットマップマスクを生成することもできる。実際、数ある例示的な実装の中でもとりわけ、方法は、ボクセル/ピクセルごとに更なるビットを使用して、2Dまたは3D物体の予想される色の範囲または他の特性を指定するように、潜在的に拡張されてもよい。
【0087】
図10は、幾つかの実施形態に係る、10,000個のCIFAR-10テスト画像の分析を含む例示的な実験の結果を示した表である。幾つかの実装では、演算排除を使用して、
図10に示すLeNet1000などのCNNネットワークで頻繁に行われる正規化線形ユニット(ReLU)演算に起因する1D、2D、および3D CNNにおける中間計算を排除することができる。
図10に示すように、10,000個のCIFAR-10テスト画像を使用する実験では、ReLUユニットにより生成されるデータ依存0の割合が最大85%に達することがある。つまり、0の場合は0を認識し、かつ、それに応じて、対応するデータのフェッチも対応する乗算演算の実行も行わない、システムが提供され得る。この例では、85%は、修正された米国立標準技術研究所(MNIST)のテストデータセットから生成されたReLU動的0の割合を表す。これらの0に対応する、対応する演算排除は、数ある例示的な利益の中でもとりわけ、消費電力およびメモリ帯域幅の要件を減らすのに役立ち得る。
【0088】
些細な演算は、ビットマップに基づいてカリングされ得る。例えば、係るビットマップの使用は、参照により全体が本明細書に組み込まれる「Circuit for compressing data and a processor employing the same」と題する米国特許第8,713,080号に記載および図示されている原理および実施形態に従ったものであってよい。幾つかの実装は、同様に参照により全体が本明細書に組み込まれる「Hardware for performing arithmetic operations」と題する米国特許第9,104,633号に記載および図示されているシステム、回路、および、他の実装など、係るビットマップを使用できるハードウェアを提供してよい。
【0089】
図11は、幾つかの実施形態に係る、ビットマップに基づいて些細な演算をカリングするための機能を提供すべくシステムに組み込まれ得るハードウェアを示す。この例では、繰り返される畳み込み層を含む多層ニューラルネットワークが提供される。ハードウェアは、1つまたは複数のプロセッサ、1つまたは複数のマイクロプロセッサ、1つまたは複数の回路、および1つまたは複数のコンピュータなどを含むことができる。この特定の例では、ニューラルネットワークは、最初の畳み込み処理層1100、それに続くプーリング処理1110、そして最後に、正規化線形ユニット(ReLU)関数1120などの活性化関数処理を含む。ReLU出力ベクトル1131を提供するReLUユニット1120の出力は、ReLU出力ベクトル1131を受信する次の畳み込み処理層1180に(例えば、場合によっては遅延1132を介して)接続され得る。1つの例示的な実装では、次の畳み込みユニット1180へのReLUユニット1120の接続と並行して、ReLUビットマップ1130が生成されてもよく、ReLUビットマップ1130は、ReLU出力ベクトル1131内のどの要素が0であり、どの要素が0でないかを表す。
【0090】
一実装では、ニューラルネットワークの計算に含まれる演算を排除する機会を有効なハードウェアに通知するために、ビットマップ(例えば、1130)が生成されるか、またはそうでなければ提供され得る。例えば、ReLUビットマップ1130内のビットは、ビットマップスケジューラ1160により解釈され得る。ビットマップスケジューラ1160は、0による乗算で常に0が出力として生成されると仮定すると、次の畳み込みユニット1180内の乗算器に、対応するバイナリ0がReLUビットマップ1130に存在する、ReLU出力ベクトル1131の0エントリを省略するように命令する。並行して、ReLUビットマップ1130内の0に対応するデータ/重みに対するアドレス生成器1140からのメモリフェッチも、次の畳み込みユニット1180により省略されることになる重みをフェッチする価値がほとんどないことから省略され得る。取り付けられたDDR DRAMストレージデバイス1170からDDRコントローラ1150を介して重みがフェッチされる場合は、待ち時間が非常に長いことから、一部のオンチップ帯域幅および関連する消費電力を節約することしかできないことがある。一方、重みがオンチップRAM1180ストレージからフェッチされる場合は、特に、RAM/DDRフェッチ遅延1132に対応する遅延が次の畳み込みユニット1180への入力で追加される場合に、重みフェッチ操作全体を回避/省略することが可能になり得る。
【0091】
図12を参照すると、幾つかの実施形態に係る、些細な演算をカリングする(または演算排除を実行する)ための回路および他のロジックを備えた例示的なハードウェアの改良を示すために、簡略ブロックダイアグラムが提示されている。
図12の例に示すように、更なるハードウェアロジックが、すぐ前の最大プーリングユニット1210または畳み込みユニット1200からのReLUユニット1220入力の符号を事前に予測するために提供され得る。符号予測およびReLUビットマップ生成を最大プーリングユニット1210に追加することで、ReLUビットマップ情報をタイミングの観点からより早く予測して、アドレス生成器1240を介して発生し得る遅延を、外部DDRコントローラ1250およびDDRストレージ1270または内部RAMストレージ1271を介してカバーすることが可能になり得る。遅延が十分に小さい場合は、メモリからのフェッチの結果が決して使用されないと決定できることから、ReLUビットマップをアドレス生成器1240で解釈することができ、ReLUビットマップ0と関連付けられるメモリフェッチを完全に省略することができる。
図11のスキームに対するこの修正によって、数ある例示的な特徴および機能の中でもとりわけ、更なる電力を節約することができ、DDRアクセス経路(例えば、1240から1250まで、1250から1270まで)またはRAMアクセス経路(例えば、1240から1271まで)を通じた遅延が遅延ステージ1232を保証しないだけの十分な小ささである場合は、次の畳み込みユニット1280への入力で遅延ステージ(例えば、1132、1232)を除去することも可能になり得る。
【0092】
図13は、幾つかの実施形態に係る例示的なハードウェアを示した別の簡略ブロックダイアグラムである。例えば、CNN ReLU層は、負の入力に対応する多数の出力0を生成することができる。実際、負のReLU入力は、前の層(例えば、
図13の例におけるプーリング層)への符号入力を見ることにより予測的に決定され得る。浮動小数点および整数演算は、最上位ビット(MSB)の観点から明示的に符号付けされ得る。そのため、畳み込み層で乗算される入力のベクトル全体にわたる単純なビット単位の排他的OR(XOR)演算によって、どの乗算が
図13に示すような出力0を生成するかを予測することができる。結果として得られる符号予測されたReLUビットマップベクトルは、上記の他の例で説明した方式などで、乗算のサブセットと、関連付けられる係数のメモリからの読み取りとを決定して排除するための基礎として使用され得る。
【0093】
前のプーリングステージまたは畳み込みステージ(すなわち、対応するReLUステージの前のステージ)に戻るReLUビットマップの生成を提供すると、更なる電力が生じ得る。例えば、ReLU活性化ロジックにより最終的に0に設定される負の出力を生成するときに乗算器を無効にするために、符号予測ロジックが提供され得る。例えば、これは、乗算器1314入力1301および1302の2つの符号ビット1310および1315がXORゲートにより論理的に組み合わされて、PreReLUビットマップビット1303を形成する場合に示される。この同じ信号は、乗算器1314の動作を無効にするために使用され得る。そうでなければ、数ある例の中でもとりわけ、次の畳み込みステージ1390で乗算のために入力される前に、ReLUロジックにより0に設定されるであろう負の出力を生成するエネルギーが不必要に消費されるであろう。
【0094】
なお、1300、1301、1302、および1303の表現(表記A)は、
図13のBに与えられた表現に示されているものの上位レベルのビューを示す。この例では、ブロック1302への入力は、2つの浮動小数点オペランドを含むことができる。入力1301は、明示的な符号ビット1310と、複数のビットを含む指数1311と、先と同様に複数のビットを含む仮数1312とを含むことができる。同様に、入力1302は同様に、符号1315と、仮数1317と、指数1316とを含むことができる。幾つかの実装では、結果1303の符号が、1301および1302の符号、または、1310および1315の符号にのみそれぞれ依存していることから、仮数および指数の精度が異なり得る。実際、1301も1302も浮動小数点数である必要はないが、それらが符号付きの数であり、かつ、最上位ビット(MSB)が事実上、明示的または暗黙的に符号ビットである限り(例えば、数が1または2の補数である場合など)、任意の整数または固定小数点形式であってよい。
【0095】
図13の例を続けると、2つの符号入力1310および1315は、XOR(本明細書では代替的にExORまたはEXORと表すこともある)ゲートを使用して組み合わされることで、ビットマップビット1303を生成してよく、次に、ビットマップビット1303は、ハードウェアを使用して処理されることで、次の畳み込みブロック(例えば、1390)で省略され得る下流の乗算を識別してよい。2つの入力番号1313(例えば、1301に対応する)および1318(例えば、1302に対応する)が反対の符号を有し、かつ、ReLUブロック1319により0に設定されるであろう負の出力1304を生成することで、次の畳み込みステージ1390に入力されるReLU出力ベクトル13191に0値がもたらされる場合は、同じXOR出力1303を使用して、乗算器1314を無効にすることもできる。故に、幾つかの実装では、PreReLUビットマップ1320は、並行して、ビットマップスケジューラ1360に伝送されてよく、ビットマップスケジューラ1360は、畳み込みユニット1390上で実行(および/または省略)される乗算をスケジューリングしてよい。例えば、ビットマップ1320内の全ての0について、対応する畳み込み演算が、畳み込みユニット1390において省略され得る。並行して、ビットマップ1320は、畳み込みユニット1390で使用するための重みのフェッチを制御する例示的なアドレス生成器1330により消費され得る。ビットマップ1320内の1に対応するアドレスのリストは、アドレス生成器1330でコンパイルされてよく、DDRコントローラ1350を介してDDRストレージ1370への経路を制御するか、さもないと、オンチップRAM1380への経路を制御する。何れの場合も、数ある例の中でもとりわけ、PreReLUビットマップ1320内の重みに対応する重みは、フェッチされ、畳み込みブロック1390に(例えば、重み入力1371へのクロックサイクルの観点から幾らかの待ち時間の後に)提示され得るが、0に対応する重みのフェッチは省略され得る。
【0096】
上記のように、幾つかの実装では、遅延(例えば、1361)をビットマップスケジューラ1360と畳み込みユニット1390との間に挿入して、アドレス生成器1330、DDRコントローラ1350、およびDDR1350を介した遅延のバランス、または、アドレス生成器1330および内部RAM1380を介した経路のバランスをとってよい。遅延は、ビットマップスケジューラにより駆動される畳み込みが、畳み込みユニット1390における畳み込み計算に関する対応する重みに合わせて正確に整列することを可能にし得る。実際、タイミングの観点から、ReLUブロック1319の出力より早くReLUビットマップを生成することで、更なる時間を獲得することが可能になり得る。この更なる時間は、メモリ(例えば、RAM1380またはDDR1370)への読み取りを、それらがアドレス生成器1330により生成される前に傍受(intercept)するために使用されてよく、その結果、(例えば、0に対応する)読み取りのうちの幾つかが割愛され得る。メモリの読み取りはチップ上の論理演算よりもはるかに高くなることがあるので、係るメモリフェッチを除外すると、数ある例示的な利点の中でもとりわけ、非常に大幅なエネルギー節約につながり得る。
【0097】
幾つかの実装では、DRAMアクセス時間をカバーするための節約がクロックサイクルの観点から依然として不十分である場合は、ブロック指向の技術を使用して、DDRから符号ビットのグループ(例えば、1301)を前もって読み取ることができる。符号ビットのこれらのグループは、(例えば、数ある例の中でもとりわけ、2Dまたは3Dアレイ/行列間の2Dまたは3D畳み込みにおける符号ビット間の差を計算するための)(複数の)XORゲート1300の組を使用してPreReLUビットマップのブロックを生成すべく、入力画像または中間畳み込み層1302からの符号のブロックと共に使用され得る。係る実装では、DDRまたはオンチップRAMに更なる1ビットのストレージを提供して各重みの符号を格納できるが、これによって、0で乗算されることになるDDRまたはRAMからの重みをReLUステージから読み取ることを回避するように、多くの待ち時間サイクルをカバーすることが可能になり得る。幾つかの実装では、DDRまたはオンチップRAMにおける重みごとの更なる1ビットのストレージは、数ある例示的な検討事項および実装の中でもとりわけ、指数および仮数から独立してアドレス指定できるように符号が格納されることから、回避され得る。
【0098】
幾つかの実装では、上記のようなモデルを含む機械学習モデルをトレーニングするために、容易に利用可能なトレーニングセットにアクセスするのが特に難しいことがある。実際、場合によっては、トレーニングセットは、数ある例示的な問題の中でもとりわけ、特定の機械学習アプリケーション向けに存在していないか、または、トレーニング対象となるモデルの入力を生成するセンサのタイプに対応していないことがある。幾つかの実装では、合成トレーニングセットを開発して、ニューラルネットワークまたは他の深層強化学習モデルをトレーニングするために利用することができる。例えば、特定の人物、動物、物体、製品などの数百または数千の画像で構成されるトレーニングデータセットを取得または撮像するのではなく、被写体の合成3D表現を手動で(例えば、グラフィックデザインまたは3D写真編集ツールを使用して)または自動的に(例えば、3Dスキャナを使用して)生成することができ、結果として得られる3Dモデルは、3Dモデルの被写体に関連するトレーニングデータを自動的に生成するための基礎として使用され得る。このトレーニングデータを他のトレーニングデータと組み合わせて、少なくとも部分的に合成トレーニングデータで構成されるトレーニングデータセットを形成することができ、このトレーニングデータセットを利用して、1つまたは複数の機械学習モデルをトレーニングすることができる。
【0099】
例として、本明細書で紹介するような深層強化学習モデルまたは他の機械学習モデルを使用して、自律型機械が、店舗、倉庫、または別の企業の棚をスキャンして、店舗内の特定の製品の在庫を評価することを可能にし得る。故に、機械学習モデルは、自律型機械が個々の製品を検出できるようにトレーニングされ得る。場合によっては、機械学習モデルは、棚にある製品を識別することができるだけでなく、(例えば、深度モデルを使用して)棚にある製品の数も識別することができる。店舗が扱い得るありとあらゆる製品、および、製品のありとあらゆる構成(例えば、様々なディスプレイ、様々な照明における製品の各姿勢またはビュー(全部および一部)、製品パッケージの様々な向きのビューなど)について、(例えば、同じ店舗または異なる店舗からの)一連の実世界の画像を用いて機械学習モデルをトレーニングするのではなく、(例えば、製品のプロバイダ、機械学習モデルのプロバイダ、または別のソースにより、)各製品(またはこれらの製品のうちの少なくとも幾つか)の合成3Dモデルが生成され得る。3Dモデルは、その詳細および解像度がフォトリアリスティックな品質またはそれに近い品質であってよい。3Dモデルは、数ある例示的な用途の中でもとりわけ、所与の被写体(例えば、製品)、または更には、異なる被写体の集まり(例えば、様々な組み合わせの製品が、異なる照明の中、異なる向きで、隣り合わせに配置されている、店舗棚上の製品の集まりなど)の様々な異なるビューを生成して、一組の合成トレーニングデータ画像を生成するために、他の3Dモデルと共に消費用に提供され得る。
【0100】
図14を参照すると、1つまたは複数の機械学習モデル(例えば、1435)(深層強化学習モデル、シャムニューラルネットワーク、畳み込みニューラルネットワーク、および他の人工ニューラルネットワークなど)をトレーニングするために機械学習システム1430により使用される合成トレーニングデータを生成するためのトレーニングセット生成器1420を実装する例示的なコンピューティングシステム(例えば、1415)の簡略ブロックダイアグラム1400が示されている。例えば、3Dスキャナ1405または他のツールを使用して、(例えば、人物、内部および/または外部アーキテクチャ、景観要素、製品、家具、輸送要素(例えば、道路標識、自動車、トラフィックハザードなど)、および他の例の)3Dモデル1410の組を生成することができ、これらの3Dモデル1410は、トレーニングセット生成器1420を入力として提供することにより消費され得る。幾つかの実装では、トレーニングデータ生成器1420は、3Dモデル1410から、3Dモデル1410からの一組のトレーニング画像、点群、深度マップ、または、他のトレーニングデータ1425を自動的にレンダリングすることができる。例えば、トレーニングセット生成器1420は、幾つかの様々な画像を撮像することで被写体を撮像するための「完全」かつ多様な画像の集まりを満たすべく、3Dモデルを自動的に傾斜、回転、およびズームし、かつ、結果として得られる異なる向きおよび姿勢で、かつ、異なる(例えば、コンピュータシミュレートされた)照明の中で、画像に撮像される3Dモデルの被写体全体の全部または一部などを用いて、3Dモデルの画像の集まりを撮像するようにプログラム的に構成され得る。
【0101】
幾つかの実装では、3Dモデルから生成される合成トレーニング画像は、それらの基となる実際の被写体に匹敵するフォトリアリスティックな解像度を有し得る。場合によっては、トレーニングセット生成器1420は、(高解像度3Dモデルと比較して、)結果として得られる画像の解像度および品質を意図的にダウングレードする方式で、画像または他のトレーニングデータを3Dモデルから自動的にレンダリングまたは生成するように構成可能であってよい。例えば、画像の品質は、画像を、トレーニング対象となる機械学習モデルへの入力を提供することが期待されるセンサ(例えば、3Dスキャナ、カメラなど)により生成され得るものと同等の品質レベルにするための、数ある調節の中でもとりわけ、ノイズを追加することと、フィルタ(例えば、ガウスフィルタ)を適用することと、1つまたは複数のレンダリングパラメータを調節して、ノイズの導入、コントラストの低下、解像度の低下、輝度レベルの変更を行うこととにより、劣化させることができる。
【0102】
特に深層ニューラルネットワークをトレーニングするためにデータセットを構築する場合は、トレーニングセット生成器システムにより、幾つかの異なる条件またはルールが定義および検討され得る。例えば、CNNは従来、正確な結果を生成するためのトレーニングに大量のデータを必要とする。合成データは、利用可能なトレーニングデータセットが小さ過ぎる場合を回避することができる。故に、特定の機械学習モデルについて、目標数のトレーニングデータサンプルが識別されてよく、トレーニングセット生成器は、所望の量のトレーニングサンプルを満たすために生成されるトレーニングサンプルの量およびタイプに基づいたものであってよい。更には、サンプルのばらつきが閾値を超えているセットを生成するための条件が、トレーニングセット生成器により設計および検討され得る。これは、機械学習モデルの過剰適合を最小限に抑え、非常に多様な多数のシナリオで適切に実行するために必要な一般化を提供するためである。係るばらつきは、数ある例の中でもとりわけ、3Dモデルから個々のサンプルを生成するために使用されるカメラの角度、カメラの高さ、視野、照明条件などといったトレーニングセット生成器により適用される調節可能なパラメータを通じて実現され得る。
【0103】
幾つかの実装では、センサの特定のタイプまたはモデル(例えば、特定の2Dまたは3Dカメラ、LIDARセンサなど)の態様を定義するセンサモデル(例えば、1440)が提供され得る。モデル1440は、生画像、点群、または他のトレーニングデータ(例えば、3Dモデルから生成される)に対して行われるフィルタおよび他の修正を定義して、モデル化されたセンサにより生成されるデータ(例えば、解像度、グレアに対する脆弱性、明暗に対する感度、ノイズに対する脆弱性など)をシミュレートする。このような場合は、トレーニングセット生成器は、3Dモデルから生成されるサンプルを人為的に劣化させて、モデル化されたセンサにより生成される同等の画像またはサンプルを模倣することができる。このようにして、トレーニングされた機械学習モデルに入力されるデータと品質が同等である合成トレーニングデータのサンプルが(例えば、センサの実世界のバージョンにより生成されるように)生成され得る。
【0104】
図15を参照すると、合成トレーニングデータの例示的な生成を示したブロックダイアグラム1500が示されている。例えば、特定の被写体の3Dモデル1410が生成され得る。3Dモデルは、被写体の真に迫った表現またはフォトリアリスティックな表現であってよい。
図15の例では、モデル1410は、一組のガラスボトルを含む段ボールパッケージを表す。画像の集まり(例えば、1505)が、3Dモデル1410に基づいて生成されてよく、多様な照明、環境、条件(例えば、使用中/静止中、開閉、損傷など)における3Dモデルのビューを含む、3Dモデル1410の様々なビューを撮像する。画像1505の集まりは、例示的なトレーニングデータ生成器のセンサフィルタ(例えば、センサモデルで定義される)を使用して処理され得る。画像1505の処理によって、画像1505を、画像1505を劣化させるように修正することで、実際のセンサを使用して撮像された画像の品質および特徴を模倣する「実物そっくりの」画像1425を生成することができる。
【0105】
幾つかの実装では、合成トレーニングデータサンプルの劣化バージョンの生成を支援するために、モデル(例えば、1410)は、モデルの被写体の材料および他の特性を示すためのメタデータを含むことができる。係る実装では、モデルで定義される被写体の特性は、数ある検討事項の中でもとりわけ、照明、モデル化された被写体に対するセンサの位置、被写体の特性(例えば、材料)を考慮して、実際の画像(または点群)が特定のセンサによりどのように生成される可能性が高いかを決定するために、トレーニングデータ生成器により(例えば、センサモデルと組み合わせて)検討され得る。例えば、ボトルのパッケージをモデル化する、
図15の特定の例におけるモデル1410は、3Dモデルのどの部分(例えば、どのピクセルまたはポリゴン)がガラス材料(ボトル)に対応し、どの部分が段ボール(パッケージ)に対応するかを定義するメタデータを含むことができる。故に、トレーニングデータ生成器が合成画像を生成し、かつ、画像1505に対するセンサフィルタリング1510を適用(して、例えば、3Dモデルの様々な表面に光が反射する方式をモデル化)すると、これらの特性に対するモデル化されたセンサの反応は、トレーニングデータの生成に使用された場合に実際のセンサにより作成されるであろうものとより一致する、信頼できるトレーニングデータを生成するために、より現実的に適用され得る。例えば、3Dモデルでモデル化される材料によって、センサの脆弱性をモデル化するトレーニングデータ画像を生成して、例えば、
図15の例におけるボトルのガラス表面からの反射に対応する、グレア、ノイズ、または、他の欠陥を有する画像を生成することが可能であり得るが、あまり反射性がない段ボール表面に対応するノイズまたはグレアは少なくなる。同様に、被写体の3Dモデル表現でモデル化される材料のタイプ、温度、および他の特性は、異なるセンサ(例えば、カメラセンサ対LIDARセンサ)に対して異なる影響を及ぼし得る。故に、例示的なテストデータ生成システムは、実世界のセンサにより生成される可能性が高い画像のバージョンをシミュレートする画像の劣化バージョン(例えば、1425)を生成すべく、画像1505に適用するフィルタまたは処理を自動的に決定する際に、3Dモデルのメタデータおよび特定のセンサモデルの両方を検討することができる。
【0106】
更に、幾つかの実装では、画像1505の更なる後処理が被写界深度の調節を含むことができる。幾つかの3Dレンダリングプログラムでは、ソフトウェアで使用される仮想カメラが完璧であり、近くにある物体および遠くにある物体の両方を、完璧に焦点を合わせて撮像することができる。ただし、これは、実世界のカメラまたはセンサには当てはまらないことがあ(り、トレーニングセット生成器により使用される、対応するセンサモデルの属性内でそのように定義され得)る。故に、幾つかの実装では、後処理(例えば、トレーニングセット生成器を用いて、カメラが背景に焦点を合わせ、かつ、モデル化された被写体の特徴に焦点が合っていないように見せるべきポイントを、自動的に識別および選択することにより、欠陥はあるがよりフォトリアリスティックな画像(例えば、1425)の例を作成すること)の間に、画像に対する被写界深度効果が適用され得る。更なる後処理には、画像上にノイズを追加して、写真撮影に存在するノイズの多いアーチファクトをシミュレートすることが含まれ得る。例えば、トレーニングセット生成器は、数ある例示的な技術の中でもとりわけ、レイトレーシングアルゴリズムが物体上で計算する光の跳ね返りの数を制限することにより、ノイズを追加することを含み得る。更には、合成プロセスの結果として発生する過度または非現実的に滑らかな任意のエッジまたは表面を除去する努力の中で、レンダリングされたモデルの上にわずかなピクセル化が適用され得る。例えば、光ぼかし層を追加してピクセルの「ブロック」を平均化することができ、これを他の後処理操作(例えば、対応するセンサモデルに基づく)と組み合わせると、より現実的な合成トレーニングサンプルが得られることがある。
【0107】
図15に示すように、例示的な3Dモデル1410からトレーニングデータサンプル(例えば、1425)を生成する際、サンプル(例えば、画像、点群など)は、深層学習モデル(例えば、1435)のトレーニングデータセットを構築するために、他の実際のトレーニングサンプルまたは合成的に生成されたトレーニングサンプルに追加されるか、または含められてよい。同様に
図14の例に示すように、(例えば、例示的な機械学習システム1430の)モデルトレーナ1455を使用して、1つまたは複数の機械学習モデル1435をトレーニングすることができる。場合によっては、合成深度画像を3Dモデルから生成することができる。次に、トレーニングされた機械学習モデル1435は、数ある例の中でもとりわけ、物体の認識、自動棚卸処理、ナビゲーションなどの様々なタスクを実行するために、自律型機械により使用され得る。
【0108】
図14の例では、例示的なトレーニングセット生成器1420を実装するコンピューティングシステム1415は、1つまたは複数のデータ処理装置1445と、1つまたは複数のコンピュータ可読メモリ要素1450と、トレーニングセット生成器1420を実装するためにハードウェアおよび/またはソフトウェアに実装されるロジックとを含むことができる。
図14の例は、コンピューティングシステム1415(およびそのコンポーネント)を、機械学習モデル(例えば、1435)をトレーニングおよび/または実行するために使用される機械学習システム1430とは別個のものとして示しているが、幾つかの実装では、単一のコンピューティングシステムを使用して、数ある代替的な実装および例示的なアーキテクチャの中でもとりわけ、モデル生成器1405、トレーニングセット生成器1420、および機械学習システム1430のうちの2つまたはそれより多くの組み合わされた機能を実装できることを理解されたい。
【0109】
幾つかの実装では、合成トレーニングデータを使用して1回限りの学習を可能にするコンピューティングシステムが提供され得る。係るシステムによって、何十万もの画像をトレーニングする必要なく物体を分類することが可能になり得る。1回限りの学習では、場合によっては、単一のトレーニング画像であっても、ごくわずかなトレーニング画像からの分類が可能になる。これによって、特定の機械学習モデルをトレーニングするためのトレーニングセットを開発する際の時間およびリソースが節約される。
図16および
図17の例に示すような幾つかの実装では、機械学習モデルは、入力の分類を学習するモデルではなく、2つの入力の区別を学習するニューラルネットワークであってよい。係る機械学習モデルの出力によって、モデルに提供される2つの入力の類似度が識別され得る。
【0110】
幾つかの実装では、
図14の例などにおいて、わずかなトレーニング例から物体のカテゴリを分類する能力をシミュレートできる機械学習システムが提供され得る。係るシステムでは、対応する機械学習モデルを効果的にトレーニングすべく、複数のクラスの大規模なデータセットを作成する必要性を除去することもできる。同様に、複数のクラスに対するトレーニングを必要としない機械学習モデルを選択することができる。機械学習モデルは、当該モデルがその物体(例えば、製品、人間、動物、または他の物体)の単一画像を比較画像と共にシステムに供給することにより、その物体を認識するために使用され得る。比較写真がシステムにより認識されない場合は、物体は、機械学習モデル(例えば、シャムネットワーク)を使用して、一致しないと決定される。
【0111】
幾つかの実装では、上の例で紹介したような合成トレーニングデータを使用してトレーニングされる機械学習モデルとしてシャムネットワークを利用することができる。例えば、
図16は、2つの同一のニューラルネットワーク1605a、1605bで構成される例示的なシャムネットワークを示した簡略ブロックダイアグラム1600を示す。これらのネットワークの各々は、トレーニング後に同じ重みを有する。比較ブロック(例えば、1620)を提供して、2つの同一のネットワークの出力の類似性を評価し、決定された類似度を閾値と比較することができる。類似度が閾値範囲内(例えば、所与の閾値よりも下または上)である場合は、シャムネットワーク(ニューラルネットワーク1605a、1605bおよび比較ブロック1620で構成される)の出力は、2つの入力が共通の被写体を参照しているかどうかを(例えば、1625で)示すことができる。例えば、2つのサンプル1610、1615(例えば、画像、点群、深度画像など)を、2つの同一のニューラルネットワーク1605a、1605bの各々に対するそれぞれの入力として提供することができる。一例では、ニューラルネットワーク205a、1605bは、ResNetベースのネットワーク(例えば、ResNet50または別の変形例)として実装されてよく、各ネットワークの出力は、比較ブロック1620に入力される特徴ベクトルであってよい。幾つかの実装では、比較ブロックは、2つの特徴ベクトル入力から類似性ベクトルを生成して、2つの入力1610、1615がどのくらい類似しているかどうかを示すことができる。幾つかの実装では、係るシャムネットワーク実装への入力(例えば、1610、1615)は、エージェントの現在の観測(例えば、自律型機械のセンサにより生成される画像または深度マップ)と目標物とを表す2つの画像を構成することができる。深層シャムネットワークは、差別的組み込み学習のための2ストリームニューラルネットワークモデルの一種であり、合成トレーニングデータを利用した1回限りの学習を可能にし得る。例えば、2つの入力(例えば、1610、1615)のうちの少なくとも1つは、上記のような合成的に生成されるトレーニング画像または基準画像であってよい。
【0112】
幾つかの実装では、合成データを使用してトレーニングされるシャムネットワークまたは他の機械学習モデルの実行において、数ある例示的な実装の中でもとりわけ、汎用マイクロコンピュータとインタフェースを取ることができる専用の機械学習ハードウェア、例えば、機械学習アクセラレータ(例えば、Intel Movidiusニューラルコンピュートスティック(NCS))を利用することができる。このシステムは様々なアプリケーションで利用され得る。例えば、ネットワークは、人間、動物、または車両へのアクセスを可能にするアクチュエータをトリガできるようにする前に、人間、動物、または車両が認識されるアプリケーションなど、セキュリティまたは認証のアプリケーションで利用され得る。具体的な例として、スマートドアは、ドアに接近している人間または動物を認識するための画像センサを備えることができ、許可された一組のユーザのうちの1人に一致するものにのみ(機械学習モデルを使用して)アクセスを付与することができる。係る機械学習モデル(例えば、合成データでトレーニングされる)は、数ある例の中でもとりわけ、製品の検証、棚卸、および、店舗での製品認識を使用して、製品が存在するかどうか(または幾つ存在するか)、または、製品が特定の位置内(例えば、適切な棚の上)に存在するかどうか(または幾つ存在するか)を決定する、他のアプリケーションなど、産業用または商業用のアプリケーションでも使用され得る。例えば、
図17の簡略ブロックダイアグラム1700が示す例に示されるように、消費者製品に関連する2つのサンプル画像1705、1710が、閾値決定ロジック1720を有するシャムネットワークへの入力として提供され得る。シャムネットワークモデル1720は、2つのサンプル画像1705、1710が同じ製品の画像である可能性が高いかどうかを(1715で)決定することができる。実際、幾つかの実装では、係るシャムネットワークモデル1720によって、様々な回転およびオクルージョンにおける製品の識別が可能になり得る。場合によっては、3Dモデルを利用することで、数ある例示的な検討事項および特徴の中でもとりわけ、より複雑な製品および物体に関する複数の基準画像を生成して検証レベルを上げることができる。
【0113】
幾つかの実装では、コンピューティングシステムは、点群の登録を実行するため機械学習タスク、または、2つまたはそれより多くの別個の点群のマージを実行するように適合される、ロジックおよびハードウェアを備えることができる。点群のマージを実行するには、点群の内容を位置合わせする変換を見つける必要がある。係る問題は、数ある使用事例の中でもとりわけ、ロボット知覚アプリケーション、未知の環境に関するマップの作成など、自律型機械に関わるアプリケーションにおいてよく見られる。
【0114】
幾つかの実装では、2D画像間の相対的姿勢を見つけるための解決策として畳み込みネットワークを使用することで、従来の特徴ベースのアプローチと同等の結果を提供することができる。3Dスキャン技術の進歩により、ニューラルネットワークのトレーニングに有用な3Dデータを用いて、複数のデータセットを更に作成することができる。幾つかの実装では、2つまたはそれより多くの異なる入力のストリームを受け入れることができる機械学習モデルが提供され得る。2つまたはそれより多くのデータ入力の各々は、それぞれの3次元(3D)点群を具現化する。2つの3D点群は、2つの異なるそれぞれの姿勢から測定される同じ物理的な空間または物体(または、物理的な空間または物体の仮想化バージョン)の表現であってよい。機械学習モデルは、これら2つの3D点群入力を受け入れ、2つの3D点群のソース間の相対的または絶対的な姿勢の指標を出力として生成することができる。次に、相対的姿勢の情報を使用して、環境の(3D点群の)複数のスナップショットから(1つまたはそれより多い複数の異なるセンサおよびデバイス(例えば、環境をスキャンするために移動する複数のドローンまたは同じドローン)から)環境のグローバルな3D点群表現を生成することができる。相対的姿勢を使用することで、数ある例示的な使用の中でもとりわけ、特定の機械により測定される3D点群入力を、前に生成された環境のグローバルな3D点群表現と比較して、環境内の特定の機械の相対的位置を決定することもできる。
【0115】
一例では、点をソートするための3Dグリッドを作成するボクセル化点群処理技術が使用される。ここでは、
図18の例で示すような畳み込み層が適用され得る。幾つかの実装では、3Dのグリッドまたは点群は、本明細書に説明のようなボクセルベースのデータ構造として具現化または表現され得る。例えば、
図18の例では、ボクセルベースのデータ構造(1810で表される)が、例示的な3D環境のRGB-DカメラまたはLIDARスキャンから生成される点群1805から生成され得る。幾つかの実装では、シャムネットワークを採用するものなど、比較機械学習モデルに提供され得る2つの点群入力が、一対の3Dボクセルグリッド(例えば、1810)であってよい。場合によっては、2つの入力は、上記のような複数の潜在的なボクセル解像度の何れか1つで最初にボクセル化され(、ボクセルベースのデータ構造(例えば、1810)に変換され)得る。
【0116】
図19の簡略ブロックダイアグラム1900に表す一例では、機械学習モデルは、表現部分1920および回帰部分1925で構成され得る。上記のように、シャムネットワークベースの機械学習モデルは、一対の3Dボクセルグリッド入力(例えば、1905、1910)または他の点群データから相対的なカメラ姿勢を直接推定するように構成され得る。幾つかの実装では、3Dボクセルグリッドは、ボクセルグリッドデータの組織化された構造を前提として、従来の畳み込み層を有するニューラルネットワークで有利に使用され得る。ネットワークを使用して決定される相対的なカメラ姿勢は、ボクセルグリッド入力の対応する点群をマージするために使用され得る。
【0117】
幾つかの実装では、例示的なネットワークの表現部分1920は、共有された重みおよびバイアスを有するシャムネットワークを含むことができる。各分岐(またはシャムネットワークのチャネル)は、連続する畳み込み層により形成されて、それぞれの入力1905、1910の特徴ベクトルを抽出する。更に、幾つかの実装では、各畳み込み層の後に、正規化線形ユニット(ReLU)が活性化関数として提供され得る。場合によっては、データの空間情報が確実に保存されるように、プーリング層が省略され得る。ネットワークの表現部分1920から出力される特徴ベクトルを組み合わせて、回帰部分1925に入ることができる。回帰部分1925は、2つの入力点群1905、1910間の相対的姿勢を表す出力1930を生成できる全結合層の組を含む。幾つかの実装では、回帰部分1925は、2つの全結合層の組で構成されてよく、一方は姿勢推定の回転値の生成を担い、第2の層の組は、姿勢の並進値の生成を担う。幾つかの実装では、回帰部分1925の全結合層の後には、数ある例示的な特徴および実装の中でもとりわけ、ReLU活性化関数が続くことができる(出力が負の値を有し得ることから、最終層を除く)。
【0118】
幾つかの実装では、上の
図19の例などにおいて、自己指導学習が、トレーニングフェーズに機械学習モデル上で実施され得る。例えば、ネットワーク(
図19の例に示す)の目的は回帰問題の解決であるため、その解決をネットワークが実現するように導く損失関数が提供され得る。トレーニングフェーズを提供することで、ラベルに基づく、または、2つの点群の位置合わせの定量化による損失関数などの損失関数を導出することができる。一例では、
図20の簡略ブロックダイアグラム2000に示すように、例示的なトレーニングフェーズ2020が実装され得る。ここでは、損失関数2025がネットワーク予測と比較する姿勢をyが予測するために使用されるデータベースのグラウンドトゥルースを取得するために(例えば、対応するCNN2010に関連して)使用される反復最接近点(ICP)ベースの方法2015に対して、入力2005が提供される。このような例では、グラウンドトゥルースがラベル付けされたデータセットを有する必要がない。
【0119】
図19および
図20の例で説明するようなトレーニングされたシャムネットワークベースのモデルを、3Dマップの生成およびナビゲーションおよびローカライゼーションなどのアプリケーションで利用することができる。例えば、
図21の例に示すように、係るネットワークは、環境内のナビゲートを支援するために、移動ロボット(例えば、2105)または他の自律型機械により(機械学習ハードウェア(例えば、NCSデバイス2110)に関連して)利用され得る。ネットワークは、数あるローカライゼーションおよびマッピングの同時実行(SLAM)アプリケーションの中でもとりわけ、環境2115の3Dマップを生成するためにも使用され得る(例えば、ロボットまたは自律型機械により後で使用され得る)。
【0120】
幾つかの実装では、エッジツーエッジの機械学習を利用して、アプリケーション内でセンサ融合を実行することができる。係る解決策は、複数の異なるセンサのデータを融合することにより経時的にロボットの動きを回帰させるために適用され得る。これはよく研究された問題であるが、現在の解決策では経時的にドリフトするか、または計算コストが高くなる。幾つかの例では、機械学習アプローチは、数ある例示的な利点の中でもとりわけ、データ内のノイズ、照明の変化、被写体ぶれの影響を受けにくい一方で、コンピュータビジョンタスクで利用され得る。例えば、畳み込みニューラルネットワーク(CNN)を、物体の認識およびオプティカルフローの計算に使用することができる。CNNベースのモデルを実行するシステムハードウェアは、数ある例の中でもとりわけ、長短期記憶(LSTM)ブロックなどのハードウェアコンポーネントおよびサブシステムを採用して、信号回帰に関する良好な結果などの更なる効率を認識することができる。
【0121】
一例では、各ソースの弱点(例えば、単眼RGB:スケールの欠如、IMU:経時的なドリフトなど)を独立して克服すべく、異なるタイプのデータ(例えば、RGBデータおよびIMUデータなど)の複数のソースからの入力を受け入れることができる機械学習モデルを利用するシステムが提供され得る。機械学習モジュールは、各タイプのデータソースの分析に合わせて調整されるそれぞれのニューラルネットワーク(または他の機械学習モデル)を含むことができる。各タイプのデータソースは、全結合層のステージに連結され、供給されて、複数のデータストリームから結果(例えば、姿勢)を生成することができる。係るシステムは、例えば、数ある例示的な用途の中でもとりわけ、ロボット、ドローン、または車両などの機械の自律ナビゲーションを可能にすることを目的としたコンピューティングシステムで使用され得る。
【0122】
例えば、
図22の例に示すように、IMUデータは、IMUデータ用に調整されるネットワークへの入力として提供され得る。IMUデータは、加速度および向きを測定することにより被写体の動きを追跡する方法を提供することができる。ただし、場合によっては、IMUデータを機械学習アプリケーション内で単独で利用すると、経時的にドリフトが生じ得る。幾つかの実装では、LSTMを使用してこのデータの関係を経時的に追跡することで、ドリフトを減らすのに役立てることができる。
図22の簡略ブロックダイアグラム2200で示す一例では、n個の生の加速度計およびジャイロスコープのデータ要素2205のサブシーケンスが、(例えば、各データ要素が6つの値(IMUの加速度計およびジャイロスコープからそれぞれ3軸)で構成される場合に、)例示的なLSTM2210への入力として使用される。他の例では、入力2205は、画像フレーム間のn個(例えば、10個)の相対的姿勢(例えば、フレームf
iとf
i+1との間のn個のIMU相対的姿勢
【数1】
)のサブシーケンスを含むことができる。全結合層(FC)2215をネットワーク内に提供して、変換の回転成分および並進成分を抽出することができる。例えば、全結合層2215に続いて、結果として得られる出力は、回転値2230を抽出するための全結合層2220、および、並進値2235を抽出するための全結合層2225の各々に供給され得る。幾つかの実装では、モデルは、より少ないLSTM層(例えば、1つのLSTM層)と、より多くのLSTMユニット(例えば、512ユニットまたは1024ユニットなど)とを含むように構築され得る。幾つかの実装では、3つの全結合層2215の組が使用され、続いて、回転に関する全結合層2220および並進に関する全結合層2225が使用される。
【0123】
図23の例を参照すると、単眼RGBデータなどの画像データのデータストリームを処理できるネットワークの簡略ブロックダイアグラム2300が示されている。故に、オプティカルフローを計算するためにトレーニングされ、かつ、姿勢推定のための次元削減を特徴とし得る、RGB CNN部分が提供され得る。例えば、数ある例の中でもとりわけ、幾つかの全結合層を提供して次元を減らすことができる、および/または、特徴ベクトルを行列として再形成することができる、および、4つのLSTMの組を使用して、特徴間の対応関係を見つけ、次元を減らすことができる。
【0124】
図23の例では、FlowNetSimple、FlowNetCorr、Guided Optical Flow、VINet、または他の光ネットワークなどの予めトレーニングされたオプティカルフローCNN(例えば、2310)を提供して、一対の連続するRGB画像を入力2305として受け入れることができる。モデルは、オプティカルフローCNN2310を通じて画像対2305から特徴ベクトルを抽出し、次に、そのベクトルを縮小して入力2305に対応する姿勢ベクトルを取得するように更に構築され得る。例えば、光ネットワーク部分2310の出力が、1つまたは複数の更なる畳み込み層2315の組に提供され(例えば、光ネットワーク部分2310の出力から次元を減らすために、および/または、フローベクトルの推定には使用されるが姿勢推定には必要とされない情報を除去するために利用され)てよく、これらの畳み込み層2315の出力は、対応するベクトルに(2320で)平坦化され得る行列であってよい。ベクトルは、平坦化されたベクトルの次元の縮小(例えば、1536から512への縮小)を実行するために、全結合層2325に提供され得る。この縮小されたベクトルは、ベクトルを行列に変換または再形成するために、再形成ブロック2330に戻され得る。次に、再形成された行列の各方向(例えば、左から右/上から下、右から左/下から上、上から下/左から右、および、下から上/右から左)に1つずつある、4つのLSTMの組2335を使用して、時間に沿って特徴の対応関係を追跡し、次元を減らすことができる。次に、数ある例示的な実装の中でもとりわけ、LSTMの組2335の出力は、一対の画像2305に基づいて回転値2350を生成するために、回転に関する全結合層2340に提供されてよく、一対の画像2305に基づいて並進値2355を生成するために、並進に関する全結合層2345に提供されてよい。
【0125】
図24を参照すると、センサ融合ネットワーク2405の簡略ブロックダイアグラム2400が示されている。センサ融合ネットワーク2405は、IMUニューラルネットワーク部分2410(例えば、
図22の例に示すようなもの)およびRGBニューラルネットワーク部分2415(例えば、
図23の例に示すようなもの)の結果を連結する。係る機械学習モデル2405は更に、各センサタイプから最良のものを選ぶことによりセンサ融合を可能にし得る。例えば、機械学習モデルは、CNNとLSTMとを組み合わせてよりロバストな結果をもたらすことができる(例えば、CNNは、一対の連続する画像から特徴を抽出することができ、LSTMは、センサの漸進的な動きに関する情報を取得することができる)。この点でCNNおよびLSTMの両方の出力は補完的であり、2つの連続するフレームの違い(およびその相対的変換)および実世界の単位でのその表現の正確な推定を機械に与える。
【0126】
図24の例では、数ある例の中でもとりわけ、それぞれのセンサ固有の部分(例えば、2405、2410)の結果を連結し、組み合わされた機械学習モデル2405(またはセンサ融合ネットワーク)の全結合層に提供して、回転姿勢および並進姿勢の両方を組み込んだ姿勢結果を生成することができる。IMUデータおよび単眼RGBは個々に、回帰問題の信頼できる解決策に十分な情報を提供していないように見えることがあるが、本明細書で図示および説明するようなこれらのデータ入力を組み合わせることで、よりロバストで信頼できる結果(例えば、
図25Aおよび
図25Bのグラフ2500a、bに示されている例示的な結果に示すようなもの)がもたらされ得る。係るネットワーク2405は、両方のセンサタイプ(例えば、RGBおよびIMU)の有用な情報を活用する。例えば、この特定の例では、ネットワーク2405のRGB CNN部分2415は、連続する画像間の相対的変換に関する情報を抽出することができるが、IMU LSTMベースの部分2410は、変換にスケールを提供する。各部分2410、2415により出力されるそれぞれの特徴ベクトルは、RGB画像2305とIMUデータ2205との組み合わせに基づいて、ベクトルを連結し、コアの全結合層2425にこの結果を供給し、続いて、回転値2440を生成するための回転に関する全結合層2430、および、並進値2445を生成するための並進に関する全結合層2435の両方にこの結果を供給するために、連結部ブロック2420に供給され得る。
図22から
図24の例はRGBデータとIMUデータとの融合を示しているが、本明細書に記載の原理に従った機械学習モデルで、他のデータタイプを置換(例えば、IMUデータをGPSデータで置換および補足するなど)し、組み合わせることができることを理解されたい。実際、数ある例示的な修正形態および代替形態の中でもとりわけ、2つより多くのデータストリーム(および連結部に供給される、対応するニューラルネットワーク部分)が、よりロバストな解決を可能にするために、他の例示的な実装で提供され得る。
【0127】
幾つかの実装では、ニューラルネットワークオプティマイザが提供され得る。このニューラルネットワークオプティマイザは、ニューラルネットワークを使用して機械学習タスクを実行する特定のアプリケーションおよびハードウェアプラットフォームに推奨される1つまたは複数のニューラルネットワークを、ユーザまたはシステムに対して識別することができる。例えば、
図26に示すように、マイクロプロセッサ2610およびコンピュータメモリ2615を含むコンピューティングシステム2605を提供することができる。コンピューティングシステム2605は、ニューラルネットワークオプティマイザ2620を実装することができる。ニューラルネットワークオプティマイザ2620は、数ある例示的なハードウェアの中でもとりわけ、本明細書に記載のような機械学習ハードウェア(例えば、2625)を使用して一組の機械学習タスク(例えば、2635)を実行させる実行エンジンを含むことができる。ニューラルネットワークオプティマイザ2620は更に、機械学習ハードウェア2625上で実行するためにニューラルネットワークオプティマイザ2620により選択され、かつ、ニューラルネットワークオプティマイザ2620により監視される、一組のニューラルネットワークのうちの1つを使用して、機械学習ハードウェア2625により機械学習タスクが実行される際に機械学習タスクの実行を監視するための1つまたは複数のプローブ(例えば、2630)を含むことができる。プローブ2630は、数ある例示的なパラメータの中でもとりわけ、タスクの実行中に機械学習ハードウェア2625により消費される電力、実行中の機械学習ハードウェアの温度、特定のニューラルネットワークを使用してタスクを完了する速度または完了するために経過した時間、特定のニューラルネットワークを使用したタスク結果の正確性、(例えば、使用されているニューラルネットワークを格納するために)利用されるメモリの量などの属性を測定することができる。
【0128】
幾つかの実装では、コンピューティングシステム2605は、ニューラルネットワーク生成システム(例えば、2640)とインタフェースを取ることができる。幾つかの実装では、ニューラルネットワークを評価するコンピューティングシステム(例えば、2605)とニューラルネットワーク生成システム2640とは、同じコンピューティングシステム上に実装され得る。ニューラルネットワーク生成システム2640では、ユーザが様々なタスクおよび解決策のためにニューラルネットワークモデル(例えば、CNN)を手動で設計することが可能になり得る。幾つかの実装では、ニューラルネットワーク生成システム2640は更に、前に生成されたニューラルネットワークのレポジトリ2645を含むことができる。一例では、ニューラルネットワーク生成システム2640(例えば、CAFFE、TensorFlowなどといったシステム)は、一組のニューラルネットワーク2650を生成することができる。この組はランダムに生成され、(例えば、所与のアプリケーションに適した幾つかの一般化されたパラメータに基づいて、または、一般的なニューラルネットワークのタイプまたは部類に従って、)新しいニューラルネットワークを0から生成すること、および/または、ニューラルネットワークをレポジトリ2645からランダムに選択することができる。
【0129】
幾つかの実装では、一組のニューラルネットワーク2650が、ニューラルネットワーク生成システム2640により生成され、ニューラルネットワークオプティマイザ2620に提供され得る。ニューラルネットワークオプティマイザ2620は、一組のニューラルネットワーク2650の1つ1つを使用して、特定の機械学習ハードウェア(例えば、2625)に、1つまたは複数の機械学習タスクの標準化された組を実行させることができる。ニューラルネットワークオプティマイザ2620は、ハードウェア2625による一組のニューラルネットワーク2650の1つ1つの使用に関連して、タスクの性能を監視することができる。ニューラルネットワークオプティマイザ2620は更に、一組のニューラルネットワークのうちの「最良のもの」を決定する際に、ニューラルネットワークオプティマイザのプローブ(例えば、2630)により測定される、どのパラメータまたは特性が、ニューラルネットワークオプティマイザにより最も高く重み付けされるまたは優先されるかを識別するための入力として、データを受け入れることができる。(例えば、ランダムに生成された)一組のニューラルネットワークの1つ1つの使用中におけるこれらの基準およびニューラルネットワークオプティマイザの観測に基づいて、ニューラルネットワークオプティマイザ2620は、提供された基準に基づいて、特定の機械学習ハードウェア(例えば、2625)に最適な性能のニューラルネットワークを識別および提供することができる。幾つかの実装では、ニューラルネットワークオプティマイザは、更なる使用およびトレーニングなどのために、この最高性能のニューラルネットワークをハードウェアに自動的に提供することができる。
【0130】
幾つかの実装では、ニューラルネットワークオプティマイザは、ニューラルネットワークオプティマイザ(例えば、2620)により評価される最初の(例えば、ランダムに生成された)組のニューラルネットワークから識別される結果を繰り返し改善するために進化的な調査を採用することができる。例えば、ニューラルネットワークオプティマイザは、ニューラルネットワークオプティマイザにより評価される最初の組から、最高性能の1つまたは複数のニューラルネットワークの特性を識別することができる。次に、ニューラルネットワークオプティマイザは、ニューラルネットワーク生成器(例えば、2640)に対して、特定のハードウェア(例えば、2625)の最高性能のニューラルネットワークで識別されるものと同様の特性を有する別の多様な組のニューラルネットワークを生成する要求を送信することができる。次に、ニューラルネットワークオプティマイザ2620は、ニューラルネットワークオプティマイザにより評価される最初のバッチからの最高性能のニューラルネットワークに基づいてニューラルネットワーク生成器により生成される次の組または世代のニューラルネットワークを使用して、その評価を繰り返すことができる。先と同様に、ニューラルネットワークオプティマイザ2620は、提供された基準に従って、この第2世代のニューラルネットワークのうちのどのニューラルネットワークの性能が最適であったかを識別することができ、評価のために第3世代のニューラルネットワークを生成する要求をニューラルネットワーク生成器に送信するための基礎として、第2世代における最適な性能のニューラルネットワークの特質を再び決定することができる。故に、ニューラルネットワークオプティマイザ2620を用いると、1つの世代から次の世代へと進化(し、理論的には改善)するニューラルネットワークが繰り返し評価される。前の例のように、ニューラルネットワークオプティマイザ2620は、数ある例示的な実装の中でもとりわけ、機械学習ハードウェア(例えば、2625)により使用される最新世代の最適な性能のニューラルネットワークの指標またはコピーを提供することができる。
【0131】
図27のブロックダイアグラム2700に示す具体的な例として、Movidius NCSなどの機械学習ハードウェア2625は、設計空間探索ツールとして機能するニューラルネットワークオプティマイザと共に利用されてよく、ニューラルネットワーク生成器2640またはCAFFEなどのプロバイダを使用することで、ハードウェアの制約を受けて、最も高い正確性でネットワークを見つけることができる。係る設計空間探索(DSX)ツールは、ネットワークグラフおよび帯域幅測定を含む完全なAPIを活用するために提供され得る。更には、機械学習ハードウェアAPIに幾つかの拡張を追加または提供して、数ある例の中でもとりわけ、温度測定、推論時間測定などの設計空間探索に有用な更なるパラメータを引き出すことができる。
【0132】
DSX概念の力を示すために、例として、顔検出でウェイクアップするように最新の携帯電話に実装されているものなど、小型で常時オンの顔検出器のニューラルネットワーク設計空間を調査する例が提供される。様々なニューラルネットワークが機械学習ハードウェアに提供されてよく、性能は、推論ステージにおけるトレーニングされたネットワークの電力使用量など、ニューラルネットワークの使用ごとに監視されてよい。DSXツール(またはニューラルネットワークオプティマイザ)は、所与の分類タスクに対して異なるニューラルネットワークを生成することができる。データは、ハードウェアに転送され得る(例えば、NCSの場合は、USB経由でNCS APIを使用してNCSとの間で転送され得る)。上で説明した実装では、任意のファイルを手動で編集、コピー、およびペーストするのではなく、設計空間の調査の結果として、複数の異なる目的に最適なモデルを見つけることができる。実例として、
図28は、ランダムに生成された複数の異なるニューラルネットワークのDSXツールの評価の例示的な結果を示した表2800を示す。この結果は、ニューラルネットワークの1つ1つを使用した機械学習タスクの実行中における機械学習ハードウェア(例えば、NCSに接続される汎用マイクロプロセッサ)の性能特性を含む(例えば、DSXツールにより測定され得る数ある例示的なパラメータの中でもとりわけ、正確性、実行時間、温度、メモリ内のニューラルネットワークのサイズ、および測定された電力を示す)。
図29は、検証の正確性と実行時間とを比較した結果(2900)、および、検証の正確性とサイズとを比較した結果(2905)を示す。これらの関係および比率は、数ある例の中でもとりわけ、評価されたニューラルネットワークのうちのどれが特定の機械学習プラットフォームに「最適」であるかを決定するときにNCSにより検討され得る。
【0133】
深層ニューラルネットワーク(DNN)は、画像分類および物体検出など、様々なコンピュータビジョンタスクに関する最先端の正確性を提供する。ただし、DNNの成功は、計算およびメモリの大幅な増加によって達成されることが多いので、リソースに制約のある推論エッジデバイスでの展開が困難になる。幾つかの実装では、枝刈りおよび量子化のようなネットワーク圧縮技術によって、計算およびメモリの需要を減らすことができる。これは、特に、小さなカスタムデータセットでの転移学習の場合に、正確性を全くまたはほとんど損なわずに過剰適合を防ぐのにも役立ち得る。
【0134】
幾つかの実装では、特定の機械学習ハードウェアにより使用されるニューラルネットワークのサイズを動的かつ自動的に減らすために、ニューラルネットワークオプティマイザ(例えば、2620)または他のツールも提供され得る。例えば、ニューラルネットワークオプティマイザは、細粒の枝刈り(例えば、接続または重みの枝刈り)および粗粒の枝刈り(例えば、カーネル、ニューロン、またはチャネルの枝刈り)を実行して、所与の機械学習ハードウェアにより格納および操作されるニューラルネットワークのサイズを減らすことができる。幾つかの実装では、機械学習ハードウェア(例えば、2625)は、重みの枝刈りされたニューラルネットワークをハードウェアが効果的に処理できるように、スパース行列乗算を実行できる演算回路を備えてよい。
【0135】
一実装では、ニューラルネットワークオプティマイザ2620または他のツールは、(例えば、
図30Aのブロックダイアグラム3000aに示すように)ニューラルネットワークのハイブリッド枝刈りを実行して、カーネルレベルおよび重みレベルの両方で枝刈りすることができる。例えば、所与のニューラルネットワークから枝刈り3010され得るカーネルまたはチャネルの組を(3005で)自動的に識別するために、1つまたは複数のアルゴリズム、ルール、またはパラメータが、ニューラルネットワークオプティマイザ2620または他のツールにより検討され得る。この第1チャネル枝刈り段階が(3015で)完了した後、
図30Aの例示的な図に示すように、残りのチャネル3015に対する重み枝刈り3020が実行され得る。例えば、ルールは、閾値が設定されることにより閾値を下回る重みが(3025で)枝刈りされる(例えば、「0」の重みを再割り当てされる)ように、重みの枝刈りを管理することができる。次に、ハイブリッド枝刈りされたネットワークを実行または反復して、ネットワークの正確性を枝刈りから回復させ、モデルの正確性を有害に下げることなく、ネットワークのコンパクトバージョンをもたらすことが可能になり得る。更に、幾つかの実装では、枝刈り後に残っている重みを量子化して、枝刈りされたモデルの重みを格納するために必要なメモリの量を更に減らすことができる。例えば、
図31のブロックダイアグラム3100に示す通り、浮動小数点の重み値(3105)が、最も近い基数2の対応物(3115)に置き換えられるように、ログスケールの量子化3110を実行することができる。このようにして、32ビットの浮動小数点値を4ビットの基数2の値に置き換えて、ネットワークの重みを格納するために必要なメモリの量を劇的に減らすと同時に、(例えば、
図32の表3200に示されている例示的な結果に示すように、)数ある例示的な量子化および特徴の中でもとりわけ、コンパクトなニューラルネットワークの正確性の損失をほんの最小限に抑えることができる。実際、
図32の特定の例では、ハイブリッド枝刈りの適用の研究が、ResNet50などの例示的なニューラルネットワークに適用されるものとして示されている。更には、モデルサイズを更に減らし、かつ、ハードウェアをより使いやすくするための、枝刈りされた疎で薄いResNet50に対する重みの量子化の適用が示されている。
【0136】
図30Bの簡略ブロックダイアグラム3000bで示すように、一例では、例示的なニューラルネットワークのハイブリッド枝刈りが、最初または基準のニューラルネットワークモデルへのアクセス3035、および、(オプションとして)正則化(L1、L2、またはL0)によるモデルのトレーニング3040により実行され得る。ネットワーク内の個々のニューロン(または接続)の重要性が3045で評価され、重要性がより低いと決定されたニューロンは、ネットワークから(3050で)枝刈りされ得る。枝刈りされたネットワークは微調整3055されてよく、この枝刈りから最終的なコンパクト(または疎)なネットワークが生成3060されてよい。
図30Bの例に示すように、場合によっては、数ある例示的な実装の中でもとりわけ、枝刈りされたネットワークの微調整3055に続いて更なるトレーニングおよび枝刈り(例えば、3040~3050)を実行することで、ネットワークを繰り返し枝刈りすることができる。幾つかの実装では、上記のようなハイブリッド枝刈り技術を利用して、ニューロンの重要性の決定3045が実行され得る。例えば、細粒の重みの枝刈り/疎化は、(例えば、(mean+std*factor)を用いたグローバルな段階的な枝刈りによって)実行され得る。粗粒のチャネル枝刈りは、感度テストおよび/または幾つかの目標MACに基づいて、層ごとに実行され得る(例えば、重み合計枝刈り)。粗い枝刈りは、疎な枝刈りの前に実行され得る。例えば、重みの量子化は、0でない重みに対する制約を0または2の累乗に設定するために、および/または、0に1ビットを使用し、かつ、重みを表すのに4ビットを使用するために実行されてもよい。場合によっては、数ある例示的な技術の中でもとりわけ、低精度(例えば、重みおよび活性化)の量子化が実行され得る。上記のような枝刈り技術は、様々な例示的な利益をもたらし得る。例えば、コンパクトな行列によって、格納されたネットワークパラメータのサイズが縮小されてよく、実行時間の重みの減圧(decompression)によって、DDR帯域幅が縮小されてよい。数ある例示的な利点の中でもとりわけ、加速計算が提供されてもよい。
【0137】
図33Aは、合成トレーニングデータサンプル(例えば、合成的に生成された画像または合成的に生成された点群)を含むトレーニングデータセットを生成するための例示的な技術の簡略フロー
図3300aである。例えば、コンピュータメモリからデジタル3Dモデルにアクセスすること3302ができ、デジタル3Dモデルの様々なビューから複数のトレーニングサンプルを生成すること3304ができる。これらのトレーニングサンプルは、1つまたは複数の実世界のサンプルにより生成されることから、トレーニングサンプルをシミュレートするためにトレーニングサンプルに欠陥を追加するように修正すること3306ができる。トレーニングデータセットを、修正され、合成的に生成されたトレーニングサンプルを含むように生成する3308。生成されたトレーニングデータセットを使用して、1つまたは複数のニューラルネットワークをトレーニングすること3310ができる。
【0138】
図33Bは、シャムニューラルネットワークモデルを使用して1回限りの分類を実行するための例示的な技術の簡略フロー
図3300bである。被写体入力を、シャムニューラルネットワークモデルの第1部分への入力として提供すること3312ができ、基準入力を、シャムニューラルネットワークモデルの第2部分への入力として提供すること3314ができる。モデルの第1部分および第2部分は同一であってよく、同一の重みを有することができる。差分ベクトルなどの被写体入力および基準入力に基づいて、第1部分および第2部分の出力からシャムネットワークの出力を生成すること3316ができる。例えば、シャムニューラルネットワークモデルの出力に関する類似性の閾値に基づいて、(例えば、被写体入力の被写体が基準入力の被写体と同じであることを示すべく、)被写体入力が基準入力と適切に類似しているかどうかを、出力が示していると決定すること3318ができる。
【0139】
図33Cは、例示的なシャムニューラルネットワークモデルを使用して相対的姿勢を決定するための例示的な技術の簡略フロー
図3300cである。例えば、 第1入力を、シャムニューラルネットワークモデルの第1部分への入力として受信すること3320ができ、第1入力は、(例えば、自律型機械の)第1姿勢からの3D空間(例えば、点群データ、深度マップデータなど)のビューを表す。第2入力を、シャムニューラルネットワークモデルの第2部分への入力として受信すること3322ができ、第2入力は、第2姿勢からの3D空間のビューを表す。第1入力および第2入力に基づいて、シャムネットワークの出力を生成すること3324ができ、出力は、第1姿勢と第2姿勢との間の相対的姿勢を表す。決定された相対的姿勢に基づいて、第1姿勢および第2姿勢と関連付けられる機械の位置、および/または、機械が存在する3Dマップを決定すること3326ができる。
【0140】
図33Dは、センサ融合機械学習モデルを含む例示的な技術の簡略フロー
図3300dである。センサ融合機械学習モデルは、2つまたはそれより多くの異なるデータタイプのうちの対応するものと共に使用するように調整される2つまたはそれより多くの機械学習モデルの少なくとも一部を組み合わせる。センサ融合機械学習モデルにおける2つまたはそれより多くの機械学習モデルのうちの第1のものにおいて、第1タイプの第1センサデータを入力として受信すること3330ができる。(例えば、(例えば、同じまたは異なる機械上のセンサにより)第1センサデータと同時に生成される)第2タイプの第2センサデータを、2つまたはそれより多くの機械学習モデルのうちの第2のものへの入力として受信すること3332ができる。第1機械学習モデルおよび第2機械学習モデルの出力を連結すること3334ができ、連結された出力は、センサ融合機械学習モデルの一組の全結合層に提供される3336。センサ融合機械学習モデルは、第1センサデータおよび第2センサデータに基づいて出力を生成して、デバイス(例えば、第1センサデータおよび第2センサデータを生成するセンサが配置される機械)の姿勢を定義すること3338ができる。
【0141】
図33Eは、進化的なアルゴリズムに従って、特定の機械学習ハードウェアに合わせて調整される改善または最適化されたニューラルネットワークを生成するための例示的な技術の簡略フロー
図3300eである。例えば、一組のニューラルネットワークにアクセスすること3340、または、一組のニューラルネットワークを(例えば、ランダムに選択された属性に従って自動的に)生成することができる。特定のハードウェアが、一組のニューラルネットワークを使用して機械学習タスクを実行すること3342ができ、これらのタスクの特定のハードウェアの性能の属性を監視すること3344ができる。この監視の結果に基づいて、組内の1つまたは複数の最高性能のニューラルネットワークを識別すること3346ができる。(特定のハードウェアに関する)最高性能のニューラルネットワークの特性を決定すること3348ができ、係る特性を含む別の組のニューラルネットワークを生成すること3350ができる。場合によっては、この新しい組のニューラルネットワークを(例えば、段階3342~3348を通じて)テストして、特定のハードウェアについて1つまたは複数の十分に性能の高いまたは最適化されたニューラルネットワークが識別されるまで、ハードウェアとの使用が検討されているニューラルネットワークの組を繰り返し改善することもできる。
【0142】
図33Fは、ニューラルネットワークを枝刈りするための例示的な技術の簡略フロー
図3300fである。例えば、ニューラルネットワークを識別すること3352ができ、ニューラルネットワークのカーネルのサブセットを、重要性がより低いものとして、またはそうでなければ良好な枝刈り候補として決定すること3354ができる。このカーネルのサブセットを枝刈り3356して、ニューラルネットワークの枝刈りされたバージョンを生成することができる。次に、残りのカーネルを更に枝刈り3358して、これらの残りのカーネルから重みのサブセットを枝刈りすることで、粗粒レベルおよび細粒レベルの両方でニューラルネットワークを更に枝刈りすることができる。
【0143】
図34は、幾つかの実施形態に係る例示的なマルチスロットベクトルプロセッサ(例えば、非常に長い命令語(VLIW)ベクトルプロセッサ)を表す簡略ブロックダイアグラムである。この例では、 ベクトルプロセッサは、複数の(例えば、9つの)機能ユニット(例えば、3403~3411)を含むことができ、これらのユニットは、ベクトルレジスタファイル(VRF)3401および汎用レジスタファイル(GRF)3402によりバックアップされるマルチポートメモリシステム3400により供給され得る。プロセッサは、命令をデコードし、かつ、機能ユニット3403~3411を制御する制御信号を生成する、命令デコーダ(IDEC)3412を含む。機能ユニット3403~3411は、プレディケイテッド実行ユニット(PEU)3403、分岐および繰り返しユニット(BRU)3404、ロードストアポートユニット(例えば、LSU0 3405およびLSU1 3406)、ベクトル演算ユニット(VAU)3407、スカラ演算ユニット(SAU)3410、比較および移動ユニット(CMU)3408、整数演算ユニット(IAU)3411、およびボリュメトリック加速ユニット(VXU)3409である。この特定の実装では、VXU3409は、算術演算、論理演算、および記憶/検索演算(storage/retrieval operations)の両方を含むボリュメトリックデータに対する演算を加速させることができる。
図34の例にはVXU回路3409が単一のコンポーネントとして示されているが、VXU(および他の機能ユニット3403~3411)の機能は複数の回路に分散され得ることを理解されたい。更に、幾つかの実装では、VXU3409の機能は、幾つかの実装では、数ある例示的な実装の中でもとりわけ、プロセッサの他の機能ユニット(例えば、3403~3408、3410、3411)のうちの1つまたは複数内に分散され得る。
【0144】
図35は、幾つかの実施形態に係るVXU3500の例示的な実装を示した簡略ブロックダイアグラムである。例えば、VXU3500は、ベクトルレジスタファイル3401または汎用レジスタファイル3402からの入力を受け入れるために、少なくとも1つの64ビット入力ポート3501を提供することができる。この入力は、レジスタファイル3503、アドレス生成器3504、点アドレス指定ロジック3505、点挿入ロジック3506、点削除ロジック3507、X次元における3Dから2Dへの投影ロジック3508、Y次元における3Dから2Dへの投影ロジック3509、Z次元における3Dから2Dへの投影ロジック3510、2Dヒストグラムピラミッド生成器3511、3Dヒストピラミッド生成器3512、ポピュレーションカウンタ3513、2D経路探索ロジック3514、3D経路探索ロジック3515、および、場合によっては、64ビット符号なし整数ボリュメトリックビットマップ上で動作するための更なる機能ユニットを含む複数の機能ユニットに接続され得る。ブロック3502からの出力は、ベクトルレジスタファイルVRF3401または汎用レジスタファイルGRF3402レジスタファイルに書き戻すことができる。
【0145】
図36の例を参照すると、4^3ボクセルキューブ3600の編成の表現が表されている。第2ボクセルキューブ3601も表されている。この例では、ボクセルキューブを、データ内で64ビット整数3602として定義することができる。ここで、キューブ内の1つ1つのボクセルは、64ビット整数の単一の対応するビットで表される。例えば、アドレス{x、y、z}={3、0、3}のボクセル3602を「1」に設定して、ボクセルキューブ3601により表されるボリュメトリック空間内のその座標にジオメトリが存在することを示すことができる。更に、この例では、(ボクセル3602以外の)他の全てのボクセルが「空」の空間に対応してよく、数ある例の中でもとりわけ、それらの座標に物理的ジオメトリがないことを示すために「0」に設定され得る。
図37を参照すると、幾つかの実施形態に係る例示的な2レベルのスパースボクセルツリー3700が示されている。この例では、単一の「占有」ボクセルのみが、ボリューム内(例えば、位置{15、0、15})に含まれる。この場合におけるツリーの上位レベル-0 3701は、単一のボクセルエントリ{3、0、3}を含む。次に、そのボクセルは、要素{3、0、3}に単一のボクセルを含む、ツリーの次のレベル3702を指す。スパースボクセルツリーのレベル0に対応するデータ構造内のエントリは、1つのボクセルが占有として設定された64ビット整数3703である。設定されたボクセルは、64ビット整数のアレイが次に、3703で設定されるボクセルボリュームに対応するツリーのレベル1に割り当てられることを意味する。レベル1のサブアレイ3704では、ボクセルのうちの1つのみが占有として設定され、他の全てのボクセルが非占有として設定されている。この例ではツリーが2レベルのツリーであることから、レベル1がツリーの最下部を表し、その結果、階層がここで終了する。
【0146】
図38は、特定のボリュームの位置{15、0、3}および{15、0、15}に占有されたボクセルを含む、幾つかの実施形態に係る2レベルのスパースボクセルツリー3800を示す。この場合におけるツリー3801の上位レベル-0(特定のボリュームを64個の上位レベル-0のボクセルに細分化する)は、2つのボクセルエントリ{3、0、0}および{3、0、3}を含み、対応するデータ3804は、2つのボクセルが設定(または占有)されていることを示す。スパースボクセルツリー(SVT)の次のレベルは、2つのサブキューブ3802および3803を含む64ビット整数のアレイとして提供され、これらのサブキューブは、レベル0で設定される各ボクセルに1つずつある。レベル1のサブアレイ3805では、2つのボクセルv15およびv63が占有として設定され、他の全てのボクセルが非占有およびツリーとして設定されている。この形式は柔軟である。なぜなら、ツリーの次のレベル内の64エントリは常に、ツリーの上位層におけるそれぞれの設定されたボクセルに対応して割り当てられるからである。この柔軟性によって、上位層の対応するボクセルが設定されている限り、動的に変化するシーンジオメトリを、柔軟な方式で(すなわち、ランダムなどの固定順序ではなく、)既存のボリュメトリックデータ構造に挿入することが可能になり得る。そうでない場合は、ポインタのテーブルが維持されてメモリ要件が高くなるか、さもないと、予期せぬジオメトリを挿入すべく、ツリーを少なくとも部分的に再構築する必要がある。
【0147】
図39は、幾つかの実施形態に係る、
図38からのボクセルを格納するための代替技術を示す。この例では、全ボリューム3900が、
図23のようにグローバル座標{15、0、3}および{15、0、15}に格納される2つのボクセルを含む。このアプローチでは、レベル0よりも下のレベル1のサブキューブの全てを表すために64エントリのアレイを割り当てるのではなく、(例えば、対応するレベル0のボクセルが占有されているかどうかにより示されるように、)実際にジオメトリを含むレベル1の要素のみが、対応する64ビットのレベル1レコードとして割り当てられる。その結果、この例のレベル1には、64個の64ビットエントリではなく、2つの64ビットエントリしかない(すなわち、占有されているか空であるかどうかに関係なく、64個のレベル-1のボクセルの各々について)。故に、この例では、第1のレベル0 3904が
図38の3804と同等であるが、次のレベル3905は、
図38の対応する3805よりもメモリ要件が62倍小さい。幾つかの実装では、レベル1で空間が割り当てられていないレベル0に新しいジオメトリを挿入する場合は、ツリーをコピーおよび再配置しなければならない。
【0148】
図39の例では、現在の層よりも上の層の占有されているボクセルをカウントすることにより、サブボリュームを導出することができる。このようにして、システムは、ボクセルデータのどこで1つの上位層が終了し、次の下位層が開始するかを決定することができる。例えば、3つの層0ボクセルが占有されている場合は、システムは、3つの対応する層1のエントリがボクセルデータにおいて続くこと、および、次のエントリ(これら3つの後)が層2の第1エントリに対応することなどを予想することができる。係る最適な圧縮は、シーンの特定の部分が経時的に変化しない場合、または、アプリケーションで、ボリュメトリックデータの遠隔伝送、例えば、どのビットも伝送にコストと時間がかかる冥王星の表面をスキャンする宇宙探査機からの遠隔伝送が必要な場合に、非常に有用であり得る。
【0149】
図40は、幾つかの実施形態に係る、対応するボリューム内のジオメトリへの変更を反映するために、64ビット整数ボリュメトリックデータ構造エントリとして表される4^3キューブにボクセルが挿入され得る方式を示す。一例では、4000に示すように、各ボクセルキューブは、64ビット整数内の4つの論理16ビット平面として編成され得る。数ある例示的な編成の中でもとりわけ、平面の各々は0から3までのZ値に対応し、各平面内では、各y値が0から3までの4つの論理4ビット変位をコード化し、最後に、各4ビットy平面内では、各ビットが0から3までの4つの考えられるxの値をコード化する。従って、この例では、ボクセルを4^3ボリュームに挿入するために、最初に、1ビットをx値0から3だけシフトすることができ、次に、その値を0/4/8/12ビットだけシフトしてy値をエンコードすることができ、最後に、4001のCコード式に示すように、z値を0/16/32/48ビットのシフトで表すことができる。最後に、各64ビット整数は、最大64個のボクセルの組み合わせであってよく、かつ、これらのボクセルの各々は、別個に書き込まれることから、新しいビットマップは、4002に示すように、古いビットマップ値および新しいビットマップ値をOR演算することにより、スパースボクセルツリーから読み取られる古い64ビット値と論理的に組み合わせなくてはならない。
【0150】
図41を参照すると、幾つかの実施形態に従って、X方向に論理OR演算して2Dパターン4101を生成すること、Y方向に論理OR演算して2D出力4102を生成すること、および、最後に、Z方向に論理OR演算して4103に示すパターンを生成することにより、64ビット整数4100に格納された3Dボリュメトリック物体を投影し得る方法を示すための表現が示されている。
図42は、幾つかの実施形態に従って、入力64ビット整数からのビットを論理的にOR演算して、X、Y、およびZで出力投影を生成する方法を示す。この例では、表4201は、X投影出力ベクトル4202を生成するために、入力ベクトル4200からのどの要素インデックスをOR演算するかを列ごとに示す。表4203は、Y投影出力ベクトル4204を生成するために、入力ベクトル4200からのどの要素インデックスをOR演算するかを列ごとに示す。最後に、4205は、Z投影出力ベクトル4206を生成するために、入力ベクトル4200からのどの要素インデックスをOR演算するかを列ごとに示す。
【0151】
X投影は、入力データ4200からのビット0、1、2、3を論理的にOR演算して、X投影4201のビット0を生成する。例えば、4201のビット1は、4200からのビット4、5、6、および7などをOR演算することにより生成され得る。同様に、Y投影4204のビット0は、4200のビット0、4、8、および12を一緒にOR演算することにより生成され得る。4204のビット1は、4200のビット1、5、9、および13などを一緒にOR演算することにより生成される。最後に、Z投影4206のビット0は、4200のビット0、16、32、および48を一緒にOR演算することにより生成される。4206のビット1は、4200のビット1、17、33および49などを一緒にOR演算することにより生成され得る。
【0152】
図43は、幾つかの実施形態に係る、投影を使用して簡略マップを生成し得る方法の例を示す。このシナリオにおける目標は、ボクセルボリューム4302から、高さh4310および幅w4301の車両4300が下る経路のコンパクトな2Dマップを生成することであってよい。ここで、Y投影ロジックは、ボクセルボリューム4302から最初の粗い2Dマップ4303を生成するために使用され得る。幾つかの実装では、マップを処理して、特定の寸法の特定の車両(例えば、車(または自動型走行車)、ドローンなど)が経路の幅の制約4301および高さの制約4310を通過できるかどうかをチェックすることができる。これは、Zで投影を実行して幅の制約4301をチェックすることにより経路が通過可能であることを保証すべく実行されてよく、Yでの投影は、計算を車両の高さ4310に制限するためにマスクされ得る。(例えば、ソフトウェアでの)更なる後処理を用いると、通過可能で幅および高さの制約を満たす経路の場合、経路に沿ったポイントA4304、B4305、C4306、D4307、E4308、およびF4309のX座標およびZ座標のみが、車両が走行できる合法的な経路を完全に再構築すべく、ネットワークを介してのみ記憶または伝送され得ることが分かる。経路が係る区分的セグメントに分解され得ると仮定すると、経路の区分的線形セクションごとに1バイトまたは2バイトのみで、経路を完全に記述することができる。これは、数ある例の中でもとりわけ、(例えば、自律型車両による)係る経路データの高速の伝送および処理に役立ち得る。
【0153】
図44は、LIDARまたは他の高価な手段を使用して正確な測定を行う代わりに、クラウドソーシングされた高品質のマップを生成すべく、組み込みデバイスからのボリュメトリック3D測定値または単純な2D測定値を、数学的手段により幾つかの実施形態に従って集約し得る方法を示す。提案されたシステムでは、複数の組み込みデバイス4400、4401などが、中央サーバ4410に伝送され得る、測定を行うことができる様々なセンサを備えることができる。サーバ上で実行されているソフトウェアは、測定値の全ての集約4402を実行し、結果として得られる行列の非線形ソルバ4403による数値解法を実行して、高精度のマップを生成する。次に、このマップは組み込みデバイスに再分配され得る。実際、データ集約は、衛星4420、空中LIDAR調査4421、および地上LIDAR測定4422からの高精度の調査データを含むことで、これらの高忠実度のデータセットが利用可能な場合に、結果として得られるマップの正確性を高めることもできる。幾つかの実装では、マップおよび/または記録された測定値は、数ある例示的な実装の中でもとりわけ、本明細書に記載のような形式のスパースボクセルデータ構造で生成すること、スパースボクセルデータ構造に変換すること、またはそうでなければスパースボクセルデータ構造を使用して表すことができる。
【0154】
図45は、幾つかの実施形態に係る、2D 2×2ビットマップ上の2D経路探索を加速し得る方法を示す図である。動作の原理は、同一のグリッドセルのマップ上のポイント間に接続性が存在するために、xまたはyのセル、または、xおよびyのセルの連続的な実行の値を全て1に設定しなくてはならないことである。従って、それらのセルから引き出されるビットの論理ANDをインスタンス化して、グリッド内のビットマップをテストして有効な経路が存在するかどうかを確認することができ、N×Nグリッドを通る有効な経路ごとに異なるANDゲートをインスタンス化することができる。場合によっては、このアプローチでは、8×8の2Dグリッドでも2
64-1個の有効な経路を含み得るという点で、組み合わせの複雑さを招くことがある。故に、幾つかの改善された実装では、グリッドは、接続性のテストを階層的に行うことができる2×2または4×4のタイルに縮小され得る。2×2のビットマップ4500は、b0、b1、b2、およびb3とラベル付けされた4ビットを含む。この4ビットは、対応するラベル4501~4517で、値0000~1111を取ることができる。これらのビットパターンの各々は、4521から4530までのラベルが付いた2×2グリッドの面間の様々なレベルの接続性を表す。例えば、2×2グリッド4500がビットマップ1010(7112)、1011(7113)、1110(7116)、または1111(7117)を含む場合は、4500のx0とy0との間の垂直接続性を表す4521またはv0が存在する。表4518の行1に示すような、4500の2入力論理ANDまたはb0およびb3は、2×2サブグリッドに細分化されたグローバルグリッドを介したグローバルな接続性を決定するために上位レベルのハードウェアまたはソフトウェアで使用され得る接続性マップにv0を生成する。グローバルマップがx軸またはy軸上に奇数のグリッドポイントを含む場合、最上位レベルのグリッドでは、次に大きな偶数のグリッドポイントにパディングする必要がある(例えば、その結果、グローバルグリッド上のx軸および/またはy軸に更なる0の行を1つ追加する必要がある)。
図45は更に、例示的な7×7グリッド4550を示す。このグリッドは、0で満たされた更なる行4532および列4534を追加することにより8×8にパディングする方法示す。他の技術(例えば、深さ優先検索、幅優先検索もしくはダイクストラ法、または他のグラフベースのアプローチ)と比較して経路探索を高速化すべく、本例ではN×Nマップ4550を2×2マップまで漸進的にサブサンプリングすることができる。例えば、この例では、4540のセルWが、4550のセルA、B、C、およびDなどの内容をOR演算することにより入力される。同様にして、4540の2×2セルのビットは、4542のセルに入力するためにOR演算される。経路探索に関して、アルゴリズムは、グリッド4542の最も小さな2×2表現から開始し、ビットの各々をテストする。接続性をテストする必要があるのは、4540の4×4グリッド(4つの2×2グリッドで構成される)の、2×2グリッド4542の1ビットに対応する部分のみである。なぜなら、0ビットは、対応する2×2グリッドセルが4540にないことを意味していることが分かるからである。このアプローチは、4520の8×8グリッドの検索にも使用することができる。例えば、4540のセルWが0を含む場合は、4520などのABCDに経路がないことが分かる。このアプローチでは、A*、ダイクストラ、DFS、BFS、またはそれらの変形例であるかどうかに関係なく、使用されるグラフ検索アルゴリズムから分岐を枝刈りする。これに加えて、2×2編成のハードウェア基本経路ファインダ4518を使用すると、関連付けられる計算が更に制限され得る。実際、4×4の基本ハードウェア要素は、4540および4542と同じ配置の5つの2×2ハードウェアブロックを使用して構成されてよく、実行する必要のあるグラフ検索の量を更に制約する。更には、潜在的に何れのN×Nトポロジでも4542、4540、4500などと同じ配置を有する21個の2×2HWブロック(7118)で、8×8ハードウェアベースの検索エンジンを構築することができる。
【0155】
図46は、幾つかの実施形態に係る、提案されたボリュメトリックデータ構造を使用して衝突検出を加速し得る方法を示した簡略ブロックダイアグラムである。ジオメトリの3D N×N×Nマップは、最も低い詳細レベル(LoD)2×2×2ボリューム4602、次に高い4×4×4ボリューム4601、8×8×8ボリューム4600など、N×N×Nまでで構成されるピラミッドにサブサンプリングされ得る。3D空間で、ドローン、車両、またはロボット4605の位置が、GPSなどの位置付け手段を介して、または、3Dマップからの再ローカライゼーションを介して分かっている場合は、ドローン/ロボットのx位置、y位置、およびz位置を適切にスケーリングすること(それらを関連する回数2で割ること)、および、ジオメトリの存在について4602に照会すること(例えば、対応するビットマップビットが衝突の可能性を示すものであるかどうかをチェックすること)により、関連する2×2×2サブボリュームの象限にジオメトリが存在するかどうかをテストするために、その位置が迅速に使用され得る。衝突の可能性が存在する(例えば、「1」が見つかった)場合は、ボリューム4601、4600などでの更なるチェックを実行して、ドローン/ロボットが移動できるかどうかを確認することができる。ただし、4602のボクセルが空いている(例えば、「0」である)場合は、ロボット/ドローンは、自由空間と同じように解釈し、方向制御を操作して、マップの大部分を自由に移動することができる。
【0156】
本明細書に記載および図示されているシステムおよび解決策のうちの幾つかは、複数の要素を含むか、または複数の要素と関連付けられるものとして説明されているが、明示的に図示または記載されている全ての要素を、本開示の各代替的実装で利用できるわけではない。更には、本明細書に記載の要素のうちの1つまたは複数をシステムの外部に配置することができるが、他の例では、記載されている他の要素、および、図示されている実装に記載されていない他の要素のうちの1つまたは複数の中に、またはその一部として、特定の要素を含めることができる。更には、特定の要素を他のコンポーネントと組み合わせわることができ、本明細書に記載の目的に加えて、代替的な目的または更なる目的に使用することができる。
【0157】
更に、上に提示した例は、単に特定の原理および特徴を示す目的で提供された非限定的な例に過ぎず、本明細書に記載の概念の潜在的な実施形態を必ずしも制限または制約するものではないことを理解されたい。例えば、本明細書に記載のコンポーネントの様々な実装を通じて実現される組み合わせを含む、本明細書に記載の特徴およびコンポーネントの様々な組み合わせを利用して、様々な異なる実施形態を実現することができる。本明細書の内容から、他の実装、特徴、および詳細が解るはずである。
【0158】
図47~
図52は、本明細書で開示する実施形態に従って使用され得る例示的なコンピュータアーキテクチャのブロックダイアグラムである。実際、本明細書に記載のシステムのコンピューティングデバイス、プロセッサ、および他のロジックおよび回路は、機能の全部または一部、並びに、係る機能を実装するためのサポートソフトウェアおよび/またはハードウェア回路を組み込むことができる。更には、プロセッサおよびコンピューティングシステムのための、当技術分野で知られている他のコンピュータアーキテクチャ設計も、ここに示す例を超えて使用され得る。概して、本明細書で開示する実施形態に適したコンピュータアーキテクチャは、限定されるわけではないが、
図47~
図52に示す構成を含むことができる。
【0159】
図47は、それぞれのゲートウェイへのリンクを介して結合されるそれぞれのモノのインターネット(IoT)ネットワークの例示的なドメイントポロジを示す。モノのインターネット(IoT)は、多数のコンピューティングデバイスが互いにおよびインターネットに相互接続されて、非常に低いレベルで機能およびデータの取得を提供する概念である。従って、本明細書で使用される場合、IoTデバイスは、とりわけ、他のIoTデバイスおよびインターネットなどのより広いネットワークと通信して感知または制御などの機能を実行する半自律型デバイスを含むことができる。係るIoTデバイスは、上で紹介したようなハッシュテーブルを実装および使用するためのロジックおよびメモリを備えることができる。
【0160】
IoTデバイスはメモリ、サイズ、または機能が制限されているため、より少数のより大きなデバイスと同様のコストで、より多数を展開できることが多い。ただし、IoTデバイスは、スマートフォン、ラップトップ、タブレット、またはPC、または他のより大きなデバイスであってよい。更に、IoTデバイスは、スマートフォンまたは他のコンピューティングデバイス上のアプリケーションなどの仮想デバイスであってよい。IoTデバイスは、IoTデバイスを他のIoTデバイスおよびクラウドアプリケーションに結合すべく、データストレージおよびプロセス制御などのために使用されるIoTゲートウェイを含むことができる。
【0161】
IoTデバイスのネットワークは、配水システム、配電システム、パイプライン制御システム、プラント制御システム、ライトスイッチ、サーモスタット、ロック、カメラ、アラーム、およびモーションセンサなどといった商用ムオートメーションデバイスおよびホームオートメーションデバイスを含むことができる。IoTデバイスは、遠隔コンピュータ、サーバ、および他のシステムを介してアクセス可能であり、例えば、システムの制御またはデータへのアクセスを行うことができる。
【0162】
インターネットおよび同様のネットワークの将来の成長には、非常に多数のIoTデバイスが関与し得る。故に、本明細書に記載の技術の文脈では、係る将来のネットワーキングのための幾つかの革新が、これら全ての層が妨げられずに成長し、アクセス可能な接続されたリソースを発見および作成し、接続されたリソースを非表示にして区分化する能力をサポートする必要性に対処する。任意の数のネットワークプロトコルおよび通信規格を使用することができ、各プロトコルおよび規格は、特定の目的に対処するように設計される。更に、プロトコルは、位置、時間、または空間に関係なく動作する、人間によりアクセス可能なサービスをサポートする仕組みの一部である。革新は、サービス供給、並びに、ハードウェアおよびソフトウェアなどの関連付けられるインフラストラクチャと、セキュリティの強化と、サービスレベルおよびサービス供給契約で指定されるサービス品質(QoS)条件に基づくサービスの提供とを含む。理解されるように、
図47および
図48で紹介するもののようなIoTデバイスおよびネットワークの使用は、有線技術と無線技術との組み合わせを含む接続性の異種ネットワークにおいて幾つかの新しい課題を提示する。
【0163】
具体的には、
図47は、IoTデバイス4704を含む幾つかのモノのインターネット(IoT)ネットワークに使用され得るドメイントポロジの簡略図面を提供する。IoTネットワーク4756、4758、4760、4762は、バックボーンリンク4702を介してそれぞれのゲートウェイ4754に結合される。例えば、幾つかのIoTデバイス4704が、ゲートウェイ4754と通信することができ、ゲートウェイ4754を介して互いに通信することができる。図面を簡略化するため、全てのIoTデバイス4704、または通信リンク(例えば、リンク4716、4722、4728、または4732)へのラベル付けはしていない。バックボーンリンク4702は、光ネットワークを含む任意の数の有線技術または無線技術を含むことができ、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、またはインターネットの一部であってよい。更に、係る通信リンクによって、様々なデバイスの相互接続を容易にするMUX/deMUXコンポーネントの使用を含め、IoTデバイス4704およびゲートウェイ4754の両方の間の光信号経路が促進される。
【0164】
ネットワークトポロジは、Bluetooth(登録商標)Low Energy(BLE)リンク4722を使用するネットワーク4756を備えるメッシュネットワークなど、任意の数のタイプのIoTネットワークを含むことができる。存在し得る他のタイプのIoTネットワークは、IEEE802.11(Wi-Fi(登録商標))リンク4728を介してIoTデバイス4704と通信するために使用される無線ローカルエリアネットワーク(WLAN)ネットワーク4758、LTE/LTE-A(4G)または5Gセルラネットワークを介してIoTデバイス4704と通信するために使用されるセルラネットワーク4760、および、低電力ワイドエリア(LPWA)ネットワーク4762、例えば、LoRa Allianceにより公布されたLoRaWan仕様と互換性のあるLPWAネットワーク、または、インターネット技術特別調査委員会(IETF)により公布された仕様と互換性のあるIPv6 over Low Power Wide-Area Network(LPWAN)ネットワークを含む。更に、それぞれのIoTネットワークは、LTEセルラリンク、LPWAリンク、またはZigbee(登録商標)のようなIEEE802.15.4規格に基づくリンクなど、任意の数の通信リンクを使用して、外部ネットワークプロバイダ(例えば、ティア2プロバイダまたはティア3プロバイダ)と通信することができる。それぞれのIoTネットワークは、制約付きアプリケーションプロトコル(CoAP)などの様々なネットワークプロトコルおよびインターネットアプリケーションプロトコルを使用して動作することもできる。それぞれのIoTネットワークは、リンクされたデバイスおよびネットワークのクラスタツリーを形成するリンクのチェーンを提供するコーディネータデバイスと統合することもできる。
【0165】
これらのIoTネットワークの各々は、本明細書に記載のもののような新しい技術的特徴の機会を提供することができる。改善された技術およびネットワークによって、IoTネットワークをフォグデバイスまたはシステムとして使用することを含め、デバイスおよびネットワークの指数成長が可能になり得る。係る改善された技術の使用が増えるにつれて、直接的な人間の介入を必要とせずに、自己管理、機能進化、およびコラボレーションのためにIoTネットワークを開発することができる。改善された技術によって、集中制御されたシステムなくIoTネットワークが機能することさえ可能になり得る。故に、本明細書に記載の改善された技術は、現在の実装をはるかに超えてネットワーク管理および運用機能を自動化および強化するために使用され得る。
【0166】
一例では、バックボーンリンク4702などを介したIoTデバイス4704間の通信が、認証、許可、および会計(AAA)のための分散型システムにより保護され得る。分散化AAAシステムでは、分散型の支払い、クレジット、監査、許可、および認証システムを、相互接続された異種ネットワークインフラストラクチャ全体にわたって実装することができる。これによって、システムおよびネットワークを自律型運用に移行させることができる。これらのタイプの自律型運用では、機械が人的リソースの契約をし、他の機械ネットワークとのパートナシップを交渉することさえできる。これによって、相互の目的の実現と、概説され計画されたサービスレベル契約に対するバランスの取れたサービス供給が可能になるだけでなく、計測、測定、トレーサビリティ、および追跡可能性を提供する解決策を実現することもできる。新しいサプライチェーンの構造および方法を作成することで、人間が全く関与することなく、多数のサービスを作成し、価値を掘り起こし、崩壊させることが可能になり得る。
【0167】
係るIoTネットワークは、音、光、電子トラフィック、顔およびパターンの認識、匂い、振動などの感知技術を、IoTデバイス間の自律型組織に統合することにより更に強化することができる。感覚システムの統合によって、契約上のサービス対象に対する体系的かつ自律的な通信およびサービス供給調整、オーケストレーション、並びに、サービス品質(QoS)ベースのリソースのスウォーミングおよび融合が可能になり得る。ネットワークベースのリソース処理の個々の例のうちの幾つかは以下を含む。
【0168】
例えば、メッシュネットワーク4756は、インラインデータから情報への変換を実行するシステムにより強化され得る。例えば、マルチリンクネットワークを含む処理リソースの自己形成チェーンは、生データの、情報への効率的な変換、並びに、資産とリソースとを区別する能力、および、それぞれの関連付けられる管理を分散することができる。更には、インフラストラクチャおよびリソースベースの信頼およびサービスインデックスの適切なコンポーネントを挿入して、データの整合性、品質、確実さを改善し、データの信頼性の測定基準を供給することができる。
【0169】
例えば、WLANネットワーク4758は、標準変換を実行するシステムを使用してマルチ標準接続性を提供し、異なるプロトコルを使用するIoTデバイス4704が通信することを可能にし得る。更なるシステムが、可視インターネットリソースおよび非表示インターネットリソースを含むマルチ標準インフラストラクチャ全体にわたってシームレスな相互接続性を提供することができる。
【0170】
例えば、セルラネットワーク4760における通信は、データをオフロードするか、通信をより多くの遠隔デバイスに拡張するか、またはその両方を行うシステムにより強化され得る。LPWAネットワーク4762は、非インターネットプロトコル(IP)からIPへの相互接続、アドレス指定、およびルーティングを実行するシステムを含むことができる。更に、IoTデバイス4704の各々は、そのデバイスとの広域通信に適したトランシーバを含むことができる。更に、各IoTデバイス4704は、更なるプロトコルおよび周波数を使用する通信のための他のトランシーバを含むことができる。これについては、
図49および
図50に示すIoT処理デバイスの通信環境およびハードウェアとの関連で更に説明する。
【0171】
最後に、IoTデバイスのクラスタは、クラウドネットワークだけでなく他のIoTデバイスとも通信するように装備され得る。これによって、IoTデバイスがデバイス間にアドホックネットワークを形成することが可能になり、IoTデバイスが、フォグデバイスと呼ばれ得る単一のデバイスとして機能することが可能になり得る。この構成については、以下の
図48との関連で更に説明する。
【0172】
図48は、クラウドコンピューティングネットワークのエッジでフォグデバイスとして動作するIoTデバイス(デバイス4802)のメッシュネットワークと通信しているクラウドコンピューティングネットワークを示す。IoTデバイスのメッシュネットワークは、クラウド4800のエッジで動作するフォグ4820と呼ばれ得る。図を簡略化するため、全てのIoTデバイス4802へのラベル付けはしていない。
【0173】
フォグ4820は、幾つかのIoTデバイス4802が、例えば、無線リンク4822により互いに通信している、大規模に相互接続されたネットワークであると見なされ得る。例として、この相互接続されたネットワークは、Open Connectivity Foundation(商標)(OCF)によりリリースされた相互接続仕様を使用して促進され得る。この規格によって、デバイスは互いを発見し、相互接続のための通信を確立することができる。例えば、最適化されたリンク状態ルーティング(OLSR)プロトコル、モバイルアドホックネットワーキングへのより良いアプローチ(B.A.T.M.A.N.)ルーティングプロトコル、またはOMAライトウェイトM2M(LWM2M)プロトコルをとりわけ含む、他の相互接続プロトコルも使用され得る。
【0174】
この例では、3つのタイプのIoTデバイス4802、すなわち、ゲートウェイ4804、データアグリゲータ4826、およびセンサ4828が示されているが、IoTデバイス4802と機能との任意の組み合わせが使用され得る。ゲートウェイ4804は、クラウド4800とフォグ4820との間の通信を提供するエッジデバイスであってよく、動作データ、フローデータ、および温度データなどといったセンサ4828から取得されるデータのためのバックエンド処理機能を提供することもできる。データアグリゲータ4826は、任意の数のセンサ4828からデータを収集し、分析のためのバックエンド処理機能を実行することができる。結果、生データ、またはその両方は、ゲートウェイ4804を介してクラウド4800に渡され得る。センサ4828は、例えば、データの収集およびデータの処理の両方を行うことができる完全なIoTデバイス4802であってよい。場合によっては、センサ4828は、例えば、データを収集し、データアグリゲータ4826またはゲートウェイ4804によるデータの処理を可能にするなど、機能がより制限され得る。
【0175】
任意のIoTデバイス4802からの通信は、IoTデバイス4802の何れかの間の便利な経路(例えば、最も便利な経路)に沿って渡されて、ゲートウェイ4804に到達することができる。これらのネットワークでは、相互接続の数によって実質的な冗長性が提供され、幾つかのIoTデバイス4802が失われた場合でも通信を維持することができる。更には、メッシュネットワークを使用すると、非常に低電力であるか、またはインフラストラクチャから離れた所に位置するIoTデバイス4802を使用することが可能になり得る。なぜなら、別のIoTデバイス4802に接続する範囲が、ゲートウェイ4804に接続する範囲よりもはるかに小さい可能性があるからである。
【0176】
これらのIoTデバイス4802から提供されるフォグ4820は、クラウド4800のエッジに配置される単一のデバイス、例えば、フォグデバイスとして、サーバ4806などのクラウド4800内のデバイスに提示され得る。この例では、フォグデバイスから来るアラートは、フォグ4820内の特定のIoTデバイス4802から来るものとして識別されることなく送信され得る。このように、フォグ4820は、とりわけ、データ分析、データ集約、および機械学習などの処理タスクまたはデータ量の多いタスクを実行するためのコンピューティングリソースおよびストレージリソースを提供する分散プラットフォームと見なされ得る。
【0177】
幾つかの例では、IoTデバイス4802は、命令型プログラミングスタイルを使用して構成されてよく、例えば、各IoTデバイス4802は、特定の機能および通信パートナを有する。ただし、フォグデバイスを形成するIoTデバイス4802は、宣言型プログラミングスタイルで構成されてよく、IoTデバイス4802が、動作および通信を再構成すること、例えば、条件、クエリ、およびデバイス故障に応じて必要なリソースを決定することを可能にする。例として、IoTデバイス4802により監視される機器のサブセットの動作に関するサーバ4806に位置するユーザからのクエリによって、フォグ4820デバイスは、クエリに応答するために必要な特定のセンサ4828などのIoTデバイス4802を選択することができる。次に、これらのセンサ4828からのデータは、クエリに応答するためにフォグ4820デバイスによりサーバ4806に送信される前に、センサ4828、データアグリゲータ4826、またはゲートウェイ4804の任意の組み合わせにより集約および分析され得る。この例では、フォグ4820内のIoTデバイス4802は、クエリに基づいて使用されるセンサ4828を選択すること、例えば、流量センサまたは温度センサからのデータを追加することができる。更に、IoTデバイス4802のうちの幾つかが動作可能でない場合は、フォグ4820デバイス内の他のIoTデバイス4802が、利用可能であれば、類似データを提供することができる。
【0178】
他の例では、上記の動作および機能は、電子処理システムの例示的な形態のIoTデバイス機械により具現化されてよく、その中で、例示的な実施形態に従って、命令の組またはシーケンスが実行されて、電子処理システムに、本明細書に記載の方法の何れか1つを実行させることができる。機械は、パーソナルコンピュータ(PC)、タブレットPC、携帯情報端末(PDA)、携帯電話またはスマートフォンの態様により具現化される機械、または、機械により取られるアクションを指定する命令(シーケンシャルまたはその他)を実行できる任意の機械を含む、IoTデバイスまたはIoTゲートウェイであってよい。更に、上の例では単一の機械のみが描写および言及され得るが、係る機械は、本明細書に記載の方法の何れか1つまたは複数を実行するための命令の組(または複数の組)を個々にまたは共同で実行する機械の任意の集まりを含んでいるとも見なされるものとする。更に、プロセッサベースのシステムに対するこれらの例および同様の例は、本明細書に記載の方法の何れか1つまたは複数を実行するための命令を個々にまたは共同で実行するよう、プロセッサ(例えば、コンピュータ)により制御または操作される1つまたは複数の機械の任意の組を含んでいると見なされるものとする。幾つかの実装では、1つまたはそれより多い複数のデバイスが協調して動作して、機能を実装し、本明細書に記載のタスクを実行することができる。場合によっては、1つまたは複数のホストデバイスが、データの供給、命令の提供、結果の集約、またはそうでなければ複数のデバイスにより提供される共同の動作および機能の促進を行うことができる。機能は、単一のデバイスにより実装されると、デバイスにローカルな機能と見なされることがあるが、単一の機械として動作する複数のデバイスの実装では、数ある例示的な実装の中でもとりわけ、機能はデバイスに対して集合的にローカルと見なされることがあり、このデバイスの集まりは、他の遠隔機械(単一のデバイスまたはコレクションデバイスとして実装される)により提供される結果を提供または消費し得る。
【0179】
例えば、
図49は、幾つかのモノのインターネット(IoT)デバイスと通信しているクラウドコンピューティングネットワークまたはクラウド4900の図面を示す。クラウド4900は、インターネットを表してもよいし、企業の専有ネットワークなどのワイドエリアネットワーク(WAN)またはローカルエリアネットワーク(LAN)であってもよい。IoTデバイスは、様々な組み合わせでグループ化される任意の数の異なるタイプのデバイスを含むことができる。例えば、交通制御グループ4906が、都市の街路に沿ったIoTデバイスを含むことができる。これらのIoTデバイスは、停止信号、交通流量モニタ、カメラ、および気象センサなどを含むことができる。交通制御グループ4906または他のサブグループは、LPWAリンクおよび光リンクなどといった有線または無線のリンク4908を介してクラウド4900と通信状態にあってよい。更に、有線または無線のサブネットワーク4912は、IoTデバイスが、例えば、ローカルエリアネットワークおよび無線ローカルエリアネットワークなどを介して、互いに通信することを可能にし得る。IoTデバイスは、ゲートウェイ4910または4928などの別のデバイスを使用して、クラウド4900などの遠隔地と通信することができる。IoTデバイスは、1つまたは複数のサーバ4930を使用して、クラウド4900またはゲートウェイ4910との通信を容易にすることもできる。例えば、1つまたは複数のサーバ4930は、ローカルエリアネットワーク間のローカルエッジクラウドまたはフォグの実装をサポートするための中間ネットワークノードとして動作することができる。更に、示されているゲートウェイ4928は、クラウドからゲートウェイへ・ゲートウェイから多くのエッジデバイスへといった構成で、例えば、様々なIoTデバイス4914、4920、4924が、クラウド4900内のリソースの割り当ておよび使用に対して制約されるかまたは動的である状態で、動作することができる。
【0180】
IoTデバイスの他の例示的なグループは、多数ある中でもとりわけ、遠隔気象台4914、ローカル情報端末4916、アラームシステム4918、現金自動支払い機4920、アラームパネル4922、または、緊急車両4924もしくは他の車両4926などの移動車両を含むことができる。これらのIoTデバイスの各々は、他のIoTデバイス、サーバ4904、別のIoTフォグデバイスもしくはシステム(不図示だが、
図48に示されている)、またはそれらの組み合わせと通信状態にあってよい。IoTデバイスのグループは、様々な住宅、商業、および産業環境(プライベート環境またはパブリック環境の両方を含む)に展開され得る。
【0181】
図49から分かるように、多数のIoTデバイスがクラウド4900を介して通信している可能性がある。これによって、複数の異なるIoTデバイスが他のデバイスに対して自律的に情報を要求または提供することが可能になり得る。例えば、IoTデバイスのグループ(例えば、交通制御グループ4906)は、遠隔気象台4914のグループに現在の天気予報を要求することができ、遠隔気象台4914のグループは、人間が介入することなく予報を提供することができる。更に、緊急車両4924は、強盗が進行中であることを、現金自動支払い機4920により警告され得る。緊急車両4924は、現金自動支払い機4920に向かって進んでいる際、交通制御グループ4906にアクセスして、その場所へのクリアランスを要求することができる。このクリアランスは、例えば、緊急車両4924が妨げられずに交差点へアクセスするのに十分間に合うように交差点での交差交通を遮断するために赤に変わるライトによるものである。
【0182】
遠隔気象台4914または交通制御グループ4906などのIoTデバイスのクラスタは、クラウド4900だけでなく、他のIoTデバイスとも通信するように装備され得る。これによって、IoTデバイスがデバイス間にアドホックネットワークを形成することが可能になり、(例えば、
図48を参照して上述したように)フォグデバイスまたはシステムと呼ばれ得る単一のデバイスとして機能することが可能になり得る。
【0183】
図50は、本明細書に記載の技術を実装するためにIoTデバイス5050に存在し得るコンポーネントの例のブロックダイアグラムである。IoTデバイス5050は、例に示されているか、または上の開示で言及されているコンポーネントの任意の組み合わせを含むことができる。コンポーネントは、IC、その一部、ディスクリート電子デバイス、または他のモジュール、ロジック、ハードウェア、ソフトウェア、ファームウェア、またはIoTデバイス5050に適合されるそれらの組み合わせとして、または、より大きなシステムのシャーシ内に別の方法で組み込まれるコンポーネントとして実装され得る。更に、
図50のブロックダイアグラムは、IoTデバイス5050のコンポーネントの高レベルの図を示すことを意図している。ただし、他の実装では、示されているコンポーネントのうちの幾つかが省略されてよく、更なるコンポーネントが存在してよく、示されているコンポーネントの異なる配置が行われてよい。
【0184】
IoTデバイス5050は、プロセッサ5052を含むことができる。プロセッサ5052は、マイクロプロセッサ、マルチコアプロセッサ、マルチスレッドプロセッサ、超低電圧プロセッサ、組み込みプロセッサ、または他の既知の処理要素であってよい。プロセッサ5052は、プロセッサ5052および他のコンポーネントが、単一の集積回路内、または、IntelのEdison(商標)またはGalileo(商標)SoC基板などの単一のパッケージ内に形成される、システムオンチップ(SoC)の一部であってよい。例として、プロセッサ5052は、Intel(登録商標)Architecture Core(商標)ベースのプロセッサ、例えば、Quark(商標)、Atom(商標)、i3、i5、i7、または、MCUクラスのプロセッサ、または、カリフォルニア州サンタクララのIntel(登録商標)Corporationから入手可能な別の係るプロセッサを含むことができる。ただし、カリフォルニア州サニーベールのAdvanced Micro Devices,Inc.(AMD)から入手可能なもの、カリフォルニア州サニーベールのMIPS Technologies,Inc.のMIPSベース設計、ARM Holdings,Ltd.もしくはその顧客、または、そのライセンシもしくは採用者からライセンス供与されたARMベースの設計など、任意の数の他のプロセッサが使用され得る。プロセッサは、Apple(登録商標)Inc.のA5~A10プロセッサ、Qualcomm(登録商標)Technologies,Inc.のSnapdragon(商標)プロセッサ、またはTexas Instruments,Inc.のOMAP(商標)プロセッサなどのユニットを含むことができる。
【0185】
プロセッサ5052は、相互接続5056(例えば、バス)を介してシステムメモリ5054と通信することができる。任意の数のメモリデバイスを使用して、所与の量のシステムメモリを提供することができる。例として、メモリは、DDRまたはモバイルDDR規格(例えば、LPDDR、LPDDR2、LPDDR3、またはLPDDR4)などの合同電子デバイス委員会(JEDEC)の設計に従ったランダムアクセスメモリ(RAM)であってよい。様々な実装において、個々のメモリデバイスは、単一のダイパッケージ(SDP)、デュアルダイパッケージ(DDP)、またはクワッドダイパッケージ(Q17P)など、任意の数の異なるパッケージタイプのものであってよい。幾つかの例では、これらのデバイスをマザーボード上に直接はんだ付けして薄型の解決策を提供できるが、他の例では、デバイスは、同様にして所与のコネクタでマザーボードに結合する1つまたは複数のメモリモジュールとして構成される。他のタイプのメモリモジュール、例えば、限定されるわけではないが、microDIMMまたはMiniDIMMを含む、異なる種類のデュアルインラインメモリモジュール(DIMM)など、任意の数の他のメモリ実装が使用され得る。
【0186】
データ、アプリケーション、およびオペレーティングシステムなどといった情報の永続的なストレージを提供するために、ストレージ5058は、相互接続5056を介してプロセッサ5052に結合することもできる。一例では、ストレージ5058は、ソリッドステートディスクドライブ(SSDD)を介して実装され得る。ストレージ5058に使用され得る他のデバイスは、SDカード、microSDカード、およびxDピクチャカードなどといったフラッシュメモリカード、およびUSBフラッシュドライブを含む。低電力の実装では、ストレージ5058は、プロセッサ5052と関連付けられるオンダイメモリまたはレジスタであってよい。ただし、幾つかの例では、ストレージ5058は、マイクロハードディスクドライブ(HDD)を使用して実装され得る。更には、とりわけ、抵抗変化メモリ、相変化メモリ、ホログラフィックメモリ、または化学メモリなど、記載されている技術に加えて、またはその代わりに、任意の数の新しい技術がストレージ5058に使用され得る。
【0187】
コンポーネントは、相互接続5056を介して通信することができる。相互接続5056は、業界標準アーキテクチャ(ISA)、拡張ISA(EISA)、周辺コンポーネント相互接続(PCI)、周辺コンポーネント相互接続拡張(PCIx)、PCIエクスプレス(PCIe)を含む任意の数の技術、または任意の数の他の技術を含むことができる。相互接続5056は、例えば、SoCベースのシステムで使用される専有バスであってよい。とりわけ、I2Cインタフェース、SPIインタフェース、ポイントツーポイントインタフェース、および電力バスなどの他のバスシステムが含まれ得る。
【0188】
相互接続5056は、他のメッシュデバイス5064との通信のために、プロセッサ5052をメッシュトランシーバ5062に結合することができる。メッシュトランシーバ5062は、とりわけ、Bluetooth(登録商標)Special Interest Groupにより定義されているBluetooth(登録商標)Low Energy(BLE)規格、またはZigBee(登録商標)規格を使用した、IEEE802.15.4規格に基づく2.4ギガヘルツ(GHz)伝送など、任意の数の周波数およびプロトコルを使用することができる。特定の無線通信プロトコル用に構成される任意の数の無線機が、メッシュデバイス5064への接続に使用され得る。例えば、WLANユニットを使用することで、米国電気電子技術者協会(IEEE)の802.11規格に従ってWi-Fi(商標)通信を実装することができる。更には、例えば、セルラまたは他の無線広域プロトコルによる無線広域通信が、WWANユニットを介して行われ得る。
【0189】
メッシュトランシーバ5062は、異なる範囲での通信のために、複数の規格または無線機を使用して通信することができる。例えば、IoTデバイス5050は、BLEまたは別の低電力無線に基づくローカルトランシーバを使用して、例えば、約10メートル以内の近接デバイスと通信することで、電力を節約することができる。例えば、約50メートル以内の、より離れたメッシュデバイス5064には、ZigBeeまたは他の中間電力無線を介して到達することができる。両方の通信技術は、異なる電力レベルで単一の無線を介して行われてもよいし、別個のトランシーバ、例えば、BLEを使用するローカルトランシーバおよびZigBeeを使用する別個のメッシュトランシーバ、を介して行われてもよい。
【0190】
ローカルエリアネットワークまたはワイドエリアネットワークのプロトコルを介してクラウド5000内のデバイスまたはサービスと通信するために、無線ネットワークトランシーバ5066が含まれ得る。無線ネットワークトランシーバ5066は、とりわけ、IEEE802.15.4規格またはIEEE802.15.4g規格に従ったLPWAトランシーバであってよい。IoTデバイス5050は、SemtechおよびLoRa Allianceにより開発されたLoRaWAN(商標)(長距離ワイドエリアネットワーク)を使用して、広域で通信することができる。本明細書に記載の技術は、これらの技術に限定されるわけではないが、Sigfoxなどの長距離、低帯域幅の通信を実装する任意の数の他のクラウドトランシーバ、および他の技術と共に使用され得る。更には、IEEE802.15.4e仕様に記載のタイムスロットチャネルホッピングなどの他の通信技術が使用され得る。
【0191】
本明細書に記載のように、メッシュトランシーバ5062および無線ネットワークトランシーバ5066について言及されたシステムに加えて、任意の数の他の無線通信およびプロトコルが使用され得る。例えば、無線トランシーバ5062および5066は、高速通信を実装するためにスペクトラム拡散(SPA/SAS)通信を使用するLTEまたは他のセルラトランシーバを含むことができる。更には、ネットワーク通信の提供および中速通信のためのWi-Fi(登録商標)ネットワークなど、任意の数の他のプロトコルが使用され得る。
【0192】
無線トランシーバ5062および5066は、任意の数の3GPP(第3世代パートナシッププロジェクト)仕様、特にロングタームエボリューション(LTE)、ロングタームエボリューション・アドバンスト(LTE-A)、およびロングタームエボリューション・アドバンストプロ(LTE-A Pro)と互換性のある無線機を含むことができる。なお、任意の数の他の、固定通信、モバイル通信、または衛星通信の技術および規格と互換性のある無線機が選択され得る。これらは、例えば、任意のセルラ広域無線通信技術を含むことができる。セルラ広域無線通信技術は、例えば、第5世代(5G)通信システム、グローバルシステムフォーモバイルコミュニケーションズ(GSM(登録商標))無線通信技術、汎用パケット無線サービス(GPRS)無線通信技術、またはGSM進化型高速データレート(EDGE)無線通信技術、UMTS(ユニバーサル移動体通信システム)通信技術を含むことができる。上記の規格に加えて、無線ネットワークトランシーバ5066には、任意の数の衛星アップリンク技術が使用され得る。衛星アップリンク技術は、例えば、とりわけ、ITU(国際電気通信連合)またはETSI(欧州電気通信標準化機構)により発行された規格に準拠する無線機を含む。従って、本明細書で提供する例は、既存のものであり、かつ、まだ定式化されていない、他の様々な通信技術に適用可能なものとして理解される。
【0193】
クラウド5000、またはメッシュデバイス5064などの他のデバイスへの有線通信を提供するために、ネットワークインタフェースコントローラ(NIC)5068が含まれ得る。有線通信は、イーサネット(登録商標)接続を提供してもよいし、多数ある中でもとりわけ、コントローラエリアネットワーク(CAN)、ローカル相互接続ネットワーク(LIN)、DeviceNet、ControlNet、Data Highway+、PROFIBUS、またはPROFINETなどの他のタイプのネットワークに基づいていてもよい。第2ネットワーク、例えば、イーサネットを介してクラウドへの通信を提供するNIC5068、および別のタイプのネットワークを介して他のデバイスへの通信を提供する第2のNIC5068、への接続を可能にするために、更なるNIC5068が含まれ得る。
【0194】
相互接続5056は、プロセッサ5052を、外部のデバイスまたはサブシステムを接続するために使用される外部インタフェース5070に結合することができる。外部デバイスは、加速度計、レベルセンサ、流量センサ、光学光センサ、カメラセンサ、温度センサ、全地球測位システム(GPS)センサ、圧力センサ、および気圧センサなどといったセンサ5072を含むことができる。外部インタフェース5070は更に、IoTデバイス5050を、電源スイッチ、バルブアクチュエータ、可聴音生成器、および視覚的警告デバイスなどといったアクチュエータ5074に接続するために使用され得る。
【0195】
幾つかのオプションの例では、様々な入出力(I/O)デバイスが、IoTデバイス5050内に存在するか、またはIoTデバイス5050に接続され得る。例えば、センサの読み取り値またはアクチュエータの位置などの情報を示すために、ディスプレイまたは他の出力デバイス5084が含まれ得る。入力を受け入れるために、タッチ画面またはキーパッドなどの入力デバイス5086が含まれ得る。出力デバイス5084は、任意の数の形態の聴覚表示または視覚表示を含むことができる。表示は、バイナリステータスインジケータ(例えば、LED)およびマルチ文字視覚出力などの単純な視覚出力、または表示画面(例えば、LCD画面)などのより複雑な出力を含み、文字、グラフィックス、およびマルチメディアオブジェクトなどの出力は、IoTデバイス5050の操作から生成されるか、または生み出される。
【0196】
電池5076は、IoTデバイス5050に電力を供給することができるが、IoTデバイス5050が固定された場所に装着されている例では、電力系統に結合される電力供給装置を含むことができる。電池5076は、リチウムイオン電池、または亜鉛-空気電池、アルミニウム-空気電池、およびリチウム-空気電池などといった金属-空気電池であってよい。
【0197】
IoTデバイス5050には、電池5076の充電状態(SoCh)を追跡するために、電池モニタ/充電器5078が含まれ得る。電池モニタ/充電器5078は、電池5076の他のパラメータを監視して、電池5076の健康状態(SoH)および機能状態(SoF)などの故障予測を提供するために使用され得る。電池モニタ/充電器5078は、Linear TechnologiesのLTC4020またはLTC2990、アリゾナ州フェニックスのON SemiconductorのADT7488A、またはテキサス州ダラスのTexas InstrumentsのUCD90xxxファミリのICなどの電池監視集積回路を含むことができる。電池モニタ/充電器5078は、電池5076上の情報を、相互接続5056を介してプロセッサ5052に伝えることができる。電池モニタ/充電器5078は、プロセッサ5052が電池5076の電圧または電池5076から流れる電流を直接監視できるようにするアナログ-デジタル(ADC)変換器を含むこともできる。電池パラメータは、伝送周波数、メッシュネットワーク動作、および感知周波数などといった、IoTデバイス5050が実行できるアクションを決定するために使用され得る。
【0198】
電池5076を充電するために、発電ブロック5080、または電力系統に結合される他の電力供給装置が、電池モニタ/充電器5078と結合され得る。幾つかの例では、発電ブロック5080を無線受電器と交換することで、例えば、IoTデバイス5050内のループアンテナを介して、無線で電力を取得することができる。電池モニタ/充電器5078には、とりわけ、カリフォルニア州ミルピタスのLinear TechnologiesのLTC4020チップなどの無線電池充電回路が含まれ得る。選択される特定の充電回路は、電池5076のサイズ、ひいては必要な電流に依存する。充電は、とりわけ、Airfuel Allianceにより公布されたAirfuel規格、ワイヤレスパワーコンソーシアムにより公布されたQi無線充電規格、またはAlliance for Wireless Powerにより公布されたRezence充電規格を使用して実行され得る。
【0199】
ストレージ5058は、本明細書に記載の技術を実装するためのソフトウェア、ファームウェア、またはハードウェアのコマンドの形態の命令5082を含むことができる。係る命令5082は、メモリ5054およびストレージ5058に含まれるコードブロックとして示されているが、コードブロックの何れかを、例えば、特定用途向け集積回路(ASIC)に組み込まれるハードワイヤード回路に置き換えることができると理解され得る。
【0200】
一例では、メモリ5054、ストレージ5058、またはプロセッサ5052を介して提供される命令5082は、非一時的機械可読媒体5060として具現化され得る。非一時的機械可読媒体5060は、プロセッサ5052に、IoTデバイス5050で電子操作を実行するように指示するコードを含む。プロセッサ5052は、相互接続5056を介して非一時的機械可読媒体5060にアクセスすることができる。例えば、非一時的機械可読媒体5060は、
図50のストレージ5058で説明されているデバイスにより具現化されてもよいし、光ディスク、フラッシュドライブ、または任意の数の他のハードウェアデバイスなどの特定のストレージユニットを含んでもよい。非一時的機械可読媒体5060は、例えば、上記の動作および機能のフローチャートおよびブロックダイアグラムとの関連で説明した通り、プロセッサ5052に、アクションの特定のフローまたはシーケンスを実行するように指示するための命令を含むことができる。
【0201】
図51は、ある実施形態に係るプロセッサの例示的な図である。プロセッサ5100は、上の実装に関連して使用され得るハードウェアデバイスのタイプの例である。プロセッサ5100は、マイクロプロセッサ、組み込みプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、マルチコアプロセッサ、シングルコアプロセッサ、またはコードを実行するための他のデバイスなど、任意のタイプのプロセッサであってよい。
図51にはプロセッサ5100が1つだけ示されているが、処理要素は代替的に、
図51に示すプロセッサ5100を2つ以上含むことができる。プロセッサ5100は、シングルスレッドコアであってよい。または、少なくとも1つの実施形態では、プロセッサ5100は、コアごとに2つ以上のハードウェアスレッドコンテキスト(または「論理プロセッサ」)を含み得るという点で、マルチスレッドであってよい。
【0202】
図51は、ある実施形態に係るプロセッサ5100に結合されるメモリ5102も示す。メモリ5102は、既知のまたはそうでなければ当業者に利用可能な多種多様なメモリ(メモリ階層の様々な層を含む)の何れかであってよい。係るメモリ要素は、限定されるわけではないが、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、フィールドプログラマブルゲートアレイ(FPGA)の論理ブロック、消去可能プログラマブルリードオンリメモリ(EPROM)、および電気的消去可能プログラマブルROM(EEPROM)を含むことができる。
【0203】
プロセッサ5100は、本明細書で詳述するアルゴリズム、プロセス、または動作と関連付けられる任意のタイプの命令を実行することができる。概して、プロセッサ5100は、要素または項目(例えば、データ)を、ある状態または状況から別の状態または状況に変換することができる。
【0204】
プロセッサ5100により実行される1つまたは複数の命令であり得るコード5104は、メモリ5102に格納されてもよいし、ソフトウェア、ハードウェア、ファームウェア、もしくはそれらの任意の適切な組み合わせに、または、必要に応じて特定の必要性に基づき、任意の他の内部コンポーネントもしくは外部コンポーネント、デバイス、要素、もしくは物体に格納されてもよい。一例では、プロセッサ5100は、コード5104により示される命令のプログラムシーケンスに従うことができる。各命令はフロントエンドロジック5106に入り、1つまたは複数のデコーダ5108により処理される。デコーダは、その出力として、予め定義された形式の固定幅マイクロオペレーションなどのマイクロオペレーションを生成してもよいし、元のコード命令を反映する他の命令、マイクロ命令、または制御信号を生成してもよい。フロントエンドロジック5106は、レジスタリネーミングロジック5110およびスケジューリングロジック5112も含み、これらのロジックは概して、リソースを割り当て、実行のために、命令に対応する動作をキューに入れる。
【0205】
プロセッサ5100は、実行ユニット5116a、5116b、5116nなどの組を有する実行ロジック5114を含むこともできる。幾つかの実施形態は、特定の機能または機能の組に特化した実行ユニットを幾つか含むことができる。他の実施形態は、実行ユニットを1つだけ、または、特定の機能を実行できる実行ユニットを1つ含むことができる。実行ロジック5114は、コード命令により指定される操作を実行する。
【0206】
コード命令により指定される操作の実行の完了後、バックエンドロジック5118は、コード5104の命令をリタイアすることができる。一実施形態では、プロセッサ5100は、アウトオブオーダ実行を可能にするが、命令のインオーダリタイアメントを必要とする。リタイアメントロジック5120は、様々な既知の形態(例えば、リオーダバッファなど)を取ることができる。このようにして、プロセッサ5100は、コード5104の実行中に、少なくとも、デコーダにより生成される出力、レジスタリネーミングロジック5110により利用されるハードウェアのレジスタおよびテーブル、並びに、実行ロジック5114により修正される任意のレジスタ(不図示)に関して変換される。
【0207】
図51には示されていないが、処理要素は、プロセッサ5100を有するチップ上に他の要素を含むことができる。例えば、処理要素は、プロセッサ5100と共にメモリ制御ロジックを含むことができる。処理要素は、I/O制御ロジックを含むことができる、および/または、メモリ制御ロジックと統合されるI/O制御ロジックを含むことができる。処理要素は、1つまたは複数のキャッシュを含むこともできる。幾つかの実施形態では、不揮発性メモリ(フラッシュメモリまたはヒューズなど)もプロセッサ5100と共にチップ上に含まれ得る。
【0208】
図52は、ある実施形態に係る、ポイントツーポイント(PtP)構成で配置されるコンピューティングシステム5200を示す。特に、
図52は、プロセッサ、メモリ、および入出力デバイスが幾つかのポイントツーポイントインタフェースにより相互接続されるシステムを示す。概して、本明細書に記載のコンピューティングシステムのうちの1つまたは複数は、コンピューティングシステム5200と同じ方式または類似した方式で構成され得る。
【0209】
プロセッサ5270および5280はそれぞれ、メモリ要素5232および5234と通信するために、統合されたメモリコントローラロジック(MC)5272および5282を含むこともできる。代替的な実施形態では、メモリコントローラロジック5272および5282は、プロセッサ5270および5280とは別個のディスクリートロジックであってよい。メモリ要素5232および/または5234は、本明細書で概説する動作および機能を実現する際にプロセッサ5270および5280により使用される様々なデータを格納することができる。
【0210】
プロセッサ5270および5280は、他の図に関連して説明されているもののような任意のタイプのプロセッサであってよい。プロセッサ5270および5280は、ポイントツーポイント(PtP)インタフェース回路5278および5288をそれぞれ使用して、ポイントツーポイントインタフェース5250を介してデータを交換することができる。プロセッサ5270および5280はそれぞれ、ポイントツーポイントインタフェース回路5276、5286、5294および5298を使用して、個々のポイントツーポイントインタフェース5252および5254を介してチップセット5290とデータを交換することができる。チップセット5290は、PtPインタフェース回路であり得るインタフェース回路5292を使用して、高性能グラフィックスインタフェース5239を介して高性能グラフィック回路5238とデータを交換することもできる。代替的な実施形態では、
図52に示すPtPリンクの何れかまたは全てが、PtPリンクではなくマルチドロップバスとして実装され得る。
【0211】
チップセット5290は、インタフェース回路5296を介してバス5220と通信状態にあってよい。バス5220は、バスブリッジ5218およびI/Oデバイス5216などの、それを介して通信する1つまたは複数のデバイスを有することができる。バスブリッジ5218は、バス5210を介して、ユーザインタフェース5212(キーボード、マウス、タッチ画面、または他の入力デバイスなど)、通信デバイス5226(モデム、ネットワークインタフェースデバイス、または、コンピュータネットワーク5260を介して通信し得る他のタイプの通信デバイスなど)、オーディオI/Oデバイス5214、および/またはデータストレージデバイス5228などの他のデバイスと通信状態にあってよい。データストレージデバイス5228は、プロセッサ5270および/または5280により実行され得るコード5230を格納することができる。代替的な実施形態では、バスアーキテクチャの任意の部分が1つまたは複数のPtPリンクで実装され得る。
【0212】
図52に示すコンピュータシステムは、本明細書に記載の様々な実施形態を実装するために利用され得るコンピューティングシステムの実施形態の概略図である。
図52に示すシステムの様々なコンポーネントが、システムオンチップ(SoC)アーキテクチャで、または本明細書で提供する例および実装の機能および特徴を実現できる任意の他の適切な構成で組み合わされ得ることが解るであろう。
【0213】
更なる例では、機械可読媒体は、機械により実行するための命令を格納するか、エンコードするか、または運ぶことができ、かつ、機械に、本開示の方法の何れか1つまたは複数を実行させ、または、係る命令に利用されるかまたは関連付けられるデータ構造を格納するか、エンコードするか、または運ぶことができる、任意の有形の媒体を含むこともできる。従って、「機械可読媒体」は、限定されるわけではないが、ソリッドステートメモリ、並びに、光学的および磁気的な媒体を含むことができる。機械可読媒体の具体的な例には、例として、限定されるわけではないが、半導体メモリデバイス(例えば、電気的プログラマブルリードオンリメモリ(EPROM)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)およびフラッシュメモリデバイスを含む不揮発性メモリと、内蔵ハードディスクおよびリムーバブルディスクなどの磁気ディスクと、光磁気ディスクと、CD-ROMディスクおよびDVD-ROMディスクとが含まれる。機械可読媒体により具現化される命令は、幾つかの転送プロトコル(例えば、HTTP)の何れか1つを利用するネットワークインタフェースデバイスを介した伝送媒体を使用して、通信ネットワーク経由で更に送信または受信され得る。
【0214】
本明細書に記載の機能ユニットまたは機能は、それらの実装の独立性をより具体的に強調すべく、コンポーネントまたはモジュールとして参照またはラベル付けされている可能性があることを理解されたい。係るコンポーネントは、任意の数のソフトウェアまたはハードウェアの形態により具現化され得る。例えば、コンポーネントまたはモジュールは、カスタムの超大規模集積(VLSI)回路またはゲートアレイ、論理チップ、トランジスタなどの既製の半導体、または他のディスクリートコンポーネントを含むハードウェア回路として実装され得る。コンポーネントまたはモジュールは、フィールドプログラマブルゲートアレイ、プログラマブルアレイロジック、またはプログラマブルロジックデバイスなどといったプログラマブルハードウェアデバイスに実装されてもよい。コンポーネントまたはモジュールは、様々なタイプのプロセッサにより実行するためのソフトウェアに実装されてもよい。実行可能コードの識別されたコンポーネントまたはモジュールは、例えば、コンピュータ命令の1つまたは複数の物理ブロックまたは論理ブロックを含むことができ、これらは、例えば、目的、手順、または機能として編成され得る。それにもかかわらず、識別されたコンポーネントまたはモジュールの実行ファイルは、物理的に一緒に配置する必要はないが、論理的に一緒に結合されると、コンポーネントまたはモジュールを含み、かつ、コンポーネントまたはモジュールの規定の目的を実現する、異なる場所に格納された全く異なる命令を含むことができる。
【0215】
実際、実行可能コードのコンポーネントまたはモジュールは、単一の命令または多くの命令であってよく、更には、幾つかの異なるコードセグメントに、異なるプログラム間に、かつ、幾つかのメモリデバイスまたは処理システム全体にわたって分散され得る。特に、記載されているプロセスの幾つかの側面(コードの書き換えおよびコード分析など)は、コードが展開されているシステム(例えば、センサまたはロボットに組み込まれたコンピュータ)とは異なる処理システム(例えば、データセンタ内のコンピュータ)で行われ得る。同様に、運用データは、本明細書ではコンポーネントまたはモジュール内で識別および図示されてよく、任意の適切な形態で具現化され、任意の適切なタイプのデータ構造内で編成されてよい。運用データは、単一のデータセットとして収集されてもよいし、異なるストレージデバイスを含む異なる場所に分散されてもよく、少なくとも部分的には、単にシステムまたはネットワーク上の電子信号として存在し得る。コンポーネントまたはモジュールは、所望の機能を実行するように動作可能なエージェントを含めて、受動型または能動型であってよい。
【0216】
ここに記載の方法、システム、およびデバイスの実施形態の更なる例は、以下の非限定的な構成を含む。以下の非限定的な例の各々は、独立したものであってもよいし、以下にまたは本開示全体を通して提供する他の例の何れか1つまたは複数と任意の順列または組み合わせで組み合わされてもよい。
【0217】
本開示は特定の実装および概して関連付けられる方法の観点から説明されているが、当業者には、これらの実装および方法の改変形態および順列が明らかであろう。例えば、本明細書に記載のアクションは、記載のものとは異なる順序で実行されてよく、それでもなお望ましい結果を実現することができる。一例として、添付図面に示すプロセスでは、所望の結果を実現するために、示されている特定の順序、または順番が必ずしも必要ではない。特定の実装では、マルチタスクおよび並列処理が有利であり得る。更には、他のユーザインタフェースのレイアウトおよび機能がサポートされ得る。以下の特許請求の範囲内には他の変形形態が含まれる。
【0218】
本明細書は、多くの具体的な実装の詳細を含むが、これらは、任意の発明の範囲または特許請求され得るものの範囲を限定するものとしてではなく、むしろ特定の発明の特定の実施形態に固有の特徴を説明するものとして解釈されるべきである。別個の実施形態の文脈で本明細書に記載の特定の特徴が、単一の実施形態に組み合わせて実装されてもよい。反対に、単一の実施形態の文脈で記載されている様々な特徴が、複数の実施形態に別個に実装されるか、または任意の適切なサブコンビネーションに実装されてもよい。更には、特徴が、特定の組み合わせで機能するものとして上述され、最初はそのように特許請求されてすらいるかもしれないが、場合によっては、特許請求された組み合わせによる1つまたは複数の特徴がその組み合わせから削除されてよく、特許請求された組み合わせは、サブコンビネーションまたはサブコンビネーションの変形形態を対象としたものであってよい。
【0219】
同様に、図面には動作が特定の順序で示されているが、これは、望ましい結果を実現するために、係る動作を、示されている特定の順序でまたは順番に実行する必要があると理解されるべきでもないし、示されている全ての動作を実行する必要があると理解されるべきでもない。特定の状況では、マルチタスクおよび並列処理が有利であり得る。更には、上記の実施形態における様々なシステムコンポーネントの分離が、全ての実施形態において係る分離を必要としているとは理解されるべきでない。記載されているプログラムコンポーネントおよびシステムは概して、単一のソフトウェア製品に一緒に統合されるか、または複数のソフトウェア製品にパッケージ化され得ることを理解されたい。
【0220】
以下の例は、本明細書に係る実施形態に関する。例1は、メモリから物体の合成3次元(3D)グラフィカルモデルにアクセスする段階であって、3Dグラフィカルモデルは、フォトリアリスティックな解像度を有する、段階と、3Dグラフィカルモデルのビューから複数の異なるトレーニングサンプルを生成する段階であって、複数のトレーニングサンプルは、複数のトレーニングサンプルに欠陥を追加して、実世界のセンサデバイスにより生成される実世界のサンプルの特性をシミュレートするために生成される、段階と、複数のトレーニングサンプルを含むトレーニングセットを生成する段階であって、トレーニングデータは、人工ニューラルネットワークをトレーニングする、段階とを備える方法である。
【0221】
例2は、例1に記載の主題を含む。ここで、複数のトレーニングサンプルは、デジタル画像を含み、センサデバイスは、カメラセンサを含む。
【0222】
例3は、例1および2の何れか1つに記載の主題を含む。ここで、複数のトレーニングサンプルは、物体の点群表現を含む。
【0223】
例4は、例3に記載の主題を含む。ここで、センサデバイスは、LIDARセンサを含む。
【0224】
例5は、例1から4の何れか1つに記載の主題を含む。主題は更に、センサデバイスのパラメータを示すためのデータにアクセスする段階と、パラメータに基づいて、複数のトレーニングサンプルに追加する欠陥を決定する段階とを備える。
【0225】
例6は、例5に記載の主題を含む。ここで、データは、センサデバイスのモデルを含む。
【0226】
例7は、例1から6の何れか1つに記載の主題を含む。主題は更に、3Dグラフィカルモデルによりモデル化される物体の1つまたは複数の表面の特性を示すためのデータにアクセスする段階と、特性に基づいて、複数のトレーニングサンプルに追加する欠陥を決定する段階と備える。
【0227】
例8は、例7に記載の主題を含む。ここで、3Dグラフィカルモデルは、データを含む。
【0228】
例9は、例1から8の何れか1つに記載の主題を含む。ここで、欠陥は、ノイズまたはグレアのうちの1つまたは複数を含む。
【0229】
例10は、例1から9の何れか1つに記載の主題を含む。ここで、複数の異なるトレーニングサンプルを生成する段階は、複数の異なる照明設定を3Dグラフィカルモデルに適用して、環境内の照明をシミュレートする段階と、複数の異なる照明設定のうちの特定のものの適用中に生成される複数のトレーニングサンプルのサブセットに関する欠陥を決定する段階であって、複数のトレーニングサンプルのサブセットに関する欠陥は、特定の照明設定に基づいている、段階とを有する。
【0230】
例11は、例1から10の何れか1つに記載の主題を含む。ここで、複数の異なるトレーニングサンプルを生成する段階は、3Dグラフィカルモデルを複数の異なるグラフィカル環境に設置する段階であって、グラフィカル環境は、それぞれの実世界の環境をモデル化する、段階と、3Dグラフィカルモデルが複数の異なるグラフィカル環境内に設置されている間に、複数のトレーニングサンプルのサブセットを生成する段階とを有する。
【0231】
例12は、例1から11の何れか1つに記載の方法を実行するための手段を含むシステムである。
【0232】
例13は、例12に記載の主題を含む。ここで、システムは、装置を含み、装置は、例1から11の何れか1つに記載の方法の少なくとも一部を実行するためのハードウェア回路を含む。
【0233】
例14は、例1から11の何れか1つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体である。
【0234】
例15は、シャムニューラルネットワークで被写体入力および基準入力を受信する段階であって、シャムニューラルネットワークは、第1の複数の層を含む第1ネットワーク部分と、第2の複数の層を含む第2ネットワーク部分とを含み、第1ネットワーク部分の重みは、第2ネットワーク部分の重みと同一であり、被写体入力は、第1ネットワーク部分への入力として提供され、基準入力は、第2ネットワーク部分への入力として提供される、段階と、被写体入力および基準入力に基づいて、シャムニューラルネットワークの出力を生成する段階であって、シャムニューラルネットワークの出力は、基準入力と被写体入力との間の類似性を示す、段階とを備える方法である。
【0235】
例16は、例15に記載の主題を含む。ここで、出力を生成する段階は、基準入力と被写体入力との間の差分量を決定する段階と、差分量が閾値を満たしているかどうかを決定する段階であって、出力は、差分量が閾値を満たしているかどうかを識別する、段階とを有する。
【0236】
例17は、例16に記載の主題を含む。ここで、基準入力と被写体入力との間の差分量を決定する段階は、第1ネットワーク部分により出力される第1特徴ベクトルと、第2ネットワーク部分により出力される第2特徴ベクトルとを受信する段階と、第1特徴ベクトルおよび第2特徴ベクトルに基づいて、差分ベクトルを決定する段階とを含む。
【0237】
例18は、例15から17の何れか1つに記載の主題を含む。ここで、出力を生成する段階は、1回限りの分類を含む。
【0238】
例19は、例15から18の何れか1つに記載の主題を含む。主題は更に、1つまたは複数の合成トレーニングサンプルを使用して、シャムニューラルネットワークをトレーニングする段階を備える。
【0239】
例20は、例19に記載の主題を含む。ここで、1つまたは複数の合成トレーニングサンプルは、例1から11の何れか1つに記載の方法に従って生成される。
【0240】
例21は、例15から20の何れか1つに記載の主題を含む。ここで、基準入力は、合成的に生成されたサンプルを含む。
【0241】
例22は、例21に記載の主題を含む。ここで、合成的に生成されたサンプルは、例1から11の何れか1つに記載の方法に従って生成される。
【0242】
例23は、例15から22の何れか1つに記載の主題を含む。ここで、被写体入力は、第1デジタル画像を含み、基準入力は、第2デジタル画像を含む。
【0243】
例24は、例15から22の何れか1つに記載の主題を含む。ここで、被写体入力は、第1点群表現を含み、基準入力は、第2点群表現を含む。
【0244】
例25は、例15から24の何れか1つに記載の方法を実行するための手段を含むシステムである。
【0245】
例26は、例25に記載の主題を含む。ここで、ここで、システムは、装置を含み、装置は、例15から24の何れか1つに記載の方法の少なくとも一部を実行するためのハードウェア回路を含む。
【0246】
例27は、例25に記載の主題を含む。ここで、システムは、ロボット、ドローン、または自律型車両のうちの1つを含む。
【0247】
例28は、例15から24の何れか1つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体である。
【0248】
例29は、シャムニューラルネットワークに第1入力データを提供する段階であって、第1入力データは、第1姿勢からの3D空間の第1表現を含む、段階と、シャムニューラルネットワークに第2入力データを提供する段階であって、第2入力データは、第2姿勢からの3D空間の第2表現を含み、シャムニューラルネットワークは、第1の複数の層を含む第1ネットワーク部分と、第2の複数の層を含む第2ネットワーク部分とを含み、第1ネットワーク部分の重みは、第2ネットワーク部分の重みと同一であり、第1入力データは、第1ネットワーク部分への入力として提供され、第2入力データは、第2ネットワーク部分への入力として提供される、段階と、シャムニューラルネットワークの出力を生成する段階であって、出力は、第1姿勢と第2姿勢との間の相対的姿勢を含む、段階とを備える方法である。
【0249】
例30は、例29に記載の主題を含む。ここで、3D空間の第1表現は、第1の3D点群を含み、3D空間の第2表現は、第2の3D点群を含む。
【0250】
例31は、例29から30の何れか1つに記載の主題を含む。ここで、3D空間の第1表現は、第1点群を含み、3D空間の第2表現は、第2点群を含む。
【0251】
例32は、例31に記載の主題を含む。ここで、第1点群および第2点群はそれぞれ、それぞれのボクセル化された点群表現を含む。
【0252】
例33は、例29から32の何れか1つに記載の主題を含む。主題は更に、相対的姿勢に基づいて、少なくとも第1入力データおよび第2入力データから3D空間の3Dマッピングを生成する段階を備える。
【0253】
例34は、例29から32の何れか1つに記載の主題を含む。主題は更に、相対的姿勢に基づいて、3D空間内の第1姿勢の観測者の位置を決定する段階を備える。
【0254】
例35は、例34に記載の主題を含む。ここで、観測者は、自律型機械を含む。
【0255】
例36は、例35に記載の主題を含む。ここで、自律型機械は、ロボット、ドローン、または自律型車両のうちの1つを含む。
【0256】
例37は、例29から36の何れか1つに記載の方法を実行するための手段を含むシステムである。
【0257】
例38は、例37に記載の主題を含む。ここで、システムは、装置を含み、装置は、例29から36の何れか1つに記載の方法の少なくとも一部を実行するためのハードウェア回路を含む。
【0258】
例39は、例29から36の何れか1つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体である。
【0259】
例40は、第1センサデータを、機械学習モデルの第1部分への入力として提供する段階と、第2センサデータを、機械学習モデルの第2部分への入力として提供する段階であって、機械学習モデルは、連結部と、一組の全結合層とを含み、第1センサデータは、デバイスにより生成される第1タイプのものであり、第2センサデータは、デバイスにより生成される異なる第2タイプのものであり、連結部は、機械学習モデルの第1部分の出力を第1入力として受け取り、機械学習モデルの第2部分の出力を第2入力として受け取り、連結部の出力は、一組の全結合層に提供される、段階と、第1データおよび第2データから、環境内のデバイスの姿勢を含む、機械学習モデルの出力を生成する段階とを備える方法である。
【0260】
例41は、例40に記載の主題を含む。ここで、第1センサデータは、画像データを含み、第2センサデータは、デバイスの動きを識別する。
【0261】
例42は、例41に記載の主題を含む。ここで、画像データは、赤・緑・青(RGB)データを含む。
【0262】
例43は、例41に記載の主題を含む。ここで、画像データは、3D点群データを含む。
【0263】
例44は、例41に記載の主題を含む。ここで、第2センサデータは、慣性測定装置(IMU)データを含む。
【0264】
例45は、例41に記載の主題を含む。ここで、第2センサデータは、全地球測位データを含む。
【0265】
例46は、例40から45の何れか1つに記載の主題を含む。ここで、機械学習モデルの第1部分は、第1タイプのセンサデータ用に調整され、機械学習モデルの第2部分は、第2タイプのセンサデータ用に調整される。
【0266】
例47は、例40から46の何れか1つに記載の主題を含む。主題は更に、第3タイプの第3センサデータを、機械学習モデルの第3部分への入力として提供する段階を備え、出力は更に、第3データに基づいて生成される。
【0267】
例48は、例40から47の何れか1つに記載の主題を含む。ここで、姿勢の出力は、回転成分および並進成分を含む。
【0268】
例49は、例48に記載の主題を含む。ここで、一組の全結合層のうちの1つは、回転成分を決定するための全結合層を含み、一組の全結合層のうちの別の1つは、並進成分を決定するための全結合層を含む。
【0269】
例50は、例40から49の何れか1つに記載の主題を含む。ここで、機械学習モデルの第1部分および第2部分の一方または両方は、それぞれの畳み込み層を含む。
【0270】
例51は、例40から50の何れか1つに記載の主題を含む。ここで、機械学習モデルの第1部分および第2部分の一方または両方は、1つまたは複数のそれぞれの長短期記憶(LSTM)ブロックを含む。
【0271】
例52は、例40から51の何れか1つに記載の主題を含む。ここで、デバイスは、自律型機械を含み、自律型機械は、姿勢に基づいて、環境内をナビゲートする。
【0272】
例53は、例52に記載の主題を含む。ここで、自律型機械は、ロボット、ドローン、または自律型車両のうちの1つを含む。
【0273】
例54は、例40から52の何れか1つに記載の方法を実行するための手段を含むシステムである。
【0274】
例55は、例54に記載の主題を含む。ここで、システムは、装置を含み、装置は、例40から52の何れか1つに記載の方法の少なくとも一部を実行するためのハードウェア回路を含む。
【0275】
例56は、例40から52の何れか1つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体である。
【0276】
例57は、一組のニューラルネットワークのランダム生成を要求する段階と、一組のニューラルネットワークの1つ1つを使用して機械学習タスクを実行する段階であって、機械学習タスクは、特定の処理ハードウェアを使用して実行される、段階と、一組のニューラルネットワークの各々に関する機械学習タスクの実行の属性を監視する段階であって、属性は、機械学習タスクの結果の正確性を含む、段階と、特定の処理ハードウェアを使用して機械学習タスクを実行するために使用される場合に、一組のニューラルネットワークのうちの最高性能のニューラルネットワークを、最高性能のニューラルネットワークの属性に基づいて識別する段階とを備える方法である。
【0277】
例58は、例57に記載の主題を含む。主題は更に、機械学習アプリケーションを実行する際に機械により使用される最高性能のニューラルネットワークを提供する段階を備える。
【0278】
例59は、例57から58の何れか1つに記載の主題を含む。主題は更に、最高性能のニューラルネットワークの特性を決定する段階と、特性に従って第2の組のニューラルネットワークの生成を要求する段階であって、第2の組のニューラルネットワークは、それぞれが特性のうちの1つまたは複数を含む、複数の異なるニューラルネットワークを含む、段階と、第2の組のニューラルネットワークの1つ1つを使用して機械学習タスクを実行する段階であって、機械学習タスクは、特定の処理ハードウェアを使用して実行される、段階と、第2の組のニューラルネットワークの各々に関する機械学習タスクの実行の属性を監視する段階と、属性に基づいて、第2の組のニューラルネットワークのうちの最高性能のニューラルネットワークを識別する段階とを備える。
【0279】
例60は、例57-59の何れか1つに記載の主題を含む。主題は更に、パラメータに基づく基準を受信する段階であって、最高性能のニューラルネットワークは、基準に基づいている、段階を備える。
【0280】
例61は、例57から60の何れか1つに記載の主題を含む。ここで、属性は、特定の処理ハードウェアの属性を含む。
【0281】
例62は、例61の主題を含む。ここで、特定の処理ハードウェアの属性は、機械学習タスクの実行中に特定の処理ハードウェアにより消費される電力、機械学習タスクの実行中の特定の処理ハードウェアの温度、および、特定の処理ハードウェア上にニューラルネットワークを格納するために使用されるメモリのうちの1つまたは複数を含む。
【0282】
例63は、例57から62の何れか1つに記載の主題を含む。ここで、属性は、一組のニューラルネットワークのうちの対応するものを使用して機械学習タスクを完了するための時間を含む。
【0283】
例64は、例57から63の何れか1つに記載の方法を実行するための手段を含むシステムである。
【0284】
例65は、例64に記載の主題を含む。ここで、システムは、装置を含み、装置は、例57から63の何れか1つに記載の方法の少なくとも一部を実行するためのハードウェア回路を含む。
【0285】
例66は、例57から63の何れか1つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体。
【0286】
例67は、複数のカーネルを含むニューラルネットワークを識別する段階であって、カーネルの1つ1つは、それぞれの重みの組を含む、段階と、1つまたは複数のパラメータに従って複数のカーネルのサブセットを枝刈りすることで、複数のカーネルを特定のカーネルの組に減らす段階と、ニューラルネットワークの枝刈りされたバージョンを形成するために、特定のカーネルの組における重みのサブセットを枝刈りする段階であって、重みのサブセットを枝刈りする段階によって、重みのサブセットにおける1つまたは複数の0でない重みが0に割り当てられ、重みのサブセットは、重みの元の値に基づいて選択される、段階とを備える方法である。
【0287】
例68は、例67に記載の主題を含む。ここで、重みのサブセットは、閾値を下回る重みのサブセットの値に基づいて枝刈りされる。
【0288】
例69は、例67から68の何れか1つに記載の主題を含む。主題は更に、ニューラルネットワークの枝刈りされたバージョンを使用して機械学習タスクの1つまたは複数の反復を実行することで、カーネルおよび重みの枝刈りによって失われる正確性の少なくとも一部を取り戻す段階を備える。
【0289】
例70は、例67から69の何れか1つに記載の主題を含む。主題は更に、ニューラルネットワークの枝刈りされたバージョンで枝刈りされていない重みの値を量子化して、ニューラルネットワークのコンパクトバージョンを生成する段階を備える。
【0290】
例71は、例70に記載の主題を含む。ここで、量子化は、ログベースの量子化を含む。
【0291】
例72は、例71に記載の主題を含む。ここで、重みは、浮動小数点値から基数2の値まで量子化される。
【0292】
例73は、例67から72の何れか1つに記載の主題を含む。主題は更に、スパース行列演算に適合されるハードウェアを使用して機械学習タスクを実行するためのニューラルネットワークの枝刈りされたバージョンを提供する段階を備える。
【0293】
例74は、例67から73の何れか1つに記載の方法を実行するための手段を含むシステムである。
【0294】
例75は、例64に記載の主題を含む。ここで、システムは、装置を含み、装置は、例67から73の何れか1つに記載の方法の少なくとも一部を実行するためのハードウェア回路を含む。
【0295】
例76は、例67から73の何れか1つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体である。
【0296】
このように、主題の特定の実施形態について説明してきた。他の実施形態は、以下の特許請求の範囲の範囲内に含まれる。場合によっては特許請求の範囲に記載のアクションが異なる順序で実行されてよく、それでもなお望ましい結果を実現することができる。更には、添付図面に示すプロセスは、望ましい結果を実現するために、必ずしも示されている特定の順序、または順番である必要はない。
【0297】
(項目1)
メモリから物体の合成3次元(3D)グラフィカルモデルにアクセスする段階であって、上記3Dグラフィカルモデルは、フォトリアリスティックな解像度を有する、段階と、
上記3Dグラフィカルモデルのビューから複数の異なるトレーニングサンプルを生成する段階であって、上記複数のトレーニングサンプルは、上記複数のトレーニングサンプルに欠陥を追加して、実世界のセンサデバイスにより生成される実世界のサンプルの特性をシミュレートするために生成される、段階と、
上記複数のトレーニングサンプルを含むトレーニングセットを生成する段階であって、上記トレーニングデータは、人工ニューラルネットワークをトレーニングする、段階と
を備える方法。
(項目2)
上記複数のトレーニングサンプルは、デジタル画像を含み、上記センサデバイスは、カメラセンサを含む、項目1に記載の方法。
(項目3)
上記複数のトレーニングサンプルは、上記物体の点群表現を含む、項目1から2の何れか1つに記載の方法。
(項目4)
上記センサデバイスは、LIDARセンサを含む、項目3に記載の方法。
(項目5)
上記センサデバイスのパラメータを示すためのデータにアクセスする段階と、
上記パラメータに基づいて、上記複数のトレーニングサンプルに追加する上記欠陥を決定する段階と
を更に備える項目1から4の何れか1つに記載の方法。
(項目6)
上記データは、上記センサデバイスのモデルを含む、項目5に記載の方法。
(項目7)
上記3Dグラフィカルモデルによりモデル化される上記物体の1つまたは複数の表面の特性を示すためのデータにアクセスする段階と、
上記特性に基づいて、上記複数のトレーニングサンプルに追加する上記欠陥を決定する段階と
を更に備える項目1から6の何れか1つに記載の方法。
(項目8)
上記3Dグラフィカルモデルは、上記データを含む、項目7に記載の方法。
(項目9)
上記欠陥は、ノイズまたはグレアのうちの1つまたは複数を含む、項目1から8の何れか1つに記載の方法。
(項目10)
複数の異なるトレーニングサンプルを生成する段階は、
複数の異なる照明設定を上記3Dグラフィカルモデルに適用して、環境内の照明をシミュレートする段階、
上記複数の異なる照明設定のうちの特定のものの適用中に生成される上記複数のトレーニングサンプルのサブセットに関する上記欠陥を決定する段階であって、上記複数のトレーニングサンプルの上記サブセットに関する上記欠陥は、上記特定の照明設定に基づいている、段階
を有する、項目1から9の何れか1つに記載の方法。
(項目11)
複数の異なるトレーニングサンプルを生成する段階は、
上記3Dグラフィカルモデルを複数の異なるグラフィカル環境に設置する段階であって、上記グラフィカル環境は、それぞれの実世界の環境をモデル化する、段階、
上記3Dグラフィカルモデルが複数の異なるグラフィカル環境内に設置されている間に、上記複数のトレーニングサンプルのサブセットを生成する段階
を有する、項目1から10の何れか1つに記載の方法。
(項目12)
項目1から11の何れか1つに記載の方法を実行するための手段を備えるシステム。
(項目13)
上記システムは、装置を備え、上記装置は、項目1から11の何れか1つに記載の方法の少なくとも一部を実行するためのハードウェア回路を有する、項目12に記載のシステム。
(項目14)
項目1から11の何れか1つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体。
(項目15)
シャムニューラルネットワークで被写体入力および基準入力を受信する段階であって、上記シャムニューラルネットワークは、第1の複数の層を含む第1ネットワーク部分と、第2の複数の層を含む第2ネットワーク部分とを含み、上記第1ネットワーク部分の重みは、上記第2ネットワーク部分の重みと同一であり、上記被写体入力は、上記第1ネットワーク部分への入力として提供され、上記基準入力は、上記第2ネットワーク部分への入力として提供される、段階と、
上記被写体入力および上記基準入力に基づいて、上記シャムニューラルネットワークの出力を生成する段階であって、上記シャムニューラルネットワークの上記出力は、上記基準入力と上記被写体入力との間の類似性を示す、段階と
を備える方法。
(項目16)
上記出力を生成する段階は、
上記基準入力と上記被写体入力との間の差分量を決定する段階と、
上記差分量が閾値を満たしているかどうかを決定する段階であって、上記出力は、上記差分量が上記閾値を満たしているかどうかを識別する、段階と
を有する、項目15に記載の方法。
(項目17)
上記基準入力と上記被写体入力との間の上記差分量を決定する段階は、
上記第1ネットワーク部分により出力される第1特徴ベクトルと、上記第2ネットワーク部分により出力される第2特徴ベクトルとを受信する段階と、
上記第1特徴ベクトルおよび上記第2特徴ベクトルに基づいて、差分ベクトルを決定する段階と
を含む、項目16に記載の方法。
(項目18)
上記出力を生成する段階は、1回限りの分類を有する、項目15から17の何れか1つに記載の方法。
(項目19)
1つまたは複数の合成トレーニングサンプルを使用して、上記シャムニューラルネットワークをトレーニングする段階を更に備える、項目15から18の何れか1つに記載の方法。
(項目20)
上記1つまたは複数の合成トレーニングサンプルは、項目1から11の何れか1つに記載の方法に従って生成される、項目19に記載の方法。
(項目21)
上記基準入力は、合成的に生成されたサンプルを含む、項目15から20の何れか1つに記載の方法。
(項目22)
上記合成的に生成されたサンプルは、項目1から11の何れか1つに記載の方法に従って生成される、項目21に記載の方法。
(項目23)
上記被写体入力は、第1デジタル画像を含み、上記基準入力は、第2デジタル画像を含む、項目15から22の何れか1つに記載の方法。
(項目24)
上記被写体入力は、第1点群表現を含み、上記基準入力は、第2点群表現を含む、項目15から22の何れか1つに記載の方法。
(項目25)
項目15から24の何れか1つに記載の方法を実行するための手段を備えるシステム。
(項目26)
上記システムは、装置を備え、上記装置は、項目15から24の何れか1つに記載の方法の少なくとも一部を実行するためのハードウェア回路を有する、項目25に記載のシステム。
(項目27)
ロボット、ドローン、または自律型車両のうちの1つを備える、項目25に記載のシステム。
(項目28)
項目15から24の何れか1つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体。
(項目29)
シャムニューラルネットワークに第1入力データを提供する段階であって、上記第1入力データは、第1姿勢からの3D空間の第1表現を含む、段階と、
上記シャムニューラルネットワークに第2入力データを提供する段階であって、上記第2入力データは、第2姿勢からの3D空間の第2表現を含み、上記シャムニューラルネットワークは、第1の複数の層を含む第1ネットワーク部分と、第2の複数の層を含む第2ネットワーク部分とを含み、上記第1ネットワーク部分の重みは、上記第2ネットワーク部分の重みと同一であり、上記第1入力データは、上記第1ネットワーク部分への入力として提供され、上記第2入力データは、上記第2ネットワーク部分への入力として提供される、段階と、
上記シャムニューラルネットワークの出力を生成する段階であって、上記出力は、上記第1姿勢と上記第2姿勢との間の相対的姿勢を含む、段階と
を備える方法。
(項目30)
3D空間の上記第1表現は、第1の3D点群を含み、3D空間の上記第2表現は、第2の3D点群を含む、項目29に記載の方法。
(項目31)
上記3D空間の上記第1表現は、第1点群を含み、上記3D空間の上記第2表現は、第2点群を含む、項目29から30の何れか1つに記載の方法。
(項目32)
上記第1点群および上記第2点群はそれぞれ、それぞれのボクセル化された点群表現を含む、項目31に記載の方法。
(項目33)
上記相対的姿勢に基づいて、少なくとも上記第1入力データおよび上記第2入力データから上記3D空間の3Dマッピングを生成する段階
を更に備える項目29から32の何れか1つに記載の方法。
(項目34)
上記相対的姿勢に基づいて、上記3D空間内の上記第1姿勢の観測者の位置を決定する段階
を更に備える項目29から32の何れか1つに記載の方法。
(項目35)
上記観測者は、自律型機械を含む、項目34に記載の方法。
(項目36)
上記自律型機械は、ロボット、ドローン、または自律型車両のうちの1つを含む、項目35に記載の方法。
(項目37)
項目29から36の何れか1つに記載の方法を実行するための手段を備えるシステム。
(項目38)
上記システムは、装置を備え、上記装置は、項目29から36の何れか1つに記載の方法の少なくとも一部を実行するためのハードウェア回路を有する、項目37に記載のシステム。
(項目39)
項目29から36の何れか1つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体。
(項目40)
上記第1センサデータを、機械学習モデルの第1部分への入力として提供する段階と、
上記第2センサデータを、上記機械学習モデルの第2部分への入力として提供する段階であって、上記機械学習モデルは、連結部と、一組の全結合層とを含み、上記第1センサデータは、デバイスにより生成される第1タイプのものであり、上記第2センサデータは、上記デバイスにより生成される異なる第2タイプのものであり、上記連結部は、上記機械学習モデルの上記第1部分の出力を第1入力として受け取り、上記機械学習モデルの上記第2部分の出力を第2入力として受け取り、上記連結部の出力は、上記一組の全結合層に提供される、段階と、
上記第1データおよび上記第2データから、環境内の上記デバイスの姿勢を含む、上記機械学習モデルの出力を生成する段階と
を備える方法。
(項目41)
上記第1センサデータは、画像データを含み、上記第2センサデータは、上記デバイスの動きを識別する、項目40に記載の方法。
(項目42)
上記画像データは、赤・緑・青(RGB)データを含む、項目41に記載の方法。
(項目43)
上記画像データは、3D点群データを含む、項目41に記載の方法。
(項目44)
上記第2センサデータは、慣性測定装置(IMU)データを含む、項目41に記載の方法。
(項目45)
上記第2センサデータは、全地球測位データを含む、項目41に記載の方法。
(項目46)
上記機械学習モデルの上記第1部分は、上記第1タイプのセンサデータ用に調整され、上記機械学習モデルの上記第2部分は、上記第2タイプのセンサデータ用に調整される、項目40から45の何れか1つに記載の方法。
(項目47)
第3タイプの第3センサデータを、上記機械学習モデルの第3部分への入力として提供する段階を更に備え、上記出力は更に、上記第3データに基づいて生成される、項目40から46の何れか1つに記載の方法。
(項目48)
上記姿勢の出力は、回転成分および並進成分を含む、項目40から47の何れか1つに記載の方法。
(項目49)
上記一組の全結合層のうちの1つは、上記回転成分を決定するための全結合層を含み、上記一組の全結合層のうちの別の1つは、上記並進成分を決定するための全結合層を含む、項目48に記載の方法。
(項目50)
上記機械学習モデルの上記第1部分および上記第2部分の一方または両方は、それぞれの畳み込み層を含む、項目40から49の何れか1つに記載の方法。
(項目51)
上記機械学習モデルの上記第1部分および上記第2部分の一方または両方は、1つまたは複数のそれぞれの長短期記憶(LSTM)ブロックを含む、項目40から50の何れか1つに記載の方法。
(項目52)
上記デバイスは、自律型機械を含み、上記自律型機械は、上記姿勢に基づいて、上記環境内をナビゲートする、項目40から51の何れか1つに記載の方法。
(項目53)
上記自律型機械は、ロボット、ドローン、または自律型車両のうちの1つを含む、項目52に記載の方法。
(項目54)
項目40から52の何れか1つに記載の方法を実行するための手段を備えるシステム。
(項目55)
上記システムは、装置を備え、上記装置は、項目40から52の何れか1つに記載の方法の少なくとも一部を実行するためのハードウェア回路を有する、項目54に記載のシステム。
(項目56)
項目40から52の何れか1つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体。
(項目57)
一組のニューラルネットワークのランダム生成を要求する段階と、
上記一組のニューラルネットワークの1つ1つを使用して機械学習タスクを実行する段階であって、上記機械学習タスクは、特定の処理ハードウェアを使用して実行される、段階と、
上記一組のニューラルネットワークの各々に関する上記機械学習タスクの上記実行の属性を監視する段階であって、上記属性は、上記機械学習タスクの結果の正確性を含む、段階と、
上記特定の処理ハードウェアを使用して上記機械学習タスクを実行するために使用される場合に、上記一組のニューラルネットワークのうちの最高性能のニューラルネットワークを、上記最高性能のニューラルネットワークの上記属性に基づいて識別する段階と
を備える方法。
(項目58)
機械学習アプリケーションを実行する際に機械により使用される上記最高性能のニューラルネットワークを提供する段階
を更に備える項目57に記載の方法。
(項目59)
上記最高性能のニューラルネットワークの特性を決定する段階と、
上記特性に従って第2の組のニューラルネットワークの生成を要求する段階であって、上記第2の組のニューラルネットワークは、それぞれが上記特性のうちの1つまたは複数を含む、複数の異なるニューラルネットワークを含む、段階と、
上記第2の組のニューラルネットワークの1つ1つを使用して上記機械学習タスクを実行する段階であって、上記機械学習タスクは、上記特定の処理ハードウェアを使用して実行される、段階と、
上記第2の組のニューラルネットワークの各々に関する上記機械学習タスクの上記実行の属性を監視する段階と、
上記属性に基づいて、上記第2の組のニューラルネットワークのうちの最高性能のニューラルネットワークを識別する段階と
を更に備える項目57から58の何れか1つに記載の方法。
(項目60)
上記パラメータに基づく基準を受信する段階であって、上記最高性能のニューラルネットワークは、上記基準に基づいている、段階を更に備える、項目57から59の何れか1つに記載の方法。
(項目61)
上記属性は、上記特定の処理ハードウェアの属性を含む、項目57から60の何れか1つに記載の方法。
(項目62)
上記特定の処理ハードウェアの上記属性は、上記機械学習タスクの実行中に上記特定の処理ハードウェアにより消費される電力、上記機械学習タスクの実行中の上記特定の処理ハードウェアの温度、および、上記特定の処理ハードウェア上に上記ニューラルネットワークを格納するために使用されるメモリのうちの1つまたは複数を含む、項目61に記載の方法。
(項目63)
上記属性は、上記一組のニューラルネットワークのうちの上記対応するものを使用して上記機械学習タスクを完了するための時間を含む、項目57から62の何れか1つに記載の方法。
(項目64)
項目57から63の何れか1つに記載の方法を実行するための手段を備えるシステム。
(項目65)
上記システムは、装置を備え、上記装置は、項目57から63の何れか1つに記載の方法の少なくとも一部を実行するためのハードウェア回路を有する、項目64に記載のシステム。
(項目66)
項目57から63の何れか1つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体。
(項目67)
複数のカーネルを含むニューラルネットワークを識別する段階であって、上記カーネルの1つ1つは、それぞれの重みの組を含む、段階と、
1つまたは複数のパラメータに従って上記複数のカーネルのサブセットを枝刈りすることで、上記複数のカーネルを特定のカーネルの組に減らす段階と、
上記ニューラルネットワークの枝刈りされたバージョンを形成するために、上記特定のカーネルの組における重みのサブセットを枝刈りする段階であって、上記重みのサブセットを上記枝刈りする段階によって、上記重みのサブセットにおける1つまたは複数の0でない重みが0に割り当てられ、上記重みのサブセットは、上記重みの元の値に基づいて選択される、段階と
を備える方法。
(項目68)
上記重みのサブセットは、閾値を下回る上記重みのサブセットの値に基づいて枝刈りされる、項目67に記載の方法。
(項目69)
上記ニューラルネットワークの上記枝刈りされたバージョンを使用して機械学習タスクの1つまたは複数の反復を実行することで、上記カーネルおよび上記重みの上記枝刈りによって失われる正確性の少なくとも一部を取り戻す段階を更に備える、項目67から68の何れか1つに記載の方法。
(項目70)
上記ニューラルネットワークの上記枝刈りされたバージョンで枝刈りされていない重みの値を量子化して、上記ニューラルネットワークのコンパクトバージョンを生成する段階を更に備える、項目67から69の何れか1つに記載の方法。
(項目71)
上記量子化は、ログベースの量子化を含む、項目70に記載の方法。
(項目72)
上記重みは、浮動小数点値から基数2の値まで量子化される、項目71に記載の方法。
(項目73)
スパース行列演算に適合されるハードウェアを使用して機械学習タスクを実行するための上記ニューラルネットワークの上記枝刈りされたバージョンを提供する段階を更に備える、項目67から72の何れか1つに記載の方法。
(項目74)
項目67から73の何れか1つに記載の方法を実行するための手段を備えるシステム。
(項目75)
上記システムは、装置を備え、上記装置は、項目67から73の何れか1つに記載の方法の少なくとも一部を実行するためのハードウェア回路を有する、項目64に記載のシステム。
(項目76)
項目67から73の何れか1つに記載の方法を実行するためのプロセッサにより実行可能な命令を記憶するコンピュータ可読記憶媒体。
【外国語明細書】