(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024125291
(43)【公開日】2024-09-18
(54)【発明の名称】コンピュータビジョンシステム
(51)【国際特許分類】
G06T 7/20 20170101AFI20240910BHJP
G06T 7/70 20170101ALI20240910BHJP
G06T 7/00 20170101ALI20240910BHJP
G06N 3/0464 20230101ALI20240910BHJP
【FI】
G06T7/20 100
G06T7/70 Z
G06T7/00 350C
G06N3/0464
【審査請求】有
【請求項の数】17
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024073394
(22)【出願日】2024-04-30
(62)【分割の表示】P 2021510321の分割
【原出願日】2019-08-29
(31)【優先権主張番号】62/724,446
(32)【優先日】2018-08-29
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.TENSORFLOW
(71)【出願人】
【識別番号】520132791
【氏名又は名称】モビディウス リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】サルチ、ルカ
(72)【発明者】
【氏名】コールフィールド、サム
(72)【発明者】
【氏名】ペーニャ カリーロ、デクスモント アレハンドロ
(72)【発明者】
【氏名】マーティン デ ラ シエラ、ルイス マニュエル ロドリゲス
(72)【発明者】
【氏名】ロドリゲス-ペラル、カルロス マルケス
(72)【発明者】
【氏名】モロニー、デイヴィッド マクダラ
(72)【発明者】
【氏名】バーン、ジョナサン デイヴィッド
(57)【要約】 (修正有)
【課題】デバイスの姿勢を決定する方法、プログラム、記憶媒体及びシステムを提供する。
【解決手段】方法は、デバイスのカメラにより生成される視覚データを、視覚オドメトリニューラルネットワークとして実装される、ニューラルネットワークモデルの第1の部分に入力し2620、慣性測定ユニット(IMU)デバイスにより生成される慣性データを、慣性オドメトリニューラルネットワーク部分として実装し、ニューラルネットワークモデルの第2の部分に入力2622し、視覚オドメトリネットワーク部分及び慣性オドメトリオドメトリネットワーク部分の夫々の出力を連結して、ニューラルネットワークモデル内の全結合層セットにおける最初のものへの入力として提供し、ニューラルネットワークモデルにより、デバイスの姿勢値を表す出力を、視覚データおよび慣性データの組み合わされた入力に基づいて生成する2626。
【選択図】
図26B
【特許請求の範囲】
【請求項1】
環境を記述した視覚データを受信する段階と、
デバイスの動きを記述した慣性データを受信する段階と、
前記視覚データをニューラルネットワークモデルの第1のネットワーク部分への入力として提供する段階であって、前記第1のネットワーク部分は、前記視覚データに基づいて第1の値を生成する、提供する段階と、
前記慣性データを前記ニューラルネットワークモデルの第2のネットワーク部分への入力として提供する段階であって、前記第2のネットワーク部分は、前記慣性データに基づいて第2の値を生成する、提供する段階と、
前記第1の値および前記第2の値を組み合わせることによって前記ニューラルネットワークモデルの出力を生成する段階であって、前記出力は、前記視覚データおよび前記慣性データの両方に基づく姿勢値を含む、生成する段階と
を備え、
前記第1のネットワーク部分は、畳み込み層と、第1の全結合層とを含み、
前記畳み込み層は、前記視覚データを受け取り、第1の出力を生成し、
前記第1の全結合層は、前記第1の出力を受け取り、前記第1の値を生成し、
前記第2のネットワーク部分は、長短期記憶層(LSTM層)と、前記LSTM層に後続する第2の全結合層とを含み、
前記LSTM層は、前記慣性データを受け取り、第2の出力を生成し、
前記第2の全結合層は、前記第2の出力を受け取り、前記第2の値を生成する、
方法。
【請求項2】
前記第1のネットワーク部分は、視覚オドメトリニューラルネットワーク部分を含み、前記第2のネットワーク部分は、慣性オドメトリニューラルネットワーク部分を含む、請求項1に記載の方法。
【請求項3】
前記第1のネットワーク部分は、FlowNetSベースの畳み込みニューラルネットワーク(CNN)の層を含む、請求項1または2に記載の方法。
【請求項4】
前記視覚データは、連続するRGB画像のペアを含む、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記慣性データは、慣性測定ユニット(IMU)により生成される慣性データのサブシーケンスを含む、請求項1から3のいずれか一項に記載の方法。
【請求項6】
前記第1の値および前記第2の値を組み合わせることは、前記第1の値および前記第2の値を連結することを備える、請求項1から5のいずれか一項に記載の方法。
【請求項7】
前記姿勢値に基づいて前記デバイスの動きの方向を決定する段階をさらに備える、請求項1から6のいずれか一項に記載の方法。
【請求項8】
前記方向における前記デバイスの動きを作動させる段階をさらに備える、請求項7に記載の方法。
【請求項9】
請求項1から8のいずれか一項に記載の方法をコンピュータに実行させるためのコンピュータプログラム。
【請求項10】
請求項9に記載のコンピュータプログラムを記憶するコンピュータ可読記憶媒体。
【請求項11】
プロセッサと、
慣性データを生成するための慣性測定ユニットデバイス(IMUデバイス)と、
視覚データを生成するためのカメラセンサと、
前記視覚データをニューラルネットワークモデルの第1のネットワーク部分への入力として提供することであって、前記第1のネットワーク部分は、前記視覚データに基づいて第1の値を生成する、提供することと、
前記慣性データを前記ニューラルネットワークモデルの第2のネットワーク部分への入力として提供することであって、前記第2のネットワーク部分は、前記慣性データに基づいて第2の値を生成する、提供することと、
前記第1の値および前記第2の値を組み合わせることによって前記ニューラルネットワークモデルの出力を生成することであって、前記出力は、前記視覚データおよび前記慣性データの両方に基づく姿勢値を含む、生成することと
を行うためのオドメトリエンジンと
を有する自律デバイス
を備え、
前記第1のネットワーク部分は、畳み込み層と、第1の全結合層とを含み、
前記畳み込み層は、前記視覚データを受け取り、第1の出力を生成し、
前記第1の全結合層は、前記第1の出力を受け取り、前記第1の値を生成し、
前記第2のネットワーク部分は、長短期記憶層(LSTM層)と、前記LSTM層に後続する第2の全結合層とを含み、
前記LSTM層は、前記慣性データを受け取り、第2の出力を生成し、
前記第2の全結合層は、前記第2の出力を受け取り、前記第2の値を生成する、
システム。
【請求項12】
前記姿勢値に基づいて前記自律デバイスの動きの方向を決定するためのコントローラをさらに備える、請求項11に記載のシステム。
【請求項13】
前記姿勢値に少なくとも部分的に基づいて前記自律デバイスを前記方向に自律的に移動させるためのアクチュエータをさらに備える、請求項12に記載のシステム。
【請求項14】
前記第1のネットワーク部分は、視覚オドメトリニューラルネットワーク部分を含み、前記第2のネットワーク部分は、慣性オドメトリニューラルネットワーク部分を含む、請求項11から13のいずれか一項に記載のシステム。
【請求項15】
前記視覚データは、連続するRGB画像のペアを含む、請求項11から14のいずれか一項に記載のシステム。
【請求項16】
前記慣性データは、前記IMUデバイスにより生成される慣性データのサブシーケンスを含む、請求項11から15のいずれか一項に記載のシステム。
【請求項17】
前記第1の値および前記第2の値を組み合わせることは、前記第1の値および前記第2の値を連結することを備える、請求項11から16のいずれか一項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願]
本願は、2018年8月29日に出願された米国仮特許出願第62/724,446号の利益を主張し、当該出願の全体が参照により本明細書に組み込まれる。
【0002】
本開示は、概して、コンピュータシステム分野に関し、より具体的には、コンピュータビジョンアプリケーションに用いられるハッシュテーブルに関する。
【背景技術】
【0003】
MagicLeap(商標)、Microsoft(登録商標)、HoloLens(商標)、Oculus(商標)、Rift(商標)のもののような拡張現実(AR)製品、仮想現実(VR)製品および複合現実(MR)製品、ならびにValve(商標)およびHTC(商標)のもののような他のVRシステムが出現したことで、コンピュータビジョンおよびコンピュータグラフィックスの世界は、急速に収束しつつある。そのようなシステムにおける現行のアプローチは、並行して動作する別個のグラフィックス処理ユニット(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】
【
図16A】例示的なレイキャスティングアルゴリズムの間のレイトラバーサルの例を示す。
【
図16B】例示的なレイキャスティングアルゴリズムの間のレイトラバーサルの例を示す。
【
図16C】例示的なレイキャスティングアルゴリズムの間のレイトラバーサルの例を示す。
【0021】
【
図17A】異なるレイキャスティング技術を用いてレンダリングされた例示的な比較画像を示す。
【
図17B】異なるレイキャスティング技術を用いてレンダリングされた例示的な比較画像を示す。
【0022】
【
図18】例示的なビジュアルプロセッシングユニット(VPU)にアーキテクチャを示す簡略ブロックダイアグラムである。
【0023】
【
図19】レイキャスティング技術の例示的な結果の比較を示す例示的なグラフである。
【0024】
【
図20A】異なるレイキャスティング技術の例示的な性能特性の比較を示す例示的なグラフである。
【
図20B】異なるレイキャスティング技術の例示的な性能特性の比較を示す例示的なグラフである。
【0025】
【
図21A】例示的なニューラルネットワークモデルを示す簡略ブロックダイアグラムである。
【
図21B】例示的なニューラルネットワークモデルを示す簡略ブロックダイアグラムである。
【
図21C】例示的なニューラルネットワークモデルを示す簡略ブロックダイアグラムである。
【0026】
【
図22】視覚慣性オドメトリ法の例示的な性能を示すグラフである。
【0027】
【
図23A】従来の相対姿勢推定技術の簡略ブロックダイアグラムである。
【0028】
【
図23B】ニューラルネットワークモデルを利用した改良された相対姿勢推定技術の簡略ブロックダイアグラムである。
【0029】
【
図24】例示的なニューラルネットワークモデルを示す簡略ブロックダイアグラムである。
【0030】
【0031】
【
図26A】コンピュータビジョン処理を強化するための例示的な技術を示すフローチャートである。
【
図26B】コンピュータビジョン処理を強化するための例示的な技術を示すフローチャートである。
【
図26C】コンピュータビジョン処理を強化するための例示的な技術を示すフローチャートである。
【0032】
【
図27】いくつかの実施形態による例示的なマルチスロットベクトルプロセッサを示す。
【0033】
【
図28】いくつかの実施形態による例示的なボリュメトリック加速ハードウェアを示す。
【0034】
【
図29】いくつかの実施形態によるボクセルキューブの編成を示す。
【0035】
【
図30】いくつかの実施形態による2レベルスパースボクセルツリーを示す。
【0036】
【
図31】いくつかの実施形態による2レベルスパースボクセルツリーを示す。
【0037】
【
図32】いくつかの実施形態による例示的なボクセルデータの格納を示す。
【0038】
【
図33】いくつかの実施形態による例示的なボリュメトリックデータ構造へのボクセルの挿入を示す。
【0039】
【
図34】いくつかの実施形態による例示的な3Dボリュメトリック物体の投影を示す。
【0040】
【
図35A】例示的なボリュメトリックデータ構造を伴う例示的な演算を示す。
【
図35B】例示的なボリュメトリックデータ構造を伴う例示的な演算を示す。
【
図35C】例示的なボリュメトリックデータ構造を伴う例示的な演算を示す。
【0041】
【
図36】いくつかの実施形態による、投影を用いた簡略マップの生成を示す。
【0042】
【
図37】いくつかの実施形態による、埋め込みデバイスからの例示的なボリュメトリック3Dおよび/または単純な2D測定値の例示的な集約を示す。
【0043】
【
図38A】いくつかの実施形態による2D 2×2ビットマップ上での2D経路探索の例示的な加速を示す。
【
図38B】いくつかの実施形態による2D 2×2ビットマップ上での2D経路探索の例示的な加速を示す。
【
図38C】いくつかの実施形態による2D 2×2ビットマップ上での2D経路探索の例示的な加速を示す。
【0044】
【
図39】いくつかの実施形態による、例示的なボリュメトリックデータ構造を用いた衝突検出の例示的な加速を示す。
【0045】
【
図40】少なくともいくつかの実施形態によるデバイスを有する例示的なネットワークの簡略ブロックダイアグラムである。
【0046】
【
図41】少なくともいくつかの実施形態による例示的なフォグまたはクラウドコンピューティングネットワークの簡略ブロックダイアグラムである。
【0047】
【
図42】少なくともいくつかの実施形態による例示的なデバイスを含むシステムの簡略ブロックダイアグラムである。
【0048】
【
図43】少なくともいくつかの実施形態による例示的な処理デバイスの簡略ブロックダイアグラムである。
【0049】
【
図44】少なくともいくつかの実施形態による例示的なプロセッサのブロックダイアグラムである。
【0050】
【
図45】少なくともいくつかの実施形態による例示的なコンピューティングシステムのブロックダイアグラムである。
【発明を実施するための形態】
【0051】
以下の説明では、開示される主題についての完全な理解を提供すべく、開示される主題のシステムおよび方法ならびにそのようなシステムおよび方法が動作し得る環境等に関する数多くの特定の詳細を記載する。ただし、開示される主題がそのような特定の詳細なしに実施され得ることと、開示される主題が複雑になるのを回避すべく、当技術分野において周知である特定の特徴が詳細には説明されないこととが、当業者には明らかになろう。加えて、以下で提供される実施形態が例示的なものであることと、開示される主題の範囲内にある他のシステムおよび方法が存在すると考えられることとが理解されよう。
【0052】
3次元の空間およびジオメトリのボリュームを表すデータモデルを利用し得る拡張現実、仮想現実、複合現実、自律デバイスおよびロボットに基づく、またそれらを組み込んだ様々な技術が出現している。そのような3Dデータまたはボリュメトリックデータを用いた様々な実環境および仮想環境の説明はこれまで、いくつかのコンピューティングシステムでは望ましい方式での処理が困難であった大きいデータセットを伴ってきた。さらに、例えば、ドローン、ウェアラブルデバイス、仮想現実システム等のデバイスが小さくなるにつれて、そのようなデバイスのメモリリソースおよび処理リソースも制約され得る。例として、AR/VR/MRアプリケーションには、サポートするハードウェアを用いて生成されるグラフィカル表示のために高フレームレートが求められ得る。ただし、いくつかのアプリケーションでは、そのようなハードウェアのGPUおよびコンピュータビジョンサブシステムは、望ましい結果を生成すべく(例えば、幾多の例示的な目標の中でもとりわけ、信頼できる結果を生成するフレームレートで信頼できるグラフィカルシーンを生成して、過度の待ち時間に起因するユーザの乗り物酔いを防ぐべく)、例えば最大で130fps(7ミリ秒)といった高レートでデータ(例えば、3Dデータ)を処理する必要があり得る。さらなるアプリケーションでは、幾多の例示的な課題の中でもとりわけ、対応するシステムの処理、メモリ、電力、アプリケーション要件における制約を満たしつつ、大きいボリュームを記述するデータを満足のいくように処理することが同様に挑戦され得る。
【0053】
いくつかの実装において、コンピューティングシステムは、形式に従って定義されたスパースボリュメトリックデータを生成および/または使用するためのロジックを備え得る。例えば、定義されたボリュメトリックデータ構造は、様々なシステムおよびアプリケーションにおけるコンピュータビジョンおよび3Dレンダリングを統一するために提供され得る。物体のボリュメトリック表現は、例えば、ステレオスコーピックカメラまたは深度カメラなどの光センサを用いて撮像され得る。物体のボリュメトリック表現は、複数のボクセルを含み得る。改良されたボリュメトリックデータ構造は、対応するボリュメトリック表現を再帰的に細分化して物体の目標解像度を取得することが可能になるように定義され得る。細分化の間、これらのボクセルのうちの1つまたは複数に含まれ得るボリュメトリック表現内の空きスペースは、ボリュメトリック表現(およびサポート演算)からカリングされ得る。空きスペースは、物体の幾何学的特性を含まないボリュメトリック表現のエリアであってよい。
【0054】
したがって、改良されたボリュメトリックデータ構造において、対応するボリューム内の個々のボクセルは、「占有」(対応するボリュメトリック空間内に存在しているいくつかのジオメトリによる)または「空」(対応するボリュームが空きスペースから成ることを表す)とタグ付けされ得る。そのようなタグはさらに、その対応するサブボリュームのうちの1つまたは複数も占有されていること(例えば、親または上位レベルのボクセルが占有とタグ付けされている場合)、または、そのサブボリュームの全てが空きスペースであること(すなわち、親または上位レベルのボクセルが空とタグ付けされている場合)を指定していると解釈され得る。いくつかの実装において、ボクセルを空とタグ付けすることにより、ボクセルおよび/またはその対応するサブボリュームボクセルを、対応するボリュメトリック表現を生成するために用いられる演算から効果的に除去できるようになり得る。ボリュメトリックデータ構造は、スパースセクサクワターナリーツリー(SST)形式に従ったものなど、スパースツリー構造に従ったものであってよい。さらに、スパースボリュメトリックデータ構造に対するそのようなアプローチは、物体のボリュメトリック表現を格納するためにこれまで用いられてきたものよりも比較的少ないストレージ空間を利用し得る。さらに、ボリュメトリックデータを圧縮すると、幾多の例示的な利益の中でもとりわけ、そのような表現の伝送の実行可能性が増し、そのような表現のより速い処理が可能になり得る。
【0055】
ボリュメトリックデータ構造をハードウェアアクセラレーションして3Dレンダラの更新を速やかにできるようにすることにより、別個のコンピュータビジョンシステムおよびグラフィックスシステムにおいて生じ得る遅延を排除し得る。そのような遅延は、待ち時間を招くことがあり、AR、VR、MRおよび他のアプリケーションにおいて用いられた場合、幾多のさらなる欠点の中でもとりわけ、ユーザの乗り物酔いを引き起こし得る。加速されたデータ構造における幾何学的特性をボクセルが占有しているかどうかを速やかに試験する能力により、リアルタイムで更新され得る低待ち時間のAR、VR、MRまたは他のシステムの構築が可能になる。
【0056】
いくつかの実施形態において、ボリュメトリックデータ構造の能力は、イントラフレーム警告も提供し得る。例えば、AR、VR、MRおよび他のアプリケーションにおいて、画像化されたシーン内の実物体または合成物体とユーザが衝突する可能性がある場合、または、ドローンまたはロボット用のコンピュータビジョンアプリケーションにおいて、画像化されたシーン内の実物体または合成物体とそのようなデバイスが衝突する可能性がある場合、ボリュメトリックデータ構造によって提供される処理の速度により、差し迫った衝突の警告が可能になる。
【0057】
本開示の実施形態は、ロボット工学、拡張現実および複合現実ヘッドセット用ヘッドマウントディスプレイならびに電話およびタブレットなどの用途におけるボリュメトリックデータの格納および処理に関し得る。本開示の実施形態は、ボクセルグループ内の各ボリュメトリック要素(例えば、ボクセル)、および、オプションとして、ボクセルのジオメトリに関連する物理量を単一のビットとして表す。例えば、対応する赤・緑・青(RGB)または他の配色エンコーディング、透明性、切り捨て符号付き距離関数(TSDF)情報等、64個のボクセルのグループに関連するさらなるパラメータが、ボクセルに関連付けられ、(例えば、各ボクセルを表すのに2つまたはそれよりも多くのビットが用いられるように、)関連付けられたオプションとしての64ビットデータ構造に格納され得る。そのような表現スキームにより、最小のメモリ要件が実現され得る。さらに、ボクセルを単一のビットで表すことにより、ボリュメトリック表現の要素を論理的または数学的に組み合わせるための多くの簡略化された計算の実行が可能になる。ボリュメトリック表現の要素を組み合わせることは、例えば、ボリューム内の平面についてOR演算して3Dボリュメトリックデータの2D投影を作成すること、および、とりわけ2.5Dマニホールド内の占有されているボクセルの数をカウントすることにより表面積を計算することを含み得る。比較する場合、XORロジックを用いて64ビットサブボリューム(例えば、4^3サブボリューム)を比較でき、ボリュームを反転させることができる。幾多の例の中でもとりわけ、物体をマージしてそれらを共にOR演算することにより、ハイブリッド物体を作成できる。
【0058】
図1は、頭部の急速な動きに起因する変化と、レンダリングされたグラフィックスにオクルージョンおよびシャドーを生成し得る環境の変化とを考慮するためのポストレンダリング補正装置を有する並列グラフィックスレンダリングサブシステムおよびコンピュータビジョンサブシステムから成る従来の拡張現実または複合現実システムを示す。1つの例示的な実装において、システムは、バス101を介した相互接続、オンチップネットワークオンチップまたは他の相互接続によりグラフィックスパイプライン、コンピュータビジョンパイプラインおよびポストレンダリング補正装置の実行を制御するために、ホストメモリ124によりサポートされるホストプロセッサ100を含み得る。相互接続により、適切なソフトウェアを実行するホストプロセッサ100は、グラフィックス処理ユニット(GPU)106、関連付けられたグラフィックスメモリ111、コンピュータビジョンパイプライン116および関連付けられたコンピュータビジョンメモリ124の実行を制御することが可能になる。一例において、OpenGLグラフィックスシェーダ107(例えば、三角形リスト105上で動作する)を介した、GPU106を用いるグラフィックスのレンダリングが、コンピュータビジョンパイプラインよりも遅い速度で行われ得る。結果として、GPU106によりグラフィックスがレンダリングされてから生じた可能性がある頭部姿勢およびオクルージョンシーンジオメトリの変化を考慮するために、ワープエンジン108とディスプレイ/オクルージョンプロセッサ109とを介したポストレンダリング補正が実行され得る。GPU106の出力は、幾多の例の中でもとりわけ、頭部姿勢パイプライン120およびオクルージョンパイプライン122からの正しい制御信号121および123と併せて用いることで、頭部姿勢119およびオクルージョンジオメトリ113のあらゆる変化を考慮に入れるための正しいグラフィックス出力を生成できるように、タイムスタンピングされる。
【0059】
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のオクルージョンジオメトリをシャドーマスクの上に合成して、グラフィカルシャドー114をワープエンジン108の出力103の上に生成し、拡張/複合現実ヘッドセット110上に表示するための最終出力フレーム104を生成し得る。
【0060】
図2は、本開示のいくつかの実施形態によるボクセルベースの拡張現実または複合現実レンダリングシステムを示す。
図2に示される装置は、ホストCPU200および関連付けられるホストメモリ201上に構成されたホストシステムを含み得る。そのようなシステムは、バス204、オンチップネットワークまたは他の通信メカニズムを介して、統合されたコンピュータビジョンおよびグラフィックスパイプライン223、ならびに、ヘッドマウント拡張現実または複合現実ディスプレイ211上に表示するために最終シーンにレンダリングされる実ボクセルおよび合成ボクセルを含む、関連付けられる統合されたコンピュータビジョンおよびグラフィックスメモリ213と通信し得る。また、AR/MRディスプレイ211、複数の能動および受動イメージセンサ214と、頭部姿勢222の向きの変化を測定するために用いられる慣性測定ユニット(IMU)212とを含み得る。
【0061】
組み合わされたレンダリングパイプラインにおいて、合成ジオメトリは、合成ボクセルジオメトリ202を生成するためにOpenGL JiT(ジャストインタイム)トランスレータ205により処理される三角形リスト204から開始して生成され得る。合成ボクセルジオメトリは、例えば、三角形リストから三角形の主平面を選択することにより生成され得る。次に、選択された平面における各三角形の2Dラスタライズが、(例えば、X方向およびZ方向において)実行され得る。3番目の座標(例えば、Y)は、三角形にわたって補間される属性として作成され得る。ラスタライズされた三角形の各ピクセルは、対応するボクセルの定義をもたらし得る。この処理は、CPUまたはGPUのいずれかにより実行され得る。GPUにより実行される場合、幾多の例示的な実装の中でもとりわけ、ラスタライズされた三角形の各々がGPUからリードバックされて、GPUがピクセルを描画したボクセルが作成され得る。例えば、合成ボクセルは、リストの2Dバッファを用いて生成されてよく、リストの各エントリは、そのピクセルにおいてレンダリングされたポリゴンの深度情報を格納する。例えば、モデルは、正投影視点(例えば、上面視)を用いてレンダリングされ得る。例えば、例示的なバッファにおいて提供される全ての(x,y)は、対応するボクセルボリューム内(例えば、(x,y,0)から(x,y,4095)まで)の(x,y)の列を表し得る。次に、各列は、各リスト内の情報を用いて、3Dスキャンラインとして情報からレンダリングされ得る。
【0062】
図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は、幾多の例示的な実装の中でもとりわけ、受動ステレオセンサのペアを含み得る。
【0063】
深度パイプライン215により生成される深度画像が、SLAMアルゴリズム(例えば、Kinect Fusion)を用いて密なSLAMパイプライン217により処理されて、測定されたジオメトリボクセル227のボクセル化されたモデルが生成され得る。測定されたジオメトリボクセル227(例えば、実際のボクセルジオメトリ)を合成ボクセルジオメトリ202と組み合わせることで、ディスプレイプロセッサ210を介してディスプレイデバイス(例えば、VR用途またはAR用途におけるヘッドマウントディスプレイ211)に出力するためのシーンの2Dレンダリングを生成し得るレイトレーシングアクセラレータ206が提供され得る。そのような実装において、測定されたジオメトリボクセル227および合成ジオメトリ202の実際のボクセルから、完全なシーンモデルが構成され得る。結果として、(例えば、
図1のように)2Dレンダリングされたジオメトリをワープさせる必要はない。そのような実装は、頭部姿勢追跡センサおよび対応するロジックと組み合わされることで、実際のジオメトリと測定されたジオメトリとを正確に位置合わせし得る。例えば、例示的な頭部姿勢パイプライン221は、ヘッドマウントディスプレイ211に装着されたIMU212からの頭部姿勢測定値232を処理でき、頭部姿勢測定パイプラインの出力231は、ディスプレイプロセッサ210を介したレンダリングの間、考慮され得る。
【0064】
いくつかの例において、音声残響モデルをレンダリングすべく、かつ、実世界、仮想または複合現実シーンの物理特性をモデル化すべく、統合されたレンダリングパイプラインは、測定されたジオメトリボクセル227(例えば、実際のボクセルモデル)および合成ジオメトリ202(例えば、合成ボクセルモデル)も用い得る。例として、物理パイプライン218は、測定されたジオメトリボクセル227および合成ボクセルジオメトリ202を受け取り、レイキャスティングアクセラレータ206を用いてヘッドマウントディスプレイ(HMD)211内の左右のイヤホン用の出力音声サンプルを計算することで、ボクセルデータ構造に組み込まれた音響反射係数を用いて出力サンプル230を計算し得る。同様に、202および227から成る統合されたボクセルモデルも、合成AR/MRシーン内の合成物体の物理特性の更新を決定するために用いられ得る。物理パイプライン218は、合成シーンジオメトリを入力として受け取ってから、レンダリングのために、かつ、物理モデルの将来の反復の基礎として合成ジオメトリ202の更新228を計算する前に、レイキャスティングアクセラレータ206を用いて衝突を計算する。
【0065】
いくつかの実装において、
図2に示されるシステムなどのシステムはさらに、幾多の例の中でもとりわけ、ISPパイプライン215の出力からのRGB映像/画像入力、SLAMパイプライン217の出力からのボリュメトリックシーンデータのいずれかを処理できる、畳み込みニューラルネットワーク(CNN)を実装および/または利用するための1つまたは複数のハードウェアアクセラレータを備え得る。ニューラルネットワーク分類器は、ハードウェア(HW)畳み込みニューラルネットワーク(CNN)アクセラレータ207を排他的に用いて、または、プロセッサとHW CNNアクセラレータ207との組み合わせで動作することで、出力分類237を生成できる。ボリュメトリック表現に関する推論を行うためのHW CNNアクセラレータ207の可用性により、幾多の例示的な使用の中でもとりわけ、測定されたジオメトリボクセル227内のボクセルのグループに、特定の物体クラスに属するものとして符号が付されることが可能になり得る。
【0066】
ボクセルに符号が付されることにより(例えば、CNNを用いてハードウェアアクセラレーションをサポートすることにより)、それらのボクセルが属するそれらの物体を、既知の物体に対応するシステムにより認識することが可能になり得る。ソースボクセルは、測定されたジオメトリボクセル227から除去され、物体に対応するバウンディングボックス、および/または、幾多の例示的な情報の中でもとりわけ、物体の原点、物体の姿勢、物体記述子についての情報により置き換えられ得る。これにより、シーンについての意味論的にはるかに有意義な説明がもたらされ得る。この説明は、例えば、幾多の例示的な使用の中でもとりわけ、シーン内の物体と相互作用するためのロボット、ドローンまたは他のコンピューティングシステムによる入力として、または、シーン内の物体の吸音係数を調べてそれらをシーンの音響モデルに反映するためのオーディオシステムによる入力として用いられ得る。
【0067】
図2において示され説明される例示的なシステムのパイプラインを実装するために、1つまたは複数のプロセッサデバイスおよびハードウェアアクセラレータが提供され得る。幾多の例示的な実装の中でもとりわけいくつかの実装において、組み合わされたレンダリングパイプラインのハードウェア要素およびソフトウェア要素の全てがDRAMコントローラ209へのアクセスを共有してよく、結果として、共有DDRメモリデバイス208にデータを格納することが可能になる。
【0068】
図3は、いくつかの実施形態による密なボリュメトリック表現と疎なボリュメトリック表現との間の違いを示すために提示されている。
図3の例に示されるように、実世界または合成物体300(例えば、ウサギの像)は、ボクセルの観点から、302に示される密な方式または304に示される疎な方式のいずれかで表現され得る。302などの密な表現の利点は、ボリューム内の全てのボクセルへのアクセスの速度が均一であることだが、マイナス面は、必要とされ得る記憶容量である。例えば、512^3要素ボリューム(例えば、Kinectセンサを用いてスキャンされるボリュームに対する1cmの解像度で5mに対応する)などの密な表現の場合、ボクセル毎に4バイトの切り捨て符号付き距離関数(TSDF)を用いて相対的に小さいボリュームを格納する512メガバイト。他方では、疎な表現を具現化したオクツリー表現304は、実世界シーン内に実際のジオメトリが存在するそれらのボクセルのみを格納することにより、同じボリュームを格納するために必要なデータ量を低減し得る。
【0069】
図4を参照すると、いくつかの実施形態による例示的なシーンの合成図が示される。特に、
図4は、合成ボクセルデータおよび実世界ボクセルデータについて、同等のバウンディングボックス400および402内にそれぞれある合成ボクセル401および実世界で測定されたボクセル403を表すために、シーン404の合成図がどのように、並列データ構造を用いて維持され、表示され、またはさらなる処理を受け得るかを示す。
図5は、いくつかの実施形態による均一な4^3要素ツリー構造の詳細レベルを示す。いくつかの実装において、
図5の例に表されているようなオクツリー表現を用いてボリューム内の各ボクセルを記述するために、わずか1ビットが利用され得る。ただし、オクツリーベースの技術の欠点は、オクツリー内の特定のボクセルにアクセスするために利用される間接メモリアクセスの数であり得る。スパースボクセルオクツリーの場合、幾多の例示的な利点の中でもとりわけ、同じジオメトリが有利に複数の詳細レベルで暗黙的に表され得るので、レイキャスティング、ゲーム物理学、CNNおよび他の技術などの動作が可能になり、さらなる計算からシーンの空き部分をカリングすることで、必要とされる記憶容量だけでなく、消費電力および計算負荷の観点からも全体的な低減をもたらすことが可能になる。
【0070】
一実装において、ボクセル当たり1ビットのメモリ要件で501に示されるような4^3(または64ビット)符号なし整数としてボリュメトリック情報を編成するために、改良されたボクセル記述子(本明細書において、ボリュメトリックデータ構造とも称される)が提供され得る。この例では、ボクセル当たり1ビットだと、切り捨て符号付き距離関数値を格納するには、(64ビットを利用するSLAMbench/KFusionにおけるTSDFと比較して)不十分である。本例では、さらなる(例えば、64ビットの)フィールド500がボクセル記述子に含まれ得る。この例は、64ビットフィールド500内のTSDFを16ビットとしつつ、x、yおよびzにおけるさらなる2ビットの分数分解能をボクセル記述子501に暗黙的に提供することで、64ビットフィールド500内のボクセルTSDFとボクセル位置501との組み合わせを、SLAMbench/KFusionまたは他の例において用いられるようなはるかに高い解像度TSDFと同等にし得るように、さらに強化され得る。例えば、64ビットフィールド500(ボクセル記述子)内のさらなるデータは、(例えば、受動RGBセンサを介したシーンからの)各々が1バイトであるサブサンプリングされたRGB色情報と、8ビットの透明性値アルファと、2つの1バイトの予約フィールドR1およびR2とを格納するために用いられ得る。これらの予約フィールドは特定用途向けであってよく、例えば、幾多の例の中でもとりわけ、オーディオ用途の音響反射率、物理用途の剛性、対象材料の種類を格納するために用いられ得る。
【0071】
図5に示されるように、ボクセル記述子501は、16個のボクセル502を各々が含む4つの2D平面へ論理的にグループ化され得る。これらの2D平面(またはボクセル平面)の各々は、
図5に表される4の昇累乗での連続分解に基づいて、オクツリースタイル構造のレベルを記述し得る。この例示的な実装において、64ビットボクセル記述子が選ばれるのは、対応するシステム実装において用いられる64ビットバスインフラストラクチャと良好に一致するからである(だが、他のボクセル記述子のサイズおよび形式が、他のシステムの実装において提供され、システムのバスまたは他のインフラストラクチャに従ってサイズ設定され得る)。いくつかの実装において、ボクセル記述子は、ボクセルを取得するために用いられるメモリアクセスの数を低減するようにサイズ設定され得る。例えば、幾多の例示的な検討事項および実装の中でもとりわけ、64ビットボクセル記述子を用いることにより、2^3要素で動作する従来のオクツリーと比較して、オクツリー内の任意のレベルでボクセルにアクセスするために必要なメモリアクセスの数を1/2に低減し得る。
【0072】
一例において、オクツリーは、4^3ルートボリューム503と、下にある層504、505および506におけるジオメトリの存在についてのコードが例示的な256^3ボリュームで示される、ゼロでないエントリの各々とから開始して、記述され得る。この特定の例では、オクツリー内の最下位レベルにアクセスすべく、4つのメモリアクセスが用いられ得る。そのようなオーバヘッドが高過ぎる場合、代替的なアプローチを採用することで、オクツリーの最上位レベルを、507に示される64^3などのより大きいボリュームとしてエンコードし得る。この場合、507内のゼロでないエントリの各々は、下にある256^3ボリューム508内の下にある4^3オクツリーの存在を示し得る。この代替的な編成の結果、503、504および505に示される代替的な定式化と比較して、256^3ボリューム508内の任意のボクセルにアクセスするために必要となるのは2つのメモリアクセスのみである。この後者のアプローチは、オクツリー構造をホスティングするデバイスがより大量の埋め込みメモリを有することで、外部メモリ内のボクセルオクツリー508のより低くアクセス頻度がより少ない部分のみが許可される場合に有利である。このアプローチでは、例えば、全体としてより大きい(例えば、64^3)ボリュームがオンチップメモリに格納される場合、格納の観点からコストがより多くなることがあるが、トレードオフにより、幾多の例示的な利点の中でもとりわけ、メモリアクセスの高速化(例えば、2倍)と消費電力の大幅な低減とが可能になり得る。
【0073】
図6を参照すると、いくつかの実施形態による、本願のデータ構造およびボクセルデータを利用し得る例示的な用途を示すブロックダイアグラムが示されている。一例において、
図5に示されるものなど、さらなる情報が、例示的なボクセル記述子500を通じて提供され得る。ボクセル記述子により、利用される全体的なメモリがボクセル当たり2ビットに増え得るが、ボクセル記述子により、
図6に表されるようなボクセルデータを利用し得る広範囲の用途が可能になり得る。例えば、幾多の実装の中でもとりわけ、密なSLAMシステム601(例えば、SLAMbench)を用いて生成されるような共有ボリュメトリック表現602が、オーディオレイキャスティング604において用いられるグラフィックレイキャスティングまたはレイトレーシング603を用いてシーンをレンダリング際に用いられ得る。さらに他の例において、ボリュメトリック表現602は、畳み込みニューラルネットワーク(CNN)推論605にも用いられてよく、クラウドインフラストラクチャ607によりバックアップされ得る。いくつかの事例において、クラウドインフラストラクチャ607は、推論を介してアクセスされ得る、木、家具または他の物体(例えば、606)などの物体の詳細なボリュメトリック記述子を含み得る。物体の推論またはそうでなければ識別に基づいて、対応する詳細な記述子がデバイスへ返されることにより、ボリュメトリック表現602のボクセルを、幾多の例示的な特徴の中でもとりわけ、姿勢情報と物体の特性を含む記述子とを有するバウンディングボックス表現に置き換えることが可能になり得る。
【0074】
さらに他の実施形態において、上記のボクセルモデルは、さらに、または代替的に、ボリュメトリック表現602からの3Dから2Dへの投影を用いて例示的な環境608の2Dマップを構築するために、いくつかのシステムにおいて利用され得る。これらの2Dマップは、クラウドインフラストラクチャおよび/または他のネットワークベースリソース607を介した通信機械を介して再び共有され、クラウドソーシング技術を用いて高品質のマップを構築するために(例えば、同じクラウドインフラストラクチャを用いて)集約され得る。これらのマップは、クラウドインフラストラクチャ607により、接続された機械およびデバイスに対して共有され得る。さらに別の例では、(例えば、車両またはロボットの幅および高さが固定されていると仮定すると、)2Dマップは、投影に続けて区分的簡略化609を用いて、超低帯域幅用途向けに改良され得る。次に、簡略化された経路は、経路の区分的線形セグメント当たり単一のX,Y座標ペアのみを有するので、車両609の経路をクラウドインフラストラクチャ607に伝達するために必要とされ、かつ、クラウドソーシング技術を用いて高品質のマップを構築するためにその同じクラウドインフラストラクチャ607に集約される帯域幅の量が低減され得る。これらのマップは、クラウドインフラストラクチャ607により、接続された機械およびデバイスに対して共有され得る。
【0075】
これらの異なる用途を可能にすべく、共通の機能が、幾多の例の中でもとりわけ、いくつかの実装において、例えば、共有ソフトウェアライブラリを通じて提供されてよく、いくつかの実施形態において、ハードウェアアクセラレータまたはプロセッサ命令セットアーキテクチャ(ISA)拡張を用いて加速されてよい。例えば、そのような機能は、記述子へのボクセルの挿入、ボクセルの削除またはボクセル610のルックアップを含み得る。いくつかの実装では、幾多の例の中でもとりわけ、ボリューム630からの点/ボクセルの削除だけでなく、衝突検出機能620もサポートされ得る。上で紹介したように、システムは、対応するボリュメトリック表現602(3Dボリューム)からX方向、Y方向およびZ方向に2D投影640を迅速に生成するための機能を備え得る(例えば、これは、経路または衝突の決定の基礎として役立ち得る)。いくつかの場合において、ヒストグラムピラミッド650を用いてボリュメトリック表現602から三角形リストを生成できることも有利になり得る。さらに、システムは、ボリュメトリック空間602の2D表現および3D表現内の自由経路660を迅速に決定するための機能を備え得る。そのような機能は、様々な用途において有用であり得る。幾多の例の中でもとりわけ、ボリューム内のボクセルの数を詳述する、ポピュレーションカウンタを用いて物体の表面を決定してボリュメトリック表現602のマスキングされた領域内の1ビットの数をカウントするなどのさらなる機能が提供され得る。
【0076】
図7の簡略ブロックダイアグラムを参照すると、少なくともいくつかの実施形態による、3D数字を認識する機能を備えたシステムを含む例示的なネットワークが示されている。例えば、
図6に示される用途のうちの1つは、
図7においてより詳細に説明するボリュメトリックCNNアプリケーション605である。
図7では、米国立標準技術研究所(MNIST)の混合データセットなどのデータセットから生成される3D数字700を認識するために、例示的なネットワークが用いられる。そのようなデータセット内の数字は、トレーニングの前にX、YおよびZにおける適切な回転および並進を数字に適用することによりCNNベースの畳み込みネットワーク分類器710をトレーニングするために用いられ得る。トレーニングされたネットワーク710は、埋め込みデバイスにおける推論に用いられる場合、幾多の例の中でもとりわけ、数字がX、YおよびZにおける回転および並進720の対象になるときでさえシーン内の3D数字を高精度で分類するために用いられ得る。いくつかの実装において、CNN分類器の動作は、
図2に示されるHW CNNアクセラレータ207により加速され得る。ニューラルネットワークの第1の層は、ボリュメトリック表現602内のボクセルを用いて乗算を実行する。そのため、ゼロによる乗算は常にゼロであり、データ値Aによる1(ボクセル)による乗算はAに等しくなるので、これらの算術演算はスキップされ得る。
【0077】
図8は、暗黙の詳細レベルを用いて同じデータ構造に対して実行される複数の分類を示す。ボリュメトリック表現602を用いたCNN分類のさらなる改良は、オクツリー表現が、
図5に示されるようにオクツリー構造内に複数の詳細レベルを暗黙的に含むので、暗黙の詳細レベル800、810および820を並行して用いて、かつ、
図8に示されるような単一の分類器830または複数の分類器を並行して用いて、複数の分類を同じデータ構造に対して実行できるということであってよい。従来のシステムでは、分類パス間での必要な画像サイズ変更に起因して、同等の並列分類が遅くなり得る。そのようなサイズ変更は、本明細書に記載するボクセル構造を適用する実装では割愛され得る。なぜなら、同じオクツリーは、複数の詳細レベルで同じ情報を含み得るからである。実際には、ボリュメトリックモデルに基づく単一のトレーニングデータセットは、従来のCNNネットワークにおいて必要とされるようなサイズ変更されたトレーニングデータセットではなく、これらの詳細レベルの全てをカバーし得る。
【0078】
図9の例を参照すると、いくつかの実施形態による2D CNNによる例示的な演算排除が示される。演算排除は、3DボリュメトリックCNNだけでなく、
図9に示されるような2D CNNに対しても用いられ得る。例えば、
図9では、第1の層において、ビットマップマスク900が、入力910の予想される「形状」を記述するために用いられてよく、着信映像ストリーム920に適用されてよい。一例において、演算排除は、3DボリュメトリックCNNに対してだけでなく、2DボリュメトリックCNNに対しても用いられ得る。例えば、
図9の例の2D CNNでは、ビットマップマスク900が、入力910の予想される「形状」を記述するためにCNNの第1の層に適用されてよく、着信映像ストリーム820など、CNNの入力データに適用されてよい。例として、CNNネットワーク内でのトレーニングまたは推論のためにビットマップマスクを歩行者の画像に適用した効果が
図9に示される。
図9では、901が、歩行者901の元の画像を表し、903が、ビットマップマスクが適用された対応するバージョンを表す。同様に、歩行者を含まない画像が902に示され、対応するビットマップマスキングバージョンが904に示されている。検出器により予想される、予想された2Dまたは3Dのジオメトリの知識を通じてCNNのトレーニングまたは推論に必要とされる演算の数を低減すべく、任意の種類の2Dまたは3Dの物体に同じ方法を適用できる。3Dボリュメトリックビットマップの例が911に示される。実際のシーンにおける推論のための2Dビットマップの使用が920に示される。
【0079】
図9の例示的な実装において、概念的なビットマップが(900に)示されているが、実際のビットマップは、物体910の特定のクラスについて一連のトレーニング画像を平均化することにより生成される。示されている例は2次元であるが、ボクセル当たり1ビットの提案されるボリュメトリックデータ形式で、3D物体について同様のビットマップマスクを生成することもできる。実際には、幾多の例示的な実装の中でもとりわけ、この方法は、ボクセル/ピクセル当たりさらなるビットを用いて2Dまたは3Dの物体の予想される色範囲または他の特性を指定するために、潜在的に拡張されることもあり得る。
【0080】
図10は、いくつかの実施形態による、10,000個のCIFAR-10試験画像の解析を伴う例示的な実験の結果を示す表である。いくつかの実装において、演算排除を用いて、
図10に示されるLeNet 1000などのCNNネットワークで頻繁に行われる正規化線形ユニット(ReLU)演算に起因する1D、2Dおよび3DのCNNにおける中間計算を排除できる。
図10に示されるように、10,000個のCIFAR-10試験画像を用いる実験では、ReLUユニットにより生成されるデータ依存ゼロの割合は、最大で85%に達し得る。これは、ゼロの場合にはゼロを認識し、かつ、これに応答して、対応するデータのフェッチも、対応する乗算演算の実行も行わないシステムが提供され得ることを意味する。この例では、85%は、米国立標準技術研究所(MNIST)の修正済み試験データセットから生成されるReLU動的ゼロの割合を表す。これらのゼロに対応する、対応する演算排除は、幾多の例示的な利益の中でもとりわけ、消費電力要件およびメモリ帯域幅要件を低減するのに役立ち得る。
【0081】
些細な演算は、ビットマップに基づいてカリングされ得る。例えば、そのようなビットマップの使用は、参照により全体が本明細書に組み込まれる、「Circuit for compressing data and a processor employing the same」と題する米国特許第8,713,080号に記載され図示されている原理および実施形態に従ったものであってよい。いくつかの実装は、やはり参照により全体が本明細書に組み込まれる、「Hardware for performing arithmetic operations」と題する米国特許第9,104,633号に記載され図示されているシステム、回路および他の実装など、そのようなビットマップを用いることができるハードウェアを提供し得る。
【0082】
図11は、いくつかの実施形態による、ビットマップに基づいて些細な演算をカリングするための機能を提供すべくシステムへ組み込まれ得るハードウェアを示す。この例では、繰り返される畳み込み層を含む多層ニューラルネットワークが提供される。ハードウェアは、1つまたは複数のプロセッサ、1つまたは複数のマイクロプロセッサ、1つまたは複数の回路および1つまたは複数のコンピュータ等を含み得る。この特定の例では、ニューラルネットワークは、最初の畳み込み処理層1100、続いてプーリング処理1110、そして最後に、正規化線形ユニット(ReLU)関数1120などの活性化関数処理を含む。ReLU出力ベクトル1131を提供するReLUユニット1120の出力は、ReLU出力ベクトル1131を受信する次の畳み込み処理層1180に(例えば、場合によっては、遅延1132を介して)接続され得る。1つの例示的な実装において、ReLUビットマップ1130は、次の畳み込みユニット1180へのReLUユニット1120の接続と並行して生成されてもよい。ReLUビットマップ1130は、ReLU出力ベクトル1131のうちのどの要素がゼロでどの要素がゼロでないかを示す。
【0083】
一実装において、ニューラルネットワークの計算に伴う演算を排除する機会を、有効になっているハードウェアに通知するために、ビットマップ(例えば、1130)が生成されるか、またはそうでなければ提供され得る。例えば、ReLUビットマップ1130内のビットは、ビットマップスケジューラ1160により解釈され得る。ビットマップスケジューラ1160は、ゼロによる乗算で常にゼロが出力として生成されると仮定すると、ReLUビットマップ1130内の対応するバイナリゼロが存在する、ReLU出力ベクトル1131のゼロであるエントリをスキップするよう、次の畳み込みユニット1180内の乗算器に命令する。並行して、ReLUビットマップ1130内のゼロに対応するデータ/重みに対するアドレス生成器1140からのメモリフェッチも、スキップされ得る。なぜなら、次の畳み込みユニット1180によりスキップされることになる重みをフェッチする価値がほとんどないからである。取り付けられたDDR DRAMストレージデバイス1170からDDRコントローラ1150を介して重みがフェッチされる場合、待ち時間が非常に長くなり、いくつかのオンチップ帯域幅および関連する消費電力だけしか節約できないことがある。他方では、重みがオンチップRAMストレージ1180からフェッチされる場合、特に、RAM/DDRフェッチ遅延1132に対応する遅延が次の畳み込みユニット1180への入力で追加される場合には、重みフェッチ演算の全体をバイパス/スキップすることが可能になり得る。
【0084】
図12を参照すると、いくつかの実施形態による、些細な演算をカリングするための(または演算排除を実行するための)回路および他のロジックを備える例示的なハードウェアの改良を示す簡略ブロックダイアグラムが提示されている。
図12の例に示されるように、すぐ前の最大プーリングユニット1210または畳み込みユニット1200から入力されるReLUユニット1220の符号を前もって予測するために、さらなるハードウェアロジックが提供され得る。符号予測およびReLUビットマップ生成を最大プーリングユニット1210に追加することにより、ReLUビットマップ情報をタイミングの観点からより早く予測して、アドレス生成器1240を通じて生じ得る遅延を、外部DDRコントローラ1250およびDDRストレージ1270または内部RAMストレージ1271を通じてカバーすることが可能になり得る。遅延が十分に小さい場合には、メモリからのフェッチの結果が決して用いられないと決定できるので、ReLUビットマップをアドレス生成器1240において解釈でき、ReLUビットマップゼロに関連付けられたメモリフェッチを完全にスキップできる。
図11のスキームに対するこの修正により、幾多の例示的な特徴および機能の中でもとりわけ、さらなる電力を節約でき、DDRアクセス経路(例えば、1240から1250まで、1250から1270まで)またはRAMアクセス経路(例えば、1240から1271まで)を通じた遅延が、遅延ステージ1232を保証することにならないよう十分に小さい場合には、次の畳み込みユニット1280への入力で遅延ステージ(例えば、1132、1232)を除去することも可能になり得る。
【0085】
図13は、いくつかの実施形態による例示的なハードウェアを示す別の簡略ブロックダイアグラムである。例えば、CNN ReLU層は、負の入力に対応する多数の出力ゼロを生成できる。実際には、負のReLU入力は、前の層(例えば、
図13の例におけるプーリング層)への符号入力を見ることにより、予測的に決定され得る。最上位ビット(MSB)の観点から浮動小数点および整数演算が明示的に符号付けられ得るので、畳み込み層において乗算される入力のベクトルにわたる単純なビット単位の排他的OR(XOR)演算により、
図13に示されるような出力ゼロがどの乗算で生成されるかを予測できる。結果として生じる符号予測ReLUビットマップベクトルは、上記の他の例において説明した方式などで、乗算のサブセットと、関連付けられる係数のメモリからの読み取りとを決定して排除するための基礎として用いられ得る。
【0086】
前のプーリングステージまたは畳み込みステージ(すなわち、対応するReLUステージの前のステージ)へ戻るReLUビットマップの生成を提供すると、さらなる電力が生じ得る。例えば、ReLU活性化ロジックにより究極的にはゼロに設定される負の出力を乗算器が生成する場合に乗算器を無効にするために、符号予測ロジックが提供され得る。例えば、これは、乗算器1314の入力1301および1302の2つの符号ビット1310および1315がXORゲートにより論理的に組み合わされてPreReLUビットマップビット1303が形成される場合に示される。この同じ信号は、幾多の例の中でもとりわけ、乗算器1314の演算を無効にするために用いられ得る。そうでなければ、次の畳み込みステージ1390での乗算のために入力される前に、ReLUロジックによりゼロに設定されるであろう負の出力を生成するエネルギーを不必要に消費するであろう。
【0087】
1300、1301、1302および1303の表現(表記A)が、
図13において与えられた表現に示されているものの上位レベルのビューを示すことに留意されたい。この例では、ブロック1302への入力は、2つの浮動小数点オペランドを含み得る。入力1301は、明示的な符号ビット1310と、複数のビットを含む指数1311と、やはり複数のビット1312を含む仮数とを含み得る。同様に、入力1302は同様に、符号1315と、仮数1317と、指数1316とを含み得る。いくつかの実装において、仮数および指数は、異なる精度を有し得る。なぜなら、結果1303の符号は、符号1301および1302または符号1310および1315のみにそれぞれ依存するからである。実際には、1301も1302も浮動小数点数である必要はないが、それらが符号付きの数であり、かつ、最上位ビット(MSB)が事実上、明示的または暗黙的に符号ビットである限り(例えば、これらの数が1または2の補数等である場合)、任意の整数または固定小数点の形式であってよい。
【0088】
図13の例を続けると、XOR(本明細書において、ExORまたはExORと代替的に示されることがある)ゲートを用いて2つの符号入力1310および1315が組み合わされることで、ビットマップビット1303が生成されてよく、次に、ハードウェアを用いてビットマップビット1303が処理されることで、次の畳み込みブロック(例えば、1390)では省略され得る下流の乗算が識別されてよい。2つの入力された数1313(例えば、1301に対応する)および1318(例えば、1302に対応する)が反対の符号を有しており、かつ、ReLUブロック1319によりゼロに設定されるであろう負の出力1304を生成することで、次の畳み込みステージ1390に入力されるReLU出力ベクトル13191にゼロ値がもたらされる場合、同じXOR出力1303は、乗算器1314を無効にするためにも用いられ得る。したがって、いくつかの実装において、PreReLUビットマップ1320は、ビットマップスケジューラ1360へ並行して伝送されてよく、ビットマップスケジューラ1360は、畳み込みユニット1390上で実行(および/または省略)されるように乗算をスケジューリングしてよい。例えば、ビットマップ1320内の全てのゼロについて、対応する畳み込み演算が、畳み込みユニット1390においてスキップされ得る。並行して、ビットマップ1320は、畳み込みユニット1390において用いられる重みのフェッチを制御する例示的なアドレス生成器1330により消費され得る。ビットマップ1320内の1に対応するアドレスのリストは、アドレス生成器1330においてコンパイルされてよく、DDRコントローラ1350を介してDDRストレージ1370への経路を制御するか、さもなければチップRAM1380への経路を制御する。いずれの場合にも、幾多の例の中でもとりわけ、PreReLUビットマップ1320内のものに対応する重みは、フェッチされ、(例えば、重み入力1371へのクロックサイクルの観点からいくつかの待ち時間の後に)畳み込みブロック1390へ提示され得るが、ゼロに対応する重みのフェッチは、省略され得る。
【0089】
上記のように、いくつかの実装では、ビットマップスケジューラ1360と畳み込みユニット1390との間に遅延(例えば、1361)を挿入することで、アドレス生成器1330、DDRコントローラ1350およびDDR1350を通じた遅延またはアドレス生成器1330および内部RAM1380を通る経路のバランスをとり得る。遅延により、ビットマップスケジューラにより駆動される畳み込みを、畳み込みユニット1390における畳み込み計算のための対応する重みに合わせて正確に整列させることが可能になり得る。実際には、タイミングの観点から、ReLUブロック1319の出力時点よりも早くReLUビットマップを生成することで、さらなる時間を獲得することが可能になり得る。メモリ(例えば、RAM1380またはDDR1370)への読み取りを、それらがアドレス生成器1330により生成される前に傍受するためにこのさらなる時間が用いられ得ることにより、(例えば、ゼロに対応する)読み取りのうちのいくつかが割愛され得る。メモリの読み取りは、チップ上での論理演算よりもはるかに高くなり得るので、そのようなメモリフェッチを除外することにより、幾多の例示的な利点の中でもとりわけ、非常に大幅なエネルギー節約がもたらされ得る。
【0090】
いくつかの実装において、DRAMアクセス回数をカバーするにはクロックサイクルの観点から記憶が依然として不十分である場合、ブロック指向の技術を用いて、DDRから符号ビットのグループ(例えば、1301)を前もって読み取り得る。(例えば、幾多の例の中でもとりわけ、2Dまたは3Dアレイ/行列間の2Dまたは3D畳み込みにおける符号ビットとの間の差を計算するための)XORゲート1300のセット(複数のXORゲート1300)を用いてPreReLUビットマップのブロックを生成すべく、符号ビットのこれらのグループは、入力画像または中間畳み込み層1302からの符号のブロックと共に用いられ得る。そのような実装では、各重みの符号を格納するために、DDRまたはオンチップRAM内のさらなる1ビットの記憶容量が提供され得るが、これにより、ゼロで乗算されることになる、DDRまたはRAMからの重みを常にReLUステージから読み取ることを回避するように、多くの待ち時間サイクルをカバーすることが可能になり得る。幾多の例示的な検討事項および実装の中でもとりわけ、いくつかの実装では、DDRまたはオンチップRAM内の重み当たりのさらなる1ビットの記憶容量が回避され得る。なぜなら、指数および仮数から独立してアドレス指定可能であるように符号が格納されるからである。
【0091】
一例において、システムは、最大データ転送レート用の自然バーストアクセスを有し得るDDRアクセスを利用するためにさらに強化され得る。個々のDDR重みアクセスをスキップすることによるエネルギーの節約は、それらがバーストよりも短いことがあるので、この内容において実現可能ではないことがある。したがって、いくつかの事例では、特定のバーストトランザクションに対応する全てのビットマップビットがゼロである場合、バーストがスキップされ得る。ただし、これは、頻繁には生じ得ず、故に、結果として生じる電力および帯域幅の節約が限定され得る。さらに他の実装において、ビットマップバースト内のN個よりも多いビットがゼロである場合にバーストが完全にスキップされるように、バースト内のビットマップビットの数について、レジスタプログラマブル閾値が設定され得る。これは、全体的なCNN分類精度をわずかに低下させる影響を有し得るが、エネルギー節約のためには許容できることがある。
【0092】
図14を参照すると、3D空間を解析する機械1405を含む例示的な環境を示す簡略ブロックダイアグラム1400が示されている。いくつかの実装において、機械は、本明細書に記載するような幾多の例の中でもとりわけ、例えば、SLAM処理、レイキャスティング、オドメトリ、衝突検出、2Dまたは3Dルート計画といった1つのまたは様々な用途または動作において3D空間を記述したボリュメトリックデータを利用するための、ハードウェアおよび/または回路に実装された機械実行可能ロジックを備え得る。ボリュメトリックデータは、本明細書に記載するようなスパースツリー表現として具現化され得る。いくつかの事例において、メモリ占有の増加をトレードオフすることによりボリュメトリックデータの処理をより迅速に実行するために、ハッシュテーブルが追加的または代替的に用いられ得る(例えば、ハッシュテーブルは、密なアレイよりも少ないメモリを用いるからである)。
【0093】
機械1405は、スパースツリーボリュメトリックデータ構造で表されるボリュメトリックデータをハンドリングおよび処理するように構成された、本明細書に記載するハードウェアおよびロジックを含み得る。
図14に示される特定の例において、機械1405は、3Dシーンを記述したボリュメトリックデータを処理することができ、かつ、シーン内の自律的な動きに対してこの情報を利用すること(例えば、シーン内に存在する地理に基づいて、シーン内での自らの位置を変更し、および/または機械の要素(例えば、センサ、カメラ、ポインタ、アクチュエータ、ツール等)のうちの1つまたは複数の向き(例えば、照準)を変更すること)ができる自律機械または半自律機械として実装され得る。そのようにすることにより、機械は、物体(例えば、1410aからc)を検出し、検出した物体に基づいて自律的に、シーンをナビゲートするか、またはシーンと相互作用し得る。いくつかの実装において、機械1405は、幾多の例の中でもとりわけ、自律走行車両(乗員または貨物を搬送するためのもの)、空中型、地上型または海上型ドローン、ロボットとして具現化され得る。
【0094】
1つの例示的な実装において、機械1405は、コンピューティングシステム1406を含み得る。コンピューティングシステム1406は、例示的な汎用型および専用型の処理ハードウェアの中でもとりわけ、1つまたは複数の中央処理装置(CPU)、グラフィカル処理ユニット(GPU)、テンソル処理ユニットまたは他の行列演算プロセッサ、ハードウェアアクセラレータ(例えば、ボリュメトリック処理アクセラレータ、機械学習アクセラレータ)などのデータプロセッサ1415を用いて実装され、1つまたは複数のメモリ要素(例えば、1420)を用いてさらに実装される。さらなる論理ブロックが提供されてよく、ボリュメトリック処理ロジック1425、コンピュータビジョンエンジン1430およびアクチュエータ1435など、ハードウェア回路、ファームウェアまたはソフトウェアに実装される。いくつかの実装において、機械1405は、3D空間を測定するための1つまたは複数のセンサ(例えば、1440)をさらに含み得る(例えば、LiDARセンサ、飛行時間センサ、realsenseセンサ等)。そのようなセンサ1440は、3D環境を記述するボリュメトリックデータを生成してボリュームのマップを開発するためにだけでなく、センサ1440を用いて検出される局所的に観察されたジオメトリを、ボリュームの占有されたジオメトリの予想されるまたは事前に観察されたバージョンを記述した基準データと比較するためにも用いられ得る。センサデータは、レイキャスティング、オドメトリ、姿勢推定または他の機能(例えば、コンピュータビジョンエンジン1430のサブモジュールとして実装され得る)に関連して、コンピュータビジョンエンジン1430により処理され得る。いくつかの事例において、ボリュメトリック処理ロジック1425は、コンピュータビジョンエンジン1430の機能に関するタスクなど、1つまたは複数の異なるボリュメトリック処理演算またはタスクを実行するためのロジックを備え得る。一例において、本明細書において説明するボリュメトリック加速ユニット(VXU)などのボリュメトリック加速ユニットは、ボリュメトリック処理ロジック1425および/またはコンピュータビジョンエンジン1430のうちの少なくとも一部を実装するために利用され得る。いくつかの実装において、ボリュメトリック処理ロジック1425およびコンピュータビジョンエンジン1430のロジックの全部または一部が組み合わされ得る。ボリュメトリック処理ロジックは、幾多の例の中でもとりわけ、VOLAデータ1450に具現化されたボリュメトリックデータを入力として受け取り、データ1450をパースすることで、構造またはジオメトリによって占有されていないとデータ1450内で識別された関連ボリュームの特定のセクションの解析を割愛する機会を決定し得る。いくつかの事例において、ボリュメトリック処理ロジック1425および/またはコンピュータビジョンエンジン1430により生成される結果により、機械1405の1つまたは複数のアクチュエータ1435は、1つまたは複数のモータ、エンジンまたは他のドライブおよび/または1つまたは複数のステアリングメカニズムを起動させるように、かつ、機械自体または機械の特定のツールをその設計に従ってボリューム内で移動させるようにトリガされ得る。例えば、ボリュメトリック処理ロジックは、1つまたは複数のアクチュエータに入力を提供することで、ドローンまたは自律走行車両に、ボリュメトリックデータの処理を通じて機械が理解するボリュームをセルフナビゲートさせ得る。
【0095】
位置特定およびマッピングの同時実行(SLAM)アプリケーションは、その幾多の用途の中でも、例えば、ロボット工学分野において、幾多の例の中でもとりわけ、環境内でのロボットおよびドローンの自律的な動きを容易にするために利用され得る。いくつかの場合において、SLAMは、オフラインで生成されるマップを利用し得る。ただし、自律ロボットは、リアルタイムで、マップを構築してマップと相互作用する必要があることが多く、利用可能なリソースが限定される中でそのようにする。密なSLAMを計算するための方法のうちのほとんどは、高性能デスクトップシステム用に設計されており、特に、従来のSLAMパイプラインにおける、計算を多用するレイキャスティング段階を考慮した場合、近年のロボット工学およびドローンにおいて利用されている低コストな埋め込みデバイスに統合するには、一般的に望ましいかまたは可能であるとされているよりもはるかに多いFLOPS、メモリおよび電力を必要とする。この課題に対処するために、レイキャスティングアルゴリズムの低電力、低メモリの実装を最適化したものが、SLAMパイプラインに統合されるハードウェアおよび/またはソフトウェアに実装され得る。例えば、本明細書において紹介するボリュメトリック加速(VOLA)データ構造は、3Dボリューム表現のために用いられてよく、さらなる技術および機能が、改良されたSLAMアプリケーションを実装して特定の性能/メモリ効率を実現するために利用されるVOLA構造およびアーキテクチャを活用し得る。
【0096】
コンピュータビジョンの世界とグラフィックスの世界とは別個のものであるが、ロボット工学分野に収束する。埋め込みシステム内で利用可能な限定されたリソースを節約するようにボリュメトリックデータを3D空間内で表現することが、両方の領域での主要な課題である。例えば、光による検知および測距(LiDAR)などのコンピュータビジョンのための入力システムは、埋め込みシステムメモリがハンドリングするにはすぐに大きくなり過ぎてしまうことがある環境の点群深度マップを生成できる。このことが課題となる一般的なアプリケーションがSLAMアプリケーションである。SLAMアプリケーションの目標は、ロボットを取り囲む環境のマップを作成し、マップ内にロボットを同時に配置することである。自律アプリケーションでは、自律エージェントがリアルタイムで非常に詳細なマップと効率的に相互作用できない場合、そのようなマップを構築することは無用である。最も重要な相互作用のうちの1つが衝突検出であり得る。衝突検出は、(例えば、容易に明らかな安全上の理由で)ドローン用途において特に重要である。光線/ジオメトリの交差に用いられる一般的な方法がレイキャスティングである。レイキャスティングは、典型的には、1秒当たり大量の演算を必要とする。レイキャスティングは、典型的なSLAM SWパイプラインの最も高価なコンポーネントのうちの1つを表す。故に、その性能および効率を向上させることで、埋め込みプラットフォームの制限にもかかわらずリアルタイム埋め込みSLAMが可能になるようにする必要がある。
【0097】
いくつかの実装において、VOLAデータ構造の使用に基づく、埋め込みプラットフォーム用のレイキャスティングアルゴリズムの改良された軽量の実装が利用され得る。これは、3Dモデルのメモリ要件を低減するために特に設計されている。例えば、レイキャスティングアルゴリズムの埋め込み実装が、特にSLAMアプリケーションを対象として提供され得る。そのようなアルゴリズムを実装することにより、幾多の例示的な利点の中でもとりわけ、キャッシュおよびSIMD命令などの計算リソースの使用を改善して、画像および物体空間コヒーレンスを活用し得る。3Dシーンのボリュメトリック圧縮を生成するために、密または疎な階層グリッドデータ構造(例えば、VOLAベース構造)が利用され得る。そのような解決手段は、十分な品質および精度を維持しつつ、電力効率の向上ももたらし得る。
【0098】
上で紹介したように、VOLAタイプのデータ構造は、埋め込みデバイスで用いられるボリュメトリックデータの効率的な圧縮を可能にする階層ビットアレイとして編成されたコンパクトなデータ構造として実装されてよく、メモリの制約に起因して、そのようなデバイスにおいて全ての点群を用いることが非実用的または不可能にさえなるであろう。空間パーティショニングVOLA構造は、モジュラ演算と、ビットアレイに適用されるビットカウントとを用いて、オクツリーの階層構造をボリュメトリックアプローチで組み合わせ得る。オクツリー、kdツリーおよび他の3D表現とは対照的に、VOLAは、ポインタベースのツリー構造ではなく、階層グリッド構造を用い得る。圧縮が主な懸念事項なので、VOLAは、占有データをエンコードするだけでボクセル当たり1ビットの最大圧縮を実現し、それを極めてコンパクトにする。結果として、VOLAは、レイキャスティングによる正確なボリュメトリックレンダリングにはうまく適合しないことがあるが、代わりに、周囲の単純なマップを構築してレイキャスティングしなければならず、かつ、表現のフォトリアリズムが要件または優先事項ではないSLAMなどの用途においては、非常に効率的である。いくつかの実装において、VOLA内の各要素は、表されるボリュームを4×4×4個のサブセルへ分割する64ビット整数であり、モジュラ演算を用いて1次元ビットアレイから3次元へマッピングされる。セル内のいくつかの箇所が占有されている場合、対応するサブセルビットが1に設定され、そうでなければゼロに設定される。次のレベルでは、占有されているサブセルのみが、まさに占有されている空間をエンコードするように表される。そのように、VOLA構造内での上位レベルから下位レベルへの通過は、幾多の例の中でもとりわけ、解像度が4倍に増えたことを示唆している。
【0099】
いくつかの用途では、VOLA形式を用いると、主要都市の空中スキャンのエンコードが特に効率的になることが判明している。例えば、LiDARデータセットでは、70倍の最大サイズの低減が実現され得る。VOLA形式の利益になり得る他の一般的な用途は、CNN推論、経路計画および障害回避である。最後に、ハッシュテーブルを利用することにより、幾多の例示的な用途の中でもとりわけ、メモリフットプリントをさらに低減することが可能である。
【0100】
例示的なレイキャスティングアルゴリズムが、一次光線のみを放射する非再帰型レイトレーシングアルゴリズムとして実装されてよく、直接的なボリュームレンダリング技術として特に普及している。ボリュームレンダリング技術の主な利点のうちのいくつかは、それらの優れた画像品質、および、表面ジオメトリを明示的に定義することなく画像をレンダリングすることが可能であることである。反対に、主な欠点は、それらの計算コストが高いことである。3Dボリュームを表すために用いられるデータ構造と、ボクセルトラバーサルのために用いられるアルゴリズムとに関するいくつかのアプローチが存在する。さらに、例えば、空間リーピング、コヒーレントパケットトラバーサル、錐台カリング等、特定の副次的な問題を処理してアルゴリズムの性能を向上させるための数多くのさらなる技術が、長年の間に開発されてきた。
【0101】
レイキャスティングにおいて使用される最適化の種類は、ボリュームの選ばれた表現にリンクされていることが多い。ボリュームの最も基本的な表現は、均一グリッドおよび階層グリッドである。階層グリッドは、大まかにネストされたグリッド、再帰または多重解像度グリッドおよびマクロセルまたはマルチグリッドとして編成され得る。別の例として、任意の分割平面を用いて空間を再帰的に細分化するために、バイナリ空間分割(BSP)が利用され得る。幾多のBSPの中でも、kdツリーは、軸平行分割平面のみを用いる特別な事例である。kdツリーにより、ボリュームが適応的に分割されることが可能になるが、更新がオクツリーよりも難しい。kdツリーは、特に、大きいボリュームについてより多く用いられる。パケットkdツリートラバーサルは、静止したシーンではグリッドを凌ぐが、ツリーを再構築するコストのせいで、真に動的なシーンにはあまり適さなくなってしまう。対照的に、グリッドは、より高速に作成および修正され得るので、高いトラバーサルコストがかかる場合でも、動画化されたシーンでは魅力的なものになる。幾多の例の中でもとりわけ、ボクセル化されたジオメトリをレンダリングするための別の効率的な表現が、スパースボクセルオクツリー、バウンディングボリューム階層(BVH)である。
【0102】
いくつかの実装において、VOLA構造を活用して空のセルを効率的にスキップするために、空間リーピングが利用され得る。空きスペースのスキップのために用いられるこの戦略は、下にあるボリューム表現と結び付けられ得る。一例において、次に可能な非透明ボクセルまでのリーピング距離を各ボクセルについて格納するための空間リーピングに、遠距離コーディングによる光線加速(RACD)が利用され得る。これは、前処理段階として実行され得る。いくつかの実装において、レンダリングされたボリュームの占有マップを、VOLAと同様のマルチレベルグリッド構造の第1のレベルについてのみ計算することにより、ハードウェアアーキテクチャが、空間リーピングのために実装され得る。空ノードをスキップするためのGPUオクツリーベースのアプローチも実装され得る。いくつかの実装において、周囲の物体への近接度を示すシーン依存情報で空ボクセルが満たされる近接クラウドを用いて、空きスペースが正規3Dグリッド内でスキップされ得る。例えば、近接クラウドベースアルゴリズムがシステムに実装され得る。近接クラウドベースアルゴリズムは、大きいボリュームのレンダリングのためのGPUレイキャスティング専用のものであり、最善の画像順序および物体順序での空きスペーススキップ戦略が組み合わされている。
【0103】
ボリュームトラバーサルの実装は、少なくとも部分的に、選ばれるボリューム表現に依存し得る。これらの方法のうちのほとんどは、次の軸平行平面の距離に応じて各反復で訪れるべき最も近い隣接ボクセルを決定する、平坦グリッドに基づくアルゴリズムから発展してきた。他の実装は、トラバーサルの全体を通じて整数演算を伴う演算のみを使用するオクツリーを横断し得る。別の例では、効率的なスパースボクセルオクツリーに関連して、幾多の例の中でもとりわけ、データの効率的なオクツリー表現が利用され得る。
【0104】
従来のレイキャスタでは、不透明度閾値に達する(例えば、不透明度の蓄積)まで、占有されているボクセルの横断中に色が蓄積されることにより、レイトラバーサルを早期に終了することが可能になり得る。このように、実際のボリュメトリックデータは、透明な材料を考慮してレンダリングされ得る。VOLAを用いた前後の実装では、VOLAが色情報のエンコードをネイティブで省略し得るので、必要とされる情報が3D空間内の占有についての情報であることから、これらの種類の機能が割愛され得る(が、VOLAは、メモリフットプリントの増加を犠牲にして、ボクセルの色のためのさらなるビットアレイを用いて拡張され得る)。そのような実装では、ボクセルに遭遇するとすぐに、いかなる色情報、不透明度、テクスチャ等も詳述することなく、アルゴリズムフローが停止し得る。
【0105】
一実装において、VOLAベースの表現の構造を特に活用するために、レイキャスティング中に用いられるレイトラバーサルアルゴリズムが実装され得る。
図15を参照すると、密な階層グリッド(1505)およびVOLA形式(1510)または疎な階層グリッドという2つの異なる3Dボリューム表現が、特定の例示的なレイキャスタに対して使用および比較され得る。この例における両方のデータ構造は、4
3ツリーの形状を有し、違いは、それらがマルチレベルビットアレイとして編成されることである。データは、ボクセル形式当たり1ビットでエンコードされ、グリッド内の地理的な位置に応じて格納される。最終レベルでの解像度が与えられると、空きスペースおよび占有されているスペースの両方が表されるので、密なグリッドの次元が予想可能になる。ただし、VOLA形式では、空サブブリックが格納されないので、実際の占有はジオメトリに依存し得る。これにより、非常に小さいメモリ占有がもたらされるが、同時に、個々のボクセルの配置が、より複雑かつ計算上高価になる。例えば、サブブリックビットを特定のレベルに配置するためには、上位レベルにおける対応するビットセットに先行するビットの数を知る必要があり得る。そのような演算により、計算が大幅に減速され得る。これは、許容できないオーバヘッドを招いてしまうことを回避するために、レイキャスティングアルゴリズムの間、慎重にハンドリングされる。1505および1510において表されるように、ボクセルをレベルに応じて配置することは、
図15に示されるように、疎な階層グリッド(1510)についてよりも、密な階層グリッド(1505)について理論上より単純である。
【0106】
一例において、コンピューティングシステムが、(例えば、SLAMアプリケーションにおける)レイキャスティング演算の実行に関連して、階層スパースグリッド構造(例えば、VOLA)に基づくレイトラバーサルアルゴリズムを実装し得る。いくつかの実装において、VOLA構造を利用してレイキャスティングアプリケーションにおける3D空間を表すことにより、より効率的な近似された階層レイトラバーサルアルゴリズムが可能になり得る。いくつかの実装において、レイキャスティングアプリケーションにおいて利用されるレイキャスティングトラバーサルアルゴリズムは、John AmanatidesおよびAndrew Wo著Fast Voxel Traversal Algorithm for Ray Tracingなどの従来のトラバーサルアルゴリズムの階層バージョンを実装し得る。例えば、トラバーサルアルゴリズムの1つの例示的な実装では、バウンディングボリュームが基準システムの軸に対して位置合わせされる場合、バウンディングボリュームを用いて光線交差試験演算が実行される(例えば、軸平行バウンディングボックス(AABB)試験)。ボリュームのうちのいくつかの外部に位置する部分が空である場合、(例えば、1515において表されるように、)レイキャスティングされるボリュームを容易に枝刈りするためにL0 VOLA要素を検査することで、それを交差するサブAABBへ低減することが可能である。そのような用途は、z次元内のボリュームがほとんど空である空中スキャンを含み得る。仮想画像は、透視投影を用いてスキャンされる。各光線が独立しているので、マルチスレッディングを活用して、異なる光線を同時に処理することが可能である。いくつかの実装において、スレッドのプールが初期化され、次に、利用可能なランタイムリソースに応じてスケジューリングされる。実際には、いくつかの実装では、キャッシュデータ局所性および文脈切り換えオーバヘッドの検討事項に起因して、単一のピクセルまたは行全体ではなく、仮想画像の矩形サブタイルをスレッドに割り当てる方がより簡便であり得る。
【0107】
一例において、コンピューティングシステムを用いて(およびいくつかの場合においては全体的にハードウェアに)アルゴリズムが実装され得る。pが光線-AABB交点(または代替的にボリューム内部の点)であり、dが光線方向であるとき、光線の式は、r(t)=p+tdと表される。式を解いて、x成分に直交する軸平行平面についてtを求めると、t
x=(1/d
x)x+(-p
x/d
x)が与えられる。式中、d
xは、平面までの点の距離である。ここで、光線が特定の方向においてボクセルの幅に対して動くtの値として(t
DeltaX,t
DeltaY,t
DeltaZ)を定義し、最も近い軸平行平面交点について、t
x値、t
y値、t
z値を用いて(t
MaxX,t
MaxY,t
MaxZ)変数を初期化することにより、単純なアルゴリズムを定義して、均一なグリッドを通じて光線の横断をハンドリングすることが可能である。アルゴリズムの疑似コードが以下に表され、例示的な視覚横断が
図16Aに示される。
【数1】
【0108】
図16Aに示されるように、従来のトラバーサルアルゴリズムが例示されている。これによれば、光線1605(例えば、ボリューム(例えば、1610)を通って放射される多くのもののうちの1つ)がボリューム1610を通って放射される。
図16Aにおいて、黒い正方形(例えば、1615、1620)は、光線1605が当たらない、ボリューム1610内の占有されているボクセルを表し、グレーの正方形(例えば、1625)は、光線1605が当たる第1の占有されているボクセルを表す。従来のトラバーサルでは、
図16Aに示されるように、光線1605が横断するボクセルの各々かつ全部が、ボクセルが占有されているか否かを判断するために、システムロジックによりチェックされる(例えば、それぞれの点(例えば、1630)により表される各チェック)。トラバーサルは、VOLAなどの階層構造について拡張されることで、空きスペースのスキップに効果的に活用され得る。一例において、階層密グリッドおよびVOLA形式が同じデータ編成を共有するので、アルゴリズムは、それらの両方に無差別に適用され得る。基本的なアルゴリズムに関しては、遭遇するボクセルに応じて解像度のレベルを変化させつつ空間中を動くのに、3D座標が用いられ得る。これら2つの間の主な違いは、ボクセルの内容がどのように試験されるかである。例えば、
図16Bを参照すると、特定のレベルにおける占有されているボクセル(例えば、1635)に遭遇した場合、階層内の次のレベルが、このレベルと、ボクセルの特定のブリックの境界とに応じてアクセスされ(例えば、かつ、tMax変数およびtDelta変数について新しい初期化演算が実行され)、光線1605が横断する占有されている上位レベルボクセル内のサブボクセルは、個々にチェックされ得る(例えば、点(例えば、1640)により表される)。境界は、正規ボリューム細分化に基づくモジュラ演算を用いて決定され得る。上位レベルボクセル(例えば、1645)が空であると判断された場合、横断される構成サブボクセルのチェックは、スキップされ得る。例えば、あるレベルから別のレベルへ通過する場合、空間のスキップは、式r(t)=p+t
mindの3D線形段階により決定される。式中、t
minは、上位レベルからのt値である。トラバーサル方法に起因して、異なるレベルにおける追跡位置は、従来のトラバーサルアルゴリズムよりも効率的に実装され得る。例えば、各階層レベルにおいて、トラバーサルは、従来のトラバーサルのように実行されるが、あるレベルから次のものへ通過する場合、(非占有となっている、光線の経路内の任意の中間ボクセル(例えば、1645)をスキップして、)1つの占有されているボクセルから次のものへ動くのに、第1の位置が、現在のtパラメータを用いて線形段階で求められる。いずれの事例においても、トラバーサルアルゴリズムは、最上位レベルの解像度の占有されているボクセル(例えば、1625)にシステムが最初に遭遇するまで続く。
【0109】
一例において、精度が主な懸念事項ではなく、かつ、速度を優先して精度が犠牲にされ得る場合には、実行を高速化するために、トラバーサルアルゴリズムの階層実装が修正され得る。例えば、
図16Cに表されるように、いくつかの実装において、レイトラバーサルアルゴリズムは最初に、どの粗視化されたボクセルが占有され、光線によって最初に横断されるかを判断する。次に、レイトラバーサルアルゴリズムは、占有されている低解像度(上位レベル)ボクセル内の高解像度(下位レベル)ボクセル表現の評価のみに重点を置き得る。ただし、占有されているボクセル内の各サブボクセルのチェックとは対照的に、近似されたアプローチが利用され得る。近似されたアプローチでは、サブボクセルは、1つよりも多くのボクセルをカバーする間隔(例えば、x)でチェックされる(例えば、全ての横断されるボクセルをチェックするのではなく、占有されているボリュームについて、光線が横断する全ての2番目または3番目のボクセルをチェックする)。例えば、固定小数点実装がデータに対して用いられ得る。光線方向の主成分を識別した後に、特定のレベルにおける光線は、決定された方向の主成分(例えば、x成分、y成分またはz成分)におけるサブボクセルのサイズに等しい距離をカバーするように進まされる。そのようにするので、横断される新しいボクセルについて行う、占有されている/占有されていないという判断は速い。ただし、光線が横断する全てのボクセルを、近似された階層トラバーサルアルゴリズムが厳密には訪れないことがトレードオフである。この結果、特定の条件において、例えば、ボクセルの密度が低い場合、または、表面が薄い空の物体をレンダリングする場合に、幾多の副作用の中でもとりわけ、失われている占有されているボクセルに光線が当たり、アーティファクトが潜在的に作成され得る。
図16Cに示されるように、占有されている上位レベルボクセル内のボクセルをスキャンするための間隔1655は、x方向におけるボクセルとなるように定義され得る。したがって、占有されている上位レベルボクセル(例えば、1660、1665、1670)についてレイキャスティングチェックを実行する場合、横断されるボクセル(例えば、1675、1680、1685)の一部のみがチェックされる。例示的な疑似コードはさらに、そのような実施形態を示す。
【数2】
【0110】
図16Cの例は、定義されたサブボクセル間隔に沿ってボクセルをチェックする近似された階層トラバーサルアルゴリズムを示しているが、このアルゴリズムでは、アプリケーション(例えば、レンダリングまたはSLAMアプリケーション)の用途および解像感度に基づいて、他の間隔が選択および利用され得る。
図17Aおよび
図17Bを参照すると、例えば、光線により横断される占有されているボクセル内の各サブボクセルがチェックされる標準的な階層トラバーサルアルゴリズム(例えば、
図16Bに関連して示されている)の例示的な結果と、占有されている上位レベルのボクセル内の横断されるサブボクセルの一部のみがチェックされる近似された階層トラバーサルアルゴリズム(例えば、
図16Cに関連して示されている)との間の視覚的な比較に対し、例示的なアジアの竜モデルのレンダリングの比較が示されている。この例では、画像1705、1710が単に、3Dのアジアの竜モデルの未加工のレイキャスティングデータからの深度マップとしてレンダリングされている。画像1705は、標準的な階層トラバーサルアルゴリズムの結果を表し、一方で、画像1710は、近似された階層トラバーサルアルゴリズムの結果を表す。近似されたアルゴリズムから生成された画像1710では、表面上のいくつかのボクセルが失われてグラフィカルアーティファクトが現れているが、2つの画像1705、1710の間の類似性は、いくつかの用途では、近似された階層トラバーサルアルゴリズムを通じて可能になる計算効率が、価値あるトレードオフを上回り得ることを示唆している。
【0111】
図17Aおよび
図17Bの例示は、近似階層トラバーサルの実装からの例示的な結果のうちの1つであるが、レンダリングされる画像の観点から精度に重きを置く従来のアルゴリズムとより一般的に比較され得る。そのような比較では、両方の階層トラバーサルアルゴリズムを用いて、各カメラ姿勢のグレースケール画像が生成され得る。画像内の各ピクセルの強度は、仮想カメラと当たったボクセルとの間の距離に関連する整数である。したがって、2つの画像は、グラウンドトゥルースとして用いられている正確で均一なアルゴリズムを考慮しつつ、強度の値の間の差に基づいて比較され得る。価値のある情報を背景(光線が失われている箇所)は提供しないので、比較では、正確なレイキャスタ内のボクセルに当たる光線のみが考慮され得る(これは、偽アラームではなく、検出漏れを生じ得るだけである)。異なる結果の割合は、空間内の数百のカメラ姿勢のフレームと異なるシーンのフレームとを平均して計算され得る。この例では、(アイルランドのダブリンの)リフィー川の空中スキャンから生成されたモデル、ならびに、アジアの竜、ルーシーエンジェルおよびタイの小像というStanford 3D Scanning Repositoryの3つのモデルなど、VOLAモデルが、試験のために用いられ得る。浮動小数点演算および浮動小数点変換を用いると、diff countを非現実的に増やしてしまうであろう非常に小さいピクセル強度差(単位元ほどに小さい)がもたらされ得るので、1よりも上のピクセル強度差のみが考慮される閾値が実装され得る。例示的な結果が表1に示される。表に示される異なるピクセルの割合が、正確なレイキャスタにより実際に当てられるピクセルのみの小数部として表されていることに留意されたい。2つの画像の間で強度が異なるそれらのピクセルの平均の高い値により、考慮された事例が適切な検出漏れであることが確認される。差の割合は、用いられるモデルにおけるボクセルの密度に依存し、概して、ピクセル密度が高いほど近似が低くなる。
【表1】
表1:正確な画像内の当てられたピクセルの小数部としての、正確なレンダリングされた画像と近似されたレンダリングされた画像との間の異なるピクセルの割合。失われた箇所の平均強度差も報告される。
【0112】
いくつかの実装において、レイキャスタは、ビジュアルプロセッシングユニット(VPU)などのハードウェアに実装され得る。そのようなハードウェアデバイスは特に、電力が著しく制約される環境において高性能のマシンビジョンおよび人工知能(AI)計算を供給するために実装され得る。
図18は、機械学習およびマシンビジョンの様々な用途向けに非常に持続可能な性能効率ならびに少ない待ち時間要件および低電力要件を提供するマルチコア常時オンシステムオンチップ(SoC)1805として実装され得る簡略ブロックダイアグラムである。例示的な処理デバイス1805のアーキテクチャは、(例えば、非常に高帯域幅のメモリサブシステム(例えば、1820)により支えられる、画像処理およびコンピュータビジョンカーネル用の1つまたは複数のアクセラレータデバイス(例えば、1815)と、1つまたは複数のRISCプロセッサ1825、1830(例えば、SPARCアーキテクチャによるLeon 32ビットRISCプロセッサ)とを通じて提供される)ハードウェアアクセラレーションを用いてベクトル演算とSIMD演算とをサポートする低電力超長命令語(VLIW)プロセッサ(例えば、1810)の組み合わせを用い得る。システムは、メディアサブシステム(MSS)、CPUサブシステム(CSS)およびマイクロプロセッサアレイ(UPA)という3つの主なアーキテクチャユニットへ分割される。この例では、UPAは、いくつかの事例においてSHAVE(Streaming Hybrid Architecture Vector Engine)プロセッサとして実装されるVLIWプロセッサ(例えば、12個のカスタムベクトルプロセッサ(例えば、1840aからl))を含む。
【0113】
PCからSoCへ容易にアクセスすべく、機械学習アクセラレータ(例えば、Movidius(商標)Neural Compute Stick(商標)(NCS))が、USB3接続を用いてベクトルプロセッサをプログラムするために用いられ得る。(例えば、コンピューティングシステムの汎用CPUまたは専用ハードウェアもしくは専用ファームウェア上で実行される)ソフトウェアアプリケーションが、vol(VOLA形式)ファイルのセットから開始して階層グリッド構造の作成を管理し、次に、USB(または他のインタフェース(例えば、1845))を通じてベクトルプロセッサユニットへこの内容を送信する。加えて、ソフトウェアアプリケーションは、アクセラレータから入ってくるレンダリングされたフレームの視覚化を(例えば、SDL2(Simple DirectMedia Layer)ライブラリを用いて)ハンドリングする。いくつかの実装において、実際のレイキャスティングアルゴリズムは、それぞれが仮想画像の小さい矩形タイルエリアをハンドリングする専用ベクトルプロセッサ(例えば、1840a-l)のセットにより実行され得る。計算負荷をかなり活用するために、ベクトルプロセッサ(例えば、1840a-l)を非同期的および動的にスケジューリングすることにより、全体的なアイドル時間を低減し得る。仮想カメラの位置および方向に関するデータは、幾多の例示的なシステム実装およびプログラムの中でもとりわけ、システムにより動的に更新される共有構造を介してスレッドに渡される。
【0114】
1つの例示的な試験において、均一グリッドおよび階層グリッドアルゴリズム(正確な(標準的な)バージョンおよび近似バージョンの両方)が性能の観点から試験および比較された。レイキャスティングアプリケーションを実行するために利用される特定のアーキテクチャ(例えば、SHAVE命令セットアーキテクチャ(ISA)を利用するアーキテクチャ)において利用可能なベクトル演算を活用するために、階層実装は、システムのコンパイラにおいて利用可能な組み込み関数(intrinsic)を活用して再構成され、別個に試験され得る。一例において、ダブリンのO'Connell Bridge House(OCBH)ビルの空中スキャンと、Stanford 3D Scanning Repositoryの2つのモデルとを用いた試験が用いられる。そのような例示的な試験で取得された結果が、
図19に示される。ここでは、平均フレームレート、最小フレームレートおよび最大フレームレートで測定された値が示されている。示されている測定値は、ボリュームの中心の固定点を見つつ仮想カメラの円状の動きを実行することで、全ての試験について同じ条件で取得されている。
図19のグラフ1900に表されるように、近似実装では、正確なものよりも一貫して良いものを30%から75%高いフレームレートで実行する。組み込み関数の使用を通じ、正確なSIMDレイキャスタバージョンおよび近似SIMDレイキャスタバージョンについてそれぞれ、最大高速化係数12.78および17.74に達した。
【0115】
レイキャスティングアプリケーションにおいて疎な階層グリッド構造(例えば、VOLA)を利用することにより、例えば、データ構造の性能およびメモリ占有の観点から、さらなる利益が実現され得る。例えば、トポロジカル的な観点からの密な階層グリッドおよび疎な階層グリッドは、空間内で同じ編成を効果的に共有し得るが、スパースグリッドの場合には、占有されているデータのみが実際に格納される。これは、非常に小さいメモリフットプリント(テーブル)をもたらすが、同時に、特定のボクセルを階層グリッド内に配置するために必要な時間を増やしてしまう。なぜなら、スパースグリッドテーブル内の設定されたビットを識別およびカウントすべく、全ての前のレベルが検査されなければならないからである。例えば、表2は、同じモデルの異なる形式のメモリ占有間の比較を報告している。表に示される密なグリッドおよびVOLA形式は、例示的なPolygon File Format(PLY)物体から直接取得されている。VOLA構造により、ここではPLY形式に対して最大で約11140倍低い、莫大なサイズの低減が保証されることが分かる。密なグリッドの占有が階層グリッドの深度のみに依存し、反対に、VOLA構造の占有が空間内の実際の占有されているボクセルに依存するという意味で、密なグリッド占有は、完全に決定的なものとみなされ得る。
図20Aのグラフ2000aに示されるように、3つの異なるVOLAモデルの平均フレームレートと、密なグリッドに用いられる同じアルゴリズムおよび最適化とが示されている。近似された実装の使用に実際の利得はもはやなく、同様に、SHAVE組み込み関数最適化を導入する利益は非常に低い、ということに気づくことが可能である。これは、利用された技術がアルゴリズムグリッドトラバーサル性能の最適化を目的としていることから説明できるが、ここでは、ボトルネックは主に、VOLA構造内のボクセルの占有を試験するために多くの時間が必要とされることにある。結果として、実際のトラバーサルに費やされる時間の小数部は、ここでは、密なグリッドよりもはるかに低い。VOLA実装の性能は、それらの密なグリッドの対応物よりも約11倍から約30倍低い。それにもかかわらず、メモリフットプリントを用いて取得される性能(平均-FPS/MB)に関連して、VOLA実装は、はるかに効率的なので、例えば
図20Bの例示的な表2000bに示されるようにメモリが非常に制約された環境では有効なオプションを構成し得るという結論になり得る。
【表2】
表2:同じ3Dモデルの異なるデータ形式占有のメモリフットプリントの比較。
【0116】
いくつかの実装において、レイキャスティングを実装するために、レイキャスティングアルゴリズムの埋め込み実装が、疎な階層データ構造を利用して実装され得る。さらに、処理性能上の利益を実現するために、近似されたレイトラバーサルアルゴリズムが使用され得る。さらに、性能およびメモリ使用量が密および疎(VOLA)アプローチとトレードオフされることにより、性能の低下の代償として、VOLA構造のFPS/MB効率に一貫した利点が示され得る。したがって、レイキャスティングアプリケーションにおいて3Dボリュームを表すために疎な階層グリッド構造を利用するシステムは、特に、メモリが非常に制約された環境において好ましいとみなされ得る。実際には、本明細書に記載する改良されたシステム実装は、幾多の例示的な利点の中でもとりわけ、従来のレイキャスティング実装よりも最大で2桁高い、非常に高い電力効率を示す。
【0117】
コンピュータビジョンシステムは、幾多の例の中でもとりわけ、ロボット、自律ドローンまたは自律車両などの自律デバイスの位置および向きを自律的に決定することに関連してレイキャスティングおよびレンダリングの結果を利用し得る。実際には、正確な位置および向きの推定には、自律ロボットにおけるナビゲーションが必須である。よく研究された問題ではあるが、既存の解決手段は、良好なパラメータ初期化またはパラメータ較正を通常は必要とする計算上高価な統計フィルタに依存している。本明細書に記載するように、改良されたシステムは、複数のデータソース(例えば、単眼RGB画像および慣性データ)の組み込みを含む改良されたエンドツーエンド機械学習アプローチを実装することで、各ソースの弱点を独立して克服し得る。いくつかの実装において、そのような機能を利用する改良されたシステムは、計算上はより安価であり、かつ、精度が最先端のものと同等であるかまたはそれをわずかに下回るだけであるオドメトリ結果を実現することにより、幾多の例示的な使用および利点の中でもとりわけ、そのようなシステムがリソース制約デバイス用の価値のある潜在的な解決手段を実現することを可能にし得る。
【0118】
動き推定は、モバイルロボット工学の主な柱のうちの1つである。動き推定は、未知の環境における位置および向きを把握する能力をロボットに提供する。動き推定は、マッピングアプローチと組み合わされることで、位置特定およびマッピングの同時実行(SLAM)を発展させ得る。実際には、利用されるSLAMパイプラインは、本明細書に記載する改良されたレイキャスティング技術をそのような実装内で採用し得る。ロボットは、異なるデータソースを用いることで、そのような動き推定を、センサの種類、つまり、動き推定によりロボットの内部情報が提供される場合である固有受容性(慣性測定ユニット(IMU)など)、または、動き推定によりロボットの周囲環境の情報が提供される場合である外受容性(カメラまたはLiDARセンサなど)に応じて実行できる。ロボットの自律性に起因して、ロボットは、そのような搭載された動き推定をリアルタイムで実行できるはずである。これは、デバイスのリソースが限定されている場合における特別な課題である。したがって、そのような制限下で埋め込みデバイスを動作させ得る解決手段を見出すことが望ましい。
【0119】
オドメトリアプリケーションにおける姿勢推定の問題を解決するために、ディープラーニングが利用され得る。例えば、カメラは、ロボットまたは他の自律デバイスの周囲環境を撮像し、視覚オドメトリ(VO)を通じてロボットの動きを追跡するために用いられ得る。古典的なVOアプローチは、ジオメトリの制約から動きを推定し、疎特徴ベース法および直接法という2つのグループへ分類され得る。一方で、疎特徴ベース法は、特徴点を抽出およびマッチングすることで、フレーム間の動きを推定する。加えて、いくつかのVOアプローチは、外れ値およびノイズのある画像が存在することに起因して被ったドリフトを補正すべく、特徴マップを追加および維持する。他方では、直接法および半直接法は、全ての画像ピクセルを用いて、連続する画像間の測光誤差を最小化することにより姿勢を推定する。
【0120】
ただし、古典的なVOアプローチは、典型的には、縮尺を認識して実世界の単位で距離を回復するために外部情報(カメラ高さまたはテンプレートなど)を必要とする。さらに、従来のVOシステムは、急速な動きがある状況において、または照明が突然変化する場合には信頼性のないことが判明している。この信頼性の欠如を解決するために、カメラ情報は、慣性センサと組み合わされ得る。これにより、加速情報および角速度情報が提供され得る。これらのセンサは通常、カメラよりもはるかに高い周波数でデータを提供する(例えば、約10倍速い)。したがって、カメラの急速な動きがある場合、慣性情報は、幾多の例示的な強化および課題の中でもとりわけ、VOシステムの弱点を克服するために用いられ得る。
【0121】
視覚慣性オドメトリ(VIO)システムは、視覚情報および慣性情報を活用して、位置推定および向き推定を提供する。いくつかの実装において、拡張カルマンフィルタ(EKF)またはアンセンテッドカルマンフィルタ(UKF)などの確率的フィルタアプローチを用いることにより、視覚-慣性データ融合が行われる。視覚-慣性データ融合は、ジャイロスコープデータ、またはジャイロスコープデータおよび加速度計データのみを用いて異なる融合モデルをかつて比較していたEKFベースのシステムを用いて実行される。幾多の例の中でもとりわけ、例えば、静止特徴を検出して状態ベクトルに制約を追加するためにいくつかの過去のカメラ姿勢が用いられるシステムといった多状態制約カルマンフィルタ(MSCKF)など、EKFの他の変形例が実装され得る。
【0122】
いくつかの実装において、ディープラーニング機能を備えるシステムが、例えば、ぼやけた画像もしくはノイズのある画像に対するロバスト性が欠如していること、または照明もしくはオクルージョンの変化が生じる場合といった、古典的なVOアプローチの弱点を克服するために用いられ得る。例えば、畳み込みニューラルネットワーク(CNN)は、ぼやけた画像およびノイズのある画像に対してでさえうまく機能し得るので、画像特徴を抽出するロバスト法を提供する。CNNは、2つの連続する画像間のオプティカルフローを計算するためにも用いられ得る。オプティカルフローは、カメラビュー上の物体の位置の変化を表すので、2つの連続するフレーム間でカメラが経た動きに関連する。一例において、オプティカルフローネットワークにより抽出された画像特徴は、ディープラーニングシステム内で2つの長短期記憶(LSTM)層と共に用いられ得る。これにより、幾多の例の中でもとりわけ、古典的な単眼VOアプローチ(例えば、LIBVISO2に基づくVO)を凌ぎ得るエンドツーエンドディープラーニング方式で、単眼VOシステムが実装される。
【0123】
センサ融合のための確率的フィルタに基づくVIOアプローチは、カメラおよび慣性測定ユニット(IMU)の測定値を同じ基準座標系にもたらすべく、困難かつ複雑な較正処理を必要とし得る。例えば、この較正処理は、追跡システムが動作している間にリアルタイムで実行され得るので、フィルタリング処理に複雑さが追加される。さらに、ほとんどの商用IMUで見られる測定値を介したノイズスケーリングなど、いくつかのIMUのパラメータは、モデル化するのが難しい。ディープラーニング技術はさらに、センサ融合処理に伴う課題を解決するために利用され得る。例えば、LSTMは、IMUの過去の未処理測定値(加速度計およびジャイロスコープ)を追跡してロボットの姿勢を推定するために用いられてよく、次に、VOシステムと融合され得る。LSTMは、VINetにおいて、エンコードされた特徴をIMUの未処理測定値から抽出するために用いられ得る。これらのエンコードされた特徴は、CNNから抽出される特徴と特徴ベクトル内で組み合わされ得る。この特徴ベクトルが第2のLSTMにより経時的に追跡されることで、ロボットの姿勢推定値が提供され得る。いくつかの実装において、VINetアプローチは、幾多の例示的な利益の中でもとりわけ、従来の最適化ベースのセンサ融合アプローチなどの従来のアプローチを凌ぎ得る。
【0124】
一例において、改良されたシステムが、視覚ディープラーニングサブモデルおよび慣性ディープラーニングサブモデルの両方を組み込んだエンドツーエンドトレーニング可能ニューラルネットワークアーキテクチャを実装し得る。例えば、視覚ベースのCNNサブモデルでは、RGB画像が入力として提供され得る。第2の慣性ベースのディープラーニングサブモデルでは、IMUの未処理測定値が入力として提供される。一例において、エンドツーエンドニューラルネットワークアーキテクチャは、ニューラルネットワークサブモデルの組み合わせを利用し得る。組み合わされたネットワーク(およびそのサブコンポーネント)は、エンドツーエンド方式でトレーニング可能なので、較正または前処理の必要が一切なくなる。
【0125】
いくつかの実装において、エンドツーエンド機械学習オドメトリシステムのニューラルネットワークが、前のフレームに対する姿勢推定値を全てのフレームにおいて生成するようにトレーニングされ得る。各姿勢推定値は、変換値を表す。変換値は通常、特殊ユークリッド群変換SE(3)の要素として表されるSE(3)(式1)で表される全ての変換値は、回転行列および並進ベクトルで構成されてよく、特殊直交群SO(3)の回転行列部分である。
式1:
【数3】
Rが直交的に制約されなければならないので、SE(3)における変換値を求めることは、ネットワークに対して単純ではない。したがって、学習処理をより簡単にするために、推定された変換値は、SE(3)のリー代数se(3)(式2)で表される。
式2:
【数4】
【0126】
se(3)での姿勢推定値は、6-Dベクトルであってよく、直交的に制約されなくてよい。ひとたび推定されると、se(3)での姿勢値は、指数マッピング:se(3)→SE(3)(式10)をすることにより、SE(3)の変換値へ変換され得る。
式3:
【数5】
式4:
【数6】
式5:
【数7】
式6:
【数8】
式7:
【数9】
式8:
【数10】
式9:
【数11】
式10:
【数12】
式中、行列Rおよび行列Vはそれぞれ、式8および式9を用いて計算され得る。A、B、Cおよびθは、式4、式5、式6および式3を通じて取得され得る。ω
x行列は、ω値により構成される(式7)。
【0127】
一例において、視覚ベースのニューラルネットワークモデル2105は、
図21Aの簡略ブロックダイアグラムにおいて表されるように利用され得る。視覚ベースのニューラルネットワークモデル2105は、積層されることで6つのチャネルがあるサイズ512×384の入力テンソルを構成する2つの連続するRGB画像を入力2110として受け取る。この画像サイズは、軽いCNNをもたらしつつ、十分な特徴を含み得る。一例において、幾多の例示的な使用の中でもとりわけ動き推定に有利に用いられ得る画像の特徴を抽出するために、FlowNetSなどのコンピュータビジョンニューラルネットワークの層2115が用いられ得る。ニューラルネットワークモデル2105の一部として採用されるそのようなネットワーク(例えば、2115)は、幾多の例の中でもとりわけ、ロボットが経時的に経た動きを表すフレーム間のオプティカルフローをどのように推定するかを学習するために、合成データセット上でトレーニングされ得る。
【0128】
図21Aの例において、FlowNetS層2115が、さらなる畳み込み層2120が続く、9番目の畳み込み層であるネットワークの2105まで取得されることで、CNNの出力サイズが2×3×256テンソルに低減され得る。CNN層2125の後に、一連の全結合層2130を利用して、抽出された特徴を組み合わせることにより、前のフレーム(t-1)に対する現在のフレーム(t)の変換を表す出力6-Dベクトル姿勢2135を生成し得る。これは、(リー代数SE(3)で表される)。
【0129】
図21Bに示される別の例示的なネットワーク2140では、ネットワーク2140への入力2142として、慣性データのみが用いられる。一例において、入力2145は、サブシーケンスとして具現化されるIMUデータであってよい。サブシーケンスは、デバイスの加速度計およびジャイロスコープの成分からのx-y-z未加工データ成分を有する10個の6-Dベクトルにより構成される。この例では、最後のものが最新である(10個の)測定値の入力サブシーケンスが時間内に順序付けられることで、センサが経時的に経た動きがエンコードされ得る。
【0130】
図21Bの例を続けると、長短期記憶(LSTM)人工再帰型ニューラルネットワーク部分2150は、過去の入力により生成される短長期依存性を非表示状態で格納できるので、サブシーケンスを介して測定値を追跡して動き情報を抽出するために、モデル2140内の回帰層として利用され得る。各入力は、LSTM2150を通過するときに非表示状態と組み合わされ、現在の測定値と過去の測定値との間の一時的な対応関係が求められる。一例におけるLSTM2150は、1つの層、1024個のユニットを有してよく、サブシーケンスの最後の要素から最初の要素を(例えば、ロボットが)経た変換を表す6-Dベクトルを出力する4つの全結合層2155がその後に続いてよい。これらのアーキテクチャおよびパラメータは、モンテカルロ解析におけるそれらの実行の結果として選択されてよく、幾多の例示的な実装の中でもとりわけ、層の異なる組み合わせの選択を探索および最適化するために用いられ得る。
【0131】
上で紹介したように、改良された機械学習システムは、ニューラルネットワークモデル2160を利用してオドメトリ計算を実行し得る。
図21Aおよび
図21Bに示される例示的なネットワーク部分2105、2140を組み合わせた、改良されたニューラルネットワークモデルは、ロボットまたは他の自律デバイス上に存在し得る視覚センサおよび慣性センサの両方を活用する。したがって、モデル2160への入力は、連続するRGB画像のペアおよび10個の慣性測定値のサブシーケンスなど、視覚データおよび慣性データの両方を含み得る。この例では、仮想ニューラルネットワーク部分2105は、最大で3番目の全結合層まで、
図21Aの例に提示されるものと同じである。同様に、慣性オドメトリ(IO)ネットワーク部分2140は、最大で2番目の全結合層まで用いられる。このように、ニューラルネットワークモデル2160は、有用な特徴を提供する最後の層まで、VOネットワークおよびIOネットワークの両方を維持する。次に、ビジョン特徴ベクトルおよび慣性特徴ベクトルが、128-Dベクトルへ連結され、3つの全結合層2165を通過させられることで、姿勢推定2170が出力される。前のように、各姿勢推定値は、ロボットが前のフレームに対して現在のフレームにおいて経た変換を表す。
【0132】
1つの例示的な実装において、例示的なニューラルネットワークモデル2160をトレーニングするために用いられるデータは、コンパイルされたデータセットの一部(例えば、KITTI Vision Benchmark Suiteの未加工データセクション)であってよい。一例において、オドメトリデータセットは、22個のシーケンスにより構成される。これらのシーケンスのうちの最初の11個は、グラウンドトゥルース変換を備える。この例では、シーケンス11-22が評価として用いられるよう意図されているので、グラウンドトゥルースが提供されない。最多のフレームを含むシーケンス00、02、08および09が、トレーニングのために用いられ、シーケンス05、07および10が、評価のために用いられる。いくつかの実装におけるトレーニングデータは、ガウス雑音と、ガウスぼかしと、強度の変化とを画像へランダムに適用することにより、例えば、ガウス雑音(例えば、平均=0、標準偏差=[0,32])と、データのピクセル強度の変化(例えば、[-25%,25%])とをデータの2/3に適用し、カーネル3、5および7を用いたガウスぼかしをデータの残りの3分の1に適用することにより、拡張され得る。データを拡張した後に、トレーニングデータセット(例えば、合計22912個の画像フレーム)は、(例えば、10Hzで)サンプリングされるだけでなく、グラウンドトゥルースも受け得る。IMUデータは、より高い周波数(例えば、100Hz)に達し得る。これは、画像フレーム当たり複数のIMU測定値が存在し得ることを意味する。ただし、いくつかのIMUデータが欠けているフレームも存在し得る。その場合、欠けている測定値をパッドしてサブシーケンスを満たすために、フレームの最初のIMU測定値が用いられる。
【0133】
一例において、全ての推定相対姿勢とそのそれぞれのグラウンドトゥルースとの間のユークリッド距離を表す損失関数(式11)が用いられ、se(3)で表される。
式11
【数13】
【数14】
は、推定された回転および並進ならびにグラウンドトゥルースされた回転および並進をそれぞれse(3)で表す。パラメータβは、ωとtとの間の異なる桁のバランスを取るために有用であり、全てのトレーニングにおいて0.1に固定され得る。Nesterov加速勾配法(NAG)が、標準勾配降下法に対する収束を高速化するためのオプティマイザ(式12および13)として用いられることで、局所位置ではなく、運動量mの方向においてわずかに前の位置における損失関数の勾配が測定され得る。
式12
【数15】
式13
【数16】
式中、βは、摩擦係数として機能することで、運動量が大きくなり過ぎるのを防ぎ、λは、学習速度である。次に、重みW
se(3)がmに従って更新される。トレーニングでは、摩擦係数β=0:9が用いられた。いくつかの場合において、指数スケジューリング(式14)を実装することにより、より速い収束がもたらされ、これは、実行スケジューリングなどの他の方法と比較してより簡単に実装し得る。
式14
【数17】
【0134】
一例において、初期学習速度(λ0)10-5および段階(r)50が用いられる。これらのパラメータを用いて、学習速度は、全部で50回の反復毎に2で除算される。1つの例示的な比較では、全てのネットワークがTensorFlowに実装され、NVIDIA GeForce GTX Titan X GPUを用いてトレーニングされている。トレーニング時間を低減すべく、FlowNetS重みは、トレーニング中、停止され得る。
【0135】
本明細書に記載するネットワークが評価され、それらの性能が比較され得る。この例では、VOとVIOとが、同じ種類のデータを用いる既存のアプローチで別個に比較される。例えば、(例えば、
図21Aの例に関連して本明細書に記載する)改良されたVOネットワークが評価され、従来の解決手段と比較され得る。一例において、この比較は、KITTIのオドメトリ開発キットにおいて提案されている測定基準と、シーケンス05、07および10に対して実行されるネットワークとを用いて実行される。これにより、最初のフレームに関して全てのフレームの絶対姿勢が得られ得る。次に、シーケンスを介して、二乗平均平方根誤差(RMSE)が、異なる軌跡長さ(100m、200m、300m、...800m)について計算され得る。これらの結果は、従来のVISO2 MネットワークおよびDeepVOネットワークと共に表3に示される。表3の例に示されるように、本明細書に記載するような改良されたVOネットワークは、シーケンス05および10の並進誤差および回転誤差の両方の観点から従来のネットワーク(例えば、VISO2 M)を凌ぐことがあり、並進ではシーケンス07と比較的に機能する。
【表3】
表3。全ての誤差は、全ての可能なシーケンス長さの平均RMSEを表す。t
relは、並進誤差であり、r
relは、回転誤差である。
【0136】
図22を参照すると、(例えば、
図21Cに関連して)本明細書に記載する改良されたVIOネットワークの実施形態の例示的な結果が示され、従来の解決手段の結果と比較されている。例えば、
図22は、改良されたVIOネットワークをグラウンドトゥルースに対して用いて実現された推定軌跡を示す(対応する例示的なエンドポイント並進誤差およびエンドポイント回転誤差が、表4に示される)。
【表4】
表4。
従来の解決手段と比較した際の改良されたVIOネットワークモデルの最終点の位置および向きの誤差。並進誤差は、最終点の絶対誤差と、フレーム0-800においてカバーされる合計距離に対するその誤差の割合との両方の観点から示されている。
【0137】
慣性オドメトリ(IO)のみのネットワークの実装は、大きいドリフト誤差を経時的に示し得るが、(上記の例に記載するような視覚慣性オドメトリネットワークを形成するために)視覚オドメトリネットワークと組み合わされた場合、ドリフトが大幅に低減され得る。さらに、視覚慣性オドメトリ(VIO)ネットワークは、ロボットが旋回している場合に、視覚オドメトリネットワークを凌ぐより良い性能を示し得る。これは、IMUがカメラにおける物体の大きい変位をどのように補償するかを示している。改良された視覚慣性オドメトリネットワークは、従来の解決手段を凌ぎ得る。そのようなネットワークは、幾多の例の中でもとりわけ、ロボットから自律ドローンまでという様々な用途で利用され得る。
【0138】
上記の例示的な特徴に加え、改良されたコンピュータビジョンシステムは、畳み込みニューラルネットワーク(CNN)をさらに利用することで、疎な階層ボクセルグリッド表現(例えば、VOLA)を用いて点群のペアの間の相対姿勢を推定し得る。本明細書に記載するように、ボクセルグリッドは、点群と比較してメモリ効率的がより高い解決手段なので、メモリリソースおよび計算リソースが限定され得る埋め込みシステム(例えば、自律デバイス)上で用いられ得る。変換誤差を用いた新規の損失関数が、3Dボクセルグリッドを介した2D畳み込みと共にさらに用いられ得る。実際には、そのような解決手段は、反復最近点(ICP)の従来の最先端の実装と同等の精度を維持しつつ、そのような効率を供給し得る。実際には、ボクセルグリッドを用いると位置合わせ誤差に対する高密度エリアの寄与が限定されるので、改良されたボクセルグリッドベースの解決手段は、幾多の例示的な使用および利点の中でもとりわけ、ICPを介した向上を実現し得る。
【0139】
近年、広範なセンサが3Dデータをより大量かつ高品質にスキャンできるようになった結果として、3Dスキャン技術は、万人にとってよりアクセス可能になっている。これらの3Dセンサは、3Dデータを表すために用いられる空間情報を記述する統合された座標系内の未編成3次元点セットである点群を生成する。ただし、LiDAR、ソナーおよびRGB-Dのような利用可能な3Dセンサは、スキャンの範囲が限定されている。この限定された範囲を克服すべく、複数のスキャンが獲得およびマージされて、3Dマップが作成される。複数のスキャンの融合には、各スキャンが同じ座標系内で表されることで、編成された態様でそれらの情報が提示されることが必要である。したがって、同じ座標系内に全てのスキャンを表すべく、スキャンが実行された位置を把握することが重要である。この位置は、基準フレームと現在のスキャンとの間の変位として表され得る。カメラ姿勢として知られるこの変位は、並進tおよび回転Rにより形成される変換ΔTとして表され得るので、ΔT=(R|t)である。センサの変位は、スキャンにおいて利用可能であるか、またはGPS、IMUもしくは地上の車両上の車輪オドメトリなどの他の種類のセンサのサポートで利用可能である3D情報を用いることにより抽出され得る。いくつかの事例において、そのような配置の決定を支援するために、本明細書に記載するようなオドメトリ解決手段が適用され得る。ひとたびカメラの位置が把握されると、スキャンが同じ座標系上で表されることで、全てのスキャンからの情報を共に含む3Dマップの作成が可能になり得る。カメラの位置を求めることの問題は、相対姿勢推定として知られており、これまでは、リソース制約デバイス上での実装が難しかった。
【0140】
一例において、コンピューティングシステムは、ディープニューラルネットワーク(DNN)を実装および使用することにより相対姿勢推定の問題を解決するように構成され得る。点群のサイズは、センサに対するノイズおよび制限に起因して、スキャン間で異なり得る。ただし、点群のボクセルグリッド表現は、設計ステージから固定されている。3D畳み込みが計算上高価なので、改良された解決手段は、代わりに、3Dボクセルグリッドの代替的な2D表現を用いて、計算上効率的な2D畳み込みニューラルネットワーク(CNN)の使用を可能にし得る。いくつかの実装において、2D畳み込みニューラルネットワークは、ボクセルグリッドペア間の変換を求めるために用いられ得る。損失関数は、グラウンドトゥルースおよびネットワーク予測を用いて点群を変換することで取得される誤差に基づいて決定され得る。そのような実装の実行は、RGB-D SLAMデータセットを用いて、その結果を最先端の反復最近点(ICP)アプローチと比較することであってよい。さらに、2つの点群を生成するセンサのスキャン間の相対姿勢推定は、生成された点群間の最善の位置合わせを生成する変換を求めるために利用され得る。したがって、本明細書に記載するそのような相対姿勢推定解決手段は、代替的に、「点群位置合わせ」解決手段と称され得る。
【0141】
図23Aおよび
図23Bを参照すると、現在のところ、3D点群を位置合わせするための最も頻繁な方法は、
図23Aに表される2つの異なる点群2305、2310内の対応点間の距離を最小化する変換を反復方式で推定する反復最近点(ICP)2315の変形例に基づいている。この反復手順は、計算上高価であることがあり、さらに、最初の位置合わせの影響を受け、処理点群2305、2310とそれらのサイズとの間で重複する。両方の点群間の位置合わせの差を計算および最小化する態様に応じて、点の代わりにこの距離が平面間または曲線間で行われ得る複数のICPベースの方法が見つかり得る。3D位置合わせをより効率的なものにすべく、ICP解決手段が、特徴を用いて3D点群の記述子から重要な点を抽出するために拡張され得る。回転および並進の不変性またはノイズのロバスト性のような係数は、ヒストグラムベースの記述子3DSIFT、SHOTおよびNARFを用いた研究が例であるこれらの重要な点上で重要である。
【0142】
RGB-D画像が利用可能である場合、RGB画像は、カメラの変位の推定を向上させるために用いられ得る。これは、単眼カメラもしくは双眼カメラまたはマルチカメラによる姿勢推定のためのアプローチを実装するために利用され得る。改良されたシステムのいくつかの実装において、RGB画像は、畳み込み層セットを用いて、全結合層セットが続く画像データ内の複雑な特徴を抽出して姿勢を回帰させる畳み込みニューラルネットワーク(CNN)への入力として用いられる。さらに、いくつかの実装において、長短期記憶(LSTM)層がこのトポロジ上に追加されて再帰型ニューラルネットワーク(RNN)が形成されることにより、長い軌跡において撮影される画像の間の時間依存性がハンドリングされ得る。
【0143】
他の実装は、異なる種類の入力をRGB画像と共に利用し得る。例えば、相対姿勢を推定するために、画像のペア間のオプティカルフローが用いられ得る。さらに、深度次元の情報も用いられ得る。ここでは、2.5D透視からこの状況を考慮して、ニューラルネットワークが、幾多の例の中でもとりわけ、RGB-D画像を入力として用いる。いくつかの実装は、3Dデータに対してCNNを利用し、この3Dデータを用いてディープラーニングを実行し得る。例えば、点群位置合わせの問題は、点群から特徴点を最初に抽出し、次に、取得した特徴をディープラーニングアプローチに供給することにより、評価され得る。例えば、「スーパーポイント」記述子が、点群を一致させるための基本単位として機能し得る。この記述子は、点群間の変換を求めるために用いられる幾何学情報を保持するディープニューラルネットワーク自動エンコーダへの入力として用いられ得る。他の実装において、大量の点が存在する点群のクラスタを表す対象点が用いられ得る。加えて、この戦略を用いた分類またはセグメンテーションのような異なる問題が用いられ得る。ここでは、最も近い隣接マップおよびKDツリーがそれぞれ、点群の記述子として用いられる。
【0144】
いくつかの実装において、点群は、3D物体を分類すべく点の間の相互作用を求める全結合層に次に供給される(x;y;z)座標のリストとして表現される点サブセットとして表され得る。
図23Bにおける簡略ブロックダイアグラムにより表現されるようないくつかの実装において、点群2305、2310が、各セルが固定サイズを有する3Dグリッド上の各点群2305、2310を変換するボクセル化処理2330を通じて、それぞれのボクセルグリッド(VG)2320、2325へ変換され得る。これにより、必要なメモリの量が固定され、ボクセル間の隣接関係が生成される。次に、畳み込みニューラルネットワーク2350に入力を提供するためにボクセルグリッドベースの入力2320、2325が用いられることで、相対姿勢結果2355が生成され得る。この種類のデータをディープラーニングと共に用いる戦略は、幾多の用途の中でもとりわけ、物体の分類および向きの問題に適用され得る。従来の解決手段およびシステムは、ボクセルグリッド(VG)およびディープラーニングを用いずに相対姿勢推定の問題を解決する。3D空間のVG表現の使用には、設計ステージにおいて固定サイズを有する、また、小さいメモリフットプリントを有するという特性がある。また、CNN実行および他の機械学習演算向けの低電力ハードウェアアクセラレータ(例えば、Movidius(商標)Neural Compute Stick(商標))を用いることにより、幾多の例示的な利益の中でもとりわけ、このアプローチをリソース制約デバイスに対して適用することが可能である。
【0145】
図24に示される簡略ブロックダイアグラムを参照すると、解析中の3D空間のボクセルグリッド表現(例えば、2320、2325)に基づく相対姿勢推定の決定において用いられる例示的なニューラルネットワークトポロジが表されている。1つの例示的な実装において、ボクセルグリッド構造2320、2325のペアを入力として受け取ってから、CNN2350をトレーニングしてそれらの(スキャンから生成され、ボクセルグリッド構造が基づく)対応点群を位置合わせすることによりスキャン間の相対姿勢を求めるために、2D畳み込みニューラルネットワークが実装され得る。実際には、各ボクセルグリッド構造2320、2325は、システムにより実行されるボクセル化処理を通じて、点群のうちの対応する1つから生成または抽出され得る。次に、ネットワーク2350内の2D畳み込み層において用いられる入力を適合させるべく、3Dから2Dへの投影2405が、システムにより実行され得る。ひとたび2D投影のペアがネットワークに導入されると、それらの間の相対姿勢ΔT 2355が予測される。
【0146】
図24の例に示されるように、ボクセルグリッド入力2320、2325が2D投影においてスライスされ、2D投影入力(それぞれ、2410、2415)へ変換された状態で、2D投影入力2410、2415は、CNN2350の表現部分2420への入力として提供され得る。ネットワーク2350の表現部分2420は、対応する畳み込み層(例えば、2425a,b)の複数のセット(例えば、ペア)を有するシャムネットワークとして実装され得る。
図24において用いられる表記内で、表現部分2420内の層の各々について、Conv(i;j;k)は、i個の出力と、ストライドkのカーネルサイズj×jと、「同じ」ゼロパディングとを有する畳み込み層を表す。表現部分2420からの出力が連結されることで、ネットワーク2350の回帰部分2435への入力として導入される特徴ベクトル2430が形成され得る。例えば、回帰部分2435は、相対姿勢結果2355の生成に用いられる回転(ΔR)成分および並進(Δt)成分の各々をそれぞれ生成する最終の全結合層を有する全結合層セット2440を含むように実装され得る。
図24の表現において用いられる表記内で、FC(i)は、i個のニューロンを有する全結合層を意味する。
【0147】
上記のように、点群は、編成されていない点のセットにより形成される種類のデータなので、最初に、ボクセル化として知られる処理での3Dグリッドとして表される。ボクセル化により、点群は、ボクセルグリッドへ変換される。ここでは、対応して2D画像がピクセル内で構造化されるので、データがボクセル内で構造化される。本質的に、ボクセルグリッドは、ボクセルとして知られる各キューブが点群からの情報の小さいゾーンを含む、[高さ、幅、深度]形状を有するキューブ3Dグリッドである。点がそのゾーンに含まれる場合、ボクセルの占有は、1に設定され、そうでなければ0である。これは、占有VGとして知られるボクセル当たり1ビットのみをVGが含むことを意味する。3D空間の点群表現2505の例、および、点群表現2505からのボクセル化を通じて生成された対応するボクセルグリッド表現2510の例が、
図25に示される。VOLA構造は、いくつかのジオメトリにより占有されている3D空間を表すそれらのボクセルについてのみデータが格納される、ボクセルグリッドデータ構造の専用形式とみなされ得る。したがって、VOLAボクセルグリッド構造により、本明細書における例において説明するようなデータ転送とメモリが制約された環境とに有用な格納されるデータの量が減っている。
【0148】
上で紹介したように、いくつかの実装において、ボクセルグリッドベースの入力(例えば、2320、2325)を導入する前に、3Dから2Dへの投影段階が実行されることにより、2Dカーネルを有する畳み込み層と共に用いられる3D表現が、適合させられ得る。これにより、ネットワーク(例えば、2350)の計算コストが低減し、それがより単純になることで、幾多の例示的な用途の中でもとりわけ、メモリの制約がある埋め込みデバイスへの容易なデプロイが可能になる。例えばマルチビューCNN内で、2D投影が3Dデータに対して用いられ得る。ここでは、2D画像投影が、うまく開発された2D CNNと共にそれらを用いるために、3Dモデルの異なる透視から抽出される。ただし、このアプローチは、典型的には、3Dボリュームの空間構造を保存しない。なぜなら、このアプローチでは、この情報が必要になり得ない分類問題に重点が置かれているからである。他の実装では、3DのVGを2D平面へ畳み込む「X線スキャン」と同様の処理である異方性プロービングカーネルを用いて、3D物体を2Dへ投影し得る。この投影は、我々が研究している姿勢推定問題において用られる3Dボリュームの3Dグローバル構造を撮像するための一助になり得る。実世界における(X;Y;Z)次元を表す(hVG;wVG;dVG)としてボクセルグリッドが表されるので、1つの例示的な解決手段では、Y次元の方向においてボクセルグリッドをスライスすることによりボクセルグリッド構造が2D投影へ変換されることで、サイズ(hVG,dVG)のwVG個の画像が生成され得る。次に、結果として生じる2D画像が積層され、wVG個のチャネルを有するサイズ(hVG,dVG)の画像が生成される。関連用途では物体の垂直線が点群の位置合わせに寄与するものと予想され得るので、この例では、wVGは、スライス方向として用いられている。幾多の例示的な代替形態の中でもとりわけ、意図された用途の検討事項に基づく他の実装は、代替的に、3Dボクセルグリッドの他の次元に沿って同様に機能し得る。
【0149】
図24の例において上で記載したように、コンピューティングシステムは、ハードウェアおよび/またはソフトウェアに畳み込みニューラルネットワーク(CNN)を実装し、CNNを用いてボクセルグリッドのペア間の相対姿勢を推定し得る。CNN2350は、対応するボクセルグリッドの2D投影を入力として受け取り、相対姿勢の回転(ΔR)および並進(Δt)を表すベクトルを出力する。CNN2350の表現部分2420は、入力の全てのペアから特徴ベクトル2430を抽出できる。この特徴ベクトル2430は、相対姿勢を予測するために後で用いられる実用的な情報を含み得る。特徴ベクトル2430は、重みが互いに共有される畳み込み層の2つの同一の分岐を有するシャムネットワークにより形成される。いくつかの実装において、表現部分2430内の全ての畳み込み層の後には、活性化関数としての正規化線形ユニット(ReLU)が存在する。いくつかの事例では、データの空間情報が保存されることを保証するためにプーリング層が用いられることはない。CNN2350の回帰部分2435では、シャムネットワークの両方の分岐の出力が平坦化および連結されることで、ネットワークの予測の推定を担う部分である回帰部分に導入されるベクトルが形成される。これは、ReLU活性化関数が各々の後に続く全結合層セット2440により形成される。ネットワークの出力は、予測の回転部分および並進部分という2つの成分を有するので、ネットワーク2350の最後のセグメント2450内では、各々で予測部分全体である2つの全結合層に分離がある。
【0150】
上記の例を続けると、CNN2350の出力2355は、ボクセルグリッドのペア間の相対姿勢を表すベクトルで構成され得る。このベクトルは通常、特殊直交群SO(3)からの回転要素と並進ベクトルとから成る要素のセットである変換値の特殊ユークリッド群SE(3)の変換行列ΔTとして定義される。SE(3)グループにおいて予測を行う場合、SO(3)回転成分に伴ういくつかの問題が存在し得る。なぜなら、それらは直交行列である必要があるからである。いくつかの実装において、SE(3)グループのリー代数se(3)の使用が、直交要件を回避するための解決手段として提示される。なぜなら、その直交制約を有することなく瞬間的な変換を表すからである。se(3)とSE(3)との間の変換を行うべく、指数マップが用いられ得る。
式15:
【数18】
リー代数グループを用いた結果として、ネットワークの姿勢予測値(w|u)は、回転についてのw=(w1;w2;w3)および並進についてのu=(u1;u2;u3)という、ΔTへ変換される2つのベクトルにより表される。この変換を行うための計算段階では、上記の式3から式9を利用する。
【0151】
いくつかの実装において、ネットワーク2350は、正しい解決手段を実現するようにネットワークを誘導する損失関数により制御される学習フェーズを利用してトレーニングされ得る。損失関数は、ネットワークの予測がどのくらい良好であるかを測定することで、学習誤差逆伝播にペナルティを課すか、または学習誤差逆伝播を報奨し得る。一例において、提案される損失関数で、2つの異なる変換値T
gtおよび
【数19】
を適用した後の点群内の点の位置の差が定量化される。この手順は、3D空間内で等しく分散された点を有する汎用点群を取得し、次に、2つの異なる変換値を適用し、点の位置の差を比較することから成る。2つの変換値は、ネットワーク予測値
【数20】
とグラウンドトゥルースT
gtとに対応する。結果として、より近いこれらの点群は、それら自体の間にあり、予測値とグラウンドトゥルースとがより類似する。変換値T
gtに対応する点p
iの位置と、変換値
【数21】
に対応する点
【数22】
の位置との間のユークリッド距離は、誤差測定基準として用いられる。ひとたびこの距離が全ての点について決定されると、損失を表す平均が計算される。損失関数は、以下のように表され得る。
式16
【数23】
式中、
【数24】
は、点iのL
2ノルムを表し、nは、点群内の点の数である。
【0152】
相対姿勢推定問題に重点が置かれた多くのデータセットが存在し、姿勢推定の解決手段において用いられるCNNの有効性を試験するために利用され得る。そのようなデータセットは、グラウンドトゥルースを表すために用いられ得る。グラウンドトゥルースは、相対姿勢について知る必要がある、データの位置特定についての情報を提供する。一例において、ネットワークの評価には点群が必要とされる。この種類のデータは、3Dレーザセンサ(例えば、LiDAR)を用いて生成される点群を直接提供する3Dデータセットから、またはRGB-Dデータセットからという2つの態様で見られ得る。点群は、深度情報を用いて各ピクセルを点へ変換 単純な処理における深度マップから抽出され得る。
【0153】
本明細書に記載するようなディープラーニングを利用する実装では、ネットワークをトレーニングするために、学習フェーズにおいて高ボリュームのデータが必要とされ得る。この要件を満たすことにより、異なるデータセットが、それらをそれらの用途で区別することで、見つかり得る。例えば、KITTIデータセット、Oxford Robot Carデータセット、Malaga Urbanデータセットおよび他のものでは、カメラ/センサを動かすために車が用いられる自律駆動用途に重点が置かれ得る。別の例として、7シーンのデータセット、ICL-NUIMデータセットおよび他のデータセットでは、手でカメラを取って動かす屋内環境でのハンドヘルドデバイスに重点が置かれ得る。別の例では、ハンドヘルドシーケンスに加えて、TUMデータセットが利用され得る。ネットワークのトレーニング中に使用され得る幾多の例示的なデータセットの中でもとりわけ、TUMデータセットは、地上で動いている車輪付きロボットから取得されるデータも含み得る。
【0154】
例として、ディープラーニングを用いる、屋内位置を対象とした地上ロボットの用途では、TUMデータセットが利用され得る。なぜなら、TUMデータセットは、ディープニューラルネットワーク(DNN)をトレーニングするためのこの種類の十分な量のデータを提供するからである。このデータセットは、複数のシーケンスから成ってよく、これらのシーケンスは、用途に応じてカテゴリに編成される。一例において、「ロボットSLAM」のシーケンスのみが用いられる。深度マップから点群を取得すべく、データセットにおいて提供されるツールは、我々のアプローチの性能を評価するために用いられる。
【0155】
TUMデータセットからの点群は、本明細書において説明したように(例えば、x方向、y方向およびz方向においてカメラから[4,4,8]メートルの範囲からの点のみを、サイズ[64,64,128]のVGへ取り込むことで)、ボクセル化され得る。ネットワークをゼロからトレーニングするために、一例において、「ロボットSLAM」カテゴリの最初の3つのシーケンス(例えば、fr2/pioneer360、fr2/pioneer slamおよびfr2/pioneer slam2)が用いられることで、未知のデータを用いてネットワークを評価すべく、4番目のセット(例えば、fr2/pioneer slam3)が、トレーニングから除外されたままになり得る。
【0156】
さらに、トレーニングのためのデータの量を増やすことでセンサの大きい変位に対してネットワークをロバストにすべく、トレーニングペアは、形式
【数25】
のデータのシーケンスにおける異なる段階サイズを取得することにより作成され得る。Fは、インデックスiを有するフレームであり、
【数26】
であり得る。nは、シーケンスの長さであり、sは、
【数27】
を有する段階サイズである。これらの値は、用いられるフレームの間の分離を増やすように選択され得る。
【0157】
一例において、ネットワークモデルは、TensorFlowフレームワークを用いて実装され、グラフィカル処理ユニット(GPU)、ベクトル処理ユニットまたは他のコンピュータプロセッサを用いてトレーニングされ得る。一例において、TUMデータセットにおいて提供されるツールを用いることにより、トレーニングされたネットワークの性能が解析される。TUMデータセットでは、(i)固定間隔Δにわたる軌跡の局所的な精度、つまり、軌跡のドリフトに対応する誤差を測定する相対姿勢誤差(RPE)、および、(ii)推定軌跡とグラウンドトゥルース軌跡との間の絶対距離を比較することにより推定軌跡のグローバルな一貫性を測定する絶対軌道誤差(ATE)という2つの異なる種類の誤差が提示される。
【0158】
既存のアプローチに対してネットワークの性能を比較するために、反復最近点(ICP)の従来の実装が用いられ得る。本明細書に記載するCNNベースの相対姿勢推定アプローチの例示的な評価において決定された誤差が、従来のICP実装の結果と共に表5に提示されており、CNNとICPとを組み合わせたアプローチ(改良されたCNNベースの解決手段とICP部分との組み合わせ)も、比較のために提示されている。相対姿勢推定に関して、CNNは、ICPを用いる方法よりも高い回転誤差を有するが、CNNの並進誤差は最も低いということが分かる。これは、回転誤差は高いが、姿勢に対する影響はほとんどないので、並進誤差の影響力がほとんどないことを意味する。いくつかの事例では、カメラが動かされた場合に回転相対姿勢推定誤差が並進誤差として現れるので、並進相対姿勢推定誤差は、比較のために十分に考慮され得る。最後に、CNNではATE誤差がより大きいが、ネットワークにより取得される軌跡は、滑らかであり、グラウンドトゥルースと同じ「形状」をたどる。一方で、ICPの軌跡は、典型的には、より不規則である。CNN用のより高いATEは、評価の回転のスケールが存在しない小さいデータセットでCNNをトレーニングした結果とみなされ得る。
【表5】
表5:各相対姿勢推定技術での相対姿勢誤差(RPE)および絶対軌道誤差(ATE)(二乗平均平方根誤差(RMSE)、平均偏差および標準偏差(STD)として表される)。この例では、RPEは、5個のフレームという固定されたΔ間隔を用いて計算される。
【0159】
上記のように、改良されたコンピューティングシステムは、(ハードウェアおよび/またはソフトウェアに)エンドツーエンドアプローチを実装することで、点群間の変換誤差に基づく損失関数を用いてボクセルグリッド間の相対姿勢を求め得る。そのようなシステムのCNNにより推定される軌跡は、ICP(およびさらにCNN+ICPという組み合わせ)と比較してより滑らかであり得る。そのようなシステムは、相対的に大量のデータを利用して、対応するディープラーニングモデルをトレーニングし得るが、他の実装では、トレーニングデータセットのサイズが増やされ得る。ハンドヘルドカメラ、ドローンおよび車を含む他の用途にこのアプローチが利用され得ることを理解されたい。さらに、実装が、LiDARにより取得される点群を利用し得る。また、いくつかの実装において、ネットワークのパラメータのサイズは、幾多の例示的な修正の中でもとりわけ、低減されるか、またはそうでなければ簡略化され得る。
【0160】
図26Aから
図26Cは、システムによるコンピュータビジョン処理を強化するための例示的な技術を示すフローチャート2600a-cである。
図26Aの例では、レイキャスティングを実行するための改良された技術が表されている。例えば、疎な階層ボリュメトリック(グリッドベース)データ構造(例えば、VOLAベース構造)がアクセスされてよく(2602)、レイキャスティングアルゴリズムが、ボリュメトリックデータ構造を用いて実行されてよい(2604)。ボリュメトリックデータ構造により表されるボリュームへ複数の光線が放射されることで、レイキャスティングアルゴリズムが実行され得る(2606)。レイキャスティングは、レイトラバーサル段階を含み得る。この場合、光線の近似横断をもたらす間隔に従って、光線が交差するボクセルの全てのうちの一部が、ジオメトリを含んでいる(または「占有されて」いる)かどうかを確かめるためにチェックされる。横断から、占有されているボクセルと光線が交差しているかどうかがおおよそ判断され、そうである場合、占有されているボクセルは、光線が最初に交差している。このレイキャスティング処理は、例えば、SLAMパイプライン、レンダリング用途または他の例示的な使用の一部として、光線の各々に対して繰り返される。
【0161】
図26Bを参照すると、デバイス(例えば、デバイスの1つまたは複数のセンサ)の姿勢を決定するための改良された技術が示されている。デバイスは、環境を自律的にナビゲートして環境内で動くことができる自律デバイスであってよい。一例において、視覚データ(例えば、デバイスのカメラにより生成される)が、視覚オドメトリニューラルネットワークとして実装される、ニューラルネットワークモデルの第1の部分に入力され得る(2620)。さらに、慣性データ(例えば、デバイスのIMUにより生成される)も、慣性オドメトリニューラルネットワーク部分として実装される、ニューラルネットワークモデルの第2の部分に入力され得る(2622)。視覚オドメトリネットワーク部分および慣性オドメトリオドメトリネットワーク部分のそれぞれの出力は、連結されてから、ニューラルネットワークモデル内の全結合層セットにおける最初のものへの入力として提供され得る。ニューラルネットワークモデルにより、デバイスのポストを表す出力が、視覚データおよび慣性データの組み合わされた入力に基づいて生成され得る(2626)。
【0162】
図26Cを参照すると、相対姿勢推定を決定するための改良された技術が示されている。例えば、環境のビューを記述するために(かつ、2つのボリューム(例えば、環境全体のサブボリューム)を記述するために)キャプチャされた点群データが、(2630、2632において、)対応するボリュームを各々が表すそれぞれのボクセル化されたボリュメトリックデータ構造(例えば、VOLAベースの構造)へ変換され得る。次に、これらのボリュメトリックデータ構造は、スライスされるか、またはそうでなければ、(2634、2636において、)2Dデータ構造(例えば、2Dスライスのそれぞれのセット)へ変換されてよく、2Dスライスは、(2638において、)相対姿勢推定を決定するためにトレーニングされた畳み込みニューラルネットワークモデルに入力として提供され得る。実際には、畳み込みニューラルネットワークモデルは、(2640において、)2つのボクセル化されたボリュメトリックデータ構造で記述されたボリュームに基づいて相対姿勢推定を表す結果を生成し得る。
【0163】
図27は、いくつかの実施形態による例示的なマルチスロットベクトルプロセッサ(例えば、超長命令語(VLIW)ベクトルプロセッサ)を表す簡略ブロックダイアグラムである。この例では、ベクトルプロセッサは、複数の(例えば、9個の)機能ユニット(例えば、2703から2711)を含んでよく、これらの機能ユニットは、ベクトルレジスタファイル(VRF)2701および汎用レジスタファイル(GRF)2702によりバックアップされるマルチポートメモリシステム2700により供給され得る。プロセッサは、命令をデコードし、かつ、機能ユニット2703-2711を制御する制御信号を生成する命令デコーダ(IDEC)2712を含む。機能ユニット2703から2711は、プレディケイティッド実行ユニット(PEU)2703と、分岐および繰り返しユニット(BRU)2704と、ロードストアポートユニット(例えば、LSU0 2705およびLSU1 2706)と、ベクトル演算ユニット(VAU)2707と、スカラ演算ユニット(SAU)2710と、比較および移動ユニット(CMU)2708と、整数演算ユニット(IAU)2711と、ボリュメトリック加速ユニット(VXU)2800とである。この特定の実装では、VXU2800は、格納演算/検索演算の両方と、論理演算と、算術演算とを含むボリュメトリックデータに対する演算を加速させ得る。
図27の例にはVXU回路2800が単一のコンポーネントとして示されているが、VXU(および他の機能ユニット2703から2711)の機能は複数の回路の間で分散され得ることを理解されたい。さらに、幾多の例示的な実装の中でもとりわけ、いくつかの実装では、VXU2800の機能は、プロセッサの他の機能ユニット(例えば、2703から2708、2710、2711)のうちの1つまたは複数内で分散され得る。
【0164】
図28は、いくつかの実施形態によるVXU2800の例示的な実装を示す簡略ブロックダイアグラムである。例えば、VXU2800は、ベクトルレジスタファイル2801または汎用レジスタファイル2802のいずれかから入力を受け入れるために、少なくとも1つの64ビット入力ポート2801を提供し得る。この入力は、レジスタファイル2803と、アドレス生成器2804と、点アドレス指定ロジック2805と、点挿入ロジック2806と、点削除3Dロジック2807と、X次元における3Dから2Dへの投影ロジック2808と、Y次元3Dから2Dへの投影ロジック2809と、Z次元における3Dから2Dへの投影ロジック2810と、2Dヒストグラムピラミッド生成器2811と、3Dヒストグラムピラミッド生成器2812と、ポピュレーションカウンタ2813と、2D経路探索ロジック2814と、3D経路探索ロジック2815と、場合によっては、64ビット符号なし整数ボリュメトリックビットマップ上で動作するためのさらなる機能ユニットとを含む複数の機能ユニットに接続され得る。ブロック2802からの出力は、ベクトルレジスタファイルVRF2801または汎用レジスタファイルGRF2802のいずれかへライトバックされ得る。
【0165】
図29の例を参照すると、4^3ボクセルキューブ2900の編成の表現が表されている。第2のボクセルキューブ2901も表されている。この例では、ボクセルキューブは、データ内で64ビット整数2902として定義され得る。64ビット整数2902において、キューブ内の1つ1つのボクセルは、64ビット整数の単一の対応するビットで表される。例えば、アドレス{x,y,z}={3,0,3}におけるボクセル2902を「1」に設定することで、ボクセルキューブ2901により表されるボリュメトリック空間内のその座標にジオメトリが存在していることを示し得る。さらに、この例では、(ボクセル2902以外の)全ての他のボクセルが「空き」スペースに対応してよく、幾多の例の中でもとりわけ、それらの座標に物理ジオメトリが無いことを示すために「0」に設定され得る。
図30を参照すると、いくつかの実施形態による例示的な2レベルのスパースボクセルツリー3000が示されている。この例では、単一の「占有されている」ボクセルのみが、ボリューム内に(例えば、位置{15,0,15}に)に含まれる。この場合におけるツリーの上位レベル-0 3001は、単一のボクセルエントリ{3,0,3}を含む。結果として、そのボクセルは、要素{3,0,3}に単一のボクセルを含む、ツリーの次のレベル3002の方を指す。スパースボクセルツリーのレベル0に対応するデータ構造内のエントリは、1つのボクセルが占有として設定された64ビット整数3003である。設定されたボクセルは、64ビット整数のアレイが次に、3003において設定されるボクセルボリュームに対応するツリーのレベル1に割り当てられることを意味する。レベル1のサブアレイ3004では、ボクセルのうちの1つのみが占有として設定され、全ての他のボクセルが非占有として設定されている。この例では、ツリーが2レベルのツリーなので、レベル1がツリーの最下部を表し、これにより、階層がここで終了している。
【0166】
図31は、特定のボリュームの位置{15,0,3}および{15,0,15}に占有ボクセルを含む、いくつかの実施形態による2レベルのスパースボクセルツリー3100を示す。この場合におけるツリー3101の上位レベル-0(特定のボリュームを64個の上位レベル-0ボクセルへ細分化する)は、2つのボクセルエントリ{3,0,0}および{3,0,3}を含み、対応するデータ3104は、2つのボクセルが設定(または占有)されていることを示す。スパースボクセルツリー(SVT)の次のレベルは、2つのサブキューブ3102および3103を含む64ビット整数のアレイとして提供され、これらのサブキューブは、レベル0において設定される各ボクセルに1つずつある。レベル1のサブアレイ3105では、2つのボクセルv15およびv63が占有として設定され、全ての他のボクセルが非占有およびツリーとして設定されている。この形式は柔軟である。なぜなら、ツリーの次のレベル内の64個のエントリは常に、ツリーの上位層内の設定されたボクセルの各々に対応して割り当てられるからである。この柔軟性により、上位層内の対応するボクセルが設定されている限り、動的に変化しているシーンジオメトリを柔軟な方式で(すなわち、ランダムなどの固定順序ではなく、)既存のボリュメトリックデータ構造へ挿入することが可能になり得る。そうでない場合、ポインタのテーブルが維持されることでメモリ要件が高くなるか、さもなければ、予期せぬジオメトリを挿入すべく、ツリーを少なくとも部分的に再構築することが必要であろう。
【0167】
図32は、いくつかの実施形態による、
図31からのボクセルを格納するための代替的な技術を示す。この例では、ボリューム3200全体が、
図31のようにグローバル座標{15,0,3}および{15,0,15}に格納された2つのボクセルを含む。このアプローチでは、レベル0よりも下のレベル1におけるサブキューブの全てを表すために64個のエントリのアレイを割り当てるのではなく、(例えば、対応するレベル0のボクセルが占有されているか否かにより示されるように、)実際にジオメトリを含むレベル1におけるそれらの要素のみが、対応する64ビットのレベル1レコードとして割り当てられる。これにより、この例におけるレベル1は、64個の64ビットエントリではなく、2個の64ビットエントリのみを有する(すなわち、占有されているか空であるかどうかにかかわらず、64個のレベル1のボクセルの各々について)。したがって、この例では、第1のレベル0 3204が
図31における3104と同等であるが、次のレベル3205は、
図31における対応する3105よりもメモリ要件が62倍小さい。いくつかの実装では、レベル1において空間が割り当てられていない新しいジオメトリをレベル0へ挿入する場合、ツリーをコピーおよび再配置しなければならない。
【0168】
図32の例において、現在の層よりも上の層内の占有ボクセルをカウントすることにより、サブボリュームを導出できる。このようにして、システムは、ボクセルデータのどこで、1つの上位層が終了し、次の下位層が開始しているかを判断し得る。例えば、3つの層0ボクセルが占有されている場合、システムは、3つの対応する層1エントリがボクセルデータにおいて続くこと、および、(これら3つの後の)次のエントリが層2内の第1のエントリに対応すること等を予想し得る。そのような最適な圧縮は、シーンの特定の部分が経時的に変化しない場合、または、この用途でボリュメトリックデータの遠隔伝送、例えば、全てのビットの伝送にコストおよび時間がかかる冥王星の表面をスキャンする宇宙探査機からの遠隔伝送が必要とされる場合、非常に有用であり得る。
【0169】
図33は、いくつかの実施形態による、対応するボリューム内のジオメトリへの変更を反映するために、64ビット整数ボリュメトリックデータ構造エントリとして表される4^3キューブへボクセルが挿入され得る方式を示す。一例において、3300に示されるように、各ボクセルキューブは、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値をエンコードしてよく、最後に、3301にCコード式で示されるように、z値を0/16/32/48ビットのシフトで表してよい。最後に、各64ビット整数が、各々が別個に書き込まれる最大64個のボクセルの組み合わせであってよいので、新しいビットマップは、3302に示されるように、古いビットマップ値および新しいビットマップ値をOR演算することにより、スパースボクセルツリーから読み取られる古い64ビット値と論理的に組み合わされなければならない。
【0170】
図34を参照すると、いくつかの実施形態に従って、X方向に論理OR演算をして2Dパターン3401を生成し、Y方向に論理OR演算をして2D出力3402を生成し、最後に、Z方向に論理OR演算をして3403に示されるパターンを生成することにより、64ビット整数3400に格納された3Dボリュメトリック物体がどのように投影され得るかを示すための表現が示されている。
図35A、
図35Bおよび
図35Cは、いくつかの実施形態に従って、どのように入力64ビット整数からのビットを論理的にOR演算してX、YおよびZに出力投影を生成するかを示す。この例において、表3501は、入力ベクトル3500からのどの要素インデックスをOR演算してx投影出力ベクトル3502を生成するかを列ごとに示している。表3503は、入力ベクトル3500からのどの要素インデックスをOR演算してY投影出力ベクトル3504を生成するかを列ごとに示している。最後に、3505は、入力ベクトル3500からのどの要素インデックスをOR演算してz投影出力ベクトル3506を生成するかを列ごとに示す。
【0171】
X投影では、入力データ3500からのビット0、1、2、3を論理的にOR演算して、X投影3501のビット0を生成する。例えば、3501におけるビット1は、3500からのビット4、5、6および7等をOR演算することにより生成され得る。同様に、Y投影3504におけるビット0は、3500のビット0、4、8および12を共にOR演算することにより生成され得る。3504のビット1は、3500のビット1、5、9および13等を共にOR演算することにより生成される。最後に、Z投影3506におけるビット0は、3500のビット0、16、32および48を共にOR演算することにより生成される。3506のビット1は、3500のビット1、17、33および49等を共にOR演算することにより生成され得る。
【0172】
図36は、いくつかの実施形態による、どのように投影を用いて簡略マップを生成できるかについての例を示す。このシナリオにおける目標は、ボクセルボリューム3602から、高さh 3610および幅w 3601の車両3600が下る経路のコンパクトな2Dマップを生成することであってよい。ここで、Y投影ロジックは、ボクセルボリューム3602から最初の粗い2Dマップ3603を生成するために用いられ得る。いくつかの実装では、マップを処理することで、特定の寸法の特定の車両(例えば、車(または自律走行車)、ドローン等)が経路の幅の制約3601および高さの制約3610を通過できるかどうかをチェックし得る。これは、Zに投影を実行して幅の制約3601をチェックすることにより経路が通過可能であることを保証すべく実行されてよく、Yにおける投影は、計算を車両3610の高さに限定するためにマスキングされ得る。(例えば、ソフトウェア内で)さらなる後処理を用いると、通過可能であり、かつ、幅および高さの制約を満たす経路については、車両が走行できる合法的な経路を完全に再構築すべく、経路に沿った点A 3604、B 3605、C 3606、D 3607、E 3608およびF 3609のX座標およびZ座標のみが、ネットワークを介してのみ格納または伝送され得ることが分かる。経路がそのような区分的セグメントへ分解され得ると仮定すると、経路の区分的線形セクション当たり1バイトまたは2バイトのみで経路を完全に記述することが可能である。これは、幾多の例の中でもとりわけ、(例えば、自律走行車両による、)そのような経路データの高速な伝送および処理を支援し得る。
【0173】
図37は、LiDARまたは他の高価な手段を使用して正確な測定を行う代わりに高品質のクラウドソーシングされたマップを生成すべく、埋め込みデバイスからの3Dボリュメトリック測定値または単純な2D測定値のいずれかをいくつかの実施形態に従ってどのように数学的な手段により集約できるかを示す。提案されるシステムでは、複数の埋め込みデバイス3700、3701等が、中央サーバ3710へ伝送され得る測定値を取得できる様々なセンサを備え得る。サーバ上で動作するソフトウェアは、全ての測定値3702の集約を実行し、結果として生じる行列の非線形ソルバ3703による数値解決を実行して、非常に正確なマップを生成する。次に、このマップは、埋め込みデバイスへ再分配され得る。実際には、データ集約結果は、衛星3720、空中LiDAR調査3721および地上LiDAR測定3722からの高精度の調査データも含むことで、これらの高忠実度のデータセットが利用可能である、結果として生じるマップの精度を上げることができる。幾多の例示的な実装の中でもとりわけ、いくつかの実装では、マップおよび/または記録された測定値は、本明細書において説明するような形式のスパースボクセルデータ構造内に生成されるか、そのようなスパースボクセルデータ構造へ変換されるか、またはそうでなければ、そのようなスパースボクセルデータ構造を用いて表され得る。
【0174】
図38A、
図38Bおよび
図38Cは、いくつかの実施形態に従って、2D 2×2ビットマップ上の2D経路探索をどのように加速できるかを示す図である。動作の原理は、同一のグリッドセルのマップ上の点間に接続性が存在するように、xもしくはyのセルまたはxおよびyのセルの連続的な実行の値を全て1に設定しなければならないことである。故に、それらのセルから引き出されるビットの論理ANDをインスタンス化して、有効な経路が存在するかどうかについてグリッド内のビットマップを試験でき、N×Nグリッドを通る有効な各経路のために異なるANDゲートをインスタンス化できる。いくつかの事例において、このアプローチは、8×8の2Dグリッドでさえ34
4-1個の有効な経路を含み得るという点で、組み合わせの複雑さをもたらし得る。したがって、いくつかの改良された実装では、グリッドは、接続性について階層的に試験され得る2×2または4×4のタイルに縮小され得る。2×2のビットマップ3800は、b0、b1、b2およびb3という符号が付された4ビットを含む。この4ビットは、対応するラベル3801から3817まで、値0000から1111までを取り得る。これらのビットパターンの各々は、3821から3830までの符号が付された2×2グリッドの面間の様々なレベルの接続性を表す。例えば、2×2グリッド3800がビットマップ1010(3812)、1011(3813)、1110(3816)または1111(3817)を含む場合、3800におけるx0とy0との間の垂直接続性を示す3821またはv0はが存在する。表3818の行1に示されるような、3800における2入力論理ANDまたはb0およびb3は、2×2サブグリッドへ細分化されたグローバルグリッドを通じたグローバルな接続性を決定するために上位レベルのハードウェアまたはソフトウェア内で用いられ得る接続性マップにv0を生成する。グローバルマップがx軸またはy軸のいずれかに奇数のグリッドポイントを含む場合、最上位レベルグリッドでは、次に高い偶数のグリッドポイントへのパディングが必要になる(例えば、これにより、グローバルグリッド上のx軸および/またはy軸に1つのさらなるゼロの行を追加することが必要になる)。
図38Cはさらに、例示的な7×7のグリッド3850を示す。このグリッドは、ゼロで満たされたさらなる行3832および列3834を追加することによりどのように8×8へパディングするかを示す。他の技術(例えば、深さ優先検索、幅優先検索もしくはダイクストラのアルゴリズムまたは他のグラフベースのアプローチ)と比較して経路探索を高速化すべく、本例では、N×Nマップ3850を2×2マップまで漸進的にサブサンプリングし得る。例えば、この例では、3850におけるセルA、B、CおよびD等の内容をOR演算することにより、3840におけるセルWがポピュレートされる。結果として、3840における2×2のセルのビットは、3842におけるセルをポピュレートするためにOR演算される。経路探索に関して、アルゴリズムは、グリッド3842の最も小さい2×2表現から開始して、ビットの各々を試験する。3840における4×4グリッド(4つの2×2グリッドで構成される)のうち、2×2グリッド3842内の1ビットに対応する部分のみを接続性について試験する必要がある。なぜなら、ゼロビットは、対応する2×2グリッドセルが3840にないことを意味しているのが分かるからである。このアプローチは、3820における8×8グリッドの検索にも用いられ得る。例えば、3840におけるセルWがゼロを含む場合には、3820等におけるABCDに経路がないことが分かる。このアプローチでは、A*、ダイクストラ、DFS、BFSまたはそれらの変形例かどうかにかかわらず用いられるグラフ検索アルゴリズムから分岐を枝刈りする。これに加え、2×2編成のハードウェア基本経路ファインダ3818を用いると、関連付けられた計算がさらに制限され得る。実際には、3840および3842と同じ配置の5個の2×2ハードウェアブロックを用いて4×4の基本ハードウェア要素が構成されることで、実行する必要があるグラフ検索の量がさらに制約され得る。さらに、潜在的にいずれのN×Nトポロジでも3842、3840、3800等と同じ配置を有する21個の2×2HWブロック(3818)で、8×8ハードウェアベースの検索エンジンが構成され得る。
【0175】
図39は、いくつかの実施形態に従って、提案されるボリュメトリックデータ構造を用いてどのように衝突検出を加速できるかを示す簡略ブロックダイアグラムである。ジオメトリの3DのN×N×Nマップは、最も低い詳細レベル(LoD)の2×2×2ボリューム3902、次に高い4×4×4ボリューム3901、8×8×8ボリューム3900等、最大でN×N×Nから成るピラミッドへサブサンプリングされ得る。GPSなどの位置特定手段を介して、または3Dマップからの再位置特定を介して、3D空間内でのドローン、車両またはロボット3905の位置が既知である場合、ドローン/ロボットのx位置、y位置およびz位置を適切にスケーリングすること(関連する回数2でそれらを除算すること)と、ジオメトリが存在しているかについて3902にクエリすること(例えば、対応するビットマップビットが可能な衝突を示すものであるかどうかをチェックすること)とにより、関連する2×2×2サブボリュームの象限にジオメトリが存在しているか否かを試験するために、この位置は、速やかに用いられ得る。可能な衝突が存在する(例えば、「1」が見つかった)場合には、ボリューム3901、3900等においてさらなるチェックを実行することで、ドローン/ロボットが移動できるか否かを確認し得る。ただし、3902におけるボクセルが空いている(例えば、「0」)場合には、ロボット/ドローンは、自由空間と同じように解釈して方向制御を操作することで、マップの大部分を自由に動くことができる。
【0176】
本明細書において説明および図示されているシステムおよび解決手段のうちのいくつかは、複数の要素を含むか、または複数の要素に関連付けられるものとして説明されているが、明示的に図示または説明されている全ての要素が、本開示の代替的な実装の各々において利用され得るわけではない。さらに、本明細書において説明する要素のうちの1つまたは複数は、システムの外部に位置し得るが、他の事例では、説明される他の要素および図示される実装において説明されない他の要素のうちの1つまたは複数の内部に、またはそれらのうちの1つまたは複数の一部として、特定の要素が含まれ得る。さらに、特定の要素は、他のコンポーネントと組み合わされ得るだけでなく、本明細書において説明する目的に加え、代替的な目的またはさらなる目的でも用いられ得る。
【0177】
さらに、上で提示した例は、特定の原理および特徴を示す目的で提供されているに過ぎない非限定的な例であり、本明細書において説明する概念の潜在的な実施形態を必ずしも限定または制約するものではないことを理解されたい。例えば、本明細書において説明するコンポーネントの様々な実装を通じて実現される組み合わせを含む、本明細書において説明する特徴およびコンポーネントの様々な組み合わせを利用して、様々な異なる実施形態を実現できる。他の実装、特徴および詳細が、本明細書の内容から理解されるはずである。
【0178】
図40から
図45は、本明細書において開示される実施形態に従って用いられ得る例示的なコンピュータアーキテクチャのブロックダイアグラムである。実際には、本明細書において説明するシステムのコンピューティングデバイス、プロセッサならびに他のロジックおよび回路は、そのような機能を実装するための機能ならびにサポートソフトウェアおよび/またはハードウェア回路の全部または一部を組み込み得る。さらに、プロセッサおよびコンピューティングシステム用の、当技術分野において知られている他のコンピュータアーキテクチャ設計も、ここで示される例以外でも用いられ得る。概して、本明細書において開示される実施形態のための適切なコンピュータアーキテクチャは、限定されるわけではないが、
図40から
図45に示される構成を含み得る。
【0179】
図40は、それぞれのゲートウェイへのリンクを通じて結合されるそれぞれのモノのインターネット(IoT)ネットワーク用の例示的なドメイントポロジを示す。モノのインターネット(IoT)は、多数のコンピューティングデバイスが互いにかつインターネットに相互接続されることで、機能およびデータの獲得を非常に低いレベルで提供する概念である。したがって、本明細書において用いられる場合、IoTデバイスは、とりわけ他のIoTデバイス、およびインターネットなどのより広いネットワークと通信して感知または制御などの機能を実行する半自律デバイスを含み得る。そのようなIoTデバイスは、上で紹介したようなハッシュテーブルを実装および使用するためのロジックおよびメモリを備え得る。
【0180】
IoTデバイスは、メモリ、サイズまたは機能が制限されているので、より少数のより大きいデバイスと同様のコストでより多数を配置できることが多い。ただし、IoTデバイスは、スマートフォン、ラップトップ、タブレットもしくはPCまたは他のより大きいデバイスであってよい。さらに、IoTデバイスは、スマートフォンまたは他のコンピューティングデバイス上のアプリケーションなどの仮想デバイスであってよい。IoTデバイスは、データの格納および処理の制御等のために他のIoTデバイスおよびクラウドアプリケーションにIoTデバイスを結合するために用いられるIoTゲートウェイを含み得る。
【0181】
IoTデバイスのネットワークは、例えば、配水システム、配電システム、パイプライン制御システム、プラント制御システム、照明スイッチ、サーモスタット、ロック、カメラ、アラームおよび動きセンサ等、商用および家庭用の自動化デバイスを含み得る。IoTデバイスは、遠隔コンピュータ、サーバおよび他のシステムを通じて、例えば、制御システムまたはアクセスデータへアクセス可能であってよい。
【0182】
インターネットおよび同様のネットワークの将来の成長には、非常に多数のIoTデバイスが関与し得る。したがって、本明細書に記載する技術の文脈において、そのような将来のネットワーキングのための多くのイノベーションが、これらの層の全てが妨げられずに成長し、アクセス可能な接続されたリソースを発見および作成し、接続されたリソースを非表示にして区分する能力をサポートする必要性に対処することになる。任意の数のネットワークプロトコルおよび通信規格が用いられてよく、各プロトコルおよび各規格は、特定の目的に対処するように設計される。さらに、プロトコルは、位置、時間または空間にかかわらず動作する、人間がアクセス可能なサービスをサポートする仕組みの一部である。イノベーションは、サービス供給ならびにハードウェアおよびソフトウェアなどの関連付けられたインフラストラクチャと、セキュリティ強化と、サービスレベルおよびサービス供給契約において指定されるサービス品質(QoS)条件に基づくサービスの提供とを含む。理解されるように、
図40および
図41において紹介するもののようなIoTデバイスおよびネットワークを用いると、有線技術と無線技術との組み合わせを含む接続性の異種ネットワークにおいて、多くの新しい課題が生じる。
【0183】
図40は、特に、IoTデバイス4004を備える多くのモノのインターネット(IoT)ネットワークに用いられ得るドメイントポロジの簡略図面を提供する。IoTネットワーク4056、4058、4060、4062は、バックボーンリンク4002を通じてそれぞれのゲートウェイ4054に結合される。例えば、多くのIoTデバイス4004が、ゲートウェイ4054と通信してよく、ゲートウェイ4054を通じて互いに通信してよい。図面を簡略化するために、全てのIoTデバイス4004または通信リンク(例えば、リンク4016、4022、4028または4032)に符号が付されているわけではない。バックボーンリンク4002は、光ネットワークを含む任意の数の有線技術または無線技術を含んでよく、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)またはインターネットの一部であってよい。さらに、そのような通信リンクにより、様々なデバイスの相互接続を容易にする多重化/多重分離コンポーネントの使用を含む、IoTデバイス4004およびゲートウェイ4054の両方の間の光信号経路が容易になる。
【0184】
ネットワークトポロジは、Bluetooth(登録商標)Low Energy(BLE)リンク4022を用いるネットワーク4056を備えるメッシュネットワークなど、任意の数の種類のIoTネットワークを含み得る。存在し得る他の種類のIoTネットワークは、IEEE802.11(Wi-Fi(登録商標))リンク4028を通じてIoTデバイス4004と通信するために用いられる無線ローカルエリアネットワーク(WLAN)ネットワーク4058、LTE/LTE-A(4G)または5Gセルラネットワークを通じてIoTデバイス4004と通信するために用いられるセルラネットワーク4060、例えば、LoRa Allianceにより公表されるLoRaWAN仕様と互換性があるLPWAネットワークなどの低電力ワイドエリア(LPWA)ネットワーク4062、または、インターネットエンジニアリングタスクフォース(IETF)により公表される仕様と互換性があるIPv6 over Low Power Wide-Area Network(LPWAN)ネットワークを含む。さらに、それぞれのIoTネットワークは、LTEセルラリンク、LPWAリンク、またはZigbee(登録商標)のようなIEEE802.15.4規格に基づくリンクなど、任意の数の通信リンクを用いて、外部ネットワークプロバイダ(例えば、ティア2プロバイダまたはティア3プロバイダ)と通信し得る。また、それぞれのIoTネットワークは、制約付きアプリケーションプロトコル(CoAP)などの様々なネットワークプロトコルおよびインターネットアプリケーションプロトコルを用いて動作し得る。また、それぞれのIoTネットワークは、リンクされたデバイスおよびネットワークのクラスタツリーを形成するリンクのチェーンを提供するコーディネータデバイスと統合され得る。
【0185】
これらのIoTネットワークの各々は、本明細書において説明するもののような新しい技術的特徴の機会を提供し得る。改良された技術およびネットワークにより、IoTネットワークをフォグデバイスまたはシステムとして用いることを含め、デバイスおよびネットワークの指数的な成長が可能になり得る。そのような改良された技術の使用が増えるにつれて、IoTネットワークは、人間が直接介入する必要なく、自己管理、機能進化およびコラボレーションのために開発されるようになり得る。改良された技術は、IoTネットワークが集中制御システムなしで機能することさえ可能にし得る。したがって、本明細書において説明する改良された技術は、現在の実装をはるかに越えてネットワーク管理および動作機能を自動化および強化するために用いられ得る。
【0186】
例において、例えばバックボーンリンク4002を介したIoTデバイス4004間の通信は、認証、許可および課金(AAA)のための分散化システムにより保護され得る。分散化AAAシステムでは、分散型の決済システム、クレジットシステム、監査システム、承認システムおよび認証システムが、相互接続された異種ネットワークインフラストラクチャにわたって実装され得る。これにより、システムおよびネットワークを自律的運用へ移行させることが可能になる。これらの種類の自律的運用では、機械が人的リソースの契約を締結し、他の機械ネットワークとのパートナシップを交渉することさえあり得る。これにより、相互の目的と、概説され計画されたサービスレベル契約に対するバランスの取れたサービス供給との実現が可能になるだけでなく、計量、測定、トレーサビリティおよび追跡可能性を提供する解決手段が実現され得る。新しいサプライチェーンの構造および方法を創出することにより、人間が一切関与することなく、多数のサービスを創出し、価値を掘り起こし、崩壊させることが可能になり得る。
【0187】
そのようなIoTネットワークは、音、光、電子トラフィック、顔およびパターンの認識、匂い、振動などの感知技術をIoTデバイス間の自律組織へ統合することにより、さらに強化され得る。感知システムの統合により、契約上のサービス目的に対する体系的かつ自律的な通信およびサービス供給調整、オーケストレーション、ならびにリソースのサービス品質(QoS)ベースのスウォーミングおよび融合が可能になり得る。ネットワークベースのリソース処理の個々の例のうちのいくつかは、以下のものを含む。
【0188】
例えば、メッシュネットワーク4056は、インラインデータから情報への変換を実行するシステムにより強化され得る。例えば、マルチリンクネットワークを含む処理リソースの自己形成チェーンは、効率的な方式での未加工データの情報への変換ならびに資産とリソースとを区別する能力および各々の関連付けられた管理を分散させ得る。さらに、インフラストラクチャならびにリソースベースの信頼インデックスおよびサービスインデックスの適切なコンポーネントを挿入することで、データの統合性、品質、確実性を向上させ、データの信頼性の測定基準を供給し得る。
【0189】
例えば、WLANネットワーク4058は、規格の変換を実行するシステムを用いてマルチ標準接続性を提供することにより、異なるプロトコルを用いるIoTデバイス4004が通信することを可能にし得る。さらなるシステムが、可視インターネットリソースと非表示インターネットリソースとを含むマルチ規格インフラストラクチャにわたってシームレスな相互接続性を提供し得る。
【0190】
例えば、セルラネットワーク4060内の通信は、データをオフロードするか、通信をより多くの遠隔デバイスへ拡張するか、またはその両方を行うシステムにより強化され得る。LPWAネットワーク4062は、非インターネットプロトコル(IP)からIPへの相互接続と、アドレス指定と、ルーティングとを実行するシステムを含み得る。さらに、IoTデバイス4004の各々は、そのデバイスとのワイドエリア通信のための適切なトランシーバを含み得る。さらに、各IoTデバイス4004は、さらなるプロトコルおよび周波数を用いる通信のための他のトランシーバを含み得る。これについては、
図42および
図43に示されるIoT処理デバイスの通信環境およびハードウェアに関してさらに記載する。
【0191】
最後に、IoTデバイスのクラスタは、他のIoTデバイスとだけでなく、クラウドネットワークとも通信するように備え付けられ得る。これにより、IoTデバイスがデバイス間にアドホックネットワークを形成することが可能になり、それらが、フォグデバイスと称され得る単一のデバイスとして機能することが可能になり得る。この構成については、以下の
図41に関してさらに記載する。
【0192】
図41は、クラウドコンピューティングネットワークのエッジにおいてフォグデバイスとして動作するIoTデバイス(デバイス4102)のメッシュネットワークと通信しているクラウドコンピューティングネットワークを示す。IoTデバイスのメッシュネットワークは、クラウド4100のエッジにおいて動作するフォグ4120と称され得る。図を簡略化するために、全てのIoTデバイス4102に符号が付されているわけではない。
【0193】
フォグ4120は、多くのIoTデバイス4102が、例えば、無線リンク4122により互いに通信している、大規模に相互接続されたネットワークであるとみなされ得る。例として、この相互接続されたネットワークは、Open Connectivity Foundation(商標)(OCF)により公表される相互接続仕様を用いて促進され得る。この規格により、デバイスが、互いを発見し、相互接続のための通信を確立することが可能になる。例えば、最適化されたリンク状態ルーティング(OLSR)プロトコル、モバイルアドホックネットワーキング(B.A.T.M.A.N.)ルーティングプロトコルへのより良いアプローチまたはOMA軽量M2M(LWM2M)プロトコルをとりわけ含む他の相互接続プロトコルも用いられ得る。
【0194】
この例では、ゲートウェイ4104、データアグリゲータ4126およびセンサ4128という3種類のIoTデバイス4102が示されているが、IoTデバイス4102と機能との任意の組み合わせが用いられ得る。ゲートウェイ4104は、クラウド4100とフォグ4120との間の通信を提供するエッジデバイスであってよく、また、例えば、動きデータ、フローデータおよび温度データ等、センサ4128から取得されるデータのためのバックエンド処理機能を提供し得る。データアグリゲータ4126は、任意の数のセンサ4128からデータを収集し、解析のためのバックエンド処理機能を実行し得る。解析結果、未加工データまたはその両方は、ゲートウェイ4104を通じてクラウド4100に渡され得る。センサ4128は、例えば、データの収集およびデータの処理の両方を行うことができる完全なIoTデバイス4102であってよい。いくつかの場合において、センサ4128は、例えば、データを収集し、データアグリゲータ4126またはゲートウェイ4104によるデータの処理を可能にすることなど、機能がより制限され得る。
【0195】
任意のIoTデバイス4102からの通信は、IoTデバイス4102のいずれかの間の簡便な経路(例えば、最も簡便な経路)に沿って渡され、ゲートウェイ4104に到達し得る。これらのネットワークでは、相互接続の数により実質的な冗長性が提供されるので、多くのIoTデバイス4102が失われた場合でさえ通信を維持することが可能になる。さらに、メッシュネットワークを用いると、非常に低電力であるか、またはインフラストラクチャから離れた所に位置するIoTデバイス4102を用いることが可能になり得る。なぜなら、別のIoTデバイス4102に接続する範囲が、ゲートウェイ4104に接続する範囲よりもはるかに小さいことがあるからである。
【0196】
これらのIoTデバイス4102から提供されるフォグ4120は、クラウド4100のエッジに位置する単一のデバイスとしての、例えば、フォグデバイスとして、サーバ4106などのクラウド4100内のデバイスに提示され得る。この例では、フォグデバイスから入ってくるアラートは、フォグ4120内の特定のIoTデバイス4102から入ってくるものと識別されることなく送信され得る。このように、フォグ4120は、とりわけ、データ解析、データ集約および機械学習などの処理またはデータ多用タスクを実行するための計算リソースおよび格納リソースを提供する分散プラットフォームとみなされ得る。
【0197】
いくつかの例では、IoTデバイス4102は、命令型プログラミングスタイルを用いて構成されてよく、例えば、各IoTデバイス4102は、特定の機能および通信パートナを有する。ただし、フォグデバイスを形成するIoTデバイス4102は、宣言型プログラミングスタイルで構成されるので、IoTデバイス4102が、例えば、条件、クエリおよびデバイス故障に応答して必要なリソースを決定することなど、演算および通信を再構成することが可能になり得る。例として、IoTデバイス4102により監視される機器のサブセットの動作についてのサーバ4106に位置するユーザからのクエリの結果として、フォグ4120デバイスは、クエリに応答するために必要な特定のセンサ4128などのIoTデバイス4102を選択し得る。次に、これらのセンサ4128からのデータは、クエリに応答するためにフォグ4120デバイスによりサーバ4106へ送信される前に、センサ4128、データアグリゲータ4126またはゲートウェイ4104の任意の組み合わせにより集約および解析され得る。この例では、フォグ4120内のIoTデバイス4102は、例えば、流量センサまたは温度センサからのデータを追加するなど、クエリに基づいて用いられるセンサ4128を選択し得る。さらに、IoTデバイス4102のうちのいくつかが動作可能でない場合において、フォグ4120デバイス内の他のIoTデバイス4102が、利用可能であるときは類似データを提供し得る。
【0198】
他の例では、上で説明した動作および機能は、電子処理システムの例示的な形態のIoTデバイス機械により具現化されてよく、その内部では、例示的な実施形態に従って、命令のセットまたはシーケンスを実行することにより、電子処理システムに、本明細書に記載する方法のうちのいずれか1つを実行させ得る。この機械は、パーソナルコンピュータ(PC)、タブレットPC、パーソナルデジタルアシスタント(PDA(登録商標))、携帯電話またはスマートフォンの態様により具現化される機械、または、機械が取る動作を指定する命令(シーケンシャルまたはその他)を実行できる任意の機械を含む、IoTデバイスまたはIoTゲートウェイであってよい。さらに、上記の例では単一の機械のみが図示され言及され得るが、そのような機械は、本明細書に記載する方法のうちのいずれか1つまたは複数を実行するための命令のセット(または複数のセット)を個々にまたは共同で実行する機械の任意の集合体を含むとも解釈されるものとする。さらに、プロセッサベースのシステムに対するこれらの例および同様の例は、本明細書に記載する方法のうちのいずれか1つまたは複数を実行するための命令を個々にまたは共同で実行するよう、プロセッサ(例えば、コンピュータ)により制御されるかまたは動作させられる1つまたは複数の機械の任意のセットを含むと解釈されるものとする。いくつかの実装において、1つまたはそれよりも多い複数のデバイスが、協調して動作することで、機能を実装し、本明細書において説明するタスクを実行し得る。いくつかの場合において、1つまたは複数のホストデバイスが、データを供給するか、命令を提供するか、結果を集約するか、またはそうでなければ、複数のデバイスにより提供される共同の動作および機能を促進し得る。機能は、単一のデバイスにより実装された場合、デバイスに対してローカルな機能とみなされ得るが、幾多の例示的な実装の中でもとりわけ、単一の機械として動作する複数のデバイスの実装では、機能は、デバイスに対して集合的にローカルとみなされることがあり、デバイスのこの集合体は、他の遠隔機械(単一のデバイスまたは集合的なデバイスとして実装される)により提供される結果を提供または消費し得る。
【0199】
例えば、
図42は、多くのモノのインターネット(IoT)デバイスと通信しているクラウドコンピューティングネットワークまたはクラウド4200の図面を示す。クラウド4200は、インターネットを表してもよく、企業のプロプライエタリネットワークなどのローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)であってもよい。IoTデバイスは、様々な組み合わせでグループ化された任意の数の異なる種類のデバイスを含み得る。例えば、交通制御グループ4206が、都市の街路に沿ったIoTデバイスを含み得る。これらのIoTデバイスは、停止信号、交通流量モニタ、カメラおよび気象センサ等を含み得る。交通制御グループ4206または他のサブグループは、例えばLPWAリンクおよび光リンク等の有線または無線のリンク4208を通じてクラウド4200と通信していてよい。さらに、有線または無線のサブネットワーク4212により、IoTデバイスが、例えば、ローカルエリアネットワークおよび無線ローカルエリアネットワーク等を通じて互いに通信することが可能になり得る。IoTデバイスは、ゲートウェイ4210または4228などの別のデバイスを用いて、クラウド4200などの遠隔位置と通信し得る。また、IoTデバイスは、1つまたは複数のサーバ4230を用いて、クラウド4200またはゲートウェイ4210との通信を容易にし得る。例えば、1つまたは複数のサーバ4230は、ローカルエリアネットワーク間のローカルエッジクラウドまたはフォグの実装をサポートするための中間ネットワークノードとして動作し得る。さらに、図示されているゲートウェイ4228は、クラウドからゲートウェイへ-ゲートウェイから多くのエッジデバイスへという構成において、例えば、様々なIoTデバイス4214、4220、4224がクラウド4200内のリソースの割り当ておよび使用に対して制約されているかまたは動的である状態で、動作し得る。
【0200】
IoTデバイスの他の例示的なグループは、幾多の中でもとりわけ、遠隔気象台4214、ローカル情報端末4216、アラームシステム4218、現金自動預け払い機4220、アラームパネル4222、または緊急車両4224もしくは他の車両4226などの移動車両を含み得る。これらのIoTデバイスの各々は、他のIoTデバイス、サーバ4204、別のIoTフォグデバイスもしくはシステム(図示されていないが、
図41に示されている)、またはそれらの組み合わせと通信していてよい。IoTデバイスのグループは、様々な住宅環境、商業環境および工業環境(プライベートな環境またはパブリックな環境の両方の含む)に展開され得る。
【0201】
図42から分かるように、多数のIoTデバイスがクラウド4200を通じて通信していることがある。これにより、異なるIoTデバイスが他のデバイスに対して自律的に情報を要求または提供することが可能になり得る。例えば、IoTデバイスのグループ(例えば、交通制御グループ4206)は、人間が介入することなく予報を提供し得る遠隔気象台4214のグループからの現在の天気予報を要求し得る。さらに、緊急車両4224は、強盗が進行中であることについて、現金自動預け払い機4220にアラートされ得る。緊急車両4224は、現金自動預け払い機4220へ向かって進んでいるとき、交通制御グループ4206にアクセスして、その位置へのクリアランスを要求し得る。このクリアランスは、例えば、緊急車両4224が妨げられずに交差点にアクセスするのに十分間に合うように交差点での交差交通を阻止するために信号灯が赤に変わることによるものである。
【0202】
遠隔気象台4214または交通制御グループ4206などのIoTデバイスのクラスタは、他のIoTデバイスとだけでなく、クラウド4200とも通信するように備え付けられ得る。これにより、IoTデバイスがデバイス間にアドホックネットワークを形成することが可能になり、(例えば、
図41を参照して上で説明したように)フォグデバイスまたはシステムと称され得る単一のデバイスとして機能することが可能になり得る。
【0203】
図43は、本明細書において説明する技術を実装するためにIoTデバイス4350内に存在し得るコンポーネントの例のブロックダイアグラムである。IoTデバイス4350は、この例に示されているか、または上記の開示において言及されているコンポーネントの任意の組み合わせを含み得る。コンポーネントは、IC、その一部、ディスクリート電子デバイス、もしくは他のモジュール、ロジック、ハードウェア、ソフトウェア、ファームウェア、またはIoTデバイス4350内で適合させられたそれらの組み合わせとして、または、より大きいシステムのシャーシ内に別の方法で組み込まれるコンポーネントとして実装され得る。さらに、
図43のブロックダイアグラムは、IoTデバイス4350のコンポーネントの高レベル図を示すよう意図されている。ただし、他の実装では、示されているコンポーネントのうちのいくつかが省略されてよく、さらなるコンポーネントが存在してよく、示されているコンポーネントの異なる配置が行われてよい。
【0204】
IoTデバイス4350は、プロセッサ4352を含み得る。プロセッサ4352は、マイクロプロセッサ、マルチコアプロセッサ、マルチスレッドプロセッサ、超低電圧プロセッサ、埋め込みプロセッサまたは他の既知処理要素であってよい。プロセッサ4352は、プロセッサ4352および他のコンポーネントが、単一の集積回路内に、またはIntel(登録商標)のEdison(商標)またはGalileo(商標)SoC基板などの単一のパッケージ内に形成されるシステムオンチップ(SoC)の一部であってよい。例として、プロセッサ4352は、Intel(登録商標)Architecture Core(商標)ベースのプロセッサ、例えば、Quark(商標)、Atom(商標)、i3、i5、i7もしくはMCUクラスのプロセッサ、または、カリフォルニア州サンタクララのIntel(登録商標)Corporationから入手可能な別のそのようなプロセッサを含み得る。ただし、カリフォルニア州サニーベールのAdvanced Micro Devices, Inc.(AMD)から入手可能なもの、カリフォルニア州サニーベールのMIPS Technologies, Inc.のMIPベースの設計、ARM Holdings, Ltd.もしくはその顧客またはそのライセンシもしくは採用者からライセンスされたARMベースの設計など、任意の数の他のプロセッサが用いられ得る。これらのプロセッサは、Apple(登録商標)Inc.のA5-A10プロセッサ、Qualcomm(登録商標)Technologies, Inc.のSnapdragon(商標)プロセッサ、またはTexas Instruments, Inc.のOMAP(商標)プロセッサなどのユニットを含み得る。
【0205】
プロセッサ4352は、相互接続4356(例えば、バス)を介してシステムメモリ4354と通信し得る。任意の数のメモリデバイスを用いて、所与の量のシステムメモリを提供し得る。例として、メモリは、DDRまたはモバイルDDR規格(例えば、LPDDR、LPDDR2、LPDDR3またはLPDDR4)などの電子機器技術評議会(JEDEC)の設計に従ったランダムアクセスメモリ(RAM)であってよい。様々な実装において、個々のメモリデバイスは、シングルダイパッケージ(SDP)、デュアルダイパッケージ(DDP)またはクワッドダイパッケージ(Q17P)など、任意の数の異なるパッケージタイプのものであってよい。いくつかの例では、これらのデバイスをマザーボード上へ直接はんだ付けしてより低いプロファイルの解決手段を提供し得るが、他の例では、デバイスは、結果として所与のコネクタによりマザーボードに結合する1つまたは複数のメモリモジュールとして構成される。他の種類のメモリモジュール、例えば、限定されるわけではないが、microDIMMまたはMiniDIMMを含む、異なる種類のデュアルインラインメモリモジュール(DIMM)など、任意の数の他のメモリ実装が用いられ得る。
【0206】
例えば、データ、アプリケーションおよびオペレーティングシステム等、情報の永続的なストレージを提供するために、ストレージ4358は、相互接続4356を介してプロセッサ4352に結合することもあり得る。例において、ストレージ4358は、ソリッドステートディスクドライブ(SSDD)を介して実装され得る。ストレージ4358のために用いられ得る他のデバイスは、例えば、SDカード、microSDカードおよびxDピクチャカード等のフラッシュメモリカードと、USBフラッシュドライブとを含む。低電力の実装では、ストレージ4358は、プロセッサ4352に関連付けられたオンダイメモリまたはレジスタであってよい。ただし、いくつかの例では、ストレージ4358は、マイクロハードディスクドライブ(HDD)を用いて実装され得る。さらに、とりわけ、抵抗変化メモリ、相変化メモリ、ホログラフィックメモリまたは化学メモリなど、説明する技術に加えて、またはそれらの代わりに、任意の数の新しい技術がストレージ4358に用いられ得る。
【0207】
これらのコンポーネントは、相互接続4356を介して通信し得る。相互接続4356は、業界標準アーキテクチャ(ISA)、拡張ISA(EISA)、周辺コンポーネント相互接続(PCI)、周辺コンポーネント相互接続拡張(PCIx)、PCIエクスプレス(PCIe)を含む任意の数の他の技術、または任意の数の技術を含み得る。相互接続4356は、例えば、SoCベースのシステムにおいて用いられるプロプライエタリバスであってよい。とりわけ、I2Cインタフェース、SPIインタフェース、ポイントツーポイントインタフェースおよび電力バスなどの他のバスシステムが含まれ得る。
【0208】
相互接続4356は、他のメッシュデバイス4364との通信のために、プロセッサ4352をメッシュトランシーバ4362に結合させ得る。メッシュトランシーバ4362は、とりわけ、Bluetooth(登録商標)Special Interest Groupにより定義されているBluetooth(登録商標)Low Energy(BLE)規格またはZigbee(登録商標)規格を用いた、IEEE802.15.4規格に基づく2.4ギガヘルツ(GHz)伝送など、任意の数の周波数およびプロトコルを用い得る。特定の無線通信プロトコル用に構成された任意の数の無線機が、メッシュデバイス4364への接続のために用いられ得る。例えば、WLANユニットが、米国電気電子技術者協会(IEEE)802.11規格に従ってWi-Fi通信を実装するために用いられ得る。加えて、例えば、セルラまたは他の無線ワイドエリアプロトコルによる無線広域通信が、WWANユニットを介して行われ得る。
【0209】
メッシュトランシーバ4362は、異なる範囲での通信のために、複数の規格または無線機を用いて通信し得る。例えば、IoTデバイス4350は、BLEまたは別の低電力無線に基づいてローカルトランシーバを用いて、例えば、約10メートル以内の近接デバイスと通信することで、電力を節約し得る。例えば、約50メートル以内の、より遠いメッシュデバイス4364に、Zigbeeまたは他の中間電力無線機を介して到達し得る。両方の通信技術は、異なる電力レベルで単一の無線を介して行われてもよく、例えば、BLEを用いるローカルトランシーバなどの別個のトランシーバと、Zigbeeを用いる別個のメッシュトランシーバとを介して行われてもよい。
【0210】
ローカルエリアネットワークプロトコルまたはワイドエリアネットワークプロトコルを介してクラウド4300内のデバイスまたはサービスと通信するために、無線ネットワークトランシーバ4366が含まれ得る。無線ネットワークトランシーバ4366は、とりわけ、IEEE802.15.4規格またはIEEE802.15.4g規格に従ったLPWAトランシーバであってよい。IoTデバイス4350は、SemtechおよびLoRa Allianceにより開発されたLoRaWAN(商標)(長距離ワイドエリアネットワーク)を用いて、広域にわたって通信し得る。本明細書において説明する技術は、これらの技術に限定されないが、Sigfoxなどの長距離低帯域幅通信を実装する任意の数の他のクラウドトランシーバ、および他の技術と共に用いられ得る。さらに、IEEE802.15.4e仕様において説明されるタイムスロットチャネルホッピングなどの他の通信技術が用いられ得る。
【0211】
本明細書において説明するように、メッシュトランシーバ4362および無線ネットワークトランシーバ4366について言及されたシステムに加え、任意の数の他の無線通信およびプロトコルが用いられ得る。例えば、無線トランシーバ4362および4366は、高速通信を実装するためにスペクトル拡散(SPA/SAS)通信を用いるLTEまたは他のセルラトランシーバを含み得る。さらに、ネットワーク通信の提供および中速通信のためのWi-Fi(登録商標)ネットワークなど、任意の数の他のプロトコルが用いられ得る。
【0212】
無線トランシーバ4362および4366は、任意の数の3GPP(登録商標)(第3世代パートナシッププロジェクト)仕様、特に、ロングタームエボリューション(LTE)、ロングタームエボリューションアドバンスト(LTE-A)およびロングタームエボリューションアドバンストプロ(LTE-A Pro)と互換性がある無線機を含み得る。なお、任意の数の他の固定通信、モバイル通信または衛星通信の技術および規格と互換性がある無線機が選択され得る。これらは、例えば、任意のセルラ広域無線通信技術を含み得る。セルラ広域無線通信技術は、例えば、第5世代(5G)通信システム、グローバルシステムフォーモバイルコミュニケーションズ(GSM(登録商標))無線通信技術、汎用パケット無線サービス(GPRS)無線通信技術、またはGSM進化型高速データレート(EDGE)無線通信技術、UMTS(ユニバーサル移動体通信システム)通信技術を含み得る。上に列挙した規格に加え、例えば、とりわけ、ITU(国際電気通信連合)またはETSI(欧州電気通信標準化機構)により発行される規格に準拠する無線機を含む無線ネットワークトランシーバ4366のために、任意の数の衛星アップリンク技術が用いられ得る。したがって、本明細書において提供される例は、既存のものであり、かつ、まだ定式化されていない様々な他の通信技術に適用可能であると理解される。
【0213】
クラウド4300、またはメッシュデバイス4364などの他のデバイスに有線通信を提供するために、ネットワークインタフェースコントローラ(NIC)4368が含まれ得る。有線通信は、Ethernet(登録商標)接続を提供してもよく、幾多の中でもとりわけ、コントローラエリアネットワーク(CAN)、ローカル相互接続ネットワーク(LIN)、DeviceNet、ControlNet、Data Highway+、PROFIBUSまたはPROFINETなどの他の種類のネットワークに基づいていてもよい。第2のネットワーク、例えば、Ethernetを介してクラウドに通信を提供するNIC4368、および別の種類のネットワークを介して他のデバイスに通信を提供する第2のNIC4368への接続を可能にするために、さらなるNIC4368が含まれ得る。
【0214】
相互接続4356は、外部のデバイスまたはサブシステムに接続するために用いられる外部インタフェース4370にプロセッサ4352を結合し得る。外部デバイスは、例えば、加速度計、レベルセンサ、流量センサ、光学光センサ、カメラセンサ、温度センサ、全地球測位システム(GPS)センサ、圧力センサおよび気圧センサ等のセンサ4372を含み得る。外部インタフェース4370はさらに、例えば、電力スイッチ、バルブアクチュエータ、可聴音生成器、視覚警告デバイス等のアクチュエータ4374にIoTデバイス4350を接続するために用いられ得る。
【0215】
いくつかのオプションの例では、様々な入力/出力(I/O)デバイスが、IoTデバイス4350内に存在し得るか、またはIoTデバイス4350に接続され得る。例えば、センサの読み取り値またはアクチュエータの位置などの情報を示すために、ディスプレイまたは他の出力デバイス4384が含まれ得る。入力を受け入れるために、タッチスクリーンまたはキーパッドなどの入力デバイス4386が含まれ得る。出力デバイス4384は、任意の数の形態の聴覚表示または視覚表示を含み得る。これらの表示は、バイナリステータスインジケータ(例えば、LED)および複数文字視覚出力などの単純な視覚出力、またはディスプレイ画面(例えば、LCD画面)などのより複雑な出力を含み、文字、グラフィックス、マルチメディアオブジェクト等の出力は、IoTデバイス4350の動作から生成されるか、または生じる。
【0216】
電池4376は、IoTデバイス4350に電力を供給し得るが、IoTデバイス4350が固定位置に装着されている例では、電力系統に結合された電源を有し得る。電池4376は、リチウムイオン電池、または、例えば、亜鉛-空気電池、アルミニウム-空気電池およびリチウム-空気電池等の金属-空気電池であってよい。
【0217】
IoTデバイス4350には、電池4376の充電状態(SoCh)を追跡するために、電池モニタ/充電器4378が含まれ得る。電池モニタ/充電器4378は、電池4376の他のパラメータを監視して、電池4376の健全度(SoH)および機能状態(SoF)などの故障予測を提供するために用いられ得る。電池モニタ/充電器4378は、Linear TechnologiesのLTC4020もしくはLTC2990、アリゾナ州フェニックスのON SemiconductorのADT7488Aまたはテキサス州ダラスのTexas InstrumentsのUCD90xxxファミリのICなどの電池監視集積回路を含み得る。電池モニタ/充電器4378は、相互接続4356を介して、電池4376に関する情報をプロセッサ4352に伝達し得る。電池モニタ/充電器4378は、プロセッサ4352が電池4376の電圧または電池4376からの電流を直接監視することを可能にするアナログ-デジタル(ADC)変換器も含み得る。電池のパラメータは、例えば、伝送周波数、メッシュネットワーク動作および感知周波数等、IoTデバイス4350が実行し得る動作を決定するために用いられ得る。
【0218】
電池4376を充電するために、発電ブロック4380、または電力系統に結合された他の電源が、電池モニタ/充電器4378と結合され得る。いくつかの例では、発電ブロック4380を無線電力レシーバに置き換えることで、無線で、例えば、IoTデバイス4350内のループアンテナを通じて、電力を取得し得る。電池モニタ/充電器4378には、とりわけ、カリフォルニア州ミルピタスのLinear TechnologiesのLTC4020チップなどの無線電池充電回路が含まれ得る。選ばれる特定の充電回路は、電池4376のサイズ、およびしたがって、必要とされる電流に依存する。充電は、とりわけ、Airfuel Allianceにより公表されるAirfuel規格、ワイヤレスパワーコンソーシアムにより公表されるQi無線充電基準またはAlliance for Wireless Powerにより公表されるRezence充電基準を用いて実行され得る。
【0219】
ストレージ4358は、本明細書において説明する技術を実装するためのソフトウェアコマンド、ファームウェアコマンドまたはハードウェアコマンドの形態の命令4382を含み得る。そのような命令4382がメモリ4354およびストレージ4358に含まれるコードブロックとして示されているが、コードブロックのいずれも、例えば、特定用途向け集積回路(ASIC)に組み込まれたハードワイヤード回路に置き換えられ得ることが理解され得る。
【0220】
例において、メモリ4354、ストレージ4358またはプロセッサ4352を介して提供される命令4382は、IoTデバイス4350内の電子的動作を実行するようプロセッサ4352に指示するためのコードを含む非一時的機械可読媒体4360として具現化され得る。プロセッサ4352は、相互接続4356を介して非一時的機械可読媒体4360にアクセスし得る。例えば、非一時的機械可読媒体4360は、
図43のストレージ4358について説明されているデバイスにより具現化されてもよく、光ディスク、フラッシュドライブまたは任意の数の他のハードウェアデバイスなどの特定のストレージユニットを含んでもよい。非一時的機械可読媒体4360は、例えば、上で示された動作および機能のフローチャートおよびブロックダイアグラムに関して説明したとおり、動作の特定のシーケンスまたはフローを実行するようプロセッサ4352に指示するための命令を含み得る。
【0221】
図44は、実施形態によるプロセッサの例示的な図である。プロセッサ4400は、上記実装に関連して用いられ得る種類のハードウェアデバイスの例である。プロセッサ4400は、マイクロプロセッサ、埋め込みプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、マルチコアプロセッサ、シングルコアプロセッサ、またはコードを実行するための他のデバイスなど、任意の種類のプロセッサであってよい。
図44にはプロセッサ4400が1つだけ示されているが、処理要素は代替的に、
図44に示されるプロセッサ4400を1つよりも多く含み得る。プロセッサ4400は、シングルスレッドコアであてもよく、少なくとも1つの実施形態では、コア当たり1つよりも多くのハードウェアスレッドコンテキスト(または「論理プロセッサ」)を含み得るという点で、マルチスレッドであってもよい。
【0222】
図44は、実施形態によるプロセッサ4400に結合されたメモリ4402も示す。メモリ4402は、既知であるか、またはそうでなければ当業者が利用可能な多種多様なメモリ(メモリ階層の様々な層を含む)のいずれかであってよい。そのようなメモリ要素は、限定されるわけではないが、ランダムアクセスメモリ(RAM)。リードオンリメモリ(ROM)、フィールドプログラマブルゲートアレイ(FPGA)の論理ブロック、消去可能プログラマブルリードオンリメモリ(EPROM)、電気的消去可能プログラマブルROM(EEPROM)を含み得る。
【0223】
プロセッサ4400は、本明細書において詳述するアルゴリズム、処理または動作に関連付けられた任意の種類の命令を実行できる。概して、プロセッサ4400は、要素または物品(例えば、データ)を1つの状態または状況から別の状態または状況へ変換できる。
【0224】
プロセッサ4400により実行される1つまたは複数の命令であり得るコード4404は、メモリ4402に格納されてもよく、ソフトウェア、ハードウェア、ファームウェアもしくはそれらの任意の適切な組み合わせに、または、適切である場合には特定の必要性に基づき、任意の他の内部もしくは外部のコンポーネント、デバイス、要素もしくは物体に格納されてもよい。一例において、プロセッサ4400は、コード4404により示される命令のプログラムシーケンスに従い得る。各命令は、フロント-エンドロジック4406に入り、1つまたは複数のデコーダ4408により処理される。デコーダは、その出力として、予め定義された形式の固定幅マイクロオペレーションなどのマイクロオペレーションを生成してもよく、元のコード命令を反映する他の命令、マイクロ命令または制御信号を生成してもよい。フロント-エンドロジック4406は、レジスタリネーミングロジック4410およびスケジューリングロジック4412も含む。これらのロジックは概して、リソースを割り当て、実行のために、命令に対応する動作をキューに入れる。
【0225】
プロセッサ4400は、実行ユニット4416a、4416b、4416nのセット等を有する実行ロジック4414も含み得る。いくつかの実施形態は、特定の機能または機能のセットに特化した多くの実行ユニットを含み得る。他の実施形態は、実行ユニットを1つだけ、または特定の機能を実行し得る実行ユニットを1つ含み得る。実行ロジック4414は、コード命令により指定される動作を実行する。
【0226】
コード命令により指定される動作の実行の完了後に、バックエンドロジック4418は、コード4404の命令をリタイアできる。一実施形態において、プロセッサ4400は、アウトオブオーダ実行を可能にするが、命令のインオーダリタイアメントを必要とする。リタイアメントロジック4420は、様々な既知の形態(例えば、リオーダバッファ等)を取り得る。このように、プロセッサ4400は、コード4404の実行中に、少なくとも、デコーダにより生成される出力と、レジスタリネーミングロジック4410により利用されるハードウェアレジスタおよびテーブルと、実行ロジック4414により修正される任意のレジスタ(図示されていない)とに関して変換される。
【0227】
図44には示されていないが、処理要素は、プロセッサ4400を有するチップ上に他の要素を含み得る。例えば、処理要素は、プロセッサ4400と共にメモリ制御ロジックを含み得る。処理要素は、I/O制御ロジックを含んでよく、および/またはメモリ制御ロジックと統合されたI/O制御ロジックを含んでよい。処理要素は、1つまたは複数のキャッシュも含み得る。いくつかの実施形態において、プロセッサ4400を有するチップ上には、不揮発性メモリ(フラッシュメモリまたはフューズなど)も含まれ得る。
【0228】
図45は、実施形態による、ポイントツーポイント(PtP)構成で配置されるコンピューティングシステム4500を示す。特に、
図45は、プロセッサ、メモリおよび入力/出力デバイスが多くのポイントツーポイントインタフェースにより相互接続されるシステムを示す。概して、本明細書において説明するコンピューティングシステムのうちの1つまたは複数は、コンピューティングシステム4500と同じ方式または同様の方式で構成され得る。
【0229】
プロセッサ4570および4580は各々、メモリ要素4532および4534と通信するための統合されたメモリコントローラロジック(MC)4572および4582も含み得る。代替的な実施形態において、メモリコントローラロジック4572および4582は、プロセッサ4570および4580とは別個のディスクリートロジックであってよい。メモリ要素4532および/または4534は、本明細書において概説する動作および機能の実現においてプロセッサ4570および4580により用いられる様々なデータを格納し得る。
【0230】
プロセッサ4570および4580は、他の図に関連して記載されるものなど、任意の種類のプロセッサであってよい。プロセッサ4570および4580は、ポイントツーポイントインタフェース回路4578および4588をそれぞれ用いて、ポイントツーポイント(PtP)インタフェース4550を介してデータを交換し得る。プロセッサ4570および4580は各々、ポイントツーポイントインタフェース回路4576、4586、4594および4598を用いて、個々のポイントツーポイントインタフェース4552および4554を介してチップセット4590とデータを交換し得る。また、チップセット4590は、PtPインタフェース回路であり得るインタフェース回路4592を用いて、高性能グラフィックスインタフェース4539を介して高性能グラフィックス回路4538とデータを交換し得る。代替的な実施形態において、
図45に示されるPtPリンクのいずれかまたは全てが、PtPリンクではなく、マルチドロップバスとして実装され得る。
【0231】
チップセット4590は、インタフェース回路4596を介してバス4520と通信していてよい。バス4520は、バスブリッジ4518およびI/Oデバイス4516など、それを介して通信する1つまたは複数のデバイスを有し得る。バスブリッジ4518は、バス4510を介して、ユーザインタフェース4512(キーボード、マウス、タッチスクリーンまたは他の入力デバイスなど)、通信デバイス4526(モデム、ネットワークインタフェースデバイス、またはコンピュータネットワーク4560を通じて通信し得る他の種類の通信デバイスなど)、音声I/Oデバイス4514および/またはデータストレージデバイス4528などの他のデバイスと通信していてよい。データストレージデバイス4528は、プロセッサ4570および/または4580により実行され得るコード4530を格納し得る。代替的な実施形態において、バスアーキテクチャの任意の部分が、1つまたは複数のPtPリンクを用いて実装され得る。
【0232】
図45に示されるコンピュータシステムは、本明細書に記載する様々な実施形態を実装するために利用され得るコンピューティングシステムの実施形態の概略図である。
図45に示されるシステムの様々なコンポーネントが、システムオンチップ(SoC)アーキテクチャ内で、または本明細書において提供される例および実装の機能および特徴を実現できる任意の他の適切な構成内で組み合わされ得ることが理解されよう。
【0233】
さらなる例において、機械可読媒体は、機械により実行される命令を格納、エンコードまたは搬送でき、かつ、本開示の方法のうちのいずれか1つまたは複数を機械に実行させ、または、そのような命令に利用されるかまたは関連付けられるデータ構造を格納、エンコードまたは搬送できる任意の有形の媒体も含む。したがって、「機械可読媒体」は、限定されるわけではないが、ソリッドステートメモリならびに光媒体および磁気媒体を含み得る。機械可読媒体の具体的な例は、限定されるわけではないが、半導体メモリデバイス(例えば、電気的プログラマブルリードオンリメモリ(EPROM)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM))およびフラッシュメモリデバイスを含む不揮発性メモリと、内蔵ハードディスクおよびリムーバブルディスクなどの磁気ディスクと、光磁気ディスクと、CD-ROMディスクおよびDVD-ROMディスクとを例として含む。機械可読媒体により具現化される命令は、多くの転送プロトコル(例えば、HTTP)のうちのいずれか1つを利用するネットワークインタフェースデバイスを介した伝送媒体を用いて、通信ネットワークを介してさらに伝送または受信され得る。
【0234】
本明細書において説明する機能ユニットまたは機能は、それらの実装の独立性をより具体的に強調すべく、コンポーネントまたはモジュールと称されているか、またはそのように符号が付されている可能性があることを理解されたい。そのようなコンポーネントは、任意の数のソフトウェアまたはハードウェアの形態により具現化され得る。例えば、コンポーネントまたはモジュールは、カスタムの超大規模集積(VLSI)回路もしくはゲートアレイ、ロジックチップなどの既製の半導体トランジスタまたは他のディスクリートコンポーネントを備えるハードウェア回路として実装され得る。コンポーネントまたはモジュールは、例えば、フィールドプログラマブルゲートアレイ、プログラマブルアレイロジックまたはプログラマブルロジックデバイス等のプログラマブルハードウェアデバイスにも実装され得る。コンポーネントまたはモジュールは、様々な種類のプロセッサにより実行されるソフトウェアにも実装され得る。実行可能コードの識別されたコンポーネントまたはモジュールは、例えば、コンピュータ命令の1つまたは複数の物理ブロックまたは論理ブロックを含んでよく、これらのブロックは、例えば、目的、手順または機能として編成され得る。それにもかかわらず、識別されたコンポーネントまたはモジュールの実行ファイルは、物理的に共に配置される必要はないが、論理的に共に連結されている場合には、コンポーネントまたはモジュールを含み、かつ、コンポーネントまたはモジュールの記載された目的を実現する、異なる位置に格納された全く異なる命令を含み得る。
【0235】
実際には、実行可能コードのコンポーネントまたはモジュールは、単一の命令または多くの命令であってよく、さらには、いくつかの異なるコードセグメントを介して、異なるプログラムの間で、かつ、いくつかのメモリデバイスまたは処理システムにわたって分散され得る。特に、説明されている処理(コードのリライトおよびコードの解析など)のいくつかの態様は、コードがデプロイされている処理システム(例えば、センサまたはロボットに埋め込まれたコンピュータ)とは異なる処理システムで(例えば、データセンタ内のコンピュータ内で)行われ得る。同様に、動作データは、本明細書ではコンポーネントまたはモジュール内で識別および図示されてよく、任意の適切な形態で具現化され、任意の適切な種類のデータ構造内で編成されてよい。動作データは、単一のデータセットとして収集されてもよく、異なるストレージデバイスを介して含む異なる位置にわたって分散されてもよく、少なくとも部分的に、単にシステムまたはネットワーク上の電子信号として存在し得る。コンポーネントまたはモジュールは、要求される機能を実行するように動作可能なエージェントを含め、受動型または能動型であってよい。
【0236】
ここで説明する方法、システムおよびデバイスの実施形態のさらなる例は、以下の非限定的な構成を含む。以下の非限定的な例の各々は、独立したものであってもよく、以下にまたは本開示の全体を通じて提供される他の例ののうちのいずれか1つまたは複数と任意の並べ替えまたは組み合わせで組み合わされてもよい。
【0237】
特定の実装および概して関連付けられる方法の観点から本開示を説明したが、これらの実装および方法の改変および並べ替えが当業者には明らかになろう。例えば、本明細書において説明する動作は、説明されているものとは異なる順序で実行されてよく、望ましい結果を依然として実現できる。一例として、添付図面に示される処理は、要求される結果を実現するために、必ずしも、示されている特定の順序または順番である必要はない。特定の実装では、マルチタスクおよび並列処理が有利であり得る。さらに、他のユーザインタフェースのレイアウトおよび機能がサポートされ得る。他の変形例は、以下の特許請求の範囲内に含まれる。
【0238】
本明細書は、多くの特定の実装の詳細を含むが、これらは、あらゆる発明の範囲または特許請求され得るものの範囲に対する限定としてではなく、特定の発明の特定の実施形態に固有の特徴の説明として解釈されるべきである。別個の実施形態の文脈で本明細書において説明する特定の特徴が、単一の実施形態に組み合わせて実装されてもよい。逆に、単一の実施形態の文脈で説明する様々な特徴が、複数の実施形態に別個に実装されるか、または任意の適切なサブコンビネーションで実装されてもよい。さらに、特徴が、特定の組み合わせで機能すると上で説明され、最初はそのように特許請求されていることさえあり得るが、いくつかの場合においては、特許請求された組み合わせからの1つまたは複数の特徴が、その組み合わせから削除されてよく、特許請求された組み合わせは、サブコンビネーションまたはサブコンビネーションの変形例に関するものであってよい。
【0239】
同様に、図面には動作が特定の順序で示されているが、これは、望ましい結果を実現するために、示されている特定の順序でまたは順番にそのような動作が実行される必要があると理解されるべきではなく、示されている全ての動作が実行される必要があると理解されるべきでもない。特定の状況では、マルチタスク処理および並列処理が有利であり得る。さらに、上で説明した実施形態における様々なシステムコンポーネントの分離が、全ての実施形態においてそのような分離を必要としていると理解されるべきではない。説明したプログラムコンポーネントおよびシステムは概して、単一のソフトウェア製品に共に統合され得るか、または複数のソフトウェア製品へパッケージ化され得ることを理解されたい。
【0240】
以下の例は、本明細書による実施形態に関する。
例1は、データ処理装置と、3次元(3D)ボリュームを表すためのボリュメトリックデータ構造を格納するためのメモリであって、ボリュメトリックデータ構造は、疎な階層ボリュメトリックデータ構造を含み、ボリュメトリックデータ構造は、上位レベルボクセルセットを含み、各上位レベルボクセルは、3Dボリューム内のそれぞれのサブボリュームを第1の解像度で表し、各上位レベルボクセルは、それぞれの上位レベルボクセルのサブボリュームを第2のより高い解像度で表すための下位レベルボクセルセットを含む、メモリと、レイキャスティングアルゴリズムを実行するための、データ処理装置により実行可能なレイキャスタであって、レイキャスティングアルゴリズムは、ボリュメトリックデータ構造を入力として受け取り、レイキャスティングアルゴリズムを実行することは、基準点から3Dボリュームへ複数の光線を放射することと、複数の光線の各々について、光線を横断させて、ボクセルセット内のボクセルを光線が交差しており、かつ、ボクセルセット内のボクセルが占有されているかどうかを判断することであって、光線は、近似横断に従って横断させられる、判断することとを含む、レイキャスタとを備える装置である。
【0241】
例2は、例1に記載の主題を含む。光線を横断させることは、ジオメトリで占有されたそれぞれの下位レベルボクセルを上位レベルボクセルセットのサブセットのみが含んでいるとボリュメトリックデータ構造から判断することを含む。
【0242】
例3は、例2に記載の主題を含む。光線を横断させることはさらに、光線が交差した下位レベルボクセルのサブセットを決定することであって、光線が交差した下位レベルボクセルの全てのうちの一部が近似横断に基づくサブセット内にある、決定することを含む。
【0243】
例4は、例2および3のいずれか1つに記載の主題を含む。光線を横断させることは、占有された下位レベルボクセルを含んでいないとボリュメトリックデータ構造に基づいて判断された上位レベルボクセルの各々における下位レベルボクセルの解析をスキップすることを含む。
【0244】
例5は、例4に記載の主題を含む。解析は、上位レベルボクセルのサブセットに対応する光線上の複数の箇所で、光線が交差した上位レベルボクセルのサブセットのうちの1つの内の下位レベルボクセルが占有されているか否かをチェックすることであって、光線が交差した上位レベルボクセルのサブセット内の下位レベルボクセルのサブセットは、近似横断に基づいてチェックされない、チェックすることを含む。
【0245】
例6は、例5に記載の主題を含む。複数の箇所は、近似横断に基づく定義された間隔に対応する。
【0246】
例7は、例6に記載の主題を含む。定義された間隔は、特定の次元の下位レベルボクセルの長さに関連付けられた距離を含む。
【0247】
例8は、例7に記載の主題を含む。レイキャスタはさらに、特定の方向を決定し、特定の次元は、光線の主な指向性コンポーネントを含む。
【0248】
例9は、例4から8のいずれか1つに記載の主題を含む。上位レベルボクセルのサブセットの各々における下位レベルボクセルの解析は、メモリにアクセスして、ボリュメトリックデータ構造の対応する部分を検索することであって、占有された下位レベルボクセルを含んでいないと判断された上位レベルボクセルに対応するボリュメトリックデータ構造の部分は、メモリから検索されない、検索することを含む。
【0249】
例10は、例1から9のいずれか1つに記載の主題を含む。レイキャスティングアルゴリズムは、回路を用いて実装されるSLAMパイプラインの一部である。
【0250】
例11は、例1から9のいずれか1つに記載の主題を含む。レイキャスティングアルゴリズムは、グラフィックレンダリングアプリケーションに関連して実行される。
【0251】
例12は、例1から10のいずれか1つに記載の主題を含む。ボリュメトリックデータ構造は、上位レベルボクセルの各々におけるジオメトリの存在を表すための第1のエントリを含み、第2のエントリのセットをさらに含み、第2のエントリの各々は、上位レベルボクセルのサブセットのうちの1つのそれぞれの下位レベルボクセルを表す。
【0252】
例13は、例12に記載の主題を含む。第1のエントリおよび第2のエントリは、それぞれのエントリにおいて記述される各ボクセルのバイナリ値を含み、それぞれのバイナリ値は、対応するボクセルが占有されているか否かを示す。
【0253】
例14は、例1から13のいずれか1つに記載の主題を含む。データ処理装置は、ビジュアルプロセッシングユニット(VPU)を有する。
【0254】
例15は、例1から14のいずれか1つに記載の主題を含む。装置は、ロボットまたはドローンのうちの一方を備える。
【0255】
例16は、コンピュータメモリからボリュメトリックデータ構造にアクセスする段階であって、ボリュメトリックデータ構造は、3次元(3D)ボリュームを表し、ボリュメトリックデータ構造は、疎な階層ボリュメトリックデータ構造を含み、ボリュメトリックデータ構造は、上位レベルボクセルセットを含み、各上位レベルボクセルは、3Dボリューム内のそれぞれのサブボリュームを第1の解像度で表し、各上位レベルボクセルは、それぞれの上位レベルボクセルのサブボリュームを第2のより高い解像度で表す下位レベルボクセルセットを含む、アクセスする段階と、レイキャスティングアルゴリズムを実行する段階であって、レイキャスティングアルゴリズムは、ボリュメトリックデータ構造を入力として受け取り、レイキャスティングアルゴリズムを実行する段階は、基準点から3Dボリュームへ複数の光線を放射する段階と、複数の光線の各々について、光線を横断させて、ボクセルセット内のボクセルを光線が交差しており、かつ、ボクセルセット内のボクセルが占有されているかどうかを判断する段階であって、光線は、近似横断に従って横断させられる、横断させる段階とを有する、実行する段階とを備える方法である。
【0256】
例17は、例16に記載の主題を含む。光線を横断させる段階は、ジオメトリで占有されたそれぞれの下位レベルボクセルを上位レベルボクセルセットのサブセットのみが含んでいるとボリュメトリックデータ構造から判断する段階を含む。
【0257】
例18は、例17に記載の主題を含む。光線を横断させる段階はさらに、光線が交差した下位レベルボクセルのサブセットを決定する段階であって、光線が交差した下位レベルボクセルの全てのうちの一部が近似横断に基づくサブセット内にある、決定する段階を含む。
【0258】
例19は、例17および18のいずれか1つに記載の主題を含む。光線を横断させる段階は、占有された下位レベルボクセルを含んでいないとボリュメトリックデータ構造に基づいて判断された上位レベルボクセルの各々における下位レベルボクセルの解析をスキップする段階を含む。
【0259】
例20は、例19に記載の主題を含む。解析は、上位レベルボクセルのサブセットに対応する光線上の複数の箇所で、光線が交差した上位レベルボクセルのサブセットのうちの1つの内の下位レベルボクセルが占有されているか否かをチェックすることであって、光線が交差した上位レベルボクセルのサブセット内の下位レベルボクセルのサブセットは、近似横断に基づいてチェックされない、チェックすることを含む。
【0260】
例21は、例20に記載の主題を含む。複数の箇所は、近似横断に基づく定義された間隔に対応する。
【0261】
例22は、例21に記載の主題を含む。定義された間隔は、特定の次元の下位レベルボクセルの長さに関連付けられた距離を含む。
【0262】
例23は、例22に記載の主題を含む。レイキャスタはさらに、特定の方向を決定し、特定の次元は、光線の主な指向性コンポーネントを含む。
【0263】
例24は、例19から23のいずれか1つに記載の主題を含む。上位レベルボクセルのサブセットの各々における下位レベルボクセルの解析は、メモリにアクセスして、ボリュメトリックデータ構造の対応する部分を検索することであって、占有された下位レベルボクセルを含んでいないと判断された上位レベルボクセルに対応するボリュメトリックデータ構造の部分は、メモリから検索されない、検索することを含む。
【0264】
例25は、例16から24のいずれか1つに記載の主題を含む。レイキャスティングアルゴリズムは、回路を用いて実装されるSLAMパイプラインの一部である。
【0265】
例26は、例16から24のいずれか1つに記載の主題を含む。レイキャスティングアルゴリズムは、グラフィックレンダリングアプリケーションに関連して実行される。
【0266】
例27は、例16から26のいずれか1つに記載の主題を含む。ボリュメトリックデータ構造は、上位レベルボクセルの各々におけるジオメトリの存在を表すための第1のエントリを含み、第2のエントリのセットをさらに含み、第2のエントリの各々は、上位レベルボクセルのサブセットのうちの1つのそれぞれの下位レベルボクセルを表す。
【0267】
例28は、例27に記載の主題を含む。第1のエントリおよび第2のエントリは、それぞれのエントリにおいて記述される各ボクセルのバイナリ値を含み、それぞれのバイナリ値は、対応するボクセルが占有されているか否かを示す。
【0268】
例29は、例16から28のいずれか1つに記載の方法を実行するための手段を備えるシステムである。
【0269】
例30は、例29に記載の主題を含む。手段は、命令が格納された機械可読記憶媒体を有し、命令は、例16から28のいずれか1つに記載の方法のうちの少なくとも一部を実行するために機械により実行可能である。
【0270】
例31は、データ処理装置と、メモリと、視覚データをニューラルネットワークモデルの第1のネットワーク部分に入力することであって、第1のネットワーク部分は、視覚データに基づいて第1の値を生成する、入力することと、慣性データをニューラルネットワークモデルの第2の部分に入力することであって、第2のネットワーク部分は、慣性データに基づいて第2の値を生成する、入力することと、第1の値および第2の値をニューラルネットワークモデルの全結合層セットへの入力として提供することと、全結合層からニューラルネットワークモデルの出力を生成することであって、出力は、視覚データおよび慣性データの両方に基づく姿勢値を含む、生成することとを行うための、データ処理装置により実行可能なオドメトリエンジンとを備える装置である。
【0271】
例32は、例31に記載の主題を含む。第1のネットワーク部分は、視覚オドメトリニューラルネットワーク部分を含み、第2のネットワーク部分は、慣性オドメトリニューラルネットワーク部分を含む。
【0272】
例33は、例31および32のいずれか1つに記載の主題を含む。第1のネットワーク部分は、複数の畳み込みニューラルネットワーク層と、第1の全結合層セットとを含む。
【0273】
例34は、例33に記載の主題を含む。第1のネットワーク部分は、FlowNetSベースの畳み込みニューラルネットワーク(CNN)の層を含む。
【0274】
例35は、例31から34のいずれか1つに記載の主題を含む。第2のネットワーク部分は、長短期記憶(LSTM)ベースのニューラルネットワークと、第2の全結合層セットとを含む。
【0275】
例36は、例31から35のいずれか1つに記載の主題を含む。視覚データは、連続するRGB画像のペアを含む。
【0276】
例37は、例31から36のいずれか1つに記載の主題を含む。慣性データは、慣性測定ユニット(IMU)デバイスにより生成される慣性データのサブシーケンスを含む。
【0277】
例38は、例31から37のいずれか1つに記載の主題を含む。オドメトリエンジンはさらに、第1の値および第2の値を連結して、全結合層セットの入力を生成する。
【0278】
例39は、例31から38のいずれか1つに記載の主題を含む。主題は、姿勢値に基づいて自律デバイスの動きの方向を決定するためのコントローラをさらに備える。
【0279】
例40は、例39に記載の主題を含む。自律デバイスは、ロボットまたはドローンのうちの一方を有する。
【0280】
例41は、例39および40のいずれか1つに記載の主題を含む。主題は、自律デバイスをさらに備える。
【0281】
例42は、環境を記述した視覚データを受信する段階と、デバイスの動きを記述した慣性データを受信する段階と、視覚データをニューラルネットワークモデルの第1のネットワーク部分への入力として提供する段階であって、第1のネットワーク部分は、視覚データに基づいて第1の値を生成する、提供する段階と、慣性データをニューラルネットワークモデルの第2の部分への入力として提供する段階であって、第2のネットワーク部分は、慣性データに基づいて第2の値を生成する、提供する段階と、第1の値および第2の値をニューラルネットワークモデルの全結合層セットへの入力として提供する段階と、全結合層からニューラルネットワークモデルの出力を生成する段階であって、出力は、視覚データおよび慣性データの両方に基づく姿勢値を含む、生成する段階とを備える方法である。
【0282】
例43は、例42に記載の主題を含む。第1のネットワーク部分は、視覚オドメトリニューラルネットワーク部分を含み、第2のネットワーク部分は、慣性オドメトリニューラルネットワーク部分を含む。
【0283】
例44は、例42および43のいずれか1つに記載の主題を含む。第1のネットワーク部分は、複数の畳み込みニューラルネットワーク層と、第1の全結合層セットとを含む。
【0284】
例45は、例44に記載の主題を含む。第1のネットワーク部分は、FlowNetSベースの畳み込みニューラルネットワーク(CNN)の層を含む。
【0285】
例46は、例42から45のいずれか1つに記載の主題を含む。第2のネットワーク部分は、長短期記憶(LSTM)ベースのニューラルネットワークと、第2の全結合層セットとを含む。
【0286】
例47は、例42から46のいずれか1つに記載の主題を含む。視覚データは、連続するRGB画像のペアを含む。
【0287】
例48は、例42から47のいずれか1つに記載の主題を含む。慣性データは、慣性測定ユニット(IMU)デバイスにより生成される慣性データのサブシーケンスを含む。
【0288】
例49は、例42から48のいずれか1つに記載の主題を含む。主題は、第1の値および第2の値を連結して、全結合層セットの入力を生成する段階をさらに備える。
【0289】
例50は、例42から49のいずれか1つに記載の主題を含む。主題は、姿勢値に基づいてデバイスの動きの方向を決定する段階をさらに備える。
【0290】
例51は、例50に記載の主題を含む。主題は、方向におけるデバイスの動きを作動させる段階をさらに備える。
【0291】
例52は、例42から51のいずれか1つに記載の方法を実行するための手段を備えるシステムである。
【0292】
例53は、例52に記載の主題を含む。手段は、命令が格納された機械可読記憶媒体を有し、命令は、例42から51のいずれか1つに記載の方法のうちの少なくとも一部を実行するために機械により実行可能である。
【0293】
例54は、プロセッサと、慣性データを生成するための慣性測定ユニット(IMU)デバイスと、視覚データを生成するためのカメラセンサと、視覚データをニューラルネットワークモデルの第1のネットワーク部分への入力として提供することであって、第1のネットワーク部分は、視覚データに基づいて第1の値を生成する、提供することと、慣性データをニューラルネットワークモデルの第2の部分への入力として提供することであって、第2のネットワーク部分は、慣性データに基づいて第2の値を生成する、提供することと、第1の値および第2の値をニューラルネットワークモデルの全結合層セットへの入力として提供することと、全結合層からニューラルネットワークモデルの出力を生成することであって、出力は、視覚データおよび慣性データの両方に基づく姿勢値を含む、生成することとを行うためのオドメトリエンジンとを有する自律デバイス
を備えるシステムである。
【0294】
例55は、例54に記載の主題を含む。主題は、姿勢値に基づいて自律デバイスの動きの方向を決定するためのコントローラをさらに備える。
【0295】
例56は、例55に記載の主題を含む。主題は、姿勢値に少なくとも部分的に基づいて自律デバイスを方向に自律的に移動させるためのアクチュエータをさらに備える。
【0296】
例57は、例54および55のいずれか1つに記載の主題を含む。第1のネットワーク部分は、視覚オドメトリニューラルネットワーク部分を含み、第2のネットワーク部分は、慣性オドメトリニューラルネットワーク部分を含む。
【0297】
例58は、例54から57のいずれか1つに記載の主題を含む。第1のネットワーク部分は、複数の畳み込みニューラルネットワーク層と、第1の全結合層セットとを含む。
【0298】
例59は、例58に記載の主題を含む。第1のネットワーク部分は、FlowNetSベースの畳み込みニューラルネットワーク(CNN)の層を含む。
【0299】
例60は、例54から59のいずれか1つに記載の主題を含む。第2のネットワーク部分は、長短期記憶(LSTM)ベースのニューラルネットワークと、第2の全結合層セットとを含む。
【0300】
例61は、例54から60のいずれか1つに記載の主題を含む。視覚データは、連続するRGB画像のペアを含む。
【0301】
例62は、例54から61のいずれか1つに記載の主題を含む。慣性データは、慣性測定ユニット(IMU)デバイスにより生成される慣性データのサブシーケンスを含む。
【0302】
例63は、例54から62のいずれか1つに記載の主題を含む。オドメトリエンジンはさらに、第1の値および第2の値を連結して、全結合層セットの入力を生成する。
【0303】
例64は、例54から63のいずれか1つに記載の主題を含む。主題は、姿勢値に基づいて自律デバイスの動きの方向を決定するためのコントローラをさらに備える。
【0304】
例65は、例64に記載の主題を含む。自律デバイスは、ロボットまたはドローンのうちの一方を有する。
【0305】
例66は、データ処理装置と、第1の3Dボリュームを表すための第1のボリュメトリックデータ構造と、第2の3Dボリュームを表すための第2のボリュメトリックデータ構造とを格納するためのメモリと、第1のボリュメトリックデータ構造を第1の2Dグリッドセットへ変換することと、第2のボリュメトリックデータ構造を第2の2Dグリッドセットへ変換することと、ボクセルグリッドのペアを畳み込みニューラルネットワーク(CNN)への入力として提供することであって、ボクセルグリッドのペアは、第1の2Dグリッドセットのうちの1つと第2の2Dグリッドセットのうちの1つとを含む、提供することと、CNNを用いてボクセルグリッドのペアの相対姿勢値を生成することとを行うための、データ処理装置により実行可能な相対姿勢推定ツールとを備える装置である。
【0306】
例67は、例66に記載の主題を含む。相対姿勢推定ツールはさらに、CNNの損失関数を決定し、損失関数は、相対姿勢値の生成において適用される。
【0307】
例68は、例66および67のいずれか1つに記載の主題を含む。相対姿勢値は、第1のDボリュームおよび第2の3Dボリュームの相対姿勢推定を決定するために、第1の2Dグリッドセットおよび第2の2Dグリッドセットからの2Dグリッドペアセット用に決定される。
【0308】
例69は、例66から68のいずれか1つに記載の主題を含む。第1のボリュメトリックデータ構造は、第1の3Dボリューム用の点群を表し、第2のボリュメトリックデータ構造は、第2の3Dボリューム用の点群を表す。
【0309】
例70は、例66から69のいずれか1つに記載の主題を含む。CNNは、2D CNNを含む。
【0310】
例71は、例66から70のいずれか1つに記載の主題を含む。CNNは、表現部分および回帰部分を含み、ボクセルグリッドのペアは、表現部分への入力として提供され、表現部分は、ボクセルグリッドのペアに基づいて特徴ベクトルを生成し、特徴ベクトルは、回帰部分への入力として提供され、相対姿勢値は、回帰部分の出力を含む。
【0311】
例72は、例71に記載の主題を含む。表現部分は、シャムネットワークを含み、回帰部分は、全結合層を含む。
【0312】
例73は、例66から72のいずれか1つに記載の主題を含む。主題は、自律デバイスをさらに備える。
【0313】
例74は、例73に記載の主題を含む。自律デバイスは、ロボットまたはドローンのうちの一方を有する。
【0314】
例75は、第1の3Dボリュームを表すための第1のボリュメトリックデータ構造と、第2の3Dボリュームを表すための第2のボリュメトリックデータ構造とにコンピュータメモリからアクセスする段階と、第1のボリュメトリックデータ構造を第1の2Dグリッドセットへ変換する段階と、第2のボリュメトリックデータ構造を第2の2Dグリッドセットへ変換する段階と、第1の2Dグリッドセットおよび第2の2Dグリッドセットを畳み込みニューラルネットワーク(CNN)への入力として提供する段階と、CNNを用いて、第1の3Dボリュームと第2の3Dボリュームとに基づく相対姿勢値を生成する段階とを備える方法である。
【0315】
例76は、例75に記載の主題を含む。主題は、CNNの損失関数を決定する段階と、損失関数を相対姿勢値の生成に適用する段階とをさらに備える。
【0316】
例77は、例75および76のいずれか1つに記載の主題を含む。CNNは、2D畳み込み層を含む。
【0317】
例78は、例75から77のいずれか1つに記載の主題を含む。CNNは、表現部分および回帰部分を含み、第1の2Dグリッドセットおよび第2の2Dグリッドセットは、表現部分への入力として提供され、表現部分は、特徴ベクトルを出力として生成し、特徴ベクトルは、回帰部分への入力として提供され、相対姿勢値は、回帰部分の出力を含む。
【0318】
例79は、例78に記載の主題を含む。表現部分は、シャムネットワークを含み、回帰部分は、全結合層を含む。
【0319】
例80は、例75から79のいずれか1つに記載の方法を実行するための手段を備えるシステムである。
【0320】
例81は、第1の3Dボリュームを表すための第1のボリュメトリックデータ構造と、第2の3Dボリュームを表すための第2のボリュメトリックデータ構造とにコンピュータメモリからアクセスする手順と、第1のボリュメトリックデータ構造を第1の2Dグリッドセットへ変換する手順と、第2のボリュメトリックデータ構造を第2の2Dグリッドセットへ変換する手順と、第1の2Dグリッドセットおよび第2の2Dグリッドセットを畳み込みニューラルネットワーク(CNN)への入力として提供する手順と、CNNを用いて、第1の3Dボリュームと第2の3Dボリュームとに基づく相対姿勢値を生成する手順とを機械に実行させるために機械により実行可能な命令が格納された非一時的機械可読記憶媒体である。
【0321】
例82は、例81に記載の主題を含む。主題は、CNNの損失関数を決定する段階と、損失関数を相対姿勢値の生成に適用する段階とをさらに備える。
【0322】
例83は、例81および82のいずれか1つに記載の主題を含む。CNNは、2D畳み込み層を含む。
【0323】
例84は、例81から83のいずれか1つに記載の主題を含む。CNNは、表現部分および回帰部分を含み、第1の2Dグリッドセットおよび第2の2Dグリッドセットは、表現部分への入力として提供され、表現部分は、特徴ベクトルを出力として生成し、特徴ベクトルは、回帰部分への入力として提供され、相対姿勢値は、回帰部分の出力を含む。
【0324】
例85は、例84に記載の主題を含む。表現部分は、シャムネットワークを含み、回帰部分は、全結合層を含む。
【0325】
例86は、例81から85のいずれか1つに記載の主題を含む。第1のボリュメトリックデータ構造および第2のボリュメトリックデータ構造の一方または両方は、対応する点群データのボクセル化から生成される。
【0326】
このように、主題の特定の実施形態を説明してきた。他の実施形態は、以下の特許請求の範囲の範囲内に含まれる。いくつかの場合において、特許請求の範囲に記載される動作が異なる順序で実行されてもよく、望ましい結果が依然として実現される。加えて、添付図面に示される処理は、望ましい結果を実現するために、必ずしも示されている特定の順序、または順番である必要はない。
[項目1]
データ処理装置と、
3次元(3D)ボリュームを表すためのボリュメトリックデータ構造を格納するためのメモリであって、上記ボリュメトリックデータ構造は、疎な階層ボリュメトリックデータ構造を含み、上記ボリュメトリックデータ構造は、上位レベルボクセルセットを含み、各上位レベルボクセルは、上記3Dボリューム内のそれぞれのサブボリュームを第1の解像度で表し、各上位レベルボクセルは、上記それぞれの上位レベルボクセルのサブボリュームを第2のより高い解像度で表すための下位レベルボクセルセットを含む、メモリと、
レイキャスティングアルゴリズムを実行するための、上記データ処理装置により実行可能なレイキャスタであって、上記レイキャスティングアルゴリズムは、上記ボリュメトリックデータ構造を入力として受け取り、上記レイキャスティングアルゴリズムを実行することは、
基準点から上記3Dボリュームへ複数の光線を放射することと、
上記複数の光線の各々について、上記光線を横断させて、上記ボクセルセット内のボクセルを上記光線が交差しており、かつ、上記ボクセルセット内の上記ボクセルが占有されているかどうかを判断することであって、上記光線は、近似横断に従って横断させられる、判断することと
を含む、レイキャスタと
を備える装置。
[項目2]
上記光線を横断させることは、ジオメトリで占有されたそれぞれの下位レベルボクセルを上記上位レベルボクセルセットのサブセットのみが含んでいると上記ボリュメトリックデータ構造から判断することを含む、項目1に記載の装置。
[項目3]
上記光線を横断させることはさらに、
上記光線が交差した上記下位レベルボクセルのサブセットを決定することであって、上記光線が交差した上記下位レベルボクセルの全てのうちの一部が上記近似横断に基づく上記サブセット内にある、決定すること
を含む、
項目2に記載の装置。
[項目4]
上記光線を横断させることは、占有された下位レベルボクセルを含んでいないと上記ボリュメトリックデータ構造に基づいて判断された上記上位レベルボクセルの各々における下位レベルボクセルの解析をスキップすることを含む、項目2および3のいずれか1つに記載の装置。
[項目5]
上記解析は、上記上位レベルボクセルのサブセットに対応する上記光線上の複数の箇所で、上記光線が交差した上記上位レベルボクセルのサブセットのうちの1つの内の下位レベルボクセルが占有されているか否かをチェックすることであって、上記光線が交差した上記上位レベルボクセルのサブセット内の上記下位レベルボクセルのサブセットは、上記近似横断に基づいてチェックされない、チェックすることを含む、項目4に記載の装置。
[項目6]
上記複数の箇所は、上記近似横断に基づく定義された間隔に対応する、項目5に記載の装置。
[項目7]
上記定義された間隔は、特定の次元の下位レベルボクセルの長さに関連付けられた距離を含む、項目6に記載の装置。
[項目8]
上記レイキャスタはさらに、上記特定の方向を決定し、上記特定の次元は、上記光線の主な指向性コンポーネントを含む、項目7に記載の装置。
[項目9]
上記上位レベルボクセルのサブセットの各々における下位レベルボクセルの解析は、メモリにアクセスして、上記ボリュメトリックデータ構造の対応する部分を検索することであって、占有された下位レベルボクセルを含んでいないと判断された上記上位レベルボクセルに対応する上記ボリュメトリックデータ構造の部分は、メモリから検索されない、検索することを含む、項目4から8のいずれか1つに記載の装置。
[項目10]
上記レイキャスティングアルゴリズムは、上記回路を用いて実装されるSLAMパイプラインの一部である、項目1から9のいずれか1つに記載の装置。
[項目11]
上記レイキャスティングアルゴリズムは、グラフィックレンダリングアプリケーションに関連して実行される、項目1から9のいずれか1つに記載の装置。
[項目12]
上記ボリュメトリックデータ構造は、上記上位レベルボクセルの各々におけるジオメトリの存在を表すための第1のエントリを含み、第2のエントリのセットをさらに含み、上記第2のエントリの各々は、上記上位レベルボクセルのサブセットのうちの1つのそれぞれの下位レベルボクセルを表す、項目1から10のいずれか1つに記載の装置。
[項目13]
上記第1のエントリおよび上記第2のエントリは、上記それぞれのエントリにおいて記述される各ボクセルのバイナリ値を含み、上記それぞれのバイナリ値は、上記対応するボクセルが占有されているか否かを示す、項目12に記載の装置。
[項目14]
上記データ処理装置は、ビジュアルプロセッシングユニット(VPU)を有する、項目1から13のいずれか1つに記載の装置。
[項目15]
ロボットまたはドローンのうちの一方を備える、項目1から14のいずれか1つに記載の装置。
[項目16]
コンピュータメモリからボリュメトリックデータ構造にアクセスする段階であって、上記ボリュメトリックデータ構造は、3次元(3D)ボリュームを表し、上記ボリュメトリックデータ構造は、疎な階層ボリュメトリックデータ構造を含み、上記ボリュメトリックデータ構造は、上位レベルボクセルセットを含み、各上位レベルボクセルは、上記3Dボリューム内のそれぞれのサブボリュームを第1の解像度で表し、各上位レベルボクセルは、上記それぞれの上位レベルボクセルのサブボリュームを第2のより高い解像度で表す下位レベルボクセルセットを含む、アクセスする段階と、
レイキャスティングアルゴリズムを実行する段階であって、上記レイキャスティングアルゴリズムは、上記ボリュメトリックデータ構造を入力として受け取り、上記レイキャスティングアルゴリズムを実行する段階は、
基準点から上記3Dボリュームへ複数の光線を放射する段階と、
上記複数の光線の各々について、上記光線を横断させて、上記ボクセルセット内のボクセルを上記光線が交差しており、かつ、上記ボクセルセット内の上記ボクセルが占有されているかどうかを判断する段階であって、上記光線は、近似横断に従って横断させられる、横断させる段階と
を有する、
実行する段階と
を備える方法。
[項目17]
上記光線を横断させる段階は、ジオメトリで占有されたそれぞれの下位レベルボクセルを上記上位レベルボクセルセットのサブセットのみが含んでいると上記ボリュメトリックデータ構造から判断する段階を含む、項目16に記載の方法。
[項目18]
上記光線を横断させる段階はさらに、
上記光線が交差した上記下位レベルボクセルのサブセットを決定する段階であって、上記光線が交差した上記下位レベルボクセルの全てのうちの一部が上記近似横断に基づく上記サブセット内にある、決定する段階
を含む、
項目17に記載の方法。
[項目19]
上記光線を横断させる段階は、占有された下位レベルボクセルを含んでいないと上記ボリュメトリックデータ構造に基づいて判断された上記上位レベルボクセルの各々における下位レベルボクセルの解析をスキップする段階を含む、項目17および18のいずれか1つに記載の方法。
[項目20]
上記解析は、上記上位レベルボクセルのサブセットに対応する上記光線上の複数の箇所で、上記光線が交差した上記上位レベルボクセルのサブセットのうちの1つの内の下位レベルボクセルが占有されているか否かをチェックすることであって、上記光線が交差した上記上位レベルボクセルのサブセット内の上記下位レベルボクセルのサブセットは、上記近似横断に基づいてチェックされない、チェックすることを含む、項目19に記載の方法。
[項目21]
上記複数の箇所は、上記近似横断に基づく定義された間隔に対応する、項目20に記載の方法。
[項目22]
上記定義された間隔は、特定の次元の下位レベルボクセルの長さに関連付けられた距離を含む、項目21に記載の方法。
[項目23]
上記レイキャスタはさらに、上記特定の方向を決定し、上記特定の次元は、上記光線の主な指向性コンポーネントを含む、項目22に記載の方法。
[項目24]
上記上位レベルボクセルのサブセットの各々における下位レベルボクセルの解析は、メモリにアクセスして、上記ボリュメトリックデータ構造の対応する部分を検索することであって、占有された下位レベルボクセルを含んでいないと判断された上記上位レベルボクセルに対応する上記ボリュメトリックデータ構造の部分は、メモリから検索されない、検索することを含む、項目19から23のいずれか1つに記載の方法。
[項目25]
上記レイキャスティングアルゴリズムは、上記回路を用いて実装されるSLAMパイプラインの一部である、項目16から24のいずれか1つに記載の方法。
[項目26]
上記レイキャスティングアルゴリズムは、グラフィックレンダリングアプリケーションに関連して実行される、項目16から24のいずれか1つに記載の方法。
[項目27]
上記ボリュメトリックデータ構造は、上記上位レベルボクセルの各々におけるジオメトリの存在を表すための第1のエントリを含み、第2のエントリのセットをさらに含み、上記第2のエントリの各々は、上記上位レベルボクセルのサブセットのうちの1つのそれぞれの下位レベルボクセルを表す、項目16から26のいずれか1つに記載の方法。
[項目28]
上記第1のエントリおよび上記第2のエントリは、上記それぞれのエントリにおいて記述される各ボクセルのバイナリ値を含み、上記それぞれのバイナリ値は、上記対応するボクセルが占有されているか否かを示す、項目27に記載の方法。
[項目29]
項目16から28のいずれか1つに記載の方法を実行するための手段を備えるシステム。
[項目30]
上記手段は、命令が格納された機械可読記憶媒体を有し、上記命令は、項目16から28のいずれか1つに記載の方法のうちの少なくとも一部を実行するために機械により実行可能である、項目29に記載のシステム。
[項目31]
データ処理装置と、
メモリと、
視覚データをニューラルネットワークモデルの第1のネットワーク部分に入力することであって、上記第1のネットワーク部分は、上記視覚データに基づいて第1の値を生成する、入力することと、
慣性データを上記ニューラルネットワークモデルの第2の部分に入力することであって、上記第2のネットワーク部分は、上記慣性データに基づいて第2の値を生成する、入力することと、
上記第1の値および上記第2の値を上記ニューラルネットワークモデルの全結合層セットへの入力として提供することと、
上記全結合層から上記ニューラルネットワークモデルの出力を生成することであって、上記出力は、上記視覚データおよび上記慣性データの両方に基づく姿勢値を含む、生成することと
を行うための、上記データ処理装置により実行可能なオドメトリエンジンと
を備える装置。
[項目32]
上記第1のネットワーク部分は、視覚オドメトリニューラルネットワーク部分を含み、上記第2のネットワーク部分は、慣性オドメトリニューラルネットワーク部分を含む、項目31に記載の装置。
[項目33]
上記第1のネットワーク部分は、複数の畳み込みニューラルネットワーク層と、第1の全結合層セットとを含む、項目31および32のいずれか1つに記載の装置。
[項目34]
上記第1のネットワーク部分は、FlowNetSベースの畳み込みニューラルネットワーク(CNN)の層を含む、項目33に記載の装置。
[項目35]
上記第2のネットワーク部分は、長短期記憶(LSTM)ベースのニューラルネットワークと、第2の全結合層セットとを含む、項目31から34のいずれか1つに記載の装置。
[項目36]
上記視覚データは、連続するRGB画像のペアを含む、項目31から35のいずれか1つに記載の装置。
[項目37]
上記慣性データは、慣性測定ユニット(IMU)デバイスにより生成される慣性データのサブシーケンスを含む、項目31から36のいずれか1つに記載の装置。
[項目38]
上記オドメトリエンジンはさらに、上記第1の値および上記第2の値を連結して、上記全結合層セットの上記入力を生成する、項目31から37のいずれか1つに記載の装置。
[項目39]
上記姿勢値に基づいて自律デバイスの動きの方向を決定するためのコントローラをさらに備える、項目31から38のいずれか1つに記載の装置。
[項目40]
上記自律デバイスは、ロボットまたはドローンのうちの一方を有する、項目39に記載の装置。
[項目41]
上記自律デバイスをさらに備える、項目39から40のいずれか1つに記載の装置。
[項目42]
環境を記述した視覚データを受信する段階と、
デバイスの動きを記述した慣性データを受信する段階と、
上記視覚データをニューラルネットワークモデルの第1のネットワーク部分への入力として提供する段階であって、上記第1のネットワーク部分は、上記視覚データに基づいて第1の値を生成する、提供する段階と、
上記慣性データを上記ニューラルネットワークモデルの第2の部分への入力として提供する段階であって、上記第2のネットワーク部分は、上記慣性データに基づいて第2の値を生成する、提供する段階と、
上記第1の値および上記第2の値を上記ニューラルネットワークモデルの全結合層セットへの入力として提供する段階と、
上記全結合層から上記ニューラルネットワークモデルの出力を生成する段階であって、上記出力は、上記視覚データおよび上記慣性データの両方に基づく姿勢値を含む、生成する段階と
を備える方法。
[項目43]
上記第1のネットワーク部分は、視覚オドメトリニューラルネットワーク部分を含み、上記第2のネットワーク部分は、慣性オドメトリニューラルネットワーク部分を含む、項目42に記載の方法。
[項目44]
上記第1のネットワーク部分は、複数の畳み込みニューラルネットワーク層と、第1の全結合層セットとを含む、項目42および43のいずれか1つに記載の方法。
[項目45]
上記第1のネットワーク部分は、FlowNetSベースの畳み込みニューラルネットワーク(CNN)の層を含む、項目44に記載の方法。
[項目46]
上記第2のネットワーク部分は、長短期記憶(LSTM)ベースのニューラルネットワークと、第2の全結合層セットとを含む、項目42から45のいずれか1つに記載の方法。
[項目47]
上記視覚データは、連続するRGB画像のペアを含む、項目42から46のいずれか1つに記載の方法。
[項目48]
上記慣性データは、慣性測定ユニット(IMU)デバイスにより生成される慣性データのサブシーケンスを含む、項目42から47のいずれか1つに記載の方法。
[項目49]
上記第1の値および上記第2の値を連結して、上記全結合層セットの上記入力を生成する段階をさらに備える、項目42から48のいずれか1つに記載の方法。
[項目50]
上記姿勢値に基づいて上記デバイスの動きの方向を決定する段階をさらに備える、項目42から49のいずれか1つに記載の方法。
[項目51]
上記方向における上記デバイスの動きを作動させる段階をさらに備える、項目50に記載の方法。
[項目52]
項目42から51のいずれか1つに記載の方法を実行するための手段を備えるシステム。
[項目53]
上記手段は、命令が格納された機械可読記憶媒体を有し、上記命令は、項目42から51のいずれか1つに記載の方法のうちの少なくとも一部を実行するために機械により実行可能である、項目52に記載のシステム。
[項目54]
プロセッサと、
慣性データを生成するための慣性測定ユニット(IMU)デバイスと、
視覚データを生成するためのカメラセンサと、
上記視覚データをニューラルネットワークモデルの第1のネットワーク部分への入力として提供することであって、上記第1のネットワーク部分は、上記視覚データに基づいて第1の値を生成する、提供することと、
上記慣性データを上記ニューラルネットワークモデルの第2の部分への入力として提供することであって、上記第2のネットワーク部分は、上記慣性データに基づいて第2の値を生成する、提供することと、
上記第1の値および上記第2の値を上記ニューラルネットワークモデルの全結合層セットへの入力として提供することと、
上記全結合層から上記ニューラルネットワークモデルの出力を生成することであって、上記出力は、上記視覚データおよび上記慣性データの両方に基づく姿勢値を含む、生成することと
を行うためのオドメトリエンジンと
を有する自律デバイス
を備えるシステム。
[項目55]
上記姿勢値に基づいて上記自律デバイスの動きの方向を決定するためのコントローラをさらに備える、項目54に記載のシステム。
[項目56]
上記姿勢値に少なくとも部分的に基づいて上記自律デバイスを上記方向に自律的に移動させるためのアクチュエータをさらに備える、項目55に記載のシステム。
[項目57]
上記第1のネットワーク部分は、視覚オドメトリニューラルネットワーク部分を含み、上記第2のネットワーク部分は、慣性オドメトリニューラルネットワーク部分を含む、項目54かおよび55のいずれか1つに記載のシステム。
[項目58]
上記第1のネットワーク部分は、複数の畳み込みニューラルネットワーク層と、第1の全結合層セットとを含む、項目54から57のいずれか1つに記載のシステム。
[項目59]
上記第1のネットワーク部分は、FlowNetSベースの畳み込みニューラルネットワーク(CNN)の層を含む、項目58に記載のシステム。
[項目60]
上記第2のネットワーク部分は、長短期記憶(LSTM)ベースのニューラルネットワークと、第2の全結合層セットとを含む、項目54から59のいずれか1つに記載のシステム。
[項目61]
上記視覚データは、連続するRGB画像のペアを含む、項目54から60のいずれか1つに記載のシステム。
[項目62]
上記慣性データは、慣性測定ユニット(IMU)デバイスにより生成される慣性データのサブシーケンスを含む、項目54から61のいずれか1つに記載のシステム。
[項目63]
上記オドメトリエンジンはさらに、上記第1の値および上記第2の値を連結して、上記全結合層セットの上記入力を生成する、項目54から62のいずれか1つに記載のシステム。
[項目64]
上記姿勢値に基づいて自律デバイスの動きの方向を決定するためのコントローラをさらに備える、項目54から63のいずれか1つに記載のシステム。
[項目65]
上記自律デバイスは、ロボットまたはドローンのうちの一方を有する、項目64に記載のシステム。
[項目66]
データ処理装置と、
第1の3Dボリュームを表すための第1のボリュメトリックデータ構造と、第2の3Dボリュームを表すための第2のボリュメトリックデータ構造とを格納するためのメモリと、
上記第1のボリュメトリックデータ構造を第1の2Dグリッドセットへ変換することと、
上記第2のボリュメトリックデータ構造を第2の2Dグリッドセットへ変換することと、
ボクセルグリッドのペアを畳み込みニューラルネットワーク(CNN)への入力として提供することであって、上記ボクセルグリッドのペアは、上記第1の2Dグリッドセットのうちの1つと上記第2の2Dグリッドセットのうちの1つとを含む、提供することと、
上記CNNを用いて上記ボクセルグリッドのペアの相対姿勢値を生成することと
を行うための、上記データ処理装置により実行可能な相対姿勢推定ツールと
を備える装置。
[項目67]
上記相対姿勢推定ツールはさらに、上記CNNの損失関数を決定し、上記損失関数は、上記相対姿勢値の上記生成において適用される、項目66に記載の装置。
[項目68]
上記相対姿勢値は、上記第1のDボリュームおよび上記第2の3Dボリュームの相対姿勢推定を決定するために、上記第1の2Dグリッドセットおよび上記第2の2Dグリッドセットからの2Dグリッドペアセット用に決定される、項目66および67のいずれか1つに記載の装置。
[項目69]
上記第1のボリュメトリックデータ構造は、上記第1の3Dボリューム用の点群を表し、上記第2のボリュメトリックデータ構造は、上記第2の3Dボリューム用の点群を表す、項目66から68のいずれか1つに記載の装置。
[項目70]
上記CNNは、2D CNNを含む、項目66から69のいずれか1つに記載の装置。
[項目71]
上記CNNは、表現部分および回帰部分を含み、上記ボクセルグリッドのペアは、上記表現部分への入力として提供され、上記表現部分は、上記ボクセルグリッドのペアに基づいて特徴ベクトルを生成し、上記特徴ベクトルは、上記回帰部分への入力として提供され、上記相対姿勢値は、上記回帰部分の出力を含む、項目66から70のいずれか1つに記載の装置。
[項目72]
上記表現部分は、シャムネットワークを含み、上記回帰部分は、全結合層を含む、項目71に記載の装置。
[項目73]
自律デバイスをさらに備える、項目66から72のいずれか1つに記載の装置。
[項目74]
上記自律デバイスは、ロボットまたはドローンのうちの一方を有する、項目73に記載の装置。
[項目75]
第1の3Dボリュームを表すための第1のボリュメトリックデータ構造と、第2の3Dボリュームを表すための第2のボリュメトリックデータ構造とにコンピュータメモリからアクセスする段階と、
上記第1のボリュメトリックデータ構造を第1の2Dグリッドセットへ変換する段階と、
上記第2のボリュメトリックデータ構造を第2の2Dグリッドセットへ変換する段階と、
上記第1の2Dグリッドセットおよび上記第2の2Dグリッドセットを畳み込みニューラルネットワーク(CNN)への入力として提供する段階と、
上記CNNを用いて、上記第1の3Dボリュームと上記第2の3Dボリュームとに基づく相対姿勢値を生成する段階と
を備える方法。
[項目76]
上記CNNの損失関数を決定する段階と、
上記損失関数を上記相対姿勢値の上記生成に適用する段階と
をさらに備える、項目75に記載の方法。
[項目77]
上記CNNは、2D畳み込み層を含む、項目75および76のいずれか1つに記載の方法。
[項目78]
上記CNNは、表現部分および回帰部分を含み、上記第1の2Dグリッドセットおよび上記第2の2Dグリッドセットは、上記表現部分への入力として提供され、上記表現部分は、特徴ベクトルを出力として生成し、上記特徴ベクトルは、上記回帰部分への入力として提供され、上記相対姿勢値は、上記回帰部分の出力を含む、項目75から77のいずれか1つに記載の方法。
[項目79]
上記表現部分は、シャムネットワークを含み、上記回帰部分は、全結合層を含む、項目78に記載の方法。
[項目80]
項目75から79のいずれか1つに記載の方法を実行するための手段を備えるシステム。
[項目81]
第1の3Dボリュームを表すための第1のボリュメトリックデータ構造と、第2の3Dボリュームを表すための第2のボリュメトリックデータ構造とにコンピュータメモリからアクセスする手順と、
上記第1のボリュメトリックデータ構造を第1の2Dグリッドセットへ変換する手順と、
上記第2のボリュメトリックデータ構造を第2の2Dグリッドセットへ変換する手順と、
上記第1の2Dグリッドセットおよび上記第2の2Dグリッドセットを畳み込みニューラルネットワーク(CNN)への入力として提供する手順と、
上記CNNを用いて、上記第1の3Dボリュームと上記第2の3Dボリュームとに基づく相対姿勢値を生成する手順と
を機械に実行させるために上記機械により実行可能な命令が格納された非一時的機械可読記憶媒体。
[項目82]
上記CNNの損失関数を決定する手順と、
上記損失関数を上記相対姿勢値の上記生成に適用する手順と
をさらに含む、項目81に記載の記憶媒体。
[項目83]
上記CNNは、2D畳み込み層を含む、項目81および82のいずれか1つに記載の記憶媒体。
[項目84]
上記CNNは、表現部分および回帰部分を含み、上記第1の2Dグリッドセットおよび上記第2の2Dグリッドセットは、上記表現部分への入力として提供され、上記表現部分は、特徴ベクトルを出力として生成し、上記特徴ベクトルは、上記回帰部分への入力として提供され、上記相対姿勢値は、上記回帰部分の出力を含む、項目81から83のいずれか1つに記載の記憶媒体。
[項目85]
上記表現部分は、シャムネットワークを含み、上記回帰部分は、全結合層を含む、項目84に記載の記憶媒体。
[項目86]
上記第1のボリュメトリックデータ構造および上記第2のボリュメトリックデータ構造の一方または両方は、対応する点群データのボクセル化から生成される、項目81から85のいずれか1つに記載の記憶媒体。
【外国語明細書】