基于自纠正NMS-ByteTrack 的套袋葡萄估产方法

2023-10-08 07:19张翠萍李帅军
农业工程学报 2023年13期
关键词:估产套袋计数

吕 佳,张翠萍,刘 琴,李帅军

(1.重庆师范大学计算机与信息科学学院,重庆 401331;2.重庆市数字农业服务工程技术研究中心,重庆 401331)

0 引言

葡萄是中国栽培面积最广、产量最多的果实之一,在全国果实生产中占有重要地位[1]。葡萄产业作为中国农业生产的支柱产业,在乡村振兴、精准扶贫工作中发挥重要作用[2]。由于葡萄产量对价格的影响较大,对葡萄的有效估产能为后续的葡萄收获、仓储、运输和加工计划提供有效的指导[3]。传统葡萄估产依靠人工抽样计数,耗时费力且估计结果并不准确[4],而深度学习技术[5-6]在农业领域的应用为葡萄的估产提供了思路。

果实估产的实质是实现果实的自动计数,近年来,深度学习被广泛地应用于果实的自动计数中。BHATTARAI等[7]提出一种基于深度学习的自动计数网络(CountNet),应用在商业果园计数中,取得了较好的计数性能。但他是基于单张静态图片进行计数,对于葡萄等大型果树,单张图片并不能包含一棵果树的所有果实,导致无法实现完整的果实计数[8],而通过视频对果实计数可以有效解决这一问题。视频果实计数主要分为果实检测和果实追踪两个阶段,其中果实的准确检测是实现视频果实计数的前提。目前主流的目标检测方法分为两类:单阶段目标检测方法和两阶段目标检测方法,其中单阶段目标检测方法推理速度更快[9],两阶段目标检测方法检测精度更高。为了实现实时检测计数,以YOLO 系列为代表的单阶段目标检测方法在果实检测领域得到了广泛应用[10-12],果实检测为后续果实的追踪计数提供了基础,而实现精准果实计数的难点在于果实追踪。

目标追踪[13-15]根据初始帧中追踪目标的位置对后续帧中目标进行追踪定位,从而使视频中相同目标关联起来,其中基于卡尔曼滤波器(kalman filter,KF)[16]的追踪方法在果实追踪领域应用广泛。GAN 等[17]使用扩展KF集成出自主导航系统定位追踪柑橘类果实,但追踪成本昂贵。为降低成本,WANG 等[18]结合KF 和匈牙利算法对芒果追踪计数,降低了追踪成本和复杂性,但存在遮挡芒果重复计数的问题。为减少果实的重复计数,高芳芳等[19]提出改进的匈牙利算法,保留对苹果追踪过程中因遮挡而消失的追踪框,并进行重新匹配,提高了苹果计数精度,而对于叶片较大或茂密的果树,叶片遮挡果实可能导致追踪目标丢失。为解决此问题,ZHANG 等[20]在简单在线实时追踪(simple online and real-time tracking,SORT)[21]的基础上提出OrangeSort,对田间柑橘计数,降低了叶片遮挡对柑橘计数结果准确性的影响,但该方法忽略了目标的外观特征。GE 等[22]提出改进的YOLODeepsort 对番茄追踪计数,该方法利用DeepSORT[23]中的外观特征提取网络进行关联匹配,满足了对番茄产量预测的实际需求。由于上述方法都是在设定场景下提出的目标追踪解决方案,对于真实场景下葡萄的追踪计数并不适用。针对葡萄的追踪计数主要存在以下3 个问题:

1)实际场景中,套袋后的葡萄因体积增大易发生重叠遮挡,导致部分套袋葡萄在检测阶段被过滤,后续追踪结果不准确。

2)搭载相机的遥控小车通常以匀速拍摄果树视频,而人工拍摄视频的速度不稳定,导致视频中追踪的套袋葡萄目标丢失,进而影响计数的准确性。

3)真实果园中,葡萄叶片较大且套袋后的葡萄相互遮挡,在追踪过程中果实被遮挡可能导致追踪目标丢失、身份标识转变,因此对视频中的果实逐个赋予ID(从1开始)实现果实计数的方法[24]并不适用。

