
Citation: | Yin Qiu-yan, Zhao Jian-kang, Dai Jin-hai. A Method of Control Inner Disturb to the Reaction Wheel[J]. Journal of Electronics & Information Technology, 2007, 29(6): 1521-1524. doi: 10.3724/SP.J.1146.2005.01384 |
神经网络已应用于多个领域,例如图像识别、语音识别、数据挖掘、智能机器人等。神经网络利用自身强大的学习能力,通过调整神经元之间的连接权重来拟合复杂的高维映射关系[1]。目前,在图像识别中主要采用以下几种深度学习模型进行训练,包括深层置信网络(Deep Belief Network, DBN)[2]、卷积神经网络(Convolutional Neural Network, CNN)、循环神经网络(Recurrent Neural Network, RNN)[3]、生成式对抗网络(Generative Adversarial Network, GAN)[4]以及胶囊网络(Capsule Network, CapsNet)[5]。
尽管神经网络在功能上可以满足图像识别的需要,但是目前图像识别大多采用软件实现,无法体现神经网络并行处理的优点,并且CPU或GPU在计算能力上有限,限制了神经网络结构的复杂性[6]。为解决上述问题,本文提出一种硬件资源占用率低的改进RBF神经网络算法,并采用硬件化的改进RBF神经网络实现了图像特征提取和图像识别,其中特征提取采用FPGA实现,图像识别采用ASIC电路实现。RBF神经网络具有基函数运算复杂、中间层到输出层的分类运算量大的缺点,本文将RCE(Reilly, Cooper和Elbaum)算法和K最近邻(K-Nearest Neighbor, KNN)算法思想引入到RBF网络中,将乘法运算改为加法运算,以减低网络的运算量,便于硬件实现,同时采用最小均方差算法(Least Mean Square, LMS)对权值进行调整,保证了网络的收敛性。实验结果表明改进RBF神经网络算法在不同数据集中识别准确率均高于LeNet-5和AlexNet,并与VGG16准确率持平,而平均识别时间较3种网络模型均缩短50%。本文提出的系统与基于DSP芯片的图像识别系统相比,在同为1024张相同数据集的前提下,识别时间可以缩短60%。
传统图像识别技术中的图像预处理是对图像的特征进行增强,根据特征差异对图像进行分割,将要识别的目标从整个图像中分离,再针对分离出的目标进行特征提取[7]。与传统技术不同的是,本文采用基于FPGA的图像扫描引擎代替传统结构中图像预处理等步骤,对图像进行全局特征提取,特征识别采用ASIC电路实现,系统结构如图1所示。
系统每次处理的数据量为
D=256N,N∈[0,+∞) |
(1) |
其中,
识别系统包含学习和识别两个部分,其中系统学习部分主要包括图像预处理以及学习环境设置。当一张图片输入进学习系统中首先被转换成Bitmap单色灰度图,之后需要手动截取取景范围。学习系统支持对图片进行截取、放大、缩小、平移等操作,详细描述如图2所示。
系统识别部分主要包括图像输入、图像预处理和系统识别参数设定。用户在图中确定识别目标后,可对识别结果进行逻辑组合,使得识别结果更加精准。
RBF, RCE和KNN网络都具有描述样本原型的特征向量,输入层将新数据与样本原型特征向量进行差异值计算,然后输出层根据差异值按照一定规则输出类别。3种网络的区别为外部数据和样本原型向量差异值计算方式不同,RBF神经网络是叠加外部数据和原型样本间的差异值[8],RCE算法在中间层计算曼哈顿距离,KNN算法依靠数据点周围临近样本进行类别划分。本文将RCE算法和KNN算法引入RBF神经网络,将乘法运算改为加法运算,改进后网络结构如图3所示,其中外部输入矢量用
输入层到中间层的连接权值为
λjWijV=λjWijV |
(2) |
式(2)计算输入向量与样本原型向量之间的相似程度,如果
λjSjV=λj,λj>1 |
(3) |
当
网络整体输入输出关系为
y(k)=f(g(x(k),c,σ),W) |
(4) |
其中,
改进RBF神经网络和RBF神经网络结构相似,输入层和中间层为全连接,中间层的输入输出关系为
Dist=(|x1−cj1|+|x2−cj2|)⋅g(|x1−cj1|+|x2−cj2|−σj) |
(5) |
tj=dj⋅g(|x1−cj1|+|x2−cj2|−σj) |
(6) |
oj=[tj−Distj] |
(7) |
其中,
神经元的输出如式(8),式(9)和式(10)所示:
y=rank(o1,o2,···,oj,···) |
(8) |
oj=[tj,Distj] |
(9) |
y=rank([t1,Dist1],[t2,Dist2],···,[tj,Distj]) |
(10) |
其中,
网络的学习使用监督学习的方法,必须具备一组训练样本数据对集,训练向量
网络中用
σj=min(|ci1−cj1|+|ci1−cj2|),i≠j,i=0,1,2,··· |
(11) |
权值
wj(k+1)=wj(k)+α⋅[d(k)−y(k)]⋅g(∑n|X−Cj|−σj) |
(12) |
网络关系为
y=∑jwj⋅g(∑n|X−Cj|−σj) |
(13) |
将式(12)代入式(13)得
wj(k+1)=wj(k)+α⋅[d(k)−∑jwj(k)⋅g(∑n|X−Cj|−σj)]⋅g(∑n|X−Cj|−σj) |
(14) |
当外部向量进入网络后,首先将其与每个神经元保存的样本向量计算曼哈顿距离,将得到的距离值与神经元
定义一个训练样本集合
kP=[kX,kTCat] |
(15) |
网络整体函数关系为
y=f(O)=f(φ(kX)) |
(16) |
f(O)=rank(O) |
(17) |
神经元函数关系为
(O)=φ(X)=[O1 ⋮OJ ⋮ON] |
(18) |
神经网络识别结果为
y=rank(o1,o2,···,oj,···,on) |
(19) |
当输入
φ(X,Cj,σj)=g(∑n|Ci−Cj|−σj)=0 |
(20) |
将式(20)代入式(14)中,得
wj(k+1)=wj(k) |
(21) |
当输入
φ(X,Cj,σj)=g(∑n|Ci−Cj|−σj)=1 |
(22) |
将式(22)代入式(14)中,得
wj(k+1)=wj(k)+α⋅[d(k)−wj(k)] |
(23) |
当输入等于
wj(k)=F(Cj)=dCj |
(24) |
对改进RBF神经网络硬件化时,首先要决定样本相似性计算的方法和如何对输出层进行快速排序,本文在相似性计算中采用曼哈顿距离,而对于结果的快速排序问题本文提出一种基于位比较的快速排序电路。
外部向量进入网络后与网络内部的原始样本向量进行相似性计算,RBF神经网络计算欧几里得距离,针对欧几里得距离运算量大的问题,本文用曼哈顿距离替代欧几里得距离进行相似性计算,可表示为
djk=n∑i=1|(xji−xki)|,n∈N |
(25) |
其中,
网络计算外部输入和原始样本向量的曼哈顿距离后,输出层要对大量距离值进行排序输出,并使用经典的冒泡法等进行排序。当数据过多时,典型的排序算法在实现时存在资源占用大、运算时间久的问题。
改进RBF网络采用的排序输出方式为
y=rank(w11⋅Dist1,w21⋅Dist2,···,wj1⋅Distj,···) |
(26) |
其中,
本文采用图5所示电路来实现对无限值的迅速排序,首先在寄存器RX中存储距离值(X表示1, 2, 3, ···),将R中的数据经过处理P传递给寄存器RX1,之后从RX1中低位开始读取数据到寄存器R,当R中任意一个位有1出现时停止取数,出现1的位数所对应的距离即为最小距离。
FPGA实现改进RBF神经网络算法最重要的准备工作是将算法转换为算法状态机(ASM)。本文设计了一种新的系统算法状态机,如图6所示。
图6可以看出,系统包括6种状态,系统运行之后会永远处于6个状态之一,符合硬件电路工作特性。
针对在FPGA实现过程中容易丢失设计功能的问题,本系统采用模块分割的方式对系统模块自上而下进行描述。系统模块包括控制单元和数据路径,数据通过控制单元向网络发出指令,网络通过控制总线将命令传送给神经元,神经元接收到信号后从数据总线接收数据进行处理,将处理结果送回数据总线。
为验证改进RBF神经网络图像识别算法的性能,本文分别在MNIST[9], CIFAR-10[10]和VOC2012[11]数据集上与LeNet-5, AlexNet和VGG16网络模型进行准确率及平均识别时间的对比实验。实验中采用Tensorflow作为深度学习框架,硬件环境包括一台CPU为I7-8750的笔记本电脑,其主频为2.20 GHz内存为8GB,显卡为NVIDIA GTX 1050TI;软件采用Visual Stadio 2017,并使用Python语言进行实现,实验结果如表1—表3所示。
网络模型 | 准确率 | 平均识别时间(s) |
LeNet-5 | 0.989 | 1.2 |
AlexNet | 0.991 | 1.5 |
VGG16 | 0.997 | 2.3 |
改进RBF神经网络 | 0.996 | 0.9 |
网络模型 | 准确率 | 平均识别时间(s) |
LeNet-5 | 0.787 | 2.4 |
AlexNet | 0.810 | 3.3 |
VGG16 | 0.832 | 5.5 |
改进RBF神经网络 | 0.828 | 1.3 |
网络模型 | 准确率 | 平均识别时间(s) |
LeNet-5 | 0.757 | 2.7 |
AlexNet | 0.783 | 3.5 |
VGG16 | 0.813 | 6.7 |
改进RBF神经网络 | 0.808 | 2.6 |
从上述表格中可以看出,在3种不同数据集中VGG16网络识别准确率最高,但是由于网络自身参数量大网络平均识别时间最长;而LeNet-5和AlexNet网络平均识别时间较VGG16网络缩短2~3 s,但是准确率较VGG16网络降低3%~6%。而本文提出的改进RBF神经网络算法在不同数据集中准确率优于LeNet-5和AlexNet,并且与VGG16网络持平,但是在平均识别时间上缩短了50%。因此本文提出的改进RBF神经网络算法在识别精度以及识别时间上均有一定的提升。
本文针对视频检索任务,采用ASIC电路实现系统。并与基于DSP芯片的图像识别系统进行对比试验,设定对比实验的环境为:(1)样本库中包含10000个256 Byte大小的样本;(2)外部输入一个256 Byte大小的数据;(3)目标是计算该外部数据和样本库中每个样本的差值;(4)输出结果包含样本名和差值;(5)要求输出结果找出差异值最小的样本以及相应的差值。
设定上述环境后,基于DSP图像识别系统和本文提出系统的各项工作参数计算结果如表4所示。
计算量 | DSP芯片 | 本文系统 |
时钟频率(MHz) | 500 | 15 |
ALU数量 | 6 | 1024 |
运算位宽(bit) | 32 | 8 |
单个样本大小(Byte) | 256 | 256 |
每个周期能进行加法次数 | 6 | 1024×2=2048 |
每次加法处理数据(Byte) | (32/8)×6=24 | (8/8)×2048=2048 |
完成两个样本的比较 需要周期数 | (2×256/24)=21.33 | (2×256/2048)=0.25 |
完成两个样本比较的 时间(ns) | 21.33×2=42.66 | 0.25×66=16.5 |
和所有样本比较 所需时间(μs) | 426.6 | 165 |
从表4可以看出,本文所开发的系统算术逻辑部件数量(ALU)达到1024个,相比较于基于DSP芯片的系统ALU数量有明显提升。由于ALU数量的提升,系统每个周期进行加法运算的次数达到2048次,计算的数据量达到2048 Byte。系统完成所有样本的时间为165 μs,较DSP芯片减少了60%左右。
本文提出一套基于FPGA的改进RBF神经网络图像识别系统,其中算法引入了RCE和KNN算法思想将乘法运算改为加法运算。算法部分与LeNet-5, AlexNet和VGG16网络模型进行对比实验,实验结果证明本文所提出算法在识别准确率优于LeNet-5和AlexNet网络,并与VGG16网络准确率持平,而平均识别时间比3种网络模型缩短了50%;硬件部分采用FPGA实现特征提取过程,图像识别过程采用ASIC电路实现,最终实现图像识别功能。通过与基于DSP芯片的图像识别系统进行比较,本文提出的系统在同为1024张图片的前提下,识别时间可缩短60%左右。
今后研究的方向有以下几个:
(1) 改进RBF神经网络虽然简化了网络结构,但是网络内部神经元数量众多,需要进一步降低神经元资源的消耗,即如何在保证识别准确的条件下让神经元用量达到最小。
(2) 提高神经元计算能力,随着集成电路工艺的提升,神经元可以拥有更高量级的运算位宽,这对于神经网络硬件化性能的提升有着不可小觑的作用。
(3) 目前图像识别算法发展快、种类多,目前没有明确的硬性指标来评估算法的优劣。未来是否可以在设计方案相同的情况下,通过指标对算法硬件实现的复杂度进行评估,还需要进一步研究。
总之,利用FPGA进行神经网络算法硬件化还有巨大的上升空间,对于网络结构的优化、编译器设计具有很高的研究价值。
John B S. Reaction wheel low-speed compensation using a dither signal [J].Journal of Guidance Control and Dynamics.1993, 16(4):617-622[2]王炳全, 李瀛, 杨涤. 改善反作用轮低速性能的观测补偿器方法[J]. 空间科学学报, 1999, 9(4): 362-367.[3]胡寿松. 自动控制原理[M]. 哈尔滨: 哈尔滨工业大学出版社, 1997: 16-36.[4]Interface control document for the Type-E reaction wheel assembly[R]. ITHACO Space Systems Inc, NY USA, February 18, 2000.
|
网络模型 | 准确率 | 平均识别时间(s) |
LeNet-5 | 0.989 | 1.2 |
AlexNet | 0.991 | 1.5 |
VGG16 | 0.997 | 2.3 |
改进RBF神经网络 | 0.996 | 0.9 |
网络模型 | 准确率 | 平均识别时间(s) |
LeNet-5 | 0.787 | 2.4 |
AlexNet | 0.810 | 3.3 |
VGG16 | 0.832 | 5.5 |
改进RBF神经网络 | 0.828 | 1.3 |
网络模型 | 准确率 | 平均识别时间(s) |
LeNet-5 | 0.757 | 2.7 |
AlexNet | 0.783 | 3.5 |
VGG16 | 0.813 | 6.7 |
改进RBF神经网络 | 0.808 | 2.6 |
计算量 | DSP芯片 | 本文系统 |
时钟频率(MHz) | 500 | 15 |
ALU数量 | 6 | 1024 |
运算位宽(bit) | 32 | 8 |
单个样本大小(Byte) | 256 | 256 |
每个周期能进行加法次数 | 6 | 1024×2=2048 |
每次加法处理数据(Byte) | (32/8)×6=24 | (8/8)×2048=2048 |
完成两个样本的比较 需要周期数 | (2×256/24)=21.33 | (2×256/2048)=0.25 |
完成两个样本比较的 时间(ns) | 21.33×2=42.66 | 0.25×66=16.5 |
和所有样本比较 所需时间(μs) | 426.6 | 165 |
网络模型 | 准确率 | 平均识别时间(s) |
LeNet-5 | 0.989 | 1.2 |
AlexNet | 0.991 | 1.5 |
VGG16 | 0.997 | 2.3 |
改进RBF神经网络 | 0.996 | 0.9 |
网络模型 | 准确率 | 平均识别时间(s) |
LeNet-5 | 0.787 | 2.4 |
AlexNet | 0.810 | 3.3 |
VGG16 | 0.832 | 5.5 |
改进RBF神经网络 | 0.828 | 1.3 |
网络模型 | 准确率 | 平均识别时间(s) |
LeNet-5 | 0.757 | 2.7 |
AlexNet | 0.783 | 3.5 |
VGG16 | 0.813 | 6.7 |
改进RBF神经网络 | 0.808 | 2.6 |
计算量 | DSP芯片 | 本文系统 |
时钟频率(MHz) | 500 | 15 |
ALU数量 | 6 | 1024 |
运算位宽(bit) | 32 | 8 |
单个样本大小(Byte) | 256 | 256 |
每个周期能进行加法次数 | 6 | 1024×2=2048 |
每次加法处理数据(Byte) | (32/8)×6=24 | (8/8)×2048=2048 |
完成两个样本的比较 需要周期数 | (2×256/24)=21.33 | (2×256/2048)=0.25 |
完成两个样本比较的 时间(ns) | 21.33×2=42.66 | 0.25×66=16.5 |
和所有样本比较 所需时间(μs) | 426.6 | 165 |