CN116051779A - 用于自主系统和应用的使用深度神经网络利用点云致密化的3d表面重建 - Google Patents
用于自主系统和应用的使用深度神经网络利用点云致密化的3d表面重建 Download PDFInfo
- Publication number
- CN116051779A CN116051779A CN202211315784.8A CN202211315784A CN116051779A CN 116051779 A CN116051779 A CN 116051779A CN 202211315784 A CN202211315784 A CN 202211315784A CN 116051779 A CN116051779 A CN 116051779A
- Authority
- CN
- China
- Prior art keywords
- representation
- environment
- data
- vehicle
- surface structure
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 78
- 238000000280 densification Methods 0.000 title abstract description 22
- 238000000034 method Methods 0.000 claims description 133
- 230000011218 segmentation Effects 0.000 claims description 60
- 230000015654 memory Effects 0.000 claims description 57
- 238000012545 processing Methods 0.000 claims description 48
- 238000004088 simulation Methods 0.000 claims description 22
- 230000008447 perception Effects 0.000 claims description 16
- 238000013135 deep learning Methods 0.000 claims description 12
- 230000001133 acceleration Effects 0.000 claims description 11
- 239000000725 suspension Substances 0.000 claims description 9
- 238000013439 planning Methods 0.000 abstract description 20
- 238000012549 training Methods 0.000 description 102
- 238000001514 detection method Methods 0.000 description 101
- 230000006870 function Effects 0.000 description 81
- 238000013136 deep learning model Methods 0.000 description 72
- 238000010586 diagram Methods 0.000 description 33
- 238000013527 convolutional neural network Methods 0.000 description 28
- 238000004891 communication Methods 0.000 description 24
- 238000004422 calculation algorithm Methods 0.000 description 23
- 238000010801 machine learning Methods 0.000 description 22
- 238000003860 storage Methods 0.000 description 22
- 230000008569 process Effects 0.000 description 19
- 230000033001 locomotion Effects 0.000 description 16
- 238000007726 management method Methods 0.000 description 16
- 230000006399 behavior Effects 0.000 description 13
- 230000002093 peripheral effect Effects 0.000 description 11
- 238000009877 rendering Methods 0.000 description 11
- 230000008859 change Effects 0.000 description 10
- 238000013507 mapping Methods 0.000 description 10
- 230000000007 visual effect Effects 0.000 description 10
- 238000013473 artificial intelligence Methods 0.000 description 9
- 239000002131 composite material Substances 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 9
- 230000007613 environmental effect Effects 0.000 description 9
- 238000007667 floating Methods 0.000 description 9
- 230000004044 response Effects 0.000 description 9
- 230000009471 action Effects 0.000 description 8
- 238000005070 sampling Methods 0.000 description 8
- 230000002123 temporal effect Effects 0.000 description 7
- 230000003044 adaptive effect Effects 0.000 description 5
- 235000019800 disodium phosphate Nutrition 0.000 description 5
- 238000009826 distribution Methods 0.000 description 5
- 238000011176 pooling Methods 0.000 description 5
- 230000009467 reduction Effects 0.000 description 5
- 230000008093 supporting effect Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 238000012937 correction Methods 0.000 description 4
- 230000007787 long-term memory Effects 0.000 description 4
- 238000005259 measurement Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000003190 augmentative effect Effects 0.000 description 3
- 230000004888 barrier function Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000013480 data collection Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 239000000446 fuel Substances 0.000 description 3
- 238000009499 grossing Methods 0.000 description 3
- 238000003709 image segmentation Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 241001122315 Polites 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
- 210000004556 brain Anatomy 0.000 description 2
- 238000005056 compaction Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 238000013481 data capture Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000036541 health Effects 0.000 description 2
- 230000001976 improved effect Effects 0.000 description 2
- 230000004807 localization Effects 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 238000013178 mathematical model Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000009448 modified atmosphere packaging Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 235000019837 monoammonium phosphate Nutrition 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
- 238000012805 post-processing Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 239000000047 product Substances 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001953 sensory effect Effects 0.000 description 2
- 230000006403 short-term memory Effects 0.000 description 2
- 238000012706 support-vector machine Methods 0.000 description 2
- 230000001360 synchronised effect Effects 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
- 241000251468 Actinopterygii Species 0.000 description 1
- 101100248200 Arabidopsis thaliana RGGB gene Proteins 0.000 description 1
- 102100035964 Gastrokine-2 Human genes 0.000 description 1
- PEDCQBHIVMGVHV-UHFFFAOYSA-N Glycerine Chemical compound OCC(O)CO PEDCQBHIVMGVHV-UHFFFAOYSA-N 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
- 241000270322 Lepidosauria Species 0.000 description 1
- 241001465754 Metazoa Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 235000004522 Pentaglottis sempervirens Nutrition 0.000 description 1
- 206010034960 Photophobia Diseases 0.000 description 1
- 241000219793 Trifolium Species 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 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
- 238000002485 combustion reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 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
- 230000007812 deficiency Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000018109 developmental process Effects 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
- 238000012905 input function Methods 0.000 description 1
- 238000007689 inspection 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
- 238000007477 logistic regression Methods 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
- 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
- 230000001537 neural effect Effects 0.000 description 1
- 238000010606 normalization 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
- 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
- 238000010845 search algorithm Methods 0.000 description 1
- 230000035939 shock 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
- 230000001960 triggered effect Effects 0.000 description 1
- 238000010396 two-hybrid screening Methods 0.000 description 1
- 238000002604 ultrasonography Methods 0.000 description 1
Images
Classifications
-
- 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/0464—Convolutional networks [CNN, ConvNet]
-
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- 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
- B60W40/00—Estimation or calculation of non-directly measurable driving parameters for road vehicle drive control systems not related to the control of a particular sub unit, e.g. by using mathematical models
-
- 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
- B60W40/00—Estimation or calculation of non-directly measurable driving parameters for road vehicle drive control systems not related to the control of a particular sub unit, e.g. by using mathematical models
- B60W40/08—Estimation or calculation of non-directly measurable driving parameters for road vehicle drive control systems not related to the control of a particular sub unit, e.g. by using mathematical models related to drivers or passengers
- B60W40/09—Driving style or behaviour
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/09—Supervised learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic networks
-
- 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
- B60W2050/0001—Details of the control system
- B60W2050/0002—Automatic control, details of type of controller or control system architecture
- B60W2050/0004—In digital systems, e.g. discrete-time systems involving sampling
- B60W2050/0005—Processor details or data handling, e.g. memory registers or chip architecture
-
- 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
- B60W2050/0001—Details of the control system
- B60W2050/0019—Control system elements or transfer functions
- B60W2050/0028—Mathematical models, e.g. for simulation
-
- 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
- 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/408—Radar; Laser, e.g. lidar
-
- 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
-
- 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/20—Road profile, i.e. the change in elevation or curvature of a plurality of continuous road segments
-
- 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/35—Road bumpiness, e.g. potholes
-
- 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/044—Recurrent networks, e.g. Hopfield networks
- G06N3/0442—Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
-
- 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
- G06N3/0455—Auto-encoder networks; Encoder-decoder 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
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mechanical Engineering (AREA)
- Transportation (AREA)
- Automation & Control Theory (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Medical Informatics (AREA)
- Geometry (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computer Graphics (AREA)
- Probability & Statistics with Applications (AREA)
- Algebra (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
Abstract
本公开涉及用于自主系统和应用的使用深度神经网络利用点云致密化的3D表面重建。在各种示例中,可以观察和估计诸如道路的3D表面结构(3D路面)的3D表面结构以生成3D表面结构的3D点云或其他表示。由于估计的表示可能是稀疏的,因此可以使用深度神经网络(DNN)从稀疏表示中预测3D表面结构的致密表示的值。例如,稀疏的3D点云可以被投影以形成稀疏的投影图像(例如,稀疏的2D高度图),该图像可以被馈送到DNN以预测致密的投影图像(例如,致密的2D高度图)。3D表面结构的预测的致密表示可以提供给自主车辆驾驶堆栈,以实现对自主车辆的安全和舒适的规划和控制。
Description
背景技术
设计一个系统以在没有监督的情况下自主、安全和舒适地驾驶车辆是非常困难的。自主车辆至少应该能够像细心的驾驶员一样发挥功能——其利用感知和行动系统,该系统具有在复杂环境中识别和应对移动和静态障碍物的令人难以置信的能力——在周围三维(3D)环境中沿着车辆的路径进行导航。因此,检测环境部分的能力通常对于自主驾驶感知系统至关重要。随着自主车辆的运行环境开始从高速公路环境扩展到以复杂场景和复杂形状为特征的半城市和城市环境,这种能力变得越来越重要。
3D环境的一个重要组成部分是3D路面。对3D路面的了解使自主车辆能够提供舒适和安全的驾驶体验。例如,自主车辆可以调整车辆的悬架系统以匹配当前的路面(例如,通过补偿道路上的颠簸)。在另一个示例中,自主车辆可以导航以避开道路上的突起(例如,凹陷、孔洞)。在又一个示例中,自主车辆可以基于道路中迫近的表面坡度应用早期加速或减速。这些功能中的任何一个都可以用于提高安全性、提高车辆的使用寿命、提高能源效率和/或提供平稳的驾驶体验。
估计路面结构的一种方式是利用3D重建。现有的3D路面重建方法依赖于LiDAR传感器或相机。使用LiDAR传感器的传统技术会发射激光脉冲并检测来自路面的反射信号,以重建道路上的3D点。然而,LiDAR传感器价格昂贵,范围有限,其准确度可能不足以满足自动驾驶中的某些应用。使用相机的传统技术依赖于多视图几何来重建3D实体。然而,使用相机的传统重建技术无法有效地计算致密测量,并且传统的后处理技术(例如插值或平面拟合)通常不足以为现实世界中存在的复杂路面提供足够准确的模型。因此,需要改进的用于自主驾驶应用的3D路面重建技术。
发明内容
本公开的实施例涉及3D表面估计。在一些实施例中,可以观察和估计诸如道路的3D表面结构(3D路面)的3D表面结构以生成3D点云或3D表面结构的其他表示。由于该表示可能是稀疏的,因此可以应用一种或更多种致密化技术来生成3D表面结构的致密表示,该致密表示可以提供给自主车辆驾驶堆栈,以实现对自主车辆的安全和舒适的规划和控制。
在示例实施例中,一个或更多个相机可以固定到车辆或其他对象上或以其他方式设置在车辆或其他对象上,并用于在车辆或对象导航通过3D环境(例如,沿着道路)时捕捉3D环境的图像,并且可以应用任何合适的3D结构估计技术来生成感兴趣的3D表面结构(例如3D路面)的表示。3D表面结构的表示可以使用例如马尔可夫随机场和/或深度神经网络(DNN)来致密化。在使用马尔可夫随机场的示例致密化技术中,稀疏投影图像和密集投影图像(例如,高度图)可以用无向图建模,并且最大后验(MAP)推理可以用于根据给定的稀疏值来估计最可能的致密值。在使用DNN的致密化技术的示例中,稀疏投影图像可以被馈送到DNN以预测相应的致密投影图像。可以以各种方式生成此类DNN的训练数据,并且用于训练DNN以在给定稀疏表示的情况下预测3D表面结构的致密表示。用于生成训练数据的示例技术包括:1)渲染虚拟传感器数据、分割掩码和深度图的帧;2)对3D路面进行参数化数学建模;3)从单个LiDAR传感器收集和注释真实传感器数据;和/或4)收集和注释从多个LiDAR传感器累积的真实传感器数据。
因此,本文所述的技术可用于观察和重建3D表面,例如3D路面,并且可将3D表面结构的表示(和/或相应的置信度值)提供给自主车辆驾驶堆栈(autonomous vehicle drivestack),以实现对自主车辆的安全和舒适的规划和控制。例如,自主车辆可以调整车辆的悬架系统以匹配当前的路面(例如,通过补偿道路上的颠簸)。在另一个示例中,自主车辆可以导航以避开道路上的突起(例如,凹陷、孔洞)。在又一个示例中,自主车辆可以基于道路中迫近的表面坡度应用早期加速或减速。这些功能中的任何一个都可以用于提高安全性、提高车辆的使用寿命、提高能源效率和/或提供平稳的驾驶体验。
提供该概述以以简化形式介绍概念的选择,这些概念将在下面的详细描述中进一步描述。本概述并不意欲识别关键特征或基本特征。
附图说明
下面参照附图详细描述本发明的用于3D表面估计的系统和方法,其中:
图1是示出根据本公开的一些实施例的示例3D表面重建管线的数据流程图;
图2是示出根据本公开的一些实施例的示例3D结构估计器的示图;
图3是示出根据本公开的一些实施例的示例检测致密器的示图;
图4是示出根据本公开的一些实施例的对稀疏高度图和致密高度图之间的关系进行建模的示例无向图的示图;
图5是说明根据本公开的一些实施例的示例深度学习模型表面估计器的数据流程图;
图6是示出根据本公开的一些实施例的包括具有多个输入头的深度学习模型的示例深度学习模型表面估计器的数据流程图;
图7是示出根据本公开的一些实施例的用于在捕获会话期间生成三维(3D)表面结构的表示的方法的流程图;
图8是示出根据本公开的一些实施例的用于至少基于马尔可夫随机场来生成3D表面结构的致密表示的方法的流程图;
图9是示出根据本公开的一些实施例的用于至少部分地基于使用一个或更多个神经网络估计的3D路面结构来控制车辆的方法的流程图;
图10是示出根据本公开的一些实施例的使用模拟环境的示例训练数据生成管线的数据流程图;
图11是根据本公开的一些实施例的期望表面的示例参数数学模型的图示;
图12是示出根据本公开的一些实施例的使用收集到的真实世界数据的示例地面实况生成管线的数据流程图;
图13A是根据本公开的一些实施例的来自示例LiDAR扫描的LiDAR数据的图示,以及图13B是根据本公开的一些实施例的从多个LiDAR扫描累积的LiDAR数据的图示;
图14是示出根据本公开的一些实施例的用于训练一个或更多个神经网络(NN)以使用模拟图像数据生成3D表面结构的致密表示的方法的流程图;
图15是示出根据本公开的一些实施例的用于为训练数据集生成合成3D路面的不完整和地面实况表示的方法的流程图;
图16是示出根据本公开的一些实施例的用于训练一个或更多个神经网络(NN)以使用在捕获会话期间捕获的图像数据和LiDAR数据来生成3D表面结构的致密表示的方法的流程图;
图17A是根据本公开的一些实施例的示例自主车辆的图示;
图17B是根据本公开的一些实施例的图17A的示例自主车辆的相机位置和视野的示例;
图17C是根据本公开的一些实施例的图17A的示例自主车辆的示例系统架构的框图;
图17D是根据本公开的一些实施例的用于在基于云的服务器与图17A的示例自主车辆之间通信的系统图;
图18是适合用于实现本公开的一些实施例的示例计算设备的框图;以及
图19是适合用于实现本公开的一些实施例的示例数据中心的框图。
具体实施方式
公开了与三维(3D)表面估计相关的系统和方法。例如,本公开描述了重建道路或环境的其他组件的3D表面结构以供自主车辆、半自主车辆、机器人和/或其他对象类型使用的系统和方法。尽管本公开可以关于示例自主车辆1700(在本文中也称为“车辆1700”或“自车1700”,其示例参照图17A-图17D进行描述)进行描述,但这并非旨在限制。例如,本文描述的系统和方法可以由但不限于非自主车辆、半自主车辆(例如,在一个或更多个自适应驾驶员辅助系统(ADAS)中)、有领航的和无领航的机器人或机器人平台、仓库车辆、越野车辆、耦合到一个或更多个拖车的车辆、飞行器、船、穿梭车、应急响应车辆、摩托车、电动或机动自行车、飞机、工程车辆、水下航行器、无人机和/或其他车辆类型。此外,虽然一些实施例可以针对自主驾驶的3D表面结构估计进行描述,但这并不旨在进行限制,并且本文描述的系统和方法可以用于增强现实、虚拟现实、混合现实、机器人技术、安全和监视、自主或半自主机器应用和/或任何其他可以使用3D表面结构估计的技术空间。
在高层次上,可以观察和估计诸如道路的3D表面结构(3D路面)的3D表面结构以生成3D点云或3D表面结构的其他表示。由于该表示可能是稀疏的,因此可以应用一种或更多种致密化技术来生成3D表面结构的致密表示,该表示可以提供给自主车辆驾驶堆栈,以实现对自主车辆的安全和舒适的规划和控制。
在示例技术中,一个或更多个相机可以固定到车辆或其他对象上或以其他方式设置在车辆或其他对象上,并用于在车辆或对象导航(例如,沿着道路)通过3D环境时捕捉3D环境的图像,并且图像可用于估计道路的3D表面结构。可以应用任何合适的3D结构估计技术。例如,可以执行运动结构(SFM)以根据图像序列估计3D结构,和/或可以应用立体视觉来根据由多个相机捕获的图像和/或从多个视角捕获的图像来估计3D结构。通常,3D结构估计可以生成3D环境中检测到的点的表示,例如3D点云。在一些实施例中,使用统计或聚类技术去除异常值。在某些情况下,可以将自由空间估计应用于捕获的图像以检测道路或其他可驾驶空间,并且可以使用分割掩码或检测到的道路或可驾驶空间的其他表示来选择道路表面上的3D点(例如,可能会过滤掉路面以外的点)。结果可能是道路的3D表面结构的表示,例如3D点云。
由于3D结构估计技术的准确性和计算能力的限制,道路的3D表面结构的表示可能是稀疏的。因此,在一些实施例中,对于非限制性示例,可以使用马尔可夫随机场和/或深度神经网络(DNN)来致密化3D表面结构的表示。在某些情况下,3D表面结构可以表示为2D高度图。例如,可以投影稀疏的3D点云以形成表示稀疏检测的投影图像(例如,自上而下的投影图像),并且可以对投影图像(例如,2D高度图)进行致密化以填充缺失值。
在使用马尔可夫随机场的示例致密化技术中,稀疏投影图像和致密投影图像可以用无向图建模,并且最大后验(MAP)推理可以用于估计给定稀疏值的最可能的致密值。例如,致密投影图像(例如,致密2D高度图)中的每个像素可以用具有连接到相邻节点的边(例如,每个相邻像素一个边)的相应节点来建模。稀疏投影图像的每个像素(例如,稀疏2D高度图)可以被认为是致密投影图像的噪声观察,并被建模为具有连接到致密投影图像的对应节点(像素)的边的节点。例如,假设该图具有形成栅格的两层的节点,其中底层对应于地面实况(致密投影图像),顶层对应于噪声观察(稀疏投影图像)。假设图中的每个节点对应于一个随机变量,则图的马尔可夫随机场可以建模或以其他方式表示对应于图中节点的随机变量的联合概率分布。知道联合概率分布和一组观察值(来自稀疏投影图像),可以使用任何已知的MAP推理算法来估计致密投影图像的值(例如,致密2D高度图的每个像素的高度估计),例如迭代条件模式、高斯信念传播或其他。因此,马尔可夫随机场可用于致密化3D表面结构的表示。
在一些实施例中,深度神经网络(DNN)可用于预测3D表面结构的致密表示的值。例如,稀疏的3D点云可以被投影以形成表示稀疏检测的稀疏投影图像(例如,自上而下的投影图像),并且可以将稀疏投影图像馈送到DNN,例如卷积神经网络(CNN),来预测致密投影图像。在一些实施例中,DNN可以包括连接到预测不同输出的一个或更多个头(或至少部分离散的层流)的公共主干(或层流)。例如,回归头可以回归关于3D表面结构的特定类型的信息,例如每个像素的高度值。在一些实施例中,置信度头可以预测置信度图,其值表示由回归头预测的对应回归值的置信度。同样地并且如下文更详细解释的,可以训练DNN以预测3D表面结构的致密表示(例如致密的2D高度图)和/或对应的置信度图。
在一些实施例中,稀疏投影图像可以在被输入到DNN之前被归一化。例如,2D高度图可以存储高度值,该高度值包括对应于捕获图像的相机的高度的偏差,2D高度图是从该图像导出的。因此,在一些实施例中,可以计算2D高度图中的高度值的均值高度并且从所有高度值中减去均值高度以去除偏差,这可以使DNN更容易学习。在从DNN输入中去除偏差的实施例中,可以将偏差重新引入(例如,添加)到DNN的预测输出(例如,引入回归头预测的值)。
在一些实施例中,DNN可以包括用于单独输入的多个输入头(或至少部分离散的层流)。例如,DNN可以包括接受稀疏投影图像的第一输入头和接受RGB图像的第二输入头,例如生成稀疏投影图像的透视图图像。通过这种方式,DNN可以从底层致密道路剖面的两个不同视图(例如,自上而下和透视、3D点云空间和2D图像空间等)中学习。在这样的示例中,多个输入头可以连接到融合多个输入头的公共主干。因此,DNN可用于通过融合来自不同来源的信息来执行多模态学习,以获得更好的预测。
在一些实施例中,DNN可以包括一个或更多个循环层(例如,门控循环单元、长短期记忆)以利用时间信息。包括一个或更多个循环层可以允许DNN利用来自先前时间片的信息,从而随着时间的推移产生更好的预测和更稳定的致密化结果。
DNN的训练数据可以以各种方式生成并用于训练DNN以在给定稀疏表示的情况下预测3D表面结构的致密表示。通常,可以收集真实世界数据和/或虚拟数据并将其用于导出训练数据(例如,3D表面结构的稀疏输入数据和/或地面实况表示)。训练数据的类型可能取决于DNN的实现。例如,输入训练数据可以包括3D表面结构的稀疏表示(例如,稀疏高度图)和/或来自某个其他视角的图像数据(例如,透视图的图像)。地面实况训练数据可以包括3D表面结构的致密表示(例如,致密的高度图)和/或分割掩码(例如,识别所需的表面,例如道路或其他可驾驶空间)。
用于生成训练数据的示例技术包括1)渲染虚拟传感器数据、分割掩码和深度图的帧;2)3D路面的参数化数学建模;3)从单个LiDAR传感器收集和注释真实传感器数据;和/或4)收集和注释从多个LiDAR传感器累积的真实传感器数据。
在用于生成训练数据的示例技术中,可以执行模拟以渲染表示真实驾驶场景的虚拟传感器数据(例如,图像)帧并生成对应的分割掩码(例如,识别期望表面(例如道路或其他可行驶空间)的地面实况分割掩码)和深度图。对于任何给定的渲染帧,可以从帧估计3D表面结构(例如,3D路面),如本文所述,并且可以投影得到的稀疏值以形成稀疏投影图像(例如,2D高度图),其可用作输入训练数据。
为了生成对应的地面实况致密投影图像,对于从虚拟传感器的视角渲染的任何给定帧,可以通过将范围值从对应的深度图解投影(unprojecting)到使用虚拟传感器的位置和方位的3D环境来生成3D结构的3D点云或其他表示。分割掩码可用于选择路面上的3D点(例如,可以过滤掉路面外的点)。另外或替代地,分割掩码可用于从深度图中选择在路面上的点,并且所选择的点可以解投影到3D环境中以在路面上生成3D点。在某些情况下,生成的3D路面表示可能仍然是稀疏的。因此,在一些实施例中,可以使用三角测量算法对缺失值进行插值。例如,可以在2D中执行Delaunay三角剖分(例如,通过投影3D点以形成投影图像并在投影图像中执行Delaunay三角剖分)或在3D中执行(通过计算围绕3D点云的三角形的表面网格),并且可以从三角形中采样点以生成用于地面实况致密投影图像的所需数量的点。例如,地面实况2D高度图可以从通过在投影高度图中执行2D Delaunay三角剖分生成的三角形采样,或者通过投影从通过执行3D Delaunay三角剖分生成的表面网格采样的3D点采样。因此,致密投影图像和/或分割掩码可以用作地面实况,其与输入稀疏投影图像配对,并包括在训练数据集中。
在用于生成训练数据的另一示例技术中,可以使用3D路面的参数数学建模来生成合成训练数据。在示例实施例中,可以通过首先采样纵向值(例如,从0到300m),然后使用采样的多项式常数的值来计算横向值作为纵向值的二阶多项式来模拟道路方向的变化(例如左曲形、右转弯等)来生成合成3D路面。合成3D路面的高度可以计算为傅立叶基数的线性组合,使用基数的不同采样值、特定基的重量和特定基的频率来模拟表面高度的变化。这些步骤生成纵向3D曲线,可以通过使用横向3D曲线和地平面之间的角度的采样值绘制通过纵向3D曲线上的每个点的横向3D曲线来将纵向3D曲线扩展为3D表面,以模拟侧面坡度的变化。可以对每个横向3D曲线进行采样以生成致密的3D点云,该3D点云可以被投影以形成合成的地面实况投影图像(例如,地面实况2D高度图)。
为了为输入训练数据生成相应的稀疏投影图像,可以将已知模式应用于地面实况投影图像以抵消像素值的子集(例如,将那些像素值设置为零)以模拟未观察到的值。例如,可以收集真实世界数据的帧,可以从每个帧(如本文所述)估计(例如,3D路面的)3D表面结构,估计的3D结构(例如,3D点云)可以被投影以形成投影图像(例如,稀疏的2D高度图),并且可以生成表示投影图像的哪些像素存在或被观察到的对应二值图。可以从真实世界的数据中生成多个二值图,并且可以随机选择二值图之一并与地面实况投影图像相乘,以生成对应的合成稀疏投影图像。这样,可以为每个地面实况投影图像生成稀疏投影图像,并且合成的稀疏和地面实况投影图像对可以包括在训练数据集中。
另外或备选地,训练数据可以从真实世界数据生成。例如,一辆或更多辆车辆可以从配备的传感器(例如一个或更多个相机和LiDAR传感器)收集传感器数据,同时在现实世界(例如,物理)环境中导航。为了生成地面实况训练数据,可以对收集的LiDAR数据(例如,LiDAR点云)进行平滑处理,可以去除异常值,并且可以将LiDAR数据与相应的图像数据帧在时间和/或空间上对齐。在一些实施例中,为了致密化收集的LiDAR数据,可以使用Delaunay三角测量对缺失值进行插值,和/或可以累积由多个LiDAR传感器从同一时间片触发和/或捕获的LiDAR数据,以便致密化收集的数据。可以标记LiDAR数据以识别感兴趣表面(例如,3D路面)上的3D点,并且可以将识别的3D点(例如,3D点云、投影图像)的表示指定为地面实况训练数据。在一些实施例中,可以对图像数据的对应帧进行分类以生成识别期望表面的地面实况分割掩码。
为了生成对应的输入训练数据,3D表面结构(例如,3D路面)可以从图像数据帧(如本文所述)估计,并且估计的3D结构的表示(例如,稀疏3D点云,稀疏投影图像)可以指定为输入训练数据。这样,对应的稀疏投影图像、图像数据帧、致密投影图像和/或分割掩码可以被分组在一起并且包括在训练数据集中。
在训练期间,可以使用任何合适的损失函数来将预测输出与地面实况进行比较以更新DNN。在DNN包括预测高度图的回归头的示例实施例中,损失函数可以比较预测的高度图和地面实况高度图并乘以指示要致密化的表面的地面实况分割掩码,从而基于在要致密化的区域之外发生的预测来有效地抵消对DNN的更新。在这个示例中,DNN可以学习使用地面实况高度图和分割掩码来预测高度图。在DNN包括预测高度图的回归头和预测对应于高度图的置信度图的置信度头的另一个实施例中,损失函数可以比较预测的高度和地面实况高度并且基于预测的置信度值进行补偿。在这个例子中,DNN可以学习从地面实况高度图预测高度图和置信度图二者。因此,DNN可以通过学习3D结构的稀疏表示和致密表示之间的映射来学习如何执行致密化。
因此,本文所述的技术可用于观察和重建3D表面,例如3D路面,并且可将3D表面结构的表示(和/或相应的置信度值)提供给自主车辆驾驶堆栈,以实现对自动驾驶车辆的安全和舒适的规划和控制。通常,这里描述的技术可以生成比现有重建技术更准确的路面表示。此外,与基于现有技术的重建技术不同,本技术可用于为某些自主驾驶应用生成具有足够准确度和范围的路面表示。因此,使用本技术生成的路面表示可以在自主驾驶中实现改进的导航、安全性和舒适性。例如,自主车辆可以更好地配备成调整车辆的悬架系统以匹配当前的路面(例如,通过补偿道路上的颠簸),以导航车辆以避开道路中的突起(例如,凹陷、孔洞),和/或基于道路中迫近的表面坡度应用早期加速或减速。这些功能中的任何一个都可以用于提高安全性、提高车辆的使用寿命、提高能源效率和/或提供平稳的驾驶体验。
示例3D表面重建管线
参考图1,图1是示出根据本公开的一些实施例的用于3D表面重建系统的示例3D表面重建管线100的数据流程图。应当理解,这里描述的这种和其他布置仅作为示例阐述。除了所示的那些之外或代替所示的那些,可以使用其他布置和元件(例如,机器、接口、功能、命令、功能分组等),并且可以完全省略一些元件。此外,这里描述的许多元件是功能实体,它们可以实现为离散或分布式组件或与其他组件结合,并以任何合适的组合和位置实现。在此描述为由实体执行的各种功能可以由硬件、固件和/或软件来执行。例如,可以通过处理器执行存储在存储器中的指令来执行各种功能。
在高层次上,管线100可以基于三维(3D)环境的图像数据102来估计和生成观察到的3D表面结构的表示,例如3D路面或其他环境部分的表示。随着自我对象或自我行动者(例如,图17A-图17D的自主车辆1700,也称为车辆1700)在3D环境中导航,图像数据102可以由自我对象或自我行动者的一个或更多个相机101捕获。3D结构估计器105可以处理图像数据102以生成感兴趣的3D表面结构的表示(例如,稀疏检测数据110),其可以包括3D点云。由于估计的3D表面结构可能是稀疏的,因此检测致密器115可以致密化稀疏检测数据110以生成3D表面结构的更致密的表示(例如,致密检测数据120),其可以包括二维(2D)自上而下的高度图和/或3D点云。致密检测数据120可以表示观察到的3D表面结构,例如3D路面或其他环境部分。因此,致密检测数据120或观察到的3D表面结构的其他表示可以提供给自我对象或自我行动者的控制组件(例如,图17A-图17D的自主车辆1700的软件堆栈122和/或组件,例如控制器1736、ADAS系统1738和/或SOC 1704)并由其使用,以帮助自我对象或自我行动者在3D环境执行一个或更多个操作,例如路径规划、障碍物或突起避开、调整自我对象或自我行动者的悬挂系统以匹配当前路面、基于迫近的表面坡度应用早期加速或减速、地图绘制和/或其他。
通常,可以使用来自任何数量和任何类型的相机(例如,相机101)的图像数据102来执行3D表面重建,例如下文关于图17A-图17D的自主车辆1700所描述的那些。例如,相机101可以包括自我对象或自我行动者的一个或更多个相机,例如立体相机1768、广角相机1770(例如鱼眼相机)、红外线相机1772、环绕相机1774(例如,360度相机)和/或图17A-图17D的自主车辆1700的远程和/或中程相机1798——并且相机101可用于生成自我对象或自我行动者周围的3D环境的图像数据102。在使用多个相机的实施例中,多个相机可以查看3D环境的公共区域,其中它们各自的视野的重叠部分使得来自不同相机的图像数据102(例如,图像)代表公共区域。
3D结构估计器105使用运动结构(SfM)、立体视觉和/或一些其他3D表面结构估计技术从图像数据102估计特定表面的3D结构(例如,稀疏检测数据110)。SfM和立体视觉是从多个图像估计3D结构的测距技术。SfM从图像序列(例如,由同一相机101捕获)估计3D结构,而立体视觉从基本上同时从不同视角(例如,由不同相机101)捕获的多个图像估计3D结构。在一些实施例中,可以在估计3D结构之前将图像去扭曲和/或失真校正应用于图像数据102。可以使用分割掩码或其他分类数据(例如,通过将分类数据覆盖在图像数据102上)来从估计的3D结构中选择位于期望表面(例如路面)上的点。这样,3D结构估计器105可以生成期望表面的3D结构的表示(例如,稀疏检测数据110),其可以包括3D点云(例如,在3D世界坐标中)。
图2是图示根据本公开的一些实施例的3D结构估计器105的示例实现的图。在图2中,3D结构估计器105包括运动结构估计器210、立体视觉估计器230、异常值去除器220和路面点选择器240。
运动结构估计器210可以执行任何已知的SfM技术来从图像数据102估计3D结构。例如,运动结构估计器210可以从随着时间的推移所检测到的特征轨迹重建图像数据102中表示的特征的3D位置。在一些实施例中,运动结构估计器210可以执行3D位置的直接估计,而无需对特征轨迹进行中间估计。通常,可以应用任何已知的SfM技术,包括增量SfM、全局SfM、核外SfM和/或其他技术。因此,运动结构估计器210可以生成图像数据102中表示的特征的3D结构的表示。
立体视觉估计器230可以通过将立体视觉(或立体算法)应用于表示不同视角的图像数据102来估计3D结构。例如,立体视觉估计器230可以将来自多个相机(例如,相机101)的图像数据102投影到公共图像空间或平面中,并使用任何合适的度量来比较投影的图像数据以生成视差图,视差图可能表示深度的差异(例如,在图像坐标中,可能与深度成反比)。可以使用多个相机的已知位置和方位将视差图投影到3D点云中。这样,立体视觉估计器230可以生成图像数据102中表示的特征的3D结构的表示。
在一些实施例中,异常值去除器220可以评估估计的3D结构并去除异常值。例如,在估计的3D结构采用3D点云的形式的一些实施例中,可以投影3D点云以形成投影图像,例如自上而下的投影图像,以产生点列(例如,0.1米x0.1米光束)。然后对于每一列,可以应用任何合适的统计或聚类技术来识别该列的代表点。作为非限制性示例,列中的点的中值或均值可以被识别为该列的代表点。以自上向下投影图像为例,每列中的点的中值或均值高度可以被识别为该列的代表点的高度。在一些实施例中,可以应用一些其他聚类技术来对来自3D点云的点进行分组并识别代表点(例如,聚类中心或均值)。这样,异常值去除器220可以用识别的点更新估计的3D结构,和/或以其他方式检测和去除异常值。
通常,估计的3D结构可以包括在图像数据102中表示的3D环境和3D环境中的对象的部分的3D点。因此,路面点选择器240可以识别属于特定感兴趣表面(例如3D路面或其他环境部分)的点。例如,可以生成或以其他方式获得分割掩码或其他分类数据,并且路面点选择器240可以使用分割掩码或其他分类数据来选择点。
更具体地,在一些实施例中,可以应用对象检测、自由空间估计和/或图像分割(例如,由3D估计器105或一些其他组件)来分类、分割和/或预测作为期望类别的一部分的图像数据102的区域(例如像素)。例如,可以训练一个或更多个深度学习模型(例如,卷积神经网络)来预测一个或更多个分割掩码和/或置信度图,它们表示属于可行驶路面或其他可导航空间、其他环境部分(例如、人行道、建筑物)、动画对象和/或其他类的像素。在一些实施例中,由单个相机捕获的个体图像(例如,RBG图像)可以被分割和/或分类。在一些情况下,可以通过将由多个相机捕获的图像拼接在一起来生成合成图像(例如,RBG图像),并且可以对合成图像进行分割和/或分类。因此,可以获取和/或生成(例如,从预测的掩码或置信度图)描绘或表示道路或可行驶空间(或一些其他期望的表面)的分割掩码或其他分类数据。
这样,路面点选择器240可以使用分割掩码或其他分类数据从估计的3D结构中选择属于由分割掩码或其他分类数据表示的类的点。可以应用任何合适的选择技术。在一些实施例中,来自估计的3D结构的3D点可以被反投影到分割掩码中(例如,使用捕获从中生成分割掩码的图像数据102的相机101的已知位置和方位),并且可以选择落在预测区域内的投影点(和/或可以去除落在预测区域之外的投影点)。这样,路面点选择器240可以生成或以其他方式识别属于期望表面(例如3D路面)的估计的3D表面结构的点。在执行异常值去除的实施例中,可以以任何顺序调用异常值去除器220和路面点选择器240。估计的3D表面结构(例如,稀疏检测数据110)的所得表示可以采用任何形式,例如3D点云。
尽管描述了其中3D表面重建使用由相机101捕获的图像数据102的某些实施例,但是在一些实施例中,可以附加地或替代地使用其他传感器数据。作为非限制性示例,一个或更多个LiDAR传感器或RADAR传感器可用于捕获稀疏检测数据110(例如,LiDAR或RADAR点云)。
现在回到图1,由于估计的3D表面结构可能是稀疏的,所以检测致密器115可以致密化稀疏检测数据110以生成3D表面结构的更致密表示(例如,致密检测数据120)。通常,稀疏检测数据110可以采用任何合适的形式,例如稀疏3D点云。稀疏检测数据110可被投影以形成投影图像,例如具有缺失值的二维(2D)自上而下高度图o∈Nmxn。符号Nmxn表示具有空间维度mxn(例如,以像素为单位)和具有所需地面采样距离的投影图像(例如,俯视图像),其中投影图像中的每个像素可以存储浮点值(例如,高度值)。这个稀疏的2D高度图可以被认为是3D表面结构的部分噪声观察。在该示例中,致密检测数据120可以采用2D自上而下高度图g∈Nmxn的形式或以其他方式表示,并且检测致密器115可以通过给定o推理g来增密稀疏检测数据110。在一些实施例中,检测致密器115可以使用一个或更多个机器学习模型,例如马尔可夫随机场和/或一个或更多个深度学习模型(例如,一个或更多个深度神经网络(DNN))来执行此推理。3D表面结构的所得表示(例如,致密检测数据120)可以采用任何合适的形式,例如2D高度图和/或3D点云。
图3是示出根据本公开的一些实施例的检测致密器115的示例实现的图。在图3中,检测致密器115包括马尔可夫随机场表面估计器310和深度学习模型表面估计器320。
在一些实施例中,马尔可夫随机场表面估计器310可以致密化稀疏检测数据110,以生成3D表面结构的更致密表示(例如,致密检测数据120)。例如,马尔可夫随机场表面估计器310可以通过给定o推理致密的2D自上而下高度图g(或其他致密投影图像)来致密化稀疏2D自上而下高度图o(或其他稀疏投影图像)。更具体地,g和o之间的关系可以用诸如马尔可夫随机场的概率模型来建模,并且马尔可夫随机场表面估计器310可以执行最大后验(MAP)推理以在给定概率模型和一组观测值o的情况下估计最可能的g。在一些实施例中,马尔可夫随机场(例如,无向图)可以用作概率模型,因为它能够建模空间依赖性,例如存在于某些3D表面结构中的空间依赖性,例如3D路面,其中表面的局部区域通常是光滑的。因此,在一些实施例中,稀疏高度图o和致密高度图g之间的关系可以用无向图建模。
图4是示出根据本公开的一些实施例的对稀疏高度图o和致密高度图g之间的关系进行建模的示例无向图400的示图。例如,致密高度图g中的每个像素可以用具有连接到相邻节点的边(例如,每个相邻像素一个边)的对应节点(例如,图4中的g1、g2、g3、g4)建模。在一些实施例中,对应于g中的内部像素的节点可以具有四个边(例如,连接到水平和垂直相邻的节点)、八个边(例如,连接到水平、垂直和对角相邻的节点)或其他。图4示出了对应于g中的内部像素的无向图的一部分,其中每个对应的节点g1、g2、g3、g4具有四个边。g中的边像素对应的节点可以具有三个边(例如,连接到水平和垂直相邻的节点)、五个边(例如,连接到水平、垂直和对角相邻的节点)或其他。g中的角像素对应的节点可能有两个边(例如,连接到水平和垂直相邻的节点)、三个边(例如,连接到水平、垂直和对角相邻的节点)或其他。
此外,稀疏高度图o中的每个像素可以被认为是致密高度图g中的对应像素的噪声观察。因此,稀疏高度图o中的每个像素可以用具有连接到来自致密高度图g的对应节点(表示对应像素)的边的节点来建模。图4示出了无向图的一部分,其中节点o1、o2、o3、o4(表示稀疏高度图o中的像素)连接到节点g1、g2、g3、g4(表示致密高度图g中的像素)。
换句话说,在一些实施例中,可以从期望的视角(例如,自上而下)观察要建模的期望表面并划分为2D栅格,并且可以用3D栅格形成具有两层节点的无向图,每一层对于2D栅格中的每个单元或交点都有一个节点。底层可能对应于地面实况(例如,致密高度图g),而顶层可能对应于噪声观察(稀疏高度图o)。请注意,对应于噪声观察的层可能包括2D栅格中每个单元或交点的节点,即使噪声观察可能是稀疏的。因此,与稀疏高度图o中的像素对应的一些节点可能没有相应的观察值。
在使用马尔可夫随机场(例如,无向图)对稀疏高度图o和致密高度图g之间的关系进行建模之后,模型中的每个节点可以被认为是随机变量,使得所有随机变量都的联合概率分布可以写成:
其中ψ(gi,gj)是成对势项,表示g中相邻像素之间的高度关系,φ(gi,oi)是一元势项,表示真实高度gi和观察到的噪声高度oi之间的关系,Z是确保分量分布总和为1的归一化常数。
在一些实施例中,为了表示g中相邻像素之间的特殊依赖关系,成对势项可以采用以下形式:
ψ(gi,gj)=exp(-wij(gi-gj)2), (等式2)
其中wij指定对应于相邻像素的节点(gi,gj)之间的权重,如下面更详细讨论的。为了表示被观察像素的贡献,可以假设o是g的噪声版本:
oi=gi+噪声,如果观察到像素i。 (等式3)
因此,在一些实施例中,一元势项可以给出为:
φ(gi,oi)=exp(-ci(gi-oi)2, (等式4)
其中ci指定像素i的权重,如果未观察到像素i,则ci可以设置为0。通常,可以为wij和ci选择任何合适的权重,例如,以更加强调成对势项(例如,强调相邻像素之间的关系)或一元势项(例如,如果对观察值具有相对更高的置信度)。在一些实施例中,可以为对所有对wij选择共同权重,可以为对应于被观察像素的每个ci选择共同权重,可以为每个权重选择超参数以形成wij和ci之间的期望比率,和/或其他。
利用联合概率分布P(g,o)和稀疏高度图o的一组观测值(或其他稀疏检测数据110),马尔可夫随机场表面估计器310可以使用任何已知的MAP推理算法,例如迭代条件模式、高斯信念传播或其他算法,对致密高度图g(或其他致密检测数据120)中的每个像素预测一个值(例如,高度估计)。通常,马尔可夫随机场表面估计器310可以从3D表面结构的稀疏表示o(例如,噪声和部分观察)估计3D表面结构的致密表示g。结果可能是道路的3D表面结构的表示,例如2D高度图,它可以转换为3D点云(例如,在3D世界坐标中)。在操作中,例如,随着如图17A-图17D中的车辆移动通过3D环境,马尔可夫随机场表面估计器310可以重复地对稀疏检测数据110的连续实例(例如,从在由一些指定的内部分隔的连续时间片期间捕获的传感器数据导出)进行操作以预测致密检测数据120的连续实例(例如,道路的3D表面结构的相应部分的连续表示)。
附加地或替代地,深度学习模型表面估计器320可以致密化3D表面结构的表示。例如,深度学习模型表面估计器320可以通过使用一个或更多个深度学习模型从稀疏检测数据110推理致密检测数据120(例如,致密2D自上而下高度图g)的值来致密化稀疏检测数据110(例如,稀疏2D自上而下高度图o)。因此,深度学习模型表面估计器320可以学习稀疏检测数据110(例如,稀疏和噪声观察的表示,例如3D点云的投影图像)和致密检测数据120(例如,3D表面结构的更致密表示,例如致密的3D点云的投影图像)之间的关系。
图5是说明根据本公开的一些实施例的深度学习模型表面估计器320的示例实现的数据流程图。在高层次上,深度学习模型表面估计器320可以包括预处理器510、被配置为预测致密检测数据120的值的一个或更多个深度学习模型535,以及后处理器575。后处理器510可以将稀疏检测数据110编码成深度学习模型535支持的输入数据530,并且输入数据530可以被馈送到深度学习模型535中以预测回归数据570和/或置信度数据580。在一些实施例中,由深度学习模型535预测的回归数据570和/或置信度数据580可以用作致密检测数据120。在一些实施例中,预处理器510可以包括从输入数据530中去除偏差的归一化器520,在这种情况下,后处理器575可以将偏差重新引入由深度学习模型535预测的回归数据570中,以生成致密检测数据120的至少一部分。
在一些实施例中,预处理器510包括将稀疏检测数据110编码成深度学习模型535支持的表示的编码器515。作为非限制性示例,在稀疏检测数据110包括稀疏3D点云的一些实施例中,编码器515可以投影稀疏3D点云以形成稀疏投影图像(例如,自上而下的高度图)。在某些情况下(例如,没有归一化器520),得到的稀疏投影图像可以用作输入数据530并馈送到深度学习模型535以预测回归数据570(例如,致密投影图像,例如作为自上而下的高度图)和/或置信度数据580。在一些情况下,由深度学习模型535预测的回归数据570和/或置信度数据580可以用作致密检测数据120。
在一些情况下,稀疏检测数据110和/或编码的稀疏检测数据(例如,稀疏投影图像)可以包括偏差。因此,在一些实施例中,预处理器510可以包括归一化器520,其去除偏差或以其他方式归一化稀疏检测数据110和/或编码的稀疏检测数据。例如,在稀疏检测数据110包括稀疏3D点云并且编码器515投影稀疏3D点云以形成2D高度图的一些实施例中,2D高度图可以存储高度值,该高度值包括对应于捕获图像的相机的高度的偏差,二维高度图是从该图像导出的。因此,在一些实施例中,归一化器520计算2D高度图中的高度值(例如,期望表面的)的均值高度,并从所有高度值(例如,期望表面的)中减去均值高度,以消除偏差。得到的2D高度图(或其他归一化、编码的稀疏检测数据)可以用作输入数据530并馈送到深度学习模型535,以预测回归数据570(例如,致密的2D高度图)和/或置信度数据580,并且后处理器575可以将偏差重新引入预测的输出(例如,通过将偏差添加到回归数据570的一些或所有预测值)。
现在转向深度学习模型535,在一些实施例中,深度学习模型535可以使用诸如卷积神经网络(CNN)的DNN来实现。尽管描述了某些实施例,其中深度学习模型535是使用神经网络,特别是CNN来实现的,但这并不是限制性的。例如但不限于,深度学习模型535可以附加地或替代地包括任何类型的机器学习模型,例如使用线性回归、逻辑回归、决策树、支持向量机(SVM)、朴素贝叶斯、k最近邻(Knn)、K均值聚类、随机森林、降维算法、梯度提升算法、马尔可夫随机场、神经网络(例如,自动编码器、卷积、循环、感知器、长/短期记忆(LSTM)、Hopfield、Boltzmann、深度信念、反卷积、生成对抗、液态机器等)和/或其他类型的机器学习模型的机器学习模型。
在一些实施例中,深度学习模型535可以包括具有一个或更多个头(或至少部分离散的层流)的公共主干(或层流),用于基于输入数据530预测不同的输出。例如,深度学习模型535可以包括但不限于特征提取器(例如,DNN、编码器/解码器等),包括卷积层、池化层和/或其他层类型,其中,将特征提取器的输出作为输入提供给预测不同输出的多个头中的每一个。在一些示例中,不同的头可以接收并行输入,因此可以从相似的输入数据产生不同的输出。在图5的示例中,深度学习模型535被示为具有从输入数据106中提取特征并且对提取的特征执行回归的示例架构。更具体地,深度学习模型535可以包括编码器/解码器540、回归头545和/或置信度头550。
编码器/解码器540可以使用具有跳跃连接(例如,类似于ResNet、特征金字塔网络、U-Net等)的编码器和解码器组件来实现。例如,编码器/解码器540可以接受输入数据530(例如,投影图像、2D高度图)并应用各种卷积、池化和/或其他类型的操作来将特征提取到一些潜在空间中。在图5中,编码器/解码器540被示为具有涉及(从左到右)编码(收缩)路径和解码(扩展)路径的示例实现。沿着收缩路径,每个分辨率可能包括任意数量的层(例如,卷积、扩张卷积、初始块等)和下采样操作(例如,最大池化)。沿着扩展路径,每个分辨率可以包括任意数量的层(例如,反卷积、上采样后跟卷积和/或其他类型的操作)。在扩展路径中,可以对特征图的每个分辨率进行上采样并与来自收缩路径的相同分辨率的特征图级联(例如,在深度维度上)。在该示例中,收缩路径和扩展路径的相应分辨率可以通过跳跃连接而连接,跳跃连接可以用于添加或级联来自相应分辨率的特征图。这样,编码器/解码器540可以将特征提取到一些潜在空间中,并且提取的特征的表示可以输入到回归头545和/或置信度头550中。
回归头545可以包括任意数量的层(例如,卷积、池化、诸如softmax之类的分类器,和/或其他类型的操作等),其从编码器/解码器540的输出预测关于感兴趣的3D表面结构的特定类型的信息(例如,每个像素的高度值)。在一些实施例中,由回归头545预测的回归数据570可以采用2D高度图的形式,其中每个像素存储对由像素表示的3D表面部分的高度进行回归的浮点数。
置信度头550可以包括任意数量的层(例如,卷积、池化、诸如softmax之类的分类器和/或其他类型的操作等),这些层从编码器/解码器540的输出预测回归数据570的置信度数据580。例如,在回归数据570采用2D高度图∈Nmxn的形式的一些实施例中,置信度数据580可以采用具有存储浮点数的像素的对应置信度图∈Nmxn的形式,该浮点数对2D高度图中相应预测值的置信度的表示进行回归。
因此,图5示出了预测回归数据570(例如,2D高度图)和置信度数据580的深度学习模型535的实施例。然而,可以实施任何数量的变化。例如,在一些实施例中,深度学习模型535可以用对应于回归头545的单个输出通道来实现。在另一个示例中,在一些实施例中,深度学习模型535可以包括一个或更多个更多循环层(例如,门控循环单元、长短期记忆)以利用时间信息。在一些情况下,包括一个或更多个循环层可以允许深度学习模型535利用来自先前时间片的信息,从而随着时间产生更好的预测和更稳定的致密化结果。在又一个示例中,深度学习模型535可以用接受不同输入的多个输入头来实现,例如具有透视图的输入图像(例如RGB图像)和具有另一个视图(例如,自上而下的高度图)的投影图像。图6图示了这样的示例。
更具体地说,图6是说明图3的具有包括多个输入头的深度学习模型的深度学习模型表面估计器320的示例实现的数据流程图。一般而言,图5和图6中所示的深度学习模型表面估计器320的实现方式具有相似的组件,除了图6中所示的实施方式扩展为包括图像编码器610的深度学习模型535。因此,尽管图5中所示的深度学习模型535的实现方式包括接受输入数据530(例如,3D点云的投影)的单个输入头(例如,编码器/解码器540的编码器部分),图6中所示的深度学习模型535的实现方式另外将图像数据102(例如,RBG帧)接收到第二输入头(例如,图像编码器610)中。通常,图像编码器610(和/或任何其他输入头)可以包括任意数量的层(例如,卷积、池化和/或其他类型的操作)以将特征提取到某个潜在空间中,并且提取的特征可以与从编码器/解码器540的编码器部分提取的特征(和/或从其他输入头提取的特征)组合(例如,级联)。因此,在一些实施例中,例如图6所示的实施例,深度学习模型535可以从观察到的表面结构的两个不同视图(例如,自上而下和透视、3D点云空间和2D图像空间等)中学习。
因此并返回到图3,图3的深度学习模型表面估计器320可以使用用于组成深度学习模型(例如,图5或图6的深度学习模型535)和/或一些其他机器学习模型的各种架构实现以从稀疏检测数据110预测致密检测数据120。结果可以是道路的3D表面结构的表示,例如2D高度图,其可以被转换成3D点云(例如,在3D世界坐标中)。在操作中,例如,随着如图17A-图17D的车辆1700移动通过3D环境,深度学习模型表面估计器320可以对稀疏检测数据110的连续实例(例如,从在由一些指定的内部分隔的连续时间片期间捕获的传感器数据导出)重复操作以预测致密检测数据120的连续实例(例如,道路的3D表面结构的相应部分的连续表示)。
返回图1,一旦检测到的表面的3D结构被确定,不在3D世界坐标中的位置值可以被转换为3D世界坐标,与识别检测到的表面(例如,道路)的相应类别标签相关联,和/或者可以被提供以供图17A-图17D的车辆1700用于执行一个或更多个操作。例如,致密检测数据120(例如,3D点云、投影图像、对应标签)可以由车辆1700的控制组件使用,例如在图17A-图17D中的车辆1700的一个或更多个上组件(SoC 1704、CPU 1718、GPU 1720等)上执行的自主驾驶软件堆栈122。例如,车辆1700可以使用该信息(例如,障碍物的实例)来导航、计划或以其他方式在环境内执行一个或更多个操作(例如,避开障碍物或突起、车道保持、车道改变、合并、分裂、调整自我对象或自我行动者的悬架系统以匹配当前的路面,基于迫近表面坡度应用早期加速或减速、地图绘制等)。
在一些实施例中,致密检测数据120可以由自主驾驶软件堆栈122(在本文中替代地称为“驾驶堆栈122”)的一个或更多个层使用。驾驶堆栈122可以包括传感器管理器(未示出)、感知组件(例如,对应于驾驶堆栈122的感知层)、世界模型管理器126、规划组件128(例如,对应于到驾驶堆栈122的计划层)、控制组件130(例如,对应于驾驶堆栈122的控制层)、避障组件132(例如,对应于驾驶堆栈122的障碍物或碰撞避免层)、致动组件134(例如,对应于驾驶堆栈122的致动层)和/或对应于驾驶堆栈122的附加和/或替代层的其他组件。在一些示例中,过程100可以由感知组件执行,该感知组件可以将驾驶堆栈122的层馈送到世界模型管理器,如本文更详细描述的。
传感器管理器可以管理传感器数据和/或从车辆1700的传感器抽象传感器数据。例如,如图17C所示,传感器数据可以由RADAR传感器1760生成(例如,永久地、间隔地、基于某些条件)。传感器管理器可以从传感器接收不同格式的传感器数据(例如,相同类型的传感器可以输出不同格式的传感器数据),并且可以配置为将不同格式转换为统一格式(例如,对于相同类型的每个传感器)。结果,自主车辆1700的其他组件、特征和/或功能可以使用统一格式,从而简化传感器数据的处理。在一些示例中,传感器管理器可以使用统一格式将控制应用回车辆1700的传感器,例如设置帧速率或执行增益控制。传感器管理器还可以用时间戳更新与传感器数据相对应的传感器数据包或通信,以帮助通知自主车辆控制系统的各种组件、特征和功能对传感器数据的处理。
世界模型管理器126可用于生成、更新和/或定义世界模型。世界模型管理器126可以使用由驾驶堆栈122的感知组件生成和接收的信息(例如,检测到的障碍物的位置)。感知组件可以包括障碍感知器、路径感知器、等待感知器、地图感知器和/或其他感知组件。例如,世界模型可以至少部分地基于障碍物、路径和等待条件的可供性来定义,其可以由障碍物感知器、路径感知器、等待感知器和/或地图感知器实时或接近实时地感知。世界模型管理器126可以基于来自障碍物感知器、路径感知器、等待感知器、地图感知器和/或自主车辆控制系统的其他组件的新生成和/或接收的输入(例如,数据)不断更新世界模型。
世界模型可用于帮助通知驾驶堆栈122的规划组件128、控制组件130、避障组件132和/或致动组件134。障碍物感知器可以执行障碍物感知,其可以基于车辆1700被允许驾驶或能够驾驶的位置(例如,基于通过避开环境中检测到的障碍物和/或检测到的路面中的突起所定义的可驾驶路径或其他可导航路径的位置),以及车辆1700可以在不与车辆1700的传感器感测到的障碍物(例如,诸如结构、实体、车辆等的物体)碰撞的情况下行驶多快。
路径感知器可以执行路径感知,例如通过感知在特定情况下可用的标称路径。在一些示例中,路径感知器可以进一步考虑路径感知的车道改变。车道图可以表示车辆1700可用的一个或更多个路径,并且可以像高速公路入口匝道上的单个路径一样简单。在一些示例中,车道图可以包括到期望车道的路径和/或可以指示沿着高速公路(或其他道路类型)的可用变化,或者可以包括附近的车道、车道变化、分叉、转弯、三叶草交汇处、合并和/或其他信息。在一些实施例中,路径感知器可以考虑致密检测数据120。例如,路径感知器可以评估重建的3D路面以识别突起并包括避开突起的路径。
等待感知器可负责确定作为规则、惯例和/或实际考虑的结果对车辆1700的约束。例如,规则、惯例和/或实际考虑可能与3D路面、交通信号灯、多路停靠点、让路、合并、收费站、大门、警察或其他应急人员、道路工作人员、停止的公共汽车或其他车辆、单向桥仲裁、渡轮入口等相关。因此,可以利用等待感知器来识别潜在障碍并实施一个或更多个控制(例如,减速、停止等),这可能仅依靠障碍感知器是不可能的。在一些实施例中,等待感知器可以考虑致密检测数据120。例如,等待感知器可以评估重建的3D路面以识别迫近的表面坡度并确定应用和/或应用早期加速或减速以适应迫近的表面坡度。附加地或替代地,等待感知器可以评估重建的3D路面以识别正迫近的路面的一部分并确定调整和/或适应车辆1700的悬架系统,使得一旦车辆1700到达道路的相应部分,悬架系统与识别的路面相匹配。
地图感知器可以包括辨别行为的机制,并且在一些示例中,用于确定在特定场所应用什么约定的具体示例。例如,地图感知器可以从表示先前驾驶或旅行的数据中确定在某个交叉路口在某些时间之间没有U形转弯,显示车道方向性的电子标志根据一天中的时间而变化,两个靠近的红绿灯(例如,几乎没有相互偏移)与不同的道路相关联,在罗德岛,等待在红绿灯处左转的第一辆车通过在绿灯变绿时在迎面而来的交通之前转弯而违规,和/或其他信息。地图感知器可以向车辆1700通知静态或静止的基础设施对象和障碍物。地图感知器还可以为等待感知器和/或路径感知器生成信息,例如,例如确定交叉路口处的哪个灯必须为绿色以使车辆1700采用特定路径。
在一些示例中,来自地图感知器的信息可以被发送、传输和/或提供给服务器(例如,图17D的地图管理器1778),并且来自服务器的信息可以被发送、传输和/或提供给地图感知器和/或车辆1700的定位管理器。地图管理器可以包括云映射应用程序,该应用程序位于远离车辆1700的地方并且可由车辆1700通过一个或更多个网络访问。例如,车辆1700的地图感知器和/或定位管理器可以与地图管理器和/或服务器的一个或更多个其他组件或特征通信,以向地图感知器和/或定位管理器通知车辆1700的过去和现在的驾驶或行程,以及其他车辆的过去和现在的驾驶或行程。地图管理器可以提供可以由定位管理器基于车辆1700的特定位置定位的地图绘制输出(例如,地图数据),并且本地化的地图绘制输出可以被世界模型管理器126用来生成和/或更新世界模型。
规划组件128可以包括路线规划器、车道规划器、行为规划器和行为选择器,以及其他组件、特征和/或功能。路线规划器可以使用来自地图感知器、地图管理器和/或定位管理器的信息以及其他信息,以生成可以由GNSS航路点(例如,GPS航路点)、指示相对于车辆1700上的原点的坐标的3D世界坐标(例如、笛卡尔坐标、极坐标等)等组成的规划路径。航路点可以代表车辆1700到未来的特定距离,例如城市街区的数量、公里数、英尺数、英寸数、英里数等,其可用作车道规划器的目标。
车道规划器可以使用车道图(例如,来自路径感知器的车道图)、车道图内的对象姿势(例如,根据定位管理器)和/或来自路线规划器作为输入的进入未来的远处目标点和方向。目标点和方向可以映射到车道图中的最佳匹配可驾驶点和方向(例如,基于GNSS和/或罗盘方向)。然后可以从车道图中的当前边在车道图上执行图搜索算法以找到到目标点的最短路径。
行为规划器可以确定车辆1700的基本行为的可行性,例如留在车道上或向左或向右改变车道,使得可行的行为可以与从车道规划器输出的最期望的行为相匹配。例如,如果期望的行为被确定为不安全和/或不可用,则可以改为选择默认行为(例如,当期望的行为或改变车道不安全时,默认行为可以是留在车道上)。
控制组件130可以尽可能接近地并在车辆1700的能力所及内遵循从规划组件128的行为选择器(例如,基于致密检测数据120)接收的轨迹或路径(横向和纵向)。控制组件130可以使用紧密反馈来处理未建模的计划外事件或行为和/或导致与理想情况不一致的任何事情(例如,意外延迟)。在一些示例中,控制组件130可以使用将控制作为输入变量的前向预测模型,并且产生可以与期望状态进行比较的预测(例如,与由规划组件128请求的期望横向和纵向路径进行比较)。可以确定使差异最小化的控制。
尽管规划组件128和控制组件130是分开示出的,但这不旨在进行限制。例如,在一些实施例中,规划组件128和控制组件130之间的划分可能没有被精确定义。因此,至少一些归属于规划组件128的组件、特征和/或功能可以与控制组件130相关联,反之亦然。这也适用于驾驶堆栈122的任何单独示出的组件。
避障组件132可以帮助自主车辆1700避免与对象(例如,移动和静止对象)的碰撞。避障组件132可以包括在避障的“原始级别”的计算机制,并且可以充当车辆1700的“生存大脑”或“爬行动物大脑”。在一些示例中,避障组件132可以独立于需要遵守交通规则和礼貌驾驶的车辆1700的组件、特征和/或功能来使用。在这样的示例中,避障组件可以忽略交通法规、道路规则和礼貌驾驶规范,以确保车辆1700和任何对象之间不会发生碰撞。因此,避障层可以是与道路层的规则分开的层,并且避障层可以确保车辆1700仅从避障的角度执行安全动作。另一方面,道路层的规则可以确保车辆遵守交通法规和惯例,并且遵守合法和常规的通行权(如本文所述)。
在一些示例中,可行驶或其他可导航路径和/或致密检测数据120可以由避障组件132用于确定要采取的控制或动作。例如,可行驶路径可以向避障组件132提供车辆1700可以在不撞到任何对象、突起、结构和/或类似物的情况下操纵的地方,或者至少不存在静态结构的地方的指示。
在非限制性实施例中,避障组件132可以实现为车辆1700的单独的离散特征。例如,避障组件132可以单独操作规划层、控制层、致动层和/或驾驶堆栈122的其他层(例如,与规划层、控制层、致动层和/或驾驶堆栈122的其他层并行、在它们之前和/或在它们之后)。
因此,车辆1700可以使用该信息(例如,作为路径的边缘或轨道)来导航、规划或以其他方式在环境中执行一个或更多个操作(例如,车道保持、车道改变、合并、分割、等等)。
现在参考图7至图9,这里描述的方法700-900的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,可以通过处理器执行存储在存储器中的指令来执行各种功能。该方法还可以体现为存储在计算机存储介质上的计算机可用指令。这些方法可以由独立应用程序、服务或托管服务(独立或与另一个托管服务组合)或另一个产品的插件提供,仅举几例。此外,作为示例,关于图1的表面重建管线100描述了方法700-900。然而,这些方法可以附加地或替代地由任何一个系统或系统的任何组合执行,包括但不限于本文所述的那些。
图7是示出根据本公开的一些实施例的用于在捕获会话期间生成三维(3D)表面结构的表示的方法700的流程图。在框B702,方法700包括至少部分地基于在使用环境中的自我对象的一个或更多个相机的捕获会话期间生成的图像数据,生成环境的组件的三维(3D)表面结构的第一表示。例如,关于图1,当自我对象在环境中导航时,可以使用自我对象的一个或更多个相机101来捕捉图像数据102,并且3D结构估计器105可以处理图像数据102以估计环境的特定组件的3D结构,例如3D路面或其他环境部分。可以使用任何合适的3D结构估计技术,例如运动结构(SfM)、立体视觉和/或一些其他3D表面结构估计技术。在一些实施例中,分割掩码或其他分类数据可用于从估计的3D结构中选择感兴趣环境的组件上的点。3D结构的所得表示可以包括3D点云、投影图像或一些其他表示。
在框B704,方法700包括至少部分地基于致密化3D表面结构的第一表示来生成3D表面结构的第二表示。例如,关于图1,检测致密器115可以致密化稀疏检测数据110以生成3D表面结构的更致密表示(例如,致密检测数据120)。通常,稀疏检测数据110可以采取任何合适的形式,例如稀疏3D点云或稀疏3D点云的投影图像(例如,2D自上而下的高度图)。在一些实施例中,检测致密器115可以使用一种或更多种机器学习模型来致密化稀疏检测数据110,例如马尔可夫随机场(例如,经由图3的马尔可夫随机场表面估计器310)和/或一种或更多种深度神经网络(DNN)(例如,经由图3的深度学习模型表面估计器320)。3D表面结构的所得表示(例如,致密检测数据120)可以采用任何合适的形式,例如2D高度图和/或3D点云。
在框B706,方法700包括在捕获会话期间将3D表面结构的第二表示提供给自我对象的控制组件。例如,图1中的致密检测数据120或3D表面结构的其他表示可以提供给自我对象的控制组件(例如,图1的软件堆栈122、图17A-图17D的自主车辆1700的组件,例如控制器1736、ADAS系统1738和/或SOC 1704)并由其使用,以帮助自我对象在环境中执行一个或更多个操作,例如路径规划、障碍物或突起避开、调整自我对象或自我行动者的悬架系统以匹配当前路面,基于迫近的表面坡度应用早期加速或减速、地图绘制和/或其他应用。
图8是示出根据本公开的一些实施例的用于至少基于马尔可夫随机场来生成3D表面结构的致密表示的方法800的流程图。在框B802,方法800包括使用来自环境中自我对象的一个或更多个相机的图像数据来生成环境的组件的三维(3D)表面结构的第一表示。例如,关于图1,当自我对象在环境中导航时,可以使用自我对象的一个或更多个相机101来捕捉图像数据102,并且3D结构估计器105可以处理图像数据102以估计感兴趣的特定表面的3D结构。
在框B804,方法800包括至少基于对第一表示和致密表示之间的关系建模的马尔可夫随机场来生成3D表面结构的致密表示。例如,图3的马尔可夫随机场表面估计器310在给定马尔可夫随机场和第一表示(例如,稀疏检测数据110)的情况下,可以执行最大后验(MAP)推理来估计最可能的致密表示(例如,致密检测数据120)。
在框B806,方法800包括将3D表面结构的致密表示提供给自我对象的控制组件。例如,图1中的致密检测数据120或3D表面结构的其他表示可以提供给自我对象的控制组件(例如,图1的软件堆栈122、图17A-图17D的自主车辆1700的组件,例如控制器1736、ADAS系统1738和/或SOC 1704)并由其使用,以帮助自我对象在环境中执行一个或更多个操作。
图9是示出根据本公开的一些实施例的用于至少部分地基于使用一个或更多个神经网络估计的3D路面结构来控制车辆的方法900的流程图。在框B902,方法900包括在车辆在环境中操作期间接收使用车辆的一个或更多个相机生成的图像数据。例如,关于图1,当车辆在环境中导航时,车辆的一个或更多个相机101可用于捕捉图像数据102。
在框B904,方法900包括至少部分地基于框B906和B908,在车辆在环境中操作期间虚拟地重建环境中的路面。在框B906,方法900包括使用图像数据生成路面的第一估计3D表面结构。例如,关于图1,3D结构估计器105可以处理图像数据102以估计特定感兴趣表面的3D结构。在框B908,方法900包括至少部分地基于将第一估计3D表面结构应用于一个或更多个神经网络(NN)来生成道路表面的致密估计3D表面结构。例如,图3或图5的深度学习模型表面估计器320可以通过使用一个或更多个NN(例如一个或更多个DNN)从稀疏检测数据110推理致密检测数据120(例如,致密2D自上而下高度图)的值来致密化稀疏检测数据110(例如,稀疏2D自上而下高度图)。通过非限制性示例的方式,在稀疏检测数据110包括稀疏3D点云的一些非限制性示例中,图5的编码器515可以投影稀疏3D点云以形成稀疏投影图像(例如,自上而下的高度图),并且稀疏投影图像可以被馈送到深度学习模型535以预测回归数据570(例如,致密投影图像,例如自上而下的高度图)和/或置信度数据580。
在框B910,方法900包括至少部分地基于表示致密的估计3D表面结构的数据来控制车辆。例如,图1中的致密检测数据120或致密的估计3D表面结构的其他表示可以提供给自我对象的控制组件(例如,图1的软件堆栈122、图17A-图17D的自主车辆1700的组件,例如控制器1736、ADAS系统1738和/或SOC 1704)并且由其使用,以帮助自我对象在环境中执行一个或更多个操作。
生成训练数据和训练3D表面重建系统的深度学习模型
为了支持训练用于3D表面重建系统的深度学习模型(例如,图5或图6的深度学习模型535),训练数据集(例如,包括稀疏输入数据和/或3D表面结构的地面实况表示)可以以多种方式生成、编译和/或选择。通常,训练数据的类型可能取决于要训练的深度学习模型的架构。例如,某些实现可能需要输入训练数据,其包括3D表面结构的稀疏表示(例如,稀疏高度图)和/或来自某个其他视角的图像数据(例如,透视图的图像),以及地面实况训练数据,地面实况训练数据包括3D表面结构的致密表示(例如,致密高度图)和/或分割掩码(例如,识别所需的表面,例如道路或其他可驾驶空间)。在一些实施例中,可以收集真实世界数据和/或虚拟数据并将其用于导出训练数据。作为非限制性示例,训练数据可以通过渲染虚拟传感器数据、分割掩码和深度图的帧来生成;3D路面的参数化数学建模;从单个LiDAR传感器收集和注释真实传感器数据;和/或收集和注释从多个LiDAR传感器累积的真实传感器数据。
从模拟环境生成训练数据。在一些实施例中,可以通过渲染或生成表示模拟环境的虚拟传感器数据、分割掩码和/或深度图的帧来生成训练数据。例如,可以运行模拟以模拟虚拟世界或环境(例如,模拟环境),并且可以在模拟环境内模拟虚拟车辆或其他对象。虚拟车辆或对象可以包括任意数量的传感器(例如,虚拟或模拟传感器),并且可以针对传感器模拟虚拟传感器数据。因此,虚拟传感器数据的帧(例如,对应于虚拟车辆的虚拟相机的视野的虚拟图像数据),以及相应的分割掩码和深度图,可以基于模拟环境生成。虚拟传感器数据可用于生成(或用作)输入训练数据,并且分割掩码和/或深度图可用于生成(或用作)地面实况训练数据。
图10是示出根据本公开的一些实施例的使用模拟环境的示例训练数据生成管线1000的数据流程图。训练数据生成管线1000包括模拟器组件1010,其可以生成模拟环境,以及虚拟传感器数据的帧1020、分割掩码1030和/或表示模拟环境的深度图1040。3D结构估计器1050(例如,其可以对应于图1的3D结构估计器105)可以从帧1020(例如,渲染图像)生成感兴趣表面的3D结构的稀疏表示(例如,稀疏点云,投影图像),并且3D结构的稀疏表示和/或帧1020(例如,渲染图像)可以用作输入训练数据1080。为了生成地面实况训练数据1090,3D点云生成器1060可以相对于所生成的深度图1040的范围值使用虚拟相机的已知位置和方位,将范围值从深度图1040解投影到3D世界坐标中,并且3D点云生成器1060可以使用分割掩码1030来滤除感兴趣表面(例如,路面)上的3D点。由于生成的3D点云可能是稀疏的,因此后处理器1070可用于内插缺失值并生成感兴趣表面的3D结构的致密表示(例如,点云、投影图像),并且3D结构和/或分割掩码1030的致密表示可以用作地面实况训练数据1090。
模拟器组件1010可以包括模拟虚拟世界或环境(例如,模拟环境)的模拟系统。例如,模拟系统可以生成全局模拟,全局模拟生成可以包括人工智能(AI)车辆或其他对象(例如,行人、动物等)、硬件在环(HIL)车辆或其他对象、软件在环(SIL)车辆或其他对象,和/或人在环(PIL)车辆或其他对象的模拟环境。可以使用光栅化、光线追踪、使用诸如生成对抗网络(GAN)等DNN、另一种渲染技术和/或它们的组合来生成模拟环境。模拟环境可以包括驾驶环境的特征,例如道路、桥梁、隧道、路牌、停车灯、人行横道、建筑物、树木和树叶、太阳、月亮、反射、阴影等,以努力模拟真实世界的环境。全局模拟可以在引擎(例如,游戏引擎)或其他软件开发环境中维护,该环境可以包括渲染引擎(例如,用于2D和/或3D图形)、物理引擎(例如,用于碰撞检测、碰撞响应等)、声音、脚本、动画、人工智能、网络、流媒体、存储器管理、线程、本地化支持、场景图、过场动画和/或其他功能。在2020年3月13日提交的题为“使用生成机器学习方法的传感器仿真和学习传感器模型(Sensor Simulation and LearningSensor Models with Generative Machine Learning Methods)”的美国非临时专利申请No.16/818,551中描述了示例仿真系统和示例全局仿真,其内容通过引用将其全部并入本文。
在一些实施例中,模拟器组件1010可以生成表示模拟环境的虚拟传感器数据(例如,图像数据)、分割掩码1030和/或深度图1040的帧1020。例如,模拟器组件1010可以从布置在模拟环境中的虚拟车辆或其他对象上的虚拟相机的角度来渲染模拟环境的图像。在一些实施例中,模拟器组件1010可以使用模拟环境中的模拟感兴趣表面(例如,道路表面)的已知坐标来生成对应于虚拟传感器数据的帧1020的分割掩码1030和/或深度图1040(例如,每像素深度图)。虚拟传感器数据的帧1020、分割掩码1030和/或深度图1040(统称为模拟或虚拟数据)可以被分组在一起,并且模拟器组件1010可以生成表示模拟环境中连续时间片的模拟或虚拟数据,例如,当虚拟车辆或其他对象在模拟环境中导航时。因此,模拟器组件1010可以生成虚拟传感器数据的帧1020、分割掩码1030和/或表示现实(例如,驾驶)场景的深度图1040。
对于任何给定的帧1020,3D结构估计器1050可以从帧1020估计感兴趣的表面(例如,路面)的3D表面结构。例如,3D结构可以使用在此关于图1的3D结构估计器105描述的技术来估计(例如,使用运动结构、立体视觉、异常值去除和/或表面点选择)。在一些实施例中,3D结构估计器1050可以使用分割掩码1030从估计的3D结构中选择属于由分割掩码表示的类的点(例如,属于感兴趣表面的点,例如3D路面)。在一些实施例中,可以投影得到的点以形成投影图像(例如,2D高度图)。结果可能是感兴趣表面的3D结构的稀疏表示(例如,稀疏点云、稀疏投影图像)。3D结构和/或帧1020(例如,渲染图像)的稀疏表示可以被指定为输入训练数据1080并且包括在训练数据集中。
在一些实施例中,为了生成对应的地面实况训练数据1090,3D点云生成器1060可以使用深度图1040生成3D点云或3D结构的其他表示。例如,3D点云生成器1060可以通过使用虚拟相机相对于生成深度图1040的范围值的位置和方位将范围值从深度图1040解投影到模拟环境的3D世界坐标中来生成3D点,并且3D点云生成器1060可以使用分割掩码1030选择感兴趣表面上的3D点(例如,通过选择投影到表示感兴趣表面的分割掩码1030的一部分上的3D点)。附加地或替代地,3D点云生成器1060可以使用分割掩码1030从深度图1040中为感兴趣的表面上的点选择范围值(例如,通过将分割掩码1030覆盖在深度图1040上),并且3D点云生成器1060可以将选择的范围值解投影到模拟环境中以生成感兴趣表面上的3D点。
由于得到的3D点(例如,3D点云)可能是稀疏的,可使用后处理器1070来使用三角测量算法对缺失值进行插值。例如,后处理器1070可以在2D和/或3D中执行Delaunay三角测量。在涉及2D三角测量的示例实施例中,后处理器1070可以将3D点投影在感兴趣表面上以形成投影图像(例如,2D高度图)并在投影图像中执行Delaunay三角测量以生成三角形,并且后处理器1070可以从三角形中采样点以生成用于地面实况致密投影图像(例如地面实况2D高度图)的所需数量的点。在涉及3D三角测量的示例实施例中,后处理器1070可以执行3DDelaunay三角测量以计算围绕感兴趣表面上的3D点的三角形的表面网格,并从表面网格的三角形中采样3D点以生成地面实况致密投影图像(例如,地面实况2D高度图)所需数量的点。例如,后处理器1070可以从表面网格中采样3D点并投影采样的3D点以形成地面实况投影图像(例如,地面实况2D高度图)。地面实况投影图像中不代表采样点的像素可以设置为零。这样,感兴趣表面和/或分割掩码1030上的3D点的致密投影图像或其他表示可以被指定为地面实况训练数据1090,与对应的输入训练数据1090配对,并且包括在训练数据集中。
使用参数建模生成合成训练数据。在用于生成训练数据的另一示例技术中,可以使用诸如3D路面的期望表面的参数数学建模来生成合成训练数据。例如,可以通过对具有不同参数的3D路面进行建模来模拟道路方向和侧面坡度的变化,从而生成各种合成3D路面。作为非限制性示例,可以通过在合成3D表面上对3D曲线建模并将3D曲线扩展到3D表面来创建合成3D表面。可以对得到的合成3D表面(或其分量曲线)进行采样,并且可以投影采样点以形成合成地面实况投影图像(例如,2D高度图)。为了生成相应的输入训练数据,可以生成表示在3D结构估计期间哪些像素可能保持未被观察到的已知模式,并将其应用于地面实况投影图像以模拟具有未观察值的对应稀疏投影图像。因此,可以生成合成稀疏输入投影图像和致密地面实况投影图像并将其包括在训练数据集中。
图11是根据本公开的一些实施例的期望表面的示例参数数学模型的图示。在图11所示的示例中,3D表面用纵向曲线l和横向曲线qj建模。在被建模的3D表面是3D路面的示例实施例中,定义纵向曲线l和横向曲线qj的参数方程的参数可以改变以模拟不同类型的3D路面。
作为非限制性示例,可以通过对3D曲线的纵向值、横向值和高度值进行采样来生成合成3D路面上的3D曲线。例如,可以对合成3D表面上的合成3D曲线的一组期望的纵向值[x0,…,xn]进行初始采样或以其他方式选择。对于示例路面,纵向值可以表示深度学习模型表面估计器的期望感知范围,例如0到300m。在一些实施例中,合成3D曲线的横向值可以计算为纵向值的二阶多项式x:y=a x2+bx+c。在涉及合成3D路面的实施例中,可以通过对多项式常数a、b和/或c的不同值进行采样来生成多个合成3D曲线,以针对不同的合成3D曲线模拟道路方向的不同变化(例如,曲线、转弯等)。在一些实施例中,合成3D曲线的高度值可以计算为傅立叶基的线性组合:
其中K是傅立叶基的数量,c是特定基数k的权重,f是特定基数k的频率。在涉及合成3D路面的实施例中,可以针对不同的合成3D曲线使用基的数量K、特定基数k的权重c和/或特定基数k的频率f的不同采样值计算不同的高度值,来模拟不同合成3D曲线的表面高度的不同变化。结果可以是由图11所示的示例中的曲线l表示的纵向3D曲线。
在一些实施例中,纵向3D曲线可以扩展到3D表面。例如,纵向3D曲线可以包括[1,...,n]中的j的任意数量的点{xj,yj,zj},并且纵向3D曲线上的任何给定点(例如,每个点)可以是扩展成相应的横向3D曲线,在图11所示的示例中由曲线qj表示。例如,可以定义参数α来表示合成3D表面(例如合成3D路面)和表面(例如地平面,z=0)之间的角度,并且α的不同值可以进行采样以模拟纵向3D曲线上的不同点处的不同侧向表面坡度和/或用于不同的合成3D曲线。对于纵向3D曲线l上的特定3D点pj={xj,yj,zj},3D点可以扩展为通过pj(在pj处垂直于曲线l)并具有相对于表面z=0的角度α的横向3D曲线qj。可以使用任何类型的横向3D曲线(例如,线性、多项式等),并且可以对任何给定的横向3D曲线qj进行m次采样,以将纵向3D曲线l上的相应的3D点pj={xj,yj,zj}扩展为一组3D点{xij,yij,zij},i=[1,...,m],其中可以采样不同的m值来模拟纵向3D曲线上不同点的不同道路宽度和/或用于不同的合成3D表面。可以对纵向3D曲线上的任何给定点(例如,每个点)重复该过程,以生成致密的3D点云,该点云可以被投影以形成地面实况投影图像(例如,地面实况2D高度图)。
为了生成相应的输入训练数据,可以生成表示哪些像素可能未被3D估计观察到的已知模式并将其应用于地面实况投影图像,以抵消像素值的子集(例如,将这些像素值设置为零),从而模拟未观察到的值。例如,假设地面实况高度图的大小为HxW。在此示例中,可以通过对真实世界数据执行3D估计来生成由大小为HxW的N个二进制图表示的模式。例如,一个或更多个车辆(例如,图17A-D的车辆1700)可以从真实世界(例如,物理)环境中的车辆的一个或更多个传感器(例如,相机)收集传感器数据(例如,图像数据)帧,如下面更详细的解释。可以从传感器数据的每个帧(如本文所述)估计期望表面(例如,3D路面)的3D表面结构,并且可以将所得的3D结构表示(例如,稀疏3D点云)投影以形成稀疏投影图像(例如,稀疏的2D高度图),其中可能包括观察值和未观察值。对于N个大小为HxW的稀疏投影图像中的每一个,可以生成一个对应的大小为HxW的二进制图来表示哪些像素被观察和哪些未被观察。例如,对应于观察值的二进制图的像素可以设置为1,对应于未观察值的像素可以设置为0。因此,可以生成二进制图的NxHxW模式以表示哪些像素可能保持未被3D估计观察。
对于每个合成地面实况投影图像,N个二进制映射之一可以被随机采样并应用于合成地面实况投影图像(例如,使用逐元素乘法)以生成对应的合成稀疏投影图像。因此,可以生成成对的合成输入和地面实况投影图像并将其添加到训练数据集中。
从真实世界的传感器数据生成训练数据。在一些实施例中,可以通过收集和注释真实世界的传感器数据来生成训练数据。例如,一个或更多个车辆可以从真实世界(例如,物理)环境中车辆的一个或更多个传感器(例如,相机和LiDAR传感器)收集传感器数据帧(例如,图像数据和LiDAR数据)。在一些实施例中,可以对LiDAR数据进行平滑处理、去除异常值、进行三角测量以插入缺失值、从多个LiDAR传感器累积、与相应的图像数据帧在时间和/或空间上对齐,并进行注释以识别感兴趣表面(例如,3D路面)上的3D点。所识别的3D点(例如,3D点云、投影图像)的表示可以被指定为地面实况训练数据。在一些实施例中,对象检测、自由空间估计和/或图像分割可以应用于图像数据帧以生成对应的分割掩码,其可以被指定为地面实况训练数据。图像数据的对应帧可经历3D估计,并且感兴趣表面的所得稀疏表示(例如,3D点云、投影图像)可以被指定为输入训练数据。例如,对应的稀疏投影图像、相机帧、致密投影图像和/或分割掩码可以被分组在一起并且包括在训练数据集中。
图12是示出根据本公开的一些实施例的使用收集的真实世界数据的示例地面实况生成管线1200的数据流程图。示例地面实况生成管线1200包括记录引擎1205、3D结构估计器1220、自由空间估计器1225、预处理器1240、对齐器1250和注释组件1260。
在一些实施例中,一个或更多个数据收集车辆(例如,图17A-D的车辆1700)可以配备一个或更多个相机和LiDAR传感器,以及与每个数据收集车辆相关联的记录引擎1205可以在车辆行驶通过真实世界(例如,物理)环境时记录传感器数据。通常,数据捕获车辆可以配备任何数量和类型的传感器(包括但不限于图17A-图17C中所示的传感器)。例如,多个相机(例如立体相机1768、广角相机1770(例如鱼眼相机)、红外相机1772、环绕相机1774(例如、360度相机)和/或远程和/或中程相机1798)、LIDAR传感器1764和/或其他传感器类型可以定位在车辆上,使得相机视场和传感器的视场——或感官场——之间存在重叠。在一些实施例中,可以通过自校准算法校准传感器的空间布局,并且可以控制传感器的同步以展示传感器捕获的时间对齐。因此,记录引擎1205可以捕获来自一个或更多个相机的图像数据的帧1210和/或来自一个或更多个LiDAR传感器的LiDAR数据1215。
在一些实施例中,LiDAR数据1215可用于生成地面实况训练数据。在图12所示的示例中,预处理器1240在标记之前对LiDAR数据1215执行一个或更多个处理操作。例如,在一些实施例中,预处理器1240可以执行时间平滑,其可以包括诸如卡尔曼滤波器的状态估计器。可以在3D世界空间中相对于数据捕获车辆并在3D世界空间中相对于世界空间中的某个固定原点应用时间平滑,或在2D世界空间以鸟瞰图应用时间平滑。在一些实施例中,预处理器1240可以对LiDAR数据1215执行异常值去除(例如,类似于本文关于图2的异常值去除器220描述的技术)。在某些情况下,所得到的LiDAR可能仍然是稀疏的。因此,在一些实施例中,预处理器1240可以使用三角测量算法(例如,如本文关于图10的后处理器1070所描述的)内插缺失值。附加地或替代地,预处理器1240可以累积来自多个LidAR传感器的LiDAR数据以致密化得到的LiDAR数据。作为说明,图13A示出了从单个LiDAR扫描收集的LiDAR数据的示例,并且图13B示出了从多个LiDAR扫描(例如,来自多个LiDAR传感器)累积的LiDAR数据的示例。这些只是几个示例,并且可以附加地或替代地执行其他类型的预处理操作。
在一些实施例中,对齐器1250可以将LiDAR数据与图像数据的对应帧1210在时间上对齐。通常,由于各种原因,可能会以不同的频率从不同的传感器获取传感器数据,例如延迟线的差异、采样频率的差异(例如,以30fps运行的相机与以10fps运行的LiDAR)、不同的触发时间等原因。为了便于分组和/或呈现相似世界状态的传感器数据(例如,基本上同时捕获的传感器数据),可以执行时间对齐以同步来自不同传感器的传感器数据。例如,特定传感器可用作参考传感器,而其他传感器可称为子传感器。对于来自参考传感器的给定传感器数据帧(参考帧),可以在参考帧和来自每个子传感器的时间上最接近的传感器数据帧之间识别诸如时间增量的偏移。每个子传感器的偏移量可以被记录和/或应用于来自子传感器的传感器数据的捕获时间或一些其他索引。因此,确定和/或应用每传感器偏移可以用于在时间上对齐不同类型的传感器数据(例如,通过对齐它们的索引)。2021年4月26日提交的题为“针对自主驾驶应用中的深度神经网络感知的地面实况数据生成(Ground TruthData Generation for Deep Neural Network Perception in Autonomous DrivingApplications)”的美国非临时专利申请No.17/187,350中描述了用于对齐来自不同类型传感器的传感器数据的示例技术,其内容通过引用整体并入本文。
另外或替代地,对齐器1250可以将LiDAR数据与图像数据的对应帧1210在空间上对齐,以匹配表示相同对象或环境的其他部分的不同类型的传感器数据。例如,LIDAR数据点可以使用捕获LiDAR数据点的LiDAR传感器和生成图像数据的相机之间的相对方位、位置、视场等与图像空间中的像素相关。用于将来自不同传感器的传感器数据相关的技术在于2019年3月15日提交的题为“自主驾驶应用中的基于序列神经网络的时间信息预测(Sequential Neural Network-Based Temporal Information Prediction inAutonomous Driving Applications)”的美国临时专利申请No.62/514,404和于2019年7月17日提交的标题为“自主机器应用中的时间信息预测(Temporal Information Predictionin Autonomous Machine Applications)”的美国非临时专利申请No.16/514,404中有所描述,每篇申请的内容均通过引用整体并入本文。
在一些实施例中,可以对LiDAR数据进行注释以识别感兴趣的3D表面(例如,3D路面)上的点。通常,注释可以是合成产生的(例如,从计算机模型或渲染中生成)、实际产生的(例如,根据真实世界数据设计和产生)、机器自动化的(例如,使用特征分析和学习从数据中提取特征和然后生成标签)、人工注释的(例如,标记者或注释专家,输入注释)和/或其组合(例如,人工识别折线的顶点,机器使用多边形光栅化器生成多边形)。
在一些实施例中,注释组件1260可以包括诸如网络工具的软件工具(也称为标记工具)。可以生成一序列注释场景(例如,对齐的LiDAR数据集和大约在该时间捕获的图像数据),可以将相应的标记任务编码到标记工具中,并且可以使用软件工具生成注释。在一些实施例中,标记工具可以将注释场景中对齐的LiDAR数据和图像数据呈现给人类标记者(例如,并排),和/或可以跨不同类型的传感器数据投影信息以提供有用的上下文信息,例如不同类型的传感器数据之间的对应关系。标记工具可以接受指定识别感兴趣表面上的点(例如,3D点、边界、封闭区域、类标签)的地面实况注释的输入,并且标记工具可以将注释与传感器数据相关联。于2021年4月26日提交的美国非临时专利申请No.17/187,350中描述了一个示例标记工具,该专利申请的标题为“用于自主驾驶应用中深度神经网络感知的地面实况数据生成(Ground Truth Data Generation for Deep Neural Network Perception inAutonomous Driving Applications)”。因此,注释组件1260可以接受识别感兴趣表面上的点的输入(例如,3D点云、投影图像),并生成识别点的表示,其与待训练的深度学习模型的输出的视图、大小和维度匹配,其可以被指定为地面实况训练数据1295。
在一些实施例中,可以从图像数据的帧1210生成地面实况分割掩码。例如,自由空间估计器1225可以对捕获的图像执行自由空间估计和/或图像分割,以分类、分割和/或预测作为期望类(例如,路面)的一部分的图像数据的区域(例如,像素)。例如,可以训练一个或更多个机器学习模型(例如,卷积神经网络)来预测一个或更多个分割掩码1230和/或表示属于可行驶路面或其他可导航空间、其他环境部分(例如,人行道、建筑物)、动画对象和/或其他类的像素的置信度图。这样,分割掩码1230或检测到的表面的其他表示可以被指定为地面实况训练数据1295。
为了生成对应的输入训练数据,对于图像数据的任何给定帧1210,3D结构估计器1220可以从帧1210估计感兴趣表面(例如,路面)的3D表面结构(例如,如上文关于图1的3D结构估计器105和/或图10的3D结构估计器1050所描述的)。在一些实施例中,3D结构估计器1220可以使用分割掩码1230从估计的3D结构中选择属于由分割掩码表示的类的点(例如,属于感兴趣表面的点,例如3D路面)。在一些实施例中,可以投影得到的点以形成投影图像(例如,2D高度图)。结果可能是感兴趣表面的3D结构的稀疏表示(例如,稀疏点云、稀疏投影图像)。3D结构的稀疏表示和/或图像数据的帧1210可以被指定为输入训练数据1290。
因此,输入训练数据1290可以与对应的地面实况训练数据1295(例如,感兴趣表面上的3D点的致密投影图像或其他表示和/或分割掩码1230)配对并包含在训练数据集中。
训练。在一些实施例中,用于3D表面重建系统的深度学习模型(例如,图5或图6的深度学习模型535)的训练数据集可以基于要训练的深度学习模型的输入和输出而生成、编译和/或选择。例如,某些实现方式可能需要输入训练,包括3D表面结构的稀疏表示(例如,稀疏的高度图)和/或来自某个其他视角的图像数据(例如,透视图的图像),以及包含3D表面结构的致密表示(例如,致密的高度图)和/或分割掩码(例如,识别所需的表面,例如道路或其他可驾驶空间)的地面实况训练数据。因此,可以使用本文描述的技术获得具有与所需深度学习模型的输入和输出的视图、大小和维度相匹配的输入和地面实况训练数据的训练数据集,并且可以使用选定的训练数据集训练深度学习模型。在深度学习模型包括一个或更多个循环层(例如,门控循环单元、长短期记忆)的实施例中,输入训练数据可以包括多个帧(例如,来自连续时间片)作为单个样本。
通常,任何合适的损失函数可用于在训练期间更新深度学习模型。例如,可以使用一个或更多个损失函数(例如,诸如L1或L2损失的回归损失函数可用于回归任务)来比较深度学习模型的输出与地面实况的准确性,并且可以更新深度学习模型的参数(例如,使用反向传递、反向传播、前向传递等),直到准确度达到最佳或可接受的水平。在深度学习模型包括多个头的一些实施例中,多个头可以在具有共同主干的相同数据集上一起共同训练。以这种方式,不同的头(任务)可以互相帮助学习。
在深度学习模型包括预测高度图的回归头的示例实施例中,深度学习模型可以学习使用地面实况高度图和地面实况分割掩码来预测高度图。例如,可以使用L1或L2损失等回归损失函数将预测高度图与地面实况高度图进行比较,结果可以乘以指示要致密化的表面的地面实况分割掩码,基于在要致密化的区域之外发生的预测有效地抵消对深度学习模型进行更新。
在深度学习模型包括预测高度图的回归头和预测与高度图对应的置信度图的置信度头的另一个实施例中,深度学习模型可以学习从地面实况高度图预测的高度和置信度图两者。例如,可以使用比较预测高度和地面实况高度并基于预测的置信度值进行补偿的损失函数。这种损失函数的一个示例可以由下式给出:
其中y是预测高度,y'是对应的地面实况高度,c是对应于预测高度的预测置信度值。在这个示例中,如果预测的高度大体上是错误的(因此||y'-y'||很大),最小化这个损失函数会促使c的值很大。因此,在该示例中,较大的c值可能表示低置信度。等式6给出的示例损失中的对数项防止c变得无限大。因此,诸如此类的损失函数可用于训练深度学习模型以预测高度图和置信度图,而无需地面实况置信度图。因此,可以训练深度学习模型以通过学习3D结构的稀疏表示和致密表示之间的映射来执行致密化。
现在参考图14至图16,本文描述的方法1400-1600的每个块包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,可以通过处理器执行存储在存储器中的指令来执行各种功能。该方法还可以体现为存储在计算机存储介质上的计算机可用指令。这些方法可以由独立应用程序、服务或托管服务(独立或与另一个托管服务组合)或另一个产品的插件提供,仅举几例。此外,虽然方法1400-1600可以通过示例的方式关于示例系统进行描述,但是这些方法可以附加地或替代地由任何一个系统或系统的任何组合来执行,包括但不限于,这里描述的那些。
图14是示出根据本公开的一些实施例的用于训练一个或更多个神经网络(NN)以使用模拟图像数据生成3D表面结构的致密表示的方法1400的流程图。在框B1402,方法1400包括访问模拟图像数据和对应的分类数据和范围数据。例如,图10的模拟器组件1010可以运行模拟以模拟虚拟世界或环境(例如,模拟环境),并且可以在模拟环境内模拟虚拟车辆或其他物体。虚拟车辆或物体可以包括任意数量的传感器(例如,虚拟或模拟传感器),并且可以为传感器模拟虚拟传感器数据。因此,可以基于模拟环境生成虚拟传感器数据的帧(例如,对应于虚拟车辆的虚拟相机的视野的虚拟图像数据),以及相应的分割掩码和深度图。
在框B1404,方法1400包括至少部分地基于模拟图像数据生成由模拟图像数据表示的道路的三维(3D)表面结构的第一表示。例如,图10的3D结构估计器1050可以通过对渲染图像执行3D结构估计来生成渲染图像(例如,帧1020)中描绘的道路的3D表面结构的稀疏表示(例如,稀疏点云、投影图像)。
在框B1406,方法1400包括至少基于范围数据和分类数据生成道路的3D表面结构的第二表示。例如,图10的3D点云生成器1060相对于所生成深度图1040的范围值使用虚拟相机的已知位置和方位将范围值从深度图1040解投影到3D世界坐标中,3D点云生成器1060可以使用分割掩码1030过滤掉感兴趣表面(例如,路面)上的3D点,并且后处理器1070可以用于填充缺失值。
在框B1408,方法1400包括训练一个或更多个神经网络(NN)以使用3D表面结构的第一表示作为输入训练数据并使用3D表面结构的第二表示作为地面实况训练数据来生成3D表面结构的致密表示。
图15是示出了根据本公开的一些实施例的用于为训练数据集生成合成3D路面的不完整和地面实况表示的方法1500的流程图。在框B1502,方法1500包括生成表示合成道路的纵向三维(3D)曲线的表示。例如,关于图11,可以生成纵向曲线l的表示,其中纵向值表示深度学习模型表面估计器的期望感知范围,横向值计算为纵向值的二阶多项式,高度值计算为傅里叶基的线性组合。
在框B1504,方法1500包括,对于纵向3D曲线上的一个或更多个点中的每个点,将该点扩展为通过该点的横向3D曲线。例如,关于图11,纵向3D曲线l上的任何给定点(例如,每个点)可以扩展成对应的横向3D曲线,由曲线qj表示。在一些实施例中,可以定义参数α以表示合成3D表面(例如,合成3D路面)与表面z=0(例如,地平面)之间的角度,并且可以对不同的α值进行采样以模拟纵向3D曲线和/或不同合成3D曲线上不同点处的不同侧面坡度。因此,纵向3D曲线l上的任何给定点(例如,每个点),该点都可以扩展为横向3D曲线qj,该横向3D曲线qj穿过pj,在pj处垂直于曲线l,并且相对于表面z=0具有角度α。
在框B1506,方法1500包括对于纵向3D曲线上的两个或更多个点至少基于横向3D曲线生成合成道路的合成3D路面的地面实况表示。例如,关于图11,可以对任何给定的横向3D曲线qj进行m次采样,以将纵向3D曲线l上的对应3D点扩展为一组3D点,以模拟纵向3D曲线上不同点处的不同道路宽度。可以对纵向3D曲线l的任何给定点(例如,每个点)重复该过程,以生成致密的3D点云,该点云可以被投影以形成地面实况投影图像(例如,地面实况2D高度图).
在框B1508,方法1500包括至少基于合成3D路面的地面实况表示来生成合成3D路面的不完整表示。例如,由大小为HxW的N个二进制图表示的模式可以通过对真实世界数据执行3D估计并在从捕获的图像执行3D估计时对哪些像素被观察和未观察的表示进行编码来生成。因此,N个二进制图之一可以被随机采样并应用于合成3D路面的地面实况表示(例如,使用逐元素乘法)以生成合成3D路面的相应不完整表示。
在框B1510,不完整表示和地面实况表示被包括在训练数据集中。
图16是示出根据本公开的一些实施例的用于训练一个或更多个神经网络(NN)以使用在捕获会话期间捕获的图像数据和LiDAR数据来生成3D表面结构的致密表示的方法1600的流程图。在框B1602,方法1600包括访问在环境中的捕获会话期间捕获的图像数据和LiDAR数据。例如,数据收集车辆可以配备一个或更多个相机和LiDAR传感器,并且图12的记录引擎1205可以在车辆行驶通过真实世界(例如,物理)环境时记录传感器数据。
方法1600在框B1604包括至少基于图像数据生成环境中道路的三维(3D)表面结构的不完整表示。例如,对于图像数据的任何给定帧1210,图12的3D结构估计器1220可以根据帧1210来估计3D表面结构(例如,如上文关于图1的3D结构估计器105和/或图10的3D结构估计器1050所描述的)。在一些实施例中,3D结构估计器1220可以使用分割掩码1230从估计的3D结构中选择属于由分割掩码表示的类的点(例如,属于3D路面的点)。在一些实施例中,可以投影得到的点以形成投影图像(例如,2D高度图)。
在框1606,方法1600包括至少基于对LiDAR数据的标记,生成道路的3D表面结构的第二表示。例如,关于图12,预处理器1240可以在标记之前对LiDAR数据1215执行一个或更多个处理操作,例如时间平滑、异常值去除、三角测量和/或来自多个LiDAR传感器的累积。在一些实施例中,对齐器1250可以将LiDAR数据与图像数据的对应帧1210在时间上和/或空间上对齐。在示例实施例中,注释组件1260可以将注释场景中对齐的LiDAR数据和图像数据呈现给人类标记者,接受指定地面实况注释(其识别感兴趣表面上的点)的输入,并生成与所识别的点的表示,其与要训练的深度学习模型的输出的视图、大小和维度相匹配。
在框B1608,方法1600包括使用3D表面结构的不完整表示作为输入并使用3D表面结构的第二表示作为地面实况训练数据来训练一个或更多个神经网络(NN)以生成3D表面的致密表示。
示例自主车辆
图17A是根据本公开的一些实施例的示例自主车辆1700的图示。自主车辆1700(可替代地,在本文称为“车辆1700”)可以包括但不限于,客运车辆,如小汽车、卡车、公共汽车、第一响应车辆、摆渡车、电动或机动自行车、摩托车、消防车、警用车辆,救护车、船、施工车辆、水下船只、无人机、耦合至拖车的车辆和/或另一类型的车辆(例如,无人驾驶的和/或容纳一个或更多个乘客的车辆)。自主车辆通常按照美国运输部的一个部门——国家公路交通安全管理局(NHTSA)以及汽车工程师协会(SAE)“Taxonomy and Definitions for TermsRelated to Driving Automation Systems for On-Road Motor Vehicles”(2018年6月15日发布的标准No.J3016-201806,2016年9月30日发布的标准No.J3016-201609,以及该标准的先前和未来的版本)定义的自动化级别进行描述。车辆1700可能够实现符合自主驾驶级别的3级-5级中的一个或更多个的功能。例如,取决于实施例,车辆1700可能够实现条件自动化(3级)、高自动化(4级)和/或全自动化(5级)。
车辆1700可以包括诸如底盘、车身、车轮(例如2个、4个、6个、8个、18个等)、轮胎、车轴之类的部件以及车辆的其他部件。车辆1700可以包括推进系统1750,例如内燃机、混合动力发电厂、全电动发动机和/或另一种推进系统类型。推进系统1750可以连接到可以包括变速器的车辆1700的传动系以便实现车辆1700的推进。可以响应于接收到来自油门/加速器1752的信号而控制推进系统1750。
可以包括方向盘的转向(steering)系统1754可以用来在推进系统1750操作时(例如在车辆运动时)使车辆1700转向(例如沿着希望的路径或路线)。转向系统1754可以接收来自转向致动器1756的信号。对于全自动(5级)功能而言,方向盘可以是可选的。
制动传感器系统1746可以用来响应于接收到来自制动致动器1748和/或制动传感器的信号而操作车辆制动器。
可以包括一个或更多个片上系统(SoC)1704(图17C)和/或一个或更多个GPU的一个或更多个控制器1736可以向车辆1700的一个或更多个部件和/或系统提供(例如表示命令的)信号。例如,一个或更多个控制器可以发送经由一个或更多个制动致动器1748操作车辆制动器、经由一个或更多个转向致动器1756操作转向系统1754、经由一个或更多个油门/加速器1752操作推进系统1750的信号。一个或更多个控制器1736可以包括一个或更多个板载(例如集成)计算设备(例如超级计算机),所述计算设备处理传感器信号并且输出操作命令(例如表示命令的信号),以实现自主驾驶和/或辅助人类驾驶员驾驶车辆1700。一个或更多个控制器1736可以包括用于自主驾驶功能的第一控制器1736、用于功能性安全功能的第二控制器1736、用于人工智能功能(例如计算机视觉)的第三控制器1736、用于信息娱乐功能的第四控制器1736、用于紧急情况下的冗余的第五控制器1736和/或其他控制器。在一些示例中,单个控制器1736可以处理上述功能中的两个或更多,两个或更多控制器1736可以处理单个功能,和/或其任意组合。
一个或更多个控制器1736可以响应于接收自一个或更多个传感器的传感器数据(例如传感器输入),提供用于控制车辆1700的一个或更多个部件和/或系统的信号。传感器数据可以接收自例如且不限于全球导航卫星系统传感器1758(例如全球定位系统传感器)、RADAR传感器1760、超声传感器1762、LIDAR传感器1764、惯性测量单元(IMU)传感器1766(例如加速度计、陀螺仪、磁罗盘、磁力计等)、麦克风1796、立体相机1768、广角相机1770(例如鱼眼相机)、红外相机1772、环绕相机1774(例如360度相机)、远程和/或中程相机1798、速度传感器1744(例如用于测量车辆1700的速率)、振动传感器1742、转向传感器1740、制动传感器(例如作为制动传感器系统1746的部分)和/或其他传感器类型。
控制器1736中的一个或更多个可以接收来自车辆1700的仪表组1732的输入(例如由输入数据表示),并且经由人机接口(HMI)显示器1734、听觉信号器、扬声器和/或经由车辆1700的其他部件提供输出(例如输出数据、显示数据等表示的)。这些输出可以包括诸如车辆速度、速率、时间、地图数据(例如图17C的HD地图1722)、位置数据(例如,车辆1700例如在地图上的位置)、方向、其他车辆的位置(例如占用网格)之类的信息,如控制器1736所感知的关于对象和对象状态的信息等等。例如,HMI显示器1734可以显示关于一个或更多个对象(例如街道指示牌、警示牌、交通灯变化等)的存在性的信息和/或关于车辆已经做出、正在做出或者将会做出的驾驶机动的信息(例如现在变道、两英里后离开34B,等等)。
车辆1700还包括网络接口1724,其可以使用一个或更多个无线天线1726和/或调制解调器通过一个或更多个网络通信。例如,网络接口1724可能够通过LTE、WCDMA、UMTS、GSM、CDMA2000等通信。一个或更多个无线天线1726也可以使用诸如蓝牙、蓝牙LE、Z波、ZigBee等等之类的一个或更多个局域网和/或诸如LoRaWAN、SigFox等等之类的一个或更多个低功率广域网(LPWAN)实现环境中的对象(例如车辆、移动设备等等)之间的通信。
图17B为根据本公开一些实施例的用于图17A的示例自主车辆1700的相机位置和视场的示例。相机和各自的视场是一个示例实施例,并不意图是限制性的。例如,可以包括附加的和/或可替换的相机,和/或这些相机可以位于车辆1700上的不同位置。
用于相机的相机类型可以包括但不限于可以适于与车辆1700的部件和/或系统一起使用的数字相机。所述相机可以在汽车安全完整性级别(ASIL)B下和/或在另一个ASIL下操作。相机类型可以具有任何图像捕获率,例如60帧每秒(fps)、120fps、240fps等等,这取决于实施例。相机可能够使用滚动快门、全局快门、另一种类型的快门或者其组合。在一些示例中,滤色器阵列可以包括红白白白(RCCC)滤色器阵列、红白白蓝(RCCB)滤色器阵列、红蓝绿白(RBGC)滤色器阵列、Foveon X3滤色器阵列、拜耳传感器(RGGB)滤色器阵列、单色传感器滤色器阵列和/或另一种类型的滤色器阵列。在一些实施例中,诸如具有RCCC、RCCB和/或RBGC滤色器阵列的相机之类的清晰像素相机可以用在提高光敏感度的努力中。
在一些示例中,所述相机中的一个或更多个可以用来执行高级驾驶员辅助系统(ADAS)功能(例如作为冗余或故障安全设计的部分)。例如,可以安装多功能单目相机以提供包括车道偏离警告、交通指示牌辅助和智能前照灯控制在内的功能。所述相机中的一个或更多个(例如全部相机)可以同时记录和提供图像数据(例如视频)。
所述相机中的一个或更多个可以安装在诸如定制设计的(3-D打印的)组件之类的安装组件中,以便切断可能干扰相机的图像数据捕获能力的杂散光和来自汽车内的反射(例如挡风玻璃镜中反射的来自仪表板的反射)。关于翼镜安装组件,翼镜组件可以是定制3-D打印的,使得相机安装板匹配翼镜的形状。在一些示例中,一个或更多个相机可以集成到翼镜中。对于侧视相机而言,一个或更多个相机也可以集成到驾驶室每个拐角的四根柱子内。
具有包括车辆1700前面的环境部分的视场的相机(例如前置相机)可以用于环视,以帮助识别前向路径和障碍,以及在一个或更多个控制器1736和/或控制SoC的帮助下辅助提供对于生成占用网格和/或确定优选车辆路径至关重要的信息。前置相机可以用来执行许多与LIDAR相同的ADAS功能,包括紧急制动、行人检测和碰撞避免。前置相机也可以用于ADAS功能和系统,包括车道偏离警告(“LDW”)、自主巡航控制(“ACC”),和/或诸如交通指示牌识别之类的其他功能。
各种各样的相机可以用于前置配置中,包括例如包括CMOS(互补金属氧化物半导体)彩色成像仪在内的单目相机平台。另一个示例可以是广角相机1770,其可以用来感知从周边进入视场的对象(例如行人、十字路口交通或者自行车)。尽管图17B中图示出仅仅一个广角相机,但是在车辆1700上可以存在任意数量的广角相机1770。此外,远程相机1798(例如长视立体相机对)可以用于基于深度的对象检测,尤其是用于尚未针对其训练神经网络的对象。远程相机1798也可以用于对象检测和分类以及基本的对象追踪。
一个或更多个立体相机1768也可以包括在前置配置中。立体相机1768可以包括集成控制单元,该单元包括可扩展处理单元,其可以提供在单个芯片上具有集成的CAN或以太网接口的多核微处理器和可编程逻辑(FPGA)。这样的单元可以用来生成车辆环境的3-D地图,包括针对图像中的所有点的距离估计。可替代的立体相机1768可以包括紧凑型立体视觉传感器,其可以包括两个相机镜头(左右各一个)以及可以测量从车辆到目标对象的距离并且使用生成的信息(例如元数据)激活自主紧急制动和车道偏离警告功能的图像处理芯片。除了本文所描述的那些之外或者可替代地,可以使用其他类型的立体相机1768。
具有包括车辆1700的侧面的环境部分的视场的相机(例如侧视相机)可以用于环视,提供用来创建和更新占用网格以及生成侧撞击碰撞警告的信息。例如,环绕相机1774(例如如图17B中所示的四个环绕相机1774)可以置于车辆1700上。环绕相机1774可以包括广角相机1770、鱼眼相机、360度相机和/或类似物。四个示例,四个鱼眼相机可以置于车辆的前面、后面和侧面。在一种可替代的布置中,车辆可以使用三个环绕相机1774(例如左边、右边和后面),并且可以利用一个或更多个其他相机(例如前向相机)作为第四环视相机。
具有包括车辆1700的后面的环境部分的视场的相机(例如后视相机)可以用于辅助停车、环视、后面碰撞警告以及创建和更新占用网格。可以使用各种各样的相机,包括但不限于也适合作为如本文所描述的前置相机(例如远程和/或中程相机1798、立体相机1768、红外相机1772等等)的相机。
图17C为根据本公开一些实施例的用于图17A的示例自主车辆1700的示例系统架构的框图。应当理解,这种布置和本文描述的其他布置仅仅作为示例而被阐述。除了所示的那些之外或者代替它们的是,可以使用其他的布置和元素(例如机器、接口、功能、顺序、功能分组等等),并且一些元素可以完全省略。进一步,许多本文描述的元素是功能实体,其可以实现为分立的或分布式部件或者结合其他部件实现,以及以任何适当的组合和位置实现。本文描述为由实体执行的各个功能可以通过硬件、固件和/或软件实现。例如,各个功能可以通过处理器执行存储在内存中的指令而实现。
图17C中车辆1700的部件、特征和系统中的每一个被图示为经由总线1702连接。总线1702可以包括控制器区域网络(CAN)数据接口(可替代地,本文称为“CAN总线”)。CAN可以是车辆1700内部的网络,用来辅助控制车辆1700的各种特征和功能,例如制动器、加速、制动、转向、挡风玻璃雨刷等等的驱动。CAN总线可以被配置为具有数十或者甚至数百个节点,每个节点具有其自己的唯一标识符(例如CAN ID)。可以读取CAN总线以找到方向盘角度、地速、每分钟发动机转速(RPM)、按钮位置和/或其他车辆状态指示符。CAN总线可以是ASIL B兼容的。
尽管这里将总线1702描述为CAN总线,但是这并不意图是限制性的。例如,除了CAN总线之外或者可替代地,可以使用FlexRay和/或以太网。此外,尽管用单条线来表示总线1702,但是这并不意图是限制性的。例如,可以存在任意数量的总线1702,其可以包括一条或更多条CAN总线、一条或更多条FlexRay总线、一条或更多条以太网总线和/或一条或更多条使用不同协议的其他类型的总线。在一些示例中,两条或更多总线1702可以用来执行不同的功能,和/或可以用于冗余。例如,第一总线1702可以用于碰撞避免功能,并且第二总线1702可以用于驱动控制。在任何示例中,每条总线1702可以与车辆1700的任何部件通信,并且两条或更多总线1702可以与相同的部件通信。在一些示例中,车辆内的每个SoC 1704、每个控制器1736和/或每个计算机可以有权访问相同的输入数据(例如来自车辆1700的传感器的输入),并且可以连接到诸如CAN总线之类的公共总线。
车辆1700可以包括一个或更多个控制器1736,例如本文关于图17A所描述的那些控制器。控制器1736可以用于各种各样的功能。控制器1736可以耦合到车辆1700的任何其他不同的部件和系统,并且可以用于车辆1700的控制、车辆1700的人工智能、用于车辆1700的信息娱乐和/或类似物。
车辆1700可以包括一个或更多个片上系统(SoC)1704。SoC 1704可以包括CPU1706、GPU 1708、处理器1710、高速缓存1712、加速器1714、数据存储1716和/或未图示出的其他部件和特征。在各种各样的平台和系统中,SoC 1704可以用来控制车辆1700。例如,一个或更多个SoC 1704可以在系统(例如车辆1700的系统)中与HD地图1722结合,所述HD地图可以经由网络接口1724从一个或更多个服务器(例如图17D的一个或更多个服务器1778)获得地图刷新和/或更新。
CPU 1706可以包括CPU簇或者CPU复合体(可替代地,本文称为“CCPLEX”)。CPU1706可以包括多个核和/或L2高速缓存。例如,在一些实施例中,CPU 1706在一致性多处理器配置中可以包括八个核。在一些实施例中,CPU 1706可以包括四个双核簇,其中每个簇具有专用的L2高速缓存(例如2MB L2高速缓存)。CPU 1706(例如CCPLEX)可以被配置为支持同时簇操作,使得CPU 1706的簇的任意组合能够在任何给定时间是活动的。
CPU 1706可以实现包括以下特征中的一个或更多个的功率管理能力:各硬件块在空闲时可以自动进行时钟门控以节省动态功率;由于WFI/WFE指令的执行,每个核时钟可以在该核不主动地执行指令时进行门控;每个核可以独立地进行功率门控;当所有核都进行时钟门控或者功率门控时,可以独立地对每个核簇进行时钟门控;和/或当所有核都进行功率门控时,可以独立地对每个核簇进行功率门控。CPU 1706可以进一步实现用于管理功率状态的增强算法,其中指定允许的功率状态和期望的唤醒时间,并且硬件/微代码为所述核、簇和CCPLEX确定要进入的最佳的功率状态。处理核可以在软件中支持简化的功率状态进入序列,该工作被卸载到微代码。
GPU 1708可以包括集成的GPU(可替代地,本文称为“iGPU”)。GPU 1708可以是可编程的,并且对于并行工作负载而言是高效的。在一些示例中,GPU 1708可以使用增强张量指令集。GPU 1708可以包括一个或更多个流式微处理器,其中每个流式微处理器可以包括L1高速缓存(例如具有至少96KB存储能力的L1高速缓存),并且这些流式微处理器中的两个或更多可以共享L2高速缓存(例如具有512KB存储能力的L2高速缓存)。在一些实施例中,GPU1708可以包括至少八个流式微处理器。GPU 1708可以使用计算应用编程接口(API)。此外,GPU 1708可以使用一个或更多个并行计算平台和/或编程模型(例如NVIDIA的CUDA)。
在汽车和嵌入式使用的情况下,可以对GPU 1708进行功率优化以实现最佳性能。例如,可以在鳍式场效应晶体管(FinFET)上制造GPU 1708。然而,这并不意图是限制性的,并且GPU 1708可以使用其他半导体制造工艺来制造。每个流式微处理器可以合并划分成多个块的若干混合精度处理核。例如且非限制性地,可以将64个PF32核和32个PF64核划分成四个处理块。在这样的示例中,每个处理块可以分配16个FP32核、8个FP64核、16个INT32核、用于深层学习矩阵算术的两个混合精度NVIDIA张量核、L0指令高速缓存、线程束(warp)调度器、分派单元和/或64KB寄存器文件。此外,流式微处理器可以包括独立的并行整数和浮点数据路径,以利用计算和寻址计算的混合提供工作负载的高效执行。流式微处理器可以包括独立线程调度能力,以允许实现并行线程之间的更细粒度的同步和协作。流式微处理器可以包括组合的L1数据高速缓存和共享内存单元,以便在简化编程的同时提高性能。
GPU 1708可以包括在一些示例中提供大约900GB/s的峰值内存带宽的高带宽内存(HBM)和/或16GB HBM2内存子系统。在一些示例中,除了HBM内存之外或者可替代地,可以使用同步图形随机存取存储器(SGRAM),例如第五代图形双倍数据速率同步随机存取存储器(GDDR5)。
GPU 1708可以包括统一内存技术,其包括访问计数器以允许内存页面更精确地迁移到最频繁地访问它们的处理器,从而提高处理器之间共享的内存范围的效率。在一些示例中,地址转换服务(ATS)支持可以用来允许GPU 1708直接访问CPU 1706页表。在这样的示例中,当GPU 1708内存管理单元(MMU)经历遗漏时,可以将地址转换请求传输至CPU 1706。作为响应,CPU 1706可以在其页表中寻找用于地址的虚拟-物理映射,并且将转换传输回GPU 1708。这样,统一内存技术可以允许单个统一虚拟地址空间用于CPU 1706和GPU 1708二者的内存,从而简化了GPU 1708编程和将应用程序移(port)到GPU 1708。
此外,GPU 1708可以包括访问计数器,其可以追踪GPU 1708访问其他处理器的内存的频率。访问计数器可以帮助确保内存页面移至最频繁地访问这些页面的处理器的物理内存。
SoC 1704可以包括任意数量的高速缓存1712,包括本文描述的那些高速缓存。例如,高速缓存1712可以包括CPU 1706和GPU 1708二者可用的L3高速缓存(例如,其连接到CPU 1706和GPU 1708二者)。高速缓存1712可以包括回写高速缓存,其可以例如通过使用高速缓存一致性协议(例如MEI、MESI、MSI等)追踪行的状态。取决于实施例,L3高速缓存可以包括4MB或者更多,但是也可以使用更小的高速缓存大小。
SoC 1704可以包括算术逻辑单元(ALU),所述算术逻辑单元可以在执行关于车辆1700的各种任务或操作中的任何任务或操作(如处理DNN)的处理中被利用。此外,SoC 1704可以包括用于在系统内执行数学运算的浮点单元(FPU)(或其他数学协处理器或数字协处理器类型)。例如,SoC 104可以包括集成为CPU 1706和/或GPU 1708内的执行单元的一个或更多个FPU。
SoC 1704可以包括一个或更多个加速器1714(例如硬件加速器、软件加速器或者其组合)。例如,SoC 1704可以包括硬件加速器簇,其可以包括优化的硬件加速器和/或大型片上内存。该大型片上内存(例如4MB SRAM)可以使得硬件加速器簇能够加速神经网络和其他计算。硬件加速器簇可以用来补充GPU 1708,并且卸载GPU 1708的一些任务(例如释放GPU 1708的更多周期以用于执行其他任务)。作为一个示例,加速器1714可以用于足够稳定以易于控制加速的有针对性的工作负载(例如感知、卷积神经网络(CNN)等等)。当在本文中使用时,术语“CNN”可以包括所有类型的CNN,包括基于区域的或者区域卷积神经网络(RCNN)和快速RCNN(例如用于对象检测)。
加速器1714(例如硬件加速器簇)可以包括深度学习加速器(DLA)。DLA可以包括可以被配置成为深度学习应用和推理提供额外的每秒10万亿次操作的一个或更多个张量处理单元(TPU)。TPU可以是被配置为执行图像处理功能(例如用于CNN、RCNN等)且针对执行图像处理功能而优化的加速器。DLA可以进一步针对特定的一组神经网络类型和浮点运算以及推理进行优化。DLA的设计可以比通用GPU提供每毫米更高的性能,并且远远超过CPU的性能。TPU可以执行若干功能,包括单实例卷积函数,支持例如用于特征和权重二者的INT8、INT16和FP16数据类型,以及后处理器功能。
DLA可以在处理的或者未处理的数据上针对各种各样的功能中的任何功能快速且高效地执行神经网络,尤其是CNN,例如且不限于:用于使用来自相机传感器的数据进行对象识别和检测的CNN;用于使用来自相机传感器的数据进行距离估计的CNN;用于使用来自麦克风的数据进行应急车辆检测和识别与检测的CNN;用于使用来自相机传感器的数据进行面部识别和车主识别的CNN;和/或用于安全和/或安全相关事件的CNN。
DLA可以执行GPU 1708的任何功能,并且通过使用推理加速器,例如,设计者可以使DLA或GPU 1708针对任何功能。例如,设计者可以将CNN的处理和浮点运算聚焦在DLA上,并且将其他功能留给GPU 1708和/或其他加速器1714。
加速器1714(例如硬件加速器簇)可以包括可编程视觉加速器(PVA),其在本文中可以可替代地称为计算机视觉加速器。PVA可以被设计和配置为加速用于高级驾驶员辅助系统(ADAS)、自主驾驶和/或增强现实(AR)和/或虚拟现实(VR)应用的计算机视觉算法。PVA可以提供性能与灵活性之间的平衡。例如,每个PVA可以包括例如且不限于任意数量的精简指令集计算机(RISC)核、直接内存访问(DMA)和/或任意数量的向量处理器。
RISC核可以与图像传感器(例如本文描述的任何相机的图像传感器)、图像信号处理器和/或类似物交互。这些RISC核中的每一个可以包括任意数量的内存。取决于实施例,RISC核可以使用若干协议中的任何协议。在一些示例中,RISC核可以执行实时操作系统(RTOS)。RISC核可以使用一个或更多个集成电路设备、专用集成电路(ASIC)和/或存储设备实现。例如,RISC核可以包括指令高速缓存和/或紧密耦合的RAM。
DMA可以使得PVA的部件能够独立于CPU 1706访问系统内存。DMA可以支持用来向PVA提供优化的任意数量的特征,包括但不限于支持多维寻址和/或循环寻址。在一些示例中,DMA可以支持高达六个或更多维度的寻址,其可以包括块宽度、块高度、块深度、水平块步进、竖直块步进和/或深度步进。
向量处理器可以是可编程处理器,其可以被设计为高效且灵活地执行用于计算机视觉算法的编程并且提供信号处理能力。在一些示例中,PVA可以包括PVA核和两个向量处理子系统分区。PVA核可以包括处理器子系统、一个或更多个DMA引擎(例如两个DMA引擎)和/或其他外围设备。向量处理子系统可以作为PVA的主处理引擎而操作,并且可以包括向量处理单元(VPU)、指令高速缓存和/或向量内存(例如VMEM)。VPU核可以包括数字信号处理器,诸如例如单指令多数据(SIMD)、超长指令字(VLIW)数字信号处理器。SIMD和VLIW的组合可以增强吞吐量和速率。
向量处理器中的每一个可以包括指令高速缓存并且可以耦合到专用内存。结果,在一些示例中,向量处理器中的每一个可以被配置为独立于其他向量处理器执行。在其他示例中,包括在特定PVA中的向量处理器可以被配置为采用数据并行化。例如,在一些实施例中,包括在单个PVA中的多个向量处理器可以执行相同的计算机视觉算法,但是在图像的不同区域上执行。在其他示例中,包括在特定PVA中的向量处理器可以在相同的图像上同时执行不同的计算机视觉算法,或者甚至在序列图像或者图像的部分上执行不同的算法。除其他的以外,任意数量的PVA可以包括在硬件加速器簇中,并且任意数量的向量处理器可以包括在这些PVA中的每一个中。此外,PVA可以包括附加的纠错码(ECC)内存,以增强总体系统安全性。
加速器1714(例如硬件加速器簇)可以包括片上计算机视觉网络和SRAM,以提供用于加速器1714的高带宽、低延迟SRAM。在一些示例中,片上内存可以包括由例如且不限于八个现场可配置的内存块组成的至少4MB SRAM,其可以由PVA和DLA二者访问。每对内存块可以包括高级外围总线(APB)接口、配置电路系统、控制器和复用器。可以使用任何类型的内存。PVA和DLA可以经由向PVA和DLA提供高速内存访问的主干(backbone)访问内存。主干可以包括(例如使用APB)将PVA和DLA互连到内存的片上计算机视觉网络。
片上计算机视觉网络可以包括在传输任何控制信号/地址/数据之前确定PVA和DLA二者都提供就绪且有效的信号的接口。这样的接口可以提供用于传输控制信号/地址/数据的单独相位和单独信道,以及用于连续数据传输的突发式通信。这种类型的接口可以符合ISO 26262或者IEC 61508标准,但是也可以使用其他标准和协议。
在一些示例中,SoC 1704可以包括例如在2018年8月10日提交的美国专利申请No.16/101,232中描述的实时光线追踪硬件加速器。该实时光线追踪硬件加速器可以用来快速且高效地确定(例如世界模型内的)对象的位置和范围,以便生成实时可视化仿真,以用于RADAR信号解释、用于声音传播合成和/或分析、用于SONAR系统仿真、用于一般波传播仿真、用于为了定位和/或其他功能的目的与LIDAR数据相比较和/或用于其他用途。在一些实施例中,一个或更多个树遍历单元(TTU)可以用于执行一个或更多个光线跟踪相关操作。
加速器1714(例如硬件加速器簇)具有广泛的自主驾驶用途。PVA可以是可编程视觉加速器,其可以用于ADAS和自主车辆中的关键处理阶段。PVA的能力是需要可预测处理、低功率和低延迟的算法域的良好匹配。换言之,PVA在半致密或者致密规则计算上,甚至在需要具有低延迟和低功率的可预测运行时间的小数据集上都表现良好。因此,在用于自主车辆的平台的背景下,PVA被设计为运行经典计算机视觉算法,因为它们在对象检测和整数数学运算方面很有效。
例如,根据该技术的一个实施例,PVA用来执行计算机立体视觉。在一些示例中,可以使用基于半全局匹配的算法,但是这并不意图是限制性的。许多用于3-5级自主驾驶的应用都需要即时运动估计/立体匹配(例如来自运动的结构、行人识别、车道检测等等)。PVA可以在来自两个单目相机的输入上执行计算机立体视觉功能。
在一些示例中,PVA可以用来执行致密的光流。根据过程原始RADAR数据(例如使用4D快速傅立叶变换)以提供经处理的RADAR。在其他示例中,PVA用于飞行时间深度处理,其例如通过处理原始飞行时间数据以提供经处理的飞行时间数据。
DLA可以用来运行任何类型的网络以增强控制和驾驶安全性,包括例如输出用于每个对象检测的置信度度量的神经网络。这样的置信度值可以解释为概率,或者解释为提供每个检测与其他检测相比的相对“权重”。该置信度值使得系统能够做出关于哪些检测应当被认为是真阳性检测而不是假阳性检测的进一步决定。例如,系统可以为置信度设置阈值,并且仅仅将超过阈值的检测看作真阳性检测。在自动紧急制动(AEB)系统中,假阳性检测会使得车辆自动地执行紧急制动,这显然是不希望的。因此,只有最确信的检测才应当被认为是AEB的触发因素。DLA可以运行用于回归置信度值的神经网络。该神经网络可以将至少一些参数子集作为其输入,例如边界框维度,(例如从另一个子系统)获得的地平面估计,与车辆1700取向、距离相关的惯性测量单元(IMU)传感器1766输出,从神经网络和/或其他传感器(例如LIDAR传感器1764或RADAR传感器1760)获得的对象的3D位置估计等。
SoC 1704可以包括一个或更多个数据存储1716(例如内存)。数据存储1716可以是SoC 1704的片上内存,其可以存储要在GPU和/或DLA上执行的神经网络。在一些示例中,为了冗余和安全,数据存储1716可以容量足够大以存储神经网络的多个实例。数据存储1712可以包括L2或L3高速缓存1712。对数据存储1716的引用可以包括对与如本文所描述的PVA、DLA和/或其他加速器1714关联的内存的引用。
SoC 1704可以包括一个或更多个处理器1710(例如嵌入式处理器)。处理器1710可以包括启动和功率管理处理器,其可以是用于处理启动功率和管理功能以及有关安全实施的专用处理器和子系统。启动和功率管理处理器可以是SoC 1704启动序列的一部分,并且可以提供运行时间功率管理服务。启动功率和管理处理器可以提供时钟和电压编程、辅助系统低功率状态转换、SoC 1704热和温度传感器管理和/或SoC 1704功率状态管理。每个温度传感器可以实现为环形振荡器,其输出频率与温度成比例,并且SoC 1704可以使用环形振荡器检测CPU 1706、GPU 1708和/或加速器1714的温度。如果确定温度超过阈值,那么启动和功率管理处理器可以进入温度故障例程并且将SoC 1704置于较低功率状态和/或将车辆1700置于司机安全停车模式(例如使车辆1700安全停车)。
处理器1710可以还包括可以用作音频处理引擎的一组嵌入式处理器。音频处理引擎可以是一种音频子系统,其允许实现对于通过多个接口的多声道音频的完全硬件支持以及一系列广泛而灵活的音频I/O接口。在一些示例中,音频处理引擎是具有带有专用RAM的数字信号处理器的专用处理器核。
处理器1710可以还包括始终在处理器上的引擎,其可以提供必要的硬件特征以支持低功率传感器管理和唤醒用例。该始终在处理器上的引擎可以包括处理器核、紧密耦合的RAM、支持外围设备(例如定时器和中断控制器)、各种I/O控制器外围设备和路由逻辑。
处理器1710可以还包括安全簇引擎,其包括处理汽车应用的安全管理的专用处理器子系统。安全簇引擎可以包括两个或更多处理器核、紧密耦合的RAM、支持外围设备(例如定时器、中断控制器等等)和/或路由逻辑。在安全模式下,所述两个或更多核可以操作于锁步模式下,并且用作具有检测它们的操作之间的任何差异的比较逻辑的单核。
处理器1710可以还包括实时相机引擎,其可以包括用于处理实时相机管理的专用处理器子系统。
处理器1710可以还包括高动态范围信号处理器,其可以包括图像信号处理器,该图像信号处理器是一种硬件引擎,该硬件引擎是相机处理管线的部分。
处理器1710可以包括可以是(例如微处理器上实现的)处理块的视频图像复合器,其实现视频回放应用程序产生用于播放器窗口的最终图像所需的视频后处理功能。视频图像复合器可以对广角相机1770、环绕相机1774和/或对驾驶室内监控相机传感器执行镜头畸变校正。驾驶室内监控相机传感器优选地由运行在高级SoC的另一个实例上的神经网络监控,被配置为识别驾驶室内事件并且相对应地做出响应。驾驶室内系统可以执行唇读,以激活移动电话服务并拨打电话、口述电子邮件、改变车辆目的地、激活或改变车辆的信息娱乐系统和设置或者提供语音激活的网上冲浪。某些功能仅在车辆操作于自主模式下时对于驾驶员可用,并且在其他情况下被禁用。
视频图像复合器可以包括用于空间和时间降噪的增强时间降噪。例如,在视频中出现运动的情况下,降噪适当地对空间信息加权,降低邻近帧提供的信息的权重。在图像或者图像的部分不包括运动的情况下,视频图像复合器执行的时间降噪可以使用来自先前的图像的信息以降低当前图像中的噪声。
视频图像复合器也可以被配置为对输入立体镜头帧执行立体校正。当操作系统桌面正在使用并且GPU 1708无需连续地渲染(render)新的表面时,视频图像复合器可以进一步用于用户接口组成。甚至在GPU 1708上电并且激活,进行3D渲染时,视频图像复合器可以用来减轻GPU 1708的负担以提高性能和响应能力。
SoC 1704可以还包括用于从相机接收视频和输入的移动行业处理器接口(MIPI)相机串行接口、高速接口和/或可以用于相机和有关像素输入功能的视频输入块。SoC 1704可以还包括可以由软件控制并且可以用于接收未提交到特定角色的I/O信号的输入/输出控制器。
SoC 1704可以还包括大范围的外围设备接口,以使能与外围设备、音频编解码器、功率管理和/或其他设备通信。SoC 1704可以用来处理来自(通过千兆多媒体串行链路和以太网连接的)相机、传感器(例如可以通过以太网连接的LIDAR传感器1764、RADAR传感器1760等等)的数据,来自总线1702的数据(例如车辆1700的速率、方向盘位置等等),来自(通过以太网或CAN总线连接的)GNSS传感器1758的数据。SoC 1704可以还包括专用高性能大容量存储控制器,其可以包括它们自己的DMA引擎,并且其可以用来从日常数据管理任务中释放CPU 1706。
SoC 1704可以是具有灵活架构的端到端平台,该架构跨越自动化3-5级,从而提供利用和高效使用计算机视觉和ADAS技术以实现多样性和冗余、连同深度学习工具一起提供用于灵活可靠驾驶软件堆栈的平台的综合功能安全架构。SoC 1704可以比常规的系统更快、更可靠,甚至更加能量高效和空间高效。例如,当与CPU 1706、GPU 1708和数据存储1716结合时,加速器1714可以提供用于3-5级自主车辆的快速高效平台。
因此该技术提供了不能通过常规系统实现的能力和功能。例如,计算机视觉算法可以在CPU上执行,这些CPU可以使用诸如C编程语言之类的高级编程语言配置为跨各种各样的视觉数据执行各种各样的处理算法。然而,CPU常常不能满足许多计算机视觉应用的性能要求,诸如与例如执行时间和功耗有关的那些要求。特别地,许多CPU不能实时地执行复杂的对象检测算法,这是车载ADAS应用的要求和实用3-5级自主车辆的要求。
与常规系统形成对比的是,通过提供CPU复合体、GPU复合体和硬件加速器簇,本文描述的技术允许同时和/或顺序地执行多个神经网络,并且将结果组合在一起以实现3-5级自主驾驶功能。例如,在DLA或dGPU(例如GPU 1720)上执行的CNN可以包括文本和单词识别,允许超级计算机读取和理解交通指示牌,包括尚未针对其特别地训练神经网络的指示牌。DLA可以还包括能够识别、解释和提供对指示牌的语义理解,并且将该语义理解传递给运行在CPU复合体上的路径规划模块的神经网络。
作为另一个示例,如3、4或5级驾驶所需的,多个神经网络可以同时运行。例如,由“注意:闪烁的灯指示结冰条件”组成的警告指示牌连同电灯可以由若干神经网络独立地或者共同地进行解释。指示牌本身可以由部署的第一神经网络(例如经过训练的神经网络)识别为交通指示牌,文本“闪烁的灯指示结冰条件”可以由部署的第二神经网络解释,该部署的第二神经网络告知车辆的路径规划软件(优选地在CPU复合体上执行)当检测到闪烁的灯时,存在结冰条件。闪烁的灯可以通过在多个帧上操作部署的第三神经网络而识别,该神经网络告知车辆的路径规划软件闪烁的灯的存在(或不存在)。所有三个神经网络可以例如在DLA内和/或在GPU 1708上同时运行。
在一些示例中,用于面部识别和车主识别的CNN可以使用来自相机传感器的数据识别车辆1700的授权的驾驶员和/或车主的存在。始终在传感器上的处理引擎可以用来在车主接近驾驶员车门时解锁车辆并且打开灯,并且在安全模式下,在车主离开车辆时禁用车辆。按照这种方式,SoC 1704提供了防范盗窃和/或劫车的安全性。
在另一个示例中,用于应急车辆检测和识别的CNN可以使用来自麦克风1796的数据来检测并且识别应急车辆警报(siren)。与使用通用分类器检测警报并且手动地提取特征的常规系统形成对比的是,SoC 1704使用CNN以对环境和城市声音分类以及对视觉数据分类。在优选的实施例中,运行在DLA上的CNN被训练为识别应急车辆的相对关闭速率(例如通过使用多普勒效应)。CNN也可以被训练为识别如GNSS传感器1758所识别的特定于车辆在其中操作的局部区域的应急车辆。因此,例如,当在欧洲操作时,CNN将寻求检测欧洲警报,并且当在美国时,CNN将寻求识别仅仅北美的警报。一旦检测到应急车辆,在超声传感器1762的辅助下,控制程序可以用来执行应急车辆安全例程,使车辆放慢速度,开到路边,停下车辆,和/或使车辆空转,直到应急车辆通过。
车辆可以包括可以经由高速互连(例如PCIe)耦合到SoC 1704的CPU 1718(例如分立的CPU或dCPU)。CPU 1718可以包括例如X86处理器。CPU 1718可以用来执行各种各样的功能中的任何功能,包括例如仲裁ADAS传感器与SoC 1704之间潜在地不一致的结果,和/或监控控制器1736和/或信息娱乐SoC 1730的状态和健康状况。
车辆1700可以包括可以经由高速互连(例如NVIDIA的NVLINK)耦合到SoC 1704的GPU 1720(例如分立的GPU或dGPU)。GPU 1720可以例如通过执行冗余的和/或不同的神经网络而提供附加的人工智能功能,并且可以用来至少部分地基于来自车辆1700的传感器的输入(例如传感器数据)来训练和/或更新神经网络。
车辆1700可以还包括网络接口1724,该网络接口可以包括一个或更多个无线天线1726(例如用于不同通信协议的一个或更多个无线天线,例如蜂窝天线、蓝牙天线等等)。网络接口1724可以用来使能通过因特网与云(例如与服务器1778和/或其他网络设备)、与其他车辆和/或与计算设备(例如乘客的客户端设备)的无线连接。为了与其他车辆通信,可以在这两辆车之间建立直接链接,和/或可以建立间接链接(例如跨网络以及通过因特网)。直接链接可以使用车对车通信链路提供。车对车通信链路可以向车辆1700提供关于接近车辆1700的车辆(例如车辆1700前面、侧面和/或后面的车辆)的信息。该功能可以是车辆1700的协作自适应巡航控制功能的部分。
网络接口1724可以包括提供调制和解调功能并且使得控制器1736能够通过无线网络通信的SoC。网络接口1724可以包括用于从基带到射频的上转换以及从射频到基带的下转换的射频前端。频率转换可以通过公知的过程执行,和/或可以使用超外差(super-heterodyne)过程执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过LTE、WCDMA、UMTS、GSM、CDMA2000、蓝牙、蓝牙LE、Wi-Fi、Z波、ZigBee、LoRaWAN和/或其他无线协议通信的无线功能。
车辆1700可以还包括可包括片外(例如SoC 1704外)存储装置的数据存储1728。数据存储1728可以包括一个或更多个存储元件,包括RAM、SRAM、DRAM、VRAM、闪存、硬盘和/或可以存储至少一个比特的数据的其他部件和/或设备。
车辆1700可以还包括GNSS传感器1758。GNSS传感器1758(例如GPS、辅助GPS传感器、差分GPS(DGPS)传感器等)用于辅助映射、感知、占用网格生成和/或路径规划功能。可以使用任意数量的GNSS传感器1758,包括例如且不限于使用带有以太网到串行(RS-232)网桥的USB连接器的GPS。
车辆1700可以还包括RADAR传感器1760。RADAR传感器1760可以甚至在黑暗和/或恶劣天气条件下也由车辆1700用于远程车辆检测。RADAR功能安全级别可以是ASIL B。RADAR传感器1760可以使用CAN和/或总线1702(例如以传输RADAR传感器1760生成的数据)以用于控制以及访问对象追踪数据,在一些示例中接入以太网以访问原始数据。可以使用各种各样的RADAR传感器类型。例如且非限制性地,RADAR传感器1760可以适合前面、后面和侧面RADAR使用。在一些示例中,使用脉冲多普勒RADAR传感器。
RADAR传感器1760可以包括不同的配置,例如具有窄视场的远程、具有宽视场的短程、短程侧覆盖等等。在一些示例中,远程RADAR可以用于自适应巡航控制功能。远程RADAR系统可以提供通过两个或更多独立扫描实现的广阔视场(例如250m范围内)。RADAR传感器1760可以帮助区分静态对象和运动对象,并且可以由ADAS系统用于紧急制动辅助和前方碰撞警告。远程RADAR传感器可以包括具有多根(例如六根或更多)固定RADAR天线以及高速CAN和FlexRay接口的单站多模RADAR。在具有六根天线的示例中,中央四根天线可以创建聚焦的波束图案,其被设计为在更高速率下以来自邻近车道的最小交通干扰记录车辆1700的周围环境。其他两根天线可以扩展视场,使得快速地检测进入或离开车辆1700的车道的车辆成为可能。
作为一个示例,中程RADAR系统可以包括高达1760m(前面)或80m(后面)的范围以及高达42度(前面)或1750度(后面)的视场。短程RADAR系统可以包括但不限于被设计为安装在后保险杠两端的RADAR传感器。当安装在后保险杠两端时,这样的RADAR传感器系统可以创建持续地监控后方和车辆旁边的视盲点的两个波束。
短程RADAR系统可以在ADAS系统中用于视盲点检测和/或变道辅助。
车辆1700可以还包括超声传感器1762。可以置于车辆1700的前面、后面和/或侧面的超声传感器1762可以用于停车辅助和/或创建和更新占用网格。可以使用各种各样的超声传感器1762,并且不同的超声传感器1762可以用于不同的检测范围(例如2.5m、4m)。超声传感器1762可以操作于功能安全级别的ASIL B。
车辆1700可以包括LIDAR传感器1764。LIDAR传感器1764可以用于对象和行人检测、紧急制动、碰撞避免和/或其他功能。LIDAR传感器1764可以为功能安全级别的ASIL B。在一些示例中,车辆1700可以包括可以使用以太网(例如以将数据提供给千兆以太网交换机)的多个LIDAR传感器1764(例如两个、四个、六个等等)。
在一些示例中,LIDAR传感器1764可能够对360度视场提供对象列表及其距离。商业上可用的LIDAR传感器1764可以具有例如近似1700m的广告范围,精度为2cm-3cm,支持1700Mbps以太网连接。在一些示例中,可以使用一个或更多个非突出的LIDAR传感器1764。在这样的示例中,LIDAR传感器1764可以实现为可以嵌入到车辆1700的前面、后面、侧面和/或拐角的小设备。在这样的示例中,LIDAR传感器1764可以甚至对于低反射率对象提供高达120度水平的和35度竖直的视场,具有200m的范围。前面安装的LIDAR传感器1764可以被配置用于45度与135度之间的水平视场。
在一些示例中,也可以使用诸如3D闪光LIDAR之类的LIDAR技术。3D闪光LIDAR使用激光的闪光作为发射源,以照亮高达约200m的车辆周围环境。闪光LIDAR单元包括接受器,该接受器将激光脉冲传输时间和反射光记录在每个像素上,其进而与从车辆到对象的范围相对应。闪光LIDAR可以允许利用每个激光闪光生成周围环境的高度精确且无失真的图像。在一些示例中,可以部署四个闪光LIDAR传感器,车辆1700的每一侧一个。可用的3D闪光LIDAR系统包括没有风扇以外的运动部件(moving part)的固态3D凝视阵列LIDAR相机(例如非扫描LIDAR设备)。闪光LIDAR设备可以使用每帧5纳秒I类(眼睛安全)激光脉冲,并且可以以3D范围点云和共同寄存的强度数据的形式捕获反射的激光。通过使用闪光LIDAR,并且因为闪光LIDAR是没有运动部件的固态设备,LIDAR传感器1764可以不太容易受到运动模糊、振动和/或震动的影响。
该车辆可以还包括IMU传感器1766。在一些示例中,IMU传感器1766可以位于车辆1700的后轴的中心。IMU传感器1766可以包括例如且不限于加速度计、磁力计、陀螺仪、磁罗盘和/或其他传感器类型。在一些示例中,例如在六轴应用中,IMU传感器1766可以包括加速度计和陀螺仪,而在九轴应用中,IMU传感器1766可以包括加速度计、陀螺仪和磁力计。
在一些实施例中,IMU传感器1766可以实现为微型高性能GPS辅助惯性导航系统(GPS/INS),其结合微机电系统(MEMS)惯性传感器、高灵敏度GPS接收器和高级卡尔曼滤波算法以提供位置、速度和姿态的估计。这样,在一些示例中,IMU传感器1766可以使得车辆1700能够在无需来自磁传感器的输入的情况下通过直接观察从GPS到IMU传感器1766的速度变化并且将其相关来估计方向(heading)。在一些示例中,IMU传感器1766和GNSS传感器1758可以结合到单个集成单元中。
该车辆可以包括置于车辆1700中和/或车辆1700周围的麦克风1796。除别的以外,麦克风1796可以用于应急车辆检测和识别。
该车辆可以还包括任意数量的相机类型,包括立体相机1768、广角相机1770、红外相机1772、环绕相机1774、远程和/或中程相机1798和/或其他相机类型。这些相机可以用来捕获车辆1700整个外围周围的图像数据。使用的相机类型取决于实施例和车辆1700的要求,并且相机类型的任意组合可以用来提供车辆1700周围的必要覆盖。此外,相机的数量可以根据实施例而不同。例如,该车辆可以包括六个相机、七个相机、十个相机、十二个相机和/或另一数量的相机。作为一个示例且非限制性地,这些相机可以支持千兆多媒体串行链路(GMSL)和/或千兆以太网。所述相机中的每一个在本文关于图17A和图17B更详细地进行了描述。
车辆1700可以还包括振动传感器1742。振动传感器1742可以测量车辆的诸如车轴之类的部件的振动。例如,振动的变化可以指示道路表面的变化。在另一个示例中,当使用两个或更多振动传感器1742时,振动之间的差异可以用来确定道路表面的摩擦或滑移(例如当动力驱动轴与自由旋转轴之间存在振动差异时)。
车辆1700可以包括ADAS系统1738。在一些示例中,ADAS系统1738可以包括SoC。ADAS系统1738可以包括自主/自适应/自动巡航控制(ACC)、协作自适应巡航控制(CACC)、前方撞车警告(FCW)、自动紧急制动(AEB)、车道偏离警告(LDW)、车道保持辅助(LKA)、视盲点警告(BSW)、后方穿越交通警告(RCTW)、碰撞警告系统(CWS)、车道居中(LC)和/或其他特征和功能。
ACC系统可以使用RADAR传感器1760、LIDAR传感器1764和/或相机。ACC系统可以包括纵向ACC和/或横向ACC。纵向ACC监控并控制到紧接在车辆1700前方的车辆的距离,并且自动地调节车速以维持离前方车辆的安全距离。横向ACC执行距离保持,并且在必要时建议车辆1700改变车道。横向ACC与诸如LCA和CWS之类的其他ADAS应用程序有关。
CACC使用来自其他车辆的信息,该信息可以经由网络接口1724和/或无线天线1726经由无线链路或者通过网络连接(例如通过因特网)间接地从其他车辆接收。直接链接可以由车对车(V2V)通信链路提供,而间接链接可以是基础设施到车辆(I2V)的通信链路。通常,V2V通信概念提供关于紧接在前的车辆(例如紧接在车辆1700前方且与其处于相同车道的车辆)的信息,而I2V通信概念提供关于前方更远处的交通的信息。CACC系统可以包括I2V和V2V信息源中的任一个或者二者。给定车辆1700前方车辆的信息,CACC可以更加可靠,并且它有可能提高交通流的畅通性且降低道路拥堵。
FCW系统被设计为提醒驾驶员注意危险,使得驾驶员可以采取纠正措施。FCW系统使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器1760,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。FCW系统可以提供例如声音、视觉警告、振动和/或快速制动脉冲形式的警告。
AEB系统检测即将发生的与另一车辆或其他对象的前方碰撞,并且可以在驾驶员在指定的时间或距离参数内没有采取纠正措施的情况下自动地应用制动器。AEB系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器1760。当AEB系统检测到危险时,它典型地首先提醒(alert)驾驶员采取纠正措施以避免碰撞,并且如果驾驶员没有采取纠正措施,那么AEB系统可以自动地应用制动器以努力防止或者至少减轻预测的碰撞的影响。AEB系统可以包括诸如动态制动支持和/或碰撞迫近制动之类的技术。
LDW系统提供了诸如方向盘或座位振动之类的视觉、听觉和/或触觉警告,以在车辆1700穿过车道标记时提醒驾驶员。当驾驶员指示有意偏离车道时,通过激活转弯信号,不激活LDW系统。LDW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前侧朝向相机,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
LKA系统是LDW系统的变型。如果车辆1700开始离开车道,那么LKA系统提供纠正车辆1700的转向输入或制动。
BSW系统检测并向驾驶员警告汽车视盲点中的车辆。BSW系统可以提供视觉、听觉和/或触觉警报以指示合并或改变车道是不安全的。系统可以在驾驶员使用转弯信号时提供附加的警告。BSW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的后侧朝向相机和/或RADAR传感器1760,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
RCTW系统可以在车辆1700倒车时在后置相机范围之外检测到对象时提供视觉、听觉和/或触觉通知。一些RCTW系统包括AEB以确保应用车辆制动器以避免撞车。RCTW系统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的一个或更多个后置RADAR传感器1760,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
常规的ADAS系统可能易于出现假阳性结果,这可能会让驾驶员烦恼并分散注意力,但是典型地不是灾难性的,因为ADAS系统提醒驾驶员并且允许驾驶员决定安全条件是否真正存在并且相对应地采取行动。然而,在自主车辆1700中,在冲突结果的情况下,车辆1700本身必须决定是否注意(heed)来自主计算机或者辅助计算机(例如第一控制器1736或第二控制器1736)的结果。例如,在一些实施例中,ADAS系统1738可以是用于向备用计算机合理性模块提供感知信息的备用和/或辅助计算机。备用计算机合理性监视器可以在硬件部件上运行冗余多样的软件,以检测感知和动态驾驶任务中的故障。来自ADAS系统1738的输出可以提供给监督MCU。如果来自主计算机和辅助计算机的输出冲突,那么监督MCU必须确定如何协调该冲突以确保安全操作。
在一些示例中,主计算机可以被配置为向监督MCU提供置信度评分,指示主计算机对所选结果的置信度。如果置信度评分超过阈值,那么监督MCU可以遵循主计算机的方向,而不管辅助计算机是否提供冲突或不一致的结果。在置信度评分不满足阈值的情况下并且在主计算机和辅助计算机指示不同的结果(例如冲突)的情况下,监督MCU可以在这些计算机之间进行仲裁以确定适当的结果。
监督MCU可以被配置为运行神经网络,所述神经网络被训练并且被配置为至少部分地基于来自主计算机和辅助计算机的输出,确定辅助计算机提供假警报的条件。因此,监督MCU中的神经网络可以了解何时可以信任辅助计算机的输出以及何时不能。例如,当辅助计算机为基于RADAR的FCW系统时,监督MCU中的神经网络可以了解FCW系统何时正在识别事实上不是危险的金属对象,例如触发警报的排水栅格或井盖。类似地,当辅助计算机是基于相机的LDW系统时,监督MCU中的神经网络可以学习在骑车者或行人在场并且车道偏离实际上是最安全的策略时无视该LDW。在包括运行在监督MCU上的神经网络的实施例中,监督MCU可以包括适合于利用关联的内存运行神经网络的DLA或GPU中的至少一个。在优选的实施例中,监督MCU可以包括SoC 1704的部件和/或作为SoC 1704的部件而被包括。
在其他示例中,ADAS系统1738可以包括使用传统计算机视觉规则执行ADAS功能的辅助计算机。这样,辅助计算机可以使用经典的计算机视觉规则(如果-那么),并且在监督MCU中存在神经网络可以提高可靠性、安全性和性能。例如,多样化的实现方式和有意的非完全相同(non-identity)使得整个系统更加容错,对于软件(或者软件-硬件接口)功能造成的故障而言尤其如此。例如,如果在主计算机上运行的软件中存在软件漏洞或错误并且运行在辅助计算机上的非完全相同的软件代码提供相同的总体结果,那么监督MCU可以更加确信总体结果是正确的,并且主计算机上的软件或硬件中的漏洞不造成实质性的错误。
在一些示例中,ADAS系统1738的输出可以馈送至主计算机的感知块和/或主计算机的动态驾驶任务块。例如,如果ADAS系统1738由于对象紧接在前的原因而指示前方碰撞警告,那么感知块可以在识别对象时使用该信息。在其他示例中,辅助计算机可以具有它自己的神经网络,其被训练并且因此如本文所描述的降低假阳性的风险。
车辆1700可以还包括信息娱乐SoC 1730(例如车载信息娱乐系统(IVI))。尽管被图示和描述为SoC,但是信息娱乐系统可以不是SoC,并且可以包括两个或更多分立的部件。信息娱乐SoC 1730可以包括可以用来向车辆1700提供音频(例如音乐、个人数字助理、导航指令、新闻、广播等等)、视频(例如TV、电影、流媒体等等)、电话(例如免提呼叫)、网络连接(例如LTE、WiFi等等)和/或信息服务(例如导航系统,后停车援助,无线电数据系统,诸如燃油水平、覆盖的总距离、制动燃油水平、油位、车门开/关、空气过滤器信息之类的车辆有关信息,等等)的硬件和软件的组合。例如,信息娱乐SoC 1730可以包括收音机、盘播放器、导航系统、视频播放器、USB和蓝牙连接、车载电脑、车载娱乐、WiFi、方向盘音频控件、免提语音控件、平视显示器(HUD)、HMI显示器1734、远程信息处理设备、控制面板(例如用于控制各种部件、特征和/或系统,和/或与其交互)和/或其他部件。信息娱乐SoC 1730可以进一步用来向车辆的用户提供信息(例如视觉的和/或听觉的),例如来自ADAS系统1738的信息,诸如规划的车辆机动、轨迹、周围环境信息(例如交叉路口信息、车辆信息、道路信息等等)之类的自主驾驶信息,和/或其他信息。
信息娱乐SoC 1730可以包括GPU功能。信息娱乐SoC 1730可以通过总线1702(例如CAN总线、以太网等)与车辆1700的其他设备、系统和/或部件通信。在一些示例中,信息娱乐SoC 1730可以耦合至监督MCU,使得在主控制器1736(例如车辆1700的主和/或备用计算机)出现故障的情况下,信息娱乐系统的GPU可以执行一些自驾驶功能。在这样的示例中,信息娱乐SoC 1730可以如本文所描述的将车辆1700置于司机安全停车模式。
车辆1700可以还包括仪表组1732(例如数字仪表板、电子仪表组、数字仪表面板等等)。仪表组1732可以包括控制器和/或超级计算机(例如分立的控制器或超级计算机)。仪表组1732可以包括一套仪器,例如车速表、燃油水平、油压、转速表、里程表、转弯指示器、换档位置指示器、安全带警告灯、停车制动警告灯、发动机故障灯、安全气囊(SRS)系统信息、照明控件、安全系统控件、导航信息等等。在一些示例中,信息可以被显示和/或在信息娱乐SoC 1730和仪表组1732之间共享。换言之,仪表组1732可以作为信息娱乐SoC 1730的部分而被包括,或者反之亦然。
图17D为根据本公开一些实施例的基于云的服务器与图17A的示例自主车辆1700之间的通信的系统示意图。系统1776可以包括服务器1778、网络1790以及包括车辆1700在内的车辆。服务器1778可以包括多个GPU 1784(A)-1784(H)(这里统称为GPU 1784)、PCIe交换机1782(A)-1782(H)(这里统称为PCIe交换机1782)和/或CPU 1780(A)-1780(B)(这里统称为CPU 1780)。GPU 1784、CPU 1780和PCIe交换机可以与诸如例如且不限于NVIDIA开发的NVLink接口1788之类的高速互连和/或PCIe连接1786互连。在一些示例中,GPU 1784经由NVLink和/或NVSwitch SoC连接,并且GPU 1784和PCIe交换机1782经由PCIe互连连接。尽管图示出八个GPU 1784、两个CPU 1780和两个PCIe交换机,但是这并不意图是限制性的。取决于实施例,服务器1778中的每一个可以包括任意数量的GPU 1784、CPU 1780和/或PCIe交换机。例如,服务器1778中的每一个可以包括八个、十六个、三十二个和/或更多GPU 1784。
服务器1778可以通过网络1790并且从车辆接收图像数据,该图像数据表示示出诸如最近开始的道路工程之类的意外或改变的道路状况的图像。服务器1778可以通过网络1790并且向车辆传输神经网络1792、更新的神经网络1792和/或地图信息1794,包括关于交通和道路状况的信息。对地图信息1794的更新可以包括对于HD地图1722的更新,例如关于建筑工地、坑洼、弯道、洪水或其他障碍物的信息。在一些示例中,神经网络1792、更新的神经网络1792和/或地图信息1794可以已从新的训练和/或从环境中的任意数量的车辆接收的数据中表示和/或基于数据中心处执行的训练(例如使用服务器1778和/或其他服务器)的经验产生。
服务器1778可以用来基于训练数据训练机器学习模型(例如神经网络)。训练数据可以由车辆生成,和/或可以在仿真中生成(例如使用游戏引擎)。在一些示例中,训练数据被标记(例如在神经网络受益于有监督学习的情况下)和/或经历其他预处理,而在其他示例中,训练数据不被标记和/或预处理(例如在神经网络无需有监督学习的情况下)。可以根据任何一类或更多类别的机器学习技术来执行训练,包括但不限于诸如以下类别:监督训练、半监督训练、非监督训练、自学习、强化学习、联合学习、转移学习、特征学习(包括主要组成和聚类分析)、多线性子空间学习、流形学习、表示学习(包括备用字典学习)、基于规则的机器学习、异常检测及其任何变体或组合。一旦机器学习模型被训练,机器学习模型可以由车辆使用(例如通过网络1790传输至车辆),和/或机器学习模型可以由服务器1778用来远程地监控车辆。
在一些示例中,服务器1778可以接收来自车辆的数据,并且将该数据应用到最新的实时神经网络以用于实时智能推理。服务器1778可以包括由GPU 1784供电的深度学习超级计算机和/或专用AI计算机,例如NVIDIA开发的DGX和DGX站机器。然而,在一些示例中,服务器1778可以包括仅使用CPU供电的数据中心的深度学习基础设施。
服务器1778的深度学习基础设施可能够快速实时推理,并且可以使用该能力来评估并验证车辆1700中的处理器、软件和/或关联硬件的健康状况。例如,深度学习基础设施可以接收来自车辆1700的定期更新,例如图像序列和/或车辆1700已经定位的位于该图像序列中的对象(例如经由计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可以运行它自己的神经网络以识别对象并且将它们与车辆1700识别的对象相比较,如果结果不匹配并且该基础设施得出车辆1700中的AI发生故障的结论,那么服务器1778可以向车辆1700传输信号,指示车辆1700的故障保护计算机进行控制,通知乘客,并且完成安全停车操作。
为了推理,服务器1778可以包括GPU 1784和一个或更多个可编程推理加速器(例如NVIDIA的TensorRT)。GPU供电的服务器和推理加速的组合可以使得实时响应成为可能。在其他示例中,例如在性能不那么重要的情况下,CPU、FPGA和其他处理器供电的服务器可以用于推理。
示例计算设备
图18是适合用于实现本公开的一些实施例的示例计算设备1800的框图。计算设备1800可以包括直接或间接耦合以下设备的互连系统1802:存储器1804、一个或更多个中央处理单元(CPU)1806、一个或更多个图形处理单元(GPU)1808、通信接口1810、输入/输出(I/O)端口1812、输入/输出组件1814、电源1816,一个或更多个呈现组件1818(例如,(一个或更多个)显示器)和一个或更多个逻辑单元1820。在至少一个实施例中,(一个或更多个)计算设备1800可以包括一个或更多个虚拟机(VM),和/或其任何组件可以包括虚拟组件(例如,虚拟硬件组件)。对于非限制性示例,GPU 1808中的一个或更多个可以包括一个或更多个vGPU,CPU 1806中的一个或更多个可以包括一个或更多个vCPU,和/或逻辑单元1820中的一个或更多个可以包括一个或更多个虚拟逻辑单元。这样,(一个或更多个)计算设备1800可以包括分立组件(例如,专用于计算设备1800的全GPU)、虚拟组件(例如,专用于计算设备1800的GPU的一部分)、或其组合。
尽管图18的各个方框被示出为利用线路经由互连系统1802连接,但这并不旨在是限制性的并且仅是为了清楚起见。例如,在一些实施例中,呈现组件1818(诸如显示设备)可被认为是I/O组件1814(例如,如果显示器是触摸屏)。作为另一个示例,CPU 1806和/或GPU1808可以包括存储器(例如,存储器1804可以表示除了GPU 1808的存储器、CPU 1806和/或其他组件之外的存储设备)。换言之,图18的计算设备仅是说明性的。在如“工作站”、“服务器”、“膝上型计算机”、“桌面型计算机”、“平板计算机”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实系统”和/或其他设备或系统类型的此类类别之间不做区分,因为所有都被考虑在图18的计算设备的范围内。
互连系统1802可表示一个或更多个链路或总线,诸如地址总线、数据总线、控制总线或其组合。互连系统1802可以包括一个或更多个总线或链路类型,诸如工业标准架构(ISA)总线、扩展工业标准架构(EISA)总线、视频电子标准协会(VESA)总线、外围组件互连(PCI)总线、快速外围组件互连(PCIe)总线和/或另一类型的总线或链路。在一些实施例中,组件之间存在直接连接。作为示例,CPU 1806可直接连接到存储器1804。进一步,CPU 1806可直接连接到GPU 1808。在组件之间存在直接或点对点连接的情况下,互连系统1802可包括PCIe链路以执行连接。在这些示例中,PCI总线不需要被包括在计算设备1800中。
存储器1804可以包括各种计算机可读介质中的任何计算机可读介质。计算机可读介质可以是可由计算设备1800访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质,以及可移除和不可移除介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。
计算机存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型的信息的任何方法或技术实现的易失性和非易失性介质和/或可移动和不可移动介质。例如,存储器1804可以存储计算机可读指令(例如,表示(一个或更多个)程序和/或(一个或更多个)程序元件,诸如操作系统)。计算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术,CD-ROM、数字通用盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储装置或其他磁性存储装置,或可用于存储所要信息且可由计算设备1800存取的任何其他介质。如本文所使用的,计算机存储介质不包括信号本身。
计算机存储介质可将计算机可读指令、数据结构、程序模块和/或其他数据类型体现在诸如载波或其他传输机制之类的已调制数据信号中,并且包括任何信息传递介质。术语“调制数据信号”可以指代以编码信号中的信息的方式设置或改变其一个或更多个特性的信号。作为示例而非限制,计算机存储介质可包括有线介质(诸如有线网络或直接有线连接)和无线介质(诸如声学、RF、红外和其他无线介质)。以上任何内容的组合也应包含在计算机可读介质的范围内。
CPU 1806可经配置以执行计算机可读指令中的至少一些以控制计算设备1800的一个或更多个组件执行本文中所描述的方法和/或过程中的一个或更多个。CPU 1806可各自包含能够同时处置众多软件线程的一个或更多个核心(例如,一个、两个、四个、八个、二十八个、七十二个等)。CPU 1806可包含任何类型的处理器,且可取决于所实施的计算设备1800的类型而包含不同类型的处理器(例如,针对移动装置具有较少核心的处理器和针对服务器具有较多核心的处理器)。例如,取决于计算设备1800的类型,处理器可以是使用精简指令集计算(RISC)实现的高级RISC机器(ARM)处理器或使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或补充协处理器(诸如数学协处理器)之外,计算设备1800还可包括一个或更多个CPU 1806。
除(一个或更多个)CPU 1806以外或替代(一个或更多个)CPU 1806,(一个或更多个)GPU 1808可被配置成执行计算机可读指令中的至少一些以控制计算设备1800的一个或更多个组件执行本文所描述的方法和/或过程中的一个或更多个。GPU 1808中的一个或更多个可为集成GPU(例如,有CPU 1806中的一个或更多个)和/或GPU 1808中的一个或更多个可为离散GPU。在实施例中,GPU 1808中的一个或更多个可以是CPU 1806中的一个或更多个的协处理器。GPU 1808可由计算设备1800使用以渲染图形(例如,3D图形)或执行通用计算。例如,GPU 1808可用于GPU上的通用计算(GPGPU)。GPU 1808可包含能够同时处置数百或数千软件线程的数百或数千核心。GPU 1808可响应于渲染命令(例如,经由主机接口从CPU1806接收的渲染命令)而产生输出图像的像素数据。GPU 1808可包含用于存储像素数据或任何其他合适数据(例如,GPGPU数据)的图形存储器(例如,显示存储器)。显示存储器可作为存储器1804的一部分被包括。GPU 1808可包含并行操作(例如,经由链路)的两个或两个以上GPU。链路可以直接连接GPU(例如,使用NVLINK)或可以通过交换机(例如,使用NVSwitch)连接GPU。当组合在一起时,每一GPU 1808可产生用于输出的不同部分或用于不同输出的像素数据或GPGPU数据(例如,用于第一图像的第一GPU和用于第二图像的第二GPU)。每一GPU可包含其自己的存储器,或可与其他GPU共享存储器。
除CPU 1806和/或GPU 1808之外或替代CPU 1806和/或GPU 1808,逻辑单元1820可经配置以执行计算机可读指令中的至少一些以控制计算设备1800的一个或更多个组件执行本文中所描述的方法和/或过程中的一个或更多个。在实施例中,(一个或更多个)CPU1806、(一个或更多个)GPU 1808、和/或(一个或更多个)逻辑单元1820可以离散地或联合地执行方法、过程和/或其部分的任何组合。逻辑单元1820中的一个或更多个可为CPU 1806和/或GPU 1808中的一个或更多个中的一部分和/或集成于CPU 1806和/或GPU 1808中的一个或更多个和/或逻辑单元1820中的一个或更多个可为离散组件或以其他方式在CPU 1806和/或GPU 1808外部。在实施例中,逻辑单元1820中的一个或更多个可以是CPU 1806中的一个或更多个和/或GPU 1808中的一个或更多个的协处理器。
逻辑单元1820的示例包括一个或更多个处理核心和/或其组件,诸如张量核心(TC)、张量处理单元(TPU)、像素视觉核心(PVC)、视觉处理单元(VPU)、图形处理群集(GPC)、纹理处理群集(TPC)、流多处理器(SM)、树横向单元(TTU)、人工智能加速器(AIA)、深度学习加速器(DLA)、算术逻辑单元(ALU)、专用集成电路(ASIC)、浮点单元(FPU)、输入/输出(I/O)元件、外围组件互连(PCI)或快速外围组件互连(PCIe)元件等。
通信接口1810可以包括使计算设备1800能够经由电子通信网络(包括有线和/或无线通信)与其他计算设备通信的一个或更多个接收机、发射机和/或收发机。通信接口1810可包括实现通过多个不同网络中的任一个进行通信的组件和功能,诸如无线网络(例如,Wi-Fi、Z-Wave、蓝牙、蓝牙LE、ZigBee等)、有线网络(例如,通过以太网或无限带通信)、低功率广域网(例如,LoRaWAN、SigFox等)和/或互联网。
I/O端口1812可以使得计算设备1800能够逻辑地耦合到包括I/O组件1814、(一个或更多个)呈现组件1818和/或其他组件的其他设备,其中一些可以被内置到(例如,集成在)计算设备1800中。说明性I/O组件1814包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等。I/O组件1814可以提供处理空中姿势、语音或由用户生成的其他生理输入的自然用户界面(NUI)。在一些情况下,可将输入发射到适当的网络元件以供进一步处理。NUI可实现与计算设备1800的显示器相关联的语音识别、指示笔识别、面部识别、生物特征识别、屏幕上和屏幕附近的姿势识别、空中姿势、头部和眼睛跟踪、以及触摸识别(如以下更详细地描述的)的任何组合。计算设备1800可以包括用于手势检测和识别的深度相机,诸如立体相机系统、红外相机系统、RGB相机系统、触摸屏技术和这些的组合。另外,计算设备1800可包含使得能够检测运动的加速度计或陀螺仪(例如,作为惯性测量单元(IMU)的部分)。在一些示例中,计算设备1800可以使用加速度计或陀螺仪的输出来渲染沉浸式增强现实或虚拟现实。
电源1816可包括硬连线电源、电池电源或其组合。电源1816可向计算设备1800提供电力以使得计算设备1800的组件能够操作。
呈现组件1818可包括显示器(例如,监视器、触摸屏、电视屏幕、平视显示器(HUD)、其他显示器类型或其组合)、扬声器和/或其他呈现组件。呈现组件1818可从其他组件(例如,GPU 1808、CPU 1806等)接收数据,且输出所述数据(例如,作为图像、视频、声音等)。
示例数据中心
图19示出了可在本公开的至少一个实施例中使用的示例数据中心1900。数据中心1900可包括数据中心基础设施层1910、框架层1920、软件层1930和/或应用层1940。
如图19所示,数据中心基础设施层1910可以包括资源协调器1912、分组的计算资源1914和节点计算资源(“节点C.R.s”)1916(1)-1916(N),其中“N”表示任何完整的正整数。在至少一个实施例中,节点C.R.s 1916(1)-1916(N)可包括,但不限于任何数量的中央处理单元(“CPU”)或其他处理器(包括加速器、现场可编程门阵列(FPGA)、图形处理器或图形处理单元(GPU)等),存储器设备(例如,动态只读存储器),存储设备(例如,固态或磁盘驱动器),网络输入/输出(“NW I/O”)装置、网络交换机、虚拟机(“VM”)、功率模块和/或冷却模块,等等。在一些实施例中,来自节点C.R.s 1916(1)-1916(N)中的一个或更多个节点C.R.s可对应于具有上述计算资源中的一个或更多个的服务器。此外,在一些实施例中,节点C.R.s 1916(1)-19161(N)可包括一个或更多个虚拟组件,诸如vGPU、vCPU等,和/或节点C.R.s 1916(1)-1916(N)中的一个或更多个可对应于虚拟机(VM)。
在至少一个实施例中,分组的计算资源1914可包括容纳在一个或更多个机架(未示出)内的节点C.R.s 1916的单独分组,或容纳在不同地理位置(也未示出)处的数据中心内的许多机架。分组的计算资源1914内的节点C.R.s 1916的单独分组可包括可被配置或分配来支持一个或更多个工作负荷的分组计算、网络、存储器或存储资源。在至少一个实施例中,包括CPU、GPU和/或其他处理器的若干节点C.R.s 1916可以分组在一个或更多个机架内以提供计算资源来支持一个或更多个工作负荷。一个或更多个机架还可包括任意组合的任意数量的功率模块、冷却模块和/或网络交换机。
资源协调器1922可配置或以其他方式控制一个或更多个节点C.R.s1916(1)-1916(N)和/或分组的计算资源1914。在至少一个实施例中,资源协调器1922可以包括用于数据中心1900的软件设计基础设施(“SDI”)管理实体。资源协调器1922可以包括硬件、软件或其某种组合。
在至少一个实施例中,如图19所示,框架层1920可以包括作业调度器1932、配置管理器1934、资源管理器1936和/或分布式文件系统1938。框架层1920可以包括支持软件层1930的软件1932和/或应用层1940的一个或更多个应用1942的框架。软件1932或应用1942可分别包含基于网络的服务软件或应用,例如由Amazon(亚马逊)网络服务、Google Cloud(谷歌云)和Microsoft Azure提供的那些。框架层1920可以是但不限于可以利用分布式文件系统1938进行大规模数据处理(例如,“大数据”)的免费和开源的软件网络应用框架(如Apache SparkTM(下文称为“Spark”))的类型。在至少一个实施例中,作业调度器1932可以包括Spark驱动器以促进调度由数据中心1900的不同层支持的工作负荷。配置管理器1934可以能够配置不同层,诸如软件层1930和框架层1920(其包括用于支持大规模数据处理的Spark和分布式文件系统1938)。资源管理器1936可以能够管理被映射到分布式文件系统1938和作业调度器1932或被分配用于支持分布式文件系统1938和作业调度器1932的集群的或分组的计算资源。在至少一个实施例中,集群的或分组的计算资源可包括在数据中心基础设施层1910的分组的计算资源1914。资源管理器1036可与资源协调器1912协调以管理这些被映射或分配的计算资源。
在至少一个实施例中,在软件层1930中包括的软件1932可包括由节点C.R.s 1916(1)-1916(N)、分组的计算资源1914和/或框架层1920的分布式文件系统1938中的至少部分使用的软件。一种或更多种类型的软件可以包括但不限于互联网网页搜索软件、电子邮件病毒扫描软件、数据库软件和流式视频内容软件。
在至少一个实施例中,在应用层1940中包括的应用1942可包括由节点C.R.s 1916(1)-1916(N)、分组的计算资源1914和/或框架层1920的分布式文件系统1938中的至少部分使用的一个或更多个类型的应用。一种或更多种类型的应用可以包括但不限于任何数量的基因组应用、认知计算和机器学习应用,包括训练或推理软件、机器学习框架软件(例如,PyTorch、TensorFlow、Caffe等)和/或结合一个或更多个实施例使用的其他机器学习应用。
在至少一个实施例中,配置管理器1934、资源管理器1936和资源协调器1912中的任一个可基于在任何技术上可行的方式中获取的任何量和类型的数据来实现任何数量和类型的自修改动作。自修改动作可使数据中心1900的数据中心操作者免于做出可能较差的配置决策和可能避免数据中心的未充分利用和/或较差执行部分。
根据本文描述的一个或更多个实施例,数据中心1900可包括工具、服务、软件或其他资源来训练一个或更多个机器学习模型或使用一个或更多个机器学习模型来预测或推理信息。例如,可以通过使用以上相对于数据中心1900描述的软件和/或计算资源根据神经网络架构来计算权重参数来训练(一个或更多个)机器学习模型。在至少一个实施例中,对应于一个或更多个神经网络的经训练或部署的机器学习模型可用于通过使用通过一种或多种训练技术(诸如但不限于本文中描述的那些训练技术)计算的权重参数,使用上文相对于数据中心1900描述的资源来推理或预测信息。
在至少一个实施例中,数据中心1900可使用CPU、专用集成电路(ASIC)、GPU、FPGA和/或其他硬件(或与其对应的虚拟计算资源)来使用上述资源执行训练和/或推理。此外,上文所描述的一或更多个软件和/或硬件资源可被配置为允许用户训练或执行对信息的推理的服务,例如图像识别、语音识别或其他人工智能服务。
示例网络环境
适合用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备、服务器、网络附加存储(NAS)、其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如,每个设备)可以在图18的(一个或更多个)计算设备1800的一个或更多个实例上实现——例如,每个设备可以包括(一个或更多个)计算设备1800的类似部件、特征和/或功能。此外,在实现后端设备(例如,服务器、NAS等)的情况下,后端设备可被包括作为数据中心1900的一部分,数据中心1900的示例在本文中关于图19更详细地描述。
网络环境的组件可经由网络彼此通信,所述网络可为有线的、无线的或为两者。网络可以包括多个网络或多个网络中的一个网络。例如,网络可包括一个或更多个广域网(WAN)、一个或更多个局域网(LAN)、一个或更多个公共网络(诸如互联网和/或公共交换电话网(PSTN))和/或一个或更多个私有网络。在网络包括无线电信网络的情况下,诸如基站、通信塔或者甚至接入点(以及其他组件)的组件可以提供无线连接。
兼容的网络环境可以包括一个或更多个对等网络环境(在这种情况下,服务器可以不被包括在网络环境中)和一个或更多个客户端-服务器网络环境(在这种情况下,一个或更多个服务器可以被包括在网络环境中)。在对等网络环境中,本文针对服务器所描述的功能可在任何数量的客户端设备上实现。
在至少一个实施例中,网络环境可包括一个或更多个基于云的网络环境、分布式计算环境、其组合等。基于云的网络环境可包括框架层、作业调度器、资源管理器和在一个或更多个服务器上实现的分布式文件系统,所述服务器可包括一个或更多个核心网服务器和/或边缘服务器。框架层可包括支持软件层的软件和/或应用层的一个或更多个应用的框架。软件或应用可分别包含基于网络的服务软件或应用。在实施例中,一个或更多个客户端设备可以使用基于网络的服务软件或应用(例如,通过经由一个或更多个应用编程接口(API)访问服务软件和/或应用)。框架层可以是但不限于如可以使用分布式文件系统进行大规模数据处理(例如,“大数据”)的一种免费和开源软件网络应用框架。
基于云的网络环境可提供执行本文描述的计算和/或数据存储功能(或其一个或更多个部分)的任何组合的云计算和/或云存储。这些不同功能中的任何功能可以分布在来自(例如,可以分布在州、地区、国家、全球等的一个或更多个数据中心的)中央或核心服务器的多个位置上。如果与用户(例如,客户端设备)的连接相对靠近边缘服务器,则核心服务器可以将功能的至少一部分指定给边缘服务器。基于云的网络环境可以是私有的(例如,限于单个组织),可以是公共的(例如,对许多组织可用),和/或其组合(例如,混合云环境)。
(一个或更多个)客户端设备可以包括本文关于图18所描述的(一个或更多个)示例计算设备1800的组件、特征和功能中的至少一些。作为示例而非限制,客户端设备可被实现为个人计算机(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 (20)
1.一种方法,包括:
至少部分地基于在捕获会话期间使用环境中的自我对象的一个或更多个相机生成的图像数据,生成表示所述环境的组件的三维3D表面结构的第一表示;
至少基于将所述3D表面结构的所述第一表示应用于一个或更多个神经网络NN来生成所述3D表面结构的致密表示;以及
在所述捕获会话期间向所述自我对象的控制组件提供所述3D表面结构的所述致密表示。
2.根据权利要求1所述的方法,还包括至少基于以下内容生成所述3D表面结构的所述第一表示:
至少基于将3D结构估计应用于所述图像数据,生成所述环境的第一估计3D表示;以及
将表示所述环境的所述组件的分割掩码应用于所述环境的所述第一估计3D表示,以识别与所述环境的所述组件相对应的所述第一估计3D表示的一个或更多个点。
3.根据权利要求1所述的方法,还包括:
至少基于将3D结构估计应用于所述图像数据,生成所述环境的点云表示;
投影所述点云表示的至少一部分以生成所述环境的所述组件的所述3D表面结构的所述第一表示,作为表示所述环境的所述组件的一个或更多个高度值的第一高度图;以及
将所述第一高度图应用于所述一个或更多个NN以预测所述3D表面结构的所述致密表示,作为表示所述环境的所述组件的所述一个或更多个高度值的第二高度图。
4.根据权利要求1所述的方法,其中所述一个或更多个NN包括用于表示所述环境的所述组件的一个或更多个高度值的高度图的第一输入通道和用于表示所述环境的所述组件的一个或更多个颜色值的透视图像的第二输入通道。
5.根据权利要求1所述的方法,其中所述一个或更多个NN包括对所述环境的所述组件的一个或更多个高度值进行回归的第一输出通道和对与所述一个或更多个高度值相对应的一个或更多个置信度值进行回归的第二输出通道。
6.根据权利要求1所述的方法,还包括:
至少基于所述图像数据生成表示所述环境的所述组件的一个或更多个高度值的第一高度图;
从所述一个或更多个高度值中的至少一个中去除所述一个或更多个高度值的均值高度以生成所述环境的所述组件的所述3D表面结构的第一表示;以及
将所述均值高度重新引入到所述3D表面结构的所述致密表示的相应预测值中。
7.根据权利要求1所述的方法,还包括:在所述捕获会话期间对在连续时间片中生成的所述图像数据的连续实例重复执行所述方法以生成所述3D表面结构的所述致密表示的连续实例。
8.根据权利要求1所述的方法,其中所述自我对象的所述控制组件被配置为在所述捕获会话期间执行以下至少一项:
至少基于所述3D表面结构的所述致密表示来调整所述自我对象的悬架系统,
导航所述自我对象以避开在所述3D表面结构的所述致密表示中检测到的突起,或者
至少基于在所述3D表面结构的所述致密表示中检测到的表面坡度,对所述自我对象应用加速或减速。
9.一种处理器,包括一个或更多个电路,用于:
在车辆在环境中运行期间接收使用所述车辆的一个或更多个相机生成的图像数据;
在所述车辆在所述环境中的所述运行期间,至少部分地基于以下内容虚拟地重建所述环境中的路面:
使用所述图像数据生成所述路面的第一估计3D表面结构;以及
至少部分地基于将所述第一估计3D表面结构应用于一个或更多个神经网络NN来生成所述路面的致密估计3D表面结构;以及
至少部分地基于表示所述致密估计3D表面结构的数据来控制所述车辆。
10.根据权利要求9所述的处理器,所述一个或更多个电路还用于至少基于以下内容生成所述路面的所述第一估计3D表面结构:
至少基于将3D结构估计应用于所述图像数据,生成所述环境的第一估计3D表示;以及
将表示所述路面的分割掩码应用于所述环境的所述第一估计3D表示,以识别与所述路面相对应的所述第一估计3D表示的一个或更多个点。
11.根据权利要求9所述的处理器,所述一个或更多个电路进一步用于:
至少基于将3D结构估计应用于所述图像数据,生成所述环境的点云表示;
投影所述点云表示的至少一部分以生成所述路面的所述第一估计3D表面结构,作为表示所述路面的一个或更多个高度值的第一高度图;以及
将所述第一高度图应用于所述一个或更多个NN以预测所述路面的所述致密估计3D表面结构,作为表示所述路面的所述一个或更多个高度值的第二高度图。
12.根据权利要求9所述的处理器,其中所述一个或更多个NN包括用于表示所述路面的一个或更多个高度值的高度图的第一输入通道和用于表示所述路面的一个或更多个颜色值的透视图像的第二输入通道。
13.根据权利要求9所述的处理器,其中所述一个或更多个NN包括对所述路面的一个或更多个高度值进行回归的第一输出通道和对与所述高度值相对应的一个或更多个置信度值进行回归的第二输出通道。
14.根据权利要求9所述的处理器,所述一个或更多个电路进一步用于:
至少基于所述图像数据生成表示所述路面的一个或更多个高度值的第一高度图;
从所述一个或更多个高度值中的至少一个高度值中去除所述一个或更多个高度值的均值高度以生成所述路面的所述第一估计3D表面结构;以及
将所述均值高度重新引入所述路面的所述致密估计3D表面结构的相应预测值。
15.一种系统,包括:
一个或更多个处理单元;以及
一个或更多个存储器单元,其存储指令,所述指令当由所述一个或更多个处理单元执行时,使所述一个或更多个处理单元执行操作,所述操作包括:
使用来自环境中的自我对象的一个或更多个相机的图像数据,生成所述环境的组件的三维3D表面结构的第一表示;
至少基于将所述3D表面结构的第一表示应用于一个或更多个神经网络NN来生成所述3D表面结构的致密表示;以及
将所述3D表面结构的所述致密表示提供给所述自我对象的控制组件。
16.根据权利要求15所述的系统,所述操作还包括:至少基于以下内容生成所述环境的所述组件的所述3D表面结构的所述第一表示:
至少基于将3D结构估计应用于所述图像数据,生成所述环境的第一估计3D表示;以及
将表示所述环境的组件的分割掩码应用于所述环境的所述第一估计3D表示,以识别与所述环境的所述组件相对应的所述第一估计3D表示的一个或更多个点。
17.根据权利要求15所述的系统,所述操作还包括:
至少基于将3D结构估计应用于所述图像数据,生成所述环境的点云表示;
投影所述点云表示的至少一部分以生成所述环境的所述组件的所述3D表面结构的所述第一表示,作为表示所述环境的所述组件的一个或更多个高度值的第一高度图;以及
将所述第一高度图应用于所述一个或更多个NN以预测所述3D表面结构的致密表示,作为表示所述环境的所述组件的所述一个或更多个高度值的第二高度图。
18.根据权利要求15所述的系统,其中所述一个或更多个NN包括用于表示所述环境的所述组件的一个或更多个高度值的高度图的第一输入通道和用于表示所述环境的所述组件的一个或更多个颜色值的透视图像的第二输入通道。
19.根据权利要求15所述的系统,其中所述一个或更多个NN包括对所述环境的所述组件的一个或更多个高度值进行回归的第一输出通道和对与所述一个或更多个高度值相对应的一个或更多个置信度值进行回归的第二输出通道。
20.根据权利要求15所述的系统,其中所述系统包括在以下至少一项中:
用于自主或半自主机器的控制系统;
用于自主或半自主机器的感知系统;
用于执行模拟操作的系统;
用于执行深度学习操作的系统;
使用边缘设备实现的系统;
使用机器人实现的系统;
包含一个或更多个虚拟机VM的系统;
至少部分在数据中心中实现的系统;或者
至少部分使用云计算资源实现的系统。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/452,747 US20230135088A1 (en) | 2021-10-28 | 2021-10-28 | 3d surface reconstruction with point cloud densification using deep neural networks for autonomous systems and applications |
US17/452,747 | 2021-10-28 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116051779A true CN116051779A (zh) | 2023-05-02 |
Family
ID=85983817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211315784.8A Pending CN116051779A (zh) | 2021-10-28 | 2022-10-26 | 用于自主系统和应用的使用深度神经网络利用点云致密化的3d表面重建 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230135088A1 (zh) |
CN (1) | CN116051779A (zh) |
DE (1) | DE102022126706A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB202311795D0 (en) * | 2019-12-19 | 2023-09-13 | Motional Ad Llc | Foreground extraction using surface fitting |
US11999352B2 (en) * | 2021-12-15 | 2024-06-04 | Industrial Technology Research Institute | Method and system for extracting road data and method and system for controlling self-driving car |
US20230351767A1 (en) * | 2022-04-28 | 2023-11-02 | Toyota Research Institute, Inc. | Shared vision system backbone |
US20240010224A1 (en) * | 2022-07-07 | 2024-01-11 | Gm Cruise Holdings Llc | System and method for using virtual figures to support users of autonomous vehicles |
CN117292349B (zh) * | 2023-11-22 | 2024-04-12 | 魔视智能科技(武汉)有限公司 | 确定路面高度的方法、装置、计算机设备及存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4479372B2 (ja) * | 2004-06-25 | 2010-06-09 | ソニー株式会社 | 環境地図作成方法、環境地図作成装置、及び移動型ロボット装置 |
EP2525328B1 (en) * | 2011-05-19 | 2017-10-18 | Pie Medical Imaging BV | Method and apparatus for determining optimal projection images |
US10486485B1 (en) * | 2017-04-19 | 2019-11-26 | Zoox, Inc. | Perception based suspension control |
US10824862B2 (en) * | 2017-11-14 | 2020-11-03 | Nuro, Inc. | Three-dimensional object detection for autonomous robotic systems using image proposals |
US10991156B2 (en) * | 2018-12-05 | 2021-04-27 | Sri International | Multi-modal data fusion for enhanced 3D perception for platforms |
US11532168B2 (en) * | 2019-11-15 | 2022-12-20 | Nvidia Corporation | Multi-view deep neural network for LiDAR perception |
US11238650B2 (en) * | 2020-03-13 | 2022-02-01 | Nvidia Corporation | Self-supervised single-view 3D reconstruction via semantic consistency |
CN112102472B (zh) * | 2020-09-01 | 2022-04-29 | 北京航空航天大学 | 稀疏三维点云稠密化方法 |
US20220385721A1 (en) * | 2021-05-28 | 2022-12-01 | Streem, Llc | 3d mesh generation on a server |
-
2021
- 2021-10-28 US US17/452,747 patent/US20230135088A1/en active Pending
-
2022
- 2022-10-13 DE DE102022126706.7A patent/DE102022126706A1/de active Pending
- 2022-10-26 CN CN202211315784.8A patent/CN116051779A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230135088A1 (en) | 2023-05-04 |
DE102022126706A1 (de) | 2023-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11688181B2 (en) | Sensor fusion for autonomous machine applications using machine learning | |
US11897471B2 (en) | Intersection detection and classification in autonomous machine applications | |
US11675359B2 (en) | Path detection for autonomous machines using deep neural networks | |
US11906660B2 (en) | Object detection and classification using LiDAR range images for autonomous machine applications | |
US11966838B2 (en) | Behavior-guided path planning in autonomous machine applications | |
CN113496290B (zh) | 使用采用模拟对象增强的图像训练机器学习模型 | |
US20210201145A1 (en) | Three-dimensional intersection structure prediction for autonomous driving applications | |
US20240127062A1 (en) | Behavior-guided path planning in autonomous machine applications | |
CN113994390A (zh) | 针对自主驾驶应用的使用曲线拟合的地标检测 | |
US12039663B2 (en) | 3D surface structure estimation using neural networks for autonomous systems and applications | |
US20230135088A1 (en) | 3d surface reconstruction with point cloud densification using deep neural networks for autonomous systems and applications | |
US20230136235A1 (en) | 3d surface reconstruction with point cloud densification using artificial intelligence for autonomous systems and applications | |
US20230213945A1 (en) | Obstacle to path assignment for autonomous systems and applications | |
CN114973050A (zh) | 自动驾驶应用中深度神经网络感知的地面实况数据生成 | |
US20230139772A1 (en) | 3d surface structure estimation using neural networks for autonomous systems and applications | |
CN116795091A (zh) | 自主系统和应用程序的环境重建和路径规划 | |
JP2023066377A (ja) | 自律システム及びアプリケーションのための人工知能を使用した点群高密度化を有する3d表面再構成 | |
US12100230B2 (en) | Using neural networks for 3D surface structure estimation based on real-world data for autonomous systems and applications | |
US20240273926A1 (en) | Using neural networks for 3d surface structure estimation based on real-world data for autonomous systems and applications | |
US20240280372A1 (en) | Machine learning based landmark perception for localization in autonomous systems and applications | |
US20240281988A1 (en) | Landmark perception for localization in autonomous systems and applications | |
CN118633109A (zh) | 用于自主系统和应用的使用深度信息的地面表面估计 | |
CN118113036A (zh) | 使用超声传感器用于自主系统及应用的传感器融合 | |
CN118503922A (zh) | 用于自主系统及应用的使用多边形的对象检测 | |
CN117944711A (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 |