CN113989169A - 一种膨胀卷积加速计算方法及装置 - Google Patents

一种膨胀卷积加速计算方法及装置 Download PDF

Info

Publication number
CN113989169A
CN113989169A CN202010659646.6A CN202010659646A CN113989169A CN 113989169 A CN113989169 A CN 113989169A CN 202010659646 A CN202010659646 A CN 202010659646A CN 113989169 A CN113989169 A CN 113989169A
Authority
CN
China
Prior art keywords
convolution
sub
expansion
dilation
input 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.)
Pending
Application number
CN202010659646.6A
Other languages
English (en)
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.)
Beijing Sisheng Technology Co.,Ltd.
Original Assignee
Canaan Bright Sight 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 Canaan Bright Sight Co Ltd filed Critical Canaan Bright Sight Co Ltd
Priority to CN202010659646.6A priority Critical patent/CN113989169A/zh
Priority to KR1020227031052A priority patent/KR20230081697A/ko
Priority to PCT/CN2020/126195 priority patent/WO2022007265A1/zh
Priority to EP20944528.7A priority patent/EP4181024A4/en
Priority to JP2022580125A priority patent/JP7419574B2/ja
Priority to US18/014,635 priority patent/US20230273829A1/en
Publication of CN113989169A publication Critical patent/CN113989169A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • G06T5/30Erosion or dilatation, e.g. thinning
    • 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
    • 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
    • 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
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/60Analysis of geometric attributes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]

Landscapes

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

Abstract

本发明提供了一种膨胀卷积加速计算方法及装置,其中该方法包括:将R×S的膨胀卷积运算分解为S个R×1的子膨胀卷积运算;针对每个子膨胀卷积运算,将多个权重值并行缓存至计算单元阵列中的多个计算单元;从输入图像数据中确定分别对应于多个权重值的多路输入数据流,将多路输入数据流并行输入多个计算单元;在多个计算单元内部,基于缓存的权重值和输入数据流执行滑窗操作和乘法操作,并在多个计算单元之间执行累加操作,以输出所述子膨胀卷积运算的中间结果;叠加S个R×1的子膨胀卷积运算的中间结果,得到膨胀卷积运算的卷积结果。利用上述方法,以较低复杂度实现加速膨胀卷积运算,不需要单独实现Im2col的功能,降低了复杂度。

Description

