导言
跟着近些年深度学习的迅速开展和广泛的运用,卷积神经网络(CNN)已经成为检测和辨认范畴最好的办法,它能够自动地从数据集中学习提取特征,并且网络层数越多,提取的特征越有全局性。经过部分衔接和权值同享能够进步模型的泛化才能,大幅度进步了辨认分类的精度。并且跟着物联网的开展,布置嵌入式端的卷积神经网络要处理很多的数据,这将会耗费很多的资源与能量,而嵌入式设备通常用电池保持作业,频频替换电池将会进步本钱,因而关于揣度阶段的运算加快以及低功耗规划有重要实践意义。
CNN的不同卷积核的运算之间是彼此独立的,并且全衔接层的矩阵乘法不同行之间也是独立的,因而神经网络的揣度在CPU渠道上串行核算的办法是十分低效的。GPU能够经过流处理器完结必定的并行性,可是缺少关于网络并行结构的深度探究,不是最优的计划。而依据FPGA的神经网络能够更好地完结网络并行核算与资源复用,因而本文选用FPGA加快卷积神经网络运算。
此前已有一些依据FPGA的卷积神经网络加快器,WANG D规划了流水线卷积核算内核;宋宇鲲等人针对激活函数进行规划优化;王昆等人经过ARM+FPGA软硬件协同规划的异构体系加快神经网络;张榜经过双缓冲技能与流水线技能对卷积优化。本文针对卷积神经网络的并行性以及数据与权值的稀少性,对卷积层和全衔接层进行优化,依据卷积核的独立性规划单指令多数据(Single Instruction MulTIple Data,SIMD)的卷积与流水线结构,进步核算速度与资源功率,运用全衔接层数据极大的稀少性,规划稀少矩阵乘法器削减核算冗余,然后对模型参数定点优化,终究将试验成果与CPU、GPU渠道以及基准规划进行比较剖析。
1 、CNN模型与网络参数
1.1 CNN模型
CNN是依据多层感知机的神经网络结构,典型的CNN模型由输入层、卷积层、全衔接层、输出层和分类层组成,如图1所示。由输入层读取图画数据,由卷积层经过多个卷积核别离和输入图卷积生成多个特征图,再由池化层降维提取特征图信息。经过几个卷积层后,再将特征图展开成向量,输入给全衔接层,经过全衔接层与输出层的矩阵运算得到输出,然后再经过Softmax分类层得到分类概率输出。
本文CNN模型结构如图2所示,该结构包含两个卷积层、两个池化层、一个全衔接层,一个输出层、一个运用Softmax的分类层,其间激活函数不算作一层,共7层的网络结构。其间两个卷积层的输出特征图个数别离为16、32,卷积核巨细为3×3,移动步长为1,输出尺度与输入相同,体系运用线性批改单元(Rectified Linear Units,ReLU)作为激活函数。全衔接层和输出层别离有1 024和40个神经元。由图2核算得权值与偏置的数量,本文模型共4 765 416个参数,其间全衔接层占了99%的参数。
因为分类层是用输出层的值经过Softmax函数求得每个分类的概率,而Softmax函数的运算耗费很多的运算资源,并且对成果没有影响,这是不必要的运算开支,因而用输出值来判别即可。
1.2 CNN网络参数
依据所选的网络结构,本文运用TensorFlow结构建立模型,学习率设置为0.000 1,运用自适应学习率优化算法Adam加快模型收敛,练习挑选ReLU激活函数添加模型参数的稀少性,运用穿插熵作为丢失函数,参加L2正则化项减小过拟合。练习了50轮后,模型在ORL人脸数据库的正确率到达95%,满意实践运用需求。
神经网络模型揣度下降必定的精度不会影响准确率,并且在FPGA上定点数比起浮点数的核算更有功率,所以将模型参数由32 bit浮点数量化为16 bit定点数,由深度紧缩[6]中的办法,将16 bit的定点数权值再用8 bit的索引表明,索引表的值共28=256个,然后经过反向传达算法[7]更新索引表后,将索引和索引表存在外部存储器中。
2、 CNN体系硬件规划
本体系针对CNN模型结构以及数据与参数的特色进行规划和优化,卷积同一层内不同特征图的核算有天然的并行性,不同层之间因为不是独立的,无法一起进行核算,而全衔接层和输出层都能够运用卷积层的PE来完结乘法运算。体系规划如图3所示。
首要经过控制器从外部存储器DDR3中读取图画数据到输入缓冲区,输入缓冲区经过移位寄存器规划,经过固定窗口读取数据。读取权值索引到权值缓冲区,然后由索引读取权值输入给卷积的处理单元(Processing Element,PE),经过每层的卷积后加上偏置,用ReLU函数激活,再经过池化操作降维,然后特征图经过非零检测模块核算稀少性,读取对应的非零神经元的权值,然后由稀少矩阵乘法器(Sparse Matrix-Vector MulTIplicaTIon,SPMV)完结矩阵乘法,加上偏置后输出给输出层。输出层复用卷积层的PE完结矩阵乘法,然后遍历输出值求出最大值对应的神经元序号即为猜测值。
2.1 卷积层硬件规划优化
如图4所示,卷积层选用移位寄存器作为输入缓存,本文卷积层的卷积核尺度为3×3,每次读取9个权值,运用9个定点小数乘法器,然后运用4层加法树结构将成果与偏置相加。然后经过ReLU函数激活,该函数表达式为y=max(0,x),因而只需判别输入数据的符号位即可,运用一个数据挑选器即可完结运算,耗费一个时钟。第一层卷积的不同卷积核是独立核算的,所以运用16个PE一起核算,然后经过流水线技能,能够在一个时钟周期内发生16个卷积输出,输出数据的推迟包含读取数据推迟和加法树的推迟。
2.2 池化层规划优化
池化层用于对输入特征图下降维度和提取信息,池化分为平均值池化和最大值池化,本文运用最大值池化,池化尺度为2×2,步长为2。池化层运用比较器得到最大值,经过两次比较得到成果。经研讨发现,池化操作不影响卷积操作,因而规划了池化与卷积的并行核算,如图5所示。并行操作节省了池化运算的时刻,加快了网络的核算速度。
2.3 全衔接层与输出层的规划与优化
2.3.1 全衔接层
全衔接层将一切输入特征图和输出向量相衔接,每个神经元的值由卷积层特征图加权求和得到。本文屡次试验发现全衔接层有很多为零的神经元,如图6所示。因而能够运用神经元的稀少性削减乘法的操作,规划如图7所示稀少矩阵乘法器。首要经过非零元检测模块,得到不为零的神经元,然后复用卷积层的PE来核算非零神经元与权值的乘加操作。这样能够重复运用运算资源,并大大下降运算的时刻复杂度,进步运算速度。
2.3.2 输出层
输出层对全衔接层神经元做矩阵运算,然后经过Softmax层得到一切分类的概率。可是因为Softmax函数含有指数运算,需求耗费很多运算资源和时刻,并且对成果没有影响,因而将Softmax层移除,直接运用输出层值的巨细来分类。本文屡次试验发现输出层没有稀少性,大部分神经元不为零,输出层的核算复用SPMV的第二个部分进行核算,由PE与串行加法器组成,别离核算输出层的40个分类的值,40个运算单元共用一路数据输入,选用滑动窗口读取数据,多路PE一起核算,由串行加法器输出成果。终究遍历求得输出值最大值,并输出分类成果。
3、 数据量化与模型紧缩
本文模型运用了两个卷积层、一个全衔接层、一个输出层的结构,运用参数量由前文所述有476万参数,而全衔接层又占了99%的参数,因而首要针对全衔接层进行数据紧缩。关于一切层的参数进行数据量化,从本来模型64 bit浮点数量化为16 bit定点数,然后用8 bit的索引,共256个同享的权值,然后经过反向传达算法[7]批改原始权值与同享权值的差值。紧缩率公式如下:
其间,n为参数量,b为量化的比特数,k为b bit能表明的类数(256类)。式(1)代入数据求得紧缩率大约为4倍。
4 、试验成果
体系规划运用Xilinx公司的ZYNQ-7000 xc7z020clg400-1芯片作为试验渠道,该芯片内部有85 000个逻辑单元、4.9 MB的Block RAM、220个DSP48单元、1 GB片外DRAM,满意本体系所需。CPU渠道运用Core i5 9400f,主频为2.9 GHz,GPU渠道运用GTX 1060,GPU主频为1.5 GHz,显存带宽为160 GB/s。将试验成果与CPU、GPU渠道以及基准规划[5]比照,资源运用情况如表1所示,试验成果如表2所示。
本文硬件渠道的作业频率为100 MHz,辨认每张图片时刻为0.27 ms,功耗为1.95 W,功能到达了27.74 GOPS/s,别离是CPU、GPU渠道的10.24倍、3.08倍,以及基准规划的1.56倍,能效比优于CPU、GPU渠道以及基准规划[5]。在数据量化为16 bit定点数之后,辨认率到达95%,没有形成精度丢失。
5、定论
本文规划了一种依据FPGA的卷积神经网络加快体系。首要运用ORL人脸数据库,在卷积神经网络模型LeNet-5上练习,然后用短定点数对神经网络进行量化,再运用索引与索引表的办法进一步紧缩模型的全衔接层,终究紧缩率到达了4倍。一起,从并行结构规划、流水线技能、时序兼并等办法添加体系并行性,经过对模型稀少性的运用,极大地加快了模型运算。本文运用的CNN模型紧缩办法和运用稀少性加快的办法理论上也适用于其他的硬件渠道,在嵌入式终端布置更具有优势。在与CPU、GPU渠道以及相关文献的规划的比照剖析后,本文规划在功能和能耗比上都优于此前的计划。
责任编辑:gt