掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本申请涉及计算机技术领域,具体涉及一种神经网络剪枝方法。

背景技术

深度学习作为机器学习的主流分支之一,在图像处理、人脸识别和其它领域得到了广泛引用。卷积神经网络(Convolutional Neural Networks,CNN)是深度学习的代表算法之一,在大规模计算机视觉应用(例如图像分类、目标检测和视频分析)中得到了广泛的使用并取得了巨大的成功。卷积神经网络模型特别是深度神经网络(Deep NeuralNetwork,DNN)模型对计算能力和内存要求很高。边缘设备例如移动电话、可穿戴设备等,需要在本地处理深度学习相关的任务,且受限于有限的资源和功耗以及时延和成本的考虑,因此基于深度学习的产品难以部署在这些边缘设备上。

为了推进基于深度学习的产品在边缘设备上的应用,一种做法是针对给定的计算任务设计专用硬件加速器,另一种做法是对神经网络模型进行简化来减少其对计算能力和内存的需求,也就是模型压缩(Model Compression)。模型压缩包括多种方法,例如剪枝(Pruning),量化(Quantization),低秩分解(Low-Rank Factorization)以及知识蒸馏(Knowledge Distillation)。其中,网络剪枝方法(Network Pruning)直接去除整个卷积核,无需特定的软件和硬件设计即可实现加速,能够在不明显影响网络预测准确率的前提下降低网络的参数量和计算量,因此得到大量的关注。

现有技术中,网络剪枝方法主要分成两类。第一类方法不需要训练数据,通过预先定义关于卷积核的重要性的假设来判定不同卷积核的重要性。例如假设范数小的卷积核不重要而去除一些范数小的卷积核不会太多地影响网络模型的表现。又例如计算网络模型中卷积核的几何中位数并根据中位数衡量卷积核的重要性,并删除不重要的卷积核。第一类方法基于特定的假设来衡量卷积核的重要性,该特定假设不能完全反映卷积核的重要性,也难以准确挖掘出卷积核和网络输出之间的关系,并且导致剪枝过程受到大量无关因素的干扰。第二类方法是数据驱动的方法,需要引入训练数据来学习不同卷积核的重要性。例如给每个卷积核引入额外的控制系数,并通过学习这些控制系数来度量不同卷积核的重要性,以及假设跟小的控制系数对应的卷积核不重要。例如通过输入图像计算网络模型中间层的特征图,并根据特征图估计特征图的秩,以及根据特征图的秩来衡量卷积核的重要性。第二类方法对卷积核的重要性的衡量结果可能对输入数据的细微变化非常敏感,也就是说,输入数据的微小波动可能对剪枝结果产生较大的影响从而导致不稳定的结果,也难以准确挖掘出卷积核和网络输出之间的关系,且导致剪枝过程受到大量无关因素的干扰。因此,现有技术中存在的技术问题是如何尽量减少大量无关因素对剪枝过程的干扰,准确挖掘出卷积核和网络输出之间的关系,并且提高剪枝结果的稳定性和可靠性。

发明内容

本申请的目的在于提供一种对神经网络模型进行剪枝的方法。所述方法包括:获取带有标签的训练数据;基于所述训练数据获取高仿数据,其中,所述高仿数据与所述训练数据具有相似分布规律,所述高仿数据不包含与所述标签有关信息;将所述训练数据和所述高仿数据输入到所述神经网络模型分别得到与所述神经网络模型的各级操作层一一对应的多个训练特征和多个高仿特征,其中,所述神经网络模型的各级操作层上的操作算子各自分配有控制系数,与特定操作层对应的训练特征根据与所述特定操作层的前一层对应的高仿特征和训练特征以及与所述特定操作层的操作算子对应的控制系数确定;根据所述训练数据,所述高仿数据,所述标签以及所述控制系数,计算损耗函数;基于所述损耗函数,对所述控制系数进行调整;基于调整后的控制系数,所述训练数据和所述高仿数据,继续进行控制系数调整的过程,直至所述损耗函数的输出满足预设条件;基于所述损耗函数的输出满足预设条件时得到的控制系数,计算所述神经网络模型的各级操作层上的操作算子各自的重要性指标;和根据所计算出的所述神经网络模型的各级操作层上的操作算子各自的重要性指标,剪掉不重要的操作算子得到剪枝后的神经网络模型。如此,通过将与高仿数据相关的高仿特征作为与训练数据相关的训练特征的对照和补充,以及通过调整控制系数来影响高仿特征对后续计算训练特征的参与程度,从而充分挖掘出网络输出和操作算子之间的关系,有利于探索网络模型中的冗余操作算子,同时尽量减少无关因素的干扰,有利于剪枝结果的稳定性和可靠性。

第一方面,本申请实施例提供了一种对神经网络模型进行剪枝的方法。所述方法包括:获取带有标签的训练数据;基于所述训练数据获取高仿数据,其中,所述高仿数据与所述训练数据具有相似分布规律,所述高仿数据不包含与所述标签有关信息;将所述训练数据和所述高仿数据输入到所述神经网络模型分别得到与所述神经网络模型的各级操作层一一对应的多个训练特征和多个高仿特征,其中,所述神经网络模型的各级操作层上的操作算子各自分配有控制系数,与特定操作层对应的训练特征根据与所述特定操作层的前一层对应的高仿特征和训练特征以及与所述特定操作层的操作算子对应的控制系数确定;根据所述训练数据,所述高仿数据,所述标签以及所述控制系数,计算损耗函数;基于所述损耗函数,对所述控制系数进行调整;基于调整后的控制系数,所述训练数据和所述高仿数据,继续进行控制系数调整的过程,直至所述损耗函数的输出满足预设条件;基于所述损耗函数的输出满足预设条件时得到的控制系数,计算所述神经网络模型的各级操作层上的操作算子各自的重要性指标;和根据所计算出的所述神经网络模型的各级操作层上的操作算子各自的重要性指标,剪掉不重要的操作算子得到剪枝后的神经网络模型。

第一方面所描述的技术方案,通过将与高仿数据相关的高仿特征作为与训练数据相关的训练特征的对照和补充,以及通过调整控制系数来影响高仿特征对后续计算训练特征的参与程度,从而充分挖掘出网络输出和操作算子之间的关系,有利于探索网络模型中的冗余操作算子,同时尽量减少无关因素的干扰,有利于剪枝结果的稳定性和可靠性。

根据第一方面,在一种可能的实现方式中,与所述特定操作层对应的高仿特征通过将与所述特定操作层的前一层对应的高仿特征跟所述特定操作层的操作算子进行运算操作得到。

如此,实现了高仿特征保留了不包含与所述标签有关信息的属性,从而有利于减少无关因素的干扰。

根据第一方面,在一种可能的实现方式中,所述控制系数包括第一控制系数和第二控制系数,与所述特定操作层对应的训练特征根据与所述特定操作层的前一层对应的高仿特征和训练特征以及与所述特定操作层的操作算子对应的控制系数确定,包括:与所述特定操作层对应的训练特征通过将与所述特定操作层的前一层对应的训练特征和高仿特征分别根据所述第一控制系数和所述第二控制系数调整后相加再跟所述特定操作层的操作算子进行运算操作得到。

如此,实现了通过调整控制系数来影响高仿特征对后续计算训练特征的参与程度,也通过第一控制系数和第二控制系数来体现参与程度不同,有利于探索网络模型中的冗余操作算子。

根据第一方面,在一种可能的实现方式中,对应于同一操作算子的第一控制系数和第二控制系数满足相加之和等于1的约束条件。

如此,通过控制系数的约束条件实现了第一控制系数和第二控制系数的变化是相关的,从而有利于探索网络模型中的冗余卷积核。

根据第一方面,在一种可能的实现方式中,根据所述训练数据,所述高仿数据,所述标签以及所述控制系数,计算所述损耗函数,包括:根据所述训练数据,所述高仿数据,所述标签,第一控制系数集合,第二控制系数集合,计算所述损耗函数,其中,所述第一控制系数集合包括与所述神经网络模型的各级操作层上的操作算子各自对应的第一控制系数,所述第二控制系数集合包括与所述神经网络模型的各级操作层上的操作算子各自对应的第二控制系数。

