您当前的位置:首页 > 精选知识 > 正文

一种基于fpga的神经网络硬件实现方案详解应用_一种基于FPGA的神经网络硬件实现方案详解

一种基于fpga的神经网络硬件实现方案详解应用_一种基于FPGA的神经网络硬件实现方案详解

人工神经网络广泛应用于智能控制、模式识别、图像处理等领域。在神经网络的应用研究中,人们可以在通用计算机上对神经网络模型或算法进行编程,但大量时间浪费在分析指令、读写数据上,其实现效率不高。软件实现的缺点是并行度低,所以用软件实现神经网络的方法无法满足一些对数据处理实时性要求高的场合(如工业控制等领域)。

目前,要实现大规模、实时的神经网络,传统的软件算法实现方法显示难以满足速度要求。此外,在构造神经网络时,必须考虑硬件实现。由于神经网络具有并行计算的特点和功能,可以有效发掘算法本身的并行特性,提出高效的硬件电路结构,从而完成神经网络的硬件实现。

脉冲耦合神经网络(Pulse Coupled Neural Network,PCNN)是在研究猫等哺乳动物的视觉神经元时,根据脉冲同步的工作原理提出的新一代神经网络。目前,PCCNN的理论仍在发展中。由于其独特的并行性能,广泛应用于图像分割与平滑、边缘检测与细化、决策与优化等领域。目前的研究主要集中在模型优化和软件实现上,而相关的硬件实现在国内并不多见。PCNN的并行结构为硬件实现提供了可能。

1 PCNN的基本原则

脉冲耦合神经网络是单层模式的二维神经网络,其基本单元是脉冲耦合网络的神经元。图1是PCNN的单个神经元模型的框图,它由输入部分、连接调制部分和脉冲发生器部分组成。

输入部分是接收域,它的接收信号来自两部分:相邻神经元产生的信号和外部输入激励。这两部分信号通过两条不同的路径传输,一条传输反馈输入信号,其中包含外部输入激励,这条路径就是F路径;另一条路径传输连接输入信号,其中包含相邻神经元产生的信号,这条路径就是L路径。

连接调制部分完成上述两路信号的耦合,经过一定的信号处理,生成神经元的内部活动项目。信号处理需要正的单位偏置和L路的连通输入信号的累加,然后用F路的反馈输入信号完成乘法调制。神经元的内部活动项是信号调制的产物。

脉冲发生器和可变阈值比较器构成了PCNN单神经元的脉冲发生部分。如果达到脉冲释放条件,脉冲发生器工作,发出恒定频率的脉冲,此时神经元处于点火状态。

根据图1中的模型,每个神经元按照公式(1)完成迭代运算,实现上述PCNN函数。

在公式(1)中,fij [n]是神经元的第n个反馈输入信号;F和L代表迭代时间常数;Sij代表外部输入常数,是图像处理过程中像素矩阵中像素的灰度值;李记[n]是神经元的线性输入项;Wijkl和mijkl代表突触连接的权重系数;Uij [n]是神经元的内部活动项;Tij [n]是UIJ [n]是否激发产生脉冲的动态阈值;是突触间的连接强度系数;Yiji [n]是PCNN的脉冲输出项。因为信号lij [n]比信号fij [n]变化更快,所以相乘和调制后的信号uij [n]相当于将快速变化的信号加到近似不变的信号上。

如果一个神经元放电,也就是发出一个脉冲信号,那么由于内部活动项大于当前阈值,通过它的时间常数T和振幅系数VT,在下一次迭代后阈值会突然增大。此时,迭代后的阈值tij [n]远大于uij [n],因此神经元将被抑制,脉冲信号将停止输出,即处于未点亮状态。在这种状态下,外周神经元不断放电,产生响应脉冲信号,通过L通路的输入增加内部活动项,同时阈值以指数运算递减。在某次迭代中,电流阈值会再次小于uij [n],此时神经元会被激活,开始输出脉冲信号,即神经元再次被点燃。这样神经元就不需要在点火和点火状态之间切换,从而实现脉冲同步激发。

2系统硬件实现

2.1模型的改进

对于上述PCNN模型结构,在图像处理和其他应用中仍然存在一些限制:

1)PCNN涉及参数多,增加了数学运算的难度,算法实现困难;

2)难以确定网络参数。

另外,为了便于FPGA实现。简化和改进标准PCNN。反馈输入只作为对应像素灰度值的强度,所以F路径的连接权矩阵m为零。改进的第一个优点是减少了迭代时间,而迭代质量仍然接近标准PCNN模型。第二个好处是节省FPGA资源的使用。改进模型的数学表达式与标准模型相似,但馈电域不同。馈送域表达式为:

Fij[n]=Sij (2)

2.2小数的定点表示

因为Vetilog不能直接定义小数类型,所以用小数的定点表示来表示小数。考虑到灰度值为8位二进制数据,十进制表示为《8.8》,即整数位数和小数位数均为8,整数表示为《8.0》,即整数位数为8,小数位数为0。因为不存储小数位置信息,所以需要按照之前的约定截取最终结果。如公式(3)所示,最终运算结果为24位,低8位为小数部分,而Verilog的位运算操作截取的中间8位为更新后的灰度值。

