(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023066377
(43)【公開日】2023-05-15
(54)【発明の名称】自律システム及びアプリケーションのための人工知能を使用した点群高密度化を有する3D表面再構成
(51)【国際特許分類】
G06T 7/55 20170101AFI20230508BHJP
G06T 7/00 20170101ALI20230508BHJP
B60W 40/06 20120101ALI20230508BHJP
B60W 60/00 20200101ALI20230508BHJP
【FI】
G06T7/55
G06T7/00 350C
G06T7/00 650A
B60W40/06
B60W60/00
【審査請求】未請求
【請求項の数】22
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022159214
(22)【出願日】2022-10-03
(31)【優先権主張番号】17/452,744
(32)【優先日】2021-10-28
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/452,747
(32)【優先日】2021-10-28
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/452,749
(32)【優先日】2021-10-28
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/452,751
(32)【優先日】2021-10-28
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/452,752
(32)【優先日】2021-10-28
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.ZIGBEE
2.TENSORFLOW
(71)【出願人】
【識別番号】501450960
【氏名又は名称】エヌビディア コーポレーション
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】カン ワン
(72)【発明者】
【氏名】ユエ ウー
(72)【発明者】
【氏名】ミンウー パク
(72)【発明者】
【氏名】ガン パン
【テーマコード(参考)】
3D241
5L096
【Fターム(参考)】
3D241BA50
3D241CC18
3D241CE05
3D241DC46Z
5L096AA06
5L096AA09
5L096BA04
5L096BA18
5L096CA04
5L096CA05
5L096DA01
5L096EA05
5L096EA43
5L096FA23
5L096FA32
5L096FA66
5L096FA69
5L096GA10
5L096GA19
5L096GA30
5L096HA09
5L096HA11
5L096KA04
5L096MA07
(57)【要約】
【課題】自律システム及びアプリケーションのための人工知能を使用した点群高密度化を有する3D表面再構成を提供する。
【解決手段】様々な実例で、道路の3D表面構造(3D路面)などの3D表面構造が、3D表面構造の3D点群又は他の表現を生成するために、観測及び推定され得る。表現は、低密度でもよいので、1つ又は複数の高密度化技法が、3D表面構造の表現を高密度化するために、適用され得る。たとえば、低密度投影画像(たとえば、2D高さマップ)と高密度投影画像との関係が、マルコフ確率場でモデル化され得、最大事後確率(MAP)推定が、低密度値を所与として、対応する結合確率分布を使用して最も可能性の高い高密度値を推定するために、実行され得る。3D表面構造の結果として生じる高密度表現は、自律型車両の安全で快適な計画立案及び制御を可能にするために、自律型車両ドライブ・スタックに提供され得る。
【選択図】
図1
【特許請求の範囲】
【請求項1】
環境の構成要素の3次元(3D)表面構造の第1の表現を、前記環境において自己物体の1つ又は複数のカメラを使用してキャプチャ・セッション中に生成された画像データに少なくとも部分的に基づいて、生成するステップと、
前記3D表面構造の前記第1の表現を高密度化することに少なくとも部分的に基づいて前記3D表面構造の第2の表現を生成するステップと、
前記キャプチャ・セッション中に前記3D表面構造の前記第2の表現を前記自己物体の制御構成要素に提供するステップと
を含む、方法。
【請求項2】
前記3D表面構造の前記第1の表現の前記高密度化が、前記3D表面構造のノイズの多い表現と前記3D表面構造の高密度化された表現との関係をモデル化するマルコフ確率場に少なくとも基づいて、前記3D表面構造の前記第2の表現を推定することを含む、請求項1に記載の方法。
【請求項3】
前記ノイズの多い表現としての前記第1の表現及び前記高密度化された表現としての前記第2の表現を使用するステップをさらに含む、請求項2に記載の方法。
【請求項4】
前記3D表面構造の前記第1の表現が、第1の2次元(2D)高さマップを含み、前記3D表面構造の前記第2の表現が、第2の2D高さマップを含み、前記第2の表現の前記生成が、前記第1の2D高さマップを所与として最大事後確率(MAP)推定を実行して前記第2の2D高さマップを推定することを含む、請求項1に記載の方法。
【請求項5】
ノードの第2の層に接続されたノードの第1の層を有する3次元(3D)グリッドを使用して前記3D表面構造をモデル化する無向グラフで前記3D表面構造を表すステップをさらに含み、前記第1の層の前記ノードが前記3D表面構造の前記第1の表現の画素を表し、前記第2の層の前記ノードが前記3D表面構造の前記第2の表現の画素を表し、前記3D表面構造の前記第1の表現の前記高密度化が、前記無向グラフに少なくとも基づく、請求項1に記載の方法。
【請求項6】
前記3D表面構造の前記第1の表現が、第1の投影画像を含み、前記3D表面構造の前記第2の表現が、第2の投影画像を含み、前記第2の投影画像の前記生成が、前記第1の投影画像と前記第2の投影画像との関係をモデル化するマルコフ確率場に少なくとも基づいて前記第2の投影画像内の1つ又は複数の画素のうちの少なくとも1つの画素の値を予測することを含む、請求項1に記載の方法。
【請求項7】
前記キャプチャ・セッション中に連続的タイム・スライスにおいて生成された前記画像データの連続的インスタンスに前記方法を繰り返し実行して前記3D表面構造の前記第2の表現の連続的インスタンスを生成するステップをさらに含む、請求項1に記載の方法。
【請求項8】
前記自己物体の前記制御構成要素が、
前記3D表面構造の前記第2の表現に少なくとも基づいて前記自己物体のサスペンション・システムを適応させること、
前記3D表面構造の前記第2の表現において検出された隆起を回避するように前記自己物体をナビゲートすること、又は
前記3D表面構造の前記第2の表現において検出された表面勾配に少なくとも基づいて加速又は減速を前記自己物体に適用すること
のうちの少なくとも1つを、前記キャプチャ・セッション中に実行するために使用される、請求項1に記載の方法。
【請求項9】
環境における車両の動作中に前記車両の1つ又は複数のカメラを使用して生成された画像データを受信する、及び前記環境における前記車両の前記動作中に前記環境内の路面を仮想的に再構成するための1つ又は複数の回路
を備えるプロセッサであって、
前記1つ又は複数の回路が、前記画像データを使用して前記路面の第1の推定3D表面を生成すること、及び前記第1の推定3D表面構造を高密度化することによって前記路面の第2の推定3D表面構造を生成することによって、前記路面を仮想的に再構成する、プロセッサ。
【請求項10】
前記1つ又は複数の回路がさらに、前記第2の推定3D表面構造を表すデータに少なくとも部分的に基づいて前記車両を制御することになっている、請求項9に記載のプロセッサ。
【請求項11】
前記路面の前記第1の推定3D表面構造の前記高密度化が、
前記路面の前記3D表面構造のノイズの多い表現と前記路面の前記3D表面構造の高密度化された表現との関係をモデル化するマルコフ確率場に少なくとも基づいて前記路面の前記第2の推定3D表面構造を生成することと、
前記ノイズの多い表現としての前記第1の推定3D表面及び前記高密度化された表現としての前記第2の推定3D表面構造を使用することと
を含む、請求項9に記載のプロセッサ。
【請求項12】
前記路面の前記第1の推定3D表面構造が、第1の2次元(2D)高さマップを含み、前記路面の前記第2の推定3D表面構造が、第2の2D高さマップを含み、前記路面の前記第2の推定3D表面構造の前記生成が、前記第1の2D高さマップを所与として最大事後確率(MAP)推定を実行して前記第2の2D高さマップを生成することを含む、請求項9に記載のプロセッサ。
【請求項13】
前記1つ又は複数の回路がさらに、
ノードの第2の層に接続されたノードの第1の層を有する3次元(3D)グリッドで前記路面をモデル化する無向グラフの表現にアクセスすることを行うことになっており、前記第1の層の前記ノードが、前記路面の前記第1の推定3D表面構造の画素を表し、前記第2の層の前記ノードが、前記路面の前記第2の推定3D表面構造の画素を表し、
前記路面の前記第1の推定3D表面構造の前記高密度化が、前記無向グラフに少なくとも基づく、
請求項9に記載のプロセッサ。
【請求項14】
前記路面の前記第1の推定3D表面構造が、第1の投影画像を含み、前記路面の前記第2の推定3D表面構造が、第2の投影画像を含み、前記第2の投影画像の前記生成が、前記第1の投影画像と前記第2の投影画像との関係をモデル化するマルコフ確率場に少なくとも基づいて前記第2の投影画像内の1つ又は複数の画素の各画素の値を予測することを含む、請求項9に記載のプロセッサ。
【請求項15】
前記1つ又は複数の回路がさらに、
前記車両の前記動作中に連続的タイム・スライスにおいて生成された前記画像データの連続的インスタンスを繰り返し評価して前記路面の前記第2の推定3D表面構造の連続的インスタンスを生成する
ことになっている、請求項9に記載のプロセッサ。
【請求項16】
前記1つ又は複数の回路が、
前記路面の前記第2の推定3D表面構造を表す前記データに少なくとも基づいて前記車両のサスペンション・システムを適応させること、
前記路面の前記第2の推定3D表面構造を表す前記データから検出された隆起を回避するように前記車両をナビゲートすること、或いは
前記路面の前記第2の推定3D表面構造を表す前記データから検出された表面勾配に少なくとも基づいて前記車両に加速又は減速を適用すること
のうちの少なくとも1つに基づいて前記車両を制御することになっている、請求項9に記載のプロセッサ。
【請求項17】
1つ又は複数の処理ユニットと、
前記1つ又は複数の処理ユニットによって実行されるとき、
環境の構成要素を表す3次元(3D)表面構造の第1の表現を、前記環境において自己物体の1つ又は複数のカメラからの画像データを使用して生成すること、
前記第1の表現と高密度化された表現との関係をモデル化するマルコフ確率場に少なくとも基づいて前記3D表面構造の前記高密度化された表現を生成すること、及び
前記3D表面構造の前記高密度化された表現を前記自己物体の制御構成要素に提供すること
を含む動作を前記1つ又は複数の処理ユニットに実行させる命令を記憶する1つ又は複数のメモリ・ユニットと
を備える、システム。
【請求項18】
前記マルコフ確率場が、前記3D表面構造の前記高密度化された表現のノイズの多い表現として前記第1の表現を使用して、前記関係をモデル化する、請求項17に記載のシステム。
【請求項19】
前記3D表面構造の前記第1の表現が、第1の2次元(2D)高さマップを含み、前記3D表面構造の前記高密度化された表現が、高密度化された2D高さマップを含み、前記高密度化された表現の前記生成が、前記マルコフ確率場及び前記第1の2D高さマップを所与として最大事後確率(MAP)推定を実行して前記高密度化された2D高さマップを推定することを含む、請求項17に記載のシステム。
【請求項20】
前記マルコフ確率場が、ノードの第2の層に接続されたノードの第1の層を有する3次元(3D)グリッドを使用して前記3D表面構造をモデル化する無向グラフで前記3D表面構造を表し、前記第1の層の前記ノードが、前記3D表面構造の前記第1の表現の画素を表し、前記第2の層の前記ノードが、前記3D表面構造の前記高密度化された表現の画素を表し、前記3D表面構造の前記第1の表現の前記高密度化が、前記無向グラフに少なくとも基づく、請求項17に記載のシステム。
【請求項21】
前記自己物体の前記制御構成要素が、
前記3D表面構造の前記高密度化された表現に少なくとも基づいて前記自己物体のサスペンション・システムを適応させること、
前記3D表面構造の前記高密度化された表現において検出された隆起を回避するように前記自己物体をナビゲートすること、或いは
前記3D表面構造の前記高密度化された表現において検出された表面勾配に少なくとも基づいて加速又は減速を前記自己物体に適用すること
のうちの少なくとも1つを実行するように構成された、請求項17に記載のシステム。
【請求項22】
前記システムが、
自律又は半自律マシンの制御システム、
自律又は半自律マシンの知覚システム、
シミュレーション動作を実行するためのシステム、
深層学習動作を実行するためのシステム、
エッジ・デバイスを使用して実装されるシステム、
ロボットを使用して実装されるシステム、
1つ又は複数の仮想マシン(VM)を組み込むシステム、
データ・センタにおいて少なくとも部分的に実装されるシステム、或いは
クラウド計算資源を使用して少なくとも部分的に実装されるシステム
のうちの少なくとも1つに含まれる、請求項17に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
自律システム及びアプリケーションのための人工知能を使用した点群高密度化を有する3D表面再構成
【背景技術】
【0002】
監視なしに自律的に、安全に、快適に車両を運転するためのシステムを設計することは、非常に難しい。自律型車両は、周囲の3次元(3D)環境を通して車両の進路に沿ってナビゲートするために、注意深い運転者-複雑な環境を移動し、静止した障害物を識別し、それに反応する驚くべき能力を有する知覚及び活動システムを用いる-に匹敵する機能を実行する能力を少なくとも有するべきである。したがって、環境の部分を検出する能力は、しばしば、自律運転知覚システムにとって極めて重大である。自律型車両の動作環境は、幹線道路環境から複雑な形状を有する複雑なシーンを特徴とする準都市及び都市設定まで広がり始めているので、この能力はますます重要になっている。
【0003】
3D環境の1つの重要な構成要素は、3D路面である。3D路面の知識は、自律型車両が快適で安全な運転体験を提供することを可能にする。たとえば、自律型車両は、現在の路面にマッチするにように車両のサスペンション・システムを適応させ得る(たとえば、道路の凹凸を補正することによって)。別の実例では、自律型車両は、道路の隆起(たとえば、くぼみ、穴)を回避するようにナビゲートし得る。さらに別の実例では、自律型車両は、道路内の近付いている表面勾配に基づいて早期の加速又は減速を適用し得る。これらの機能のいずれも、安全性を高める、車両の寿命を改善する、エネルギ効率を改善する、及び/又はスムーズな運転体験を提供するのに役立ち得る。
【0004】
路面の構造を推定する1つの方法は、3D再構成である。3D路面再構成の現存する手法は、LiDARセンサ又はカメラのいずれかに依拠する。LiDARセンサを使用する従来の技法は、レーザー・パルスを放射し、路面からの反射信号を検出して道路上の3D点を再構成する。しかしながら、LiDARセンサは、高価であり、制限された範囲を有し、それらの精度は、自律運転におけるある種のアプリケーションには十分でないことがある。カメラを使用する従来の技法は、多視点ジオメトリに依拠して3Dエンティティを再構成する。しかしながら、カメラを用いる従来の再構成技法は、高密度な測定値を効率的に計算することができず、内挿又は平面フィッティングなどの従来の後処理技法は、しばしば、現実世界に存在する複雑な路面の十分に正確なモデルを提供するのに不十分である。したがって、自律運転アプリケーションのための改良された3D路面再構成技法が必要とされている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国非仮特許出願第16/818,551号
【特許文献2】米国非仮特許出願第17/187,350号
【特許文献3】米国仮特許出願第62/514,404号
【特許文献4】米国非仮特許出願第16/514,404号
【特許文献5】米国特許出願第16/101,232号
【発明の概要】
【発明が解決しようとする課題】
【0006】
本開示の実施例は、3D表面推定に関する。いくつかの実施例において、道路の3D表面構造(3D路面)などの3D表面構造は、3D表面構造の3D点群又は他の表現を生成するために、観測及び推定され得る。表現は、低密度であり得るので、1つ又は複数の高密度化技法が、自律型車両の安全で快適な計画立案及び制御を可能にするために自律型車両ドライブ・スタックに提供され得る、3D表面構造の高密度表現を生成するために適用され得る。
【課題を解決するための手段】
【0007】
例示的実施例において、1つ又は複数のカメラが、車両若しくは他の物体に固定され又は他の方法でそこに配置され得、車両又は物体が3D環境を通してナビゲートする(たとえば、道路に沿って)とき、3D環境の画像をキャプチャするために使用され得、任意の適切な3D構造推定技法が、3D路面などの対象の3D表面構造の表現を生成するために、適用され得る。3D表面構造の表現は、たとえば、マルコフ確率場及び/又はディープ・ニューラル・ネットワーク(DNN)を使用して、高密度化され得る。マルコフ確率場を使用する例示的高密度化技法において、低密度及び高密度投影画像(たとえば、高さマップ)は、無向グラフでモデル化され得、最大事後確率(MAP:Maximum a Posterior)推定は、低密度値を所与として最も可能性の高い高密度値を推定するために使用され得る。DNNを使用する例示的高密度化技法において、低密度投影画像は、対応する高密度投影画像を予測するためにDNNに供給され得る。そのようなDNNのトレーニング・データは、様々な方法で生成され得、低密度表現を所与として、3D表面構造の高密度表現を予測するようにDNNをトレーニングするために使用され得る。トレーニング・データを生成するための例示的技法には、1)仮想センサ・データのフレーム、セグメント化マスク、及び深度図のレンダリング、2)3D路面のパラメトリック数学モデリング、3)単一のLiDARセンサからの現実センサ・データの収集及び注釈付け、及び/又は4)複数のLiDARセンサから蓄積された現実センサ・データの収集及び注釈付けが含まれる。
【0008】
そのようなものとして、本明細書に記載の技法が、3D路面などの3D表面を観測及び再構成するために使用され得、3D表面構造(及び/又は対応する信頼性値)の表現が、自律型車両の安全で快適な計画立案及び制御を可能にするために自律型車両ドライブ・スタックに提供され得る。たとえば、自律型車両は、現在の路面にマッチするにように車両のサスペンション・システムを適応させることができる(たとえば、道路の凹凸を補正することによって)。別の実例では、自律型車両は、道路内の隆起(たとえば、くぼみ、穴)を回避するようにナビゲートすることができる。さらに別の実例では、自律型車両は、道路内の近付いている表面勾配に基づいて早期の加速又は減速を適用することができる。これらの機能のいずれも、安全性を高める、車両の寿命を改善する、エネルギ効率を改善する、及び/又はスムーズな運転体験を提供する働きをし得る。
【0009】
本概要は、発明を実施するための形態においてさらに後述する簡略化された形での概念の選択を紹介するために提供される。本概要は、主要な特徴又は必須の特徴を特定することは意図されていない。
【0010】
3D表面推定のための本システム及び方法について、添付の図面を参照して、以下に詳しく説明する。
【図面の簡単な説明】
【0011】
【
図1】本開示のいくつかの実施例による、例示的3D表面再構成パイプラインを示すデータ流れ図である。
【
図2】本開示のいくつかの実施例による、例示的3D構造推定器を示す図である。
【
図3】本開示のいくつかの実施例による、例示的検出高密度化装置を示す図である。
【
図4】本開示のいくつかの実施例による、低密度高さマップと高密度高さマップとの関係をモデル化する例示的無向グラフを示す図である。
【
図5】本開示のいくつかの実施例による、例示的深層学習モデル表面推定器を示すデータ流れ図である。
【
図6】本開示のいくつかの実施例による、複数の入力ヘッドを有する深層学習モデルを含む例示的深層学習モデル表面推定器を示すデータ流れ図である。
【
図7】本開示のいくつかの実施例による、キャプチャ・セッション中に3次元(3D)表面構造の表現を生成するための方法を示す流れ図である。
【
図8】本開示のいくつかの実施例による、マルコフ確率場に少なくとも基づいて3D表面構造の高密度化された表現を生成するための方法を示す流れ図である。
【
図9】本開示のいくつかの実施例による、1つ又は複数のニューラル・ネットワークを使用して推定された3D路面構造に少なくとも部分的に基づいて車両を制御するための方法を示す流れ図である。
【
図10】本開示のいくつかの実施例による、シミュレーション環境を使用する例示的トレーニング・データ生成パイプラインを示すデータ流れ図である。
【
図11】本開示のいくつかの実施例による、所望の表面の例示的パラメトリック数学モデルのイラストレーションである。
【
図12】本開示のいくつかの実施例による、収集された現実世界データを使用する例示的グラウンド・トゥルース生成パイプラインを示すデータ流れ図である。
【
図13A】本開示のいくつかの実施例による、例示的LiDARスキャンからのLiDARデータのイラストレーションである。
【
図13B】本開示のいくつかの実施例による、複数のLiDARスキャンから蓄積されたLiDARデータのイラストレーションである。
【
図14】本開示のいくつかの実施例による、シミュレーション画像データを使用して3D表面構造の高密度化された表現を生成するように1つ又は複数のニューラル・ネットワーク(NN)をトレーニングするための方法を示す流れ図である。
【
図15】本開示のいくつかの実施例による、トレーニング・データセットの合成3D路面の不完全なグラウンド・トゥルース表現を生成するための方法を示す流れ図である。
【
図16】本開示のいくつかの実施例による、キャプチャ・セッション中にキャプチャされた画像データ及びLiDARデータを使用して3D表面構造の高密度化された表現を生成するように1つ又は複数のニューラル・ネットワーク(NN)をトレーニングするための方法を示す流れ図である。
【
図17A】本開示のいくつかの実施例による、例示的自律型車両のイラストレーションである。
【
図17B】本開示のいくつかの実施例による、
図17Aの例示的自律型車両のカメラ位置及び視野の一実例である。
【
図17C】本開示のいくつかの実施例による、
図17Aの例示的自律型車両の例示的システム・アーキテクチャのブロック図である。
【
図17D】本開示のいくつかの実施例による、クラウドベースのサーバと
図17Aの例示的自律型車両との通信のためのシステム図である。
【
図18】本開示のいくつかの実施例を実装する際に使用するのに適した例示的計算デバイスのブロック図である。
【
図19】本開示のいくつかの実施例を実装する際に使用するのに適した例示的データ・センタのブロック図である。
【発明を実施するための形態】
【0012】
3次元(3D)表面推定に関連するシステム及び方法が、開示される。たとえば、本開示は、自律型車両、半自律型車両、ロボット、及び/又は他の物体タイプによって使用するための、環境の道路又は他の構成要素の3D表面構造を再構成するシステム及び方法について説明する。本開示は、例示的自律型車両1700(或いは、本明細書で「車両1700」又は「自己車両1700」と称され、その実例は
図17A~17Dに関して説明される)に関して説明されることがあるが、これは限定を意図していない。たとえば、本明細書に記載のシステム及び方法は、非自律型車両、半自律型車両(たとえば、1つ又は複数の適応型運転者支援システム(ADAS:adaptive driver assistance system)における)、有人及び無人ロボット又はロボティクス・プラットフォーム、倉庫車両、オフロード車両、1つ又は複数のトレーラに連結された車両、飛行船舶、ボート、シャトル、緊急対応車両、オートバイ、電気若しくは原動機付自転車、航空機、建設車両、潜水艦、ドローン、及び/又は、他の車両タイプによって使用されてもよいが、これに限定されない。加えて、いくつかの実施例は、自律運転のための3D表面構造推定に関して説明されることがあるが、これは限定を意図しておらず、本明細書に記載のシステム及び方法は、拡張現実、仮想現実、複合現実、ロボット工学、セキュリティ及び監視、自律若しくは半自律マシン・アプリケーション、及び/又は、3D表面構造推定が使用され得る他の技術空間において使用され得る。
【0013】
高いレベルにおいて、道路の3D表面構造(3D路面)などの3D表面構造は、3D表面構造の3D点群又は他の表現を生成するために、観測及び推定され得る。表現は、低密度であり得るので、1つ又は複数の高密度化技法が、自律型車両の安全で快適な計画立案及び制御を可能にするために自律型車両ドライブ・スタックに提供され得る、3D表面構造の高密度表現を生成するために適用され得る。
【0014】
例示的技法において、1つ又は複数のカメラが、車両又は他の物体に固定又は他の方法で配置され得、車両又は物体が3D環境を通してナビゲートする(たとえば、道路に沿って)とき、3D環境の画像をキャプチャするために使用され得、画像は、道路の3D表面構造を推定するために使用され得る。任意の適切な3D構造推定技法が、適用され得る。たとえば、SfM(Structure from Motion:運動からの構造)が、画像のシーケンスから3D構造を推定するために実行され得る、及び/又は、ステレオ・ビジョンが、複数のカメラによって及び/又は複数の視点からキャプチャされた画像から3D構造を推定するために、適用され得る。一般に、3D構造推定は、3D環境における検出された点の表現、たとえば、3D点群、を生成し得る。いくつかの実施例において、外れ値は、統計的又はクラスタリング技法を使用して、取り除かれる。場合によっては、自由空間推定が、道路又は他の走行可能な空間を検出するために、キャプチャされた画像に適用され得、検出された道路又は走行可能な空間のセグメント化マスク又は他の表現が、路面上の3D点を選択するために使用され得る(たとえば、路面外の点は、フィルタで取り除かれ得る)。結果は、道路の3D表面構造の表現、たとえば、3D点群、でもよい。
【0015】
3D構造推定技法の精度及び計算能力の制限により、道路の3D表面構造の表現は、低密度であり得る。そのようなものとして、いくつかの実施例において、3D表面構造の表現は、マルコフ確率場及び/又はディープ・ニューラル・ネットワーク(DNN)を、非限定的実例として、使用して、高密度化され得る。場合によっては、3D表面構造は、2D高さマップとして表され得る。たとえば、低密度3D点群は、低密度検出を表す投影画像(たとえば、トップ・ダウン投影画像)を形成するために、投影され得、投影画像(たとえば、2D高さマップ)は、欠損値を埋めるように高密度化され得る。
【0016】
マルコフ確率場を使用する例示的高密度化技法において、低密度及び高密度投影画像が、無向グラフでモデル化され得、最大事後確率(MAP)推定が、低密度値を所与として最も可能性の高い高密度値を推定するために使用され得る。たとえば、高密度投影画像(たとえば、高密度2D高さマップ)内の各画素は、近隣のノード(たとえば、各近隣画素の1つのエッジ)に接続するエッジを有する対応するノードでモデル化され得る。低密度投影画像(たとえば、低密度2D高さマップ)の各画素は、高密度投影画像のノイズの多い観測と考えることができ、高密度投影画像から対応するノード(画素)に接続するエッジを有するノードとしてモデル化され得る。たとえば、グラフは、グリッドの2つの層を形成するノードを有すると仮定し、そこで、最下層は、グラウンド・トゥルース(高密度投影画像)に対応し、最上層は、ノイズの多い観測(低密度投影画像)に対応する。グラフ内の各ノードは、ランダム変数に対応すると仮定すると、グラフのマルコフ確率場は、グラフ内のノードに対応するランダム変数の結合確率分布をモデル化する又は他の方法で表すことができる。結合確率分布及び1セットの観測値(低密度投影画像からの)を知っていると、高密度投影画像の値(たとえば、高密度2D高さマップの各画素の高さ推定値)は、反復条件付きモード、ガウス確率伝搬法などの任意の知られているマップ推定アルゴリズムを使用して、推定され得る。したがって、マルコフ確率場は、3D表面構造の表現を高密度化するために、使用され得る。
【0017】
いくつかの実施例において、ディープ・ニューラル・ネットワーク(DNN)は、3D表面構造の高密度表現の値を予測するために使用され得る。たとえば、低密度3D点群が、低密度検出を表す低密度投影画像(たとえば、トップ・ダウン投影画像)を形成するように投影され得、低密度投影画像が、高密度投影画像を予測するためにDNN、たとえば、畳み込みニューラル・ネットワーク(CNN)、に送り込まれ得る。いくつかの実施例において、DNNは、異なる出力を予測する1つ又は複数のヘッド(又は層の少なくとも部分的に個別のストリーム)に接続された共通のトランク(又は層のストリーム)を含み得る。たとえば、回帰ヘッドは、3D表面構造に関する特定のタイプの情報、たとえば、各画素の高さ値、を回帰させ得る。いくつかの実施例において、信頼性ヘッドは、回帰ヘッドによって予測された対応する回帰した値の信頼性を表す値を有する信頼性マップを予測し得る。そのようなものとして、以下でさらに詳しく説明するように、DNNは、3D表面構造の高密度表現(高密度2D高さマップなどの)及び/又は対応する信頼性マップを予測するようにトレーニングされ得る。
【0018】
いくつかの実施例において、低密度投影画像は、DNNに入力される前に、正規化され得る。たとえば、2D高さマップは、そこから2D高さマップが導出された画像をキャプチャしたカメラの高さに対応するバイアスを含む高さ値を記憶し得る。そのようなものとして、いくつかの実施例において、2D高さマップ内の高さ値の平均の高さが、計算され、バイアスを取り除くためにすべての高さ値から差し引かれ、DNNが学習するのをより容易にし得る。バイアスがDNN入力から取り除かれる実施例において、バイアスは、DNNの予測された出力に(たとえば、回帰ヘッドによって予測された値に)再導入(たとえば、追加)され得る。
【0019】
いくつかの実施例において、DNNは、別個の入力の複数の入力ヘッド(又は層の少なくとも部分的に個別のストリーム)を含み得る。たとえば、DNNは、低密度投影画像を受け入れる第1の入力ヘッドと、RGB画像、たとえば、低密度投影画像がそこから生成された透視図画像、を受け入れる第2の入力ヘッドとを含み得る。このようにして、DNNは、基礎的高密度道路プロファイルの2つの異なるビュー(たとえば、トップ・ダウン及び視点、3D点群空間及び2D画像空間など)から学習し得る。そのような実例において、複数の入力ヘッドは、複数の入力ヘッドを融合させる共通のトランクに接続され得る。そのようなものとして、DNNは、より優れた予測のために異なるソースからの情報を融合することによってマルチモーダル学習を実行するために使用され得る。
【0020】
いくつかの実施例において、DNNは、時間的情報を活用するために1つ又は複数の再帰層(たとえば、ゲート付き再帰ユニット、長・短期記憶)を含み得る。1つ又は複数の再帰層を含むことは、経時的により優れた予測及びより安定した高密度化結果をもたらして、前のタイム・スライスからの情報をDNNが活用することを可能にし得る。
【0021】
DNNのトレーニング・データが、様々な方法で生成され得、低密度表現を所与として、3D表面構造の高密度表現を予測するようにDNNをトレーニングするために使用され得る。一般に、現実世界データ及び/又は仮想データが、トレーニング・データ(たとえば、3D表面構造の低密度入力データ及び/又はグラウンド・トゥルース表現)を導出するために、収集及び使用され得る。トレーニング・データのタイプは、DNNの実装形態に依拠し得る。たとえば、入力トレーニング・データは、3D表面構造の低密度表現(たとえば、低密度高さマップ)及び/又は何らかの他の視点からの画像データ(たとえば、透視図の画像)を含み得る。グラウンド・トゥルース・トレーニング・データは、3D表面構造の高密度表現(たとえば、高密度高さマップ)及び/又はセグメント化マスク(たとえば、道路又は他の走行可能な空間などの所望の表面を識別する)を含み得る。
【0022】
トレーニング・データを生成するための例示的技法は、1)仮想センサ・データのフレーム、セグメント化マスク、及び深度図のレンダリング、2)3D路面のパラメトリック数学モデリング、3)単一のLiDARセンサからの現実センサ・データの収集及び注釈付け、及び/又は4)複数のLiDARセンサから蓄積された現実センサ・データの収集及び注釈付けを含む。
【0023】
トレーニング・データを生成するための例示的技法において、シミュレーションが、現実的運転シナリオを表す仮想センサ・データ(たとえば、画像)のフレームをレンダリングするために及び対応するセグメント化マスク(たとえば、道路又は他の走行可能な空間などの所望の表面を識別するグラウンド・トゥルース・セグメント化マスク)及び深度図を生成するために、実行され得る。任意の所与のレンダリングされたフレームについて、3D表面構造(たとえば、3D路面)が、本明細書に記載のように、フレームから推定され得、結果として生じる低密度値は、入力トレーニング・データとして使用され得る、低密度投影画像(たとえば、2D高さマップ)から投影され得る。
【0024】
対応するグラウンド・トゥルース高密度投影画像を生成するために、仮想センサの視点からレンダリングされた任意の所与のフレームについて、3D構造の3D点群又は他の表現が、仮想センサの位置及び向きを使用する3D環境への対応する深度図からの範囲値の投影解除によって、生成され得る。セグメント化マスクが、路面上の3D点を選択するために使用され得る(たとえば、路面外の点は、フィルタで取り除かれ得る)。追加で又は別法として、セグメント化マスクが、路面上にある深度図からの点を選択するために使用され得、選択された点は、路面上の3D点を生成するために3D環境への投影を解除され得る。場合によっては、3D路面の結果的表現は、まだ低密度でもよい。そのようなものとして、いくつかの実施例において、欠損値は、三角形分割アルゴリズムを使用して、内挿され得る。たとえば、ドロネ三角形分割が、2Dにおいて(たとえば、3D点を投影して投影画像を形成すること及び投影画像においてドロネ三角形分割を実行することによって)又は3Dにおいて(3D点群を囲む三角形の表面メッシュを計算することによって)実行され得、点は、グラウンド・トゥルース高密度投影画像の所望の数の点を生成するために、三角形からサンプリングされ得る。たとえば、グラウンド・トゥルース2D高さマップは、投影された高さマップにおいて2Dドロネ三角形分割を実行することによって、又は3Dドロネ三角形分割を実行することによって生成された表面メッシュからサンプリングされた3D点を投影することによって、生成された三角形からサンプリングされ得る。そのようなものとして、高密度投影画像及び/又はセグメント化マスクが、グラウンド・トゥルースとして使用され、入力低密度投影画像とペアにされ、トレーニング・データセットに含まれ得る。
【0025】
トレーニング・データを生成するための別の例示的技法において、合成トレーニング・データは、3D路面のパラメトリック数学モデリングを使用して、生成され得る。例示的実施例において、合成3D路面は、縦値(たとえば、0から300m)を最初にサンプリングし、次いで、道路方向の変化(たとえば、左カーブ、右折など)をシミュレーションするためにサンプリングされた多項式定数の値を使用して、縦値の二次多項式として横の値を計算することによって、生成され得る。合成3D路面の高さは、表面高さの変化をシミュレーションするために基底の数、特定の基底の重み、及び特定の基底の周波数の異なるサンプル値を使用して、フーリエ基底の線形結合として計算され得る。これらのステップは、横の表面勾配の変化をシミュレーションするために、横3D曲線とグラウンド・プレーンとの間の角度のサンプル値を使用する縦3D曲線上の各点を通る横3D曲線を描くことによって3D表面まで拡張され得る、縦3D曲線を生成する。各横3D曲線は、合成グラウンド・トゥルース投影画像(たとえば、グラウンド・トゥルース2D高さマップ)を形成するように投影され得る、高密度3D点群を生成するためにサンプリングされ得る。
【0026】
入力トレーニング・データの対応する低密度投影画像を生成するために、知られているパターンが、観測されていない値をシミュレーションするために画素値のサブセットを相殺する(たとえば、それらの画素値ゼロに設定して)ためにグラウンド・トゥルース投影画像に適用され得る。たとえば、現実世界データのフレームが、収集され得、3D表面構造(たとえば、3D路面の)が、各フレームから推定され得(本明細書に記載のように)、推定3D構造(たとえば、3D点群)が、投影画像(たとえば、低密度2D高さマップ)を形成するために投影され得、投影画像のどの画素が存在する又は観測されたかを表す対応するバイナリ・マップが、生成され得る。複数のバイナリ・マップが、現実世界データから生成され得、バイナリ・マップのうちの1つが、ランダムに選択され得、対応する合成低密度投影画像を生成するために、グラウンド・トゥルース投影画像を掛けられ得る。そのようなものとして、低密度投影画像が、各グラウンド・トゥルース投影画像について生成され得、合成低密度及びグラウンド・トゥルース投影画像のペアが、トレーニング・データセットに含まれ得る。
【0027】
追加で又は別法として、トレーニング・データは、現実世界データから生成され得る。たとえば、1つ又は複数の車両が、現実世界(たとえば、物理)環境を通してナビゲートしながら、装備されたセンサ、たとえば、1つ又は複数のカメラ及びLiDARセンサ、からセンサ・データを収集し得る。グラウンド・トゥルース・トレーニング・データを生成するために、収集されたLiDARデータ(たとえば、LiDAR点群)は、平滑化され得、外れ値が、取り除かれ得、LiDARデータは、画像データの対応するフレームと時間的に及び/又は空間的に整列させられ得る。いくつかの実施例において、収集されたLiDARデータを高密度化するために、欠損値が、ドロネ三角形分割を使用して内挿され得る、及び/又は、複数のLiDARセンサによって同じタイム・スライスからトリガ及び/又はキャプチャされたLiDARデータが、収集されたデータを高密度化するために、蓄積され得る。LiDARデータは、対象表面(たとえば、3D路面)上の3D点を識別するためにラベル付けされ得、識別された3D点の表現(たとえば、3D点群、投影画像)は、グラウンド・トゥルース・トレーニング・データとして指定され得る。いくつかの実施例において、画像データの対応するフレームは、所望の表面を識別するグラウンド・トゥルース・セグメント化マスクを生成するために、分類され得る。
【0028】
対応する入力トレーニング・データを生成するために、3D表面構造(たとえば、3D路面)は、画像データのフレームから推定され得(本明細書に記載のように)、推定された3D構造の表現(たとえば、低密度3D点群、低密度投影画像)は、入力トレーニング・データとして指定され得る。そのようなものとして、対応する低密度投影画像、画像データのフレーム、高密度投影画像、及び/又はセグメント化マスクは、ともにグループ化され、トレーニング・データセットに含まれ得る。
【0029】
トレーニング中に、任意の適切な損失関数が、予測された出力をグラウンド・トゥルースと比較してDNNを更新するために、使用され得る。DNNが、高さマップを予測する回帰ヘッドを含む、例示的実施例において、損失関数は、予測高さマップとグラウンド・トゥルース高さマップとを比較し得、高密度化されることになっている領域外で生じる予測に基づいてDNNへの更新を効果的に相殺して、高密度化されることになっている表面を示すグラウンド・トゥルース・セグメント化マスクを掛け得る。本例では、DNNは、グラウンド・トゥルース高さマップ及びセグメント化マスクを使用して、高さマップを予測することを学習し得る。DNNが、高さマップを予測する回帰ヘッド及び高さマップに対応する信頼性マップを予測する信頼性ヘッドを含む、別の実施例において、損失関数は、予測高さ及びグラウンド・トゥルース高さを比較し、予測される信頼性値に基づいて補正し得る。本例では、DNNは、グラウンド・トゥルース高さマップから高さマップと信頼性マップとの両方を予測することを学習し得る。そのようなものとして、DNNは、3D構造の低密度表現と高密度表現とのマッピングを学習することによって、高密度化の実行の仕方を学習し得る。
【0030】
そのようなものとして、本明細書に記載の技法が、3D路面などの3D表面を観測及び再構成するために使用され得る、3D表面構造(及び/又は対応する信頼性値)の表現が、自律型車両の安全で快適な計画立案及び制御を可能にするために自律型車両ドライブ・スタックに提供され得る。一般に、本明細書に記載の技法は、先行再構成技法よりも路面のより正確な表現を生成し得る。さらに、本技法は、先行の基底付き再構成技法とは異なり、ある種の自律運転アプリケーションについて十分な精度及び範囲を有する路面の表現を生成するために使用され得る。そのようなものとして、本技法を使用して生成される路面の表現は、自律運転における改善されたナビゲーション、安全性、及び快適性を可能にし得る。たとえば、自律型車両は、道路内の隆起(たとえば、くぼみ、穴)を回避するように車両をナビゲートするために、及び/又は近付いている表面勾配に基づく早期の加速又は減速を適用するために、現在の路面にマッチするにように車両のサスペンション・システムを適応させる(たとえば、道路の凹凸を補正することによって)態勢がより整い得る。これらの機能のいずれも、安全性を高める、車両の寿命を改善する、エネルギ効率を改善する、及び/又はスムーズな運転体験を提供する働きをし得る。
【0031】
例示的3D表面再構成パイプライン
図1を参照すると、
図1は、本開示のいくつかの実施例による、3D表面再構成システムの例示的3D表面再構成パイプライン100を示すデータ流れ図である。本明細書に記載のこの及び他の配置は単に実例として明記されている、ということを理解されたい。他の配置及び要素(たとえば、マシン、インターフェース、機能、順番、機能のグループ分けなど)が、示されたものに加えて又はこれらに代わって使用されてもよく、いくつかの要素はともに除外されてもよい。さらに、本明細書に記載の要素の多くは、個別の又は分散された構成要素として又は他の構成要素と併せて、並びに任意の適切な組合せ及び場所において、実装され得る機能エンティティである。エンティティによって実行されるものとして本明細書に記載された様々な機能は、ハードウェア、ファームウェア、及び/又はソフトウェアによって実施され得る。たとえば、様々な機能が、メモリに記憶された命令を実行するプロセッサによって実施され得る。
【0032】
高いレベルにおいて、パイプライン100は、3次元(3D)環境の画像データ102に基づいて、観測された3D表面構造の表現、たとえば、3D路面又は他の環境の部分の表現、を推定及び生成し得る。画像データ102は、自己物体又は自己アクタが3D環境を通してナビゲートするとき、自己物体又は自己アクタ(たとえば、車両1700とも称される、
図17A~17Dの自律型車両1700)の1つ又は複数のカメラ101によってキャプチャされ得る。3D構造推定器105は、3D点群を含み得る、対象の3D表面構造の表現(たとえば、低密度検出データ110)を生成するために、画像データ102を処理し得る。推定3D表面構造は、低密度でもよいので、検出高密度化装置115は、2次元(2D)トップ・ダウン高さマップ及び/又は3D点群を含み得る、3D表面構造のより高密度な表現(たとえば、高密度検出データ120)を生成するために、低密度検出データ110を高密度化し得る。高密度検出データ120は、観測された3D表面構造、たとえば、3D路面又は他の環境の部分、を表し得る。そのようなものとして、観測された3D表面構造の高密度検出データ120又は他の表現は、3D環境内での1つ又は複数の動作、たとえば、進路計画立案、障害物又は隆起回避、現在の路面にマッチするように自己物体又は自己アクタのサスペンション・システムを適応させること、近付いている表面勾配に基づく早期の加速又は減速の適用、マッピング、及び/又はその他、を自己物体又は自己アクタが実行するのを助けるために、自己物体又は自己アクタの制御構成要素(たとえば、ソフトウェア・スタック122、及び/又は、コントローラ1736、ADASシステム1738、及び/又はSOC1704などの
図17A~17Dの自律型車両1700の構成要素)に提供され得、それらによって使用され得る。
【0033】
一般に、3D表面再構成は、任意の数及び任意のタイプのカメラ(たとえば、カメラ101)、たとえば、
図17A~17Dの自律型車両1700に関して後述されるもの、からの画像データ102を使用して、実行され得る。たとえば、カメラ101は、自己物体又は自己アクタの1つ又は複数のカメラ、たとえば、
図17A~17Dの自律型車両1700のステレオ・カメラ1768、ワイド・ビュー・カメラ1770(たとえば、魚眼カメラ)、赤外線カメラ1772、サラウンド・カメラ1774(たとえば、360度カメラ)、及び/又は長距離及び/又は中距離カメラ1798、を含み得、カメラ101は、自己物体又は自己アクタの周りの3D環境の画像データ102を生成するために使用され得る。複数のカメラが使用される実施例において、複数のカメラは、異なるカメラからの画像データ102(たとえば、画像)が共通の領域を表すように、それぞれの視野の重複部分を有する3D環境の共通の領域を見ることができる。
【0034】
3D構造推定器105は、SfM、ステレオ・ビジョン、及び/又は何らかの他の3D表面構造推定技法を使用して、画像データ102から特定の表面の3D構造(たとえば、低密度検出データ110)を推定する。SfM及びステレオ・ビジョンは、複数の画像から3D構造を推定する測距技法である。SfMは、画像のシーケンス(たとえば、同じカメラ101によってキャプチャされた)から3D構造を推定し、一方、ステレオ・ビジョンは、異なる視点から実質的に同時にキャプチャされた(たとえば、異なるカメラ101によって)複数の画像から3D構造を推定する。いくつかの実施例において、画像デワープ及び/又はひずみ補正が、3D構造の推定より前に画像データ102に適用される。セグメント化マスク又は他の分類データは、所望の表面、たとえば、路面、上にある推定3D構造から点を選択するために、使用され得る(画像データ102に分類データを重ね合わせることによって)。そのようなものとして、3D構造推定器105は、3D点群(たとえば、3D世界座標内の)を含み得る、所望の表面の3D構造の表現(たとえば、低密度検出データ110)を生成し得る。
【0035】
図2は、本開示のいくつかの実施例による、3D構造推定器105の例示的実装形態を示す図である。
図2において、3D構造推定器105は、SfM推定器210、ステレオ・ビジョン推定器230、外れ値リムーバ220、及び路面点セレクタ240を含む。
【0036】
SfM推定器210は、画像データ102から3D構造を推定するために、任意の知られているSfM技法を実行し得る。たとえば、SfM推定器210は、経時的に検出された特徴軌道から画像データ102において表された特徴の3D位置を再構成し得る。いくつかの実施例において、SfM推定器210は、特徴軌道の中間推定なしに3D位置の直接推定を実行し得る。一般に、インクリメンタルSfM、グローバルSfM、コア外SfM、及び/又はその他を含む、任意の知られているSfM技法が、適用され得る。そのようなものとして、SfM推定器210は、画像データ102において表された特徴の3D構造の表現を生成し得る。
【0037】
ステレオ・ビジョン推定器230は、異なる視点を表す画像データ102にステレオ・ビジョン(又はステレオ・アルゴリズム)を適用することによって、3D構造を推定し得る。たとえば、ステレオ・ビジョン推定器230は、複数のカメラ(たとえば、カメラ101)からの画像データ102を共通の画像空間又は平面へと投影することができ、深度の差(たとえば、深度に反比例し得る、画像座標における)を表し得る、視差マップを生成するための任意の適切なメトリックを使用して、投影画像データを比較することができる。視差マップは、複数のカメラの知られている場所及び向きを使用して、3D点群に投影され得る。そのようなものとして、ステレオ・ビジョン推定器230は、画像データ102において表された特徴の3D構造の表現を生成し得る。
【0038】
いくつかの実施例において、外れ値リムーバ220は、推定3D構造を評価し、外れ値を取り除くことができる。たとえば、推定3D構造が3D点群の形を取る、いくつかの実施例において、3D点群は、投影画像、たとえば、トップ・ダウン投影画像、を形成して点の列(たとえば、0.1メートルx0.1メートル・ビーム)を生み出すために、投影され得る。次いで、各列について、任意の適切な統計的又はクラスタリング技法が、列の代表点を識別するために、適用され得る。非限定的実例として、列内の点の中央又は平均値が、列の代表点として識別され得る。トップ・ダウン投影画像を実例とすると、各列内の点の中央又は平均の高さは、列の代表点の高さとして識別され得る。いくつかの実施例において、いくつかの他のクラスタリング技法が、3D点群からの点をグループ化する及び代表点(たとえば、クラスタ中心又は平均値)を識別するために、適用され得る。そのようなものとして、外れ値リムーバ220は、推定3D構造を識別された点で更新する、及び/又は外れ値を他の方法で検出する及び取り除くことができる。
【0039】
一般に、推定3D構造は、画像データ102に表された3D環境の部分及び3D環境内の物体の3D点を含み得る。そのようなものとして、路面点セレクタ240は、特定の対象表面、たとえば、3D路面又は他の環境部分、に属する点を識別し得る。たとえば、セグメント化マスク又は他の分類データが、生成又は他の方法で取得され得、路面点セレクタ240は、セグメント化マスク又は他の分類データを使用して点を選択し得る。
【0040】
さらに具体的には、いくつかの実施例において、物体検出、自由空間推定、及び/又は画像セグメント化が、所望のクラスの一部である画像データ102の領域(たとえば、画素)を分類、セグメント化、及び/又は予測するために、適用され得る(たとえば、3D推定器105又は何らかの他の構成要素によって)。たとえば、もう1つの深層学習モデル(たとえば、畳み込みニューラル・ネットワーク)が、走行可能な路面若しくは他のナビゲート可能な空間、他の環境の部分(たとえば、歩道、建物)、有生物体、及び/又は他のクラスに属する画素を表す1つ又は複数のセグメント化マスク及び/又は信頼性マップを予測するようにトレーニングされ得る。いくつかの実施例において、単一のカメラによってキャプチャされた個々の画像(たとえば、RBG画像)は、セグメント化及び/又は分類され得る。場合によっては、合成画像(たとえば、RBG画像)は、複数のカメラによってキャプチャされた画像をステッチすることによって、生成され得、合成画像は、セグメント化及び/又は分類され得る。そのようなものとして、セグメント化マスク又は道路若しくは走行可能な空間(若しくは、何らかの他の所望の表面)を線引きする若しくは表す他の分類データが、取得及び/又は生成され得る(たとえば、予測マスク又は信頼性マップから)。
【0041】
そのようなものとして、路面点セレクタ240は、セグメント化マスク又は他の分類データを使用して、セグメント化マスク又は他の分類データによって表されるクラスに属する推定3D構造から点を選択し得る。任意の適切な選択技法が、適用され得る。いくつかの実施例において、推定3D構造からの3D点は、セグメント化マスクへと背面投影され得(たとえば、そこからセグメント化マスクが生成された画像データ102をキャプチャしたカメラ101の知られている位置及び向きを使用して)、予測された領域内に着く投影された点が、選択され得る(及び/又は、予測された領域外に着く投影された点は、取り除かれ得る)。そのようなものとして、路面点セレクタ240は、所望の表面、たとえば、3D路面、に属する推定3D表面構造の点を生成する又は他の方法で識別することができる。外れ値除去を実行する実施例において、外れ値リムーバ220及び路面点セレクタ240が、任意の順序で呼び出され得る。推定3D表面構造の結果的表現(たとえば、低密度検出データ110)は、任意の形を取り得る、たとえば、3D点群。
【0042】
カメラ101によってキャプチャされた画像データ102を3D表面再構成が使用する、ある種の実施例が説明されているが、いくつかの実施例において、他のセンサ・データが、追加で又は別法として使用され得る。非限定的実例として、1つ又は複数のLiDARセンサ又はRADARセンサは、低密度検出データ110(たとえば、LiDAR又はRADAR点群)をキャプチャするために使用され得る。
【0043】
ここで
図1に戻ると、推定3D表面構造は、低密度でもよいので、検出高密度化装置115は、低密度検出データ110を高密度化して3D表面構造のより高密度な表現(たとえば、高密度検出データ120)を生成することができる。一般に、低密度検出データ110は、任意の適切な形を取り得る、たとえば、低密度3D点群。低密度検出データ110は、投影画像、たとえば、欠損値を有する2次元(2D)トップ・ダウン高さマップ0∈N
mxn、を形成するように投影され得る。表記N
mxnは、空間次元mxn(たとえば、画素における)を有する及び所望のグラウンド・サンプリング距離を有する投影画像(たとえば、オーバーヘッド画像)を表し、そこで、投影画像内の各画素は、浮動小数点値(たとえば、高さ値)を記憶し得る。この低密度2D高さマップは、3D表面構造の部分的なノイズの多い観測と見なされ得る。本例では、高密度検出データ120は、2Dトップ・ダウン高さマップg∈N
mxnの形を取る、又は他の方法でそれを表すことができ、検出高密度化装置115は、oを所与として、gを推定することによって、低密度検出データ110を高密度化することができる。いくつかの実施例において、検出高密度化装置115は、1つ又は複数のマシン学習モデル、たとえば、マルコフ確率場及び/又は1つ又は複数の深層学習モデル(たとえば、1つ又は複数のディープ・ニューラル・ネットワーク(DNN))、を使用して、この推定を実行し得る。3D表面構造の結果的表現(たとえば、高密度検出データ120)は、任意の適切な形を取り得る、たとえば、2D高さマップ及び/又は3D点群。
【0044】
図3は、本開示のいくつかの実施例による、検出高密度化装置115の例示的実装形態を示す図である。
図3において、検出高密度化装置115は、マルコフ確率場表面推定器310及び深層学習モデル表面推定器320を含む。
【0045】
いくつかの実施例において、マルコフ確率場表面推定器310は、低密度検出データ110を高密度化して3D表面構造のより高密度な表現(たとえば、高密度検出データ120)を生成することができる。たとえば、マルコフ確率場表面推定器310は、oを所与として、高密度2Dトップ・ダウン高さマップg(又は、他の高密度投影画像)を推定することによって、低密度2Dトップ・ダウン高さマップo(又は、他の低密度投影画像)を高密度化することができる。さらに具体的には、gとoとの関係は、マルコフ確率場などの確率モデルでモデル化され得、マルコフ確率場表面推定器310は、最大事後確率(MAP)推定を実行し、確率モデル及び1セットの観測値oを所与として最も可能性の高いgを推定することができる。いくつかの実施例において、マルコフ確率場(たとえば、無向グラフ)は、空間的依存性、たとえば、ある種の3D表面構造、たとえば、3D路面、内に存在するもの、をモデル化するそれの能力の確率モデルとして使用され得、そこで、表面のローカル領域は、しばしば、滑らかである。そのようなものとして、いくつかの実施例において、低密度高さマップoと高密度高さマップgとの関係は、無向グラフでモデル化され得る。
【0046】
図4は、本開示のいくつかの実施例による、低密度高さマップoと高密度高さマップgとの関係をモデル化する例示的無向グラフ400を示す図である。たとえば、高密度高さマップg内の各画素は、近隣のノードに接続するエッジ(たとえば、各近隣画素につき1つのエッジ)を有する対応するノード(たとえば、
図4のg
1、g
2、g
3、g
4)でモデル化され得る。いくつかの実施例において、g内の内部画素に対応するノードは、4つのエッジ(たとえば、水平に及び垂直に隣接するノードに接続する)、8つのエッジ(たとえば、水平に、垂直に、及び対角線上に隣接するノードに接続する)、又はその他を有し得る。
図4は、各対応するノードg
1、g
2、g
3、g
4が4つのエッジを有する、gにおける内部画素に対応する無向グラフの一部を示す。gにおけるエッジ画素に対応するノードは、3つのエッジ(たとえば、水平に及び垂直に隣接するノードに接続する)、5つのエッジ(たとえば、水平に、垂直に、及び対角線上に隣接するノードに接続する)、又はその他を有し得る。gにおける角の画素に対応するノードは、2つのエッジ(たとえば、水平に及び垂直に隣接するノードに接続する)、3つのエッジ(たとえば、水平に、垂直に、及び対角線上に隣接するノードに接続する)、又はその他を有し得る。
【0047】
さらに、低密度高さマップo内の各画素は、高密度高さマップgにおける対応する画素のノイズの多い観測と見なされ得る。したがって、低密度高さマップo内の各画素は、高密度高さマップgからの対応するノード(対応する画素を表す)に接続するエッジを有するノードでモデル化され得る。
図4は、ノードg
1、g
2、g
3、g
4(高密度高さマップg内の画素を表す)に接続されたノードo
1、o
2、o
3、o
4(低密度高さマップo内の画素を表す)を有する無向グラフの一部を示す。
【0048】
別の言い方をすると、いくつかの実施例において、モデル化されることになっている所望の表面は、所望の視点(たとえば、トップ・ダウン)から眺めることができ、2Dグリッドに分割され得、無向グラフは、ノードの2つの層を有する3Dグリッドで形成され得、各層は、2Dグリッド内の各セル又は交点のノードを有する。最下層は、グラウンド・トゥルース(たとえば、高密度高さマップg)に対応し得、最上層は、ノイズの多い観測(低密度高さマップo)に対応し得る。ノイズの多い観測は、低密度でもよいけれども、ノイズの多い観測に対応する層は、2Dグリッド内の各セル又は交点のノードを含み得る、ということに留意されたい。そのようなものとして、低密度高さマップo内の画素に対応するいくつかのノードは、対応する観測結果を有さない可能性がある。
【0049】
マルコフ確率場(たとえば、無向グラフ)で低密度高さマップoと高密度高さマップgとの関係をモデル化すると、モデル内の各ノードは、すべてのランダム変数の結合確率分布が以下のように表され得るような、ランダム変数と見なされ得る:
【数1】
ここで、Ψ(g
i,g
j)は、gにおける近隣画素間の高さ関係を表す対ポテンシャル項であり、φ(g
i,o
i)は、標高g
iと観測されたノイズの多い高さo
iとの関係を示す単項ポテンシャル項であり、zは、構成要素分布が合計で1になることを確実にする正規化定数である。
【0050】
いくつかの実施例において、gにおける近隣画素間の特別な依存性を表すために、対ポテンシャル項は、以下の形を取り得る:
Ψ(gi,gj)=exp(-wij(gi-gj)2) (方程式2)
ここで、wijは、さらに詳しく後述するように、近隣画素に対応するノード(gi,gj)間の重みを指定する。観測された画素からの貢献を表すために、oは、ノイズの多いバージョンのgであると仮定され得る:
oi=gi+ノイズ,画素iが観測された場合 (方程式3)
したがって、いくつかの実施例において、単項ポテンシャル項は、以下のように与えられ得る:
φ(gi,oi)=exp(-ci(gi-oi)2) (方程式4)
ここで、ciは、画素iの重みを指定し、ciは、画素iが観測されない場合、0に設定され得る。一般に、任意の適切な重みが、たとえば、(たとえば、近隣画素間の関係を強調するために)対ポテンシャル項又は単項ポテンシャル項(たとえば、観測値において相対的により多くの信頼性が存在する場合)を強調するために、wij及びciについて選択され得る。いくつかの実施例において、共通の重みが、すべてのペアwijについて選択され得、共通の重みが、観測された画素に対応する各ciについて選択され得、ハイパパラメータが、wijとciとの所望の比率を形成するために、各重みについて選択され得る、及び/又はその他。
【0051】
結合確率分布P(g,o)及び低密度高さマップo(又は、他の低密度検出データ110)の観測値のセットで、マルコフ確率場表面推定器310は、任意の知られているMAP推定アルゴリズム、たとえば、反復条件付きモード、ガウス確率伝搬法、又はその他、を使用して、高密度高さマップg内の各画素(又は、他の高密度検出データ120)の値(たとえば、高さ推定値)を予測することができる。一般に、マルコフ確率場表面推定器310は、3D表面構造の低密度表現o(たとえば、ノイズの多い及び部分的な観測)から3D表面構造の高密度表現gを推定することができる。結果は、3D点群(たとえば、3D世界座標内の)に変換され得る道路の3D表面構造の表現、たとえば、2D高さマップ、でもよい。動作中に、マルコフ確率場表面推定器310は、たとえば、
図17A~17Dの車両1700が3D環境を進むとき、低密度検出データ110の連続的インスタンス(たとえば、何らかの指定された本質によって分けられた連続的タイム・スライス中にキャプチャされたセンサ・データから導出された)に繰り返し作用して高密度検出データ120の連続的インスタンス(たとえば、道路の3D表面構造の対応部分の連続的表現)を予測することができる。
【0052】
追加で又は別法として、深層学習モデル表面推定器320は、3D表面構造の表現を高密度化することができる。たとえば、深層学習モデル表面推定器320は、1つ又は複数の深層学習モデルを使用して低密度検出データ110から高密度検出データ120(たとえば、高密度2Dトップ・ダウン高さマップg)の値を推定することによって、低密度検出データ110(たとえば、低密度2Dトップ・ダウン高さマップo)を高密度化することができる。そのようなものとして、深層学習モデル表面推定器320は、低密度検出データ110(たとえば、低密度でノイズの多い観測結果の表現、たとえば、3D点群の投影画像)と高密度検出データ120(たとえば、3D表面構造のより高密度の表現、たとえば、高密度3D点群の投影画像)との関係を学習することができる。
【0053】
図5は、本開示のいくつかの実施例による、深層学習モデル表面推定器320の例示的実装形態を示すデータ流れ図である。高いレベルにおいて、深層学習モデル表面推定器320は、プリプロセッサ510、高密度検出データ120の値を予測するように構成された1つ又は複数の深層学習モデル535、及びポストプロセッサ575を含み得る。プリプロセッサ510は、深層学習モデル535がサポートする入力データ530に低密度検出データ110をエンコードすることができ、入力データ530は、回帰データ570及び/又は信頼性データ580を予測するために、深層学習モデル535に送り込まれ得る。いくつかの実施例において、深層学習モデル535によって予測された回帰データ570及び/又は信頼性データ580が、高密度検出データ120として使用され得る。いくつかの実施例において、プリプロセッサ510は、入力データ530からバイアスを取り除くノーマライザ520を含むことができ、その場合、ポストプロセッサ575は、深層学習モデル535によって予測された回帰データ570にバイアスを再導入して高密度検出データ120の少なくとも一部を生成することができる。
【0054】
いくつかの実施例において、プリプロセッサ510は、深層学習モデル535がサポートする表現に低密度検出データ110をエンコードするエンコーダ515を含む。非限定的実例として、低密度検出データ110が低密度3D点群を含む、いくつかの実施例において、エンコーダ515は、低密度3D点群を投影して低密度投影画像(たとえば、トップ・ダウン高さマップ)を形成することができる。場合によっては(たとえば、ノーマライザ520なしに)、結果として生じる低密度投影画像は、回帰データ570(たとえば、トップ・ダウン高さマップなどの高密度投影画像)及び/又は信頼性データ580を予測するために、入力データ530として使用され得る及び深層学習モデル535に送り込まれ得る。場合によっては、深層学習モデル535によって予測された回帰データ570及び/又は信頼性データ580は、高密度検出データ120として使用され得る。
【0055】
場合によっては、低密度検出データ110及び/又はエンコードされた低密度検出データ(たとえば、低密度投影画像)は、バイアスを含み得る。そのようなものとして、いくつかの実施例において、プリプロセッサ510は、バイアスを取り除く或いは低密度検出データ110及び/又はエンコードされた低密度検出データを他の方法で正規化するノーマライザ520を含み得る。たとえば、低密度検出データ110が低密度3D点群を含む、及びエンコーダ515が低密度3D点群を投影して2D高さマップを形成する、いくつかの実施例において、2D高さマップは、2D高さマップが導出された画像をキャプチャしたカメラの高さに対応するバイアスを含む高さ値を記憶し得る。そのようなものとして、いくつかの実施例において、ノーマライザ520は、2D高さマップにおける高さ値(たとえば、所望の表面の)の平均の高さを計算し、すべての高さ値(たとえば、所望の表面の)から平均の高さを引いてバイアスを取り除く。結果として生じる2D高さマップ(又は、他の正規化された、エンコードされた低密度検出データ)は、回帰データ570(たとえば、高密度2D高さマップ)及び/又は信頼性データ580を予測するために、入力データ530として使用する及び深層学習モデル535に送り込むことができ、ポストプロセッサ575は、予測された出力にバイアスを再導入することができる(たとえば、回帰データ570のいくつかの又はすべての予測値にバイアスを追加することによって)。
【0056】
ここで深層学習モデル535を見ると、いくつかの実施例において、深層学習モデル535は、DNN、たとえば、畳み込みニューラル・ネットワーク(CNN)、を使用して、実装され得る。ある種の実施例は、深層学習モデル535がニューラル・ネットワーク、特にCNN、を使用して実装されて、説明されているが、これは限定を意図していない。たとえば、そして制限なしに、深層学習モデル535は、追加で又は別法として、任意のタイプのマシン学習モデル、たとえば、線形回帰、ロジスティック回帰、決定木、サポート・ベクトル・マシン(SVM:support vector machine)、ナイーブ・ベイズ、k近傍法(Knn:k-nearest neighbor)、K平均クラスタリング、ランダム・フォレスト、次元削減アルゴリズム、勾配ブースティング・アルゴリズム、マルコフ確率場、ニューラル・ネットワーク(たとえば、オートエンコーダ、畳み込み、回帰、パーセプトロン、長/短期記憶(LSTM:Long/Short Term Memory)、ホップフィールド、ボルツマン、深層信念、デコンボリューション、敵対的生成、液体状態マシンなどを使用するマシン学習モデル)、及び/又は他のタイプのマシン学習モデル、を含み得る。
【0057】
いくつかの実施例において、深層学習モデル535は、入力データ530に基づいて異なる出力を予測するための1つ又は複数のヘッド(又は層の少なくとも部分的に個別のストリーム)を有する共通のトランク(又は層のストリーム)を含み得る。たとえば、深層学習モデル535は、制限なしに、畳み込み層、プーリング層、及び/又は他の層タイプを含む特徴エクストラクタ(たとえば、DNN、エンコーダ/デコーダなど)を含み得、そこで、特徴エクストラクタの出力は、異なる出力を予測する複数のヘッドのそれぞれへの入力として提供される。異なるヘッドは、いくつかの実例において、並列入力を受信することができ、したがって、類似の入力データから異なる出力を生み出すことができる。
図5の実例において、深層学習モデル535は、入力データ106から特徴を抽出する及び抽出された特徴に関して回帰を実行する例示的アーキテクチャと示されている。さらに具体的には、深層学習モデル535は、エンコーダ/デコーダ540、回帰ヘッド545、及び/又は信頼性ヘッド550を含み得る。
【0058】
エンコーダ/デコーダ540は、スキップ接続(たとえば、ResNet、特徴ピラミッド・ネットワーク、U-Netなどに類似の)を有するエンコーダ及びデコーダ構成要素を使用して、実装され得る。たとえば、エンコーダ/デコーダ540は、入力データ530(たとえば、投影画像、2D高さマップ)を受け入れ、様々な畳み込み、プーリング、及び/又は他のタイプの動作を適用して特徴をいくつかの潜在空間へと抽出することができる。
図5において、エンコーダ/デコーダ540は、エンコードする(縮小する)進路及びデコードする(拡張的)進路を含む(左から右に)例示的実装形態で示されている。縮小する進路に沿って、各ソリューションは、任意の数の層(たとえば、畳み込み、膨張畳み込み、開始ブロックなど)及びダウンサンプリング動作(たとえば、最大プーリング)を含み得る。拡張的進路に沿って、各ソリューションは、任意の数の層(たとえば、デコンボリューション、アップサンプリングに続く畳み込み、及び/又は他のタイプの動作)を含み得る。拡張的進路において、特徴マップの各ソリューションは、アップサンプリングされ得、縮小する進路からの同じソリューションの特徴マップと連結され得る(たとえば、深度次元において)。本例では、縮小する及び拡張的進路の対応するソリューションは、対応するソリューションからの特徴マップを追加又は連結するために使用され得る、スキップ接続で接続され得る。そのようなものとして、エンコーダ/デコーダ540は、何らかの潜在空間に特徴を抽出し得、抽出された特徴の表現は、回帰ヘッド545及び/又は信頼性ヘッド550に入力され得る。
【0059】
回帰ヘッド545は、エンコーダ/デコーダ540の出力から対象の3D表面構造に関する特定のタイプの情報(たとえば、各画素の高さ値)を予測する任意の数の層(たとえば、畳み込み、プーリング、ソフトマックスなどの分類子、及び/又は他のタイプの動作など)を含み得る。いくつかの実施例において、回帰ヘッド545によって予測された回帰データ570は、画素によって表された3D表面の部分の高さを回帰させる浮動小数点数を各画素が記憶した、2D高さマップの形を取り得る。
【0060】
信頼性ヘッド550は、エンコーダ/デコーダ540の出力から、回帰データ570の信頼性データ580を予測する任意の数の層(たとえば、畳み込み、プーリング、ソフトマックスなどの分類子、及び/又は他のタイプの動作など)を含み得る。たとえば、回帰データ570が2D高さマップ∈Nmxnの形を取る、いくつかの実施例において、信頼性データ580は、2D高さマップにおける対応する予測値の信頼性の表現を回帰させる浮動小数点数を記憶する画素を有する対応する信頼性マップ∈Nmxnの形を取り得る。
【0061】
そのようなものとして、
図5は、回帰データ570(たとえば、2D高さマップ)及び信頼性データ580を予測する深層学習モデル535の一実施例を示す。しかしながら、任意の数の変更形態が、実装され得る。たとえば、いくつかの実施例において、深層学習モデル535は、回帰ヘッド545に対応する単一の出力チャネルと実装され得る。別の実例では、いくつかの実施例において、深層学習モデル535は、時間的情報を活用するために1つ又は複数の再帰層(たとえば、ゲート付き再帰ユニット、長・短期記憶)を含み得る。場合によっては、1つ又は複数の再帰層を含むことは、より優れた予測及びより安定した高密度化結果を経時的にもたらして、深層学習モデル535が前のタイム・スライスからの情報を活用することを可能にし得る。さらに別の実例では、深層学習モデル535は、異なる入力、たとえば、透視図を有する入力画像(たとえば、RGB画像)及び別のビューを有する投影画像(たとえば、トップ・ダウン高さマップ)、を受け入れる複数の入力ヘッドと実装され得る。
図6は、そのような実例を示す。
【0062】
さらに具体的には、
図6は、複数の入力ヘッドを含む深層学習モデルを有する
図3の深層学習モデル表面推定器320の例示的実装形態を示すデータ流れ図である。一般に、
図5及び6に示された深層学習モデル表面推定器320の実装形態は、
図6に示す実装形態は画像エンコーダ610を含むように深層学習モデル535を拡張することを除いて、類似の構成要素を有する。そのようなものとして、
図5に示す深層学習モデル535の実装形態は、入力データ530(たとえば、3D点群の投影)を受け入れる単一の入力ヘッド(たとえば、エンコーダ/デコーダ540のエンコーダ部分)を含むが、
図6に示す深層学習モデル535の実装形態は、第2の入力ヘッド(たとえば、画像エンコーダ610)への画像データ102(たとえば、RBGフレーム)を追加で受け入れる。一般に、画像エンコーダ610(及び/又は任意の他の入力ヘッド)は、何らかの潜在空間に特徴を抽出するための任意の数の層(たとえば、畳み込み、プーリング、及び/又は他のタイプの動作)を含むことができ、抽出された特徴は、エンコーダ/デコーダ540のエンコーダ部分からの抽出された特徴(及び/又は他の入力ヘッドからの抽出された特徴)と結合(たとえば、連結)され得る。そのようなものとして、
図6に示すものなどのいくつかの実施例において、深層学習モデル535は、観測された表面構造の2つの異なるビュー(たとえば、トップ・ダウン及び視点、3D点群空間及び2D画像空間など)から学習することができる。
【0063】
したがって、
図3に戻ると、
図3の深層学習モデル表面推定器320は、低密度検出データ110から高密度検出データ120を予測するために、構成深層学習モデル(たとえば、
図5又は6の深層学習モデル535)及び/又は何らかの他のマシン学習モデルの様々なアーキテクチャを使用して、実装され得る。結果は、3D点群(たとえば、3D世界座標内の)に変換され得る、道路の3D表面構造の表現、たとえば、2D高さマップ、でもよい。動作中に、深層学習モデル表面推定器320は、たとえば、
図17A~17Dの車両1700が3D環境を進むとき、低密度検出データ110の連続的インスタンス(たとえば、何らかの指定された本質によって分けられた連続的タイム・スライス中にキャプチャされたセンサ・データから導出される)に繰り返し作用して高密度検出データ120の連続的インスタンス(たとえば、道路の3D表面構造の対応部分の連続的表現)を予測し得る。
【0064】
図1に戻ると、検出された表面の3D構造が、決定された後は、3D世界座標内に既にない位置価は、検出された表面(たとえば、道路)を識別する対応するクラス・ラベルと関連付けられて、3D世界座標に変換され得る、及び/又は1つ又は複数の動作を実行する際に
図17A~17Dの車両1700が使用するために提供され得る。たとえば、高密度検出データ120(たとえば、3D点群、投影画像、対応するラベル)は、車両1700の制御構成要素、たとえば、
図17A~17Dの車両1700の1つ又は複数の構成要素(たとえば、SoC1704、CPU1718、GPU1720など)で実行する自律運転ソフトウェア・スタック122、によって使用され得る。たとえば、車両1700は、環境内で1つ又は複数の動作(たとえば、障害物又は隆起回避、車線保持、車線変更、合流、分岐、現在の路面にマッチするように自己物体又は自己アクタのサスペンション・システムを適応させること、近付いている表面勾配に基づく早期の加速又は減速の適用、マッピングなど)をナビゲート、計画、又は他の方法で実行するために、この情報(たとえば、障害物のインスタンス)を使用することができる。
【0065】
いくつかの実施例において、高密度検出データ120は、自律運転ソフトウェア・スタック122(或いは本明細書で「ドライブ・スタック122」と称される)の1つ又は複数の層によって使用され得る。ドライブ・スタック122は、センサ・マネージャ(図示せず)、知覚構成要素(たとえば、ドライブ・スタック122の知覚層に対応する)、世界モデル・マネージャ126、計画立案構成要素128(たとえば、ドライブ・スタック122の計画立案層に対応する)、制御構成要素130(たとえば、ドライブ・スタック122の制御層に対応する)、障害物回避構成要素132(たとえば、ドライブ・スタック122の障害物、又は衝突回避層に対応する)、作動構成要素134(たとえば、ドライブ・スタック122の作動層に対応する)、及び/又はドライブ・スタック122の追加及び/又は代替層に対応する他の構成要素を含み得る。いくつかの実例において、プロセス100は、本明細書でさらに詳しく説明するように、世界モデル・マネージャにドライブ・スタック122の層を提供し得る、知覚構成要素によって実行され得る。
【0066】
センサ・マネージャは、車両1700のセンサからのセンサ・データを管理及び/又は要約し得る。たとえば、
図17Cを参照すると、センサ・データは、RADARセンサ1760によって生成され得る(たとえば、永続的に、間隔を置いて、ある種の条件に基づいて)。センサ・マネージャは、異なるフォーマットでセンサからのセンサ・データを受信することができ(たとえば、同タイプのセンサが、異なるフォーマットでセンサ・データを出力することができ)、異なるフォーマットを均一のフォーマット(たとえば、同タイプの各センサの)に変換するように構成され得る。結果として、自律型車両1700の他の構成要素、特徴、及び/又は機能性は、均一のフォーマットを使用することができ、それによって、センサ・データの処理を単純にする。いくつかの実例において、センサ・マネージャは、均一のフォーマットを使用して、車両1700のセンサに戻って制御を適用すること、たとえば、フレーム・レートを設定すること又は利得制御を実行すること、ができる。センサ・マネージャはまた、自律型車両制御システムの様々な構成要素、特徴、及び機能性によるセンサ・データの処理を通知するのに役立つタイムスタンプでセンサ・データに対応するセンサ・パケット又は通信を更新することができる。
【0067】
世界モデル・マネージャ126は、世界モデルを生成、更新、及び/又は定義するために使用され得る。世界モデル・マネージャ126は、ドライブ・スタック122の知覚構成要素によって生成された及びそれから受信された情報(たとえば、検出された障害物の位置)を使用することができる。知覚構成要素は、障害物知覚装置、進路知覚装置、待機知覚装置、マップ知覚装置、及び/又は他の知覚構成要素を含み得る。たとえば、世界モデルは、障害物知覚装置、進路知覚装置、待機知覚装置、及び/又はマップ知覚装置によってリアルタイム又はほぼリアルタイムで知覚することができる障害物、進路、及び待機条件のアフォーダンスに基づいて、少なくとも部分的に、定義され得る。世界モデル・マネージャ126は、自律型車両制御システムの障害物知覚装置、進路知覚装置、待機知覚装置、マップ知覚装置、及び/又は他の構成要素からの新しく生成及び/又は受信された入力(たとえば、データ)に基づいて、世界モデルを継続的に更新することができる。
【0068】
世界モデルは、計画立案構成要素128、制御構成要素130、障害物回避構成要素132、及び/又は作動構成要素134にドライブ・スタック122を知らせるのを助けるために、使用され得る。障害物知覚装置は、車両1700がどこを走行することを許されている又は走行する能力を有するか、及び車両1700のセンサによって感知された障害物(たとえば、物体、たとえば、構造、エンティティ、車両など)と衝突せずに車両1700はどのくらい速く走行することができるかに基づき得る(たとえば、環境内の検出された障害物及び/又は路面内の検出された隆起を回避することによって定義された走行可能な又は他のナビゲート可能な進路の位置に基づく)障害物知覚を実行することができる。
【0069】
進路知覚装置は、たとえば、特定の状況において利用可能なノミナル・パスを知覚することによって、進路知覚を実行することができる。いくつかの実例において、進路知覚装置はさらに、進路知覚のために車線変更を考慮することができる。車線グラフは、車両1700に利用可能な1つ又は複数の進路を表すことができ、幹線道路オンランプ上の単一進路と同じくらい単純でもよい。いくつかの実例において、車線グラフは、所望の車線への進路を含み得る及び/又は幹線道路(又は、他の道路タイプ)の途中の利用可能な変更を示し得る、或いは近隣車線、車線変更、分岐点、曲がり角、クローバ型インターチェンジ、合流、及び/又は他の情報を含み得る。いくつかの実施例において、進路知覚装置は、高密度検出データ120を考慮し得る。たとえば、進路知覚装置は、隆起を識別する及び隆起を回避する進路を含むように、再構成された3D路面を評価し得る。
【0070】
待機知覚装置は、ルール、慣習、及び/又は実施上の配慮点の結果としての車両1700に関する制約の決定の責任を負い得る。たとえば、ルール、慣習、及び/又は実施上の配慮点は、3D路面、交通信号、多方向停止、譲る、合流、料金所、ゲート、警察又は他の救急隊員、道路作業員、停車中のバス又は他の車両、一方向ブリッジ・アービトレーション、フェリー入口などに関連し得る。したがって、待機知覚装置は、潜在的障害物を識別する、及び障害物知覚装置のみに依拠して可能ではなかった可能性がある1つ又は複数の制御(たとえば、減速、停止など)を実施するために、活用され得る。いくつかの実施例において、待機知覚装置は、高密度検出データ120を考慮し得る。たとえば、待機知覚装置は、近付いている表面勾配を識別する並びに近付いている表面勾配に適応するように早期の加速若しくは減速を適用することを決定する及び/又は適用するために、再構成された3D路面を評価することができる。追加で又は別法として、車両1700が、道路の対応する部分に到着した後は、サスペンション・システムが、識別された路面にマッチするように、待機知覚装置は、近付いている路面の一部分を識別する並びに車両1700のサスペンション・システムを適応させることを決定する及び/又は適応させるために、再構成された3D路面を評価し得る。
【0071】
マップ知覚装置は、それによって行動が判別される、及びいくつかの実例では、特定のロケールにおいてどの慣習が適用されるかの具体的実例を決定するための機構を含み得る。たとえば、マップ知覚装置は、以前の運転又は移動を表すデータから、ある特定の交差点においてある特定の時間帯にUターンはないということ、車線の方向性を示す電子標識は時刻に応じて変化するということ、ごく接近した(たとえば、互いに辛うじてオフセットする)2つの交通信号は異なる道路に関連しているということ、ロード・アイランドでは、交通信号のところで左折をしようと待っている第1の車は、信号が青になるときに、近付いてくる交通の前で曲がることによって、法律違反をするということ、及び/又は他の情報を決定し得る。マップ知覚装置は、静的な又は動かないインフラストラクチャ物体及び障害物を車両1700に知らせることができる。マップ知覚装置はまた、たとえば、交差点にあるどの信号が、車両1700が特定の進路を取るために、青でなければならないかを決定するための、待機知覚装置及び/又は進路知覚装置のための情報を生成することができる。
【0072】
いくつかの実例において、マップ知覚装置からの情報は、サーバに(たとえば、
図17Dのサーバ1778のマップ・マネージャに)送る、伝送する、及び/又は提供することができ、サーバからの情報は、車両1700のマップ知覚装置及び/又はローカリゼーション・マネージャに送る、伝送する、及び/又は提供することができる。マップ・マネージャは、車両1700から遠隔に位置する及び1つ又は複数のネットワークを介して車両1700によってアクセス可能なクラウド・マッピング・アプリケーションを含み得る。たとえば、車両1700のマップ知覚装置及び/又はローカリゼーション・マネージャは、車両1700の過去及び現在の運転又は移動、並びに他の車両の過去及び現在の運転又は移動をマップ知覚装置及び/又はローカリゼーション・マネージャに知らせるために、サーバのマップ・マネージャ及び/又は1つ又は複数の他の構成要素又は特徴と通信し得る。マップ・マネージャは、車両1700の特定の位置に基づいてローカリゼーション・マネージャによってローカライズされ得るマッピング出力(たとえば、マップ・データ)を提供することができ、ローカライズされたマッピング出力は、世界モデルを生成及び/又は更新するために、世界モデル・マネージャ126によって使用され得る。
【0073】
計画立案構成要素128は、数ある構成要素、特徴、及び/又は機能性の中でも、ルート・プランナ、車線プランナ、行動プランナ、及び行動セレクタを含み得る。ルート・プランナは、数ある情報の中で、マップ知覚装置、マップ・マネージャ、及び/又はローカリゼーション・マネージャからの情報を使用してGNSS中間地点(たとえば、GPS中間地点)で構成され得る計画された進路、車両1700に関する原点に対する座標を示す3D世界座標(たとえば、デカルト、極など)などを生成し得る。中間地点は、車線プランナの目標として使用され得る、車両1700の未来に向けた特定の距離、たとえば、街区数、キロメートル数、フィート数、インチ数、マイル数など、を表し得る。
【0074】
車線プランナは、車線グラフ(たとえば、進路知覚装置からの車線グラフ)、車線グラフ内の物体姿勢(たとえば、ローカリゼーション・マネージャによる)、及び/又は入力としてのルート・プランナからの未来に向けた距離にある目標点及び方向を使用し得る。目標点及び方向は、車線グラフ内の最もよくマッチする走行可能な点及び方向にマップされ得る(たとえば、GNSS及び/又はコンパス方向に基づいて)。グラフ検索アルゴリズムが、目標点までの最短進路を見つけるために、車線グラフにおける現在のエッジから車線グラフで実行され得る。
【0075】
実行可能な行動が、車線プランナからの最も望ましい行動出力とマッチさせられ得るように、行動プランナは、車両1700の基本行動、たとえば、車線内に留まること又は車線を左若しくは右に変更すること、の実行可能性を決定し得る。たとえば、所望の行動が、安全及び/又は利用可能でないと決定された場合、デフォルト行動が、代わりに選択され得る(たとえば、所望の行動又は車線変更が安全でないとき、デフォルト行動は車線内に留まることでもよい)。
【0076】
制御構成要素130は、計画立案構成要素128の行動セレクタから受信された軌道又は進路(横及び縦)(たとえば、高密度検出データ120に基づく)に可能な限り厳密に及び車両1700の能力内で従い得る。制御構成要素130は、厳格なフィードバックを使用して、モデル化されてない計画外のイベント若しくは行動及び/又は理想との相違(たとえば、予期しない遅延)を引き起こす何にでも対処し得る。いくつかの実例において、制御構成要素130は、入力変数として制御する、及び所望の状態と比較され得る(たとえば、計画立案構成要素128によって要求された所望の横及び縦の進路と比較され得る)予測を生み出す、前方予測モデルを使用し得る。相違を最小限に抑える制御が、決定され得る。
【0077】
計画立案構成要素128及び制御構成要素130は、個別に示されているが、これは限定を意図していない。たとえば、いくつかの実施例において、計画立案構成要素128と制御構成要素130との線引きは、正確に定義されなくてもよい。したがって、計画立案構成要素128に起因する構成要素、特徴、及び/又は機能性のうちの少なくともいくつかは、制御構成要素130に関連してもよく、逆もまた同様である。これはまた、ドライブ・スタック122の個別に示された構成要素のいずれかについて当てはまり得る。
【0078】
障害物回避構成要素132は、物体(たとえば、移動する及び動かない物体)との衝突の回避において自律型車両1700を支援し得る。障害物回避構成要素132は、「根本的レベル」の障害物回避におけるコンピュータ機構を含み得、車両1700の「サバイバル脳」又は「爬虫類脳」の役割を果たし得る。いくつかの実例において、障害物回避構成要素132は、交通ルールに従う及び丁寧に運転するために必要とされる車両1700の構成要素、特徴、及び/又は機能性から独立して使用され得る。そのような実例において、障害物回避構成要素は、衝突が車両1700と任意の物体との間で生じないことを確実にするために、交通法、道路のルール、及び丁寧な運転規範を無視し得る。そのようなものとして、障害物回避層は、道路のルール層とは別個の層でもよく、障害物回避層は、車両1700が障害物回避の観点から安全な活動のみを実行していることを確実にし得る。他方で、道路のルール層は、車両が交通法及び慣習に従い、法的な及び従来の先行権を順守することを確実にし得る(本明細書に記載のように)。
【0079】
いくつかの実例において、走行可能な又は他のナビゲート可能な進路及び/又は高密度検出データ120は、行うべき制御又は活動を決定する際に障害物回避構成要素132によって使用され得る。たとえば、走行可能な進路は、車両1700は物体、隆起、構造、及び/又は同類のものにぶつからずにどこを操縦することができるか、又は少なくともどこに静的構造体が存在しないかの障害物回避構成要素132への指示を提供し得る。
【0080】
非限定的実施例において、障害物回避構成要素132は、車両1700の別個の、個別の特徴として実装され得る。たとえば、障害物回避構成要素132は、ドライブ・スタック122の計画立案層、制御層、作動層、及び/又は他の層を個別に(たとえば、並行して、前に、及び/又は後に)動作させ得る。
【0081】
そのようなものとして、車両1700は、環境内で1つ又は複数の動作(たとえば、車線保持、車線変更、合流、分岐など)をナビゲート、計画、又は他の方法で実行するために、この情報を使用し得る(たとえば、進路のエッジ、又はレールとして)。
【0082】
ここで
図7~9を参照すると、本明細書に記載される、方法700~900の各ブロックは、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組合せを使用して実行することができる計算プロセスを含む。たとえば、様々な機能が、メモリに記憶された命令を実行するプロセッサによって、実施され得る。方法はまた、コンピュータ記憶媒体に記憶されたコンピュータ使用可能命令として実施され得る。方法は、いくつか例を挙げると、独立型アプリケーション、サービス若しくはホスト型サービス(独立型の若しくは別のホスト型サービスと組み合わせた)、又は別の製品へのプラグインによって、提供され得る。加えて、方法700~900は、例として、
図1の表面再構成パイプライン100に関して説明される。しかしながら、これらの方法は、本明細書に記載のものを含むが、これらに限定されない、任意の1つのシステム、又はシステムの任意の組合せによって、追加で又は別法として、実行され得る。
【0083】
図7は、本開示のいくつかの実施例による、キャプチャ・セッション中に3次元(3D)表面構造の表現を生成するための方法700を示す流れ図である。方法700は、ブロックB702において、環境の構成要素の3次元(3D)表面構造の第1の表現を、環境において自己物体の1つ又は複数のカメラを使用してキャプチャ・セッション中に生成された画像データに少なくとも部分的に基づいて、生成することを含む。たとえば、
図1に関して、自己物体の1つ又は複数のカメラ101は、自己物体が環境を通してナビゲートするとき、画像データ102をキャプチャするために使用され得、3D構造推定器105は、画像データ102を処理して環境の特定の構成要素、たとえば、3D路面又は他の環境の部分、の3D構造を推定し得る。任意の適切な3D構造推定技法が、使用され得る、たとえば、SfM、ステレオ・ビジョン、及び/又は何らかの他の3D表面構造推定技法。いくつかの実施例において、セグメント化マスク又は他の分類データは、対象の環境の構成要素上にある推定3D構造からの点を選択するために、使用され得る。3D構造の結果的表現は、3D点群、投影画像、又は何らかの他の表現を含み得る。
【0084】
方法700は、ブロックB704において、3D表面構造の第1の表現を高密度化することに少なくとも部分的に基づいて3D表面構造の第2の表現を生成することを含む。たとえば、
図1に関して、検出高密度化装置115は、3D表面構造のより高密度な表現(たとえば、高密度検出データ120)を生成するために、低密度検出データ110を高密度化し得る。一般に、低密度検出データ110は、任意の適切な形を取り得る、たとえば、低密度3D点群又は低密度3D点群(たとえば、2Dトップ・ダウン高さマップ)の投影画像。いくつかの実施例において、検出高密度化装置115は、1つ又は複数のマシン学習モデル、たとえば、マルコフ確率場(たとえば、
図3のマルコフ確率場表面推定器310を介する)及び/又は1つ又は複数のディープ・ニューラル・ネットワーク(DNN)(たとえば、
図3の深層学習モデル表面推定器320を介する)、を使用して、低密度検出データ110を高密度化し得る。3D表面構造の結果的表現(たとえば、高密度検出データ120)は、任意の適切な形を取り得る、たとえば、2D高さマップ及び/又は3D点群。
【0085】
方法700は、ブロックB706において、キャプチャ・セッション中に3D表面構造の第2の表現を自己物体の制御構成要素に提供することを含む。たとえば、
図1の高密度検出データ120又は3D表面構造の他の表現が、環境内での1つ又は複数の動作、たとえば、進路計画立案、障害物又は隆起回避、を実行すること、現在の路面にマッチするように自己物体又は自己アクタのサスペンション・システムを適応させること、近付いている表面勾配に基づく早期の加速又は減速の適用、マッピング、及び/又はその他を実行する際に自己物体を支援するために、自己物体の制御構成要素(たとえば、
図1のソフトウェア・スタック122、コントローラ1736、ADASシステム1738、及び/又はSOC1704などの
図17A~17Dの自律型車両1700の構成要素)に提供され、それらによって使用され得る。
【0086】
図8は、本開示のいくつかの実施例による、マルコフ確率場に少なくとも基づいて3D表面構造の高密度化された表現を生成するための方法800を示す流れ図である。方法800は、ブロックB802において、環境の構成要素の3次元(3D)表面構造の第1の表現を、環境における自己物体の1つ又は複数のカメラからの画像データを使用して、生成することを含む。たとえば、
図1に関して、自己物体の1つ又は複数のカメラ101は、自己物体が環境を通してナビゲートするとき、画像データ102をキャプチャするために使用され得、3D構造推定器105は、画像データ102を処理して特定の対象表面の3D構造を推定し得る。
【0087】
方法800は、ブロックB804において、第1の表現と高密度化された表現との関係をモデル化するマルコフ確率場に少なくとも基づいて3D表面構造の高密度化された表現を生成することを含む。たとえば、
図3のマルコフ確率場表面推定器310は、マルコフ確率場及び第1の表現(たとえば、低密度検出データ110)を所与として、最大事後確率(MAP)推定を実行して、最も可能性の高い高密度化された表現(たとえば、高密度検出データ120)を推定し得る。
【0088】
方法800は、ブロックB806において、3D表面構造の高密度化された表現を自己物体の制御構成要素に提供することを含む。たとえば、
図1の高密度検出データ120又は3D表面構造の他の表現は、環境内で1つ又は複数の動作を実行する際に自己物体を支援するために、自己物体の制御構成要素(たとえば、
図1のソフトウェア・スタック122、コントローラ1736、ADASシステム1738、及び/又はSOC1704などの
図17A~17Dの自律型車両1700の構成要素)に提供され、それらによって使用され得る。
【0089】
図9は、本開示のいくつかの実施例による、1つ又は複数のニューラル・ネットワークを使用して推定された3D路面構造に少なくとも部分的に基づいて車両を制御するための方法900を示す流れ図である。方法900は、ブロックB902において、環境において車両の動作中に車両の1つ又は複数のカメラを使用して生成された画像データを受信することを含む。たとえば、
図1に関して、車両の1つ又は複数のカメラ101は、車両が環境を通してナビゲートするとき、画像データ102をキャプチャするために使用され得る。
【0090】
方法900は、ブロックB904において、ブロックB906及びB908に少なくとも部分的に基づいて、環境における車両の動作中に、環境内の路面を仮想的に再構成することを含む。方法900は、ブロックB906において、路面の第1の推定3D表面構造を、画像データを使用して、生成することを含む。たとえば、
図1に関して、3D構造推定器105は、画像データ102を処理して特定の対象表面の3D構造を推定し得る。方法900は、ブロックB908において、第1の推定3D表面構造を1つ又は複数のニューラル・ネットワーク(NN)に適用することに少なくとも部分的に基づいて路面の高密度化された推定3D表面構造を生成することを含む。たとえば、
図3又は5の深層学習モデル表面推定器320は、1つ又は複数のNN、たとえば、1つ又は複数のDNN、を使用して、低密度検出データ110から高密度検出データ120(たとえば、高密度2Dトップ・ダウン高さマップ)の値を推定することによって、低密度検出データ110(たとえば、低密度2Dトップ・ダウン高さマップ)を高密度化し得る。非限定的実例として、低密度検出データ110が低密度3D点群を含む、いくつかの実施例において、
図5のエンコーダ515は、低密度3D点群を投影して低密度投影画像(たとえば、トップ・ダウン高さマップ)を形成することができ、低密度投影画像は、回帰データ570(たとえば、トップ・ダウン高さマップなどの高密度投影画像)及び/又は信頼性データ580を予測するために、深層学習モデル535に送り込まれ得る。
【0091】
方法900は、ブロックB910において、高密度化された推定3D表面構造を表すデータに少なくとも部分的に基づいて車両を制御することを含む。たとえば、
図1の高密度検出データ120又は高密度化された推定3D表面構造の他の表現は、環境内で1つ又は複数の動作を実行する際に自己物体を支援するために、自己物体の制御構成要素(たとえば、
図1のソフトウェア・スタック122、コントローラ1736、ADASシステム1738、及び/又はSOC1704などの
図17A~17Dの自律型車両1700の構成要素)に提供され、それによって使用され得る。
【0092】
トレーニング・データの生成及び3D表面再構成システムの深層学習モデルのトレーニング
3D表面再構成システムの深層学習モデル(たとえば、
図5又は6の深層学習モデル535)のトレーニングを支援するために、トレーニング・データセット(たとえば、3D表面構造の低密度入力データ及び/又はグラウンド・トゥルース表現を含む)が、様々な仕方で生成、コンパイル、及び/又は選択され得る。一般に、トレーニング・データのタイプは、トレーニングされるべき深層学習モデルのアーキテクチャに依拠し得る。たとえば、ある種の実装形態は、3D表面構造の低密度表現(たとえば、低密度高さマップ)及び/又は何らかの他の視点からの画像データ(たとえば、透視図の画像)を含む入力トレーニング・データと、3D表面構造の高密度表現(たとえば、高密度高さマップ)及び/又はセグメント化マスク(たとえば、道路又は他の走行可能な空間などの所望の表面を識別する)を含むグラウンド・トゥルース・トレーニング・データとを必要とし得る。いくつかの実施例において、現実世界データ及び/又は仮想データは、トレーニング・データを導出するために、収集及び使用され得る。非限定的実例として、トレーニング・データは、仮想センサ・データのフレーム、セグメント化マスク、及び深度図のレンダリング、3D路面のパラメトリック数学モデリング、単一のLiDARセンサからの現実センサ・データの収集及び注釈付け、及び/又は複数のLiDARセンサから蓄積された現実センサ・データの収集及び注釈付けによって、生成され得る。
【0093】
シミュレーション環境からのトレーニング・データの生成。いくつかの実施例において、トレーニング・データは、仮想センサ・データのフレーム、セグメント化マスク、及び/又はシミュレーション環境を表す深度図をレンダリング又は生成することによって、生成され得る。たとえば、シミュレーションが、仮想世界又は環境(たとえば、シミュレーション環境)をシミュレーションするために実行され得、仮想車両又は他の物体が、シミュレーション環境内でシミュレーションされ得る。仮想車両又は物体は、任意の数のセンサ(たとえば、仮想又はシミュレーション・センサ)を含み得、仮想センサ・データは、センサについてシミュレーションされ得る。そのようなものとして、仮想センサ・データのフレーム(たとえば、仮想車両の仮想カメラの視野に対応する仮想画像データ)、及び対応するセグメント化マスク及び深度図が、シミュレーション環境に基づいて生成され得る。仮想センサ・データは、入力トレーニング・データを生成するために使用され得(又は、入力トレーニング・データとして使用され得)、セグメント化マスク及び/又は深度図が、グラウンド・トゥルース・トレーニング・データを生成するために使用され得る(又は、入力トレーニング・データとして使用され得る)。
【0094】
図10は、本開示のいくつかの実施例による、シミュレーション環境を使用する例示的トレーニング・データ生成パイプライン1000を示すデータ流れ図である。トレーニング・データ生成パイプライン1000は、シミュレーション環境を生成し得る、シミュレータ構成要素1010と、仮想センサ・データのフレーム1020、セグメント化マスク1030、及び/又はシミュレーション環境を表す深度
図1040を含む。3D構造推定器1050(たとえば、
図1の3D構造推定器105に対応し得る)は、対象表面の3D構造の低密度表現(たとえば、低密度点群、投影画像)をフレーム1020(たとえば、レンダリングされた画像)から生成し得、3D構造の低密度表現及び/又はフレーム1020(たとえば、レンダリングされた画像)は、入力トレーニング・データ1080として使用され得る。グラウンド・トゥルース・トレーニング・データ1090を生成するために、3D点群ジェネレータ1060は、それに対して深度
図1040の範囲値が生成された仮想カメラの知られている場所及び向きを使用して、3D世界座標への深度
図1040からの範囲値の投影を解除し得、3D点群ジェネレータ1060は、セグメント化マスク1030を使用して対象表面(たとえば、路面)の3D点をフィルタで除去し得る。結果として生じる3D点群は、低密度でもよいので、ポストプロセッサ1070は、欠損値を内挿する及び対象表面の3D構造の高密度表現(たとえば、点群、投影画像)を生成するために、使用され得、3D構造の高密度表現及び/又はセグメント化マスク1030は、グラウンド・トゥルース・トレーニング・データ1090として使用され得る。
【0095】
シミュレータ構成要素1010は、仮想世界又は環境(たとえば、シミュレーション環境)をシミュレーションするシミュレーション・システムを含み得る。たとえば、シミュレーション・システムは、人工知能(AI)車両又は他の物体(たとえば、歩行者、動物など)、ハードウェア・イン・ザ・ループ(HIL)車両若しくは他の物体、ソフトウェア・イン・ザ・ループ(SIL)車両若しくは他の物体、及び/又はパーソン・イン・ザ・ループ(PIL)車両若しくは他の物体を含み得るシミュレーション環境を生成するグローバル・シミュレーションを生成し得る。シミュレーション環境は、ラスタ化、敵対的生成ネットワーク(GAN:generative adversarial network)などのDNNを使用する、レイ・トレーシング、別のレンダリング技法、及び/又はその組合せを使用して、生成され得る。シミュレーション環境は、現実世界環境をシミュレーションしようとして、運転環境の特徴、たとえば、道路、橋、トンネル、道路標識、停止信号、横断歩道、建物、木及び枝葉、太陽、月、反射、影など、を含み得る。グローバル・シミュレーションは、レンダリング・エンジン(たとえば、2D及び/又は3Dグラフィックスの)、物理エンジン(たとえば、衝突検出、衝突応答などのための)、サウンド、スクリプト、アニメーション、AI、ネットワーキング、ストリーミング、メモリ管理、スレッディング、ローカリゼーション・サポート、シーン・グラフ、映画製作技術、及び/又は他の特徴を含み得る、エンジン(たとえば、ゲーム・エンジン)、又は他のソフトウェア開発環境内で維持され得る。例示的シミュレーション・システム及び例示的グローバル・シミュレーションについては、2020年3月13日に出願された「Sensor Simulation and Learning Sensor Models with Generative Machine Learning Methods」という題名の米国非仮特許出願第16/818,551号において説明されており、その内容はすべて、参照により本明細書に組み込まれている。
【0096】
いくつかの実施例において、シミュレータ構成要素1010は、仮想センサ・データのフレーム1020(たとえば、画像データ)、セグメント化マスク1030、及び/又はシミュレーション環境を表す深度
図1040を生成し得る。たとえば、シミュレータ構成要素1010は、シミュレーション環境内の仮想車両又は他の物体に配置された仮想カメラの視点からシミュレーション環境の画像をレンダリングし得る。いくつかの実施例において、シミュレータ構成要素1010は、シミュレーション環境内のシミュレーションされた対象表面(たとえば、路面)の知られている座標を使用して、仮想センサ・データのフレーム1020に対応するセグメント化マスク1030及び/又は深度
図1040(たとえば、画素単位の深度図)を生成し得る。仮想センサ・データのフレーム1020、セグメント化マスク1030、及び/又は深度
図1040(集合的に、シミュレーション又は仮想データ)は、ともにグループ化され得、シミュレータ構成要素1010は、たとえば、仮想車両又は他の物体がシミュレーション環境を通してナビゲートするとき、シミュレーション環境における連続的タイム・スライスを表すシミュレーション又は仮想データを生成し得る。そのようなものとして、シミュレータ構成要素1010は、現実的(たとえば、運転)シナリオを表す仮想センサ・データのフレーム1020、セグメント化マスク1030、及び/又は深度
図1040を生成し得る。
【0097】
任意の所与のフレーム1020について、3D構造推定器1050は、フレーム1020から対象表面(たとえば、路面)の3D表面構造を推定し得る。たとえば、3D構造は、
図1の3D構造推定器105に関する本明細書に記載の技法を使用して(たとえば、SfM、ステレオ・ビジョン、外れ値除去、及び/又は表面点選択を使用して)、推定され得る。いくつかの実施例において、3D構造推定器1050は、セグメント化マスク1030を使用して、セグメント化マスクによって表されたクラスに属する推定3D構造から点(たとえば、対象表面、たとえば、3D路面、に属する点)を選択し得る。いくつかの実施例において、結果として生じる点は、投影画像(たとえば、2D高さマップ)を形成するために、投影され得る。結果は、対象表面の3D構造の低密度表現(たとえば、低密度点群、低密度投影画像)でもよい。3D構造の低密度表現及び/又はフレーム1020(たとえば、レンダリングされた画像)は、入力トレーニング・データ1080として指定され得、トレーニング・データセットに含まれ得る。
【0098】
いくつかの実施例において、対応するグラウンド・トゥルース・トレーニング・データ1090を生成するために、3D点群ジェネレータ1060は、深度
図1040を使用して、3D構造の3D点群又は他の表現を生成し得る。たとえば、3D点群ジェネレータ1060は、それに対して深度
図1040の範囲値が生成された仮想カメラの位置及び向きを使用して、深度
図1040からシミュレーション環境の3D世界座標への範囲値の投影を解除することによって、3D点を生成し得、3D点群ジェネレータ1060は、セグメント化マスク1030を使用して、対象表面の3D点を選択し得る(たとえば、対象表面を表すセグメント化マスク1030の一部分に投影する3D点を選択することによって)。追加で又は別法として、3D点群ジェネレータ1060は、セグメント化マスク1030を使用して、対象表面上にある点の深度
図1040から範囲値を選択し得(たとえば、深度
図1040にセグメント化マスク1030を重ね合わせることによって)、3D点群ジェネレータ1060は、シミュレーション環境への選択された範囲値の投影を解除して対象表面に3D点を生成し得る。
【0099】
結果として生じる3D点(たとえば、3D点群)は、低密度でもよいので、ポストプロセッサ1070は、三角形分割アルゴリズムを使用して、欠損値を内挿するために、使用され得る。たとえば、ポストプロセッサ1070は、2Dで及び/又は3Dでドロネ三角形分割を実行し得る。2D三角形分割を含む例示的実施例において、ポストプロセッサ1070は、対象表面に3D点を投影して投影画像(たとえば、2D高さマップ)を形成し、投影画像におけるドロネ三角形分割を実行して三角形を生成し得、ポストプロセッサ1070は、三角形から点をサンプリングしてグラウンド・トゥルース高密度投影画像(たとえば、グラウンド・トゥルース2D高さマップ)の所望の数の点を生成し得る。3D三角形分割を含む例示的実施例において、ポストプロセッサ1070は、3Dドロネ三角形分割を実行して対象表面の3D点を囲む三角形の表面メッシュを計算し得、表面メッシュの三角形から3D点をサンプリングしてグラウンド・トゥルース高密度投影画像(たとえば、グラウンド・トゥルース2D高さマップ)の所望の数の点を生成し得る。たとえば、ポストプロセッサ1070は、表面メッシュから3D点をサンプリングし、サンプリングされた3D点を投影してグラウンド・トゥルース投影画像(たとえば、グラウンド・トゥルース2D高さマップ)を形成し得る。サンプリングされた点を表さないグラウンド・トゥルース投影画像内の画素は、ゼロに設定され得る。そのようなものとして、対象表面の3D点の高密度投影画像若しくは他の表現及び/又はセグメント化マスク1030は、グラウンド・トゥルース・トレーニング・データ1090として指定され、対応する入力トレーニング・データ1090とペアにされ、トレーニング・データセットに含まれ得る。
【0100】
パラメトリック・モデリングを使用する合成トレーニング・データの生成。トレーニング・データを生成するための別の例示的技法において、合成トレーニング・データが、所望の表面、たとえば、3D路面、のパラメトリック数学モデリングを使用して、生成され得る。たとえば、様々な合成3D路面が、道路方向及び横の表面勾配の変化をシミュレーションするために、変更されたパラメータで3D路面をモデル化することによって、生成され得る。非限定的実例として、合成3D表面は、合成3D表面の3D曲線をモデル化すること及び3D曲線を3D表面へと拡張することによって、作成され得る。結果として生じる合成3D表面(又は、それの構成要素曲線)が、サンプリングされ得、サンプリングされた点は、合成グラウンド・トゥルース投影画像(たとえば、2D高さマップ)を形成するために、投影され得る。対応する入力トレーニング・データを生成するために、3D構造推定中にどの画素が観測されないままであり得るかを表す知られているパターンが、生成され得、観測されていない値を有する対応する低密度投影画像をシミュレーションするために、グラウンド・トゥルース投影画像に適用され得る。そのようなものとして、合成低密度入力投影画像及び高密度グラウンド・トゥルース投影画像が、生成され、トレーニング・データセットに含まれ得る。
【0101】
図11は、本開示のいくつかの実施例による、所望の表面の例示的パラメトリック数学モデルのイラストレーションである。
図11に示す実例では、3D表面は、縦曲線l及び横曲線q
jでモデル化される。モデル化されている3D表面が3D路面である、例示的実施例において、縦曲線l及び横曲線q
jを定義するパラメトリック方程式のパラメータは、異なるタイプの3D路面をシミュレーションするために、変化させられ得る。
【0102】
非限定的実例として、合成3D路面の3D曲線は、3D曲線の縦、横、及び高さ値をサンプリングすることによって、生成され得る。たとえば、合成3D表面の合成3D曲線の所望のセットの縦値[x
0,…,x
n]が、最初にサンプリング又は他の方法で選択され得る。例示的路面について、縦値は、深層学習モデル表面推定器の所望の知覚範囲、たとえば、0から300m、を表し得る。いくつかの実施例において、合成3D曲線の横の値は、縦値の二次多項式x:y=ax
2+bx+cとして計算され得る。合成3D路面を含む実施例において、複数の合成3D曲線が、異なる合成3D曲線の道路方向の異なる変化(たとえば、曲線、曲がり角など)をシミュレーションするために、多項式定数a、b、及び/又はcの異なる値をサンプリングすることによって、生成され得る。いくつかの実施例において、合成3D曲線の高さ値が、フーリエ基底の線形結合として計算され得る:
【数2】
ここで、Kは、フーリエ基底の数であり、cは、特定の基底kの重みであり、fは、特定の基底kの周波数である。合成3D路面を含む実施例において、異なる高さ値が、異なる合成3D曲線の表面高さの異なる変化をシミュレーションするために、基底の数K、特定の基底kの重みc、及び/又は特定の基底kの周波数fの異なるサンプル値を使用して、異なる合成3D曲線について計算され得る。結果は、
図11に示された実例において曲線lによって表された縦3D曲線でもよい。
【0103】
いくつかの実施例において、縦3D曲線は、3D表面に拡張され得る。たとえば、縦3D曲線は、[1,…,n]におけるjの任意の数の点{x
j,y
j,z
j}を含み得、縦3D曲線の任意の所与の点(たとえば、各点)は、
図11に示す実例において曲線q
jによって表された、対応する横3D曲線へと拡張され得る。たとえば、パラメータαは、合成3D表面(たとえば、合成3D路面)と表面(たとえば、グラウンド・プレーン、z=0)の間の角度を示すように定義され得、αの異なる値が、縦3D曲線の及び/又は異なる合成3D曲線の異なる点における異なる横の表面勾配をシミュレーションするために、サンプリングされ得る。縦3D曲線lの特定の3D点p
j={x
j,y
j,z
j}について、3D点は、p
jを通過する、p
jにおいて曲線lと垂直な、及び表面z=0に対して角度αを有する、横3D曲線q
jへと拡張され得る。任意のタイプの横3D曲線が、使用され得(たとえば、線形、多項式など)、任意の所与の横3D曲線q
jが、m回サンプリングされて、縦3D曲線lの対応する3D点p
j={x
j,y
j,z
j}を1セットの3D点{x
ij,y
ij,z
ij}、i=[1,…,m]、へと拡張し得、ここで、mの異なる値が、縦3D曲線の及び/又は異なる合成3D表面の異なる点における異なる道路幅をシミュレーションするために、サンプリングされ得る。プロセスは、グラウンド・トゥルース投影画像(たとえば、グラウンド・トゥルース2D高さマップ)を形成するために投影され得る、高密度3D点群を生成するために、縦3D曲線の任意の所与の点(たとえば、各点)について繰り返され得る。
【0104】
対応する入力トレーニング・データを生成するために、どの画素が3D推定によって観測されないままであり得るかを表す知られているパターンが、画素値のサブセットを相殺して(たとえば、それらの画素値をゼロに設定して)観測されていない値をシミュレーションするために、生成され、グラウンド・トゥルース投影画像に適用され得る。たとえば、グラウンド・トゥルース高さマップがサイズHxWであると仮定する。本例では、サイズHxWのNバイナリ・マップによって表されたパターンが、現実世界データに3D推定を実行することによって、生成され得る。たとえば、1つ又は複数の車両(たとえば、
図17A~Dの車両1700)は、さらに詳しく後述するように、現実世界(たとえば、物理)環境において車両の1つ又は複数のセンサ(たとえば、カメラ)からセンサ・データ(たとえば、画像データ)のフレームを収集し得る。所望の表面(たとえば、3D路面)の3D表面構造が、センサ・データの各フレームから推定され得(本明細書に記載のように)、3D構造の結果的表現(たとえば、低密度3D点群)が、観測された値と観測されていない値との両方を含み得る、低密度投影画像(たとえば、低密度2D高さマップ)を形成するために投影され得る。サイズHxWのN低密度投影画像のそれぞれについて、サイズHxWの対応するバイナリ・マップが、どの画素が観測されたか及び観測されていないかを表すために、生成され得る。たとえば、観測された値に対応するバイナリ・マップの画素は、1に設定され得、観測されていない値に対応する画素は、0に設定され得る。そのようなものとして、バイナリ・マップのNxHxWパターンが、どの画素が3D推定によって観測されないままであり得るかを表すために、生成され得る。
【0105】
各合成グラウンド・トゥルース投影画像について、Nバイナリ・マップのうちの1つが、対応する合成低密度投影画像を生成ために、ランダムにサンプリングされ、合成グラウンド・トゥルース投影画像に適用され得る(たとえば、要素ごとの乗算を使用して)。そのようなものとして、合成入力及びグラウンド・トゥルース投影画像のペアが、生成され、トレーニング・データセットに追加され得る。
【0106】
現実世界センサ・データからのトレーニング・データの生成。いくつかの実施例において、トレーニング・データが、現実世界センサ・データを収集すること及び注釈を付けることによって、生成され得る。たとえば、1つ又は複数の車両は、現実世界(たとえば、物理)環境における車両の1つ又は複数のセンサ(たとえば、カメラ及びLiDARセンサ)からセンサ・データ(たとえば、画像データ及びLiDARデータ)のフレームを収集し得る。いくつかの実施例において、LiDARデータは、平滑化する、外れ値除去を受ける、欠損値を内挿するための三角形分割を受ける、複数のLiDARセンサから蓄積する、画像データの対応するフレームと時間的に及び/又は空間的に整列させる、及び対象表面(たとえば、3D路面)の3D点を識別するために注釈を付けることが可能である。識別された3D点の表現(たとえば、3D点群、投影画像)は、グラウンド・トゥルース・トレーニング・データとして指定され得る。いくつかの実施例において、物体検出、自由空間推定、及び/又は画像セグメント化が、グラウンド・トゥルース・トレーニング・データとして指定され得る、対応するセグメント化マスクを生成するために、画像データのフレームに適用され得る。画像データの対応するフレームは、3D推定を受けることができ、対象表面(たとえば、3D点群、投影画像)の結果として生じる低密度表現は、入力トレーニング・データとして指定され得る。たとえば、対応する低密度投影画像、カメラ・フレーム、高密度投影画像、及び/又はセグメント化マスクは、ともにグループ化され、トレーニング・データセットに含まれ得る。
【0107】
図12は、本開示のいくつかの実施例による、収集された現実世界データを使用する例示的グラウンド・トゥルース生成パイプライン1200を示すデータ流れ図である。例示的グラウンド・トゥルース生成パイプライン1200は、記録エンジン1205、3D構造推定器1220、自由空間推定器1225、プリプロセッサ1240、アライナ1250、及び注釈構成要素1260を含む。
【0108】
いくつかの実施例において、1つ又は複数のデータ収集車両(たとえば、
図17A~Dの車両1700)は、1つ又は複数のカメラ及びLiDARセンサを装備し得、各データ収集車両に関連する記録エンジン1205は、車両が現実世界(たとえば、物理)環境を通って移動する間に、センサ・データを記録し得る。一般に、データ・キャプチャ車両は、任意の数及びタイプのセンサ(
図17A~17Cに示すセンサを含むが、これらに限定されない)を装備し得る。たとえば、いくつかのカメラ(たとえば、ステレオ・カメラ1768、ワイド・ビュー・カメラ1770(たとえば、魚眼カメラ)、赤外線カメラ1772、サラウンド・カメラ1774(たとえば、360度カメラ)、及び/又は長距離及び/又は中距離カメラ1798)、LIDARセンサ1764、及び/又は他のセンサ・タイプが、カメラの視野とセンサの視野-又は、知覚フィールド-との重複が存在するように、車両に配置され得る。センサの空間的レイアウトは、自己較正アルゴリズムを介して、いくつかの実施例において、較正され得、センサの同期は、センサ・キャプチャの時間的整列を示すように制御され得る。そのようなものとして、記録エンジン1205は、1つ又は複数のカメラからの画像データのフレーム1210及び/又は1つ又は複数のLiDARセンサからのLiDARデータ1215をキャプチャし得る。
【0109】
いくつかの実施例において、LiDARデータ1215は、グラウンド・トゥルース・トレーニング・データを生成するために、使用され得る。
図12に示す実例において、プリプロセッサ1240は、ラベリングの前にLiDARデータ1215に関する1つ又は複数の処理動作を実行する。たとえば、いくつかの実施例において、プリプロセッサ1240は、カルマン・フィルタなどの状態推定器を含み得る、時間的平滑化を実行し得る。時間的平滑化が、データ・キャプチャ車両に対する3D世界空間において、世界空間における何らかの固定原点に対する3D世界空間において、又は2D世界空間における鳥瞰図において、適用され得る。いくつかの実施例において、プリプロセッサ1240は、LiDARデータ1215で外れ値除去を実行し得る(たとえば、
図2の外れ値リムーバ220に関して本明細書に記載の技法と同様に)。場合によっては、結果として生じるLiDARは、まだ低密度であり得る。したがって、いくつかの実施例において、プリプロセッサ1240は、三角形分割アルゴリズムを使用して、欠損値を内挿し得る(たとえば、
図10のポストプロセッサ1070に関して本明細書に記載のように)。追加で又は別法として、プリプロセッサ1240は、複数のLidARセンサからLiDARデータを蓄積して、結果として生じるLiDARデータを高密度化し得る。実例として、
図13Aは、単一のLiDARスキャンから収集されたLiDARデータの一実例を示し、
図13Bは、複数のLiDARスキャンから(たとえば、複数のLiDARセンサから)蓄積されたLiDARデータの一実例を示す。これらは、ごくわずかな実例であり、他のタイプの事前処理動作が、追加で又は別法として、実行され得る。
【0110】
いくつかの実施例において、アライナ1250は、画像データの対応するフレーム1210とLiDARデータを時間的に整列させ得る。一般に、センサ・データは、様々な理由、たとえば、遅延線における差、サンプリング周波数の差(たとえば、30fpsで実行するカメラ対10fpsで実行するLiDAR)、異なるトリガ時間、及び他の理由、で異なる周波数において異なるセンサから取得され得る。類似の世界状態のセンサ・データ(たとえば、ほぼ同時にキャプチャされたセンサ・データ)のグループ化及び/又は提示を容易にするために、時間的整列が、異なるセンサからのセンサ・データを同期するために、実行され得る。たとえば、特定のセンサが、基準センサとして使用され得、他のセンサは、子センサと称され得る。基準センサからのセンサ・データの所与のフレーム(基準フレーム)について、時間デルタなどのオフセットが、基準フレームと各子センサからのセンサ・データの時間的に最も近いフレームとの間で識別され得る。各子センサのオフセットは、子センサからのセンサ・データのキャプチャ時間又は何らかの他のインデックスに記録及び/又は適用され得る。したがって、センサ単位のオフセットの決定及び/又は適用は、異なるタイプのセンサ・データを時間的に整列させる役割を果たし得る(たとえば、それらのインデックスを整列させることによって)。異なるタイプのセンサからのセンサ・データを整列させるための例示的技法については、2021年4月26日に出願された、「Ground Truth Data Generation for Deep Neural Network Perception in Autonomous Driving Applications」という題名の米国非仮特許出願第17/187,350号において説明されており、その内容のすべてが参照により本明細書に組み込まれている。
【0111】
追加で又は別法として、アライナ1250は、環境の同じ物体又は他の部分を表す異なるタイプのセンサ・データをマッチさせるために、画像データの対応するフレーム1210とLiDARデータを空間的に整列させ得る。たとえば、LIDARデータ点は、LiDARデータ点をキャプチャしたLiDARセンサと画像データを生成したカメラとの間の相対的向き、位置、視野、及び同類のものを使用して、画像空間内の画素と相互に関連付けられ得る。異なるセンサからのセンサ・データを相互に関連付けるための技法については、2019年3月15日に出願された、「Sequential Neural Network-Based Temporal Information Prediction in Autonomous Driving Applications」という題名の米国仮特許出願第62/514,404号、及び、2019年7月17日に出願された、「Temporal Information Prediction in Autonomous Machine Applications」という題名の米国非仮特許出願第16/514,404号において説明されており、それらの内容のすべては、参照により本明細書に組み込まれている。
【0112】
いくつかの実施例において、LiDARデータは、対象3D表面(たとえば、3D路面)の点を識別するために、注釈を付けられ得る。一般に、注釈は、合成的に製作する(たとえば、コンピュータモデル又はレンダリングから生成する)こと、現実に製作する(たとえば、現実世界データから設計及び製作する)こと、マシンにより自動化する(たとえば、データから特徴を抽出する及び次いでラベルを生成するための特徴分析及び学習を使用して)こと、人が注釈を付けること(たとえば、ラベラ、又は注釈専門家、が、注釈を入力すること)、及び/又はその組合せ(たとえば、人がポリラインの頂点を識別する、マシンが、ポリゴン・ラスタライザを使用して、ポリゴンを生成する)が可能である。
【0113】
いくつかの実施例において、注釈構成要素1260は、ウェブ・ツールなどのソフトウェア・ツール(ラベリング・ツールとも称される)を含み得る。注釈シーンのシーケンス(たとえば、おおよそその時間にキャプチャされた、整列させられたLiDARデータ及び画像データのセット)が、生成され得、対応するラベリング・タスクが、ラベリング・ツールにエンコードされ得、注釈が、ソフトウェア・ツールを使用して、生成され得る。いくつかの実施例において、ラベリング・ツールは、注釈シーンにおける整列させられたLiDARデータ及び画像データを人間ラベラに提示し得(たとえば、サイド・バイ・サイドで)、及び/又は情報は、有用な文脈情報、たとえば、異なるタイプのセンサ・データ間の対応、を提供するために、異なるタイプのセンサ・データを横断して投影され得る。ラベリング・ツールは、対象表面の点(たとえば、3D点、境界線、囲まれた領域、クラス・ラベル)を識別するグラウンド・トゥルース注釈を指定する入力を受け入れることができ、ラベリング・ツールは、注釈をセンサ・データと関連付けることができる。例示的ラベリング・ツールについては、2021年4月26日に出願された、「Ground Truth Data Generation for Deep Neural Network Perception in Autonomous Driving Applications」という題名の米国非仮特許出願第17/187,350号において説明されている。そのようなものとして、注釈構成要素1260は、対象表面(たとえば、3D点群、投影画像)の点を識別する入力を受け入れることができ、グラウンド・トゥルース・トレーニング・データ1295として指定され得るトレーニングされることになっている深層学習モデルの出力のビュー、サイズ、及び次元性にマッチする識別された点の表現を生成することができる。
【0114】
いくつかの実施例において、グラウンド・トゥルース・セグメント化マスクが、画像データのフレーム1210から生成され得る。たとえば、自由空間推定器1225は、所望のクラスの一部(たとえば、路面)である画像データの領域(たとえば、画素)を分類、セグメント化、及び/又は予測するために、キャプチャされた画像で自由空間推定及び/又は画像セグメント化を実行し得る。たとえば、もう1つのマシン学習モデル(たとえば、畳み込みニューラル・ネットワーク)は、走行可能な路面若しくは他のナビゲート可能な空間、他の環境の部分(たとえば、歩道、建物)、有生物体、及び/又は他のクラスに属する画素を表す1つ又は複数のセグメント化マスク1230及び/又は信頼性マップを予測するようにトレーニングされ得る。そのようなものとして、検出された表面のセグメント化マスク1230又は他の表現が、グラウンド・トゥルース・トレーニング・データ1295として指定され得る。
【0115】
対応する入力トレーニング・データを生成するために、画像データの任意の所与のフレーム1210について、3D構造推定器1220は、フレーム1210から対象表面(たとえば、路面)の3D表面構造を推定し得る(たとえば、
図1の3D構造推定器105及び/又は
図10の3D構造推定器1050に関して前述したように)。いくつかの実施例において、3D構造推定器1220は、セグメント化マスク1230を使用して、セグメント化マスクによって表されるクラスに属する推定3D構造から点(たとえば、対象表面、たとえば、3D路面、に属する点)を選択し得る。いくつかの実施例において、結果として生じる点は、投影画像(たとえば、2D高さマップ)を形成するために投影され得る。結果は、対象表面の3D構造の低密度表現(たとえば、低密度点群、低密度投影画像)でもよい。3D構造の低密度表現及び/又は画像データのフレーム1210は、入力トレーニング・データ1290として指定され得る。
【0116】
そのようなものとして、入力トレーニング・データ1290は、対応するグラウンド・トゥルース・トレーニング・データ1295(たとえば、対象表面の3D点の高密度投影画像若しくは他の表現及び/又はセグメント化マスク1230)とペアにされ得、トレーニング・データセットに含まれ得る。
【0117】
トレーニング。いくつかの実施例において、3D表面再構成システムの深層学習モデル(たとえば、
図5又は6の深層学習モデル535)のトレーニング・データセットが、トレーニングされることになっている深層学習モデルの入力及び出力に基づいて、生成、コンパイル、及び/又は選択され得る。たとえば、ある種の実装形態は、3D表面構造の低密度表現(たとえば、低密度高さマップ)及び/又は何らかの他の視点からの画像データ(たとえば、透視図の画像)を含む入力トレーニングと、3D表面構造の高密度表現(たとえば、高密度高さマップ)及び/又はセグメント化マスク(たとえば、道路若しくは他の走行可能な空間などの所望の表面を識別する)を含むグラウンド・トゥルース・トレーニング・データとを必要とし得る。そのようなものとして、入力を有するトレーニング・データセットと所望の深層学習モデルの入力及び出力のビュー、サイズ、及び次元性にマッチするグラウンド・トゥルース・トレーニング・データとが、本明細書に記載の技法を使用して、取得され得、深層学習モデルは、選択されたトレーニング・データセットを使用して、トレーニングされ得る。深層学習モデルが1つ又は複数の再帰層(たとえば、ゲート付き再帰ユニット、長・短期記憶)を含む実施例において、入力トレーニング・データは、単一サンプルとして複数のフレーム(たとえば、連続的タイム・スライスからの)を含み得る。
【0118】
一般に、任意の適切な損失関数が、トレーニング中に深層学習モデルを更新するために使用され得る。たとえば、1つ又は複数の損失関数が、深層学習モデルの出力の精度をグラウンド・トゥルースと比較するために、使用され得(たとえば、L1又はL2損失などの回帰損失関数が、回帰タスクのために使用され得)、深層学習モデルのパラメータは、精度が最適又は許容レベルに達するまで、更新され得る(たとえば、逆方向パス、逆伝搬、順方向パスなどを使用して)。深層学習モデルが複数のヘッドを含むいくつかの実施例において、複数のヘッドが、共通のトランクと、同じデータセットで共同トレーニングされ得る。この方式において、異なるヘッド(タスク)は、互いに助け合って学習し得る。
【0119】
深層学習モデルが、高さマップを予測する回帰ヘッドを含む、例示的実施例において、深層学習モデルは、グラウンド・トゥルース高さマップ及びグラウンド・トゥルース・セグメント化マスクを使用して、高さマップを予測することを学習し得る。たとえば、L1又はL2損失などの回帰損失関数が、予測高さマップをグラウンド・トゥルース高さマップと比較するために、使用され得、結果は、高密度化されることになっている領域外で生じる予測に基づいて深層学習モデルへの更新を効果的に相殺して、高密度化されることになっている表面を示すグラウンド・トゥルース・セグメント化マスクを乗じられ得る。
【0120】
深層学習モデルが、高さマップを予測する回帰ヘッド及び高さマップに対応する信頼性マップを予測する信頼性ヘッドを含む、別の実施例において、深層学習モデルは、グラウンド・トゥルース高さマップから高さマップと信頼性マップとの両方を予測することを学習し得る。たとえば、予測される高さとグラウンド・トゥルース高さとを比較する、及び予測される信頼性値に基づいて補正する、損失関数が、使用され得る。そのような損失関数の一実例は、以下によって与えられ得る:
【数3】
ここで、yは、予測高さであり、y’は、対応するグラウンド・トゥルース高さであり、cは、予測高さに対応する予測される信頼性値である。本例では、予測高さが、実質的に誤っている(したがって、||y’-y||が大きい)場合、この損失関数を最小化することは、cの大きい値を促す。そのようなものとして、本例では、cの大きい値は、低い信頼性を示し得る。方程式6によって与えられる例示的損失におけるlog項は、cが無限に大きくなるのを防ぐ。そのようなものとして、このような損失関数は、グラウンド・トゥルース信頼性マップの必要なしに、高さマップと信頼性マップとの両方を予測するように深層学習モデルをトレーニングするために使用され得る。そのようなものとして、深層学習モデルは、3D構造の低密度表現と高密度表現とのマッピングを学習することによって、高密度化を実行するようにトレーニングされ得る。
【0121】
ここで
図14~16を参照すると、本明細書に記載の方法1400~1600の各ブロックは、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組合せを使用して実行することができる計算プロセスを含む。たとえば、様々な機能が、メモリに記憶された命令を実行するプロセッサによって、実施され得る。方法はまた、コンピュータ記憶媒体に記憶されたコンピュータ使用可能命令として実施され得る。方法は、いくつか例を挙げると、独立型アプリケーション、サービス若しくはホスト型サービス(独立型の若しくは別のホスト型サービスと組み合わせた)、又は別の製品へのプラグインによって、提供され得る。加えて、方法1400~1600は、例として、例示的システムに関して説明されているが、これらの方法は、本明細書に記載のものを含むが、これらに限定されない、任意の1つのシステム、又は任意の組合せのシステムによって、追加で又は別法として、実行され得る。
【0122】
図14は、本開示のいくつかの実施例による、シミュレーション画像データを使用して3D表面構造の高密度化された表現を生成するように1つ又は複数のニューラル・ネットワーク(NN)をトレーニングするための方法1400を示す流れ図である。方法1400は、ブロックB1402において、シミュレーション画像データ及び対応する分類データ及び範囲データにアクセスすることを含む。たとえば、
図10のシミュレータ構成要素1010は、シミュレーションを実行して仮想世界又は環境(たとえば、シミュレーション環境)をシミュレーションし得、仮想車両又は他の物体が、シミュレーション環境内でシミュレーションされ得る。仮想車両又は物体は、任意の数のセンサ(たとえば、仮想又はシミュレーションされたセンサ)を含み得、仮想センサ・データは、センサについてシミュレーションされ得る。そのようなものとして、仮想センサ・データのフレーム(たとえば、仮想車両の仮想カメラの視野に対応する仮想画像データ)と、対応するセグメント化マスク及び深度図が、シミュレーション環境に基づいて生成され得る。
【0123】
方法1400は、ブロックB1404において、シミュレーション画像データによって表された道路の3次元(3D)表面構造の第1の表現を、シミュレーション画像データに少なくとも部分的に基づいて、生成することを含む。たとえば、
図10の3D構造推定器1050は、レンダリングされた画像に関して3D構造推定を実行することによって、レンダリングされた画像(たとえば、フレーム1020)において描写された道路の3D表面構造の低密度表現(たとえば、低密度点群、投影画像)を生成し得る。
【0124】
方法1400は、ブロックB1406において、道路の3D表面構造の第2の表現を、範囲データ及び分類データに少なくとも基づいて、生成することを含む。たとえば、
図10の3D点群ジェネレータ1060は、それに対して深度
図1040の範囲値が生成された仮想カメラの知られている場所及び向きを使用して、3D世界座標への深度
図1040からの範囲値の投影を解除することができ、3D点群ジェネレータ1060は、セグメント化マスク1030を使用して対象表面(たとえば、路面)の3D点をフィルタで除去することができ、そして、ポストプロセッサ1070は、欠損値を埋めるために使用され得る。
【0125】
方法1400は、ブロックB1408において、3D表面構造の第1の表現を入力トレーニング・データを使用して及び3D表面構造の第2の表現をグラウンド・トゥルース・トレーニング・データとして使用して3D表面構造の高密度化された表現を生成するように1つ又は複数のニューラル・ネットワーク(NN)をトレーニングすること含む。
【0126】
図15は、本開示のいくつかの実施例による、トレーニング・データセットのための合成3D路面の不完全な及びグラウンド・トゥルース表現を生成するための方法1500を示す流れ図である。方法1500は、ブロックB1502において、合成道路を表す縦3次元(3D)曲線の表現を生成することを含む。たとえば、
図11に関して、縦曲線lの表現が、深層学習モデル表面推定器の所望の知覚範囲を表す縦値、縦値の二次多項式として計算された横値、及びフーリエ基底の線形結合として計算された高さ値で生成され得る。
【0127】
方法1500は、ブロックB1504において、縦3D曲線の1つ又は複数の点の各点について、その点を通る横3D曲線に点を拡張することを含む。たとえば、
図11に関して、縦3D曲線l上の任意の所与の点(たとえば、各点)は、曲線q
jによって表された、対応する横3D曲線に拡張され得る。いくつかの実施例において、パラメータαは、合成3D表面(たとえば、合成3D路面)と表面z=0(たとえば、グラウンド・プレーン)との間の角度を示すように定義され得、αの異なる値は、縦3D曲線上の及び/又は異なる合成3D曲線の異なる点における異なる横の表面勾配をシミュレーションするために、サンプリングされ得る。そのようなものとして、縦3D曲線l上の任意の所与の点(たとえば、各点)、点は、p
jにおいて曲線lに垂直な、及び表面z=0に対する角度αを有する、p
jを通過する横3D曲線q
jに拡張され得る。
【0128】
方法1500は、ブロックB1506において、縦3D曲線上の複数の点の横3D曲線に少なくとも基づいて合成道路の合成3D路面のグラウンド・トゥルース表現を生成することを含む。たとえば、
図11に関して、任意の所与の横3D曲線q
jは、縦3D曲線l上の対応する3D点を1セットの3D点に拡張して縦3D曲線上の異なる点における異なる道路幅をシミュレーションするために、m回サンプリングされ得る。プロセスは、グラウンド・トゥルース投影画像(たとえば、グラウンド・トゥルース2D高さマップ)を形成するために投影され得る、高密度3D点群を生成するために、縦3D曲線lの任意の所与の点(たとえば、各点)について繰り返され得る。
【0129】
方法1500は、ブロックB1508において、合成3D路面のグラウンド・トゥルース表現に少なくとも基づいて合成3D路面の不完全な表現を生成することを含む。たとえば、サイズHxWのNバイナリ・マップによって表されたパターンが、現実世界データに3D推定を実行すること、及びキャプチャされた画像から3D推定を実行したときにどの画素が観測されるか及び観測されないかの表現をエンコードすることによって、生成され得る。そのようなものとして、Nバイナリ・マップのうちの1つmaybeランダムにサンプリングされ得、合成3D路面の対応する不完全な表現を生成するために、合成3D路面のグラウンド・トゥルース表現に適用され得る(たとえば、要素ごとの乗算を使用して)。
【0130】
ブロックB1510において、不完全な表現及びグラウンド・トゥルース表現は、トレーニング・データセットに含まれる。
【0131】
図16は、本開示のいくつかの実施例による、キャプチャ・セッション中にキャプチャされた画像データ及びLiDARデータを使用して3D表面構造の高密度化された表現を生成するように1つ又は複数のニューラル・ネットワーク(NN)をトレーニングするための方法1600を示す流れ図である。方法1600は、ブロックB1602において、環境においてキャプチャ・セッション中にキャプチャされた画像データ及びLiDARデータにアクセスすることを含む。たとえば、データ収集車両は、1つ又は複数のカメラ及びLiDARセンサを装備し得、
図12の記録エンジン1205は、車両が現実世界(たとえば、物理)環境を移動する間に、センサ・データを記録し得る。
【0132】
方法1600は、ブロックB1604において、環境内の道路の3次元(3D)表面構造の不完全な表現を、画像データに少なくとも基づいて、生成することを含む。たとえば、画像データの任意の所与のフレーム1210について、
図12の3D構造推定器1220は、フレーム1210から道路の3D表面構造を推定し得る(たとえば、
図1の3D構造推定器105及び/又は
図10の3D構造推定器1050に関して前述したように)。いくつかの実施例において、3D構造推定器1220は、セグメント化マスク1230を使用して、セグメント化マスクによって表されるクラスに属する推定3D構造から点(たとえば、3D路面に属する点)を選択し得る。いくつかの実施例において、結果として生じる点は、投影画像(たとえば、2D高さマップ)を形成するために投影され得る。
【0133】
方法1600は、ブロック1606において、道路の3D表面構造の第2の表現を、LiDARデータのラベリングに少なくとも基づいて、生成することを含む。たとえば、
図12に関して、プリプロセッサ1240は、ラベリングより前にLiDARデータ1215に1つ又は複数の処理動作、たとえば、時間的平滑化、外れ値除去、三角形分割、及び/又は複数のLiDARセンサからの蓄積、を実行し得る。いくつかの実施例において、アライナ1250は、LiDARデータを画像データの対応するフレーム1210と時間的に及び/又は空間的に整列させ得る。例示的実施例において、注釈構成要素1260は、人間ラベラに対して注釈シーンにおいて整列したLiDARデータ及び画像データを提示することができ、対象表面の点を識別するグラウンド・トゥルース注釈を指定する入力を受け入れ、トレーニングされることになっている深層学習モデルの出力のビュー、サイズ、及び次元性にマッチする識別された点の表現を生成することができる。
【0134】
方法1600は、ブロックB1608において、3D表面構造の不完全な表現を入力トレーニング・データとして使用して及び3D表面構造の第2の表現をグラウンド・トゥルース・トレーニング・データとして使用して3D表面構造の高密度化された表現を生成するように1つ又は複数のニューラル・ネットワーク(NN)をトレーニングすることを含む。
【0135】
例示的自律型車両
図17Aは、本開示のいくつかの実施例による、例示的自律型車両1700の図である。自律型車両1700(或いは、本明細書で「車両1700」と称される)は、旅客車両、たとえば、乗用車、トラック、バス、ファースト・レスポンダ車両、シャトル、電気又は原動機付自転車、オートバイ、消防車、警察車両、救急車、ボート、建設車両、潜水艦、ドローン、トレーラに連結された車両、及び/又は別のタイプの車両(たとえば、無人の及び/又は1人若しくは複数の乗客を乗せた)を含み得るが、これらに限定されない。自律型車両は、一般に、米国運輸省道路交通安全局(NHTSA:National Highway Traffic Safety Administration)、米国運輸省の部署、及び自動車技術者協会(SAE:Society of Automotive Engineers)「Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicle」(2018年6月15日に公開された規格番号J3016-201806、2016年9月30日に公開された規格番号J3016-201609、及びこの規格の前の及び未来のバージョン)によって定義される、自動化レベルに関して記述される。移動車1700は、自律運転レベルのレベル3~レベル5のうちの1つ又は複数による機能の能力を有し得る。たとえば、車両1700は、実施例に応じて、条件的自動化(レベル3)、高い自動化(レベル4)、及び/又は完全な自動化(レベル5)の能力を有し得る。
【0136】
移動車1700は、移動車のシャシ、車体、車輪(たとえば、2、4、6、8、18など)、タイヤ、車軸、及び他の構成要素などの構成要素を含み得る。移動車1700は、内部燃焼エンジン、ハイブリッド動力装置、完全な電気式エンジン、及び/又は別の推進システム・タイプなど、推進システム1750を含み得る。推進システム1750は、移動車1700の推進力を有効にするために、トランスミッションを含み得る、移動車1700のドライブ・トレインに接続され得る。推進システム1750は、スロットル/加速装置1752からの信号の受信に応答して制御され得る。
【0137】
ハンドルを含み得る、ステアリング・システム1754は、推進システム1750が動作しているときに(たとえば、移動車が移動中のときに)移動車1700のかじを取る(たとえば、所望の進路又はルートに沿って)ために使用され得る。ステアリング・システム1754は、ステアリング・アクチュエータ1756から信号を受信することができる。ハンドルは、完全自動化(レベル5)機能のオプションでもよい。
【0138】
ブレーキ・センサ・システム1746は、ブレーキ・アクチュエータ1748及び/又はブレーキ・センサからの信号の受信に応答して移動車ブレーキを動作させるために使用され得る。
【0139】
1つ又は複数のシステム・オン・チップ(SoC:system on Chip)1704(
図17C)及び/又はGPUを含み得る、コントローラ1736は、移動車1700の1つ若しくは複数の構成要素及び/又はシステムに信号(たとえば、コマンドの表現)を提供することができる。たとえば、コントローラは、1つ又は複数のブレーキ・アクチュエータ1748を介して移動車ブレーキを動作させて、1つ又は複数のステアリング・アクチュエータ1756を介してステアリング・システム1754を動作させて、1つ又は複数のスロットル/加速装置1752を介して推進システム1750を動作させるために、信号を送ることができる。コントローラ1736は、センサ信号を処理する、並びに律的運転を可能にするために及び/又は運転者の移動車1700の運転を支援するために動作コマンド(たとえば、コマンドを表す信号)を出力する、1つ又は複数の搭載された(たとえば、統合された)計算デバイス(たとえば、スーパーコンピュータ)を含み得る。コントローラ1736は、自律運転機能のための第1のコントローラ1736、機能的安全性機能のための第2のコントローラ1736、人工知能機能(たとえば、コンピュータ・ビジョン)のための第3のコントローラ1736、インフォテインメント機能のための第4のコントローラ1736、緊急状態における冗長性のための第5のコントローラ1736、及び/又は他のコントローラを含み得る。いくつかの実例では、単一のコントローラ1736が、前述の機能のうちの2個以上を処理することができ、2個以上のコントローラ1736が、単一の機能、及び/又はその任意の組合せを処理することができる。
【0140】
コントローラ1736は、1つ又は複数のセンサから受信したセンサ・データ(たとえば、センサ入力)に応答して移動車1700の1つ若しくは複数の構成要素及び/又はシステムを制御するための信号を提供することができる。センサ・データは、たとえば、そして制限なしに、全地球的航法衛星システム・センサ1758(たとえば、グローバル・ポジショニング・システム・センサ)、RADARセンサ1760、超音波センサ1762、LIDARセンサ1764、慣性計測装置(IMU:inertial measurement unit)センサ1766(たとえば、加速度計、ジャイロスコープ、磁気コンパス、磁力計など)、マイクロフォン1796、ステレオ・カメラ1768、ワイドビュー・カメラ1770(たとえば、魚眼カメラ)、赤外線カメラ1772、サラウンド・カメラ1774(たとえば、360度カメラ)、長距離及び/又は中距離カメラ1798、スピード・センサ1744(たとえば、移動車1700のスピードを測定するための)、振動センサ1742、ステアリング・センサ1740、ブレーキ・センサ(たとえば、ブレーキ・センサ・システム1746の一部としての)、及び/又は他のセンサ・タイプから受信され得る。
【0141】
コントローラ1736のうちの1つ又は複数のコントローラは、移動車1700の計器群1732から入力(たとえば、入力データによって表される)を受信し、出力(たとえば、出力データ、表示データなどによって表される)をヒューマン・マシン・インターフェース(HMI:human-machine interface)ディスプレイ1734、可聴式アナンシエータ、ラウドスピーカ、及び/又は移動車1700の他の構成要素を介して提供することができる。出力は、移動車ベロシティ、スピード、時間、マップ・データ(たとえば、
図17CのHDマップ1722)、位置データ(たとえば、マップ上などの、移動車の1700の位置)、方向、他の移動車の位置(たとえば、占有グリッド)、コントローラ1736によって把握されるものとしての物体及び物体の状況に関する情報などの、情報を含み得る。たとえば、HMIディスプレイ1734は、1つ又は複数の物体(たとえば、道路標識、警告標識、交通信号の変化など)の存在、及び/又は移動車が行った、行っている、又は行うであろう運転操作(たとえば、今、車線変更をしていること、3.22km(2マイル)内の出口34Bを出ることなど)に関する情報を表示することができる。
【0142】
移動車1700はさらに、1つ若しくは複数のワイヤレス・アンテナ1726及び/又はモデムを使用して1つ若しくは複数のネットワークを介して通信することができるネットワーク・インターフェース1724を含む。たとえば、ネットワーク・インターフェース1724は、LTE、WCDMA(登録商標)、UMTS、GSM、CDMA2000などを介する通信の能力を有し得る。ワイヤレス・アンテナ1726はまた、ブルートゥース(登録商標)、ブルートゥース(登録商標)LE、Z-Wave、ZigBeeなどのローカル・エリア・ネットワーク、及び/又はLoRaWAN、SigFoxなどのロー・パワー・ワイドエリア・ネットワーク(LPWAN:low power wide-area network)を使用し、環境内の物体(たとえば、移動車、モバイル・デバイスなど)の間の通信を可能にすることができる。
【0143】
図17Bは、本開示のいくつかの実施例による、
図17Aの例示的自律型車両1700のカメラ位置及び視野の実例である。カメラ及びそれぞれの視野は、1つの例示的実施例であり、制限することは意図されていない。たとえば、追加の及び/又は代替カメラが含まれ得る、及び/又はカメラは移動車1700の異なる位置に置かれ得る。
【0144】
カメラのカメラ・タイプは、移動車1700の構成要素及び/又はシステムと使用するようになされ得るデジタル・カメラを含み得るが、これに限定されない。カメラは、自動車安全整合性レベル(ASIL:automotive safety integrity level)Bにおいて及び/又は別のASILにおいて動作することができる。カメラ・タイプは、実施例に応じて、60フレーム/秒(fps)、120fps、240fpsなど、任意の画像キャプチャ・レートの能力を有し得る。カメラは、ロール・シャッタ、グローバル・シャッタ、別のタイプのシャッタ、又はその組合せを使用する能力を有し得る。いくつかの実例では、カラー・フィルタ・アレイは、RCCC(red clear clear clear)カラー・フィルタ・アレイ、RCCB(red clear clear blue)カラー・フィルタ・アレイ、RBGC(red blue green clear)カラー・フィルタ・アレイ、Foveon X3カラー・フィルタ・アレイ、Bayerセンサ(RGGB)カラー・フィルタ・アレイ、モノクロ・センサ・カラー・フィルタ・アレイ、及び/又は別のタイプのカラー・フィルタ・アレイを含み得る。一部の実施例では、RCCC、RCCB、及び/又はRBGCカラー・フィルタ・アレイを有するカメラなどのクリア画素カメラは、光感度を上げるための取り組みにおいて使用され得る。
【0145】
いくつかの実例では、カメラのうちの1つ又は複数が、高度運転者支援システム(ADAS:advanced driver assistance system)機能(たとえば、冗長又はフェイルセーフ設計の一部として)を実行するために使用され得る。たとえば、多機能モノ・カメラは、車線逸脱警報、交通標識アシスト及びインテリジェント・ヘッドランプ制御を含む機能を提供するために設置され得る。カメラのうちの1つ又は複数(たとえば、すべてのカメラ)が、画像データ(たとえば、ビデオ)を同時に記録及び提供することができる。
【0146】
カメラのうちの1つ又は複数は、カメラの画像データ・キャプチャ能力を妨げることがある自動車内からの迷光及び反射(たとえば、フロントガラスのミラーにおいて反射されたダッシュボードからの反射)を取り除くために、カスタム設計された(3D印刷された)部品などの取付部品において取り付けられ得る。サイドミラー取付部品を参照すると、サイドミラー部品は、カメラ取付板がサイドミラーの形状に合うように、カスタム3D印刷され得る。いくつかの実例では、カメラは、サイドミラー内に統合され得る。サイドビュー・カメラについては、カメラはまた、キャビンの各角にある4個の支柱内に統合され得る。
【0147】
移動車1700の前の環境の部分を含む視野を有するカメラ(たとえば、前向きのカメラ)は、前向きの進路及び障害物の識別を助け、1つ若しくは複数のコントローラ1736及び/又は制御SoCの助けにより、占有グリッドの生成及び/又は好ましい移動車進路の決定に不可欠な情報の提供の提供を助けるための、サラウンド・ビューのために使用され得る。前向きのカメラは、緊急ブレーキ、歩行者検出、及び衝突回避を含む、LIDARと同じADAS機能の多くを実行するために使用され得る。前向きのカメラはまた、車線逸脱警報(LDW:Lane Departure Warning)、自律的クルーズ制御(ACC:Autonomous Cruise Control)、及び/又は交通標識認識などの他の機能を含むADAS機能及びシステムのために使用され得る。
【0148】
様々なカメラが、たとえば、CMOS(complementary metal oxide semiconductor)カラー画像化装置を含む単眼カメラ・プラットフォームを含む、前向きの構成において使用され得る。別の実例は、周辺(たとえば、歩行者、交差する交通又は自転車)からのビューに入る物体を把握するために使用され得るワイドビュー・カメラ1770でもよい。
図17Bにはワイドビュー・カメラは1つだけ示されているが、移動車1700には任意の数のワイドビュー・カメラ1770が存在し得る。加えて、長距離カメラ1798(たとえば、ロングビュー・ステレオ・カメラ・ペア)が、特に、ニューラル・ネットワークがまだトレーニングされていない物体について、深度ベースの物体検出のために使用され得る。長距離カメラ1798はまた、物体検出及び分類、並びに基本物体追跡のために使用され得る。
【0149】
1つ又は複数のステレオ・カメラ1768もまた、前向きの構成に含まれ得る。ステレオ・カメラ1768は、単一のチップ上に統合されたCAN又はイーサネット(登録商標)・インターフェースを有するプログラマブル論理(FPGA)及びマルチコア・マイクロプロセッサを提供し得る、拡張可能な処理ユニットを備えた統合された制御ユニットを含み得る。そのようなユニットは、画像内のすべてのポイントの距離推定値を含む、移動車の環境の3Dマップを生成するために使用され得る。代替ステレオ・カメラ1768は、2個のカメラ・レンズ(左と右に1つずつ)と、移動車から対象物体までの距離を測定する及び生成された情報(たとえば、メタデータ)を使用して自律的緊急ブレーキ及び車線逸脱警報機能をアクティブにすることができる画像処理チップとを含み得る、コンパクト・ステレオ・ビジョン・センサを含み得る。他のタイプのステレオ・カメラ1768が、本明細書に記載のものに加えて、又はそれらの代わりに、使用されてもよい。
【0150】
移動車1700の側面に対する環境の部分を含む視野を有するカメラ(たとえば、サイドビュー・カメラ)が、占有グリッドを作成及び更新するために並びに側面衝撃衝突警報を生成するために使用される情報を提供する、サラウンド・ビューのために使用され得る。たとえば、サラウンド・カメラ1774(たとえば、
図17Bに示されるような4個のサラウンド・カメラ1774)は、移動車1700上に位置付けられ得る。サラウンド・カメラ1774は、ワイドビュー・カメラ1770、魚眼カメラ、360度カメラ、及び/又は同類のものを含み得る。たとえば、4個の魚眼カメラが、移動車の前、後ろ、及び側面に配置され得る。代替配置において、移動車は、3個のサラウンド・カメラ1774(たとえば、左、右、及び後部)を使用してもよく、第4のサラウンド・ビュー・カメラとして1つ又は複数の他のカメラ(たとえば、前向きのカメラ)を活用してもよい。
【0151】
移動車1700の後ろに対する環境の部分を含む視野を有するカメラ(たとえば、後方確認カメラ)が、駐車支援、サラウンド・ビュー、後部衝突警報、並びに占有グリッドの作成及び更新のために使用され得る。本明細書に記載のように、前向きのカメラ(たとえば、長距離及び/又は中距離カメラ1798、ステレオ・カメラ1768)、赤外線カメラ1772など)としても適したカメラを含むがこれらに限定されない、多種多様なカメラが使用され得る。
【0152】
図17Cは、本開示のいくつかの実施例による、
図17Aの例示的自律型車両1700の例示的システム・アーキテクチャのブロック図である。本明細書に記載されているこの及び他の配置は単に実例として説明されていることを理解されたい。他の配置及び要素(たとえば、マシン、インターフェース、機能、順番、機能のグループ分けなど)が、示されたものに加えて又はこれらに代わって使用されてもよく、いくつかの要素はともに除外されてもよい。さらに、本明細書に記載の要素の多くは、個別の又は分散された構成要素として又は他の構成要素と併せて、並びに任意の適切な組合せ及び場所において、実装され得る機能エンティティである。エンティティによって実行されるものとして本明細書に記載された様々な機能は、ハードウェア、ファームウェア、及び/又はソフトウェアによって実施され得る。たとえば、様々な機能が、メモリに記憶された命令を実行するプロセッサによって実施され得る。
【0153】
図17Cの移動車1700の構成要素、特徴、及びシステムのそれぞれは、バス1702を介して接続されるものとして図示されている。バス1702は、コントローラ・エリア・ネットワーク(CAN)データ・インターフェース(或いは、「CANバス」と称される)を含み得る。CANは、ブレーキ、加速度、ブレーキ、ステアリング、フロントガラス・ワイパなどの作動など、移動車1700の様々な特徴及び機能の制御を助けるために使用される移動車1700内のネットワークでもよい。CANバスは、それぞれが独自の一意の識別子(たとえば、CAN ID)を有する、数ダース又は数百ものノードを有するように構成され得る。CANバスは、ハンドル角度、対地速度、1分間のエンジン回転(RPM:revolutions per minute)、ボタン位置、及び/又は他の移動車状況指標を見つけるために読み取られ得る。CANバスは、ASIL B準拠でもよい。
【0154】
バス1702は、CANバスであるものとして本明細書に記載されているが、これは制限することを意図されていない。たとえば、CANバスに加えて、又はこのその代替として、FlexRay及び/又はイーサネット(登録商標)が使用されてもよい。加えて、単一の線が、バス1702を表すために使用されているが、これは制限することを意図されていない。たとえば、1つ若しくは複数のCANバス、1つ若しくは複数のFlexRayバス、1つ若しくは複数のイーサネット(登録商標)・バス、及び/又は異なるプロトコルを使用する1つ若しくは複数の他のタイプのバスを含み得る、任意の数のバス1702が存在し得る。いくつかの実例では、2個以上のバス1702が、異なる機能を実行するために使用され得る、及び/又は冗長性のために使用され得る。たとえば、第1のバス1702は衝突回避機能のために使用されてもよく、第2のバス1702は作動制御のために使用されてもよい。任意の実例において、各バス1702は、移動車1700の構成要素のいずれかと通信し得、2個以上のバス1702が同じ構成要素と通信し得る。いくつかの実例では、移動車内の各SoC1704、各コントローラ1736、及び/又は各コンピュータは、同じ入力データ(たとえば、移動車1700のセンサからの入力)へのアクセスを有し得、CANバスなどの共通バスに接続され得る。
【0155】
移動車1700は、
図17Aに関して本明細書で説明されるものなど、1つ又は複数のコントローラ1736を含み得る。コントローラ1736は、様々な機能のために使用され得る。コントローラ1736は、移動車1700の様々な他の構成要素及びシステムのいずれかに連結されてもよく、移動車1700、移動車1700の人工知能、移動車1700のためのインフォテインメント、及び/又は同類のものの制御のために使用され得る。
【0156】
移動車1700は、システム・オン・チップ(SoC)1704を含み得る。SoC1704は、CPU1706、GPU1708、プロセッサ1710、キャッシュ1712、加速装置1714、データ・ストア1716、及び/又は図示されていない他の構成要素及び特徴を含み得る。SoC1704は、様々なプラットフォーム及びシステム内の移動車1700を制御するために使用され得る。たとえば、SoC1704は、1つ又は複数のサーバ(たとえば、
図17Dのサーバ1778)からネットワーク・インターフェース1724を介してマップのリフレッシュ及び/又は更新を取得することができるHDマップ1722を有するシステム(たとえば、移動車1700のシステム)において結合され得る。
【0157】
CPU1706は、CPUクラスタ又はCPU複合体(或いは、「CCPLEX」とも称される)を含み得る。CPU1706は、複数のコア及び/又はL2キャッシュを含み得る。たとえば、一部の実施例では、CPU1706は、コヒーレント・マルチプロセッサ構成内の8個のコアを含み得る。一部の実施例では、CPU1706は、4個のデュアルコア・クラスタを含むことができ、各クラスタが専用のL2キャッシュ(たとえば、2MBL2キャッシュ)を有する。CPU1706(たとえば、CCPLEX)は、CPU1706のクラスタの任意の組合せが任意の所与の時間にアクティブになることを可能にする同時クラスタ動作をサポートするように構成され得る。
【0158】
CPU1706は、以下の特徴のうちの1つ又は複数を含む電力管理能力を実装することができる:個別ハードウェア・ブロックが、動的電力を節約するためにアイドル状態のときに自動的にクロック・ゲーティングされ得る、各コア・クロックは、WFI/WFE命令の実行により命令をコアがアクティブに実行していないときにゲーティングされ得る、各コアは、独立してパワー・ゲーティングされ得る、各コア・クラスタは、すべてのコアがクロック・ゲーティングされる若しくはパワー・ゲーティングされるときに、独立してクロック・ゲーティングされ得る、及び/又は、各コア・クラスタは、すべてのコアがパワー・ゲーティングされるときに、独立してパワー・ゲーティングされ得る。CPU1706は、電力状態を管理するための強化されたアルゴリズムをさらに実装することができ、そこでは、許容される電力状態及び予想されるウェイクアップ時間が指定され、ハードウェア/マイクロ・コードが、コア、クラスタ、及びCCPLEXに入力するための最良の電力状態を決定する。処理コアは、作業がマイクロ・コードにオフロードされたソフトウェアにおける簡略化された電力状態入力シーケンスをサポートすることができる。
【0159】
GPU1708は、統合されたGPU(或いは本明細書において「iGPU」と称される)を含み得る。GPU1708は、プログラマブルになり得、並行のワークロードに効率的になり得る。一部の実例では、GPU1708は、強化されたテンソル命令セットを使用することができる。GPU1708は、1つ又は複数のストリーミング・マイクロプロセッサを含み得、そこで、各ストリーミング・マイクロプロセッサは、L1キャッシュ(たとえば、少なくとも96KB記憶容量を有するL1キャッシュ)を含み得、ストリーミング・マイクロプロセッサのうちの2個以上が、キャッシュ(たとえば、512KB記憶容量を有するL2キャッシュ)を共用し得る。一部の実施例では、GPU1708は、少なくとも8個のストリーミング・マイクロプロセッサを含み得る。GPU1708は、計算アプリケーション・プログラミング・インターフェース(API)を使用することができる。加えて、GPU1708は、1つ若しくは複数の並行のコンピューティング・プラットフォーム及び/又はプログラミング・モデル(たとえば、NVIDIAのCUDA)を使用することができる。
【0160】
GPU1708は、自動車の及び組み込まれた使用事例における最高のパフォーマンスのために電力最適化され得る。たとえば、GPU1708は、FinFET(Fin field-effect transistor)上に製造され得る。しかしながら、これは制限することを意図されておらず、GPU1708は、他の半導体製造プロセスを使用し、製造され得る。各ストリーミング・マイクロプロセッサは、複数のブロックに区切られたいくつかの混合精度処理コアを組み込むことができる。限定ではなく、たとえば、64 PF32コア及び32 PF64コアは、4個の処理ブロックに区切られてもよい。そのような実例では、各処理ブロックは、16 FP32コア、8 FP64コア、16 INT32コア、深層学習行列演算のための2個の混合精度NVIDIAテンソル・コア、L0命令キャッシュ、ワープ・スケジューラ、発送ユニット、及び/又は64KBレジスタ・ファイルを割り当てられ得る。加えて、ストリーミング・マイクロプロセッサは、計算及びアドレス指定演算の混合を有するワークロードの効率的な実行を提供するための独立した並行の整数及び浮動小数点データ進路を含み得る。ストリーミング・マイクロプロセッサは、並行スレッドの間のより高い細粒度の同期及び連携を可能にするために、独立したスレッド・スケジューリング能力を含み得る。ストリーミング・マイクロプロセッサは、プログラミングを単純化しつつ性能を向上させるために、結合されたL1データ・キャッシュ及び共用メモリ・ユニットを含み得る。
【0161】
GPU1708は、一部の実例では、900GB/秒のピーク・メモリ帯域幅に関して、提供するための高帯域幅メモリ(HBM:high bandwidth memory)及び/又は16GBHBM2メモリ・サブシステムを含み得る。いくつかの実例では、HBMメモリに加えて、又はこれの代わりに、グラフィックス・ダブル・データ・レート・タイプ5同期ランダム・アクセス・メモリ(GDDR5:graphics double data rate type five synchronous random-access memory)などの同期グラフィックス・ランダム・アクセス・メモリ(SGRAM:synchronous graphics random-access memory)が使用され得る。
【0162】
GPU1708は、メモリ・ページに最も頻繁にアクセスするプロセッサへのそれらのメモリ・ページのより正確な移動を可能にするためにアクセス・カウンタを含む統一されたメモリ技術を含むことができ、それにより、プロセッサ間で共用される記憶範囲の効率を向上させる。いくつかの実例では、アドレス変換サービス(ATS:address translation service)サポートが、GPU1708がCPU1706ページ・テーブルに直接アクセスすることを可能にするために使用され得る。そのような実例では、GPU1708メモリ管理ユニット(MMU:memory management unit)がミスを経験するとき、アドレス変換要求が、CPU1706に送信され得る。応答して、CPU1706は、アドレスの仮想対現実マッピングのためのそのページ・テーブルを調べることができ、GPU1708に変換を送り返す。そのようなものとして、統一されたメモリ技術は、CPU1706とGPU1708との両方のメモリの単一統一仮想アドレス空間を可能にすることができ、それによりGPU1708へのアプリケーションのGPU1708プログラミング及び移植を単純化する。
【0163】
加えて、GPU1708は、他のプロセッサのメモリへのGPU1708のアクセスの頻度を記録することができるアクセス・カウンタを含み得る。アクセス・カウンタは、メモリ・ページが最も頻繁にそのページにアクセスしているプロセッサの物理メモリに移動されることを確実にするのを助けることができる。
【0164】
SoC1704は、本明細書に記載のものを含む任意の数のキャッシュ1712を含み得る。たとえば、キャッシュ1712は、CPU1706とGPU1708との両方に利用可能な(たとえば、CPU1706とGPU1708との両方に接続された)L3キャッシュを含み得る。キャッシュ1712は、キャッシュ・コヒーレンス・プロトコル(たとえば、MEI、MESI、MSIなど)を使用することなどによって、線の状態を記録することができるライトバック・キャッシュを含み得る。L3キャッシュは、より小さいキャッシュ・サイズが使用されてもよいが、実施例に応じて、4MB以上を含み得る。
【0165】
SoC1704は、車両1700の様々なタスク又は動作のいずれか(たとえば、処理DNN)に関して処理を実行する際に活用され得る論理演算ユニット(ALU:arithmetic logic unit)を含み得る。加えて、SoC1704は、システム内で数学演算を実行するための浮動小数点演算ユニット(FPU:floating point unit)(又は他のマス・コプロセッサ又は数値演算コプロセッサ・タイプ)を含み得る。たとえば、SoC104は、CPU1706及び/又はGPU1708内の実行ユニットとして統合された1つ又は複数のFPUを含み得る。
【0166】
SoC1704は、1つ又は複数の加速装置1714(たとえば、ハードウェア・加速装置、ソフトウェア・加速装置、又はその組合せ)を含み得る。たとえば、SoC1704は、最適化されたハードウェア加速装置及び/又は大きなオンチップ・メモリを含み得る、ハードウェア加速クラスタを含み得る。大きなオンチップメモリ(たとえば、4MBのSRAM)は、ハードウェア加速クラスタがニューラル・ネットワーク及び他の演算を加速することを可能にし得る。ハードウェア加速クラスタは、GPU1708を補完するために及びGPU1708のタスクの一部をオフロードするために(たとえば、他のタスクを実行するためのGPU1708のより多くのサイクルを解放するために)使用され得る。一実例として、加速装置1714は、加速に適するように十分に安定している対象ワークロード(たとえば、知覚、畳み込みニューラル・ネットワーク(CNN:convolutional neural network)など)のために使用され得る。本明細書では、「CNN」という用語は、領域ベースの又は領域的畳み込みニューラル・ネットワーク(RCNN:regional convolutional neural network)及び高速RCNN(たとえば、物体検出のために使用されるものとしての)を含む、すべてのタイプのCNNを含み得る。
【0167】
加速装置1714(たとえば、ハードウェア加速クラスタ)は、深層学習加速装置(DLA:deep learning accelerator)を含み得る。DLAは、深層学習アプリケーション及び推論のために1秒あたり追加の10兆の動作を提供するように構成することができる1つ又は複数のテンソル処理ユニット(TPU:Tensor processing unit)を含み得る。TPUは、画像処理機能(たとえば、CNN、RCNNなどの)を実行するように構成及び最適化された加速装置でもよい。DLAはさらに、特定のセットのニューラル・ネットワーク・タイプ及び浮動小数点演算、並びに推論のために最適化され得る。DLAの設計は、汎用GPUよりも1ミリメートルあたりより多くのパフォーマンスを提供することができ、CPUのパフォーマンスを大きく超える。TPUは、たとえば、特徴と重みとの両方についてINT8、INT16、及びFP16データ・タイプをサポートする、単一インスタンス畳み込み機能、並びにポストプロセッサ機能を含む、いくつかの機能を実行することができる。
【0168】
DLAは、以下を含むがこれらに限定されない、様々な機能のいずれかのために処理済み又は未処理のデータでニューラル・ネットワーク、特にCNN、を迅速に及び効率的に実行することができる:カメラ・センサからのデータを使用する物体識別及び検出のためのCNN、カメラ・センサからのデータを使用する距離推定のためのCNN、マイクロフォンからのデータを使用する緊急車両検出及び識別及び検出のためのCNN、カメラ・センサからのデータを使用する顔認識及び移動車所有者識別のためのCNN、及び/又は、セキュリティ及び/又は安全性関連イベントのためのCNN。
【0169】
DLAは、GPU1708の任意の機能を実行することができ、そして、推論加速装置を使用することによって、たとえば、設計者は、任意の機能のためにDLA又はGPU1708のいずれかを対象にすることができる。たとえば、設計者は、DLA上のCNN及び浮動小数点演算の処理に重点的に取り組み、他の機能をGPU1708及び/又は他の加速装置1714に任せることができる。
【0170】
加速装置1714(たとえば、ハードウェア加速クラスタ)は、或いはコンピュータ・ビジョン加速装置と本明細書で称され得るプログラマブル・ビジョン加速装置(PVA:programmable vision accelerator)を含み得る。PVAは、高度運転者支援システム(ADAS:advanced driver assistance system)、自律運転、及び/又は拡張現実(AR:augmented reality)及び/又は仮想現実(VR:virtual reality)アプリケーションのためのコンピュータ・ビジョン・アルゴリズムを加速するように設計及び構成され得る。PVAは、パフォーマンスと柔軟性との間のバランスをもたらすことができる。たとえば、各PVAは、たとえば、任意の数の縮小命令セット・コンピュータ(RISC:reduced instruction set computer)コア、直接メモリ・アクセス(DMA:direct memory access)、及び/又は任意の数のベクトル・プロセッサを含み得るが、これらに限定されない。
【0171】
RISCコアは、画像センサ(たとえば、本明細書に記載のカメラのうちのいずれかのカメラの画像センサ)、画像信号プロセッサ、及び/又は同類のものと相互作用することができる。それぞれのRISCコアは、任意の量のメモリを含み得る。RISCコアは、実施例に応じて、いくつかのプロトコルのいずれかを使用することができる。いくつかの実例では、RISCコアは、リアルタイム・オペレーティング・システム(RTOS:real-time operating system)を実行することができる。RISCコアは、1つ若しくは複数の集積回路デバイス、特定用途向け集積回路(ASIC)、及び/又はメモリ・デバイスを使用して、実装され得る。たとえば、RISCコアは、命令キャッシュ及び/又はしっかりと結合されたRAMを含み得る。
【0172】
DMAは、CPU1706から独立したシステム・メモリにPVAの構成要素がアクセスすることを可能にし得る。DMAは、多次元アドレス指定及び/又は循環アドレス指定をサポートすることを含むがこれに限定されないPVAに最適化をもたらすために使用される任意の数の特徴をサポートすることができる。いくつかの実例では、DMAは、ブロック幅、ブロック高さ、ブロック深度、水平ブロック・ステッピング、垂直ブロック・ステッピング、及び/又は深度ステッピングを含み得る、6次元まで又はそれ以上のアドレス指定をサポートすることができる。
【0173】
ベクトル・プロセッサは、コンピュータ・ビジョン・アルゴリズムのプログラミングを効率的に柔軟に実行する及び信号処理能力を提供するように設計され得るプログラマブル・プロセッサでもよい。いくつかの実例では、PVAは、PVAコア及び2個のベクトル処理サブシステム・パーティションを含み得る。PVAコアは、プロセッサ・サブシステム、DMAエンジン(たとえば、2個のDMAエンジン)、及び/又は他の周辺装置を含み得る。ベクトル処理サブシステムは、PVAの1次的処理エンジンとして動作することができ、ベクトル処理ユニット(VPU:vector processing unit)、命令キャッシュ、及び/又はベクトル・メモリ(たとえば、VMEM)を含み得る。VPUコアは、たとえば、単一の命令、複数のデータ(SIMD)、超長命令語(VLIW:very long instruction word)デジタル信号プロセッサなど、デジタル信号プロセッサを含み得る。SIMD及びVLIWの組合せは、スループット及びスピードを高めることができる。
【0174】
それぞれのベクトル・プロセッサは、命令キャッシュを含み得、専用のメモリに連結され得る。結果として、一部の実例では、それぞれのベクトル・プロセッサは、他のベクトル・プロセッサから独立して実行するように構成され得る。他の実例において、特定のPVAに含まれるベクトル・プロセッサは、データ並列処理を用いるように構成され得る。たとえば、一部の実施例では、単一のPVAに含まれる複数のベクトル・プロセッサは、同じコンピュータ・ビジョン・アルゴリズムを、しかし画像の異なる領域上で、実行することができる。他の実例において、特定のPVAに含まれるベクトル・プロセッサは、異なるコンピュータ・ビジョン・アルゴリズムを、同じ画像上で、同時に実行することができ、或いは順次画像又は画像の部分で異なるアルゴリズムを実行することさえできる。特に、任意の数のPVAは、ハードウェア加速クラスタに含まれ得、任意の数のベクトル・プロセッサは、それぞれのPVAに含まれ得る。加えて、PVAは、全体的システム安全性を高めるために、追加のエラー訂正コード(ECC:error correcting code)メモリを含み得る。
【0175】
加速装置1714(たとえば、ハードウェア加速クラスタ)は、加速装置1714のための高帯域幅、低レイテンシSRAMを提供するための、コンピュータ・ビジョン・ネットワーク・オンチップ及びSRAMを含み得る。いくつかの実例では、オンチップ・メモリは、たとえば、そして制限ではなく、PVAとDLAとの両方によってアクセス可能でもよい、8個のフィールド構成可能なメモリ・ブロックから成る、少なくとも4MBのSRAMを含み得る。各ペアのメモリ・ブロックは、高度周辺バス(APB:advanced peripheral bus)インターフェース、構成回路、コントローラ、及びマルチプレクサを含み得る。任意のタイプのメモリが、使用され得る。PVA及びDLAは、メモリへの高速アクセスを有するPVA及びDLAを提供するバックボーンを介してメモリにアクセスすることができる。バックボーンは、(たとえば、APBを使用して)PVA及びDLAをメモリに相互接続するコンピュータ・ビジョン・ネットワーク・オンチップを含み得る。
【0176】
コンピュータ・ビジョン・ネットワーク・オンチップは、PVAとDLAとの両方が作動可能及び有効信号を提供することを、任意の制御信号/アドレス/データの送信の前に、決定するインターフェースを含み得る。そのようなインターフェースは、制御信号/アドレス/データを送信するための別個のフェーズ及び別個のチャネル、並びに連続的データ転送のためのバーストタイプの通信を提供することができる。このタイプのインターフェースは、ISO26262又はIEC61508規格に従うことができるが、他の規格及びプロトコルが使用されてもよい。
【0177】
いくつかの実例では、SoC1704は、2018年8月10日に出願された米国特許出願第16/101,232号に記載されるような、リアルタイム・レイトレーシング・ハードウェア加速装置を含み得る。リアルタイム・レイトレーシング・ハードウェア加速装置は、RADAR信号解釈のための、音響伝播合成及び/又は分析のための、SONARシステムのシミュレーションのための、一般波伝播シミュレーションのための、ローカリゼーション及び/又は他の機能を目的とするLIDARデータに対する比較のための、及び/又は他の使用のための、リアルタイム視覚化シミュレーションを生成するために、(たとえば、世界モデル内の)物体の位置及び規模を迅速に効率的に決定するために使用され得る。一部の実施例では、1つ又は複数の木の走査ユニット(TTU:tree traversal unit)が、1つ又は複数のレイトレーシング関連動作を実行するために使用され得る。
【0178】
加速装置1714(たとえば、ハードウェア加速装置クラスタ)は、自律運転のための多様な用途を有する。PVAは、ADAS及び自律型車両における極めて重要な処理段階に使用され得るプログラマブル・ビジョン加速装置でもよい。PVAの能力は、低電力及び低レイテンシにおいて、予測可能な処理を必要とするアルゴリズムの領域にふさわしい。言い換えれば、PVAは、低レイテンシ及び低電力とともに予測可能な実行時間を必要とする、小さなデータ集合上でも、半高密度の又は高密度の通常の計算で上手く機能する。それ故に、PVAは、物体検出及び整数計算での動作において効率的であるので、自律型車両のためのプラットフォームとの関連で、PVAは、クラシック・コンピュータ・ビジョン・アルゴリズムを実行するように設計される。
【0179】
たとえば、本技術の1つの実施例によれば、PVAは、コンピュータ・ステレオ・ビジョンを実行するために使用される。半グローバルなマッチングベースのアルゴリズムが、一部の実例では使用され得るが、これは制限することを意図されていない。レベル3~5の自律運転のための多数のアプリケーションは、動き推定/ステレオ・マッチング・オンザフライ(たとえば、SFM(structure from motion)、歩行者認識、レーン検出など)を必要とする。PVAは、2個の単眼カメラからの入力でコンピュータ・ステレオ・ビジョン機能を実行することができる。
【0180】
いくつかの実例では、PVAは、高密度のオプティカル・フローを実行するために使用され得る。処理されたRADARを提供するために未加工のRADARデータを処理する(たとえば、4D高速フーリエ変換を使用して)ことによる。他の実例において、PVAは、たとえば、飛行データの未加工の時間を処理して飛行データの処理済み時間を提供することにより、飛行深度処理の時間に使用される。
【0181】
DLAは、たとえば、各物体検出の信頼性の測定値を出力するニューラル・ネットワークを含む、制御及び運転安全性を強化するために任意のタイプのネットワークを実行するために使用され得る。そのような信頼性値は、確率として、又は他の検出と比較した各検出の相対的「重み」を提供するものとして、解釈され得る。この信頼性値は、どの検出が誤判定検出ではなくて真陽性検出と考えられるべきであるかに関するさらなる決定をシステムが行うことを可能にする。たとえば、システムは、信頼性の閾値を設定し、真陽性検出としての閾値を超える検出のみを考慮することができる。自動非常ブレーキ(AEB:automatic emergency braking)システムにおいて、誤判定検出は、移動車に非常ブレーキを自動で実行させることになり、これは明らかに望ましくない。したがって、最も確信のある検出のみが、AEBのトリガとして考えられるべきである。DLAは、信頼性値を退行するニューラル・ネットワークを実行し得る。ニューラル・ネットワークは、境界ボックス次元、(たとえば、別のサブシステムから)取得されたグラウンド・プレーン推定、ニューラル・ネットワーク及び/又は他のセンサ(たとえば、LIDARセンサ1764又はRADARセンサ1760)から取得された物体の移動車1700方位、距離、3D位置推定と相関する慣性計測装置(IMU:inertial measurement unit)センサ1766出力、その他など、少なくともいくつかのサブセットのパラメータをその入力として受け取ることができる。
【0182】
SoC1704は、データ・ストア1716(たとえば、メモリ)を含み得る。データ・ストア1716は、SoC1704のオンチップ・メモリでもよく、GPU及び/又はDLAで実行されることになるニューラル・ネットワークを記憶することができる。いくつかの実例では、データ・ストア1716は、冗長性及び安全性のためにニューラル・ネットワークの複数のインスタンスを記憶するのに十分な大きさの容量を有し得る。データ・ストア1712は、L2又はL3キャッシュ1712を備え得る。データ・ストア1716の参照は、本明細書に記載のような、PVA、DLA、及び/又は他の加速装置1714に関連するメモリの参照を含み得る。
【0183】
SoC1704は、1つ又は複数のプロセッサ1710(たとえば、組み込まれたプロセッサ)を含み得る。プロセッサ1710は、ブート電力及び管理能力及び関連するセキュリティ施行を処理するための専用のプロセッサ及びサブシステムでもよいブート及び電力管理プロセッサを含み得る。ブート及び電力管理プロセッサは、SoC1704ブート・シーケンスの一部でもよく、実行時間電力管理サービスを提供することができる。ブート電力及び管理プロセッサは、クロック及び電圧プログラミング、システム低電力状態移行の支援、SoC1704熱及び温度センサの管理、及び/又はSoC1704電力状態の管理を提供することができる。各温度センサは、その出力頻度が温度に比例するリング発振器として実装されてもよく、SoC1704は、リング発振器を使用してCPU1706、GPU1708、及び/又は加速装置1714の温度を検出することができる。温度が、閾値を超えたと判定された場合、ブート及び電力管理プロセッサは、温度障害ルーティンに入り、SoC1704をより低い電力状態に置く及び/又は移動車1700をショーファーの安全停止モードにする(たとえば、移動車1700を安全停止させる)ことができる。
【0184】
プロセッサ1710は、オーディオ処理エンジンの機能を果たし得る1セットの組み込まれたプロセッサをさらに含み得る。オーディオ処理エンジンは、複数のインターフェースを介するマルチチャネル・オーディオの完全なハードウェア・サポートとオーディオI/Oインターフェースの広く柔軟な範囲とを可能にするオーディオ・サブシステムでもよい。いくつかの実例では、オーディオ処理エンジンは、専用のRAMを有するデジタル信号プロセッサを有する専用のプロセッサ・コアである。
【0185】
プロセッサ1710は、低電力センサ管理及びウェイク使用事例をサポートするための必要なハードウェア特徴を提供することができる常時オンのプロセッサ・エンジンをさらに含み得る。常時オンのプロセッサ・エンジンは、プロセッサ・コア、しっかりと結合されたRAM、支援周辺装置(たとえば、タイマ及び割り込みコントローラ)、様々なI/Oコントローラ周辺装置、及びルーティング論理を含み得る。
【0186】
プロセッサ1710は、自動車のアプリケーションの安全性管理を処理するために専用のプロセッサ・サブシステムを含む安全性クラスタ・エンジンをさらに含み得る。安全性クラスタ・エンジンは、2個以上のプロセッサ・コア、しっかりと結合されたRAM、サポート周辺装置(たとえば、タイマ、割り込みコントローラなど)、及び/又はルーティング論理を含み得る。安全性モードにおいて、2個以上のコアは、ロックステップ・モードにおいて動作し、それらの動作の間の何らかの差を検出するための比較論理を有する単一のコアとして機能することができる。
【0187】
プロセッサ1710は、リアルタイム・カメラ管理を処理するための専用のプロセッサ・サブシステムを含み得るリアルタイム・カメラ・エンジンをさらに含み得る。
【0188】
プロセッサ1710は、カメラ処理パイプラインの一部であるハードウェア・エンジンである画像信号プロセッサを含み得る高ダイナミック・レンジ信号プロセッサをさらに含み得る。
【0189】
プロセッサ1710は、プレイヤ・ウインドウのための最終的画像を生み出すためにビデオ再生アプリケーションによって必要とされるビデオ処理後機能を実装する処理ブロック(たとえば、マイクロプロセッサに実装された)でもよいビデオ画像合成器を含み得る。ビデオ画像合成器は、ワイドビュー・カメラ1770で、サラウンド・カメラ1774で、及び/又はキャビン内監視カメラ・センサでレンズ歪み補正を実行することができる。キャビン内監視カメラ・センサは好ましくは、キャビン内イベントを識別し、適切に応答するように構成された、高度SoCの別のインスタンス上で実行するニューラル・ネットワークによって監視される。キャビン内システムは、セルラ・サービスをアクティブにする及び電話をかける、電子メールを書き取らせる、移動車の目的地を変更する、移動車のインフォテインメント・システム及び設定をアクティブにする又は変更する、或いは音声起動型ウェブ・サーフィンを提供するために、読唇術を実行することができる。ある特定の機能は、自律モードで動作しているときにのみ運転者に利用可能であり、そうでない場合には無効にされる。
【0190】
ビデオ画像合成器は、空間的ノイズ低減及び時間的ノイズ低減の両方のための強化された時間的ノイズ低減を含み得る。たとえば、動きがビデオ内で生じた場合、ノイズ低減は、隣接するフレームによって提供される情報の重みを減らし、空間的情報に適切に重みを加える。画像又は画像の一部が動きを含まない場合、ビデオ画像合成器によって実行される時間的ノイズ低減は、前の画像からの情報を使用して現在の画像におけるノイズを減らすことができる。
【0191】
ビデオ画像合成器はまた、入力ステレオ・レンズ・フレーム上でステレオ・レクティフィケーションを実行するように構成され得る。ビデオ画像合成器はさらに、オペレーティング・システム・デスクトップが使用中であるときにユーザ・インターフェース合成のために使用することができ、GPU1708は、新しい表面を連続してレンダリングために必要とされない。GPU1708の電源が入れられ、3Dレンダリングをアクティブに行っているときでも、ビデオ画像合成器は、GPU1708をオフロードしてパフォーマンス及び反応性を向上させるために使用され得る。
【0192】
SoC1704は、カメラからビデオ及び入力を受信するためのモバイル・インダストリ・プロセッサ・インターフェース(MIPI:mobile industry processor interface)カメラ・シリアル・インターフェース、高速インターフェース、及び/又は、カメラ及び関連画素入力機能のために使用され得るビデオ入力ブロックをさらに含み得る。SoC1704は、ソフトウェアによって制御され得る、及び特定の役割にコミットされていないI/O信号を受信するために使用され得る、入力/出力コントローラをさらに含み得る。
【0193】
SoC1704は、周辺装置、オーディオ・コーデック、電力管理、及び/又は他のデバイスとの通信を可能にするために、広範囲の周辺インターフェースをさらに含み得る。SoC1704は、(たとえば、ギガビット・マルチメディア・シリアル・リンク及びイーサネット(登録商標)を介して接続された)カメラからのデータ、センサ(たとえば、イーサネット(登録商標)を介して接続され得るLIDARセンサ1764、RADARセンサ1760など)、バス1702からのデータ(たとえば、移動車1700のスピード、ハンドル位置など)、(たとえば、イーサネット(登録商標)又はCANバスを介して接続された)GNSSセンサ1758からのデータを処理するために使用され得る。SoC1704は、独自のDMAエンジンを含み得る及びルーティン・データ管理タスクからCPU1706を解放するために使用され得る専用の高性能大容量記憶コントローラをさらに含み得る。
【0194】
SoC1704は、自動化レベル3~5に広がる柔軟なアーキテクチャを有する終端間プラットフォームでもよく、それによって、多様性及び冗長性のためにコンピュータ・ビジョン及びADAS技法を活用し、効率的に使用し、深層学習ツールとともに、柔軟な、信頼できる運転ソフトウェア・スタックのためのプラットフォームを提供する、総合的機能的安全性アーキテクチャを提供する。SoC1704は、従来のシステムよりも高速で、信頼でき、さらにエネルギ効率がよく、空間効率がよくなり得る。たとえば、加速装置1714が、CPU1706と結合されるとき、GPU1708、及びデータ・ストア1716は、レベル3~5の自律型車両のための高速で効率的なプラットフォームを提供することができる。
【0195】
したがって、本技術は、従来のシステムによって達成することができない能力及び機能性をもたらす。たとえば、コンピュータ・ビジョン・アルゴリズムは、多種多様な視覚的データにわたり多種多様な処理アルゴリズムを実行するために、Cプログラミング言語などの高レベルのプログラミング言語を使用して構成され得る、CPUで実行され得る。しかしながら、CPUは、しばしば、たとえば、実行時間及び電力消費に関連するものなど、多数のコンピュータ・ビジョン・アプリケーションの性能要件を満たすことができない。具体的には、多数のCPUは、移動車内ADASアプリケーションの要件及び実際のレベル3~5の自律型車両の要件である、リアルタイムでの複合物体検出アルゴリズムを実行することができない。
【0196】
従来のシステムとは対照的に、CPU複合体、GPU複合体、及びハードウェア加速クラスタを提供することによって、本明細書に記載の技術は、複数のニューラル・ネットワークが同時に及び/又は連続して実行されることと、レベル3~5の自律運転機能を可能にするために結果が結合されることとを可能にする。たとえば、DLA又はdGPU(たとえば、GPU1720)で実行するCNNは、ニューラル・ネットワークが具体的にトレーニングされていない標識を含む、交通標識をスーパーコンピュータが読み取る及び理解することを可能にする、テキスト及び単語認識を含み得る。DLAは、標識の意味論的理解を識別、解釈、及び提供することと、CPU複合体で実行する進路計画立案モジュールに意味論的理解を渡すこととを行うことができる、ニューラル・ネットワークをさらに含み得る。
【0197】
別の実例として、複数のニューラル・ネットワークは、レベル3、4、又は5の運転に必要とされるように、同時に実行され得る。たとえば、電光とともに、「注意:点滅光は、凍った状態を示す」から成る警告標識は、いくつかのニューラル・ネットワークによって独立して又は集合的に解釈され得る。標識自体は、第1の配備されたニューラル・ネットワーク(たとえば、トレーニングされてあるニューラル・ネットワーク)によって交通標識として識別され得、テキスト「点滅光は、凍った状態を示す」は、点滅光が検出されるときには凍った状態が存在することを移動車の進路計画立案ソフトウェア(好ましくはCPU複合体上で実行する)に知らせる、第2の配備されたニューラル・ネットワークによって解釈され得る。点滅光は、点滅光の存在(又は無いこと)を移動車の進路計画立案ソフトウェアに知らせ、複数のフレームを介して第3の配備されたニューラル・ネットワークを動作させることによって識別され得る。すべての3個のニューラル・ネットワークは、DLA内及び/又はGPU1708上などで、同時に実行することができる。
【0198】
いくつかの実例では、顔認識及び移動車所有者識別のためのCNNは、カメラ・センサからのデータを使用して移動車1700の正規の運転者及び/又は所有者の存在を識別することができる。常時オンのセンサ処理エンジンは、所有者が運転席側のドアに近付くときに移動車を解錠する及び明かりをつけるために、並びに、セキュリティ・モードにおいて、所有者が移動車を離れるときに移動車の動作を停止させるために、使用され得る。このようにして、SoC1704は、盗難及び/又は車の乗っ取りに対するセキュリティをもたらす。
【0199】
別の実例では、緊急車両検出及び識別のためのCNNは、マイクロフォン1796からのデータを使用して緊急車両サイレンを検出及び識別することができる。一般分類子を使用してサイレンを検出する及び特徴を手動で抽出する従来のシステムとは対照的に、SoC1704は、環境の及び都市の音の分類、並びに視覚的データの分類のためにCNNを使用する。好ましい一実施例では、DLA上で実行するCNNは、(たとえば、ドップラー効果を使用することによって)緊急車両の相対的終速度を識別するようにトレーニングされる。CNNはまた、GNSSセンサ1758によって識別されるように、移動車が稼働しているローカル・エリアに特有の緊急車両を識別するようにトレーニングされ得る。それ故に、たとえば、欧州で稼働しているとき、CNNは、欧州のサイレンを検出しようとすることになり、そして、米国にあるとき、CNNは、北米のサイレンのみを識別しようとすることになる。緊急車両が検出された後は、制御プログラムが、緊急車両が通過するまで、超音波センサ1762の支援を受けて、移動車を減速する、道の端に停止させる、移動車を駐車する、及び/又は移動車をアイドリングさせる、緊急車両安全性ルーティンを実行するために使用され得る。
【0200】
移動車は、高速相互接続(たとえば、PCIe)を介してSoC1704に連結され得るCPU1718(たとえば、個別のCPU、又はdCPU)を含み得る。CPU1718は、たとえば、X86プロセッサを含み得る。CPU1718は、たとえば、ADASセンサとSoC1704との間の潜在的に不整合の結果を調停すること、及び/又はコントローラ1736及び/又はインフォテインメントSoC1730の状況及び調子を監視することを含む、様々な機能のいずれかを実行するために使用され得る。
【0201】
移動車1700は、高速相互接続(たとえば、NVIDIAのNVLINK)を介してSoC1704に連結され得るGPU1720(たとえば、個別のGPU、又はdGPU)を含み得る。GPU1720は、冗長及び/又は異なるニューラル・ネットワークを実行することなどによって、付加的人工知能機能をもたらすことができ、移動車1700のセンサからの入力(たとえば、センサ・データ)に基づいてニューラル・ネットワークをトレーニング及び/又は更新するために使用され得る。
【0202】
移動車1700は、1つ又は複数のワイヤレス・アンテナ1726(たとえば、セルラ・アンテナ、ブルートゥース(登録商標)・アンテナなど、異なる通信プロトコルのための1つ又は複数のワイヤレス・アンテナ)を含み得るネットワーク・インターフェース1724をさらに含み得る。ネットワーク・インターフェース1724は、インターネットを介するクラウドとの(たとえば、サーバ1778及び/又は他のネットワーク・デバイスとの)、他の移動車との、及び/又は計算デバイス(たとえば、乗客のクライアント・デバイス)とのワイヤレス接続を使用可能にするために使用され得る。他の移動車と通信するために、直接リンクが2個の移動車の間に確立され得る、及び/又は、間接リンクが(たとえば、ネットワークを通じて及びインターネットを介して)確立され得る。直接リンクは、移動車対移動車通信リンクを使用し、提供され得る。移動車対移動車通信リンクは、移動車1700に近接する移動車(たとえば、移動車1700の前の、横の、及び/又は後ろの移動車)に関する移動車1700情報を提供することができる。この機能は、移動車1700の共同適応クルーズ制御機能の一部でもよい。
【0203】
ネットワーク・インターフェース1724は、変調及び復調機能を提供する及びコントローラ1736がワイヤレス・ネットワークを介して通信することを可能にする、SoCを含み得る。ネットワーク・インターフェース1724は、ベースバンドから無線周波数へのアップコンバージョン、及び無線周波数からベースバンドへのダウンコンバージョンのための無線周波数フロントエンドを含み得る。周波数コンバージョンは、よく知られているプロセスを通して実行することができ、及び/又はスーパーヘテロダイン・プロセスを用いて実行することができる。いくつかの実例では、無線周波数フロントエンド機能は、別個のチップによって提供され得る。ネットワーク・インターフェースは、LTE、WCDMA(登録商標)、UMTS、GSM、CDMA2000、ブルートゥース(登録商標)、ブルートゥース(登録商標)LE、Wi-Fi、Z-Wave、ZigBee、LoRaWAN、及び/又は他のワイヤレス・プロトコルを介して通信するためのワイヤレス機能を含み得る。
【0204】
移動車1700は、チップ外の(たとえば、SoC1704外の)ストレージを含み得るデータ・ストア1728をさらに含み得る。データ・ストア1728は、RAM、SRAM、DRAM、VRAM、フラッシュ、ハードディスク、及び/又は、少なくとも1ビットのデータを記憶することができる他の構成要素及び/又はデバイスを含む、1つ又は複数の記憶素子を含み得る。
【0205】
車両1700は、GNSSセンサ1758をさらに含み得る。GNSSセンサ1758(たとえば、GPS、支援されたGPSセンサ、ディファレンシャルGPS(DGPS)センサなど)は、マッピング、知覚、占有グリッド生成、及び/又は進路計画策定機能を支援する。たとえば、シリアル(RS-232)ブリッジへのイーサネット(登録商標)を有するUSBコネクタを使用するGPSを含むが、これに限定されない、任意の数のGNSSセンサ1758が、使用され得る。
【0206】
移動車1700は、RADARセンサ1760をさらに含み得る。RADARセンサ1760は、暗闇及び/又は厳しい気象条件においても、長距離移動車検出のために移動車1700によって使用され得る。RADAR機能安全性レベルは、ASIL Bでもよい。一部の実例では、RADARセンサ1760は、未加工のデータにアクセスするためのイーサネット(登録商標)へのアクセスを用いて、制御のために及び物体追跡データにアクセスするために(たとえば、RADARセンサ1760によって生成されたデータを送信するために)CAN及び/又はバス1702を使用することができる。多種多様なRADARセンサ・タイプが、使用され得る。たとえば、そして制限なしに、RADARセンサ1760は、前部、後部、及び側部RADAR使用に適し得る。一部の実例では、パルス・ドップラーRADARセンサが使用される。
【0207】
RADARセンサ1760は、狭い視野を有する長距離、広い視野を有する短距離、短距離側部カバレッジなど、異なる構成を含み得る。いくつかの実例では、長距離RADARは、適応クルーズ制御機能のために使用され得る。長距離RADARシステムは、250mの範囲内など、2個以上の独立したスキャンによって実現される広い視野を提供することができる。RADARセンサ1760は、静的物体と動く物体との区別を助けることができ、緊急ブレーキ・アシスト及び前方衝突警報のためのADASシステムによって使用され得る。長距離RADARセンサは、複数の(たとえば、6つ以上の)固定RADARアンテナと高速CAN及びFlexRayインターフェースとを有するモノスタティック・マルチモーダルRADARを含み得る。6つのアンテナを有する一実例では、中央の4個のアンテナは、隣接レーン内の交通からの干渉を最小限にして高速で移動車1700の周囲を記録するように設計された、集束ビーム・パターンを作成し得る。他の2個のアンテナは、視野を広げることができ、移動車1700のレーンに入る又はこれを去る移動車を迅速に検出することを可能にする。
【0208】
一実例として、中距離RADARシステムは、1760m(前)又は80m(後)までの範囲、及び42度(前)又は1750度(後)までの視野を含み得る。短距離RADARシステムは、後部バンパの両端に設置されるように設計されたRADARセンサを含み得るが、これに限定されない。後部バンパの両端に設置されるとき、そのようなRADARセンサ・システムは、移動車の後ろ及び隣の死角を常に監視する2個のビームを作成することができる。
【0209】
短距離RADARシステムは、死角検出及び/又はレーン変更アシストのためにADASシステムにおいて使用され得る。
【0210】
移動車1700は、超音波センサ1762をさらに含み得る。移動車1700の前部、後部、及び/又は側部に位置付けられ得る、超音波センサ1762は、駐車アシストのために及び/又は占有グリッドの作成及び更新のために使用され得る。多種多様な超音波センサ1762が使用され得、異なる超音波センサ1762が、異なる範囲の検出(たとえば、2.5m、4m)のために使用され得る。超音波センサ1762は、ASIL Bの機能的安全性レベルにおいて動作することができる。
【0211】
移動車1700はLIDARセンサ1764を含み得る。LIDARセンサ1764は、物体及び歩行者検出、緊急ブレーキ、衝突回避、及び/又は他の機能のために使用され得る。LIDARセンサ1764は、機能的安全性レベルASIL Bでもよい。いくつかの実例では、移動車1700は、(たとえば、ギガビット・イーサネット(登録商標)・スイッチにデータを提供するために)イーサネット(登録商標)を使用することができる複数の(たとえば、2個、4個、6個などの)LIDARセンサ1764を含み得る。
【0212】
いくつかの実例では、LIDARセンサ1764は、物体及び360度視野のそれらの距離のリストを提供する能力を有し得る。市販のLIDARセンサ1764は、たとえば、2cm~3cmの精度を有し、1700Mbpsイーサネット(登録商標)接続のサポートを有して、約1700mの広告された範囲を有し得る。いくつかの実例では、1つ又は複数の非突出したLIDARセンサ1764が、使用され得る。そのような実例では、LIDARセンサ1764は、移動車1700の前部、後部、側部、及び/又は角に組み込まれ得る小さいデバイスとして実装され得る。そのような実例では、LIDARセンサ1764は、低反射物体についても200mの範囲を有し、120度水平及び35度垂直視野まで提供することができる。前部に取り付けられたLIDARセンサ1764は、45度と135度との間の水平視野向けに構成され得る。
【0213】
いくつかの実例では、3DフラッシュLIDARなどのLIDAR技術もまた使用され得る。3DフラッシュLIDARは、約200mまで移動車の周囲を照らすために、送信元としてレーザーのフラッシュを使用する。フラッシュLIDARユニットは、移動車から物体までの範囲に順番に対応する、レーザー・パルス走行時間及び各画素上の反射光を記録する、レセプタを含む。フラッシュLIDARは、周囲の高精度の及び歪みのない画像があらゆるレーザー・フラッシュで生成されることを可能にし得る。いくつかの実例では、4個のフラッシュLIDARセンサが、移動車1700の各側面に1つずつ、配備され得る。利用可能な3DフラッシュLIDARシステムは、送風機以外に動く部分を有さないソリッドステート3Dステアリング・アレイLIDARカメラ(たとえば、非スキャン型LIDARデバイス)を含む。フラッシュLIDARデバイスは、1フレームにつき5ナノ秒クラスI(目に安全な)レーザー・パルスを使用することができ、3D範囲点群及び共記載された強度データの形で反射レーザー光をキャプチャし得る。フラッシュLIDARを使用することによって、また、フラッシュLIDARは、動く部分を有さないソリッドステート・デバイスであるので、LIDARセンサ1764は、モーション・ブラー、振動、及び/又は衝撃の影響を受けにくくなり得る。
【0214】
移動車は、IMUセンサ1766をさらに含み得る。一部の実例では、IMUセンサ1766は、移動車1700の後部車軸の中央に位置付けられ得る。IMUセンサ1766は、たとえば、加速度計、磁力計、ジャイロスコープ、磁気コンパス、及び/又は他のセンサ・タイプを含み得るが、これらに限定されない。いくつかの実例では、6軸アプリケーションなどにおいて、IMUセンサ1766は、加速度計及びジャイロスコープを含み得るが、9軸アプリケーションにおいて、IMUセンサ1766は、加速度計、ジャイロスコープ、及び磁力計を含み得る。
【0215】
一部の実施例では、IMUセンサ1766は、マイクロ電気機械システム(MEMS:micro-electro-mechanical system)慣性センサ、高感度GPSレシーバ、及び高度カルマン・フィルタリング・アルゴリズムを結合して位置、ベロシティ、及び姿勢の推定値を提供するミニチュア、高性能GPS支援型慣性航行システム(GPS/INS:GPS-Aided Inertial Navigation System)として実装され得る。そのようなものとして、一部の実例では、IMUセンサ1766は、GPSからIMUセンサ1766までのベロシティの変化を直接観測すること及び関連付けることによって、磁気センサからの入力を必要とせずに進行方向を移動車1700が推定することを可能にし得る。いくつかの実例では、IMUセンサ1766及びGNSSセンサ1758は、単一の統合されたユニットにおいて結合され得る。
【0216】
移動車は、移動車1700内及び/又は周囲に置かれたマイクロフォン1796を含み得る。マイクロフォン1796は、中でも、緊急車両検出及び識別のために使用され得る。
【0217】
移動車は、ステレオ・カメラ1768、ワイドビュー・カメラ1770、赤外線カメラ1772、サラウンド・カメラ1774、長距離及び/又は中距離カメラ1798、及び/又は他のカメラ・タイプを含む、任意の数のカメラ・タイプをさらに含み得る。カメラは、移動車1700の全外面の周りの画像データをキャプチャするために使用され得る。使用されるカメラのタイプは、移動車1700の実施例及び要件に応じて決まり、任意の組合せのカメラ・タイプが、移動車1700の周りの必要なカバレッジを実現するために使用され得る。加えて、カメラの数は、実施例に応じて異なり得る。たとえば、移動車は、6個のカメラ、7個のカメラ、10個のカメラ、12個のカメラ、及び/又は別の数のカメラを含み得る。カメラは、一実例として、ギガビット・マルチメディア・シリアル・リンク(GMSL:Gigabit Multimedia Serial Link)及び/又はギガビット・イーサネット(登録商標)をサポートし得るが、これに限定されない。それぞれのカメラは、
図17A及び
図17Bに関連して本明細書においてさらに詳しく説明される。
【0218】
移動車1700は、振動センサ1742をさらに含み得る。振動センサ1742は、車軸など、移動車の構成要素の振動を測定することができる。たとえば、振動の変化は、道路の表面の変化を示し得る。別の実例では、2個以上の振動センサ1742が使用されるとき、振動の差は、道路表面の摩擦又は滑りを判定するために使用され得る(たとえば、振動の差が電力駆動車軸と自由回転車軸との間であるとき)。
【0219】
移動車1700は、ADASシステム1738を含み得る。一部の実例では、ADASシステム1738は、SoCを含み得る。ADASシステム1738は、自律/適応/自動クルーズ制御(ACC:autonomous/adaptive/automatic cruise control)、共同適応クルーズ制御(CACC:cooperative adaptive cruise control)、前方衝突警報(FCW:forward crash warning)、自動緊急ブレーキ(AEB:automatic emergency braking)、車線逸脱警報(LDW:lane departure warning)、レーン・キープ・アシスト(LKA:lane keep assist)、死角警報(BSW:blind spot warning)、後部交差交通警報(RCTW:rear cross-traffic warning)、衝突警報システム(CWS:collision warning system)、レーン・センタリング(LC:lane centering)、及び/又は他の特徴及び機能を含み得る。
【0220】
ACCシステムは、RADARセンサ1760、LIDARセンサ1764、及び/又はカメラを使用し得る。ACCシステムは、縦ACC及び/又は横ACCを含み得る。縦ACCは、移動車1700の直ぐ前の移動車までの距離を監視及び制御し、前方の移動車からの安全距離を維持するために移動車速度を自動的に調整する。横ACCは、距離の保持を実行し、必要なときにレーンを変更するように移動車1700にアドバイスする。横ACCは、LCA及びCWSなどの他のADASアプリケーションに関連する。
【0221】
CACCは、ワイヤレス・リンクを介して他の移動車からネットワーク・インターフェース1724及び/又はワイヤレス・アンテナ1726を介して、或いは間接的にネットワーク接続を介して(たとえば、インターネットを介して)、受信することができる、他の移動車からの情報を使用する。直接リンクは、移動車対移動車(V2V:vehicle-to-vehicle)通信リンクによって提供され得、一方、間接リンクは、インフラストラクチャ対移動車(I2V:infrastructure-to-vehicle)通信リンクでもよい。一般に、V2V通信概念は、直前の移動車(たとえば、移動車1700と同じレーン内にある、移動車1700の直ぐ前の移動車)に関する情報を提供し、一方、I2V通信概念は、さらに前の交通に関する情報を提供する。CACCシステムは、I2V情報ソースとV2V情報ソースとのいずれか又は両方を含み得る。移動車1700の前方の移動車の情報を所与として、CACCは、より高信頼になり得、CACCは、交通の流れをよりスムーズにし、道路の渋滞を減らす可能性を有する。
【0222】
運転者が修正行動を取ることができるように、FCWシステムは、危険を運転者に警告するように設計される。FCWシステムは、ディスプレイ、スピーカ、及び/又は振動部品など、運転者フィードバックに電気的に連結された、専用のプロセッサ、DSP、FPGA、及び/又はASICに連結された、前向きのカメラ及び/又はRADARセンサ1760を使用する。FCWシステムは、音響、視覚的警報、振動及び/又はクイック・ブレーキ・パルスなどの形で、警報を提供することができる。
【0223】
AEBシステムは、別の移動車又は他の物体との差し迫った前方衝突を検出し、運転者が指定された時間又は距離パラメータ内に修正行動を取らない場合に、ブレーキを自動的に適用することができる。AEBシステムは、専用のプロセッサ、DSP、FPGA、及び/又はASICに連結された、前向きのカメラ及び/又はRADARセンサ1760を使用することができる。AEBシステムが危険を検出するとき、AEBシステムは通常は、先ず、衝突を回避するための修正行動を取るように運転者に警告し、運転者が修正行動を取らない場合、AEBシステムは、予測される衝突の影響を防ぐ、又は少なくとも軽減するための努力の一環としてブレーキを自動的に適用することができる。AEBシステムは、ダイナミック・ブレーキ・サポート及び/又は衝突切迫ブレーキなどの技法を含み得る。
【0224】
LDWシステムは、ハンドル又はシートの振動など、視覚的、可聴式、及び/又は触覚的警報を提供して、移動車1700が車線区分線を越えたときに運転者に警告する。LDWシステムは、運転者が、方向指示器を起動することによって、意図的な車線逸脱を指示するときには、起動しない。LDWシステムは、ディスプレイ、スピーカ、及び/又は振動部品など、運転者フィードバックに電気的に連結された、専用のプロセッサ、DSP、FPGA、及び/又はASICに連結された、前側を向いたカメラを使用することができる。
【0225】
LKAシステムは、LDWシステムの変更形態である。LKAシステムは、移動車1700が車線をはみ出し始めた場合に移動車1700を修正するためにステアリング入力又はブレーキを提供する。
【0226】
BSWシステムは、自動車の死角において移動車の運転者に検出及び警告する。BSWシステムは、合流又はレーンの変更が安全ではないことを指示するために視覚的、可聴式、及び/又は触覚的警告を提供することができる。システムは、運転者が方向指示器を使用するときに、付加的警告を提供することができる。BSWシステムは、運転者フィードバック、たとえば、ディスプレイ、スピーカ、及び/又は振動部品、に電気的に結合された、専用プロセッサ、DSP、FPGA、及び/又はASICに結合された、後ろ側を向いたカメラ及び/又はRADARセンサ1760を使用することができる。
【0227】
RCTWシステムは、車両1700がバックしているときにリアカメラの範囲外で物体が検出されたときに視覚的、可聴式、及び/又は触覚的通知を提供することができる。いくつかのRCTWシステムは、衝突を回避するために車両ブレーキが適用されることを確実にするために、AEBを含む。RCTWシステムは、運転者フィードバック、たとえば、ディスプレイ、スピーカ、及び/又は振動部品、に電気的に結合された、専用プロセッサ、DSP、FPGA、及び/又はASICに結合された、1つ又は複数の後ろを向いたRADARセンサ1760を使用することができる。
【0228】
従来のADASシステムは、運転者に警告し、安全状態が本当に存在するかどうかを運転者が判定し、それに応じて行動することを可能にするので、従来のADASシステムは、通常は壊滅的ではないが、運転者を悩ませている及び気を散らせていることがある誤判定結果を生み出す傾向にあることがあった。しかしながら、自律型車両1700では、結果が矛盾する場合には、移動車1700自体が、1次的コンピュータ又は2次的コンピュータ(たとえば、第1のコントローラ1736又は第2のコントローラ1736)からの結果を聞き入れるかどうかを決定しなければならない。たとえば、一部の実施例では、ADASシステム1738は、知覚情報をバックアップ・コンピュータ合理性モジュールに提供するためのバックアップ及び/又は2次的コンピュータでもよい。バックアップ・コンピュータ合理性モニタは、ハードウェア構成要素で冗長な多様なソフトウェアを実行して、知覚及び動的運転タスクにおいて障害を検出することができる。ADASシステム1738からの出力は、監督MCUに提供され得る。1次的コンピュータ及び2次的コンピュータからの出力が矛盾する場合、監督MCUは、安全な動作を確実にするためにその矛盾をどのように調整するかを決定する必要がある。
【0229】
いくつかの実例では、1次的コンピュータは、選択された結果における1次的コンピュータの信頼性を指示する、信頼性スコアを監督MCUに提供するように構成され得る。信頼性スコアが閾値を超えた場合、監督MCUは、2次的コンピュータが矛盾する又は不整合の結果を与えるかどうかにかかわらず、1次的コンピュータの指示に従い得る。信頼性スコアが閾値を満たさない場合、及び1次的及び2次的コンピュータが異なる結果を示す(たとえば、矛盾する)場合、監督MCUは、コンピュータの間で調停して適切な結果を決定することができる。
【0230】
監督MCUは、2次的コンピュータが誤ったアラームを提供する状態を、1次的コンピュータ及び2次的コンピュータからの出力に基づいて判定するようにトレーニング及び構成されたニューラル・ネットワークを実行するように構成され得る。したがって、監督MCU内のニューラル・ネットワークは、2次的コンピュータの出力が信頼され得るとき、及びそれが信頼され得ないときを学習することができる。たとえば、2次的コンピュータがRADARベースのFCWシステムであるとき、監督MCU内のニューラル・ネットワークは、アラームをトリガする下水溝の鉄格子又はマンホールの蓋など、実際には危険ではない金属製の物をいつFCWが識別しているかを学習することができる。同様に、2次的コンピュータがカメラベースのLDWシステムであるとき、監督MCU内のニューラル・ネットワークは、自転車に乗った人又は歩行者が存在し、車線逸脱が、実際には、最も安全な操作であるときに、LDWを無視することを学習することができる。監督MCU上で実行中のニューラル・ネットワークを含む実施例では、監督MCUは、関連メモリを有するニューラル・ネットワークを実行するのに適したDLA又はGPUのうちの少なくとも1つを含み得る。好ましい実施例において、監督MCUは、SoC1704の構成要素を備え得る、及び/又はSoC1704の構成要素として含まれ得る。
【0231】
他の実例において、ADASシステム1738は、コンピュータ・ビジョンの従来のルールを使用するADAS機能を実行する2次的コンピュータを含み得る。そのようなものとして、2次的コンピュータは、古典的コンピュータ・ビジョン・ルール(if-then)を使用することができ、監督MCU内のニューラル・ネットワークの存在は、信頼性、安全性及び性能を向上させることができる。たとえば、多様な実装形態及び意図的な非同一性は、特にソフトウェア(又はソフトウェア-ハードウェア・インターフェース)機能によって引き起こされる障害に対して、システム全体をよりフォールトトレラントにする。たとえば、1次的コンピュータで実行中のソフトウェア内にソフトウェア・バグ又はエラーが存在し、2次的コンピュータで実行中の同一でないソフトウェア・コードが同じ総合的結果を提供する場合、監督MCUは、総合的結果は正しく、1次的コンピュータ上のソフトウェア又はハードウェア内のバグは重大なエラーを引き起こしていないというより大きな確信を有し得る。
【0232】
いくつかの実例では、ADASシステム1738の出力は、1次的コンピュータの知覚ブロック及び/又は1次的コンピュータの動的運転タスク・ブロックに供給され得る。たとえば、ADASシステム1738が、直ぐ前の物体が原因で、前方衝突警報を示した場合、知覚ブロックは、物体を識別するときに、この情報を使用することができる。他の実例において、2次的コンピュータは、本明細書に記載のように、トレーニングされ、それ故に誤判定のリスクを減らす、独自のニューラル・ネットワークを有し得る。
【0233】
移動車1700は、インフォテインメントSoC1730(たとえば、移動車内のインフォテインメント・システム(IVI:in-vehicle infotainment system))をさらに含み得る。SoCとして図示及び記述されているが、インフォテインメント・システムは、SoCでなくてもよく、2個以上の個別の構成要素を含み得る。インフォテインメントSoC1730は、オーディオ(たとえば、音楽、携帯情報端末、ナビゲーション命令、ニュース、無線など)、ビデオ(たとえば、TV、映画、ストリーミングなど)、電話(たとえば、ハンズフリー通話)、ネットワーク接続(たとえば、LTE、Wi-Fiなど)、及び/又は情報サービス(たとえば、ナビゲーション・システム、後方駐車支援、無線データシステム、燃料レベル、総移動距離、ブレーキ燃料レベル、オイル・レベル、ドアを開ける/閉じる、エア・フィルタ情報などの移動車関連情報)を移動車1700に提供するために使用され得るハードウェア及びソフトウェアの組合せを含み得る。たとえば、インフォテインメントSoC1730は、無線、ディスク・プレイヤ、ナビゲーション・システム、ビデオ・プレイヤ、USB及びブルートゥース(登録商標)接続、カーピュータ、車内エンターテインメント、Wi-Fi、ハンドル・オーディオ制御装置、ハンズ・フリー音声制御、ヘッドアップ・ディスプレイ(HUD:heads-up display)、HMIディスプレイ1734、テレマティックス・デバイス、制御パネル(たとえば、様々な構成要素、特徴、及び/又はシステムを制御する及び/又はこれと相互に作用するための)、及び/又は他の構成要素でもよい。インフォテインメントSoC1730は、ADASシステム1738からの情報、計画された移動車操作などの自律運転情報、軌道、周囲環境情報(たとえば、交差点情報、移動車情報、道路情報など)、及び/又は他の情報など、移動車のユーザへの情報(たとえば、視覚的及び/又は可聴式の)を提供するためにさらに使用され得る。
【0234】
インフォテインメントSoC1730は、GPU機能性を含み得る。インフォテインメントSoC1730は、バス1702(たとえば、CANバス、イーサネット(登録商標)など)を介して、移動車1700の他のデバイス、システム、及び/又は構成要素と通信することができる。いくつかの実例では、インフォテインメント・システムのGPUが、1次的コントローラ1736(たとえば、移動車1700の1次的及び/又はバックアップ・コンピュータ)が故障した場合に、いくつかのセルフドライブ機能を実行することができるように、インフォテインメントSoC1730は、監督MCUに連結され得る。そのような実例では、インフォテインメントSoC1730は、本明細書に記載のように、移動車1700をショーファーの安全停止モードにすることができる。
【0235】
移動車1700は、計器群1732(たとえば、デジタル・ダッシュ、電子計器群、デジタル計器パネルなど)をさらに含み得る。計器群1732は、コントローラ及び/又はスーパーコンピュータ(たとえば、個別のコントローラ又はスーパーコンピュータ)を含み得る。計器群1732は、スピードメーター、燃料レベル、油圧、タコメーター、オドメーター、方向指示器、ギアシフト位置インジケータ、シート・ベルト警告灯、パーキングブレーキ警告灯、エンジン故障灯、エアバッグ(SRS)システム情報、照明制御装置、安全システム制御装置、ナビゲーション情報など、1セットの器具類を含み得る。いくつかの実例では、情報は、インフォテインメントSoC1730及び計器群1732の間で表示及び/又は共有され得る。言い換えれば、計器群1732は、インフォテインメントSoC1730の一部として含まれてもよく、逆もまた同様である。
【0236】
図17Dは、本開示のいくつかの実施例による、
図17Aのクラウドベースのサーバと例示的自律型車両1700との間の通信のシステム図である。システム1776は、サーバ1778、ネットワーク1790、及び、移動車1700を含む移動車を含み得る。サーバ1778は、複数のGPU1784(A)~1784(H)(本明細書でGPU1784と総称される)、PCIeスイッチ1782(A)~1782(H)(本明細書でPCIeスイッチ1782と総称される)、及び/又はCPU1780(A)~1780(B)(本明細書でCPU1780と総称される)を含み得る。GPU1784、CPU1780、及びPCIeスイッチは、たとえば、NVIDIAによって開発されたNVLinkインターフェース1788及び/又はPCIe接続1786などの、これらに限定されない、高速相互接続で相互に接続され得る。いくつかの実例では、GPU1784は、NVLink及び/又はNVSwitch SoCを介して接続され、GPU1784及びPCIeスイッチ1782は、PCIe相互接続を介して接続される。8個のGPU1784、2個のCPU1780、及び2個のPCIeスイッチが図示されているが、これは制限を意図されていない。実施例に応じて、それぞれのサーバ1778は、任意の数のGPU1784、CPU1780、及び/又はPCIeスイッチを含み得る。たとえば、サーバ1778は、それぞれ、8個、16個、32個、及び/又はそれ以上のGPU1784を含み得る。
【0237】
サーバ1778は、最近開始された道路工事など、予想外の又は変更された道路状態を示す画像を表す画像データを、ネットワーク1790を介して、移動車から、受信することができる。サーバ1778は、ニューラル・ネットワーク1792、更新されたニューラル・ネットワーク1792、及び/又は、交通及び道路状態に関する情報を含むマップ情報1794をネットワーク1790を介して移動車に送信することができる。マップ情報1794の更新は、建設現場、くぼみ、迂回路、洪水、及び/又は他の障害物に関する情報など、HDマップ1722の更新を含み得る。いくつかの実例では、ニューラル・ネットワーク1792、更新されたニューラル・ネットワーク1792、及び/又はマップ情報1794は、環境において任意の数の移動車から受信されたデータにおいて表された新しいトレーニング及び/又は経験から、及び/又は(たとえば、サーバ1778及び/又は他のサーバを使用する)データ・センタにおいて実行されたトレーニングに基づいて生じた可能性がある。
【0238】
サーバ1778は、トレーニング・データに基づいてマシン学習モデル(たとえば、ニューラル・ネットワーク)をトレーニングするために使用され得る。トレーニング・データは、移動車によって生成され得る、及び/又は(たとえば、ゲーム・エンジンを使用して)シミュレーションにおいて生成され得る。いくつかの実例では、トレーニング・データは、タグ付けされる(たとえば、ニューラル・ネットワークが、監督された学習の恩恵を受ける場合)及び/又は他の事前処理を受けるが、他の実例において、トレーニング・データは、タグ付け及び/又は事前処理されない(たとえば、ニューラル・ネットワークが、監督された学習を必要としない場合)。トレーニングは、たとえば以下のクラスを含むがこれらに限定されない、任意の1つ又は複数のクラスのマシン学習技法に従って、実行され得る:監視されたトレーニング、半監視されたトレーニング、監視されていないトレーニング、自己学習、強化学習、連合型学習、転移学習、特徴学習(主要構成要素及びクラスタ分析を含む)、マルチ線形部分空間学習、多様体学習、表現学習(予備辞書学習を含む)、ルールに基づくマシン学習、異常検出、及びそれらの変更形態若しくは組合せ。マシン学習モデルがトレーシングされた後は、マシン学習モデルは、移動車によって使用され得(たとえば、ネットワーク1790を介して移動車に送信される)、及び/又は、マシン学習モデルは、移動車を遠隔監視するために、サーバ1778によって使用され得る。
【0239】
いくつかの実例では、サーバ1778は、移動車からデータを受信し、リアルタイムのインテリジェント推論のために最新のリアルタイムのニューラル・ネットワークにデータを適用することができる。サーバ1778は、NVIDIAによって開発されたDGX及びDGXステーション・マシンなど、GPU1784によって電力供給される深層学習スーパーコンピュータ及び/又は専用のAIコンピュータを含み得る。しかしながら、一部の実例では、サーバ1778は、CPU電源式データ・センタのみを使用する深層学習インフラストラクチャを含み得る。
【0240】
サーバ1778の深層学習インフラストラクチャは、高速のリアルタイム推論の能力を有することでき、その能力を使用して移動車1700内のプロセッサ、ソフトウェア、及び/又は関連ハードウェアの調子を評価及び検証することができる。たとえば、深層学習インフラストラクチャは、移動車1700がそのシーケンスの画像内に位置したシーケンスの画像及び/又は物体など、移動車1700からの定期的更新を受信することができる(たとえば、コンピュータ・ビジョン及び/又は他のマシン学習物体分類技法を介して)。深層学習インフラストラクチャは、物体を識別し、移動車1700によって識別された物体とそれらを比較するために、独自のニューラル・ネットワークを実行することができ、結果が一致せず、インフラストラクチャが、移動車1700内のAIは正常に機能していないという結論を下した場合、サーバ1778は、制御を推測し、乗客に通知し、安全な駐車操作を完了するように移動車1700のフェイルセーフ・コンピュータに命じる移動車1700への信号を送信することができる。
【0241】
推論のために、サーバ1778は、GPU1784及び1つ又は複数のプログラマブル推論加速装置(たとえば、NVIDIAのTensorRT)を含み得る。GPU電源式サーバ及び推論加速の組合せは、リアルタイムの反応性を可能にすることができる。パフォーマンスがさほど必要とされない場合など、他の実例では、CPU、FPGA、及び他のプロセッサによって電力供給されるサーバが、推論のために使用され得る。
【0242】
例示的計算デバイス
図18は、本開示のいくつかの実施例の実装に使用するのに適した計算デバイス1800の一実例のブロック図である。計算デバイス1800は、以下のデバイスを間接的に又は直接的につなぐ相互接続システム1802を含み得る:メモリ1804、1つ又は複数の中央処理装置(CPU)1806、1つ又は複数のグラフィック処理ユニット(GPU)1808、通信インターフェース1810、入力/出力(I/O)ポート1812、入力/出力構成要素1814、電力供給装置1816、1つ又は複数の提示構成要素1818(たとえば、ディスプレイ)、及び1つ又は複数の論理ユニット1820。少なくとも1つの実施例において、計算デバイス1800は、1つ又は複数の仮想マシン(VM)を含み得る、及び/又は、その構成要素のいずれかは、仮想構成要素(たとえば、仮想ハードウェア構成要素)を含み得る。非限定的実例として、GPU1808のうちの1つ又は複数は、1つ又は複数のvGPUを含み得、CPU1806のうちの1つ又は複数は、1つ又は複数のvCPUを含み得、及び/又は、論理ユニット1820のうちの1つ又は複数は、1つ又は複数の仮想論理ユニットを含み得る。そのようなものとして、計算デバイス1800は、個別の構成要素(たとえば、計算デバイス1800専用の全GPU)、仮想構成要素(たとえば、計算デバイス1800専用のGPUの一部分)、又はその組合せを含み得る。
【0243】
図18の様々なブロックは、線で相互接続システム1802を介して接続しているように示されているが、これは制限することを意図されておらず、単に分かりやすくするためである。たとえば、一部の実施例では、表示デバイスなどの提示構成要素1818は、I/O構成要素1814と考えられ得る(たとえば、ディスプレイがタッチ・スクリーンである場合)。別の実例として、CPU1806及び/又はGPU1808はメモリを含み得る(たとえば、メモリ1804は、GPU1808、CPU1806、及び/又は他の構成要素のメモリに加えた記憶デバイスを表し得る)。言い換えれば、
図18の計算デバイスは、単に例示である。「ワークステーション」、「サーバ」、「ラップトップ」、「デスクトップ」、「タブレット」、「クライアント・デバイス」、「モバイル・デバイス」、「ハンドヘルド・デバイス」、「ゲーム機」、「電子制御ユニット(ECU:electronic control unit)」、「仮想現実システム」、及び/又は他のデバイス若しくはシステム・タイプなどのカテゴリはすべて、
図18の計算デバイスの範囲内にあることが意図されているので、これらは区別されない。
【0244】
相互接続システム1802は、1つ又は複数のリンク又はバス、たとえば、アドレス・バス、データ・バス、制御バス、又はその組合せ、を表し得る。相互接続システム1802は、1つ又は複数のバス又はリンク・タイプ、たとえば、業界標準アーキテクチャ(ISA:industry standard architecture)バス、拡張業界標準アーキテクチャ(EISA:extended industry standard architecture)バス、VESA(video electronics standards association)バス、周辺構成要素相互接続(PCI:peripheral component interconnect)バス、周辺構成要素相互接続エクスプレス(PCIe:peripheral component interconnect express)バス、及び/又は別のタイプのバス若しくはリンク、を含み得る。一部の実施例では、構成要素の間に直接接続が存在する。一実例として、CPU1806は、メモリ1804に直接接続され得る。さらに、CPU1806は、GPU1808に直接接続され得る。構成要素の間に直接、又はポイント対ポイント接続が存在する場合、相互接続システム1802は、接続を実施するためのPCIeリンクを含み得る。これらの実例では、PCIバスは、計算デバイス1800に含まれる必要はない。
【0245】
メモリ1804は、様々なコンピュータ可読媒体のいずれかを含み得る。コンピュータ可読媒体は、計算デバイス1800によってアクセスすることができる任意の利用可能な媒体でもよい。コンピュータ可読媒体は、揮発性及び不揮発性媒体の両方、及び取り外し可能な及び取り外し不可能な媒体を含み得る。例として、しかし限定ではなく、コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を備え得る。
【0246】
コンピュータ記憶媒体は、コンピュータ可読命令、データ構造体、プログラム・モジュール、及び/又は他のデータ・タイプなどの情報の記憶のための任意の方法又は技術において実装された揮発性及び不揮発性媒体及び/又は取り外し可能な及び取り外し不可能な媒体の両方を含み得る。たとえば、メモリ1804は、オペレーティング・システムなど、(たとえば、プログラム及び/又はプログラム要素を表す)コンピュータ可読命令を記憶することができる。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ又は他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD:digital versatile disk)又は他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ又は他の磁気記憶デバイス、或いは、所望の情報を記憶するために使用し得る及び計算デバイス1800によってアクセスし得る任意の他の媒体を含み得るが、これらに限定されない。本明細書では、コンピュータ記憶媒体は、信号自体を含まない。
【0247】
コンピュータ記憶媒体は、搬送波などの変調データ信号又は他の移送機構においてコンピュータ可読命令、データ構造体、プログラム・モジュール、及び/又は他のデータ・タイプを実施することができ、任意の情報配信媒体を含む。「変調データ信号」という用語は、その特性セットのうちの1つ又は複数を有する或いは信号内の情報をエンコードするような方式で変化した信号を指し得る。例として、しかし限定せず、コンピュータ記憶媒体は、ワイヤード・ネットワーク又は直接ワイヤード接続などのワイヤード媒体と、音響、RF、赤外線及び他のワイヤレス媒体などのワイヤレス媒体とを含み得る。前述のいずれかの組合せもまた、コンピュータ可読媒体の範囲に含まれるべきである。
【0248】
CPU1806は、コンピュータ可読命令のうちの少なくともいくつかを実行して計算デバイス1800の1つ又は複数の構成要素を制御して本明細書に記載の方法及び/又はプロセスのうちの1つ又は複数を実行するように構成され得る。CPU1806は、多数のソフトウェア・スレッドを同時に処理する能力を有する1つ又は複数の(たとえば、1個、2個、4個、8個、28個、72個などの)コアをそれぞれ含み得る。CPU1806は、任意のタイプのプロセッサを含み得、実装された計算デバイス1800のタイプに応じて、異なるタイプのプロセッサを含み得る(たとえば、モバイル・デバイスのためのより少数のコアを有するプロセッサ、及びサーバのためのより多数のコアを有するプロセッサ)。たとえば、計算デバイス1800のタイプに応じて、プロセッサは、縮小命令セット計算(RISC:Reduced Instruction Set Computing)を使用して実装されたAdvanced RISC Machines(ARM)プロセッサ、又は複合命令セット計算(CISC:Complex Instruction Set Computing)を使用して実装されたx86プロセッサでもよい。計算デバイス1800は、計算コプロセッサなど、1つ又は複数のマイクロプロセッサ又は補助コプロセッサ内の1つ又は複数のCPU1806を含み得る。
【0249】
CPU1806に加えて又はその代わりに、GPU1808は、コンピュータ可読命令のうちの少なくともいくつかを実行して計算デバイス1800の1つ又は複数の構成要素を制御して本明細書に記載の方法及び/又はプロセスのうちの1つ又は複数を実行するように構成され得る。GPU1808のうちの1つ若しくは複数は、統合されたGPU(たとえば、CPU1806のうちの1つ又は複数とでもよく、及び/又はGPU1808のうちの1つ若しくは複数は、離散GPUでもよい。実施例では、GPU1808のうちの1つ又は複数は、CPU1806のうちの1つ又は複数のコプロセッサでもよい。GPU1808は、グラフィックス(たとえば、3Dグラフィックス)をレンダリングする又は汎用計算を実行するために、計算デバイス1800によって使用され得る。たとえば、GPU1808は、GPUによる汎用計算(GPGPU:General-Purpose computing on GPU)のために使用され得る。GPU1808は、同時に数百又は数千のソフトウェア・スレッドを処理する能力を有する数百又は数千のコアを含み得る。GPU1808は、レンダリング・コマンド(たとえば、ホスト・インターフェースを介して受信されたCPU1806からのレンダリング・コマンド)に応答して、出力画像のための画素データを生成することができる。GPU1808は、画素データ又は任意の他の適切なデータ、たとえばGPGPUデータ、を記憶するためのグラフィックス・メモリ、たとえば表示メモリ、を含み得る。表示メモリは、メモリ1804の一部として含まれ得る。GPU1808は、並行して動作する(たとえば、リンクを介して)2個以上のGPUを含み得る。リンクは、GPUに直接接続することができ(たとえば、NVLINKを使用して)、又はスイッチを介して(たとえば、NVSwitchを使用して)GPUを接続することができる。ともに結合されるとき、各GPU1808は、出力の異なる部分の又は異なる出力の画素データ又はGPGPUデータ(たとえば、第1の画像の第1のGPU及び第2の画像の第2のGPU)を生成することができる。各GPUは、独自のメモリを含むことができ、又は他のGPUとメモリを共有することができる。
【0250】
CPU1806及び/又はGPU1808に加えて又はその代わりに、論理ユニット1820は、コンピュータ可読命令のうちの少なくともいくつかを実行して計算デバイス1800のうちの1つ又は複数を制御して本明細書に記載の方法及び/又はプロセスのうちの1つ又は複数を実行するように構成され得る。実施例では、CPU1806、GPU1808、及び/又は論理ユニット1820は、方法、プロセス及び/又はその部分の任意の組合せを離散的に又は合同で実行することができる。論理ユニット1820のうちの1つ若しくは複数は、CPU1806及び/若しくはGPU1808のうちの1つ若しくは複数の一部でもよく及び/又はそこで統合されてもよく、及び/又は、論理ユニット1820のうちの1つ若しくは複数は、CPU1806及び/若しくはGPU1808に対する離散構成要素であっても若しくは他の方法でそれらの外部にあってもよい。実施例では、論理ユニット1820のうちの1つ又は複数は、CPU1806のうちの1つ若しくは複数及び/又はGPU1808のうちの1つ若しくは複数のコプロセッサでもよい。
【0251】
論理ユニット1820の実例は、1つ又は複数の処理コア及び/又はその構成要素、たとえば、テンソル・コア(TC:Tensor Core)、テンソル処理ユニット(TPU:Tensor Processing Unit)、画素ビジュアル・コア(PVC:Pixel Visual Core)、ビジョン処理ユニット(VPU:Vision Processing Unit)、グラフィックス処理クラスタ(GPC:Graphics Processing Cluster)、テクスチャ処理クラスタ(TPC:Texture Processing Cluster)、ストリーミング・マルチプロセッサ(SM:Streaming Multiprocessor)、木の走査ユニット(TTU:Tree Traversal Unit)、人工知能加速装置(AIA:Artificial Intelligence Accelerator)、深層学習加速装置(DLA:Deep Learning Accelerator)、論理演算ユニット(ALU)、特定用途向け集積回路(ASIC)、浮動小数点演算ユニット(FPU)、入力/出力(I/O)エレメント、周辺構成要素相互接続(PCI)又は周辺構成要素相互接続エクスプレス(PCIe)エレメント、及び/又は同類のもの、を含む。
【0252】
通信インターフェース1810は、ワイヤード及び/又はワイヤレス通信を含む、電子通信ネットワークを介して計算デバイス1800が他の計算デバイスと通信することを可能にする、1つ又は複数のレシーバ、トランスミッタ、及び/又はトランシーバを含み得る。通信インターフェース1810は、ワイヤレス・ネットワーク(たとえば、Wi-Fi、Z-Wave、ブルートゥース(登録商標)、ブルートゥース(登録商標)LE、ZigBeeなど)、ワイヤード・ネットワーク(たとえば、イーサネット(登録商標)又はInfiniBandを介して通信すること)、低電力ワイド・エリア・ネットワーク(たとえば、LoRaWAN、SigFoxなど)、及び/又はインターネットなどの、いくつかの異なるネットワークのうちのいずれかを介する通信を可能にするための構成要素及び機能を含み得る。
【0253】
I/Oポート1812は、そのうちのいくつかは計算デバイス1800に内蔵(たとえば、統合)され得る、I/O構成要素1814、提示構成要素1818、及び/又は他の構成要素を含む、他のデバイスに計算デバイス1800が論理的に連結されることを可能にすることができる。例示的なI/O構成要素1814は、マイクロフォン、マウス、キーボード、ジョイスティック、ゲーム・パッド、ゲーム・コントローラ、サテライト・ディッシュ、スキャナ、プリンタ、ワイヤレス・デバイスなどを含む。I/O構成要素1814は、エア・ジェスチャ、音声、又は、ユーザによって生成される他の生理的入力を処理する自然ユーザ・インターフェース(NUI:natural user interface)を提供することができる。場合によっては、入力は、さらなる処理のための適切なネットワーク要素に送信され得る。NUIは、音声認識、スタイラス認識、顔認識、生体認識、画面上での及び画面の隣でのジェスチャ認識、エア・ジェスチャ、頭部及び視標追跡、並びに計算デバイス1800のディスプレイに関連するタッチ認識(さらに詳しく後述するような)の任意の組合せを実装し得る。計算デバイス1800は、ジェスチャ検出及び認識のための、ステレオスコープ・カメラ・システム、赤外線カメラ・システム、RGBカメラ・システム、タッチ画面技術、及びこれらの組合せなど、深度カメラを含み得る。追加で、計算デバイス1800は、動きの検出を可能にする加速度計又はジャイロスコープを含み得る(たとえば、慣性測定ユニット(IMU:inertia measurement unit)の一部として)。いくつかの実例では、加速度計又はジャイロスコープの出力は、没入型拡張現実又は仮想現実をレンダリングするために、計算デバイス1800によって使用され得る。
【0254】
電力供給装置1816は、ハードワイヤード電力供給装置、バッテリ電力供給装置、又はその組合せを含み得る。電力供給装置1816は、計算デバイス1800の構成要素が動作することを可能にするために計算デバイス1800に電力を提供することができる。
【0255】
提示構成要素1818は、ディスプレイ(たとえば、モニタ、タッチ画面、テレビジョン画面、ヘッドアップ表示装置(HUD)、他のディスプレイタイプ、又はその組合せ)、スピーカ、及び/又は他の提示構成要素を含み得る。提示構成要素1818は、他の構成要素(たとえば、GPU1808、CPU1806、DPUなど)からデータを受信し、データを(たとえば、画像、ビデオ、音響などとして)出力することができる。
【0256】
例示的データ・センタ
図19は、本開示の少なくとも1つの実施例において使用され得る例示的データ・センタ1900を示す。データ・センタ1900は、データ・センタ・インフラストラクチャ層1910、フレームワーク層1920、ソフトウェア層1930、及び/又はアプリケーション層1940を含み得る。
【0257】
図19に示すように、データ・センタ・インフラストラクチャ層1910は、資源オーケストレータ1912、グループ化された計算資源1914、及びノード計算資源(「ノードC.R.」)1916(1)~1916(N)を含み得、そこで、「N」は、任意の整数の、自然数を表す。少なくとも1つの実施例において、ノードC.R.1916(1)~1916(N)は、任意の数の中央処理装置(「CPU」)又は他のプロセッサ(加速装置、フィールド・プログラマブル・ゲート・アレイ(FPGA)、グラフィックス・プロセッサ若しくはグラフィックス・プロセッシング・ユニット(GPU)などを含む)、メモリ・デバイス(たとえば、動的リード・オンリ・メモリ)、記憶デバイス(たとえば、ソリッドステート若しくはディスク・ドライブ)、ネットワーク入力/出力(「NW I/O」)デバイス、ネットワーク・スイッチ、仮想マシン(「VM」)、電力モジュール、及び/又は冷却モジュールなどを含み得るが、これらに限定されない。いくつかの実施例において、ノードC.R.1916(1)~1916(N)のうちの1つ又は複数のノードC.R.は、前述の計算資源のうちの1つ又は複数を有するサーバに対応し得る。加えて、いくつかの実施例において、ノードC.R.1916(1)~19161(N)は、1つ若しくは複数の仮想構成要素、たとえば、vGPU、vCPU、及び/若しくは同類のもの、を含み得る、並びに/又は、ノードC.R.1916(1)~1916(N)のうちの1つ若しくは複数は、仮想マシン(VM)に対応し得る。
【0258】
少なくとも1つの実施例において、グループ化された計算資源1914は、1つ又は複数のラック(図示せず)内に収容された別個のグループのノードC.R.1916、或いは様々な地理的場所(やはり図示せず)にあるデータ・センタに収容された多数のラックを含み得る。グループ化された計算資源1914内の別個のグループのノードC.R.1916は、1つ又は複数のワークロードをサポートするように構成する又は割り当てることができる、グループ化された計算、ネットワーク、メモリ又はストレージ資源を含み得る。少なくとも1つの実施例において、CPU、GPU、及び/又は他のプロセッサを含むいくつかのノードC.R.1916は、1つ又は複数のワークロードをサポートするための計算資源を提供するために、1つ又は複数のラック内にグループ化され得る。1つ又は複数のラックはまた、任意の組合せで、任意の数の電力モジュール、冷却モジュール、及び/又はネットワーク・スイッチを含み得る。
【0259】
資源オーケストレータ1922は、1つ若しくは複数のノードC.R.1916(1)~1916(N)及び/又はグループ化された計算資源1914を構成又は他の方法で制御することができる。少なくとも1つの実施例において、資源オーケストレータ1922は、データ・センタ1900のソフトウェア設計インフラストラクチャ(「SDI」)管理エンティティを含み得る。資源オーケストレータ1922は、ハードウェア、ソフトウェア、又はその何らかの組合せを含み得る。
【0260】
少なくとも1つの実施例において、
図19に示すように、フレームワーク層1920は、ジョブ・スケジューラ1932、構成マネージャ1934、資源マネージャ1936、及び/又は分散型ファイル・システム1938を含み得る。フレームワーク層1920は、ソフトウェア層1930のソフトウェア1932及び/又はアプリケーション層1940の1つ若しくは複数のアプリケーション1942をサポートするためにフレームワークを含み得る。ソフトウェア1932又はアプリケーション1942は、ウェブベースのサービス・ソフトウェア又はアプリケーション、たとえば、アマゾン・ウェブ・サービス、グーグル・クラウド及びMicrosoft Azureによって提供されるもの、をそれぞれ含み得る。フレームワーク層1920は、大規模データ処理(たとえば、「ビッグ・データ」)のための分散型ファイル・システム1938を使用し得るApache Spark(商標)(以下「Spark」)などのフリー及びオープン・ソース・ソフトウェア・ウェブ・アプリケーション・フレームワークのタイプでもよいが、これに限定されない。少なくとも1つの実施例において、ジョブ・スケジューラ1932は、データ・センタ1900の様々な層によってサポートされるワークロードのスケジューリングを容易にするために、Sparkドライバを含み得る。構成マネージャ1934は、異なる層、たとえば、ソフトウェア層1930と、大規模データ処理をサポートするためのSpark及び分散型ファイル・システム1938を含むフレームワーク層1920、を構成する能力を有し得る。資源マネージャ1936は、分散型ファイル・システム1938及びジョブ・スケジューラ1932のサポートのためにマップされた又は割り当てられたクラスタ化された又はグループ化された計算資源を管理する能力を有し得る。少なくとも1つの実施例において、クラスタ化された又はグループ化された計算資源は、データ・センタ・インフラストラクチャ層1910にグループ化された計算資源1914を含み得る。資源マネージャ1936は、資源オーケストレータ1912と調整して、これらのマップされた又は割り当てられた計算資源を管理することができる。
【0261】
少なくとも1つの実施例において、ソフトウェア層1930に含まれるソフトウェア1932は、ノードC.R.1916(1)~1916(N)の少なくとも部分、グループ化された計算資源1914、及び/又はフレームワーク層1920の分散型ファイル・システム1938によって使用されるソフトウェアを含み得る。1つ又は複数のタイプのソフトウェアは、インターネット・ウェブ・ページ検索ソフトウェア、電子メール・ウイルス・スキャン・ソフトウェア、データベース・ソフトウェア、及びストリーミング・ビデオ・コンテンツ・ソフトウェアを含み得るが、これらに限定されない。
【0262】
少なくとも1つの実施例において、アプリケーション層1940に含まれるアプリケーション1942は、ノードC.R.1916(1)~1916(N)の少なくとも部分、グループ化された計算資源1914、及び/又はフレームワーク層1920の分散型ファイル・システム1938によって使用される1つ又は複数のタイプのアプリケーションを含み得る。1つ又は複数のタイプのアプリケーションは、任意の数のゲノミクス・アプリケーション、認知計算、並びに、トレーニング若しくは推論ソフトウェア、マシン学習フレームワーク・ソフトウェア(たとえば、PyTorch、TensorFlow、Caffeなど)、及び/又は1つ若しくは複数の実施例と併せて使用される他のマシン学習アプリケーションを含む、マシン学習アプリケーションを含み得るが、これらに限定されない。
【0263】
少なくとも1つの実施例において、構成マネージャ1934、資源マネージャ1936、及び資源オーケストレータ1912のうちのいずれかは、任意の技術的に可能な方式で取得される任意の量及びタイプのデータに基づいて任意の数及びタイプの自己書換え型アクションを実装することができる。自己書換え型アクションは、よくない可能性のある構成決定を行うこと並びにデータ・センタの十分に活用されていない及び/又は実行の不十分な部分を恐らく回避することからデータ・センタ1900のデータ・センタ・オペレータを解放し得る。
【0264】
データ・センタ1900は、1つ又は複数のマシン学習モデルをトレーニングする或いは本明細書に記載の1つ又は複数の実施例による1つ又は複数のマシン学習モデルを使用して情報を予測する又は推論するために、ツール、サービス、ソフトウェア或いは他の資源を含み得る。たとえば、マシン学習モデルは、データ・センタ1900に関して前述されたソフトウェア及び/又は計算資源を使用するニューラル・ネットワーク・アーキテクチャによる重量パラメータの計算によって、トレーニングされ得る。少なくとも1つの実施例において、1つ又は複数のニューラル・ネットワークに対応するトレーニングされた又は配備されたマシン学習モデルは、たとえば、本明細書に記載のものに限定されない、1つ又は複数のトレーニング技法を介して計算された重量パラメータを使用することによって、データ・センタ1900に関して前述された資源を使用して情報を推論又は予測するために使用され得る。
【0265】
少なくとも1つの実施例において、データ・センタ1900は、前述の資源を使用するトレーニング及び/又は推論の実行のために、CPU、特定用途向け集積回路(ASIC)、GPU、FPGA、及び/又は他のハードウェア(若しくはそれに対応する仮想計算資源)を使用することができる。さらに、前述の1つ又は複数のソフトウェア及び/又はハードウェア資源は、情報の推論をユーザがトレーニング又は実行することを可能にするためのサービス、たとえば、画像認識、音声認識、又は他の人工知能サービス、として構成され得る。
【0266】
例示的ネットワーク環境
本開示の実施例の実装において使用するのに適したネットワーク環境は、1つ若しくは複数のクライアント・デバイス、サーバ、ネットワーク接続型ストレージ(NAS:network attached storage)、他のバックエンド・デバイス、及び/又は他のデバイス・タイプを含み得る。クライアント・デバイス、サーバ、及び/又は他のデバイス・タイプ(たとえば、各デバイス)は、
図18の計算デバイス1800の1つ又は複数のインスタンスで実装され得、たとえば、各デバイスは、計算デバイス1800の類似の構成要素、特徴、及び/又は機能性を含み得る。加えて、バックエンド・デバイス(たとえば、サーバ、NASなど)が、実装される場合、バックエンド・デバイスは、データ・センタ1900の一部として含まれ得、その実例は、
図19に関して本明細書でさらに詳述される。
【0267】
ネットワーク環境の構成要素は、ワイヤード、ワイヤレス、又はその両方でもよい、ネットワークを介して互いに通信し得る。ネットワークは、複数のネットワーク、又はネットワークのネットワークを含み得る。実例として、ネットワークは、1つ若しくは複数のワイド・エリア・ネットワーク(WAN)、1つ若しくは複数のローカル・エリア・ネットワーク(LAN)、1つ若しくは複数のパブリック・ネットワーク、たとえば、インターネット及び/若しくは公衆交換電話網(PSTN)、並びに/又は1つ若しくは複数のプライベート・ネットワークを含み得る。ネットワークが、ワイヤレス電気通信ネットワークを含む場合、構成要素、たとえば、基地局、通信塔、或いはアクセス・ポイント(並びに他の構成要素)、は、ワイヤレス接続を提供し得る。
【0268】
互換性のあるネットワーク環境は、1つ又は複数のピア・ツー・ピア・ネットワーク環境(その場合、サーバはネットワーク環境に含まれないことがある)と、1つ又は複数のクライアント・サーバ・ネットワーク環境(その場合、1つ又は複数のサーバがネットワーク環境に含まれ得る)とを含み得る。ピア・ツー・ピア・ネットワーク環境では、サーバに関して本明細書に記載した機能性は、任意の数のクライアント・デバイスで実装され得る。
【0269】
少なくとも1つの実施例において、ネットワーク環境は、1つ又は複数のクラウドベースのネットワーク環境、分散型計算環境、その組合せなどを含み得る。クラウドベースのネットワーク環境は、フレームワーク層、ジョブ・スケジューラ、資源マネージャ、並びに、1つ若しくは複数のコア・ネットワーク・サーバ及び/又はエッジ・サーバを含み得る、サーバのうちの1つ又は複数で実装された分散型ファイル・システムを含み得る。フレームワーク層は、ソフトウェア層のソフトウェア及び/又はアプリケーション層の1つ若しくは複数のアプリケーションをサポートするために、フレームワークを含み得る。ソフトウェア又はアプリケーションは、それぞれ、ウェブベースのサービス・ソフトウェア又はアプリケーションを含み得る。実施例において、クライアント・デバイスのうちの1つ又は複数は、ウェブベースのサービス・ソフトウェア又はアプリケーションを使用し得る(たとえば、1つ又は複数のアプリケーション・プログラミング・インターフェース(API)を介してサービス・ソフトウェア及び/又はアプリケーションにアクセスすることによって)。フレームワーク層は、たとえば大規模データ処理(たとえば、「ビッグ・データ」)のための分散型ファイル・システムを使用し得る、フリー及びオープン・ソース・ソフトウェア・ウェブ・アプリケーション・フレームワークのタイプでもよいが、これに限定されない。
【0270】
クラウドベースのネットワーク環境は、本明細書に記載の計算及び/又はデータ・ストレージ機能(又は1つ若しくは複数のその部分)の任意の組合せを実施するクラウド計算及び/又はクラウド・ストレージを提供し得る。これらの様々な機能のいずれも、セントラル又はコア・サーバ(たとえば、州、領域、国、世界にわたって分散され得る1つ又は複数のデータ・センタなどの)から複数の場所に分散され得る。ユーザ(たとえば、クライアント・デバイス)への接続が、エッジ・サーバに比較的近い場合、コア・サーバは、機能性の少なくとも一部分をエッジ・サーバに任じ得る。クラウドベースのネットワーク環境は、プライベート(たとえば、単一の組織に制限される)でもよく、パブリック(たとえば、多数の組織に利用可能)、及び/又はその組合せ(たとえば、ハイブリッド・クラウド環境)でもよい。
【0271】
クライアント・デバイスは、
図18に関して本明細書に記載の例示的計算デバイス1800の構成要素、特徴、及び機能性のうちの少なくともいくつかを含み得る。実例として、及び制限ではなく、クライアント・デバイスは、パーソナル・コンピュータ(PC)、ラップトップ・コンピュータ、モバイル・デバイス、スマートフォン、タブレット・コンピュータ、スマート・ウォッチ、ウェアラブル・コンピュータ、パーソナル・デジタル・アシスタント(PDA)、MP3プレイヤ、仮想現実ヘッドセット、全地球測位システム(GPS)又はデバイス、ビデオ・プレイヤ、ビデオカメラ、監視デバイス又はシステム、車両、ボート、飛行船、仮想マシン、ドローン、ロボット、ハンドヘルド通信デバイス、病院デバイス、ゲーミング・デバイス又はシステム、娯楽システム、車両コンピュータ・システム、組み込み型システム・コントローラ、リモート制御、器具、民生用電子デバイス、ワークステーション、エッジ・デバイス、これらの描写されたデバイスの任意の組合せ、或いは任意の他の適切なデバイスとして実施され得る。
【0272】
本開示は、コンピュータ又は、携帯情報端末若しくは他のハンドヘルド・デバイスなどの、他のマシンによって実行されている、プログラム・モジュールなどのコンピュータ実行可能命令を含む、コンピュータ・コード又はマシン使用可能命令との一般的関連において説明されることがある。一般に、ルーティン、プログラム、オブジェクト、構成要素、データ構造体などを含むプログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ・タイプを実装するコードを指す。本開示は、ハンドヘルド・デバイス、家電製品、汎用コンピュータ、より特殊な計算デバイスなどを含む、様々な構成で実施され得る。本開示はまた、通信ネットワークを介してリンクされた遠隔処理デバイスによってタスクが実行される分散型コンピューティング環境において実施され得る。
【0273】
本明細書では、2個以上の要素に関する「及び/又は」の記述は、1つの要素のみ、又は要素の組合せを意味すると解釈されるべきである。たとえば、「要素A、要素B、及び/又は要素C」は、要素Aのみ、要素Bのみ、要素Cのみ、要素A及び要素B、要素A及び要素C、要素B及び要素C、或いは、要素A、B、及びCを含み得る。加えて、「要素A又は要素Bのうちの少なくとも1つ」は、要素Aの少なくとも1つ、要素Bの少なくとも1つ、或いは、要素Aの少なくとも1つ及び要素Bの少なくとも1つを含み得る。さらに、「要素A及び要素Bのうちの少なくとも1つ」は、要素Aのうちの少なくとも1つ、要素Bのうちの少なくとも1つ、或いは、要素Aのうちの少なくとも1つ及び要素Bのうちの少なくとも1つを含み得る。
【0274】
本開示の主題は、法定の要件を満たすために特異性を有して記述されている。しかしながら、その記述自体が本開示の範囲を制限することは意図されていない。そうではなくて、本発明者は、請求されている主題が、他の現在の又は未来の技術と併せて、異なるステップ又は本文書に記載されたものと類似のステップの組合せを含むように、他の形で実施され得ることを意図している。さらに、「ステップ」及び/又は「ブロック」という用語は、使用される方法の異なる要素を含意するように本明細書で使用され得るが、これらの用語は、個別のステップの順番が明示的に記載されていない限り及びそのように記載されているときを除いて本明細書で開示される様々なステップの間に何らかの特定の順番を暗示するものとして解釈されるべきではない。
【外国語明細書】