如此,通过根据网络中所有的控制系数来计算损耗函数,以及通过标签的监督来优化损耗函数,从而有利于充分挖掘出网络输出和卷积核之间的关系。

根据第一方面,在一种可能的实现方式中,基于所述损耗函数,对所述控制系数进行调整,包括:基于所述损耗函数,对所述神经网络模型的各级操作层上的操作算子各自的第一控制系数和第二控制系数分别进行调整。

如此,通过损耗函数的反馈来调整控制系数,从而有利于充分挖掘出网络输出和操作算子之间的关系。

根据第一方面,在一种可能的实现方式中,基于所述损耗函数的输出满足预设条件时得到的控制系数,计算所述神经网络模型的各级操作层上的操作算子各自的重要性指标,包括:针对所述神经网络模型的每一个操作算子,计算与所述操作算子对应的第一控制系数减去与所述操作算子对应的第二控制系数的差值作为与所述操作算子对应的重要性指标。

如此,通过第一控制系数和第二控制系数的比较,从而有效衡量了操作算子的重要性。

根据第一方面,在一种可能的实现方式中,根据所计算出的所述神经网络模型的各级操作层上的操作算子各自的重要性指标,剪掉不重要的操作算子得到剪枝后的神经网络模型,包括:根据针对所述神经网络模型的预定压缩率确定重要性阈值;比较所述神经网络模型的每一个操作算子的重要性指标和所述重要性阈值,当所述重要性指标小于所述重要性阈值时判断为不重要的操作算子。

如此,通过结合预定压缩率来控制剪枝过程,从而有利于根据具体需求灵活配置。

根据第一方面,在一种可能的实现方式中,所述各级操作层包括至少一个卷积层,所述至少一个卷积层的操作算子包括至少一个卷积核,所述至少一个卷积核的运算操作是卷积操作。

如此,实现了应用于包括至少一个卷积核和卷积运算操作的情况。

根据第一方面,在一种可能的实现方式中,所述各级操作层包括至少一个全连接层,所述至少一个全连接层的操作算子包括至少一个全连接算子,所述至少一个全连接算子的运算操作是全连接操作。

如此,实现了应用于包括至少一个全连接算子和全连接操作的情况。

根据第一方面,在一种可能的实现方式中,所述神经网络模型是卷积神经网络模型,所述各级操作层均是卷积层,所述卷积神经网络的操作算子均是卷积核,所述卷积神经网络的操作算子的运算操作是卷积操作。

如此,实现了应用于全部操作层是卷积层的卷积神经网络模型。

根据第一方面,在一种可能的实现方式中,所述神经网络模型是全连接神经网络模型,所述各级操作层均是全连接层,所述全连接神经网络的操作算子均是全连接算子,所述全连接神经网络的操作算子的运算操作是全连接操作。

如此,实现了应用于全部操作层是全连接层的全连接神经网络模型。

根据第一方面,在一种可能的实现方式中,所述训练数据是训练图像,所述高仿数据是将所述训练图像输入生成式对抗网络模型得到的高仿图像,所述神经网络模型用于图像处理,其中,将所述训练数据和所述高仿数据输入到所述神经网络模型分别得到与所述神经网络模型的各级操作层一一对应的多个训练特征和多个高仿特征,包括:将所述训练图像和所述高仿图像输入到所述神经网络模型分别得到与所述神经网络模型的各级操作层一一对应的多个训练图像特征和多个高仿图像特征。

如此,实现了应用于图像处理的神经网络模型的剪枝过程。

根据第一方面,在一种可能的实现方式中,一种布置在边缘设备上的图像处理系统,其特征在于,所述图像处理系统用于进行图像处理的神经网络模型是将未压缩的网络模型根据所述的方法进行剪枝后得到。

如此,通过对图像处理的神经网络模型进行剪枝,从而有利于在边缘设备上的图像处理系统的产品化和应用。

根据第一方面,在一种可能的实现方式中,所述训练数据是训练语音信号,所述高仿数据是将所述训练语音信号输入生成式对抗网络模型得到的高仿语音信号,其中,所述神经网络模型用于语音处理,其中,将所述训练数据和所述高仿数据输入到所述神经网络模型分别得到与所述神经网络模型的各级操作层一一对应的多个训练特征和多个高仿特征,包括:将所述训练语音信号和所述高仿语音信号输入到所述神经网络模型分别得到与所述神经网络模型的各级操作层一一对应的多个训练语音信号特征和多个高仿语音信号特征。

如此,实现了应用于语音信号处理的神经网络模型的剪枝过程。

根据第一方面,在一种可能的实现方式中,一种布置在边缘设备上的语音处理系统,所述语音处理系统用于进行语音信号处理的神经网络模型是将未压缩的网络模型根据所述的方法进行剪枝后得到。

如此,通过对语音信号处理的神经网络模型进行剪枝,从而有利于在边缘设备上的语音处理系统的产品化和应用。

根据第一方面,在一种可能的实现方式中,所述训练数据是训练自然语言信号,所述高仿数据是将所述训练自然语言信号输入生成式对抗网络模型得到的高仿自然语言信号,其中,所述神经网络模型用于自然语言处理,其中,将所述训练数据和所述高仿数据输入到所述神经网络模型分别得到与所述神经网络模型的各级操作层一一对应的多个训练特征和多个高仿特征,包括:将所述训练自然语言信号和所述高仿自然语言信号输入到所述神经网络模型分别得到与所述神经网络模型的各级操作层一一对应的多个训练自然语言信号特征和多个高仿自然语言信号特征。

如此,实现了应用于自然语言信号处理的神经网络模型的剪枝过程。

根据第一方面,在一种可能的实现方式中,一种布置在边缘设备上的自然语言处理系统,所述自然语言处理系统用于进行自然语言信号处理的神经网络模型是将未压缩的网络模型根据所述的方法进行剪枝后得到。

如此,通过对自然语言信号处理的神经网络模型进行剪枝,从而有利于在边缘设备上的自然语言处理系统的产品化和应用。

根据第一方面,在一种可能的实现方式中,所述训练数据是训练推荐内容信号,所述高仿数据是将所述训练推荐内容信号输入生成式对抗网络模型得到的高仿推荐内容信号,其中,所述神经网络模型用于筛选推荐内容,其中,将所述训练数据和所述高仿数据输入到所述神经网络模型分别得到与所述神经网络模型的各级操作层一一对应的多个训练特征和多个高仿特征,包括:将所述训练推荐内容信号和所述高仿推荐内容信号输入到所述神经网络模型分别得到与所述神经网络模型的各级操作层一一对应的多个训练推荐内容信号特征和多个高仿推荐内容信号特征。

如此,实现了应用于推荐内容信号处理的神经网络模型的剪枝过程。

根据第一方面,在一种可能的实现方式中,一种布置在边缘设备上的内容推荐系统,所述内容推荐系统用于筛选推荐内容的神经网络模型是将未压缩的网络模型根据所述的方法进行剪枝后得到。

如此,通过对处理推荐内容的神经网络模型进行剪枝,从而有利于在边缘设备上的内容推荐系统的产品化和应用。

第二方面,本申请实施例提供了一种神经网络模型的压缩方法。所述方法包括:获取初始神经网络模型的初始模型参数,所述初始模型参数包括所述初始神经网络模型的各级卷积层的初始卷积核;获取实验组图像;根据所述实验组图像和已训练的对抗生成模型得到控制组图像,其中,所述控制组图像具有与所述实验组图像相似的分布,所述控制组图像所包含的目标相关信息少于所述实验组图像;将所述控制组图像输入所述初始神经网络模型得到与所述各级卷积层一一对应的第一图像特征;为所述各级卷积层的初始卷积核分配相应的第一控制系数和第二控制系数;将所述实验组图像输入所述初始神经网络模型,并根据所述第一控制系数,所述第二控制系数,所述第一图像特征调整所述各级卷积层的初始卷积核的输入得到与所述各级卷积层一一对应的第二图像特征;根据所述实验组图像,所述控制组图像,所述实验组图像所包括的目标相关信息,第一控制系数集合,第二控制系数集合,计算损耗函数,其中,所述第一控制系数集合包括与所述各级卷积层的初始卷积核各自对应的第一控制系数,所述第二控制系数集合包括与所述各级卷积层的初始卷积核各自对应的第二控制系数;基于所述损耗函数,对所述第一控制系数集合和所述第二控制系数集合进行调整;基于调整后的所述第一控制系数集合,调整后的所述第二控制系数集合,所述实验组图像和所述控制组图像,继续进行调整过程,直至所述损耗函数的输出满足预设条件;基于所述损耗函数的输出满足预设条件时得到的第一控制系数集合和第二控制系数集合,选择所述各级卷积层的初始卷积核中的一部分为冗余卷积核;从所述初始神经网络模型中剪去所选择的冗余卷积核得到压缩后的神经网络模型。

