CN115018039A - 一种神经网络蒸馏方法、目标检测方法以及装置 - Google Patents
一种神经网络蒸馏方法、目标检测方法以及装置 Download PDFInfo
- Publication number
- CN115018039A CN115018039A CN202110247165.9A CN202110247165A CN115018039A CN 115018039 A CN115018039 A CN 115018039A CN 202110247165 A CN202110247165 A CN 202110247165A CN 115018039 A CN115018039 A CN 115018039A
- Authority
- CN
- China
- Prior art keywords
- model
- network
- student
- student model
- teacher
- 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
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
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
- G06N5/022—Knowledge engineering; Knowledge acquisition
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- General Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Image Analysis (AREA)
Abstract
本申请公开了人工智能领域的神经网络蒸馏方法、目标检测方法以及装置,用于结合结构搜索、剪枝或蒸馏等方式来高效地得到符合需求的轻量化模型,且泛化能力强,用于进行目标检测任务或者分类任务等。该方法包括:首先,获取教师模型和学生模型;对学生模型进行演变,得到演变后的学生模型,其中,该演变包括:根据演变动作对学生模型的结构进行变换,得到演变后的学生模型,演变动作包括增加层、层重排或剪枝中的至少一种,增加层指示在学生模型中增加至少一层网络层,层重排指示对学生模型中的至少一个网络层进行重新排列,剪枝指示减小学生模型的结构;使用教师模型对演变后的学生模型进行蒸馏,得到更新后的学生模型。
Description
技术领域
本申请涉及人工智能领域,尤其涉及一种神经网络蒸馏方法、目标检测方法以及装置。
背景技术
在人工智能领域中,计算机视觉技术在自动驾驶,手机终端及安防监控等场景有着广泛的应用。传统的高层计算机视觉任务的解决方案都是基于手工设定的卷积神经网络,以目标检测为例,特征融合的快速区域卷积神经网络(Faster-RCNN)是应用最广泛的目标检测架构。Faster-RCNN采用残差网络(ResNet)作为主干网络模块,特征金字塔网络(feature pyramid networks,FPN)作为多层次特征抽取模块,最后经过前面模块提取的特征输入检测任务相关的头部网络(Head)模块中得到预测结果。通过根据人工过往的经验和具体任务需求设计了ResNet、FPN、Head网络的深度(层数)、宽度(通道数)以及连接关系。因此,在不同的场景可能需要人工设计不同的神经网络,泛化能力弱。
发明内容
本申请提供了一种神经网络蒸馏方法、目标检测方法以及装置,用于结合结构搜索、剪枝或蒸馏等方式来高效地得到符合需求的模型,且泛化能力强。
有鉴于此,第一方面,本申请提供一种神经网络蒸馏方法,包括:首先获取初始的教师模型和第一学生模型,且教师模型的输出精度高于第一学生模型的输出精度;随后对第一学生模型进行演变,得到演变后的第一学生模型,其中,该演变的过程可以包括:根据演变动作对第一学生模型的结构进行变换,得到演变后的第一学生模型,该演变动作可以包括增加层、层重排或剪枝中的至少一种,增加层指示在第一学生模型中增加至少一层网络层,层重排指示对第一学生模型中的至少一个网络层进行重新排列,剪枝指示减小第一学生模型的结构;使用教师模型对演变后的第一学生模型进行蒸馏,得到更新后的第一学生模型;若更新后的第一学生模型符合预设条件,则将更新后的第一学生模型作为目标模型,目标模型用于执行预设任务。
因此,本申请实施方式中,结合了结构搜索、剪枝和蒸馏等方式,快速对教师模型或者学生模型进行变形,提高改变模型的效率,可以更高效地找到更优的轻量化的学生模型,且使用了训练好的教师模型对学生模型进行知识蒸馏,快速完成对学生模型的训练,进而提高得到最终的输出模型的效率。并且,可以通过提高教师模型的输出精度的方式,来提高学生模型的输出精度。在一种可能的实施方式中,若更新后的第一学生模型不符合预设条件,则获取第二学生模型,对第二学生模型进行演变,使用教师模型或者新的教师模型对演变后的第二学生模型进行蒸馏,得到再次更新后的第二学生模型。并且,在各种场景中,如图像分割、目标检测或者分类等,都可以通过本申请提供的方式,即通过结构搜索或剪枝得到大量不同结构的模型,然后可以通过蒸馏的方式提高模型的输出精度,从而可以筛选出最优的学生模型,即泛化能力强,可以适应各种场景。
因此,在本申请实施方式中,若未得到符合预设条件的学生模型,则可以重复执行演变和蒸馏的步骤,直到得到符合预设条件的学生模型。
在一种可能的实施方式中,上述的获取教师模型和第一学生模型,可以包括:根据模型对列表得到教师模型和第一学生模型,模型对列表中包括至少一对模型对,每对模型对包括一个教师模型的结构和一个第一学生模型的结构。
本申请实施方式中,可以通过设置模型对列表的方式来选择初始的教师模型和学生模型。从而可以从该模型对列表中选择表现较好的模型对作为初始的教师模型对,以提高学生模型的收敛速度,提高得到符合预设条件的学生模型的效率。
在一种可能的实施方式中,上述方法还可以包括:若更新后的第一学生模型不符合预设条件,则将教师模型和更新后的第一学生模型作为一对模型对增加至模型对列表中。
本申请实施方式中,若蒸馏得到的第一学生模型不符合预设条件,则将教师模型和蒸馏后的第一学生模型的结构加入模型对列表中,以使下次选择初始化的教师模型和第一学生模型时,可以参考该模型对列表中所包括的模型对,选择表现较好的模型对进行进一步的演变和蒸馏,从而提高得到目标模型的效率。
在一种可能的实施方式中,从模型对列表中采样,可以包括:从模型对列表中采集评估结果高于预设结果的模型对;根据模型对的结构得到教师模型和第一学生模型。
本申请实施方式中,在选择初始化的教师模型和第一学生模型时,可以参考该模型对列表中所包括的模型对,选择表现较好的模型对进行进一步的演变和蒸馏,从而提高得到目标模型的效率。
在一种可能的实施方式中,上述方法还可以包括:构建超网络,超网络中包括多个子网络,其中每个子网络包括至少一层网络层,每层网络层包括至少一个基本单元;使用训练集对超网络进行至少一次训练,得到训练后的超网络,即训练后的多个子网络,前述的教师模型可以是从超网络中采集得到。
本申请实施方式中,可以提前训练大规模的超网络作为教师模型池,以便于在获知教师模型的结构之后,可以从该超网络中采集训练好的教师模型,提高获取到教师模型的效率。
在一种可能的实施方式中,至少一次训练中的任意一次训练,可以包括:从超网络采集至少一个子网络;对该至少一个子网络进行训练,得到训练后的超网络。
因此,本申请实施方式中,在对超网络进行训练的过程中,可以对超网络中的子网络进行训练,从而使超网络中各个部分的子网络都可以具有较优的输出。
在一种可能的实施方式中,从超网络中进行至少一次采样,可以包括:从结构采样空间中采集结构参数,结构采样空间包括以下一种或者多种:深度范围、宽度范围或卷积核大小范围,宽度范围为采样得到的子网络包括的基本单元的输入通道和输出通道的数量的范围,深度范围为采样得到的子网络中网络层的数量的范围,卷积核大小范围包括采样得到的子网络中的卷积核的大小的范围;根据结构参数从超网络中采集得到子网络。
因此,本申请实施方式中,可以从深度、宽度或者卷积核大小等维度来进行采样,从而从不同维度对超网络中的子网络进行训练,更全面地完成对超网络的训练,得到输出精度更高的超网络。
在一种可能的实施方式中,至少一次迭代训练中的每次训练过程中从结构采样空间中采集结构参数的类型不超过两种;至少一个子网络中包括第一子网络和第二子网络,第一子网络的结构大于第二子网络的结构,第一子网络在第二子网络之前被训练,也可以理解为,第一次采样得到的子网络的结构大于第二次中采样得到的子网络的结构,第一次采样得到的子网络先于第二次采样得到的子网络之前被训练。
因此,在本申请实施方式中,可以采用渐进式收缩的方式来采集子网络,逐渐完成对超网络中的子网络的训练。
在一种可能的实施方式中,在对第一学生模型进行至少一次演变的过程中,演变后的第一学生模型中结构被改变的网络层的参数,为继承演变前的第一学生模型中对应的网络层的参数得到。
因此,本申请实施方式中,演变后的第一学生模型中的结构被改变的网络层,可以继承改变前的网络层的参数,可以在更优的参数的基础上来进行后续的蒸馏,提高第一学生模型的收敛速度。
在一种可能的实施方式中,预设条件包括以下一项或多项:输出精度大于第一阈值,或者,平均精度大于第二阈值,或者,损失值不大于第三阈值,或者,推理时长不大于第四阈值,或者,浮点运算次数FLOPs不大于第五阈值,或者,综合评分大于第六阈值,平均精度为对更新后的第一学生模型进行多次评估得到的多个精度的平均值,推理时长为从神经网络根据输入得到输出结果的时长,综合评分为对输出精度、平均精度、损失值、推理时长或FLOPs中的至少两项进行加权运算得到。
在一种可能的实施方式中,第一学生模型用于执行目标检测任务。
在一种可能的实施方式中,使用教师模型对演变后的第一学生模型进行蒸馏,可以包括:使用训练集通过教师模型对演变后的第一学生模型进行蒸馏,得到更新后的第一学生模型,得到更新后的第一学生模型,训练集中包括至少一个图像样本,更新后的第一学生模型用于进行目标检测任务、分类任务或分割任务中的至少一种。
因此,本申请实施方式中,可以使用图像样本来进行蒸馏,得到更新后的第一学生模型,从而使更新后的学生模型可以用于进行目标检测任务、分类任务或者分割任务等图像处理任务,适用于各种图像处理的场景中。
第二方面,本申请提供一种目标检测方法,包括:获取输入图像;将输入图像作为目标模型的输入,输出输入图像中所包括的对象的信息,目标模型是使用教师模型对学生模型进行知识蒸馏得到的更新后的学生模型,其中,在使用教师模型对学生模型进行知识蒸馏的过程中,对学生模型进行至少一次演变,得到演变后的学生模型,使用教师模型对演变后的学生模型进行知识蒸馏,得到更新后的学生模型,至少一次演变中的任意一次演变包括:根据演变动作对学生模型的结构进行变换,得到演变后的学生模型,该演变动作可以包括增加层、层重排或剪枝中的至少一种,增加层指示在学生模型中增加至少一层网络层,层重排指示对学生模型中的至少一个网络层进行重新排列,剪枝指示减小学生模型的结构。
因此,在本申请实施方式中,结合了结构搜索、剪枝和蒸馏等方式,快速对教师模型或者学生模型进行变形,提高改变模型的效率,且使用了训练好的教师模型对学生模型进行知识蒸馏,快速完成对学生模型的训练,并将学生模型应用在图像处理中,输出输入图像中所包括的对象的信息。
在一种可能的实施方式中,输入图像中包括的对象的信息包括:对象的类别和/或对象在输入图像中的位置。
在一种可能的实施方式中,若更新后的第一学生模型不符合预设条件,则获取第二学生模型,对第二学生模型进行至少一次演变,使用教师模型或者新的教师模型对演变后的第二学生模型进行蒸馏,得到再次更新后的第二学生模型。
因此,在本申请实施方式中,若未得到符合预设条件的学生模型,则可以重复执行演变和蒸馏的步骤,直到得到符合预设条件的学生模型。
在一种可能的实施方式中,上述的获取教师模型和第一学生模型,可以包括:根据模型对列表得到教师模型和第一学生模型,模型对列表中包括至少一对模型对,每对模型对包括一个教师模型的结构和一个第一学生模型的结构。
本申请实施方式中,可以通过设置模型对列表的方式来选择初始的教师模型和学生模型。从而可以从该模型对列表中选择表现较好的模型对作为初始的教师模型对,以提高学生模型的收敛速度,提高得到符合预设条件的学生模型的效率。
在一种可能的实施方式中,上述方法还可以包括:若更新后的第一学生模型不符合预设条件,则将教师模型和更新后的第一学生模型作为一对模型对增加至模型对列表中。
本申请实施方式中,若蒸馏得到的第一学生模型不符合预设条件,则将教师模型和蒸馏后的第一学生模型的结构加入模型对列表中,以使下次选择初始化的教师模型和第一学生模型时,可以参考该模型对列表中所包括的模型对,选择表现较好的模型对进行进一步的演变和蒸馏,从而提高得到目标模型的效率。
在一种可能的实施方式中,从模型对列表中采样,可以包括:从模型对列表中采集评估结果高于预设结果的模型对;根据模型对的结构得到教师模型和第一学生模型。
本申请实施方式中,在选择初始化的教师模型和第一学生模型时,可以参考该模型对列表中所包括的模型对,选择表现较好的模型对进行进一步的演变和蒸馏,从而提高得到目标模型的效率。
在一种可能的实施方式中,上述方法还可以包括:构建超网络,超网络中包括多个子网络,其中每个子网络包括至少一层网络层,每层网络层包括至少一个基本单元;使用训练集对超网络进行至少一次训练,得到训练后的超网络,即训练后的多个子网络,前述的教师模型可以是从超网络中采集得到。
本申请实施方式中,可以提前训练大规模的超网络作为教师模型池,以便于在获知教师模型的结构之后,可以从该超网络中采集训练好的教师模型,提高获取到教师模型的效率。
在一种可能的实施方式中,至少一次训练中的任意一次训练,可以包括:从超网络采集至少一个子网络;对该至少一个子网络进行训练,得到训练后的超网络。
因此,本申请实施方式中,在对超网络进行训练的过程中,可以对超网络中的子网络进行训练,从而使超网络中各个部分的子网络都可以具有较优的输出。
在一种可能的实施方式中,从超网络中进行至少一次采样,可以包括:从结构采样空间中采集结构参数,结构采样空间包括以下一种或者多种:深度范围、宽度范围或卷积核大小范围,宽度范围为采样得到的子网络包括的基本单元的输入通道和输出通道的数量的范围,深度范围为采样得到的子网络中网络层的数量的范围,卷积核大小范围包括采样得到的子网络中的卷积核的大小的范围;根据结构参数从超网络中采集得到子网络。
因此,本申请实施方式中,可以从深度、宽度或者卷积核大小等维度来进行采样,从而从不同维度对超网络中的子网络进行训练,更全面地完成对超网络的训练,得到输出精度更高的超网络。
在一种可能的实施方式中,至少一次迭代训练中的每次训练过程中从结构采样空间中采集结构参数的类型不超过两种;所述至少一个子网络中包括第一子网络和第二子网络,第一子网络的结构大于第二子网络的结构,所述第一子网络在所述第二子网络之前被训练。
因此,在本申请实施方式中,可以采用渐进式收缩的方式来采集子网络,逐渐完成对超网络中的子网络的训练。
在一种可能的实施方式中,在对第一学生模型进行至少一次演变的过程中,演变后的第一学生模型中结构被改变的网络层的参数,为继承演变前的第一学生模型中对应的网络层的参数得到。
因此,本申请实施方式中,演变后的第一学生模型中的结构被改变的网络层,可以继承改变前的网络层的参数,可以在更优的参数的基础上来进行后续的蒸馏,提高第一学生模型的收敛速度。
在一种可能的实施方式中,预设条件包括以下一项或多项:输出精度大于第一阈值,或者,平均精度大于第二阈值,或者,损失值不大于第三阈值,或者,推理时长不大于第四阈值,或者,浮点运算次数FLOPs不大于第五阈值,或者,综合评分大于第六阈值,平均精度为对更新后的第一学生模型进行多次评估得到的多个精度的平均值,推理时长为从神经网络根据输入得到输出结果的时长,综合评分为对输出精度、平均精度、损失值、推理时长或FLOPs中的至少两项进行加权运算得到。
第三方面,本申请实施例提供一种神经网络蒸馏装置,该神经网络蒸馏装置具有实现上述第一方面神经网络蒸馏方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
第四方面,本申请实施例提供一种目标检测装置,该目标检测装置具有实现上述第二方面目标检测方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
第五方面,本申请实施例提供一种神经网络蒸馏装置,包括:处理器和存储器,其中,处理器和存储器通过线路互联,处理器调用存储器中的程序代码用于执行上述第一方面任一项所示的神经网络蒸馏方法中与处理相关的功能。可选地,该神经网络蒸馏装置可以是芯片。
第六方面,本申请实施例提供一种目标检测装置,包括:处理器和存储器,其中,处理器和存储器通过线路互联,处理器调用存储器中的程序代码用于执行上述第二方面任一项所示的目标检测方法中与处理相关的功能。可选地,该目标检测装置可以是芯片。
第七方面,本申请实施例提供了一种神经网络蒸馏装置,该目标检测装置也可以称为数字处理芯片或者芯片,芯片包括处理单元和通信接口,处理单元通过通信接口获取程序指令,程序指令被处理单元执行,处理单元用于执行如上述第一方面或第一方面任一可选实施方式中与处理相关的功能。
第八方面,本申请实施例提供了一种目标检测装置,该目标检测装置也可以称为数字处理芯片或者芯片,芯片包括处理单元和通信接口,处理单元通过通信接口获取程序指令,程序指令被处理单元执行,处理单元用于执行如上述第二方面或第二方面任一可选实施方式中与处理相关的功能。
第九方面,本申请实施例提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述第一方面或第二方面中任一可选实施方式中的方法。
第十方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或第二方面中任一可选实施方式中的方法。
附图说明
图1为本申请应用的一种人工智能主体框架示意图;
图2为本申请提供的一种系统架构示意图;
图3为本申请实施例提供的一种卷积神经网络结构示意图;
图4为本申请实施例提供的另一种卷积神经网络结构示意图;
图5为本申请提供的另一种系统架构示意图;
图6为本申请实施例提供的一种神经网络蒸馏方法的流程示意图;
图7为本申请实施例提供的另一种神经网络蒸馏方法的流程示意图;
图8为本申请实施例提供的另一种神经网络蒸馏方法的流程示意图;
图9为本申请实施例提供的一种超网络的结构示意图;
图10为本申请实施例提供的一种构建单元的结构示意图;
图11为本申请实施例提供的一种子网络的结构示意图;
图12为本申请实施例提供的另一种神经网络蒸馏方法的流程示意图;
图13为本申请实施例提供的一种模型演变方式示意图;
图14为本申请实施例提供的另一种模型演变方式示意图;
图15为本申请实施例提供的一种学生模型的结构示意图;
图16为本申请实施例提供的另一种模型演变方式示意图;
图17为本申请实施例提供的另一种模型演变方式示意图;
图18为本申请实施例提供的另一种模型演变方式示意图;
图19为本申请实施例提供的另一种模型演变方式示意图;
图20为本申请实施例提供的另一种神经网络蒸馏方法的流程示意图;
图21为本申请实施例提供的一种目标检测方法的流程示意图;
图22为本申请实施例提供的学生模型的输出效果示意图;
图23为本申请实施例提供的一种神经网络蒸馏装置的结构示意图;
图24为本申请实施例提供的一种目标检测装置的结构示意图;
图25为本申请实施例提供的另一种神经网络蒸馏装置的结构示意图;
图26为本申请实施例提供的一种芯片的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请提供的神经网络蒸馏方法可以应用于人工智能(artificialintelligence,AI)场景中。AI是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,AI基础理论等。
图1示出一种人工智能主体框架示意图,该主体框架描述了人工智能系统总体工作流程,适用于通用的人工智能领域需求。
下面从“智能信息链”(水平轴)和“IT价值链”(垂直轴)两个维度对上述人工智能主题框架进行阐述。
“智能信息链”反映从数据的获取到处理的一列过程。举例来说,可以是智能信息感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在这个过程中,数据经历了“数据—信息—知识—智慧”的凝练过程。
“IT价值链”从人智能的底层基础设施、信息(提供和处理技术实现)到系统的产业生态过程,反映人工智能为信息技术产业带来的价值。
(1)基础设施:
基础设施为人工智能系统提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。通过传感器与外部沟通;计算能力由智能芯片,如中央处理器(centralprocessing unit,CPU)、网络处理器(neural-network processing unit,NPU)、图形处理器(英语:graphics processing unit,GPU)、专用集成电路(application specificintegrated circuit,ASIC)或现场可编程逻辑门阵列(field programmable gate array,FPGA)等硬件加速芯片)提供;基础平台包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储和计算、互联互通网络等。举例来说,传感器和外部沟通获取数据,这些数据提供给基础平台提供的分布式计算系统中的智能芯片进行计算。
(2)数据
基础设施的上一层的数据用于表示人工智能领域的数据来源。数据涉及到图形、图像、语音、视频、文本,还涉及到传统设备的物联网数据,包括已有系统的业务数据以及力、位移、液位、温度、湿度等感知数据。
(3)数据处理
数据处理通常包括数据训练,机器学习,深度学习,搜索,推理,决策等方式。
其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等。
推理是指在计算机或智能系统中,模拟人类的智能推理方式,依据推理控制策略,利用形式化的信息进行机器思维和求解问题的过程,典型的功能是搜索与匹配。
决策是指智能信息经过推理后进行决策的过程,通常提供分类、排序、预测等功能。
(4)通用能力
对数据经过上面提到的数据处理后,进一步基于数据处理的结果可以形成一些通用的能力,比如可以是算法或者一个通用系统,例如,翻译,文本的分析,计算机视觉的处理(如图像识别、目标检测等),语音识别等等。
(5)智能产品及行业应用
智能产品及行业应用指人工智能系统在各领域的产品和应用,是对人工智能整体解决方案的封装,将智能信息决策产品化、实现落地应用,其应用领域主要包括:智能制造、智能交通、智能家居、智能医疗、智能安防、自动驾驶,平安城市,智能终端等。
参见附图2,本申请实施例提供了一种系统架构200。该系统架构中包括数据库230、客户设备240。数据采集设备260用于采集数据并存入数据库230,训练模块202基于数据库230中维护的数据生成目标模型/规则201。下面将更详细地描述训练模块202如何基于数据得到目标模型/规则201,目标模型/规则201即本申请以下实施方式中训练得到的神经网络,具体参阅以下图6-图22中的相关描述。
计算模块可以包括训练模块202,训练模块202输出的目标模型/规则可以应用不同的系统或设备中。在附图2中,执行设备210配置收发器212,该收发器212可以是无线收发器、光收发器或有线接口(如I/O接口)等,与外部设备进行数据交互,“用户”可以通过客户设备240向收发器212输入数据,例如,本申请以下实施方式,客户设备240可以向执行设备210发送目标任务,请求执行设备构建神经网络,并向执行设备210发送用于训练的数据库。
执行设备210可以调用数据存储系统250中的数据、代码等,也可以将数据、指令等存入数据存储系统250中。
计算模块211使用目标模型/规则201对输入的数据进行处理。具体地,计算模块211用于:首先,获取教师模型和学生模型;对学生模型进行演变,得到演变后的学生模型,其中,演变包括:根据演变动作对学生模型的结构进行变换,得到演变后的学生模型,演变动作包括增加层、层重排或剪枝中的至少一种,增加层指示在学生模型中增加至少一层网络层,层重排指示对学生模型中的至少一个网络层进行重新排列,剪枝指示减小学生模型的结构;使用教师模型对演变后的学生模型进行蒸馏,得到更新后的学生模型。
最后,收发器212将构建得到的神经网络返回给客户设备240,以在客户设备240或者其他设备中部署该神经网络。
更深层地,训练模块202可以针对不同的任务,基于不同的数据得到相应的目标模型/规则201,以给用户提供更佳的结果。
在附图2中所示情况下,可以根据用户的输入数据确定输入执行设备210中的数据,例如,用户可以在收发器212提供的界面中操作。另一种情况下,客户设备240可以自动地向收发器212输入数据并获得结果,若客户设备240自动输入数据需要获得用户的授权,用户可以在客户设备240中设置相应权限。用户可以在客户设备240查看执行设备210输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。客户设备240也可以作为数据采集端将采集到与目标任务关联的数据存入数据库230。
需要说明的是,附图2仅是本申请实施例提供的一种系统架构的示例性的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制。例如,在附图2中,数据存储系统250相对执行设备210是外部存储器,在其它场景中,也可以将数据存储系统250置于执行设备210中。
在本申请所提及的构建、蒸馏或者更新过程可以由训练模块202来执行。可以理解的是,神经网络的训练过程即学习控制空间变换的方式,更具体即学习权重矩阵。训练神经网络的目的是使神经网络的输出尽可能接近期望值,因此可以通过比较当前网络的预测值和期望值,再根据两者之间的差异情况来更新神经网络中的每一层神经网络的权重向量(当然,在第一次更新之前通常可以先对权重向量进行初始化,即为深度神经网络中的各层预先配置参数)。例如,如果网络的预测值过高,则调整权重矩阵中的权重的值从而降低预测值,经过不断的调整,直到神经网络输出的值接近期望值或者等于期望值。具体地,可以通过损失函数(loss function)或目标函数(objective function)来衡量神经网络的预测值和期望值之间的差异。以损失函数举例,损失函数的输出值(loss)越高表示差异越大,神经网络的训练可以理解为尽可能缩小loss的过程。本申请以下实施方式中更新起点网络的权重以及对串行网络进行训练的过程可以参阅此过程,以下不再赘述。
如图2所示,根据训练模块202训练得到目标模型/规则201,该目标模型/规则201在本申请实施例中可以是本申请中所提及的学生模型。当然,在训练教师模型的阶段,该目标模型/规则201也可以理解为训练后的学生模型。
本申请提及的神经网络(如教师模型或者学生模型)可以包括多种类型,如深度神经网络(deep neural network,DNN)、卷积神经网络(convolutional neural network,CNN)、循环神经网络(recurrent neural networks,RNN)、残差网络或其他神经网络等。
本申请以下提及的神经网络,可以是通过搜索网络结构、对网络层的基本单元进行重排或者对网络层中的结构进行剪枝等操作得到的神经网络。示例性地,下面以卷积神经网络(convolutional neural network,CNN)为例对本申请提供的神经网络进行示例性介绍。
CNN是一种带有卷积结构的深度神经网络。CNN是一种深度学习(deep learning)架构,深度学习架构是指通过机器学习的算法,在不同的抽象层级上进行多个层次的学习。作为一种深度学习架构,CNN是一种前馈(feed-forward)人工神经网络,该前馈人工神经网络中的各个神经元对输入其中的图像中的重叠区域作出响应。卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。该特征抽取器可以看作是滤波器,卷积过程可以看作是使用一个可训练的滤波器与一个输入的图像或者卷积特征平面(feature map)做卷积。卷积层是指卷积神经网络中对输入信号进行卷积处理的神经元层。在卷积神经网络的卷积层中,一个神经元可以只与部分邻层神经元连接。一个卷积层中,通常包含若干个特征平面,每个特征平面可以由一些矩形排列的神经单元组成。同一特征平面的神经单元共享权重,这里共享的权重就是卷积核。共享权重可以理解为提取图像信息的方式与位置无关。这其中隐含的原理是:图像的某一部分的统计信息与其他部分是一样的。即意味着在某一部分学习的图像信息也能用在另一部分上。所以对于图像上的所有位置,都可以使用同样的学习得到的图像信息。在同一卷积层中,可以使用多个卷积核来提取不同的图像信息,一般地,卷积核数量越多,卷积操作反映的图像信息越丰富。
卷积核可以以随机大小的矩阵的形式初始化,在卷积神经网络的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。
卷积神经网络可以采用误差反向传播(back propagation,BP)算法在训练过程中修正初始的模型中参数的大小,使得模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的超分辨率模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的模型的参数,例如权重矩阵。
如图3所示,卷积神经网络(CNN)100可以包括输入层110,卷积层/池化层120,其中池化层为可选的,以及神经网络层130。
如图3所示卷积层/池化层120可以包括如示例121-126层,在一种实施方式中,121层为卷积层,122层为池化层,123层为卷积层,124层为池化层,125为卷积层,126为池化层;在另一种实现方式中,121、122为卷积层,123为池化层,124、125为卷积层,126为池化层。即卷积层的输出可以作为随后的池化层的输入,也可以作为另一个卷积层的输入以继续进行卷积操作。
以卷积层121为例,卷积层121可以包括很多个卷积算子,卷积算子也称为核,其在图像处理中的作用相当于一个从输入图像矩阵中提取特定信息的过滤器,卷积算子本质上可以是一个权重矩阵,这个权重矩阵通常被预先定义。在对图像进行卷积操作的过程中,权重矩阵通常在输入图像上沿着水平方向一个像素接着一个像素(或两个像素接着两个像素……这取决于步长stride的取值)的进行处理,从而完成从图像中提取特定特征的工作。该权重矩阵的大小应该与图像的大小相关。需要注意的是,权重矩阵的纵深维度(depthdimension)和输入图像的纵深维度是相同的,在进行卷积运算的过程中,权重矩阵会延伸到输入图像的整个深度。因此,和一个单一的权重矩阵进行卷积会产生一个单一纵深维度的卷积化输出,但是大多数情况下不使用单一权重矩阵,而是应用维度相同的多个权重矩阵。每个权重矩阵的输出被堆叠起来形成卷积图像的纵深维度。不同的权重矩阵可以用来提取图像中不同的特征,例如一个权重矩阵用来提取图像边缘信息,另一个权重矩阵用来提取图像的特定颜色,又一个权重矩阵用来对图像中不需要的噪点进行模糊化等。该多个权重矩阵维度相同,经过该多个维度相同的权重矩阵提取后的特征图维度也相同,再将提取到的多个维度相同的特征图合并形成卷积运算的输出。
通常,权重矩阵中的权重值在实际应用中需要经过大量的训练得到,通过训练得到的权重值形成的各个权重矩阵可以从输入图像中提取信息,从而帮助卷积神经网络100进行正确的预测。
当卷积神经网络100有多个卷积层时,初始的卷积层(例如121)往往提取较多的一般特征,该一般特征也可以称之为低级别的特征;随着卷积神经网络100深度的加深,越往后的卷积层(例如126)提取到的特征越来越复杂,比如高级别的语义之类的特征,语义越高的特征越适用于待解决的问题。
池化层:
由于常常需要减少训练参数的数量,因此卷积层之后常常需要周期性的引入池化层,即如图3中120所示例的121-126各层,可以是一层卷积层后面跟一层池化层,也可以是多层卷积层后面接一层或多层池化层。在图像处理过程中,池化层的唯一目的就是减少图像的空间大小。池化层可以包括平均池化算子和/或最大池化算子,以用于对输入图像进行采样得到较小尺寸的图像。平均池化算子可以在特定范围内对图像中的像素值进行计算产生平均值。最大池化算子可以在特定范围内取该范围内值最大的像素作为最大池化的结果。另外,与卷积层中用权重矩阵的大小应该与图像大小相关类似地,池化层中的运算符也应该与图像的大小相关。通过池化层处理后输出的图像尺寸可以小于输入池化层的图像的尺寸,池化层输出的图像中每个像素点表示输入池化层的图像的对应子区域的平均值或最大值。
神经网络层130:
在经过卷积层/池化层120的处理后,卷积神经网络100还不足以输出所需要的输出信息。因为如前所述,卷积层/池化层120只会提取特征,并减少输入图像带来的参数。然而为了生成最终的输出信息(所需要的类信息或别的相关信息),卷积神经网络100需要利用神经网络层130来生成一个或者一组所需要的类的数量的输出。因此,在神经网络层130中可以包括多层隐含层(如图3所示的131、132至13n)以及输出层140。在本申请中,该卷积神经网络为:对选取的起点网络进行至少一次变形得到串行网络,然后根据训练后的串行网络得到。该卷积神经网络可以用于目标检测、图像识别或图像分类等等。
在神经网络层130中的多层隐含层之后,也就是整个卷积神经网络100的最后层为输出层140,该输出层140具有类似分类交叉熵的损失函数,具体用于计算预测误差,一旦整个卷积神经网络100的前向传播(如图3由110至140的传播为前向传播)完成,反向传播(如图3由140至110的传播为反向传播)就会开始更新前面提到的各层的权重值以及偏差,以减少卷积神经网络100的损失及卷积神经网络100通过输出层输出的结果和理想结果之间的误差。
需要说明的是,如图3所示的卷积神经网络100仅作为一种卷积神经网络的示例,在具体的应用中,卷积神经网络还可以以其他网络模型的形式存在,例如,如图4所示的多个卷积层/池化层并行,将分别提取的特征均输入给全神经网络层130进行处理。
参见附图5,本申请实施例还提供了一种系统架构300。执行设备210由一个或多个服务器实现,可选的,与其它计算设备配合,例如:数据存储、路由器、负载均衡器等设备;执行设备210可以布置在一个物理站点上,或者分布在多个物理站点上。执行设备210可以使用数据存储系统250中的数据,或者调用数据存储系统250中的程序代码实现本申请以下图6-图21对应的神经网络蒸馏方法的步骤。
用户可以操作各自的用户设备(例如本地设备301和本地设备302)与执行设备210进行交互。每个本地设备可以表示任何计算设备,例如个人计算机、计算机工作站、智能手机、平板电脑、智能摄像头、智能汽车或其他类型蜂窝电话、媒体消费设备、可穿戴设备、机顶盒、游戏机等。
每个用户的本地设备可以通过任何通信机制/通信标准的通信网络与执行设备210进行交互,通信网络可以是广域网、局域网、点对点连接等方式,或它们的任意组合。具体地,该通信网络可以包括无线网络、有线网络或者无线网络与有线网络的组合等。该无线网络包括但不限于:第五代移动通信技术(5th-Generation,5G)系统,长期演进(long termevolution,LTE)系统、全球移动通信系统(global system for mobile communication,GSM)或码分多址(code division multiple access,CDMA)网络、宽带码分多址(widebandcode division multiple access,WCDMA)网络、无线保真(wireless fidelity,WiFi)、蓝牙(bluetooth)、紫蜂协议(Zigbee)、射频识别技术(radio frequency identification,RFID)、远程(Long Range,Lora)无线通信、近距离无线通信(near field communication,NFC)中的任意一种或多种的组合。该有线网络可以包括光纤通信网络或同轴电缆组成的网络等。
在另一种实现中,执行设备210的一个方面或多个方面可以由每个本地设备实现,例如,本地设备301可以为执行设备210提供本地数据或反馈计算结果。
需要注意的,执行设备210的所有功能也可以由本地设备实现。例如,本地设备301实现执行设备210的功能并为自己的用户提供服务,或者为本地设备302的用户提供服务。
基于前述图1-图5提供的系统架构或者神经网络,下面对本申请提供的神经网络蒸馏方法进行详细介绍。
首先,为便于理解,对本申请实施例中涉及的一些名词进行解释。
主干网络(Backbone):在检测器、分割器或分类器等中用来对输入信息做特征提取的网络结构。通常,在神经网络中,除了主干网络之外,还可以包括其他的功能性网络,如区域生成网络(region proposal network,RPN)、特征金字塔网络(feature Pyramidnetwork,FPN)等网络,用于对主干网络提取到的特征进行进一步处理,如识别特征的分类、对特征进行语义分割等。
残差网络(Residual Networks,ResNet):一种卷积神经网络。在图像识别中,相比于传统的卷积神经网络识别准确率更高。在残差网络设计中,会很多结构相同的子模块,通常用ResNet连接一个数字表示子模块重复的次数,比如ResNet50表示其中有50个子模块。本申请所提及的学生模型或者教师模型的主干网络即可以为残差网络。
基本单元(block):通常基本单元由卷积层组成,或者,一个基本单元可以理解为一个卷积模组。例如,该基本单元可以是一个卷积模组,由一个或者多个卷积核组成。基本单元可以分为基础单元(basic block,BB)、瓶颈单元(bottle neck block,BNB)以及瓶颈分组(ResNeXt)单元等。
平均精确度(average precision,AP):评价检测模型性能的通用指标。即对模型的多个输出精度计算平均值得到。
模型浮点操作数(FLOPs):模型在处理一张指定大小的图片时所涉及的浮点运算数目,可以用于衡量模型的复杂度。
模型推理速度(Inference time,FPS):在单卡模式下,模型每秒能够处理的图片帧数。
其次,本申请提供的神经网络蒸馏方法可以应用于各种构建和训练神经网络的场景,下面示例性地,以一些实际场景为例对本申请提供的神经网络蒸馏方法的应用场景进行示例性说明,但并不作为限定。
场景一、无人车感知系统中的目标检测
无人车感知系统中的目标检测包括行人、车辆、交通标志、车道线检测等,除了要求检测网络有很高的准确度来保证驾驶中的安全之外,也要求网络有足够快的响应速度以保证对车辆的精准控制,同样对于嵌入式系统的部署,还需要保证小的模型尺寸和较高的能源利用效率。通过本申请提供的方法可以根据具体的不同检测数据和待部署平台对网络的要求,端到端的搜索高精度高效率的神经网络模型。
场景二、云平台万物检测
目标检测是云平台上需求最大的业务,面对用户新提交的业务数据集或者业务数据更新,快速搜索出高效的网络结构完成业务交付。
参阅图6,本申请提供的一种神经网络蒸馏方法的流程示意图,如下所述。
601、获取教师模型和学生模型。
其中,教师模型的输出精度高于学生模型。为便于区分,以下将演变前的学生模型称为初始模型(或者也可以称为第一学生模型)。
该教师模型和初始模型可以预先设定的网络结构,也可以是从模型对列表中选择的模型结构。
在一种可能的实施方式中,可以构建超网络,该超网络中可以包括一个或者多个子网络,每个子网络包括一层或者多层网络层,每层网络层由一个或者多个基本单元组成,且该超网络为训练后的网络。该教师模型可以是从该超网络中提取到的子网络或者该教师模型可以是该超网络。
可选地,在训练超网络时,可以直接使用样本集对整个超网络进行训练,为了进一步提高超网络的输出精度,还可以采集超网络中的子网络,对子网络进行训练,从而得到训练后的超网络。
在从超网络中采集子网络时,可以从各个维度来进行采样。
具体地,可以从结构采样空间中采集结构参数,然后根据结构参数从超网络中提取相应的子网络并进行迭代训练。该结构采样空间中可以包括多种结构参数,如深度范围、宽度范围、卷积核大小等,深度范围即采样出的子网络的深度,即网络层的数量的范围,宽度范围即采样出的子网络的宽度,即基本单元的输入通道和输出通道的数量的范围,卷积核大小范围即采样出的子网络中的卷积核的大小的范围。因此,本申请实施方式中,可以从各个维度来采样子网络,充分采集到各个维度的子网络,从而使各个深度、宽度和卷积核大小的子网络都可以被训练,提高超网络的输出精度。
可选地,在训练超网络时,可以采用渐进收缩的方式来训练。具体地,在每一次从超网络中采样子网络进行训练的过程中,可以采用渐进收缩的方式,从超网络开始训练,即首先采样整个超网络,然后在各个维度中逐渐采集结构更小的子网络来进行训练。
例如,对超网络的训练可以分为多个阶段,每个阶段对应的结构采样空间中可以包括一种类型的结构参数。例如,阶段一可以直接对超网络的整个网络进行训练,阶段二的结构采样空间中可以包括深度范围,阶段三的结构采样空间中可以包括宽度范围,阶段四的结构采样空间中可以包括深度范围和宽度范围,阶段五的结构采样空间中可以包括卷积核大小范围。在每个阶段,可以从结构采样空间中采样出对应的结构参数,然后根据采集到的结构参数从超网络中提取出子网络,例如,在阶段二中,若从结构搜索空间采集到的深度为5-10,则从超网络中采集第5-10层网络层作为子网络。在每个阶段之间,可以逐渐从超网络中采集更小的子网络进行训练。如第一次训练可以对超网络整个网络进行训练,后续的每个阶段可以逐渐对更小的子网络进行训练,直到覆盖超网络各种大小的子网络。例如,第一次训练先于第二次训练,第一次训练采集出来的子网络的结构大于第二次训练采集出的子网络的结构。可以理解为,至少一个子网络中包括第一子网络和第二子网络,第一子网络的结构大于第二子网络的结构,第一子网络在第二子网络之前被训练。
因此,在本申请实施方式中,通过对超网络及其子网络进行训练,得到包括大量网络的模型库,用于支撑教师模型的搜索,得到输出精度高的教师模型。
在一种可能的实施方式中,可以从模型对列表中获取教师模型和初始模型的结构,教师模型可以基于从模型对列表中获取到的教师模型的结构从超网络中提取得到,初始模型则可以是根据从模型对列表中获取到的学生模型的结构构建得到,或者从数据库中读取得到。该模型对列表中可以包括多种按照评估结果来进行排列的模型对,可以理解为,在每次对教师模型和学生模型进行演变和蒸馏之后,即可将教师模型和学生模型作为一对模型对,将该模型对的结构加入模型对列表中,以便于更新教师模型和学生模型时,可以参考该模型对列表来选择评估结果较优的模型对作为初始的教师模型和学生模型,模型对的评估结果,可以是通过对教师模型和/或学生模型的输出精度、推理时长、平均精度等进行评估得到。从而可以基于输出效果更好的模型对来进行进一步的演变和蒸馏,可以加快学生模型的收敛,得到符合预设条件的学生模型。相当于在输出结果质量较高的模型对的基础上来进行进一步演变和蒸馏,相对于在输出较差的模型对的基础上来进行演变和蒸馏,本实施例显然可以提高模型的收敛速度,快速得到输出结果更优的模型,提高得到符合预设条件的学生模型的效率。
需要说明的是,在第一次获取初始的教师模型和学生模型之前,该模型对列表中的模型对可以是初始化的模型对,此时可以从该模型对中随机选择一堆模型对作为初始的教师模型和学生模型的结构,或者,也可以随机构建学生模型,然后从超网络中采集出与学生模型结构类似的教师模型作为初始的教师模型等,具体可以根据实际应用场景来进行调整。
此外,该模型对列表可以是在对多对模型对进行训练,且未训练出符合预设条件的学生模型之后,训练后的模型对的结构形成的列表。例如,在对两对模型对进行训练之后,未训练出符合预设条件的学生模型,则可以将该两对模型对的结构或者结构的索引加入模型对列表中,以便于下次可以直接从该模型对列表中采样出输出效果较好的模型对来进行进一步地演变以及训练,提高学生模型的训练效率,快速得到输出效果更好的学生模型。
602、对学生模型和/或教师模型进行演变。
在得到教师模型和初始模型之后,即可对初始模型和/或教师模型进行演变,演变的次数可以是一次或者多次,得到演变后的教师模型和/或演变后的学生模型。
具体地,演变的方式具体可以是改变初始模型或者教师模型的深度、宽度和/或卷积核大小等,从而得到演变后的学生模型或者演变后的教师模型。
下面分别对初始模型和教师模型的演变过程分别进行介绍。
一、对初始模型进行演变
其中,对初始模型的演变方式可以包括多种,如增加层、层重排或者剪枝等。可选地,可以构建动作空间,该动作空间中可以包括增加层、层重拍或者剪枝等演变动作,然后从该动作空间中采集得到演变动作,然后基于采集得到的演变动作对初始模型进行演变。该增加层即在初始模型中增加至少一层网络层,层重排即对初始模型中的网络层的排列顺序进行重新排列,如互相交换某两个层的排列位置,剪枝即删除网络层中的基本单元之间的连接、删除基本单元或者减小基本单元的宽度等减小初始模型的结构的操作。
增加层可以增加模型的复杂度。例如,当初始模型的模型结构过于简单或过于小时,可以在初始模型中增加一层或者多层网络层,从而增大初始模型的结构大小。
层重排可以对模型的各个阶段进行交换,从而实现计算力的更优分配。例如,可以互相交换某相邻两层网络层的位置。
剪枝可以减小初始模型的结构,从而降低初始模型的复杂度。例如,在初始模型的模型过大时,则可以触发剪枝操作,从而删除基本单元之间的连接,删除网络层、删除基本单元或者减少基本单元的宽度等,以减小初始模型的结构。
在一些常用的神经网络剪枝方式中,依赖人工指定的预训练模型,这一模型的结构往往是固定的。而本申请实施方式中,可以结合结构搜索和剪枝,快速改变初始模型的结构,达到剪枝和结构搜索结合的目的,快速得到不同结构的初始模型,提高得到演变后的学生模型的效率。
并且,演变后的学生模型中,被改变的网络层的参数可以继承改变前对应的网络层的参数,从而在对学生模型进行演变时,即经过演变后的新模型能够继承上一代旧模型的大部分参数。通过参数继承,可以帮助模型在搜索过程中利用已有的训练结果,并有效避免模型对预训练的依赖。经过参数继承的新模型可以使用极少的训练时间就实现模型性能的评估,从而大大提升学生模型的搜索效率。
二、对教师模型进行演变
对教师模型的演变方式可以是改变教师模型的深度、宽度或者卷积核大小等。例如,可以增加教师模型的网络层数,减小教师模型的网络层中的基本单元的宽度,或者调整教师模型的卷积核的大小等,得到演变后的教师模型。
具体例如,可以构建教师模型的动作演变空间,如增加深度、增加宽度、减小深度、减小宽度或者改变卷积和的大小等操作,然后基于该操作和教师模型,从超网络中采集新的教师模型,即演变后的教师模型。
此外,还可以对教师模型和初始模型同时进行演变,得到演变后的教师模型和演变后的学生模型。因此,可以通过演变的方式在原有模型的基础上得到新的模型,结合了结构搜索和剪枝等操作,得到结构更丰富的模型。可以理解为,通过了对教师模型或者学生模型的简单的演变方式,可以快速得到新的教师模型和学生模型,提高教师模型和学生模型的搜索效率,可以降低后续对教师模型和学生模型的评估开销。
603、使用教师模型对演变后的学生模型进行蒸馏,得到更新后的学生模型。
若对教师模型进行了演变,则将演变后的教师模型作为新的教师模型。若对初始模型进行了演变,则将演变后的初始模型作为学生模型,若未对初始模型进行演变,则将初始模型作为学生模型。因教师模型可以是训练后输出精度高于学生模型的模型,可以使用教师模型对学生模型进行蒸馏,得到更新后的学生模型。
具体地,在进行蒸馏时,可以将训练集中的样本作为教师模型和学生模型的输入,该训练集中可以包括多个图像样本,每个图像样本具有对应的标签(label),基于特征层和输出层蒸馏,即以教师模型的特征层的输出结果来指导学生模型的特征层的更新,以教师模型的输出层的输出结果来指导学生模型的更新。从而使学生模型的特征层的输出结果与教师模型的中间层的输出结果越来越接近,学生模型的输出层的输出结果也和教师模型的输出层的输出结果越来越接近,实现知识蒸馏。
604、更新后的学生模型是否符合预设条件,若是,则执行步骤605,若否,则执行步骤601。
其中,在得到更新后的学生模型之后,可以对该学生模型的性能进行评估,判断评估结果是否符合预设条件,若更新后的学生模型符合预设条件,则输出更新后的学生模型,若更新后的学生模型不符合预设条件,则可以重新获取教师模型和学生模型(或者称为第二学生模型)即重复执行步骤601,相当于对第二学生模型进行演变,然后使用教师模型或者新的教师模型对演变后第二学生模型进行知识蒸馏,得到更新后的第二学生模型,或者,也可以继续对更新后的第一学生模型或者教师模型进行演变,得到新的教师模型和学生模型,即重复执行步骤602。
其中,继续对学生模型或者教师模型进行演变,也可以理解为获取新的教师模型或者新的学生模型。
该预设条件具体可以包括但不限于以下一项或者多项:更新后的学生模型的输出精度大于第一阈值,或者,平均精度大于第二阈值,或者,损失值不大于第三阈值,或者,推理时长不大于第四阈值,浮点运算次数FLOPs不大于第五阈值,或者综合评分大于第六阈值等,其中,平均精度包括对更新后的学生模型进行多次评估得到的多个输出精度的平均值,推理时长为从更新后的学生模型根据输入得到输出结果的时长,综合评分为对输出精度、平均精度、损失值、推理时长或FLOPs等中的至少两项进行加权运算得到。
因此,本申请实施方式中,可以从各个维度对学生模型进行评估,从而筛选出输出结果更好的学生模型。
此外,若更新后的学生模型不符合预设条件,则可以将教师模型和更新后的学生模型作为一堆模型对,并将该模型对的结构增加至模型对列表中,从而使后续在获取新的教师模型和学生模型时,可以参考该模型对列表,从该模型对列表中获取评估结果较优的模型对来进行进一步的演变以及蒸馏,从而使下一次演变以及蒸馏可以基于输出较优的教师模型和学生模型来进行,相当于提高了初始的教师模型和学生模型的输出质量,从而加快了学生模型的收敛,提高了得到符合预设条件的学生模型的效率。
605、将更新后的学生模型作为执行预设任务的目标模型。
若更新后的学生模型符合预设条件,如输出精度较高、平均精度高、损失值较小或者推理时长较短等,则可以将更新后的学生模型作为执行预设任务的目标模型,即输出更新后的学生模型。
该预设任务可以包括目标检测任务、分类任务或者分割任务等。
例如,该预设任务可以是目标检测任务,即识别出图像中所有感兴趣的目标(即前景),确定前景的类别和位置,在获取教师模型和初始模型时,即可选择用于执行目标检测任务的教师模型和初始模型。
因此,在本申请实施方式中,结合了结构搜索、剪枝和蒸馏等方式,快速对教师模型或者学生模型进行变形,提高改变模型的效率,且使用了训练好的教师模型对学生模型进行知识蒸馏,快速完成对学生模型的训练,进而提高得到最优的输出模型的效率。
并且,本申请实施方式中,可以通过引入模型对列表的方式,选取出输出结果更优的模型对作为初始的教师模型和学生模型来进行进一步的演变和蒸馏,可以提高模型的收敛速度,快速得到输出结果更优的学生模型,提高得到满足预设条件的学生模型的效率。
此外,本申请实施方式中,在各种场景中都可以通过结合结构搜索、剪枝和蒸馏等方式来得到轻量化的学生模型,相对于人工设计,本申请提供的方法可以得到各种场景下的最优模型,泛化能力强,且减少了人工成本。具体地,通过结构搜索和剪枝的方式,可以快速对初始的模型进行缩放,从而快速得到新的不同结构的学生模型,通过蒸馏的方式,可以快速提高学生模型的输出精度,从而可以得到最优的学生模型。可以理解为,通过结构搜索和剪枝的方式,查找出计算性能最优的模型,如轻量化模型,然后通过蒸馏的方式提高该轻量化模型的输出效果,使运行该模型时的计算资源消耗和输出精度都更优。
如本申请提供的方法针对目标检测、分类或者图像分割等场景,都可以得到最优的模型。例如,在需要得到执行目标检测任务的学生模型时,可以结合结构搜索、剪枝和蒸馏等方式,寻找出符合用户需求的模型。例如,若用户需求为构建输出精度高的模型,则可以通过结构搜索、剪枝和蒸馏等方式,得到大量的模型,然后从中选择输出精度最高的模型,若用户需求为轻量化,则可以从中选择出结构较小且输出精度较高的模型,从而满足用户需求的同时提高模型的输出效果。
前述对本申请提供的神经网络蒸馏方法的流程进行了介绍,为进一步便于理解,下面结合具体的应用场景,对本申请提供的神经网络蒸馏方法进行更详细的介绍。
示例性地,以预设任务为目标检测任务为例。
首先,本申请提供的神经网络蒸馏方法可以分为两部分,如图7所示,一部分为构建教师模型池71,教师模型即可从该教师模型池中采集得到,另一部分为学生模型的搜索、剪枝和蒸馏的联合优化72,输出最终的学生模型,下面分别对两部分进行示例性介绍。参阅图7,本申请提供的另一种神经网络蒸馏方法的流程示意图。
第一部分、构建教师模型池
其中,构建教师模型池可以分为多个步骤,具体可以包括:首先准备任务数据,然后设置教师模型池的相关参数,用于构建或者训练超网络,然后对超网络进行训练,随后对通过渐进收缩深度的策略对超网络中的子网络进行训练,随后通过宽度渐进收缩的策略对超网络中的子网络进行训练,输出训练后的超网络,即教师模型池。分别对详细的步骤进行介绍。
参阅图8,本申请提供的一种构建教师模型池的流程示意图。
801、准备任务数据。
其中,任务数据可以包括需要构建的教师模型池中的模型所需要执行的任务,如目标检测、分类任务等,还可以包括训练教师模型池中的模型所使用的训练集,如多个样本和对应的标签。
802、设置相关参数。
该相关参数可以包括训练教师模型池所涉及的参数。具体地,该相关参数可以包括:输入尺寸采样空间,其中可以包括教师模型池中所包括的子网络的输入图像的尺寸的范围,该输入尺寸可以理解为教师模型池中所包括的网络的超参数;结构采样空间,其中可以包括超网络或者训练其中的子网络时所使用的结构参数,如深度范围、宽度范围或者卷积核大小等参数;每个阶段的训练超参数,可以将教师模型池的训练过程分为多个阶段,每个阶段的训练超参数可以相同也可以不相同,该训练超参数可以包括每个阶段进行训练时的学习率或训练时长等,通常,各种采样空间越大,则对应的学习率或训练时长等也随之增加。
当然,该相关参数也可以是与训练教师模型池同步进行的,即无需提前执行步骤802,例如,在每个阶段训练之前,即可为每个阶段设置对应的训练超参数,可以无需在训练超网络之前即设置好每个阶段的训练超参数。
在训练超网络时,本实施例中示例性地分为了三个阶段,即以下所提及的训练超网络、深度渐进收缩训练子网络和宽度渐进收缩训练子网络,即首先训练整个超网络,然后训练不同深度的子网络,以及训练不同宽度的子网络等,当然,也可以是先训练不同宽度的子网络,然后训练不同深度的子网络,具体可以根据实际应用场景调整。下面分别对不同的阶段进行详细介绍。
803、训练超网络
超网络即包括了多个子网络的模型,该超网络可以理解为一个大型的网络。初始的超网络可以是构建得到的网络,也可以是在预先设定的搜索空间中搜索得到的网络,或者,还可以是在预先设定的搜索空间中搜索得到的网络的基础上进行构建得到的网络。因此,本申请实施方式中,可以解除搜索空间对初始超网络的限制,可以适用于更多更灵活的场景,具有较强的泛化性。
在训练超网络时,可以采用多尺度训练策略来进行训练,超网络的输入尺寸可以从前述步骤802中构建的输入尺寸采用空间中进行采样得到,然后使用不同尺寸的输入图像对超网络进行训练,得到训练后的超网络。可以理解的是,在将不同尺寸的输入图像作为超网络的输入时,
超网络可以包括一个或者多个构建单元,该一个或者多个构建单元堆叠得到初始超网络,每个构建单元的结构可以相同也可以不相同。可以理解为,该超网络可以包括多个节点,该多个节点之间可以通过至少一种基础运算连接。该基础运算也可以称为操作(operation)或者算子(operator)等。通常,超网络中可以包括至少一个构建单元,每个构建单元可以包括多个节点,该多个节点之间可以通过至少一种基础运算连接。例如,超网络可以由多个构建单元组成,每个构建单元的节点数量可以是3、4或5个等,节点之间通过基础运算连接。
具体地,节点之间连接的基础运算可以包括卷积、池化或卷积与池化的组合等基础运算。例如,池化核大小为3×3的均值池化(avg_pool_3x3)、池化核大小为3×3的最大值池化(max_pool_3x3)、卷积核大小为3×3的分离卷积(sep_conv_3x3)、卷积核大小为5×5的分离卷积(sep_conv_5x5)、卷积核大小为3×3且空洞率为2的空洞卷积(dil_conv_3x3)、卷积核大小为5×5且空洞率为2的空洞卷积(dil_conv_5x5)、skip-connect操作或置零操作(相应位置所有神经元置零,简称Zero)等操作。
以任意每两个相邻节点为例,该两个节点可以称为第一节点和第二节点,或者也可以称为上游节点和下游节点。第一节点和第二节点之间连接的每个基础运算的输出作为第二节点的输入,第一节点的输出,经第一节点和第二节点之间连接的每个基础运算进行运算后得到输出即为该每个基础运算的输出。例如,节点0和节点1之间可以通过5种基础运算连接,节点0的输出经该5种操作分别进行运算之后,该5种操作得到的输出作为节点1的输入。
例如,该超网络可以如图9所示,该超网络可以包括一个或者多个构建单元,该一个或者多个构建单元堆叠得到初始超网络,每个构建单元的结构可以相同也可以不相同。每个构建单元中可以包括一个或者多个节点,构建单元之间或者每个构建单元的节点之间可以通过一种或者多种基础运算连接。以其中一个构建单元为例,该构建单元的结构可以如图10所示,该构建单元可以包括4个节点,每个节点之间可以通过3种基础运算连接。
训练超网络的过程即使用步骤801中准备的训练集来训练整个超网络,从而得到训练后的超网络。例如,可以采用误差反向传播(back propagation,BP)算法在训练过程中修正初始的超网络中参数的大小,使得超网络的损失越来越小。
804、深度渐进收缩训练子网络。
其中,可以在前述步骤802中构建深度采样空间,即深度范围,然后从该深度范围中采样深度值,按照采集到的深度值从超网络中确定子网络,并固定超网络中的其他部分,对该子网络来进行训练。例如,深度范围可以包括1-80,可以从该范围中采集一个深度值,如15,则可以从超网络中提取具有15层网络层的子网络来进行训练,超网络中除该15层网络之外的部分固定。
其中,在确定需要训练的不同深度的子网络时,子网络的宽度可以固定宽度,也可以是一个深度值对应多个不同的宽度值来采集子网络并进行训练,或者对超网络中所有宽度的子网络部分进行训练,具体可以根据实际应用场景进行调整。
并且,在采集不同深度的子网络时,可以按照训练顺序,由大到小来采集深度值,例如,第一次采集到的子网络的深度值大于第二次采集到的子网络的深度值,如第一次采样的深度值为15,第二次采样的深度值为10。
例如,如图11所示,在第N次训练时,可以采集深度为6的子网络来进行训练,在第N+1次训练时,则可以采集深度为4的子网络来进行训练。
805、宽度渐进收缩训练子网络。
其中,与前述步骤804类似,不同之处在于前述的深度在本步骤中替换为宽度。该宽度即网络层中所包括的block的输入和输出通道的数量。
例如,宽度范围可以包括1-15,如“1”表示对应的基本单元的输出通道是输入通道的1倍,“2”表示对应的基本单元的输出通道是输入通道的2倍等,以此类推。
并且,在采集不同宽度的子网络时,可以按照训练顺序,由大到小来采集宽度值,例如,第一次采集到的子网络的宽度值大于第二次采集到的子网络的深度值,如第一次采样的宽度值为15,第二次采样的宽度值为10。
此外,在采集每个宽度的子网络时,可以固定一个深度值,也可以采集同一宽度下多个不同深度的子网络,具体可以根据实际应用场景进行调整。
需要说明的是,前述分别从深度和宽度的维度来从超网络中采集子网络进行训练仅仅是示例性说明,还可以从深度+宽度的维度、卷积核大小等维度来采集子网络进行训练,具体可以根据实际应用场景调整,此处不再一一赘述。
因此,在本申请实施方式中,对超网络的训练可以分为多个阶段,每个阶段可以从不同的维度采集子网络来进行训练,直到覆盖超网络中各个大小的子网络,完成对超网络的训练,得到一个大型的且输出质量较高的教师模型池。
可选地,在训练得到教师模型池之后,还可以从该教师模型池中随机采样子网络来验证教师模型池中的网络的输出效果,从而保证教师模型池的输出精度。若采样的一个或者多个子网络的输出效果较差,如输出精度、平均精度或推理时长等劣与预先设定的值,则可以再次对教师模型池进行训练,直到得到验证结果优于预先设定的值的教师模型池。
第二部分、联合优化
其中,在得到大型的且输出质量较高的教师模型池之后,即可选择教师模型以及初始的学生模型来进行后续的演变以及蒸馏的过程,从而输出蒸馏后的学生模型。
示例性地,联合优化的步骤可以如图12所示。联合优化可以范围多个阶段,如图12中所示的初始化、演变和蒸馏。下面示例性地对每个阶段进行示例性地介绍。
(一)初始化
首先,对教师模型和学生模型进行初始化,得到初始的教师模型1202和学生模型1203。
为便于理解,首先对学生模型的获取方式进行示例性介绍。该学生模型1203的获取方式可以包括多种,下面示例性地,对一些可能的获取方式进行介绍。
获取方式一、预设的结构
其中,该学生模型1203可以是预先设定的固定结构,例如,可以由用户来提供初始的学生模型的结构。如前述图2中所示,用户通过客户设备240向执行设备发送输入数据,该输入数据中可以携带学生模型1203的结构。
获取方式二、从搜索空间中搜索得到
该搜索空间中可以包括多种模型,在进行学生模型的初始化时,可以从该搜索空间中随机搜索得到学生模型。
例如,该搜索空间中可以包括构建学生模型所需的深度范围、宽度范围、卷积核种类或者池化核的种类等,如深度范围可以为10-105,宽度范围可以包括1-16,卷积核的种类可以包括卷积核大小为3×3的分离卷积(sep_conv_3x3)、卷积核大小为5×5的分离卷积(sep_conv_5x5)、卷积核大小为3×3且空洞率为2的空洞卷积(dil_conv_3x3)、卷积核大小为5×5且空洞率为2的空洞卷积(dil_conv_5x5)等,池化核的种类可以包括池化核大小为3×3的均值池化(avg_pool_3x3)、池化核大小为3×3的最大值池化(max_pool_3x3)等。
获取方式三、从模型对列表中获取学生模型的结构
该模型对列表中可以包括一对或者多对模型对的结构,每对模型对可以包括教师模型和学生模型。可以从该模型对列表中随机采样一对模型对,将该模型对中的学生模型的结构作为本步骤中学生模型的初始化结构,并按照其中的教师模型的结构从超网络中采集对应的子网络作为教师模型。
或者,可以从该模型对列表中采集评估结果高于一定值或者评估结果最优的模型对,并将该模型对中的学生模型的结构作为本步骤中学生模型的初始化结构,并按照其中的教师模型的结构从超网络中采集对应的子网络作为教师模型。
其中,模型对列表中的模型对的结构可以是在满足终止条件之前,将教师模型和蒸馏后的学生模型的结构增加至列表中得到,该模型对列表中的模型对可以按照评估结果来排列,该评估结果可以是对学生模型的输出精度、平均精度、FLOPs、推理时长、输出精度和推理速度的帕累托前沿等进行评估得到。因此,在下一次对教师模型和学生模型进行初始化时,可以从模型对列表中选取表现较优的模型对(如评估结果高于预设结果)来进行进一步的演变和蒸馏,从而使下一次演变和蒸馏可以基于表现较好的初始化模型来进行,可以加快学生模型的收敛,提高了得到符合预设条件的学生模型的效率。
此外,若当前次为第一次初始化教师模型和学生模型,则可以生成初始模型对,将初始模型对作为教师模型和学生模型的结构,并将该初始模型对加入至模型对列表中。
前述介绍了学生模型的获取方式,教师模型1202的获取方式也可以包括多种。
在一种实施方式中,在前述学生模型的获取方式三中,可以从模型对列表1204中获取模型对,并将该模型对中的学生模型的结构初始化为本步骤中学生模型1203的结构,相应地,将该模型对中教师模型的结构作为本步骤中教师模型1202的结构,根据该结构从超网络中提取训练完成的对应的子网络作为教师模型1202。
或者,也可以是将预先设定的且评估结果高于一定阈值的模型作为教师模型1202,也可以直接将超网络作为教师模型1202,还可以在初始化学生模型之后,从超网络中搜索与学生模型的结构怕匹配的子网络作为教师模型等,该匹配可以包括深度相同或者具有一定线性关系、或者宽度相同等。
(二)演变
在对教师模型和学生模型进行初始化之后,即可对教师模型和/或学生模型进行演变,得到演变后的教师模型1205和/或演变后的学生模型1206。
需要说明的是,在进行演变时,可以仅对学生模型进行演变,也可以仅对教师模型进行演变,还可以同时对教师模型和学生模型进行演变。例如,可以对学生模型进行剪枝或者结构搜索,得到新的学生模型,若教师模型未改变,则可以将新的学生模型和教师模型组成新的模型对;可以对教师模型进行演变,并按照演变后的结构从教师模型池1201中提取新的子网络作为新的教师模型,新的教师模型与未演变的学生模型也可以形成新的模型对;若对教师模型和学生模型都进行了演变,演变后的学生模型和演变后的教师模型即可形成新的模型对。需要说明的是,在图12中,仅对教师模型和学生模型都进行演变的情况进行示例性说明,并不作为限定,具体的演变方式可以根据实际应用场景调整。
首先,对学生模型的演变方式进行介绍。
其中,对学生模型进行演变的方式可以包括多种,具体可以是从学生模型对应的动作空间中采集演变的动作,然后基于该动作对学生模型进行演变,得到演变后的学生模型。
该动作空间中的动作可以包括多种,如增加层、层重排或者剪枝等一项或者多项,为便于理解,下面示例性地对一些动作进行介绍。
1、增加层
其中,增加层即在学生模型中增加网络层,或者增加层也可以称为扩展。
例如,学生模型的结构如图13所示,该学生模型包括了8层网络层,在第2层和第3层之间增加一个网络层,得到演变后的学生模型。并且,增加的网络层的结构可以和第2层或者第3层的结构类似,此处以增加的网络层的结构与第3层的结构类似为例,增加的网络层的参数可以为单位矩阵初始化后的参数,从而提高学生模型的训练效率。
除了增加层,还可以在每个网络层中增加基本单元,从而改变网络层的结构。例如,学生模型的某一层网络层的结构可以如图14所示,学生模型的某一层中包括了block7和block8,可以在该层增加一个block,该block的结构与block8的结构类似,增加的block的参数为单位矩阵初始化后的参数,从而提高学生模型的训练效率。
2、层重排
层重排即对学生模型中的网络层进行重新排列,即调整学生模型中网络层的排列顺序。如将第一层网络层和第二层网络层交换位置,或者,交换网络层中block的位置等。
例如,学生模型的结构可以如图15所示,该学生模型包括了8层网络层,可以对第一层和第二层网络层进行位置交换,交换后该第一层排列在该第二层之后。需要说明的是,学生模型中不同的网络层可能对不同尺度的特征图进行处理,且学生模型中的网络层处理的尺度通常按照一定大小排列,如图15中所示的从左到右的网络层处理的尺度可以按照从大到小的尺度进行排列,在交换网络层的位置时,可以仅交换处理尺度相同的网络层的位置,也可以在交换处理不同尺度的网络层之后,调整交换后的网络层的权重的步长,从而使学生模型中网络层的排列不改变,在尽量降低对学生模型的负面影响的同时,得到了不同结构的学生模型。
又例如,学生模型的某一层网络层的结构可以如图16所示,该网络层包括了block2、block3、block4和block5,可以交换block2和block3的位置,得到block重拍后的网络层,从而得到了不同结构的学生模型。
3、剪枝
剪枝即减小学生模型的结构,如删除学生模型的一层或者多层网络层,删除学生模型网络层中的一个或者多个block,或者减小一个或多个block的输入输出通道等。
一种可能的实施方式中,在进行剪枝时,可以采用BN(批归一化)层的γ参数来作为网络中每一层参数重要度评估标准,并在训练过程中加入关于γ参数的正则损失来帮助网络获取更具稀疏度的γ参数分布:LBN=∑γ∈Γ|γ|,其中,γ是BN层可学习的缩放因子,用来衡量每个通道的重要性,Γ表示网络中所有BN层的γ参数的集合。在进行剪枝时,可以根据需要剪枝的比例来删除γ值小的通道(prune channels)或者平均γ小的层(prunelayer)。当然,也可以随机确定需要删除的通道、需要删除的block或者需要的删除的网络层等,具体可以根据实际应用场景来调整删除的对象。
例如,学生模型的结构可以如图17所示,该学生模型包括了8层网络层,可以删除其中的第6层网络层,从而得到演变后的学生模型,实现了学生模型的结构减小。
又例如,学生模型的某一层网络层的结构可以如图18所示,该网络层包括了block2、block3、block4和block5,可以删除其中的block5,从而改变了该网络层的结构,得到演变后的学生模型中的其中一层网络层。
还例如,学生模型中的某个block的结构可以如图19所示,在对该block进行剪枝前,该block具有3个输入通道和3个输出通道,在进行剪枝后,该block具有2个输入通道和2个输出通道,得到了演变后的学生模型。
此外,动作空间中除了前述的增加层、层重排以及剪枝操作之外,还可以包括其他操作,如改变block的类型、在网络层中增加block或者增加block的输入或输出通道等操作,具体可以根据实际应用场景进行调整,此处不作限定。
因此,在本申请实施方式中,可以结合结构搜索和剪枝,来改变学生模型的结构,实现学生模型的缩放,快速得到新的学生模型。并且,动作空间中的大部分动作都可以支持参数继承,即演变后的结构可以继承演变前的结构的参数,有利于在搜索学生模型的过程中利用已有的训练结果,并有效避免模型对预训练(如ImageNet预训练)的依赖。经过参数继承的新模型可以使用极少的训练时间就实现模型性能的评估,从而大大提升搜索的效率。
其次,下面对教师模型1202的演变方式进行介绍。
教师模型的演变方式可以包括多种,具体可以包括改变教师模型的深度、宽度、卷积核大小等演变方式。例如,可以构建教师模型的动作采样空间,该动作采样空间中可以包括对教师模型进行演变的方式,如改变教师模型的深度或宽度等动作;从该动作采样空间中采样出对教师模型的演变动作之后,即可根据该演变动作对教师模型进行演变,得到演变后的教师模型的结构,然后从超网络中采集出与该演变后的教师模型的结构相应的子网络,得到演变后的教师模型1205。
其中,教师模型的演变方式与学生模型的演变方式的不同之处在于,学生模型直接在初始的学生模型的基础上进行演变,即可得到演变后的学生模型,而教师模型则需要在初始的教师模型的基础上进行演变,然后基于演变后得到的结构从超网络中采集出演变后的教师模型,从而得到训练完成的教师模型。
(三)蒸馏
其中,若对教师模型和学生模型都进行了演变,则使用演变后的教师模型对演变后的学生模型进行知识蒸馏,得到蒸馏后的学生模型1207;若仅对教师模型进行了演变,则使用演变后的教师模型对学生模型进行知识蒸馏,得到更新后的学生模型;若仅对学生模型进行了演变,则可以使用教师模型对演变后的学生模型进行知识蒸馏,得到蒸馏后的学生模型1207。
具体地蒸馏方式可以基于学生模型所需要执行的任务相关,例如,若学生模型需要执行的任务与输入图像中的前景相关,则可以基于教师模型输出的与前景相关的特征或者输出结果来对学生模型进行指导;若学生模型需要执行的任务与输入图像的背景相关,则可以基于教师模型输出的与背景相关的特征或者输出结果来对学生模型进行指导。
示例性地,以学生模型执行的任务为目标检测任务为例,对一种可能的知识蒸馏方式进行介绍。
本实施方式中,可以采用特征层蒸馏和输出层蒸馏来完成对蒸馏过程。特征层蒸馏即以教师模型的特征层的输出结果来指导学生模型的特征层的更新,输出层蒸馏即以教师模型的输出层的输出结果来指导学生模型的更新。从而使学生模型的特征层的输出结果与教师模型的中间层的输出结果越来越接近,学生模型的输出层的输出结果也和教师模型的输出层的输出结果越来越接近,实现知识蒸馏。
其中,特征层蒸馏的作用是帮助学生网络学习教师网络关于前景的特征编码,具体可以采用二阶段检测器中的目标区域特征对齐(ROI Align)模块,来提取FPN的输出特征中的前景并滤除背景噪声,在蒸馏的过程中,损失函数可以采取均方误差(mean squareerror,MSE)损失,如表示为:
其中,FS和FT分别表示学生模型与教师模型的特征,fadap为特征自适应映射函数,L,W,H,C表示特征的层级与维度,Ne=C×W×H。在计算出损失值之后,即可以基于损失值对学生模型进行反向更新,得到更新后的学生模型。
针对输出层蒸馏,可以采用交叉熵损失Lcls来构建分类任务的损失值,而对于定位任务,可以采用携带类注意力机制的定位不确定度Lloc,来更有效地迁移教师网络关于物体的定位信息,可以表示为:
其中,N表示候选区域数量,表示第i个候选区域在教师网络中预测的类别的得分,表示第i个候选区域在学生网络中预测的类别的得分,C表示类别数。表示第i个候选区域在教师网络中预测的定位信息(例如,相对anchor(锚)点在xywh方向的偏移量),表示教师模型预测的当前候选区域在第i类上的置信度。
因此,在本申请实施方式中,针对目标检测的蒸馏,可以基于教师模型输出的前景相关的特征或者结果来进行蒸馏,结合前述的结构搜索和剪枝等操作,在快速完成对学生模型的缩放的基础上,通过蒸馏的方式,得到训练完成的学生模型,提高得到学生模型的效率。且相对于人工设计网络,本申请提供的神经网络蒸馏方法的泛化能力更强,且模型的输出精度可以随着对教师模型池的训练而提高,得到输出精度更高的学生模型。
在得到蒸馏后的学生模型之后,可以判断蒸馏后的学生模型是否满足预设条件,若该蒸馏后的学生模型满足预设条件,则可以将该蒸馏后的学生模型作为目标模型1208,即用于执行目标检测任务的模型。若该蒸馏后的学生模型不满足预设条件,则可以将该蒸馏后的学生模型的结构和教师模型(若进行了演变则替换为演变后的教师模型)的结构作为模型对插入模型对列表中。
例如,模型对列表中的模型对可以按照综合评分进行排列,该综合打分可以是对蒸馏后的学生模型的输出精度、平均精度、损失值、推理时长或FLOPs中的至少两项进行加权运算得到。在得到不满足预设条件的学生模型之后,即可对该学生模型进行综合评分,按照该综合评分将模型插入至模型对列表中。如该模型对列表可以如表1所示:
模型对 | 综合评分 | … |
a+b | 92 | … |
c+d | 91 | … |
e+f | 89 | … |
… | … | … |
表1
其中,表1中的模型对这一列可以表示学生模型和教师模型组成的模型对的结构。
在得到一个新的模型对之后,如标识为g+h,其综合评分为90,则可以将该模型对g+h插入该模型对列表中,如表2所示:
模型对 | 综合评分 | … |
a+b | 92 | … |
c+d | 91 | … |
g+h | 90 | … |
e+f | 89 | … |
… | … | … |
表2
在下一次执行步骤(一)初始化时,可以从该模型对列表中选择综合评分最高,或者综合评分高于90的模型对作为初始的教师模型和学生模型的结构,即可在表现更好的初始模型的基础上进行进一步地演变和蒸馏,可以对初始模型的输出进行进一步提升,得到输出满足预设条件的学生模型。
前述对本申请提供的神经网络蒸馏方法的流程进行了详细介绍。下面以一个更具体的场景为例,如图20,对本申请提供的神经网络蒸馏方法的架构进行更形象地示例性说明。
本申请提供的神经网络蒸馏方法可以分为两部分,分别为图20中所示出的构建教师模型池和爬山式联合优化。
在构建教师模型池的过程中,首先构建了一个超网络,可以将不同分辨率的图像作为超网络的输入,即对超网络进行不同尺度的训练,得到训练后的超网络。然后从深度以及深度加宽度的维度,选取对超网络中的子网络,并固定初该子网络之外的其他部分网络的参数,对该子网络进行训练。在完成了对超网络的各个维度的子网络的训练之后,即可得到最终的具有弹性的教师模型池。
在爬山式联合优化阶段时,在进行蒸馏之前,即可从教师模型池中提取子网络作为教师模型,如图20中所示出的T0、T1和T2,并构建相应的学生模型,如图20中所示出的S0、S1和S2,组成模型对,如T0和S0构成一对模型对,T1和S1构成一对模型对。然后使用教师模型对学生模型进行蒸馏,得到蒸馏后的学生模型。
在得到满足预设条件的学生模型之前,可以对学生模型和/或教师模型进行演变。如对学生模型S0进行剪枝或者其他结构搜索操作等,得到演变后的学生模型S1,S1与教师模型T1组成新的模型对。然后即可基于新的模型对来进行蒸馏,得到蒸馏后的学生模型,直到得到满足预设条件的学生模型,并输出最终满足预设条件的学生模型,如图20中所示出的Sfinal。
因此,在本申请实施方式中,首先对超网络进行训练,并分别对其内部各个维度的子网络进行了训练,得到了表现较好的教师模型池。然后从该教师模型池中提取子网络作为教师模型,并与学生模型构成模型对,使用教师模型对学生模型进行知识蒸馏,得到蒸馏后的学生模型。在得到满足预设条件的学生模型之前,可以对学生模型进行演变,如对学生模型进行剪枝或者结构搜索等操作,从而实现对学生模型的快速缩放,高效得到满足预设条件的学生模型。
此外,基于前述通过本申请提供的神经网络蒸馏方法输出的更新后的学生模型,本申请还提供一种前景检测方法,其流程如图21所示。
2101、获取输入图像。
其中,该若目标模型部署于前述图5中所示出的执行设备210中,则用户可以通过本地设备301或者302向执行设备发送该输入图像。又例如,在执行设备输出目标模型之后,可以将该目标模型发送给本地设备301或302,以将该目标模型部署于本地设备301或302,用户可以直接在本地设备301或302中输入该输入图像,以得到输出结果。
2102、将输入图像作为目标模型的输入,输出输入图像中所包括的对象的信息。
其中,该输入图像中所包括的对象的信息具体可以包括该对象在输入图像中的位置(如表示为坐标)或者该对象的类别等。
具体地,该目标模型及其获取方式可以参阅前述图6-图20的相关描述,此处不再赘述。
因此,在本申请实施方式中,结合了结构搜索、剪枝和蒸馏等方式,快速对教师模型或者学生模型进行变形,使用输出精度较高的教师模型来对学生模型进行知识蒸馏,提高学生模型的输出精度,并将输出表现较优的学生模型作为目标模型,从而得到输出精度较高的目标模型,从而使目标模型针对输入图像的预测结果也更准确。
为便于理解,对本申请提供的神经网络蒸馏方法在具体应用场景(以目标检测任务为例)中的输出效果进行更进一步说明。首先,教师模型池中的模型可以采用主干网络ResNet-FPN进行构建,检测头部均采用常用的RCNN头。其具体的相关参数可以包括如下参数。
弹性教师池中的任何一个模型都需要支持在多种输入尺寸下均可工作。输入尺寸采样空间可以设置为:[512x512,800x600,1080x720,1333x800]。
考虑到作为教师模型需要具备较高的精度,可以构建一个相当于RenNet101-FPN1.5倍宽度的模型作为超网络。
渐进深度训练逐渐将深度更浅的子网加入到训练空间中,对应的渐进深度空间设计为由最初的101层逐渐扩大到25-101层。类似地,渐进宽度空间被设计为由最初的1.5倍宽度逐渐扩大到1-1.5倍宽度。
然后即可从训练后的教师模型池中选择子网络作为教师模型,对构建得到学生模型进行知识蒸馏,得到从而输出蒸馏后的学生模型。
例如,针对剪枝操作的效果,以ResNet50-FPN(R50)与ResNet101-FPN(R101)作为学生模型,在预训练学生模型的基础上,进行了10%-30%的参数剪枝,并与基线的预训练模型(即剪枝比例为0%的模型)进行了对比,对比结果如表3所示。
表3
显然,在进行了剪枝的情况下,即使剪枝比例为30%的情况下,学生模型的输出效果也并没有出现显著的降低,相当于在保持了输出效果的前提下,减小了模型结构,得到了更轻量化的模型。
又例如,针对蒸馏的效果,分别以R18-R50和R50-R101作为学生-教师模型,进行了性能验证,并使用验证结果与目标检测模型的蒸馏方式细粒度特征模仿法(fine-grainedfeature imitation,FGFI)与任务自适应正则化(task adaptive regularization,TAR)进行了对比,结果如表4所示。
表4
显然,本申请提供的神经网络蒸馏方法中,在使用相同学生模型的基础上,实现了更好的输出效果。相当于通过本申请提供的方法,针对不同任务来选择前景和/或背景部分分别进行蒸馏,实现了更优的蒸馏效果。
还例如,针对本申请提供的训练教师模型池时所使用的渐进式搜索训练策略的效果,可以在COCO数据集上构建的弹性教师池,从中抽取出与常规模型结构相同的若干子网(如R18-FPN,R50-FPN等),将其与使用正常训练策略单独训练的结果进行了对比,结果如表5所示。
表5
显然,通过本申请提供的针对教师模型池进行训练所使用的渐进式搜索训练策略,可以明显提高教师模型池的输出精度,从而可以得到输出表现更好的教师模型,相应地也可以提高学生模型的输出表现。相当于通过渐进式搜索训练策略,更权地对教师模型池中的结构进行训练,整体上提高了教师模型池中所包括的模型的输出效果。
此外,由于教师模型池内部包含了数量庞大的高质量模型,所以其不仅可以被作为本申请中的教师模型池进行使用,而且基于该模型池直接进行架构搜索也能够取得很好的效果,由于其内部所有模型的性能无需训练就可直接评估,所以搜索效率极高,表6展示了基于弹性的教师模型池的搜索结果,可以看到在搜索效率及搜索得到的模型性能上,均优于常用的NAS-FPN,SP-NAS等目标检测NAS算法。由于搜索开销极小的特性,该模型池也可以被用于快速搜索与不同设备运行条件适配的最优模型,从而达到一次训练、多处部署的目的。
表6
还例如,针对本申请联合优化的效果,参阅图22,本申请中从超网络中提取教师模型,相当于动态调整教师模型,动态的教师模型与静态的教师模型相比,学生模型的输出精度上升速度更快,且最终性能更高。
表7为固定学生模型的情况下,搜索教师模型和固定教师模型的对比效果。将本申请提供的联合优化称为Joint-DetNAS。
表7
显然,通过本申请提供的Joint-DetNAS,无需预训练,在降低学生模型FLOPs的基础上,提高了输出精度。相当于在实现轻量化学生模型的基础上,提高了学生模型的输出精度,得到结构和输出精度均更优的学生模型。
为了展示本申请提供的Joint-DetNAS的效果,以常用的目标检测模型ResNet-FPN系列作为输入的基础模型进行联合优化,如表8所示,对于不同规模的输入模型,Joint-DetNAS均能够稳定带来性能提升,平均AP提升在2.5以上,学生模型的FLOPs和FPS均有大幅度改善。表9展示了经优化后的模型与常用的目标检测模型的对比,如常用的目标检测模型可以采用级联的二阶段检测器(Cascade Region-based CNN,Cascade RCNN)、全卷积一阶段检测器(fully convolutional one-Stage object detection,FCOS)、复合主干网络(composite backbone network,CBNet)、检测网络架构搜索(backbone search forobject detection,DetNAS)、从结构化到模块化的网络架构搜索(structural-to-modularNAS,SM-NAS)、神经网络特征金字塔搜索(neural architecture search-feature pyramidnetwork,NAS-FPN)、高效检测网络(scalable and efficient object detection,efficientDet)或从串行到并行的主干网络架构搜索(serial-to-parellel NAS,SP-NAS)等,在同规模条件下比较,Joint-DetNAS获得的模型在AP和FPS上均大幅度领先常用的手工设计目标检测模型以及NAS自动搜得的目标检测模型。
表8
表9
针对搜索效率,表10展示了Joint-DetNAS与常用的目标检测NAS算法DetNAS,NAS-FPN以及SP-NAS的搜索效率对比,显然,Joint-DetNAS可以以相对较低的搜索代价获得更加高质量的模型。相当于通过本申请提供的方法,即在结构搜索和剪枝的基础上,增加了蒸馏,可以在减少搜索模型的开销的基础上,得到输出效果更优的学生模型。
搜索方式 | FLOPs | AP | 搜索空间 | 搜索开销 |
随机搜索 | - | - | 50 | 1200 |
DetNAS | 289.4 | 40.0 | 1000 | 70 |
NAS-FPN | 281.3 | 39.9 | 10000 | >>500 |
SP-NAS | 349.3 | 41.7 | 200 | 200 |
Joint-DetNAS | 145.7 | 43.9 | 100 | 200 |
表10
前述对本申请提供的方法的具体流程进行了详细介绍,下面基于前述的方法流程,对执行该方法流程的装置进行详细介绍。
首先,参阅图23,本申请提供的一种神经网络蒸馏装置的结构示意图,该神经网络蒸馏装置可以用于执行前述图6-图22对应的方法的步骤,该神经网络蒸馏装置可以包括:
获取模块2301,用于获取教师模型和第一学生模型;
演变模块2302,用于对第一学生模型进行演变,得到演变后的第一学生模型,其中,演变包括:根据演变动作对第一学生模型的结构进行变换,得到演变后的第一学生模型,演变动作可以包括增加层、层重排或剪枝中的至少一种,增加层指示在第一学生模型中增加至少一层网络层,层重排指示对第一学生模型中的至少一个网络层进行重新排列,剪枝指示减小第一学生模型的结构;
蒸馏模块2303,用于使用教师模型对演变后的第一学生模型进行蒸馏,得到更新后的第一学生模型。
在一种可能的实施方式中,该神经网络蒸馏装置还可以包括:输出模块2304,用于若更新后的第一学生模型符合预设条件,则将更新后的第一学生模型作为目标模型,目标模型用于执行预设任务。
在一种可能的实施方式中,若更新后的第一学生模型不符合预设条件,则获取模块2301获取第二学生模型,演变模块2302对第二学生模型进行演变,蒸馏模块2303使用教师模型或者新的教师模型对演变后的第二学生模型进行蒸馏,得到更新后的第二学生模型。
在一种可能的实施方式中,获取模块2301,具体用于从模型对列表中采样,并根据采样结果得到教师模型和第一学生模型,模型对列表中包括至少一对模型对,每对模型对包括一个教师模型的结构和一个第一学生模型的结构。
在一种可能的实施方式中,获取模块,还用于若更新后的第一学生模型不符合预设条件,则将教师模型和更新后的第一学生模型作为一对模型对增加至模型对列表中。
在一种可能的实施方式中,获取模块,具体用于:从模型对列表中采集评估结果高于预设结果的模型对;根据模型对的结构得到教师模型和第一学生模型。
在一种可能的实施方式中,神经网络蒸馏装置还可以包括:
构建模块2305,用于构建超网络,超网络中包括多个子网络;
训练模块2306,用于使用训练集对超网络进行至少一次训练,得到训练后的超网络,教师模型是从超网络中采集得到。
在一种可能的实施方式中,至少一次训练中的任意一次训练,可以包括:从超网络中采集得到至少一个子网络;对该至少一个子网络进行训练,得到训练后的超网络,即训练后的多个子网络。
在一种可能的实施方式中,训练模块,具体用于:从结构采样空间中采集结构参数,结构采样空间包括以下一种或者多种:深度范围、宽度范围或卷积核大小范围,宽度范围为采样得到的子网络包括的基本单元的输入通道和输出通道的数量的范围,深度范围包括采样得到的子网络中网络层的数量的范围,卷积核大小范围包括采样得到的子网络中的卷积核的大小的范围;根据结构参数从超网络中采集得到子网络。
在一种可能的实施方式中,至少一次训练中的每次训练过程中从结构采样空间中采集结构参数的类型不超过两种;所述至少一个子网络中包括第一子网络和第二子网络,第一子网络的结构大于第二子网络的结构,所述第一子网络在所述第二子网络之前被训练。
在一种可能的实施方式中,在对第一学生模型进行至少一次演变的过程中,演变后的第一学生模型中结构被改变的网络层的参数,为继承演变前的第一学生模型中对应的网络层的参数得到。
在一种可能的实施方式中,预设条件包括以下一项或多项:输出精度大于第一阈值,或者,平均精度大于第二阈值,或者,损失值不大于第三阈值,或者,推理时长不大于第四阈值,或者,浮点运算次数FLOPs不大于第五阈值,或者,综合评分大于第六阈值,平均精度为对更新后的第一学生模型进行多次评估得到的多个精度的平均值,推理时长为从神经网络根据输入得到输出结果的时长,综合评分为对输出精度、平均精度、损失值、推理时长或FLOPs中的至少两项进行加权运算得到。
在一种可能的实施方式中,学生模型可以用于执行目标检测任务。
在一种可能的实施方式中,蒸馏模块2303,具体可以用于使用训练集通过教师模型对演变后的第一学生模型进行蒸馏,得到更新后的第一学生模型,得到更新后的第一学生模型,更新后的第一学生模型用于进行目标检测任务、分类任务或分割任务中的至少一种。
参阅图24,本申请提供的一种目标检测装置的结构示意图,该目标检测装置可以用于执行前述图21对应的方法步骤,该目标检测装置可以包括:
收发模块2401,用于获取输入图像;
输出模块2402,用于将输入图像作为目标模型的输入,输出输入图像中所包括的对象的信息,目标模型是使用教师模型对学生模型进行知识蒸馏得到的更新后的学生模型,其中,使用教师模型对学生模型进行知识蒸馏的过程中,对学生模型进行演变,得到演变后的学生模型,使用教师模型对演变后的学生模型进行知识蒸馏,得到更新后的学生模型,演变包括:根据演变动作对学生模型的结构进行变换,得到演变后的学生模型,演变动作可以包括增加层、层重排或剪枝中的至少一种,增加层指示在学生模型中增加至少一层网络层,层重排指示对学生模型中的至少一个网络层进行重新排列,剪枝指示减小学生模型的结构。
在一种可能的实施方式中,输入图像中包括的对象的信息包括:对象的类别和/或对象在输入图像中的位置。
更具体地,该目标模型可以通过前述图6-图20对应的方法输出得到,此处不再赘述。
请参阅图25,本申请提供的另一种神经网络蒸馏装置的结构示意图,如下所述。
该神经网络蒸馏装置可以包括处理器2501和存储器2502。该处理器2501和存储器2502通过线路互联。其中,存储器2502中存储有程序指令和数据。
存储器2502中存储了前述图6至图20中的步骤对应的程序指令以及数据。
处理器2501用于执行前述图6至图20中任一实施例所示的神经网络蒸馏装置执行的方法步骤。
可选地,该神经网络蒸馏装置还可以包括收发器2503,用于接收或者发送数据。
本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有程序,当其在计算机上运行时,使得计算机执行如前述图6至图20所示实施例描述的方法中的步骤。
可选地,前述的图25中所示的神经网络蒸馏装置为芯片。
本申请还提供一种目标检测装置,其结构与前述图25中的结构类似,下面以前述图25为例对本申请提供的目标检测装置的结构示意图示例性说明。
该目标检测装置可以包括处理器2501和存储器2502。该处理器2501和存储器2502通过线路互联。其中,存储器2502中存储有程序指令和数据。
存储器2502中存储了前述图6至图20中的步骤对应的程序指令以及数据。
处理器2501用于执行前述图21中任一实施例所示的目标检测装置执行的方法步骤。
可选地,该目标检测装置还可以包括收发器2503,用于接收或者发送数据。
本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有程序,当其在计算机上运行时,使得计算机执行如前述图6至图20所示实施例描述的方法中的步骤。
可选地,前述的图25中所示的目标检测装置为芯片。
本申请实施例还提供了一种神经网络蒸馏装置,该神经网络蒸馏装置也可以称为数字处理芯片或者芯片,芯片包括处理单元和通信接口,处理单元通过通信接口获取程序指令,程序指令被处理单元执行,处理单元用于执行前述图6至图20中任一实施例所示的神经网络蒸馏装置执行的方法步骤。
本申请实施例还提供了一种目标检测装置,该目标检测装置也可以称为数字处理芯片或者芯片,芯片包括处理单元和通信接口,处理单元通过通信接口获取程序指令,程序指令被处理单元执行,处理单元用于执行前述图21中任一实施例所示的目标检测装置执行的方法步骤。
本申请实施例还提供一种数字处理芯片。该数字处理芯片中集成了用于实现上述处理器2501,或者处理器2501的功能的电路和一个或者多个接口。当该数字处理芯片中集成了存储器时,该数字处理芯片可以完成前述实施例中的任一个或多个实施例的方法步骤。当该数字处理芯片中未集成存储器时,可以通过通信接口与外置的存储器连接。该数字处理芯片根据外置的存储器中存储的程序代码来实现上述实施例中神经网络蒸馏装置执行的动作。
本申请实施例中还提供一种包括计算机程序产品,当其在计算机上运行时,使得计算机执行如前述图6至图20所示实施例描述的方法中神经网络蒸馏装置所执行的步骤。
本申请实施例提供的神经网络蒸馏装置可以为芯片,芯片包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使服务器内的芯片执行上述图6至图20所示实施例描述的神经网络构建方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等,所述存储单元还可以是所述无线接入设备端内的位于所述芯片外部的存储单元,如只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)等。
具体地,前述的处理单元或者处理器可以是中央处理器(central processingunit,CPU)、网络处理器(neural-network processing unit,NPU)、图形处理器(graphicsprocessing unit,GPU)、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)或现场可编程逻辑门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者也可以是任何常规的处理器等。
示例性地,请参阅图26,图26为本申请实施例提供的芯片的一种结构示意图,所述芯片可以表现为神经网络处理器NPU 260,NPU 260作为协处理器挂载到主CPU(Host CPU)上,由Host CPU分配任务。NPU的核心部分为运算电路2603,通过控制器2604控制运算电路2603提取存储器中的矩阵数据并进行乘法运算。
在一些实现中,运算电路2603内部包括多个处理单元(process engine,PE)。在一些实现中,运算电路2603是二维脉动阵列。运算电路2603还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路2603是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器2602中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器2601中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)2608中。
统一存储器2606用于存放输入数据以及输出数据。权重数据直接通过存储单元访问控制器(direct memory access controller,DMAC)2605,DMAC被搬运到权重存储器2602中。输入数据也通过DMAC被搬运到统一存储器2606中。
总线接口单元(bus interface unit,BIU)2610,用于AXI总线与DMAC和取指存储器(Instruction Fetch Buffer,IFB)2609的交互。
总线接口单元2610(bus interface unit,BIU),用于取指存储器2609从外部存储器获取指令,还用于存储单元访问控制器2605从外部存储器获取输入矩阵A或者权重矩阵B的原数据。
DMAC主要用于将外部存储器DDR中的输入数据搬运到统一存储器2606或将权重数据搬运到权重存储器2602中或将输入数据数据搬运到输入存储器2601中。
向量计算单元2607包括多个运算处理单元,在需要的情况下,对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。主要用于神经网络中非卷积/全连接层网络计算,如批归一化(batch normalization),像素级求和,对特征平面进行上采样等。
在一些实现中,向量计算单元2607能将经处理的输出的向量存储到统一存储器2606。例如,向量计算单元2607可以将线性函数和/或非线性函数应用到运算电路2603的输出,例如对卷积层提取的特征平面进行线性插值,再例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元2607生成归一化的值、像素级求和的值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路2603的激活输入,例如用于在神经网络中的后续层中的使用。
控制器2604连接的取指存储器(instruction fetch buffer)2609,用于存储控制器2604使用的指令;
统一存储器2606,输入存储器2601,权重存储器2602以及取指存储器2609均为On-Chip存储器。外部存储器私有于该NPU硬件架构。
其中,循环神经网络中各层的运算可以由运算电路2603或向量计算单元2607执行。
其中,上述任一处提到的处理器,可以是一个通用中央处理器,微处理器,ASIC,或一个或多个用于控制上述图6-图22的方法的程序执行的集成电路。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
最后应说明的是:以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
Claims (30)
1.一种神经网络蒸馏方法,其特征在于,包括:
获取教师模型和第一学生模型;
对所述学生模型进行演变,得到演变后的第一学生模型,其中,所述演变包括:根据演变动作对所述第一学生模型的结构进行变换,得到演变后的第一学生模型,所述演变动作包括增加层、层重排或剪枝中的至少一种,所述增加层指示在所述学生模型中增加至少一层网络层,所述层重排指示对所述第一学生模型中的至少一个网络层进行重新排列,所述剪枝指示减小所述学生模型的结构;
使用所述教师模型对所述演变后的第一学生模型进行蒸馏,得到更新后的第一学生模型。
2.根据权利要求1所述的方法,其特征在于,
若所述更新后的学生模型不符合预设条件,则获取第二学生模型,对所述第二学生模型进行演变,使用所述教师模型或者新的教师模型对演变后的所述第二学生模型进行蒸馏,得到更新后的第二学生模型。
3.根据权利要求1或2所述的方法,其特征在于,所述获取教师模型和学生模型,包括:
根据模型对列表中获得所述教师模型和所述第一学生模型,所述模型对列表中包括至少一对模型对,每对模型对包括一个教师模型的结构和一个学生模型的结构。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述更新后的第一学生模型不符合预设条件,则将所述教师模型和所述更新后的第一学生模型作为一对模型对增加至所述模型对列表中。
5.根据权利要求3或4所述的方法,其特征在于,所述根据模型对列表中获得所述教师模型和所述第一学生模型,包括:
从所述模型对列表中采集评估结果高于预设结果的模型对;
根据所述模型对的结构得到所述教师模型和所述第一学生模型。
6.根据权利要求1-5所述的方法,其特征在于,所述方法还包括:
构建超网络,所述超网络中包括多个子网络;
使用训练集对所述超网络进行至少一次训练,得到训练后的所述多个子网络,所述教师模型是从所述训练后的所述多个子网络中采集得到。
7.根据权利要求6所述的方法,其特征在于,所述至少一次训练中的任意一次训练,包括:
从所述超网络中采集至少一个子网络;
对所述至少一个子网络进行训练,得到所述训练后的多个子网络。
8.根据权利要求7所述的方法,其特征在于,所述从所述超网络中采集至少一个子网络,包括:
从结构采样空间中采集结构参数,所述结构采样空间包括以下一种或者多种:深度范围、宽度范围或卷积核大小范围,所述宽度范围为采样得到的子网络包括的基本单元的输入通道和输出通道的数量的范围,所述深度范围为采样得到的子网络中网络层的数量的范围,所述卷积核大小范围包括采样得到的子网络中的卷积核的大小的范围;
根据所述结构参数从所述超网络中采集得到所述至少一个子网络。
9.根据权利要求6-8中任一项所述的方法,其特征在于,
所述至少一次训练中的每次训练过程中从所述结构采样空间中采集结构参数的类型不超过两种;
所述至少一个子网络中包括第一子网络和第二子网络,所述第一子网络的结构大于所述第二子网络的结构,所述第一子网络在所述第二子网络之前被训练。
10.根据权利要求2或4所述的方法,其特征在于,
所述预设条件包括以下一项或多项:输出精度大于第一阈值,或者,平均精度大于第二阈值,或者,损失值不大于第三阈值,或者,推理时长不大于第四阈值,或者,浮点运算次数FLOPs不大于第五阈值,或者,综合评分大于第六阈值,所述平均精度为对所述更新后的第一学生模型进行多次评估得到的多个精度的平均值,所述推理时长为从神经网络根据输入得到输出结果的时长,所述综合评分为对所述输出精度、平均精度、损失值、推理时长或FLOPs中的至少两项进行加权运算得到。
11.根据权利要求1-10中任一项所述的方法,所述使用所述教师模型对所述演变后的第一学生模型进行蒸馏,包括:
使用训练集通过所述教师模型对所述演变后的第一学生模型进行蒸馏,得到所述更新后的第一学生模型,得到所述更新后的第一学生模型,所述训练集中包括至少一个图像样本,所述更新后的第一学生模型用于进行目标检测任务、分类任务或分割任务中的至少一种。
12.一种目标检测方法,其特征在于,包括:
获取输入图像;
将所述输入图像作为目标模型的输入,输出所述输入图像中所包括的对象的信息,所述目标模型是使用教师模型对学生模型进行知识蒸馏得到的更新后的学生模型;
其中,使用所述教师模型对所述学生模型进行知识蒸馏,包括:对所述学生模型进行演变,得到演变后的学生模型,使用所述教师模型对所述演变后的学生模型进行知识蒸馏,得到所述更新后的学生模型,所述演变包括:根据演变动作对所述学生模型的结构进行变换,得到所述演变后的学生模型,所述演变动作包括增加层、层重排或剪枝中的至少一种,所述增加层指示在所述学生模型中增加至少一层网络层,所述层重排指示对所述学生模型中的至少一个网络层进行重新排列,所述剪枝指示减小所述学生模型的结构。
13.根据权利要求12所述的方法,其特征在于,所述输入图像中包括的对象的信息包括:所述对象的类别和/或所述对象在所述输入图像中的位置。
14.一种神经网络蒸馏装置,其特征在于,包括:
获取模块,用于获取教师模型和第一学生模型;
演变模块,用于对所述第一学生模型进行至少一次演变,得到演变后的第一学生模型,其中,所述至少一次演变中的任意一次演变包括:根据演变动作对所述第一学生模型的结构进行变换,得到次演变后的第一学生模型,所述演变动作包括增加层、层重排或剪枝中的至少一种,所述增加层指示在所述第一学生模型中增加至少一层网络层,所述层重排指示对所述第一学生模型中的至少一个网络层进行重新排列,所述剪枝指示减小所述第一学生模型的结构;
蒸馏模块,用于使用所述教师模型对所述演变后的第一学生模型进行蒸馏,得到更新后的第一学生模型。
15.根据权利要求14所述的装置,其特征在于,
若所述更新后的第一学生模型不符合所述预设条件,则所述获取模块获取第二学生模型,所述演变模块对所述第二学生模型进行演变,所述蒸馏模块使用所述教师模型或者新的教师模型对演变后的第二学生模型进行蒸馏,得到更新后的第二学生模型。
16.根据权利要求14或15所述的装置,其特征在于,
所述获取模块,具体用于从根据模型对列表获得所述教师模型和所述第一学生模型,所述模型对列表中包括至少一对模型对,每对模型对包括一个教师模型的结构和一个学生模型的结构。
17.根据权利要求16所述的装置,其特征在于,
所述获取模块,还用于若所述更新后的第一学生模型不符合预设条件,则将所述教师模型和所述更新后的第一学生模型作为一对模型对增加至所述模型对列表中。
18.根据权利要求16或17所述的装置,其特征在于,所述获取模块,具体用于:
从所述模型对列表中采集评估结果高于预设结果的模型对;
根据所述模型对的结构得到所述教师模型和所述第一学生模型。
19.根据权利要求14-18所述的装置,其特征在于,所述装置还包括:
构建模块,用于构建超网络,所述超网络中包括多个子网络;
训练模块,用于使用训练集对所述超网络进行至少一次训练,得到训练后的多个子网络,所述教师模型是从所述训练后的多个子网络中采集得到。
20.根据权利要求19所述的装置,其特征在于,所述至少一次训练中的任意一次训练,包括:
从所述超网络中采集至少一个子网络;
对所述至少一个子网络进行训练,得到所述训练后的超网络。
21.根据权利要求20所述的装置,其特征在于,所述训练模块,具体用于:
从结构采样空间中采集结构参数,所述结构采样空间包括以下一种或者多种:深度范围、宽度范围或卷积核大小范围,所述宽度范围为采样得到的子网络包括的基本单元的输入通道和输出通道的数量的范围,所述深度范围为采样得到的子网络中网络层的数量的范围,所述卷积核大小范围包括采样得到的子网络中的卷积核的大小的范围;
根据所述结构参数从所述超网络中采集得到所述至少一个子网络。
22.根据权利要求19-21中任一项所述的装置,其特征在于,
所述至少一次训练中的每次训练过程中从所述结构采样空间中采集结构参数的类型不超过两种;
所述至少一个子网络中包括第一子网络和第二子网络,所述第一子网络的结构大于所述第二子网络的结构,所述第一子网络在所述第二子网络之前被训练。
23.根据权利要求15或17所述的装置,其特征在于,
所述预设条件包括以下一项或多项:输出精度大于第一阈值,或者,平均精度大于第二阈值,或者,损失值不大于第三阈值,或者,推理时长不大于第四阈值,或者,浮点运算次数FLOPs不大于第五阈值,或者,综合评分大于第六阈值,所述平均精度为对所述更新后的第一学生模型进行多次评估得到的多个精度的平均值,所述推理时长为从神经网络根据输入得到输出结果的时长,所述综合评分为对所述输出精度、平均精度、损失值、推理时长或FLOPs中的至少两项进行加权运算得到。
24.根据权利要求14-23中任一项所述的装置,其特征在于,
所述蒸馏模块,具体用于使用训练集通过所述教师模型对所述演变后的第一学生模型进行蒸馏,得到所述更新后的第一学生模型,得到所述更新后的第一学生模型,所述更新后的第一学生模型用于进行目标检测任务、分类任务或分割任务中的至少一种。
25.一种目标检测装置,其特征在于,包括:
收发模块,用于获取输入图像;
输出模块,用于将所述输入图像作为目标模型的输入,输出所述输入图像中所包括的对象的信息,所述目标模型是使用教师模型对学生模型进行知识蒸馏得到的更新后的学生模型;
其中,所述使用教师模型对学生模型进行知识蒸馏得到的更新后的学生模型,包括:对所述学生模型进行演变,得到演变后的学生模型,使用所述教师模型对所述演变后的学生模型进行知识蒸馏,得到所述更新后的学生模型,所述演变包括:根据演变动作对所述学生模型的结构进行变换,得到所述演变后的学生模型,所述演变动作包括增加层、层重排或剪枝中的至少一种,所述增加层指示在所述学生模型中增加至少一层网络层,所述层重排指示对所述学生模型中的至少一个网络层进行重新排列,所述剪枝指示减小所述学生模型的结构。
26.根据权利要求25所述的装置,其特征在于,所述输入图像中包括的对象的信息包括:所述对象的类别和/或所述对象在所述输入图像中的位置。
27.一种神经网络蒸馏装置,其特征在于,包括处理器,所述处理器和存储器耦合,所述存储器存储有程序,当所述存储器存储的程序指令被所述处理器执行时实现权利要求1至11中任一项所述的方法。
28.一种目标检测装置,其特征在于,包括处理器,所述处理器和存储器耦合,所述存储器存储有程序,当所述存储器存储的程序指令被所述处理器执行时实现权利要求12或13所述的方法。
29.一种计算机可读存储介质,包括程序,当其被处理单元所执行时,执行如权利要求1至11或者12至13中任一项所述的方法。
30.一种装置,其特征在于,包括处理单元和通信接口,所述处理单元通过所述通信接口获取程序指令,当所述程序指令被所述处理单元执行时实现权利要求1至11或者12至13中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110247165.9A CN115018039A (zh) | 2021-03-05 | 2021-03-05 | 一种神经网络蒸馏方法、目标检测方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110247165.9A CN115018039A (zh) | 2021-03-05 | 2021-03-05 | 一种神经网络蒸馏方法、目标检测方法以及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115018039A true CN115018039A (zh) | 2022-09-06 |
Family
ID=83064464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110247165.9A Pending CN115018039A (zh) | 2021-03-05 | 2021-03-05 | 一种神经网络蒸馏方法、目标检测方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115018039A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117114148A (zh) * | 2023-08-18 | 2023-11-24 | 湖南工商大学 | 一种轻量级联邦学习训练方法 |
CN117131920A (zh) * | 2023-10-26 | 2023-11-28 | 北京市智慧水务发展研究院 | 一种基于网络结构搜索的模型剪枝方法 |
CN117496509A (zh) * | 2023-12-25 | 2024-02-02 | 江西农业大学 | 一种融合多教师知识蒸馏的Yolov7柚子计数方法 |
-
2021
- 2021-03-05 CN CN202110247165.9A patent/CN115018039A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117114148A (zh) * | 2023-08-18 | 2023-11-24 | 湖南工商大学 | 一种轻量级联邦学习训练方法 |
CN117114148B (zh) * | 2023-08-18 | 2024-04-09 | 湖南工商大学 | 一种轻量级联邦学习训练方法 |
CN117131920A (zh) * | 2023-10-26 | 2023-11-28 | 北京市智慧水务发展研究院 | 一种基于网络结构搜索的模型剪枝方法 |
CN117131920B (zh) * | 2023-10-26 | 2024-01-30 | 北京市智慧水务发展研究院 | 一种基于网络结构搜索的模型剪枝方法 |
CN117496509A (zh) * | 2023-12-25 | 2024-02-02 | 江西农业大学 | 一种融合多教师知识蒸馏的Yolov7柚子计数方法 |
CN117496509B (zh) * | 2023-12-25 | 2024-03-19 | 江西农业大学 | 一种融合多教师知识蒸馏的Yolov7柚子计数方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022083536A1 (zh) | 一种神经网络构建方法以及装置 | |
CN110175671B (zh) | 神经网络的构建方法、图像处理方法及装置 | |
WO2021238366A1 (zh) | 一种神经网络构建方法以及装置 | |
WO2021218517A1 (zh) | 获取神经网络模型的方法、图像处理方法及装置 | |
CN112990211B (zh) | 一种神经网络的训练方法、图像处理方法以及装置 | |
CN112446398B (zh) | 图像分类方法以及装置 | |
WO2022042713A1 (zh) | 一种用于计算设备的深度学习训练方法和装置 | |
US20220215227A1 (en) | Neural Architecture Search Method, Image Processing Method And Apparatus, And Storage Medium | |
CN113807399B (zh) | 一种神经网络训练方法、检测方法以及装置 | |
EP4064130A1 (en) | Neural network model update method, and image processing method and device | |
WO2021022521A1 (zh) | 数据处理的方法、训练神经网络模型的方法及设备 | |
CN111368972B (zh) | 一种卷积层量化方法及其装置 | |
WO2020192736A1 (zh) | 物体识别方法及装置 | |
CN111507378A (zh) | 训练图像处理模型的方法和装置 | |
WO2022001805A1 (zh) | 一种神经网络蒸馏方法及装置 | |
CN113705769A (zh) | 一种神经网络训练方法以及装置 | |
CN110222718B (zh) | 图像处理的方法及装置 | |
CN111931764B (zh) | 一种目标检测方法、目标检测框架及相关设备 | |
WO2021008206A1 (zh) | 神经网络结构的搜索方法、图像处理方法和装置 | |
CN115018039A (zh) | 一种神经网络蒸馏方法、目标检测方法以及装置 | |
CN113592060A (zh) | 一种神经网络优化方法以及装置 | |
CN111797992A (zh) | 一种机器学习优化方法以及装置 | |
CN111931901A (zh) | 一种神经网络构建方法以及装置 | |
Grigorev et al. | Depth estimation from single monocular images using deep hybrid network | |
WO2022156475A1 (zh) | 神经网络模型的训练方法、数据处理方法及装置 |
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 |