APP下载

基于树莓派使用tensorflow实现水果识别

2019-12-02刘润洲

中国科技纵横 2019年17期
关键词:树莓派卷积神经网络

摘  要:图像识别领域作为深度学习研究应用的初衷,如何能够快速准确地对图像进行识别一直以来都是众多研究人员的研究重点。而水果图像识别作为图像识别应用中很重要的一部分,在实际生活中能够高效地实现水果图像的正确识别具有非常重要的地位。本文在深入地研究深度学习尤其是卷积神经网络理论的基础上,依据经典人工神经网络模型Alexnet进行改进,使之可以进行水果图像识别,并借助TensorFlow函数库通过Python编程语言构造了新的卷积神经网络模型,最后结合树莓派成功实现了对于水果(香蕉)图像的识别。

关键词:水果图像识别;卷积神经网络;树莓派;TensorFlow

中图分类号:TP751.1    文献标识码:A    文章编号:1671-2064(2019)17-0000-00

0 引言

随着我国农业生产的快速发展和深度学习在诸多领域的广泛应用,研究人员也开始思考将二者结合起来以加快现代化智慧产业发展。水果图像识别是我国现代智慧农业发展过程中十分关键的一环,能够实现对水果图像快速准确高效的识别是我们一切工作的前提条件。

本次设计是在树莓派平台上利用TensorFlow实现水果识别任务,事实上,树莓派仅仅作为程序的载体,更重要的是选择合适的人工神经网络实现高效准确的水果图像识别。为了满足水果图像识别性能和实时性的需求,采用卷积神经网络对水果图像进行识别,并且依据不同的经典网络:LeNet-5[1]和AlexNet[2],设计了不同的网络模型分别进行训练,最后对比训练结果选出最优网络拷贝到树莓派上并完成水果识别任务。

1 水果识别研究现状

随着我国水果产业的快速崛起和深度学习在诸多领域的广泛应用,研究人员也开始思考将二者结合起来以加快产业发展。其中比较具有代表性的有:利用BP神经网络作为分类器的吕秋霞[3]等人,虽然识别率可以达到95%以上,但是存在复杂的人造特征过程和网络训练不足的问题;利用预处理消除水果图像灰度分布不均匀和光照变化问题,再通过BP神经网络进行识别的陈源[4]等人,虽然识别率可以达到98.6%,但是仍然存在预处理过多和样本种类过少的局限;利用一系列预处理工作实现对水果尺寸,颜色和形状特征的提取,再利用SVM分类器完成对水果特征的组合识别,最后准确率达到95.33%[5]

通过查阅以往文献可以发现,水果识别系统的设计按照传统的方法流程一般如图1,图像预处理和特征提取是主要任务,并且在实验过程中所用到的水果图片均是在有着严格限定的环境中拍摄的,这大大减少了外界环境的影响,因而当识别系统被应用到实际中时,我们所得到的识别准确率往往不尽如人意。此外,在传统的水果识别系统设计过程中,我们通常是对水果的形状,颜色,纹理等特征进行提取和识别,但是水果在不同的地理环境下会引起其个体的形状,颜色及纹理等特征的不同,在拍摄过程中光照的影响也会造成这些特征的变化,因此会降低识别系统的准确性。基于以上种种,我们需要更加复杂的识别算法来解决这些问题。

2 基于TensorFlow实现水果图像识别的人工神经网络

TensorFlow是由Google Brain团队开发的一个开源软件库,使用TensorFlow实现水果识别,实质上就是利用深度学习的相关知識,通过对人工神经网络进行有监督的训练,从而实现计算机对于水果图像的成功识别。

本节将采用经典Alexnet网络模型进行水果图像的识别研究,并通过搭建具体的卷积神经网络[6]结构来分析其对水果图像识别结果的影响,并对网络模型进行改进提高识别准确率,以便于下一步实验设计的进行。

2.1数据集的构建

构建数据集,最主要的就是采集相关水果图像,依据图像识别任务的不同需要选择不同拍摄设备,以便进行所需图像的摄影采集。本次图像采集设备均为拍摄像素为八百万的手机摄像头,而且因为本次设计选择香蕉作为目标水果,所以选取香蕉,桃子,梨,草莓,芒果,凤梨和黄柠檬七种水果从各种不同角度进行了拍摄。

在图像采集完成后,先分别筛选出拍摄质量较高的四百张各种角度的香蕉图片和四百张不同角度的非香蕉类水果图片,并对这些彩色图片进行批量修改使其尺寸格式统一。目前默认将其像素尺寸修改为100*100,之后对彩色图片进行分类和数据标注,形成本次设计所需要的训练数据集,与此同时,再分别选出一百张同样处理完成的不同角度的香蕉类和非香蕉类图片作为测试数据集。

