一种基于异构脉冲神经网络的人脸识别的fpga芯片
技术领域
1.本发明属于类脑智能和人工智能技术领域,具体涉及一种基于异构脉冲神经网络的人脸识别的fpga芯片。
背景技术:2.人脸识别已经渗透进我们生活中的各个领域,如安防监控,移动支付等。但是目前人脸识别主要依靠传统的神经网络,或传统机器学习。这些方法算法模型大,计算资源需求大,能效低,往往要许多张gpu才能支持其工作,难以在嵌入式设备中实现人脸识别应用。在大脑中,仅需2w的功耗就能完成许多物体的识别。受人脑启发的脉冲神经网络可以很好地模拟人脑的特性,以脉冲序列为载体进行传递信息,而不是传统的实值,从而能够以高能效、低资源需求地进行人脸识别,给在嵌入式设备中实现人脸识别提供了新的思路。目前脉冲神经网络的研究已经有了一些成果,但它的应用仍然处于起步阶段。像是temportron,spikepro等模型,一方面这些算法涉及大量指数运算,难以在低成本、高速的嵌入式中实现人脸识别,另一方面,典型的脉冲神经网络特征提取能力较弱,难以胜任人脸识别工作。
3.因此,有必要开发一种基于异构脉冲神经网络的人脸识别的fpga芯片。
技术实现要素:4.本发明的目的在于提供一种基于异构脉冲神经网络的人脸识别的fpga芯片,用于人脸识别,在保证识别率的情况下,能降低人脸识别功耗。
5.本发明所述的一种基于异构脉冲神经网络的人脸识别的fpga芯片,包括编码网络模块、分类器、数据缓存模块和全局控制器;
6.所述编码网络模块包括编码网络控制器,以及分别与编码网络控制器连接的外部脉冲交互单元和多个物理神经元,外部脉冲交互单元分别与各物理神经元连接;其中,所述外部脉冲交互单元用于负责脉冲的存储与发送;所述物理神经元用于负责膜电位更新及各项权重的学习;
7.所述编码网络控制器用于接收全局控制器发出的信号,并分发控制信号与输入数据地址,控制编码网络模块中物理神经元开始或停止膜电位更新、权重更新,以及协调控制外部脉冲交互单元与物理神经元之间进行脉冲交互;
8.所述分类器包括分类器控制器,以及分别与分类器控制器连接的误差管理单元、权重更新单元、第二膜电位更新单元、权重存储器、第二膜电位存储器、脉冲记录存储器和误差记录存储器;所述脉冲记录存储器和误差记录存储器分别与误差管理单元连接;所述第二膜电位更新单元分别与脉冲记录存储器和第二膜电位存储器连接;所述权重存储器分别与权重更新单元、第二膜电位更新单元连接;所述权重更新单元与误差管理单元连接;其中,所述分类器控制器用于接收全局控制器的控制信号,确定分类器处于分类阶段还是学习阶段,并分发各个存储器地址与读写信号;所述误差管理单元用于负责误差计算、存储以及发送误差给权重更新单元;所述权重更新单元用于负责权重的更新;所述膜电位更新单
元用于负责对膜电位进行累积判断是否超过阈值,若超过则发射脉冲,并重置膜电位;所述权重存储器、第二膜电位存储器、脉冲记录存储器和误差记录存储器均用于存储数据;
9.所述数据缓存模块分别与编码网络模块和分类器连接,所述数据缓存模块缓存编码网络模块编码后的脉冲信号,并送入分类器进行分类,以防止分类器处理速度较慢时编码后数据丢失;
10.所述全局控制器分别与编码网络模块和分类器连接,所述全局控制器用于统筹控制整块芯片,发放控制信号给下级控制器,在无监督学习阶段,控制编码网络模块编码并更新权重,在有监督学习阶段,控制编码网络模块进行编码,以及控制分类器进行分类并更新权重,在常规工作阶段,控制编码网络模块编码,分类器进行分类。
11.可选地,所述物理神经元包括神经元控制器,以及分别与神经元控制器连接的内部脉冲交互单元、第一膜电位更新单元、前向权重管理单元、纵向抑制管理单元、阈值电压管理单元、前向权重存储器、纵向抑制存储器、阈值电压存储器和第一膜电位存储器;所述内部脉冲交互单元分别与第一膜电位更新单元、前向权重管理单元、纵向抑制管理单元和阈值电压管理单元连接;所述第一膜电位更新单元分别与第一膜电位存储器、前向权重管理单元、纵向抑制管理单元和阈值电压管理单元连接;所述前向权重管理单元与前向权重存储器连接;所述纵向抑制管理单元与纵向抑制存储器连接;所述阈值电压管理单元与阈值电压存储器连接;
12.其中,所述权重管理单元、纵向抑制管理单元和阈值电压管理单元,用于在编码阶段对应参数运算后发送至第一膜电位更新单元,以及在片上学习阶段用于负责对对应参数进行更新;
13.所述膜电位更新单元用于负责对接收到的参数进行累积更新,当达到阈值时清零膜电位,并发射脉冲;
14.所述前向权重存储器、纵向抑制存储器、阈值电压存储器和第一膜电位存储器用于存储数据;
15.所述神经元控制器用于接收编码网络控制器控制信号,控制物理神经元内部不同单元的工作,发放物理神经元内部存储器读写信号与地址,并控制物理神经元内部脉冲交互单元传输脉冲信号给其他物理神经元。
16.可选地,所述第一膜电位更新单元包括第一加法器、第二加法器、第一mux数据选择器和第一比较器;
17.所述第一加法器分别与前向权重管理单元、纵向抑制管理单元连接;
18.所述第二加法器分别与第一加法器和第一膜电位存储器连接;
19.所述第一比较器分别与阈值电压管理单元和第二加法器连接;
20.所述第一mux数据选择器分别与第二加法器和第一膜电位存储器连接;
21.其中,第一加法器用于将前向权重管理单元的输出电流与纵向抑制管理单元的抑制电流相加,进行膜电位累积的第一步;
22.所述第二加法器用于将第一加法器的输出与对应物理神经元前一个时间步的膜电位相加,得到当前物理神经元的膜电位;
23.所述第一mux数据选择器用于根据第一比较器结果,若膜电位大于阈值则将当前膜电位置0,反之保留膜电位;
24.所述第一比较器用于比较当前膜电位与动态阈值管理单元输出的阈值电压大小,若大于阈值电压则产生脉冲,即输出1,脉冲送往内部脉冲交互单元,同时在第一膜电位更新单元内部也通过该脉冲判断膜电位是否置0。
25.其中,iw表示前向权重管理单元输出电流,作为输入图像的加权和,iq表示纵向抑制管理单元输出电流,上一时刻发放脉冲的物理神经元的纵向抑制权重求和,vth表示物理神经元的阈值电压。
26.可选地,所述前向权重管理单元包括第一乘法器、第二乘法器、第三乘法器、第三加法器、第四加法器、第五加法器、第二mux数据选择器、第三mux数据选择器和第一寄存器;
27.所述第一乘法器与第四加法器连接;
28.所述第二乘法器分别与前向权重存储器、第三乘法器和第五加法器连接;
29.所述第二mux数据选择器分别与第五加法器和第一寄存器连接;
30.所述第四加法器分别与第三乘法器和第三mux数据选择器连接;
31.所述第三加法器分别与第三mux数据选择器和前向权重存储器连接;
32.其中,所述第一乘法器用于获取外部的图像输入像素值,内部脉冲交互单元所记录的神经元脉冲发放次数,以及完成图像输出与权重的乘法计算;
33.所述第二乘法器用于输入图像x与对应权重q的乘积运算;
34.所述第三乘法器用于与将第二乘法器输出与内部脉冲交互单元记录的脉冲计数相乘,并将结果送往第四加法器进行下一步计算;
35.所述第三加法器用于将当前权重与权重增值相加完成权重的更新;
36.所述第四加法器用于完成权重增加值的计算;
37.所述第五加法器用于完成前向权重电流的累积求和;
38.所述第二mux数据选择器用于在新的时间步到来的时候将放有前向电流累积和的第一寄存器清零;
39.所述第三mux数据选择器用于接收来自控制器的信号,判断是否更新权重,不更新的话,将权重增加值变为0;
40.所述第一寄存器用于记录当前时间步的前向电流总和。
41.可选地,所述纵向抑制管理单元包括第六加法器、第七加法器、第八加法器、第四mux数据选择器、第五mux数据选择器、第六mux数据选择器和第二寄存器;
42.所述第四mux数据选择器分别与纵向抑制存储器和第六加法器连接;
43.所述第五mux数据选择器分别与第六加法器和第二寄存器连接;
44.所述第七加法器分别与纵向抑制存储器和第四mux数据选择器连接;
45.所述第六mux数据选择器分别与第七加法器和第八加法器连接;
46.其中,所述第六加法器用于将第二寄存器中的已累积纵向抑制电流与第四mux数据选择器送出的纵向抑制电流相加,完成当前时间步的纵向抑制电流累积;
47.所述第七加法器用于将当前纵向抑制权重与纵向抑制权重增量相加完成纵向抑制权重的更新;
48.所述第八加法器用于计算内部脉冲交互单元送出的神经元对一幅图像编码时产生的脉冲数量n与目标脉冲发射率p的差,从而计算纵向抑制增量;
49.所述第四mux数据选择器用于通过脉冲交互单元送出上一个时间步神经元发射脉
冲与否,判断是否产生神经元间的抑制,发射脉冲则选择纵向抑制权重,否则选择0;
50.所述第五mux数据选择器用于接收神经元控制器发放的控制信号,在新的时间步到来时,清零累积的纵向抑制电流,重新开始累积;
51.所述第六mux数据选择器用于接收神经元控制器发放的控制信号,判断是否进行更新,更新则通过纵向抑制增量,反之选择0;
52.所述第二寄存器用于存放当前时间步的累积纵向抑制电流。
53.可选地,所述阈值电压管理单元包括第九加法器、第十加法器和第七mux数据选择器,所述第七mux数据选择器分别与第九加法器和第十加法器连接;
54.所述第十加法器与阈值电压存储器连接;
55.其中,所述第九加法器用于计算动态阈值更新时的增量;
56.所述第十加法器用完成阈值更新,将当前阈值加上增量;
57.所述第七mux数据选择器用于接收神经元控制器发放的控制信号,判断是否进行更新,更新则通过阈值增量,反之选择0。
58.可选地,所述第二膜电位更新单元包括第八mux数据选择器、第十一加法器和第二比较器;
59.所述第十一加法器分别与纵向抑制管理单元、第二膜电位存储器和第八mux数据选择器连接;
60.所述第二比较器分别与第十一加法器和存放分类器固定阈值的寄存器单元连接;
61.其中,所述第八mux数据选择器用于通过分类器神经元膜电位大于阈值时产生的脉冲,来进行判断是否将膜电位置0,有脉冲则置0,反之保持;
62.所述第十一加法器用于累积分类器神经元膜电位;
63.所述第二比较器用于将当前膜电位与阈值进行比较,若大于阈值,则产生脉冲,即输出1,否则输出0。
64.可选地,所述权重更新单元包括第十二加法器、第四乘法器和第九mux数据选择器;所述第十二加法器分别与权重存储器、第四乘法器和第九mux数据选择器连接;第四乘法器分别与权重存储器、第八mux数据选择器连接;
65.其中,所述第四乘法器用于将权重与误差信号相乘,等于权重的增量;
66.第九mux数据选择器用于接收分类器控制器的控制信号判断是否要更新权重,若是,则选择权重增量,否则选择0;
67.所述第十二加法器用于完成权重的更新,将当前权重与增量相加。
68.本发明具有以下优点:
69.(1)提出了一个在保证识别率的情况下低功耗和高速vlsi硬件框架,用于人脸识别。把脉冲神经网络引入人脸识别中,又在典型脉冲神经网络中引入脉冲稀疏编码的特征提取方法,在保证识别率的情况下降低了人脸识别功耗。
70.(2)基于误差反传的脉冲神经网络分类器设计了简单高效的学习规则,避免了大量指数函数的出现,减少了乘法的使用,也减少了权重更新的比例,节省资源并提高处理性能,取得了良好的效果,具有应用价值和推广前景。
附图说明
71.图1为本实施例的流程图;
72.图2为本实施例的原理框图;
73.图3为本实施例中第一膜电位单元的原理框图(含第一膜电位存储器);
74.图4为本实施例中前向权重管理单元的原理框图(含前向权重存储器);
75.图5为本实施例中纵向抑制管理单元的原理框图(含纵向抑制存储器);
76.图6为本实施例中阈值电压管理单元的原理框图(含阈值电压存储器);
77.图7为本实施例中第二膜电位管理单元的原理框图(含第二膜电位存储器);
78.图8为本实施例中权重更新单元的原理框图(含权存储器);
79.图9为本实施例中在不同深度下,脉冲卷积神经网络系统的性能示意图。
具体实施方式
80.以下将结合附图对本发明进行详细的说明。
81.本发明以脉冲神经网络为基础理论设计方案框架,采用异构脉冲网络架构,分别对稀疏编码与特征提取的编码网络模块与分类器进行设计与优化,并对现有的神经元进行改进,使其易于硬件实现。最后根据优化后的异构人脸识别脉冲神经网络架构设计低功耗的人脸识别fpga芯片,并进行验证。
82.首先,根据不同资源要求的嵌入式应用分别确定编码网络模块与分类器的拓扑结构、量化参数精度,进行人脸识别网络模型的设计,然后根据得到的异构脉冲人脸识别模型设计神经形态架构和计算引擎,最后完成加速器设计并在fpga上验证设计原型,总体流程参见图1。
83.本实施例中,设计过程主要分为三个步骤:
84.1、设计针对人脸识别的异构脉冲神经网络模型;
85.2、设计异构脉冲神经网络架构和计算引擎;
86.3、fpga原型验证。
87.以下对各个步骤进行详细的说明:
88.1、设计针对人脸识别的异构脉冲神经网络模型。
89.步骤1-1,设计编码网络模块的结构
90.网络由图像输入像素与输出泄露积分点火(lif)神经元组成,输入与输出神经元采用全连接结构,输出神经元间则也有相互间两两相连的抑制突触,用于使输出脉冲更为稀疏。
91.输出神经元通过图像输入与相互抑制累计膜电压,当电压超过预先设定的阈值时,发射输出脉冲,膜电压重置为静息电位,如膜电压低于预先设定阈值,记录当前的电压值,并当膜电压低于静息电位时,将膜电压重置为静息电位0。将lif神经元模型的膜电位v根据以下离散模式的公式进行描述:
[0092]vj
(t)
←vj
(t-δt)n
leak
+∑ixiq
ij
+∑msm(t-δt)w
jm
[0093]
sj=δ(vj(t)-v
th
)
[0094]
其中:vj(t)表示神经元j在t时刻的膜电位,n
leak
表示每个时间步神经元膜电位的泄漏率,∑ixiq
ij
代表输入电流i的和,等于在t时刻输入图像的加权和,xi表示输入图像像
素,q
ij
表示输入图像像素i与输出神经元j对应的权重,∑msm(t-δt)w
jm
代表其他输出神经元给予的抑制电压,是其他输出神经元发射脉冲的加权和,sm(t-δt)表示上一时间步输出神经元m是否发射脉冲,是为1,反之为0,w
jm
表示输出神经元。δt为模拟的时间步长大小,本实施例中设置为0.156(1/64)ms,sj是在t时刻神经元j发射脉冲的值(0,1),当发射脉冲时为1,不发射脉冲时为0,v
th
是发射阈值大小,会根据脉冲设情况动态调整,发射脉冲则该神经元阈值增加,否则下降,以保证脉冲发射频率足够低。是单位脉冲函数。(x=vj(t)-v
th
)。
[0095]
网络的学习规则为:
[0096]
δq
ik
=αni(x
k-niq
ik
)
[0097]
δw
im
=β(nin
m-p2)
[0098]
其中:ni为神经元i的脉冲发射数量,p为脉冲目标发射概率,α,β为学习率。
[0099]
δq
ik
表示输入k与输出i之间的前向权重的增加值,xk表示第k个像素的像素值,q
ik
表示输入k与输出i之间的前向权重,δw
im
表示输出神经元间i与输出神经元m间的纵向抑制权重增加值,nm表示输出神经元m在一幅图像编码的过程中发放的脉冲数量。
[0100]
步骤1-2,根据想要输出的稀疏度,脉冲发射数量,嵌入式设备的资源确定编码网络模块的输出神经元数量,脉冲发射率等参数,用于网络训练以及fpga芯片的片上学习。
[0101]
步骤1-3,将编码后带有人脸特征的脉冲存储用于分类器进行人脸识别。
[0102]
步骤1-4,设计分类器的结构。
[0103]
分类器由全连接的积分点火(if)神经元组成,一共由两层if神经元,分别是隐藏层与输出层,该网络输入层由编码网络输出层构成。该网络中的if神经元通过接收脉冲来累计膜电位:
[0104]vj
(t)
←
∑
i,j
si(t)w
ij
[0105]
其中:vj(t)表示神经元j在t时刻的膜电位,∑
i,j
siw
ij
代表输入电流i的和,等于在t时刻输入脉冲的加权和,si(t)表示神经元接收的脉冲,w
ij
表示对应突触前(前一层)神经元i与突触后(后一层)神经元j的权重。δt为模拟的时间步长大小。与传统神经网络不同,分类器网络的输入与传递的信息均以脉冲的形式,这就使得在前馈过程中,可以使用选择器代替乘法器,从而节约硬件资源。
[0106]
步骤1-5,优化分类器的学习规则。
[0107]
对于典型的脉冲神经网络,损失函数通常以指数函数的形式出现,这使得片上学习实施困难,这里简化损失函数将其变为与目标脉冲的数量差,比如希望正确的输出神经元能够在每个时间步(共计64个)都能输出脉冲,实际该神经元只有一半的时间步发射了脉冲,故误差为32。反之,不正确的神经元则不希望其能够发射脉冲。这样损失函数就简化为了一个简单的减法运算,大大减少了运算量。同时误差的反传基于以下公式:
[0108][0109]
其中:为隐藏层误差,为损失函数,h
ji
为分类器前向权重,fj为神经元j是否发射过脉冲。基于以上误差,继续对学习规则进行优化:
[0110][0111]
其中,λ表示学习率。
[0112]
通过上述公式,在更新神经元间权重是能够跳过不活跃的神经元,从而减少神经元权重更新占比。
[0113]
2、设计异构脉冲神经网络架构和计算引擎。
[0114]
步骤2-1总体架构设计
[0115]
如图2所示,本实施例中,一种基于异构脉冲神经网络的人脸识别的fpga芯片,包括编码网络模块、分类器、数据缓存模块和全局控制器。所述编码网络模块包括编码网络控制器,以及分别与编码网络控制器连接的外部脉冲交互单元和多个物理神经元,外部脉冲交互单元分别与各物理神经元连接;其中,所述外部脉冲交互单元用于负责脉冲的存储与发送;所述物理神经元用于负责膜电位更新及各项权重的学习。所述编码网络控制器用于接收全局控制器发出的信号,并分发控制信号与输入数据地址,控制编码网络模块中物理神经元开始或停止膜电位更新、权重更新,以及协调控制外部脉冲交互单元与物理神经元之间进行脉冲交互。所述分类器包括分类器控制器,以及分别与分类器控制器连接的误差管理单元、权重更新单元、第二膜电位更新单元、权重存储器、第二膜电位存储器、脉冲记录存储器和误差记录存储器;所述脉冲记录存储器和误差记录存储器分别与误差管理单元连接;所述第二膜电位更新单元分别与脉冲记录存储器和第二膜电位存储器连接;所述权重存储器分别与权重更新单元、第二膜电位更新单元连接;所述权重更新单元与误差管理单元连接;其中,所述分类器控制器用于接收全局控制器的控制信号,确定分类器处于分类阶段还是学习阶段,并分发各个存储器地址与读写信号;所述误差管理单元用于负责误差计算、存储以及发送误差给权重更新单元;所述权重更新单元用于负责权重的更新;所述膜电位更新单元用于负责对膜电位进行累积判断是否超过阈值,若超过则发射脉冲,并重置膜电位;所述权重存储器、第二膜电位存储器、脉冲记录存储器和误差记录存储器均用于存储数据。所述数据缓存模块分别与编码网络模块和分类器连接,所述数据缓存模块缓存编码网络模块编码后的脉冲信号,并送入分类器进行分类,以防止分类器处理速度较慢时编码后数据丢失。所述全局控制器分别与编码网络模块和分类器连接,所述全局控制器用于统筹控制整块芯片,发放控制信号给下级控制器,在无监督学习阶段,控制编码网络模块编码并更新权重,在有监督学习阶段,控制编码网络模块进行编码,以及控制分类器进行分类并更新权重,在常规工作阶段,控制编码网络模块编码,分类器进行分类。
[0116]
如图2所示,本实施例中,所述物理神经元包括神经元控制器,以及分别与神经元控制器连接的内部脉冲交互单元、第一膜电位更新单元、前向权重管理单元、纵向抑制管理单元、阈值电压管理单元、前向权重存储器、纵向抑制存储器、阈值电压存储器和第一膜电位存储器;所述内部脉冲交互单元分别与第一膜电位更新单元、前向权重管理单元、纵向抑制管理单元和阈值电压管理单元连接;所述第一膜电位更新单元分别与第一膜电位存储器、前向权重管理单元、纵向抑制管理单元和阈值电压管理单元连接;所述前向权重管理单元与前向权重存储器连接;所述纵向抑制管理单元与纵向抑制存储器连接;所述阈值电压管理单元与阈值电压存储器连接。其中,所述权重管理单元、纵向抑制管理单元和阈值电压管理单元,用于在编码阶段对应参数运算后发送至第一膜电位更新单元,以及在片上学习阶段用于负责对对应参数进行更新。所述膜电位更新单元用于负责对接收到的参数进行累
积更新,当达到阈值时清零膜电位,并发射脉冲。所述前向权重存储器、纵向抑制存储器、阈值电压存储器和第一膜电位存储器用于存储数据。所述神经元控制器用于接收编码网络控制器控制信号,控制物理神经元内部不同单元的工作,发放物理神经元内部存储器读写信号与地址,并控制物理神经元内部脉冲交互单元传输脉冲信号给其他物理神经元。
[0117]
如图3所示,本实施例中,所述第一膜电位更新单元包括第一加法器1、第二加法器2、第一mux数据选择器3和第一比较器4。所述第一加法器1分别与前向权重管理单元、纵向抑制管理单元连接。所述第二加法器2分别与第一加法器1和第一膜电位存储器连接。所述第一比较器4分别与阈值电压管理单元和第二加法器2连接。所述第一mux数据选择器3分别与第二加法器2和第一膜电位存储器连接。其中,第一加法器1用于将前向权重管理单元的输出电流与纵向抑制管理单元的抑制电流相加,进行膜电位累积的第一步。所述第二加法器2用于将第一加法器的输出与对应物理神经元前一个时间步的膜电位相加,得到当前物理神经元的膜电位。所述第一mux数据选择器3用于根据第一比较器4结果,若膜电位大于阈值则将当前膜电位置0,反之保留膜电位。所述第一比较器4用于比较当前膜电位与动态阈值管理单元输出的阈值电压大小,若大于阈值电压则产生脉冲,即输出1,脉冲送往内部脉冲交互单元,同时在第一膜电位更新单元内部也通过该脉冲判断膜电位是否置0。
[0118]
如图3所示,图中的iw表示前向权重管理单元输出电流,作为输入图像的加权和,iq表示纵向抑制管理单元输出电流,上一时刻发放脉冲的物理神经元的纵向抑制权重求和,v
th
表示物理神经元的阈值电压。
[0119]
如图4所示,本实施例中,所述前向权重管理单元包括第一乘法器5、第二乘法器10、第三乘法器9、第三加法器6、第四加法器8、第五加法器11、第二mux数据选择器12、第三mux数据选择器7和第一寄存器13。所述第一乘法器5与第四加法器8连接。所述第二乘法器10分别与前向权重存储器、第三乘法器9和第五加法器11连接。所述第二mux数据选择器12分别与第五加法器11和第一寄存器13连接。所述第四加法器8分别与第三乘法器9和第三mux数据选择器7连接。所述第三加法器6分别与第三mux数据选择器7和前向权重存储器连接。其中,所述第一乘法器5用于获取外部的图像输入像素值,内部脉冲交互单元所记录的神经元脉冲发放次数,以及完成图像输出与权重的乘法计算,即前向权重更新公式(δq
ik
=αni(x
k-niq
ik
))中的niq
ik
这一项的计算。所述第二乘法器10用于输入图像x与对应权重q的乘积运算。所述第三乘法器9用于与将第二乘法器输出与内部脉冲交互单元记录的脉冲计数相乘,完成权重更新公式中的ni与括号内后一项相乘的功能,其结果送往第四加法器进行下一步计算。所述第三加法器6用于将当前权重与权重增值相加完成权重的更新。所述第四加法器8用于完成权重增加值的计算δq
ik
=αni(x
k-niq
ik
)。所述第五加法器11用于完成前向权重电流的累积求和。所述第二mux数据选择器12用于在新的时间步到来的时候将放有前向电流累积和的第一寄存器13清零。所述第三mux数据选择器7用于接收来自控制器的信号,判断是否更新权重,不更新的话,将权重增加值变为0。所述第一寄存器13用于记录当前时间步的前向电流总和。图4中的x表示输入图像的像素值,n表示内部脉冲交互单元所记录的神经元脉冲发放次数,即一个神经元在一副图像中发放的脉冲数量。
[0120]
如图5所示,本实施例中,所述纵向抑制管理单元包括第六加法器15、第七加法器18、第八加法器20、第四mux数据选择器14、第五mux数据选择器16、第六mux数据选择器19和第二寄存器17;所述第四mux数据选择器14分别与纵向抑制存储器和第六加法器15连接;所
述第五mux数据选择器16分别与第六加法器15和第二寄存器17连接;所述第七加法器18分别与纵向抑制存储器和第四mux数据选择器14连接;所述第六mux数据选择器19分别与第七加法器18和第八加法器20连接;其中,所述第六加法器15用于将第二寄存器17中的已累积纵向抑制电流与第四mux数据选择器14送出的纵向抑制电流相加,完成当前时间步的纵向抑制电流累积;所述第七加法器18用于将当前纵向抑制权重与纵向抑制权重增量相加完成纵向抑制权重的更新;所述第八加法器20用于计算内部脉冲交互单元送出的神经元对一幅图像编码时产生的脉冲数量n与目标脉冲发射率p的差,从而计算纵向抑制增量;所述第四mux数据选择器14用于通过脉冲交互单元送出上一个时间步神经元发射脉冲与否,判断是否产生神经元间的抑制,发射脉冲则选择纵向抑制权重,否则选择0;所述第五mux数据选择器16用于接收神经元控制器发放的控制信号,在新的时间步到来时(newtimestep=1),清零累积的纵向抑制电流,重新开始累积;所述第六mux数据选择器19用于接收神经元控制器发放的控制信号,判断是否进行更新,更新则通过纵向抑制增量,反之选择0;所述第二寄存器17用于存放当前时间步的累积纵向抑制电流。
[0121]
如图6所示,本实施例中,所述阈值电压管理单元包括第九加法器22、第十加法器24和第七mux数据选择器23,所述第七mux数据选择器23分别与第九加法器22和第十加法器24连接;所述第十加法器24与阈值电压存储器连接;其中,所述第九加法器22用于计算动态阈值更新时的增量;所述第十加法器24用完成阈值更新,将当前阈值加上增量;所述第七mux数据选择器23用于接收神经元控制器发放的控制信号,判断是否进行更新,更新则通过阈值增量,反之选择0。
[0122]
如图7所示,本实施例中,所述第二膜电位更新单元包括第八mux数据选择器27、第十一加法器25和第二比较器26;所述第十一加法器25分别与纵向抑制管理单元、第二膜电位存储器和第八mux数据选择器27连接;所述第二比较器26分别与第十一加法器25和存放分类器固定阈值的寄存器单元连接;其中,所述第八mux数据选择器27用于通过分类器神经元膜电位大于阈值时产生的脉冲,来进行判断是否将膜电位置0,有脉冲则置0,反之保持;所述第十一加法器25用于累积分类器神经元膜电位;所述第二比较器26用于将当前膜电位与阈值进行比较,若大于阈值,则产生脉冲(输出1),否则输出0。
[0123]
如图8所示,本实施例中,所述权重更新单元包括第十二加法器28、第四乘法器29和第九mux数据选择器21;所述第十二加法器28分别与权重存储器、第四乘法器29和第九mux数据选择器21连接;第四乘法器29分别与权重存储器、第九mux数据选择器21连接。其中,所述第四乘法器29用于将权重与误差信号相乘,等于权重的增量。第九mux数据选择器21用于接收分类器控制器的控制信号判断是否要更新权重,若是,则选择权重增量,否则选择0。所述第十二加法器28用于完成权重的更新,将当前权重与增量相加。
[0124]
本实施例中,物理神经元相当于计算核,每个物理神经元负责多个虚拟神经元的各个步骤计算,本实施例中用了4个物理神经元并行计算。以512个神经元为例,每个物理神经元计算128个虚拟神经元,每个物理神经元的神经元控制器负责发地址,把每个神经元对应的数据从存储器里读出来。
[0125]
如图3至图6所示,原始像素值以数据流的形式输入编码网络模块。编码网络模块的第一膜电位更新单元将会对其进行膜电位的累积与更新,参见图3,图3中iw,iq,v
th
为前向权重管理单元、纵向抑制管理单元和阈值电压管理单元通过加权求和的方式将数据输入
给第一膜电位更新单元,在判断完膜电位超过阈值后,该第一膜电位更新单元产生脉冲,并将膜电位置0,否则就将第一膜电位存储器更新。输入图像会经过前向权重管理单元进行加权求和后送前馈电流iq至第一膜电位更新单元,在新的时间步来到时,前向权重管理单元缓存前馈电流iq的第一寄存器13会被置0,重新计算。前向权重管理单元还负责在学习阶段更新前馈权重,如权重更新公式(δq
ik
=αni(x
k-niq
ik
))所介绍。iw则是神经元间的相互抑制电流,根据上一个时间步的其他神经元脉冲发射情况进行累积,如果发射则寄存器就会加上对应抑制权重,直到加完所有其他神经元,然后送数据给第一膜电位更新单元,在新的时间步到来时寄存器会清空。同时也负责在学习阶段的抑制权重更新,如图5所示。阈值电压存储器负责送入对应输出物理神经元阈值给第一膜电位更新单元进行判断,参见图6。
[0126]
如图2所示,分类器的核心由负责前馈计算的第二膜电位更新单元与负责片上学习的权重更新单元构成,其中,第二膜电位更新单元与编码网络模块基本一致,如图7所示,但是这里没有抑制电流,前馈电流也是简单由第八mux数据选择器27求和得到,如果前一层神经元发射脉冲则加上对应权重,而不是传统神经网络的乘法计算,减少了计算资源。与编码网络模块不同的是,该网络分类器的阈值是给定的参数,而编码网络模块的神经元阈值是动态调整的。而权重更新单元则由简单的乘法器与加法器构成(参见图8),但是由于权重更新算法的优势,与稀疏编码提供的极为少量的脉冲,使得权重更新量本身就极为稀少,在控制器中,当判定到前一层神经元未曾发射过脉冲,便不再对其权重进行读写,在减少数据读写功耗的同时也降低了延迟。
[0127]
3、异构脉冲神经网络实现
[0128]
本实施例中,通过构建一个在orl人脸数据集上使用的网络,以及mnist数据集上使用的网络。
[0129]
表i.针对orl人脸数据集的脉冲神经网络
[0130]
modelarchitecture编码网络16
×
16-512分类器300-10
[0131]
表ⅱ.针对mnist数据集的脉冲神经网络
[0132]
modelarchitecture编码网络28
×
28-1568分类器300-10
[0133]
在不同深度下,脉冲卷积神经网络系统的性能,参见图9所示。
[0134]
本实施例中所述的基于异构脉冲神经网络的人脸识别的fpga芯片,提出了一个结合脉冲稀疏编码与脉冲神经网络分类器的成本有效和高速vlsi硬件框架用于人脸识别。稀疏编码的自动特征选取以及脉冲神经网络的异步运算相结合,提高了能效,降低了运算量。充分发挥脉冲稀疏性能优势的分类器,通过少量权重更新即可完成片上学习,减少了片上学习大量的权重读写。所提出的系统架构即可以用于脉冲数据集(aer事件流数据集)也可用于传统图像数据集,以满足不同嵌入式应用场景。
[0135]
以上实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。
技术特征:1.一种基于异构脉冲神经网络的人脸识别的fpga芯片,其特征在于:包括编码网络模块、分类器、数据缓存模块和全局控制器;所述编码网络模块包括编码网络控制器,以及分别与编码网络控制器连接的外部脉冲交互单元和多个物理神经元,外部脉冲交互单元分别与各物理神经元连接;其中,所述外部脉冲交互单元用于负责脉冲的存储与发送;所述物理神经元用于负责膜电位更新及各项权重的学习;所述编码网络控制器用于接收全局控制器发出的信号,并分发控制信号与输入数据地址,控制编码网络模块中物理神经元开始或停止膜电位更新、权重更新,以及协调控制外部脉冲交互单元与物理神经元之间进行脉冲交互;所述分类器包括分类器控制器,以及分别与分类器控制器连接的误差管理单元、权重更新单元、第二膜电位更新单元、权重存储器、第二膜电位存储器、脉冲记录存储器和误差记录存储器;所述脉冲记录存储器和误差记录存储器分别与误差管理单元连接;所述第二膜电位更新单元分别与脉冲记录存储器和第二膜电位存储器连接;所述权重存储器分别与权重更新单元、第二膜电位更新单元连接;所述权重更新单元与误差管理单元连接;其中,所述分类器控制器用于接收全局控制器的控制信号,确定分类器处于分类阶段还是学习阶段,并分发各个存储器地址与读写信号;所述误差管理单元用于负责误差计算、存储以及发送误差给权重更新单元;所述权重更新单元用于负责权重的更新;所述膜电位更新单元用于负责对膜电位进行累积判断是否超过阈值,若超过则发射脉冲,并重置膜电位;所述权重存储器、第二膜电位存储器、脉冲记录存储器和误差记录存储器均用于存储数据;所述数据缓存模块分别与编码网络模块和分类器连接,所述数据缓存模块缓存编码网络模块编码后的脉冲信号,并送入分类器进行分类,以防止分类器处理速度较慢时编码后数据丢失;所述全局控制器分别与编码网络模块和分类器连接,所述全局控制器用于统筹控制整块芯片,发放控制信号给下级控制器,在无监督学习阶段,控制编码网络模块编码并更新权重,在有监督学习阶段,控制编码网络模块进行编码,以及控制分类器进行分类并更新权重,在常规工作阶段,控制编码网络模块编码,分类器进行分类。2.根据权利要求1所述的基于异构脉冲神经网络的人脸识别的fpga芯片,其特征在于:所述物理神经元包括神经元控制器,以及分别与神经元控制器连接的内部脉冲交互单元、第一膜电位更新单元、前向权重管理单元、纵向抑制管理单元、阈值电压管理单元、前向权重存储器、纵向抑制存储器、阈值电压存储器和第一膜电位存储器;所述内部脉冲交互单元分别与第一膜电位更新单元、前向权重管理单元、纵向抑制管理单元和阈值电压管理单元连接;所述第一膜电位更新单元分别与第一膜电位存储器、前向权重管理单元、纵向抑制管理单元和阈值电压管理单元连接;所述前向权重管理单元与前向权重存储器连接;所述纵向抑制管理单元与纵向抑制存储器连接;所述阈值电压管理单元与阈值电压存储器连接;其中,所述权重管理单元、纵向抑制管理单元和阈值电压管理单元,用于在编码阶段对应参数运算后发送至第一膜电位更新单元,以及在片上学习阶段用于负责对对应参数进行更新;所述膜电位更新单元用于负责对接收到的参数进行累积更新,当达到阈值时清零膜电位,并发射脉冲;所述前向权重存储器、纵向抑制存储器、阈值电压存储器和第一膜电位存储器用于存
储数据;所述神经元控制器用于接收编码网络控制器控制信号,控制物理神经元内部不同单元的工作,发放物理神经元内部存储器读写信号与地址,并控制物理神经元内部脉冲交互单元传输脉冲信号给其他物理神经元。3.根据权利要求2所述的基于异构脉冲神经网络的人脸识别的fpga芯片,其特征在于:所述第一膜电位更新单元包括第一加法器(1)、第二加法器(2)、第一mux数据选择器(3)和第一比较器(4);所述第一加法器(1)分别与前向权重管理单元、纵向抑制管理单元连接;所述第二加法器(2)分别与第一加法器(1)和第一膜电位存储器连接;所述第一比较器(4)分别与阈值电压管理单元和第二加法器(2)连接;所述第一mux数据选择器(3)分别与第二加法器(2)和第一膜电位存储器连接;其中,所述第一加法器(1)用于将前向权重管理单元的输出电流与纵向抑制管理单元的抑制电流相加,进行膜电位累积的第一步;所述第二加法器(2)用于将第一加法器的输出与对应物理神经元前一个时间步的膜电位相加,得到当前物理神经元的膜电位;所述第一mux数据选择器(3)用于根据第一比较器(4)结果,若膜电位大于阈值则将当前膜电位置0,反之保留膜电位;所述第一比较器(4)用于比较当前膜电位与动态阈值管理单元输出的阈值电压大小,若大于阈值电压则产生脉冲,即输出1,脉冲送往内部脉冲交互单元,同时在第一膜电位更新单元内部也通过该脉冲判断膜电位是否置0。4.根据权利要求3所述的基于异构脉冲神经网络的人脸识别的fpga芯片,其特征在于:所述前向权重管理单元包括第一乘法器(5)、第二乘法器(10)、第三乘法器(9)、第三加法器(6)、第四加法器(8)、第五加法器(11)、第二mux数据选择器(12)、第三mux数据选择器(7)和第一寄存器(13);所述第一乘法器(5)与第四加法器(8)连接;所述第二乘法器(10)分别与前向权重存储器、第三乘法器(9)和第五加法器(11)连接;所述第二mux数据选择器(12)分别与第五加法器(11)和第一寄存器(13)连接;所述第四加法器(8)分别与第三乘法器(9)和第三mux数据选择器(7)连接;所述第三加法器(6)分别与第三mux数据选择器(7)和前向权重存储器连接;其中,所述第一乘法器(5)用于获取外部的图像输入像素值,内部脉冲交互单元所记录的神经元脉冲发放次数,以及完成图像输出与权重的乘法计算;所述第二乘法器(10)用于输入图像x与对应权重q的乘积运算;所述第三乘法器(9)用于与将第二乘法器(10)输出与内部脉冲交互单元记录的脉冲计数相乘,并将结果送往第四加法器(8)进行下一步计算;所述第三加法器(6)用于将当前权重与权重增值相加完成权重的更新;所述第四加法器(8)用于完成权重增加值的计算;所述第五加法器(11)用于完成前向权重电流的累积求和;所述第二mux数据选择器(12)用于在新的时间步到来的时候将放有前向电流累积和的第一寄存器(13)清零;
所述第三mux数据选择器(7)用于接收来自控制器的信号,判断是否更新权重,不更新的话,将权重增加值变为0;所述第一寄存器(13)用于记录当前时间步的前向电流总和。5.根据权利要求4所述的基于异构脉冲神经网络的人脸识别的fpga芯片,其特征在于:所述纵向抑制管理单元包括第六加法器(15)、第七加法器(18)、第八加法器(20)、第四mux数据选择器(14)、第五mux数据选择器(16)、第六mux数据选择器(19)和第二寄存器(17);所述第四mux数据选择器(14)分别与纵向抑制存储器和第六加法器(15)连接;所述第五mux数据选择器(16)分别与第六加法器(15)和第二寄存器(17)连接;所述第七加法器(18)分别与纵向抑制存储器和第四mux数据选择器(14)连接;所述第六mux数据选择器(19)分别与第七加法器(18)和第八加法器(20)连接;其中,所述第六加法器(15)用于将第二寄存器(17)中的已累积纵向抑制电流与第四mux数据选择器(14)送出的纵向抑制电流相加,完成当前时间步的纵向抑制电流累积;所述第七加法器(18)用于将当前纵向抑制权重与纵向抑制权重增量相加完成纵向抑制权重的更新;所述第八加法器(20)用于计算内部脉冲交互单元送出的神经元对一幅图像编码时产生的脉冲数量n与目标脉冲发射率p的差,从而计算纵向抑制增量;所述第四mux数据选择器(14)用于通过脉冲交互单元送出上一个时间步神经元发射脉冲与否,判断是否产生神经元间的抑制,发射脉冲则选择纵向抑制权重,否则选择0;所述第五mux数据选择器(16)用于接收神经元控制器发放的控制信号,在新的时间步到来时,清零累积的纵向抑制电流,重新开始累积;所述第六mux数据选择器(19)用于接收神经元控制器发放的控制信号,判断是否进行更新,更新则通过纵向抑制增量,反之选择0;所述第二寄存器(17)用于存放当前时间步的累积纵向抑制电流。6.根据权利要求4或5所述的基于异构脉冲神经网络的人脸识别的fpga芯片,其特征在于:所述阈值电压管理单元包括第九加法器(22)、第十加法器(24)和第七mux数据选择器(23),所述第七mux数据选择器(23)分别与第九加法器(22)和第十加法器(24)连接;所述第十加法器(24)与阈值电压存储器连接;其中,所述第九加法器(22)用于计算动态阈值更新时的增量;所述第十加法器(24)用完成阈值更新,将当前阈值加上增量;所述第七mux数据选择器(23)用于接收神经元控制器发放的控制信号,判断是否进行更新,更新则通过阈值增量,反之选择0。7.根据权利要求6所述的基于异构脉冲神经网络的人脸识别的fpga芯片,其特征在于:所述第二膜电位更新单元包括第八mux数据选择器(27)、第十一加法器(25)和第二比较器(26);所述第十一加法器(25)分别与纵向抑制管理单元、第二膜电位存储器和第八mux数据选择器(27)连接;所述第二比较器(26)分别与第十一加法器(25)和存放分类器固定阈值的寄存器单元连接;其中,所述第八mux数据选择器(27)用于通过分类器神经元膜电位大于阈值时产生的
脉冲,来进行判断是否将膜电位置0,有脉冲则置0,反之保持;所述第十一加法器(25)用于累积分类器神经元膜电位;所述第二比较器(26)用于将当前膜电位与阈值进行比较,若大于阈值,则产生脉冲,即输出1,否则输出0。8.根据权利要求6所述的基于异构脉冲神经网络的人脸识别的fpga芯片,其特征在于:所述权重更新单元包括第十二加法器(28)、第四乘法器(29)和第九mux数据选择器(21);所述第十二加法器(28)分别与权重存储器、第四乘法器(29)和第九mux数据选择器(21)连接;第四乘法器(29)分别与权重存储器、第九mux数据选择器(21)连接;其中,所述第四乘法器(29)用于将权重与误差信号相乘,等于权重的增量;第九mux数据选择器(21)用于接收分类器控制器的控制信号判断是否要更新权重,若是,则选择权重增量,否则选择0;所述第十二加法器(28)用于完成权重的更新,将当前权重与增量相加。
技术总结本发明公开了一种基于异构脉冲神经网络的人脸识别的FPGA芯片,包括编码网络模块、分类器、数据缓存模块和全局控制器;所述全局控制器分别与编码网络模块和分类器连接;所述数据缓存模块与编码网络模块和分类器控制器连接。本发明用于人脸识别,在保证识别率的情况下,能够降低人脸识别功耗。能够降低人脸识别功耗。能够降低人脸识别功耗。
技术研发人员:周政华 石匆 钟正青 王海兵 周喜川
受保护的技术使用者:重庆大学
技术研发日:2022.04.07
技术公布日:2022/7/5