第二方面所描述的技术方案,通过将与控制组图像相关的第一图像特征作为与实验组图像相关的第二图像特征的对照和补充,以及通过调整控制系数来影响第一图像特征对后续计算第二图像特征的参与程度,从而充分挖掘出网络输出和卷积核之间的关系,有利于探索网络模型中的冗余卷积核,同时尽量减少无关因素的干扰,有利于剪枝结果的稳定性和可靠性。

根据第二方面,在一种可能的实现方式中,根据所述第一控制系数,所述第二控制系数,所述第一图像特征调整所述各级卷积层的初始卷积核的输入得到与所述各级卷积层一一对应的所述第二图像特征,包括:将与所述初始卷积核对应的第一图像特征和所述初始卷积核所接收的输入特征分别跟所述第一控制系数和所述第二控制系数相乘后再相加的结果作为调整后的所述初始卷积核的输入。

如此,实现了通过调整控制系数来影响第一图像特征对后续计算第二图像特征的参与程度,也通过第一控制系数和第二控制系数来体现参与程度不同,有利于探索网络模型中的冗余卷积核。

根据第二方面,在一种可能的实现方式中,对应于同一卷积核的第一控制系数和第二控制系数满足相加之和等于1的约束条件。

如此,通过控制系数的约束条件实现了第一控制系数和第二控制系数的变化是相关的,从而有利于探索网络模型中的冗余卷积核。

根据第二方面,在一种可能的实现方式中,基于所述损耗函数的输出满足预设条件时得到的第一控制系数集合和第二控制系数集合,选择所述各级卷积层的初始卷积核中的一部分为冗余卷积核,包括:当与所述初始卷积核对应的第二控制系数减去与所述初始卷积核对应的第一控制系数的差值小于预设阈值时,判断所述初始卷积核是冗余卷积核。

如此,通过第一控制系数和第二控制系数的比较,从而有效衡量了卷积核的重要性,并且通过预设阈值来控制剪枝过程,从而有利于根据具体需求灵活配置。

根据第二方面,在一种可能的实现方式中,所述损耗函数的输出满足预设条件时得到的第一控制系数集合和第二控制系数集合分别指示所述各级卷积层的初始卷积核对于实现目标的无关性和重要性。

如此,实现了尽量减少无关因素的干扰。

根据第二方面,在一种可能的实现方式中,所述图像处理系统包括处理器和存储器,所述存储器存储计算机指令,所述计算机指令被所述处理器执行以进行图像处理操作,所述图像处理操作根据所述的方法压缩后的神经网络模型。

如此,通过将压缩后的神经网络模型作为图像处理操作的基础,有利于降低时延和减少对计算能力和内存的需求。

第三方面,本申请实施例提供了一种计算机存储介质,所述计算机存储介质保存计算机指令,所述计算机指令被处理器执行时,使得所述处理器执行以下操作:获取带有标签的训练数据;基于所述训练数据获取高仿数据,其中,所述高仿数据与所述训练数据具有相似分布规律,所述高仿数据不包含与所述标签有关信息;将所述训练数据和所述高仿数据输入到所述神经网络模型分别得到与所述神经网络模型的各级操作层一一对应的多个训练特征和多个高仿特征,其中,所述神经网络模型的各级操作层上的操作算子各自分配有控制系数,与特定操作层对应的训练特征根据与所述特定操作层的前一层对应的高仿特征和训练特征以及与所述特定操作层的操作算子对应的控制系数确定;根据所述训练数据,所述高仿数据,所述标签以及所述控制系数,计算损耗函数;基于所述损耗函数,对所述控制系数进行调整;基于调整后的控制系数,所述训练数据和所述高仿数据,继续进行控制系数调整的过程,直至所述损耗函数的输出满足预设条件;基于所述损耗函数的输出满足预设条件时得到的控制系数,计算所述神经网络模型的各级操作层上的操作算子各自的重要性指标;和根据所计算出的所述神经网络模型的各级操作层上的操作算子各自的重要性指标,剪掉不重要的操作算子得到剪枝后的神经网络模型。

第三方面所描述的技术方案,通过将与高仿数据相关的高仿特征作为与训练数据相关的训练特征的对照和补充,以及通过调整控制系数来影响高仿特征对后续计算训练特征的参与程度,从而充分挖掘出网络输出和操作算子之间的关系,有利于探索网络模型中的冗余操作算子,同时尽量减少无关因素的干扰,有利于剪枝结果的稳定性和可靠性。

附图说明

为了说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。

图1示出了本申请实施例提供的神经网络剪枝方法的应用场景。

图2示出了本申请实施例提供的获取真实数据和高仿数据的流程示意图。

图3示出了本申请实施例提供的将图2所示的真实数据和高仿数据输入到神经网络模型中进行传递的示意图。

图4示出了本申请实施例提供的一种实现方式的神经网络剪枝方法的流程示意图。

图5示出了本申请实施例提供的对用于图像处理的网络模型进行压缩的方法的流程示意图。

具体实施方式

本申请实施例提供了一种对神经网络模型进行剪枝的方法。所述方法包括:获取带有标签的训练数据;基于所述训练数据获取高仿数据,其中,所述高仿数据与所述训练数据具有相似分布规律,所述高仿数据不包含与所述标签有关信息;将所述训练数据和所述高仿数据输入到所述神经网络模型分别得到与所述神经网络模型的各级操作层一一对应的多个训练特征和多个高仿特征,其中,所述神经网络模型的各级操作层上的操作算子各自分配有控制系数,与特定操作层对应的训练特征根据与所述特定操作层的前一层对应的高仿特征和训练特征以及与所述特定操作层的操作算子对应的控制系数确定;根据所述训练数据,所述高仿数据,所述标签以及所述控制系数,计算损耗函数;基于所述损耗函数,对所述控制系数进行调整;基于调整后的控制系数,所述训练数据和所述高仿数据,继续进行控制系数调整的过程,直至所述损耗函数的输出满足预设条件;基于所述损耗函数的输出满足预设条件时得到的控制系数,计算所述神经网络模型的各级操作层上的操作算子各自的重要性指标;和根据所计算出的所述神经网络模型的各级操作层上的操作算子各自的重要性指标,剪掉不重要的操作算子得到剪枝后的神经网络模型。如此,通过将与高仿数据相关的高仿特征作为与训练数据相关的训练特征的对照和补充,以及通过调整控制系数来影响高仿特征对后续计算训练特征的参与程度,从而充分挖掘出网络输出和操作算子之间的关系,有利于探索网络模型中的冗余操作算子,同时尽量减少无关因素的干扰,有利于剪枝结果的稳定性和可靠性。

本申请实施例可用于以下应用场景,包括但不限于,部署到边缘设备上(例如移动电话、可穿戴设备等)的基于神经网络模型的处理系统,用于大规模计算机视觉应用(例如图像分类、目标检测和视频分析等功能),或者用于语音信号处理、自然语言处理、推荐系统,以及其他由于有限资源和时延要求需要对神经网络模型进行压缩去除冗余的操作算子(例如用于卷积运算的卷积核或者用于全连接操作的全连接算子)的情况。

本申请实施例可以依据具体应用环境进行调整和改进,此处不做具体限定。

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请的实施例进行描述。

