[发明专利]应用于二值化卷积神经网络的硬件加速器及其数据处理方法有效
申请号: | 201911055498.0 | 申请日: | 2019-10-31 |
公开(公告)号: | CN110780923B | 公开(公告)日: | 2021-09-14 |
发明(设计)人: | 杜高明;涂振兴;陈邦溢;杨振文;张多利;宋宇鲲;李桢旻 | 申请(专利权)人: | 合肥工业大学 |
主分类号: | G06F9/30 | 分类号: | G06F9/30;G06N3/04;G06N3/063;G06N3/08 |
代理公司: | 安徽省合肥新安专利代理有限责任公司 34101 | 代理人: | 陆丽莉;何梅生 |
地址: | 230009 安*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 应用于 二值化 卷积 神经网络 硬件 加速器 及其 数据处理 方法 | ||
1.一种应用于二值化卷积神经网络的硬件加速器,其特征是:所述二值化卷积神经网络包括:K层二值化卷积层、K层激活函数层、K批量标准化层、K层池化层以及一层全连接分类输出层;并将所述批量标准化层中的训练参数个数合并为一个;
所述二值化卷积神经网络对大小为N×M的输入二值化灰度图片进行训练,得到每一层的神经网络训练参数;
所述的硬件加速电路包括:神经网络参数存储模块、矩阵生成器模块、卷积计算阵列模块、池化层模块以及全局控制模块;
所述神经网络参数存储模块中预存有所述输入二值化灰度图片和每一层的神经网络训练参数;所述神经网络训练参数包括:权重参数、批量标准化参数;且所存入的输入二值化灰度图片是以数据“0”表示所述二值化灰度图片中像素点“-1”,以数据“1”表示所述二值化灰度图片中像素点“1”;
所述矩阵生成器模块是由数据输入电路、特征图的数据寄存器组、数据输出电路组成;
定义所述二值化卷积神经网络中的当前层数为k,并初始化k=1;
在二值化卷积神经网络的第k层计算下,所述全局控制模块发送第一次矩阵生成开始信号作为输入特征图中若干个行的第一次滑动计算给所述矩阵生成器模块;若k=1,则所述输入特征图为输入二值化灰度图片,若k1,则所述输入特征图为每一层的中间特征图;
所述数据输入电路接收到矩阵生成开始信号之后,并根据当前滑动计算的类型分别进行处理:
若当前滑动计算的类型为上边缘计算,则在第一个周期的上升沿到来时,从所述神经网络参数存储模块中读出当前滑动计算下的第一行输入特征图的数据存入所述数据寄存器组中的第一个寄存器中;在第二个周期的上升沿到来时,将所述第一个寄存器中的数据存入第二个寄存器中,再从所述神经网络参数存储模块中读出当前滑动计算下的第二行输入特征图的数据存入所述数据寄存器组中的第一个寄存器中,由所述数据输出电路输出第一个寄存器和第二个寄存器中的数据;
若当前滑动计算的类型为非边缘计算,则在第一个周期的上升沿到来时,从所述神经网络参数存储模块中读出当前滑动计算下的第一行输入特征图的数据存入所述数据寄存器组中的第一个寄存器中;在第二个周期的上升沿到来时,将所述第一个寄存器中的数据存入第二个寄存器中,再从所述神经网络参数存储模块中读出当前滑动计算下的第二行输入特征图的数据存入所述数据寄存器组中的第一个寄存器中;在第三个周期的上升沿到来时,将所述第二个寄存器中的数据存入第三个寄存器中,将所述第一个寄存器中的数据存入第二个寄存器中,再从所述神经网络参数存储模块中读出当前滑动计算下的第三行输入特征图的数据存入所述数据寄存器组中的第一个寄存器中,由所述数据输出电路输出第一个寄存器、第二个寄存器和第三个寄存器中的数据;
若当前滑动计算的类型为下边缘计算,则在第一个周期的上升沿到来时,将所述第三个寄存器中存入的当前滑动计算下的倒数第三行输入特征图的数据移出,将所述第二个寄存器中当前滑动计算下的倒数第二行输入特征图的数据存入第三个寄存器中,将所述第一个寄存器中当前滑动计算下的倒数第一行输入特征图的数据存入第二个寄存器中,由所述数据输出电路输出第二个寄存器和第三个寄存器中的数据;
所述卷积计算阵列模块是由参数读取模块、6:2压缩树模块、输出接口模块组成;
在二值化卷积神经网络的第k层计算下,所述参数读取模块判断获取数据输出电路输出的当前滑动计算下的数据作为输入数据,并从所述神经网络参数存储模块中读取当前滑动计算下的神经网络训练参数后一起发送给所述6:2压缩树模块;
所述6:2压缩树模块由同或门阵列、popcount模块和加法器组成;
所述同或门阵列接收当前滑动计算下的输入数据和神经网络训练参数,并根据当前滑动计算的类型分别进行处理,得到同或结果:
若当前滑动计算的类型为上边缘计算,且为左边缘计算,则将权重参数的[4:5]位与第二个寄存器给出的数据的[0:1]位取同或运算,将权重参数的[7:8]位与第一个寄存器给出的数据的[0:1]位取同或运算;
若当前滑动计算的类型为上边缘计算,且非左右边缘计算,则将权重参数的[3:5]位与第二个寄存器给出的特征图的数据的[a:a+2]位取同或运算,将权重参数的[6:8]位与第一个寄存器给出的数据的[a:a+2]位取同或运算,其中,0≤a≤M;
若当前滑动计算的类型为上边缘计算,且为右边缘计算,则将权重参数的[3:4]位与第二个寄存器给出的据的[M-1:M]位取同或运算,将权重参数的[6:7]位与第一个寄存器给出的数据的[M-1:M]位取同或运算;
若当前滑动计算的类型为非上下边缘计算,且为左边缘计算,则将权重参数的[1:2]位与第三个寄存器给出的数据的[0:2]位取同或运算,将权重参数的[4:5]位与第二个寄存器给出的数据的[0:2]位取同或运算,将权重参数的[7:8]位与第一个寄存器给出的数据的[0:2]位取同或运算;
若当前滑动计算的类型为非上下边缘计算,且非左右边缘计算,则将权重参数的[0:2]位与第三个寄存器给出的数据的[c:c+2]位取同或运算,将权重参数的[3:5]位与第二个寄存器给出的数据的[c:c+2]位取同或运算,将权重参数的[6:8]位与第一个寄存器给出的数据的[c:c+2]位取同或运算,其中,0≤c≤M;
若当前滑动计算的类型为非上下边缘计算,且为右边缘计算,则将权重参数的[0:1]位与第三个寄存器给出的数据的[M-1:M]位取同或运算,将权重参数的[3:4]位与第二个寄存器给出的数据的[M-1:M]位取同或运算,将权重参数的[6:7]位与第一个寄存器给出的数据的[M-1:M]位取同或运算;
若当前滑动计算的类型为下边缘计算,且为左边缘计算,则将权重参数的[1:2]位与第三个寄存器给出的数据的[0:1]位取同或运算,则将权重参数的[4:5]位与第二个寄存器给出的数据的[0:1]位取同或运算;
若当前滑动计算的类型为下边缘计算,且为非左右边缘计算,则将权重参数的[0:2]位与第三个寄存器给出的数据的[b:b+2]位取同或运算,将权重参数的[3:5]位与第二个寄存器给出的数据的[b:b+2]位取同或运算,其中,0≤b≤M;
若当前滑动计算的类型为下边缘计算,且为右边缘计算,则将权重参数的[0:1]位与第三个寄存器给出的数据的[M-1:M]位取同或运算,将权重参数的[3:4]位与第二个寄存器给出的数据的[M-1:M]位取同或运算;
所述popcount模块对所述同或结果中的“1”进行计数,得到计数结果;
所述加法器将计数结果和所述批量标准化参数进行累加,得到的累加结果取符号位后,作为第k层二值化卷积层的输出特征图;
第k层池化层对所述第k层二值化卷积层的输出特征图进行池化处理,得到的池化结果作为第k+1层二值化卷积层的输入特征图;
若k=K时,则第K-1层池化层的输出结果作为所述全连接分类输出层的输入特征图,再经过在二值化卷积神经网络的第K层计算,再由所述加法器得到的累加结果并取符号位后作为所述硬件加速器对所述二值化灰度图片中数字的识别结果。
2.一种应用于二值化卷积神经网络的硬件加速器的数据处理方法,其特征是按如下步骤进行:
步骤1、构建二值化卷积神经网络包括:K层二值化卷积层、K层激活函数层、K批量标准化层、K层池化层以及一层全连接分类输出层;
步骤2、利用式(1)所示的批量标准化变换公式将所述批量标准化层中的四个训练参数E[A]、Var[A]、β、γ合并为一个参数C:
式(1)中,γ为标准化的扩展参数,β为标准化的平移参数,A为训练时一个小批量的数量,Var[A]为一次网络训练时,批量标准化层每一个小批量输入的平均值,E[A]为一次网络训练时,标量标准化层每一个小批量输入的方差值,ε是网络训练前预先设定的一个偏移参数,Vec_Len单个输入值的位宽;
步骤3、获取大小为N×M的灰度数字图片并进行二值化处理,得到输入二值化灰度图片;且所述输入二值化灰度图片是以数据“0”表示所述二值化灰度图片中像素点“-1”,以数据“1”表示所述二值化灰度图片中像素点“1”;
步骤4、利用所述二值化卷积神经网络对所述输入二值化灰度图片进行训练,得到每一层的神经网络训练参数;所述神经网络训练参数包括:权重参数、批量标准化参数;
步骤5、构建所述硬件加速电路包括:神经网络参数存储模块、矩阵生成器模块、卷积计算阵列模块、池化层模块以及全局控制模块;并将所述输入二值化灰度图片和每一层的神经网络训练参数存入所述神经网络参数存储模块中;
步骤6、定义所述二值化卷积神经网络中的当前层数为k,并初始化k=1;
步骤7、在二值化卷积神经网络的第k层计算下,所述全局控制模块发送第一次矩阵生成开始信号作为输入特征图中若干个行的第一次滑动计算给所述矩阵生成器模块;若k=1,则所述输入特征图为输入二值化灰度图片,若k1,则所述输入特征图为每一层的中间特征图;
步骤8、所述矩阵生成器模块接收到矩阵生成开始信号之后,并根据当前滑动计算的类型分别进行处理:
若当前滑动计算的类型为上边缘计算,则在第一个周期的上升沿到来时,从所述神经网络参数存储模块中读出当前滑动计算下的第一行输入特征图的数据存入自身数据寄存器组中的第一个寄存器中;在第二个周期的上升沿到来时,将所述第一个寄存器中的数据存入第二个寄存器中,再从所述神经网络参数存储模块中读出当前滑动计算下的第二行输入特征图的数据存入所述第一个寄存器中;
若当前滑动计算的类型为非边缘计算,则在第一个周期的上升沿到来时,从所述神经网络参数存储模块中读出当前滑动计算下的第一行输入特征图的数据存入所述第一个寄存器中;在第二个周期的上升沿到来时,将所述第一个寄存器中的数据存入第二个寄存器中,再从所述神经网络参数存储模块中读出当前滑动计算下的第二行输入特征图的数据存入所述第一个寄存器中;在第三个周期的上升沿到来时,将所述第二个寄存器中的数据存入第三个寄存器中,将所述第一个寄存器中的数据存入第二个寄存器中,再从所述神经网络参数存储模块中读出当前滑动计算下的第三行输入特征图的数据存入所述第一个寄存器中;
若当前滑动计算的类型为下边缘计算,则在第一个周期的上升沿到来时,将所述第三个寄存器中存入的当前滑动计算下的倒数第三行输入特征图的数据移出,将所述第二个寄存器中当前滑动计算下的倒数第二行输入特征图的数据存入第三个寄存器中,将所述第一个寄存器中当前滑动计算下的倒数第一行输入特征图的数据存入第二个寄存器中;
步骤9、在二值化卷积神经网络的第k层计算下,所述卷积计算阵列模块判断获取矩阵生成器模块输出的当前滑动计算下的数据作为输入数据,并从所述神经网络参数存储模块中读取当前滑动计算下的神经网络训练参数,从而根据当前滑动计算的类型分别进行处理,得到同或结果:
若当前滑动计算的类型为上边缘计算,且为左边缘计算,则将权重参数的[4:5]位与第二个寄存器给出的数据的[0:1]位取同或运算,将权重参数的[7:8]位与第一个寄存器给出的数据的[0:1]位取同或运算;
若当前滑动计算的类型为上边缘计算,且非左右边缘计算,则将权重参数的[3:5]位与第二个寄存器给出的特征图的数据的[a:a+2]位取同或运算,将权重参数的[6:8]位与第一个寄存器给出的数据的[a:a+2]位取同或运算,其中,0≤a≤M;
若当前滑动计算的类型为上边缘计算,且为右边缘计算,则将权重参数的[3:4]位与第二个寄存器给出的据的[M-1:M]位取同或运算,将权重参数的[6:7]位与第一个寄存器给出的数据的[M-1:M]位取同或运算;
若当前滑动计算的类型为非上下边缘计算,且为左边缘计算,则将权重参数的[1:2]位与第三个寄存器给出的数据的[0:2]位取同或运算,将权重参数的[4:5]位与第二个寄存器给出的数据的[0:2]位取同或运算,将权重参数的[7:8]位与第一个寄存器给出的数据的[0:2]位取同或运算;
若当前滑动计算的类型为非上下边缘计算,且非左右边缘计算,则将权重参数的[0:2]位与第三个寄存器给出的数据的[c:c+2]位取同或运算,将权重参数的[3:5]位与第二个寄存器给出的数据的[c:c+2]位取同或运算,将权重参数的[6:8]位与第一个寄存器给出的数据的[c:c+2]位取同或运算,其中,0≤c≤M;
若当前滑动计算的类型为非上下边缘计算,且为右边缘计算,则将权重参数的[0:1]位与第三个寄存器给出的数据的[M-1:M]位取同或运算,将权重参数的[3:4]位与第二个寄存器给出的数据的[M-1:M]位取同或运算,将权重参数的[6:7]位与第一个寄存器给出的数据的[M-1:M]位取同或运算;
若当前滑动计算的类型为下边缘计算,且为左边缘计算,则将权重参数的[1:2]位与第三个寄存器给出的数据的[0:1]位取同或运算,则将权重参数的[4:5]位与第二个寄存器给出的数据的[0:1]位取同或运算;
若当前滑动计算的类型为下边缘计算,且为非左右边缘计算,则将权重参数的[0:2]位与第三个寄存器给出的数据的[b:b+2]位取同或运算,将权重参数的[3:5]位与第二个寄存器给出的数据的[b:b+2]位取同或运算,其中,0≤b≤M;
若当前滑动计算的类型为下边缘计算,且为右边缘计算,则将权重参数的[0:1]位与第三个寄存器给出的数据的[M-1:M]位取同或运算,将权重参数的[3:4]位与第二个寄存器给出的数据的[M-1:M]位取同或运算;
步骤10、对所述同或结果中的“1”进行计数,得到计数结果;
步骤11、采用式(2)对计数结果和所述批量标准化参数进行累加,得到累计结果Y2并取符号位后,得到中间结果;
式(2)中,X0,1是标准化单个输入值,popcount(X0,1)代表输入值X0,1中“1”的个数;
得到的累加结果步骤12、将所述中间结果作为第k层二值化卷积层的输出特征图,利用第k层池化层对所述第k层二值化卷积层的输出特征图进行池化处理,得到第k层池化结果;
步骤13、将第k层池化结果作为第k+1层二值化卷积层的输入特征图,并将k+1赋值给k后,判断kK是否成立,若成立,则表示第K层池化层的输出结果为所述全连接分类输出层的输入特征图;
步骤14、所述全连接分类输出层的输入特征图经过步骤7-步骤11的处理,得到的中间结果作为所述硬件加速器对所述二值化灰度图片中数字的识别结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于合肥工业大学,未经合肥工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911055498.0/1.html,转载请声明来源钻瓜专利网。