CN110322389B - 池化方法、装置及系统、计算机可读存储介质 - Google Patents

池化方法、装置及系统、计算机可读存储介质 Download PDF

Info

Publication number
CN110322389B
CN110322389B CN201810272844.XA CN201810272844A CN110322389B CN 110322389 B CN110322389 B CN 110322389B CN 201810272844 A CN201810272844 A CN 201810272844A CN 110322389 B CN110322389 B CN 110322389B
Authority
CN
China
Prior art keywords
pooling
pixel data
line
window
cache
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
CN201810272844.XA
Other languages
English (en)
Other versions
CN110322389A (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.)
Thinkforce Electronic Technology Co ltd
Original Assignee
Thinkforce Electronic 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 Thinkforce Electronic Technology Co ltd filed Critical Thinkforce Electronic Technology Co ltd
Priority to CN201810272844.XA priority Critical patent/CN110322389B/zh
Priority to US16/362,338 priority patent/US10657620B2/en
Publication of CN110322389A publication Critical patent/CN110322389A/zh
Application granted granted Critical
Publication of CN110322389B publication Critical patent/CN110322389B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/46Descriptors for shape, contour or point-related descriptors, e.g. scale invariant feature transform [SIFT] or bags of words [BoW]; Salient regional features
    • G06V10/462Salient features, e.g. scale invariant feature transforms [SIFT]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory

Abstract

一种池化方法、装置及系统、计算机可读存储介质,池化方法包括:每次纵向移动池化窗口后,逐行获取所述池化窗口所处各行的像素数据,所述池化窗口的尺寸为N×N,N为正整数;将获取的前N‑1行像素数据或其预池化结果写入缓存;在获取到所述池化窗口所处的最后一行像素数据时,将所述最后一行像素数据与所述缓存中的像素数据进行池化操作;输出所述池化操作的池化结果。本发明技术方案可以提高池化效率,提升系统性能。

Description

池化方法、装置及系统、计算机可读存储介质
技术领域
本发明涉及图像处理技术领域,尤其涉及一种池化方法、装置及系统、计算机可读存储介质。
背景技术
在图像处理中,为了减小要处理或存储的数据量,通常会进行池化操作。例如,通过卷积获得了特征(features)之后,下一步希望利用这些特征去做分类,但这样操作面临计算量的挑战。因此,为了描述较大的图像,可以对不同位置的特征进行聚合统计,也即池化(pooling)。
目前常用的神经网络中的池化方案是采用基于软件的方案。池化计算涉及三个部分:输入数据,池化操作以及输出结果。具体如下:中央处理器(Central Processing Unit,CPU)或者卷积硬件加速器把需要做池化的二维图像数据结构保存在主存上;数据结构二维数组记为img[height][width],其中,height为二维数组的高度,width为二维数组的宽度;将图像以2像素×2像素为基本单元进行划分,遍历每一个基本单元,对于每一个基本单元进行池化计算,输出池化结果。
但是,现有技术通过主控CPU准备池化数据,读取池化数据以及写入池化结果需要大量的CPU时间,那么CPU分配给其他任务的时间就会变少,导致其他任务的完成时间会被推后,系统整体性能就会随之下降。此外,在目前主流处理器架构上,如果遇上缓存失效(Cache Miss)或者缓存清除(Cache Flush)操作,CPU在进行池化操作时需要花费大量的等待时间,降低池化效率。
发明内容
本发明解决的技术问题是如何提高池化效率,提升系统性能。
为解决上述技术问题,本发明实施例提供一种池化方法,池化方法包括:
每次纵向移动池化窗口后,逐行获取所述池化窗口所处各行的像素数据,所述池化窗口的尺寸为N×N,N为正整数;将获取的前N-1行像素数据或其预池化结果写入缓存;在获取到所述池化窗口所处的最后一行像素数据时,将所述最后一行像素数据与所述缓存中的像素数据进行池化操作;输出所述池化操作的池化结果。
可选的,所述缓存的空间小于N行像素数据占用的空间。
可选的,所述缓存的空间为1行像素数据占用的空间。
可选的,所述获取所述池化窗口所处各行的像素数据之后还包括:对获取到的像素数据进行行标记,以得到所述像素数据的行号。
可选的,N等于2,写入缓存的为第1行像素数据,所述在获取到最后一行像素数据时,将所述最后一行像素数据与所述缓存中的像素数据进行池化操作包括:在获取到第2行像素数据时,利用2×2的池化窗口对所述第2行像素数据与所述第1行像素数据进行池化操作。
可选的,N大于2,所述将获取的前N-1行像素数据或其预池化结果写入缓存包括:获取到第1行像素数据后,将所述第1行像素数据写入所述缓存;对于第2行至第N-1行像素数据,获取到每行像素数据后,对获取到的像素数据和所述缓存中的像素数据进行预池化操作,并将得到的预池化结果写入所述缓存。
可选的,所述预池化操作采用的预池化窗口的尺寸为1×2。
可选的,将所述最后一行像素数据与所述缓存中的像素数据进行池化操作时,采用的子池化窗口的尺寸为N×2。
可选的,所述像素数据为卷积运算后得到的卷积运算结果。
为解决上述技术问题,本发明实施例还公开了一种池化装置,所述池化装置包括:获取模块,在每次纵向移动池化窗口后,所述获取模块适于逐行获取所述池化窗口所处各行的像素数据,所述池化窗口的尺寸为N×N,N为正整数;缓存,适于存储所述获取模块获取的前N-1行像素数据或其预池化结果;池化操作模块,在所述获取模块获取到所述池化窗口所处的最后一行像素数据时,所述池化操作模块适于将所述最后一行像素数据与所述缓存中的像素数据进行池化操作,并输出所述池化操作的池化结果。
可选的,所述缓存的空间为1行像素数据占用的空间。
可选的,所述获取模块对获取到的像素数据进行行标记,以得到所述像素数据的行号。
可选的,N等于2,写入缓存的为第1行像素数据,所述池化操作模块在获取到第2行像素数据时,利用2×2的池化窗口对所述第2行像素数据与所述第1行像素数据进行池化操作。
可选的,N大于2,所述池化操作模块包括:写入单元,适于获取到第1行像素数据后,将所述第1行像素数据写入所述缓存;预池化操作单元,适于对于第2行至第N-1行像素数据,获取到每行像素数据后,对获取到的像素数据和所述缓存中的像素数据进行预池化操作,并将得到的预池化结果写入所述缓存。
可选的,所述预池化操作采用的预池化窗口的尺寸为1×2。
可选的,所述池化操作模块将所述最后一行像素数据与所述缓存中的像素数据进行池化操作时,采用的子池化窗口的尺寸为N×2。
可选的,所述像素数据为卷积运算后得到的卷积运算结果。
为解决上述技术问题,本发明实施例还公开了一种池化系统,所述池化系统包括:所述池化装置;像素数据输出部件,适于输出所述像素数据;存储器,适于接收并存储所述池化结果。
可选的,所述像素数据输出部件为卷积运算加速器或中央处理器。
本发明实施例还公开了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行所述池化方法的步骤。
与现有技术相比,本发明实施例的技术方案具有以下有益效果:
本发明技术方案每次纵向移动池化窗口后,逐行获取所述池化窗口所处各行的像素数据,所述池化窗口的尺寸为N×N,N为正整数;将获取的前N-1行像素数据或其预池化结果写入缓存;在获取到所述池化窗口所处的最后一行像素数据时,将所述最后一行像素数据与所述缓存中的像素数据进行池化操作;输出所述池化操作的池化结果。本发明技术方案先将池化窗口所处前N-1行像素数据或其预池化结果写入缓存,然后在获取到所述池化窗口所处的最后一行像素数据时,再调用缓存中的数据进行池化操作;由于缓存的读写速度较快,大大降低了池化步骤的时间开销,因此池化效率较高;即使是CPU执行池化操作,也可以减小池化操作占用的CPU时间,提升系统性能;避免了现有技术中将所有待池化的像素数据存入内存,再从内存中读取导致的池化效率低的问题。此外,上一步骤处理完成的待池化的像素数据可以直接参与到本发明技术方案的池化步骤中,实现了池化的实时性和便捷性。
本发明技术方案还公开了一种池化装置,获取模块,在每次纵向移动池化窗口后,所述获取模块适于逐行获取所述池化窗口所处各行的像素数据,所述池化窗口的尺寸为N×N,N为正整数;缓存,适于存储所述获取模块获取的前N-1行像素数据或其预池化结果;池化操作模块,在所述获取模块获取到所述池化窗口所处的最后一行像素数据时,所述池化操作模块适于将所述最后一行像素数据与所述缓存中的像素数据进行池化操作,并输出所述池化操作的池化结果。本发明技术方案的池化装置可以专用地进行池化操作,使得CPU可以无需读取像素数据和执行池化操作,从而节省了CPU的有效时间,以使得CPU可以执行更多其他任务,提升了系统整体性能。
进一步,所述缓存的空间为1行像素数据占用的空间。本发明技术方案中,缓存的空间仅为1行像素数据占用的空间,从而减小了缓存电路的尺寸和面积,有利于池化装置的硬件实现。
附图说明
图1是本发明实施例一种池化方法的流程图;
图2是本发明实施例的池化方法的一种具体应用场景示意图;
图3是本发明实施例的池化方法的另一种具体应用场景示意图;
图4是本发明实施例的池化方法的又一种具体应用场景示意图;
图5是本发明实施例的池化方法的再一种具体应用场景示意图;
图6是本发明实施例一种池化装置的结构示意图;
图7是本发明实施例一种池化系统的结构示意图。
具体实施方式
如背景技术中所述,现有技术通过主控CPU准备池化数据,读取池化数据以及写入池化结果需要大量的CPU时间,那么CPU分配给其他任务的时间就会变少,导致其他任务的完成时间会被推后,系统整体性能就会随之下降。此外,在目前主流处理器架构上,如果遇上缓存失效(Cache Miss)或者缓存清除(Cache Flush)操作,CPU在进行池化操作时需要花费大量的等待时间,降低池化效率。
本发明技术方案先将池化窗口所处前N-1行像素数据或其预池化结果写入缓存,然后在获取到所述池化窗口所处的最后一行像素数据时,再调用缓存中的数据进行池化操作;由于缓存的读写速度较快,大大降低了池化步骤的时间开销,因此池化效率较高;即使是CPU执行池化操作,也可以减小池化操作占用的CPU时间,提升系统性能;避免了现有技术中将所有待池化的像素数据存入内存,再从内存中读取导致的池化效率低的问题。此外,上一步骤处理完成的待池化的像素数据可以直接参与到本发明技术方案的池化步骤中,实现了池化的实时性和便捷性。
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
图1是本发明实施例一种池化方法的流程图。
图1所示的池化方法可以包括以下步骤:
步骤S101:每次纵向移动池化窗口后,逐行获取所述池化窗口所处各行的像素数据,所述池化窗口的尺寸为N×N,N为正整数;
步骤S102:将获取的前N-1行像素数据或其预池化结果写入缓存;
步骤S103:在获取到所述池化窗口所处的最后一行像素数据时,将所述最后一行像素数据与所述缓存中的像素数据进行池化操作;
步骤S104:输出所述池化操作的池化结果。
本实施例中所称池化操作是指:先纵向再横向移动池化窗口,其中,每次纵向移动池化窗口,池化窗口的纵向位置确定后,横向移动池化窗口,每横向移动一次,对池化窗口内的数据执行一次池化运算,直至横向的行内的全部数据都被遍历,然后再一次纵向移动池化窗口,直至所有待处理的数据都被遍历。所述池化运算是指对池化窗口内的像素数据进行适当的数学运算。例如,计算池化窗口内所有像素数据的平均值,或者选取池化窗口内所有像素数据的最大值。
需要说明的是,池化窗口的大小的单位通常是像素数据。
在步骤S101的具体实施中,获取的像素数据为需要池化的数据。池化窗口的纵向位置确定后,可以确定池化窗口所处的各行的像素数据。例如,请参照图2,池化窗口的大小为2×2,待池化的图像大小为12×8;池化窗口的纵向位置位于待池化的图像的0行和1行时,可以先获取0行的像素数据,再获取1行的像素数据。同理,池化窗口的纵向位置位于待池化的图像的2行和3行时,可以先获取2行的像素数据,再获取3行的像素数据,直至获取待池化的图像的全部像素数据。
在步骤S102的具体实施中,可以将获取的前N-1行像素数据写入缓存。该缓存可以是各种适当的存储器,优选为高速访问的存储器,例如静态随机访问存储器(SRAM)。在一个非限制性的例子中,池化窗口的大小为2×2时,将前1行像素数据写入缓存;池化窗口的大小为3×3时,将前2行像素数据写入缓存。此时,缓存的空间为N-1行像素数据占用的空间。
需要说明的是,在实际的应用中,池化窗口的大小通常是固定的几种,例如2×2、3×3、4×4。N具备最大值,因此,为了保证缓存在多种场景下均能使用,缓存的空间可以是max(N)-1行像素数据占用的空间。
本发明实施例也可以将获取的前N-1行像素数据的预池化结果写入缓存。例如,池化窗口的大小为3×3时,可以将前2行像素数据进行预池化操作后的预池化结果写入缓存。在这种情况下,缓存的空间较小,例如缓存的空间可以仅为1行像素数据占用的空间。
所述预池化结果可以是对所述前N-1行像素数据进行池化操作得到的。
在步骤S103的具体实施中,在获取到池化窗口所处的最后一行像素数据时,可以调用缓存中的像素数据,也即前N-1行像素数据或其预池化结果,并与所述最后一行像素数据进行池化操作。具体而言,可以横向地逐步移动池化窗口,每次横向移动后,可以对池化窗口中的像素数据(也即,落入当前池化窗口内的缓存和最后一行像素数据)进行池化运算。
进而在步骤S104的具体实施中,可以将池化结果进行输出。例如,可以将池化结果输出至适当的存储器进行存储,或者也可以将池化结果输出至CPU或者其他部件以进行进一步处理。
具体地,池化操作可以是平均池化(mean pooling)、最大池化(max pooling)或随机池化。平均池化是指计算池化窗口内所有数据的平均值作为该次池化运算的值。最大池化是指选取池化窗口内所有数据的最大值作为该次池化运算的值。随机池化是指对池化窗口内所有数据按照其概率值大小随机选择,数据的概率值与数据的大小相关。
优选地,在步骤S103中,将所述最后一行像素数据与所述缓存中的像素数据进行池化操作时,采用的子池化窗口的尺寸为N×2。例如,池化窗口为2×2时,子池化窗口的尺寸为2×2;池化窗口为3×3时,子池化窗口的尺寸为3×2;池化窗口为4×4时,子池化窗口的尺寸为4×2。
本发明实施例先将池化窗口所处前N-1行像素数据或其预池化结果写入缓存,然后在获取到所述池化窗口所处的最后一行像素数据时,再调用缓存中的数据进行池化操作;由于缓存的读写速度较快,大大降低了池化步骤的时间开销,因此池化效率较高;即使是CPU执行池化操作,也可以减小池化操作占用的CPU时间,提升系统性能;避免了现有技术中将所有待池化的像素数据存入内存,再从内存中读取导致的池化效率低的问题。此外,上一步骤处理完成的待池化的像素数据可以直接参与到本发明技术方案的池化步骤中,实现了池化的实时性和便捷性。
本发明一个优选实施例中,所述缓存的空间小于N行像素数据占用的空间。
相较于现有技术中将所有需要池化的像素数据存入缓存,例如整个待池化图像,或者池化窗口内的N行像素数据;本实施例中,缓存中存储的数据小于N行像素数据。换言之,缓存的存储空间较小,有利于硬件实现。
本发明另一个优选实施例中,所述缓存的空间为1行像素数据占用的空间。
本发明实施例中,缓存的空间仅为1行像素数据占用的空间,从而减小了缓存电路的尺寸和面积,有利于池化装置的硬件实现。
本发明一个具体实施例中,图1所示步骤S101之后还可以包括以下步骤:对获取到的像素数据进行行标记,以得到所述像素数据的行号。
具体而言,在逐行获取到所述池化窗口每行的像素数据后,可以对该行的像素数据执行行标记。继续参照图2,在获取到0行像素数据后,可以标记行号为0;在获取到1行像素数据后,可以标记行号为1。或者,在获取到0行像素数据后,可以标记行号为1;在获取到1行像素数据后,可以标记行号为2,本发明实施例对此不做限制。
具体地,对获取到的所有像素数据可以采用连续的行号进行标记,例如0行、1行、2行等;也可以按照池化窗口的大小进行标记,例如池化窗口为2×2,则行号可以为0行、1行、0行、1行等。
本发明另一个具体实施例中,N等于2,写入缓存的为所述池化窗口内的第1行像素数据。也就是说,池化窗口的大小为2×2。
图1所示步骤S103可以包括以下步骤:在获取到第2行像素数据时,利用2×2的池化窗口对所述第2行像素数据与所述第1行像素数据进行池化操作。
请参照图3,将池化窗口内的第1行数据写入缓存。以池化窗口的步幅(stride)为2像素数据为例进行说明。
池化窗口的纵向位置处于0行和1行像素数据时,池化窗口内的第1行像素数据为0行像素数据,池化窗口内的第2行像素数据为1行像素数据。将获取到的0行像素数据写入缓存,在获取到1行像素数据时,从缓存中调取0行像素,并将0行像素数据与1行像素数据执行池化操作,并输出池化结果(图3中阴影部分所示)。
以此类推,池化窗口的纵向位置处于2行和3行像素数据时,池化窗口内的第1行像素数据为2行像素数据,池化窗口内的第2行像素数据为3行像素数据。将获取到的2行像素数据写入缓存,在获取到3行像素数据时,从缓存中调取2行像素数据,并将2行像素数据与3行像素数据执行池化操作,并输出池化结果。
本发明又一个具体实施例中,N大于2。
图1所示步骤S103可以包括以下步骤:
获取到第1行像素数据后,将所述第1行像素数据写入所述缓存;
对于第2行至第N-1行像素数据,获取到每行像素数据后,对获取到的像素数据和所述缓存中的像素数据进行预池化操作,并将得到的预池化结果写入所述缓存。
请参照图4,以池化窗口大小为3×3,步幅(stride)为3像素数据为例进行说明。
池化窗口的纵向位置处于0行、1行和2行像素数据时,池化窗口内的第1行像素数据为0行像素数据,池化窗口内的第2行像素数据为1行像素数据,池化窗口内的第3行像素数据为2行像素数据。将获取到的0行像素数据写入缓存;在获取到1行像素数据时,从缓存中调取0行像素数据,并将0行像素数据与1行像素数据执行预池化操作,并将预池化结果(图4中斜条阴影部分所示)写入缓存。此时,缓存中仅存储有预池化结果,预池化结果为一个整行像素数据,也即12×1大小的像素数据。在获取到2行像素数据时,从缓存中调取预池化结果,并将预池化结果中的像素数据与2行像素数据执行池化操作,并输出池化结果(图4中横条阴影部分所示)。
以此类推,池化窗口的纵向位置处于3行、4行和5行像素数据时,池化窗口内的第1行像素数据为3行像素数据,池化窗口内的第2行像素数据为4行像素数据,池化窗口内的第3行像素数据为5行像素数据。将获取到的3行像素数据写入缓存;在获取到4行像素数据时,从缓存中调取3行像素数据,并将3行像素数据与4行像素数据执行预池化操作,并将预池化结果写入缓存。此时,缓存中仅存储有预池化结果,预池化结果为一个整行像素数据,也即12×1大小的像素数据。在获取到5行像素数据时,从缓存中调取预池化结果,并将预池化结果中的像素数据与5行像素数据执行池化操作,并输出池化结果。
在本发明实施例的另一种实施方式中,继续参照图4,池化窗口大小为3×3,步幅(stride)为2像素数据。
本实施例中,由于池化窗口的N大于步幅,因此池化单元是3×3=9个像素数据,每相邻两个池化单元有三个像素数据是重叠的。
具体地,池化窗口的纵向位置处于0行、1行和2行像素数据时,具体实施方式请参照前述实施例,此处不再赘述。
纵向移动池化窗口后,池化窗口的纵向位置处于2行、3行和4行像素数据时,池化窗口内的第1行像素数据为2行像素数据,池化窗口内的第2行像素数据为3行像素数据,池化窗口内的第3行像素数据为4行像素数据。将获取到的2行像素数据写入缓存;在获取到3行像素数据时,从缓存中调取2行像数据素,并将2行像素数据与3行像素数据执行预池化操作,并将预池化结果写入缓存。在获取到4行像素数据时,从缓存中调取预池化结果,并将预池化结果中的像素数据与4行像素数据执行池化操作,并输出池化结果。
后续步骤以此类推。
请参照图5,以池化窗口大小为3×3,步幅(stride)为1像素数据为例进行说明。在这种情况下,在纵向位置,相邻池化窗口存在2行像素数据的重叠;缓存占用的空间为2行像素数据的空间,也即行缓存0和行缓存1。
本实施例中,每行像素数据仅获取一次。
池化窗口的纵向位置处于0行、1行和2行像素数据时,池化窗口内的第1行像素数据为0行像素数据,池化窗口内的第2行像素数据为1行像素数据,池化窗口内的第3行像素数据为2行像素数据。将获取到的0行像素数据写入行缓存0;在获取到1行像素数据时,从行缓存0中调取0行像素数据,并将0行像素数据与1行像素数据执行预池化操作,并将预池化结果写入行缓存0。同时将1行像素数据写入行缓存1。在获取到2行像素数据时,从行缓存0中调取预池化结果,并将预池化结果中的像素数据与2行像素数据执行池化操作,并输出池化结果。
将2行像素数据写入行缓存0的同时,将行缓存1中的像素数据和2行像素数据执行预池化操作,并将预池化结果写入行缓存1。可以理解的是,此处的池化运算、写入操作和预池化操作可以同时执行;硬件设备也能够支持上述操作的同时进行。
池化窗口的纵向位置处于1行、2行和3行像素数据时,池化窗口内的第1行像素数据为1行像素数据,池化窗口内的第2行像素数据为2行像素数据,池化窗口内的第3行像素数据为3行像素数据。在获取到的3行像素数据时,从行缓存1中调取预池化结果,并将预池化结果中的像素数据与3行像素数据执行池化操作,并输出池化结果。
将3行像素数据写入行缓存1的同时,将3行像素数据和行缓存0中的像素数据执行预池化操作,并将预池化结果写入行缓存0。
以此类推,池化窗口的纵向位置处于2行、3行和4行像素数据时,对4行像素数据的处理过程与对2行像素数据的处理过程相同;对5行像素数据的处理过程与对3行像素数据的处理过程相同。
需要说明的是,当池化窗口大小为N×N,步幅为K,每行像素数据仅获取一次时,缓存占用的空间为N-K行像素数据的空间。
本发明另一种实施方式中,由于在纵向位置,相邻池化窗口存在2行像素数据的重叠,因此存在重叠的2行像素数据可以重复获取。例如,池化窗口的纵向位置处于0行、1行和2行像素数据时,依次获取0行、1行和2行像素数据;池化窗口的纵向位置处于1行、2行和3行像素数据时,依次获取1行、2行和3行像素数据;其中,1行和2行像素数据是重复获取的。
进一步地,在图3至图5所示实施例中,预池化操作采用的预池化窗口的尺寸为1×2,也即1列像素数据×2行像素数据。本实施例中的池化窗口的尺寸可以保证缓存的空间为1行像素数据占用的空间。
本发明另一个具体实施例中,所述像素数据为卷积运算后得到的卷积运算结果。当然,该像素数据也可以是其他适当的像素数据,例如未经过卷积运算的数据。
本发明实施例可以针对卷积运算结果进行池化,可以减小卷积运算结果中的特征数量,以用于分类、识别等操作。
请参照图6,池化装置50还可以包括获取模块501、缓存502和池化操作模块503。
其中,获取模块501在每次纵向移动池化窗口后,所述获取模块501适于逐行获取所述池化窗口所处各行的像素数据,所述池化窗口的尺寸为N×N,N为正整数;
缓存502适于存储所述获取模块501获取的前N-1行像素数据或其预池化结果;
池化操作模块503在所述获取模块501获取到所述池化窗口所处的最后一行像素数据时,所述池化操作模块503适于将所述最后一行像素数据与所述缓存502中的像素数据进行池化操作,并输出所述池化操作的池化结果。
本实施例中,池化装置50可以进行池化操作,避免了CPU读取像素数据和执行池化操作,从而节省了CPU的有效时间,以使得CPU可以执行更多其他任务,提升了系统整体性能。
缓存502可以是各种适当的存储器,优选为高速存储器,例如SRAM等。本发明一个优选实施例中,所述缓存502的空间为1行像素数据占用的空间。
本发明实施例中,缓存的空间仅为1行像素数据占用的空间,从而减小了缓存电路的尺寸和面积,有利于池化装置50的硬件实现。
本发明一个具体实施例中,获取模块501可以对获取到的像素数据进行行标记,以得到所述像素数据的行号。
本发明另一个具体实施例中,N等于2,写入缓存502的为第1行像素数据,所述池化操作模块503在获取到第2行像素数据时,利用2×2的池化窗口对所述第2行像素数据与所述第1行像素数据进行池化操作。
本发明又一个具体实施例中,N大于2,池化操作模块503可以包括写入单元(图未示),适于获取到第1行像素数据后,将所述第1行像素数据写入所述缓存502;预池化操作单元(图未示),适于对于第2行至第N-1行像素数据,获取到每行像素数据后,对获取到的像素数据和所述缓存502中的像素数据进行预池化操作,并将得到的预池化结果写入所述缓存502。
进一步地,预池化操作采用的预池化窗口的尺寸为1×2。
本发明另一个优选实施例中,所述池化操作模块503将所述最后一行像素数据与所述缓存502中的像素数据进行池化操作时,采用的子池化窗口的尺寸为N×2。
所述池化装置50可以是专用的硬件装置,其可以基于各种可编程逻辑电路实现,例如FPGA;也可以采用专用集成电路实现,例如ASIC。其中,缓存502可以是集成于硬件装置内的存储器,例如集成在ASIC或者FPGA内的存储器。
关于所述池化装置50的工作原理、工作方式的更多内容,可以参照图1至图4中的相关描述,这里不再赘述。
请参照图7,池化系统60可以包括像素数据输出部件601、图5所示的池化装置50;以及存储器602。
其中,像素数据输出部件601适于输出所述像素数据;
存储器602适于接收并存储所述池化结果。
本实施例中,池化系统60可以执行完整的池化操作。池化系统60避免了CPU从内存中读取像素数据以及执行池化操作,从而节省了CPU的有效时间,以使得CPU可以执行更多其他任务,提升了系统整体性能。
可以理解的是,池化系统60可以内置于任意可实施的终端设备中,例如计算机、平板电脑、智能手机等。
进一步而言,所述像素数据输出部件601为卷积运算加速器或中央处理器。
所述卷积运算加速器可以对图像数据执行卷积操作,其输出的卷积运算结果可以输出至池化装置50,以用于进行池化操作。
池化装置50还可以从中央处理器中获取所述像素数据。更具体地,中央处理器中的像素数据可以是从卷积运算加速器获取的,也可以是从其他任意可实施的设备中获取的,本发明实施例对此不做限制。
在一个典型的池化系统60中,像素输出部件601可以是CPU。由于池化装置50采用内部集成的缓存对像素数据进行存储,该缓存独立于与CPU适配的内存,使得CPU无需再频繁地访问内存,而且由于缓存的访问速度通常可以高于内存,使得池化操作的执行更为高速、高效。
此外,本发明实施例还公开了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时可以执行图1中所示的池化方法的步骤。所述存储介质可以包括ROM、RAM、磁盘或光盘等。所述计算机可读存储介质还可以包括非挥发性存储器(non-volatile)或者非瞬态(non-transitory)存储器等。该计算机可读存储介质可以由计算机或者等同于计算机的装置使用,以执行其上存储的计算机指令,从而运行本发明实施例的池化方法。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

