职场文秘网

首页 > 心得体会 > 学习材料 / 正文

基于YOLOv4的多目标花卉识别系统

2023-01-17 16:05:07

谢州益,胡彦蓉

(浙江农林大学数学与计算机科学学院/浙江省林业智能监测与信息技术研究重点实验室/林业感知技术与智能装备国家林业和草原局重点实验室,浙江 杭州 311300)

花卉定位与识别是自动化机械分类采摘的重要依据,在推进园艺种植自动化的今天,实现对鲜花的实时检测与定位,已成为复杂生长环境下做出决策的重要环节。随着全面小康的实现,人们开始追求更高品质的生活,在欣赏花的同时,如果能准确获知其种类,对于花卉知识的普及和产业的发展具有重要意义。

传统依靠专家观察、利用参考图片辅以文字的识别方法,由于缺乏对文字描述的统一理解,不利于机械自动化作业,而且凭主观经验判断需要具备较高的专业素养。近些年,基于模型的目标分类[1-2]被应用于植物病害识别领域。如:将人工提取到的纹理、颜色、方向梯度直方图(histogram of oriented gradient,HOG)等特征输入分类器获得预测结果;将环境因素作为重要影响因子,结合叶片的其他属性因子获得分类结果[3];基于显著性分析确定茶园害虫潜在区域,实现了复杂背景下的目标定位[4]。但早期方法对特征的选择单一,以Faster R-CNN[5]为代表的two-stage检测器和以SSD[6]、YOLO系列[7-11]为代表的one-stage模式,这类基于深度学习的目标检测能有效克服人工选取特征适用性不强的缺点。任意平等[12]对比大量花卉图片发现花蕊纹路、形状差异较大,通过Faster R-CNN首先定位花蕊区域,再进行种类识别显著提升了局部遮挡下的目标识别精度;郑凯等[13]基于Mask R-CNN,提出混合空洞卷积方法使卷积运算覆盖所有像素,对茄子花做了像素级的分割。由于two-stage框架的检测速度慢,较基于先验框算法的实时性差,一些优秀的one-stage框架被提出,常见的有:引入FPN实现多尺度预测的YOLOv3[9]算法;加入CSPNet网络并添加SPP和PANet结构加强特征提取的YOLOv4[10]模型;采用深度可分离卷积和BiFPN实现实时准确检测的EfficientDet[14];利用TUM和FFM模块加强特征提取的M2Det[15];以Focal loss训练以平衡正负样本,提高检测效果的RetinaNet[16]和无先验框检测的CenterNet[17]。针对月季花瓣重叠度高的问题,王雪琰等[18]使用4种深度学习模型分类同种不同类的相似月季;王杨等[19]使用SE-layer结合Triplet Attention构建加强特征提取网络,提升模型对隐藏目标的检索能力;方健等[20]利用特征融合、融入注意力机制的膨胀卷积模块,提高了多目标遮挡下小物体的检测效果;针对静态图像只能处理单个场景的问题,Tian等[21]将SSD算法引入花卉视频流检测中,提高了应用场景范围。

现有目标检测的相关文献多是对算法进行改进,在农业特别是花卉目标检测领域的研究偏少。因此,本文基于YOLOv4模型对常见花卉的目标检测进行了研究,引入轻量化神经网络MobileNetV3[22]替换主干CSPDarknet53简化网络结构,并在路径聚合网络部分利用深度可分离卷积替换普通卷积,改进预选框设定方法后对训练方式进行优化,最终得到的模型以较少的精度损失大幅降低了参数和模型大小,最后在此基础上实现花卉目标检测系统。该系统具有低载荷、高精度、快速识别等优势,在为用户提供更好使用体验的同时,也为农作物自动化采摘提供了理论依据和技术支持。

1.1 系统开发环境

