图像分割的制作方法

文档序号:23314151发布日期:2020-12-15 11:46阅读:126来源:国知局
图像分割的制作方法

本公开涉及图像分割。



背景技术:

自动车辆,也称为自动驾驶车辆,是指具有用于监测其外部环境的传感器系统和能够使用这些传感器自主地制定和实施驾驶决策的控制系统的车辆。这尤其包括基于来自传感器系统的输入来自动调整车辆的速度和行驶方向的能力。完全自主或“无人驾驶”的车辆具有足够的决策能力,以无需来自人类驾驶员的任何输入即可操作。然而,本文所使用的术语“自动车辆”也适用于半自动车辆,半自动车辆具有更有限的自主决策能力,因此仍然需要来自人类驾驶员的一定程度的监督。

自主决策是自动车辆的关键功能。无论其自主性水平如何,这都是事实,但是随着自主性水平的提高,它需要能够安全做出的决策的复杂性也在提高,以至于全自动车辆需要配备异常鲁棒的决策引擎,可以依靠该决策引擎安全地处理遇到的无论多么意外的任何驾驶情况。

限制自动车辆决策能力的一个因素是,即使当这些传感器输入不完美时,自动车辆也能够解释传感器输入,例如所捕获的其周围环境的图像。



技术实现要素:

本公开提供了分层图像分割(像素级分类)方案,其可以被实施为适当训练的卷积神经网络(cnn)(或任何其他适当的图像分割系统)。该方案允许网络提供有关像素的一些信息,即使不确定像素的完全分类是什么。例如,像素可能是中心线道路标线的一部分,但是网络对此可能不确定。尽管如此,网络仍可以确定像素是道路的一部分(与树木相反)。层次结构允许网络即使不确定细粒度的区分也可以确定像素是道路,并且分割方案的层次结构提供了一种表达此结果的方法。

在自动车辆决策的背景下,鲁棒性的一个方面是提供在“最坏情况”下要采取的一个或更多个默认动作,在这种情况下,自动车辆确定其传感器输入的整体质量已降低到无法继续安全的级别。例如,默认动作可能会在可以安全实现的最短时间内完全停止,或者(在半自动车辆的情况下)会触发给人类驾驶员的警报并恢复为手动控制。但是,当可以安全地避免这种极端动作时,这种极端动作就不应被采取,并且有用的自动车辆的一项重要能力就是能够基于不完美的传感器输入(例如所捕获的图像)安全地实施自主决策,而不会诉诸不必要的默认动作。

在这种情况下,当使用分层分类方案作为决策的基础时,与传统的图像分类技术相比,这可以大大减少场景中所需要的默认动作的场景数量,因为可以基于某些像素的较高级别的分类来安全地采取某些类型的决策,即使无法以足够的确定性获得那些像素的细粒度(较低级别)的分类。

然而,应注意,本发明可以应用于在除自主驾驶之外的情况下的期望在像素级学习视觉结构的语义层次的任何图像分割问题。

本发明的第一方面提供了一种计算机实现的对图像的像素进行分类的方法,该方法包括:接收由多个像素形成的图像;以及根据分层分类方案对像素进行分类,其中,这些像素中的至少一些像素由父级分类器关于父类集合进行分类,父类集合中的每个父类与子类的子集相关联,并且这些像素中的每个像素还由至少一个子级分类器关于子类的子集之一进行分类,其中,每个父类对应于可见结构的类别,并且与每个父类相关联的子类的每个子集对应于该类别中不同类型的可见结构。

通常,在较高的层次中进行分类比较容易,因为即使对于质量较低的图像或图像区域(例如,对于远处的低分辨率结构,或在存在噪音、失真、模糊等情况下),可能无法以足够的确定性关于子类的相关联的子集中的至少一个进行分类,但是可以以足够的确定性关于父类集合进行像素分类。但是,对于更高质量的图像/图像区域,可以以足够的确定性关于子类的子集进行分类,并且在这种情况下,分类可以提供额外粒度,该额外粒度补充关于父类集合的分类。

在本发明的所描述的实施例中,该分层分类被用作自动车辆中的决策的基础,以利用以下事实:即使当无法以足够的确定性对这些像素进行低级别分类,但是也可以基于某些像素的更高级别的分类来安全地做出某些类型的决策。也就是说,可以基于对应于道路结构的特定类别(即,基于成功的高级别分类)的特定集合来安全地做出某些决策,而不必确定在那个时间点的那个类别中的道路结构的特定类型(即尽管较低级别的分类失败了)。如果确实可以识别道路类型,则可以根据需要或期望,将这种额外的粒度馈入到决策过程中。例如,在最初距离较远的道路结构的情况下,可以将其分类为“道路”,而不是特定类型的道路(“车道”、“标线”等),并且此分类级别足以用于做出某些类型的决策。当车辆向道路结构行驶时,对于那些像素,将存在可以以充分的确定性识别道路类型的点,并且该信息可以转而在有用时或需要时由决策引擎使用。

即,在本发明的实施例中,该方法可以包括由控制器基于像素分类来执行决策过程(例如,自动车辆控制过程)。控制器可以在执行决策过程中,检测子级分类器对至少一个像素进行分类的失败,并通过父级分类器基于该像素的分类来做出决策。

分层分类方案的另一个好处是,它允许从部分带注释(带标记)的数据中训练分割卷积神经网络(或其他可训练的图像分割系统)。例如,一些训练图像可能仅显示道路与非道路的区别,而其他训练图像可能仅具有车道标线和道路边缘的标签,以及仅道路/非道路区域的标签。这是因为层次的构造方式使得可以提供一种学习机制,该学习机制可以在层次的各个级别上获取误差信号,同时考虑其层次任何级别上的未注释区域。关于带注释的训练图像,进行训练以使作为整体的整个层次上产生的误差信号最小化。

在本发明的实施例中,未注释区域可以使用在此所称的“蒙版”来解释,其中,关于给定的类别集合,在层次的给定级别上没有被标注的图像的任何区域不会影响在该层次的该级别上所定义的相应误差信号,使得在针对该方式的训练期间无法“惩罚”分类器,在该方式中,它选择关于像素的该类别在该层次的该级别上对这些像素进行分类。下表中的示例对此进行了说明:

在实施例中,该方法可以包括由控制器基于像素分类执行决策过程。

该方法可以包括,在执行决策过程中,检测子级分类器对像素中的至少一个进行分类的失败,并由父级分类器基于该像素的分类进行决策。

决策过程可以是自动车辆控制过程。

子级分类器可以确定至少一个子分类值,该子分类值关于该子类的子集的子类对像素进行分类,并且父级分类器可以确定至少一个父分类值,该父分类值关于与子类的子集相关联的父类对像素进行分类。

子级分类器可以为该像素确定与以该父类为条件的子类相关的至少一个条件分类值,并基于该条件分类值和父分类值确定子分类值。

子级分类器可以通过将父分类值与条件分类值相乘来确定子分类值。

父分类值和子分类值可以是分别表示该像素属于该父类和该子类的概率的值。

条件分类值可以是表示在该像素在属于该父类的条件下,该像素属于该子类的条件概率的值。

该方法可以包括:由特征提取器基于该像素和与该像素相关的像素的集合来生成多个像素特征向量,每个像素特征向量表示一个像素,其中,基于像素的像素特征向量对像素进行分类。

相关像素的集合可以由围绕该像素的图像的一部分中的像素形成。

特征提取器可以由神经网络的一层或更多层形成。

特征提取器可以由卷积神经网络中的多个层形成。

可以根据学习后的特征向量修改参数来处理每个特征向量,以生成:父类集合的修改后的特征向量以及子类的每个子集的修改后的特征向量,父类集合的修改后的特征向量用于关于父类集合对父类集合的修改后的特征向量代表的像素进行分类;子类的每个子集的修改后的特征向量用于关于子类的子集对该像素进行分类。

