CN107832842B - 针对折叠特征数据执行卷积运算的方法和装置 - Google Patents

针对折叠特征数据执行卷积运算的方法和装置 Download PDF

Info

Publication number
CN107832842B
CN107832842B CN201711212000.8A CN201711212000A CN107832842B CN 107832842 B CN107832842 B CN 107832842B CN 201711212000 A CN201711212000 A CN 201711212000A CN 107832842 B CN107832842 B CN 107832842B
Authority
CN
China
Prior art keywords
convolution
dimension
folded
feature data
convolution kernel
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
CN201711212000.8A
Other languages
English (en)
Other versions
CN107832842A (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.)
Nanjing Horizon Robotics Technology Co Ltd
Original Assignee
Nanjing Horizon Robotics 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 Nanjing Horizon Robotics Technology Co Ltd filed Critical Nanjing Horizon Robotics Technology Co Ltd
Priority to CN201711212000.8A priority Critical patent/CN107832842B/zh
Publication of CN107832842A publication Critical patent/CN107832842A/zh
Priority to JP2018221116A priority patent/JP6713036B2/ja
Priority to KR1020180149478A priority patent/KR102129895B1/ko
Priority to US16/202,991 priority patent/US11500958B2/en
Priority to EP18208803.9A priority patent/EP3489864A1/en
Application granted granted Critical
Publication of CN107832842B publication Critical patent/CN107832842B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)

Abstract

公开了一种针对折叠特征数据执行卷积运算的方法和装置。该方法包括:对提供给卷积层的折叠特征数据和原始卷积核执行预处理;根据折叠特征数据的折叠方式,在宽度和高度中的至少一个维度上折叠经预处理的原始卷积核,以生成与原始卷积核相对应的一个或多个折叠卷积核;以及使用所生成的一个或多个折叠卷积核对经预处理的折叠特征数据执行卷积运算。通过该方法,能够直接对折叠特征数据执行卷积运算,而无需将折叠特征数据展开成常规的未折叠特征数据,有利于提高运算效率。

Description

