目录
实验一 神经网络用于图像分割................................................................................... 2
一、 实验目的..................................................................................................... 2
基于神经网络的算法对图像做分割。......................................................................... 2
二、 实验软件..................................................................................................... 2
三、 算法原理..................................................................................................... 2
1.3.1 神经网络................................................................................................. 2
1.3.2 BP神经网络基本原理............................................................................... 3
1.3.3 BP算法步骤............................................................................................. 3
1.3.4 基于神经网络的图像分割步骤.................................................................. 4
四、 实验结果..................................................................................................... 4
1.4.1 实验代码................................................................................................. 4
1.4.2 结果展示................................................................................................. 6
1.4.3 实验总结................................................................................................. 7
实验一 神经网络用于图像分割
一、 实验目的
基于神经网络的算法对图像做分割。
二、 实验软件
Matlab
三、 算法原理
1.3.1 神经网络
神经网络是一种运算模型,由大量的节点(或称“神经元”,或“单元”)和之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重(weight),这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。人工神经网络通常是通过一个基于数学统计学类型的学习方法(Learning Method)得以优化,所以人工神经网络也是数学统计学方法的一种实际应用,通过统计学的标准数学方法我们能够得到大量的可以用函数来表达的局部结构空间,另一方面在人工智能学的人工感知领域,我们通过数学统计学的应用可以来做人工感知方面的决定问题(也就是说通过统计学的方法,人工神经网络能够类似人一样具有简单的决定能力和简单的判断能力),这种方法比起正式的逻辑学推理演算更具有优势。
1.3.2 BP神经网络基本原理
BP网络模型处理信息的基本原理是:输入信号Xi通过中间节点(隐层点)作用于输出节点,经过非线形变换,产生输出信号Yk,网络训练的每个样本包括输入向量X和期望输出量t,网络输出值Y与期望输出值t之间的偏差,通过调整输入节点与隐层节点的联接强度取值Wij和隐层节点与输出节点之间的联接强度Tjk以及阈值,使误差沿梯度方向下降,经过反复学习训练,确定与最小误差相对应的网络参数(权值和阈值),训练即告停止。此时经过训练的神经网络即能对类似样本的输入信息,自行处理输出误差最小的经过非线形转换的信息。
1.3.3 BP算法步骤
BP算法是一种有监督式的学习算法,其主要思想是:输入学习样本,使用反向传播算法对网络的权值和偏差进行反复的调整训练,使输出的向量与期望向量尽可能地接近,当网络输出层的误差平方和小于指定的误差时训练完成,保存网络的权值和偏差。具体步骤如下:
(1)初始化,随机给定各连接权[w],[v]及阀值θi,rt。
(2)由给定的输入输出模式对计算隐层、输出层各单元输出
(3)计算新的连接权及阀值,计算公式如下:
(4)选取下一个输入模式对返回第2步反复训练直到网络设输出误差达到要求结束训练。
第一步,网络初始化 。
给各连接权值分别赋一个区间(-1,1)内的随机数,设定误差函数e,给定计算精度值 和最大学习次数M。
第二步,随机选取第k个输入样本及对应期望输出
第三步,计算隐含层各神经元的输入和输出
第四步,利用网络期望输出和实际输出,计算误差函数对输出层的各神经元的偏导数
第五步,利用隐含层到输出层的连接权值、输出层的和隐含层的输出计算误差函数对隐含层各神经元的偏导数
第六步,利用输出层各神经元的和隐含层各神经元的输出来修正连接权值
第七步,利用隐含层各神经元的和输入层各神经元的输入修正连接权。
第八步,计算全局误差
第九步,判断网络误差是否满足要求。当误差达到预设精度或学习次数大于设定的最大次数,则结束算法。否则,选取下一个学习样本及对应的期望输出,返回到第三步,进入下一轮学习。
1.3.4 基于神经网络的图像分割步骤
(1)根据图像,选取图像前景色与背景色作为样本,并提取神经网络权值阈值参数。
(2)将获取的样本与阈值参数输入建立的BP网络中进行训练。
(3)图像分割:将图像分割看成是分类过程。将图像每个像素点当做待分类的样本,输入BP网络中进行分类,输出一个特征值,这个特征值大于0.5,则认为这个像素点为前景色,否则为背景色。
四、 实验结果
1.4.1 实验代码
%Imagesegment.m
close all;
clear all;
%产生样本
p = [0:1:255] ;
t = zeros(1,256);
t(82:256) = 1 ;
save('sample.mat','p','t');
%训练样本
load('sample.mat');
net=bptrain(p,t);
%显示原图
img=imread('image\a.bmp');
figure;
imshow(img);
%图像分割
imgsegment=segment(net,img);
%显示分割后的图像
imshow(imgsegment);
% bptrain.m
function[net]=bptrain(p,t)
epochs = 2000;
goal = 0.00001 ;
net = newcf([0 255],[6 1],{'tansig' 'purelin'});
net.trainParam.epochs = epochs;
net.trainParam.goal = goal ;
net = train(net,p,t);
function [ bw ] = segment( net,img )
%segment 利用训练好的神经网络进行分割图像
% net - 已经训练好的神经网络
% img - 等分割的图像
%输出 bw - 分割后的二值图像
[m n] = size(img);
P = img(:) ;
P = double(P);
P = P' ;
T = sim(net,P);
T(T<0.5) = 0 ;
T(T>0.5) = 255 ;
t = uint8(T);
t = t';
bw = reshape(t,m,n);
1.4.2 结果展示
本实验使用的图片如图1.1,1.3。试验采用传统的BP网络算法对图像进行分割。分割结果如图1.2,,1,4。图1.5为使用matlab进行网络训练的运行界面。
图1.1分割前 图1.2 分割后
1.3 分割前 1.5 分割后
图1.5 matlab进行BP网络训练
1.4.3 实验总结
根据实验结果,发现BP网络有计算开销大,计算时间很长,收敛速度缓慢的缺点。目前,对于BP网络已经有很多改进的算法,一般的改进方法分为变步长法、加动量项、GA方法。
另外在进行BP网络训练和图像分割前,对于网络权值阈值参数的选取用的是固定值。目前,可以使用遗传算法获取神经网络权值阈值参数等比较好的方法来选取,这样可以加速BP网络的训练。也会使得分割图像的效果更好。