时间:2024-05-24
叶 进 吴梦岚 邱文杰 杨 娟 兰 伟
(1.广西大学计算机与电子信息学院, 南宁 530004; 2.广西大学农学院, 南宁 530004)
荔枝广泛种植在世界各地的亚热带地区,内含的生物活性化合物和矿物质使其具有非常高的营养价值[1]。据国家荔枝工业技术体系估计,中国大陆荔枝产量近年来保持相对不变,约占世界荔枝生产面积的52.60%;2020年中国大陆荔枝产量约为3.02×109t,比2019年增长54.82%,占全球荔枝产量的近61.34%[2]。在果实产量预测中,开花强度(即果园内的花数)指导修剪过程,将直接影响果实产量和质量[3],因此荔枝花的检测对荔枝产量预测非常重要。
早期许多学者使用传统的图像处理方法对花朵的识别和检测进行了研究。NILSBACK等[4]提出了一种通过RGB图像自动分割花的算法。在这之后, CHAI等[5]提出了一种双层共分割的图像分类方法,通过将图像分割为前景和背景来提高分类性能。
由于农作物通常具有杂乱的背景,传统的图像处理方法对农业场景中花朵的检测效果较差。而荔枝花稠密聚集,在繁花期间花朵粘连成簇,密集花朵容易相互遮挡,这使得荔枝花的检测比传统的花朵检测更具挑战性[6]。对于存在遮挡的作物检测,近年来的研究方法分为基于特征的手工方法和基于CNN的方法。
常见的特征提取方法包括加速鲁棒特征(Speeded-up robust features, SURF)[7]、基于可变形部分的模型(Deformable part-based model, DPM)[8]、标度不变特征变换(Scales-invariant feature transformation, SIFT)[9]、定向梯度直方图(Histogram of oriented gradient, HOG)[10]和Haar-Like特征[11]。上述特征提取方法通常用于密度较低的图像[12]。在许多应用中,使用深度学习提取的特征比手工制作的特征更快、更有效[13]。
基于CNN的单级检测器可以有效地考虑分布在图像上的数十万个可能的对象位置,并在一个统一的网络中对其进行分类,YOLO[14]、RetinaNet[15]和EfficientDet[16]就是很好的例子。相比之下,两阶段探测器的第1阶段是从均匀分布的可能的位置过滤一组较小的候选对象,然后在第2阶段分类和细化,如Faster R-CNN[17]和Mask R-CNN[18]。然而,这些方法忽略了在遮挡中检测失败的根本原因:在非极大抑制(Non-maximum suppression,NMS)过程中,相互遮挡的对象的建议框很密集,它们会相互影响,超过交并比(Intersection over union,IoU)阈值的建议框会被过滤掉,导致检测遗漏。
为了解决由遮挡引起的荔枝花漏检问题,提高对密集荔枝花检测的准确率,本研究提出调整建议框和预测框位置的polyphyletic损失函数。polyphyletic损失迫使预测框紧密地接近和定位相应的物体,并训练一个可能对周围目标的排斥非常有利的最优检测器。为实现聚合能力和排斥能力,本文引入一种聚集损失和排斥损失。将该方法在自建的荔枝花数据集上与其他方法进行比较,验证该方法良好的检测性能。同时,在自建荔枝花数据集上与其他方法进行比较,并对苹果花数据集进行实验,验证该方法的有效性和实用性。
本研究使用两种不同的数据集进行实验,一种是自建的荔枝花数据集,即本文所研究的对象,第2种是标准的苹果花数据集,用于本研究方法的通用性证明。荔枝花的自建图像采集于广西大学农学院试验田(22°50′28.41″N,108°17′9.00″E)。这些图像拍摄于晴天中午,使用移动设备获得1 039幅图像。由于荔枝花小而致密,将图像分割成9×9个部分。经过筛选,共有2 600幅图像,包括荔枝花粘附、不同大小、不同无序角度、不同遮挡的情况。图像尺寸为997像素×997像素。选择2 600幅图像中的520幅作为测试集,并将其余的2 080幅图像作为训练集。手动进行图像矩形注释,并保存在“xml”文件中。图1显示了荔枝花数据集的示例。
图1 自建的荔枝花数据集
多种果花标准数据集[19]包括4部分:苹果A、苹果B、桃子和梨。本文利用苹果A进行实验。这些数据是在美国农业部的果园内收集,图像中的苹果树由乔树支撑,并成排种植。
这些图像通过手持相机获得,共147幅图像。从这个总数中,随机选择100幅图像来构建一个CNN的训练集。平均而言,花只占这个数据集中总图像面积的25%,故将图像进行16×16分割处理,分割后图像尺寸为389像素×389像素,如图2所示。
图2 苹果花数据分割效果
深度学习训练需要大量的数据来提高检测精度,防止模型训练过度拟合和不收敛。而且由于条件不同,人工采集的数据量通常不足,因此有必要增强数据集。本文采用几何变换的数据增强方法,包括随机旋转、水平翻转和垂直翻转。随机旋转是将图像随机在0°~360°间旋转,本研究选择将图像分别旋转90°、180°和270°。水平翻转是指沿着图像的垂直中心线左右翻转图像。垂直翻转是指沿着图像的水平中心线上下翻转图像。
图像特征作为一种可以在图像上识别的属性,一般分为形状特征、颜色特征和纹理特征3种。而特征提取就是通过分析处理图像内容中蕴含的信息来达到图像标识与分类的目的,此外特征提取的结果还会直接影响到图像处理效果[20]。由于花朵图像特征复杂,常需先检测原图像中花朵轮廓,然后提取特征点。
在对数据集中花朵图像使用改进Sobel算子检测边缘之后,应用于SIFT算法特征提取中,即使用SIFT算法描述花朵图像的形状特征。尺度空间概念定义函数为
T(x,y,ρ)=S(x,y,ρ)I(x,y)
(1)
(2)
式中x——横坐标y——纵坐标
ρ——标准差
T(x,y,ρ)——尺度空间变换函数
I(x,y)——原图中像素坐标
S——高斯函数
通过将不同尺度高斯差分与图像卷积获得高斯差分算子,能够在尺度空间内有效地检测出关键点。具体函数公式为
D(x,y,ρ)=(S(x,y,kρ)-S(x,y,ρ))I(x,y)=T(x,y,kρ)-T(x,y,ρ)
(3)
式中k——常数D——高斯差分算子
关键点定位就是剔除低对比度、边缘等关键点,准确地定位关键点位置、尺度等信息,增强匹配精度。实验表明,当像素灰度范围为0~1时,可舍弃0.04以下的极值点,从而去除了相对不稳定极值点。根据像素在关键点区域内梯度方向的分布特征,可对花朵图像上的特征关键点规定方向参数(位置、尺度、方向),从而使关键点具备平移、缩放及旋转不变性。经过方向分配后,特征描述子可以更加精确地描述该图像中花的形状特征,可以更加完美地提取花的整体轮廓形状。
为了提高预测框生成质量和检测精度,本研究提出polyphyletic损失函数,将聚合项和排斥项添加到经典的损失函数中[17],polyphyletic损失函数定义为
L=LCls+αLReg+βLCom+γLSegGT+δLSegBox
(4)
其中
式中LCls——经典分类损失
LReg、LCom——聚合项中的回归项和紧凑项,作用为使预测框和建议框接近真实框
LSegGT、LSegBox——排斥项,使预测框远离周围的真实框和预测其他目标的预测框
yi——第i个预测框是否包含一个目标,取0或1
Yi——预测概率
n——预测总数
α、β、γ、δ——权重
图3为polyphyletic损失值计算的2部分:用于将预测框回归到真实框的聚合项,以及用于使预测框远离周围目标真实框和预测框的排斥项。
图3 polyphyletic损失值计算图
设F=(xF,yF,wF,hF)、P=(xP,yP,wP,hP)和G=(xG,yG,wG,hG)为预测框、建议框和真实框,w和h分别为宽度和高度。F+={F1,F2,…,Fn}表示所有正样本预测框的集合(交并比(IoU)大于0.5的预测框),Pi表示第i个预测目标的所有建议框的集合,其中i=1,2,…,n。G+={G1,G2,…,Gn}表示所有真实框的集合。
2.1.1聚合项
为了减小预测框与真实框之间的距离,常用的方法是欧几里得距离[21]、SmoothL1距离[22]或IoU损失[23]。
SmoothL1距离是计算预测框和真实框之间的曼哈顿距离,不够精确,不足以计算两点之间的真实距离,而当预测框的面积远大于真实框的面积时,预测框的变化引起的IoU损失变化不大,预测框与真实框的重叠度不够准确,因此采用欧氏距离来计算回归损失值。回归项的定义为
(5)
(6)
式中Fi——计算回归损失的预测框
G——真实框
(7)
式中 |Pi|——预测第i个目标的所有建议框总数
|F+|——所有预测目标数量
该函数项计算了图像中每个目标的建议框的平均预测与相应的真实框之间的差值,并描述了建议框与真实框的紧密性。α和β是平衡LReg和LCom项的超参数。
2.1.2排斥项
当检测有遮挡的密集对象,预测框轻微或显著地移动到相邻的非目标真实对象或结合多个重叠的真实对象时,通常会出现密集检测误差。此外,密集检测误差通常具有相对较高的置信度,导致最高级别的假阳性,如图4所示。这表明,为了提高检测器对密集荔枝花检测的鲁棒性,边界框回归需要更多的损失识别。绿色框是正确的预测边界框,而红色框是由于遮挡引起的假阳性。检测器输出的置信度分数也被附加在图像中。当预测框靠近相邻的荔枝花目标或多个荔枝花目标重叠度较高时,通常只会检测为一个荔枝花目标。
图4 密集荔枝花错误检测的可视化示例
(8)
式中F——预测框
为了避免并集远大于交集的情况,本文选择真实框交集(IoG),计算公式为
(9)
式中IoG(F,G)——预测框与真实框重叠度占比
area——面积函数
(10)
其中
(11)
式中 Smoothlnz——光滑ln函数,在(0,1)中连续可微
σ——平滑参数,用于调整排斥损失对异常值的敏感性,σ∈[0,1)
预测框与非目标真实框重叠越多,边界框回归器添加的惩罚就越多,LSegGT损失可以有效地阻止预测的边界框转移到非目标的邻近目标。
最后一个LSegBox损失项通过排除具有不同指定目标的额外预测框来降低检测器对非极大抑制的灵敏度。F+被分成|G+|个不相交的子集,F+=F1∩F2∩…∩F|G+|。对于从两个不同的子集随机抽样的两个方案Fi∈F+{Fj}和Fj∈F+Fi},期望预测框Fi和Fj的重叠应该尽可能的小,其中i,j=1,2,…,|G+|,且i≠j。因此,LSegBox损失项函数表示为
(12)
其中,ε为一个小常数,以避免分母为0时的误差,当IoU(Fi,Fj)>0时,II为恒等函数。从式(12)可以看出,两个具有不同指定目标的预测框之间的IoU面积非常小才能最小化LSegBox。这意味着在非极大抑制之后,LSegBox可能会降低具有单独回归目标的预测边界框合并成一个框的可能性,使检测器对密集和遮挡的情况更具有鲁棒性。γ和δ是平衡LSegGT和LSegBox项的超参数。
使用文献[17]经典方法来测试不同遮挡程度的检测效果,包括无遮挡、轻微遮挡和严重遮挡。从图5 可以看出,遮挡程度越大,遗漏检测的比例越大。
图5 不同遮挡程度数据集的假阳性数和假阴性数
通过降低IoU阈值(从0.7减少到0.5)来减少遗漏检测的数量,导致遗漏检测的比例更大(从60.7%增加到67.3%)。这是因为在非极大抑制过程中,由于作物的密集分布,通过训练产生的候选框也非常密集。只调整IoU的阈值并不能产生较高可信度的预测框。为了减少遮挡引起的漏检,需要调整建议框的位置。本文提出的polyphyletic损失就是为此目的而设计。
本文实验硬件环境为:Inteli9-10900x(3.20 GHz)10核20线程CPU,NVIDIA GeForceRTX2080Ti11GB×2。实验软件环境为Windows 10系统,CUDA版本为10.1,cuDNN版本为7.0、pycharm版本为2018.2。实验框架的前端和后端分别为Keras和Pytorch。
选择缺失率(Miss rate, MR)、召回率(Recall)、精确率(Precision)、F1值和平均精度均值(mAP)作为评价指标。精确率为5次重复实验中精度最高的取值,平均精度均值为5次重复实验的平均精度。
使用本文制作的荔枝花数据集对Faster R-CNN[17]、Focus Loss[25]、AdaptiveNMS[26]和Mask R-CNN[18]进行训练,得到最优模型之后,分别设置不同的IoU值在测试集上进行测试,5种方法的缺失率、召回率、F1值、精确率和平均准确率如表1所示。
表1 不同研究方法的检测结果
使用ResNet50作为主干网络,Faster R-CNN作为基准在检测密集遮挡物上性能较差,识别精度仅为60%~70%。Focus Loss在Faster R-CNN的基础上进行损失函数的改进,降低正样本在损失中的权重,增加对错误案例的惩罚,提升了对遮挡物的检测精度,在本研究的自建荔枝花数据集中mAP达到73.84%。AdaptiveNMS提出了密度预测模块,自适应的调整非极大抑制时的阈值,使得待检测物体重叠时尽可能保留正确的预测框,数据集上的mAP达到79.59%。Mask R-CNN在Faster R-CNN的基础上添加了一个预测分割mask的分支,将RoI Pooling 层替换成了RoIAlign层,并添加了并列的FCN层(mask层),在荔枝花数据集上的mAP达到83.08%,分别比Faster R-CNN和Focus Loss提高15.23、9.24个百分点,在其他方法中的准确率最高。而本文方法的识别mAP为87.94%,比Mask R-CNN 高约4个百分点,召回率也提高了约9个百分点,证明了本文方法在检测密集遮挡目标方面的有效性。同时将Faster R-CNN作为基准,直观地比较了本文方法和Mask R-CNN的检测结果,如图6所示。
图6 不同方法在荔枝花数据集上的检测结果
将本文方法与其他方法分别在苹果花数据集和荔枝花数据集上进行比较。由于苹果花数据集中的苹果花是整个苹果树的图像,苹果花与苹果花之间的分布较荔枝花相对稀疏;可以认为苹果花数据集是一般遮挡的对象,而荔枝花数据集是严重遮挡的对象。在IoU为0.5的条件下,以平均每幅图像中的假阳性数量为横轴,缺失率为纵轴,结果如图7所示。从实验结果可以看出,本文方法在两个数据集上都表现出了良好的性能。在密集的荔枝花数据集上,本文方法的缺失率为2.36%,这优于另外4种方法。本文方法在苹果花数据集上与Mask R-CNN相比,MR仅有微小差异,反映了本文方法在检测一般遮挡对象时的鲁棒性。
图7 不同方法对苹果花数据集和荔枝花数据集处理效果比较
在polyphyletic损失函数中去除不同的项,包括去除特征提取(polyphyletic-Fe)、去除聚合项(polyphyletic-Com)和去除排斥项(polyphyletic-Seg),以检验每个部分的有效性。其中Fe、Com和Seg分别代表polyphyletic损失函数中的特征提取、聚合项和排斥项。表2中的实验结果表明,删除了特征提取后检测精度略有下降,在删除聚合项后,检测准确率从87.94%下降到83.76%,降低 4.18个百分点,删除了排斥项后降低9.37个百分点。实验结果验证了在损失函数上改进的有效性。图8为在基本损失函数中添加一个聚合项(+LCom)前后的建议框的可视化比较,通过添加聚合项,比较经典损失函数和非极大抑制前的建议边界框。在经典损失函数+LCom结果中,两个相邻真实目标之间的建议框相交面积较小,每个真实目标的建议框也更紧凑,这在密集遮挡场景中是可取的。
表2 消融实验结果
图8 在经典损失函数中加入聚合项(+LCom)前后的建议框对比
由表3可知,当σ为1.0时,通过在合理的评估设置中添加LSegGT,缺失率为13.7%,达最佳性能[17]。
表3 σ取不同值时的LSegGT和LSegBox的缺失率
在实验开始时,在荔枝花数据集的验证子集上通过调整损失函数的权重系数来平衡不同项的损失值,并使用缺失率来测量不同权重系数下的模型检测性能。如表4、5所示,α=0.6、β=0.4、γ=0.5和δ=0.5时模型的检测效果最佳。
表4 α、β取不同值时的缺失率
表5 γ、δ取不同值时的缺失率
(1)设计了包含聚集能力和排斥能力的polyphyletic损失函数,首先在经典的损失函数中加入聚合项,迫使预测框接近并紧密定位相应的荔枝花目标,从而使预测目标的多个建议框紧密聚集。同时在损失函数中添加了两种类型的排斥项来优化模型,使目标预测框远离其他目标真实框,以减少不同目标之间预测框的重叠。
(2)实验结果表明,本文设计的polyphyletic损失函数对密集荔枝花检测的平均精度均值为87.94%,F1值为87.07%,缺失率为13.29%,召回率为86.21%。与Faster R-CNN、Focus Loss、AdaptiveNMS、Mask R-CNN相比,本文方法对密集荔枝花检测具有更高的准确率和更低的缺失率。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!