CN114973050A - 自动驾驶应用中深度神经网络感知的地面实况数据生成 - Google Patents
自动驾驶应用中深度神经网络感知的地面实况数据生成 Download PDFInfo
- Publication number
- CN114973050A CN114973050A CN202210173371.4A CN202210173371A CN114973050A CN 114973050 A CN114973050 A CN 114973050A CN 202210173371 A CN202210173371 A CN 202210173371A CN 114973050 A CN114973050 A CN 114973050A
- Authority
- CN
- China
- Prior art keywords
- annotation
- lidar
- frame
- scenes
- camera
- 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 abstract description 52
- 238000000034 method Methods 0.000 claims description 80
- 238000012545 processing Methods 0.000 claims description 44
- 230000008569 process Effects 0.000 claims description 24
- 238000003860 storage Methods 0.000 claims description 22
- 230000008447 perception Effects 0.000 claims description 15
- 238000013135 deep learning Methods 0.000 claims description 11
- 238000012800 visualization Methods 0.000 claims description 11
- 239000000523 sample Substances 0.000 claims description 7
- 238000004088 simulation Methods 0.000 claims description 5
- 230000001360 synchronised effect Effects 0.000 abstract description 6
- 230000006870 function Effects 0.000 description 58
- 230000015654 memory Effects 0.000 description 53
- 230000000875 corresponding effect Effects 0.000 description 38
- 238000001514 detection method Methods 0.000 description 38
- 239000003550 marker Substances 0.000 description 27
- 238000010801 machine learning Methods 0.000 description 24
- 238000004891 communication Methods 0.000 description 23
- 238000013527 convolutional neural network Methods 0.000 description 21
- 238000012549 training Methods 0.000 description 20
- 238000007726 management method Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 17
- 238000013481 data capture Methods 0.000 description 16
- 239000013598 vector Substances 0.000 description 16
- 238000004422 calculation algorithm Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 13
- 230000000007 visual effect Effects 0.000 description 12
- 230000002093 peripheral effect Effects 0.000 description 11
- 238000012805 post-processing Methods 0.000 description 10
- 238000000275 quality assurance Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 8
- 230000033001 locomotion Effects 0.000 description 8
- 238000013439 planning Methods 0.000 description 8
- 230000009471 action Effects 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 230000002452 interceptive effect Effects 0.000 description 6
- 238000013473 artificial intelligence Methods 0.000 description 5
- 238000007667 floating Methods 0.000 description 5
- 238000005070 sampling Methods 0.000 description 5
- 230000003044 adaptive effect Effects 0.000 description 4
- 230000001276 controlling effect Effects 0.000 description 4
- 230000007613 environmental effect Effects 0.000 description 4
- 238000005259 measurement Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 230000008093 supporting effect Effects 0.000 description 4
- 230000002123 temporal effect Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000001815 facial effect Effects 0.000 description 3
- 239000000446 fuel Substances 0.000 description 3
- 230000001976 improved effect Effects 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000001149 cognitive effect Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 230000036541 health Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001960 triggered 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
- 101100248200 Arabidopsis thaliana RGGB gene Proteins 0.000 description 1
- 238000006424 Flood reaction Methods 0.000 description 1
- 241000282412 Homo Species 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
- 235000004522 Pentaglottis sempervirens Nutrition 0.000 description 1
- 206010034960 Photophobia Diseases 0.000 description 1
- 241001272996 Polyphylla fullo Species 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000010420 art technique Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000007621 cluster analysis Methods 0.000 description 1
- 230000019771 cognition 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
- 238000012790 confirmation Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 208000013469 light sensitivity Diseases 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 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
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000001556 precipitation Methods 0.000 description 1
- 238000000513 principal component analysis Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000002310 reflectometry Methods 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000035939 shock Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013526 transfer learning Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 238000002604 ultrasonography Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 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/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
- G06V10/945—User interactive design; Environments; Toolboxes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/50—Context or environment of the image
- G06V20/56—Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2219/00—Indexing scheme for manipulating 3D models or images for computer graphics
- G06T2219/004—Annotating, labelling
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- Image Analysis (AREA)
- Control Of Driving Devices And Active Controlling Of Vehicle (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
公开了自动驾驶应用中深度神经网络感知的地面实况数据生成。注释管线可用于为诸如自主或半自主车辆感知网络之类的深度神经网络产生2D和/或3D地面实况数据。最初,传感器数据可以用不同类型的传感器捕获并同步以对齐代表相似世界状态的传感器数据帧。可以对对齐的帧进行采样并打包成要注释的注释场景序列。注释项目可以分解为模块化任务并编码到标记工具中,该工具将任务指派给标记者并使用逐步执行任务的向导安排输入的顺序。在任务期间,可以同时呈现注释场景中的每种类型的传感器数据,并且可以跨传感器模态投射信息以提供有用的上下文信息。在已经完成所有注释任务后,可以以任何合适的格式导出生成的地面实况数据。
Description
背景技术
设计一个***以在没有监督的情况下自主和安全地驾驶车辆是非常困难的。一辆自主车辆至少应该能够像一个细心的司机一样执行功能——他利用感知和行动***,该***具有在复杂环境中识别和应对移动和静态障碍物的惊人能力——以避免与沿车辆路径的其他对象或结构碰撞。因此,检测动画对象的实例(例如汽车、行人等)和环境其他部分的能力对于自动驾驶感知***通常至关重要。传统的感知方法通常依靠相机或LiDAR传感器来检测环境中的对象,并且已经使用深度神经网络(DNN)开发了多种方法来执行LiDAR和相机感知。此类DNN的类别包括在透视图中对相机图像执行全景分割的DNN,以及从LiDAR点云执行自上而下或“鸟瞰图”(BEV)对象检测的DNN。
为了训练DNN以适当的准确度执行感知,需要使用准确的地面实况数据训练DNN。由于计算限制,实时DNN感知通常在二维(2D)中执行,因此这些网络的地面实况通常以2D形式给出。然而,随着技术的进步,三维(3D)感知开始变得实用,并且对高质量3D地面实况数据的需求尚未得到满足。
用于在自动驾驶应用中为DNN感知生成地面实况的常规技术具有多种缺点。以上述示例为例,第一DNN在透视图中执行相机图像的全景分割,第二DNN从LiDAR点云的自上而下投影执行对象检测。在这种情况下,第一DNN将需要带有地面实况注释的相机图像,而第二DNN将需要带有地面实况注释的自上而下的LiDAR投影。常规地,这些类型的地面实况注释是在单独的标记过程中生成的。然而,在某些情况下,很难甚至不可能生成准确的标签。以LiDAR和RADAR标签为例,这些模态生成稀疏数据,有时缺乏应用准确标签所需的粒度和上下文。在自上而下的视图中,区分行人或自行车可能具有挑战性甚至不可能,因为这些对象的自上而下视图通常看起来与其他对象(如电线杆、树干或灌木)的自上而下视图相似。因此,传统的标记技术可能会导致地面实况数据出现错误。理想情况下,这些错误会在质量检查期间被捕获,但仍会对吞吐量和效率产生负面影响,并且会浪费计算资源。
发明内容
本公开的实施例涉及为深度神经网络(DNN)(例如在自主或半自主车辆、机器人或其他对象类型中执行感知的那些)产生2D和/或3D地面实况数据的注释管线。
通常,本文描述的注释管线是改进的工作流和软件接口,其简化了高质量地面实况数据的产生。最初,可以在捕获会话期间使用不同类型的传感器(传感器模态)捕获传感器数据。来自不同传感器的数据可以同步以对齐代表相似世界状态的传感器数据帧。在涉及LiDAR和相机的示例中,随着LiDAR自旋的进行并观察环境的不同部分,可以基于相机相对于LiDAR自旋起始角度的视角和LiDAR自旋需要多长时间才能与相机的视野对齐来选择任何给定LiDAR自旋的时间上最接近的相机帧。在一些实施例中,可以确定和/或应用相对于LiDAR自旋开始的每台相机时间或索引偏移,以将每个相机的相机帧与LiDAR帧对齐。通常,不同类型的传感器数据的帧可以被对齐、采样和打包成一系列要注释的注释场景。
在一些实施例中,注释项目可以被分解成模块化任务,这些模块化任务可以被指派给不同的标记者。在涉及相机和LiDAR的非限制性示例中,最初可以注释序列中的一些或所有相机图像,然后可以注释序列中的一些或所有LiDAR帧(例如,首先是自上而下的2D包围盒,然后是3D包围盒),出现在连续注释场景中的对象可以被链接,然后出现在两种传感器模态(LiDAR和相机帧)中的对象可以被链接在一起。注释任务可以被编码到标记工具中,该工具将任务指派给标记者并使用向导来安排输入的顺序,该向导引导标记者完成任务。在注释任务期间,可以将注释场景中的每种类型的传感器数据呈现给标记者(例如,并排),和/或可以跨传感器模态投射信息以提供有用的上下文信息,例如不同类型的传感器数据之间的对应关系。在一些实施例中,标记工具可以使标记者通过序列中的每个注释场景的每个对象的注释过程。
在注释项目中的一些或所有注释任务已经完成之后,可以以任何合适的格式导出得到的地面实况数据。因此,可以使用导出的地面实况数据对一个或更多个机器学习模型进行训练。
附图说明
下面结合附图详细描述本发明用于生成用于深度神经网络感知的地面实况数据的***和方法,其中:
图1是示出根据本公开的一些实施例的示例注释管线的数据流程图;
图2是示出根据本公开的一些实施例的LiDAR自旋和两个相机之间的示例对齐的图;
图3是示出根据本公开的一些实施例的传感器数据索引的示例对齐的表格;
图4是示出根据本公开的一些实施例的数据捕获会话、注释场景和注释场景片段的示例的图;
图5是根据本公开的一些实施例的用于图像标记的示例用户接口的图示;
图6是根据本公开的一些实施例的用于相机辅助LiDAR标记的示例用户接口的图示;
图7是根据本公开的一些实施例的用于具有取向向量的相机辅助LiDAR标记的示例用户接口的图示;
图8是根据本公开的一些实施例的用于具有三维(3D)包围盒的相机辅助LiDAR标记的示例用户接口的图示;
图9是根据本公开的一些实施例的用于LiDAR跟踪的示例用户接口的图示;
图10是根据本公开的一些实施例的用于相机-LiDAR链接的示例用户接口的图示;
图11是根据本公开的一些实施例的示例地面实况注释的图示;
图12是示出根据本公开的一些实施例的用于从不同类型的传感器生成传感器数据的地面实况注释的方法的流程图;
图13是示出根据本公开的一些实施例的用于生成LiDAR和相机帧的地面实况注释的方法的流程图;
图14A是根据本公开的一些实施例的示例自主车辆的图示;
图14B是根据本公开的一些实施例的图14A的示例自主车辆的相机位置和视野的示例;
图14C是根据本公开的一些实施例的图14A的示例自主车辆的示例***架构的框图;
图14D是根据本公开的一些实施例的用于一个或更多个基于云的服务器和图14A的示例自主车辆之间的通信的***图;
图15是适用于实现本公开的一些实施例的示例计算设备的框图;以及
图16是适用于实施本公开的一些实施例的示例数据中心的框图。
具体实施方式
上述问题的一种潜在解决方案是跨传感器模态投射信息,这可以通过提供有用的上下文信息来帮助标记者。然而,这种可能性带来了许多挑战。传统上,地面实况LiDAR注释仅限于自上而下的2D包围盒,但自上而下的包围盒不能很好地投影到相机空间中,并且可能无法提供足够的额外上下文来帮助标记者。此外,即使不是不可能,也很难在不同的传感器模态之间获得完美的时间对齐。即使假设配置有多个传感器(例如,相机和LiDAR传感器),在理想情况下,在特定时间点应用触发器,所有传感器同时触发。实际上,这种理想情况几乎不可能实现,因为同步相机、同步不同类型的传感器、延迟线的差异、采样频率的差异(例如,以30fps运行的相机与以10fps运行的LiDAR)等的挑战。以LiDAR和相机为具体示例,LiDAR传感器自旋需要时间(例如,每转100毫秒),因此相对于LiDAR自旋的位置完美同步特定相机是具有挑战性的,而且通常几乎是不可能的。传感器之间的空间对齐也可能存在实际限制,因为每个传感器的单独校准通常无法恢复完美对齐所需的所有自由度。因此,跨传感器模态投射信息可能会混合来自不同世界状态的信息,从而可能抵消好处。
为了解决这些和其他挑战,公开了与注释管线相关的***和方法,该注释管线为深度神经网络(DNN)(例如以自主或半自主车辆、机器人或其他对象类型执行感知的那些)生成2D和/或3D地面实况数据。尽管本公开可以关于示例自主车辆1400(在本文中也称为“车辆1400”或“自我车辆1400”,其示例在本文中关于图14A-14D进行描述)进行描述,这不是限制性的。例如,本文所述的***和方法可用于为非自动驾驶车辆、半自动驾驶车辆(例如,在一个或更多个高级驾驶员辅助***(ADAS)中)、机器人、仓库车辆、越野车、飞行器、船和/或其他车辆类型中的DNN生成地面实况训练数据。此外,虽然本公开可以关于自动驾驶进行描述,但这不旨在进行限制。例如,本文描述的***和方法可用于为机器人(例如,机器人的路径规划)、航空***(例如,无人机或其他飞行器的路径规划)、划船***(例如,船或其他水船的路径规划)和/或其他技术领域,例如定位、路径规划和/或其他过程中的DNN生成训练数据。
通常,本文描述的注释管线是改进的工作流和软件接口,其比现有技术流线化更高质量的地面实况数据的产生。最初,在捕获会话期间使用不同类型的传感器(传感器模态)捕获传感器数据。为了识别有助于注释任务的有用上下文信息,来自不同传感器模态的数据被同步以组成一系列注释场景(例如,大约在同一时间获取的传感器数据集)。可以选择并指定序列的期望片段用于标记,并且可以将期望的注释分解为一组线性任务。不同的任务可以基于传感器类型、被标记对象的类型、注释细节的级别和/或其他来拆分。可以将任务输入或以其他方式编码到标记工具中,该工具将任务指派给标记者并使用引导标记者完成任务的向导来安排输入的顺序。在注释任务期间,可以将注释场景中的每种类型的传感器数据呈现给标记者(例如,并排),和/或可以跨传感器模态投射信息以提供有用的上下文信息,例如不同类型传感器数据之间的对应关系。在某些情况下,某些类型的注释可能会自动生成。当部分或全部注释任务完成时,标记工具可以以任何合适的格式导出得到的地面实况注释。
在一些实施例中,注释项目可以被分解成模块化任务,这些模块化任务可以被指派给不同的标记者。在涉及相机和LiDAR的非限制性示例中,最初标记序列中的一些或所有相机图像,然后标记序列中的一些或所有LiDAR帧(例如,首先是自上而下的2D包围盒,然后是3D包围盒),可以链接出现在连续注释场景中的对象,然后将出现在两种传感器模态中的对象链接在一起。附加地或替代地,注释项目可以基于标签的类型(例如,在给定的任务中,仅标记汽车、交通标志或道路场景中的一些其他元素)、详细程度(例如,在给定任务中,仅对对象足迹应用折线或应用完整的3D包围盒),和/或以其他方式拆分为多个阶段或任务。通过分解注释项目并提示标记者执行离散的项目特定任务,注释管线可以模块化,因此标记者可以一次专注于离散任务。
在任何给定的注释任务期间,标记工具的界面可以呈现注释场景中的不同类型的传感器数据(例如,并排)和/或跨传感器模态投射信息以提供有用的上下文信息。投影信息可以包括传感器检测(例如,点、平面、扫描线)、注释、指定传感器数据帧内的特定位置的输入探针,和/或其他信息。通过在注释任务期间呈现上下文信息,标记者能够应用更准确的标签。例如,一组行人可能在一个特定的LiDAR数据帧中表示,只有几个点检测,但通过呈现相应的相机帧,标记者可以很容易地看到隐藏在LiDAR数据中的行人。类似地,如果标记者不确定特定LiDAR检测代表什么类型的障碍物,在一些实施例中,标记者可以点击LiDAR检测,并且可以在相机帧中的对应点应用可视化(例如,识别一辆皮卡车)。然后,标记者可能能够在LiDAR帧上应用适当的标签。
本文描述的标记工具和注释管线可以提供优于现有技术的多种益处。通常,为正在查看传感器数据的人工标记者提供额外的上下文可以提高手动标记的准确性和效率,并启用以前无法实现的某些类型的地面实况标签。例如,通过向LiDAR数据呈现附加上下文(例如(拼接)相机图像),标记者现在可以准确地生成3D LiDAR标签,例如3D包围盒。借助在LiDAR空间中注释的3D包围盒,这些标签可以投射到相应的相机图像中,为相机标记提供有用的上下文,这可以使标记者生成更准确的相机标签。因此,本文描述的技术提供了对地面实况更准确表示的规范,这可用于训练更准确的DNN。
此外,在标记期间向标记者提供附加上下文通常使标记者更容易产生标签。例如,呈现不同类型传感器数据的并排视图和/或说明跨传感器模态的对应关系使标记者更容易理解数据,减少认知负荷并加速认知。结果,与现有技术相比,本文所述的标记工具使标记者与计算机的交互更高效。这种改进在效率和吞吐量方面有助于整个工作流程,因此,与现有技术相比,减少了对计算资源的需求。换句话说,工具越好,标记效率越高,吞吐量越高。通过使工具更加用户友好,本技术的各个方面通过减少对现有技术的返工量来加速注释工作流程。
此外,拆分注释任务并将注释项目分解为易于消化的任务简化了注释过程并减少了信息过载的发生率。许多公司通常会指示标记者一次执行适用于每帧传感器数据的所有注释任务,这导致需要大量训练的复杂标记过程。通过将所需的注释分解为更小、更易消化的任务,这些任务可以指派给许多标记者,从而使标记管线更具可扩展性。此外,通过按传感器类型拆分注释任务,标记过程对传感器模态之间的时间或空间错位不那么敏感。例如,即使LiDAR帧和相应的相机帧没有完美对齐,对标签精度的影响也很小,因为LiDAR注释任务是直接在LiDAR帧中执行的。在此示例中,相应的相机帧仅用作软引导,因此任何错位都不会硬编码为地面实况。最后,在包括链接任务的实施例中,其中标记者将先前在不同传感器模态和/或注释场景中做出的注释关联起来,通过将该任务置于其他任务之后,链接任务可以用作质量检查,因为有利于标记者查看来自传感器模态和/或注释场景的注释。因此,使用此链接任务无需执行单独的质量检查,进一步改进了整体工作流程。
因此,本文描述的标记工具和注释管线可用于生成更准确的地面实况表示,其可用于训练更准确的DNN。
示例地面实况注释管线
深度神经网络(DNN)已被用于各种任务,例如对象检测和分类。为了获得诸如此类的DNN的训练数据,可以使用注释管线来生成地面实况数据。通常,可以根据要训练的DNN的类型来定制由注释管线产生的地面实况数据。对于执行感知的DNN,可以定制注释管线以产生2D和/或3D地面实况数据,例如标记的相机图像(例如,在透视图中)、LiDAR或RADAR数据(例如,在自上而下的视图中),和/或其他传感器数据。尽管针对执行感知的DNN描述了某些实施例,但本文中描述的技术可以适用于为其他类型的DNN生成地面实况数据。
参考图1,图1是说明根据本公开的一些实施例的示例注释管线100的数据流程图。应当理解,本文描述的这种和其他布置仅作为示例阐述。除了所示的那些之外或代替所示的那些,可以使用其他布置和元件(例如,机器、接口、功能、命令、功能分组等),并且可以完全省略一些元件。此外,本文描述的许多元件是功能实体,它们可以实现为离散或分布式组件或与其他组件结合,并以任何合适的组合和位置实现。本文描述为由实体执行的各种功能可以由硬件、固件和/或软件来执行。例如,可以通过处理器执行存储在存储器中的指令来执行各种功能。
在高层次上,注释管线100可以包括流线化高质量地面实况数据的产生的工作流和软件接口。在图1所示的示例中,注释管线100包括数据捕获110、传感器数据对齐120、场景生成130、场景管理140、注释150、后处理160、质量保证检查170、地面实况数据导出180和地面实况数据消耗190。例如,可以执行真实世界数据的数据捕获110以从不同类型的传感器(传感器模态)收集传感器数据,并且可以执行不同类型传感器数据的传感器数据对齐120以同步传感器数据,从而使类似世界状态的传感器数据(例如,基本上同时捕获的传感器数据)可以组合在一起并在注释任务期间呈现。场景生成130可用于组成注释场景序列(例如,在大约时间获取的传感器数据集,例如场景序列145)。例如,传感器数据对齐120可以涉及向传感器数据的捕获时间或一些其他索引添加偏移,并且场景生成130可以涉及对传感器数据进行采样和/或为序列中的每个注释场景生成投影图像。可以执行场景管理140以选择注释场景的一个或更多个片段(例如,没有雨的数据捕获会话的片段)并指定该一个或更多个片段用于注释。
在高层次上,可以使用诸如网络工具之类的软件工具(也称为标记工具)来促进注释150。通常,特定的注释项目可以被分解和/或安排成一组线性任务形成标签配方,它可以拆分项目并根据传感器类型、被标记对象的类型、注释细节级别和/或其他方式指定不同的任务。可以将任务输入或以其他方式编码到标记工具中,该工具可以将任务指派给标记者并使用引导标记者通过注释任务的向导来安排输入的顺序。在LiDAR和相机地面实况数据的示例注释项目中,首先标记序列中的一些或所有相机图像,然后标记序列中的一些或所有LiDAR帧(例如,相机和LiDAR输出152),然后出现在多个LiDAR帧中的对象相互关联(例如,LiDAR跟踪输出154),然后将出现在多个传感器模态中的对象链接在一起(例如,相机+LiDAR链接输出156)。在一些实施例中,LiDAR标记可涉及首先用2D包围盒标记LiDAR帧,然后用3D包围盒或长方体标记LiDAR帧(例如,3D LiDAR标记输出155)。标记工具和这个示例注释项目将在下面更详细地描述。
继续高层次概述,在标记者已完成项目中的注释任务之后,后处理160可用于生成人类通常不能产生的注释,例如生成深度值。在一些实施例中,可以对标记的数据执行质量保证检查170以识别潜在错误并标注某些注释场景以进行返工。在一些实施例中,质量保证检查170可以在注释150期间至少部分地并入注释任务中,例如链接任务,这可以消除在后处理160之后对单独的质量保证检查的需要。在一些或全部之后注释任务完成后,所得到的地面实况数据可以以任何合适的格式从标记工具中导出,无论是自动触发还是手动触发(地面实况数据导出180),并且可以消耗地面实况数据(地面实况数据消耗190),例如,通过使用地面实况数据来训练相应的DNN。
通常,地面实况数据可以至少部分地从真实世界数据生成。因此,在一些实施例中,为了执行数据捕获110,一个或更多个车辆(例如,图14A-D的车辆1400)可以从现实世界(例如,物理的)环境的一个或更多个车辆的一个或更多个传感器收集传感器数据。一个或更多个车辆的传感器可以包括但不限于一个或更多个全球导航卫星***传感器1458(例如,全球定位***传感器)、一个或更多个RADAR传感器1460、一个或更多个超声波传感器1462、一个或更多个LiDAR传感器1464、一个或更多个惯性测量单元(IMU)传感器1466(例如,一个或更多个加速度计、一个或更多个陀螺仪、一个或更多个磁罗盘、一个或更多个磁力计等)、一个或更多个自我运动传感器、一个或更多个麦克风1496、一个或更多个立体相机1468、一个或更多个广角相机1470(例如,鱼眼相机)、一个或更多个红外相机1472、一个或更多个环绕相机1474(例如,360度相机)、一个或更多个远程和/或中程相机1498、一个或更多个速度传感器1444(例如,用于测量一个或更多个车辆的速度)、一个或更多个振动传感器1442、一个或更多个转向传感器1440、一个或更多个制动传感器(例如,作为制动传感器***1446的一部分)和/或其他传感器类型。一个或更多个车辆可以包括自主车辆、半自主车辆、非自主车辆,和/或可以包括除车辆1400之外的对象或车辆,例如机器人、无人机、船只、飞行器、无人驾驶飞行器(UAV)、等等。
一个或更多个车辆可以包括各种类型的车辆硬件。例如,车辆硬件可能负责管理由传感器生成的传感器数据(例如,使用由车辆硬件执行的自动驾驶软件堆栈的传感器管理器)。在一些实施例中,一个或更多个车辆可以包括具有世界状态管理器的自动驾驶软件堆栈,该世界状态管理器使用一个或更多个地图(例如,3D地图)、一个或更多个定位组件、一个或更多个感知组件和/或类似物来管理世界。自动驾驶软件堆栈可以包括一个或更多个规划组件(例如,作为规划层的一部分)、一个或更多个控制组件(例如,作为控制层的一部分)、一个或更多个致动组件(例如,作为致动层的一部分)、一个或更多个避障组件(例如,作为避障层的一部分)和/或其他组件。通常,在一些实施例中,车辆硬件可以包括用于基于传感器数据、一个或更多个机器学习模型(例如,神经网络)和/或类似物控制一个或更多个车辆。因此,各种类型的车辆硬件可以被配置为安装在车辆内和/或由车辆在执行自动驾驶软件堆栈时使用,该自动驾驶软件堆栈至少部分地控制车辆在一个或更多个真实世界物理环境中的导航。
通常,数据捕获110可涉及通过使用不同类型的传感器(传感器模态)观察真实世界环境来捕获传感器数据,传感器例如为LiDAR和安装在车辆上的一个或更多个相机。通常,由于各种原因,可能会以不同的频率从不同的传感器获取传感器数据,例如延迟线的差异、采样频率的差异(例如,以30fps运行的相机与以10fps运行的LiDAR)、不同的触发时间等原因。为了便于分组和呈现相似世界状态的传感器数据(例如,基本上同时捕获的传感器数据),可以执行传感器数据对齐120以同步来自不同传感器模态的传感器数据。在一些实施例中,特定传感器可以用作参考传感器。非参考传感器可以称为子传感器。对于来自参考传感器的给定传感器数据帧(参考帧),可以在参考帧和来自每个子传感器的时间上最接近的传感器数据帧之间识别诸如时间增量的偏移量。每个子传感器的偏移量可以被记录和/或应用于来自子传感器的传感器数据的捕获时间或一些其他索引。
以LiDAR和相机为具体示例,在一些实施例中,可以选择LiDAR作为参考传感器,并且可以基于相机相对于LiDAR自旋开始角度的视角来选择每个相机的在时间上最接近的帧,并且可以相对于LiDAR自旋开始应用每个相机的时间或索引偏移。图2是示出根据本公开的一些实施例的LiDAR自旋和两个相机之间的示例对齐的图。考虑一个带有参考时间戳t的完成的LiDAR自旋,它指的是自旋开始的时间(t+0ms)。使用示例LiDAR传感器,假设完成一次自旋(自旋持续时间)需要100毫秒,并且自旋频率为10Hz。在图2中,示例性LiDAR帧210已经与圆圈叠加以表示LiDAR自旋随时间的进展。在此示例中,箭头220表示在时间t+0ms时(此时自旋已经开始)LiDAR自旋的视场中心的取向。自旋在t+50ms时顺时针方向前进到箭头225,在t+75ms时到箭头230,在t+100ms时回到箭头220,这表明自旋已经结束。
在图2中,前置相机240和后置相机250这两个相机的视场也已经叠加在LiDAR帧210的顶部。为了从每个相机中识别出在时间上最接近LiDAR帧210的帧,可以确定LiDAR自旋相对于每个相机的进程和取向,并且可以基于LiDAR自旋到达相机视场的时间来确定每个相机相对于LiDAR的偏移量。例如,在t+50ms(箭头225),LiDAR自旋已经进入前置相机240的视场,因此前置相机240可以使用50ms的偏移量。对于一些儿童传感器,例如后置相机250,子传感器观察到的传感器数据可能具有与LiDAR自旋的不相交或不完整部分对应的扇区,因此可能无法从子传感器中选择与LiDAR自旋完美对齐的传感器数据的特定帧。通常,可以选择来自子传感器的传感器数据的任何帧。在图2所示的示例中,可以选择在或接近t+100ms(箭头220)处LiDAR自旋结束时捕获的帧。
示例帧选择和对应的偏移在轴260上示出,参考帧270(例如,表示LiDAR帧210)、帧280(例如,表示前置相机240)和帧290(例如,表示后置相机250)。请注意,由子传感器捕获的时间上最接近的传感器数据帧可能无法与代表子传感器视场中心的LiDAR自旋的部分完美对齐。例如,LiDAR帧(例如,参考帧270)可以表示世界状态,该世界状态对应于来自前置相机在50ms捕获的图像,但由该相机捕获的时间上最接近的图像可能已经在40ms或45ms(例如,帧280)捕获。在这种情况下,可以选择在45ms捕获的图像并将其与LiDAR帧配对,和/或可以识别对应的偏移量(例如,45ms)并将其与对应的子传感器(例如,前置相机240)相关联。
通常,为每个子传感器识别的偏移量可以被记录和/或应用于来自子传感器的传感器数据的捕获时间或其他索引。例如,假设传感器设置产生原始传感器数据,其中来自每个传感器的传感器数据被单独索引。在一些实施例中,可应用特定子传感器的识别出的偏移量来调整子传感器的传感器数据的索引(或识别对齐的传感器数据的索引)。因此,确定和/或应用每个传感器的偏移量可以用于对齐不同类型的传感器数据(例如,通过对齐它们的索引)。图3是示出根据本公开的一些实施例的传感器数据索引的示例对齐的表格。在此示例中,在列320(LiDAR帧索引)和列330-360(由不同相机捕获的图像的索引)中说明传感器数据的索引。在该示例中,按时间顺序排列的场景索引包括在列310中,并且对于每个场景索引值,表中的相应行包含标识对齐的传感器数据的索引(例如,对于特定注释场景)。在该示例中,已相对于每个参考帧应用了每个子传感器(例如,每个相机)的识别偏移量,以识别由子传感器捕获的传感器数据的在时间上最接近的帧的相应索引。
返回图1,可以执行场景生成130以组成注释场景序列(例如,在大约时间获取的传感器数据集,例如场景序列145)。通常,参考和子传感器数据可以使用识别的一个或更多个偏移量进行采样。如果原始传感器数据不是图像格式(例如,LiDAR或RADAR点云),在一些实施例中,原始传感器数据(例如,点云)可以被投射以形成投影图像(例如,自上而下的图像)。继续以LiDAR用作参考传感器而相机用作子传感器的示例,对于LiDAR数据的每一帧(例如,LiDAR点云),可以通过投射LiDAR点云来组成注释场景以生成投影图像(例如,自上而下的图像)和来自每个相机的采样图像(例如,基于相应的偏移量和/或索引)以识别由每个相机捕获的时间上最接近的图像。投影图像(LiDAR帧)和相机图像(相机帧和/或从多个图像拼接在一起的合成图像或全景图)可以被打包、分组或以其他方式相互关联作为注释场景。例如,可以重复该过程以生成或以其他方式识别每个参考帧的注释场景。在一些实施例中,可以执行场景管理140以选择注释场景的一个或更多个片段(例如,没有雨的数据捕获会话的片段)并指定用于标记的一个或更多个片段。
图4是示出根据本公开的一些实施例的数据捕获会话410、注释场景415和注释场景的片段421、422、423的示例的图。假设,例如,数据捕获会话410通过大城市的市中心执行,传感器在数据捕获会话410期间定期捕获传感器数据。作为非限制性示例,LiDAR自旋可以每100ms发生一次,并且一组相机可能每25ms(或其他一些增量)拍摄一次照片。场景415可以由捕获的数据构成(在图4中,未示出连续场景之间的划分)。在某些情况下,并非所有场景都有用。例如,在经常经历降水的城市中,可以过滤掉场景415以移除在数据捕获会话410期间下雨时捕获的场景415(例如,因为挡风玻璃或镜头上有雨滴)。通常,可以应用任何类型的过滤器(例如,自动或手动,基于数字或视觉特征、元数据标签、时间戳或其他)。因此,可以策划场景415以识别感兴趣的特定片段(例如,片段421、422、423),并且可以指定(例如,标记或以其他方式识别)识别的片段内的场景(例如,来自不同传感器模态的传感器数据)用于注释。
现在返回图1,注释150可以由人工标记者使用诸如网络工具之类的软件工具(也称为标记工具)来执行。通常,软件工具可以包括一个或更多个接口(例如,图形用户接口),该接口接受来自项目管理员的输入,识别和/或提供要标记的注释场景(例如,来自不同传感器模态的传感器数据)和一个或更多个注释任务。可以将期望的注释分解和/或排列成一组线性任务,形成标记配方,并且可以将任务的编码表示输入到标记工具中。不同的任务可能会被拆分——标签工具可能被配置为拆分和/或编码任务——基于传感器类型、要标记的对象类型或类别(例如,在给定任务中,仅标记汽车、交通标志或道路场景中的某些其他元素),注释细节的级别(例如,在给定任务中,标记包围盒与轮廓,仅应用对象足迹的折线,应用完整的3D包围盒,LiDAR中应用自上而下的2D包围盒,然后在后续通道中升级到3D)和/或其他方式。在一些实施例中,可以输入单独的任务以标记障碍物、车辆(例如,汽车、公共汽车、卡车等)、易受伤害的道路使用者(例如,摩托车、自行车、行人等)、环境部分(例如,可驾驶空间、人行道、建筑物、树木、电线杆等)、它们的子类(例如,步行的行人)、它们的某种组合等等。
注释任务可以被输入或以其他方式编码到标记工具中,并且标记工具可以协调不同注释任务的执行。例如,标记工具可以以任何合适的方式将任务指派给标记者,例如通过基于标记者可用性、指定的任务顺序或其他方式指派任务。在一些实施例中,标记工具可以使用引导标记者完成任务的向导来安排特定任务的输入(例如,注释)的顺序。在一些任务期间,注释场景中的每种类型的传感器数据可以呈现给标记者(例如,并排),和/或可以跨传感器模态投射信息以提供有用的上下文信息,例如不同类型的传感器数据之间的对应关系。
通常,标记工具可以接受指定地面实况注释(例如,边界、封闭区域、类别标签)的输入,并且标记工具可以将注释与传感器数据相关联。可以用标识传感器数据中的相关对象的实例的位置、几何形状、取向和/或类别的标签或其他标记物来注释(例如,手动、自动等)传感器数据(例如,LiDAR数据帧、RBG图像)。注释可以使用2D和/或3D绘图功能、另一种类型的合适的软件功能输入到标记工具中,和/或可以手绘和导入注释。通常,注释可以是综合产生的(例如,从计算机模型或渲染生成)、实际产生的(例如,根据真实世界数据设计和生成)、机器自动化的(例如,使用特征分析和学习从数据中提取特征和然后生成标签)、人工注释(例如,标记者或注释专家,输入注释)和/或它们的组合(例如,人工识别折线的顶点,机器使用多边形光栅器生成多边形)。通常,注释可以包括2D和/或3D包围盒、闭合折线或其他被绘制、注释、叠加和/或以其他方式与传感器数据相关联的边界形状。
作为涉及相机和LiDAR的非限制性示例,注释项目可以指定有有序的注释任务,使得最初标记序列中的一些或所有相机图像,然后标记序列中的一些或所有LiDAR帧(例如,首先是自上而下的2D包围盒,然后是3D包围盒),然后链接出现在多个注释场景中的对象(例如,对于已经标记的相机图像和LiDAR帧),然后将出现在多个传感器模态中的对象链接在一起。在一些实施例中,标记工具可以在特定注释任务期间同时呈现注释场景中的两种类型的传感器数据(例如,LiDAR帧和相机图像),和/或可以跨传感器模态投射信息以提供有用的上下文信息,例如不同类型的传感器数据之间的对应关系。在一些实施例中,辅助特征可以遍历来自前一帧的注释对象并提示标记者在当前帧中找到对应的对象。
继续涉及相机和LiDAR的示例,图5-10说明了用于LiDAR和相机帧的辅助3D地面实况标记的标记工具的示例用户接口。考虑示例注释项目,示例注释项目:包括第一注释任务,其中一个或更多个标记者最初注释序列中的一些或所有相机图像;第二注释任务,其中一个或更多个标记者在序列中的一些或所有LiDAR帧的第一遍中注释自上而下的2D包围盒;第三注释任务,其中一个或更多个标记者在序列中的标记的LiDAR帧的第二遍中注释3D包围盒;第四注释任务,其中一个或更多个标记者链接序列中不同注释场景中的相同对象;以及第五注释任务,其中一个或更多个标记者将序列中每个注释场景中的LiDAR和相机帧中的相同对象链接起来。图5是用于图像标记(例如,第一注释任务)的示例用户接口的图示。图6-8是用于相机辅助LiDAR标记(例如,第二注释任务和第三注释任务)的示例用户接口的图示。图9是用于LiDAR跟踪(例如,第四注释任务)的示例用户接口的图示,以及图10是根据本公开的一些实施例的用于相机-LiDAR链接(例如,第五注释任务)的示例用户接口的图示。
现在转向图5,图5示出了根据本公开的一些实施例的用于图像标记的示例用户接口500。用户接口500包括呈现要标记的特定相机图像510的面板,以及具有激活各种绘图和/或注释功能的各种交互元件的标记面板。在该示例中,标记面板包括标记按钮560,当该按钮处于活动状态时,允许用户识别和标记图像510的边界和/或对应的封闭区域。通常,用户接口500可以结合任何已知的2D或3D绘图或注释软件功能。作为非限制性示例,用户可以通过在图像510中点击(例如,在标识包围盒的初始角的位置处)、拖动以从初始角扩展2D包围盒,并在包围盒达到所需大小时释放(例如,在标识与初始角相对的第二角的位置处)来指定多边形(例如2D包围盒)。在一些实施例中,用户接口500可以允许用户缩放图像510和/或在图像510上平移。因此,用户可以绘制或以其他方式识别任何数量的区域(例如,区域520)。在一些实施例中(例如,在任何用户接口500-1000中),标记工具可以用来自传感器数据的前一帧的注释来初始化一组注释,并且标记者可以调整注释以适合当前帧。因此,标记工具可以减少或消除一遍又一遍地为同一对象重新创建注释的需要。
在一些实施例(例如,用户接口500-1000中的任何一个)中,标记工具可以包括标记面板,该标记面板包括传感器数据的特定帧中的注释对象的列表(例如,列表570)或其他标识。列表中的每个条目可以包括一个或更多个交互元件,例如标签按钮580和评论按钮585。标签按钮580(或一些其他交互元件)可以用于选择或识别图像中的相应注释(例如,启用编辑注释的输入),提示用户选择或编辑类别标签,或以其他方式。注释按钮585可以接受指定关于注释的任何笔记的文本输入。这些仅作为示例,并且可以将任何合适的绘图或注释功能结合到标记工具中。在一些实施例中,标记工具可以接受在时间上来回导航的输入(即,序列中的前一帧和下一帧)以改善用户对数据的理解。当用户完成对图像的标记时,用户可以提供用户完成的指示(例如,通过点击提交按钮590)。
图6是根据本公开的一些实施例的用于相机辅助LiDAR标记的示例用户接口600的图示。用户接口600包括面板,该面板呈现要标记的特定LiDAR帧620。在一些实施例中,用户接口600可以同时呈现要标记的特定LiDAR帧620,以及来自相同注释场景的对应图像610。例如,呈现的图像可以是空间配准的360度视图图像,由来自周围相机的同一注释场景中的拼接在一起形成合成图像的图像构成。通常,用户接口600可以呈现LiDAR帧620和图像610之间的对应关系(例如,对应区域)的可视化。在一些实施例中,用户接口600可以允许用户在其中一个帧中缩放和/或平移,并且用户接口600可以对另一个进行相应的调整。
在一些实施例中,标记工具可以跨传感器模态投射信息以说明跨传感器数据的对应关系。例如,捕获特定图像的相机的已知取向和位置可用于将图像取消投影到环境的3D表示中(例如,3D LiDAR坐标)并识别对应于特定的图像像素的3D位置(例如,在LiDAR空间中)。为了在另一个方向上投影,可以使用捕获图像的相机的已知取向和位置将LiDAR空间中的特定3D位置投射到图像空间中。通常,可以将各种类型的信息从LiDAR帧投射到相应的图像中,例如检测(例如,点、平面)、注释或其他区域。在一些实施例中,用户接口600可以跨传感器模态投射输入探针的位置,该输入探针随着用户的输入而移动。例如,当用户将鼠标悬停在LiDAR帧620上时,输入探针640(也在放大区域630中示出)可用于识别LiDAR空间中的相应3D位置(例如,通过将z值设置为零,拟合地平面的z值等),并且可以将3D位置投射到图像空间中以说明图像610中的对应点650。在一些实施例中,输入探针可以另外或替代地在相反方向上投射(例如,图像610的指定点可以投射到LiDAR帧620)。通过示出跨传感器模态的对应关系,用户接口600可以提供有用的上下文信息以帮助标记者生成更准确的注释。
在一些实施例中,作为每个LiDAR自旋的初始步骤,可以提示标记者将地平面拟合到LiDAR自旋。在一些实施例中,来自先前LiDAR自旋的拟合地平面可以传播到当前自旋,并且可以提示标记者将先前平面微调到当前平面,这可以加速标记过程。在一些实施例中,该数据拟合地平面可以为自上而下的LiDAR注释提供z值。因此,接收到的注释可以与指定的地平面对齐,这可以提高顶视图注释的准确性。附加地或替代地,在一些实施例中,用户接口600可以使用来自先前LiDAR自旋的注释来初始化一组注释,并且标记者可以调整注释以拟合当前自旋。因此,标记工具可以减少或消除一遍又一遍地为同一对象重新创建注释的需要。
在一些实施例中,用户接口600可以接受指定LiDAR帧620的2D多边形区域和/或由2D多边形区域表示的对象的取向的输入注释。由于LiDAR帧620可以是3D数据的投影(例如,LiDAR点云),输入注释可以适应LiDAR空间中的相应3D表示。例如,在LiDAR帧620是自上而下的投影图像的一些情况下,可以在LiDAR坐标系中的XY平面中创建带注释的区域(例如,z值为零,拟合地平面的z值),并且2D注释区域可以扩展到3D(例如,在随后通过一系列注释场景中,例如在随后的注释任务中),如下面更详细地解释的。
图7是根据本公开的一些实施例的用于利用取向矢量的相机辅助LiDAR标记的示例用户接口700的图示。与用户接口600一样,用户接口700可以接受指定LiDAR帧720的多边形区域的输入注释。在这个示例中,标记者已经指定包围盒730。在一些实施例中,标记工具可以接受指定取向矢量740(例如,通过在取向方向上单击和拖动)、类别标签750或其他类型的注释的输入。与用户接口600一样,用户接口700可以呈现LiDAR帧720和图像710之间的对应关系(例如,对应区域)的可视化,以协助注释任务。在此示例中,在LiDAR帧720中表示的对象的类别和取向在图像710中是可感知的。结果,通过将图像710与LiDAR帧720相关联地(例如,同时)呈现,标记者能够感知类别和取向,因此可以编码相应的一个或更多个注释。
图8是根据本公开的一些实施例的用于利用3D包围盒的相机辅助LiDAR标记的示例用户接口800的图示。在一些实施例中,相机辅助的LiDAR标记可以分解为用于2D和3D注释的单独任务。可以手动和/或自动生成3D注释。例如,可以将LiDAR标记分解为接受指定2D注释(例如,2D包围盒)的输入的第一遍,以及接受将2D注释调整为3D注释(例如,3D包围盒)的输入的第二遍或从2D注释自动生成3D注释的第二阶段(例如,作为图1的后处理160的一部分)。在涉及接受将2D注释调整为3D注释的输入的示例实施例中,在初始通过一系列自上而下的LiDAR帧期间接收到2D注释(例如,包围盒)的规范之后,标记工具可以引导标记者通过每个对象的过程。在此示例中,对于每个对象(例如,在第一遍期间指定的每个2D注释),标记工具可以在当前LiDAR帧中呈现对象对齐、放大的对象视图。例如,当前LiDAR帧(例如,LiDAR点云)的原始数据可以投射到一个或更多个视图中,例如对象的正面视图(例如,正面视图830)、对象的侧面视图(例如,侧面视图820)和对象的自上而下图(例如,自上而下图840),它们中的每一个都可以呈现在用户接口800中。在一些实施例中,可以附加地或替代地呈现LiDAR点云的3D表示(例如,3D视图810)。
用户接口800可以提示标记者在任何视图中指定每个对象的尺寸和/或取向(例如,偏航、俯仰、翻滚)。在以2D进行第一遍的示例中,可以呈现初始2D注释(在视图810、820、830、840的每一个中)。注意,在自上而下视图中进行的2D注释最初可在正面视图830和侧向视图820中可视化为一条线,和/或可在自上而下视图840和3D视图810中以所有两个维度可视化。在图8所示的示例中,标记者可以将2D注释调整为3D注释或以其他方式指定3D注释,例如,通过放置顶点、拖动手柄或以其他方式在任何视图中定义或操纵注释的表示(例如,在各个视图810、820、830、840中的包围盒815、825、835、845)。在一些实施例中,修改一个视图中的注释会更新修改可见的任何其他视图中的注释。因此,标记者可以将3D注释拟合到LiDAR数据(例如,LiDAR点云)。在标记者为特定对象指定3D注释后,用户可以提交注释(例如,通过单击下一步按钮或激活一些其他交互元件)以前进到LiDAR帧中的下一个对象。
图9是根据本公开的一些实施例的用于LiDAR跟踪的示例用户接口900的图示。在此示例中,用户接口900呈现连续的LiDAR帧910和920,以及来自同一注释场景的相应图像930和940。标记工具可以遍历前一帧中的对象(例如,在先前的注释任务期间输入的注释),并且用户接口900可以提示标记者在当前帧中找到对应的注释(例如,在先前的注释任务期间输入的)。在一些实施例中,可以应用对象检测和跟踪来跟踪带注释的对象随时间从帧到帧的移动,和/或初始化链接以供人工标记者确认或微调。在图9所示的示例中,标记者可以将注释950和960识别为相同的对象。在某些情况下,对象可能会在某些帧中被遮挡,但在其他帧中则不会被遮挡。因此,在一些实施例中,标记工具可以接受跨不相交的帧(例如,跳跃)链接对象(注释)的输入。
在一些实施例中,用户接口900可以强调对象被预测位于其中的估计区域。例如,可以调整第一帧(例如,LiDAR数据)中当前或选定对象的一个或更多个位置值,以补偿捕获数据的传感器的已知自我运动(例如,数据捕获车辆的已知的自我运动)。作为非限制性示例,对象(例如,包围盒)的注释的一个或更多个位置值和/或对象在LiDAR数据的第一帧(例如,包围盒的点中心、包围盒的角)中的一个或更多个代表性位置值可以进行自我运动补偿,并且用户接口900可以突出显示、勾画轮廓、平移到、缩放到和/或以其他方式强调LiDAR数据第二帧中的对应预测区域。在示例实现中,当标记者迭代遍历来自先前注释场景的已标记对象时,用户接口900可以通过呈现来自先前注释场景的已标记对象被预测在后续注释场景中的位置的可视化来引导标记者,例如,通过放大传感器数据中的估计区域来引导标记者。这样,用户接口900可以引导标记者从场景到场景识别对应的对象。在一些实施例中,即使具有相对低的采样率,用户接口900仍可提供有用的指导,因为自我运动补偿仍可在较低的采样率下提供有用的预测。
在图9中,用户接口900包括标记面板970,其包括激活相应注释功能的各种交互元件。例如,标签对按钮975在激活时可以允许用户识别和链接注释(例如,输入新链接)。可以选择不匹配原因980之一以指示来自一帧的注释在相邻帧中不可见或未标记。在一些实施例中,标记面板970可以呈现被呈现的连续帧的缩略图图像(例如,缩略图985a、985b),并且可以接受标记相机和/或LiDAR帧注释问题的输入。因此,注释跨传感器数据帧链接的注释任务可以至少部分用作质量保证检查(例如,图1的质量保证检查170)。当标记者完成链接一对相邻帧中的注释时,标记者可以确认990链接以前进到下一对相邻帧。尽管该示例说明了注释任务,其中一个或更多个标记者将出现在多个LiDAR帧中的对象链接起来,但是一些实施例附加地或替代地可以包括注释任务,其中一个或更多个标记者链接出现在多个相机帧中的对象。
图10是根据本公开的一些实施例的用于相机-LiDAR链接的示例用户接口1000的图示。在该示例中,用户接口1000呈现LiDAR帧1020,以及来自同一注释场景的相应图像1010。标记工具可以遍历注释场景中的对象(例如,在先前注释任务期间输入的注释),并且用户接口1000可以提示标记者在其他传感器模态中找到对应注释。通常,来自特定传感器的传感器数据的注释、对象轨迹和/或对象检测可以链接到来自不同传感器的传感器数据的相同对象的对应注释、对象轨迹和/或对象检测。例如,标记者可以将注释1040和1050识别为相同的对象。
在一些实施例中,用户接口1000可以强调对象被预测位于其中的估计区域。例如,可以将第一帧(例如,相机帧或LiDAR帧)中当前或选定对象的一个或多个位置值投射到第二帧(例如,LiDAR帧或相机帧)中并进行调整以补偿捕获数据的一个或更多个传感器的已知自运动(例如,数据捕获车辆的已知自我运动)。作为非限制性示例,对象(例如,包围盒)的注释的一个或更多个位置值和/或对象在传感器数据的第一帧(例如,包围盒的中心点、包围盒的角)中的一个或更多个代表性位置值可以被投射到第二帧中并进行自我运动补偿,并且用户接口1000可以突出显示、勾画轮廓、平移到、缩放到和/或以其他方式强调第二帧中的对应的预测区域。这样,用户接口1000可以利用传感器模态之间的已知对应关系来指导标记者识别跨传感器模态的对应对象。
与用户接口900一样,用户接口1000包括标记面板1060,其包括激活相应注释功能的各种交互元件。在一些实施例中,用户接口900可以接受标记相机和/或LiDAR帧注释问题的输入。因此,注释跨传感器模态链接的注释任务可以至少部分用作质量保证检查(例如,图1的质量保证检查170)。当标记者完成在注释场景中跨传感器模态链接注释时,标记者可以确认990链接以前进到下一对相邻帧。尽管前面的讨论集中在LiDAR到相机的链接上,任何类型的传感器数据可以链接到任何其他类型的传感器数据(包括来自同一传感器的两种不同类型的传感器数据之间的链接,例如相机到相机的链接)。附加地或替代地,注释任务可以被合并、重新排序、拆分或以其他方式布置。例如,在一些实施例中,可以在与LiDAR到相机链接相同的注释任务中执行LiDAR标记(例如,在标记相机图像中的对象之后,同时链接和标记LiDAR帧中的相应对象)。这些仅仅是作为示例,并且可以在本公开的范围内实施其他变型。
现在返回图1,在一些实施例中,可以执行后处理160以自动检测人类通常无法感知的特征。作为非限制性示例,图像处理可应用于相机图像以确定密集深度值(例如,使用基于每个像素预测深度值的一个或更多个机器学***均深度)可以与图像相关联。在一些情况下,可以重新运行后处理160(例如,基于改进的校准)以重新计算任何自动检测到的特征和/或改进对应关系的可视化(例如,通过将3D LiDAR标签反投射到相应的相机图像中)。在一些实施例中,注释项目可以包括一个或更多个手动质量保证检查170以确认由人工标记者手动生成和/或自动生成(例如,在后处理160期间)的注释的准确性。图11是根据本公开的一些实施例的示例地面实况注释的图示。
在一些实施例中,可以执行后处理160以将地面实况注释转换成与要训练的一个或更多个机器学习模型的一个或更多个输出的视图、大小和维度相匹配的编码表示。例如,如果一个或更多个机器学习模型输出分类数据(例如,一个或更多个通道,其中每个通道输出不同的类别置信度图),则可以将给定传感器数据帧中的地面实况注释转换为每个类别的相应类别置信度图。作为非限制性示例,对于给定类别,落入该类别的已注释区域内的像素的值可以设置为指示正分类的值(例如,1),并且图像中的其他像素的值可以被设置为指示负分类的值(例如,0)。因此,可以堆叠不同的类别置信度图以形成与一个或更多个机器学习模型的输出相匹配的地面实况张量。
在另一示例中,如果一个或更多个机器学习模型输出实例回归数据(例如,一个或更多个通道,其中每个通道不同类型的对象实例数据进行回归,例如位置、几何形状和/或取向数据,每个注释的位置、几何形状、取向和/或类别可用于生成与要训练的一个或更多个机器学习模型的一个或更多个输出的视图、大小和维度相匹配的对象实例数据。例如,对于包含在注释中的每个像素,注释可用于计算相应的位置、几何形状和/或取向信息(例如,对象所在的位置——例如对象中心——相对于每个像素、对象高度、对象宽度、对象取向(例如,相对于投影图像的取向的自旋角度)和/或类似信息)。计算的对象实例数据可以存储在地面实况张量的相应通道中。这些只是几个例子,可以附加地或替代地执行其他类型的后处理160。
在注释项目中的一些或所有注释任务已经完成之后,可以以任何合适的格式导出所得的地面实况数据(例如,图1的地面实况数据导出180)。地面实况数据可以与对应的输入训练数据配对,该输入训练数据匹配待训练的一个或更多个机器学***。
现在参考图12和图13,本文描述的方法1200和1300的每个块包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,可以通过处理器执行存储在存储器中的指令来执行各种功能。该方法还可以体现为存储在计算机存储介质上的计算机可用指令。这些方法可以由独立应用程序、服务或托管服务(独立或与另一个托管服务组合)或另一个产品的插件提供,仅举几例。此外,作为示例,方法1200和1300可以相对于图1的注释管线100来理解。然而,这些方法可以附加地或替代地由任何一个***或***的任何组合执行,包括但不限于本文所述的那些。
图12是示出根据本公开的一些实施例的用于从不同类型的传感器生成传感器数据的地面实况注释的方法1200的流程图。在框B1202,方法1200包括在捕获会话期间访问利用不同类型的传感器捕获的传感器数据。例如,一个或更多个车辆(例如,图14A-D的车辆1400)可以在真实世界(例如,物理)环境(例如,作为图1的数据捕获110的一部分)从一个或更多个车辆的一个或更多个传感器收集传感器数据。可以以任何方式存储和访问传感器数据。
在框B1204,方法1200包括识别同步传感器数据的至少一个偏移量以构成注释场景序列,每个注释场景包括来自两种或更多种不同类型传感器的传感器数据帧。例如,由于可以以不同频率从不同传感器获得传感器数据,因此可以对齐传感器数据(例如,图1的传感器数据对齐120)以促进对相似世界状态的传感器数据进行分组。在一些实施例中,特定传感器可以用作参考传感器。非参考传感器可以称为子传感器。对于来自参考传感器的给定传感器数据帧(参考帧),可以在参考帧和来自每个子传感器的时间上最接近的传感器数据帧之间识别诸如时间增量的偏移量。每个子传感器的偏移量可以被记录和/或应用于来自子传感器的传感器数据的捕获时间或一些其他索引。通常,参考和子传感器数据可以使用识别的一个或更多个偏移量进行采样,以识别和组成来自每个注释场景的不同传感器的传感器数据帧。
在框B1206,方法1200包括将多个线性注释任务编码到标记工具中,以用地面实况注释来注释注释场景。通常,标记工具可以包括一个或更多个接口(例如,图形用户接口),其接受来自项目管理员的输入,识别和/或提供要标记的注释场景(例如,来自不同传感器模态的传感器数据)和一个或更多个注释任务。可以将期望的注释分解成一组线性任务,并且可以将任务的编码表示输入到标记工具中(例如,作为图1的注释管线100中的注释150的一部分)。
在框B1208,方法1200包括使用标记工具将注释任务指派给标记者。例如,作为图1的注释管线100中的注释150的一部分,标记工具可以以任何合适的方式将每个注释任务指派给特定标记者,例如通过基于标记者可用性、指定的任务顺序或其他方式指派任务。
在框B1210,方法1200包括使用标记工具来引导标记者通过注释场景序列。例如,作为图1的注释管线100中的注释150的一部分,标记工具可以使用引导标记者完成一个或更多个任务的向导来安排特定任务的输入顺序(例如,注释)。
在框B1212,方法1200包括对于每个注释场景,使用标记工具提示并接受指定由注释任务定义的一组地面实况注释的输入,同时呈现注释场景中的来自两个或更多个不同类型的传感器的传感器数据。例如,作为图1的注释管线100中的注释150的一部分,标记工具可以为特定任务安排输入的顺序(例如,通过为序列中的每个注释场景遍历每个对象的注释过程)。图6图示了示例实施例,其中标记工具可以同时呈现来自不同类型传感器的传感器数据,并且可以跨传感器模态投射信息以示出跨传感器数据的对应关系。
在框B1214,方法1200包括导出地面实况注释的表示。例如,在注释项目中的一些或全部注释任务已经完成之后,可以以任何合适的格式导出所得的地面实况数据(例如,图1的地面实况数据导出180)。
图13是示出根据本公开的一些实施例的用于生成LiDAR和相机帧的地面实况注释的方法1300的流程图。在框B1302,方法1300包括访问在捕获会话期间捕获的传感器数据,传感器数据包括来自LiDAR传感器的LiDAR帧和来自至少一个相机的相机帧。例如,一个或更多个车辆(例如,图14A-D的车辆1400)可以在真实世界(例如,物理)环境(例如,作为图1的数据捕获110的一部分)从一个或更多个车辆的一个或更多个传感器收集传感器数据。车辆传感器可以包括一个或更多个LiDAR传感器和一个或更多个相机。可以随时访问捕获的传感器数据。
在框B1304,方法1300包括为至少一个相机中的每个相机识别偏移量,将相机帧与LiDAR帧同步以组成注释场景序列,每个注释场景包括一个LiDAR帧和至少一个相机帧。例如,随着LiDAR自旋的进行并观察环境的不同部分,可以根据相机相对于LiDAR自旋开始角度的视角以及LiDAR自旋以与相机的视野(例如,诸如相机的视野中心的一部分)对齐需要多长时间来选择任何给定的LiDAR自旋的时间上最接近的相机帧。通常,可以确定和/或应用相对于LiDAR自旋开始的每个相机时间或索引偏移量,以将每个相机的相机帧与LiDAR帧对齐。因此,可以对每个LiDAR帧和时间上最接近的相机帧(例如,对于每个相机)进行采样并打包到相应的注释场景中以组成序列。
在框B1306,方法1300包括将多个线性注释任务编码到标记工具中,以用地面实况注释来注释注释场景。通常,标记工具可以包括一个或更多个接口(例如,图形用户接口),其接受来自项目管理员的输入,识别和/或提供要标记的注释场景(例如,来自不同传感器模态的传感器数据)和一个或更多个注释任务。可以将期望的注释分解成一组线性任务,并且可以将任务的编码表示输入到标记工具中(例如,作为图1的注释管线100中的注释150的一部分)。
在框B1308,方法1300包括使用标记工具来引导标记者通过注释场景序列。例如,作为图1的注释管线100中的注释150的一部分,标记工具可以使用引导标记者完成一个或更多个任务的向导来安排特定任务的输入(例如,注释)顺序。
在框B1310,方法1300包括对于每个注释场景,使用标记工具提示并接受指定由注释任务定义的一组地面实况注释的输入,同时呈现注释场景中的LiDAR帧和至少一个相机帧。例如,作为图1的注释管线100中的注释150的一部分,标记工具可以为特定任务安排输入的顺序(例如,通过为序列中的每个注释场景遍历每个对象的注释过程)。图6示出了示例实施例,其中标记工具可以同时呈现LiDAR和相机帧,并且可以将信息从LiDAR投射到相机和/或反之亦然。
在框B1312,方法1300包括导出地面实况注释的表示。例如,在注释项目中的一些或全部注释任务已经完成之后,可以以任何合适的格式导出所得的地面实况数据(例如,图1的地面实况数据导出180)。这样,一个或更多个机器学习模型可以使用导出的地面实况数据来训练(例如,图1的地面实况数据消耗190)。
示例自主车辆
图14A是根据本公开的一些实施例的示例自主车辆1400的图示。自主车辆1400(可替代地,在本文称为“车辆1400”)可以包括但不限于,客运车辆,如小汽车、卡车、公共汽车、第一响应车辆、摆渡车、电动或机动自行车、摩托车、消防车、警用车辆,救护车、船、施工车辆、水下船只、无人机和/或另一类型的车辆(例如,无人驾驶的和/或容纳一个或更多个乘客的车辆)。自主车辆通常按照美国运输部的一个部门——国家公路交通安全管理局(NHTSA)以及汽车工程师协会(SAE)“Taxonomy and Definitions for Terms Related toDriving Automation Systems for On-Road Motor Vehicles”(2018年6月15日发布的标准No.J3016-201806,2016年9月30日发布的标准No.J3016-201609,以及该标准的先前和未来的版本)定义的自动化级别进行描述。车辆1400可能够实现符合自主驾驶级别的3级-5级中的一个或更多个的功能。例如,取决于实施例,车辆1400可能够实现条件自动化(3级)、高自动化(4级)和/或全自动化(5级)。
车辆1400可以包括诸如底盘、车身、车轮(例如2个、4个、6个、8个、18个等)、轮胎、车轴之类的部件以及车辆的其他部件。车辆1400可以包括推进***1450,例如内燃机、混合动力发电厂、全电动发动机和/或另一种推进***类型。推进***1450可以连接到可以包括变速器的车辆1400的传动系以便实现车辆1400的推进。可以响应于接收到来自油门/加速器1452的信号而控制推进***1450。
可以包括方向盘的转向(steering)***1454可以用来在推进***1450操作时(例如在车辆运动时)使车辆1400转向(例如沿着希望的路径或路线)。转向***1454可以接收来自转向致动器1456的信号。对于全自动(5级)功能而言,方向盘可以是可选的。
制动传感器***1446可以用来响应于接收到来自制动致动器1448和/或制动传感器的信号而操作车辆制动器。
可以包括一个或更多个片上***(SoC)1404(图14C)和/或一个或更多个GPU的一个或更多个控制器1436可以向车辆1400的一个或更多个部件和/或***提供(例如表示命令的)信号。例如,一个或更多个控制器可以发送经由一个或更多个制动致动器1448操作车辆制动器、经由一个或更多个转向致动器1456操作转向***1454、经由一个或更多个油门/加速器1452操作推进***1450的信号。一个或更多个控制器1436可以包括一个或更多个板载(例如集成)计算设备(例如超级计算机),所述计算设备处理传感器信号并且输出操作命令(例如表示命令的信号),以实现自主驾驶和/或辅助人类驾驶员驾驶车辆1400。一个或更多个控制器1436可以包括用于自主驾驶功能的第一控制器1436、用于功能性安全功能的第二控制器1436、用于人工智能功能(例如计算机视觉)的第三控制器1436、用于信息娱乐功能的第四控制器1436、用于紧急情况下的冗余的第五控制器1436和/或其他控制器。在一些示例中,单个控制器1436可以处理上述功能中的两个或更多,两个或更多控制器1436可以处理单个功能,和/或其任意组合。
一个或更多个控制器1436可以响应于接收自一个或更多个传感器的传感器数据(例如传感器输入),提供用于控制车辆1400的一个或更多个部件和/或***的信号。传感器数据可以接收自例如且不限于全球导航卫星***传感器1458(例如全球定位***传感器)、RADAR传感器1460、超声传感器1462、LIDAR传感器1464、惯性测量单元(IMU)传感器1466(例如加速度计、陀螺仪、磁罗盘、磁力计等)、麦克风1496、立体相机1468、广角相机1470(例如鱼眼相机)、红外相机1472、环绕相机1474(例如360度相机)、远程和/或中程相机1498、速度传感器1444(例如用于测量车辆1400的速率)、振动传感器1442、转向传感器1440、制动传感器(例如作为制动传感器***1446的部分)和/或其他传感器类型。
控制器1436中的一个或更多个可以接收来自车辆1400的仪表组1432的输入(例如由输入数据表示),并且经由人机接口(HMI)显示器1434、听觉信号器、扬声器和/或经由车辆1400的其他部件提供输出(例如输出数据、显示数据等表示的)。这些输出可以包括诸如车辆速度、速率、时间、地图数据(例如图14C的HD地图1422)、位置数据(例如,车辆1400例如在地图上的位置)、方向、其他车辆的位置(例如占用网格)之类的信息,如控制器1436所感知的关于对象和对象状态的信息等等。例如,HMI显示器1434可以显示关于一个或更多个对象(例如街道指示牌、警示牌、交通灯变化等)的存在性的信息和/或关于车辆已经做出、正在做出或者将会做出的驾驶机动的信息(例如现在变道、两英里后离开34B,等等)。
车辆1400还包括网络接口1424,其可以使用一个或更多个无线天线1426和/或调制解调器通过一个或更多个网络通信。例如,网络接口1424可能够通过LTE、WCDMA、UMTS、GSM、CDMA2000等通信。一个或更多个无线天线1426也可以使用诸如蓝牙、蓝牙LE、Z波、ZigBee等等之类的一个或更多个局域网和/或诸如LoRaWAN、SigFox等等之类的一个或更多个低功率广域网(LPWAN)实现环境中的对象(例如车辆、移动设备等等)之间的通信。
图14B为根据本公开一些实施例的用于图14A的示例自主车辆1400的相机位置和视场的示例。相机和各自的视场是一个示例实施例,并不意图是限制性的。例如,可以包括附加的和/或可替换的相机,和/或这些相机可以位于车辆1400上的不同位置。
用于相机的相机类型可以包括但不限于可以适于与车辆1400的部件和/或***一起使用的数字相机。所述相机可以在汽车安全完整性级别(ASIL)B下和/或在另一个ASIL下操作。相机类型可以具有任何图像捕获率,例如60帧每秒(fps)、120fps、240fps等等,这取决于实施例。相机可能够使用滚动快门、全局快门、另一种类型的快门或者其组合。在一些示例中,滤色器阵列可以包括红白白白(RCCC)滤色器阵列、红白白蓝(RCCB)滤色器阵列、红蓝绿白(RBGC)滤色器阵列、Foveon X3滤色器阵列、拜耳传感器(RGGB)滤色器阵列、单色传感器滤色器阵列和/或另一种类型的滤色器阵列。在一些实施例中,诸如具有RCCC、RCCB和/或RBGC滤色器阵列的相机之类的清晰像素相机可以用在提高光敏感度的努力中。
在一些示例中,所述相机中的一个或更多个可以用来执行高级驾驶员辅助***(ADAS)功能(例如作为冗余或故障安全设计的部分)。例如,可以安装多功能单目相机以提供包括车道偏离警告、交通指示牌辅助和智能前照灯控制在内的功能。所述相机中的一个或更多个(例如全部相机)可以同时记录和提供图像数据(例如视频)。
所述相机中的一个或更多个可以安装在诸如定制设计的(3-D打印的)组件之类的安装组件中,以便切断可能干扰相机的图像数据捕获能力的杂散光和来自汽车内的反射(例如挡风玻璃镜中反射的来自仪表板的反射)。关于翼镜安装组件,翼镜组件可以是定制3-D打印的,使得相机安装板匹配翼镜的形状。在一些示例中,一个或更多个相机可以集成到翼镜中。对于侧视相机而言,一个或更多个相机也可以集成到驾驶室每个拐角的四根柱子内。
具有包括车辆1400前面的环境部分的视场的相机(例如前置相机)可以用于环视,以帮助识别前向路径和障碍,以及在一个或更多个控制器1436和/或控制SoC的帮助下辅助提供对于生成占用网格和/或确定优选车辆路径至关重要的信息。前置相机可以用来执行许多与LIDAR相同的ADAS功能,包括紧急制动、行人检测和碰撞避免。前置相机也可以用于ADAS功能和***,包括车道偏离警告(“LDW”)、自主巡航控制(“ACC”),和/或诸如交通指示牌识别之类的其他功能。
各种各样的相机可以用于前置配置中,包括例如包括CMOS(互补金属氧化物半导体)彩色成像仪在内的单目相机平台。另一个示例可以是广角相机1470,其可以用来感知从周边进入视场的对象(例如行人、十字路***通或者自行车)。尽管图14B中图示出仅仅一个广角相机,但是在车辆1400上可以存在任意数量的广角相机1470。此外,远程相机1498(例如长视立体相机对)可以用于基于深度的对象检测,尤其是用于尚未针对其训练神经网络的对象。远程相机1498也可以用于对象检测和分类以及基本的对象追踪。
一个或更多个立体相机1468也可以包括在前置配置中。立体相机1468可以包括集成控制单元,该单元包括可扩展处理单元,其可以提供在单个芯片上具有集成的CAN或以太网接口的多核微处理器和可编程逻辑(FPGA)。这样的单元可以用来生成车辆环境的3-D地图,包括针对图像中的所有点的距离估计。可替代的立体相机1468可以包括紧凑型立体视觉传感器,其可以包括两个相机镜头(左右各一个)以及可以测量从车辆到目标对象的距离并且使用生成的信息(例如元数据)激活自主紧急制动和车道偏离警告功能的图像处理芯片。除了本文所描述的那些之外或者可替代地,可以使用其他类型的立体相机1468。
具有包括车辆1400的侧面的环境部分的视场的相机(例如侧视相机)可以用于环视,提供用来创建和更新占用网格以及生成侧撞击碰撞警告的信息。例如,环绕相机1474(例如如图14B中所示的四个环绕相机1474)可以置于车辆1400上。环绕相机1474可以包括广角相机1470、鱼眼相机、360度相机和/或类似物。四个示例,四个鱼眼相机可以置于车辆的前面、后面和侧面。在一种可替代的布置中,车辆可以使用三个环绕相机1474(例如左边、右边和后面),并且可以利用一个或更多个其他相机(例如前向相机)作为第四环视相机。
具有包括车辆1400的后面的环境部分的视场的相机(例如后视相机)可以用于辅助停车、环视、后面碰撞警告以及创建和更新占用网格。可以使用各种各样的相机,包括但不限于也适合作为如本文所描述的前置相机(例如远程和/或中程相机1498、立体相机1468、红外相机1472等等)的相机。
图14C为根据本公开一些实施例的用于图14A的示例自主车辆1400的示例***架构的框图。应当理解,这种布置和本文描述的其他布置仅仅作为示例而被阐述。除了所示的那些之外或者代替它们的是,可以使用其他的布置和元素(例如机器、接口、功能、顺序、功能分组等等),并且一些元素可以完全省略。进一步,许多本文描述的元素是功能实体,其可以实现为分立的或分布式部件或者结合其他部件实现,以及以任何适当的组合和位置实现。本文描述为由实体执行的各个功能可以通过硬件、固件和/或软件实现。例如,各个功能可以通过处理器执行存储在内存中的指令而实现。
图14C中车辆1400的部件、特征和***中的每一个被图示为经由总线1402连接。总线1402可以包括控制器区域网络(CAN)数据接口(可替代地,本文称为“CAN总线”)。CAN可以是车辆1400内部的网络,用来辅助控制车辆1400的各种特征和功能,例如制动器、加速、制动、转向、挡风玻璃雨刷等等的驱动。CAN总线可以被配置为具有数十或者甚至数百个节点,每个节点具有其自己的唯一标识符(例如CAN ID)。可以读取CAN总线以找到方向盘角度、地速、每分钟发动机转速(RPM)、按钮位置和/或其他车辆状态指示符。CAN总线可以是ASIL B兼容的。
尽管这里将总线1402描述为CAN总线,但是这并不意图是限制性的。例如,除了CAN总线之外或者可替代地,可以使用FlexRay和/或以太网。此外,尽管用单条线来表示总线1402,但是这并不意图是限制性的。例如,可以存在任意数量的总线1402,其可以包括一条或更多条CAN总线、一条或更多条FlexRay总线、一条或更多条以太网总线和/或一条或更多条使用不同协议的其他类型的总线。在一些示例中,两条或更多总线1402可以用来执行不同的功能,和/或可以用于冗余。例如,第一总线1402可以用于碰撞避免功能,并且第二总线1402可以用于驱动控制。在任何示例中,每条总线1402可以与车辆1400的任何部件通信,并且两条或更多总线1402可以与相同的部件通信。在一些示例中,车辆内的每个SoC 1404、每个控制器1436和/或每个计算机可以有权访问相同的输入数据(例如来自车辆1400的传感器的输入),并且可以连接到诸如CAN总线之类的公共总线。
车辆1400可以包括一个或更多个控制器1436,例如本文关于图14A所描述的那些控制器。控制器1436可以用于各种各样的功能。控制器1436可以耦合到车辆1400的任何其他不同的部件和***,并且可以用于车辆1400的控制、车辆1400的人工智能、用于车辆1400的信息娱乐和/或类似物。
车辆1400可以包括一个或更多个片上***(SoC)1404。SoC 1404可以包括CPU1406、GPU 1408、处理器1410、高速缓存1412、加速器1414、数据存储1416和/或未图示出的其他部件和特征。在各种各样的平台和***中,SoC 1404可以用来控制车辆1400。例如,一个或更多个SoC 1404可以在***(例如车辆1400的***)中与HD地图1422结合,所述HD地图可以经由网络接口1424从一个或更多个服务器(例如图14D的一个或更多个服务器1478)获得地图刷新和/或更新。
CPU 1406可以包括CPU簇或者CPU复合体(可替代地,本文称为“CCPLEX”)。CPU1406可以包括多个核和/或L2高速缓存。例如,在一些实施例中,CPU 1406在一致性多处理器配置中可以包括八个核。在一些实施例中,CPU 1406可以包括四个双核簇,其中每个簇具有专用的L2高速缓存(例如2MB L2高速缓存)。CPU 1406(例如CCPLEX)可以被配置为支持同时簇操作,使得CPU 1406的簇的任意组合能够在任何给定时间是活动的。
CPU 1406可以实现包括以下特征中的一个或更多个的功率管理能力:各硬件块在空闲时可以自动进行时钟门控以节省动态功率;由于WFI/WFE指令的执行,每个核时钟可以在该核不主动地执行指令时进行门控;每个核可以独立地进行功率门控;当所有核都进行时钟门控或者功率门控时,可以独立地对每个核簇进行时钟门控;和/或当所有核都进行功率门控时,可以独立地对每个核簇进行功率门控。CPU 1406可以进一步实现用于管理功率状态的增强算法,其中指定允许的功率状态和期望的唤醒时间,并且硬件/微代码为所述核、簇和CCPLEX确定要进入的最佳的功率状态。处理核可以在软件中支持简化的功率状态进入序列,该工作被卸载到微代码。
GPU 1408可以包括集成的GPU(可替代地,本文称为“iGPU”)。GPU 1408可以是可编程的,并且对于并行工作负载而言是高效的。在一些示例中,GPU 1408可以使用增强张量指令集。GPU 1408可以包括一个或更多个流式微处理器,其中每个流式微处理器可以包括L1高速缓存(例如具有至少96KB存储能力的L1高速缓存),并且这些流式微处理器中的两个或更多可以共享L2高速缓存(例如具有512KB存储能力的L2高速缓存)。在一些实施例中,GPU1408可以包括至少八个流式微处理器。GPU 1408可以使用计算应用编程接口(API)。此外,GPU 1408可以使用一个或更多个并行计算平台和/或编程模型(例如NVIDIA的CUDA)。
在汽车和嵌入式使用的情况下,可以对GPU 1408进行功率优化以实现最佳性能。例如,可以在鳍式场效应晶体管(FinFET)上制造GPU 1408。然而,这并不意图是限制性的,并且GPU 1408可以使用其他半导体制造工艺来制造。每个流式微处理器可以合并划分成多个块的若干混合精度处理核。例如且非限制性地,可以将64个PF32核和32个PF64核划分成四个处理块。在这样的示例中,每个处理块可以分配16个FP32核、8个FP64核、16个INT32核、用于深层学习矩阵算术的两个混合精度NVIDIA张量核、L0指令高速缓存、线程束(warp)调度器、分派单元和/或64KB寄存器文件。此外,流式微处理器可以包括独立的并行整数和浮点数据路径,以利用计算和寻址计算的混合提供工作负载的高效执行。流式微处理器可以包括独立线程调度能力,以允许实现并行线程之间的更细粒度的同步和协作。流式微处理器可以包括组合的L1数据高速缓存和共享内存单元,以便在简化编程的同时提高性能。
GPU 1408可以包括在一些示例中提供大约900GB/s的峰值内存带宽的高带宽内存(HBM)和/或16GB HBM2内存子***。在一些示例中,除了HBM内存之外或者可替代地,可以使用同步图形随机存取存储器(SGRAM),例如第五代图形双倍数据速率同步随机存取存储器(GDDR5)。
GPU 1408可以包括统一内存技术,其包括访问计数器以允许内存页面更精确地迁移到最频繁地访问它们的处理器,从而提高处理器之间共享的内存范围的效率。在一些示例中,地址转换服务(ATS)支持可以用来允许GPU 1408直接访问CPU 1406页表。在这样的示例中,当GPU 1408内存管理单元(MMU)经历遗漏时,可以将地址转换请求传输至CPU 1406。作为响应,CPU 1406可以在其页表中寻找用于地址的虚拟-物理映射,并且将转换传输回GPU 1408。这样,统一内存技术可以允许单个统一虚拟地址空间用于CPU 1406和GPU 1408二者的内存,从而简化了GPU 1408编程和将应用程序移(port)到GPU 1408。
此外,GPU 1408可以包括访问计数器,其可以追踪GPU 1408访问其他处理器的内存的频率。访问计数器可以帮助确保内存页面移至最频繁地访问这些页面的处理器的物理内存。
SoC 1404可以包括任意数量的高速缓存1412,包括本文描述的那些高速缓存。例如,高速缓存1412可以包括CPU 1406和GPU 1408二者可用的L3高速缓存(例如,其连接到CPU 1406和GPU 1408二者)。高速缓存1412可以包括回写高速缓存,其可以例如通过使用高速缓存一致性协议(例如MEI、MESI、MSI等)追踪行的状态。取决于实施例,L3高速缓存可以包括4MB或者更多,但是也可以使用更小的高速缓存大小。
SoC 1404可以包括算术逻辑单元(ALU),所述算术逻辑单元可以在执行关于车辆1400的各种任务或操作中的任何任务或操作(如处理DNN)的处理中被利用。此外,SoC 1404可以包括用于在***内执行数学运算的浮点单元(FPU)(或其他数学协处理器或数字协处理器类型)。例如,SoC104可以包括集成为CPU 1406和/或GPU 1408内的执行单元的一个或更多个FPU。
SoC 1404可以包括一个或更多个加速器1414(例如硬件加速器、软件加速器或者其组合)。例如,SoC 1404可以包括硬件加速器簇,其可以包括优化的硬件加速器和/或大型片上内存。该大型片上内存(例如4MB SRAM)可以使得硬件加速器簇能够加速神经网络和其他计算。硬件加速器簇可以用来补充GPU 1408,并且卸载GPU 1408的一些任务(例如释放GPU 1408的更多周期以用于执行其他任务)。作为一个示例,加速器1414可以用于足够稳定以易于控制加速的有针对性的工作负载(例如感知、卷积神经网络(CNN)等等)。当在本文中使用时,术语“CNN”可以包括所有类型的CNN,包括基于区域的或者区域卷积神经网络(RCNN)和快速RCNN(例如用于对象检测)。
加速器1414(例如硬件加速器簇)可以包括深度学习加速器(DLA)。DLA可以包括可以被配置成为深度学习应用和推理提供额外的每秒10万亿次操作的一个或更多个张量处理单元(TPU)。TPU可以是被配置为执行图像处理功能(例如用于CNN、RCNN等)且针对执行图像处理功能而优化的加速器。DLA可以进一步针对特定的一组神经网络类型和浮点运算以及推理进行优化。DLA的设计可以比通用GPU提供每毫米更高的性能,并且远远超过CPU的性能。TPU可以执行若干功能,包括单实例卷积函数,支持例如用于特征和权重二者的INT8、INT16和FP16数据类型,以及后处理器功能。
DLA可以在处理的或者未处理的数据上针对各种各样的功能中的任何功能快速且高效地执行神经网络,尤其是CNN,例如且不限于:用于使用来自相机传感器的数据进行对象识别和检测的CNN;用于使用来自相机传感器的数据进行距离估计的CNN;用于使用来自麦克风的数据进行应急车辆检测和识别与检测的CNN;用于使用来自相机传感器的数据进行面部识别和车主识别的CNN;和/或用于安全和/或安全相关事件的CNN。
DLA可以执行GPU 1408的任何功能,并且通过使用推理加速器,例如,设计者可以使DLA或GPU 1408针对任何功能。例如,设计者可以将CNN的处理和浮点运算聚焦在DLA上,并且将其他功能留给GPU 1408和/或其他加速器1414。
加速器1414(例如硬件加速器簇)可以包括可编程视觉加速器(PVA),其在本文中可以可替代地称为计算机视觉加速器。PVA可以被设计和配置为加速用于高级驾驶员辅助***(ADAS)、自主驾驶和/或增强现实(AR)和/或虚拟现实(VR)应用的计算机视觉算法。PVA可以提供性能与灵活性之间的平衡。例如,每个PVA可以包括例如且不限于任意数量的精简指令集计算机(RISC)核、直接内存访问(DMA)和/或任意数量的向量处理器。
RISC核可以与图像传感器(例如本文描述的任何相机的图像传感器)、图像信号处理器和/或类似物交互。这些RISC核中的每一个可以包括任意数量的内存。取决于实施例,RISC核可以使用若干协议中的任何协议。在一些示例中,RISC核可以执行实时操作***(RTOS)。RISC核可以使用一个或更多个集成电路设备、专用集成电路(ASIC)和/或存储设备实现。例如,RISC核可以包括指令高速缓存和/或紧密耦合的RAM。
DMA可以使得PVA的部件能够独立于CPU 1406访问***内存。DMA可以支持用来向PVA提供优化的任意数量的特征,包括但不限于支持多维寻址和/或循环寻址。在一些示例中,DMA可以支持高达六个或更多维度的寻址,其可以包括块宽度、块高度、块深度、水平块步进、竖直块步进和/或深度步进。
向量处理器可以是可编程处理器,其可以被设计为高效且灵活地执行用于计算机视觉算法的编程并且提供信号处理能力。在一些示例中,PVA可以包括PVA核和两个向量处理子***分区。PVA核可以包括处理器子***、一个或更多个DMA引擎(例如两个DMA引擎)和/或其他***设备。向量处理子***可以作为PVA的主处理引擎而操作,并且可以包括向量处理单元(VPU)、指令高速缓存和/或向量内存(例如VMEM)。VPU核可以包括数字信号处理器,诸如例如单指令多数据(SIMD)、超长指令字(VLIW)数字信号处理器。SIMD和VLIW的组合可以增强吞吐量和速率。
向量处理器中的每一个可以包括指令高速缓存并且可以耦合到专用内存。结果,在一些示例中,向量处理器中的每一个可以被配置为独立于其他向量处理器执行。在其他示例中,包括在特定PVA中的向量处理器可以被配置为采用数据并行化。例如,在一些实施例中,包括在单个PVA中的多个向量处理器可以执行相同的计算机视觉算法,但是在图像的不同区域上执行。在其他示例中,包括在特定PVA中的向量处理器可以在相同的图像上同时执行不同的计算机视觉算法,或者甚至在序列图像或者图像的部分上执行不同的算法。除其他的以外,任意数量的PVA可以包括在硬件加速器簇中,并且任意数量的向量处理器可以包括在这些PVA中的每一个中。此外,PVA可以包括附加的纠错码(ECC)内存,以增强总体***安全性。
加速器1414(例如硬件加速器簇)可以包括片上计算机视觉网络和SRAM,以提供用于加速器1414的高带宽、低延迟SRAM。在一些示例中,片上内存可以包括由例如且不限于八个现场可配置的内存块组成的至少4MB SRAM,其可以由PVA和DLA二者访问。每对内存块可以包括高级***总线(APB)接口、配置电路***、控制器和复用器。可以使用任何类型的内存。PVA和DLA可以经由向PVA和DLA提供高速内存访问的主干(backbone)访问内存。主干可以包括(例如使用APB)将PVA和DLA互连到内存的片上计算机视觉网络。
片上计算机视觉网络可以包括在传输任何控制信号/地址/数据之前确定PVA和DLA二者都提供就绪且有效的信号的接口。这样的接口可以提供用于传输控制信号/地址/数据的单独相位和单独信道,以及用于连续数据传输的突发式通信。这种类型的接口可以符合ISO 26262或者IEC 61508标准,但是也可以使用其他标准和协议。
在一些示例中,SoC 1404可以包括例如在2018年8月10日提交的美国专利申请No.16/101,232中描述的实时光线追踪硬件加速器。该实时光线追踪硬件加速器可以用来快速且高效地确定(例如世界模型内的)对象的位置和范围,以便生成实时可视化仿真,以用于RADAR信号解释、用于声音传播合成和/或分析、用于SONAR***仿真、用于一般波传播仿真、用于为了定位和/或其他功能的目的与LIDAR数据相比较和/或用于其他用途。在一些实施例中,一个或更多个树遍历单元(TTU)可以用于执行一个或更多个光线跟踪相关操作。
加速器1414(例如硬件加速器簇)具有广泛的自主驾驶用途。PVA可以是可编程视觉加速器,其可以用于ADAS和自主车辆中的关键处理阶段。PVA的能力是需要可预测处理、低功率和低延迟的算法域的良好匹配。换言之,PVA在半密集或者密集规则计算上,甚至在需要具有低延迟和低功率的可预测运行时间的小数据集上都表现良好。因此,在用于自主车辆的平台的背景下,PVA被设计为运行经典计算机视觉算法,因为它们在对象检测和整数数学运算方面很有效。
例如,根据该技术的一个实施例,PVA用来执行计算机立体视觉。在一些示例中,可以使用基于半全局匹配的算法,但是这并不意图是限制性的。许多用于3-5级自主驾驶的应用都需要即时运动估计/立体匹配(例如来自运动的结构、行人识别、车道检测等等)。PVA可以在来自两个单目相机的输入上执行计算机立体视觉功能。
在一些示例中,PVA可以用来执行密集的光流。根据过程原始RADAR数据(例如使用4D快速傅立叶变换)以提供经处理的RADAR。在其他示例中,PVA用于飞行时间深度处理,其例如通过处理原始飞行时间数据以提供经处理的飞行时间数据。
DLA可以用来运行任何类型的网络以增强控制和驾驶安全性,包括例如输出用于每个对象检测的置信度度量的神经网络。这样的置信度值可以解释为概率,或者解释为提供每个检测与其他检测相比的相对“权重”。该置信度值使得***能够做出关于哪些检测应当被认为是真阳性检测而不是假阳性检测的进一步决定。例如,***可以为置信度设置阈值,并且仅仅将超过阈值的检测看作真阳性检测。在自动紧急制动(AEB)***中,假阳性检测会使得车辆自动地执行紧急制动,这显然是不希望的。因此,只有最确信的检测才应当被认为是AEB的触发因素。DLA可以运行用于回归置信度值的神经网络。该神经网络可以将至少一些参数子集作为其输入,例如边界框维度,(例如从另一个子***)获得的地平面估计,与车辆1400取向、距离相关的惯性测量单元(IMU)传感器1466输出,从神经网络和/或其他传感器(例如LIDAR传感器1464或RADAR传感器1460)获得的对象的3D位置估计等。
SoC 1404可以包括一个或更多个数据存储1416(例如内存)。数据存储1416可以是SoC 1404的片上内存,其可以存储要在GPU和/或DLA上执行的神经网络。在一些示例中,为了冗余和安全,数据存储1416可以容量足够大以存储神经网络的多个实例。数据存储1412可以包括L2或L3高速缓存1412。对数据存储1416的引用可以包括对与如本文所描述的PVA、DLA和/或其他加速器1414关联的内存的引用。
SoC 1404可以包括一个或更多个处理器1410(例如嵌入式处理器)。处理器1410可以包括启动和功率管理处理器,其可以是用于处理启动功率和管理功能以及有关安全实施的专用处理器和子***。启动和功率管理处理器可以是SoC 1404启动序列的一部分,并且可以提供运行时间功率管理服务。启动功率和管理处理器可以提供时钟和电压编程、辅助***低功率状态转换、SoC 1404热和温度传感器管理和/或SoC 1404功率状态管理。每个温度传感器可以实现为环形振荡器,其输出频率与温度成比例,并且SoC 1404可以使用环形振荡器检测CPU 1406、GPU 1408和/或加速器1414的温度。如果确定温度超过阈值,那么启动和功率管理处理器可以进入温度故障例程并且将SoC 1404置于较低功率状态和/或将车辆1400置于司机安全停车模式(例如使车辆1400安全停车)。
处理器1410可以还包括可以用作音频处理引擎的一组嵌入式处理器。音频处理引擎可以是一种音频子***,其允许实现对于通过多个接口的多声道音频的完全硬件支持以及一系列广泛而灵活的音频I/O接口。在一些示例中,音频处理引擎是具有带有专用RAM的数字信号处理器的专用处理器核。
处理器1410可以还包括始终在处理器上的引擎,其可以提供必要的硬件特征以支持低功率传感器管理和唤醒用例。该始终在处理器上的引擎可以包括处理器核、紧密耦合的RAM、支持***设备(例如定时器和中断控制器)、各种I/O控制器***设备和路由逻辑。
处理器1410可以还包括安全簇引擎,其包括处理汽车应用的安全管理的专用处理器子***。安全簇引擎可以包括两个或更多处理器核、紧密耦合的RAM、支持***设备(例如定时器、中断控制器等等)和/或路由逻辑。在安全模式下,所述两个或更多核可以操作于锁步模式下,并且用作具有检测它们的操作之间的任何差异的比较逻辑的单核。
处理器1410可以还包括实时相机引擎,其可以包括用于处理实时相机管理的专用处理器子***。
处理器1410可以还包括高动态范围信号处理器,其可以包括图像信号处理器,该图像信号处理器是一种硬件引擎,该硬件引擎是相机处理管线的部分。
处理器1410可以包括可以是(例如微处理器上实现的)处理块的视频图像复合器,其实现视频回放应用程序产生用于播放器窗口的最终图像所需的视频后处理功能。视频图像复合器可以对广角相机1470、环绕相机1474和/或对驾驶室内监控相机传感器执行镜头畸变校正。驾驶室内监控相机传感器优选地由运行在高级SoC的另一个实例上的神经网络监控,被配置为识别驾驶室内事件并且相对应地做出响应。驾驶室内***可以执行唇读,以激活移动电话服务并拨打电话、口述电子邮件、改变车辆目的地、激活或改变车辆的信息娱乐***和设置或者提供语音激活的网上冲浪。某些功能仅在车辆操作于自主模式下时对于驾驶员可用,并且在其他情况下被禁用。
视频图像复合器可以包括用于空间和时间降噪的增强时间降噪。例如,在视频中出现运动的情况下,降噪适当地对空间信息加权,降低邻近帧提供的信息的权重。在图像或者图像的部分不包括运动的情况下,视频图像复合器执行的时间降噪可以使用来自先前的图像的信息以降低当前图像中的噪声。
视频图像复合器也可以被配置为对输入立体镜头帧执行立体校正。当操作***桌面正在使用并且GPU 1408无需连续地渲染(render)新的表面时,视频图像复合器可以进一步用于用户接口组成。甚至在GPU 1408上电并且激活,进行3D渲染时,视频图像复合器可以用来减轻GPU 1408的负担以提高性能和响应能力。
SoC 1404可以还包括用于从相机接收视频和输入的移动行业处理器接口(MIPI)相机串行接口、高速接口和/或可以用于相机和有关像素输入功能的视频输入块。SoC 1404可以还包括可以由软件控制并且可以用于接收未提交到特定角色的I/O信号的输入/输出控制器。
SoC 1404可以还包括大范围的***设备接口,以使能与***设备、音频编解码器、功率管理和/或其他设备通信。SoC 1404可以用来处理来自(通过千兆多媒体串行链路和以太网连接的)相机、传感器(例如可以通过以太网连接的LIDAR传感器1464、RADAR传感器1460等等)的数据,来自总线1402的数据(例如车辆1400的速率、方向盘位置等等),来自(通过以太网或CAN总线连接的)GNSS传感器1458的数据。SoC 1404可以还包括专用高性能大容量存储控制器,其可以包括它们自己的DMA引擎,并且其可以用来从日常数据管理任务中释放CPU 1406。
SoC 1404可以是具有灵活架构的端到端平台,该架构跨越自动化3-5级,从而提供利用和高效使用计算机视觉和ADAS技术以实现多样性和冗余、连同深度学***台的综合功能安全架构。SoC 1404可以比常规的***更快、更可靠,甚至更加能量高效和空间高效。例如,当与CPU 1406、GPU 1408和数据存储1416结合时,加速器1414可以提供用于3-5级自主车辆的快速高效平台。
因此该技术提供了不能通过常规***实现的能力和功能。例如,计算机视觉算法可以在CPU上执行,这些CPU可以使用诸如C编程语言之类的高级编程语言配置为跨各种各样的视觉数据执行各种各样的处理算法。然而,CPU常常不能满足许多计算机视觉应用的性能要求,诸如与例如执行时间和功耗有关的那些要求。特别地,许多CPU不能实时地执行复杂的对象检测算法,这是车载ADAS应用的要求和实用3-5级自主车辆的要求。
与常规***形成对比的是,通过提供CPU复合体、GPU复合体和硬件加速器簇,本文描述的技术允许同时和/或顺序地执行多个神经网络,并且将结果组合在一起以实现3-5级自主驾驶功能。例如,在DLA或dGPU(例如GPU 1420)上执行的CNN可以包括文本和单词识别,允许超级计算机读取和理解交通指示牌,包括尚未针对其特别地训练神经网络的指示牌。DLA可以还包括能够识别、解释和提供对指示牌的语义理解,并且将该语义理解传递给运行在CPU复合体上的路径规划模块的神经网络。
作为另一个示例,如3、4或5级驾驶所需的,多个神经网络可以同时运行。例如,由“注意:闪烁的灯指示结冰条件”组成的警告指示牌连同电灯可以由若干神经网络独立地或者共同地进行解释。指示牌本身可以由部署的第一神经网络(例如经过训练的神经网络)识别为交通指示牌,文本“闪烁的灯指示结冰条件”可以由部署的第二神经网络解释,该部署的第二神经网络告知车辆的路径规划软件(优选地在CPU复合体上执行)当检测到闪烁的灯时,存在结冰条件。闪烁的灯可以通过在多个帧上操作部署的第三神经网络而识别,该神经网络告知车辆的路径规划软件闪烁的灯的存在(或不存在)。所有三个神经网络可以例如在DLA内和/或在GPU 1408上同时运行。
在一些示例中,用于面部识别和车主识别的CNN可以使用来自相机传感器的数据识别车辆1400的授权的驾驶员和/或车主的存在。始终在传感器上的处理引擎可以用来在车主接近驾驶员车门时解锁车辆并且打开灯,并且在安全模式下,在车主离开车辆时禁用车辆。按照这种方式,SoC 1404提供了防范盗窃和/或劫车的安全性。
在另一个示例中,用于应急车辆检测和识别的CNN可以使用来自麦克风1496的数据来检测并且识别应急车辆警报(siren)。与使用通用分类器检测警报并且手动地提取特征的常规***形成对比的是,SoC 1404使用CNN以对环境和城市声音分类以及对视觉数据分类。在优选的实施例中,运行在DLA上的CNN被训练为识别应急车辆的相对关闭速率(例如通过使用多普勒效应)。CNN也可以被训练为识别如GNSS传感器1458所识别的特定于车辆在其中操作的局部区域的应急车辆。因此,例如,当在欧洲操作时,CNN将寻求检测欧洲警报,并且当在美国时,CNN将寻求识别仅仅北美的警报。一旦检测到应急车辆,在超声传感器1462的辅助下,控制程序可以用来执行应急车辆安全例程,使车辆放慢速度,开到路边,停下车辆,和/或使车辆空转,直到应急车辆通过。
车辆可以包括可以经由高速互连(例如PCIe)耦合到SoC 1404的CPU 1418(例如分立的CPU或dCPU)。CPU 1418可以包括例如X86处理器。CPU 1418可以用来执行各种各样的功能中的任何功能,包括例如仲裁ADAS传感器与SoC 1404之间潜在地不一致的结果,和/或监控控制器1436和/或信息娱乐SoC 1430的状态和健康状况。
车辆1400可以包括可以经由高速互连(例如NVIDIA的NVLINK)耦合到SoC 1404的GPU 1420(例如分立的GPU或dGPU)。GPU 1420可以例如通过执行冗余的和/或不同的神经网络而提供附加的人工智能功能,并且可以用来至少部分地基于来自车辆1400的传感器的输入(例如传感器数据)来训练和/或更新神经网络。
车辆1400可以还包括网络接口1424,该网络接口可以包括一个或更多个无线天线1426(例如用于不同通信协议的一个或更多个无线天线,例如蜂窝天线、蓝牙天线等等)。网络接口1424可以用来使能通过因特网与云(例如与服务器1478和/或其他网络设备)、与其他车辆和/或与计算设备(例如乘客的客户端设备)的无线连接。为了与其他车辆通信,可以在这两辆车之间建立直接链接,和/或可以建立间接链接(例如跨网络以及通过因特网)。直接链接可以使用车对车通信链路提供。车对车通信链路可以向车辆1400提供关于接近车辆1400的车辆(例如车辆1400前面、侧面和/或后面的车辆)的信息。该功能可以是车辆1400的协作自适应巡航控制功能的部分。
网络接口1424可以包括提供调制和解调功能并且使得控制器1436能够通过无线网络通信的SoC。网络接口1424可以包括用于从基带到射频的上转换以及从射频到基带的下转换的射频前端。频率转换可以通过公知的过程执行,和/或可以使用超外差(super-heterodyne)过程执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过LTE、WCDMA、UMTS、GSM、CDMA2000、蓝牙、蓝牙LE、Wi-Fi、Z波、ZigBee、LoRaWAN和/或其他无线协议通信的无线功能。
车辆1400可以还包括可包括片外(例如SoC 1404外)存储装置的数据存储1428。数据存储1428可以包括一个或更多个存储元件,包括RAM、SRAM、DRAM、VRAM、闪存、硬盘和/或可以存储至少一个比特的数据的其他部件和/或设备。
车辆1400可以还包括GNSS传感器1458。GNSS传感器1458(例如GPS、辅助GPS传感器、差分GPS(DGPS)传感器等)用于辅助映射、感知、占用网格生成和/或路径规划功能。可以使用任意数量的GNSS传感器1458,包括例如且不限于使用带有以太网到串行(RS-232)网桥的USB连接器的GPS。
车辆1400可以还包括RADAR传感器1460。RADAR传感器1460可以甚至在黑暗和/或恶劣天气条件下也由车辆1400用于远程车辆检测。RADAR功能安全级别可以是ASIL B。RADAR传感器1460可以使用CAN和/或总线1402(例如以传输RADAR传感器1460生成的数据)以用于控制以及访问对象追踪数据,在一些示例中接入以太网以访问原始数据。可以使用各种各样的RADAR传感器类型。例如且非限制性地,RADAR传感器1460可以适合前面、后面和侧面RADAR使用。在一些示例中,使用脉冲多普勒RADAR传感器。
RADAR传感器1460可以包括不同的配置,例如具有窄视场的远程、具有宽视场的短程、短程侧覆盖等等。在一些示例中,远程RADAR可以用于自适应巡航控制功能。远程RADAR***可以提供通过两个或更多独立扫描实现的广阔视场(例如250m范围内)。RADAR传感器1460可以帮助区分静态对象和运动对象,并且可以由ADAS***用于紧急制动辅助和前方碰撞警告。远程RADAR传感器可以包括具有多根(例如六根或更多)固定RADAR天线以及高速CAN和FlexRay接口的单站多模RADAR。在具有六根天线的示例中,中央四根天线可以创建聚焦的波束图案,其被设计为在更高速率下以来自邻近车道的最小交通干扰记录车辆1400的周围环境。其他两根天线可以扩展视场,使得快速地检测进入或离开车辆1400的车道的车辆成为可能。
作为一个示例,中程RADAR***可以包括高达1460m(前面)或80m(后面)的范围以及高达42度(前面)或1450度(后面)的视场。短程RADAR***可以包括但不限于被设计为安装在后保险杠两端的RADAR传感器。当安装在后保险杠两端时,这样的RADAR传感器***可以创建持续地监控后方和车辆旁边的视盲点的两个波束。
短程RADAR***可以在ADAS***中用于视盲点检测和/或变道辅助。
车辆1400可以还包括超声传感器1462。可以置于车辆1400的前面、后面和/或侧面的超声传感器1462可以用于停车辅助和/或创建和更新占用网格。可以使用各种各样的超声传感器1462,并且不同的超声传感器1462可以用于不同的检测范围(例如2.5m、4m)。超声传感器1462可以操作于功能安全级别的ASIL B。
车辆1400可以包括LIDAR传感器1464。LIDAR传感器1464可以用于对象和行人检测、紧急制动、碰撞避免和/或其他功能。LIDAR传感器1464可以为功能安全级别的ASIL B。在一些示例中,车辆1400可以包括可以使用以太网(例如以将数据提供给千兆以太网交换机)的多个LIDAR传感器1464(例如两个、四个、六个等等)。
在一些示例中,LIDAR传感器1464可能够对360度视场提供对象列表及其距离。商业上可用的LIDAR传感器1464可以具有例如近似1400m的广告范围,精度为2cm-3cm,支持1400Mbps以太网连接。在一些示例中,可以使用一个或更多个非突出的LIDAR传感器1464。在这样的示例中,LIDAR传感器1464可以实现为可以嵌入到车辆1400的前面、后面、侧面和/或拐角的小设备。在这样的示例中,LIDAR传感器1464可以甚至对于低反射率对象提供高达120度水平的和35度竖直的视场,具有200m的范围。前面安装的LIDAR传感器1464可以被配置用于45度与135度之间的水平视场。
在一些示例中,也可以使用诸如3D闪光LIDAR之类的LIDAR技术。3D闪光LIDAR使用激光的闪光作为发射源,以照亮高达约200m的车辆周围环境。闪光LIDAR单元包括接受器,该接受器将激光脉冲传输时间和反射光记录在每个像素上,其进而与从车辆到对象的范围相对应。闪光LIDAR可以允许利用每个激光闪光生成周围环境的高度精确且无失真的图像。在一些示例中,可以部署四个闪光LIDAR传感器,车辆1400的每一侧一个。可用的3D闪光LIDAR***包括没有风扇以外的运动部件(moving part)的固态3D凝视阵列LIDAR相机(例如非扫描LIDAR设备)。闪光LIDAR设备可以使用每帧5纳秒I类(眼睛安全)激光脉冲,并且可以以3D范围点云和共同寄存的强度数据的形式捕获反射的激光。通过使用闪光LIDAR,并且因为闪光LIDAR是没有运动部件的固态设备,LIDAR传感器1464可以不太容易受到运动模糊、振动和/或震动的影响。
该车辆可以还包括IMU传感器1466。在一些示例中,IMU传感器1466可以位于车辆1400的后轴的中心。IMU传感器1466可以包括例如且不限于加速度计、磁力计、陀螺仪、磁罗盘和/或其他传感器类型。在一些示例中,例如在六轴应用中,IMU传感器1466可以包括加速度计和陀螺仪,而在九轴应用中,IMU传感器1466可以包括加速度计、陀螺仪和磁力计。
在一些实施例中,IMU传感器1466可以实现为微型高性能GPS辅助惯性导航***(GPS/INS),其结合微机电***(MEMS)惯性传感器、高灵敏度GPS接收器和高级卡尔曼滤波算法以提供位置、速度和姿态的估计。这样,在一些示例中,IMU传感器1466可以使得车辆1400能够在无需来自磁传感器的输入的情况下通过直接观察从GPS到IMU传感器1466的速度变化并且将其相关来估计方向(heading)。在一些示例中,IMU传感器1466和GNSS传感器1458可以结合到单个集成单元中。
该车辆可以包括置于车辆1400中和/或车辆1400周围的麦克风1496。除别的以外,麦克风1496可以用于应急车辆检测和识别。
该车辆可以还包括任意数量的相机类型,包括立体相机1468、广角相机1470、红外相机1472、环绕相机1474、远程和/或中程相机1498和/或其他相机类型。这些相机可以用来捕获车辆1400整个***周围的图像数据。使用的相机类型取决于实施例和车辆1400的要求,并且相机类型的任意组合可以用来提供车辆1400周围的必要覆盖。此外,相机的数量可以根据实施例而不同。例如,该车辆可以包括六个相机、七个相机、十个相机、十二个相机和/或另一数量的相机。作为一个示例且非限制性地,这些相机可以支持千兆多媒体串行链路(GMSL)和/或千兆以太网。所述相机中的每一个在本文关于图14A和图14B更详细地进行了描述。
车辆1400可以还包括振动传感器1442。振动传感器1442可以测量车辆的诸如车轴之类的部件的振动。例如,振动的变化可以指示道路表面的变化。在另一个示例中,当使用两个或更多振动传感器1442时,振动之间的差异可以用来确定道路表面的摩擦或滑移(例如当动力驱动轴与自由旋转轴之间存在振动差异时)。
车辆1400可以包括ADAS***1438。在一些示例中,ADAS***1438可以包括SoC。ADAS***1438可以包括自主/自适应/自动巡航控制(ACC)、协作自适应巡航控制(CACC)、前方撞车警告(FCW)、自动紧急制动(AEB)、车道偏离警告(LDW)、车道保持辅助(LKA)、视盲点警告(BSW)、后方穿越交通警告(RCTW)、碰撞警告***(CWS)、车道居中(LC)和/或其他特征和功能。
ACC***可以使用RADAR传感器1460、LIDAR传感器1464和/或相机。ACC***可以包括纵向ACC和/或横向ACC。纵向ACC监控并控制到紧接在车辆1400前方的车辆的距离,并且自动地调节车速以维持离前方车辆的安全距离。横向ACC执行距离保持,并且在必要时建议车辆1400改变车道。横向ACC与诸如LCA和CWS之类的其他ADAS应用程序有关。
CACC使用来自其他车辆的信息,该信息可以经由网络接口1424和/或无线天线1426经由无线链路或者通过网络连接(例如通过因特网)间接地从其他车辆接收。直接链接可以由车对车(V2V)通信链路提供,而间接链接可以是基础设施到车辆(I2V)的通信链路。通常,V2V通信概念提供关于紧接在前的车辆(例如紧接在车辆1400前方且与其处于相同车道的车辆)的信息,而I2V通信概念提供关于前方更远处的交通的信息。CACC***可以包括I2V和V2V信息源中的任一个或者二者。给定车辆1400前方车辆的信息,CACC可以更加可靠,并且它有可能提高交通流的畅通性且降低道路拥堵。
FCW***被设计为提醒驾驶员注意危险,使得驾驶员可以采取纠正措施。FCW***使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器1460,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。FCW***可以提供例如声音、视觉警告、振动和/或快速制动脉冲形式的警告。
AEB***检测即将发生的与另一车辆或其他对象的前方碰撞,并且可以在驾驶员在指定的时间或距离参数内没有采取纠正措施的情况下自动地应用制动器。AEB***可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前置相机和/或RADAR传感器1460。当AEB***检测到危险时,它典型地首先提醒(alert)驾驶员采取纠正措施以避免碰撞,并且如果驾驶员没有采取纠正措施,那么AEB***可以自动地应用制动器以努力防止或者至少减轻预测的碰撞的影响。AEB***可以包括诸如动态制动支持和/或碰撞迫近制动之类的技术。
LDW***提供了诸如方向盘或座位振动之类的视觉、听觉和/或触觉警告,以在车辆1400穿过车道标记时提醒驾驶员。当驾驶员指示有意偏离车道时,通过激活转弯信号,不激活LDW***。LDW***可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的前侧朝向相机,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
LKA***是LDW***的变型。如果车辆1400开始离开车道,那么LKA***提供纠正车辆1400的转向输入或制动。
BSW***检测并向驾驶员警告汽车视盲点中的车辆。BSW***可以提供视觉、听觉和/或触觉警报以指示合并或改变车道是不安全的。***可以在驾驶员使用转弯信号时提供附加的警告。BSW***可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的后侧朝向相机和/或RADAR传感器1460,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
RCTW***可以在车辆1400倒车时在后置相机范围之外检测到对象时提供视觉、听觉和/或触觉通知。一些RCTW***包括AEB以确保应用车辆制动器以避免撞车。RCTW***可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的一个或更多个后置RADAR传感器1460,该专用处理器、DSP、FPGA和/或ASIC电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
常规的ADAS***可能易于出现假阳性结果,这可能会让驾驶员烦恼并分散注意力,但是典型地不是灾难性的,因为ADAS***提醒驾驶员并且允许驾驶员决定安全条件是否真正存在并且相对应地采取行动。然而,在自主车辆1400中,在冲突结果的情况下,车辆1400本身必须决定是否注意(heed)来自主计算机或者辅助计算机(例如第一控制器1436或第二控制器1436)的结果。例如,在一些实施例中,ADAS***1438可以是用于向备用计算机合理性模块提供感知信息的备用和/或辅助计算机。备用计算机合理性监视器可以在硬件部件上运行冗余多样的软件,以检测感知和动态驾驶任务中的故障。来自ADAS***1438的输出可以提供给监督MCU。如果来自主计算机和辅助计算机的输出冲突,那么监督MCU必须确定如何协调该冲突以确保安全操作。
在一些示例中,主计算机可以被配置为向监督MCU提供置信度评分,指示主计算机对所选结果的置信度。如果置信度评分超过阈值,那么监督MCU可以遵循主计算机的方向,而不管辅助计算机是否提供冲突或不一致的结果。在置信度评分不满足阈值的情况下并且在主计算机和辅助计算机指示不同的结果(例如冲突)的情况下,监督MCU可以在这些计算机之间进行仲裁以确定适当的结果。
监督MCU可以被配置为运行神经网络,所述神经网络被训练并且被配置为至少部分地基于来自主计算机和辅助计算机的输出,确定辅助计算机提供假警报的条件。因此,监督MCU中的神经网络可以了解何时可以信任辅助计算机的输出以及何时不能。例如,当辅助计算机为基于RADAR的FCW***时,监督MCU中的神经网络可以了解FCW***何时正在识别事实上不是危险的金属对象,例如触发警报的排水栅格或井盖。类似地,当辅助计算机是基于相机的LDW***时,监督MCU中的神经网络可以学习在骑车者或行人在场并且车道偏离实际上是最安全的策略时无视该LDW。在包括运行在监督MCU上的神经网络的实施例中,监督MCU可以包括适合于利用关联的内存运行神经网络的DLA或GPU中的至少一个。在优选的实施例中,监督MCU可以包括SoC 1404的部件和/或作为SoC1404的部件而被包括。
在其他示例中,ADAS***1438可以包括使用传统计算机视觉规则执行ADAS功能的辅助计算机。这样,辅助计算机可以使用经典的计算机视觉规则(如果-那么),并且在监督MCU中存在神经网络可以提高可靠性、安全性和性能。例如,多样化的实现方式和有意的非完全相同(non-identity)使得整个***更加容错,对于软件(或者软件-硬件接口)功能造成的故障而言尤其如此。例如,如果在主计算机上运行的软件中存在软件漏洞或错误并且运行在辅助计算机上的非完全相同的软件代码提供相同的总体结果,那么监督MCU可以更加确信总体结果是正确的,并且主计算机上的软件或硬件中的漏洞不造成实质性的错误。
在一些示例中,ADAS***1438的输出可以馈送至主计算机的感知块和/或主计算机的动态驾驶任务块。例如,如果ADAS***1438由于对象紧接在前的原因而指示前方碰撞警告,那么感知块可以在识别对象时使用该信息。在其他示例中,辅助计算机可以具有它自己的神经网络,其被训练并且因此如本文所描述的降低假阳性的风险。
车辆1400可以还包括信息娱乐SoC 1430(例如车载信息娱乐***(IVI))。尽管被图示和描述为SoC,但是信息娱乐***可以不是SoC,并且可以包括两个或更多分立的部件。信息娱乐SoC 1430可以包括可以用来向车辆1400提供音频(例如音乐、个人数字助理、导航指令、新闻、广播等等)、视频(例如TV、电影、流媒体等等)、电话(例如免提呼叫)、网络连接(例如LTE、WiFi等等)和/或信息服务(例如导航***,后停车援助,无线电数据***,诸如燃油水平、覆盖的总距离、制动燃油水平、油位、车门开/关、空气过滤器信息之类的车辆有关信息,等等)的硬件和软件的组合。例如,信息娱乐SoC 1430可以包括收音机、盘播放器、导航***、视频播放器、USB和蓝牙连接、车载电脑、车载娱乐、WiFi、方向盘音频控件、免提语音控件、平视显示器(HUD)、HMI显示器1434、远程信息处理设备、控制面板(例如用于控制各种部件、特征和/或***,和/或与其交互)和/或其他部件。信息娱乐SoC 1430可以进一步用来向车辆的用户提供信息(例如视觉的和/或听觉的),例如来自ADAS***1438的信息,诸如规划的车辆机动、轨迹、周围环境信息(例如交叉路口信息、车辆信息、道路信息等等)之类的自主驾驶信息,和/或其他信息。
信息娱乐SoC 1430可以包括GPU功能。信息娱乐SoC 1430可以通过总线1402(例如CAN总线、以太网等)与车辆1400的其他设备、***和/或部件通信。在一些示例中,信息娱乐SoC 1430可以耦合至监督MCU,使得在主控制器1436(例如车辆1400的主和/或备用计算机)出现故障的情况下,信息娱乐***的GPU可以执行一些自驾驶功能。在这样的示例中,信息娱乐SoC 1430可以如本文所描述的将车辆1400置于司机安全停车模式。
车辆1400可以还包括仪表组1432(例如数字仪表板、电子仪表组、数字仪表面板等等)。仪表组1432可以包括控制器和/或超级计算机(例如分立的控制器或超级计算机)。仪表组1432可以包括一套仪器,例如车速表、燃油水平、油压、转速表、里程表、转弯指示器、换档位置指示器、安全带警告灯、停车制动警告灯、发动机故障灯、安全气囊(SRS)***信息、照明控件、安全***控件、导航信息等等。在一些示例中,信息可以被显示和/或在信息娱乐SoC 1430和仪表组1432之间共享。换言之,仪表组1432可以作为信息娱乐SoC 1430的部分而被包括,或者反之亦然。
图14D为根据本公开一些实施例的基于云的服务器与图14A的示例自主车辆1400之间的通信的***示意图。***1476可以包括服务器1478、网络1490以及包括车辆1400在内的车辆。服务器1478可以包括多个GPU1484(A)-1484(H)(这里统称为GPU 1484)、PCIe交换机1482(A)-1482(H)(这里统称为PCIe交换机1482)和/或CPU 1480(A)-1480(B)(这里统称为CPU 1480)。GPU 1484、CPU 1480和PCIe交换机可以与诸如例如且不限于NVIDIA开发的NVLink接口1488之类的高速互连和/或PCIe连接1486互连。在一些示例中,GPU 1484经由NVLink和/或NVSwitch SoC连接,并且GPU 1484和PCIe交换机1482经由PCIe互连连接。尽管图示出八个GPU 1484、两个CPU 1480和两个PCIe交换机,但是这并不意图是限制性的。取决于实施例,服务器1478中的每一个可以包括任意数量的GPU 1484、CPU 1480和/或PCIe交换机。例如,服务器1478中的每一个可以包括八个、十六个、三十二个和/或更多GPU 1484。
服务器1478可以通过网络1490并且从车辆接收图像数据,该图像数据表示示出诸如最近开始的道路工程之类的意外或改变的道路状况的图像。服务器1478可以通过网络1490并且向车辆传输神经网络1492、更新的神经网络1492和/或地图信息1494,包括关于交通和道路状况的信息。对地图信息1494的更新可以包括对于HD地图1422的更新,例如关于建筑工地、坑洼、弯道、洪水或其他障碍物的信息。在一些示例中,神经网络1492、更新的神经网络1492和/或地图信息1494可以已从新的训练和/或从环境中的任意数量的车辆接收的数据中表示和/或基于数据中心处执行的训练(例如使用服务器1478和/或其他服务器)的经验产生。
服务器1478可以用来基于训练数据训练机器学习模型(例如神经网络)。训练数据可以由车辆生成,和/或可以在仿真中生成(例如使用游戏引擎)。在一些示例中,训练数据被标记(例如在神经网络受益于有监督学习的情况下)和/或经历其他预处理,而在其他示例中,训练数据不被标记和/或预处理(例如在神经网络无需有监督学习的情况下)。可以根据任何一类或更多类别的机器学习技术来执行训练,包括但不限于诸如以下类别:监督训练、半监督训练、非监督训练、自学习、强化学习、联合学习、转移学习、特征学习(包括主要组成和聚类分析)、多线性子空间学习、流形学习、表示学习(包括备用字典学习)、基于规则的机器学习、异常检测及其任何变体或组合。一旦机器学习模型被训练,机器学习模型可以由车辆使用(例如通过网络1490传输至车辆),和/或机器学习模型可以由服务器1478用来远程地监控车辆。
在一些示例中,服务器1478可以接收来自车辆的数据,并且将该数据应用到最新的实时神经网络以用于实时智能推理。服务器1478可以包括由GPU 1484供电的深度学习超级计算机和/或专用AI计算机,例如NVIDIA开发的DGX和DGX站机器。然而,在一些示例中,服务器1478可以包括仅使用CPU供电的数据中心的深度学习基础设施。
服务器1478的深度学习基础设施可能够快速实时推理,并且可以使用该能力来评估并验证车辆1400中的处理器、软件和/或关联硬件的健康状况。例如,深度学习基础设施可以接收来自车辆1400的定期更新,例如图像序列和/或车辆1400已经定位的位于该图像序列中的对象(例如经由计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可以运行它自己的神经网络以识别对象并且将它们与车辆1400识别的对象相比较,如果结果不匹配并且该基础设施得出车辆1400中的AI发生故障的结论,那么服务器1478可以向车辆1400传输信号,指示车辆1400的故障保护计算机进行控制,通知乘客,并且完成安全停车操作。
为了推理,服务器1478可以包括GPU 1484和一个或更多个可编程推理加速器(例如NVIDIA的TensorRT)。GPU供电的服务器和推理加速的组合可以使得实时响应成为可能。在其他示例中,例如在性能不那么重要的情况下,CPU、FPGA和其他处理器供电的服务器可以用于推理。
示例计算设备
图15是适合用于实现本公开的一些实施例的示例计算设备1500的框图。计算设备1500可以包括直接或间接耦合以下设备的互连***1502:存储器1504、一个或更多个中央处理单元(CPU)1506、一个或更多个图形处理单元(GPU)1508、通信接口1510、输入/输出(I/O)端口1512、输入/输出组件1514、电源1516,一个或更多个呈现组件1518(例如,(一个或更多个)显示器)和一个或更多个逻辑单元1520。在至少一个实施例中,(一个或更多个)计算设备1500可以包括一个或更多个虚拟机(VM),和/或其任何组件可以包括虚拟组件(例如,虚拟硬件组件)。对于非限制性示例,GPU 1508中的一个或更多个可以包括一个或更多个vGPU,CPU1506中的一个或更多个可以包括一个或更多个vCPU,和/或逻辑单元1520中的一个或更多个可以包括一个或更多个虚拟逻辑单元。这样,(一个或更多个)计算设备1500可以包括分立组件(例如,专用于计算设备1500的全GPU)、虚拟组件(例如,专用于计算设备1500的GPU的一部分)、或其组合。
尽管图15的各个方框被示出为利用线路经由互连***1502连接,但这并不旨在是限制性的并且仅是为了清楚起见。例如,在一些实施例中,呈现组件1518(诸如显示设备)可被认为是I/O组件1514(例如,如果显示器是触摸屏)。作为另一个示例,CPU 1506和/或GPU1508可以包括存储器(例如,存储器1504可以表示除了GPU 1508的存储器、CPU 1506和/或其他组件之外的存储设备)。换言之,图15的计算设备仅是说明性的。在如“工作站”、“服务器”、“膝上型计算机”、“桌面型计算机”、“平板计算机”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实***”和/或其他设备或***类型的此类类别之间不做区分,因为所有都被考虑在图15的计算设备的范围内。
互连***1502可表示一个或更多个链路或总线,诸如地址总线、数据总线、控制总线或其组合。互连***1502可以包括一个或更多个总线或链路类型,诸如工业标准架构(ISA)总线、扩展工业标准架构(EISA)总线、视频电子标准协会(VESA)总线、***组件互连(PCI)总线、快速***组件互连(PCIe)总线和/或另一类型的总线或链路。在一些实施例中,组件之间存在直接连接。作为示例,CPU 1506可直接连接到存储器1504。进一步,CPU 1506可直接连接到GPU 1508。在组件之间存在直接或点对点连接的情况下,互连***1502可包括PCIe链路以执行连接。在这些示例中,PCI总线不需要被包括在计算设备1500中。
存储器1504可以包括各种计算机可读介质中的任何计算机可读介质。计算机可读介质可以是可由计算设备1500访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质,以及可移除和不可移除介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。
计算机存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型的信息的任何方法或技术实现的易失性和非易失性介质和/或可移动和不可移动介质。例如,存储器1504可以存储计算机可读指令(例如,表示(一个或更多个)程序和/或(一个或更多个)程序元件,诸如操作***)。计算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术,CD-ROM、数字通用盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储装置或其他磁性存储装置,或可用于存储所要信息且可由计算设备1500存取的任何其他介质。如本文所使用的,计算机存储介质不包括信号本身。
计算机存储介质可将计算机可读指令、数据结构、程序模块和/或其他数据类型体现在诸如载波或其他传输机制之类的已调制数据信号中,并且包括任何信息传递介质。术语“调制数据信号”可以指代以编码信号中的信息的方式设置或改变其一个或更多个特性的信号。作为示例而非限制,计算机存储介质可包括有线介质(诸如有线网络或直接有线连接)和无线介质(诸如声学、RF、红外和其他无线介质)。以上任何内容的组合也应包含在计算机可读介质的范围内。
CPU 1506可经配置以执行计算机可读指令中的至少一些以控制计算设备1500的一个或更多个组件执行本文中所描述的方法和/或过程中的一个或更多个。CPU 1506可各自包含能够同时处置众多软件线程的一个或更多个核心(例如,一个、两个、四个、八个、二十八个、七十二个等)。CPU 1506可包含任何类型的处理器,且可取决于所实施的计算设备1500的类型而包含不同类型的处理器(例如,针对移动装置具有较少核心的处理器和针对服务器具有较多核心的处理器)。例如,取决于计算设备1500的类型,处理器可以是使用精简指令集计算(RISC)实现的高级RISC机器(ARM)处理器或使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或补充协处理器(诸如数学协处理器)之外,计算设备1500还可包括一个或更多个CPU 1506。
除(一个或更多个)CPU 1506以外或替代(一个或更多个)CPU 1506,(一个或更多个)GPU 1508可被配置成执行计算机可读指令中的至少一些以控制计算设备1500的一个或更多个组件执行本文所描述的方法和/或过程中的一个或更多个。GPU 1508中的一个或更多个可为集成GPU(例如,有CPU 1506中的一个或更多个)和/或GPU 1508中的一个或更多个可为离散GPU。在实施例中,GPU 1508中的一个或更多个可以是CPU 1506中的一个或更多个的协处理器。GPU 1508可由计算设备1500使用以渲染图形(例如,3D图形)或执行通用计算。例如,GPU1508可用于GPU上的通用计算(GPGPU)。GPU 1508可包含能够同时处置数百或数千软件线程的数百或数千核心。GPU 1508可响应于渲染命令(例如,经由主机接口从CPU 1506接收的渲染命令)而产生输出图像的像素数据。GPU 1508可包含用于存储像素数据或任何其他合适数据(例如,GPGPU数据)的图形存储器(例如,显示存储器)。显示存储器可作为存储器1504的一部分被包括。GPU 1508可包含并行操作(例如,经由链路)的两个或两个以上GPU。链路可以直接连接GPU(例如,使用NVLINK)或可以通过交换机(例如,使用NVSwitch)连接GPU。当组合在一起时,每一GPU 1508可产生用于输出的不同部分或用于不同输出的像素数据或GPGPU数据(例如,用于第一图像的第一GPU和用于第二图像的第二GPU)。每一GPU可包含其自己的存储器,或可与其他GPU共享存储器。
除CPU 1506和/或GPU 1508之外或替代CPU 1506和/或GPU 1508,逻辑单元1520可经配置以执行计算机可读指令中的至少一些以控制计算设备1500的一个或更多个组件执行本文中所描述的方法和/或过程中的一个或更多个。在实施例中,(一个或更多个)CPU1506、(一个或更多个)GPU 1508、和/或(一个或更多个)逻辑单元1520可以离散地或联合地执行方法、过程和/或其部分的任何组合。逻辑单元1520中的一个或更多个可为CPU 1506和/或GPU 1508中的一个或更多个中的一部分和/或集成于CPU 1506和/或GPU 1508中的一个或更多个和/或逻辑单元1520中的一个或更多个可为离散组件或以其他方式在CPU 1506和/或GPU 1508外部。在实施例中,逻辑单元1520中的一个或更多个可以是CPU 1506中的一个或更多个和/或GPU 1508中的一个或更多个的协处理器。
逻辑单元1520的示例包括一个或更多个处理核心和/或其组件,诸如张量核心(TC)、张量处理单元(TPU)、像素视觉核心(PVC)、视觉处理单元(VPU)、图形处理群集(GPC)、纹理处理群集(TPC)、流多处理器(SM)、树横向单元(TTU)、人工智能加速器(AIA)、深度学习加速器(DLA)、算术逻辑单元(ALU)、专用集成电路(ASIC)、浮点单元(FPU)、输入/输出(I/O)元件、***组件互连(PCI)或快速***组件互连(PCIe)元件等。
通信接口1510可以包括使计算设备1500能够经由电子通信网络(包括有线和/或无线通信)与其他计算设备通信的一个或更多个接收机、发射机和/或收发机。通信接口1510可包括实现通过多个不同网络中的任一个进行通信的组件和功能,诸如无线网络(例如,Wi-Fi、Z-Wave、蓝牙、蓝牙LE、ZigBee等)、有线网络(例如,通过以太网或无限带通信)、低功率广域网(例如,LoRaWAN、SigFox等)和/或互联网。
I/O端口1512可以使得计算设备1500能够逻辑地耦合到包括I/O组件1514、(一个或更多个)呈现组件1518和/或其他组件的其他设备,其中一些可以被内置到(例如,集成在)计算设备1500中。说明性I/O组件1514包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等。I/O组件1514可以提供处理空中姿势、语音或由用户生成的其他生理输入的自然用户界面(NUI)。在一些情况下,可将输入发射到适当的网络元件以供进一步处理。NUI可实现与计算设备1500的显示器相关联的语音识别、指示笔识别、面部识别、生物特征识别、屏幕上和屏幕附近的姿势识别、空中姿势、头部和眼睛跟踪、以及触摸识别(如以下更详细地描述的)的任何组合。计算设备1500可以包括用于手势检测和识别的深度相机,诸如立体相机***、红外相机***、RGB相机***、触摸屏技术和这些的组合。另外,计算设备1500可包含使得能够检测运动的加速度计或陀螺仪(例如,作为惯性测量单元(IMU)的部分)。在一些示例中,计算设备1500可以使用加速度计或陀螺仪的输出来渲染沉浸式增强现实或虚拟现实。
电源1516可包括硬连线电源、电池电源或其组合。电源1516可向计算设备1500提供电力以使得计算设备1500的组件能够操作。
呈现组件1518可包括显示器(例如,监视器、触摸屏、电视屏幕、平视显示器(HUD)、其他显示器类型或其组合)、扬声器和/或其他呈现组件。呈现组件1518可从其他组件(例如,GPU 1508、CPU 1506等)接收数据,且输出所述数据(例如,作为图像、视频、声音等)。
示例数据中心
图16示出了可在本公开的至少一个实施例中使用的示例数据中心1600。数据中心1600可包括数据中心基础设施层1610、框架层1620、软件层1630和/或应用层1640。
如图16所示,数据中心基础设施层1610可以包括资源协调器1612、分组的计算资源1614和节点计算资源(“节点C.R.s”)1616(1)-1616(N),其中“N”表示任何完整的正整数。在至少一个实施例中,节点C.R.s 1616(1)-1616(N)可包括,但不限于任何数量的中央处理单元(“CPU”)或其他处理器(包括加速器、现场可编程门阵列(FPGA)、图形处理器或图形处理单元(GPU)等),存储器设备(例如,动态只读存储器),存储设备(例如,固态或磁盘驱动器),网络输入/输出(“NW I/O”)装置、网络交换机、虚拟机(“VM”)、功率模块和/或冷却模块,等等。在一些实施例中,来自节点C.R.s 1616(1)-1616(N)中的一个或更多个节点C.R.s可对应于具有上述计算资源中的一个或更多个的服务器。此外,在一些实施例中,节点C.R.s 1616(1)-16161(N)可包括一个或更多个虚拟组件,诸如vGPU、vCPU等,和/或节点C.R.s 1616(1)-1616(N)中的一个或更多个可对应于虚拟机(VM)。
在至少一个实施例中,分组的计算资源1614可包括容纳在一个或更多个机架(未示出)内的节点C.R.s 1616的单独分组,或容纳在不同地理位置(也未示出)处的数据中心内的许多机架。分组的计算资源1614内的节点C.R.s 1616的单独分组可包括可被配置或分配来支持一个或更多个工作负荷的分组计算、网络、存储器或存储资源。在至少一个实施例中,包括CPU、GPU和/或其他处理器的若干节点C.R.s 1616可以分组在一个或更多个机架内以提供计算资源来支持一个或更多个工作负荷。一个或更多个机架还可包括任意组合的任意数量的功率模块、冷却模块和/或网络交换机。
资源协调器1622可配置或以其他方式控制一个或更多个节点C.R.s1616(1)-1616(N)和/或分组的计算资源1614。在至少一个实施例中,资源协调器1622可以包括用于数据中心1600的软件设计基础设施(“SDI”)管理实体。资源协调器1622可以包括硬件、软件或其某种组合。
在至少一个实施例中,如图16所示,框架层1620可以包括作业调度器1632、配置管理器1634、资源管理器1636和/或分布式文件***1638。框架层1620可以包括支持软件层1630的软件1632和/或应用层1640的一个或更多个应用1642的框架。软件1632或应用1642可分别包含基于网络的服务软件或应用,例如由Amazon(亚马逊)网络服务、GoogleCloud(谷歌云)和MicrosoftAzure提供的那些。框架层1620可以是但不限于可以利用分布式文件***1638进行大规模数据处理(例如,“大数据”)的免费和开源的软件网络应用框架(如Apache SparkTM(下文称为“Spark”))的类型。在至少一个实施例中,作业调度器1632可以包括Spark驱动器以促进调度由数据中心1600的不同层支持的工作负荷。配置管理器1634可以能够配置不同层,诸如软件层1630和框架层1620(其包括用于支持大规模数据处理的Spark和分布式文件***1638)。资源管理器1636可以能够管理被映射到分布式文件***1638和作业调度器1632或被分配用于支持分布式文件***1638和作业调度器1632的集群的或分组的计算资源。在至少一个实施例中,集群的或分组的计算资源可包括在数据中心基础设施层1610的分组的计算资源1614。资源管理器1036可与资源协调器1612协调以管理这些被映射或分配的计算资源。
在至少一个实施例中,在软件层1630中包括的软件1632可包括由节点C.R.s 1616(1)-1616(N)、分组的计算资源1614和/或框架层1620的分布式文件***1638中的至少部分使用的软件。一种或更多种类型的软件可以包括但不限于互联网网页搜索软件、电子邮件病毒扫描软件、数据库软件和流式视频内容软件。
在至少一个实施例中,在应用层1640中包括的应用1642可包括由节点C.R.s 1616(1)-1616(N)、分组的计算资源1614和/或框架层1620的分布式文件***1638中的至少部分使用的一个或更多个类型的应用。一种或更多种类型的应用可以包括但不限于任何数量的基因组应用、认知计算和机器学习应用,包括训练或推断软件、机器学习框架软件(例如,PyTorch、TensorFlow、Caffe等)和/或结合一个或更多个实施例使用的其他机器学习应用。
在至少一个实施例中,配置管理器1634、资源管理器1636和资源协调器1612中的任一个可基于在任何技术上可行的方式中获取的任何量和类型的数据来实现任何数量和类型的自修改动作。自修改动作可使数据中心1600的数据中心操作者免于做出可能较差的配置决策和可能避免数据中心的未充分利用和/或较差执行部分。
根据本文描述的一个或更多个实施例,数据中心1600可包括工具、服务、软件或其他资源来训练一个或更多个机器学习模型或使用一个或更多个机器学习模型来预测或推断信息。例如,可以通过使用以上相对于数据中心1600描述的软件和/或计算资源根据神经网络架构来计算权重参数来训练(一个或更多个)机器学习模型。在至少一个实施例中,对应于一个或更多个神经网络的经训练或部署的机器学习模型可用于通过使用通过一种或多种训练技术(诸如但不限于本文中描述的那些训练技术)计算的权重参数,使用上文相对于数据中心1600描述的资源来推断或预测信息。
在至少一个实施例中,数据中心1600可使用CPU、专用集成电路(ASIC)、GPU、FPGA和/或其他硬件(或与其对应的虚拟计算资源)来使用上述资源执行训练和/或推断。此外,上文所描述的一或更多个软件和/或硬件资源可被配置为允许用户训练或执行对信息的推断的服务,例如图像识别、语音识别或其他人工智能服务。
示例网络环境
适合用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备、服务器、网络附加存储(NAS)、其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如,每个设备)可以在图15的(一个或更多个)计算设备1500的一个或更多个实例上实现——例如,每个设备可以包括(一个或更多个)计算设备1500的类似部件、特征和/或功能。此外,在实现后端设备(例如,服务器、NAS等)的情况下,后端设备可被包括作为数据中心1600的一部分,数据中心1600的示例在本文中关于图16更详细地描述。
网络环境的组件可经由网络彼此通信,所述网络可为有线的、无线的或为两者。网络可以包括多个网络或多个网络中的一个网络。例如,网络可包括一个或更多个广域网(WAN)、一个或更多个局域网(LAN)、一个或更多个公共网络(诸如互联网和/或公共交换电话网(PSTN))和/或一个或更多个私有网络。在网络包括无线电信网络的情况下,诸如基站、通信塔或者甚至接入点(以及其他组件)的组件可以提供无线连接。
兼容的网络环境可以包括一个或更多个对等网络环境(在这种情况下,服务器可以不被包括在网络环境中)和一个或更多个客户端-服务器网络环境(在这种情况下,一个或更多个服务器可以被包括在网络环境中)。在对等网络环境中,本文针对服务器所描述的功能可在任何数量的客户端设备上实现。
在至少一个实施例中,网络环境可包括一个或更多个基于云的网络环境、分布式计算环境、其组合等。基于云的网络环境可包括框架层、作业调度器、资源管理器和在一个或更多个服务器上实现的分布式文件***,所述服务器可包括一个或更多个核心网服务器和/或边缘服务器。框架层可包括支持软件层的软件和/或应用层的一个或更多个应用的框架。软件或应用可分别包含基于网络的服务软件或应用。在实施例中,一个或更多个客户端设备可以使用基于网络的服务软件或应用(例如,通过经由一个或更多个应用编程接口(API)访问服务软件和/或应用)。框架层可以是但不限于如可以使用分布式文件***进行大规模数据处理(例如,“大数据”)的一种免费和开源软件网络应用框架。
基于云的网络环境可提供执行本文描述的计算和/或数据存储功能(或其一个或更多个部分)的任何组合的云计算和/或云存储。这些不同功能中的任何功能可以分布在来自(例如,可以分布在州、地区、国家、全球等的一个或更多个数据中心的)中央或核心服务器的多个位置上。如果与用户(例如,客户端设备)的连接相对靠近边缘服务器,则核心服务器可以将功能的至少一部分指定给边缘服务器。基于云的网络环境可以是私有的(例如,限于单个组织),可以是公共的(例如,对许多组织可用),和/或其组合(例如,混合云环境)。
(一个或更多个)客户端设备可以包括本文关于图15所描述的(一个或更多个)示例计算设备1500的组件、特征和功能中的至少一些。作为示例而非限制,客户端设备可被实现为个人计算机(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.一种方法,包括:
访问使用不同类型的传感器捕获的传感器数据;
组成注释场景集合,所述集合中的至少一个注释场景包括来自两个或更多个所述不同类型的传感器中的每一个的所述传感器数据的帧,所述组成至少基于一个或更多个时间偏移的表示对齐来自两个或更多个所述不同类型的传感器的所述传感器数据;
由标记工具生成多个注释任务的表示,以用地面实况注释来注释所述注释场景;
使用所述标记工具接受用于所述多个注释任务中的至少一个注释任务的输入,所述输入用由所述至少一个注释任务定义的所述地面实况注释集合来注释来自所述注释场景集合的一个或更多个注释场景;以及
导出所述地面实况注释集合的表示。
2.如权利要求1所述的方法,其中所述不同类型的传感器包括LiDAR传感器和相机,其中所述一个或更多个时间偏移的表示包括在所述LiDAR传感器的LiDAR自旋位于所述相机的视野内时相对于所述LiDAR自旋的开始的延迟。
3.如权利要求1所述的方法,其中所述不同类型的传感器包括LiDAR传感器和一个或更多个相机,并且所述多个注释任务包括:
第一注释任务,包括对所述注释场景集合中的相机帧的注释;
第二注释任务,包括在二维空间中对所述注释场景集合中的LiDAR帧的注释;以及
第三注释任务,包括链接出现在所述注释场景集合中的多个注释场景中的注释。
4.如权利要求3所述的方法,其中所述多个注释任务还包括:
第四注释任务,包括在三维空间中对所述注释场景集合中的LiDAR帧的注释;以及
第五注释任务,包括链接出现在所述注释场景集合中的任何特定注释场景中的LiDAR帧和相机帧两者中的注释。
5.如权利要求1所述的方法,其中所述多个注释任务将不同类型的对象或不同级别的注释细节的注释分离成单独的注释任务。
6.如权利要求1所述的方法,还包括:在所述多个注释任务中的特定注释任务期间,由所述标记工具针对所述注释场景集合中的特定注释场景用在所述特定注释任务期间所述注释场景集合中的先前注释场景的先前注释集合初始化注释集合。
7.如权利要求1所述的方法,其中所述注释场景集合中的特定注释场景包括来自第一类型传感器的所述传感器数据的第一帧和来自第二类型传感器的所述传感器数据的第二帧,所述方法进一步包括:由所述标记工具,
通过将信息从所述第一帧的一部分的坐标投射到所述第二帧的一部分的坐标中,识别所述第一帧的该部分和所述第二帧的该部分之间的对应关系;以及
导致所述对应关系的可视化的呈现。
8.如权利要求1所述的方法,其中所述注释场景集合中的特定注释场景包括来自第一类型传感器的所述传感器数据的第一帧和来自第二类型传感器的所述传感器数据的第二帧,所述方法进一步包括:由所述标记工具,
确定由输入探针识别的所述第一帧的一部分;
将所述第一帧的该部分的坐标投射到所述第二帧的对应部分的坐标中;以及
导致所述第二帧的对应部分的可视化。
9.如权利要求1所述的方法,还包括:由所述标记工具,在所述至少一个注释任务期间遍历每对象过程,所述每对象过程包括:对于所述注释场景集合中的在多个注释任务中的先前注释任务期间接收到的注释场景的至少一个注释,
导致在所述注释场景中呈现所述注释的放大视图;以及
提示和接受调整或确认所述注释的输入。
10.如权利要求1所述的方法,还包括:由所述标记工具,
对于所述至少一个注释任务,迭代遍历所述标记工具的一个或更多个标记接口中的所述注释场景;以及
对于所述至少一个注释场景,提示并接受识别由所述至少一个注释任务定义的对应的所述地面实况注释集合的输入,同时导致来自两个或更多个所述不同类型的传感器中的每一个的所述传感器数据的所述帧的呈现。
11.一种处理器,包括一个或更多个电路,用于:
访问在捕获会话期间捕获的传感器数据,所述传感器数据包括来自LiDAR传感器的LiDAR帧和来自至少一个相机的相机帧;
至少基于所述LiDAR帧中的特定LiDAR帧和所述相机帧中的特定相机帧之间的时间偏移的表示来组成注释场景集合,所述注释场景集合中的特定注释场景包括所述特定LiDAR帧和所述特定相机帧;
由标记工具生成多个注释任务的表示,以用地面实况注释来注释所述注释场景集合中的注释场景;
使用所述标记工具接受用于所述多个注释任务中的至少一个注释任务的输入,所述输入用由所述至少一个注释任务定义的地面实况注释集合来注释所述注释场景集合中的一个或更多个所述注释场景;以及
导出所述地面实况注释集合的表示。
12.如权利要求11所述的处理器,其中所述时间偏移的所述表示包括当LiDAR自旋位于所述至少一个相机的视野内时相对于所述LiDAR自旋的开始的延迟。
13.如权利要求11所述的处理器,其中所述多个注释任务包括:
第一注释任务,包括对所述注释场景集合中的相机帧集合的注释;
第二注释任务,包括在二维空间中对所述注释场景集合中的LiDAR帧集合的注释;以及
第三注释任务,包括链接出现在所述注释场景集合中的多个注释场景中的注释。
14.如权利要求11所述的处理器,所述一个或更多个电路还用于在所述多个注释任务中的特定注释任务期间,针对所述注释场景集合中的至少一个注释场景,用在所述特定注释任务期间所述注释场景集合中的先前注释场景的先前注释集合来初始化注释集合。
15.如权利要求11所述的处理器,所述一个或更多个电路进一步用于:
通过将信息从所述特定LiDAR帧的坐标投射到所述特定相机帧的坐标中,识别所述特定LiDAR帧的一部分和所述特定相机帧的一部分之间的对应关系;以及
导致所述对应关系的可视化的呈现。
16.如权利要求11所述的处理器,所述一个或更多个电路进一步用于:
确定由输入探针识别的所述特定LiDAR帧的一部分;
将所述特定LiDAR帧的该部分的坐标投射到所述特定相机帧的对应部分的坐标中;以及
导致所述特定相机帧的所述对应部分的可视化。
17.如权利要求11所述的处理器,所述一个或更多个电路还用于在所述至少一个注释任务期间迭代遍历每对象过程,所述每对象过程包括:对于在所述多个注释任务中的先前注释任务期间接收到的注释场景的至少一个注释,
导致在所述注释场景中呈现所述注释的放大视图;以及
提示和接受调整或确认所述注释的输入。
18.一种***,包括:
一个或更多个处理单元;以及
一个或更多个存储单元,存储有指令,所述指令在由所述一个或更多个处理单元执行时,使所述一个或更多个处理单元执行操作,所述操作包括:
由标记工具生成多个注释任务的表示,以用地面实况注释来注释注释场景集合,所述注释场景集合中的至少一个注释场景包括来自不同类型的传感器的传感器数据的对齐帧;
使用所述标记工具,对于所述多个注释任务中的至少一个注释任务:
在所述标记工具的一个或更多个标记接口中迭代遍历所述注释场景集合;以及
接受所述至少一个注释场景的输入,所述输入识别由所述至少一个注释任务定义的地面实况注释集合,同时导致呈现来自两个或更多个所述不同类型的传感器的传感器数据的对齐帧集合;以及
导出所述地面实况注释集合的表示。
19.如权利要求18所述的***,其中特定注释场景包括来自第一类型传感器的所述传感器数据的第一帧和来自第二类型传感器的所述传感器数据的第二帧,所述操作还包括:由所述标记工具:
通过将信息从所述第一帧的一部分的坐标投射到所述第二帧的一部分的坐标中,识别所述第一帧的该部分和所述第二帧的该部分之间的对应关系;以及
导致所述对应关系的可视化的呈现。
20.如权利要求18所述的***,其中所述***包括在以下至少一项中:
用于自主或半自主机器的控制***;
用于自主或半自主机器的感知***;
用于执行模拟操作的***;
用于执行深度学习操作的***;
使用边缘设备实现的***;
使用机器人实现的***;
包含一个或更多个虚拟机VM的***;
至少部分在数据中心中实现的***;或者
至少部分使用云计算资源实现的***。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/187,350 | 2021-02-26 | ||
US17/187,350 US20220277193A1 (en) | 2021-02-26 | 2021-02-26 | Ground truth data generation for deep neural network perception in autonomous driving applications |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114973050A true CN114973050A (zh) | 2022-08-30 |
Family
ID=82799371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210173371.4A Pending CN114973050A (zh) | 2021-02-26 | 2022-02-24 | 自动驾驶应用中深度神经网络感知的地面实况数据生成 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220277193A1 (zh) |
JP (1) | JP2022132075A (zh) |
CN (1) | CN114973050A (zh) |
DE (1) | DE102022104026A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11068742B2 (en) * | 2019-10-30 | 2021-07-20 | Scenera, Inc. | Curation of custom workflows using multiple cameras |
US11555928B2 (en) * | 2021-06-21 | 2023-01-17 | Cyngn, Inc. | Three-dimensional object detection with ground removal intelligence |
CN115619960A (zh) * | 2021-07-15 | 2023-01-17 | 北京小米移动软件有限公司 | 图像处理的方法、装置及电子设备 |
-
2021
- 2021-02-26 US US17/187,350 patent/US20220277193A1/en active Pending
- 2021-12-14 JP JP2021202139A patent/JP2022132075A/ja active Pending
-
2022
- 2022-02-21 DE DE102022104026.7A patent/DE102022104026A1/de active Pending
- 2022-02-24 CN CN202210173371.4A patent/CN114973050A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2022132075A (ja) | 2022-09-07 |
DE102022104026A1 (de) | 2022-09-01 |
US20220277193A1 (en) | 2022-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11688181B2 (en) | Sensor fusion for autonomous machine applications using machine learning | |
US20240116538A1 (en) | Lane change planning and control in autonomous machine applications | |
JP2021089723A (ja) | LiDAR知覚のためのマルチビュー・ディープ・ニューラル・ネットワーク | |
WO2021041854A1 (en) | Object detection and classification using lidar range images for autonomous machine applications | |
CN114902295A (zh) | 用于自主驾驶应用的三维路口结构预测 | |
CN114667437A (zh) | 用于自主驾驶应用的地图创建和定位 | |
JP2022526825A (ja) | 自律マシン・アプリケーションのためのマップ情報で拡張されたグラウンド・トゥルース・データを使用するニューラル・ネットワーク・トレーニング | |
CN113994390A (zh) | 针对自主驾驶应用的使用曲线拟合的地标检测 | |
US20210264175A1 (en) | Object Detection Using Image Alignment for Autonomous Machine Applications | |
CN114155272A (zh) | 自主机器应用中的自适应目标跟踪算法 | |
CN115315709A (zh) | 自主***中用于行为预测的基于模型的增强学习及应用 | |
US20230135088A1 (en) | 3d surface reconstruction with point cloud densification using deep neural networks for autonomous systems and applications | |
US20220277193A1 (en) | Ground truth data generation for deep neural network perception in autonomous driving 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 | |
US20230135234A1 (en) | Using neural networks for 3d surface structure estimation based on real-world data for autonomous systems and applications | |
US20240059295A1 (en) | Multi-view geometry-based hazard detection for autonomous systems and applications | |
CN116767245A (zh) | 使用自主***和应用的神经网络的地图信息对象数据管理 | |
US20220340149A1 (en) | End-to-end evaluation of perception systems for autonomous systems and applications | |
US20230139772A1 (en) | 3d surface structure estimation using neural networks for autonomous systems and applications | |
CN115701623A (zh) | 自主机器应用中范围图像映射的置信传播 | |
CN118119981A (zh) | 用于自主***和应用的使用机器学习的自由空间检测 | |
US20230298361A1 (en) | Image to world space transformation for ground-truth generation in autonomous systems and applications | |
CN117581117A (zh) | 自主机器***和应用中使用LiDAR数据的动态对象检测 | |
JP2023066377A (ja) | 自律システム及びアプリケーションのための人工知能を使用した点群高密度化を有する3d表面再構成 |
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 |