(57)【要約】  レイキャスタが、レイキャスティングアルゴリズムを実行する。レイキャスティングアルゴリズムは、疎な階層ボリュメトリックデータ構造を入力として受け取る。レイキャスティングアルゴリズムを実行することは、複数の光線を基準点から３Ｄボリュームへ放射することと、複数の光線の各々について、光線を横断させて、ボクセルセット内のボクセルを光線が交差しており、かつ、ボクセルセット内のボクセルが占有されているかどうかを判断することであって、光線は、近似トラバーサルアルゴリズムに従って横断させられる、判断することとを含む。
2021536604.tif 000002
【特許請求の範囲】
【請求項１】
環境を記述した視覚データを受信する段階と、
デバイスの動きを記述した慣性データを受信する段階と、
前記視覚データをニューラルネットワークモデルの第１のネットワーク部分への入力として提供する段階であって、前記第１のネットワーク部分は、前記視覚データに基づいて第１の値を生成する、提供する段階と、
前記慣性データを前記ニューラルネットワークモデルの第２のネットワーク部分への入力として提供する段階であって、前記第２のネットワーク部分は、前記慣性データに基づいて第２の値を生成する、提供する段階と、
前記第１の値および前記第２の値を前記ニューラルネットワークモデルの全結合層セットへの入力として提供する段階と、
前記全結合層セットから前記ニューラルネットワークモデルの出力を生成する段階であって、前記出力は、前記視覚データおよび前記慣性データの両方に基づく姿勢値を含む、生成する段階と
を備える方法。
【請求項２】
前記第１のネットワーク部分は、視覚オドメトリニューラルネットワーク部分を含み、前記第２のネットワーク部分は、慣性オドメトリニューラルネットワーク部分を含む、請求項１に記載の方法。
【請求項３】
前記第１のネットワーク部分は、複数の畳み込みニューラルネットワーク層と、第１の全結合層セットとを含む、請求項１または２に記載の方法。
【請求項４】
前記第１のネットワーク部分は、ＦｌｏｗＮｅｔＳベースの畳み込みニューラルネットワーク（ＣＮＮ）の層を含む、請求項３に記載の方法。
【請求項５】
前記第２のネットワーク部分は、長短期記憶（ＬＳＴＭ）ベースのニューラルネットワークと、第２の全結合層セットとを含む、請求項１から４のいずれか一項に記載の方法。
【請求項６】
前記視覚データは、連続するＲＧＢ画像のペアを含む、請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記慣性データは、慣性測定ユニットデバイス（ＩＭＵデバイス）により生成される慣性データのサブシーケンスを含む、請求項１から６のいずれか一項に記載の方法。
【請求項８】
前記第１の値および前記第２の値を連結して、前記全結合層セット用の前記入力を生成する段階をさらに備える、請求項１から７のいずれか一項に記載の方法。
【請求項９】
前記姿勢値に基づいて前記デバイスの動きの方向を決定する段階をさらに備える、請求項１から８のいずれか一項に記載の方法。
【請求項１０】
前記方向における前記デバイスの動きを作動させる段階をさらに備える、請求項９に記載の方法。
【請求項１１】
請求項１から１０のいずれか一項に記載の方法を実行するための手段を備えるシステム。
【請求項１２】
前記手段は、命令が格納された機械可読記憶媒体を有し、前記命令は、請求項１から１０のいずれか一項に記載の方法のうちの少なくとも一部を実行するために機械により実行可能である、請求項１１に記載のシステム。
【請求項１３】
プロセッサと、
慣性データを生成するための慣性測定ユニットデバイス（ＩＭＵデバイス）と、
視覚データを生成するためのカメラセンサと、
前記視覚データをニューラルネットワークモデルの第１のネットワーク部分への入力として提供することであって、前記第１のネットワーク部分は、前記視覚データに基づいて第１の値を生成する、提供することと、
前記慣性データを前記ニューラルネットワークモデルの第２のネットワーク部分への入力として提供することであって、前記第２のネットワーク部分は、前記慣性データに基づいて第２の値を生成する、提供することと、
前記第１の値および前記第２の値を前記ニューラルネットワークモデルの全結合層セットへの入力として提供することと、
前記全結合層セットから前記ニューラルネットワークモデルの出力を生成することであって、前記出力は、前記視覚データおよび前記慣性データの両方に基づく姿勢値を含む、生成することと
を行うためのオドメトリエンジンと
を有する自律デバイス
を備えるシステム。
【請求項１４】
前記姿勢値に基づいて前記自律デバイスの動きの方向を決定するためのコントローラをさらに備える、請求項１３に記載のシステム。
【請求項１５】
前記姿勢値に少なくとも部分的に基づいて前記自律デバイスを前記方向に自律的に移動させるためのアクチュエータをさらに備える、請求項１４に記載のシステム。
【請求項１６】
前記第１のネットワーク部分は、視覚オドメトリニューラルネットワーク部分を含み、前記第２のネットワーク部分は、慣性オドメトリニューラルネットワーク部分を含む、請求項１３から１５のいずれか一項に記載のシステム。
【請求項１７】
前記第１のネットワーク部分は、複数の畳み込みニューラルネットワーク層と、第１の全結合層セットとを含む、請求項１３から１６のいずれか一項に記載のシステム。
【請求項１８】
前記第１のネットワーク部分は、ＦｌｏｗＮｅｔＳベースの畳み込みニューラルネットワーク（ＣＮＮ）の層を含む、請求項１７に記載のシステム。
【請求項１９】
前記第２のネットワーク部分は、長短期記憶（ＬＳＴＭ）ベースのニューラルネットワークと、第２の全結合層セットとを含む、請求項１３から１８のいずれか一項に記載のシステム。
【請求項２０】
前記視覚データは、連続するＲＧＢ画像のペアを含む、請求項１３から１９のいずれか一項に記載のシステム。
【請求項２１】
前記慣性データは、前記ＩＭＵデバイスにより生成される慣性データのサブシーケンスを含む、請求項１３から２０のいずれか一項に記載のシステム。
【請求項２２】
前記オドメトリエンジンはさらに、前記第１の値および前記第２の値を連結して、前記全結合層セットの前記入力を生成する、請求項１３から２１のいずれか一項に記載のシステム。
【請求項２３】
前記姿勢値に基づいて前記自律デバイスの動きの方向を決定するためのコントローラをさらに備える、請求項１３から２２のいずれか一項に記載のシステム。
【請求項２４】
前記自律デバイスは、ロボットまたはドローンのうちの一方を有する、請求項２３に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願］
本願は、２０１８年８月２９日に出願された米国仮特許出願第６２／７２４，４４６号の利益を主張し、当該出願の全体が参照により本明細書に組み込まれる。
【０００２】
本開示は、概して、コンピュータシステム分野に関し、より具体的には、コンピュータビジョンアプリケーションに用いられるハッシュテーブルに関する。
【背景技術】
【０００３】
ＭａｇｉｃＬｅａｐ（商標）、Ｍｉｃｒｏｓｏｆｔ（商標）、ＨｏｌｏＬｅｎｓ（商標）、Ｏｃｕｌｕｓ（商標）、Ｒｉｆｔ（商標）のもののような拡張現実（ＡＲ）製品、仮想現実（ＶＲ）製品および複合現実（ＭＲ）製品、ならびにＶａｌｖｅ（商標）およびＨＴＣ（商標）のもののような他のＶＲシステムが出現したことで、コンピュータビジョンおよびコンピュータグラフィックスの世界は、急速に収束しつつある。そのようなシステムにおける現行のアプローチは、並行して動作する別個のグラフィックス処理ユニット（ＧＰＵ）およびコンピュータビジョンサブシステムを用いることである。これらの並列システムは、プロセッサおよび／またはプログラマブルハードウェアアクセラレータのアレイ上で動作するソフトウェアに実装されるコンピュータビジョンパイプラインと並行して、既存のＧＰＵから組み立てられ得る。
【図面の簡単な説明】
【０００４】
開示される主題の様々な目的、特徴および利点は、以下の図面に関連して検討した場合、開示される主題についての以下の詳細な説明を参照して、より完全に理解され得る。これらの図面では、同様の参照符号で同様の要素を識別する。添付図面は、概略的なものであり、縮尺どおりに描画されるようには意図されていない。明瞭にする目的で、全ての図において全てのコンポーネントに符号が付されているわけではない。開示される主題を当業者が理解できるようにするために図示が必要でない場合には、開示される主題の各実施形態の全てのコンポーネントが示されているわけでもない。
【０００５】
【図１】従来の拡張現実または複合現実レンダリングシステムを示す。
【０００６】
【図２】いくつかの実施形態によるボクセルベース拡張現実または複合現実レンダリングシステムを示す。
【０００７】
【図３】いくつかの実施形態による密なボリュメトリック表現と疎なボリュメトリック表現との間の違いを示す。
【０００８】
【図４】いくつかの実施形態によるシーンの合成図を示す。
【０００９】
【図５】いくつかの実施形態による例示的な要素ツリー構造の詳細レベルを示す。
【００１０】
【図６】いくつかの実施形態による、本願のデータ構造およびボクセルデータを利用し得る用途を示す。
【００１１】
【図７】いくつかの実施形態による、３Ｄ数字を認識するために用いられる例示的なネットワークを示す。
【００１２】
【図８】いくつかの実施形態による、暗黙の詳細レベルを用いて同じデータ構造上で実行される複数の分類を示す。
【００１３】
【図９】いくつかの実施形態による２Ｄ畳み込みニューラルネットワークによる演算排除を示す。
【００１４】
【図１０】いくつかの実施形態による例示的な試験画像の解析からの実験結果を示す。
【００１５】
【図１１】いくつかの実施形態による、演算をカリングするためのハードウェアを示す。
【００１６】
【図１２】いくつかの実施形態による、演算をカリングするためのハードウェアの改良を示す。
【００１７】
【図１３】いくつかの実施形態によるハードウェアを示す。
【００１８】
【図１４】いくつかの実施形態による、コンピュータビジョンサブシステムを使用した例示的なシステムを示す。
【００１９】
【図１５】いくつかの実施形態による、階層ボリュメトリックデータ構造を用いたレイキャスティングを示す。
【００２０】
【図１６Ａ】例示的なレイキャスティングアルゴリズムの間のレイトラバーサルの例を示す。
【図１６Ｂ】例示的なレイキャスティングアルゴリズムの間のレイトラバーサルの例を示す。
【図１６Ｃ】例示的なレイキャスティングアルゴリズムの間のレイトラバーサルの例を示す。
【００２１】
【図１７Ａ】異なるレイキャスティング技術を用いてレンダリングされた例示的な比較画像を示す。
【図１７Ｂ】異なるレイキャスティング技術を用いてレンダリングされた例示的な比較画像を示す。
【００２２】
【図１８】例示的なビジュアルプロセッシングユニット（ＶＰＵ）にアーキテクチャを示す簡略ブロックダイアグラムである。
【００２３】
【図１９】レイキャスティング技術の例示的な結果の比較を示す例示的なグラフである。
【００２４】
【図２０Ａ】異なるレイキャスティング技術の例示的な性能特性の比較を示す例示的なグラフである。
【図２０Ｂ】異なるレイキャスティング技術の例示的な性能特性の比較を示す例示的なグラフである。
【００２５】
【図２１Ａ】例示的なニューラルネットワークモデルを示す簡略ブロックダイアグラムである。
【図２１Ｂ】例示的なニューラルネットワークモデルを示す簡略ブロックダイアグラムである。
【図２１Ｃ】例示的なニューラルネットワークモデルを示す簡略ブロックダイアグラムである。
【００２６】
【図２２】視覚慣性オドメトリ法の例示的な性能を示すグラフである。
【００２７】
【図２３Ａ】従来の相対姿勢推定技術の簡略ブロックダイアグラムである。
【００２８】
【図２３Ｂ】ニューラルネットワークモデルを利用した改良された相対姿勢推定技術の簡略ブロックダイアグラムである。
【００２９】
【図２４】例示的なニューラルネットワークモデルを示す簡略ブロックダイアグラムである。
【００３０】
【図２５】例示的な点群のボクセル化を示す。
【００３１】
【図２６Ａ】コンピュータビジョン処理を強化するための例示的な技術を示すフローチャートである。
【図２６Ｂ】コンピュータビジョン処理を強化するための例示的な技術を示すフローチャートである。
【図２６Ｃ】コンピュータビジョン処理を強化するための例示的な技術を示すフローチャートである。
【００３２】
【図２７】いくつかの実施形態による例示的なマルチスロットベクトルプロセッサを示す。
【００３３】
【図２８】いくつかの実施形態による例示的なボリュメトリック加速ハードウェアを示す。
【００３４】
【図２９】いくつかの実施形態によるボクセルキューブの編成を示す。
【００３５】
【図３０】いくつかの実施形態による２レベルスパースボクセルツリーを示す。
【００３６】
【図３１】いくつかの実施形態による２レベルスパースボクセルツリーを示す。
【００３７】
【図３２】いくつかの実施形態による例示的なボクセルデータの格納を示す。
【００３８】
【図３３】いくつかの実施形態による例示的なボリュメトリックデータ構造へのボクセルの挿入を示す。
【００３９】
【図３４】いくつかの実施形態による例示的な３Ｄボリュメトリック物体の投影を示す。
【００４０】
【図３５Ａ】例示的なボリュメトリックデータ構造を伴う例示的な演算を示す。
【図３５Ｂ】例示的なボリュメトリックデータ構造を伴う例示的な演算を示す。
【図３５Ｃ】例示的なボリュメトリックデータ構造を伴う例示的な演算を示す。
【００４１】
【図３６】いくつかの実施形態による、投影を用いた簡略マップの生成を示す。
【００４２】
【図３７】いくつかの実施形態による、埋め込みデバイスからの例示的なボリュメトリック３Ｄおよび／または単純な２Ｄ測定値の例示的な集約を示す。
【００４３】
【図３８Ａ】いくつかの実施形態による２Ｄ  ２×２ビットマップ上での２Ｄ経路探索の例示的な加速を示す。
【図３８Ｂ】いくつかの実施形態による２Ｄ  ２×２ビットマップ上での２Ｄ経路探索の例示的な加速を示す。
【図３８Ｃ】いくつかの実施形態による２Ｄ  ２×２ビットマップ上での２Ｄ経路探索の例示的な加速を示す。
【００４４】
【図３９】いくつかの実施形態による、例示的なボリュメトリックデータ構造を用いた衝突検出の例示的な加速を示す。
【００４５】
【図４０】少なくともいくつかの実施形態によるデバイスを有する例示的なネットワークの簡略ブロックダイアグラムである。
【００４６】
【図４１】少なくともいくつかの実施形態による例示的なフォグまたはクラウドコンピューティングネットワークの簡略ブロックダイアグラムである。
【００４７】
【図４２】少なくともいくつかの実施形態による例示的なデバイスを含むシステムの簡略ブロックダイアグラムである。
【００４８】
【図４３】少なくともいくつかの実施形態による例示的な処理デバイスの簡略ブロックダイアグラムである。
【００４９】
【図４４】少なくともいくつかの実施形態による例示的なプロセッサのブロックダイアグラムである。
【００５０】
【図４５】少なくともいくつかの実施形態による例示的なコンピューティングシステムのブロックダイアグラムである。
【発明を実施するための形態】
【００５１】
以下の説明では、開示される主題についての完全な理解を提供すべく、開示される主題のシステムおよび方法ならびにそのようなシステムおよび方法が動作し得る環境等に関する数多くの特定の詳細を記載する。ただし、開示される主題がそのような特定の詳細なしに実施され得ることと、開示される主題が複雑になるのを回避すべく、当技術分野において周知である特定の特徴が詳細には説明されないこととが、当業者には明らかになろう。加えて、以下で提供される実施形態が例示的なものであることと、開示される主題の範囲内にある他のシステムおよび方法が存在すると考えられることとが理解されよう。
【００５２】
３次元の空間およびジオメトリのボリュームを表すデータモデルを利用し得る拡張現実、仮想現実、複合現実、自律デバイスおよびロボットに基づく、またそれらを組み込んだ様々な技術が出現している。そのような３Ｄデータまたはボリュメトリックデータを用いた様々な実環境および仮想環境の説明はこれまで、いくつかのコンピューティングシステムでは望ましい方式での処理が困難であった大きいデータセットを伴ってきた。さらに、例えば、ドローン、ウェアラブルデバイス、仮想現実システム等のデバイスが小さくなるにつれて、そのようなデバイスのメモリリソースおよび処理リソースも制約され得る。例として、ＡＲ／ＶＲ／ＭＲアプリケーションには、サポートするハードウェアを用いて生成されるグラフィカル表示のために高フレームレートが求められ得る。ただし、いくつかのアプリケーションでは、そのようなハードウェアのＧＰＵおよびコンピュータビジョンサブシステムは、望ましい結果を生成すべく（例えば、幾多の例示的な目標の中でもとりわけ、信頼できる結果を生成するフレームレートで信頼できるグラフィカルシーンを生成して、過度の待ち時間に起因するユーザの乗り物酔いを防ぐべく）、例えば最大で１３０ｆｐｓ（７ミリ秒）といった高レートでデータ（例えば、３Ｄデータ）を処理する必要があり得る。さらなるアプリケーションでは、幾多の例示的な課題の中でもとりわけ、対応するシステムの処理、メモリ、電力、アプリケーション要件における制約を満たしつつ、大きいボリュームを記述するデータを満足のいくように処理することが同様に挑戦され得る。
【００５３】
いくつかの実装において、コンピューティングシステムは、形式に従って定義されたスパースボリュメトリックデータを生成および／または使用するためのロジックを備え得る。例えば、定義されたボリュメトリックデータ構造は、様々なシステムおよびアプリケーションにおけるコンピュータビジョンおよび３Ｄレンダリングを統一するために提供され得る。物体のボリュメトリック表現は、例えば、ステレオスコーピックカメラまたは深度カメラなどの光センサを用いて撮像され得る。物体のボリュメトリック表現は、複数のボクセルを含み得る。改良されたボリュメトリックデータ構造は、対応するボリュメトリック表現を再帰的に細分化して物体の目標解像度を取得することが可能になるように定義され得る。細分化の間、これらのボクセルのうちの１つまたは複数に含まれ得るボリュメトリック表現内の空きスペースは、ボリュメトリック表現（およびサポート演算）からカリングされ得る。空きスペースは、物体の幾何学的特性を含まないボリュメトリック表現のエリアであってよい。
【００５４】
したがって、改良されたボリュメトリックデータ構造において、対応するボリューム内の個々のボクセルは、「占有」（対応するボリュメトリック空間内に存在しているいくつかのジオメトリによる）または「空」（対応するボリュームが空きスペースから成ることを表す）とタグ付けされ得る。そのようなタグはさらに、その対応するサブボリュームのうちの１つまたは複数も占有されていること（例えば、親または上位レベルのボクセルが占有とタグ付けされている場合）、または、そのサブボリュームの全てが空きスペースであること（すなわち、親または上位レベルのボクセルが空とタグ付けされている場合）を指定していると解釈され得る。いくつかの実装において、ボクセルを空とタグ付けすることにより、ボクセルおよび／またはその対応するサブボリュームボクセルを、対応するボリュメトリック表現を生成するために用いられる演算から効果的に除去できるようになり得る。ボリュメトリックデータ構造は、スパースセクサクワターナリーツリー（ＳＳＴ）形式に従ったものなど、スパースツリー構造に従ったものであってよい。さらに、スパースボリュメトリックデータ構造に対するそのようなアプローチは、物体のボリュメトリック表現を格納するためにこれまで用いられてきたものよりも比較的少ないストレージ空間を利用し得る。さらに、ボリュメトリックデータを圧縮すると、幾多の例示的な利益の中でもとりわけ、そのような表現の伝送の実行可能性が増し、そのような表現のより速い処理が可能になり得る。
【００５５】
ボリュメトリックデータ構造をハードウェアアクセラレーションして３Ｄレンダラの更新を速やかにできるようにすることにより、別個のコンピュータビジョンシステムおよびグラフィックスシステムにおいて生じ得る遅延を排除し得る。そのような遅延は、待ち時間を招くことがあり、ＡＲ、ＶＲ、ＭＲおよび他のアプリケーションにおいて用いられた場合、幾多のさらなる欠点の中でもとりわけ、ユーザの乗り物酔いを引き起こし得る。加速されたデータ構造における幾何学的特性をボクセルが占有しているかどうかを速やかに試験する能力により、リアルタイムで更新され得る低待ち時間のＡＲ、ＶＲ、ＭＲまたは他のシステムの構築が可能になる。
【００５６】
いくつかの実施形態において、ボリュメトリックデータ構造の能力は、イントラフレーム警告も提供し得る。例えば、ＡＲ、ＶＲ、ＭＲおよび他のアプリケーションにおいて、画像化されたシーン内の実物体または合成物体とユーザが衝突する可能性がある場合、または、ドローンまたはロボット用のコンピュータビジョンアプリケーションにおいて、画像化されたシーン内の実物体または合成物体とそのようなデバイスが衝突する可能性がある場合、ボリュメトリックデータ構造によって提供される処理の速度により、差し迫った衝突の警告が可能になる。
【００５７】
本開示の実施形態は、ロボット工学、拡張現実および複合現実ヘッドセット用ヘッドマウントディスプレイならびに電話およびタブレットなどの用途におけるボリュメトリックデータの格納および処理に関し得る。本開示の実施形態は、ボクセルグループ内の各ボリュメトリック要素（例えば、ボクセル）、および、オプションとして、ボクセルのジオメトリに関連する物理量を単一のビットとして表す。例えば、対応する赤・緑・青（ＲＧＢ）または他の配色エンコーディング、透明性、切り捨て符号付き距離関数（ＴＳＤＦ）情報等、６４個のボクセルのグループに関連するさらなるパラメータが、ボクセルに関連付けられ、（例えば、各ボクセルを表すのに２つまたはそれよりも多くのビットが用いられるように、）関連付けられたオプションとしての６４ビットデータ構造に格納され得る。そのような表現スキームにより、最小のメモリ要件が実現され得る。さらに、ボクセルを単一のビットで表すことにより、ボリュメトリック表現の要素を論理的または数学的に組み合わせるための多くの簡略化された計算の実行が可能になる。ボリュメトリック表現の要素を組み合わせることは、例えば、ボリューム内の平面についてＯＲ演算して３Ｄボリュメトリックデータの２Ｄ投影を作成すること、および、とりわけ２．５Ｄマニホールド内の占有されているボクセルの数をカウントすることにより表面積を計算することを含み得る。比較する場合、ＸＯＲロジックを用いて６４ビットサブボリューム（例えば、４＾３サブボリューム）を比較でき、ボリュームを反転させることができる。幾多の例の中でもとりわけ、物体をマージしてそれらを共にＯＲ演算することにより、ハイブリッド物体を作成できる。
【００５８】
図１は、頭部の急速な動きに起因する変化と、レンダリングされたグラフィックスにオクルージョンおよびシャドーを生成し得る環境の変化とを考慮するためのポストレンダリング補正装置を有する並列グラフィックスレンダリングサブシステムおよびコンピュータビジョンサブシステムから成る従来の拡張現実または複合現実システムを示す。１つの例示的な実装において、システムは、バス１０１を介した相互接続、オンチップネットワークオンチップまたは他の相互接続によりグラフィックスパイプライン、コンピュータビジョンパイプラインおよびポストレンダリング補正装置の実行を制御するために、ホストメモリ１２４によりサポートされるホストプロセッサ１００を含み得る。相互接続により、適切なソフトウェアを実行するホストプロセッサ１００は、グラフィックス処理ユニット（ＧＰＵ）１０６、関連付けられたグラフィックスメモリ１１１、コンピュータビジョンパイプライン１１６および関連付けられたコンピュータビジョンメモリ１２４の実行を制御することが可能になる。一例において、ＯｐｅｎＧＬグラフィックスシェーダ１０７（例えば、三角形リスト１０５上で動作する）を介した、ＧＰＵ１０６を用いるグラフィックスのレンダリングが、コンピュータビジョンパイプラインよりも遅い速度で行われ得る。結果として、ＧＰＵ１０６によりグラフィックスがレンダリングされてから生じた可能性がある頭部姿勢およびオクルージョンシーンジオメトリの変化を考慮するために、ワープエンジン１０８とディスプレイ／オクルージョンプロセッサ１０９とを介したポストレンダリング補正が実行され得る。ＧＰＵ１０６の出力は、幾多の例の中でもとりわけ、頭部姿勢パイプライン１２０およびオクルージョンパイプライン１２２からの正しい制御信号１２１および１２３と併せて用いることで、頭部姿勢１１９およびオクルージョンジオメトリ１１３のあらゆる変化を考慮に入れるための正しいグラフィックス出力を生成できるように、タイムスタンピングされる。
【００５９】
ＧＰＵ１０６と並行して、複数のセンサおよびカメラ（例えば、深度およびビジョンの処理１１７のための能動ステレオカメラおよび受動ステレオカメラを含む）が、コンピュータビジョンパイプライン１１６に接続され得る。コンピュータビジョンパイプライン１１６は、少なくとも３つステージのうちの１つまたは複数を含んでよく、これらのステージの各々は、下位レベル処理の複数のステージを含んでよい。一例において、コンピュータビジョンパイプライン１１６内のステージは、画像信号処理（ＩＳＰ）パイプライン１１８、頭部姿勢パイプライン１２０およびオクルージョンパイプライン１２２であってよい。ＩＳＰパイプライン１１８は、入力カメラセンサ１１７の出力を受け取ってそれらを調整することで、それらを後続の頭部姿勢およびオクルージョンの処理に用いることができるようにし得る。頭部姿勢パイプライン１２０は、ＩＳＰパイプライン１１８の出力を受け取ってヘッドセット１１０内の慣性測定ユニット（ＩＭＵ）の出力１１９と共に用いることで、対応する出力グラフィックスフレームがＧＰＵ１０６によりレンダリングされてからの頭部姿勢の変化を計算し得る。頭部姿勢パイプライン（ＨＰＰ）１２０の出力１２１は、ユーザ指定のメッシュと共にワープエンジン１０８に適用され、ＧＰＵ出力１０２を歪めることにより、更新された頭部姿勢位置１１９と一致し得る。オクルージョンパイプライン１２２は、頭部姿勢パイプライン１２１の出力を受け取り、対応するシャドー１１４をシーンジオメトリ上に生成するはずである、視野に入ってくる手１１３（または他の例示的な物体）など、視野内の新しい物体を探し得る。オクルージョンパイプライン１２２の出力１２３は、視野をワープエンジン１０８の出力１０３の上に正確に重ね合わせるために、ディスプレイおよびオクルージョンプロセッサ１０９により用いられ得る。幾多の例示的な使用事例および特徴の中でもとりわけ、ディスプレイおよびオクルージョンプロセッサ１０９は、計算された頭部姿勢１１９を用いて合成シャドー１１４用のシャドーマスクを生成し、ディスプレイおよびオクルージョンプロセッサ１０９は、手１１３のオクルージョンジオメトリをシャドーマスクの上に合成して、グラフィカルシャドー１１４をワープエンジン１０８の出力１０３の上に生成し、拡張／複合現実ヘッドセット１１０上に表示するための最終出力フレーム１０４を生成し得る。
【００６０】
図２は、本開示のいくつかの実施形態によるボクセルベースの拡張現実または複合現実レンダリングシステムを示す。図２に示される装置は、ホストＣＰＵ２００および関連付けられるホストメモリ２０１上に構成されたホストシステムを含み得る。そのようなシステムは、バス２０４、オンチップネットワークまたは他の通信メカニズムを介して、統合されたコンピュータビジョンおよびグラフィックスパイプライン２２３、ならびに、ヘッドマウント拡張現実または複合現実ディスプレイ２１１上に表示するために最終シーンにレンダリングされる実ボクセルおよび合成ボクセルを含む、関連付けられる統合されたコンピュータビジョンおよびグラフィックスメモリ２１３と通信し得る。また、ＡＲ／ＭＲディスプレイ２１１、複数の能動および受動イメージセンサ２１４と、頭部姿勢２２２の向きの変化を測定するために用いられる慣性測定ユニット（ＩＭＵ）２１２とを含み得る。
【００６１】
組み合わされたレンダリングパイプラインにおいて、合成ジオメトリは、合成ボクセルジオメトリ２０２を生成するためにＯｐｅｎＧＬ  ＪｉＴ（ジャストインタイム）トランスレータ２０５により処理される三角形リスト２０４から開始して生成され得る。合成ボクセルジオメトリは、例えば、三角形リストから三角形の主平面を選択することにより生成され得る。次に、選択された平面における各三角形の２Ｄラスタライズが、（例えば、Ｘ方向およびＺ方向において）実行され得る。３番目の座標（例えば、Ｙ）は、三角形にわたって補間される属性として作成され得る。ラスタライズされた三角形の各ピクセルは、対応するボクセルの定義をもたらし得る。この処理は、ＣＰＵまたはＧＰＵのいずれかにより実行され得る。ＧＰＵにより実行される場合、幾多の例示的な実装の中でもとりわけ、ラスタライズされた三角形の各々がＧＰＵからリードバックされて、ＧＰＵがピクセルを描画したボクセルが作成され得る。例えば、合成ボクセルは、リストの２Ｄバッファを用いて生成されてよく、リストの各エントリは、そのピクセルにおいてレンダリングされたポリゴンの深度情報を格納する。例えば、モデルは、正投影視点（例えば、上面視）を用いてレンダリングされ得る。例えば、例示的なバッファにおいて提供される全ての（ｘ，ｙ）は、対応するボクセルボリューム内（例えば、（ｘ，ｙ，０）から（ｘ，ｙ，４０９５）まで）の（ｘ，ｙ）の列を表し得る。次に、各列は、各リスト内の情報を用いて、３Ｄスキャンラインとして情報からレンダリングされ得る。
【００６２】
図２の例を続けると、いくつかの実装において、合成ボクセルジオメトリ２０２は、位置特定およびマッピングの同時実行（ＳＬＡＭ）パイプライン２１７を用いて構成される、測定されたジオメトリボクセル２２７と組み合わされ得る。ＳＬＡＭパイプラインは、画像信号処理（ＩＳＰ）パイプライン２１５を用いて最初に処理される能動センサおよび／または受動イメージセンサ２１４（例えば、２１４．１および２１４．２）を用いて出力２２５を生成してよく、出力２２５は、深度パイプライン２１６により深度画像２２６へ変換され得る。能動または受動イメージセンサ２１４（２１４．１および２１４．２）は、幾多の例の中でもとりわけ、能動または受動ステレオセンサ、構造化光センサ、飛行時間センサを含み得る。例えば、深度パイプライン２１６は、構造化光または飛行時間センサ２１４．１からの深度データ、あるいは受動ステレオセンサ２１４．２からの深度データを処理できる。１つの例示的な実装において、ステレオセンサ２１４．２は、幾多の例示的な実装の中でもとりわけ、受動ステレオセンサのペアを含み得る。
【００６３】
深度パイプライン２１５により生成される深度画像が、ＳＬＡＭアルゴリズム（例えば、Ｋｉｎｅｃｔ  Ｆｕｓｉｏｎ）を用いて密なＳＬＡＭパイプライン２１７により処理されて、測定されたジオメトリボクセル２２７のボクセル化されたモデルが生成され得る。測定されたジオメトリボクセル２２７（例えば、実際のボクセルジオメトリ）を合成ボクセルジオメトリ２０２と組み合わせることで、ディスプレイプロセッサ２１０を介してディスプレイデバイス（例えば、ＶＲ用途またはＡＲ用途におけるヘッドマウントディスプレイ２１１）に出力するためのシーンの２Ｄレンダリングを生成し得るレイトレーシングアクセラレータ２０６が提供され得る。そのような実装において、測定されたジオメトリボクセル２２７および合成ジオメトリ２０２の実際のボクセルから、完全なシーンモデルが構成され得る。結果として、（例えば、図１のように）２Ｄレンダリングされたジオメトリをワープさせる必要はない。そのような実装は、頭部姿勢追跡センサおよび対応するロジックと組み合わされることで、実際のジオメトリと測定されたジオメトリとを正確に位置合わせし得る。例えば、例示的な頭部姿勢パイプライン２２１は、ヘッドマウントディスプレイ２１１に装着されたＩＭＵ２１２からの頭部姿勢測定値２３２を処理でき、頭部姿勢測定パイプラインの出力２３１は、ディスプレイプロセッサ２１０を介したレンダリングの間、考慮され得る。
【００６４】
いくつかの例において、音声残響モデルをレンダリングすべく、かつ、実世界、仮想または複合現実シーンの物理特性をモデル化すべく、統合されたレンダリングパイプラインは、測定されたジオメトリボクセル２２７（例えば、実際のボクセルモデル）および合成ジオメトリ２０２（例えば、合成ボクセルモデル）も用い得る。例として、物理パイプライン２１８は、測定されたジオメトリボクセル２２７および合成ボクセルジオメトリ２０２を受け取り、レイキャスティングアクセラレータ２０６を用いてヘッドマウントディスプレイ（ＨＭＤ）２１１内の左右のイヤホン用の出力音声サンプルを計算することで、ボクセルデータ構造に組み込まれた音響反射係数を用いて出力サンプル２３０を計算し得る。同様に、２０２および２２７から成る統合されたボクセルモデルも、合成ＡＲ／ＭＲシーン内の合成物体の物理特性の更新を決定するために用いられ得る。物理パイプライン２１８は、合成シーンジオメトリを入力として受け取ってから、レンダリングのために、かつ、物理モデルの将来の反復の基礎として合成ジオメトリ２０２の更新２２８を計算する前に、レイキャスティングアクセラレータ２０６を用いて衝突を計算する。
【００６５】
いくつかの実装において、図２に示されるシステムなどのシステムはさらに、幾多の例の中でもとりわけ、ＩＳＰパイプライン２１５の出力からのＲＧＢ映像／画像入力、ＳＬＡＭパイプライン２１７の出力からのボリュメトリックシーンデータのいずれかを処理できる、畳み込みニューラルネットワーク（ＣＮＮ）を実装および／または利用するための１つまたは複数のハードウェアアクセラレータを備え得る。ニューラルネットワーク分類器は、ハードウェア（ＨＷ）畳み込みニューラルネットワーク（ＣＮＮ）アクセラレータ２０７を排他的に用いて、または、プロセッサとＨＷ  ＣＮＮアクセラレータ２０７との組み合わせで動作することで、出力分類２３７を生成できる。ボリュメトリック表現に関する推論を行うためのＨＷ  ＣＮＮアクセラレータ２０７の可用性により、幾多の例示的な使用の中でもとりわけ、測定されたジオメトリボクセル２２７内のボクセルのグループに、特定の物体クラスに属するものとして符号が付されることが可能になり得る。
【００６６】
ボクセルに符号が付されることにより（例えば、ＣＮＮを用いてハードウェアアクセラレーションをサポートすることにより）、それらのボクセルが属するそれらの物体を、既知の物体に対応するシステムにより認識することが可能になり得る。ソースボクセルは、測定されたジオメトリボクセル２２７から除去され、物体に対応するバウンディングボックス、および／または、幾多の例示的な情報の中でもとりわけ、物体の原点、物体の姿勢、物体記述子についての情報により置き換えられ得る。これにより、シーンについての意味論的にはるかに有意義な説明がもたらされ得る。この説明は、例えば、幾多の例示的な使用の中でもとりわけ、シーン内の物体と相互作用するためのロボット、ドローンまたは他のコンピューティングシステムによる入力として、または、シーン内の物体の吸音係数を調べてそれらをシーンの音響モデルに反映するためのオーディオシステムによる入力として用いられ得る。
【００６７】
図２において示され説明される例示的なシステムのパイプラインを実装するために、１つまたは複数のプロセッサデバイスおよびハードウェアアクセラレータが提供され得る。幾多の例示的な実装の中でもとりわけいくつかの実装において、組み合わされたレンダリングパイプラインのハードウェア要素およびソフトウェア要素の全てがＤＲＡＭコントローラ２０９へのアクセスを共有してよく、結果として、共有ＤＤＲメモリデバイス２０８にデータを格納することが可能になる。
【００６８】
図３は、いくつかの実施形態による密なボリュメトリック表現と疎なボリュメトリック表現との間の違いを示すために提示されている。図３の例に示されるように、実世界または合成物体３００（例えば、ウサギの像）は、ボクセルの観点から、３０２に示される密な方式または３０４に示される疎な方式のいずれかで表現され得る。３０２などの密な表現の利点は、ボリューム内の全てのボクセルへのアクセスの速度が均一であることだが、マイナス面は、必要とされ得る記憶容量である。例えば、５１２＾３要素ボリューム（例えば、Ｋｉｎｅｃｔセンサを用いてスキャンされるボリュームに対する１ｃｍの解像度で５ｍに対応する）などの密な表現の場合、ボクセル毎に４バイトの切り捨て符号付き距離関数（ＴＳＤＦ）を用いて相対的に小さいボリュームを格納する５１２メガバイト。他方では、疎な表現を具現化したオクツリー表現３０４は、実世界シーン内に実際のジオメトリが存在するそれらのボクセルのみを格納することにより、同じボリュームを格納するために必要なデータ量を低減し得る。
【００６９】
図４を参照すると、いくつかの実施形態による例示的なシーンの合成図が示される。特に、図４は、合成ボクセルデータおよび実世界ボクセルデータについて、同等のバウンディングボックス４００および４０２内にそれぞれある合成ボクセル４０１および実世界で測定されたボクセル４０３を表すために、シーン４０４の合成図がどのように、並列データ構造を用いて維持され、表示され、またはさらなる処理を受け得るかを示す。図５は、いくつかの実施形態による均一な４＾３要素ツリー構造の詳細レベルを示す。いくつかの実装において、図５の例に表されているようなオクツリー表現を用いてボリューム内の各ボクセルを記述するために、わずか１ビットが利用され得る。ただし、オクツリーベースの技術の欠点は、オクツリー内の特定のボクセルにアクセスするために利用される間接メモリアクセスの数であり得る。スパースボクセルオクツリーの場合、幾多の例示的な利点の中でもとりわけ、同じジオメトリが有利に複数の詳細レベルで暗黙的に表され得るので、レイキャスティング、ゲーム物理学、ＣＮＮおよび他の技術などの動作が可能になり、さらなる計算からシーンの空き部分をカリングすることで、必要とされる記憶容量だけでなく、消費電力および計算負荷の観点からも全体的な低減をもたらすことが可能になる。
【００７０】
一実装において、ボクセル当たり１ビットのメモリ要件で５０１に示されるような４＾３（または６４ビット）符号なし整数としてボリュメトリック情報を編成するために、改良されたボクセル記述子（本明細書において、ボリュメトリックデータ構造とも称される）が提供され得る。この例では、ボクセル当たり１ビットだと、切り捨て符号付き距離関数値を格納するには、（６４ビットを利用するＳＬＡＭｂｅｎｃｈ／ＫＦｕｓｉｏｎにおけるＴＳＤＦと比較して）不十分である。本例では、さらなる（例えば、６４ビットの）フィールド５００がボクセル記述子に含まれ得る。この例は、６４ビットフィールド５００内のＴＳＤＦを１６ビットとしつつ、ｘ、ｙおよびｚにおけるさらなる２ビットの分数分解能をボクセル記述子５０１に暗黙的に提供することで、６４ビットフィールド５００内のボクセルＴＳＤＦとボクセル位置５０１との組み合わせを、ＳＬＡＭｂｅｎｃｈ／ＫＦｕｓｉｏｎまたは他の例において用いられるようなはるかに高い解像度ＴＳＤＦと同等にし得るように、さらに強化され得る。例えば、６４ビットフィールド５００（ボクセル記述子）内のさらなるデータは、（例えば、受動ＲＧＢセンサを介したシーンからの）各々が１バイトであるサブサンプリングされたＲＧＢ色情報と、８ビットの透明性値アルファと、２つの１バイトの予約フィールドＲ１およびＲ２とを格納するために用いられ得る。これらの予約フィールドは特定用途向けであってよく、例えば、幾多の例の中でもとりわけ、オーディオ用途の音響反射率、物理用途の剛性、対象材料の種類を格納するために用いられ得る。
【００７１】
図５に示されるように、ボクセル記述子５０１は、１６個のボクセル５０２を各々が含む４つの２Ｄ平面へ論理的にグループ化され得る。これらの２Ｄ平面（またはボクセル平面）の各々は、図５に表される４の昇累乗での連続分解に基づいて、オクツリースタイル構造のレベルを記述し得る。この例示的な実装において、６４ビットボクセル記述子が選ばれるのは、対応するシステム実装において用いられる６４ビットバスインフラストラクチャと良好に一致するからである（だが、他のボクセル記述子のサイズおよび形式が、他のシステムの実装において提供され、システムのバスまたは他のインフラストラクチャに従ってサイズ設定され得る）。いくつかの実装において、ボクセル記述子は、ボクセルを取得するために用いられるメモリアクセスの数を低減するようにサイズ設定され得る。例えば、幾多の例示的な検討事項および実装の中でもとりわけ、６４ビットボクセル記述子を用いることにより、２＾３要素で動作する従来のオクツリーと比較して、オクツリー内の任意のレベルでボクセルにアクセスするために必要なメモリアクセスの数を１／２に低減し得る。
【００７２】
一例において、オクツリーは、４＾３ルートボリューム５０３と、下にある層５０４、５０５および５０６におけるジオメトリの存在についてのコードが例示的な２５６＾３ボリュームで示される、ゼロでないエントリの各々とから開始して、記述され得る。この特定の例では、オクツリー内の最下位レベルにアクセスすべく、４つのメモリアクセスが用いられ得る。そのようなオーバヘッドが高過ぎる場合、代替的なアプローチを採用することで、オクツリーの最上位レベルを、５０７に示される６４＾３などのより大きいボリュームとしてエンコードし得る。この場合、５０７内のゼロでないエントリの各々は、下にある２５６＾３ボリューム５０８内の下にある４＾３オクツリーの存在を示し得る。この代替的な編成の結果、５０３、５０４および５０５に示される代替的な定式化と比較して、２５６＾３ボリューム５０８内の任意のボクセルにアクセスするために必要となるのは２つのメモリアクセスのみである。この後者のアプローチは、オクツリー構造をホスティングするデバイスがより大量の埋め込みメモリを有することで、外部メモリ内のボクセルオクツリー５０８のより低くアクセス頻度がより少ない部分のみが許可される場合に有利である。このアプローチでは、例えば、全体としてより大きい（例えば、６４＾３）ボリュームがオンチップメモリに格納される場合、格納の観点からコストがより多くなることがあるが、トレードオフにより、幾多の例示的な利点の中でもとりわけ、メモリアクセスの高速化（例えば、２倍）と消費電力の大幅な低減とが可能になり得る。
【００７３】
図６を参照すると、いくつかの実施形態による、本願のデータ構造およびボクセルデータを利用し得る例示的な用途を示すブロックダイアグラムが示されている。一例において、図５に示されるものなど、さらなる情報が、例示的なボクセル記述子５００を通じて提供され得る。ボクセル記述子により、利用される全体的なメモリがボクセル当たり２ビットに増え得るが、ボクセル記述子により、図６に表されるようなボクセルデータを利用し得る広範囲の用途が可能になり得る。例えば、幾多の実装の中でもとりわけ、密なＳＬＡＭシステム６０１（例えば、ＳＬＡＭｂｅｎｃｈ）を用いて生成されるような共有ボリュメトリック表現６０２が、オーディオレイキャスティング６０４において用いられるグラフィックレイキャスティングまたはレイトレーシング６０３を用いてシーンをレンダリング際に用いられ得る。さらに他の例において、ボリュメトリック表現６０２は、畳み込みニューラルネットワーク（ＣＮＮ）推論６０５にも用いられてよく、クラウドインフラストラクチャ６０７によりバックアップされ得る。いくつかの事例において、クラウドインフラストラクチャ６０７は、推論を介してアクセスされ得る、木、家具または他の物体（例えば、６０６）などの物体の詳細なボリュメトリック記述子を含み得る。物体の推論またはそうでなければ識別に基づいて、対応する詳細な記述子がデバイスへ返されることにより、ボリュメトリック表現６０２のボクセルを、幾多の例示的な特徴の中でもとりわけ、姿勢情報と物体の特性を含む記述子とを有するバウンディングボックス表現に置き換えることが可能になり得る。
【００７４】
さらに他の実施形態において、上記のボクセルモデルは、さらに、または代替的に、ボリュメトリック表現６０２からの３Ｄから２Ｄへの投影を用いて例示的な環境６０８の２Ｄマップを構築するために、いくつかのシステムにおいて利用され得る。これらの２Ｄマップは、クラウドインフラストラクチャおよび／または他のネットワークベースリソース６０７を介した通信機械を介して再び共有され、クラウドソーシング技術を用いて高品質のマップを構築するために（例えば、同じクラウドインフラストラクチャを用いて）集約され得る。これらのマップは、クラウドインフラストラクチャ６０７により、接続された機械およびデバイスに対して共有され得る。さらに別の例では、（例えば、車両またはロボットの幅および高さが固定されていると仮定すると、）２Ｄマップは、投影に続けて区分的簡略化６０９を用いて、超低帯域幅用途向けに改良され得る。次に、簡略化された経路は、経路の区分的線形セグメント当たり単一のＸ，Ｙ座標ペアのみを有するので、車両６０９の経路をクラウドインフラストラクチャ６０７に伝達するために必要とされ、かつ、クラウドソーシング技術を用いて高品質のマップを構築するためにその同じクラウドインフラストラクチャ６０７に集約される帯域幅の量が低減され得る。これらのマップは、クラウドインフラストラクチャ６０７により、接続された機械およびデバイスに対して共有され得る。
【００７５】
これらの異なる用途を可能にすべく、共通の機能が、幾多の例の中でもとりわけ、いくつかの実装において、例えば、共有ソフトウェアライブラリを通じて提供されてよく、いくつかの実施形態において、ハードウェアアクセラレータまたはプロセッサ命令セットアーキテクチャ（ＩＳＡ）拡張を用いて加速されてよい。例えば、そのような機能は、記述子へのボクセルの挿入、ボクセルの削除またはボクセル６１０のルックアップを含み得る。いくつかの実装では、幾多の例の中でもとりわけ、ボリューム６３０からの点／ボクセルの削除だけでなく、衝突検出機能６２０もサポートされ得る。上で紹介したように、システムは、対応するボリュメトリック表現６０２（３Ｄボリューム）からＸ方向、Ｙ方向およびＺ方向に２Ｄ投影６４０を迅速に生成するための機能を備え得る（例えば、これは、経路または衝突の決定の基礎として役立ち得る）。いくつかの場合において、ヒストグラムピラミッド６５０を用いてボリュメトリック表現６０２から三角形リストを生成できることも有利になり得る。さらに、システムは、ボリュメトリック空間６０２の２Ｄ表現および３Ｄ表現内の自由経路６６０を迅速に決定するための機能を備え得る。そのような機能は、様々な用途において有用であり得る。幾多の例の中でもとりわけ、ボリューム内のボクセルの数を詳述する、ポピュレーションカウンタを用いて物体の表面を決定してボリュメトリック表現６０２のマスキングされた領域内の１ビットの数をカウントするなどのさらなる機能が提供され得る。
【００７６】
図７の簡略ブロックダイアグラムを参照すると、少なくともいくつかの実施形態による、３Ｄ数字を認識する機能を備えたシステムを含む例示的なネットワークが示されている。例えば、図６に示される用途のうちの１つは、図７においてより詳細に説明するボリュメトリックＣＮＮアプリケーション６０５である。図７では、米国立標準技術研究所（ＭＮＩＳＴ）の混合データセットなどのデータセットから生成される３Ｄ数字７００を認識するために、例示的なネットワークが用いられる。そのようなデータセット内の数字は、トレーニングの前にＸ、ＹおよびＺにおける適切な回転および並進を数字に適用することによりＣＮＮベースの畳み込みネットワーク分類器７１０をトレーニングするために用いられ得る。トレーニングされたネットワーク７１０は、埋め込みデバイスにおける推論に用いられる場合、幾多の例の中でもとりわけ、数字がＸ、ＹおよびＺにおける回転および並進７２０の対象になるときでさえシーン内の３Ｄ数字を高精度で分類するために用いられ得る。いくつかの実装において、ＣＮＮ分類器の動作は、図２に示されるＨＷ  ＣＮＮアクセラレータ２０７により加速され得る。ニューラルネットワークの第１の層は、ボリュメトリック表現６０２内のボクセルを用いて乗算を実行する。そのため、ゼロによる乗算は常にゼロであり、データ値Ａによる１（ボクセル）による乗算はＡに等しくなるので、これらの算術演算はスキップされ得る。
【００７７】
図８は、暗黙の詳細レベルを用いて同じデータ構造に対して実行される複数の分類を示す。ボリュメトリック表現６０２を用いたＣＮＮ分類のさらなる改良は、オクツリー表現が、図５に示されるようにオクツリー構造内に複数の詳細レベルを暗黙的に含むので、暗黙の詳細レベル８００、８１０および８２０を並行して用いて、かつ、図８に示されるような単一の分類器８３０または複数の分類器を並行して用いて、複数の分類を同じデータ構造に対して実行できるということであってよい。従来のシステムでは、分類パス間での必要な画像サイズ変更に起因して、同等の並列分類が遅くなり得る。そのようなサイズ変更は、本明細書に記載するボクセル構造を適用する実装では割愛され得る。なぜなら、同じオクツリーは、複数の詳細レベルで同じ情報を含み得るからである。実際には、ボリュメトリックモデルに基づく単一のトレーニングデータセットは、従来のＣＮＮネットワークにおいて必要とされるようなサイズ変更されたトレーニングデータセットではなく、これらの詳細レベルの全てをカバーし得る。
【００７８】
図９の例を参照すると、いくつかの実施形態による２Ｄ  ＣＮＮによる例示的な演算排除が示される。演算排除は、３ＤボリュメトリックＣＮＮだけでなく、図９に示されるような２Ｄ  ＣＮＮに対しても用いられ得る。例えば、図９では、第１の層において、ビットマップマスク９００が、入力９１０の予想される「形状」を記述するために用いられてよく、着信映像ストリーム９２０に適用されてよい。一例において、演算排除は、３ＤボリュメトリックＣＮＮに対してだけでなく、２ＤボリュメトリックＣＮＮに対しても用いられ得る。例えば、図９の例の２Ｄ  ＣＮＮでは、ビットマップマスク９００が、入力９１０の予想される「形状」を記述するためにＣＮＮの第１の層に適用されてよく、着信映像ストリーム８２０など、ＣＮＮの入力データに適用されてよい。例として、ＣＮＮネットワーク内でのトレーニングまたは推論のためにビットマップマスクを歩行者の画像に適用した効果が図９に示される。図９では、９０１が、歩行者９０１の元の画像を表し、９０３が、ビットマップマスクが適用された対応するバージョンを表す。同様に、歩行者を含まない画像が９０２に示され、対応するビットマップマスキングバージョンが９０４に示されている。検出器により予想される、予想された２Ｄまたは３Ｄのジオメトリの知識を通じてＣＮＮのトレーニングまたは推論に必要とされる演算の数を低減すべく、任意の種類の２Ｄまたは３Ｄの物体に同じ方法を適用できる。３Ｄボリュメトリックビットマップの例が９１１に示される。実際のシーンにおける推論のための２Ｄビットマップの使用が９２０に示される。
【００７９】
図９の例示的な実装において、概念的なビットマップが（９００に）示されているが、実際のビットマップは、物体９１０の特定のクラスについて一連のトレーニング画像を平均化することにより生成される。示されている例は２次元であるが、ボクセル当たり１ビットの提案されるボリュメトリックデータ形式で、３Ｄ物体について同様のビットマップマスクを生成することもできる。実際には、幾多の例示的な実装の中でもとりわけ、この方法は、ボクセル／ピクセル当たりさらなるビットを用いて２Ｄまたは３Ｄの物体の予想される色範囲または他の特性を指定するために、潜在的に拡張されることもあり得る。
【００８０】
図１０は、いくつかの実施形態による、１０，０００個のＣＩＦＡＲ−１０試験画像の解析を伴う例示的な実験の結果を示す表である。いくつかの実装において、演算排除を用いて、図１０に示されるＬｅＮｅｔ  １０００などのＣＮＮネットワークで頻繁に行われる正規化線形ユニット（ＲｅＬＵ）演算に起因する１Ｄ、２Ｄおよび３ＤのＣＮＮにおける中間計算を排除できる。図１０に示されるように、１０，０００個のＣＩＦＡＲ−１０試験画像を用いる実験では、ＲｅＬＵユニットにより生成されるデータ依存ゼロの割合は、最大で８５％に達し得る。これは、ゼロの場合にはゼロを認識し、かつ、これに応答して、対応するデータのフェッチも、対応する乗算演算の実行も行わないシステムが提供され得ることを意味する。この例では、８５％は、米国立標準技術研究所（ＭＮＩＳＴ）の修正済み試験データセットから生成されるＲｅＬＵ動的ゼロの割合を表す。これらのゼロに対応する、対応する演算排除は、幾多の例示的な利益の中でもとりわけ、消費電力要件およびメモリ帯域幅要件を低減するのに役立ち得る。
【００８１】
些細な演算は、ビットマップに基づいてカリングされ得る。例えば、そのようなビットマップの使用は、参照により全体が本明細書に組み込まれる、「Ｃｉｒｃｕｉｔ  ｆｏｒ  ｃｏｍｐｒｅｓｓｉｎｇ  ｄａｔａ  ａｎｄ  ａ  ｐｒｏｃｅｓｓｏｒ  ｅｍｐｌｏｙｉｎｇ  ｔｈｅ  ｓａｍｅ」と題する米国特許第８，７１３，０８０号に記載され図示されている原理および実施形態に従ったものであってよい。いくつかの実装は、やはり参照により全体が本明細書に組み込まれる、「Ｈａｒｄｗａｒｅ  ｆｏｒ  ｐｅｒｆｏｒｍｉｎｇ  ａｒｉｔｈｍｅｔｉｃ  ｏｐｅｒａｔｉｏｎｓ」と題する米国特許第９，１０４，６３３号に記載され図示されているシステム、回路および他の実装など、そのようなビットマップを用いることができるハードウェアを提供し得る。
【００８２】
図１１は、いくつかの実施形態による、ビットマップに基づいて些細な演算をカリングするための機能を提供すべくシステムへ組み込まれ得るハードウェアを示す。この例では、繰り返される畳み込み層を含む多層ニューラルネットワークが提供される。ハードウェアは、１つまたは複数のプロセッサ、１つまたは複数のマイクロプロセッサ、１つまたは複数の回路および１つまたは複数のコンピュータ等を含み得る。この特定の例では、ニューラルネットワークは、最初の畳み込み処理層１１００、続いてプーリング処理１１１０、そして最後に、正規化線形ユニット（ＲｅＬＵ）関数１１２０などの活性化関数処理を含む。ＲｅＬＵ出力ベクトル１１３１を提供するＲｅＬＵユニット１１２０の出力は、ＲｅＬＵ出力ベクトル１１３１を受信する次の畳み込み処理層１１８０に（例えば、場合によっては、遅延１１３２を介して）接続され得る。１つの例示的な実装において、ＲｅＬＵビットマップ１１３０は、次の畳み込みユニット１１８０へのＲｅＬＵユニット１１２０の接続と並行して生成されてもよい。ＲｅＬＵビットマップ１１３０は、ＲｅＬＵ出力ベクトル１１３１のうちのどの要素がゼロでどの要素がゼロでないかを示す。
【００８３】
一実装において、ニューラルネットワークの計算に伴う演算を排除する機会を、有効になっているハードウェアに通知するために、ビットマップ（例えば、１１３０）が生成されるか、またはそうでなければ提供され得る。例えば、ＲｅＬＵビットマップ１１３０内のビットは、ビットマップスケジューラ１１６０により解釈され得る。ビットマップスケジューラ１１６０は、ゼロによる乗算で常にゼロが出力として生成されると仮定すると、ＲｅＬＵビットマップ１１３０内の対応するバイナリゼロが存在する、ＲｅＬＵ出力ベクトル１１３１のゼロであるエントリをスキップするよう、次の畳み込みユニット１１８０内の乗算器に命令する。並行して、ＲｅＬＵビットマップ１１３０内のゼロに対応するデータ／重みに対するアドレス生成器１１４０からのメモリフェッチも、スキップされ得る。なぜなら、次の畳み込みユニット１１８０によりスキップされることになる重みをフェッチする価値がほとんどないからである。取り付けられたＤＤＲ  ＤＲＡＭストレージデバイス１１７０からＤＤＲコントローラ１１５０を介して重みがフェッチされる場合、待ち時間が非常に長くなり、いくつかのオンチップ帯域幅および関連する消費電力だけしか節約できないことがある。他方では、重みがオンチップＲＡＭストレージ１１８０からフェッチされる場合、特に、ＲＡＭ／ＤＤＲフェッチ遅延１１３２に対応する遅延が次の畳み込みユニット１１８０への入力で追加される場合には、重みフェッチ演算の全体をバイパス／スキップすることが可能になり得る。
【００８４】
図１２を参照すると、いくつかの実施形態による、些細な演算をカリングするための（または演算排除を実行するための）回路および他のロジックを備える例示的なハードウェアの改良を示す簡略ブロックダイアグラムが提示されている。図１２の例に示されるように、すぐ前の最大プーリングユニット１２１０または畳み込みユニット１２００から入力されるＲｅＬＵユニット１２２０の符号を前もって予測するために、さらなるハードウェアロジックが提供され得る。符号予測およびＲｅＬＵビットマップ生成を最大プーリングユニット１２１０に追加することにより、ＲｅＬＵビットマップ情報をタイミングの観点からより早く予測して、アドレス生成器１２４０を通じて生じ得る遅延を、外部ＤＤＲコントローラ１２５０およびＤＤＲストレージ１２７０または内部ＲＡＭストレージ１２７１を通じてカバーすることが可能になり得る。遅延が十分に小さい場合には、メモリからのフェッチの結果が決して用いられないと決定できるので、ＲｅＬＵビットマップをアドレス生成器１２４０において解釈でき、ＲｅＬＵビットマップゼロに関連付けられたメモリフェッチを完全にスキップできる。図１１のスキームに対するこの修正により、幾多の例示的な特徴および機能の中でもとりわけ、さらなる電力を節約でき、ＤＤＲアクセス経路（例えば、１２４０から１２５０まで、１２５０から１２７０まで）またはＲＡＭアクセス経路（例えば、１２４０から１２７１まで）を通じた遅延が、遅延ステージ１２３２を保証することにならないよう十分に小さい場合には、次の畳み込みユニット１２８０への入力で遅延ステージ（例えば、１１３２、１２３２）を除去することも可能になり得る。
【００８５】
図１３は、いくつかの実施形態による例示的なハードウェアを示す別の簡略ブロックダイアグラムである。例えば、ＣＮＮ  ＲｅＬＵ層は、負の入力に対応する多数の出力ゼロを生成できる。実際には、負のＲｅＬＵ入力は、前の層（例えば、図１３の例におけるプーリング層）への符号入力を見ることにより、予測的に決定され得る。最上位ビット（ＭＳＢ）の観点から浮動小数点および整数演算が明示的に符号付けられ得るので、畳み込み層において乗算される入力のベクトルにわたる単純なビット単位の排他的ＯＲ（ＸＯＲ）演算により、図１３に示されるような出力ゼロがどの乗算で生成されるかを予測できる。結果として生じる符号予測ＲｅＬＵビットマップベクトルは、上記の他の例において説明した方式などで、乗算のサブセットと、関連付けられる係数のメモリからの読み取りとを決定して排除するための基礎として用いられ得る。
【００８６】
前のプーリングステージまたは畳み込みステージ（すなわち、対応するＲｅＬＵステージの前のステージ）へ戻るＲｅＬＵビットマップの生成を提供すると、さらなる電力が生じ得る。例えば、ＲｅＬＵ活性化ロジックにより究極的にはゼロに設定される負の出力を乗算器が生成する場合に乗算器を無効にするために、符号予測ロジックが提供され得る。例えば、これは、乗算器１３１４の入力１３０１および１３０２の２つの符号ビット１３１０および１３１５がＸＯＲゲートにより論理的に組み合わされてＰｒｅＲｅＬＵビットマップビット１３０３が形成される場合に示される。この同じ信号は、幾多の例の中でもとりわけ、乗算器１３１４の演算を無効にするために用いられ得る。そうでなければ、次の畳み込みステージ１３９０での乗算のために入力される前に、ＲｅＬＵロジックによりゼロに設定されるであろう負の出力を生成するエネルギーを不必要に消費するであろう。
【００８７】
１３００、１３０１、１３０２および１３０３の表現（表記Ａ）が、図１３において与えられた表現に示されているものの上位レベルのビューを示すことに留意されたい。この例では、ブロック１３０２への入力は、２つの浮動小数点オペランドを含み得る。入力１３０１は、明示的な符号ビット１３１０と、複数のビットを含む指数１３１１と、やはり複数のビット１３１２を含む仮数とを含み得る。同様に、入力１３０２は同様に、符号１３１５と、仮数１３１７と、指数１３１６とを含み得る。いくつかの実装において、仮数および指数は、異なる精度を有し得る。なぜなら、結果１３０３の符号は、符号１３０１および１３０２または符号１３１０および１３１５のみにそれぞれ依存するからである。実際には、１３０１も１３０２も浮動小数点数である必要はないが、それらが符号付きの数であり、かつ、最上位ビット（ＭＳＢ）が事実上、明示的または暗黙的に符号ビットである限り（例えば、これらの数が１または２の補数等である場合）、任意の整数または固定小数点の形式であってよい。
【００８８】
図１３の例を続けると、ＸＯＲ（本明細書において、ＥｘＯＲまたはＥｘＯＲと代替的に示されることがある）ゲートを用いて２つの符号入力１３１０および１３１５が組み合わされることで、ビットマップビット１３０３が生成されてよく、次に、ハードウェアを用いてビットマップビット１３０３が処理されることで、次の畳み込みブロック（例えば、１３９０）では省略され得る下流の乗算が識別されてよい。２つの入力された数１３１３（例えば、１３０１に対応する）および１３１８（例えば、１３０２に対応する）が反対の符号を有しており、かつ、ＲｅＬＵブロック１３１９によりゼロに設定されるであろう負の出力１３０４を生成することで、次の畳み込みステージ１３９０に入力されるＲｅＬＵ出力ベクトル１３１９１にゼロ値がもたらされる場合、同じＸＯＲ出力１３０３は、乗算器１３１４を無効にするためにも用いられ得る。したがって、いくつかの実装において、ＰｒｅＲｅＬＵビットマップ１３２０は、ビットマップスケジューラ１３６０へ並行して伝送されてよく、ビットマップスケジューラ１３６０は、畳み込みユニット１３９０上で実行（および／または省略）されるように乗算をスケジューリングしてよい。例えば、ビットマップ１３２０内の全てのゼロについて、対応する畳み込み演算が、畳み込みユニット１３９０においてスキップされ得る。並行して、ビットマップ１３２０は、畳み込みユニット１３９０において用いられる重みのフェッチを制御する例示的なアドレス生成器１３３０により消費され得る。ビットマップ１３２０内の１に対応するアドレスのリストは、アドレス生成器１３３０においてコンパイルされてよく、ＤＤＲコントローラ１３５０を介してＤＤＲストレージ１３７０への経路を制御するか、さもなければチップＲＡＭ１３８０への経路を制御する。いずれの場合にも、幾多の例の中でもとりわけ、ＰｒｅＲｅＬＵビットマップ１３２０内のものに対応する重みは、フェッチされ、（例えば、重み入力１３７１へのクロックサイクルの観点からいくつかの待ち時間の後に）畳み込みブロック１３９０へ提示され得るが、ゼロに対応する重みのフェッチは、省略され得る。
【００８９】
上記のように、いくつかの実装では、ビットマップスケジューラ１３６０と畳み込みユニット１３９０との間に遅延（例えば、１３６１）を挿入することで、アドレス生成器１３３０、ＤＤＲコントローラ１３５０およびＤＤＲ１３５０を通じた遅延またはアドレス生成器１３３０および内部ＲＡＭ１３８０を通る経路のバランスをとり得る。遅延により、ビットマップスケジューラにより駆動される畳み込みを、畳み込みユニット１３９０における畳み込み計算のための対応する重みに合わせて正確に整列させることが可能になり得る。実際には、タイミングの観点から、ＲｅＬＵブロック１３１９の出力時点よりも早くＲｅＬＵビットマップを生成することで、さらなる時間を獲得することが可能になり得る。メモリ（例えば、ＲＡＭ１３８０またはＤＤＲ１３７０）への読み取りを、それらがアドレス生成器１３３０により生成される前に傍受するためにこのさらなる時間が用いられ得ることにより、（例えば、ゼロに対応する）読み取りのうちのいくつかが割愛され得る。メモリの読み取りは、チップ上での論理演算よりもはるかに高くなり得るので、そのようなメモリフェッチを除外することにより、幾多の例示的な利点の中でもとりわけ、非常に大幅なエネルギー節約がもたらされ得る。
【００９０】
いくつかの実装において、ＤＲＡＭアクセス回数をカバーするにはクロックサイクルの観点から記憶が依然として不十分である場合、ブロック指向の技術を用いて、ＤＤＲから符号ビットのグループ（例えば、１３０１）を前もって読み取り得る。（例えば、幾多の例の中でもとりわけ、２Ｄまたは３Ｄアレイ／行列間の２Ｄまたは３Ｄ畳み込みにおける符号ビットとの間の差を計算するための）ＸＯＲゲート１３００のセット（複数のＸＯＲゲート１３００）を用いてＰｒｅＲｅＬＵビットマップのブロックを生成すべく、符号ビットのこれらのグループは、入力画像または中間畳み込み層１３０２からの符号のブロックと共に用いられ得る。そのような実装では、各重みの符号を格納するために、ＤＤＲまたはオンチップＲＡＭ内のさらなる１ビットの記憶容量が提供され得るが、これにより、ゼロで乗算されることになる、ＤＤＲまたはＲＡＭからの重みを常にＲｅＬＵステージから読み取ることを回避するように、多くの待ち時間サイクルをカバーすることが可能になり得る。幾多の例示的な検討事項および実装の中でもとりわけ、いくつかの実装では、ＤＤＲまたはオンチップＲＡＭ内の重み当たりのさらなる１ビットの記憶容量が回避され得る。なぜなら、指数および仮数から独立してアドレス指定可能であるように符号が格納されるからである。
【００９１】
一例において、システムは、最大データ転送レート用の自然バーストアクセスを有し得るＤＤＲアクセスを利用するためにさらに強化され得る。個々のＤＤＲ重みアクセスをスキップすることによるエネルギーの節約は、それらがバーストよりも短いことがあるので、この内容において実現可能ではないことがある。したがって、いくつかの事例では、特定のバーストトランザクションに対応する全てのビットマップビットがゼロである場合、バーストがスキップされ得る。ただし、これは、頻繁には生じ得ず、故に、結果として生じる電力および帯域幅の節約が限定され得る。さらに他の実装において、ビットマップバースト内のＮ個よりも多いビットがゼロである場合にバーストが完全にスキップされるように、バースト内のビットマップビットの数について、レジスタプログラマブル閾値が設定され得る。これは、全体的なＣＮＮ分類精度をわずかに低下させる影響を有し得るが、エネルギー節約のためには許容できることがある。
【００９２】
図１４を参照すると、３Ｄ空間を解析する機械１４０５を含む例示的な環境を示す簡略ブロックダイアグラム１４００が示されている。いくつかの実装において、機械は、本明細書に記載するような幾多の例の中でもとりわけ、例えば、ＳＬＡＭ処理、レイキャスティング、オドメトリ、衝突検出、２Ｄまたは３Ｄルート計画といった１つのまたは様々な用途または動作において３Ｄ空間を記述したボリュメトリックデータを利用するための、ハードウェアおよび／または回路に実装された機械実行可能ロジックを備え得る。ボリュメトリックデータは、本明細書に記載するようなスパースツリー表現として具現化され得る。いくつかの事例において、メモリ占有の増加をトレードオフすることによりボリュメトリックデータの処理をより迅速に実行するために、ハッシュテーブルが追加的または代替的に用いられ得る（例えば、ハッシュテーブルは、密なアレイよりも少ないメモリを用いるからである）。
【００９３】
機械１４０５は、スパースツリーボリュメトリックデータ構造で表されるボリュメトリックデータをハンドリングおよび処理するように構成された、本明細書に記載するハードウェアおよびロジックを含み得る。図１４に示される特定の例において、機械１４０５は、３Ｄシーンを記述したボリュメトリックデータを処理することができ、かつ、シーン内の自律的な動きに対してこの情報を利用すること（例えば、シーン内に存在する地理に基づいて、シーン内での自らの位置を変更し、および／または機械の要素（例えば、センサ、カメラ、ポインタ、アクチュエータ、ツール等）のうちの１つまたは複数の向き（例えば、照準）を変更すること）ができる自律機械または半自律機械として実装され得る。そのようにすることにより、機械は、物体（例えば、１４１０ａからｃ）を検出し、検出した物体に基づいて自律的に、シーンをナビゲートするか、またはシーンと相互作用し得る。いくつかの実装において、機械１４０５は、幾多の例の中でもとりわけ、自律走行車両（乗員または貨物を搬送するためのもの）、空中型、地上型または海上型ドローン、ロボットとして具現化され得る。
【００９４】
１つの例示的な実装において、機械１４０５は、コンピューティングシステム１４０６を含み得る。コンピューティングシステム１４０６は、例示的な汎用型および専用型の処理ハードウェアの中でもとりわけ、１つまたは複数の中央処理装置（ＣＰＵ）、グラフィカル処理ユニット（ＧＰＵ）、テンソル処理ユニットまたは他の行列演算プロセッサ、ハードウェアアクセラレータ（例えば、ボリュメトリック処理アクセラレータ、機械学習アクセラレータ）などのデータプロセッサ１４１５を用いて実装され、１つまたは複数のメモリ要素（例えば、１４２０）を用いてさらに実装される。さらなる論理ブロックが提供されてよく、ボリュメトリック処理ロジック１４２５、コンピュータビジョンエンジン１４３０およびアクチュエータ１４３５など、ハードウェア回路、ファームウェアまたはソフトウェアに実装される。いくつかの実装において、機械１４０５は、３Ｄ空間を測定するための１つまたは複数のセンサ（例えば、１４４０）をさらに含み得る（例えば、ＬｉＤＡＲセンサ、飛行時間センサ、ｒｅａｌｓｅｎｓｅセンサ等）。そのようなセンサ１４４０は、３Ｄ環境を記述するボリュメトリックデータを生成してボリュームのマップを開発するためにだけでなく、センサ１４４０を用いて検出される局所的に観察されたジオメトリを、ボリュームの占有されたジオメトリの予想されるまたは事前に観察されたバージョンを記述した基準データと比較するためにも用いられ得る。センサデータは、レイキャスティング、オドメトリ、姿勢推定または他の機能（例えば、コンピュータビジョンエンジン１４３０のサブモジュールとして実装され得る）に関連して、コンピュータビジョンエンジン１４３０により処理され得る。いくつかの事例において、ボリュメトリック処理ロジック１４２５は、コンピュータビジョンエンジン１４３０の機能に関するタスクなど、１つまたは複数の異なるボリュメトリック処理演算またはタスクを実行するためのロジックを備え得る。一例において、本明細書において説明するボリュメトリック加速ユニット（ＶＸＵ）などのボリュメトリック加速ユニットは、ボリュメトリック処理ロジック１４２５および／またはコンピュータビジョンエンジン１４３０のうちの少なくとも一部を実装するために利用され得る。いくつかの実装において、ボリュメトリック処理ロジック１４２５およびコンピュータビジョンエンジン１４３０のロジックの全部または一部が組み合わされ得る。ボリュメトリック処理ロジックは、幾多の例の中でもとりわけ、ＶＯＬＡデータ１４５０に具現化されたボリュメトリックデータを入力として受け取り、データ１４５０をパースすることで、構造またはジオメトリによって占有されていないとデータ１４５０内で識別された関連ボリュームの特定のセクションの解析を割愛する機会を決定し得る。いくつかの事例において、ボリュメトリック処理ロジック１４２５および／またはコンピュータビジョンエンジン１４３０により生成される結果により、機械１４０５の１つまたは複数のアクチュエータ１４３５は、１つまたは複数のモータ、エンジンまたは他のドライブおよび／または１つまたは複数のステアリングメカニズムを起動させるように、かつ、機械自体または機械の特定のツールをその設計に従ってボリューム内で移動させるようにトリガされ得る。例えば、ボリュメトリック処理ロジックは、１つまたは複数のアクチュエータに入力を提供することで、ドローンまたは自律走行車両に、ボリュメトリックデータの処理を通じて機械が理解するボリュームをセルフナビゲートさせ得る。
【００９５】
位置特定およびマッピングの同時実行（ＳＬＡＭ）アプリケーションは、その幾多の用途の中でも、例えば、ロボット工学分野において、幾多の例の中でもとりわけ、環境内でのロボットおよびドローンの自律的な動きを容易にするために利用され得る。いくつかの場合において、ＳＬＡＭは、オフラインで生成されるマップを利用し得る。ただし、自律ロボットは、リアルタイムで、マップを構築してマップと相互作用する必要があることが多く、利用可能なリソースが限定される中でそのようにする。密なＳＬＡＭを計算するための方法のうちのほとんどは、高性能デスクトップシステム用に設計されており、特に、従来のＳＬＡＭパイプラインにおける、計算を多用するレイキャスティング段階を考慮した場合、近年のロボット工学およびドローンにおいて利用されている低コストな埋め込みデバイスに統合するには、一般的に望ましいかまたは可能であるとされているよりもはるかに多いＦＬＯＰＳ、メモリおよび電力を必要とする。この課題に対処するために、レイキャスティングアルゴリズムの低電力、低メモリの実装を最適化したものが、ＳＬＡＭパイプラインに統合されるハードウェアおよび／またはソフトウェアに実装され得る。例えば、本明細書において紹介するボリュメトリック加速（ＶＯＬＡ）データ構造は、３Ｄボリューム表現のために用いられてよく、さらなる技術および機能が、改良されたＳＬＡＭアプリケーションを実装して特定の性能／メモリ効率を実現するために利用されるＶＯＬＡ構造およびアーキテクチャを活用し得る。
【００９６】
コンピュータビジョンの世界とグラフィックスの世界とは別個のものであるが、ロボット工学分野に収束する。埋め込みシステム内で利用可能な限定されたリソースを節約するようにボリュメトリックデータを３Ｄ空間内で表現することが、両方の領域での主要な課題である。例えば、光による検知および測距（ＬｉＤＡＲ）などのコンピュータビジョンのための入力システムは、埋め込みシステムメモリがハンドリングするにはすぐに大きくなり過ぎてしまうことがある環境の点群深度マップを生成できる。このことが課題となる一般的なアプリケーションがＳＬＡＭアプリケーションである。ＳＬＡＭアプリケーションの目標は、ロボットを取り囲む環境のマップを作成し、マップ内にロボットを同時に配置することである。自律アプリケーションでは、自律エージェントがリアルタイムで非常に詳細なマップと効率的に相互作用できない場合、そのようなマップを構築することは無用である。最も重要な相互作用のうちの１つが衝突検出であり得る。衝突検出は、（例えば、容易に明らかな安全上の理由で）ドローン用途において特に重要である。光線／ジオメトリの交差に用いられる一般的な方法がレイキャスティングである。レイキャスティングは、典型的には、１秒当たり大量の演算を必要とする。レイキャスティングは、典型的なＳＬＡＭ  ＳＷパイプラインの最も高価なコンポーネントのうちの１つを表す。故に、その性能および効率を向上させることで、埋め込みプラットフォームの制限にもかかわらずリアルタイム埋め込みＳＬＡＭが可能になるようにする必要がある。
【００９７】
いくつかの実装において、ＶＯＬＡデータ構造の使用に基づく、埋め込みプラットフォーム用のレイキャスティングアルゴリズムの改良された軽量の実装が利用され得る。これは、３Ｄモデルのメモリ要件を低減するために特に設計されている。例えば、レイキャスティングアルゴリズムの埋め込み実装が、特にＳＬＡＭアプリケーションを対象として提供され得る。そのようなアルゴリズムを実装することにより、幾多の例示的な利点の中でもとりわけ、キャッシュおよびＳＩＭＤ命令などの計算リソースの使用を改善して、画像および物体空間コヒーレンスを活用し得る。３Ｄシーンのボリュメトリック圧縮を生成するために、密または疎な階層グリッドデータ構造（例えば、ＶＯＬＡベース構造）が利用され得る。そのような解決手段は、十分な品質および精度を維持しつつ、電力効率の向上ももたらし得る。
【００９８】
上で紹介したように、ＶＯＬＡタイプのデータ構造は、埋め込みデバイスで用いられるボリュメトリックデータの効率的な圧縮を可能にする階層ビットアレイとして編成されたコンパクトなデータ構造として実装されてよく、メモリの制約に起因して、そのようなデバイスにおいて全ての点群を用いることが非実用的または不可能にさえなるであろう。空間パーティショニングＶＯＬＡ構造は、モジュラ演算と、ビットアレイに適用されるビットカウントとを用いて、オクツリーの階層構造をボリュメトリックアプローチで組み合わせ得る。オクツリー、ｋｄツリーおよび他の３Ｄ表現とは対照的に、ＶＯＬＡは、ポインタベースのツリー構造ではなく、階層グリッド構造を用い得る。圧縮が主な懸念事項なので、ＶＯＬＡは、占有データをエンコードするだけでボクセル当たり１ビットの最大圧縮を実現し、それを極めてコンパクトにする。結果として、ＶＯＬＡは、レイキャスティングによる正確なボリュメトリックレンダリングにはうまく適合しないことがあるが、代わりに、周囲の単純なマップを構築してレイキャスティングしなければならず、かつ、表現のフォトリアリズムが要件または優先事項ではないＳＬＡＭなどの用途においては、非常に効率的である。いくつかの実装において、ＶＯＬＡ内の各要素は、表されるボリュームを４×４×４個のサブセルへ分割する６４ビット整数であり、モジュラ演算を用いて１次元ビットアレイから３次元へマッピングされる。セル内のいくつかの箇所が占有されている場合、対応するサブセルビットが１に設定され、そうでなければゼロに設定される。次のレベルでは、占有されているサブセルのみが、まさに占有されている空間をエンコードするように表される。そのように、ＶＯＬＡ構造内での上位レベルから下位レベルへの通過は、幾多の例の中でもとりわけ、解像度が４倍に増えたことを示唆している。
【００９９】
いくつかの用途では、ＶＯＬＡ形式を用いると、主要都市の空中スキャンのエンコードが特に効率的になることが判明している。例えば、ＬｉＤＡＲデータセットでは、７０倍の最大サイズの低減が実現され得る。ＶＯＬＡ形式の利益になり得る他の一般的な用途は、ＣＮＮ推論、経路計画および障害回避である。最後に、ハッシュテーブルを利用することにより、幾多の例示的な用途の中でもとりわけ、メモリフットプリントをさらに低減することが可能である。
【０１００】
例示的なレイキャスティングアルゴリズムが、一次光線のみを放射する非再帰型レイトレーシングアルゴリズムとして実装されてよく、直接的なボリュームレンダリング技術として特に普及している。ボリュームレンダリング技術の主な利点のうちのいくつかは、それらの優れた画像品質、および、表面ジオメトリを明示的に定義することなく画像をレンダリングすることが可能であることである。反対に、主な欠点は、それらの計算コストが高いことである。３Ｄボリュームを表すために用いられるデータ構造と、ボクセルトラバーサルのために用いられるアルゴリズムとに関するいくつかのアプローチが存在する。さらに、例えば、空間リーピング、コヒーレントパケットトラバーサル、錐台カリング等、特定の副次的な問題を処理してアルゴリズムの性能を向上させるための数多くのさらなる技術が、長年の間に開発されてきた。
【０１０１】
レイキャスティングにおいて使用される最適化の種類は、ボリュームの選ばれた表現にリンクされていることが多い。ボリュームの最も基本的な表現は、均一グリッドおよび階層グリッドである。階層グリッドは、大まかにネストされたグリッド、再帰または多重解像度グリッドおよびマクロセルまたはマルチグリッドとして編成され得る。別の例として、任意の分割平面を用いて空間を再帰的に細分化するために、バイナリ空間分割（ＢＳＰ）が利用され得る。幾多のＢＳＰの中でも、ｋｄツリーは、軸平行分割平面のみを用いる特別な事例である。ｋｄツリーにより、ボリュームが適応的に分割されることが可能になるが、更新がオクツリーよりも難しい。ｋｄツリーは、特に、大きいボリュームについてより多く用いられる。パケットｋｄツリートラバーサルは、静止したシーンではグリッドを凌ぐが、ツリーを再構築するコストのせいで、真に動的なシーンにはあまり適さなくなってしまう。対照的に、グリッドは、より高速に作成および修正され得るので、高いトラバーサルコストがかかる場合でも、動画化されたシーンでは魅力的なものになる。幾多の例の中でもとりわけ、ボクセル化されたジオメトリをレンダリングするための別の効率的な表現が、スパースボクセルオクツリー、バウンディングボリューム階層（ＢＶＨ）である。
【０１０２】
いくつかの実装において、ＶＯＬＡ構造を活用して空のセルを効率的にスキップするために、空間リーピングが利用され得る。空きスペースのスキップのために用いられるこの戦略は、下にあるボリューム表現と結び付けられ得る。一例において、次に可能な非透明ボクセルまでのリーピング距離を各ボクセルについて格納するための空間リーピングに、遠距離コーディングによる光線加速（ＲＡＣＤ）が利用され得る。これは、前処理段階として実行され得る。いくつかの実装において、レンダリングされたボリュームの占有マップを、ＶＯＬＡと同様のマルチレベルグリッド構造の第１のレベルについてのみ計算することにより、ハードウェアアーキテクチャが、空間リーピングのために実装され得る。空ノードをスキップするためのＧＰＵオクツリーベースのアプローチも実装され得る。いくつかの実装において、周囲の物体への近接度を示すシーン依存情報で空ボクセルが満たされる近接クラウドを用いて、空きスペースが正規３Ｄグリッド内でスキップされ得る。例えば、近接クラウドベースアルゴリズムがシステムに実装され得る。近接クラウドベースアルゴリズムは、大きいボリュームのレンダリングのためのＧＰＵレイキャスティング専用のものであり、最善の画像順序および物体順序での空きスペーススキップ戦略が組み合わされている。
【０１０３】
ボリュームトラバーサルの実装は、少なくとも部分的に、選ばれるボリューム表現に依存し得る。これらの方法のうちのほとんどは、次の軸平行平面の距離に応じて各反復で訪れるべき最も近い隣接ボクセルを決定する、平坦グリッドに基づくアルゴリズムから発展してきた。他の実装は、トラバーサルの全体を通じて整数演算を伴う演算のみを使用するオクツリーを横断し得る。別の例では、効率的なスパースボクセルオクツリーに関連して、幾多の例の中でもとりわけ、データの効率的なオクツリー表現が利用され得る。
【０１０４】
従来のレイキャスタでは、不透明度閾値に達する（例えば、不透明度の蓄積）まで、占有されているボクセルの横断中に色が蓄積されることにより、レイトラバーサルを早期に終了することが可能になり得る。このように、実際のボリュメトリックデータは、透明な材料を考慮してレンダリングされ得る。ＶＯＬＡを用いた前後の実装では、ＶＯＬＡが色情報のエンコードをネイティブで省略し得るので、必要とされる情報が３Ｄ空間内の占有についての情報であることから、これらの種類の機能が割愛され得る（が、ＶＯＬＡは、メモリフットプリントの増加を犠牲にして、ボクセルの色のためのさらなるビットアレイを用いて拡張され得る）。そのような実装では、ボクセルに遭遇するとすぐに、いかなる色情報、不透明度、テクスチャ等も詳述することなく、アルゴリズムフローが停止し得る。
【０１０５】
一実装において、ＶＯＬＡベースの表現の構造を特に活用するために、レイキャスティング中に用いられるレイトラバーサルアルゴリズムが実装され得る。図１５を参照すると、密な階層グリッド（１５０５）およびＶＯＬＡ形式（１５１０）または疎な階層グリッドという２つの異なる３Ｄボリューム表現が、特定の例示的なレイキャスタに対して使用および比較され得る。この例における両方のデータ構造は、４３ツリーの形状を有し、違いは、それらがマルチレベルビットアレイとして編成されることである。データは、ボクセル形式当たり１ビットでエンコードされ、グリッド内の地理的な位置に応じて格納される。最終レベルでの解像度が与えられると、空きスペースおよび占有されているスペースの両方が表されるので、密なグリッドの次元が予想可能になる。ただし、ＶＯＬＡ形式では、空サブブリックが格納されないので、実際の占有はジオメトリに依存し得る。これにより、非常に小さいメモリ占有がもたらされるが、同時に、個々のボクセルの配置が、より複雑かつ計算上高価になる。例えば、サブブリックビットを特定のレベルに配置するためには、上位レベルにおける対応するビットセットに先行するビットの数を知る必要があり得る。そのような演算により、計算が大幅に減速され得る。これは、許容できないオーバヘッドを招いてしまうことを回避するために、レイキャスティングアルゴリズムの間、慎重にハンドリングされる。１５０５および１５１０において表されるように、ボクセルをレベルに応じて配置することは、図１５に示されるように、疎な階層グリッド（１５１０）についてよりも、密な階層グリッド（１５０５）について理論上より単純である。
【０１０６】
一例において、コンピューティングシステムが、（例えば、ＳＬＡＭアプリケーションにおける）レイキャスティング演算の実行に関連して、階層スパースグリッド構造（例えば、ＶＯＬＡ）に基づくレイトラバーサルアルゴリズムを実装し得る。いくつかの実装において、ＶＯＬＡ構造を利用してレイキャスティングアプリケーションにおける３Ｄ空間を表すことにより、より効率的な近似された階層レイトラバーサルアルゴリズムが可能になり得る。いくつかの実装において、レイキャスティングアプリケーションにおいて利用されるレイキャスティングトラバーサルアルゴリズムは、Ｊｏｈｎ  ＡｍａｎａｔｉｄｅｓおよびＡｎｄｒｅｗ  Ｗｏ著Ｆａｓｔ  Ｖｏｘｅｌ  Ｔｒａｖｅｒｓａｌ  Ａｌｇｏｒｉｔｈｍ  ｆｏｒ  Ｒａｙ  Ｔｒａｃｉｎｇなどの従来のトラバーサルアルゴリズムの階層バージョンを実装し得る。例えば、トラバーサルアルゴリズムの１つの例示的な実装では、バウンディングボリュームが基準システムの軸に対して位置合わせされる場合、バウンディングボリュームを用いて光線交差試験演算が実行される（例えば、軸平行バウンディングボックス（ＡＡＢＢ）試験）。ボリュームのうちのいくつかの外部に位置する部分が空である場合、（例えば、１５１５において表されるように、）レイキャスティングされるボリュームを容易に枝刈りするためにＬ０  ＶＯＬＡ要素を検査することで、それを交差するサブＡＡＢＢへ低減することが可能である。そのような用途は、ｚ次元内のボリュームがほとんど空である空中スキャンを含み得る。仮想画像は、透視投影を用いてスキャンされる。各光線が独立しているので、マルチスレッディングを活用して、異なる光線を同時に処理することが可能である。いくつかの実装において、スレッドのプールが初期化され、次に、利用可能なランタイムリソースに応じてスケジューリングされる。実際には、いくつかの実装では、キャッシュデータ局所性および文脈切り換えオーバヘッドの検討事項に起因して、単一のピクセルまたは行全体ではなく、仮想画像の矩形サブタイルをスレッドに割り当てる方がより簡便であり得る。
【０１０７】
一例において、コンピューティングシステムを用いて（およびいくつかの場合においては全体的にハードウェアに）アルゴリズムが実装され得る。ｐが光線−ＡＡＢＢ交点（または代替的にボリューム内部の点）であり、ｄが光線方向であるとき、光線の式は、ｒ（ｔ）＝ｐ＋ｔｄと表される。式を解いて、ｘ成分に直交する軸平行平面についてｔを求めると、ｔｘ＝（１／ｄｘ）ｘ＋（−ｐｘ／ｄｘ）が与えられる。式中、ｄｘは、平面までの点の距離である。ここで、光線が特定の方向においてボクセルの幅に対して動くｔの値として（ｔＤｅｌｔａＸ，ｔＤｅｌｔａＹ，ｔＤｅｌｔａＺ）を定義し、最も近い軸平行平面交点について、ｔｘ値、ｔｙ値、ｔｚ値を用いて（ｔＭａｘＸ，ｔＭａｘＹ，ｔＭａｘＺ）変数を初期化することにより、単純なアルゴリズムを定義して、均一なグリッドを通じて光線の横断をハンドリングすることが可能である。アルゴリズムの疑似コードが以下に表され、例示的な視覚横断が図１６Ａに示される。
【数１】
2021536604.tif 000003
【０１０８】
図１６Ａに示されるように、従来のトラバーサルアルゴリズムが例示されている。これによれば、光線１６０５（例えば、ボリューム（例えば、１６１０）を通って放射される多くのもののうちの１つ）がボリューム１６１０を通って放射される。図１６Ａにおいて、黒い正方形（例えば、１６１５、１６２０）は、光線１６０５が当たらない、ボリューム１６１０内の占有されているボクセルを表し、グレーの正方形（例えば、１６２５）は、光線１６０５が当たる第１の占有されているボクセルを表す。従来のトラバーサルでは、図１６Ａに示されるように、光線１６０５が横断するボクセルの各々かつ全部が、ボクセルが占有されているか否かを判断するために、システムロジックによりチェックされる（例えば、それぞれの点（例えば、１６３０）により表される各チェック）。トラバーサルは、ＶＯＬＡなどの階層構造について拡張されることで、空きスペースのスキップに効果的に活用され得る。一例において、階層密グリッドおよびＶＯＬＡ形式が同じデータ編成を共有するので、アルゴリズムは、それらの両方に無差別に適用され得る。基本的なアルゴリズムに関しては、遭遇するボクセルに応じて解像度のレベルを変化させつつ空間中を動くのに、３Ｄ座標が用いられ得る。これら２つの間の主な違いは、ボクセルの内容がどのように試験されるかである。例えば、図１６Ｂを参照すると、特定のレベルにおける占有されているボクセル（例えば、１６３５）に遭遇した場合、階層内の次のレベルが、このレベルと、ボクセルの特定のブリックの境界とに応じてアクセスされ（例えば、かつ、ｔＭａｘ変数およびｔＤｅｌｔａ変数について新しい初期化演算が実行され）、光線１６０５が横断する占有されている上位レベルボクセル内のサブボクセルは、個々にチェックされ得る（例えば、点（例えば、１６４０）により表される）。境界は、正規ボリューム細分化に基づくモジュラ演算を用いて決定され得る。上位レベルボクセル（例えば、１６４５）が空であると判断された場合、横断される構成サブボクセルのチェックは、スキップされ得る。例えば、あるレベルから別のレベルへ通過する場合、空間のスキップは、式ｒ（ｔ）＝ｐ＋ｔｍｉｎｄの３Ｄ線形段階により決定される。式中、ｔｍｉｎは、上位レベルからのｔ値である。トラバーサル方法に起因して、異なるレベルにおける追跡位置は、従来のトラバーサルアルゴリズムよりも効率的に実装され得る。例えば、各階層レベルにおいて、トラバーサルは、従来のトラバーサルのように実行されるが、あるレベルから次のものへ通過する場合、（非占有となっている、光線の経路内の任意の中間ボクセル（例えば、１６４５）をスキップして、）１つの占有されているボクセルから次のものへ動くのに、第１の位置が、現在のｔパラメータを用いて線形段階で求められる。いずれの事例においても、トラバーサルアルゴリズムは、最上位レベルの解像度の占有されているボクセル（例えば、１６２５）にシステムが最初に遭遇するまで続く。
【０１０９】
一例において、精度が主な懸念事項ではなく、かつ、速度を優先して精度が犠牲にされ得る場合には、実行を高速化するために、トラバーサルアルゴリズムの階層実装が修正され得る。例えば、図１６Ｃに表されるように、いくつかの実装において、レイトラバーサルアルゴリズムは最初に、どの粗視化されたボクセルが占有され、光線によって最初に横断されるかを判断する。次に、レイトラバーサルアルゴリズムは、占有されている低解像度（上位レベル）ボクセル内の高解像度（下位レベル）ボクセル表現の評価のみに重点を置き得る。ただし、占有されているボクセル内の各サブボクセルのチェックとは対照的に、近似されたアプローチが利用され得る。近似されたアプローチでは、サブボクセルは、１つよりも多くのボクセルをカバーする間隔（例えば、ｘ）でチェックされる（例えば、全ての横断されるボクセルをチェックするのではなく、占有されているボリュームについて、光線が横断する全ての２番目または３番目のボクセルをチェックする）。例えば、固定小数点実装がデータに対して用いられ得る。光線方向の主成分を識別した後に、特定のレベルにおける光線は、決定された方向の主成分（例えば、ｘ成分、ｙ成分またはｚ成分）におけるサブボクセルのサイズに等しい距離をカバーするように進まされる。そのようにするので、横断される新しいボクセルについて行う、占有されている／占有されていないという判断は速い。ただし、光線が横断する全てのボクセルを、近似された階層トラバーサルアルゴリズムが厳密には訪れないことがトレードオフである。この結果、特定の条件において、例えば、ボクセルの密度が低い場合、または、表面が薄い空の物体をレンダリングする場合に、幾多の副作用の中でもとりわけ、失われている占有されているボクセルに光線が当たり、アーティファクトが潜在的に作成され得る。図１６Ｃに示されるように、占有されている上位レベルボクセル内のボクセルをスキャンするための間隔１６５５は、ｘ方向におけるボクセルとなるように定義され得る。したがって、占有されている上位レベルボクセル（例えば、１６６０、１６６５、１６７０）についてレイキャスティングチェックを実行する場合、横断されるボクセル（例えば、１６７５、１６８０、１６８５）の一部のみがチェックされる。例示的な疑似コードはさらに、そのような実施形態を示す。
【数２】
2021536604.tif 000004
【０１１０】
図１６Ｃの例は、定義されたサブボクセル間隔に沿ってボクセルをチェックする近似された階層トラバーサルアルゴリズムを示しているが、このアルゴリズムでは、アプリケーション（例えば、レンダリングまたはＳＬＡＭアプリケーション）の用途および解像感度に基づいて、他の間隔が選択および利用され得る。図１７Ａおよび図１７Ｂを参照すると、例えば、光線により横断される占有されているボクセル内の各サブボクセルがチェックされる標準的な階層トラバーサルアルゴリズム（例えば、図１６Ｂに関連して示されている）の例示的な結果と、占有されている上位レベルのボクセル内の横断されるサブボクセルの一部のみがチェックされる近似された階層トラバーサルアルゴリズム（例えば、図１６Ｃに関連して示されている）との間の視覚的な比較に対し、例示的なアジアの竜モデルのレンダリングの比較が示されている。この例では、画像１７０５、１７１０が単に、３Ｄのアジアの竜モデルの未加工のレイキャスティングデータからの深度マップとしてレンダリングされている。画像１７０５は、標準的な階層トラバーサルアルゴリズムの結果を表し、一方で、画像１７１０は、近似された階層トラバーサルアルゴリズムの結果を表す。近似されたアルゴリズムから生成された画像１７１０では、表面上のいくつかのボクセルが失われてグラフィカルアーティファクトが現れているが、２つの画像１７０５、１７１０の間の類似性は、いくつかの用途では、近似された階層トラバーサルアルゴリズムを通じて可能になる計算効率が、価値あるトレードオフを上回り得ることを示唆している。
【０１１１】
図１７Ａおよび図１７Ｂの例示は、近似階層トラバーサルの実装からの例示的な結果のうちの１つであるが、レンダリングされる画像の観点から精度に重きを置く従来のアルゴリズムとより一般的に比較され得る。そのような比較では、両方の階層トラバーサルアルゴリズムを用いて、各カメラ姿勢のグレースケール画像が生成され得る。画像内の各ピクセルの強度は、仮想カメラと当たったボクセルとの間の距離に関連する整数である。したがって、２つの画像は、グラウンドトゥルースとして用いられている正確で均一なアルゴリズムを考慮しつつ、強度の値の間の差に基づいて比較され得る。価値のある情報を背景（光線が失われている箇所）は提供しないので、比較では、正確なレイキャスタ内のボクセルに当たる光線のみが考慮され得る（これは、偽アラームではなく、検出漏れを生じ得るだけである）。異なる結果の割合は、空間内の数百のカメラ姿勢のフレームと異なるシーンのフレームとを平均して計算され得る。この例では、（アイルランドのダブリンの）リフィー川の空中スキャンから生成されたモデル、ならびに、アジアの竜、ルーシーエンジェルおよびタイの小像というＳｔａｎｆｏｒｄ  ３Ｄ  Ｓｃａｎｎｉｎｇ  Ｒｅｐｏｓｉｔｏｒｙの３つのモデルなど、ＶＯＬＡモデルが、試験のために用いられ得る。浮動小数点演算および浮動小数点変換を用いると、ｄｉｆｆ  ｃｏｕｎｔを非現実的に増やしてしまうであろう非常に小さいピクセル強度差（単位元ほどに小さい）がもたらされ得るので、１よりも上のピクセル強度差のみが考慮される閾値が実装され得る。例示的な結果が表１に示される。表に示される異なるピクセルの割合が、正確なレイキャスタにより実際に当てられるピクセルのみの小数部として表されていることに留意されたい。２つの画像の間で強度が異なるそれらのピクセルの平均の高い値により、考慮された事例が適切な検出漏れであることが確認される。差の割合は、用いられるモデルにおけるボクセルの密度に依存し、概して、ピクセル密度が高いほど近似が低くなる。
【表１】
2021536604.tif 000005
表１：正確な画像内の当てられたピクセルの小数部としての、正確なレンダリングされた画像と近似されたレンダリングされた画像との間の異なるピクセルの割合。失われた箇所の平均強度差も報告される。
【０１１２】
いくつかの実装において、レイキャスタは、ビジュアルプロセッシングユニット（ＶＰＵ）などのハードウェアに実装され得る。そのようなハードウェアデバイスは特に、電力が著しく制約される環境において高性能のマシンビジョンおよび人工知能（ＡＩ）計算を供給するために実装され得る。図１８は、機械学習およびマシンビジョンの様々な用途向けに非常に持続可能な性能効率ならびに少ない待ち時間要件および低電力要件を提供するマルチコア常時オンシステムオンチップ（ＳｏＣ）１８０５として実装され得る簡略ブロックダイアグラムである。例示的な処理デバイス１８０５のアーキテクチャは、（例えば、非常に高帯域幅のメモリサブシステム（例えば、１８２０）により支えられる、画像処理およびコンピュータビジョンカーネル用の１つまたは複数のアクセラレータデバイス（例えば、１８１５）と、１つまたは複数のＲＩＳＣプロセッサ１８２５、１８３０（例えば、ＳＰＡＲＣアーキテクチャによるＬｅｏｎ  ３２ビットＲＩＳＣプロセッサ）とを通じて提供される）ハードウェアアクセラレーションを用いてベクトル演算とＳＩＭＤ演算とをサポートする低電力超長命令語（ＶＬＩＷ）プロセッサ（例えば、１８１０）の組み合わせを用い得る。システムは、メディアサブシステム（ＭＳＳ）、ＣＰＵサブシステム（ＣＳＳ）およびマイクロプロセッサアレイ（ＵＰＡ）という３つの主なアーキテクチャユニットへ分割される。この例では、ＵＰＡは、いくつかの事例においてＳＨＡＶＥ（Ｓｔｒｅａｍｉｎｇ  Ｈｙｂｒｉｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｖｅｃｔｏｒ  Ｅｎｇｉｎｅ）プロセッサとして実装されるＶＬＩＷプロセッサ（例えば、１２個のカスタムベクトルプロセッサ（例えば、１８４０ａからｌ））を含む。
【０１１３】
ＰＣからＳｏＣへ容易にアクセスすべく、機械学習アクセラレータ（例えば、Ｍｏｖｉｄｉｕｓ（商標）Ｎｅｕｒａｌ  Ｃｏｍｐｕｔｅ  Ｓｔｉｃｋ（商標）（ＮＣＳ））が、ＵＳＢ３接続を用いてベクトルプロセッサをプログラムするために用いられ得る。（例えば、コンピューティングシステムの汎用ＣＰＵまたは専用ハードウェアもしくは専用ファームウェア上で実行される）ソフトウェアアプリケーションが、ｖｏｌ（ＶＯＬＡ形式）ファイルのセットから開始して階層グリッド構造の作成を管理し、次に、ＵＳＢ（または他のインタフェース（例えば、１８４５））を通じてベクトルプロセッサユニットへこの内容を送信する。加えて、ソフトウェアアプリケーションは、アクセラレータから入ってくるレンダリングされたフレームの視覚化を（例えば、ＳＤＬ２（Ｓｉｍｐｌｅ  ＤｉｒｅｃｔＭｅｄｉａ  Ｌａｙｅｒ）ライブラリを用いて）ハンドリングする。いくつかの実装において、実際のレイキャスティングアルゴリズムは、それぞれが仮想画像の小さい矩形タイルエリアをハンドリングする専用ベクトルプロセッサ（例えば、１８４０ａ−ｌ）のセットにより実行され得る。計算負荷をかなり活用するために、ベクトルプロセッサ（例えば、１８４０ａ−ｌ）を非同期的および動的にスケジューリングすることにより、全体的なアイドル時間を低減し得る。仮想カメラの位置および方向に関するデータは、幾多の例示的なシステム実装およびプログラムの中でもとりわけ、システムにより動的に更新される共有構造を介してスレッドに渡される。
【０１１４】
１つの例示的な試験において、均一グリッドおよび階層グリッドアルゴリズム（正確な（標準的な）バージョンおよび近似バージョンの両方）が性能の観点から試験および比較された。レイキャスティングアプリケーションを実行するために利用される特定のアーキテクチャ（例えば、ＳＨＡＶＥ命令セットアーキテクチャ（ＩＳＡ）を利用するアーキテクチャ）において利用可能なベクトル演算を活用するために、階層実装は、システムのコンパイラにおいて利用可能な組み込み関数（ｉｎｔｒｉｎｓｉｃ）を活用して再構成され、別個に試験され得る。一例において、ダブリンのＯ'Ｃｏｎｎｅｌｌ  Ｂｒｉｄｇｅ  Ｈｏｕｓｅ（ＯＣＢＨ）ビルの空中スキャンと、Ｓｔａｎｆｏｒｄ  ３Ｄ  Ｓｃａｎｎｉｎｇ  Ｒｅｐｏｓｉｔｏｒｙの２つのモデルとを用いた試験が用いられる。そのような例示的な試験で取得された結果が、図１９に示される。ここでは、平均フレームレート、最小フレームレートおよび最大フレームレートで測定された値が示されている。示されている測定値は、ボリュームの中心の固定点を見つつ仮想カメラの円状の動きを実行することで、全ての試験について同じ条件で取得されている。図１９のグラフ１９００に表されるように、近似実装では、正確なものよりも一貫して良いものを３０％から７５％高いフレームレートで実行する。組み込み関数の使用を通じ、正確なＳＩＭＤレイキャスタバージョンおよび近似ＳＩＭＤレイキャスタバージョンについてそれぞれ、最大高速化係数１２．７８および１７．７４に達した。
【０１１５】
レイキャスティングアプリケーションにおいて疎な階層グリッド構造（例えば、ＶＯＬＡ）を利用することにより、例えば、データ構造の性能およびメモリ占有の観点から、さらなる利益が実現され得る。例えば、トポロジカル的な観点からの密な階層グリッドおよび疎な階層グリッドは、空間内で同じ編成を効果的に共有し得るが、スパースグリッドの場合には、占有されているデータのみが実際に格納される。これは、非常に小さいメモリフットプリント（テーブル）をもたらすが、同時に、特定のボクセルを階層グリッド内に配置するために必要な時間を増やしてしまう。なぜなら、スパースグリッドテーブル内の設定されたビットを識別およびカウントすべく、全ての前のレベルが検査されなければならないからである。例えば、表２は、同じモデルの異なる形式のメモリ占有間の比較を報告している。表に示される密なグリッドおよびＶＯＬＡ形式は、例示的なＰｏｌｙｇｏｎ  Ｆｉｌｅ  Ｆｏｒｍａｔ（ＰＬＹ）物体から直接取得されている。ＶＯＬＡ構造により、ここではＰＬＹ形式に対して最大で約１１１４０倍低い、莫大なサイズの低減が保証されることが分かる。密なグリッドの占有が階層グリッドの深度のみに依存し、反対に、ＶＯＬＡ構造の占有が空間内の実際の占有されているボクセルに依存するという意味で、密なグリッド占有は、完全に決定的なものとみなされ得る。図２０Ａのグラフ２０００ａに示されるように、３つの異なるＶＯＬＡモデルの平均フレームレートと、密なグリッドに用いられる同じアルゴリズムおよび最適化とが示されている。近似された実装の使用に実際の利得はもはやなく、同様に、ＳＨＡＶＥ組み込み関数最適化を導入する利益は非常に低い、ということに気づくことが可能である。これは、利用された技術がアルゴリズムグリッドトラバーサル性能の最適化を目的としていることから説明できるが、ここでは、ボトルネックは主に、ＶＯＬＡ構造内のボクセルの占有を試験するために多くの時間が必要とされることにある。結果として、実際のトラバーサルに費やされる時間の小数部は、ここでは、密なグリッドよりもはるかに低い。ＶＯＬＡ実装の性能は、それらの密なグリッドの対応物よりも約１１倍から約３０倍低い。それにもかかわらず、メモリフットプリントを用いて取得される性能（平均−ＦＰＳ／ＭＢ）に関連して、ＶＯＬＡ実装は、はるかに効率的なので、例えば図２０Ｂの例示的な表２０００ｂに示されるようにメモリが非常に制約された環境では有効なオプションを構成し得るという結論になり得る。
【表２】
2021536604.tif 000006
表２：同じ３Ｄモデルの異なるデータ形式占有のメモリフットプリントの比較。
【０１１６】
いくつかの実装において、レイキャスティングを実装するために、レイキャスティングアルゴリズムの埋め込み実装が、疎な階層データ構造を利用して実装され得る。さらに、処理性能上の利益を実現するために、近似されたレイトラバーサルアルゴリズムが使用され得る。さらに、性能およびメモリ使用量が密および疎（ＶＯＬＡ）アプローチとトレードオフされることにより、性能の低下の代償として、ＶＯＬＡ構造のＦＰＳ／ＭＢ効率に一貫した利点が示され得る。したがって、レイキャスティングアプリケーションにおいて３Ｄボリュームを表すために疎な階層グリッド構造を利用するシステムは、特に、メモリが非常に制約された環境において好ましいとみなされ得る。実際には、本明細書に記載する改良されたシステム実装は、幾多の例示的な利点の中でもとりわけ、従来のレイキャスティング実装よりも最大で２桁高い、非常に高い電力効率を示す。
【０１１７】
コンピュータビジョンシステムは、幾多の例の中でもとりわけ、ロボット、自律ドローンまたは自律車両などの自律デバイスの位置および向きを自律的に決定することに関連してレイキャスティングおよびレンダリングの結果を利用し得る。実際には、正確な位置および向きの推定には、自律ロボットにおけるナビゲーションが必須である。よく研究された問題ではあるが、既存の解決手段は、良好なパラメータ初期化またはパラメータ較正を通常は必要とする計算上高価な統計フィルタに依存している。本明細書に記載するように、改良されたシステムは、複数のデータソース（例えば、単眼ＲＧＢ画像および慣性データ）の組み込みを含む改良されたエンドツーエンド機械学習アプローチを実装することで、各ソースの弱点を独立して克服し得る。いくつかの実装において、そのような機能を利用する改良されたシステムは、計算上はより安価であり、かつ、精度が最先端のものと同等であるかまたはそれをわずかに下回るだけであるオドメトリ結果を実現することにより、幾多の例示的な使用および利点の中でもとりわけ、そのようなシステムがリソース制約デバイス用の価値のある潜在的な解決手段を実現することを可能にし得る。
【０１１８】
動き推定は、モバイルロボット工学の主な柱のうちの１つである。動き推定は、未知の環境における位置および向きを把握する能力をロボットに提供する。動き推定は、マッピングアプローチと組み合わされることで、位置特定およびマッピングの同時実行（ＳＬＡＭ）を発展させ得る。実際には、利用されるＳＬＡＭパイプラインは、本明細書に記載する改良されたレイキャスティング技術をそのような実装内で採用し得る。ロボットは、異なるデータソースを用いることで、そのような動き推定を、センサの種類、つまり、動き推定によりロボットの内部情報が提供される場合である固有受容性（慣性測定ユニット（ＩＭＵ）など）、または、動き推定によりロボットの周囲環境の情報が提供される場合である外受容性（カメラまたはＬｉＤＡＲセンサなど）に応じて実行できる。ロボットの自律性に起因して、ロボットは、そのような搭載された動き推定をリアルタイムで実行できるはずである。これは、デバイスのリソースが限定されている場合における特別な課題である。したがって、そのような制限下で埋め込みデバイスを動作させ得る解決手段を見出すことが望ましい。
【０１１９】
オドメトリアプリケーションにおける姿勢推定の問題を解決するために、ディープラーニングが利用され得る。例えば、カメラは、ロボットまたは他の自律デバイスの周囲環境を撮像し、視覚オドメトリ（ＶＯ）を通じてロボットの動きを追跡するために用いられ得る。古典的なＶＯアプローチは、ジオメトリの制約から動きを推定し、疎特徴ベース法および直接法という２つのグループへ分類され得る。一方で、疎特徴ベース法は、特徴点を抽出およびマッチングすることで、フレーム間の動きを推定する。加えて、いくつかのＶＯアプローチは、外れ値およびノイズのある画像が存在することに起因して被ったドリフトを補正すべく、特徴マップを追加および維持する。他方では、直接法および半直接法は、全ての画像ピクセルを用いて、連続する画像間の測光誤差を最小化することにより姿勢を推定する。
【０１２０】
ただし、古典的なＶＯアプローチは、典型的には、縮尺を認識して実世界の単位で距離を回復するために外部情報（カメラ高さまたはテンプレートなど）を必要とする。さらに、従来のＶＯシステムは、急速な動きがある状況において、または照明が突然変化する場合には信頼性のないことが判明している。この信頼性の欠如を解決するために、カメラ情報は、慣性センサと組み合わされ得る。これにより、加速情報および角速度情報が提供され得る。これらのセンサは通常、カメラよりもはるかに高い周波数でデータを提供する（例えば、約１０倍速い）。したがって、カメラの急速な動きがある場合、慣性情報は、幾多の例示的な強化および課題の中でもとりわけ、ＶＯシステムの弱点を克服するために用いられ得る。
【０１２１】
視覚慣性オドメトリ（ＶＩＯ）システムは、視覚情報および慣性情報を活用して、位置推定および向き推定を提供する。いくつかの実装において、拡張カルマンフィルタ（ＥＫＦ）またはアンセンテッドカルマンフィルタ（ＵＫＦ）などの確率的フィルタアプローチを用いることにより、視覚−慣性データ融合が行われる。視覚−慣性データ融合は、ジャイロスコープデータ、またはジャイロスコープデータおよび加速度計データのみを用いて異なる融合モデルをかつて比較していたＥＫＦベースのシステムを用いて実行される。幾多の例の中でもとりわけ、例えば、静止特徴を検出して状態ベクトルに制約を追加するためにいくつかの過去のカメラ姿勢が用いられるシステムといった多状態制約カルマンフィルタ（ＭＳＣＫＦ）など、ＥＫＦの他の変形例が実装され得る。
【０１２２】
いくつかの実装において、ディープラーニング機能を備えるシステムが、例えば、ぼやけた画像もしくはノイズのある画像に対するロバスト性が欠如していること、または照明もしくはオクルージョンの変化が生じる場合といった、古典的なＶＯアプローチの弱点を克服するために用いられ得る。例えば、畳み込みニューラルネットワーク（ＣＮＮ）は、ぼやけた画像およびノイズのある画像に対してでさえうまく機能し得るので、画像特徴を抽出するロバスト法を提供する。ＣＮＮは、２つの連続する画像間のオプティカルフローを計算するためにも用いられ得る。オプティカルフローは、カメラビュー上の物体の位置の変化を表すので、２つの連続するフレーム間でカメラが経た動きに関連する。一例において、オプティカルフローネットワークにより抽出された画像特徴は、ディープラーニングシステム内で２つの長短期記憶（ＬＳＴＭ）層と共に用いられ得る。これにより、幾多の例の中でもとりわけ、古典的な単眼ＶＯアプローチ（例えば、ＬＩＢＶＩＳＯ２に基づくＶＯ）を凌ぎ得るエンドツーエンドディープラーニング方式で、単眼ＶＯシステムが実装される。
【０１２３】
センサ融合のための確率的フィルタに基づくＶＩＯアプローチは、カメラおよび慣性測定ユニット（ＩＭＵ）の測定値を同じ基準座標系にもたらすべく、困難かつ複雑な較正処理を必要とし得る。例えば、この較正処理は、追跡システムが動作している間にリアルタイムで実行され得るので、フィルタリング処理に複雑さが追加される。さらに、ほとんどの商用ＩＭＵで見られる測定値を介したノイズスケーリングなど、いくつかのＩＭＵのパラメータは、モデル化するのが難しい。ディープラーニング技術はさらに、センサ融合処理に伴う課題を解決するために利用され得る。例えば、ＬＳＴＭは、ＩＭＵの過去の未処理測定値（加速度計およびジャイロスコープ）を追跡してロボットの姿勢を推定するために用いられてよく、次に、ＶＯシステムと融合され得る。ＬＳＴＭは、ＶＩＮｅｔにおいて、エンコードされた特徴をＩＭＵの未処理測定値から抽出するために用いられ得る。これらのエンコードされた特徴は、ＣＮＮから抽出される特徴と特徴ベクトル内で組み合わされ得る。この特徴ベクトルが第２のＬＳＴＭにより経時的に追跡されることで、ロボットの姿勢推定値が提供され得る。いくつかの実装において、ＶＩＮｅｔアプローチは、幾多の例示的な利益の中でもとりわけ、従来の最適化ベースのセンサ融合アプローチなどの従来のアプローチを凌ぎ得る。
【０１２４】
一例において、改良されたシステムが、視覚ディープラーニングサブモデルおよび慣性ディープラーニングサブモデルの両方を組み込んだエンドツーエンドトレーニング可能ニューラルネットワークアーキテクチャを実装し得る。例えば、視覚ベースのＣＮＮサブモデルでは、ＲＧＢ画像が入力として提供され得る。第２の慣性ベースのディープラーニングサブモデルでは、ＩＭＵの未処理測定値が入力として提供される。一例において、エンドツーエンドニューラルネットワークアーキテクチャは、ニューラルネットワークサブモデルの組み合わせを利用し得る。組み合わされたネットワーク（およびそのサブコンポーネント）は、エンドツーエンド方式でトレーニング可能なので、較正または前処理の必要が一切なくなる。
【０１２５】
いくつかの実装において、エンドツーエンド機械学習オドメトリシステムのニューラルネットワークが、前のフレームに対する姿勢推定値を全てのフレームにおいて生成するようにトレーニングされ得る。各姿勢推定値は、変換値を表す。変換値は通常、特殊ユークリッド群変換ＳＥ（３）の要素として表されるＳＥ（３）（式１）で表される全ての変換値は、回転行列および並進ベクトルで構成されてよく、特殊直交群ＳＯ（３）の回転行列部分である。
式１：
【数３】
2021536604.tif 000007
Ｒが直交的に制約されなければならないので、ＳＥ（３）における変換値を求めることは、ネットワークに対して単純ではない。したがって、学習処理をより簡単にするために、推定された変換値は、ＳＥ（３）のリー代数ｓｅ（３）（式２）で表される。
式２：
【数４】
2021536604.tif 000008
【０１２６】
ｓｅ（３）での姿勢推定値は、６−Ｄベクトルであってよく、直交的に制約されなくてよい。ひとたび推定されると、ｓｅ（３）での姿勢値は、指数マッピング：ｓｅ（３）→ＳＥ（３）（式１０）をすることにより、ＳＥ（３）の変換値へ変換され得る。
式３：
【数５】
2021536604.tif 000009
式４：
【数６】
2021536604.tif 000010
式５：
【数７】
2021536604.tif 000011
式６：
【数８】
2021536604.tif 000012
式７：
【数９】
2021536604.tif 000013
式８：
【数１０】
2021536604.tif 000014
式９：
【数１１】
2021536604.tif 000015
式１０：
【数１２】
2021536604.tif 000016
式中、行列Ｒおよび行列Ｖはそれぞれ、式８および式９を用いて計算され得る。Ａ、Ｂ、Ｃおよびθは、式４、式５、式６および式３を通じて取得され得る。ωｘ行列は、ω値により構成される（式７）。
【０１２７】
一例において、視覚ベースのニューラルネットワークモデル２１０５は、図２１Ａの簡略ブロックダイアグラムにおいて表されるように利用され得る。視覚ベースのニューラルネットワークモデル２１０５は、積層されることで６つのチャネルがあるサイズ５１２×３８４の入力テンソルを構成する２つの連続するＲＧＢ画像を入力２１１０として受け取る。この画像サイズは、軽いＣＮＮをもたらしつつ、十分な特徴を含み得る。一例において、幾多の例示的な使用の中でもとりわけ動き推定に有利に用いられ得る画像の特徴を抽出するために、ＦｌｏｗＮｅｔＳなどのコンピュータビジョンニューラルネットワークの層２１１５が用いられ得る。ニューラルネットワークモデル２１０５の一部として採用されるそのようなネットワーク（例えば、２１１５）は、幾多の例の中でもとりわけ、ロボットが経時的に経た動きを表すフレーム間のオプティカルフローをどのように推定するかを学習するために、合成データセット上でトレーニングされ得る。
【０１２８】
図２１Ａの例において、ＦｌｏｗＮｅｔＳ層２１１５が、さらなる畳み込み層２１２０が続く、９番目の畳み込み層であるネットワークの２１０５まで取得されることで、ＣＮＮの出力サイズが２×３×２５６テンソルに低減され得る。ＣＮＮ層２１２５の後に、一連の全結合層２１３０を利用して、抽出された特徴を組み合わせることにより、前のフレーム（ｔ−１）に対する現在のフレーム（ｔ）の変換を表す出力６−Ｄベクトル姿勢２１３５を生成し得る。これは、（リー代数ＳＥ（３）で表される）。
【０１２９】
図２１Ｂに示される別の例示的なネットワーク２１４０では、ネットワーク２１４０への入力２１４２として、慣性データのみが用いられる。一例において、入力２１４５は、サブシーケンスとして具現化されるＩＭＵデータであってよい。サブシーケンスは、デバイスの加速度計およびジャイロスコープの成分からのｘ−ｙ−ｚ未加工データ成分を有する１０個の６−Ｄベクトルにより構成される。この例では、最後のものが最新である（１０個の）測定値の入力サブシーケンスが時間内に順序付けられることで、センサが経時的に経た動きがエンコードされ得る。
【０１３０】
図２１Ｂの例を続けると、長短期記憶（ＬＳＴＭ）人工再帰型ニューラルネットワーク部分２１５０は、過去の入力により生成される短長期依存性を非表示状態で格納できるので、サブシーケンスを介して測定値を追跡して動き情報を抽出するために、モデル２１４０内の回帰層として利用され得る。各入力は、ＬＳＴＭ２１５０を通過するときに非表示状態と組み合わされ、現在の測定値と過去の測定値との間の一時的な対応関係が求められる。一例におけるＬＳＴＭ２１５０は、１つの層、１０２４個のユニットを有してよく、サブシーケンスの最後の要素から最初の要素を（例えば、ロボットが）経た変換を表す６−Ｄベクトルを出力する４つの全結合層２１５５がその後に続いてよい。これらのアーキテクチャおよびパラメータは、モンテカルロ解析におけるそれらの実行の結果として選択されてよく、幾多の例示的な実装の中でもとりわけ、層の異なる組み合わせの選択を探索および最適化するために用いられ得る。
【０１３１】
上で紹介したように、改良された機械学習システムは、ニューラルネットワークモデル２１６０を利用してオドメトリ計算を実行し得る。図２１Ａおよび図２１Ｂに示される例示的なネットワーク部分２１０５、２１４０を組み合わせた、改良されたニューラルネットワークモデルは、ロボットまたは他の自律デバイス上に存在し得る視覚センサおよび慣性センサの両方を活用する。したがって、モデル２１６０への入力は、連続するＲＧＢ画像のペアおよび１０個の慣性測定値のサブシーケンスなど、視覚データおよび慣性データの両方を含み得る。この例では、仮想ニューラルネットワーク部分２１０５は、最大で３番目の全結合層まで、図２１Ａの例に提示されるものと同じである。同様に、慣性オドメトリ（ＩＯ）ネットワーク部分２１４０は、最大で２番目の全結合層まで用いられる。このように、ニューラルネットワークモデル２１６０は、有用な特徴を提供する最後の層まで、ＶＯネットワークおよびＩＯネットワークの両方を維持する。次に、ビジョン特徴ベクトルおよび慣性特徴ベクトルが、１２８−Ｄベクトルへ連結され、３つの全結合層２１６５を通過させられることで、姿勢推定２１７０が出力される。前のように、各姿勢推定値は、ロボットが前のフレームに対して現在のフレームにおいて経た変換を表す。
【０１３２】
１つの例示的な実装において、例示的なニューラルネットワークモデル２１６０をトレーニングするために用いられるデータは、コンパイルされたデータセットの一部（例えば、ＫＩＴＴＩ  Ｖｉｓｉｏｎ  Ｂｅｎｃｈｍａｒｋ  Ｓｕｉｔｅの未加工データセクション）であってよい。一例において、オドメトリデータセットは、２２個のシーケンスにより構成される。これらのシーケンスのうちの最初の１１個は、グラウンドトゥルース変換を備える。この例では、シーケンス１１−２２が評価として用いられるよう意図されているので、グラウンドトゥルースが提供されない。最多のフレームを含むシーケンス００、０２、０８および０９が、トレーニングのために用いられ、シーケンス０５、０７および１０が、評価のために用いられる。いくつかの実装におけるトレーニングデータは、ガウス雑音と、ガウスぼかしと、強度の変化とを画像へランダムに適用することにより、例えば、ガウス雑音（例えば、平均＝０、標準偏差＝［０，３２］）と、データのピクセル強度の変化（例えば、［−２５％，２５％］）とをデータの２／３に適用し、カーネル３、５および７を用いたガウスぼかしをデータの残りの３分の１に適用することにより、拡張され得る。データを拡張した後に、トレーニングデータセット（例えば、合計２２９１２個の画像フレーム）は、（例えば、１０Ｈｚで）サンプリングされるだけでなく、グラウンドトゥルースも受け得る。ＩＭＵデータは、より高い周波数（例えば、１００Ｈｚ）に達し得る。これは、画像フレーム当たり複数のＩＭＵ測定値が存在し得ることを意味する。ただし、いくつかのＩＭＵデータが欠けているフレームも存在し得る。その場合、欠けている測定値をパッドしてサブシーケンスを満たすために、フレームの最初のＩＭＵ測定値が用いられる。
【０１３３】
一例において、全ての推定相対姿勢とそのそれぞれのグラウンドトゥルースとの間のユークリッド距離を表す損失関数（式１１）が用いられ、ｓｅ（３）で表される。
式１１
【数１３】
2021536604.tif 000017
【数１４】
2021536604.tif 000018
は、推定された回転および並進ならびにグラウンドトゥルースされた回転および並進をそれぞれｓｅ（３）で表す。パラメータβは、ωとｔとの間の異なる桁のバランスを取るために有用であり、全てのトレーニングにおいて０．１に固定され得る。Ｎｅｓｔｅｒｏｖ加速勾配法（ＮＡＧ）が、標準勾配降下法に対する収束を高速化するためのオプティマイザ（式１２および１３）として用いられることで、局所位置ではなく、運動量ｍの方向においてわずかに前の位置における損失関数の勾配が測定され得る。
式１２
【数１５】
2021536604.tif 000019
式１３
【数１６】
2021536604.tif 000020
式中、βは、摩擦係数として機能することで、運動量が大きくなり過ぎるのを防ぎ、λは、学習速度である。次に、重みＷｓｅ（３）がｍに従って更新される。トレーニングでは、摩擦係数β＝０：９が用いられた。いくつかの場合において、指数スケジューリング（式１４）を実装することにより、より速い収束がもたらされ、これは、実行スケジューリングなどの他の方法と比較してより簡単に実装し得る。
式１４
【数１７】
2021536604.tif 000021
【０１３４】
一例において、初期学習速度（λ０）１０−５および段階（ｒ）５０が用いられる。これらのパラメータを用いて、学習速度は、全部で５０回の反復毎に２で除算される。１つの例示的な比較では、全てのネットワークがＴｅｎｓｏｒＦｌｏｗに実装され、ＮＶＩＤＩＡ  ＧｅＦｏｒｃｅ  ＧＴＸ  Ｔｉｔａｎ  Ｘ  ＧＰＵを用いてトレーニングされている。トレーニング時間を低減すべく、ＦｌｏｗＮｅｔＳ重みは、トレーニング中、停止され得る。
【０１３５】
本明細書に記載するネットワークが評価され、それらの性能が比較され得る。この例では、ＶＯとＶＩＯとが、同じ種類のデータを用いる既存のアプローチで別個に比較される。例えば、（例えば、図２１Ａの例に関連して本明細書に記載する）改良されたＶＯネットワークが評価され、従来の解決手段と比較され得る。一例において、この比較は、ＫＩＴＴＩのオドメトリ開発キットにおいて提案されている測定基準と、シーケンス０５、０７および１０に対して実行されるネットワークとを用いて実行される。これにより、最初のフレームに関して全てのフレームの絶対姿勢が得られ得る。次に、シーケンスを介して、二乗平均平方根誤差（ＲＭＳＥ）が、異なる軌跡長さ（１００ｍ、２００ｍ、３００ｍ、...８００ｍ）について計算され得る。これらの結果は、従来のＶＩＳＯ２  ＭネットワークおよびＤｅｅｐＶＯネットワークと共に表３に示される。表３の例に示されるように、本明細書に記載するような改良されたＶＯネットワークは、シーケンス０５および１０の並進誤差および回転誤差の両方の観点から従来のネットワーク（例えば、ＶＩＳＯ２  Ｍ）を凌ぐことがあり、並進ではシーケンス０７と比較的に機能する。
【表３】
2021536604.tif 000022
表３。全ての誤差は、全ての可能なシーケンス長さの平均ＲＭＳＥを表す。ｔｒｅｌは、並進誤差であり、ｒｒｅｌは、回転誤差である。
【０１３６】
図２２を参照すると、（例えば、図２１Ｃに関連して）本明細書に記載する改良されたＶＩＯネットワークの実施形態の例示的な結果が示され、従来の解決手段の結果と比較されている。例えば、図２２は、改良されたＶＩＯネットワークをグラウンドトゥルースに対して用いて実現された推定軌跡を示す（対応する例示的なエンドポイント並進誤差およびエンドポイント回転誤差が、表４に示される）。
【表４】
2021536604.tif 000023
表４。
従来の解決手段と比較した際の改良されたＶＩＯネットワークモデルの最終点の位置および向きの誤差。並進誤差は、最終点の絶対誤差と、フレーム０−８００においてカバーされる合計距離に対するその誤差の割合との両方の観点から示されている。
【０１３７】
慣性オドメトリ（ＩＯ）のみのネットワークの実装は、大きいドリフト誤差を経時的に示し得るが、（上記の例に記載するような視覚慣性オドメトリネットワークを形成するために）視覚オドメトリネットワークと組み合わされた場合、ドリフトが大幅に低減され得る。さらに、視覚慣性オドメトリ（ＶＩＯ）ネットワークは、ロボットが旋回している場合に、視覚オドメトリネットワークを凌ぐより良い性能を示し得る。これは、ＩＭＵがカメラにおける物体の大きい変位をどのように補償するかを示している。改良された視覚慣性オドメトリネットワークは、従来の解決手段を凌ぎ得る。そのようなネットワークは、幾多の例の中でもとりわけ、ロボットから自律ドローンまでという様々な用途で利用され得る。
【０１３８】
上記の例示的な特徴に加え、改良されたコンピュータビジョンシステムは、畳み込みニューラルネットワーク（ＣＮＮ）をさらに利用することで、疎な階層ボクセルグリッド表現（例えば、ＶＯＬＡ）を用いて点群のペアの間の相対姿勢を推定し得る。本明細書に記載するように、ボクセルグリッドは、点群と比較してメモリ効率的がより高い解決手段なので、メモリリソースおよび計算リソースが限定され得る埋め込みシステム（例えば、自律デバイス）上で用いられ得る。変換誤差を用いた新規の損失関数が、３Ｄボクセルグリッドを介した２Ｄ畳み込みと共にさらに用いられ得る。実際には、そのような解決手段は、反復最近点（ＩＣＰ）の従来の最先端の実装と同等の精度を維持しつつ、そのような効率を供給し得る。実際には、ボクセルグリッドを用いると位置合わせ誤差に対する高密度エリアの寄与が限定されるので、改良されたボクセルグリッドベースの解決手段は、幾多の例示的な使用および利点の中でもとりわけ、ＩＣＰを介した向上を実現し得る。
【０１３９】
近年、広範なセンサが３Ｄデータをより大量かつ高品質にスキャンできるようになった結果として、３Ｄスキャン技術は、万人にとってよりアクセス可能になっている。これらの３Ｄセンサは、３Ｄデータを表すために用いられる空間情報を記述する統合された座標系内の未編成３次元点セットである点群を生成する。ただし、ＬｉＤＡＲ、ソナーおよびＲＧＢ−Ｄのような利用可能な３Ｄセンサは、スキャンの範囲が限定されている。この限定された範囲を克服すべく、複数のスキャンが獲得およびマージされて、３Ｄマップが作成される。複数のスキャンの融合には、各スキャンが同じ座標系内で表されることで、編成された態様でそれらの情報が提示されることが必要である。したがって、同じ座標系内に全てのスキャンを表すべく、スキャンが実行された位置を把握することが重要である。この位置は、基準フレームと現在のスキャンとの間の変位として表され得る。カメラ姿勢として知られるこの変位は、並進ｔおよび回転Ｒにより形成される変換ΔＴとして表され得るので、ΔＴ＝（Ｒ｜ｔ）である。センサの変位は、スキャンにおいて利用可能であるか、またはＧＰＳ、ＩＭＵもしくは地上の車両上の車輪オドメトリなどの他の種類のセンサのサポートで利用可能である３Ｄ情報を用いることにより抽出され得る。いくつかの事例において、そのような配置の決定を支援するために、本明細書に記載するようなオドメトリ解決手段が適用され得る。ひとたびカメラの位置が把握されると、スキャンが同じ座標系上で表されることで、全てのスキャンからの情報を共に含む３Ｄマップの作成が可能になり得る。カメラの位置を求めることの問題は、相対姿勢推定として知られており、これまでは、リソース制約デバイス上での実装が難しかった。
【０１４０】
一例において、コンピューティングシステムは、ディープニューラルネットワーク（ＤＮＮ）を実装および使用することにより相対姿勢推定の問題を解決するように構成され得る。点群のサイズは、センサに対するノイズおよび制限に起因して、スキャン間で異なり得る。ただし、点群のボクセルグリッド表現は、設計ステージから固定されている。３Ｄ畳み込みが計算上高価なので、改良された解決手段は、代わりに、３Ｄボクセルグリッドの代替的な２Ｄ表現を用いて、計算上効率的な２Ｄ畳み込みニューラルネットワーク（ＣＮＮ）の使用を可能にし得る。いくつかの実装において、２Ｄ畳み込みニューラルネットワークは、ボクセルグリッドペア間の変換を求めるために用いられ得る。損失関数は、グラウンドトゥルースおよびネットワーク予測を用いて点群を変換することで取得される誤差に基づいて決定され得る。そのような実装の実行は、ＲＧＢ−Ｄ  ＳＬＡＭデータセットを用いて、その結果を最先端の反復最近点（ＩＣＰ）アプローチと比較することであってよい。さらに、２つの点群を生成するセンサのスキャン間の相対姿勢推定は、生成された点群間の最善の位置合わせを生成する変換を求めるために利用され得る。したがって、本明細書に記載するそのような相対姿勢推定解決手段は、代替的に、「点群位置合わせ」解決手段と称され得る。
【０１４１】
図２３Ａおよび図２３Ｂを参照すると、現在のところ、３Ｄ点群を位置合わせするための最も頻繁な方法は、図２３Ａに表される２つの異なる点群２３０５、２３１０内の対応点間の距離を最小化する変換を反復方式で推定する反復最近点（ＩＣＰ）２３１５の変形例に基づいている。この反復手順は、計算上高価であることがあり、さらに、最初の位置合わせの影響を受け、処理点群２３０５、２３１０とそれらのサイズとの間で重複する。両方の点群間の位置合わせの差を計算および最小化する態様に応じて、点の代わりにこの距離が平面間または曲線間で行われ得る複数のＩＣＰベースの方法が見つかり得る。３Ｄ位置合わせをより効率的なものにすべく、ＩＣＰ解決手段が、特徴を用いて３Ｄ点群の記述子から重要な点を抽出するために拡張され得る。回転および並進の不変性またはノイズのロバスト性のような係数は、ヒストグラムベースの記述子３ＤＳＩＦＴ、ＳＨＯＴおよびＮＡＲＦを用いた研究が例であるこれらの重要な点上で重要である。
【０１４２】
ＲＧＢ−Ｄ画像が利用可能である場合、ＲＧＢ画像は、カメラの変位の推定を向上させるために用いられ得る。これは、単眼カメラもしくは双眼カメラまたはマルチカメラによる姿勢推定のためのアプローチを実装するために利用され得る。改良されたシステムのいくつかの実装において、ＲＧＢ画像は、畳み込み層セットを用いて、全結合層セットが続く画像データ内の複雑な特徴を抽出して姿勢を回帰させる畳み込みニューラルネットワーク（ＣＮＮ）への入力として用いられる。さらに、いくつかの実装において、長短期記憶（ＬＳＴＭ）層がこのトポロジ上に追加されて再帰型ニューラルネットワーク（ＲＮＮ）が形成されることにより、長い軌跡において撮影される画像の間の時間依存性がハンドリングされ得る。
【０１４３】
他の実装は、異なる種類の入力をＲＧＢ画像と共に利用し得る。例えば、相対姿勢を推定するために、画像のペア間のオプティカルフローが用いられ得る。さらに、深度次元の情報も用いられ得る。ここでは、２．５Ｄ透視からこの状況を考慮して、ニューラルネットワークが、幾多の例の中でもとりわけ、ＲＧＢ−Ｄ画像を入力として用いる。いくつかの実装は、３Ｄデータに対してＣＮＮを利用し、この３Ｄデータを用いてディープラーニングを実行し得る。例えば、点群位置合わせの問題は、点群から特徴点を最初に抽出し、次に、取得した特徴をディープラーニングアプローチに供給することにより、評価され得る。例えば、「スーパーポイント」記述子が、点群を一致させるための基本単位として機能し得る。この記述子は、点群間の変換を求めるために用いられる幾何学情報を保持するディープニューラルネットワーク自動エンコーダへの入力として用いられ得る。他の実装において、大量の点が存在する点群のクラスタを表す対象点が用いられ得る。加えて、この戦略を用いた分類またはセグメンテーションのような異なる問題が用いられ得る。ここでは、最も近い隣接マップおよびＫＤツリーがそれぞれ、点群の記述子として用いられる。
【０１４４】
いくつかの実装において、点群は、３Ｄ物体を分類すべく点の間の相互作用を求める全結合層に次に供給される（ｘ；ｙ；ｚ）座標のリストとして表現される点サブセットとして表され得る。図２３Ｂにおける簡略ブロックダイアグラムにより表現されるようないくつかの実装において、点群２３０５、２３１０が、各セルが固定サイズを有する３Ｄグリッド上の各点群２３０５、２３１０を変換するボクセル化処理２３３０を通じて、それぞれのボクセルグリッド（ＶＧ）２３２０、２３２５へ変換され得る。これにより、必要なメモリの量が固定され、ボクセル間の隣接関係が生成される。次に、畳み込みニューラルネットワーク２３５０に入力を提供するためにボクセルグリッドベースの入力２３２０、２３２５が用いられることで、相対姿勢結果２３５５が生成され得る。この種類のデータをディープラーニングと共に用いる戦略は、幾多の用途の中でもとりわけ、物体の分類および向きの問題に適用され得る。従来の解決手段およびシステムは、ボクセルグリッド（ＶＧ）およびディープラーニングを用いずに相対姿勢推定の問題を解決する。３Ｄ空間のＶＧ表現の使用には、設計ステージにおいて固定サイズを有する、また、小さいメモリフットプリントを有するという特性がある。また、ＣＮＮ実行および他の機械学習演算向けの低電力ハードウェアアクセラレータ（例えば、Ｍｏｖｉｄｉｕｓ（商標）Ｎｅｕｒａｌ  Ｃｏｍｐｕｔｅ  Ｓｔｉｃｋ（商標））を用いることにより、幾多の例示的な利益の中でもとりわけ、このアプローチをリソース制約デバイスに対して適用することが可能である。
【０１４５】
図２４に示される簡略ブロックダイアグラムを参照すると、解析中の３Ｄ空間のボクセルグリッド表現（例えば、２３２０、２３２５）に基づく相対姿勢推定の決定において用いられる例示的なニューラルネットワークトポロジが表されている。１つの例示的な実装において、ボクセルグリッド構造２３２０、２３２５のペアを入力として受け取ってから、ＣＮＮ２３５０をトレーニングしてそれらの（スキャンから生成され、ボクセルグリッド構造が基づく）対応点群を位置合わせすることによりスキャン間の相対姿勢を求めるために、２Ｄ畳み込みニューラルネットワークが実装され得る。実際には、各ボクセルグリッド構造２３２０、２３２５は、システムにより実行されるボクセル化処理を通じて、点群のうちの対応する１つから生成または抽出され得る。次に、ネットワーク２３５０内の２Ｄ畳み込み層において用いられる入力を適合させるべく、３Ｄから２Ｄへの投影２４０５が、システムにより実行され得る。ひとたび２Ｄ投影のペアがネットワークに導入されると、それらの間の相対姿勢ΔＴ  ２３５５が予測される。
【０１４６】
図２４の例に示されるように、ボクセルグリッド入力２３２０、２３２５が２Ｄ投影においてスライスされ、２Ｄ投影入力（それぞれ、２４１０、２４１５）へ変換された状態で、２Ｄ投影入力２４１０、２４１５は、ＣＮＮ２３５０の表現部分２４２０への入力として提供され得る。ネットワーク２３５０の表現部分２４２０は、対応する畳み込み層（例えば、２４２５ａ，ｂ）の複数のセット（例えば、ペア）を有するシャムネットワークとして実装され得る。図２４において用いられる表記内で、表現部分２４２０内の層の各々について、Ｃｏｎｖ（ｉ；ｊ；ｋ）は、ｉ個の出力と、ストライドｋのカーネルサイズｊ×ｊと、「同じ」ゼロパディングとを有する畳み込み層を表す。表現部分２４２０からの出力が連結されることで、ネットワーク２３５０の回帰部分２４３５への入力として導入される特徴ベクトル２４３０が形成され得る。例えば、回帰部分２４３５は、相対姿勢結果２３５５の生成に用いられる回転（ΔＲ）成分および並進（Δｔ）成分の各々をそれぞれ生成する最終の全結合層を有する全結合層セット２４４０を含むように実装され得る。図２４の表現において用いられる表記内で、ＦＣ（ｉ）は、ｉ個のニューロンを有する全結合層を意味する。
【０１４７】
上記のように、点群は、編成されていない点のセットにより形成される種類のデータなので、最初に、ボクセル化として知られる処理での３Ｄグリッドとして表される。ボクセル化により、点群は、ボクセルグリッドへ変換される。ここでは、対応して２Ｄ画像がピクセル内で構造化されるので、データがボクセル内で構造化される。本質的に、ボクセルグリッドは、ボクセルとして知られる各キューブが点群からの情報の小さいゾーンを含む、［高さ、幅、深度］形状を有するキューブ３Ｄグリッドである。点がそのゾーンに含まれる場合、ボクセルの占有は、１に設定され、そうでなければ０である。これは、占有ＶＧとして知られるボクセル当たり１ビットのみをＶＧが含むことを意味する。３Ｄ空間の点群表現２５０５の例、および、点群表現２５０５からのボクセル化を通じて生成された対応するボクセルグリッド表現２５１０の例が、図２５に示される。ＶＯＬＡ構造は、いくつかのジオメトリにより占有されている３Ｄ空間を表すそれらのボクセルについてのみデータが格納される、ボクセルグリッドデータ構造の専用形式とみなされ得る。したがって、ＶＯＬＡボクセルグリッド構造により、本明細書における例において説明するようなデータ転送とメモリが制約された環境とに有用な格納されるデータの量が減っている。
【０１４８】
上で紹介したように、いくつかの実装において、ボクセルグリッドベースの入力（例えば、２３２０、２３２５）を導入する前に、３Ｄから２Ｄへの投影段階が実行されることにより、２Ｄカーネルを有する畳み込み層と共に用いられる３Ｄ表現が、適合させられ得る。これにより、ネットワーク（例えば、２３５０）の計算コストが低減し、それがより単純になることで、幾多の例示的な用途の中でもとりわけ、メモリの制約がある埋め込みデバイスへの容易なデプロイが可能になる。例えばマルチビューＣＮＮ内で、２Ｄ投影が３Ｄデータに対して用いられ得る。ここでは、２Ｄ画像投影が、うまく開発された２Ｄ  ＣＮＮと共にそれらを用いるために、３Ｄモデルの異なる透視から抽出される。ただし、このアプローチは、典型的には、３Ｄボリュームの空間構造を保存しない。なぜなら、このアプローチでは、この情報が必要になり得ない分類問題に重点が置かれているからである。他の実装では、３ＤのＶＧを２Ｄ平面へ畳み込む「Ｘ線スキャン」と同様の処理である異方性プロービングカーネルを用いて、３Ｄ物体を２Ｄへ投影し得る。この投影は、我々が研究している姿勢推定問題において用られる３Ｄボリュームの３Ｄグローバル構造を撮像するための一助になり得る。実世界における（Ｘ；Ｙ；Ｚ）次元を表す（ｈＶＧ；ｗＶＧ；ｄＶＧ）としてボクセルグリッドが表されるので、１つの例示的な解決手段では、Ｙ次元の方向においてボクセルグリッドをスライスすることによりボクセルグリッド構造が２Ｄ投影へ変換されることで、サイズ（ｈＶＧ，ｄＶＧ）のｗＶＧ個の画像が生成され得る。次に、結果として生じる２Ｄ画像が積層され、ｗＶＧ個のチャネルを有するサイズ（ｈＶＧ，ｄＶＧ）の画像が生成される。関連用途では物体の垂直線が点群の位置合わせに寄与するものと予想され得るので、この例では、ｗＶＧは、スライス方向として用いられている。幾多の例示的な代替形態の中でもとりわけ、意図された用途の検討事項に基づく他の実装は、代替的に、３Ｄボクセルグリッドの他の次元に沿って同様に機能し得る。
【０１４９】
図２４の例において上で記載したように、コンピューティングシステムは、ハードウェアおよび／またはソフトウェアに畳み込みニューラルネットワーク（ＣＮＮ）を実装し、ＣＮＮを用いてボクセルグリッドのペア間の相対姿勢を推定し得る。ＣＮＮ２３５０は、対応するボクセルグリッドの２Ｄ投影を入力として受け取り、相対姿勢の回転（ΔＲ）および並進（Δｔ）を表すベクトルを出力する。ＣＮＮ２３５０の表現部分２４２０は、入力の全てのペアから特徴ベクトル２４３０を抽出できる。この特徴ベクトル２４３０は、相対姿勢を予測するために後で用いられる実用的な情報を含み得る。特徴ベクトル２４３０は、重みが互いに共有される畳み込み層の２つの同一の分岐を有するシャムネットワークにより形成される。いくつかの実装において、表現部分２４３０内の全ての畳み込み層の後には、活性化関数としての正規化線形ユニット（ＲｅＬＵ）が存在する。いくつかの事例では、データの空間情報が保存されることを保証するためにプーリング層が用いられることはない。ＣＮＮ２３５０の回帰部分２４３５では、シャムネットワークの両方の分岐の出力が平坦化および連結されることで、ネットワークの予測の推定を担う部分である回帰部分に導入されるベクトルが形成される。これは、ＲｅＬＵ活性化関数が各々の後に続く全結合層セット２４４０により形成される。ネットワークの出力は、予測の回転部分および並進部分という２つの成分を有するので、ネットワーク２３５０の最後のセグメント２４５０内では、各々で予測部分全体である２つの全結合層に分離がある。
【０１５０】
上記の例を続けると、ＣＮＮ２３５０の出力２３５５は、ボクセルグリッドのペア間の相対姿勢を表すベクトルで構成され得る。このベクトルは通常、特殊直交群ＳＯ（３）からの回転要素と並進ベクトルとから成る要素のセットである変換値の特殊ユークリッド群ＳＥ（３）の変換行列ΔＴとして定義される。ＳＥ（３）グループにおいて予測を行う場合、ＳＯ（３）回転成分に伴ういくつかの問題が存在し得る。なぜなら、それらは直交行列である必要があるからである。いくつかの実装において、ＳＥ（３）グループのリー代数ｓｅ（３）の使用が、直交要件を回避するための解決手段として提示される。なぜなら、その直交制約を有することなく瞬間的な変換を表すからである。ｓｅ（３）とＳＥ（３）との間の変換を行うべく、指数マップが用いられ得る。
式１５：
【数１８】
2021536604.tif 000024
リー代数グループを用いた結果として、ネットワークの姿勢予測値（ｗ｜ｕ）は、回転についてのｗ＝（ｗ１；ｗ２；ｗ３）および並進についてのｕ＝（ｕ１；ｕ２；ｕ３）という、ΔＴへ変換される２つのベクトルにより表される。この変換を行うための計算段階では、上記の式３から式９を利用する。
【０１５１】
いくつかの実装において、ネットワーク２３５０は、正しい解決手段を実現するようにネットワークを誘導する損失関数により制御される学習フェーズを利用してトレーニングされ得る。損失関数は、ネットワークの予測がどのくらい良好であるかを測定することで、学習誤差逆伝播にペナルティを課すか、または学習誤差逆伝播を報奨し得る。一例において、提案される損失関数で、２つの異なる変換値Ｔｇｔおよび
【数１９】
2021536604.tif 000025
を適用した後の点群内の点の位置の差が定量化される。この手順は、３Ｄ空間内で等しく分散された点を有する汎用点群を取得し、次に、２つの異なる変換値を適用し、点の位置の差を比較することから成る。２つの変換値は、ネットワーク予測値
【数２０】
2021536604.tif 000026
とグラウンドトゥルースＴｇｔとに対応する。結果として、より近いこれらの点群は、それら自体の間にあり、予測値とグラウンドトゥルースとがより類似する。変換値Ｔｇｔに対応する点ｐｉの位置と、変換値
【数２１】
2021536604.tif 000027
に対応する点
【数２２】
2021536604.tif 000028
の位置との間のユークリッド距離は、誤差測定基準として用いられる。ひとたびこの距離が全ての点について決定されると、損失を表す平均が計算される。損失関数は、以下のように表され得る。
式１６
【数２３】
2021536604.tif 000029
式中、
【数２４】
2021536604.tif 000030
は、点ｉのＬ２ノルムを表し、ｎは、点群内の点の数である。
【０１５２】
相対姿勢推定問題に重点が置かれた多くのデータセットが存在し、姿勢推定の解決手段において用いられるＣＮＮの有効性を試験するために利用され得る。そのようなデータセットは、グラウンドトゥルースを表すために用いられ得る。グラウンドトゥルースは、相対姿勢について知る必要がある、データの位置特定についての情報を提供する。一例において、ネットワークの評価には点群が必要とされる。この種類のデータは、３Ｄレーザセンサ（例えば、ＬｉＤＡＲ）を用いて生成される点群を直接提供する３Ｄデータセットから、またはＲＧＢ−Ｄデータセットからという２つの態様で見られ得る。点群は、深度情報を用いて各ピクセルを点へ変換  単純な処理における深度マップから抽出され得る。
【０１５３】
本明細書に記載するようなディープラーニングを利用する実装では、ネットワークをトレーニングするために、学習フェーズにおいて高ボリュームのデータが必要とされ得る。この要件を満たすことにより、異なるデータセットが、それらをそれらの用途で区別することで、見つかり得る。例えば、ＫＩＴＴＩデータセット、Ｏｘｆｏｒｄ  Ｒｏｂｏｔ  Ｃａｒデータセット、Ｍａｌａｇａ  Ｕｒｂａｎデータセットおよび他のものでは、カメラ／センサを動かすために車が用いられる自律駆動用途に重点が置かれ得る。別の例として、７シーンのデータセット、ＩＣＬ−ＮＵＩＭデータセットおよび他のデータセットでは、手でカメラを取って動かす屋内環境でのハンドヘルドデバイスに重点が置かれ得る。別の例では、ハンドヘルドシーケンスに加えて、ＴＵＭデータセットが利用され得る。ネットワークのトレーニング中に使用され得る幾多の例示的なデータセットの中でもとりわけ、ＴＵＭデータセットは、地上で動いている車輪付きロボットから取得されるデータも含み得る。
【０１５４】
例として、ディープラーニングを用いる、屋内位置を対象とした地上ロボットの用途では、ＴＵＭデータセットが利用され得る。なぜなら、ＴＵＭデータセットは、ディープニューラルネットワーク（ＤＮＮ）をトレーニングするためのこの種類の十分な量のデータを提供するからである。このデータセットは、複数のシーケンスから成ってよく、これらのシーケンスは、用途に応じてカテゴリに編成される。一例において、「ロボットＳＬＡＭ」のシーケンスのみが用いられる。深度マップから点群を取得すべく、データセットにおいて提供されるツールは、我々のアプローチの性能を評価するために用いられる。
【０１５５】
ＴＵＭデータセットからの点群は、本明細書において説明したように（例えば、ｘ方向、ｙ方向およびｚ方向においてカメラから［４，４，８］メートルの範囲からの点のみを、サイズ［６４，６４，１２８］のＶＧへ取り込むことで）、ボクセル化され得る。ネットワークをゼロからトレーニングするために、一例において、「ロボットＳＬＡＭ」カテゴリの最初の３つのシーケンス（例えば、ｆｒ２／ｐｉｏｎｅｅｒ３６０、ｆｒ２／ｐｉｏｎｅｅｒ  ｓｌａｍおよびｆｒ２／ｐｉｏｎｅｅｒ  ｓｌａｍ２）が用いられることで、未知のデータを用いてネットワークを評価すべく、４番目のセット（例えば、ｆｒ２／ｐｉｏｎｅｅｒ  ｓｌａｍ３）が、トレーニングから除外されたままになり得る。
【０１５６】
さらに、トレーニングのためのデータの量を増やすことでセンサの大きい変位に対してネットワークをロバストにすべく、トレーニングペアは、形式
【数２５】
2021536604.tif 000031
のデータのシーケンスにおける異なる段階サイズを取得することにより作成され得る。Ｆは、インデックスｉを有するフレームであり、
【数２６】
2021536604.tif 000032
であり得る。ｎは、シーケンスの長さであり、ｓは、
【数２７】
2021536604.tif 000033
を有する段階サイズである。これらの値は、用いられるフレームの間の分離を増やすように選択され得る。
【０１５７】
一例において、ネットワークモデルは、ＴｅｎｓｏｒＦｌｏｗフレームワークを用いて実装され、グラフィカル処理ユニット（ＧＰＵ）、ベクトル処理ユニットまたは他のコンピュータプロセッサを用いてトレーニングされ得る。一例において、ＴＵＭデータセットにおいて提供されるツールを用いることにより、トレーニングされたネットワークの性能が解析される。ＴＵＭデータセットでは、（ｉ）固定間隔Δにわたる軌跡の局所的な精度、つまり、軌跡のドリフトに対応する誤差を測定する相対姿勢誤差（ＲＰＥ）、および、（ｉｉ）推定軌跡とグラウンドトゥルース軌跡との間の絶対距離を比較することにより推定軌跡のグローバルな一貫性を測定する絶対軌道誤差（ＡＴＥ）という２つの異なる種類の誤差が提示される。
【０１５８】
既存のアプローチに対してネットワークの性能を比較するために、反復最近点（ＩＣＰ）の従来の実装が用いられ得る。本明細書に記載するＣＮＮベースの相対姿勢推定アプローチの例示的な評価において決定された誤差が、従来のＩＣＰ実装の結果と共に表５に提示されており、ＣＮＮとＩＣＰとを組み合わせたアプローチ（改良されたＣＮＮベースの解決手段とＩＣＰ部分との組み合わせ）も、比較のために提示されている。相対姿勢推定に関して、ＣＮＮは、ＩＣＰを用いる方法よりも高い回転誤差を有するが、ＣＮＮの並進誤差は最も低いということが分かる。これは、回転誤差は高いが、姿勢に対する影響はほとんどないので、並進誤差の影響力がほとんどないことを意味する。いくつかの事例では、カメラが動かされた場合に回転相対姿勢推定誤差が並進誤差として現れるので、並進相対姿勢推定誤差は、比較のために十分に考慮され得る。最後に、ＣＮＮではＡＴＥ誤差がより大きいが、ネットワークにより取得される軌跡は、滑らかであり、グラウンドトゥルースと同じ「形状」をたどる。一方で、ＩＣＰの軌跡は、典型的には、より不規則である。ＣＮＮ用のより高いＡＴＥは、評価の回転のスケールが存在しない小さいデータセットでＣＮＮをトレーニングした結果とみなされ得る。
【表５】
2021536604.tif 000034
表５：各相対姿勢推定技術での相対姿勢誤差（ＲＰＥ）および絶対軌道誤差（ＡＴＥ）（二乗平均平方根誤差（ＲＭＳＥ）、平均偏差および標準偏差（ＳＴＤ）として表される）。この例では、ＲＰＥは、５個のフレームという固定されたΔ間隔を用いて計算される。
【０１５９】
上記のように、改良されたコンピューティングシステムは、（ハードウェアおよび／またはソフトウェアに）エンドツーエンドアプローチを実装することで、点群間の変換誤差に基づく損失関数を用いてボクセルグリッド間の相対姿勢を求め得る。そのようなシステムのＣＮＮにより推定される軌跡は、ＩＣＰ（およびさらにＣＮＮ＋ＩＣＰという組み合わせ）と比較してより滑らかであり得る。そのようなシステムは、相対的に大量のデータを利用して、対応するディープラーニングモデルをトレーニングし得るが、他の実装では、トレーニングデータセットのサイズが増やされ得る。ハンドヘルドカメラ、ドローンおよび車を含む他の用途にこのアプローチが利用され得ることを理解されたい。さらに、実装が、ＬｉＤＡＲにより取得される点群を利用し得る。また、いくつかの実装において、ネットワークのパラメータのサイズは、幾多の例示的な修正の中でもとりわけ、低減されるか、またはそうでなければ簡略化され得る。
【０１６０】
図２６Ａから図２６Ｃは、システムによるコンピュータビジョン処理を強化するための例示的な技術を示すフローチャート２６００ａ−ｃである。図２６Ａの例では、レイキャスティングを実行するための改良された技術が表されている。例えば、疎な階層ボリュメトリック（グリッドベース）データ構造（例えば、ＶＯＬＡベース構造）がアクセスされてよく（２６０２）、レイキャスティングアルゴリズムが、ボリュメトリックデータ構造を用いて実行されてよい（２６０４）。ボリュメトリックデータ構造により表されるボリュームへ複数の光線が放射されることで、レイキャスティングアルゴリズムが実行され得る（２６０６）。レイキャスティングは、レイトラバーサル段階を含み得る。この場合、光線の近似横断をもたらす間隔に従って、光線が交差するボクセルの全てのうちの一部が、ジオメトリを含んでいる（または「占有されて」いる）かどうかを確かめるためにチェックされる。横断から、占有されているボクセルと光線が交差しているかどうかがおおよそ判断され、そうである場合、占有されているボクセルは、光線が最初に交差している。このレイキャスティング処理は、例えば、ＳＬＡＭパイプライン、レンダリング用途または他の例示的な使用の一部として、光線の各々に対して繰り返される。
【０１６１】
図２６Ｂを参照すると、デバイス（例えば、デバイスの１つまたは複数のセンサ）の姿勢を決定するための改良された技術が示されている。デバイスは、環境を自律的にナビゲートして環境内で動くことができる自律デバイスであってよい。一例において、視覚データ（例えば、デバイスのカメラにより生成される）が、視覚オドメトリニューラルネットワークとして実装される、ニューラルネットワークモデルの第１の部分に入力され得る（２６２０）。さらに、慣性データ（例えば、デバイスのＩＭＵにより生成される）も、慣性オドメトリニューラルネットワーク部分として実装される、ニューラルネットワークモデルの第２の部分に入力され得る（２６２２）。視覚オドメトリネットワーク部分および慣性オドメトリオドメトリネットワーク部分のそれぞれの出力は、連結されてから、ニューラルネットワークモデル内の全結合層セットにおける最初のものへの入力として提供され得る。ニューラルネットワークモデルにより、デバイスのポストを表す出力が、視覚データおよび慣性データの組み合わされた入力に基づいて生成され得る（２６２６）。
【０１６２】
図２６Ｃを参照すると、相対姿勢推定を決定するための改良された技術が示されている。例えば、環境のビューを記述するために（かつ、２つのボリューム（例えば、環境全体のサブボリューム）を記述するために）キャプチャされた点群データが、（２６３０、２６３２において、）対応するボリュームを各々が表すそれぞれのボクセル化されたボリュメトリックデータ構造（例えば、ＶＯＬＡベースの構造）へ変換され得る。次に、これらのボリュメトリックデータ構造は、スライスされるか、またはそうでなければ、（２６３４、２６３６において、）２Ｄデータ構造（例えば、２Ｄスライスのそれぞれのセット）へ変換されてよく、２Ｄスライスは、（２６３８において、）相対姿勢推定を決定するためにトレーニングされた畳み込みニューラルネットワークモデルに入力として提供され得る。実際には、畳み込みニューラルネットワークモデルは、（２６４０において、）２つのボクセル化されたボリュメトリックデータ構造で記述されたボリュームに基づいて相対姿勢推定を表す結果を生成し得る。
【０１６３】
図２７は、いくつかの実施形態による例示的なマルチスロットベクトルプロセッサ（例えば、超長命令語（ＶＬＩＷ）ベクトルプロセッサ）を表す簡略ブロックダイアグラムである。この例では、ベクトルプロセッサは、複数の（例えば、９個の）機能ユニット（例えば、２７０３から２７１１）を含んでよく、これらの機能ユニットは、ベクトルレジスタファイル（ＶＲＦ）２７０１および汎用レジスタファイル（ＧＲＦ）２７０２によりバックアップされるマルチポートメモリシステム２７００により供給され得る。プロセッサは、命令をデコードし、かつ、機能ユニット２７０３−２７１１を制御する制御信号を生成する命令デコーダ（ＩＤＥＣ）２７１２を含む。機能ユニット２７０３から２７１１は、プレディケイティッド実行ユニット（ＰＥＵ）２７０３と、分岐および繰り返しユニット（ＢＲＵ）２７０４と、ロードストアポートユニット（例えば、ＬＳＵ０  ２７０５およびＬＳＵ１  ２７０６）と、ベクトル演算ユニット（ＶＡＵ）２７０７と、スカラ演算ユニット（ＳＡＵ）２７１０と、比較および移動ユニット（ＣＭＵ）２７０８と、整数演算ユニット（ＩＡＵ）２７１１と、ボリュメトリック加速ユニット（ＶＸＵ）２８００とである。この特定の実装では、ＶＸＵ２８００は、格納演算／検索演算の両方と、論理演算と、算術演算とを含むボリュメトリックデータに対する演算を加速させ得る。図２７の例にはＶＸＵ回路２８００が単一のコンポーネントとして示されているが、ＶＸＵ（および他の機能ユニット２７０３から２７１１）の機能は複数の回路の間で分散され得ることを理解されたい。さらに、幾多の例示的な実装の中でもとりわけ、いくつかの実装では、ＶＸＵ２８００の機能は、プロセッサの他の機能ユニット（例えば、２７０３から２７０８、２７１０、２７１１）のうちの１つまたは複数内で分散され得る。
【０１６４】
図２８は、いくつかの実施形態によるＶＸＵ２８００の例示的な実装を示す簡略ブロックダイアグラムである。例えば、ＶＸＵ２８００は、ベクトルレジスタファイル２８０１または汎用レジスタファイル２８０２のいずれかから入力を受け入れるために、少なくとも１つの６４ビット入力ポート２８０１を提供し得る。この入力は、レジスタファイル２８０３と、アドレス生成器２８０４と、点アドレス指定ロジック２８０５と、点挿入ロジック２８０６と、点削除３Ｄロジック２８０７と、Ｘ次元における３Ｄから２Ｄへの投影ロジック２８０８と、Ｙ次元３Ｄから２Ｄへの投影ロジック２８０９と、Ｚ次元における３Ｄから２Ｄへの投影ロジック２８１０と、２Ｄヒストグラムピラミッド生成器２８１１と、３Ｄヒストグラムピラミッド生成器２８１２と、ポピュレーションカウンタ２８１３と、２Ｄ経路探索ロジック２８１４と、３Ｄ経路探索ロジック２８１５と、場合によっては、６４ビット符号なし整数ボリュメトリックビットマップ上で動作するためのさらなる機能ユニットとを含む複数の機能ユニットに接続され得る。ブロック２８０２からの出力は、ベクトルレジスタファイルＶＲＦ２８０１または汎用レジスタファイルＧＲＦ２８０２のいずれかへライトバックされ得る。
【０１６５】
図２９の例を参照すると、４＾３ボクセルキューブ２９００の編成の表現が表されている。第２のボクセルキューブ２９０１も表されている。この例では、ボクセルキューブは、データ内で６４ビット整数２９０２として定義され得る。６４ビット整数２９０２において、キューブ内の１つ１つのボクセルは、６４ビット整数の単一の対応するビットで表される。例えば、アドレス｛ｘ，ｙ，ｚ｝＝｛３，０，３｝におけるボクセル２９０２を「１」に設定することで、ボクセルキューブ２９０１により表されるボリュメトリック空間内のその座標にジオメトリが存在していることを示し得る。さらに、この例では、（ボクセル２９０２以外の）全ての他のボクセルが「空き」スペースに対応してよく、幾多の例の中でもとりわけ、それらの座標に物理ジオメトリが無いことを示すために「０」に設定され得る。図３０を参照すると、いくつかの実施形態による例示的な２レベルのスパースボクセルツリー３０００が示されている。この例では、単一の「占有されている」ボクセルのみが、ボリューム内に（例えば、位置｛１５，０，１５｝に）に含まれる。この場合におけるツリーの上位レベル−０  ３００１は、単一のボクセルエントリ｛３，０，３｝を含む。結果として、そのボクセルは、要素｛３，０，３｝に単一のボクセルを含む、ツリーの次のレベル３００２の方を指す。スパースボクセルツリーのレベル０に対応するデータ構造内のエントリは、１つのボクセルが占有として設定された６４ビット整数３００３である。設定されたボクセルは、６４ビット整数のアレイが次に、３００３において設定されるボクセルボリュームに対応するツリーのレベル１に割り当てられることを意味する。レベル１のサブアレイ３００４では、ボクセルのうちの１つのみが占有として設定され、全ての他のボクセルが非占有として設定されている。この例では、ツリーが２レベルのツリーなので、レベル１がツリーの最下部を表し、これにより、階層がここで終了している。
【０１６６】
図３１は、特定のボリュームの位置｛１５，０，３｝および｛１５，０，１５｝に占有ボクセルを含む、いくつかの実施形態による２レベルのスパースボクセルツリー３１００を示す。この場合におけるツリー３１０１の上位レベル−０（特定のボリュームを６４個の上位レベル−０ボクセルへ細分化する）は、２つのボクセルエントリ｛３，０，０｝および｛３，０，３｝を含み、対応するデータ３１０４は、２つのボクセルが設定（または占有）されていることを示す。スパースボクセルツリー（ＳＶＴ）の次のレベルは、２つのサブキューブ３１０２および３１０３を含む６４ビット整数のアレイとして提供され、これらのサブキューブは、レベル０において設定される各ボクセルに１つずつある。レベル１のサブアレイ３１０５では、２つのボクセルｖ１５およびｖ６３が占有として設定され、全ての他のボクセルが非占有およびツリーとして設定されている。この形式は柔軟である。なぜなら、ツリーの次のレベル内の６４個のエントリは常に、ツリーの上位層内の設定されたボクセルの各々に対応して割り当てられるからである。この柔軟性により、上位層内の対応するボクセルが設定されている限り、動的に変化しているシーンジオメトリを柔軟な方式で（すなわち、ランダムなどの固定順序ではなく、）既存のボリュメトリックデータ構造へ挿入することが可能になり得る。そうでない場合、ポインタのテーブルが維持されることでメモリ要件が高くなるか、さもなければ、予期せぬジオメトリを挿入すべく、ツリーを少なくとも部分的に再構築することが必要であろう。
【０１６７】
図３２は、いくつかの実施形態による、図３１からのボクセルを格納するための代替的な技術を示す。この例では、ボリューム３２００全体が、図３１のようにグローバル座標｛１５，０，３｝および｛１５，０，１５｝に格納された２つのボクセルを含む。このアプローチでは、レベル０よりも下のレベル１におけるサブキューブの全てを表すために６４個のエントリのアレイを割り当てるのではなく、（例えば、対応するレベル０のボクセルが占有されているか否かにより示されるように、）実際にジオメトリを含むレベル１におけるそれらの要素のみが、対応する６４ビットのレベル１レコードとして割り当てられる。これにより、この例におけるレベル１は、６４個の６４ビットエントリではなく、２個の６４ビットエントリのみを有する（すなわち、占有されているか空であるかどうかにかかわらず、６４個のレベル１のボクセルの各々について）。したがって、この例では、第１のレベル０  ３２０４が図３１における３１０４と同等であるが、次のレベル３２０５は、図３１における対応する３１０５よりもメモリ要件が６２倍小さい。いくつかの実装では、レベル１において空間が割り当てられていない新しいジオメトリをレベル０へ挿入する場合、ツリーをコピーおよび再配置しなければならない。
【０１６８】
図３２の例において、現在の層よりも上の層内の占有ボクセルをカウントすることにより、サブボリュームを導出できる。このようにして、システムは、ボクセルデータのどこで、１つの上位層が終了し、次の下位層が開始しているかを判断し得る。例えば、３つの層０ボクセルが占有されている場合、システムは、３つの対応する層１エントリがボクセルデータにおいて続くこと、および、（これら３つの後の）次のエントリが層２内の第１のエントリに対応すること等を予想し得る。そのような最適な圧縮は、シーンの特定の部分が経時的に変化しない場合、または、この用途でボリュメトリックデータの遠隔伝送、例えば、全てのビットの伝送にコストおよび時間がかかる冥王星の表面をスキャンする宇宙探査機からの遠隔伝送が必要とされる場合、非常に有用であり得る。
【０１６９】
図３３は、いくつかの実施形態による、対応するボリューム内のジオメトリへの変更を反映するために、６４ビット整数ボリュメトリックデータ構造エントリとして表される４＾３キューブへボクセルが挿入され得る方式を示す。一例において、３３００に示されるように、各ボクセルキューブは、６４ビット整数内の４つの論理１６ビット平面として編成され得る。幾多の例示的な編成の中でもとりわけ、平面の各々は、０から３までのＺ値に対応し、各平面内では、各ｙ値が０から３までの４つの論理４変位ビットをコード化し、最後に、各４ビットのｙ平面内では、各ビットが０から３までの４つの可能なｘの値をコード化する。したがって、この例では、ボクセルを４＾３ボリュームへ挿入するために、最初に、１ビットをｘ値０から３だけシフトしてよく、次に、その値を０／４／８／１２ビットだけシフトしてｙ値をエンコードしてよく、最後に、３３０１にＣコード式で示されるように、ｚ値を０／１６／３２／４８ビットのシフトで表してよい。最後に、各６４ビット整数が、各々が別個に書き込まれる最大６４個のボクセルの組み合わせであってよいので、新しいビットマップは、３３０２に示されるように、古いビットマップ値および新しいビットマップ値をＯＲ演算することにより、スパースボクセルツリーから読み取られる古い６４ビット値と論理的に組み合わされなければならない。
【０１７０】
図３４を参照すると、いくつかの実施形態に従って、Ｘ方向に論理ＯＲ演算をして２Ｄパターン３４０１を生成し、Ｙ方向に論理ＯＲ演算をして２Ｄ出力３４０２を生成し、最後に、Ｚ方向に論理ＯＲ演算をして３４０３に示されるパターンを生成することにより、６４ビット整数３４００に格納された３Ｄボリュメトリック物体がどのように投影され得るかを示すための表現が示されている。図３５Ａ、図３５Ｂおよび図３５Ｃは、いくつかの実施形態に従って、どのように入力６４ビット整数からのビットを論理的にＯＲ演算してＸ、ＹおよびＺに出力投影を生成するかを示す。この例において、表３５０１は、入力ベクトル３５００からのどの要素インデックスをＯＲ演算してｘ投影出力ベクトル３５０２を生成するかを列ごとに示している。表３５０３は、入力ベクトル３５００からのどの要素インデックスをＯＲ演算してＹ投影出力ベクトル３５０４を生成するかを列ごとに示している。最後に、３５０５は、入力ベクトル３５００からのどの要素インデックスをＯＲ演算してｚ投影出力ベクトル３５０６を生成するかを列ごとに示す。
【０１７１】
Ｘ投影では、入力データ３５００からのビット０、１、２、３を論理的にＯＲ演算して、Ｘ投影３５０１のビット０を生成する。例えば、３５０１におけるビット１は、３５００からのビット４、５、６および７等をＯＲ演算することにより生成され得る。同様に、Ｙ投影３５０４におけるビット０は、３５００のビット０、４、８および１２を共にＯＲ演算することにより生成され得る。３５０４のビット１は、３５００のビット１、５、９および１３等を共にＯＲ演算することにより生成される。最後に、Ｚ投影３５０６におけるビット０は、３５００のビット０、１６、３２および４８を共にＯＲ演算することにより生成される。３５０６のビット１は、３５００のビット１、１７、３３および４９等を共にＯＲ演算することにより生成され得る。
【０１７２】
図３６は、いくつかの実施形態による、どのように投影を用いて簡略マップを生成できるかについての例を示す。このシナリオにおける目標は、ボクセルボリューム３６０２から、高さｈ  ３６１０および幅ｗ  ３６０１の車両３６００が下る経路のコンパクトな２Ｄマップを生成することであってよい。ここで、Ｙ投影ロジックは、ボクセルボリューム３６０２から最初の粗い２Ｄマップ３６０３を生成するために用いられ得る。いくつかの実装では、マップを処理することで、特定の寸法の特定の車両（例えば、車（または自律走行車）、ドローン等）が経路の幅の制約３６０１および高さの制約３６１０を通過できるかどうかをチェックし得る。これは、Ｚに投影を実行して幅の制約３６０１をチェックすることにより経路が通過可能であることを保証すべく実行されてよく、Ｙにおける投影は、計算を車両３６１０の高さに限定するためにマスキングされ得る。（例えば、ソフトウェア内で）さらなる後処理を用いると、通過可能であり、かつ、幅および高さの制約を満たす経路については、車両が走行できる合法的な経路を完全に再構築すべく、経路に沿った点Ａ  ３６０４、Ｂ  ３６０５、Ｃ  ３６０６、Ｄ  ３６０７、Ｅ  ３６０８およびＦ  ３６０９のＸ座標およびＺ座標のみが、ネットワークを介してのみ格納または伝送され得ることが分かる。経路がそのような区分的セグメントへ分解され得ると仮定すると、経路の区分的線形セクション当たり１バイトまたは２バイトのみで経路を完全に記述することが可能である。これは、幾多の例の中でもとりわけ、（例えば、自律走行車両による、）そのような経路データの高速な伝送および処理を支援し得る。
【０１７３】
図３７は、ＬｉＤＡＲまたは他の高価な手段を使用して正確な測定を行う代わりに高品質のクラウドソーシングされたマップを生成すべく、埋め込みデバイスからの３Ｄボリュメトリック測定値または単純な２Ｄ測定値のいずれかをいくつかの実施形態に従ってどのように数学的な手段により集約できるかを示す。提案されるシステムでは、複数の埋め込みデバイス３７００、３７０１等が、中央サーバ３７１０へ伝送され得る測定値を取得できる様々なセンサを備え得る。サーバ上で動作するソフトウェアは、全ての測定値３７０２の集約を実行し、結果として生じる行列の非線形ソルバ３７０３による数値解決を実行して、非常に正確なマップを生成する。次に、このマップは、埋め込みデバイスへ再分配され得る。実際には、データ集約結果は、衛星３７２０、空中ＬｉＤＡＲ調査３７２１および地上ＬｉＤＡＲ測定３７２２からの高精度の調査データも含むことで、これらの高忠実度のデータセットが利用可能である、結果として生じるマップの精度を上げることができる。幾多の例示的な実装の中でもとりわけ、いくつかの実装では、マップおよび／または記録された測定値は、本明細書において説明するような形式のスパースボクセルデータ構造内に生成されるか、そのようなスパースボクセルデータ構造へ変換されるか、またはそうでなければ、そのようなスパースボクセルデータ構造を用いて表され得る。
【０１７４】
図３８Ａ、図３８Ｂおよび図３８Ｃは、いくつかの実施形態に従って、２Ｄ  ２×２ビットマップ上の２Ｄ経路探索をどのように加速できるかを示す図である。動作の原理は、同一のグリッドセルのマップ上の点間に接続性が存在するように、ｘもしくはｙのセルまたはｘおよびｙのセルの連続的な実行の値を全て１に設定しなければならないことである。故に、それらのセルから引き出されるビットの論理ＡＮＤをインスタンス化して、有効な経路が存在するかどうかについてグリッド内のビットマップを試験でき、Ｎ×Ｎグリッドを通る有効な各経路のために異なるＡＮＤゲートをインスタンス化できる。いくつかの事例において、このアプローチは、８×８の２Ｄグリッドでさえ３４４−１個の有効な経路を含み得るという点で、組み合わせの複雑さをもたらし得る。したがって、いくつかの改良された実装では、グリッドは、接続性について階層的に試験され得る２×２または４×４のタイルに縮小され得る。２×２のビットマップ３８００は、ｂ０、ｂ１、ｂ２およびｂ３という符号が付された４ビットを含む。この４ビットは、対応するラベル３８０１から３８１７まで、値００００から１１１１までを取り得る。これらのビットパターンの各々は、３８２１から３８３０までの符号が付された２×２グリッドの面間の様々なレベルの接続性を表す。例えば、２×２グリッド３８００がビットマップ１０１０（３８１２）、１０１１（３８１３）、１１１０（３８１６）または１１１１（３８１７）を含む場合、３８００におけるｘ０とｙ０との間の垂直接続性を示す３８２１またはｖ０はが存在する。表３８１８の行１に示されるような、３８００における２入力論理ＡＮＤまたはｂ０およびｂ３は、２×２サブグリッドへ細分化されたグローバルグリッドを通じたグローバルな接続性を決定するために上位レベルのハードウェアまたはソフトウェア内で用いられ得る接続性マップにｖ０を生成する。グローバルマップがｘ軸またはｙ軸のいずれかに奇数のグリッドポイントを含む場合、最上位レベルグリッドでは、次に高い偶数のグリッドポイントへのパディングが必要になる（例えば、これにより、グローバルグリッド上のｘ軸および／またはｙ軸に１つのさらなるゼロの行を追加することが必要になる）。図３８Ｃはさらに、例示的な７×７のグリッド３８５０を示す。このグリッドは、ゼロで満たされたさらなる行３８３２および列３８３４を追加することによりどのように８×８へパディングするかを示す。他の技術（例えば、深さ優先検索、幅優先検索もしくはダイクストラのアルゴリズムまたは他のグラフベースのアプローチ）と比較して経路探索を高速化すべく、本例では、Ｎ×Ｎマップ３８５０を２×２マップまで漸進的にサブサンプリングし得る。例えば、この例では、３８５０におけるセルＡ、Ｂ、ＣおよびＤ等の内容をＯＲ演算することにより、３８４０におけるセルＷがポピュレートされる。結果として、３８４０における２×２のセルのビットは、３８４２におけるセルをポピュレートするためにＯＲ演算される。経路探索に関して、アルゴリズムは、グリッド３８４２の最も小さい２×２表現から開始して、ビットの各々を試験する。３８４０における４×４グリッド（４つの２×２グリッドで構成される）のうち、２×２グリッド３８４２内の１ビットに対応する部分のみを接続性について試験する必要がある。なぜなら、ゼロビットは、対応する２×２グリッドセルが３８４０にないことを意味しているのが分かるからである。このアプローチは、３８２０における８×８グリッドの検索にも用いられ得る。例えば、３８４０におけるセルＷがゼロを含む場合には、３８２０等におけるＡＢＣＤに経路がないことが分かる。このアプローチでは、Ａ＊、ダイクストラ、ＤＦＳ、ＢＦＳまたはそれらの変形例かどうかにかかわらず用いられるグラフ検索アルゴリズムから分岐を枝刈りする。これに加え、２×２編成のハードウェア基本経路ファインダ３８１８を用いると、関連付けられた計算がさらに制限され得る。実際には、３８４０および３８４２と同じ配置の５個の２×２ハードウェアブロックを用いて４×４の基本ハードウェア要素が構成されることで、実行する必要があるグラフ検索の量がさらに制約され得る。さらに、潜在的にいずれのＮ×Ｎトポロジでも３８４２、３８４０、３８００等と同じ配置を有する２１個の２×２ＨＷブロック（３８１８）で、８×８ハードウェアベースの検索エンジンが構成され得る。
【０１７５】
図３９は、いくつかの実施形態に従って、提案されるボリュメトリックデータ構造を用いてどのように衝突検出を加速できるかを示す簡略ブロックダイアグラムである。ジオメトリの３ＤのＮ×Ｎ×Ｎマップは、最も低い詳細レベル（ＬｏＤ）の２×２×２ボリューム３９０２、次に高い４×４×４ボリューム３９０１、８×８×８ボリューム３９００等、最大でＮ×Ｎ×Ｎから成るピラミッドへサブサンプリングされ得る。ＧＰＳなどの位置特定手段を介して、または３Ｄマップからの再位置特定を介して、３Ｄ空間内でのドローン、車両またはロボット３９０５の位置が既知である場合、ドローン／ロボットのｘ位置、ｙ位置およびｚ位置を適切にスケーリングすること（関連する回数２でそれらを除算すること）と、ジオメトリが存在しているかについて３９０２にクエリすること（例えば、対応するビットマップビットが可能な衝突を示すものであるかどうかをチェックすること）とにより、関連する２×２×２サブボリュームの象限にジオメトリが存在しているか否かを試験するために、この位置は、速やかに用いられ得る。可能な衝突が存在する（例えば、「１」が見つかった）場合には、ボリューム３９０１、３９００等においてさらなるチェックを実行することで、ドローン／ロボットが移動できるか否かを確認し得る。ただし、３９０２におけるボクセルが空いている（例えば、「０」）場合には、ロボット／ドローンは、自由空間と同じように解釈して方向制御を操作することで、マップの大部分を自由に動くことができる。
【０１７６】
本明細書において説明および図示されているシステムおよび解決手段のうちのいくつかは、複数の要素を含むか、または複数の要素に関連付けられるものとして説明されているが、明示的に図示または説明されている全ての要素が、本開示の代替的な実装の各々において利用され得るわけではない。さらに、本明細書において説明する要素のうちの１つまたは複数は、システムの外部に位置し得るが、他の事例では、説明される他の要素および図示される実装において説明されない他の要素のうちの１つまたは複数の内部に、またはそれらのうちの１つまたは複数の一部として、特定の要素が含まれ得る。さらに、特定の要素は、他のコンポーネントと組み合わされ得るだけでなく、本明細書において説明する目的に加え、代替的な目的またはさらなる目的でも用いられ得る。
【０１７７】
さらに、上で提示した例は、特定の原理および特徴を示す目的で提供されているに過ぎない非限定的な例であり、本明細書において説明する概念の潜在的な実施形態を必ずしも限定または制約するものではないことを理解されたい。例えば、本明細書において説明するコンポーネントの様々な実装を通じて実現される組み合わせを含む、本明細書において説明する特徴およびコンポーネントの様々な組み合わせを利用して、様々な異なる実施形態を実現できる。他の実装、特徴および詳細が、本明細書の内容から理解されるはずである。
【０１７８】
図４０から図４５は、本明細書において開示される実施形態に従って用いられ得る例示的なコンピュータアーキテクチャのブロックダイアグラムである。実際には、本明細書において説明するシステムのコンピューティングデバイス、プロセッサならびに他のロジックおよび回路は、そのような機能を実装するための機能ならびにサポートソフトウェアおよび／またはハードウェア回路の全部または一部を組み込み得る。さらに、プロセッサおよびコンピューティングシステム用の、当技術分野において知られている他のコンピュータアーキテクチャ設計も、ここで示される例以外でも用いられ得る。概して、本明細書において開示される実施形態のための適切なコンピュータアーキテクチャは、限定されるわけではないが、図４０から図４５に示される構成を含み得る。
【０１７９】
図４０は、それぞれのゲートウェイへのリンクを通じて結合されるそれぞれのモノのインターネット（ＩｏＴ）ネットワーク用の例示的なドメイントポロジを示す。モノのインターネット（ＩｏＴ）は、多数のコンピューティングデバイスが互いにかつインターネットに相互接続されることで、機能およびデータの獲得を非常に低いレベルで提供する概念である。したがって、本明細書において用いられる場合、ＩｏＴデバイスは、とりわけ他のＩｏＴデバイス、およびインターネットなどのより広いネットワークと通信して感知または制御などの機能を実行する半自律デバイスを含み得る。そのようなＩｏＴデバイスは、上で紹介したようなハッシュテーブルを実装および使用するためのロジックおよびメモリを備え得る。
【０１８０】
ＩｏＴデバイスは、メモリ、サイズまたは機能が制限されているので、より少数のより大きいデバイスと同様のコストでより多数を配置できることが多い。ただし、ＩｏＴデバイスは、スマートフォン、ラップトップ、タブレットもしくはＰＣまたは他のより大きいデバイスであってよい。さらに、ＩｏＴデバイスは、スマートフォンまたは他のコンピューティングデバイス上のアプリケーションなどの仮想デバイスであってよい。ＩｏＴデバイスは、データの格納および処理の制御等のために他のＩｏＴデバイスおよびクラウドアプリケーションにＩｏＴデバイスを結合するために用いられるＩｏＴゲートウェイを含み得る。
【０１８１】
ＩｏＴデバイスのネットワークは、例えば、配水システム、配電システム、パイプライン制御システム、プラント制御システム、照明スイッチ、サーモスタット、ロック、カメラ、アラームおよび動きセンサ等、商用および家庭用の自動化デバイスを含み得る。ＩｏＴデバイスは、遠隔コンピュータ、サーバおよび他のシステムを通じて、例えば、制御システムまたはアクセスデータへアクセス可能であってよい。
【０１８２】
インターネットおよび同様のネットワークの将来の成長には、非常に多数のＩｏＴデバイスが関与し得る。したがって、本明細書に記載する技術の文脈において、そのような将来のネットワーキングのための多くのイノベーションが、これらの層の全てが妨げられずに成長し、アクセス可能な接続されたリソースを発見および作成し、接続されたリソースを非表示にして区分する能力をサポートする必要性に対処することになる。任意の数のネットワークプロトコルおよび通信規格が用いられてよく、各プロトコルおよび各規格は、特定の目的に対処するように設計される。さらに、プロトコルは、位置、時間または空間にかかわらず動作する、人間がアクセス可能なサービスをサポートする仕組みの一部である。イノベーションは、サービス供給ならびにハードウェアおよびソフトウェアなどの関連付けられたインフラストラクチャと、セキュリティ強化と、サービスレベルおよびサービス供給契約において指定されるサービス品質（ＱｏＳ）条件に基づくサービスの提供とを含む。理解されるように、図４０および図４１において紹介するもののようなＩｏＴデバイスおよびネットワークを用いると、有線技術と無線技術との組み合わせを含む接続性の異種ネットワークにおいて、多くの新しい課題が生じる。
【０１８３】
図４０は、特に、ＩｏＴデバイス４００４を備える多くのモノのインターネット（ＩｏＴ）ネットワークに用いられ得るドメイントポロジの簡略図面を提供する。ＩｏＴネットワーク４０５６、４０５８、４０６０、４０６２は、バックボーンリンク４００２を通じてそれぞれのゲートウェイ４０５４に結合される。例えば、多くのＩｏＴデバイス４００４が、ゲートウェイ４０５４と通信してよく、ゲートウェイ４０５４を通じて互いに通信してよい。図面を簡略化するために、全てのＩｏＴデバイス４００４または通信リンク（例えば、リンク４０１６、４０２２、４０２８または４０３２）に符号が付されているわけではない。バックボーンリンク４００２は、光ネットワークを含む任意の数の有線技術または無線技術を含んでよく、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）またはインターネットの一部であってよい。さらに、そのような通信リンクにより、様々なデバイスの相互接続を容易にする多重化／多重分離コンポーネントの使用を含む、ＩｏＴデバイス４００４およびゲートウェイ４０５４の両方の間の光信号経路が容易になる。
【０１８４】
ネットワークトポロジは、Ｂｌｕｅｔｏｏｔｈ（登録商標）Ｌｏｗ  Ｅｎｅｒｇｙ（ＢＬＥ）リンク４０２２を用いるネットワーク４０５６を備えるメッシュネットワークなど、任意の数の種類のＩｏＴネットワークを含み得る。存在し得る他の種類のＩｏＴネットワークは、ＩＥＥＥ８０２．１１（Ｗｉ−Ｆｉ（登録商標））リンク４０２８を通じてＩｏＴデバイス４００４と通信するために用いられる無線ローカルエリアネットワーク（ＷＬＡＮ）ネットワーク４０５８、ＬＴＥ／ＬＴＥ−Ａ（４Ｇ）または５Ｇセルラネットワークを通じてＩｏＴデバイス４００４と通信するために用いられるセルラネットワーク４０６０、例えば、ＬｏＲａ  Ａｌｌｉａｎｃｅにより公表されるＬｏＲａＷＡＮ仕様と互換性があるＬＰＷＡネットワークなどの低電力ワイドエリア（ＬＰＷＡ）ネットワーク４０６２、または、インターネットエンジニアリングタスクフォース（ＩＥＴＦ）により公表される仕様と互換性があるＩＰｖ６  ｏｖｅｒ  Ｌｏｗ  Ｐｏｗｅｒ  Ｗｉｄｅ−Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＰＷＡＮ）ネットワークを含む。さらに、それぞれのＩｏＴネットワークは、ＬＴＥセルラリンク、ＬＰＷＡリンク、またはＺｉｇｂｅｅ（登録商標）のようなＩＥＥＥ８０２．１５．４規格に基づくリンクなど、任意の数の通信リンクを用いて、外部ネットワークプロバイダ（例えば、ティア２プロバイダまたはティア３プロバイダ）と通信し得る。また、それぞれのＩｏＴネットワークは、制約付きアプリケーションプロトコル（ＣｏＡＰ）などの様々なネットワークプロトコルおよびインターネットアプリケーションプロトコルを用いて動作し得る。また、それぞれのＩｏＴネットワークは、リンクされたデバイスおよびネットワークのクラスタツリーを形成するリンクのチェーンを提供するコーディネータデバイスと統合され得る。
【０１８５】
これらのＩｏＴネットワークの各々は、本明細書において説明するもののような新しい技術的特徴の機会を提供し得る。改良された技術およびネットワークにより、ＩｏＴネットワークをフォグデバイスまたはシステムとして用いることを含め、デバイスおよびネットワークの指数的な成長が可能になり得る。そのような改良された技術の使用が増えるにつれて、ＩｏＴネットワークは、人間が直接介入する必要なく、自己管理、機能進化およびコラボレーションのために開発されるようになり得る。改良された技術は、ＩｏＴネットワークが集中制御システムなしで機能することさえ可能にし得る。したがって、本明細書において説明する改良された技術は、現在の実装をはるかに越えてネットワーク管理および動作機能を自動化および強化するために用いられ得る。
【０１８６】
例において、例えばバックボーンリンク４００２を介したＩｏＴデバイス４００４間の通信は、認証、許可および課金（ＡＡＡ）のための分散化システムにより保護され得る。分散化ＡＡＡシステムでは、分散型の決済システム、クレジットシステム、監査システム、承認システムおよび認証システムが、相互接続された異種ネットワークインフラストラクチャにわたって実装され得る。これにより、システムおよびネットワークを自律的運用へ移行させることが可能になる。これらの種類の自律的運用では、機械が人的リソースの契約を締結し、他の機械ネットワークとのパートナシップを交渉することさえあり得る。これにより、相互の目的と、概説され計画されたサービスレベル契約に対するバランスの取れたサービス供給との実現が可能になるだけでなく、計量、測定、トレーサビリティおよび追跡可能性を提供する解決手段が実現され得る。新しいサプライチェーンの構造および方法を創出することにより、人間が一切関与することなく、多数のサービスを創出し、価値を掘り起こし、崩壊させることが可能になり得る。
【０１８７】
そのようなＩｏＴネットワークは、音、光、電子トラフィック、顔およびパターンの認識、匂い、振動などの感知技術をＩｏＴデバイス間の自律組織へ統合することにより、さらに強化され得る。感知システムの統合により、契約上のサービス目的に対する体系的かつ自律的な通信およびサービス供給調整、オーケストレーション、ならびにリソースのサービス品質（ＱｏＳ）ベースのスウォーミングおよび融合が可能になり得る。ネットワークベースのリソース処理の個々の例のうちのいくつかは、以下のものを含む。
【０１８８】
例えば、メッシュネットワーク４０５６は、インラインデータから情報への変換を実行するシステムにより強化され得る。例えば、マルチリンクネットワークを含む処理リソースの自己形成チェーンは、効率的な方式での未加工データの情報への変換ならびに資産とリソースとを区別する能力および各々の関連付けられた管理を分散させ得る。さらに、インフラストラクチャならびにリソースベースの信頼インデックスおよびサービスインデックスの適切なコンポーネントを挿入することで、データの統合性、品質、確実性を向上させ、データの信頼性の測定基準を供給し得る。
【０１８９】
例えば、ＷＬＡＮネットワーク４０５８は、規格の変換を実行するシステムを用いてマルチ標準接続性を提供することにより、異なるプロトコルを用いるＩｏＴデバイス４００４が通信することを可能にし得る。さらなるシステムが、可視インターネットリソースと非表示インターネットリソースとを含むマルチ規格インフラストラクチャにわたってシームレスな相互接続性を提供し得る。
【０１９０】
例えば、セルラネットワーク４０６０内の通信は、データをオフロードするか、通信をより多くの遠隔デバイスへ拡張するか、またはその両方を行うシステムにより強化され得る。ＬＰＷＡネットワーク４０６２は、非インターネットプロトコル（ＩＰ）からＩＰへの相互接続と、アドレス指定と、ルーティングとを実行するシステムを含み得る。さらに、ＩｏＴデバイス４００４の各々は、そのデバイスとのワイドエリア通信のための適切なトランシーバを含み得る。さらに、各ＩｏＴデバイス４００４は、さらなるプロトコルおよび周波数を用いる通信のための他のトランシーバを含み得る。これについては、図４２および図４３に示されるＩｏＴ処理デバイスの通信環境およびハードウェアに関してさらに記載する。
【０１９１】
最後に、ＩｏＴデバイスのクラスタは、他のＩｏＴデバイスとだけでなく、クラウドネットワークとも通信するように備え付けられ得る。これにより、ＩｏＴデバイスがデバイス間にアドホックネットワークを形成することが可能になり、それらが、フォグデバイスと称され得る単一のデバイスとして機能することが可能になり得る。この構成については、以下の図４１に関してさらに記載する。
【０１９２】
図４１は、クラウドコンピューティングネットワークのエッジにおいてフォグデバイスとして動作するＩｏＴデバイス（デバイス４１０２）のメッシュネットワークと通信しているクラウドコンピューティングネットワークを示す。ＩｏＴデバイスのメッシュネットワークは、クラウド４１００のエッジにおいて動作するフォグ４１２０と称され得る。図を簡略化するために、全てのＩｏＴデバイス４１０２に符号が付されているわけではない。
【０１９３】
フォグ４１２０は、多くのＩｏＴデバイス４１０２が、例えば、無線リンク４１２２により互いに通信している、大規模に相互接続されたネットワークであるとみなされ得る。例として、この相互接続されたネットワークは、Ｏｐｅｎ  Ｃｏｎｎｅｃｔｉｖｉｔｙ  Ｆｏｕｎｄａｔｉｏｎ（商標）（ＯＣＦ）により公表される相互接続仕様を用いて促進され得る。この規格により、デバイスが、互いを発見し、相互接続のための通信を確立することが可能になる。例えば、最適化されたリンク状態ルーティング（ＯＬＳＲ）プロトコル、モバイルアドホックネットワーキング（Ｂ．Ａ．Ｔ．Ｍ．Ａ．Ｎ．）ルーティングプロトコルへのより良いアプローチまたはＯＭＡ軽量Ｍ２Ｍ（ＬＷＭ２Ｍ）プロトコルをとりわけ含む他の相互接続プロトコルも用いられ得る。
【０１９４】
この例では、ゲートウェイ４１０４、データアグリゲータ４１２６およびセンサ４１２８という３種類のＩｏＴデバイス４１０２が示されているが、ＩｏＴデバイス４１０２と機能との任意の組み合わせが用いられ得る。ゲートウェイ４１０４は、クラウド４１００とフォグ４１２０との間の通信を提供するエッジデバイスであってよく、また、例えば、動きデータ、フローデータおよび温度データ等、センサ４１２８から取得されるデータのためのバックエンド処理機能を提供し得る。データアグリゲータ４１２６は、任意の数のセンサ４１２８からデータを収集し、解析のためのバックエンド処理機能を実行し得る。解析結果、未加工データまたはその両方は、ゲートウェイ４１０４を通じてクラウド４１００に渡され得る。センサ４１２８は、例えば、データの収集およびデータの処理の両方を行うことができる完全なＩｏＴデバイス４１０２であってよい。いくつかの場合において、センサ４１２８は、例えば、データを収集し、データアグリゲータ４１２６またはゲートウェイ４１０４によるデータの処理を可能にすることなど、機能がより制限され得る。
【０１９５】
任意のＩｏＴデバイス４１０２からの通信は、ＩｏＴデバイス４１０２のいずれかの間の簡便な経路（例えば、最も簡便な経路）に沿って渡され、ゲートウェイ４１０４に到達し得る。これらのネットワークでは、相互接続の数により実質的な冗長性が提供されるので、多くのＩｏＴデバイス４１０２が失われた場合でさえ通信を維持することが可能になる。さらに、メッシュネットワークを用いると、非常に低電力であるか、またはインフラストラクチャから離れた所に位置するＩｏＴデバイス４１０２を用いることが可能になり得る。なぜなら、別のＩｏＴデバイス４１０２に接続する範囲が、ゲートウェイ４１０４に接続する範囲よりもはるかに小さいことがあるからである。
【０１９６】
これらのＩｏＴデバイス４１０２から提供されるフォグ４１２０は、クラウド４１００のエッジに位置する単一のデバイスとしての、例えば、フォグデバイスとして、サーバ４１０６などのクラウド４１００内のデバイスに提示され得る。この例では、フォグデバイスから入ってくるアラートは、フォグ４１２０内の特定のＩｏＴデバイス４１０２から入ってくるものと識別されることなく送信され得る。このように、フォグ４１２０は、とりわけ、データ解析、データ集約および機械学習などの処理またはデータ多用タスクを実行するための計算リソースおよび格納リソースを提供する分散プラットフォームとみなされ得る。
【０１９７】
いくつかの例では、ＩｏＴデバイス４１０２は、命令型プログラミングスタイルを用いて構成されてよく、例えば、各ＩｏＴデバイス４１０２は、特定の機能および通信パートナを有する。ただし、フォグデバイスを形成するＩｏＴデバイス４１０２は、宣言型プログラミングスタイルで構成されるので、ＩｏＴデバイス４１０２が、例えば、条件、クエリおよびデバイス故障に応答して必要なリソースを決定することなど、演算および通信を再構成することが可能になり得る。例として、ＩｏＴデバイス４１０２により監視される機器のサブセットの動作についてのサーバ４１０６に位置するユーザからのクエリの結果として、フォグ４１２０デバイスは、クエリに応答するために必要な特定のセンサ４１２８などのＩｏＴデバイス４１０２を選択し得る。次に、これらのセンサ４１２８からのデータは、クエリに応答するためにフォグ４１２０デバイスによりサーバ４１０６へ送信される前に、センサ４１２８、データアグリゲータ４１２６またはゲートウェイ４１０４の任意の組み合わせにより集約および解析され得る。この例では、フォグ４１２０内のＩｏＴデバイス４１０２は、例えば、流量センサまたは温度センサからのデータを追加するなど、クエリに基づいて用いられるセンサ４１２８を選択し得る。さらに、ＩｏＴデバイス４１０２のうちのいくつかが動作可能でない場合において、フォグ４１２０デバイス内の他のＩｏＴデバイス４１０２が、利用可能であるときは類似データを提供し得る。
【０１９８】
他の例では、上で説明した動作および機能は、電子処理システムの例示的な形態のＩｏＴデバイス機械により具現化されてよく、その内部では、例示的な実施形態に従って、命令のセットまたはシーケンスを実行することにより、電子処理システムに、本明細書に記載する方法のうちのいずれか１つを実行させ得る。この機械は、パーソナルコンピュータ（ＰＣ）、タブレットＰＣ、パーソナルデジタルアシスタント（ＰＤＡ）、携帯電話またはスマートフォンの態様により具現化される機械、または、機械が取る動作を指定する命令（シーケンシャルまたはその他）を実行できる任意の機械を含む、ＩｏＴデバイスまたはＩｏＴゲートウェイであってよい。さらに、上記の例では単一の機械のみが図示され言及され得るが、そのような機械は、本明細書に記載する方法のうちのいずれか１つまたは複数を実行するための命令のセット（または複数のセット）を個々にまたは共同で実行する機械の任意の集合体を含むとも解釈されるものとする。さらに、プロセッサベースのシステムに対するこれらの例および同様の例は、本明細書に記載する方法のうちのいずれか１つまたは複数を実行するための命令を個々にまたは共同で実行するよう、プロセッサ（例えば、コンピュータ）により制御されるかまたは動作させられる１つまたは複数の機械の任意のセットを含むと解釈されるものとする。いくつかの実装において、１つまたはそれよりも多い複数のデバイスが、協調して動作することで、機能を実装し、本明細書において説明するタスクを実行し得る。いくつかの場合において、１つまたは複数のホストデバイスが、データを供給するか、命令を提供するか、結果を集約するか、またはそうでなければ、複数のデバイスにより提供される共同の動作および機能を促進し得る。機能は、単一のデバイスにより実装された場合、デバイスに対してローカルな機能とみなされ得るが、幾多の例示的な実装の中でもとりわけ、単一の機械として動作する複数のデバイスの実装では、機能は、デバイスに対して集合的にローカルとみなされることがあり、デバイスのこの集合体は、他の遠隔機械（単一のデバイスまたは集合的なデバイスとして実装される）により提供される結果を提供または消費し得る。
【０１９９】
例えば、図４２は、多くのモノのインターネット（ＩｏＴ）デバイスと通信しているクラウドコンピューティングネットワークまたはクラウド４２００の図面を示す。クラウド４２００は、インターネットを表してもよく、企業のプロプライエタリネットワークなどのローカルエリアネットワーク（ＬＡＮ）またはワイドエリアネットワーク（ＷＡＮ）であってもよい。ＩｏＴデバイスは、様々な組み合わせでグループ化された任意の数の異なる種類のデバイスを含み得る。例えば、交通制御グループ４２０６が、都市の街路に沿ったＩｏＴデバイスを含み得る。これらのＩｏＴデバイスは、停止信号、交通流量モニタ、カメラおよび気象センサ等を含み得る。交通制御グループ４２０６または他のサブグループは、例えばＬＰＷＡリンクおよび光リンク等の有線または無線のリンク４２０８を通じてクラウド４２００と通信していてよい。さらに、有線または無線のサブネットワーク４２１２により、ＩｏＴデバイスが、例えば、ローカルエリアネットワークおよび無線ローカルエリアネットワーク等を通じて互いに通信することが可能になり得る。ＩｏＴデバイスは、ゲートウェイ４２１０または４２２８などの別のデバイスを用いて、クラウド４２００などの遠隔位置と通信し得る。また、ＩｏＴデバイスは、１つまたは複数のサーバ４２３０を用いて、クラウド４２００またはゲートウェイ４２１０との通信を容易にし得る。例えば、１つまたは複数のサーバ４２３０は、ローカルエリアネットワーク間のローカルエッジクラウドまたはフォグの実装をサポートするための中間ネットワークノードとして動作し得る。さらに、図示されているゲートウェイ４２２８は、クラウドからゲートウェイへ−ゲートウェイから多くのエッジデバイスへという構成において、例えば、様々なＩｏＴデバイス４２１４、４２２０、４２２４がクラウド４２００内のリソースの割り当ておよび使用に対して制約されているかまたは動的である状態で、動作し得る。
【０２００】
ＩｏＴデバイスの他の例示的なグループは、幾多の中でもとりわけ、遠隔気象台４２１４、ローカル情報端末４２１６、アラームシステム４２１８、現金自動預け払い機４２２０、アラームパネル４２２２、または緊急車両４２２４もしくは他の車両４２２６などの移動車両を含み得る。これらのＩｏＴデバイスの各々は、他のＩｏＴデバイス、サーバ４２０４、別のＩｏＴフォグデバイスもしくはシステム（図示されていないが、図４１に示されている）、またはそれらの組み合わせと通信していてよい。ＩｏＴデバイスのグループは、様々な住宅環境、商業環境および工業環境（プライベートな環境またはパブリックな環境の両方の含む）に展開され得る。
【０２０１】
図４２から分かるように、多数のＩｏＴデバイスがクラウド４２００を通じて通信していることがある。これにより、異なるＩｏＴデバイスが他のデバイスに対して自律的に情報を要求または提供することが可能になり得る。例えば、ＩｏＴデバイスのグループ（例えば、交通制御グループ４２０６）は、人間が介入することなく予報を提供し得る遠隔気象台４２１４のグループからの現在の天気予報を要求し得る。さらに、緊急車両４２２４は、強盗が進行中であることについて、現金自動預け払い機４２２０にアラートされ得る。緊急車両４２２４は、現金自動預け払い機４２２０へ向かって進んでいるとき、交通制御グループ４２０６にアクセスして、その位置へのクリアランスを要求し得る。このクリアランスは、例えば、緊急車両４２２４が妨げられずに交差点にアクセスするのに十分間に合うように交差点での交差交通を阻止するために信号灯が赤に変わることによるものである。
【０２０２】
遠隔気象台４２１４または交通制御グループ４２０６などのＩｏＴデバイスのクラスタは、他のＩｏＴデバイスとだけでなく、クラウド４２００とも通信するように備え付けられ得る。これにより、ＩｏＴデバイスがデバイス間にアドホックネットワークを形成することが可能になり、（例えば、図４１を参照して上で説明したように）フォグデバイスまたはシステムと称され得る単一のデバイスとして機能することが可能になり得る。
【０２０３】
図４３は、本明細書において説明する技術を実装するためにＩｏＴデバイス４３５０内に存在し得るコンポーネントの例のブロックダイアグラムである。ＩｏＴデバイス４３５０は、この例に示されているか、または上記の開示において言及されているコンポーネントの任意の組み合わせを含み得る。コンポーネントは、ＩＣ、その一部、ディスクリート電子デバイス、もしくは他のモジュール、ロジック、ハードウェア、ソフトウェア、ファームウェア、またはＩｏＴデバイス４３５０内で適合させられたそれらの組み合わせとして、または、より大きいシステムのシャーシ内に別の方法で組み込まれるコンポーネントとして実装され得る。さらに、図４３のブロックダイアグラムは、ＩｏＴデバイス４３５０のコンポーネントの高レベル図を示すよう意図されている。ただし、他の実装では、示されているコンポーネントのうちのいくつかが省略されてよく、さらなるコンポーネントが存在してよく、示されているコンポーネントの異なる配置が行われてよい。
【０２０４】
ＩｏＴデバイス４３５０は、プロセッサ４３５２を含み得る。プロセッサ４３５２は、マイクロプロセッサ、マルチコアプロセッサ、マルチスレッドプロセッサ、超低電圧プロセッサ、埋め込みプロセッサまたは他の既知処理要素であってよい。プロセッサ４３５２は、プロセッサ４３５２および他のコンポーネントが、単一の集積回路内に、またはＩｎｔｅｌ（登録商標）のＥｄｉｓｏｎ（商標）またはＧａｌｉｌｅｏ（商標）ＳｏＣ基板などの単一のパッケージ内に形成されるシステムオンチップ（ＳｏＣ）の一部であってよい。例として、プロセッサ４３５２は、Ｉｎｔｅｌ（登録商標）Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｃｏｒｅ（商標）ベースのプロセッサ、例えば、Ｑｕａｒｋ（商標）、Ａｔｏｍ（商標）、ｉ３、ｉ５、ｉ７もしくはＭＣＵクラスのプロセッサ、または、カリフォルニア州サンタクララのＩｎｔｅｌ（登録商標）Ｃｏｒｐｏｒａｔｉｏｎから入手可能な別のそのようなプロセッサを含み得る。ただし、カリフォルニア州サニーベールのＡｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ，  Ｉｎｃ．（ＡＭＤ）から入手可能なもの、カリフォルニア州サニーベールのＭＩＰＳ  Ｔｅｃｈｎｏｌｏｇｉｅｓ，  Ｉｎｃ．のＭＩＰベースの設計、ＡＲＭ  Ｈｏｌｄｉｎｇｓ，  Ｌｔｄ．もしくはその顧客またはそのライセンシもしくは採用者からライセンスされたＡＲＭベースの設計など、任意の数の他のプロセッサが用いられ得る。これらのプロセッサは、Ａｐｐｌｅ（登録商標）Ｉｎｃ．のＡ５−Ａ１０プロセッサ、Ｑｕａｌｃｏｍｍ（登録商標）Ｔｅｃｈｎｏｌｏｇｉｅｓ，  Ｉｎｃ．のＳｎａｐｄｒａｇｏｎ（商標）プロセッサ、またはＴｅｘａｓ  Ｉｎｓｔｒｕｍｅｎｔｓ，  Ｉｎｃ．のＯＭＡＰ（商標）プロセッサなどのユニットを含み得る。
【０２０５】
プロセッサ４３５２は、相互接続４３５６（例えば、バス）を介してシステムメモリ４３５４と通信し得る。任意の数のメモリデバイスを用いて、所与の量のシステムメモリを提供し得る。例として、メモリは、ＤＤＲまたはモバイルＤＤＲ規格（例えば、ＬＰＤＤＲ、ＬＰＤＤＲ２、ＬＰＤＤＲ３またはＬＰＤＤＲ４）などの電子機器技術評議会（ＪＥＤＥＣ）の設計に従ったランダムアクセスメモリ（ＲＡＭ）であってよい。様々な実装において、個々のメモリデバイスは、シングルダイパッケージ（ＳＤＰ）、デュアルダイパッケージ（ＤＤＰ）またはクワッドダイパッケージ（Ｑ１７Ｐ）など、任意の数の異なるパッケージタイプのものであってよい。いくつかの例では、これらのデバイスをマザーボード上へ直接はんだ付けしてより低いプロファイルの解決手段を提供し得るが、他の例では、デバイスは、結果として所与のコネクタによりマザーボードに結合する１つまたは複数のメモリモジュールとして構成される。他の種類のメモリモジュール、例えば、限定されるわけではないが、ｍｉｃｒｏＤＩＭＭまたはＭｉｎｉＤＩＭＭを含む、異なる種類のデュアルインラインメモリモジュール（ＤＩＭＭ）など、任意の数の他のメモリ実装が用いられ得る。
【０２０６】
例えば、データ、アプリケーションおよびオペレーティングシステム等、情報の永続的なストレージを提供するために、ストレージ４３５８は、相互接続４３５６を介してプロセッサ４３５２に結合することもあり得る。例において、ストレージ４３５８は、ソリッドステートディスクドライブ（ＳＳＤＤ）を介して実装され得る。ストレージ４３５８のために用いられ得る他のデバイスは、例えば、ＳＤカード、ｍｉｃｒｏＳＤカードおよびｘＤピクチャカード等のフラッシュメモリカードと、ＵＳＢフラッシュドライブとを含む。低電力の実装では、ストレージ４３５８は、プロセッサ４３５２に関連付けられたオンダイメモリまたはレジスタであってよい。ただし、いくつかの例では、ストレージ４３５８は、マイクロハードディスクドライブ（ＨＤＤ）を用いて実装され得る。さらに、とりわけ、抵抗変化メモリ、相変化メモリ、ホログラフィックメモリまたは化学メモリなど、説明する技術に加えて、またはそれらの代わりに、任意の数の新しい技術がストレージ４３５８に用いられ得る。
【０２０７】
これらのコンポーネントは、相互接続４３５６を介して通信し得る。相互接続４３５６は、業界標準アーキテクチャ（ＩＳＡ）、拡張ＩＳＡ（ＥＩＳＡ）、周辺コンポーネント相互接続（ＰＣＩ）、周辺コンポーネント相互接続拡張（ＰＣＩｘ）、ＰＣＩエクスプレス（ＰＣＩｅ）を含む任意の数の他の技術、または任意の数の技術を含み得る。相互接続４３５６は、例えば、ＳｏＣベースのシステムにおいて用いられるプロプライエタリバスであってよい。とりわけ、Ｉ２Ｃインタフェース、ＳＰＩインタフェース、ポイントツーポイントインタフェースおよび電力バスなどの他のバスシステムが含まれ得る。
【０２０８】
相互接続４３５６は、他のメッシュデバイス４３６４との通信のために、プロセッサ４３５２をメッシュトランシーバ４３６２に結合させ得る。メッシュトランシーバ４３６２は、とりわけ、Ｂｌｕｅｔｏｏｔｈ（登録商標）Ｓｐｅｃｉａｌ  Ｉｎｔｅｒｅｓｔ  Ｇｒｏｕｐにより定義されているＢｌｕｅｔｏｏｔｈ（登録商標）Ｌｏｗ  Ｅｎｅｒｇｙ（ＢＬＥ）規格またはＺｉｇｂｅｅ（登録商標）規格を用いた、ＩＥＥＥ８０２．１５．４規格に基づく２．４ギガヘルツ（ＧＨｚ）伝送など、任意の数の周波数およびプロトコルを用い得る。特定の無線通信プロトコル用に構成された任意の数の無線機が、メッシュデバイス４３６４への接続のために用いられ得る。例えば、ＷＬＡＮユニットが、米国電気電子技術者協会（ＩＥＥＥ）８０２．１１規格に従ってＷｉ−Ｆｉ通信を実装するために用いられ得る。加えて、例えば、セルラまたは他の無線ワイドエリアプロトコルによる無線広域通信が、ＷＷＡＮユニットを介して行われ得る。
【０２０９】
メッシュトランシーバ４３６２は、異なる範囲での通信のために、複数の規格または無線機を用いて通信し得る。例えば、ＩｏＴデバイス４３５０は、ＢＬＥまたは別の低電力無線に基づいてローカルトランシーバを用いて、例えば、約１０メートル以内の近接デバイスと通信することで、電力を節約し得る。例えば、約５０メートル以内の、より遠いメッシュデバイス４３６４に、Ｚｉｇｂｅｅまたは他の中間電力無線機を介して到達し得る。両方の通信技術は、異なる電力レベルで単一の無線を介して行われてもよく、例えば、ＢＬＥを用いるローカルトランシーバなどの別個のトランシーバと、Ｚｉｇｂｅｅを用いる別個のメッシュトランシーバとを介して行われてもよい。
【０２１０】
ローカルエリアネットワークプロトコルまたはワイドエリアネットワークプロトコルを介してクラウド４３００内のデバイスまたはサービスと通信するために、無線ネットワークトランシーバ４３６６が含まれ得る。無線ネットワークトランシーバ４３６６は、とりわけ、ＩＥＥＥ８０２．１５．４規格またはＩＥＥＥ８０２．１５．４ｇ規格に従ったＬＰＷＡトランシーバであってよい。ＩｏＴデバイス４３５０は、ＳｅｍｔｅｃｈおよびＬｏＲａ  Ａｌｌｉａｎｃｅにより開発されたＬｏＲａＷＡＮ（商標）（長距離ワイドエリアネットワーク）を用いて、広域にわたって通信し得る。本明細書において説明する技術は、これらの技術に限定されないが、Ｓｉｇｆｏｘなどの長距離低帯域幅通信を実装する任意の数の他のクラウドトランシーバ、および他の技術と共に用いられ得る。さらに、ＩＥＥＥ８０２．１５．４ｅ仕様において説明されるタイムスロットチャネルホッピングなどの他の通信技術が用いられ得る。
【０２１１】
本明細書において説明するように、メッシュトランシーバ４３６２および無線ネットワークトランシーバ４３６６について言及されたシステムに加え、任意の数の他の無線通信およびプロトコルが用いられ得る。例えば、無線トランシーバ４３６２および４３６６は、高速通信を実装するためにスペクトル拡散（ＳＰＡ／ＳＡＳ）通信を用いるＬＴＥまたは他のセルラトランシーバを含み得る。さらに、ネットワーク通信の提供および中速通信のためのＷｉ−Ｆｉ（登録商標）ネットワークなど、任意の数の他のプロトコルが用いられ得る。
【０２１２】
無線トランシーバ４３６２および４３６６は、任意の数の３ＧＰＰ（第３世代パートナシッププロジェクト）仕様、特に、ロングタームエボリューション（ＬＴＥ）、ロングタームエボリューションアドバンスト（ＬＴＥ−Ａ）およびロングタームエボリューションアドバンストプロ（ＬＴＥ−Ａ  Ｐｒｏ）と互換性がある無線機を含み得る。なお、任意の数の他の固定通信、モバイル通信または衛星通信の技術および規格と互換性がある無線機が選択され得る。これらは、例えば、任意のセルラ広域無線通信技術を含み得る。セルラ広域無線通信技術は、例えば、第５世代（５Ｇ）通信システム、グローバルシステムフォーモバイルコミュニケーションズ（ＧＳＭ（登録商標））無線通信技術、汎用パケット無線サービス（ＧＰＲＳ）無線通信技術、またはＧＳＭ進化型高速データレート（ＥＤＧＥ）無線通信技術、ＵＭＴＳ（ユニバーサル移動体通信システム）通信技術を含み得る。上に列挙した規格に加え、例えば、とりわけ、ＩＴＵ（国際電気通信連合）またはＥＴＳＩ（欧州電気通信標準化機構）により発行される規格に準拠する無線機を含む無線ネットワークトランシーバ４３６６のために、任意の数の衛星アップリンク技術が用いられ得る。したがって、本明細書において提供される例は、既存のものであり、かつ、まだ定式化されていない様々な他の通信技術に適用可能であると理解される。
【０２１３】
クラウド４３００、またはメッシュデバイス４３６４などの他のデバイスに有線通信を提供するために、ネットワークインタフェースコントローラ（ＮＩＣ）４３６８が含まれ得る。有線通信は、Ｅｔｈｅｒｎｅｔ（登録商標）接続を提供してもよく、幾多の中でもとりわけ、コントローラエリアネットワーク（ＣＡＮ）、ローカル相互接続ネットワーク（ＬＩＮ）、ＤｅｖｉｃｅＮｅｔ、ＣｏｎｔｒｏｌＮｅｔ、Ｄａｔａ  Ｈｉｇｈｗａｙ＋、ＰＲＯＦＩＢＵＳまたはＰＲＯＦＩＮＥＴなどの他の種類のネットワークに基づいていてもよい。第２のネットワーク、例えば、Ｅｔｈｅｒｎｅｔを介してクラウドに通信を提供するＮＩＣ４３６８、および別の種類のネットワークを介して他のデバイスに通信を提供する第２のＮＩＣ４３６８への接続を可能にするために、さらなるＮＩＣ４３６８が含まれ得る。
【０２１４】
相互接続４３５６は、外部のデバイスまたはサブシステムに接続するために用いられる外部インタフェース４３７０にプロセッサ４３５２を結合し得る。外部デバイスは、例えば、加速度計、レベルセンサ、流量センサ、光学光センサ、カメラセンサ、温度センサ、全地球測位システム（ＧＰＳ）センサ、圧力センサおよび気圧センサ等のセンサ４３７２を含み得る。外部インタフェース４３７０はさらに、例えば、電力スイッチ、バルブアクチュエータ、可聴音生成器、視覚警告デバイス等のアクチュエータ４３７４にＩｏＴデバイス４３５０を接続するために用いられ得る。
【０２１５】
いくつかのオプションの例では、様々な入力／出力（Ｉ／Ｏ）デバイスが、ＩｏＴデバイス４３５０内に存在し得るか、またはＩｏＴデバイス４３５０に接続され得る。例えば、センサの読み取り値またはアクチュエータの位置などの情報を示すために、ディスプレイまたは他の出力デバイス４３８４が含まれ得る。入力を受け入れるために、タッチスクリーンまたはキーパッドなどの入力デバイス４３８６が含まれ得る。出力デバイス４３８４は、任意の数の形態の聴覚表示または視覚表示を含み得る。これらの表示は、バイナリステータスインジケータ（例えば、ＬＥＤ）および複数文字視覚出力などの単純な視覚出力、またはディスプレイ画面（例えば、ＬＣＤ画面）などのより複雑な出力を含み、文字、グラフィックス、マルチメディアオブジェクト等の出力は、ＩｏＴデバイス４３５０の動作から生成されるか、または生じる。
【０２１６】
電池４３７６は、ＩｏＴデバイス４３５０に電力を供給し得るが、ＩｏＴデバイス４３５０が固定位置に装着されている例では、電力系統に結合された電源を有し得る。電池４３７６は、リチウムイオン電池、または、例えば、亜鉛−空気電池、アルミニウム−空気電池およびリチウム−空気電池等の金属−空気電池であってよい。
【０２１７】
ＩｏＴデバイス４３５０には、電池４３７６の充電状態（ＳｏＣｈ）を追跡するために、電池モニタ／充電器４３７８が含まれ得る。電池モニタ／充電器４３７８は、電池４３７６の他のパラメータを監視して、電池４３７６の健全度（ＳｏＨ）および機能状態（ＳｏＦ）などの故障予測を提供するために用いられ得る。電池モニタ／充電器４３７８は、Ｌｉｎｅａｒ  ＴｅｃｈｎｏｌｏｇｉｅｓのＬＴＣ４０２０もしくはＬＴＣ２９９０、アリゾナ州フェニックスのＯＮ  ＳｅｍｉｃｏｎｄｕｃｔｏｒのＡＤＴ７４８８Ａまたはテキサス州ダラスのＴｅｘａｓ  ＩｎｓｔｒｕｍｅｎｔｓのＵＣＤ９０ｘｘｘファミリのＩＣなどの電池監視集積回路を含み得る。電池モニタ／充電器４３７８は、相互接続４３５６を介して、電池４３７６に関する情報をプロセッサ４３５２に伝達し得る。電池モニタ／充電器４３７８は、プロセッサ４３５２が電池４３７６の電圧または電池４３７６からの電流を直接監視することを可能にするアナログ−デジタル（ＡＤＣ）変換器も含み得る。電池のパラメータは、例えば、伝送周波数、メッシュネットワーク動作および感知周波数等、ＩｏＴデバイス４３５０が実行し得る動作を決定するために用いられ得る。
【０２１８】
電池４３７６を充電するために、発電ブロック４３８０、または電力系統に結合された他の電源が、電池モニタ／充電器４３７８と結合され得る。いくつかの例では、発電ブロック４３８０を無線電力レシーバに置き換えることで、無線で、例えば、ＩｏＴデバイス４３５０内のループアンテナを通じて、電力を取得し得る。電池モニタ／充電器４３７８には、とりわけ、カリフォルニア州ミルピタスのＬｉｎｅａｒ  ＴｅｃｈｎｏｌｏｇｉｅｓのＬＴＣ４０２０チップなどの無線電池充電回路が含まれ得る。選ばれる特定の充電回路は、電池４３７６のサイズ、およびしたがって、必要とされる電流に依存する。充電は、とりわけ、Ａｉｒｆｕｅｌ  Ａｌｌｉａｎｃｅにより公表されるＡｉｒｆｕｅｌ規格、ワイヤレスパワーコンソーシアムにより公表されるＱｉ無線充電基準またはＡｌｌｉａｎｃｅ  ｆｏｒ  Ｗｉｒｅｌｅｓｓ  Ｐｏｗｅｒにより公表されるＲｅｚｅｎｃｅ充電基準を用いて実行され得る。
【０２１９】
ストレージ４３５８は、本明細書において説明する技術を実装するためのソフトウェアコマンド、ファームウェアコマンドまたはハードウェアコマンドの形態の命令４３８２を含み得る。そのような命令４３８２がメモリ４３５４およびストレージ４３５８に含まれるコードブロックとして示されているが、コードブロックのいずれも、例えば、特定用途向け集積回路（ＡＳＩＣ）に組み込まれたハードワイヤード回路に置き換えられ得ることが理解され得る。
【０２２０】
例において、メモリ４３５４、ストレージ４３５８またはプロセッサ４３５２を介して提供される命令４３８２は、ＩｏＴデバイス４３５０内の電子的動作を実行するようプロセッサ４３５２に指示するためのコードを含む非一時的機械可読媒体４３６０として具現化され得る。プロセッサ４３５２は、相互接続４３５６を介して非一時的機械可読媒体４３６０にアクセスし得る。例えば、非一時的機械可読媒体４３６０は、図４３のストレージ４３５８について説明されているデバイスにより具現化されてもよく、光ディスク、フラッシュドライブまたは任意の数の他のハードウェアデバイスなどの特定のストレージユニットを含んでもよい。非一時的機械可読媒体４３６０は、例えば、上で示された動作および機能のフローチャートおよびブロックダイアグラムに関して説明したとおり、動作の特定のシーケンスまたはフローを実行するようプロセッサ４３５２に指示するための命令を含み得る。
【０２２１】
図４４は、実施形態によるプロセッサの例示的な図である。プロセッサ４４００は、上記実装に関連して用いられ得る種類のハードウェアデバイスの例である。プロセッサ４４００は、マイクロプロセッサ、埋め込みプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、ネットワークプロセッサ、マルチコアプロセッサ、シングルコアプロセッサ、またはコードを実行するための他のデバイスなど、任意の種類のプロセッサであってよい。図４４にはプロセッサ４４００が１つだけ示されているが、処理要素は代替的に、図４４に示されるプロセッサ４４００を１つよりも多く含み得る。プロセッサ４４００は、シングルスレッドコアであてもよく、少なくとも１つの実施形態では、コア当たり１つよりも多くのハードウェアスレッドコンテキスト（または「論理プロセッサ」）を含み得るという点で、マルチスレッドであってもよい。
【０２２２】
図４４は、実施形態によるプロセッサ４４００に結合されたメモリ４４０２も示す。メモリ４４０２は、既知であるか、またはそうでなければ当業者が利用可能な多種多様なメモリ（メモリ階層の様々な層を含む）のいずれかであってよい。そのようなメモリ要素は、限定されるわけではないが、ランダムアクセスメモリ（ＲＡＭ）。リードオンリメモリ（ＲＯＭ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）の論理ブロック、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）を含み得る。
【０２２３】
プロセッサ４４００は、本明細書において詳述するアルゴリズム、処理または動作に関連付けられた任意の種類の命令を実行できる。概して、プロセッサ４４００は、要素または物品（例えば、データ）を１つの状態または状況から別の状態または状況へ変換できる。
【０２２４】
プロセッサ４４００により実行される１つまたは複数の命令であり得るコード４４０４は、メモリ４４０２に格納されてもよく、ソフトウェア、ハードウェア、ファームウェアもしくはそれらの任意の適切な組み合わせに、または、適切である場合には特定の必要性に基づき、任意の他の内部もしくは外部のコンポーネント、デバイス、要素もしくは物体に格納されてもよい。一例において、プロセッサ４４００は、コード４４０４により示される命令のプログラムシーケンスに従い得る。各命令は、フロント−エンドロジック４４０６に入り、１つまたは複数のデコーダ４４０８により処理される。デコーダは、その出力として、予め定義された形式の固定幅マイクロオペレーションなどのマイクロオペレーションを生成してもよく、元のコード命令を反映する他の命令、マイクロ命令または制御信号を生成してもよい。フロント−エンドロジック４４０６は、レジスタリネーミングロジック４４１０およびスケジューリングロジック４４１２も含む。これらのロジックは概して、リソースを割り当て、実行のために、命令に対応する動作をキューに入れる。
【０２２５】
プロセッサ４４００は、実行ユニット４４１６ａ、４４１６ｂ、４４１６ｎのセット等を有する実行ロジック４４１４も含み得る。いくつかの実施形態は、特定の機能または機能のセットに特化した多くの実行ユニットを含み得る。他の実施形態は、実行ユニットを１つだけ、または特定の機能を実行し得る実行ユニットを１つ含み得る。実行ロジック４４１４は、コード命令により指定される動作を実行する。
【０２２６】
コード命令により指定される動作の実行の完了後に、バックエンドロジック４４１８は、コード４４０４の命令をリタイアできる。一実施形態において、プロセッサ４４００は、アウトオブオーダ実行を可能にするが、命令のインオーダリタイアメントを必要とする。リタイアメントロジック４４２０は、様々な既知の形態（例えば、リオーダバッファ等）を取り得る。このように、プロセッサ４４００は、コード４４０４の実行中に、少なくとも、デコーダにより生成される出力と、レジスタリネーミングロジック４４１０により利用されるハードウェアレジスタおよびテーブルと、実行ロジック４４１４により修正される任意のレジスタ（図示されていない）とに関して変換される。
【０２２７】
図４４には示されていないが、処理要素は、プロセッサ４４００を有するチップ上に他の要素を含み得る。例えば、処理要素は、プロセッサ４４００と共にメモリ制御ロジックを含み得る。処理要素は、Ｉ／Ｏ制御ロジックを含んでよく、および／またはメモリ制御ロジックと統合されたＩ／Ｏ制御ロジックを含んでよい。処理要素は、１つまたは複数のキャッシュも含み得る。いくつかの実施形態において、プロセッサ４４００を有するチップ上には、不揮発性メモリ（フラッシュメモリまたはフューズなど）も含まれ得る。
【０２２８】
図４５は、実施形態による、ポイントツーポイント（ＰｔＰ）構成で配置されるコンピューティングシステム４５００を示す。特に、図４５は、プロセッサ、メモリおよび入力／出力デバイスが多くのポイントツーポイントインタフェースにより相互接続されるシステムを示す。概して、本明細書において説明するコンピューティングシステムのうちの１つまたは複数は、コンピューティングシステム４５００と同じ方式または同様の方式で構成され得る。
【０２２９】
プロセッサ４５７０および４５８０は各々、メモリ要素４５３２および４５３４と通信するための統合されたメモリコントローラロジック（ＭＣ）４５７２および４５８２も含み得る。代替的な実施形態において、メモリコントローラロジック４５７２および４５８２は、プロセッサ４５７０および４５８０とは別個のディスクリートロジックであってよい。メモリ要素４５３２および／または４５３４は、本明細書において概説する動作および機能の実現においてプロセッサ４５７０および４５８０により用いられる様々なデータを格納し得る。
【０２３０】
プロセッサ４５７０および４５８０は、他の図に関連して記載されるものなど、任意の種類のプロセッサであってよい。プロセッサ４５７０および４５８０は、ポイントツーポイントインタフェース回路４５７８および４５８８をそれぞれ用いて、ポイントツーポイント（ＰｔＰ）インタフェース４５５０を介してデータを交換し得る。プロセッサ４５７０および４５８０は各々、ポイントツーポイントインタフェース回路４５７６、４５８６、４５９４および４５９８を用いて、個々のポイントツーポイントインタフェース４５５２および４５５４を介してチップセット４５９０とデータを交換し得る。また、チップセット４５９０は、ＰｔＰインタフェース回路であり得るインタフェース回路４５９２を用いて、高性能グラフィックスインタフェース４５３９を介して高性能グラフィックス回路４５３８とデータを交換し得る。代替的な実施形態において、図４５に示されるＰｔＰリンクのいずれかまたは全てが、ＰｔＰリンクではなく、マルチドロップバスとして実装され得る。
【０２３１】
チップセット４５９０は、インタフェース回路４５９６を介してバス４５２０と通信していてよい。バス４５２０は、バスブリッジ４５１８およびＩ／Ｏデバイス４５１６など、それを介して通信する１つまたは複数のデバイスを有し得る。バスブリッジ４５１８は、バス４５１０を介して、ユーザインタフェース４５１２（キーボード、マウス、タッチスクリーンまたは他の入力デバイスなど）、通信デバイス４５２６（モデム、ネットワークインタフェースデバイス、またはコンピュータネットワーク４５６０を通じて通信し得る他の種類の通信デバイスなど）、音声Ｉ／Ｏデバイス４５１４および／またはデータストレージデバイス４５２８などの他のデバイスと通信していてよい。データストレージデバイス４５２８は、プロセッサ４５７０および／または４５８０により実行され得るコード４５３０を格納し得る。代替的な実施形態において、バスアーキテクチャの任意の部分が、１つまたは複数のＰｔＰリンクを用いて実装され得る。
【０２３２】
図４５に示されるコンピュータシステムは、本明細書に記載する様々な実施形態を実装するために利用され得るコンピューティングシステムの実施形態の概略図である。図４５に示されるシステムの様々なコンポーネントが、システムオンチップ（ＳｏＣ）アーキテクチャ内で、または本明細書において提供される例および実装の機能および特徴を実現できる任意の他の適切な構成内で組み合わされ得ることが理解されよう。
【０２３３】
さらなる例において、機械可読媒体は、機械により実行される命令を格納、エンコードまたは搬送でき、かつ、本開示の方法のうちのいずれか１つまたは複数を機械に実行させ、または、そのような命令に利用されるかまたは関連付けられるデータ構造を格納、エンコードまたは搬送できる任意の有形の媒体も含む。したがって、「機械可読媒体」は、限定されるわけではないが、ソリッドステートメモリならびに光媒体および磁気媒体を含み得る。機械可読媒体の具体的な例は、限定されるわけではないが、半導体メモリデバイス（例えば、電気的プログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブルリードオンリメモリ（ＥＥＰＲＯＭ））およびフラッシュメモリデバイスを含む不揮発性メモリと、内蔵ハードディスクおよびリムーバブルディスクなどの磁気ディスクと、光磁気ディスクと、ＣＤ−ＲＯＭディスクおよびＤＶＤ−ＲＯＭディスクとを例として含む。機械可読媒体により具現化される命令は、多くの転送プロトコル（例えば、ＨＴＴＰ）のうちのいずれか１つを利用するネットワークインタフェースデバイスを介した伝送媒体を用いて、通信ネットワークを介してさらに伝送または受信され得る。
【０２３４】
本明細書において説明する機能ユニットまたは機能は、それらの実装の独立性をより具体的に強調すべく、コンポーネントまたはモジュールと称されているか、またはそのように符号が付されている可能性があることを理解されたい。そのようなコンポーネントは、任意の数のソフトウェアまたはハードウェアの形態により具現化され得る。例えば、コンポーネントまたはモジュールは、カスタムの超大規模集積（ＶＬＳＩ）回路もしくはゲートアレイ、ロジックチップなどの既製の半導体トランジスタまたは他のディスクリートコンポーネントを備えるハードウェア回路として実装され得る。コンポーネントまたはモジュールは、例えば、フィールドプログラマブルゲートアレイ、プログラマブルアレイロジックまたはプログラマブルロジックデバイス等のプログラマブルハードウェアデバイスにも実装され得る。コンポーネントまたはモジュールは、様々な種類のプロセッサにより実行されるソフトウェアにも実装され得る。実行可能コードの識別されたコンポーネントまたはモジュールは、例えば、コンピュータ命令の１つまたは複数の物理ブロックまたは論理ブロックを含んでよく、これらのブロックは、例えば、目的、手順または機能として編成され得る。それにもかかわらず、識別されたコンポーネントまたはモジュールの実行ファイルは、物理的に共に配置される必要はないが、論理的に共に連結されている場合には、コンポーネントまたはモジュールを含み、かつ、コンポーネントまたはモジュールの記載された目的を実現する、異なる位置に格納された全く異なる命令を含み得る。
【０２３５】
実際には、実行可能コードのコンポーネントまたはモジュールは、単一の命令または多くの命令であってよく、さらには、いくつかの異なるコードセグメントを介して、異なるプログラムの間で、かつ、いくつかのメモリデバイスまたは処理システムにわたって分散され得る。特に、説明されている処理（コードのリライトおよびコードの解析など）のいくつかの態様は、コードがデプロイされている処理システム（例えば、センサまたはロボットに埋め込まれたコンピュータ）とは異なる処理システムで（例えば、データセンタ内のコンピュータ内で）行われ得る。同様に、動作データは、本明細書ではコンポーネントまたはモジュール内で識別および図示されてよく、任意の適切な形態で具現化され、任意の適切な種類のデータ構造内で編成されてよい。動作データは、単一のデータセットとして収集されてもよく、異なるストレージデバイスを介して含む異なる位置にわたって分散されてもよく、少なくとも部分的に、単にシステムまたはネットワーク上の電子信号として存在し得る。コンポーネントまたはモジュールは、要求される機能を実行するように動作可能なエージェントを含め、受動型または能動型であってよい。
【０２３６】
ここで説明する方法、システムおよびデバイスの実施形態のさらなる例は、以下の非限定的な構成を含む。以下の非限定的な例の各々は、独立したものであってもよく、以下にまたは本開示の全体を通じて提供される他の例ののうちのいずれか１つまたは複数と任意の並べ替えまたは組み合わせで組み合わされてもよい。
【０２３７】
特定の実装および概して関連付けられる方法の観点から本開示を説明したが、これらの実装および方法の改変および並べ替えが当業者には明らかになろう。例えば、本明細書において説明する動作は、説明されているものとは異なる順序で実行されてよく、望ましい結果を依然として実現できる。一例として、添付図面に示される処理は、要求される結果を実現するために、必ずしも、示されている特定の順序または順番である必要はない。特定の実装では、マルチタスクおよび並列処理が有利であり得る。さらに、他のユーザインタフェースのレイアウトおよび機能がサポートされ得る。他の変形例は、以下の特許請求の範囲内に含まれる。
【０２３８】
本明細書は、多くの特定の実装の詳細を含むが、これらは、あらゆる発明の範囲または特許請求され得るものの範囲に対する限定としてではなく、特定の発明の特定の実施形態に固有の特徴の説明として解釈されるべきである。別個の実施形態の文脈で本明細書において説明する特定の特徴が、単一の実施形態に組み合わせて実装されてもよい。逆に、単一の実施形態の文脈で説明する様々な特徴が、複数の実施形態に別個に実装されるか、または任意の適切なサブコンビネーションで実装されてもよい。さらに、特徴が、特定の組み合わせで機能すると上で説明され、最初はそのように特許請求されていることさえあり得るが、いくつかの場合においては、特許請求された組み合わせからの１つまたは複数の特徴が、その組み合わせから削除されてよく、特許請求された組み合わせは、サブコンビネーションまたはサブコンビネーションの変形例に関するものであってよい。
【０２３９】
同様に、図面には動作が特定の順序で示されているが、これは、望ましい結果を実現するために、示されている特定の順序でまたは順番にそのような動作が実行される必要があると理解されるべきではなく、示されている全ての動作が実行される必要があると理解されるべきでもない。特定の状況では、マルチタスク処理および並列処理が有利であり得る。さらに、上で説明した実施形態における様々なシステムコンポーネントの分離が、全ての実施形態においてそのような分離を必要としていると理解されるべきではない。説明したプログラムコンポーネントおよびシステムは概して、単一のソフトウェア製品に共に統合され得るか、または複数のソフトウェア製品へパッケージ化され得ることを理解されたい。
【０２４０】
以下の例は、本明細書による実施形態に関する。
例１は、データ処理装置と、３次元（３Ｄ）ボリュームを表すためのボリュメトリックデータ構造を格納するためのメモリであって、ボリュメトリックデータ構造は、疎な階層ボリュメトリックデータ構造を含み、ボリュメトリックデータ構造は、上位レベルボクセルセットを含み、各上位レベルボクセルは、３Ｄボリューム内のそれぞれのサブボリュームを第１の解像度で表し、各上位レベルボクセルは、それぞれの上位レベルボクセルのサブボリュームを第２のより高い解像度で表すための下位レベルボクセルセットを含む、メモリと、レイキャスティングアルゴリズムを実行するための、データ処理装置により実行可能なレイキャスタであって、レイキャスティングアルゴリズムは、ボリュメトリックデータ構造を入力として受け取り、レイキャスティングアルゴリズムを実行することは、基準点から３Ｄボリュームへ複数の光線を放射することと、複数の光線の各々について、光線を横断させて、ボクセルセット内のボクセルを光線が交差しており、かつ、ボクセルセット内のボクセルが占有されているかどうかを判断することであって、光線は、近似横断に従って横断させられる、判断することとを含む、レイキャスタとを備える装置である。
【０２４１】
例２は、例１に記載の主題を含む。光線を横断させることは、ジオメトリで占有されたそれぞれの下位レベルボクセルを上位レベルボクセルセットのサブセットのみが含んでいるとボリュメトリックデータ構造から判断することを含む。
【０２４２】
例３は、例２に記載の主題を含む。光線を横断させることはさらに、光線が交差した下位レベルボクセルのサブセットを決定することであって、光線が交差した下位レベルボクセルの全てのうちの一部が近似横断に基づくサブセット内にある、決定することを含む。
【０２４３】
例４は、例２および３のいずれか１つに記載の主題を含む。光線を横断させることは、占有された下位レベルボクセルを含んでいないとボリュメトリックデータ構造に基づいて判断された上位レベルボクセルの各々における下位レベルボクセルの解析をスキップすることを含む。
【０２４４】
例５は、例４に記載の主題を含む。解析は、上位レベルボクセルのサブセットに対応する光線上の複数の箇所で、光線が交差した上位レベルボクセルのサブセットのうちの１つの内の下位レベルボクセルが占有されているか否かをチェックすることであって、光線が交差した上位レベルボクセルのサブセット内の下位レベルボクセルのサブセットは、近似横断に基づいてチェックされない、チェックすることを含む。
【０２４５】
例６は、例５に記載の主題を含む。複数の箇所は、近似横断に基づく定義された間隔に対応する。
【０２４６】
例７は、例６に記載の主題を含む。定義された間隔は、特定の次元の下位レベルボクセルの長さに関連付けられた距離を含む。
【０２４７】
例８は、例７に記載の主題を含む。レイキャスタはさらに、特定の方向を決定し、特定の次元は、光線の主な指向性コンポーネントを含む。
【０２４８】
例９は、例４から８のいずれか１つに記載の主題を含む。上位レベルボクセルのサブセットの各々における下位レベルボクセルの解析は、メモリにアクセスして、ボリュメトリックデータ構造の対応する部分を検索することであって、占有された下位レベルボクセルを含んでいないと判断された上位レベルボクセルに対応するボリュメトリックデータ構造の部分は、メモリから検索されない、検索することを含む。
【０２４９】
例１０は、例１から９のいずれか１つに記載の主題を含む。レイキャスティングアルゴリズムは、回路を用いて実装されるＳＬＡＭパイプラインの一部である。
【０２５０】
例１１は、例１から９のいずれか１つに記載の主題を含む。レイキャスティングアルゴリズムは、グラフィックレンダリングアプリケーションに関連して実行される。
【０２５１】
例１２は、例１から１０のいずれか１つに記載の主題を含む。ボリュメトリックデータ構造は、上位レベルボクセルの各々におけるジオメトリの存在を表すための第１のエントリを含み、第２のエントリのセットをさらに含み、第２のエントリの各々は、上位レベルボクセルのサブセットのうちの１つのそれぞれの下位レベルボクセルを表す。
【０２５２】
例１３は、例１２に記載の主題を含む。第１のエントリおよび第２のエントリは、それぞれのエントリにおいて記述される各ボクセルのバイナリ値を含み、それぞれのバイナリ値は、対応するボクセルが占有されているか否かを示す。
【０２５３】
例１４は、例１から１３のいずれか１つに記載の主題を含む。データ処理装置は、ビジュアルプロセッシングユニット（ＶＰＵ）を有する。
【０２５４】
例１５は、例１から１４のいずれか１つに記載の主題を含む。装置は、ロボットまたはドローンのうちの一方を備える。
【０２５５】
例１６は、コンピュータメモリからボリュメトリックデータ構造にアクセスする段階であって、ボリュメトリックデータ構造は、３次元（３Ｄ）ボリュームを表し、ボリュメトリックデータ構造は、疎な階層ボリュメトリックデータ構造を含み、ボリュメトリックデータ構造は、上位レベルボクセルセットを含み、各上位レベルボクセルは、３Ｄボリューム内のそれぞれのサブボリュームを第１の解像度で表し、各上位レベルボクセルは、それぞれの上位レベルボクセルのサブボリュームを第２のより高い解像度で表す下位レベルボクセルセットを含む、アクセスする段階と、レイキャスティングアルゴリズムを実行する段階であって、レイキャスティングアルゴリズムは、ボリュメトリックデータ構造を入力として受け取り、レイキャスティングアルゴリズムを実行する段階は、基準点から３Ｄボリュームへ複数の光線を放射する段階と、複数の光線の各々について、光線を横断させて、ボクセルセット内のボクセルを光線が交差しており、かつ、ボクセルセット内のボクセルが占有されているかどうかを判断する段階であって、光線は、近似横断に従って横断させられる、横断させる段階とを有する、実行する段階とを備える方法である。
【０２５６】
例１７は、例１６に記載の主題を含む。光線を横断させる段階は、ジオメトリで占有されたそれぞれの下位レベルボクセルを上位レベルボクセルセットのサブセットのみが含んでいるとボリュメトリックデータ構造から判断する段階を含む。
【０２５７】
例１８は、例１７に記載の主題を含む。光線を横断させる段階はさらに、光線が交差した下位レベルボクセルのサブセットを決定する段階であって、光線が交差した下位レベルボクセルの全てのうちの一部が近似横断に基づくサブセット内にある、決定する段階を含む。
【０２５８】
例１９は、例１７および１８のいずれか１つに記載の主題を含む。光線を横断させる段階は、占有された下位レベルボクセルを含んでいないとボリュメトリックデータ構造に基づいて判断された上位レベルボクセルの各々における下位レベルボクセルの解析をスキップする段階を含む。
【０２５９】
例２０は、例１９に記載の主題を含む。解析は、上位レベルボクセルのサブセットに対応する光線上の複数の箇所で、光線が交差した上位レベルボクセルのサブセットのうちの１つの内の下位レベルボクセルが占有されているか否かをチェックすることであって、光線が交差した上位レベルボクセルのサブセット内の下位レベルボクセルのサブセットは、近似横断に基づいてチェックされない、チェックすることを含む。
【０２６０】
例２１は、例２０に記載の主題を含む。複数の箇所は、近似横断に基づく定義された間隔に対応する。
【０２６１】
例２２は、例２１に記載の主題を含む。定義された間隔は、特定の次元の下位レベルボクセルの長さに関連付けられた距離を含む。
【０２６２】
例２３は、例２２に記載の主題を含む。レイキャスタはさらに、特定の方向を決定し、特定の次元は、光線の主な指向性コンポーネントを含む。
【０２６３】
例２４は、例１９から２３のいずれか１つに記載の主題を含む。上位レベルボクセルのサブセットの各々における下位レベルボクセルの解析は、メモリにアクセスして、ボリュメトリックデータ構造の対応する部分を検索することであって、占有された下位レベルボクセルを含んでいないと判断された上位レベルボクセルに対応するボリュメトリックデータ構造の部分は、メモリから検索されない、検索することを含む。
【０２６４】
例２５は、例１６から２４のいずれか１つに記載の主題を含む。レイキャスティングアルゴリズムは、回路を用いて実装されるＳＬＡＭパイプラインの一部である。
【０２６５】
例２６は、例１６から２４のいずれか１つに記載の主題を含む。レイキャスティングアルゴリズムは、グラフィックレンダリングアプリケーションに関連して実行される。
【０２６６】
例２７は、例１６から２６のいずれか１つに記載の主題を含む。ボリュメトリックデータ構造は、上位レベルボクセルの各々におけるジオメトリの存在を表すための第１のエントリを含み、第２のエントリのセットをさらに含み、第２のエントリの各々は、上位レベルボクセルのサブセットのうちの１つのそれぞれの下位レベルボクセルを表す。
【０２６７】
例２８は、例２７に記載の主題を含む。第１のエントリおよび第２のエントリは、それぞれのエントリにおいて記述される各ボクセルのバイナリ値を含み、それぞれのバイナリ値は、対応するボクセルが占有されているか否かを示す。
【０２６８】
例２９は、例１６から２８のいずれか１つに記載の方法を実行するための手段を備えるシステムである。
【０２６９】
例３０は、例２９に記載の主題を含む。手段は、命令が格納された機械可読記憶媒体を有し、命令は、例１６から２８のいずれか１つに記載の方法のうちの少なくとも一部を実行するために機械により実行可能である。
【０２７０】
例３１は、データ処理装置と、メモリと、視覚データをニューラルネットワークモデルの第１のネットワーク部分に入力することであって、第１のネットワーク部分は、視覚データに基づいて第１の値を生成する、入力することと、慣性データをニューラルネットワークモデルの第２の部分に入力することであって、第２のネットワーク部分は、慣性データに基づいて第２の値を生成する、入力することと、第１の値および第２の値をニューラルネットワークモデルの全結合層セットへの入力として提供することと、全結合層からニューラルネットワークモデルの出力を生成することであって、出力は、視覚データおよび慣性データの両方に基づく姿勢値を含む、生成することとを行うための、データ処理装置により実行可能なオドメトリエンジンとを備える装置である。
【０２７１】
例３２は、例３１に記載の主題を含む。第１のネットワーク部分は、視覚オドメトリニューラルネットワーク部分を含み、第２のネットワーク部分は、慣性オドメトリニューラルネットワーク部分を含む。
【０２７２】
例３３は、例３１および３２のいずれか１つに記載の主題を含む。第１のネットワーク部分は、複数の畳み込みニューラルネットワーク層と、第１の全結合層セットとを含む。
【０２７３】
例３４は、例３３に記載の主題を含む。第１のネットワーク部分は、ＦｌｏｗＮｅｔＳベースの畳み込みニューラルネットワーク（ＣＮＮ）の層を含む。
【０２７４】
例３５は、例３１から３４のいずれか１つに記載の主題を含む。第２のネットワーク部分は、長短期記憶（ＬＳＴＭ）ベースのニューラルネットワークと、第２の全結合層セットとを含む。
【０２７５】
例３６は、例３１から３５のいずれか１つに記載の主題を含む。視覚データは、連続するＲＧＢ画像のペアを含む。
【０２７６】
例３７は、例３１から３６のいずれか１つに記載の主題を含む。慣性データは、慣性測定ユニット（ＩＭＵ）デバイスにより生成される慣性データのサブシーケンスを含む。
【０２７７】
例３８は、例３１から３７のいずれか１つに記載の主題を含む。オドメトリエンジンはさらに、第１の値および第２の値を連結して、全結合層セットの入力を生成する。
【０２７８】
例３９は、例３１から３８のいずれか１つに記載の主題を含む。主題は、姿勢値に基づいて自律デバイスの動きの方向を決定するためのコントローラをさらに備える。
【０２７９】
例４０は、例３９に記載の主題を含む。自律デバイスは、ロボットまたはドローンのうちの一方を有する。
【０２８０】
例４１は、例３９および４０のいずれか１つに記載の主題を含む。主題は、自律デバイスをさらに備える。
【０２８１】
例４２は、環境を記述した視覚データを受信する段階と、デバイスの動きを記述した慣性データを受信する段階と、視覚データをニューラルネットワークモデルの第１のネットワーク部分への入力として提供する段階であって、第１のネットワーク部分は、視覚データに基づいて第１の値を生成する、提供する段階と、慣性データをニューラルネットワークモデルの第２の部分への入力として提供する段階であって、第２のネットワーク部分は、慣性データに基づいて第２の値を生成する、提供する段階と、第１の値および第２の値をニューラルネットワークモデルの全結合層セットへの入力として提供する段階と、全結合層からニューラルネットワークモデルの出力を生成する段階であって、出力は、視覚データおよび慣性データの両方に基づく姿勢値を含む、生成する段階とを備える方法である。
【０２８２】
例４３は、例４２に記載の主題を含む。第１のネットワーク部分は、視覚オドメトリニューラルネットワーク部分を含み、第２のネットワーク部分は、慣性オドメトリニューラルネットワーク部分を含む。
【０２８３】
例４４は、例４２および４３のいずれか１つに記載の主題を含む。第１のネットワーク部分は、複数の畳み込みニューラルネットワーク層と、第１の全結合層セットとを含む。
【０２８４】
例４５は、例４４に記載の主題を含む。第１のネットワーク部分は、ＦｌｏｗＮｅｔＳベースの畳み込みニューラルネットワーク（ＣＮＮ）の層を含む。
【０２８５】
例４６は、例４２から４５のいずれか１つに記載の主題を含む。第２のネットワーク部分は、長短期記憶（ＬＳＴＭ）ベースのニューラルネットワークと、第２の全結合層セットとを含む。
【０２８６】
例４７は、例４２から４６のいずれか１つに記載の主題を含む。視覚データは、連続するＲＧＢ画像のペアを含む。
【０２８７】
例４８は、例４２から４７のいずれか１つに記載の主題を含む。慣性データは、慣性測定ユニット（ＩＭＵ）デバイスにより生成される慣性データのサブシーケンスを含む。
【０２８８】
例４９は、例４２から４８のいずれか１つに記載の主題を含む。主題は、第１の値および第２の値を連結して、全結合層セットの入力を生成する段階をさらに備える。
【０２８９】
例５０は、例４２から４９のいずれか１つに記載の主題を含む。主題は、姿勢値に基づいてデバイスの動きの方向を決定する段階をさらに備える。
【０２９０】
例５１は、例５０に記載の主題を含む。主題は、方向におけるデバイスの動きを作動させる段階をさらに備える。
【０２９１】
例５２は、例４２から５１のいずれか１つに記載の方法を実行するための手段を備えるシステムである。
【０２９２】
例５３は、例５２に記載の主題を含む。手段は、命令が格納された機械可読記憶媒体を有し、命令は、例４２から５１のいずれか１つに記載の方法のうちの少なくとも一部を実行するために機械により実行可能である。
【０２９３】
例５４は、プロセッサと、慣性データを生成するための慣性測定ユニット（ＩＭＵ）デバイスと、視覚データを生成するためのカメラセンサと、視覚データをニューラルネットワークモデルの第１のネットワーク部分への入力として提供することであって、第１のネットワーク部分は、視覚データに基づいて第１の値を生成する、提供することと、慣性データをニューラルネットワークモデルの第２の部分への入力として提供することであって、第２のネットワーク部分は、慣性データに基づいて第２の値を生成する、提供することと、第１の値および第２の値をニューラルネットワークモデルの全結合層セットへの入力として提供することと、全結合層からニューラルネットワークモデルの出力を生成することであって、出力は、視覚データおよび慣性データの両方に基づく姿勢値を含む、生成することとを行うためのオドメトリエンジンとを有する自律デバイス
を備えるシステムである。
【０２９４】
例５５は、例５４に記載の主題を含む。主題は、姿勢値に基づいて自律デバイスの動きの方向を決定するためのコントローラをさらに備える。
【０２９５】
例５６は、例５５に記載の主題を含む。主題は、姿勢値に少なくとも部分的に基づいて自律デバイスを方向に自律的に移動させるためのアクチュエータをさらに備える。
【０２９６】
例５７は、例５４および５５のいずれか１つに記載の主題を含む。第１のネットワーク部分は、視覚オドメトリニューラルネットワーク部分を含み、第２のネットワーク部分は、慣性オドメトリニューラルネットワーク部分を含む。
【０２９７】
例５８は、例５４から５７のいずれか１つに記載の主題を含む。第１のネットワーク部分は、複数の畳み込みニューラルネットワーク層と、第１の全結合層セットとを含む。
【０２９８】
例５９は、例５８に記載の主題を含む。第１のネットワーク部分は、ＦｌｏｗＮｅｔＳベースの畳み込みニューラルネットワーク（ＣＮＮ）の層を含む。
【０２９９】
例６０は、例５４から５９のいずれか１つに記載の主題を含む。第２のネットワーク部分は、長短期記憶（ＬＳＴＭ）ベースのニューラルネットワークと、第２の全結合層セットとを含む。
【０３００】
例６１は、例５４から６０のいずれか１つに記載の主題を含む。視覚データは、連続するＲＧＢ画像のペアを含む。
【０３０１】
例６２は、例５４から６１のいずれか１つに記載の主題を含む。慣性データは、慣性測定ユニット（ＩＭＵ）デバイスにより生成される慣性データのサブシーケンスを含む。
【０３０２】
例６３は、例５４から６２のいずれか１つに記載の主題を含む。オドメトリエンジンはさらに、第１の値および第２の値を連結して、全結合層セットの入力を生成する。
【０３０３】
例６４は、例５４から６３のいずれか１つに記載の主題を含む。主題は、姿勢値に基づいて自律デバイスの動きの方向を決定するためのコントローラをさらに備える。
【０３０４】
例６５は、例６４に記載の主題を含む。自律デバイスは、ロボットまたはドローンのうちの一方を有する。
【０３０５】
例６６は、データ処理装置と、第１の３Ｄボリュームを表すための第１のボリュメトリックデータ構造と、第２の３Ｄボリュームを表すための第２のボリュメトリックデータ構造とを格納するためのメモリと、第１のボリュメトリックデータ構造を第１の２Ｄグリッドセットへ変換することと、第２のボリュメトリックデータ構造を第２の２Ｄグリッドセットへ変換することと、ボクセルグリッドのペアを畳み込みニューラルネットワーク（ＣＮＮ）への入力として提供することであって、ボクセルグリッドのペアは、第１の２Ｄグリッドセットのうちの１つと第２の２Ｄグリッドセットのうちの１つとを含む、提供することと、ＣＮＮを用いてボクセルグリッドのペアの相対姿勢値を生成することとを行うための、データ処理装置により実行可能な相対姿勢推定ツールとを備える装置である。
【０３０６】
例６７は、例６６に記載の主題を含む。相対姿勢推定ツールはさらに、ＣＮＮの損失関数を決定し、損失関数は、相対姿勢値の生成において適用される。
【０３０７】
例６８は、例６６および６７のいずれか１つに記載の主題を含む。相対姿勢値は、第１のＤボリュームおよび第２の３Ｄボリュームの相対姿勢推定を決定するために、第１の２Ｄグリッドセットおよび第２の２Ｄグリッドセットからの２Ｄグリッドペアセット用に決定される。
【０３０８】
例６９は、例６６から６８のいずれか１つに記載の主題を含む。第１のボリュメトリックデータ構造は、第１の３Ｄボリューム用の点群を表し、第２のボリュメトリックデータ構造は、第２の３Ｄボリューム用の点群を表す。
【０３０９】
例７０は、例６６から６９のいずれか１つに記載の主題を含む。ＣＮＮは、２Ｄ  ＣＮＮを含む。
【０３１０】
例７１は、例６６から７０のいずれか１つに記載の主題を含む。ＣＮＮは、表現部分および回帰部分を含み、ボクセルグリッドのペアは、表現部分への入力として提供され、表現部分は、ボクセルグリッドのペアに基づいて特徴ベクトルを生成し、特徴ベクトルは、回帰部分への入力として提供され、相対姿勢値は、回帰部分の出力を含む。
【０３１１】
例７２は、例７１に記載の主題を含む。表現部分は、シャムネットワークを含み、回帰部分は、全結合層を含む。
【０３１２】
例７３は、例６６から７２のいずれか１つに記載の主題を含む。主題は、自律デバイスをさらに備える。
【０３１３】
例７４は、例７３に記載の主題を含む。自律デバイスは、ロボットまたはドローンのうちの一方を有する。
【０３１４】
例７５は、第１の３Ｄボリュームを表すための第１のボリュメトリックデータ構造と、第２の３Ｄボリュームを表すための第２のボリュメトリックデータ構造とにコンピュータメモリからアクセスする段階と、第１のボリュメトリックデータ構造を第１の２Ｄグリッドセットへ変換する段階と、第２のボリュメトリックデータ構造を第２の２Ｄグリッドセットへ変換する段階と、第１の２Ｄグリッドセットおよび第２の２Ｄグリッドセットを畳み込みニューラルネットワーク（ＣＮＮ）への入力として提供する段階と、ＣＮＮを用いて、第１の３Ｄボリュームと第２の３Ｄボリュームとに基づく相対姿勢値を生成する段階とを備える方法である。
【０３１５】
例７６は、例７５に記載の主題を含む。主題は、ＣＮＮの損失関数を決定する段階と、損失関数を相対姿勢値の生成に適用する段階とをさらに備える。
【０３１６】
例７７は、例７５および７６のいずれか１つに記載の主題を含む。ＣＮＮは、２Ｄ畳み込み層を含む。
【０３１７】
例７８は、例７５から７７のいずれか１つに記載の主題を含む。ＣＮＮは、表現部分および回帰部分を含み、第１の２Ｄグリッドセットおよび第２の２Ｄグリッドセットは、表現部分への入力として提供され、表現部分は、特徴ベクトルを出力として生成し、特徴ベクトルは、回帰部分への入力として提供され、相対姿勢値は、回帰部分の出力を含む。
【０３１８】
例７９は、例７８に記載の主題を含む。表現部分は、シャムネットワークを含み、回帰部分は、全結合層を含む。
【０３１９】
例８０は、例７５から７９のいずれか１つに記載の方法を実行するための手段を備えるシステムである。
【０３２０】
例８１は、第１の３Ｄボリュームを表すための第１のボリュメトリックデータ構造と、第２の３Ｄボリュームを表すための第２のボリュメトリックデータ構造とにコンピュータメモリからアクセスする手順と、第１のボリュメトリックデータ構造を第１の２Ｄグリッドセットへ変換する手順と、第２のボリュメトリックデータ構造を第２の２Ｄグリッドセットへ変換する手順と、第１の２Ｄグリッドセットおよび第２の２Ｄグリッドセットを畳み込みニューラルネットワーク（ＣＮＮ）への入力として提供する手順と、ＣＮＮを用いて、第１の３Ｄボリュームと第２の３Ｄボリュームとに基づく相対姿勢値を生成する手順とを機械に実行させるために機械により実行可能な命令が格納された非一時的機械可読記憶媒体である。
【０３２１】
例８２は、例８１に記載の主題を含む。主題は、ＣＮＮの損失関数を決定する段階と、損失関数を相対姿勢値の生成に適用する段階とをさらに備える。
【０３２２】
例８３は、例８１および８２のいずれか１つに記載の主題を含む。ＣＮＮは、２Ｄ畳み込み層を含む。
【０３２３】
例８４は、例８１から８３のいずれか１つに記載の主題を含む。ＣＮＮは、表現部分および回帰部分を含み、第１の２Ｄグリッドセットおよび第２の２Ｄグリッドセットは、表現部分への入力として提供され、表現部分は、特徴ベクトルを出力として生成し、特徴ベクトルは、回帰部分への入力として提供され、相対姿勢値は、回帰部分の出力を含む。
【０３２４】
例８５は、例８４に記載の主題を含む。表現部分は、シャムネットワークを含み、回帰部分は、全結合層を含む。
【０３２５】
例８６は、例８１から８５のいずれか１つに記載の主題を含む。第１のボリュメトリックデータ構造および第２のボリュメトリックデータ構造の一方または両方は、対応する点群データのボクセル化から生成される。
【０３２６】
このように、主題の特定の実施形態を説明してきた。他の実施形態は、以下の特許請求の範囲の範囲内に含まれる。いくつかの場合において、特許請求の範囲に記載される動作が異なる順序で実行されてもよく、望ましい結果が依然として実現される。加えて、添付図面に示される処理は、望ましい結果を実現するために、必ずしも示されている特定の順序、または順番である必要はない。
［項目１］
データ処理装置と、
３次元（３Ｄ）ボリュームを表すためのボリュメトリックデータ構造を格納するためのメモリであって、上記ボリュメトリックデータ構造は、疎な階層ボリュメトリックデータ構造を含み、上記ボリュメトリックデータ構造は、上位レベルボクセルセットを含み、各上位レベルボクセルは、上記３Ｄボリューム内のそれぞれのサブボリュームを第１の解像度で表し、各上位レベルボクセルは、上記それぞれの上位レベルボクセルのサブボリュームを第２のより高い解像度で表すための下位レベルボクセルセットを含む、メモリと、
レイキャスティングアルゴリズムを実行するための、上記データ処理装置により実行可能なレイキャスタであって、上記レイキャスティングアルゴリズムは、上記ボリュメトリックデータ構造を入力として受け取り、上記レイキャスティングアルゴリズムを実行することは、
基準点から上記３Ｄボリュームへ複数の光線を放射することと、
上記複数の光線の各々について、上記光線を横断させて、上記ボクセルセット内のボクセルを上記光線が交差しており、かつ、上記ボクセルセット内の上記ボクセルが占有されているかどうかを判断することであって、上記光線は、近似横断に従って横断させられる、判断することと
を含む、レイキャスタと
を備える装置。
［項目２］
上記光線を横断させることは、ジオメトリで占有されたそれぞれの下位レベルボクセルを上記上位レベルボクセルセットのサブセットのみが含んでいると上記ボリュメトリックデータ構造から判断することを含む、項目１に記載の装置。
［項目３］
上記光線を横断させることはさらに、
上記光線が交差した上記下位レベルボクセルのサブセットを決定することであって、上記光線が交差した上記下位レベルボクセルの全てのうちの一部が上記近似横断に基づく上記サブセット内にある、決定すること
を含む、
項目２に記載の装置。
［項目４］
上記光線を横断させることは、占有された下位レベルボクセルを含んでいないと上記ボリュメトリックデータ構造に基づいて判断された上記上位レベルボクセルの各々における下位レベルボクセルの解析をスキップすることを含む、項目２および３のいずれか１つに記載の装置。
［項目５］
上記解析は、上記上位レベルボクセルのサブセットに対応する上記光線上の複数の箇所で、上記光線が交差した上記上位レベルボクセルのサブセットのうちの１つの内の下位レベルボクセルが占有されているか否かをチェックすることであって、上記光線が交差した上記上位レベルボクセルのサブセット内の上記下位レベルボクセルのサブセットは、上記近似横断に基づいてチェックされない、チェックすることを含む、項目４に記載の装置。
［項目６］
上記複数の箇所は、上記近似横断に基づく定義された間隔に対応する、項目５に記載の装置。
［項目７］
上記定義された間隔は、特定の次元の下位レベルボクセルの長さに関連付けられた距離を含む、項目６に記載の装置。
［項目８］
上記レイキャスタはさらに、上記特定の方向を決定し、上記特定の次元は、上記光線の主な指向性コンポーネントを含む、項目７に記載の装置。
［項目９］
上記上位レベルボクセルのサブセットの各々における下位レベルボクセルの解析は、メモリにアクセスして、上記ボリュメトリックデータ構造の対応する部分を検索することであって、占有された下位レベルボクセルを含んでいないと判断された上記上位レベルボクセルに対応する上記ボリュメトリックデータ構造の部分は、メモリから検索されない、検索することを含む、項目４から８のいずれか１つに記載の装置。
［項目１０］
上記レイキャスティングアルゴリズムは、上記回路を用いて実装されるＳＬＡＭパイプラインの一部である、項目１から９のいずれか１つに記載の装置。
［項目１１］
上記レイキャスティングアルゴリズムは、グラフィックレンダリングアプリケーションに関連して実行される、項目１から９のいずれか１つに記載の装置。
［項目１２］
上記ボリュメトリックデータ構造は、上記上位レベルボクセルの各々におけるジオメトリの存在を表すための第１のエントリを含み、第２のエントリのセットをさらに含み、上記第２のエントリの各々は、上記上位レベルボクセルのサブセットのうちの１つのそれぞれの下位レベルボクセルを表す、項目１から１０のいずれか１つに記載の装置。
［項目１３］
上記第１のエントリおよび上記第２のエントリは、上記それぞれのエントリにおいて記述される各ボクセルのバイナリ値を含み、上記それぞれのバイナリ値は、上記対応するボクセルが占有されているか否かを示す、項目１２に記載の装置。
［項目１４］
上記データ処理装置は、ビジュアルプロセッシングユニット（ＶＰＵ）を有する、項目１から１３のいずれか１つに記載の装置。
［項目１５］
ロボットまたはドローンのうちの一方を備える、項目１から１４のいずれか１つに記載の装置。
［項目１６］
コンピュータメモリからボリュメトリックデータ構造にアクセスする段階であって、上記ボリュメトリックデータ構造は、３次元（３Ｄ）ボリュームを表し、上記ボリュメトリックデータ構造は、疎な階層ボリュメトリックデータ構造を含み、上記ボリュメトリックデータ構造は、上位レベルボクセルセットを含み、各上位レベルボクセルは、上記３Ｄボリューム内のそれぞれのサブボリュームを第１の解像度で表し、各上位レベルボクセルは、上記それぞれの上位レベルボクセルのサブボリュームを第２のより高い解像度で表す下位レベルボクセルセットを含む、アクセスする段階と、
レイキャスティングアルゴリズムを実行する段階であって、上記レイキャスティングアルゴリズムは、上記ボリュメトリックデータ構造を入力として受け取り、上記レイキャスティングアルゴリズムを実行する段階は、
基準点から上記３Ｄボリュームへ複数の光線を放射する段階と、
上記複数の光線の各々について、上記光線を横断させて、上記ボクセルセット内のボクセルを上記光線が交差しており、かつ、上記ボクセルセット内の上記ボクセルが占有されているかどうかを判断する段階であって、上記光線は、近似横断に従って横断させられる、横断させる段階と
を有する、
実行する段階と
を備える方法。
［項目１７］
上記光線を横断させる段階は、ジオメトリで占有されたそれぞれの下位レベルボクセルを上記上位レベルボクセルセットのサブセットのみが含んでいると上記ボリュメトリックデータ構造から判断する段階を含む、項目１６に記載の方法。
［項目１８］
上記光線を横断させる段階はさらに、
上記光線が交差した上記下位レベルボクセルのサブセットを決定する段階であって、上記光線が交差した上記下位レベルボクセルの全てのうちの一部が上記近似横断に基づく上記サブセット内にある、決定する段階
を含む、
項目１７に記載の方法。
［項目１９］
上記光線を横断させる段階は、占有された下位レベルボクセルを含んでいないと上記ボリュメトリックデータ構造に基づいて判断された上記上位レベルボクセルの各々における下位レベルボクセルの解析をスキップする段階を含む、項目１７および１８のいずれか１つに記載の方法。
［項目２０］
上記解析は、上記上位レベルボクセルのサブセットに対応する上記光線上の複数の箇所で、上記光線が交差した上記上位レベルボクセルのサブセットのうちの１つの内の下位レベルボクセルが占有されているか否かをチェックすることであって、上記光線が交差した上記上位レベルボクセルのサブセット内の上記下位レベルボクセルのサブセットは、上記近似横断に基づいてチェックされない、チェックすることを含む、項目１９に記載の方法。
［項目２１］
上記複数の箇所は、上記近似横断に基づく定義された間隔に対応する、項目２０に記載の方法。
［項目２２］
上記定義された間隔は、特定の次元の下位レベルボクセルの長さに関連付けられた距離を含む、項目２１に記載の方法。
［項目２３］
上記レイキャスタはさらに、上記特定の方向を決定し、上記特定の次元は、上記光線の主な指向性コンポーネントを含む、項目２２に記載の方法。
［項目２４］
上記上位レベルボクセルのサブセットの各々における下位レベルボクセルの解析は、メモリにアクセスして、上記ボリュメトリックデータ構造の対応する部分を検索することであって、占有された下位レベルボクセルを含んでいないと判断された上記上位レベルボクセルに対応する上記ボリュメトリックデータ構造の部分は、メモリから検索されない、検索することを含む、項目１９から２３のいずれか１つに記載の方法。
［項目２５］
上記レイキャスティングアルゴリズムは、上記回路を用いて実装されるＳＬＡＭパイプラインの一部である、項目１６から２４のいずれか１つに記載の方法。
［項目２６］
上記レイキャスティングアルゴリズムは、グラフィックレンダリングアプリケーションに関連して実行される、項目１６から２４のいずれか１つに記載の方法。
［項目２７］
上記ボリュメトリックデータ構造は、上記上位レベルボクセルの各々におけるジオメトリの存在を表すための第１のエントリを含み、第２のエントリのセットをさらに含み、上記第２のエントリの各々は、上記上位レベルボクセルのサブセットのうちの１つのそれぞれの下位レベルボクセルを表す、項目１６から２６のいずれか１つに記載の方法。
［項目２８］
上記第１のエントリおよび上記第２のエントリは、上記それぞれのエントリにおいて記述される各ボクセルのバイナリ値を含み、上記それぞれのバイナリ値は、上記対応するボクセルが占有されているか否かを示す、項目２７に記載の方法。
［項目２９］
項目１６から２８のいずれか１つに記載の方法を実行するための手段を備えるシステム。
［項目３０］
上記手段は、命令が格納された機械可読記憶媒体を有し、上記命令は、項目１６から２８のいずれか１つに記載の方法のうちの少なくとも一部を実行するために機械により実行可能である、項目２９に記載のシステム。
［項目３１］
データ処理装置と、
メモリと、
視覚データをニューラルネットワークモデルの第１のネットワーク部分に入力することであって、上記第１のネットワーク部分は、上記視覚データに基づいて第１の値を生成する、入力することと、
慣性データを上記ニューラルネットワークモデルの第２の部分に入力することであって、上記第２のネットワーク部分は、上記慣性データに基づいて第２の値を生成する、入力することと、
上記第１の値および上記第２の値を上記ニューラルネットワークモデルの全結合層セットへの入力として提供することと、
上記全結合層から上記ニューラルネットワークモデルの出力を生成することであって、上記出力は、上記視覚データおよび上記慣性データの両方に基づく姿勢値を含む、生成することと
を行うための、上記データ処理装置により実行可能なオドメトリエンジンと
を備える装置。
［項目３２］
上記第１のネットワーク部分は、視覚オドメトリニューラルネットワーク部分を含み、上記第２のネットワーク部分は、慣性オドメトリニューラルネットワーク部分を含む、項目３１に記載の装置。
［項目３３］
上記第１のネットワーク部分は、複数の畳み込みニューラルネットワーク層と、第１の全結合層セットとを含む、項目３１および３２のいずれか１つに記載の装置。
［項目３４］
上記第１のネットワーク部分は、ＦｌｏｗＮｅｔＳベースの畳み込みニューラルネットワーク（ＣＮＮ）の層を含む、項目３３に記載の装置。
［項目３５］
上記第２のネットワーク部分は、長短期記憶（ＬＳＴＭ）ベースのニューラルネットワークと、第２の全結合層セットとを含む、項目３１から３４のいずれか１つに記載の装置。
［項目３６］
上記視覚データは、連続するＲＧＢ画像のペアを含む、項目３１から３５のいずれか１つに記載の装置。
［項目３７］
上記慣性データは、慣性測定ユニット（ＩＭＵ）デバイスにより生成される慣性データのサブシーケンスを含む、項目３１から３６のいずれか１つに記載の装置。
［項目３８］
上記オドメトリエンジンはさらに、上記第１の値および上記第２の値を連結して、上記全結合層セットの上記入力を生成する、項目３１から３７のいずれか１つに記載の装置。
［項目３９］
上記姿勢値に基づいて自律デバイスの動きの方向を決定するためのコントローラをさらに備える、項目３１から３８のいずれか１つに記載の装置。
［項目４０］
上記自律デバイスは、ロボットまたはドローンのうちの一方を有する、項目３９に記載の装置。
［項目４１］
上記自律デバイスをさらに備える、項目３９から４０のいずれか１つに記載の装置。
［項目４２］
環境を記述した視覚データを受信する段階と、
デバイスの動きを記述した慣性データを受信する段階と、
上記視覚データをニューラルネットワークモデルの第１のネットワーク部分への入力として提供する段階であって、上記第１のネットワーク部分は、上記視覚データに基づいて第１の値を生成する、提供する段階と、
上記慣性データを上記ニューラルネットワークモデルの第２の部分への入力として提供する段階であって、上記第２のネットワーク部分は、上記慣性データに基づいて第２の値を生成する、提供する段階と、
上記第１の値および上記第２の値を上記ニューラルネットワークモデルの全結合層セットへの入力として提供する段階と、
上記全結合層から上記ニューラルネットワークモデルの出力を生成する段階であって、上記出力は、上記視覚データおよび上記慣性データの両方に基づく姿勢値を含む、生成する段階と
を備える方法。
［項目４３］
上記第１のネットワーク部分は、視覚オドメトリニューラルネットワーク部分を含み、上記第２のネットワーク部分は、慣性オドメトリニューラルネットワーク部分を含む、項目４２に記載の方法。
［項目４４］
上記第１のネットワーク部分は、複数の畳み込みニューラルネットワーク層と、第１の全結合層セットとを含む、項目４２および４３のいずれか１つに記載の方法。
［項目４５］
上記第１のネットワーク部分は、ＦｌｏｗＮｅｔＳベースの畳み込みニューラルネットワーク（ＣＮＮ）の層を含む、項目４４に記載の方法。
［項目４６］
上記第２のネットワーク部分は、長短期記憶（ＬＳＴＭ）ベースのニューラルネットワークと、第２の全結合層セットとを含む、項目４２から４５のいずれか１つに記載の方法。
［項目４７］
上記視覚データは、連続するＲＧＢ画像のペアを含む、項目４２から４６のいずれか１つに記載の方法。
［項目４８］
上記慣性データは、慣性測定ユニット（ＩＭＵ）デバイスにより生成される慣性データのサブシーケンスを含む、項目４２から４７のいずれか１つに記載の方法。
［項目４９］
上記第１の値および上記第２の値を連結して、上記全結合層セットの上記入力を生成する段階をさらに備える、項目４２から４８のいずれか１つに記載の方法。
［項目５０］
上記姿勢値に基づいて上記デバイスの動きの方向を決定する段階をさらに備える、項目４２から４９のいずれか１つに記載の方法。
［項目５１］
上記方向における上記デバイスの動きを作動させる段階をさらに備える、項目５０に記載の方法。
［項目５２］
項目４２から５１のいずれか１つに記載の方法を実行するための手段を備えるシステム。
［項目５３］
上記手段は、命令が格納された機械可読記憶媒体を有し、上記命令は、項目４２から５１のいずれか１つに記載の方法のうちの少なくとも一部を実行するために機械により実行可能である、項目５２に記載のシステム。
［項目５４］
プロセッサと、
慣性データを生成するための慣性測定ユニット（ＩＭＵ）デバイスと、
視覚データを生成するためのカメラセンサと、
上記視覚データをニューラルネットワークモデルの第１のネットワーク部分への入力として提供することであって、上記第１のネットワーク部分は、上記視覚データに基づいて第１の値を生成する、提供することと、
上記慣性データを上記ニューラルネットワークモデルの第２の部分への入力として提供することであって、上記第２のネットワーク部分は、上記慣性データに基づいて第２の値を生成する、提供することと、
上記第１の値および上記第２の値を上記ニューラルネットワークモデルの全結合層セットへの入力として提供することと、
上記全結合層から上記ニューラルネットワークモデルの出力を生成することであって、上記出力は、上記視覚データおよび上記慣性データの両方に基づく姿勢値を含む、生成することと
を行うためのオドメトリエンジンと
を有する自律デバイス
を備えるシステム。
［項目５５］
上記姿勢値に基づいて上記自律デバイスの動きの方向を決定するためのコントローラをさらに備える、項目５４に記載のシステム。
［項目５６］
上記姿勢値に少なくとも部分的に基づいて上記自律デバイスを上記方向に自律的に移動させるためのアクチュエータをさらに備える、項目５５に記載のシステム。
［項目５７］
上記第１のネットワーク部分は、視覚オドメトリニューラルネットワーク部分を含み、上記第２のネットワーク部分は、慣性オドメトリニューラルネットワーク部分を含む、項目５４かおよび５５のいずれか１つに記載のシステム。
［項目５８］
上記第１のネットワーク部分は、複数の畳み込みニューラルネットワーク層と、第１の全結合層セットとを含む、項目５４から５７のいずれか１つに記載のシステム。
［項目５９］
上記第１のネットワーク部分は、ＦｌｏｗＮｅｔＳベースの畳み込みニューラルネットワーク（ＣＮＮ）の層を含む、項目５８に記載のシステム。
［項目６０］
上記第２のネットワーク部分は、長短期記憶（ＬＳＴＭ）ベースのニューラルネットワークと、第２の全結合層セットとを含む、項目５４から５９のいずれか１つに記載のシステム。
［項目６１］
上記視覚データは、連続するＲＧＢ画像のペアを含む、項目５４から６０のいずれか１つに記載のシステム。
［項目６２］
上記慣性データは、慣性測定ユニット（ＩＭＵ）デバイスにより生成される慣性データのサブシーケンスを含む、項目５４から６１のいずれか１つに記載のシステム。
［項目６３］
上記オドメトリエンジンはさらに、上記第１の値および上記第２の値を連結して、上記全結合層セットの上記入力を生成する、項目５４から６２のいずれか１つに記載のシステム。
［項目６４］
上記姿勢値に基づいて自律デバイスの動きの方向を決定するためのコントローラをさらに備える、項目５４から６３のいずれか１つに記載のシステム。
［項目６５］
上記自律デバイスは、ロボットまたはドローンのうちの一方を有する、項目６４に記載のシステム。
［項目６６］
データ処理装置と、
第１の３Ｄボリュームを表すための第１のボリュメトリックデータ構造と、第２の３Ｄボリュームを表すための第２のボリュメトリックデータ構造とを格納するためのメモリと、
上記第１のボリュメトリックデータ構造を第１の２Ｄグリッドセットへ変換することと、
上記第２のボリュメトリックデータ構造を第２の２Ｄグリッドセットへ変換することと、
ボクセルグリッドのペアを畳み込みニューラルネットワーク（ＣＮＮ）への入力として提供することであって、上記ボクセルグリッドのペアは、上記第１の２Ｄグリッドセットのうちの１つと上記第２の２Ｄグリッドセットのうちの１つとを含む、提供することと、
上記ＣＮＮを用いて上記ボクセルグリッドのペアの相対姿勢値を生成することと
を行うための、上記データ処理装置により実行可能な相対姿勢推定ツールと
を備える装置。
［項目６７］
上記相対姿勢推定ツールはさらに、上記ＣＮＮの損失関数を決定し、上記損失関数は、上記相対姿勢値の上記生成において適用される、項目６６に記載の装置。
［項目６８］
上記相対姿勢値は、上記第１のＤボリュームおよび上記第２の３Ｄボリュームの相対姿勢推定を決定するために、上記第１の２Ｄグリッドセットおよび上記第２の２Ｄグリッドセットからの２Ｄグリッドペアセット用に決定される、項目６６および６７のいずれか１つに記載の装置。
［項目６９］
上記第１のボリュメトリックデータ構造は、上記第１の３Ｄボリューム用の点群を表し、上記第２のボリュメトリックデータ構造は、上記第２の３Ｄボリューム用の点群を表す、項目６６から６８のいずれか１つに記載の装置。
［項目７０］
上記ＣＮＮは、２Ｄ  ＣＮＮを含む、項目６６から６９のいずれか１つに記載の装置。
［項目７１］
上記ＣＮＮは、表現部分および回帰部分を含み、上記ボクセルグリッドのペアは、上記表現部分への入力として提供され、上記表現部分は、上記ボクセルグリッドのペアに基づいて特徴ベクトルを生成し、上記特徴ベクトルは、上記回帰部分への入力として提供され、上記相対姿勢値は、上記回帰部分の出力を含む、項目６６から７０のいずれか１つに記載の装置。
［項目７２］
上記表現部分は、シャムネットワークを含み、上記回帰部分は、全結合層を含む、項目７１に記載の装置。
［項目７３］
自律デバイスをさらに備える、項目６６から７２のいずれか１つに記載の装置。
［項目７４］
上記自律デバイスは、ロボットまたはドローンのうちの一方を有する、項目７３に記載の装置。
［項目７５］
第１の３Ｄボリュームを表すための第１のボリュメトリックデータ構造と、第２の３Ｄボリュームを表すための第２のボリュメトリックデータ構造とにコンピュータメモリからアクセスする段階と、
上記第１のボリュメトリックデータ構造を第１の２Ｄグリッドセットへ変換する段階と、
上記第２のボリュメトリックデータ構造を第２の２Ｄグリッドセットへ変換する段階と、
上記第１の２Ｄグリッドセットおよび上記第２の２Ｄグリッドセットを畳み込みニューラルネットワーク（ＣＮＮ）への入力として提供する段階と、
上記ＣＮＮを用いて、上記第１の３Ｄボリュームと上記第２の３Ｄボリュームとに基づく相対姿勢値を生成する段階と
を備える方法。
［項目７６］
上記ＣＮＮの損失関数を決定する段階と、
上記損失関数を上記相対姿勢値の上記生成に適用する段階と
をさらに備える、項目７５に記載の方法。
［項目７７］
上記ＣＮＮは、２Ｄ畳み込み層を含む、項目７５および７６のいずれか１つに記載の方法。
［項目７８］
上記ＣＮＮは、表現部分および回帰部分を含み、上記第１の２Ｄグリッドセットおよび上記第２の２Ｄグリッドセットは、上記表現部分への入力として提供され、上記表現部分は、特徴ベクトルを出力として生成し、上記特徴ベクトルは、上記回帰部分への入力として提供され、上記相対姿勢値は、上記回帰部分の出力を含む、項目７５から７７のいずれか１つに記載の方法。
［項目７９］
上記表現部分は、シャムネットワークを含み、上記回帰部分は、全結合層を含む、項目７８に記載の方法。
［項目８０］
項目７５から７９のいずれか１つに記載の方法を実行するための手段を備えるシステム。
［項目８１］
第１の３Ｄボリュームを表すための第１のボリュメトリックデータ構造と、第２の３Ｄボリュームを表すための第２のボリュメトリックデータ構造とにコンピュータメモリからアクセスする手順と、
上記第１のボリュメトリックデータ構造を第１の２Ｄグリッドセットへ変換する手順と、
上記第２のボリュメトリックデータ構造を第２の２Ｄグリッドセットへ変換する手順と、
上記第１の２Ｄグリッドセットおよび上記第２の２Ｄグリッドセットを畳み込みニューラルネットワーク（ＣＮＮ）への入力として提供する手順と、
上記ＣＮＮを用いて、上記第１の３Ｄボリュームと上記第２の３Ｄボリュームとに基づく相対姿勢値を生成する手順と
を機械に実行させるために上記機械により実行可能な命令が格納された非一時的機械可読記憶媒体。
［項目８２］
上記ＣＮＮの損失関数を決定する手順と、
上記損失関数を上記相対姿勢値の上記生成に適用する手順と
をさらに含む、項目８１に記載の記憶媒体。
［項目８３］
上記ＣＮＮは、２Ｄ畳み込み層を含む、項目８１および８２のいずれか１つに記載の記憶媒体。
［項目８４］
上記ＣＮＮは、表現部分および回帰部分を含み、上記第１の２Ｄグリッドセットおよび上記第２の２Ｄグリッドセットは、上記表現部分への入力として提供され、上記表現部分は、特徴ベクトルを出力として生成し、上記特徴ベクトルは、上記回帰部分への入力として提供され、上記相対姿勢値は、上記回帰部分の出力を含む、項目８１から８３のいずれか１つに記載の記憶媒体。
［項目８５］
上記表現部分は、シャムネットワークを含み、上記回帰部分は、全結合層を含む、項目８４に記載の記憶媒体。
［項目８６］
上記第１のボリュメトリックデータ構造および上記第２のボリュメトリックデータ構造の一方または両方は、対応する点群データのボクセル化から生成される、項目８１から８５のいずれか１つに記載の記憶媒体。
【図１】
2021536604.tif 000035
【図２】
2021536604.tif 000036
【図３】
2021536604.tif 000037
【図４】
2021536604.tif 000038
【図５】
2021536604.tif 000039
【図６】
2021536604.tif 000040
【図７】
2021536604.tif 000041
【図８】
2021536604.tif 000042
【図９】
2021536604.tif 000043
【図１０】
2021536604.tif 000044
【図１１】
2021536604.tif 000045
【図１２】
2021536604.tif 000046
【図１３】
2021536604.tif 000047
【図１４】
2021536604.tif 000048
【図１５】
2021536604.tif 000049
【図１６Ａ】
2021536604.tif 000050
【図１６Ｂ】
2021536604.tif 000051
【図１６Ｃ】
2021536604.tif 000052
【図１７Ａ】
2021536604.tif 000053
【図１７Ｂ】
2021536604.tif 000054
【図１８】
2021536604.tif 000055
【図１９】
2021536604.tif 000056
【図２０Ａ】
2021536604.tif 000057
【図２０Ｂ】
2021536604.tif 000058
【図２１Ａ】
2021536604.tif 000059
【図２１Ｂ】
2021536604.tif 000060
【図２１Ｃ】
2021536604.tif 000061
【図２２】
2021536604.tif 000062
【図２３Ａ】
2021536604.tif 000063
【図２３Ｂ】
2021536604.tif 000064
【図２４】
2021536604.tif 000065
【図２５】
2021536604.tif 000066
【図２６Ａ】
2021536604.tif 000067
【図２６Ｂ】
2021536604.tif 000068
【図２６Ｃ】
2021536604.tif 000069
【図２７】
2021536604.tif 000070
【図２８】
2021536604.tif 000071
【図２９】
2021536604.tif 000072
【図３０】
2021536604.tif 000073
【図３１】
2021536604.tif 000074
【図３２】
2021536604.tif 000075
【図３３】
2021536604.tif 000076
【図３４】
2021536604.tif 000077
【図３５Ａ】
2021536604.tif 000078
【図３５Ｂ】
2021536604.tif 000079
【図３５Ｃ】
2021536604.tif 000080
【図３６】
2021536604.tif 000081
【図３７】
2021536604.tif 000082
【図３８Ａ】
2021536604.tif 000083
【図３８Ｂ】
2021536604.tif 000084
【図３８Ｃ】
2021536604.tif 000085
【図３９】
2021536604.tif 000086
【図４０】
2021536604.tif 000087
【図４１】
2021536604.tif 000088
【図４２】
2021536604.tif 000089
【図４３】
2021536604.tif 000090
【図４４】
2021536604.tif 000091
【図４５】
2021536604.tif 000092
【国際調査報告】
2021536604.tif 000093
2021536604.tif 000094
2021536604.tif 000095
2021536604.tif 000096