一种卷积神经网络处理方法及装置
文献发布时间:2023-06-29 06:30:04
技术领域
本发明涉及卷积神经网络领域,尤其涉及一种卷积神经网络处理方法及装置。
背景技术
卷积运算是由乘和加两种基本运算组成的,基本上所有卷积计算方法都能拆解成这两种运算的组合,所以任何形式的卷积均可拆成乘和加的小单元来并行实现,在保证完备性的前提下提高并行度;目前的卷积形式逐渐多样化,和最基础的的卷积形式有很大的差别,而现有的卷积神经网络计算方法多只针对一种卷积形式,也就意味着只有卷积核形式确定时,计算才有比较高的效率,对于不规则的卷积形式在进行卷积运算的效率低下。无法充分利用卷积运算可以并行实现的特点。
比如脉动阵列是近年来常见的卷积神经网络加速阵列,其比较擅长实现步长为1的卷积,当步长改变时其原始流程会带来大量的冗余计算,而且其架构适合标准的稠密卷积,不适合处理稀疏卷积,如果卷积的形式不是稠密的,那么其在脉动阵列中数据无法连续传递,就无法高效地实现其他的卷积形式。
而GPU作为当前最常见的深度学习加速设备,它是利用多计算单元并行计算来加速深度学习计算速度的,对于计算的支持十分全面,但是也十分底层。这样导致GPU对于卷积的计算需要很多软件库的支持,比如把卷积通过im2col转变成矩阵乘法加速计算,实际效率却不如直接卷积,又没有利用卷积运算的周期性特点,虽然对于各种卷积形式都能支持,但是效果不佳。
发明内容
本发明提供一种卷积神经网络处理方法及装置,用于解决无法快速进行任意卷积形式的卷积计算的问题。
本发明实施例提供一种卷积神经网络处理方法,包括:
在对输入特征图的第一特征层进行第一轮计算过程中,基于与所述第一轮计算过程对应的查找表,确定所述第一轮计算过程的每次计算结果在输出特征图中的存储位置;
基于确定出的存储位置,将每次计算结果进行对应存储。
所述查找表包括:第一输入参数、第二输入参数、与第一输入参数和第二输入参数这两者建立对应关系的输出参数;
其中,所述第一输入参数包括所述输入特征图的第一特征层的初始计算坐标;所述第二输入参数包括卷积核序号、卷积核参数;以及,通过如下方式确定所述第一特征层进行第一轮计算过程中,首次计算结果的存储位置:
基于所述第一输入参数和所述第二输入参数确定所述输出参数;
所述输出参数用于指示首次计算结果的存储位置。
所述查找表还包括:步长;以及,通过如下方式确定第一特征层进行第一轮计算过程中除首次计算结果外的其它计算结果的存储位置:
基于所述首次计算结果的存储位置和所述步长,确定其他计算结果的存储位置。
所述卷积核序号指示卷积核参数信息,所述卷积核参数包括:初始位置中心、卷积移动周期、卷积核中心、卷积核偏移量;
所述初始位置中心用于指示卷积核中心在输入特征图上的初始位置;
所述卷积移动周期用于指示卷积核在输入特征图上分别在x,y方向上移动;
所述卷积核偏移量包括相对于所述初始位置中心的偏移量。
所述输入特征图包括至少两个特征层,不同特征层之间分别进行计算,以及,所述方法还包括:
筛选出与第一层的卷积核相同的关联特征层;
基于第一特征层在第一轮计算过程中每次计算结果的存储位置,确定关联特征层在第一轮计算过程中的每次计算结果的存储位置。
根据第一特征层在第一轮计算过程中的第一计算结果,确定每个关联特征层在第一轮计算过程中与第一计算结果对应的关联计算结果,其中,第一计算结果对应的第一特征层的第一坐标和关联计算结果对应的关联特征层的关联坐标相同;
将所述第一计算结果和关联计算结果进行累加,获得所述输入特征图第一坐标处对应的输出结果,并利用与所述第一计算结果对应的存储位置,存储所述输出结果。
响应于确定各特征层均进行了第一轮计算,获得与所述输入特征图对应的输出特征图。
所述查找表还包括:循环周期;
响应于确定所述输入特征图中的各特征层第一轮计算结束,基于循环周期,确定第一轮计算结束后是否更新查找表的第二输入参数。
在获得与所述输入特征图对应的输出特征图后,所述方法还包括:
响应于对输出特征图的各特征层进行第二轮计算,基于获得的输出特征图,更新所述查找表;
利用更新完成的查找表,确定所述输出特征图在第二轮计算过程的每次计算结果的存储位置。
本发明实施例提供一种卷积神经网络处理装置,包括:
确定单元,用于在获得输出特征图的第一轮计算过程中,基于查找表,确定每次计算结果在所述输出特征图中的存储位置;
获得单元,用于根据确定的存储位置结果,将每次计算结果在确定的存储位置对应存储,获得所述输出特征图。
有益效果:
本发明提供的卷积神经网络处理方法支持任意卷积形式的卷积神经网络可以灵活地加速任意卷积形式的计算。
本发明提供的处理方法及装置采用查找表的形式,充分利用了卷积周期性的特点,避免了任意卷积数据不连续造成的问题,且无需实际的函数形式,就可以支持多种形式的卷积,更方便地支持卷积的设计,在不同的周期中,基于步长从查找表确定的第一个存储地址连续地访问其他存储地址,既能便捷的寻址,实现对计算结果的存储连续处理,提高并行度,又能节约查找表大小,进一步提升卷积计算的效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中卷积神经网络处理方法的总流程图;
图2是本发明一实施例中输入特征图进行点乘和累加计算的示意图;
图3是本发明一实施例中卷积神经网络处理装置的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明提供的一实施例中,提供一种卷积神经网络处理方法,包括:
步骤101,在对输入特征图的第一特征层进行第一轮计算过程中,基于与所述第一轮计算过程对应的查找表,确定所述第一轮计算过程的每次计算结果在输出特征图中的存储位置。
在一些可选的实施方式中,特征图包括多个特征层,第一特征层则可以理解为特征图的多个特征层的任一特征层。第一轮计算可以理解为在卷积运算获得最终结果前的任一轮循环中,包括每个特征层的特征数据与卷积核进行的点乘计算、每个特征层之间乘积结果的累加计算。
在一些可选的实施方式中,查找表可以用于指示输入的特征图的每个计算结果的存储位置,即在对特征图中的任一特征层进行卷积计算过程中,可以利用查找表确定任一轮计算过程的每次计算结果在输出特征图中的存储位置。意味着可以确定该特征层的数据进行卷积计算之后的计算结果的存储位置,
步骤102,基于确定出的存储位置,将每次计算结果进行对应存储。
可以看出,在本公开中,在对输入特征图的第一特征层进行计算的过程中,可以直接利用查找表确定第一特征层在第一轮计算过程中,所获得的所有计算结果的存储位置。而相关技术中,通常是每次获得一个计算结果之后,都需要这去确定该计算结果的存储位置,而每一轮计算过程中,通常会得到大量的计算结果,每个计算结果都去确定存储位置,会造成计算资源的大量消耗。可见,本申请直接利用查找表确定第一特征层在一轮计算过程中的所有计算结果的存储位置,从而避免了每次获得计算结果之后都去确定存储位置,也就加快了在对输入特征图进行卷积计算过程中的寻址速度,也就相应地提升了对输入特征图进行卷积计算的效率,节约计算资源。
在一些可选的实施方式中,查找表可以包括:第一输入参数、第二输入参数、与第一输入参数和第二输入参数这两者的建立对应关系的输出参数、步长、循环周期;可利用查找表,通过第一特征层的初始计算坐标和卷积核参数确认第一特征层的所有计算结果的存储位置;基于所述第一输入参数和所述第二输入参数确定所述输出参数;所述输出参数用于指示首次计算结果的存储位置。
在一些可选的实施方式中,常规卷积的计算结果的存储位置就是输入特征图上的输入坐标基于卷积核位置做一定偏移,其偏移都是相邻位置,但可变形卷积和常规卷积的差别就在于偏移不仅仅在相邻位置,还可能存在更大的偏移量,由于存在这个偏移量,导致计算结果的存储位置变得不规则,每次寻址均需要根据公式进行计算。而每次都使用公式计算会浪费大量的计算资源,所以本公开,将公式中涉及的参数与查找表包括的参数对应,利用查找表寻址。
在一些可选的实施方式中,在查找表中,第一输入参数包括输入特征图的第一特征层的初始计算坐标;第二输入参数包括卷积核序号、卷积核参数;第二输入参数以序号指示卷积核参数;卷积核参数包括:初始位置中心、卷积移动周期、卷积核中心、卷积核偏移量;初始位置中心用于指示卷积核中心在输入特征图上的初始位置;卷积移动周期用于指示卷积核在输入特征图上分别在x,y方向上移动;卷积核偏移量包括相对于所述初始位置中心的偏移量;所以在查找表中,卷积核不需要详细的位置信息,只需要卷积核序号就可以调取卷积核参数,根据第一输入参数和第二输入参数得出计算结果的存储位置。
在一些可选的实施方式中,基于步长,通过如下方式确定第一特征层进行第一轮计算过程中除首次计算结果外的其它计算结果的存储位置:
基于所述首次计算结果的存储位置和所述步长,确定其他计算结果的存储位置。
在一些可选的实施方式中,在对特征图中的任一特征层进行任一轮卷积计算过程中,均可以利用查找表确定该特征层的数据进行卷积计算之后的卷积结果的存储位置,可以利用所输入的初始特征图计算坐标、卷积核序号,步长,以及与初始计算坐标和卷积核参数建立对应关系的输出参数,根据首次计算结果确定某一特征层的其他计算结果的存储位置,而且基于此种处理方法,查找表会很小,更能加快寻址速度,同时占用存储空间也非常小。
此外,在一些可选的实施方式中,如图2所示,所述输入特征图包括至少两个特征层,不同特征层之间分别进行计算,可以理解为属于同一个特征层的数据在乘法器阵列的同一行乘法器中进行计算,筛选出与第一特征层的卷积核相同的关联特征层;所述输入特征图不同层之间并行计算,可以理解为乘法器阵列中的不同行进行不同层的计算,计算是并行的,基于第一特征层在第一轮计算过程中每次计算结果的存储位置,确定关联特征层在第一轮计算过程中的每次计算结果的存储位置。
在一些可选的实施方式中,根据第一特征层在第一轮计算过程中的第一计算结果,确定每个关联特征层在第一轮计算过程中与第一计算结果对应的关联计算结果,其中,第一计算结果对应的第一特征层的第一坐标和关联计算结果对应的关联特征层的关联坐标相同;将所述第一计算结果和关联计算结果进行累加,获得所述输入特征图第一坐标处对应的输出结果,并利用与所述第一计算结果对应的存储位置,存储所述输出结果。这里的第一计算结果可以理解为任一特征层在任一轮循环中此特征层的特征数据与卷积核进行点乘计算后的所有乘积结果。如图2所示,不同层之间的计算结果,即第一计算结果与关联计算结果可以累加。
响应于确定各特征层均进行了第一轮计算,获得与所述输入特征图对应的输出特征图。
任一轮计算过程的每次计算结果,包括任一特征层的每次计算结果,以及输入特征图的不同特征层的相同坐标的数据与卷积核每次分别进行点乘又进行累加后的计算结果。也就是,不同特征层相同坐标的点乘结果需要相加,且相加后的结果与其相关联的任一特征层的相同坐标的计算结果共用同一个存储位置,所以利用查找表可以通过确定任一特征层进行卷积计算之后的卷积结果的存储位置,进而确定其关联特征层的计算结果的存储位置。
在一些可选实施例中,查找表包括循环周期;当第一轮计算结束后,基于循环周期来确定第一轮计算结束后是否更新卷积核形式。获得一轮计算的输出特征图后,基于此输出特征图进行下一轮计算,此时基于获得的输出特征图更新查找表,更新初始计算坐标的位置,卷积核序号的更新基于循环周期是否完成,步长的更新基于卷积形式是否改变;一种卷积形式的循环完成后,可改变卷积形式和循环周期。
利用更新完成的查找表,确定所述输出特征图在第二轮计算过程的每次计算结果的存储位置。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种卷积神经网络处理装置,如图3所示,该处理装置与上述实施例中处理方法一一对应。
确定单元,用于在获得输出特征图的第一轮计算过程中,基于查找表,确定每次计算结果在所述输出特征图中的存储位置;将第一输入参数和第二输入参数输入查找表,得到输出参数,用于指示计算结果的存储位置,再将存储位置的信息输入获得单元;
获得单元,用于根据确定的存储位置结果,将每次计算结果在确定的存储位置对应存储,获得所述输出特征图。
关于处理装置的具体限定可以参见上文中对于处理方法的限定,在此不再赘述。上述处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
- 一种卷积神经网络FPGA加速中图像前处理方法及装置
- 基于卷积神经网络的图像处理方法、装置及可读存储介质
- 应用于卷积神经网络的信息处理方法和装置
- 一种数据处理方法、装置和用于数据处理的装置
- 一种增强内容显示方法、处理方法、显示装置及处理装置
- 卷积神经网络、基于卷积神经网络的数据处理方法和装置
- 卷积神经网络处理方法、卷积神经网络装置