请参阅图1,图1示出了本申请实施例提供的神经网络剪枝方法的应用场景。如图1所示,在步骤S100获得初始神经网络模型,具体地,可以获取初始神经网络模型的初始模型参数。初始模型参数包括初始神经网络模型的各级卷积层的初始卷积核,还可以包括池化层和全连接层等其它常见构筑,还可以包括初始神经网络模型的内部架构等。初始神经网络模型可以是基于深度学习的算法模型,可以用于大规模计算机视觉应用,例如用来实现图像分类、目标检测和视频分析等功能,还可以用来实现筛选推荐内容、自然语言处理和语音信号分析等功能。在步骤S110,对在步骤S100获得的初始神经网络模型进行剪枝,例如去除不重要的或者冗余的卷积核,又或者例如去除不重要的全连接层或者其中的部分全连接操作。

应当理解的是,初始神经网络模型可以理解成包含成一个或多个卷积层,一个或多个全连接层,以及其他可能的构筑。其中,卷积层和全连接层还有其它类似的结构可以称之为初始神经网络模型的操作层,而操作层上有相应的操作算子来完成对应的运算操作。例如卷积层上有卷积核来完成卷积操作,或者例如全连接层上有全连接算子来完成全连接操作,或者例如其它构筑提供像是线性叠加之类的运算操作。下面以操作层为卷积层,操作算子为卷积核以及运算操作为卷积操作为例。下面的实施例以卷积神经网络模型的卷积层的卷积核为例子,但是应当理解成可以适用于其他操作方式和其它架构的神经网络模型。

根据下面本申请实施例详细叙述的网络剪枝流程,步骤S110的剪枝过程实现了准确挖掘出卷积核和网络输出之间的关系,尽量减少无关因素对剪枝过程的干扰,从而在大幅简化初始神经网络模型的同时还保留了网络预测准确率,并且提高了剪枝结果的稳定性和可靠性。在步骤S120,将剪枝后的神经网络模型部署到边缘设备上。边缘设备可以是移动电话、可穿戴设备或者其它需要在本地处理深度学习相关的任务且受限于本地有限的资源的设备。例如,初始神经网络模型是用于实现目标检测的模型,则可以对该初始神经网络模型进行剪枝后部署到用于目标检测的安防摄像头等设备上,从而利用简化的神经网络模型占用较少的计算能力和内存,也有利于节省能耗和缩短时延。

在一些示例性实施例中,在步骤S110和步骤S120之间,还可能增加一个步骤,对剪枝后的神经网络模型进行再次训练,从而微调模型参数以便进一步提高网络性能,例如通过重新训练来微调各卷积层的卷积核的权重系数。

请参阅图2,图2示出了本申请实施例提供的获取真实数据和高仿数据的流程示意图。如图2所示,该流程包括以下步骤。

步骤S200:获取真实数据。

其中,真实数据是指在监督学习下带有标签的数据,可以是包含目标有关信息的训练图像,或者可以是公开的训练数据集、基准数据集及验证数据集。例如,真实数据可以是基准数据集CIFAR-10或者大规模数据集ImageNet(ILSVRC-2012)。真实数据可以带有一定的分布规律,例如符合高斯分布规律。真实数据可以是根据具体应用场景而配置的训练数据集。例如,当神经网络模型用于图像识别时,真实数据可以是用于训练图像识别的神经网络模型通用的训练图像集。而当神经网络模型用于语音识别和处理时,则真实数据可以是用于训练人工智能处理语音信号通用的训练数据集。类似地,当神经网络模型用于自然语言处理,则真实数据可以是用于训练处理自然语言的神经网络模型通用的训练自然语言信号,例如用在机器翻译的训练上的原始文本和翻译文本。当神经网络模型用于筛选推荐内容用于自动推送,则真实数据可以是用于训练自动推荐系统的神经网络模型的训练资料,例如用在向电子商务用户自动推送的商品资料。这些可以根据具体应用场景而定,在此不做具体限制。

步骤S202:通过对抗生成模型生成高仿数据。

其中,对抗生成模型是基于生成式对抗网络(Generative AdversarialNetworks,GAN)算法的神经网络模型。以生成图片为例,GAN算法的原理是通过生成网络和判别网络之间的博弈来生成尽可能真实的图片。因此,给定了步骤S200获取的真实数据,可以通过训练对抗生成模型来生成高仿数据。

步骤S204:通过损失函数判断生成的高仿数据是否满足要求。

其中,损失函数需要针对特定要求来设计,从而根据损失函数来优化对抗生成模型。对高仿数据的要求有两点:第一个是高仿数据必须具有与真实数据相似的分布规律。这里,相似的分布规律可以理解成真实数据和高仿数据在高维空间的分布相似,例如都具有高斯分布的特性。例如假设真实数据符合高斯分布规律,则高仿数据也必须满足高斯分布规律。第二个是高仿数据包含尽可能少的目标相关信息,或者与真实数据里带有的标签相关的信息。在理想的情况下,高仿数据不包含目标相关信息。这里,目标相关信息对应的是与卷积核重要性相关的信息。而高仿数据不包含目标相关信息,意味着后续根据高仿数据得到的控制系数或者重要性度量的信息,也是与卷积核的重要性无关的。因此,通过将真实数据作为实验组去获得与卷积核重要性相关的信息,而将高仿数据作为控制组去获得与卷积核重要性不相关的信息,则可以通过比较真实数据和高仿数据分别引起的响应而实现对无关因素的减免,例如可以通过将包含目标相关信息的卷积核重要性的度量指标减去不包含目标相关信息的卷积核重要性的度量指标。

在步骤S204中,可以通过合理设计GAN算法的损失函数,从而度量生成的高仿数据是否满足上述两个要求。例如,可以通过数值化手段度量高仿数据中所包括的目标相关信息的程度,当该度量数值小于某个阈值的时候,可以判断该高仿数据满足上述两个要求。真实数据和高仿数据之间的关系可以表示成公式(1)。

其中,X表示真实数据,

步骤S206:输出真实数据和高仿数据。

其中,高仿数据是经过步骤S204判断满足上述要求,也就是具有与真实数据相似的分布规律以及不包含目标相关信息或者包含的目标相关信息程度小于预设阈值。

步骤S208:根据损失函数的反馈优化对抗生成模型。

其中,在步骤S204判断高仿数据不满足上述要求,因此损失函数提供反馈以优化对抗生成模型。在对抗生成模型被优化后,再次执行步骤S202,用优化后的对抗生成模型生成新的高仿数据,然后再次在步骤S204判断新的高仿数据是否满足要求。如此,通过步骤S202、S204和S208的循环,构成了生成高仿数据、判断是否满足要求以及根据反馈优化模型的循环。通过多次的迭代后,最后生成满足要求的高仿数据并在步骤S206输出。

在一些示例性实施例中,相比起通过损失函数判断是否满足要求,可以通过预设的迭代次数并在循环生成高仿数据和优化模型的次数达到迭代次数后就输出最新的高仿数据。

请参阅图3,图3示出了本申请实施例提供的将图2所示的真实数据和高仿数据输入到神经网络模型中进行传递的示意图。应当理解的是,图3的神经网络模型可以理解成包含成一个或多个卷积层,一个或多个全连接层,以及其他可能的构筑。其中,卷积层和全连接层还有其它类似的结构可以称之为神经网络模型的操作层,而操作层上有相应的操作算子来完成对应的运算操作。例如卷积层上有卷积核来完成卷积操作,或者例如全连接层上有全连接算子来完成全连接操作,或者例如其它构筑提供像是线性叠加之类的运算操作。下面以操作层为卷积层,操作算子为卷积核以及运算操作为卷积操作为例。下面的实施例以卷积神经网络模型的卷积层的卷积核为例子,但是应当理解成可以适用于其他操作方式和其它架构的神经网络模型。如图3所示,神经网络模型包括各级卷积层,各个卷积层还各自包含一个或多个卷积核,每个卷积核也有各自的权重系数。在图3中,为了简洁的目的,各级卷积层仅示出了第一卷积层300,第二卷积层302,第L卷积层304,以及第L+1卷积层306。应当理解的是,神经网络模型还可以包括其它未示出的卷积层,还可以包括池化层、或者全连接层等常见构筑,或者可以包括较复杂的构筑例如Inception模块、残差块(residualblock)等。这些可以根据具体应用场景而定,在此不做具体限定。另外,第一卷积层、第二卷积层以及第L卷积层均是从数据传递的角度而言,其中第一卷积层指的是该神经网络模型按其阶层结构对输入信息进行第一次卷积运算或者特征提取的卷积层,而第二卷积层则是在第一卷积层之后进行第二次卷积运算或者特征提取的卷积层,以此类推,第L卷积层是第L次进行卷积运算或者特征提取的卷积层。应当理解的是,在第一卷积层之前可能还配置有输入层用来进行输入特征的标准化操作,而在第一卷积层之后可能还配置有池化层和全连接层。在第一卷积层和第二卷积层可能还配置有更复杂的构筑或者模块。这些可以根据具体应用场景而定,在此不做具体限定。