一种膨胀卷积加速计算方法及装置
技术领域
本发明属于深度学习领域,具体涉及膨胀卷积加速计算方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
卷积神经网络(Convolutional Neural Networks,简称CNN)是一种深度前馈人工神经网络,已被应用于诸多领域,如图像识别。卷积神经网络在图像数据的处理过程中会进行较为复杂的计算,主要包括卷积计算、批标准化计算、激活计算等。
用CNN进行图像处理时,通常需要经过多次卷积和池化操作增大模型的感受野。池化可以减少图像的尺寸,再使用卷积核可以增大感受野;经过卷积和池化的特征图会比较小,这时可以传到全连接网络进行分类。但是在进行图像分割时,需要针对每个像素点进行预测,因此还要把减小尺寸后的特征图通过上采样的方法(如deconv反卷积)转回原始图像尺寸再进行预测。在这一过程的主要问题:(1)信息丢失,池化操作是不可逆转的,通过对特征图进行上采样还原图像尺寸时丢失信息。(2)无法重构小的物体图像,如果一个物体占4×4的像素,则经过4次池化操作之后,物体的信息就无法重构了。因此,为了避免使用池化等操作扩大感受野,《MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS》中提出了膨胀卷积(dilated convolution)。膨胀卷积运算会在卷积的过程中将卷积核扩张到指定尺寸,并将原卷积核中没有占用的区域用零填充。
现有技术中,为了加速对图像数据进行卷积计算以得到图像处理结果,常用的方法是利用Im2col函数优化卷积运算。在CNN学习训练过程中,通常不会一次处理整张图片,而是先将图片划分为多个小的块(patch),并且每个patch需要经过Im2col处理进行重排,将三维的patch展开成为一维向量,进而可以将卷积操作转换为二维矩阵乘法。
在上述方案中,当计算一次膨胀卷积需要同时访问多行和多列的数据,如图1所示,以尺寸为3*3、膨胀率为2的膨胀卷积为例的话,一次膨胀卷积需要的9个数分布在3行和3列,应当理解,数据读取只有针对连续的数据才能确保数据读取的带宽,如需同时访问到上述9个数需要对内部存储器的排布做特殊设计,例如通过内部存储器切分提高内存访问的并行度。然而,由于NPU通常需要支持不同尺寸的卷积,因此若需要实现针对不同的卷积核的通用性,则需要把内存切分成很多小块才能兼容各种设置,这样一方面会增大内部存储器的面积,另一方面提升了数据访问逻辑的复杂度。
因此,设计出一种具有高通用性、低复杂度的膨胀卷积加速计算方法是当前亟需解决的技术问题。
发明内容
针对上述现有技术的膨胀卷积运算的实现通用性较差且复杂度高的问题。本发明实施例提出了一种膨胀卷积加速计算方法及装置。利用这种方法及装置,能够解决上述问题。
本发明的实施例中提供了以下方案。
第一方面,提供一种膨胀卷积加速计算方法,所述方法包括:将R×S的膨胀卷积运算分解为S个R×1的子膨胀卷积运算,其中所述R为卷积核高度、所述S为卷积核宽度;针对每个R×1的子膨胀卷积运算,将多个权重值并行缓存至计算单元阵列中的多个计算单元;从输入图像数据中确定分别对应于所述多个权重值的多路输入数据流,将所述多路输入数据流并行输入所述多个计算单元;在所述多个计算单元内部,各自基于缓存的权重值和接收的输入数据流执行滑窗操作和乘法操作,并在所述多个计算单元之间执行累加操作,以输出所述子膨胀卷积运算的中间结果;叠加所述S个R×1的子膨胀卷积运算的中间结果,得到所述膨胀卷积运算的卷积结果。
在一种可能的实施方式中,根据所述膨胀卷积运算的膨胀率和卷积步长从输入图像数据中读取所需数据以拼接组成所述每个权重值对应的输入数据流。
在一种可能的实施方式中,根据所述膨胀卷积运算的膨胀率和卷积步长读取所述输入图像数据中的多行数据以拼接组成所述每个权重值对应的输入数据流。
在一种可能的实施方式中,所述滑窗操作的滑动步长根据所述膨胀卷积运算的所述卷积步长确定。
在一种可能的实施方式中,叠加所述S个R×1的子膨胀卷积运算的中间结果,包括:在所述S个R×1的子膨胀卷积运算中实时对所述S个R×1的子膨胀卷积运算的中间结果进行叠加,或者在所述S个R×1的子膨胀卷积运算执行完毕之后再进行多个中间结果的叠加。
第二方面,提供一种膨胀卷积加速计算装置,所述装置包括:逻辑控制单元和计算单元阵列;其中,所述逻辑控制单元被配置为用于:将R×S的膨胀卷积运算分解为S个R×1的子膨胀卷积运算,其中所述R为卷积核高度、所述S为卷积核宽度;针对每个R×1的子膨胀卷积运算,将多个权重值并行缓存至所述计算单元阵列中的多个计算单元;确定分别对应于所述多个权重值的多路输入数据流,将所述多路输入数据流并行输入所述多个计算单元;所述计算单元阵列被配置为用于:在所述多个计算单元内部,各自基于缓存的权重值和接收的输入数据流执行滑窗操作和乘法操作,并在所述多个计算单元之间执行累加操作,以输出所述子膨胀卷积运算的中间结果;叠加所述S个R×1的子膨胀卷积运算的中间结果,得到所述膨胀卷积运算的卷积结果。
在一种可能的实施方式中,所述逻辑控制单元被配置为用于:根据所述膨胀卷积运算的膨胀率和卷积步长从输入图像数据中读取所需数据以拼接组成所述每个权重值对应的输入数据流。
在一种可能的实施方式中,所述逻辑控制单元被配置为用于:根据所述膨胀卷积运算的膨胀率和卷积步长读取所述输入图像数据中的多行数据以拼接组成所述每个权重值对应的输入数据流。
在一种可能的实施方式中,所述滑窗操作的滑动步长根据所述膨胀卷积运算的所述卷积步长确定。
在一种可能的实施方式中,所述计算单元阵列被配置为用于:在所述S个R×1的子膨胀卷积运算中实时对所述S个R×1的子膨胀卷积运算的中间结果进行叠加,或者在所述S个R×1的子膨胀卷积运算执行完毕之后再进行多个中间结果的叠加。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:通过将R×S的膨胀卷积运算分解为S个R×1的子膨胀卷积运算,将分解获得的多个权重值并行缓存在一列计算单元中,由各个计算单元基于缓存的权重值在输入数据流上进行滑窗操作和乘法操作,在计算单元之间进行累加操作,从而实现加速膨胀卷积运算,通过这种方案,不需要单独实现Im2col的功能,降低了复杂度。
应当理解,上述说明仅是本发明技术方案的概述,以便能够更清楚地了解本发明的技术手段,从而可依照说明书的内容予以实施。为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举例说明本发明的具体实施方式。
附图说明
通过阅读下文的示例性实施例的详细描述,本领域普通技术人员将明白本文所述的优点和益处以及其他优点和益处。附图仅用于示出示例性实施例的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的标号表示相同的部件。在附图中:
图1为现有技术中基于Im2col的膨胀卷积运算的示意图;
图2为一种卷积神经网络计算装置的结构示意图;
图3为根据本发明一实施例的膨胀卷积加速计算方法的流程示意图;
图4a为一种膨胀卷积运算的示意图,图4b为图a示出的膨胀卷积运算的另一示意图;
图5为根据本发明一实施例的将R×S的膨胀卷积运算分解为S个R×1的子膨胀卷积运算的示意图;
图6为根据本发明一实施例的将R×S的膨胀卷积运算分解为S个R×1的子膨胀卷积运算的另一示意图;
图7为根据本发明一实施例的利用缓存有权重值的计算单元(PE)进行膨胀卷积的示意图;
图8为根据本发明一实施例的利用缓存有权重值的计算单元(PE)进行滑窗操作的示意图;
图9为根据本发明一实施例的膨胀卷积加速计算装置的结构示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
在本发明中,应理解,诸如“包括”或“具有”等术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不旨在排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在的可能性。
另外还需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
图2示出了一种膨胀卷积加速计算装置的结构示意图20。其包括:计算平台21和外部存储器22,计算平台21至少包括用于执行膨胀卷积运算的计算单元(PE)阵列211和内部存储器212,其中,外部存储器22通常选用低成本的存储介质,通常带宽受限且读写功耗也较高。内部存储器通常选用访问速度较快的存储介质,比如SRAM,其带宽较高,读写代价也较低,但通常成本较高,因此一般容量受限。
图3示出了根据本发明实施例的膨胀卷积加速计算方法300的流程示意图。以下结合图2所示出的膨胀卷积加速计算装置,对图3中膨胀卷积加速计算方法300的各个方面进行详细阐述。
如图3所示,该方法300可以包括:
步骤301:将R×S的膨胀卷积运算分解为S个R×1的子膨胀卷积运算,其中R为卷积核高度、S为卷积核宽度;
步骤302:针对每个R×1的子膨胀卷积运算,将多个权重值并行缓存至计算单元阵列中的多个计算单元;
步骤303:从输入图像数据中确定分别对应于多个权重值的多路输入数据流,将多路输入数据流并行输入多个计算单元;
步骤304:在多个计算单元内部,各自基于缓存的权重值和接收的输入数据流执行滑窗操作和乘法操作,并在多个计算单元之间执行累加操作,以输出子膨胀卷积运算的中间结果;
步骤305:叠加S个R×1的子膨胀卷积运算的中间结果,得到膨胀卷积运算的卷积结果。
图4a和图4b示出膨胀卷积运算的一个示例。其中,如图4a所示,该膨胀卷积运算的输入图像数据是由若干个像素值Dabc组成的矩阵数据,其中,下标a表示通道序号,下标b表示行序号,取值为0,1,…,6;下标c表示列序号,取值0,1,…,6,也即其尺寸为7(列)*7(行)。该输入图像数据可以根据输入神经网络模型的真实图像获得,通常在外部存储器22上逐行逐通道地依次连续存储。该膨胀卷积层的卷积核是由若干个权重值Wedf组成,其中,下标e表示通道序号,下标d表示行序号,取值为0,1,2;下标f表示列序号,取值0,1,2;也即卷积核尺寸为3(列)*3(行),卷积核可以根据若干图像样本数据训练获得,通常在外部存储器22上存储。如图4b所示,膨胀卷积结果是由卷积核对输入图像数据进行膨胀卷积而获得的输出数据,其中,Pxy的下标x表示行序号,取值为0,1,2;下标y表示列序号,取值0,1,2;也即其尺寸为3(列)*3(行)。本实施例中,实现的膨胀卷积运算也即由输入图像数据和权重矩阵映射出膨胀卷积结果的操作,本实施例中以通道0的计算为例进行描述,本领域技术人员理解的是,可以按照通道0的计算逻辑对其他通道进行计算。
以图4a和图4b所示出的膨胀卷积运算为例,对本发明实施例进行详细描述。
假设膨胀卷积运算的膨胀率λ=2、卷积步长s=1。首先,可以将图4a和图4b所示出的3×3的膨胀卷积运算分解为3个3×1的子膨胀卷积运算。例如,如图5所示,将3×3的卷积核拆分为3个3×1的子卷积核:第一子卷积核、第二子卷积核以及第三子卷积核,然后将图4b所示出的膨胀卷积运算拆分为图6所示的三组子膨胀卷积运算。
接下来,针对每个3×1的子膨胀卷积运算,如图7所示,以通道0的卷积计算为例进行描述,首先将3个权重值(W000,W010,W020)并行缓存至计算单元阵列中的3个计算单元。接下来,从输入图像数据中确定分别对应于3个权重值(W000,W010,W020)的3路输入数据流,将3路输入数据流并行输入3个计算单元。
在一些可能的实施方式中,可以根据该膨胀卷积运算的膨胀率λ=2和卷积步长s=1确定输入图像数据中的多行数据,并从多行数据中依次读取所需数据以拼接组成每个权重值对应的输入数据流。例如,输入缓存权重值W000的计算单元的数据流可以为:(D000,D001,D002,D010,D011,D012,D020,D021,D022),也即:(D000,...,D00(W-2λ-1),D010,...,D01(W-2λ-1),D0(H-2λ-1)0,...,D0(H-2λ-1)(W-2λ-1)),其中W为输入图像数据的宽度,H为输入图像数据的高度,W=7,H=7。相应地,可以依次推导出输入缓存有权重值W010和W020的计算单元的数据流。接下来,在3个计算单元内部,各自基于缓存的权重值和接收的输入数据流执行滑窗操作和乘法操作,并在多个计算单元之间执行累加操作,以输出子膨胀卷积运算的中间结果,例如,在计算单元内部,以缓存的权重值为滑动窗口对输入数据流执行滑窗操作,其中在每一次滑窗操作中将窗内数据进行乘法操作以获得乘法结果,在每一次乘法操作之后,对一列计算单元的乘法结果执行累加运算,得到对应于一像素位置的中间结果。
在一种可能的实施方式中,叠加S个R×1的子膨胀卷积运算的中间结果,包括:在所述S个R×1的子膨胀卷积运算中实时对所述S个R×1的子膨胀卷积运算的中间结果进行叠加,或者在所述S个R×1的子膨胀卷积运算执行完毕之后再进行多个中间结果的叠加。例如,在利用计算单元阵列计算得到上述第一中间结果、第二中间结果和第三中间结果之后,将叠加缓存的上述3个3×1的子膨胀卷积运算的中间结果,得到膨胀卷积运算的卷积结果。可选的,还可以在计算单元的计算过程中实时进行叠加,比如在计算出第二中间结果的P00″之后实时累加到第一中间结果的P00′上。可选的,可以根据片内缓存区域的大小确定叠加模式为计算过程中实时进行叠加,或者在计算执行完毕再之后进行多个中间结果的叠加。
在另外一些可能的实施方式中,为了进一步简单化数据读取逻辑,可以根据膨胀卷积运算的膨胀率和卷积步长确定输入图像数据中的多行数据,并将多行数据拼接组成每个权重值对应的输入数据流。例如,比如,当膨胀率λ=2,卷积步长=1,卷积核尺寸为3×3,输入图像数据尺寸为7×7时,可以向缓存有权重值W000的计算单元直接输入该输入图像数据的第1行、第2行和第3行数据的拼接组合,也即(D000,...,D006,D010,...,D016,D020,...,D026),并由计算单元内部控制滑窗操作的滑窗区域,比如可以仅在列序号不超过2的数据流上进行滑窗操作,并跳过列序号大于2的数据。
如图8所示,以上述3×3的膨胀卷积运算为例,基于缓存有权重值W000的计算单元对计算单元阵列的操作进行描述,其中,在时序T1,权重值W000在输入数据流上进行滑动至D000,并基于窗内的权重值和输入数据执行乘加操作:W000×D000;与此同时,其他计算单元(PE)也基于缓存的权重段在其对应的输入数据流上进行同步滑动,以及基于权重值和窗内数据执行乘加操作,比如,权重值W001滑动至D020,权重值W002滑动至D040,依次类推,可以获得每个计算单元(PE)在时序T1处的乘法结果,进而可以将对应于第一子卷积核的一列计算单元(PE)在时序T1处的全部乘法结果相加得到一个输出值P00′。在时序T2,权重值W000根据卷积步长在输入数据流上进行滑动至D001,依次类推,可以得到图6中的另一个输出值P01′,在时序T3得到图6中的另一个输出值P02′。最终可以得到图6中的第一中间结果中的每个值,并将第一中间结果缓存。
应当理解,在涉及第一子卷积核的计算执行完毕之后,将计算单元阵列中的缓存值更新为第二子卷积核的多个权重值,并按照和上述相似的方法获得图6中的第二中间结果中的每个值,依次类推,可以得到对应于每个子膨胀卷积运算的中间结果,将上述多个中间结果对应位置叠加,可以得到膨胀卷积操作的卷积结果。
在另外的实施例中,可以利用多列计算单元(PE)同时并行实现多个卷积核的膨胀卷积运算。进一步地,不同卷积核中处于同一位置的权重值对应于相同的输入数据流,则可以将不同卷积核中处于同一位置的权重值排列在计算单元(PE)阵列的同一行。
在一些可能的实施方式中,在上述步骤304中,该滑窗操作的滑动步长根据膨胀卷积运算的卷积步长确定。例如,在图8所示出的滑窗操作中,滑动步长和卷积步长相同。
本实施例中,通过采用上述方法,无需同时对外部存储器上基于单个存储方向上连续存储的输入图像数据进行频繁的跨行或跨列读取,也无需对内存的排布进行特殊设计,即可实现高通用性、低复杂度的膨胀卷积加速计算方法,此外,也无需在计算平台中额外实现Im2col的功能,节省了硬件资源和运算功耗。
基于相同或类似的技术构思,本发明实施例还提供一种膨胀卷积加速计算装置,其包括:包括:逻辑控制单元91和计算单元(PE)阵列211;其中,
逻辑控制单元被配置为用于:将R×S的膨胀卷积运算分解为S个R×1的子膨胀卷积运算,其中R为卷积核高度、S为卷积核宽度;针对每个R×1的子膨胀卷积运算,将多个权重值并行缓存至计算单元阵列中的多个计算单元;确定分别对应于多个权重值的多路输入数据流,将多路输入数据流并行输入多个计算单元;
计算单元阵列被配置为用于:在多个计算单元内部,各自基于缓存的权重值和接收的输入数据流执行滑窗操作和乘法操作,并在多个计算单元之间执行累加操作,以输出子膨胀卷积运算的中间结果;叠加S个R×1的子膨胀卷积运算的中间结果,得到膨胀卷积运算的卷积结果。
在一些可能的实施方式中,逻辑控制单元91被配置为用于:根据膨胀卷积运算的膨胀率和卷积步长从输入图像数据中读取所需数据以拼接组成每个权重值对应的输入数据流。
在另外一些可能的实施方式中,逻辑控制单元91被配置为用于:根据膨胀卷积运算的膨胀率和卷积步长读取输入图像数据中的多行数据以拼接组成每个权重值对应的输入数据流。
在一些可能的实施方式中,滑窗操作的滑动步长根据膨胀卷积运算的卷积步长确定。
在一种可能的实施方式中,计算单元阵列被配置为用于:在S个R×1的子膨胀卷积运算中实时对S个R×1的子膨胀卷积运算的中间结果进行叠加,或者在S个R×1的子膨胀卷积运算执行完毕之后再进行多个中间结果的叠加。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置而言,由于其基本相似于方法实施例,所以其描述进行了简化,相关之处可参见方法实施例的部分说明即可。
本申请实施例提供的装置与方法是一一对应的,因此,装置也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述装置的有益技术效果。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