可以将子类的每个子集的修改后的特征向量与父类集合的修改后的特征向量进行组合,以确定该子类的子集的组合特征向量,该组合特征向量用于关于该子类的子集对该像素进行分类。

子级分类器可以为每个子类的子集确定子分类值。

父级分类器和子级分类器可以是概率分类器,该概率分类器分别确定在父类集合和子类的子集上的概率分布。

这些像素中的每个像素可以由以下至少一个来进行分类:关于与父类中的第一类相关联的子类的第一子集的第一子级分类器,以及关于与父类中的第二类相关联的子类的第二子集的第二子级分类器。

至少一些像素中的每个像素可以由父级分类器、子级分类器和关于其他子类的集合的至少一个其他子级分类器进行分类,该其他子级分类器是该子级分类器的孩子,因为该其他子类的集合中的每一个是分层分类方案内子类的子集中的子类的孩子。

至少一些像素中的每个像素可以由父级分类器、子级分类器和关于其他父类集合的至少一个其他父级分类器进行分类,该其他父级分类器是该父级分类器的父亲,因为每个父类是该其他父类的集合中的父类的孩子。

本发明的第二方面提供了一种训练图像像素分类器的计算机实现的方法,该方法包括:接收由多个像素形成的图像;以及接收用于根据分层分类方案来标记像素中的至少一些像素的标签数据,其中将这些像素中的每个像素标记为属于父类集合之一,父类中的每个父类与子类的子集相关联,并且这些像素中的每个像素也被标记为属于与该像素所属的父类相关联的子类的子集之一,其中,每个父类对应于可见结构的类别,并且与每个父类相关联的子类的子集中的每一个对应于该类别中不同类型的可见结构;以及使用该像素的数据和该标签数据来训练父级分类器以关于该父类集合对图像像素进行分类,以及训练至少一个子级分类器以关于与该父类中的一个父类相关联的子类的子集对图像像素进行分类。

在实施例中,可以通过使用分类器关于父类集合和子类的每个子集对每个像素进行分类,分别确定父类集合和子类的每个子集的各自的误差信号,并调整分类器的参数以最小化误差信号,来对分类器进行训练。

父类集合的误差信号可以提供父类集合的标签数据与关于父类集合所执行的像素分类的结果之间的差异的度量。

子类的每个子集的误差信号可以提供该子类的子集的标签数据与关于该子类的子集所执行的像素分类的结果之间的差异的度量。其中关于子类的子集未标记的任何像素不会影响该子类的子集的误差信号。

在这种情况下,关于子类的子集未标记的任何像素仍可以关于该子类的子集被分类,但是其结果不影响该子类的子集的误差信号。

可以针对多个图像执行此方法,其中多个图像中的至少一个关于子类的子集中的至少一个根本没有被标记,使得该图像和该子类的子集的误差信号始终为零误差信号。

像素的数据可以包括由特征提取器基于所述像素和与所述像素相关的像素的集合生成的多个像素特征向量,每个像素特征向量均表示一个像素。

特征提取器的参数可以与分类器的参数一起在训练中进行调整,以使误差信号最小化。

可以根据特征向量修改参数来处理每个特征向量,以便生成:父类集合的修改后的特征向量以及子类的每个子集的修改后的特征向量,该父类集合的修改后的特征向量用于关于父类集合对父类集合的修改后的特征向量代表的像素进行分类;子类的每个子集的修改后的特征向量用于关于子类的子集对该像素进行分类。

可以将特征向量修改参数与特征提取器和分类器的参数一起在训练中被调整,以便使误差信号最小化。

可以将子类的每个子集的修改后的特征向量与父类集合的修改后的特征向量进行组合,以确定该子类的子集的组合特征向量,该组合特征向量用于关于该子集对该像素进行分类。

修改后的特征向量可以通过级联来组合。

可以将误差信号组合成在训练中被最小化的代价函数。

本发明的另一方面提供了体现为计算机系统的分层分类器,其包括一个或更多个处理器,该一个或更多个处理器被配置为:处理输入的集合以确定每个输入的特征向量;修改每个输入的特征向量,以生成修改后的父级特征向量;基于修改后的父级特征向量,将与至少一个父类相关的每个输入进行分类;修改每个输入的特征向量,以生成修改后的子级特征向量;通过将该输入的子级特征向量与该输入的父级特征向量进行组合,来确定每个输入的组合特征向量;并基于该组合特征向量,关于子类的集合对每个输入进行分类,该子类的集合是分类层次中父类的孩子。

在实施例中,每个输入可以是图像的像素。

另一个方面提供了一种通过以下步骤训练上述分层分类器以学习参数集的方法,步骤是:接收具有各自训练标签的训练输入集,该训练输入集中的至少一些训练输入被标记为属于子类和属于父类之一;使用分层分类器对与以下各项有关的每个输入进行分类:(i)至少一个父类,以及(ii)子类的集合;通过将(i)的结果与父类标签进行比较来确定至少一个父类的误差信号;通过将(ii)的结果与子类标签进行比较来确定该子类的集合的误差信号;调整参数以最小化所确定的误差信号。

另一个方面提供了一种分层图像分割系统,该分层图像分割系统被配置为实现本文公开的任何步骤或功能。

另一个方面提供了一种计算机程序,其包括存储在非暂时性存储介质上的计算机可读指令,并且该计算机可读指令被配置为当在一个或更多个处理器上执行时使一个或更多个处理器实现本文公开的任何步骤或功能。

附图说明

为了更好地理解本发明并示出如何实施本发明的实施例,通过示例的方式参考以下附图,其中:

图1示出了用于基于机器学习来训练道路检测组件的系统的高度示意性框图;

图2示出了自动车辆的高度示意性框图;

图3示出了用于捕获用于在训练中使用的街道场景图像的车辆的高度示意性框图;

图4示出了分层道路结构分类方案的示例;

图5示出了传统神经网络结构的示意性框图;

图6示出了在卷积神经网络内执行的处理的示例;

图7a和7b示出了在卷积神经网络中应用于输入体的卷积过程的示例;

图8示出了示例图像分割网络的示意性框图;

图9示出了结合了池化连接和跳过连接的示例图像分割网络的示意性框图;

图10a和10b示出了本发明实施例中的分层图像分割网络的示意性框图;

图11示出了训练阶段中的分层图像分割网络;

图12a和12b通过示例示出了原理,根据该原理可以确定用于训练分层分割网络的代价函数;

图13a和13b示出了扩展,在该扩展中确定并结合了像素特征向量的修改版本。

具体实施方式

在自主驾驶领域中,可能需要道路或其他结构检测组件(也称为机器视觉组件),当给定视觉输入时,道路或其他结构检测组件可以确定真实世界的结构,例如道路或车道结构,即,图像的哪一部分是路面,图像的哪一部分构成道路上的车道等。特别地,结构检测被自动车辆决策引擎馈送到决策制定中。

在所描述的本发明的实施例中,使用单独应用于图像像素的分层分类方案来实现结构检测,并且转而将结构检测用作这种决策的基础。

分层分类方案的好处在于,即使无法关于层次中的较低级别分类以足够的确定性来对特定像素进行分类,对于某些类型的决策,决策引擎仍然可以当检测到进一步低于该层的较低级别分类的失败时,在较高级别分类上“回退(fallback)”。就是说,尽管在极端情况下,可以响应于未能以足够的确定性对某组像素进行分类而执行默认动作,但是在其他情况下,决策引擎仍可以通过选择基于较高级别分类的一系列选项之一来安全地做出某些类型的决策,某些类型的决策可以基于该像素集以足够的确定性做出,同时可以安全地推迟需要(一个或更多个)较低级别分类的其他类型的决策。