如图3所示,高仿数据和真实数据输入到同一个神经网络模型,但是有不同的传递过程。为了表示方便,在图3中同时出现了两次第一卷积层300,应当理解为这是同一个第一卷积层300,只是分别针对真实数据和高仿数据进行卷积运算。类似地,图3中出现了两次第二卷积层302,两次第L卷积层304,这些都是分别针对真实数据和高仿数据的传递过程进行卷积运算。关于高仿数据的传递过程有如下细节:高仿数据输入到第一卷积层300进行卷积运算,第一卷积层300输出的结果向前传递到第二卷积层302进行卷积运算,第二卷积层302输出的结果依次传递到第L卷积层304进行卷积运算。其中,第L卷积层304有三个卷积核,分别是W

请继续参阅图3,关于真实数据的传递过程有如下细节:真实数据输入到第一卷积层300进行卷积运算,第一卷积层300输出的关于真实数据传递过程的卷积运算结果被输入到第一卷积层输出的调制层310。第一卷积层输出的调整层310接收了第一卷积层300输出的关于真实数据传递过程的卷积运算结果,还接收第一卷积层300输出的关于高仿数据传递过程的卷积运算结果,对二者进行混合调制,然后将混合调制的结果传递到第二卷积层302进行卷积运算。第一卷积层输出的调整层310受到调制层控制参数分配器340的控制,由调制层控制参数分配器340来设置用于混合调制的控制参数从而影响混合调制的结果。类似地,第二卷积层302输出的关于真实数据传递过程的卷积运算结果,被传递到第二卷积层输出的调制层320。第二卷积层输出的调制层320接收了第二卷积层302输出的关于真实数据传递过程的卷积运算结果,还接收第二卷积层302输出的关于高仿数据传递过程的卷积运算结果,对二者进行混合调制,然后将混合调制的结果传递到下一个卷积层进行卷积运算。第二卷积层输出的调制层320受到调制层控制参数分配器340的控制,由调制层控制参数分配器340来设置用于混合调制的控制参数从而影响混合调制的结果。因此,真实数据在输入到神经网络模型后的传递过程,与高仿数据的传递过程不同的在于,各个卷积层的输出都要经过一个调制层的混合调制之后才会传递下去。而混合调制的结果是在同一个卷积层输出的关于真实数据传递过程的卷积运算结果和关于高仿数据传递过程的卷积运算结果的基础上,再根据调制层控制参数分配器340所分配的用于混合调制的控制系数得出。

下面以第L卷积层和第L+1卷积层之间的第L卷积层输出的调制层330为例来说明混合调制的构造。第L卷积层304有三个卷积核,分别是W

请继续参阅图3,在一些示例性实施例中,各个卷积核输出的关于高仿数据传递过程的卷积运算结果可以是与各个卷积核一一对应的多个高仿特征,而各个卷积核输出的关于真实数据传递过程的卷积运算结果可以是与各个卷积核一一对应的多个真实特征。如图3所示,真实数据和高仿数据在神经网络模型中逐层传递的过程不同。与特定卷积层对应的高仿特征通过将与所述特定卷积层的前一层对应的高仿特征跟所述特定卷积层的卷积核进行卷积操作得到。例如,图3所示的第二卷积层302输出的高仿特征就是将第一卷积层300输出的高仿特征跟第二卷积层302的卷积核进行卷积运算得到。与所述特定卷积层对应的真实特征通过将与所述特定卷积层的前一层对应的真实特征和高仿特征均输出到与所述特定卷积层的前一层对应的调制层进行混合调制之后,再跟所述特定卷积层的卷积核进行卷积操作得到。例如,图3所示的第二卷积层302输出的真实特征就是将第一卷积层300输出的真实特征和高仿特征都输出到第一卷积层输出的调制层310进行混合调制后再跟第二卷积层302的卷积核进行卷积运算得到。请继续参阅图3,在一些示例性实施例中,真实数据是实验组图像,高仿数据是控制组图像,并且控制组图像所包含的目标相关信息少于所述实验组图像。通过将控制组图像输入神经网络模型得到与各级卷积层一一对应的第一图像特征。通过将实验组图像输入神经网络模型,并根据第一图像特征以及对应的控制系数调整各级卷积层的卷积核的输入得到第二图像特征。这里控制系数的调整作用通过在各个卷积核的输入之前的调制层内的调制器来实现。

请继续参阅图3,图3所示的第L卷积层304和对应的第L卷积层输出的调制层330分别有三个卷积核和三个调制器。应当理解的是,图3所示的神经网络各个卷积层的卷积核数量,只是出于说明目的,不应被理解为限制性。在一些示例性实施例中,神经网络模型的特定卷积层可以有一个或者多个卷积核,每个卷积核有对应的调制器。在各个调制层进行的混合调制,可以通过设置第一控制系数和第二控制系数来实现。例如,与特定卷积层对应的真实特征通过将与特定卷积层的前一层对应的真实特征和高仿特征分别根据第一控制系数和第二控制系数调整后相加再跟特定卷积层的卷积核进行卷积操作得到。其中,调制层控制参数分配器340为各个调制层的各个调制器分配对应的第一控制系数和第二控制系数,从而实现关于真实数据的传递过程的各个混合调制操作。

请参阅图4,图4示出了本申请实施例提供的一种实现方式的神经网络剪枝方法的流程示意图。图4所示的方法包括如下步骤。

步骤S400:获取带有标签的训练数据并基于训练数据获取高仿数据。

其中,训练数据是指在监督学习下带有标签的数据,可以是包含目标有关信息的训练图像,或者可以是公开的训练数据集、基准数据集及验证数据集。例如,训练数据可以是基准数据集CIFAR-10或者大规模数据集ImageNet(ILSVRC-2012)。训练数据带有一定的分布规律,例如符合高斯分布规律。训练数据可以是根据具体应用场景而配置的训练数据集。例如,当神经网络模型用于图像识别时,训练数据可以是用于训练图像识别的神经网络模型通用的训练图像集,而当神经网络模型用于语音识别和处理时,则训练数据可以是用于训练人工智能处理语音信号通用的训练数据集。类似地,当神经网络模型用于自然语言处理,则真实数据可以是用于训练处理自然语言的神经网络模型通用的训练自然语言信号,例如用在机器翻译的训练上的原始文本和翻译文本。当神经网络模型用于筛选推荐内容用于自动推送,则真实数据可以是用于训练自动推荐系统的神经网络模型的训练资料,例如用在向电子商务用户自动推送的商品资料。这些可以根据具体应用场景而定,在此不做具体限制。

对高仿数据的要求有两点:第一个是高仿数据必须具有与训练数据相似的分布规律。这里,相似的分布规律可以理解成训练数据和高仿数据在高维空间的分布相似,例如都具有高斯分布的特性。例如假设训练数据符合高斯分布规律,则高仿数据也必须满足高斯分布规律。第二个是高仿数据包含尽可能少的目标相关信息,或者与训练数据里带有的标签相关的信息。在理想的情况下,高仿数据不包含目标相关信息。这里,目标相关信息对应的是与卷积核重要性相关的信息。而高仿数据不包含目标相关信息,意味着后续根据高仿数据得到的控制系数或者重要性度量的信息,也是与卷积核的重要性无关的。

请参阅图2和图4,图4的训练数据可以对应图2的真实数据,而图4的高仿数据对应图2的高仿数据。因此,训练数据和高仿数据之间的关系可以表示为上述公式(1),其中,X表示训练数据,

