卷积神经网络INT8量化方法、系统、设备及存储介质技术方案

技术编号:25916444 阅读:52 留言:0更新日期:2020-10-13 10:35
本发明专利技术提供了一种卷积神经网络INT8量化方法、系统、设备及存储介质,所述方法包括:获取卷积层的参数量化系数,并对所述卷积层的参数进行参数非线性映射,得到量化后参数;获取所述卷积层的输入量化系数,建立所述卷积层的输入量化函数,所述输入量化函数用于将所述卷积层的输入数据非线性映射得到量化后的输入数据;获取所述卷积层的输出量化系数,根据所述量化后参数和所述输入量化函数,建立所述卷积层的输出量化函数,所述输出量化函数用于将所述卷积层的输出数据非线性映射得到量化后的输出数据。通过采用本发明专利技术,通过将模型参数、输入和输出进行离线非线性量化,实现了整个模型纯整数运算,并且提高了量化精度。

【技术实现步骤摘要】
卷积神经网络INT8量化方法、系统、设备及存储介质
本专利技术涉及数据处理
,尤其涉及一种卷积神经网络INT8量化方法、系统、设备及存储介质。
技术介绍
现今神经网络算法在视觉领域有着巨大的潜力和惊人的识别率,在很多领域都有着巨大的应用,伴随着手机移动端的兴起,手机的处理能力变得越来越强,然而针对神经网络模型动则几百兆的大小,仍然显得不足。神经网络模型训练大多是浮点数32位的,而基于这样的模型,大多数情况下,并不能很好的移植到移动端,因此模型压缩就显得格外重要。现有技术中虽然出现了一些卷积神经网络的量化方法,例如谷歌、寒武纪的量化方法,但是这些方法一般均采用线性的量化,参数和输入输出中较小的值表达能力不强,容易造成精度损失。并且现有方法的模型推断中往往存在浮点数,不利于硬件底层设计。此外,现有方案中的模型矫正需要较多的图片进行卷积层系数确定,对图片数据分布要求较高,如现有的TensorRT量化需要几千张图片进行量化。
技术实现思路
针对现有技术中的问题,本专利技术的目的在于提供一种卷积神经网络INT8量化方法、系统、设备及存储介质,通过将模型参数、输入和输出进行离线非线性量化,实现整个模型纯整数运算,并且提高量化精度。本专利技术实施例提供一种卷积神经网络INT8量化方法,包括如下步骤:获取卷积层的参数量化系数,并对所述卷积层的参数进行参数非线性映射,得到量化后参数;将矫正图像数据输入所述卷积神经网络,根据所述卷积层的输入数据获取所述卷积层的输入量化系数,并根据所述卷积层的输出数据获取所述卷积层的输出量化系数;根据所述输入量化系数建立所述卷积层的输入量化函数,所述输入量化函数用于将所述卷积层的输入数据非线性映射得到量化后的输入数据;根据所述量化后参数、所述输入量化函数和所述输出量化系数,建立所述卷积层的输出量化函数,所述输出量化函数用于将所述卷积层的输出数据非线性映射得到量化后的输出数据。可选地,对所述卷积层的参数进行参数非线性映射,包括计算第一对数函数的值,并根据所述第一对数函数的值计算量化后参数,所述第一对数函数以所述卷积层量化前的参数与所述参数量化系数的比值为真数;建立所述卷积层的输入量化函数,包括建立第二对数函数,并基于所述第二对数函数建立所述输入量化函数,所述第二对数函数以所述卷积层量化前的输入数据与所述输入量化系数的比值为真数。可选地,所述卷积层的参数包括卷积核参数,采用如下公式计算量化后的卷积核参数:其中,weights表示量化前的卷积核参数,INT8_weights表示量化后的卷积核参数,scale_w表示参数量化系数;采用如下公式建立所述输入量化函数:其中,inputs表示所述卷积层量化前的输入数据,INT8_inputs表示所述卷积层量化后的输入数据,scale_in表示输入量化系数。可选地,建立所述卷积层的输出量化函数,包括如下步骤:根据所述卷积层的输入、所述卷积层的参数以及所述卷积层的输出,建立第一输出函数,所述第一输出函数以量化前的输入数据为自变量,量化前的输出数据为因变量;将所述第一输出函数中的输入数据以所述输入量化函数的反函数表示,得到第二输出函数,所述第二输出函数以量化后的输入数据为自变量,量化前的输出数据为因变量;建立第三对数函数,所述第三对数函数以所述量化前的输出数据与所述输出量化系数的比值为真数,将所述量化前的输出数据替换为所述第二输出函数;根据所述第三对数函数建立所述输出量化函数。可选地,建立所述卷积层的输出量化函数,包括如下步骤:根据所述参数量化系数、输入量化系数和输出量化系数计算得到量化系数值;根据所述量化后参数建立第三输出函数,所述第三输出函数以量化后的输入数据为自变量,以INT8_sum的值为因变量;采用如下公式建立所述卷积层的输出量化函数:INT8_output=INT8_scale+INT8_sum-16其中,INT8_output表示所述卷积层的量化后的输出数据,INT8_scale表示所述量化系数值,INT8_sum表示所述第三输出函数的因变量值。可选地,采用如下公式计算得到量化系数值:其中,scale_w表示所述卷积层的参数量化系数,scale_in表示所述卷积层的输入量化系数,scale_ou表示所述卷积层的输出量化系数。可选地,采用如下公式建立第三输出函数:其中,f(x)采用如下公式表示:其中,n表示所述卷积层的通道数,INT8_weightsi表示第i个通道的量化后的卷积核参数,INT8_inputsi表示第i个通道的量化后的输入数据,INT8_bias表示所述卷积层量化后的偏差。可选地,建立所述卷积层的输出量化函数,还包括如下步骤:建立f(x)的值与的值的映射关系表,所述卷积层配置为接收到输入数据时,通过查找所述映射关系表确定INT8_sum的值。可选地,所述获取卷积层的参数量化系数,包括获取所述卷积层的参数的绝对值的最大值与128的比值,作为所述参数量化系数;所述获取卷积层的输入量化系数,包括获取所述卷积层的输入数据的绝对值的最大值与128的比值,作为所述输入量化系数;所述获取卷积层的输出量化系数,包括获取所述卷积层的输出数据的绝对值的最大值与128的比值,作为所述输出量化系数。可选地,所述获取卷积层的参数量化系数之前,还包括如下步骤:将BN层和Scale层合并至所述卷积层中。通过采用本专利技术的卷积神经网络INT8量化方法,通过将模型参数、输入和输出进行离线量化,实现整个模型纯整数运算,加快模型推断速度;并且通过对参数、输入和输出的非线性量化,完整地表达输入、输出和参数较小的数值分布,减少精度损失,提高了量化精度,同时只需要很少的图片数据进行模型矫正,减少了模型矫正时间。本专利技术实施例还提供一种卷积神经网络INT8量化系统,应用于所述的卷积神经网络INT8量化方法,所述系统包括:参数量化模块,用于获取卷积层的参数量化系数,并对所述卷积层的参数进行参数非线性映射,得到量化后参数;系数计算模块,用于将矫正图像数据输入所述卷积神经网络,根据所述卷积层的输入数据获取所述卷积层的输入量化系数,并根据所述卷积层的输出数据获取所述卷积层的输出量化系数;输入量化模块,用于根据所述输入量化系数建立所述卷积层的输入量化函数,所述输入量化函数用于将所述卷积层的输入数据非线性映射得到量化后的输入数据;输出量化模块,用于根据所述量化后参数、所述输入量化函数和所述输出量化系数,建立所述卷积层的输出量化函数,所述输出量化函数用于将所述卷积层的输出数据非线性映射得到量化后的输出数据。通过采用本专利技术的卷积神经网络INT8量化系统,通过将模型参数、输入和输出进行离线量化,实现整个模型纯整数运算,加快模型推断速度;并且通过对参数、输入和输出的非线性量化,完整本文档来自技高网...

【技术保护点】
1.一种卷积神经网络INT8量化方法,其特征在于,包括如下步骤:/n获取卷积层的参数量化系数,并对所述卷积层的参数进行参数非线性映射,得到量化后参数;/n将矫正图像数据输入所述卷积神经网络,根据所述卷积层的输入数据获取所述卷积层的输入量化系数,并根据所述卷积层的输出数据获取所述卷积层的输出量化系数;/n根据所述输入量化系数建立所述卷积层的输入量化函数,所述输入量化函数用于将所述卷积层的输入数据非线性映射得到量化后的输入数据;/n根据所述量化后参数、所述输入量化函数和所述输出量化系数,建立所述卷积层的输出量化函数,所述输出量化函数用于将所述卷积层的输出数据非线性映射得到量化后的输出数据。/n

【技术特征摘要】
1.一种卷积神经网络INT8量化方法,其特征在于,包括如下步骤:
获取卷积层的参数量化系数,并对所述卷积层的参数进行参数非线性映射,得到量化后参数;
将矫正图像数据输入所述卷积神经网络,根据所述卷积层的输入数据获取所述卷积层的输入量化系数,并根据所述卷积层的输出数据获取所述卷积层的输出量化系数;
根据所述输入量化系数建立所述卷积层的输入量化函数,所述输入量化函数用于将所述卷积层的输入数据非线性映射得到量化后的输入数据;
根据所述量化后参数、所述输入量化函数和所述输出量化系数,建立所述卷积层的输出量化函数,所述输出量化函数用于将所述卷积层的输出数据非线性映射得到量化后的输出数据。


