CN116957002A - 一种基于NNA的1xN卷积的实现方法 - Google Patents

一种基于NNA的1xN卷积的实现方法 Download PDF

Info

Publication number
CN116957002A
CN116957002A CN202210320413.2A CN202210320413A CN116957002A CN 116957002 A CN116957002 A CN 116957002A CN 202210320413 A CN202210320413 A CN 202210320413A CN 116957002 A CN116957002 A CN 116957002A
Authority
CN
China
Prior art keywords
convolution
nna
size
convolution kernel
pixels
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
CN202210320413.2A
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.)
Hefei Ingenic Technology Co ltd
Original Assignee
Hefei Ingenic 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 Hefei Ingenic Technology Co ltd filed Critical Hefei Ingenic Technology Co ltd
Priority to CN202210320413.2A priority Critical patent/CN116957002A/zh
Publication of CN116957002A publication Critical patent/CN116957002A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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
    • 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)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Image Processing (AREA)

Abstract

本发明提供一种基于NNA的1xN卷积的实现方法,在不满足NNA相关参数范围时,通过对输入图像和卷积核矩阵进行拆分、重组、累加来实现NNA卷积加速,其中,卷积核拆分:对于1xN卷积,当N大于3时,超出了NNA寄存器参数范围,通过卷积核拆分实现NNA卷积加速;还包括NNA寄存器配置:使用NNA进行卷积加速必须正确配置NNA相关寄存器、卷积的步长、卷积核大小的必要参数都通过NNA寄存器进行配置,这些参数都必须在NNA支持的参数范围内才能得到正确的卷积结果。通过配置相关寄存器参数实现卷积核矩阵维度≤3x3的卷积计算加速,从而大幅度减少神经网络运行时间,在实际应用中实时性更高,用户体验更好。在不满足NNA相关参数范围时,保证通用性又能提高卷积运算速度。

Description

