基于改进FCOS网络的自然环境下苹果检测
2021-09-15李南南何梦菲宋怀波
龙 燕,李南南,高 研,何梦菲,宋怀波
(1. 西北农林科技大学机械与电子工程学院,杨凌 712100;2. 农业农村部农业物联网重点实验室,杨凌 712100;3. 陕西省农业信息感知与智能服务重点实验室,杨凌 712100)
0 引 言
中国是世界上最大的苹果生产国,苹果产业在中国农业中占有重要地位[1]。传统的采摘作业效率低、成本高,同时面临着劳动力短缺的问题,因此开发苹果采摘机器人具有重要的现实意义和广阔的应用前景[2]。视觉系统是苹果采摘机器人的重要组成部分,其主要任务是利用果实颜色、纹理、形状等特征将果实目标与枝叶、天空等背景区域分开,实现果实的识别。然后利用深度传感器等获取深度信息,实现果实的准确定位[3-5],为末端执行器提供数据来源和决策依据。其中,果实的识别是首要任务也是研究难点。在自然环境下,普遍存在背景复杂、光照多变、枝叶遮挡、重叠严重等因素,大大增加了果实目标识别难度。如何在复杂环境中提高作业可靠性,保持较高的检测精度,对实现果实产量估计及机械化采收起着决定作用[6]。因此,本研究主要利用深度学习网络实现自然环境下苹果目标的检测,为后续的果实定位与机械化采摘提供参考。
近年来,深度学习以其局部感知和权值共享的特点,在目标检测领域得到飞速发展。与传统机器学习[7-8]相比,基于卷积神经网络的深度学习算法,可以自动地从图像中提取特征,获得目标的类别和位置等信息,学习能力强、精度高、鲁棒性好。基于深度学习的目标检测算法主要分为两种类型,一种是以卷积神经网络的特征区域(Region with Convolutional Neural Networks feature,
RCNN)[9]、Fast-RCNN[10]、Faster-RCNN[11]为代表的双阶段检测(two-stage detection),核心思想是候选框区域产生一系列稀疏的候选框,然后进行回归。Sa等[12]提出了基于Faster-RCNN的7种水果检测方法,建立了一个准确、快速、可靠的水果检测系统。Yu等[13]提出基于Mask-RCNN网络的草莓检测模型,在重叠和不同光照下,有很好的检测性能。Jia等[14]在掩模区域卷积神经网络(Mask R-CNN)检测模型基础上,通过残差网络(ResNet)与密接卷积网络(DenseNet)相结合,实现了苹果的检测。王丹丹等[15]针对幼小绿苹果,以ResNet-44全卷积网络为基础网络,在R-FCN深度卷积神经网络的基础上进行改进,实现了疏果前苹果目标的识别与定位。李林升等[16]以自然光源下的苹果图像为研究对象,设置9个候选框,同时增加1个滑动窗口,改进Faster R-CNN目标检测框架,模型精度高,但是候选框的产生需要大量的计算资源,检测时间较长。另一种是以单个多框检测器(Single Shot MultiBox Detector,SSD)[17]、YOLO[18-19]为代表的单阶段检测(one-stage detection),直接回归出目标框的位置,将目标的定位问题转换为回归问题。Tian等[20]用DenseNet方法处理YOLOv3网络中分辨率较低的特征层,YOLOv3-dense模型能有效地检测重叠和遮挡条件下的苹果目标。Kuznetsova等[21]将特殊的前处理和后处理加入YOLOv3算法,用在苹果果实收获机器人上。彭红星等[22]用迁移学习方法和随机梯度下降算法对SSD模型进行优化,设计了一种四类水果通用检测模型;赵德安等[23]提出一种基于YOLO深度卷积神经网络的复杂背景下机器人采摘苹果定位,构建13层类似用于大规模图像识别的深度卷积网络(Very Deep Convolutional Networks for Large-Scale Image Recognition,VGG)的网络结构,实现了在复杂环境下果实的检测。武星等[24]提出了一种基于轻量化YOLO卷积神经网络的苹果目标检测方法,采用深度可分离卷积替换普通卷积,设计了一种同构残差块串联的特征提取网络结构,提出了基于随机梯度下降(Stochastic Gradient gescent,SGD)和自适应矩估计(Adaptive moment estimation,Adam)的多阶段学习优化技术。
以上两种网络的目标识别准确度都依赖于预定义锚框(anchor boxes)参数,检测性能对锚框尺寸、宽高比和数量等比较敏感,模型计算复杂、泛化能力差。Tian等[25]提出了一种单阶段无锚点(anchor)目标检测(Fully Convolutional One-Stage object detection,FCOS)网络,基于语义分割上的全卷积网络(Fully Convolutional Networks for semantic segmentation,FCN)[26],实现了逐像素无锚框的目标检测,避免了锚框尺度、长宽比、超参数的优化设计,极大地减少了训练所需的内存和时间。
虽然FCOS网络引入逐像素点回归策略、特征金字塔网络(Feature Pyramid Networks,FPN)多级预测和中心点(center-ness)预测等方法提升小目标识别效果,但FCOS网络在对自然环境下苹果目标检测时,对小目标果实、部分遮挡果实、重叠果实和光照不均果实的漏检测率仍然很高。
因此本文提出了一种改进FCOS网络设计方法,以适用于自然环境下苹果目标检测。首先骨干网络采用darknet19以减少计算量。在损失函数中加入GIoU,增强多果实定位精度,并引入焦点损失(Focal loss)损失,解决正负难易样本不平衡的问题。同时,在网络训练时加入多尺度训练,提升对小目标的识别效果。最后利用改进的FCOS网络对自然环境下不同密集程度、不同光照、不同遮挡的苹果目标进行检测,验证算法的有效性。本文研究提出了一种适用于自然环境下苹果目标检测的方法,为实现苹果生长监测、机械化采摘等提供依据,同时也为其果实的识别提供参考。
1 改进FCOS网络设计
1.1 改进FCOS网络结构
FCOS主要采用ResNet50和ResNet101作为骨干网络,对网络推断速度进行优化时,骨干网络替换为层数更少更轻便的darknet19,本文利用darknet19为骨干网络来搭建苹果检测模型,输入图片首先经过C1,C2,C3,C4,C5,5个卷积模块,每经过一个卷积模块特征图变为原来的一半,从darknet19网络中提取C3,C4,C5的特征图,C5经过1×1卷积上采样得到P5,C4经过1×1卷积上采样与P5相加融合得到P4,C3经过1×1卷积上采样与P4相加融合得到P3层,P6、P7是P5通过卷积下采样得到,最后得到P3、P4、P5、P6、P7特征图,分别对应原图大小的1/8、1/16、1/32、1/64、1/128。5个特征图分别经过5个3×3卷积后得到分类、回归、中心度分支。分类支路输出的通道数为2,分别表示果实和背景。回归的目标是(l,t,r,b),即中心点到预测框的左、上、右和下的距离,不同的特征层需要回归不同的尺寸范围,并利用max(l,t,r,b)的范围进行划分。在回归分支中加入中心度来滤除远离目标中心的大量低质量检测框,网络结构如图1所示。
1.2 损失函数
网络的损失函数L由目标类别损失Lcls,目标位置回归损失Lreg和目标中心度损失Lcenter-ness组成,即
1.2.1 Focal loss损失
在自然环境中,果实在图像中的像素占比较小,使模型过于关注训练简单的样本,忽视难分类的样本,所以需要用一个合适的函数去度量难分类和易分类样本对总损失的贡献,Focal loss[27]函数在不影响原检测速度下,使模型在训练时更加关注难分类的样本,从而更有效地优化网络。Focal loss函数的数学公式如下
式中pt表示苹果类别的概率,γ是调制系数。γ越大,简单样本所占比重降低的速率就越快。γ通过减少训练时简单样本所占的权重,使得模型更专注于难分类的样本。αt是权重系数,αt取值为[0,1],用来调整正负样本比例不平衡问题。当γ=1,αt=0时,Focal loss损失函数即为交叉熵损失函数。
pt越大,(1-pt)γ越小,γ越大,调节简单样本降低的速率就越快,调制系数γ通过减少训练时简单样本所占的权重,从而使得模型更专注于难分类的样本。
1.2.2 回归损失
交并比(Intersection over Union,IoU)是目标检测任务中最常用的指标,在基于锚框的算法中,IoU不仅可以用来确定正负样本,而且可以用来反映预测检测框与真实检测框的相似性,IoU的计算公式为
式中A,B分别表示预测框与真实框的面积。IoU取值为
[0,1]。
IoU作为损失函数存在两个问题:1)若两个目标框无重叠,则IoU为0,损失为0,网络无法优化。2)IoU无法正确区分两个目标之间的不同距离。如图2所示,图a和图b的IoU都为0,但是图2b中预测框与真实框的距离更近,检测效果更好。
因此本文利用GIoU[28]边框回归损失函数,以进一步反映预测框和检测框的重合程度,提高检测准确度。GIoU的计算公式为
式中C表示包含A和B的最小矩形面积,GIoU取值范围为[-1,1],预测框与真实框重合时为1,不重合且距离无限远时取值为-1。类似于IoU,GIoU作为距离度量可以保留度量的所有属性,GIoU不仅关注重叠区域,而且GIoU的值可以更好地反映预测框和真实框之间如何发生重叠。
以GIoU作为边框回归损失函数,计算公式如下:
1.2.2 中心度损失
中心度损失使用交叉熵损失函数抑制距离目标中心较远位置产生的很多低质量预测框,快速过滤负样本,降低非极大值抑制(Non-Maximum Suppression,NMS)负担,提高召回率和检测性能。中心损失采用二值交叉损失函数,中心度损失如公式6所示。
式中l*,r*,t*,b*分别为当前像素点到目标框的边界的左、右、上、下距离。
因此,损失函数L为
2 试验数据
2.1 数据采集
图像数据采集地点位于陕西省咸阳市乾县宏霖农业苹果园,采集时间为2020年8月5日(阴天)上午8:00-11:30,8月10日下午(晴天)2:30-5:30,苹果品种为华硕。采集设备为华为P30,样本采集过程中,模拟机器人采收流程,摄像头在果树单边固定位置,从树冠外围、上部、下部距离果实50 cm左右的距离进行拍摄,采集树叶遮档,顺光、逆光、侧光等情况下的果实,以保证样本的多样性。共采集964幅图像,包含未遮挡果实209幅,枝叶遮挡350幅,果实重叠405幅,其中侧光784幅,顺光86幅,逆光96幅。使用LabelImg对图像进行标注,按照PASCAL VOC数据集格式保存图像的类别和(Xmin,Xmax,Ymin,Ymax),(Xmin,Xmin)为目标果实的左上角坐标,(Ymax,Ymax)为目标果实的右下角坐标,最后生成XML格式的标注文件,原图大小3 456×4 608像素,为了方便模型的训练,将图片压缩至640×800像素。
2.2 数据增强
数据量过少容易导致深度学习模型过拟合,利用数据增强来扩大训练集样本,以提高模型的泛化能力和鲁棒性。使用亮度、对比度、色调、饱和度调整、水平镜像、色彩扰动以及加入噪声等方式进行数据增强,同时对图像的标注文件进行相应的变换。最后共获得10 604幅图像,按照8∶2的比例划分训练集8 484幅,测试集2 120幅。
3 模型的训练与试验
3.1 模型训练
试验硬件平台为深度学习工作站,其配置为AMDW-2245@3.90GHz×12,内存64 GB和显存11 GB的GeForce RTX 2080 Ti。操作系统为Win10,安装CUDA和CUDNN,python版本为3.7,pytorch版本为1.5,torchvision版本为0.5。
模型训练时,采用4个步长样本作为一批,每迭代一批更新一次损失,迭代2 410次为一期,每期保存一次训练权重,共训练24期。本试验模型训练使用迁移学习,利用Imgnet上darknet19的预训练权重进行微调。
网络多尺度训练为输入的图像大小在(480,800)、(512,800)、(544,800)、(576,800)、(608,800)、(640,800)内随机选择。不同尺寸大小的图片输入网络当中,使网络能够适应不同大小果实,加强网络的性能。
权值更新用组标准化(Group Normalization,GN)进行正则化,以减少小批量样本训练带来的精度损失,在模型训练初期,为了减缓模型在初始阶段对小批量样本的提前过拟合现象并保持模型深层的稳定性,设置了一个热身阶段。模型学习率在第1期时从0线性增加到0.002,采用SGD优化器对网络进行优化,动量参数为0.9,从第2期到第17期学习率保持为0.002,从第18期到第21期学习率为0.000 2,从第22期到24期学习率为0.000 02,损失函数中αt值为0.75,γ值为2。
本研究在测试集上采取准确率(Precision,P)、检测精度均值(mean Average Precision,mAP)对检测性能进行评价。
式中TP表示预测的正实际为正样本的数量,FP表示预测的正实际为负样本的数量,FN表示预测的负实际为正样本的数量,通过P和召回率(Recall,R)可以绘制PR曲线,AP就是PR曲线下的面积,mAP为苹果和背景的AP的平均值。
从训练日志得到损失值数据,绘制损失值,如图3所示。
从图3可以看出,前1 000次损失值迅速下降,这得益于迁移学习,darknet网络使用了Imgnet上的预训练权重。迭代至35 000次后损失曲线渐渐稳定,只有稍许振荡。
3.2 试验结果与分析
3.2.1 不同密集程度果实的对比试验
当果实尺寸大,数量少,目标轮廓清晰时,训练时可获得更多有用信息,检测效果好。当果实尺寸小,数量多时,有效信息较小,识别难度大,漏检概率大。因此本研究对双果、多果和密集果实进行检测效果对比试验。检测的结果如图4所示。双果时,FCOS和改进FCOS网络均能准确识别苹果目标,但在多果或密集果实场景中,传统FCOS网络出现漏检情况,如图中圆圈标记部分。因此改进FCOS网络在多果和密集果实条件下具有更好的检测效果。而改进FCOS网络几乎检测到所有果实目标。原因是改进FCOS网络引入了多尺度训练,输入不同尺度图像训练能够使模型适应尺寸较小的果实,因而在多果和密集果实条件下具有更好的检测效果。
3.2.2 重叠和枝叶遮挡的对比试验
在自然环境下,会产生果实间相互遮挡和果实被枝叶和枝干遮挡的情况。失去果实部分的轮廓信息,增加了果实检测的难度。因此本研究对果实间相互重叠和不同程度枝干遮挡情况进行试验。果实间遮挡检测结果如图5所示,可以看到,当遮挡较严重时,传统FCOS网络出现漏检,如图中圆圈标记的果实未检测出。当果实受枝叶遮挡严重时,改进FCOS网络的目标框大小更接近于果实真实轮廓的大小。改进FCOS网络则不受影响,检测到所有果实目标。原因是改进FCOS网络引入GIoU loss,GIoU不仅关注重叠区域,还关注其他的非重合区域,能更好反映预测框和真实框重合度,使网络能够关注那些受到果实遮挡和树叶遮挡的极难识别的目标,从而提升受到遮挡果实的检测效果。
3.2.3 不同光照条件下的对比试验
在顺光、逆光和侧光条件下,果实会呈现偏亮或偏暗。顺光时,苹果表面的亮度会有一定的增强,纹理不够清晰。逆光时,图片整体偏暗,对比度低。侧光时,苹果的轮廓比较明显,纹理比较清晰。不同光照条件下的检测效果如图6所示。顺光和逆光条件下,传统FCOS网络均有漏检,而改进FCOS网络可以实现较好的检测效果,具有较好的鲁棒性。改进FCOS引入Focal loss,网络能够关注那些受到果实遮挡和树叶遮挡的极难识别的目标,从而提升受到遮挡果实的检测效果,原因是顺光和逆光条件下的样本数量较少,传统FCOS网络不能准确提取这两种光照条件下的果实目标特征,导致漏检。改进FCOS引入Focal loss,增加对顺光、逆光样本的权重,从而使不同光照条件下的训练样本数量趋于均衡,提升光照不均样本目标的检测能力。
3.2.4 不同网络检测精度对比试验
本研究对不同改进程度的FCOS网络进行试验。仅使用多尺度训练记为FCOS-A,损失函数仅使用Focal loss的网络记为FCOS-B,损失函数仅使用GIoU loss作为边界框损失的记为FCOS-C,同时进行以上所有改进的记为改进FCOS。为了进一步验证网络的有效性,加入Faster-RCNN、SSD、YOLOv4进行对比。在同一个苹果数据集上对以上模型进行训练和测试。测试集mAP、准确率P如表1所示。
表1 不同网络检测精度对比Table 1 Comparison of the detection accuracies of different network
由表1可知,相比与传统FCOS网络,本文改进的FCOS-A、FCOS-B、FCOS-C、改进FCOS检测性能有一定的提升,并且精度高于Faster-RCNN、SSD和YOLOv4,由此说明多尺度训练,使用GIoU loss、Focal loss能够提升网络的性能。
3.2.4 不同网络检测时间对比试验
对基于ResNet50的FCOS网络、改进FCOS、Faster-RCNN、SSD、YOLOV4的检测时间进行试验。检测时间,模型大小如表2所示。
由表2可以看出,以darknet19为骨干网络的改进FCOS的检测时间比FCOS-ResNet50快15.1 ms,较FCOS-ResNet50检测速度提升23.0%。
表2 不同网络检测时间对比Table 2 Comparison of different network of detection time
改进FCOS的检测时间比Faster-RCNN和SSD,分别快452.5 ms和69.5 ms,检测速度分别提升90.0%和57.9%。与目前检测速度较快的YOLOv4相比,只慢了17.2 ms。改进FCOS的模型大小与Faster-RCNN、SSD和YOLOv4相比减少了47.8%,48.8%和56.6%。
4 结 论
1)为提高自然环境苹果果实的识别准确度,本研究在传统FCOS网络基础上提出了改进FCOS网络。该网络使用体积更小的骨干网络darknet19来进行特征提取,损失函数使用GIoU损失替代FCOS网络模型的边框损失,并在分类损失中使用Focal损失,同时采用多尺度训练,极大提升了自然环境下苹果果实的检测准确度。
2)本研究使用10 604张包含枝叶遮挡、果实重叠、多种光照条件等的苹果图像对改进FCOS网络进行训练和测试。试验结果表明,本文提出的网络对自然环境下的苹果果实具有良好的检测能力。在工作站上的检测准确率和平均精度分别为96.0%和96.3%,优于传统FCOS网络、Faster-RCNN、SSD和YOLOv4网络;检测速度为每幅图像50.5 ms,优于传统FCOS网络、Faster-RCNN和SSD,稍慢于目前检测速度较快的YOLOv4网络。