掌桥专利:专业的专利平台
掌桥专利
首页

一种Depthwise快速卷积方法及相关装置

文献发布时间:2023-06-19 19:28:50


一种Depthwise快速卷积方法及相关装置

技术领域

本申请涉及技术领域,特别涉及一种Depthwise快速卷积方法及相关装置。

背景技术

AI编译器通过AI Core中的计算单位来提供计算力,其中,AI Core中的计算单元包括矩阵计算单元、向量计算单元、标量计算单元和累加器等。其中,矩阵计算单元普遍是采用16*16*16的结构,一条指令可以完成两个16*16的矩阵乘法计算。然而,在depthwise卷积中,每个卷积核只处理一个通道,导致不能最大化利用矩阵计算单元,使得计算资源被浪费。

上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。

发明内容

本申请要解决的技术问题在于,针对现有技术的不足,提供一种Depthwise快速卷积方法及相关装置。

为了解决上述技术问题,本申请实施例第一方面提供了一种Depthwise快速卷积方法,所述方法包括:

获取待卷积的图像数据,并将所述图像数据划分为若干图像块,其中,若干图像块中的每个图像块的通道数均等于预设数量,图像块的图像尺寸等于卷积核的尺寸;

将各图像块转换为待卷积矩阵,并将转换得到的各待卷积矩阵按照行方向划分为预设数量的子卷积矩阵,其中,所述待卷积矩阵的行数为预设数量,各子卷积矩阵的行数均为1;

通过DepthwiseConv矩阵计算单元依次对各待卷积矩阵包括的预设数量的子卷积矩阵进行并行卷积运算,以得到图像数据对应的目标图像数据,其中,所述DepthwiseConv矩阵计算单元包括预设数量的并行单支路计算子单元。

所述Depthwise快速卷积方法,其中,所述预设数量为16。

所述Depthwise快速卷积方法,其中,所述获取待卷积的图像数据,并将所述图像数据划分为若干图像块具体包括:

获取待卷积的图像数据,并读取所述图像数据的通道数;

当通道数等于预设数量时,将所述图像数据划分为若干图像块;

当所述通道数不等于预设数量时,将所述图像数据的通道数调整为预设数量,并将调整后的图像数据划分为若干图像块。

所述Depthwise快速卷积方法,其中,所述通过DepthwiseConv矩阵计算单元依次对各待卷积矩阵包括的预设数量的子卷积矩阵进行并行卷积运算,以得到图像数据对应的目标图像数据具体包括:

获取各待卷积矩阵的计算顺序;

按照计算顺序依次将各待卷积矩阵包括的预设数量的子卷积矩阵输入DepthwiseConv矩阵计算单元,其中,所述DepthwiseConv矩阵计算单元中的每个单支路计算子单元对应一子卷积矩阵;

通过各单支路计算子单元对各自对应的子卷积矩阵进行并行卷积计算,以得到图像数据对应的目标图像数据。

所述Depthwise快速卷积方法,其中,所述获取各待卷积矩阵的计算顺序具体包括:

获取各待卷积矩阵对应的图像块在图像数据中的位置信息;

根据所述位置信息确定各待卷积矩阵对应的计算顺序。

所述Depthwise快速卷积方法,其中,所述通过DepthwiseConv矩阵计算单元依次对各待卷积矩阵包括的预设数量的子卷积矩阵进行并行卷积运算,以得到图像数据对应的目标图像数据具体包括:

通过DepthwiseConv矩阵计算单元依次对各待卷积矩阵包括的预设数量的子卷积矩阵进行并行卷积运算,并将各单支路计算子单元的卷积结果存储于缓存;

当缓存内的卷积结果满足PointwiseConv计算要求时,将缓存内的卷积结果输入PointwiseConv矩阵计算单元;

将PointwiseConv矩阵计算单元的计算结果写入内存,以得到图像数据对应的目标图像数据。

所述Depthwise快速卷积方法,其中,所述PointwiseConv矩阵计算单元与所述DepthwiseConv矩阵计算单元并行。

本申请实施例第二方面提供了一种Depthwise快速卷积装置,所述的装置包括:

获取单元,用于获取待卷积的图像数据,并将所述图像数据划分为若干图像块,其中,若干图像块中的每个图像块的通道数均等于预设数量,图像块的图像尺寸等于卷积核的尺寸;

