深度学习模型动态分支选择的推理方法及系统转让专利

申请号 : CN202110122098.8

文献号 : CN112446439B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李发成袁施薇张如高虞正华

申请人 : 魔视智能科技(上海)有限公司

摘要 :

本发明提供一种深度学习模型动态分支选择的推理方法及系统,本发明针对传统深度学习模型推理过程中卷积神经网络在解码部分中的深层特征存在冗余的问题,能够根据初级特征的类别,自动选择相应的解码分支,每个解码分支通过对应分支类别的初级特征输入以及相应的输出进行训练分别得到不同的特征权重组,能专注于对应分支类别的初级特征的处理和深层特征的识别以完成更加复杂的分类或者表征的生成,从而降低计算冗余,提升推理速度,满足边缘计算设备的实际应用需求。

权利要求 :

1.一种深度学习模型动态分支选择的推理方法,其特征在于,包括:S101、构建并训练用于图片的语义分类、语义检测或者语义分割的深度学习模型,所述深度学习模型包括编码器、分支选择器以及分别一一对应不同的分支类别的多个解码分支,所述深度学习模型被训练为:

由所述编码器从输入的图片中提取多个初级特征;

由所述分支选择器识别并输出初级特征的分支类别;

由解码分支通过与分支类别对应的特征权重组对所有初级特征进行处理得到深层特征、对所述深层特征进行识别输出推理结果;

S102、将所述编码器、分支选择器以及各解码分支的特征权重组部署到边缘计算设备中,在输入推理任务图片后,输出初级特征和分支类别;

S103、将所述多个解码分支部署到边缘计算设备中,根据步骤S102输出的分支类别选择相应的解码分支,由该解码分支接收步骤S102输出的初级特征,输出推理结果。

2.根据权利要求1所述的一种深度学习模型动态分支选择的推理方法,其特征在于,所述编码器采用常用深度卷积神经网络模型的浅层部分的结构。

3.根据权利要求2所述的一种深度学习模型动态分支选择的推理方法,其特征在于,所述编码器采用ResNet、Inception或者MobileNet的浅层部分结构。

4.根据权利要求3所述的一种深度学习模型动态分支选择的推理方法,其特征在于,所述分支选择器通过对初级特征进行分类,输出与解码分支数量相同的矢量,并对该矢量进行取最大值位置操作得到被选择的解码分支的编号,所述分支选择器由全局平均池化层、全连接层、激活层以及全连接层构成。

5.根据权利要求4所述的一种深度学习模型动态分支选择的推理方法,其特征在于,所述解码分支采用常用深度卷积网络模型的深层部分的结构。

6.根据权利要求5所述的一种深度学习模型动态分支选择的推理方法,其特征在于,所述解码分支采用ResNet、Inception或者MobileNet的深层部分结构。

7.根据权利要求1或6所述的一种深度学习模型动态分支选择的推理方法,其特征在于,所述深度学习模型通过端对端训练策略进行训练:将多个解码分支设计为相同的结构,训练时用组卷积形式等价替代多个解码分支的组合;

将分支选择器的输出通过复制拓宽后接入在组卷积部分输出处,最后接入最终任务输出部分,从而实现端对端训练;

部署时,将组卷积拆分为独立的解码分支,然后由分支选择器的输出决定解码分支。

8.根据权利要求1或6所述的一种深度学习模型动态分支选择的推理方法,其特征在于,所述深度学习模型通过分步训练策略进行训练:先将编码器和分支选择器作为整体训练为一个分类器,类别输出与解码分支对应;

根据训练好的模型权重,将编码器输出的初级特征作为各个解码分支的输入,然后根据推理任务分别训练各个解码分支;

当上述两个步骤训练收敛完成后,再组合联合训练直至最后模型收敛。

9.一种深度学习模型动态分支选择的推理系统,其特征在于,包括存储模块,所述存储模块包括由处理器加载并执行的指令,所述指令在被执行时使所述处理器执行根据权利要求1‑8任一项所述的一种深度学习模型动态分支选择的推理方法。

说明书 :

深度学习模型动态分支选择的推理方法及系统

技术领域

[0001] 本发明属于人工智能深度学习推理技术领域,尤其涉及一种应用在边缘计算设备上的深度学习模型动态分支选择的推理方法及系统。

背景技术