为解决上述问题,本文提出一种基于自纠正NMSByteTrack 的套袋葡萄估产方法。首先,将非极大值抑制(non-maximum suppression,NMS)[25]操作从检测阶段后置到追踪阶段,规避套袋葡萄在检测时因遮挡而被过滤的现象,以解决上述问题1);其次,利用相机运动补偿和改进的KF 算法,通过前后帧背景信息生成的仿射变换矩阵对KF 生成的预测框进行自动纠正,以解决上述问题2);最后,提出一种划线计数策略,通过撞线对追踪目标进行计数,以解决上述问题3)。

1 数据采集与预处理

1.1 数据采集

为使试验数据集具有实际参考价值,本文将真实果园拍摄的套袋葡萄图片和视频作为试验数据集。该数据集来源于重庆璧山区派登特农业科技示范园,其经度、纬度和高度分别为106.221°、29.753°与353m[26]。为拍摄不同时间段、不同角度下的套袋葡萄,研究人员使用红米K40 和OPPO Reno6pro+的手机摄像头对同一个套袋葡萄分别在8:00、12:00、18:00 进行正拍、侧拍和俯拍等不同角度拍摄,总拍摄时长约6 h,拍摄高度距地面约1.5 m,拍摄路线为逐行拍摄,共获取套袋葡萄图片500 张,分辨率有4 000× 3 000 像素和4 096× 3 072 像素两种。采集套袋葡萄有效视频数据集6 个,每个视频平均时长约20 s,视频速度为非匀速,视频格式为MP4,分辨率为1 920× 1 080 像素,视频帧率为30 帧/s。

1.2 数据增强

原始的500 张套袋葡萄图片是经过数据筛选后的实际拍摄图片。为提高模型的泛化性,通过对原始图片进行饱和度、亮度增强、亮度变暗和镜像等操作,如图1所示,以满足套袋葡萄在不同光照条件下的生长状态和不同角度下的分布状态。

图1 图片增强方法Fig.1 Image augmentation methods

通过以上操作,将原始的500 张套袋葡萄图片扩展为2 000 张,并将2 000 张图片按照8∶2 的比例随机划分成训练集和验证集,6 个有效视频作为测试集。

1.3 数据标记

数据增强后,本文对套袋葡萄的2 000 张图片进行标注,标注软件为MAKE SENSE,通过在线对套袋葡萄绘制矩形框,使矩形框完全包含整个套袋葡萄,生成该目标矩形框位置信息的txt 文件。用于测试试验的6 个视频使用DarkLabel 软件进行标注,如图2 所示。通过逐帧绘制每个套袋葡萄从出现到消失过程中的最小矩形框,生成目标位置信息的txt 文件。

图2 视频标注软件Fig.2 Video annotation software

2 套袋葡萄视频追踪计数方法

YOLO 系列目标检测方法中,YOLOv5s 是一种高性能、高精度、易于扩展和部署的目标检测模型,具有更快的速度和更高的可扩展性[27]。在保证目标检测精度的前提下,为利于实现果实的实时检测,本文选择YOLOv5s 作为套袋葡萄的检测方法。

2022 年,ZHANG 等[28]在SORT 的基础上首次提出了在线追踪双关联方法ByteTrack。该方法对低置信度的检测框进行二次关联,保证实时性的同时,进一步提升了目标追踪性能,因此本文将ByteTrack 作为对套袋葡萄追踪的基础方法。

为降低套袋葡萄被遮挡的影响,并减少因相机姿势变化而产生的误差,本文提出一种基于自纠正NMSByteTrack 的追踪方法解决上述问题。同时提出一种划线计数策略,实现对套袋葡萄更精准地计数估产。

2.1 基于自纠正NMS-ByteTrack 的套袋葡萄估产方法