划分单元,用于将各图像块转换为待卷积矩阵,并将转换得到的各待卷积矩阵按照行方向划分为预设数量的子卷积矩阵,其中,所述待卷积矩阵的行数为预设数量,各子卷积矩阵的行数均为1;

DepthwiseConv矩阵计算单元,用于各对待卷积矩阵包括的预设数量的子卷积矩阵进行并行卷积运算,以得到图像数据对应的目标图像数据,其中,所述DepthwiseConv矩阵计算单元包括预设数量的并行单支路计算子单元。

本申请实施例第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上任一所述的Depthwise快速卷积方法中的步骤。

本申请实施例第四方面提供了一种终端设备,其包括:处理器、存储器及通信总线;所述存储器上存储有可被所述处理器执行的计算机可读程序;

所述通信总线实现处理器和存储器之间的连接通信;

所述处理器执行所述计算机可读程序时实现如上任一所述的Depthwise快速卷积方法中的步骤。

有益效果:与现有技术相比,本申请提供了一种Depthwise快速卷积方法及相关装置,方法包括获取待卷积的图像数据,并将所述图像数据划分为若干图像块;将各图像块转换为待卷积矩阵,并将转换得到的各待卷积矩阵按照行方向划分为预设数量的子卷积矩阵;通过DepthwiseConv矩阵计算单元依次对各待卷积矩阵包括的预设数量的子卷积矩阵进行并行卷积运算,以得到图像数据对应的目标图像数据。本申请通过在DepthwiseConv矩阵计算单元设置预设数量的单支路子计算单元,然后通过预设数量的单支路子计算单元对DepthwiseConv卷积的预设数量的通道进行并行计算,这样可以提高DepthwiseConv矩阵计算单元的利用率,避免计算力的浪费。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员而言,在不符创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请提供的Depthwise快速卷积方法的流程图。

图2为本申请提供的Depthwise快速卷积方法与PointwiseConv计算结合工作的流程原理图。

图3为本申请提Depthwise快速卷积装置的结构原理图。

图4为本申请提供的终端设备的结构原理图。

具体实施方式

本申请提供一种Depthwise快速卷积方法及相关装置,为使本申请的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本申请进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。

应理解,本实施例中各步骤的序号和大小并不意味着执行顺序的先后,各过程的执行顺序以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

经过研究发现,AI编译器通过AI Core中的计算单位来提供计算力,其中,AI Core中的计算单元包括矩阵计算单元、向量计算单元、标量计算单元和累加器等。其中,矩阵计算单元普遍是采用16*16*16的结构,一条指令可以完成两个16*16的矩阵乘法计算。然而,在depthwise卷积中,每个卷积核只处理一个通道,导致不能最大化利用矩阵计算单元,使得计算资源被浪费。此外,DepthwiseConv计算普遍是与PointwiseConv计算结合使用的,DepthwiseConv的计算结果会进行IO存储,再从IO读取数据作为PointwiseConv的输入,存储IO以及从IO读取数据的过程会带来大量开销过大,特别是在大量数据的情况下,会严重影响DepthwiseConv计算的效率。

为了解决上述问题,在本申请实施例中,获取待卷积的图像数据,并将所述图像数据划分为若干图像块;将各图像块转换为待卷积矩阵,并将转换得到的各待卷积矩阵按照行方向划分为预设数量的子卷积矩阵;通过DepthwiseConv矩阵计算单元依次对各待卷积矩阵包括的预设数量的子卷积矩阵进行并行卷积运算,以得到图像数据对应的目标图像数据。本申请通过在DepthwiseConv矩阵计算单元设置预设数量的单支路子计算单元,然后通过预设数量的单支路子计算单元对DepthwiseConv卷积的预设数量的通道进行并行计算,这样可以提高DepthwiseConv矩阵计算单元的利用率,避免计算力的浪费。此外,在通过DepthwiseConv矩阵计算单元对待卷积矩阵包括的预设数量的子卷积矩阵进行并行卷积运算时,会将计算得到的计算结果存储于缓存内,当缓存内的时间可以进行PointwiseConv计算时,5将缓存内的计算结果输入PointwiseConv矩阵计算单元,同步进行PointwiseConv计算,这样可以避免存储IO以及从IO读取数据的过程,有效地解决了IO操作对于DepthwiseConv的影响。

