CN109766800B - 一种移动端花卉识别模型的构建方法 - Google Patents
一种移动端花卉识别模型的构建方法 Download PDFInfo
- Publication number
- CN109766800B CN109766800B CN201811621118.0A CN201811621118A CN109766800B CN 109766800 B CN109766800 B CN 109766800B CN 201811621118 A CN201811621118 A CN 201811621118A CN 109766800 B CN109766800 B CN 109766800B
- Authority
- CN
- China
- Prior art keywords
- model
- quantization
- flower
- floating point
- neural network
- 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
Links
Images
Landscapes
- Image Analysis (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提供了一种移动端花卉识别模型的构建方法,包括如下步骤:S10、创建一个ImageNet数据集训练好的浮点类型的卷积神经网络模型;S20、添加量化运算,即在原始的浮点计算模型中的权重读取和激活输出后插入模拟量化操作;S30、用花卉数据集训练该卷积神经网络模型,直到模型收敛;S40、将浮点模型转化为8‑bit整数运算模型,得到花卉识别模型;S50、使用Bazel构建工具将该花卉识别模型编译成APK安装包。本发明将用于移动端花卉识别的浮点运算卷积神经网络转化为高效8‑bit整数运算卷积神经网络,减小模型大小的同时缩短模型预测时间,而精度下降却非常低。
Description
技术领域
本发明属于深度学习技术领域,具体涉及一种移动端花卉识别模型的构建方法。
背景技术
卷积神经网络以其强大的特征表示能力,已经在许多应用领域中体现出了不俗的性能,例如图像分类中的花卉识别。然而深度学习不仅仅是理论创新,更重要的是应用于工程实际,将高效的算法落地应用。随着芯片产业和硬件技术的发展,卷积神经网络已经逐渐地应用在移动设备和嵌入式平台中,例如智能手机。然而这些周边应用中的设备一般只有比较低的计算能力,而且也会受限于内存和电量消耗。因此,将模型量化和压缩,使其模型尺寸更小、推断更快、耗电更低是非常有必要的。
用于移动端花卉识别的卷积神经网络的量化与压缩,主要分为两种方法:一种方法是从头构建一个高效的神经网络模型,另一种方法是通过量化、裁剪和压缩来降低模型尺寸。降低模型的复杂度的一种简单有效的方法是降低权重和激活输出的精度,例如Ternary weight networks(TWN),Binary Neural Networks(BNN),XNOR-net。
发明内容
本发明的主要目的在于克服现有技术中基于卷积神经网络的花卉识别算法模型较大、预测时间较长的问题,提出一种移动端花卉识别模型的构建方法。
本发明采用如下技术方案:
一种移动端花卉识别模型的构建方法,其特征在于,包括如下步骤:
S10、创建一个ImageNet数据集训练好的浮点类型的卷积神经网络模型;
S20、添加量化运算,即在原始的浮点计算模型中的权重读取和激活输出后插入模拟量化操作;
S30、用花卉数据集训练该卷积神经网络模型,直到模型收敛;
S40、将浮点模型转化为8-bit整数运算模型,得到花卉识别模型;
S50、使用Bazel构建工具将该花卉识别模型编译成APK安装包。
2、如权利要求1所述的一种移动端花卉识别模型的构建方法,其特征在于,所述S20中:
模拟量化操作的前向传播表达式为:
其中r为网络原始输出节点,rout为模拟量化前向传播输出节点,S为尺度,Z为零点,S和Z的计算如下:
模拟量化操作的反向传播表达式为:
rout=clamp(rmin,rmax,r)。
步骤S40具体包括如下:
S401、同一层的激活数组和权重数组使用相同的量化参数,不同层的数组使用不同的量化参数,权重和激活输出量化过程如下:
q为量化后的8-bit数值;
S402、8-bit整数运算模型中,将去掉Batch normalization运算,按如下方式整合为典型融合层的权值和偏置:
其中γ和β为Batch normalization运算中可训练的参数,在训练阶段中,μ和σ为一个batch的均值和标准差,而在预测阶段则为整个训练集的均值和标准差。W为整合前的卷积的权重,Winf为整合后典型融合层的卷积的权重,Biasinf为整合后典型融合层的偏置;
S403、最后的Relu变换即对输出数值进行钳位,使其位于区间[0,255]之间。
由上述对本发明的描述可知,与现有技术相比,本发明具有如下有益效果:
1、本发明它适用于绝大多数模型和使用场景:只需要使用已有的浮点模型,就可以很快将其量化为定点型模型。目前许多硬件平台和库都支持利用量化的权重和激活输出来进行快速推断,因此这种方法更加符合实际工程应用场景。
2、更小的模型尺寸:使用8-bit量化,我们可以将模型的尺寸降低4倍。
3、更少的内存和缓存用于激活输出:在卷积神经网络中,中间计算结果为了网络的后续层重用,一般会缓存在cache中,如果精度降低那么这块数据就会占用更少的缓存。也就是说,更低精度的权重和激活输出有利于缓存更好地重用。
4、更快的计算:通常大多数处理器支持8bit数据的更快处理功能。此外,一些高效计算平台还支持8-bit神经网络的快速推理,其中包括GEMMLOWP、Intel MKL-DNN、ARMCMSIS、Qualcomm SNPE、Nvidia TensorRT以及用于快速推断的定制硬件。
5、更低的功耗:移动8-bit定点型数据与移动32-bit浮点型数据相比,在效率上前者比后者高4倍。对于许多深度神经网络结构,内存的使用量一定程度上正比于功耗。因此减少数据移动量对降低功耗有非常重大的影响。
附图说明
图1为MobileNet-V2的Conv_1层权重分布;
图2为模拟量化训练示意图,weights为该层的权重,wt quant为权重的模拟量化运算,input为上一层网络的输出,conv为卷积运算,biases为该层的偏置,Relu6为神经网络激活输出,act quant为激活输出后的模拟量化运算;
图3为高效8-bit整数运算神经网络中的典型融合层图。weights为该层的权重(uint8数据类型),input为上一层网络的输出(uint8数据类型),biases为该层的偏置(int32数据类型),conv为卷积运算(中间的运算为int32数据类型,最后会乘以一个缩小因子变成uint8数据类型),Relu6为神经网络激活输出(uint8数据类型)。
具体实施方式
以下通过具体实施方式对本发明作进一步的描述。
虽然神经网络有非常多的参数,但我们会发现每个卷积层的权重分布并非是凌乱的,而是有一定规律的。我们以MobileNet-V2的第一个卷积层为例分析权重的分布特征,如图1所示。通过实验我们发现不仅是第一层,每一层权重都有相类似的分布特征。大多数权重都为0或者接近0,所有权重都被限制在一个很小的数值范围内,呈现出以0对称分布的趋势。这种数值分布为我们的量化方案提供了可能。
本发明的一种移动端花卉识别模型的构建方法,其具体步骤如下。
S10、创建一个ImageNet数据集训练好的浮点类型的卷积神经网络模型。
S20、添加量化运算,即在原始的浮点计算模型中的权重读取和激活输出后插入模拟量化操作,如图2所示。
S201、模拟量化操作具体形式为:在网络的前向传播过程中,我们采用量化后再紧跟一个逆量化的运算,即:
其中r为网络原始输出节点,rout为模拟量化前向传播输出节点,S为尺度,Z为零点,S和Z的计算如下:
其中clamp函数的计算如下:
clamp(a,b,x)=a x≤a
=x a≤x≤b
=b x≥b
S202、在网络的反向传播过程中,由于模拟量化方程的导数几乎在各个位置均为0,因此我们需要在反向传播中构建一个近似量化。一种效果比较好的近似方法是将量化指定为以下表达式的形式,这样可以方便定义导数:
rout=clamp(rmin,rmax,r)。
S30、用网络公开的花卉数据集(如Oxford-102 Flower)或自己从互联网收集的花卉数据集训练模型,直到模型收敛。这个过程结束后,我们通过计算,便可以得到一个对于权重和激活输出都带有各自量化信息(尺度、零点)的模型。
该过程和普通的神经网络训练过程无异,使用相应的优化算法训练网络。
S40、根据均匀仿射量化的转换规则,将浮点模型转化为8-bit整数运算模型。
目前主流且高效的CNN都是由Convolution+Batch normalization+ReLu的基本层组成,在整数算术运算神经网络中,这样的基本层将会变成一个如图3所示的典型的融合层。
均匀仿射量化的转换规则如下:假设有一个浮点型的变量,它的取值范围为[rmin,rmax],现在我们要把它量化到[0,Nlevels-1]取值范围,其中对于8-bit精度来讲Nlevels=256。我们使用2个参数将浮点型值映射为整型值,尺度(scale,简称S)和零点(zero-point,简称Z)。S指定了量化的步长,而浮点值0则会映射到Z。对于单边分布,范围[rmin,rmax]需要进一步放宽去包含0点。例如,范围为[2.1,3.5]的浮点型变量将会放宽为[0,3.5],然后再量化。
S401、常数S和常数Z是我们的量化参数。对于权重,我们使用实际的最大和最小值;对于激活输出,我们使用跨批(batches)的最大和最小值的滑动平均值。对同一层的激活数组和权重数组使用相同的量化参数,不同层的数组使用不同的量化参数。一旦S和Z定义好了之后,量化过程如下:
而逆量化过程如下:
r=S(q-Z)
对于8位量化,q被量化为8位整数。一些数组,通常是偏置向量,被量化为32位整数。常数S是一个任意的正数,它和r一样是浮点数。常数Z与量化值q的类型相同,实际上是当r为0时所对应的量化值q。
S402、我们知道在CNN中,卷积层后面通常会加上Batch normalization层,将每层输出的各个通道统计量进行归一化,在很好地提升模型精度的同时,也可以降低层间依赖。Batchnormalization定义如下:
γ和β为可训练的参数,在训练阶段中,μ和σ为一个batch的均值和标准差,而在预测阶段则为整个训练集的均值和标准差。
在整数运算神经网络中,Batch normalization将按照以下表达式折叠进权重中,因此,典型的融合层实现时将没有Batch normalization操作。Batch normalization将按如下方式拆分整合为权值和偏置:
其中Winf为典型的融合层的卷积的权重,Biasinf为典型的融合层的偏置。
S403、最后的Relu变换即对输出数值进行钳位,使其位于区间[0,255]之间。
S50、使用Bazel构建工具将该花卉识别模型编译成APK安装包。
移动端开发我们使用Google提供的Bazel构建工具,将该花卉识别模型编译成APK安装包。
应用举例
采用本发明对MobileNet-V2进行测试,采用的数据集为英国牛津大学VisualGeometry Group(VGG)组所创建的Oxford-102Flower数据集,移动端平台为小米6手机,处理器为高通骁龙835,主频2.45GHz,内存6GB。采用本发明进行实验测试后,相关性能指标如下表所示:
可以看出采用本发明后模型尺寸变小,预测时间变短,而正确率下降非常低。
上述仅为本发明的具体实施方式,但本发明的设计构思并不局限于此,凡利用此构思对本发明进行非实质性的改动,均应属于侵犯本发明保护范围的行为。
Claims (1)
1.一种移动端花卉识别模型的构建方法,其特征在于,包括如下步骤:
S10、创建一个ImageNet数据集训练好的浮点类型的卷积神经网络模型;
S20、添加量化运算,即在原始的浮点计算模型中的权重读取和激活输出后插入模拟量化操作,模拟量化操作的前向传播表达式为:
其中r为网络原始输出节点,rout为模拟量化前向传播输出节点,S为尺度,Z为零点,S和Z的计算如下:
模拟量化操作的反向传播表达式为:
rout=clamp(rmin,rmax,r);
S30、用花卉数据集训练该卷积神经网络模型,直到模型收敛;
S40、将浮点模型转化为8-bit整数运算模型,得到花卉识别模型,具体包括如下:
S401、同一层的激活数组和权重数组使用相同的量化参数,不同层的数组使用不同的量化参数,权重和激活输出量化过程如下:
q为量化后的8-bit数值;
S402、8-bit整数运算模型中,将去掉Batch normalization运算,按如下方式整合为典型融合层的权值和偏置:
其中γ和β为Batch normalization运算中可训练的参数,在训练阶段中,μ和σ为一个batch的均值和标准差,而在预测阶段则为整个训练集的均值和标准差,W为整合前的卷积的权重,Winf为整合后典型融合层的卷积的权重,Biasinf为整合后典型融合层的偏置;
S403、最后的Relu变换即对输出数值进行钳位,使其位于区间[0,255]之间;
S50、使用Bazel构建工具将该花卉识别模型编译成APK安装包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811621118.0A CN109766800B (zh) | 2018-12-28 | 2018-12-28 | 一种移动端花卉识别模型的构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811621118.0A CN109766800B (zh) | 2018-12-28 | 2018-12-28 | 一种移动端花卉识别模型的构建方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109766800A CN109766800A (zh) | 2019-05-17 |
CN109766800B true CN109766800B (zh) | 2022-09-30 |
Family
ID=66451684
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811621118.0A Active CN109766800B (zh) | 2018-12-28 | 2018-12-28 | 一种移动端花卉识别模型的构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109766800B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110211593B (zh) * | 2019-06-03 | 2021-10-22 | 北京达佳互联信息技术有限公司 | 语音识别方法、装置、电子设备及存储介质 |
CN111178514A (zh) * | 2019-12-31 | 2020-05-19 | 翱捷智能科技(上海)有限公司 | 神经网络的量化方法及系统 |
CN111126366B (zh) * | 2020-04-01 | 2020-06-30 | 湖南极点智能科技有限公司 | 一种活体人脸的判别方法、装置、设备及存储介质 |
CN113762500B (zh) * | 2020-06-04 | 2024-04-02 | 合肥君正科技有限公司 | 一种卷积神经网络在量化时提高模型精度的训练方法 |
CN113743593B (zh) * | 2021-09-27 | 2023-08-22 | 上海齐感电子信息科技有限公司 | 神经网络量化方法、系统、存储介质及终端 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368857A (zh) * | 2017-07-24 | 2017-11-21 | 深圳市图芯智能科技有限公司 | 图像对象检测方法、系统及模型处理方法、设备、终端 |
CN107527065A (zh) * | 2017-07-25 | 2017-12-29 | 北京联合大学 | 一种基于卷积神经网络的花卉品种识别模型建立方法 |
CN107665364A (zh) * | 2016-07-28 | 2018-02-06 | 三星电子株式会社 | 神经网络方法和设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11379688B2 (en) * | 2017-03-16 | 2022-07-05 | Packsize Llc | Systems and methods for keypoint detection with convolutional neural networks |
-
2018
- 2018-12-28 CN CN201811621118.0A patent/CN109766800B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107665364A (zh) * | 2016-07-28 | 2018-02-06 | 三星电子株式会社 | 神经网络方法和设备 |
CN107368857A (zh) * | 2017-07-24 | 2017-11-21 | 深圳市图芯智能科技有限公司 | 图像对象检测方法、系统及模型处理方法、设备、终端 |
CN107527065A (zh) * | 2017-07-25 | 2017-12-29 | 北京联合大学 | 一种基于卷积神经网络的花卉品种识别模型建立方法 |
Non-Patent Citations (1)
Title |
---|
基于深度学习模型的花卉种类识别;沈萍等;《科技通报》;20170331(第03期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109766800A (zh) | 2019-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109766800B (zh) | 一种移动端花卉识别模型的构建方法 | |
CN110378468B (zh) | 一种基于结构化剪枝和低比特量化的神经网络加速器 | |
TWI768382B (zh) | 一種模型壓縮方法及圖像處理方法、電腦設備及儲存介質 | |
CN110555508B (zh) | 人工神经网络调整方法和装置 | |
CN110413255B (zh) | 人工神经网络调整方法和装置 | |
US11741339B2 (en) | Deep neural network-based method and device for quantifying activation amount | |
CN111178258B (zh) | 一种图像识别的方法、系统、设备及可读存储介质 | |
CN110929865B (zh) | 网络量化方法、业务处理方法及相关产品 | |
US20220004884A1 (en) | Convolutional Neural Network Computing Acceleration Method and Apparatus, Device, and Medium | |
WO2020001401A1 (zh) | 深度神经网络中的网络层运算方法及装置 | |
JP2022507704A (ja) | 適応量子化方法及び装置、デバイス、媒体 | |
CN109978144B (zh) | 一种模型压缩方法和系统 | |
CN113159318B (zh) | 一种神经网络的量化方法、装置、电子设备及存储介质 | |
CN112561050B (zh) | 一种神经网络模型训练方法及装置 | |
CN112580567A (zh) | 一种模型获取方法、模型获取装置及智能设备 | |
CN113128682B (zh) | 神经网络模型自动适配方法和装置 | |
CN113780523A (zh) | 图像处理方法、装置、终端设备及存储介质 | |
US20210224033A1 (en) | Operation device and operation method | |
CN116227332A (zh) | 一种transformer混合比特量化方法及系统 | |
US11195094B2 (en) | Neural network connection reduction | |
US11699077B2 (en) | Multi-layer neural network system and method | |
CN114065913A (zh) | 模型量化方法、装置及终端设备 | |
CN112200275B (zh) | 人工神经网络的量化方法及装置 | |
WO2021083154A1 (en) | Method and apparatus for quantization of neural networks post training | |
CN114298291A (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 |