一种用于卷积神经网络的压缩算法的制作方法

文档序号:15561031发布日期:2018-09-29 02:15阅读:588来源:国知局

本发明属于数字图像处理领域,具体涉及一种用于卷积神经网络的压缩算法,可用于卷积神经网络模型的压缩。



背景技术:

卷积神经网络已经成为解决计算机视觉任务的较先进的技术。尽管如此,卷积神经网络算法中的卷积操作需要大量的计算资源和存储资源的支持,这使得它难以被部署到只有有限硬件资源的嵌入式终端处理系统上。为了解决该技术问题,可通过压缩卷积层的卷积核数量以显著减少神经网络所需要的计算和存储需求。在当前的卷积神经网络训练方式下,所训练好的模型中有严重的特征冗余,因而,在不损失精度的情况下对卷积层的卷积核数量进行压缩可减少卷积神经网络对计算存储资源的需求。

现有的卷积神经网络压缩方法主要有两大类,一是通过观察卷积层的数值大小进行的,如果某个特征通道中0的数量较多,则认为该特征通道是冗余的,从而删除此通道以节省计算时间和存储空间;二是通过观察卷积核在网络的作用,如果将某个卷积核裁掉而对后续的卷积层不会差生较大影响,就可以认为该卷积核是可裁剪的。但是上述两种卷积神经网络压缩方法并不能利用到卷积核之间的关联性,因而其难以同时保证高的压缩比和精度。综上所述,寻找一种能够利用卷积核之间的关联性进行卷积神经网络压缩的算法是很有必要的。



技术实现要素:

为了解决现有技术中存在的上述问题,本发明提供了一种用于卷积神经网络的压缩算法,相较于其他方法,该方法具有更高的压缩比和更低的精度损失。为了实现上述目标,本发明采用如下的技术方案:

本发明实施例提供一种用于卷积神经网络的压缩算法,包括如下步骤:

步骤1:构建压缩标定模块;

步骤2:将所述压缩标定模块嵌入到原始卷积神经网络中,构建带压缩标定的卷积神经网络;

步骤3:对构建的所述带压缩标定的卷积神经网络进行训练,得到训练好的带压缩标定的卷积神经网络中每个卷积核的标定值;

步骤4:将标定值小于阈值的卷积核裁剪掉,得到裁剪后的带压缩标定的卷积神经网络;对裁剪后的带压缩标定的卷积神经网络进行训练,得到第一压缩网络;

步骤5:处理所述第一压缩网络,得到压缩后的卷积神经网络。

在一个具体的实施例中,所述压缩标定模块包括依次连接的平均池化层、全连接层、relu激活层、恢复压缩的全连接层和sigmoid激活层,其中,

所述平均池化层的大小为c×h×w,输出维度为c×1×1,其中c为特征图的通道数,h为卷积操作所形成特征图的高,w为卷积操作所形成的特征图的宽;

所述全连接层一个压缩比为16的全连接层组成,输出维度为其中c为特征图的通道数;

所述relu激活层的输出维度为其中c为特征图的通道数,relu激活层的数学表示为:

f(x)=max(0,x)

其中,x是所述压缩标定模块的全连接层的输出;

所述恢复压缩的全连接层的输出维度为c×1×1,其中c为特征图的通道数;

所述sigmoid激活层的输出维度为c×1×1,其中c为特征图的通道数,sigmoid激活层的数学表示为:

其中,y是所述压缩标定模块的恢复压缩的全连接层的输出,e为自然底数。

在一个具体的实施例中,所述步骤2包括:

将所述原始卷积神经网络中的卷积层的输出端连接到所述压缩标定模块的输入端,构建带压缩标定的卷积神经网络。

在一个具体的实施例中,所述步骤3包括:

步骤31:选取训练样本集和测试样本集;

步骤32:利用所述训练样本集对所述带压缩标定的卷积神经网络按照设定的优化策略进行网络训练;

步骤33:将所述测试样本集输入至训练好的带压缩标定的卷积神经网络中,检测训练好的带压缩标定的卷积神经网络的可靠性;

步骤34:从训练好的带压缩标定的卷积神经网络中获取每个卷积核的标定值。

在一个具体的实施例中,所述原始卷积神经网络为已训练好的卷积神经网络。

在一个具体的实施例中,所述步骤4包括:

步骤41:依次判断每个卷积核的标定值是否小于所述阈值;

