CN114902295A - 用于自主驾驶应用的三维路口结构预测 - Google Patents
用于自主驾驶应用的三维路口结构预测 Download PDFInfo
- Publication number
- CN114902295A CN114902295A CN202080091188.9A CN202080091188A CN114902295A CN 114902295 A CN114902295 A CN 114902295A CN 202080091188 A CN202080091188 A CN 202080091188A CN 114902295 A CN114902295 A CN 114902295A
- Authority
- CN
- China
- Prior art keywords
- intersection
- data
- neural network
- vehicle
- sensor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000006870 function Effects 0.000 claims abstract description 96
- 238000013528 artificial neural network Methods 0.000 claims abstract description 95
- 238000012545 processing Methods 0.000 claims abstract description 50
- 230000008447 perception Effects 0.000 claims abstract description 9
- 238000000034 method Methods 0.000 claims description 110
- 230000008569 process Effects 0.000 claims description 49
- 239000013598 vector Substances 0.000 claims description 38
- 238000013135 deep learning Methods 0.000 claims description 11
- 238000004088 simulation Methods 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 abstract description 7
- 230000015654 memory Effects 0.000 description 56
- 238000012549 training Methods 0.000 description 39
- 238000013527 convolutional neural network Methods 0.000 description 31
- 238000001514 detection method Methods 0.000 description 31
- 238000004422 calculation algorithm Methods 0.000 description 29
- 238000004891 communication Methods 0.000 description 23
- 238000003860 storage Methods 0.000 description 22
- 238000010801 machine learning Methods 0.000 description 18
- 238000007726 management method Methods 0.000 description 16
- 238000013461 design Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 15
- 230000000007 visual effect Effects 0.000 description 13
- 230000002093 peripheral effect Effects 0.000 description 11
- 230000001133 acceleration Effects 0.000 description 10
- 230000008859 change Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 10
- 238000013439 planning Methods 0.000 description 9
- 238000012800 visualization Methods 0.000 description 9
- 238000011176 pooling Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 238000012805 post-processing Methods 0.000 description 6
- 230000003044 adaptive effect Effects 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 5
- 230000003190 augmentative effect Effects 0.000 description 5
- 238000007667 floating Methods 0.000 description 5
- 230000009467 reduction Effects 0.000 description 5
- 238000009877 rendering Methods 0.000 description 5
- 150000001875 compounds Chemical class 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000007613 environmental effect Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 210000002569 neuron Anatomy 0.000 description 4
- 230000002123 temporal effect Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000001815 facial effect Effects 0.000 description 3
- 239000000446 fuel Substances 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 125000000914 phenoxymethylpenicillanyl group Chemical group CC1(S[C@H]2N([C@H]1C(=O)*)C([C@H]2NC(COC2=CC=CC=C2)=O)=O)C 0.000 description 3
- 229920002451 polyvinyl alcohol Polymers 0.000 description 3
- 235000019422 polyvinyl alcohol Nutrition 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 239000000047 product Substances 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000036541 health Effects 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003595 spectral effect Effects 0.000 description 2
- 238000012706 support-vector machine Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000002604 ultrasonography Methods 0.000 description 2
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 1
- 101100248200 Arabidopsis thaliana RGGB gene Proteins 0.000 description 1
- 238000006424 Flood reaction Methods 0.000 description 1
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 1
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 1
- 206010034960 Photophobia Diseases 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000007621 cluster analysis Methods 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000002485 combustion reaction Methods 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000003066 decision tree Methods 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 238000003064 k means clustering Methods 0.000 description 1
- 208000013469 light sensitivity Diseases 0.000 description 1
- 238000012417 linear regression Methods 0.000 description 1
- 239000007788 liquid Substances 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000007477 logistic regression Methods 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000000513 principal component analysis Methods 0.000 description 1
- 238000007637 random forest analysis Methods 0.000 description 1
- 238000002310 reflectometry Methods 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000035939 shock Effects 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013526 transfer learning Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
Images
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60W—CONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
- B60W30/00—Purposes of road vehicle drive control systems not related to the control of a particular sub-unit, e.g. of systems using conjoint control of vehicle sub-units
- B60W30/18—Propelling the vehicle
- B60W30/18009—Propelling the vehicle related to particular drive situations
- B60W30/18154—Approaching an intersection
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60W—CONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
- B60W60/00—Drive control systems specially adapted for autonomous road vehicles
- B60W60/001—Planning or execution of driving tasks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/30—Determination of transform parameters for the alignment of images, i.e. image registration
- G06T7/33—Determination of transform parameters for the alignment of images, i.e. image registration using feature-based methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/764—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/50—Context or environment of the image
- G06V20/56—Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/60—Type of objects
- G06V20/64—Three-dimensional objects
- G06V20/647—Three-dimensional objects by matching two-dimensional images to three-dimensional objects
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60W—CONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
- B60W2520/00—Input parameters relating to overall vehicle dynamics
- B60W2520/06—Direction of travel
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60W—CONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
- B60W2552/00—Input parameters relating to infrastructure
- B60W2552/53—Road markings, e.g. lane marker or crosswalk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30248—Vehicle exterior or interior
- G06T2207/30252—Vehicle exterior; Vicinity of vehicle
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Mechanical Engineering (AREA)
- Transportation (AREA)
- Automation & Control Theory (AREA)
- Human Computer Interaction (AREA)
- Traffic Control Systems (AREA)
- Image Analysis (AREA)
Abstract
在各种示例中,可以使用基于处理二维(2D)输入数据的深度神经网络(DNN)来预测三维(3D)路口结构。为了训练DNN从2D输入准确地预测3D路口结构,可以使用将DNN的3D输出(在转换为2D空间后)与2D地面实况数据进行比较的第一损失函数和考虑一个或更多个几何约束来分析DNN的3D预测的第二损失函数来训练DNN——例如,路口的几何知识可用于惩罚与已知路口和/或道路结构几何形状不对齐的DNN预测。因此,DNN可以使用自主或半自主车辆的实时感知来从2D输入中检测路口结构的3D位置。
Description
背景技术
自主驾驶系统和高级驾驶员辅助系统(ADAS)可利用各种传感器(例如相机)来执行各种任务——例如车道保持、变道、车道分配、相机校准、转弯、路径规划和定位。例如,为了使自主和ADAS系统独立且高效地运行,可以生成对车辆的周围环境的实时或接近实时的理解。这种理解可以包括关于环境中的对象、障碍物、车道和/或路口(intersection)相对于各种分界线(例如车道、道路边界、相交线等)的位置的信息。周围环境的信息可以由车辆在做出决定时使用,例如要遵循什么路径或轨迹。
作为示例,在进行路径规划、避障和/或控制决策(例如在哪里停车、使用什么路径安全通过路口、其他车辆或行人可能位于的位置等)时,在自主或半自主车辆的环境中有关路口的位置和布局的信息可以证明很有价值。当车辆在城市和/或半城市驾驶环境中运行时这尤其重要,在城市和/或半城市驾驶环境中,由于变量数量相比于高速公路驾驶环境增加,因此路口场景理解和路径规划变得至关重要。例如,在双向多车道驾驶环境中,当车辆将执行左转弯穿过路口时,确定其他车道的位置和方向,以及确定人行横道或自行车道的位置,对于安全有效的自主和/或半自主驾驶至关重要。
在常规系统中,路口可以从车辆行驶表面的预存储的高清(HD)、三维(3D)地图中插值。例如,可以从HD地图中收集路口和周围区域的结构和方向。然而,使用HD地图进行路口识别和导航需要事先在HD地图中识别和记录车辆可能遇到的每个路口——这是一项耗时、繁重且具有挑战性的任务。例如,当需要手动标记较大的地理区域(例如,城市、州、国家)以使车辆能够在不同地区独立有效地行驶时,地图更新过程在逻辑上可能会更加复杂。
在其他常规系统中,可以训练深度神经网络(DNN)来预测二维(2D)图像空间中的路口信息,并且这些预测可以转换为3D世界空间坐标。但是,2D到3D坐标转换本质上是不准确的,因为需要平坦的地面假设。许多道路——尤其是在更多的城市环境中——并不平坦,如果不考虑驾驶表面的坡度或梯度,2D预测可能无法准确地映射到3D世界空间。考虑到这一点,一些DNN被训练来使用3D地面实况数据预测3D世界空间中的路口信息。然而,生成足够数量的准确可靠的3D地面实况数据(例如,从LIDAR数据)以有效训练DNN是昂贵的,并且注释LIDAR数据以生成地面实况信息是一项具有挑战性的任务。例如,从LIDAR点云中识别相交线、边界和/或其他信息是不可靠的,并且需要对每个训练数据的实例进行大量人工标记和注释。因此,这些常规DNN的端到端训练过程可能需要大量时间,并可能导致DNN不准确,其需要更长的时间来优化车辆中的部署。
发明内容
本公开的实施例涉及用于自主驾驶应用的三维(3D)路口结构预测。公开了使用深度神经网络(DNN)从图像空间中的二维(2D)图像数据预测世界空间中的3D路口结构(例如,入口线、出口线、人行横道、自行车道等的位置)的系统和方法。因此,与常规方法相比,当前的系统和方法为DNN提供了使用传感器平台的实时感知能力来从2D输入数据中检测路口结构的3D位置并利用该信息生成导航路口的路径的技术,例如,用于车辆或机器。这种方法为处理各种类型的路口提供了更大的可扩展性,无需为生成高清地图而手动单独地标记每个路口,通过使用平坦地面假设从2D感知结果计算3D路口结构所引入的不准确性,以及生成和准确地标记LIDAR点云以生成3D地面实况的挑战。在一些实施例中,实时感知方法可以与基于地图的方法结合执行——例如,在高质量地图数据可用的情况下——以提供冗余并进一步验证基于感知的方法的结果。
例如,为了训练DNN从2D图像准确预测3D路口结构,可以使用对应于2D地面实况数据的第一损失函数和对应于3D几何一致性的第二损失函数来训练DNN。第一损失函数可以将DNN的3D输出(在使用传感器的内部和/或外部参数转换为2D图像空间之后)与2D地面实况数据进行比较。鉴于一个或更多个几何约束,第二损失函数可以分析DNN的3D预测。例如,路口的几何知识可用于惩罚与已知几何不对齐的DNN预测。因此,在DNN的3D输出不平滑的情况下——例如,因为在物理3D现实世界中不可能实现量子跃迁——输出可能会受到惩罚。作为另一个示例,可以施加直线约束,使得路口入口或出口线不是直线的预测——或在直线的某个阈值内——受到惩罚。此外,可以施加车道宽度约束,以便在DNN的输出上强制执行一系列已知的车道宽度可能性,以便惩罚超出车道宽度某个阈值范围的预测。因此,一旦被训练并部署在车辆中,DNN就可以根据2D传感器数据准确地预测3D路口结构。
附图说明
下面参考所附附图详细描述用于自主驾驶应用的三维(3D)路口结构预测的本系统和方法,其中:
图1是示出根据本公开的一些实施例的用于训练神经网络以检测路口的示例过程的示例数据流图;
图2A-2B是根据本公开的一些实施例的用于生成用于训练神经网络以检测路口的地面实况数据的示例注释的图示;
图3A-3B是根据本公开的一些实施例的用于生成用于训练神经网络以检测路口的地面实况数据的示例注释的图示;
图4是根据本公开的一些实施例的将3D预测转换为二维(2D)空间以训练神经网络的示例图示;
图5是示出根据本公开的一些实施例的用于训练神经网络以检测路口的示例方法的流程图;
图6A是示出根据本公开的一些实施例的用于使用神经网络检测3D世界空间中的路口结构的示例过程的数据流图;
图6B是根据本公开的一些实施例的用于计算路口结构的示例神经网络的图示;
图7是示出根据本公开的一些实施例的用于使用神经网络检测3D世界空间中的路口结构的示例方法的流程图;
图8A是根据本公开的一些实施例的示例自主车辆的图示;
图8B是根据本公开的一些实施例的图8A的示例自主车辆的相机位置和视野的示例;
图8C是根据本公开的一些实施例的图8A的示例自主车辆的示例系统架构的框图;
图8D是根据本公开的一些实施例的基于云的服务器和图8A的示例自主车辆之间的通信的系统图;
图9是适合用于实现本公开的一些实施例的示例计算设备的框图;以及
图10是适合用于实现本公开的一些实施例的示例数据中心的框图。
具体实施方式
公开了与用于自主驾驶应用的三维(3D)路口结构预测相关的系统和方法。尽管可以关于示例自主车辆800描述本公开(在本文中可替代地称为“车辆800”或“自我车辆800”,其示例参照图8A-8D进行描述),但这并不旨在进行限制。例如,本文描述的系统和方法可以由但不限于非自主车辆、半自主车辆(例如,在一个或更多个自适应驾驶员辅助系统(ADAS)中)、有人驾驶和无人驾驶的机器人或机器人平台、仓库车辆、越野车辆、飞船、船只、穿梭车、应急响应车辆、摩托车、电动或机动自行车、飞机、工程车辆、水下航行器、无人机和/或其他车辆类型。此外,虽然本公开可以用用于车辆应用的路口结构来描述,但这并不旨在是限制,并且本文描述的系统和方法可以用于增强现实、虚拟现实、机器人、安全和监视、自主或半自主机器应用和/或任何其他技术空间,其中可以使用路口或其他环境结构和/或姿态的检测。
在部署中,可以使用位于或以其他方式布置在自主或半自主车辆上的传感器(例如,相机、RADAR传感器、LIDAR传感器等)接收和/或生成传感器数据(例如,2D图像、视频等)。传感器数据可以应用于神经网络(例如深度神经网络(DNN),诸如卷积神经网络(CNN)),神经网络被训练为识别与道路标记、道路边界、路口和/或由传感器数据表示的类似物相关的感兴趣区域(例如,凸起的路面标记、隆隆声带、彩色车道分隔线、人行道、人行横道、岔道等),以及与其相关的语义和/或方向信息。更具体地说,可以训练DNN以根据二维(2D)输入数据(例如,图像、距离图像或其他2D传感器数据表示)计算3D路口姿态,包括与定义3D路口姿态的线段相对应的一个或更多个关键点,并生成识别与关键点相对应的语义信息的输出和/或由其生成的线段(例如,人行横道、人行横道入口、人行横道出口、路口入口、路口出口等,或它们的组合),和/或其他信息。在一些示例中,计算的关键点可以是路口特征或线段的中心点和/或终点所在的3D世界空间位置,例如人行横道(例如,人行道)入口线、路口入口线、路口出口线、停车线、自行车道和/或人行横道出口线。因此,可以使用关键点、线段和/或相关(例如,语义)信息来确定路口的3D结构和姿态,其中3D结构可以包括用于车道、车道类型、关键点、线段、人行道、方向性、航向和/或与路口对应的其他信息的表示。
在训练期间,DNN可以使用2D图像或其他传感器数据表示进行训练,这些表示用表示车道、人行横道、入口线、出口线、自行车道、路口区域等的线段进行标记或注释,并且可以进一步包括与之对应的语义信息。在一些示例中,可以标记关键点以包括可以从中心点和/或宽度信息推断的车道的拐角点或端点(例如,表示路口结构的车道段的线段)。结果,可以使用这些关键点和/或需要有限标记的线段对路口结构进行编码,因为可以使用线段注释和语义信息来确定信息。在一些示例中,2D路口结构地面实况可以由与路口中的潜在感兴趣区域相对应的一组多边形和与其相对应的语义信息(例如,路口内部、路口外部等)来定义。然后,标记的线段和语义信息可用于与DNN的计算输出进行比较(例如,使用损失函数)(例如,在从3D世界空间转换为2D图像空间之后)。
为了训练DNN从2D输入图像预测3D路口结构,可以将DNN的3D路口结构预测投影——例如,使用生成2D图像的一个或更多个传感器的内部和/或外部参数——到二维图像空间。然后可以使用损失函数来测量2D路口地面实况数据的像素与3D预测的2D投影之间的距离。损失函数可用于最小化该距离以提高DNN的准确度或精度。因此,可以训练DNN以学习2D图像和世界空间中的3D路口结构之间的映射。
此外,可以将一个或更多个3D几何一致性约束(例如,通过损失函数)应用于DNN的3D预测,以训练DNN以根据几何约束来更准确地预测3D路口结构。关于现实世界的路口及其设计的知识可用于确定3D几何一致性约束。例如,车道宽度的平滑度约束、直线约束和/或统计可变性可以用作评估DNN输出的几何约束。不符合这些约束的输出可以使用对应于3D几何一致性约束的损失函数来惩罚。然后,总损失可能包括3D几何一致性损失和2D地面实况损失。可以训练DNN以最小化总损失,以便基于2D图像输入准确有效地预测3D路口结构。
一旦DNN被训练,DNN就可以预测3D世界空间中的对应于线段、关键点、路口区域、3D路口结构和/或与2D输入数据对应的其他输出的输出。在一些实施例中,可以将关键点的3D位置确定为每条线段的一个或更多个端点、预测线段的中心点或其组合。然后可以使用这些关键点的3D位置(例如,通过后处理器)来构建3D路口结构以供车辆在导航或穿越路口时使用。
在一些实施例中,一旦确定了关键点的3D位置,就可以执行任意数量的附加后处理操作,以便最终“连接点(或关键点)”并生成用于导航路口的路径。例如,可以连接关键点以生成表示用于穿过路口的潜在路径的折线。最终路径可以被分配路径类型,其可以相对于车辆的位置、关键点的位置等来确定。潜在的非限制性路径类型包括:左转、右转、切换车道和/或继续车道。也可以实施曲线拟合以确定最准确地反映潜在路径的自然驾驶曲线的最终形状。可以使用折线拟合、多项式拟合、回旋拟合和/或其他类型的曲线拟合算法来执行曲线拟合。潜在路径的形状可以基于位置、航向矢量(例如角度)、语义信息和/或与要连接的关键点相关联的其他信息来确定。可以对可能潜在地被相互连接的所有关键点重复曲线拟合过程,以生成车辆可以采取的用于导航路口的所有可能的路径。在一些示例中,可以基于与此类路径相关联的交通规则和物理限制从考虑中去除不可行路径。
在一些实施例中,匹配算法可用于连接关键点并为车辆生成潜在路径以导航路口。在这样的示例中,可以基于关键点的位置、航向向量、语义信息和/或关键点对之间的拟合曲线的形状来确定每对关键点的匹配分数。在一些示例中,可以使用诸如匈牙利匹配(Hungarian matching)算法的线性匹配算法。在其他示例中,可以使用诸如光谱匹配算法之类的非线性匹配算法来连接一对关键点。
在任一示例中,一旦确定了通过路口的路径,该信息就可用于由车辆执行一个或更多个操作。例如,世界模型管理器可以更新世界模型以帮助导航路口,自动驾驶软件堆栈的路径规划层可以使用路口信息来确定通过路口的路径(例如,沿着确定的潜在路径之一),和/或控制组件可以确定车辆的控制,以根据确定的路径导航路口。
训练DNN以计算3D路口结构
现在参考图1,图1是图示出根据本公开的一些实施例的用于训练深度神经网络(DNN)104以检测路口的示例过程100的示例数据流图。应当理解,本文描述的这种和其他布置仅作为示例提出。除了所示的那些之外或代替所示的那些,可以使用其他布置和元素(例如,机器、接口、功能、命令、功能分组等),并且可以完全省略一些元素。此外,这里描述的许多元素是功能实体,它们可以实现为离散或分布式组件或与其他组件结合,并以任何合适的组合和位置实现。在此描述为由实体执行的各种功能可以由硬件、固件和/或软件来执行。例如,可以通过处理器执行存储在存储器中的指令来执行各种功能。在一些实施例中,根据过程100的神经网络的训练可以至少部分地使用如本文关于图9的示例计算设备900和/或图10的示例数据中心1000所描述的类似组件、特征和/或功能来实现。
过程100可以包括从一个或更多个传感器生成和/或接收传感器数据102。作为非限制性示例,传感器数据102可以从车辆(例如,如本文所述的图8A-8C的车辆800)的一个或更多个传感器接收。传感器数据102可以由车辆使用,并且在过程100内,用于训练一个或更多个DNN 104以至少部分地根据2D输入数据(例如,相机图像)来检测3D中的路口。在训练期间,传感器数据102可以使用一个或更多个数据收集车辆来生成,这些数据收集车辆生成用于训练DNN的传感器数据,例如DNN 104,和/或传感器数据102可以预先生成并被包括在训练数据集中。在训练期间使用的传感器数据102可以附加地或替代地使用模拟传感器数据(例如,使用虚拟环境中的虚拟车辆的一个或更多个虚拟传感器生成的传感器数据)来生成。一旦在车辆800中训练和部署,传感器数据102就可由车辆800的一个或更多个传感器生成并由DNN 104处理以计算3D路口结构、语义信息和/或对应于路口的方向信息。
因此,传感器数据102可以包括但不限于来自车辆的任何传感器的传感器数据102,包括例如并参考图8A-8C的RADAR传感器860、超声波传感器862、LIDAR传感器864、立体相机868、广角相机870(例如鱼眼相机)、红外相机872、环绕相机874(例如,360度相机)、远程和/或中程相机878和/或其他传感器类型。作为另一个示例,传感器数据102可以包括从虚拟(例如,测试)环境中的虚拟车辆或其他虚拟对象的任意数量的传感器生成的虚拟(例如,模拟的或增强的)传感器数据。在这样的示例中,虚拟传感器可以对应于模拟环境中的虚拟车辆或其他虚拟对象(例如,用于测试、训练和/或验证神经网络性能),并且虚拟传感器数据可以表示由模拟或虚拟环境中的虚拟传感器捕获的传感器数据。因此,通过使用虚拟传感器数据,可以在模拟环境中使用模拟的或增强的数据来测试、训练和/或验证本文描述的DNN 104,这可能允许在真实环境之外测试更极端的场景,在这些场景中,此类测试可能不太安全。
在一些实施例中,传感器数据102可以包括表示图像的图像数据、表示视频的图像数据(例如,视频的快照)和/或表示传感器的传感场的表示的传感器数据(例如,LIDAR传感器的深度图、超声波传感器的值图等)。在传感器数据102包括图像数据的情况下,可以使用任何类型的图像数据格式,例如但不限于,诸如联合图像专家组(JPEG)或亮度/色度(YUV)格式的压缩图像,作为源自压缩视频格式(例如H.264/高级视频编码(AVC)或H.265/高效视频编码(HEVC))的帧的压缩图像,原始图像,例如源自红透明蓝(RCCB)、红透明(RCCC)或其他类型的成像传感器和/或其他格式。此外,在一些示例中,传感器数据102可以在没有任何预处理(例如,以原始或捕获格式)的情况下在过程100内使用,而在其他示例中,传感器数据102可以经历预处理(例如噪声平衡、去马赛克、缩放、裁剪、增强、白平衡、色调曲线调整等,例如使用传感器数据预处理器(未示出))。如本文所使用的,传感器数据102可以参考未处理的传感器数据、预处理的传感器数据或其组合。
用于训练的传感器数据102可以包括原始图像(例如,由一个或更多个图像传感器捕获的)、下采样图像、上采样图像、裁剪或感兴趣区域(ROI)图像,以其他方式增强的图像和/或它们的组合。DNN 104可以使用图像(和/或其他传感器数据102)以及相应的地面实况数据(例如,2D地面实况数据116)来训练。地面实况数据可以包括注释、标签、掩模(mask)等。例如,在一些实施例中,2D地面实况数据可以对应于路口区域或线段的注释、路口区域或线段的分类、和/或与其相关联的方向信息——例如,如关于图2A-2B和3A-3B所描述的。在一些实施例中,2D地面实况数据116可以类似于在2020年4月14日提交的美国非临时申请No.16/848,102、2020年6月24日提交的美国非临时申请No.16/911,007和/或2020年3月10日提交的美国非临时申请No.16/814,351中描述的地面实况数据,在此通过引用将其全部并入。
在一些示例中,在注释被用于生成2D地面实况数据116的情况下,注释可以在绘图程序(例如,注释程序)、计算机辅助设计(CAD)程序、标记程序、适合于生成注释的另一种类型的程序中生成,和/或可以是手绘的。在任何示例中,2D地面实况数据116可以合成产生(例如,从计算机模型或渲染生成)、实际产生(例如,根据真实世界数据设计和产生)、机器自动化(例如,使用特征分析并学习从数据中提取特征,然后生成标签)、人工注释(例如,标记器或注释专家,定义标签的位置)和/或它们的组合(例如,人类识别中心或原点以及区域的尺寸,机器为路口区域生成多边形和/或标签)。
路口区域可以包括与描绘路口的感兴趣区域的边界形状(例如多边形)相对应的注释或其他标签类型。在一些示例中,路口区域可以由对应于人行横道区域、路口入口区域、路口出口区域、不清楚区域、无车道区域、路口内部区域、部分可见区域、完全可见区域等的一个或更多个多边形描绘——例如,在传感器数据102的传感器数据表示内。多边形可以被生成为边界框。可以为每个图像(或其他传感器数据表示类型)和/或为由用于训练DNN104的传感器数据102表示的图像中的每一个或更多个多边形生成对应于2D地面实况数据116的语义信息(例如,分类)。分类的数量可以对应于DNN 104被训练为预测的特征的数量和/或类型,或者对应于相应图像中的路口区域的数量和/或特征的类型。
根据实施例,语义信息可以对应于与特征类型或路口区域类别相对应的分类或标签,例如但不限于人行横道区域、路口入口区域、路口出口区域、不清楚区域、无车道区域、路口内部区域、部分可见区域、完全可见区域等。在一些示例中,分类最初可以对应于路口内部区域和/或路口外部区域。路口内部区域分类可以指路口区域,该路口区域包括路口内部的区域,在该路口内部的区域中,在各个方向上穿过路口的车辆的路径可以交叉。路口外部区域分类可以指包括路口内部区域之外的区域的路口区域。
被分类为路口外部区域的路口区域的每一个还可以被标记有对应于与路口出口区域的特征类型对应的属性的分类,例如包括且不限于人行横道区域、路口入口区域、路口出口区域、不清楚区域、无车道区域等。具体地,路口入口属性可以对应于一个或更多个车辆将要从各个不同方向进入相应路口的路口区域。路口出口区域可以对应于最近在各个方向上离开路口的一个或更多个车辆可以位于的一个或更多个路口区域。应当理解,关于路口出口区域的信息可能特别重要,因为车辆800必须安全地穿过路口出口区域以便安全地穿过路口。类似地,人行横道区域可以指对应于位于路口内部区域之外的人行横道的路口区域。被分类为“无车道区域”的区域可以对应于不允许车辆穿越的路口区域,例如自行车道、人行道等。“不清楚区域”属性可以对应于车辆行驶方向不明确的路口区域。此外,路口内部区域和路口外部区域类别的分类还可包括完全可见区域和/或部分可见区域属性之一。在示例中,在分类包括完全可见区域属性或类别标签的情况下,相应的路口区域可以包括例如没有任何障碍物的完全可见表面。相反,在分类包括部分可见区域属性或类别标签的情况下,相应的路口区域可以包括障碍物,例如遮挡,使得该区域中的驾驶表面在相应的传感器数据102中仅部分可见。本文描述的标记本体仅用于示例目的,并且在不脱离本公开的范围的情况下可以使用附加的和/或替代的类别标签。
作为非限制性示例,并且关于图2A-2B,图2A-2B图示了根据本公开的一些实施例的对应于传感器数据102的示例注释,用于在地面实况生成中用于训练DNN以检测路口。例如,图2A图示了可用于根据图1的训练过程100生成地面实况数据的图像200A的示例标记(例如,对应于语义信息)。图像中的路口区或区域可以由路口区域(例如,区域204A、204B、206、208、210A和210B)和相应的分类(例如,“路口内部”、“部分可见”、“车辆出口”、“车辆入口”、“部分可见”、“人行横道”等)。例如,路口区域204A可以使用多边形来标记并且被分类为具有一个或更多个属性,例如“路口入口”和“部分可见”。类似地,路口区域204B、206、208、210A和210B可以使用多边形来标记,其中路口204B可以被分类为具有一个或更多个属性,例如“车辆入口”和“部分可见”,路口区域206可以被分类为具有一个或更多个属性,例如“人行横道”和“部分可见”,路口区域208可以被分类为具有一个或更多个属性,例如“路口内部”和“部分可见”,路口区域210A可以被分类为具有一个或更多个属性,例如“车辆出口”和“部分可见”,并且路口区域210B可以被分类为具有一个或更多个属性,例如“车辆出口”和“完全可见”。在一些示例中,还可以用匹配颜色的多边形(或语义信息的一些其他视觉指示)来注释属于共同类别或分类的每个路口区域。例如,路口区域204A和204B的多边形可以具有相同的颜色和/或样式,因为它们都被归类为车辆入口分类。类似地,路口区域210A和210B的多边形可以使用相同的颜色和/或样式来注释,因为它们都被归类为车辆出口分类。系统100可以知道这些标记或注释样式对应于特定类别,并且该信息可以用于生成用于训练DNN 104的经编码的地面实况数据。
现在参考图2B,图2B图示了根据本发明的一些实施例的应用于传感器数据以训练DNN 104以检测路口区域的注释的另一个示例。如本文所描绘的,路口区域222A-222C、224A-224C、226A-226B、228A-228B和230可以用多边形和相应的分类(例如,“路口内部”、“部分可见”、“车辆出口”、“车辆入口”、“部分可见”、“人行横道”等)进行注释。例如,路口区域222A、222B和222C可以使用相似的颜色和/或样式多边形进行标记,并分类为“车辆入口”和“部分可见”中的一个或更多个。类似地,路口区域224A、224B和224C可以使用相似的颜色和/或样式多边形来标记并且分类为“人行横道”、“完全可见”和“部分可见”中的一个或更多个。路口区域226A和226B可以使用相似的颜色和/或样式多边形来标记并且分类为“无车道”、“完全可见”和部分可见中的一个或更多个。路口区域228A和228B可以使用相似的颜色和/或样式多边形进行标记,并分类为“车辆出口”、“完全可见”和“部分可见”中的一个或更多个。路口区域230可以使用多边形标记并且分类为“路口内部”和“部分可见”中的一个或更多个。
对于相同的分类,注释可以具有相似的视觉表示。如图所示,路口区域222A、222B和222C可被分类为车辆出口区域。以此方式,可以以类似的方式对图像的类似分类的特征进行注释。此外,应当注意,分类可以是复合名词。不同的分类标签可以在图2B中用实线、虚线等表示,以表示不同的分类。此外,不同的分类标签可以是名词和/或复合名词。这并非旨在进行限制,并且可以使用任何分类命名约定来说明图像中特征(例如,路口区域)的分类标签的差异。
作为用于2D地面实况数据116生成的附加或替代选项,可以生成与传感器数据102相关联的车道(或线)标签。例如,可以生成与对应于路口的特征或感兴趣区域对应的注释或其他标签类型。在一些示例中,路口结构可以被定义为与传感器数据102中的车道、人行横道、入口线、出口线、自行车道等相对应的一组线段。线段可以生成为折线,每条折线的中心被定义为对应线段的中心。可以为每个图像(和/或其他传感器数据表示)和/或为由用于训练DNN 104的传感器数据102表示的图像中的每一个或更多个线段和中心生成语义信息(例如,分类)。与上述类似,分类的数量可以对应于训练DNN 104以预测的特征的数量和/或类型,或者对应于各个图像中的车道的数量和/或特征的类型。根据实施例,分类可以对应于与特征类型相对应的分类或标签,例如但不限于人行横道、人行横道入口、人行横道出口、路口入口、路口出口和/或自行车道。
在一些示例中,可以基于注释来确定路口结构。在这样的示例中,可以从车道标签确定一组关键点,其中每个关键点对应于延伸穿过车道的对应线段的中心(或左边或右边等)。尽管主要相对于车道段的中心点来描述关键点,但这并非旨在进行限制,并且在一些示例中,每个车道的拐角或端点也可以被确定为传感器数据102的各个实例的关键点。例如,每个车道的拐角或端点可以从中心关键点和车道的方向性推理,或者从车道标签或注释本身推理。此外,可以从注释中(例如,从车道标签和分类中)确定多个车道或线段以及与来自每个车道的每个线段相对应的航向、方向性、宽度和/或其他几何形状。因此,即使注释可能不直接指示某些路口结构或姿态信息——例如前进方向、车道宽度和/或车道的方向性——但也可以分析或处理注释以确定该信息。
例如,如果第一车道标签沿车道宽度延伸并包括“人行横道入口”的分类,而第二车道标签沿同一车道的宽度延伸并包括“人行横道出口_路口入口”的分类,则可以使用该信息来确定车道的前进方向(例如,从第一车道标签到第二车道标签)(例如,车辆将沿着穿过第一车道标签朝向第二车道标签的方向行驶)。此外,车道标签可以指示车道的方向性(例如,角度),并且可以根据该信息确定前进方向(例如,角度)——例如通过计算车道标签的法线。
现在参考图3A-3B,图3A-3B示出了根据本公开的一些实施例的被应用于传感器数据102的示例注释,以用于2D地面实况数据116生成来训练DNN 104以检测路口结构和姿态。例如,图3A图示了可用于根据图1的训练过程100生成2D地面实况数据116的图像300A的示例标记(例如,对应于注释)。图像中的车道可以用车道标签(例如,车道304、306、310和312)和对应的分类(例如,行人入口、路口出口、路口入口、行人出口、无车道)进行注释。例如,车道304可以使用线段标记并且被分类为路口入口和行人入口中的一个或更多个。类似地,车道306、车道308和车道310可以使用线段来标记,其中车道306可以被分类为路口入口和行人出口中的一个或更多个,车道308可以被分类为路口入口和行人出口中的一个或更多个,并且车道312可以被分类为无车道。
此外,车道304、306和308的标签还可以用对应的前进方向进行注释,如箭头302A-302V所示。前进方向可以表示属于某个车道的交通的方向。在一些示例中,前进方向可以与其对应的车道标签的中心(或关键)点相关联。例如,前进方向302S可以与车道304的中心点相关联。不同的分类标签可以在图3A中通过不同的线类型——例如,实线、虚线等——来表示以表示不同的分类。然而,这并非意在限制,车道标签及其分类的任何可视化可以包括不同的形状、图案、填充、颜色、符号和/或其他标识符,以说明图像中的特征(例如,车道)的分类标签的差异。
现在参考图3B,图3B示出了根据本发明的一些实施例的被应用于传感器数据以训练机器学习模型以检测路口结构和姿态的注释的另一个示例。这里,图像300B中的车道322A和322B可以用线段来注释。对应于车道322B的线段可以被注释为在车辆上延伸。这可以帮助训练DNN 104以预测关键点的位置,即使实际位置可能被遮挡。因此,道路中车辆或其他物体的存在可能不会削弱系统生成通过路口的建议路径的能力。对于相同的分类,注释可以具有相似的视觉表示。如图所示,车道322A和322B可以被分类为路口入口线停止线。以这种方式,可以以类似的方式注释图像的类似分类的特征。此外,应该注意,分类可以使用复合名词来表示。不同的分类标签可以在图3B中用实线、虚线等来表示,以表示不同的分类。此外,不同的分类标签可以是名词和/或复合名词。这不是限制性的,任何分类的命名约定都可以用来说明图像中特征(例如,车道)的分类标签的差异。
编码器可以被配置为使用注释对与路口结构和姿态相对应的2D地面实况数据116进行编码。例如,如本文所述,即使注释可以限于车道标签和分类,诸如关键点、车道数量、前进方向、方向性和/或其他结构和姿态信息的信息也可以从注释中确定。一旦确定了该信息,编码器就可以对该信息进行编码以生成2D地面实况数据116。例如,可以使用与车道相对应的线段的方向的法线来确定与车道相对应的航向角,并且可以使用语义或分类信息来确定前进方向(例如,当线段对应于人行横道入口并且该线段之后的下一条线段对应于人行横道出口和路口入口时,可以将前进方向确定为从该线段朝向下一个线段,前进到路口)。一旦从注释中确定了方向性(例如,车道的角度或其他几何形状),就可以确定方向向量并将其归于线段——例如表示线段的关键点(例如,中心关键点)。类似地,一旦确定了航向(例如,从方向性——作为其法线——或其他方式),就可以确定航向向量并将其归于线段——例如归于表示线段的关键点。例如,一旦确定了航向(例如,与车辆沿车道行驶的方向相对应的角度),就可以确定航向向量并将其归于线段——例如代表线段的关键点。
一旦为传感器数据102的每个实例(例如,为传感器数据102包括图像数据的每个图像)生成2D地面实况数据116,就可以使用2D地面实况数据116来训练DNN 104以直接计算3D路口结构(例如,包括路口的线段的位置以及与其相关联的语义信息)。例如,DNN 104可以生成输出106,并且可以使用损失函数114将输出106与对应于传感器数据102和/或3D几何一致性约束118的各个实例的2D地面实况数据116进行比较。例如,关于2D地面实况数据116,DNN 104的3D输出108可以被转换(例如,使用3D到2D转换器112)到2D空间,用于使用一个或更多个损失函数114与2D地面实况数据116进行比较。
DNN 104可以最初输出3D世界空间中的(x,y,z)坐标的任意初始化值(例如,3D输出108),这将使用损失函数114随时间而改进。例如,3D输出108可以对应于关键点的3D世界空间位置,该关键点对应于标示传感器数据102(例如,2D相机图像或其他2D图像数据表示)中描绘的路口的线段。因此,中心关键点和/或结束关键点——每个都包括3D世界空间中相对于车辆800的原点的对应(x,y,z)位置(例如,车辆上的一个点,例如车轴的中心,车辆的最前点、车辆的最高点等)——可用于(例如,连接)生成对应于路口的线段。例如,可以将3D输出108计算为3D世界空间中的每个点(例如,对于目标或设计空间中的每个(x,y,z)坐标)的关于该点是否对应于关键点(和/或线段)的置信度。当结合语义信息110时,3D世界空间中的每个点对于每种类型的语义类别都可以具有相关联的置信度,并且阈值置信度可以用于过滤掉不具有高于阈值置信度的语义类别的点。因此,如果一个点对任何类别具有高于阈值置信度,则预测可以是在该位置存在一个关键点(或线段),并且该关键点(或线段)属于高于阈值置信度的(一个或更多个)类别。
然而,因为生成足够大数量的准确和可靠的3D地面实况数据可能具有挑战性,因此过程100可以使用2D地面实况数据116训练DNN 104。因此,可以使用3D到2D转换器将路口关键点的3D世界空间中的预测位置或与其对应的线段转换为2D空间。例如,3D到2D转换器可以使用传感器的内在的(例如,光学中心、焦距、偏斜系数等)和/或外在的(例如,3D世界空间中的传感器位置(例如,相对于车辆800的原点)、旋转、平移、从3D世界空间到3D相机坐标系的变换等)参数,该传感器生成传感器数据102的实例以将值从3D世界空间转换为2D图像空间。
然后可以将路口关键点(或由其构造的线段)的从3D转换的2D位置与2D地面实况数据116中的关键点(或线段)的已知2D位置进行比较。例如,2D地面实况数据116可以包括一组具有与其对应的语义和/或方向信息的折线段(例如,如关于图3A-3B所描述的)和/或一组表示路口中的潜在竞争区域的多边形区域连同与其对应的语义信息(例如,如关于图2A-2B所描述的)。在一些实施例中,除了在此描述的2D地面实况数据116格式之外或替代地,可以使用其他2D地面实况数据116格式或样式而不背离本公开的范围。在任何实施例中,DNN 104的3D坐标预测(例如,3D输出108)可以被投影到与2D地面实况数据116相同的2D(例如,图像)空间,并且损失函数114可以用于比较2D地面实况数据116与路口特征的经转换2D位置之间的距离。通过最小化距离,DNN 104的预测精度得到提高,并且随着时间的推移,DNN 104学会在从(例如,2D)传感器数据102提取的2D路口结构信息和3D世界空间中的3D路口结构之间进行映射。此外,对于每个关键点和/或线段,DNN 104输出的语义信息110可以与来自2D地面实况数据116的语义信息进行比较。此外,3D输出108可以包括方向向量和/或语义信息110可以指示对应于关键点和/或线段的方向。因此,来自输出106的该信息可用于确定与关键点和/或线段相关联的方向,该方向可与来自2D地面实况数据116的方向向量和/或航向信息进行比较(如本文所述,例如关于图3A-3B)。
作为示例并且关于图4,图4是根据本公开的一些实施例的将3D输出108转换为2D空间以训练神经网络的示例说明。例如,3D输出108A可以对应于与传感器数据102的实例对应的DNN 104的3D输出108的可视化——例如,与图3A和图4的图像300A的2D地面实况数据116对应的实例。3D输出108A可以包括对应于车辆上的某个原点的(0,0,0)原点,并且可以从左到右横向延伸到设计或目标空间的范围,前后纵向返回地延伸到设计空间的范围,并上下竖直地延伸到设计空间的范围(由于俯视图,未图示)。在非限制性实施例中,设计空间可以是40米宽(例如,x轴)、100米长(例如,y轴)和3米高(例如,z轴)。然而,可以使用任何设计空间。可以基于对多个路口(例如,数百、数千等)的分析来选择设计空间,以确定与路口的维度相对应的平均值、均数或其他值,从而使设计空间可能至少与车辆可能遇到的任何路口一样大。在图4的示例可视化中,显示的横向(x轴)范围从-16米延伸到+16米,显示的纵向(y轴)范围从0米延伸到28米,竖直范围(由于自上而下的可视化而未显示)从0米延伸到3米。这样,可以在设计空间内预测DNN 104的3D输出108。在图4的例子中,可以使用3D到2D转换器112将3D输出转换为2D图像空间,如可视化400所示。例如,可视化400可以包括覆盖在图像300A上的DNN104的2D经转换的预测,并且图像300A可以包括对应于该图像的2D地面实况数据116。这样,对应于2D地面实况数据116的损失函数114可用于比较DNN 104的经转换输出与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几何约束并将其用于与DNN 104的计算的3D输出108进行比较。例如,3D几何一致性约束118可以包括一个平滑项,因为在宏观尺度上,物理3D现实世界中没有量子飞跃。因此,包括非平滑预测的3D输出108——例如,完全不相交的线段、在x、y和/或z方向中的任何方向上彼此偏移的线段,和/或其他非平滑线段——可以使用对应于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不旨在进行限制,并且在不脱离本公开的范围的情况下,可以使用附加约束或替代约束。
因此,考虑到2D地面实况数据116和/或3D几何一致性约束118,来自损失函数114的反馈可用于更新DNN 104的参数(例如,权重和偏差)直到DNN 104收敛到可接受或期望的精度。使用过程100,可以训练DNN104以从使用损失函数114的传感器数据102、2D地面实况数据116和3D几何一致性约束来准确地预测输出106——例如,3D输出108和/或语义信息110。如本文所述,在一些示例中,不同的损失函数114可用于训练DNN104以预测不同的输出106。例如,第一损失函数114可用于将3D到2D经转换的输出106与2D地面实况数据进行比较,第二损失函数114可以用于将3D输出与3D几何一致性约束118进行比较。在这样的示例中,两个或更多个损失函数114可以被加权(例如,相等地、不同地等)以生成可用于更新DNN104的参数的最终损失值。
现在参考图5,本文描述的方法500的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,可以通过处理器执行存储在存储器中的指令来执行各种功能。方法500也可以体现为存储在计算机存储介质上的计算机可用指令。方法500可以由独立应用程序、服务或托管服务(独立或与另一托管服务组合)或另一产品的插件提供,仅举几例。此外,作为示例,关于图1的过程100描述了方法500。然而,这些方法可以附加地或替代地由任何一个过程和/或任何一个系统、或过程和/或系统的任何组合执行,包括但不限于本文描述的那些。
图5是示出根据本公开的一些实施例的用于训练神经网络以检测路口的示例方法500的流程图。在框B502,方法500包括向神经网络应用表示2D空间中的传感器数据表示的传感器数据。例如,表示图像(或其他传感器数据表示)的传感器数据102可以被应用于DNN104。
在框B504,方法500包括使用神经网络并且至少部分地基于传感器数据来计算表示3D世界空间位置的数据。例如,DNN 104可以在处理传感器数据102之后计算输出106——在实施例中具体地计算3D输出108。
在框B506,方法500包括将3D世界空间位置转换为2D空间以生成2D空间位置。例如,3D到2D转换器112可以使用生成传感器数据102的传感器的内在和/或外在参数将3D输出108转换到2D(图像)空间。
在框B508,方法500包括使用第一损失函数将2D空间位置与和传感器数据相关联的2D空间地面实况位置进行比较。例如,可以使用第一损失函数114将DNN 104的3D到2D经转换的输出与2D地面实况数据116进行比较。
在框B510,方法500包括使用第二损失函数将3D世界空间位置与一个或更多个几何一致性约束进行比较。例如,可以使用第二损失函数将DNN 104的3D输出108与3D几何一致性约束118进行比较。
在框B512,方法500包括至少部分地基于将2D空间位置与2D空间地面实况位置进行比较以及将3D世界空间位置与一个或更多个几何一致性约束进行比较来更新神经网络的一个或更多个参数。例如,可以使用训练引擎或优化器,基于第一损失函数和第二损失函数的输出来更新DNN104。可以针对在训练DNN 104中使用的传感器数据102的每个实例重复该过程,直到DNN收敛到可接受的准确度水平。
部署DNN以计算3D路口结构
现在参考图6A,图6A是示出根据本公开的一些实施例的用于使用神经网络检测3D世界空间中的路口结构的示例过程600的数据流图。应当理解,这里描述的这种和其他布置仅作为示例阐述。除了所示的那些之外或代替所示的那些,可以使用其他布置和元素(例如,机器、接口、功能、次序、功能分组等),并且可以完全省略一些元素。此外,这里描述的许多元素是功能实体,它们可以实现为离散或分布式组件或与其他组件结合,并以任何合适的组合和位置实现。在此描述为由实体执行的各种功能可以由硬件、固件和/或软件来执行。例如,可以通过处理器执行存储在存储器中的指令来执行各种功能。在一些实施例中,可以至少部分地使用如本文关于图9的示例计算设备900和/或图10的示例数据中心1000描述的类似组件、特征和/或功能来实施根据该过程的神经网络100的训练。
过程600可以包括接收和/或生成传感器数据102。例如,传感器数据102可以类似于关于图1描述的传感器数据102。例如,传感器数据102可以在车辆800的操作期间使用车辆800的一种或更多种传感器类型生成。传感器数据102——例如,2D传感器数据——可以应用于DNN 104,并且DNN 104可以计算输出106。输出106可以包括3D输出108、对应于3D输出的语义信息和/或对应于3D输出的方向信息(例如,与每个关键点和/或线段相关联的方向和/或航向),如本文关于图1所描述的。
DNN 104可以使用传感器数据102来计算输出106,其最终可被应用于解码器或一个或更多个其他后处理组件,以生成关键点、分类、多个车道、车道航向、车道方向和/或其他信息。尽管本文关于使用深度神经网络(DNN),特别是卷积神经网络(CNN)描述了示例,但这并不旨在进行限制。例如但不限于,DNN 104可以包括任何类型的机器学习模型,例如使用线性回归、逻辑回归、决策树、支持向量机(SVM)、朴素贝叶斯、k-最近邻()、K均值聚类、随机森林、降维算法、梯度提升算法、神经网络(例如,自动编码器、卷积、循环、感知器、长/短期记忆/LSTM、Hopfield、玻尔兹曼、深度信念、反卷积、生成对抗、液体状态机等)、车道检测算法、计算机视觉算法的机器学习模型和/或其他类型的机器学习模型。
作为示例,例如在DNN 104包括CNN的情况下,DNN 104可以包括任何数量的层。一个或更多个层可以包括输入层。输入层可以保存与传感器数据102相关联的值(例如,在后处理之前或之后)。例如,当传感器数据102是图像时,输入层可以将表示图像的原始像素值的值保存为体(例如,宽度、高度和颜色通道(例如,RGB),例如32x32x3)。
一个或更多个层可以包括卷积层。卷积层可以计算连接到输入层中的局部区域的神经元的输出,每个神经元计算它们的权重与它们在输入体中连接到的小区域之间的点积。卷积层的结果可以是另一个体,其中一个维度基于所应用的过滤器的数量(例如,宽度、高度和过滤器的数量,例如32x32x12,如果12是过滤器的数量的话)。
一个或更多个层可以包括反卷积层(或转置卷积层)。例如,反卷积层的结果可能是另一个体积,其维度高于在反卷积层接收的数据的输入维度。
一个或更多个层可以包括整流线性单元(ReLU)层。例如,ReLU层可以应用逐元素激活函数,例如max(0,x)、阈值设置为零。ReLU层的结果体可以与ReLU层的输入体相同。
一个或更多个层可以包括池化层。池化层可以沿着空间维度(例如高度和宽度)执行下采样操作,这可导致比池化层的输入更小的体(例如,来自32x32x12输入体的16x16x12)。
一个或更多个层可包括一个或更多个全连接层。全连接层中的每个神经元都可以连接到前面体中的每个神经元。全连接层可以计算类别分数,结果体可以是1x1x类别数。在一些示例中,CNN可以包括一个或更多个全连接层,使得CNN的一个或更多个层的输出可以作为输入提供给CNN的一个或更多个全连接层。在一些示例中,一个或更多个卷积流可以由DNN 104实现,并且一些或所有卷积流可以包括相应的全连接层。
在一些非限制性实施例中,DNN 104可以包括一系列卷积层和最大池化层以促进图像特征提取,随后是多尺度扩张卷积和上采样层以促进全局上下文特征提取。
尽管本文关于DNN 104讨论了输入层、卷积层、池化层、ReLU层和全连接层,但这并不旨在进行限制。例如,可以在DNN 104中使用附加或替代层,例如归一化层、SoftMax层和/或其他层类型。
在DNN 104包括CNN的实施例中,可以根据实施例使用CNN的不同顺序和数量的层。换言之,DNN 104的层的顺序和数量不限于任何一种架构。
此外,某些层可包括参数(例如权重和/或偏差),例如卷积层和全连接层,而其他层可不包括,例如ReLU层和池化层。在一些示例中,参数可以在训练期间由DNN 104学习。此外,某些层可包括额外的超参数(例如,学习率、步幅、时期等),例如卷积层、全连接层和池化层,而其他层可不包括,例如ReLU层。参数和超参数不受限制并且可以根据实施例而不同。
作为DNN的一个例子,图6B示出了根据本公开的一些实施例的用于计算路口结构的示例DNN 104A。例如,DNN 104A可以包括编码器-解码器类型的DNN 104——例如,第一2D编码器网络608和第二3D解码器网络612。例如,在训练期间,传感器数据102——例如,输入图像602——可以通过2D编码器网络608的一组卷积层,其学习在潜在空间表示610(例如,潜在空间中的向量)中表示的潜在变量(例如,整个图像的描述符或其他传感器数据表示)。在实施例中,潜在空间表示610可以对应于具有一定数量的成员(例如,512、1024等)的高维空间向量。与图像重建任务类似,潜在空间表示610可以表示传感器数据102的整体实例(并且不仅仅是例如从像素识别的特征)。这样,编码器网络608的卷积层可以提取潜在变量。该中间结果——例如,潜在空间表示610——然后可以使用3D解码器网络612去卷积到用于3D输出108的目标或设计空间。结果,3D输出可以在3D世界空间中具有1:1映射,因此可以直接表示目标或设计空间内的路口结构。因此,与将2D输出转换为3D空间的传统系统(依赖于平坦地面假设的具有挑战性且不准确的过程)相比,DNN 104A可以直接计算3D输出108。例如,类似于图4的3D输出108A,3D路口结构614可以对应于在处理2D图像空间输入图像102A之后DNN 104A的输出106的准确表示。如本文所述,3D路口结构614的可视化中的不同线标签可以对应于与使用计算的3D输出108(例如,使用关键点位置)生成的每个线段相关联的不同语义信息110。
尽管仅示出了处理传感器数据102A的单个实例的单个2D编码器网络608,但这并不旨在进行限制。例如,任何数量的2D编码器网络608可以处理来自任何数量的传感器的传感器数据102的任何数量的实例。例如,在任何时间实例或帧,第一传感器(例如,第一相机、LIDAR传感器等)可以生成由2D编码器网络608的第一实例处理以计算第一潜在空间表示610的第一传感器数据102(例如,针对特定类型的传感器数据输入进行训练),第二传感器(例如,第二相机、LIDAR传感器、RADAR传感器等)可以生成由2D编码器网络608的第二实例处理以计算第二潜在空间表示610的第二传感器数据102(例如,针对特定类型的传感器数据输入进行训练),等等。然后可以组合(例如,连接)给定时间实例或帧的多个潜在空间表示610,并且单个组合的潜在空间表示610可以由3D解码器网络612处理以计算3D路口结构614。在一些实施例中,可以使用车辆800的并行处理单元并行处理两个或更多个2D编码器网络608。结果,任何数量的2D编码器网络608的处理时间可以与处理仅用于2D编码器网络608的单个实例相似或相同,从而允许在生成3D路口结构614时处理附加信息(例如,来自多个传感器的传感器数据102)。
再次参考图6A,可以使用后处理器602来处理输出106。例如,可以使用时间后处理来进一步提高预测的鲁棒性和准确性。在这样的示例中,来自DNN 104的一个或更多个先前实例的输出106可以与来自DNN 104的当前实例的当前输出106进行比较(例如,加权)以生成经更新的、在时间上经平滑的结果。
输出106——在后处理之前或之后——可以被应用于路径生成器604,路径生成器604生成供车辆800遵循的路径和/或轨迹以便导航路口。例如,与来自3D路口结构的线段相关联的语义信息和/或方向信息(例如,方向向量、前进方向等)可用于确定通过路口的潜在路径。在实施例中,路径生成器604可以根据线段的3D世界空间坐标连接对应于这些线段的(中心)关键点,以生成表示车辆800实时或近乎实时地穿过路口的潜在路径的折线。最终路径可以被分配相对于车辆的位置、关键点的位置和/或车道方向(例如,角度)确定的路径类型。潜在的路径类型可以包括但不限于左转、右转、切换车道和/或继续在车道中。
在一些示例中,路径生成器604可以实施曲线拟合以便确定最准确地反映潜在路径的自然曲线的最终形状。可以使用任何已知的曲线拟合算法,例如但不限于折线拟合、多项式拟合和/或回旋曲线拟合。潜在路径的形状可以基于关键点的位置以及与要连接的关键点相关联的对应车道航向来确定。在一些示例中,潜在路径的形状可以与在要连接的关键点的位置处的航向向量的切线对齐。可以对可能被潜在地相互连接的所有关键点重复曲线拟合过程,以生成车辆800可采取用于导航路口的所有可能路径。在一些示例中,可以基于与此类路径相关联的交通规则和物理限制从考虑中去除不可行路径。剩余的潜在路径可被确定为车辆800可采取用于横穿路口的可行的3D路径或轨迹。
在一些实施例中,路径生成器604可以使用匹配算法来连接关键点并生成用于车辆800导航路口的潜在路径。在这样的示例中,可以基于关键点的位置、与关键点对应的车道航向(例如,与不同行驶方向对应的两个关键点将不连接)以及一对关键点之间的拟合曲线的形状来针对这对关键点确定匹配分数。对应于路口入口的每个关键点可以连接到对应于路口出口的多个关键点——从而为车辆800生成多个潜在路径。在一些示例中,可以使用线性匹配算法,例如匈牙利匹配算法。在其他示例中,可以使用诸如光谱匹配算法之类的非线性匹配算法来连接一对关键点。
通过路口的路径可用于由车辆800的自主驾驶软件堆栈606(在本文中替代地称为“驱动堆栈606”)执行一个或更多个操作。在一些示例中,车道图可以增加与路径相关的信息。可以将车道图输入到车辆800的一个或更多个控制组件以执行各种规划和控制任务。例如,世界模型管理器可以更新世界模型以帮助导航路口,驱动堆栈606的路径规划层可以使用路口信息来确定通过路口的路径(例如,沿着确定的潜在路径之一),和/或控制组件可以确定车辆的控制以根据确定的路径导航路口。
现在参考图7,本文描述的方法700的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,各种功能可以由处理器执行存储在存储器中的指令来执行。方法700还可以体现为存储在计算机存储介质上的计算机可用指令。方法700可以由独立应用、服务或托管服务(独立地或与另一托管服务组合)或另一产品的插件提供,仅举几例。此外,通过示例的方式,关于图6的过程600描述了方法700。然而,这些方法可以附加地或替代地由任何一个过程和/或任何一个系统,或过程和/或系统的任何组合来执行,包括但不限于本文描述的那些。
图7是示出根据本公开的一些实施例的用于使用神经网络检测3D世界空间中的路口结构的方法700的流程图。在框B702,方法700包括向神经网络应用传感器数据,该传感器数据表示在自主机器的至少一个传感器的视野中的路口的2D传感器数据表示。例如,传感器数据102(例如,描绘路口的图像)可被应用于DNN 104。
在框B704,方法700包括使用神经网络并且至少部分地基于传感器数据来计算表示对应于路口的3D世界空间位置的数据和对应于语义信息的置信度值。例如,DNN 104可以使用传感器数据102来计算输出106——例如,3D输出108和语义信息110。
在框B706,方法700包括解码表示3D世界空间位置的数据以确定与路口相关联的线段的线段位置。例如,3D输出108可以对应于关键点的位置,并且关键点可以指示路口的线段的3D位置。
在框B708,方法700包括解码表示置信度值的数据以确定每个线段的相关联的语义信息。例如,语义信息110可以被计算为对应于多个不同类别类型(例如但不限于这里描述的那些)的置信度(或概率),并且置信度值可以用于确定语义信息110——例如,具有最高置信度值(或高于阈值的置信度值)的类别可归于特定关键点和/或线段。
在框B710,方法700包括至少部分地基于线段位置和相关联的语义信息,由自主机器执行一个或更多个操作。例如,输出106可以被用于生成车辆800通过路口的路径的路径生成器604使用和/或输出106或者路径可以被驱动堆栈606用来执行世界模型管理、路径规划、控制和/或其他操作。
示例自主车辆
图8A是根据本公开的一些实施例的示例自主车辆800的图示。自主车辆800(在本文中也称为“车辆800”)可以包括但不限于乘用车,例如汽车、卡车、公共汽车、急救车、穿梭车、电动或机动自行车、摩托车、消防车、警车、救护车、船、工程车辆、水下航行器、无人机和/或其他类型的车辆(例如,无人驾驶和/或可容纳一名或更多名乘客)。自主车辆通常根据由美国交通部下属的美国国家公路交通安全管理局(NHTSA)和汽车工程师协会(SAE)的“道路机动车辆驾驶自动化系统相关术语的分类和定义”(2018年6月15日发布的标准编号J3016-201806,2016年9月30日发布的标准编号J3016-201609,以及该标准的先前和未来版本)定义的自动化水平来描述。车辆800可能够具有根据自主驾驶级别的级别3-级别5中的一个或更多个的功能。例如,取决于实施例,车辆800可以具有条件自动化(级别3)、高度自动化(级别4)和/或完全自动化(级别5)。
车辆800可以包括诸如底盘、车身、车轮(例如2个、4个、6个、8个、18个等)、轮胎、车轴之类的部件以及车辆的其他部件。车辆800可以包括推进系统850,例如内燃机、混合动力发电厂、全电动发动机和/或另一种推进系统类型。推进系统850可以连接到可以包括变速器的车辆800的传动系以便实现车辆800的推进。可以响应于接收到来自油门/加速器852的信号而控制推进系统850。
可以包括方向盘的转向(steering)系统854可以用来在推进系统850操作时(例如在车辆运动时)使车辆800转向(例如沿着希望的路径或路线)。转向系统854可以接收来自转向致动器856的信号。对于全自动(5级)功能而言,方向盘可以是可选的。
制动传感器系统846可以用来响应于接收到来自制动致动器848和/或制动传感器的信号而操作车辆制动器。
可以包括一个或更多个片上系统(SoC)804(图8C)和/或一个或更多个GPU的一个或更多个控制器836可以向车辆800的一个或更多个部件和/或系统提供(例如表示命令的)信号。例如,一个或更多个控制器可以发送经由一个或更多个制动致动器848操作车辆制动器、经由一个或更多个转向致动器856操作转向系统854、经由一个或更多个油门/加速器852操作推进系统850的信号。一个或更多个控制器836可以包括一个或更多个板载(例如集成)计算设备(例如超级计算机),所述计算设备处理传感器信号并且输出操作命令(例如表示命令的信号),以实现自主驾驶和/或辅助人类驾驶员驾驶车辆800。一个或更多个控制器836可以包括用于自主驾驶功能的第一控制器836、用于功能性安全功能的第二控制器836、用于人工智能功能(例如计算机视觉)的第三控制器836、用于信息娱乐功能的第四控制器836、用于紧急情况下的冗余的第五控制器836和/或其他控制器。在一些示例中,单个控制器836可以处理上述功能中的两个或更多,两个或更多控制器836可以处理单个功能,和/或其任意组合。
一个或更多个控制器836可以响应于接收自一个或更多个传感器的传感器数据(例如传感器输入),提供用于控制车辆800的一个或更多个部件和/或系统的信号。传感器数据可以接收自例如且不限于全球导航卫星系统传感器858(例如全球定位系统传感器)、RADAR传感器860、超声传感器862、LIDAR传感器864、惯性测量单元(IMU)传感器866(例如加速度计、陀螺仪、磁罗盘、磁力计等)、麦克风896、立体相机868、广角相机870(例如鱼眼相机)、红外相机872、环绕相机874(例如360度相机)、远程和/或中程相机898、速度传感器844(例如用于测量车辆800的速率)、振动传感器842、转向传感器840、制动传感器(例如作为制动传感器系统846的部分)和/或其他传感器类型。
控制器836中的一个或更多个可以接收来自车辆800的仪表组832的输入(例如由输入数据表示),并且经由人机接口(HMI)显示器834、听觉信号器、扬声器和/或经由车辆800的其他部件提供输出(例如输出数据、显示数据等表示的)。这些输出可以包括诸如车辆速度、速率、时间、地图数据(例如图8C的HD地图822)、位置数据(例如,车辆800例如在地图上的位置)、方向、其他车辆的位置(例如占用网格)之类的信息,如控制器836所感知的关于对象和对象状态的信息等等。例如,HMI显示器834可以显示关于一个或更多个对象(例如街道指示牌、警示牌、交通灯变化等)的存在性的信息和/或关于车辆已经做出、正在做出或者将会做出的驾驶机动的信息(例如现在变道、两英里后离开34B,等等)。
车辆800进一步包括网络接口824,其可以使用一个或更多个无线天线826和/或调制解调器通过一个或更多个网络通信。例如,网络接口824可能够通过LTE、WCDMA、UMTS、GSM、CDMA2000等通信。一个或更多个无线天线826也可以使用诸如蓝牙、蓝牙LE、Z波、ZigBee等等之类的一个或更多个局域网和/或诸如LoRaWAN、SigFox等等之类的一个或更多个低功率广域网(LPWAN)实现环境中的对象(例如车辆、移动设备等等)之间的通信。
图8B为根据本公开一些实施例的用于图8A的示例自主车辆800的相机位置和视场的示例。相机和各自的视场是一个示例实施例,并不意图是限制性的。例如,可以包括附加的和/或可替换的相机,和/或这些相机可以位于车辆800上的不同位置。
用于相机的相机类型可以包括但不限于可以适于与车辆800的部件和/或系统一起使用的数字相机。所述相机可以在汽车安全完整性级别(ASIL)B下和/或在另一个ASIL下操作。相机类型可以具有任何图像捕获率,例如60帧每秒(fps)、120fps、240fps等等,这取决于实施例。相机可能够使用滚动快门、全局快门、另一种类型的快门或者其组合。在一些示例中,滤色器阵列可以包括红透明(RCCC)滤色器阵列、红透明蓝(RCCB)滤色器阵列、红蓝绿透明(RBGC)滤色器阵列、FoveonX3滤色器阵列、拜耳传感器(RGGB)滤色器阵列、单色传感器滤色器阵列和/或另一种类型的滤色器阵列。在一些实施例中,诸如具有RCCC、RCCB和/或RBGC滤色器阵列的相机之类的清晰像素相机可以用在提高光敏感度的努力中。
在一些示例中,所述相机中的一个或更多个可以用来执行高级驾驶员辅助系统(ADAS)功能(例如作为冗余或故障安全设计的部分)。例如,可以安装多功能单目相机以提供包括车道偏离警告、交通指示牌辅助和智能前照灯控制在内的功能。所述相机中的一个或更多个(例如全部相机)可以同时记录和提供图像数据(例如视频)。
所述相机中的一个或更多个可以安装在诸如定制设计的(3-D打印的)组件之类的安装组件中,以便切断可能干扰相机的图像数据捕获能力的杂散光和来自汽车内的反射(例如挡风玻璃镜中反射的来自仪表板的反射)。关于翼镜安装组件,翼镜组件可以是定制3-D打印的,使得相机安装板匹配翼镜的形状。在一些示例中,一个或更多个相机可以集成到翼镜中。对于侧视相机而言,一个或更多个相机也可以集成到驾驶室每个拐角的四根柱子内。
具有包括车辆800前面的环境部分的视场的相机(例如前置相机)可以用于环视,以帮助识别前向路径和障碍,以及在一个或更多个控制器836和/或控制SoC的帮助下辅助提供对于生成占用网格和/或确定优选车辆路径至关重要的信息。前置相机可以用来执行许多与LIDAR相同的ADAS功能,包括紧急制动、行人检测和碰撞避免。前置相机也可以用于ADAS功能和系统,包括车道偏离警告(“LDW”)、自主巡航控制(“ACC”),和/或诸如交通指示牌识别之类的其他功能。
各种各样的相机可以用于前置配置中,包括例如包括CMOS(互补金属氧化物半导体)彩色成像仪在内的单目相机平台。另一个示例可以是广角相机870,其可以用来感知从周边进入视野的对象(例如行人、十字路口交通或者自行车)。尽管图8B中图示出仅仅一个广角相机,但是在车辆800上可以存在任意数量的广角相机870。此外,远程相机898(例如长视立体相机对)可以用于基于深度的对象检测,尤其是用于尚未针对其训练神经网络的对象。远程相机898也可以用于对象检测和分类以及基本的对象跟踪。
一个或更多个立体相机868也可以包括在前置配置中。立体相机868可以包括集成控制单元,该单元包括可扩展处理单元,其可以提供在单个芯片上具有集成的CAN或以太网接口的多核微处理器和可编程逻辑(FPGA)。这样的单元可以用来生成车辆环境的3-D地图,包括针对图像中的所有点的距离估计。可替代的立体相机868可以包括紧凑型立体视觉传感器,其可以包括两个相机镜头(左右各一个)以及可以测量从车辆到目标对象的距离并且使用生成的信息(例如元数据)激活自主紧急制动和车道偏离警告功能的图像处理芯片。除了本文所描述的那些之外或者可替代地,可以使用其他类型的立体相机868。
具有包括车辆800的侧面的环境部分的视场的相机(例如侧视相机)可以用于环视,提供用来创建和更新占用网格以及生成侧撞击碰撞警告的信息。例如,环绕相机874(例如如图8B中所示的四个环绕相机874)可以置于车辆800上。环绕相机874可以包括广角相机870、鱼眼相机、360度相机和/或类似物。四个示例,四个鱼眼相机可以置于车辆的前面、后面和侧面。在一种可替代的布置中,车辆可以使用三个环绕相机874(例如左边、右边和后面),并且可以利用一个或更多个其他相机(例如前向相机)作为第四环视相机。
具有包括车辆800的后面的环境部分的视场的相机(例如后视相机)可以用于辅助停车、环视、后面碰撞警告以及创建和更新占用网格。可以使用各种各样的相机,包括但不限于也适合作为如本文所描述的前置相机(例如远程和/或中程相机898、立体相机868、红外相机872等等)的相机。
图8C为根据本公开一些实施例的用于图8A的示例自主车辆800的示例系统架构的框图。应当理解,这种布置和本文描述的其他布置仅仅作为示例而被阐述。除了所示的那些之外或者代替它们的是,可以使用其他的布置和元素(例如机器、接口、功能、顺序、功能分组等等),并且一些元素可以完全省略。进一步,许多本文描述的元素是功能实体,其可以实现为分立的或分布式部件或者结合其他部件实现,以及以任何适当的组合和位置实现。本文描述为由实体执行的各个功能可以通过硬件、固件和/或软件实现。例如,各个功能可以通过处理器执行存储在存储器中的指令而实现。
图8C中车辆800的部件、特征和系统中的每一个被图示为经由总线802连接。总线802可以包括控制器区域网络(CAN)数据接口(可替代地,本文称为“CAN总线”)。CAN可以是车辆800内部的网络,用来辅助控制车辆800的各种特征和功能,例如制动器、加速、制动、转向、挡风玻璃雨刷等等的驱动。CAN总线可以被配置为具有数十或者甚至数百个节点,每个节点具有其自己的唯一标识符(例如CAN ID)。可以读取CAN总线以找到方向盘角度、地速、每分钟发动机转速(RPM)、按钮位置和/或其他车辆状态指示符。CAN总线可以是ASIL B兼容的。
尽管这里将总线802描述为CAN总线,但是这并不意图是限制性的。例如,除了CAN总线之外或者可替代地,可以使用FlexRay和/或以太网。此外,尽管用单条线来表示总线802,但是这并不意图是限制性的。例如,可以存在任意数量的总线802,其可以包括一条或更多条CAN总线、一条或更多条FlexRay总线、一条或更多条以太网总线和/或一条或更多条使用不同协议的其他类型的总线。在一些示例中,两条或更多总线802可以用来执行不同的功能,和/或可以用于冗余。例如,第一总线802可以用于碰撞避免功能,并且第二总线802可以用于驱动控制。在任何示例中,每条总线802可以与车辆800的任何部件通信,并且两条或更多总线802可以与相同的部件通信。在一些示例中,车辆内的每个SoC 804、每个控制器836和/或每个计算机可以有权访问相同的输入数据(例如来自车辆800的传感器的输入),并且可以连接到诸如CAN总线之类的公共总线。
车辆800可以包括一个或更多个控制器836,例如本文关于图8A所描述的那些控制器。控制器836可以用于各种各样的功能。控制器836可以耦合到车辆800的任何其他不同的部件和系统,并且可以用于车辆800的控制、车辆800的人工智能、用于车辆800的信息娱乐和/或类似物。
车辆800可以包括一个或更多个片上系统(SoC)804。SoC 804可以包括CPU 806、GPU 808、处理器810、高速缓存812、加速器814、数据存储816和/或未图示出的其他部件和特征。在各种各样的平台和系统中,SoC 804可以用来控制车辆800。例如,一个或更多个SoC804可以在系统(例如车辆800的系统)中与HD地图822结合,所述HD地图可以经由网络接口824从一个或更多个服务器(例如图8D的一个或更多个服务器878)获得地图刷新和/或更新。
CPU 806可以包括CPU簇或者CPU复合体(可替代地,本文称为“CCPLEX”)。CPU 806可以包括多个核和/或L2高速缓存。例如,在一些实施例中,CPU 806在一致性多处理器配置中可以包括八个核。在一些实施例中,CPU 806可以包括四个双核簇,其中每个簇具有专用的L2高速缓存(例如2MB L2高速缓存)。CPU 806(例如CCPLEX)可以被配置为支持同时簇操作,使得CPU 806的簇的任意组合能够在任何给定时间是活动的。
CPU 806可以实现包括以下特征中的一个或更多个的功率管理能力:各硬件块在空闲时可以自动进行时钟门控以节省动态功率;由于WFI/WFE指令的执行,每个核时钟可以在该核不主动地执行指令时进行门控;每个核可以独立地进行功率门控;当所有核都进行时钟门控或者功率门控时,可以独立地对每个核簇进行时钟门控;和/或当所有核都进行功率门控时,可以独立地对每个核簇进行功率门控。CPU 806可以进一步实现用于管理功率状态的增强算法,其中指定允许的功率状态和期望的唤醒时间,并且硬件/微代码为所述核、簇和CCPLEX确定要进入的最佳的功率状态。处理核可以在软件中支持简化的功率状态进入序列,该工作被卸载到微代码。
GPU 808可以包括集成的GPU(可替代地,本文称为“iGPU”)。GPU808可以是可编程的,并且对于并行工作负载而言是高效的。在一些示例中,GPU 808可以使用增强张量指令集。GPU 808可以包括一个或更多个流式微处理器,其中每个流式微处理器可以包括L1高速缓存(例如具有至少96KB存储能力的L1高速缓存),并且这些流式微处理器中的两个或更多可以共享L2高速缓存(例如具有512KB存储能力的L2高速缓存)。在一些实施例中,GPU 808可以包括至少八个流式微处理器。GPU 808可以使用计算应用编程接口(API)。此外,GPU808可以使用一个或更多个并行计算平台和/或编程模型(例如NVIDIA的CUDA)。
在汽车和嵌入式使用的情况下,可以对GPU 808进行功率优化以实现最佳性能。例如,可以在鳍式场效应晶体管(FinFET)上制造GPU 808。然而,这并不意图是限制性的,并且GPU 808可以使用其他半导体制造工艺来制造。每个流式微处理器可以合并划分成多个块的若干混合精度处理核。例如且非限制性地,可以将64个PF32核和32个PF64核划分成四个处理块。在这样的示例中,每个处理块可以分配16个FP32核、8个FP64核、16个INT32核、用于深层学习矩阵算术的两个混合精度NVIDIA张量核、L0指令高速缓存、线程束(warp)调度器、分派单元和/或64KB寄存器文件。此外,流式微处理器可以包括独立的并行整数和浮点数据路径,以利用计算和寻址计算的混合提供工作负载的高效执行。流式微处理器可以包括独立线程调度能力,以允许实现并行线程之间的更细粒度的同步和协作。流式微处理器可以包括组合的L1数据高速缓存和共享存储器单元,以便在简化编程的同时提高性能。
GPU 808可以包括在一些示例中提供大约900GB/s的峰值存储器带宽的高带宽存储器(HBM)和/或16GB HBM2存储器子系统。在一些示例中,除了HBM存储器之外或者可替代地,可以使用同步图形随机存取存储器(SGRAM),例如第五代图形双倍数据速率同步随机存取存储器(GDDR5)。
GPU 808可以包括统一存储器技术,其包括访问计数器以允许存储器页面更精确地迁移到最频繁地访问它们的处理器,从而提高处理器之间共享的存储器范围的效率。在一些示例中,地址转换服务(ATS)支持可以用来允许GPU 808直接访问CPU 806页表。在这样的示例中,当GPU 808存储器管理单元(MMU)经历遗漏时,可以将地址转换请求传输至CPU806。作为响应,CPU 806可以在其页表中寻找用于地址的虚拟-物理映射,并且将转换传输回GPU 808。这样,统一存储器技术可以允许单个统一虚拟地址空间用于CPU 806和GPU808二者的存储器,从而简化了GPU 808编程和将应用程序移植(port)到GPU 808。
此外,GPU 808可以包括访问计数器,其可以跟踪GPU 808访问其他处理器的存储器的频率。访问计数器可以帮助确保存储器页面移至最频繁地访问这些页面的处理器的物理存储器。
SoC 804可以包括任意数量的高速缓存812,包括本文描述的那些高速缓存。例如,高速缓存812可以包括CPU 806和GPU 808二者可用的L3高速缓存(例如,其连接到CPU 806和GPU808二者)。高速缓存812可以包括回写高速缓存,其可以例如通过使用高速缓存一致性协议(例如MEI、MESI、MSI等)跟踪行的状态。取决于实施例,L3高速缓存可以包括4MB或者更多,但是也可以使用更小的高速缓存大小。
SoC 804可以包括算术逻辑单元(ALU),其可以用于执行关于车辆800的各种任务或操作中的任一个的处理——例如处理DNN。此外,SoC804可以包括浮点单元(FPU)——或其他数学协处理器或数字协处理器类型——用于在系统内执行数学运算。例如,SoC 104可以包括一个或更多个集成为CPU 806和/或GPU 808内的执行单元的FPU。
SoC 804可包括一个或更多个加速器814(例如,硬件加速器、软件加速器或其组合)。例如,SoC 804可以包括硬件加速簇,其可以包括优化的硬件加速器和/或大型片上存储器。该大型片上存储器(例如4MB SRAM)可以使得硬件加速簇能够加速神经网络和其他计算。硬件加速簇可以用来补充GPU 808,并且卸载GPU 808的一些任务(例如释放GPU 808的更多周期以用于执行其他任务)。作为一个示例,加速器814可以用于足够稳定以易于控制加速的有针对性的工作负载(例如感知、卷积神经网络(CNN)等等)。当在本文中使用时,术语“CNN”可以包括所有类型的CNN,包括基于区域的或者区域卷积神经网络(RCNN)和快速RCNN(例如用于对象检测)。
加速器814(例如硬件加速簇)可以包括深度学习加速器(DLA)。DLA可以包括可以被配置成为深度学习应用和推理提供额外的每秒10万亿次操作的一个或更多个张量处理单元(TPU)。TPU可以是被配置为执行图像处理功能(例如用于CNN、RCNN等)且针对执行图像处理功能而优化的加速器。DLA可以进一步针对特定的一组神经网络类型和浮点运算以及推理进行优化。DLA的设计可以比通用GPU提供每毫米更高的性能,并且远远超过CPU的性能。TPU可以执行若干功能,包括单实例卷积函数,支持例如用于特征和权重二者的INT8、INT16和FP16数据类型,以及后处理器功能。
DLA可以在处理的或者未处理的数据上针对各种各样的功能中的任何功能快速且高效地执行神经网络,尤其是CNN,例如且不限于:用于使用来自相机传感器的数据进行对象识别和检测的CNN;用于使用来自相机传感器的数据进行距离估计的CNN;用于使用来自麦克风的数据进行应急车辆检测和识别与检测的CNN;用于使用来自相机传感器的数据进行面部识别和车主识别的CNN;和/或用于安全和/或安全相关事件的CNN。
DLA可以执行GPU 808的任何功能,并且通过使用推理加速器,例如,设计者可以使DLA或GPU 808针对任何功能。例如,设计者可以将CNN的处理和浮点运算聚焦在DLA上,并且将其他功能留给GPU 808和/或其他加速器814。
加速器814(例如硬件加速簇)可以包括可编程视觉加速器(PVA),其在本文中可以可替代地称为计算机视觉加速器。PVA可以被设计和配置为加速用于高级驾驶员辅助系统(ADAS)、自主驾驶和/或增强现实(AR)和/或虚拟现实(VR)应用的计算机视觉算法。PVA可以提供性能与灵活性之间的平衡。例如,每个PVA可以包括例如且不限于任意数量的精简指令集计算机(RISC)核、直接存储器访问(DMA)和/或任意数量的向量处理器。
RISC核可以与图像传感器(例如本文描述的任何相机的图像传感器)、图像信号处理器和/或类似物交互。这些RISC核中的每一个可以包括任意数量的存储器。取决于实施例,RISC核可以使用若干协议中的任何协议。在一些示例中,RISC核可以执行实时操作系统(RTOS)。RISC核可以使用一个或更多个集成电路设备、专用集成电路(ASIC)和/或存储设备实现。例如,RISC核可以包括指令高速缓存和/或紧密耦合的RAM。
DMA可以使得PVA的部件能够独立于CPU 806访问系统存储器。DMA可以支持用来向PVA提供优化的任意数量的特征,包括但不限于支持多维寻址和/或循环寻址。在一些示例中,DMA可以支持高达六个或更多维度的寻址,其可以包括块宽度、块高度、块深度、水平块步进、竖直块步进和/或深度步进。
向量处理器可以是可编程处理器,其可以被设计为高效且灵活地执行用于计算机视觉算法的编程并且提供信号处理能力。在一些示例中,PVA可以包括PVA核和两个向量处理子系统分区。PVA核可以包括处理器子系统、一个或更多个DMA引擎(例如两个DMA引擎)和/或其他外围设备。向量处理子系统可以作为PVA的主处理引擎而操作,并且可以包括向量处理单元(VPU)、指令高速缓存和/或向量存储器(例如VMEM)。VPU核可以包括数字信号处理器,诸如例如单指令多数据(SIMD)、超长指令字(VLIW)数字信号处理器。SIMD和VLIW的组合可以增强吞吐量和速率。
向量处理器中的每一个可以包括指令高速缓存并且可以耦合到专用存储器。结果,在一些示例中,向量处理器中的每一个可以被配置为独立于其他向量处理器执行。在其他示例中,包括在特定PVA中的向量处理器可以被配置为采用数据并行化。例如,在一些实施例中,包括在单个PVA中的多个向量处理器可以执行相同的计算机视觉算法,但是在图像的不同区域上执行。在其他示例中,包括在特定PVA中的向量处理器可以在相同的图像上同时执行不同的计算机视觉算法,或者甚至在序列图像或者图像的部分上执行不同的算法。除其他的以外,任意数量的PVA可以包括在硬件加速簇中,并且任意数量的向量处理器可以包括在这些PVA中的每一个中。此外,PVA可以包括附加的纠错码(ECC)存储器,以增强总体系统安全性。
加速器814(例如硬件加速簇)可以包括片上计算机视觉网络和SRAM,以提供用于加速器814的高带宽、低延迟SRAM。在一些示例中,片上存储器可以包括由例如且不限于八个现场可配置的存储器块组成的至少4MB SRAM,其可以由PVA和DLA二者访问。每对存储器块可以包括高级外围总线(APB)接口、配置电路系统、控制器和复用器。可以使用任何类型的存储器。PVA和DLA可以经由向PVA和DLA提供高速存储器访问的主干(backbone)访问存储器。主干可以包括(例如使用APB)将PVA和DLA互连到存储器的片上计算机视觉网络。
片上计算机视觉网络可以包括在传输任何控制信号/地址/数据之前确定PVA和DLA二者都提供就绪且有效的信号的接口。这样的接口可以提供用于传输控制信号/地址/数据的单独相位和单独信道,以及用于连续数据传输的突发式通信。这种类型的接口可以符合ISO 26262或者IEC 61508标准,但是也可以使用其他标准和协议。
在一些示例中,SoC 804可以包括例如在2018年8月10日提交的美国专利申请No.16/101,232中描述的实时光线追踪硬件加速器。该实时光线追踪硬件加速器可以用来快速且高效地确定(例如世界模型内的)对象的位置和范围,以便生成实时可视化仿真,以用于RADAR信号解释、用于声音传播合成和/或分析、用于SONAR系统仿真、用于一般波传播仿真、用于为了定位和/或其他功能的目的与LIDAR数据相比较和/或用于其他用途。在一些实施例中,一个或更多个树遍历单元(TTU)可用于执行一个或更多个光线追踪相关操作。
加速器814(例如硬件加速器簇)具有广泛的自主驾驶用途。PVA可以是可编程视觉加速器,其可以用于ADAS和自主车辆中的关键处理阶段。PVA的能力是需要可预测处理、低功率和低延迟的算法域的良好匹配。换言之,PVA在半密集或者密集规则计算上,甚至在需要具有低延迟和低功率的可预测运行时间的小数据集上都表现良好。因此,在用于自主车辆的平台的背景下,PVA被设计为运行经典计算机视觉算法,因为它们在对象检测和整数数学运算方面很有效。
例如,根据该技术的一个实施例,PVA用来执行计算机立体视觉。在一些示例中,可以使用基于半全局匹配的算法,但是这并不意图是限制性的。许多用于3-5级自主驾驶的应用都需要即时运动估计/立体匹配(例如来自运动的结构、行人识别、车道检测等等)。PVA可以在来自两个单目相机的输入上执行计算机立体视觉功能。
在一些示例中,PVA可以用来执行密集的光流。根据过程原始RADAR数据(例如使用4D快速傅立叶变换)以提供经处理的RADAR。在其他示例中,PVA用于飞行时间深度处理,其例如通过处理原始飞行时间数据以提供经处理的飞行时间数据。
DLA可以用来运行任何类型的网络以增强控制和驾驶安全性,包括例如输出用于每个对象检测的置信度度量的神经网络。这样的置信度值可以解释为概率,或者解释为提供每个检测与其他检测相比的相对“权重”。该置信度值使得系统能够做出关于哪些检测应当被认为是真阳性检测而不是假阳性检测的进一步决策。例如,系统可以为置信度设置阈值,并且仅仅将超过阈值的检测看作真阳性检测。在自动紧急制动(AEB)系统中,假阳性检测会使得车辆自动地执行紧急制动,这显然是不希望的。因此,只有最确信的检测才应当被认为是AEB的触发因素。DLA可以运行用于回归置信度值的神经网络。该神经网络可以将至少一些参数子集作为其输入,例如边界框维度,(例如从另一个子系统)获得的地平面估计,与车辆800取向、距离相关的惯性测量单元(IMU)传感器866输出,从神经网络和/或其他传感器(例如LIDAR传感器864或RADAR传感器860)获得的对象的3D位置估计等。
SoC 804可以包括一个或更多个数据存储816(例如存储器)。数据存储816可以是SoC 804的片上存储器,其可以存储要在GPU和/或DLA上执行的神经网络。在一些示例中,为了冗余和安全,数据存储816可以容量足够大以存储神经网络的多个实例。数据存储812可以包括L2或L3高速缓存812。对数据存储816的引用可以包括对与如本文所描述的PVA、DLA和/或其他加速器814关联的存储器的引用。
SoC 804可以包括一个或更多个处理器810(例如嵌入式处理器)。处理器810可以包括启动和功率管理处理器,其可以是用于处理启动功率和管理功能以及有关安全实施的专用处理器和子系统。启动和功率管理处理器可以是SoC 804启动序列的一部分,并且可以提供运行时间功率管理服务。启动功率和管理处理器可以提供时钟和电压编程、辅助系统低功率状态转换、SoC 804热和温度传感器管理和/或SoC 804功率状态管理。每个温度传感器可以实现为环形振荡器,其输出频率与温度成比例,并且SoC804可以使用环形振荡器检测CPU 806、GPU 808和/或加速器814的温度。如果确定温度超过阈值,那么启动和功率管理处理器可以进入温度故障例程并且将SoC 804置于较低功率状态和/或将车辆800置于司机安全停车模式(例如使车辆800安全停车)。
处理器810可以进一步包括可以用作音频处理引擎的一组嵌入式处理器。音频处理引擎可以是一种音频子系统,其允许实现对于通过多个接口的多声道音频的完全硬件支持以及一系列广泛而灵活的音频I/O接口。在一些示例中,音频处理引擎是具有带有专用RAM的数字信号处理器的专用处理器核。
处理器810可以进一步包括始终在处理器上的引擎,其可以提供必要的硬件特征以支持低功率传感器管理和唤醒用例。该始终在处理器上的引擎可以包括处理器核、紧密耦合的RAM、支持外围设备(例如定时器和中断控制器)、各种I/O控制器外围设备和路由逻辑。
处理器810可以进一步包括安全簇引擎,其包括处理汽车应用的安全管理的专用处理器子系统。安全簇引擎可以包括两个或更多处理器核、紧密耦合的RAM、支持外围设备(例如定时器、中断控制器等等)和/或路由逻辑。在安全模式下,所述两个或更多核可以操作于锁步模式下,并且用作具有检测它们的操作之间的任何差异的比较逻辑的单核。
处理器810可以进一步包括实时相机引擎,其可以包括用于处理实时相机管理的专用处理器子系统。
处理器810可以进一步包括高动态范围信号处理器,其可以包括图像信号处理器,该图像信号处理器是一种硬件引擎,该硬件引擎是相机处理管线的部分。
处理器810可以包括可以是(例如微处理器上实现的)处理块的视频图像复合器,其实现视频回放应用程序产生用于播放器窗口的最终图像所需的视频后处理功能。视频图像复合器可以对广角相机870、环绕相机874和/或对驾驶室内监控相机传感器执行镜头畸变校正。驾驶室内监控相机传感器优选地由运行在高级SoC的另一个实例上的神经网络监控,被配置为识别驾驶室内事件并且相对应地做出响应。驾驶室内系统可以执行唇读,以激活移动电话服务并拨打电话、口述电子邮件、改变车辆目的地、激活或改变车辆的信息娱乐系统和设置或者提供语音激活的网上冲浪。某些功能仅在车辆操作于自主模式下时对于驾驶员可用,并且在其他情况下被禁用。
视频图像复合器可以包括用于空间和时间降噪的增强时间降噪。例如,在视频中出现运动的情况下,降噪适当地对空间信息加权,降低邻近帧提供的信息的权重。在图像或者图像的部分不包括运动的情况下,视频图像复合器执行的时间降噪可以使用来自先前的图像的信息以降低当前图像中的噪声。
视频图像复合器也可以被配置为对输入立体镜头帧执行立体校正。当操作系统桌面正在使用并且GPU 808无需连续地渲染(render)新的表面时,视频图像复合器可以进一步用于用户接口组成。甚至在GPU 808上电并且激活,进行3D渲染时,视频图像复合器可以用来减轻GPU 808的负担以提高性能和响应能力。
SoC 804可以进一步包括用于从相机接收视频和输入的移动行业处理器接口(MIPI)相机串行接口、高速接口和/或可以用于相机和有关像素输入功能的视频输入块。SoC 804可以进一步包括可以由软件控制并且可以用于接收未提交到特定角色的I/O信号的输入/输出控制器。
SoC 804可以进一步包括大范围的外围设备接口,以使能与外围设备、音频编解码器、功率管理和/或其他设备通信。SoC 804可以用来处理来自(通过千兆多媒体串行链路和以太网连接的)相机、传感器(例如可以通过以太网连接的LIDAR传感器864、RADAR传感器860等等)的数据,来自总线802的数据(例如车辆800的速率、方向盘位置等等),来自(通过以太网或CAN总线连接的)GNSS传感器858的数据。SoC 804可以进一步包括专用高性能大容量存储控制器,其可以包括它们自己的DMA引擎,并且其可以用来从日常数据管理任务中释放CPU 806。
SoC 804可以是具有灵活架构的端到端平台,该架构跨越自动化3-5级,从而提供利用和高效使用计算机视觉和ADAS技术以实现多样性和冗余、连同深度学习工具一起提供用于灵活可靠驾驶软件堆栈的平台的综合功能安全架构。SoC 804可以比常规的系统更快、更可靠,甚至更加能量高效和空间高效。例如,当与CPU 806、GPU 808和数据存储816结合时,加速器814可以提供用于3-5级自主车辆的快速高效平台。
因此该技术提供了不能通过常规系统实现的能力和功能。例如,计算机视觉算法可以在CPU上执行,这些CPU可以使用诸如C编程语言之类的高级编程语言配置为跨各种各样的视觉数据执行各种各样的处理算法。然而,CPU常常不能满足许多计算机视觉应用的性能要求,诸如与例如执行时间和功耗有关的那些要求。特别地,许多CPU不能实时地执行复杂的对象检测算法,这是车载ADAS应用的要求和实用3-5级自主车辆的要求。
与常规系统形成对比的是,通过提供CPU复合体、GPU复合体和硬件加速簇,本文描述的技术允许同时和/或顺序地执行多个神经网络,并且将结果组合在一起以实现3-5级自主驾驶功能。例如,在DLA或dGPU(例如GPU 820)上执行的CNN可以包括文本和单词识别,允许超级计算机读取和理解交通指示牌,包括尚未针对其特别地训练神经网络的指示牌。DLA可以进一步包括能够识别、解释和提供对指示牌的语义理解,并且将该语义理解传递给运行在CPU复合体上的路径规划模块的神经网络。
作为另一个示例,如3、4或5级驾驶所需的,多个神经网络可以同时运行。例如,由“注意:闪烁的灯指示结冰条件”组成的警告指示牌连同电灯可以由若干神经网络独立地或者共同地进行解释。指示牌本身可以由部署的第一神经网络(例如经过训练的神经网络)识别为交通指示牌,文本“闪烁的灯指示结冰条件”可以由部署的第二神经网络解释,该部署的第二神经网络告知车辆的路径规划软件(优选地在CPU复合体上执行)当检测到闪烁的灯时,存在结冰条件。闪烁的灯可以通过在多个帧上操作部署的第三神经网络而识别,该神经网络告知车辆的路径规划软件闪烁的灯的存在(或不存在)。所有三个神经网络可以例如在DLA内和/或在GPU808上同时运行。
在一些示例中,用于面部识别和车主识别的CNN可以使用来自相机传感器的数据识别车辆800的授权的驾驶员和/或车主的存在。始终在传感器上的处理引擎可以用来在车主接近驾驶员车门时解锁车辆并且打开灯,并且在安全模式下,在车主离开车辆时禁用车辆。按照这种方式,SoC 804提供了防范盗窃和/或劫车的安全性。
在另一个示例中,用于应急车辆检测和识别的CNN可以使用来自麦克风896的数据来检测并且识别应急车辆警报(siren)。与使用通用分类器检测警报并且手动地提取特征的常规系统形成对比的是,SoC 804使用CNN以对环境和城市声音分类以及对视觉数据分类。在优选的实施例中,运行在DLA上的CNN被训练为识别应急车辆的相对关闭速率(例如通过使用多普勒效应)。CNN也可以被训练为识别如GNSS传感器858所识别的特定于车辆在其中操作的局部区域的应急车辆。因此,例如,当在欧洲操作时,CNN将寻求检测欧洲警报,并且当在美国时,CNN将寻求识别仅仅北美的警报。一旦检测到应急车辆,在超声传感器862的辅助下,控制程序可以用来执行应急车辆安全例程,使车辆放慢速度,开到路边,停下车辆,和/或使车辆空转,直到应急车辆通过。
车辆可以包括可以经由高速互连(例如PCIe)耦合到SoC 804的CPU818(例如分立的CPU或dCPU)。CPU 818可以包括例如X86处理器。CPU818可以用来执行各种各样的功能中的任何功能,包括例如仲裁ADAS传感器与SoC 804之间潜在地不一致的结果,和/或监控控制器836和/或信息娱乐SoC 830的状态和健康状况。
车辆800可以包括可以经由高速互连(例如NVIDIA的NVLINK)耦合到SoC 804的GPU820(例如分立的GPU或dGPU)。GPU 820可以例如通过执行冗余的和/或不同的神经网络而提供附加的人工智能功能,并且可以用来基于来自车辆800的传感器的输入(例如传感器数据)来训练和/或更新神经网络。
车辆800可以进一步包括网络接口824,该网络接口可以包括一个或更多个无线天线826(例如用于不同通信协议的一个或更多个无线天线,例如蜂窝天线、蓝牙天线等等)。网络接口824可以用来使能通过因特网与云(例如与服务器878和/或其他网络设备)、与其他车辆和/或与计算设备(例如乘客的客户端设备)的无线连接。为了与其他车辆通信,可以在这两辆车之间建立直接链接,和/或可以建立间接链接(例如跨网络以及通过因特网)。直接链接可以使用车对车通信链路提供。车对车通信链路可以向车辆800提供关于接近车辆800的车辆(例如车辆800前面、侧面和/或后面的车辆)的信息。该功能可以是车辆800的协作自适应巡航控制功能的部分。
网络接口824可以包括提供调制和解调功能并且使得控制器836能够通过无线网络通信的SoC。网络接口824可以包括用于从基带到射频的上转换以及从射频到基带的下转换的射频前端。频率转换可以通过公知的过程执行,和/或可以使用超外差(super-heterodyne)过程执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过LTE、WCDMA、UMTS、GSM、CDMA2000、蓝牙、蓝牙LE、Wi-Fi、Z波、ZigBee、LoRaWAN和/或其他无线协议通信的无线功能。
车辆800可以进一步包括可包括片外(例如SoC 804外)存储装置的数据存储828。数据存储828可以包括一个或更多个存储元件,包括RAM、SRAM、DRAM、VRAM、闪存、硬盘和/或可以存储至少一个比特的数据的其他部件和/或设备。
车辆800可以进一步包括GNSS传感器858。GNSS传感器858(例如GPS、辅助GPS传感器、差分GPS(DGPS)传感器等)用于辅助映射、感知、占用网格生成和/或路径规划功能。可以使用任意数量的GNSS传感器858,包括例如且不限于使用带有以太网到串行(RS-232)网桥的USB连接器的GPS。
车辆800可以进一步包括RADAR传感器860。RADAR传感器860可以甚至在黑暗和/或恶劣天气条件下也由车辆800用于远程车辆检测。RADAR功能安全级别可以是ASIL B。RADAR传感器860可以使用CAN和/或总线802(例如以传输RADAR传感器860生成的数据)以用于控制以及访问对象跟踪数据,在一些示例中接入以太网以访问原始数据。可以使用各种各样的RADAR传感器类型。例如且非限制性地,RADAR传感器860可以适合前面、后面和侧面RADAR使用。在一些示例中,使用脉冲多普勒RADAR传感器。
RADAR传感器860可以包括不同的配置,例如具有窄视场的远程、具有宽视场的短程、短程侧覆盖等等。在一些示例中,远程RADAR可以用于自适应巡航控制功能。远程RADAR系统可以提供通过两个或更多独立扫描实现的广阔视场(例如250m范围内)。RADAR传感器860可以帮助区分静态对象和运动对象,并且可以由ADAS系统用于紧急制动辅助和前方碰撞警告。远程RADAR传感器可以包括具有多根(例如六根或更多)固定RADAR天线以及高速CAN和FlexRay接口的单站多模RADAR。在具有六根天线的示例中,中央四根天线可以创建聚焦的波束图案,其被设计为在更高速率下以来自邻近车道的最小交通干扰记录车辆800的周围环境。其他两根天线可以扩展视场,使得快速地检测进入或离开车辆800的车道的车辆成为可能。
作为一个示例,中程RADAR系统可以包括高达860m(前面)或80m(后面)的范围以及高达42度(前面)或850度(后面)的视场。短程RADAR系统可以包括但不限于被设计为安装在后保险杠两端的RADAR传感器。当安装在后保险杠两端时,这样的RADAR传感器系统可以创建持续地监控后方和车辆旁边的盲点的两个波束。
短程RADAR系统可以在ADAS系统中用于盲点检测和/或变道辅助。
车辆800可以进一步包括超声传感器862。可以置于车辆800的前面、后面和/或侧面的超声传感器862可以用于停车辅助和/或创建和更新占用网格。可以使用各种各样的超声传感器862,并且不同的超声传感器862可以用于不同的检测范围(例如2.5m、4m)。超声传感器862可以操作于功能安全级别的ASIL B。
车辆800可以包括LIDAR传感器864。LIDAR传感器864可以用于对象和行人检测、紧急制动、碰撞避免和/或其他功能。LIDAR传感器864可以为功能安全级别的ASIL B。在一些示例中,车辆800可以包括可以使用以太网(例如以将数据提供给千兆以太网交换机)的多个LIDAR传感器864(例如两个、四个、六个等等)。
在一些示例中,LIDAR传感器864可能够对360度视场提供对象列表及其距离。商业上可用的LIDAR传感器864可以具有例如近似800m的广告范围,精度为2cm-3cm,支持800Mbps以太网连接。在一些示例中,可以使用一个或更多个非突出的LIDAR传感器864。在这样的示例中,LIDAR传感器864可以实现为可以嵌入到车辆800的前面、后面、侧面和/或拐角的小设备。在这样的示例中,LIDAR传感器864可以甚至对于低反射率对象提供高达120度水平的和35度竖直的视场,具有200m的范围。前面安装的LIDAR传感器864可以被配置用于45度与135度之间的水平视场。
在一些示例中,也可以使用诸如3D闪光LIDAR之类的LIDAR技术。3D闪光LIDAR使用激光的闪光作为发射源,以照亮高达约200m的车辆周围环境。闪光LIDAR单元包括接受器,该接受器将激光脉冲传输时间和反射光记录在每个像素上,其进而与从车辆到对象的范围相对应。闪光LIDAR可以允许利用每个激光闪光生成周围环境的高度精确且无失真的图像。在一些示例中,可以部署四个闪光LIDAR传感器,车辆800的每一侧一个。可用的3D闪光LIDAR系统包括没有风扇以外的运动部件(moving part)的固态3D凝视阵列LIDAR相机(例如非扫描LIDAR设备)。闪光LIDAR设备可以使用每帧5纳秒I类(眼睛安全)激光脉冲,并且可以以3D范围点云和共同寄存的强度数据的形式捕获反射的激光。通过使用闪光LIDAR,并且因为闪光LIDAR是没有运动部件的固态设备,LIDAR传感器864可以不太容易受到运动模糊、振动和/或震动的影响。
该车辆可以进一步包括IMU传感器866。在一些示例中,IMU传感器866可以位于车辆800的后轴的中心。IMU传感器866可以包括例如且不限于加速度计、磁力计、陀螺仪、磁罗盘和/或其他传感器类型。在一些示例中,例如在六轴应用中,IMU传感器866可以包括加速度计和陀螺仪,而在九轴应用中,IMU传感器866可以包括加速度计、陀螺仪和磁力计。
在一些实施例中,IMU传感器866可以实现为微型高性能GPS辅助惯性导航系统(GPS/INS),其结合微机电系统(MEMS)惯性传感器、高灵敏度GPS接收器和高级卡尔曼滤波算法以提供位置、速度和姿态的估计。这样,在一些示例中,IMU传感器866可以使得车辆800能够在无需来自磁传感器的输入的情况下通过直接观察从GPS到IMU传感器866的速度变化并且将其相关来估计方向(heading)。在一些示例中,IMU传感器866和GNSS传感器858可以结合到单个集成单元中。
该车辆可以包括置于车辆800中和/或车辆800周围的麦克风896。除别的以外,麦克风896可以用于应急车辆检测和识别。
该车辆可以进一步包括任意数量的相机类型,包括立体相机868、广角相机870、红外相机872、环绕相机874、远程和/或中程相机898和/或其他相机类型。这些相机可以用来捕获车辆800整个外围周围的图像数据。使用的相机类型取决于实施例和车辆800的要求,并且相机类型的任意组合可以用来提供车辆800周围的必要覆盖。此外,相机的数量可以根据实施例而不同。例如,该车辆可以包括六个相机、七个相机、十个相机、十二个相机和/或另一数量的相机。作为一个示例且非限制性地,这些相机可以支持千兆多媒体串行链路(GMSL)和/或千兆以太网。所述相机中的每一个在本文关于图8A和图8B更详细地进行了描述。
车辆800可以进一步包括振动传感器842。振动传感器842可以测量车辆的诸如车轴之类的部件的振动。例如,振动的变化可以指示道路表面的变化。在另一个示例中,当使用两个或更多振动传感器842时,振动之间的差异可以用来确定道路表面的摩擦或滑移(例如当动力驱动轴与自由旋转轴之间存在振动差异时)。
车辆800可以包括ADAS系统838。在一些示例中,ADAS系统838可以包括SoC。ADAS系统838可以包括自主/自适应/自动巡航控制(ACC)、协作自适应巡航控制(CACC)、前方撞车警告(FCW)、自动紧急制动(AEB)、车道偏离警告(LDW)、车道保持辅助(LKA)、盲点警告(BSW)、后方穿越交通警告(RCTW)、碰撞警告系统(CWS)、车道居中(LC)和/或其他特征和功能。
ACC系统可以使用RADAR传感器860、LIDAR传感器864和/或相机。ACC系统可以包括纵向ACC和/或横向ACC。纵向ACC监控并控制到紧接在车辆800前方的车辆的距离,并且自动地调节车速以维持离前方车辆的安全距离。横向ACC执行距离保持,并且在必要时建议车辆800改变车道。横向ACC与诸如LCA和CWS之类的其他ADAS应用程序有关。
CACC使用来自其他车辆的信息,该信息可以经由网络接口824和/或无线天线826经由无线链路或者通过网络连接(例如通过因特网)间接地从其他车辆接收。直接链接可以由车对车(V2V)通信链路提供,而间接链接可以是基础设施到车辆(I2V)的通信链路。通常,V2V通信概念提供关于紧接在前的车辆(例如紧接在车辆800前方且与其处于相同车道的车辆)的信息,而I2V通信概念提供关于前方更远处的交通的信息。CACC系统可以包括I2V和V2V信息源中的任一个或者二者。给定车辆800前方车辆的信息,CACC可以更加可靠,并且它有可能提高交通流的畅通性且降低道路拥堵。
FCW系统被设计为提醒驾驶员注意危险,使得驾驶员可以采取纠正措施。FCW系统使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器860,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。FCW系统可以提供例如声音、视觉警告、振动和/或快速制动脉冲形式的警告。
AEB系统检测即将发生的与另一车辆或其他对象的前方碰撞,并且可以在驾驶员在指定的时间或距离参数内没有采取纠正措施的情况下自动地应用制动器。AEB系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器860。当AEB系统检测到危险时,它典型地首先提醒(alert)驾驶员采取纠正措施以避免碰撞,并且如果驾驶员没有采取纠正措施,那么AEB系统可以自动地应用制动器以努力防止或者至少减轻预测的碰撞的影响。AEB系统可以包括诸如动态制动支持和/或碰撞迫近制动之类的技术。
LDW系统提供了诸如方向盘或座位振动之类的视觉、听觉和/或触觉警告,以在车辆800穿过车道标记时提醒驾驶员。当驾驶员指示有意偏离车道时,通过激活转弯信号,不激活LDW系统。LDW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前侧朝向相机,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
LKA系统是LDW系统的变型。如果车辆800开始离开车道,那么LKA系统提供纠正车辆800的转向输入或制动。
BSW系统检测并向驾驶员警告汽车盲点中的车辆。BSW系统可以提供视觉、听觉和/或触觉警报以指示合并或改变车道是不安全的。系统可以在驾驶员使用转弯信号时提供附加的警告。BSW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的后侧朝向相机和/或RADAR传感器860,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
RCTW系统可以在车辆800倒车时在后置相机范围之外检测到对象时提供视觉、听觉和/或触觉通知。一些RCTW系统包括AEB以确保应用车辆制动器以避免撞车。RCTW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的一个或更多个后置RADAR传感器860,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
常规的ADAS系统可能易于出现假阳性结果,这可能会让驾驶员烦恼并分散注意力,但是典型地不是灾难性的,因为ADAS系统提醒驾驶员并且允许驾驶员决定安全条件是否真正存在并且相对应地采取行动。然而,在自主车辆800中,在冲突结果的情况下,车辆800本身必须决定是否注意(heed)来自主计算机或者辅助计算机(例如第一控制器836或第二控制器836)的结果。例如,在一些实施例中,ADAS系统838可以是用于向备用计算机合理性模块提供感知信息的备用和/或辅助计算机。备用计算机合理性监视器可以在硬件部件上运行冗余多样的软件,以检测感知和动态驾驶任务中的故障。来自ADAS系统838的输出可以提供给监督MCU。如果来自主计算机和辅助计算机的输出冲突,那么监督MCU必须确定如何协调该冲突以确保安全操作。
在一些示例中,主计算机可以被配置为向监督MCU提供置信度评分,指示主计算机对所选结果的置信度。如果置信度评分超过阈值,那么监督MCU可以遵循主计算机的方向,而不管辅助计算机是否提供冲突或不一致的结果。在置信度评分不满足阈值的情况下并且在主计算机和辅助计算机指示不同的结果(例如冲突)的情况下,监督MCU可以在这些计算机之间进行仲裁以确定适当的结果。
监督MCU可以被配置为运行神经网络,所述神经网络被训练并且被配置为基于来自主计算机和辅助计算机的输出,确定辅助计算机提供假警报的条件。因此,监督MCU中的神经网络可以了解何时可以信任辅助计算机的输出以及何时不能。例如,当辅助计算机为基于RADAR的FCW系统时,监督MCU中的神经网络可以了解FCW系统何时正在识别事实上不是危险的金属对象,例如触发警报的排水栅格或井盖。类似地,当辅助计算机是基于相机的LDW系统时,监督MCU中的神经网络可以学习在骑车者或行人在场并且车道偏离实际上是最安全的策略时无视该LDW。在包括运行在监督MCU上的神经网络的实施例中,监督MCU可以包括适合于利用关联的存储器运行神经网络的DLA或GPU中的至少一个。在优选的实施例中,监督MCU可以包括SoC 804的部件和/或作为SoC 804的部件而被包括。
在其他示例中,ADAS系统838可以包括使用传统计算机视觉规则执行ADAS功能的辅助计算机。这样,辅助计算机可以使用经典的计算机视觉规则(如果-那么),并且在监督MCU中存在神经网络可以提高可靠性、安全性和性能。例如,多样化的实现方式和有意的非完全相同(non-identity)使得整个系统更加容错,对于软件(或者软件-硬件接口)功能造成的故障而言尤其如此。例如,如果在主计算机上运行的软件中存在软件漏洞或错误并且运行在辅助计算机上的非完全相同的软件代码提供相同的总体结果,那么监督MCU可以更加确信总体结果是正确的,并且主计算机上的软件或硬件中的漏洞不造成实质性的错误。
在一些示例中,ADAS系统838的输出可以馈送至主计算机的感知块和/或主计算机的动态驾驶任务块。例如,如果ADAS系统838由于对象紧接在前的原因而指示前方碰撞警告,那么感知块可以在识别对象时使用该信息。在其他示例中,辅助计算机可以具有它自己的神经网络,其被训练并且因此如本文所描述的降低假阳性的风险。
车辆800可以进一步包括信息娱乐SoC 830(例如车载信息娱乐系统(IVI))。尽管被图示和描述为SoC,但是信息娱乐系统可以不是SoC,并且可以包括两个或更多分立的部件。信息娱乐SoC 830可以包括可以用来向车辆800提供音频(例如音乐、个人数字助理、导航指令、新闻、广播等等)、视频(例如TV、电影、流媒体等等)、电话(例如免提呼叫)、网络连接(例如LTE、Wi-Fi等等)和/或信息服务(例如导航系统,后停车援助,无线电数据系统,诸如燃油水平、覆盖的总距离、制动燃油水平、油位、车门开/关、空气过滤器信息之类的车辆有关信息,等等)的硬件和软件的组合。例如,信息娱乐SoC 830可以包括收音机、盘播放器、导航系统、视频播放器、USB和蓝牙连接、车载电脑、车载娱乐、Wi-Fi、方向盘音频控件、免提语音控件、平视显示器(HUD)、HMI显示器834、远程信息处理设备、控制面板(例如用于控制各种部件、特征和/或系统,和/或与其交互)和/或其他部件。信息娱乐SoC 830可以进一步用来向车辆的用户提供信息(例如视觉的和/或听觉的),例如来自ADAS系统838的信息,诸如规划的车辆机动、轨迹、周围环境信息(例如交叉路口信息、车辆信息、道路信息等等)之类的自主驾驶信息,和/或其他信息。
信息娱乐SoC 830可以包括GPU功能。信息娱乐SoC 830可以通过总线802(例如CAN总线、以太网等)与车辆800的其他设备、系统和/或部件通信。在一些示例中,信息娱乐SoC830可以耦合至监督MCU,使得在主控制器836(例如车辆800的主和/或备用计算机)出现故障的情况下,信息娱乐系统的GPU可以执行一些自驾驶功能。在这样的示例中,信息娱乐SoC830可以如本文所描述的将车辆800置于司机安全停车模式。
车辆800可以进一步包括仪表组832(例如数字仪表板、电子仪表组、数字仪表面板等等)。仪表组832可以包括控制器和/或超级计算机(例如分立的控制器或超级计算机)。仪表组832可以包括一套仪器,例如车速表、燃油水平、油压、转速表、里程表、转弯指示器、换档位置指示器、安全带警告灯、停车制动警告灯、发动机故障灯、安全气囊(SRS)系统信息、照明控件、安全系统控件、导航信息等等。在一些示例中,信息可以被显示和/或在信息娱乐SoC 830和仪表组832之间共享。换言之,仪表组832可以作为信息娱乐SoC 830的部分而被包括,或者反之亦然。
图8D为根据本公开一些实施例的基于云的服务器与图8A的示例自主车辆800之间的通信的系统示意图。系统876可以包括服务器878、网络890以及包括车辆800在内的车辆。服务器878可以包括多个GPU884(A)-884(H)(这里统称为GPU 884)、PCIe交换机882(A)-882(H)(这里统称为PCIe交换机882)和/或CPU 880(A)-880(B)(这里统称为CPU 880)。GPU884、CPU 880和PCIe交换机可以与诸如例如且不限于NVIDIA开发的NVLink接口888之类的高速互连和/或PCIe连接886互连。在一些示例中,GPU 884经由NVLink和/或NVSwitch SoC连接,并且GPU 884和PCIe交换机882经由PCIe互连连接。尽管图示出八个GPU 884、两个CPU880和两个PCIe交换机,但是这并不意图是限制性的。取决于实施例,服务器878中的每一个可以包括任意数量的GPU 884、CPU 880和/或PCIe交换机。例如,服务器878中的每一个可以包括八个、十六个、三十二个和/或更多GPU 884。
服务器878可以通过网络890并且从车辆接收图像数据,该图像数据表示示出诸如最近开始的道路工程之类的意外或改变的道路状况的图像。服务器878可以通过网络890并且向车辆传输神经网络892、更新的神经网络892和/或地图信息894,包括关于交通和道路状况的信息。对地图信息894的更新可以包括对于HD地图822的更新,例如关于建筑工地、坑洼、弯道、洪水或其他障碍物的信息。在一些示例中,神经网络892、更新的神经网络892和/或地图信息894可以已从新的训练和/或从环境中的任意数量的车辆接收的数据中表示和/或基于数据中心处执行的训练(例如使用服务器878和/或其他服务器)的经验产生。
服务器878可以用来基于训练数据训练机器学习模型(例如神经网络)。训练数据可以由车辆生成,和/或可以在仿真中生成(例如使用游戏引擎)。在一些示例中,训练数据被标记(例如在神经网络受益于有监督学习的情况下)和/或经历其他预处理,而在其他示例中,训练数据不被标记和/或预处理(例如在神经网络无需有监督学习的情况下)。可以根据机器学习技术的任何一个或更多个类别来执行训练,包括但不限于:诸如监督训练、半监督训练、无监督训练、自学习、强化学习、联合学习、转移学习、特征学习(包括主要组成和聚类分析)、多线性子空间学习、流形学习、表示学习(包括备用字典学习)、基于规则的机器学习、异常检测及其任何变体或组合之类的类别。一旦机器学习模型被训练,机器学习模型可以由车辆使用(例如通过网络890传输至车辆),和/或机器学习模型可以由服务器878用来远程地监控车辆。
在一些示例中,服务器878可以接收来自车辆的数据,并且将该数据应用到最新的实时神经网络以用于实时智能推理。服务器878可以包括由GPU 884供电的深度学习超级计算机和/或专用AI计算机,例如NVIDIA开发的DGX和DGX站机器。然而,在一些示例中,服务器878可以包括仅使用CPU供电的数据中心的深度学习基础设施。
服务器878的深度学习基础设施可能够快速实时推理,并且可以使用该能力来评估并验证车辆800中的处理器、软件和/或关联硬件的健康状况。例如,深度学习基础设施可以接收来自车辆800的定期更新,例如图像序列和/或车辆800已经定位的位于该图像序列中的对象(例如经由计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可以运行它自己的神经网络以识别对象并且将它们与车辆800识别的对象相比较,如果结果不匹配并且该基础设施得出车辆800中的AI发生故障的结论,那么服务器878可以向车辆800传输信号,指示车辆800的故障保护计算机进行控制,通知乘客,并且完成安全停车操作。
为了推理,服务器878可以包括GPU 884和一个或更多个可编程推理加速器(例如NVIDIA的TensorRT)。GPU供电的服务器和推理加速的组合可以使得实时响应成为可能。在其他示例中,例如在性能不那么重要的情况下,CPU、FPGA和其他处理器供电的服务器可以用于推理。
示例计算设备
图9为适合用于实现本公开一些实施例的示例计算设备900的框图。计算设备900可以包括直接或间接耦合下列设备的互连系统902:存储器904,一个或更多个中央处理单元(CPU)906,一个或更多个图形处理单元(GPU)908,通信接口910,输入/输出(I/O)端口912,输入/输出组件914,电源916,一个或更多个呈现组件918(例如显示器),以及一个或更多个逻辑单元920。在至少一个实施例中,计算设备900可以包括一个或更多个虚拟机(VM),和/或其任何组件可以包括虚拟组件(例如,虚拟硬件组件)。对于非限制性示例,GPU 908中的一个或更多个可以包括一个或更多个vGPU,CPU 906中的一个或更多个可以包括一个或更多个vCPU,和/或逻辑单元920中的一个或更多个可以包括一个或更多个虚拟逻辑单元。因此,计算设备900可以包括分立组件(例如,专用于计算设备900的完整GPU)、虚拟组件(例如,专用于计算设备900的GPU的一部分)或其组合。
尽管图9的各个框被示为经由具有线路的互连系统902连接,但是这并不意图是限制性的,并且仅仅为了清楚起见。例如,在一些实施例中,诸如显示设备之类的呈现组件918可以被认为是I/O组件914(例如如果显示器为触摸屏)。作为另一个示例,CPU 906和/或GPU908可以包括存储器(例如,存储器904可以表示除了GPU 908、CPU 906和/或其他组件的存储器以外的存储设备)。换言之,图9的计算设备仅仅是说明性的。在诸如“工作站”、“服务器”、“膝上型电脑”、“台式机”、“平板电脑”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实系统”和/或其他设备或系统类型之类的类别之间不进行区分,因为所有这些都被考虑在图9的计算设备的范围内。
互连系统902可以表示一条或更多条链路或总线,例如地址总线、数据总线、控制总线或者其组合。互连系统902可以包括一种或更多种总线或链路类型,例如行业标准架构(ISA)总线、扩展行业标准架构(EISA)总线、视频电子标准协会(VESA)总线、外围组件互连(PCI)总线、外围组件互连快速(PCIe)总线,和/或另一种类型的总线或链路。在一些实施例中,组件之间存在直接连接。例如,CPU 906可以直接连接到存储器904。此外,CPU 906可以直接连接到GPU 908。在组件之间存在直接或点对点连接的情况下,互连系统902可以包括PCIe链路以执行连接。在这些示例中,计算设备900中不需要包括PCI总线。
存储器904可以包括各种各样的计算机可读介质中的任何介质。计算机可读介质可以是可以由计算设备900访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。举例而言且非限制性地,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质可以包括易失性和非易失性介质和/或可移除和不可移除介质,其以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型之类的信息的任何方法或技术实现。例如,存储器904可以存储计算机可读指令(例如其表示程序和/或程序元素,例如操作系统)。计算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或者其他存储技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备,或者可以用来存储期望的信息且可以由计算设备900访问的任何其他介质。当在本文使用时,计算机存储介质并不包括信号本身。
计算机存储介质可以在诸如载波之类的调制数据信号或其他传输机制中包括计算机可读指令、数据结构、程序模块和/或其他数据类型,并且包括任何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或改变。举例而言且非限制性地,计算机存储介质可以包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、RF、红外和其他无线介质之类的无线介质。任何以上所述的组合也应当包括在计算机可读介质的范围内。
CPU 906可以被配置为执行计算机可读指令中的至少一些,以便控制计算设备900的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。CPU 906中的每一个可以包括能够同时处理大量软件线程的一个或更多个核(例如一个、两个、四个、八个、二十八个、七十二个等等)。CPU 906可以包括任何类型的处理器,并且可以包括不同类型的处理器,这取决于实现的计算设备900的类型(例如具有用于移动设备的较少核的处理器以及具有用于服务器的更多核的处理器)。例如,取决于计算设备900的类型,处理器可以是使用精简指令集计算(RISC)实现的高级RISC机器(ARM)处理器或者使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或者诸如数学协处理器之类的补充协处理器之外,计算设备900还可以包括一个或更多个CPU 906。
除了CPU 906之外或作为其替代,一个或更多个GPU 908可以被配置为执行计算机可读指令中的至少一些,以控制计算设备900的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。一个或更多个GPU 908可以是集成GPU(例如,具有一个或更多个CPU 906)和/或一个或更多个GPU 908可以是分立GPU。在实施例中,一个或更多个GPU 908可以是一个或更多个CPU 906的协处理器。计算设备900可以使用GPU 908来渲染图形(例如,3D图形)或执行通用计算。例如,一个或更多个GPU908可用于GPU上的通用计算(GPGPU)。一个或更多个GPU 908可以包括能够同时处理成百上千个软件线程的成百上千个内核。GPU908可以响应于渲染命令(例如,经由主机接口接收到的来自CPU 906的渲染命令)生成用于输出图像的像素数据。GPU 908可以包括图形存储器,例如显示存储器,用于存储像素数据或任何其他合适的数据,例如GPGPU数据。显示存储器可以作为存储器904的一部分被包括。一个或更多个GPU 908可以包括并行操作的两个或更多个GPU(例如,经由链路)。该链路可以直接连接GPU(例如,使用NVLINK),也可以通过交换机(例如,使用NVSwitch)连接GPU。当组合在一起时,每个GPU 908可以为输出的不同部分或不同的输出(例如,第一GPU用于第一图像,第二GPU用于第二图像)生成像素数据或GPGPU数据。每个GPU可包括自己的内存,也可与其他GPU共享内存。
除了CPU 906和/或GPU 908之外或作为替代,逻辑单元920可以被配置为执行计算机可读指令中的至少一些,以控制计算设备900的一个或更多个组件以执行本文描述的方法和/或过程中的一个或更多个。在实施例中,CPU 906、GPU 908和/或逻辑单元920可以分立地或联合地执行方法、过程和/或其部分的任何组合。一个或更多个逻辑单元920可以是CPU 906和/或GPU 908中的一个或更多个的一部分和/或集成在其中,和/或一个或更多个逻辑单元920可以是分立组件或以其他方式在CPU 906和/或GPU908之外。在实施例中,一个或更多个逻辑单元920可以是一个或更多个CPU 906和/或一个或更多个GPU 908的协处理器。
逻辑单元920的示例包括一个或更多个处理核心和/或其组件,例如张量核心(TC)、张量处理单元(TPU)、像素视觉核心(PVC)、视觉处理单元(VPU)、图形处理集群(GPC)、纹理处理集群(TPC)、流式多处理器(SM)、树遍历单元(TTU)、人工智能加速器(AIA)、深度学习加速器(DLA)、算术逻辑单元(ALU)、专用集成电路(ASIC)、浮点单元(FPU)、输入/输出(I/O)元件、外围组件互连(PCI)或外围组件互连快速(PCIe)元件等。
通信接口910可以包括一个或更多个接收器、发送器和/或收发器,其使得计算设备900能够经由电子通信网络与其他计算设备通信,包括有线和/或无线通信。通信接口910可以包括使能通过若干不同网络中的任何网络进行通信的组件和功能,所述网络例如无线网络(例如Wi-Fi、Z波、蓝牙、蓝牙LE、ZigBee等等)、有线网络(例如通过以太网或InfiniBand通信)、低功率广域网(例如LoRaWAN、SigFox等等)和/或因特网。
I/O端口912可以使得计算设备900能够逻辑地耦合到包括I/O组件914、呈现组件918和/或其他组件在内的其他设备,其中一些可以内置到(例如集成到)计算设备900中。说明性I/O组件914包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等等。I/O组件914可以提供处理用户生成的空中手势、语音或其他生理输入的自然用户接口(NUI)。在一些实例中,输入可以传输至适当的网络元件以便进一步处理。NUI可以实现语音识别、手写笔识别、面部识别、生物特征识别、屏幕上和邻近屏幕的手势识别、空中手势、头部和眼睛跟踪以及与计算设备900的显示器关联的触摸识别(如下文更详细地描述的)的任意组合。计算设备900可以包括诸如立体相机系统之类的深度相机、红外相机系统、RGB相机系统、触摸屏技术以及这些的组合,以用于手势检测和识别。此外,计算设备900可以包括使能运动检测的加速度计或陀螺仪(例如作为惯性测量单元(IMU)的部分)。在一些示例中,加速度计或陀螺仪的输出可以由计算设备900用来渲染沉浸式增强现实或者虚拟现实。
电源916可以包括硬接线电源、电池电源或者其组合。电源916可以向计算设备900供电以使得计算设备900的组件能够操作。
呈现组件918可以包括显示器(例如监视器、触摸屏、电视屏幕、平视显示器(HUD)、其他显示器类型或者其组合)、扬声器和/或其他呈现组件。呈现组件918可以接收来自其他组件(例如GPU 908、CPU 906等等)的数据,并且输出该数据(例如作为图像、视频、声音等等)。
示例数据中心
图10图示了可以在本公开的至少一个实施例中使用的示例数据中心1000。数据中心1000可以包括数据中心基础设施层1010、框架层1020、软件层1030和/或应用层1040。
如图10所示,数据中心基础设施层1010可以包括资源协调器1012、分组计算资源1014和节点计算资源(“节点C.R.s”)1016(1)-1016(N),其中“N”表示任何整数、正整数。在至少一个实施例中,节点C.R.s1016(1)-1016(N)可以包括但不限于任何数量的中央处理单元(“CPU”)或其他处理器(包括加速器、现场可编程门阵列(FPGA)、图形处理器或图形处理单元(GPU)等)、存储器设备(例如,动态只读存储器)、存储设备(例如,固态或磁盘驱动器)、网络输入/输出(“NW I/O”)设备、网络交换机、虚拟机(“VM”)、电源模块和/或冷却模块等。在一些实施例中,节点C.R.s1016(1)-1016(N)中的一个或更多个节点C.R.s可以对应于具有一个或更多个上述计算资源的服务器。此外,在一些实施例中,节点C.R.s1016(1)-10161(N)可以包括一个或更多个虚拟组件,例如vGPU、vCPU等,和/或节点C.R.s 1016(1)-1016(N)中的一个或更多个可以对应于虚拟机(VM)。
在至少一个实施例中,分组计算资源1014可以包括容纳在一个或更多个机架(未示出)内或者容纳在不同地理位置的数据中心中的许多机架(也未示出)内的节点C.R.s1016的单独分组。分组计算资源1014内的节点C.R.s1016的单独分组可包括可被配置或分配以支持一个或更多个工作负载的分组计算、网络、存储器或存储资源。在至少一个实施例中,包括CPU、GPU和/或其他处理器的若干节点C.R.s 1016可以被分组在一个或更多个机架内以提供计算资源以支持一个或更多个工作负载。一个或更多个机架还可以包括任意组合的任意数量的电源模块、冷却模块和/或网络交换机。
资源协调器1022可以配置或以其他方式控制一个或更多个节点C.R.s1016(1)-1016(N)和/或分组计算资源1014。在至少一个实施例中,资源协调器1022可以包括数据中心1000的软件设计基础设施(“SDI”)管理实体。资源协调器1022可以包括硬件、软件或其某种组合。
在至少一个实施例中,如图10所示,框架层1020可以包括作业调度器1032、配置管理器1034、资源管理器1036和/或分布式文件系统1038。框架层1020可以包括支持软件层1030的软件1032和/或应用层1040的一个或更多个应用1042的框架。软件1032或应用1042可分别包括基于网络的服务软件或应用,例如由亚马逊网络服务、谷歌云和微软Azure提供的那些。框架层1020可以是但不限于可以利用分布式文件系统1038进行大规模数据处理(例如,“大数据”)的一种免费和开源软件网络应用框架,例如Apache SparkTM(以下称为“Spark”)。在至少一个实施例中,作业调度器1032可以包括Spark驱动器以促进数据中心1000的各个层所支持的工作负载的调度。配置管理器1034可以能够配置不同的层,例如软件层1030和包括Spark和分布式文件系统1038的框架层1020,用于支持大规模数据处理。资源管理器1036可以能够管理映射到或分配用于支持分布式文件系统1038和作业调度器1032的集群或分组计算资源。在至少一个实施例中,集群或分组计算资源可以包括数据中心基础设施层1010处的分组计算资源1014。资源管理器1036可以与资源协调器1012协调以管理这些映射或分配的计算资源。
在至少一个实施例中,在软件层1030中包括的软件1032可以包括由节点C.R.s1016(1)-1016(N)、分组计算资源1014和/或框架层1020的分布式文件系统1038的中至少部分使用的软件。一种或更多种类型的软件可以包括但不限于互联网网页搜索软件、电子邮件病毒扫描软件、数据库软件和流媒体视频内容软件。
在至少一个实施例中,在应用层1040中包括的应用1042可以包括由节点C.R.s1016(1)-1016(N)、分组计算资源1014和/或框架层1020的分布式文件系统1038中的至少部分使用的一种或更多种类型的应用。一种或更多种类型的应用可以包括但不限于任何数量的基因组学应用、认知计算和机器学习应用,包括训练或推理软件、机器学习框架软件(例如,PyTorch、TensorFlow、Caffe等)和/或与一个或更多个实施例结合使用的其他机器学习应用。
在至少一个实施例中,配置管理器1034、资源管理器1036和资源协调器1012中的任何一个可以基于以任何技术上可行的方式获取的任何数量和类型的数据来实施任何数量和类型的自修改动作。自修改动作可以使数据中心1000的数据中心操作员免于做出可能错误的配置决策并且可能避免数据中心的未充分利用和/或性能不佳的部分。
数据中心1000可以包括工具、服务、软件或其他资源以训练一个或更多个机器学习模型或使用根据本文描述的一个或更多个实施例的一个或更多个机器学习模型来预测或推理信息。例如,机器学习模型可以通过使用上文关于数据中心1000描述的软件和/或计算资源根据神经网络架构计算权重参数来训练。在至少一个实施例中,被训练或部署的对应于一个或更多个神经网络的机器学习模型可用于通过使用通过一种或更多种训练技术(例如但不限于本文所述的那些)计算的权重参数,来使用上述关于数据中心1000的资源来推理或预测信息。
在至少一个实施例中,数据中心1000可以使用CPU、专用集成电路(ASIC)、GPU、FPGA和/或其他硬件(或与之对应的虚拟计算资源)来使用上述的资源执行训练和/或推理。此外,可以将上述一个或更多个软件和/或硬件资源配置为允许用户训练或执行信息推理的服务,例如图像识别、语音识别或其他人工智能服务。
示例网络环境
适用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备、服务器、网络附加存储(NAS)、其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如,每个设备)可以在图9的计算设备900的一个或更多个实例上实现——例如,每个设备可以包括计算设备900的类似组件、特征和/或功能。此外,在实现后端设备(例如,服务器、NAS等)的情况下,后端设备可以作为数据中心1000的一部分被包括在内,这里关于图10更详细地描述了其示例。
网络环境的组件可以通过网络彼此通信,网络可以是有线的、无线的或两者。网络可以包括多个网络,或者多个网络中的一个网络。例如,网络可以包括一个或更多个广域网(WAN)、一个或更多个局域网(LAN)、一个或更多个公共网络,例如因特网和/或公共交换电话网络(PSTN),和/或一个或更多个专用网络。在网络包括无线电信网络的情况下,诸如基站、通信塔或甚至接入点(以及其他组件)之类的组件可以提供无线连接。
兼容的网络环境可以包括一个或更多个对等网络环境(在这种情况下,服务器可不包括在网络环境中)以及一个或更多个客户端-服务器网络环境(在这种情况下,一个或更多个服务器可包括在网络环境中)。在对等网络环境中,本文描述的关于服务器的功能可以在任意数量的客户端设备上实现。
在至少一个实施例中,网络环境可以包括一个或更多个基于云的网络环境、分布式计算环境、它们的组合等。基于云的网络环境可以包括框架层、作业调度器、资源管理器和在一个或更多个服务器上实现的分布式文件系统,这些服务器可以包括一个或更多个核心网络服务器和/或边缘服务器。框架层可以包括用于支持软件层的软件和/或应用层的一个或更多个应用程序的框架。软件或应用程序可分别包括基于网络的服务软件或应用程序。在实施例中,一个或更多个客户端设备可以使用基于网络的服务软件或应用程序(例如,通过经由一个或更多个应用程序编程接口(API)访问服务软件和/或应用程序)。框架层可以是但不限于一种类型的免费和开源软件网络应用程序框架,例如可以使用分布式文件系统进行大规模数据处理(例如,“大数据”)。
基于云的网络环境可以提供执行本文描述的计算和/或数据存储功能(或其一个或更多个部分)的任何组合的云计算和/或云存储。这些各种功能中的任何一个都可以分布在(例如,可以分布在州、地区、国家、全球等的一个或更多个数据中心的)中央或核心服务器的多个位置上。如果到用户(例如,客户端设备)的连接相对靠近边缘服务器,则核心服务器可以将功能的至少一部分指定给边缘服务器。基于云的网络环境可以是私有的(例如,仅限于单个组织),可以是公共的(例如,对许多组织可用),和/或其组合(例如,混合云环境)。
客户端设备可以包括本文关于图9描述的示例计算设备900的至少一些组件、特征和功能。作为示例而非限制,客户端设备可以体现为个人计算机(PC)、膝上型计算机、移动设备、智能电话、平板计算机、智能手表、可穿戴计算机、个人数字助理(PDA)、MP3播放器、虚拟现实耳机、全球定位系统(GPS)或设备、视频播放器、摄像机、监控设备或系统、车辆、船只、飞行器、虚拟机、无人机、机器人、手持通信设备、医院设备、游戏设备或系统、娱乐系统、车载计算机系统、嵌入式系统控制器、遥控器、电器、消费电子设备、工作站、边缘设备、描述的这些设备的任何组合,或任何其他合适的设备。
本公开可以在由计算机或者诸如个人数字助理或其他手持式设备之类的其他机器执行的、包括诸如程序模块之类的计算机可执行指令的机器可使用指令或者计算机代码的一般背景下进行描述。通常,包括例程、程序、对象、组件、数据结构等等的程序模块指的是执行特定任务或者实现特定抽象数据类型的代码。本公开可以在各种各样的系统配置中实践,这些配置包括手持式设备、消费电子器件、通用计算机、更专业的计算设备等等。本公开也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。
如在本文中使用的,“和/或”关于两个或更多元素的叙述应当解释为仅指一个元素或者元素组合。例如,“元素A、元素B和/或元素C”可以包括仅仅元素A,仅仅元素B,仅仅元素C,元素A和元素B,元素A和元素C,元素B和元素C,或者元素A、B和C。此外,“元素A或元素B中的至少一个”可以包括元素A中的至少一个,元素B中的至少一个,或者元素A中的至少一个和元素B中的至少一个。进一步,“元素A和元素B中的至少一个”可以包括元素A中的至少一个,元素B中的至少一个,或者元素A中的至少一个和元素B中的至少一个。
本文详细地描述了本公开的主题以满足法定要求。然而,描述本身并非意在限制本公开的范围。相反地,本发明人已经设想到,要求保护的主题也可以以其他的方式具体化,以包括与本文中结合其他当前或未来技术描述的步骤不同的步骤或者相似的步骤的组合。而且,尽管术语“步骤”和/或“块”在本文中可以用来隐含采用的方法的不同元素,但是这些术语不应当被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序,除非明确描述了各步骤的顺序。
Claims (21)
1.一种方法,包括:将表示至少一个传感器的视场中的路口的传感器数据应用于神经网络;使用所述神经网络并且至少部分地基于所述传感器数据,计算表示与所述路口相对应的三维(3D)世界空间位置的数据和与语义信息相对应的一个或更多个置信度值;解码表示所述3D世界空间位置的所述数据以确定一个或更多个线段的位置;解码表示所述一个或更多个置信度值的所述数据以确定针对所述一个或更多个线段的相关联的语义信息;以及至少部分地基于所述一个或更多个线段的位置和所述相关联的语义信息,由自主机器执行一个或更多个操作。
2.如权利要求1所述的方法,其中表示所述3D世界空间位置的所述数据包括对应于所述线段的关键点的3D世界空间位置,对于所述线段中的一个或更多个,所述关键点包括所述一个或更多个线段的端点或中心点中的至少一个。
3.如权利要求2所述的方法,其中所述一个或更多个线段中的线段的所述关键点包括中心点,并且所述神经网络还计算与所述中心点相对应的指示与所述线段相关联的行进方向的方向向量。
4.如权利要求2所述的方法,进一步包括:至少部分地基于与两个或更多个线段的所述关键点相关联的方向向量,生成所述两个或更多个线段之间的一条或更多条潜在路径,其中执行所述一个或更多个操作包括选择所述一条或更多条潜在路径中的一条。
5.如权利要求1所述的方法,其中至少部分地基于将所述神经网络的预测输出转换为2D空间并且使用损失函数将所述2D空间中的所述预测输出与2D地面实况数据进行比较训练所述神经网络。
6.如权利要求1所述的方法,其中至少部分地基于使用损失函数将所述神经网络的3D输出与和所述路口相关联的一个或更多个几何一致性约束进行比较训练所述神经网络。
7.如权利要求1所述的方法,其中所述3D世界空间位置是在目标空间内预测的,所述目标空间具有对应于所述自主机器上的位置的原点,所述目标空间的大小至少部分地基于对多个路口的分析来确定。
8.如权利要求1所述的方法,其中:所述神经网络包括处理所述传感器数据以计算潜在空间向量的编码器部分;并且所述神经网络包括处理所述潜在空间向量以生成表示对应于所述路口的所述3D世界空间位置的数据和对应于所述语义信息的置信度值的解码器部分。
9.如权利要求8所述的方法,其中:所述至少一个传感器包括生成所述传感器数据的第一子集的第一传感器和生成所述传感器数据的第二子集的第二传感器;所述神经网络的所述编码器部分包括处理所述传感器数据的第一子集以生成所述潜在空间向量的第一部分的第一编码器实例和处理所述传感器数据的第二子集以生成所述潜在空间向量的第二部分的第二编码器实例;以及至少部分地基于连接所述第一部分和所述第二部分来生成所述潜在空间向量。
10.如权利要求9所述的方法,其中所述第一编码器实例和所述第二编码器实例使用一个或更多个并行处理单元来并行地执行。
11.一种方法,包括:将表示二维(2D)空间的数据应用于神经网络,所述数据使用至少一个传感器生成;使用所述神经网络并且至少部分地基于所述数据,计算三维(3D)世界空间位置的表示;将所述3D世界空间位置转换为所述2D空间以生成2D空间位置;将所述2D空间位置与和所述传感器数据相关联的2D空间地面实况位置进行比较;以及至少部分地基于所述比较来更新所述神经网络的一个或更多个参数。
12.如权利要求11所述的方法,其中使用损失函数执行所述比较,并且所述方法还包括:使用另一损失函数将所述3D世界空间位置与一个或更多个几何一致性约束进行比较,其中更新所述神经网络的一个或更多个参数进一步至少部分地基于将所述3D世界空间位置与所述一个或更多个几何一致性约束进行比较。
13.如权利要求12所述的方法,其中所述3D世界空间位置对应于路口的线段,并且所述一个或更多个几何一致性约束包括与所述线段对应的平滑度约束、与所述线段对应的直线约束或与所述线段对应的车道宽度约束中的至少一个。
14.如权利要求11所述的方法,其中所述转换至少部分地基于所述至少一个传感器的内在参数或外在参数中的至少一个。
15.如权利要求11所述的方法,其中:所述神经网络包括处理所述传感器数据以计算潜在空间向量的编码器部分;并且所述神经网络包括处理所述潜在空间向量以生成表示所述3D世界空间位置的数据的解码器部分。
16.一种处理器,包括:一个或更多个电路,用于:将表示至少一个传感器的视场中的路口的传感器数据应用于神经网络;使用所述神经网络并且至少部分地基于所述传感器数据,计算表示与所述路口的线段相对应的三维(3D)世界空间位置的数据;以及至少部分地基于与所述线段相对应的所述3D世界空间位置,执行与自主机器的控制相关联的一个或更多个操作。
17.如权利要求16所述的处理器,其中:所述神经网络包括处理所述传感器数据以计算潜在空间向量的编码器部分;并且所述神经网络包括处理所述潜在空间向量以生成表示与所述路口的线段对应的所述3D世界空间位置的数据的解码器部分。
18.如权利要求17所述的处理器,其中:所述至少一个传感器包括生成所述传感器数据的第一子集的第一传感器和生成所述传感器数据的第二子集的第二传感器;所述神经网络的编码器部分包括处理所述传感器数据的第一子集以生成所述潜在空间向量的第一部分的第一编码器实例和处理所述传感器数据的第二子集以生成所述潜在空间向量的第二部分的第二编码器实例;以及至少部分地基于连接所述第一部分和所述第二部分来生成所述潜在空间向量。
19.如权利要求16所述的处理器,其中至少部分地基于将所述神经网络的预测输出转换为2D空间并且使用损失函数将所述2D空间中的所述预测输出与2D地面实况数据进行比较训练所述神经网络。
20.如权利要求16所述的处理器,其中至少部分地基于使用损失函数将所述神经网络的3D输出与和路口相关联的一个或更多个几何一致性约束进行比较训练所述神经网络。
21.如权利要求16所述的处理器,其中所述处理器被包含在以下的至少一个中:用于自主或半自主机器的控制系统;用于自主或半自主机器的感知系统;用于执行模拟操作的系统;用于执行深度学习操作的系统;使用边缘设备实现的系统;使用机器人实现的系统;包含一个或更多个虚拟机(VM)的系统;至少部分在数据中心中实现的系统;或至少部分使用云计算资源实现的系统。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962956025P | 2019-12-31 | 2019-12-31 | |
US62/956,025 | 2019-12-31 | ||
PCT/US2020/063945 WO2021138010A1 (en) | 2019-12-31 | 2020-12-09 | Three-dimensional intersection structure prediction for autonomous driving applications |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114902295A true CN114902295A (zh) | 2022-08-12 |
Family
ID=76546348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080091188.9A Pending CN114902295A (zh) | 2019-12-31 | 2020-12-09 | 用于自主驾驶应用的三维路口结构预测 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20210201145A1 (zh) |
JP (1) | JP2023507695A (zh) |
CN (1) | CN114902295A (zh) |
DE (1) | DE112020006410T5 (zh) |
WO (1) | WO2021138010A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220324463A1 (en) * | 2021-04-13 | 2022-10-13 | Toyota Jidosha Kabushiki Kaisha | Sensor abnormality estimation device |
US20220335727A1 (en) * | 2021-03-05 | 2022-10-20 | Tianiin Soterea Automotive Technology Limited Company | Target determination method and apparatus, electronic device, and computer-readable storage medium |
CN117495847A (zh) * | 2023-12-27 | 2024-02-02 | 安徽蔚来智驾科技有限公司 | 路口检测方法、可读存储介质及智能设备 |
CN117633372A (zh) * | 2024-01-25 | 2024-03-01 | 四川轻化工大学 | 基于物联网的景区游玩路径优化方法、系统、终端及介质 |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11442417B2 (en) * | 2019-03-29 | 2022-09-13 | Microsoft Technology Licensing, Llc | Control system using autoencoder |
US11574089B2 (en) * | 2019-06-28 | 2023-02-07 | Zoox, Inc. | Synthetic scenario generator based on attributes |
US11568100B2 (en) * | 2019-06-28 | 2023-01-31 | Zoox, Inc. | Synthetic scenario simulator based on events |
US11353592B2 (en) * | 2019-09-30 | 2022-06-07 | Zoox, Inc. | Complex ground profile estimation |
US11500385B2 (en) | 2019-09-30 | 2022-11-15 | Zoox, Inc. | Collision avoidance perception system |
US11526721B1 (en) | 2020-02-21 | 2022-12-13 | Zoox, Inc. | Synthetic scenario generator using distance-biased confidences for sensor data |
KR20210111557A (ko) * | 2020-03-03 | 2021-09-13 | 현대자동차주식회사 | 심층 학습 기반의 객체 분류 장치 및 그 방법 |
TWI741541B (zh) * | 2020-03-26 | 2021-10-01 | 華邦電子股份有限公司 | 影像分析系統及影像分析方法 |
US11741728B2 (en) * | 2020-04-15 | 2023-08-29 | Toyota Research Institute, Inc. | Keypoint matching using graph convolutions |
US20220178700A1 (en) * | 2020-12-03 | 2022-06-09 | Motional Ad Llc | Localization based on surrounding vehicles |
US11995157B2 (en) * | 2020-12-04 | 2024-05-28 | Caterpillar Inc. | Intelligent LiDAR scanning |
US11912301B1 (en) * | 2020-12-10 | 2024-02-27 | Zoox, Inc. | Top-down scenario exposure modeling |
US20220185272A1 (en) * | 2020-12-10 | 2022-06-16 | Motional Ad Llc | Lane connectors as a constraint |
US20230192141A1 (en) * | 2021-12-16 | 2023-06-22 | Gm Cruise Holdings Llc | Machine learning to detect and address door protruding from vehicle |
CN114120652A (zh) * | 2021-12-21 | 2022-03-01 | 重庆邮电大学 | 一种基于动态图神经网络的交通流量预测方法 |
GB2617866A (en) * | 2022-04-21 | 2023-10-25 | Continental Automotive Romania Srl | Computer implemented method for training a decision tree model for detecting an intersection, computer implemented method detecting an intersection, |
CN114880770B (zh) * | 2022-04-29 | 2023-03-07 | 西南交通大学 | 一种基于参考深度强化学习的列车协同运行控制方法 |
WO2022226432A1 (en) * | 2022-05-20 | 2022-10-27 | Innopeak Technology, Inc. | Hand gesture detection methods and systems with hand prediction |
KR20230173251A (ko) * | 2022-06-16 | 2023-12-27 | 현대자동차주식회사 | 최소 위험 조작을 수행하기 위한 차량 및 상기 차량의 작동 방법 |
CN115366887B (zh) * | 2022-08-25 | 2024-05-28 | 武汉大学 | 适应自动驾驶的路口分类及车辆驾驶方法及设备 |
CN115359663B (zh) * | 2022-10-21 | 2023-03-14 | 四川省公路规划勘察设计研究院有限公司 | 山区公路灾害路段抗灾韧性计算方法、装置以及电子设备 |
CN115424187B (zh) * | 2022-11-07 | 2023-03-24 | 松立控股集团股份有限公司 | 多角度相机协同重要性排名约束的辅助驾驶方法 |
CN117829083B (zh) * | 2024-03-01 | 2024-05-28 | 上海励驰半导体有限公司 | 基于神经网络的布线方法、装置、电子设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018126228A1 (en) * | 2016-12-30 | 2018-07-05 | DeepMap Inc. | Sign and lane creation for high definition maps used for autonomous vehicles |
US10699135B2 (en) * | 2017-11-20 | 2020-06-30 | Here Global B.V. | Automatic localization geometry generator for stripe-shaped objects |
US11537139B2 (en) * | 2018-03-15 | 2022-12-27 | Nvidia Corporation | Determining drivable free-space for autonomous vehicles |
-
2020
- 2020-12-09 CN CN202080091188.9A patent/CN114902295A/zh active Pending
- 2020-12-09 WO PCT/US2020/063945 patent/WO2021138010A1/en active Application Filing
- 2020-12-09 JP JP2021575363A patent/JP2023507695A/ja active Pending
- 2020-12-09 DE DE112020006410.7T patent/DE112020006410T5/de active Pending
- 2020-12-09 US US17/116,138 patent/US20210201145A1/en active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220335727A1 (en) * | 2021-03-05 | 2022-10-20 | Tianiin Soterea Automotive Technology Limited Company | Target determination method and apparatus, electronic device, and computer-readable storage medium |
US20220324463A1 (en) * | 2021-04-13 | 2022-10-13 | Toyota Jidosha Kabushiki Kaisha | Sensor abnormality estimation device |
CN117495847A (zh) * | 2023-12-27 | 2024-02-02 | 安徽蔚来智驾科技有限公司 | 路口检测方法、可读存储介质及智能设备 |
CN117495847B (zh) * | 2023-12-27 | 2024-03-19 | 安徽蔚来智驾科技有限公司 | 路口检测方法、可读存储介质及智能设备 |
CN117633372A (zh) * | 2024-01-25 | 2024-03-01 | 四川轻化工大学 | 基于物联网的景区游玩路径优化方法、系统、终端及介质 |
CN117633372B (zh) * | 2024-01-25 | 2024-04-09 | 四川轻化工大学 | 基于物联网的景区游玩路径优化方法、系统、终端及介质 |
Also Published As
Publication number | Publication date |
---|---|
JP2023507695A (ja) | 2023-02-27 |
US20210201145A1 (en) | 2021-07-01 |
WO2021138010A1 (en) | 2021-07-08 |
DE112020006410T5 (de) | 2022-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11897471B2 (en) | Intersection detection and classification in autonomous machine applications | |
US20210201145A1 (en) | Three-dimensional intersection structure prediction for autonomous driving applications | |
US11688181B2 (en) | Sensor fusion for autonomous machine applications using machine learning | |
US11769052B2 (en) | Distance estimation to objects and free-space boundaries in autonomous machine applications | |
US11675359B2 (en) | Path detection for autonomous machines using deep neural networks | |
CN110494863B (zh) | 确定自主车辆的可驾驶自由空间 | |
US20200341466A1 (en) | Intersection pose detection in autonomous machine applications | |
US20240127454A1 (en) | Intersection region detection and classification for autonomous machine applications | |
CN111095291B (zh) | 由自动驾驶车辆实时检测车道和边界 | |
US11651215B2 (en) | Landmark detection using curve fitting for autonomous driving applications | |
CN113228042A (zh) | 自主机器应用中障碍物检测的距离 | |
CN110618678A (zh) | 自主机器应用中的行为引导路径规划 | |
CN111133448A (zh) | 使用安全到达时间控制自动驾驶车辆 | |
CN113906271A (zh) | 用于自主机器应用的使用地图信息增强的地面实况数据的神经网络训练 | |
CN112347829A (zh) | 利用障碍物和车道检测来确定环境中对象的车道分配 | |
CN114450724A (zh) | 用于自主机器应用的多活动者环境中的未来轨迹预测 | |
CN116051780A (zh) | 用于自主系统和应用的使用人工智能利用点云致密化的3d表面重建 | |
CN115909237A (zh) | 在自主机器应用程序中使用深度学习的能见度距离估计 | |
US20230213945A1 (en) | Obstacle to path assignment for autonomous systems and applications | |
CN113609888A (zh) | 利用平面单应性和自监督的场景结构理解进行对象检测 | |
CN116048060A (zh) | 用于自主系统和应用的使用神经网络基于真实世界数据的3d表面结构估计 | |
CN117516565A (zh) | 用于在自主系统和应用中导航的车道偏置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |