CN109615066A - 一种针对neon优化的卷积神经网络的裁剪方法 - Google Patents
一种针对neon优化的卷积神经网络的裁剪方法 Download PDFInfo
- Publication number
- CN109615066A CN109615066A CN201910091796.9A CN201910091796A CN109615066A CN 109615066 A CN109615066 A CN 109615066A CN 201910091796 A CN201910091796 A CN 201910091796A CN 109615066 A CN109615066 A CN 109615066A
- Authority
- CN
- China
- Prior art keywords
- neural networks
- convolutional neural
- convolution
- neon
- length
- 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.)
- Pending
Links
- 238000013527 convolutional neural network Methods 0.000 title claims abstract description 24
- 229910052754 neon Inorganic materials 0.000 title claims abstract description 23
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 title claims abstract description 23
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000005457 optimization Methods 0.000 title claims abstract description 14
- 238000013135 deep learning Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 5
- 238000013473 artificial intelligence Methods 0.000 description 4
- 230000007423 decrease Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- QXOQNNAWFUXKMH-UHFFFAOYSA-N 1-(Malonylamino)cyclopropanecarboxylic acid Chemical compound OC(=O)CC(=O)NC1(C(O)=O)CC1 QXOQNNAWFUXKMH-UHFFFAOYSA-N 0.000 description 2
- 102000008297 Nuclear Matrix-Associated Proteins Human genes 0.000 description 2
- 108010035916 Nuclear Matrix-Associated Proteins Proteins 0.000 description 2
- 101100317049 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) VLD1 gene Proteins 0.000 description 2
- 210000000299 nuclear matrix Anatomy 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 210000005036 nerve Anatomy 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种针对NEON优化的卷积神经网络的裁剪方法,包括将卷积神经网络中卷积层的步长调整为4,同时适当扩大kernel的size,保证调整后的卷积运算的相互覆盖与调整前卷积运算的保持一致。不同的卷积神经网络在使用本发明的方法后提高的速度各有不同,但一般都可以得到4倍左右的速度提升,而计算结果的效能只有少许降低,可满足工程使用。
Description
技术领域
本发明涉及卷积神经网络的优化加速技术领域,具体来说,涉及一种针对NEON优化的卷积神经网络的裁剪方法。
背景技术
卷积神经网络
人工智能(Artificial Intelligence,简称AI)的Deep Learning(深度学习)通过机器学习,把某一层的输出output当做下一层的输入input。在人工智能中,认为output是机器通过深度学习获得的某种“智慧”。深度学习(Deep Learning)通过神经网络把海量数据分组,然后形成组合分层结果,这样就形成了神经网络,通过层层的深度学习,最终获得理想的结果。
卷积神经网络(Convolutional Neural Networks, CNN)是人工神经网络的一种。卷积神经网络是一类包含卷积或相关计算且具有深度结构的前馈神经网络(FeedforwardNeural Networks),是深度学习(deep learning)的代表算法之一。
NEON指令加速
在嵌入式平台上进行一些复杂算法的开发,一般需要用到指令集来进行加速。工程中常用的ARM系统架构中,NEON指令是专门针对大规模并行运算而设计的硬件加速指令集。NEON可加速多媒体和信号处理算法,也常用于人工智能中卷积神经网络的前向运算,其性能为CPU通用指令的4倍或更高。
卷积神经网络的卷积层运算中,需要对输入层的所有数据逐一进行卷积运算,这里通常有几百万的数据需要进行完全相同的处理,由于对这些数据的处理方法是完全相同的,所以可以利用NEON指令进行并行运算来提高运算速度。卷积运算是从输入数据的矩阵中依次读取与卷积核大小相同的子矩阵数据,然后与卷积核一对一相乘,并将所有乘积结果相加即得到卷积结果(即计算子矩阵与卷积核矩阵的内积),当子矩阵在输入矩阵中逐一滑过时,所有的卷积结果就形成了一个新的矩阵,此矩阵就是卷积层的输出,它将作为神经网络中下一层的输入继续运算下去。这里卷积核矩阵的行列数量称为卷积核(kernel)的大小(size) (例如3*3或5*5等),而子矩阵滑动时,每个子矩阵跳到下一个子矩阵的间隔称为卷积核的步长(stride)(例如1或2等)。步长(stride)越大,每次跳过的数据就越多,整体的计算量就越小。
在普通CPU运算中,CPU每次读取一个子矩阵,计算与卷积核的内积,然后跳过步长(stride)对应的间隔后再读取下一个子矩阵。即每次只能进行一个卷积运算。
在使用NEON加速的运算中,则根据步长(stride)一次读取4个子矩阵的数据,然后同时计算4个子矩阵与卷积核的内积,之后跳过这4个子矩阵继续计算后续的子矩阵。即每次可进行4个卷积运算,所以速度能提高4倍或更多。
NEON加速中,一次读取多个子矩阵的数据由NEON汇编指令VLD1/VLD2/VLD3/VLD4实现,这4条指令分别对应数据间隔为1,数据间隔为2,数据间隔为3,数据间隔为4的情况。卷积运算时,这4条指令刚好与卷积核的步长(stride)一一对应,即VLD1用于读取步长(stride)为1的数据,VLD2用于读取步长(stride)为2的数据,VLD3用于读取步长(stride)为3的数据,VLD4用于读取步长(stride)为4的数据。如果卷积核的步长(stride)大于4,那么由于没有对应的NEON读取指令,所以需要将数据拆分为两次或多次读取,这时NEON的加速效果就会急剧下降。
发明内容
本发明的目的在于针对市面上常见的ARM嵌入式系统上的NEON加速方案,提出了一种针对NEON优化的卷积神经网络的裁剪方法,其最大化利用NEON硬件的载入浮点数最大间距为4的特性,针对性地裁剪神经网络模型,能够在识别效果只有较小降低的情况下,大大减小卷积神经网络的计算规模,从而大大提高卷积神经网络的运算速度。
为实现上述技术目的,本发明的技术方案是这样实现的:
一种针对NEON优化的卷积神经网络的裁剪方法,所述方法包括:
遍历卷积神经网络中的所有卷积层,检查其卷积核的参数,若所述卷积核的步长不为4,则将所述步长调整为4;
调整所述卷积核的大小,使调整后的卷积运算的相互覆盖与调整前卷积运算的相互覆盖保持一致。
本发明的原理:
在32位NEON指令中,NEON硬件所支持的一次性载入的浮点数的最大间距是4个浮点数(例如VLD4等指令)。如果将卷积层步长(stride)设为少于4,那么卷积次数增加,运行速度会降低;如果大于4,虽然卷积次数减少,但由于4超过了VLD指令支持的最大间距,所以无法使用NEON硬件做加速,仍然会导致速度大大降低。因此,将步长设为4是在具有NEON加速系统上的最优解。另外,由于在提高卷积层步长的同时扩大了kernel的size,所以优化后的网络和优化前具有几乎相同的视野域(Field),所以卷积效果下降很少。
本发明的有益效果:不同的卷积神经网络在使用本发明的方法后提高的速度各有不同,但一般都可以得到4倍左右的速度提升,而计算结果的效能只有少许降低,可满足工程使用。
附图说明
图1是本发明所述方法的流程图;
图2是调整前卷积核大小为3*3,步长为2的卷积示意图;
图3是调整后卷积核大小为5*5,步长为4的卷积示意图;
图4是公开网络SqueezeNet v1.1的网络图(部分);
图5是根据本发明所述方法优化了第一个卷积层之后的网络图(部分);
图6是利用本发明所述方法优化前后在内部测试数据集上得到的PR曲线。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
如图1所示,本发明公开了一种针对NEON优化的卷积神经网络的裁剪方法,所述方法包括:
遍历卷积神经网络中的所有卷积层,检查其卷积核(kernel)的参数,如果卷积核的步长(stride)不为4,则将其调整为4,同时调整卷积核的大小(size),使调整后卷积运算的相互覆盖与调整前卷积运算的相互覆盖保持一致。即如果调整前卷积运算没有相互覆盖部分,那么调整后卷积核的大小(size)可选择3*3或4*4,这样调整后卷积运算仍然没有相互覆盖;如果调整前卷积运算有1个元素的覆盖,那么调整后卷积核的大小(size)可选择5*5,这样调整后卷积运算仍然是1个元素的覆盖;其他的情况依次类推。这里卷积核大小(size)的调整可依据最终网络效果适当选择,如果网络效果下降太多,可将卷积核的大小加1或加2(会导致运算量加大),在效果与运算量之间取得一个均衡。
例如调整前卷积核大小(size)为 3*3,其步长(stride)为2,那么调整前卷积运算有1个元素的相互覆盖,则依据本方法,将卷积核的参数调整为:卷积核大小(size)修改为5*5,步长(stride)修改为4,调整后卷积运算仍然保持1个元素的相互覆盖。此例调整前后的卷积示意图如图2-3所示,图中不同的框代表每次卷积运算参与运算的元素范围。
再例如调整前卷积核大小(size)为 3*3,其步长(stride)为3,那么调整前卷积运算没有相互覆盖,则依据本方法,将卷积核的参数调整为:卷积核大小(size)保持为3*3,步长(stride)修改为4,调整后卷积运算仍然没有相互覆盖。
实施例1
对于SqueezeNet v1.1的网络,图4为其网络图(部分),其对应的计算量如表1所示:
表1
其MACC为387.75M。
利用本发明所述方法对SqueezeNet v1.1的网络的进行优化,将其第一个卷积层修改为stride为4,kernel size为5*5后,其网络图(部分)如图5所示,其对应的计算量如表2所示:
表2
其MACC为106.47M。综上,可以看到优化后的SqueezeNet v1.1的网络运算规模降低到了27.5%,从而速度可以提高到3.64倍。
图6是优化前后公开网络SqueezeNet v1.1在内部测试数据集上得到的PR曲线,从图中可以看到优化后网络效果只有少许降低,可满足工程使用。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (1)
1.一种针对NEON优化的卷积神经网络的裁剪方法,其特征在于,所述方法包括:
遍历卷积神经网络中的所有卷积层,检查其卷积核的参数,若所述卷积核的步长不为4,则将所述步长调整为4;
调整所述卷积核的大小,使调整后的卷积运算的相互覆盖与调整前卷积运算的相互覆盖保持一致。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910091796.9A CN109615066A (zh) | 2019-01-30 | 2019-01-30 | 一种针对neon优化的卷积神经网络的裁剪方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910091796.9A CN109615066A (zh) | 2019-01-30 | 2019-01-30 | 一种针对neon优化的卷积神经网络的裁剪方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109615066A true CN109615066A (zh) | 2019-04-12 |
Family
ID=66021644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910091796.9A Pending CN109615066A (zh) | 2019-01-30 | 2019-01-30 | 一种针对neon优化的卷积神经网络的裁剪方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109615066A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111340224A (zh) * | 2020-02-27 | 2020-06-26 | 杭州雄迈集成电路技术股份有限公司 | 适用于低资源嵌入式芯片的cnn网络的加速设计方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1750486A (zh) * | 2005-08-16 | 2006-03-22 | 西安电子科技大学 | 网络测量体系结构及其实现方法 |
WO2015083199A1 (en) * | 2013-12-04 | 2015-06-11 | J Tech Solutions, Inc. | Computer device and method executed by the computer device |
CN105023241A (zh) * | 2015-07-29 | 2015-11-04 | 华南理工大学 | 一种移动终端快速图像插值方法 |
US20160148078A1 (en) * | 2014-11-20 | 2016-05-26 | Adobe Systems Incorporated | Convolutional Neural Network Using a Binarized Convolution Layer |
CN106846235A (zh) * | 2016-12-26 | 2017-06-13 | 中国科学院计算技术研究所 | 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统 |
WO2017114201A1 (zh) * | 2015-12-31 | 2017-07-06 | 阿里巴巴集团控股有限公司 | 一种设定操作的执行方法及装置 |
CN107704921A (zh) * | 2017-10-19 | 2018-02-16 | 北京智芯原动科技有限公司 | 基于Neon指令的卷积神经网络的算法优化方法及装置 |
CN108549892A (zh) * | 2018-06-12 | 2018-09-18 | 东南大学 | 一种基于卷积神经网络的车牌图像清晰化方法 |
CN108572593A (zh) * | 2018-04-27 | 2018-09-25 | 北京源码矩阵科技有限公司 | 跨平台卷积神经网络控制系统及方法、信息数据处理终端 |
CN109086705A (zh) * | 2018-07-23 | 2018-12-25 | 北京旷视科技有限公司 | 图像处理方法、装置、电子设备及储存介质 |
-
2019
- 2019-01-30 CN CN201910091796.9A patent/CN109615066A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1750486A (zh) * | 2005-08-16 | 2006-03-22 | 西安电子科技大学 | 网络测量体系结构及其实现方法 |
WO2015083199A1 (en) * | 2013-12-04 | 2015-06-11 | J Tech Solutions, Inc. | Computer device and method executed by the computer device |
US20160148078A1 (en) * | 2014-11-20 | 2016-05-26 | Adobe Systems Incorporated | Convolutional Neural Network Using a Binarized Convolution Layer |
CN105023241A (zh) * | 2015-07-29 | 2015-11-04 | 华南理工大学 | 一种移动终端快速图像插值方法 |
WO2017114201A1 (zh) * | 2015-12-31 | 2017-07-06 | 阿里巴巴集团控股有限公司 | 一种设定操作的执行方法及装置 |
CN106846235A (zh) * | 2016-12-26 | 2017-06-13 | 中国科学院计算技术研究所 | 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统 |
CN107704921A (zh) * | 2017-10-19 | 2018-02-16 | 北京智芯原动科技有限公司 | 基于Neon指令的卷积神经网络的算法优化方法及装置 |
CN108572593A (zh) * | 2018-04-27 | 2018-09-25 | 北京源码矩阵科技有限公司 | 跨平台卷积神经网络控制系统及方法、信息数据处理终端 |
CN108549892A (zh) * | 2018-06-12 | 2018-09-18 | 东南大学 | 一种基于卷积神经网络的车牌图像清晰化方法 |
CN109086705A (zh) * | 2018-07-23 | 2018-12-25 | 北京旷视科技有限公司 | 图像处理方法、装置、电子设备及储存介质 |
Non-Patent Citations (2)
Title |
---|
YUFEI MA等: "Optimizing the Convolution Operation to Accelerate Deep Neural Networks on FPGA" * |
王哲峰: "移动端目标检测系统的设计与实现" * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111340224A (zh) * | 2020-02-27 | 2020-06-26 | 杭州雄迈集成电路技术股份有限公司 | 适用于低资源嵌入式芯片的cnn网络的加速设计方法 |
CN111340224B (zh) * | 2020-02-27 | 2023-11-21 | 浙江芯劢微电子股份有限公司 | 适用于低资源嵌入式芯片的cnn网络的加速设计方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109711532B (zh) | 一种针对硬件实现稀疏化卷积神经网络推断的加速方法 | |
CN109377232B (zh) | 基于dag的区块链的交易定序方法及设备 | |
CN111062472B (zh) | 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法 | |
WO2021067665A3 (en) | Enhancing artificial intelligence routines using 3d data | |
CN111814973B (zh) | 一种适用于神经常微分方程网络计算的存内计算系统 | |
CN111898733A (zh) | 一种深度可分离卷积神经网络加速器架构 | |
KR102247896B1 (ko) | 학습된 파라미터의 형태변환을 이용한 컨벌루션 신경망 파라미터 최적화 방법, 컨벌루션 신경망 연산방법 및 그 장치 | |
KR102360452B1 (ko) | 뉴럴 네트워크 프로세서의 컨벌루션 연산 처리 방법 및 장치 | |
CN109447254B (zh) | 一种卷积神经网络推理硬件加速方法及其装置 | |
CN110069444A (zh) | 一种计算单元、阵列、模块、硬件系统及实现方法 | |
CN112734020A (zh) | 卷积神经网络的卷积乘累加硬件加速装置、系统以及方法 | |
CN109615066A (zh) | 一种针对neon优化的卷积神经网络的裁剪方法 | |
CN107748913A (zh) | 一种深度神经网络的通用小型化方法 | |
CN110490308B (zh) | 加速库的设计方法、终端设备及存储介质 | |
CN209708122U (zh) | 一种计算单元、阵列、模块、硬件系统 | |
CN113781616B (zh) | 一种基于神经网络的面部动画绑定加速方法 | |
CN112313674A (zh) | 神经网络模型部署方法、装置及设备 | |
CN117521763A (zh) | 一种融合组正则化剪枝和重要性剪枝的人工智能模型压缩方法 | |
CN109389216A (zh) | 神经网络的动态裁剪方法、装置及存储介质 | |
CN105589896B (zh) | 数据挖掘方法及装置 | |
CN115130672B (zh) | 一种软硬件协同优化卷积神经网络计算的方法及装置 | |
CN110221839A (zh) | 一种硬件加速器VerilogHDL代码自动生成方法 | |
CN113887491A (zh) | 基于跨时空图卷积网络的人体骨架行为识别系统及方法 | |
CN110807479A (zh) | 一种基于Kmeans算法的神经网络卷积计算加速方法 | |
Gao et al. | Faster stochastic second order method for large-scale machine learning models |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190412 |
|
WD01 | Invention patent application deemed withdrawn after publication |