在套袋葡萄的计数研究中,葡萄经过套袋后体积变大,使得部分套袋葡萄重叠遮挡,在YOLOv5s 中直接进行NMS 操作可能导致重叠遮挡的套袋葡萄检测框被过滤。为解决该问题,本文将检测阶段的NMS 操作后置到追踪阶段,并提出基于NMS-ByteTrack 的算法。为使套袋葡萄追踪计数具有便捷性和实时性,大多数果农并不会使用机器小车拍摄,更多采用手机拍摄,而人工拍摄的视频通常是非匀速的,使得套袋葡萄的产量估计不准确。因此本文在上述基础上加入相机运动补偿和改进的KF 算法,以自动纠正视频中非线性运动的不足。估产方法的整体流程如图3 所示。

图3 基于自纠正NMS-ByteTrack 的套袋葡萄估产方法整体流程图Fig.3 Overall flowchart of bagged grape yield estimation method based on self-correcting NMS-ByteTrack

2.1.1 基于NMS-ByteTrack 的算法

NMS 是一种去除非极大值的算法,常用于计算机视觉中的边缘检测、目标检测和行人检测等,其作用是去除检测任务中重复的检测框。目前大多数多目标追踪方法中,NMS 用于检测阶段,而非追踪阶段。NMS 操作可以过滤一些低置信度检测框或冗余检测框,并获得一些高分检测结果,而在检测阶段使用NMS 操作可能会导致可用于追踪的候选框被过滤,致使追踪结果不准确。因此,本文提出一种基于NMS-ByteTrack 的算法,将NMS 操作后置到追踪阶段,使结果更专注于追踪任务,有效地为追踪保留更多的候选框。

其次,若交并比大于给定阈值θ,则该检测框被保留,计算过程如式(2)所示。

2.1.2 相机运动补偿

相机运动是指相机旋转、缩放和平移等姿势的变化。由于人工拍摄过程中相机不经意的移动,导致视频中同一个套袋葡萄的背景信息不断改变,干扰了对套袋葡萄的追踪计数。为减少追踪过程中相机运动产生的误差,本文使用一种传统的全局运动补偿(global motion compensation,GMC)图像配准技术[29],其本质是关联相邻帧的同一套袋葡萄,根据相邻帧的背景运动生成仿射矩阵,从而将套袋葡萄的位置信息从上一帧的坐标系转换到当前帧的坐标系中。该技术首先提取上一帧和当前帧的套袋葡萄图片中除追踪目标外的背景关键点,利用稀疏光流[30]对提取的套袋葡萄背景关键点进行匹配;其次使用RANSAC[31]计算得到背景运动的仿射变换矩阵,利用KF 预测出当前帧的套袋葡萄预测框;最后获取的仿射变换矩阵将该预测框从上一帧的坐标系中变换到当前帧的坐标系,实现对当前帧预测框的位置信息矫正,具体流程如图4 所示。

图4 相机运动补偿流程Fig.4 Camera motion compensation flowchart

At|t-1∈R2×3代表从第t-1 帧到第t帧的坐标变换仿射矩阵,如式(3)所示。其中M∈R2×2代表坐标系缩放和旋转部分变换矩阵,T∈R2×1代表坐标系平移部分变换矩阵,分别如式(4)和式(5)所示,更新矫正KF 预测框如式(6)和式(7)所示。

2.1.3 改进的KF 算法

KF 是一种利用线性系统状态方程对系统状态进行最优估计的算法[16]。通过对追踪目标位置进行预测,再与对应追踪目标的观测位置数据融合,从而得到目标最优位置估计。本文使用KF 线性匀速模型对套袋葡萄的追踪框进行最优估计。KF 主要分为预测和更新两个阶段,通过上一帧的套袋葡萄追踪框对当前帧的套袋葡萄追踪框进行预测,得到当前帧套袋葡萄的追踪预测框,同时,利用检测方法YOLOv5s 检测出当前帧套袋葡萄的检测框,与当前帧的追踪预测框进行数据融合更新,得到当前帧该套袋葡萄的最优估计追踪框。

