黄成龙 张忠福 华向东 杨俊雅 柯宇曦 杨万能
(1.华中农业大学工学院, 武汉 430070; 2.华中农业大学作物遗传改良国家重点实验室, 武汉 430070)
棉铃是棉花经授粉子房生长后形成的果实。棉铃的生长发育过程大致可分为体积膨大期、棉铃充实期、脱水成熟期[1]。棉铃作为棉花重要的产量与品质器官,单株铃数、铃长、铃宽、长宽比等相关的表型性状一直是棉花育种的重要指标与研究方向[2-3]。文献[4]指出铃数是构成棉花产量的重要三要素之一,单株铃数又与棉花品种、栽培环境等条件息息相关。文献[5]研究表明,单位面积成铃数增加会使平均铃重降低,但由于补偿作用,增加的铃数补偿了铃重降低造成的产量损失,从而使得棉花产量增加,因此铃数对棉花产量的影响较大。文献[6]也指出通过对铃数和铃重的双重调控可以有效提高棉花的产量。因此,棉铃单株铃数的精准测量,对棉花产量预测、相关基因位点的鉴定、探究产量与外部环境交互作用以及优势棉花品种的选育具有重要意义。
传统的棉铃计数主要依赖人工,存在主观、低效、接触干扰等问题,无法满足高通量、智能化棉花育种的需求。近年来,随着深度学习的快速发展,基于单阶段、多阶段的目标检测算法受到越来越多研究人员的关注[7]。在农业领域,目标检测方法被广泛应用于病虫害与杂草识别[8-11]、作物及其器官分类与识别[12-14]、耕地信息提取与产量预测[15-16]等。文献[17]提出了一种基于弱监督深度学习架构的田间小麦病害自动诊断系统,使用的VGG-FCN-VD16和VGG-FCN-S两种深度学习网络检测准确率均可达95%以上;文献[18]采用特征增强与多尺度融合的方法改进SSD模型,实现了对田间杂草的有效检测。因此基于深度学习的棉铃识别,将为棉铃计数提供新的途径。
然而棉铃由于受到叶片的遮挡,无法通过单一视角图像的目标检测完成棉铃计数,而多视角目标跟踪将为棉铃准确计数提供新的解决方案。目标跟踪是指通过对比构成视频的图像序列中目标的外观形貌信息与空间位置变化,实现前后帧同一目标的匹配[19]。在计算机视觉领域中,目标跟踪按照研究对象的不同,可分为单目标跟踪与多目标跟踪,主要应用于车、船舶流量监测[20-22],行人跟踪[23],无人驾驶和虚拟现实等[24-25]领域。对于单目标跟踪而言,其主要任务为跟踪视频画面中的单个目标,主要解决目标尺度、光照变化问题,可应用于高效运动与外观模型设计[26-27]。对于多目标跟踪,其主要任务为同时跟踪视频画面中的多个目标,为目标分配ID并维持ID的长久有效性,得到目标的运动轨迹,需要解决目标遮挡、轨迹追踪以及多目标间相互影响等问题[28-29]。多目标跟踪目前在农业领域已有较为深入的应用,如畜禽行为监测[30-31]、农产品流水线跟踪[32]等。文献[32]针对柑橘分拣费时费力的问题,提出了一种基于深度学习的柑橘检测与跟踪算法,可以实现柑橘旋转跟踪和高精度分拣。
本文以盆栽棉花植株为研究对象,针对不同视角下棉铃遮挡的问题,提出一种以改进Faster R-CNN、Deep Sort和撞线匹配机制为主要算法框架的棉铃检测与跟踪方法,实现单株棉花棉铃的准确跟踪计数,并开发相应的用户软件为棉花育种研究提供技术工具。
本试验于2021、2022年在华中农业大学棉花7号玻璃温室进行,采用温室栽培方法进行盆栽棉花管理,采用肥力均匀一致的土壤,随机选取105份不同基因型盆栽棉花植株作为试验材料。由于棉花叶片的遮挡,使用静态图像检测的方法无法准确获取植株全部棉铃数量,因此采用旋转视频拍摄方式,获得多角度、全方位的图像序列,成像方式如图1所示。将盆栽棉花置于旋转平台上,手机固定在三角支架上保证棉花植株位于手机视野内,为避免背景干扰以及镜面反射影响选用纯色漫反射背景布;旋转平台顺时针方向旋转周期为22~60 s,所得视频单帧图像分辨率为3 000像素×2 000像素,帧率为30 f/s,保存为MP4格式,试验所得视频数量共105个。将拍摄视频按比例8∶2划分为训练集与测试集。
图1 多视角棉花棉铃成像装置Fig.1 Cotton boll imaging device based on multi view
数据集采用开源软件Darklabel进行标注,如图2所示。采用该软件对每一帧图像中的棉铃进行框选,并为前后帧同一棉铃进行ID匹配,标注完毕后得到txt格式文件,后用自主编写的格式转换Python脚本进行相应修改使之符合MOT16数据集格式。
图2 基于Darklabel软件的棉铃跟踪标注Fig.2 Cotton boll labeling and tracking based on Darklabel software
本文提出的棉铃动态跟踪与计数方法如图3所示,研究采用改进的Faster R-CNN目标检测网络、Deep Sort多目标跟踪器和撞线匹配机制为主要架构,实现在旋转视频下对棉铃准确计数。主要流程包括以下步骤:①基于棉花匀速旋转视频,利用改进的Faster R-CNN网络对当前帧里的棉铃进行识别、定位。②基于获取的棉铃位置信息,采用Deep Sort多目标跟踪器,通过卡尔曼滤波预测当前帧中的棉铃在下一帧图像中可能存在的位置,同时目标检测网络对下一帧图像中棉铃进行检测。③应用匈牙利匹配算法将预测信息与目标检测信息进行比较,若成功匹配,则前后帧的匹配物体共用同一ID,如此循环实现棉铃的动态跟踪。此外为解决棉铃计数ID 跳变问题,本文在跟踪器后又设计了撞线匹配机制,匹配后的棉铃自右向左经过图像中轴线时,系统会将此棉铃ID进行记录,同时棉铃数量加1,植株旋转一周后即可实现所有棉铃计数的目的。
图3 棉铃跟踪与计数流程图Fig.3 Flow chart of cotton boll tracking and counting
基于深度学习的目标检测算法根据有无候选框生成可分为单阶段目标检测算法和多阶段目标检测算法两类。单阶段目标检测算法直接对图像进行预测生成结果,检测速度快,但检测精度相对不高,其中代表性的目标检测框架有YOLO[33]和SSD[34]等;多阶段目标检测算法先对图像进行候选框提取,然后基于候选区域做二次修正得到检测结果,检测精度高,但检测速度较慢,其中以Faster R-CNN[35]应用最为广泛。
由于单个棉铃占整个图像尺寸较小,Faster R-CNN对棉铃的识别属于小目标检测,在经过特征提取多次池化后,棉铃的特征信息会显著减弱。因此本文引入特征金字塔网络(Feature pyramid network,FPN)[36],如图4所示,通过对不同特征层尺度变换后进行连接,FPN实现了多层特征信息的融合,为候选框的生成、检测框的分类与回归提供了可能,从而有效提高了Faster R-CNN对小目标识别的精度。
图4 特征金字塔网络结构图Fig.4 Feature pyramid network structure diagram
候选区域选择网络(Region proposal network,RPN)中使用导向锚框(Guided Anchoring)策略生成Anchor[37]。目标检测算法按有无Anchor可分为Anchor-base和Anchor-free两种,Faster R-CNN属于Anchor-base类别,按预先定义的规则共生成9种不同尺寸的Anchor,由于本数据集中棉铃与传统数据集中的标注物体尺寸和分布相差较大,使用预先定义的Anchor并不能将棉铃这种小目标物体很好地框选出来,而Guided Anchoring改变固有的Anchor生成方式,对Anchor位置和形状分别进行预测,同时采用特征调整模块,以生成与目标物体更适应的Anchor大小。
非极大值抑制(Non-maximum suppression,NMS)算法通过计算检测框的交并比(Intersection over union,IoU),设置IoU阈值以去除同一物体的重复检测框。当两个物体距离极近时,传统NMS算法可能会将另一物体的检测框全部去除,造成漏检情况。Soft NMS[38]算法通过线性加权或高斯加权对置信度重置函数进行改进,对于大于IoU阈值的检测框并不直接舍弃,而是降低检测框的分数从而提高检测准确率。本试验棉花旋转过程中会出现棉铃距离很近甚至相互重叠的情况,因此本文在模型推理过程中引入Soft NMS算法以减少棉铃漏检的发生。
本文采用上述3种方法对Faster R-CNN网络结构和推理过程进行优化,特征提取网络(backbone)采用ResNet50,改进Faster R-CNN网络结构如图5所示。在对检测结果进行量化分析时,选用精准率P、召回率R、IoU阈值取0.75时平均精度均值mAP75(Mean average precision)等目标检测网络分类评价指标以及检测速度(Frames per second, FPS)。
图5 改进Faster R-CNN网络结构图Fig.5 Improved Faster R-CNN structure diagram
2016年BEWLEY等[39]提出在线实时多目标跟踪算法——Sort算法。Deep Sort[40]跟踪器是对Sort的改进算法,其在Sort基础上采用级联匹配和基于深度学习的外观提取模型,同时加入马氏距离和余弦距离度量,考虑预测信息和检测信息运动状态和外观形貌的匹配。上述优化方法使Deep Sort进行多目标跟踪时相比Sort目标ID跳变减少45%。本文Deep Sort算法对棉铃的跟踪流程如图6所示,主要分为以下步骤:
图6 基于Deep Sort的棉铃自动跟踪流程图Fig.6 Flow chart of cotton boll tracking based on Deep Sort
(1)目标检测:基于视频第1帧棉铃Faster R-CNN检测结果创建对应初始轨迹(Tracks)并通过卡尔曼滤波(Kalman filter)预测第2帧图像棉铃可能存在的位置,即预测轨迹。
(2)级联匹配:在第2帧图像中,预测轨迹分为确定(Confirmed state, CS)和不确定(Unconfirmed state, US)两种状态,CS被认为是棉铃,US则不确定是否为棉铃;而CS将与第2帧的检测结果进行关联,即考虑CS与检测框运动状态和外观形貌是否匹配,关联方法采用级联匹配,得到第2帧初步的匹配轨迹(Matched tracks)、未匹配轨迹框(Unmatched tracks)和未匹配检测框(Unmatched detections)3种结果;其中匹配轨迹直接进行卡尔曼滤波更新至棉铃轨迹中,未匹配轨迹框和未匹配检测框则代表匹配失败等待后续处理。
(3)交并比匹配:上述未匹配轨迹框和未匹配检测框继续进行关联,方法采用IoU匹配,两者的IoU值越大说明两者越接近,同一棉铃的可能性越大,通过设定IoU阈值继续筛选出匹配轨迹、未匹配轨迹框和未匹配检测框3种结果;其中,匹配轨迹与步骤(2)中相同,通过卡尔曼滤波更新至棉铃轨迹中;进一步筛选后的未匹配轨迹框和未匹配检测框等待后续处理。
(4)未匹配检测框处理:检测框依然匹配失败的原因可能为未匹配检测框内的棉铃是这一帧新出现的目标或是由于长时间遮挡,棉铃再次出现时没有对应的预测轨迹;因此对于未匹配检测框需要重新建立新轨迹,同时对建立的新轨迹进行确认,若是棉铃而非其他物体则同样将新轨迹更新至原棉铃轨迹中。
(5)未匹配轨迹框处理:由于Faster R-CNN漏检会导致未匹配轨迹框情况的发生,需要对未匹配轨迹框进行确认,若非棉铃则进行删除;若是棉铃,则先进行保留,在30帧内如成功与后续帧检测框匹配,则更新至棉铃轨迹中,若未成功匹配则进行删除,重复上述步骤实现视频流多目标跟踪。
Deep Sort跟踪器在外观形貌匹配时引入基于深度学习的特征提取模型,提高了温室场景下棉铃的跟踪精度,同时也可以有效地避免非遮挡情况下ID 跳变的发生,为后续实现撞线特征提取与计数提供了较好的技术支撑。本文在对跟踪结果进行量化分析时选用多目标跟踪精度RMOTA作为评价指标,相关计算公式为
式中mt——整个视频棉铃漏报数量之和
ft——整个视频棉铃误报数量之和
st——ID跳变总次数
gt——视频序列中真实目标数量
t——测试视频数量
由于棉铃在旋转过程中会出现叶片遮挡的情况,同一棉铃在跟踪过程中仍会发生ID 跳变。如图7所示,同一棉铃在第35帧ID为3,在第100帧由于叶片遮挡暂时消失无法跟踪,而在第255帧再次出现时,会被误认为新出现的棉铃,系统错误将其ID匹配为9。故如果以棉铃最后一帧出现的最大ID作为棉铃计数的参考,则计数结果将比棉铃实际数量偏大。为解决ID跳变问题,本文在跟踪器Deep Sort后设计了撞线匹配机制,如图8所示。首先成功跟踪后的棉铃,取识别棉铃矩形框的中心点,中心点在经过图像中轴线右侧掩膜区域时,系统会获取该棉铃ID并计入列表a。然后当后续帧棉铃又经过图像中轴线左侧掩膜区域时,获取该棉铃ID计入列表b并查询列表a中是否含有该ID;若含有,则计数器加1,同时删除两个列表中的ID。考虑到相邻棉铃帧之间存在像素间隔,且棉铃矩形框的中心点也会出现一定范围的波动,同时避免掩膜内ID 跳变的影响,本研究掩膜宽度选用100像素,以保证所有棉铃矩形框的中心点能有效落入掩膜区间。该撞线匹配机制可以有效克服棉铃旋转过程中ID 跳变带来的影响,实现对棉铃的精确计数。
图7 同一棉铃跟踪示例Fig.7 Examples of tracking the same cotton boll
图8 撞线匹配机制掩膜区域Fig.8 Mask area of colliding line and matching mechanism
系统总体代码基于mmtracking平台,Pytorch框架,Python选取3.7版本,在Linux Ubuntu 18.04系统上执行,使用NVIDIA-GPU RTX 2080ti进行模型训练及测试。对计数结果进行量化分析时选用决定系数R2、均方误差(Mean square error,MSE)、平均绝对误差(Mean absolute error,MAE)和平均绝对百分比误差(Mean absolute percentage error,MAPE)评价指标,其中决定系数R2越接近1,MSE、MAE、MAPE越小,说明模型测量精度越高。
取IoU阈值0.75时,通过改变置信度阈值,获得不同置信度阈值下的P、R,绘制精准率-召回率曲线,曲线与x、y轴正方向所围面积即为mAP75,mAP75综合考量P、R,其值越接近1说明模型对棉铃检测效果越好。研究对比Faster R-CNN、RetinaNet、SSD、YOLOF、YOLO v5和改进Faster R-CNN模型,各模型精准率-召回率曲线如图9所示,各模型精准率P、召回率R、F1值、mAP75和FPS如表1所示。结果表明IoU阈值为0.75时,Faster R-CNN、RetinaNet、SSD、YOLO v5、YOLOF和改进Faster R-CNN对应mAP75分别为0.95、0.89、0.92、0.93、0.83和0.97,改进Faster R-CNN mAP75较改进前提升0.02。由于改进Faster R-CNN是在Faster R-CNN基础上进行的改进,因此也属于两阶段目标检测网络,检测时间较YOLO v5略长,Faster R-CNN、RetinaNet、SSD、YOLO v5 、YOLOF 和改进Faster R-CNN各模型检测速度(FPS)分别为20.3、20.9、46.4、21.5、 31.8、15.1 f/s。基于检测的多目标跟踪算法最终效果在很大程度上取决于检测器,检测效果优异的目标检测模型能极大减少最终计数的错误。因此本文通过改进Faster R-CNN目标检测网络提升了对棉铃检测效果,为后续目标跟踪与计数提供了重要技术支撑。
表1 各模型精准率、召回率、F1值、mAP75和FPSTab.1 Precision, recall, F1, mAP75 and FPS of each model
图9 精准率-召回率曲线Fig.9 Precision-recall curves
跟踪模型选用Tracktor、Deep Sort和Sort共3种,与改进Faster R-CNN分别实现棉铃跟踪,跟踪评价结果如表2所示,跟踪的时间序列如图10所示,改进后Faster R-CNN与Deep Sort算法的跟踪效果最优,RMOTA为0.91,较Tracktor和Sort算法分别提高0.02和0.15,跟踪可信度得到大幅提高。但由于目标尺度和遮挡等原因,同一棉铃前后帧匹配ID 极易发生多次跳变,这也是产生跟踪误差的主要原因,单纯使用匹配ID的方法作为棉铃计数的最终结果会产生较大误差。因此本文在Deep Sort跟踪器后设计了一种撞线匹配机制:匹配后的棉铃自右向左经过图像中轴线时,系统会记录此棉铃ID,棉铃数量加1,棉花经旋转一周后最终达到棉铃计数的目的。计数结果如表2所示:改进Faster R-CNN和Deep Sort所得棉铃R2、MSE、MAE和MAPE分别为0.96、1.19、0.81和5.92%,同时改进Faster R-CNN和Deep Sort计数结果与人工统计值差异如图11所示,综合表2和图11可得本文提出的方法对棉铃数量的统计与人工值具有较高的一致性,可以实现对棉铃的准确计数。
表2 跟踪与计数评价指标Tab.2 Evaluation indicators of tracking and counting
图10 棉铃跟踪序列图Fig.10 Tracking sequence diagrams of cotton bolls
图11 棉铃数量人工测量值与算法检测值对比Fig.11 Comparison between manual measurement and algorithm measurement of cotton bolls
基于改进Faster R-CNN、Deep Sort多目标跟踪器、撞线匹配机制设计了一款棉铃自动检测跟踪计数软件,如图12所示。软件所在环境为cudatoolkit 10.1、cython 0.29、matplotlib 3.4.2、mmcv-full 1.3.10、mmdet 2.12.0、mmtrack 0.5.0、numpy 1.20.3、OpenCV 4.1.2、pyqt 5 5.15.6、Python 3.7和Pytorch 1.6.0,“Selectmodel”和“Initialize”控件可选择模型并对网络进行初始化,“Input video”控件用于选择需要检测的棉花视频,检测过程中会在“TrackingResult”控件中显示棉铃识别和追踪的过程,检测结束在右侧输出棉铃数量。该软件集成了所需的环境和库函数,可直接复制应用于其它计算机,避免配置环境等繁琐步骤。
图12 棉铃跟踪软件Fig.12 Software of cotton boll tracking
(1)针对棉铃在检测过程中目标尺寸较小的问题 ,提出一种改进Faster R-CNN算法。采用特征金字塔实现了多层特征信息的融合;结合Guided Anchoring生成与目标物体相适应的Anchor大小,增强了对棉铃等小目标的检测能力;利用 Soft NMS改进了置信度重置函数,对大于IoU阈值的检测框进行保留,可有效提高检测准确率。试验结果表明:改进Faster R-CNN在6种模型中效果最优,mAP75和F1值分别达到0.97和0.96,较改进前的Faster R-CNN分别提升0.02与0.01。
(2)然后针对棉铃多目标跟踪的问题,采用Deep Sort跟踪器通过卡尔曼滤波和匈牙利匹配实现前后帧同一棉铃的对应关联,并进行ID匹配。试验结果表明:改进Faster R-CNN与Deep Sort跟踪结果RMOTA达到0.91,较Tracktor和Sort算法分别提高0.02和0.15。
(3)最后针对叶片遮挡产生的ID跳变问题,本文在Deep Sort跟踪器后设计了撞线匹配机制实现全视频棉铃高精度计数。试验结果表明:改进Faster R-CNN、Deep Sort和撞线匹配算法所得计数结果R2、MSE、MAE和MAPE分别为0.96、1.19、0.81和5.92%,与人工值具有较高一致性。