使用神经网络从相机图像和已知深度数据生成深度的制作方法

文档序号:31303059发布日期:2022-08-27 06:21阅读:97来源:国知局
使用神经网络从相机图像和已知深度数据生成深度的制作方法
使用神经网络从相机图像和已知深度数据生成深度
1.相关申请的交叉引用
2.本技术要求于2020年1月3日提交的美国申请序列号16/734,057的权益,该美国申请要求于2019年11月15日提交的美国临时申请序列号62/922,228的优先权。
技术领域
3.本说明书涉及自主载具。


背景技术:

4.自主载具包括自驾驶汽车、船和飞机。自主载具使用各种机载传感器和计算机系统来生成场景的深度图,并使用这种深度图来做出控制和导航决策。
5.传统上,可以基于激光和雷达数据生成深度图,因为载具的激光和雷达传感器可以报告它们正在感测的对象的范围(range)。激光和雷达可以报告它们正在感测的对象的范围,并且可以确定在这些对象前方空出多少空间。然而,激光和雷达可以感测的范围通常不足以远到报告数百米外的对象的深度图。
6.一些自主载具具有计算机系统,所述计算机系统实现用于图像内的对象检测和分割的神经网络。例如,神经网络可用于确定由机载相机捕获的图像中的位置很可能是附近汽车的图像。
7.神经网络,或简而言之,网络,是采用多层操作以从一个或多个输入预测一个或多个输出的机器学习模型。神经网络通常包括位于输入层和输出层之间的一个或多个隐藏层。每层的输出用作对网络中的另一层(例如,下一隐藏层或输出层)的输入。
8.神经网络的每个层指定要对到该层的输入执行的一个或多个变换操作。一些神经网络层具有称为神经元的操作。每个神经元接收一个或多个输入并生成由另一个神经网络层接收的输出。通常,每个神经元接收来自其他神经元的输入,并且每个神经元向一个或多个其他神经元提供输出。
9.神经网络的架构指定网络中包含哪些层及其属性,以及网络的每个层的神经元如何连接。换句话说,该架构指定了哪些层提供其输出作为对哪些其他层的输入,以及如何提供输出。
10.每个层的变换操作由安装了实现变换操作的软件模块的计算机执行。因此,被描述为执行操作的层意味着,实现该层的变换操作的计算机执行这些操作。
11.每个层使用该层的参数集的当前值生成一个或多个输出。因此,训练网络涉及对输入连续执行前向传递、计算梯度值,以及更新每个层的参数集的当前值。一旦神经网络被训练,最终的参数集可用于在生产系统中做出预测。
12.卷积神经网络包括卷积神经网络层。卷积神经网络层具有利用输入数据中的空间局部相关性的神经元连通性。为此,卷积神经网络层具有稀疏连通性,其中一个卷积层中的神经元仅从先前神经网络层中的小的神经元子集接收输入。神经元从其接收输入的其他神经元定义了该神经元的感受野。
13.卷积神经网络层具有为每个层定义一个或多个滤波器的一个或多个参数,其中每个滤波器具有一个或多个参数。卷积神经网络层通过执行每个神经元的滤波器与层的输入的卷积来生成输出。
14.此外,每个卷积网络层可以具有三维布置的神经元,具有深度、宽度和高度维度。宽度和高度维度对应于该层的输入的二维特征。深度维度包括神经元的一个或多个深度子层。卷积神经网络采用权重共享,使得深度子层中的所有神经元具有相同的权重。这在检测输入中的特征时提供了平移不变性。
15.卷积神经网络还可以包括全连接层和其他类型的层。全连接层中的神经元从先前神经网络层中的每个神经元接收输入。
16.自主和半自主载具系统可以使用整车预测(full-vehicle prediction)来做出驾驶决策。整车预测是关于被载具占据的空间区域的预测。预测的空间区域可以包括用于做出预测的一组机载传感器无法观察到的空间。
17.自主载具系统可以使用人工编程逻辑做出整车预测。人工编程逻辑精确地指定了机载传感器的输出应如何组合、变换和加权,以计算整车预测。


技术实现要素:

18.本说明书描述了计算机系统如何实现完全学习的神经网络,以使用神经网络从相机图像和已知深度数据生成场景的深度图。
19.通常,本说明书中描述的主题的一个创新方面可以体现在方法中,这些方法包括动作:获得由第一传感器捕获的并表征环境中的场景的图像;使用神经网络处理图像以生成图像中的多个位置中的每一个的相应分数,其中,每个位置的相应分数表示环境的静态部分在图像中的该位置处可见的可能性;获得指定图像中的至少一些位置的相应已知深度值的已知深度数据,其中,每个位置的相应已知深度值是当静态部分在图像中的该位置处可见时从第一传感器到环境的静态部分的距离;和生成将相应深度值分配给图像中的至少一些位置的深度输出,包括,对于图像中的每个位置:确定该位置的分数是否超过阈值;和当该位置的分数超过阈值并且已知深度数据指定该位置的已知深度值时,将该位置的已知深度值分配给深度输出中的位置。对于配置为执行特定操作或动作的一个或多个计算机的系统,意味着系统已在其上安装在操作中使系统执行操作或动作的软件、固件、硬件或它们的组合。对于配置为执行特定操作或动作的一个或多个计算机程序,意味着该一个或多个程序包括指令,这些指令在由数据处理装置执行时使该装置执行操作或动作。
20.前述和其他实施例可以各自可选地单独或组合地包括以下特征中的一个或多个。特别地,一个实施例组合地包括所有以下特征。静态部分是环境的地面。动作包括:获得位置信息,该位置信息识别描绘图像中的非静态对象的图像的区域;并且其中,生成深度输出还包括:确定分数超过阈值的任何位置是否与图像中的区域邻近或相交;并且当位置之一与该区域邻近或相交时,使用生成的该位置的深度值为与该区域相对应的位置分配深度输出中的深度值。静态部分是环境的地面,并且其中,非静态对象是图像中的汽车。位置是图像的像素,并且其中,神经网络是图像分割神经网络,其被配置为针对图像中的每个像素生成相应分数。已知深度数据将相应已知深度值分配给第二图像中的多个像素中的每一个,该第二图像来自与由第一传感器捕获的图像相同的视角。生成深度输出还包括:将已知深
度值与深度输出中的该位置的分数相关联。所述动作包括至少部分地基于第一位置的相应分数来确定在第一位置处存在遮挡,对于该第一位置,已知深度数据指定已知深度值。
21.可以实施本说明书中描述的主题的特定实施例以实现以下优点中的一个或多个。自主或半自主载具系统可以使用完全学习的神经网络和已知深度数据,以从表征场景的相机图像生成场景的深度图。这可以允许载具推断出在这些对象前方空出多少空间以及何处可能存在遮挡的障碍物。由于与激光或雷达相比,相机可以感测显著更远且角分辨率更高,所以从相机图像生成的深度图可以允许深度值可用于激光或雷达无法感测到的位置。从相机图像生成的深度图可用于交叉验证从其他传感器(如激光或雷达)生成的深度信息,并去除深度图中的噪声。从相机图像生成的深度图还可用于在三维场景中定位对象检测,并为地面上的对象提供替选深度源。从相机生成的深度图还可以通过提供有关相机能够看到的地方和相机不能看到的地方的信息来建立相机的视场。此外,一些载具可能没有配备激光或雷达传感器,而是可能只有相机系统。更一般地,该系统可以在自主或半自主载具管线的许多阶段利用深度图,例如分割、跟踪、动作识别和行为预测。换言之,通过能够准确地识别周围环境的深度图,载具可以做出更好的自主驾驶决策,或者可以为载具的操作者提供更好的半自主驾驶建议。
22.本说明书的主题的一个或多个实施例的细节在附图和以下描述中阐述。本主题的其他特征、方面和优点将从描述、附图和权利要求中变得清晰。
附图说明
23.图1是示例系统的示图。
24.图2图示了从图像和已知深度数据生成深度输出的示例。
25.图3是用于使用神经网络从图像生成深度输出的示例过程的流程图。
26.图4是使用神经网络从当前图像和静态图像生成深度输出的示例过程的流程图。
27.各个附图中相同的附图标记和名称指示相同的元件。
具体实施方式
28.本说明书描述了载具(例如,自主或半自主载具)能够如何使用完全学习的神经网络和已知深度数据以从表征场景的图像生成场景的深度图。
29.深度图指定了针对图像中的至少一些位置的相应深度值。深度图可以表示相机正在感测的对象的范围,即从相机到对象的距离,并且可以允许载具推断出在这些对象前方空出多少空间以及何处可能存在遮挡的障碍物。
30.传统上,可以基于激光和雷达数据生成深度图,因为载具的激光和雷达传感器可以报告它们正在感测的对象的范围。然而,与激光或雷达相比,相机可以感测显著更远和更高的角分辨率。因此,如本说明书中所述,从相机图像生成深度图是有益的。
31.可以训练神经网络来识别图像中的、作为环境的静态部分的位置。图像的静态部分可以是环境的地面,包括,仅举几个示例,道路、铺砌的人行道和私人车道、以及草地区域。
32.通常,指定图像中的一些位置的已知深度值的深度数据可能是可得的。例如,没有汽车的道路的深度图可能是可得的。基于指定图像中的一些静态位置的相应已知深度值的
已知深度数据,载具可以计算相机图像中的那些静态位置的范围。
33.如本描述中所使用的,“完全学习的”机器学习模型是被训练以计算期望的预测的模型。换句话说,完全学习的模型仅基于训练数据,而不是人类编程的决策逻辑,来生成输出。
34.图1是示例系统100的示图。系统100包括训练系统110和机载系统120。
35.机载系统120物理上位于载具122上。在载具122上意味着机载系统120包括与载具122一起行驶的组件,例如电源、计算硬件和传感器。图1中的载具122被示为汽车,但是机载系统120可以位于任何合适的载具类型上。载具122可以是使用深度图来通知全自主驾驶决策的全自主载具。载具122也可以是使用深度图来帮助人类驾驶员的半自主载具。例如,如果深度图指示人类驾驶员将要导航到静态障碍物上,例如铺砌的人行道或其他非道路地面,则载具122可以自主地应用制动器。作为另一个示例,对于自动车道改变,载具122可以使用深度图来分析目标车道的可用空间周围环境,以确保在开始车道改变操作之前没有快速接近的交通。作为另一个示例,载具122可以使用深度图来对来自静态对象的雷达信号进行滤波。载具122还可以使用深度图来识别道路不可见时的情况,因而向驾驶员触发警报。
36.机载系统120包括一个或多个传感器子系统132。传感器子系统包括接收电磁辐射的反射的组件的组合,例如,检测激光的反射的激光系统、检测无线电波的反射的雷达系统,以及检测可见光的反射的相机系统。
37.传感器子系统132向机载神经网络子系统134提供输入图像数据155。输入图像数据155可以包括由相机系统捕获的场景的图像。因此,输入图像数据155表征自主载具附近的场景。
38.机载神经网络子系统134实现神经网络的每个层的操作,该神经网络被训练以预测输入图像数据155中的静态的位置,例如,环境的地面。因此,机载神经网络子系统134包括具有软件或硬件模块的一个或多个计算设备,这些软件或硬件模块根据神经网络的架构实现神经网络的每个层的相应操作。
39.机载神经网络子系统134可以通过加载从训练系统110接收到的模型参数值172的集合来实现神经网络的每个层的操作。虽然图示为逻辑上分离的,但是模型参数值170和执行操作的软件或硬件模块实际上可以位于同一计算设备上,或者在执行软件模块的情况下,存储在同一存储设备内。
40.机载神经网络子系统134可以使用硬件加速或其他专用计算设备来实现神经网络的一个或多个层的操作。例如,一些层的一些操作可以由高度并行化的硬件来执行,例如,由图形处理单元或另一种专门的计算设备来执行。换言之,并非每个层的所有操作都需要由机载神经网络子系统134的中央处理单元(cpu)执行。
41.机载神经网络子系统134使用由神经网络预测的多个静态位置,以基于已知深度数据生成深度图165。
42.在一些实施方式中,已知深度数据可以是基于道路的范围图,其中道路区域的深度是已知的。通过对基于道路的范围图进行滤波以仅包括在相机图像中实际观察为道路的区域,机载神经网络系统134可以获得具有道路的图像的某些部分的深度图。
43.机载神经网络子系统134可以将深度图165提供给规划子系统136、用户接口子系统138或两者。规划子系统136可以将从相机图像生成的深度图165与从激光数据或雷达数
据或从两者的组合生成的其他深度图组合。例如,除了由激光和雷达生成的深度图之外,深度图165还可以在一些未被障碍物阻挡的方向上提供数百米的可见性。
44.在一些实施方式中,机载神经网络子系统134可以根据从相机图像生成的深度图165,预测非静态对象的深度值输出。例如,基于从相机图像生成的道路区域的深度值165,机载神经网络子系统134可以向环境中的汽车分配在汽车附近的道路部分的深度值。即使汽车在激光和雷达可测量的范围之外,仍然可以基于相机图像估计汽车的深度值。
45.当规划子系统136接收深度图165时,规划子系统136可以使用深度图165来做出全自主或半自主的驾驶决策。例如,规划子系统136可以通过查询深度图165以识别到汽车附近的静态表面的距离并识别存在遮挡的区域,即深度图165中不存在深度信息的区域,来生成全自主规划以在公路或其他道路上导航。通过经由深度图识别遮挡,在转弯操作期间,载具可以对潜在对象执行必要的让行操作,因为该对象被建筑物、汽车或树木等遮挡而无法看到该潜在对象。作为另一示例,规划子系统136可以使用深度图165生成用于人类驾驶员导航汽车的半自主规划。
46.用户接口子系统138可以接收深度图165并且可以生成指示附近对象(例如,道路或附近载具)的深度图的用户接口呈现。例如,用户接口子系统138可以生成具有图像或视频数据的用户接口呈现,该图像或视频数据包含具有低于特定阈值的深度值的空间区域的表示。机载显示设备然后可以为载具122的乘客显示用户接口呈现。
47.机载神经网络子系统134还可以使用输入图像数据155来生成训练数据123。机载系统120可以离线批量或以在线方式(例如,每当生成时连续地)将训练数据123提供给训练系统110。
48.训练系统110通常托管在数据中心112内,该数据中心可以是在一个或多个位置具有数百或数千个计算机的分布式计算系统。
49.训练系统110包括训练神经网络子系统114,其可以实现神经网络的每个层的操作,该神经网络被设计为从输入图像数据做出对象交互预测。训练神经网络子系统114包括具有软件或硬件模块的多个计算设备,这些软件或硬件模块根据神经网络的架构实现神经网络的每个层的相应操作。
50.训练神经网络通常具有与机载神经网络相同的架构和参数。然而,训练系统110不需要使用相同的硬件来计算每个层的操作。换言之,训练系统110可以仅使用cpu、高度并行化的硬件或这些的某种组合。
51.训练神经网络子系统114可以使用存储在模型参数值170的集合中的当前参数值115来计算神经网络的每个层的操作。虽然被示为在逻辑上分离,但是模型参数值170和执行操作的软件或硬件模块实际上可能位于同一计算设备或同一存储设备上。
52.训练神经网络子系统114可以接收训练示例123作为输入。训练示例123可以包括标记的训练数据125。每个训练示例123包括输入图像数据以及指示输入图像数据中静态部分的位置的一个或多个标记。
53.训练神经网络子系统114可以针对每个训练示例123生成一个或多个静态位置预测135。每个静态位置预测135可以包括表示环境的静态部分在输入图像中的该位置处可见的可能性的分数。训练引擎116分析静态位置预测135并将静态位置预测与训练示例123中的标记进行比较。训练引擎116然后基于静态位置预测和标记之间的差异,通过使用适当的
更新技术(例如,具有反向传播的随机梯度下降)生成更新的模型参数值145。然后训练引擎116可以使用更新的模型参数值145来更新模型参数值170的集合。
54.在训练完成之后,训练系统110可以向机载系统120提供模型参数值171的最终集合,以用于做出全自主或半自主的驾驶决策。训练系统110可以通过至机载系统120的有线或无线连接来提供模型参数值171的最终集合。
55.图2图示了从图像202和已知深度数据208生成深度输出210的示例。
56.图像202是从传感器子系统132中的侧视相机拍摄的相机图像。相机图像202捕获具有树木、汽车、道路、铺砌的人行道和草地区域等的环境的场景。场景的静态部分可以包括道路、铺砌的人行道和草地区域,即,因为这些部分总是存在于环境中的该位置处。场景的非静态部分可以包括汽车,即,因为汽车在现实世界中的位置改变,因此汽车并不总是存在于环境中的该位置处。
57.相机图像202可以捕获距离相机的位置相对远的道路的部分,并且比lidar或雷达传感器可以感测到的距离更远。因此,从相机图像生成深度图以允许深度值可用于lidar或雷达无法感测到的位置是有益的。
58.该系统将相机图像202作为输入提供给被训练以识别相机图像中的作为环境的静态部分的位置的神经网络。可以训练神经网络以针对相机图像中的多个位置中的每个位置生成相应分数。每个位置的相应分数可以表示环境的静态部分在相机图像中的该位置处可见的可能性。
59.例如,神经网络可以是被训练以针对相机图像中的每个像素生成相应分数的地面分割神经网络204。每个像素的相应分数可以表示该像素描绘地面(例如,道路、铺砌的人行道和草地区域等)的可能性。
60.地面分割神经网络204可以具有图像分割神经网络的架构,其被配置为针对图像中的每个像素生成相应分数。例如,地面分割神经网络204可以是deeplabv3+模型。chen、liang-chieh等人在2018年欧洲计算机视觉会议论文集(eccv)的“用于语义图像分割的具有多孔可分离卷积的编码器-解码器(encoder-decoder with atrous separable convolution for semantic image segmentation)”描述了有关这种模型的更多细节。
61.对于相机图像中的每个位置,系统可以基于所生成的该位置的分数是否超过阈值分数来确定在该位置处描绘的是相机图像的非静态部分还是相机图像的静态部分。
62.例如,相机图像中的像素207对应于人行道的一部分。神经网络可以生成0.99的概率分数,表示像素207很可能是地面。系统可以基于确定生成的概率分数0.99超过阈值(例如,0.9、0.8或0.75)来确定像素207描绘了地表。例如,相机图像中的一些像素对应于道路上的汽车216。神经网络可以生成低置信度分数,表示与汽车对应的这些像素不太可能是地面。
63.在图像206中,二值掩码覆盖(overlay)在原始相机图像的顶部上,表示掩码205的地面部分(纯灰色)和掩码203的非地面部分(白色)。这里,掩码205的地面部分可以包括可步行的表面,例如草地区域和道路区域。掩码205的地面部分不包括汽车216的区域。
64.指定图像中的一些位置的已知深度值的已知深度数据可能是可得的。每个位置的已知深度值是当静态部分在相机图像中的位置处可见时从相机到环境的静态部分的距离。已知深度数据可以采用不同格式,例如,根据来自汽车的lidar数据构建的地面高程图或高
度图。替选地或组合地,已知深度数据可以是三维范围图。
65.可以向系统提供来自与相机图像202相同视角的范围图208。范围图208可以通过将预定义的已知范围数据投影到相机坐标,即捕获图像的相机的真实世界的位置和视角来构建。范围图208可以提供环境的地面的深度信息。范围图可以包括道路区域214的深度值和不是道路区域213的地面区域(例如,铺砌的人行道和草地区域)的深度值。图像的非静态部分212的深度值在范围图中可能是不可得的。
66.在一些实施方式中,当从预定义的已知范围数据构建范围图208时,汽车中的相机的位置或旋转可能存在误差,这可能在范围图208中产生误差。在最坏的情况下,在场景的地平线上,相机的俯仰的微小变化可能对测量的深度产生巨大的影响。通过查看已知深度数据中的局部区域,系统可以计算角度姿势误差的界限,然后确定范围估计的下限。例如,如果相机旋转的估计具有在十分之几度内的误差,则系统可以计算兴趣点周围的像素的邻域内的最小范围值,这是可能范围的下限,并且使用该最小范围值作为范围图208中的那些像素的值。替选地或组合地,系统还可以通过使用与稀疏图像特征或密集对齐特征的对应性来将相机图像与先前生成的已知深度图对齐。
67.在一些实施方式中,当从预定义的已知范围数据构建范围图208时,构建过程还可以考虑相机的滚动快门效应。例如,当汽车正在移动时,图像的不同扫描线在不同的姿势下拍摄,这可能会使图像失真。构建过程可以模拟这种失真,以便系统可以为图像中的像素分配正确的深度值。当系统从3d点查询以确定图像中的正确像素时,系统也应用相同的校正过程。
68.基于为相机图像中的一些静态位置指定相应已知深度值的已知深度数据,系统可以为相机图像中的至少一些位置生成深度输出。对于相机图像中的每个位置,如果神经网络生成超过阈值的置信度分数,并且如果该位置的已知深度值在已知深度数据中可用,则系统可以将该位置的已知深度值分配给深度输出中的该位置。
69.例如,基于为相机图像中的一些静态位置213和214指定已知深度值的已知范围图208,系统可以为相机图像中的静态部分205生成深度输出210。深度输出210包括场景中的静态位置的深度值215(深灰色)。例如,如在先前示例中所讨论的,相机图像中的像素207可以具有超过阈值0.9的置信度分数0.99并且可以被确定为地面。对应像素207的已知深度值209可能在已知范围图208中是可得的。系统可以将像素207的已知深度值209分配给深度输出210中的对应像素211。作为另一个示例,深度输出210不包括汽车216的像素的深度值,因为汽车的像素的置信度分数太低。
70.通过将基于地面的范围图滤波到相机图像中实际上观察为地面的区域,系统可以为相机图像的某些部分生成深度图。从相机图像生成的深度图可以为距离相机传感器的当前位置数百米外的地标或表面提供准确的深度值。
71.在一些实施方式中,除了将位置的已知深度值分配给深度输出中的位置,系统还可以将深度值与位置的置信度分数相关联。除了在不存在遮挡的情况下指定该位置的深度值之外,这还可以提供有关在任何给定位置处存在遮挡的可能性的更多信息。
72.在又一些其他实施方式中,对于在已知深度数据中已知深度值可得的每个位置,代替应用阈值,系统可以将该位置的已知深度值分配给深度输出中的位置并将已知深度值与置信度分数相关联。与上述类似,除了在不存在遮挡的情况下(即使遮挡的可能性非常
高)指定该位置的深度值之外,这可以提供有关在任何给定位置处存在遮挡的可能性的更多信息。
73.图3是用于使用神经网络从图像生成深度输出的示例过程的流程图。图3中的示例过程使用通过神经网络的前向推理传递,该神经网络已经训练或正在训练为识别图像中的作为环境的静态部分的位置。因此,可以在训练期间使用示例过程或从未标记的输入做出预测,例如在生产系统中。该过程将被描述为由适当编程的神经网络系统执行。
74.该系统获得由第一传感器捕获的并表征环境中的场景的图像(302)。该图像可以是从载具的传感器子系统中的相机子系统生成的相机图像。
75.该系统使用神经网络处理图像以生成图像中的多个位置中的每一个的相应分数(304)。每个位置的分数表示环境的静态部分在图像中的该位置处可见的可能性。
76.神经网络可以是可为相机图像中的每个像素生成相应分数的地面分割神经网络。每个像素的相应分数可以表示该像素描绘地面(例如,道路、铺砌的人行道和草地区域等)的可能性。对于相机图像中的每个位置,基于所生成的位置的分数是否超过阈值,系统可以确定相机图像的静态部分。
77.在为图像中的多个位置中的每一个生成相应分数之后,系统可以取决于前向推理传递是用于训练还是用于生产系统来采取不同的动作。
78.在训练期间,图像中的多个位置中的每个位置的相应分数可用于基于所使用的训练示例中的标记来计算一个或多个误差。误差可用于使用任何适当的训练技术(例如,带有反向传播的梯度下降)计算神经网络的更新的权重。
79.当在机载生产系统中使用时,图像中的多个位置中的每个位置的相应分数可以提供给步骤308以生成深度输出,该深度输出将相应深度值分配给图像中的至少一些位置。
80.该系统获得指定了图像中的至少一些位置的相应已知深度值的已知深度数据(306)。在一些实施方式中,系统可以通过将相应已知深度值分配给第二图像中的多个像素中的每一个来生成已知深度数据,该第二图像来自与由第一传感器捕获的图像相同的视角。第二图像可以是从与相机图像相同的视角看的范围图。范围图可以提供环境的地面的深度信息。因为环境的地面是静态的,所以来自任何给定有利点的环境的这些部分的深度信息也是静态的。
81.该系统生成将相应深度值分配给图像中的至少一些位置的深度输出(308)。对于图像中的每个位置,系统可以确定该位置的分数是否超过阈值。当该位置的分数超过阈值并且已知深度数据指定该位置的已知深度值时,系统将该位置的已知深度值分配给深度输出中的位置。在一些实施方式中,系统可以进一步将已知深度值与深度输出中的该位置的分数相关联。
82.在一些实施方式中,系统还可以至少部分地基于已知深度数据和置信度分数来识别图像中的特定位置处存在遮挡,即相机的视角被一个或多个潜在移动对象遮挡。例如,当已知深度数据指定图像中的给定位置的已知深度值时,如果道路的分数低于预定阈值,则系统可以确定在该位置处存在遮挡。例如,如果已知深度数据可用于道路的一部分,并且因为道路的该部分当前被载具占用,所以道路的该部分的分数低于预定阈值,则系统可以确定在道路的该部分存在遮挡。
83.生成的深度输出可以提供给规划子系统,该规划子系统关于载具应如何对预测的
深度输出做出反应进行决策。例如,可以在自驾驶汽车管线的许多阶段利用这些交互预测,例如,分割、跟踪、动作识别和行为预测。例如,如果预测的深度图指示人类驾驶员将要导航到静态障碍物上,则载具可以自主地应用制动器。
84.当存在从捕获周围环境的多个相机获得的多个相机图像时,系统可从一些相机图像生成深度输出,以节省计算成本。在一些实施方式中,系统仅需要在载具前方的远范围感知,例如,当载具正在公路上行驶时,因此系统仅需要从前置相机图像生成深度输出。在一些实施方式中,对捕获可能与未受保护的操纵相交的交通车道的相机图像进行处理并且仅从这些图像生成深度输出。在一些实施方式中,系统可以以不同的时间间隔在处理来自不同相机的图像之间切换,例如在左相机和右相机之间切换。
85.在一些实施方式中,用于使用神经网络从图像生成深度输出的过程还可以包括为图像中的非静态对象生成深度输出。该系统可以获得识别图像中的描绘图像中的非静态对象的区域的位置信息。例如,系统可以检测相机图像中的汽车,并使用汽车周围的边界框识别汽车的区域。
86.系统可以确定分数超过阈值的任何静态位置是否与图像中的描绘非静态对象的区域的预定部分邻近或相交。例如,系统可以确定道路区域的一部分与汽车周围的边界框的预定部分相交。汽车周围的边界框的预定部分可以是汽车靠近地面的底部。
87.当静态位置之一与图像中的描绘非静态对象的区域邻近或相交时,系统可以使用所生成的静态位置的深度值为与非静态对象的区域对应的静态位置分配深度输出中的深度值。例如,基于从相机图像生成的道路区域的深度值,系统可以为环境中的汽车分配与汽车的底部相交的道路的部分的深度值。即使汽车在从激光和雷达可测量的范围之外,仍然可以基于相机图像估计汽车的深度值。
88.分配的非静态对象的深度值可以等于对应静态位置的深度值。替选地,可以基于非静态对象与图像中的对应静态位置之间的相对位置来计算分配的非静态对象的深度值。
89.图4是用于使用神经网络从当前图像和静态图像生成深度输出的示例过程的流程图。图4中的示例过程使用通过神经网络的前向推理传递,该神经网络已经训练或正在训练为识别当前图像中的、与静态图像中描绘的环境的相同部分的位置。因此,可以在训练期间使用示例过程或从未标记的输入进行预测,例如在生产系统中。该过程将被描述为由适当编程的神经网络系统执行。
90.该系统获得由第一传感器捕获的并表征环境中的场景的当前图像(402)。该图像可以是从载具的传感器子系统中的相机子系统生成的相机图像。
91.该系统获得从第一传感器的相同视角捕获的环境的静态图像(404)。例如,静态图像可以是从与捕获当前图像的相机的相同视角渲染的街景图像,即从道路上的载具视角的图像。街景图像可以表征仅具有建筑物和地面,而没有行人、汽车或任何非静态事物的空旷世界。在一些实施方式中,可以在街景图像中包括对象,例如停放的汽车,以便为地面的深度值提供下限,因为地面的实际深度值大于或等于对象的深度值。
92.在一些实施方式中,静态图像可以包括环境的三维(3d)表面。例如,一个或多个3d面元(surfel)图可以包括环境中的建筑物的表面。一个或多个3d面元图可以提供对周围环境的更好的3d渲染。
93.该系统使用神经网络处理当前图像和静态图像,以针对当前图像中的多个位置中
的每一个生成相应分数(406)。每个位置的分数表示在当前图像和静态图像两者中在该位置处描绘环境的相同部分的可能性。例如,系统可以使用经训练的神经网络来确定由第一传感器捕获的图像的哪些区域与一个或多个3d面元图中的区域匹配,并确定图像的哪些区域描绘场景中的新对象。
94.在生成当前图像中的多个位置中的每个位置的相应分数之后,系统可以取决于前向推理传递是用于训练还是用于生产系统来采取不同的动作。
95.在训练期间,当前图像中的多个位置中的每个位置的相应分数可用于基于所使用的训练示例中的标记来计算一个或多个误差。误差可用于使用任何适当的训练技术(例如,带有反向传播的梯度下降)来计算神经网络的更新的权重。
96.当在机载生产系统中使用时,当前图像中的多个位置中的每个位置的相应分数可以被提供给步骤410以生成深度输出,该深度输出将相应深度值分配给当前图像中的至少一些位置。
97.该系统获得指定了静态图像中的至少一些位置的相应已知深度值的已知深度数据(408)。在一些实施方式中,如果静态图像已经与已知深度数据相关联,则系统可以直接获得已知深度数据,该已知深度数据指定静态图像中的至少一些位置的相应已知深度值。在一些其他实施方式中,如果静态图像不与已知深度数据相关联,则系统可以通过将相应已知深度值分配给第三图像中的多个像素中的每一个来生成已知深度数据,该第三图像来自与由第一传感器捕获的当前图像相同的视角。
98.该系统生成将相应深度值分配给当前图像中的至少一些位置的深度输出(410)。对于当前图像中的每个位置,系统可以确定该位置的分数是否超过阈值,即当前图像和静态图像两者中的位置是否描绘了环境的相同静态部分。当当前图像中的该位置的分数超过阈值并且已知深度数据指定静态图像中的相同位置的已知深度值时,系统将已知深度值分配给深度输出中的位置。
99.例如,当静态图像包括环境的3d面元图时,系统可以将3d面元图中的一些区域的已知深度值分配给深度输出中的、与3d面元图中的区域匹配的对应区域。例如,当3d面元图包括环境中的建筑物的3d表面时,系统可以将建筑物的表面的已知深度值分配给深度输出中的、与建筑物的表面位置匹配的相同位置。
100.本说明书中描述的功能操作和主题的实施例可以在数字电子电路中、在有形体现的计算机软件或固件中、在计算机硬件(包括在本说明书中公开的结构和它们的结构等同物)中、或者在它们中的一种或多种的组合中实现。本说明书中描述的主题的实施例可以被实现为一个或多个计算机程序,即,编码在有形的非暂时性存储介质上以用于由数据处理装置执行或控制数据处理装置的操作的计算机程序指令的一个或多个模块。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或者它们中的一种或多种的组合。替选地或另外地,程序指令可以在人工生成的传播信号(例如,机器生成的电、光或电磁信号)上编码,该信号被生成以编码信息以用于传输到合适的接收器装置,以由数据处理装置执行。
101.术语“数据处理装置”是指数据处理硬件并且涵盖用于处理数据的所有类型的装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。该装置还可以是或进一步包括现成的或定制的并行处理子系统,例如,gpu或另一类型的专用处理子系统。
该装置还可以是或进一步包括专用逻辑电路,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。除了硬件之外,该装置还可以可选地包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一种或多种的组合的代码。
102.也可以称为或描述为程序、软件、软件应用、应用、模块、软件模块、脚本或代码的计算机程序可以以任何形式的编程语言(包括编译或解释语言,或声明性或过程性语言)编写,并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或其他适合在计算环境中使用的单元。程序可以,但不一定,对应于文件系统中的文件。程序可以存储在包含其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本、专用于所讨论程序的单个文件或多个协调文件中,例如,存储一个或多个模块、子程序或部分代码的文件。可以部署计算机程序以在一个计算机或位于一个站点或分布在多个站点并通过数据通信网络互连的多个计算机上执行。
103.如本说明书中所使用的,“引擎”或“软件引擎”是指提供与输入不同的输出的软件实现的输入/输出系统。引擎可以是编码的功能块,例如库、平台、软件开发工具包(“sdk”)或对象。每个引擎可以在任何适当类型的计算设备上实现,例如,服务器、移动电话、平板计算机、笔记本计算机、音乐播放器、电子书阅读器、膝上型计算机或台式计算机、pda、智能电话或其他固定或便携式设备,包括一个或多个处理器和计算机可读介质。此外,引擎中的两个或更多个可以在相同的计算设备上或在不同的计算设备上实现。
104.本说明书中描述的过程和逻辑流程可以由一个或多个可编程计算机执行,该一个或多个可编程计算机执行一个或多个计算机程序以通过对输入数据进行操作并产生输出来执行功能。过程和逻辑流程也可以由专用逻辑电路(例如,fpga或asic)或由专用逻辑电路和一个或多个编程计算机的组合来执行。
105.适合执行计算机程序的计算机可以基于通用或专用微处理器或两者,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行或运行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以由专用逻辑电路补充或结合在专用逻辑电路中。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘,或可操作地耦合以从该一个或多个大容量存储设备接收数据或向其传输数据或两者。然而,计算机不需要有这样的设备。此外,计算机可以嵌入到另一个设备中,例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器或便携式存储设备,例如,通用串行总线(usb)闪存驱动器,仅举几例。
106.适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,例如包括半导体存储设备,例如eprom、eeprom和闪存设备;磁盘,例如内部硬盘或可移动盘;磁光盘;以及cd-rom和dvd-rom盘。
107.为了提供与用户的交互,本说明书中描述的主题的实施例可以在具有用于向用户显示信息的显示设备以及键盘和指向设备的计算机上实现,显示设备例如crt(阴极射线管)或lcd(液晶显示器)监视器,键盘和指向设备例如鼠标、轨迹球、或用户可以通过其向计算机提供输入的存在敏感显示器或其他表面。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触
觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从其接收文档来与用户交互;例如,通过响应于从web浏览器接收的请求而将网页发送到用户设备上的web浏览器。此外,计算机可以通过向个人设备(例如,智能电话)发送文本消息或其他形式的消息、运行消息应用以及接收来自用户的响应消息作为返回,来与用户交互。
108.虽然本说明书包含许多具体的实施细节,但这些不应被解释为对任何发明的范围或可要求保护的范围的限制,而是对可能特定于特定发明的特定实施例的特征的描述。在本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独或以任何合适的子组合来实施。此外,尽管特征可能在上面描述为在某些组合中起作用,甚至最初被要求如此保护,但在某些情况下,来自要求保护的组合的一个或多个特征可以从组合中删除,并且要求保护的组合可以针对子组合或子组合的变化。
109.类似地,虽然在附图中以特定顺序描绘了操作,但这不应被理解为要求这些操作以所示的特定顺序或按顺序执行,或者所有所示的操作都被执行以获得期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中各个系统模块和组件的分离不应被理解为在所有实施例中都需要这样的分离,并且应该理解,所描述的程序组件和系统通常可以集成在单个软件产品中,或者封装成多个软件产品。
110.已经描述了本主题的特定实施例。其他实施例在所附权利要求的范围内。例如,权利要求中记载的动作可以以不同的顺序执行,但仍能达到期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或顺序次序来实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1