目前主流的追踪方法[32-34]使用的KF 状态向量为,其中x、y分别代表估计框的中心点横纵坐标,a表示宽高比,h表示高度,vx、vy、va和vh分别代表前面4 个变量的变化速度。为了正确预测出套袋葡萄的位置信息,本文提出改进的KF 算法,将之前KF 状态向量的宽高比a更改为宽度w,得到KF 状态向量为。通过消融试验结果证明,直接使用宽度去最优估计套袋葡萄追踪框的效果更好。

2.2 划线计数策略

实际拍摄套袋葡萄过程中,观察到葡萄的叶片表面积很大,易遮挡套袋葡萄,在目标追踪过程中可能导致同一个套袋葡萄的身份标识发生转变,易重复计数。因此本文提出一种划线计数策略,对套袋葡萄进行自动计数,提高计数的准确性,如图5 所示。为准确估计视频中套袋葡萄的个数,避免在视频追踪过程中套袋葡萄还未到划线处,追踪目标就消失于视频屏幕之外。本文将计数线设置到视频屏幕的中间,并在拍摄的每个视频前几秒预留出无套袋葡萄的空闲帧,在计数过程中,具有同一ID 的套袋葡萄只能计数一次,避免套袋葡萄重复撞线计数的情况。通过套袋葡萄的追踪框中心点与计数线成功碰撞,实现对套袋葡萄的自动计数。

图5 套袋葡萄的追踪计数线Fig.5 Tracking and counting line for bagged grape

2.3 试验环境与评价指标

2.3.1 试验环境

平台配备有CPU 为Intel Core i5-12400F,内存为16 GB,显卡型号为RTX3060-12GB,计算机系统为Windows11 专业版,开发环境为PyCharm2021,所用语言为Python3.7,所用框架为Pytorch1.12.0。

为了实时检测套袋葡萄,本文将2 000 张图片放入到YOLOv5s 中训练得到最优权重。其中YOLOv5s 模型训练设置的最优超参数为:训练轮次设置为600,批量大小为36,优化器为SGD,初始学习率为0.01,同时采用余弦退火策略辅助学习率下降,学习率动量为0.937,权重衰减系数为0.000 5。训练总损失函数(Ltotal)由定位损失(Lbox_loss)、置信度损失(Lobj_loss)和分类损失(Lcls_loss)构成,如式(8)所示。

式中 λ1,λ2和 λ3是权重因子,均为YOLOv5s 默认参数设置。

2.3.2 评价指标

在果实检测中,本文使用精度(precision)、召回率(recall rate)和平均精度(average precision,AP)作为对套袋葡萄检测效果的评价指标[10]。精度、召回率和平均精度的值越大,说明目标检测方法的检测性能越好。

在果实追踪中,本文使用多目标追踪准确率(multiple object tracking accuracy,MOTA)、多目标追踪精度(multiple object tracking precision,MOTP)、ID 调和平均数(identification F1-score,IDF1)和ID 变换次数(ID switch,IDSW)作为对套袋葡萄追踪效果的评价指标[19]。多目标追踪准确率、多目标追踪精度和ID 调和平均数的值越大,ID 变换次数越小,说明套袋葡萄的追踪性能越好。

在果实计数中,本文采用平均计数精度(average counting precision,Acp)作为对套袋葡萄计数效果的评价指标[19]。平均计数精度越大,说明套袋葡萄的计数性能越准确。具体计算如式(9)所示:

式中S表示估产方法计数视频的果实个数,G表示人工计数视频的果实个数,n表示视频的个数。

3 结果与分析

3.1 果实检测性能

3.1.1 不同检测方法的对比试验

为验证检测方法YOLOv5s 在套袋葡萄数据集上的准确性,本文将YOLOv5s 与YOLOX-s[35]、YOLOv7[36]进行了对比试验,如表1 所示。

表1 不同目标检测方法在套袋葡萄数据集上的试验结果Table 1 Test results of several different object detection methods on bagged grape dataset %

