基于改进YOLOv3的田间复杂环境下菠萝拾捡识别研究*
2021-02-22张星高巧明潘栋张伟伟
张星,高巧明,潘栋,张伟伟
(1. 广西科技大学机械与交通工程学院,广西柳州,545616; 2. 广西科技大学广西汽车零部件与整车技术重点实验室,广西柳州,545616; 3. 上海工程技术大学机械与汽车工程学院,上海市,200240)
0 引言
随着智慧农业的提出以及计算机视觉技术的不断发展,研发农业机器人是农业发展趋势,而在丘陵山地地区,研发果实拾捡机器人的首要关键技术是对复杂环境下果实的快速有效识别成为探讨的热点问题。
近年来,对于自然环境下果实的目标识别问题,针对番茄、猕猴桃、苹果、柑橘等果实识别算法已有相关研究。在传统机器视觉领域,多采用GrabCut分割算法[1]、Canny边缘提取[2-3]、模糊聚类分割算法[4]、构建色彩模型分割的SVM分类器[5]、点云图像的深度球截线分割[6],但以上这些方法主要基于果实颜色、形状、纹理特征,在光照不均和复杂环境下算法的鲁棒性和通用性差,其识别率无法满足采摘机器人在多种复杂环境下的对果实的实时检测。
相比传统方法,深度学习中卷积神经网络已广泛应用于果实目标识别与检测中,目前深度卷积神经网络目标检测模型主要分为两类,一类是基于区域建议的检测算法,代表如Faster RCNN[7]、Mask R-CNN[8];另一类直接将目标边框定位的问题转化为回归问题处理,不需要产生候选框,代表如SSD[9]、YOLO[10]等。Yu[11]提出一种基于Mask R-CNN网络模型和果实形状的算法实现了成熟和未成熟草莓采摘点的视觉定位;岳有军[12]提出一种基于原始Mask-RCNN网络基础上增加边界加权损失函数实现复杂环境下的苹果检测;武星[13]提出一种同构残差块串联的轻量化(Light-YOLOv3)网络模型实现对苹果的检测;刘芳[14]提出一种改进型多尺度YOLO算法(IMS-YOLO)实现温室环境下的番茄检测;闫建伟等[15]提出改进感兴趣区域的Faster-RCNN算法实现对自然环境下的刺梨检测;薛月菊等[16]提出原始YOLOv2网络基础上替换密集连接网络结构实现对遮挡和重叠的未成熟芒果的检测;穆龙涛等[17]提出基于AlexNet卷积神经网络模型对独立猕猴桃的检测。综上可以看出深度学习已显示更好的优越性。由于菠萝存在人工采摘成本高,且菠萝果实表面的纹理与周围土地、枯叶颜色相近,目前还没有卷积神经网络应用于菠萝检测的相关文献,基于此本文提出改进的YOLOv3[18]卷积神经网络模型来实现田间复杂环境下的单类别待拾捡菠萝的定位,为农业拾捡机器人自主拾捡果实奠定基础。
1 数据材料
1.1 图像采集
本文在研究拾捡机器人在田间拾捡菠萝等各种环境下的实际采摘画面后,人工设置菠萝拾取环境,白天采集待拾捡菠萝三种干扰状态下图像,如图1所示。由于菠萝的果实颜色、纹理在不同光照条件下容易受环境干扰,单独采取R-G色差分割模型(图2)受不同环境下的光照和背景的干扰,无法适应所有环境下的果实识别。因此考虑采取深度卷积神经网络的端到端的训练自适应学习菠萝识别所需要的特征,最终实现多种环境下的菠萝定位。
(a) 重叠果实
(a) 重叠果实
1.2 数据集建立
如图3所示,本文对采集的数据进行数据扩增,对原始图像进行旋转变换,旋转角度随机选取-30°~30°,并通过平移、翻转、缩放、剪裁等几何变换方式扩展数据集;通过调整图像的亮度、对比度、高斯滤波等进行数据增强,筛选出数据集为1 000张。将数据集使用labelImg工具对图像中果实采用矩形框人工标记,其操作界面如图4所示,标注信息采用PASCAL VOC数据集的格式存储,每组数据分别包含识别目标果实的类别序列、目标果实中心点的横坐标、纵坐标以及目标的宽和高。
(a) 旋转剪裁
图4 labelImg操作界面图
2 改进的YOLOv3网络检测模型
本文主要针对果实单类别检测问题,原YOLOv3网络定义的锚点框和网络的层数不适用于田间复杂环境下单类别菠萝的拾捡识别研究,因此,本文首先利用K-mean聚类算法对果实数据集进行聚类分析,然后基于深层残差网络对单类别识别果实修改网络的层级结构。
2.1 YOLOv3的基本原理和检测流程
YOLOv3吸收了当前主流的残差网络(ResNet)和特征金字塔(FPN)检测思想,使用基于残差网络改进的Darknet53网络作为特征提取器,将原始图片缩小到416×416大小,采用类似FPN结构将特征图的尺度大小划分为S×S个等大的单元格后,通过K-means算法对数据集样本进行聚类分析后,生成13×13、26×26、52×52大小的三个尺度特征图,分别对应深层、中层与浅层的特征,使用2倍的上采样使特征图在相邻两尺度上传递。且每一个单元格借助3个锚点框(anchor box),一共产生(13×13+26×26+52×52)×3=10 647个边界框。如图5所示,卷积神经网络在每个单元格上的每个边界框预测4个值分别记为tx,ty,tw,th作为预测目标中心坐标和目标的宽与高,当目标中心在单元格中相对于图像左上角的存在偏移(cx,cy),对应锚点框的高度和宽度分别为pw,ph,则对应修正的边界框的预测关系如式(1)。
bx=σ(tx)+cx
by=σ(ty)+cy
bw=pwetw
(1)
bh=pheth
式中:σ——Sigmoid函数,作用是将坐标偏移量转化到[0,1]区间;
bx,by——预测框的中心坐标;
bw,bh——预测框的宽和高。
图5 YOLOv3中预测值示意图
2.2 果实数据集目标框的K-means聚类分析
基于YOLOv3中对于初始锚点框的选择影响网络对目标的检测精度和速度,YOLOv3中通过COCO数据集中采用欧式聚类计算得到的9组先验框维度分别为(10,13),(16,30),(33,23),(30,61),(62,45),(59,119),(116,90),(156,198),(373,326),但不适用于实际中只检测单类别果实场景,因此本文通过K-means算法采用矩形框的平均交互比(Avg IOU)作为度量,定义聚类的Avg IOU目标函数
(2)
式中:box——单个样本中果实目标;
centroid——果实目标中心;
nk——第k个聚类中心中样本的个数;
p——样本的总数;
k——簇的个数;
IIOU(box,centroid)——簇的中心框和聚类框的重叠比;
m——样本序号;
n——聚类中心中的样本序号。
选取合适的IOU值保证果实检测的速度和精度,分别选取簇的数量k=1~10对果实数据集进行维度聚类分析,得出平均交并比与k的关系如图6所示。
在k=9时曲线变的平稳,考虑本文果实数据集的尺度变换,选择数量为9的先验框:(34,62),(61,114),(86,118),(114,148),(55,73),(46,50),(51,92),(25,37),(74,91),将其面积按从小到大排序后均分到3个不同尺度实现较大、中等、较小的感受野中定位菠萝图像区域。
图6 锚点框数量k与平均交并比(Avg IOU)的关系图
2.3 改进的YOLOv3网络结构设计
在田间复杂环境下采集的图像,虽然受到光照强度、杂草背景等干扰,但由于本文只针对单类别果实进行识别,需要缩减原始YOLOv3网络结构,考虑残差网络[19]的思想,采用深层残差网络作为提取网络,考虑特征金字塔(FPN)原理,构造如表1的网络结构。
表1 提取单类别果实特征的深度残差网络结构
图7 改进的YOLOv3果实识别算法
表1中Type表示网络中每一层的类型,Filters表示卷积核的个数,Size表示卷积核的大小,Output表示输出特征图的大小,左侧1×、2×、3×表示残差块堆叠的个数。改进的YOLOv3果实识别算法如图7所示,首先采用24维度的3×3的卷积核过滤416×416的输入图像,然后采用36维度3×3的卷积核,以步长为2个像素卷积操作,通过2倍下采样实现208×208的特征图;类似地在网络中通过1×、2×、3×、3×、2×的5组残差模块,残差模块间连接步长为2的3×3的卷积核,将下采样中使用残差单元的次数减少降低网络深度,分别获得52×52、26×26、13×13的特征图后,与图7中卷积层分成的3个分辨率相同的特征图分支进行2倍上采样后,将相同尺寸的特征图进行级联输出3种不同尺度的图像,最后通过非极大值抑制(NMS)算法,对输出图片上的多个预测框和单个预测框的置信度,采取如下算法。
1) 按照预测框的置信度的得分,对所有预测框降序排列,记录排列的索引,新建一个列表作为最后筛选的边框索引结果。
2) 将排序的第一个置信度最大的预测框作为当前框保留在列表中,计算其与剩余预测框的交并比(IOU)值。
3) 设定交并比(IOU)值的阈值,仅保留索引中IOU小于设定阈值的预测框,重复Step2,直到索引中仅剩下最后一个预测框,将其保留到列表中后退出循环。
2.4 改进的YOLOv3的损失函数
基于PASCAL VOC数据集识别了80个类别目标,但本文只针对单目标的田间待拾捡的菠萝定位,不需要预测多类别,因此在原有的YOLOv3损失函数的基础上,删除预测类别的损失,改进的损失函数
(3)
式中:s——划分的网格数;
B——每个网格中预测的先验框的个数;
λc o o rd——调节样本中心点位置损失的权重,减少边界框不包含果实目标的置信度预测损失,这里设置为5;
obj——该框对应了果实区域;
xi、yi、wi、hi——预测框果实目标的中心点横纵坐标、宽、高;
式(3)中第一项为果实样本中心点坐标的损失,第二项为果实样本宽高的损失,第三项为样本置信度损失。
3 试验结果与分析
3.1 训练环境与参数
本文试验基于Darknet神经网络框架实现果实定位网络。试验的计算机配置为PC Intel(R)Xeon(R)CPU E5-2673v3@2.40 GHz、11 GB的GPU GeForce GTX 1080Ti和32 GB的运行内存。果实识别程序基于Python语言编写在TensorFlow框架下并调用CUDA、Cudnn、Opencv库在Windows10系统下运行,训练参数设置每批量样本个数为64,动量因子设置为0.9,权值衰减设置为0.000 5,起始学习率设为0.001,非极大抑制设为0.5。
3.2 模型的测试与评估
本文针对田间待拾捡果实识别结果作出评价,主要由召回率R、准确率P和精度均值mAP来评价模型检测单类别果实的性能,其计算公式如式(4)~式(6)所示。
(4)
(5)
(6)
式中:TP——被模型正确识别果实数量的正样本;
FN——果实数目被模型识别为干扰环境的正样本;
FP——被模型识别干扰环境为果实数目的负样本。
3.3 结果分析
模型训练过程中的损失变化如图8所示,改进的YOLOv3模型刚开始迭代时损失值很大,但经过大约100次迭代后逐步趋于稳定,震荡幅度很小。
图8 损失(Loss)值随迭代次数的变化曲线
将本文算法模型与原YOLOv3网络模型对比,识别效果如表2所示。由表2可以看出,减少网络复杂度的情况下,本文算法在不降低检测速度和检测精度的情况下,试验训练环境下准确率达到了95.5%,召回率达到了93.4%,对比原网络模型准确率、召回率分别提高了3.2%和2.8%,且本文算法检测速度可以达到17.64帧/s,满足后期农业机器人实际工况下的模型部署检测要求。
表2 测试结果的算法对比
(a) 重叠果实
从图9可以看出,本文改进的单类别果实识别YOLOv3算法,在重叠、杂草遮挡、密集条件下果实都能很好地被识别,模型具有很好的鲁棒性。
4 结论
1) 针对复杂环境下的田间路边单类别菠萝果实的拾捡识别,基于菠萝的颜色、纹理、形状等特征的传统算法识别鲁棒性、准确性和适应性不足情况下,本文提出采用深层残差网络和特征金字塔改进YOLOv3网络结构,并基于果实数据集中果实目标框的K-means 聚类分析改进先验框的尺度,通过减少残差单元次数降低网络深度,降低了计算量。
2) 通过检测精度和检测速度等评判依据,本文算法在减少网络复杂度的情况下,试验训练环境下保证了检测速度和检测精度,准确率达到了95.5%,召回率达到了93.4%,对比原网络模型分别提高了3.2%和2.8%,且可以达到17.64帧/s的检测速度,本文提出的改进算法具有一定的可行性和优越性。
3) 为了提高果实拾捡机器人的对多目标识别定位能力,后续将考虑在数据集的多样性和平衡性上扩增数据集,提高小目标果实的识别正确率和识别实时性,并考虑田间多类别果实的识别作为下一步研究方向。