[0002] 当前边缘计算终端应用对于深度学习视觉算法的需求越来越多,但受制于当前边缘终端成本,高精度复杂模型运行推理延迟无法满足实际应用,而简单模型精度上达不到
要求,这是因为对于数据密集型的复杂任务,通常需要复杂的卷积神经网络模型才能很好
地拟合任务,过于轻量型的模型会欠拟合。
[0003] 此外,在深度学习视觉模型的推理过程中,卷积神经网络模型实时生成的深层特征会存在冗余。深度卷积神经网络较浅层部分会提取出一些初级特征(如圆、线、纹理等底
层特征),一般称作为编码,然后神经网络的更深层部分识别这些初级特征,得到更深层的
特征(如车轮特征),最后识别这些更深层的特征输出推理结果,一般称作为解码,传统的深
度卷积神经网络模型中只有一个大的解码器,该解码器只有一套特征权重组来对初级特征
进行处理和对深层特征进行识别,但我们发现当输入包含较大不同类别的特征的图片时,
在神经网络的深层部分,也就是解码部分,往往会存在一部分特征是冗余的,导致神经网络
的计算存在冗余。以分类任务为例,区分特征相差较多的两个类别,比如人和车,神经网络
的编码部分会提取一些初级特征,通过解码部分的特征识别后,某些层的一些通道可能会
生成类似车轮特征,但这些特征对于识别人来说是冗余的。

发明内容

[0004] 针对目前深度学习模型存在的特征冗余导致在边缘计算设备中推理速度不足的问题,本发明提供一种冗余低、速度快、适合边缘计算设备的深度学习模型动态分支选择的
推理方法及系统。
[0005] 本发明采用的技术方案如下:
[0006] 一方面,提供一种深度学习模型动态分支选择的推理方法,包括:
[0007] S101、构建并训练用于图片的语义分类、语义检测或者语义分割的深度学习模型,所述深度学习模型包括编码器、分支选择器以及分别一一对应不同的分支类别的多个解码
分支,所述深度学习模型被训练为:
[0008] 由所述编码器从输入的图片中提取多个初级特征;
[0009] 由所述分支选择器识别并输出初级特征的分支类别;
[0010] 由解码分支通过与分支类别对应的特征权重组对所有初级特征进行处理得到深层特征、对所述深层特征进行识别输出推理结果;
[0011] S102、将所述编码器、分支选择器以及各解码分支的特征权重组部署到边缘计算设备中,在输入推理任务图片后,输出初级特征和分支类别;
[0012] S103、将所述多个解码分支部署到边缘计算设备中,根据步骤S102输出的分支类别选择相应的解码分支,由该解码分支接收步骤S102输出的初级特征,输出推理结果。
[0013] 另一方面,提供一种深度学习模型动态分支选择的推理系统,包括存储模块,所述存储模块包括由处理器加载并执行的指令,所述指令在被执行时使所述处理器执行上述的
一种深度学习模型动态分支选择的推理方法。
[0014] 本发明针对传统深度学习模型推理过程中卷积神经网络在解码部分中的深层特征存在冗余的问题,能够根据初级特征的类别,自动选择相应的解码分支,每个解码分支通
过对应分支类别的初级特征输入以及相应的输出进行训练分别得到不同的特征权重组,能
专注于对应分支类别的初级特征的处理和深层特征的识别以完成更加复杂的分类或者表
征的生成,从而降低计算冗余,提升推理速度,满足边缘计算设备的实际应用需求。

附图说明

[0015] 下面结合附图和具体实施方式对本发明进行详细说明:
[0016] 图1为本发明的流程图;
[0017] 图2为本发明的原理图;
[0018] 图3为本发明的端对端训练的流程图。

具体实施方式

