CN111382839A - 剪枝神经网络的方法和装置 - Google Patents

剪枝神经网络的方法和装置 Download PDF

Info

Publication number
CN111382839A
CN111382839A CN202010109980.4A CN202010109980A CN111382839A CN 111382839 A CN111382839 A CN 111382839A CN 202010109980 A CN202010109980 A CN 202010109980A CN 111382839 A CN111382839 A CN 111382839A
Authority
CN
China
Prior art keywords
pruning
neural network
network
target
threshold
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.)
Granted
Application number
CN202010109980.4A
Other languages
English (en)
Other versions
CN111382839B (zh
Inventor
陈醒濠
张依曼
王云鹤
许春景
田奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202010109980.4A priority Critical patent/CN111382839B/zh
Publication of CN111382839A publication Critical patent/CN111382839A/zh
Application granted granted Critical
Publication of CN111382839B publication Critical patent/CN111382839B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/26Segmentation of patterns in the image field; Cutting or merging of image elements to establish the pattern region, e.g. clustering-based techniques; Detection of occlusion
    • G06V10/267Segmentation of patterns in the image field; Cutting or merging of image elements to establish the pattern region, e.g. clustering-based techniques; Detection of occlusion by performing operations on regions, e.g. growing, shrinking or watersheds

Abstract

本申请提供了人工智能领域中一种剪枝神经网络的方法,包括:根据目标神经网络的参数去除比例确定第一剪枝阈值,所述第一剪枝阈值用于剪枝目标神经网络中的第一子网络;根据所述目标神经网络的参数去除比例确定第二剪枝阈值,所述第二剪枝阈值用于剪枝所述目标神经网络中的第二子网络,所述第二子网络的功能与所述第一子网络的功能不同,其中,所述目标神经网络的参数去除比例与目标设备的资源大小负相关,所述目标设备为剪枝后的所述目标神经网络部署的设备;根据所述第一剪枝阈值和所述第二剪枝阈值对所述目标神经网络进行剪枝。基于不同的剪枝阈值进行剪枝能够减小剪枝处理对多任务神经网络的性能的负面影响。

Description

剪枝神经网络的方法和装置
技术领域
本申请涉及人工智能领域,尤其涉及一种剪枝神经网络的方法和装置。
背景技术
深度神经网络在分类、检测和分割等视觉任务中得到了广泛应用,然而,深度神经网络存在较多的冗余参数,导致深度神经网络的模型较大和计算复杂度较高,限制了深度神经网络在移动设备等小型设备上的部署和应用。
剪枝是小型化神经网络和加速神经网络的一种方法。剪枝能够去除神经网络的冗余参数,并且,剪枝后的神经网络可以直接在现有的神经网络推理框架中获得实际加速收益。目前的剪枝方法通常是针对分类任务等单个任务的方法,对于语义分割等涉及到多任务的神经网络,剪枝得到的神经网络的性能有待提高。
发明内容
本申请提供了一种剪枝神经网络的方法和装置,能够提高多任务神经网络剪枝后的得到的神经网络的性能。
第一方面,提供了一种剪枝神经网络的方法,包括:根据目标神经网络的参数去除比例确定第一剪枝阈值,所述第一剪枝阈值用于剪枝所述目标神经网络中的第一子网络;根据所述目标神经网络的参数去除比例确定第二剪枝阈值,所述第二剪枝阈值用于剪枝所述目标神经网络中的第二子网络,所述第二子网络的功能与所述第一子网络的功能不同,其中,所述目标神经网络的参数去除比例与目标设备的资源大小负相关,所述目标设备为剪枝后的所述目标神经网络部署的设备;根据所述第一剪枝阈值和所述第二剪枝阈值对所述目标神经网络进行剪枝。
多任务神经网络中不同的任务模块的参数量和重要性不同,因此,可以根据不同任务模块的参数量和重要性设置不同的剪枝阈值,基于不同的剪枝阈值进行剪枝能够减小剪枝处理对多任务神经网络的性能的负面影响。
可选地,所述根据所述第一剪枝阈值和所述第二剪枝阈值对所述目标神经网络进行剪枝,包括:训练所述目标神经网络得到稀疏神经网络,所述稀疏神经网络中重要通道的密度小于所述目标神经网络中重要通道的密度;根据所述第一剪枝阈值和所述第二剪枝阈值对所述稀疏神经网络进行剪枝。
稀疏神经网络指的是重要通道密度小于目标神经网络的重要通道密度的神经网络,将目标神经网络训练为稀疏神经网络,能够在剪枝时去除不重要的通道,减小剪枝处理对多任务神经网络的性能的负面影响。
可选地,所述根据所述第一剪枝阈值和所述第二剪枝阈值对所述稀疏神经网络进行剪枝,包括:根据所述第一剪枝阈值对所述稀疏神经网络中的所述第一子网络进行剪枝;根据所述第二剪枝阈值对所述稀疏神经网络中的所述第二子网络进行剪枝。
可选地,所述训练所述目标神经网络得到稀疏神经网络,包括:使用第一数据集和第二数据集交替训练所述第一子网络和所述第二子网络得到所述稀疏神经网络,其中,所述第一数据集用于训练所述第一子网络,所述第二数据集用于训练所述第二子网络。
第一数据集为适用于第一子网络的数据集,第二数据集为适用于第二子网络的数据集,因此,使用不同的数据集训练不同的子网络能够取得性能更好的稀疏神经网络。
第二方面,提供了一种剪枝神经网络的装置,包括用于执行第一方面中任一种方法的单元。
第三方面,提供了一种剪枝神经网络的设备,包括处理器和存储器,该存储器用于存储计算机程序,该处理器用于从存储器中调用并运行该计算机程序,使得该设备执行第一方面中任一种方法。
第四方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码被剪枝神经网络的装置运行时,使得该装置执行第一方面中任一种方法。
第五方面,提供了一种计算机可读介质,所述计算机可读介质存储有程序代码,所述程序代码包括用于执行第一方面中任一种方法的指令。
附图说明
图1是本申请提供的一种训练系统的架构示意图;
图2是本申请提供的一种神经网络芯片的架构示意图;
图3是本申请提供的一种多任务神经网络的示意图;
图4是本申请提供的一种剪枝方法的示意图;
图5是本申请提供的一种剪枝装置的示意图;
图6是本申请提供的一种剪枝设备的示意图。
具体实施方式
人工神经网络(artificial neural network,ANN),简称为神经网络(neuralnetwork,NN)或类神经网络,在机器学习和认知科学领域,是一种模仿生物神经网络的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。人工神经网络可以包括卷积神经网络(convolutional neural network,CNN)、深度神经网络(deep neural network,DNN)、多层感知器(multilayer perceptron,MLP)等神经网络。
图1示出了本申请提供的一种训系统架构100,该系统架构100可以用于实现本申请中的训练神经网络的方法及图像处理方法。在图1中,数据采集设备160用于采集训练数据。
以本申请中的多任务神经网络的训练为例,训练数据可以包括真实结果(例如,真实图像)以及真实结果对应的类别(例如,真实图像的类别标签),其中,真实结果对应的类别(例如,真实图像的类别标签)可以是人工预先标注的。
在采集到训练数据之后,数据采集设备160将这些训练数据存入数据库130,训练设备120基于数据库130中维护的训练数据训练得到目标模型/规则101。
下面对训练设备120基于训练数据得到目标模型/规则101进行描述,训练设备120基于所述真实结果的类别执行任务(例如,图像处理),将执行结果(例如,生成的图像)与真实结果进行对比,直到训练设备120输出的执行结果与真实结果的差值小于一定的阈值,从而完成目标模型/规则101的训练。
本申请中的目标模型/规则101具体可以为卷积神经网络。需要说明的是,在实际的应用中,所述数据库130中维护的训练数据不一定都来自于数据采集设备160的采集,也有可能是从其它设备接收得到的。另外需要说明的是,训练设备120也不一定完全基于数据库130维护的训练数据进行目标模型/规则101的训练,也有可能从云端或其它地方获取训练数据进行模型训练,上述描述不应该作为对本申请实施例的限定。
根据训练设备120训练得到的目标模型/规则101可以应用于不同的系统或设备中,如应用于图1所示的执行设备110,所述执行设备110可以是终端,如手机终端,平板电脑,笔记本电脑,增强现实(augmented reality,AR)AR/虚拟现实(virtual reality,VR),车载终端等,还可以是服务器或者云端等。在图1中,执行设备110配置输入/输出(input/output,I/O)接口112,用于与外部设备进行数据交互,用户可以通过客户设备140向I/O接口112输入数据,所述输入数据在本申请实施例中可以包括:客户设备输入的待处理图像。
预处理模块113和预处理模块114用于根据I/O接口112接收到的输入数据(如待处理图像)进行预处理,在本申请中,也可以没有预处理模块113和预处理模块114(也可以只有其中的一个预处理模块),而直接采用计算模块111对输入数据进行处理。
在执行设备110对输入数据进行预处理,或者在执行设备110的计算模块111执行计算等相关的处理过程中,执行设备110可以调用数据存储系统150中的数据、代码等以用于相应的处理,也可以将相应处理得到的数据、指令等存入数据存储系统150中。
最后,I/O接口112将处理结果(例如,生成的图像)返回给客户设备140,从而提供给用户。
值得说明的是,训练设备120可以针对不同的目标或称不同的任务,基于不同的训练数据生成相应的目标模型/规则101,该相应的目标模型/规则101即可以用于实现上述目标或完成上述任务,从而为用户提供所需的结果。
在图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。
值得注意的是,图1仅是本申请实施例提供的一种系统架构的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在图1中,数据存储系统150相对执行设备110是外部存储器,在其它情况下,也可以将数据存储系统150置于执行设备110中。
如图1所示,根据训练设备120训练得到目标模型/规则101,该目标模型/规则101在本申请实施例中可以是本申请中的多任务神经网络,具体地,本申请的多任务神经网络可以为CNN、DNN、MLP等等。
图2为本申请提供的一种芯片的硬件结构,该芯片包括神经网络处理器20。该芯片可以被设置在如图1所示的执行设备110中,用以完成计算模块111的计算工作。该芯片也可以被设置在如图1所示的训练设备120中,用以完成训练设备120的训练工作并输出目标模型/规则101。
神经网络处理器NPU 20作为协处理器挂载到主中央处理器(central processingunit,CPU)(host CPU)上,由主CPU分配任务。NPU的核心部分为运算电路203,控制器204控制运算电路203提取存储器(权重存储器或输入存储器)中的数据并进行运算。
在一些实现中,运算电路203内部包括多个处理单元(process engine,PE)。在一些实现中,运算电路203是二维脉动阵列。运算电路203还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路203是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器202中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器201中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)208中。
向量计算单元207可以对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。例如,向量计算单元207可以用于神经网络中非卷积/非FC层的网络计算,如池化(pooling),批归一化(batch normalization),局部响应归一化(local response normalization)等。
在一些实现种,向量计算单元能207将经处理的输出的向量存储到统一缓存器206。例如,向量计算单元207可以将非线性函数应用到运算电路203的输出,例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元207生成归一化的值、合并值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路203的激活输入,例如用于在神经网络中的后续层中的使用。
统一存储器206用于存放输入数据以及输出数据。
权重数据直接通过存储单元访问控制器205(direct memory accesscontroller,DMAC)将外部存储器中的输入数据搬运到输入存储器201和/或统一存储器206、将外部存储器中的权重数据存入权重存储器202,以及将统一存储器206中的数据存入外部存储器。
总线接口单元(bus interface unit,BIU)210,用于通过总线实现主CPU、DMAC和取指存储器209之间进行交互。
与控制器204连接的取指存储器(instruction fetch buffer)209,用于存储控制器204使用的指令;
控制器204,用于调用指存储器209中缓存的指令,实现控制该运算加速器的工作过程。
一般地,统一存储器206,输入存储器201,权重存储器202以及取指存储器209均为片上(On-Chip)存储器,外部存储器为该NPU外部的存储器,该外部存储器可以为双倍数据率同步动态随机存储器(double data rate synchronous dynamic random accessmemory,简称DDR SDRAM)、高带宽存储器(high bandwidth memory,HBM)或其他可读可写的存储器。
上文中介绍的图1中的执行设备110能够执行本申请的神经网络训练方法的各个步骤,图2所示的芯片也可以用于执行本申请的神经网络训练方法的各个步骤。下面结合附图对本申请提供的多任务神经网络的剪枝方法和多任务神经网络的训练方法进行详细介绍。
图3是本申请提供的一种多任务神经网络。
该神经网络为分割网络300,用于分割图像语义。图像中通常由一个或多个对象,如飞机、猫等等,这些对象即不同的语义;图像输入分割网络300后,主干网(backbone)310对该图像做卷积处理,提取图像特征,对图像进行分类;随后,解码器320基于图像特征对图像进行分割,得到分割结果,该分割结果例如是飞机的轮廓和飞机标签。主干网310和解码器320在分割图像语义的过程中处理不同的任务,因此,分割网络300属于多任务神经网络。
主干网310也可以称为编码器(encoder),例如由多层CNN组成。解码器320例如由多层池化层组成。由主干网310和解码器320组成的分割网络300通常是DNN,DNN存在较多的冗余参数,难以在移动设备等小型设备上的部署和应用。通过剪枝(prune)可以去除这些冗余参数,图3中的虚线框表示被剪枝掉的神经网络层,即,被去除的冗余参数。
下面,将详细描述本申请提供的剪枝神经网络的方法。
如图4所示,方法400可以由处理器执行,方法400包括:
S410,根据目标神经网络的参数去除比例确定第一剪枝阈值,所述第一剪枝阈值用于剪枝所述目标神经网络中的第一子网络。
S420,根据目标神经网络的参数去除比例确定第二剪枝阈值,所述第二剪枝阈值用于剪枝所述目标神经网络中的第二子网络,所述第二子网络的功能与所述第一子网络的功能不同,其中,所述目标神经网络的参数去除比例与目标设备的资源大小负相关,所述目标设备为剪枝后的所述目标神经网络部署的设备。
目标设备例如是手机等移动设备,不同的手机具有不同的资源,该资源例如是计算能力和存储能力,目标设备的资源大小越大,参数去除比例越小;目标设备的资源大小越小,参数去除比例越大。若运行目标神经网络需要的资源大小为A,目标设备能够提供的资源大小为B,B小于A,则参数去除比例可以是B/A,也可以是比B/A更小的数值,从而可以保证剪枝后的目标神经网络能够在目标设备上正常运行。
目标神经网络为一个多任务神经网络,如图3中的分割网络300。第一子网络和第二子网络例如是图3中的主干网310和解码器320。
剪枝阈值用于指示去除参数的最大比例,例如,根据移动设备的需求,需要去除的目标神经网络中至少30%的参数,则剪枝阈值为30%。可选地,还可以通过其它参数表示剪枝阈值,例如,目标神经网络中待去除的通道数。
在本申请中,“第一”、“第二”等词语用于表示同一类型的事物中的不同个体,例如,第一剪枝阈值和第二剪枝阈值表示两个剪枝阈值,除此之外不存在其它限定,二者可以相等也可以不相等。
方法400以两个剪枝阈值进行示例性说明,若目标神经网络包含更多个任务模块(子网络),则可以确定更多个剪枝阈值。
确定第一剪枝阈值和第二剪枝阈值后,处理器可以执行下列步骤。
S430,根据所述第一剪枝阈值和所述第二剪枝阈值对所述目标神经网络进行剪枝。
多任务神经网络中不同任务模块的参数量和重要性不同,可以根据不同任务模块的参数量和重要性设置不同的剪枝阈值,基于不同的剪枝阈值进行剪枝能够减小剪枝处理对多任务神经网络的性能的负面影响。
一方面,多任务神经网络中不同的任务模块的重要性不同,因此,针对不同的任务模块采用不同的剪枝阈值,可以少去除一些重要任务模块的参数,多去除一些次要任务模块的参数,减小对多任务神经网络的性能的负面影响。下面给出一个基于任务模块的重要性进行剪枝的示例。
根据移动设备的需求,需要去除目标神经网络的30%的参数,若第一子网络和第二子网络的参数数量相等,并且第一子网络的重要性高于第二子网络的重要性,则可以去除第一子网络的20%(第一剪枝阈值)的参数,并且去除第二子网络的40%(第二剪枝阈值)的参数。
另一方面,多任务神经网络中不同的任务模块的通道数量不同,可以对通道数量较少的任务模块设置较小的剪枝阈值,对通道数量较大的任务模块设置较大的剪枝阈值,使得各个任务模块被去除的通道的比例接近,避免使用相同的剪枝阈值导致一些任务模块被去除过多的通道。
在执行S430时,可以先训练目标神经网络得到稀疏神经网络,再利用第一剪枝阈值和第二剪枝阈值对稀疏神经网络进行剪枝。
稀疏神经网络指的是重要通道密度小于目标神经网络的重要通道密度的神经网络,可以通过交替训练第一子网络和第二子网络得到稀疏神经网络。下面给出一个训练目标神经网络得到稀疏神经网络的示例。
可以通过优化公式(1)所示的目标方程训练目标神经网络。
Figure BDA0002389656850000061
公式(1)中,N1为第一子网络,例如,主干网310;N2为第二子网络,例如,解码器320;w1为第一子网络的权重;w2为第二子网络的权重;x1和y1为属于一个训练数据集(如ImageNet)的两个训练数据;x2和y2为属于另一个训练数据集(如分割数据集)的两个训练数据;lcls为分类损失函数;lseg为分割损失函数;λ为给定的加权参数,用于平衡公式(1)中各项的权重;α1和α2为给定的加权参数;γ1和γ2是第一子网络和第二子网络的各个通道的稀疏因子;||γ1||1为γ1的1范数;||γ2||1为γ2的1范数。
γ1和γ2是两个向量,每个向量中元素的值表示该元素对应的通道的重要性,可以通过优化公式(1)得到稀疏的γ1和γ2,从而可以根据γ1和γ2的值去除重要性较低的通道。
例如,公式(1)优化前γ1和γ2为[0.5,0.3,0.2]和[0.4,0.3,0.2,0.1],向量中元素的值越大,表示该元素对应的通道越重要;公式(1)优化后γ1和γ2为[0.7,0.2,0.1]和[0.5,0.4,0.1,0],γ1和γ2的值变得稀疏,表明训练目标神经网络能够使得通道的功能趋于集中。可以将两个向量中小于等于0.1的元素对应的通道去除,以满足剪枝要求。
可选地,可以通过下列方式优化公式(1)。
引入一个辅助变量w3,公式(1)可以转化为优化公式(2),使得w1=w3
Figure BDA0002389656850000062
利用增广拉格朗日方法,引入辅助算子μ和E,优化公式(2)可以转化为优化公式(3):
Figure BDA0002389656850000071
公式(3)中,L为增广拉格朗日公式,||w1-w3||2为w1-w3的2范数,<E,w1-w3>为E和w1-w3的内积。
基于公式(4)优化w1
Figure BDA0002389656850000072
基于公式(5)优化w2
L(w2)=λlseg(N2(w3,w2,x2),y2)+α2||γ2||1, (5)
基于公式(6)优化w3
Figure BDA0002389656850000073
基于公式(7)更新E,
E′=E+μ′(w1-w3), (7)
公式(7)中,E′为更新后的E,μ′为更新后的μ,μ′=ρμ,ρ为给定的参数。
经过上述步骤得到优化后的γ1和γ2,即,得到了稀疏神经网络;随后,基于优化后的γ1和γ2对稀疏神经网络进行剪枝。
若需要去除目标神经网络中30%的通道,则可以确定第一剪枝阈值τ1和第二剪枝阈值τ2,使得优化后的γ1中30%的元素值小于τ1,以及,使得优化后的γ2中30%的元素值小于τ2;随后,将优化后的γ1中小于τ1的元素值对应的通道去除,并且,将优化后的γ2中小于τ2的元素值对应的通道去除;然后对剪枝后得到的神经网络进行微调,得到最终的神经网络。本申请对具体的剪枝方法和微调方法不做限定。
下面给出两个应用方法400后的技术效果的例子。
在PASCAL VOC 2012数据集(图像尺寸为513×513)上,应用方法400后取得了比现有剪枝方法更好的性能,在剪枝25%的情况下,精度无损失;在剪枝50%的情况下,精度损失1个点以内,参数量和每秒浮点运算次数(floating-point operations per second,FLOPs)下降一半,实际加速近一倍,如表1所示。
表1
mIoU(%) #Params(M) FLOPs(B) GPU速度(s)
DeepLabV3 77.27 58.04 71.52 0.199
Uniform 0.75× 75.09↓<sub>2.18</sub> 40.18 <sub>0.69×</sub> 49.70 <sub>0.69×</sub> 0.152 <sub>0.76×</sub>
Slimming 0.75× 76.64↓<sub>0.63</sub> 43.11 <sub>0.74×</sub> 52.93 <sub>0.74×</sub> 0.171 <sub>0.86×</sub>
MTP 0.75× 77.28↑<sub>0.01</sub> 44.32 <sub>0.76×</sub> 54.89 <sub>0.77×</sub> 0.177 <sub>0.89×</sub>
ThiNet 0.5× 74.71↓<sub>2.56</sub> 32.88 <sub>0.57×</sub> 39.55 <sub>0.55×</sub> 0.156 <sub>0.78×</sub>
Slimming 0.5× 74.91↓<sub>2.36</sub> 28.61 <sub>0.49×</sub> 35.96 <sub>0.50×</sub> 0.127 <sub>0.64×</sub>
MTP 0.5× 76.29↓<sub>0.98</sub> 30.33 <sub>0.52×</sub> 38.87 <sub>0.54×</sub> 0.126 <sub>0.63×</sub>
表1中,DeepLabV3为目标神经网络,未经过剪枝。Uniform、Slimming和ThiNet为现有技术的三种剪枝方法,MTP为本申请提供的多任务剪枝方法,即方法400。
在剪枝25%的情况下,Uniform和Slimming的平均交并比(mean intersectionover union,mIoU)相比于DeepLabV3的mIoU分别下降了2.18%和0.63%,MTP的mIoU相比于DeepLabV3的mIoU提升了0.01%,说明在在剪枝25%的情况下,应用方法400后神经网络的性能非但没有下降,反而有所提升。
在剪枝50%的情况下,Uniform和Slimming的mIoU相比于DeepLabV3的mIoU分别下降了2.56%和2.36%,MTP的mIoU相比于DeepLabV3的mIoU下降了0.98%,说明在在剪枝50%的情况下,应用方法400后神经网络的性能有所下降,但优于现有技术剪枝后得到的神经网络的性能。
同时,应用方法400剪枝得到的模型比现有语义分割网络(PSPNet、PSANet)性能更高,速度更快,如表2所示。
表2
mIoU(%) #Params(M) FLOPs(B) GPU速度(s)
PSPNet50 77.05 49.08 190.43 0.414
PSANet50 77.25 53.17 205.98 0.425
MTP 0.75× 77.28 44.32 54.89 0.177
在剪枝25%的情况下,MTP的mIoU比另外两种语义分割网络的mIoU更高,表示经过MTP处理后的神经网络的性能更好。此外,经过MTP处理后的神经网络的参数(Params)更少,所需的FLOPs更少,图形处理器(graphics processing unit,GPU)速度更快。
在Cityscapes数据集(图像尺寸为1080×720)上,应用方法400后也取得了比现有剪枝方法更好的性能,如表3所示。
表3
mIoU(%) #Params(M) FLOPs(B) GPU速度(s)
DeepLabV3 75.90 58.04 201.88 0.543
Slimming 0.75× 75.44↓<sub>0.46</sub> 44.43 <sub>0.77×</sub> 155.08 <sub>0.77×</sub> 0.477 <sub>0.88×</sub>
MTP 0.75× 75.81↓<sub>0.09</sub> 45.08 <sub>0.78×</sub> 158.10 <sub>0.78×</sub> 0.494 <sub>0.91×</sub>
Slimming 0.5× 73.72↓<sub>2.18</sub> 29.74 <sub>0.51×</sub> 106.02 <sub>0.53×</sub> 0.323 <sub>0.59×</sub>
MTP 0.5× 74.51↓<sub>1.39</sub> 31.16 <sub>0.56×</sub> 112.52 <sub>0.54×</sub> 0.342 <sub>0.63×</sub>
上文详细介绍了本申请提供的剪枝神经网络的方法的示例。可以理解的是,相应的装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请可以根据上述方法示例对剪枝神经网络的装置进行功能单元的划分,例如,可以将各个功能划分为各个功能单元,也可以将两个或两个以上的功能集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
图5是本申请提供的一种剪枝神经网络的装置的结构示意图。该装置500包括确定单元510和剪枝单元520。
确定单元510用于:根据目标神经网络的参数去除比例确定第一剪枝阈值,所述第一剪枝阈值用于剪枝目标神经网络中的第一子网络;根据所述目标神经网络的参数去除比例确定第二剪枝阈值,所述第二剪枝阈值用于剪枝所述目标神经网络中的第二子网络,所述第二子网络的功能与所述第一子网络的功能不同,其中,所述目标神经网络的参数去除比例与目标设备的资源大小负相关,所述目标设备为剪枝后的所述目标神经网络部署的设备;
剪枝单元520用于:根据所述第一剪枝阈值和所述第二剪枝阈值对所述目标神经网络进行剪枝。
可选地,装置500还包括训练单元,用于:训练所述目标神经网络得到稀疏神经网络,所述稀疏神经网络中重要通道的密度小于所述目标神经网络中重要通道的密度;其中,剪枝单元520具体用于:根据所述第一剪枝阈值和所述第二剪枝阈值对所述稀疏神经网络进行剪枝。
可选地,剪枝单元520具体用于:根据所述第一剪枝阈值对所述稀疏神经网络中的所述第一子网络进行剪枝;根据所述第二剪枝阈值对所述稀疏神经网络中的所述第二子网络进行剪枝。
可选地,所述训练单元具体用于:使用第一数据集和第二数据集交替训练所述第一子网络和所述第二子网络得到所述稀疏神经网络,其中,所述第一数据集用于训练所述第一子网络,所述第二数据集用于训练所述第二子网络。
装置500执行剪枝神经网络的方法的具体方式以及产生的有益效果可以参见方法实施例中的相关描述。
图6示出了本申请提供的一种剪枝神经网络的设备的结构示意图。图6中的虚线表示该单元或该模块为可选的。设备600可用于实现上述方法实施例中描述的方法。设备600可以是终端设备或服务器或芯片。
设备600包括一个或多个处理器601,该一个或多个处理器601可支持设备600实现图4所对应方法实施例中的方法。处理器601可以是通用处理器或者专用处理器。例如,处理器601可以是中央处理器(central processing unit,CPU)。CPU可以用于对设备600进行控制,执行软件程序,处理软件程序的数据。设备600还可以包括通信单元605,用以实现信号的输入(接收)和输出(发送)。
例如,设备600可以是芯片,通信单元605可以是该芯片的输入和/或输出电路,或者,通信单元605可以是该芯片的通信接口,该芯片可以作为终端设备或网络设备或其它电子设备的组成部分。
又例如,设备600可以是终端设备或服务器,通信单元605可以是该终端设备或该服务器的收发器,或者,通信单元605可以是该终端设备或该服务器的收发电路。
设备600中可以包括一个或多个存储器602,其上存有程序604,程序604可被处理器601运行,生成指令603,使得处理器601根据指令603执行上述方法实施例中描述的方法。可选地,存储器602中还可以存储有数据(如多任务神经网络)。可选地,处理器601还可以读取存储器602中存储的数据,该数据可以与程序604存储在相同的存储地址,该数据也可以与程序604存储在不同的存储地址。
处理器601和存储器602可以单独设置,也可以集成在一起,例如,集成在终端设备的系统级芯片(system on chip,SOC)上。
处理器601执行剪枝神经网络的方法的具体方式可以参见方法实施例中的相关描述。
应理解,上述方法实施例的各步骤可以通过处理器601中的硬件形式的逻辑电路或者软件形式的指令完成。处理器601可以是CPU、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其它可编程逻辑器件,例如,分立门、晶体管逻辑器件或分立硬件组件。
本申请还提供了一种计算机程序产品,该计算机程序产品被处理器601执行时实现本申请中任一方法实施例所述的方法。
该计算机程序产品可以存储在存储器602中,例如是程序604,程序604经过预处理、编译、汇编和链接等处理过程最终被转换为能够被处理器601执行的可执行目标文件。
本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被计算机执行时实现本申请中任一方法实施例所述的方法。该计算机程序可以是高级语言程序,也可以是可执行目标程序。
该计算机可读存储介质例如是存储器602。存储器602可以是易失性存储器或非易失性存储器,或者,存储器602可以同时包括易失性存储器和非易失性存储器。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmableROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(randomaccess memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamicRAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
本领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和设备的具体工作过程以及产生的技术效果,可以参考前述方法实施例中对应的过程和技术效果,在此不再赘述。
在本申请所提供的几个实施例中,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的方法实施例的一些特征可以忽略,或不执行。以上所描述的装置实施例仅仅是示意性的,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,多个单元或组件可以结合或者可以集成到另一个系统。另外,各单元之间的耦合或各个组件之间的耦合可以是直接耦合,也可以是间接耦合,上述耦合包括电的、机械的或其它形式的连接。
应理解,在本申请的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请的实施例的实施过程构成任何限定。
另外,本文中术语“系统”和“网络”在本文中常被可互换使用。本文中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
总之,以上所述仅为本申请技术方案的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种剪枝神经网络的方法,其特征在于,包括:
根据目标神经网络的参数去除比例确定第一剪枝阈值,所述第一剪枝阈值用于剪枝所述目标神经网络中的第一子网络;
根据所述目标神经网络的参数去除比例确定第二剪枝阈值,所述第二剪枝阈值用于剪枝所述目标神经网络中的第二子网络,所述第二子网络的功能与所述第一子网络的功能不同,其中,所述目标神经网络的参数去除比例与目标设备的资源大小负相关,所述目标设备为剪枝后的所述目标神经网络部署的设备;
根据所述第一剪枝阈值和所述第二剪枝阈值对所述目标神经网络进行剪枝。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一剪枝阈值和所述第二剪枝阈值对所述目标神经网络进行剪枝,包括:
训练所述目标神经网络得到稀疏神经网络,所述稀疏神经网络中重要通道的密度小于所述目标神经网络中重要通道的密度;
根据所述第一剪枝阈值和所述第二剪枝阈值对所述稀疏神经网络进行剪枝。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一剪枝阈值和所述第二剪枝阈值对所述稀疏神经网络进行剪枝,包括:
根据所述第一剪枝阈值对所述稀疏神经网络中的所述第一子网络进行剪枝;
根据所述第二剪枝阈值对所述稀疏神经网络中的所述第二子网络进行剪枝。
4.根据权利要求2或3所述的方法,其特征在于,所述训练所述目标神经网络得到稀疏神经网络,包括:
使用第一数据集和第二数据集交替训练所述第一子网络和所述第二子网络得到所述稀疏神经网络,其中,所述第一数据集用于训练所述第一子网络,所述第二数据集用于训练所述第二子网络。
5.一种剪枝神经网络的装置,其特征在于,包括确定单元和剪枝单元,
所述确定单元用于:根据目标神经网络的参数去除比例确定第一剪枝阈值,所述第一剪枝阈值用于剪枝目标神经网络中的第一子网络;根据所述目标神经网络的参数去除比例确定第二剪枝阈值,所述第二剪枝阈值用于剪枝所述目标神经网络中的第二子网络,所述第二子网络的功能与所述第一子网络的功能不同;其中,所述目标神经网络的参数去除比例与目标设备的资源大小负相关,所述目标设备为剪枝后的所述目标神经网络部署的设备;
所述剪枝单元用于:根据所述第一剪枝阈值和所述第二剪枝阈值对所述目标神经网络进行剪枝。
6.根据权利要求5所述的装置,其特征在于,还包括训练单元,
所述训练单元用于:训练所述目标神经网络得到稀疏神经网络,所述稀疏神经网络中重要通道的密度小于所述目标神经网络中重要通道的密度;
所述剪枝单元具体用于:根据所述第一剪枝阈值和所述第二剪枝阈值对所述稀疏神经网络进行剪枝。
7.根据权利要求6所述的装置,其特征在于,所述剪枝单元具体用于:
根据所述第一剪枝阈值对所述稀疏神经网络中的所述第一子网络进行剪枝;
根据所述第二剪枝阈值对所述稀疏神经网络中的所述第二子网络进行剪枝。
8.根据权利要求6或7所述的装置,其特征在于,所述训练单元具体用于:
使用第一数据集和第二数据集交替训练所述第一子网络和所述第二子网络得到所述稀疏神经网络,其中,所述第一数据集用于训练所述第一子网络,所述第二数据集用于训练所述第二子网络。
9.一种剪枝神经网络的设备,其特征在于,包括处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于从所述存储器中调用并运行所述计算机程序,使得所述设备执行权利要求1至4中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储了计算机程序,当所述计算机程序被处理器执行时,使得处理器执行权利要求1至4中任一项所述的方法。
CN202010109980.4A 2020-02-23 2020-02-23 剪枝神经网络的方法和装置 Active CN111382839B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010109980.4A CN111382839B (zh) 2020-02-23 2020-02-23 剪枝神经网络的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010109980.4A CN111382839B (zh) 2020-02-23 2020-02-23 剪枝神经网络的方法和装置

Publications (2)

Publication Number Publication Date
CN111382839A true CN111382839A (zh) 2020-07-07
CN111382839B CN111382839B (zh) 2024-05-07

Family

ID=71221435

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010109980.4A Active CN111382839B (zh) 2020-02-23 2020-02-23 剪枝神经网络的方法和装置

Country Status (1)

Country Link
CN (1) CN111382839B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111898591A (zh) * 2020-08-28 2020-11-06 电子科技大学 一种基于剪枝残差网络的调制信号识别方法
CN112070213A (zh) * 2020-08-28 2020-12-11 Oppo广东移动通信有限公司 神经网络模型的优化方法、装置、设备及存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107609525A (zh) * 2017-09-19 2018-01-19 吉林大学 基于剪枝策略构建卷积神经网络的遥感图像目标检测方法
CN108229679A (zh) * 2017-11-23 2018-06-29 北京市商汤科技开发有限公司 卷积神经网络去冗余方法及装置、电子设备和存储介质
US20190050735A1 (en) * 2017-08-11 2019-02-14 Samsung Electronics Co., Ltd. Methods and algorithms of reducing computation for deep neural networks via pruning
US20190130271A1 (en) * 2017-10-27 2019-05-02 Baidu Usa Llc Systems and methods for block-sparse recurrent neural networks
CN110033083A (zh) * 2019-03-29 2019-07-19 腾讯科技(深圳)有限公司 卷积神经网络模型压缩方法和装置、存储介质及电子装置
US20190244103A1 (en) * 2018-02-07 2019-08-08 Royal Bank Of Canada Robust pruned neural networks via adversarial training
CN110490307A (zh) * 2019-08-26 2019-11-22 山东浪潮人工智能研究院有限公司 一种基于网络模型进行通道剪枝优化系统的方法
CN110659732A (zh) * 2019-09-20 2020-01-07 上海新储集成电路有限公司 一种智能调节神经网络模型的方法
CN110674939A (zh) * 2019-08-31 2020-01-10 电子科技大学 基于剪枝阈值自动搜索的深度神经网络模型压缩方法
CN110807514A (zh) * 2019-10-25 2020-02-18 中国科学院计算技术研究所 一种基于lo正则的神经网络剪枝方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190050735A1 (en) * 2017-08-11 2019-02-14 Samsung Electronics Co., Ltd. Methods and algorithms of reducing computation for deep neural networks via pruning
CN107609525A (zh) * 2017-09-19 2018-01-19 吉林大学 基于剪枝策略构建卷积神经网络的遥感图像目标检测方法
US20190130271A1 (en) * 2017-10-27 2019-05-02 Baidu Usa Llc Systems and methods for block-sparse recurrent neural networks
CN108229679A (zh) * 2017-11-23 2018-06-29 北京市商汤科技开发有限公司 卷积神经网络去冗余方法及装置、电子设备和存储介质
US20190244103A1 (en) * 2018-02-07 2019-08-08 Royal Bank Of Canada Robust pruned neural networks via adversarial training
CN110033083A (zh) * 2019-03-29 2019-07-19 腾讯科技(深圳)有限公司 卷积神经网络模型压缩方法和装置、存储介质及电子装置
CN110490307A (zh) * 2019-08-26 2019-11-22 山东浪潮人工智能研究院有限公司 一种基于网络模型进行通道剪枝优化系统的方法
CN110674939A (zh) * 2019-08-31 2020-01-10 电子科技大学 基于剪枝阈值自动搜索的深度神经网络模型压缩方法
CN110659732A (zh) * 2019-09-20 2020-01-07 上海新储集成电路有限公司 一种智能调节神经网络模型的方法
CN110807514A (zh) * 2019-10-25 2020-02-18 中国科学院计算技术研究所 一种基于lo正则的神经网络剪枝方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111898591A (zh) * 2020-08-28 2020-11-06 电子科技大学 一种基于剪枝残差网络的调制信号识别方法
CN112070213A (zh) * 2020-08-28 2020-12-11 Oppo广东移动通信有限公司 神经网络模型的优化方法、装置、设备及存储介质
CN111898591B (zh) * 2020-08-28 2022-06-24 电子科技大学 一种基于剪枝残差网络的调制信号识别方法

Also Published As

Publication number Publication date
CN111382839B (zh) 2024-05-07

Similar Documents

Publication Publication Date Title
WO2022068623A1 (zh) 一种模型训练方法及相关设备
CN112418392A (zh) 一种神经网络构建方法以及装置
WO2019212877A1 (en) Quantization for dnn accelerators
WO2022052601A1 (zh) 神经网络模型的训练方法、图像处理方法及装置
CN111401516A (zh) 一种神经网络通道参数的搜索方法及相关设备
CN112639828A (zh) 数据处理的方法、训练神经网络模型的方法及设备
CN112183718A (zh) 一种用于计算设备的深度学习训练方法和装置
US20240143977A1 (en) Model training method and apparatus
CN111882031A (zh) 一种神经网络蒸馏方法及装置
WO2022088063A1 (zh) 神经网络模型的量化方法和装置、数据处理的方法和装置
WO2022028323A1 (zh) 分类模型的训练方法、超参数的搜索方法以及装置
CN113326930A (zh) 数据处理方法、神经网络的训练方法及相关装置、设备
CN111382839B (zh) 剪枝神经网络的方法和装置
WO2022267036A1 (zh) 神经网络模型训练方法和装置、数据处理方法和装置
EP4318313A1 (en) Data processing method, training method for neural network model, and apparatus
CN113449859A (zh) 一种数据处理方法及其装置
CN115081588A (zh) 一种神经网络参数量化方法和装置
CN111931901A (zh) 一种神经网络构建方法以及装置
CN110874627A (zh) 数据处理方法、数据处理装置及计算机可读介质
WO2022156475A1 (zh) 神经网络模型的训练方法、数据处理方法及装置
CN114925320B (zh) 一种数据处理方法及相关装置
CN114298289A (zh) 一种数据处理的方法、数据处理设备及存储介质
CN111652349A (zh) 一种神经网络的处理方法及相关设备
CN112257840A (zh) 一种神经网络处理方法以及相关设备
WO2022227024A1 (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
GR01 Patent grant