一种基于NNA的1xN卷积的实现方法
技术领域
本发明涉及神经网路技术领域,特别涉及一种基于NNA的1xN卷积的实现方法。
背景技术
近年来,随着科技的飞速发展,大数据时代已经到来,神经网络中大量的数据处理技术日益成为重要的应用技术之一。特别是随着消费电子、汽车电子等产品中的应用越来越多的引入人工智能,人工智能前所未有地快速发展,深度学习、神经网络等技术进入发展高潮阶段。人工智能在模型训练与推理中需要大量的计算。但受限于其算法和计算本身的特性,过去被广泛使用的传统芯片已无法满足大量计算的需求,这就要求芯片厂商去为神经网络算法打造专用的芯片,尤其是推理端的芯片,也就是神经网络加速器(NNA)。现有技术中,NNA1.0支持卷积核矩阵维度小于等于3x3的快速运算。1xN:卷积核矩阵的维度,N是正整数。
然而,现有技术中存在以下缺陷:
卷积过程包含大量的乘累加计算,运算速度慢,在实际应用中不具备实时性,而且NNA1.0仅支持卷积核矩阵维度小于等于3x3时的快速运算,当N较大时,例如当N大于3时,无法通过NNA1.0对1xN卷积过程进行加速。
此外,现有技术中的常用术语如下:
1、神经网络:模仿生物神经网络结构和功能的数学模型,通过学习训练样本数据的内在规律,获得分析或者表达样本数据的能力,可应用于目标检测、场景分类、文字识别等多种应用领域。
2、深度学习:训练神经网络的过程和方法。
3、图像卷积:对于输入图像的每一个像素点,计算它的邻域像素和卷积核矩阵的对应元素的乘积后累加,作为该像素位置的值,通过不断滑动卷积核矩阵,得到最终卷积输出结果。
4、特征提取:使用计算机提取图像信息,决定每个像素点是否属于一个图像特征,结果是把图像上的点分为不同的子集,这些子集往往属于独立的点,连续的曲线或者连续的区域。
5、NNA:神经网络加速器。
6、FRAM:NNA内部存放输入图像数据的片上RAM。
7、WRAM:NNA内部存放卷积核数据的片上RAM。
8、ORAM:片上通用RAM。
9、pixel:输入图像的最小单位。
10、pad:对输入图像进行边缘填充,分为pad_top,pad_bottom,pad_left,pad_right,表示图像上下左右边缘填充的size。
11、stride:卷积核矩阵滑动的步长,分为stride_x,stride_y,表示卷积核矩阵横向和纵向滑动的步长。
发明内容
为了解决上述问题,本申请的目的在于:基于NNA1.0的快速计算1xN卷积的实现方法,提高1xN卷积的运算速度。
具体地,本发明提供一种基于NNA1.0的1xN卷积的实现方法,所述方法在不满足NNA相关参数范围时,通过对输入图像和卷积核矩阵进行拆分、重组、累加来实现NNA卷积加速,其中,
卷积核拆分:对于1xN卷积,当N大于3时,超出了NNA寄存器参数范围,通过卷积核拆分实现NNA卷积加速;
本方法还包括NNA寄存器配置:使用NNA进行卷积加速必须正确配置NNA相关寄存器;卷积的步长、卷积核大小、输入图像大小和数据位宽、FRAM和WRAM的读写地址、FRAM写地址跳转都通过NNA寄存器进行配置,这些参数都必须在NNA支持的参数范围内才能得到正确的卷积结果。
所述方法包括:
S1,输入图像大小IH*IW,卷积核矩阵大小KH*KW,输入图像边缘填充大小为pad_top,pad_bottom,pad_left,pad_right,卷积步长为stride_x,stride_y,输出图像的大小OH*OW通过以下公式计算:
S2,NNA卷积过程:将卷积核数据写入WRAM,再将需要的输入图像数据写入FRAM,一次可写4或8个pixel,NNA硬件限制写入FRAM的pixel数目必须是4的整数倍;通过NNA硬件寄存器设置卷积核大小即KH和KW必须小于等于3、pad、stride、输入图像大小和数据位宽、FRAM和WRAM的读地址,再调用NNA硬件指令得到卷积结果输出,一次能够得到4个pixel的输出数据;
每次需要向FRAM写入的pixel数目为FP_H*FP_W:
FP_H=KH
FP_W=3*stride_x+KW
其中FP_W需要对齐到4;
S3,对于1xN卷积,当N≤3时,可以通过上述过程直接得到卷积结果;当N>3时,由于NNA硬件寄存器参数范围限制,需要对卷积核矩阵进行拆分,具体实现为:卷积核大小1*N(N>3),NNA最大可以支持1*3的卷积核,将卷积核拆分为1*3,...,1*3,...,1*(N%3)等多个卷积核,其中%表示取余数,拆分后卷积核的个数K为:
对前K-1个卷积核(大小为1*3),需要向FRAM写入1*fp_w个pixel的输入数据,fp_w=3*stride_x+3,fp_w需要对齐到4,通过配置NNA寄存器设置卷积核大小即1*3、pad、stride、输入图像大小和数据位宽、FRAM和WRAM的读地址,再调用NNA硬件指令NNMACG得到4个pixel的输出数据,循环上述过程K-1次;
对最后一个卷积核即大小为1*(N%3),需要向FRAM写入1*fp_w个pixel的输入数据,fp_w=3*stride_x+N%3,fp_w需要对齐到4,通过配置NNA寄存器设置卷积核大小即1*(N%3)、pad、stride、输入图像大小和数据位宽、FRAM和WRAM的读地址,再调用NNA硬件指令NNMACG得到4个pixel的输出数据,将此结果和前K-1次得到的结果进行累加,即将前K-1次得到的4个pixel数据和本次得到的4个pixel数据对应位置相加,便得到最终的1*N卷积输出。
所述步骤S2中,假设卷积核大小为3*3,输入图像大小为64*64,不对输入图像进行边缘填充,即pad_top,pad_bottom,pad_left,pad_right都为0,卷积步长stride_x,stride_y都为1时,输出图像的大小为62*62;要通过NNA硬件指令一次得到4个pixel的输出数据,需要向FRAM写入3*8个pixel的输入数据。
所述步骤S3中K更直接的计算方法为:K=(N+2)/3,其中前K-1个卷积核大小为1*3,最后一个卷积核大小为1*(N%3)。
由此,本申请的优势在于:通过简单的方法,即通过配置相关寄存器参数可以实现卷积核矩阵维度小于等于3x3的卷积计算加速,从而大幅度减少神经网络运行时间,在实际应用中实时性更高,用户体验更好。在不满足NNA相关参数范围时,保证通用性,又能提高卷积运算速度。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。
图1是本申请方法的流程示意图。
具体实施方式
为了能够更清楚地理解本发明的技术内容及优点,现结合附图对本发明进行进一步的详细说明。
卷积神经网络在图像、视频、语音领域有着广泛的应用,随着神经网络越变越复杂,需要大量资源来训练和评估,而硬件加速器性能增长和通用性提高日趋缓慢。卷积神经网络主要由输入层、卷积层、池化层和全连接层组成,其中卷积层是构成卷积神经网络的核心层,网络中绝大部分计算量由它产生,因此卷积神经网络的运行速度基本上取决于卷积层的运算速度。
NNA(neural network accelerate unit)是一种硬件平台的神经网络加速器,本方法中通过配置相关寄存器参数可以实现卷积核矩阵维度小于等于3x3的卷积计算加速,从而大幅度减少神经网络运行时间,在实际应用中实时性更高,用户体验更好。
由于NNA有一些硬性条件限制,在实际应用中通用性不高。为了保证通用性,又能提高卷积运算速度,在不满足NNA相关参数范围时,通过对输入图像和卷积核矩阵进行拆分、重组、累加来实现NNA卷积加速。
具体地,如图1所示,本申请方法包括:
S1,输入图像大小IH*IW,卷积核矩阵大小KH*KW,输入图像边缘填充大小为pad_top,pad_bottom,pad_left,pad_right,卷积步长为stride_x,stride_y,输出图像的大小OH*OW可通过以下公式计算:
S2,NNA卷积过程:将卷积核数据写入WRAM,再将需要的输入图像数据写入FRAM,一次可写4或8个pixel,NNA硬件限制写入FRAM的pixel数目必须是4的整数倍。通过NNA硬件寄存器设置卷积核大小即KH和KW必须小于等于3、pad、stride、输入图像大小和数据位宽、FRAM和WRAM的读地址,再调用NNA硬件指令得到卷积结果输出,一次可以得到4个pixel的输出数据;
每次需要向FRAM写入的pixel数目为FP_H*FP_W:
FP_H=KH
FP_W=3*stride_x+KW
其中FP_W需要对齐到4。
例如:卷积核大小为3*3,输入图像大小为64*64,不对输入图像进行边缘填充,即pad_top,pad_bottom,pad_left,pad_right都为0,卷积步长stride_x,stride_y都为1时,输出图像的大小为62*62。要通过NNA硬件指令一次得到4个pixel的输出数据,需要向FRAM写入3*8个pixel的输入数据;
S3,对于1xN卷积,当N≤3时,可以通过上述过程直接得到卷积结果。当N>3时,由于NNA硬件寄存器参数范围限制,需要对卷积核矩阵进行拆分;
具体实现:卷积核大小1*N(N>3),NNA最大可以支持1*3的卷积核。将卷积核拆分为1*3,...,1*3,...,1*(N%3)等多个卷积核(%表示取余数),拆分后卷积核的个数K为:
更直接的计算方法为:K=(N+2)/3,其中前K-1个卷积核大小为1*3,最后一个卷积核大小为1*(N%3);
对前K-1个卷积核(大小为1*3),需要向FRAM写入1*fp_w个pixel的输入数据,fp_w=3*stride_x+3,fp_w需要对齐到4,通过配置NNA寄存器设置卷积核大小即1*3、pad、stride、输入图像大小和数据位宽、FRAM和WRAM的读地址,再调用NNA硬件指令NNMACG指令得到4个pixel的输出数据,循环上述过程K-1次;
对最后一个卷积核(大小为1*(N%3)),需要向FRAM写入1*fp_w个pixel的输入数据,fp_w=3*stride_x+N%3,fp_w需要对齐到4,通过配置NNA寄存器设置卷积核大小即1*(N%3)、pad、stride、输入图像大小和数据位宽、FRAM和WRAM的读地址,再调用NNA硬件指令NNMACG指令得到4个pixel的输出数据,将此结果和前K-1次得到的结果进行累加,便得到最终的1*N卷积输出。
综上,本申请中对现有技术的优化重点在于:
1、卷积核拆分:对于1xN卷积,当N大于3时,超出了NNA卷积核参数范围,通过卷积核拆分实现NNA卷积加速。
2、NNA寄存器配置:使用NNA进行卷积加速必须正确配置NNA相关寄存器,卷积的步长,卷积核大小等参数都通过NNA寄存器进行配置,这些参数都必须在NNA支持的参数范围内才能得到正确的卷积结果。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (5)

