APP下载

基于深度学习水果检测的研究与改进

2020-02-19黄豪杰段先华黄欣辰

计算机工程与应用 2020年3期
关键词:残差卷积水果

黄豪杰,段先华,黄欣辰

江苏科技大学 计算机学院,江苏 镇江212000

1 引言

随着近年来人工智能技术的应用越来越多,计算机科学技术在日常生产活动中的应用越来越多,如无人车技术、智能监控系统、人脸识别[1]等应用领域,这些利用计算机图像处理技术对目标进行检测和监控越来越流行。目标检测是计算机视觉的基本问题,但在自然环境中,水果的目标检测存在以下挑战:水果被枝叶遮挡或分割,果实之间相互重叠,光照不均匀带来的一系列影响。近年来,许多研究已经提出了许多水果检测和识别算法来解决上述问题。

Wshcs等[2]利用彩色相机来获取果树上绿色苹果的彩色图像,然后利用热图像来分析特征组合实现检测,但是利用热图像的方法只能在阳光直射的情况下进行;Si等[3]通过利用基于面积特征和极线的匹配算法实现了苹果目标的定位,但是果实的震荡具有随机性和复杂性,将会导致识别与定位的准确性降低;Ji等人[4]采用支持向量机对红苹果进行识别,识别率高达97%,但为了得到更好的模型,需要使用监督学习提取有效样本;Rocha等[5]完善了IBM团队开发的果蔬识别系统,采用监督学习方法,利用水果的颜色特征和分类器结合技术,识别率很高但是只对15类水果取样。水果在自然环境下检测的难度不仅是水果图像获得困难,分析提取水果图像中组合特征也有固定性,因此上述传统水果检测方法不被广泛使用,实用价值不大[6]。

随着云时代的到来,卷积神经网络(Convolutional Neural Network,CNN)[7]架构出现了分类和识别,对图像识别精度做出了标志性贡献。Liu等人[8]提出了一种基于CNN的SSD(Single Shot Detector)方法,用于深度学习对象的识别和检测,在保证准确性的同时实时性也得到了加强。本文以苹果、橘子、荔枝三种水果作为研究对象,对自然环境下水果识别检测进行研究,将SSD训练使用的VGG16网络替换为深度残差网络ResNet-101[9],并利用FPN[10]将高层特征通过上采样与低层特征进行自顶向下的连接,且每一层都会独立预测,以此来提升自然环境下水果识别的精度和鲁棒性。

2 深度学习SSD经典模型

SSD是一个基于前向传播CNN网络,从Conv4_3开始利用多级特征图的组合作为分类和回归的依据,以此达到多尺度特征预测的效果。SSD模型最开始主网络是由VGG16[11]中部分卷积层组成并将最后两层的Conv6和Conv7换成全连接层,用于图像分类。随后添加4个额外卷积层,卷积层大小递减,完成多尺度下预测。SSD300框架如图1所示,输入图像为300×300。

SSD中的默认框和Faster-rcnn锚(anchors)机制[12]类似,对不同尺度的特征图使用不同大小和横纵比的默认框。假设本文以m个特征图做预算,那么默认框的大小计算公式:

式中,smin=0.2;smax=0.95,表示最底层的大小为0.2,最高层的大小为0.95。

同时,SSD采用默认框机制,对于同一特征层上的特征单元采取几个不同的纵横比,增强模型对不同物体形状的鲁棒性,记为ar={1,2,3,1/2,1/3},对于纵横比等于1这一类,它的。对于Conv4_3,Conv10_2,Conv11_2不使用3,1/3的纵横比,则:

图1 SSD模型结构

图2 改进的SSD模型结构设计

其中(cx,cy)为第k层特征层上某一个默认框的中心坐标;(wfeature,hfeature)为特征层上的宽和高;(wimg,himg)为原始图像的宽和高。(xmin,xmax),(ymin,ymax)分别是该默认框对应到原图上的目标框的左上角和右下角坐标。每个默认框需要预测c个类别的得分(score)和4个物体位置相对于边界框的偏移量(offset),设一个特征图的大小是m×n,则每个默认框表示类别的概率的置信度有c×k×m×n个输出,;每个默认框回归后坐标有4×k×m×n个输出,那么这个特征图一共有(c+4)×k×m×n个输出。

3 改进的SSD模型