若是,则将标定值对应的所述卷积核裁剪掉,并记录裁剪计数为1;

若否,则保留所述标定值对应的卷积核,并记录裁剪计数为0;

步骤42:将所述裁剪计数累加,获取裁剪总数,判断所述裁剪总数是否大于0,

若大于,则重复执行步骤4;

若等于,则将执行步骤5。

在一个具体的实施例中,所述步骤5包括:

将所述压缩标定模块从所述第一压缩网络中去除,获取压缩后的卷积神经网络;

其中,所述压缩后的卷积神经网络中的卷积层的输出为每个卷积核的输出值。

本发明与现有技术相比,具有以下优点:

本发明的方法在卷积神经网络的压缩过程中利用了卷积核之间的相互依赖关系,与现有的卷积神经网络压缩方法相比,本发明方法具有更高的压缩比和更低的精度损失。

附图说明

图1为本发明实施例提供的一种用于卷积神经网络的压缩算法的流程图;

图2(a)为原始卷积神经网络的示意图;

图2(b)为本发明实施例提供的带压缩标定的卷积神经网络的示意图;

图3为仿真实验2的示意图。

具体实施方式

下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。

实施例一

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地描述。

参照图1,图1为本发明实施例提供的一种用于卷积神经网络的压缩算法的流程图;本发明的实例提供了一种用于卷积神经网络的压缩算法,包括以下步骤:

步骤1:构建压缩标定模块;

具体的,所述压缩标定模块包括依次连接的平均池化层、全连接层、relu激活层、恢复压缩的全连接层和sigmoid激活层,其中,

所述平均池化层的大小为c×h×w,输出维度为c×1×1,其中c为特征图的通道数,h为卷积操作所形成特征图的高,w为卷积操作所形成的特征图的宽;

其中,平均池化层的输出端连接至全连接层的输入端,hw为卷积操作所形成特征图的像素值。

所述全连接层一个压缩比为16的全连接层组成,输出维度为其中c为特征图的通道数;

其中,就是输入特征的数量:输出特征的数量=16:1,需要说明的是,压缩比还可以是其他数值,例如18或者25,具体按照实际需求进行设定。

所述relu激活层的输出维度为其中c为特征图的通道数,relu激活层的数学表示为:

f(x)=max(0,x)

其中,x是所述压缩标定模块的全连接层的输出;

relu激活层具体为修正线性单元(rectifiedlinearunit,简称relu),其能够加速收敛。

所述恢复压缩的全连接层的输出维度为c×1×1,其中c为特征图的通道数;

所述sigmoid激活层的输出维度为c×1×1,其中c为特征图的通道数,sigmoid激活层的数学表示为:

其中,y是所述压缩标定模块的恢复压缩的全连接层的输出,e为自然底数。

需要说明的是,sigmoid激活层也称为s型激活层。

步骤2:将所述压缩标定模块嵌入到原始卷积神经网络中,构建带压缩标定的卷积神经网络;

具体的,所述原始卷积神经网络为已训练好的卷积神经网络;将所述原始卷积神经网络中的卷积层的输出端连接到所述压缩标定模块的输入端,构建带压缩标定的卷积神经网络。这样压缩标定模块就可以对带压缩标定的卷积神经网络中的每一个卷积核赋值。

步骤3:对构建的所述带压缩标定的卷积神经网络进行训练,得到训练好的带压缩标定的卷积神经网络中每个卷积核的标定值;

具体的为:

步骤31:选取训练样本集和测试样本集;

步骤32:利用所述训练样本集对所述带压缩标定的卷积神经网络按照设定的优化策略进行网络训练;

步骤33:将所述测试样本集输入至训练好的带压缩标定的卷积神经网络中,检测训练好的带压缩标定的卷积神经网络的可靠性;

步骤34:从训练好的带压缩标定的卷积神经网络中获取每个卷积核的标定值。

其中,所述训练好的带压缩标定的卷积神经网络中的卷积层的输出结果为每个卷积核的标定值与所述卷积核的输出值的乘积。

需要说明的是,训练好的带压缩标定的卷积神经网络中的每一个卷积核都被赋予了一个标定值,实质上,在带压缩标定的卷积神经网络训练的过程中,压缩标定模块会对卷积核不断地赋予标定值,在本实施例中,每个卷积核的标定值特指将带压缩标定的卷积神经网络训练好之后,压缩标定模块会对卷积核赋予的标定值,该标定值为压缩标定模块的输出结果。

