涂淑琴, 黄 健, 林跃庭, 李嘉林, 刘浩锋, 陈志民
(华南农业大学a.数学与信息软件学院;b.基础实验与实践训练中心,广州510642)
百香果,学名“西番莲”,是西番莲科西番莲属的草质藤木。童彤[1]指出百香果对健康益处多。百香果生长习性良好,环境适应能力较强,不仅可以作为果树大规模种植于果园,还可以作为观赏植物栽种于居民庭院。目前在东南亚和美洲分布较为广泛,在中国主要分布在广东、福建和广西等南方省份。随着百香果产量不断上升,其在创造出巨大财富的同时,也带来了人工采摘的困难。皆彦吉[2]提到,当前进行果蔬采摘是农业生产中最耗费人力与物力的事情,采摘的成本高为经营者带来重大负担。百香果产量的增加、人工劳动成本的上升和劳动力不足的现状,引发了研究人员对智能采摘机器人研究开发。而目标检测作为果实识别的关键技术,是采摘机器人目标识别的基础。以百香果为目标,研究基于不同特征提取网络以及不同参数环境下的目标检测算法对智能采摘机器人研制,具有重要的意义。
目前我国已经自行研发了苹果采摘机器人,并且吸引了大量研究人员对果蔬机器人进行软硬件技术方面的研究。李昱华[3]对番茄采摘机器人目标检测与抓取的关键技术进行了研究,重点介绍了果实目标识别的过程,包括图像预处理、模型选择、目标分割算法等。樊艳英等[4]指出,目标果实的识别和定位是采摘作业的必要条件和准确采摘的关键,在基于双视觉传感器的基础上,他们设计并研究了一个采摘机器人目标果实识别系统,通过图像处理技术,实现了果实的识别和定位功能,为实现水果采摘的自动化和无人化奠定了软件基础。
基于深度学习的目标检测技术作为采摘机器人软件层面上的重要一环,其算法的优劣对果实的识别和定位起着关键作用。目前国内外对基于深度学习的果实检测展开了一些研究工作[5-10]。Sa等[5]提出将Faster R-CNN目标检测算法应用于水果检测中,目标是建立一个准确、快速、可靠的水果检测系统。Stein等[6]提出了基于Faster R-CNN[7]的新的多传感器框架,可以有效地对芒果果园的每个果实进行识别、跟踪、定位,利用多视点方法解决了果实遮挡问题,从而解决了耗费大量劳动力在现场进行实际产量估计的问题。陈燕等[8]利用YOLOv3-DenseNet34网络实现对荔枝的目标检测,将传统的目标检测与双目视觉相结合,实现对荔枝串进行定位,引导机器人对荔枝串进行采摘。彭明霞等[9]提出利用融合特征金字塔网络(Feature Pyramid Network,FPN)的Faster R-CNN对棉花和杂草的快速,准确识别。熊俊涛等[10]提出改进YOLO v3网络的夜间环境柑橘识别方法,其在测试集下的平均精度(mean Average Precision,mAP)为90.75%。Koirala等[11]利用YOLOv3和YOLOv2对不同场景下的芒果集进行检测,取得了F1值为0.968,平均准确率为0.983。Tu等[12]使用RGB-D图像识别技术检测处于不同生长阶段的百香果并对其进行成熟鉴定进行了研究。Bargoti S等[13]利用Faster R-CNN检测框架实现果园中水果检测应用,提出在产量预测和机器收割等高层次的农业任务中,准确可靠的基于图像的水果检测系统支持是至关重要。
本文提出了基于残差网络(Residual Network,ResNet)[14]和FPN[15]的Faster R-CNN百香果检测算法,实现果实无遮挡、遮挡、重叠和背景四类果实自动检测和产量预测。该方法首先采用ResNet网络融合FPN对百香果进行多尺度特征提取;然后接入到感兴趣区域(Region of Interest,ROI)池化层进行尺度归一化;最后通过全连接层实现百香果分类和检测。
本实验研究对象是处于自然生长环境下的百香果,采用华为Mate10手机拍摄了约2 000张花都区百香果庄园内的彩色百香果照片。经过筛选,挑选了其中较具有代表性的700余张图片作为实验数据集,每张图片中包含多个百香果果实,部分图片如图1所示。
图1 百香果图片样本
实验中利用labelImg对百香果进行标定,同时将百香果果实分为无遮挡果实、遮挡果实、重叠果实和背景。为方便结果的观测,分别用n_ov、occ、ov代表无遮挡、遮挡、重叠三类果实标签。通过标注工具标注的约700张照片中百香果总数约为4 000个,其中无遮挡果实数约为2 000个,遮挡果实约为1 600个,重叠果实约为400个(见图2)。
图2 不同背景下的百香果
基于ResNet+FPN的Faster R-CNN百香果检测网络检测流程如图3所示,该方法流程包括以下步骤:
图3 基于ResNet+FPN的Faster R-CNN百香果检测流程
(1)首先,输入任意尺寸大小的百香果RGB图像,利用FasterR-CNN中的残差网络和FPN对输入百香果图像进行多尺度特征提取,形成多尺度特征映射图。
(2)一方面多尺度特征映射图输入到该网络中的区域候选网络(Region Proposal Network,RPN);另一方面多尺度特征映射图继续前向传播至特有卷积层,产生更高维特征图。
(3)多尺度特征映射图经过RPN网络得到建议区域,并根据区域得分,区分前景和背景(果实和非果实),对前景区域采用非极大值抑制操作,输出其前N个得分最高的候选前景区域作为感兴趣区域(ROI),完成目标框的粗检测。
(4)多尺度特征映射图及ROI输入到RoiPooling层。
(5)RoiPooling层输出至全连接层,对每一个感兴趣区域线性边框回归,得到目标果实的精准检测;用softmax回归模型做多分类目标检测,最终识别出不同百香果的类别(果实无遮挡、遮挡、重叠)。
选择合适的迭代次数,就能够利用Faster R-CNN算法进行模型训练。调整训练迭代次数,反复训练模型,建立最佳的基于ResNet+FPN的Faster R-CNN百香果检测流程。
为实现小对象更好检测,本文在ResNet+FPN的Faster R-CNN百香果检测网络结构的基础上,对ResNet+FPN的Faster R-CNN网络框架网络深度和宽度进行优化调整,在已有一定训练基础的参数上,进行迁移学习,用含有较多小果实图像作为训练集,比较不同层数和不同卷积核的网络模型的检测准确率,确定较优的ResNet+FPN的Faster R-CNN的网络参数和模型。最终,其网络较基于ResNet+FPN的Faster RCNN网络做了两点优化改进:①针对本文试验场景中小果实图像对象,将Faster R-CNN中的非极大值抑制(Non Maximum Suppression,NMS)修改为SoftNMS[16],这样实现了更多小对象的检测,而且没有增加运行时间。②Faster R-CNN中分类类别由80类改为4,代表类别数为4类(果实无遮挡、遮挡、重叠和背景)。
具体的训练检测模型搭建过程如下(见图4):
图4 基于ResNet-50/101+FPN的Faster R-CNN百香果检测模型训练过程
(1)为了方便检测效果的对比,实验采用统一的数据集,但是数据集格式上有所改变。在基于ResNet的Faster R-CNN实验中,使用了Facebook AI研究院于2018年初公开目标检测框架detectron,该框架使用的是COCO数据集,标注文件类型从.xml变为.json。在实验中,通过简单的代码实现数据集格式的转换。
(2)分别利用ResNet50、ResNet101、ResNet50+FPN、ResNet101+FPN四种特征提取器进行模型训练,进一步探究学习率等参数对检测效果的影响,以找出最优模型。ResNet50的训练时间比较短,迭代次数为6 000的情况下训练时间大约为1 h。
(3)利用相对最优的模型,进行百香果检测,并对实验结果进行分析和统计。
由表1可以看出,在学习率和迭代次数恒定的前提下,不同特征提取网络的检测算法对检测效果有一定的影响。ResNet101比ResNet50的检测效果略好,从mAP上看,提升了0.4%左右,但是由于网络深度的加深,在检测时间上相应要稍逊于ResNet50,两种网络结构每幅彩色图片的检测时间相差35 ms左右。基于ResNet+FPN的网络结构有更好的检测结果,从mAP上看,比使用ResNet提升了1.3%左右,这与FPN更利于小目标的检测有关;从时间上看,融合了FPN的网络明显加快了目标检测的速度,在平均检测时间上缩短了3/4,可见FPN带来了更好检测效果的同时缩短了检测时间,提高了百香果目标检测的效率。从整体上看,使用ResNet特征提取网络的mAP稳定在区间86%~87%,无遮挡果实的检测精度保持在90%以上。另外,在ResNet融合FPN后,对比ResNet网络结构,其检测平均精确率(Average Precision,AP)和平均耗时上都有显著提升。
表1 不同网络结构的检测效果
图5(a)、(b)、(c)分别用4种不同颜色的曲线分别描绘了ResNet50、ResNet101、ResNet50+FPN和ResNet101+FPN 4种特征提取网络下的精确率-召回率(Precision-Recall,P-R)曲线,P表示精确率;R表示召回率。图5(d)针对ResNet101+FPN网络结构分别对三类果实进行了P-R曲线的描绘。在P-R图上,PR曲线的积分,即P-R曲线下的面积越大,代表的检测结果越好。
图5 百香果果实的P-R曲线
从图5(a)和(b)可以看出,不同特征提取网络下,无遮挡和遮挡果实的检测效果从召回率R、准确率P和mAP上看都非常接近,P-R曲线近乎贴和,可见特征提取网络对这两类果实的检测效果没有明显影响。而重叠果实受特征提取网络的影响较大,由图5(c)可以看出,重叠果实在ResNet101+FPN下取得最好的检测结果,在ResNet50上准确率和召回率较低,检测结果相比其他三种特征提取网络较差。从图5(d)分析,3类果实中无遮挡果实的检测结果具有明显的优势,其次是遮挡果实,最后是重叠果实。
基于ResNet101+FPN的Faster R-CNN目标检测算法的性能最好,利用其对100张图片不同类别的百香果的个数、算法检测出的正确、漏检和误检的百香果个数进行统计,其结果如表2,3所示。
表2 基于ResNet101+FPN的Faster R-CNN百香果产量预测
结合表2和表3分析,在无遮挡果实中,算法共检测出229个目标,其中214个检测正确,8个漏检,15个误检。其准确率和召回率分别达到了93.4%和96.40%,比遮挡和重叠两类都要高,而误分率和漏分率比其他两类都低,这可能与训练样本中无遮挡果实在数量上和质量上的优势相关;在遮挡果实中,算法共检测出171个目标,其中正确的153个,17个漏检,18个误检。该类别的准确率和召回率接近90%左右,但是漏检和误检基数大。遮挡果实的遮挡情况多样,遮挡物的不同、遮挡程度的不同加大了特征学习的难度和检测的难度,在一定程度上影响了检测的准确率,增加了漏检和误检的可能性;在重叠果实中,算法共检测出19个目标,其中正确的是17个,3个漏检,2个误检。重叠果实的训练样本数较少,缺乏大量数据的支持使得模型在学习特征时不够充分。另外,在重叠果实中,果实重叠面积的差异对训练和检测产生了一定影响,故准确率和召回率较低,而误分率和漏分率较高。
表3 基于ResNet101+FPN的Faster R-CNN检测结果 %
ResNet101+FPN特征提取网络的部分检测结果如图6所示。用红框、蓝框、黄框分别表示算法检测的无遮挡、遮挡、重叠三类果实。用白色箭头指向误检的目标。
图6 两种方法下的场景的百香果检测结果对比
从图6可以发现,对比ResNet101网络,ResNet-101+FPN的Faster R-CNN模型在无遮挡、遮挡中不存在漏检和误检,在重叠两类果实上有误检现象,都能较好地检测出无遮挡、遮挡、重叠3类果实,其最好mAP达到88.01%,能够对百香果目标进行快速准确的检测。
在产量估计中,采集了275张密集小果实图像(共有7032个果实)做训练测试数据集。ResNet-101+FPN的Faster R-CNN检测结果。该方法能检测正确果实个数为6205,漏检个数为827,错检个数为207,精确率为96.80%,召回率为88.20%,F1值为0.923,能够实现密集果实产量预测要求。
基于ResNet-101+FPN的Faster R-CNN的部分密集果实检测结果如图7所示,将所有类别都表示为红色框,在图片中,大果实对象都能准确检测出来,而对部分小对象(像素在[10,10]到[20,20])的也能有效检测出来。但是对于像素在[10,10]以下的,检测器不能很好工作,出现较多漏检。结果表明,该方法可以实现进行自然场景下果实的产量预估。
图7 百香果产量估算
本文提出的基于ResNet101+FPN的Faster RCNN百香果检测算法在mAP和检测时间上都具有最佳结果,其mAP达到了88.01%,在无遮挡、遮挡、重叠3类果实中检测准确率达到了93.4%、89.5%、89.5%,召回率分别为96.4%、90.0%、89.00%,检测时间低至0.178 s,检测性能良好,达到了快速准确检测百香果的目标。在产量估算中,该方法取得了准确率为96.80%,召回率为88.20%,F1值为0.923。结果表明,该检测算法实现了在自然场景下百香果的快速准确检测,准确地预测百香果产量,可以更好地实时应用于自然场景下采摘机器人的定位检测与产量估算。