CN113762500B - 一种卷积神经网络在量化时提高模型精度的训练方法 - Google Patents

一种卷积神经网络在量化时提高模型精度的训练方法 Download PDF

Info

Publication number
CN113762500B
CN113762500B CN202010497942.0A CN202010497942A CN113762500B CN 113762500 B CN113762500 B CN 113762500B CN 202010497942 A CN202010497942 A CN 202010497942A CN 113762500 B CN113762500 B CN 113762500B
Authority
CN
China
Prior art keywords
training
model
quantized
feature map
value
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.)
Active
Application number
CN202010497942.0A
Other languages
English (en)
Other versions
CN113762500A (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.)
Hefei Ingenic Technology Co ltd
Original Assignee
Hefei Ingenic Technology 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 Hefei Ingenic Technology Co ltd filed Critical Hefei Ingenic Technology Co ltd
Priority to CN202010497942.0A priority Critical patent/CN113762500B/zh
Publication of CN113762500A publication Critical patent/CN113762500A/zh
Application granted granted Critical
Publication of CN113762500B publication Critical patent/CN113762500B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Image Analysis (AREA)

Abstract

本发明提供一种卷积神经网络在量化时提高模型精度的训练方法,本方法在训练低比特模型之前就考虑到了位宽限制,所以在训练低比特模型时并不是直接同时量化权重和feature map而是分成两步去走,先量化权重训练得到一个好的模型,然后再量化feature map从而得到最终的模型,这样可以降低低比特模型的训练难度使得模型可以有效的收敛从而提高模型的精度。由于考虑到直接训练2bit模型时,训练难度过大,模型可能无法有效的收敛,所以采用分步训练的方法,降低训练难度,提高模型的收敛速度和最终的效果;在训练量化了权重的模型时同时统计feature map的最大值,从而避免了之后量化feature map时人工设定最大值,使得每一层都能获得一个和实际分布最切合的最大值。

Description

一种卷积神经网络在量化时提高模型精度的训练方法
技术领域
本发明涉及神经网络加速技术领域,特别涉及一种卷积神经网络在量化时提高模型精度的训练方法。
背景技术
近年来,随着科技的飞速发展,大数据时代也已经到来。随着计算机技术的快速发展,基于卷积神经网络的算法成功应用于各个识别领域。深度学习以深度神经网络(DNN)作为模型,在许多人工智能的关键领域取得了十分显著的成果,如图像识别、增强学习、语义分析等。卷积神经网络(CNN)作为一种典型的DNN结构,能有效提取出图像的隐层特征,并对图像进行准确分类,在近几年的图像识别和检测领域得到了广泛的应用。
特别地,基于全精度模型微调低比特模型日益成熟:其技术方案是先用数据集训练一版全精度模型达到目标精度,然后基于全精度模型微调训练一版低比特模型。
然而,现有技术中在训练全精度模型多采用的时Relu函数,由于全精度数表示的实数范围很广,可以满足训练过程中需要的数值范围,可是在训练低比特时,由于位宽的限制,所有其表示范围是有有限的,导致训练过程中模型无法有效的收敛,最终模型的精度并不理想。
此外,现有技术中的常用术语如下:
卷积神经网络(Convolutional Neural Networks,CNN):是一类包含卷积计算且具有深度结构的前馈神经网络。
量化:量化指将信号的连续取值(或者大量可能的离散取值)近似为有限多个(或较少的)离散值的过程。
低比特:将数据量化为位宽为8bit,4bit或者2bit的数据。
激活函数(Relu函数),神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值,并将输入值传递给下一层,输入层神经元节点会将输入属性值直接传递给下一层(隐层或输出层)。在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数(又称激励函数),如图1所示,Relu=max(0,x),Relu函数及其导数的图像。
BN(Batch normalization)批归一化(BN)就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布的。其可以抑制梯度***/消失并加快训练速度。通过归一化操作使网络的每层特征的分布尽可能的稳定。
发明内容
为了解决上述问题,本发明的目的在于:解决现有低比特模型特别是2bit模型在训练过程中精度损失严重和难以收敛的问题。
本方法在训练低比特模型之前就考虑到了位宽限制,所以在训练低比特模型时并不是直接同时量化权重和feature map而是分成两步去走,先量化权重训练得到一个好的模型,然后再量化feature map从而得到最终的模型,这样可以降低低比特模型的训练难度使得模型可以有效的收敛从而提高模型的精度。
具体地,本发明提供一种卷积神经网络在量化时提高模型精度的训练方法,所述方法包括以下步骤:
S1,基于数据集训练一版全精度模型;
S2,在基于全精度模型训练一版只量化了权重的模型,并且在训练的同时统计feature map的最大值;
S3,再基于S2的模型训练一版权重和激活都量化的模型。
所述方法S1进一步包括以下步骤:
S1.1,确定训练数据:
训练模型的数据集是ImageNet1000,该数据集是ImageNet数据集的一个子集,有训练集,验证集,测试集和1000个类别;
S1.2,设立模型:
本步骤中训练采用的基础神经网络模型是MobileNetV1,该网络是一种基于深度可分离卷积的模型;
S1.3,选择激活函数:
所述MobileNetV1模型,在每一层卷积后面会进行BN操作然后是Relu操作;
S1.4,训练网络:
对于网络的训练基本步骤是:先采用adam优化器训练60个epoch,然后再用SGD优化器直至训练结束;
S1.5,测试网络效果:
利用测试集测试网络结果。
所述方法S1.1中有1.2million的训练集,5万验证集,15万测试集。
所述方法S1.3中还可以在训练时将Relu激活函数换为ReluX,ReluX公式如下:
其中,x值设为3.0。
所述方法S2进一步包括以下步骤:
S2.1,训练只量化权重的模型:
数据量化:对于待量化的数据按照如下公式进行量化,得到低比特的数据;
变量说明:Wf为全精度数据是一个数组,Wq为模拟量化后的数据,maxw全精度数据Wf中最大值,minw全精度数据Wf中最小值,b为量化后的位宽;
S2.2,在所述步骤S2.1中训练时只将权重量化到2bit,feature map不量化,但在训练模型的同时,获取feature map的最大值,具体方法如下:
1:v=ReluX(v)
2:channels=getChannelsNum(v)
3:batchNum=getBatchNum(v)
4:maxValue=0.0
5:for tag=0 to bachNum do
6:vValueTag=v[tag]
7:perChannelMax=getChannelMax(vValueTag)
8:
9:end for
10:其中,函数说明:getChannelsNum(v)获取featuremap的通道数,getBatchNum(v)获取feature map的batch的大小,getChannelMax(v)获取feature map每个通道上的最大值,reduceSum(v)求变量v的和;S2.3,对每一层激活函数获得的maxValue再通过滑动平均的方法来更新,公式如下所示:
vt=β·vt-1+(1-β)·(θt)
其中,变量说明:vt为变量v在t时刻的值,β为加权系数,θt为变量v在t时刻的值,vt-1为变量v在t-1时刻的值;
S2.4,在ReluX的结果后面再在加一个ReluX,ReluX公式如下:
但是此时的X值为maxValue。
所述方法S2.3中,加权系数β的值为0.996。
所述方法S3此时ReluX(x=maxValue)中x的值为步骤S2训练中统计的featuremap的最大值。
由此,本申请的优势在于:
(1)由于考虑到直接训练2bit模型时,训练难度过大,模型可能无法有效的收敛,所以采用分步训练的方法,降低训练难度,提高模型的收敛速度和最终的效果;
(2)在训练量化了权重的模型时同时统计feature map的最大值,从而避免了之后量化feature map时人工设定最大值,使得每一层都能获得一个和实际分布最切合的最大值。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。
图1是本发明方法中Relu函数及其导函数对应的图像。
图2是本发明方法的步骤S1.3中每一层卷积后面都会加上BN和Relu操作的示意图。
图3是本发明方法的步骤S1.3中将Relu激活函数换为ReluX的示意图。
图4是本发明方法的低比特模型训练流程示意图。
图5是本发明方法的步骤S2.4的流程示意图。
图6是本发明方法的步骤S1-S2的训练流程的流程示意图。
图7是本发明方法中得到一个量化了权重的模型,然后再基于该模型训练一版权重和激活都量化了的模型的流程示意图。
图8是本发明方法的示意流程图。
具体实施方式
为了能够更清楚地理解本发明的技术内容及优点,现结合附图对本发明进行进一步的详细说明。
如图8所示,本发明涉及一种卷积神经网络在量化时提高模型精度的训练方法,所述方法包括以下步骤:
S1,基于数据集训练一版全精度模型;
S2,在基于全精度模型训练一版只量化了权重的模型,并且在训练的同时统计feature map的最大值;
S3,再基于S2的模型训练一版权重和激活都量化的模型。
具体来说,本发明提供一种提高2比特模型训练精度的方法,包括以下内容:
1全精度模型训练:
1)训练数据:
训练模型的数据集是ImageNet1000,该数据集是ImageNet数据集的一个子集,有大约1.2million的训练集,5万验证集,15万测试集,1000个类别。
2)模型:
本次训练采用的基础神经网络模型是MobileNetV1,该网络是一种基于深度可分离卷积的模型,本文提到的一些修改是在该模型上进行修改的(具体的修改后期会做详细说明)。
3)选择激活函数:
MobileNetV1模型,在每一层卷积后面都会加上BN和Relu操作如图2所示。
不过由于我们训练的模型需要量化到低比特,所以直接采用Relu激活函数的话,每一层激活输出的feature map的最大值是未知并且是没有上界的,这样对量化到低比特是不利的,
由于之后需要将feature map量化到2bit,所以在训练时将Relu激活函数换为ReluX如图3所示。
并且X值设为3.0
4)训练网络:
对于网络的训练基本步骤是:先采用adam优化器训练60个epoch,然后再用SGD优化器直至训练结束。
5)测试网络效果:
利用测试集测试网络结果。
2低比特模型训练:低比特模型训练流程如图4所示,主要分成2步。
1)训练只量化权重的模型:
数据量化:对于待量化的数据按照以下所示的公式进行量化,得到低比特的数据。
变量说明:Wf为全精度数据是一个数组,Wq为模拟量化后的数据,maxw全精度数据Wf中最大值,minw全精度数据Wf中最小值,b为量化后的位宽。
2)上面第一步训练时只将权重量化到2bit,feature map不量化,不过在训练模型的同时,通过以下处理步骤处理获取feature map的最大值再通过滑动平均的方法统计最大值,具体处理步骤如下:
1:v=ReluX(v)
2:channels=getChannelsNum(v)
3:batchNum=getBatchNum(v)
4:maxValue=0.0
5:for tag=0 to bachNum do
6:vValueTag=v[tag]
7:perChannelMax=getChannelMax(vValueTag)
8:
9:end for
10:
函数说明:getChannelsNum(v)获取feature map的通道数,getBatchNum(v)获取feature map的batch的大小,getChannelMax(v)获取feature map每个通道上的最大值,reduceSum(v)求变量v的和。
3)对每一层激活函数获得的maxValue再通过滑动平均的方法来更新,公式如下所示:
vt=β·vt-1+(1-β)·(θt)
变量说明:vt为变量v在t时刻的值,β为加权系数,θt为变量v在t时刻的值,vt-1为变量v在t-1时刻的值。加权系数β的值为0.996。
4)在ReluX的结果后面在加一个ReluX,不过此时的X值为maxValue,流程如图5所示。这里的整个训练流程如图6所示。
3经过第一步训练后得到一个量化了权重的模型,然后再基于该模型训练一版权重和激活都量化了的模型具体流程如图7所示。此时ReluX中X的值为第一步训练中统计的feature map的最大值。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (4)

1.一种卷积神经网络在量化时提高模型精度的训练方法,其特征在于,所述方法适用于图像识别和检测,包括以下步骤:
S1,基于数据集训练一版全精度模型;所述方法S1进一步包括以下步骤:S1.1,确定训练数据:
训练模型的数据集是ImageNet1000,该数据集是ImageNet数据集的一个子集,有训练集,验证集,测试集和1000个类别;
S1.2,设立模型:
本步骤中训练采用的基础神经网络模型是MobileNetV1,该网络是一种基于深度可分离卷积的模型;
S1.3,选择激活函数:
所述MobileNetV1模型,在每一层卷积后面会进行BN操作然后是Relu操作;
S1.4,训练网络:
对于网络的训练基本步骤是:先采用adam优化器训练60个epoch,然后再用SGD优化器直至训练结束;
S1.5,测试网络效果:
利用测试集测试网络结果;
S2,在基于全精度模型训练一版只量化了权重的模型,并且在训练的同时统计featuremap的最大值;所述方法S2进一步包括以下步骤:
S2.1,训练只量化权重的模型:
数据量化:对于待量化的数据按照如下公式进行量化,得到低比特的数据;
变量说明:Wf为全精度数据是一个数组,Wq为模拟量化后的数据,maxw全精度数据Wf中最大值,minw全精度数据Wf中最小值,b为量化后的位宽;
S2.2,在所述步骤S2.1中训练时只将权重量化到2bit,feature map不量化,但在训练模型的同时,获取feature map的最大值,具体方法如下:
1:v=ReluX(v)
2:channels=getChannelsNum(v)
3:batchNum=getBatchNum(v)
4:maxValue=0.0
5:for tag=0 to bachNum do
6:vValueTag=v[tag]
7:perChannelMax=getChannelMax(vValueTag)
8:maxValue+=reduceSum(perChannelMax)/channels
9:end for
10:maxValue=maxValue/batchNum;
其中,函数说明:getChannelsNum(v)获取feature map的通道数,getBatchNum(v)获取feature map的batch的大小,getChannelMax(v)获取feature map每个通道上的最大值,reduceSum(v)求变量v的和;
S2.3,对每一层激活函数获得的maxValue再通过滑动平均的方法来更新,公式如下所示:
v_t=β·v_(t-1)+(1-β)·(θ_t)
其中,变量说明:v_t为变量v在t时刻的值,β为加权系数,θ_t为变量v在t时刻的值,v_(t-1)为变量v在t-1时刻的值;
S2.4,在ReluX的结果后面再在加一个ReluX,ReluX公式如下:
但是此时的X值为maxValue;
S3,再基于S2的模型训练一版权重和激活都量化的模型;所述方法S3此时ReluX(x=maxValue)中x的值为步骤S2训练中统计的feature map的最大值。
2.根据权利要求1所述的一种卷积神经网络在量化时提高模型精度的训练方法,其特征在于,所述方法S1.1中有1.2million的训练集,5万验证集,15万测试集。
3.根据权利要求1所述的一种卷积神经网络在量化时提高模型精度的训练方法,其特征在于,所述方法S1.3中还可以在训练时将Relu激活函数换为ReluX,ReluX公式如下:
其中,x值设为3.0。
4.根据权利要求1所述的一种卷积神经网络在量化时提高模型精度的训练方法,其特征在于,所述方法S2.3中,加权系数β的值为0.996。
CN202010497942.0A 2020-06-04 2020-06-04 一种卷积神经网络在量化时提高模型精度的训练方法 Active CN113762500B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010497942.0A CN113762500B (zh) 2020-06-04 2020-06-04 一种卷积神经网络在量化时提高模型精度的训练方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010497942.0A CN113762500B (zh) 2020-06-04 2020-06-04 一种卷积神经网络在量化时提高模型精度的训练方法

Publications (2)

Publication Number Publication Date
CN113762500A CN113762500A (zh) 2021-12-07
CN113762500B true CN113762500B (zh) 2024-04-02

Family

ID=78783424

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010497942.0A Active CN113762500B (zh) 2020-06-04 2020-06-04 一种卷积神经网络在量化时提高模型精度的训练方法

Country Status (1)

Country Link
CN (1) CN113762500B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109766800A (zh) * 2018-12-28 2019-05-17 华侨大学 一种移动端花卉识别模型的构建方法
CN109902745A (zh) * 2019-03-01 2019-06-18 成都康乔电子有限责任公司 一种基于cnn的低精度训练与8位整型量化推理方法
CN110096968A (zh) * 2019-04-10 2019-08-06 西安电子科技大学 一种基于深度模型优化的超高速静态手势识别方法
CN110598839A (zh) * 2018-06-12 2019-12-20 华为技术有限公司 卷积神经网络***和卷积神经网络量化的方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11270187B2 (en) * 2017-11-07 2022-03-08 Samsung Electronics Co., Ltd Method and apparatus for learning low-precision neural network that combines weight quantization and activation quantization
US11551077B2 (en) * 2018-06-13 2023-01-10 International Business Machines Corporation Statistics-aware weight quantization
JP7045947B2 (ja) * 2018-07-05 2022-04-01 株式会社日立製作所 ニューラルネットワークの学習装置および学習方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110598839A (zh) * 2018-06-12 2019-12-20 华为技术有限公司 卷积神经网络***和卷积神经网络量化的方法
CN109766800A (zh) * 2018-12-28 2019-05-17 华侨大学 一种移动端花卉识别模型的构建方法
CN109902745A (zh) * 2019-03-01 2019-06-18 成都康乔电子有限责任公司 一种基于cnn的低精度训练与8位整型量化推理方法
CN110096968A (zh) * 2019-04-10 2019-08-06 西安电子科技大学 一种基于深度模型优化的超高速静态手势识别方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A Quantization-Friendly Separable Convolution for MobileNets;Tao Sheng;《2018 1st Workshop on Energy Efficient Machine Learning and Cognitive Computing for Embedded Applications》;20181108;第14-18页 *
基于深度神经网络的空中目标作战意图识别;周旺旺;《航空学报》;20181130;第39卷(第11期);第322468-1-322468-9页 *

Also Published As

Publication number Publication date
CN113762500A (zh) 2021-12-07

Similar Documents

Publication Publication Date Title
CN107729999B (zh) 考虑矩阵相关性的深度神经网络压缩方法
CN107679617B (zh) 多次迭代的深度神经网络压缩方法
CN110084221B (zh) 一种基于深度学习的带中继监督的序列化人脸关键点检测方法
CN112733449B (zh) 一种cnn井震联合反演方法、***、存储介质、设备及应用
CN112989708A (zh) 一种基于lstm神经网络的测井岩性识别方法及***
CN114241779B (zh) 一种城市快速路交通流短时预测方法、计算机及存储介质
CN113011487B (zh) 一种基于联合学习与知识迁移的开放集图像分类方法
CN112686372A (zh) 基于深度残差gru神经网络的产品性能预测方法
CN111985825A (zh) 一种用于滚磨机定向仪的晶面质量评估方法
CN113377991B (zh) 一种基于最难正负样本的图像检索方法
CN113762500B (zh) 一种卷积神经网络在量化时提高模型精度的训练方法
WO2020253692A1 (zh) 一种针对深度学习网络参数的量化方法
CN110288002B (zh) 一种基于稀疏正交神经网络的图像分类方法
CN112906883A (zh) 用于深度神经网络的混合精度量化策略确定方法和***
CN113762497B (zh) 一种卷积神经网络模型低比特推理优化的方法
CN113762499B (zh) 一种分通道量化权重的方法
CN115438784A (zh) 一种用于混合位宽超网络的充分训练方法
CN108805286A (zh) 基于高阶残留量化的高性能网络加速方法
CN113516170B (zh) 基于贝叶斯神经网络随机加法饱和结构的图像分类方法
CN115063374A (zh) 模型训练、人脸图像质量评分方法、电子设备及存储介质
CN114692814A (zh) 一种优化神经网络模型激活的量化方法
CN114692815A (zh) 一种优化低比特模型训练的方法
CN113762452B (zh) 一种量化prelu激活函数的方法
CN113762495A (zh) 一种提高卷积神经网络模型低比特量化模型精度的方法
CN108805944B (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
GR01 Patent grant