CN113496290B - 使用采用模拟对象增强的图像训练机器学习模型 - Google Patents
使用采用模拟对象增强的图像训练机器学习模型 Download PDFInfo
- Publication number
- CN113496290B CN113496290B CN202110357294.3A CN202110357294A CN113496290B CN 113496290 B CN113496290 B CN 113496290B CN 202110357294 A CN202110357294 A CN 202110357294A CN 113496290 B CN113496290 B CN 113496290B
- Authority
- CN
- China
- Prior art keywords
- image
- virtual
- vehicle
- representation
- boundary shape
- 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.)
- Active
Links
- 238000012549 training Methods 0.000 title claims description 92
- 238000010801 machine learning Methods 0.000 title abstract description 104
- 238000000034 method Methods 0.000 claims abstract description 66
- 238000013528 artificial neural network Methods 0.000 claims description 65
- 238000012545 processing Methods 0.000 claims description 49
- 230000011218 segmentation Effects 0.000 claims description 40
- 230000007613 environmental effect Effects 0.000 claims description 12
- 238000013135 deep learning Methods 0.000 claims description 11
- 238000005070 sampling Methods 0.000 claims description 10
- 238000004088 simulation Methods 0.000 claims description 10
- 230000002708 enhancing effect Effects 0.000 claims description 4
- 238000001514 detection method Methods 0.000 abstract description 28
- 230000003190 augmentative effect Effects 0.000 abstract description 8
- 238000004364 calculation method Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 63
- 230000015654 memory Effects 0.000 description 51
- 238000012800 visualization Methods 0.000 description 31
- 238000013527 convolutional neural network Methods 0.000 description 26
- 238000004891 communication Methods 0.000 description 23
- 239000003623 enhancer Substances 0.000 description 22
- 238000003860 storage Methods 0.000 description 22
- 230000008569 process Effects 0.000 description 19
- 238000004422 calculation algorithm Methods 0.000 description 18
- 238000007726 management method Methods 0.000 description 17
- 241001465754 Metazoa Species 0.000 description 15
- 230000004044 response Effects 0.000 description 14
- 238000012360 testing method Methods 0.000 description 13
- 230000000007 visual effect Effects 0.000 description 12
- 230000001133 acceleration Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 230000002093 peripheral effect Effects 0.000 description 11
- 230000009471 action Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 8
- 239000012634 fragment Substances 0.000 description 8
- 241000282994 Cervidae Species 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 230000003044 adaptive effect Effects 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 5
- 235000019800 disodium phosphate Nutrition 0.000 description 5
- 238000007667 floating Methods 0.000 description 5
- 238000005286 illumination Methods 0.000 description 5
- 230000009467 reduction Effects 0.000 description 5
- 238000009877 rendering Methods 0.000 description 5
- 239000011435 rock Substances 0.000 description 5
- 230000008447 perception Effects 0.000 description 4
- 238000013439 planning Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 239000004566 building material Substances 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 239000000446 fuel Substances 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 2
- 241000282412 Homo Species 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000036541 health Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 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 2
- 229920002451 polyvinyl alcohol Polymers 0.000 description 2
- 235000019422 polyvinyl alcohol Nutrition 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012706 support-vector machine Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 101100248200 Arabidopsis thaliana RGGB gene Proteins 0.000 description 1
- 102100035964 Gastrokine-2 Human genes 0.000 description 1
- 101001075215 Homo sapiens Gastrokine-2 Proteins 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
- 230000004888 barrier function 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
- 230000000295 complement effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000003066 decision tree Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 231100001261 hazardous Toxicity 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 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
- 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
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 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
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000012806 monitoring device Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000036544 posture Effects 0.000 description 1
- 239000000047 product Substances 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
- 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
- 238000013526 transfer learning Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 238000010396 two-hybrid screening Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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
-
- 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
- B60W50/00—Details of control systems for road vehicle drive control not related to the control of a particular sub-unit, e.g. process diagnostic or vehicle driver interfaces
- B60W50/06—Improving the dynamic response of the control system, e.g. improving the speed of regulation or avoiding hunting or overshoot
-
- 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
-
- 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
- B60W2420/00—Indexing codes relating to the type of sensors based on the principle of their operation
- B60W2420/40—Photo, light or radio wave sensitive means, e.g. infrared sensors
- B60W2420/403—Image sensing, e.g. optical camera
-
- 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
- B60W2554/00—Input parameters relating to objects
- B60W2554/40—Dynamic objects, e.g. animals, windblown objects
- B60W2554/402—Type
- B60W2554/4029—Pedestrians
-
- 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
- B60W2554/00—Input parameters relating to objects
- B60W2554/80—Spatial relation or speed relative to objects
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Automation & Control Theory (AREA)
- Mechanical Engineering (AREA)
- Human Computer Interaction (AREA)
- Transportation (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Image Analysis (AREA)
- Control Of Driving Devices And Active Controlling Of Vehicle (AREA)
Abstract
公开了使用采用模拟对象增强的图像训练机器学习模型,在不同示例中具体公开了系统和方法,其通过使用模拟对象增强真实世界的图像,以将机器学习模型训练为检测输入图像中的对象,来从真实世界的图像中保留丰富、以细节为中心的信息。在部署时可以将机器学习模型训练为检测对象并确定用于封装检测到的对象的边界形状。可以进一步将机器学习模型训练为确定遇到的道路对象的类型、计算危险等级以及计算置信度百分比。在部署时由机器学习模型检测道路对象、确定相应的边界形状、识别道路对象类型,和/或计算危险等级,可以用作在各种自主机器应用中确定有关周围环境下一步骤的辅助,例如,在道路碎片周围导航、在道路碎片上驾驶,或完全停止。
Description
相关申请的交叉引用
本申请要求2020年4月1日提交的美国临时专利申请No.63/003,879的权益,其全部内容通过引用并入本文。
背景技术
自主车辆和半自主车辆利用机器学习(例如,深度神经网络(DNN))来分析车辆行驶时的路面,以便相对于道路边界、车道、道路碎片(debris)、路障、路标等来引导车辆的位置。例如,当自主车辆行驶时,DNN可以用于检测道路迎面而来部分中的道路碎片(例如,动物、锥体、建筑材料),这可能会导致对自主车辆的位置的调整(例如,进行操作以避免驶过道路中间的交通锥标)。然而,训练DNN以准确地检测道路上的对象(object)需要大量的训练数据、计算能力以及人类的时间和精力。此外,捕获具有对象(诸如碎片)的道路的真实世界图像数据是一项具有挑战性的任务,因为碎片通常由驾驶员避免和/或迅速从车道上清除。然而,为了充分训练DNN,需要数千个训练数据实例。这样,在有用的训练数据量(包括可以收集的碎片)与训练数据量(用于精确训练DNN以检测道路碎片)之间可能存在很大的差异。
例如,常规系统通常依赖于在各种环境中四处行驶的有形车辆捕获的真实世界数据来生成DNN的训练数据。然而,由于多种原因,该方法是有问题的。例如,由于社区优先考虑从道路上清除对驾驶员构成危险风险的对象,因此有形车辆遇到具有必须被绕行或驶过的道路物体的道路的机会有限。然而,有目的地在车辆路径上设置具有异物的道路(特别是高速公路)既困难又危险。同样,在这种真实环境中测试DNN检测对象的准确性,以决定在这样的真实环境中是否要驶过对象或导航绕过非常耗时且繁重。然而,在达到高度安全性和准确性之前,汽车制造商不太可能发布仅使用DNN的全自动驾驶汽车。结果,出于安全性和准确性的竞争利益,越来越难以生成实用、稳定和可靠的自动驾驶系统。
发明内容
本公开的实施例涉及训练机器学习模型,以使用利用模拟对象增强的真实世界图像来检测对象。本文公开了系统和方法,所述系统和方法在训练机器学习模型时,通过将道路碎片的模拟实例插入到真实世界的图像中,来在真实世界图像中保留丰富、大量细节的信息,所述道路碎片是很难有机地或有目的地在真实世界的场景中设置,。这样,本公开的实施例涉及检测对象-包括但不限于道路碎片(例如,纸板箱、岩石、车轮、木托盘、死亡动物、原木、交通锥标、床垫等)和/或自主机器的标牌(例如,路牌、立杆等)。
与如上所述的常规系统相比,本公开的系统可以训练机器学习模型,以检测道路上的对象(无论是死亡动物还是床垫),并通过使用采用模拟对象增强的真实世界图像来确定输入图像中每个对象的边界形状。结果,即使在驾驶表面上获取道路碎片的真实世界图像既麻烦又危险,但可以在采用各种模拟道路对象增强的大量真实世界图像数据集上训练机器学习模型,这些模拟道路对象会尽可能多地保留真实世界图像中的细节。这样,通过使用具有模拟对象的真实世界图像来训练机器学习模型,能够使用更接近真实世界场景的大量图像来训练模型,从而提高了对驾驶表面上对象检测的准确性,减少了训练机器学习模型以达到高精确度的时间,并改善了遇到道路对象时的决策结果。
除了检测道路对象之外,还可以由机器学习模型来计算道路对象周围的边界形状和道路对象的危险等级,以帮助系统了解道路对象的危险风险对象和作为响应要执行的动作(例如,绕行、驶过、完全停车等),从而提高了对系统遇到的道路对象的响应的准确性。为了进一步减少系统实时操作的运行时间,可以对机器学习模型进行训练,以使用零样本学习(zero-shot learning)来检测道路上是否有对象(无论对象的类型是否被正确识别),从而消除了常规系统的约束,所述常规系统需要在响应于检测到的道路对象而确定下一个步骤之前准确地识别道路对象。
附图说明
下面参照附加的附图详细地描述了训练机器学习模型以使用采用模拟对象增强的真实世界图像来检测对象的本发明的系统和方法,其中:
图1为根据本公开一些实施例的用于使用采用模拟对象和地面实况数据增强的真实世界图像来训练机器学习模型的示例过程的数据流程图;
图2A为根据本公开一些实施例的具有死亡动物的虚拟实例的模拟图像的示例,其中每个实例具有不同的标准值;
图2B为根据本公开一些实施例的与图2A中的死亡动物的虚拟实例相对应的分割掩码的示例;
图3为根据本公开一些实施例的具有不能满足阈值距离约束的增强模拟对象的真实世界图像的可视化的示例;
图4为根据本公开一些实施例的具有满足重叠约束的增强模拟对象的真实世界图像的可视化的示例;
图5为根据本公开一些实施例的具有满足阈值距离约束和重叠约束的增强模拟对象的真实世界图像的可视化的示例;
图6为根据本公开一些实施例的包括具有用于训练机器学习模型的增强模拟对象的真实世界图像的训练图像的示例;
图7为根据本公开一些实施例的用于训练机器学习模型以使用采用模拟对象增强的真实世界图像和包括边界形状的地面实况数据来检测道路碎片的示例过程的数据流程图;
图8为根据本公开一些实施例的用于生成训练图像来训练机器学习模型以检测图像中的驾驶表面上的对象的方法的流程图;
图9为根据本公开一些实施例的示出用于生成具有满足随机选择标准的虚拟对象的训练图像来训练机器学习模型以检测图像中驾驶表面上的对象的方法的流程图;
图10A为根据本公开一些实施例的示例性自主车辆的示例;
图10B为根据本公开一些实施例的用于图10A的示例自主车辆的相机位置和视场的示例;
图10C为根据本公开一些实施例的用于图10A的示例自主车辆的示例系统架构的框图;
图10D为根据本公开一些实施例的图10A的基于云的服务器与示例自主车辆之间的通信的系统图;
图11为适合用于实现本公开一些实施例的示例计算设备的框图;以及
图12为适合用于实现本公开一些实施例的示例数据中心的框图。
具体实施方式
本文公开了与训练机器学习模型相关的系统和方法,以使用采用模拟对象增强的真实世界图像来检测对象。尽管本公开可以针对示例性自主车辆1000(在本文中可替代地称为“车辆1000”或“自我车辆1000”,在此参照图10A-10D描述了其示例)来描述,但是这并非旨在进行限制。例如,本文所述的系统和方法可由非自主车辆、半自主车辆(例如,在自适应驾驶员辅助系统(ADAS)中)、机器人、仓库车辆、越野车辆、飞行器、船只、乘用车、汽车、卡车、公共汽车、急救车、穿梭车、电动或机动自行车、摩托车、消防车、警车、救护车、施工车辆、水下航行器、无人机和/或其他类型的车辆(例如,无人驾驶和/或可容纳一名或更多名乘客的车辆)来使用。另外,尽管本公开可以关于自主驾驶进行描述,但是这并不旨在是限制性的。例如,本文描述的系统和方法可用于机器人学、空中系统、划船系统和/或其他技术领域中,诸如用于感知、世界模型管理、路径规划、避障和/或其他过程。
本公开的系统生成训练数据,该训练数据包括真实世界数据和模拟数据,用于训练机器学习模型(例如,深度神经网络(DNN),诸如卷积神经网络(CNN)),并且通过使用训练数据作为地面实况数据(例如,与车道线、道路边界、文本和/或其他特征相对应的带注释的标签),同时尽可能多地保留丰富的真实世界数据,来测试机器学习模型。结果,提高了在真实世界环境中检测对象(诸如道路碎片和/或路标)的准确性,同时提供了大量数据来训练和测试机器学习模型。例如,用于训练和测试机器学习模型的图像数据可以是道路的真实世界图像,包括道路上对象的合成或模拟图像。可以生成模拟对象的许多实例,以对应于许多不同的特征(例如,位置、方位、外观属性、光照、遮挡和/或环境条件),从而可以使用各种对象实例来生成更强大的训练集。通过随机抽样这些对象实例(或用于修改实例的条件),可以将模拟对象的各种实例插入到先前捕获的真实世界图像数据中,从而生成大量图像数据和地面实况数据,该地面实况数据对应于真实世界图像数据中的模拟道路对象(例如道路碎片)。本公开的系统和方法的一些非限制性优点是提高对象检测精度,提高道路碎片的识别(所述道路碎片不容易适合特定的对象类别),以及对检测到的对象进行分类的能力,从而减少了车载推理的计算负担。
在本公开的实施例中,并且为了最终帮助确定自主车辆的路径,DNN可用于生成与道路上的对象或碎片(例如,纸板箱、岩石、车轮、木托盘、死亡动物、原木、交通锥标、床垫、路标等)相对应的边界形状(例如,正方形、矩形、三角形、多边形)。可以使用模拟器(例如NVIDIA DriveSim)来生成道路上的模拟对象。可以从模拟器生成的虚拟环境中的汽车上的虚拟传感器的视角生成模拟对象。在一些示例中,通过在不同条件下模拟同一对象来生成每个对象的多个实例。例如,可以对模拟床垫进行修改,就好像它受到一天中不同时间、相对于太阳的不同位置、不同方位或姿势,和/或与虚拟环境中的虚拟传感器的不同距离的影响一样,以创建反映不同环境和位置条件的模拟床垫。还可以生成与对象的每个实例相对应的分割掩码,并将该分割掩码用于确定围绕每个实例的边界形状。例如,可以通过形成紧密围绕对象实例的分割掩码中的所有像素的多边形来生成边界形状。
在一些实施例中,可以用模拟对象的实例来增强真实世界图像(及其对应的地面实况数据),以生成图像数据来训练机器学习模型,以及生成地面实况数据来测试机器学习模型。例如,道路的真实世界图像可具有对应的地面实况数据,其表示场景中的对象(例如,道路上的汽车),具有围绕每个对象的边界形状(例如,道路上的每辆汽车具有围绕其的边界框)。在一些示例中,使用附接到物理汽车上的传感器来捕获真实世界图像。为了生成训练图像,可以通过将模拟对象的实例(诸如纸板箱)插入图像中来增强真实世界图像。在一些示例中,通过确定标准的随机抽样并选择满足(或最接近匹配)抽样到的标准的一个或更多个实例,来选择要插入到真实世界图像中的实例。例如,可以仅选择满足位置和方位标准的模拟对象的实例,以将其包括在真实世界图像中。同样,实例必须满足的标准也可以由真实世界图像中存在的条件来确定。例如,可以识别真实世界图像中的太阳位置和一天中的时间,并用于选择在类似条件下模拟的对象的实例。在其他示例中,可以随机选择条件,这样对象的模拟实例在图像捕获时可能与真实世界环境的条件不匹配。通过这样做,在实施例中,由于处理不同训练数据样本的多样性,机器学习模型可以学习检测先前未知的对象。
一旦将模拟对象的实例插入到真实世界图像中,就可以评估一个或更多个条件以确定经增强的真实世界图像是否为最终训练图像。例如,可以评估从模拟对象的实例到驾驶表面的距离,以确定该距离是否超过阈值。例如,如果模拟对象的实例(例如符合指定标准的纸板箱)在驾驶表面上方五英尺处并且超过三英尺的阈值,则该实例可能不会被选择为包含在真实世界图像中。同样,可以考虑关于模拟对象的实例相对于真实世界图像中存在的对象的放置的重叠条件。例如,可以将模拟对象的实例的边界形状与真实世界图像中对象的边界形状(由真实世界图像的相应地面实况数据确定)进行比较,以确定该边界形状是否重叠。如果边界形状重叠,则可以拒绝模拟对象的实例,而不将其插入到真实世界图像中。在一些示例中,可以考虑边界形状重叠的方式(例如,一个对象是否在另一对象前面)。如果满足所有(或足够)条件,则可以将模拟对象的实例插入到真实世界图像中,并用于训练机器学习模型。
然后,可以将对象是模拟实例的边界形状和真实世界图像中对象的边界形状(如在相应的地面实况数据中所示)用作地面实况数据,以测试机器学习模型是否可以正确识别对象或碎片。在一些示例中,地面实况数据还可用于确定机器学习模型是否正确地对真实世界图像中的对象(诸如动物与纸板箱)进行分类。机器学习模型还可以通过使用零样本学习技术来进行测试,以确定该模型是否能够将道路上先前未见过的对象识别为潜在危险,即使该模型没有将先前未见过的对象准确地进行分类。例如,用毛巾(其尚未包括在用于训练模型的图像中)增强的真实世界图像可用于测试模型并确定模型是否正确地在毛巾周围绘制了边界形状,而不管模型是否将对象本身识别为毛巾。因此,由于存在大量潜在的道路碎片类型,机器学习模型仍可用于准确检测不熟悉的道路碎片,这可允许自主车辆导航到碎片周围,同时保护乘客的安全。
参考图1,图1是根据本发明一些实施例的示出了示例过程100的数据流程图,所述示例过程100用于生成采用虚拟对象增强的真实世界图像,以训练机器学习模型来检测道路碎片。应当理解,这种布置和本文描述的其他布置仅仅作为示例而被阐述。除了所示的那些之外或者代替它们,可以使用其他的布置和元素(例如机器、接口、功能、顺序、功能分组等等),并且一些元素可以完全省略。进一步,许多本文描述的元素是功能实体,其可以实现为分立的或分布式部件或者结合其他部件实现,并且以任何适当的组合和位置实现。本文描述为由实体执行的各个功能可以通过硬件、固件和/或软件实现。例如,各个功能可以通过处理器执行存储在存储器中的指令而实现。在一些实施例中,关于图1的过程100描述的组件、特征和/或功能可以是类似于车辆1000、图11的示例计算设备1100,和/或图12的示例数据中心1200的那些组件、特征和/或功能。
在高层次上,过程100可以包括3D模型生成器102生成对象(例如,道路碎片)的多个表示(例如,虚拟实例),所述对象在由模拟器104生成的虚拟模拟环境中遵守各种标准。模拟器104可包括具有虚拟传感器的虚拟车辆,当虚拟车辆在驾驶表面上行驶时,虚拟传感器从虚拟传感器的角度记录并捕获模拟数据。在一些实施例中,由3D模型生成器102生成的表示(例如,虚拟实例)随后可以插入到模拟器104的虚拟环境中,并从虚拟传感器的角度记录在图像中。当记录模拟数据时,也可以由分割掩码生成器106生成对象的表示的分割掩码。地面实况数据,其包括真实世界图像和在真实世界图像的驾驶表面上的对象的注释,可以由地面实况数据加载器108加载。语义增强器110可以利用(例如,通过插入)对象的一个或更多个生成图形表示到加载的地面实况数据中来增强图像。在一些实施例中,可以基于地面实况数据的真实世界图像中的标准和/或标准匹配条件的随机抽样来选择该表示。在一些实施例中,只有那些满足关于到驾驶表面的距离阈值以及与真实世界图像中其他对象的重叠量的约束的表示,用于增强(例如插入)真实世界图像,以创建训练图像。语义增强器110还可以基于相应的分割掩码来绘制围绕插入的表示的边界形状,以确定插入的表示是否满足约束。一旦满足约束的表示被插入到真实世界图像中,地面实况数据就可以由地面实况数据更新器112更新,以包括经增强的真实世界图像和虚拟对象周围的相应边界形状。经增强的真实世界图像可以由数据集生成器114最终确定,并由训练器116用来训练机器学习模型。机器学习模型一旦被训练,就可以经由部署模块118来部署,以供车辆1100使用图像来检测驾驶表面上的碎片或对象,并且响应于检测到的道路对象来确定接下来的步骤。接下来的或操作可以包括世界模型管理、路径规划、控制决策、避障,和/或自主或半自主驾驶软件栈的其他操作。
3D模型生成器102可以是基于游戏的引擎,其生成虚拟对象的虚拟实例。虚拟对象会跨度各种潜在的道路碎片或对象类型,包括但不限于例如,纸板箱、岩石、车轮(和车轮部件)、木托盘、死亡动物、原木、交通锥标、床垫、路标和其他对象。3D模型生成器102可以生成给定虚拟对象的多个实例,并且使每个虚拟实例经受不同的一组条件,例如位置、光照、方位、姿势、遮挡、环境条件和/或外观属性。例如,3D模型生成器102可以生成模拟构造锥标的二十个实例,其中构造锥标的每个表示使用不同的材料或色调,从而提供大量的构造锥标数据集,用于训练机器学习模型。
在一些实施例中,施加在虚拟对象的虚拟实例上的环境条件可以包括一天中不同时间、相对于太阳的位置、天气条件(例如,雨、雾、多云)、能见度距离和/或与虚拟环境中虚拟传感器的不同距离,以进行域随机化。在一些实施例中,虚拟实例的外观属性可以包括变化的色调、材料和纹理。例如,3D模型生成器102可以生成床垫的一组3D虚拟实例,其中所述床垫的每个实例处于不同的位置并且经受不同方向和太阳位置。同样,床垫的每个3D虚拟实例都可经受变化的天气条件,诸如雨天与阴天,或变化的光照条件,诸如白天、夜晚、黎明、黄昏等。在一些实施例中,3D模型生成器102可以按设置的间隔或各种条件的增量生成对象的虚拟实例,以提供大量的虚拟实例或其他表示,所述其他表示可用于训练一个或更多个机器学习模型。例如,3D模型生成器102可以在远离虚拟车辆上的虚拟传感器的设定距离间隔处生成虚拟实例,以确保存在大量虚拟实例可供选择。例如,3D模型生成器可以从虚拟传感器每隔两英尺生成一虚拟实例。类似地,3D模型生成器102可以生成多个虚拟实例,虚拟实例具有相同组的一些条件(例如,位置,点位,方位),但是对于每个实例而言虚拟实例相对于一个条件(例如,天气条件)有所不同,以确保任何可能的选定条件集都可能与生成的虚拟实例紧密匹配。
在一些实施例中,3D模型生成器102可以与模拟器104一起操作,以确定各种条件到对象的虚拟实例上的应用。例如,模拟器104可以提供关于模拟环境的条件的信息,所述模拟环境条件的信息可以由3D模型生成器102使用,以相应地生成虚拟实例。例如,有关模拟环境中虚拟汽车上虚拟传感器的角度的信息可以由3D模型生成器102使用来创建虚拟实例,所述虚拟实例相对于在模拟环境中安装在虚拟汽车上的虚拟传感器的角度具有相对应的方位或姿势。在任何示例中,可以在模拟环境中的虚拟传感器中使用与车辆1100的真实世界传感器相对应的传感器模型。
现在参考图2A,图2A为根据本公开一些实施例的包括死鹿的多个表示(例如,虚拟实例)作为路障的模拟图像的示例。在该示例中,模拟图像200包括虚拟环境202和死鹿的表示(例如,虚拟实例)204、206和208。死鹿的每个虚拟实例204、206和208具有不同的位置(position)和点位(location),并且为了本示例的目的,还可以具有其他变化特征,诸如色调。大量虚拟实例(每个虚拟实例都有不同的条件集)提供至少一个生成的虚拟实例将满足(或接近满足)所选标准的很高的可能性。
返回到图1,模拟器104可以提供虚拟环境,以从安装在虚拟车辆上的虚拟传感器的视角捕获在虚拟环境中行驶的虚拟车辆的数据。在一些实施例中,可以调整虚拟环境和虚拟车辆上的虚拟传感器,以与用作地面实况数据一部分的真实世界图像中的条件(例如,传感器角度和距地面高度)对齐。由3D模型生成器102生成的对象的虚拟实例可以被插入到模拟器104的虚拟环境中。模拟器104一旦被插入到虚拟环境中就可以调整虚拟实例的一些属性。例如,可以丢弃那些不位于驾驶表面上的虚拟实例。类似地,可以基于距虚拟车辆上的虚拟传感器的距离来将虚拟实例缩放为更大或更小,使得距离虚拟传感器较远的虚拟实例可以被缩放为比更接近传感器的虚拟实例更小。模拟器104还可以基于其他条件来重新布置虚拟实例,诸如将在阴影条件下生成的那些虚拟实例放置在虚拟环境中云遮挡太阳的部分中。
一旦将虚拟实例插入到虚拟环境中,模拟器104就可以记录车辆在驾驶表面上行驶并遇到道路碎片的一个或更多个虚拟实例。如本文所述,分割掩码生成器106还可以使用模拟器104记录的数据来生成虚拟实例的分割掩码。
现在参考图2A,模拟图像200包括由模拟器104生成的虚拟环境202和死鹿的多个表示(例如,虚拟实例)204、206和208。如图2A所示,多个虚拟实例204、206和208作为驾驶表面上的道路碎片被集成到虚拟环境202中。可以进一步修改或增强虚拟实例204、206和208,以满足虚拟环境202的条件。例如,不包括虚拟环境202中驾驶表面之外的任何虚拟实例。同样地,虚拟实例204、206和208可以与虚拟环境202中虚拟车辆上的虚拟传感器的距离成比例地缩放。例如,死鹿的虚拟实例206被缩放为小于虚拟实例204,因为与虚拟实例204相比,虚拟实例206距离虚拟传感器更远。类似地,如图2A所示,基于与虚拟传感器的距离,虚拟实例208被缩放为比虚拟实例204小得多,而比虚拟实例206稍微小一些。此外,虚拟实例被定向为使得每个虚拟实例被平放在驾驶表面上,驾驶表面在虚拟环境202中略微向上倾斜。
返回到图1,分割掩码生成器106生成与虚拟对象的虚拟实例相对应的分割掩码。分割掩码可以表示图像的较小部分,并表示与图像的较小部分有关的像素。例如,分割掩码生成器106可以生成表示与对象的每个虚拟实例相对应的像素的单独的分割掩码。例如,用于特定虚拟实例的分割掩码可以表示图像中表示虚拟实例的像素,但是不提供有关虚拟实例本身的数据(例如,颜色、外观等)。在一些实施例中,分割掩码可以包括由所有虚拟实例所包围的像素。在一些实施例中,分割掩码可以被存储为单个文件或一系列文件,其中每个文件对应于特定的虚拟实例。同样,分割掩码也可以存储为透明图像文件(例如,PNG文件类型)。
现在参考图2B,图2B为与图2A中的死鹿的虚拟实例204、206和208相对应的示例分割掩码。分割掩码可以表示为表示所有虚拟实例204、206和208的掩码,如分割掩码210所示。同样,分割掩码可以由一系列分割掩码来表示,其中每个掩码对应于单个虚拟实例,如分割掩码212、214和216所示。分割掩码212、214和216分别勾勒和表示存在于每个虚拟实例204、206和208中的像素,并且显示了每个虚拟实例204、206和208在虚拟环境202中的位置。但是,分割掩码212、214和216可能不包含有关相应虚拟实例204、206和208的信息(例如,像素颜色)。
利用由分割掩码表示的每个虚拟实例的像素,分割掩码生成器106还可以生成包围每个虚拟实例的边界形状(例如,正方形、矩形、椭圆形、三角形、多边形等),以确定虚拟实例是否满足真实世界图像中的约束。例如,对于对象的给定虚拟实例,分割掩码生成器106可使用用于该虚拟实例的分割掩码来确定与该虚拟实例相对应的像素,并围绕包含所有像素的分割掩码绘制一边界多边形(或其他形状)。在一些实施例中,可以围绕像素紧密地形成边界形状。
现在参考图3,图3为根据本公开一些实施例的具有不能满足阈值距离约束的经增强的模拟对象的真实世界图像的示例可视化300。可视化300还包括地面实况注释,诸如围绕真实世界图像中的对象的边界形状。如图3所示,图2A的虚拟实例206已经被插入到可视化300中。虚拟实例206包括边界形状304,边界形状304是基于图2B的分割掩码214来制定的。边界形状304封装了表示虚拟实例206的所有像素。图4和图5类似地分别示出了围绕虚拟实例204和208的边界形状402和502,它们是由分割掩码生成器106基于它们各自的分割掩码212和216绘制的。
返回到图1,地面实况数据加载器108接收并加载地面实况数据。地面实况数据可以是具有注释数据的真实世界图像,诸如边界形状和标签(例如,道路中对象的类型、危险等级)。可以通过手动和/或自动生成围绕对象的形状来生成地面实况数据。例如,用于地面实况数据的边界形状或其他注释数据可以是合成产生的(例如,从计算机模型或渲染生成的)、真实产生的(例如,从真实世界数据设计和产生的)、机器自动化的(例如,使用特征分析和学习从数据中提取特征,然后生成边界形状)、人工注释的(例如,注释专家,定义对象的边界形状)和/或其组合(例如,人工注释的折线点,然后光栅化器从折线点生成完整的多边形)。例如,地面实况数据可以是道路的真实世界图像,其中道路车道中的其他汽车带有注释,诸如在道路上每辆车周围的边界形状。地面实况数据还可以包括注释,诸如在视图中围绕其他对象的边界形状,其他对象诸如道路标志或过马路的人。类似地,地面实况数据可包括标签,用于表示对象是毛巾,并将检测到的对象标记为非危险的。
现在参考图3,可视化300包括真实世界图像的地面实况注释,包括在视图中围绕对象的边界形状。例如,可视化300包括真实世界图像302,其包括仅通过真实世界的图像数据才可能具有的丰富、准确的细节水平。在插入虚拟实例204之前,可视化300还包括围绕驾驶表面上各种对象的边界形状306、308、310、312和314。例如,边界形状306、308、312和314分别包括表示特定车辆的像素。类似地,边界形状310封装表示过马路的人的像素。在该示例中,边界形状306、308、310、312和314可在由图1的地面实况数据加载器108加载之前由人类绘制。就本例而言,真实世界图像302中的对象(例如,过马路的人)可以被标记为危险的,以指示应避开该对象。在图4和图5中的可视化400和500分别类似地示出了具有地面实况注释(诸如边界形状306、308、310、312和314)的真实世界图像302。
返回到图1,语义增强器110可以确定使用对象的哪些表示来增强真实世界图像。在一些实施例中,语义增强器110可以对标准或条件(例如位置,光照,方位,姿势,环境条件和/或外观属性)进行抽样(随机地,根据一个或更多个实施例),并选择与抽样的标准匹配或紧密匹配的一个或更多个表示。例如,语义增强器110可以随机地选择床垫的方向和位置,并搜索满足随机抽样标准的床垫的表示。在一些实施例中,语义增强器110可以选择满足存在于地面实况数据中的真实世界图像中存在的条件的表示。例如,语义增强器110可以搜索表现出真实世界图像中存在的类似条件(诸如太阳位置、一天中的时间、姿势、方位、光照、遮挡、阴影和天气条件)的表示。在一些实施例中,语义增强器110可以使用混合方法来选择标准,其中一些标准基于真实世界图像中存在的标准,而其他标准则基于随机抽样来选择。在一些实施例中,语义增强器110还可以将表示插入到真实世界图像中,并且还可以修改该表示以符合真实世界图像中的条件。例如,与抽样的条件紧密匹配(但不精确匹配)的表示可以被插入到真实世界图像中,并可以进行调整以满足确切的抽样的标准。例如,可以调整具有紧密匹配标准的表示,使得其姿势与用于捕获真实世界图像的传感器的视角精确对齐。
语义增强器110还可以使用满足所选标准的表示来增强真实世界图像,并确定该表示是否满足对放置在真实世界图像内的约束。例如,表示可能已经在类似于真实世界图像的条件(例如,天气条件)和随机抽样的标准的条件下生成的,但当插入到真实世界图像中时可能不满足额外的距离阈值和重叠约束。例如,在使用表示来增强真实世界图像之后,该表示可能离驾驶表面太高,以致该表示看起来在天空中。同样,当插入的表示放置在真实世界图像中时,可能会重叠或看起来在道路上另一个对象的紧邻上方(或下方)。为了使这些问题的发生最小化,在使用增强的真实世界图像来训练机器学习模型之前,语义增强器110可以检查各种约束。
语义增强器110可以确定用于增强真实世界图像的表示是否满足距离阈值约束。例如,语义增强器110可以验证表示满足垂直距离阈值约束(例如,距真实世界图像的驾驶表面的垂直距离)。例如,语义增强器110可以确定插入的表示是否在驾驶表面上方超过一英尺、两英尺、三英尺、五英尺等。同样,距离阈值可以是距驾驶表面的边界的水平距离阈值,以确定虚拟实例是否在驾驶表面的水平边界之外。例如,语义增强器110可以检查所插入的表示是否在驾驶表面的边界之外的一英尺、两英尺、五英尺内。在一些实施例中,可以在真实世界图像中三维坐标系内测量距离,以确定所插入的表示是否满足距离阈值约束。在一些实施例中,语义增强器110使用表示的相应边界形状来确定表示是否满足距离阈值,以测量距驾驶表面的距离。在一些实施例中,拒绝不满足距离阈值约束的表示,并且不将其插入到真实世界图像中。
现在参考图3,图3是用模拟对象的表示增强的真实世界图像(具有地面实况注释)的示例。表示(例如,虚拟实例)206已经被用于增强真实世界图像302,并且具有与其相关联的边界形状304。在该示例中,可以在真实世界图像302的三维坐标系内确定虚拟实例206(或其边界形状304)与驾驶表面303之间的距离,以确定虚拟实例206(或其边界形状304)是否超过了例如在驾驶表面303上方一英尺的垂直距离阈值。当计算时,虚拟实例206实际上是驾驶表面303上方三英尺,并且未满足距离阈值。同样,可以检查从虚拟实例206(或其边界形状304)到驾驶表面303的水平边界的距离,来查看虚拟实例206(或其边界形状304)是否落在例如驾驶表面303的边界外部六英寸之内,以满足水平距离阈值。当虚拟实例206(及其边界形状304)被很好地放置在驾驶表面303的边界内时,虚拟实例206(及其边界形状304)很容易满足水平距离阈值约束,但不满足垂直距离阈值约束。因为可视化300不满足这两个约束,所以可以不选择可视化300来训练或测试机器学习模型以检测道路碎片。
现在参考图4,图4为根据本公开一些实施例的具有满足阈值距离约束和重叠约束的经增强的模拟对象的真实世界图像的示例可视化400。可视化400还包括地面实况注释,诸如围绕真实世界图像中其他对象的表示的边界形状。图2A的虚拟实例204及其相关联的边界形状402包括在可视化400中。如关于图3所述,可以检查虚拟实例204的距离阈值约束。在该示例中,虚拟实例204(及其边界形状402)恰好处于驾驶表面上方三英尺的垂直距离阈值之内,并处于驾驶表面的边界之外六英寸的水平距离阈值内。因此,可以将虚拟实例204插入到真实世界图像302中,以生成训练图像。
现在参考图5,图5为根据本公开一些实施例的具有满足阈值距离约束和重叠约束的经增强的模拟对象的真实世界图像的示例可视化500。可视化500包括放置在真实世界图像302中的图2A的虚拟实例208,以及现有的地面实况数据,诸如围绕真实世界图像302中的对象的边界形状。与图4类似,虚拟实例208及其边界形状502很好地位于垂直和水平距离阈值内,并且可以被插入到真实世界图像302中以生成训练图像,来训练机器学习模型以检测道路碎片。
语义增强器110还可以确定插入到用于地面实况数据的真实世界图像中的虚拟实例是否满足与真实世界图像中其他对象的重叠约束。例如,在地面实况数据中使用的真实世界图像可以包括在驾驶表面上的对象,诸如其他汽车和行人,所述对象不应与插入的虚拟实例重叠。地面实况数据还可以包括注释,诸如真实世界图像中每个对象的边界形状。使用真实世界图像中的对象的地面实况注释,语义增强器110可以确定是否使用虚拟实例来增强真实世界图像。
如果虚拟实例的边界形状不与真实世界图像和现有地面实况数据中的对象的边界形状相交或重叠对象,则语义增强器110可以确定满足重叠约束。同样,如果虚拟实例的边界形状内包含的像素与地面实况数据中的对象的边界形状内包含的像素不重叠或不包含在相同的空间中,则语义增强器110可以确定满足重叠约束。例如,如果行人在人行横道上,则可以检查床垫的虚拟实例,以验证与行人相对应的边界形状是否与虚拟实例的边界形状相交,以确保该虚拟实例不在行人的顶部或与行人重叠。同样,每个边界形状内的像素可以相互检查以确定重叠。在一些实施例中,语义增强器110可以基于虚拟实例是否已经被插入在真实世界图像中的其他对象之前或之后,来确定该虚拟实例是否满足重叠约束。在一些实施例中,不满足重叠约束的虚拟实例被拒绝,并且不被插入到真实世界图像中。
现在参考图4,图2A的虚拟实例204已被插入到可视化400中。现有的地面实况数据包括围绕真实世界图像中存在的对象的边界形状306、308、310、312和314。例如,边界形状306、308、310、312和314包围了汽车和行人的像素。还示出了包围由虚拟实例204表示的所有像素的边界形状402。为了确定虚拟实例204是否已经满足重叠约束,对照边界形状306、308、310、312和314的边界内的像素,检查边界形状402的边界内的像素。在该示例中,由边界形状402包围的像素与由边界形状310、312和314包围的像素重叠或位于相同的位置。然而,因为虚拟实例204及其对应的边界形状402在边界框310、312和314(以及它们所包围的对象)前面,所以虚拟实例204满足重叠约束。因为虚拟实例204满足距离阈值约束(如本文所述)和重叠约束,所以虚拟实例204被选择为插入真实世界图像302中,用于训练机器学习模型。
现在参考图5,可视化500包括插入到真实世界图像302中的图2A的虚拟实例208。与图3和图4一样,图5包括现有地面实况中的地面实况注释,诸如围绕真实世界图像中存在的对象的边界形状306、308、310、312和314。可以检查虚拟实例208及其对应的边界形状502,以确定虚拟实例208是否满足重叠约束。检查边界形状502和虚拟实例208是否符合重叠约束,所述重叠约束要求不与可视化500中的其他边界形状重叠。在该示例中,包含在边界形状502内的像素不与包含在其他边界形状306、308、310、312和314中的任何像素相交或重叠。如本文所述,虚拟实例208满足距离阈值约束和重叠约束。因此,可视化500和用虚拟实例208增强的真实世界图像302可以用作训练图像来训练机器学习模型,以检测道路碎片。
返回到图1,地面实况数据更新器112可以更新地面实况数据,以反映现有地面实况数据已用对象的虚拟实例增强。例如,一旦插入到真实世界图像中的虚拟实例满足必要的约束(例如,距离阈值和重叠约束),则地面实况数据更新器112可以更新现有地面实况数据,如为评估机器学习模型的有效性而存储的,以包括插入的虚拟实例和虚拟实例周围的关联边界形状。地面实况数据更新器112还可为插入的虚拟实例添加关于危险等级的标签和/或对象类型标签。
参照图5,可视化500可用于更新现有的地面实况数据,其包括围绕虚拟实例208的边界形状502以及真实世界图像302中的其他对象的边界形状306、308、310、312和314。例如,现有地面实况数据可以包括真实世界图像302和边界形状306、308、310、312和314。地面实况数据更新器112可以更新现有地面实况数据,以包括插入的虚拟实例208以及边界形状502。地面实况数据还可以被更新,以包括关于对象的标签,诸如虚拟实例208是危险等级为“高”的死亡动物。因此,当使用采用虚拟实例204增强的真实世界图像302的训练图像来训练机器学习模型时,存在具有边界形状306、308、310、312、314和502以及标签的相应地面实况数据,来评估机器学习模型的有效性。
返回到图1,数据集生成器114可以使用采用对象的虚拟实例增强的真实世界图像来生成新的数据集和/或训练图像。例如,一旦语义增强器110确定虚拟实例满足要插入到真实世界图像中的任何所需约束,则数据集生成器114可以通过修改真实世界图像以包括令人满意的虚拟实例来生成用于训练机器学习模型的数据集。在一些实施例中,数据集生成器114可以通过从更新的地面实况数据中移除边界形状来生成数据集,该更新的地面实况数据包括用虚拟实例增强的真实世界图像。
参照图6,训练图像600是根据本公开一些实施例的训练图像的示例,所述训练图像包括采用满足预设的约束的模拟对象的表示增强的真实世界图像。为了生成训练图像600,在图5中呈现的可视化中的所有地面实况注释(诸如边界形状306、308、310、312、314或502)已被去除。如图6所示,训练图像600包括插入到真实世界图像302的虚拟实例204中。训练图像600可用于训练机器学习模型以检测道路碎片。
返回到图1,训练器116可以使用训练图像(包括用虚拟实例增强的真实世界图像)来训练机器学习模型。例如,训练器116可以接收训练图像(诸如训练图像600),将其提供给机器学习模型,并通过使用相应的地面实况数据来评估模型的输出(例如,围绕道路碎片的边界形状、危险等级),诸如图5中的可视化500。训练器116然后可以确定模型的边界形状和危险等级的输出是否与相应的地面实况数据匹配,并将结果提供给机器学习模型。在一些实施例中,训练器116可以通过将带有对象的图像输入到机器学习模型来实现零样本训练,所述对象在以前的训练图像中不存在。在一些实施例中,训练器116通过确定机器学习模型是否将对象识别为道路碎片,来评估使用零样本训练的训练结果,即使对象的类型(由机器学习模型识别)是不正确的,例如,即使机器学习模型未被训练为对特定的类别或对象类型进行具体分类。
部署模块118可以部署经训练的机器学习模型,以向自主车辆1000提供检测道路碎片的机制。例如,部署模块118可以在驶过驾驶表面的自主车辆1000中部署经训练的机器学习模型,以检测在驾驶表面上是否存在对象。在一些实施例中,部署模块118还可以部署机器学习模型以检测对象类型(例如,纸板箱、死亡动物、床垫)、对象是否是危险的,以及评估对象是否为危险的百分比置信度。
部署模块118还可以部署要用于确定下一动作的模型。例如,基于模型的输出,车辆1000(例如,半自主或自主驾驶软件栈)可以根据对象类型、危险等级和/或百分比置信度来确定是操纵绕过对象、驶过对象还是完全停止。例如,部署模块118可以部署一个或更多个机器学习模型,并且接收围绕驾驶表面上对象的边界形状的输出和危险等级,诸如道路上扁平纸板箱周围的小矩形,危险等级为“低”。作为响应,部署模块118可以通过机器学习模型来确定下一步是驶过扁平纸板箱还是停止或操纵绕过纸板箱。然而,对于具有较大边界形状和/或较高危险等级的对象,诸如大的死亡动物或掉落的建筑材料,其对驾驶员构成危险,则部署模块118可以代替地确定响应动作是使车辆完全停止或操纵到危险对象旁边。
现在参考图7,图7为根据本公开一些实施例的用于训练机器学习模型以检测道路碎片的示例过程700的数据流程图。训练图像数据702可以包括图像数据,诸如用满足一组约束的模拟对象(例如,道路碎片、道路标志)增强的真实世界图像。如本文所述,图1描述了用经增强的对象增强真实世界图像的过程,并且图6是训练图像的示例。训练图像数据702还可以包括图像,该图像包含未采用其训练机器学习模型的对象。例如,机器学习模型可以预先用包含纸板箱和死亡动物的图像进行训练。然而,训练图像数据702还可以包括具有先前训练图像中不存在的对象的图像,诸如建筑物锥体和床垫,以便实现零样本学习。
机器学习模型704可以使用一个或更多个图像或其他数据表示(例如LIDAR数据、RADAR数据等)作为输入来生成一个或更多个输出706,所述其他数据表示如由训练图像数据702表示的。在非限制性示例中,一个或更多个机器学习模型704可以采用以下中的一个或更多个作为输入来生成输出706:由训练图像数据702(例如,在经过预处理后)表示的一个或更多个图像,所述输出诸如边界形状708和/或危险等级710。尽管本文中针对使用神经网络(具体而言,使用CNN)作为机器学习模型704描述了示例,但这并不意图是限制。例如但不限于,本文描述的机器学习模型704可以包括任何类型的机器学习模型,诸如使用线性回归、逻辑回归、决策树、支持向量机(SVM)、朴素贝叶斯、k-最近邻(Knn)、k均值聚类、随机森林、降维算法、梯度提升算法、神经网络(例如,自动编码器、卷积、递归、感知器、长/短期记忆网络(LSTM)、Hopfield、Boltzmann、深度信念、反卷积、生成式对抗、液态机等)的机器学习模型,和/或其他类型的机器学习模型。
机器学习模型704的输出706可以包括边界形状708、危险等级710和/或其他输出类型。为了对机器学习模型704的输出进行解码,在一些非限制性示例中,可以实现GPU加速。例如,可以实现并行处理平台(例如NVIDIA的CUDA),用于通过若干计算内核对算法进行并行化,以对输出进行解码,从而缩短了运行时间。在一些实施例中,输出706可以包括附加输出,诸如对象类型(例如,死亡动物、建筑材料)以及与每个输出相关联的百分比置信度。
边界形状708可以包括训练图像数据702中每个对象的形状,其中所述形状包围了表示每个相应对象的所有像素。边界形状708可以是捕获和包围给定对象中的像素的任何形状(例如,正方形、矩形、三角形、多边形)。例如,如本文所述,图5是包围给定对象的像素的边界形状306、308、310、312、314和502的示例可视化。在一些实施例中,可将边界形状708松散地或紧密地装配在对象周围,以调节在边界形状708内捕获的对象外部的像素的数量。这样,机器学习模型704可以针对训练图像数据702中的每个对象来计算边界形状708的输出。每个边界形状708还可以伴随有百分比置信度值。
一个或更多个危险等级710可以包括训练图像数据702中每个对象的危险程度的等级。一个或更多个危险等级710可以是道路上特定对象构成的危险威胁的数值(例如,从1到10的范围)、危险标签(例如,是否存在危险)和/或相对值(例如,低、中、高)。例如,大型死亡动物(诸如驼鹿)可接收到危险等级710,该危险等级指示的危险水平比平整的纸板箱要高。一个或更多个危险等级710还可附有对象类型标签,该对象类型标签可用于确定对象构成的危险威胁的等级。在一些实施例中,当实现零样本学习时,可以计算一个或更多个危险等级710,而不考虑检测到的对象的类型。例如,为大型岩石分配高危险等级710对于机器学习模型704来确定而言,比机器学习模型将对象识别为岩石更有价值。每个危险等级710可附有百分比置信度值。
模型训练器720可以是用于机器学习模型704的训练器,所述机器学习模型704相对于地面实况数据714评估一个或更多个输出706,使用一个或更多个损失函数确定差异,并基于结果来更新机器学习模型704的参数(例如权重和偏差)。地面实况数据714可以包括注释数据,诸如与真实世界对象和/或模拟对象相对应的边界形状716和危险等级718。例如,地面实况数据714可以包括注释(诸如围绕每个对象的矩形)、描述对象类型的标签,以及每个对象是否是危险的标签。如本文所述,图5是对应于图6的地面实况数据的可视化的示例,其包括围绕道路上每个对象的边界形状。基于地面实况数据714和一个或更多个输出706,模型训练器720可以调整用于训练一个或更多个机器学习模型704的学习算法和训练图像数据702,以制定围绕道路上每个对象的边界形状,来更紧密地匹配地面实况数据714。同样地,使用地面实况数据714,模型训练器720还可以调整机器学习模型704的学习算法,以更准确地用对象类型和危险等级710来标记对象。
现在参考图8-9,本文所述的方法800和900的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,各种功能可以由执行存储在存储器中的指令的处理器来实现。所述方法800和900也可以具体化为存储在计算机存储介质上的计算机可用指令。仅举几例,所述方法800和900可以由独立应用程序、服务或托管服务(独立地或者与另一个托管服务结合地)或者另一个产品的插件提供。此外,通过示例的方式,关于图1的过程100描述了方法800和900。然而,此外或者可替代地,这些方法可以由任意一个系统或者系统的任意组合——包括但不限于本文描述的那些系统来执行。
图8为根据本公开一些实施例的用于使用采用模拟对象增强的真实世界图像来训练机器学习模型以检测图像中的对象的方法800的流程图。在框B802处,方法800包括从虚拟环境中虚拟车辆的虚拟传感器视角来生成对象的虚拟实例的第一图像。例如,从安装在模拟环境中的虚拟车辆上的虚拟传感器的视角,可以经由基于游戏的引擎来生成如图2A所示的死亡动物的虚拟实例204、206和208。
在框B804处,方法800包括确定与对象的虚拟实例相对应的边界形状。例如,可以使用与虚拟实例206相关联的分割掩码214来创建与虚拟实例(诸如虚拟实例206)相对应的边界形状(诸如边界形状304)。在一些实施例中,边界形状可以紧密地或松散地装配在虚拟实例周围。
在框B806处,方法800包括将对象的虚拟实例插入到第二图像中,该第二图像是使用真实世界车辆的真实世界传感器生成的。例如,可以将虚拟实例206插入到真实世界图像302中,该真实世界图像302是使用安装在真实世界车辆上的真实世界传感器捕获的。
在框B808处,方法800包括确定对象的虚拟实例在到第二图像中描绘的驾驶表面的阈值距离内。例如,检查可视化300中插入的虚拟实例206,以确定其是否满足驾驶表面上方的垂直距离阈值。因为虚拟实例206不满足垂直距离阈值,所以可视化300将不用于训练机器学习模型。然而,如图4所示及本文所述,插入的虚拟实例204满足垂直距离阈值约束和水平距离阈值约束两者。图5中的插入的虚拟实例208类似地满足如本文所述的这两个距离阈值约束。
在框B810处,方法800包括确定边界形状是否满足重叠约束。例如,评估围绕插入的虚拟实例204的边界形状402,以确定该边界形状是否满足与围绕驾驶表面上的其他对象的边界形状的重叠约束。如图4所示及本文所述,边界形状402与其他边界形状310、312和314重叠,并且满足重叠约束的条件,从而使得虚拟实例204被插入到真实世界图像302中以生成训练图像。图5中围绕虚拟实例208的边界形状502不与任何边界形状306、308、310、312和314重叠,因此也满足如本文所述的重叠约束。因为可视化500中的边界形状502和虚拟实例208满足距离阈值和重叠约束两者,所以用虚拟实例208增强的真实世界图像302可用于训练一个或更多个机器学习模型。
在框B812处,方法800包括使用训练图像和边界形状作为地面实况数据来训练神经网络。例如,在某些示例中,具有边界形状716和危险等级718的训练图像数据702和地面实况数据714可用于训练一个或更多个机器学习模型704,其中一个或更多个机器学习模型704可包括神经网络(例如CNN)。例如,可以将图6用作训练图像数据702,所述图6包括真实世界图像302和满足所有所需约束的虚拟实例208。类似地,可视化500可用作相应的地面实况数据714来评估一个或更多个机器学习模型。
参考图9,图9为根据本公开一些实施例的示出用于使用采用根据一组标准生成的模拟对象增强的真实世界图像来训练机器学习模型以检测图像中的对象的方法900的流程图。在框B902处,方法900包括随机抽样多个标准来确定标准集。例如,可以随机选择诸如对象类型、位置、光照、方位、姿势、环境条件和/或外观属性之类的标准。随后也可以随机选择这些标准中的每个标准的值。例如,可以随机选择标准集(诸如天气和对象类型),并且还可以分别随机选择其值(诸如雾和纸板箱)。
在框B904处,方法900包括从多个虚拟对象实例中选择对象的虚拟实例。例如,对象的一组虚拟实例可以由基于游戏的引擎生成,其中每个虚拟实例递增地具有给定标准的值。例如,图2A包括虚拟实例204、206和208,所述虚拟实例具有相同的对象类型,但是每个虚拟实例在虚拟环境中具有不同的位置。从多个虚拟实例中,可以选择匹配(或紧密匹配)随机抽样的标准的那些虚拟实例,以插入到真实世界图像中。在一些实施例中,可以部分地基于真实世界图像中存在的条件来选择虚拟实例。
在框B906处,方法900包括生成与对象的虚拟实例相对应的边界形状。例如,可以选择满足随机抽样的标准的虚拟实例206,以用于增强真实世界图像302。可以基于分割掩码214来生成与虚拟实例206相对应的边界形状304。生成边界形状304以捕获表示虚拟实例206的所有像素,并且可以紧密地或松散地围绕虚拟实例206装配所有像素。类似地,虚拟实例204和208分别具有边界形状402和502。
在框B908处,方法900包括将对象的虚拟实例插入图像中。例如,将虚拟实例204、206和208插入到如图3-5中所示并且在本文中描述的真实世界图像302中。
在框B910处,方法900包括确定对象的虚拟实例在到第二图像中描绘的驾驶表面的阈值距离内。例如,评估插入的虚拟实例204、206和208,以确定每个虚拟实例是否满足垂直距离阈值约束和水平距离阈值约束。如图3所示及本文所述,虚拟实例206(及其边界形状304)不满足垂直距离阈值。如图4和图5所示及本文所述,虚拟实例204和208(及其边界形状402和502)满足垂直距离阈值约束和水平距离阈值约束两者。
在框B912处,方法900包括确定边界形状是否满足重叠约束。例如,评估每个虚拟实例的边界形状,以确定给定的边界形状是否满足重叠约束。如图5所示及本文所述,虚拟实例208满足重叠约束,因为边界形状502不与真实世界图像302中的其他对象的边界形状306、308、310、312和314重叠。然而,虚拟实例208和边界形状502是满足距离阈值和重叠约束两者的唯一示例。
在框B914处,方法900包括使用训练图像和边界形状作为地面实况数据来训练神经网络。例如,使用包括边界形状502的可视化500和训练图像600来训练神经网络,所述训练图像600包括采用虚拟实例208增强的真实世界图像302。例如,在一些示例中,具有边界形状716和危险等级718的训练图像数据702和地面实况数据714可用于训练机器学习模型704,其中机器学习模型704可包括神经网络(例如CNN)。
示例自主车辆
图10A为根据本公开一些实施例的示例自主车辆1000的图示。自主车辆1000(可替代地,在本文称为“车辆1000”)可以包括但不限于乘用车,例如汽车、卡车、公共汽车、急救车、穿梭车、电动或机动自行车、摩托车、消防车、警车、救护车、船、工程车辆、水下航行器、无人机和/或容纳一个或更多个乘客的另一种类型的车辆(例如,无人的和/或可容纳一名或多名乘客的)。自主车辆通常按照美国运输部的一个部门——国家公路交通安全管理局(NHTSA)以及汽车工程师协会(SAE)“Taxonomy and Definitions for Terms Related toDriving Automation Systems for On-Road Motor Vehicles”(2018年6月10日发布的标准No.J3016-201806,2016年9月30日发布的标准No.J3016-201609,以及该标准的先前和未来的版本)定义的自动化级别进行描述。车辆1000可能够实现符合自主驾驶级别的3级-5级中的一个或更多个的功能。例如,取决于实施例,车辆1000可能够实现条件自动化(3级)、高自动化(4级)和/或全自动化(5级)。
车辆1000可以包括诸如底盘、车身、车轮(例如2个、4个、6个、8个、18个等)、轮胎、车轴之类的部件以及车辆的其他部件。车辆1000可以包括推进系统1050,例如内燃机、混合动力发电厂、全电动发动机和/或另一种推进系统类型。推进系统1050可以连接到可以包括变速器的车辆1000的传动系以便实现车辆1000的推进。可以响应于接收到来自油门/加速器1052的信号而控制推进系统1050。
可以包括方向盘的转向(steering)系统1054可以用来在推进系统1050操作时(例如在车辆运动时)使车辆1000转向(例如沿着希望的路径或路线)。转向系统1054可以接收来自转向致动器1056的信号。对于全自动(5级)功能而言,方向盘可以是可选的。
制动传感器系统1046可以用来响应于接收到来自制动致动器1048和/或制动传感器的信号而操作车辆制动器。
可以包括一个或更多个片上系统(SoC)1004(图10C)和/或一个或更多个GPU的一个或更多个控制器1036可以向车辆1000的一个或更多个部件和/或系统提供(例如表示命令的)信号。例如,一个或更多个控制器可以发送经由一个或更多个制动致动器1048操作车辆制动器、经由一个或更多个转向致动器1056操作转向系统1054、经由一个或更多个油门/加速器1052操作推进系统1050的信号。一个或更多个控制器1036可以包括一个或更多个板载(例如集成)计算设备(例如超级计算机),所述计算设备处理传感器信号并且输出操作命令(例如表示命令的信号),以实现自动驾驶和/或辅助人类驾驶员驾驶车辆1000。一个或更多个控制器1036可以包括用于自主驾驶功能的第一控制器1036、用于功能性安全功能的第二控制器1036、用于人工智能功能(例如计算机视觉)的第三控制器1036、用于信息娱乐功能的第四控制器1036、用于紧急情况下的冗余的第五控制器1036和/或其他控制器。在一些示例中,单个控制器1036可以处理上述功能中的两个或更多,两个或更多控制器1036可以处理单个功能,和/或其任意组合。在一些实施例中,响应于在具有高危险等级且不可避免的驾驶表面上的检测到的对象,控制器1036可发送信号以使用制动致动器1048来致动车辆制动器。
一个或更多个控制器1036可以响应于接收自一个或更多个传感器的传感器数据(例如传感器输入),提供用于控制车辆1000的一个或更多个部件和/或系统的信号。传感器数据可以接收自例如且不限于全球导航卫星系统传感器1058(例如全球定位系统传感器)、RADAR传感器1060、超声传感器1062、LIDAR传感器1064、惯性测量单元(IMU)传感器1066(例如加速度计、陀螺仪、磁罗盘、磁力计等)、麦克风1096、立体相机1068、广角相机1070(例如鱼眼相机)、红外相机1072、环绕相机1074(例如360度相机)、远程和/或中程相机1098、速度传感器1044(例如用于测量车辆1000的速率)、振动传感器1042、转向传感器1040、制动传感器(例如作为制动传感器系统1046的部分)和/或其他传感器类型。
控制器1036中的一个或更多个可以接收来自车辆1000的仪表板1032的输入(例如由输入数据表示),并且经由人机接口(HMI)显示器1034、听觉信号器、扬声器和/或经由车辆1000的其他部件提供输出(例如输出数据、显示数据等表示的)。这些输出可以包括诸如车辆速度、速率、时间、地图数据(例如图10C的HD地图1022)、位置数据(例如,车辆1000例如在地图上的位置)、方向、其他车辆的位置(例如占用网格)之类的信息,如控制器1036所感知的关于对象和对象状态的信息等等。例如,HMI显示器1034可以显示关于一个或更多个对象(例如街道指示牌、警示牌、交通灯变化等)的存在性的信息和/或关于车辆已经做出、正在做出或者将会做出的驾驶机动的信息(例如现在变道、两英里后离开34B,等等)。(一个或更多个)控制器1036还可以从机器学习模型接收输出,所述输出是关于响应于在驾驶表面上检测到的对象而实现的动作(例如,绕过对象或在对象周围操纵或完全停止)的输出。
车辆1000进一步包括网络接口1024,其可以使用一个或更多个无线天线1026和/或调制解调器通过一个或更多个网络通信。例如,网络接口1024可能够通过LTE、WCDMA、UMTS、GSM、CDMA2000等通信。一个或更多个无线天线1026也可以使用诸如蓝牙、蓝牙LE、Z波、ZigBee等等之类的一个或更多个局域网和/或诸如LoRaWAN、SigFox等等之类的一个或更多个低功率广域网(LPWAN)实现环境中的对象(例如车辆、移动设备等等)之间的通信。
图10B为根据本公开一些实施例的用于图10A的示例自主车辆1000的相机位置和视场的示例。相机和各自的视场是一个示例实施例,并不意图是限制性的。例如,可以包括附加的和/或可替换的相机,和/或这些相机可以位于车辆1000上的不同位置。
用于相机的相机类型可以包括但不限于可以适于与车辆1000的部件和/或系统一起使用的数字相机。所述相机可以在汽车安全完整性级别(ASIL)B下和/或在另一个ASIL下操作。相机类型可以具有任何图像捕获率,例如60帧每秒(fps)、120fps、240fps等等,这取决于实施例。相机可能够使用滚动快门、全局快门、另一种类型的快门或者其组合。在一些示例中,滤色器阵列可以包括红白白白(RCCC)滤色器阵列、红白白蓝(RCCB)滤色器阵列、红蓝绿白(RBGC)滤色器阵列、Foveon X3滤色器阵列、拜耳传感器(RGGB)滤色器阵列、单色传感器滤色器阵列和/或另一种类型的滤色器阵列。在一些实施例中,诸如具有RCCC、RCCB和/或RBGC滤色器阵列的相机之类的清晰像素相机可以用在提高光敏感度的努力中。
在一些示例中,所述相机中的一个或更多个可以用来执行高级驾驶员辅助系统(ADAS)功能(例如作为冗余或故障安全设计的部分)。例如,可以安装多功能单目相机以提供包括车道偏离警告、交通指示牌辅助和智能前照灯控制在内的功能。所述相机中的一个或更多个(例如全部相机)可以同时记录和提供图像数据(例如视频)。
所述相机中的一个或更多个可以安装在诸如定制设计的(3-D打印的)组件之类的安装组件中,以便切断可能干扰相机的图像数据捕获能力的杂散光和来自汽车内的反射(例如挡风玻璃镜中反射的来自仪表板的反射)。关于翼镜安装组件,翼镜组件可以是定制3-D打印的,使得相机安装板匹配翼镜的形状。在一些示例中,一个或更多个相机可以集成到翼镜中。对于侧视相机而言,一个或更多个相机也可以集成到驾驶室每个拐角的四根柱子内。
具有包括车辆1000前面的环境部分的视场的相机(例如前置相机)可以用于环视,以帮助识别前向路径和障碍,以及在一个或更多个控制器1036和/或控制SoC的帮助下辅助提供对于生成占用网格和/或确定优选车辆路径至关重要的信息。前置相机可以用来执行许多与LIDAR相同的ADAS功能,包括紧急制动、行人检测和碰撞避免。前置相机也可以用于ADAS功能和系统,包括车道偏离警告(“LDW”)、自主巡航控制(“ACC”),和/或诸如交通指示牌识别之类的其他功能。
各种各样的相机可以用于前置配置中,包括例如包括CMOS(互补金属氧化物半导体)彩色成像仪在内的单目相机平台。另一个示例可以是广角相机1070,其可以用来感知从周边进入视野的对象(例如行人、十字路口交通或者自行车)。尽管图10B中图示出仅仅一个广角相机,但是在车辆1000上可以存在任意数量的广角相机1070。此外,远程相机1098(例如长视立体相机对)可以用于基于深度的对象检测,尤其是用于尚未针对其训练神经网络的对象。远程相机1098也可以用于对象检测和分类以及基本的对象跟踪。
一个或更多个立体相机1068也可以包括在前置配置中。立体相机1068可以包括集成控制单元,该单元包括可扩展处理单元,其可以提供在单个芯片上具有集成的CAN或以太网接口的多核微处理器和可编程逻辑(FPGA)。这样的单元可以用来生成车辆环境的3-D地图,包括针对图像中的所有点的距离估计。可替代的立体相机1068可以包括紧凑型立体视觉传感器,其可以包括两个相机镜头(左右各一个)以及可以测量从车辆到目标对象的距离并且使用生成的信息(例如元数据)激活自主紧急制动和车道偏离警告功能的图像处理芯片。除了本文所描述的那些之外或者可替代地,可以使用其他类型的立体相机1068。
具有包括车辆1000的侧面的环境部分的视场的相机(例如侧视相机)可以用于环视,提供用来创建和更新占用网格以及生成侧撞击碰撞警告的信息。例如,环绕相机1074(例如如图10B中所示的四个环绕相机1074)可以置于车辆1000上。环绕相机1074可以包括广角相机1070、鱼眼相机、360度相机和/或类似物。四个示例,四个鱼眼相机可以置于车辆的前面、后面和侧面。在一种可替代的布置中,车辆可以使用三个环绕相机1074(例如左边、右边和后面),并且可以利用一个或更多个其他相机(例如前向相机)作为第四环视相机。
具有包括车辆1000的后面的环境部分的视场的相机(例如后视相机)可以用于辅助停车、环视、后面碰撞警告以及创建和更新占用网格。可以使用各种各样的相机,包括但不限于也适合作为如本文所描述的前置相机(例如远程和/或中程相机1098、立体相机1068、红外相机1072等等)的相机。
图10C为根据本公开一些实施例的用于图10A的示例自主车辆1000的示例系统架构的框图。应当理解,这种布置和本文描述的其他布置仅仅作为示例而被阐述。除了所示的那些之外或者代替它们的是,可以使用其他的布置和元素(例如机器、接口、功能、顺序、功能分组等等),并且一些元素可以完全省略。进一步,许多本文描述的元素是功能实体,其可以实现为分立的或分布式部件或者结合其他部件实现,以及以任何适当的组合和位置实现。本文描述为由实体执行的各个功能可以通过硬件、固件和/或软件实现。例如,各个功能可以通过处理器执行存储在内存中的指令而实现。
图10C中车辆1000的部件、特征和系统中的每一个被图示为经由总线1002连接。总线1002可以包括控制器区域网络(CAN)数据接口(可替代地,本文称为“CAN总线”)。CAN可以是车辆1000内部的网络,用来辅助控制车辆1000的各种特征和功能,例如制动器、加速、制动、转向、挡风玻璃雨刷等等的驱动。CAN总线可以被配置为具有数十或者甚至数百个节点,每个节点具有其自己的唯一标识符(例如CAN ID)。可以读取CAN总线以找到方向盘角度、地速、每分钟发动机转速(RPM)、按钮位置和/或其他车辆状态指示符。CAN总线可以是ASIL B兼容的。
尽管这里将总线1002描述为CAN总线,但是这并不意图是限制性的。例如,除了CAN总线之外或者可替代地,可以使用FlexRay和/或以太网。此外,尽管用单条线来表示总线1002,但是这并不意图是限制性的。例如,可以存在任意数量的总线1002,其可以包括一条或更多条CAN总线、一条或更多条FlexRay总线、一条或更多条以太网总线和/或一条或更多条使用不同协议的其他类型的总线。在一些示例中,两条或更多总线1002可以用来执行不同的功能,和/或可以用于冗余。例如,第一总线1002可以用于碰撞避免功能,并且第二总线1002可以用于驱动控制。在任何示例中,每条总线1002可以与车辆1000的任何部件通信,并且两条或更多总线1002可以与相同的部件通信。在一些示例中,车辆内的每个SoC 1004、每个控制器1036和/或每个计算机可以有权访问相同的输入数据(例如来自车辆1000的传感器的输入),并且可以连接到诸如CAN总线之类的公共总线。
车辆1000可以包括一个或更多个控制器1036,例如本文关于图10A所描述的那些控制器。控制器1036可以用于各种各样的功能。控制器1036可以耦合到车辆1000的任何其他不同的部件和系统,并且可以用于车辆1000的控制、车辆1000的人工智能、用于车辆1000的信息娱乐和/或类似物。如本文所述,(一个或更多个)控制器1036可以确定对车辆1000位置的调整,以避免或克服在驾驶表面上检测到的对象。
车辆1000可以包括一个或更多个片上系统(SoC)1004。SoC 1004可以包括CPU1006、GPU 1008、处理器1010、高速缓存1012、加速器1014、数据存储1016和/或未图示出的其他部件和特征。在各种各样的平台和系统中,SoC 1004可以用来控制车辆1000。例如,一个或更多个SoC 1004可以在系统(例如车辆1000的系统)中与HD地图1022结合,所述HD地图可以经由网络接口1024从一个或更多个服务器(例如图10D的一个或更多个服务器1078)获得地图刷新和/或更新。
CPU 1006可以包括CPU簇或者CPU复合体(可替代地,本文称为“CCPLEX”)。CPU1006可以包括多个核和/或L2高速缓存。例如,在一些实施例中,CPU 1006在一致性多处理器配置中可以包括八个核。在一些实施例中,CPU 1006可以包括四个双核簇,其中每个簇具有专用的L2高速缓存(例如2MB L2高速缓存)。CPU 1006(例如CCPLEX)可以被配置为支持同时簇操作,使得CPU 1006的簇的任意组合能够在任何给定时间是活动的。
CPU 1006可以实现包括以下特征中的一个或更多个的功率管理能力:各硬件块在空闲时可以自动进行时钟门控以节省动态功率;由于WFI/WFE指令的执行,每个核时钟可以在该核不主动地执行指令时进行门控;每个核可以独立地进行功率门控;当所有核都进行时钟门控或者功率门控时,可以独立地对每个核簇进行时钟门控;和/或当所有核都进行功率门控时,可以独立地对每个核簇进行功率门控。CPU 1006可以进一步实现用于管理功率状态的增强算法,其中指定允许的功率状态和期望的唤醒时间,并且硬件/微代码为所述核、簇和CCPLEX确定要进入的最佳的功率状态。处理核可以在软件中支持简化的功率状态进入序列,该工作被卸载到微代码。
GPU 1008可以包括集成的GPU(可替代地,本文称为“iGPU”)。GPU 1008可以是可编程的,并且对于并行工作负载而言是高效的。在一些示例中,GPU 1008可以使用增强张量指令集。GPU 1008可以包括一个或更多个流式微处理器,其中每个流式微处理器可以包括L1高速缓存(例如具有至少96KB存储能力的L1高速缓存),并且这些流式微处理器中的两个或更多可以共享L2高速缓存(例如具有512KB存储能力的L2高速缓存)。在一些实施例中,GPU1008可以包括至少八个流式微处理器。GPU 1008可以使用计算应用编程接口(API)。此外,GPU 1008可以使用一个或更多个并行计算平台和/或编程模型(例如NVIDIA的CUDA)。
在汽车和嵌入式使用的情况下,可以对GPU 1008进行功率优化以实现最佳性能。例如,可以在鳍式场效应晶体管(FinFET)上制造GPU 1008。然而,这并不意图是限制性的,并且GPU 1008可以使用其他半导体制造工艺来制造。每个流式微处理器可以合并划分成多个块的若干混合精度处理核。例如且非限制性地,可以将64个PF32核和32个PF64核划分成四个处理块。在这样的示例中,每个处理块可以分配16个FP32核、8个FP64核、16个INT32核、用于深层学习矩阵算术的两个混合精度NVIDIA张量核、L0指令高速缓存、线程束(warp)调度器、分派单元和/或64KB寄存器文件。此外,流式微处理器可以包括独立的并行整数和浮点数据路径,以利用计算和寻址计算的混合提供工作负载的高效执行。流式微处理器可以包括独立线程调度能力,以允许实现并行线程之间的更细粒度的同步和协作。流式微处理器可以包括组合的L1数据高速缓存和共享内存单元,以便在简化编程的同时提高性能。
GPU 1008可以包括在一些示例中提供大约900GB/s的峰值内存带宽的高带宽内存(HBM)和/或16GB HBM2内存子系统。在一些示例中,除了HBM内存之外或者可替代地,可以使用同步图形随机存取存储器(SGRAM),例如第五代图形双倍数据速率同步随机存取存储器(GDDR5)。
GPU 1008可以包括统一内存技术,其包括访问计数器以允许内存页面更精确地迁移到最频繁地访问它们的处理器,从而提高处理器之间共享的内存范围的效率。在一些示例中,地址转换服务(ATS)支持可以用来允许GPU 1008直接访问CPU 1006页表。在这样的示例中,当GPU 1008内存管理单元(MMU)经历遗漏时,可以将地址转换请求传输至CPU 1006。作为响应,CPU 1006可以在其页表中寻找用于地址的虚拟-物理映射,并且将转换传输回GPU 1008。这样,统一内存技术可以允许单个统一虚拟地址空间用于CPU 1006和GPU 1008二者的内存,从而简化了GPU 1008编程和将应用程序移植(port)到GPU 1008。
此外,GPU 1008可以包括访问计数器,其可以跟踪GPU 1008访问其他处理器的内存的频率。访问计数器可以帮助确保内存页面移至最频繁地访问这些页面的处理器的物理内存。
SoC 1004可以包括任意数量的高速缓存1012,包括本文描述的那些高速缓存。例如,高速缓存1012可以包括CPU 1006和GPU 1008二者可用的L3高速缓存(例如,其连接到CPU 1006和GPU 1008二者)。高速缓存1012可以包括回写高速缓存,其可以例如通过使用高速缓存一致性协议(例如MEI、MESI、MSI等)跟踪行的状态。取决于实施例,L3高速缓存可以包括4MB或者更多,但是也可以使用更小的高速缓存大小。
所述SoC 1004可以包括算术逻辑单元(ALU),所述算术逻辑单元可以在针对车辆1000各种任务或操作中的任何一个执行处理时被利用,诸如处理DNN。另外,所述SoC 1004可以包括浮点单元(FPU)或其他数学协处理器或数字协处理器类型,所述浮点单元用于在系统内执行数学运算。例如,所述SoC 1004可包括一个或更多个FPU,所述一个或更多个FPU集成为CPU 1006和/或GPU 1008内的执行单元。
SoC 1004可以包括一个或更多个加速器1014(例如硬件加速器、软件加速器或者其组合)。例如,SoC 1004可以包括硬件加速簇,其可以包括优化的硬件加速器和/或大型片上内存。该大型片上内存(例如4MB SRAM)可以使得硬件加速簇能够加速神经网络和其他计算。硬件加速簇可以用来补充GPU 1008,并且卸载GPU 1008的一些任务(例如释放GPU 1008的更多周期以用于执行其他任务)。作为一个示例,加速器1014可以用于足够稳定以易于控制加速的有针对性的工作负载(例如感知、卷积神经网络(CNN)等等)。当在本文中使用时,术语“CNN”可以包括所有类型的CNN,包括基于区域的或者区域卷积神经网络(RCNN)和快速RCNN(例如用于对象检测)。
加速器1014(例如硬件加速簇)可以包括深度学习加速器(DLA)。DLA可以包括可以被配置成为深度学习应用和推理提供额外的每秒10万亿次操作的一个或更多个张量处理单元(TPU)。TPU可以是被配置为执行图像处理功能(例如用于CNN、RCNN等)且针对执行图像处理功能而优化的加速器。DLA可以进一步针对特定的一组神经网络类型和浮点运算以及推理进行优化。DLA的设计可以比通用GPU提供每毫米更高的性能,并且远远超过CPU的性能。TPU可以执行若干功能,包括单实例卷积函数,支持例如用于特征和权重二者的INT8、INT16和FP16数据类型,以及后处理器功能。
DLA可以在处理的或者未处理的数据上针对各种各样的功能中的任何功能快速且高效地执行神经网络,尤其是CNN,例如且不限于:用于使用来自相机传感器的数据进行对象识别和检测的CNN;用于使用来自相机传感器的数据进行距离估计的CNN;用于使用来自麦克风的数据进行应急车辆检测和识别与检测的CNN;用于使用来自相机传感器的数据进行面部识别和车主识别的CNN;和/或用于安全和/或安全相关事件的CNN。所述DLA还可以执行神经网络来确定检测到的道路碎片的危险等级以及神经网络所有输出的置信度百分比。
DLA可以执行GPU 1008的任何功能,并且通过使用推理加速器,例如,设计者可以使DLA或GPU 1008针对任何功能。例如,设计者可以将CNN的处理和浮点运算聚焦在DLA上,并且将其他功能留给GPU 1008和/或其他加速器1014。
加速器1014(例如硬件加速簇)可以包括可编程视觉加速器(PVA),其在本文中可以可替代地称为计算机视觉加速器。PVA可以被设计和配置为加速用于高级驾驶员辅助系统(ADAS)、自动驾驶和/或增强现实(AR)和/或虚拟现实(VR)应用的计算机视觉算法。PVA可以提供性能与灵活性之间的平衡。例如,每个PVA可以包括例如且不限于任意数量的精简指令集计算机(RISC)核、直接内存访问(DMA)和/或任意数量的向量处理器。
RISC核可以与图像传感器(例如本文描述的任何相机的图像传感器)、图像信号处理器和/或类似物交互。这些RISC核中的每一个可以包括任意数量的内存。取决于实施例,RISC核可以使用若干协议中的任何协议。在一些示例中,RISC核可以执行实时操作系统(RTOS)。RISC核可以使用一个或更多个集成电路设备、专用集成电路(ASIC)和/或存储设备实现。例如,RISC核可以包括指令高速缓存和/或紧密耦合的RAM。
DMA可以使得PVA的部件能够独立于CPU 1006访问系统内存。DMA可以支持用来向PVA提供优化的任意数量的特征,包括但不限于支持多维寻址和/或循环寻址。在一些示例中,DMA可以支持高达六个或更多维度的寻址,其可以包括块宽度、块高度、块深度、水平块步进、竖直块步进和/或深度步进。
向量处理器可以是可编程处理器,其可以被设计为高效且灵活地执行用于计算机视觉算法的编程并且提供信号处理能力。在一些示例中,PVA可以包括PVA核和两个向量处理子系统分区。PVA核可以包括处理器子系统、一个或更多个DMA引擎(例如两个DMA引擎)和/或其他外围设备。向量处理子系统可以作为PVA的主处理引擎而操作,并且可以包括向量处理单元(VPU)、指令高速缓存和/或向量内存(例如VMEM)。VPU核可以包括数字信号处理器,诸如例如单指令多数据(SIMD)、超长指令字(VLIW)数字信号处理器。SIMD和VLIW的组合可以增强吞吐量和速率。
向量处理器中的每一个可以包括指令高速缓存并且可以耦合到专用内存。结果,在一些示例中,向量处理器中的每一个可以被配置为独立于其他向量处理器执行。在其他示例中,包括在特定PVA中的向量处理器可以被配置为采用数据并行化。例如,在一些实施例中,包括在单个PVA中的多个向量处理器可以执行相同的计算机视觉算法,但是在图像的不同区域上执行。在其他示例中,包括在特定PVA中的向量处理器可以在相同的图像上同时执行不同的计算机视觉算法,或者甚至在序列图像或者图像的部分上执行不同的算法。除其他的以外,任意数量的PVA可以包括在硬件加速簇中,并且任意数量的向量处理器可以包括在这些PVA中的每一个中。此外,PVA可以包括附加的纠错码(ECC)内存,以增强总体系统安全性。
加速器1014(例如硬件加速簇)可以包括片上计算机视觉网络和SRAM,以提供用于加速器1014的高带宽、低延迟SRAM。在一些示例中,片上内存可以包括由例如且不限于八个现场可配置的内存块组成的至少4MB SRAM,其可以由PVA和DLA二者访问。每对内存块可以包括高级外围总线(APB)接口、配置电路系统、控制器和复用器。可以使用任何类型的内存。PVA和DLA可以经由向PVA和DLA提供高速内存访问的主干(backbone)访问内存。主干可以包括(例如使用APB)将PVA和DLA互连到内存的片上计算机视觉网络。
片上计算机视觉网络可以包括在传输任何控制信号/地址/数据之前确定PVA和DLA二者都提供就绪且有效的信号的接口。这样的接口可以提供用于传输控制信号/地址/数据的单独相位和单独信道,以及用于连续数据传输的突发式通信。这种类型的接口可以符合ISO 26262或者IEC 61508标准,但是也可以使用其他标准和协议。
在一些示例中,SoC 1004可以包括例如在2018年8月10日提交的美国专利申请No.16/101,232中描述的实时光线追踪硬件加速器。该实时光线追踪硬件加速器可以用来快速且高效地确定(例如世界模型内的)对象的位置和范围,以便生成实时可视化仿真,以用于RADAR信号解释、用于声音传播合成和/或分析、用于SONAR系统仿真、用于一般波传播仿真、用于为了定位和/或其他功能的目的与LIDAR数据相比较和/或用于其他用途。在一些实施例中,一个或更多个树遍历单元(TTU)可以用于执行一个或更多个与光线追踪有关的操作。
加速器1014(例如硬件加速器簇)具有广泛的自动驾驶用途。PVA可以是可编程视觉加速器,其可以用于ADAS和自主车辆中的关键处理阶段。PVA的能力是需要可预测处理、低功率和低延迟的算法域的良好匹配。换言之,PVA在半密集或者密集规则计算上,甚至在需要具有低延迟和低功率的可预测运行时间的小数据集上都表现良好。因此,在用于自主车辆的平台的背景下,PVA被设计为运行经典计算机视觉算法,因为它们在对象检测和整数数学运算方面很有效。
例如,根据该技术的一个实施例,PVA用来执行计算机立体视觉。在一些示例中,可以使用基于半全局匹配的算法,但是这并不意图是限制性的。许多用于3-5级自动驾驶的应用都需要即时运动估计/立体匹配(例如来自运动的结构、行人识别、车道检测等等)。PVA可以在来自两个单目相机的输入上执行计算机立体视觉功能。
在一些示例中,PVA可以用来执行密集的光流。根据过程原始RADAR数据(例如使用4D快速傅立叶变换)以提供经处理的RADAR。在其他示例中,PVA用于飞行时间深度处理,其例如通过处理原始飞行时间数据以提供经处理的飞行时间数据。
DLA可以用来运行任何类型的网络以增强控制和驾驶安全性,包括例如输出用于每个对象检测的置信度度量的神经网络。这样的置信度值可以解释为概率,或者解释为提供每个检测与其他检测相比的相对“权重”。该置信度值使得系统能够做出关于哪些检测应当被认为是真阳性检测而不是假阳性检测的进一步决策。例如,系统可以为置信度设置阈值,并且仅仅将超过阈值的检测看作真阳性检测。在自动紧急制动(AEB)系统中,假阳性检测会使得车辆自动地执行紧急制动,这显然是不希望的。因此,只有最确信的检测才应当被认为是AEB的触发因素。DLA可以运行用于回归置信度值的神经网络。该神经网络可以将至少一些参数子集作为其输入,例如边界框维度,(例如从另一个子系统)获得的地平面估计,与车辆1000取向、距离相关的惯性测量单元(IMU)传感器1066输出,从神经网络和/或其他传感器(例如LIDAR传感器1064或RADAR传感器1060)获得的对象的3D位置估计等。
SoC 1004可以包括一个或更多个数据存储1016(例如内存)。数据存储1016可以是SoC 1004的片上内存,其可以存储要在GPU和/或DLA上执行的神经网络。在一些示例中,为了冗余和安全,数据存储1016可以容量足够大以存储神经网络的多个实例。数据存储1012可以包括L2或L3高速缓存1012。对数据存储1016的引用可以包括对与如本文所描述的PVA、DLA和/或其他加速器1014关联的内存的引用。
SoC 1004可以包括一个或更多个处理器1010(例如嵌入式处理器)。处理器1010可以包括启动和功率管理处理器,其可以是用于处理启动功率和管理功能以及有关安全实施的专用处理器和子系统。启动和功率管理处理器可以是SoC 1004启动序列的一部分,并且可以提供运行时间功率管理服务。启动功率和管理处理器可以提供时钟和电压编程、辅助系统低功率状态转换、SoC 1004热和温度传感器管理和/或SoC 1004功率状态管理。每个温度传感器可以实现为环形振荡器,其输出频率与温度成比例,并且SoC 1004可以使用环形振荡器检测CPU 1006、GPU 1008和/或加速器1014的温度。如果确定温度超过阈值,那么启动和功率管理处理器可以进入温度故障例程并且将SoC 1004置于较低功率状态和/或将车辆1000置于司机安全停车模式(例如使车辆1000安全停车)。
处理器1010可以进一步包括可以用作音频处理引擎的一组嵌入式处理器。音频处理引擎可以是一种音频子系统,其允许实现对于通过多个接口的多声道音频的完全硬件支持以及一系列广泛而灵活的音频I/O接口。在一些示例中,音频处理引擎是具有带有专用RAM的数字信号处理器的专用处理器核。
处理器1010可以进一步包括始终在处理器上的引擎,其可以提供必要的硬件特征以支持低功率传感器管理和唤醒用例。该始终在处理器上的引擎可以包括处理器核、紧密耦合的RAM、支持外围设备(例如定时器和中断控制器)、各种I/O控制器外围设备和路由逻辑。
处理器1010可以进一步包括安全簇引擎,其包括处理汽车应用的安全管理的专用处理器子系统。安全簇引擎可以包括两个或更多处理器核、紧密耦合的RAM、支持外围设备(例如定时器、中断控制器等等)和/或路由逻辑。在安全模式下,所述两个或更多核可以操作于锁步模式下,并且用作具有检测它们的操作之间的任何差异的比较逻辑的单核。
处理器1010可以进一步包括实时相机引擎,其可以包括用于处理实时相机管理的专用处理器子系统。
处理器1010可以进一步包括高动态范围信号处理器,其可以包括图像信号处理器,该图像信号处理器是一种硬件引擎,该硬件引擎是相机处理管线的部分。
处理器1010可以包括可以是(例如微处理器上实现的)处理块的视频图像复合器,其实现视频回放应用程序产生用于播放器窗口的最终图像所需的视频后处理功能。视频图像复合器可以对广角相机1070、环绕相机1074和/或对驾驶室内监控相机传感器执行镜头畸变校正。驾驶室内监控相机传感器优选地由运行在高级SoC的另一个实例上的神经网络监控,被配置为识别驾驶室内事件并且相对应地做出响应。驾驶室内系统可以执行唇读,以激活移动电话服务并拨打电话、口述电子邮件、改变车辆目的地、激活或改变车辆的信息娱乐系统和设置或者提供语音激活的网上冲浪。某些功能仅在车辆操作于自动模式下时对于驾驶员可用,并且在其他情况下被禁用。
视频图像复合器可以包括用于空间和时间降噪的增强时间降噪。例如,在视频中出现运动的情况下,降噪适当地对空间信息加权,降低邻近帧提供的信息的权重。在图像或者图像的部分不包括运动的情况下,视频图像复合器执行的时间降噪可以使用来自先前的图像的信息以降低当前图像中的噪声。
视频图像复合器也可以被配置为对输入立体镜头帧执行立体校正。当操作系统桌面正在使用并且GPU 1008无需连续地渲染(render)新的表面时,视频图像复合器可以进一步用于用户接口组成。甚至在GPU 1008上电并且激活,进行3D渲染时,视频图像复合器可以用来减轻GPU 1008的负担以提高性能和响应能力。
SoC 1004可以进一步包括用于从相机接收视频和输入的移动行业处理器接口(MIPI)相机串行接口、高速接口和/或可以用于相机和有关像素输入功能的视频输入块。SoC 1004可以进一步包括可以由软件控制并且可以用于接收未提交到特定角色的I/O信号的输入/输出控制器。
SoC 1004可以进一步包括大范围的外围设备接口,以使能与外围设备、音频编解码器、功率管理和/或其他设备通信。SoC 1004可以用来处理来自(通过千兆多媒体串行链路和以太网连接的)相机、传感器(例如可以通过以太网连接的LIDAR传感器1064、RADAR传感器1060等等)的数据,来自总线1002的数据(例如车辆1000的速率、方向盘位置等等),来自(通过以太网或CAN总线连接的)GNSS传感器1058的数据。SoC 1004可以进一步包括专用高性能大容量存储控制器,其可以包括它们自己的DMA引擎,并且其可以用来从日常数据管理任务中释放CPU 1006。
SoC 1004可以是具有灵活架构的端到端平台,该架构跨越自动化3-5级,从而提供利用和高效使用计算机视觉和ADAS技术以实现多样性和冗余、连同深度学习工具一起提供用于灵活可靠驾驶软件堆栈的平台的综合功能安全架构。SoC 1004可以比常规的系统更快、更可靠,甚至更加能量高效和空间高效。例如,当与CPU 1006、GPU 1008和数据存储1016结合时,加速器1014可以提供用于3-5级自主车辆的快速高效平台。
因此该技术提供了不能通过常规系统实现的能力和功能。例如,计算机视觉算法可以在CPU上执行,这些CPU可以使用诸如C编程语言之类的高级编程语言配置为跨各种各样的视觉数据执行各种各样的处理算法。然而,CPU常常不能满足许多计算机视觉应用的性能要求,诸如与例如执行时间和功耗有关的那些要求。特别地,许多CPU不能实时地执行复杂的对象检测算法,这是车载ADAS应用的要求和实用3-5级自主车辆的要求。
与常规系统形成对比的是,通过提供CPU复合体、GPU复合体和硬件加速簇,本文描述的技术允许同时和/或顺序地执行多个神经网络,并且将结果组合在一起以实现3-5级自动驾驶功能。例如,在DLA或dGPU(例如GPU 1020)上执行的CNN可以包括文本和单词识别,允许超级计算机读取和理解交通指示牌,包括尚未针对其特别地训练神经网络的指示牌。DLA可以进一步包括能够识别、解释和提供对指示牌的语义理解,并且将该语义理解传递给运行在CPU复合体上的路径规划模块的神经网络。
作为另一个示例,如3、4或5级驾驶所需的,多个神经网络可以同时运行。例如,由“注意:闪烁的灯指示结冰条件”组成的警告指示牌连同电灯可以由若干神经网络独立地或者共同地进行解释。指示牌本身可以由部署的第一神经网络(例如经过训练的神经网络)识别为交通指示牌,文本“闪烁的灯指示结冰条件”可以由部署的第二神经网络解释,该部署的第二神经网络告知车辆的路径规划软件(优选地在CPU复合体上执行)当检测到闪烁的灯时,存在结冰条件。闪烁的灯可以通过在多个帧上操作部署的第三神经网络而识别,该神经网络告知车辆的路径规划软件闪烁的灯的存在(或不存在)。所有三个神经网络可以例如在DLA内和/或在GPU 1008上同时运行。
在一些示例中,用于面部识别和车主识别的CNN可以使用来自相机传感器的数据识别车辆1000的授权的驾驶员和/或车主的存在。始终在传感器上的处理引擎可以用来在车主接近驾驶员车门时解锁车辆并且打开灯,并且在安全模式下,在车主离开车辆时禁用车辆。按照这种方式,SoC 1004提供了防范盗窃和/或劫车的安全性。
在另一个示例中,用于应急车辆检测和识别的CNN可以使用来自麦克风1096的数据来检测并且识别应急车辆警报(siren)。与使用通用分类器检测警报并且手动地提取特征的常规系统形成对比的是,SoC 1004使用CNN以对环境和城市声音分类以及对视觉数据分类。在优选的实施例中,运行在DLA上的CNN被训练为识别应急车辆的相对关闭速率(例如通过使用多普勒效应)。CNN也可以被训练为识别如GNSS传感器1058所识别的特定于车辆在其中操作的局部区域的应急车辆。因此,例如,当在欧洲操作时,CNN将寻求检测欧洲警报,并且当在美国时,CNN将寻求识别仅仅北美的警报。一旦检测到应急车辆,在超声传感器1062的辅助下,控制程序可以用来执行应急车辆安全例程,使车辆放慢速度,开到路边,停下车辆,和/或使车辆空转,直到应急车辆通过。
车辆可以包括可以经由高速互连(例如PCIe)耦合到SoC 1004的CPU 1018(例如分立的CPU或dCPU)。CPU 1018可以包括例如X86处理器。CPU 1018可以用来执行各种各样的功能中的任何功能,包括例如仲裁ADAS传感器与SoC 1004之间潜在地不一致的结果,和/或监控控制器1036和/或信息娱乐SoC 1030的状态和健康状况。
车辆1000可以包括可以经由高速互连(例如NVIDIA的NVLINK)耦合到SoC 1004的GPU 1020(例如分立的GPU或dGPU)。GPU 1020可以例如通过执行冗余的和/或不同的神经网络而提供附加的人工智能功能,并且可以用来基于来自车辆1000的传感器的输入(例如传感器数据)来训练和/或更新神经网络。
车辆1000可以进一步包括网络接口1024,该网络接口可以包括一个或更多个无线天线1026(例如用于不同通信协议的一个或更多个无线天线,例如蜂窝天线、蓝牙天线等等)。网络接口1024可以用来使能通过因特网与云(例如与服务器1078和/或其他网络设备)、与其他车辆和/或与计算设备(例如乘客的客户端设备)的无线连接。为了与其他车辆通信,可以在这两辆车之间建立直接链接,和/或可以建立间接链接(例如跨网络以及通过因特网)。直接链接可以使用车对车通信链路提供。车对车通信链路可以向车辆1000提供关于接近车辆1000的车辆(例如车辆1000前面、侧面和/或后面的车辆)的信息。该功能可以是车辆1000的协作自适应巡航控制功能的部分。
网络接口1024可以包括提供调制和解调功能并且使得控制器1036能够通过无线网络通信的SoC。网络接口1024可以包括用于从基带到射频的上转换以及从射频到基带的下转换的射频前端。频率转换可以通过公知的过程执行,和/或可以使用超外差(super-heterodyne)过程执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过LTE、WCDMA、UMTS、GSM、CDMA2000、蓝牙、蓝牙LE、Wi-Fi、Z波、ZigBee、LoRaWAN和/或其他无线协议通信的无线功能。
车辆1000可以进一步包括可包括片外(例如SoC 1004外)存储装置的数据存储1028。数据存储1028可以包括一个或更多个存储元件,包括RAM、SRAM、DRAM、VRAM、闪存、硬盘和/或可以存储至少一个比特的数据的其他部件和/或设备。
车辆1000可以进一步包括GNSS传感器1058。GNSS传感器1058(例如GPS、辅助GPS传感器、差分GPS(DGPS)传感器等)用于辅助映射、感知、占用网格生成和/或路径规划功能。可以使用任意数量的GNSS传感器1058,包括例如且不限于使用带有以太网到串行(RS-232)网桥的USB连接器的GPS。
车辆1000可以进一步包括RADAR传感器1060。RADAR传感器1060可以甚至在黑暗和/或恶劣天气条件下也由车辆1000用于远程车辆检测。RADAR功能安全级别可以是ASILB。RADAR传感器1060可以使用CAN和/或总线1002(例如以传输RADAR传感器1060生成的数据)以用于控制以及访问对象跟踪数据,在一些示例中接入以太网以访问原始数据。可以使用各种各样的RADAR传感器类型。例如且非限制性地,RADAR传感器1060可以适合前面、后面和侧面RADAR使用。在一些示例中,使用脉冲多普勒RADAR传感器。
RADAR传感器1060可以包括不同的配置,例如具有窄视场的远程、具有宽视场的短程、短程侧覆盖等等。在一些示例中,远程RADAR可以用于自适应巡航控制功能。远程RADAR系统可以提供通过两个或更多独立扫描实现的广阔视场(例如250m范围内)。RADAR传感器1060可以帮助区分静态对象和运动对象,并且可以由ADAS系统用于紧急制动辅助和前方碰撞警告。远程RADAR传感器可以包括具有多根(例如六根或更多)固定RADAR天线以及高速CAN和FlexRay接口的单站多模RADAR。在具有六根天线的示例中,中央四根天线可以创建聚焦的波束图案,其被设计为在更高速率下以来自邻近车道的最小交通干扰记录车辆1000的周围环境。其他两根天线可以扩展视场,使得快速地检测进入或离开车辆1000的车道的车辆成为可能。
作为一个示例,中程RADAR系统可以包括高达1060m(前面)或80m(后面)的范围以及高达42度(前面)或1050度(后面)的视场。短程RADAR系统可以包括但不限于被设计为安装在后保险杠两端的RADAR传感器。当安装在后保险杠两端时,这样的RADAR传感器系统可以创建持续地监控后方和车辆旁边的盲点的两个波束。
短程RADAR系统可以在ADAS系统中用于盲点检测和/或变道辅助。
车辆1000可以进一步包括超声传感器1062。可以置于车辆1000的前面、后面和/或侧面的超声传感器1062可以用于停车辅助和/或创建和更新占用网格。可以使用各种各样的超声传感器1062,并且不同的超声传感器1062可以用于不同的检测范围(例如2.5m、4m)。超声传感器1062可以操作于功能安全级别的ASIL B。
车辆1000可以包括LIDAR传感器1064。LIDAR传感器1064可以用于对象和行人检测、紧急制动、碰撞避免和/或其他功能。LIDAR传感器1064可以为功能安全级别的ASIL B。在一些示例中,车辆1000可以包括可以使用以太网(例如以将数据提供给千兆以太网交换机)的多个LIDAR传感器1064(例如两个、四个、六个等等)。
在一些示例中,LIDAR传感器1064可能够对360度视场提供对象列表及其距离。商业上可用的LIDAR传感器1064可以具有例如近似1000m的广告范围,精度为2cm-3cm,支持1000Mbps以太网连接。在一些示例中,可以使用一个或更多个非突出的LIDAR传感器1064。在这样的示例中,LIDAR传感器1064可以实现为可以嵌入到车辆1000的前面、后面、侧面和/或拐角的小设备。在这样的示例中,LIDAR传感器1064可以甚至对于低反射率对象提供高达120度水平的和35度竖直的视场,具有200m的范围。前面安装的LIDAR传感器1064可以被配置用于45度与135度之间的水平视场。
在一些示例中,也可以使用诸如3D闪光LIDAR之类的LIDAR技术。3D闪光LIDAR使用激光的闪光作为发射源,以照亮高达约200m的车辆周围环境。闪光LIDAR单元包括接受器,该接受器将激光脉冲传输时间和反射光记录在每个像素上,其进而与从车辆到对象的范围相对应。闪光LIDAR可以允许利用每个激光闪光生成周围环境的高度精确且无失真的图像。在一些示例中,可以部署四个闪光LIDAR传感器,车辆1000的每一侧一个。可用的3D闪光LIDAR系统包括没有风扇以外的运动部件(moving part)的固态3D凝视阵列LIDAR相机(例如非扫描LIDAR设备)。闪光LIDAR设备可以使用每帧5纳秒I类(眼睛安全)激光脉冲,并且可以以3D范围点云和共同寄存的强度数据的形式捕获反射的激光。通过使用闪光LIDAR,并且因为闪光LIDAR是没有运动部件的固态设备,LIDAR传感器1064可以不太容易受到运动模糊、振动和/或震动的影响。
该车辆可以进一步包括IMU传感器1066。在一些示例中,IMU传感器1066可以位于车辆1000的后轴的中心。IMU传感器1066可以包括例如且不限于加速度计、磁力计、陀螺仪、磁罗盘和/或其他传感器类型。在一些示例中,例如在六轴应用中,IMU传感器1066可以包括加速度计和陀螺仪,而在九轴应用中,IMU传感器1066可以包括加速度计、陀螺仪和磁力计。
在一些实施例中,IMU传感器1066可以实现为微型高性能GPS辅助惯性导航系统(GPS/INS),其结合微机电系统(MEMS)惯性传感器、高灵敏度GPS接收器和高级卡尔曼滤波算法以提供位置、速度和姿态的估计。这样,在一些示例中,IMU传感器1066可以使得车辆1000能够在无需来自磁传感器的输入的情况下通过直接观察从GPS到IMU传感器1066的速度变化并且将其相关来估计方向(heading)。在一些示例中,IMU传感器1066和GNSS传感器1058可以结合到单个集成单元中。
该车辆可以包括置于车辆1000中和/或车辆1000周围的麦克风1096。除别的以外,麦克风1096可以用于应急车辆检测和识别。
该车辆可以进一步包括任意数量的相机类型,包括立体相机1068、广角相机1070、红外相机1072、环绕相机1074、远程和/或中程相机1098和/或其他相机类型。这些相机可以用来捕获车辆1000整个外围周围的图像数据。使用的相机类型取决于实施例和车辆1000的要求,并且相机类型的任意组合可以用来提供车辆1000周围的必要覆盖。此外,相机的数量可以根据实施例而不同。例如,该车辆可以包括六个相机、七个相机、十个相机、十二个相机和/或另一数量的相机。作为一个示例且非限制性地,这些相机可以支持千兆多媒体串行链路(GMSL)和/或千兆以太网。所述相机中的每一个在本文关于图10A和图10B更详细地进行了描述。
车辆1000可以进一步包括振动传感器1042。振动传感器1042可以测量车辆的诸如车轴之类的部件的振动。例如,振动的变化可以指示道路表面的变化。在另一个示例中,当使用两个或更多振动传感器1042时,振动之间的差异可以用来确定道路表面的摩擦或滑移(例如当动力驱动轴与自由旋转轴之间存在振动差异时)。
车辆1000可以包括ADAS系统1038。在一些示例中,ADAS系统1038可以包括SoC。ADAS系统1038可以包括自动/自适应/自动巡航控制(ACC)、协作自适应巡航控制(CACC)、前方撞车警告(FCW)、自动紧急制动(AEB)、车道偏离警告(LDW)、车道保持辅助(LKA)、盲点警告(BSW)、后方穿越交通警告(RCTW)、碰撞警告系统(CWS)、车道居中(LC)和/或其他特征和功能。
ACC系统可以使用RADAR传感器1060、LIDAR传感器1064和/或相机。ACC系统可以包括纵向ACC和/或横向ACC。纵向ACC监控并控制到紧接在车辆1000前方的车辆的距离,并且自动地调节车速以维持离前方车辆的安全距离。横向ACC执行距离保持,并且在必要时建议车辆1000改变车道。横向ACC与诸如LCA和CWS之类的其他ADAS应用程序有关。
CACC使用来自其他车辆的信息,该信息可以经由网络接口1024和/或无线天线1026经由无线链路或者通过网络连接(例如通过因特网)间接地从其他车辆接收。直接链接可以由车对车(V2V)通信链路提供,而间接链接可以是基础设施到车辆(I2V)的通信链路。通常,V2V通信概念提供关于紧接在前的车辆(例如紧接在车辆1000前方且与其处于相同车道的车辆)的信息,而I2V通信概念提供关于前方更远处的交通的信息。CACC系统可以包括I2V和V2V信息源中的任一个或者二者。给定车辆1000前方车辆的信息,CACC可以更加可靠,并且它有可能提高交通流的畅通性且降低道路拥堵。
FCW系统被设计为提醒驾驶员注意危险,使得驾驶员可以采取纠正措施。FCW系统使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器1060,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。FCW系统可以提供例如声音、视觉警告、振动和/或快速制动脉冲形式的警告。
AEB系统检测即将发生的与另一车辆或其他对象的前方碰撞,并且可以在驾驶员在指定的时间或距离参数内没有采取纠正措施的情况下自动地应用制动器。AEB系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器1060。当AEB系统检测到危险时,它典型地首先提醒(alert)驾驶员采取纠正措施以避免碰撞,并且如果驾驶员没有采取纠正措施,那么AEB系统可以自动地应用制动器以努力防止或者至少减轻预测的碰撞的影响。AEB系统可以包括诸如动态制动支持和/或碰撞迫近制动之类的技术。
LDW系统提供了诸如方向盘或座位振动之类的视觉、听觉和/或触觉警告,以在车辆1000穿过车道标记时提醒驾驶员。当驾驶员指示有意偏离车道时,通过激活转弯信号,不激活LDW系统。LDW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前侧朝向相机,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
LKA系统是LDW系统的变型。如果车辆1000开始离开车道,那么LKA系统提供纠正车辆1000的转向输入或制动。
BSW系统检测并向驾驶员警告汽车盲点中的车辆。BSW系统可以提供视觉、听觉和/或触觉警报以指示合并或改变车道是不安全的。系统可以在驾驶员使用转弯信号时提供附加的警告。BSW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的后侧朝向相机和/或RADAR传感器1060,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
RCTW系统可以在车辆1000倒车时在后置相机范围之外检测到对象时提供视觉、听觉和/或触觉通知。一些RCTW系统包括AEB以确保应用车辆制动器以避免撞车。RCTW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的一个或更多个后置RADAR传感器1060,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
常规的ADAS系统可能易于出现假阳性结果,这可能会让驾驶员烦恼并分散注意力,但是典型地不是灾难性的,因为ADAS系统提醒驾驶员并且允许驾驶员决定安全条件是否真正存在并且相对应地采取行动。然而,在自主车辆1000中,在冲突结果的情况下,车辆1000本身必须决定是否注意(heed)来自主计算机或者辅助计算机(例如第一控制器1036或第二控制器1036)的结果。例如,在一些实施例中,ADAS系统1038可以是用于向备用计算机合理性模块提供感知信息的备用和/或辅助计算机。备用计算机合理性监视器可以在硬件部件上运行冗余多样的软件,以检测感知和动态驾驶任务中的故障。来自ADAS系统1038的输出可以提供给监督MCU。如果来自主计算机和辅助计算机的输出冲突,那么监督MCU必须确定如何协调该冲突以确保安全操作。
在一些示例中,主计算机可以被配置为向监督MCU提供置信度评分,指示主计算机对所选结果的置信度。如果置信度评分超过阈值,那么监督MCU可以遵循主计算机的方向,而不管辅助计算机是否提供冲突或不一致的结果。在置信度评分不满足阈值的情况下并且在主计算机和辅助计算机指示不同的结果(例如冲突)的情况下,监督MCU可以在这些计算机之间进行仲裁以确定适当的结果。
监督MCU可以被配置为运行神经网络,所述神经网络被训练并且被配置为至少部分地基于来自主计算机和辅助计算机的输出,确定辅助计算机提供假警报的条件。因此,监督MCU中的神经网络可以了解何时可以信任辅助计算机的输出以及何时不能。例如,当辅助计算机为基于RADAR的FCW系统时,监督MCU中的神经网络可以了解FCW系统何时正在识别事实上不是危险的金属对象,例如触发警报的排水栅格或井盖。类似地,当辅助计算机是基于相机的LDW系统时,监督MCU中的神经网络可以学习在骑车者或行人在场并且车道偏离实际上是最安全的策略时无视该LDW。在包括运行在监督MCU上的神经网络的实施例中,监督MCU可以包括适合于利用关联的内存运行神经网络的DLA或GPU中的至少一个。在优选的实施例中,监督MCU可以包括SoC 1004的部件和/或作为SoC 1004的部件而被包括。
在其他示例中,ADAS系统1038可以包括使用传统计算机视觉规则执行ADAS功能的辅助计算机。这样,辅助计算机可以使用经典的计算机视觉规则(如果-那么),并且在监督MCU中存在神经网络可以提高可靠性、安全性和性能。例如,多样化的实现方式和有意的非完全相同(non-identity)使得整个系统更加容错,对于软件(或者软件-硬件接口)功能造成的故障而言尤其如此。例如,如果在主计算机上运行的软件中存在软件漏洞或错误并且运行在辅助计算机上的非完全相同的软件代码提供相同的总体结果,那么监督MCU可以更加确信总体结果是正确的,并且主计算机上的软件或硬件中的漏洞不造成实质性的错误。
在一些示例中,ADAS系统1038的输出可以馈送至主计算机的感知块和/或主计算机的动态驾驶任务块。例如,如果ADAS系统1038由于对象紧接在前的原因而指示前方碰撞警告,那么感知块可以在识别对象时使用该信息。在其他示例中,辅助计算机可以具有它自己的神经网络,其被训练并且因此如本文所描述的降低假阳性的风险。
车辆1000可以进一步包括信息娱乐SoC 1030(例如车载信息娱乐系统(IVI))。尽管被图示和描述为SoC,但是信息娱乐系统可以不是SoC,并且可以包括两个或更多分立的部件。信息娱乐SoC 1030可以包括可以用来向车辆1000提供音频(例如音乐、个人数字助理、导航指令、新闻、广播等等)、视频(例如TV、电影、流媒体等等)、电话(例如免提呼叫)、网络连接(例如LTE、WiFi等等)和/或信息服务(例如导航系统,后停车援助,无线电数据系统,诸如燃油水平、覆盖的总距离、制动燃油水平、油位、车门开/关、空气过滤器信息之类的车辆有关信息,等等)的硬件和软件的组合。例如,信息娱乐SoC 1030可以包括收音机、盘播放器、导航系统、视频播放器、USB和蓝牙连接、车载电脑、车载娱乐、Wi-Fi、方向盘音频控件、免提语音控件、平视显示器(HUD)、HMI显示器1034、远程信息处理设备、控制面板(例如用于控制各种部件、特征和/或系统,和/或与其交互)和/或其他部件。信息娱乐SoC 1030可以进一步用来向车辆的用户提供信息(例如视觉的和/或听觉的),例如来自ADAS系统1038的信息,诸如规划的车辆机动、轨迹、周围环境信息(例如交叉路口信息、车辆信息、道路信息等等)之类的自动驾驶信息,和/或其他信息。
信息娱乐SoC 1030可以包括GPU功能。信息娱乐SoC 1030可以通过总线1002(例如CAN总线、以太网等)与车辆1000的其他设备、系统和/或部件通信。在一些示例中,信息娱乐SoC 1030可以耦合至监督MCU,使得在主控制器1036(例如车辆1000的主和/或备用计算机)出现故障的情况下,信息娱乐系统的GPU可以执行一些自驾驶功能。在这样的示例中,信息娱乐SoC 1030可以如本文所描述的将车辆1000置于司机安全停车模式。
车辆1000可以进一步包括仪表板1032(例如数字仪表板、电子仪表板、数字仪表面板等等)。仪表板1032可以包括控制器和/或超级计算机(例如分立的控制器或超级计算机)。仪表板1032可以包括一套仪器,例如车速表、燃油水平、油压、转速表、里程表、转弯指示器、换档位置指示器、安全带警告灯、停车制动警告灯、发动机故障灯、安全气囊(SRS)系统信息、照明控件、安全系统控件、导航信息等等。在一些示例中,信息可以被显示和/或在信息娱乐SoC 1030和仪表板1032之间共享。换言之,仪表板1032可以作为信息娱乐SoC1030的部分而被包括,或者反之亦然。
图10D为根据本公开一些实施例的基于云的服务器与图10A的示例自主车辆1000之间的通信的系统示意图。系统1076可以包括服务器1078、网络1090以及包括车辆1000在内的车辆。服务器1078可以包括多个GPU 1084(A)-1084(H)(这里统称为GPU 1084)、PCIe交换机1082(A)-1082(H)(这里统称为PCIe交换机1082)和/或CPU 1080(A)-1080(B)(这里统称为CPU 1080)。GPU 1084、CPU 1080和PCIe交换机可以与诸如例如且不限于NVIDIA开发的NVLink接口1088之类的高速互连和/或PCIe连接1086互连。在一些示例中,GPU 1084经由NVLink和/或NVSwitch SoC连接,并且GPU 1084和PCIe交换机1082经由PCIe互连连接。尽管图示出八个GPU 1084、两个CPU 1080和两个PCIe交换机,但是这并不意图是限制性的。取决于实施例,服务器1078中的每一个可以包括任意数量的GPU 1084、CPU 1080和/或PCIe交换机。例如,服务器1078中的每一个可以包括八个、十六个、三十二个和/或更多GPU 1084。
服务器1078可以通过网络1090并且从车辆接收图像数据,该图像数据表示示出诸如最近开始的道路工程之类的意外或改变的道路状况的图像。服务器1078可以通过网络1090并且向车辆传输神经网络1092、更新的神经网络1092和/或地图信息1094,包括关于交通和道路状况的信息。对地图信息1094的更新可以包括对于HD地图1022的更新,例如关于建筑工地、坑洼、弯道、洪水或其他障碍物的信息。在一些示例中,神经网络1092、更新的神经网络1092和/或地图信息1094可以已从新的训练和/或从环境中的任意数量的车辆接收的数据中表示和/或至少部分地基于数据中心处执行的训练(例如使用服务器1078和/或其他服务器)的经验产生。
服务器1078可以用来至少部分地基于训练数据训练机器学习模型(例如神经网络)。训练数据可以由车辆生成,和/或可以在仿真中生成(例如使用游戏引擎)。在一些示例中,训练数据被标记(例如在神经网络受益于有监督学习的情况下)和/或经历其他预处理,而在其他示例中,训练数据不被标记和/或预处理(例如在神经网络无需有监督学习的情况下)。可以根据一类或更多类机器学习技术来执行训练,包括但不限于以下类:监督训练、半监督训练、非监督训练、自我学习、强化学习、联合学习、迁移学习、功能学习(包括主成分和聚类分析)、多线性子空间学习、流形学习、表示学习(包括备用字典学习)、基于规则的机器学习、异常检测及其任何变体或组合。一旦机器学习模型被训练,机器学习模型可以由车辆使用(例如通过网络1090传输至车辆),和/或机器学习模型可以由服务器1078用来远程地监控车辆。
在一些示例中,服务器1078可以接收来自车辆的数据,并且将该数据应用到最新的实时神经网络以用于实时智能推理。服务器1078可以包括由GPU 1084供电的深度学习超级计算机和/或专用AI计算机,例如NVIDIA开发的DGX和DGX站机器。然而,在一些示例中,服务器1078可以包括仅使用CPU供电的数据中心的深度学习基础设施。
服务器1078的深度学习基础设施可能够快速实时推理,并且可以使用该能力来评估并验证车辆1000中的处理器、软件和/或关联硬件的健康状况。例如,深度学习基础设施可以接收来自车辆1000的定期更新,例如图像序列和/或车辆1000已经定位的位于该图像序列中的对象(例如经由计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可以运行它自己的神经网络以识别对象并且将它们与车辆1000识别的对象相比较,如果结果不匹配并且该基础设施得出车辆1000中的AI发生故障的结论,那么服务器1078可以向车辆1000传输信号,指示车辆1000的故障保护计算机进行控制,通知乘客,并且完成安全停车操作。
为了推理,服务器1078可以包括GPU 1084和一个或更多个可编程推理加速器(例如NVIDIA的TensorRT)。GPU供电的服务器和推理加速的组合可以使得实时响应成为可能。在其他示例中,例如在性能不那么重要的情况下,CPU、FPGA和其他处理器供电的服务器可以用于推理。
示例计算设备
图11为适合用于实现本公开一些实施例的示例计算设备1100的框图。计算设备1100可以包括直接或间接耦合下列设备的互连系统1102:存储器1104,一个或更多个中央处理单元(CPU)1106,一个或更多个图形处理单元(GPU)1108,通信接口1110,输入/输出(I/O)端口1112,输入/输出组件1114,电源1116,以及一个或更多个呈现组件1118(例如显示器),和一个或更多个逻辑单元1120。在至少一个实施例中,一个或更多个计算设备1100可以包括一个或更多个虚拟机(VM)和/或其任何组件,所述组件可以包括虚拟组件(例如,虚拟硬件组件)。对于非限制性示例,一个或更多个GPU 1108可以包括一个或更多个vGPU、一个或更多个CPU 1106(可以包括一个或更多个vCPU),和/或一个或更多个逻辑单元1120(可以包括一个或更多个虚拟逻辑单元)。因此,计算设备1100可以包括离散组件(例如,专用于计算设备1100的完整GPU)、虚拟组件(例如,GPU专用于计算设备1100的一部分)或其组合。
尽管图11的各个框被示为经由具有线路的互连系统1102连接,但是这并不意图是限制性的,并且仅仅为了清楚起见。例如,在一些实施例中,诸如显示设备之类的呈现组件1118可以被认为是I/O组件1114(例如如果显示器为触摸屏)。作为另一个示例,CPU 1106和/或GPU 1108可以包括内存(例如,存储器1104可以表示除了GPU 1108、CPU 1106和/或其他组件的内存以外的存储设备)。换言之,图11的计算设备仅仅是说明性的。在诸如“工作站”、“服务器”、“膝上型电脑”、“台式机”、“平板电脑”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实系统”和/或其他设备或系统类型之类的类别之间不进行区分,因为所有这些都被考虑在图11的计算设备的范围内。
互连系统1102可以表示一条或更多条链接或总线,例如地址总线、数据总线、控制总线或者其组合。互连系统1102可以包括一种或更多种链接或总线类型,例如行业标准架构(ISA)总线、扩展行业标准架构(EISA)总线、视频电子标准协会(VESA)总线、外围组件互连(PCI)总线、外围组件互连快速(PCIe)总线,和/或另一种类型的链接或总线。在一些实施例中,组件之间存在直接连接。作为示例,CPU 1106可以直接连接至存储器1104。此外,CPU1106可以直接连接至GPU 1108。在组件之间存在直接或点对点连接的情况下,互连系统1102可以包括一个PCIe链接来执行链接。在这些示例中,PCI总线不必被包括在计算设备1100中。
存储器1104可以包括各种各样的计算机可读介质中的任何介质。计算机可读介质可以是可以由计算设备1100访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。举例而言且非限制性地,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质可以包括易失性和非易失性介质和/或可移除和不可移除介质,其以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型之类的信息的任何方法或技术实现。例如,存储器1104可以存储计算机可读指令(例如其表示程序和/或程序元素,例如操作系统)。计算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或者其他存储技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备,或者可以用来存储期望的信息且可以由计算设备1100访问的任何其他介质。当在本文使用时,计算机存储介质并不包括信号本身。
计算机存储介质可以在诸如载波之类的调制数据信号或其他传输机制中包含计算机可读指令、数据结构、程序模块和/或其他数据类型,并且包括任何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或改变。举例而言且非限制性地,计算机存储介质可以包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、RF、红外和其他无线介质之类的无线介质。任何以上所述的组合也应当包含在计算机可读介质的范围内。
CPU 1106可以被配置为执行至少一些计算机可读指令以便控制计算设备1100的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。CPU 1106中的每一个可以包括能够同时处理大量软件线程的一个或更多个核(例如一个、两个、四个、八个、二十八个、七十二个等等)。CPU 1106可以包括任何类型的处理器,并且可以包括不同类型的处理器,这取决于实现的计算设备1100的类型(例如具有用于移动设备的较少核的处理器以及具有用于服务器的更多核的处理器)。例如,取决于计算设备1100的类型,处理器可以是使用精简指令集计算(RISC)实现的先进RISC机器(ARM)处理器或者使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或者诸如数学协处理器之类的补充协处理器之外,计算设备1100还可以包括一个或更多个CPU 1106。
除了一个或更多个CPU 1106之外,一个或更多个GPU 1108可以被配置为执行计算机可读指令中的至少一些,以控制计算设备1100的一个或更多个组件,以执行以下一个或更多个本文所述的方法和/或过程。一个或更多个GPU 1108可以是集成GPU(例如,具有一个或更多个CPU 1106和/或一个或更多个GPU 1108可以是离散GPU。在一个实施例中,一个或更多个GPU 1108可以是一个或更多个CPU 1106的协处理器。计算设备1100可以使用一个或更多个GPU 1108来渲染图形(例如3D图形)。例如,GPU 1108可以用于GPU上的通用计算(GPGPU)。所述GPU 1108可以包括能够同时处理数百或数千个软件线程的数百或数千个核。GPU 1108可以响应于渲染命令(例如经由主机接口接收的来自CPU 1106的渲染命令)而生成用于输出图像的像素数据。GPU 1108可以包括诸如显示内存之类的用于存储像素数据的图形内存。显示内存可以作为存储器1104的部分而被包括。GPU 1108可以包括(例如经由链路)并行操作的两个或更多GPU或任何其他合适的数据,诸如GPGPU数据。所述链接可以直接连接GPU(例如,使用NVLINK),或者可以通过开关(例如,使用NVSwitch)来连接GPU。当组合在一起时,每个GPU 1108可以生成用于输出不同部分或者用于输出不同像素数据或GPGPU数据(例如,第一GPU用于第一图像,第二GPU用于第二图像)。每个GPU可以包括它自己的内存,或者可以与其他GPU共享内存。
除了一个或更多个CPU 1106和/或一个或更多个GPU 1108之外或作为替代,一个或更多个逻辑单元1120可以被配置为执行至少某些计算机可读指令,以控制计算设备1100的一个或更多个组件来执行本文所述的一种或多种方法和/或过程。在实施例中,一个或更多个CPU1106、一个或更多个GPU 1108和/或一个或更多个逻辑单元1120可以离散地或联合地执行方法,过程和/或其部分的任何组合。一个或更多个逻辑单元1120可以是一个或更多个CPU 1106、和/或一个或更多个GPU 1108的一部分和/或集成在其中和/或所述一个或更多个逻辑单元1120可以是离散的的组件,或以其他方式在一个或更多个CPU 1106和/或一个或更多个GPU1108外部。在实施例中,一个或更多个逻辑单元1120可以是一个或更多个CPU 1106和/或一个或更多个GPU 1108的一个或更多个的协处理器。
一个或更多个逻辑单元1120的示例包括和/或被配置为执行一个或更多个处理核心和/或其组件的功能,例如,张量核心(TC)、张量处理单元(TPU),像素可视核心(PVC)、视觉处理单元(VPU)、图形处理集群(GPC)、纹理处理集群(TPC)、流式多处理器(SM)、树遍历单元(TTU)、人工智能加速器(AIAs)、深度学习加速器(DLA)、算术逻辑单元(ALU)、专用集成电路(ASIC)、浮点单元(FPU)、输入/输出(I/O)元素、外围组件互连(PCI)或外围组件互连表示(PCIe)元素等。
通信接口1110可以包括一个或更多个接收器、发送器和/或收发器,其使得计算设备1100能够经由电子通信网络与其他计算设备通信,包括有线和/或无线通信。通信接口1110可以包括使能通过若干不同网络中的任何网络进行通信的组件和功能,所述网络例如无线网络(例如Wi-Fi、Z波、蓝牙、蓝牙LE、ZigBee等等)、有线网络(例如通过以太网通信或InfiniBand)、低功率广域网(例如LoRaWAN、SigFox等等)和/或因特网。
I/O端口1112可以使得计算设备1100能够逻辑地耦合到包括I/O组件1114、呈现组件1118和/或其他组件在内的其他设备,其中一些可以内置到(例如集成到)计算设备1100中。说明性I/O组件1114包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等等。I/O组件1114可以提供处理用户生成的空中手势、语音或其他生理输入的自然用户接口(NUI)。在一些实例中,输入可以传输至适当的网络元件以便进一步处理。NUI可以实现语音识别、手写笔识别、面部识别、生物特征识别、屏幕上和邻近屏幕的手势识别、空中手势、头部和眼睛跟踪以及与计算设备1100的显示器关联的触摸识别(如下文更详细地描述的)的任意组合。计算设备1100可以包括诸如立体相机系统之类的深度相机、红外相机系统、RGB相机系统、触摸屏技术以及这些的组合,以用于手势检测和识别。此外,计算设备1100可以包括使能运动检测的加速度计或陀螺仪(例如作为惯性测量单元(IMU)的部分)。在一些示例中,加速度计或陀螺仪的输出可以由计算设备1100用来渲染沉浸式增强现实或者虚拟现实。
电源1116可以包括硬接线电源、电池电源或者其组合。电源1116可以向计算设备1100供电以使得计算设备1100的组件能够操作。
呈现组件1118可以包括显示器(例如监视器、触摸屏、电视屏幕、平视显示器(HUD)、其他显示器类型或者其组合)、扬声器和/或其他呈现组件。呈现组件1118可以接收来自其他组件(例如GPU 1108、CPU 1106等等)的数据,并且输出该数据(例如作为图像、视频、声音等等)。
示例数据中心
图12示出了可以在本公开的至少一个实施例中使用的示例数据中心1200。所述数据中心1200可以包括数据中心基础设施层1210、框架层1220、软件层1230和/或应用层1240。
如图12所示,所述数据中心基础设施层1210可以包括资源协调器1212、分组的计算资源1214和节点计算资源(“节点C.R.”)1216(1)-1216(N),其中“N”代表任何完整的正整数。在至少一个实施例中,节点C.R.1216(1)-1216(N)可以包括但不限于任何数量的中央处理单元(“CPU”)或其他处理器(包括加速器、现场可编程门阵列(FPGA)、图形处理器,或图形处理单元(GPU)等),内存设备(例如动态只读内存),存储设备(例如固态硬盘或磁盘驱动器),网络输入/输出(“NW I/O”)设备,网络交换机,虚拟机(“VM”),电源模块和冷却模块等。在至少一些实施例中,节点C.R.1216(1)-1216(N)中的一个或更多个节点C.R.可以对应于具有一个或更多个上述计算资源的服务器。另外,在一些实施例中,节点C.R.1216(1)-1216(N)可以包括一个或更多个虚拟组件(诸如vGPU,vCPU等),和/或一个或更多个节点C.R.1216(1)-1216(N)可以对应于虚拟机(VM)。
在至少一个实施例中,分组的计算资源1214可以包括容纳在一个或更多个机架内的节点C.R.1216的单独分组(未示出),或者容纳在各个地理位置的数据中心内的许多机架(也未示出)。分组的计算资源1214内的节点C.R.1216的单独分组可以包括可以被配置或分配为支持一个或更多个工作负载的分组的计算、网络、内存或存储资源。在至少一个实施例中,可以将包括CPU、GPU或其他处理器的几个节点C.R.1216被分组在一个或更多个机架内,以提供计算资源来支持一个或更多个工作负载。一个或更多个机架还可以包括任何数量的电源模块、冷却模块和/或网络交换机,以任意组合。
资源协调器1222可以配置或以其他方式控制一个或更多个节点C.R.1216(1)-1216(N)和/或分组的计算资源1214。在至少一个实施例中,资源协调器1222可以包括用于所述数据中心1200的软件设计基础结构(“SDI”)管理实体。资源协调器1222可以包括硬件、软件或其某种组合。
在至少一个实施例中,如图12所示,框架层1220可以包括作业调度器1232、配置管理器1234、资源管理器1236和分布式文件系统1238。所述框架层1220可以包括支持软件层1230的软件1232和/或应用程序层1240的一个或更多个应用程序1242的框架。所述软件1232或应用程序1242可以分别包括基于Web的服务软件或应用程序,例如由Amazon WebServices,Google Cloud和Microsoft Azure提供的服务或应用程序。在至少一个实施例中,框架层1220可以是但不限于一种免费和开放源软件网络应用框架,例如可以利用分布式文件系统1238来进行大范围数据处理(例如“大数据”)的Apache SparkTM(以下称为“Spark”)。在至少一个实施例中,作业调度器1232可以包括Spark驱动器,以促进对数据中心1200的各个层所支持的工作负载进行调度。所述配置管理器1234可以能够配置不同的层,例如软件层1230和包括Spark和用于支持大规模数据处理的分布式文件系统1238的框架层1220。所述资源管理器1236能够管理映射到或分配用于支持分布式文件系统1238和作业调度器1232的集群或分组计算资源。在至少一个实施例中,集群或分组计算资源可以包括数据中心基础设施层1210上的分组的计算资源1214。所述资源管理器1036可以与资源协调器1212协调以管理这些映射的或分配的计算资源。
在至少一个实施例中,包括在软件层1230中的软件1232可以包括由节点C.R.1216(1)-1216(N)的至少一部分,分组计算资源1214和/或框架层1220的分布式文件系统1238使用的软件。一种或更多种类型的软件可以包括但不限于Internet网页搜索软件、电子邮件病毒扫描软件、数据库软件和流视频内容软件。
在至少一个实施例中,应用层1240中包括的一个或更多个应用程序1242可以包括由节点C.R.1216(1)-1216(N)的至少一部分、分组的计算资源1214和/或框架层1220的分布式文件系统1238使用的一种或更多种类型的应用程序。一种或更多种类型的应用程序可以包括但不限于任何数量的基因组学应用程序,认知计算和机器学习应用程序,包括训练或推理软件,机器学习框架软件(例如PyTorch、TensorFlow、Caffe等)和/或其他与一个或更多个实施例结合使用的机器学习应用程序。
在至少一个实施例中,配置管理器1234、资源管理器1236和资源协调器1212中的任何一个可以基于以任何技术上可行的方式获取的任何数量和类型的数据来实现任何数量和类型的自我修改动作。自我修改动作可以减轻数据中心1200的数据中心操作员做出可能不好的配置决定并且可以避免数据中心的未充分利用和/或执行差的部分。
所述数据中心1200可以包括工具、服务、软件或其他资源,以根据本文所述的一个或更多个实施例来训练一个或更多个机器学习模型或者使用一个或更多个机器学习模型来预测或推理信息。例如,可以通过使用上文关于所述数据中心1200描述的软件和/或计算资源,根据神经网络架构通过计算权重参数来训练(一个或更多个)机器学习模型。在至少一个实施例中,通过使用通过一种或更多种训练技术(诸如但不限于本文所述的技术)计算出的权重参数,可以使用上面与关于所述数据中心1200所描述的资源,使用对应于一个或更多个神经网络的经训练的或经开发的机器学习模型来推理或预测信息。诸如但不限于本文所述的内容
在至少一个实施例中,所述数据中心1200可以使用CPU、专用集成电路(ASIC)、GPU、FPGA和/或其他硬件(或与其相对应的虚拟计算资源),来使用上述资源来执行训练和/或推理。此外,上述的一个或更多个软件和/或硬件资源可以配置成一种服务,以允许用户训练或执行信息推理,例如图像识别、语音识别或其他人工智能服务。
网络环境示例
适用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备、服务器、网络附加存储(NAS),其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如,每个设备)可以在图11的(一个或更多个)计算设备1100的一个或更多个实例上实现,例如,每个设备可以包括(一个或更多个)计算设备1100的相似组件、特征和/或功能。另外,在实现后端设备(例如,服务器,NAS等)的情况下,所述后端设备可以被包括作为数据中心1200的一部分,在此参照图12更详细地描述所述示例。
网络环境的组件可以经由网络彼此通信,网络可以是有线的、无线的或两者兼有。该网络可以包括多个网络或网络的网络。举例来说,所述网络可以包括一个或更多个广域网(WAN)、一个或更多个局域网(LAN)、一个或更多个公共网络,例如Internet和/或公共交换电话网络(PSTN),和/或一个或更多个专用网络。在网络包括无线电信网络的情况下,诸如基站、通信塔、甚至接入点(以及其他组件)之类的组件可以提供无线连接。
兼容的网络环境可以包括一个或更多个对等网络环境(在这种情况下服务器可能不包括在网络环境中)和一个或更多个客户端服务器网络环境(在这种情况下一个或更多个服务器)可能包括在网络环境中。在对等网络环境中,本文针对服务器描述的功能可以在任意数量的客户端设备上实现。
在至少一个实施例中,网络环境可以包括一个或更多个基于云的网络环境、分布式计算环境、其组合等。基于云的网络环境可以包括在一个或更多个服务器上实现的框架层、作业调度器、资源管理器和分布式文件系统,所述服务器可以包括一个或更多个核心网络服务器和/或边缘服务器。框架层可以包括用于支持软件层的软件和/或应用程序层的一个或更多个应用程序的框架。所述软件或应用程序可分别包括基于web的服务软件或应用程序。在实施例中,一个或更多个客户端设备可以使用基于web的服务软件或应用程序(例如,通过经由一个或更多个应用程序编程接口(API)访问服务软件和/或应用程序)。框架层可以是但不限于一种自由和开源软件Web应用程序框架,例如可以使用分布式文件系统进行大规模数据处理(例如“大数据”)。
基于云的网络环境可提供云计算和/或云存储,所述云计算和/或云存储执行本文所述的计算和/或数据存储功能(或其一个或更多个部分)的任何组合。这些不同功能中的任何一个都可以从中央或核心服务器(例如,在一个或更多个数据中心,所述数据中心可以跨州、地区、国家、全球等分布)。如果到用户(例如,客户端设备)的连接相对靠近(一个或更多个)边缘服务器,则(一个或更多个)核心服务器可以向(一个或更多个)边缘服务器指定至少一部分所述功能。基于云的网络环境可以是私有的(例如,限于单个组织)、可以是公共的(例如,可用于许多组织),和/或其组合(例如,混合云环境)。
所述客户端设备可以包括本文描述的图11的(一个或更多个)示例性计算设备1100的至少一些组件、特征和功能。作为示例而非限制,客户端设备可以体现为个人计算机(PC)、膝上型计算机、移动设备、智能手机、平板计算机、智能手表、可穿戴计算机、个人数字助理(PDA)、MP3播放器、虚拟现实耳机、全球定位系统(GPS)或设备、视频播放器,摄像机、监控设备或系统、车辆、船只、飞行船舶、虚拟机、无人机、机器人、手持通信设备、医院设备、游戏设备或系统、娱乐系统、车辆计算机系统、嵌入式系统控制器、遥控器、设备、消费类电子设备、工作站、边缘设备,这些描绘的设备的任何组合,或任何其他合适的设备。
Claims (21)
1.一种处理器,包括:
处理电路,用于执行神经网络,所述神经网络至少部分地使用训练图像和与所述训练图像相对应的作为地面实况数据的边界形状来训练,所述训练图像和所述边界形状至少部分地通过以下步骤生成:
生成第一图像,所述第一图像包括从虚拟环境内的虚拟车辆的虚拟传感器的视角的模拟对象;
确定与所述模拟对象相对应的所述边界形状;
至少部分地通过以下步骤生成所述训练图像:
将所述模拟对象的表示插入到第二图像中,所述第二图像使用真实世界车辆的真实世界传感器生成;
确定与所述模拟对象的所述表示相对应的位置在到所述第二图像中描绘的驾驶表面的阈值距离内;以及
当所述边界形状与和所述第二图像相对应的地面实况数据进行比较时,确定所述边界形状满足重叠约束。
2.根据权利要求1所述的处理器,其中所述神经网络至少部分地通过以下步骤进一步训练:
在所述虚拟环境内填充所述模拟对象的多个表示,其中:
所述多个表示使用游戏引擎生成;以及
所述多个表示中的每个表示与不同位置、不同方位、不同外观属性、不同光照条件集、不同遮挡条件集或不同环境条件中的至少一个相对应。
3.根据权利要求1所述的处理器,其中所述边界形状至少部分地通过以下步骤进一步生成:
生成与所述模拟对象的所述第一图像相对应的分割掩码,
其中所述确定所述边界形状至少部分地基于所述分割掩码。
4.根据权利要求1所述的处理器,其中所述确定与所述模拟对象的所述表示相对应的位置在到所述驾驶表面的所述阈值距离内包括以下中的至少一个:
确定与所述模拟对象的所述表示相对应的所述位置在与所述驾驶表面的阈值垂直距离内;或者
确定与所述模拟对象的所述表示相对应的所述位置在所述驾驶表面的一个或更多个边界的阈值水平距离内。
5.根据权利要求1所述的处理器,其中所述神经网络使用零样本学习来训练。
6.根据权利要求1所述的处理器,其中所述确定所述边界形状满足所述重叠约束包括:确定所述边界形状内的第一像素不包括在从所述地面实况数据确定的第二像素内。
7.根据权利要求1所述的处理器,其中所述执行所述神经网络包括:
使用所述神经网络并且至少部分地基于第三图像来计算指示一个或更多个边界形状的数据,所述第三图像使用自主机器的传感器生成,所述一个或更多个边界形状与所述第三图像中描绘的一个或更多个对象相对应。
8.根据权利要求7所述的处理器,其中所述执行所述神经网络还包括:
使用所述神经网络并且至少部分地基于所述第三图像来计算指示所述对象的类别的数据。
9.根据权利要求1所述的处理器,其中所述将所述模拟对象的表示插入到第二图像中包括:
确定所述模拟对象的所述表示相对于所述虚拟传感器的姿态;以及
将所述模拟对象的所述表示以相对于所述真实世界传感器的姿态插入到所述第二图像中。
10.根据权利要求1所述的处理器,其中所述处理电路还用于至少部分地基于所述神经网络的一个或更多个输出来执行一个或更多个操作,所述神经网络的一个或更多个输出在所述执行所述神经网络期间生成。
11.一种方法,包括:
对多个标准进行抽样以确定标准集;
至少部分地基于所述标准集,从多个表示中选择模拟对象的表示;
生成与所述模拟对象的所述表示相对应的边界形状;
至少部分地通过以下步骤来生成训练图像:
使用所述模拟对象的所述表示来增强图像;
确定与所述模拟对象的所述表示相对应的位置在到所述图像中描绘的驾驶表面的阈值距离内;以及
当所述边界形状与和所述图像相对应的地面实况数据进行比较时,确定所述边界形状满足重叠约束;以及
使用所述训练图像和所述边界形状来训练神经网络。
12.根据权利要求11所述的方法,其中所述多个标准包括对象类型、对象位置、对象方位、遮挡条件、环境条件、外观属性或光照条件中的至少一个。
13.根据权利要求11所述的方法,其中所述生成所述边界形状包括:
生成与所述模拟对象的另一表示相对应的分割掩码,所述模拟对象的另一表示使用虚拟环境内的虚拟传感器捕获;以及
生成所述边界形状以包括与所述模拟对象的所述另一表示相对应的所述分割掩码的每个像素。
14.根据权利要求11所述的方法,其中所述多个表示使用游戏引擎并且至少部分地基于所述多个标准来生成。
15.根据权利要求11所述的方法,其中所述神经网络使用零样本学习来训练。
16.一种系统,包括:
一个或更多个处理单元;
一个或更多个存储器设备,其存储指令,所述指令在使用一个或更多个处理器执行时,使所述一个或更多个处理器执行以下操作包括:
生成第一图像,所述第一图像包括从虚拟环境内的虚拟车辆的虚拟传感器的视角的模拟对象的表示;
确定与所述模拟对象相对应的边界形状;
至少部分地通过以下步骤生成训练图像:
将所述模拟对象的所述表示插入到第二图像中,所述第二图像使用真实世界车辆的真实世界传感器生成;
确定所述第二图像中的与所述模拟对象的所述表示相对应的位置在到所述第二图像中描绘的驾驶表面的阈值距离内;以及
当所述边界形状与和所述第二图像相对应的地面实况数据进行比较时,确定所述边界形状满足重叠约束;以及
使用所述训练图像和所述边界形状来训练神经网络。
17.根据权利要求16所述的系统,所述操作还包括:
在所述虚拟环境内填充所述模拟对象的多个表示,其中:
所述多个表示使用游戏引擎生成;以及
所述多个表示中的每个表示与不同位置、不同方位、不同外观属性、不同光照条件、不同遮挡条件或不同环境条件中的至少一个相对应。
18.根据权利要求16所述的系统,所述操作还包括:
生成分割掩码,所述分割掩码与所述第一图像中描绘的所述模拟对象的所述表示相对应,
其中所述确定所述边界形状至少部分地基于所述分割掩码。
19.根据权利要求16所述的系统,其中所述确定所述模拟对象的所述表示在到所述驾驶表面的所述阈值距离内包括以下中的至少一个:
确定与所述模拟对象的所述表示相对应的位置在从所述驾驶表面的阈值垂直距离内;或者
确定与所述模拟对象的所述表示相对应的位置在所述驾驶表面的一个或更多个边界的阈值水平距离内。
20.根据权利要求16所述的系统,其中所述确定所述边界形状满足所述重叠约束包括:确定所述边界形状内的第一像素不包括在从所述地面实况数据确定的第二像素内。
21.根据权利要求16所述的系统,其中所述系统被包括在以下中的至少一个中:
用于执行模拟操作的系统;
用于执行深度学习操作的系统;
使用边缘设备实现的系统;
包含一个或更多个虚拟机的系统;
至少部分地在数据中心中实现的系统;或者
至少部分地使用云计算资源实现的系统。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063003879P | 2020-04-01 | 2020-04-01 | |
US63/003,879 | 2020-04-01 | ||
US17/150,954 US11801861B2 (en) | 2020-04-01 | 2021-01-15 | Using image augmentation with simulated objects for training machine learning models in autonomous driving applications |
US17/150,954 | 2021-01-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113496290A CN113496290A (zh) | 2021-10-12 |
CN113496290B true CN113496290B (zh) | 2024-07-19 |
Family
ID=77921234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110357294.3A Active CN113496290B (zh) | 2020-04-01 | 2021-04-01 | 使用采用模拟对象增强的图像训练机器学习模型 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11801861B2 (zh) |
JP (1) | JP2021176077A (zh) |
CN (1) | CN113496290B (zh) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11643105B2 (en) | 2020-02-21 | 2023-05-09 | Argo AI, LLC | Systems and methods for generating simulation scenario definitions for an autonomous vehicle system |
US11429107B2 (en) | 2020-02-21 | 2022-08-30 | Argo AI, LLC | Play-forward planning and control system for an autonomous vehicle |
US11834069B2 (en) * | 2020-03-05 | 2023-12-05 | Uatc, Lcc | Systems and methods for selecting trajectories based on interpretable semantic representations |
US20210286924A1 (en) * | 2020-03-11 | 2021-09-16 | Aurora Innovation, Inc. | Generating autonomous vehicle simulation data from logged data |
US11472402B2 (en) * | 2020-04-23 | 2022-10-18 | Deere & Company | Work tool collision avoidance method and system for a work machine |
US11465652B2 (en) * | 2020-06-11 | 2022-10-11 | Woven Planet North America, Inc. | Systems and methods for disengagement prediction and triage assistant |
US11772656B2 (en) * | 2020-07-08 | 2023-10-03 | Ford Global Technologies, Llc | Enhanced vehicle operation |
US11854250B2 (en) * | 2020-09-16 | 2023-12-26 | Fsx, Inc. | Portable terminal and oshibori management system |
US11648959B2 (en) * | 2020-10-20 | 2023-05-16 | Argo AI, LLC | In-vehicle operation of simulation scenarios during autonomous vehicle runs |
US11913188B2 (en) * | 2021-02-11 | 2024-02-27 | R.H. Borden And Company, Llc | Automated tool access to a manhole through automated manhole cover removal using self-driving vehicle |
DE102021201512A1 (de) * | 2021-02-17 | 2022-08-18 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verfahren zur Modellierung der Umgebung eines automatisierten Fahrzeugs |
US12019449B2 (en) | 2021-02-18 | 2024-06-25 | Argo AI, LLC | Rare event simulation in autonomous vehicle motion planning |
US11810225B2 (en) * | 2021-03-30 | 2023-11-07 | Zoox, Inc. | Top-down scene generation |
US11858514B2 (en) | 2021-03-30 | 2024-01-02 | Zoox, Inc. | Top-down scene discrimination |
WO2023059942A1 (en) | 2021-10-05 | 2023-04-13 | Argo AI, LLC | Systems and methods for managing, accessing and using services |
US12008788B1 (en) * | 2021-10-14 | 2024-06-11 | Amazon Technologies, Inc. | Evaluating spatial relationships using vision transformers |
US12100230B2 (en) * | 2021-10-28 | 2024-09-24 | Nvidia Corporation | Using neural networks for 3D surface structure estimation based on real-world data for autonomous systems and applications |
US12039663B2 (en) | 2021-10-28 | 2024-07-16 | Nvidia Corporation | 3D surface structure estimation using neural networks for autonomous systems and applications |
US11749115B2 (en) * | 2021-12-14 | 2023-09-05 | Here Global B.V. | Method, apparatus, and computer program product for dynamic detection of pedestrian activity |
US12103559B2 (en) * | 2021-12-17 | 2024-10-01 | Gm Cruise Holdings Llc | Filtering real-world objects for inclusion in a simulated environment |
US12001175B2 (en) * | 2021-12-20 | 2024-06-04 | Gm Cruise Holdings Llc | Long tail lidar 3-D object detection improvement with targeted simulation data injection |
CN114327908B (zh) * | 2022-01-04 | 2022-10-11 | 北京志凌海纳科技有限公司 | 多云管理平台的管理方法 |
US20230282002A1 (en) * | 2022-03-07 | 2023-09-07 | Woven By Toyota, Inc. | Apparatus and method for modifying ground truth for checking accuracy of machine learning model |
US20230286529A1 (en) * | 2022-03-10 | 2023-09-14 | Argo AI, LLC | Systems and methods for dynamic data mining during data collection missions |
US20230351736A1 (en) * | 2022-04-27 | 2023-11-02 | Canoo Technologies Inc. | Active data collection, sampling, and generation for use in training machine learning models for automotive or other applications |
US11623658B1 (en) * | 2022-05-19 | 2023-04-11 | Aurora Operations, Inc. | System and method for generating information on remainder of measurement using sensor data |
CN114898318A (zh) * | 2022-05-24 | 2022-08-12 | 昆明理工大学 | 一种用于车道线检测的动态数据增强方法 |
US11702011B1 (en) | 2022-06-30 | 2023-07-18 | Plusai, Inc. | Data augmentation for driver monitoring |
US11699282B1 (en) * | 2022-06-30 | 2023-07-11 | Plusai, Inc. | Data augmentation for vehicle control |
US11574462B1 (en) * | 2022-06-30 | 2023-02-07 | Plus AI, Inc. | Data augmentation for detour path configuring |
CN115526055B (zh) * | 2022-09-30 | 2024-02-13 | 北京瑞莱智慧科技有限公司 | 模型鲁棒性检测方法、相关装置及存储介质 |
GB2625511A (en) * | 2022-12-06 | 2024-06-26 | Continental Automotive Tech Gmbh | A computer-implemented method for navigating an agent through an environment for the purpose of data collection |
US12073610B1 (en) | 2023-02-10 | 2024-08-27 | Capture Llc | Universally trained model for detecting objects using common class sensor devices |
US20240312188A1 (en) * | 2023-03-17 | 2024-09-19 | Qualcomm Incorporated | Adaptive region-based object sampling for object detection |
CN116028663B (zh) * | 2023-03-29 | 2023-06-20 | 深圳原世界科技有限公司 | 三维数据引擎平台 |
US11922703B1 (en) * | 2023-04-06 | 2024-03-05 | Plusai, Inc. | Generic obstacle detection in drivable area |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109427214A (zh) * | 2017-08-31 | 2019-03-05 | 福特全球技术公司 | 使用模拟传感器数据扩增现实传感器记录 |
CN110874610A (zh) * | 2018-09-01 | 2020-03-10 | 图森有限公司 | 一种使用机器学习的人类驾驶行为建模系统 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018017936A1 (en) * | 2016-07-22 | 2018-01-25 | Vid Scale, Inc. | Systems and methods for integrating and delivering objects of interest in video |
US10592805B2 (en) * | 2016-08-26 | 2020-03-17 | Ford Global Technologies, Llc | Physics modeling for radar and ultrasonic sensors |
US10277859B2 (en) * | 2016-09-14 | 2019-04-30 | Canon Kabushiki Kaisha | Devices, systems, and methods for generating multi-modal images of a synthetic scene |
US10430673B2 (en) * | 2017-07-19 | 2019-10-01 | GM Global Technology Operations LLC | Systems and methods for object classification in autonomous vehicles |
US11334762B1 (en) * | 2017-09-07 | 2022-05-17 | Aurora Operations, Inc. | Method for image analysis |
US20190179979A1 (en) * | 2017-12-13 | 2019-06-13 | Uber Technologies, Inc. | Simulated Sensor Testing |
CN110494863B (zh) * | 2018-03-15 | 2024-02-09 | 辉达公司 | 确定自主车辆的可驾驶自由空间 |
US10845818B2 (en) * | 2018-07-30 | 2020-11-24 | Toyota Research Institute, Inc. | System and method for 3D scene reconstruction of agent operation sequences using low-level/high-level reasoning and parametric models |
US11256958B1 (en) * | 2018-08-10 | 2022-02-22 | Apple Inc. | Training with simulated images |
US10885698B2 (en) | 2018-08-10 | 2021-01-05 | Nvidia Corporation | Method for programmable timeouts of tree traversal mechanisms in hardware |
US11508049B2 (en) * | 2018-09-13 | 2022-11-22 | Nvidia Corporation | Deep neural network processing for sensor blindness detection in autonomous machine applications |
US11092966B2 (en) * | 2018-12-14 | 2021-08-17 | The Boeing Company | Building an artificial-intelligence system for an autonomous vehicle |
GB201912145D0 (en) * | 2019-08-23 | 2019-10-09 | Five Ai Ltd | Performance testing for robotic systems |
US11250569B2 (en) * | 2019-11-04 | 2022-02-15 | GE Precision Healthcare LLC | Systems and methods for functional imaging follow-up evaluation using deep neural network |
WO2021101527A1 (en) * | 2019-11-19 | 2021-05-27 | Google Llc | Ar-assisted synthetic data generation for training machine learning models |
-
2021
- 2021-01-15 US US17/150,954 patent/US11801861B2/en active Active
- 2021-03-31 JP JP2021059521A patent/JP2021176077A/ja active Pending
- 2021-04-01 CN CN202110357294.3A patent/CN113496290B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109427214A (zh) * | 2017-08-31 | 2019-03-05 | 福特全球技术公司 | 使用模拟传感器数据扩增现实传感器记录 |
CN110874610A (zh) * | 2018-09-01 | 2020-03-10 | 图森有限公司 | 一种使用机器学习的人类驾驶行为建模系统 |
Also Published As
Publication number | Publication date |
---|---|
US11801861B2 (en) | 2023-10-31 |
CN113496290A (zh) | 2021-10-12 |
US20210309248A1 (en) | 2021-10-07 |
JP2021176077A (ja) | 2021-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113496290B (zh) | 使用采用模拟对象增强的图像训练机器学习模型 | |
US11897471B2 (en) | Intersection detection and classification in autonomous machine applications | |
US11688181B2 (en) | Sensor fusion for autonomous machine applications using machine learning | |
US11195331B2 (en) | Object detection using skewed polygons suitable for parking space detection | |
US20210201145A1 (en) | Three-dimensional intersection structure prediction for autonomous driving applications | |
US11592828B2 (en) | Using neural networks to perform fault detection in autonomous driving applications | |
JP2023503729A (ja) | 自律運転アプリケーションのための曲線適合を使用するランドマーク検出 | |
CN114155272A (zh) | 自主机器应用中的自适应目标跟踪算法 | |
US20230213945A1 (en) | Obstacle to path assignment for autonomous systems and applications | |
US20230110713A1 (en) | Training configuration-agnostic machine learning models using synthetic data for autonomous machine applications | |
US20240001957A1 (en) | Using image augmentation with simulated objects for training machine learning models in autonomous driving applications | |
CN116051779A (zh) | 用于自主系统和应用的使用深度神经网络利用点云致密化的3d表面重建 | |
CN116767245A (zh) | 使用自主系统和应用的神经网络的地图信息对象数据管理 | |
CN115909237A (zh) | 在自主机器应用程序中使用深度学习的能见度距离估计 | |
US20230406315A1 (en) | Encoding junction information in map data | |
CN116051780A (zh) | 用于自主系统和应用的使用人工智能利用点云致密化的3d表面重建 | |
CN116048060A (zh) | 用于自主系统和应用的使用神经网络基于真实世界数据的3d表面结构估计 | |
CN116795091A (zh) | 自主系统和应用程序的环境重建和路径规划 | |
CN117396926A (zh) | 用于自主机器系统和应用的基于感知的标志检测和解释 | |
CN118119981A (zh) | 用于自主系统和应用的使用机器学习的自由空间检测 | |
CN117581117A (zh) | 自主机器系统和应用中使用LiDAR数据的动态对象检测 | |
CN116767182A (zh) | 用于自主机器系统和应用的基于感知的停车辅助 | |
US20230391365A1 (en) | Techniques for generating simulations for autonomous machines and applications | |
CN117034024A (zh) | 使用神经网络用于自主系统和应用的区域的地理空间集群 | |
JP2023082647A (ja) | 自律システム及びアプリケーションのためのカメラベースの入力を使用した深層学習ベースの動作領域検証 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |