首页 / 专利库 / 人工智能 / 人工神经网络 / 前馈神经网络 / 深度神经网络 / 用于目标检测的深度卷积神经网络的压缩加速方法

用于目标检测的深度卷积神经网络的压缩加速方法

阅读:844发布:2020-05-08

专利汇可以提供用于目标检测的深度卷积神经网络的压缩加速方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种用于目标检测的深度 卷积神经网络 的压缩 加速 方法,包括:构建并训练一个用于目标检测的深度卷积神经网络;对深度卷积神经网络中所有的权重值和除最后一层外的各层经激活函数后的激活值进行量化测试,量化步长由小至大,测试该网络的检测性能损失情况,在设定的损失范围内选择最大的量化步长;利用该量化步长,确定神经网络中权重值与激活值的截断范围,对神经网络加以限制并训练网络;对深度卷积神经网络进行截断与量化,编写前向代码。本发明采用量化技术降低网络存储量,将网络中32位浮点数运算转化为8位整数运算,同时利用网络的稀疏性,将网络中满足稀疏性条件的层转化为稀疏矩阵运算,达到压缩加速深度卷积神经网络的目的。,下面是用于目标检测的深度卷积神经网络的压缩加速方法专利的具体信息内容。

1.一种用于目标检测的深度卷积神经网络的压缩加速方法,包括如下步骤:
步骤1:构建并训练出一个用于目标检测的深度卷积神经网络;
步骤2:对深度卷积神经网络中所有的权重值和除最后一层外的各层经激活函数后的激活值进行量化测试,量化步长由小至大,测试所述深度卷积神经网络的检测性能损失情况,在设定的损失范围内,选择最大的量化步长;
步骤3:利用所述最大的量化步长,根据网络需要的压缩位数,确定深度卷积神经网络中权重值与激活值的截断范围,对所述深度卷积神经网络加以限制,并训练深度卷积神经网络;
步骤4:对所述深度卷积神经网络进行截断与量化,并对量化后的深度卷积神经网络前向代码进行编写。
2.根据权利要求1所述的用于目标检测的深度卷积神经网络的压缩加速方法,其特征在于,所述步骤1包括:
步骤11:设计所述深度卷积神经网络的结构,设置卷积层和池化层的参数,除最后一个卷积层外,在每个卷积层与激活函数之间添加批量归一化层;
步骤12:将训练集的数据输入至所述深度卷积神经网络,采用随机梯度下降法对深度卷积神经网络进行训练,当深度卷积神经网络在测试集上的误差收敛时,终止训练,保存深度卷积神经网络各个层的参数。
3.根据权利要求1或2所述的用于目标检测的深度卷积神经网络的压缩加速方法,其特征在于,所述步骤11包括:所述激活函数采用ReLU。
4.根据权利要求1所述的用于目标检测的深度卷积神经网络的压缩加速方法,其中其特征在于,所述步骤2包括:
步骤21:对网络中所有的权重值和除最后一层外的各层经激活函数后的激活值进行量化,量化方式采用均匀量化,量化公式如下:
其中,x是量化前的浮点数,n是量化的位数,激活函数采取统一的量化步长,权重值的量化各层由前至后单独进行;
步骤22:选定合适的阈值,量化步长由小至大,即n值由大至小,测试网络的检测性能损失情况,在性能损失小于选定的阈值情况下,选择最大的量化步长。
5.根据权利要求1所述的用于目标检测的深度卷积神经网络的压缩加速方法,其特征在于,所述步骤3包括:
步骤31:利用步骤2中选定的激活值量化步长,根据网络需要的压缩位数,确定深度卷积神经网络中激活值的截断范围;
步骤32:利用步骤2中选定的各层权重值量化步长,根据网络需要的压缩位数,确定深度卷积神经网络中权重值的截断范围;
步骤33:利用上述截断范围,对所述深度卷积神经网络的权重值和激活值范围加以限制,并训练深度卷积神经网络。
6.根据权利要求1所述的用于目标检测的深度卷积神经网络的压缩加速方法,其特征在于,所述步骤4包括:
步骤41:对所述深度卷积神经网络进行截断与量化,并将量化后的权重值进行Huffman编码,以节省存储空间;
步骤42:编写卷积层的前向代码;
步骤43:编写池化层的前向代码。

说明书全文

用于目标检测的深度卷积神经网络的压缩加速方法

技术领域

[0001] 本发明涉及深度学习人工智能领域,尤其涉及用于目标检测的深度卷积神经网络的压缩加速方法。

背景技术