2.2基于经典Alexnet网络模型的改进网络模型

2.2.1三维卷积设计

在传统的图像识别神经网络模型中,一般均采用将彩色图像转化为灰度图像,对灰度图像进行二维卷积的方法。这种方法需要对所有图片均进行复杂的预处理过程,包括整理使其成为统一尺寸格式和灰度化处理等。为了能够简化预处理过程,降低计算成本,在本次设计中,利用三维卷积直接对彩色图像进行操作提取局部特征后完成识别

2.2.2 基于Alexnet网络模型的改进网络

(1)预处理:从计算成本和神经网络承受能力两个角度考虑,设计将之前处理过得到的训练数据集和测试数据集样本进行尺寸和格式的再次统一,因为训练的网络层数较浅,且利用笔记本电脑CPU进行训练,故将图片的像素尺寸设定为100*100*3,而非原文中的224*224*3。

(2)输入层Input:因为卷积神经网络的结构一般受到输入图像像素尺寸的影响,而且其深度在很大程度上决定着最后分类效果的优劣,综上,本次网络模型选择像素尺寸大小为100*100*3的水果彩色图像矩阵作为输入矩阵。

(3)卷积层C1:C1神经网络层是对从输入层传入的彩色图像像素矩阵利用许多不同的立体卷积滤波器进行卷积计算从而得到不同的特征图像。本次卷积滤波器设计卷积核尺寸大小为3*3*3,共计使用16个相同尺寸的卷积滤波器,除此之外,设定卷积滤波器每次向各个方向的移动步长均为1。本次卷积操作后还要将所得特征图像输入ReLU单元进行激活处理,得到激活像素层。

(4)池化层P1:P1神经网络层对C1卷积网络层中输出的十六个特征图像进行最大池化操作处理后得到新的特征图像。池化处理利用的是由人类观察图像时局部感受野延伸出的图像局部具有相关性的原理,对输入的特征图像再次进行卷积抽样,可以减少数据中的冗余信息同时降低所需要的参数规模。设计卷积核尺寸为3*3,假设卷积窗口每次移动步长为2。在池化操作完成后,对像素层进行归一化处理,此时运算的尺寸仍为3*3,归一化运算后的像素层尺寸规模无变化。

(5)卷积层C2:C2对P1池化层中输出的十六个特征图像采用与C1卷积层相似的方式进行卷积计算。本次卷积滤波器设计卷积核尺寸大小为3*3*16,共计使用16个相同尺寸的卷积滤波器,设定卷积滤波器每次向各个方向的移动步长均为1。激活函数仍为ReLU非线性不饱和激活函数。

(6)池化层P2:P2对C2卷积层中输出的十六个特征图像进行最大池化操作处理后得到新的特征图像。设计卷积核尺寸为3*3,假设卷积窗口每次移动步长为1。在池化操作完成后,对像素层进行归一化处理。

(7)全连接层FC1:全连接神经网络层与P2池化神经网络层的连接方式顾名思义,就是选用全连接的方式进行的。将P2池化神经网络层中的输出作为本次全连接层的输入,将像素层矩阵全部展开转化为各个独立的神经元后同样经过ReLU非线性不饱和函数激活后进行输出。

(8)全连接层FC2:具体处理操作方式与FC1全连接神经网络层类似。

(9)输出层Output:输出层output选择softmax回归分类器,将上一神经网络层中的输出所有神经元输入多分类逻辑回归分类器进行分类识别,判断是否为香蕉,并输出判断结果。

3 通过树莓派实现水果识别的系统设计

卷积神经网络代码编写到树莓派上后发现因为树莓派自身内存不够,每次只要开始训练,就会出现进程被杀掉的报错,所以树莓派实际上并不能训练神经网络。为此我想出的解决方案是:在发现不能训练网络后,转而选择在笔记本电脑上训练该神经网络,训练成功后将其模型文件传输到树莓派上,直接利用模型文件进行测试。

本次系统设计选择树莓派作为程序载体,因为它具有其他硬件设备所缺少的便携性和可操作性,对于Python开发相关软件具有很好的环境适应性。本设计系统框图如图2所示。

树莓派实现水果识别的流程设计:(1)搭建并训练基于Alexnet神经网络模型的改进卷积神经网络架构;(2)对所设计的卷积神经网络进行测试,测试成功则进行下一步骤;(3)将训练好的卷积神经网络模型移植到树莓派硬件上;(4)通过树莓派运行网络模型,实现水果识别的目标。

