CN111079904A - 深度可分离卷积的加速方法、存储介质及应用 - Google Patents

深度可分离卷积的加速方法、存储介质及应用 Download PDF

Info

Publication number
CN111079904A
CN111079904A CN201911336362.7A CN201911336362A CN111079904A CN 111079904 A CN111079904 A CN 111079904A CN 201911336362 A CN201911336362 A CN 201911336362A CN 111079904 A CN111079904 A CN 111079904A
Authority
CN
China
Prior art keywords
convolution
matrix
separable convolution
depth
data
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.)
Granted
Application number
CN201911336362.7A
Other languages
English (en)
Other versions
CN111079904B (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.)
Fujian Star Net Communication Co Ltd
Original Assignee
Fujian Star Net Communication 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 Fujian Star Net Communication Co Ltd filed Critical Fujian Star Net Communication Co Ltd
Priority to CN201911336362.7A priority Critical patent/CN111079904B/zh
Publication of CN111079904A publication Critical patent/CN111079904A/zh
Application granted granted Critical
Publication of CN111079904B publication Critical patent/CN111079904B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种深度可分离卷积的加速方法及计算机可读存储介质,包括步骤:计算深度可分离卷积的输入/输出数据的排序,使所述输入/输出数据在内存中按卷积时的访问顺序连续存储;计算矩阵卷积所需的寄存器数量nr,nr=k×k+k+rk,其中,k为深度卷积系数大小,rk为k按vn向上取整的数量;判断矩阵卷积所需的寄存器数量nr是否小于等于SIMD寄存器组所能存储的vn数量tn,若是,则使用SIMD寄存器组直接进行深度可分离卷积,若否,则将系数矩阵分成mk份,每次处理nk行,使mk×nk小于等于k,以及使tr取小于tn的最大值,其中,所述tr=k×nk+nk+rk。本发明可降低加载存储指令的内存访问停顿,以及最大限度使用SIMD寄存器进行卷积,从而提高深度可分离卷积的计算效率。

Description

