自律運転マシンの回帰ベースの線分検出に関連するシステム及び方法が開示される。本開示は、例示的自律型車両1000(その実例が図10A~10Dに関して本明細書で説明され、本明細書で別法として「車両1000」又は「自律型車両1000」と称される)に関して説明されることがあるが、これは限定を意図していない。たとえば、本明細書に記載のシステム及び方法は、非自律型車両、半自律型車両(たとえば、高度運転者支援システム(ADAS:advanced driver assistance system)における)、ロボット、倉庫車両、オフロード車両、飛行船舶、ボート、旅客車両、乗用車、トラック、バス、ファースト・レスポンダ車両、シャトル、電気若しくは原動機付自転車、オートバイ、消防車、警察車両、救急車、建設車両、潜水艦、ドローン、及び/又は別のタイプの車両(たとえば、無人の及び/又は1人若しくは複数の旅客を乗せる)によって、使用され得る。加えて、本開示は、自律運転に関して説明されることがあるが、これは、限定を意図していない。たとえば、本明細書に記載のシステム及び方法は、ロボット工学、航空システム、船舶システム、並びに/或いは、知覚、世界モデル管理、進路プランニング、障害物回避、及び/又は他のプロセスなどのための、他の技術分野において使用され得る。
本明細書に記載のものなどの従来のシステムとは対照的に、本開示のシステムは、マシン学習モデルによる低分解処理の利点を維持しつつ、マシン学習モデル(たとえば、畳み込みニューラル・ネットワーク(CNN)などのディープ・ニューラル・ネットワーク(DNN))の入力分解において入手可能な豊富な空間情報を保存する。結果として、マシン学習モデルが、畳み込み演算を介して入力を処理して圧縮された出力を生成するときでも、環境の車線境界線、道路境界線、テキスト、及び/又は他の特徴の予測の正確性は、保存される。たとえば、高分解情報が、マシン学習モデル処理中に導入される量子化又はダウンサンプリング中に失われないように、マシン学習モデルへの入力として使用される画像データは、エンコードされ得る。エンコードは、マシン学習モデルに固有の-特にCNNにおける-処理中に豊富な空間情報を保存するのに十分な冗長性を生み出す方法で、グラウンド・トゥルース・データ(たとえば、車線境界線、道路境界線、テキスト、及び/又は他の特徴に対応する注釈付きラベル)に実行され得る。本開示のシステム及び方法のいくつかの非限定的利点は、車線検出範囲の増加、車線外側線精度若しくはリコールの増加、及び、低分解の画像処理を活用しつつ-それにより、車内推論の計算負荷を低減しつつ-高分解画像において入手可能な豊富な空間情報を保存する能力である。加えて、いくつかの実施例において、エンコード(たとえば、トレーニング中)と復号(たとえば、配備中の、推論中の)との両方は、いくつかの計算カーネル(たとえば、NVIDIAのCUDAのCUDAカーネル)を介するエンコード及び/又は復号のためのアルゴリズムを並列処理してトレーニング中の配備及び処理時のランタイムを減らすことなどによって、GPU加速され得る。
本開示のマシン学習モデルは、線、線に沿った角度、及び/又は線のタイプ(たとえば、実線、破線、道路境界線、テキスト、標識など)に属する最も近い画素までの各画素からの1次元(1D)及び/又は2次元(2D)距離を、配備中に、予測するようにトレーニングされ得る。1D及び/又は2D距離は、入力分解における画像データの空間情報を保存するために、計算され得る。たとえば、各画素は、線画素まで(たとえば、画像内の線、又はマシン学習モデルが予測するようにトレーニングされた別の特徴タイプに対応すると判定された画素まで)の距離に対応する画素距離とエンコードされ得るので、画素情報が処理中に失われたときでも、画素距離が、線に対応する高分解画像における元の画素の位置を回復するために使用され得る。したがって、マシン学習モデルの出力分解は、入力分解より少なくてもよく、復号プロセスが、マシン学習モデルの出力から入力分解画像の線情報を再構築するために使用され得る。復号中に、エンコードされた画素データに基づく投票方法が、入力分解画像の線形成を再構築するために使用され得る。たとえば、出力からのそれぞれの画素値が、入力分解画像内の画素への投票をキャストするために使用され得、そして、閾値数の投票が、画素へのキャストである場合、その画素は、入力画像内の線に属すると判定され得る。
線に沿った角度が、線の形状を再構築するために使用され得、そこで、線の形状又はジオメトリは、車線保持、車線内及び車線間のハンドリングなどのために自律型車両によって使用され得る。トレーニング中に、角度が、線に対応する各画素について計算及びエンコードされ得る(たとえば、代表画素を決定するためにグラウンド・トゥルース線注釈を使用して)。角度の0~360度の値が、それぞれの画素についてエンコードされ得、そこで、角度値は、角度がエンコードされている画素の1行の画素に沿って伸びる水平線に対して計算される。角度自体をエンコードする代わりに、いくつかの実施例では、角度値の余弦及び正弦構成要素がエンコードされ得る。画素対画素の変動は、平滑化技法を使用して克服され得る。復号中に、マシン学習モデルによって出力される値は、画素位置における線の角度に対応し得る。
マシン学習モデルは、環境内の適切な動きの決定において自律型車両が使用するための線タイプを検出するようにトレーニングされ得る。非限定的実例として、破線が検出されるときにはいつでも、車両は、車線変更又は通過操作を実行することができ得る。同様に、黄色の実線が検出されるとき、車両の自律制御システムは、どの操作も黄色の実線を乗り越えてはならないことを理解し得る。異なる線クラスについて、異なる値が割り当てられ得る。しかしながら、N個の異なる線クラスのそれぞれを表すための出力を必要とし得る従来のシステムとは対照的に、本システムは、各異なる線クラスのビット値をエンコードし得る。ビット値をエンコードすることによって、マシン学習モデルは、N個の異なる線クラスのそれぞれについての出力に対立するものとしてのlog2(N)出力を出力することのみを必要とし得る。したがって、マシン学習モデルは、マシン学習モデルが予測するようにトレーニングされるいくつかのビットに対応する2進数列を出力し得る(たとえば、4ビット2進数列は、各ビットに1個の、4個の出力チャネルを生成する)。結果として、マシン学習モデル・トレーニングは、マシン学習モデルが各クラスの付加的出力チャネルを予測するようにトレーニングされることを必要とせずに、付加的クラスに迅速に拡張可能になり得る。
いくつかの実施例において、どの線画素が同じ線に対応するかを判定するために、高次元の埋め込みアルゴリズムが、線の完全なジオメトリを推論するためにクラスタを予測するために-又はドットを接続するために-マシン学習モデルによって使用され得る。たとえば、各線画素は、高次元ベクトルを同じ線のものではない他の高次元ベクトルから、空間において、分ける方法で、高次元ベクトルにマップされ得る。このプロセスは、画像のそれぞれの線画素について完了され得る。マシン学習モデルは、次いで、高次元ベクトルの関係(又は近接)を使用して、線画素の間で、クラスタ、又は接続性を判定することができる。第1の閾値距離(2xdwithin)内に関連ベクトルを有する画素-dwithinはクラスタ内の分散に対応する-は、ともにクラスタ化され得、第2の閾値距離(たとえば、4xdwithin)より大きく離れた関連ベクトルを有する画素は、異なるクラスタのものであると判定され得る。たとえば、第1のベクトルは、第1のクラスタ(たとえば、第1の画像内の線に対応する)として登録され得る。第2のベクトルは、第1のベクトルと第2のベクトルとの間のユークリッド距離を計算するために使用され得る。その距離が第1の閾値未満である場合、第1のベクトル及び第2のベクトルは、第1のクラスタに割り当てられ得、そして、その距離が第2の閾値より大きい場合、第2のベクトルは、第2のクラスタとして登録され得る。一部の実施例では、平均シフト・クラスタリングが、dwithinのカーネル半径を使用して実行され得る。
復号中に、各線画素は、入力画像内の画素座標位置にマップされ得、線画素は、高次元ベクトルにマップされ得、逆写像が、高次元ベクトルのクラスタに対応する線画素を判定するために使用され得る。画像内に結果として生じる線の幾何学的適合性を生み出すために、最小二乗ポリフィット(polyfit)・プロセスが、完全な線を表す多項式係数を生み出すために実行され得る。いくつかの非限定的実例において、3次ポリフィット(たとえば、4個の係数)が、使用され得る。
マシン学習モデルを使用する線予測
ここで図1Aを参照すると、図1Aは、本開示のいくつかの実施例による、マシン学習モデルを使用する線予測のための例示的プロセス100を示すデータ流れ図である。高いレベルで、プロセス100は、1個又は複数のマシン学習モデル104が1個又は複数の入力、たとえば、画像データ102、を受信することと、1個又は複数の出力、たとえば、画素距離108、角度110、線クラス112、及び/又はクラスタ・ベクトル114、を生成することとを含み得る。画像データ102は、自律型車両(たとえば、少なくとも図10A~10Dに関して本明細書で説明されているような車両1000)の1個又は複数のカメラによって、生成され得る。いくつかの実施例において、画像データ102は、他のタイプのセンサ・データ、たとえば、1個又は複数のLIDARセンサ1064からのLIDARデータ、1個又は複数のRADARセンサ1060からのRADARデータ、1個又は複数のマイクロフォン1096からのオーディオ・データなど、を追加で又は別法として含み得る。マシン学習モデル104は、自律運転ソフトウェア・スタックの知覚構成要素、世界モデル管理構成要素、プランニング構成要素、制御構成要素、及び/又は他の構成要素によって使用され得る出力106を生成するようにトレーニングされ得る。たとえば、車両1000に関して、線122は、環境内の1個又は複数の動作(たとえば、進路プランニング、マッピングなど)の実行において自律型車両1000を支援するために、環境を自律型車両1000のコントローラ1136、ADASシステム1138、SOC1104、及び/又は他の構成要素に知らせるために使用され得る。
いくつかの実施例において、画像データ102は、車両の1個又は複数のカメラ、たとえば、自律型車両1000(図10A~10D)のステレオ・カメラ1068、ワイドビュー・カメラ1070(たとえば、魚眼カメラ)、赤外線カメラ1072、サラウンド・カメラ1074(たとえば、360度カメラ)、長距離及び/若しくは中距離カメラ1098、並びに/又は他のカメラ・タイプ、の視界の画像を表すデータを含み得る。一部の実例では、画像データ102は、車両1000の横軸(たとえば、左から右)に関して前向きの、実質的に中心の視界を有する単一のカメラによってキャプチャされ得る。非限定的実施例では、ワイドビュー・カメラ1070、サラウンド・カメラ1074、ステレオ・カメラ1068、及び/又は長距離若しくは中距離カメラ1098などの、1個又は複数の前向きのカメラ(たとえば、中央に又はほぼ中央に取り付けられたカメラ)が、使用され得る。前向きのカメラは、車両1000の行程の現在の車線、車両1000の行程の隣接車線の両方、及び/又は運転している表面の境界線を含む視界(たとえば、図10Bの前向きのステレオ・カメラ1068及び/又はワイドビュー・カメラ1070の視界)を含み得るので、この視点からキャプチャされた画像データは、ナビゲートするとき-たとえば、車線内、車線変更を通して、曲がり角を通って、交差点を通ってなど-の知覚のために有用になり得る。いくつかの実例において、複数のカメラ又は他のセンサ(たとえば、LIDARセンサ、RADARセンサなど)が、複数の視界又は知覚フィールド(たとえば、図10Bの長距離カメラ1098、前向きのステレオ・カメラ1068、及び/又は前向きのワイドビュー・カメラ1070の視界)を組み込むために使用され得る。
いくつかの実例において、画像データ102は、1個のフォーマット(たとえば、RCCB、RCCC、RBGCなど)でキャプチャされ得、次いで、別のフォーマットに変換され得る(たとえば、画像データの前処理中に)。いくつかの他の実例において、画像データ102は、前処理された画像データを生成するために、画像データ・プリプロセッサ(図示せず)への入力として提供され得る。多数のタイプの画像又はフォーマット、たとえば、JPEG(Joint Photographic Experts Group)、RGB(Red Green Blue)、若しくは輝度/クロミナンス(YUV:Luminance/Chrominance)フォーマットなどでの圧縮された画像、圧縮されたビデオ・フォーマット(たとえば、H.264/アドバンスト・ビデオ・コーディング(AVC:Advanced Video Coding)、H.265/高性能ビデオ・コーディング(HEVC:High Efficiency Video Coding)、VP8、VP9、アライアンス・フォー・オープン・メディア・ビデオ1(AV1:Alliance for Open Media Video 1)、多用途ビデオ・コーディング(VVC:Versatile Video Coding)、又は任意の他のビデオ圧縮標準)から生じるフレームなどの圧縮された画像、レッド・クリア・ブルー(RCCB:Red Clear Blue)、レッド・クリア(RCCC:Red Clear)又は他のタイプの画像センサに由来するものなどの未加工の画像、が、入力として使用され得る。一部の実例では、異なるフォーマット及び/又は分解が、推論のため(たとえば、自律型車両1000におけるマシン学習モデル104の配備中)よりもマシン学習モデル104のトレーニングのために使用され得る。
画像データ・プリプロセッサは、1個又は複数の画像を表す画像データ(又は他のデータ表現、たとえば、LIDAR深度マップ)を使用し、多次元の配列/マトリックス(別法として、テンソル、又は、一部の実例では、より具体的には入力テンソルと称される)の形でメモリにセンサ・データをロードすることができる。配列サイズは、WxHxCとして計算する及び/又は表すことができ、そこで、Wは、画素単位での画像幅を表し、Hは、画素単位での高さを表し、そして、Cは、カラー・チャネルの数を表す。一般性を失うことなく、入力画像構成要素の他のタイプ及び順序もまた、可能である。追加で、バッチ・サイズBは、バッチ処理が使用されるときに、次元(たとえば、付加的第4の次元)として使用され得る。バッチ処理は、トレーニングのために及び/又は推論のために使用され得る。したがって、入力テンソルは、次元WxHxCxBの配列を表し得る。画像データ・プリプロセッサを実装するために使用される特定のハードウェア及びソフトウェアに応じて決まり得る、次元の任意の順序付けが、可能になり得る。この順序付けは、マシン学習モデル104のトレーニング及び/又は推論性能を最大にするために選択され得る。
一部の実施例では、前処理画像パイプラインが、センサ(たとえば、カメラ)によって獲得された及び画像データ102に含まれた未加工画像を処理して、マシン学習モデル104の入力層(たとえば、図1Cの特徴エクストラクタ層142)への入力画像を表し得る前処理された画像データを生み出すために、画像データ・プリプロセッサによって使用され得る。適切な前処理画像パイプラインの一実例は、センサからの未加工RCCBバイエル(たとえば、1チャネル)タイプの画像を使用し、その画像を固定精度(たとえば、チャネルごとに16ビット)フォーマットで記憶されたRCB(たとえば、3チャネル)平面画像に変換することができる。前処理画像パイプラインは、デコンパンディング(decompanding)、雑音低減、デモザイク処理、白色バランシング、ヒストグラム計算、及び/又は適応グローバル・トーン・マッピング(たとえば、その順序での、又は代替順序での)を含み得る。
雑音低減は、画像データ・プリプロセッサによって用いられるが、それは、バイエル・ドメインにおけるバイラテラル雑音除去を含み得る。デモザイク処理が、画像データ・プリプロセッサによって用いられる場合、それは、バイリニア補間を含み得る。ヒストグラム計算が、画像データ・プリプロセッサによって用いられる場合、それは、Cチャネルのヒストグラムを計算することを含み得、一部の実例においてデコンパンディング又は雑音低減と統合され得る。適応グローバル・トーン・マッピングが、画像データ・プリプロセッサによって用いられる場合、それは、適応ガンマ・ログ変換を実行することを含み得る。これは、ヒストグラムを計算すること、中間色レベルを得ること、及び/又は中間色レベルを有する最大輝度を推定することを含み得る。
マシン学習モデル104は、出力106を生成するための入力として画像データ102によって表されるような1個又は複数の画像又は他のデータ表現(たとえば、LIDARデータ、RADARデータなど)を使用し得る。非限定的実例では、マシン学習モデル104は、以下のうちの1個又は複数を取得し得る:画素距離108、角度110、線クラス112、及び/又はクラスタ・ベクトル114を入力として生成するために画像データ102によって表される(たとえば、前処理後)画像。実例は、ニューラル・ネットワーク及び、特に、マシン学習モデル104としてのCNNの使用に関して本明細書で説明されているが、これは限定を意図していない。たとえば、そして限定することなく、本明細書に記載のマシン学習モデル104は、任意のタイプのマシン学習モデル、たとえば、線形回帰、ロジスティック回帰、決定木、サポート・ベクトル・マシン(SVM:support vector machine)、ナイーブ・ベイズ、k近傍法(Knn:k-nearest neighbor)、K平均クラスタリング、ランダム・フォレスト、次元縮小アルゴリズム、勾配ブースティング・アルゴリズム、ニューラル・ネットワーク(たとえば、オートエンコーダ、畳み込み、再発、パーセプトロン、長/短期メモリ(LSTM:Long/Short Term Memory)、ホップフィールド、ボルツマン、ディープ・ビリーフ、デコンボリューション、敵対的生成、液体状態マシンなど)を使用するマシン学習モデル、及び/又は他のタイプのマシン学習モデル、を含み得る。
マシン学習モデル104の出力は、画素距離108、角度110、線クラス112、クラスタ・ベクトル114、及び/又は他の出力タイプを含み得る。マシン学習モデル104の出力を復号するために、いくつかの非限定的実例において、GPU加速が、実装され得る。たとえば、並列処理プラットフォーム(たとえば、NVIDIAのCUDA)が、出力を復号する-それによって、ランタイムを減らす-ためにいくつかの計算カーネルを介してアルゴリズムを並列処理するために実装され得る。
画素距離108は、画像内の各画素について、画像に示されるように線(たとえば、線画素)を組み込んだ最も近い画素までの画像空間における距離を含み得る。画素距離108は、単一次元(1D)での距離及び/又は2次元(2D)での距離を含み得る。たとえば、1D距離について、画素距離108は、右方向の最も近い線画素(d_R)及び/又は左方向の最も近い線画素(d_L)までの画素の行に沿った距離を含み得る(たとえば、図2Aに示すように)。そのようなものとして、マシン学習モデル104は、画素の行に沿って左の及び画素の行に沿って右の最も近い線画素までの距離の出力を、出力分解における各画素について、計算することができる。別の実例として、2D距離について、画素距離108は、画像の画素の行に沿った(d_X)及び画像の線画素の列に沿った(d_Y)最も近い線画素までの距離を含み得る(たとえば、図2Bに示すように)。そのようなものとして、マシン学習モデル104は、画素の列に沿った最も近い線画素までの距離及び画素の行に沿った距離の出力を、出力分解における各画素について、計算することができ、そこで、列及び行に沿った距離は、画素と線画素との間の距離の大きさを判定するために使用され得る。
マシン学習モデル104の処理の結果として、マシン学習モデル104によって計算された画素距離108は、入力画像の空間分解より低い空間分解出力に対応し得る。しかしながら、本明細書に記載のように、本開示の利点は、画素距離108を使用するマシン学習モデル104のより高い入力分解からの空間情報の保存である。たとえば、マシン学習モデル104の出力からの画素位置は、復号116中に入力分解における画素位置に変換され得る。非限定的実例として、出力が、4倍だけ低い相対空間分解に対応する(たとえば、出力が、入力分解の4分の1である分解に対応する)場合、その出力における各[y,x]画素位置は、4を乗じられ得る(たとえば、その出力における[1,1]は、入力画像に対応する分解において[4,4]になり得る)。そのようなものとして、出力における画素位置に対応する画素距離108は、入力の分解における画素位置に対応するように判定され得る-それによって、入力分解からの空間情報を保存し得る。
1D復号の一実例として、図2Aは、本開示のいくつかの実施例による、線予測を復号するための投票方法の一実例の図を含む。1D実例における復号116中に、マシン学習モデル104によって出力された画素距離108の予測は、先ず、入力分解における画素位置に変換し戻され得る。たとえば、テーブル202は、入力分解における画素の行に沿った画素距離108を表し得る。そのようなものとして、出力は、図2Aの実例におけるさらに小さい(たとえば、4倍だけ)分解に対応し得るので、画素距離108は単に、入力分解に関する画素の行内の4画素ごと(たとえば、0、4、8、12、16などにおける)についてマシン学習モデル104によって出力され得る。そのようなものとして、画素の行に沿った右側(d_R)及び左側(d_L)の最も近い線画素までの画素距離108が、入力分解における適切な画素位置と関連付けられた後は、投票方法は、復号116の一部として実行され得る。たとえば、各画素距離108は、テーブル204に示されているように、線画素の位置への投票をキャストすることができる。投票は、最終投票値(すべて投票)が計算され得るように、左投票(voting_L)及び右投票(voting_R)の組合せでもよい。一実例として、左投票に関して、テーブル202からの行内の画素4における0の画素距離108は、テーブル204の出力分解における画素4への投票をキャストし得、テーブル202からの行内の画素8における4の画素距離108は、出力分解204における画素4への別の投票をキャストし得る、など。同様に、右投票について、テーブル202からの行内の画素0における4の画素距離108は、テーブル204の出力分解における画素4への投票をキャストし得、テーブル202からの行内の画素8における5の画素距離108は、テーブル204の出力分解における画素13への投票をキャストし得る、など。テーブル204の行内の各画素への左投票及び右投票は、次いで、最終投票値を決定するために、集計又は追加され得る。いくつかの実例において、投票の閾値数が、出力分解における画素について計算された後は、画素は、線画素であると判定され得る。いくつかの非限定的実例において、閾値数は、1、2、4、6、又は別の閾値値になり得る。
画素距離108の復号116のプロセスは、画像内の画素の各行について繰り返され得る。そのようなものとして、入力分解における画像内のそれぞれの線画素は、図2Aの投票方法を使用して、判定され得る。図2Aの実例は、4倍のダウンサンプリングを含むが、これは限定を意図していない。一部の実例では、マシン学習モデル104は、本開示の範囲を逸脱することなく、入力分解より低い分解に対応する出力を生み出さないことがある、或いは2、4、5、6の係数、及び/又は別の係数だけ入力分解より低い分解に対応する出力を生み出し得る。加えて、図2Aのテーブル202及び204は、入力分解における画素の行に沿った20個の画素位置(たとえば、0~19)のみを含むが、これは、例示のみを目的としている。したがって、画素の数は、任意の入力分解幅、たとえば、2048、1920、560、及び/又は任意の他の入力分解幅、に対応し得る。さらに、1D画素距離の本明細書に記載の実例が、画素の行に関して説明されているが、これは限定を意図していない。いくつかの実例において、画素の行に加えて、又はそれとは別に、画素の列が、1D画素距離を判定するために使用され得る、及び/又は、エンコードが、少なくとも1個の画素の左及び右方向の代わりに下及び上方向で実行され得る。
2D復号の一実例として、図2Bは、本開示のいくつかの実施例による、線予測を復号するための投票方法の一実例の図を含む。テーブル206は、2D予測のための画素距離108に関するマシン学習モデル104の出力を表し得る。たとえば、前述と類似して、マシン学習モデル104は、4倍だけ入力分解(たとえば、エンコードされた分解)より低い分解の画像空間に対応する予測を出力し得る。そのようなものとして、出力分解における画素位置(たとえば、テーブル206に表されているような)は、復号116中に入力分解における画素位置に変換され得る(たとえば、テーブル208に表されているように)。x(dx)及びy(dy)方向における画素距離108は、入力分解における画素への投票をキャストするために使用され得る。いくつかの実例において、画素距離108はさらに、マイナスのx方向(-dx)及びマイナスのy方向(-dy)を含み得る。そのようなものとして、最も近い線画素が、マイナスの方向においてx軸(たとえば、画像の幅)又はy軸(たとえば、画像の高さ)に沿っている場合、画素距離108の値は、-dx及び/又は-dy出力に対応し得る。たとえば、出力分解におけるテーブル206からの画素位置[0,1]は、復号116中に入力分解における画素位置(0,4)に変換され得る。そのようなものとして、テーブル208において、dx=0及びdy=1の画素距離は、線画素であるとしての画素[0,5]への投票をキャストするために使用され得る。同様に、出力分解におけるテーブル206からの画素位置[1,1]は、復号116中に入力分解における(4,4)の画素位置に変換され得る。そのようなものとして、テーブル208において、dx=0及びdy=0の画素距離が、線画素(たとえば、鍵210からの、線画素自体)であるとしての画素[4,4]への投票をキャストするために使用され得る。本明細書に記載の1D手法と類似して、閾値数の投票が、画素へのキャストであった後は、画素は、線画素であると判定され得る。非限定的実例として、投票の閾値数が1であると仮定すると、画素[2,3]、[0,5]、[5,0]、及び[4,4]は、1個の投票をそれぞれ受信することができ(テーブル206に基づいて)、したがって、線画素であると判定され得る。
2D手法の使用は、任意の向きの車線外側線(たとえば、水平、垂直、任意に角度を付けられたなどの)、並びに任意の車線区分線形状をキャプチャすることを可能にし得る。いくつかの実例において、画素距離108は、ユークリッド座標で表され得るが、他の実例では、極座標が、使用され得る。加えて、いくつかの1D及び/又は2D実施例において、画素への投票は、異なって重み付けされ得る。たとえば、線画素への自己投票は、他の画素からの投票よりも多く重みを付けられ得る。
マシン学習モデル104の別の出力106は、角度110でもよい。角度110は、線画素における線の角度(たとえば、図2Cのテーブル208の線画素の角度212)を表し得る。いくつかの実施例において、マシン学習モデル104は、角度値(たとえば、0~360度)を出力し得る。そのような実施例において、角度110の復号116は、マシン学習モデル104の出力において角度の2進値を読み出すことを含み得る。いくつかの実例において、角度110の値を読み出すのではなくて、360度角度の余弦及び正弦構成要素は、マシン学習モデル104の出力から判定され得る(たとえば、図2Cの角度212Dについて示されているように)。余弦及び正弦構成要素は、次いで、線画素における角度値を判定するために使用され得る。出力分解における各画素は、それが投票をキャストする線画素の角度110を含み得る。たとえば、[0,4]における画素は、[0,5]における画素の角度212Dの少なくとも1個の投票又は値を提供し得る。別の実例として、[4,4]は線画素自体であるので、[4,4]における画素は、画素[4,4]における角度212Cの値への少なくとも1個の投票をもたらし得る。いくつかの実例において、角度の値は、2個以上の投票にわたって異なり得る。そのような実例において、平均化が、平均角度を見つけるために使用され得る、及び/又は、重み付けが、画素角度値のうちのいくつかがより大きな重みを有するように、使用され得る(たとえば、線画素自体は、他の画素からの角度よりも多く重み付けされ得る)。
いくつかの実例において、角度110はさらに、線画素の位置における線の正接値を含み得る。そのような実例において、線のジオメトリのより正確な表現が判定され得るように、マシン学習モデル104は、各線画素における線の正接値を出力するようにトレーニングされ得る。加えて、正接を使用することによって、どの線画素が同じ線に属するかを判定することは、より効果的になり得る(たとえば、第1の線画素が、線は前及び左向きであることを表す正接値を有し、隣接する-又は第1の線画素までの閾値距離内の-第2の線画素が、線は後ろ及び左向きであることを表す正接値を有する場合、第1の線画素及び第2の線画素は、恐らく、同じ線のものではない)。
マシン学習モデル104はさらに、線クラス112を出力し得る。線クラス112は、車線境界線、たとえば、破線、実線、黄色い線、白線、又は境界線、たとえば、幹線道路又は街路の境界の線、に対応し得る。いくつかの実例において、線クラス112は、ポール、文字、路面標識タイプ(たとえば、曲がり角矢印、停止指示など)、横断歩道などを含み得る。他の実例では、たとえば、マシン学習モデル104が、車両又は運転適用において使用されない場合、任意のタイプの線が、マシン学習モデル104によって予測される線クラス112に含まれ得る。本明細書でさらに詳しく説明されるように、マシン学習モデル104が、モデル104が予測するようにトレーニングされた各クラス・タイプの出力(たとえば、信頼度)を生成する必要がないように、線クラス112は、ビット値としてマシン学習モデル104によって出力され得る。結果として、従来の手法が、N個のクラスのN個の予測を出力し得る場合、マシン学習モデル104は、はるかに効率的である及びより少ない計算資源を必要とする、log2(N)予測を出力し得る。マシン学習モデル104は、ビット値として線クラス112を出力し得るが、これは限定を意図されておらず、他の実例において、マシン学習モデル104は、各クラス・タイプの信頼度又は予測を出力する(たとえば、ビット・エンコードが、マシン学習モデル104をトレーニングするために使用されない場合)。任意の実例において、線クラス112は、マシン学習モデル104の出力の値を使用すること及びその値に関連する線クラス112を判定することによって、判定され得る(たとえば、黄色の実線が、線クラス112であり、3の値に関連する場合、マシン学習モデル104が、3と等しいビット値として[0 0 1 1]を出力するとき、システムは、線クラス112が黄色の実線であることを知り得る)。
一部のオプションの実施例(図1A及び5に破線で示されているような)では、クラスタ・ベクトル114(又はクラスタ・ベクトル114のクラスタ)が、マシン学習モデル104によって出力され得る。たとえば、類似の高次元ベクトル(又はクラスタ・ベクトル114)に関連する線画素が、画像内の同じ線に対応すると判定され得るように、マシン学習モデル104は、各画素、又は線画素の高次元ベクトル-又はその値-を予測するようにトレーニングされ得る(本明細書でさらに詳しく説明されるように)。たとえば、本明細書でさらに詳しく説明されるように、dbetweenとdwithinの値は、いつ線画素が画像内の同じ線に対応するかを判定するために使用され得る。マシン学習モデル104によって出力されるクラスタ・ベクトル114のクラスタを取得することと、同じ線に対応する線画素はクラスタリング118と称され得ると判定することとのプロセス(たとえば、図1Aに破線で示されているような、オプションのプロセス)。たとえば、位置(xi,yi)における各画素は、高次元ベクトル、H(xi,yi)、にマップされ得るので、逆写像が、マシン学習モデル104によって出力されたクラスタ化されたセットのクラスタ・ベクトル114から、画像データ102によって表される画像の画像画素に進むように実行され得る。そのようなものとして、高次元空間において単一のベクトル・クラスタのベクトルにマップする画素は、画像空間内の単一の線にマップし得る。
幾何学的フィッティング120が、クラスタリング118の出力に実行され得る(たとえば、線画素が、同じ線に対応すると判定されると)。幾何学的フィッティング120は、完全な線を表す多項式係数を生み出し得る最小二乗ポリフィット手法を含み得る。たとえば、3次ポリフィット(たとえば、4個の係数)が、幾何学的フィッティング120を実行するために使用され得る。しかしながら、これは限定を意図しておらず、他の幾何学的方法の変更形態が、本開示の範囲を逸脱することなく、使用され得る。
そのようなものとして、いくつかの実例において、画素距離108が、画像内の線画素の位置を判定するために使用され得、角度110(及び/又は正接)が、それぞれの線画素に対応する線の向き又はジオメトリを判定するために使用され得、線クラス112が、その線がどのタイプの線かを判定するために使用され得、及び/又は、クラスタ・ベクトル114が、同じ線122に対応する線画素を判定するために使用され得る。この情報は、1個又は複数のカメラ(たとえば、自律マシン、たとえば、車両1000、の、ターン・テーブルにおけるカメラ、ショッピング・センタ内のカメラなど)の視界において線122のレイアウト及び識別を判定するために使用され得る。たとえば、図3を参照すると、図3は、本開示のいくつかの実施例による、マシン学習モデルの予測を使用する画像の線122の再作成の例示的視覚化302である。視覚化302は、道路の線304(たとえば、線304A~304Gなど)(たとえば、車線境界線、境界線など)を含み得、そこで、画素は、マシン学習モデル104の出力から判定されるものとしての画像内の線の位置及び方向の図を提供するためにそれらのベクトル又はジオメトリを有する視覚化302において表されている。たとえば、各矢印は、単位ベクトルとして描かれた予測された線角度を表し得る。加えて、線304は、線クラス112を示すために異なる矢印タイプで示されている(たとえば、線304Aは破線矢印を含む、線304Bは実線矢印を含む、など)。視覚的に表されていないが、矢印のうちのどれが線304のそれぞれに属するかの判定が、クラスタ・ベクトル114及び/又は正接値を使用して、行われ得る。
ここで図1Bを参照すると、図1Bは、本開示のいくつかの実施例による、マシン学習モデルを使用して画像の線を再作成する一実例の図である。図1Bのマシン学習モデル104Aは、プロセス100において使用され得るマシン学習モデル104の1個の実例になり得る。しかしながら、図1Bのマシン学習モデル104Aは、限定を意図されておらず、マシン学習モデル104は、図1Bのマシン学習モデル104Aより他の付加的及び/又は異なるマシン学習モデルを含み得る。マシン学習モデル104Aは、畳み込みニューラル・ネットワーク(CNN)を含み得る又はそのように称され得、したがって、別法として、畳み込みニューラル・ネットワーク104A、畳み込みネットワーク104A、又はCNN104Aと本明細書で称され得る。
CNN104Aは、入力として画像データ102(及び/又は他のセンサ・データ・タイプ)(前処理を有する又は有さない)を使用し得る。たとえば、CNN104Aは、入力として画像データ102-画像124によって表されるような-を使用し得る。画像データ102は、1個又は複数のカメラ(たとえば、図10A~10Cに関して本明細書に記載されているカメラのうちの1個又は複数)によって生成された画像を表し得る。たとえば、画像データ102は、カメラの視界を表し得る。より具体的には、画像データ102は、カメラによって生成された個々の画像を表し得、個々の画像のうちの1個又は複数を表す画像データ102は、CNN104Aの各反復においてCNN104Aに入力され得る。画像データ102に加えて、いくつかの実施例では、センサ・データが、画像データ102に加えて、又は画像データ102の代わりに、CNN104Aに入力され得る。センサ・データは、1個又は複数のセンサ-たとえば、LIDARセンサ、RADARセンサ、マイクロフォン、SONARセンサなど、-によって観測されるものとしての物理環境の遠近図(たとえば、知覚フィールド)を表し得る。
CNN104Aの層のうちの1個又は複数は、入力層を含み得る。入力層は、画像データ102、及び/又はセンサ・データに関連する値を保持し得る。たとえば、画像データ102に関して、入力層は、ボリューム(たとえば、幅、W、高さ、H、及びカラー・チャネル、C(たとえば、RGB)、たとえば、32x32x3)、及び/又はバッチ・サイズ、B、として画像の未加工画素値を表す値を保持し得る。
1個又は複数の層は、畳み込み層を含み得る。画像データ102(及び/又はセンサ・データ)は、CNN104Aの畳み込み層(たとえば、1個若しくは複数の入力層及び/又は他の層タイプの後)に入力され得る。畳み込み層は、入力層(たとえば、その入力層)内のローカル領域に接続されたニューロンの出力を計算することができ、各ニューロンは、それらの重みとそれらが入力ボリュームに接続された小さい領域との間のドット積を計算する。畳み込み層の結果は、適用されたフィルタの数に基づく次元のうちの1個を有する、別のボリュームでもよい(たとえば、フィルタの幅、高さ、及び数、たとえば、12がフィルタの数であった場合、32x32x12)。
層のうちの1個又は複数は、ReLU(rectified linear unit、整流された線形ユニット)層を含み得る。ReLU層は、要素ごとの活性化関数、たとえば、ゼロを閾値とする、たとえば、max(0,x)、を適用し得る。ReLU層の結果としてもたらされたボリュームは、ReLU層の入力のボリュームと同じでもよい。
層のうちの1個又は複数は、プーリング層を含み得る。プーリング層は、プーリング層の入力より小さいボリューム(たとえば、32x32x12入力ボリュームからの16x16x12)をもたらし得る、空間次元(たとえば、高さ及び幅)に沿ったダウンサンプリング動作を実行し得る。一部の実例では、CNN104Aは、プーリング層を含まなくてもよい。そのような実例において、ストライド畳み込み層が、プーリング層の代わりに使用され得る。
層のうちの1個又は複数は、完全に接続された層を含み得る。完全に接続された層内の各ニューロンは、前のボリューム内のそれぞれのニューロンに接続され得る。完全に接続された層は、クラス・スコアを計算し得、結果として生じるボリュームは、1x1xクラスの数でもよい。
入力層、畳み込み層、プーリング層、ReLU層、及び完全に接続された層は、CNN104Aに関して本明細書で論じられているが、これは限定を意図していない。たとえば、付加的層又は代替層、たとえば、正規化層、SoftMax層、及び/又は他の層タイプ、が使用され得る。
CNN104Aの異なる次数及び数の層が、実施例に応じて使用され得る。そのようなものとして、CNN104Aの層の次数及び数は、1個のアーキテクチャに限定されない。加えて、層のうちのいくつか、たとえば、畳み込みストリームの層及び/又は出力層、は、パラメータ(たとえば、重み及び/又はバイアス)を含み得、一方で、他の層、たとえば、ReLU層及びプーリング層、は、含まないことがある。一部の実例では、パラメータは、トレーニング中に学習され得る(たとえば、図5のプロセス500内で)。さらに、層のうちのいくつか、たとえば、畳み込み層、出力層、及びプーリング層、は、付加的ハイパ・パラメータ(たとえば、学習率、ストライド、エポック、カーネル・サイズ、フィルタの数、プーリング層のプーリングのタイプなど)を含み得、その一方で、他の層、たとえば、ReLU層、は、含まないことがある。ReLU、リーキーReLU、シグモイド、双曲線正接(tanh)、指数関数線形ユニット(ELU:exponential linear unit)などを含むが、これらに限定されない、様々な活性化関数が、使用され得る。パラメータ、ハイパ・パラメータ、及び/又は活性化関数は、制限されるものではなく、実施例に応じて異なり得る。
CNN104Aの出力108は、復号116、(オプションの)クラスタリング118、及び/又は幾何学的フィッティング120を受けて、視覚化126において表され得る線122を生成することができる。線122は、画像124からの車線境界線及び/又は道路境界線を表し得る。線122、及び対応する情報(たとえば、線クラス112、角度110など)は、物理環境を介する(たとえば、画像124の運転している表面を介する)車両1000の制御又は制御の決定を支援するために、自律運転ソフトウェア・スタックの1個又は複数の層(たとえば、知覚層、世界モデル・マネージャ、プランニング層、制御層など)によって使用され得る。
ここで図4を参照すると、本明細書に記載の方法400の各ブロックは、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組合せを使用して実行され得る計算プロセスを含む。たとえば、様々な機能が、メモリに記憶された命令を実行するプロセッサによって実施され得る。方法400はまた、コンピュータ記憶媒体に記憶されたコンピュータ使用可能な命令として実施され得る。方法400は、少し例を挙げると、独立型アプリケーション、サービス又はホスト型サービス(独立型の若しくは別のホスト型サービスと組み合わせた)、或いは別の製品へのプラグインによって、提供され得る。加えて、方法400は、図1のプロセス100に関して、例として、説明されている。しかしながら、方法400は、追加で又は別法として、本明細書に記載されているものを含むが、これに限定されない、任意の1個のシステム、又はシステムの任意の組合せによって実行され得る。
図4は、本開示のいくつかの実施例による、マシン学習モデルを使用して画像内の線を予測するための方法を示す流れ図である。方法400は、ブロックB402において、画像を表す画像データを受信することを含む。たとえば、画像センサによってキャプチャされた画像を表す、画像データ102が、受信され得る。いくつかの実例において、センサ・データが、画像データ102に加えて、又はその代わりに、キャプチャ及び/又は受信され得る。
方法400は、ブロックB404において、第1の空間分解における画像データをマシン学習モデルに適用することを含む。たとえば、画像データ102は、第1の空間分解においてマシン学習モデル104に適用され得る。
方法400は、ブロックB406において、第1の空間分解より小さい第2の空間分解に対応する複数の画素のそれぞれの画素距離を計算することを含む。たとえば、画素距離108が、第2の空間分解に対応する各画素について、マシン学習モデル104によって、計算され得る(たとえば、より高い分解入力を使用して低分解予測を出力するようにマシン学習モデル104がトレーニングされた結果として)。画素距離108は、第1の空間分解における画素と画像内の線に対応する第1の空間分解における最も近い線画素との間の距離を表し得る。結果として、画素距離108が、第2の空間分解に対応するように出力されるけれども、画素距離108の値は、空間情報がマシン学習モデル104による処理を介して保存されるように、第1の空間分解における値に対応する。
方法400は、ブロックB408において、画素の第2の画素座標を第1の空間分解における第1の画素座標に変換することを含む。たとえば、出力分解における画素の座標は、入力分解におけるそれらの座標に変換し戻され得る。
方法400は、ブロックb410において、画素距離を使用して画像内の線画素の位置を判定することを含む。たとえば、画像内の線122の線画素の位置が、入力分解の座標における画素距離を使用して判定され得る。
画像内の線を予測するようにマシン学習モデルをトレーニングすること
ここで図5を参照すると、図5は、本開示のいくつかの実施例による、線予測のためにマシン学習モデルをトレーニングするための例示的プロセス500を示すデータ流れ図である。グラウンド・トゥルース・データ502は、注釈データ、たとえば、ラベル、を含み得る。グラウンド・トゥルース・データ502は、手動ラベリング及び/又は自動ラベリングによって、生成され得る。たとえば、グラウンド・トゥルース・データ502のために使用されるラベル又は他の注釈データは、合成的に製造すること(たとえば、コンピュータ・モデル又はレンダリングから生成すること)、現実製造すること(たとえば、現実世界データから設計及び製造すること)、マシンにより自動化すること(たとえば、特徴分析を使用して、データから特徴を抽出し、次いで、ラベルを生成することを学習すること)、人が注釈を付けること(たとえば、ラベラ、又は注釈エキスパート、が、ラベルの位置を定義する)、及び/又はその組合せ(たとえば、ポリライン点に人が注釈を付け、ラスタライザがポリライン点から完全なポリゴンを生成する)が可能である。一部の実例では、各入力画像について、又は各入力センサ・データ表現について、グラウンド・トゥルース・データ502としての対応するラベル又は注釈が存在し得る。
一実例として、及び図6に関して、図6は、本開示のいくつかの実施例による、線予測のためにマシン学習モデルをトレーニングするためのグラウンド・トゥルース注釈の例示的視覚化602である。グラウンド・トゥルース・データ502は、ラベル604又は注釈604、たとえば、視覚化602に示されているもの(たとえば、ラベル604A~604D)、を含み得る。たとえば、様々なタイプのラベル又は注釈(鍵606によって示されているような)が、視覚化602内の画像(たとえば、トレーニング画像データ510によって表された)との関連付けのためのグラウンド・トゥルース・データ502としてシーン内の物体のクラス-たとえば、路面標識、交差点、横断歩道、道路境界線、ポール及び標識、及び/又は他の物体-について生成され得る。さらなる実施例において、異なるラベル及び注釈が、物体のサブクラスについて生成され得る。たとえば、路面標識は、実線の車線と破線の車線、単一の車線境界線と二重の車線境界線、曲がり角矢印と真っすぐな矢印との間で、及び/又は色(たとえば、白色及び黄色の車線境界線)によって、さらに区別され得、同様に、非限定的実例では、ポール及び標識は、交通標識、道路標識、ライト・ポールなどの間で、区別され得る。視覚化602は、例示のみを目的としており、限定を意図していない。たとえば、プロセス500は、運転適用に加えて、又はその代わりに、任意の適用のために使用され得る。
エンコード504は、画素距離108、角度110、線クラス112、及び/又はクラスタ・ベクトル114を予測するようにマシン学習モデル104をトレーニングするためのエンコードされたグラウンド・トゥルース・データ506を生成するために、グラウンド・トゥルース・データ502で実行され得る。グラウンド・トゥルース・データ502をエンコードしてエンコードされたグラウンド・トゥルース・データ506を生成するために、いくつかの非限定的実例において、GPU加速が、実施され得る。たとえば、並列処理プラットフォーム(たとえば、NVIDIAのCUDA)が、エンコードされたグラウンド・トゥルース・データ506を生成する-それによって、エンコード504の処理時間を減らす-ためにいくつかの計算カーネルを介してアルゴリズムを並列処理するために実装され得る。
画素距離108は、本明細書に記載のように、1D又は2D実施例においてエンコードされ得る。たとえば、グラウンド・トゥルース・データ502は、最も近い線画素(たとえば、トレーニング画像データ510の線に対応するラベル又は注釈を使用して判定されるものとしての)までの、各画素からの、画素距離108を判定するために使用され得る。1D実施例について、画像の各行の画素内の各画素について、その行の画素に沿った左側の最も近い線画素までの距離(d_L)及び右側の最も近い線画素までの距離(d_R)が、グラウンド・トゥルース・データ502からエンコードされ得る。たとえば、図7Aに関して、図7Aは、本開示のいくつかの実施例による、マシン学習モデルの入力の空間情報を保存するためのエンコード方法の一実例の図である。画像702において、4個の線704が存在し得る。図7Aは、画素の行706(たとえば、幅において19画素を含み得る)に沿った4個の線704の画素距離108の判定及びエンコードの一実例になり得る。このプロセスは、画像内の画素の各行について繰り返され得、図7Aは、画素の単一行706の一実例を提供し得る。画素の行706において、4個の線のうちの2個は、位置x=4及びx=13において交差し得る。そのようなものとして、テーブル708内のd_L及びd_R値は、マシン学習モデル104をトレーニングするための入力分解における画素距離108のエンコードされた値を表し得る。画素の行内の各画素の画素距離108をエンコードすることによって、入力分解における線画素の位置は、実際にはダウンサンプリングに等しい、低減された分解を有する画像ドメインにおいても保存され得る。プロセス100に関して本明細書に記載されている非限定的実例に類似して、図7Aに関する低分解は、4倍のダウンサンプリングと同等のものを含み得る。結果として、入力分解における(たとえば、テーブル708における)4番目ごとの値は、出力分解において(たとえば、テーブル710において)保存され得る。結果として、出力分解からの画素距離108は、少なくとも図2Aに関して本明細書に記載のように、入力分解に変換し戻され得、それにより、出力の低分解ドメインにもかかわらず入力分解の空間情報を保存し得る。相対的分解は、図7Aに関して4倍低くなり得るので、それらの画素及びそれらの関連する画素距離108が、常に、マシン学習モデル104の出力分解において出力される値になり得るとき、4番目ごとの画素(たとえば、画素0、4、8、12、及び16)は、アンカー・ポイントと称され得る。線画素が、現在の画素の左又は右の行内に存在しない場合、無限、又はnullの値が、マシン学習モデル104をトレーニングするための画素距離108の値としてエンコードされ得る。
2D実施例については、画像の各画素について、x方向(たとえば、画像の幅に沿った)及びy方向(たとえば、画像の高さに沿った)における最も近い線画素までの距離が、グラウンド・トゥルース・データ502からの画素距離108としてエンコードされ得る。図7Aと同様に、画素のあらゆる行の4番目ごとの画素が、出力分解において保存され得る。そのようなものとして、ダウンサンプリング後の残りの画素は、アンカー・ポイントと本明細書で称され得る。
グラウンド・トゥルース・データ502はさらに、画像のそれぞれの画素への角度110をエンコードするために使用され得、そこで、各画素の角度110は、最も近い線画素の角度に対応する。たとえば、図7Bに関して、図7Bは、本開示のいくつかの実施例による、線角度を予測するようにマシン学習モデルをトレーニングするためのエンコード方法の一実例の図を含む。線712A及び712Bは、グラウンド・トゥルース・データ502からの画像内の線の注釈(トレーニング画像データ510によって表される)を表し得る。たとえば、道路の画像に関して、線712A及び712Bは、車線境界線を表し得る。仮想線714は、エンコードするための角度110を判定するために使用される仮想線でもよい。たとえば、画素の行内の画素は、線712A及び/又は712Bに関する線画素の角度、θ、を判定するためにスキャンされ得る。角度110は、仮想線714(たとえば、水平に伸びる)に対して0~360度の間の角度になり得る。画素ごとの角度情報は、画素の各行に沿ったすべての線画素についてエンコードされ得る。画素角度変動への画素は、角度平滑化技法、たとえば、本明細書に記載のもの、を介して克服され得る。一部の実例では、0~360度の間の値をエンコードするのではなく、360度角度の余弦及び正弦構成要素が、代わりに、エンコードされ得る。
いくつかの実施例において、正接は、各線画素の正接に関して各画素についてエンコードされ得る。たとえば、各線画素の正接値は、その線画素への投票(自己投票を含む)をキャストする各画素にエンコードされ得る。正接値は、どの線画素が画像内の同じ線に属するかの判定を支援するために使用され得る、各線画素における線のジオメトリ又は方向を判定するために使用され得る。
グラウンド・トゥルース・データ502は、ラベル・クラス112をそれぞれの画素(たとえば、画素がそれへの投票をキャストする線画素に対応する)にエンコードするために使用され得る。ラベル・クラス112は、異なる値、たとえば、実線の0、破線の1、道路境界線の2、ポストの3、標識の4、路面標識の5など、によってそれぞれ示され得る。そのようなものとして、グラウンド・トゥルース・データ502は、画像内の各線のラベル・クラス112を示し得る(たとえば、注釈の生成より前に、クラス・タイプ・アノテータ又はラベラが選択又は適用され得る)。そのようなものとして、図6に関して、それぞれの異なるラベル・クラス112は、トレーニングのためのグラウンド・トゥルース・データ502として注釈を付けられ得る。本明細書に記載のように、N個の異なるラベル・クラスに関する意味論的情報が、log2(N)出力ラベル・クラスを使用してエンコードされ得るように、ビット・エンコード技法が、ラベル・クラス112をエンコードするため使用され得る。log2(N)出力ラベル・クラスのみを使用することによって、マシン学習モデル104は、より効率的になり得、それにより、ランタイムを低減すること並びに使用される計算資源を減らすことができる。一実例として、N=16分類問題について、ビット・エンコードを使用して、5のラベル・クラス112(たとえば、路面標識)は、4個のビット・シーケンス[0101]としてエンコードされ得、7のラベル・クラスは、4個のビット・シーケンス[0111]としてエンコードされ得る、など。実施例及びラベル・クラス112の数に応じて、マシン学習モデル104がトレーニングされるビットの数は、変化し得る。たとえば、2個のみのラベル・クラスが存在する場合には、1個のビットのみが存在し得、3個のクラスが存在する場合には、2個のビットが存在し得、16個のラベル・クラスが存在する場合には、4個のビットが存在し得る、など。
本明細書に記載のプロセスの結果として、線画素の精密な位置が、線の角度110(及び/又は方向)、及び線画素が属するラベル・クラス112に加えて、マシン学習モデル104を使用して判定され得る。線122の完全なジオメトリ(たとえば、ドットを接続するための)を判定するために、クラスタリングに基づく高次元の埋め込みアルゴリズムが、使用され得る。
たとえば、座標(xi,yi)における画素を所与として、マシン学習モデル104は、この高次元ベクトルが高次元空間内の他のベクトルから分離可能である方法で、この画素を高次元ベクトル、H(xi,yi)、にマップするようにトレーニングされ得る。空間の次元性は、任意の整数値、D、を有し得、そこで、DはN未満であり、Nは出力チャネルの総数を表し、いくつかの実施例では、高次元空間における次元の数は、選択することができる。非限定的実例として、高次元空間における次元は、D=4となるように、4になるように選択され得る。D=4のとき、H(xi,yi)は、4個の要素を含み得、元の画素(xi,yi)とH(xi,yi)の要素に対応する4個のチャネル出力との間のマッピングが、トレーニング・データ(たとえば、グラウンド・トゥルース・データ502及びトレーニング画像データ510)を介してマシン学習モデル104によって(たとえば、クラスタ・ベクトル114として)直接学習され得る。
画像内のすべての画素について(たとえば、各(xi,yi)位置にある各画素についてこのプロセスを繰り返すことによって、マシン学習モデル104の出力において、分離可能なD次元のベクトルの集合体が計算され得る(たとえば、クラスタ・ベクトル114として)。D=4の実例を続けると、H(xi,yi)のある特定のサブセットは、クラスタ・ベクトル114のクラスタを形成するのに十分に互いに近く、その一方で、それらのベクトルのうちの他のベクトルは、同じクラスタの一部と考えられない程度に十分に遠く離れ得る(及び、恐らくは、代わりに、クラスタ・ベクトル114の異なるクラスタに属する)ことが起こり得る。そのため、マシン学習モデル104は、画素をD次元のクラスタ・ベクトル114にマップするためにだけではなく、これらのクラスタ・ベクトル114のうちのどれがクラスタ・ベクトル114のうちの他とクラスタを形成するか及びいくつの異なるクラスタが存在するかを判定するために、トレーニングされ得る。D次元の空間内のクラスタ・ベクトル114のクラスタは、現実世界における(たとえば、世界空間における)完全な線に対応し得るので、これは、意味論的に、重要になり得る。同様に、クラスタ・ベクトル114のクラスタの総数は、任意の時間におけるカメラ及び/又はセンサの視界内の環境内の線の総数に対応し得る。
たとえば、クラスタ・ベクトル114のクラスタを予測するためにマシン学習モデル104をトレーニングするために、クラスタ・データは、トレーニング画像データ510に関するグラウンド・トゥルース・データ502としてエンコードされ得る。そのような一実例において、トレーニング画像内の各線は、クラスタとしてラベルを付けられ得る(たとえば、ラベル又は注釈が、トレーニング画像内の各線のトレーニング画像に関して適用され得る)。マシン学習モデル104は、次いで、互いに近い高次元クラスタ・ベクトル114(たとえば、閾値化手法を使用する)を単一のクラスタのメンバとして取り扱うようにトレーニングされ得、互いに距離を置かれた高次元クラスタ・ベクトル114を異なるクラスタのメンバとして取り扱うようにトレーニングされ得る。数学用語において、及び非限定的実例として、マシン学習モデル104は、クラスタ内の分散、d
within、を最小化するように及びクラスタ間の分散、d
between、を最大化するようにトレーニングされ得る。異なるクラスタの数の予測もまた、マシン学習モデル104によってトレーニング中に学習され、各クラスタは、異なる線端を表し得る。クラスタ・ベクトル114のクラスタの出力に関して、マシン学習モデル104は、1個又は複数の損失関数508、たとえば、以下の式(1)及び(2)の関数、を使用して、本明細書に記載のように、Dチャネルを出力するようにトレーニングされ得る:
そこで、L
withinは、クラスタ内の損失関数508を示し、L
betweenは、クラスタ間の損失関数508を示し、Kは、グラウンド・トゥルース・データ502内のクラス・インスタンスの数であり、c
i,i=1,2,3,・・・は、クラスタIDである。一部の実施例では、最終損失関数508は、L
within及びL
betweenの線形結合になり得る。全損失は、高次元クラスタ・ベクトル114が同じクラスタ又は異なるクラスタに属するかどうかを判定するために、閾値と比較され得る。
図8に関して、図8は、本開示のいくつかの実施例による、線クラスタを予測するようにマシン学習モデルをトレーニングするためのエンコード方法の実例の図である。本明細書では、dbetweenは、クラスタ内の分散に対応し得る。たとえば、図8に表されているように、異なるクラスタ・ベクトル114は、状態dbetween>4(dwithin)が満たされている限り、分離可能になり得る。たとえば、クラスタ・ベクトル114のうちの2個、H(xi,yi)及びH(xj、yj)、を見るとき、既存のクラスタがない場合、ベクトルH(xi,yi)は、第1のクラスタとして登録され得る。別法として、既存のクラスタがある場合、それらの2個のクラスタ・ベクトル114の間の距離(たとえば、ユークリッド距離)が、計算され得、距離値は、2(dwithin)と比較され得る。その値が2(dwithin)未満である場合、次いで、H(xi,yi)は、既存のクラスタに追加され得、そして、その値が2(dwithin)を超える場合、次いで、H(xi,yi)は、新しいクラスタとして登録され得る。このプロセスは、各クラスタ・ベクトル114について繰り返され得る。
一部の実施例では、クラスタリングを使用する高次元埋め込みアルゴリズムが、dwithinのカーネル半径を使用する平均シフト・クラスタリングを実行することによって、実行され得る。たとえば、任意の所与のクラスタ・ベクトル114、H(xi,yi)、から、平均シフト演算が、クラスタ・ベクトル114が集束するまで、実行され得る。収束されたクラスタは、次いで、既存のクラスタ中心と(又は各既存のクラスタの中心と)比較され得る。既存のクラスタがない場合、収束されたベクトルは、クラスタとして登録され得る。既存のクラスタがある場合、それらの2個のベクトル間の距離(たとえば、ユークリッド距離)が計算され得、2(dwithin)未満の場合、クラスタ・ベクトル114は、同じクラスタに属するものとして登録され得る。別法として、収束されたクラスタは、新しいクラスタとして登録され得る。このプロセスは、それぞれのクラスタ・ベクトル114について繰り返され得る。いくつかの実例において、閾値化が、ハイパ・パラメータ最適化に基づいて実行され得る。
損失関数508は、グラウンド・トゥルース・データ502及び/又はエンコードされたグラウンド・トゥルース・データ506に関するマシン学習モデル104の出力における損失(たとえば、エラー)(たとえば、グラウンド・トゥルース・データに対応するラベル又は注釈と比べたマシン学習モデル104の予測間のエラー)を測定するために使用され得る。たとえば、勾配降下に基づく損失関数、2値クロス・エントロピ損失関数、平均2乗エラー(L2:mean squared error)損失関数、L1損失関数、及び/又は他の損失関数タイプが、損失関数508として使用され得る。一部の実施例では、2個以上の異なる損失関数が、使用され得る。たとえば、1個又は複数の損失関数が、2個以上の出力が存在する、マシン学習モデル104の各タイプの出力について使用され得、或いは、2個以上の損失関数が、単一の出力タイプについて使用され得る。2個以上の損失関数が、単一の出力タイプ(たとえば、高次元埋め込みアルゴリズム)のために使用される場合、損失関数は、重み付けされた損失関数を生成するために、互いに関して重み付けされ得る。バックワード・パス計算が、プロセス500において示されるように、トレーニング・パラメータ(たとえば、重み、バイアスなど)に関する損失関数の勾配を再帰的に計算するために実行され得る。いくつかの実例において、マシン学習モデル104の重み及びバイアスが、これらの勾配を計算するために使用され得る。
ここで図9を参照すると、本明細書に記載の、方法900の各ブロックは、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組合せを使用して実行され得る計算プロセスを含む。たとえば、様々な関数が、メモリに記憶された命令を実行するプロセッサによって、実行され得る。方法900はまた、コンピュータ記憶媒体に記憶された、コンピュータが使用可能な命令として、実施され得る。方法900は、いくつか例を挙げると、独立型アプリケーション、サービス又はホスト型サービス(独立型の又は別のホスト型サービスと組み合わせた)、或いは別の製品へのプラグインによって提供され得る。加えて、方法900は、一例として、図5のプロセス500に関して説明されている。しかしながら、方法900は、本明細書に記載されたものを含むが、これらに限定されない、任意の1個のシステム、又はシステムの任意の組合せによって、追加で又は別法として実行され得る。
図9は、本開示のいくつかの実施例による、画像内の線を予測するようにマシン学習モデルをトレーニングするための方法を示す流れ図である。方法900は、ブロックB902において、画像を表す画像データを受信することを含む。たとえば、トレーニング画像データ510が、受信され得、そこで、トレーニング画像データ510は、画像を表し得る。
方法900は、ブロックB904において、画像に関連するラベル及び対応するラベル・クラスを表す注釈データを受信することを含む。たとえば、画像内の線の注釈及び/又はラベル及びラベル・クラス112に対応する、グラウンド・トゥルース・データ502が、受信され得る。
方法900は、ブロックB906において、それらのラベルのうちの1ラベルに関連する最も近い線画素までの画素距離を判定することを含む。たとえば、画像内の各画素について、画素と最も近い線画素との間の距離が、判定され得る。一部の実例では、これは、その画素の行の画素に沿った左側の及び/又は右側の距離を含み得る。他の実例では、これは、画素と線画素との間の行に沿った距離及び列に沿った距離(たとえば、大きさを判定するための)を含み得る。
方法900は、ブロックB908において、ラベルに関連する画素距離及びラベル・クラスをその画素にエンコードしてグラウンド・トゥルース・データを生成することを含む。たとえば、各画素に関連する画素距離108及びラベル・クラスは、エンコードされたグラウンド・トゥルース・データ506として画素に、エンコード504の間に、エンコードされ得る。画素距離及びラベル・クラスに加えて、本明細書に記載されているような、クラス、角度、距離情報、オプションのクラスタリング情報、及び/又は他の情報が、画素にエンコードされ得る。
方法900は、ブロックB910において、第1のグラウンド・トゥルース・データ及び第2のグラウンド・トゥルース・データを使用してニューラル・ネットワークをトレーニングすることを含む。たとえば、エンコードされたグラウンド・トゥルース・データ506は、マシン学習モデル104をトレーニングするために使用され得、そこで、一部の実例において、マシン学習モデル104は、ニューラル・ネットワーク(たとえば、CNN)を含み得る。
例示的自律型車両
図10Aは、本開示のいくつかの実施例による、例示的自律型車両1000の図である。自律型車両1000(或いは本明細書で「車両1000」と称される)は、旅客車両、たとえば、乗用車、トラック、バス、ファースト・レスポンダ車両、シャトル、電気又は原動機付自転車、オートバイ、消防車、警察車両、救急車、ボート、建設車両、潜水艦、ドローン、及び/又は別のタイプの車両(たとえば、無人の及び/又は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、及びこの規格の前の及び未来のバージョン)によって定義される、自動化レベルに関して記述される。移動車1000は、自律運転レベルのレベル3~レベル5のうちの1個又は複数による機能の能力を有し得る。たとえば、移動車1000は、実施例に応じて、条件付き自動化(レベル3)、高度自動化(レベル4)、及び/又は完全自動化(レベル5)の能力を有し得る。
移動車1000は、移動車のシャシ、車体、車輪(たとえば、2、4、6、8、18など)、タイヤ、車軸、及び他の構成要素などの構成要素を含み得る。移動車1000は、内部燃焼エンジン、ハイブリッド動力装置、完全な電気式エンジン、及び/又は別の推進システム・タイプなど、推進システム1050を含み得る。推進システム1050は、移動車1000の推進力を有効にするために、トランスミッションを含み得る、移動車1000のドライブ・トレインに接続され得る。推進システム1050は、スロットル/加速装置1052からの信号の受信に応答して制御され得る。
ハンドルを含み得る、ステアリング・システム1054は、推進システム1050が動作しているときに(たとえば、移動車が移動中のときに)移動車1000のかじを取る(たとえば、所望の進路又はルートに沿って)ために使用され得る。ステアリング・システム1054は、ステアリング・アクチュエータ1056から信号を受信することができる。ハンドルは、完全自動化(レベル5)機能のオプションでもよい。
ブレーキ・センサ・システム1046は、ブレーキ・アクチュエータ1048及び/又はブレーキ・センサからの信号の受信に応答して移動車ブレーキを動作させるために使用され得る。
1個又は複数のシステム・オン・チップ(SoC:system on Chip)1004(図10C)及び/又はGPUを含み得る、コントローラ1036は、移動車1000の1個若しくは複数の構成要素及び/又はシステムに信号(たとえば、コマンドの表現)を提供することができる。たとえば、コントローラは、1個又は複数のブレーキ・アクチュエータ1048を介して移動車ブレーキを動作させて、1個又は複数のステアリング・アクチュエータ1056を介してステアリング・システム1054を動作させて、1個又は複数のスロットル/加速装置1052を介して推進システム1050を動作させるために、信号を送ることができる。コントローラ1036は、センサ信号を処理する、並びに律的運転を可能にするために及び/又は運転者の移動車1000の運転を支援するために動作コマンド(たとえば、コマンドを表す信号)を出力する、1個又は複数の搭載された(たとえば、統合された)計算デバイス(たとえば、スーパーコンピュータ)を含み得る。コントローラ1036は、自律運転機能のための第1のコントローラ1036、機能的安全性機能のための第2のコントローラ1036、人工知能機能(たとえば、コンピュータ・ビジョン)のための第3のコントローラ1036、インフォテインメント機能のための第4のコントローラ1036、緊急状態における冗長性のための第5のコントローラ1036、及び/又は他のコントローラを含み得る。いくつかの実例では、単一のコントローラ1036が、前述の機能のうちの2個以上を処理することができ、2個以上のコントローラ1036が、単一の機能、及び/又はその任意の組合せを処理することができる。
コントローラ1036は、1個又は複数のセンサから受信したセンサ・データ(たとえば、センサ入力)に応答して移動車1000の1個又は複数の構成要素及び/又はシステムを制御するための信号を提供することができる。センサ・データは、たとえば、そして制限なしに、全地球的航法衛星システム・センサ1058(たとえば、グローバル・ポジショニング・システム・センサ)、RADARセンサ1060、超音波センサ1062、LIDARセンサ1064、慣性計測装置(IMU:inertial measurement unit)センサ1066(たとえば、加速度計、ジャイロスコープ、磁気コンパス、磁力計など)、マイクロフォン1096、ステレオ・カメラ1068、ワイドビュー・カメラ1070(たとえば、魚眼カメラ)、赤外線カメラ1072、サラウンド・カメラ1074(たとえば、360度カメラ)、長距離及び/又は中距離カメラ1098、スピード・センサ1044(たとえば、移動車1000のスピードを測定するための)、振動センサ1042、ステアリング・センサ1040、ブレーキ・センサ(たとえば、ブレーキ・センサ・システム1046の一部としての)、及び/又は他のセンサ・タイプから受信され得る。
コントローラ1036のうちの1個又は複数のコントローラは、移動車1000の計器群1032から入力(たとえば、入力データによって表される)を受信し、出力(たとえば、出力データ、表示データなどによって表される)をヒューマン・マシン・インターフェース(HMI:human-machine interface)ディスプレイ1034、可聴式アナンシエータ、ラウドスピーカ、及び/又は移動車1000の他の構成要素を介して提供することができる。出力は、移動車ベロシティ、スピード、時間、マップ・データ(たとえば、図10CのHDマップ1022)、位置データ(たとえば、マップ上などの、移動車の1000の位置)、方向、他の移動車の位置(たとえば、占有グリッド)、コントローラ1036によって把握されるものとしての物体及び物体の状況に関する情報などの、情報を含み得る。たとえば、HMIディスプレイ1034は、1個又は複数の物体(たとえば、道路標識、警告標識、交通信号の変化など)の存在、及び/又は移動車が行った、行っている、又は行うであろう運転操作(たとえば、今、車線変更をしていること、3.22km(2マイル)内の出口34Bを出ることなど)に関する情報を表示することができる。
移動車1000はさらに、1個又は複数のワイヤレス・アンテナ1026及び/又はモデムを使用して1個又は複数のネットワークを介して通信することができるネットワーク・インターフェース1024を含む。たとえば、ネットワーク・インターフェース1024は、LTE、WCDMA(登録商標)、UMTS、GSM、CDMA2000などを介する通信の能力を有し得る。ワイヤレス・アンテナ1026はまた、ブルートゥース(登録商標)、ブルートゥース(登録商標)LE、Z-Wave、ZigBeeなどのローカル・エリア・ネットワーク、及び/又はLoRaWAN、SigFoxなどのロー・パワー・ワイドエリア・ネットワーク(LPWAN:low power wide-area network)を使用し、環境内の物体(たとえば、移動車、モバイル・デバイスなど)の間の通信を可能にすることができる。
図10Bは、本開示のいくつかの実施例による、図10Aの例示的自律型車両1000のカメラ位置及び視野の実例である。カメラ及びそれぞれの視野は、1個の例示的実施例であり、制限することは意図されていない。たとえば、追加の及び/又は代替カメラが含まれ得る、及び/又はカメラは移動車1000の異なる位置に置かれ得る。
カメラのカメラ・タイプは、移動車1000の構成要素及び/又はシステムと使用するようになされ得るデジタル・カメラを含み得るが、これに限定されない。カメラは、自動車安全整合性レベル(ASIL:automotive safety integrity level)Bにおいて及び/又は別のASILにおいて動作することができる。カメラ・タイプは、実施例に応じて、60フレーム/秒(fps)、1020fps、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個の支柱内に統合され得る。
移動車1000の前の環境の部分を含む視野を有するカメラ(たとえば、前向きのカメラ)は、前向きの進路及び障害物の識別を助け、1個又は複数のコントローラ1036及び/又は制御SoCの助けにより、占有グリッドの生成及び/又は好ましい移動車進路の決定に不可欠な情報の提供の提供を助けるための、サラウンド・ビューのために使用され得る。前向きのカメラは、緊急ブレーキ、歩行者検出、及び衝突回避を含む、LIDARと同じADAS機能の多くを実行するために使用され得る。前向きのカメラはまた、車線逸脱警報(「LDW(Lane Departure Warning)」)、自律的クルーズ制御(「ACC(Autonomous Cruise Control)」)、及び/又は交通標識認識などの他の機能を含むADAS機能及びシステムのために使用され得る。
様々なカメラが、たとえば、CMOS(complementary metal oxide semiconductor)カラー画像化装置を含む単眼カメラ・プラットフォームを含む、前向きの構成において使用され得る。別の実例は、周辺(たとえば、歩行者、交差する交通又は自転車)からのビューに入る物体を把握するために使用され得るワイドビュー・カメラ1070でもよい。図10Bにはワイドビュー・カメラは1個だけ示されているが、移動車1000には任意の数のワイドビュー・カメラ1070が存在し得る。加えて、長距離カメラ1098(たとえば、ロングビュー・ステレオ・カメラ・ペア)が、特に、ニューラル・ネットワークがまだトレーニングされていない物体について、深度ベースの物体検出のために使用され得る。長距離カメラ1098はまた、物体検出及び分類、並びに基本物体追跡のために使用され得る。
1個又は複数のステレオ・カメラ1068もまた、前向きの構成に含まれ得る。ステレオ・カメラ1068は、単一のチップ上に統合されたCAN又はイーサネット(登録商標)・インターフェースを有するプログラマブル論理(FPGA)及びマルチコア・マイクロプロセッサを提供し得る、拡張可能な処理ユニットを備えた統合された制御ユニットを含み得る。そのようなユニットは、画像内のすべてのポイントの距離推定値を含む、移動車の環境の3Dマップを生成するために使用され得る。代替ステレオ・カメラ1068は、2個のカメラ・レンズ(左と右に1個ずつ)と、移動車から対象物体までの距離を測定する及び生成された情報(たとえば、メタデータ)を使用して自律的緊急ブレーキ及び車線逸脱警報機能をアクティブにすることができる画像処理チップとを含み得る、コンパクト・ステレオ・ビジョン・センサを含み得る。他のタイプのステレオ・カメラ1068が、本明細書に記載のものに加えて、又はそれらの代わりに、使用されてもよい。
移動車1000の側面に対する環境の部分を含む視野を有するカメラ(たとえば、サイドビュー・カメラ)が、占有グリッドを作成及び更新するために並びに側面衝撃衝突警報を生成するために使用される情報を提供する、サラウンド・ビューのために使用され得る。たとえば、サラウンド・カメラ1074(たとえば、図10Bに示されるような4個のサラウンド・カメラ1074)は、移動車1000上に位置付けられ得る。サラウンド・カメラ1074は、ワイドビュー・カメラ1070、魚眼カメラ、360度カメラ、及び/又は同類のものを含み得る。たとえば、4個の魚眼カメラが、移動車の前、後ろ、及び側面に配置され得る。代替配置において、移動車は、3個のサラウンド・カメラ1074(たとえば、左、右、及び後部)を使用してもよく、第4のサラウンド・ビュー・カメラとして1個又は複数の他のカメラ(たとえば、前向きのカメラ)を活用してもよい。
移動車1000の後ろに対する環境の部分を含む視野を有するカメラ(たとえば、後方確認カメラ)が、駐車支援、サラウンド・ビュー、後部衝突警報、並びに占有グリッドの作成及び更新のために使用され得る。本明細書に記載のように、前向きのカメラ(たとえば、長距離及び/又は中距離カメラ1098、ステレオ・カメラ1068)、赤外線カメラ1072など)としても適したカメラを含むがこれらに限定されない、多種多様なカメラが使用され得る。
図10Cは、本開示のいくつかの実施例による、図10Aの例示的自律型車両1000の例示的システム・アーキテクチャのブロック図である。本明細書に記載されているこの及び他の配置は単に実例として説明されていることを理解されたい。他の配置及び要素(たとえば、マシン、インターフェース、機能、順番、機能のグループ分けなど)が、示されたものに加えて又はこれらに代わって使用されてもよく、いくつかの要素は共に除外されてもよい。さらに、本明細書に記載の要素の多くは、個別の又は分散された構成要素として又は他の構成要素と併せて、並びに任意の適切な組合せ及び場所において、実装され得る機能エンティティである。エンティティによって実行されるものとして本明細書に記載された様々な機能は、ハードウェア、ファームウェア、及び/又はソフトウェアによって実施され得る。たとえば、様々な機能が、メモリに記憶された命令を実行するプロセッサによって実施され得る。
図10Cの移動車1000の構成要素、特徴、及びシステムのそれぞれは、バス1002を介して接続されるものとして図示されている。バス1002は、コントローラ・エリア・ネットワーク(CAN)データ・インターフェース(或いは、「CANバス」と称される)を含み得る。CANは、ブレーキ、加速度、ブレーキ、ステアリング、フロント・ガラス・ワイパなどの作動など、移動車1000の様々な特徴及び機能の制御を助けるために使用される移動車1000内のネットワークでもよい。CANバスは、それぞれが独自の一意の識別子(たとえば、CAN ID)を有する、数ダース又は数百ものノードを有するように構成され得る。CANバスは、ハンドル角度、対地速度、1分間のエンジン回転(RPM:revolutions per minute)、ボタン位置、及び/又は他の移動車状況指標を見つけるために読み取られ得る。CANバスは、ASIL B準拠でもよい。
バス1002は、CANバスであるものとして本明細書に記載されているが、これは制限することを意図されていない。たとえば、CANバスに加えて、又はこのその代替として、FlexRay及び/又はイーサネット(登録商標)が使用されてもよい。加えて、単一の線が、バス1002を表すために使用されているが、これは制限することを意図されていない。たとえば、1個又は複数のCANバス、1個又は複数のFlexRayバス、1個又は複数のイーサネット(登録商標)・バス、及び/又は異なるプロトコルを使用する1個若しくは複数の他のタイプのバスを含み得る、任意の数のバス1002が存在し得る。いくつかの実例では、2個以上のバス1002が、異なる機能を実行するために使用され得る、及び/又は冗長性のために使用され得る。たとえば、第1のバス1002は衝突回避機能のために使用されてもよく、第2のバス1002は作動制御のために使用されてもよい。任意の実例において、各バス1002は、移動車1000の構成要素のいずれかと通信し得、2個以上のバス1002が同じ構成要素と通信し得る。いくつかの実例では、移動車内の各SoC1004、各コントローラ1036、及び/又は各コンピュータは、同じ入力データ(たとえば、移動車1000のセンサからの入力)へのアクセスを有し得、CANバスなどの共通バスに接続され得る。
移動車1000は、図10Aに関して本明細書で説明されるものなど、1個又は複数のコントローラ1036を含み得る。コントローラ1036は、様々な機能のために使用され得る。コントローラ1036は、移動車1000の様々な他の構成要素及びシステムのいずれかに連結されてもよく、移動車1000、移動車1000の人工知能、移動車1000のためのインフォテインメント、及び/又は同類のものの制御のために使用され得る。
移動車1000は、システム・オン・チップ(SoC)1004を含み得る。SoC1004は、CPU1006、GPU1008、プロセッサ1010、キャッシュ1012、加速装置1014、データ・ストア1016、及び/又は図示されていない他の構成要素及び特徴を含み得る。SoC1004は、様々なプラットフォーム及びシステム内の移動車1000を制御するために使用され得る。たとえば、SoC1004は、1個又は複数のサーバ(たとえば、図10Dのサーバ1078)からネットワーク・インターフェース1024を介してマップのリフレッシュ及び/又は更新を取得することができるHDマップ1022を有するシステム(たとえば、移動車1000のシステム)において結合され得る。
CPU1006は、CPUクラスタ又はCPU複合体(或いは、「CCPLEX」とも称される)を含み得る。CPU1006は、複数のコア及び/又はL2キャッシュを含み得る。たとえば、一部の実施例では、CPU1006は、コヒーレント・マルチプロセッサ構成内の8個のコアを含み得る。一部の実施例では、CPU1006は、4個のデュアルコア・クラスタを含むことができ、各クラスタが専用のL2キャッシュ(たとえば、2MBL2キャッシュ)を有する。CPU1006(たとえば、CCPLEX)は、CPU1006のクラスタの任意の組合せが任意の所与の時間にアクティブになることを可能にする同時クラスタ動作をサポートするように構成され得る。
CPU1006は、以下の特徴のうちの1個又は複数を含む電力管理能力を実装することができる:個別ハードウェア・ブロックが、動的電力を節約するためにアイドル状態のときに自動的にクロック・ゲーティングされ得る、各コア・クロックは、WFI/WFE命令の実行により命令をコアがアクティブに実行していないときにゲーティングされ得る、各コアは、独立してパワー・ゲーティングされ得る、各コア・クラスタは、すべてのコアがクロック・ゲーティングされる若しくはパワー・ゲーティングされるときに、独立してクロック・ゲーティングされ得る、及び/又は、各コア・クラスタは、すべてのコアがパワー・ゲーティングされるときに、独立してパワー・ゲーティングされ得る。CPU1006は、電力状態を管理するための強化されたアルゴリズムをさらに実装することができ、そこでは、許容される電力状態及び予想されるウェイクアップ時間が指定され、ハードウェア/マイクロ・コードが、コア、クラスタ、及びCCPLEXに入力するための最良の電力状態を決定する。処理コアは、作業がマイクロ・コードにオフロードされたソフトウェアにおける簡略化された電力状態入力シーケンスをサポートすることができる。
GPU1008は、統合されたGPU(或いは本明細書において「iGPU」と称される)を含み得る。GPU1008は、プログラマブルになり得、並行のワークロードに効率的になり得る。一部の実例では、GPU1008は、強化されたテンソル命令セットを使用することができる。GPU1008は、1個又は複数のストリーミング・マイクロプロセッサを含み得、そこで、各ストリーミング・マイクロプロセッサは、L1キャッシュ(たとえば、少なくとも96KB記憶容量を有するL1キャッシュ)を含み得、ストリーミング・マイクロプロセッサのうちの2個以上が、キャッシュ(たとえば、512KB記憶容量を有するL2キャッシュ)を共用し得る。一部の実施例では、GPU1008は、少なくとも8個のストリーミング・マイクロプロセッサを含み得る。GPU1008は、計算アプリケーション・プログラミング・インターフェース(API)を使用することができる。加えて、GPU1008は、1個又は複数の並行のコンピューティング・プラットフォーム及び/又はプログラミング・モデル(たとえば、NVIDIAのCUDA)を使用することができる。
GPU1008は、自動車の及び組み込まれた使用事例における最高のパフォーマンスのために電力最適化され得る。たとえば、GPU1008は、FinFET(Fin field-effect transistor)上に製造され得る。しかしながら、これは制限することを意図されておらず、GPU1008は、他の半導体製造プロセスを使用し、製造され得る。各ストリーミング・マイクロプロセッサは、複数のブロックに区切られたいくつかの混合精度処理コアを組み込むことができる。限定ではなく、たとえば、64 PF32コア及び32 PF64コアは、4個の処理ブロックに区切られてもよい。そのような実例では、各処理ブロックは、16 FP32コア、8 FP64コア、16 INT32コア、深層学習行列演算のための2個の混合精度NVIDIAテンソル・コア、L0命令キャッシュ、ワープ・スケジューラ、発送ユニット、及び/又は64KBレジスタ・ファイルを割り当てられ得る。加えて、ストリーミング・マイクロプロセッサは、計算及びアドレス指定演算の混合を有するワークロードの効率的な実行を提供するための独立した並行の整数及び浮動小数点データ進路を含み得る。ストリーミング・マイクロプロセッサは、並行スレッドの間のより高い細粒度の同期及び連携を可能にするために、独立したスレッド・スケジューリング能力を含み得る。ストリーミング・マイクロプロセッサは、プログラミングを単純化しつつ性能を向上させるために、結合されたL1データ・キャッシュ及び共用メモリ・ユニットを含み得る。
GPU1008は、一部の実例では、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)が使用され得る。
GPU1008は、メモリ・ページに最も頻繁にアクセスするプロセッサへのそれらのメモリ・ページのより正確な移動を可能にするためにアクセス・カウンタを含む統一されたメモリ技術を含むことができ、それにより、プロセッサ間で共用される記憶範囲の効率を向上させる。いくつかの実例では、アドレス変換サービス(ATS:address translation service)サポートが、GPU1008がCPU1006ページ・テーブルに直接アクセスすることを可能にするために使用され得る。そのような実例では、GPU1008メモリ管理ユニット(MMU:memory management unit)がミスを経験するとき、アドレス変換要求が、CPU1006に送信され得る。応答して、CPU1006は、アドレスの仮想対現実マッピングのためのそのページ・テーブルを調べることができ、GPU1008に変換を送り返す。そのようなものとして、統一されたメモリ技術は、CPU1006とGPU1008との両方のメモリの単一統一仮想アドレス空間を可能にすることができ、それによりGPU1008へのアプリケーションのGPU1008プログラミング及び移植を単純化する。
加えて、GPU1008は、他のプロセッサのメモリへのGPU1008のアクセスの頻度を記録することができるアクセス・カウンタを含み得る。アクセス・カウンタは、メモリ・ページが最も頻繁にそのページにアクセスしているプロセッサの物理メモリに移動されることを確実にするのを助けることができる。
SoC1004は、本明細書に記載のものを含む任意の数のキャッシュ1012を含み得る。たとえば、キャッシュ1012は、CPU1006とGPU1008との両方に利用可能な(たとえば、CPU1006とGPU1008との両方に接続された)L3キャッシュを含み得る。キャッシュ1012は、キャッシュ・コヒーレンス・プロトコル(たとえば、MEI、MESI、MSIなど)を使用することなどによって、線の状態を記録することができるライトバック・キャッシュを含み得る。L3キャッシュは、より小さいキャッシュ・サイズが使用されてもよいが、実施例に応じて、4MB以上を含み得る。
SoC1004は、1個又は複数の加速装置1014(たとえば、ハードウェア加速装置、ソフトウェア加速装置、又はその組合せ)を含み得る。たとえば、SoC1004は、最適化されたハードウェア加速装置及び/又は大きなオンチップ・メモリを含み得る、ハードウェア加速クラスタを含み得る。大きなオンチップメモリ(たとえば、4MBのSRAM)は、ハードウェア加速クラスタがニューラル・ネットワーク及び他の演算を加速することを可能にし得る。ハードウェア加速クラスタは、GPU1008を補完するために及びGPU1008のタスクの一部をオフロードするために(たとえば、他のタスクを実行するためのGPU1008のより多くのサイクルを解放するために)使用され得る。一実例として、加速装置1014は、加速に適するように十分に安定している対象ワークロード(たとえば、知覚、畳み込みニューラル・ネットワーク(CNN:convolutional neural network)など)のために使用され得る。本明細書では、「CNN」という用語は、領域ベースの又は領域的畳み込みニューラル・ネットワーク(RCNN:regional convolutional neural network)及び高速RCNN(たとえば、物体検出のために使用されるものとしての)を含む、すべてのタイプのCNNを含み得る。
加速装置1014(たとえば、ハードウェア加速クラスタ)は、深層学習加速装置(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は、GPU1008の任意の機能を実行することができ、そして、推論加速装置を使用することによって、たとえば、設計者は、任意の機能のためにDLA又はGPU1008のいずれかを対象にすることができる。たとえば、設計者は、DLA上のCNN及び浮動小数点演算の処理に重点的に取り組み、他の機能をGPU1008及び/又は他の加速装置1014に任せることができる。
加速装置1014(たとえば、ハードウェア加速クラスタ)は、或いはコンピュータ・ビジョン加速装置と本明細書で称され得るプログラマブル・ビジョン加速装置(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は、CPU1006から独立したシステム・メモリに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)メモリを含み得る。
加速装置1014(たとえば、ハードウェア加速クラスタ)は、加速装置1014のための高帯域幅、低レイテンシSRAMを提供するための、コンピュータ・ビジョン・ネットワーク・オンチップ及びSRAMを含み得る。いくつかの実例では、オンチップ・メモリは、たとえば、そして制限ではなく、PVAとDLAとの両方によってアクセス可能でもよい、8個のフィールド構成可能なメモリ・ブロックから成る、少なくとも4MBのSRAMを含み得る。各ペアのメモリ・ブロックは、高度周辺バス(APB:advanced peripheral bus)インターフェース、構成回路、コントローラ、及びマルチプレクサを含み得る。任意のタイプのメモリが、使用され得る。PVA及びDLAは、メモリへの高速アクセスを有するPVA及びDLAを提供するバックボーンを介してメモリにアクセスすることができる。バックボーンは、(たとえば、APBを使用して)PVA及びDLAをメモリに相互接続するコンピュータ・ビジョン・ネットワーク・オンチップを含み得る。
コンピュータ・ビジョン・ネットワーク・オンチップは、PVAとDLAとの両方が作動可能及び有効信号を提供することを、任意の制御信号/アドレス/データの送信の前に、決定するインターフェースを含み得る。そのようなインターフェースは、制御信号/アドレス/データを送信するための別個のフェーズ及び別個のチャンネル、並びに連続的データ転送のためのバーストタイプの通信を提供することができる。このタイプのインターフェースは、ISO26262又はIEC61508規格に従うことができるが、他の規格及びプロトコルが使用されてもよい。
いくつかの実例では、SoC1004は、2018年8月10日に出願された米国特許出願第16/101,232号に記載されるような、リアルタイム・レイトレーシング・ハードウェア加速装置を含み得る。リアルタイム・レイトレーシング・ハードウェア加速装置は、RADAR信号解釈のための、音響伝播合成及び/又は分析のための、SONARシステムのシミュレーションのための、一般波伝播シミュレーションのための、ローカリゼーション及び/又は他の機能を目的とするLIDARデータに対する比較のための、及び/又は他の使用のための、リアルタイム視覚化シミュレーションを生成するために、(たとえば、世界モデル内の)物体の位置及び規模を迅速に効率的に決定するために使用され得る。
加速装置1014(たとえば、ハードウェア加速装置クラスタ)は、自律運転のための多様な用途を有する。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センサ1064又はRADARセンサ1060)から取得された物体の移動車1000方位、距離、3D位置推定と相関する慣性計測装置(IMU:inertial measurement unit)センサ1066出力、その他など、少なくともいくつかのサブセットのパラメータをその入力として受け取ることができる。
SoC1004は、データ・ストア1016(たとえば、メモリ)を含み得る。データ・ストア1016は、SoC1004のオンチップ・メモリでもよく、GPU及び/又はDLAで実行されることになるニューラル・ネットワークを記憶することができる。いくつかの実例では、データ・ストア1016は、冗長性及び安全性のためにニューラル・ネットワークの複数のインスタンスを記憶するのに十分な大きさの容量を有し得る。データ・ストア1012は、L2又はL3キャッシュ1012を備え得る。データ・ストア1016の参照は、本明細書に記載のような、PVA、DLA、及び/又は他の加速装置1014に関連するメモリの参照を含み得る。
SoC1004は、1個又は複数のプロセッサ1010(たとえば、組み込まれたプロセッサ)を含み得る。プロセッサ1010は、ブート電力及び管理能力及び関連するセキュリティ施行を処理するための専用のプロセッサ及びサブシステムでもよいブート及び電力管理プロセッサを含み得る。ブート及び電力管理プロセッサは、SoC1004ブート・シーケンスの一部でもよく、実行時間電力管理サービスを提供することができる。ブート電力及び管理プロセッサは、クロック及び電圧プログラミング、システム低電力状態移行の支援、SoC1004熱及び温度センサの管理、及び/又はSoC1004電力状態の管理を提供することができる。各温度センサは、その出力頻度が温度に比例するリング発振器として実装されてもよく、SoC1004は、リング発振器を使用してCPU1006、GPU1008、及び/又は加速装置1014の温度を検出することができる。温度が、閾値を超えたと判定された場合、ブート及び電力管理プロセッサは、温度障害ルーティンに入り、SoC1004をより低い電力状態に置く及び/又は移動車1000をショーファーの安全停止モードにする(たとえば、移動車1000を安全停止させる)ことができる。
プロセッサ1010は、オーディオ処理エンジンの機能を果たし得る1セットの組み込まれたプロセッサをさらに含み得る。オーディオ処理エンジンは、複数のインターフェースを介するマルチチャンネル・オーディオの完全なハードウェア・サポートとオーディオI/Oインターフェースの広く柔軟な範囲とを可能にするオーディオ・サブシステムでもよい。いくつかの実例では、オーディオ処理エンジンは、専用のRAMを有するデジタル信号プロセッサを有する専用のプロセッサ・コアである。
プロセッサ1010は、低電力センサ管理及びウェイク使用事例をサポートするための必要なハードウェア特徴を提供することができる常時オンのプロセッサ・エンジンをさらに含み得る。常時オンのプロセッサ・エンジンは、プロセッサ・コア、しっかりと結合されたRAM、支援周辺装置(たとえば、タイマ及び割り込みコントローラ)、様々なI/Oコントローラ周辺装置、及びルーティング論理を含み得る。
プロセッサ1010は、自動車のアプリケーションの安全性管理を処理するために専用のプロセッサ・サブシステムを含む安全性クラスタ・エンジンをさらに含み得る。安全性クラスタ・エンジンは、2個以上のプロセッサ・コア、しっかりと結合されたRAM、サポート周辺装置(たとえば、タイマ、割り込みコントローラなど)、及び/又はルーティング論理を含み得る。安全性モードにおいて、2個以上のコアは、ロックステップ・モードにおいて動作し、それらの動作の間の何らかの差を検出するための比較論理を有する単一のコアとして機能することができる。
プロセッサ1010は、リアルタイム・カメラ管理を処理するための専用のプロセッサ・サブシステムを含み得るリアルタイム・カメラ・エンジンをさらに含み得る。
プロセッサ1010は、カメラ処理パイプラインの一部であるハードウェア・エンジンである画像信号プロセッサを含み得る高ダイナミック・レンジ信号プロセッサをさらに含み得る。
プロセッサ1010は、プレイヤ・ウインドウのための最終的画像を生み出すためにビデオ再生アプリケーションによって必要とされるビデオ処理後機能を実装する処理ブロック(たとえば、マイクロプロセッサに実装された)でもよいビデオ画像合成器を含み得る。ビデオ画像合成器は、ワイドビュー・カメラ1070で、サラウンド・カメラ1074で、及び/又はキャビン内監視カメラ・センサでレンズ歪み補正を実行することができる。キャビン内監視カメラ・センサは好ましくは、キャビン内イベントを識別し、適切に応答するように構成された、高度SoCの別のインスタンス上で実行するニューラル・ネットワークによって監視される。キャビン内システムは、セルラ・サービスをアクティブにする及び電話をかける、電子メールを書き取らせる、移動車の目的地を変更する、移動車のインフォテインメント・システム及び設定をアクティブにする又は変更する、或いは音声起動型ウェブ・サーフィンを提供するために、読唇術を実行することができる。ある特定の機能は、自律モードで動作しているときにのみ運転者に利用可能であり、そうでない場合には無効にされる。
ビデオ画像合成器は、空間的ノイズ低減及び時間的ノイズ低減の両方のための強化された時間的ノイズ低減を含み得る。たとえば、動きがビデオ内で生じた場合、ノイズ低減は、隣接するフレームによって提供される情報の重みを減らし、空間的情報に適切に重みを加える。画像又は画像の一部が動きを含まない場合、ビデオ画像合成器によって実行される時間的ノイズ低減は、前の画像からの情報を使用して現在の画像におけるノイズを減らすことができる。
ビデオ画像合成器はまた、入力ステレオ・レンズ・フレーム上でステレオ・レクティフィケーションを実行するように構成され得る。ビデオ画像合成器はさらに、オペレーティング・システム・デスクトップが使用中であるときにユーザ・インターフェース合成のために使用することができ、GPU1008は、新しい表面を連続してレンダリングために必要とされない。GPU1008の電源が入れられ、3Dレンダリングをアクティブに行っているときでも、ビデオ画像合成器は、GPU1008をオフロードしてパフォーマンス及び反応性を向上させるために使用され得る。
SoC1004は、カメラからビデオ及び入力を受信するためのモバイル・インダストリ・プロセッサ・インターフェース(MIPI:mobile industry processor interface)カメラ・シリアル・インターフェース、高速インターフェース、及び/又は、カメラ及び関連画素入力機能のために使用され得るビデオ入力ブロックをさらに含み得る。SoC1004は、ソフトウェアによって制御され得る、及び特定の役割にコミットされていないI/O信号を受信するために使用され得る、入力/出力コントローラをさらに含み得る。
SoC1004は、周辺装置、オーディオ・コーデック、電力管理、及び/又は他のデバイスとの通信を可能にするために、広範囲の周辺インターフェースをさらに含み得る。SoC1004は、(たとえば、ギガビット・マルチメディア・シリアル・リンク及びイーサネット(登録商標)を介して接続された)カメラからのデータ、センサ(たとえば、イーサネット(登録商標)を介して接続され得るLIDARセンサ1064、RADARセンサ1060など)、バス1002からのデータ(たとえば、移動車1000のスピード、ハンドル位置など)、(たとえば、イーサネット(登録商標)又はCANバスを介して接続された)GNSSセンサ1058からのデータを処理するために使用され得る。SoC1004は、独自のDMAエンジンを含み得る及びルーティン・データ管理タスクからCPU1006を解放するために使用され得る専用の高性能大容量記憶コントローラをさらに含み得る。
SoC1004は、自動化レベル3~5に広がる柔軟なアーキテクチャを有する終端間プラットフォームでもよく、それによって、多様性及び冗長性のためにコンピュータ・ビジョン及びADAS技法を活用し、効率的に使用し、深層学習ツールとともに、柔軟な、信頼できる運転ソフトウェア・スタックのためのプラットフォームを提供する、総合的機能的安全性アーキテクチャを提供する。SoC1004は、従来のシステムよりも高速で、信頼でき、さらにエネルギ効率がよく、空間効率がよくなり得る。たとえば、加速装置1014が、CPU1006と結合されるとき、GPU1008、及びデータ・ストア1016は、レベル3~5の自律型車両のための高速で効率的なプラットフォームを提供することができる。
したがって、本技術は、従来のシステムによって達成することができない能力及び機能性をもたらす。たとえば、コンピュータ・ビジョン・アルゴリズムは、多種多様な視覚的データにわたり多種多様な処理アルゴリズムを実行するために、Cプログラミング言語などの高レベルのプログラミング言語を使用して構成され得る、CPUで実行され得る。しかしながら、CPUは、しばしば、たとえば、実行時間及び電力消費に関連するものなど、多数のコンピュータ・ビジョン・アプリケーションの性能要件を満たすことができない。具体的には、多数のCPUは、移動車内ADASアプリケーションの要件及び実際のレベル3~5の自律型車両の要件である、リアルタイムでの複合物体検出アルゴリズムを実行することができない。
従来のシステムとは対照的に、CPU複合体、GPU複合体、及びハードウェア加速クラスタを提供することによって、本明細書に記載の技術は、複数のニューラル・ネットワークが同時に及び/又は連続して実行されることと、レベル3~5の自律運転機能を可能にするために結果が結合されることとを可能にする。たとえば、DLA又はdGPU(たとえば、GPU1020)で実行するCNNは、ニューラル・ネットワークが具体的にトレーニングされていない標識を含む、交通標識をスーパーコンピュータが読み取る及び理解することを可能にする、テキスト及び単語認識を含み得る。DLAは、標識の意味論的理解を識別、解釈、及び提供することと、CPU複合体で実行する進路計画立案モジュールに意味論的理解を渡すこととを行うことができる、ニューラル・ネットワークをさらに含み得る。
別の実例として、複数のニューラル・ネットワークは、レベル3、4、又は5の運転に必要とされるように、同時に実行され得る。たとえば、電光とともに、「注意:点滅光は、凍った状態を示す」から成る警告標識は、いくつかのニューラル・ネットワークによって独立して又は集合的に解釈され得る。標識自体は、第1の配備されたニューラル・ネットワーク(たとえば、トレーニングされてあるニューラル・ネットワーク)によって交通標識として識別され得、テキスト「点滅光は、凍った状態を示す」は、点滅光が検出されるときには凍った状態が存在することを移動車の進路計画立案ソフトウェア(好ましくはCPU複合体上で実行する)に知らせる、第2の配備されたニューラル・ネットワークによって解釈され得る。点滅光は、点滅光の存在(又は無いこと)を移動車の進路計画立案ソフトウェアに知らせ、複数のフレームを介して第3の配備されたニューラル・ネットワークを動作させることによって識別され得る。すべての3個のニューラル・ネットワークは、DLA内及び/又はGPU1008上などで、同時に実行することができる。
いくつかの実例では、顔認識及び移動車所有者識別のためのCNNは、カメラ・センサからのデータを使用して移動車1000の正規の運転者及び/又は所有者の存在を識別することができる。常時オンのセンサ処理エンジンは、所有者が運転席側のドアに近づくときに移動車を解錠する及び明かりをつけるために、並びに、セキュリティ・モードにおいて、所有者が移動車を離れるときに移動車の動作を停止させるために、使用され得る。このようにして、SoC1004は、盗難及び/又は車の乗っ取りに対するセキュリティをもたらす。
別の実例では、緊急車両検出及び識別のためのCNNは、マイクロフォン1096からのデータを使用して緊急車両サイレンを検出及び識別することができる。一般分類子を使用してサイレンを検出する及び特徴を手動で抽出する従来のシステムとは対照的に、SoC1004は、環境の及び都市の音の分類、並びに視覚的データの分類のためにCNNを使用する。好ましい一実施例では、DLA上で実行するCNNは、(たとえば、ドップラー効果を使用することによって)緊急車両の相対的終速度を識別するようにトレーニングされる。CNNはまた、GNSSセンサ1058によって識別されるように、移動車が稼働しているローカル・エリアに特有の緊急車両を識別するようにトレーニングされ得る。それ故に、たとえば、欧州で稼働しているとき、CNNは、欧州のサイレンを検出しようとすることになり、そして、米国にあるとき、CNNは、北米のサイレンのみを識別しようとすることになる。緊急車両が検出された後は、制御プログラムが、緊急車両が通過するまで、超音波センサ1062の支援を受けて、移動車を減速する、道の端に停止させる、移動車を駐車する、及び/又は移動車をアイドリングさせる、緊急車両安全性ルーティンを実行するために使用され得る。
移動車は、高速相互接続(たとえば、PCIe)を介してSoC1004に連結され得るCPU1018(たとえば、個別のCPU、又はdCPU)を含み得る。CPU1018は、たとえば、X86プロセッサを含み得る。CPU1018は、たとえば、ADASセンサとSoC1004との間の潜在的に不整合の結果を調停すること、及び/又はコントローラ1036及び/又はインフォテインメントSoC1030の状況及び調子を監視することを含む、様々な機能のいずれかを実行するために使用され得る。
移動車1000は、高速相互接続(たとえば、NVIDIAのNVLINK)を介してSoC1004に連結され得るGPU1020(たとえば、個別のGPU、又はdGPU)を含み得る。GPU1020は、冗長及び/又は異なるニューラル・ネットワークを実行することなどによって、付加的人工知能機能をもたらすことができ、移動車1000のセンサからの入力(たとえば、センサ・データ)に基づいてニューラル・ネットワークをトレーニング及び/又は更新するために使用され得る。
移動車1000は、1個又は複数のワイヤレス・アンテナ1026(たとえば、セルラ・アンテナ、ブルートゥース(登録商標)・アンテナなど、異なる通信プロトコルのための1個又は複数のワイヤレス・アンテナ)を含み得るネットワーク・インターフェース1024をさらに含み得る。ネットワーク・インターフェース1024は、インターネットを介するクラウドとの(たとえば、サーバ1078及び/又は他のネットワーク・デバイスとの)、他の移動車との、及び/又は計算デバイス(たとえば、乗客のクライアント・デバイス)とのワイヤレス接続を使用可能にするために使用され得る。他の移動車と通信するために、直接リンクが2個の移動車の間に確立され得る、及び/又は、間接リンクが(たとえば、ネットワークを通じて及びインターネットを介して)確立され得る。直接リンクは、移動車対移動車通信リンクを使用し、提供され得る。移動車対移動車通信リンクは、移動車1000に近接する移動車(たとえば、移動車1000の前の、横の、及び/又は後ろの移動車)に関する移動車1000情報を提供することができる。この機能は、移動車1000の共同適応クルーズ制御機能の一部でもよい。
ネットワーク・インターフェース1024は、変調及び復調機能を提供する及びコントローラ1036がワイヤレス・ネットワークを介して通信することを可能にする、SoCを含み得る。ネットワーク・インターフェース1024は、ベースバンドから無線周波数へのアップコンバージョン、及び無線周波数からベースバンドへのダウンコンバージョンのための無線周波数フロントエンドを含み得る。周波数コンバージョンは、よく知られているプロセスを通して実行することができ、及び/又はスーパーヘテロダイン・プロセスを用いて実行することができる。いくつかの実例では、無線周波数フロントエンド機能は、別個のチップによって提供され得る。ネットワーク・インターフェースは、LTE、WCDMA(登録商標)、UMTS、GSM、CDMA2000、ブルートゥース(登録商標)、ブルートゥース(登録商標)LE、Wi-Fi、Z-Wave、ZigBee、LoRaWAN、及び/又は他のワイヤレス・プロトコルを介して通信するためのワイヤレス機能を含み得る。
移動車1000は、チップ外の(たとえば、SoC1004外の)ストレージを含み得るデータ・ストア1028をさらに含み得る。データ・ストア1028は、RAM、SRAM、DRAM、VRAM、フラッシュ、ハードディスク、及び/又は、少なくとも1ビットのデータを記憶することができる他の構成要素及び/又はデバイスを含む、1個又は複数の記憶素子を含み得る。
移動車1000は、GNSSセンサ1058をさらに含み得る。マッピング、知覚、占有グリッド生成、及び/又は進路計画立案機能を支援するための、GNSSセンサ1058(たとえば、GPS及び/又は補助装置付きGPSセンサ)。たとえば、シリアル(RS-232)ブリッジへのイーサネット(登録商標)を有するUSBコネクタを使用するGPSを含むが、これに限定されない、任意の数のGNSSセンサ1058が、使用され得る。
移動車1000は、RADARセンサ1060をさらに含み得る。RADARセンサ1060は、暗闇及び/又は厳しい気象条件においても、長距離移動車検出のために移動車1000によって使用され得る。RADAR機能安全性レベルは、ASIL Bでもよい。一部の実例では、RADARセンサ1060は、未加工のデータにアクセスするためのイーサネット(登録商標)へのアクセスを用いて、制御のために及び物体追跡データにアクセスするために(たとえば、RADARセンサ1060によって生成されたデータを送信するために)CAN及び/又はバス1002を使用することができる。多種多様なRADARセンサ・タイプが、使用され得る。たとえば、そして制限なしに、RADARセンサ1060は、前部、後部、及び側部RADAR使用に適し得る。一部の実例では、パルス・ドップラーRADARセンサが使用される。
RADARセンサ1060は、狭い視野を有する長距離、広い視野を有する短距離、短距離側部カバレッジなど、異なる構成を含み得る。いくつかの実例では、長距離RADARは、適応クルーズ制御機能のために使用され得る。長距離RADARシステムは、250mの範囲内など、2個以上の独立したスキャンによって実現される広い視野を提供することができる。RADARセンサ1060は、静的物体と動く物体との区別を助けることができ、緊急ブレーキ・アシスト及び前方衝突警報のためのADASシステムによって使用され得る。長距離RADARセンサは、複数の(たとえば、6つ以上の)固定RADARアンテナと高速CAN及びFlexRayインターフェースとを有するモノスタティック・マルチモーダルRADARを含み得る。6つのアンテナを有する一実例では、中央の4個のアンテナは、隣接レーン内の交通からの干渉を最小限にして高速で移動車1000の周囲を記録するように設計された、集束ビーム・パターンを作成し得る。他の2個のアンテナは、視野を広げることができ、移動車1000のレーンに入る又はこれを去る移動車を迅速に検出することを可能にする。
一実例として、中距離RADARシステムは、1060m(前)又は80m(後)までの範囲、及び42度(前)又は1050度(後)までの視野を含み得る。短距離RADARシステムは、後部バンパの両端に設置されるように設計されたRADARセンサを含み得るが、これに限定されない。後部バンパの両端に設置されるとき、そのようなRADARセンサ・システムは、移動車の後ろ及び隣の死角を常に監視する2個のビームを作成することができる。
短距離RADARシステムは、死角検出及び/又はレーン変更アシストのためにADASシステムにおいて使用され得る。
移動車1000は、超音波センサ1062をさらに含み得る。移動車1000の前部、後部、及び/又は側部に位置付けられ得る、超音波センサ1062は、駐車アシストのために及び/又は占有グリッドの作成及び更新のために使用され得る。多種多様な超音波センサ1062が使用され得、異なる超音波センサ1062が、異なる範囲の検出(たとえば、2.5m、4m)のために使用され得る。超音波センサ1062は、ASIL Bの機能的安全性レベルにおいて動作することができる。
移動車1000はLIDARセンサ1064を含み得る。LIDARセンサ1064は、物体及び歩行者検出、緊急ブレーキ、衝突回避、及び/又は他の機能のために使用され得る。LIDARセンサ1064は、機能的安全性レベルASIL Bでもよい。いくつかの実例では、移動車1000は、(たとえば、ギガビット・イーサネット(登録商標)・スイッチにデータを提供するために)イーサネット(登録商標)を使用することができる複数の(たとえば、2個、4個、6個などの)LIDARセンサ1064を含み得る。
いくつかの実例では、LIDARセンサ1064は、物体及び360度視野のそれらの距離のリストを提供する能力を有し得る。市販のLIDARセンサ1064は、たとえば、2cm~3cmの精度を有し、1000Mbpsイーサネット(登録商標)接続のサポートを有して、約1000mの広告された範囲を有し得る。いくつかの実例では、1個又は複数の非突出しLIDARセンサ1064が、使用され得る。そのような実例では、LIDARセンサ1064は、移動車1000の前部、後部、側部、及び/又は角に組み込まれ得る小さいデバイスとして実装され得る。そのような実例では、LIDARセンサ1064は、低反射物体についても200mの範囲を有し、1020度水平及び35度垂直視野まで提供することができる。前部に取り付けられたLIDARセンサ1064は、45度と135度との間の水平視野向けに構成され得る。
いくつかの実例では、3DフラッシュLIDARなどのLIDAR技術もまた使用され得る。3DフラッシュLIDARは、約200mまで移動車の周囲を照らすために、送信元としてレーザーのフラッシュを使用する。フラッシュLIDARユニットは、移動車から物体までの範囲に順番に対応する、レーザー・パルス走行時間及び各画素上の反射光を記録する、レセプタを含む。フラッシュLIDARは、周囲の高精度の及び歪みのない画像があらゆるレーザー・フラッシュで生成されることを可能にし得る。いくつかの実例では、4個のフラッシュLIDARセンサが、移動車1000の各側面に1個ずつ、配備され得る。利用可能な3DフラッシュLIDARシステムは、送風機以外に動く部分を有さないソリッドステート3Dステアリング・アレイLIDARカメラ(たとえば、非スキャン型LIDARデバイス)を含む。フラッシュLIDARデバイスは、1フレームにつき5ナノ秒クラスI(目に安全な)レーザー・パルスを使用することができ、3D範囲点群及び共記載された強度データの形で反射レーザー光をキャプチャし得る。フラッシュLIDARを使用することによって、また、フラッシュLIDARは、動く部分を有さないソリッドステート・デバイスであるので、LIDARセンサ1064は、モーション・ブラー、振動、及び/又は衝撃の影響を受けにくくなり得る。
移動車は、IMUセンサ1066をさらに含み得る。一部の実例では、IMUセンサ1066は、移動車1000の後部車軸の中央に位置付けられ得る。IMUセンサ1066は、たとえば、加速度計、磁力計、ジャイロスコープ、磁気コンパス、及び/又は他のセンサ・タイプを含み得るが、これらに限定されない。いくつかの実例では、6軸アプリケーションなどにおいて、IMUセンサ1066は、加速度計及びジャイロスコープを含み得るが、9軸アプリケーションにおいて、IMUセンサ1066は、加速度計、ジャイロスコープ、及び磁力計を含み得る。
一部の実施例では、IMUセンサ1066は、マイクロ電気機械システム(MEMS:micro-electro-mechanical system)慣性センサ、高感度GPSレシーバ、及び高度カルマン・フィルタリング・アルゴリズムを結合して位置、ベロシティ、及び姿勢の推定値を提供するミニチュア、高性能GPS支援型慣性航行システム(GPS/INS:GPS-Aided Inertial Navigation System)として実装され得る。そのようなものとして、一部の実例では、IMUセンサ1066は、GPSからIMUセンサ1066までのベロシティの変化を直接観測すること及び関連付けることによって、磁気センサからの入力を必要とせずに進行方向を移動車1000が推定することを可能にし得る。いくつかの実例では、IMUセンサ1066及びGNSSセンサ1058は、単一の統合されたユニットにおいて結合され得る。
移動車は、移動車1000内及び/又は周囲に置かれたマイクロフォン1096を含み得る。マイクロフォン1096は、中でも、緊急車両検出及び識別のために使用され得る。
移動車は、ステレオ・カメラ1068、ワイドビュー・カメラ1070、赤外線カメラ1072、サラウンド・カメラ1074、長距離及び/又は中距離カメラ1098、及び/又は他のカメラ・タイプを含む、任意の数のカメラ・タイプをさらに含み得る。カメラは、移動車1000の全外面の周りの画像データをキャプチャするために使用され得る。使用されるカメラのタイプは、移動車1000の実施例及び要件に応じて決まり、任意の組合せのカメラ・タイプが、移動車1000の周りの必要なカバレッジを実現するために使用され得る。加えて、カメラの数は、実施例に応じて異なり得る。たとえば、移動車は、6個のカメラ、7個のカメラ、10個のカメラ、12個のカメラ、及び/又は別の数のカメラを含み得る。カメラは、一実例として、ギガビット・マルチメディア・シリアル・リンク(GMSL:Gigabit Multimedia Serial Link)及び/又はギガビット・イーサネット(登録商標)をサポートし得るが、これに限定されない。それぞれのカメラは、図10A及び図10Bに関連して本明細書においてさらに詳しく説明される。
移動車1000は、振動センサ1042をさらに含み得る。振動センサ1042は、車軸など、移動車の構成要素の振動を測定することができる。たとえば、振動の変化は、道路の表面の変化を示し得る。別の実例では、2個以上の振動センサ1042が使用されるとき、振動の差は、道路表面の摩擦又は滑りを判定するために使用され得る(たとえば、振動の差が電力駆動車軸と自由回転車軸との間であるとき)。
移動車1000は、ADASシステム1038を含み得る。一部の実例では、ADASシステム1038は、SoCを含み得る。ADASシステム1038は、自律/適応/自動クルーズ制御(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センサ1060、LIDARセンサ1064、及び/又はカメラを使用し得る。ACCシステムは、縦ACC及び/又は横ACCを含み得る。縦ACCは、移動車1000の直ぐ前の移動車までの距離を監視及び制御し、前方の移動車からの安全距離を維持するために移動車速度を自動的に調整する。横ACCは、距離の保持を実行し、必要なときにレーンを変更するように移動車1000にアドバイスする。横ACCは、LCA及びCWSなどの他のADASアプリケーションに関連する。
CACCは、ワイヤレス・リンクを介して他の移動車からネットワーク・インターフェース1024及び/又はワイヤレス・アンテナ1026を介して、或いは間接的にネットワーク接続を介して(たとえば、インターネットを介して)、受信することができる、他の移動車からの情報を使用する。直接リンクは、移動車対移動車(V2V:vehicle-to-vehicle)通信リンクによって提供され得、一方、間接リンクは、インフラストラクチャ対移動車(I2V:infrastructure-to-vehicle)通信リンクでもよい。一般に、V2V通信概念は、直前の移動車(たとえば、移動車1000と同じレーン内にある、移動車1000の直ぐ前の移動車)に関する情報を提供し、一方、I2V通信概念は、さらに前の交通に関する情報を提供する。CACCシステムは、I2V情報ソースとV2V情報ソースとのいずれか又は両方を含み得る。移動車1000の前方の移動車の情報を所与として、CACCは、より高信頼になり得、CACCは、交通の流れをよりスムーズにし、道路の渋滞を減らす可能性を有する。
運転者が修正行動を取ることができるように、FCWシステムは、危険を運転者に警告するように設計される。FCWシステムは、ディスプレイ、スピーカ、及び/又は振動する構成要素など、運転者フィードバックに電気的に連結された、専用のプロセッサ、DSP、FPGA、及び/又はASICに連結された、前向きのカメラ及び/又はRADARセンサ1060を使用する。FCWシステムは、音響、視覚的警報、振動及び/又はクイック・ブレーキ・パルスなどの形で、警報を提供することができる。
AEBシステムは、別の移動車又は他の物体との差し迫った前方衝突を検出し、運転者が指定された時間又は距離パラメータ内に修正行動を取らない場合に、ブレーキを自動的に適用することができる。AEBシステムは、専用のプロセッサ、DSP、FPGA、及び/又はASICに連結された、前向きのカメラ及び/又はRADARセンサ1060を使用することができる。AEBシステムが危険を検出するとき、AEBシステムは通常は、先ず、衝突を回避するための修正行動を取るように運転者に警告し、運転者が修正行動を取らない場合、AEBシステムは、予測される衝突の影響を防ぐ、又は少なくとも軽減するための努力の一環としてブレーキを自動的に適用することができる。AEBシステムは、ダイナミック・ブレーキ・サポート及び/又は衝突切迫ブレーキなどの技法を含み得る。
LDWシステムは、ハンドル又はシートの振動など、視覚的、可聴式、及び/又は触覚的警報を提供して、移動車1000が車線区分線を越えたときに運転者に警告する。LDWシステムは、運転者が、方向指示器を起動することによって、意図的な車線逸脱を指示するときには、起動しない。LDWシステムは、ディスプレイ、スピーカ、及び/又は振動する構成要素など、運転者フィードバックに電気的に連結された、専用のプロセッサ、DSP、FPGA、及び/又はASICに連結された、前側を向いたカメラを使用することができる。
LKAシステムは、LDWシステムの変更形態である。LKAシステムは、移動車1000が車線をはみ出し始めた場合に移動車1000を修正するためにステアリング入力又はブレーキを提供する。
BSWシステムは、自動車の死角において移動車の運転者に検出及び警告する。BSWシステムは、合流又はレーンの変更が安全ではないことを指示するために視覚的、可聴式、及び/又は触覚的警告を提供することができる。本システムは、運転者が方向指示灯を使用するとき、付加的な警告を提供することができる。BSWシステムは、運転者フィードバック、たとえば、ディスプレイ、スピーカ、及び/又は振動部品、に電気的に結合された、専用プロセッサ、DSP、FPGA、及び/又はASICに結合された、後ろ側を向いたカメラ及び/又はRADARセンサ1060を使用することができる。
RCTWシステムは、車両1000がバックしているときにリアカメラの範囲外で物体が検出されたときに視覚的、可聴式、及び/又は触覚的通知を提供することができる。いくつかのRCTWシステムは、衝突を回避するために車両ブレーキが適用されることを確実にするために、AEBを含む。RCTWシステムは、運転者フィードバック、たとえば、ディスプレイ、スピーカ、及び/又は振動部品、に電気的に結合された、専用プロセッサ、DSP、FPGA、及び/又はASICに結合された、1個又は複数の後ろを向いたRADARセンサ1060を使用することができる。
従来のADASシステムは、運転者に警告し、安全状態が本当に存在するかどうかを運転者が判定し、それに応じて行動することを可能にするので、従来のADASシステムは、通常は壊滅的ではないが、運転者を悩ませている及び気を散らせていることがある誤判定結果を生み出す傾向にあることがあった。しかしながら、自律型車両1000では、結果が矛盾する場合には、移動車1000自体が、1次的コンピュータ又は2次的コンピュータ(たとえば、第1のコントローラ1036又は第2のコントローラ1036)からの結果を聞き入れるかどうかを決定しなければならない。たとえば、一部の実施例では、ADASシステム1038は、知覚情報をバックアップ・コンピュータ合理性モジュールに提供するためのバックアップ及び/又は2次的コンピュータでもよい。バックアップ・コンピュータ合理性モニタは、ハードウェア構成要素で冗長な多様なソフトウェアを実行して、知覚及び動的運転タスクにおいて障害を検出することができる。ADASシステム1038からの出力は、監督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は、SoC1004の構成要素を備え得る、及び/又はSoC1004の構成要素として含まれ得る。
他の実例において、ADASシステム1038は、コンピュータ・ビジョンの従来のルールを使用するADAS機能を実行する2次的コンピュータを含み得る。そのようなものとして、2次的コンピュータは、古典的コンピュータ・ビジョン・ルール(if-then)を使用することができ、監督MCU内のニューラル・ネットワークの存在は、信頼性、安全性及び性能を向上させることができる。たとえば、多様な実装形態及び意図的な非同一性は、特にソフトウェア(又はソフトウェア-ハードウェア・インターフェース)機能によって引き起こされる障害に対して、システム全体をよりフォールトトレラントにする。たとえば、1次的コンピュータで実行中のソフトウェア内にソフトウェア・バグ又はエラーが存在し、2次的コンピュータで実行中の同一でないソフトウェア・コードが同じ総合的結果を提供する場合、監督MCUは、総合的結果は正しく、1次的コンピュータ上のソフトウェア又はハードウェア内のバグは重大なエラーを引き起こしていないというより大きな確信を有し得る。
いくつかの実例では、ADASシステム1038の出力は、1次的コンピュータの知覚ブロック及び/又は1次的コンピュータの動的運転タスク・ブロックに供給され得る。たとえば、ADASシステム1038が、直ぐ前の物体が原因で、前方衝突警報を示した場合、知覚ブロックは、物体を識別するときに、この情報を使用することができる。他の実例において、2次的コンピュータは、本明細書に記載のように、トレーニングされ、それ故に誤判定のリスクを減らす、独自のニューラル・ネットワークを有し得る。
移動車1000は、インフォテインメントSoC1030(たとえば、移動車内のインフォテインメント・システム(IVI:in-vehicle infotainment system))をさらに含み得る。SoCとして図示及び記述されているが、インフォテインメント・システムは、SoCでなくてもよく、2個以上の個別の構成要素を含み得る。インフォテインメントSoC1030は、オーディオ(たとえば、音楽、携帯情報端末、ナビゲーション命令、ニュース、無線など)、ビデオ(たとえば、TV、映画、ストリーミングなど)、電話(たとえば、ハンズフリー通話)、ネットワーク接続(たとえば、LTE、Wi-Fiなど)、及び/又は情報サービス(たとえば、ナビゲーション・システム、後方駐車支援、無線データシステム、燃料レベル、総移動距離、ブレーキ燃料レベル、オイル・レベル、ドアを開ける/閉じる、エア・フィルタ情報などの移動車関連情報)を提供するために使用され得るハードウェア及びソフトウェアの組合せを含み得る。たとえば、インフォテインメントSoC1030は、無線、ディスク・プレイヤ、ナビゲーション・システム、ビデオ・プレイヤ、USB及びブルートゥース(登録商標)接続、カーピュータ、車内エンターテインメント、Wi-Fi、ハンドル・オーディオ制御装置、ハンズ・フリー音声制御、ヘッドアップ・ディスプレイ(HUD:heads-up display)、HMIディスプレイ1034、テレマティックス・デバイス、制御パネル(たとえば、様々な構成要素、特徴、及び/又はシステムを制御する及び/又はこれと相互に作用するための)、及び/又は他の構成要素でもよい。インフォテインメントSoC1030は、ADASシステム1038からの情報、計画された移動車操作などの自律運転情報、軌道、周囲環境情報(たとえば、交差点情報、移動車情報、道路情報など)、及び/又は他の情報など、移動車のユーザへの情報(たとえば、視覚的及び/又は可聴式の)を提供するためにさらに使用され得る。
インフォテインメントSoC1030は、GPU機能性を含み得る。インフォテインメントSoC1030は、バス1002(たとえば、CANバス、イーサネット(登録商標)など)を介して、移動車1000の他のデバイス、システム、及び/又は構成要素と通信することができる。いくつかの実例では、インフォテインメント・システムのGPUが、1次的コントローラ1036(たとえば、移動車1000の1次的及び/又はバックアップ・コンピュータ)が故障した場合に、いくつかのセルフドライブ機能を実行することができるように、インフォテインメントSoC1030は、監督MCUに連結され得る。そのような実例では、インフォテインメントSoC1030は、本明細書に記載のように、移動車1000をショーファーの安全停止モードにすることができる。
移動車1000は、計器群1032(たとえば、デジタル・ダッシュ、電子計器群、デジタル計器パネルなど)をさらに含み得る。計器群1032は、コントローラ及び/又はスーパーコンピュータ(たとえば、個別のコントローラ又はスーパーコンピュータ)を含み得る。計器群1032は、スピードメーター、燃料レベル、油圧、タコメーター、オドメーター、方向指示器、ギアシフト位置インジケータ、シート・ベルト警告灯、パーキングブレーキ警告灯、エンジン故障灯、エアバッグ(SRS)システム情報、照明制御装置、安全システム制御装置、ナビゲーション情報など、1セットの器具類を含み得る。いくつかの実例では、情報は、インフォテインメントSoC1030及び計器群1032の間で表示及び/又は共有され得る。言い換えれば、計器群1032は、インフォテインメントSoC1030の一部として含まれてもよく、逆もまた同様である。
図10Dは、本開示のいくつかの実施例による、図10Aのクラウドベースのサーバと例示的自律型車両1000との間の通信のシステム図である。システム1076は、サーバ1078、ネットワーク1090、及び、移動車1000を含む移動車を含み得る。サーバ1078は、複数のGPU1084(A)~1084(H)(本明細書でGPU1084と総称される)、PCIeスイッチ1082(A)~1082(H)(本明細書でPCIeスイッチ1082と総称される)、及び/又はCPU1080(A)~1080(B)(本明細書でCPU1080と総称される)を含み得る。GPU1084、CPU1080、及びPCIeスイッチは、たとえば、NVIDIAによって開発されたNVLINKインターフェース1088及び/又はPCIe接続1086などの、これらに限定されない、高速相互接続で相互に接続され得る。いくつかの実例では、GPU1084は、NVLINK及び/又はNVSwitch SoCを介して接続され、GPU1084及びPCIeスイッチ1082は、PCIe相互接続を介して接続される。8個のGPU1084、2個のCPU1080、及び2個のPCIeスイッチが図示されているが、これは制限を意図されていない。実施例に応じて、それぞれのサーバ1078は、任意の数のGPU1084、CPU1080、及び/又はPCIeスイッチを含み得る。たとえば、サーバ1078は、それぞれ、8個、16個、32個、及び/又はそれ以上のGPU1084を含み得る。
サーバ1078は、最近開始された道路工事など、予想外の又は変更された道路状態を示す画像を表す画像データを、ネットワーク1090を介して、移動車から、受信することができる。サーバ1078は、ニューラル・ネットワーク1092、更新されたニューラル・ネットワーク1092、及び/又は、交通及び道路状態に関する情報を含むマップ情報1094をネットワーク1090を介して移動車に送信することができる。マップ情報1094の更新は、建設現場、くぼみ、迂回路、洪水、及び/又は他の障害物に関する情報など、HDマップ1022の更新を含み得る。いくつかの実例では、ニューラル・ネットワーク1092、更新されたニューラル・ネットワーク1092、及び/又はマップ情報1094は、環境において任意の数の移動車から受信されたデータにおいて表された新しいトレーニング及び/又は経験から、及び/又は(たとえば、サーバ1078及び/又は他のサーバを使用する)データセンタにおいて実行されたトレーニングに基づいて、生じた可能性がある。
サーバ1078は、トレーニング・データに基づいてマシン学習モデル(たとえば、ニューラル・ネットワーク)をトレーニングするために使用され得る。トレーニング・データは、移動車によって生成され得る、及び/又は(たとえば、ゲーム・エンジンを使用して)シミュレーションにおいて生成され得る。いくつかの実例では、トレーニング・データは、タグ付けされる(たとえば、ニューラル・ネットワークが、監督された学習の恩恵を受ける場合)及び/又は他の事前処理を受けるが、他の実例において、トレーニング・データは、タグ付け及び/又は事前処理されない(たとえば、ニューラル・ネットワークが、監督された学習を必要としない場合)。マシン学習モデルがトレーシングされた後は、マシン学習モデルは、移動車によって使用され得(たとえば、ネットワーク1090を介して移動車に送信される)、及び/又は、マシン学習モデルは、移動車を遠隔監視するために、サーバ1078によって使用され得る。
いくつかの実例では、サーバ1078は、移動車からデータを受信し、リアルタイムのインテリジェント推論のために最新のリアルタイムのニューラル・ネットワークにデータを適用することができる。サーバ1078は、NVIDIAによって開発されたDGX及びDGXステーション・マシンなど、GPU1084によって電力供給される深層学習スーパーコンピュータ及び/又は専用のAIコンピュータを含み得る。しかしながら、一部の実例では、サーバ1078は、CPU電源式データセンタのみを使用する深層学習インフラストラクチャを含み得る。
サーバ1078の深層学習インフラストラクチャは、高速のリアルタイム推論の能力を有することでき、その能力を使用して移動車1000内のプロセッサ、ソフトウェア、及び/又は関連ハードウェアの調子を評価及び検証することができる。たとえば、深層学習インフラストラクチャは、移動車1000がそのシーケンスの画像内に位置したシーケンスの画像及び/又は物体など、移動車1000からの定期的更新を受信することができる(たとえば、コンピュータ・ビジョン及び/又は他のマシン学習物体分類技法を介して)。深層学習インフラストラクチャは、物体を識別し、移動車1000によって識別された物体とそれらを比較するために、独自のニューラル・ネットワークを実行することができ、結果が一致せず、インフラストラクチャが、移動車1000内のAIは正常に機能していないという結論を下した場合、サーバ1078は、制御を推測し、乗客に通知し、安全な駐車操作を完了するように移動車1000のフェイルセーフ・コンピュータに命じる移動車1000への信号を送信することができる。
推論のために、サーバ1078は、GPU1084及び1個又は複数のプログラマブル推論加速装置(たとえば、NVIDIAのTensorRT)を含み得る。GPU電源式サーバ及び推論加速の組合せは、リアルタイムの反応性を可能にすることができる。パフォーマンスがさほど必要とされない場合など、他の実例では、CPU、FPGA、及び他のプロセッサによって電力供給されるサーバが、推論のために使用され得る。
例示的計算デバイス
図11は、本開示のいくつかの実施例の実装に使用するのに適した計算デバイス1100の一実例のブロック図である。計算デバイス1100は、以下のデバイスを間接的に又は直接的につなぐバス1102を含み得る:メモリ1104、1個又は複数の中央処理装置(CPU)1106、1個又は複数のグラフィック処理ユニット(GPU)1108、通信インターフェース1110、入力/出力(I/O)ポート1112、入力/出力構成要素1114、電力供給装置1116、及び1個又は複数の提示構成要素1118(たとえば、ディスプレイ)。
図11の様々なブロックは、線でバス1102を介して接続しているように示されているが、これは制限することを意図されておらず、単に分かりやすくするためである。たとえば、一部の実施例では、表示デバイスなどの提示構成要素1118は、I/O構成要素1114と考えられ得る(たとえば、ディスプレイがタッチ・スクリーンである場合)。別の実例として、CPU1106及び/又はGPU1108はメモリを含み得る(たとえば、メモリ1104は、GPU1108、CPU1106、及び/又は他の構成要素のメモリに加えた記憶デバイスを表し得る)。言い換えれば、図11の計算デバイスは、単に例示である。「ワークステーション」、「サーバ」、「ラップトップ」、「デスクトップ」、「タブレット」、「クライアント・デバイス」、「モバイル・デバイス」、「ハンドヘルド・デバイス」、「ゲーム機」、「電子制御ユニット(ECU:electronic control unit)」、「仮想現実システム」、及び/又は他のデバイス若しくはシステム・タイプなどのカテゴリはすべて、図11の計算デバイスの範囲内にあることが意図されているので、これらは区別されない。
バス1102は、アドレス・バス、データ・バス、制御バス、又はその組合せなど、1個又は複数のバスを表し得る。バス1102は、ISA(industrial standard architecture)バス、EISA(extended industrial standard architecture)バス、VESA(video electronics standard association)バス、PCI(peripheral component inter connect)バス、PCIe(PCI express)バス、及び/又は別のタイプのバスなど、1個又は複数のバス・タイプを含み得る。
メモリ1104は、様々なコンピュータ可読媒体のいずれかを含み得る。コンピュータ可読媒体は、計算デバイス1100によってアクセスすることができる任意の利用可能な媒体でもよい。コンピュータ可読媒体は、揮発性及び不揮発性媒体の両方、及び取り外し可能な及び取り外し不可能な媒体を含み得る。例として、しかし限定ではなく、コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を備え得る。
コンピュータ記憶媒体は、コンピュータ可読命令、データ構造体、プログラム・モジュール、及び/又は他のデータ・タイプなどの情報の記憶のための任意の方法又は技術において実装された揮発性及び不揮発性媒体及び/又は取り外し可能な及び取り外し不可能な媒体の両方を含み得る。たとえば、メモリ1104は、オペレーティング・システムなど、(たとえば、プログラム及び/又はプログラム要素を表す)コンピュータ可読命令を記憶することができる。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ又は他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD:digital versatile disk)又は他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ又は他の磁気記憶デバイス、或いは、所望の情報を記憶するために使用し得る及び計算デバイス1100によってアクセスし得る任意の他の媒体を含み得るが、これらに限定されない。本明細書では、コンピュータ記憶媒体は、信号自体を含まない。
通信媒体は、搬送波などの変調データ信号又は他の移送機構においてコンピュータ可読命令、データ構造体、プログラム・モジュール、及び/又は他のデータ・タイプを実施することができ、任意の情報配信媒体を含む。「変調データ信号」という用語は、その特性セットのうちの1個又は複数を有する或いは信号内の情報をエンコードするような方式で変化した信号を指し得る。例として、しかし限定せず、通信媒体は、ワイヤード・ネットワーク又は直接ワイヤード接続などのワイヤード媒体と、音響、RF、赤外線及び他のワイヤレス媒体などのワイヤレス媒体とを含み得る。前述のいずれかの組合せもまた、コンピュータ可読媒体の範囲に含まれるべきである。
CPU1106は、コンピュータ可読命令を実行して計算デバイス1100の1個又は複数の構成要素を制御して本明細書に記載の方法及び/又はプロセスのうちの1個又は複数を実行するように構成され得る。CPU1106は、多数のソフトウェア・スレッドを同時に処理する能力を有する1個又は複数の(たとえば、1個、2個、4個、8個、28個、72個などの)コアをそれぞれ含み得る。CPU1106は、任意のタイプのプロセッサを含み得、実装された計算デバイス1100のタイプに応じて、異なるタイプのプロセッサを含み得る(たとえば、モバイル・デバイスのためのより少数のコアを有するプロセッサ、及びサーバのためのより多数のコアを有するプロセッサ)。たとえば、計算デバイス1100のタイプに応じて、プロセッサは、縮小命令セット計算(RISC:Reduced Instruction Set Computing)を使用して実装されたARMプロセッサ、又は複合命令セット計算(CISC:Complex Instruction Set Computing)を使用して実装されたx86プロセッサでもよい。計算デバイス1100は、計算コプロセッサなど、1個又は複数のマイクロプロセッサ又は補助コプロセッサ内の1個又は複数のCPU1106を含み得る。
GPU1108は、グラフィックス(たとえば、3Dグラフィックス)をレンダリングするために、計算デバイス1100によって使用され得る。GPU1108は、同時に数百又は数千のソフトウェア・スレッドを処理する能力を有する数百又は数千のコアを含み得る。GPU1108は、レンダリング・コマンド(たとえば、ホスト・インターフェースを介して受信されたCPU1106からのレンダリング・コマンド)に応答して、出力画像のための画素データを生成することができる。GPU1108は、画素データを記憶するための、ディスプレイ・メモリなどの、グラフィックス・メモリを含み得る。ディスプレイ・メモリは、メモリ1104の一部として含まれ得る。GPU708は、(たとえば、リンクを介して)並行して動作する2個以上のGPUを含み得る。結合されると、各GPU1108は、出力画像の異なる部分の又は異なる出力画像の画素データを(たとえば、第1のGPUは第1の画像のために及び第2のGPUは第2の画像のために)生成し得る。各GPUは、独自のメモリを含み得、他のGPUとメモリを共用し得る。
計算デバイス1100がGPU1108を含まない実例において、CPU1106は、グラフィックスをレンダリングするために使用され得る。
通信インターフェース1110は、ワイヤード及び/又はワイヤレス通信を含む、電子通信ネットワークを介して計算デバイス700が他の計算デバイスと通信することを可能にする、1個又は複数のレシーバ、トランスミッタ、及び/又はトランシーバを含み得る。通信インターフェース1110は、ワイヤレス・ネットワーク(たとえば、Wi-Fi(登録商標)、Z-Wave、ブルートゥース(登録商標)、ブルートゥース(登録商標)LE、ZigBee(登録商標)など)、ワイヤード・ネットワーク(たとえば、イーサネット(登録商標)介して通信すること)、低電力ワイド・エリア・ネットワーク(たとえば、LoRaWAN、SigFoxなど)、及び/又はインターネットなどの、いくつかの異なるネットワークのうちのいずれかを介する通信を可能にするための構成要素及び機能を含み得る。
I/Oポート1112は、そのうちのいくつかは計算デバイス1100に内蔵(たとえば、統合)され得る、I/O構成要素1114、提示構成要素1118、及び/又は他の構成要素を含む、他のデバイスに計算デバイス1100が論理的に連結されることを可能にすることができる。例示的なI/O構成要素1114は、マイクロフォン、マウス、キーボード、ジョイスティック、ゲーム・パッド、ゲーム・コントローラ、サテライト・ディッシュ、スキャナ、プリンタ、ワイヤレス・デバイスなどを含む。I/O構成要素1114は、エア・ジェスチャ、音声、又は、ユーザによって生成される他の生理的入力を処理する自然ユーザ・インターフェース(NUI:natural user interface)を提供することができる。場合によっては、入力は、さらなる処理のための適切なネットワーク要素に送信され得る。NUIは、音声認識、スタイラス認識、顔認識、生体認識、画面上での及び画面の隣でのジェスチャ認識、エア・ジェスチャ、頭部及び視標追跡、並びに計算デバイス1100のディスプレイに関連するタッチ認識(さらに詳しく後述するような)の任意の組合せを実装し得る。計算デバイス1100は、ジェスチャ検出及び認識のための、ステレオスコープ・カメラ・システム、赤外線カメラ・システム、RGBカメラ・システム、タッチ画面技術、及びこれらの組合せなど、深度カメラを含み得る。追加で、計算デバイス1100は、動きの検出を可能にする加速度計又はジャイロスコープを含み得る(たとえば、慣性測定ユニット(IMU:inertia measurement unit)の一部として)。いくつかの実例では、加速度計又はジャイロスコープの出力は、没入型拡張現実又は仮想現実をレンダリングするために、計算デバイス1100によって使用され得る。
電力供給装置1116は、ハードワイヤード電力供給装置、バッテリ電力供給装置、又はその組合せを含み得る。電力供給装置1116は、計算デバイス1100の構成要素が動作することを可能にするために計算デバイス1100に電力を提供することができる。
提示構成要素1118は、ディスプレイ(たとえば、モニタ、タッチ画面、テレビジョン画面、ヘッドアップ表示装置(HUD)、他のディスプレイタイプ、又はその組合せ)、スピーカ、及び/又は他の提示構成要素を含み得る。提示構成要素1118は、他の構成要素(たとえば、GPU1108、CPU1106など)からデータを受信し、データを(たとえば、画像、ビデオ、音響などとして)出力することができる。
本開示は、コンピュータ又は、携帯情報端末若しくは他のハンドヘルド・デバイスなどの、他のマシンによって実行されている、プログラム・モジュールなどのコンピュータ実行可能命令を含む、コンピュータ・コード又はマシン使用可能命令との一般的関連において説明されることがある。一般に、ルーティン、プログラム、オブジェクト、構成要素、データ構造体などを含むプログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ・タイプを実装するコードを指す。本開示は、ハンドヘルド・デバイス、家電製品、汎用コンピュータ、より特殊な計算デバイスなどを含む、様々な構成で実施され得る。本開示はまた、通信ネットワークを介してリンクされた遠隔処理デバイスによってタスクが実行される分散型コンピューティング環境において実施され得る。
本明細書では、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個を含み得る。
本開示の主題は、法定の要件を満たすために特異性を有して記述されている。しかしながら、その記述自体が本開示の範囲を制限することは意図されていない。そうではなくて、本発明者は、請求されている主題が、他の現在の又は未来の技術と併せて、異なるステップ又は本文書に記載されたものと類似のステップの組合せを含むように、他の形で実施され得ることを意図している。さらに、「ステップ」及び/又は「ブロック」という用語は、使用される方法の異なる要素を含意するように本明細書で使用され得るが、これらの用語は、個別のステップの順番が明示的に記載されていない限り及びそのように記載されているときを除いて本明細書で開示される様々なステップの間に何らかの特定の順番を暗示するものとして解釈されるべきではない。