首页 / EfficientNet的注意力机制的硬件计算方法

EfficientNet的注意力机制的硬件计算方法有效专利 发明

技术领域

[0001] 本发明涉及卷积神经网络在图像检测和识别方法领域,更具体地,涉及一种EfficientNet的注意力机制的硬件计算方法。

相关背景技术

[0002] 卷积神经网络在图像检测和识别领域有效地应用,但是移动端的系统在部署卷积神经网络(CNN)完成实时目标识别时,使用移动端的中央处理器(CPU)去完成卷积计算的计算挑战是非常大的。因此,采用专用集成电路(ASIC),现场可编程逻辑门阵列(FPGA)加速器和图形处理单元(GPU)作为协处理器来提高识别的速度,减少识别延时,减少中央处理器的计算负担具有重要的意义。在移动端侧的目标识别系统还需要具有低功耗,相比起GPU,基于FPGA的卷积神经加速器具有低功耗的优势。
[0003] 快速发展的卷积神经网络具有更复杂的结构,其表现为更深层的网络层数,更多的网络分支处理。传统的标准的卷积神经网络有大量的计算和参数量,很难在移动端或者嵌入式设备中部署,而深度可分离卷积神经网络的出现减轻了标准卷积的参数和计算量,适合在移动端或嵌入式端部署。谷歌在2019年提出EfficientNet卷积神经网络,通过放大EfficientNet b0基础模型,获得了一系列EfficientNet模型。但EfficientNet具有残差分支和注意力机制模块使得其网络结构复杂,不利于在移动端或者嵌入式侧部署EfficientNet网络。而FPGA的硬件可编程性质就能适应到卷积神经网络结构的变化,在FPGA上部署EfficientNet卷积神经网络加速器具有较高的价值。
[0004] EfficientNet卷积神经网络是由MBconvBlock块的通过重复结合而成的结构。MBconvBlock模块的拓朴图见图1:输入到卷积和激活,到深度卷积和激活,将结果按每个通道进行全局平均池化,进行1维卷积降维,1维卷积升维。进行每个通道相乘,后进行卷积。如果该MBconvBlock块的步长为1,就进行输入残差相加,从而完成一个完成的MBconvBlock块的计算。
[0005] EfficientNet卷积神经注意力机制的计算过程见图2,将深度卷积后的结果,按每个通道为单位,进行全局平均池化,得到与通道数量一样的系数,如C个通道得到C个系数。将C个系数进行1维卷积的降维变成C/r个系数,r为一个因子。再将C/r个系数进行1维卷积升维变成C个系数。EfficientNet的MBconvBlock块的深度卷积的每个通道的像素和对应通道的系数进行相乘,得到经过注意力机制的特征图结果。
[0006] 目前基于FPGA的卷积神经网络加速器的单一中央计算阵列适合参数量大的,网络层数少的传统标准卷积。对于新型的深度可分离的卷积的结构,尤其是深度卷积的计算,由于其计算较传统标准卷积更为稀疏,导致一个传统标准的中央卷积计算阵列计算效率不高。本发明的设计的硬件能对EfficientNet的MBconvBlock块的深度卷积进行计算加速;目前较新的卷积神经网络通常带有注意力机制模块,比如MobileNet V3和EfficientNet系列的网络。但目前的卷积神经网络加速器没有专门处理注意力机制的硬件,导致在处理MobileNet V3,EfficientNet等带注意力机制模块的卷积神经网络的时候,需要用软件等其他方法处理。没有专门处理注意力机制的硬件,会导致计算注意力机制的所需的时间较长,会阻塞到接下来的卷积层的运行,从而使得卷积神经网络的计算延时加大。

具体实施方式

