赵春江,文朝武,林 森,郭文忠,龙洁花
·农业信息与电气技术·
基于级联卷积神经网络的番茄花期识别检测方法
赵春江1,2,文朝武1,2,林 森2※,郭文忠2,龙洁花1,2
(1. 上海海洋大学信息学院,上海 201306;2. 北京农业智能装备技术研究中心,北京 100097;)
对作物花期状态的准确识别是温室作物授粉的前提。为提高花期识别的准确率,该研究以温室番茄为例,提出一种基于级联卷积神经网络的番茄花期识别检测方法。首先采用改进的基于特征金字塔花束提取神经网络(FlowerExtraction Feature Pyramid Networks, FE-FPN)实现番茄花束的局部区域提取,并采用Prim最小生成树对提取的花束区域图像进行识别优先级排序,然后按序将其输入到改进的Yolov3网络,实现番茄花朵不同花期的精准辨识检测。在包含4类花期、共1 600幅样本的番茄花束图像数据集上进行试验验证,本文方法对番茄不同花期的检测性能较好,平均检测精度达到了82.79%,平均单张检测时间为12.54 ms,各花期检测精度为花蕾期85.71%、全开期95.46%、谢花期62.66%、初果期88.34%;相比Mask R-CNN和空间金字塔池化网络(Spatial Pyramid Pooling Networks, SPP-Net),平均检测精度提高了3.67和2.39个百分点,而且识别错误率比基础Yolov3网络降低了1.25个百分点。最后,将本文所提方法部署到大型玻璃温室环境下番茄授粉机器人上进行实际验证,识别准确率为76.67%,除去漏提取花束准确率达85.18%。研究结果可为设施番茄授粉机器人的精准作业提供重要依据。
识别;级联神经网络;小目标检测;授粉机器人
番茄是设施栽培蔬菜的主要种类之一,也是典型的自花授粉植物,在自然栽培环境中可以通过自然风、昆虫等媒介完成授粉过程。但是在设施栽培过程中,由于温室的密闭性、缺乏自然风和昆虫的活动等原因,番茄常常授粉不良,造成落花、落果、畸形果等现象普遍发生[1]。目前,人工授粉方法存在主观性强、工作效率低、劳动强度大等问题,且激素处理不当容易引起激素残留或产生畸形果[2]。而授粉机器人则可以有效降低田间作业劳动量,提高番茄产量和品质[3],但现有授粉机器人大多处于试验或理论阶段,对番茄花束的区域提取和花期精准识别是制约番茄授粉机器人应用的关键环节。
近年来,对于番茄花朵的识别问题,使用基于深度学习的花朵分类方法最为广泛,该类方法是使用含有多层堆叠结构的卷积神经网络对花朵颜色、形状和外观特征进行识别,以获得更好的识别效果[4-8]。Oppenheim等[9]提出一种基于机器视觉的温室番茄花朵检测算法,在生长环境复杂、不同光照和花朵大小不同的条件下实现了温室内番茄黄花计数,该方法虽然利用温室无人机近距离实现了全开期黄花的识别,但并未解决同一花束中各个花期的分类问题。Yuan等[10]将一种抗日照波动的鲁棒色彩和亮度补偿方法设计在机器视觉系统的番茄花检测研究中,采用扫描策略在不同的光照变换情况下,根据色差和摄像机性能关系对摄像机参数进行自适应调整,以获得最佳番茄花色效果,提高识别算法在不同光照条件下的识别要求,该方法从光学相机出发解决识别模型的光照变化问题,并没有增加模型训练的鲁棒性。Tian等[11]提出了一种将SSD深度学习技术引入到花卉检测与识别领域的方法,在牛津大学出版的花卉数据集上进行训练和测试,该方法在VOC2007上平均准确率为83.64%,VOC2012上平均准确率为87.4%,并引入视频流的方案解决了对2个或多个目标花卉的检测,但其识别准确率和时间效率上有待提高。邓颖等[12]提出一种基于实例分割的柑橘花朵识别及花量统计方法,以花期的柑橘树冠图像为样本进行花朵实例的识别及分割,通过对Mask R-CNN主体卷积部分和掩模分支部分的优化,实现对复杂结构图像中密集柑橘花朵的高效检测、计算图像中可见花朵的数量,该方法初步实现了柑橘植株局部花朵的识别,但其检测环境要求配置较高,且识别误差率还有待优化。林君宇等[13]提出应用卷积神经网络识别花卉及其病症,该方法提供一种多输入卷积神经网络模型来提高训练速度,结合网络多输入和迁移学习方法,设计并实现基于卷积神经网络的分类模型,集成为花卉分类-病症识别一体化工具,对花卉的病症识别准确率达到88.2%,相比基于支持向量机的分类模型,准确率高出至少27.0%,该方法使用多输入网络提高识别准确率,但只能识别近距离大目标花卉,没有实现小目标花朵识别问题。
国内外研究大多针对花朵进行识别[14-18],同时对花束区域进行提取和花期识别的研究较少。本文研究的番茄授粉机器人授粉对象为整个花束区域,需要对花束区域进行提取,并对该花束中各花期花朵进行精准识别。由于番茄花朵生长环境为非结构化环境[19],花朵呈现小目标和多目标分布,一个植株往往含有多个花束,且同一花束中存在不同花期的花朵等特点;传统的卷积神经网络通常采用单一的网络结构进行特征提取,不能同时对花束区域和花期信息同时进行提取,导致提取的花朵特征信息不够充分,网络的识别精度不高[20-21]。针对这些问题,本文提出一种将两级神经网络级联的方法,以期实现番茄花束区域的提取和花束中花期的精准识别,并计算全开期花朵在该花束中的占比,作为番茄授粉机器人精准作业的关键决策,为番茄授粉机器人的精准作业探索一种新的识别方法。
本文试验在全国蔬菜质量标准中心(山东寿光)科技示范推广基地进行,为研究算法的工程适用性,将试验环境设立在大型玻璃温室内,试验番茄品种为迪诺番茄。番茄花期包含花蕾期、全开期、谢花期和初果期4个花期,其中花朵全开期是最佳授粉时期[22]。因此,对全开期花朵的精准识别是成功授粉的关键,若花束中没有全开期花朵,则无需授粉。本试验选取含有多种花期的番茄花朵作为研究对象。
玻璃温室环境下番茄花朵识别试验存在远目标、光线易变、曝光和背景噪声干扰等问题,在进行试验前期首先对图像数据进行优化,通过补光和遮阳等办法增强模型的鲁棒性。
本文使用由国家农业智能装备工程技术研究中心自主研发的番茄授粉机器人(图1)进行样本采集。采集相机为图漾科技的FM810-IX-A 3D高清相机,分辨率为1 280×960,测量精度为2 mm。机器人核心控制器配置为I7-4700MQ 2.4GCPU、8G DDR3L内存和500G固态硬盘。
图1 番茄授粉机器人
本文网络训练使用的硬件配置为:Intel® Xeon(R) CPU 2.5G Hz中央处理器,64GB运行内存,1T硬盘,1个12GB GeForce GTX 2080ti GPU和1个12GB GeForce GTX 1080ti GPU。算法试验环境为Ubuntu16.04系统,使用Python和C++语言编写网络训练、测试和应用程序。
本文试验采用番茄授粉机器人采集试验样本,分别在早8:00、中12:00和晚18:00 这3个时段对样本进行采集,为避免花朵遮挡问题,本文在图像采集过程中使用相机旋转对同一植株进行不同角度拍摄。
本文试验样本集共1 600张图像,按12:3:1比例用于级联网络训练、测试和验证。并根据当前天气状况对早8:00时、中午12:00时和晚上18:00时采集的图像进行曝光调节,试验花朵拍摄样例如图2所示。
图2 不同时间和不同天气采集的番茄花样例
样本采集设定晴天、阴天和多云天气采集图像比为5:4:6,如表1,中午受太阳光照的影响,适当增加中午图像样本数量,增强网络模型的鲁棒性。试验使用labelimg对目标花束和花束中各个花期花朵进行人工标注,花朵总数12 036个,其中全开期7 603个,初果期1 611个,花蕾期2 012个,谢花期810个。
表1 不同时间段番茄花朵图像样本采集数量
基于番茄花朵小目标且多密集分布的特点,本文将改进的基于特征金字塔的花束提取网络(Flower Extraction-FPN,FE-FPN)与改进的多尺度多输入卷积神经网络(Yolov3)进行级联,提出一种复杂环境下番茄花期精准识别方法。两级网络逐次进行特征提取,通过第一级网络对花束进行区域提取,第二级网络有序的对花束中各花期花朵进行精准识别,具体步骤为:1)采用改进的融合特征金字塔网络FE-FPN实现番茄花束区域提取,标记全部花束的像素区域;2)采用Prim最小生成树原则对提取的花束图像进行花期识别优先级排序;3)有序地将花束图像传入多尺度输入Yolov3网络,对番茄花朵的花期进行细精准识别,并统计全开期花朵在该花束中的占比。
2.1.1 花束局部区域提取
区域提取是根据特定的特征把图像分成若干个区域并提取出感兴趣目标的技术和过程,常用的基于边缘检测图像提取算法不受光照变化的影响,以图像的对比度和边界特征为基础进行区域提取,但由于番茄花朵目标小、所处环境复杂、噪声大的特点,该算法需要提前人工干预,而且算法相对复杂,计算量大,识别时间长[23-24],在番茄授粉机器人上不具备实用性。本文使用基于特征编码的区域提取算法[25-26]实现番茄花束的局部区域提取。
FPN[27]是在ResNet50 架构下的特征金字塔网络,该网络通过bottom-up和top-down的方法实现目标检测,具有较强的语义特征。本文使用FE-FPN网络对番茄花束信息进行特征提取、特征融合和多尺度预测输出。在FPN网络基础上增加输出的Feature map上采样到原图分辨率功能,以实现对花束的目标区域提取,并标记出各花束在原始图像中的几何中心像素位置,进一步计算每个花束优先顺序的权重因子。
如图3,本文在FE-FPN中每个融合特征图上都连接一个RPN(Region Proposal Network)网络,用于生成多尺度候选框,然后将生成的候选框集合并进行分配,以实现目标花束的多尺度预测,并在检测到的目标花束上生成预测框,改进网络输出结构,将预测框内花束区域图像区域裁剪,作为花束有效授粉区域,并将其尺寸调整为416×416×3、208×208×3和104×104×3,为第二级联神经网络提供多尺度输入。
注:RPN为区域生成网络;Bottom-up、Top-down代表自下而上和自上而下的网络结构;FSa与FSb代表提取的花束区域。
2.1.2 基于Prim的花期识别优先级排序
一张番茄花朵原图中通常含有多个花束,对提取后的各个花束进行优先级排序不仅可以提高授粉速率,还能节省资源。在FE-FPN对番茄花束区域图像提取后,本文使用最小生成树Prim算法[28]对原图中各花束区域图像进行优先级排序,并根据最短路径原则将花束图像有序传入Yolov3网络实现花期精准识别。
由图4,设花束的带权无向图为<,>,其中为花束坐标点,为权重。花束提取从图像左上角开始,每提取出1个花束后,计算该花束中心像素点到其余花束中心点的像素距离为权重因子,由式(2)计算。
式中,、分别为花束中心两像素点之间横、纵坐标值。
注:是两花束之间像素距离权重值,下标表示两相邻花束。
Note:is the pixel distance weight value between the two bouquets, and the subscript means connected bouquets.
图4 花束的带权无向图
Fig.4 Weighted undirected graph of bouquet
权重排序从花束A出发,计算花束A到花束B、花束C、花束D的最小权值点为第一条路径;接下来计算下一个目标点的最小权值花束(即最短路径),最终以最小生成树的形式遍历整个图像中各花束的位置。
2.1.3 改进的Yolov3网络模型
Yolov3 是2018年由Redmon[29]提出的,该算法在机器视觉图像检测和目标分类方面有很大的性能提高。Yolov3在Yolo(You only look once)原有的基础上,利用Darknet 53卷积神经网络进行目标特征提取,增加Yolo预测框,采用3种尺度张量信息预测输出,在目标大小不一和部分遮挡情况下都具有很好的检测效果,利用随机多尺度增强了算法的鲁棒性。
Darknet 53 网络为全卷积神经网络,主要包含卷积层、批量标准化层和全连接层,使用Leaky ReLU激活函数进行信息映射[30],但只能输入单一尺寸的原始图像,在特征提取过程种只能进行片面提取。本案例中花蕾与植株茎秆和花萼颜色、形状特征具有相似性,原Darknet 53无法准确进行特征提取;本研究将Darknet 53输入更改为多输入网络,增加特征信息的冗余,以提高对番茄花期的检测质量。修改Darknet 53 结构以适应不同尺度输入网络结构(如图4)。激活函数采用Leaky ReLU,卷积操作后将激活函数输出的结果映射到Res1和Res2结构。Yolov3除DBL结构外,还由Res结构组成,其中为Res块中含有Res unit的数量,Res结构包含零填充与残差结构。
由图5所示,改进的多尺度输入网络将416×416×3大小的花束图像传入网络第一输入口,Conv1按32×3×3尺度进行卷积操作,卷积核步长为1,接着进行第二次Conv2 64×3×3/2卷积得到208×208×64的特征图,第二输入口将208×208×3的图像与该特征图进行拼接操作(concat),之后将该特征图208×208×67传入Res1操,之后在Conv5 128×3×3/2卷积层卷积后输出104×104×64大小的特征图,最后输入104×104×3的花束图像进行拼接后传入Res2中,进行Res8 等剩余的操作。
注:Conv代表卷积层,数字代表层次,Res Blo代表残差块。下同。
本文将花束区域提取网络与小目标检测网络进行级联,提出一种温室环境下的番茄花期精准识别方法。试验首先对相机采集的原始图像进行曝光度调节、去噪等预处理,将处理后的图像传入第一级FE-FPN网络,对图像中存在的目标花束区域多尺度预测,通过上采样方案对预测特征进行多尺度预测得到花束FS图像,FSa1、FSa2、FSa3分别是同一花束提取出的416×416×3、208×208×3和104×104×3各尺度像素图。使用最小生成树prim算法对提取的多个花束FS图像进行识别优先级排序,将各尺度花束FS图像放入对应的张量中,然后将张量(vector)按照对应的尺度传入第二级网络Yolov3中,对番茄花朵花蕾期、全开期、谢花期和初果期进行精准识别。最后计算同一花束中全开期花朵的数量和占比。番茄花朵识别架构如图6所示。
注:图中FSa与FSb为提取的花束区域,其数字1,2,3为不同尺度花束图。
由图6番茄花朵识别架构可知,本文使用的级联卷积神经网络为串行网络结构,即第二级网络的输入完全依赖第一级联网络的输出,第一级联网络提取效果又直接影响第二级网络识别精度。本文首先人工对原始图像中花束和花朵进行标注,采用分步训练的方式分别对第一级联网络和第二级联网络进行训练。两级网络均使用从头进行独立模型训练,各项训练参数设置为:FE-FPN网络训练进行10 000次迭代,权值衰减速率为0.001,训练批量为1,动量为0.9,初始学习率为10-5。由图7a的 FE-FPN训练损失曲线可以看出,FE-FPN训练过程中在0~2 000次内下降速度较快,训练迭代为5 000次左右开始收敛,并达到拟合状态。
Yolov3进行20 020次迭代,批量大小为64,动量为0.9,权值衰减为0.005,初始学习率为10-3。图7b为改进后的Yolov3训练损失曲线,在训练迭代次数为10 000次左右开始收敛,到16 000 次到达平缓状态,即拟合状态。
图7 级联神经网络独立训练损失曲线
为验证各级网络的性能,本文采用2种评估指标分别对第一级网络和第二级网络模型进行评估。
2.4.1花束区域提取算法指标
使用手工提取出理想花束,然后将手工提取结果和算法提取结果进行对比[31],以相似度ESim(Extract Similarity)、正确率Acc(Accuracy)、过提取率OER(Over Extraction Rate)、漏提取率MER(Missed Extraction Rate)评价各算法对番茄花束的提取质量。当算法提取的区域大于实际提取区域,或者将一个区域划分为2个或2个以上的,称为过提取;反之,算法提取区域小于实际提取区域叫做漏提取。根据式(3)~(6)计算番茄花束提取结果的评价指标。
2.4.2 识别算法指标
在识别性能评价指标上,本文选用包括均值平均检测精度AP、各花期类别的检测精度P、准确率,检测时间r、错误率r、召回率、交并比OU。错误率r=100%;交并比OU是预测框和真实框的交集和并集的比值,表示番茄花朵的定位精度。AP是计算花蕾期、全开期、谢花期和初果期各项P的平均值;P是准确率在召回率R上的积分,一般P值越高,模型性能越好。计算公式如下:
式中TP为实际为正样本且被检测为正样本的数量,FP为实际为负样本且被检测为正样本的数量,FN是实际为正样本且被检测为负样本的数量,c是类别总数(c=4),k为类别编号(k=1,2…);J为平均精度函数,即类别号为k的精确率P与召回率R所构成P-R曲线的面积。