下面结合附图,通过对实施例的描述,对申请内容作进一步说明。

本实施例提供了一种Depthwise快速卷积方法,如图1所示,所述方0法包括:

S10、获取待卷积的图像数据,并将所述图像数据划分为若干图像块。

具体地,图像数据为待进行DepthwiseConv计算的图像,其可以是其他卷积层的输出项,也可以是为经过卷积计算的原始图像等。例如,图像数

据为64*64*16的特征图。图像块为对图像数据进行划分得到,其中,若干5图像块中的每个图像块的通道数均等于预设数量,图像块的图像尺寸等于卷积核的尺寸。也就是说,在对图像数据进行划分时,按照卷积核大小对图像数据进行划分的,以使得每个图像块的图像尺寸与卷积核的大小相同,同时在通道方向上是按照预设数量进行划分的,以使得划分得到的每个图像块的通道数均等于预设数量。

0所述预设数量为基于用于进行DepthwiseConv计算的DepthwiseConv矩阵计算单元中的并行子计算单元的数量确定,其中,预设数量等于DepthwiseConv矩阵计算单元中的并行子计算单元的数量。也就是说,图像块的通道数等于DepthwiseConv矩阵计算单元包括预设数量的并行子计算

单元数量,这样可以通过DepthwiseConv矩阵计算单元对图像块沿通道并5行计算。在一个实现方式中,预设数量为16。当然,在实际应用中,预设数量还可以采用其他数量,例如,8,32等。

进一步,由于图像数据的通道数可以不等于预设数量,例如,通道数可以大于预设数量,或者,通道数小于预设数量。由此,将所述图像数据划分为若干图像块时,可以先检测图像数据的通道数是否等于预设数量,并根据检测结果来对图像数据进行调整,然后再进行划分。基于此,在一个实现方式中,所述获取待卷积的图像数据,并将所述图像数据划分为若干图像块具体包括:

S11、获取待卷积的图像数据,并读取所述图像数据的通道数;

S12、当通道数等于预设数量时,将所述图像数据划分为若干图像块;

S13、当所述通道数不等于预设数量时,将所述图像数据的通道数调整为预设数量,并将调整后的图像数据划分为若干图像块。

具体地,通道数不等于预设数量时,通道数大于预设数量,或者是,通道数小于预设数量,其中,当通道数大于预设数量时,将图像数据沿通道方向以预设数量为依据进行划分,使得划分得到的每个图像数据块的通道数均为预设数量,然后在对划分得到的每个图像数据块进行划分,得到若干图像块;反之,当通道数小于预设数量时,可以将图像数据的宽度或者高度折到通道上,以使得折后的图像数据的通道数等于预设数量。当然,值得说明的是,当通道数大于预设数量时按照预设数量进行图像数据块划分时,若存在未满足预设数量的图像数据块时,也可以通过将宽度或者高度折到通道的方式进行调整。此外,在将图像数据的通道数调整为预设数量后,再基于卷积核的大小对图像数据进行划分,以使得划分得到的每个图像块的图像尺寸均等于卷积核的大小,通道数等于预设数量。

S20、将各图像块转换为待卷积矩阵,并将转换得到的各待卷积矩阵按照行方向划分为预设数量的子卷积矩阵。

具体地,待卷积矩阵可以通过对图像块进行img2col操作转换得到的,其中,待卷积矩阵的列数等于卷积核的尺寸乘积,行数等于预设数量,即行数等于图像块的通道数。例如,卷积核的尺寸为3*3,预设数量为16,那么待卷积矩阵的行数为16,列数为9。此外,在获取到待卷积矩阵后,将待卷积矩阵划分为预设数量的子卷积矩阵,其中,子卷积矩阵的行数等于待卷积矩阵的行数,列数为1。例如,待卷积矩阵为16*9的矩阵,那么待卷积矩阵会被划分成16个,1*9的子卷积矩阵。

S30、通过DepthwiseConv矩阵计算单元依次对各待卷积矩阵包括的预设数量的子卷积矩阵进行并行卷积运算,以得到图像数据对应的目标图像数据。

具体地,所述DepthwiseConv矩阵计算单元包括预设数量的并行单支路计算子单元,其中,每个单支路计算子单元支持一路计算,即每个单支路计算子单元用于计算一个通道,预设数量的单支路计算子单元可以对预设数量的通道进行并行计算。也就是说,DepthwiseConv矩阵计算单元对于输入其内的输入数据,可以分别使用预设数量的单支路计算子单元对输入数据的预设数量的通道进行并行卷积计算,提高了DepthwiseConv矩阵计算单元的计算效率,同时也避免了DepthwiseConv矩阵计算单元的计算力的浪费。

在一个实现方式中,由于DepthwiseConv计算和PointwiseConv计算普遍联合进行,PointwiseConv计算用于沿通道方向进行计算,从而在进行DepthwiseConv计算时,对应相同图像位置的图像块进行计算,以得到该图像位置上的各通道各自对应的计算结果,这样可以使得DepthwiseConv计算和PointwiseConv计算同步计算。

基于此,在通过DepthwiseConv矩阵计算单元依次计算各待卷积矩阵时,可以先获取各待卷积矩阵的计算顺序,然后按照计算顺序进行计算。因此,所述通过DepthwiseConv矩阵计算单元依次对各待卷积矩阵包括的预设数量的子卷积矩阵进行并行卷积运算,以得到图像数据对应的目标图像数据具体包括:

获取各待卷积矩阵的计算顺序;

按照计算顺序依次将各待卷积矩阵包括的预设数量的子卷积矩阵输入DepthwiseConv矩阵计算单元,其中,所述DepthwiseConv矩阵计算单元中的每个单支路计算子单元对应一子卷积矩阵;

通过各单支路计算子单元对各自对应的子卷积矩阵进行并行卷积计算,以得到图像数据对应的目标图像数据。

具体地,计算顺序为按照PointwiseConv计算所需计算结果的先后顺序确定,以使得DepthwiseConv计算和PointwiseConv计算的并行。在本实施例中,计算顺序可以是按照图像块在图像数据中的位置信息确定,其中,计算顺序的具体过程可以为:

获取各待卷积矩阵对应的图像块在图像数据中的位置信息;

根据所述位置信息确定各待卷积矩阵对应的计算顺序。

具体地,位置信息可以为图像块中一像素点的位置信息,其中,位置信息包括像素点的像素横坐标、像素纵坐标以及通道位置,像素点可以为左上角像素点,右上角像素点等。在获取到位置信息后,首先以横坐标进行为优先级进行排序,其次,对于处于同一顺序的图像块以像素纵坐标为优先级进行排序,最后,对于处于同一顺序的图像块再以通道位置为优先件进行排序以得到计算顺序。例如,图像块A的位置信息为(1,1,1),图像块B的位置信息为(2,1,1),那么图像块A的计算顺序优先于图像块B的计算顺序。当然,在实际应用中,也可以采用其他方式进行排序,例如,依次为像素纵坐标-像素横坐标-像素位置为优先级进行排序等。

在一个实现方式中,如图2所示,当DepthwiseConv计算和PointwiseConv计算结合使用时,所述通过DepthwiseConv矩阵计算单元依次对各待卷积矩阵包括的预设数量的子卷积矩阵进行并行卷积运算,以得到图像数据对应的目标图像数据具体包括:

通过DepthwiseConv矩阵计算单元依次对各待卷积矩阵包括的预设数量的子卷积矩阵进行并行卷积运算,并将各单支路计算子单元的卷积结果存储于缓存;

当缓存内的卷积结果满足PointwiseConv计算要求时,将缓存内的卷积结果输入PointwiseConv矩阵计算单元;

将PointwiseConv矩阵计算单元的计算结果写入内存,以得到图像数据对应的目标图像数据。

具体地,所述PointwiseConv计算要求为缓存内存储有一个像素位置沿通道方向上的所有卷积结果,也就是说,在将各单支路计算子单元的卷积结果存储于缓存后,会实时检测缓存中是否存储有一个像素位置沿通道方向上的所有卷积结果,当缓存中存储有一个像素位置沿通道方向上的所有卷积结果时,说明缓存内的卷积结果满足PointwiseConv计算要求,此时读取满足PointwiseConv计算要求的卷积结果,然后通过PointwiseConv矩阵计算单元对读取到的卷积结果进行计算,并将计算结果写入内容。此外,在将卷积结果输入PointwiseConv矩阵计算单元,通过PointwiseConv矩阵计算单元得到计算结构,将输入PointwiseConv矩阵计算单元的卷积结果从缓存内删除,这样一方面可以减少卷积结果对缓存的占用,另一方面也可以避免出现卷积结果重复进行PointwiseConv矩阵计算单元的问题。