本文采用Python的GUI模块库PyQt5设计图形化用户交互界面,系统流程如图 1所示,用户上传的图片经缩放后被传输到服务器,通过调用训练好的模型将识别结果返回,并在页面上呈现给用户。软件环境为Windows10的64位操作系统,Python3.7、TensorFlow2.3.0、Keras2.4.3;硬件环境:计算机内存8 GB,搭载Intel(R)Core(TM)i7-9750HF CPU@2.60 GHz处理器;PyQt5的开发必备工具:Python解释器、PyCharm2019.3和PyQt5相关的模块。

图1 多目标花卉识别系统流程图Fig.1 Flowchart of multi-target recognition system of flowers

图2 图像预处理模块Fig.2 Image preprocessing module

1.2 软件设计

1.2.1 图像预处理模块图像预处理是花卉识别的重要环节,由于拍摄后上传到本地的图像可能会有噪声、对比度不明显等问题,需要设计预处理模块来实现图像的前期处理,并对操作结果进行实时反馈及存储。该模块的界面主要包括选择图片、图像平滑、图像均衡化等8个功能按键(图 2),按下选择图片就会打开本地图库,选择后单击基本操作,便将对应的处理结果显示在下方,图2所示是选择了向日葵图像后经图像均衡化处理后的结果,此时该结果已保存至后台,方便进行下一步操作。

1.2.2 花卉目标检测模块目标检测模块是部署本文算法的核心模块,在计算机上得到的.h5模型与系统部署同属一个编译环境,可以减少诸多限制因素,模型部署的流程包括模型准备、软件安装和配置、模型导入和参数修改、测试与验证。部署完成后选择图像或视频进行验证和测试。

图3是静态图像检测(a)、视频检测(b)以及实时目标检测(c)的示例,在已经编写的图形化界面中有选择图片、打开实时目标检测摄像头和运行3个按钮。使用过程中,用户点击选择图片可以在本地图片库中选择静态图片或视频,选择完成后在右侧文件路径下方显示刚刚选择文件的绝对路径,选好文件后点击运行按钮,图像将被压缩到固定大小(416×416)后输入模型中进行计算,左下方等待识别区域是返回的检测结果,右侧下方显示计算机检测该图像的运行时间。示例图中显示该静态图像的检测时间是0.08 s,系统还会把识别到的花卉详细位置坐标反馈给用户,视频的检测也是重复上述操作步骤,在框选出目标位置的同时显示对该目标检测框的置信度,置信度越高说明判断为该类别的可靠性越强。

图3 多目标花卉识别系统检测示例Fig.3 Detection example of multi-target recognition system of flowers

2.1 数据采集

以Kaggle花卉数据集(https://www.kaggle.com/alxmamaev/flowers-recognition)中包含的5种常见花卉作为研究对象,整理后发现样本中存在一些非花卉、分辨率不足或是分类错误的图片,需要对图像数据进行筛选,同时为丰富数据集,添加少量网络图像作为户外拍摄场景下的照片补充,以此构造可靠的训练数据集。网络图像是基于Python中的selenium工具,通过模拟浏览器登录,让爬虫控制浏览器来爬取百度(https://image.baidu.com/)上的图片,经翻转、裁剪后最终获得原始花卉图像3 486张,5类花卉分别是小雏菊、蒲公英、玫瑰、向日葵和郁金香,其中图片数量最多的蒲公英约900张,最少的玫瑰也有579张,保证每种类别花卉图片的数量在600~800张。

2.2 数据集制作

试验中为凸显图像重要特征,降低光照等客观因素对后续特征提取的影响,利用去噪、直方图均衡等预处理有效增强图像,增大对比度和清晰度,然后按8∶1∶1的比例将数据集随机划分为训练集、验证集和测试集,使用Python编写的图形图像注释工具labelImg对目标进行标注,形成PASCAL VOC格式的XML文件。

2.3 算法设计优化

YOLOv4是一种相对高效的目标检测算法,其大体结构与YOLOv3类似,作为YOLOv3的加强版,该算法在原有网络Darknet53的基础上修改resblock_body,运用CSPNet(图 4)结构、Mish激活函数提高检测精度。加强特征提取模块改变YOLOv3中仅有上采样过程的特征金字塔结构(feature pyramid networks,FPN),通过上采样和下采样2个过程,加强初步特征和深层特征的融合。但实际应用场景对检测模型的尺寸和实时性提出了更高的要求,由于传统的YOLOv4模型参数量大、运算速度慢,本研究在原有网络的基础上,通过替换主干特征提取网络、简化路径聚合网络的方式实现模型参数的缩减,同时探讨预设框的尺寸和训练技巧对算法性能的影响。

图4 残差卷积(左)和CSPNet结构(右)对比Fig.4 Comparison of residual convolution(left)and CSPNet structure(right)

2.3.1 主干特征提取网络算法优化首先利用轻量级CNN替换YOLOv4中的主干特征提取网络,MobileNetV3中使用了_Bneck结构块,具体结构如图 5所示。_Bneck主干部分首先对输入进行升维,再利用深度可分离卷积完成特征提取,然后通过施加轻量级的注意力机制来调整每个通道的权重,最后将降维后的输出与残差边部分相加。_Bneck结构的特殊之处在于融合深度可分离卷积、残差倒置结构以及注意力机制来加强特征融合。

图5 _Bneck结构示意图Fig.5 Schematic diagram of _Bneck structure

深度可分离卷积将普通卷积拆分为逐通道卷积和逐点卷积两部分,首先对每一通道单独卷积,产生和输入通道数一致的特征图输出,再利用1×1的卷积核进行单点上的特征提取。假设特征图输入和输出尺寸分别为DF×DF×M、DF×DF×N,卷积核尺寸为DK×DK×M,其中DF为特征图的宽/高,M和N分别为输入和输出的通道数,DK为卷积核的宽/高。标准卷积下的参数量为(DK×DK×M)×N,而深度可分离卷积中深度卷积参数量为(DK×DK×1)×M,逐点卷积参数量为(1×1×M)×N,当使用尺寸大小为3×3的卷积核时,深度可分离卷积的模型计算参数约是标准卷积的1/10。

由于深度可分离卷积的使用会使网络层数增加,过深的模型容易产生梯度弥散而导致训练无法收敛,可通过引入残差结构来改进映射。该结构最显著的特点是多了1条实现输入和输出之间数据叠加的捷径连接,这种连接并不会增加参数数量和计算复杂度,却可以有效避免梯度消失,从而在加深网络的同时提高模型表达能力。传统残差模型采用先压缩通道数,卷积后再扩张通道数的策略,这种方式会降低特征提取能力,为此MobileNetV3采用了残差倒置方式,利用瓶颈结构减少训练参数的主干部分,先1×1卷积升维,然后利用3×3的深度可分离卷积进行特征提取,最后用1×1卷积降维,在减少计算量的同时加强特征提取能力。

在注意力机制方面,本文对特征提取后的结果进行全局平均池化,添加高和宽的维度后,利用全卷积代替2个全连接层的方式施加注意力,这样网络就无需限定输入图像的分辨率,利用灵活的网络结构加上1×1卷积代替全连接,在达到稀疏全连接的同时大大提高计算效率。

2.3.2 路径聚合网络简化特征金字塔网络主要针对多尺度的特征图,自上而下将深层网络提取到的高层特征传递到低层进行特征融合,增强了语义信息却忽视了位置信息。YOLOv4的路径聚合网络(path aggression network,PANet)针对该缺点采用了自底向上的策略,先对空间金字塔池化网络(spatial pyramid pooling networks,SPPNet)多尺度最大池化后的输出进行上采样,加强特征融合,然后下采样将浅层网络提取的信息传递到深层网络中,更好地保留物体的位置信息。一系列的上采样和下采样使YOLOv4的训练参数主要集中在PANet结构块中,为了降低模型复杂度,同时保证对小目标的检测精度,本文不考虑通过减少网络层来简化模型,而是参考MobileNetV3中的深度可分离卷积,将原始PANet网络中的3×3普通卷积更改为深度可分离卷积来获得更快的检测速度。卷积更改前后的对比如图 6所示,激活函数改为ReLU6的目的在于增强浮点数的小数位表达能力,降低精度损失的同时防止数值爆炸。

图6 卷积改进前(左)和后(右)结构对比Fig.6 Comparison of improved convolution structures before(left)and after(right)

采用上述优化主干特征提取网络和简化PANet后的整体模型结构如图 7所示,图中对CBA(convolution batch normalization activation)、DCBA(depthwise separable convolution batch normalization activation)、5_Convs和SPP(spatial pyramid pooling)的具体结构也做了介绍,将大小为416×416×3的图片输入目标检测模型,最终得到13×13、26×26、52×52的预测网格,模型的预测结果可以判断网格点是否包含物体以及物体的种类,最终通过对先验框的调整获得预测框。

图7 改进后的MobileNetV3-YOLOv4网络结构Fig.7 Network structure of improved MobileNetV3-YOLOv4

2.3.3 改进预选框生成方式K-means聚类算法是一种迭代求解聚类中心的分析方法,随机选择k个对象作为初始聚类中心,通过计算每个对象到各个中心的距离,将其派给距离最近的聚类中心,每指派1个样本,聚类中心就会根据现有的对象被重新计算,重复这个过程直到聚类中心不再发生变化。为了提高检测速度,本文根据人工标注的真实目标框基于K-means聚类算法生成9簇预设的锚框,但在训练自己的数据集时,发现仅采取这种方法得到模型的预测效果并不好。经研究发现,锚框的选择和数据集有很大关系,在使用自构建的数据进行训练时,数据集的类型单一,人工标记的真实框大小尺寸相对集中,仅仅通过K-means聚类产生的锚框大小也相对集中,无法体现模型的多尺度输出优势。因此本文改进了预选框的生成办法,使用线性尺度缩放的方式,将聚类生成的锚框尺寸优化,通过拉伸锚框以提升模型的检测精度,最终的锚框参数如表1所示。

表1 改进后预选框值Table 1 Improved preselection box value

图8 花卉图像的马赛克数据增强示例Fig.8 Mosaic data augmentation example of flower images

(1)

(2)马赛克(Mosaic)数据增强。马赛克数据增强是YOLOv4训练模型的一大技巧,参考了理论上具有相似性的CutMix数据增强方式,图 8是马赛克数据增强后的结果。该方法每次读取4张图片,并将拼接结果传入神经网络进行学习,优点是丰富检测物体的背景,而试验中的训练稳定性略差,具体步骤如下:

①依次读取4张图片;

②分别通过翻转、缩放和改变色域的方式将更改后的图片放置于4个方向;

③利用矩阵的方式截取4张图片的固定位置,组合图片和标注框。

训练均采用迁移学习的训练方式,解冻前的学习率为10-3,每个批次训练8张图片,然后对模型进行微调,解冻后学习率调整为10-4,每批次训练减小至4张图片,最终验证改进方法在不同学习策略下的识别准确率,并对结果进行综合分析。每秒传输帧数(frames per second,FPS)越大,显示的流畅程度越好;召回率(recall)是衡量模型对花卉目标检测的覆盖能力,表示识别出的花卉目标的比例;精确度(precision)是正确识别的目标在所有识别目标中的比例,平均精度(average precision,AP)是每一类别精确度的平均值。计算出AP后,对所有类别的AP求平均值则得到整个数据集上的平均精度均值(mean average precision,mAP),mAP是目标检测中最重要的指标,用来衡量检测性能。

3.1 模型性能分析

分析改进后的目标检测网络在mAP和FPS指标上的变化(表 2),可以看到简化后网络的mAP略有下降,但帧频率从11.21提升至30左右,满足了实时检测的需求。对比现有的目标检测模型,发现使用TUM模块进行U型特征提取,再利用FFM模块进行特征融合的M2Det对特征的提取效果最好,5类花卉检测中的平均精度均值达到83.52%,但FPS仅有12.43,难以满足实时检测的条件;无先验框的CenterNet在本文数据集上的效果相对较差,仅为77.66%;而RetinaNet在2种评价指标上的表现都不是特别理想。

比较基于K-means聚类的预设框和优化预设框下的训练结果,发现两者在改进后模型中的表现略有差异,但在衡量目标检测算法最重要的指标mAP上,经过线性尺度缩放拉伸锚框后的检测结果更具优势,高于传统聚类生成锚框模型0.99%。原因是K-means算法虽然会对数据集中的目标框进行聚类,但由于标注的数据集中的目标框大小相近,聚类出的9个候选框相差不大,因为不同的特征层适合不同大小的先验框,浅层特征适合较大的先验框,而聚类得到近似尺寸的预设框反而不利于模型的训练。经过线性尺度缩放后得到的预设框更符合模型多尺度输出,其泛化能力也就越好。较大的锚框在将浅层网络提取的特征信息传递到深层网络的同时,保留了浅层网络中的特征,也能更好地对目标进行定位。

表2 模型对比结果Table 2 Model comparison experimental results

为体现本文模型在硬件需求上的优势,选择相同试验条件下的内存占用、显存占用、训练参数和模型尺寸这4个指标来衡量算法的复杂度。表3展示了几种模型在进行预测时对硬件资源的消耗,可知内存和显存的占用量基本和模型复杂度呈正比,训练参数越大,分配的资源也就越多。改进后模型的训练参数由原来的6千多万降至1千多万,训练完成后得到的模型尺寸也由原来的245 MB缩小至44.3 MB,而较小的模型更有利于系统的设计与实现,具备在低配置电脑中运行的现实意义。

表3 模型的复杂度分析Table 3 Complexity analysis of model

进一步定量分析试验结果,计算模型改进前、后在每类花卉上的各项指标,由表4可知,原始模型在向日葵上的识别精度最高,为89.30%,而最低的玫瑰仅为71.52%,说明该模型对不同类型花卉的识别鲁棒性不强;经K-means聚类方法计算得到anchor后训练的模型在郁金香上的AP最高,达到81.61%,最低的玫瑰也有76.26%,模型在5类花卉间的AP值差距相对较小;而线性尺度缩放优化聚类锚框后的模型在向日葵上最高AP值为86.68%,高出优化前模型最高值5.07%,最低为74.42%,高出原始模型中的最小值2.90%。

在衡量准确率和召回率的综合指标F1上,改进anchor的模型平均值介于原始方法和聚类anchor之间,而查看单一指标时会发现原始方法的召回率较高,但牺牲了检测的精确率,最低精确率仅为83.80%,改进后的模型在每类花卉上的检测精确率均能保持在85%以上,证明网络具有更强的泛化能力。

表4 模型性能参数对比Table 4 Comparison of performance parameters of models

3.2 对比试验及分析

通过前面的试验发现改进的网络以较少的精度损失大幅降低了网络的计算参数数量,特别是改进聚类锚框算法后训练得到的模型mAP值仅与原网络相差0.03%,几乎可以忽略不计,却可以满足实时检测的需求。为了进一步探讨改进的锚框选取方法和训练策略对模型检测效果的影响,设计试验探究anchor选择、学习率衰减方法和马赛克数据增强对检测性能的影响,对照试验设计及mAP指标结果如表 5所示。相同试验条件下改进anchor选取方法后模型的性能较聚类生成的anchor好。进一步探讨在改进anchor前提下的学习率衰减方式对检测效果的影响,试验结果表明,余弦退火算法以学习率跳变的方式“跳出”局部最小值,从而达到全局最优,采用指数衰减训练方式的mAP值相较余弦退火低了2.59%,而马赛克数据增强方法稳定性欠佳,在本试验中的表现一般。

表5 对照试验设计Table 5 Controlled experimental design

上述4种训练策略下的损失函数下降曲线如图 9所示,发现前11个epoch,使用指数衰减算法训练的Loss曲线收敛更快,11个epoch后曲线波动不大但仍有小幅下降趋势,在11至27个epoch范围内,使用了余弦退火衰减算法的Loss曲线下降并达到了更低值,说明可以有效跳出局部最优解,达到全局最优的目的,此时曲线整体已经没有下降趋势,可认为模型已经收敛。

图10展示了4种训练策略下的检测结果,可以看到基于聚类anchor的模型预测结果并不理想,预测框的得分低且漏检现象较为严重;指数学习率衰减和马赛克训练技巧下的模型检测效果也不好,都存在一定程度的漏检,而改进后的模型在不使用马赛克增强,学习率衰减采用余弦退火算法下的检测性能最好,能够有效缓解局部遮挡下的漏检问题,证明了本文方法的有效性。

图9 对比试验的loss训练曲线Fig.9 Loss training curve of comparative experiment①②③④分别对应表5中的训练策略。下同。①②③④ correspond to the training strategies in Table 5 respectively.The same below.

图10 检测结果对比Fig.10 Comparison of test results

1)本文在YOLOv4基础上设计的轻量级目标检测模型,通过替换主干网络降低模型复杂度,并在路径聚合网络部分引入深度可分离卷积大幅减少训练参数,利用线性尺度缩放优化基于K-means聚类的预选框尺寸,并结合多种学习策略训练模型,在最小化精度损失的前提下加速模型训练速度。试验结果表明,改进后模型的mAP值略微降低,但检测速度和均衡性都得到了提高,单类别花卉的最高检测精度达到96.43%,并能满足实时检测的条件,训练后的模型尺寸也由原来的245 MB降至44.3 MB。

