PCNN 脉冲耦合神经网络


脉冲耦合神经元模型

  • 神经元的输入有哪些?
    首先来看看这个神经元的图示的左边,有YYY和FFF。

  • YYY为这个神经元之前输出的数值,就是说这个模型需要进行多次的运算,每次的运算需要上一次运算的值来做输入,如果是第一次运算的话YYY就给成0就可以啦。很多情况下YYY不仅仅只有一个,可能会有Y1Y_1Y1​、Y2Y_2Y2​、YnY_nYn​。如果是对图像数据进行处理,那么出现这么多的YYY就很正常了,因为一张图像有很多的像素点,每个YYY都对应着一个像素点的数值,当然程序都是我们自己写的,我们也可以根据实际的需求来规定YYY的数量而不仅仅是由图像的像素点个数来决定。

  • FFF也是输入区里面的一个东西。如果说之前的YYY是神经元之前的记性+周围神经元的相互干扰的话,那么这个FFF就是真正的外界输入了。总不能说一个神经元的输入只有自身在上一时刻以及周围神经元给他的刺激吧,肯定会有外界给他的刺激,这个刺激,也就是我们需要这个神经元来帮助我们处理的数据了。

  • 神经元的输出是什么?
    在图上我们不难发现,神经元模型的输出只有一个YYY。没错,就是说,图中这一个神经元输入有茫茫多,但是输出只有一个YYY。在图像检测的过程中,这个YYY就是一个二值化数据,代表着这个像素点经过处理之后,要么有数据,要么就没有数据。

  • 神经元的工作原理

  • 首先,经过了上面的分析,我们知道,脉冲耦合神经元模型的输入有周围神经元的干扰以及自身神经元的记忆还有外界信号的刺激。
    周围信号的干扰需要有一个权值来控制,不能说周围信号有一点点干扰,然后整个神经元的输出就会发生巨大的变化吧,又不是有病,脚崴了然后胳膊也跟着一起疼了是不是。所以图中的WWW就对所有的YYY的权值进行了一个分配,具体怎么分配之后再细说。将所有权值分配好之后的YYY相加然后再乘上一个总体的权值LLL就变成了图中的βL{\beta}LβL。为什么还有一个+1?是因为之后这个信号表示的是一个神经自身周围环境对单个神经元的影响,表现的是一个增量,所以需要+1。也就是说如果算出来的东西是0,那么最终的结果是1,相乘没有任何影响,这样就属于理想中的结果。

  • 之后,FFF和1+βL1+{\beta}L1+βL一同进入了连接输入区。相乘理之后输出了UUU。

  • 最后,UUU走进了脉冲发生器。这个脉冲发生器有一个会变化阈值,当输入的UUU超过这个阈值之后,脉冲发生器就会输出最终结果YYY。YYY还会被记录下来进入E装置,用来调节脉冲发生器的阈值,来影响下一次的信号是否能超过阈值从而输出信号

  • 全剧终。

  • matlab代码如下:

grayImage = im2double(grayImage);
W = [0.5 1 0.5;1 0 1;0.5 1 0.5];M = W;
Y = zeros(size(grayImage));
F = Y; L = Y; U = Y; E = Y;% Y is the output
for a number you wantF = exp(-af) *F +vf*conv2(Y,M,'same') + grayImage;  %输入区的FL = exp(-al) *L +vl*conv2(Y,W,'same');              %输入区的LU = F.*(1 + beta*L);        %连接输入区的输出UY = double(U>E);            %最终输出Y,大于阈值E之后就输出1E = exp(-ae) * E + ve * Y;  %反馈给阈值,来影响下一次的输出结果
end

显然,这段代码对于大多数读者来说还是有些地方看不懂的。所以讨论还并没有结束,W是怎么肥四?exp是哪里来的?马上。


Eckhorn神经元模型

首先需要介绍一下Eckhorn神经元。之前所述的脉冲耦合神经元模型其实是从Eckhorn神经元化简而来的。脉冲耦合神经元(PCNN)最早就是由Eckhorn提出的。所以下面的这个 Eckhorn神经元模型才是PCNN真正的初始形态~~

  • 输入有哪些?
    又回到了最开始的那个简单的问题,这个Eckhorn神经元的输入有哪些。还是一样,从左边开始看。

  • YnY_nYn​
    当然不止一个YnY_nYn​啊,很容易看见下面还有一个箭头没有标注出来有什么东西输入进去了。结合上面我们说到的,这块连接域的输入其实就是神经元周围的神经干扰已经自身的记忆。所以说输入有YnY_nYn​、Yn+1Y_{n+1}Yn+1​等等等,等多少个呢,其实是由程序员自己设定的。就像是一个神经元周围的还生长这许多别的神经元,有多少个呢?不得而知。但是作为程序来,我们是可以自己设定的。

  • SkS_kSk​
    这个其实就是我们在上面所谈到的外部输入了。对应到代码里面就是
    F = exp(-af)*F +vf*conv2(Y,M,'same') +grayImage;中的grayImagegrayImage也就是外界输入的灰度图像了。

  • 输出是什么?
    很简单,前面已经有说过了,输出就是一个二值化的脉冲,有或者没有。

  • 工作原理
    现在就开始来解决前面代码里面出线的各种东西。W是怎么肥四以及exp是哪里来的或者更多。

  • 白色框框Il(t)I_l(t)Il​(t)和If(t)I_f(t)If​(t)
    连接域里面的YnY_nYn​应该已经很面熟了,就是上一次迭代产生的数据。然后再跟着箭头往里看,YnY_nYn​进入了一个白色的框框Il(t)I_l(t)Il​(t)。这个Il(t)I_l(t)Il​(t)被Eckhorn称之为漏电积分器(此处应有wow),名字无比的霸气,漏电积分器。
    漏电积分器的原型实际上是生物中的一个现象,那就是不应期过程。不应期过程的意思就是,当我们的神经受到刺激并产生一个冲动电脉冲之后的约1ms时间内,即使外界再有刺激信号进来,我们的神经元也不会兴奋。
    L = exp(-al) *L +vl*conv2(Y,W,'same');
    代码中的al是一个人为设定的系数(当然也可以写成自适应的),L是我们连接域的输出,W是我们事先做好的一个小矩阵,矩阵的形状类似于一个碗。在程序中,我们将WY进行卷积,并使输出保持原有的形状,然后再乘以一个系数vl
    等式中的exp(-al) *L就是符合不应期过程的记忆

  • Eckhorn神经元和传统神经元的差异

  • Eckhorn神经元模型的内部活动项是所有其收到的输入信号和周围神经元对其影响的综合。是输入信号和连接输入的一种非线性调制。而传统神经元的输入是周围相连神经元各自加权输入的代数和。

  • Eckhorn神经元模型输出的是二值化脉冲时间序列,不受到输入信号的幅度影响,但是该脉冲序列的频率同事受控于内部活动项的大小和阈值漏电积分器的状态。

  • Eckhorn神经元模型体现了神经元特有的非线性特性,他的反馈输入域、耦合连接域、阈值控制机制都有指数衰减的漏电积分器,而一般的传统神经元的结构远远没有这么复杂。