在图像处理的上下文中,分类是指识别图像内结构的任务。可以在图像级别执行分类,即,关于图像结构类的集合将图像作为整体进行分类。还可以通过根据图像的像素形成哪个结构的一部分来对图像的像素进行单独分类来在图像内的结构级别上执行分类,该分类在本文中也称为“分割”或像素级别分类。

优选地,这通过使用使用训练图像来训练的卷积神经网络的机器学习来实现。这些训练图像就像从自动车辆的相机中所看到的图像一样,但是它们已经被标注了神经网络需要学习的信息。例如,它们将具有注释,该注释标记图像上的哪些像素是路面和/或图像上的哪些像素属于车道。在训练时,网络显示有数千个(最好是成千上万个)这样的带注释的图像,并向自身学习图像的哪些特征指示像素是车道的一部分或路面等。在运行时,网络可以然后使用从未见过的图像自行做出决定。可以手动标注训练图像以进行训练。训练图像可以例如是取自视频图像的集合的帧。

图1示出了用于基于带注释的街道场景图像(在此也称为道路图像)来训练结构检测组件102的训练系统的高度示意性功能框图。即,街道场景图像具有关联的图像注释数据。在图1中,街道场景图像被标记为104,其对应的图像注释数据被标记为106。注释数据106标记图像104内的(一个或更多个)某些结构(例如道路、车道、交叉路口、不可行驶区域等)的(一个或更多个)位置,以及图像内可能的物体(例如其他车辆、行人、街道标牌或其他基础设施等)。

图像可分为训练数据集、测试数据集和验证数据集,分别标记为108a、108b和108c。

检测组件102将标记为u的街道场景图像作为输入图像数据,并生成输出v=f(v),其中f是由检测组件102的模型参数的集合所定义的函数。

基于训练图像108a来训练检测组件102,以使其输出f(u)与对应的注释数据匹配。这是递归过程,在该递归过程中,训练系统110的输入组件112系统地将训练图像108b的图像数据输入到结构检测器102,并且训练系统110的训练组件114调整模型参数以试图优化目标函数(也称为代价函数或误差函数),该目标函数为每个训练图像(代价或误差)提供输出f(u)与对应注释数据106之间差异的度量。

检测组件102可以例如是卷积神经网络,其中模型参数是神经元之间的权重。

测试数据108b用于最小化过度拟合,过度拟合指以下事实:超出某个点,训练数据集108a上检测组件102的精度提高,不利于其概括训练期间未遇到的图像的能力。过度拟合可以被识别为在训练数据108上提高检测组件102的精度会降低(或不提高)其在测试数据上的精度的点,其中精度是依据目标函数进行测量的。训练的目的是将目标函数最小化到在不过度拟合的情况下目标函数最小的程度。训练可以例如基于反向传播(误差的后向传播),基于目标函数关于模型参数的梯度的计算。在这种情况下,训练组件112可以被称为反向传播组件。

如果需要,验证数据集108c可用于提供对检测组件性能的最终评估。

图2示出了自动车辆200的高度示意性框图,该自动车辆200被示出为包括训练后的检测组件102的实例,该训练后的检测组件102具有连接至车辆200的图像捕获装置202的输入和连接至自动车辆控制器204的输出。在使用中,自动车辆200的训练后的结构检测组件102根据其训练实时地检测由图像捕获装置102所捕获的图像内的结构,并且自动车辆控制器204基于结果控制车辆的速度和方向,没有来自任何人的输入或具有来自任何人的有限的输入。在该示例中,车辆200是汽车,但是它可以是任何形式的车辆。

在下面描述的示例中,结构检测器102被训练为检测道路结构(也可选地为其他结构),并且结构检测器102在本文中可以被称为道路检测组件或道路检测器。但是,相同的技术可以等同地应用于其他形式的视觉结构,并且可以应用于自主驾驶之外。

道路检测组件102和自动车辆控制器204是自动车辆200的功能组件,其代表在自动车辆200内实现的某些高级功能。这些组件可以以硬件或软件或两者的组合来实现。对于软件实现,所讨论的功能由自动车辆100的一个或更多个处理器(未示出)实现,该处理器可以是诸如cpu的通用处理单元和/或诸如gpu的专用处理单元。当在一个或更多个处理器上执行保存在存储器中的机器可读指令时,保存在存储器中的机器可读指令使这些功能得以实现。对于硬件实现,可以使用专用硬件(例如,专用集成电路(asic)和/或现场可编程门阵列(fpga))来实现所讨论的功能。

图像捕获装置202可以是可以捕获3d图像数据的三维(3d)图像捕获装置。即,除了关于其在相机的图像位置内的位置的信息外,还有关于视觉结构的深度信息。例如,这可以使用立体成像、lidar、飞行时间测量等来提供。例如,图像捕获装置202可以是具有一对立体布置的图像捕获单元(相机)的立体图像捕获装置。图像捕获单元各自捕获二维图像,但是这些相机的布置使得可以从由相机同时捕获的成对的二维(2d)图像中提取深度信息,从而提供三维(3d)成像。然而,将领会,可以在当前上下文中使用可以为像素的二维阵列提供深度信息的其他形式的3d成像。尽管在图2中仅示出了一个图像捕获装置202,但是自动车辆可以包括多个这样的装置,例如前向和后向图像捕获装置。

然而请注意,对于本发明的目的,不需要3d图像。本发明可以仅使用2d图像来实现,因此单个照相机就足够了。所描述的分层训练和分类方案可以有许多不需要3d信息的用途。

应当理解,以上是对某些自动车辆功能的高度简化的描述。自动车辆的一般原理是已知的,因此不再详细描述。

图3示出了车辆300的简化框图,该车辆300可以用于捕获待标注的道路图像,即,上面参照图1所描述的那种道路图像。这些图像可以被捕获为当车辆300沿着道路行驶时所记录的短视频片段的帧。车辆300可以被称为训练车辆,作为将其与图2的自动车辆200区分开的方便速记。训练车辆300被示出为包括图像捕获装置302,图像捕获装置302可以是前向或后向的图像捕获装置,并且该图像捕获装置302耦合至处理器304。处理器304从图像捕获装置302接收所捕获的图像,并将其存储在存储器306中,从存储器306中可以检索到所捕获的图像从而以下面所述的方式来使用。

如上所述,所捕获的图像然后可以用于训练道路检测组件102。

训练道路检测组件102以执行逐像素图像分类,即,分别分类每个图像的各个像素。与关于将图像作为整体进行分类的图像分类相反,这在本领域中有时称为图像分割。在这方面要注意,除非另外指出,否则以下描述中对分类的引用指的是像素级分类(即,分割),而不是图像级的分类。

在以下描述的本发明的实施例中,道路检测组件102被训练为根据具有至少两个级别的道路结构类别的分层分类方案来对这种图像进行分类。根据分层分类方案,可以关于层次的不同级别上的多个道路结构类别同时对单个像素进行分类。除最低级别外的每个级别上的每个类别都与其直接的下一个级别上的一个或更多个类别的子集直接相关,较高级别的类别称为父类,而与之直接相关的一个或更多个类别称为该父类的孩子。每个父类对应一个可见结构的类别,其(一个或更多个)子类对应于该类别内(不同)类型的可见结构。对于具有三个或三个以上级别的方案,除最高级别之外的任何级别的每个类别都是其上一级的父类的孩子。除最低级别之外的其他级别的任何类别都可以是该级别以下的一个或更多个类别的父亲,因此除最高级别和最低级别之外的其他级别的类别都可以是父类和子类。因此,在层次的顶部,最高级别的类别对应于道路结构的广泛类别,当向下移动层次时,这些类别对应于越来越具体的类别/类型。另外要注意的术语是,既是父类又是子类的类别对应于其父类所对应的(更广泛的)道路结构类别中的特定类型的道路结构类别,但同样对应于一个(较窄的)道路结构类别,其中每个其自己的子类分别对应于该较窄的道路结构类别中的不同类型的道路结构。本身是一个父亲的孩子的孩子的类别称为该父亲的孙子。