试验结果表明,YOLOv5s 的精度、召回率和平均精度分别为97.6%、96.2%和97.6%,比YOLOX-s 的精度、召回率和平均精度分别提高了2.8、3.1 和7.6 个百分点,YOLOv5s 相比YOLOv7 的精度和平均精度分别提高了0.5 和0.4 个百分点。证明了YOLOv5s 在套袋葡萄数据集上检测性能的优越性。试验结果分析可知,YOLOX-s和YOLOv7 对套袋葡萄的检测效果不理想主要有以下3个原因:1)YOLOX-s 和YOLOv7 将背景噪声检测为套袋葡萄目标,如图6a 所示;2)两个目标相互重叠遮挡,被遮挡的套袋葡萄目标在YOLOX-s 和YOLOv7 中检测不到,如图6b 所示;3)由于叶片的遮挡,导致YOLOX-s和YOLOv7 检测不出被遮挡的套袋葡萄,如图6c 所示。以上问题都在不同程度上降低了YOLOX-s 和YOLOv7检测套袋葡萄的精度,因其检测精度较高而对套袋葡萄等大目标的检测效果不理想。

图6 套袋葡萄不同检测方法的效果对比Fig.6 Effect comparison of different detection methods for bagged grape

3.1.2 YOLOv5s 的收敛性分析

为了验证套袋葡萄数据集在YOLOv5s 上训练的收敛性,本文在图7 中展示了YOLOv5s 在训练过程中的损失和检测指标变化趋势图,其中横坐标代表训练轮次,纵坐标代表损失值或检测指标值。由图可知,训练400轮次后,模型的训练损失和验证损失都逐渐达到收敛状态,精度、召回率和平均精度都趋于稳定。

图7 训练损失和检测指标变化趋势Fig.7 Trend chart of training loss and detection metrics

3.2 果实追踪性能

3.2.1 不同追踪方法的对比试验

为证明基于自纠正NMS-ByteTrack 的套袋葡萄追踪方法有效性,本文与5 种追踪方法进行了对比试验,如表2 所示。试验结果表明,基于自纠正NMS-ByteTrack的追踪效果相比其他方法更好。其原因是DeepSORT[23]、MOTDT[37]和StrongSORT[32]都只保留了高置信度检测框用于后续追踪,容易过滤因遮挡而置信度变低的套袋葡萄检测框,降低了目标的追踪性能。ByteTrack[28]和Bot-SORT[29]虽弥补了上述的不足,但算法过于依赖检测结果的质量,检测阶段的NMS 操作可能会导致可用于追踪的检测框被过滤,致使追踪结果不准确。因此,本文提出的方法能够有效地追踪套袋葡萄,减少了误检和漏检。

表2 不同目标追踪方法在套袋葡萄数据集上的试验结果Table 2 Test results of several different object tracking methods on bagged grape dataset

3.2.2 数据集扩展前后检测性能对比

为了评估数据集扩展对检测模型的有效性,本文选取500 张原始套袋葡萄图片和2 000 张扩展后图片进行对比试验,试验结果如表3 所示。结果表明,扩展后数据集的检测精度相比原始数据集的精度、召回率和平均精度分别提高了3.3、7.8 和2.6 个百分点,证明了数据集扩展的必要性。

3.2.3 基于ByteTrack 追踪方法的消融试验

为了验证不同改进点对提高套袋葡萄追踪性能的有效性,本文在ByteTrack 的基础上进行消融试验,如表4所示。通过将KF 中预测目标框位置的宽高比直接改为预测目标框的宽度,减少宽高比产生的误差。试验结果表明,改进KF 的ByteTrack 追踪方法相比改进前的多目标追踪准确率提高了0.8 个百分点、多目标追踪精度提高了0.8 个百分点、ID 调和平均数提高了0.7 个百分点和ID 变换次数减少1 次。

表4 基于ByteTrack 追踪方法在套袋葡萄数据集上的消融试验结果Table 4 Ablation test results based on ByteTrack tracking method on bagged grape dataset