1.一种基于NNA的1xN卷积的实现方法,其特征在于,所述方法在不满足NNA相关参数范围时,通过对输入图像和卷积核矩阵进行拆分、重组、累加来实现NNA卷积加速,其中,
卷积核拆分:对于1xN卷积,当N大于3时,超出了NNA寄存器参数范围,通过卷积核拆分实现NNA卷积加速;
本方法还包括NNA寄存器配置:使用NNA进行卷积加速必须正确配置NNA相关寄存器、卷积的步长、卷积核大小、输入图像大小和数据位宽、FRAM和WRAM的读写地址、FRAM写地址跳转都通过NNA寄存器进行配置,这些参数都必须在NNA支持的参数范围内才能得到正确的卷积结果。
2.根据权利要求1所述的一种基于NNA的1xN卷积的实现方法,其特征在于,所述方法包括以下步骤:
S1,输入图像大小IH*IW,卷积核矩阵大小KH*KW,输入图像边缘填充大小为pad_top,pad_bottom,pad_left,pad_right,卷积步长为stride_x,stride_y,输出图像的大小OH*OW通过以下公式计算:
S2,NNA卷积过程:将卷积核数据写入WRAM,再将需要的输入图像数据写入FRAM,一次可写4或8个pixel,NNA硬件限制写入FRAM的pixel数目必须是4的整数倍;通过NNA硬件寄存器设置卷积核大小即KH和KW必须小于等于3、pad、stride、输入图像大小和数据位宽、FRAM和WRAM的读地址参数,再调用NNA硬件指令得到卷积结果输出,一次能够得到4个pixel的输出数据;
每次需要向FRAM写入的pixel数目为FP_H*FP_W:
FP_H=KH
FP_W=3*stride_x+KW
其中FP_W需要对齐到4;
S3,对于1xN卷积,当N≤3时,通过上述过程直接得到卷积结果;当N>3时,由于NNA硬件寄存器参数范围限制,需要对卷积核矩阵进行拆分,具体实现为:卷积核大小1*N(N>3),NNA最大支持1*3的卷积核,将卷积核拆分为1*3,...,1*3,...,1*(N%3)等多个卷积核,其中%表示取余数,拆分后卷积核的个数K为:
对前K-1个卷积核(大小为1*3),需要向FRAM写入1*fp_w个pixel的输入数据,fp_w=3*stride_x+3,fp_w需要对齐到4,通过配置NNA寄存器设置卷积核大小即1*3、pad、stride、输入图像大小和数据位宽、FRAM和WRAM的读地址参数,再调用NNA硬件指令得到4个pixel的输出数据,循环上述过程K-1次;
对最后一个卷积核即大小为1*(N%3),需要向FRAM写入1*fp_w个pixel的输入数据,fp_w=3*stride_x+N%3,fp_w需要对齐到4,通过配置NNA寄存器设置卷积核大小即1*(N%3)、pad、stride、输入图像大小和数据位宽、FRAM和WRAM的读地址参数,再调用NNA硬件指令得到4个pixel的输出数据,将此结果和前K-1次得到的结果进行累加,即将前K-1次得到的4个pixel数据和本次得到的4个pixel数据对应位置相加,便得到最终的1*N卷积输出。
3.根据权利要求2所述的一种基于NNA的1xN卷积的实现方法,其特征在于,所述步骤S2中,
假设卷积核大小为3*3,输入图像大小为64*64,不对输入图像进行边缘填充,即pad_top,pad_bottom,pad_left,pad_right都为0,卷积步长stride_x,stride_y都为1时,输出图像的大小为62*62;要通过NNA硬件指令一次得到4个pixel的输出数据,需要向FRAM写入3*8个pixel的输入数据。
4.根据权利要求2所述的一种基于NNA的1xN卷积的实现方法,其特征在于,所述步骤S3中,
K更直接的计算方法为:K=(n+2)/3,其中前K-1个卷积核大小为1*3,最后一个卷积核大小为1*(N%3)。
5.根据权利要求2所述的一种基于NNA的1xN卷积的实现方法,其特征在于,所述NNA硬件指令为NNMACG指令。
CN202210320413.2A 2022-03-29 2022-03-29 一种基于NNA的1xN卷积的实现方法 Pending CN116957002A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210320413.2A CN116957002A (zh) 2022-03-29 2022-03-29 一种基于NNA的1xN卷积的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210320413.2A CN116957002A (zh) 2022-03-29 2022-03-29 一种基于NNA的1xN卷积的实现方法