深度可分离卷积的加速方法、存储介质及应用
技术领域
本发明涉及神经网络卷积技术领域,特别是涉及一种深度可分离卷积的加速方法、计算机可读存储介质及应用。
背景技术
卷积计算应用于计算机视觉各领域,随着深度卷积网络的复杂性不断提高,计算量也随之增大,从而导致深度卷积神经网络对硬件计算能力要求非常高。而嵌入式设备上的计算能力有限,很难达到通用计算机的计算效果。
随着嵌入式CPU的发展,ARM公司的CPU已经占有了巨大的市场份额,其中contex-A系列处理器已广泛应用于智能手机、机顶盒智能电视等各种智能化的设备中。contex-A系列处理器提供的128位SIMD(Single Instruction,Multiple Data,单指令、多数据)运算指令扩展结构被称为NEON,从智能手机和移动计算设备到HDTV,NEON已被公认为是多媒体应用领域中最为优越的处理器之一。Neon指令是适用于ARM Cortex-A系列处理器的一种128位SIMD(Single Instruction,Multiple Data,单指令、多数据)扩展结构。Neon指令采用专门设计,简化了软件在不同平台之间的移植,为类似Dolby Mobile的密集型多媒体应用提供了低能耗和灵活的加速功能。搭载了ARMV8指令集的ARM A53 CPU更是成为近几年最广泛应用的IP核,其他64位架构的ARM处理器也在日益增多,其中NEON在ARM64位架构相对ARM32提供了更多的寄存器,使其在计算中具有更高的计算效率。
随着大量嵌入式应用需求的不断增多,轻量级的神经网络结构也不断的被开发出来。这种轻量级的神经网络结构通常是将多维卷积分解为两次1X1卷积和一次深度可分离卷积,其中1X1的卷积计算与矩阵乘法计算基本一致,因此能够在计算精度略微下降的前提下,在计算量上降低几个数量级。目前一些大的公司都已经推出了开源的深度卷积计算框架,比如小米的MACE、阿里的MNN。然而现有的轻量级的神经网络结构都以GPU或DSP为主,在最广泛使用的CPU上应用时占用巨大的CPU资源,虽然CPU的计算能力变强,但在处理神经网络卷积,特别是深度可分离卷积时,计算时间相对GPU或DSP仍然很慢。
目前的卷积计算一般应用于深度计算引擎,并与各种训练模型结合,实现人体骨骼识别、物品识别、人员识别等。专利号为CN201810601486.2,专利名称为《一种基于单目视觉、从动作识别身份的方法》,其公开了基于卷积神经网络构建了人体骨骼关键点的检测模型,利用提取的人体骨骼点点坐标序列对基于LSTM的神经网路匹配模型进行训练,使得训练的基于LSTM的神经网路匹配模型具备跨视角的动作识别能力。在识别过程中,利用训练好的人体骨骼点二维坐标检测模型对单目视觉视频和已注册动作视频序列进行人体骨骼点二维坐标序列提取,再通过基于LSTM的神经网路匹配模型进行特征相似度计算,进而对测试的动作视频中人的身份进行识别,在跨视角动作识别时具有较高的准确度。该方法可被广泛应用与配备视频监控的场景,如:机场及超市的安全监控,人员识别,罪犯检测等。
发明内容
为此,需要提供一种深度可分离卷积的加速方法,用于现有技术中通过CPU计算深度可分离卷积计算效率低的技术问题。
为实现上述目的,发明人提供了一种深度可分离卷积的加速方法,该深度可分离卷积的加速方法包括以下步骤:
计算深度可分离卷积的输入/输出数据的排序,使所述输入/输出数据在内存中按卷积时的访问顺序连续存储;
计算矩阵卷积所需的寄存器数量nr,所述nr=k×k+k+rk,其中,k为深度卷积系数大小,rk为k按一个SIMD乘法指令做能完成的向量浮点乘法数量vn向上取整的数量;
判断矩阵卷积所需的寄存器数量nr是否小于等于SIMD寄存器组所能存储向量浮点乘法数量vn的总数量tn,若是,则使用SIMD寄存器组直接进行深度可分离卷积,若否,则将系数矩阵分割成mk份,每次最多处理nk行,并使mk×nk小于等于k,以及使tr取小于tn的最大值,其中,所述tr=k×nk+nk+rk;其中,所述mk为系数矩阵分割的份数,nk为分割后的矩阵的最大行数,tr为所需的寄存器总数量。
进一步的,还包括数据处理步骤:读取卷积结果数据,对卷积结果数据进合并激活处理,存储处理后的卷积数据。
进一步的,所述步骤“计算深度可分离卷积的输入/输出数据的排序,使所述输入/输出数据在内存中按卷积时的访问顺序连续存储”包括:
分配所述输入/输出数据的索引号IDX,IDX=Y×W+X,W为N通道的卷积输入/输出浮点数据的宽度,Y为卷积输入/输出浮点数据位于通道的行数,X为卷积输入/输出浮点数据位于通道的列数,COLS为通道组大小;
对N通道的卷积输入/输出数据进行分组;
根据公式(IDX/L)×L×COLS+(S/vn)×L×vn+(IDX%L)×vn+(S%vn),计算卷积输入/输出浮点数据的排列,使所述输入/输出数据在内存中按卷积时的访问顺序连续存储,其中,S为数据在N通道中所在的通道数;L为输入子矩阵的行数量。
进一步的,若CPU处理器具有32个SIMD寄存器,且每个SIMD寄存器可以存储4个浮点数时,若系数矩阵为5X5矩阵,则将系数矩阵5X5矩阵分割成4X5矩阵和1X5矩阵分别进行深度可分离卷积,若系数矩阵为7X7矩阵,则将系数矩阵7X7分割成3个2X7矩阵和1个1X7矩阵分别进行深度可分离卷积。
进一步的,所述CPU处理器为嵌入式设备的CPU处理器。
为解决上述技术问题,本发明还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,所述程序被处理器执行时实现如以上任一项技术方案所述的步骤。
为解决上述技术问题,本发明还提供了一种深度可分离卷积的加速方法的应用,所述深度可分离卷积的加速方法应用于深度计算引擎,所述深度可分离卷积的加速方法为以上任一技术方案所述的深度可分离卷积的加速方法。
为解决上述技术问题,本发明还提供了一种深度可分离卷积的加速方法的应用,所述深度可分离卷积的加速方法的深度计算引擎,结合人体骨骼训练模型,应用于人体骨骼识别,所述深度可分离卷积的加速方法为以上任一技术方案所述的深度可分离卷积的加速方法。
区别于现有技术,上述技术方案在进行深度可分离卷积时,计算深度可分离卷积的输入/输出数据的排序,使所述输入/输出数据在内存中按卷积时的访问顺序连续存储,可提高缓存利用率和SDRAM访问效率,降低加载存储指令的内存访问停顿;并且,上述技术方案根据可以根据深度可分离卷积系数矩阵的大小,判断是否进行分割处理,若不进行分割处理,则可以通过同时计算多行多列多通道的深度可分离卷积数据,可以最大限度的使用SIMD寄存器,从而降低加载存储指令,进而提高计算时的乘累加指令比例,达到提高深度可分离卷积计算效率的效果。若进行分割处理,则可以有效避免计算时所需的SIMD寄存器超出SIMD寄存器数量,而导致计算时需要大量的临时存储所引起计算效率下降,并通过使分割后的计算所需SIMD寄存器数量为小于或等于SIMD寄存器总数量,并且分割后的计算所需SIMD寄存器数量最大,这样可以最大限度使用SIMD寄存器进行深度可分离卷积,从而降低加载存储指令,进而提高计算时的乘累加指令比例,达到提高深度可分离卷积计算效率的效果。
附图说明
图1为具体实施方式所述深度可分离卷积的加速方法的流程图;
图2为具体实施方式3X3矩阵度可分离卷积计算方法的流程图;
图3为具体实施方式5X5矩阵度可分离卷积计算方法的流程图;
图4为具体实施方式7X7矩阵度可分离卷积计算方法的总流程图;
图5为具体实施方式2X7矩阵度可分离卷积计算方法的流程图;
图6为具体实施方式1X7矩阵度可分离卷积计算方法的流程图;
图7为具体实施方式计算机可读存储介质的模块图;
附图标记说明:
700、计算机可读存储介质;
具体实施方式
为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。
ROUNDUP8:为向上取整操作,例如ROUNDUP8(X)表示对X进行向上按8取整操作;
寄存器:指NEON的SIMD寄存器;
计算:指32位单精度浮点计算;一个SIMD寄存器可以存储4个单精度浮点数;
IDX/L:是指IDX对L进行除法运算,并取整。
IDX%L:是指IDX对L进行取余数运算。
请参阅图1至图7,本实施例提供了一种深度可分离卷积的加速方法。图1所示,该深度可分离卷积的加速方法包括以下步骤:
S101、计算深度可分离卷积的输入/输出数据的排序,使所述输入/输出数据在内存中按卷积时的访问顺序连续存储。由于1X1卷积处理为深度可分离卷积前级处理,计算1X1卷积通常会采样分块方式进行计算,通常可以将1X1卷积输入输出数据分成具有相同行数相同列数的子块。在对输入浮点数据进行排序时,先为输入数据分配索引号IDX,对于一个浮点数据位于第C通道,第Y行,第X列,令该数据的索引号为IDX=Y×W+X。然后根据公式:(IDX/L)×L×COLS+(S/vn)×L×vn+(IDX%L)×vn+(S%vn),对输入浮点数据进行排序,其中,W为N通道的卷积输入浮点数据的宽度,H为N通道的卷积输入浮点数据的高度,COLS为通道组大小,S为数据在N通道中所在的通道数;L为输入子矩阵的行数量。
由于在后述步骤S103中,对矩阵的深度可分离卷积计算是需要按照多层循环进行的,第一层循环中计算输入浮点数据的IDX分组,在第二层循环中计算N通道分组,在第三层循环中计算矩阵的乘法。因此本实施方式中,按公式:(IDX/L)×L×COLS+(S/vn)×L×vn+(IDX%L)×vn+(S%vn)对输入浮点数据排列,可使每次读写的数据连续存储,即使每次读写的数据尽量排列在一起,这样可以使所述输入/输出数据在内存中连续存储,可提高缓存利用率和SDRAM访问效率,降低加载存储指令的内存访问停顿,减小内存访问时间。所述公式:(IDX/L)×L×COLS+(S/vn)×L×vn+(IDX%L)×vn+(S%vn)的具体执行步骤为:以一条SMID乘累加指令做能计算的单精度浮点数数量为通道分组数(在本实施方式中此数量为4),将总共的通道数量N按通道分组数进行分组,并顺序排列,然后将数据的索引号IDX,按一次子矩阵乘法的行数进行分组L(本实施中使用ARM64处理器,其具有32个SIMD寄存器,并且每个寄存器可以存储4个浮点数时,在本实施方式中L为8),然后将N通道的矩阵输入输出顺序排列,最后将所有分组的索引号顺序排列。
S102、计算矩阵卷积所需的寄存器数量nr,所述nr=k×k+k+rk,其中,k为深度卷积系数大小,rk为k按一个SIMD乘法指令做能完成的向量浮点乘法数量vn向上取整的数量。其中,nr=k×k+k+rk的具体含义是指需要存储k×k个系数,同时需要加载一列高度为k的数据,同时需要rk个单元用于存储处理结果。深度卷积系数大小k与系数矩阵大小相关,系数矩阵大小等于k×k×vn,因此根据系数矩阵大小即可确定深度卷积系数大小k。rk为k按vn向上取整所得的数量,例如,k等于3,vn等于4时,则rk等于4(即3向上按vn取整即等于4),当k等于5,vn等于4时,则rk等于8(即5向上按vn取整即等于8)。rk的作用在于循环使用rk个SIMD寄存器用于存储计算结果,每当计算完VN点的深度可分离卷积数据,则将数据存储在一个SIMD寄存器中,当完成存储rk个SIMD寄存器后将数据存储回内存。
S103、判断矩阵卷积所需的寄存器数量nr是否小于等于SIMD寄存器组所能存储的向量浮点乘法数量vn的总数量tn,若是,则使用SIMD寄存器组直接进行深度可分离卷积,若否,则将系数矩阵分割后进行卷积,使每次卷积所需的寄存器数量为小于或等于CPU处理器的SIMD寄存器数量tn的最大值。
具体的,在系数矩阵分割后进行卷积时,将系数矩阵分割成mk份,每次最多处理nk行,并使mk×nk小于等于k,以及使tr取小于tn的最大值,所述tr=k×nk+nk+rk;其中,所述mk为系数矩阵分割的份数,nk为分割后的矩阵的最大行数,tr为所需的寄存器总数量。在该实施方式中,tn为SIMD寄存器的最大值,通过本发明上述方法对系数矩阵进行分割,从而使分割得到的子矩阵的深度可分离卷积计算所需的最大SIMD寄存器数量tr小于tn。因此,本实施例最大限度使用SIMD寄存器进行深度可分离卷积,保证深度可分离卷积的计算效率。
以下以ARM64处理器执行3X3矩阵、5X5矩阵以及7X7的深度可分离卷积为例,对本发明进行具体说明,其中,ARM64处理器具有32个SIMD寄存器。如图2所示,为3X3矩阵深度可分离卷积的流程图。由于3X3矩阵深度可分离卷积所需要的SIMD寄存器组小于32个,因此无需将3X3矩阵分割即可直接进行深度可分离卷积计算。
首先预设RN=4;所述RN为每次处理的行数量;
S201.加载具有相同列号C,且分属RN个连续行R0到RN的组数据从内存到寄存器,其中RN是整数且1≤RN≤4,并同时加载TI(R-1,C,S),TI(R+RN,C,S)到寄存器;其中,所述TI(R-1,C,S)表示第R-1行,第C列,第S通道的输入数据,TI(R+RN,C,S)表示第R+RN行,第C列,第S通道的输入数据。
S202.计算TO(R+y,C+x,S)的累加数据,其中0≤y<RN,-2≤x≤0;所述S为数据在N通道中所在的通道数;TO为输出数据;
S203.对TO(R+y,C-2,S)的数据进行激活处理,并按内存数据格式保存,其中0≤y<RN;
S204.重复S201到S203步骤,直到S等于ROUNDUP4(N)-4,并每重复一次S加4;所述N为通道数;
S205.重复S201到S204步骤,直到C等于W-1,并每重复一次C加1;所述C为列号,所述W为N通道的卷积输入浮点数据的宽度;
S206.重复S201到S205以上步骤K次直到K×RN≤H-RN,并每重复一次K加1;所述H为N通道的卷积输入浮点数据的高度;所述K为重复次数;
S207.调整RN=H-K×RN再次执行S201到S205。
本实施方式中,对3X3矩阵深度可分离卷积计算采用了RN行3列4通道的计算组,对于每组计算只需要读取RN+2组数据,输出RN组数据,对于RN等于4的情况,每个计算组需要计算4×3×9/4条NEON乘累加指令,总的SIMD寄存器数量不超过32个,其加载存储指令需要2×4+2,其乘累加指令的比率达到了27/(27+10+其余指令数目)。
而现有方法中,3X3矩阵深度可分离卷积一般每计算一组输出数据需要其附近的9组输入数据,乘累加指令的比率为1/(9+其余指令数目),其余指令数目一般包含循环控制及内存地址修改指令。
由于深度可分离卷积计算的效率与计算时乘累加指令的比例成正比。在本实施例中,计算时乘累加指令的比例为27/(27+10+其余指令数目),而现有3X3矩阵深度可分离卷积计算中,乘累加指令的比率只能在1/(9+其余指令数目)。假设其余指令数目为4(一般情况下为4),采用本实施例方法,则计算时乘累加指令的比率达到0.65,而采用现有方法,其计算乘累加指令的比率为0.04。因此,采用本实施例的3X3矩阵深度可分离卷积计算方法可大大提高计算效率。
如图3所示,为5X5矩阵深度可分离卷积的流程图。由于5X5矩阵深度可分离卷积所需要的SIMD寄存器组大于32个,因此需要对5X5矩阵进行分割进行深度可分离卷积计算。
在本实施方式中,对5X5的深度可分离卷积计算采用了先计算该输出所需的4X5累加和,再计算1X5累加和,具体如下:
S301.加载TI(R+y,C,S)的组数据到寄存器,其中y等于-2、-1、1、2;
S302.计算TO(R,C+x,S)组数据的累加数据,其中-4≤x≤0;
S303.将TO(R,C-4,S)的数据保存回内存,该部分数据被称为TMP(C-4);所述TMP(C-4)为列号为C-4这一列的临时计算结果;
S304.重复步骤S301-S303,直到C=W-1;
S305.加载TMP(C-4)后寄存器;
S306.加载TI(R,C,S)的组数据到寄存器,计算TO(R+y,C+x,S)组数据的累加数据,其中-4≤x≤0;y=0;
S307.将TO(R,C-4,S)的数据进行激活处理,处理后按先前所属内存格式保存回内存;
S308.重复步骤S305-S307,直到C=W-1并每重复一次C加1;
S309.重复S301到S308步骤,直到S等于ROUNDUP4(N)-4并每重复一次S加4;
S310.重复S301到S309步骤,直到R等于H-1并每重复一次R加1。
在本实施方式中,上述步骤S301-S304完成4X5的深度可分离卷积计算,上述步骤S305-S308完成1X5的深度可分离卷积计算,上述步骤S309-S310完成所有行的计算。
本实施例对5X5的深度可分离卷积计算采用了先计算该输出所需的4X5累加和,再计算1X5累加和。使用ARM64处理器,其具有32个SIMD寄存器,并且每个寄存器可以存储4个浮点数时,对分割后4X5系数矩阵,进行深度可分离卷积计算,计算时需要加载4个SIMD寄存器,存储8个SIMD寄存器,系数需要20个SIMD寄存器,总共需要32个SIMD寄存器,使总的SIMD寄存器使用不超过32个,且最大限度地利用SIMD寄存器。同样的1X5深度可分离卷积计算时,需要1个SIMD寄存器,存储8个SIMD寄存器,系数需要5个SIMD寄存器,总共需要14个SIMD寄存器,未超过总的SIMD寄存器数量。
同时,采用本实施例的分割方法,5X5的深度可分离卷积计算的乘累加指令的比率达到25/(25+4+1+2+其他指令数目),而采用现有方法其乘累加指令比率只有1/(25+其他指令数目)。假设其余指令数目为4(一般情况下为4),采用本实施例方法,则计算时乘累加指令的比例达到0.69,而采用现有方法,其乘累加指令的比率为0.03。由于深度可分离卷积计算的效率与计算时乘累加指令的比例成正比,因此,采用本实施例的5X5矩阵深度可分离卷积计算方法可大大提高计算效率。
如图4至图6所示,为7X7矩阵深度可分离卷积的流程图。由于7X7矩阵深度可分离卷积所需要的SIMD寄存器组大于32个,因此需要对7X7矩阵进行分割成3个2X7矩阵和一个1X7矩阵进行深度可分离卷积计算。
其中,如图5所示,为2X7矩阵度可分离卷积计算方法的流程图。2X7矩阵度可分离卷积计算方法包括步骤:
S501.加载TI(R+rt,C,S)、TI(R+rb,C,S)的组数据到寄存器,其中rt分别等于-3、-1、2,rb分别等于-2、1、3;
S502、加载TMP(C-6);
S503.计算TO(R,C+x,S)组数据的累加数据,其中-6≤x≤0;
S504.将TO(R,C-6,S)的数据保存回内存,该组数据被称为TMP(C-6);
S505.重复步骤S501至S504,直到C=W-1,并且每重复一次C加1。
如图6所示,为1X7矩阵度可分离卷积计算方法的流程图。1X7矩阵度可分离卷积计算方法包括步骤:
S601.加载TI(R,C,S)的组数据到寄存器;
S602.加载TMP(C-6)后寄存器;
S603.计算TO(R,C+x,S)组数据的累加数据,其中-6≤x≤0;
S604.将TO(R,C-6,S)的数据进行激活处理;
S605.处理后按先前所属内存格式保存回内存;
S606.重复以上步骤S601到S605,直到C等于W-1并且每重复一次C加1。
图4为7X7矩阵总深度可分离卷积的总流程图。
S401.清零临时存储TMP(C);
S402.设置rt=-3,rb=-2,并按2X7子流程处理;
S403.设置rt=-1,rb=1,并按2X7子流程处理;
S404.设置rt=2,rb=3,并按2X7子流程处理;
S405.按1X7子流程处理;
S406.重复以上步骤S401到S405直到S等于ROUNDUP4(N)-4,且没重复一次S加4;
S407.重复以上步骤直到R等于H-1,且每重复一次R加1。
本实施方式中,对7X7的深度可分离卷积计算采用的3个2X7与1个1X7的累加。当使用ARM64处理器时,其具有32个SIMD寄存器,并且每个寄存器可以存储4个浮点数时,对分割后2X7系数矩阵,进行深度可分离卷积计算时,需要加载2个SIMD寄存器,存储8个SIMD寄存器,系数需要14个SIMD寄存器,总共需要24个SIMD寄存器,同样的1X7深度可分离卷积计算时,需要加载1个SIMD寄存器,存储需要8个SIMD寄存器,系数需要7个SIMD寄存器,总共需要16个SIMD寄存器。因此,不管2X7系数矩阵的深度可分离卷积计算,还是1X7系数矩阵的深度可分离卷积计算,其使用的总SIMD寄存器使用不超过32个。
同时,采用本实施例的方法,乘累加的指令比率达到了49/(49+7+6+1+其他指令数目),而一般的7X7深度卷积滤波的乘累加指令比率只有1/(49+其他指令数目)。假设其余指令数目为4(一般情况下为4),采用本实施例方法,则计算时乘累加指令的比例达到0.73,而采用现有方法,其乘累加指令的比率为0.02。由于深度可分离卷积计算的效率与计算时乘累加指令的比例成正比,因此,采用本实施例的7X7矩阵深度可分离卷积计算方法可大大提高计算效率。
在另一实施方式中,所述深度可分离卷积的加速方法还包括数据处理步骤:读取卷积结果数据,对卷积结果数据进行激活处理,存储处理后的卷积数据。深度可分离卷积常用的激活操作,不需要进行归一化,从而可减少数据存取次数和时间,提高数据处理效率。
如图7所示,在另一实施方式中,还提供了一种计算机可读存储介质700,该计算机可读存储介质上存储有计算机程序,所述程序被处理器执行时实现如以上任一项实施方式所述的步骤。
在另一实施方式中,提供了一种深度可分离卷积的加速方法的应用,所述深度可分离卷积的加速方法还可以应用于深度计算引擎,所述深度可分离卷积的加速方法为以上任一实施方式方案所述的深度可分离卷积的加速方法。
在另一实施方式中,提供了一种深度可分离卷积的加速方法的应用,所述深度可分离卷积的加速方法的深度计算引擎,结合人体骨骼训练模型,可以应用于人体骨骼识别,所述深度可分离卷积的加速方法为以上任一实施方式方案所述的深度可分离卷积的加速方法。
需要说明的是,尽管在本文中已经对上述各实施例进行了描述,但并非因此限制本发明的专利保护范围。因此,基于本发明的创新理念,对本文所述实施例进行的变更和修改,或利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接地将以上技术方案运用在其他相关的技术领域,均包括在本发明的专利保护范围之内。