2)本文设计实现的花卉目标检测系统,可以为用户提供图像预处理操作,以交互处理方式增加用户体验感,通过选择静态图像或视频,系统将检测结果反馈给用户。

3)由于缺少常见花卉的大规模数据集,为进一步提高模型的泛化性和鲁棒性,需要采集更多、更复杂场景下的数据,同时规范数据标注的标准,确保目标框集合的准确性与统一性。

4)由于本文仅实现了轻量化网络在PC端中的花卉目标检测系统,算法未在移动设备上进行验证,需要进一步研究轻量化模型在移动端的部署。

猜你喜欢 特征提取聚类卷积 同步定位与建图特征提取和匹配算法研究导航定位学报(2022年5期)2022-10-13基于全卷积神经网络的猪背膘厚快速准确测定农业工程学报(2022年12期)2022-09-09一种傅里叶域海量数据高速谱聚类方法北京航空航天大学学报(2022年8期)2022-08-31基于图像处理与卷积神经网络的零件识别计算技术与自动化(2022年1期)2022-04-15基于数据降维与聚类的车联网数据分析应用汽车实用技术(2022年4期)2022-03-07一种基于卷积神经网络的地磁基准图构建方法北京航空航天大学学报(2021年9期)2021-11-02基于3D-Winograd的快速卷积算法设计及FPGA实现北京航空航天大学学报(2021年9期)2021-11-02基于模糊聚类和支持向量回归的成绩预测华东师范大学学报(自然科学版)(2019年5期)2019-11-11基于MED—MOMEDA的风电齿轮箱复合故障特征提取研究电机与控制学报(2018年9期)2018-05-14基于曲率局部二值模式的深度图像手势特征提取计算机应用(2016年10期)2017-05-12

Tags: 花卉   识别系统   目标  

搜索
网站分类
标签列表