随着自动车辆200的行驶,图像捕获装置202重复捕获车辆的即时周围环境的图像。所捕获的图像被提供给道路检测组件102,并且实时地将分割应用于那些图像中的每一个。该结果被用作由控制器204的决策引擎所实施的一个或更多个决策过程的基础,其中控制器204使用关于周围道路结构相对于车辆100当前位于何处的知识来自主进行驾驶决策。

作为示例,图4示出了具有第一、第二和第三级别的分层道路结构分类方案的一个示例,第一、第二和第三级别分别被称为级别a、b和c,并且在图中被如此标记。级别a是最高级别,级别c是最低级别,级别b是级别a和c之间的中间级别。可以理解,这仅是示例,分层分类方案可以具有多于一个的任意级别数量。在级别a处有两种道路以及在这种情况下存在道路结构的互斥类别,即“可行驶”(a1)(道路)和“不可行驶”(a2)。因此,图像内的任何像素可以被分类为可行驶(即,对应于车辆200能够行驶的区域中的点)或不可行驶(即,对应于车辆200不能行驶的区域中的点)。道路类别a1在级别b处有两个子类别:用于属于道路标线区域一部分的像素的“标线”(b2)和与道路车道上的点相对应的“车道”(b1)。继而车道类别b1在级别c处具有三个子类别:用于属于车辆200当前正在行驶的车道(自我车道)的一部分的像素的“自我车道”(c1),用于不属于自我车道的一部分而属于车辆200能够行驶的不同车道(即,如果安全的话,允许车辆200变换车道的车道)的一部分的像素的“非自我车道”(c2)。标线类别b2在级别c处具有两个子类别:用于属于道路边缘处标线区域的一部分的像素的“边缘”(c3),用于属于道路中间(即不在边缘处)的标线区域的一部分的像素的“中间”(c4)。

一般而言,子分类应详尽无遗。在同一网络中可能会训练多个重叠的层次,这对于某些应用可能是有用的。

不可行驶类别a2被示出为在b级别处具有两个子类:“人行道”/“行人道”(b3)和对应于不允许车辆行驶的道路阴影区域(或类似的限制区域)的“阴影”(b4)。

但是请注意,通常,父类可以具有任意数量的子类。

根据图4的方案,可以将属于自我车道的一部分的像素同时分配给类别c1(自我车道)、b1(车道)和a1(可行驶),或在概率(或其他基于分数)分类的情况下,将属于自我车道的一部分的像素分配针对这些类别的高概率(或其他分数)。但是,该方案的优点在于,以该像素为例,道路检测器102可以合理地确定其属于可行驶区域和车道(类别a1和b1),但同时不确定其是否是自我车道或非自我车道。在那种情况下,仍然能够以足够高的确定性对与类别a1和类别b1相关的像素进行分类,这对于由控制器204做出的至少一些类型的决策而言可能是足够的知识水平,即使其目前无法以足够的确定性将与类别c1和c2相关的像素进行分类。即,尽管道路检测器102当前未能对与层次中较低的类别c1/c2相关的像素进行分类,但是其对于与类别a1/a2和b1/b2相关的像素的成功分类可以为由控制器204做出的至少一些类型的决策提供足够的基础。

换句话说,分层分类方案的益处在于,即使道路检测组件102无法关于较低级别的类别以足够的确定性对特定像素进行分类,对于某些类型的决策,它仍然能够在检测到进一步低于该层的较低级别分类的失败时,在较高级别分类处“回退”。也就是说,尽管在极端情况下,控制器204响应于道路检测组件102无法以足够的确定性对一组特定的像素进行分类而执行默认动作(例如,尽快安全地停止),但在道路检测组件102无法关于一个或更多个较低级别的类别以足够的确定性对某些像素进行分类的其他情况下,控制器204仍可以通过选择基于较高级别分类的一系列选项之一来安全地做出某些类型的决策,该决策可以关于该像素集以足够的确定性做出,同时可以安全地推迟需要(一个或更多个)较低级别分类的其他类型的决策。分层分类方案因此为控制器204提供了“中间地带”,当控制器204知道特定像素的较低级别分类已经失败但是这些像素的较高级别分类仍然可靠时,控制器204可以通过相应地调整其决策来继续安全地操作,而不必求助于完全失败的默认操作模式。

一个示例是系统的不同部分需要不同级别的详细分割。

另一个示例可能是系统可能会根据视觉检测的详细程度从视觉中获取一些信息,并从地图中获取一些信息。例如,从分段中提取车道(如果存在的话),如果不存在,则使用道路分段,然后将其除以地图指示的车道数量。

尽管在上面的每个父类都有两个或三个子类,但是给定的父类可以具有任意期望数量的子类。实际上,可以按照尊重分层分类的基本原则的任何方式选择任何其他或替代的道路结构类别。

将会认识到,该分类方案可以结合可用于关于层次内的道路结构类别对像素进行分类的任何分割方法来实施。所描述的方法通常可以用可以学习层次的任何形式的机器学习组件来实现。

下面描述本发明的优选实施例,其使用卷积神经网络(cnn)作为道路结构检测的基础。首先,将描述有关cnn的一些有用的上下文,但是要注意,这不是穷举的,而仅是以示例的方式提供。cnn可以用各种不同的架构和组件来实现,并且应该理解,本文所述的方法可以使用任何合适的cnn架构,或者实际上是能够学习像素嵌入的任何机器学习架构来实现。

为了实现本文提供的分层分类方案的目的,重要的是提供了一种学习机制,该学习机制可以在层次的各个级别上获取误差信号。这与cnn的确切结构无关。实际上,可以将具有明显不同结构的不同样式的cnn特征提取器与基于由特征提取器所提取的像素特征向量来执行分层分类的通用目标分层后端一起结合使用。由特征提取器所提供的特征向量如下所述被操纵以便执行分层分类。

图5示出了表示用于人工神经网络结构500的常规结构的示意性框图,其被示出为具有多个处理层502(输入层),504、506(第一和第二隐含层)和508(输出层)。尽管图5中示出了两个隐含层,但神经网络可以具有任意数量的隐含层(或根本没有)。每个层被示出为包括多个处理节点,也称为“神经元”。每个节点表示为一个圆圈,圆圈中包含一个整数,该整数指示该节点在其层中的索引。图5描绘了前馈架构,其中输入层502的每个节点具有用于接收输入值的输入,该输入值被定义为在输入层502处所接收的输入向量的分量。第一隐含层504的每个节点具有输入,每个输入连接到输入层502的一个不同节点的输出,以从中接收计算值(输入层502的输出值,到第一隐含层504的输入值);第二隐含层506的每个节点具有输入,每个输入连接到第一隐含层504的一个不同节点的输入,以从中接收计算值(第一隐含层504的输出值,到第二隐含层506的输入值);并且输出层508的每个节点具有输入,每个输入连接到第二隐含层506的一个不同节点的输出(第二隐含层506的输出值,到输出层508的输入值);以及配置为提供值(输出层508的输出值)的输出,该值是在输出层508的输出向量的分量。其中每个节点都连接到上一层中的每个节点的神经网络层可以称为“完全连接”层,在传统神经网络架构中,所有层都是完全连接的。输入层502本身并不计算新值,而是表示神经网络接收一组输入值(输入向量)以在网络内进行处理的能力的便捷方式。这样,输入层502的每个节点的输出值与其输入值匹配。其余层504-508中的每个节点通过处理从前一层中的节点所接收的输入值来计算其输出值。每个节点处的输出值是根据从其所连接的节点所接收的其输入的加权总和来计算的,可以用以下数学方式表示:

其中vi表示给定层中节点i的输出值,uj表示在该节点处接收到的第j个输入,wi,j表示在该节点处施加给输入值uj的权重,并且g表示在该节点处应用的函数(激活函数)。跨节点和层的权重wi,j构成模型参数,这些模型参数在训练期间以上面参考图1概述的方式进行了调整。可以通过固定u0=1将“偏置项(biasterm)”并入上面,从而wi,0成为该偏置项(有时该偏置项在等式中写作一个单独的术语),并且在训练过程中同样会调整该偏置项。如上所述,当以这种方式正确训练后,神经网络便能够将其训练概括为以前从未遇到过的示例。神经网络的强大功能源于在一个或更多个层中使用非线性激活函数g,因为这可以充分利用神经网络的架构的全部潜力。

神经网络本身是已知的,因此,在此不进一步详细描述神经网络的一般原理。

如上所述,在本示例中,特定的卷积神经网络(cnn)架构在道路检测组件102中使用。

参考图6,将cnn的各层的输入和输出概念化为离散的三维空间中的“体(volume)”(即,三维阵列),每个体由二维阵列的堆栈形成。堆栈中的每个二维阵列在本文中也称为“数据层”,在某些情况下也称为“特征图”。因此,应注意,术语“层”在本文中可用于指神经网络的处理层,并且还指构成输入体或输出体的数据层堆栈中的数据层。在上下文中这将是清楚的。

通过示例的方式,图6示出了五个这样的体602、604、606、608和610的序列,其可以通过如下所述的方式通过一系列的卷积运算、池化运算和非线性变换来生成。作为参考,第一体602内的两个数据层分别被标记为602a和602b,第五体610内的两个数据层分别被标记为610a和610b。

可以为体中的每个值分配三个维度的离散位置(索引三元组),表示为(x,y,z),其中z是该值所属的数据层的索引(沿堆栈的距离),(x,y)是定义其在该数据层内(即在数据层平面内)的位置的索引。在此,u表示给定层的输入体,并且v表示给定层的输出体,注意到一个层的输入体u可以包括或源自另一层的输出体v。分别以ux,y,z和vx,y,z表示体u和v中在(x,y,z)位置的值,分别以kz和lz表示体u和v中在深度z处的数据层,使得ux,y,z和vx,y,z分别是数据层kz和lz中在位置(x,y)处的值。

反过来,可以将三维位置(x,y,x)分配给cnn给定处理层中的每个节点,其中该处理层中位置(x,y,z)处的节点将计算输出体v的值vx,y,z。在这方面要注意的是,尽管术语数据层是指二维数据结构,但是从这个角度考虑时,术语处理层是指三维节点结构。

每个体都具有一个宽度和高度(分别在x和y方向上的范围)和深度(在z方向上的范围)。深度是体内数据层的数量。宽度和高度可以随z变化(即在不同的数据层处是不同的),因为不同的数据层可以包含不同数量的值,但是必要时使用填充或类似技术可能会更方便,以确保每个体在所有深度都具有相同的宽度和高度。

cnn与传统神经网络架构的不同之处在于,它具有不是完全连接的处理层。而是,提供仅部分地连接到(一个或更多个)其他处理层的处理层。特别地,卷积层中的每个节点仅连接到(一个或更多个)处理层的局部3d区域,卷积层中的每个节点从该局部3d区域接收输入,并且该节点在该局部3d区域上关于滤波器执行卷积,如稍后进一步详细描述的那样。如下所述,从一层到下一层的局部部分连接遵守在它们各自的体内的值的位置(x,y),从而使得(x,y)位置信息在数据通过网络时至少在某种程度上被保留在cnn中。

为了在图像处理的上下文中对此进行说明,请考虑以下情况:体602是在cnn的输入层所接收的图像。对于具有三个颜色通道(例如红绿蓝(rgb))的彩色图像,图像体602具有分别为与三个颜色通道相对应的三个深度,z=0,1,2,并且数据层z中的(x,y)处的值是图像中位置(x,y)处相应颜色通道的像素值。即,输入层的输出值vx,y,0,vx,y,1和vx,y,2分别是三个颜色通道在图像中的位置(x,y)处的像素值。

注意,尽管以这种方式将图像视为三维结构是有用的,但是在不存在与像素相关联的物理深度信息的情况下,这仍然是2d图像。还应注意,术语“深度”在本文中可以与图像有关地既用于指在cnn处理的背景下的彩色通道数量,又指物理像素深度,即在所捕获的3d图像的情况下距捕获它的装置的距离。在上下文中将清楚是什么意思。

图7a和7b通过示例示出了在卷积处理层处应用的到深度zu的输入体u以生成深度zv的输出体v的卷积操作的原理。这涉及在卷积层应用一组zv滤波器,表示为:

f={fz|z=0,...,zv-1}。

也就是说,输出体v的z维度对应于在所讨论的层上应用的滤波器集合,并且输出层v的深度与在计算v的卷积层上应用的滤波器数量相匹配。通过使用对应的滤波器fz将一组局部卷积应用于输入体u,可以计算输出体v的每个数据层lz。为此,在通过卷积计算输出体v的情况下,该方向z在本文中称为滤波器方向。

卷积层中任何给定位置(x,y,z)处的节点均以以下方式将适用的滤波器fz应用于其输入。滤波器fz被定义为具有x×y×z大小的权重的三维阵列,其中x、y和z是表示滤波器的宽度、高度和深度的整数。滤波器可以在数学上速记为:

其中wz,x′,y′,z′为位置(x,y,z)处的滤波器fz的权重。在给定的卷积层中应用的不同滤波器可以具有不同的宽度x和/或高度y,但是通常选择每个滤波器以使其深度z与要应用该滤波器的输入体u的深度zu相匹配。也就是说,通常每个滤波器fz都应用在输入体u的整个深度上。由卷积层中位置(x,y,z)处的节点计算位置(x,y,z)处的输出体v的值vx,y,z,作为滤波器fz和匹配大小x×y×z的输入体u的局部部分的卷积,该卷积在针对该位置(x,y,z)的滤波器的“感知窗口(perceptionwindow)”内,定义为:

其中wx,y,z(u)为在(x,y,z)处的感知窗口wx,y,z内的输入体u的一部分。该定位方面可以等效地表述为:生成v的卷积层部分地连接到输出u的层(另一层),因为卷积层中每个位置(x,y,z)处的节点仅连接到针对该位置(x,y,z)的感知窗口内的其他处理层中的节点,即输出wx,y,z(u)的节点。注意,这并不排除该节点额外地部分或完全连接到一个或更多个附加处理层,例如经由来自(一个或更多个)较早层的一个或更多个跳过连接(见下文)和/或来自(一个或更多个)较晚层的一个或更多个反馈连接。

在上面,*表示卷积并且s是被称为“步幅”的整数,通过该步幅s来应用滤波器fz。如上所述,vx,y,z表示位置(x,y)处v的数据层lz中的值,该数据层lz对应于滤波器fz。步幅s定义了卷积运算的“分辨率”,因为它定义了考虑输入体u的重叠部分的程度。参照图7b,可以将卷积操作概念化为在x方向和y方向上通过s将滤波器的感知窗口分别在x方向和y方向上“滑动”每个单位增量,如图7a中的示例所示。在图7b中,以图7b所示的方式,两个滤波器f0和f1被分别以步幅s=1施加到深度为3的输入体u,以产生深度为2的输出体u,其中数据层l0和l1分别与滤波器f0和f1对应。但是,可以将不同的步幅s应用于不同的滤波器fz(并且甚至可以将不同的步幅s1,s2应用于x和y方向)。卷积是由滤波器权重加权的感知窗口内输入体u的值的总和:

vx,y,z=fz*wx,y,z(u)=∑x′,y′,z′wz,x,y′,z′us,x+x′,sy+y′,z′。

