BP神经网络识别绝缘子
2015-10-19 13:32
344 查看
首先用xlsread()函数将excel表中数据读取出来,然后对其直方图均衡化,均衡化的作用就是将一幅图像的灰度均匀分布,使得使得图像更加清晰,BP神经网络实际上就是从我们找的正负样本中让机器认识正样本与负样本,然后我们输入待识别图像,然后让机器自动识别正样本(一般为我们要是别的东西),首先我们得找正负样本,正样本的要求就是样本只能含有绝缘子样本,负样本绝不能含有绝缘子。比如正样本:
。
然后我们通过找到的正负样本来训练BP神经网络,最后得到的权值矩阵通过
XALL与YAll我们通过以下操作得到,XAll相当于B,YALL相当于C。
BPMain(XALL,yALL,hidden_layer_number,maxIter,Lambda,threshold)中hidden_layer_number代表隐含神经元的个数,maxIter代表迭代次数,Lambda代表正则化系数,threshold表示阈值。
然后我们就可以通过滑窗,在每一个滑到的窗口上利用PredictNewData();函数来表示其与正样本的差别程度,最后通过设定阈值来排除不是绝缘子的部分。最后发现利用两次滑窗的效果更佳,因为我们所识别的部分相对于整幅图太小,所以我们先用大框画,然后用小框滑。但缺点就是BP神经网络不具有大小,旋转,灰度不变性,所以后期决定采用仿射不变矩来识别绝缘子,下篇我们再来讲基于仿射不变矩识别绝缘子的原理。
。
然后我们通过找到的正负样本来训练BP神经网络,最后得到的权值矩阵通过
save theta theta1 theta2来保存。具体训练函数BPMain(XALL,yALL,hidden_layer_number,maxIter,Lambda,threshold);
XALL与YAll我们通过以下操作得到,XAll相当于B,YALL相当于C。
clear;clc; tic; c=25*25; B=ones(2585,c); C=zeros(2585,1); C(1:1618,1)=1; for i=1:1618 image_toRead_name=strcat('C:\Users\lenovo-\Desktop\绝缘子神经网络\标准清晰截图(正)\test (',num2str(i)); image_toRead_name=strcat(image_toRead_name,').png'); A=imread(image_toRead_name); A=imresize(A,[25 25]); B(i,:)=reshape(A,1,c); end for i=967 image_toRead_name=strcat('C:\Users\lenovo-\Desktop\绝缘子神经网络\标准清晰截图(负)\test (',num2str(i)); image_toRead_name=strcat(image_toRead_name,').png'); A=imread(image_toRead_name); A=imresize(A,[25 25]); B(1618+i,:)=reshape(A,1,c); end toc;
BPMain(XALL,yALL,hidden_layer_number,maxIter,Lambda,threshold)中hidden_layer_number代表隐含神经元的个数,maxIter代表迭代次数,Lambda代表正则化系数,threshold表示阈值。
然后我们就可以通过滑窗,在每一个滑到的窗口上利用PredictNewData();函数来表示其与正样本的差别程度,最后通过设定阈值来排除不是绝缘子的部分。最后发现利用两次滑窗的效果更佳,因为我们所识别的部分相对于整幅图太小,所以我们先用大框画,然后用小框滑。但缺点就是BP神经网络不具有大小,旋转,灰度不变性,所以后期决定采用仿射不变矩来识别绝缘子,下篇我们再来讲基于仿射不变矩识别绝缘子的原理。
相关文章推荐
- VMware Network Adapter VMnet1和VMnet8 未识别的网络的解决方法
- Xcode7 不能使用http网络请求问题解决
- AJAX(一)XMLHttpRequest
- c#网络编程学习笔记02_Tcp编程(中)_简单的同步tcp聊天程序
- 机器学习(八)前馈神经网络
- 你可能不知道的 Linux 命令行网络监控工具
- Linux服务器上监控网络带宽的18个常用命令(转)
- HTTP协议详解
- 定时关闭华为交换机的端口
- JAVA使用apache http组件发送POST请求
- php异步http请求
- http://www.php100.com/manual/jquery/
- 网络IP转换函数
- 5种服务器网络编程模型讲解
- tcp_tw_recycle导致NAT网络TCP连接失败
- 关于网络编程中一些常用函数的理解
- php://input,$_POST,$HTTP_RAW_POST_DATA区别
- http 错误代码表
- 谈谈HttpClient使用详解
- linux0.99网络模块-数据链路层(接收)