步骤S402:将训练数据和高仿数据输入到神经网络模型分别得到与神经网络模型的各级操作层一一对应的多个训练特征和多个高仿特征,其中,神经网络模型的各级操作层上的操作算子各自分配有控制系数,与特定操作层对应的训练特征根据与所述特定操作层的前一层对应的高仿特征和训练特征以及与所述特定操作层的操作算子对应的控制系数确定。

其中,高仿特征和训练特征分别对应高仿数据在神经网络模型中逐层传递过程中产生的中间输出结果和训练数据在神经网络模型中逐层传递过程中产生的中间输出结果。与所述特定操作层对应的高仿特征通过将与所述特定操作层的前一层对应的高仿特征跟所述特定操作层的操作算子进行运算操作得到。所述控制系数包括第一控制系数和第二控制系数。与所述特定操作层对应的训练特征通过将与所述特定操作层的前一层对应的训练特征和高仿特征分别根据所述第一控制系数和所述第二控制系数调整后相加再跟所述特定操作层的操作算子进行运算操作得到。下面以操作层为卷积层,操作算子为卷积核以及运算操作为卷积操作为例。下面的实施例以卷积神经网络模型的卷积层的卷积核为例子,但是应当理解成可以适用于其他操作方式和其它架构的神经网络模型。例如,神经网络模型除了卷积层和全连接层还有其它类似的结构可以称之为神经网络模型的操作层,而操作层上有相应的操作算子来完成对应的运算操作。例如卷积层上有卷积核来完成卷积操作,或者例如全连接层上有全连接算子来完成全连接操作,或者例如其它构筑提供像是线性叠加之类的运算操作。

请继续参阅图4,与第L+1卷积层对应的高仿特征通过与第L层对应的高仿特征跟第L+1卷积层的卷积核进行卷积操作得到,而与第L+1卷积层对应的真实特征通过与第L层对应的训练特征和高仿特征分别根据第一控制系数和第二控制系数调整后相加再跟第L+1卷积层的卷积核进行卷积操作得到。与第L卷积层对应的高仿特征和训练特征可以表示为公式(2)和(3)。

其中,X表示训练数据,

其中,

其中,β

步骤S404:根据训练数据,高仿数据,标签以及控制系数,计算损耗函数。

其中,在步骤S400获得的带有标签的训练数据以及基于训练数据获取的高仿数据,其中的标签可以理解成目标有关信息。因为高仿数据不包含目标相关信息,而目标相关信息对应的是与卷积核重要性相关的信息,所以高仿数据具有其不包含与卷积核重要性相关的信息这一属性。应当理解的是,在步骤S402将训练数据和高仿数据输入到卷积神经网络模型而获得的多个训练特征和多个高仿特征分别与各个卷积层的卷积核一一对应,并且每个卷积核也分配有对应的控制系数包括第一控制系数和第二控制系数。也就是说,高仿特征和训练特征分别对应高仿数据在卷积神经网络模型中逐层传递过程中产生的中间输出结果和训练数据在卷积神经网络模型中逐层传递过程中产生的中间输出结果。结合步骤S402提到的高仿特征的生成方式,也即与所述特定卷积层对应的高仿特征通过将与所述特定卷积层的前一层对应的高仿特征跟所述特定卷积层的卷积核进行卷积操作得到,这意味着高仿特征只涉及到卷积神经网络模型中各个卷积层的卷积核的卷积运算操作。因此高仿数据的不包含与卷积核重要性相关的信息这一属性在网络传递过程中可以保持。高仿数据以及由高仿数据在卷积神经网络模型中逐层传递产生的高仿特征,均保持了不包含与卷积核重要性相关的信息这一属性。例如,如图3所示的高仿数据传递过程,从第一卷积层300到第二卷积层302直到第L卷积层304。如此,在网络传递过程中产生的高仿特征与输入到模型的高仿数据在关于其中包含的目标相关信息的程度方面保持了一致,也即如果高仿数据不包含与卷积核重要性相关的信息,则高仿特征也不包含与卷积核重要性相关的信息。如此可以通过生成高仿数据和高仿特征,作为训练数据和训练特征的对照和补充,从而充分挖掘出网络输出和卷积核之间的关系,探索网络模型中的冗余卷积核。

相对于高仿数据和高仿特征,训练数据带有标签也包含与卷积核重要性相关的信息。结合步骤S402提到的训练特征的生成方式,也即与所述特定卷积层对应的训练特征通过将与所述特定卷积层的前一层对应的训练特征和高仿特征分别根据所述第一控制系数和所述第二控制系数调整后相加再跟所述特定卷积层的卷积核进行卷积操作得到,这意味着训练特征的生成不仅涉及前一层输出的训练特征也涉及到前一层输出的高仿特征,而且通过第二控制系数来调整高仿特征的参与程度。结合公式(5)提到的第一控制系数和第二控制系数之间的约束条件,这意味着对应同一卷积核的高仿特征和训练特征,各自对后续特征图的计算的参与程度是通过成对的第一控制系数和第二控制系数来调节,而且表现为“此消彼长”。也就是说,当高仿特征的参与程度提高了,这意味着第二控制系数增加,也就意味着对应的第一控制系数受到约束条件的影响而必须建设,从而导致对应的训练特征的参与程度必须下降,反之亦然。如此,可以设计损耗函数来优化控制系数,从而挖掘冗余卷积核。损耗函数可以表示为公式(6)。

其中,函数E是损耗函数,X表示训练数据,

在一些示例性实施例中,可以根据所述训练数据,所述高仿数据,所述标签,第一控制系数集合,第二控制系数集合,计算所述损耗函数。其中,所述第一控制系数集合包括与所述卷积神经网络模型的各级卷积层上的卷积核各自对应的第一控制系数,所述第二控制系数集合包括与所述卷积神经网络模型的各级卷积层上的卷积核各自对应的第二控制系数。

步骤S406:基于损耗函数对控制系数进行调整,基于调整后的控制系数,训练数据和高仿数据,继续进行控制系数调整的过程,直至损耗函数的输出满足预设条件。

其中,在上一步骤S404通过损耗函数E挖掘出当前控制系数下的神经网络对训练数据和高仿数据的响应,在此步骤S406可以根据损耗函数E的反馈来调整控制系数,包括调整特定卷积核的第一控制系数和第二控制系数。例如基于所述损耗函数,对所述卷积神经网络模型的各级卷积层上的卷积核各自的第一控制系数和第二控制系数分别进行调整。在根据损耗函数E的反馈调整了各个卷积层的卷积核对应的控制系数后,再次输入训练数据和高仿数据到调整后的卷积神经网络模型分别得到与调整后的卷积神经网络模型的各级卷积层一一对应的多个训练特征和多个高仿特征。如此,通过循环进行生成训练特征和高仿特征以及调整控制系数的过程,经过多次的迭代,可以实现损耗函数的输出满足预设条件,也就是达到设计的优化效果。应当理解的是,在多次迭代和调整的过程中,训练数据和高仿数据保持不变,并且模型中的其他参数例如卷积层中的权重等都是固定的,仅仅调整控制系数来挖掘冗余卷积核。因此,高仿数据以及由此产生的高仿特征在关于其中包含的目标相关信息的程度方面保持了一致。而控制系数决定了高仿特征对于后续训练特征的生成过程的参与程度,因此可以通过调整控制系数来影响高仿特征的参与程度,从而使得卷积核的控制系数反映了高仿特征所代表的无关因素对特定卷积核的影响,进而可以借助比较第一控制系数和第二控制系数来衡量卷积核的重要性。

步骤S408:基于所述损耗函数的输出满足预设条件时得到的控制系数,计算所述神经网络模型的各级操作层上的操作算子各自的重要性指标;和根据所计算出的所述神经网络模型的各级操作层上的操作算子各自的重要性指标,剪掉不重要的操作算子得到剪枝后的神经网络模型。

其中,在上一步骤S406中得到根据损耗函数而优化好的网络中所有的控制系数。第一控制系数可以反映对应的卷积核对于训练数据的响应,而第二控制系数可以反映对应的卷积核对于高仿数据的响应,可以通过统计量来度量卷积核的重要性,参考公式(7)。