Claims (9)

1.一种深度可分离卷积的加速方法,其特征在于,包括以下步骤:
计算深度可分离卷积的输入/输出数据的排序,使所述输入/输出数据在内存中按卷积时的访问顺序连续存储;
计算矩阵卷积所需的寄存器数量nr,所述nr=k×k+k+rk,其中,k为深度卷积系数大小,rk为k按一个SIMD乘法指令做能完成的向量浮点乘法数量vn向上取整的数量;
判断矩阵卷积所需的寄存器数量nr是否小于等于SIMD寄存器组所能存储的向量浮点乘法数量vn的总数量tn,若是,则使用SIMD寄存器组直接进行深度可分离卷积,若否,则将系数矩阵分割后进行卷积,使每次卷积所需的寄存器数量为小于或等于CPU处理器的SIMD寄存器数量tn的最大值。
2.根据权利要求1所述的深度可分离卷积的加速方法,其特征在于,所述“将系数矩阵分割后进行卷积”包括步骤:
将系数矩阵分割成mk份,每次最多处理nk行,并使mk×nk小于等于k,以及使tr取小于tn的最大值,所述tr=k×nk+nk+rk;其中,所述mk为系数矩阵分割的份数,nk为分割后的矩阵的最大行数,tr为所需的寄存器总数量。
3.根据权利要求1所述的深度可分离卷积的加速方法,其特征在于,还包括数据处理步骤:读取卷积结果数据,对卷积结果数据进行激活处理,存储处理后的卷积数据。
4.根据权利要求1所述的深度可分离卷积的加速方法,其特征在于,所述步骤“计算深度可分离卷积的输入/输出数据的排序,使所述输入/输出数据在内存中按卷积时的访问顺序连续存储”包括:
分配所述输入/输出数据的索引号IDX,IDX=Y×W+X,W为N通道的卷积输入/输出浮点数据的宽度,Y为卷积输入/输出浮点数据位于通道的行数,X为卷积输入/输出浮点数据位于通道的列数,COLS为通道组大小;
对N通道的卷积输入/输出数据进行分组;
根据公式(IDX/L)×L×COLS+(S/vn)×L×vn+(IDX%L)×vn+(S%vn),计算卷积输入/输出浮点数据的排列,使所述输入/输出数据在内存中按卷积时的访问顺序连续存储,其中,S为数据在N通道中所在的通道数;L为输入子矩阵的行数量。
5.根据权利要求1所述的深度可分离卷积的加速方法,其特征在于,若CPU处理器具有32个SIMD寄存器,且每个SIMD寄存器可以存储4个浮点数时,若系数矩阵为5X5矩阵,则将系数矩阵5X5矩阵分割成4X5矩阵和1X5矩阵分别进行深度可分离卷积;若系数矩阵为7X7矩阵,则将系数矩阵7X7分割成3个2X7矩阵和1个1X7矩阵分别进行深度可分离卷积。
6.根据权利要求1所述的深度可分离卷积的加速方法,其特征在于,所述CPU处理器为嵌入式设备的CPU处理器。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至6任一项所述的步骤。
8.一种深度可分离卷积的加速方法的应用,其特征在于:所述深度可分离卷积的加速方法应用于深度计算引擎,所述深度可分离卷积的加速方法为权利要求1至6任一所述的深度可分离卷积的加速方法。
9.一种深度可分离卷积的加速方法的应用,其特征在于:所述深度可分离卷积的加速方法的深度计算引擎,结合人体骨骼训练模型,应用于人体骨骼识别,所述深度可分离卷积的加速方法为权利要求1至6任一所述的深度可分离卷积的加速方法。
CN201911336362.7A 2019-12-23 2019-12-23 深度可分离卷积的加速方法和存储介质 Active CN111079904B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911336362.7A CN111079904B (zh) 2019-12-23 2019-12-23 深度可分离卷积的加速方法和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911336362.7A CN111079904B (zh) 2019-12-23 2019-12-23 深度可分离卷积的加速方法和存储介质

