基于神经网络的水果识别

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

水果识别

一、水果识别算法设计:

从水果图像可以看出,仅从水果的主要颜色就可以把它们区分开。于是我们先提取出主要颜色,然后用BP神经网络进行分类。设计步骤如下:

1)用K-均值方法对每幅图像进行聚类。然后提取出水果的主要颜色。

2)把每幅图像水果主要颜色的R、G、B三个分量分别作为水果的三个特征,

把它们作为神经网络的输入。

3)把一部分提取出的水果特征作为训练样本训练BP网络。

4)读取未知类别的水果图像,然后用K-均值聚类,提取主要颜色,把主要颜色

的R、G、B三个分量输入到训练好的神经网络,即可对水果进行分类。

二、实验

1、特征提取

用k-均值方法对水果图像分类,要分的类别数依赖于图像颜色复杂度,从图像可直观看出三种水果的主要颜色有较大的区别,因此,我们把图像聚成两类,然后提取出主要颜色。以下是一幅桃子图像聚类的结果

原始图像聚类结果

把所有水果主要颜色的R、G、B三个分量以及每个水果所属类别存放到一个数据文件里(我们存放在characters.mat里),以提供给训练及测试神经网络用。

2、训练神经网络

首先我们选择比较常用的BP网络。网络为两层,其中第一层的传递函数为tan-sigoid,在输出层使用线性传递函数(purelin)。由于我们要得到的是三个目标,所以输出层使用3个神经元,而第一层的神经元需要有试验确定,在这个实

验中,通过反复试验,我们发现第一层使用6个神经元最为合适,这个时候误差能够达到最好,分类效果也比较理想。

神经网络训练过程中,我们从characters.mat 文件中读取所有水果的特征和水

果所属类别,作为样本。其中一半的样本用于训练,训练最大循环次数为100,然后用所有的样本进行测试。由于每次的初始化是随机的,因此,我们可以反复训练,然后记录训练结果比较的网络。训练过程发现,网络识别率很容易达到100%,以下是我们训练过程中识别率为100%时,神经网络的收敛图。最后的误差可达610-。

010203040

50

60708090100

10

-6

10

-5

10

-4

10

-3

10

-2

10

-1

10

10

1

100 Epochs

T r a i n i n g -B l u e

Performance is 3.09984e-006, Goal is 0

三、方法比较

1、提取两个主颜色

上面的方法中,我们只提取一个主颜色作为水果特征,如果我们提取两个组颜色作为水果特征,结果会不会更好呢?我们先对图像聚成两类,然后分割出水果,对分割出的水果再聚两类,提取出两个颜色作为特征。然后训练网络。我们发现这种情况下识别率仍然为100%,但收敛速度很快,最后误差可达1210-下图

是其收敛过程。不过这种情况下,结果很依赖于神经网络初始值的选择,初始值不好,结果会比较差。

010203040

5060708090100

10

-12

10

-10

10

-8

10

-6

10

-4

10

-2

10

100 Epochs

T r a i n i n g -B l u e

Performance is 1.86217e-012, Goal is 0

2、加入粗糙度特征

从水果图可以直观看出,从颜色上很容易把苹果分开,但是个别桃子和桔子

有较大的相似度,然而,可以发现桔子表面比桃子表面光滑,于是,我们可以想到加入纹理特征(这里指粗糙度),来更好的区分桃子和桔子。粗糙度的计算用如下公式:

(,,)(,)(,)(,)(,)

(,)(,)(,)(,)

g i j d f i j f i d j f i j f i d j f i j f i j d f i j f i j d =-++--+-++--

计算所有的g(i,j,d)(本文中d=3),然后计算平均值,作为粗糙度特征,于

是我们用一个颜色和一个粗糙度作为水果特征,然后训练神经网络。从结果种情况下识别率仍然为100%,但收敛速度最快,最后误差可达1710-下图是其收敛过程。不过这种情况下,结果还是比较依赖于神经网络初始值的选择,初始值不好,结果会比较差。总的来说,这是效果最好的。

051015

2025303540

10

-18

10

-16

10

-14

10

-12

10

-10

10

-8

10

-6

10

-4

10

-2

10

40 Epochs

T r a i n i n g -B l u e

Performance is 6.37405e-018, Goal is 0

三种情况比较: 程序文件: fruitrecognize.m 水果识别主程序 fruitrecognize.fig 水果识别界面

characters1.mat 一个颜色是的所有水果特征 characters2.mat 一个颜色是的所有水果特征 characters3.mat

一个颜色特征和粗糙度特征 bpnet1.mat bpne1t.emf 以一个颜色作为特征时训练的网络和误差图。 bpnet2.mat bpnet2.emf

以两个颜色作为特征时训练的网络和误差图。

bpnet3.mat bpne3t.emf 颜色和粗糙度作为特征时训练的网络和误差图。

在matlab 下运行fruitrecognize.m 即可进入水果识别界面。

相关文档
最新文档