[0002] 由于在信息检索、自动驾驶、机器人导航和增强现实等领域的广泛应用前景,目标检测一直是计算机视觉领域的一个重要研究方向,得到了学术界和工业界的广泛研究和关注。传统的目标检测系统主要采用一些人工设计的特征,如Haar特征和HoG特征等,利用支持向量机等分类器对图像进行滑窗分类来达到检测物体的效果。近年来,随着深度学习的兴起,卷积神经网络对目标检测带来极其有效的解决办法,基于深度卷积神经网络的方法取得的结果均大幅度领先传统的方法。
[0003] 然而,由于卷积神经网络伴随着大量的存储量和计算量,例如经典的VGG16网络需要约520MB存储量和153亿次乘加运算,即便是现有的一些轻量级网络,仍然需要数十MB存储量和数百万次乘加运算,如此巨大的存储量和运算量限制了卷积神经网络的应用,尤其是移动设备和嵌入式设备中。

发明内容

[0004] (一)要解决的技术问题
[0005] 有鉴于此,本发明的目的在于提供一种用于目标检测的深度卷积神经网络的压缩加速方法,其采用量化技术降低网络的存储量,将网络中32位浮点数运算转化为8位整数运算,同时利用网络稀疏性的特点,将网络中满足稀疏性条件的层转化为稀疏矩阵运算,以此达到压缩加速用于目标检测的深度卷积神经网络的目的。
[0006] (二)技术方案
[0007] 本发明提出了一种用于目标检测的深度卷积神经网络的压缩加速方法,包括下列步骤:
[0008] 步骤1:构建并训练出一个用于目标检测的深度卷积神经网络;
[0009] 步骤2:对深度卷积神经网络中所有的权重值和除最后一层外的各层经激活函数后的激活值进行量化测试,量化步长由小至大,测试该深度卷积神经网络的检测性能损失情况,在设定的损失范围内,选择最大的量化步长;
[0010] 步骤3:利用上述最大的量化步长,根据网络需要的压缩位数,确定深度卷积神经网络中权重值与激活值的截断范围,对深度卷积神经网络加以限制,并训练深度卷积神经网络;
[0011] 步骤4:对该深度卷积神经网络进行截断与量化,并对量化后的深度卷积神经网络前向代码进行编写。
[0012] 进一步地,步骤1包括:
[0013] 步骤11:设计深度卷积神经网络的结构,设置卷积层和池化层的参数,除最后一个卷积层外,在每个卷积层与激活函数之间添加批量归一化层;
[0014] 步骤12:将训练集的数据输入至深度卷积神经网络,采用随机梯度下降法对深度卷积神经网络进行训练,当深度卷积神经网络在测试集上的误差收敛时,终止训练,保存深度卷积神经网络各个层的参数。
[0015] 进一步地,步骤11包括:激活函数采用ReLU。
[0016] 进一步地,步骤2包括:
[0017] 步骤21:对网络中所有的权重值和除最后一层外的各层经激活函数后的激活值进行量化,量化方式采用均匀量化,量化公式如下:
[0018]
[0019] 其中,x是量化前的浮点数,n是量化的位数,激活函数采取统一的量化步长,权重值的量化各层由前至后单独进行;
[0020] 步骤22:选定合适的阈值,量化步长由小至大,即n值由大至小,测试网络的检测性能损失情况,在性能损失小于选定的阈值情况下,选择最大的量化步长。
[0021] 进一步地,步骤3包括:
[0022] 步骤31:利用步骤2中选定的激活值量化步长,根据网络需要的压缩位数,确定深度卷积神经网络中激活值的截断范围;
[0023] 步骤32:利用步骤2中选定的各层权重值量化步长,根据网络需要的压缩位数,确定深度卷积神经网络中权重值的截断范围;
[0024] 步骤33:利用上述截断范围,对深度卷积神经网络的权重值和激活值范围加以限制,并训练深度卷积神经网络。
[0025] 进一步地,步骤4包括:
[0026] 步骤41:对深度卷积神经网络进行截断与量化,并将量化后的权重值进行Huffman编码,以节省存储空间;
[0027] 步骤42:编写卷积层的前向代码;
[0028] 步骤43:编写池化层的前向代码。
[0029] (三)有益效果
[0030] 从上述技术方案可以看出,与现有技术相比,本发明具有如下有益效果:
[0031] 1、量化后的网络存储有效降低8倍,原始网络权重大小为60.5MB,压缩编码后网络权重大小为7.6MB;
[0032] 2、网络实际运行过程中消耗内存可有效降低四倍,同时网络中的32位浮点数乘法运算全部被转化为8位整数乘法运算,浮点数加法运算全部被转化为整数加法运算;
[0033] 3、网络具有稀疏性,可有效利用网络稀疏性进一步节省计算量。附图说明
[0034] 图1是本发明用于目标检测的深度卷积神经网络的压缩加速方法流程图
[0035] 图2是本发明实施例所采取的深度卷积神经网络结构示意图。