Publications (2)

Publication Number Publication Date
CN111079904A true CN111079904A (zh) 2020-04-28
CN111079904B CN111079904B (zh) 2023-05-23

Family

ID=70316987

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911336362.7A Active CN111079904B (zh) 2019-12-23 2019-12-23 深度可分离卷积的加速方法和存储介质

Country Status (1)

Country Link
CN (1) CN111079904B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113344200A (zh) * 2021-06-17 2021-09-03 阿波罗智联(北京)科技有限公司 用于训练可分离卷积网络的方法、路侧设备及云控平台

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1387641A (zh) * 1999-08-31 2002-12-25 英特尔公司 并行处理器中的多线程执行
US20180005074A1 (en) * 2016-07-01 2018-01-04 Google Inc. Convolutional Neural Network On Programmable Two Dimensional Image Processor
CN110059798A (zh) * 2017-11-06 2019-07-26 畅想科技有限公司 开发神经网络中的稀疏性
CN110458280A (zh) * 2019-07-15 2019-11-15 武汉魅瞳科技有限公司 一种适用于移动端的卷积神经网络加速方法及***

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1387641A (zh) * 1999-08-31 2002-12-25 英特尔公司 并行处理器中的多线程执行
US20180005074A1 (en) * 2016-07-01 2018-01-04 Google Inc. Convolutional Neural Network On Programmable Two Dimensional Image Processor
CN110059798A (zh) * 2017-11-06 2019-07-26 畅想科技有限公司 开发神经网络中的稀疏性
CN110458280A (zh) * 2019-07-15 2019-11-15 武汉魅瞳科技有限公司 一种适用于移动端的卷积神经网络加速方法及***

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113344200A (zh) * 2021-06-17 2021-09-03 阿波罗智联(北京)科技有限公司 用于训练可分离卷积网络的方法、路侧设备及云控平台
CN113344200B (zh) * 2021-06-17 2024-05-28 阿波罗智联(北京)科技有限公司 用于训练可分离卷积网络的方法、路侧设备及云控平台

