CN110232665B - 最大池化方法、装置、计算机设备及存储介质 - Google Patents
最大池化方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN110232665B CN110232665B CN201910512644.1A CN201910512644A CN110232665B CN 110232665 B CN110232665 B CN 110232665B CN 201910512644 A CN201910512644 A CN 201910512644A CN 110232665 B CN110232665 B CN 110232665B
- Authority
- CN
- China
- Prior art keywords
- register
- pooling
- instruction
- maximum
- memory
- 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
- 238000011176 pooling Methods 0.000 title claims abstract description 156
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000010586 diagram Methods 0.000 claims abstract description 27
- 238000013527 convolutional neural network Methods 0.000 claims abstract description 26
- 238000004364 calculation method Methods 0.000 claims abstract description 17
- 238000012545 processing Methods 0.000 abstract description 11
- 230000006870 function Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 4
- 238000012549 training Methods 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000001994 activation Methods 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 229910052754 neon Inorganic materials 0.000 description 2
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
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
-
- G06T5/90—
Abstract
本申请实施例公开了一种最大池化方法、装置、计算机设备及存储介质,属于卷积神经网络领域。所述方法包括:获取特征图,特征图由卷积神经网络中的卷积层输出,且特征图在内存中采用预定内存布局方式;对于特征图上的各个池化窗口,获取池化窗口内的特征值;根据并行计算指令计算池化窗口对应的最大特征值,并行计算指令用于指示进行SIMD运算;根据各个池化窗口对应的最大特征值生成特征图的最大池化结果。本申请实施例中,由于计算机设备能够根据并行计算指令进行单指令多数据流运算,因此能够提高对特征图进行最大池化处理的速度,进而提高卷积神经网络的性能。
Description
技术领域
本申请实施例涉及卷积神经网络领域,特别涉及一种最大池化方法、装置、计算机设备及存储介质。
背景技术
在卷积神经网络中,卷积层(Convolutional layer)后通常会连接池化层(Pooling layer),用于对卷积得到的特征图(Feature Map)进行池化操作。
由于卷积后得到的特征图中包含对物体识别不必要的冗余信息,而池化操作可以保留特征图中的有效信息并去除冗余信息,因此对特征图进行池化操作可以降低卷积神经网络的参数量,并提高卷积神经网络的识别精度。其中,常用的池化操作包括最大池化(MaxPooling)和平均池化(Average Pooling)。
发明内容
本申请实施例提供了一种卷积神经网络中的最大池化方法、装置、计算机设备及存储介质。所述技术方案如下:
一方面,提供了一种最大池化方法,所述方法包括:
获取特征图,所述特征图由卷积神经网络中的卷积层输出,且所述特征图在内存中采用预定内存布局方式;
对于所述特征图上的各个池化窗口,获取所述池化窗口内的特征值;
根据并行计算指令计算所述池化窗口对应的最大特征值,所述并行计算指令用于指示进行单指令多数据流(Single Instruction Multiple Data,SIMD)运算;
根据各个所述池化窗口对应的所述最大特征值生成所述特征图的最大池化结果。
另一方面,提供了一种最大池化装置,所述装置包括:
第一获取模块,用于获取特征图,所述特征图由卷积神经网络中的卷积层输出,且所述特征图在内存中采用预定内存布局方式;
第二获取模块,用于对于所述特征图上的各个池化窗口,获取所述池化窗口内的特征值;
计算模块,用于根据并行计算指令计算所述池化窗口对应的最大特征值,所述并行计算指令用于指示进行SIMD运算;
生成模块,用于根据各个所述池化窗口对应的所述最大特征值生成所述特征图的最大池化结果。
另一方面,本申请实施例提供了一种终端,所述终端包括:终端包括处理器和存储器;所述存储器存储有至少一条指令,所述至少一条指令用于被所述处理器执行以实现如上述方面所述的最大池化方法。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有至少一条指令,所述至少一条指令用于被处理器执行以实现如上述方面所述的卷积神经网络的最大池化方法。
另一方面,还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现上述方面所述的最大池化方法。
本申请实施例中,计算机设备获取到卷积层输出的特征图后,读取特征图上池化窗口内的特征值,并根据并行计算指令计算池化窗口对应的最大特征值,从而根据各个池化窗口对应的最大特征值生成该特征图的最大池化结果;由于计算机设备能够根据并行计算指令进行单指令多数据流运算,因此能够提高对特征图进行最大池化处理的速度,进而提高卷积神经网络的性能。
附图说明
图1示出了本申请一个示例性实施例提供的计算机设备的结构方框图;
图2示出了本申请一个示例性实施例示出的最大池化方法的流程图;
图3是一个示意性实施例提供的滑窗法的实施示意图;
图4示出了本申请另一个示例性实施例示出的最大池化方法的流程图;
图5是两种内存布局方式的示意图;
图6示出了本申请另一个示例性实施例示出的最大池化方法的流程图;
图7是一个示例性实施例提供的最大池化方法的实施示意图;
图8是使用本申请实施例提供的最大池化方法前后最大池化运行时间的对比图;
图9示出了本申请一个实施例提供的最大池化装置的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
参考图1所示,其示出了本申请一个示例性实施例提供的计算机设备100的结构方框图。该计算机设备100可以是手机、平板电脑、笔记本电脑和电子书等。本申请中的计算机设备100可以包括一个或多个如下部件:处理器110、存储器120和显示屏130。
处理器110可以包括一个或者多个处理核心。处理器110利用各种接口和线路连接整个计算机设备100内的各个部分,通过运行或执行存储在存储器120内的指令、程序、代码集或指令集,以及调用存储在存储器120内的数据,执行计算机设备100的各种功能和处理数据。可选地,处理器110可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(ProgrammableLogic Array,PLA)中的至少一种硬件形式来实现。处理器110可集成中央处理器(CentralProcessing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)、神经网络处理器(Neural-network Processing Unit,NPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责触摸显示屏130所需要显示的内容的渲染和绘制;NPU用于实现人工智能(Artificial Intelligence,AI)功能;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器110中,单独通过一块芯片进行实现。
存储器120可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选地,该存储器120包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器120可用于存储指令、程序、代码、代码集或指令集。存储器120可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等;存储数据区可存储根据计算机设备100的使用所创建的数据(比如音频数据、电话本)等。
以操作系统为安卓(Android)系统为例,存储器120中存储的程序和数据如图1所示,存储器120中存储有Linux内核层220、系统运行库层240、应用框架层260和应用层280。Linux内核层220为计算机设备100的各种硬件提供了底层的驱动,如显示驱动、音频驱动、摄像头驱动、蓝牙驱动、Wi-Fi驱动、电源管理等。系统运行库层240通过一些C/C++库来为Android系统提供了主要的特性支持。如SQLite库提供了数据库的支持,OpenGL/ES库提供了3D绘图的支持,Webkit库提供了浏览器内核的支持等。在系统运行库层240中还提供有Android运行时库242(Android Runtime),它主要提供了一些核心库,能够允许开发者使用Java语言来编写Android应用。应用框架层260提供了构建应用程序时可能用到的各种API,开发者也可以通过使用这些API来构建自己的应用程序,比如活动管理、窗口管理、视图管理、通知管理、内容提供者、包管理、通话管理、资源管理、定位管理。应用层280中运行有至少一个应用程序,这些应用程序可以是操作系统自带的联系人程序、短信程序、时钟程序、相机应用等;也可以是第三方开发者所开发的应用程序,比如即时通信程序、相片美化程序等。
显示屏130用于显示用户界面的显示组件。可选的,该显示屏130还具有触控功能,用于接收用户使用手指、触摸笔等任何适合的物体在其上或附近的触摸操作。显示屏130通常设置在终端130的前面板。显示屏130可被设计成为全面屏、曲面屏、异型屏、双面屏或折叠屏。显示屏130还可被设计成为全面屏与曲面屏的结合,异型屏与曲面屏的结合,本实施例对此不加以限定。
除此之外,本领域技术人员可以理解,上述附图所示出的计算机设备100的结构并不构成对计算机设备100的限定,终端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,计算机设备100中还包括射频电路、输入单元、传感器、音频电路、无线保真(Wireless Fidelity,WiFi)模块、电源、蓝牙模块等部件,在此不再赘述。
本申请各个实施例提供的最大池化方法,可以应用于卷积神经网络的训练场景以及卷积神经网络的使用场景。其中,将该方法应用于卷积神经网络的训练场景时,可以提高训练过程中对特征图进行最大池化的速度,以此减少卷积神经网络的训练时间;将该方法应用于卷积神经网络的使用场景时,可以提高卷积神经网络中池化层的池化速度,以此提高卷积神经网络的识别效率。
当然,除了上述示例性的场景外,本申请实施例提供的最大池化方法还可以应用到其他需要进行最大池化操作的场景,本申请实施例对此不做限定。
请参考图2,其示出了本申请一个示例性实施例示出的最大池化方法的流程图。本实施例以该方法应用于图1所示的计算机设备100来举例说明。该方法包括:
步骤201,获取特征图,特征图由卷积神经网络中的卷积层输出,且特征图在内存中采用预定内存布局方式。
其中,该卷积神经网络可以采用LeNet架构、AlexNet架构、VggNet架构、ResNet架构等等,本申请实施例并不对具体的神经网络架构进行限定。
在一种可能的实施方式中,当卷积神经网络中包含多个卷积层时,对于每个卷积层输出的特征图,均可以采用下述步骤对特征图进行最大池化处理。
可选的,该特征图还经过激活处理。比如,对于卷积层输出的特征图,计算机设备利用线性整流函数(Rectified Linear Unit,ReLU)对该特征图进行激活处理。
当计算机设备包含高速缓冲存储器(cache)时,由于cache的读取速度优于内存的读取速度,因此内存中的部分数据首先被加载到cache中,然后由处理器从cache中读取数据。为了提高最大池化操作过程中内存的cache命中率,从而提高最大池化效率,在一种可能的实施方式中,特征图在内存中采用预定内存布局方式,且该预定内存布局方式与最大池化操作相匹配。其中,内存布局方式可以包括NHWC布局方式和NCHW布局方式,N表示图片数量,H表示图像高度,W表示图像宽度,C表示通道。下述实施例将针对NHWC布局方式和NCHW布局方式进行详细描述。
步骤202,对于特征图上的各个池化窗口,获取池化窗口内的特征值。
在一种可能的实施方式中,计算机设备采用滑窗法对特征图进行最大池化处理。在使用滑窗法时,即将池化窗口沿着特征图的HW维滑动,并在每次滑动后,计算当前滑动窗口内的最大特征值。
可选的,计算机设备根据步长(stride)参数以及边缘填充(padding)参数,控制预定尺寸(size)的池化窗口在特征图上滑动。
在一个示意性的例子中,如图3所示,对于4×4的特征图31,当使用3×3的池化窗口32,并按照步长1进行滑窗时,第一次滑窗时,池化窗口32内包含左上角3×3特征图区域内的特征值;第二次滑窗时,池化窗口32内包含右上角3×3特征图区域内的特征值;第三次滑窗时,池化窗口32内包含左下角3×3特征图区域内的特征值;第四次滑窗时,池化窗口32内包含右下角3×3特征图区域内的特征值。
在一种可能的实施方式中,计算机设备通过处理器从cache中读取池化窗口内的特征值。
步骤203,根据并行计算指令计算池化窗口对应的最大特征值,并行计算指令用于指示进行SIMD运算。
在一种可能的实施方式中,对于各个池化窗口,计算机设备根据并行计算指令,采用单指令多数据流的运算方式计算池化窗口内的最大特征值。
可选的,当计算机设备的处理器采用高级精简指令集计算机(Advanced RISCMachine,ARM)架构时,该并行计算指令为NEON指令,其中,NEON指令是适用于ARM系列处理器的一种128位SIMD扩展结构。
相较于相关技术中,计算机设备在计算池化窗口的最大特征值时,首先将池化窗口内的特征值逐一取出,然后分别比较各个特征值的大小,从而确定出池化窗口的最大特征值,采用单指令多数据流的运算方式时,由于能够并行计算,因此能够提高计算最大特征值的效率。
步骤204,根据各个池化窗口对应的最大特征值生成特征图的最大池化结果。
进一步,通过上述步骤计算得到各个池化窗口对应的最大特征值后,计算机设备基于各个最大特征值生成最大池化结果。
在一个示意性的例子中,如图3所示,对4×4的特征图31进行最大池化处理后(本质上是一种下采样处理),得到的2×2的特征图。
可选的,该最大池化结果输入下一层卷积层,由卷积层对该最大池化结构进行进一步特征提取(利用卷积核进行卷积处理)。
综上所述,本申请实施例中,计算机设备获取到卷积层输出的特征图后,读取特征图上池化窗口内的特征值,并根据并行计算指令计算池化窗口对应的最大特征值,从而根据各个池化窗口对应的最大特征值生成该特征图的最大池化结果;由于计算机设备能够根据并行计算指令进行单指令多数据流运算,因此能够提高对特征图进行最大池化处理的速度,进而提高卷积神经网络的性能。
请参考图4,其示出了本申请另一个示例性实施例示出的最大池化方法的流程图。本实施例以该方法应用于图1所示的计算机设备100来举例说明。该方法包括:
步骤401,获取特征图,该特征图在内存中采用NCHW内存布局方式。
上述实施例中涉及两种内存布局方式,分别为NHWC布局方式和NCHW布局方式。其中,NHWC内存布局方式下是按照通道这一维度进行内存排布;而在NCHW内存布局方式下则是按照HW这一维度进行内存排布。
在一个示意性的例子中,当图片包含RGB(分别对应红绿蓝)三个通道时,如图4所示,当采用NHWC内存布局方式时,其内存结构为(RGB,RGB,RGB,RGB),而采用NCHW内存布局方式时,其内存结构为(RRRR,GGGG,BBBB)。
由于最大值池化是一种针对同一通道下HW维进行池化操作,因此,若特征图采用NHWC内存布局方式,在进行最大池化时,需要间隔获取内存,导致内存的cache命中率较低,比如,在图4所示的例子中,处理器每间隔2个数据才能获取到一个R;而特征图采用NCHW内存布局方式时,在进行最大池化时,处理器可以连续获取内存,从而提高内存的cache命中率。
为了提高内存的cache命中率,从而提高最大池化的效率,本申请实施例中,特征图在内存中采用NCHW内存布局方式,其中,采用NCHW内存布局方式时,特征图中同一通道内的特征值连续写入内存。
步骤402,对于特征图上的各个池化窗口,获取池化窗口内的特征值。
由于采用了NCHW内存布局方式,因此计算机设备获取特征值时,可以连续读取内存,从而提高了特征值的获取效率。
步骤403,根据第一并行计算指令将池化窗口内的特征值加载到至少两个寄存器中。
可选的,当池化窗口的尺寸为n×n时,计算机设备根据第一并行计算指令,将池化窗口内的n行特征值分为加载到n个寄存器中。
在一种可能的实施方式中,当处理器采用ARM架构时,该寄存器为128比特(即16字节),相应的,该第一并行计算指令为vld1q_f32指令,vld1q_f32指令用于指示将浮点型(float)的特征值加载到寄存器中,其中,每个特征值为4字节,即每个寄存器最多可以加载4个特征值。
可选的,如图6所示,本步骤包括如下步骤。
步骤403A,根据第一并行计算指令将池化窗口中第i行的特征值加载至第i个寄存器中,i为小于等于n的整数。
示意性的,当池化窗口的尺寸为3×3时,即将第1行的3个特征值加载至第一个寄存器中,将第2行的3个特征值加载至第二个寄存器中,将第3行的3个特征值加载至第三个寄存器中。
为了使第i行的n个特征值能够完整加载至第i个寄存器中,在一种可能的实施方式中,向寄存器中加载特征值前,计算机设备检测(第i个)寄存器的尺寸是否大于等于池化窗口的尺寸,若第i个寄存器的尺寸大于等于n,则根据将池化窗口中第i行的n个特征值加载至第i个寄存器中。
在一个示意性的例子中,当寄存器为128比特,且特征值采用浮点型时(寄存器最大加载128bit/32bit=4个特征值),当池化窗口的尺寸大于等于4时,即将池化窗口中第i行的n个特征值加载至第i个寄存器中。
当池化窗口的尺寸等于寄存器的尺寸时,加载完特征值后,寄存器中不包含空余位置;当池化窗口的尺寸小于寄存器的尺寸时,加载完特征值后,寄存器中还包含空余位置。可选的,对于寄存器中的空余位置,计算机设备使用无效值进行填充。
示意性的,如图7所示,池化窗口71的尺寸的3×3,第一行的特征值7、2、1加载至第一寄存器72中,第二行的特征值3、6、9加载至第二寄存器73中,第三行的特征值5、8、4被加载至第三寄存器74中。并且,由于寄存器最大能够加载4个特征值,因此,各个寄存器的第4寄存器位置为空余位置,并使用无效值X填充。
可选的,若第i个寄存器的尺寸小于n,计算机设备采用混合方式进行最大池化处理。其中,混合方式下,第i行的前i个特征值加载至第i个寄存器中,第i+1至第n个特征值则被取出。后续即通过并行计算指令计算n个寄存器中的最大特征值,将该最大特征值与未写入寄存器的n×(n-i)个特征值进行比较,从而得到最终的最大特征值。
步骤404,根据第二并行计算指令计算各个寄存器中的最大特征值。
进一步的,将池化窗口内的特征值加载至寄存器后,计算器设备根据第二并行指令计算各个寄存器中的最大特征值。其中,第二并行计算指令用于指示计算两个寄存器中对应特征值的最大值。
在一种可能的实施方式中,当处理器采用ARM架构时,该寄存器为128比特(即16字节),相应的,该第二并行计算指令为vmaxq_f32指令。
可选的,如图6所示,本步骤可以包括如下步骤。
步骤404A,根据第二并行计算指令比较第1个寄存器至第n个寄存器,得到目标寄存器,目标寄存器中包含第1个寄存器至第n个寄存器中对应位置处特征值的最大值。
其中,目标寄存器中第1寄存器位置处的特征值,即为第1个寄存器至第n个寄存器中第1寄存器位置处特征值的最大值,目标寄存器中第2寄存器位置处的特征值,即为第个寄存器至第n个寄存器中第2寄存器位置处特征值的最大值,以此类推。
在一种可能的实施方式中,根据第1个寄存器至第n个寄存器得到目标寄存器时可以采用如下方式。
一、根据第二并行计算指令比较第j个寄存器和第j+1个寄存器中对应位置处的特征值,j大于等于1,且小于等于n-1。
可选的,计算机设备根据第二并行计算指令,并行比较第j个寄存器和第j+1个寄存器中对应位置处特征值的大小。比如,当第一个寄存器和第二个寄存器中均包含4个特征值时(均为有效特征值),计算机设备即比较第一个寄存器中第一寄存器位置处的特征值与第二个寄存器中第一寄存器位置处的特征值,比较第一个寄存器中第二寄存器位置处的特征值与第二个寄存器中第二寄存器位置处的特征值,第一个寄存器中第三寄存器位置处的特征值与第二个寄存器中第三寄存器位置处的特征值,第一个寄存器中第四寄存器位置处的特征值与第二个寄存器中第四寄存器位置处的特征值,其中,上述比较步骤并行执行。
示意性的,如图7所示,对于第一寄存器72和第二寄存器73,计算机设备比较两个寄存器中第一寄存器位置处的特征值7和3,比较两个寄存器中第二寄存器位置处的特征值2和6,比较两个寄存器中第三寄存器位置处的特征值1和9(无效值可以不用进行比较)。
二、根据比较结果更新第j+1个寄存器,其中,更新后的第j+1寄存器中包含第j个寄存器和第j+1个寄存器中对应位置处特征值的最大值。
进一步的,根据比较结果,计算机设备对第j+1个寄存器进行更新,以便后续使用更新后的第j+1个寄存器与第j+2个寄存器进行比较,并根据比较结果更新第j+2个寄存器,直至更新至第n个寄存器。
示意性的,如图7所示,计算机设备根据比较结果将第二寄存器73中的特征值更新为7、6、9、X。进一步的,计算机设备根据第二并行计算指令比较第二寄存器73和第三寄存器74,并根据比较结果将第三寄存器74中的特征值更新为7、8、9、X。
三、将更新后的第n个寄存器确定为目标寄存器。
当存在n个寄存器时,计算机设备即将更新后的第n个寄存器确定为目标寄存器。
示意性的,如图7所示,由于存在3个寄存器,因此更新后的第三寄存器74被确定为目标寄存器。
不同于相关技术中,逐一读取特征值进行比较,本实施例中,根据第二并行计算指令可以实现寄存器中特征值的同步比较,进而提高了比较速度。
步骤404B,根据目标寄存器确定最大特征值。
在一种可能的实施方式中,计算机设备读取目标寄存器中的有效特征值,并通过比较各个有效特征值确定最大特征值。
示意性的,如图7所示,第三寄存器74(即目标寄存器)中包含3个有效特征值,因此计算机设备比较第三寄存器74中前3个特征值7、8、9,最终确定出最大特征值为9。
步骤405,根据各个池化窗口对应的最大特征值生成特征图的最大池化结果。
本步骤的实施方式可以参考上述步骤204,本实施例在此不再赘述。
如图7所示,相较于相关技术中,需要连续比较8次(9个特征值需要比较8次),本实施例中,计算机设备除了比较寄存器外,只需要比较2次(目标寄存器中的3个特征值只需比较2次)即可确定出池化窗口内的最大特征值,极大的提高了最大池化的效率。
为了量化本申请实施例中最大池化方法的效果,将上述最大池化方法应用于Inception-v3模型,并与未使用上述最大池化方法的Inception-v3模型进行对比,得到最大池化运行时间的对比图如图8所示。
从图8可以看出,利用上述最大池化方法后,最大池化的运行时间缩短了接近二分之一,Inception-v3模型的性能得到显著提升。
请参考图9,其示出了本申请一个实施例提供的最大池化装置的结构框图。该装置可以通过软件、硬件或者两者的结合实现成为计算机设备的全部或一部分。该装置包括:
第一获取模块910,用于获取特征图,所述特征图由卷积神经网络中的卷积层输出,且所述特征图在内存中采用预定内存布局方式;
第二获取模块920,用于对于所述特征图上的各个池化窗口,获取所述池化窗口内的特征值;
计算模块930,用于根据并行计算指令计算所述池化窗口对应的最大特征值,所述并行计算指令用于指示进行SIMD运算;
生成模块940,用于根据各个所述池化窗口对应的所述最大特征值生成所述特征图的最大池化结果。
可选的,所述特征图在内存中采用NCHW内存布局方式,其中,采用所述NCHW内存布局方式时,所述特征图中同一通道内的特征值连续写入内存。
可选的,所属计算模块930,包括:
加载单元,用于根据第一并行计算指令将所述池化窗口内的特征值加载到至少两个寄存器中;
计算单元,用于根据第二并行计算指令计算各个所述寄存器中的所述最大特征值。
可选的,所述池化窗口的尺寸的n×n,n为大于等于2的整数;
所述加载单元,用于:
根据所述第一并行计算指令将所述池化窗口中第i行的特征值加载至第i个寄存器中,i为小于等于n的整数。
可选的,所述加载单元,用于:
若所述第i个寄存器的尺寸大于等于n,则根据所述第一并行计算指令将所述池化窗口中第i行的特征值加载至所述第i个寄存器中;
其中,当所述第i个寄存器的尺寸大于n时,将所述池化窗口中第i行的特征值加载至所述第i个寄存器后,所述第i个寄存器中的空余位置使用无效值填充。
可选的,所述计算单元,用于:
根据所述第二并行计算指令比较第1个寄存器至第n个寄存器,得到目标寄存器,所述目标寄存器中包含所述第1个寄存器至所述第n个寄存器中对应位置处特征值的最大值;
根据所述目标寄存器确定所述最大特征值。
可选的,所述计算单元,用于:
根据所述第二并行计算指令比较第j个寄存器和第j+1个寄存器中对应位置处的特征值,j大于等于1,且小于等于n-1;
根据比较结果更新所述第j+1个寄存器,其中,更新后的所述第j+1寄存器中包含所述第j个寄存器和所述第j+1个寄存器中对应位置处特征值的最大值;
将更新后的所述第n个寄存器确定为所述目标寄存器。
可选的,寄存器为128比特,所述第一并行计算指令为vld1q_f32指令,所述第二并行计算指令为vmaxq_f32指令。
综上所述,本申请实施例中,计算机设备获取到卷积层输出的特征图后,读取特征图上池化窗口内的特征值,并根据并行计算指令计算池化窗口对应的最大特征值,从而根据各个池化窗口对应的最大特征值生成该特征图的最大池化结果;由于计算机设备能够根据并行计算指令进行单指令多数据流运算,因此能够提高对特征图进行最大池化处理的速度,进而提高卷积神经网络的性能。
本申请实施例还提供了一种计算机可读介质,该计算机可读介质存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的最大池化方法。
本申请实施例还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如上各个实施例所述的最大池化方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (9)
1.一种最大池化方法,其特征在于,所述方法包括:
获取特征图,所述特征图由卷积神经网络中的卷积层输出,且所述特征图在内存中采用NCHW内存布局方式,其中,采用所述NCHW内存布局方式时,所述特征图中同一通道内的特征值连续写入内存;
对于所述特征图上的各个池化窗口,获取所述池化窗口内的特征值,其中,所述池化窗口内的特征值从内存中连续读取得到;
根据第一并行计算指令将所述池化窗口内的特征值加载到至少两个寄存器中;
根据第二并行计算指令计算各个所述寄存器中的最大特征值,所述第一并行计算指令和所述第二并行计算指令用于指示进行单指令多数据流SIMD运算;
根据各个所述池化窗口对应的所述最大特征值生成所述特征图的最大池化结果。
2.根据权利要求1所述的方法,其特征在于,所述池化窗口的尺寸的n×n,n为大于等于2的整数;
所述根据第一并行计算指令将所述池化窗口内的特征值加载到至少两个寄存器中,包括:
根据所述第一并行计算指令将所述池化窗口中第i行的特征值加载至第i个寄存器中,i为小于等于n的整数。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一并行计算指令将所述池化窗口中第i行的特征值加载至第i个寄存器中,包括:
若所述第i个寄存器的尺寸大于等于n,则根据所述第一并行计算指令将所述池化窗口中第i行的特征值加载至所述第i个寄存器中;
其中,当所述第i个寄存器的尺寸大于n时,将所述池化窗口中第i行的特征值加载至所述第i个寄存器后,所述第i个寄存器中的空余位置使用无效值填充。
4.根据权利要求3所述的方法,其特征在于,所述根据第二并行计算指令计算各个所述寄存器中的所述最大特征值,包括:
根据所述第二并行计算指令比较第1个寄存器至第n个寄存器,得到目标寄存器,所述目标寄存器中包含所述第1个寄存器至所述第n个寄存器中对应位置处特征值的最大值;
根据所述目标寄存器确定所述最大特征值。
5.根据权利要求4所述的方法,其特征在于,所述根据所述第二并行计算指令比较第1个寄存器至第n个寄存器,得到目标寄存器,包括:
根据所述第二并行计算指令比较第j个寄存器和第j+1个寄存器中对应位置处的特征值,j大于等于1,且小于等于n-1;
根据比较结果更新所述第j+1个寄存器,其中,更新后的所述第j+1寄存器中包含所述第j个寄存器和所述第j+1个寄存器中对应位置处特征值的最大值;
将更新后的所述第n个寄存器确定为所述目标寄存器。
6.根据权利要求1所述的方法,其特征在于,寄存器为128比特,所述第一并行计算指令为vld1q_f32指令,所述第二并行计算指令为vmaxq_f32指令。
7.一种最大池化装置,其特征在于,所述装置包括:
第一获取模块,用于获取特征图,所述特征图由卷积神经网络中的卷积层输出,且所述特征图在内存中采用NCHW内存布局方式,其中,采用所述NCHW内存布局方式时,所述特征图中同一通道内的特征值连续写入内存;
第二获取模块,用于对于所述特征图上的各个池化窗口,获取所述池化窗口内的特征值,其中,所述池化窗口内的特征值从内存中连续读取得到;
计算模块中的加载单元,用于根据第一并行计算指令将所述池化窗口内的特征值加载到至少两个寄存器中;
所述计算模块中的计算单元,用于根据第二并行计算指令计算各个所述寄存器中的最大特征值,所述第一并行计算指令和所述第一并行计算指令用于指示进行单指令多数据流SIMD运算;
生成模块,用于根据各个所述池化窗口对应的所述最大特征值生成所述特征图的最大池化结果。
8.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器;所述存储器存储有至少一条指令,所述至少一条指令用于被所述处理器执行以实现如权利要求1至6任一所述的最大池化方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有至少一条指令,所述至少一条指令用于被处理器执行以实现如权利要求1至6任一所述的最大池化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910512644.1A CN110232665B (zh) | 2019-06-13 | 2019-06-13 | 最大池化方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910512644.1A CN110232665B (zh) | 2019-06-13 | 2019-06-13 | 最大池化方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110232665A CN110232665A (zh) | 2019-09-13 |
CN110232665B true CN110232665B (zh) | 2021-08-20 |
Family
ID=67859830
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910512644.1A Active CN110232665B (zh) | 2019-06-13 | 2019-06-13 | 最大池化方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110232665B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110866590A (zh) * | 2019-10-22 | 2020-03-06 | Oppo广东移动通信有限公司 | 数据处理方法及装置、电子设备、存储介质 |
CN111027682A (zh) * | 2019-12-09 | 2020-04-17 | Oppo广东移动通信有限公司 | 神经网络处理器、电子设备及数据处理方法 |
CN112862667A (zh) * | 2021-01-29 | 2021-05-28 | 成都商汤科技有限公司 | 一种池化方法、芯片、设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106991473A (zh) * | 2017-03-30 | 2017-07-28 | 中国人民解放军国防科学技术大学 | 面向向量处理器的基于simd的平均值值池化并行处理方法 |
CN109389215A (zh) * | 2017-08-03 | 2019-02-26 | 杭州海康威视数字技术股份有限公司 | 一种深度学习网络的网络结构确定方法及装置 |
-
2019
- 2019-06-13 CN CN201910512644.1A patent/CN110232665B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106991473A (zh) * | 2017-03-30 | 2017-07-28 | 中国人民解放军国防科学技术大学 | 面向向量处理器的基于simd的平均值值池化并行处理方法 |
CN109389215A (zh) * | 2017-08-03 | 2019-02-26 | 杭州海康威视数字技术股份有限公司 | 一种深度学习网络的网络结构确定方法及装置 |
Non-Patent Citations (3)
Title |
---|
"ARM_NEON_CNN编程 SIMD单指令多数据流 intrinsics指令 内联汇编 CNN卷积⽹络优化 深度学习优化,网址为:https://blog.csdn.net/xiaoxiaowenqiang/article/details/89706562";EwenWanW;《CSDN》;20190430;第1-3页 * |
Efficient SIMD Implementation for Accelerating Convolutional Neural Network;Sung-Jin Lee 等;《ICCIP"18:Proceedings of the 4th international Conference on Communication and Information Processing》;20181130;全文 * |
面向训练阶段的神经网络性能分析;李景军 等;《计算机科学与探索》;20171128;第1647页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110232665A (zh) | 2019-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109117948B (zh) | 画风转换方法及相关产品 | |
US20220284638A1 (en) | Method for image processing, computer device, and storage medium | |
CN110232665B (zh) | 最大池化方法、装置、计算机设备及存储介质 | |
US20230099652A1 (en) | Scalable neural network processing engine | |
US11023206B2 (en) | Dot product calculators and methods of operating the same | |
CN113313243B (zh) | 神经网络加速器的确定方法、装置、设备以及存储介质 | |
KR20210002662A (ko) | 뉴럴 네트워크 프로세서에서 태스크들을 할당하기 위한 시스템들 및 방법들 | |
CN113743599B (zh) | 一种卷积神经网络的运算装置及服务器 | |
CN110390075A (zh) | 矩阵预处理方法、装置、终端及可读存储介质 | |
WO2023197762A1 (zh) | 图像渲染方法、装置、电子设备、计算机可读存储介质及计算机程序产品 | |
CN112783506A (zh) | 一种模型运行方法及相关装置 | |
CN110471700B (zh) | 图形处理方法、装置、存储介质及电子设备 | |
CN111814957A (zh) | 神经网络运算方法及相关设备 | |
US10275230B2 (en) | Cache aware self-referential structure peeling | |
US11734007B2 (en) | Address generation method, related apparatus, and storage medium | |
CN115878188B (zh) | 一种基于sve指令集的池化层函数的高性能实现方法 | |
CN117112165A (zh) | 虚拟现实应用任务的处理方法、装置、虚拟现实系统 | |
CN112419430A (zh) | 动画播放方法、装置及计算机设备 | |
CN113625930B (zh) | 一种数据显示方法、计算设备及可读存储介质 | |
EP4231243A1 (en) | Data storage management method, object rendering method, and device | |
WO2023193719A1 (en) | Apparatus, method, and computer-readable medium for image processing using variable-precision shading | |
EP4350605A1 (en) | Image processing method and apparatus, device, and medium | |
US20230368454A1 (en) | Graphics Processing Unit Instancing Control | |
CN115908852A (zh) | 图像处理的方法、装置、电子设备及存储介质 | |
CN112017100A (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 |