开发者社区> 技术小胖子> 正文

脉冲耦合神经网络(PCNN)的matlab实现

简介:
+关注继续查看


基本脉冲耦合神经网络的matlab实现

Gray首先发现了猫的初生视觉皮层有神经激发相关振荡现象,并将其研究结果发在了Nature杂志上。与此同时,Eckhom也根据猫的大猫皮层的同步脉冲发放现象,提出了脉冲发现的连接模式,将开拓性地提出了PCNN基本模型。GrayEckhom被称为PCNN的鼻祖。我国的兰州大学马义德教授在PCNN研究领域有很大建树,发表了很多相关的论文,并出版了《脉冲耦合神经网络原理及其应用》和《脉冲耦合神经网络与数字图像原理》两本专著。我在当当上买了一本《脉冲耦合神经网络与数字图像原理》,发现还不错,原理讲得很全,但没有附光盘,详细的算法或代码很少。
基本PCNN神经网络是提出的一种有连接域的网络模型,它是由若干个神经元互连形成的反馈型神经网络,构成PCNN的神经元系统是一个复杂的非线性动态系统。一个PCNN神经元由三部分组成:接受部分,调制部分,脉冲发生器,其基本模型见下图:   
该模型的数学形式可用以下四个方程来描述:
其中Sij Uij Yij 分别为神经元Nij 的外部刺激(输入、内部行为和输出; Lij Fij 分别为神经元的链接域和馈送域两个输入通道; M/ VF W/ VL 分别是馈送域和链接域的连接权系数矩阵放大系数;θij Vθ变阈值函数输出和阈值放大系数;τ、τ、τθ分别为链接域、馈送域和变阈值函数的时间常数。
由基本模型可以得出,根据链接系数即beta,可以将PCNN分为无耦合和有耦合两种情况,当beta=0时,可以认为各神经元是独立运行的组合。这种情况下,神经元周而复始地循环工作,并兴奋产生脉冲。在这种情况下,即不同灰度值的像素在没有受到别的神经元影响下,其独立点火频率依赖于该像素灰度值,而于其他像素的灰度值无关。同时也可以得出以下结论:即相近灰度值的神经元将在同时刻点火,这个结论也印证了PCNN同步脉冲发放现象的内在机理。这种情况属于理想情况
beta~=0时,即有耦合存在的情况之下,神经元的点火,不仅受其自身的灰度值影响,还要受与其存在链接的神经元的影响,也就是存在着捕获点火的情况,当满足捕获范围的若干相似相邻神经元提前兴奋,实现点火。这也是在空间近似或灰度近似的神经元同步产生脉冲串的机理。由PCNN数学模型可以知道,当连接系数beta,连接域L值越大,则能够点火的范围也越大,所以在耦合状态下,PCNN能集群发放同步脉冲串序列,产生所谓的同步脉冲发现现象,即神经元的振荡。
基本模型由于实现相对复杂,在实际应用中相对较少,经常使用的则是改进型PCNN,其模型的数学形式可用以下四个方程来描述:
其中Fij ( n) 是第( i , j) 神经元的次反馈输入,Sij 为输入刺激信号(这里为图像像素构成的矩阵中第( i , j) 像素的灰度值) ,β为连接系数, L ij ( n) 是连接项,θi j ( n) 为动态阈值, Yij ( n) PCNN 脉冲输出值,Uij ( n) 为内部活动项, W 为连接权矩阵, Vθ为幅度常数,αθ为相应的衰减系数。
由上式我们可以看出,PCNN的主要参数就是上述四个,即权值、链接系数、初始阈值和衰减系数,使用各种优化算法对PCNN的参数进行优化时,往往主要优化链接系数,初始阈值和衰减系数,在一般情况下,主要是优化初始阈值和衰减系数。
以最后的代码为例,则其算法描述如下:
首先读取一幅图片,对像素矩阵进行扫描运算,通过连接矩阵、加权等等关系式计算出每一个像素的内部活动项Uij(n),当Uij(n)大于动态门限Eij(n)(这个是根据初始阈值、衰减系数或其他参数所决定的,由此来看初始阈值、衰减系数多么重要,因为它关系到像素是否点火),PCNN产生时序脉冲系列Yij(n)(标记矩阵中的值为1,有时无需记录标记矩阵)。每遍扫描结束后,求得一次熵Yij(n),全部扫描结束后,对应的输出为熵序列(其中熵为对PCNN优化的标准,熵的确定根据具体应用是不同的)。综上,如果对PCNN进行优化,应该从初始阈值、衰减系数和熵入手。
下面是基本PCNNmatlab实现代码。
function H = Pcnn(I,N) 
%************************************************************ 
% demo 
%************************************************************ 
% I = imread('lena.bmp'); 
% H = Pcnn(I,30); 
%************************************************************ 
%  
%************************************************************ 
%------Pulse Coupled Neural Network-----------    

%------名称:脉冲耦合神经网络(PCNN)    

%------时间:2009年01月08日    
%************************************************************ 
% Initialize Function 初始化函数 
%************************************************************ 
[m,n] = size (I); 
X = im2double(I); 
%************************************************************ 
% Initialize PCNN Parameters 初始PCNN参数 
%************************************************************ 
% P :L E F VF VL VE beta 
% V: 1.0 1.0 0.1 0.5 0.2 20 0.1 
al = 1.0; ae = 1.0; af = 0.1; vf = 0.5; vl = 0.2; ve = 20; B = 0.1; 
W =[0.5 1 0.5 
        1 0 1    
        0.5 1 0.5]; 
M = W; Y = zeros(m,n); F = Y; L = Y; U = Y; E = Y; 
%************************************************************ 
% PCNN 点火过程 
%************************************************************ 
for i = 1:N 
        F = exp(-af) * F + vf * conv2(Y,M,'same') + X; 
        L = exp(-al) * L + vl * conv2(Y,W,'same'); 
        U = F.*(1 + B * L); 
        Y = double(U>E); 
        E = exp(-ae) * E + ve * Y; 
%************************************************************ 
% Get Entropy of Image Y 得到信息熵序列 
%************************************************************ 
p = imhist(Y(:)); 
% remove zero entries in p 
p(p == 0) = []; 
% normalize p so that sum(p) is one 
p = p./numel(Y); 
H(1/i) = -sum(p.*log2(p)); 

end
 



          本文转自 gaochaojs 51CTO博客,原文链接:http://blog.51cto.com/jncumter/260761,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
基于BP神经网络语言信号分类附matlab代码
基于BP神经网络语言信号分类附matlab代码
15 0
m基于GRNN广义回归神经网络和HOG特征提取的人体姿态检测识别matlab仿真,样本集为TOF深度图
m基于GRNN广义回归神经网络和HOG特征提取的人体姿态检测识别matlab仿真,样本集为TOF深度图
36 0
【PID优化】基于粒子群算法结合BP神经网络优化PID控制附matlab代码
【PID优化】基于粒子群算法结合BP神经网络优化PID控制附matlab代码
19 0
m基于改进遗传算法优化的双bp神经网络时间序列预测matlab仿真
m基于改进遗传算法优化的双bp神经网络时间序列预测matlab仿真
20 0
m基于多集成BP神经网络的matlab仿真,神经网络通过编程实现不使用工具箱
m基于多集成BP神经网络的matlab仿真,神经网络通过编程实现不使用工具箱
39 0
【BP回归预测】基于鸟群算法优化BP神经网络实现交通流数据回归预测附matlab代码
【BP回归预测】基于鸟群算法优化BP神经网络实现交通流数据回归预测附matlab代码
22 0
基于神经网络的传递函数控制器matlab实现,神经网络自己编程实现不使用matlab的工具箱
基于神经网络的传递函数控制器matlab实现,神经网络自己编程实现不使用matlab的工具箱
58 0
m基于ESN+BP神经网络的数据预测算法matlab仿真,测试数据为太阳黑子变化数据
m基于ESN+BP神经网络的数据预测算法matlab仿真,测试数据为太阳黑子变化数据
59 0
m基于GRNN广义回归神经网络的飞机发动机剩余寿命预测matlab仿真,训练集采用C-MAPSS数据集
m基于GRNN广义回归神经网络的飞机发动机剩余寿命预测matlab仿真,训练集采用C-MAPSS数据集
78 0
【PNN分类】基于脉冲神经网络PNN网络变压器故障诊断附matlab代码
【PNN分类】基于脉冲神经网络PNN网络变压器故障诊断附matlab代码
22 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
神经网络结构设计
立即下载
基于神经网络的语言合成
立即下载
概率图模型
立即下载