基于神经⽹络的⽔果识别(收藏)
---------------------------------------------------------------最新资料推荐------------------------------------------------------ 基于神经⽹络的⽔果识别(收藏) ⽔果识别⼀、⽔果识别算法设计:
从⽔果图像可以看出,仅从⽔果的主要颜⾊就可以把它们区分开。
于是我们先提取出主要颜⾊,然后⽤ BP 神经⽹络进⾏分类。
设计步骤如下:
1) ⽤ K-均值⽅法对每幅图像进⾏聚类。
然后提取出⽔果的主要颜⾊。
2) 把每幅图像⽔果主要颜⾊的 R、G、B 三个分量分别作为⽔果的三个特征,把它们作为神经⽹络的输⼊。
3) 把⼀部分提取出的⽔果特征作为训练样本训练 BP ⽹络。
4) 读取未知类别的⽔果图像,然后⽤ K-均值聚类,提取主要颜⾊,把主要颜⾊的 R、G、B 三个分量输
⼊到训练好的神经⽹络,即可对⽔果进⾏分类。
⼆、实验 1 、特征提取⽤ k-均值⽅法对⽔果图像分类,要分的类别数依赖于图像颜⾊复杂度,从图像可直观看出三种⽔果的主要颜⾊有较⼤的区别,因此,我们把图像聚成两类,然后提取出主要颜⾊。
以下是⼀幅桃⼦图像聚类的结果原始图像聚类结果把所有⽔果主要颜⾊的 R、G、B 三个分量以及每个⽔果所属类别存放到⼀个数据⽂件⾥(我们存放在 characters.mat ⾥),以
1 / 5
提供给训练及测试神经⽹络⽤。
2 、训练神经⽹络⾸先我们选择⽐较常⽤的 BP ⽹络。
⽹络为两层,其中第⼀层的传递函数为tan-sigoid,在输出层使⽤线性传递函数(purelin)。
由于我们要得到的是三个⽬标,所以输出层使⽤ 3 个神经元,⽽第⼀层的神经元需要有试验确定,在这个实验中,通过反复试验,我们发现第⼀层使⽤ 6 个神经元最为合适,这个时候误差能够达到最好,分类效果也⽐较理想。
神经⽹络训练过程中,我们从 characters.mat ⽂件中读取所有⽔果的特征和⽔果所属类别,作为样本。
其中⼀半的样本⽤于训练,训练最⼤循环次数为 100,然后⽤所有的样本进⾏测试。
由于每次的初始化是随机的,因此,我们可以反复训练,然后记录训练结果⽐较的⽹络。
训练过程发现,⽹络识别率很容易达到100%,以下是我们训练过程中识别率为 100%时,神经⽹络的收敛图。
最后的误差可达610 。
0 10 20 30 40 50 60 70 80 90 10010-610-510-410-310-210-1100101100
EpochsTraining-BluePerformance is 3.09984e-006, Goal is 0 三、⽅法⽐较 1 、提取两个主颜⾊上⾯的⽅法中,我们只提取⼀个主颜⾊作为⽔果特征,如果我们提取两个组颜⾊作为⽔果特征,结果
---------------------------------------------------------------最新资料推荐------------------------------------------------------
会不会更好呢?我们先对图像聚成两类,然后分割出⽔果,对分割出的⽔果再聚两类,提取出两个颜⾊作为特征。
然后训练⽹络。未识别的网络
我们发现这种情况下识别率仍然为 100%,但收敛速度很快,最后误差可达1210 下图是其收敛过程。
不过这种情况下,结果很依赖于神经⽹络初始值的选择,初始值不好,结果会⽐较差。
0 10 20 30 40 50 60 70 80 90 10010 -1210 -1010 -810 -610 -410 -210 0100 EpochsTraining-BluePerformance 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 jf i j f i j d f i j f i j d= + + + + + 计算所有的 g(i,j,d)(本⽂中 d=3),然后计算平均值,作为粗糙度特征,于是我们⽤⼀个颜⾊和⼀个粗糙度作为⽔果特征,然后训练神经⽹络。
从结果种情况下识别率仍然为 100%,但收敛速度最快,最后误差可达1710 下图是其收敛过程。
3 / 5
不过这种情况下,结果还是⽐较依赖于神经⽹络初始值的选择,初始值不好,结果会⽐较差。
总的来说,这是效果最好的。
0 5 10 15 20 25 30 35 4010-1810-1610-1410-1210-1010-810-610-410-210040 EpochsTraining-BluePerformance is
6.37405e-018, Goal is 0 三种情况⽐较:
特征情况识别率收敛速度对⽹络初始值的倚赖程度⼀个主颜⾊ 100% ⼀般较⼩两个主颜⾊ 100% 较快很⼤颜⾊和粗糙度100%最快较⼤(综合效果最好)程序⽂件:
fruitrecognize.m ⽔果识别主程序 fruitrecognize.fig ⽔果识别界⾯characters1.mat ⼀个颜⾊是的所有⽔果特征characters2.mat ⼀个颜⾊是的所有⽔果特征 characters3.mat ⼀个颜⾊特征和粗糙度特征 bpnet1.f 以⼀个颜⾊作为特征时训练的⽹络和误差图。
bpnet2.f 以两个颜⾊作为特征时训练的⽹络和误差图。
bpnet3.f 颜⾊和粗糙度作为特征时训练的⽹络和误差图。
在 matlab 下运⾏ fruitrecognize.m 即可进⼊⽔果识别界⾯。