3.1 改进模型结构设计

经典的SSD模型无法完全提取图像目标的特征。当特征层进行融合时,VGG16网络结构的Conv4_3卷积层用于进行特征融合以预测小目标。以这种方式,会出现包含在低级卷积特征层中的语义信息不够的问题。随着网络深度的加深,提取的特征不足,精度降低。为了克服SSD模型本身的缺陷,本文将基础网络模型替换为深度残差网络Resnet101并利用FPN将高层特征通过上采样与低层网络提取的特征进行融合,改进后检测模型结构如图2所示。

3.2 基于深度残差的网络结构

为减少网络深度增加带来的梯度弥散或梯度爆炸以及网络层数增加引起的训练集精确率下降等影响,本文将经典SSD模型中的VGG基础训练网络替换为深度残差网络ResNet101,解决随着网络加深准确性下降的问题。

假定某段神经网络的输入的是X,期望输出是H(X),直接将输入X传到输出作为初始结果,此时需要学习的目标是F(X)=H(X)-X。如图3所示,是深度残差网络的一个残差学习单元,相当于将学习目标改变,不再是学习一个完整输出H(X),只是输入和输出的差别H()X-X,即残差。简言之就是增加一个恒等映射,把原始所需要学习的H(X)转化成F(X)+X。深度残差网络的核心思想是将一个复杂多元的问题拆分成多个尺度直接的残差问题,对网络模型的训练起到很好的优化加速效果,即使网络不断加深,准确率也不会下降。

图3 残差学习单元

残差单元通过恒等映射的引入在输入和输出之间建立了一条直联通道,从而使得有参层集中学习输入和输出之间的残差。用F( )X,Wi来表示残差映射,当输入和输出维道相同时,那么输出即为Y=F( )

X,Wi+X。当输入维度与输出维度不相同时,需要添加一个线性投影Ws来匹配维度,如下式所示:

3.3 特征金字塔网络

在引入ResNet101网络之后,为避免经典SSD模型中低层网络语义信息不够而导致提取的特征使用不充分,对小物体检测效果较差这一问题,本文利用特征金字塔网络(FPN)来搭建检测模型。FPN是将高层特征通过上采样与低层网络提取的特征进行融合,网络的每个层都是独立测试的。图4展示了传统SSD模型和改进的SSD模型的利用特征形式。

图4 特征形式比较图

本文使用的主要网络是Resnet101,将特征金字塔分成三个部分,一个自底向上的路径、一个自顶向下的路径和中间连接的部分,如图5所示。

图5 特征金字塔路径结构图

自底向上的路径:自底向上的路径是卷积网络的前馈计算,该算法计算由不同比例的特征映射组成的特征层级。具体到这个改进网络,本文使用conv3_x这个原始resnet101中的卷积层和后面扩展的三层SSD卷积层,将这些特征输出表示为{C3,C6,C7,C8}。

自顶向下的路径:自顶向下的路径是将高层网络上的更强的语义特征通过上采样的方式来强化低层网络上高分辨率的特征图。接着通过横向连接自底向上的路径,增强高层特征。每个横向连接自底向上路径和自顶向下路径的特征图具有相同的尺寸。将低分辨率的特征图做2倍上采样(为了简单起见,使用最近邻上采样)。然后通过按元素相加,将上采样映射与相应的自底而上映射合并。这个过程是迭代的,直到生成最终的分辨率图。

为了开始迭代,只需在C8上附加一个1×1卷积层来生成低分辨率图P8。最后,为了减少上采样引起的混叠效应,需要在每个合并的图上额外添加一个3×3卷积来生成最终的特征映射。这个最终的特征映射集称为{P3,P6,P7,P8},分别对应于{C3,C6,C7,C8},它们具有相同的尺寸。

4 模型训练和结果分析

4.1 实验工具

本文实验是在深度学习架Caffe[13]框架下进行的,因此首先是对电脑的运行环境完成配置。实验所需要的环境以及相对应的软硬件设备:采用Ubuntu 16.04、Caffe、CPU为Intel Core i9-6700、GPU使用的是NVIDIA GeForce GTX 1080、显存12 GB、内存128 GB、CUDA 8.0版本以及对应的CUDNN 5.1版本的深度神经网络加速库。

4.2 基于实验数据与预处理