《8.8》 * 《8.0》 《8.8》 * 《8.0》=《16.8》 (3)

2.3 PCNN参数选择

2.1节介绍的改进PCNN模型用于描述单个神经元的PCNN算法。表1是本设计方案中PCNN模型参数的经验设置,其阈值衰减设置为每次运算后阈值的0.9倍左右。为了便于算法的硬件实现,实验中将设置神经元连接强度=1,连接域增益VL=1。

其连接域邻域矩阵为:

2.4总体系统设计框图

在图像处理中,神经元和像素需要一一对应,神经网络的大小取决于图像的大小。如果要处理的图像比较大,会占用很多硬件资源,那么就需要更高规格的FPGA芯片来实现。本文介绍一个简单的PCNN硬件系统,它能处理33、8位灰度图像。

FPGA中PCNN的系统框图如图2所示。系统分为五个主要功能模块:时钟分频模块、串口接收模块、串并转换模块、PCNN模块和VGA显示模块。该图在除PC以外的FPGA上实现。PC机包括上位机的串口通信软件,如VB串口通信助手、串口主机等,可以实现串口调试、测试、监控、滤波等功能。

系统需要完成的工作分为三部分:图像输入、图像处理和图像显示输出。系统的详细工作过程描述如下:PC机通过串口软件(如串口主控)发送图像数据,串口接收模块接收图像数据,并通过模块内部的FIFO存储数据;串并转换模块将串口接收模块存储的图像数据并行输出到PCNN模块进行处理;PCNN模块接收到图像数据后开始迭代,输出到VGA显示模块;VGA显示模块负责显示PCNN模块处理后的二值图像序列,以观察PCNN的处理效果。由于本实验所用的FPGA实验平台提供的时钟频率为50 MHz,而串口接收模块、PCNN模块和VGA显示模块需要特定的时钟频率才能工作,因此必须设计时钟分频模块来产生所需的时钟频率。

3系统模拟

考虑到外周神经元的特殊情况,设计了三种略有不同的神经元,即外周神经元输入分别为2、3和4的神经元。这里只选择4输入PCNN神经元进行仿真,神经元的阈值为200,以验证神经元功能的正确性。通过选取四个典型的图像灰度值S,即4、100,200和250,通过仿真验证了单个神经元的正确性。

利用单个PCNN神经元,构造了一个具有9个PCNN神经元的PCNN模块,可以处理33大小的图像,通过网络迭代得到理想的图像。通过串口输入数据:181、187、140,120,120,4、46、83、120,模拟PCNN模块。为了便于观察,选取三个神经元的时间序列模拟结果如图3所示。从图3中可以看出,PCNN的输出显示了0和1的恒定变化,并且可以看出,由于耦合效应,在三个神经元中产生了不同的结果。在图3中,S1至S3是9像素灰度值的三个输入,Y1至Y3是PCNN处理后的图像的三个二进制序列值。

4系统验证和分析

本实验以Altera Cyclone II开发平台为验证环境,选用Cyclone系列的EP2C35F672芯片。网络图像数据由串口软件发送,二进制结果经FPGA中的PCNN处理后显示在VGA显示器上。PCNN模块时钟输入频率为100MHz,VGA显示模块时钟输入频率为25 MHz。至于波特率,考虑到完整的串口接收模块,波特率为115 200 bps以匹配串口接收模块。

的采样频率。数据位有8位,无校验位,包括1个停止位,传输数据以十六进制形式发送。

为了便于观察,考虑到显示器的刷新频率和人眼的视觉暂留性,PCNN网络的迭代处理频率设置为1 Hz,即显示器每1秒显示一次迭代效果图。图4显示了显示器前40次的显示效果。在图中,九个正方形代表要处理的33输出图像,一个正方形代表一个像素。九个方块中的灰色方块神经元被点燃,即输出“1”。黑框代表神经元没有被点燃,即输出为“0”。

根据实验平台的测试结果,与除VGA模块外的硬件模块ModelSim的仿真结果进行了比较。图5是除VGA模块之外的硬件模块的功能模拟图。图中,高电平代表“1”,低电平代表“0”。

结果完全一致,这也验证了PCNN网络硬件实现的正确性。另外,从图4和图5可以看出,neuron1、2、3、4、5、8、9的输出在多次迭代后始终为“1”,这是因为neuron的内部活动项始终为。但由于神经元6和7的图像输入值较小,内部活动项和阈值不断变化,从而在周围神经元的作用下,呈现周期性的“0”和“1”输出。

5结论

根据脉冲耦合神经网络并行计算的特点,提出了一种基于FPGA的神经网络硬件实现方案,利用Verilog硬件描述语言设计了系统模块,并构建了PCNN神经网络。

在FPGA开发平台上进行了验证。通过处理一幅简单的3x3图像,观察VGA显示结果,完成了PCNN的FPGA实现,满足设计要求,具有良好的图像处理实时性。下一步将是建立一个更复杂的PCNN网络结构来处理更大的图像数据。

标签:神经元PCNN图像


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: 地下城与勇士辅助器(有谁用过DNF萝卜辅助器的 我有问题请教下)

下一篇: 矩阵乘积的转置 矩阵乘积



推荐阅读