可以看出,这等效于传统神经网络中由节点计算的加权和,但仅限于滤波器的感知窗口。正是这种限制意味着在网络中应用连续卷积时,至少在一定程度上保留了阵型中的(x,y)位置。与传统神经网络架构的另一个不同之处在于,对于卷积层中给定的深度z,每个节点都应用相同的滤波器,因此也应用了相同的权重集合(而在传统网络中,每个节点都应用自己的权重集合)。在结构识别的上下文中,这是基于一个假设,即要识别的结构同样有可能出现在图像中的任何位置。在不需要该假设的情况下,可以取消此限制,并且可以允许在相同深度z但在处理层内不同(x,y)位置处的不同节点应用不同的滤波器。

通过卷积生成的给定z的数据层lz称为滤波器z的“特征图”。每个滤波器对应于特定的结构特征,并且在图像处理的上下文中,该滤波器的特征图实际上是该结构特征在图像中出现的位置的图。

当以这种方式将卷积直接应用于图像时,每个滤波器都充当低级别结构检测器,因为当滤波器的感知窗口内的像素形成某些结构(即与特定滤波器匹配的结构)时,会发生“激活”(即较大的输出值)。但是,当将卷积应用于本身是网络中较早卷积的结果的体时,每个卷积都是关于一组关于不同特征的特征图执行的,因此,当较低级别特征的特定组合存在于感知领域中时,会发生进一步进入网络的激活。因此,采用各个连续的卷积,网络正在检测与来自先前卷积的特征的特定组合相对应的、越来越高级别的结构特征的存在。因此,在较早的层中,网络有效地执行了较低级别的结构检测,但网络逐渐向较晚的层中的结构的较高级别的语义理解移动。滤波器权重是从训练中的带注释示例中学习的,这是网络如何学习要寻找什么结构。

众所周知,卷积可以与其他操作结合使用。例如,池化和非线性变换是结合使用的典型操作。如本领域中已知的,池化是降维的一种形式。

为了利用其架构的全部潜力,将非线性变换引入网络。可以使用的有效非线性函数的一个示例是整流(relu),对于负输入值整流返回零,对于正输入值整流返回输入值。但是,存在将非线性引入网络的不同方式。

非线性函数g可以方便地用作卷积处理层上的激活函数,以提供由以下给定的输出体v′:

v′=g(v)=(v′x,y,z)

其中v′x,y,z是位置(x,y,z)处v′的值,并且(v′x,y,z)表示此类值的3d阵列。

可以使用的另一个非线性激活函数是softmax函数(g=softmax):

也就是说,位置(x,y,z)处v′的值是在v中的匹配位置(x,y,z)处的值vx,y,z的指数,位置(x,y,z)处v′的值在v的整个深度上被归一化。这种归一化的结果是,任意给定(x,y)位置处的v′的值在整个深度维度z上的总和为1:

∑zv′x,y,z=1

这反过来意味着在(x,y)处的v′的整个深度上的值的集合,即:

{v′x,y,z|z=0,...,zv}

可以被解释为0,...,zv上的概率分布,又可以被解释为类别,使得vx,y,z可以被解释为原始图像(表示为px,y)中位置(x,y)处的像素属于类别az的概率,即:

v′x,y,z=pr(px,y∈az)

换句话说,在输出层处提供的特征图在像素级别上在输入图像上提供了概率分布,特征图中的每个点是关于相应像素和图像结构类别的softmax概率输出(在本文中称为soffmax特征图,或更一般而言,称为分类特征图),从而实现期望的分割。

因此,具有softmax激活函数的卷积层在本文中可以被称为概率(softmax)分类器或softmax层。

基于cnn的分割:

现在将参照图8描述如何将这些原理应用于基于道路结构的图像分割问题。图8示出了具有五个处理层802(输入层),804、806、808(隐含层)以及810(输出层)的卷积神经网络。根据上述原则,这些处理层以体表示。这些体内的节点未单独显示,但对应于这些体内的各个点。

图像(未示出)在输入层802处被接收并且传递到第一隐含层804以进行处理。隐含层804、806和808中的每一个将具有relu激活(或其他非线性激活)的卷积应用于来自前一层的输入体(未示出)。输出层810还将卷积应用于来自最后的隐含层808但是具有softmax激活的输入体(未示出),使得其如上所述地用作softmax分类器。在(x,y)处的softmax层810的每个节点都连接到特征提取器808的最后一层808中(x,y)处的节点的1x1xz体,z是该层808的深度。标记为809的该体的输出值构成在(x,y)处的像素的语义丰富的特征向量,softmax分类器810使用该向量对像素进行分类。

如该术语在此被使用的,输入层和隐含层802-808是cnn特征提取器的一个示例它们协作从输入图像中提取特征用于softmax层810分类。cnn特征提取器在图8中标记为800。在每个卷积层804-810中,节点被部分地连接到前一层中的节点,并且如上所述将卷积应用于那些节点的输出。举例来说,在层804、806、808和810中标记为824、826、828和820的点分别对应于各个节点,每个节点都连接到由相关滤波器的感知字段定义并分别表示为812、814、816和818的上一层中的节点的子集。

使用带注释的图像来训练网络,以使在其整个深度上位置(x,y)处的softmax层810的输出在期望图像结构类别的集合上“沿(runningalong)”softmax层810的z维度提供概率分布。在图8中,该类别的集合表示为{a1,…,an},其中an是softmax层的深度。因此,softmax层810内的节点的完整集合在原始图像内的每个点(像素)处在期望的图像结构类别上提供了概率分布,从而实现了期望的分割。

图9示出了cnn特征提取器800,其中将池化与一个或更多个上采样层(在该示例中为902、904)以及“跳过连接”900结合在一起。上采样层是对输入体u进行上采样以便于增加其(x,y)尺寸(如果需要,可以同时减小其深度)的层。上采样无法从丢失了信息的体中恢复(x,y)位置信息,并且跳过连接的功能是将直接来自(一个或更多个)较早的层的此类位置信息提供给网络末端的(一个或更多个)上采样层,“跳过”了丢弃了(x,y)位置信息的中间层。该信息被合并到上采样过程中,以便最终结合从(一个或更多个)较早层接收的像素级位置信息和由较后层提供的图像结构的语义理解。可以使用多种可能的上采样函数,其中一个示例是转置卷积(transposeconvolution)。

在该示例中,特征提取器800的最终层904具有(x,y)尺寸,该尺寸与输入层的(x,y)尺寸相匹配,并因此与输入图像相匹配,使得最终层904内的每个(x,y)位置对应于原始图像中位置(x,y)处的像素。

基于cnn的分层分割:

基于cnn的分割本身是已知的,因此,在此仅在有助于理解如何将基于cnn的分割应用于根据本发明的分层图像分类方案的程度上对进一步细节进行描述。

图10a和10b示出了用于结构检测组件102的示例性分层图像分割网络1000的示意性框图,该示例性分层图像分割网络1000根据上述类型的分层分类方案在像素级对图像进行分类。

分层图像分割网络1000被示出为包括以上参考图8和图9所描述的类型的cnn特征提取器800。图10b完全省略了cnn特征提取器的内部结构,并且图10a仅示出了cnn分类器800的输入层802和最终层1012(对应于图8中的层810和图9中的层904)。

为了提供分层分类,提供了多个softmax层,每个softmax层均根据与图8和9的softmax层810相同的原理进行操作。也就是说,每个softmax层都是具有softmax激活的卷积层,softmax层部分地连接到cnn特征提取器800的最终隐含层1012。图10a中仅示出了三个softmax分类层1002(级别a),1004和1005(级别b);图10b示出了附加的softmax分类层1008(级别c)。然而,将理解的是,如以下将变得显而易见的,可以提供任何复数数量的softmax分类层,其中该数量由期望的分层分类方案规定。