如图2(a)-图2(b)所示,图2(a)为原始卷积神经网络的示意图;卷积层的输出即为原始卷积神经网络的输出;图2(b)为本发明实施例提供的带压缩标定的卷积神经网络的示意图;卷积神经网络的每一个卷积层输出卷积核输出值,压缩标定模块的输出端输出每一个卷积核的标定值,而训练好的带压缩标定的卷积神经网络的输出为每个卷积核的标定值与所述卷积核的输出值的乘积。

步骤4:将标定值小于阈值的卷积核裁剪掉,得到裁剪后的带压缩标定的卷积神经网络;对裁剪后的带压缩标定的卷积神经网络进行训练,得到第一压缩网络;

具体的,压缩标定模块具有标识卷积核的可压缩性的功能,根据步骤3获取的每一个卷积核的标定值,根据经验设置阈值,本实施例中阈值设定为0.001,依次查看每个压缩标定模块对卷积层中各个卷积核的标定值,如果标定值全部大于阈值,则不进行裁剪,否则将标定值小于阈值的卷积核裁剪掉,形成压缩后的带压缩标定的卷积神经网络,然后对其进行网络训练,获取第一压缩网络;

为了获得稳定可靠的第一压缩网络,本实施例中,对带压缩标定的卷积神经网络进行多次裁剪,具体为:

步骤41:依次判断每个卷积核的标定值是否小于所述阈值;

若是,则将标定值对应的所述卷积核裁剪掉,并记录裁剪计数为1;

若否,则保留所述标定值对应的卷积核,并记录裁剪计数为0;

步骤42:将所述裁剪计数累加,获取裁剪总数,判断所述裁剪总数是否大于0,

若大于,则重复执行步骤4;

若等于,则将执行步骤5。

依次查看每个压缩标定模块对卷积层中各个卷积核的标定值,如果标定值全部大于阈值,则不进行裁剪;若标定值小于阈值,则将该标定值对应的卷积核裁剪掉,并且记录裁剪计数为1。每一个卷积核对应一个裁剪计数,若被裁剪,则裁剪计数的值为1,若未被裁剪,则裁剪计数的值为0,最后将多个裁剪计数进行累加,当裁剪总数大于0时,说明本次比对过程对卷积核进行了裁剪,也即现有的卷积神经网络中可能仍存在可压缩的卷积核,因此,重复执行步骤4,对卷积神经网络进行再次压缩裁剪,依次迭代,直至裁剪总数等于0,表明,训练后的卷积神经网络中已经不存在可压缩的卷积核,也即特征压缩过程可以结束。对经过最后一次裁剪的卷积神经网络进行网络训练,获得第一压缩网络。

步骤5:处理所述第一压缩网络,得到压缩后的卷积神经网络。

具体的,将所述压缩标定模块从所述第一压缩网络中去除,获取压缩后的卷积神经网络;

其中,所述压缩后的卷积神经网络中的卷积层的输出为每个卷积核的输出值。

需要说明的是,一般情况下,将压缩标定模块去除后获得的压缩后的卷积神经网络还需要进行一次网络训练,获得最终的卷积神经网络模型。具体的网络训练过程和方法以及训练样本、优化策略与步骤3中的训练方法和优化策略相同。

本发明的方法在卷积神经网络的压缩过程中利用了卷积核之间的相互依赖关系,与现有的卷积神经网络压缩方法相比,本发明方法具有更高的压缩比和更低的精度损失。

实施例二

本发明的效果可以通过以下仿真实验进一步说明。

仿真实验1,分别采用apoz裁剪法、thinnet方法和本发明方法vggnet-16(visualgeometrygroupnetworks,可视几何组网络)进行网络压缩,实验结果见表1。

表1场景分类正确率对比表

由表1可见:本发明提出的用于卷积神经网络的特征压缩方法更好,相较于apoz裁剪法和thinet方法,在网络压缩过程中的精度损失更低;在参数量压缩比方面与thinet相当;在运算速度方面相较于apoz裁剪法更快。

仿真实验2,图3为仿真实验2的示意图。本发明算法中,第一个卷积单元进行网络压缩的过程中,64个卷积核的标定值,其中有22个卷积核的标定值位于阈值0.001以下,可以被裁剪,裁剪后剩余42个卷积核。

综上所诉本发明提出的用于卷积神经网络的特征压缩方法在较大的压缩比和运算加速下能够保证更低的精度损失。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1