自律運転アプリケーションのための3次元(3D)交差点構造予測に関するシステム及び方法が開示される。本開示は、例示的自律型車両800(或いは「車両800」又は「エゴ車両800」と称され、その実例は、図8A~8Dに関して説明される)に関して説明されることがあるが、これは限定を意図していない。たとえば、本明細書に記載のシステム及び方法は、限定せずに、非自律型車両、半自律型車両(たとえば、1つ又は複数の適応型運転者支援システム(ADAS:adaptive driver assistance system)における)、操縦式及び非操縦式ロボット若しくはロボット・プラットフォーム、倉庫車両、オフロード車両、飛行船舶、ボート、シャトル、緊急対応車両、オートバイ、電気若しくは原動機付自転車、航空機、建設車両、潜水艦、ドローン、並びに/又は他の車両タイプによって、使用され得る。加えて、本開示は、車両アプリケーションの交差点構造に関して説明されることがあるが、これは限定を意図しておらず、本明細書に記載のシステム及び方法は、拡張現実、仮想現実、ロボット工学、セキュリティ及び監視、自律若しくは半自律マシン・アプリケーション、並びに/又は、交差点若しくは他の環境構造及び/若しくは姿勢の検出が使用され得る、任意の他の技術空間において使用され得る。
展開において、自律又は半自律型車両に位置する又は他の方法で配置されたセンサ(たとえば、カメラ、RADARセンサ、LIDARセンサなど)を使用して、センサ・データ(たとえば、2D画像、ビデオなど)が受信及び/又は生成され得る。センサ・データによって表される道路標識、道路境界線、交差点、及び/又は同類のもの(たとえば、隆起した路面標示、ランブル・ストリップ、色付きのレーン仕切り、歩道、横断歩道、脇道など)に関連する関心エリア、並びにそれらに関連する意味論的情報及び/又は方向情報を識別するようにトレーニングされたニューラル・ネットワーク(たとえば、畳み込みニューラル・ネットワーク(CNN:convolutional neural network)などの深層ニューラル・ネットワーク(DNN))に、センサ・データが適用され得る。より具体的には、DNNは、3D交差点姿勢を定義する線分に対応する1つ又は複数のキー点を含む2次元(2D)入力データ(たとえば、画像、距離画像、又は他の2Dセンサ・データ表現)から3D交差点姿勢を計算するように、またそこから生成されたキー点及び/又は線分に対応する意味論的情報(たとえば、横断歩道、横断歩道進入、横断歩道退出、交差点進入、交差点退出など、若しくはその組合せ)及び/又は他の情報を識別する出力を生成するようにトレーニングされ得る。いくつかの実例において、計算されるキー点は、歩行者用交差路(たとえば、横断歩道)進入線、交差点進入線、交差点退出線、停止線、自転車レーン、及び/又は歩行者用交差路退出線などの交差点特徴又は線分の中心点及び/若しくは端点が位置している3D世界空間位置でもよい。そのようなものとして、交差点の3D構造及び姿勢は、キー点、線分、及び/又は関連する(たとえば、意味論的)情報を使用して決定され得、3D構造は、レーン、レーンのタイプ、キー点、線分、横断歩道、方向性、進行方向、及び/又は交差点に対応する他の情報についての表現を含み得る。
トレーニング中、DNNは、レーン、横断歩道、進入線、退出線、自転車レーン、交差点エリアなどを表す線分でラベル付け又は注釈付けされた2D画像又は他のセンサ・データ表現を用いてトレーニングされ得、さらに、それに対応する意味論的情報を含み得る。いくつかの実例において、キー点は、中心点及び/又は幅情報から推論され得る、レーンの角点又は端点(たとえば、交差点構造のレーン・セグメントを表す線分)を含むようにラベル付けされ得る。結果として、線分注釈及び意味論的情報を使用して情報が決定され得るので、交差点構造は、限られたラベル付けしか必要としないこれらのキー点及び/又は線分を使用して符号化され得る。いくつかの実例において、2D交差点構造のグラウンド・トゥルースは、交差点内の潜在的な関心エリアに対応する1組のポリゴン及びそれに対応する意味論的情報(たとえば、交差点の内側、交差点の外側など)によって定義され得る。次いで、ラベル付けされた線分及び意味論的情報は、(たとえば、3D世界空間から2D画像空間への変換後)DNNの計算された出力と-たとえば、損失関数を使用して-比較するために使用され得る。
2D入力画像から3D交差点構造を予測するようにDNNをトレーニングするために、DNNの3D交差点構造予測が、-たとえば、2D画像を生成したセンサの固有の及び/又は付帯的パラメータを使用して-2D画像空間に投影され得る。次いで、損失関数を使用して、2D交差グラウンド・トゥルース・データの画素と3D予測の2D投影との間の距離を測定することができる。この距離を、損失関数を使用して最小化し、DNNの正確性又は精度を向上させることができる。そのようなものとして、DNNは、2D画像と世界空間内の3D交差点構造との間のマッピングを学習するようにトレーニングされ得る。
さらに、1つ又は複数の3D幾何学的整合性制約を-たとえば、損失関数を介して-DNNの3D予測に適用して、幾何学的制約を考慮して3D交差点構造をより正確に予測するようにDNNをトレーニングすることができる。現実世界の交差点及びその設計に関する知識を使用して、3D幾何学的整合性制約を決定することができる。たとえば、DNNの出力を評価するための幾何学的制約として、平滑性制約、直線制約、及び/又はレーン幅の統計的変動性が使用されてもよい。3D幾何学的整合性制約に対応する損失関数を使用して、これらの制約と一致しない出力にペナルティを課すことができる。その場合、総損失は、3D幾何学的整合性の損失及び2Dグラウンド・トゥルースの損失を含み得る。2D画像入力に基づいて3D交差点構造を正確且つ効率的に予測するために、総損失を最小限に抑えるようにDNNをトレーニングすることができる。
DNNがトレーニングされると、DNNは、線分、キー点、交差点エリア、3D交差点構造、及び/又は2D入力データに対応する他の出力に対応する3D世界空間において出力を予測することができる。いくつかの実施例において、キー点の3D位置は、各線分の1つ又は複数の端点、予測された線分の中心点、又はその組合せとして決定され得る。次いで、これらのキー点の3D位置は、車両が交差点をナビゲート又は横断する際に使用するための3D交差点構造を構築するために、-たとえば、ポストプロセッサによって-使用され得る。
いくつかの実施例において、キー点の3D位置が決定されると、最終的に「ドット(又はキー点)を接続」し、交差点をナビゲートするための進路を生成するために、任意の数の追加の後処理動作が実行され得る。たとえば、キー点を接続して、交差点を横断するための潜在的進路を表すポリラインを生成することができる。最終進路には、車両の場所、キー点の位置、及び/又は同類のものなどに関連して決定され得る進路タイプが割り当てられ得る。潜在的な非限定的進路タイプには、左折、右折、レーンの切り替え、及び/又はレーンの継続が含まれる。潜在的進路の自然な運転曲線を最も正確に反映する最終的な形状を決定するために、曲線フィッティングも実装され得る。曲線フィッティングは、ポリライン・フィッティング、多項式フィッティング、クロソイド・フィッティング、及び/又は他のタイプの曲線フィッティング・アルゴリズムを使用して実行され得る。潜在的進路の形状は、位置、進行方向ベクトル(たとえば、角度)、意味論的情報、及び/又は接続されるキー点に関連する他の情報に基づいて決定され得る。曲線フィッティング・プロセスは、車両が交差点をナビゲートするために辿ることができるすべての可能な進路を生成するために、潜在的に互いに接続され得るすべてのキー点に対して繰り返され得る。いくつかの実例において、実行不可能な進路は、そのような進路に関連する交通規則及び物理的制限に基づいて検討から除外され得る。
いくつかの実施例において、キー点を接続し、車両が交差点をナビゲートするための潜在的進路を生成するために、マッチング・アルゴリズムが使用され得る。そのような実例では、マッチング・スコアは、キー点の位置、進行方向ベクトル、意味論的情報、及び/又はキー点のペア間の近似曲線の形状に基づいて、キー点のペアごとに決定され得る。いくつかの実例において、ハンガリ・マッチング・アルゴリズムなどの線形マッチング・アルゴリズムが使用され得る。他の実例において、キー点のペアを接続するために、スペクトル・マッチング・アルゴリズムなどの非線形マッチング・アルゴリズムが使用され得る。
いずれの実例においても、交差点を通る進路が決定されると、この情報を使用して、車両による1つ又は複数の動作を実行することができる。たとえば、世界モデル・マネージャは、交差点のナビゲートを支援するために世界モデルを更新することができ、自律運転ソフトウェア・スタックの進路計画層は、交差点情報を使用して、(たとえば、決定された潜在的進路のうちの1つに沿って)交差点を通る進路を決定することができ、及び/又は制御構成要素は、決定された進路に従って交差点をナビゲートするための車両の制御を決定することができる。
3D交差点構造を計算するためのDNNのトレーニング
図1を参照すると、図1は、本開示のいくつかの実施例による、交差点を検出するように深層ニューラル・ネットワーク(DNN)104をトレーニングするための例示的プロセス100を示す例示的データ流れ図である。本明細書に記載されているこの及び他の配置は単に実例として説明されていることを理解されたい。他の配置及び要素(たとえば、マシン、インターフェース、機能、順番、機能のグループ分けなど)が、示されたものに加えて又はこれらに代わって使用されてもよく、いくつかの要素はともに除外されてもよい。さらに、本明細書に記載の要素の多くは、個別の又は分散された構成要素として又は他の構成要素と併せて、並びに任意の適切な組合せ及び場所において、実装され得る機能エンティティである。エンティティによって実行されるものとして本明細書に記載された様々な機能は、ハードウェア、ファームウェア、及び/又はソフトウェアによって実施され得る。たとえば、様々な機能が、メモリに記憶された命令を実行するプロセッサによって実施され得る。いくつかの実施例において、プロセス100によるニューラル・ネットワークのトレーニングは、図9の例示的計算デバイス900及び/又は図10の例示的データ・センタ1000に関して本明細書に記載されるものと同様の構成要素、特徴、及び/又は機能を少なくとも部分的に使用して、実装され得る。
プロセス100は、1つ又は複数のセンサからのセンサ・データ102を生成及び/又は受信することを含み得る。センサ・データ102は、非限定的実例として、車両(たとえば、本明細書に記載の図8A~8Cの車両800)の1つ又は複数のセンサから受信され得る。センサ・データ102は、少なくとも部分的に2D入力データ(たとえば、カメラ画像)から3Dの交差点を検出するように1つ又は複数のDNN104をトレーニングするために、車両によって、プロセス100内で、使用され得る。トレーニング中、センサ・データ102は、DNN104などのDNNをトレーニングするためのセンサ・データを生成する1つ又は複数のデータ収集車両を使用して生成され得る、及び/又は事前に生成され、トレーニング・データ・セットに含まれ得る。トレーニング中に使用されるセンサ・データ102は、追加で又は別法として、シミュレーションされたセンサ・データ(たとえば、仮想環境内の仮想車両の1つ又は複数の仮想センサを使用して生成されたセンサ・データ)を使用して生成され得る。車両800内でトレーニング及び展開されると、センサ・データ102は、車両800の1つ又は複数のセンサによって生成され、3D交差点構造、意味論的情報、及び/又は交差点に対応する方向情報を計算するようにDNN104によって処理され得る。
そのようなものとして、センサ・データ102は、たとえば、図8A~8Cを参照すると、RADARセンサ860、超音波センサ862、LIDARセンサ864、ステレオ・カメラ868、ワイドビュー・カメラ870(たとえば、魚眼カメラ)、赤外線カメラ(s)872、サラウンド・カメラ874(たとえば、360度カメラ)、長距離及び/若しくは中距離カメラ878、並びに/又は他のセンサ・タイプを含む車両のセンサのいずれかからのセンサ・データ102を含み得るが、これに限定されない。別の実例として、センサ・データ102は、仮想(たとえば、テスト)環境内の仮想車両又は他の仮想オブジェクトの任意の数のセンサから生成された仮想(たとえば、シミュレーション又は拡張された)センサ・データを含み得る。そのような実例において、仮想センサは、シミュレーションされた環境(たとえば、ニューラル・ネットワーク・パフォーマンスを試験、トレーニング、及び/又は検証するために使用される)内の仮想車両又は他の仮想物体に対応し得、仮想センサ・データは、シミュレーションされた又は仮想の環境内の仮想センサによってキャプチャされたセンサ・データを表し得る。そのようなものとして、仮想センサ・データを使用することによって、本明細書に記載のDNN104は、シミュレーションされた環境内のシミュレーションされたデータ又は拡張されたデータを使用してテスト、トレーニング、及び/又は検証され得、これにより、そのようなテストの安全性がより低い可能性がある現実世界環境の外で、より極端なシナリオをテストすることが可能になり得る。
いくつかの実施例において、センサ・データ102は、画像を表す画像データ、ビデオを表す画像データ(たとえば、ビデオのスナップショット)、及び/又はセンサの知覚フィールドの表現(たとえば、LIDARセンサの深度図、超音波センサの値グラフなど)を表すセンサ・データを含み得る。センサ・データ102が画像データを含む場合、任意のタイプの画像データ・フォーマット、たとえば、限定せずに、JPEG(Joint Photographic Experts Group)又は輝度/クロミナンス(YUV:Luminance/Chrominance)フォーマット、H.264/AVC(Advanced Video Coding)若しくはH.265/HEVC(High Efficiency Video Coding)などの圧縮ビデオ・フォーマットから生じるフレーム・ストリーミングのような圧縮画像、RCCB(Red Clear Blue)、RCCC(Red Clear)、若しくは他のタイプの画像センサなどに由来する未加工画像、及び/又は他のフォーマットなどが使用され得る。加えて、いくつかの実例において、センサ・データ102は、前処理なしに(たとえば、未加工の又はキャプチャされたフォーマットにおいて)プロセス100内で使用され得、他の実例において、センサ・データ102は、前処理(たとえば、ノイズ・バランシング、デモザイク処理、スケーリング、クロップ、拡張、ホワイト・バランシング、トーン・カーブ調整など、たとえば、センサ・データ・プリプロセッサ(図示せず)を使用する)を受け得る。本明細書では、センサ・データ102は、未処理のセンサ・データ、前処理されたセンサ・データ、又はその組合せを指し得る。
トレーニングに使用されるセンサ・データ102は、センサ・データ102は、最初の画像(たとえば、1つ又は複数の画像センサによってキャプチャされたものとしての)、ダウン・サンプリングされた画像、アップサンプリングされた画像、クロップされた若しくは関心領域(ROI:region of interest)画像、他の方法で拡張された画像、及び/又はその組合せを含み得る。DNN104は、画像(及び/又は他のセンサ・データ102)並びに対応するグラウンド・トゥルース・データ-たとえば、2Dグラウンド・トゥルース・データ116-を使用してトレーニングされ得る。グラウンド・トゥルース・データは、注釈、ラベル、マスク、及び/又は同類のものを含み得る。たとえば、いくつかの実施例において、2Dグラウンド・トゥルース・データは、-たとえば、図2A~2B及び図3A~3Bに関して説明したように-交差点エリア若しくは線分の注釈、交差点エリア若しくは線分の分類、及び/又はそれに関連する方向情報に対応し得る。いくつかの実施例において、2Dグラウンド・トゥルース・データ116は、2020年4月14日に出願された特許文献1、2020年6月24日に出願された特許文献2、及び/又は2020年3月10日に出願された特許文献3に記載されたグラウンド・トゥルース・データに類似している場合があり、これらはそれぞれ、参照によりその全体が本明細書に組み込まれる。
2Dグラウンド・トゥルース・データ116を生成するために注釈が使用される場合、いくつかの実例において、注釈は、描画プログラム(たとえば、注釈プログラム)、コンピュータ支援設計(CAD:computer aided design)プログラム、ラベリング・プログラム、注釈の生成に適した別のタイプのプログラム内で生成され得る、及び/又は手描きであり得る。任意の実例において、2Dグラウンド・トゥルース・データ116は、合成的に生成され得る(たとえば、コンピュータ・モデル又はレンダリングから生成される)、実際に生成され得る(たとえば、現実世界のデータから設計及び生成される)、機械自動化され得る(たとえば、特徴分析を使用すること、及びデータから特徴を抽出し、次いでラベルを生成するように学習すること)、人間により注釈付けされ得る(たとえば、ラベラー又は注釈エキスパートがラベルの位置を定義する)、及び/又はその組合せであり得る(たとえば、人間が中心点又は原点並びにエリアの寸法を識別し、機械が交差点エリアのポリゴン及び/又はラベルを生成する)。
交差点エリアは、交差の関心エリアを描出する境界形状-たとえば、ポリゴンなど-に対応する注釈、又は他のラベル・タイプを含み得る。いくつかの実例において、交差点エリアは、歩行者用交差路エリア、交差点進入エリア、交差点退出エリア、不明確エリア、レーンなしエリア、交差点内部エリア、部分的に見えるエリア、全体的に見えるエリアなどに対応する1つ又は複数のポリゴンによって、-たとえば、センサ・データ102のセンサ・データ表現内で-センサ・データ102に描出され得る。ポリゴンは、境界ボックスとして生成され得る。2Dグラウンド・トゥルース・データ116に対応する意味論的情報(たとえば、分類)は、DNN104をトレーニングするために使用されるセンサ・データ102によって表される画像ごとに、及び/又は画像内の1つ又は複数のポリゴンごとに生成され得る。分類の数は、DNN104が予測するようにトレーニングされている特徴の数及び/若しくはタイプ、又はそれぞれの画像内の交差点エリアの数及び/若しくは特徴のタイプに対応し得る。
実施例に応じて、意味論的情報は、特徴タイプ又は交差点エリアのクラス、たとえば、しかし限定せずに、歩行者用交差路エリア、交差点進入エリア、交差点退出エリア、不明確エリア、レーンなしエリア、交差点内部エリア、部分的に見えるエリア、全体的に見えるエリア及び/又は同類のものに対応する分類又はタグに対応し得る。いくつかの実例において、分類は、最初に交差点内部エリア及び/又は交差点外部エリアに対応し得る。交差点内部エリア分類は、交差点を様々な方向に横断する車両の進路が交差し得る交差点内のエリアを含む交差点エリアを指し得る。交差点外部エリア分類は、交差点内部エリアの外側のエリアを含む交差点エリアを指し得る。
交差点外部エリアとして分類された交差点エリアは、歩行者用交差路エリア、交差点進入エリア、交差点退出エリア、不明確エリア、レーンなしエリア、及び/又は同類のものを含むがこれらに限定されない、交差点退出エリアの特徴タイプに対応する属性に対応する分類でさらにラベル付けされ得る。具体的には、交差点進入の属性は、1つ又は複数の車両が様々な異なる方向から対応する交差点に進入しようとしている交差点エリアに対応し得る。交差点退出エリアは、直近に交差点を様々な方向に退出した1つ又は複数の車両が位置し得る交差点エリアに対応し得る。車両800が交差点を安全に横断するためには交差点退出エリアを安全に横断しなければならないので、交差点退出エリアに関する情報が特に重要である可能性があることを理解されたい。同様に、歩行者用交差路エリアは、交差点内部エリアの外側に位置する歩行者用交差路に対応する交差点エリアを指し得る。「レーンなしエリア」として分類されるエリアは、車両が横断することを許可されていない交差点エリアたとえば、自転車レーン、歩行者通路、及び/又は同類のものに対応し得る。「不明確エリア」属性は、車両の走行方向が不明確である交差点エリアに対応し得る。加えて、交差点内部エリア及び交差点外部エリア・クラスの分類はまた、全体的に見えるエリア及び/又は部分的に見えるエリアの属性のうちの1つを含み得る。実例において、分類が、全体的に見えるエリアの属性又はクラス・ラベルを含む場合、対応する交差点エリアは、たとえば、障害物のない、全体的に見える表面を含み得る。対照的に、分類が、部分的に見えるエリアの属性又はクラス・ラベルを含む場合、対応する交差点エリアは、対応するセンサ・データ102においてエリア内の運転面が部分的にしか見えないような遮蔽などの障害物を含み得る。本明細書に記載のラベリング・オントロジーは、例示のみを目的としており、本開示の範囲を逸脱せずに、追加の及び/又は代替のクラス・ラベルが使用され得る。
非限定的実例として図2A~2Bを参照すると、図2A~2Bは、本開示のいくつかの実施例による、交差点を検出するようにDNNをトレーニングするためのグラウンド・トゥルース生成において使用するためのセンサ・データ102に対応する例示的注釈を示す。たとえば、図2Aは、図1のトレーニング・プロセス100に従ってグラウンド・トゥルース・データを生成するために使用され得る画像200Aの(たとえば、意味論的情報に対応する)例示的ラベル付けを示す。画像内の交差点エリア又は交差領域は、交差点エリア(たとえば、エリア204A、204B、206、208、210A、及び210B)並びに対応する分類(たとえば、「交差点内部」、「部分的に見える」、「車両退出」、「車両進入」、「部分的に見える」、「歩行者用交差路」など)によって、注釈付けされ得る。たとえば、交差点エリア204Aは、ポリゴンを使用してラベル付けされ、「交差点進入」及び「部分的に見える」などの1つ又は複数の属性を有するものとして分類され得る。同様に、交差点エリア204B、206、208、210A、及び210Bもポリゴンを使用してラベル付けされ得、交差点204Bは「車両進入」及び「部分的に見える」などの1つ又は複数の属性を有するものとして分類され得、交差点エリア206は「歩行者用交差路」及び「部分的に見える」などの1つ又は複数の属性を有するものとして分類され得、交差点エリア208は「交差点内部」及び「部分的に見える」などの1つ又は複数の属性を有するものとして分類され得、交差点エリア210Aは「車両退出」及び「部分的に見える」などの1つ又は複数の属性を有するものとして分類され得、交差点エリア210Bは、「車両退出」及び「全体的に見える」などの1つ又は複数の属性を有するものとして分類され得る。いくつかの実例において、共通のクラス又は分類に属する各交差点エリアに、一致する色のポリゴン(又は、意味論的情報の何らかの他の視覚的表示)を注釈付けすることもできる。たとえば、交差点エリア204A及び204Bのポリゴンは、それらが両方とも車両進入分類として分類されるので、同じ色及び/又はスタイルであり得る。同様に、交差点エリア210A及び210Bのポリゴンは、それらが両方とも車両退出分類として分類されるので、同じ色及び/又はスタイルを使用して注釈付けされ得る。これらのラベル付け又は注釈スタイルは、特定のクラスに対応するものとしてシステム100に認識され得、この情報は、DNN104をトレーニングするための符号化されたグラウンド・トゥルース・データを生成するために使用され得る。
ここで図2Bを参照すると、図2Bは、本発明のいくつかの実施例による、交差点エリアを検出するようにDNN104をトレーニングするためにセンサ・データに適用される注釈の別の実例を示す。ここに図示されているように、交差点エリア222A~222C、224A~224C、226A~226B、228A~228B、及び230は、ポリゴン及び対応する分類(たとえば、「交差点内部」、「部分的に見える」、「車両退出」、「車両進入」、「部分的に見える」、「歩行者用交差路」など)で注釈付けされ得る。たとえば、交差点エリア222A、222B、及び222Cは、同様の色及び/又はスタイルのポリゴンを使用してラベル付けされ、「車両進入」及び「部分的に見える」のうちの1つ又は複数として分類され得る。同様に、交差点エリア224A、224B、及び224Cは、同様の色及び/又はスタイルのポリゴンを使用してラベル付けされ、「歩行者用交差路」、「全体的に見える」、及び「部分的に見える」のうちの1つ又は複数として分類され得る。交差点エリア226A及び226Bは、同様の色及び/又はスタイルのポリゴンを使用してラベル付けされ、「レーンなし」、「全体的に見える」、及び「部分的に見える」のうちの1つ又は複数として分類され得る。交差点エリア228A及び228Bは、同様の色及び/又はスタイルのポリゴンを使用してラベル付けされ、「車両退出」、「全体的に見える」、及び「部分的に見える」のうちの1つ又は複数として分類され得る。交差点エリア230は、ポリゴンを使用してラベル付けされ、「交差点内部」及び「部分的に見える」のうちの1つ又は複数として分類され得る。
注釈は、同じ分類に対して同様の視覚的表現であり得る。図示のように、交差点エリア222A、222B、及び222Cは、車両退出エリアとして分類され得る。このようにして、画像の同様に分類された特徴は、同様の方法で注釈付けされ得る。さらに、分類が複合名詞であり得ることに留意されたい。図2Bでは、異なる分類を表すために、異なる分類ラベルが実線、破線などによって表され得る。さらに、異なる分類ラベルは、名詞及び/又は複合名詞であり得る。これは限定を意図しておらず、画像内の特徴(たとえば、交差点エリア)の分類ラベルの違いを説明するために、分類の任意の命名規則が使用されてもよい。
2Dグラウンド・トゥルース・データ116の生成のための追加の又は代替のオプションとして、センサ・データ102に関連して、レーン(又は線)ラベルが生成され得る。たとえば、交差点に対応する特徴又は関心エリアに対応する注釈又は他のラベル・タイプが生成され得る。いくつかの実例において、交差点構造は、センサ・データ102内のレーン、横断歩道、進入線、退出線、自転車レーンなどに対応する1組の線分として定義され得る。線分は、ポリラインとして生成され得、各ポリラインの中心は、対応する線分の中心として定義される。意味論的情報(たとえば、分類)は、DNN104をトレーニングするために使用されるセンサ・データ102によって表される画像(及び/又は他のセンサ・データ表現)ごとに、並びに/又は画像内の線分及び中心のうちの1つ又は複数ごとに生成され得る。上記と同様に、分類の数は、DNN104が予測するようにトレーニングされている特徴の数及び/若しくはタイプ、又はそれぞれの画像内のレーンの数及び/若しくは特徴のタイプに対応し得る。実施例に応じて、分類は、横断歩道、横断歩道進入、横断歩道退出、交差点進入、交差点退出、及び/又は自転車レーンなどであるがこれらに限定されない、特徴タイプに対応する分類又はタグに対応し得る。
いくつかの実例において、交差点構造は、注釈に基づいて決定され得る。そのような実例では、レーン・ラベルから1組のキー点が決定され得、各キー点は、レーンを横切って延在する対応する線分の中心(又は左端、又は右端など)に対応する。キー点は、主にレーン・セグメントの中心点に関して説明されているが、これは限定を意図するものではなく、いくつかの実例では、センサ・データ102のそれぞれのインスタンスのキー点として、各レーンの角又は端点も決定され得る。たとえば、各レーンの角又は端点は、中心キー点及びレーンの方向性から、又はレーンのラベル若しくは注釈自体から推論され得る。加えて、レーン又は線分の数、及び各レーンからの各線分に対応する進行方向、方向性、幅、及び/又は他の幾何形状が、注釈から-たとえば、レーンのラベル及び分類から-決定され得る。結果として、注釈が特定の交差点構造又は姿勢情報-進行方向、レーン幅、及び/又はレーンの方向性など-を直接示していない場合でも、この情報を決定するために注釈が分析又は処理され得る。
たとえば、第1のレーン・ラベルがレーンの幅に沿って延在し、「横断歩道進入」の分類を含み、第2のレーン・ラベルが同じレーンの幅に沿って延在し、「横断歩道退出_交差点進入」の分類を含む場合、この情報を使用して、レーンの進行方向(たとえば、第1のレーン・ラベルから第2のレーン・ラベルまで)が決定され得る(たとえば、車両は、第1のレーン・ラベルを横切って第2のレーン・ラベルに向かう方向に走行する)。加えて、レーン・ラベルは、レーンの方向性(たとえば、角度)を示す場合があり、この情報から、-レーン・ラベルの法線を計算することなどによって-進行方向(たとえば、角度)が決定され得る。
ここで図3A~3Bを参照すると、図3A~3Bは、本開示のいくつかの実施例による、交差点構造及び姿勢を検出するようにDNN104をトレーニングするための2Dグラウンド・トゥルース・データ116の生成に使用するための、センサ・データ102に適用される例示的注釈を示す。たとえば、図3Aは、図1のトレーニング・プロセス100に従って2Dグラウンド・トゥルース・データ116を生成するために使用され得る画像300Aの例示的ラベル付け(たとえば、注釈に対応する)を示す。画像内のレーンには、レーン・ラベル(たとえば、レーン304、306、310、及び312)及び対応する分類(たとえば、歩行者進入、交差点退出、交差点進入、歩行者退出、レーンなし)で注釈付けされ得る。たとえば、レーン304は、線分を使用してラベル付けされ、交差点進入及び歩行者進入のうちの1つ又は複数として分類され得る。同様に、レーン306、レーン308、及びレーン310も、線分を使用してラベル付けされ得、レーン306は、交差点進入及び歩行者退出のうちの1つ又は複数として分類され得、レーン308は、交差点進入及び歩行者退出のうちの1つ又は複数として分類され得、レーン312は、レーンなしとして分類され得る。
さらに、レーン304、306、及び308のラベルは、矢印302A~302Vによって示されるように、対応する進行方向でさらに注釈付けされ得る。進行方向は、特定のレーンに関連する交通の方向を表し得る。いくつかの実例において、進行方向は、その対応するレーン・ラベルの中心(又はキー)点に関連付けられ得る。たとえば、進行方向302Sは、レーン304の中心点に関連付けられ得る。図3Aでは、異なる分類を表すために、異なる分類ラベルが異なる線種-たとえば、実線、破線など-によって表され得る。しかしながら、これは限定を意図しておらず、レーン・ラベル及びその分類のいずれの視覚化も、画像内の特徴(たとえば、レーン)の分類ラベルの違いを示すための異なる形状、パターン、塗りつぶし、色、記号、及び/又は他の識別子を含み得る。
ここで図3Bを参照すると、図3Bは、本発明のいくつかの実施例による、交差点構造及び姿勢を検出するように機械学習モデルをトレーニングするためのセンサ・データに適用される注釈の別の実例を示す。ここでは、画像300B内のレーン322A及び322Bは、線分で注釈付けされ得る。レーン322Bに対応する線分は、車両上に延在するように注釈付けされ得る。これは、実際の位置が遮蔽されている可能性がある場合でも、キー点の位置を予測するようにDNN104をトレーニングするのに役立ち得る。結果として、車道内の車両又は他の物体の存在が、交差点を通る提案進路を生成するシステムの能力を損なうことがない可能性がある。注釈は、同じ分類に対して同様の視覚的表現であり得る。図示のように、レーン322A及び322Bは、交差点進入線停止線として分類され得る。このようにして、画像の同様に分類された特徴は、同様の方法で注釈付けされ得る。さらに、分類が、複合名詞を使用して表され得ることに留意されたい。図3Bでは、異なる分類を表すために、異なる分類ラベルが実線、破線などによって表され得る。さらに、異なる分類ラベルは、名詞及び/又は複合名詞であり得る。これは限定を意図しておらず、画像内の特徴(たとえば、レーン)の分類ラベルの違いを説明するために、分類の任意の命名規則が使用されてもよい。
エンコーダは、交差点構造及び姿勢に対応する2Dグラウンド・トゥルース・データ116を、注釈を使用して符号化するように構成され得る。たとえば、本明細書に記載のように、注釈がレーンのラベル及び分類に限定され得る場合でも、キー点、レーンの数、進行方向、方向性、並びに/又は他の構造及び姿勢情報などの情報は、注釈から決定され得る。この情報が決定されると、情報は、2Dグラウンド・トゥルース・データ116を生成するために、エンコーダによって符号化され得る。たとえば、レーンに対応する進行方向角は、レーンに対応する線分の方向の法線を使用して決定され得、進行方向は、意味論的情報又は分類情報を使用して決定され得る(たとえば、線分が横断歩道進入に対応し、その線分の後の次の線分が横断歩道退出及び交差点進入に対応する場合、進行方向は、線分から次の線分に向かって、交差点に進んでいると決定され得る)。注釈から方向性(たとえば、レーンの角度又は他の幾何形状)が決定されると、方向ベクトルが決定され、線分-線分を表すキー点(たとえば、中心キー点)など-に帰属し得る。同様に、(たとえば、方向性から-その法線として-又はその他の方法で)進行方向が決定されると、進行方向ベクトルが決定され、線分-線分を表すキー点など-に帰属し得る。たとえば、進行方向(たとえば、レーンに沿った車両の走行方向に対応する角度)が決定されると、進行方向ベクトルが決定され、線分-線分を表すキー点など-に帰属し得る。
センサ・データ102のインスタンスごとに(たとえば、センサ・データ102が画像データを含む画像ごとに)2Dグラウンド・トゥルース・データ116が生成されると、DNN104は、2Dグラウンド・トゥルース・データ116を使用して(交差の線分の位置及びそれに関連する意味論的情報を含む)3D交差点構造を直接計算するようにトレーニングされ得る。たとえば、DNN104は、出力106を生成することができ、出力106は、-損失関数114を使用して-センサ・データ102及び/又は3D幾何学的整合性制約118のそれぞれのインスタンスに対応する2Dグラウンド・トゥルース・データ116と比較され得る。たとえば、2Dグラウンド・トゥルース・データ116に関して、DNN104の3D出力108は、1つ又は複数の損失関数114を使用した2Dグラウンド・トゥルース・データ116との比較のために、-たとえば、3D対2D変換器112を使用して-2D空間に変換され得る。
DNN104は、最初に、3D世界空間における(x,y,z)座標の任意に初期化された値(たとえば、3D出力108)を出力することができ、この値は、損失関数114を使用して時間とともに改善することになる。たとえば、3D出力108は、センサ・データ102(たとえば、2Dカメラ画像、又は他の2D画像データ表現)に描写された交差点を描出する線分に対応するキー点の3D世界空間位置に対応し得る。そのようなものとして、交差点に対応する線分を生成するために、中心キー点及び/又は終了キー点-それぞれ、車両800の、原点(たとえば、車軸の中心、車両の最前点、車両の最上点などの車両上の点)を基準にした3D世界空間内の対応する(x,y,z)位置を含む-が使用(たとえば、接続)され得る。たとえば、3D出力108は、3D世界空間内の各点の(たとえば、対象空間又は設計空間内の各(x,y,z)座標)の、点がキー点(及び/又は線分)に対応するかどうかに関する信頼性として計算され得る。意味論的情報110を組み込む場合、3D世界空間内の各点は、意味論的クラスの各タイプに関連する信頼性を有し得、閾値信頼性は、閾値信頼性を超える意味論的クラスを有さない点を除外するために使用され得る。そのようなものとして、点が任意のクラスについて閾値を超える信頼性を有する場合、その位置にキー点(又は線分)があり、キー点(又は線分)が閾値信頼性を超えるクラスのものであり得る、という予測になり得る。
しかしながら、正確で信頼できる3Dグラウンド・トゥルース・データを十分に大量に生成することは困難であり得るので、プロセス100は、2Dグラウンド・トゥルース・データ116を使用してDNN104をトレーニングすることができる。そのようなものとして、交差キー点-又は、それに対応する線分-の3D世界空間内の予測位置は、3D対2D変換器を使用して2D空間に変換され得る。たとえば、3D対2D変換器は、センサ・データ102のインスタンスを生成したセンサの固有のパラメータ(たとえば、光学的中心、焦点距離、非対称係数など)及び/又は付帯的パラメータ(たとえば、3D世界空間内の(たとえば、車両800の原点に対する)センサ位置、回転、並進、3D世界空間から3Dカメラ座標系への変換など)を使用して、値を3D世界空間から2D画像空間に変換する。
次いで、交差キー点(又は、そこから構築された線分)の3Dから2Dに変換された位置は、2Dグラウンド・トゥルース・データ116内のキー点(又は線分)の既知の2D位置と比較され得る。たとえば、2Dグラウンド・トゥルース・データ116は、(たとえば、図3A~3Bに関して説明したように)それに対応する意味論的情報及び/若しくは方向情報を有する1組のポリライン・セグメント、並びに/又は(たとえば、図2A~2Bに関して説明したように)対応する意味論的情報を伴う交差点での潜在的な競合エリアを示す1組のポリゴン・エリアを含み得る。いくつかの実施例において、本明細書に記載の2Dグラウンド・トゥルース・データ116フォーマットに加えて又は別法として、他の2Dグラウンド・トゥルース・データ116フォーマット又はスタイルを、本開示の範囲を逸脱せずに使用することができる。任意の実施例において、DNN104の3D座標予測(たとえば、3D出力108)は、2Dグラウンド・トゥルース・データ116と同じ2D(たとえば、画像)空間に投影され得、2Dグラウンド・トゥルース・データ116と交差点特徴の変換された2D位置との間の距離を比較するために、損失関数114が使用され得る。距離を最小化することによって、DNN104の予測の正確性が向上し、時間の経過とともに、DNN104は、(たとえば、2D)センサ・データ102から抽出された2D交差点構造情報と3D世界空間内の3D交差点構造との間のマッピングを学習する。加えて、キー点及び/又は線分ごとに、DNN104によって出力された意味論的情報110が、2Dグラウンド・トゥルース・データ116からの意味論的情報と比較され得る。さらに、3D出力108は、方向ベクトルを含み得、及び/又は意味論的情報110は、キー点及び/又は線分に対応する方向を示し得る。そのようなものとして、出力106からのこの情報は、(図3A~3Bなどに関して本明細書に記載のように)2Dグラウンド・トゥルース・データ116からの方向ベクトル及び/又は進行方向情報と比較され得るキー点及び/又は線分に関連する方向を決定するために使用され得る。
一実例として図4を参照すると、図4は、本開示のいくつかの実施例による、ニューラル・ネットワークをトレーニングするために3D出力108を2D空間に変換する例示的イラストレーションである。たとえば、3D出力108Aは、センサ・データ102のインスタンス-たとえば、図3A及び図4の画像300Aの2Dグラウンド・トゥルース・データ116に対応するインスタンスに対応する、DNN104の3D出力108の視覚化に対応し得る。3D出力108Aは、車両上のある原点に対応する原点(0,0,0)を含み得、最大で設計空間又は対象空間の範囲まで横方向に左から右に、設計空間の範囲まで縦方向に前後に、設計空間の範囲まで垂直方向に上下に(上から下への視点であるため、描写せず)、延在し得る。非限定的実施例において、設計空間は、幅40メートル(たとえば、x軸)、長さ100メートル(たとえば、y軸)、及び高さ3メートル(たとえば、z軸)であり得る。しかしながら、任意の設計空間が使用されてもよい。設計空間が、少なくとも車両が横切る可能性のある任意の交差点と同じ大きさである可能性が高くなるように、設計空間は、交差点の寸法に対応する代表値、平均値、又は他の値を決定するための複数(たとえば、数百、数千など)の交差点の分析に基づいて選択され得る。図4の例示的視覚化において、示されている横方向(x軸)の範囲は-16メートルから+16メートルに及び、示されている縦方向(y軸)の範囲は0メートルから28メートルに及び、垂直方向の範囲(上から下への視覚化であるため、描写せず)は0から3メートルに及ぶ。そのようなものとして、DNN104の3D出力108は設計空間内で予測され得る。図4の実例において、視覚化400に示されるように、3D出力は、3D対2D変換器112を使用して2D画像空間に変換され得る。たとえば、視覚化400は、画像300A上にオーバーレイされたDNN104の2D変換された予測を含み得、画像300Aは、画像に対応する2Dグラウンド・トゥルース・データ116を含み得る。そのようなものとして、2Dグラウンド・トゥルース・データ116に対応する損失関数114を使用して、DNN104の変換された出力の距離及び/又は意味論的情報を2Dグラウンド・トゥルース・データ116と比較することができる。図4に示すように、2D変換された出力は、破線領域402内に不正確さが存在することを示している。たとえば、視覚化400の3Dから2Dに変換された出力内の線分404A~404Dは、画像300A内のそれぞれの線分404A~404Dと方向的に一致しない。同様に、線分404Bに関連付けられた意味論的情報は、2Dグラウンド・トゥルース・データ116からの線分404Bの意味論的情報と一致しない。そのようなものとして、損失関数114を使用して、位置、方向性、意味論的情報、並びに/又は3Dから2Dに変換された出力及び2Dグラウンド・トゥルース・データ116の他の情報間の距離及び/又は差を計算することができる。
いくつかの実施例において、2Dグラウンド・トゥルース・データ116の損失関数に加えて又は別法として、3D幾何学的整合性制約118の損失関数を使用することができる。たとえば、現実世界の交差点及び交差設計の経験的知識に基づいて、様々な3D幾何学的制約が決定され、DNN104の計算された3D出力108との比較のために使用され得る。たとえば、マクロ・スケールでは物理的3D現実世界に量子飛躍がないので、3D幾何学的整合性制約118は、平滑性の項を含み得る。そのようなものとして、非平滑予測-たとえば、完全に分離している線分、x、y、及び/若しくはz方向のいずれかで互いにオフセットされた線分、並びに/又はそれ以外の非平滑線分-を含む3D出力108は、3D幾何学的整合性に対応する損失関数114を使用してペナルティが課せられ得る。別の3D幾何学的整合性制約118は、現実世界の交差点が直線の進入/退出線を有するように設計されており、交差点の線分が一般に線形である、という知識に基づく直線制約を含み得る。そのようなものとして、非直線セグメントを含む3D出力108は(たとえば、キー点を使用して線分を生成した後)、3D幾何学的整合性に対応する損失関数114を使用してペナルティが課され得る。同様に、レーン幅の統計的変動性を3D幾何学的整合性制約118として使用することができ、その結果、実例において、レーン幅の統計的変動性に起因する閾値長さより長い線分にペナルティを課すことができ、レーン幅の統計的変動性に起因する閾値長さより短い線分にペナルティを課すことができ、差が大きいほど、より多くのペナルティを課すことができる。たとえば、米国では、平均レーン幅が3.5メートルである可能性があり、したがって、非限定的実例として、統計的変動性によって許容範囲は3.25メートルから3.75メートルとなり得る。そのようなものとして、3D出力108が2.5メートル又は5メートルのレーンを示す場合、これらの出力は、3D幾何学的整合性制約118の損失関数114を使用してペナルティが課され得る。本明細書に記載の3D幾何学的整合性制約118は、限定を意図しておらず、本開示の範囲を逸脱せずに追加又は代替の制約を使用することができる。
そのようなものとして、DNN104が許容可能な又は望ましい正確さに収束するまで、損失関数114からのフィードバックを使用して、2Dグラウンド・トゥルース・データ116及び/又は3D幾何学的整合性制約118を考慮してDNN104のパラメータ(たとえば、重み及びバイアス)を更新することができる。プロセス100を使用することによって、DNN104は、損失関数114、2Dグラウンド・トゥルース・データ116、及び3D幾何学的整合性制約を使用して、センサ・データ102から、出力106-たとえば、3D出力108及び/又は意味論的情報110-を正確に予測するようにトレーニングされ得る。本明細書に記載のように、いくつかの実例において、異なる損失関数114を使用して、異なる出力106を予測するようにDNN104をトレーニングすることができる。たとえば、第1の損失関数114は、3Dから2Dに変換された出力106を2Dグラウンド・トゥルース・データと比較するために使用され得、第2の損失関数114は、3D出力を3D幾何学的整合性制約118と比較するために使用され得る。そのような実例では、DNN104のパラメータを更新するために使用され得る最終的な損失値を生成するために、2つ以上の損失関数114が(たとえば、同様に、異なる方法で、などで)重み付けされ得る。
ここで図5を参照すると、本明細書に記載の方法500の各ブロックは、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組合せを使用して実行され得る計算プロセスを含む。たとえば、様々な機能が、メモリに記憶された命令を実行するプロセッサによって実施され得る。方法500はまた、コンピュータ記憶媒体に記憶されたコンピュータ使用可能命令として実施され得る。方法500は、いくつか例を挙げると、独立型アプリケーション、サービス又はホスト型サービス(独立型の又は別のホスト型サービスと組み合わせた)、或いは別の製品へのプラグインによって提供され得る。さらに、方法500は、例として、図1のプロセス100に関して説明される。しかしながら、これらの方法は、本明細書に記載のものを含むが、これらに限定されない、任意の1つのプロセス及び/若しくは任意の1つのシステム、又は任意の組合せのプロセス及び/若しくはシステムによって、追加で又は別法として実行され得る。
図5は、本開示のいくつかの実施例による、交差点を検出するようにニューラル・ネットワークをトレーニングするための例示的方法500を示す流れ図である。方法500は、ブロックB502において、2D空間内のセンサ・データ表現を表すセンサ・データをニューラル・ネットワークに適用することを含む。たとえば、画像(又は他のセンサ・データ表現)を表すセンサ・データ102が、DNN104に適用され得る。
方法500は、ブロックB504において、ニューラル・ネットワークを使用して、センサ・データに少なくとも部分的に基づいて、3D世界空間位置を表すデータを計算することを含む。たとえば、DNN104は、センサ・データ102を処理した後に、出力106-具体的には、実施例では3D出力108-を計算することができる。
方法500は、ブロックB506において、3D世界空間位置を2D空間に変換して、2D空間位置を生成することを含む。たとえば、3D対2D変換器112は、センサ・データ102を生成したセンサの固有の及び/又は付帯的パラメータを使用して、3D出力108を2D(画像)空間に変換することができる。
方法500は、ブロックB508において、第1の損失関数を使用して、2D空間位置を、センサ・データに関連する2D空間グラウンド・トゥルース位置と比較することを含む。たとえば、DNN104の3Dから2Dに変換された出力は、第1の損失関数114を使用して、2Dグラウンド・トゥルース・データ116と比較され得る。
方法500は、ブロックB510において、第2の損失関数を使用して、3D世界空間位置を、1つ又は複数の幾何学的整合性制約と比較することを含む。たとえば、DNN104の3D出力108は、第2の損失関数を使用して、3D幾何学的整合性制約118と比較され得る。
方法500は、ブロックB512において、2D空間位置と2D空間グラウンド・トゥルース位置との比較、及び3D世界空間位置と1つ又は複数の幾何学的整合性制約との比較に少なくとも部分的に基づいて、ニューラル・ネットワークの1つ又は複数のパラメータを更新することを含む。たとえば、DNN104は、トレーニング・エンジン又はオプティマイザを使用して、第1の損失関数及び第2の損失関数の出力に基づいて更新され得る。このプロセスは、DNNが許容可能なレベルの正確さに収束するまで、DNN104のトレーニングに使用されるセンサ・データ102のインスタンスごとに、繰り返され得る。
3D交差点構造を計算するためのDNNの展開
ここで図6Aを参照すると、図6は、本開示のいくつかの実施例による、ニューラル・ネットワークを使用して3D世界空間内の交差点構造を検出するための例示的プロセス600を示すデータ流れ図である。本明細書に記載されているこの及び他の配置は単に実例として説明されていることを理解されたい。他の配置及び要素(たとえば、マシン、インターフェース、機能、順番、機能のグループ分けなど)が、示されたものに加えて又はこれらに代わって使用されてもよく、いくつかの要素はともに除外されてもよい。さらに、本明細書に記載の要素の多くは、個別の又は分散された構成要素として又は他の構成要素と併せて、並びに任意の適切な組合せ及び場所において、実装され得る機能エンティティである。エンティティによって実行されるものとして本明細書に記載された様々な機能は、ハードウェア、ファームウェア、及び/又はソフトウェアによって実施され得る。たとえば、様々な機能が、メモリに記憶された命令を実行するプロセッサによって実施され得る。いくつかの実施例において、プロセスによるニューラル・ネットワーク100のトレーニングは、図9の例示的計算デバイス900及び/又は図10の例示的データ・センタ1000に関して本明細書に記載されるものと同様の構成要素、特徴、及び/又は機能を少なくとも部分的に使用して、実装され得る。
プロセス600は、センサ・データ102を受信すること及び/又は生成することを含み得る。たとえば、センサ・データ102は、図1に関して説明されたセンサ・データ102と同様であり得る。たとえば、センサ・データ102は、車両800の1つ又は複数のセンサ・タイプを使用して、車両800の動作中に生成され得る。センサ・データ102-たとえば、2Dセンサ・データ-は、DNN104に適用され得、DNN104は、出力106を計算し得る。出力106は、図1に関して本明細書で説明するように、3D出力108、3D出力に対応する意味論的情報、及び/又は3D出力に対応する方向情報(たとえば、各キー点及び/又は線分に関連する方向及び/又は進行方向)を含み得る。
DNN104は、センサ・データ102を使用して出力106を計算することができ、出力106は、最終的に、キー点、分類、レーンの数、レーンの進行方向、レーンの方向性及び/又は他の情報を生成するために、デコーダ又は1つ若しくは複数の他の後処理構成要素に適用され得る。本明細書において、実例は、深層ニューラル・ネットワーク(DNN)、具体的には畳み込みニューラル・ネットワーク(CNN)の使用に関して説明されているが、これは限定を意図していない。たとえば、限定されないが、DNN104は、線形回帰、ロジスティック回帰、決定木、サポート・ベクタ・マシン(SVM)、ナイーブ・ベイズ、k最近傍法(Knn)、K平均法クラスタリング、ランダム・フォレスト、次元削減アルゴリズム、勾配ブースティング・アルゴリズム、ニューラル・ネットワーク(たとえば、自動エンコーダ、畳み込み、再帰、パーセプトロン、長期/短期記憶/LSTM:long/short term memory、ホップフィールド、ボルツマン、深層信念、逆畳み込み、敵対的生成、液体状態マシンなど)、レーン検出アルゴリズム、コンピュータ・ビジョン・アルゴリズムを使用する機械学習モデル及び/又は他のタイプの機械学習モデルなど、任意のタイプの機械学習モデルを含み得る。
一実例として、たとえば、DNN104がCNNを含む場合、DNN104は、任意の数の層を含み得る。1つ又は複数の層は、入力層を含み得る。入力層は、(たとえば、後処理の前又は後に)センサ・データ102に関連する値を保持し得る。たとえば、センサ・データ102が画像である場合、入力層は、画像の未加工の画素値を表す値をボリューム(たとえば、32×32×3などの幅、高さ、及び色チャネル(たとえば、RGB))として保持し得る。
1つ又は複数の層は、畳み込み層を含み得る。畳み込み層は、入力層内の局所領域に接続されているニューロンの出力を計算することができ、各ニューロンは、それらの重みと入力ボリューム内のそれらが接続されている小さい領域との間の内積を計算する。畳み込み層の結果は、次元のうちの1つが、適用されたフィルタの数に基づいた、別のボリュームになり得る(たとえば、12がフィルタの数である場合、32×32×12などの幅、高さ、及びフィルタの数)。
1つ又は複数の層は、逆畳み込み層(又は転置畳み込み層)を含み得る。たとえば、逆畳み込み層の結果は、逆畳み込み層で受信されたデータの入力次元よりも高い次元を有する別のボリュームになり得る。
1つ又は複数の層は、正規化線形ユニット(ReLU:rectified linear unit)層を含み得る。ReLU層は、たとえば、最大(0,x)などの要素ごとの活性化関数を適用し、ゼロで閾値化し得る。結果として生じるReLU層のボリュームは、ReLU層の入力のボリュームと同じになり得る。
1つ又は複数の層は、プーリング層を含み得る。プーリング層は、空間次元(たとえば、高さ及び幅)に沿ってダウン・サンプリング動作を実行することができ、その結果、プーリング層の入力よりも小さいボリューム(たとえば、32×32×12から16×16×12の入力ボリューム)をもたらし得る。
1つ又は複数の層は、1つ又は複数の全結合層を含み得る。全結合層内の各ニューロンは、前のボリューム内の各ニューロンに結合され得る。全結合層は、クラス・スコアを計算することができ、結果として生じるボリュームは、1×1×クラス数になり得る。いくつかの実例において、CNNは、CNNの1つ又は複数の層の出力がCNNの全結合層への入力として提供され得るような全結合層を含み得る。いくつかの実例において、DNN104によって1つ又は複数の畳み込みストリームが実装され得、畳み込みストリームのいくつか又はすべてが、それぞれの全結合層を含み得る。
いくつかの非限定的実施例において、DNN104は、画像特徴抽出を容易にするための一連の畳み込み層及び最大プーリング層、それに続いて、グローバル・コンテキスト特徴抽出を容易にするためのマルチスケール拡張畳み込み層及びアップサンプリング層を含み得る。
本明細書ではDNN104に関して、入力層、畳み込み層、プーリング層、ReLU層、及び全結合層が説明されているが、これは限定を意図していない。たとえば、DNN104において、正規化層、ソフトマックス層、及び/又は他の層タイプなどの追加の又は代替の層が使用されてもよい。
DNN104がCNNを含む実施例では、実施例に応じて、CNNの異なる順序及び数の層が使用されてもよい。言い換えれば、DNN104の層の順序及び数は、任意の1つのアーキテクチャに限定されない。
加えて、畳み込み層及び全結合層などの一部の層は、パラメータ(たとえば、重み及び/又はバイアス)を含む場合があり、ReLU層及びプーリング層など他の層はパラメータを含まない場合がある。いくつかの実例において、パラメータは、トレーニング中にDNN104によって学習され得る。さらに、畳み込み層、全結合層、及びプーリング層などの一部の層は、追加のハイパ・パラメータ(たとえば、学習率、ストライド、エポックなど)を含む場合があり、ReLU層などの他の層は、追加のハイパ・パラメータを含まない場合がある。パラメータ及びハイパ・パラメータは限定されるものではなく、実施例に応じて異なる可能性がある。
DNNの一実例として、図6Bは、本開示のいくつかの実施例による、交差点構造を計算する際に使用するための例示的DNN104Aを示す。たとえば、DNN104Aは、エンコーダ-デコーダ・タイプのDNN104-たとえば、第1の2Dエンコーダ・ネットワーク608及び第2の3Dデコーダ・ネットワーク612-を含み得る。たとえば、トレーニング中、センサ・データ102-たとえば、入力画像602-は、潜在空間表現610(たとえば、潜在空間内のベクトル)において表される潜在変数(たとえば、画像全体又は他のセンサ・データ表現の記述子)を学習する2Dエンコーダ・ネットワーク608の1組の畳み込み層を通過し得る。実施例において、潜在空間表現610は、いくつかの数のメンバ(たとえば、512、1024など)を有する高次元空間ベクトルに対応し得る。画像再構成タスクと同様に、潜在空間表現610は、センサ・データ102の全体的なインスタンスを表し得る(たとえば、画素から識別された特徴だけではない)。そのようなものとして、エンコーダ・ネットワーク608の畳み込み層は、潜在変数を抽出し得る。次いで、この中間結果-たとえば、潜在空間表現610-は、3Dデコーダ・ネットワーク612を使用して、3D出力108の対象空間又は設計空間に逆畳み込みされ得る。結果として、3D出力は、3D世界空間内で1:1のマッピングを有する可能性があり、したがって、対象空間又は設計空間内の交差点構造を直接表すことができる。したがって、2D出力が3D空間に変換される従来のシステム-平地想定に依存する、困難で不正確なプロセス-とは対照的に、DNN104Aは、3D出力108を直接計算することができる。たとえば、図4の3D出力108Aと同様に、3D交差点構造614は、2D画像空間入力画像102Aを処理した後のDNN104Aの出力106の正確な表現に対応し得る。本明細書に記載のように、3D交差点構造614の視覚化における異なるライン・ラベルは、計算された3D出力108を使用して(たとえば、キー点位置を使用して)生成される線分のそれぞれに関連する異なる意味論的情報110に対応し得る。
センサ・データ102Aの単一のインスタンスを処理する単一の2Dエンコーダ・ネットワーク608のみが示されているが、これは限定を意図していない。たとえば、任意の数の2Dエンコーダ・ネットワーク608が、任意の数のセンサからの任意の数のセンサ・データ102のインスタンスを処理してもよい。たとえば、任意の時間インスタンス又はフレームにおいて、第1のセンサ(たとえば、第1のカメラ、LIDARセンサなど)が、第1の潜在空間表現610を計算するために(たとえば、特定のタイプのセンサ・データ入力用にトレーニングされた)2Dエンコーダ・ネットワーク608の第1のインスタンスによって処理される、第1のセンサ・データ102を生成することができ、第2のセンサ(たとえば、第2のカメラ、LIDARセンサ、RADARセンサなど)が、第2の潜在空間表現610を計算するために(たとえば、特定のタイプのセンサ・データ入力用にトレーニングされた)2Dエンコーダ・ネットワーク608の第2のインスタンスによって処理される、第2のセンサ・データ102を生成することができ、以下同様である。次いで、所与の時間インスタンス又はフレームの複数の潜在空間表現610が組み合わされ(たとえば、連結され)得、単一の組み合わされた潜在空間表現610は、3D交差点構造614を計算するために3Dデコーダ・ネットワーク612によって処理され得る。いくつかの実施例において、2Dエンコーダ・ネットワーク608のうちの2つ以上は、車両800の並行処理ユニットを使用して並行して処理され得る。結果として、任意の数の2Dエンコーダ・ネットワーク608の処理時間は、2Dエンコーダ・ネットワーク608の単一のインスタンスのみの処理と同様又は同じであり得、それにより、3D交差点構造614を生成する際に追加情報(たとえば、複数からのセンサ・データ102)を処理することが可能になる。
再び図6Aを参照すると、出力106は、ポストプロセッサ602を使用して処理され得る。たとえば、時間的な後処理を使用して、予測のロバスト性及び正確性をさらに高めることができる。そのような実例では、更新された時間的に平滑化された結果を生成するために、DNN104の1つ又は複数の以前のインスタンスからの出力106が、DNN104の現在のインスタンスからの現在の出力106と比較され得る(たとえば、重み付けされ得る)。
出力106は-後処理の前又は後-、交差点をナビゲートするために車両800が辿る進路及び/又は軌道を生成する進路生成器604に適用され得る。たとえば、3D交差点構造からの線分に関連する意味論的情報及び/又は方向情報(たとえば、方向ベクトル、進行方向など)を使用して、交差点を通る潜在的進路を決定することができる。実施例において、進路生成器604は、線分に対応する(中心)キー点を、それらの3D世界空間座標に従って接続して、車両800による交差点の横断のための潜在的進路を表すポリラインをリアルタイム又はほぼリアルタイムで生成することができる。最終進路には、車両の位置、キー点の位置、及び/又はレーンの進行方向(たとえば、角度)に関連して決定された進路タイプが割り当てられ得る。潜在的進路タイプは、左折、右折、レーンの切り替え、及び/又はレーンの継続が含まれ得るが、これらに限定されない。
いくつかの実例において、進路生成器604は、潜在的進路の自然な曲線を最も正確に反映する最終的な形状を決定するために、曲線フィッティングを実装し得る。ポリライン・フィッティング、多項式フィッティング、及び/又はクロソイド・フィッティングなど、これらに限定されない任意の既知の曲線フィッティング・アルゴリズムが使用され得る。潜在的進路の形状は、キー点の位置、及び接続されるキー点に関連付けられた対応するレーン進行方向に基づいて決定され得る。いくつかの実例において、潜在的進路の形状は、接続されるキー点の位置で進行方向ベクトルの接線と整列され得る。曲線フィッティング・プロセスは、車両800が交差点をナビゲートするために辿ることができるすべての可能な進路を生成するために、潜在的に互いに接続され得るすべてのキー点に対して繰り返され得る。いくつかの実例において、実行不可能な進路は、そのような進路に関連する交通規則及び物理的制限に基づいて検討から除外され得る。残りの潜在的進路は、車両800が交差点を横断するために辿ることができる実行可能な3D進路又は軌道であると決定され得る。
いくつかの実施例において、進路生成器604は、マッチング・アルゴリズムを使用してキー点を接続し、車両800が交差点をナビゲートするための潜在的進路を生成し得る。そのような実例では、マッチング・スコアは、キー点の位置、キー点に対応するレーン進行方向(たとえば、異なる走行方向に対応する2つのキー点は接続されない)、キー点のペア間の近似曲線の形状に基づいて、キー点のペアごとに決定され得る。交差点進入に対応する各キー点は、交差点退出に対応する複数のキー点に接続され得、それにより、車両800のための複数の潜在的進路を生成する。いくつかの実例において、ハンガリ・マッチング・アルゴリズムなどの線形マッチング・アルゴリズムが使用され得る。他の実例において、キー点のペアを接続するために、スペクトル・マッチング・アルゴリズムなどの非線形マッチング・アルゴリズムが使用され得る。
交差点を通る進路は、車両800の自律運転ソフトウェア・スタック606(或いは、本明細書では「運転スタック606」と呼ばれる)によって1つ又は複数の動作を実行するために使用され得る。いくつかの実例において、進路に関連する情報によって、レーン・グラフが拡張され得る。レーン・グラフは、様々な計画タスク及び制御タスクを実行するために、車両800の1つ又は複数の制御構成要素に入力され得る。たとえば、世界モデル・マネージャは、交差点のナビゲートを支援するために世界モデルを更新することができ、運転スタック606の進路計画層は、交差点情報を使用して、(たとえば、決定された潜在的進路のうちの1つに沿って)交差点を通る進路を決定することができ、及び/又は制御構成要素は、決定された進路に従って交差点をナビゲートするための車両の制御を決定することができる。
ここで図7を参照すると、本明細書に記載の方法700の各ブロックは、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組合せを使用して実行され得る計算プロセスを含む。たとえば、様々な機能が、メモリに記憶された命令を実行するプロセッサによって実施され得る。方法700はまた、コンピュータ記憶媒体に記憶されたコンピュータ使用可能命令として実施され得る。方法700は、いくつか例を挙げると、独立型アプリケーション、サービス又はホスト型サービス(独立型の又は別のホスト型サービスと組み合わせた)、或いは別の製品へのプラグインによって提供され得る。さらに、方法700は、例として、図6のプロセス600に関して説明される。しかしながら、これらの方法は、本明細書に記載のものを含むが、これらに限定されない、任意の1つのプロセス及び/若しくは任意の1つのシステム、又はプロセス及び/若しくはシステムの任意の組合せによって、追加で又は別法として実行され得る。
図7は、本開示のいくつかの実施例による、ニューラル・ネットワークを使用して3D世界空間内の交差点構造を検出するための例示的方法700を示す流れ図である。方法700は、ブロックB702において、自律マシンの少なくとも1つのセンサの視野内の交差点の2Dセンサ・データ表現を表すセンサ・データをニューラル・ネットワークに適用することを含む。たとえば、センサ・データ102(たとえば、交差点を描写する画像)は、DNN104に適用され得る。
方法700は、ブロックB704において、ニューラル・ネットワークを使用して、センサ・データに少なくとも部分的に基づいて、交差点に対応する3D世界空間位置と意味論的情報に対応する信頼性値とを表すデータを計算することを含む。たとえば、DNN104は、センサ・データ102を使用して、出力106-たとえば、3D出力108及び意味論的情報110-を計算し得る。
方法700は、ブロックB706において、3D世界空間位置を表すデータを復号して、交差点に関連する線分の線分位置を決定することを含む。たとえば、3D出力108は、キー点の位置に対応し得、キー点は、交差点の線分の3D位置を示し得る。
方法700は、ブロックB708において、信頼性値を表すデータを復号して、各線分の関連する意味論的情報を決定することを含む。たとえば、意味論的情報110は、複数の異なるクラス・タイプ(本明細書に記載のものなどであるがこれに限定されない)に対応する信頼性(又は確率)として計算され得、信頼性値は、意味論的情報110を決定するために使用され得る-たとえば、最も高い信頼性値(又は、閾値を超える信頼性値)を有するクラスは、特定のキー点及び/又は線分に帰属し得る。
方法700は、ブロックB710において、線分位置及び関連する意味論的情報に少なくとも部分的に基づいて、自律マシンによって1つ又は複数の動作を実行することを含む。たとえば、出力106は、交差点を通る車両800の進路を生成するために進路生成器604によって使用され得、並びに/又は、出力106若しくは進路は、世界モデル管理、進路計画、制御、及び/若しくは他の動作を実行するために運転スタック606によって使用され得る。
例示的自律型車両
図8Aは、本開示のいくつかの実施例による、例示的自律型車両800のイラストレーションである。自律型車両800(或いは本明細書で「車両800」と称される)は、旅客車両、たとえば、乗用車、トラック、バス、ファースト・レスポンダ車両、シャトル、電気又は原動機付自転車、オートバイ、消防車、警察車両、救急車、ボート、建設車両、潜水艦、ドローン、及び/又は別のタイプの車両(たとえば、無人の及び/又は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、及びこの規格の前の及び未来のバージョン)によって定義される、自動化レベルに関して記述される。車両800は、自律運転レベルのレベル3~レベル5のうちの1つ又は複数による機能の能力を有し得る。たとえば、車両800は、実施例に応じて、条件付き自動化(レベル3)、高度自動化(レベル4)、及び/又は完全自動化(レベル5)の能力を有し得る。
車両800は、車両のシャシ、車体、車輪(たとえば、2、4、6、8、18など)、タイヤ、車軸、及び他の構成要素などの構成要素を含み得る。車両800は、内部燃焼エンジン、ハイブリッド動力装置、完全な電気式エンジン、及び/又は別の推進システム・タイプなど、推進システム850を含み得る。推進システム850は、車両800の推進力を有効にするために、トランスミッションを含み得る、車両800のドライブ・トレインに接続され得る。推進システム850は、スロットル/加速装置852からの信号の受信に応答して制御され得る。
ハンドルを含み得る、ステアリング・システム854は、推進システム850が動作しているときに(たとえば、車両が移動中のときに)車両800のかじを取る(たとえば、所望の進路又はルートに沿って)ために使用され得る。ステアリング・システム854は、ステアリング・アクチュエータ856から信号を受信することができる。ハンドルは、完全自動化(レベル5)機能のオプションでもよい。
ブレーキ・センサ・システム846は、ブレーキ・アクチュエータ848及び/又はブレーキ・センサからの信号の受信に応答して車両ブレーキを動作させるために使用され得る。
1つ又は複数のシステム・オン・チップ(SoC:system on Chip)804(図8C)及び/又はGPUを含み得る、コントローラ836は、車両800の1つ若しくは複数の構成要素及び/又はシステムに信号(たとえば、コマンドの表現)を提供することができる。たとえば、コントローラは、1つ又は複数のブレーキ・アクチュエータ848を介して車両ブレーキを動作させて、1つ又は複数のステアリング・アクチュエータ856を介してステアリング・システム854を動作させて、1つ又は複数のスロットル/加速装置852を介して推進システム850を動作させるために、信号を送ることができる。コントローラ836は、センサ信号を処理する、並びに律的運転を可能にするために及び/又は運転者の車両800の運転を支援するために動作コマンド(たとえば、コマンドを表す信号)を出力する、1つ又は複数の搭載された(たとえば、統合された)計算デバイス(たとえば、スーパーコンピュータ)を含み得る。コントローラ836は、自律運転機能のための第1のコントローラ836、機能的安全性機能のための第2のコントローラ836、人工知能機能(たとえば、コンピュータ・ビジョン)のための第3のコントローラ836、インフォテインメント機能のための第4のコントローラ836、緊急状態における冗長性のための第5のコントローラ836、及び/又は他のコントローラを含み得る。いくつかの実例では、単一のコントローラ836が、前述の機能のうちの2個以上を処理することができ、2個以上のコントローラ836が、単一の機能、及び/又はその任意の組合せを処理することができる。
コントローラ836は、1つ又は複数のセンサから受信したセンサ・データ(たとえば、センサ入力)に応答して車両800の1つ若しくは複数の構成要素及び/又はシステムを制御するための信号を提供することができる。センサ・データは、たとえば、そして制限なしに、全地球的航法衛星システム・センサ858(たとえば、グローバル・ポジショニング・システム・センサ)、RADARセンサ860、超音波センサ862、LIDARセンサ864、慣性計測装置(IMU:inertial measurement unit)センサ866(たとえば、加速度計、ジャイロスコープ、磁気コンパス、磁力計など)、マイクロフォン896、ステレオ・カメラ868、ワイドビュー・カメラ870(たとえば、魚眼カメラ)、赤外線カメラ872、サラウンド・カメラ874(たとえば、360度カメラ)、長距離及び/又は中距離カメラ898、スピード・センサ844(たとえば、車両800のスピードを測定するための)、振動センサ842、ステアリング・センサ840、ブレーキ・センサ(たとえば、ブレーキ・センサ・システム846の一部としての)、及び/又は他のセンサ・タイプから受信され得る。
コントローラ836のうちの1つ又は複数のコントローラは、車両800の計器群832から入力(たとえば、入力データによって表される)を受信し、出力(たとえば、出力データ、表示データなどによって表される)をヒューマン・マシン・インターフェース(HMI:human-machine interface)ディスプレイ834、可聴式アナンシエータ、ラウドスピーカ、及び/又は車両800の他の構成要素を介して提供することができる。出力は、車両ベロシティ、スピード、時間、マップ・データ(たとえば、図8CのHDマップ822)、位置データ(たとえば、マップ上などの、車両800の位置)、方向、他の車両の位置(たとえば、占有グリッド)、コントローラ836によって把握されるものとしての物体及び物体の状況に関する情報などの、情報を含み得る。たとえば、HMIディスプレイ834は、1つ又は複数の物体(たとえば、道路標識、警告標識、交通信号の変化など)の存在、及び/又は車両が行った、行っている、又は行うであろう運転操作(たとえば、今、車線変更をしていること、3.22km(2マイル)内の出口34Bを出ることなど)に関する情報を表示することができる。
車両800はさらに、1つ若しくは複数のワイヤレス・アンテナ826及び/又はモデムを使用して1つ若しくは複数のネットワークを介して通信することができるネットワーク・インターフェース824を含む。たとえば、ネットワーク・インターフェース824は、LTE、WCDMA、UMTS、GSM、CDMA2000などを介する通信の能力を有し得る。ワイヤレス・アンテナ826はまた、ブルートゥース、ブルートゥースLE、Z-Wave、ZigBeeなどのローカル・エリア・ネットワーク、及び/又はLoRaWAN、SigFoxなどのロー・パワー・ワイドエリア・ネットワーク(LPWAN:low power wide-area network)を使用し、環境内の物体(たとえば、車両、モバイル・デバイスなど)の間の通信を可能にすることができる。
図8Bは、本開示のいくつかの実施例による、図8Aの例示的自律型車両800のカメラ位置及び視野の実例である。カメラ及びそれぞれの視野は、1つの例示的実施例であり、制限することは意図されていない。たとえば、追加の及び/又は代替カメラが含まれ得る、及び/又はカメラは車両800の異なる位置に置かれ得る。
カメラのカメラ・タイプは、車両800の構成要素及び/又はシステムと使用するようになされ得るデジタル・カメラを含み得るが、これに限定されない。カメラは、自動車安全整合性レベル(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カラー・フィルタ・アレイを有するカメラなどのクリア画素カメラは、光感度を上げるための取り組みにおいて使用され得る。
いくつかの実例では、カメラのうちの1つ又は複数が、高度運転者支援システム(ADAS:advanced driver assistance system)機能(たとえば、冗長又はフェイルセーフ設計の一部として)を実行するために使用され得る。たとえば、多機能モノ・カメラは、車線逸脱警報、交通標識アシスト及びインテリジェント・ヘッドランプ制御を含む機能を提供するために設置され得る。カメラのうちの1つ又は複数(たとえば、すべてのカメラ)が、画像データ(たとえば、ビデオ)を同時に記録及び提供することができる。
カメラのうちの1つ又は複数は、カメラの画像データ・キャプチャ能力を妨げることがある自動車内からの迷光及び反射(たとえば、フロントガラスのミラーにおいて反射されたダッシュボードからの反射)を取り除くために、カスタム設計された(3D印刷された)部品などの取付部品において取り付けられ得る。サイドミラー取付部品を参照すると、サイドミラー部品は、カメラ取付板がサイドミラーの形状に合うように、カスタム3D印刷され得る。いくつかの実例では、カメラは、サイドミラー内に統合され得る。サイドビュー・カメラについては、カメラはまた、キャビンの各角にある4個の支柱内に統合され得る。
車両800の前の環境の部分を含む視野を有するカメラ(たとえば、前向きのカメラ)は、前向きの進路及び障害物の識別を助け、1つ若しくは複数のコントローラ836及び/又は制御SoCの助けにより、占有グリッドの生成及び/又は好ましい車両進路の決定に不可欠な情報の提供の提供を助けるための、サラウンド・ビューのために使用され得る。前向きのカメラは、緊急ブレーキ、歩行者検出、及び衝突回避を含む、LIDARと同じADAS機能の多くを実行するために使用され得る。前向きのカメラはまた、車線逸脱警報(「LDW(Lane Departure Warning)」)、自律的クルーズ制御(「ACC(Autonomous Cruise Control)」)、及び/又は交通標識認識などの他の機能を含むADAS機能及びシステムのために使用され得る。
様々なカメラが、たとえば、CMOS(complementary metal oxide semiconductor)カラー画像化装置を含む単眼カメラ・プラットフォームを含む、前向きの構成において使用され得る。別の実例は、周辺(たとえば、歩行者、交差する交通又は自転車)からのビューに入る物体を把握するために使用され得るワイドビュー・カメラ870でもよい。図8Bにはワイドビュー・カメラは1つだけ示されているが、車両800には任意の数のワイドビュー・カメラ870が存在し得る。加えて、長距離カメラ898(たとえば、ロングビュー・ステレオ・カメラ・ペア)が、特に、ニューラル・ネットワークがまだトレーニングされていない物体について、深度ベースの物体検出のために使用され得る。長距離カメラ898はまた、物体検出及び分類、並びに基本物体追跡のために使用され得る。
1つ又は複数のステレオ・カメラ868もまた、前向きの構成に含まれ得る。ステレオ・カメラ868は、単一のチップ上に統合されたCAN又はイーサネット(登録商標)・インターフェースを有するプログラマブル論理(FPGA)及びマルチコア・マイクロプロセッサを提供し得る、拡張可能な処理ユニットを備えた統合された制御ユニットを含み得る。そのようなユニットは、画像内のすべてのポイントの距離推定値を含む、車両の環境の3Dマップを生成するために使用され得る。代替ステレオ・カメラ868は、2個のカメラ・レンズ(左と右に1つずつ)と、車両から対象物体までの距離を測定する及び生成された情報(たとえば、メタデータ)を使用して自律的緊急ブレーキ及び車線逸脱警報機能をアクティブにすることができる画像処理チップとを含み得る、コンパクト・ステレオ・ビジョン・センサを含み得る。他のタイプのステレオ・カメラ868が、本明細書に記載のものに加えて、又はそれらの代わりに、使用されてもよい。
車両800の側面に対する環境の部分を含む視野を有するカメラ(たとえば、サイドビュー・カメラ)が、占有グリッドを作成及び更新するために並びに側面衝撃衝突警報を生成するために使用される情報を提供する、サラウンド・ビューのために使用され得る。たとえば、サラウンド・カメラ874(たとえば、図8Bに示されるような4個のサラウンド・カメラ874)は、車両800上に位置付けられ得る。サラウンド・カメラ874は、ワイドビュー・カメラ870、魚眼カメラ、360度カメラ、及び/又は同類のものを含み得る。たとえば、4個の魚眼カメラが、車両の前、後ろ、及び側面に配置され得る。代替配置において、車両は、3個のサラウンド・カメラ874(たとえば、左、右、及び後部)を使用してもよく、第4のサラウンド・ビュー・カメラとして1つ又は複数の他のカメラ(たとえば、前向きのカメラ)を活用してもよい。
車両800の後ろに対する環境の部分を含む視野を有するカメラ(たとえば、後方確認カメラ)が、駐車支援、サラウンド・ビュー、後部衝突警報、並びに占有グリッドの作成及び更新のために使用され得る。本明細書に記載のように、前向きのカメラ(たとえば、長距離及び/又は中距離カメラ898、ステレオ・カメラ868)、赤外線カメラ872など)としても適したカメラを含むがこれらに限定されない、多種多様なカメラが使用され得る。
図8Cは、本開示のいくつかの実施例による、図8Aの例示的自律型車両800の例示的システム・アーキテクチャのブロック図である。本明細書に記載されているこの及び他の配置は単に実例として説明されていることを理解されたい。他の配置及び要素(たとえば、マシン、インターフェース、機能、順番、機能のグループ分けなど)が、示されたものに加えて又はこれらに代わって使用されてもよく、いくつかの要素はともに除外されてもよい。さらに、本明細書に記載の要素の多くは、個別の又は分散された構成要素として又は他の構成要素と併せて、並びに任意の適切な組合せ及び場所において、実装され得る機能エンティティである。エンティティによって実行されるものとして本明細書に記載された様々な機能は、ハードウェア、ファームウェア、及び/又はソフトウェアによって実施され得る。たとえば、様々な機能が、メモリに記憶された命令を実行するプロセッサによって実施され得る。
図8Cの車両800の構成要素、特徴、及びシステムのそれぞれは、バス802を介して接続されるものとして図示されている。バス802は、コントローラ・エリア・ネットワーク(CAN)データ・インターフェース(或いは、「CANバス」と称される)を含み得る。CANは、ブレーキ、加速度、ブレーキ、ステアリング、フロントガラス・ワイパなどの作動など、車両800の様々な特徴及び機能の制御を助けるために使用される車両800内のネットワークでもよい。CANバスは、それぞれが独自の一意の識別子(たとえば、CAN ID)を有する、数ダース又は数百ものノードを有するように構成され得る。CANバスは、ハンドル角度、対地速度、1分間のエンジン回転(RPM:revolutions per minute)、ボタン位置、及び/又は他の車両状況指標を見つけるために読み取られ得る。CANバスは、ASIL B準拠でもよい。
バス802は、CANバスであるものとして本明細書に記載されているが、これは制限することを意図されていない。たとえば、CANバスに加えて、又はこのその代替として、FlexRay及び/又はイーサネット(登録商標)が使用されてもよい。加えて、単一の線が、バス802を表すために使用されているが、これは制限することを意図されていない。たとえば、1つ若しくは複数のCANバス、1つ若しくは複数のFlexRayバス、1つ若しくは複数のイーサネット(登録商標)・バス、及び/又は異なるプロトコルを使用する1つ若しくは複数の他のタイプのバスを含み得る、任意の数のバス802が存在し得る。いくつかの実例では、2個以上のバス802が、異なる機能を実行するために使用され得る、及び/又は冗長性のために使用され得る。たとえば、第1のバス802は衝突回避機能のために使用されてもよく、第2のバス802は作動制御のために使用されてもよい。任意の実例において、各バス802は、車両800の構成要素のいずれかと通信し得、2個以上のバス802が同じ構成要素と通信し得る。いくつかの実例では、車両内の各SoC804、各コントローラ836、及び/又は各コンピュータは、同じ入力データ(たとえば、車両800のセンサからの入力)へのアクセスを有し得、CANバスなどの共通バスに接続され得る。
車両800は、図8Aに関して本明細書で説明されるものなど、1つ又は複数のコントローラ836を含み得る。コントローラ836は、様々な機能のために使用され得る。コントローラ836は、車両800の様々な他の構成要素及びシステムのいずれかに連結されてもよく、車両800、車両800の人工知能、車両800のためのインフォテインメント、及び/又は同類のものの制御のために使用され得る。
車両800は、システム・オン・チップ(SoC)804を含み得る。SoC804は、CPU806、GPU808、プロセッサ810、キャッシュ812、加速装置814、データ・ストア816、及び/又は図示されていない他の構成要素及び特徴を含み得る。SoC804は、様々なプラットフォーム及びシステム内の車両800を制御するために使用され得る。たとえば、SoC804は、1つ又は複数のサーバ(たとえば、図8Dのサーバ878)からネットワーク・インターフェース824を介してマップのリフレッシュ及び/又は更新を取得することができるHDマップ822を有するシステム(たとえば、車両800のシステム)において結合され得る。
CPU806は、CPUクラスタ又はCPU複合体(或いは、「CCPLEX」とも称される)を含み得る。CPU806は、複数のコア及び/又はL2キャッシュを含み得る。たとえば、一部の実施例では、CPU806は、コヒーレント・マルチプロセッサ構成内の8個のコアを含み得る。一部の実施例では、CPU806は、4個のデュアルコア・クラスタを含むことができ、各クラスタが専用のL2キャッシュ(たとえば、2MBL2キャッシュ)を有する。CPU806(たとえば、CCPLEX)は、CPU806のクラスタの任意の組合せが任意の所与の時間にアクティブになることを可能にする同時クラスタ動作をサポートするように構成され得る。
CPU806は、以下の特徴のうちの1つ又は複数を含む電力管理能力を実装することができる:個別ハードウェア・ブロックが、動的電力を節約するためにアイドル状態のときに自動的にクロック・ゲーティングされ得る、各コア・クロックは、WFI/WFE命令の実行により命令をコアがアクティブに実行していないときにゲーティングされ得る、各コアは、独立してパワー・ゲーティングされ得る、各コア・クラスタは、すべてのコアがクロック・ゲーティングされる若しくはパワー・ゲーティングされるときに、独立してクロック・ゲーティングされ得る、及び/又は、各コア・クラスタは、すべてのコアがパワー・ゲーティングされるときに、独立してパワー・ゲーティングされ得る。CPU806は、電力状態を管理するための強化されたアルゴリズムをさらに実装することができ、そこでは、許容される電力状態及び予想されるウェイクアップ時間が指定され、ハードウェア/マイクロ・コードが、コア、クラスタ、及びCCPLEXに入力するための最良の電力状態を決定する。処理コアは、作業がマイクロ・コードにオフロードされたソフトウェアにおける簡略化された電力状態入力シーケンスをサポートすることができる。
GPU808は、統合されたGPU(或いは本明細書において「iGPU」と称される)を含み得る。GPU808は、プログラマブルになり得、並行のワークロードに効率的になり得る。一部の実例では、GPU808は、強化されたテンソル命令セットを使用することができる。GPU808は、1つ又は複数のストリーミング・マイクロプロセッサを含み得、そこで、各ストリーミング・マイクロプロセッサは、L1キャッシュ(たとえば、少なくとも96KB記憶容量を有するL1キャッシュ)を含み得、ストリーミング・マイクロプロセッサのうちの2個以上が、キャッシュ(たとえば、512KB記憶容量を有するL2キャッシュ)を共用し得る。一部の実施例では、GPU808は、少なくとも8個のストリーミング・マイクロプロセッサを含み得る。GPU808は、計算アプリケーション・プログラミング・インターフェース(API)を使用することができる。加えて、GPU808は、1つ若しくは複数の並行のコンピューティング・プラットフォーム及び/又はプログラミング・モデル(たとえば、NVIDIAのCUDA)を使用することができる。
GPU808は、自動車の及び組み込まれた使用事例における最高のパフォーマンスのために電力最適化され得る。たとえば、GPU808は、FinFET(Fin field-effect transistor)上に製造され得る。しかしながら、これは制限することを意図されておらず、GPU808は、他の半導体製造プロセスを使用し、製造され得る。各ストリーミング・マイクロプロセッサは、複数のブロックに区切られたいくつかの混合精度処理コアを組み込むことができる。限定ではなく、たとえば、64 PF32コア及び32 PF64コアは、4個の処理ブロックに区切られてもよい。そのような実例では、各処理ブロックは、16 FP32コア、8 FP64コア、16 INT32コア、深層学習行列演算のための2個の混合精度NVIDIAテンソル・コア、L0命令キャッシュ、ワープ・スケジューラ、発送ユニット、及び/又は64KBレジスタ・ファイルを割り当てられ得る。加えて、ストリーミング・マイクロプロセッサは、計算及びアドレス指定演算の混合を有するワークロードの効率的な実行を提供するための独立した並行の整数及び浮動小数点データ進路を含み得る。ストリーミング・マイクロプロセッサは、並行スレッドの間のより高い細粒度の同期及び連携を可能にするために、独立したスレッド・スケジューリング能力を含み得る。ストリーミング・マイクロプロセッサは、プログラミングを単純化しつつ性能を向上させるために、結合されたL1データ・キャッシュ及び共用メモリ・ユニットを含み得る。
GPU808は、一部の実例では、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)が使用され得る。
GPU808は、メモリ・ページに最も頻繁にアクセスするプロセッサへのそれらのメモリ・ページのより正確な移動を可能にするためにアクセス・カウンタを含む統一されたメモリ技術を含むことができ、それにより、プロセッサ間で共用される記憶範囲の効率を向上させる。いくつかの実例では、アドレス変換サービス(ATS:address translation service)サポートが、GPU808がCPU806ページ・テーブルに直接アクセスすることを可能にするために使用され得る。そのような実例では、GPU808メモリ管理ユニット(MMU:memory management unit)がミスを経験するとき、アドレス変換要求が、CPU806に送信され得る。応答して、CPU806は、アドレスの仮想対現実マッピングのためのそのページ・テーブルを調べることができ、GPU808に変換を送り返す。そのようなものとして、統一されたメモリ技術は、CPU806とGPU808との両方のメモリの単一統一仮想アドレス空間を可能にすることができ、それによりGPU808へのアプリケーションのGPU808プログラミング及び移植を単純化する。
加えて、GPU808は、他のプロセッサのメモリへのGPU808のアクセスの頻度を記録することができるアクセス・カウンタを含み得る。アクセス・カウンタは、メモリ・ページが最も頻繁にそのページにアクセスしているプロセッサの物理メモリに移動されることを確実にするのを助けることができる。
SoC804は、本明細書に記載のものを含む任意の数のキャッシュ812を含み得る。たとえば、キャッシュ812は、CPU806とGPU808との両方に利用可能な(たとえば、CPU806とGPU808との両方に接続された)L3キャッシュを含み得る。キャッシュ812は、キャッシュ・コヒーレンス・プロトコル(たとえば、MEI、MESI、MSIなど)を使用することなどによって、線の状態を記録することができるライトバック・キャッシュを含み得る。L3キャッシュは、より小さいキャッシュ・サイズが使用されてもよいが、実施例に応じて、4MB以上を含み得る。
SoC804は、車両800の様々なタスク又は動作のいずれか(たとえば、処理DNN)に関して処理を実行する際に活用され得る論理演算ユニット(ALU:arithmetic logic unit)を含み得る。加えて、SoC804は、システム内で数学演算を実行するための浮動小数点演算ユニット(FPU:floating point unit)(又は他のマス・コプロセッサ又は数値演算コプロセッサ・タイプ)を含み得る。たとえば、SoC104は、CPU806及び/又はGPU808内の実行ユニットとして統合された1つ又は複数のFPUを含み得る。
SoC804は、1つ又は複数の加速装置814(たとえば、ハードウェア・加速装置、ソフトウェア・加速装置、又はその組合せ)を含み得る。たとえば、SoC804は、最適化されたハードウェア加速装置及び/又は大きなオンチップ・メモリを含み得る、ハードウェア加速クラスタを含み得る。大きなオンチップメモリ(たとえば、4MBのSRAM)は、ハードウェア加速クラスタがニューラル・ネットワーク及び他の演算を加速することを可能にし得る。ハードウェア加速クラスタは、GPU808を補完するために及びGPU808のタスクの一部をオフロードするために(たとえば、他のタスクを実行するためのGPU808のより多くのサイクルを解放するために)使用され得る。一実例として、加速装置814は、加速に適するように十分に安定している対象ワークロード(たとえば、知覚、畳み込みニューラル・ネットワーク(CNN:convolutional neural network)など)のために使用され得る。本明細書では、「CNN」という用語は、領域ベースの又は領域的畳み込みニューラル・ネットワーク(RCNN:regional convolutional neural network)及び高速RCNN(たとえば、物体検出のために使用されるものとしての)を含む、すべてのタイプのCNNを含み得る。
加速装置814(たとえば、ハードウェア加速クラスタ)は、深層学習加速装置(DLA:deep learning accelerator)を含み得る。DLAは、深層学習アプリケーション及び推論のために1秒あたり追加の10兆の動作を提供するように構成することができる1つ又は複数のテンソル処理ユニット(TPU:Tensor processing unit)を含み得る。TPUは、画像処理機能(たとえば、CNN、RCNNなどの)を実行するように構成及び最適化された加速装置でもよい。DLAはさらに、特定のセットのニューラル・ネットワーク・タイプ及び浮動小数点演算、並びに推論のために最適化され得る。DLAの設計は、汎用GPUよりも1ミリメートルあたりより多くのパフォーマンスを提供することができ、CPUのパフォーマンスを大きく超える。TPUは、たとえば、特徴と重みとの両方についてINT8、INT16、及びFP16データ・タイプをサポートする、単一インスタンス畳み込み機能、並びにポストプロセッサ機能を含む、いくつかの機能を実行することができる。
DLAは、以下を含むがこれらに限定されない、様々な機能のいずれかのために処理済み又は未処理のデータでニューラル・ネットワーク、特にCNN、を迅速に及び効率的に実行することができる:カメラ・センサからのデータを使用する物体識別及び検出のためのCNN、カメラ・センサからのデータを使用する距離推定のためのCNN、マイクロフォンからのデータを使用する緊急車両検出及び識別及び検出のためのCNN、カメラ・センサからのデータを使用する顔認識及び車両所有者識別のためのCNN、及び/又は、セキュリティ及び/又は安全性関連イベントのためのCNN。
DLAは、GPU808の任意の機能を実行することができ、そして、推論加速装置を使用することによって、たとえば、設計者は、任意の機能のためにDLA又はGPU808のいずれかを対象にすることができる。たとえば、設計者は、DLA上のCNN及び浮動小数点演算の処理に重点的に取り組み、他の機能をGPU808及び/又は他の加速装置814に任せることができる。
加速装置814(たとえば、ハードウェア加速クラスタ)は、或いはコンピュータ・ビジョン加速装置と本明細書で称され得るプログラマブル・ビジョン加速装置(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)、及び/又は任意の数のベクトル・プロセッサを含み得るが、これらに限定されない。
RISCコアは、画像センサ(たとえば、本明細書に記載のカメラのうちのいずれかのカメラの画像センサ)、画像信号プロセッサ、及び/又は同類のものと相互作用することができる。それぞれのRISCコアは、任意の量のメモリを含み得る。RISCコアは、実施例に応じて、いくつかのプロトコルのいずれかを使用することができる。いくつかの実例では、RISCコアは、リアルタイム・オペレーティング・システム(RTOS:real-time operating system)を実行することができる。RISCコアは、1つ若しくは複数の集積回路デバイス、特定用途向け集積回路(ASIC)、及び/又はメモリ・デバイスを使用して、実装され得る。たとえば、RISCコアは、命令キャッシュ及び/又はしっかりと結合されたRAMを含み得る。
DMAは、CPU806から独立したシステム・メモリにPVAの構成要素がアクセスすることを可能にし得る。DMAは、多次元アドレス指定及び/又は循環アドレス指定をサポートすることを含むがこれに限定されないPVAに最適化をもたらすために使用される任意の数の特徴をサポートすることができる。いくつかの実例では、DMAは、ブロック幅、ブロック高さ、ブロック深度、水平ブロック・ステッピング、垂直ブロック・ステッピング、及び/又は深度ステッピングを含み得る、6次元まで又はそれ以上のアドレス指定をサポートすることができる。
ベクトル・プロセッサは、コンピュータ・ビジョン・アルゴリズムのプログラミングを効率的に柔軟に実行する及び信号処理能力を提供するように設計され得るプログラマブル・プロセッサでもよい。いくつかの実例では、PVAは、PVAコア及び2個のベクトル処理サブシステム・パーティションを含み得る。PVAコアは、プロセッサ・サブシステム、DMAエンジン(たとえば、2個のDMAエンジン)、及び/又は他の周辺装置を含み得る。ベクトル処理サブシステムは、PVAの1次的処理エンジンとして動作することができ、ベクトル処理ユニット(VPU:vector processing unit)、命令キャッシュ、及び/又はベクトル・メモリ(たとえば、VMEM)を含み得る。VPUコアは、たとえば、単一の命令、複数のデータ(SIMD)、超長命令語(VLIW:very long instruction word)デジタル信号プロセッサなど、デジタル信号プロセッサを含み得る。SIMD及びVLIWの組合せは、スループット及びスピードを高めることができる。
それぞれのベクトル・プロセッサは、命令キャッシュを含み得、専用のメモリに連結され得る。結果として、一部の実例では、それぞれのベクトル・プロセッサは、他のベクトル・プロセッサから独立して実行するように構成され得る。他の実例において、特定のPVAに含まれるベクトル・プロセッサは、データ並列処理を用いるように構成され得る。たとえば、一部の実施例では、単一のPVAに含まれる複数のベクトル・プロセッサは、同じコンピュータ・ビジョン・アルゴリズムを、しかし画像の異なる領域上で、実行することができる。他の実例において、特定のPVAに含まれるベクトル・プロセッサは、異なるコンピュータ・ビジョン・アルゴリズムを、同じ画像上で、同時に実行することができ、或いは順次画像又は画像の部分で異なるアルゴリズムを実行することさえできる。特に、任意の数のPVAは、ハードウェア加速クラスタに含まれ得、任意の数のベクトル・プロセッサは、それぞれのPVAに含まれ得る。加えて、PVAは、全体的システム安全性を高めるために、追加のエラー訂正コード(ECC:error correcting code)メモリを含み得る。
加速装置814(たとえば、ハードウェア加速クラスタ)は、加速装置814のための高帯域幅、低レイテンシSRAMを提供するための、コンピュータ・ビジョン・ネットワーク・オンチップ及びSRAMを含み得る。いくつかの実例では、オンチップ・メモリは、たとえば、そして制限ではなく、PVAとDLAとの両方によってアクセス可能でもよい、8個のフィールド構成可能なメモリ・ブロックから成る、少なくとも4MBのSRAMを含み得る。各ペアのメモリ・ブロックは、高度周辺バス(APB:advanced peripheral bus)インターフェース、構成回路、コントローラ、及びマルチプレクサを含み得る。任意のタイプのメモリが、使用され得る。PVA及びDLAは、メモリへの高速アクセスを有するPVA及びDLAを提供するバックボーンを介してメモリにアクセスすることができる。バックボーンは、(たとえば、APBを使用して)PVA及びDLAをメモリに相互接続するコンピュータ・ビジョン・ネットワーク・オンチップを含み得る。
コンピュータ・ビジョン・ネットワーク・オンチップは、PVAとDLAとの両方が作動可能及び有効信号を提供することを、任意の制御信号/アドレス/データの送信の前に、決定するインターフェースを含み得る。そのようなインターフェースは、制御信号/アドレス/データを送信するための別個のフェーズ及び別個のチャネル、並びに連続的データ転送のためのバーストタイプの通信を提供することができる。このタイプのインターフェースは、ISO26262又はIEC61508規格に従うことができるが、他の規格及びプロトコルが使用されてもよい。
いくつかの実例では、SoC804は、2018年8月10日に出願された米国特許出願第16/101,232号に記載されるような、リアルタイム・レイトレーシング・ハードウェア加速装置を含み得る。リアルタイム・レイトレーシング・ハードウェア加速装置は、RADAR信号解釈のための、音響伝播合成及び/又は分析のための、SONARシステムのシミュレーションのための、一般波伝播シミュレーションのための、ローカリゼーション及び/又は他の機能を目的とするLIDARデータに対する比較のための、及び/又は他の使用のための、リアルタイム視覚化シミュレーションを生成するために、(たとえば、世界モデル内の)物体の位置及び規模を迅速に効率的に決定するために使用され得る。一部の実施例では、1つ又は複数の木の走査ユニット(TTU:tree traversal unit)が、1つ又は複数のレイトレーシング関連動作を実行するために使用され得る。
加速装置814(たとえば、ハードウェア加速装置クラスタ)は、自律運転のための多様な用途を有する。PVAは、ADAS及び自律型車両における極めて重要な処理段階に使用され得るプログラマブル・ビジョン加速装置でもよい。PVAの能力は、低電力及び低レイテンシにおいて、予測可能な処理を必要とするアルゴリズムの領域にふさわしい。言い換えれば、PVAは、低レイテンシ及び低電力とともに予測可能な実行時間を必要とする、小さなデータ集合上でも、半高密度の又は高密度の通常の計算で上手く機能する。それ故に、PVAは、物体検出及び整数計算での動作において効率的であるので、自律型車両のためのプラットフォームとの関連で、PVAは、クラシック・コンピュータ・ビジョン・アルゴリズムを実行するように設計される。
たとえば、本技術の1つの実施例によれば、PVAは、コンピュータ・ステレオ・ビジョンを実行するために使用される。半グローバルなマッチングベースのアルゴリズムが、一部の実例では使用され得るが、これは制限することを意図されていない。レベル3~5の自律運転のための多数のアプリケーションは、動き推定/ステレオ・マッチング・オンザフライ(たとえば、SFM(structure from motion)、歩行者認識、レーン検出など)を必要とする。PVAは、2個の単眼カメラからの入力でコンピュータ・ステレオ・ビジョン機能を実行することができる。
いくつかの実例では、PVAは、高密度のオプティカル・フローを実行するために使用され得る。処理されたRADARを提供するために未加工のRADARデータを処理する(たとえば、4D高速フーリエ変換を使用して)ことによる。他の実例において、PVAは、たとえば、飛行データの未加工の時間を処理して飛行データの処理済み時間を提供することにより、飛行深度処理の時間に使用される。
DLAは、たとえば、各物体検出の信頼性の測定値を出力するニューラル・ネットワークを含む、制御及び運転安全性を強化するために任意のタイプのネットワークを実行するために使用され得る。そのような信頼性値は、確率として、又は他の検出と比較した各検出の相対的「重み」を提供するものとして、解釈され得る。この信頼性値は、どの検出が誤判定検出ではなくて真陽性検出と考えられるべきであるかに関するさらなる決定をシステムが行うことを可能にする。たとえば、システムは、信頼性の閾値を設定し、真陽性検出としての閾値を超える検出のみを考慮することができる。自動非常ブレーキ(AEB:automatic emergency braking)システムにおいて、誤判定検出は、車両に非常ブレーキを自動で実行させることになり、これは明らかに望ましくない。したがって、最も確信のある検出のみが、AEBのトリガとして考えられるべきである。DLAは、信頼性値を回帰するニューラル・ネットワークを実行し得る。ニューラル・ネットワークは、境界ボックス次元、(たとえば、別のサブシステムから)取得されたグラウンド・プレーン推定、ニューラル・ネットワーク及び/又は他のセンサ(たとえば、LIDARセンサ864又はRADARセンサ860)から取得された物体の車両800方位、距離、3D位置推定と相関する慣性計測装置(IMU:inertial measurement unit)センサ866出力、その他など、少なくともいくつかのサブセットのパラメータをその入力として受け取ることができる。
SoC804は、データ・ストア816(たとえば、メモリ)を含み得る。データ・ストア816は、SoC804のオンチップ・メモリでもよく、GPU及び/又はDLAで実行されることになるニューラル・ネットワークを記憶することができる。いくつかの実例では、データ・ストア816は、冗長性及び安全性のためにニューラル・ネットワークの複数のインスタンスを記憶するのに十分な大きさの容量を有し得る。データ・ストア812は、L2又はL3キャッシュ812を備え得る。データ・ストア816の参照は、本明細書に記載のような、PVA、DLA、及び/又は他の加速装置814に関連するメモリの参照を含み得る。
SoC804は、1つ又は複数のプロセッサ810(たとえば、組み込まれたプロセッサ)を含み得る。プロセッサ810は、ブート電力及び管理能力及び関連するセキュリティ施行を処理するための専用のプロセッサ及びサブシステムでもよいブート及び電力管理プロセッサを含み得る。ブート及び電力管理プロセッサは、SoC804ブート・シーケンスの一部でもよく、実行時間電力管理サービスを提供することができる。ブート電力及び管理プロセッサは、クロック及び電圧プログラミング、システム低電力状態移行の支援、SoC804熱及び温度センサの管理、及び/又はSoC804電力状態の管理を提供することができる。各温度センサは、その出力頻度が温度に比例するリング発振器として実装されてもよく、SoC804は、リング発振器を使用してCPU806、GPU808、及び/又は加速装置814の温度を検出することができる。温度が、閾値を超えたと判定された場合、ブート及び電力管理プロセッサは、温度障害ルーティンに入り、SoC804をより低い電力状態に置く及び/又は車両800をショーファーの安全停止モードにする(たとえば、車両800を安全停止させる)ことができる。
プロセッサ810は、オーディオ処理エンジンの機能を果たし得る1セットの組み込まれたプロセッサをさらに含み得る。オーディオ処理エンジンは、複数のインターフェースを介するマルチチャネル・オーディオの完全なハードウェア・サポートとオーディオI/Oインターフェースの広く柔軟な範囲とを可能にするオーディオ・サブシステムでもよい。いくつかの実例では、オーディオ処理エンジンは、専用のRAMを有するデジタル信号プロセッサを有する専用のプロセッサ・コアである。
プロセッサ810は、低電力センサ管理及びウェイク使用事例をサポートするための必要なハードウェア特徴を提供することができる常時オンのプロセッサ・エンジンをさらに含み得る。常時オンのプロセッサ・エンジンは、プロセッサ・コア、しっかりと結合されたRAM、支援周辺装置(たとえば、タイマ及び割り込みコントローラ)、様々なI/Oコントローラ周辺装置、及びルーティング論理を含み得る。
プロセッサ810は、自動車のアプリケーションの安全性管理を処理するために専用のプロセッサ・サブシステムを含む安全性クラスタ・エンジンをさらに含み得る。安全性クラスタ・エンジンは、2個以上のプロセッサ・コア、しっかりと結合されたRAM、サポート周辺装置(たとえば、タイマ、割り込みコントローラなど)、及び/又はルーティング論理を含み得る。安全性モードにおいて、2個以上のコアは、ロックステップ・モードにおいて動作し、それらの動作の間の何らかの差を検出するための比較論理を有する単一のコアとして機能することができる。
プロセッサ810は、リアルタイム・カメラ管理を処理するための専用のプロセッサ・サブシステムを含み得るリアルタイム・カメラ・エンジンをさらに含み得る。
プロセッサ810は、カメラ処理パイプラインの一部であるハードウェア・エンジンである画像信号プロセッサを含み得る高ダイナミック・レンジ信号プロセッサをさらに含み得る。
プロセッサ810は、プレイヤ・ウインドウのための最終的画像を生み出すためにビデオ再生アプリケーションによって必要とされるビデオ処理後機能を実装する処理ブロック(たとえば、マイクロプロセッサに実装された)でもよいビデオ画像合成器を含み得る。ビデオ画像合成器は、ワイドビュー・カメラ870で、サラウンド・カメラ874で、及び/又はキャビン内監視カメラ・センサでレンズ歪み補正を実行することができる。キャビン内監視カメラ・センサは好ましくは、キャビン内イベントを識別し、適切に応答するように構成された、高度SoCの別のインスタンス上で実行するニューラル・ネットワークによって監視される。キャビン内システムは、セルラ・サービスをアクティブにする及び電話をかける、電子メールを書き取らせる、車両の目的地を変更する、車両のインフォテインメント・システム及び設定をアクティブにする又は変更する、或いは音声起動型ウェブ・サーフィンを提供するために、読唇術を実行することができる。ある特定の機能は、自律モードで動作しているときにのみ運転者に利用可能であり、そうでない場合には無効にされる。
ビデオ画像合成器は、空間的ノイズ低減及び時間的ノイズ低減の両方のための強化された時間的ノイズ低減を含み得る。たとえば、動きがビデオ内で生じた場合、ノイズ低減は、隣接するフレームによって提供される情報の重みを減らし、空間的情報に適切に重みを加える。画像又は画像の一部が動きを含まない場合、ビデオ画像合成器によって実行される時間的ノイズ低減は、前の画像からの情報を使用して現在の画像におけるノイズを減らすことができる。
ビデオ画像合成器はまた、入力ステレオ・レンズ・フレーム上でステレオ・レクティフィケーションを実行するように構成され得る。ビデオ画像合成器はさらに、オペレーティング・システム・デスクトップが使用中であるときにユーザ・インターフェース合成のために使用することができ、GPU808は、新しい表面を連続してレンダリングために必要とされない。GPU808の電源が入れられ、3Dレンダリングをアクティブに行っているときでも、ビデオ画像合成器は、GPU808をオフロードしてパフォーマンス及び反応性を向上させるために使用され得る。
SoC804は、カメラからビデオ及び入力を受信するためのモバイル・インダストリ・プロセッサ・インターフェース(MIPI:mobile industry processor interface)カメラ・シリアル・インターフェース、高速インターフェース、及び/又は、カメラ及び関連画素入力機能のために使用され得るビデオ入力ブロックをさらに含み得る。SoC804は、ソフトウェアによって制御され得る、及び特定の役割にコミットされていないI/O信号を受信するために使用され得る、入力/出力コントローラをさらに含み得る。
SoC804は、周辺装置、オーディオ・コーデック、電力管理、及び/又は他のデバイスとの通信を可能にするために、広範囲の周辺インターフェースをさらに含み得る。SoC804は、(たとえば、ギガビット・マルチメディア・シリアル・リンク及びイーサネット(登録商標)を介して接続された)カメラからのデータ、センサ(たとえば、イーサネット(登録商標)を介して接続され得るLIDARセンサ864、RADARセンサ860など)、バス802からのデータ(たとえば、車両800のスピード、ハンドル位置など)、(たとえば、イーサネット(登録商標)又はCANバスを介して接続された)GNSSセンサ858からのデータを処理するために使用され得る。SoC804は、独自のDMAエンジンを含み得る及びルーティン・データ管理タスクからCPU806を解放するために使用され得る専用の高性能大容量記憶コントローラをさらに含み得る。
SoC804は、自動化レベル3~5に広がる柔軟なアーキテクチャを有する終端間プラットフォームでもよく、それによって、多様性及び冗長性のためにコンピュータ・ビジョン及びADAS技法を活用し、効率的に使用し、深層学習ツールとともに、柔軟な、信頼できる運転ソフトウェア・スタックのためのプラットフォームを提供する、総合的機能的安全性アーキテクチャを提供する。SoC804は、従来のシステムよりも高速で、信頼でき、さらにエネルギ効率がよく、空間効率がよくなり得る。たとえば、加速装置814が、CPU806と結合されるとき、GPU808、及びデータ・ストア816は、レベル3~5の自律型車両のための高速で効率的なプラットフォームを提供することができる。
したがって、本技術は、従来のシステムによって達成することができない能力及び機能性をもたらす。たとえば、コンピュータ・ビジョン・アルゴリズムは、多種多様な視覚的データにわたり多種多様な処理アルゴリズムを実行するために、Cプログラミング言語などの高レベルのプログラミング言語を使用して構成され得る、CPUで実行され得る。しかしながら、CPUは、しばしば、たとえば、実行時間及び電力消費に関連するものなど、多数のコンピュータ・ビジョン・アプリケーションの性能要件を満たすことができない。具体的には、多数のCPUは、車両内ADASアプリケーションの要件及び実際のレベル3~5の自律型車両の要件である、リアルタイムでの複合物体検出アルゴリズムを実行することができない。
従来のシステムとは対照的に、CPU複合体、GPU複合体、及びハードウェア加速クラスタを提供することによって、本明細書に記載の技術は、複数のニューラル・ネットワークが同時に及び/又は連続して実行されることと、レベル3~5の自律運転機能を可能にするために結果が結合されることとを可能にする。たとえば、DLA又はdGPU(たとえば、GPU820)で実行するCNNは、ニューラル・ネットワークが具体的にトレーニングされていない標識を含む、交通標識をスーパーコンピュータが読み取る及び理解することを可能にする、テキスト及び単語認識を含み得る。DLAは、標識の意味論的理解を識別、解釈、及び提供することと、CPU複合体で実行する進路計画立案モジュールに意味論的理解を渡すこととを行うことができる、ニューラル・ネットワークをさらに含み得る。
別の実例として、複数のニューラル・ネットワークは、レベル3、4、又は5の運転に必要とされるように、同時に実行され得る。たとえば、電光とともに、「注意:点滅光は、凍った状態を示す」から成る警告標識は、いくつかのニューラル・ネットワークによって独立して又は集合的に解釈され得る。標識自体は、第1の配備されたニューラル・ネットワーク(たとえば、トレーニングされてあるニューラル・ネットワーク)によって交通標識として識別され得、テキスト「点滅光は、凍った状態を示す」は、点滅光が検出されるときには凍った状態が存在することを車両の進路計画立案ソフトウェア(好ましくはCPU複合体上で実行する)に知らせる、第2の配備されたニューラル・ネットワークによって解釈され得る。点滅光は、点滅光の存在(又は無いこと)を車両の進路計画立案ソフトウェアに知らせ、複数のフレームを介して第3の配備されたニューラル・ネットワークを動作させることによって識別され得る。すべての3個のニューラル・ネットワークは、DLA内及び/又はGPU808上などで、同時に実行することができる。
いくつかの実例では、顔認識及び車両所有者識別のためのCNNは、カメラ・センサからのデータを使用して車両800の正規の運転者及び/又は所有者の存在を識別することができる。常時オンのセンサ処理エンジンは、所有者が運転席側のドアに近づくときに車両を解錠する及び明かりをつけるために、並びに、セキュリティ・モードにおいて、所有者が車両を離れるときに車両の動作を停止させるために、使用され得る。このようにして、SoC804は、盗難及び/又は車の乗っ取りに対するセキュリティをもたらす。
別の実例では、緊急車両検出及び識別のためのCNNは、マイクロフォン896からのデータを使用して緊急車両サイレンを検出及び識別することができる。一般分類子を使用してサイレンを検出する及び特徴を手動で抽出する従来のシステムとは対照的に、SoC804は、環境の及び都市の音の分類、並びに視覚的データの分類のためにCNNを使用する。好ましい一実施例では、DLA上で実行するCNNは、(たとえば、ドップラー効果を使用することによって)緊急車両の相対的終速度を識別するようにトレーニングされる。CNNはまた、GNSSセンサ858によって識別されるように、車両が稼働しているローカル・エリアに特有の緊急車両を識別するようにトレーニングされ得る。それ故に、たとえば、欧州で稼働しているとき、CNNは、欧州のサイレンを検出しようとすることになり、そして、米国にあるとき、CNNは、北米のサイレンのみを識別しようとすることになる。緊急車両が検出された後は、制御プログラムが、緊急車両が通過するまで、超音波センサ862の支援を受けて、車両を減速する、道の端に停止させる、車両を駐車する、及び/又は車両をアイドリングさせる、緊急車両安全性ルーティンを実行するために使用され得る。
車両は、高速相互接続(たとえば、PCIe)を介してSoC804に連結され得るCPU818(たとえば、個別のCPU、又はdCPU)を含み得る。CPU818は、たとえば、X86プロセッサを含み得る。CPU818は、たとえば、ADASセンサとSoC804との間の潜在的に不整合の結果を調停すること、及び/又はコントローラ836及び/又はインフォテインメントSoC830の状況及び調子を監視することを含む、様々な機能のいずれかを実行するために使用され得る。
車両800は、高速相互接続(たとえば、NVIDIAのNVLINK)を介してSoC804に連結され得るGPU820(たとえば、個別のGPU、又はdGPU)を含み得る。GPU820は、冗長及び/又は異なるニューラル・ネットワークを実行することなどによって、付加的人工知能機能をもたらすことができ、車両800のセンサからの入力(たとえば、センサ・データ)に基づいてニューラル・ネットワークをトレーニング及び/又は更新するために使用され得る。
車両800は、1つ又は複数のワイヤレス・アンテナ826(たとえば、セルラ・アンテナ、ブルートゥース・アンテナなど、異なる通信プロトコルのための1つ又は複数のワイヤレス・アンテナ)を含み得るネットワーク・インターフェース824をさらに含み得る。ネットワーク・インターフェース824は、インターネットを介するクラウドとの(たとえば、サーバ878及び/又は他のネットワーク・デバイスとの)、他の車両との、及び/又は計算デバイス(たとえば、乗客のクライアント・デバイス)とのワイヤレス接続を使用可能にするために使用され得る。他の車両と通信するために、直接リンクが2個の車両の間に確立され得る、及び/又は、間接リンクが(たとえば、ネットワークを通じて及びインターネットを介して)確立され得る。直接リンクは、車両対車両通信リンクを使用し、提供され得る。車両対車両通信リンクは、車両800に近接する車両(たとえば、車両800の前の、横の、及び/又は後ろの車両)に関する車両800情報を提供することができる。この機能は、車両800の共同適応クルーズ制御機能の一部でもよい。
ネットワーク・インターフェース824は、変調及び復調機能を提供する及びコントローラ836がワイヤレス・ネットワークを介して通信することを可能にする、SoCを含み得る。ネットワーク・インターフェース824は、ベースバンドから無線周波数へのアップコンバージョン、及び無線周波数からベースバンドへのダウンコンバージョンのための無線周波数フロントエンドを含み得る。周波数コンバージョンは、よく知られているプロセスを通して実行することができ、及び/又はスーパーヘテロダイン・プロセスを用いて実行することができる。いくつかの実例では、無線周波数フロントエンド機能は、別個のチップによって提供され得る。ネットワーク・インターフェースは、LTE、WCDMA、UMTS、GSM、CDMA2000、ブルートゥース、ブルートゥースLE、Wi-Fi、Z-Wave、ZigBee、LoRaWAN、及び/又は他のワイヤレス・プロトコルを介して通信するためのワイヤレス機能を含み得る。
車両800は、チップ外の(たとえば、SoC804外の)ストレージを含み得るデータ・ストア828をさらに含み得る。データ・ストア828は、RAM、SRAM、DRAM、VRAM、フラッシュ、ハードディスク、及び/又は、少なくとも1ビットのデータを記憶することができる他の構成要素及び/又はデバイスを含む、1つ又は複数の記憶素子を含み得る。
車両800は、GNSSセンサ858をさらに含み得る。GNSSセンサ858(たとえば、GPS、支援されたGPSセンサ、ディファレンシャルGPS(DGPS)センサなど)は、マッピング、知覚、占有グリッド生成、及び/又は進路計画策定機能を支援する。たとえば、シリアル(RS-232)ブリッジへのイーサネット(登録商標)を有するUSBコネクタを使用するGPSを含むが、これに限定されない、任意の数のGNSSセンサ858が、使用され得る。
車両800は、RADARセンサ860をさらに含み得る。RADARセンサ860は、暗闇及び/又は厳しい気象条件においても、長距離車両検出のために車両800によって使用され得る。RADAR機能安全性レベルは、ASIL Bでもよい。一部の実例では、RADARセンサ860は、未加工のデータにアクセスするためのイーサネット(登録商標)へのアクセスを用いて、制御のために及び物体追跡データにアクセスするために(たとえば、RADARセンサ860によって生成されたデータを送信するために)CAN及び/又はバス802を使用することができる。多種多様なRADARセンサ・タイプが、使用され得る。たとえば、そして制限なしに、RADARセンサ860は、前部、後部、及び側部RADAR使用に適し得る。一部の実例では、パルス・ドップラーRADARセンサが使用される。
RADARセンサ860は、狭い視野を有する長距離、広い視野を有する短距離、短距離側部カバレッジなど、異なる構成を含み得る。いくつかの実例では、長距離RADARは、適応クルーズ制御機能のために使用され得る。長距離RADARシステムは、250mの範囲内など、2個以上の独立したスキャンによって実現される広い視野を提供することができる。RADARセンサ860は、静的物体と動く物体との区別を助けることができ、緊急ブレーキ・アシスト及び前方衝突警報のためのADASシステムによって使用され得る。長距離RADARセンサは、複数の(たとえば、6つ以上の)固定RADARアンテナと高速CAN及びFlexRayインターフェースとを有するモノスタティック・マルチモーダルRADARを含み得る。6つのアンテナを有する一実例では、中央の4個のアンテナは、隣接レーン内の交通からの干渉を最小限にして高速で車両800の周囲を記録するように設計された、集束ビーム・パターンを作成し得る。他の2個のアンテナは、視野を広げることができ、車両800のレーンに入る又はこれを去る車両を迅速に検出することを可能にする。
一実例として、中距離RADARシステムは、860m(前)又は80m(後)までの範囲、及び42度(前)又は850度(後)までの視野を含み得る。短距離RADARシステムは、後部バンパの両端に設置されるように設計されたRADARセンサを含み得るが、これに限定されない。後部バンパの両端に設置されるとき、そのようなRADARセンサ・システムは、車両の後ろ及び隣の死角を常に監視する2個のビームを作成することができる。
短距離RADARシステムは、死角検出及び/又はレーン変更アシストのためにADASシステムにおいて使用され得る。
車両800は、超音波センサ862をさらに含み得る。車両800の前部、後部、及び/又は側部に位置付けられ得る、超音波センサ862は、駐車アシストのために及び/又は占有グリッドの作成及び更新のために使用され得る。多種多様な超音波センサ862が使用され得、異なる超音波センサ862が、異なる範囲の検出(たとえば、2.5m、4m)のために使用され得る。超音波センサ862は、ASIL Bの機能的安全性レベルにおいて動作することができる。
車両800はLIDARセンサ864を含み得る。LIDARセンサ864は、物体及び歩行者検出、緊急ブレーキ、衝突回避、及び/又は他の機能のために使用され得る。LIDARセンサ864は、機能的安全性レベルASIL Bでもよい。いくつかの実例では、車両800は、(たとえば、ギガビット・イーサネット(登録商標)・スイッチにデータを提供するために)イーサネット(登録商標)を使用することができる複数の(たとえば、2個、4個、6個などの)LIDARセンサ864を含み得る。
いくつかの実例では、LIDARセンサ864は、物体及び360度視野のそれらの距離のリストを提供する能力を有し得る。市販のLIDARセンサ864は、たとえば、2cm~3cmの精度を有し、800Mbpsイーサネット(登録商標)接続のサポートを有して、約800mの広告された範囲を有し得る。いくつかの実例では、1つ又は複数の非突出したLIDARセンサ864が、使用され得る。そのような実例では、LIDARセンサ864は、車両800の前部、後部、側部、及び/又は角に組み込まれ得る小さいデバイスとして実装され得る。そのような実例では、LIDARセンサ864は、低反射物体についても200mの範囲を有し、120度水平及び35度垂直視野まで提供することができる。前部に取り付けられたLIDARセンサ864は、45度と135度との間の水平視野向けに構成され得る。
いくつかの実例では、3DフラッシュLIDARなどのLIDAR技術もまた使用され得る。3DフラッシュLIDARは、約200mまで車両の周囲を照らすために、送信元としてレーザーのフラッシュを使用する。フラッシュLIDARユニットは、車両から物体までの範囲に順番に対応する、レーザー・パルス走行時間及び各画素上の反射光を記録する、レセプタを含む。フラッシュLIDARは、周囲の高精度の及び歪みのない画像があらゆるレーザー・フラッシュで生成されることを可能にし得る。いくつかの実例では、4個のフラッシュLIDARセンサが、車両800の各側面に1つずつ、配備され得る。利用可能な3DフラッシュLIDARシステムは、送風機以外に動く部分を有さないソリッドステート3Dステアリング・アレイLIDARカメラ(たとえば、非スキャン型LIDARデバイス)を含む。フラッシュLIDARデバイスは、1フレームにつき5ナノ秒クラスI(目に安全な)レーザー・パルスを使用することができ、3D範囲点群及び共記載された強度データの形で反射レーザー光をキャプチャし得る。フラッシュLIDARを使用することによって、また、フラッシュLIDARは、動く部分を有さないソリッドステート・デバイスであるので、LIDARセンサ864は、モーション・ブラー、振動、及び/又は衝撃の影響を受けにくくなり得る。
車両は、IMUセンサ866をさらに含み得る。一部の実例では、IMUセンサ866は、車両800の後部車軸の中央に位置付けられ得る。IMUセンサ866は、たとえば、加速度計、磁力計、ジャイロスコープ、磁気コンパス、及び/又は他のセンサ・タイプを含み得るが、これらに限定されない。いくつかの実例では、6軸アプリケーションなどにおいて、IMUセンサ866は、加速度計及びジャイロスコープを含み得るが、9軸アプリケーションにおいて、IMUセンサ866は、加速度計、ジャイロスコープ、及び磁力計を含み得る。
一部の実施例では、IMUセンサ866は、マイクロ電気機械システム(MEMS:micro-electro-mechanical system)慣性センサ、高感度GPSレシーバ、及び高度カルマン・フィルタリング・アルゴリズムを結合して位置、ベロシティ、及び姿勢の推定値を提供するミニチュア、高性能GPS支援型慣性航行システム(GPS/INS:GPS-Aided Inertial Navigation System)として実装され得る。そのようなものとして、一部の実例では、IMUセンサ866は、GPSからIMUセンサ866までのベロシティの変化を直接観測すること及び関連付けることによって、磁気センサからの入力を必要とせずに進行方向を車両800が推定することを可能にし得る。いくつかの実例では、IMUセンサ866及びGNSSセンサ858は、単一の統合されたユニットにおいて結合され得る。
車両は、車両800内及び/又は周囲に置かれたマイクロフォン896を含み得る。マイクロフォン896は、中でも、緊急車両検出及び識別のために使用され得る。
車両は、ステレオ・カメラ868、ワイドビュー・カメラ870、赤外線カメラ872、サラウンド・カメラ874、長距離及び/又は中距離カメラ898、及び/又は他のカメラ・タイプを含む、任意の数のカメラ・タイプをさらに含み得る。カメラは、車両800の全外面の周りの画像データをキャプチャするために使用され得る。使用されるカメラのタイプは、車両800の実施例及び要件に応じて決まり、任意の組合せのカメラ・タイプが、車両800の周りの必要なカバレッジを実現するために使用され得る。加えて、カメラの数は、実施例に応じて異なり得る。たとえば、車両は、6個のカメラ、7個のカメラ、10個のカメラ、12個のカメラ、及び/又は別の数のカメラを含み得る。カメラは、一実例として、ギガビット・マルチメディア・シリアル・リンク(GMSL:Gigabit Multimedia Serial Link)及び/又はギガビット・イーサネット(登録商標)をサポートし得るが、これに限定されない。それぞれのカメラは、図8A及び図8Bに関連して本明細書においてさらに詳しく説明される。
車両800は、振動センサ842をさらに含み得る。振動センサ842は、車軸など、車両の構成要素の振動を測定することができる。たとえば、振動の変化は、道路の表面の変化を示し得る。別の実例では、2個以上の振動センサ842が使用されるとき、振動の差は、道路表面の摩擦又は滑りを判定するために使用され得る(たとえば、振動の差が電力駆動車軸と自由回転車軸との間であるとき)。
車両800は、ADASシステム838を含み得る。一部の実例では、ADASシステム838は、SoCを含み得る。ADASシステム838は、自律/適応/自動クルーズ制御(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)、及び/又は他の特徴及び機能を含み得る。
ACCシステムは、RADARセンサ860、LIDARセンサ864、及び/又はカメラを使用し得る。ACCシステムは、縦ACC及び/又は横ACCを含み得る。縦ACCは、車両800の直ぐ前の車両までの距離を監視及び制御し、前方の車両からの安全距離を維持するために車両速度を自動的に調整する。横ACCは、距離の保持を実行し、必要なときにレーンを変更するように車両800にアドバイスする。横ACCは、LCA及びCWSなどの他のADASアプリケーションに関連する。
CACCは、ワイヤレス・リンクを介して他の車両からネットワーク・インターフェース824及び/又はワイヤレス・アンテナ826を介して、或いは間接的にネットワーク接続を介して(たとえば、インターネットを介して)、受信することができる、他の車両からの情報を使用する。直接リンクは、車両対車両(V2V:vehicle-to-vehicle)通信リンクによって提供され得、一方、間接リンクは、インフラストラクチャ対車両(I2V:infrastructure-to-vehicle)通信リンクでもよい。一般に、V2V通信概念は、直前の車両(たとえば、車両1100と同じレーン内にある、車両800の直ぐ前の車両)に関する情報を提供し、一方、I2V通信概念は、さらに前の交通に関する情報を提供する。CACCシステムは、I2V情報ソースとV2V情報ソースとのいずれか又は両方を含み得る。車両800の前方の車両の情報を所与として、CACCは、より高信頼になり得、CACCは、交通の流れをよりスムーズにし、道路の渋滞を減らす可能性を有する。
運転者が修正行動を取ることができるように、FCWシステムは、危険を運転者に警告するように設計される。FCWシステムは、ディスプレイ、スピーカ、及び/又は振動部品など、運転者フィードバックに電気的に連結された、専用のプロセッサ、DSP、FPGA、及び/又はASICに連結された、前向きのカメラ及び/又はRADARセンサ860を使用する。FCWシステムは、音響、視覚的警報、振動及び/又はクイック・ブレーキ・パルスなどの形で、警報を提供することができる。
AEBシステムは、別の車両又は他の物体との差し迫った前方衝突を検出し、運転者が指定された時間又は距離パラメータ内に修正行動を取らない場合に、ブレーキを自動的に適用することができる。AEBシステムは、専用のプロセッサ、DSP、FPGA、及び/又はASICに連結された、前向きのカメラ及び/又はRADARセンサ860を使用することができる。AEBシステムが危険を検出するとき、AEBシステムは通常は、先ず、衝突を回避するための修正行動を取るように運転者に警告し、運転者が修正行動を取らない場合、AEBシステムは、予測される衝突の影響を防ぐ、又は少なくとも軽減するための努力の一環としてブレーキを自動的に適用することができる。AEBシステムは、ダイナミック・ブレーキ・サポート及び/又は衝突切迫ブレーキなどの技法を含み得る。
LDWシステムは、ハンドル又はシートの振動など、視覚的、可聴式、及び/又は触覚的警報を提供して、車両800が車線区分線を越えたときに運転者に警告する。LDWシステムは、運転者が、方向指示器を起動することによって、意図的な車線逸脱を指示するときには、起動しない。LDWシステムは、ディスプレイ、スピーカ、及び/又は振動部品など、運転者フィードバックに電気的に連結された、専用のプロセッサ、DSP、FPGA、及び/又はASICに連結された、前側を向いたカメラを使用することができる。
LKAシステムは、LDWシステムの変更形態である。LKAシステムは、車両800が車線をはみ出し始めた場合に車両800を修正するためにステアリング入力又はブレーキを提供する。
BSWシステムは、自動車の死角において車両の運転者に検出及び警告する。BSWシステムは、合流又はレーンの変更が安全ではないことを指示するために視覚的、可聴式、及び/又は触覚的警告を提供することができる。システムは、運転者が方向指示器を使用するときに、付加的警告を提供することができる。BSWシステムは、運転者フィードバック、たとえば、ディスプレイ、スピーカ、及び/又は振動部品、に電気的に結合された、専用プロセッサ、DSP、FPGA、及び/又はASICに結合された、後ろ側を向いたカメラ及び/又はRADARセンサ860を使用することができる。
RCTWシステムは、車両800がバックしているときにリアカメラの範囲外で物体が検出されたときに視覚的、可聴式、及び/又は触覚的通知を提供することができる。いくつかのRCTWシステムは、衝突を回避するために車両ブレーキが適用されることを確実にするために、AEBを含む。RCTWシステムは、運転者フィードバック、たとえば、ディスプレイ、スピーカ、及び/又は振動部品、に電気的に結合された、専用プロセッサ、DSP、FPGA、及び/又はASICに結合された、1つ又は複数の後ろを向いたRADARセンサ860を使用することができる。
従来のADASシステムは、運転者に警告し、安全状態が本当に存在するかどうかを運転者が判定し、それに応じて行動することを可能にするので、従来のADASシステムは、通常は壊滅的ではないが、運転者を悩ませている及び気を散らせていることがある誤判定結果を生み出す傾向にあることがあった。しかしながら、自律型車両800では、結果が矛盾する場合には、車両800自体が、1次的コンピュータ又は2次的コンピュータ(たとえば、第1のコントローラ836又は第2のコントローラ836)からの結果を聞き入れるかどうかを決定しなければならない。たとえば、一部の実施例では、ADASシステム838は、知覚情報をバックアップ・コンピュータ合理性モジュールに提供するためのバックアップ及び/又は2次的コンピュータでもよい。バックアップ・コンピュータ合理性モニタは、ハードウェア構成要素で冗長な多様なソフトウェアを実行して、知覚及び動的運転タスクにおいて障害を検出することができる。ADASシステム838からの出力は、監督MCUに提供され得る。1次的コンピュータ及び2次的コンピュータからの出力が矛盾する場合、監督MCUは、安全な動作を確実にするためにその矛盾をどのように調整するかを決定する必要がある。
いくつかの実例では、1次的コンピュータは、選択された結果における1次的コンピュータの信頼性を指示する、信頼性スコアを監督MCUに提供するように構成され得る。信頼性スコアが閾値を超えた場合、監督MCUは、2次的コンピュータが矛盾する又は不整合の結果を与えるかどうかにかかわらず、1次的コンピュータの指示に従い得る。信頼性スコアが閾値を満たさない場合、及び1次的及び2次的コンピュータが異なる結果を示す(たとえば、矛盾する)場合、監督MCUは、コンピュータの間で調停して適切な結果を決定することができる。
監督MCUは、2次的コンピュータが誤ったアラームを提供する状態を、1次的コンピュータ及び2次的コンピュータからの出力に基づいて、判定するようにトレーニング及び構成されたニューラル・ネットワークを実行するように構成され得る。したがって、監督MCU内のニューラル・ネットワークは、2次的コンピュータの出力が信頼され得るとき、及びそれが信頼され得ないときを学習することができる。たとえば、2次的コンピュータがRADARベースのFCWシステムであるとき、監督MCU内のニューラル・ネットワークは、アラームをトリガする下水溝の鉄格子又はマンホールの蓋など、実際には危険ではない金属製の物をいつFCWが識別しているかを学習することができる。同様に、2次的コンピュータがカメラベースのLDWシステムであるとき、監督MCU内のニューラル・ネットワークは、自転車に乗った人又は歩行者が存在し、車線逸脱が、実際には、最も安全な操作であるときに、LDWを無視することを学習することができる。監督MCU上で実行中のニューラル・ネットワークを含む実施例では、監督MCUは、関連メモリを有するニューラル・ネットワークを実行するのに適したDLA又はGPUのうちの少なくとも1つを含み得る。好ましい実施例において、監督MCUは、SoC1104の構成要素を備え得る、及び/又はSoC804の構成要素として含まれ得る。
他の実例において、ADASシステム838は、コンピュータ・ビジョンの従来のルールを使用するADAS機能を実行する2次的コンピュータを含み得る。そのようなものとして、2次的コンピュータは、古典的コンピュータ・ビジョン・ルール(if-then)を使用することができ、監督MCU内のニューラル・ネットワークの存在は、信頼性、安全性及び性能を向上させることができる。たとえば、多様な実装形態及び意図的な非同一性は、特にソフトウェア(又はソフトウェア-ハードウェア・インターフェース)機能によって引き起こされる障害に対して、システム全体をよりフォールトトレラントにする。たとえば、1次的コンピュータで実行中のソフトウェア内にソフトウェア・バグ又はエラーが存在し、2次的コンピュータで実行中の同一でないソフトウェア・コードが同じ総合的結果を提供する場合、監督MCUは、総合的結果は正しく、1次的コンピュータ上のソフトウェア又はハードウェア内のバグは重大なエラーを引き起こしていないというより大きな確信を有し得る。
いくつかの実例では、ADASシステム838の出力は、1次的コンピュータの知覚ブロック及び/又は1次的コンピュータの動的運転タスク・ブロックに供給され得る。たとえば、ADASシステム838が、直ぐ前の物体が原因で、前方衝突警報を示した場合、知覚ブロックは、物体を識別するときに、この情報を使用することができる。他の実例において、2次的コンピュータは、本明細書に記載のように、トレーニングされ、それ故に誤判定のリスクを減らす、独自のニューラル・ネットワークを有し得る。
車両800は、インフォテインメントSoC830(たとえば、車両内のインフォテインメント・システム(IVI:in-vehicle infotainment system))をさらに含み得る。SoCとして図示及び記述されているが、インフォテインメント・システムは、SoCでなくてもよく、2個以上の個別の構成要素を含み得る。インフォテインメントSoC830は、オーディオ(たとえば、音楽、携帯情報端末、ナビゲーション命令、ニュース、無線など)、ビデオ(たとえば、TV、映画、ストリーミングなど)、電話(たとえば、ハンズフリー通話)、ネットワーク接続(たとえば、LTE、Wi-Fiなど)、及び/又は情報サービス(たとえば、ナビゲーション・システム、後方駐車支援、無線データシステム、燃料レベル、総移動距離、ブレーキ燃料レベル、オイル・レベル、ドアを開ける/閉じる、エア・フィルタ情報などの車両関連情報)を車両800に提供するために使用され得るハードウェア及びソフトウェアの組合せを含み得る。たとえば、インフォテインメントSoC830は、無線、ディスク・プレイヤ、ナビゲーション・システム、ビデオ・プレイヤ、USB及びブルートゥース接続、カーピュータ、車内エンターテインメント、Wi-Fi、ハンドル・オーディオ制御装置、ハンズ・フリー音声制御、ヘッドアップ・ディスプレイ(HUD:heads-up display)、HMIディスプレイ834、テレマティックス・デバイス、制御パネル(たとえば、様々な構成要素、特徴、及び/又はシステムを制御する及び/又はこれと相互に作用するための)、及び/又は他の構成要素でもよい。インフォテインメントSoC830は、ADASシステム838からの情報、計画された車両操作などの自律運転情報、軌道、周囲環境情報(たとえば、交差点情報、車両情報、道路情報など)、及び/又は他の情報など、車両のユーザへの情報(たとえば、視覚的及び/又は可聴式の)を提供するためにさらに使用され得る。
インフォテインメントSoC830は、GPU機能性を含み得る。インフォテインメントSoC830は、バス802(たとえば、CANバス、イーサネット(登録商標)など)を介して、車両800の他のデバイス、システム、及び/又は構成要素と通信することができる。いくつかの実例では、インフォテインメント・システムのGPUが、1次的コントローラ836(たとえば、車両800の1次的及び/又はバックアップ・コンピュータ)が故障した場合に、いくつかのセルフドライブ機能を実行することができるように、インフォテインメントSoC830は、監督MCUに連結され得る。そのような実例では、インフォテインメントSoC830は、本明細書に記載のように、車両800をショーファーの安全停止モードにすることができる。
車両800は、計器群832(たとえば、デジタル・ダッシュ、電子計器群、デジタル計器パネルなど)をさらに含み得る。計器群832は、コントローラ及び/又はスーパーコンピュータ(たとえば、個別のコントローラ又はスーパーコンピュータ)を含み得る。計器群832は、スピードメーター、燃料レベル、油圧、タコメーター、オドメーター、方向指示器、ギアシフト位置インジケータ、シート・ベルト警告灯、パーキングブレーキ警告灯、エンジン故障灯、エアバッグ(SRS)システム情報、照明制御装置、安全システム制御装置、ナビゲーション情報など、1セットの器具類を含み得る。いくつかの実例では、情報は、インフォテインメントSoC830及び計器群832の間で表示及び/又は共有され得る。言い換えれば、計器群832は、インフォテインメントSoC830の一部として含まれてもよく、逆もまた同様である。
図8Dは、本開示のいくつかの実施例による、図8Aのクラウドベースのサーバと例示的自律型車両800との間の通信のシステム図である。システム876は、サーバ878、ネットワーク890、及び、車両800を含む車両を含み得る。サーバ878は、複数のGPU884(A)~884(H)(本明細書でGPU884と総称される)、PCIeスイッチ882(A)~882(H)(本明細書でPCIeスイッチ882と総称される)、及び/又はCPU880(A)~880(B)(本明細書でCPU880と総称される)を含み得る。GPU884、CPU880、及びPCIeスイッチは、たとえば、NVIDIAによって開発されたNVLinkインターフェース888及び/又はPCIe接続886などの、これらに限定されない、高速相互接続で相互に接続され得る。いくつかの実例では、GPU884は、NVLink及び/又はNVSwitch SoCを介して接続され、GPU884及びPCIeスイッチ882は、PCIe相互接続を介して接続される。8個のGPU884、2個のCPU880、及び2個のPCIeスイッチが図示されているが、これは制限を意図されていない。実施例に応じて、それぞれのサーバ878は、任意の数のGPU884、CPU880、及び/又はPCIeスイッチを含み得る。たとえば、サーバ878は、それぞれ、8個、16個、32個、及び/又はそれ以上のGPU884を含み得る。
サーバ878は、最近開始された道路工事など、予想外の又は変更された道路状態を示す画像を表す画像データを、ネットワーク890を介して、車両から、受信することができる。サーバ878は、ニューラル・ネットワーク892、更新されたニューラル・ネットワーク892、及び/又は、交通及び道路状態に関する情報を含むマップ情報894をネットワーク890を介して車両に送信することができる。マップ情報894の更新は、建設現場、くぼみ、迂回路、洪水、及び/又は他の障害物に関する情報など、HDマップ822の更新を含み得る。いくつかの実例では、ニューラル・ネットワーク892、更新されたニューラル・ネットワーク892、及び/又はマップ情報894は、環境において任意の数の車両から受信されたデータにおいて表された新しいトレーニング及び/又は経験から、及び/又は(たとえば、サーバ878及び/又は他のサーバを使用する)データ・センタにおいて実行されたトレーニングに基づいて、生じた可能性がある。
サーバ878は、トレーニング・データに基づいてマシン学習モデル(たとえば、ニューラル・ネットワーク)をトレーニングするために使用され得る。トレーニング・データは、車両によって生成され得る、及び/又は(たとえば、ゲーム・エンジンを使用して)シミュレーションにおいて生成され得る。いくつかの実例では、トレーニング・データは、タグ付けされる(たとえば、ニューラル・ネットワークが、監督された学習の恩恵を受ける場合)及び/又は他の事前処理を受けるが、他の実例において、トレーニング・データは、タグ付け及び/又は事前処理されない(たとえば、ニューラル・ネットワークが、監督された学習を必要としない場合)。トレーニングは、たとえば以下のクラスを含むがこれらに限定されない、任意の1つ又は複数のクラスのマシン学習技法に従って、実行され得る:監視されたトレーニング、半監視されたトレーニング、監視されていないトレーニング、自己学習、強化学習、連合型学習、転移学習、特徴学習(主要構成要素及びクラスタ分析を含む)、マルチ線形部分空間学習、多様体学習、表現学習(予備辞書学習を含む)、ルールに基づくマシン学習、異常検出、及びそれらの変更形態若しくは組合せ。マシン学習モデルがトレーシングされた後は、マシン学習モデルは、車両によって使用され得(たとえば、ネットワーク890を介して車両に送信される)、及び/又は、マシン学習モデルは、車両を遠隔監視するために、サーバ878によって使用され得る。
いくつかの実例では、サーバ878は、車両からデータを受信し、リアルタイムのインテリジェント推論のために最新のリアルタイムのニューラル・ネットワークにデータを適用することができる。サーバ878は、NVIDIAによって開発されたDGX及びDGXステーション・マシンなど、GPU884によって電力供給される深層学習スーパーコンピュータ及び/又は専用のAIコンピュータを含み得る。しかしながら、一部の実例では、サーバ878は、CPU電源式データ・センタのみを使用する深層学習インフラストラクチャを含み得る。
サーバ878の深層学習インフラストラクチャは、高速のリアルタイム推論の能力を有することでき、その能力を使用して車両800内のプロセッサ、ソフトウェア、及び/又は関連ハードウェアの調子を評価及び検証することができる。たとえば、深層学習インフラストラクチャは、車両800がそのシーケンスの画像内に位置したシーケンスの画像及び/又は物体など、車両800からの定期的更新を受信することができる(たとえば、コンピュータ・ビジョン及び/又は他のマシン学習物体分類技法を介して)。深層学習インフラストラクチャは、物体を識別し、車両800によって識別された物体とそれらを比較するために、独自のニューラル・ネットワークを実行することができ、結果が一致せず、インフラストラクチャが、車両800内のAIは正常に機能していないという結論を下した場合、サーバ878は、制御を推測し、乗客に通知し、安全な駐車操作を完了するように車両800のフェイルセーフ・コンピュータに命じる車両800への信号を送信することができる。
推論のために、サーバ878は、GPU884及び1つ又は複数のプログラマブル推論加速装置(たとえば、NVIDIAのTensorRT)を含み得る。GPU電源式サーバ及び推論加速の組合せは、リアルタイムの反応性を可能にすることができる。パフォーマンスがさほど必要とされない場合など、他の実例では、CPU、FPGA、及び他のプロセッサによって電力供給されるサーバが、推論のために使用され得る。
例示的計算デバイス
図9は、本開示のいくつかの実施例の実装に使用するのに適した計算デバイス900の一実例のブロック図である。計算デバイス900は、以下のデバイスを間接的に又は直接的につなぐ相互接続システム902を含み得る:メモリ904、1つ又は複数の中央処理装置(CPU)906、1つ又は複数のグラフィック処理ユニット(GPU)908、通信インターフェース910、入力/出力(I/O)ポート912、入力/出力構成要素914、電力供給装置916、1つ又は複数の提示構成要素918(たとえば、ディスプレイ)、及び1つ又は複数の論理ユニット920。少なくとも1つの実施例において、計算デバイス900は1つ若しくは複数の仮想マシン(VM)を含み得、及び/又は、その構成要素のいずれかは仮想構成要素(たとえば、仮想ハードウェア構成要素)を含み得る。非限定的実例において、GPU908のうちの1つ若しくは複数は、1つ若しくは複数のvGPUを含み得、CPU906のうちの1つ若しくは複数は、1つ若しくは複数のvCPUを含み得、及び/又は、論理ユニット920のうちの1つ若しくは複数は、1つ若しくは複数の仮想論理ユニットを含み得る。そのようなものとして、計算デバイス900は、個別の構成要素(たとえば、計算デバイス900専用のフルGPU)、仮想構成要素(たとえば、計算デバイス900専用のGPUの一部)、又はその組合せを含み得る。
図9の様々なブロックは、線で相互接続システム902を介して接続しているように示されているが、これは制限することを意図されておらず、単に分かりやすくするためである。たとえば、一部の実施例では、表示デバイスなどの提示構成要素918は、I/O構成要素914と考えられ得る(たとえば、ディスプレイがタッチ・スクリーンである場合)。別の実例として、CPU906及び/又はGPU908はメモリを含み得る(たとえば、メモリ904は、GPU908、CPU906、及び/又は他の構成要素のメモリに加えた記憶デバイスを表し得る)。言い換えれば、図9の計算デバイスは、単に例示である。「ワークステーション」、「サーバ」、「ラップトップ」、「デスクトップ」、「タブレット」、「クライアント・デバイス」、「モバイル・デバイス」、「ハンドヘルド・デバイス」、「ゲーム機」、「電子制御ユニット(ECU:electronic control unit)」、「仮想現実システム」、及び/又は他のデバイス若しくはシステム・タイプなどのカテゴリはすべて、図9の計算デバイスの範囲内にあることが意図されているので、これらは区別されない。
相互接続システム902は、1つ又は複数のリンク又はバス、たとえば、アドレス・バス、データ・バス、制御バス、又はその組合せ、を表し得る。相互接続システム902は、1つ又は複数のバス又はリンク・タイプ、たとえば、業界標準アーキテクチャ(ISA:industry standard architecture)バス、拡張業界標準アーキテクチャ(EISA:extended industry standard architecture)バス、VESA(video electronics standards association)バス、周辺構成要素相互接続(PCI:peripheral component interconnect)バス、周辺構成要素相互接続エクスプレス(PCIe:peripheral component interconnect express)バス、及び/又は別のタイプのバス若しくはリンク、を含み得る。一部の実施例では、構成要素の間に直接接続が存在する。一実例として、CPU906は、メモリ904に直接接続され得る。さらに、CPU906は、GPU908に直接接続され得る。構成要素の間に直接、又はポイント対ポイント接続が存在する場合、相互接続システム902は、接続を実施するためのPCIeリンクを含み得る。これらの実例では、PCIバスは、計算デバイス900に含まれる必要はない。
メモリ904は、様々なコンピュータ可読媒体のいずれかを含み得る。コンピュータ可読媒体は、計算デバイス900によってアクセスすることができる任意の利用可能な媒体でもよい。コンピュータ可読媒体は、揮発性及び不揮発性媒体の両方、及び取り外し可能な及び取り外し不可能な媒体を含み得る。例として、しかし限定ではなく、コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を備え得る。
コンピュータ記憶媒体は、コンピュータ可読命令、データ構造体、プログラム・モジュール、及び/又は他のデータ・タイプなどの情報の記憶のための任意の方法又は技術において実装された揮発性及び不揮発性媒体及び/又は取り外し可能な及び取り外し不可能な媒体の両方を含み得る。たとえば、メモリ904は、オペレーティング・システムなど、(たとえば、プログラム及び/又はプログラム要素を表す)コンピュータ可読命令を記憶することができる。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ又は他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD:digital versatile disk)又は他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ又は他の磁気記憶デバイス、或いは、所望の情報を記憶するために使用し得る及び計算デバイス900によってアクセスし得る任意の他の媒体を含み得るが、これらに限定されない。本明細書では、コンピュータ記憶媒体は、信号自体を含まない。
コンピュータ記憶媒体は、搬送波などの変調データ信号又は他の移送機構においてコンピュータ可読命令、データ構造体、プログラム・モジュール、及び/又は他のデータ・タイプを実施することができ、任意の情報配信媒体を含む。「変調データ信号」という用語は、その特性セットのうちの1つ又は複数を有する或いは信号内の情報をエンコードするような方式で変化した信号を指し得る。例として、しかし限定せず、コンピュータ記憶媒体は、ワイヤード・ネットワーク又は直接ワイヤード接続などのワイヤード媒体と、音響、RF、赤外線及び他のワイヤレス媒体などのワイヤレス媒体とを含み得る。前述のいずれかの組合せもまた、コンピュータ可読媒体の範囲に含まれるべきである。
CPU906は、コンピュータ可読命令のうちの少なくともいくつかを実行して計算デバイス900の1つ又は複数の構成要素を制御して本明細書に記載の方法及び/又はプロセスのうちの1つ又は複数を実行するように構成され得る。CPU906は、多数のソフトウェア・スレッドを同時に処理する能力を有する1つ又は複数の(たとえば、1個、2個、4個、8個、28個、72個などの)コアをそれぞれ含み得る。CPU906は、任意のタイプのプロセッサを含み得、実装された計算デバイス900のタイプに応じて、異なるタイプのプロセッサを含み得る(たとえば、モバイル・デバイスのためのより少数のコアを有するプロセッサ、及びサーバのためのより多数のコアを有するプロセッサ)。たとえば、計算デバイス900のタイプに応じて、プロセッサは、縮小命令セット計算(RISC:Reduced Instruction Set Computing)を使用して実装されたAdvanced RISC Machines(ARM)プロセッサ、又は複合命令セット計算(CISC:Complex Instruction Set Computing)を使用して実装されたx86プロセッサでもよい。計算デバイス900は、計算コプロセッサなど、1つ又は複数のマイクロプロセッサ又は補助コプロセッサ内の1つ又は複数のCPU906を含み得る。
CPU906に加えて又はその代わりに、GPU908は、コンピュータ可読命令のうちの少なくともいくつかを実行して計算デバイス900の1つ又は複数の構成要素を制御して本明細書に記載の方法及び/又はプロセスのうちの1つ又は複数を実行するように構成され得る。GPU908のうちの1つ若しくは複数は、統合されたGPU(たとえば、CPU906のうちの1つ又は複数とでもよく、及び/又はGPU908のうちの1つ若しくは複数は、離散GPUでもよい。実施例では、GPU908のうちの1つ又は複数は、CPU906のうちの1つ又は複数のコプロセッサでもよい。GPU908は、グラフィックス(たとえば、3Dグラフィックス)をレンダリングする又は汎用計算を実行するために、計算デバイス900によって使用され得る。たとえば、GPU908は、GPUによる汎用計算(GPGPU:General-Purpose computing on GPU)のために使用され得る。GPU908は、同時に数百又は数千のソフトウェア・スレッドを処理する能力を有する数百又は数千のコアを含み得る。GPU908は、レンダリング・コマンド(たとえば、ホスト・インターフェースを介して受信されたCPU906からのレンダリング・コマンド)に応答して、出力画像のための画素データを生成することができる。GPU908は、画素データ又は任意の他の適切なデータ、たとえばGPGPUデータ、を記憶するためのグラフィックス・メモリ、たとえば表示メモリ、を含み得る。表示メモリは、メモリ904の一部として含まれ得る。GPU908は、並行して動作する(たとえば、リンクを介して)2個以上のGPUを含み得る。リンクは、GPUに直接接続することができ(たとえば、NVLINKを使用して)、又はスイッチを介して(たとえば、NVSwitchを使用して)GPUを接続することができる。ともに結合されるとき、各GPU908は、出力の異なる部分の又は異なる出力の画素データ又はGPGPUデータ(たとえば、第1の画像の第1のGPU及び第2の画像の第2のGPU)を生成することができる。各GPUは、独自のメモリを含むことができ、又は他のGPUとメモリを共有することができる。
CPU906及び/又はGPU908に加えて又はその代わりに、論理ユニット920は、コンピュータ可読命令のうちの少なくともいくつかを実行して計算デバイス900のうちの1つ又は複数を制御して本明細書に記載の方法及び/又はプロセスのうちの1つ又は複数を実行するように構成され得る。実施例では、CPU906、GPU908、及び/又は論理ユニット920は、方法、プロセス及び/又はその部分の任意の組合せを離散的に又は合同で実行することができる。論理ユニット920のうちの1つ若しくは複数は、CPU906及び/若しくはGPU908のうちの1つ若しくは複数の一部でもよく及び/又はそこで統合されてもよく、及び/又は、論理ユニット920のうちの1つ若しくは複数は、CPU906及び/若しくはGPU908に対する離散構成要素であっても若しくは他の方法でそれらの外部にあってもよい。実施例では、論理ユニット920のうちの1つ又は複数は、CPU906のうちの1つ若しくは複数及び/又はGPU908のうちの1つ若しくは複数のコプロセッサでもよい。
論理ユニット920の実例は、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)エレメント、及び/又は同類のもの、を含む。
通信インターフェース910は、ワイヤード及び/又はワイヤレス通信を含む、電子通信ネットワークを介して計算デバイス900が他の計算デバイスと通信することを可能にする、1つ又は複数のレシーバ、トランスミッタ、及び/又はトランシーバを含み得る。通信インターフェース910は、ワイヤレス・ネットワーク(たとえば、Wi-Fi、Z-Wave、ブルートゥース、ブルートゥースLE、ZigBeeなど)、ワイヤード・ネットワーク(たとえば、イーサネット(登録商標)又はInfiniBandを介して通信すること)、低電力ワイド・エリア・ネットワーク(たとえば、LoRaWAN、SigFoxなど)、及び/又はインターネットなどの、いくつかの異なるネットワークのうちのいずれかを介する通信を可能にするための構成要素及び機能を含み得る。
I/Oポート912は、そのうちのいくつかは計算デバイス900に内蔵(たとえば、統合)され得る、I/O構成要素914、提示構成要素918、及び/又は他の構成要素を含む、他のデバイスに計算デバイス900が論理的に連結されることを可能にすることができる。例示的なI/O構成要素914は、マイクロフォン、マウス、キーボード、ジョイスティック、ゲーム・パッド、ゲーム・コントローラ、サテライト・ディッシュ、スキャナ、プリンタ、ワイヤレス・デバイスなどを含む。I/O構成要素914は、エア・ジェスチャ、音声、又は、ユーザによって生成される他の生理的入力を処理する自然ユーザ・インターフェース(NUI:natural user interface)を提供することができる。場合によっては、入力は、さらなる処理のための適切なネットワーク要素に送信され得る。NUIは、音声認識、スタイラス認識、顔認識、生体認識、画面上での及び画面の隣でのジェスチャ認識、エア・ジェスチャ、頭部及び視標追跡、並びに計算デバイス900のディスプレイに関連するタッチ認識(さらに詳しく後述するような)の任意の組合せを実装し得る。計算デバイス900は、ジェスチャ検出及び認識のための、ステレオスコープ・カメラ・システム、赤外線カメラ・システム、RGBカメラ・システム、タッチ画面技術、及びこれらの組合せなど、深度カメラを含み得る。追加で、計算デバイス900は、動きの検出を可能にする加速度計又はジャイロスコープを含み得る(たとえば、慣性測定ユニット(IMU:inertia measurement unit)の一部として)。いくつかの実例では、加速度計又はジャイロスコープの出力は、没入型拡張現実又は仮想現実をレンダリングするために、計算デバイス900によって使用され得る。
電力供給装置916は、ハードワイヤード電力供給装置、バッテリ電力供給装置、又はその組合せを含み得る。電力供給装置916は、計算デバイス900の構成要素が動作することを可能にするために計算デバイス900に電力を提供することができる。
提示構成要素918は、ディスプレイ(たとえば、モニタ、タッチ画面、テレビジョン画面、ヘッドアップ表示装置(HUD)、他のディスプレイタイプ、又はその組合せ)、スピーカ、及び/又は他の提示構成要素を含み得る。提示構成要素918は、他の構成要素(たとえば、GPU908、CPU906など)からデータを受信し、データを(たとえば、画像、ビデオ、音響などとして)出力することができる。サブセクションの小見出し
例示的データ・センタ
図10は、本開示の少なくとも1つの実施例において使用され得る例示的データ・センタ1000を示す。データ・センタ1000は、データ・センタ・インフラストラクチャ層1010、フレームワーク層1020、ソフトウェア層1030、及び/又はアプリケーション層1040を含み得る。
図10に示すように、データ・センタ・インフラストラクチャ層1010は、リソース・オーケストレータ1012、グループ化されたコンピューティング・リソース1014、及びノード・コンピューティング・リソース(「ノードC.R.」)1016(1)~1016(N)を含み得、「N」は、任意の正の整数を表す。少なくとも1つの実施例において、ノードC.R.1016(1)~1016(N)は、任意の数の中央処理装置(「CPU」)又は他のプロセッサ(アクセラレータ、フィールド・プログラマブル・ゲート・アレイ(FPGA)、グラフィックス・プロセッサ又はグラフィックス処理ユニット(GPU)などを含む)、メモリ・デバイス(たとえば、動的読み取り専用メモリ)、ストレージ・デバイス(たとえば、ソリッド・ステート・ドライブ又はディスク・ドライブ)、ネットワーク入出力(「NW I/O」)デバイス、ネットワーク・スイッチ、仮想マシン(「VM」)、電源モジュール、及び/又は冷却モジュールなどを含み得るが、これに限定されない。いくつかの実施例において、ノードC.R.1016(1)~1016(N)の中の1つ又は複数のノードC.R.は、上述のコンピューティング・リソースのうちの1つ又は複数を有するサーバに対応し得る。加えて、いくつかの実施例において、ノードC.R.1016(1)~10161(N)は、vGPU、vCPU、及び/若しくは同類のものなどの1つ若しくは複数の仮想構成要素を含み得、並びに/又は、ノードC.R.1016(1)~1016(N)のうちの1つ若しくは複数は、仮想マシン(VM)に対応し得る。
少なくとも1つの実施例において、グループ化されたコンピューティング・リソース1014は、1つ若しくは複数のラック(図示せず)、又は様々な地理的位置のデータ・センタに収容された多くのラック(同様に図示せず)内に収容された、ノードC.R.1016の別個のグループを含み得る。グループ化されたコンピューティング・リソース1014内のノードC.R.1016の別個のグループは、1つ又は複数のワークロードをサポートするように構成され得る又は割り当てられ得る、グループ化された計算、ネットワーク、メモリ、又はストレージのリソースを含み得る。少なくとも1つの実施例において、CPU、GPU、及び/又は他のプロセッサを含むいくつかのノードC.R.1016は、1つ又は複数のワークロードをサポートするための計算リソースを提供するために1つ又は複数のラック内にグループ化され得る。1つ又は複数のラックはまた、任意の数の電源モジュール、冷却モジュール、及び/又はネットワーク・スイッチを任意の組合せで含み得る。
リソース・オーケストレータ1022は、1つ若しくは複数のノードC.R.1016(1)~1016(N)及び/又はグループ化されたコンピューティング・リソース1014を構成し得る、又は別の方法で制御し得る。少なくとも1つの実施例において、リソース・オーケストレータ1022は、データ・センタ1000のためのソフトウェア設計インフラストラクチャ(「SDI」)管理エンティティを含み得る。リソース・オーケストレータ1022は、ハードウェア、ソフトウェア、又はその何らかの組合せを含み得る。
少なくとも1つの実施例において、図10に示すように、フレームワーク層1020は、ジョブ・スケジューラ1032、構成マネージャ1034、リソース・マネージャ1036、及び/又は分散ファイル・システム1038を含み得る。フレームワーク層1020は、ソフトウェア層1030のソフトウェア1032、及び/又はアプリケーション層1040の1つ又は複数のアプリケーション1042をサポートするためのフレームワークを含み得る。ソフトウェア1032又はアプリケーション1042は、それぞれ、アマゾン・ウェブ・サービス、グーグル・クラウド、及びマイクロソフト・アズールによって提供されるものなどのウェブベースのサービス・ソフトウェア又はアプリケーションを含み得る。フレームワーク層1020は、大規模なデータ処理(たとえば、「ビッグ・データ」)のために分散ファイル・システム1038を利用することができるApache Spark(商標)(以下、Spark)など、一種のフリーでオープンソースのソフトウェア・ウェブ・アプリケーション・フレームワークであり得るが、これに限定されない。少なくとも1つの実施例において、ジョブ・スケジューラ1032は、データ・センタ1000の様々な層によってサポートされるワークロードのスケジューリングを容易にするためのSparkドライバを含み得る。構成マネージャ1034は、ソフトウェア層1030、及び大規模データ処理をサポートするためのSpark及び分散ファイル・システム1038を含むフレームワーク層1020などの異なる層を構成する能力を有し得る。リソース・マネージャ1036は、分散ファイル・システム1038及びジョブ・スケジューラ1032のサポートのためにマッピングされた又は割り当てられたクラスタ化又はグループ化されたコンピューティング・リソースを管理する能力を有し得る。少なくとも1つの実施例において、クラスタ化又はグループ化されたコンピューティング・リソースは、データ・センタ・インフラストラクチャ層1010に、グループ化されたコンピューティング・リソース1014を含み得る。リソース・マネージャ1036は、リソース・オーケストレータ1012と連携して、これらのマッピングされた又は割り当てられたコンピューティング・リソースを管理し得る。
少なくとも1つの実施例において、ソフトウェア層1030に含まれるソフトウェア1032は、ノードC.R.1016(1)~1016(N)、グループ化されたコンピューティング・リソース1014、及び/又はフレームワーク層1020の分散ファイル・システム1038の少なくとも一部によって使用されるソフトウェアを含み得る。1つ又は複数のタイプのソフトウェアは、インターネット・ウェブ・ページ検索ソフトウェア、電子メール・ウイルス・スキャン・ソフトウェア、データベース・ソフトウェア、及びストリーミング・ビデオ・コンテンツ・ソフトウェアを含み得るが、これに限定されない。
少なくとも1つの実施例において、アプリケーション層1040に含まれるアプリケーション1042は、ノードC.R.1016(1)~1016(N)、グループ化されたコンピューティング・リソース1014、及び/又はフレームワーク層1020の分散ファイル・システム1038の少なくとも一部によって使用される1つ又は複数のタイプのアプリケーションを含み得る。1つ又は複数のタイプのアプリケーションは、任意の数のゲノミクス・アプリケーション、コグニティブ・コンピューティング、並びに、トレーニング若しくは推論ソフトウェア、機械学習フレームワーク・ソフトウェア(たとえば、PyTorch、TensorFlow、Caffeなど)、及び/又は1つ若しくは複数の実施例と組み合わせて使用される他の機械学習アプリケーションを含む機械学習アプリケーションを含み得るが、これに限定されない。
少なくとも1つの実施例において、構成マネージャ1034、リソース・マネージャ1036、及びリソース・オーケストレータ1012のいずれも、任意の技術的に実行可能な方法で取得された任意の量及びタイプのデータに基づいて、任意の数及びタイプの自己修正行動を実装し得る。自己修正行動は、データ・センタ1000のデータ・センタ・オペレータを、場合によっては不良な構成決定を行うことから、また場合によってはデータ・センタの十分に活用されていない及び/又はパフォーマンスが不十分な部分を回避することから、解放することができる。
データ・センタ1000は、本明細書に記載の1つ又は複数の実施例による、1つ若しくは複数の機械学習モデルをトレーニングするか、又は1つ若しくは複数の機械学習モデルを使用して情報を予測若しくは推論するための、ツール、サービス、ソフトウェア、又は他のリソースを含み得る。たとえば、機械学習モデルは、データ・センタ1000に関して上述したソフトウェア及び/又はコンピューティング・リソースを使用して、ニューラル・ネットワークアーキテクチャに従って重みパラメータを算出することによってトレーニングされ得る。少なくとも1つの実施例において、1つ又は複数のニューラル・ネットワークに対応するトレーニング又は展開された機械学習モデルは、本明細書に記載されているものなどであるがこれに限定されない1つ又は複数のトレーニング技法を通じて算出された重みパラメータを使用することによって、データ・センタ1000に関して上述したリソースを使用して情報を推論又は予測するために、使用され得る。
少なくとも1つの実施例において、データ・センタ1000は、CPU、特定用途向け集積回路(ASIC)、GPU、FPGA、及び/又は他のハードウェア(若しくは、それに対応する仮想計算リソース)を使用して、上記のリソースを使用するトレーニング及び/又は推論を実行し得る。さらに、上記の1つ又は複数のソフトウェア及び/又はハードウェア・リソースは、ユーザが画像認識、音声認識、又は他の人工知能サービスなどの情報の推論をトレーニング又は実行することを可能にするサービスとして構成され得る。
例示的ネットワーク環境
本開示の実施例の実装に使用するのに適したネットワーク環境は、1つ又は複数のクライアント・デバイス、サーバ、ネットワーク接続ストレージ(NAS)、他のバックエンド・デバイス、及び/又は他のデバイス・タイプを含み得る。クライアント・デバイス、サーバ、及び/又は他のデバイス・タイプ(たとえば、各デバイス)は、図9の計算デバイス900の1つ又は複数のインスタンス上に実装されてもよい-たとえば、各デバイスは、計算デバイス900の同様の構成要素、特徴、及び/又は機能を含み得る。加えて、バックエンド・デバイス(たとえば、サーバ、NASなど)が実装される場合、バックエンド・デバイスは、データ・センタ1000の一部として含まれてもよく、その一実例は、図10に関して本明細書でより詳細に説明されている。
ネットワーク環境の構成要素は、有線、無線、又はその両方であり得るネットワークを介して、相互に通信し得る。ネットワークは、複数のネットワーク、又はネットワークのネットワークを含み得る。実例として、ネットワークは、1つ又は複数のワイド・エリア・ネットワーク(WAN)、1つ又は複数のローカル・エリア・ネットワーク(LAN)、インターネット及び/若しくは公衆交換電話網(PSTN)などの1つ若しくは複数のパブリック・ネットワーク、及び/又は1つ若しくは複数のプライベート・ネットワークを含み得る。ネットワークが無線通信ネットワークを含む場合、基地局、通信塔、さらにはアクセス・ポイント(及び、他の構成要素)などの構成要素は、無線接続を提供し得る。
互換性のあるネットワーク環境は、1つ又は複数のピア・ツー・ピア・ネットワーク環境-ネットワーク環境にサーバが含まれない場合-と、1つ又は複数のクライアントサーバ・ネットワーク環境-ネットワーク環境に1つ又は複数のサーバが含まれる場合-とを含み得る。ピア・ツー・ピア・ネットワーク環境では、サーバに関して本明細書で説明する機能は、任意の数のクライアント・デバイスに実装され得る。
少なくとも1つの実施例において、ネットワーク環境は、1つ又は複数のクラウドベースのネットワーク環境、分散型コンピューティング環境、その組合せなどを含み得る。クラウドベースのネットワーク環境は、1つ若しくは複数のコア・ネットワーク・サーバ及び/又はエッジ・サーバを含み得る1つ若しくは複数のサーバに実装された、フレームワーク層、ジョブ・スケジューラ、リソース・マネージャ、並びに分散ファイル・システムを含み得る。フレームワーク層は、ソフトウェア層のソフトウェア及び/又はアプリケーション層の1つ若しくは複数のアプリケーションをサポートするためのフレームワークを含み得る。ソフトウェア又はアプリケーションはそれぞれ、ウェブベースのサービス・ソフトウェア又はアプリケーションを含み得る。実施例において、クライアント・デバイスのうちの1つ又は複数は、(たとえば、1つ又は複数のアプリケーション・プログラミング・インターフェース(API)を介してサービス・ソフトウェア及び/又はアプリケーションにアクセスすることによって)ウェブベースのサービス・ソフトウェア又はアプリケーションを使用し得る。フレームワーク層は、大規模なデータ処理(たとえば、「ビッグ・データ」)のために分散ファイル・システムを使用することができるような、一種のフリーでオープンソースのソフトウェア・ウェブ・アプリケーション・フレームワークであり得るが、これに限定されない。
クラウドベースのネットワーク環境は、本明細書に記載のコンピューティング機能及び/又はデータ・ストレージ機能(又は、その1つ又は複数の部分)の任意の組合せを実行する、クラウド・コンピューティング及び/又はクラウド・ストレージを提供し得る。これらの様々な機能のいずれかは、(たとえば、州、地域、国、地球などにわたって分布し得る1つ又は複数のデータ・センタの)中央サーバ又はコア・サーバから複数の位置に分散され得る。ユーザ(たとえば、クライアント・デバイス)への接続がエッジ・サーバに比較的近い場合、コア・サーバは機能の少なくとも一部をエッジ・サーバに指定し得る。クラウドベースのネットワーク環境は、プライベートであり得(たとえば、単一の組織に限定される)、パブリックであり得(たとえば、多くの組織で利用可能である)、及び/又はその組合せ(たとえば、ハイブリッド・クラウド環境)であり得る。
クライアント・デバイスは、図9に関して本明細書で説明される例示的計算デバイス900の構成要素、特徴、及び機能のうちの少なくともいくつかを含み得る。限定ではなく実例として、クライアント・デバイスは、パーソナル・コンピュータ(PC)、ラップトップ・コンピュータ、モバイル・デバイス、スマートフォン、タブレット・コンピュータ、スマート・ウォッチ、ウェアラブル・コンピュータ、パーソナル・デジタル・アシスタント(PDA)、MP3プレイヤ、仮想現実ヘッドセット、グローバル・ポジショニング・システム(GPS)若しくはデバイス、ビデオ・プレイヤ、ビデオ・カメラ、監視デバイス若しくはシステム、車両、ボート、飛行船、仮想マシン、ドローン、ロボット、ハンドヘルド通信デバイス、病院デバイス、ゲーム・デバイス若しくはシステム、エンターテインメント・システム、車両コンピュータ・システム、組み込みシステム・コントローラ、リモート・コントロール、電化製品、家庭用電子デバイス、ワークステーション、エッジ・デバイス、これらの詳述したデバイスの任意の組合せ、又は任意の他の適切なデバイスとして実施され得る。
本開示は、コンピュータ又は、携帯情報端末若しくは他のハンドヘルド・デバイスなどの、他のマシンによって実行されている、プログラム・モジュールなどのコンピュータ実行可能命令を含む、コンピュータ・コード又はマシン使用可能命令との一般的関連において説明されることがある。一般に、ルーティン、プログラム、オブジェクト、構成要素、データ構造体などを含むプログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ・タイプを実装するコードを指す。本開示は、ハンドヘルド・デバイス、家電製品、汎用コンピュータ、より特殊な計算デバイスなどを含む、様々な構成で実施され得る。本開示はまた、通信ネットワークを介してリンクされた遠隔処理デバイスによってタスクが実行される分散型コンピューティング環境において実施され得る。
本明細書では、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つを含み得る。
本開示の主題は、法定の要件を満たすために特異性を有して記述されている。しかしながら、その記述自体が本開示の範囲を制限することは意図されていない。そうではなくて、本発明者は、請求されている主題が、他の現在の又は未来の技術と併せて、異なるステップ又は本文書に記載されたものと類似のステップの組合せを含むように、他の形で実施され得ることを意図している。さらに、「ステップ」及び/又は「ブロック」という用語は、使用される方法の異なる要素を含意するように本明細書で使用され得るが、これらの用語は、個別のステップの順番が明示的に記載されていない限り及びそのように記載されているときを除いて本明細書で開示される様々なステップの間に何らかの特定の順番を暗示するものとして解釈されるべきではない。