其中,β

在一些示例性实施例中,在步骤S408之后可能增加一个步骤,对剪枝后的卷积神经网络模型进行再次训练,从而微调模型参数以便进一步提高网络性能,例如通过重新训练来微调各卷积层的卷积核的权重系数。

结合步骤S400至步骤S408,其中以操作层为卷积层,操作算子为卷积核以及运算操作为卷积操作为例。应当理解的是,神经网络模型除了卷积层和全连接层还有其它类似的结构可以称之为神经网络模型的操作层,而操作层上有相应的操作算子来完成对应的运算操作。例如卷积层上有卷积核来完成卷积操作,或者例如全连接层上有全连接算子来完成全连接操作,或者例如其它构筑提供像是线性叠加之类的运算操作。另外,同一个神经网络模型中,可以存在多个操作层中既有卷积层又有全连接层的情况,而且卷积核进行卷及操作输出的结果可以被下一操作层的全连接算子接收后进行全连接操作。因此,在一些示例性实施例中,步骤S400至步骤S408中提到的卷积层可以部分地替换成全连接层或者部分地替换成其它带有线性叠加运算成分的操作层,卷积核可以部分地替换成全连接算子或者部分地替换成其它进行线性叠加运算的算子或者算符,而运算操作可以对应卷积操作、全连接操作或者其他线性叠加操作。

请参阅图5,图5示出了本申请实施例提供的对用于图像处理的网络模型进行压缩的方法的流程示意图。应当理解的是,图5的网络模型可以理解成包含成一个或多个卷积层,一个或多个全连接层,以及其他可能的构筑。其中,卷积层和全连接层还有其它类似的结构可以称之为神经网络模型的操作层,而操作层上有相应的操作算子来完成对应的运算操作。例如卷积层上有卷积核来完成卷积操作,或者例如全连接层上有全连接算子来完成全连接操作,或者例如其它构筑提供像是线性叠加之类的运算操作。下面以操作层为卷积层,操作算子为卷积核以及运算操作为卷积操作为例。下面的实施例以卷积神经网络模型的卷积层的卷积核为例子,但是应当理解成可以适用于其他操作方式和其它架构的神经网络模型。图5所示的方法包括如下步骤。

步骤S500:获取初始神经网络模型的初始模型参数,初始模型参数包括初始神经网络模型的各级卷积层的初始卷积核。

其中,初始神经网络模型是已经训练好的网络模型,用于大规模计算机视觉应用,例如用来实现图像分类、目标检测和视频分析等功能。并且,该初始神经网络模型预计要部署到边缘设备上,例如移动电话、可穿戴设备等,所以受限于有限的资源和能耗,必须压缩模型以满足对时延和功耗的要求,同时又必须尽量保持该模型执行图像处理任务的预测精度。

步骤S502:获取实验组图像,根据实验组图像和已训练的对抗生成模型得到控制组图像。

其中,实验组图像指的是带有标签的图像集,例如用于训练图像识别的神经网络模型通用的训练图像集、基准数据集CIFAR-10或者大规模数据集ImageNet(ILSVRC-2012)。控制组图像具有与实验组图像相似的分布,例如都具有高斯分布。控制组图像所包含的目标相关信息少于实验组图像。这里,目标相关信息对应的是与卷积核重要性相关的信息。控制组图像包含尽可能少的目标相关信息,从而可以通过控制组图像来筛选出与卷积核重要性不相关的无关因素,进而有利于通过比照实验组图像和控制组图像分别引起的响应来去除冗余的卷积核。

步骤S504:为各级卷积层的初始卷积核分配相应的第一控制系数和第二控制系数;将控制组图像输入初始神经网络模型得到与各级卷积层一一对应的第一图像特征;将实验组图像输入初始神经网络模型,并根据第一控制系数,第二控制系数,第一图像特征调整各级卷积层的初始卷积核的输入得到与各级卷积层一一对应的第二图像特征。

其中,第一图像特征对应控制组图像在所述初始神经网络模型中逐层传递过程中产生的中间输出结果,而第二图像特征对应实验组图像在所述初始神经网络模型中逐层传递过程中产生的中间输出结果。并且,第一图像特征的生成过程为,与特定卷积层对应的第一图像特征通过将与特定卷积层的前一层对应的第一图像特征跟特定卷积层的卷积核进行卷积操作得到。相对的,第二图像特征的生成过程为:与特定卷积层对应的第二图像特征通过将与特定卷积层的前一层对应的第一图像特征和第二图像特征分别根据第一控制系数和第二控制系数调整后相加再跟特定卷积层的卷积核进行卷积操作得到。对于特定卷积核来说,相对于该特定卷积核的前一层所输出的第二图像特征也是该特定卷积核在处理实验组图像传递过程中所接收的输入特征,因此,第二图像特征的生成过程也可以表述为:将与特定卷积核对应的第一图像特征和特定卷积核所接收的输入特征分别跟所述第一控制系数和所述第二控制系数相乘后再相加的结果作为调整后的特定卷积核的输入。并且,对应于同一卷积核的第一控制系数和第二控制系数满足相加之和等于1的约束条件。

步骤S506:根据实验组图像,控制组图像,实验组图像所包括的目标相关信息,第一控制系数集合,第二控制系数集合,计算损耗函数。

其中,所述第一控制系数集合包括与所述各级卷积层的初始卷积核各自对应的第一控制系数,所述第二控制系数集合包括与所述各级卷积层的初始卷积核各自对应的第二控制系数。结合前面提到的第一图像特征的生成过程,在网络传递过程中产生的第一图像特征与输入的控制组图像在关于其中包含的目标相关信息的程度方面保持了一致。换句话说,控制组图像包含尽可能少的目标相关信息,这一属性会在第一图像特征的生成和向下传递过程中保持。因此,假设控制组图像不包含与卷积核重要性相关的信息,则第一图像特征也不包含与卷积核重要性相关的信息。再结合前面提到的第二图像特征的生成过程,第二图像特征的生成不仅涉及前一层输出的第一图像特征也涉及到前一层输出的第二图像特征,并且通过第一控制系数和第二控制系数来分别调整各自的参与程度。并且,第一控制系数和第二控制系数要满足上述约束条件,这意味着,当第一图像特征的参与程度加强则意味着第一控制系数增加,必然导致第二控制系数减少和第二图像特征的参与程度削弱。这种“此消彼长”的关系,使得可以通过把包含尽可能少的目标相关信息的第一图像特征作为第二图像特征的对照和补充,从而充分挖掘出网络输出和卷积核之间的关系,探索网络模型中的冗余卷积核。

为了充分挖掘冗余卷积核,需要通过损耗函数来优化网络中所有控制系数,从而充分衡量每个卷积核的重要性信息。损耗函数的输入是神经网络模型的输出,而神经网络模型的输出受到所述实验组图像,所述控制组图像,第一控制系数集合和第二控制系数集合的影响。因此,损耗函数可以利用实验组图像所包括的目标相关信息来进行监督,从而优化各个卷积核的控制系数。也就是说,可以根据所述实验组图像,所述控制组图像,所述实验组图像所包括的目标相关信息,第一控制系数集合,第二控制系数集合,计算损耗函数。

步骤S508:判断损耗函数是否满足预设条件。如果满足执行下一步骤S512,如果不满足执行步骤S510。

其中,通过循环进行生成第一图像特征和第二图像特征以及调整控制系数的过程,经过多次的迭代,可以实现损耗函数的输出满足预设条件,也就是达到设计的优化效果。应当理解的是,在多次迭代和调整的过程中,输入到神经网络模型的控制组图像和实验组图像保持不变,也就是用来产生响应的激励不变,并且模型中的其他参数例如卷积层中的权重等都是固定的,仅仅调整控制系数来测试不同的响应并挖掘冗余卷积核。

步骤S510:基于损耗函数,对第一控制系数集合和第二控制系数集合进行调整。

其中,当在上一步骤S508判断不满足预设条件时,可以根据损耗函数反馈来调整控制系数从而满足收敛性条件实现优化目的。