2.根据权利要求1所述的卷积神经网络INT8量化方法,其特征在于,对所述卷积层的参数进行参数非线性映射,包括计算第一对数函数的值,并根据所述第一对数函数的值计算量化后参数,所述第一对数函数以所述卷积层量化前的参数与所述参数量化系数的比值为真数;
建立所述卷积层的输入量化函数,包括建立第二对数函数,并基于所述第二对数函数建立所述输入量化函数,所述第二对数函数以所述卷积层量化前的输入数据与所述输入量化系数的比值为真数。


3.根据权利要求2所述的卷积神经网络INT8量化方法,其特征在于,所述卷积层的参数包括卷积核参数,采用如下公式计算量化后的卷积核参数:



其中,weights表示量化前的卷积核参数,INT8_weights表示量化后的卷积核参数,scale_w表示参数量化系数;
采用如下公式建立所述输入量化函数:



其中,inputs表示所述卷积层量化前的输入数据,INT8_inputs表示所述卷积层量化后的输入数据,scale_in表示输入量化系数。


4.根据权利要求2所述的卷积神经网络INT8量化方法,其特征在于,建立所述卷积层的输出量化函数,包括如下步骤:
根据所述卷积层的输入、卷积层的参数以及卷积层的输出,建立第一输出函数,所述第一输出函数以量化前的输入数据为自变量,量化前的输出数据为因变量;
将所述第一输出函数中的输入数据以所述输入量化函数的反函数表示,得到第二输出函数,所述第二输出函数以量化后的输入数据为自变量,量化前的输出数据为因变量;
建立第三对数函数,所述第三对数函数以所述量化前的输出数据与所述输出量化系数的比值为真数,将所述量化前的输出数据替换为所述第二输出函数;
根据所述第三对数函数建立所述输出量化函数。


5.根据权利要求2所述的卷积神经网络INT8量化方法,其特征在于,建立所述卷积层的输出量化函数,包括如下步骤:
根据所述参数量化系数、输入量化系数和输出量化系数计算得到量化系数值;
根据所述量化后参数建立第三输出函数,所述第三输出函数以量化后的输入数据为自变量,以INT8_sum的值为因变量;
采用如下公式建立所述卷积层的输出量化函数:
INT8_output=INT8_scale+INT8_sum-16
其中,INT8_output表示所述卷积层的量化后的输出数据,INT8_scale表示所述量化系数值,INT8_sum表示所述第三输出函数的因...

【专利技术属性】
技术研发人员:徐超杨冬梅艾佳楠章勇曹李军
申请(专利权)人:苏州科达科技股份有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1