经过多次测试,可以观察到卷积神经网络模型移植到树莓派硬件平台上后其测试准确率并无明显变化,仍然稳定在98%左右。

4 算法改进及实验分析

本次设计是在Intel core i5,2.5GHz CPU,4G内存的Windows操作系统,Python操作平台以及TensorFlow开源库的环境下进行的。

4.1算法改进

(1)三维卷积计算的应用。为了简化预处理过程,进一步提高图像识别的效率,引入采用了三维卷积的Alexnet卷积神经网络模型,在传统的Lenet-5网络模型和Alexnet网络模型关于水果图像识别训练准确率的对比下,如图3所示。

Alexnet模型训练准确率高于Lenet-5模型,故本次设计选择采用Alexnet卷积神经网络模型,同时对其进行了改进使其更适应于本设计任务。

(2)激活函数的改进。搭建模型过程中,在卷积层采用了不同的激活函数,主要在于比较原文中使用的sigmoid函数与近几年较为流行的ReLU函数及Leakly ReLU函数的识别错误率差别,事实上,在训练网络时其错误率差别对比如图4所示。

从图4可以看出,横坐标代表迭代次数,纵坐标代表图像识别的错误率。经过训练后,分别以Sigmoid非线性饱和函数、ReLU非线性不饱和函数和 Leaky ReLU非线性不饱和函数作为激活函数的Alexnet改进神经网络模型的水果图像识别错误率分别大约为 2.20%、0.90%和 0.80%。综上,在本次训练的卷积神经网络中使用非线性不饱和修正函数作为隐含层中的激活函数得到的水果图像识别错误率明显大幅度低于使用Sigmoid非线性饱和函数作为激活函数的识别错误率。除此以外,ReLU非线性激活函数相比于 Sigmoid 非线性激活函数,可以极大的提高训练时的收敛速度,收敛速度至少可以提高5倍以上。而Leaky ReLU 非线性不饱和函数作为ReLU非线性不饱和函数的变形,在训练实验迭代 200 次后的图像识别错误率相比于 ReLU 非线性不饱和激活函数稍有下降,并且可以提高卷积神经网络模型的鲁棒性,所以在最终搭建改进神经网络模型时选取Leaky ReLU非线性不饱和激活函数作为本次卷积神经网络的激活函數。

4.2设计及实验结果分析

在将卷积神经网络移植到树莓派上进行训练时,因为树莓派自身内存不足,一旦开始训练就会出现报错,提示进程已经被停止。所以实际上,树莓派本身并不能独立地对卷积神经网络进行训练。故本次设计选择先在笔记本电脑上训练该神经网络,成功后将其模型文件传输到树莓派上,直接利用模型文件进行水果图像识别。

通过树莓派摄像头对水果图片进行拍摄保存,利用已经训练移植好的神经网络模型对此图像进行识别,识别结果如图5所示,其中红色方框标出部分表明对于上述拍摄图片成功进行了识别:这是香蕉的概率为99.99%。这说明对于香蕉这一水果,本神经网络能够成功识别。

5 结语

随着社会经济的快速发展,现代农业技术已经十分发达,水果图像识别技术作为未来智慧农业发展的一个重要技术方向,将深度学习和实际应用紧密的结合起来,能够大大降低人力水果分类的成本,取得良好的效果。

参考文献

[1]王水平,唐振民,范春年等.基于 SVM 的水果分类算法研究[J].武汉理工大学学报,2010,8,32(16):44-47.

[2]Krizhevsky A , Sutskever I , Hinton G . ImageNet Classification with Deep Convolutional Neural Networks[C]// NIPS. Curran Associates Inc.2012.

[3]呂秋霞,张景鸿.基于卷积神经网络的水果自动分类系统设计[J].安徽农业科学,2009,35(37):17392-17394.

[4]陈源,张长江.水果自动识别的 BP 神经网络方法[J].图形、图像与多媒体,2010,29(22):40-43.

[5]王水平,唐振民,范春年,裴晓芳,谢永华.基于SVM的水果分类算法研究[J].武汉理工大学学报,2010,32(16):44-47.

[6]BENGIO Y.Learning deep architectures for AI[J].Foundations and Trends in Machine Learning,2009,2(1):1-12.

收稿日期:2019-08-01

作者简介:刘润洲,男,北京人,研究方向:机器学习(图像识别)。

猜你喜欢

树莓派卷积神经网络
基于卷积神经网络温室智能大棚监控系统的研究
基于深度卷积神经网络的物体识别算法
智能安全防盗探测小车
基于嵌入式技术的农村医疗系统设计