针对折叠特征数据执行卷积运算的方法和装置
技术领域
本发明总体上涉及卷积神经网络的技术领域,并且具体地涉及针对折叠特征数据执行卷积运算的方法和装置。
背景技术
基于卷积神经网络的深度学习技术已经被广泛地应用于图像识别、视频分析、自然语言处理、辅助驾驶等不同的领域。卷积神经网络中的运算量通常很大。期望能够使用诸如通用的中央处理器(CPU)、图形处理器(GPU)或专用加速器等硬件高效地执行卷积神经网络中的运算。
发明内容
一方面,提供一种针对折叠特征数据执行卷积运算的方法和装置。该方法包括:对提供给卷积层的折叠特征数据和原始卷积核执行预处理;根据折叠特征数据的折叠方式,在宽度和高度中的至少一个维度上折叠经预处理的原始卷积核,以生成与原始卷积核相对应的一个或多个折叠卷积核;以及使用所生成的一个或多个折叠卷积核对经预处理的折叠特征数据执行卷积运算。
另一方面,还提供一种针对折叠特征数据执行卷积运算的装置。该装置可以包括被配置为执行上述方法的一个或多个处理器。
另一方面,还提供一种针对折叠特征数据执行卷积运算的装置。该装置可以包括:预处理器,被配置为对提供给卷积层的折叠特征数据和原始卷积核执行预处理;折叠器,被配置为根据折叠特征数据的折叠方式,在宽度和高度中的至少一个维度上折叠经预处理的原始卷积核,以生成与原始卷积核相对应的一个或多个折叠卷积核;以及运算器,被配置为使用所生成的一个或多个折叠卷积核对经预处理的折叠特征数据执行卷积运算。
另外,还提供一种非临时性存储介质,在其上存储有在被计算装置执行时执行上述方法的程序指令。
通过根据本公开的实施例的方法和/或装置,能够直接对折叠特征数据执行卷积运算,而无需将折叠特征数据展开成常规的未折叠特征数据,有利于提高运算效率。
附图说明
图1示出根据本公开的实施例的折叠特征数据的示例。
图2示出根据本公开的实施例的折叠特征数据的示例。
图3示出根据本公开的实施例的针对折叠特征数据执行卷积运算的方法的流程图。
图4示出根据本公开的实施例的对折叠特征数据和原始卷积核执行预处理的示例。
图5示出根据本公开的实施例的在一个维度上折叠经预处理的原始卷积核的示例。
图6示出根据本公开的实施例的在两个维度上折叠经预处理的原始卷积核的示例。
图7示出根据本公开的实施例的执行卷积运算的示例。
图8示出根据本公开的实施例的执行卷积运算的示例。
图9示出根据本公开的实施例的针对折叠特征数据执行卷积运算的装置的示例。
图10示出根据本公开的实施例的针对折叠特征数据执行卷积运算的装置的示例。
具体实施方式
提供给卷积神经网络的一个特征数据可以被视为一个数据立方体,并且可以具有宽度、高度和深度(即,不同的通道)等多个维度,该特征数据中的每个数据可以分别对应于数据立方体中的一个点。相应地,卷积神经网络中用于卷积运算的权重参数每个卷积核也可以被视为一个数据立方体。
通常,在描述一个数据立方体时,可以采用术语“切片”。如果将一个数据立方体的三维度视为分别对应于三维笛卡尔坐标系中的X轴、Y轴和Z轴所表示的维度,则该数据立方体在与X轴所表示的维度相对应的第一维度上的一个切片表示使用与X轴正交的一个平面对该数据立方体中的数据进行采样所获得的结果,该结果是一个在由Y轴和Z轴所表示的二维平面上的一个矩形数据。形式化地,如果将一个数据立方体视为点的集合Cube={(x,y,z)|x∈[0,W),y∈[0,H),x∈[0,D)},W、H和D均为大于0的整数,则该数据立方体的在与X轴所表示的维度相对应的第一维度上的一个切片Slicei={(y,z)|x=i,y∈[0,H),x∈[0,D)},i∈[0,W)。所包含的所有数据均为零(或者相当于零)的值的切片可以被称为零切片。
在本文中,为了描述上的方便,在描述特征数据或卷积核在某一维度上的数据时,也使用术语“切片”,例如在宽度的维度上的切片(在本文中简称为“宽度切片”)、在高度的维度上的切片(在本文中简称为“高度切片”)等。
在本文中,当提及在数据立方体A的第一维度上(例如宽度这样的维度)填充或附加一个或多个零切片时,可以意味着通过在A的第一维度上的某个边界处(例如,在宽度上的左侧或右侧)增加一个或多个零切片来增加A的第一维度的维度值(例如,宽度),所增加的每个零切片在另外的两个维度(例如,高度和深度这两个维度)上与原始的A具有相同的维度值(例如,高度值和深度值)。
在本文中,当提及在数据立方体A的第一维度和第二维度上(例如,宽度和高度这两个维度)填充或附加一个或多个零切片时,可以意味着通过在A的第一维度上的某个边界处(例如,在宽度上的左侧或右侧)增加一个或多个零切片来增加A的第一维度的维度值(例如,宽度),所增加的每个零切片在另外的两个维度(例如,高度和深度这两个维度)上与原始的A具有相同的维度值(例如,高度值和深度值),然后在增加宽度之后所获得的数据立方体A’的第二维度上的某个边界处(例如,在高度上的上侧或下侧)增加一个或多个零切片,以增加A’的第二维度的维度值(例如,高度),所增加的每个零切片在另外的两个维度(例如,宽度和深度这两个维度)上与A’具有相同的维度值(例如,宽度值和深度值)。
在本文中,当提及对使数据立方体A的各个切片在深度上对齐时,可以意味着针对A的不具有期望深度值的切片(可以是宽度切片,也可以是高度切片),在深度上添补零(或者相当于零的值),使得添补后的A的各个切片具有期望深度值。
在本文中,当提及在数据立方体A的第一维度和/或第二维度上进行填充时,除非特别说明,否则所填充的零切片的数量可以是零个或一个或多个。
卷积神经网络中的运算量通常很大,期望能够使用诸如通用的中央处理器、图形处理器或专用加速器等硬件高效地执行卷积神经网络中的运算。为了提高运算效率和/或简化硬件设计,例如可以设计支持多通道的存储器来对执行卷积运算的加法器和/或乘法器提供数据,或者将运算器(例如,用于执行卷积运算的乘法器电路等)设计为支持多个通道(例如,32个通道)的运算。
另一方面,通常提供给卷积神经网络的输入层的特征数据的通道数量可能很少(通常为3个通道或1个通道),并且在卷积神经网络的前馈推理方向上的相对靠前的卷积层的输入特征数据的通道数量也可能很少,导致至少在整个卷积神经网络的前馈推理过程中的某个阶段中,可支持多通道的存储器和/或运算器的资源利用率很低。为此,可以将常规的特征数据在宽度和/或高度上进行折叠,以提高例如可支持多通道的存储器的资源利用率。
然而,在一个已经设计好的卷积神经网络的架构下,对于经折叠的特征数据,无法直接使用相应的卷积层中的权重参数执行卷积运算。因此,需要先将经折叠的特征数据展开成常规的未折叠的特征数据,然后再将展开所获得的未折叠特征数据提供给相应的卷积层,并使用该卷积层的权重参数对未折叠特征数据执行卷积。这意味着消除了使用折叠特征数据所带来的有利之处,再次造成例如高速缓冲存储器和/或乘法器等硬件资源的浪费,并且可能会引入很多无效的运算。
为此,期望能够在一个已经设计好的卷积神经网络的架构下,直接针对折叠特征数据执行卷积运算。
一个折叠特征数据可以是通过在宽度和高度中的一个维度D1上将一个原始特征数据FD的在D1上的每Nx(Nx为大于1的整数)个切片在深度上折叠到一起所获得的结果FD’,其中,FD中的在D1上的第ifx*Nx+jfx个切片的所有Cx个通道的数据对应于FD’的在D1上的第ifx个切片的从第jfx*Cx个通道开始的连续的Cx个通道的数据,其中,ifx为大于或等于0的整数,jfx为大于或等于0且小于Nx的整数,Cx为大于0的整数。
另外,一个折叠特征数据可以是在宽度和高度这两个维度上折叠原始特征数据FD所获得的结果FD”。例如,FD”可以是继续通过在宽度和高度中的另一个维度D2上将前述的FD’的在D2上的每Ny(Ny为大于1的整数)个切片在深度上折叠到一起所获得的结果,其中,FD’中的在D2上的第ify*Ny+jfy个切片的所有Cy个通道的数据对应于FD”的在D2上的第ify个切片的从第jfy*Cy个通道开始的连续的Cy个通道的数据,其中,ify为大于或等于0的整数,jfy为大于或等于0且小于Ny的整数,Cy为大于0的整数。
图1示出与宽度、高度和深度分别为6、5和3的未折叠特征数据FD相对应的宽度折叠特征数据的示例FD’,其中,FD’的宽度、高度和深度分别为3、5和6,在宽度上折叠的拼接数量Nx=2。
图2示出与图1中的FD相对应的在宽度和高度上折叠的折叠数据的示例FD”,其中,FD”是针对FD在FD’的基础上继续在高度上折叠所获得的结果,FD”的宽度、高度和深度分别为3、3和12,在高度上折叠的拼接数量Ny=2。
在图1和图2中,每个小立方块表示特征数据中的一个数据值(例如,RGB图像中的一个颜色的像素值)。在每个小立方块的正面标记有“x,y”形式的宽度和高度两个维度上的坐标值,并且在侧面标记有该小立方块所代表的数据值在相应的特征数据中的通道号。例如,图1中的FD中的在正面标记有“1,1”的小立方块表示该小立方块位于FD中的从宽度和高度这两个维度上看的第1行第1列。另外,在该小立方块的侧面标记有“1”,这表示,该小立方块位于FD中的从深度(或通道)这个维度看的第1排。所有的这样的小立方块构成未折叠特征数据FD,并且FD包含6个宽度切片,即,FD中的第1列的所有小立方块(y=1)、FD中的第2列的所有小立方块(y=2)、FD中的第3列的所有小立方块(y=3)、FD中的第4列的所有小立方块(y=4)、FD中的第5列的所有小立方块(y=5)以及FD中的第6列的所有小立方块(y=6)。
另外,为了表示折叠特征数据中的各个数据与未折叠特征数据中的各个数据的对应关系,在图1和图2中,对于FD’和FD”中的各个小立方块的通道没有重新编号。
如图2所示,由于FD’的高度切片的总数量不是Ny的整数倍,所以在FD”中的第三行的高度切片中还包括用于使FD”中的各个切片在深度上对齐的零值数据(在图2中用虚线框的A表示)。
应当理解,图1和图2仅是示例。在另外的示例中,折叠特征数据可以是针对一个常规特征数据在高度上折叠的结果,或者可以是先在高度上折叠然后在宽度上折叠的结果,并且可以包括用于使折叠结果的各个切片在深度上对齐的零值数据。
对于一个折叠特征数据,至少用以生成该折叠特征数据的折叠方式(包括与D1上的折叠相关联的Nx值和/或与D1上的折叠相关联的Ny值)可以是事先知道的。另外,用于使折叠结果的各个切片在深度上对齐的零值数据的数量也是可以事先知道的。
另外,在上下文清楚的情况下,在下文中可能不示出特征数据(以及将在下文描述的卷积核)中的每个小立方块,而是使用平面来表示各个切片。例如,如果将宽度、高度和深度三个维度分别对应于三维笛卡尔坐标系中的X轴、Y轴和Z轴,则可以采用垂直于X轴(或平行于Y-Z平面)的平面来表示特征数据(或将在下文描述的卷积核)的宽度切片。
图3示出根据本公开的实施例的针对折叠特征数据执行卷积运算的示例方法300的流程图。
如图3所示,示例方法300可以包括:
步骤S305,对折叠特征数据和卷积层的原始卷积核执行预处理;
步骤S310,折叠经预处理的原始卷积核,以生成与原始卷积核相对应的一个或多个折叠卷积核;以及
步骤S315,使用所生成的一个或多个折叠卷积核对经预处理的折叠特征数据执行卷积运算。
在常规的卷积运算中,即在使用原始卷积核对提供给一个卷积层的原始的未折叠特征数据执行卷积的情况下,原始卷积核在宽度上以步长Sx(大于或等于1)并且在高度上以步长Sy(大于或等于1)在原始的未折叠特征数据上滑动,并对原始的未折叠特征数据中的滑动窗口所对应的部分的数据进行卷积。为了能够获得期望的输出特征数据,在执行卷积之前,可以按照预先指定的填充方式,在原始的未折叠特征数据的在宽度和高度这两个维度上的四周(包括在宽度上的起始边界和结束边界以及在高度上的起始边界和结束边界)填充零切片,所填充的零切片的数量取决于所指定的填充方式,可以为0个、1个或多个。对于已经设计好的一个卷积神经网络,每个卷积层中所使用的权重参数(包括卷积核的数量以及每个卷积核的宽度、高度、深度和所包含的值)以及针对提供给该卷积层的原始的未折叠特征数据的填充方式总是已知的。这些设置可以由该卷积神经网络的设计人员在卷积神经网络的设计时事先指定,也可以通过学习来设计或调整。
在将一个折叠特征数据提供给卷积神经网络的一个卷积层时,为了确保使用根据本公开的实施例的方法仍然能够得到正确的期望结果,可以首先在步骤S305中对折叠特征数据和原始卷积核执行预处理。
在一个实施例中,如果在该卷积层所接收到的折叠特征数据是针对一个原始的未折叠特征数据FD在宽度和高度中的一个维度D1上按照拼接数量Nx进行折叠的结果FD’,则可以根据该卷积层所指定的针对FD的填充方式来确定针对FD要在D1的起始边界处进行填充的填充量P1(P1≥0),并且可以在FD’的在D1的起始边界处填充
Figure BDA0001484776140000071
个的零切片,其中,
Figure BDA0001484776140000072
表示向上取整运算。
对于FD’的在D1的结束边界,可以先确定FD’在D1上的维度值FVx’(例如,在D1为宽度的情况下的宽度值)、该卷积层的权重参数的原始卷积核K的在D1上的维度值KVx和在D1上的步长Sx。如果计算
Figure BDA0001484776140000073
Figure BDA0001484776140000074
所得到的结果不是Sx的整数倍,则可以在FD’的在D1的结束边界处填充P2’个零切片,使得计算
Figure BDA0001484776140000075
所得到的结果为Sx的整数倍。
对于FD’的在D1的结束边界,也可以先计算出预期的折叠卷积核在D1上的维度值
Figure BDA0001484776140000076
其中,(Nx,Sx)表示Nx和Sx的最大公约数。然后,如果Nx≠Sx,则可以确定在FD’的在D1的结束边界的填充量P2’,使得
Figure BDA0001484776140000077
的结果值是Sx的整数倍;否则,可以确定在FD’的在D1的结束边界的填充量P2’,使得P2’<KVx’。
另外,可以按照该卷积层所指定的要在宽度和高度中的另一个维度D2上对FD进行填充的填充方式,对FD’的在D2上的起始边界和/或结束边界处进行填充。
另外,可以在原始卷积核的在D1上的起始边界处填充
Figure BDA0001484776140000078
个零切片。
在另外的实施例中,如果在该卷积层所接收到的折叠特征数据是针对一个原始的未折叠特征数据FD在宽度和高度两个维度折叠的结果FD”,例如,FD”是通过首先针对FD在宽度和高度中的一个维度D1上按照拼接数量Nx进行折叠以获得FD’、然后继续针对FD’在宽度和高度中的另一个维度D2上按照拼接数量Ny进行折叠所获得的结果,则针对FD”,可以在D1上按照在前一个实施例中所描述的针对FD’在D1上的起始边界和结束边界处进行填充的方式进行填充。
然后,可以根据该卷积层所指定的针对FD的填充方式来确定针对FD要在D2的起始边界处进行填充的填充量P2(P2≥0),并且在FD”的在D2的起始边界处填充
Figure BDA0001484776140000081
个的零切片。
对于FD”的在D2的结束边界,可以先确定FD”在D2上的维度值FVy’(例如,在D2为高度的情况下的高度值)、该卷积层的权重参数的原始卷积核K的在D2上的维度值KVy和在D2上的步长Sy。如果计算
Figure BDA0001484776140000082
Figure BDA0001484776140000083
所得到的结果不是Sy的整数倍,则可以在FD”的在D2的结束边界处填充P3’个零切片,使得计算
Figure BDA0001484776140000084
所得到的结果为Sy的整数倍。
对于FD”的在D2的结束边界,也可以先计算出预期的折叠卷积核在D2上的维度值
Figure BDA0001484776140000085
其中,(Ny,Sy)表示Ny和Sy的最大公约数。然后,如果Ny≠Sy,则可以确定在FD”的在D2的结束边界的填充量P3’,使得
Figure BDA0001484776140000086
的结果值是Sy的整数倍;否则,可以确定在FD”的在D2的结束边界的填充量P3’,使得P3’<KVy’。
另外,可以在原始卷积核K的在D1上的起始边界处填充
Figure BDA0001484776140000087
个零切片,并且在D2上的起始边界处填充
Figure BDA0001484776140000088
个零切片。
例如,假设针对图2的示例中的FD所设置的权重参数的卷积核K的宽度、高度和深度分别为3、3和3,在宽度和高度上的卷积的步长均为1,对于FD所指定的填充方式为在左侧和右侧各填充1列(即,各填充1个零切片,而在上侧和下侧不用填充,则在步骤S305中,如图4所示,对于图3中的FD”,可以在FD”的左侧填充
Figure BDA0001484776140000089
个零切片FP,在FD”的右侧填充
Figure BDA00014847761400000810
个零切片FP,从而生成宽度为5的经预处理的折叠特征数据FD”’,并且对于原始卷积核K,可以在K的左侧填充
Figure BDA00014847761400000811
Figure BDA00014847761400000812
个零切片KP,从而生成宽度为4的经预处理的卷积核K’。
虽然图4的示例中仅示出一个原始卷积核,但是应当意识到,一个卷积层的权重参数也可以具有多个卷积核,在这样的情况下,可以根据本公开的实施例的方法对该权重参数的每个卷积核进行处理。
在对折叠特征数据和原始卷积核执行预处理之后,示例方法300可以继续到步骤S310,以对经预处理的原始卷积核进行折叠。
在步骤S310中,可以通过在经预处理的卷积核K’的在D1上的起始边界处分别填充kx×Sx个零切片,来生成与原始卷积核K或经预处理的卷积核K’相对应的一个或多个变换卷积核K’[kx],其中,Sx为原始卷积核K在D1上的步长,kx为大于或等于0的整数。例如,可以通过分别0个零切片、Sx个零切片和2×Sx个零切片来生成与原始卷积核K的3个变换卷积核。
可以设置kx的最大值,以控制变换卷积核的数量。例如,可以使kx<Ex,其中,可以将Ex确定为Sx和Nx的最小公倍数除以Sx所得到的结果值,或者Nx除以Nx和Sx的最大公约数所得到的结果值,或者在Sx=1或者Sx与Nx互质的情况下,可以Ex确定为等于Nx。由此,可以生成与K或K’相对应的Ex个变换卷积核K’[kx]。
然后,可以分别针对每个变换卷积核K’[kx],以将D1上的每Nx个的连续的切片在深度上拼接到一起的方式,在D1上对每个K’[kx]进行折叠,以针对每个变换卷积核K’[kx]生成相应的折叠卷积核K”[kx],使得每个K”[kx]中的在D1上的第ikx×Nx+jkx个切片的所有Cx个通道的数据分别对应于K’[kx]的在D1上的第ikx个切片的从第jkx×Cx个通道开始的连续的Cx个通道的数据,其中,ikx为大于或等于0的整数,jkx为大于或等于0且小于Nx的整数。
所生成的变换卷积核K’[kx]可能在D1上具有不同的维度值(例如,在D1为宽度的情况下的宽度值),或者可能存在一个或多个变换卷积核K’[kx],其在D1上的维度值不是Nx的整数倍,使得对应的K”[kx]的切片在深度上不对齐。
针对这样的情况,可以根据Ex、Sx、Nx和经预处理的卷积核K’在D1上的维度值Vx来确定每个变换卷积核K’[kx]在D1上的期望维度值EVx。例如,可以根据等式
Figure BDA0001484776140000091
来确定每个变换卷积核K’[kx]在D1上的期望维度值EVx。如果变换卷积核K’[kx]在D1上的维度值小于EVx,则可以通过在变换卷积核K’[kx]的在D1上的结束边界处附加零切片来调整的K’[kx],使得调整后的变换卷积核K’[kx]在D1上的维度值等于EVx,然后可以在D1上对调整后的变换卷积核K’[kx]进行折叠,以生成相应的折叠卷积核K”[kx]。
也可以直接利用硬件(例如,支持多通道的运算器或存储器)的特性或处理能力。例如,在硬件可以具有通道对齐的能力的情况下,未被实际数据占据的通道可以被硬件自动地视为具有零值。在这样的情况下,各个折叠卷积核中的每个切片的通道将由硬件自动地对齐。例如,如果硬件同时支持32个通道,则各个折叠卷积核的通道数量可以由硬件自动地对齐为32个通道。
在一个实施例中,如果在该卷积层所接收到的折叠特征数据只是针对一个原始的未折叠特征数据FD在D1上进行折叠所得到的结果,则在步骤S310中,可以将所获得的折叠卷积核K”[kx]作为最终的折叠卷积核。
在另外的实施例中,如果在该卷积层所接收到的折叠特征数据是通过对一个原始的未折叠特征数据FD在D1上按照拼接数量Nx进行折叠以获得FD’、然后针对FD’继续在D2上按照拼接数量Ny进行折叠所获得的结果FD”,则在步骤S310中,还可以继续在D2上按照拼接数量Ny折叠每个折叠卷积核K”[kx]。在D2上按照Ny折叠K”[kx]的过程与在D1上按照Nx折叠经预处理的卷积核K’的过程是相似的。
例如,可以通过在K”[kx]的在D2上的起始边界处分别填充ky×Sy个零切片,来生成与K”[kx]的一个或多个变换卷积核K”[kx,ky],其中,Sy为原始卷积核K在D2上的步长,ky为大于或等于0的整数。同样,可以设置ky的最大值,以控制变换卷积核的数量。例如,可以使ky<Ey,其中,可以将Ey确定为Sy和Ny的最小公倍数除以Sy所得到的结果值,或者Ny除以Ny和Sy的最大公约数所得到的结果值,或者在Sy=1或者Sy与Ny互质的情况下,可以Ey确定为等于Ny。由此,可以生成与K”[kx]相对应的Ey个变换卷积核K”[kx,ky],或者与K或K’相对应的Ex×Ey个变换卷积核K”[kx,ky]。
然后,可以分别针对每个变换卷积核K”[kx,ky],以将D2上的每Ny个的连续的切片在深度上拼接到一起的方式,在D2上对每个K”[kx,ky]进行折叠,以针对每个变换卷积核K”[kx,ky]生成相应的折叠卷积核K”’[kx,ky],使得每个K”’[kx,ky]中的在D2上的第iky×Ny+jky个切片的所有Cy个通道的数据分别对应于K”[kx,ky]的在D2上的第iky个切片的从第jky×Cy个通道开始的连续的Cy个通道的数据,其中,iky为大于或等于0的整数,jky为大于或等于0且小于Ny的整数。
同样,也可以根据Ey、Sy、Ny以及K’在D2上的维度值Vy来确定每个变换卷积核K”[kx,ky]在D2上的期望维度值EVy。例如,可以根据等式
Figure BDA0001484776140000101
来确定每个变换卷积核K”[kx,ky]在D2上的期望维度值EVy。如果变换卷积核K”[kx,ky]在D2上的维度值小于EVy,则可以通过在变换卷积核K”[kx,ky]的在D2上的结束边界处附加零切片来调整的K”[kx,ky],使得调整后的变换卷积核K”[kx,ky]在D2上的维度值等于EVy,然后可以在D2上对调整后的变换卷积核K”[kx,ky]进行折叠,以生成相应的折叠卷积核K”’[kx,ky]。
然后,可以将所获得的Ex×Ey个折叠卷积核K”’[kx,ky]作为最终的折叠卷积核。
图5示出针对图2中的FD”,对图4中的包含4个宽度切片的卷积核K’在宽度上折叠的示例。如图5所示,由于Nx=2并且Sx=1,所以可以确定与K’相对应的变换卷积核的数量为2。然后,通过分别在K’的左侧和右侧填充0个和2个零切片KA(变换1)来获得调整后的变换卷积核K’[0],并且通过分别在K’的左侧和右侧填充1个零切片KA(变换2)来获得调整后的变换卷积核K’[1],其中,调整后的变换卷积核K’[0]和K’[1]的宽度均为
Figure BDA0001484776140000112
Figure BDA0001484776140000113
然后,对于K’[0],可以通过将KS1拼接到KP的后面,将KS3拼接到KS2的后面,并且将KA拼接到KA的后面,来生成折叠卷积核K”[0];对于K’[1],可以通过将KP拼接到KA的后面,将KS2拼接到KS1的后面,并且将KA拼接到KS3的后面,来生成折叠卷积核K”[1]。K”[0]和K”[1]中的每一个的宽度、高度和深度分别为3、3和6。
然后,可以继续对K”[0]和K”[1]中的每一个在高度上进行折叠。如图6所示,对于K”[0],由于Ny=2并且Sy=1,所以可以确定与K”[0]相对应的变换卷积核的数量为2。然后,可以通过分别在K”[0]的上侧和上侧填充0个和1个零切片KA’来获得调整后的变换卷积核K”[0,0],并且通过在K”[0]的上侧填充1个零切片KA’来获得调整后的变换卷积核K”[0,1]。类似地,针对K”[1],可以获得变换卷积核K”[1,1]和K”[1,1]。K”[0,0]、K”[0,1]、K”[1,0]和K”[1,1]中的每一个的高度为
Figure BDA0001484776140000111
然后,针对变换卷积核K”[0,0],可以通过将K”[0,0]的将KS2’拼接到KS1’的后面,并且将KA’拼接到KS3’的后面,来生成对应的折叠卷积核K”’[0,0]。类似地,可以分别针对变换卷积核K”[0,1]、K”[1,0]和K”[1,1]来生成对应的折叠卷积核K”’[0,1]、K”’[1,0]和K”’[1,1]。折叠卷积核K”’[0,1]、K”’[1,0]和K”’[1,1]中的每一个的宽度、高度和深度分别为3、2和12。
然后,示例方法300继续到步骤S315,以使用在步骤S310中所获得的一个或多个折叠卷积核对在步骤S305中所获得的经预处理的折叠特征数据执行卷积运算。
如果如果在该卷积层所接收到的折叠特征数据只是针对一个原始的未折叠特征数据FD在D1上进行折叠所得到的结果FD’,则在步骤S315中,可以使用在步骤S310中所获得的Ex个折叠卷积核K”[kx],对在步骤S305中所获得的经预处理的折叠特征数据执行卷积运算。在这样的情况下,如果原始卷积核K在D1上的步长Sx的值等于Nx,则每个折叠卷积核K”[kx]在D1上的步长为1;否则,每个折叠卷积核K”[kx]在D1上的步长为Sx。另外,每个折叠卷积核K”[kx]在宽度和高度中的另一个维度D2上的步长为原始卷积核K在D2上的步长Sy
如果在该卷积层所接收到的折叠特征数据是通过对一个原始的未折叠特征数据FD在D1上按照拼接数量Nx进行折叠以获得FD’、然后针对FD’继续在D2上按照拼接数量Ny进行折叠所获得的结果FD”,则在步骤S315中,可以使用在步骤S310中所获得的Ex×Ey个折叠卷积核K”’[kx,ky],对在步骤S305中所获得的经预处理的折叠特征数据执行卷积运算。在这样的情况下,如果原始卷积核K在D1上的步长Sx的值等于Nx,则每个折叠卷积核K”’[kx,ky]在D1上的步长为1;否则,每个折叠卷积核K”’[kx,ky]在D1上的步长为Sx。另外,如果原始卷积核K在D2上的步长Sy的值等于Ny,则每个折叠卷积核K”’[kx,ky]在D2上的步长为1;否则,每个折叠卷积核K”’[kx,ky]在D2上的步长为Sy
在一个实施例中,在步骤S315中,可以在使用所有的折叠卷积核对折叠特征数据的同一部分进行卷积之后,在D1或D2上按照折叠卷积核在D1上的步长或在D2上的步长移动所有的折叠卷积核,以对折叠特征数据的另一部分执行卷积。在对折叠特征数据的所有部分执行完卷积之后,可以获得最终的输出特征数据。
图7示出这种执行卷积的方式的一个示例。在图7的示例中,使用图6中的折叠卷积核K”’[0,0]、K”’[0,1]、K”’[1,0]和K”’[1,1]对图4中的折叠特征数据FD”’执行卷积运算。
如图7所示,首先针对FD”’的第1行和第2行中包含(1,1)、(1,2)、(1,3)、(2,1)、(2,2)和(2,3)的部分,分别使用四个折叠卷积核K”’[0,0]、K”’[0,1]、K”’[1,0]和K”’[1,1]执行卷积,从而分别获得输出特征数据FDO中的包括(1,1)、(2,1)、(1,2)和(2,2)的一部分数据。然后,在宽度上按照步长1(即原始卷积核K在宽度上的步长)移动四个折叠卷积核K”’[0,0]、K”’[0,1]、K”’[1,0]和K”’[1,1],以对FD”’的第1行和第2行中包含(1,2)、(1,3)、(1,4)、(2,2)、(2,3)和(2,4)的部分执行卷积,从而分别获得输出特征数据FDO中的包括(1,3)、(2,3)、(1,4)和(2,4)的一部分数据。然后,继续在宽度上按照步长1(即原始卷积核K在宽度上的步长)移动四个折叠卷积核K”’[0,0]、K”’[0,1]、K”’[1,0]和K”’[1,1],以对FD”’的第1行和第2行中包含(1,3)、(1,4)、(1,5)、(2,3)、(2,4)和(2,5)的部分执行卷积,从而分别获得输出特征数据FDO中的包括(1,5)、(2,5)、(1,6)和(2,5)的一部分数据。
在完成对FD”’的第1行和第2行的卷积之后,在高度上按照步长1(即原始卷积核K在高度上的步长)移动四个折叠卷积核K”’[0,0]、K”’[0,1]、K”’[1,0]和K”’[1,1],以便开始对FD”’的第2行和第3行执行卷积。针对FD”’的第2行和第3行执行卷积的过程与使用四个折叠卷积核K”’[0,0]、K”’[0,1]、K”’[1,0]和K”’[1,1]对FD”’的第1行和第2行执行卷积的过程相似,在此不再赘述。
在使用四个折叠卷积核K”’[0,0]、K”’[0,1]、K”’[1,0]和K”’[1,1]对FD”’执行完卷积之后,获得最终的输出特征数据FDO。对于输出特征数据FDO的最后一行的数据(4,1)、(4,2)、(4,3)、(4,4)、(4,5)和(4,6),可以根据情况保留或舍弃。例如,针对如图2所示的原始的未折叠特征数据FD,如果期望使用如图4所示的原始卷积核K执行卷积后获得具有3行的输出特征数据(相应地,在高度上对FD不做填充),则可以舍弃输出特征数据FDO的最后一行的数据(4,1)、(4,2)、(4,3)、(4,4)、(4,5)和(4,6)。
在卷积层的权重参数具有多个卷积核的情况下,图7的示例中的输出特征数据FDO可以对应于最终的输出特征数据的一个通道上的数据。
在另外的实施例中,也可以分别使用每个折叠卷积核对整个折叠特征数据进行卷积。在这样的情况下,可以不必修改用于硬件的卷积指令。然而,如果一个原始卷积核对应于多个折叠卷积核,则使用每个折叠卷积核所获得的部分结果将分布在不同的通道上。在将输出特征数据提供给卷积神经网络的下一层或者作为整个卷积神经网络的最终输出之前,可以重新组织或展开分布在不同的通道上的部分结果,以获得在一个通道上的完整的输出结果。
图8示出使用这种方式执行卷积的一个示例。与图7的示例不同,在图8的示例中,分别使用四个折叠卷积核K”’[0,0]、K”’[0,1]、K”’[1,0]和K”’[1,1]中的每一个对整个FD”’执行卷积。如图8所示,使用每个折叠卷积核只能获得输出特征数据FDO的部分数据。例如,在使用K”’[0,0]对FD”’执行卷积之后,只能获得输出特征数据FDO中的包括(1,1)、(1,3)、(1,5)、(3,1)、(3,3)和(3,5)的一部分数据。可以将使用各个折叠卷积核所获得的部分数据组织在一起,以获得完整的输出特征数据FDO。同样,在卷积层的权重参数具有多个卷积核的情况下,图8的示例中的输出特征数据FDO可以对应于最终的输出特征数据的一个通道上的数据。
通过示例方法300可以直接对提供给卷积层的折叠特征数据执行卷积运算,而不必先将该折叠特征数据展开成常规的未折叠特征数据,从而有利于提高通道利用率、降低缓存占用量,并且可以提高运算效率。
例如,假设处理器(例如,用于卷积运算的乘法器阵列)能够一次性处理32个通道的数据并且权重参数的卷积核的宽度和高度分别为5和5,则对于一个与720×1280且通道数为3的RGB图像相对应的Nx=2的宽度折叠图像,在不考虑展开折叠图像所带来的额外运算理,使用根据本公开的方法直接对宽度折叠图像执行卷积运算的运算量只有针对展开图像使用常规方法执行卷积运算的运算量的约60%,有效运算的比率为针对展开图像使用常规方法执行卷积运算时的大约2倍。对于一个与720×1280且通道数为3的RGB图像相对应的Nx=2且Ny=2的宽度加高度折叠图像,在不考虑展开折叠图像所带来的额外运算理,使用根据本公开的方法直接对折叠图像执行卷积运算的运算量只有针对展开图像使用常规方法执行卷积运算的运算量的约36%,有效运算的比率为针对展开图像使用常规方法执行卷积运算时的大约4倍。
图9和图10示出根据本公开的实施例的针对折叠特征数据执行卷积运算的示例装置的框图。
如图9所示,示例装置900可以包括一个或多个处理器910。处理器910可以是具有数据处理能力和/或指令执行能力的任何形式的处理单元,例如通用CPU、GPU或者专用的神经网络处理器或加速器等。例如,处理器910可以执行根据本申请的实施例的针对折叠特征数据执行卷积运算的方法。另外,处理器910还可以控制装置900中的其他部件,以执行所期望的功能。
处理器910可以通过总线系统和/或其他形式的连接机构(未示出)与存储器920以及I/O接口930相连。
存储器920可以包括各种形式的计算机可读写存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪速存储器等。可读写存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。例如,在配合神经网络专用处理器使用的情况下,存储器920也可以是承载专用处理器的芯片上的RAM。存储器920可以包括用于指示装置900执行根据本申请的实施例的针对折叠特征数据执行卷积运算的方法的程序指令。
I/O接口930可以用于向处理器910提供参数或数据并且输出经过处理器910处理的结果数据。
如图10所示,示例装置1000可以包括预处理器1010、折叠器1020和运算器1030。
预处理器1010可以被配置为对提供给卷积层的折叠特征数据和原始卷积核执行预处理。在一个实施例中,预处理器1010可以被配置为执行例如图3所示的示例方法300的步骤S305。
折叠器1020可以被配置为根据折叠特征数据的折叠方式,在宽度和高度中的至少一个维度上折叠经预处理的原始卷积核,以生成与原始卷积核相对应的一个或多个折叠卷积核。在一个实施例中,第二折叠器1020可以被配置为执行例如图3所示的示例方法300的步骤S310。
运算器1030可以被配置为使用所生成的一个或多个折叠卷积核对经预处理的折叠特征数据执行卷积运算。在一个实施例中,运算器1030可以被配置为执行例如图3所示的示例方法300的步骤S315。
应当理解,图9和图10所示的装置900和1000仅是示例性的,而非限制性的。根据需要,根据本申请的实施例的装置可以具有其他部件和/或结构。
除非上下文清楚地另有要求,否则贯穿说明书和权利要求书,措词“包括”、“包含”等应当以与排他性或穷尽性的意义相反的包括性的意义来解释,也就是说,应当以“包括但不限于”的意义来解释。另外,措词“在本文中”、“上文”、“下文”以及相似含义的措词在本申请中使用时应当指作为整体的本申请,而不是本申请的任何具体部分。在上下文允许时,在使用单数或复数的以上描述中的措词也可以分别包括复数或单数。关于在提及两个或多个项目的列表时的措词“或”,该措词涵盖该措词的以下解释中的全部:列表中的任何项目,列表中的所有项目,以及列表中的项目的任何组合。
本发明实施例的以上详细描述不打算是穷尽性的或者将本发明局限于上文所公开的确切形式。尽管以上出于说明的目的而描述了本发明的具体实施例和示例,但是如本领域技术人员将认识到的那样,在本发明范围内可能有各种等效的修改。例如,尽管处理或块以给定的次序呈现,但是替代的实施例可以以不同的次序执行具有这些步骤的处理或者以不同的次序采用具有这些块的系统,并且一些处理或块可以被删除、移动、添加、细分、组合和/或修改。这些处理或块中的每个可以以各种不同的方式来实现。另外,虽然处理或块有时被示为串行执行,但是替代地,这些处理或块也可以并行执行,或者可以在不同时间执行。
可以将在本文中所提供的本发明的教导应用于其他系统,而不必是上述的系统。可以组合上述的各个实施例的元件和动作,以提供另外的实施例。
虽然已经描述了本发明的一些实施例,但是这些实施例仅作为示例而呈现,而不打算限制本申请的范围。实际上,在本文中所描述的新颖方法和系统可以以多种其他形式来实施。另外,可以在不脱离本申请的范围的情况下,在本文中所描述的方法和系统的形式上做出各种省略、替换和改变。

Claims (18)

1.一种针对折叠特征数据执行卷积运算的方法,包括:
对提供给所述卷积层的折叠特征数据和原始卷积核执行预处理;
根据所述折叠特征数据的折叠方式,在宽度和高度中的至少一个维度上折叠经预处理的原始卷积核,以生成与所述原始卷积核相对应的一个或多个折叠卷积核,其中在所述宽度和高度中的至少一个维度上的折叠受到执行卷积运算的硬件所支持的通道数量的限定;以及
使用所述一个或多个折叠卷积核对经预处理的折叠特征数据执行所述卷积运算。
2.根据权利要求1所述的方法,其中,所述折叠特征数据与在第一维度上未折叠的第一特征数据相对应,所述第一特征数据中的在所述第一维度上的第ifx*Nx+jfx个切片的所有Cx个通道的数据对应于所述折叠特征数据的在所述第一维度上的第ifx个切片的从第jfx*Cx个通道开始的连续的Cx个通道的数据,所述第一维度是宽度和高度中的一个,ifx为大于或等于0的整数,Nx为大于1的整数,jfx为大于或等于0且小于Nx的整数,Cx为大于0的整数。
3.根据权利要求2所述的方法,其中,所述预处理包括:
根据所述卷积层所指定的填充方式来确定第一填充量P1,所述第一填充量P1大于或等于0并且表示所述填充方式所要求的在第一特征数据的在所述第一维度上的起始边界处的填充量;
在所述折叠特征数据的在所述第一维度上的起始边界处填充
Figure FDA0002362306110000011
个的零切片,
Figure FDA0002362306110000012
表示向上取整运算;以及
在所述原始卷积核的在所述第一维度上的起始边界处填充
Figure FDA0002362306110000013
个零切片。
4.根据权利要求2所述的方法,其中,执行所述卷积运算包括:
在所述原始卷积核的在所述第一维度上的第一步长不等于Nx的情况下,在使用与所述原始卷积核相对应的所有折叠卷积核对经预处理的折叠特征数据的同一部分进行卷积之后,在所述第一维度上按照所述第一步长移动与所述原始卷积核相对应的所有折叠卷积核。
5.根据权利要求2所述的方法,其中,执行所述卷积运算包括:
在所述原始卷积核的在所述第一维度上的第一步长不等于Nx并且分别使用与所述原始卷积核相对应的每个折叠卷积核对整个经预处理的折叠特征数据进行卷积的情况下,每个折叠卷积核的在所述第一维度上的步长等于所述第一步长。
6.根据权利要求2所述的方法,其中,执行所述卷积运算包括:
在所述原始卷积核的在所述第一维度上的第一步长等于Nx的情况下,每个折叠卷积核的在所述第一维度上的步长为1。
7.根据权利要求2至6中的任一项所述的方法,其中,在所述至少一个维度上折叠经预处理的原始卷积核包括:
在经预处理的原始卷积核的在所述第一维度上的起始边界处分别填充kx*Sx个零切片,以生成Ex个第一变换卷积核,Sx为所述原始卷积核的在所述第一维度上的第一步长,Ex大于或等于1并且取决于Nx和Sx的值,kx为大于等于0且小于Ex的整数;以及
以将所述第一维度上的每Nx个的连续的切片在深度上拼接到一起的方式,在所述第一维度上对每个第一变换卷积核进行的第一折叠,以针对每个第一变换卷积核生成相应的第一折叠卷积核。
8.根据权利要求7所述的方法,其中,每个第一变换卷积核中的在所述第一维度上的第ikx*Nx+jkx个切片的所有Cx个通道的数据分别对应于相应的第一折叠卷积核的在所述第一维度上的第ikx个切片的从第jkx*Cx个通道开始的连续的Cx个通道的数据,ikx为大于或等于0的整数,jkx为大于或等于0且小于Nx的整数。
9.根据权利要求7所述的方法,其中,所述第一特征数据与在第二维度上未折叠的第二特征数据相对应,所述第二特征数据中的在所述第二维度上的第ify*Ny+jfy个切片的所有Cy个通道的数据对应于所述第一特征数据的在所述第二维度上的第ify个切片的从第jfy*Cy个通道开始的连续的Cy个通道的数据,所述第一维度是宽度和高度中的另一个,ify为大于或等于0的整数,Ny为大于1的整数,jfy为大于或等于0且小于Ny的整数,Cy为大于0的整数。
10.根据权利要求9所述的方法,其中,所述预处理还包括:
根据所述卷积层所指定的填充方式来确定第二填充量P2,所述第二填充量P2大于或等于0并且表示所述填充方式所要求的在所述第二特征数据的在所述第二维度上的起始边界处的填充量;以及
在所述折叠特征数据的在所述第二维度上的起始边界处填充
Figure FDA0002362306110000031
个的零切片,
Figure FDA0002362306110000032
表示向上取整运算;以及
在所述原始卷积核的在所述第二维度上的起始边界处填充
Figure FDA0002362306110000033
个零切片。
11.根据权利要求9所述的方法,在所述至少一个维度上折叠经预处理的原始卷积核还包括:
在每个第一折叠卷积核的在所述第二维度上的起始边界处分别填充ky*Sy个零切片,以分别针对每个第一折叠卷积核生成Ey个第二变换卷积核,Sy为所述原始卷积核的在所述第二维度上的第二步长,Ey大于或等于1并且取决于Ny和Sy的值,ky为大于等于0且小于Ey的整数;以及
以将所述第二维度上的每Ny个的连续的切片在深度上拼接到一起的方式,在所述第二维度上对每个第二变换卷积核进行的第二折叠,以针对每个第二变换卷积核生成相应的第二折叠卷积核。
12.根据权利要求11所述的方法,其中,每个第二变换卷积核中的在所述第二维度上的第iky*Ny+jky个切片的所有Cy个通道的数据分别对应于相应的第二折叠卷积核的在所述第二维度上的第iky个切片的从第jky*Cy个通道开始的连续的Cy个通道的数据,iky为大于或等于0的整数,jky为大于或等于0且小于Ny的整数。
13.根据权利要求9所述的方法,其中,执行所述卷积运算还包括:
在所述原始卷积核的在所述第二维度上的第二步长不等于Ny的情况下,在使用与所述原始卷积核相对应的所有折叠卷积核对经预处理的折叠特征数据的同一部分进行卷积之后,在所述第二维度上按照所述第二步长移动与所述原始卷积核相对应的所有折叠卷积核。
14.根据权利要求9所述的方法,其中,执行所述卷积运算还包括:
在所述原始卷积核的在所述第二维度上的第二步长不等于Ny并且分别使用与所述原始卷积核相对应的每个折叠卷积核对整个经预处理的折叠特征数据进行卷积的情况下,每个折叠卷积核的在所述第二维度上的步长等于所述第二步长。
15.根据权利要求9所述的方法,其中,执行所述卷积运算包括:
在所述原始卷积核的在所述第二维度上的第二步长等于Ny的情况下,每个折叠卷积核的在所述第二维度上的步长为1。
16.一种针对折叠特征数据执行卷积运算的装置,包括:
一个或多个处理器,被配置为执行根据权利要求1至15中的任一项所述的方法。
17.一种针对折叠特征数据执行卷积运算的装置,包括:
预处理器,被配置为对提供给所述卷积层的折叠特征数据和原始卷积核执行预处理;
折叠器,被配置为根据所述折叠特征数据的折叠方式,在宽度和高度中的至少一个维度上折叠经预处理的原始卷积核,以生成与所述原始卷积核相对应的一个或多个折叠卷积核,其中在所述宽度和高度中的至少一个维度上的折叠受到执行卷积运算的硬件所支持的通道数量的限定;以及
运算器,被配置为使用所述一个或多个折叠卷积核对经预处理的折叠特征数据执行所述卷积运算。
18.一种非临时性存储介质,在其上存储有程序指令,所述程序指令在被计算装置执行时执行根据权利要求1至15中的任一项所述的方法。
CN201711212000.8A 2017-11-28 2017-11-28 针对折叠特征数据执行卷积运算的方法和装置 Active CN107832842B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201711212000.8A CN107832842B (zh) 2017-11-28 2017-11-28 针对折叠特征数据执行卷积运算的方法和装置
JP2018221116A JP6713036B2 (ja) 2017-11-28 2018-11-27 折り畳まれた特徴データに対して畳み込み演算を実行するための方法および装置
KR1020180149478A KR102129895B1 (ko) 2017-11-28 2018-11-28 폴드된 특징 데이터에 대한 컨볼루션 연산을 수행하기 위한 방법 및 장치
US16/202,991 US11500958B2 (en) 2017-11-28 2018-11-28 Method and apparatus for performing convolution operation on folded feature data
EP18208803.9A EP3489864A1 (en) 2017-11-28 2018-11-28 Method and apparatus for performing convolution operation on folded feature data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711212000.8A CN107832842B (zh) 2017-11-28 2017-11-28 针对折叠特征数据执行卷积运算的方法和装置

Publications (2)

Publication Number Publication Date
CN107832842A CN107832842A (zh) 2018-03-23
CN107832842B true CN107832842B (zh) 2020-05-22

Family

ID=61646178

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711212000.8A Active CN107832842B (zh) 2017-11-28 2017-11-28 针对折叠特征数据执行卷积运算的方法和装置

Country Status (5)

Country Link
US (1) US11500958B2 (zh)
EP (1) EP3489864A1 (zh)
JP (1) JP6713036B2 (zh)
KR (1) KR102129895B1 (zh)
CN (1) CN107832842B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109190758B (zh) * 2018-09-04 2021-06-15 地平线(上海)人工智能技术有限公司 用于展开卷积神经网络的张量数据的方法和装置
KR102637733B1 (ko) * 2018-10-31 2024-02-19 삼성전자주식회사 뉴럴 네트워크 프로세서 및 그것의 컨볼루션 연산 방법
CN111723917B (zh) * 2019-03-21 2022-11-01 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
CN111832585B (zh) * 2019-04-16 2023-04-18 杭州海康威视数字技术股份有限公司 图像处理的方法和装置
CN110188773B (zh) * 2019-05-24 2021-06-22 北京迈格威科技有限公司 图像处理方法及装置
CN110458286B (zh) * 2019-08-14 2022-02-08 中科寒武纪科技股份有限公司 数据处理方法、装置、计算机设备和存储介质
US11699081B2 (en) * 2019-12-20 2023-07-11 Meta Platforms, Inc. Systems and methods for reducing data movement during convolution operations in artificial neural networks
WO2022143916A1 (zh) * 2020-12-31 2022-07-07 中科寒武纪科技股份有限公司 执行神经网络模型的数据处理装置、方法及相关产品
CN112668717B (zh) * 2021-01-04 2023-06-02 哈尔滨工业大学 一种面向神经网络模型优化的数据处理方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003060748A2 (en) * 2002-01-10 2003-07-24 Massively Parallel Technologies, Inc. Parallel processing systems and method

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8634604B2 (en) * 2008-05-05 2014-01-21 Sonavation, Inc. Method and system for enhanced image alignment
EP3035204B1 (en) * 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
US10405739B2 (en) * 2015-10-23 2019-09-10 International Business Machines Corporation Automatically detecting eye type in retinal fundus images
JP6609505B2 (ja) * 2016-04-06 2019-11-20 Kddi株式会社 画像合成装置及びプログラム
US10706348B2 (en) * 2016-07-13 2020-07-07 Google Llc Superpixel methods for convolutional neural networks
JP6964969B2 (ja) * 2016-09-30 2021-11-10 キヤノン株式会社 演算処理装置、演算処理方法及びプログラム
CN111133452A (zh) * 2017-05-19 2020-05-08 莫维迪乌斯有限公司 用于提高卷积效率的方法、系统和装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003060748A2 (en) * 2002-01-10 2003-07-24 Massively Parallel Technologies, Inc. Parallel processing systems and method

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
A Streaming Accelerator for Deep Convolutional Neural Networks with Image and Feature Decomposition for Resource-limited System Applications;Yuan Du 等;《arXiv:1709.05116》;20170915;1-5 *
High Performance Implementation of 3D Convolutional Neural Networks on a GPU;Qiang Lan 等;《Computational Intelligence and Neuroscience》;20171108;第2017卷;摘要,正文第3页左栏第2段,右栏第3-4段,第4页右栏第1-2段,第5页左栏第1,4段,右栏第1段,附图1-2 *
Optimizing Memory Efficiency for Convolution Kernels on Kepler GPUs;Xiaoming Chen 等;《2017 54th ACM/EDAC/IEEE Design Automation Conference(DAC)》;20170622;1-6 *
Parallel Multi Channel Convolution using General Matrix Multiplication;Aravind Vasudevan 等;《2017 IEEE 28th International Conference on Application-specific Systems,Architectures and Processors (ASAP)》;20170712;1-6 *

Also Published As

Publication number Publication date
US11500958B2 (en) 2022-11-15
US20190163717A1 (en) 2019-05-30
JP6713036B2 (ja) 2020-06-24
JP2019102082A (ja) 2019-06-24
KR102129895B1 (ko) 2020-07-03
EP3489864A1 (en) 2019-05-29
CN107832842A (zh) 2018-03-23
KR20190062303A (ko) 2019-06-05

Similar Documents

Publication Publication Date Title
CN107729994B (zh) 执行卷积神经网络中的卷积层的运算的方法和装置
CN107832842B (zh) 针对折叠特征数据执行卷积运算的方法和装置
CN107844827B (zh) 执行卷积神经网络中的卷积层的运算的方法和装置
DE102020000810A1 (de) 3D-Objektrekonstruktion unter Nutzung einer fotometrischen Netzdarstellung
US20190156185A1 (en) Method and apparatus for adapting feature data in a convolutional neural network
KR102458243B1 (ko) 얼굴 영상 분석 방법 및 장치
CN109190758B (zh) 用于展开卷积神经网络的张量数据的方法和装置
DE112020004625T5 (de) Transponierte faltung mit systolischem array
DE102018113845A1 (de) Systeme und Verfahren zum Trainieren von neuronalen Netzwerken mit dünnbesetzten Daten
KR102513707B1 (ko) 학습 장치, 추론 장치, 학습 모델 생성 방법 및 추론 방법
DE112017001703T5 (de) Verfahren und Vorrichtung zum effizienteren Ray-Tracing von instanziierter Geometrie
DE102018128699A1 (de) Einstellen einer Winkelabtastrate während eines Renderings unter Verwendung von Blickinformationen
CN110009573A (zh) 模型训练、图像处理方法、装置、电子设备及计算机可读存储介质
Wu et al. A new approach to compute cnns for extremely large images
Mazumdar et al. A hardware-friendly bilateral solver for real-time virtual reality video
DE102021107586A1 (de) Spekulatives training unter verwendung der aktualisierung partieller gradienten
Conde et al. Lens-to-lens bokeh effect transformation. NTIRE 2023 challenge report
CN111738276A (zh) 基于多核卷积神经网络的图像处理方法、装置及设备
DE102014119048A1 (de) Ausführung von Verarbeitungsvorgängen in einer SIMD-Verarbeitungseinheit
KR102455843B1 (ko) 영상 재구성 장치 및 방법
JP2018013462A (ja) 視差情報生成装置、視差情報生成方法、およびプログラム
KR20220014868A (ko) 가우시안 밝기 분포를 이용하여 3d 복셀로부터 2d 투사 영상을 생성하는 방법 및 장치
KR20220129976A (ko) 씬 플로우 추정 방법 및 장치
DE102017103637A1 (de) System, Verfahren und Computerprogrammprodukt zum Erzeugen eines oder mehrerer Werte für einen Signal-Patch unter Verwendung von benachbarten Patches, welche abhängig von einer Distanz aufgesammelt werden, die dynamisch von einer Rauschverteilung des Signal-Patches berechnet wird
Swiggett Image Matting and Applications

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20180817

Address after: 210046 20 A, Xingzhi science and Technology Park, Xingzhi Road, Nanjing economic and Technological Development Zone, Jiangsu

Applicant after: Nanjing horizon Robot Technology Co., Ltd.

Address before: 100080 Beijing Haidian District Zhongguancun Avenue 1 3 3 317

Applicant before: Beijing horizon information technology Co., Ltd.

GR01 Patent grant
GR01 Patent grant