本实施例通过将卷积结果存储于缓存内,然后实时检测缓存内是否存在满足PointwiseConv计算的卷积结果,当存在满足PointwiseConv计算的卷积结果时,并行进行PointwiseConv计算,这样一方面可以提高DepthwiseConv计算和PointwiseConv计算结合计算的计算效率。另一方面,图像数据的每一个通道进行DepthwiseConv计算的卷积结构不直接存储到DDR中,而是缓存到UB中,待到计算的输出够PointwiseConv计算一个点,输入到PointwiseConv对应的计算单元中进行计算,可以避免减少IO操作,有效地解决了IO操作对于DepthwiseConv的影响,尤其是大量数据下IO瓶颈带来的影响。

综上所述,本实施例提供了一种Depthwise快速卷积方法,方法包括获取待卷积的图像数据,并将所述图像数据划分为若干图像块;将各图像块转换为待卷积矩阵,并将转换得到的各待卷积矩阵按照行方向划分为预设数量的子卷积矩阵;通过DepthwiseConv矩阵计算单元依次对各待卷积矩阵包括的预设数量的子卷积矩阵进行并行卷积运算,以得到图像数据对应的目标图像数据。本申请通过在DepthwiseConv矩阵计算单元设置预设数量的单支路子计算单元,然后通过预设数量的单支路子计算单元对DepthwiseConv卷积的预设数量的通道进行并行计算,这样可以提高DepthwiseConv矩阵计算单元的利用率,避免计算力的浪费。此外,在通过DepthwiseConv矩阵计算单元对待卷积矩阵包括的预设数量的子卷积矩阵进行并行卷积运算时,会将计算得到的计算结果存储于缓存内,当缓存内的时间可以进行PointwiseConv计算时,将缓存内的计算结果输入PointwiseConv矩阵计算单元,同步进行PointwiseConv计算,这样可以避免存储IO以及从IO读取数据的过程,有效地解决了IO操作对于DepthwiseConv的影响。

基于上述Depthwise快速卷积方法,本实施例提供了一种Depthwise快速卷积装置,如图3所示,所述的装置包括:

获取单元100,用于获取待卷积的图像数据,并将所述图像数据划分为若干图像块,其中,若干图像块中的每个图像块的通道数均等于预设数量,图像块的图像尺寸等于卷积核的尺寸;

划分单元200,用于将各图像块转换为待卷积矩阵,并将转换得到的各待卷积矩阵按照行方向划分为预设数量的子卷积矩阵,其中,所述待卷积矩阵的行数为预设数量,各子卷积矩阵的行数均为1;

DepthwiseConv矩阵计算单元300,用于各对待卷积矩阵包括的预设数量的子卷积矩阵进行并行卷积运算,以得到图像数据对应的目标图像数据,其中,所述DepthwiseConv矩阵计算单元包括预设数量的并行单支路计算子单元。

基于上述Depthwise快速卷积方法,本实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上述实施例所述的Depthwise快速卷积方法中的步骤。

基于上述Depthwise快速卷积方法,本申请还提供了一种终端设备,如图4所示,其包括至少一个处理器(processor)20;显示屏21;以及存储器(memory)22,还可以包括通信接口(Communications Interface)23和总线24。其中,处理器20、显示屏21、存储器22和通信接口23可以通过总线24完成相互间的通信。显示屏21设置为显示初始设置模式中预设的用户引导界面。通信接口23可以传输信息。处理器20可以调用存储器22中的逻辑指令,以执行上述实施例中的方法。

此外,上述的存储器22中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。

存储器22作为一种计算机可读存储介质,可设置为存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令或模块。处理器20通过运行存储在存储器22中的软件程序、指令或模块,从而执行功能应用以及数据处理,即实现上述实施例中的方法。

存储器22可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器。例如,U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。

此外,上述存储介质以及终端设备中的多条指令处理器加载并执行的具体过程在上述方法中已经详细说明,在这里就不再一一陈述。

最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

技术分类

06120115919151