罗志翔 胡蓉 赵全友 邓雄昌
摘要:近些年,计算机视觉发展迅速,在水果识别方向进行了广泛的应用和研究。本文设计基于BP神经网络的水果识别系统,选取生活中常见的三种水果:苹果、橘子、香蕉作为对象。首先,通过网络资源等搜集水果图像建立样本库;然后通过MATLAB对图像进行预处理,为后续的特征提取做好准备。水果特征的提取选择纹理、形状、颜色三种特征进行提取;同时在每种特征中选用不同的特征值作为特征向量。通过提取三种特征后输入到BP神经网络中进行训练、识别。经测试,识别的成功率可以达到93.18%,证明了可行性以及未来的可实用性。
关键词: 水果识别;MATLAB;特征提取;BP神经网络
中图分类号: TP391 文献标识码:A
文章编号:1009-3044(2021)04-0187-03
Abstract: Computer vision has developed rapidly in recent years, and has been widely used and researched in the direction of fruit recognition. This paper designs a fruit recognition system based on BP neural network. Choose three common fruits in life: apples, oranges, and bananas as objects. First, collect fruit images through network resources to establish a sample library. Then the image is preprocessed by MATLAB software to prepare for subsequent feature extraction. For the extraction of fruit features, three features of texture, shape, and color are selected for extraction; at the same time, different feature values are selected as feature vectors in each feature. After three kinds of features are extracted, they are input into BP neural network for training and recognition. After the recognition test, the recognition success rate can reach 93.18%, which proves the feasibility and practicality in the future.
Key words: fruit recognition; MATLAB; feature extraction; BP neural network
我國地域广阔、水果资源丰富,随着科技发展和社会需求的加大,水果的种植规模也在不断增大;同时也出现了复合型果园。在复合型果园场景中,借助水果识别系统配合机械化设备可以完成自动采摘、分拣等操作;尽管人工同样能实现相同的操作,但是效率不高、需要的劳动力也较大。而且,随着劳动力结构的转变,从事农业的劳动力也在不断减少。所以将其应用到生产当中可以代替大量的劳动力,可以达到高效、方便的特点[1]。
在当前,国内外对水果识别以及神经算法的研究已经取得了不错的成绩;在实际应用中也是不断地得到完善和提高。基于社会的发展和科技水平的不断提升,人民的需求也在不断变化,从而让物体识别技术也在不断发生改变。在5G热潮的推动下,应用于各种场景的水果识别的技术一定会具有更高的精度、应用场景更加的普及。
1 图像识别基本理论
数字图像识别主要是在计算机视觉的基础上,通过收集图像的轮廓、特征、色彩、纹理等信息来进行识别。一般的图像识别流程如图1所示。
其中,预处理主要是灰度化、二值化、滤波等操作,目的是减少计算量,突出图像中目标区域的信息。图像分割则是将图像中的背景与目标区域分割开,使目标区域更好的显示出来。特征提取步骤常用的特征值有:纹理特征、颜色特征、形状特征等;之后将特征值输入到识别器中进行训练识别。选择数字图像作为处理对象,是因为相对于模拟图像,数字图像具有存储,传输方便可压缩、传输过程中不易失真、处理方便等巨大优势,这些都为图像识别技术的发展提供了强大的动力以及良好的基础[2]。
2 水果识别器的设计
本次水果识别的设计主要分为六大步骤,具体的流程图如图2所示:
2.1 样本库的建立
本次课题设计以苹果、香蕉、橘子的数字图像作为对象进行研究。但是研究的初始阶段因为缺少图像样本库,所以需要自建样本库来实现目标。
在CSDN、PUDN、百度图片、互联网搜索等方式来获得不同环境下(光照、角度、背景)下的水果原始图像,构建水果图像样本库共299张格式为JPEG的彩色图像。
2.2 图像的目标分割
在读取图像并完成尺寸变化后,为减少计算量,灰度化是不可缺少的一项处理。图像在进行特征识别前,由于图像在获取时的角度、光线以及图像背景等问题的存在,直接进行特征提取往往效果不佳。所以要事先对图像进行目标分割,将图像与背景相分离,将水果区域凸显出来,然后进行图像填充、标记等方式将目标与背景完全分割开。
2.3图像特征提取
(1)颜色特征提取
数字图像的颜色特征包括颜色直方图 、颜色矩、颜色相关图和颜色聚合向量等。本次采用的是颜色矩来进行颜色特征的提取,在图像中颜色的分布信息主要是集中在低阶矩中,所以采用颜色的一阶矩、二阶矩、三阶矩就足够表达颜色的分布[3];相比于颜色直方图优点在于无须向量化,颜色矩一共是提取9个分量(RGB三个分量,每个分量三个低阶矩),所以相对于其他的颜色特征来说更为简洁。
(2)纹理特征提取
纹理特征是一种反映图像表面相同性质的特征,它体现了物体的表面具有缓慢变化或者周期变化的结构排列属性[4]。纹理可以认为是灰度分布在空间位置上的反复出现而形成的,在图像中相隔距离的两个像素之间会存在一定的灰度关系,也就是灰度相关性。所以本次采用灰度共生矩阵来进行纹理特征的提取。
灰度共生矩阵就是一种通过灰度的空间相关性来描述纹理的常用方法。它是根据像素的距离和角度形成的矩阵函数,通过计算图像中距离和方向的两点灰度之间的相关性,来反映图像在方向、间隔等方面的综合信息[5]。
(3)形状特征提取
物体和区域的形状是图像表达和图像检索中的另一重要的特征。但不同于颜色或纹理等底层特征,形状特征的表达必须以图像中物体或区域的划分为基础。形状特征的提取有:傅立叶形状描述法、几何参数法、形状不变矩法。本次设计选用几何参数法进行形状特征提取。
2.4水果分类器的建立
BP神经网络是一种按照误差逆向传播数据算法来训练的多层前馈神经网络。前馈神经网络的基本特点是,节点按照一定的层次排列,信号的传输只有单一的方向从上层节点传输到下层节点,网络的连接部分是单向的。在网络运行中,可以将每一层网络节点作为一次对特征值的转换或者计算,变化的方式取决于节点传递函数。最后的结果则是由网络的最后一层节点做出决策[6]。
BP神经网络的结构可以大致分为三层即输入层、隐含层、输出层。其中隐含层就是处于输入层和输出层中间的层,一个神经网络中可以有一个或者多个隐含层;有多少隐含层就称为几层前馈神经网络。并且,隐含层和输出层都是具有激活函数的功能神经元。BP神经网络被大量应用在模式识别、故障检测、智能控制、函数逼近等邻域,是目前应用最成功、最广泛的神经网络模型之一。
本次课题选用BP神经网络作为水果分类器,相比于其他算法BP神经网络具有误差反馈的优势,在训练时会不断地将出现的误差返还,以此来调节网络层之间的权值,以达到最佳识别效果。
3 仿真结果及分析
3.1 水果图像的训练及识别
本次仿真都是在64 位WIN10操作系统下,采用MATLAB2019a软件进行仿真测试。样本库来自CSDN、PUDN、百度图片等渠道,为JPEG格式的299张彩色图像,共分为三种水果(苹果、香蕉、橘子)。图像均转换为128×128大小的图像,采用OSTU法进行二值化处理后用Canny算子进行边缘检测,并对其进行闭运算,最后进行填充和标签化。其结果如图3所示。
本次设计共选用四种特征值进行训练识别,即颜色特征、纹理特征、形状特征。其在提取出相应的特征值之后将特征值用矩阵的方式封装起來,生成样本库作为训练识别数据。训练识别器是选用的BP神经网络来进行训练识别。由于在训练识别已经将特征值与标签打包放到了一起,训练前要进行数据集分割。本次选用30%数据集作为测试集,70%数据集作为训练集。
在训练前将数据集进行数据归一化,选用模式识别函数patternnet来搭建识别分类器所需的识别网络。隐含层的层数很大程度上影响着识别率,隐含层中的神经元的多少同样也会对识别率有影响。在测试中神经元并不是越多越好,本次采用四层隐含层的神经网络,不同隐含层对应的识别率如表1所示:
在表1中可以很明显地看出来,在隐含层增加到第4层后,识别率不仅没有提高,反而在不断降低,所以本次网络建立选择的隐含层数为3层。经过测试,隐含层中的神经元个数为[20,50,91]时识别率最高也最稳定在93.18%。识别网络图,训练曲线分别如图4、图5所示。
图5中有三条曲线,分别为:Train曲线(表示训练集在训练过程中误差的下降程度)、Validation曲线(表示验证集的训练过程中的误差下降程度)、Test曲线(是输入的测试集的训练曲线)。本次训练的迭代次数为38次,即所有训练样本通过了神经网络训练一次(一个正向传递和一个反向传递)。在32次训练迭代时,验证集的错误率降至最低,在继续训练6次后错误率没有降到更低的情况下结束训练,所以本次训练的迭代次数为38次。
3.2 系统测试
在神经网络训练过程中,将识别率达到最高时的网络模型保存下来为一个net.mat文件。该文件作为后续系统中的识别模块使用,根据测试集的误差输出显示,该模型的最大精度为93.18%;符合要求,可以作为识别模块使用。
3.2.1 GUI界面展示
本次借助Matlab软件中的GUI设计功能,设计了一个水果识别系统界面。该界面可以实现优秀的人机交互功能。本次设计制作了三个按钮、两个图像显示界面、一个静态文本界面。三个按钮分别实现:输入图像、识别图像、清除图像三种功能。水果识别GUI 界面如图6所示。
3.2.2 水果识别系统的测试
将训练好的模型输入到GUI中后,随机提取样本库中的苹果、香蕉、橘子三张图像作为识别对象,测试结果如图7所示。
4 结束语
本文设计出一种基于BP神经网络的水果识别系统,获得了较高的识别率。但是因本人的学术水平有限,并未考虑到复杂环境下的图像识别,在后续的学习和研究中将不断完善,不断进步。
参考文献:
[1] 王前程.基于深度学习的水果图像识别算法研究[D].河北大学,2016.
[2] Kondo, Naoshi, Yata, Koki, Iida, Michihisa. Development of an End-Effector for a Tomato Cluster Harvesting Robot[J]. Engineering in Agriculture Environment & Food, 2010, 3(1):20-24.
[3] 胡文锦.图像边缘检测方法研究[D].北京:北京交通大学,2009.
[4] 蔡健荣,赵杰文.自然场景下成熟水果的计算机视觉识别[J].农业机械学报,2005,36(2):61-64.
[5] 焦蓬蓬,郭依正,刘丽娟,等.灰度共生矩阵纹理特征提取的Matlab实现[J].计算机技术与发展,2012,22(11):169-171,175.
[6] 陈源,张长江.水果自动识别的BP神经网络方法[J].微型机与应用,2010,29(22):40-43,48.
【通联编辑:唐一东】