Claims (20)

1.一种池化方法,其特征在于,包括:
每次纵向移动池化窗口后,逐行获取所述池化窗口所处各行的像素数据,所述池化窗口的尺寸为N×N,N为大于等于2的正整数;
将获取的前N-1行像素数据或其预池化结果写入缓存;
在获取到所述池化窗口所处的最后一行像素数据时,将所述最后一行像素数据与所述缓存中的像素数据进行池化操作;
输出所述池化操作的池化结果。
2.根据权利要求1所述的池化方法,其特征在于,所述缓存的空间小于N行像素数据占用的空间。
3.根据权利要求1所述的池化方法,其特征在于,所述缓存的空间为1行像素数据占用的空间。
4.根据权利要求1所述的池化方法,其特征在于,所述获取所述池化窗口所处各行的像素数据之后还包括:
对获取到的像素数据进行行标记,以得到所述像素数据的行号。
5.根据权利要求1所述的池化方法,其特征在于,N等于2,写入缓存的为第1行像素数据,所述在获取到最后一行像素数据时,将所述最后一行像素数据与所述缓存中的像素数据进行池化操作包括:
在获取到第2行像素数据时,利用2×2的池化窗口对所述第2行像素数据与所述第1行像素数据进行池化操作。
6.根据权利要求1所述的池化方法,其特征在于,N大于2,所述将获取的前N-1行像素数据或其预池化结果写入缓存包括:
获取到第1行像素数据后,将所述第1行像素数据写入所述缓存;
对于第2行至第N-1行像素数据,获取到每行像素数据后,对获取到的像素数据和所述缓存中的像素数据进行预池化操作,并将得到的预池化结果写入所述缓存。
7.根据权利要求6所述的池化方法,其特征在于,所述预池化操作采用的预池化窗口的尺寸为1×2。
8.根据权利要求1所述的池化方法,其特征在于,将所述最后一行像素数据与所述缓存中的像素数据进行池化操作时,采用的子池化窗口的尺寸为N×2。
9.根据权利要求1至8任一项所述的池化方法,其特征在于,所述像素数据为卷积运算后得到的卷积运算结果。
10.一种池化装置,其特征在于,包括:
获取模块,在每次纵向移动池化窗口后,所述获取模块适于逐行获取所述池化窗口所处各行的像素数据,所述池化窗口的尺寸为N×N,N为大于等于2的正整数;
缓存,适于存储所述获取模块获取的前N-1行像素数据或其预池化结果;池化操作模块,在所述获取模块获取到所述池化窗口所处的最后一行像素数据时,所述池化操作模块适于将所述最后一行像素数据与所述缓存中的像素数据进行池化操作,并输出所述池化操作的池化结果。
11.根据权利要求10所述的池化装置,其特征在于,所述缓存的空间为1行像素数据占用的空间。
12.根据权利要求10所述的池化装置,其特征在于,所述获取模块对获取到的像素数据进行行标记,以得到所述像素数据的行号。
13.根据权利要求10所述的池化装置,其特征在于,N等于2,写入缓存的为第1行像素数据,所述池化操作模块在获取到第2行像素数据时,利用2×2的池化窗口对所述第2行像素数据与所述第1行像素数据进行池化操作。
14.根据权利要求10所述的池化装置,其特征在于,N大于2,所述池化操作模块包括:
写入单元,适于获取到第1行像素数据后,将所述第1行像素数据写入所述缓存;
预池化操作单元,适于对于第2行至第N-1行像素数据,获取到每行像素数据后,对获取到的像素数据和所述缓存中的像素数据进行预池化操作,并将得到的预池化结果写入所述缓存。
15.根据权利要求14所述的池化装置,其特征在于,所述预池化操作采用的预池化窗口的尺寸为1×2。
16.根据权利要求10所述的池化装置,其特征在于,所述池化操作模块将所述最后一行像素数据与所述缓存中的像素数据进行池化操作时,采用的子池化窗口的尺寸为N×2。
17.根据权利要求10至15任一项所述的池化装置,其特征在于,所述像素数据为卷积运算后得到的卷积运算结果。
18.一种池化系统,其特征在于,包括:
如权利要求10至17任一项所述的池化装置;
像素数据输出部件,适于输出所述像素数据;
存储器,适于接收并存储所述池化结果。
19.根据权利要求18所述的池化系统,其特征在于,所述像素数据输出部件为卷积运算加速器或中央处理器。
20.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令运行时执行权利要求1至9中任一项所述池化方法的步骤。
CN201810272844.XA 2018-03-29 2018-03-29 池化方法、装置及系统、计算机可读存储介质 Active CN110322389B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201810272844.XA CN110322389B (zh) 2018-03-29 2018-03-29 池化方法、装置及系统、计算机可读存储介质
US16/362,338 US10657620B2 (en) 2018-03-29 2019-03-22 Pooling method, device, and system, computer-readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810272844.XA CN110322389B (zh) 2018-03-29 2018-03-29 池化方法、装置及系统、计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN110322389A CN110322389A (zh) 2019-10-11
CN110322389B true CN110322389B (zh) 2023-03-21