Claims (10)

1.一种膨胀卷积加速计算方法,其特征在于,所述方法包括:
将R×S的膨胀卷积运算分解为S个R×1的子膨胀卷积运算,其中所述R为卷积核高度、所述S为卷积核宽度;
针对每个R×1的子膨胀卷积运算,将多个权重值并行缓存至计算单元阵列中的多个计算单元;
从输入图像数据中确定分别对应于所述多个权重值的多路输入数据流,将所述多路输入数据流并行输入所述多个计算单元;
在所述多个计算单元内部,各自基于缓存的权重值和接收的输入数据流执行滑窗操作和乘法操作,并在所述多个计算单元之间执行累加操作,以输出所述子膨胀卷积运算的中间结果;
叠加所述S个R×1的子膨胀卷积运算的中间结果,得到所述膨胀卷积运算的卷积结果。
2.根据权利要求1所述的方法,其特征在于,
根据所述膨胀卷积运算的膨胀率和卷积步长从输入图像数据中读取所需数据以拼接组成所述每个权重值对应的输入数据流。
3.根据权利要求1所述的方法,其特征在于,
根据所述膨胀卷积运算的膨胀率和卷积步长读取所述输入图像数据中的多行数据以拼接组成所述每个权重值对应的输入数据流。
4.根据权利要求1所述的方法,其特征在于,
所述滑窗操作的滑动步长根据所述膨胀卷积运算的所述卷积步长确定。
5.根据权利要求1所述的方法,其特征在于,叠加所述S个R×1的子膨胀卷积运算的中间结果,包括:在所述S个R×1的子膨胀卷积运算中实时对所述S个R×1的子膨胀卷积运算的中间结果进行叠加,或者在所述S个R×1的子膨胀卷积运算执行完毕之后再进行多个中间结果的叠加。
6.一种膨胀卷积加速计算装置,其特征在于,所述装置包括:逻辑控制单元和计算单元阵列;其中,
所述逻辑控制单元被配置为用于:将R×S的膨胀卷积运算分解为S个R×1的子膨胀卷积运算,其中所述R为卷积核高度、所述S为卷积核宽度;针对每个R×1的子膨胀卷积运算,将多个权重值并行缓存至所述计算单元阵列中的多个计算单元;从输入图像数据中确定分别对应于所述多个权重值的多路输入数据流,将所述多路输入数据流并行输入所述多个计算单元;
所述计算单元阵列被配置为用于:在所述多个计算单元内部,各自基于缓存的权重值和接收的输入数据流执行滑窗操作和乘法操作,并在所述多个计算单元之间执行累加操作,以输出所述子膨胀卷积运算的中间结果;叠加所述S个R×1的子膨胀卷积运算的中间结果,得到所述膨胀卷积运算的卷积结果。
7.根据权利要求6所述的装置,其特征在于,所述逻辑控制单元被配置为用于:
根据所述膨胀卷积运算的膨胀率和卷积步长从输入图像数据中读取所需数据以拼接组成所述每个权重值对应的输入数据流。
8.根据权利要求6所述的装置,其特征在于,所述逻辑控制单元被配置为用于:
根据所述膨胀卷积运算的膨胀率和卷积步长读取所述输入图像数据中的多行数据以拼接组成所述每个权重值对应的输入数据流。
9.根据权利要求6所述的装置,其特征在于,所述滑窗操作的滑动步长根据所述膨胀卷积运算的所述卷积步长确定。
10.根据权利要求6所述的装置,其特征在于,所述计算单元阵列被配置为用于:在所述S个R×1的子膨胀卷积运算中实时对所述S个R×1的子膨胀卷积运算的中间结果进行叠加,或者在所述S个R×1的子膨胀卷积运算执行完毕之后再进行多个中间结果的叠加。
CN202010659646.6A 2020-07-08 2020-07-08 一种膨胀卷积加速计算方法及装置 Pending CN113989169A (zh)

Priority Applications (6)

Application Number Priority Date Filing Date Title
CN202010659646.6A CN113989169A (zh) 2020-07-08 2020-07-08 一种膨胀卷积加速计算方法及装置
KR1020227031052A KR20230081697A (ko) 2020-07-08 2020-11-03 팽창 컨볼루션 계산 가속화 방법 및 장치
PCT/CN2020/126195 WO2022007265A1 (zh) 2020-07-08 2020-11-03 一种膨胀卷积加速计算方法及装置
EP20944528.7A EP4181024A4 (en) 2020-07-08 2020-11-03 METHOD AND DEVICE FOR CALCULATION OF THE ACCELERATION OF AN EXTENDED CONFOLD
JP2022580125A JP7419574B2 (ja) 2020-07-08 2020-11-03 膨張畳み込み加速演算方法及び装置
US18/014,635 US20230273829A1 (en) 2020-07-08 2020-11-03 Dilated convolution acceleration calculation method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010659646.6A CN113989169A (zh) 2020-07-08 2020-07-08 一种膨胀卷积加速计算方法及装置

Publications (1)

Publication Number Publication Date
CN113989169A true CN113989169A (zh) 2022-01-28

Family

ID=79552764

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010659646.6A Pending CN113989169A (zh) 2020-07-08 2020-07-08 一种膨胀卷积加速计算方法及装置

Country Status (6)

Country Link
US (1) US20230273829A1 (zh)
EP (1) EP4181024A4 (zh)
JP (1) JP7419574B2 (zh)
KR (1) KR20230081697A (zh)
CN (1) CN113989169A (zh)
WO (1) WO2022007265A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115292662A (zh) * 2022-08-18 2022-11-04 上海燧原科技有限公司 一种卷积加速运算方法、装置、电子设备及存储介质
CN117407733A (zh) * 2023-12-12 2024-01-16 南昌科晨电力试验研究有限公司 一种基于对抗生成shapelet的流量异常检测方法及系统
WO2024119976A1 (zh) * 2022-12-06 2024-06-13 北京硅升科技有限公司 图像反卷积方法和设备、存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
CN107862650A (zh) * 2017-11-29 2018-03-30 中科亿海微电子科技(苏州)有限公司 加速计算二维图像cnn卷积的方法
CN109032781A (zh) * 2018-07-13 2018-12-18 重庆邮电大学 一种卷积神经网络算法的fpga并行系统
CN109447893A (zh) * 2019-01-28 2019-03-08 深兰人工智能芯片研究院(江苏)有限公司 一种卷积神经网络fpga加速中图像前处理方法及装置
CN109919295A (zh) * 2017-12-12 2019-06-21 北京大学深圳研究生院 一种基于轻量级卷积神经网络的嵌入式音频事件检测方法
CN111178519A (zh) * 2019-12-27 2020-05-19 华中科技大学 卷积神经网络加速引擎、卷积神经网络加速系统及方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10067509B1 (en) * 2017-03-10 2018-09-04 TuSimple System and method for occluding contour detection
US10838910B2 (en) 2017-04-27 2020-11-17 Falcon Computing Systems and methods for systolic array design from a high-level program
US10990648B2 (en) 2017-08-07 2021-04-27 Intel Corporation System and method for an optimized winograd convolution accelerator
CN110543849B (zh) * 2019-08-30 2022-10-04 北京市商汤科技开发有限公司 检测器的配置方法及装置、电子设备和存储介质
CN111260037B (zh) * 2020-02-11 2023-10-13 深圳云天励飞技术股份有限公司 图像数据的卷积运算方法、装置、电子设备及存储介质
CN111951269B (zh) * 2020-10-16 2021-01-05 深圳云天励飞技术股份有限公司 图像处理方法及相关设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104915322A (zh) * 2015-06-09 2015-09-16 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法及其axi总线ip核
CN107862650A (zh) * 2017-11-29 2018-03-30 中科亿海微电子科技(苏州)有限公司 加速计算二维图像cnn卷积的方法
CN109919295A (zh) * 2017-12-12 2019-06-21 北京大学深圳研究生院 一种基于轻量级卷积神经网络的嵌入式音频事件检测方法
CN109032781A (zh) * 2018-07-13 2018-12-18 重庆邮电大学 一种卷积神经网络算法的fpga并行系统
CN109447893A (zh) * 2019-01-28 2019-03-08 深兰人工智能芯片研究院(江苏)有限公司 一种卷积神经网络fpga加速中图像前处理方法及装置
CN111178519A (zh) * 2019-12-27 2020-05-19 华中科技大学 卷积神经网络加速引擎、卷积神经网络加速系统及方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115292662A (zh) * 2022-08-18 2022-11-04 上海燧原科技有限公司 一种卷积加速运算方法、装置、电子设备及存储介质
CN115292662B (zh) * 2022-08-18 2023-09-22 上海燧原科技有限公司 一种卷积加速运算方法、装置、电子设备及存储介质
WO2024119976A1 (zh) * 2022-12-06 2024-06-13 北京硅升科技有限公司 图像反卷积方法和设备、存储介质
CN117407733A (zh) * 2023-12-12 2024-01-16 南昌科晨电力试验研究有限公司 一种基于对抗生成shapelet的流量异常检测方法及系统
CN117407733B (zh) * 2023-12-12 2024-04-02 南昌科晨电力试验研究有限公司 一种基于对抗生成shapelet的流量异常检测方法及系统

