[发明专利]一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法有效
| 申请号: | 201810179570.X | 申请日: | 2018-03-05 |
| 公开(公告)号: | CN108108809B | 公开(公告)日: | 2021-03-02 |
| 发明(设计)人: | 朱顺意 | 申请(专利权)人: | 山东领能电子科技有限公司 |
| 主分类号: | G06N3/04 | 分类号: | G06N3/04;G06N3/063 |
| 代理公司: | 济南金迪知识产权代理有限公司 37219 | 代理人: | 杨树云 |
| 地址: | 250101 山东省济南市历下*** | 国省代码: | 山东;37 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 针对 卷积 神经元 网络 进行 推理 加速 硬件 架构 及其 工作 方法 | ||
1.一种针对卷积神经元网络进行推理加速的硬件架构的工作方法,其特征在于,包括预处理单元、硬件加速单元、存储单元;
所述预处理单元用于对输入的原始图像帧进行预处理;
所述硬件加速单元用于读入待卷积的填充后的图像帧、卷积核系数、偏移量参数,进行卷积,卷积结束后执行全连接层计算,全连接层计算结束后,输出计算特征判断结果,计算特征判断结果是指判断出输入的图片符合各个不同结果的概率;
所述存储单元用于存储填充后的图像帧、卷积核系数、偏移量参数,以及每一次卷积的输出数据、全连接层的输出数据;
所述预处理单元包括ARM,所述预处理单元通过AXI总线控制器连接所述硬件加速单元;所述硬件加速单元包括若干RAM、RAM控制器、裁减 模块、地址控制模块、数据分配控制模块、卷积阵列模块;
所述ARM对输入的原始图像帧依次执行图像补充、浮点数据转定点数据、对FPGA的逻辑寄存器进行配置;
所述AXI总线控制器读入待卷积的填充后的图像帧、卷积核系数、偏移量参数至若干RAM;所述裁减 模块通过所述RAM控制器从若干RAM中读取数据并进行裁减;通过所述RAM控制器和所述地址控制模块,读取裁减后的原始图像帧、卷积核系数、偏移量参数到所述数据分配控制模块;所述数据分配控制模块将裁减后的原始图像帧、卷积核系数、偏移量参数发送至所述卷积阵列模块;所述卷积阵列模块依次进行卷积计算、pooling计算,输出计算特征判断结果;包括:
步骤(1):所述ARM对输入的原始图像帧预处理,所述预处理包括依次执行图像补充、浮点数据转定点数据、对FPGA的逻辑寄存器进行配置;
步骤(2):所述AXI总线控制器读入待卷积的填充后的图像帧、卷积核系数、偏移量参数至若干RAM;
步骤(3):所述裁减 模块通过所述RAM控制器从若干RAM中读取数据并进行裁减;
步骤(4):通过所述RAM控制器和所述地址控制模块,读取裁减后的图像帧、卷积核系数、偏移量参数到所述数据分配控制模块;
步骤(5):所述数据分配控制模块将裁减后的图像帧、卷积核系数、偏移量参数发送至所述卷积阵列模块;
步骤(6):所述卷积阵列模块依次进行卷积计算、pooling计算,输出计算特征判断结果;
所述卷积阵列模块依次进行卷积计算、pooling计算,包括:依次进行第一层卷积计算、第一层pooling计算、第二层卷积计算、第二层pooling计算、第三层卷积计算、第三层pooling计算;
所述第一层卷积计算,设定输入N*N的原始图像帧,并扩展为(N+2)*(N+2)图像;卷积核心为M*M矩阵,M*M为3*3,步长为1;则需要N*N次M*M卷积的计算量;所述卷积阵列模块包括三组卷积矩阵,每组N个卷积核心,共需卷积核心3*N个;每个时钟周期执行N个M*M卷积,需要将N*N次卷积数据依次按照行的顺序执行;每个时钟周期执行一行N个M*M卷积;即N个时钟周期执行完第一层卷积;包括:
1)第一个时钟周期内,读取RAM中填充后的图像帧的第一行数据,第一行像素的M*M卷积在填充后的图像帧的一行像素、填充后的图像帧的第一行像素、填充后的图像帧的第二行像素上进行,共需N个卷积PE,第一组卷积矩阵N个PE共享一个RAM存储,存储宽度为(N+2)*[(N/4)+1]bits,长度为N+2;
第二组卷积矩阵N个PE与第一卷积矩阵组N个PE共享一个存储;每次读取一行(N+2)*[(N/4)+1]bits数据,不同的PE分别从数据中抽取相应的比特进行卷积计算;
读取RAM的第二行数据,将第二行数据同时给到第一组卷积矩阵N个PE、第二组卷积矩阵N个PE中;
读取RAM的第三行数据,将第三行数据同时给到第一组卷积矩阵N个PE、第二组卷积矩阵N个PE、第三组卷积矩阵N个PE;
2)第二个时钟周期内,读取RAM第四行数据,第二组卷积矩阵N个PE的数据准备完毕,完成填充后的图像帧的第二行像素的卷积;第二行像素的卷积计算完毕后,第二组卷积矩阵PE阵列输出数据组成N*[(N/4)+1]bits数据,输出到RAM的第二行数据中;第三组卷积矩阵N个PE接收第四行数据;此时,第一组卷积矩阵N个PE处于空闲状态,接受第四行数据,准备数据做填充后的图像帧第四行像素的卷积;
3)第三个时钟周期内,读取RAM第五行数据,第三组卷积矩阵N个PE的数据准备完毕,完成填充后的图像帧的第三行像素的卷积;第三行卷积计算完毕后,第三组卷积矩阵N个PE阵列输出数据组成N*[(N/4)+1]bits数据,输出到RAM的第三行数据中;第一组N个PE接收第五行数据;此时,第二组N个PE处于空闲状态,接受第五行数据,准备做填充后的图像帧第五行像素的卷积;
4)第N个时钟周期内,读取RAM第N+2行数据,分别送到第一组卷积矩阵N个PE、第二组卷积矩阵N个PE、第三组卷积矩阵N个PE,分别完成或准备三行的卷积计算;
所述第一层pooling计算,包括:
5)对N*N图像进行pooling计算,输出(N/2)*(N/2)图像;
6)将RAM均分为两个部分,即pRAM1、pRAM2;1~[(N/4)+2]行的数据存储于pRAM1中,[(N/4)+3]~[(N/2)+2]行的数据存储于pRAM2中;
所述第二层卷积计算,输入第一层卷积计算、第一层pooling计算的输出数据,即(N/2)*(N/2)图像,已扩展为[(N/2)+2]*[(N/2)+2]图像;卷积核心为M*M矩阵,步长为1;则需要(N/2)*(N/2)次M*M卷积的计算量;卷积矩阵共有N*M个PE,对[(N/2)+2]*[(N/2)+2]图像的卷积,需要卷积PE核心N/2*M个,将N*M个PE分为两块,每块又分为三组,每组N/2个卷积核心;则每个时钟周期执行2*N/2个=N个M*M卷积;即,每块PE阵列每个时钟周期执行一行N/2个M*M卷积,两块PE阵列同时执行计算,也就是N/4个时钟周期执行完第二层卷积;包括:
7)第一块PE阵列的第一组N/2个PE读取pRAM1第一行数据;同时,第二块PE阵列的第一组N/2个PE读取pRAM2第一行数据;第一块PE阵列和第二块PE阵列同时工作;
8)第一块PE阵列的第一组N/2个PE读取pRAM1第二行数据;同时,第二块PE阵列的第一组N/2个PE读取pRAM2第二行数据;第一块PE阵列和第二块PE阵列同时工作;
9)第一块PE阵列的第一组N/2个PE读取pRAM1最后一行数据;同时,第二块PE阵列的第一组N/2个PE读取pRAM2最后一行数据;第一块PE阵列和第二块PE阵列同时工作;
所述第二层pooling计算,包括:
10)对(N/2)*(N/2)图像进行pooling计算,输出(N/4)*(N/4)图像;
11)将RAM均分为四个部分,即pRAM1’、pRAM2’、pRAM3’、pRAM4’;1~[(N/4)-3]行数据存储于pRAM1’,[(N/4)-4]~[(N/4)-1]行数据存储于pRAM2’,[(N/4)-2]~[(N/4)+1]行数据存储于pRAM3’,(N/4)~[(N/4)+2]行数据存储于pRAM4’;
所述第三层卷积计算,输入(N/4)*(N/4)图像,已扩展为[(N/4)+2]*[(N/4)+2]图像;卷积核心为M*M矩阵,步长为1;需要(N/4)*(N/4)次M*M卷积的计算量;卷积矩阵共有N*M个PE,对(N/4)*(N/4)的卷积,需要卷积PE核心N/2*M个;PE可以分为四块,每块又分为三组,每组(N/4)个卷积计算核心,则每个时钟周期执行4块*(N/4)个=N个M*M卷积,即,每块PE阵列每个时钟周期执行一行(N/4)个M*M卷积,四块PE阵列同时执行计算,也就是2个时钟周期执行完第三层卷积,包括:
12)第一块PE阵列的第一组(N/4)个PE读取pRAM1’第一行数据,同时,第二块PE阵列的第一组(N/4)个PE读取pRAM2’第一行数据,第三块PE阵列的第一组(N/4)个PE读取pRAM3’第一行数据,第四块PE阵列的第一组(N/4)个PE读取pRAM4’第一行数据;
13)第一块PE阵列的第一组(N/4)个PE读取pRAM1’第二行数据,同时,第二块PE阵列的第一组(N/4)个PE读取pRAM2’第二行数据,第三块PE阵列的第一组(N/4)个PE读取pRAM3’第二行数据,第四块PE阵列的第一组(N/4)个PE读取pRAM4’第二行数据;
14)第一块PE阵列的第一组(N/4)个PE读取pRAM1’最后一行数据,同时,第二块PE阵列的第一组(N/4)个PE读取pRAM2’最后一行数据,第三块PE阵列的第一组(N/4)个PE读取pRAM3’最后一行数据,第四块PE阵列的第一组(N/4)个PE读取pRAM4’最后一行数据;
所述第三层pooling计算,包括:
15)输入(N/4)*(N/4)图像进行pooling,输出(N/8)*(N/8)的图像;
16)存储第三层pooling计算输出数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于山东领能电子科技有限公司,未经山东领能电子科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810179570.X/1.html,转载请声明来源钻瓜专利网。