Family

ID=68057079

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810272844.XA Active CN110322389B (zh) 2018-03-29 2018-03-29 池化方法、装置及系统、计算机可读存储介质

Country Status (2)

Country Link
US (1) US10657620B2 (zh)
CN (1) CN110322389B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3089664A1 (fr) * 2018-12-05 2020-06-12 Stmicroelectronics (Rousset) Sas Procédé et dispositif pour réduire la charge de calcul d’un microprocesseur destiné à traiter des données par un réseau de neurones à convolution
WO2021077427A1 (zh) * 2019-10-25 2021-04-29 深圳市大疆创新科技有限公司 图像处理方法、设备和可移动平台

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107529650A (zh) * 2017-08-16 2018-01-02 广州视源电子科技股份有限公司 网络模型的构建和闭环检测方法、相应装置及计算机设备
CN107547718A (zh) * 2017-08-22 2018-01-05 电子科技大学 基于深度学习的电信诈骗识别与防御系统

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5432870A (en) * 1993-06-30 1995-07-11 Ricoh Corporation Method and apparatus for compressing and decompressing images of documents
US8248402B2 (en) * 2006-11-28 2012-08-21 International Business Machines Corporation Adaptive ray data reorder for optimized ray temporal locality
TWI624543B (zh) * 2011-09-25 2018-05-21 賽瑞諾斯有限公司 用於多重分析的系統和方法
WO2014127379A1 (en) * 2013-02-18 2014-08-21 Theranos, Inc. Systems and methods for multi-analysis
US10310998B2 (en) * 2015-06-30 2019-06-04 Microsoft Technology Licensing, Llc Direct memory access with filtering
CN106023062B (zh) * 2016-05-20 2018-06-26 深圳市大疆创新科技有限公司 基于窗口运算的数据处理方法、系统以及装置
CN106250939B (zh) * 2016-07-30 2020-07-24 复旦大学 基于fpga+arm多层卷积神经网络的手写体字符识别方法
CN106875012B (zh) * 2017-02-09 2019-09-20 武汉魅瞳科技有限公司 一种基于fpga的深度卷积神经网络的流水化加速系统
CN106779060B (zh) * 2017-02-09 2019-03-08 武汉魅瞳科技有限公司 一种适于硬件设计实现的深度卷积神经网络的计算方法
CN107368886B (zh) * 2017-02-23 2020-10-02 奥瞳系统科技有限公司 基于重复使用小规模卷积神经网络模块的神经网络系统
CN106973188A (zh) * 2017-04-11 2017-07-21 北京图森未来科技有限公司 一种图像传输装置和方法
CN107749044A (zh) * 2017-10-19 2018-03-02 珠海格力电器股份有限公司 图像信息的池化方法及装置
US11256977B2 (en) * 2017-12-29 2022-02-22 Facebook, Inc. Lowering hardware for neural networks
US20190205738A1 (en) * 2018-01-04 2019-07-04 Tesla, Inc. Systems and methods for hardware-based pooling

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107529650A (zh) * 2017-08-16 2018-01-02 广州视源电子科技股份有限公司 网络模型的构建和闭环检测方法、相应装置及计算机设备
CN107547718A (zh) * 2017-08-22 2018-01-05 电子科技大学 基于深度学习的电信诈骗识别与防御系统