实验所需要的水果图片是由部分网上下载的图片和在果园实地拍摄的图片,为减小深度学习训练运行时庞大计算量,先对实验图片进行预处理缩放后,在简单缩放中,本文的目的是通过对数据的每一个维度的值进行重新调节(这些维度可能是相互独立的),使得最终的数据向量落在[0,1]或[-1,1]的区间内,然后按照PASCAL VOC[14]数据集格式制作,分成互斥的训练集、测试集和验证集三部分,如表1所示。数据集制作过程中使用labelImg来标注图片,每张图片标注完成后会生成.xml文件20,生成的文件中包含标注框中四个角的真实坐标位置,可以表示为感兴趣区域四元组参数(xmin,ymin,xmax,ymax),部分数据仿真图如图6所示。

表1 水果数据集

图6 数据集制作图

在评估模型的准确性时,根据输出框和标签框的符合率确定匹配分数,为网络模型提供预定义的输出。一般来说,一个比较成功的神经网络需要大量的参数。神经网络的许多参数都是数以百万计的,这些参数可以正确工作,需要大量的数据进行训练。在实际情况中,数据并没有实际想象的那么多。因此通过使用额外的合成对数据进行修改,并训练所需的神经网络。常用的数据增强方法包括裁剪、平移、颜色抖动和水平翻转等。本文因数据采集较少,采用水平翻转的数据增强方法来验证改进SSD模型的泛化能力。

本文采用的是端到端的检测模型,用于自然环境下的水果识别检测中,因为待训练的数据集较小并且与ImageNet[15]数据集相似,利用迁徙学习[16]来训练该检测模型,这样大大节省了新模型损失值收敛时间。为了更加直观显示深度卷积神经网络的运作,本文将特征提取层做可视化操作,图7所示是根据经典SSD512模型得到的卷积Conv4_3层。Conv4_3层是该模型特征提取的第一层,可以看出检测水果的外貌特征,经过多层的卷积语义表达之后可以得到水果的目标区域。

4.2.1 实验模型设计

实验中,经典SSD512模型检测效果并不理想,和预期的识别精度相差较多,出现漏框和误框等情况。精度不高,泛化性不强是经典SSD模型出现的问题针对以上问题,本文按照之前的改进方法,将VGG输入模型替换为ResNet-101,并按照特征金字塔网络搭建网络,并对数据增强后进行精度对比。

4.2.2 实验模型训练参数设置

图7 SSD512检测实例图

为了节省训练时间及加快收敛速度,本文将与预训练好的SSD网络的底层结构权值参数共享。使用随机梯度下降算法,学习动量设为0.9,初始学习率设为10-3,权重衰减为5×10-4,批处理尺寸为32。前5×104次迭代学习率不变,后5×104次迭代学习率设为10-4。将训练得到的权重作为本文初始权重。

在训练过程中,正样本的数量远远小于负样本数量,导致训练出的分类器效果不好。因此使用困难样本挖掘(Hardnegative mining)[17],将其中得分较高的假阳(false positive)负样本挖掘出,放入网络再次训练,提高分类器判别假阳性的能力。

4.2.3 评价指标

目标检测模型中常用的度量指标mAP[18](mean Average Precision),是用来评估模型检测精度。计算mAP之前,首先要计算数据集里每个类别的平均精度,即

式中,T为数据集中含有所需检测类别的所有图像数目,k表示数据集中目标对象的总数量。若第n个目标是所检测目标对象,则Mn为1,反之则Mn为0。Tn表示为前n张图像中所含检测目标对象的个数。

得到所有类别的平均精度后,求它们的平均值,即mAP。mAP值越大,代表模型检测精度越高,相反则越低。

4.3 结果分析

为了证明特征金字塔的效果,本文将以下三种网络进行比较,分别是删除自上而下路径的网络(低层特征)、删除了横向连接的网络(上采样特征)以及采用生成的最后一层做预测,本文以SSD512座位区基础网络模型,mAP(平均精度)作为评判标准,基于本文的水果数据集作为实验对象,在C8上附加一个1×1卷积层来生成低分辨率图P8的网络即删除自上而下连接采用最后一层与预测;每个合并的图上额外添加一个3×3卷积来生成最终的特征映射即完整路径下的FPN网络,实验结果如表2所示。

表2 FPN网络实验对比