具体实施方式

[0036] 为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。
[0037] 请参见图1,本发明包括以下四个步骤:
[0038] 步骤1:构建并训练出一个用于目标检测的深度卷积神经网络;
[0039] 步骤2:对深度卷积神经网络中所有的权重值和除最后一层外的各层经激活函数后的激活值进行量化测试,量化步长由小至大,测试该深度卷积神经网络的检测性能损失情况,在设定的损失范围内,选择最大的量化步长;
[0040] 步骤3:利用上述最大的量化步长,根据网络需要的压缩位数,确定深度卷积神经网络中权重值与激活值的截断范围,对深度卷积神经网络加以限制,并训练深度卷积神经网络,这里的训练以微调的形式实现,该微调为以较小的学习率训练深度卷积神经网络;
[0041] 步骤4:对该深度卷积神经网络进行截断与量化,并对量化后的深度卷积神经网络前向代码进行编写。
[0042] 结合实施例,以下分别对本发明的主要步骤进行详细说明。
[0043] 步骤1:构建并训练出一个用于目标检测的深度卷积神经网络;
[0044] 步骤11:设计深度卷积神经网络的结构,设置卷积层和池化层的参数,除最后一个卷积层外,在每个卷积层与激活函数之间添加批量归一化层。
[0045] 在本发明一些实施例中,设计的深度卷积神经网络一共包括九个卷积层,除最后一层外,每个卷积层的卷积核大小均为3×3,卷积的步长设为1,卷积方式设为SAME,即在特征图周围补一圈0,保证特征图经过卷积层后大小不发生变化;除卷积层外,还包括五个最大池化层,其中池化核的大小为2×2,步长设置为2,经过池化之后特征图的宽高减半;另外,除最后一个卷积层外,所有的卷积层后均接有批量归一化层,以及采用ReLU作为激活函数。最后一层的卷积核大小为1×1,无需连接批量归一化层和激活层,其输出通道数目由需要检测的类别数目决定,假设需要检测的类别数目为n,则输出通道数目为5(n+5),实施例中需要检测的类别数目为10,则最后一层输出的通道数目为125。网络的整体结构请参见图2,表示为:
[0046] Input-16C3-MP2-32C3-MP2-64C3-MP2-128C3-MP2-256C3-MP2-512C3-1024C3-1024C3-5(n+5)C1,
[0047] 其中,nCs代表卷积核大小为s×s,输出通道为n的卷积层,MP2代表池化核大小为2×2,步长为2的最大池化层。
[0048] 步骤12:将训练集的数据输入至深度卷积神经网络,采用随机梯度下降法对深度卷积神经网络进行训练,当深度卷积神经网络在测试集上的误差收敛时,终止训练,保存深度卷积神经网络各个层的参数。
[0049] 本发明一些实施例中,从训练集中选择一批图像数据,从(320,352,384,416,448,480,512,544,576,608,640)中随机挑取一个尺寸,将图像缩放至该尺寸大小,采用梯度下降法对深度卷积神经网络进行训练。重复上述过程,不断更新优化深度卷积神经网络的参数。在进行训练时,每迭代2000次,都会用此时的网络模型将测试集的数据进行测试,最后取测试时获得最高结果的模型作为网络的参数进行下一步。
[0050] 步骤2:对深度卷积神经网络中所有的权重值和除最后一层外的各层经激活函数后的激活值进行量化测试,量化步长由小至大,测试该深度卷积神经网络的检测性能损失情况,在设定的损失范围内,选择最大的量化步长。
[0051] 步骤21:对网络中所有的权重值和除最后一层外的各层经激活函数后的激活值进行量化,量化方式采用均匀量化,量化公式如下:
[0052]
[0053] 其中,x是量化前的浮点数,n是量化的位数,激活函数采取统一的量化步长,权重值的量化各层由前至后单独进行。
[0054] 在本发明一些实施例中,采取的量化步长为2的负整数次幂,如2-10,2-9,2-8等,采用这样的量化步长能够保证量化后的网络能够采取整形数据运算。
[0055] 步骤22:选择合适的阈值,量化步长由小至大,即n值由大至小,测试网络的检测性能损失情况,在性能损失小于选定的阈值情况下,选择最大的量化步长。
[0056] 本发明一些实施例中,首先对除最后一个卷积层外的输出特征图进行量化,量化采取相同的步长,即采用相同的n值;让n值从16开始,逐次减1,测试网络的检测性能,直至网络性能下降超过选定的阈值;然后对卷积层的权重进行量化,量化过程同输出特征图量化方式一致,权重的量化是分层进行的,由前至后,为每一层选择不同的量化步长。值得注意的是,当对第k层进行量化时,输出特征图和前k-1层的权重均按已选定的步长进行量化。
[0057] 步骤3:根据网络需要的压缩位数和步骤2中确定的量化步长,确定深度卷积神经网络中权重值和激活值的截断范围,对深度卷积神经网络加以限制,并训练深度卷积神经网络,这里的训练以微调的形式实现,该微调为以较小的学习率训练深度卷积神经网络,优选的,该微调为以不高于0.001大小的学习率训练深度卷积神经网络。
[0058] 步骤31:利用步骤2中选定的激活值量化步长,根据网络需要的压缩位数,确定深度卷积神经网络中激活值的截断范围。
[0059] 本发明一些实施例对网络激活值进行截断时,当步骤2中确定的最优n值为5即量化步长为1/32时,若网络采用8bit进行量化,则激活值的截断范围为[0,255/32],当网络激活值大于255/32时,强制将值指定为255/32。由于采用的激活函数为ReLU函数,所有的激活值均大于等于0,左端的截断无需考虑。
[0060] 步骤32:利用步骤2中选定的各层权重值量化步长,根据网络需要的压缩位数,确定深度卷积神经网络中权重值的截断范围。
[0061] 本发明一些实施例对网络权重值进行截断时,当步骤2中确定的最优n值为8即量化步长为1/256时,若网络采用8bit进行量化,则权重值的截断范围为[-128/256,127/256],当网络权重值小于-128/256时,强制将值指定为-128/256,当网络权重值大于127/
256时,强制将值指定为127/256。
[0062] 步骤33:利用上述截断范围,对深度卷积神经网络的权重值和激活值范围加以限制,并训练深度卷积神经网络。
[0063] 本发明一些实施例中,在网络前向过程中添加对激活值和权重值的截断限制,以较小的学习率重新训练网络,对网络进行微调直至网络收敛。
[0064] 步骤4:对深度卷积神经网络进行截断与量化,并对量化后的深度卷积神经网络的前向代码进行编写。
[0065] 步骤41:对深度卷积神经网络进行截断与量化,并将量化后的权重值进行Huffman编码,以节省存储空间。
[0066] 步骤42:编写卷积层的前向代码。
[0067] 本发明一些实施例中,针对卷积层来说,由于其存在大量的点乘操作,直接计算卷积速度很慢。在此,我们采用im2col算法,将卷积计算转换为矩阵乘法运算,能有效提高缓存利用率,同时减少循环层数,大幅减少计算时间。另外,由于采用relu函数作为卷积层的激活函数,卷积计算中的特征图是稀疏的,我们对各层特征图进行统计,若当前层特征图稀疏度大于特定阈值,采用稀疏矩阵与非稀疏矩阵的乘法进行计算。
[0068] 步骤43:编写池化层的前向代码。
[0069] 本发明一些实施例中,针对池化层,我们采用的是最大池化层,其计算简单,主要计算为在几个临近的值中找到最大值,直接采用循环展开的策略进行加速。
[0070] 本发明一些实施例采用常用目标检测数据库VOC数据集进行训练与测试,初始深度卷积神经网络取得了mAP=0.6043的检测性能,采用本发明对网络进行压缩与量化后取得了mAP=0.5947,仅仅下降了0.0096。
[0071] 至此,本发明用于目标检测的深度卷积神经网络的压缩加速方法介绍完毕。依据以上描述,本领域技术人员应当对本发明有了清楚的队识。
[0072] 需要说明的是,在附图或说明书正文中,未描述的深度卷积神经网络基础单元,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换。
[0073] 还需要说明的是,本发明可提供包含特定值的参数的示范,但这些参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于相应值。此外,除非特别描述或必须依序发生的步骤,上述步骤的顺序并无限制于以上所列,且可根据所需设计而变化或重新安排。并且上述实施例可基于设计及可靠度的考虑,彼此混合搭配使用或与其他实施例混合搭配使用,即不同实施例中的技术特征可以自由组合形成更多的实施例。
[0074] 以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