Also Published As

Publication number Publication date
US10657620B2 (en) 2020-05-19
US20190304057A1 (en) 2019-10-03
CN110322389A (zh) 2019-10-11

Similar Documents

Publication Publication Date Title
US10936937B2 (en) Convolution operation device and convolution operation method
CN107742150B (zh) 一种卷积神经网络的数据处理方法和装置
US20210158068A1 (en) Operation Circuit of Convolutional Neural Network
CN108573305B (zh) 一种数据处理方法、设备及装置
US20180137414A1 (en) Convolution operation device and convolution operation method
US20180232629A1 (en) Pooling operation device and method for convolutional neural network
JP5635202B2 (ja) 高速繰り返し積分画像
WO2022206556A1 (zh) 图像数据的矩阵运算方法、装置、设备及存储介质
CN110322389B (zh) 池化方法、装置及系统、计算机可读存储介质
EP3671424A1 (en) Method and apparatus for accessing tensor data
WO2011072259A1 (en) System and method for segmentation of three dimensional image data
KR20210070369A (ko) 3d 이미지 처리 중의 데이터 읽기/쓰기 방법 및 시스템, 저장 매체 및 단말
CN110322388B (zh) 池化方法及装置、池化系统、计算机可读存储介质
CN107993202B (zh) 使用fpga实现中值滤波的方法
CN108073548B (zh) 卷积运算装置及卷积运算方法
CN105488753A (zh) 一种对图像进行二维傅立叶变换或反变换的方法及装置
CN108876701B (zh) 一种基于游程的单次扫描连通域标记方法及其硬件结构
CN109859135B (zh) 一种应用于关联成像的图像增强处理方法
US9715715B2 (en) Efficient cache preloading
CN110532219B (zh) 一种基于fpga的去乒乓数据存储方法
CN112837256B (zh) 一种用于Harris角点检测的电路系统及检测方法
US20170270632A1 (en) Caching Method Of Graphic Processing Unit
CN115035128A (zh) 基于fpga的图像重叠滑窗分割方法及系统
CN110490312B (zh) 一种池化计算方法和电路
CN108920097B (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