如图10a所示,在每个softmax分类器1002、1004、1004中,沿着z轴位于位置(x,y)处的节点共同协作,为沿着该softmax层的z轴延伸的图像结构类别的相应集合上的原始图像中(x,y)处的相应像素(对应于输入层802中的位置(x,y)处的节点)提供概率分布。在每个softmax分类器1002、1004、1006中,每个数据层中(x,y)处的节点都示出为连接到位于(x,y)处并沿着cnn特征提取器800的最终层101的z轴的节点的局部1x1xz体1004。

因此,每个softmax层1002、1004和1006中沿z轴在位置(x,y)处的每个softmax节点都从与其连接的cnn提取器800的最终层1002中的节点1004的局部1x1xz体接收输出值的集合。如上所述,那些输出构成图像中位置(x,y)处像素的语义特征向量(特征集)。有时将其称为像素嵌入。特征集是(x,y)处像素的语义丰富表示,该语义丰富表示考虑了该像素周围区域(面积或体)中图像中的相关像素。该分类节点使用的是像素(x,y)的此特征集,以关于所讨论的图像结构类别对该像素进行分类。部分连接使得,在给定softmax层中特定(x,y)位置处给定任何分类节点的情况下,到该分类节点的部分连接可以通过特征提取器800追溯到围绕原始图像中(x,y)处的像素的块(patch)(有限的面积或体)。该块对应于输入层802的节点,该分类节点经由特征提取器800的中间节点(并且可能直接经由跳过连接)间接地连接到输入层802。在那种情况下,关于该像素的特征集构成该像素的语义丰富的表示,该像素的语义丰富的表示考虑到提供周围图像块的背景。

使用这种类型cnn特征提取器架构的好处是,它通过避免重复处理和值重复,从而可以非常有效地创建和表示不同块的特征集(比将每个块视为要分类的单独图像要高效得多,这将是构建像素级分类器的另一种方式)。

通过训练许多softmax分类器来调整分类的分层方面以计算条件概率分布。在图10a和10b的示例中,第一softmax分类器1002是父级分类器(在“级别a”处),第一softmax分类器1002关于两个图像结构类别a1和a2(例如“可行驶”和“不可行驶”(图4中的类别a1和a2))对像素进行分类。第二softmax分类器1004是子级分类器(在“级别b处”),第二softmax分类器1004关于作为类别a1(可行驶)的孩子的类别b1和b2(例如“车道”和“标记”(图4中的类别b1和b2))对像素进行分类。第三softmax分类器1006是子级分类器(也在“级别b”处),第三softmax分类器1006关于作为类别a2(不可行驶)的孩子的类别b3和b4(例如“人行道”和“阴影”(图4中的类别b3和b4))对像素进行分类。仅在图10b中示出的第四softmax分类器1008是子级分类器(在“级别c”处),第四softmax分类器1008关于作为类别b1(车道)的孩子的类别c1和c2(例如“自我车道”和“非自我车道”(图4中的类别c3和c4))对像素进行分类。注意,在此示例中,类别b1至少既是父级类别(作为c1和c2的父亲)又是子级类别(作为类别a1的孩子)。

训练一个子级分类器,以针对原始图像中每个位置(x,y)处的像素计算子类的子集上的条件概率分布,其中这些子类中的每个子类都有一个公共父类。给定子类都属于公共父类(即,在子类都属于公共父类的条件下),条件概率分布为该子类的子集中的每个子集提供像素属于该子类的概率。遵循图4的示例,对softmax分类器进行训练以对(x,y)处的像素进行分类,如下所示:

等。

在上面:

pr(c)是像素px,y属于类别c的概率的简写符号,即上面介绍的pr(c)的完整符号为pr(px,y∈c);以及

pr(c|d)是在给定像素px,y属于类别d的情况下像素px,y属于类别c的概率的简写符号,即上面介绍的pr(c|d)的完整符号为pr(px,y∈c|px,y∈d)。

这进而允许根据贝叶斯定理计算给定像素px,y属于子类的绝对概率,如下所示:

pr(b1)=pr(b1|a1)×pr(a1)

pr(b2)=pr(b2|a1)×pr(a1)

pr(b3)=pr(b3|a2)×pr(a2)

pr(b4)=pr(b4|a2)×pr(a2)

pr(c1)=pr(c1|b1)×pr(b1)=pr(c1|b1)×pr(b1|a1)×pr(a1)

pr(c2)=pr(c2|b1)×pr(b1)=pr(c2|b1)×pr(b1|a1)×pr(a1)

等等。

这是在图10a和10b中示出的,其中每个子级分类器的输出被示为输入到相关的乘法分量,该子级分类器还接收对应的绝对父类别概率的绝对概率作为输入。参考图10b,每个子级softmax分类器可以被称为条件概率(softmax)分类器,该子级softmax分类器与它的相关联的乘法分量一起构成了绝对概率(softmax)分类器,该绝对概率(softmax)分类器依据绝对概率关于子级类别对像素进行分类。分别包括条件softmax分类器1014、1015、1018的绝对softmax分类器在图10b中分别被标记为1014、1015和1018。

分层训练

暂时回到图1,如上所述,训练的目标是使用带注释的(标记后的)训练数据的语料库,来教导(在这种情况下)道路检测组件102函数f(u)使得其可以应用于之前从未遇到过的输入u。

在这种情况下,训练数据是带注释的街道场景图像,根据要学习的分层分类方案对该训练数据进行标注。这样,可以根据层次将各个像素标注为属于多个类别,以便提供分别表示各个softmax分类层1002,...,1008处的预期输出的“地面实况”地图的分层集合。因此,例如:

·给定图像的地面实况特征图和a1/a2(可行驶/不可行驶)分类器将分别标记该图像中的可行驶区域和不可行驶区域;

·该图像的地面实况特征图和b1/b2(车道/标记)分类器将分别标记该图像的可行驶区域的车道和标线区域;

·该图像的地面实况特征图和c1/c2(自我车道/非自我车道)分类器将分别标记该图像的车道区域的自我车道和非自我车道区域;

·等等。

图11示出了总体上在图1中描绘的那种训练系统,其用于基于地面实况特征图来训练分割网络1000。如所指出的,cnn特征提取器800与多个分层softmax分类器1002,...,1008一起构成要训练的图像分割网络1000。图像分割网络具有可训练参数的整个集合,可训练参数的整个集合由cnn特征提取器800的可训练参数与每个softmax分类器1002,...,1008的可训练参数一起形成。

在图11中,将分别应用于softmax分类器1102(a1/a2)、1104(b1/b2)、1106(c1/c2)和1108(c3/c4)的每个训练图像1116的地面实况特征图分别标记为1122、1124、1126和1128。

在分割训练期间,训练图像1116被传递到特征提取器800,特征提取器800根据其当前参数处理图像1118。特征提取器800的结果输出(即,相应的像素特征集)被馈送到每个softmax分类器1002,...,1008,softmax分类器1002,...,1008进而根据其当前参数处理其接收到的特征集,以生成相应的如上所述的softmax特征图。

分割训练是基于反向传播的,它是在分割网络1000的整个可训练参数集合上,即作为整体的网络1000上执行的。训练是按周期进行的。在每个训练周期中,训练图像集合通过网络1000传递,通过确定每个softmax分类器1002,...,1008能够在其softmax输出中复制地面实况特征图的程度来评估其性能,并基于对性能的评估来调整可训练参数的整个集合,以用于下一个训练周期(直到过程终止)。

如上面参考图1简要讨论的,关于代价函数执行反向传播。代价函数被设计为针对明显偏离相应地面实况特征1002,...,1008的像素分类来“惩罚”网络1000。即,它提供了softmax分类器1002,...,1008的softmax输出与对应的地面实况地图1122,...,1128之间的差异的总体度量(代价或误差)。训练的目的是在过度拟合发生之前将代价函数最小化,即在这种情况下最小化从训练图像生成的softmax特征图与相应的地面实况特征图之间的总体差异。