Also Published As

Publication number Publication date
CN111079904B (zh) 2023-05-23

Similar Documents

Publication Publication Date Title
CN111684473B (zh) 提高神经网络阵列的性能
CN110050267B (zh) 用于数据管理的***和方法
US10445638B1 (en) Restructuring a multi-dimensional array
CN109543830B (zh) 一种用于卷积神经网络加速器的拆分累加器
US20210182025A1 (en) Accelerating 2d convolutional layer mapping on a dot product architecture
CN110188869B (zh) 一种基于卷积神经网络算法的集成电路加速计算的方法及***
CN108845828B (zh) 一种协处理器、矩阵运算加速方法及***
US20130159665A1 (en) Specialized vector instruction and datapath for matrix multiplication
EP3093757B1 (en) Multi-dimensional sliding window operation for a vector processor
CN110796236B (zh) 多样本多通道卷积神经网络池化的向量化实现方法
CN110874636A (zh) 一种神经网络模型压缩方法、装置和计算机设备
CN112668708A (zh) 一种提高数据利用率的卷积运算装置
CN114503126A (zh) 矩阵运算电路、装置以及方法
CN113485750B (zh) 数据处理方法及数据处理装置
CN111079904A (zh) 深度可分离卷积的加速方法、存储介质及应用
CN109416743B (zh) 一种用于识别人为动作的三维卷积装置
CN110796244B (zh) 用于人工智能设备的核心计算单元处理器及加速处理方法
CN109558944B (zh) 基于可配置卷积层的卷积神经网络的算法优化方法及装置
CN115759213A (zh) 一种用于一维卷积的卷积神经网络协处理器
CN111178505B (zh) 卷积神经网络的加速方法和计算机可读存储介质
KR20220083820A (ko) 뉴럴 네트워크 프로세서에서의 3차원 콘볼루션
KR20200023154A (ko) 컨볼루션 뉴럴 네트워크를 처리하는 방법 및 장치
CN112639490B (zh) 用于信号处理的矢量化峰检测
Dinkel et al. Fast median finding on digital images
CN112418417A (zh) 基于simd技术的卷积神经网络加速装置及方法

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