[0028] 附图仅用于示例性说明,不能理解为对本专利的限制;
[0029] 为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
[0030] 对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
[0031] 下面结合附图和实施例对本发明的技术方案做进一步的说明。
[0032] 深度卷积融合注意力模块的架构:是用于深度卷积以及注意力机制模块的运算。
[0033] 深度卷积融合注意力模块的硬件实现思路:与深度卷积的计算过程进行融合,将注意力模块的硬件有机融入到深度卷积计算引擎中。
[0034] 深度卷积融合注意力模块的硬件包含的结构:深度卷积计算引擎,Hswish函数激活硬件,同一输出通道加法器,系数寄存器,一维降维卷积乘法阵列,一维升维卷积乘法阵列,通道乘法器阵列。
[0035] 其中同一输出通道加法器,系数寄存器,一维降维卷积乘法阵列,一维升维卷积乘法阵列,通道乘法器阵列是用于注意力机制模块的计算。如图3深度卷积与注意力模块的硬件架构图的虚线框标出。
[0036] 本发明提供一种EfficientNet的注意力机制的硬件计算方法,包括以下步骤:
[0037] S1:通过深度卷积计算引擎和注意力机制硬件完成EfficientNet的深度卷积和注意力机制运算的计算;
[0038] S2:通过深度卷积计算引擎和注意力机制硬件完成EfficientNet的MBconvBlock的运算。
[0039] 如图4所示,步骤S1的具体过程包括两个阶段:
[0040] 第一阶段:深度卷积计算—激活—全局平均池化
[0041] 在全局控制逻辑控制下,从特征图缓冲区读取特征图,从权重缓冲区读取权重,进行深度卷积运算,进行Hswish函数激活。
[0042] Hswish函数激活的硬件数量等于卷积计算阵列每个周期输出的结果的个数,目的是深度卷积计算引擎并行输出的结果能立刻进行激活,实现输出数据流过Hswish函数激活硬件。
[0043] 得到经过激活的结果就可以送入注意力模块硬件,其过程为将激活的结果按同一个输出通道的安排送入加法树进行累加。与此同时每个周期的激活的结果以并行的数据读写方式写入深度卷积引擎输出特征缓冲区,见图4的标号为1的数据流。
[0044] 第二阶段:一维降维卷积—一维升维卷积—通道相乘
[0045] 等到深度卷积阵列把该深度卷积层的运算算完后,此时同一个输出通道的激活结果也累加完,求平均数后得到了用于一维降维卷积的系数。当得到用于一维降维卷积的全部系数,在几个时钟周期内执行完一维降维卷积,其后执行一维升维卷积。得到全部的用于通道相乘的系数。
[0046] 然后开始以并行数据流的方式从深度卷积引擎输出特征缓冲区读出特征送入乘法器完成每个通道的特征和对应每个通道的系数的相乘。此时得到的特征图即是经过注意力模块运算的特征图,以并行数据方式送去输入特征缓冲区。
[0047] 如图5所示,步骤S2的具体过程是:
[0048] 基于EfficientNet的MBconvBlock块包含了卷积—深度卷积—注意力机制模块—卷积的计算过程。
[0049] 利用深度卷积引擎配合完成一个MBconvBlock块的运算的具体的数据通路实现如下:
[0050] 实现深度卷积引擎的分时复用计算MBconvBlock块的第一层卷积,第二层深度卷积和第三层卷积。
[0051] 加载第一层卷积的输入特征和权重,正常启动卷积计算,但不启动注意力机制硬件,如图6的标号为1的数据流。
[0052] 等算完第一层卷积的时候,将输出特征缓冲区的结果送入特征缓冲区,开始进行深度卷积和注意力机制的运算工作,如图6的标号为2的数据流。
[0053] 深度卷积输出特征缓冲区的数据经过通道乘法器阵列送到输入特征缓冲区,开启第三层卷积的运算。最后如果MBconvBlock块有输入特征残差项相加,则将MBconvBlock块的第一层逐点卷积的输入特征和第三层逐点卷积的输出特征图进行相加。如图6的标号为3的数据流。
[0054] 经过三个卷积层计算而完成了一个MBconvBlock块的计算,将特征结果送出到外部存储器,如图6的虚线数据流。
[0055] 通过高层次综合工具,对深度卷积融合注意力机制模块进行建模,按本发明的架构实现深度卷积阵列和注意力硬件,目的是测试本发明的设计的深度卷积融合注意力机制模块架构和电路,在流水运行的时候的指标。
[0056] 启动间隔(interval):可以接受新输入数据之前的时钟周期数,见图7,可以看到深度卷积启动间隔都为2。可以看到一维降维卷积乘法器阵列,一维升维卷积乘法器阵列,通道乘法器阵列的启动间隔都为1。说明本发明实现的电路在流水式运行的时候较良好。
[0057] 通过工具,按本发明的深度卷积阵列和注意力硬件架构,在寄存器传输级别进行建模,对深度卷积融合注意力机制模块硬件实现进行建模。其寄存器传输级别的视图如下:输入特征缓冲区寄存器级视图见图8,权重缓冲区寄存器级视图见图9,卷积计算阵列视图见图10,输出特征缓冲区和注意力机制硬件实现视图见图11。本发明从寄存器传输级别上是可以实现的。
[0058] 相同或相似的标号对应相同或相似的部件;
[0059] 附图中描述位置关系的用于仅用于示例性说明,不能理解为对本专利的限制;
[0060] 显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

当前第1页 第1页 第2页 第3页
相关技术
注意力机制相关技术
硬件计算相关技术
黄以华发明人的其他相关专利技术