图像语义分割方法和图像语义分割装置

文档序号:30807264发布日期:2022-07-19 23:12阅读:159来源:国知局
图像语义分割方法和图像语义分割装置

1.本技术涉及人工智能领域,具体涉及计算机视觉领域,尤其涉及一种图像语义分割方法和图像语义分割装置。


背景技术:

2.图像语义分割是计算机视觉领域的一项基本技术,它的目的是将图像按像素分成若干个特定的、具有独特性质的区域并提出感兴趣的目标区域。图像分割技术是由图像处理到图像分析的关键步骤,例如在辅助驾驶场景中,语义分割的输出可以辅助判断可行驶的区域,以及道路上的车辆和行人。
3.随着基于深度学习的图像分割技术的发展与在各个领域应用,分化出来了各种各样的适合在特定场景的分割网络。其中,实时城市街道场景是图像分割技术的一个非常重要的应用场景,它对辅助驾驶、自动驾驶的实现有着非常重要的意义。在这种应用场景下,分割任务和驾驶任务的关联性非常高,语义分割的结果将用来辅助自动驾驶系统进行路况判断(语义分割网络可以将道路、车辆、行人的像素标注并分离开,给驾驶系统提供可行驶的路面位置信息),因此,对分割网络的准确性和实时性有着很高的要求。
4.城市街道场景分割任务一般运行在车载嵌入式平台,嵌入式平台的算力、内存、功耗都十分有限,该应用场景需要一个紧凑、高效、有着很快的推理速度并只需要少量计算资源的分割网络来完成任务,对分割网络的轻量性有着很高要求。而高精度、较大规模的分割网络无法满足这种需求,因此出现了轻量级语义分割网络。轻量级分割网络的目的是在嵌入式硬件平台算力、内存等硬件条件具有限制的情况下完成实时语义分割任务,因此网络的参数量和计算量都必须足够小。
5.现有的主流的轻量级分割使用深度可分离卷积、bottleneck结构、非对称卷积来轻量化分割模型,但是使用这些轻量化的卷积操作的弊端也非常明显:由于这些卷积操作简化了参数或压缩了特征图的通道,导致网络特征提取能力弱,降低了分割网络的精度。
6.因此如何在保证较小计算量的前提下,提高图像语义分割的精度是亟待解决的技术问题。


技术实现要素:

7.本技术提供一种图像语义分割方法和图像语义分割装置,能够在保证较小计算量的前提下,有效提高分割精度。
8.第一方面,提供了一种图像语义分割方法,该方法包括:获取待处理图像的初始特征图,将初始特征图输入到分割网络,从而得到待处理图像的语义分割图,该语义分割图的分辨率与待处理图像的分辨率相同,该分割网络包括至少一个非对称卷积单元,该至少一个非对称卷积单元用于对初始特征图进行特征提取,非对称卷积单元生成的多个感受野的形状不完全相同。
9.在本技术的技术方案中,通过将单一形状的感受野扩展为多形状的感受野,使得
与实际物体和人的形状更加匹配,有效提高分割精度。此外,采用非对称卷积相比于对称卷积,参数量和计算量显著下降,更适用于轻量级的模型需求,例如适用于自动驾驶场景对于运算速度和分割精度的需求。
10.可选地,可以是对待处理图像进行预处理得到初始特征图,例如得到三通道的初始特征图,也可以是获取已经得到的初始特征图。
11.待处理图像可以是任意图像,例如可以是利用手机、相机等终端设备拍摄到的图像,又例如可以是车辆上的相机、摄像头等拍摄或录摄到的图像。待处理图像可以是实时获取,也可以是从存储器等存储装置中读取。
12.在一些情况中,还可以是从存储装置种读取上述初始特征图。
13.该分割网络可以采用现有的图像语义分割网络的框架结构,区别在于,本技术实施例中的分割网络中包括至少一个非对称卷积单元,该非对称卷积单元能够生成形状不完全相同的多个感受野。也就是说,该分割网络在包括上述非对称卷积单元之外,依然可以包括现有技术中的常见的卷积单元或者现有的非对称卷积单元,区别在于,这些现有的卷积单元无论是否是非对称卷积都只能形成正方形的感受野,而不能形成其他形状的感受野,导致感受野无法更好的匹配不同形状的物体或人,从而导致分割精度较低。
14.结合第一方面,在第一方面的某些实现方式中,感受野的形状可以包括长方形和正方形。
15.结合第一方面,在第一方面的某些实现方式中,上述形状是由非对称卷积单元的卷积核的尺寸和膨胀率决定的。如果采用对称卷积(例如5
×
5常规卷积或3
×
3膨胀卷积等),则无论如何调整卷积核的尺寸和膨胀率,都只能得到正方形的感受野。如果采用非对称卷积,则非对称卷积是成组出现的(例如1
×
5常规卷积和5
×
1常规卷积,又例如3
×
1膨胀卷积和1
×
3膨胀卷积等),当同一组非对称卷积的膨胀率相同的时候,依然只能得到正方形的感受野,只有当同一组非对称卷积的膨胀率不同的时候,才可以得到长方形的感受野。
16.结合第一方面,在第一方面的某些实现方式中,上述非对称卷积单元还包括点卷积层,该点卷积层用于压缩输入到该非对称卷积单元的特征图的通道数量。
17.上述分割网络可以根据层级的相对关系划分为浅层、中层和深层。
18.在一些实现方式中,上述分割网络可以满足以下至少一项:
19.分割网络的浅层包括至少一个浅层下采样卷积单元,该至少一个浅层下采样卷积单元用于提取浅层图像特征信息;或者
20.分割网络的中层包括至少一个中层下采样卷积单元,该至少一个中层下采样卷积单元用于提取中层图像特征信息;或者
21.分割网络的深层包括至少一个深层下采样卷积单元,该至少一个深层下采样卷积单元用于提取深层语义信息。
22.上述浅层图像特征信息、中层图像特征信息和深层语义信息都是分割网络的不同层级的处理结果,只是根据处理结果的特点进行了命名,以便于区分和理解,不存在其它限定。
23.结合第一方面,在第一方面的某些实现方式中,上述浅层下采样卷积单元、中层下采样卷积单元、深层下采样卷积单元还可以是根据分割网络的浅层、中层和深层的层级特点设置的。
24.结合第一方面,在第一方面的某些实现方式中,上述分割网络还可以包括特征融合单元,特征融合单元用于将浅层图像特征信息、中层图像特征信息和深层语义信息进行融合。这种方式能够有效提高分割精度。
25.由于浅层的图像分辨率相对最高,且主要提取图像特征信息,所以在一些实现方式中,浅层可以不设置非对称卷积单元,只在中层和深层设置非对称卷积单元。在另一些实现方式中,还可以只在深层设置上述非对称卷积单元,中层则设置现有技术中的非对称卷积单元。
26.在经过多层级的非对称卷积以及特征融合之后,得到的特征图的分辨率低于待处理图像的分辨率,所以可以采用上采样将粪便率调整到与待处理图像的相同。常见的有上采样卷积和双线性上采样等方式。而如果采用双线性上采样则可以进一步减少计算量和参数量,更适用于轻量级的语义分割网络。
27.第二方面,提供了一种图像语义分割网络的训练方法,该方法包括:获取待训练数据,该待训练数据包括待训练图像和待训练图像对应的语义分割标签,利用待训练数据对分割网络进行训练,从而得到目标分割网络,该待训练分割网络可以具有第一方面所述分割网络的任意一种结构。
28.在本技术技术方案中,待训练分割网络可以具有与第一方面的相同的结构,因此,也可以具有与第一方面相同的结构所带来的技术效果,为了简洁,不再赘述。
29.结合第二方面。在第二方面的某些实现方式中,可以对待训练数据进行数据增强、数据扩展等处理,以扩充待训练数据。例如,假设待训练图像是1024*2048分辨率的图像,则可以据此得到分辨率为400*800、512*1024的图像,之后就可以将上述三种不同分辨率的图像都作为待训练数据。这种方式可以更充分挖掘待训练数据的信息,相当于对待训练数据的利用更加充分,在其他条件不变的情况下,能够得到准确性更高的模型(网络)。
30.训练过程可以是一次或多次的迭代,从而更新待训练分割网络的权重等参数。可以通过设置训练次数的阈值或者设置训练时间或者设置目标分割网络的精度要求等从而来控制训练的次数或时间,以输出满足上述预设条件的目标分割网络。
31.得到的目标分割网络可以用于进行图像语义分割,也就是说,可以作为第一方面所述的分割网络使用。
32.假设在对待训练数据进行处理后得到了上述例子中的三种分辨率的待训练数据,则在训练过程中,可以根据分辨率从小到大的顺序,依次利用三种分辨率的图像进行训练。这种方式相当于从粗略到精细的训练过程,在其他条件不变的情况下,可以有效提高训练效率。
33.第三方面,提供了一种图像语义分割装置,该装置包括用于执行第一方面中的方法的各个单元。
34.第四方面,提供了一种图像语义分割网络的训练装置,该装置包括用于执行上述第二方面中的方法中的各个单元。
35.第五方面,提供了一种图像语义分割装置,该装置包括:存储器,用于存储程序;处理器,用于执行存储器存储的程序,当存储器存储的程序被执行时,处理器用于执行第一方面中的方法。
36.第六方面,提供了一种图像语义分割网络的训练装置,该装置包括:存储器,用于
存储程序;处理器,用于执行所述存储器存储的程序,当所述存储器存储的程序被执行时,所述处理器用于执行上述第二方面中的方法。
37.第七方面,提供了一种电子设备,该电子设备包括上述第三方面或者第五方面中的图像语义分割装置。
38.在上述第七方面中,电子设备具体可以是移动终端(例如,智能手机),平板电脑,笔记本电脑,增强现实/虚拟现实设备以及车载终端设备等等。
39.第八方面,提供了一种计算机设备,该计算机设备包括上述第四方面或者第六方面中的图像语义分割网络的训练装置。
40.在上述第八方面中,计算机设备具体可以是服务器或者云端设备等等。
41.第九方面,提供一种计算机可读介质,该计算机可读介质存储用于设备执行的程序代码,该程序代码包括用于执行第一方面或者第二方面中的方法的步骤的指令。
42.第十方面,提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述第一方面或者第二方面中的方法。
43.第十一方面,提供一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,执行第一方面或者第二方面中的方法。
44.可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行第一方面或者第二方面中的方法。
45.上述芯片具体可以是现场可编程门阵列或者专用集成电路。
46.应理解,本技术中,第一方面的方法具体可以是指第一方面以及第一方面中各种实现方式中的任意一种实现方式中的方法。第二方面的方法具体可以是指第二方面以及第二方面中各种实现方式中的任意一种实现方式中的方法。
附图说明
47.图1是本技术实施例提供的系统架构的示意图。
48.图2是本技术实施例提供的根据fcn模型进行语义分割的示意图。
49.图3是本技术实施例提供的一种芯片硬件结构的示意图。
50.图4是本技术实施例的非对称卷积单元的示意性结构图。
51.图5是图4对应生成的感受野的一个示例的示意图。
52.图6是本技术实施例的分割网络结构的示意图。
53.图7是本技术实施例的分割网络结构的一个示例的示意图。
54.图8是本技术实施例的下采样卷积单元的结构示意图。
55.图9是图7所示分割网络的一个示例的示意图。
56.图10是本技术实施例的图像语义分割方法的示意性流程图。
57.图11是本技术实施例的图像语义分割网络的训练方法的示意性流程图。
58.图12是本技术实施例的图像语义分割装置的示意性框图。
59.图13是本技术实施例提供的图像语义分割装置的硬件结构示意图。
60.图14是本技术实施例的图像语义分割网络的训练装置的示意性框图。
61.图15是本技术实施例提供的图像语义分割网络的训练装置的硬件结构示意图。
具体实施方式
62.下面将结合附图,对本技术中的技术方案进行描述。
63.本技术实施例提供的图像语义分割的方案能够应用在自动驾驶系统、人机交互系统、移动设备的摄影、图像搜索引擎以及增强现实应用等需要进行语义分割的领域。下面以自动驾驶的应用场景为例进行简单的介绍。
64.自动驾驶系统(autonomous driving system,ads)需要使用到各种各样的网络,包含目标检测、图像识别、语义分割以及3d姿态估计等等。这些复杂的网络可以提供丰富的场景信息,代替驾驶员驾驶汽车,实现安全行驶。
65.具体地,自动驾驶系统中需要进行语义分割,也就是对整个场景以像素精度高速地进行语义层面的划分,例如这个像素属于车辆,另外一个像素属于护栏等。接下来,从像素折算到物理距离,系统就可以完成整个场景的完整建模。像素级的定位精度能够得到车辆的较精确轮廓,这样可以完成准确的旁侧距离计算;同时,检测出来的护栏、车道线和路面等元素可以辅助车辆较精确位置的判断。
66.其中,语义分割可以由本技术实施例的图像语义分割方案来实现。根据语义分割能够确定图像中的不同物体,进而实现对车辆旁侧距离的计算以及对车辆位置的判断。
67.需要说明的是,在本技术实施例的方案中,既可以具有传统的正方形的感受野,又可以具有长方形的感受野,相当于将单一形状的感受野扩展为多种形状的感受野,可以更加匹配各种形状的人或物,因此,相比于只具有正方形感受野的传统方案来说,能够更好地匹配图像中的车辆、人、道路、树木、建筑等各种形状的物体,从而有效提高语义分割的精度。
68.由于本技术实施例涉及大量神经网络的应用,为了便于理解,下面先对本技术实施例涉及的相关术语及神经网络等相关概念进行介绍。
69.(1)语义分割
70.不同于传统的基于灰度、颜色、纹理和形状等特征的图像分割问题,语义分割通常是像素级别的,即将图像中的每一个像素点都标上特定的类别。语义分割就是指的在分割出图像中不同类别的物体之后,还能够对这些物体进行分类。语义分割通常是将图像作为输入,以语义分割图(预测图)作为输出,分割图中的每一个像素包含了该像素对应的类别的标签。
71.(2)感受野(receptive field)
72.在卷积神经网络中,感受野是指卷积神经网络每一层输出的特征图(feature map)上每个像素点在原始图像上映射的区域大小,这里的原始图像是指网络的输入图像(即图像的特征图),可以理解为是经过预处理(如resize,warp,crop)后的图像。
73.感受野的值越大表示其能接触到的原始图像范围就越大,也意味着它可能蕴含更为全局、语义层次更高的特征;相反,值越小则表示其所包含的特征越趋向局部和细节。因此感受野的值可以用来大致判断每一层的抽象层次。
74.感受野的大小(即尺度)会受到卷积层数、卷积核、膨胀率和步长的影响,其中,步长主要是会对下一层卷积层的感受野产生影响,其他参数则是对当前层卷积层的感受野产生影响。即第i层卷积层的感受野大小和第i层的层数、卷积核、膨胀率和第i-1层的步长有关系,其中i为正整数。
75.此外,计算感受野的大小时不考虑图像边缘(padding)的影响。
76.感受野的形状则主要受到卷积核和膨胀率的影响,感受野的形状和大小(尺度)是不同的概念,在本技术实施例的方案中,主要给出了正方形和长方形两个形状例子。
77.(3)神经网络
78.神经网络可以是由神经单元组成的,神经单元可以是指以xs和截距1为输入的运算单元,该运算单元的输出可以如公式(1)所示:
[0079][0080]
其中,s=1、2、
……
n,n为大于1的自然数,ws为xs的权重,b为神经单元的偏置。f为神经单元的激活函数(activation functions),该激活函数用于对神经网络中的特征进行非线性变换,将神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层卷积层的输入。激活函数可以是sigmoid函数。神经网络是将许多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。
[0081]
(4)深度神经网络
[0082]
深度神经网络(deep neural network,dnn),也称多层神经网络,可以理解为具有多层隐含层的神经网络。按照不同层的位置对dnn进行划分,dnn内部的神经网络可以分为三类:输入层,隐含层,输出层。一般来说第一层是输入层,最后一层是输出层,中间的层数都是隐含层。层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。
[0083]
虽然dnn看起来很复杂,但是就每一层的工作来说,其实并不复杂,简单来说就是如下线性关系表达式:其中,是输入向量,是输出向量,是偏移向量,w是权重矩阵(也称系数),α()是激活函数。每一层仅仅是对输入向量经过如此简单的操作得到输出向量由于dnn层数多,系数w和偏移向量的数量也比较多。这些参数在dnn中的定义如下所述:以系数w为例,假设在一个三层的dnn中,第二层的第4个神经元到第三层的第2个神经元的线性系数定义为上标3代表系数w所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。
[0084]
综上,第l-1层的第k个神经元到第l层的第j个神经元的系数定义为
[0085]
需要注意的是,输入层是没有w参数的。在深度神经网络中,更多的隐含层让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。训练深度神经网络的也就是学习权重矩阵的过程,其最终目的是得到训练好的深度神经网络的所有层的权重矩阵(由很多层的向量w形成的权重矩阵)。
[0086]
(5)卷积神经网络
[0087]
卷积神经网络(convolutional neuron network,cnn)是一种带有卷积结构的深度神经网络。卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器,该特征抽取器可以看作是滤波器。卷积层是指卷积神经网络中对输入信号进行卷积处理的神经元
层。在卷积神经网络的卷积层中,一个神经元可以只与部分邻层神经元连接。一个卷积层中,通常包含若干个特征平面,每个特征平面可以由一些矩形排列的神经单元组成。同一特征平面的神经单元共享权重,这里共享的权重就是卷积核。共享权重可以理解为提取图像信息的方式与位置无关。卷积核可以以随机大小的矩阵的形式初始化,在卷积神经网络的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。
[0088]
(6)残差网络
[0089]
残差网络是在2015年提出的一种深度卷积网络,相比于传统的卷积神经网络,残差网络更容易优化,并且能够通过增加相当的深度来提高准确率。残差网络的核心是解决了增加深度带来的副作用(退化问题),这样能够通过单纯地增加网络深度,来提高网络性能。残差网络一般会包含很多结构相同的子模块,通常会采用残差网络(residual network,resnet)连接一个数字表示子模块重复的次数,比如resnet50表示残差网络中有50个子模块。
[0090]
(7)损失函数
[0091]
在训练深度神经网络的过程中,因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断的调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。
[0092]
(8)反向传播算法
[0093]
神经网络可以采用误差反向传播(back propagation,bp)算法在训练过程中修正初始的神经网络模型中参数的数值,使得神经网络模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的神经网络模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的神经网络模型的参数,例如权重矩阵。
[0094]
下面结合图1对本技术实施例的系统架构进行详细的介绍。
[0095]
图1是本技术实施例的系统架构的示意图。如图1所示,系统架构100包括执行设备110、训练设备120、数据库130、客户设备140、数据存储系统150、以及数据采集系统160。
[0096]
另外,执行设备110包括计算模块111、i/o接口112、预处理模块113和预处理模块114。其中,计算模块111中可以包括目标模型/规则101,预处理模块113和预处理模块114是可选的。
[0097]
数据采集设备160用于采集训练数据。针对本技术实施例的图像语义分割方案来说,训练数据可以包括训练图像以及训练图像对应的标签图,其中,标签图中给出训练图像中的每个像素对应的类别标签。进一步地,训练数据还可以包括训练图像对应的惯性测量
单元(inertial measurement unit,imu)信息。imu信息可以包括位姿信息,例如训练图像的拍摄角度信息。将训练数据存入数据库130,训练设备120基于数据库130中维护的训练数据训练得到目标模型/规则101。
[0098]
下面对训练设备120基于训练数据得到目标模型/规则101进行描述,训练设备120对输入的训练图像进行语义分割,将输出的语义分割结果(图像中每个像素对应的类别的预测值)与标签图进行对比,直到训练设备120输出的语义分割结果与标签图的差异小于一定的阈值,从而完成目标模型/规则101的训练。
[0099]
上述目标模型/规则101能够用于实现本技术实施例的图像语义分割方法,即,将待处理图像输入该目标模型/规则101(可以先进行相关的预处理,然后再输入到目标模型/规则101),即可得到待处理图像的语义分割结果。本技术实施例中的目标模型/规则101具体可以为神经网络。需要说明的是,在实际应用中,数据库130中维护的训练数据不一定都来自于数据采集设备160的采集,也有可能是从其他设备接收得到的。另外需要说明的是,训练设备120也不一定完全基于数据库130维护的训练数据进行目标模型/规则101的训练,也有可能从云端或其他地方获取训练数据进行模型训练,上述描述不应该作为对本技术实施例的限定。
[0100]
根据训练设备120训练得到的目标模型/规则101可以应用于不同的系统或设备中,如应用于图1所示的执行设备110,所述执行设备110可以是终端,如手机终端,平板电脑,笔记本电脑,增强现实(augmented reality,ar)/虚拟现实(virtual reality,vr),车载终端等,还可以是服务器或者云端等。在图1中,执行设备110配置有输入/输出(input/output,i/o)接口112,用于与外部设备进行数据交互,用户可以通过客户设备140向i/o接口112输入数据,所述输入数据在本技术实施例中可以包括:客户设备输入的待处理图像。进一步地,所述输入数据还可以包括待处理图像对应的imu信息。这里的客户设备140具体可以是终端设备。
[0101]
预处理模块113和预处理模块114用于根据i/o接口112接收到的输入数据(如待处理图像)进行预处理,在本技术实施例中,可以没有预处理模块113和预处理模块114或者只有的一个预处理模块。当不存在预处理模块113和预处理模块114时,可以直接采用计算模块111对输入数据进行处理。
[0102]
在执行设备110对输入数据进行预处理,或者在执行设备110的计算模块111执行计算等相关的处理过程中,执行设备110可以调用数据存储系统150中的数据、代码等以用于相应的处理,也可以将相应处理得到的数据、指令等存入数据存储系统150中。
[0103]
最后,i/o接口112将处理结果,如将目标模型/规则101计算得到的语义分割结果呈现给客户设备140,从而提供给用户。
[0104]
具体地,经过计算模块111中的目标模型/规则101处理得到的语义分割结果可以通过预处理模块113(也可以再加上预处理模块114的处理)的处理后将处理结果送入到i/o接口,再由i/o接口将处理结果送入到客户设备140中显示。
[0105]
应理解,当上述系统架构100中不存在预处理模块113和预处理模块114时,计算模块111还可以将处理得到的语义分割结果传输到i/o接口,然后再由i/o接口将处理结果送入到客户设备140中显示。
[0106]
值得说明的是,训练设备120可以针对不同的目标或称不同的任务,基于不同的训
练数据生成相应的目标模型/规则101,该相应的目标模型/规则101即可以用于实现上述目标或完成上述任务,从而为用户提供所需的结果。
[0107]
在图1中所示情况下,用户可以手动给定输入数据,该手动给定可以通过i/o接口112提供的界面进行操作。另一种情况下,客户设备140可以自动地向i/o接口112发送输入数据,如果要求客户设备140自动发送输入数据需要获得用户的授权,则用户可以在客户设备140中设置相应权限。用户可以在客户设备140查看执行设备110输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。客户设备140也可以作为数据采集端,采集如图所示输入i/o接口112的输入数据及输出i/o接口112的输出结果作为新的样本数据,并存入数据库130。当然,也可以不经过客户设备140进行采集,而是由i/o接口112直接将如图所示输入i/o接口112的输入数据及输出i/o接口112的输出结果,作为新的样本数据存入数据库130。
[0108]
值得注意的是,图1仅是本技术实施例提供的一种系统架构的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在图1中,数据存储系统150相对执行设备110是外部存储器,在其它情况下,也可以将数据存储系统150置于执行设备110中。
[0109]
如图1所示,根据训练设备120训练得到目标模型/规则101,可以是本技术实施例中的神经网络,具体的,本技术实施例提供的神经网络可以是全卷积网络(fully convolutional networks,fcn)等等。在本技术实施例提供的神经网络中,分割网络、分割网络的子网络(子模块)都可以是全卷积网络。
[0110]
如前文的基础概念介绍所述,卷积神经网络是一种带有卷积结构的深度神经网络,是一种深度学习(deep learning)架构,深度学习架构是指通过机器学习的算法,在不同的抽象层级上进行多个层次的学习。作为一种深度学习架构,cnn是一种前馈(feed-forward)人工神经网络,该前馈人工神经网络中的各个神经元可以对输入其中的图像作出响应。
[0111]
卷积神经网络(cnn)可以包括输入层,卷积层/池化层(其中池化层为可选的),以及全连接层(fully connected layer)。将全连接层替换为卷积层,可以得到全卷积网络。图2是本技术实施例提供的根据fcn模型进行语义分割的示意图。如图2所示,全卷积网可以包括输入层210,卷积层/池化层220(其中池化层为可选的),以及卷积层230。下面对这些层的相关内容进行详细介绍。
[0112]
卷积层/池化层220:
[0113]
如图2所示卷积层/池化层220可以包括如示例221-226层,举例来说:在一种实现中,221层为卷积层,222层为池化层,223层为卷积层,224层为池化层,225为卷积层,226为池化层;在另一种实现方式中,221、222为卷积层,223为池化层,224、225为卷积层,226为池化层。即卷积层的输出可以作为随后的池化层的输入,也可以作为另一个卷积层的输入以继续进行卷积操作。
[0114]
下面将以卷积层221为例,介绍一层卷积层的内部工作原理。
[0115]
卷积层221可以包括很多个卷积算子,卷积算子也称为核,其在图像处理中的作用相当于一个从输入图像矩阵中提取特定信息的过滤器,卷积算子本质上可以是一个权重矩阵,这个权重矩阵通常被预先定义,在对图像进行卷积(convolution,conv)操作的过程中,权重矩阵通常在输入图像上沿着水平方向一个像素接着一个像素(或两个像素接着两个像

……
这取决于步长stride的取值)的进行处理,从而完成从图像中提取特定特征的工作。该权重矩阵的大小应该与图像的大小相关,需要注意的是,权重矩阵的纵深维度(depth dimension)和输入图像的纵深维度是相同的,在进行卷积运算的过程中,权重矩阵会延伸到输入图像的整个深度。因此,和一个单一的权重矩阵进行卷积会产生一个单一纵深维度的卷积化输出,但是大多数情况下不使用单一权重矩阵,而是应用多个尺寸(行
×
列)相同的权重矩阵,即多个同型矩阵。每个权重矩阵的输出被堆叠起来形成卷积图像的纵深维度,这里的维度可以理解为由上面所述的“多个”来决定。不同的权重矩阵可以用来提取图像中不同的特征,例如一个权重矩阵用来提取图像边缘信息,另一个权重矩阵用来提取图像的特定颜色,又一个权重矩阵用来对图像中不需要的噪点进行模糊化等。该多个权重矩阵尺寸(行
×
列)相同,经过该多个尺寸相同的权重矩阵提取后的特征图的尺寸也相同,再将提取到的多个尺寸相同的特征图合并形成卷积运算的输出。
[0116]
这些权重矩阵中的权重值在实际应用中需要经过大量的训练得到,通过训练得到的权重值形成的各个权重矩阵可以用来从输入图像中提取信息,从而使得全卷积网络200进行正确的预测。
[0117]
当全卷积网络200有多个卷积层的时候,初始的卷积层(例如221)往往提取较多的一般特征,该一般特征也可以称之为低级别的特征;随着全卷积网络200深度的加深,越往后的卷积层(例如226)提取到的特征越来越复杂,比如高级别的语义之类的特征,语义越高的特征越适用于待解决的问题。
[0118]
池化层:
[0119]
由于常常需要减少训练参数的数量,因此卷积层之后常常需要周期性的引入池化层,在如图2中220所示例的221-226各层,可以是一层卷积层后面跟一层池化层,也可以是多层卷积层后面接一层或多层池化层。在图像处理过程中,池化层的唯一目的就是减少图像的空间大小。池化层可以包括平均池化算子和/或最大池化算子,以用于对输入图像进行采样得到较小尺寸的图像。平均池化算子可以在特定范围内对图像中的像素值进行计算产生平均值作为平均池化的结果。最大池化算子可以在特定范围内取该范围内值最大的像素作为最大池化的结果。另外,就像卷积层中用权重矩阵的大小应该与图像尺寸相关一样,池化层中的运算符也应该与图像的大小相关。通过池化层处理后输出的图像尺寸可以小于输入池化层的图像的尺寸,池化层输出的图像中每个像素点表示输入池化层的图像的对应子区域的平均值或最大值。
[0120]
卷积层230:
[0121]
在经过卷积层/池化层220的处理后,全卷积网络200还不足以输出所需要的输出信息。因为如前所述,卷积层/池化层220只会提取特征,并减少输入图像带来的参数。然而为了生成最终的输出信息(所需要的类信息或其他相关信息),全卷积网络200需要利用卷积层230来生成一个或者一组所需要的类的数量的输出热图(heatmap)。因此,在卷积层230中可以包括多层卷积层(如图2所示的231、232至23n)以及输出层240,该多层卷积层中所包含的参数可以根据具体的任务类型的相关训练数据进行预先训练得到,例如该任务类型可以包括语义分割等等。
[0122]
整个全卷积网络200的最后层为输出层240,该输出层240具有类似分类交叉熵的损失函数,具体用于计算预测误差,一旦整个全卷积网络200的前向传播(如图2由210至240
方向的传播为前向传播)完成,反向传播(如图2由240至210方向的传播为反向传播)就会开始更新前面提到的各层的权重值以及偏差,以减少全卷积网络200的损失,及全卷积网络200通过输出层输出的结果和理想结果之间的误差。
[0123]
需要说明的是,如图2所示的全卷积网络200仅作为一种卷积神经网络的示例,在具体的应用中,卷积神经网络还可以以其他网络模型的形式存在。
[0124]
下面介绍本技术实施例提供的一种芯片硬件结构。
[0125]
图3是本技术实施例提供的一种芯片硬件结构的示意图。该芯片包括神经网络处理器30。该芯片可以被设置在如图1所示的执行设备110中,用以完成计算模块111的计算工作。该芯片也可以被设置在如图1所示的训练设备120中,用以完成训练设备120的训练工作并输出目标模型/规则101。卷积神经网络中各层的算法均可在如图3所示的芯片中得以实现。
[0126]
神经网络处理器(neural-network processing unit,npu)作为协处理器挂载到主中央处理器(central processing unit,cpu)(host cpu)上,由主cpu为其分配任务。npu的核心部分为运算电路303,通过控制器304控制运算电路303提取存储器(权重存储器或输入存储器)中的数据并进行乘加运算。
[0127]
在一些实现中,运算电路303内部包括多个处理单元(process engine,pe)。在一些实现中,运算电路303是二维脉动阵列。运算电路303还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路303是通用的矩阵处理器。
[0128]
举例来说,假设有输入矩阵a,权重矩阵b,输出矩阵c。运算电路303从权重存储器302中取矩阵b的权重数据,并缓存在运算电路303中的每一个pe上。运算电路303从输入存储器301中取矩阵a的输入数据,根据矩阵a的输入数据与矩阵b的权重数据进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)308中。
[0129]
向量计算单元307多个运算处理单元,在需要的情况下,对运算电路303的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。例如,向量计算单元307可以用于神经网络中非卷积层,或全连接层(fully connected layers,fc)的计算,如池化(pooling),批归一化(batch normalization),局部响应归一化(local response normalization)等。
[0130]
在一些实现中,向量计算单元307将经处理的向量存储到统一存储器306。例如,向量计算单元307可以将非线性函数应用到运算电路303的输出,例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元307生成归一化的值、合并值,或二者均有。在一些实现中,经向量计算单元307处理过的向量能够用作运算电路303的激活输入,例如用于神经网络中后续层中的使用。
[0131]
统一存储器306用于存放输入数据以及输出数据。
[0132]
权重数据直接通过存储单元访问控制器305(direct memory access controller,dmac)将外部存储器中的输入数据搬运到输入存储器301和/或统一存储器306、将外部存储器中的权重数据存入权重存储器302,以及将统一存储器306中的数据存入外部存储器。
[0133]
总线接口单元(bus interface unit,biu)310,用于通过总线实现主cpu、dmac和
取指存储器309之间进行交互。
[0134]
控制器304连接的取指存储器(instruction fetch buffer)309,用于存储控制器304使用的指令;
[0135]
控制器304,用于调用指存储器309中缓存的指令,实现控制该运算加速器的工作过程。
[0136]
一般地,统一存储器306,输入存储器301,权重存储器302以及取指存储器309均为片上(on-chip)存储器。外部存储器独立于该npu硬件架构。该外部存储器可以为双倍数据率同步动态随机存储器(double data rate synchronous dynamic random access memory,简称ddr sdram)、高带宽存储器(high bandwidth memory,hbm)或其他可读可写的存储器。
[0137]
另外,神经网络中各层的运算可以由运算电路303或向量计算单元307执行。
[0138]
图4是本技术实施例的非对称卷积单元的示意性结构图。如图4所示,该非对称卷积单元400包括感受野卷积组410和特征融合卷积组420。
[0139]
感受野卷积组410包括四个分支和一个合并单元,四个分支得到的结果会在合并单元进行合并。该合并单元在图4中用concat表示。每个分支均包括一组非对称卷积,下面对每个分支分别进行介绍。
[0140]
如图4所示,第一分支包括3
×
1常规卷积(图4中的3
×
1conv)和1
×
3常规卷积(图4中的1
×
3conv),且3
×
1conv与1
×
3conv的膨胀率均为1(图4中的dilation=1)。此处需要说明的是,膨胀率为1的膨胀卷积等价于常规卷积,膨胀卷积又可以称之为空洞卷积,膨胀率则可以称之为空洞率。第一分支所对应生成的感受野是正方形的感受野,且是尺度相对较小的感受野。还应理解,在同一卷积层,尺度和形状都会受到卷积核的尺寸和膨胀率的影响,例如此处3
×
1的卷积核和1
×
3的卷积核,膨胀率为1,生成的感受野的尺度是3
×
3,形状是正方形。
[0141]
需要说明的是,形状和尺度是不同的概念,尺度可以理解为大小、尺寸,但形状跟大小无关。在本技术实施例中,形状特指长方形、正方形这类形状,无关具体尺寸大小,甚至未来还可能出现其他形状,例如梯形、平行四边形等各类形状,在现有技术中,感受野的尺度存在不同,但感受野的形状却都是单一的正方形。
[0142]
非对称卷积相对于对称卷积在保证精度受到的影响相对较小的情况下,有效减少了计算量,提高了运算效率,因此可以应用于轻量级神经网络模型中。
[0143]
第二分支包括3
×
1膨胀卷积(图4中第二分支的3
×
1dwconv)和1
×
3膨胀卷积(图4中第二分支的1
×
3dwconv),且3
×
1dwconv与1
×
3dwconv的膨胀率均为dr(图4中第二分支的dilation=dr)。第二分支生成的是正方形的感受野。
[0144]
第三分支包括3
×
1膨胀卷积(图4中第三分支的3
×
1dwconv)和1
×
3膨胀卷积(图4中第三分支的1
×
3dwconv),且3
×
1dwconv的膨胀率为dr
×
2(图4中第三分支的dilation=dr
×
2)、1
×
3dwconv的膨胀率为dr
×
4(图4中第三分支的dilation=dr
×
4)。第三分支生成的是长方形的感受野。
[0145]
第四分支包括3
×
1膨胀卷积(图4中第四分支的3
×
1dwconv)和1
×
3膨胀卷积(图4中第四分支的1
×
3dwconv),且3
×
1dwconv的膨胀率为dr
×
4(图4中第四分支的dilation=dr
×
4)、1
×
3dwconv的膨胀率为dr
×
2(图4中第四分支的dilation=dr
×
2)。第四分支生成
的是长方形的感受野。
[0146]
在一些实现方式中,可以在每个分支先对输入数据(输入分支的特征图)进行点卷积等降维处理,例如图4即示出了每个分支包括一个点卷积层1
×
1conv。但应理解降维处理的作用是可以进一步减少计算量,但无论是否进行降维处理都不影响感受野的形状。
[0147]
需要说明的是,图4只是给出了非对称卷积单元的一个具体示例,但无论是每个分支内的卷积核的尺寸还是每个分支是否包括点券基层都是可以根据实际情况进行调整的,只要能够形成多个感受野,且多个感受野的形状不完全相同即可。例如第三分支和第四分支,只要同一分支内的两个对应的非对称卷积的膨胀率不同就可以形成长方形的感受野,但膨胀率具体设置的数值大小不存在限定,且卷积核的尺寸也不存在限定。举个具体的例子,第三分支的3
×
1dwconv的膨胀率可以为5,第三分支的1
×
3dwconv的膨胀率可以为除5以外的其他正整数。又例如,第四分支可以包括5
×
1dwconv和1
×
5dwconv,也就是说,非对称卷积的卷积核尺寸并不一定必须是3
×
1和1
×
3,还有其他可能情况,不再一一列举。
[0148]
特征融合卷积组420可以用于对感受野卷积组410得到的特征图进行进一步的特征融合和/或特征变换等处理,从而可以提高特征图的信息冗余,进而提高分割精度。如图4所示,感受野卷积组410输出的特征图与对其进行3
×
3膨胀卷积之后的特征图进行合并、点卷积之后叠加,点卷积之后的特征图又与输入感受野卷积组410的图像进行叠加,进而得到输出特征图。应理解,特征融合卷积组420只要可以用于提高特征图的信息冗余即可,但具体结构并不存在限定,也就是说,特征融合卷积组420可以存在任意可行的结构。在实际情况中,甚至可以不设置特征融合卷积组420。
[0149]
在一些实现方式中,特征融合卷积组420可以包括特征融合层(合并层),用于将不同分支的处理结果进行合并。需要说明的是,在非对称卷积单元中的特征融合层是用来融合不同分支的信息的,但下文中的分割网络的特征融合单元则是用来融合不同层级的神经网络的信息的,二者的功能相同(都是特征融合)。
[0150]
在现有技术中,如果不进行非对称卷积的情况下,也就是采用对称卷积的情况下,都是只能生成正方形的感受野,例如3
×
3的卷积核,如果膨胀率为1,则生成的是3
×
3的正方形感受野,如果膨胀率为2,则生成的是6
×
6的正方形感受野。也就是说,无论是否膨胀率相同,都只能生成正方形的感受野。而现有技术中的非对称卷积同样采用了相同的膨胀率,例如可能全是第一分支所示的非对称卷积核,则生成的依然是正方形的感受野,即使膨胀率有变化,现有技术中也是同一分支采用了相同的膨胀率的情况,例如第二分支中的3
×
1conv与1
×
3conv的膨胀率均为dr(图4中的dilation=dr),则生成的只是与第一分支尺度不同的感受野,但形状依然是正方形。
[0151]
图5是图4对应生成的感受野的一个示例的示意图。如图5中的(a)所示,形成了四个大小和形状不完全相同的感受野,从内到外,最内侧正方形501对应的是图4中的第一分支形成的感受野,第二层的正方形502对应的是图4中的第二分支形成的感受野,第三层竖向的长方形503对应的是图4中第三分支形成的感受野,第四层横向的长方形504对应的是图4中第四分支形成的感受野。如图5中的(b)所示,同时存在四种形状和四种尺寸的感受野,因此更容易匹配实际物体或行人,达到更高的图像分割精度,例如图5中(b)所示,其中的车辆就与横向长方形更为匹配。
[0152]
从图5可以看出,多个尺寸(多尺度)、多个形状的感受野同时存在,能够更好的匹
配图像中的物体或人,从而可以更精确的分割图像。假设只采用现有技术中单一的正方形视野,即使设置了较多的尺度(也就是正方形的大小不同),但对于图5中(b)中所示车辆则依然无法更好的匹配,相当于图5中只存在正方形501和正方形502的情况。
[0153]
图6是本技术实施例的分割网络结构的示意图。如图6所示,该分割网络包括浅层卷积模块610、中层卷积模块620、深层卷积模块630以及合并模块640。其中,浅层卷积模块610用于提取图像的浅层信息,中层卷积模块620用于提取图像的中层信息,深层卷积模块630用于提取图像的深层信息。
[0154]
应理解,浅层、中层和深层是三个相对概念,相当于神经网络的不同层级。所以上述模块划分只是根据网络层级进行逻辑上的划分,不涉及每部分的结构。根据利用神经网络处理图像的过程中的特性,层级越浅,进行特征提取时所能提取的图像细节(特征)信息越多,语义信息越少;反之,层级越深,进行特征提取时所能提取的图像细节(特征)信息越少,语义信息越多。而图6主要就是结合上述分割网络的层级特点,将不同层级的特征提取到的信息进行结合,从而达到更高的分割精度。为了方便一目了然不同层级得到的信息的特点,可以将浅层特征提取的结果(即浅层信息)称之为浅层图像特征信息,将中层特征提取的结果(即中层信息)称之为中层图像特征信息,将深层特征提取的结果(即深层信息)称之为深层语义信息。
[0155]
在一些实现方式中,浅层卷积可以采用下采样卷积,也就是说,浅层卷积模块610利用下采样卷积进行特征提取。需要说明的是,之所以将浅层进行下采样,是因为浅层图像(浅层特征图)的分辨率最高,下采样卷积可以有效降低计算量,提高运算效率。
[0156]
在一些实现方式中,中层卷积和深层卷积均可以包括至少一次非对称特征提取,也就是说,中层卷积模块620和深层卷积模块630均可以包括至少一个非对称卷积模块,例如均可以包括至少一个图4所示的非对称卷积模块。
[0157]
可选地,在中层卷积和深层卷积中也均可以包括下采样卷积,例如可以在上述至少一个非对称卷积模块之前或者之后设置至少一个下采样卷积。在中层或深层加入下采样卷积,能够进一步降低计算量,提高运算效率。
[0158]
在一些实现方式中,可以根据不同层级设置不同的下采样卷积,以适应不同层级的特点,从而达到在尽可能不影响分割精度的前提下,尽量减小计算量。
[0159]
图6所示分割网络,通过不同层级的特征提取,以及将不同层级的信息进行结合,最后再用点卷积得到语义分割图。该分割网络是通过堆叠上文提及的非对称卷积单元来提取图像的特征信息的。而在分割网络的浅层和中层使用特殊设计的下采样卷积对特征进行下采样,可以将浅、中层特征图的分辨率减小到和深层特征分辨率一致以便将浅层的细节特征和深层的语义特征结合起来。浅中层的下采样卷积结构是不一样的,其目的是为了尽可能保留浅层特征图的细节。
[0160]
图7是本技术实施例的分割网络结构的一个示例的示意图。图7可以看作是图6所示分割网络结构的一个具体示例。如图7所示,该分割网络包括下采样卷积a(图7中的下采样a)、非对称卷积单元、下采样卷积b(图7中的下采样b)、下采样卷积c(图7中的下采样c)以及特征融合单元(图7中带大圆圈的c)和点卷积(图7中的1
×
1conv)。图7中,浅层卷积模块包括下采样卷积a和下采样卷积b,中层卷积模块包括下采样卷积a、n1个非对称卷积单元和下采样卷积c,深层卷积模块包括下采样卷积a和n2个非对称卷积单元,合并模块包括一个
特征融合单元,用于将浅层、中层和深层得到的结果进行融合,并将融合之后的结果传输给点卷积层,经过点卷积之后就可以生成语义分割图,但此时的语义分割图的分辨率是与原待处理图像是不同的,需要进行上采样之后才可以将分辨率调整到与原待处理图像相同。
[0161]
从图7可以看出,待处理图像(左上方输入的图像)在经过不同层级的卷积处理之后得到了三路的处理结果,这三路处理结果经过合并模块合并,以及经过点卷积之后得到了语义分割图(右下方输出的图像)
[0162]
如上文所述,下采样卷积可以根据不同层级的特点进行不同的设置,下面结合图8进行介绍。图8是本技术实施例的下采样卷积单元的结构示意图。
[0163]
图8中的(a)是图7中下采样卷积a的一个示例,如图8中的(a)所示,该下采样卷积a包括两个并行的操作,第一个操作是3
×
3常规卷积(图8(a)中的3
×
3conv),步长为2(图8(a)中的stride=2),第二个操作是2
×
2最大池化(图8(a)中的2
×
2maxpooling),步长为2,该下采样卷积还包括合并单元(图8(a)中的带圆圈的c),合并单元用于将两个操作的结果进行合并。
[0164]
图8中的(b)是图7中下采样卷积b的一个示例,如图8中的(b)所示,该下采样卷积b包括两个串行的操作,第一个操作是3
×
3常规卷积(图8(b)中的3
×
3conv),步长为2(图8(b)中的stride=2),第二个操作是3
×
3膨胀卷积(图8(b)中的3
×
3dwconv),步长为2。
[0165]
图8中的(c)是图7中下采样卷积c的一个示例,如图8中的(c)所示,该下采样卷积c包括一个3
×
3膨胀卷积(图8(c)中的3
×
3dwconv)的操作,步长为2。还需说明的是,下采样卷积c主要用于较深的层级,所以可以采用深度可分离卷积,深度可分离卷积的通道卷积和空间卷积(高度和宽度上的卷积)是分开的,先进行通道卷积,再在通道上进行宽度和高度上的卷积。
[0166]
下面以一个具体例子来说明本技术实施例的分割网络的结构搭建。为了简洁,以下将分割网络均简称为网络,将分割网络的每一层的输出均命名为第i层特征图,i表示网络的层数编号。
[0167]
图9是图7所示分割网络的一个示例的示意图。下面对图9进行介绍,图9中左侧的数字表示的是网络的层编号,但应理解,网络的层间结构并不是一层层顺序叠加的,需要结合连接关系来看。
[0168]
网络的第1层和第2层均为下采样卷积a。第1层特征图的通道数量为16个,分辨率为原图像(待处理处理图像或输入图像)的1/2。第2层特征图的通道数量增加至64个,分辨率为原图像的1/4。下采样卷积a由一个最大池化卷积和一个步长为2的3
×
3卷积并联构成。
[0169]
网络第3层至第8层是6层非对称卷积单元(即上文的n1=6),6个非对称视野卷积单元的基本膨胀率(用dr表示)都为1,非对称卷积单元的输入与输出特征尺寸是一样的,第3层特征图至第8层特征图的分辨率都为原图像的1/4,通道数量均为64个。需要说明的是,此处将dr都设置为1相当于在第3层至第8层形成的依然是正方形的感受野,也就是说,此处给出的是在网络的中层只设置正方形的感受野的示例。但应理解,可以根据实际情况在网络的中层和/或深层设置具有不同形状的感受野的非对称卷积单元。
[0170]
网络的第9层是下采样卷积a,第9层特征图分辨率减小至原图像1/8,通道数量增加到128个。
[0171]
网络的第10层至第18层为9个基础膨胀率不同的非对称卷积单元(即上文的n2=
9),膨胀率分别为2、4、6、2、4、6,并输出第10层特征图至第18层特征图。应理解,此处的膨胀率设置只是一个示例,不存在数值限定。网络的第10层至第18层会生成多尺度的长方形的感受野。
[0172]
也就是说,网络的第1层至第18层主要用于对图像进行编码。网络的第19层至第21层是特征融合部分,用于对前面不同层级编码之后的结果进行融合。
[0173]
网络的第19层是下采样卷积b,第19层的输入是第1层特征图,第19层特征图的分辨率为原图像的1/8,通道数量为16。下采样卷积b由一个步长为2的3
×
3卷积和一个步长为2的3
×
3深度可分离卷积串联组成。
[0174]
网络的第20层是下采样卷积c,第20层的输入是第8层特征图,第20层特征图的分辨率为原图像的1/8,通道数量为64个。下采样卷积c由一个步长为2的3
×
3深度可分离卷积构成。
[0175]
网络的第21层是合并单元层(特征融合单元或特征融合层),第21层的输入是第18层特征图、第19层特征图和第20层特征图,第21层主要用于在通道维度上将输入的特征图结合,得到的第21层特征图的分辨率为原图像的1/8,通道数量为208。
[0176]
网络的第22层是点卷积层,可以将第21层特征图的通道数量压缩至总类别数,输出的第22层特征图即为预测标注图。
[0177]
网络的第23层是上采样层,可以利用双线性上采样的处理方式,将第22层特征图恢复到与原图像相同的分辨率。
[0178]
从上述例子可以看出,可以将长方形感受野的非对称卷积单元主要设置在深层卷积单元,可以在保证分割精度的情况下,提高计算效率。
[0179]
经过试验表明,上述例子的分割网络所训练得到的模型,参数量只有0.35兆字节(mega byte,m),在单张输入尺寸为360
×
640分辨率的三通道图像时运算次数(flops)只有1.85吉(g),且图像处理速度可以达到65帧/秒,满足实时要求,并可以达到67.1%的平均交并比(mean intersection over union,miou)。而现有技术中参数量大多是千兆级的,运算量也大多至少需要几十吉(运算量常常使用gflops表示)。虽然也有些轻量级的分割网络,但现有技术的轻量级的分割网络由于感受野形状单一等因素导致分割精度非常低,并不能满足实际需求,尤其是自动驾驶中对于分割精度的需求。因此,本技术实施例的方案有效提高了轻量级分割网络的分割精度。
[0180]
图10是本技术实施例的图像语义分割方法的示意性流程图,下面对图10的各个步骤进行介绍。
[0181]
1001、获取待处理图像的初始特征图。
[0182]
可选地,可以是对待处理图像进行预处理得到初始特征图,例如得到三通道的初始特征图,也可以是获取已经得到的初始特征图。
[0183]
待处理图像可以是任意图像,例如可以是利用手机、相机等终端设备拍摄到的图像,又例如可以是车辆上的相机、摄像头等拍摄或录摄到的图像。待处理图像可以是实时获取,也可以是从存储器等存储装置中读取。
[0184]
在一些情况中,还可以是从存储装置种读取上述初始特征图。
[0185]
1002、将所述初始特征图输入到分割网络,得到所述待处理图像的语义分割图,所述语义分割图的分辨率与所述待处理图像的分辨率相同,所述分割网络包括至少一个非对
称卷积单元,所述至少一个非对称卷积单元用于对所述初始特征图进行特征提取,所述非对称卷积单元生成的多个感受野的形状不完全相同。
[0186]
该分割网络可以采用现有的图像语义分割网络的框架结构,区别在于,本技术实施例中的分割网络中包括至少一个非对称卷积单元,该非对称卷积单元能够生成形状不完全相同的多个感受野。也就是说,该分割网络在包括上述非对称卷积单元之外,依然可以包括现有技术中的常见的卷积单元或者现有的非对称卷积单元,区别在于,这些现有的卷积单元无论是否是非对称卷积都只能形成正方形的感受野,而不能形成其他形状的感受野,导致感受野无法更好的匹配不同形状的物体或人,从而导致分割精度较低。
[0187]
可选地,本技术实施例中的感受野的形状可以包括长方形和正方形。
[0188]
下面解释多形状感受野能提高分割精度的原因。在实际场景中,以道路为例,假设利用车辆上的感知设备获得了图像,该图像中可能会包括树、车辆、行人、建筑、标识牌、绿化带等等,如果只有正方形的感受野,即使有多尺度的多个正方形的感受野,依然不能较为准确地分割出这些元素,分割精度受到很大的限制,而如果采用本技术实施例的方案,则相当于对感受野进行了扩展,利用更多形状的感受野来进行语义分割,能够更好的匹配不同形状的物体和人,从而有效提高分割精度。
[0189]
在一些实现方式中,上述形状是由非对称卷积单元的卷积核的尺寸和膨胀率决定的。如果采用对称卷积(例如5
×
5常规卷积或3
×
3膨胀卷积等),则无论如何调整卷积核的尺寸和膨胀率,都只能得到正方形的感受野。如果采用非对称卷积,则非对称卷积是成组出现的(例如1
×
5常规卷积和5
×
1常规卷积,又例如3
×
1膨胀卷积和1
×
3膨胀卷积等),当同一组非对称卷积的膨胀率相同的时候,依然只能得到正方形的感受野,只有当同一组非对称卷积的膨胀率不同的时候,才可以得到长方形的感受野。由于上文已经给出了相关介绍和例子,此处不再赘述。
[0190]
在其他参数相同的情况下,对称卷积的精度高于非对称卷积,但是对称卷积的计算量和参数量均远大于非对称卷积,所以轻量级的神经网络模型倾向于采用非对称卷积而不是对称卷积,本技术实施例的方案就是主要应用于轻量级的神经网络模型的构建,且目前的对称卷积也无法形成除正方形以外的其他形状的感受野。
[0191]
在一些实现方式中,上述非对称卷积单元还包括点卷积层,该点卷积层用于压缩输入到该非对称卷积单元的特征图的通道数量。具体内容可以参照图4相关内容的介绍。
[0192]
该分割网络可以根据层级的相对关系划分为浅层、中层和深层。
[0193]
在一些实现方式中,上述分割网络可以满足以下至少一项:
[0194]
分割网络的浅层包括至少一个浅层下采样卷积单元,该至少一个浅层下采样卷积单元用于提取浅层图像特征信息;或者
[0195]
分割网络的中层包括至少一个中层下采样卷积单元,该至少一个中层下采样卷积单元用于提取中层图像特征信息;或者
[0196]
分割网络的深层包括至少一个深层下采样卷积单元,该至少一个深层下采样卷积单元用于提取深层语义信息。
[0197]
如上文所述,上述浅层图像特征信息、中层图像特征信息和深层语义信息都是分割网络的不同层级的处理结果,只是根据处理结果的特点进行了命名,以便于区分和理解,不存在其它限定。
[0198]
可选地,上述浅层下采样卷积单元、中层下采样卷积单元、深层下采样卷积单元还可以是根据分割网络的浅层、中层和深层的层级特点设置的。例如上文图7所示,在浅层卷积模块包括下采样a和下采样b,也就是说,下采样a和下采样b的组合即可以作为浅层下采样卷积单元的一个示例。上文图7所示,在中层卷积模块包括下采样a和下采样c,也就是说,下采样a和下采样c的组合即可以作为中层下采样卷积单元的一个示例。上文图7所示,在深层卷积模块包括下采样a,也就是说,下采样a即可以作为深层下采样卷积单元的一个示例。
[0199]
在一些实现方式中,上述分割网络还可以包括特征融合单元,特征融合单元用于将浅层图像特征信息、中层图像特征信息和深层语义信息进行融合。这种方式能够有效提高分割精度,具体内容可以参照上文介绍,不再赘述。特征融合单元可以包括在上文所述的合并模块中。
[0200]
由于浅层的图像分辨率相对最高,且主要提取图像特征信息,所以在一些实现方式中,浅层可以不设置非对称卷积单元,只在中层和深层设置非对称卷积单元。在另一些实现方式中,还可以只在深层设置上述非对称卷积单元,中层则设置现有技术中的非对称卷积单元。
[0201]
在经过多层级的非对称卷积以及特征融合之后,得到的特征图的分辨率低于待处理图像的分辨率,所以可以采用上采样将粪便率调整到与待处理图像的相同。常见的有上采样卷积和双线性上采样等方式。而如果采用双线性上采样则可以进一步减少计算量和参数量,更适用于轻量级的语义分割网络。
[0202]
图11是本技术实施例的图像语义分割网络的训练方法的示意性流程图。下面对图11各个步骤进行介绍。
[0203]
1101、获取待训练数据。
[0204]
该待训练数据包括待训练图像和对应的语义分割标签。
[0205]
可选地,可以对待训练数据进行数据增强、数据扩展等处理,以扩充待训练数据。例如,假设待训练图像是1024*2048分辨率的图像,则可以据此得到分辨率为400*800、512*1024的图像,之后就可以将上述三种不同分辨率的图像都作为待训练数据。这种方式可以更充分挖掘待训练数据的信息,相当于对待训练数据的利用更加充分,在其他条件不变的情况下,能够得到准确性更高的模型(网络)。
[0206]
1102、利用待训练数据对待训练分割网络进行训练,得到目标分割网络。
[0207]
该待训练分割网络可以具有上文所述分割网络的任意一种结构,为了简洁不再赘述。
[0208]
训练过程可以是一次或多次的迭代,从而更新待训练分割网络的权重等参数。可以通过设置训练次数的阈值或者设置训练时间或者设置目标分割网络的精度要求等从而来控制训练的次数或时间,以输出满足上述预设条件的目标分割网络。
[0209]
得到的目标分割网络可以用于进行图像语义分割,也就是说,可以作为实现本技术实施例的图像语义分割方法或装置的模型。
[0210]
假设在步骤1101得到了上述例子中的三种分辨率的待训练数据,则在训练过程中,可以根据分辨率从小到大的顺序,依次利用三种分辨率的图像进行训练。这种方式相当于从粗略到精细的训练过程,在其他条件不变的情况下,可以有效提高训练效率。
[0211]
图12是本技术实施例的图像语义分割装置的示意性框图。图12所示的图像语义分
割装置2000包括获取单元2001和处理单元2002。
[0212]
获取单元2001和处理单元2002可以用于执行本技术实施例的图像语义分割方法,具体地,获取单元2001可以执行上述步骤1001,处理单元2002可以执行上述步骤1002。
[0213]
上述处理单元2002按照处理功能的不同可以分成多个模块,具体地,处理单元2002可以包括图6所示的分割网络的浅层卷积模块610、中层卷积模块620、深层卷积模块630、以及合并模块640。处理单元2002能够实现图6所示的分割网络的各个模块的功能。处理单元2002还可以包括图7所示的分割网络的浅层卷积模块、中层卷积模块、深层卷积模块、合并模块以及点卷积模块,还可以包括上采样模块。处理单元2002能够实现图7所示的分割网络的各个模块的功能。处理单元2002还可以包括图9所示的分割网络。
[0214]
应理解,上述装置2000中的处理单元2002可以相当于下文中的装置3000中的处理器3002。
[0215]
图13是本技术实施例提供的图像语义分割装置的硬件结构示意图。图13所示的图像语义分割装置3000(该装置3000具体可以是一种计算机设备)包括存储器3001、处理器3002、通信接口3003以及总线3004。其中,存储器3001、处理器3002、通信接口3003通过总线3004实现彼此之间的通信连接。
[0216]
存储器3001可以是只读存储器(read only memory,rom),静态存储设备,动态存储设备或者随机存取存储器(random access memory,ram)。存储器3001可以存储程序,当存储器3001中存储的程序被处理器3002执行时,处理器3002和通信接口3003用于执行本技术实施例的图像语义分割方法的各个步骤。
[0217]
处理器3002可以采用通用的cpu,微处理器,应用专用集成电路(application specific integrated circuit,asic),图形处理器(graphics processing unit,gpu)或者一个或多个集成电路,用于执行相关程序,以实现本技术实施例的图像语义分割装置中的单元所需执行的功能,或者执行本技术方法实施例的图像语义分割方法。
[0218]
处理器3002还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本技术的图像语义分割方法的各个步骤可以通过处理器3002中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器3002还可以是通用处理器、数字信号处理器(digital signal processing,dsp)、asic、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器3001,处理器3002读取存储器3001中的信息,结合其硬件完成本技术实施例的图像语义分割装置中包括的单元所需执行的功能,或者执行本技术方法实施例的图像语义分割方法。
[0219]
通信接口3003使用例如但不限于收发器一类的收发装置,来实现装置3000与其他设备或通信网络之间的通信。例如,可以通过通信接口3003获取待处理图像或者获取待处理图像的初始特征图。
[0220]
总线3004可包括在装置3000各个部件(例如,存储器3001、处理器3002、通信接口
3003)之间传送信息的通路。
[0221]
图14是本技术实施例的图像语义分割网络的训练装置的示意性框图。图14所示的图像语义分割网络的训练装置4000包括获取单元4001和处理单元4002。
[0222]
获取单元4001和处理单元4002可以用于执行本技术实施例的图像语义分割网络的训练方法,具体地,获取单元4001可以执行上述步骤1101,处理单元4002可以执行上述步骤1102。
[0223]
应理解,上述装置4000中的处理单元4002可以相当于下文中的装置5000中的处理器5002。
[0224]
图15是本技术实施例提供的图像语义分割网络的训练装置的硬件结构示意图。图15所示的图像语义分割网络的训练装置5000(该装置5000具体可以是一种计算机设备)包括存储器5001、处理器5002、通信接口5003以及总线5004。其中,存储器5001、处理器5002、通信接口5003通过总线5004实现彼此之间的通信连接。
[0225]
存储器5001可以是rom,静态存储设备,动态存储设备或者ram。存储器5001可以存储程序,当存储器5001中存储的程序被处理器5002执行时,处理器5002和通信接口5003用于执行本技术实施例的图像语义分割网络的训练方法的各个步骤。
[0226]
处理器5002可以采用cpu,微处理器,asic,gpu或者一个或多个集成电路,用于执行相关程序,以实现本技术实施例的图像语义分割网络的训练装置中的单元所需执行的功能,或者执行本技术方法实施例的图像语义分割网络的训练方法。
[0227]
处理器5002还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本技术的图像语义分割网络的训练方法的各个步骤可以通过处理器5002中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器5002,还可以是通用处理器、dsp、asic、fpga或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器5001,处理器5002读取存储器5001中的信息,结合其硬件完成本技术实施例的图像语义分割网络的训练装置中包括的单元所需执行的功能,或者执行本技术方法实施例的图像语义分割网络的训练方法。
[0228]
通信接口5003使用例如但不限于收发器一类的收发装置,来实现装置5000与其他设备或通信网络之间的通信。例如,可以通过通信接口5003获取待处理图像或者获取待处理图像的初始特征图。
[0229]
总线5004可包括在装置5000各个部件(例如,存储器5001、处理器5002、通信接口5003)之间传送信息的通路。
[0230]
应注意,尽管图13所示的装置3000、图15所示的装置5000仅仅示出了存储器、处理器、通信接口,但是在具体实现过程中,本领域的技术人员应当理解,装置3000、装置5000还包括实现正常运行所必须的其他器件。同时,根据具体需要,本领域的技术人员应当理解,装置3000、装置5000还可包括实现其他附加功能的硬件器件。此外,本领域的技术人员应当理解,装置3000、装置5000也可仅仅包括实现本技术实施例所必须的器件,而不必包括图
13、图15中所示的全部器件。
[0231]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同装置来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0232]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0233]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0234]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0235]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0236]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:通用串行总线闪存盘(usb flash disk,ufd),ufd也可以简称为u盘或者优盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
[0237]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1