Also Published As

Publication number Publication date
US20230273829A1 (en) 2023-08-31
EP4181024A1 (en) 2023-05-17
JP2023531070A (ja) 2023-07-20
JP7419574B2 (ja) 2024-01-22
EP4181024A4 (en) 2024-04-24
KR20230081697A (ko) 2023-06-07
WO2022007265A1 (zh) 2022-01-13

Similar Documents

Publication Publication Date Title
CN113989169A (zh) 一种膨胀卷积加速计算方法及装置
US20230289230A1 (en) Method and apparatus for accelerating convolutional neural network
CN111898733B (zh) 一种深度可分离卷积神经网络加速器架构
KR102452951B1 (ko) 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
CN109993293B (zh) 一种适用于堆叠式沙漏网络的深度学习加速器
CN110989920B (zh) 能量高效的存储器系统和方法
CN112703511B (zh) 运算加速器和数据处理方法
CN112991142B (zh) 图像数据的矩阵运算方法、装置、设备及存储介质
US20210357734A1 (en) Z-first reference neural processing unit for mapping winograd convolution and a method thereof
US20230025068A1 (en) Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements
CN113743587A (zh) 一种卷积神经网络池化计算方法、系统、及存储介质
US20220129744A1 (en) Method for permuting dimensions of a multi-dimensional tensor
US11216375B2 (en) Data caching
CN112712457A (zh) 数据处理方法以及人工智能处理器
US20210294608A1 (en) Processing in memory methods for convolutional operations
CN116090518A (zh) 基于脉动运算阵列的特征图处理方法、装置以及存储介质
CN115861841A (zh) 一种结合轻量化大卷积核的sar图像目标检测方法
CN116051345A (zh) 图像数据处理方法、装置、计算机设备及可读存储介质
KR20240036594A (ko) 인-메모리 연산을 위한 부분 합 관리 및 재구성가능 시스톨릭 플로우 아키텍처들
CN115935888A (zh) 一种神经网络加速系统
CN114580618A (zh) 一种反卷积处理方法、装置、电子设备及介质
CN112905526B (zh) 一种多种类型卷积的fpga实现方法
US20220172032A1 (en) Neural network circuit
JP2021005242A (ja) 情報処理装置、情報処理プログラム、及び情報処理方法
CN113379046B (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20240430

Address after: Room 101, 20th Floor, Building 1, Zone 1, No. 81 Beiqing Road, Haidian District, Beijing, 100094

Applicant after: Beijing Sisheng Technology Co.,Ltd.

Country or region after: China

Address before: Room 206, 2 / F, building C, phase I, Zhongguancun Software Park, No. 8, Dongbei Wangxi Road, Haidian District, Beijing 100094

Applicant before: Canaan Bright Sight Co.,Ltd.

Country or region before: China