Publications (1)

Publication Number Publication Date
CN116957002A true CN116957002A (zh) 2023-10-27

Family

ID=88460582

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210320413.2A Pending CN116957002A (zh) 2022-03-29 2022-03-29 一种基于NNA的1xN卷积的实现方法

Country Status (1)

Country Link
CN (1) CN116957002A (zh)

Similar Documents

Publication Publication Date Title
EP3657399A1 (en) Weight pruning and quantization method for a neural network and accelerating device therefor
CN109784372B (zh) 一种基于卷积神经网络的目标分类方法
CN109949255A (zh) 图像重建方法及设备
CN112651438A (zh) 多类别图像的分类方法、装置、终端设备和存储介质
CN111382867A (zh) 神经网络压缩的方法、数据处理的方法及相关装置
CN109325530B (zh) 一种图像分类方法、存储装置和处理装置
CN112036475A (zh) 融合模块和多尺度特征融合卷积神经网络及图像识别方法
CN112200300A (zh) 卷积神经网络运算方法及装置
CN110738317A (zh) 基于fpga的可变形卷积网络运算方法、装置和系统
CN111709415B (zh) 目标检测方法、装置、计算机设备和存储介质
CN117152438A (zh) 一种基于改进DeepLabV3+网络的轻量级街景图像语义分割方法
CN114882278A (zh) 一种基于注意力机制和迁移学习的轮胎花纹分类方法和装置
CN112749576B (zh) 图像识别方法和装置、计算设备以及计算机存储介质
Ouyang et al. A fast and power-efficient hardware architecture for visual feature detection in affine-sift
CN116957002A (zh) 一种基于NNA的1xN卷积的实现方法
CN115984671A (zh) 模型在线更新方法、装置、电子设备及可读存储介质
CN112132253A (zh) 3d动作识别方法、装置、计算机可读存储介质及设备
CN115409159A (zh) 对象操作方法、装置、计算机设备以及计算机存储介质
TWI798591B (zh) 卷積神經網路運算方法及裝置
CN113724261A (zh) 一种基于卷积神经网络的快速图像构图方法
KR102372869B1 (ko) 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법
Li et al. Optimized GPU acceleration algorithm of convolutional neural networks for target detection
CN111797972A (zh) 应用卷积神经网络处理数据的方法、装置和电子系统
CN111797984A (zh) 一种用于多任务神经网络的量化和硬件加速方法及装置
CN117556273B (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