[0019] 如图1以及图2所示,本说明书实施例提供一种深度学习模型动态分支选择的推理方法,包括:
[0020] S101、构建并训练用于图片的语义分类、语义检测或者语义分割的深度学习模型,深度学习模型包括编码器11、分支选择器12以及分别一一对应不同的分支类别的多个解码
分支13,该深度学习模型被训练为:
[0021] 由编码器11从输入的图片中提取多个初级特征(中间特征)。
[0022] 由分支选择器12识别并输出初级特征的分支类别。
[0023] 由解码分支13通过与分支类别对应的特征权重组对所有初级特征进行处理得到深层特征、对深层特征进行识别输出推理结果。
[0024] 其中,分支选择器12也可以认为是一个较小的解码器,如果输入的图片通过编码器11输出的初级特征有较明显区别,分支选择器12就能够识别出初级特征的大致属于哪个
分支类别。
[0025] 每个解码分支13是一个独立的解码器,不同的解码分支13与不同的推理任务一一对应,负责不同的任务输出。这里不同的推理任务可以是多类别分类任务中的子类别集合
中的某类识别,也可以是不同表征形式的任务。区别于传统深度卷积神经网络中的解码器
只有一套特征权重组,本发明中的每个解码分支13通过对应分支类别的初级特征输入以及
相应的输出进行训练分别得到不同的特征权重组,使其在被选择后通过与分支类别对应的
特征权重组,对所有初级特征进行处理得到深层特征、对深层特征进行识别输出推理结果,
由于每个解码分支13分别具有对应分支类别的一套特征权重组,使得每个解码分支能够专
注于处理相应分支类别的初级特征和识别相应分支类别的深层特征,从而减少冗余,提升
推理速度。
[0026] 编码器11采用常用深度卷积神经网络模型的浅层部分的结构,如ResNet网络模型、Inception网络模型或者MobileNet网络模型等的浅层部分的结构,以MobileNet网络模
型为例,浅层部分是指MobileNet的第一层卷积层和前两个尺度的瓶颈结构(bottleneck)。
[0027] 分支选择器12为用于分类的神经网络(分类器),其通过对每个初级特征进行分类,输出与解码分支数量相同的独热编码(one‑hot)矢量,并对该矢量进行取最大值位置操
作(Argmax)得到被选择的解码分支的编号,如输出的矢量为[0,0,1,0,0,0,0,0,0,0],进行
Argmax操作后,得到解码分支的编号为3。分支选择器由全局平均池化层、全连接层、激活层
以及全连接层构成,由最后一个全连接层输出上述矢量并进行Argmax操作。
[0028] 解码分支13采用常用深度卷积网络模型的深层部分的结构,如ResNet网络模型、Inception网络模型或者MobileNet网络模型等的深层部分的结构,比如MobileNet的深层
的瓶颈结构。每个解码分支13的结构可以相同也可以不相同,视任务而定。
[0029] S102、将编码器、分支选择器以及各解码分支的特征权重组部署到边缘计算设备中,在输入推理任务图片后,输出初级特征和分支类别。
[0030] S103、将多个解码分支部署到边缘计算设备中,根据步骤S102输出的分支类别选择相应的解码分支,由该解码分支接收步骤S102输出的初级特征,输出推理结果。
[0031] 在目前的边缘计算设备中部署时,尤其是部署在神经网络计算加速单元时,仅支持预加载好比如卷积层或者全连接层的权重后,然后将权重和输入作矩阵运算得到输出,
不能够直接动态选择权重,只能变通地根据中间输入选择不同分支,故不能将本发明深度
学习模型整体部署在专用加速器上,需要将编码器、分支选择器、解码分支拆分为两个阶段
分别部署。
[0032] 因此,在步骤S102中预加载编码器、分支选择器、各解码分支的特征权重组,其中编码器和分支选择器可以组合为一个初步的分类网络,作为一个整体部署,称为第一阶段,
输出中间特征(初级特征)以及分支选择器的输出类别;步骤S103作为第二阶段部署所有解
码分支。
[0033] 如图2所示,在输入推理任务图片后,在第一阶段会同时输出中间特征以及分支选择的类别x,在第二阶段,根据类别x选择第x个解码分支,由第一阶段产生的中间特征作为
输入,最终得到输出。
[0034] 以复杂多类别分类任务为例,分支选择器对每个初级特征进行识别分类,相当于初步分类,然后由与类别对应的解码分支对所有初级特征进行进一步识别,完成细分类,此
过程能够降低复杂多类别分类任务的冗余,每个解码分支的特征权重组专注于识别所属分
支类别的特征,从而能够在较少权重下得到更精细类别的识别能力。举例来说,如果一个分
类任务需要识别不同种类的车和穿不同衣服的人,分支选择器可以按照人和车对初级特征
进行初步分类,然后分别由精细分类人的解码分支和精细分类车的解码分支分别对所有初
级特征进行进一步的精细分类,识别出穿不同款式的人和不同种类的车。
[0035] 而对于多任务,比如辅助驾驶视觉感知中的前方目标识别任务,并需要输出前方目标的精细特征(通常是不同任务),每个解码分支由分支选择器选择后,负责不同的任务
输出。比如,在辅助驾驶视觉感知中的前方主要目标识别任务中,对于人需要输出人的姿态
关键点,对于车辆则需要输出三维的长宽高等信息。在这个应用场景中,分支选择器识别出
人和车的初级特征,然后分别选择人的解码分支和车的解码分支分别输入所有初级特征,
对应人的解码分支最后输出了人的姿态关键点,对于车辆的解码分支则输出了车辆的三维
立体框。在传统的深度卷积神经网络中,则需要让一个大的解码器通过多次计算,分别得到
不同任务的输出,而每次计算整个解码器都需要参与,所以存在计算冗余。
[0036] 本发明方案在特征上进行冗余优化,但在编码器、分支选择器以及解码分支上的权重仍有可能存在冗余,为了更进一步的加速推理,也可以对编码器、分支选择器以及解码
分支的权重进行剪枝,从而在权重上和特征上双重压缩算力冗余,达到最佳加速效果。
[0037] 在本发明中,可以根据具体推理任务以及多个解码分支的结构,使用端对端或者分步训练策略训练深度学习模型。
[0038] 以视觉分类任务为例,先介绍一种端对端的训练策略,再介绍一种具有针对性的分开训练策略。这两种训练策略的区别在于分支选择器的训练方式:端对端只需要提供训
练样本和对应最终标注,分支选择器能够自动地完成训练;而分开训练策略需要根据具体
任务,额外提供分支选择器的类别标注,分支选择器需要通过监督学习训练,一般流程是第
一阶段先训练编码器和分支选择器的权重,第二阶段固定住编码器权重,单独训练不同的
解码分支的权重,或者加入分支选择器一起训练。
[0039] 一、端对端训练策略。这种训练方式适用于单一形式任务复杂输入场景,比如精细类别分类任务。解码分支之间需要设计为同样的结构。端对端训练时的等价流程图如图3表
示。
[0040] 1、将多个解码分支设计为相同的结构,训练时用组卷积形式等价替代多个解码分支的组合。
[0041] 分支选择器的输出为一个与分支数量相同的矢量,经过一个取最大值位置操作(Argmax),得到一个格式为独热编码(one‑hot)的矢量,定义其形状为(N,n),其中n是解码
器分支数量。n个结构一致的解码分支可以结合为一个大的组合解码器,这个组合解码器的
每一层卷积由n个解码分支对应层的卷积组成,等价于通道数是单个分支对应卷积通道数n
倍的组卷积。组合解码器直接接入编码器输出的中间特征,并输出组合特征,定义其形状为
(N,nxC,H,W),N为批次大小,nxC为中间特征的通道数,对应n组输出特征,其中C为单一分支
的通道数,H,W分别为特征的高宽尺度大小。
[0042] 2、将分支选择器的输出通过复制拓宽后接入在组卷积部分输出处,最后接入最终任务输出部分,从而实现端对端训练。
[0043] 将分支选择器输出的独热矢量进行复制扩宽处理变成形如(N,nxC)的矢量,共n组通道,每组里的C个通道由对应独热编码矢量位置的值复制C遍得到。将复制扩宽处理后的
矢量与组合卷积输出的组合特征在通道上相乘,得到选择后的组合特征,然后通过卷积或
者全连接得到最终输出,训练时由随机小批次梯度回传方法优化该输出与样本标签构成的
损失函数。
[0044] 3、部署时,将组卷积拆分为n个独立的解码分支,然后由分支选择器的输出决定解码分支。该训练方法可以认为是一种动态结构剪枝,能够动态地通过分支选择器输出选择
不同的权重。
[0045] 二、分开训练策略。该策略适用于单一形式任务复杂输入场景以及多形式任务场景,但需要额外的监督信息用来训练分支选择器。
[0046] 1、先将编码器和分支选择器作为整体训练为一个分类器,类别输出与解码分支对应。
[0047] 2、根据训练好的模型权重,将编码器输出的初级特征作为各个解码分支的输入,然后根据推理任务分别训练各个解码分支。
[0048] 3、当上述两个步骤训练收敛完成后,再组合联合训练直至最后模型收敛。
[0049] 对于单一任务复杂输入场景,以精细类别视觉分类任务为例,假设总共有c类精细子类别,而这c类可以归类为n个父类别。编码器和分支选择器组合为一个父类分类器。第一
阶段先只训练父类分类器。第一阶段训练完成后,固定住编码器的权重,根据当前分支选择
器的输出,动态选择对应解码分支,然后优化子类的损失函数,并且同步优化由分支选择器
输出父类损失函数。
[0050] 推广到多形式任务场景时,编码器和分支选择器可以构成初级分类任务,先行训练,然后解码分支可以是不同任务,根据不同分支选择器的输出,选择不同的路径,执行不
同的任务,避免一个大模型耗费冗余计算量完成多形式任务输出。
[0051] 基于同一发明构思,本说明书实施例还提供一种深度学习模型动态分支选择的推理系统,包括存储模块,存储模块包括由处理器加载并执行的指令,指令在被执行时使处理
器执行本说明书上述一种深度学习模型动态分支选择的推理方法部分中描述的根据本发
明各种示例性实施方式的步骤。
[0052] 其中,存储模块可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)和/或高速缓存存储单元,还可以进一步包括只读存储单元(ROM)。
[0053] 可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程
式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算
设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备
上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计
算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网
(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商
来通过因特网连接)。
[0054] 但是,本技术领域中的普通技术人员应当认识到,以上的实施例仅是用来说明本发明,而并非用作为对本发明的限定,只要在本发明的实质精神范围内,对以上所述实施例
的变化、变型都将落在本发明的权利要求书范围内。