一种卷积网络全整型量化方法及其应用方法与流程

文档序号:18451117发布日期:2019-08-17 01:16阅读:263来源:国知局
本发明属于卷积网络的量化压缩
技术领域
:,更具体地,涉及一种卷积网络全整型量化方法及其应用方法。
背景技术
::自2012年alex-net发表以来,以卷积神经网络为代表的深度学习方法在目标分别、识别领域的性能逐年取得突破,现有的复杂网络的精度已经能达到95%以上,这些网络在设计之初,并未考虑到面向资源受限的嵌入式平台的部署。针对面向资源受限的应用,如:ar/vr、智能手机、fpga/asic等应用,需要对模型进行量化压缩,用于减少模型的大小以及计算资源的需求,以适应这些嵌入式平台的部署。面对模型量化压缩问题,主要存在两种途径:第一种是针对模型结构本身,设计更高效/轻量型的网络,用来适应受限的计算资源,例如mobilenet、shufflenet。第二种是针对现有的网络结构,对网络的中间结果,包括权重、输入、输出,进行低比特量化,在网络结构不变、保证网络精度的情况下,减少网络的计算资源的需求,降低网络的计算延时。面对上述第二种方式,目前已存在的低比特量化的方法有:twn、bnn、xor-net。这些方法将网络的权重以及输入、输出量化成1比特或者3比特,这使得卷积过程的乘加操作可用异或+移位操作来替代,可减少计算资源的使用。但这种方法存在显著缺陷:精度损失较大。至于其他的量化方法,并没考虑实际在硬件的部署,仅针对于网络的权重进行量化,关注于满足存储资源的需求,而忽略了对计算资源需求的考虑。技术实现要素:针对现有技术的以上缺陷或改进需求,本发明提供了一种卷积网络全整型量化方法及其应用方法,其目的在于将网络的输入、输出、权重采用固定长度整型表达,该量化方法使得网络的精度损失控制在5%左右,同时计算资源、储存资源和网络资源的消耗。为实现上述目的,本发明提供了一种卷积网络全整型量化方法,所述方法包括以下步骤:(1)获取卷积网络的模型、浮点型权重以及训练数据集,并初始化网络;(2)对每一层卷积层,先经过浮点形式的推理过程,求取每一层的输入in、输出out和权重wt的分布范围,并分别求取三者的最大绝对极值;(3)在当前层的训练的过程中更新三者的最大绝对极值;(4)根据输入in、输出out和权重wt的最大绝对极值对卷积网络中当前层的输入和权重进行整型量化;(5)根据整型量化的输入和权重,求当前层整型量化的输出;(6)对当前层整型量化的输出进行反量化,还原为浮点型,输出至下一层;若下一层为batchnorm层,则采取归并手段将batchnorm层参数合并到当前层中;反复步骤(3)~(6),直至卷积网络中最后一层;(7)反向传播,不断更新权重,直至网络收敛,保存量化的权重,以及附加参数;经过整型量化以后的参数用于全整型前向推导过程,用整型代替原先浮点运算。进一步地,所述步骤(3)中在训练的过程中更新三者的最大绝对极值具体为,采用指数滑动平均算法更新最大绝对极值:xn=αxn-1+(1-α)x其中,xn为本次更新输入、输出或权重的最大绝对极值,xn-1为上次更新输入、输出或权重的最大绝对极值,x为本次计算得到的输入、输出或权重,α为权重系数。进一步地,所述步骤(4)具体为:输入的整型量化:q_in=clamp(in/s1)其中,q_in表示整型量化输入;s1=max{|in|}/γ,γ=2n;n表示量化的位数;clamp()表示表示截断小数点后部分;max{|in|}表示输入的最大绝对极值;权重的整型量化:q_wt=clamp(wt/s2)其中,q_wt表示权重的整型量化;s2=max{|wt|}/γ,|γ=2n;max{|wt|}表示权重的最大绝对极值。进一步地,所述步骤(5)具体为:整型量化的输出q_out为:q_out=q_in×q_wt×mm=s1×s2/s3其中,q_in表示整型量化输入;q_wt表示权重的整型量化;由于m=s1×s2/s3为浮点型,因此令其中,参数c和参数s的推导过程为:首先求解m,m=s1×s2/s3:其中,s1=max{|in|}/γ,γ=2n,max{|in|}表示输入的最大绝对极值;s2=max{|wt|}/γ,|γ=2n,max{|wt|}表示权重的最大绝对极值;s3=max{|out|}/γ,|γ=2n,max{|out|}表示输出的最大绝对极值;n表示量化的位数;再对m反复乘以2或者除以2,使得最终令0<m<0.5,令a=0,每次m乘以2则a=a+1,除以2则a=a-1,统计得到最终a的值;之后预设v的值,0<v≤32,根据以下公式求取s和c:s=v+ac=round(m×2v)0<c≤2v其中,round()表示返回四舍五入取整。进一步地,所述整型量化的输出q_out为:q_out=q_in×q_wt×m对输出进行整型量化前,先对q_in和q_wt进行非线性激活,所述非线性激活采用移位近似操作。进一步地,所述对q_in和q_wt进行非线性激活具体为:采用leaky激活函数q_in×q_wt进行非线性激活,leaky激活函数,具体形式如下:为保证q_in×q_wt进行非线性激活后依然为整型,将上式进行移位近似操作,得:其中,y<<1表示将二进制的y左移一位,(y+y<<1)>>5表示将将二进制的(y+y<<1)右移5位,最终经过非线性激活的q_in×q_wt仍然为整型数。进一步地,所述步骤(6)中若下一层为batchnorm层,则采取归并手段将batchnorm层参数合并到当前层中具体为:batchnorm层的计算过程为:其中,x表示输入,y表示输出,ε表示分母附加值,μ表示输出均值,σ表示输出标准差,γ是batchnorm层计算过程产生的参数,β表示偏置;由于batchnorm衔接于卷积过程后面,卷积过程表示为:y=∑w×fmap(i,j)其中,fmap(i,j)为输入图像(i,j)处的图像特征;w为权重;y表示输出;因此采取归并手段将batchnorm层参数合并到卷积过程中即为:合并后的权重:合并后的偏置:合并后的卷积过程:y=∑w_fold×fmap(i,j)+β_fold。按照本发明的另一方面,本发明提供了一种全整型量化卷积网络的应用方法,所述应用方法包括以下步骤:s1,获取卷积网络的模型、浮点型权重以及训练数据集,并初始化网络;s2,对每一层卷积层,先经过浮点形式的推理过程,求取每一层的输入in、输出out和权重wt的分布范围,并分别求取三者的最大绝对极值;s3,在当前层的训练的过程中更新三者的最大绝对极值;s4,根据输入in、输出out和权重wt的最大绝对极值对卷积网络中当前层的输入和权重进行整型量化;s5,根据整型量化的输入和权重,求当前层整型量化的输出;s6,对当前层整型量化的输出进行反量化,还原为浮点型,输出至下一层;若下一层为batchnorm层,则采取归并手段将batchnorm层参数合并到当前层中;反复依次执行步骤s3至s6,直至卷积网络中最后一层;s7,用于反向传播,不断更新权重,直至网络收敛,保存量化的权重,以及附加参数;经过整型量化以后的参数用于全整型前向推导过程,用整型代替原先浮点运算;s8,将待检测目标的图像输入至全整型量化卷积网络,将待检测目标的图像划分成s*s个网格;s9,设定n个固定长宽比的anchorbox,对每个网格预测n个anchorbox,每个anchorbox独立预测目标的坐标(x,y,w,h)、置信度p和m个类别的概率;其中,x,y表示目标坐标,w,h表示目标的高和宽;s10,根据前面计算的各个类别对应的概率,先通过固定门限进行初筛,滤除相应类别中置信度低于阈值的候选框,再通过非极大抑制的方法,去除重叠的目标框;s11,对于保留下来的目标框,选择不同类别中对应概率超过门限的目标进行可视化显示,输出目标检测结果。总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:(1)本发明采用全整型量化的方法,将网络的输入、输出、权重采用固定长度整型表达,这种量化方法可以使得网络的精度损失控制在5%左右,由于前向传播过程只包含固定长度整型的乘法计算,这对于计算资源的需求也更加友好;(2)采用指数滑动平均算法计算网络的输入、输出的绝对值极值,再通过这个极值进行量化操作,指数滑动平均算法统计的是一批数据的分布特性,使得量化结果能够满足这一批数据的数值特性,而不局限于特定输入,这是这种量化方法能够泛化于实际应用的必要保证;(3)对于batchnorm层采取归并措施,将batchnorm层的参数直接合并至卷积层,这将直接省去对于batchnorm层进行量化的过程,同时这一过程也使得网络进行前向推理时不需要考虑batchnorm层的计算;(4)将移位激活的过程提前至量化网络输出结果的前面,对于输出的中间结果先进行移位激活操作,而后再进行网络输出的量化,这种做法依据在于:若先把输出量化为8位,再执行移位激活过程,相当于对于一个8bit有符号数进行操作,其精度为而在输出被量化前,它使用32bit数值表达,进行移位激活操作,其精度为因而,通过执行顺序的改变,可以减少由于激活层的移位近似操作带来的误差。附图说明图1是本发明的全整型量化方法的训练流程图;图2是本发明实施例中卷积神经网络的结构示例图;图3是本发明中batchnorm整合方法示例图;图4是本发明中网络相邻层之间量化与反量化相抵消的示例图;图5是本发明中全整型前向推导过程示意图;图6是量化前目标检测结果图;图7是量化后目标检测结果图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。如图1所示,本发明方法包括以下步骤:(1)获取卷积网络的模型、浮点型权重以及训练数据集,并初始化网络;具体地,本发明配套的实施例采用yolov2-tiny的网络结构。参考图2,包括6层maxpool层、9层卷积层,卷积层后面附带batchnorm。训练框架采用darknet,该框架以c语言编写并且公开开源。yolo网络作者在个人主页提供浮点型权重,可供下载。训练数据采用voc2012以及voc2007数据集进行训练,该数据集包含20类目标,共计9963+11540=21503张标注数据。初始化网络的输入图像的宽度为416像素、高度为416像素,图像的通道数为3,每次进行迭代训练的图片数量为64,动量为0.9,学习率为0.001,最大迭代次数为60200,网络输出为图像中的目标的位置、大小和置信度,由于检测结果存在交叉冗余,需要利用非极大值抑制的方法对检测结果进行融合,从而使每一个检测出的目标输出结果唯一对应。(2)对每一层卷积层,先经过浮点形式的推理过程,求取每一层输入、输出、权重的分布范围,并分别求取三者的最大绝对极值|max|,并且在训练过程中利用指数滑动平均算法(ema)更新该极值;具体地,每层网络权重包含的参数为w、β,加上需要对于输入输出进行量化,一共需要统计w、β、in、out共4组数的最大绝对值。为了能使统计后的绝对最大值,反应数据集的统计特征,而非特定输入图像下的极大值,需要采用ema对这些极值进行更新。具体的公式:xn=αxn-1+(1-α)x。xn为当前最终保留的值,xn-1为上次迭代过程保留的值,x为本次计算的结果。α为权重系数,一般选在0.9~1之间,在本发明的实施例中α=0.99。(3)根据求取的最大绝对值对网络的输入、权重利用以下量化公式进行量化,使其可用int8表达;量化输入:q_in=clamp(in/s1)量化权重:q_wt=clamp(wt/s2)量化系数:s1=|max|/γ,|max|=max{|in|},γ=2ns2=|max|/γ,|max|=max{|wt|},γ=2n其中,γ=2n表示量化的位数;in是输入,wt是权重,max{|in|}是输入的最大绝对极值,max{|wt|}是权重的最大绝对极值;具体地,根据经验,每一层网络的输入以及权重绝对值处在0~1范围内,利用统计的最大绝对值进行线性变换,采用上述公式将权重以及输入均规整化至[-127,127],本发明在对数值进行取整的时候,使用直接截断方式,而非采用四舍五入的取证方式,上式中clamp()表示截断操作:int=clamp(float)。在本发明的实施例中,n=8。(4)根据求取的量化的输入、权重,可求当前层的量化输出。为保证网络输出也为整型数值,利用以下公式进行量化:浮点输出:out=in×wt=q_in×q_wt×s1×s2量化输出:q_out=out/s3=q_in×q_wt×(s1×s2/s3)其中s3为输出量化系数。由于m=s1×s2/s3为浮点数,为保证网络推理过程均为整型计算,可用乘法以及移位来近似计算,并将该近似过程产生的系数c、s作为参数保存,具体如下:近似计算:具体地,由于m=s1s2/s3,为浮点数,由于需要保证量化后的输出值能用整型表示,同时使计算过程不涉及浮点运算,需要对m进行近似计算,令为保证整数乘法的位宽尽量小,且近似计算的结果更准确,需要选择c的数值范围。本发明的实施例中,限定0<c≤2v,v=24。求解c、s的计算过程为:先对m通过反复乘上或者除以2,最终令0<mδ<0.5。设a初值为0,m每次乘2就使得a加1,m每次除2就使得a减去1。最后令c=round(mδ×2v),s=v+a,round()表示四舍五入取整。(5)网络结果输出至下层前需要经过非线性激活(active)过程,这一过程本身为浮点运算,为了模拟前向传播的全整型计算过程,需要对本过程采用移位近似操作。将激活操作移位近似后的结果(in8表达),采取反量化后,还原为浮点型表达,输出至下一层;反复(2)至(5)过程,直至网络最后一层。对于带有batchnorm层的网络,需要先采取归并手段,将batchnorm层参数直接合并到前一层网络中。具体地,对于含有batchnorm层的网络而言,需要采取合并手段,如图3所示。其具体的实施过程:对于batchnorm可用数学公式描述该计算过程,其中μ表示输出均值,ε表示分母附加值,防止除以方差时出现除0操作,默认为1e-5,σ表示输出标准差,γ是batchnorm过程产生的参数,β表示偏置;由于batchnorm衔接于卷积过程后面,即x=∑w×fmap(i,j),w为网络的权重,fmap(i,j)为输入的特征图。经过简单变换,可将batchnorm整合到卷积过程中,变形过程表示如下:合并后的权重w:合并后的偏置β:合并后的卷积过程:y=∑w_fold×fmap(i,j)+β_fold本发明中对非线性激活函数采用移位近似,保证了全整型前向推导过程。本发明中采用leaky激活函数,具体形式如下:对于上述激活函数,主要包含两部分运算:数据判断以及浮点乘法。为保证前向推导过程仅用整型计算,本发明对其采用移位近似计算,具体形式如下:本发明的移位近似过程,在数值上等效于如下的近似结果:在实际的计算过程中,移位激活的操作要在步骤(4)的量化最终输出之前执行。使最终的输出值的位宽与输入值的位宽一致,为下一层前向推导过程做准备,这样处理能减少由于激活层的移位近似操作带来的误差。(6)反向传播,不断更新权重,直至网络收敛,保存量化的权重,以及附加参数;经过整型量化以后的参数可用于全整型前向推导过程,用整型代替原先浮点运算。具体地,若设卷积层的输入通道为l_m,输出通道为l_n,卷积核大小为k,那么整型量化前后需要的存储空间如下所示,量化后为量化前的1/4。量化后:storage_int8=l_m×l_n×k×k+l_n+2×sizeof(int32)/sizeof(int8)量化前:storage_float=(l_m×l_n×k×k+l_n+bn×l_n×3)sizeof(float),bn={0,1}如图4所示,由于两层之间存在量化以及反量化过程。在实际的前向推导过程中,二者可以相互抵消,因此,在实际的计算过程中,仅需在网络的最后一层的输出做反量化处理,中间层仅存在全整型计算,如图5所示。此外,本发明利用darknet框架实测其性能:在yolov2-tiny的网络结构上进行量化处理,对比量化前后的平均map值,损失为5.1%,如表1所示:类别量化前量化后误差boat0.14150.16570.0242bird0.18070.1621-0.0186train0.51450.4441-0.0704bus0.53060.4669-0.0637person0.46330.4061-0.0572dog0.33790.3023-0.0356diningtable0.34330.238-0.1053sheep0.33220.2644-0.0678pottedplant0.08640.0756-0.0108sofa0.31870.2076-0.1111car0.51950.4358-0.0837aeroplane0.41570.2801-0.1356bicycle0.480.4563-0.0237tvmonitor0.40290.3335-0.0694bottle0.05220.037-0.0152motorbike0.5360.4221-0.1139cat0.38470.3633-0.0214chair0.17760.1235-0.0541cow0.30490.2972-0.0077horse0.52220.4384-0.0838平均map0.35210.301-0.0511表1本发明利用量化前后的参数,对目标进行检测识别给定图像输入卷积网络,将图像划分成s*s个网格;设定n个固定长宽比的anchorbox,对每个网格预测n个anchorbox,每个anchorbox独立预测目标的坐标(x,y,w,h)、置信度(p)和20个类别的概率;对于提取的s*s*n个目标进行非极大抑制(nms),去除重叠框,保留高置信度的预测框;结果输出,可视化显示。针对于某一类目标,需计算出所有候选框中的相应类别的置信度,计算过程如下式所示:p(class)=p(class|obj)×p(obj)其中p(class)表示某个候选框中某一类目标的最终置信度,p(class|obj)表示该候选框中回归出的相应类别的数值,p(obj)表示该候选框中回归出的存在目标的概率。计算出对应类别的概率后,先通过固定门限进行初筛,滤除相应类别中置信度低的候选框,再通过nms(非极大抑制)的方法,去除重叠的目标框。非极大抑制(nms)去除重叠框,是按各个类别进行的,其过程归纳如下:(1)对所有候选框中某一类的p(class)按从大到小的顺序进行排序,并将所有的框都标记未处理状态;(2)计算概率最大的框与其他框的重叠率,若是重叠率超过0.5,则保留概率最大的框,相应的去除其他框,并将其标记为已处理;(3)按顺位找出p(class)第二大的那一个目标框,再按照步骤(2)进行标记;(4)重复步骤(2)~(3)直到所有框都被标记为已处理;(5)对于保留下来的目标框,选择p(class)中超过门限的目标进行可视化显示,输出结果。如图6所示,为普通卷积网络进行图像目标识别后的效果示意图;采用全整型量化后的卷积网络对同一张图片进行目标检测识别,效果如图7所示;可以看出,采用整型量化后的卷积网络的性能损失不大,识别效果相较于普通卷积网络差不多甚至更好,但是检测识别速度更快,消耗计算资源更少。以上内容本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1