为降低拍摄视频时相机非线性运动的影响,本文引入相机运动补偿以弥补相机不规则运动的缺陷,自动纠正KF 预测的目标框位置,提升检测框和预测框的成功关联匹配能力。试验结果表明,加入相机运动补偿后相比改进KF 的ByteTrack 追踪方法的多目标追踪准确率提高了0.6 个百分点、多目标追踪精度提高了0.2 个百分点、ID 调和平均数提高了1.9 个百分点和ID 变换次数减少1 次。

为使套袋葡萄计数更关注于追踪阶段,本文将检测阶段中的NMS 筛选框功能后置到追踪阶段进行,避免套袋葡萄重叠遮挡后,其检测框在检测阶段被过滤的情况,提升目标追踪性能。因此本文在上述基础上,提出基于自纠正NMS-ByteTrack 的追踪方法。试验结果表明,基于自纠正NMS-ByteTrack 的追踪方法在多目标追踪准确率和ID 调和平均数分别为64.6%和80.8%,比加入相机运动补偿和改进KF 的ByteTrack 追踪方法的多目标追踪准确率提高了0.3 个百分点、ID 调和平均数提高了1.5 个百分点和ID 变换次数减少1 次。

综上,基于自纠正NMS-ByteTrack 的追踪方法相比基础方法ByteTrack 在多目标追踪准确率、多目标追踪精度和ID 调和平均数分别提高了1.7 个百分点、1.0 个百分点和4.1 个百分点,ID 变换次数减少3 次,证明了本文方法对提高套袋葡萄追踪性能的有效性。

3.3 果实计数精度比较

为准确估计视频中套袋葡萄的个数,实现对套袋葡萄的计数估产,本文提出一种划线计数策略对视频中的套袋葡萄进行计数,并在人工拍摄的6 个套袋葡萄视频数据集上试验,通过基于自纠正NMS-ByteTrack 估产方法得到的套袋葡萄个数与人工估计套袋葡萄的个数进行对比,如表5 所示。试验结果表明,利用基于自纠正NMS-ByteTrack 估产方法估计的套袋葡萄个数与人工估计套袋葡萄的个数接近,并计算出他们的平均计数精度为82.8%,证明了该划线计数策略在套袋葡萄自动计数上的适用性。

4 结论

本文提出基于自纠正NMS-ByteTrack 的套袋葡萄估产方法,分别对套袋葡萄在果实检测、果实追踪和果实计数3 个方面进行试验并得出以下结论:

1)在套袋葡萄检测方面,本文使用YOLOv5s 分别与YOLOX-s 和YOLOv7 进行了对比试验。结果表明,YOLOv5s 在精度和平均精度上都比YOLOX-s 和YOLOv7 高,试验分析可知是由于背景噪声、目标重叠和叶片遮挡等原因,降低了套袋葡萄的检测精度,进而影响了目标追踪性能,因此YOLOv5s 更适用于检测套袋葡萄目标。

2)在套袋葡萄追踪方面,本文方法与其他追踪方法进行了对比。结果表明,基于自纠正NMS-ByteTrack 追踪方法的追踪性能都优于其他方法,有效解决了套袋葡萄在真实场景下的问题。同时,消融试验结果表明,本文方法相比改进前多目标追踪准确率、多目标追踪精度和ID 调和平均数分别提高了1.7、1.0 和4.1 个百分点,ID 变换次数减少3 次,证明了该方法在套袋葡萄追踪计数上的有效性。

3)在套袋葡萄计数方面,本文提出一种划线计数策略对套袋葡萄计数。结果表明,通过该策略估计视频中套袋葡萄的个数与人工计数结果接近,且平均计数精度为82.8%,证明了该划线计数策略在套袋葡萄自动计数上具有较强的适用性,其试验结果可以为套袋葡萄的实际估产提供参考。

猜你喜欢
估产套袋计数
乐昌柰李“炼金术” 套袋果身价十倍
古人计数
基于无人机多光谱遥感数据的烟草植被指数估产模型研究
递归计数的六种方式
遥感技术在大豆种植情况监测中的应用
古代的计数方法
盛花后45天套袋对苹果品质和防御病害最有利
这样“计数”不恼人
套袋
基于地级市的区域水稻遥感估产与空间化研究