FPN是将高层特征通过上采样与低层网络提取的特征进行融合,上采样特征、低层特征、特征融合部分仿真结果如图8所示。

图8 特征预测对比

表3和图9为本文提出不同网络SSD模型检测得到的对比结果。从表中得到的数据可以看出,经典SSD模型的检测精度不如改进后SSD模型。从实验得到的结果图来看,经典SSD模型在对小物体进行检测时容易出现漏框,误框等情况,而改进后的模型相较于经典SSD模型有较为显著的提升。

表3 不同SSD网络模型检测对比%

同时本文也继续对改进模型的收敛性做出验证,在数据集上进行损失分析。损失(Loss)函数随迭代次(Steps)数的变化曲线如图10所示。通过比较经典SSD和改进SSD的损失曲线图可以看出,虽然改进SSD在起始阶段损失值略微大于SSD,但是随着迭代次数的增加其模型迅速收敛,并随着迭代的进行而稳步降低直到趋于稳定。

图9 改进前后SSD512模型检测对比

图10 损失曲线图

经典SSD模型对小目标不能取得较好检测结果的原因SSD是一种基于全卷积的网络的检测器,使用不同网络层来提取不同大小物体的特征。这中间有个矛盾,低层网络的特征图大,但语义不够;高层网络的语义够了,但经过模型中较多降维的池化层,使得获得的特征图变小。要检测小物体,需要在网络模型中充分使用较低层网络,获得更充分的特征来实现在特征图上完成更加精密的采样,同时也需要高层网络的语义信息来完成对检测目标的特征描述。而改进后的模型将基础网络模型替换为深度残差网络ResNet-101并利用FPN将高层特征通过上采样与低层网络提取的特征进行融合,充分利用低层网络的特征提取和高层网络的语义信息,通过改进来提高小目标检测精度。

深度学习算法需要大量的训练数据,由于受特定背景环境和实验设备带来的限制,本文并没有收集不到太多的数据源。为了增加实验的泛化性和鲁棒性,沿着水平方向翻转图像,扩大数据集。数据集经数据增强[19]后,将原有的图像数据沿水平方向翻转,扩展了数据集数量,图11是在水果训练集和测试集上训练得到的损失曲线图,通过实验观察,测试集从起始阶段就具有较低的损失,同时随着迭代的进行,虽然测试集上的损失值始终略低于训练集。但是测试集和训练集的损失曲线具有相同的趋势,且最终稳定在一定区域。可见改进SSD模型在保持了检测精度和收敛性能的同时具有较高的鲁棒性。

图11 训练/测试损失曲线图

该操作后的检测结果如表4中所示。由表中数据所示,经数据增强后的数据集,对网络的检测精度都有提升。改进后SSD300模型检测精度提高了0.24%,SSD512模型检测精度提高了0.21%。数据增强后的改进模型平均检测精度可达至83.29%和84.45%,有效减少了网络过拟合的问题,通过数据增强这一技巧获得的网络模型泛化能力更强,能更好实现相关应用场景下的适用。

表4 数据增强后不同SSD模型检测对比%

5 结束语

提出了一种基于改进SSD深度学习模型水果检测的研究。本文以苹果、橙子、荔枝作为研究对象,自然环境为下研究背景。首先将经典SSD模型中的基础训练网络VGG替换成能随着网络加深精度不下降的ResNet-101网络,接着在改进底层语义信息的方法利用特征金字塔网络的方式搭建网络模型,进而将在大数据集上(ImageNet数据集)训练好的权重参数赋值给改进的模型,完成对目标水果检测模型的训练。最后通过数据增强的技巧,将检测精度提再次提升。实验数据表明:改进的SSD300和SSD512两个模型在精度上比经典SSD模型提高了2.47%和3.41%,验证了本文提出的改进方法的有效性。接下去要对已改善的模型进行更大数据集的训练与时效性的实验,希望对水果的自动采摘化进行进一步的研究。

猜你喜欢

残差卷积水果
基于双向GRU与残差拟合的车辆跟驰建模
基于3D-Winograd的快速卷积算法设计及FPGA实现
基于残差学习的自适应无人机目标跟踪算法
卷积神经网络的分析与设计
基于递归残差网络的图像超分辨率重建
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
四月里该吃什么水果
综合电离层残差和超宽巷探测和修复北斗周跳
水果篇之Cherry