步骤S512:基于损耗函数的输出满足预设条件时得到的第一控制系数集合和第二控制系数集合,选择各级卷积层的初始卷积核中的一部分为冗余卷积核;从初始神经网络模型中剪去所选择的冗余卷积核得到压缩后的神经网络模型。

其中,同一个卷积核生成第一图像特征和第二图像特征,如果基于实验组图像输入的第二图像特征不能抑制其高仿副本也就是基于控制组图像输入的第一图像特征,这体现为第二控制系数要小于对应的第一控制系数,则意味着该卷积核为冗余卷积核应该被去除。如此,当与所述初始卷积核对应的第二控制系数减去与所述初始卷积核对应的第一控制系数的差值小于预设阈值时,判断所述初始卷积核是冗余卷积核。这里,第二控制系数减去第一控制系数的差值是衡量卷积核重要性的量化指标。通过将该量化指标和预设阈值比较,可以判断卷积核是否重要。预设阈值可以是事先设定的,也可以根据具体应用场景给定的压缩率。例如,在对计算能力和存储要求更高的场景下,可能需要设定更高的压缩率,从而可以设定更高的预设阈值来进一步压缩模型和去除冗余卷积核。也就是说,当与所述初始卷积核对应的第二控制系数减去与所述初始卷积核对应的第一控制系数的差值小于预设阈值时,判断所述初始卷积核是冗余卷积核。在一种可能的实现方式中,所述损耗函数的输出满足预设条件时得到的第一控制系数集合和第二控制系数集合分别指示所述各级卷积层的初始卷积核对于实现目标的无关性和重要性。

在一些示例性实施例中,在步骤S512之后可能增加一个步骤,对压缩后的神经网络模型进行再次训练,从而微调模型参数以便进一步提高网络性能,例如通过重新训练来微调各卷积层的卷积核的权重系数。

在一种可能的实现方式中,本申请实施例提供了一种布置在边缘设备上的图像处理系统。所述图像处理系统用于进行图像处理的神经网络模型是将未压缩的网络模型根据图3或图4所示的方法进行剪枝后得到。

在一种可能的实现方式中,本申请实施例提供了一种图像处理系统。所述图像处理系统包括处理器和存储器,所述存储器存储计算机指令,所述计算机指令被所述处理器执行以进行图像处理操作。所述图像处理操作根据图4或图5所示的方法压缩后的神经网络模型。

在一种可能的实现方式中,本申请实施例提供了一种计算机存储介质,所述计算机存储介质保存计算机指令,所述计算机指令被处理器执行时,使得所述处理器执行图3或图4所示的方法。

在一种可能的实现方式中,图4或图5涉及的神经网络模型的各级操作层包括至少一个卷积层,所述至少一个卷积层的操作算子包括至少一个卷积核,所述至少一个卷积核的运算操作是卷积操作。

在一种可能的实现方式中,图4或图5涉及的神经网络模型的各级操作层包括至少一个全连接层,所述至少一个全连接层的操作算子包括至少一个全连接算子,所述至少一个全连接算子的运算操作是全连接操作。

在一种可能的实现方式中,图4或图5涉及的神经网络模型是卷积神经网络模型,所述各级操作层均是卷积层,所述卷积神经网络的操作算子均是卷积核,所述卷积神经网络的操作算子的运算操作是卷积操作。

在一种可能的实现方式中,图4或图5涉及的神经网络模型是全连接神经网络模型,所述各级操作层均是全连接层,所述全连接神经网络的操作算子均是全连接算子,所述全连接神经网络的操作算子的运算操作是全连接操作。

参阅图1至图5,根据本申请实施例进行剪枝后的神经网络,被应用于基准数据集CIFAR-10和大规模ImageNet(ILSVRC-2012)数据集。其中,CIFAR-10数据集包含来自10类的60k RGB图像,用于训练的50k图像和用于测试的10k。ImageNet(ILSVRC-2012)是一个大型数据集,包含128万个训练图像和来自1000个类别的50k验证图像。

表(1)展示了用不同方法修剪得到的网络在测试集上的误差。其中,剪枝率设置为45%,实现了更低的测试误差,同时减少了更多的参数和计算量。例如,在修剪ResNet-56的56.0%FLOP之后达到了6.36%的误差(精度下降了0.06%),明显优于现有技术中的方法(例如通过HRank法进行修剪仅能在减少后实现6.83%的误差以及50.0%FLOPs。而且,即使对于紧凑的MobileNetV2,本申请实施例提供的方法仍然可以修剪40.3%的FLOP,而精度下降仅为0.24%。

表(1)CIFAR-10数据集上不同压缩方法的比较

在ImageNet(ILSVRC-2012)数据集上,本申请实施例提供的方法也超越了现有方法。表(2)报告了在ImageNet数据集。通过修剪具有两个不同修剪率的预训练网络,在减小了更多计算量和参数量的同时,使得修剪后的网络保持了更低的测试误差。

表(2)ImageNet数据集上不同压缩方法的比较

参阅图1至图5,结合表(1)和表(2),本申请实施例提供的神经网络剪枝方法,提出基于科学控制的神经网络剪枝的技术方案。其中,通过生成高仿特征来作为对照组,减小潜在无关因素对剪枝过程的影响,更准确地挖掘冗余卷积核,从而得到高准确率的紧凑网络。而且用高仿数据生成高仿特征的方法可以高效地为网络的每层产生高仿特征。

本申请提供的具体实施例可以用硬件,软件,固件或固态逻辑电路中的任何一种或组合来实现,并且可以结合信号处理,控制和/或专用电路来实现。本申请具体实施例提供的设备或装置可以包括一个或多个处理器(例如,微处理器,控制器,数字信号处理器(DSP),专用集成电路(ASIC),现场可编程门阵列(FPGA)等),这些处理器处理各种计算机可执行指令从而控制设备或装置的操作。本申请具体实施例提供的设备或装置可以包括将各个组件耦合在一起的系统总线或数据传输系统。系统总线可以包括不同总线结构中的任何一种或不同总线结构的组合,例如存储器总线或存储器控制器,外围总线,通用串行总线和/或利用多种总线体系结构中的任何一种的处理器或本地总线。本申请具体实施例提供的设备或装置可以是单独提供,也可以是系统的一部分,也可以是其它设备或装置的一部分。

本申请提供的具体实施例可以包括计算机可读存储介质或与计算机可读存储介质相结合,例如能够提供非暂时性数据存储的一个或多个存储设备。计算机可读存储介质/存储设备可以被配置为保存数据,程序器和/或指令,这些数据,程序器和/或指令在由本申请具体实施例提供的设备或装置的处理器执行时使这些设备或装置实现有关操作。计算机可读存储介质/存储设备可以包括以下一个或多个特征:易失性,非易失性,动态,静态,可读/写,只读,随机访问,顺序访问,位置可寻址性,文件可寻址性和内容可寻址性。在一个或多个示例性实施例中,计算机可读存储介质/存储设备可以被集成到本申请具体实施例提供的设备或装置中或属于公共系统。计算机可读存储介质/存储设备可以包括光存储设备,半导体存储设备和/或磁存储设备等等,也可以包括随机存取存储器(RAM),闪存,只读存储器(ROM),可擦可编程只读存储器(EPROM),电可擦可编程只读存储器(EEPROM),寄存器,硬盘,可移动磁盘,可记录和/或可重写光盘(CD),数字多功能光盘(DVD),大容量存储介质设备或任何其他形式的合适存储介质。

以上是本申请实施例的实施方式,应当指出,本申请具体实施例描述的方法中的步骤可以根据实际需要进行顺序调整、合并和删减。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。可以理解的是,本申请实施例以及附图所示的结构并不构成对有关装置或系统的具体限定。在本申请另一些实施例中,有关装置或系统可以包括比具体实施例和附图更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。本领域技术人员将理解,在不脱离本申请具体实施例的精神和范围的情况下,可以对具体实施例记载的方法和设备的布置,操作和细节进行各种修改或变化;在不脱离本申请实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本申请的保护范围。

相关技术
  • 用于神经网络剪枝的系统和神经网络的剪枝处理方法
  • 神经网络结构化剪枝方法、剪枝装置和电子设备
技术分类

06120112238385