基于卷积神经网络的草莓识别方法
2020-03-09刘小刚李加念高燕俐章宇阳杨启良
刘小刚 范 诚 李加念 高燕俐 章宇阳 杨启良
(昆明理工大学农业与食品学院, 昆明 650500)
0 引言
智能图像识别与目标检测具有识别精度高、检测速度快等优点。将图像识别系统与机器人结合起来,用于农业生产中,将极大地提高工作效率与作业质量。快速稳定的目标识别系统能够使采摘机器人进行长时间有效的工作,大大提高了采摘效率。
草莓营养价值丰富,被誉为“水果皇后”。草莓的自动识别是机器人采摘的前提,目前国内外草莓图像识别已经取得了一定的进展[1]。张铁中等[2]采用LRCD的方法分割草莓图像,从而确定草莓的位置。谢志勇等[3]通过图像分割对其进行Hough变换,实现成熟草莓的识别。研究多采用基于图像分割对草莓进行识别定位,但均未对动态机器视觉下研究的可行性进行验证。张凯良等[4]应用软硬件相结合的方式,以地垄栽培模式下的草莓为作业对象,采用镜像匹配法和激光辅助对草莓进行自动定位,但是该方法平均计算效率较低。李长勇等[5]利用双目定位技术识别完全成熟的草莓,但没有分析复杂环境下该方法的识别正确率。ZHANG等[6]基于机器视觉的颜色模型对水果进行识别检测。侯贵洋等[7]采用颜色识别和特征识别相结合的方法区分成熟草莓和未成熟草莓,但均未结合实际环境对草莓的识别效率进行分析。上述研究大都针对草莓在简单环境下的识别定位,且研究方法的识别效率较低,对草莓在实际复杂环境中的识别效率鲜有研究。
深度卷积神经网络通过对输入图像进行卷积运算,直接从图像中提取到特定目标的信息特征,并通过前向传播与反向传播调整卷积神经网络运算中的参数。卷积神经网络在对目标进行特征提取时,不要求原始图像具有固定的尺寸,从而不需要对原始图像进行剪裁或压缩等操作,提取到的特征信息更加完整和准确[8-9]。目前深度卷积神经网络主要有两大类,一类是RCNN[10]、Fast-RCNN[11]、Faster-RCNN[12]、Mask-RCNN[13]等基于候选区域的方法,另一类是SSD[14]、RetinaNet[15]、YOLO等基于无候选区域的方法。REDMON等[16-17]提出了基于一步检测的YOLO算法,该算法不同于RCNN为代表的两步检测算法,使得网络结构更加简单,同一条件下检测速度比Faster-RCNN快10倍左右。YOLOv2[18]在YOLOv1[19]的基础上加入了批量归一化,仅通过输入高分辨率的图像,MAP提高了4%[20]。薛月菊等[21]采用YOLOv2方法在光照多样性及复杂背景下识别未成熟芒果,具有较高的准确率及召回率,但未说明该方法在夜间识别的效率。赵德安等[22]基于YOLO算法在复杂背景下实现多种算法对苹果的识别,验证了在不同环境下YOLOv3算法的可行性,但未具体分析在动态检测下目标的检测效率是否变化。可见,基于深度卷积神经网络的YOLO识别方法在复杂环境下具有效率高、可靠性好的特点。
针对目前草莓识别存在的问题,基于卷积神经网络下改进的YOLOv3算法,本文对草莓静态图像和动态视频进行识别分析,探究草莓在实际复杂环境下机器视觉的识别效率,为草莓采摘机器人识别系统提供理论基础。
1 材料和方法
1.1 检测对象数据采集与标注
图像采集于云南省昆明市呈贡区某草莓种植园,大棚地垄式种植。草莓的品种为章姬,成熟草莓为鲜艳的红色,未成熟的草莓为绿色或是粉色。采集样本的时间分为白昼、傍晚和夜晚。草莓同一茎上会生长形状大小相似的成熟草莓和未成熟草莓,为降低采摘机器人误采摘的概率,将识别对象分为成熟草莓和未成熟草莓两类。
为满足样品环境的多样性,采集白天、傍晚、夜晚、遮挡、重叠、密集环境下的草莓图像,共620幅,其中500幅图像用于模型训练,120幅图像用于模型测试。草莓图像采用LabelImg进行人工手动标注,对原始图像进行裁剪、旋转及镜像等操作从而扩充数据集,共标注1 320幅图像,保存为PASCAL VOC格式。标注的矩形框用于草莓的分类和识别。
使用2 400万像素的摄像头采集动态视频数据,采用固定位置拍摄、横向拍摄和纵向拍摄3种拍摄方式,拍摄环境包含果实重叠、密集、遮挡等复杂情况。视频统一为10 s短视频,识别后保存为avi格式,每3 s截取一幅图像显示对比效果。抽取每类视频20个,重复3次进行识别分析。
1.2 基于YOLO的图像识别算法
YOLOv1算法采用一步检测,网络结构浅且速度快,但对小目标识别准确度上存在不足[23]。YOLOv2在YOLOv1的基础上移除了全连接层,采用卷积层和先验框使得模型更容易学习,特征层由原来的7×7变为13×13,对于一般的物体,能够更好地预测边界框。YOLOv3在YOLOv2基础上,增加了多尺度预测,对小目标的检测精度进一步提升,通过卷积层提取目标信息,采用池化层降低维度,从而加快模型运算速度。
图1 YOLOv3训练测试流程
YOLOv3算法的训练测试流程如图1所示。
1.2.1YOLOv3草莓检测网络与训练
采用Darknet53作为预训练模型,训练时设置动量项(Momentum)为0.9,衰减参数(Decay)为0.000 5,初始学习率(Learning rate)为0.001。试验平台CPU为Intel core i7-8750H,主频2.20 GHz,6核12线程处理器,GPU为GeForce GTX 1060,6 GB显存,8 GB运行内存,Windows 10专业版。本文所有模型训练及测试都在同一硬件环境下运行。
由表1[24]可知,交并比(Intersection over union,IOU)为0.5时,YOLOv3算法有3种像素训练模式,分别为320像素×320像素、416像素×416像素、608像素×608像素。相对于320、416像素,608像素的平均识别精度最高,相对于608像素,416像素检测时间更短,采用416像素×416像素模式。为了对不同模型的性能进行评价,采用准确率Pi、召回率Rn、调和平均值Fj[25]、平均精度(MAP)作为评价指标,计算公式为
(1)
(2)
(3)
(4)
图2 YOLOv3网络训练结构
式中RS——图像中正确检测出的目标草莓数量
FS——图像中未被检测到的草莓数量
FN——非草莓物体数量
S——草莓的类别数
k——阈值
N——引用阈值的数量
MAP——成熟草莓和未成熟草莓的平均精度
其中,i、j=1表示成熟草莓的相关参数,i、j=2表示未成熟草莓的相关参数。
表1 不同方法的性能比较
YOLOv3算法共有53层卷积层,考虑到本文只识别草莓,过多的卷积层会增加计算量,因此对YOLOv3神经网络结构进行改进,参照VGG-16搭建如图2所示的14层网络结构,当输出矩阵分别为52×52×64、26×26×128时,神经网络并行输出52×52×192和26×26×384的两条网络特征层,最后将3种特征层的输出张量合并处理对草莓进行检测。改进后的神经网络减少了卷积层数量及过多的运算,而且对小目标的检测有显著效果。改进网络结构如图2所示。图3为YOLOv3边界框(Bounding boxes)原理图[26],cx、cy为预测框中心点所在的单元格相对左上角单元格偏移的单元格数量;σ(t)为逻辑函数,将坐标进行归一化,使其在0~1之间变化。Pw、Ph为该单元格对应的先验框(Anchor box)的宽和高。bw、bh为预测边界框的宽和高。
图3 YOLOv3 边界框原理图
1.2.2训练权值模型
模型共训练8 000次,前1 000次迭代后模型损失值迅速收敛到1以下,训练至约4 000次后损失值逐渐平稳。每1 000次输出一个权重模型,得到8个模型,本文通过评价指标选取最优模型,8个模型的评价指标如表2所示。
表2 权值模型的性能比较
图4 不同图像增强算法的YOLOv3检测效果
从表2可以看出,模型1综合性能最差,模型2~6性能较好且逐渐升高,模型7、8性能逐渐稳定。模型6的调和平均值F1、F2最大,说明模型的准确率和召回率综合表现最好,成熟草莓的准确率为97.14%,召回率为94.46%,未成熟草莓的准确率为96.51%,召回率为93.61%,平均精度87.51%最高,综合来看,模型6可以作为后期草莓的测试检验模型。
2 试验结果与分析
2.1 基于OpenCV图像的增强算法
考虑夜晚在只有一个LED灯照明的情况下,采集的草莓图像背景过暗,模型很难将检测目标与背景区分,置信度过低导致无法达到检测目的。因此对夜晚的草莓图像进行图像增强。本文采用基于直方图均衡化[27]、拉普拉斯(Laplus)算子、对数变换、伽马(Gamma)变换[28-29]的4种图像增强方法对图像进行处理。由OpenCV图像增强算法处理后的图像相较原图在亮度、灰度、对比度、锐度等方面都有显著的改善,草莓特征与背景明显区分开。为了选择较好的图像增强方法,随机抽取夜晚草莓图像30幅,重复抽取3次共90幅,采用YOLOv3算法对增强后的图像进行实际效果检测,如图4所示。其中,cms表示成熟草莓,cmws表示未成熟草莓。由图4可以看出,原图背景过暗,识别效果差,甚至无法识别。不同图像增强算法效果对比如表3所示,增强后的图像可以明显看出草莓特征,并且识别精度提高,漏识别和一果多框的现象显著减少。
从表3中可以发现,4种图像增强算法对草莓的正确识别率都有提高,伽马变换图像增强算法比成熟草莓原图的正确识别率高20.15个百分点,比未成熟草莓的正确识别率比原图高35.03个百分点。由此可见,后期模型测试阶段采用伽马变换对夜晚草莓图像进行增强处理,有利于提高夜晚草莓图像识别精度。
2.2 草莓静态图像识别分析
2.2.1不同草莓数量的试验对比
试验以草莓数量作为变量,测试集包括150幅图像,其中含1~3个草莓的图像共64幅,包含4~6个草莓的图像共51幅,包含7个及以上草莓的图像共35幅。每一类抽取25幅作为检测对象,检测出样本总量、正确识别的草莓数量、未识别出的草莓数量、误识别的草莓数量,计算准确率和召回率,采用F1及F2作为综合评价值,3次重复取平均F值。图像边缘残缺草莓及过小的未成熟草莓忽略不计。从图5中可以看出,在草莓果实数量较少的情况下,3种方法都能正确识别出成熟草莓和未成熟草莓,但草莓数量增加到7个以上时,存在一果多框和漏识别的现象,这是由于草莓的尺寸减小、果实重叠与粘连增加了模型识别的难度。表4为3种算法对不同数量草莓的检测结果。
表3 不同图像增强方法效果对比
图5 3种算法对含不同草莓数量图像的检测效果
表4 3种算法对不同草莓数量检测试验结果
从表4中可看出,随着草莓数量的增多,成熟草莓和未成熟草莓的F值均减小,当草莓数量大于7时,F值下降了7~10个百分点。随着草莓数量的增多,RetinaNet算法容易导致一果多框及漏识别的现象,对小物体的检测精度明显下降。而YOLOv3采用多层神经特征网络,能够预测更小的栅格,在小物体的检测上取得了较好的检测效果,YOLOv3算法F值最高。YOLOv3算法选取的阈值为0.5,YOLOv3的每帧图像检测时间是RetinaNet的39.92%,是YOLOv2的40.27%。
2.2.2不同时间段下草莓的识别效果对比
为了满足采摘机器人连续作业的要求,本文从白昼、傍晚和夜晚3个时间段来验证模型。采用白昼图像80幅,含有414个草莓,傍晚图像65幅,含有358个草莓,夜晚图像46幅,含有255个草莓。处理方式同2.2.1节。由图6可知,在同一块草莓区,不同时间段下,白昼下的草莓颜色、形状、表面特征清晰。傍晚时草莓的表面特征明显变模糊,并且背景变暗。而夜晚环境过于黑暗,草莓特征难以与背景明显区分开,极大地增加了识别难度。因此,为了达到较好的识别效果,采用伽马变换对夜晚的草莓图像进行增强。
图6 3种算法对不同时间段的草莓识别效果
表5为3种算法在不同时间段对草莓识别结果的比较。在不同时间段下,总体上白昼时识别的调和平均值F1、F2最大,比夜晚高近5个百分点,说明亮度对识别的效果影响很大,过暗的环境下草莓特征极不明显,增加识别难度。从表5中可以看出,YOLOv3算法F值比YOLOv2算法平均高2.79个百分点,YOLOv2算法与RetinaNet算法在白昼时的F值相似,傍晚和夜晚环境下YOLOv2算法比RetinaNet算法的F值略高。同一方法检测下,成熟草莓和未成熟草莓在白昼的F值相似,傍晚和夜晚环境下成熟草莓的F值比未成熟草莓略高。总体上YOLOv3算法每帧图像检测时间是YOLOv2算法的41.13%,是RetinaNet算法的38.57%。
表5 3种算法对不同时间段的草莓检测试验结果比较
2.3 动态视频中草莓的识别效果对比
图7为3种算法在不同拍摄方式下的检测效果。由于固定拍摄方式在同一位置停留较长时间,该方式对检测目标的识别精度较其他方式更加准确。而横向拍摄时果实数量相对密集,果实重叠、粘连现象出现频率高,摄像停留时间较短,识别难度相对增加,易出现漏识别、误识别以及一果多框的现象。采用纵向拍摄模式时,草莓数量由少变多,果实遮挡频率高,识别难度先易后难。相对于RetinaNet和YOLOv2识别算法,YOLOv3算法在视频识别的精度上有显著优势。因此,YOLOv3算法不仅在识别精度上保持着较好的准确性,而且在复杂环境下具有良好的鲁棒性。
图7 3种算法在不同拍摄方式下的检测效果
对于不同的视频拍摄方式,采取固定拍摄时的F1和F2最高(表6),算法的准确率和召回率综合表现最好,草莓的识别效果最佳。纵向拍摄的效果略优于横向拍摄,是由于横向拍摄时草莓分布密集,增加了模型识别的时长和运算量。对于不同的识别算法,YOLOv3算法平均检测速率是YOLOv2算法的2.38倍,是RetinaNet算法的2.44倍。在识别效果上,YOLOv3算法平均F值最高,YOLOv2算法与RetinaNet算法相似。综上,YOLOv3算法在识别精度与检测速率上均满足实时检测的要求,视频平均识别速率达58.1 f/s。
3 结论
(1)针对夜晚环境下草莓图像模糊的问题,使用伽马变换的图像增强算法处理图像后比原图成熟草莓识别正确率提高了20.15个百分点,比原图中未成熟草莓识别正确率提高了35.03个百分点,平均每幅图像检测时间比原图减少1.77 ms。
表6 3种算法在不同拍摄方式下的检测结果比较
(2)对比不同算法在不同草莓数量、不同时间段下的检测效果, YOLOv3算法的F值最大,综合识别效果最好,每帧图像的平均检测时间为34.99 ms,是YOLOv2算法的41.13%,是RetinaNet算法的38.57%, YOLOv3算法在识别精度及速率上优势显著。
(3)采用固定拍摄方式时F值最高,识别效果最好,YOLOv3算法平均检测速率为58.1 f/s,视频检测流畅,满足实时性要求,在果实遮挡、重叠、密集等复杂情况下具有良好的鲁棒性。