在这种情况下,代价函数是在整个来自softmax分类器1002,...,1008的集合的softmax输出的整个集合中评估的,即,将那些softmax特征图作为一个整体进行评估。代价函数评估组件1102被示出为具有输入,以接收来自softmax分类器1002,...,1008的集合的softmax输出以及相应的地面实况特征图。根据这些,代价函数评估组件1002计算关于可训练参数的整个集合的代价函数的梯度(偏导数),然后由反向传播组件1114(对应于图1中的训练组件112)使用该梯度(偏导数),以根据反向传播算法调整可训练参数的整个集合(即特征提取器800的可训练参数和softmax分类器1002,...,1008的可训练参数)。反向传播本身在本领域中是众所周知的,因此在此不再详细描述。

注意,在其上执行反向传播的可训练参数的整个集合不必包括可能训练的每个单个参数,而是指已被指定用于分割训练的训练中的网络1000的组件上的所有参数。例如,理论上可训练的某些参数可以是在分割训练期间“冻结”的预训练参数。例如,可以对cnn进行预训练以执行图像级分类,然后将其“预训练后的”的至少一些层合并到分割(即像素级分类)网络中,因为在图像级分类任务中所学习的特征识别“技能”的至少一部分也可以应用于图像分割。这是所谓的迁移学习的一种形式。以这种方式冻结的参数是不构成可训练参数的整个集合的一部分的参数的示例,正如此处使用的该术语。

分层训练中的“蒙版(masking)”

训练的另一个组成部分在本文中称为“蒙版”。

蒙版是指这样的事实:定义了代价函数,使得不会因其父类之外的像素的子级分类器进行任何分类而受到惩罚。即,代价函数被定义使得子级分类器不能因其如何对不属于其父类的像素进行分类而受到惩罚。例如,“车道”/“标线”(b1/b2)分类器1004不能因为其如何对标记为“不可行驶”(a2)的像素进行分类和因此未关于任何“可行驶”(a1)子类对哪一个进行标记而受到惩罚。同样,“中心标线”/“边缘标线”(c1/c2)分类器也不会因其如何对未标记为“标线”的像素(例如,车道像素和不可行驶像素)进行分类而受到惩罚。这在图11以及图12a和图12b中通过示例示出,其中阴影被用于示出对于给定分类器而言不影响代价函数的图像区域。

通过组合分别为分类器1002、1004、1006和1008定义的误差信号来形成代价函数。每个误差信号都会编码相关分类器的分类输出与层次适用级别上的相应标签之间的差异度量。因此,在此示例中,关于适用的地面实况值定义了误差函数,如下所示:

·可行驶/不可行驶分类器1002的误差信号提供了在层次的级别a处的由该分类器确定的各个像素分类与可行驶/不可行驶(a1/a2)像素标签之间的差异的度量。

·车道/标线分类器1004的误差信号提供了在层次的级别b处的由该分类器确定的各个像素分类与车道/标线像素标签(b1/b2-类别a1的孩子)之间的差异的度量。只有被标记为可行驶(a1)的像素才可导致该误差信号,并且它与未被标记为属于可行驶类别a1的像素无关。

·自我/非自我车道分类器1006的误差信号提供了在级别c处的由该分类器确定的各个像素分类与自我/非自我像素标签(c1/c2-类别b1的孩子)之间的差异的度量。只有被标记为车道(b1)的像素才可导致该误差信号,并且它与未被标记为属于车道类别b1的像素无关。

·中心标记/边缘标记分类器1008的误差信号提供了在级别c处的由该分类器确定的各个像素分类与中心标记/边缘标记像素标签(c3/c4-类别b2的孩子)之间的差异的度量。只有被标记为标记(b2)的像素才可导致此误差信号,并且它与未被标记为属于标记类别b2的像素无关。

·等等。

这些误差信号被合并到一个总代价函数中,在训练中将这些误差信号最小化。

在此示例中示出了一个图像,其中每个像素都标注为道路或非道路,尽管这不是必需的–有些像素可能完全未标记,在这种情况下,它们根本不会影响总代价函数。

将会认识到,上面描述的分层分割训练的原理也可以应用于除cnn之外的机器学习模型,例如其他形式的神经网络或完全不同的模型。

图13示出了网络的可选扩展,其中分别为类别a1/a2、b1/b2、b3/b4和c1/c2并入了特征向量修改组件1202、1204、1205和1208。这些中的每一个均部分地连接到特征提取器800的最终层,并且从特征提取器800接收关于图像像素所提取的特征向量。这些组件1202-1208中的每一个都是网络的可训练组件,例如可以由少量其他卷积层形成。

构思是这些组件中的每一个都可以自由修改为关于每个像素所提取的特征向量,以“优化”它,以达到进行相应的分类任务的目的。也就是说,将其定制为适用的分类任务。因此,特征向量修改组件1202-1208根据在训练中学习到的各个特征向量修改参数集合来修改每个像素的特征向量,以生成各个修改后的特征向量,以分别供分类器1002-1008使用。如上所述,将这些参数与其他可训练参数一起学习。

发明人还已经认识到,当涉及到与那些父类的子类相关的这些像素时,在将特征向量定制为对与父类集合相关的像素进行分类的任务中所获得的知识也是有用的。因此,例如,通过学习将特征向量定制为可行驶/不可行驶(a1/a2)分类而获得的知识对于车道/标线分类(b1/b2-a1的孩子)和人行道/阴影区域分类(b3/b4–a2的孩子)都是有用的。类似地,当涉及到中心车道/边缘车道分类任务(c3/c4–b2的孩子)时,通过学习将特征向量定制为车道/标线分类(b1/b2)而获得的知识也很有用,等等。另一方面,在将特征向量定制为车道/标线分类任务(b1/b2)时所学习到的更细粒度的知识在执行较粗的可行驶/不可行驶(a1/a2)分类任务时预计不会特别有用。也就是说,在这种情况下,从层次上进一步获得的知识也将在层次的更下层有用,但反之则无用。

通过级联选择性地组合修改后的特征向量来利用这一点。具体地,将关于父类的给定集合所确定的经修改后的特征向量与关于子类的每个子集所确定的修改后的特征向量进行级联,以生成关于子类的每个子集的组合后的(级联后的)特征向量。

这在图13a和13b中通过示例进行了说明,其中示出了如何确定由特征提取器800所确定的给定像素的特征向量f的修改版本,然后按以下步骤进行级联(表示级联):

·对于类别集合p={a1,a2}为f→fp

·对于类别集合q1={b1,b2}为f→fq1(a1∈p的子类)

·其用于对与q1相关的像素进行分类

·对于类别集合q2={b3,b4}为f→fq2(a2∈p的子类)

·其用于对与q2相关的像素进行分类

·对于类别集合r1={c1,c2}为f→fr1(b1∈q1的子类)

·其用于对与r1相关的像素进行分类

·对于类别集合r2={c3,c4}为f→fr2(b2∈q1的子类)

·其用于对与r2相关的像素进行分类

·对于类别集合r3={c5,c6}为f→fr3(b3∈q2的子类)

·其用于对与r3相关的像素进行分类

·对于类别集合r4={c7,c8}为f→fr4(b4∈q2的子类)

·其用于对与r4相关的像素进行分类

·等等。

从上面定义的意义上讲,反向传播组件1114和特征向量修改组件1202-1208是系统的功能组件,它们在软件实现中与分割网络1000一起在训练系统的一个或更多个处理器(例如cpu和/或gpu)上实现,训练系统例如可以是后端或其他离线培训系统。

应当理解,仅通过示例描述了上述实施例。鉴于本文提出的教导,本发明的其他实施例和应用对本领域技术人员将是显而易见的。本发明不受所描述的实施例的限制,而仅受所附权利要求书的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1