测试

测试图片是一张100*100大小的图片:;灰度图像为
经过了一次PCNN计算之后的结果为:

PCNN 脉冲耦合神经网络整理相关推荐

  1. 基于PCNN脉冲耦合神经网络的图像分割

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 脉冲耦合神经网络(PCNN-Pulse Coupled Neural Network)与传统神经网络 ...

  2. 【MATLAB图像融合】[13]PCNN脉冲耦合神经网络基本原理

    →这是一篇学习笔记. →但考虑要发出来,还是排版了,请放心食用. PCNN在图像融合中应用广泛 1.脉冲耦合的神经元之间有有耦合和无耦合两种形式.,有耦合的神经元之间存在能量传播,产生同步脉冲发放,从 ...

  3. 【MATLAB图像融合】[14]PCNN脉冲耦合神经网络代码分享

    本代码转自厦门大学屈小波教授15年的DEMO代码. % Demo for PCNN in image processing % --------- % Author: Qu Xiao-Bo <q ...

  4. 神经网络 | 基于脉冲耦合神经网络(PCNN)的图像特征提取(Matlab源代码)

    博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 一.代码 %------Pulse ...

  5. 毕业论文 | 基于脉冲耦合神经网络(PCNN)的图像特征提取:论文及源代码及参考文献

    =========================================== github:https://github.com/MichaelBeechan CSDN:https://bl ...

  6. 【图像分割】基于脉冲耦合神经网络实现图像分割附matlab代码

    1 简介 1950s数字图像处理产生,从此学术界对它的研究连绵不绝.十多年之后,数字图像的处理被独立出来成了一门课程.图像分割技术是处理图像的一种基础技术,在图像处理领域中占了重要地位,且在图像工程. ...

  7. 非线性动力学 matlab,科学网—非线性脉冲耦合动力学以及Matlab 源程序 - 王又法的博文...

    在这篇文章中,我们给出了非线性脉冲和孤子耦合的理论,它包含了2阶3阶色散,模间色散,损耗增益,色散不匹配,高阶非线性等等.文章主要说明了几个非线性耦合的基本问题: 非线性脉冲耦合行为主要依赖于参量Lc ...

  8. 神经网络框架及相关信息收集

    神经网络框架 Google TensorFlow       34,807    36,780 Facebook PyTorch       18,281    21,162    增长快 Googl ...

  9. 多模态医学图像融合概述

    An overview of multi-modal medical image fusion 原文:https://www.sciencedirect.com/science/article/pii ...

最新文章

  1. 谈谈最近独立做项目的一些事情,一些小经验,分享之!
  2. 华为交换机配置命令 华为QuidWay交换机配置命令手册
  3. 原来小清新色调是这样调出来的~
  4. python中path语句什么意思_python中jsonpath模块有何用法?
  5. JAVA基础知识+基础代码
  6. A star算法优化一
  7. 推荐一个wpfsliverlight的图表控件
  8. 利用pre-compiled headers技术以加速编译速度(一)
  9. android课程设计实训目的,汽车专业实习目的与意义
  10. Windows Server入门系列之三 硬盘分区
  11. 【深度优先搜索】牛客网:剪绳子
  12. 一个简单的flask程序
  13. allwinner h6 armv8 SylixOS 启动分析
  14. 《从0到1》读书笔记第10章“打造帮派文化”第1记: PayPal黑帮花名册
  15. 七周成为数据分析师—Excel实战篇
  16. Linux--信号signal、父子进程、SIGCHLD信号相关命令
  17. 计算机网络原理第七版word,计算机网络原理简答题
  18. 传统图像去噪方法(一)
  19. oc错误:control reaches end of non-void function
  20. 副业不知道做什么?来做知识付费网课商城项目,轻松赚钱

热门文章

  1. Spring Cloud入门-Gateway服务网关(Hoxton版本)
  2. 流媒体技术基础-摄像头接口与标准
  3. 华为防火墙性能指标监控
  4. 配置BGP SOO(防环)实例
  5. 两块串口硬盘从盘不识别
  6. FlipBird飞翔的小鸟游戏 java实现 课程设计
  7. php如何实现添加到购物车_php购物车功能如何实现
  8. TQ2440第一个裸板程序led
  9. 推出新浪微博粉丝关注统计分析业务
  10. go语言 第三方包安装方法_Adobe AE 2020 软件下载安装包教程(附下载方法)