张继成,李德顺
(1. 长江大学工程技术学院,湖北荆州,434020; 2. 海南大学计算机科学与技术学院,海口市,570228)
草莓果实因其香气、多汁和甜味等特性受到消费者的青睐,中国拥有世界上最丰富的草莓资源[1]。以往成熟草莓由水果专家根据颜色、质地和化学成分等客观标准进行评估,此方法准确性高,但往往具有破坏性,耗时且需要大量人员。现在智能采摘机器人被引入草莓行业[2],通常由RGB相机或深度相机捕获成熟草莓图像,然后中央控制系统根据水果定位算法操作机械手完成草莓采摘。水果识别定位过程在草莓采摘机器人的开发中起着重要作用,成功的识别和定位模型应该避免草莓的误判,并能够选择成熟的水果采摘,因此需要开发一种快速且非破坏性的成熟草莓果实识别方法。
许多研究已经实现了对成熟水果的非破坏性识别。Liu等[3]提出基于边缘检测的分水岭算法从块中提取苹果的颜色和纹理特征,实现对塑料袋中苹果的识别。近年来,深度学习方法广泛用于水果图像识别[4-6],AlexNet卷积神经网络(CNN)架构的提出具有里程碑式的贡献。Inkyu等[7]使用深层卷积神经网络检测7种不同的水果,提出一种基于更快区域的CNN水果检测方法,有助于水果产量估计和自动采摘。Rahnemoonfar等[8]设计了识别番茄目标的DCNN,可以准确识别由叶子遮蔽和重叠的番茄目标。Yang等[9]基于RGB图像构建了一个掩模区域卷积神经网络,用于识别成熟和未成熟的草莓,100张测试图像的水果识别结果证明了其稳定性。Tian等[10]提出一种用于识别不同生长阶段的苹果改进YOLO-V3算法,可以实现苹果遮挡和重叠的实时检测,识别效果良好。闫建伟等[11]提出自然环境中基于残差网络的刺梨果实识别方法,识别效果理想。王立扬等[12]提出一种改进型LeNet-5的苹果自动分级方法,测试集准确率达98.37%,能够适应工厂智能化分级。张星等[13]提出改进YOLOv3的田间复杂环境下菠萝拾捡识别方法,算法检测识别率高达95%左右,检测速度能够满足实时性要求。
本文提出一种基于深度残差学习的成熟草莓识别方法,以解决一些现有问题,如由于叶子和茎的遮挡,无法获得草莓的完整图像。首先,引入深度可分离卷积设计残差网络,从不同角度提取成熟草莓特征。其次,压缩和激励模块嵌入学习成熟草莓特征权重,使用特征重新校正改进网络,并且通过添加空间金字塔池来增强网络的稳定性。最后,为进一步优化识别结果,采用加权衰减优化方法Adam优化器提高模型的泛化能力。试验表明提出的方法识别准确率和灵敏度理想。
通过在实地大棚拍摄成熟草莓图像,同时使用图片爬虫工具ImageAssistant爬取成熟草莓的图像,然后通过人工筛选后的初始数据集共计8 975张图像,但是这些数据集规模量相对较小。为增加样本的数量,通过翻转变换(水平、垂直),随机旋转变换(60°、90°、120°),改变对比度(0.6,1.6倍)和亮度(0.6,1.2,1.6倍)等数据增强技术使新的训练集图片扩充为原来的8倍,同时对图片的大小进行归一化处理。
本文构建一个深度可分离卷积残差网络,引入压缩和激励模块从不同视角提取成熟草莓有效特征,通过交叉熵损失函数、添加空间金字塔池、Adam优化器提高网络模型的稳健性和训练速度,从而提高成熟草莓图像识别准确率和灵敏度。其算法流程图如图1所示。
图1 算法流程图
通常增加卷积网络层数,能够获取更多的成熟草莓特征信息,但简单累积网络层数容易造成梯度消失问题,其性能逐渐趋于饱和,从而降低识别率。此外,虽然层的深度可以在某种程度上提高网络性能,但也会造成网络训练难度提高。为解决以上问题,本文在残差网络中引入深度可分离卷积[14],让每个通道使用一个滤波器对输入草莓图像进行卷积操作,然后基于点的卷积,使用深度卷积的结果来执行1×1的卷积内核操作,获取输出结果。区别于标准卷积,此网络模型的参数量和计算量大大降低,检测速率进一步提高。
残差网络引入残差学习,其模块结构如图2所示,假设H(x)是由几个堆叠层构建的基映射,映射F(x)=H(x)-x,最优映射可以表示为H(x)=F(x)+x。
图2 残差网络示意图
残差单元可以定义为
xl+1=f[xl+F(xl,Wl)]
(1)
式中:xl——第l个残差单元的输入;
xl+1——第l个残差单元的输出;
F(xl,{Wl})——待学习的残差映射;
W——卷积核;
f——激活函数,采用ReLU函数,公式如式(2)所示。
ReLU(x)=max(0,x)
(2)
可以看到残差网络区别于普通直连的卷积神经网络,传统的卷积神经网络在传递信息时,可能会存在信息不完整、耗时等问题。残差网络通过直接学习残差,使学习成熟草莓目标更清晰同时降低了学习难度,保护草莓信息的完整性,提高了网络的学习能力。
一般卷积层的输出只针对各个通道做卷积,不会考虑各通道的依赖性。本文让网络增强成熟草莓信息量大的特征便于后面的层使用,因此引入压缩和激励模块(Squeeze and Excitation blocks,SE)来筛选成熟草莓图像中有用的特征。SE就是给不同通道赋不同的权重,其模块如图3所示。
图3 压缩和激励模块
具体操作是对U做压缩得到一维向量,长度为C,然后做激励学习参数W来建立通道相关性,得到的结果作为U中C个通道的权重做处理。其目的是增强成熟草莓重要特征,抑制其次要特征。
压缩和激励模块是一个计算单元,可以在Ftr的转换上建立从输入X∈RH′×W′×C′到特征映射U∈RH×W×C。把Ftr作为一个卷积算子,用V=[v1,v2,…,vc]表示滤波核的学习集,其中vc是第C个滤波器的参数,可以将输出写成U=[u1,u2,…,uc],公式如式(3)所示。
(3)
2.2.1 压缩:全局信息嵌入
为解决卷积核只在局部空间内操作,U不易获取大量信息来提取通道之间的关系。顺着空间维度来进行特征压缩,将全局空间信息压缩到通道描述符中,运用全局平均池生成通道统计信息。统计z∈RC的第c个元素如式(4)所示。
(4)
2.2.2 激励:自适应重新校正
激励操作需要完全获取通道相关性来利用压缩操作中聚集的信息,通常选择一个简单的门控机制和Sigmoid激活函数,激励操作公式如式(5)所示。
s=Fex(z,W)=σ[W2δ(W1z)]
(5)
式中:δ——ReLU函数;
σ——Sigmoid函数。
(6)
通过把SE块进行简单的堆叠,可以构建SE网络。但把SE块放到网络体系结构中的不同位置来替换原始块,对特征信息的表示效果不同。由SE模块执行的特征重新校正的好处可以通过网络累积,本质上有助于多视角增强成熟草莓的特征辨别力,使网络更有效。
新CNN体系结构的设计和开发较为复杂,通常需要选择大量新的超参数和层配置。本文把现有的卷积网络架构中的组件替换为SE对等组件,从而使成熟草莓图像识别性能提高明显。SE块是轻量级的计算,模型的复杂性和计算负担增加不明显。
本文提出一种用于成熟草莓识别的识别网络。网络中包含二维卷积层2个,深度可分离卷积层15个,5个快捷连接模块,每个快捷连接模块由3个深度可分离的卷积层组成,每个快捷连接模块后面都嵌入一个SE模块,动态重新校正成熟草莓的有用特征,因此增强网络的泛化功能。在最后一个卷积层之后,引入空间金字塔池层以消除对网络固定大小的限制。提供完整的连接层,可以避免在一开始就裁剪网络。不仅可以输入任何大小的信息,同时提高准确性并减少整体训练时间。完全连接层的最后一层使用Softmax作为激活功能,可以用来处理多分类任务。假设有s个类别的多分类问题,训练样本的数量为n,样本的输入为w维向量,训练集表示如式(7)所示。
T={(x(1),y(1)),(x(2),y(2)),…,(x(n),y(n))}
(7)
其中y(i)∈{1,2,…,s}是样本的标签,x(i)∈R(w+1)是输入特征向量。任务目标误差Softmax代价函数如式(8)所示。
(8)
其中θ1,θ2,…,θw为模型参数,1{·}是逻辑函数,Softmax回归中x样本中类别为j的概率如式(9)所示。
(9)
目前没有最优算法来最小化J(θ),试验中为防止过拟合问题,对损失函数添加权重衰减项D,定义如下。
(10)
式中λ为权重衰减参数,试验设置λ=10-5,添加权重衰减项D的损失函数称为交叉熵损失函数,如式(11)所示。
(11)
仿真结果表明,在训练过程中交叉熵损失函数自动调整困难分类样本,能够解决成熟草莓训练数据的不平衡,而且可以提高最终的分类精度。
为提高深度卷积网络的训练效果,减少网络训练时间,针对传统的随机梯度下降更新权重过程中,学习率固定不变,试验采用自适应梯度下降加权衰减(Adam)优化器来提高网络的泛化性能。Adam采取对梯度的一阶矩和二阶矩进行估计来动态地适应每个权重的学习速率,其一阶矩估计mt和二阶矩估计vt定义如下。
mt=β1mt-1+(1-β1)gt
(12)
vt=β2vt-1+(1-β2)gt2
(13)
式中:gt——梯度;
β1,β2——一阶矩及二阶矩估计指数衰减率,试验取值分别为0.9和0.999;
t——迭代次数。
由于Adam优化器存储了一个历史梯度进行更新,学习速率的动态调整使草莓图像训练更易收敛,更能训练出适合成熟草莓图像识别的改进残差网络模型。
试验平台机器配置处理器Intel i7-8700,显卡NVIDIA GeForce GTX 1070Ti,Ubuntu 16.04操作系统,TensorFlow深度学习框架。
本文设计的网络由5个卷积层、6个池化层和3个完全连接层组成,将第二卷积层、第四卷积层和第五卷积层选择的特征映射分别合并,通过完全连接层进行特征融合,由Softmax对单元特征进行分类和识别。卷积层学习率设置为0.001,全连接层学习率设置为0.01,全连接层丢弃率设置为0.5,迭代次数设置为200。
本文使用准确率(Accuracy)、灵敏度(P)、召回率(Recall)、精度均值(mAP)作为评估标准。其计算公式如式(14)~式(17)所示。
(14)
(15)
(16)
(17)
式中:TP——正确划分为正例的个数;
FP——错误划分为正例的个数;
TN——正确划分为负例的个数;
FN——错误划分为负例的个数。
灵敏度表示识别为正例的样本中,实际上属于正例的样本所占的比例。召回率表示所有正例中被划分正确的比例,其衡量分类器对正例的识别能力。
分类结果混淆矩阵如表1所示。
表1 分类结果混淆矩阵
试验设置草莓图像数据集中训练集和测试集的占比为4∶1,把测试数据集分为五类,其特征如表2所示。
表2 不同测试子集的特征
为验证所提出的成熟草莓识别检测算法的有效性,和当前最佳算法DenseNet网络[15]、SSD网络[16]、ResNet[17]网络进行比较。表3和表4分别显示了在训练集和测试集下的精度均值(mAP)、召回率和单张图片检测耗时的比较。
从表3和表4可以看出,本文算法不论是在训练集还是在测试集上,在单张图片检测耗时较短的情况下,精度均值和召回率都提高不少,优于DenseNet网络、SSD网络、ResNet网络。其中训练集单张图片检测耗时和测试集单张图片检测耗时分别为0.003 2 s和0.003 8 s,训练集mAP和测试集mAP分别为89.78%和83.17%,对比ResNet网络,训练集mAP和测试集mAP分别提高3.85%和3.6%。
表3 不同方法下精度均值和召回率的比较
表4 不同方法下单张图片检测耗时的比较
表5显示了不同数据集下识别准确率的比较。可以看出,在深度学习算法中,本文提出的算法优于DenseNet网络、SSD网络、ResNet网络。由于构建的残差网络将深度可分离卷积网络与本地残差网络结构相结合,引入压缩和激励模块有效地提取成熟草莓图像中的深层特征,然后使用深度网络分类器进行识别。根据试验结果,改进的残差模型可以更好地完成成熟草莓区域的检测和识别,从而达到了较高的识别准确率,在数据集C中的识别准确率最高,达到了92.46%。由于测试数据集A、B、D中干扰较弱,因此也获得了较高的识别准确率。
整个测试数据中数据集E最为复杂,图像中干扰目标较多,特别是红花或红叶,影响网络的检测效果。从表5试验结果可以得出,本文算法对数据E上图像的识别准确率最低,达到了62.38%,但也优于其他深度网络。
表5 不同数据集下识别准确率的比较
表6显示了不同算法在不同数据集下识别灵敏度的比较。可以看出,本文提出的算法优于其他深度网络,在数据集C中识别灵敏度最高,达到94.28%。对成熟草莓图像,特别是简单背景图像具有更高的识别灵敏度和更强的鲁棒性。
表6 不同数据集下识别灵敏度的比较
试验对测试集中的草莓图像进行仿真和测试。图4所示为数据集D下不同算法对成熟草莓的识别结果。
(a) SSD
根据图4中部分成熟草莓被叶子和茎遮挡,存在背景干扰,几乎所有的对比算法都严重地漏检。尤其是SSD在检测小物体目标时效果欠佳,表现较为敏感,存在较多小目标漏检。在使用DenseNet网络进行成熟草莓识别时,该算法发现的目标尽可能多,但无法较好地识别出一些粘着目标。主要原因是算法只是单视角学习成熟草莓图像特征,不能从多个角度的特征信息中学习。尽管ResNet引入残差单元,让网络随深度增加而不退化,同时获得较好的识别性能,能够识别到红色草莓,但几乎所有红色区域都被它识别,同时存在较多的错误检测。
本文算法在残差网络中引入深度可分离卷积,通过嵌入SE模块,能够有效地提取成熟草莓图像中的深层特征,可以成功地将红色反射光与水渍上的红色草莓分离开来,甚至可以准确地识别出被叶子和茎遮挡部分的成熟草莓。试验结果表明,本文使用深度残差网络来识别成熟草莓图像,识别准确率更高、优点更明显,草莓检测网络能够有效地检测各种场景下的草莓,具有一定的抗干扰能力,提高了检测速度。
1) 在草莓图像数据集制作过程中运用了翻转变换、随机旋转变换、改变对比度和亮度等数据增强技术,对数据集进行扩充,构建一个草莓图像数据集。
2) 针对自然状态下存在的成熟草莓灰度变化和背景干扰、信息丢失等问题,结合深度模型,构建具有残差特征的成熟草莓检测模型,提出一种基于深度残差学习的草莓识别方法。
3) 引入深度可分离卷积降低网络参数,设计基于残差网络的卷积网络,从不同角度提取成熟草莓特征。嵌入压缩和激励模块来学习特征权重,并通过添加空间金字塔池、交叉熵损失函数增强网络的鲁棒性。为进一步优化识别结果,采用Adam优化器加速网络模型的收敛,提高模型的泛化能力。试验结果表明,本文提出的草莓识别方法能够有效地定位识别复杂背景下不同大小的成熟草莓,不易受到干扰环境的影响。和当前最佳算法DenseNet网络、SSD网络、ResNet网络相比,该方法具有更高的识别准确率和灵敏度,其中在数据集C中的识别准确率和灵敏度最高,分别达到了92.46%和94.28%。减少了网络计算时间,为农业的智能化发展提供理论基础。