计算机系统应用  2021, Vol. 30 Issue (8): 164-170   PDF    
基于改进YOLOv4的棉花检测算法
刘正波, 鲍义东, 孟庆伟     
贵州航天智慧农业有限公司, 贵阳 550081
摘要:为提高自动化采棉机械的采摘效率和智能化水平, 避免误采摘、漏采摘, 采用以复杂背景下实现单个棉花检测为目标, 提出一种改进的YOLOv4目标检测算法. 使用K-means算法进行聚类锚框尺寸的筛选, 得到适合棉花数据集的精细化锚框尺寸. 同时在YOLOv4算法中引入注意力机制, 在其网络结构中添加SENet (Squeeze-and-Excitation Networks)模块. 在模型训练时, 首先在公开数据集上训练取得预训练权重, 在预训练模型上使用棉花数据集微调参数, 并使用数据增强方式扩充原始数据集, 在预训练模型上再次训练. 实验结果表明, 本文提出的YOLOv4改进算法, 能够很好的实现田间环境下的棉花检测.
关键词: 棉花采摘    检测    YOLOv4    聚类    SENet    模型    数据增强    
Cotton Detection Algorithm Based on Improved YOLOv4
LIU Zheng-Bo, BAO Yi-Dong, MENG Qing-Wei     
Guizhou Aerospace Intelligent Agriculture Co. Ltd., Guiyang 550081, China
Abstract: To improve the efficiency and intelligence of automatic cotton-picking machines and avoid false and missed picking, we propose an improved YOLOv4 target detection algorithm to detect single cotton in complex backgrounds. The K-means algorithm is used to screen the size of the clustering anchor frame and obtain the refined size suitable for the cotton data set. The attention mechanism is also introduced to the YOLOv4 algorithm, and the Squeeze-and-Excitation Networks (SENet) module is located in the network structure. During model training, the weights of pre-training are obtained by training on an open data set, and fine-tuning parameters of the cotton data set are applied to the pre-training model. Furthermore, the original data set is expanded through data enhancement and the pre-training model has been trained again. Experimental results show that the improved YOLOv4 algorithm proposed in this study can effectively realize cotton detection in the field environment.
Key words: cotton picking     detection     YOLOv4     clustering     SENet     model     data enhancement    

我国是世界第一大产棉国, 同时也是世界第一大棉花进口国, 这也造就了中国成为世界纺织大国的地位[1]. 棉花作为种植作物中产业链最长的大田经济作物, 集大宗农产品和纺织工业原料为一身, 在国民经济中占有重要地位. 棉花产业属于劳动密集型产业, 传统的棉花种植采摘技术落后, 需要大量的人力物力, 随着劳动力成本的增长, 棉花采摘机械化成为必然趋势. 我国采棉机的发展起步较晚, 虽然在不断进步, 但是对棉花采摘的采净率和除杂率上还有待提高. 传统采棉机相比人工采摘虽然在采摘效率上有较大提升, 但采摘的同时降低了棉花的品质, 并且采棉机在采摘结束后仍有较多棉花在棉杆上, 导致单位面积的棉花减产[2]. 因此, 智能采棉机成为了降低劳动成本、提高棉花产量和棉花质量的必要途径. 智能采棉机是根据棉花自然成熟周期进行多批次精准采摘, 采摘关键在于对单个棉花实现精准识别与定位. 传统机器视觉在采用图像预处理、阈值分割、特征提取等方法上对作物识别和检测上取得了较好效果, 但是对于多个目标重叠、障碍物遮掩等情况还是会出现漏采和误采.

近年来, 计算机视觉技术发展迅速, 视觉技术广泛运用于农业领域, 解决农作物或杂草检测、作物疾病检测等难题. 在棉花检测领域, 目前研究集中对采棉机器人配备的摄像机采集的棉花图片进行识别与分割, 少有研究考虑到田间实际采摘中复杂环境. Wang等[3]提出一种基于RGB颜色空间分布的棉花检测算法用于采棉机器人, 并采用Freeman链码提高识别准确率. 韦皆顶等[4]提出基于HSV彩色模型的棉花饱和度图像分割算法, 能够很好地将棉花和背景分割开来, 并且受光照影响较小, 但无法处理田间棉花叶片遮挡等情况. 刘坤等[5]提出一种基于RGB彩色空间模型和Hough变换的棉桃识别技术, 能准确识别自然环境中被遮挡的棉花. 陈钦政等[6]结合最大类间方差法提出了一种在OHTA颜色空间下基于支持向量机的棉花图像分割算法, 提高了分割的准确度和实用性, 但对复杂环境采棉适用度不高. 尽管文献[3-7]已提出一系列高精度棉花检测和分割算法, 但是这些方法都采用手工提取特征方式进行识别, 算法鲁棒性不强, 并且没有综合考虑田间棉花采摘复杂背景、叶片遮挡和棉花重叠等情况, 难以用于田间棉花采摘. 因此本文提出一种基于改进YOLOv4的棉花检测算法, 应用于采棉机器人进行田间棉花采摘.

1 算法理论基础 1.1 YOLOv4算法

YOLOv4[7]算法在YOLOv3[8]算法基础上, 从数据处理、训练方法、激活函数、损失函数、网络结构等方面做出不同程度优化, 使算法模型在目标检测速度和精度上达到当前最优平衡.

YOLOv4在YOLOv3损失函数基础上使用CIoU(Complete Intersection over Union)损失替代MSE (Mean Square Error)损失作为回归框预测损失. 损失函数可分为回归框预测损失 ${L}_{\rm CIoU}$ 、置信度损失 ${L}_{\rm Conf}$ 、分类损失 ${L}_{\rm cls}$ 三部分.

$ LOSS={L}_{\rm CIoU}+{L}_{\rm Conf}+{L}_{\rm cls} $ (1)

回归框预测损失 ${L}_{\rm CIoU}$ 表示为:

$ {L}_{\rm CIoU}=1-IoU-\frac{{\rho }^{2}\left(b,{b}^{gt}\right)}{{c}^{2}}+av $ (2)

其中,IoU为预测框与真实框的交并比, $ b $ 为预测框中心点, $ {b}^{gt} $ 为真实框中心点, $ \;\rho $ 为两个框中心点间的欧式距离, $ c $ 是同时包含预测框和真实框的最小封闭区域的对角线距离, $ av $ 是对长宽比的惩罚项. $ v $ 表示度量长宽比的相似性系数, 定义为:

$ v = \frac{4}{{{\pi ^2}}}{\left( {\arctan\frac{{{w^{gt}}}}{{{h^{gt}}}} - \arctan\frac{w}{h}} \right)^2} $ (3)

其中, $ {w}^{gt} $ 为真实框宽度, $ {h}^{gt} $ 为真实框高度, $ w $ 为预测框宽度, $ h $ 为预测框高度. $ a $ 为长宽比的惩罚项系数, 具体定义为:

$ a=\frac{v}{(1-IoU)+v} $ (4)

置信度损失 ${L}_{\rm Conf}$ 为:

$ \begin{split} &{L_{\rm Conf}} = \sum\limits_{i = 0}^{{S^2}} {\sum\limits_{j = 0}^B {I_{ij}^{\rm obj}} } \left[ {{\bar C_i^j} {\rm{log}}\left( {C_i^j} \right) + \left( {1 - {\bar C_i^j} } \right){\rm{log}}\left( {1 - C_i^j} \right)} \right] \\ &+{\lambda _{\rm nobj}}\sum\limits_{i = 0}^{{S^2}} {\sum\limits_{j = 0}^B {I_{ij}^{\rm noobj}} } \left[ {{\bar C_i^j} \log\left( {C_i^j} \right) + \left( {\left( {1 - {\bar C_i^j} } \right)\log\left( {1 - C_i^j} \right)} \right)} \right] \end{split} $ (5)

式(5)中, $ {S}^{2} $ 表示网格划分网格数, B是每个网格中先验框个数, $ {I}_{ij}^{\rm obj} $ 表示预测边界框包含目标, $ {I}_{ij}^{\rm noobj} $ 表示预测的边界框不包含目标, $ {C}_{i}^{j} $ 为预测置信度, ${{\bar C}_{i}^{j}}$ 为实际置信度, ${\lambda }_{\rm nobj}$ 为预先设定的参数值. 分类损失 ${L}_{\rm cls}$ 表示为:

$ \begin{split} {L_{cls}} =& \sum\limits_{i = 0}^{{S^2}} {I_{ij}^{{\rm{obj}}}} \sum\limits_{C \in classes} {\left( {\left[ {\bar P_{\iota (c)}^J} \right.\log P_{i(c)}^j} \right)} \\ & + \left( {1 - \bar P_{_{\iota \left( c \right)}}^J} \right)\log \left( {\left. {1 - P_{_{\iota \left( c \right)}}^J} \right]} \right) \end{split} $ (6)

式中, $ c $ 表示检测目标所属分类, $ {{P}_{i}^{j}}_{\left(c\right)} $ ${{\bar{P}_{\iota}^{J}}}_{\left(c\right)}$ 分别表示单元格目标属于类别 $ c $ 的实际概率与预测概率.

YOLOv4目标检测算法的网络结构如图1所示, 主要包括特征提取网络CSPDarkNet53、空间金字塔池化网络SPP和特征聚合网络PANet三部分. CSPDarkNet53作为YOLOv4算法的主干特征提取网络, 是在DarkNet53网络的基础上改进而来. CSPDarkNet53包含5个CSPNet模块, 首先将输入特征划分为两部分, 对输入特征进行卷积和批量归一化处理后, 使用Mish激活函数激活, 最后跨阶段融合两部分特征, 在复杂度增加较小的情况下提高了模型整体的稳定性和准确性, 输出更加平滑并且很好的解决了梯度饱和的问题. CSPDarkNet53将DarkNet53的5个残差模块替换为CSPNet模块, CSPNet模块中主干提取部分和残差边分离的结构能够更好的提取图像特征, 在保持轻量化的同时保持较高准确率、降低计算量. 主干特征提取网络CSPDarkNet53充分提取图像特征后, 将后3个CSPNet模块提取的不同尺度图像特征传入SPP网络和PANet网络进行特征融合.

图 1 YOLOv4算法网络结构

对CSPDarkNet53网络最后一个特征层进行一次特征卷积后, 特征传入SSP网络, 利用SSP网络中4种不同尺度最大池化核充分融合图像特征, 极大增加感受野, 分离得到显著的上下文特征来. PANet结构是由卷积操作、上采样操作、特征层融合、下采样操作构成的循环金字塔结构. 对传入的图像特征进行反复的特征提取, 自底而上融合从主干网络不同特征层提取的特征, 形成强定位特征, 进一步提高特征提取和定位能力. 从PANet提取的特征输出为3个不同尺度YOLOHead预测层, 预测层信息包括目标得分、预测锚框尺寸坐标、分类置信度等. 利用YOLOHead预测层的信息对锚框的位置、尺寸做出适当调整, 利用目标得分筛除掉部分锚框, 最后通过非极大值抑制将3个预测层的结果合并, 得到最终预测结果.

1.2 锚框计算

YOLOv4目标检测算法的默认锚框是在Coco数据集上使用聚类算法计算得出的通用尺寸, Coco数据中包含各种不同的检测目标, 目标的尺寸比例差别较大, 因此锚框的尺寸也不尽相同, 在实际应用场景中需要根据数据集, 计算相应的锚框尺寸. 由于棉花图片数据库网络资源有限, 本文采用自建的棉花数据集, 棉花在不同图像中的形状基本一致, 因此可以针对棉花的实际形状大小计算相应锚框尺寸.

采用K-means聚类算法计算锚框尺寸, 具体计算步骤如图2所示. 首先读取数据集中归一化的锚框尺寸大小, 锚框的宽、高组成坐标点作为待分类数据, 并随机初始化9个聚类中心. 计算各个锚框坐标点与聚类中心锚框之间的交并比(Intersection over Union, IoU), 以(1–IoU)作为坐标之间的相对距离, 距离最小的聚类中心为对应锚框的分类, 把各个类别的中心坐标作为下一次迭代的聚类中心. 不断重复上述过程, 直至聚类中心不再变化, 把此时的9个聚类中心作为最终的得到的锚框尺寸. 使用K-means算法计算得到的锚框尺寸更适合当前数据集, 实现单株棉花的精准检测.

图 2 K-means算法计算锚框尺寸

1.3 数据增强

自然环境下棉花检测任务面向复杂田间环境, 检测精度不仅受到叶片遮挡、多簇棉花重叠等因素的影响, 还需要考虑天气、棉花尺寸形态、自然光照等自然因素. 因此除了要在数据采集的过程中考虑以上因素, 尽可能多的采集各种不同场景和自然条件下的棉花图片作为数据集, 也要通过数据增强方法对数据集图片做出处理, 提高模型的鲁棒性.

数据增强分为离线增强和在线增强两种方式. 离线数据增强主要用于数据量较小的数据集, 直接处理原始数据集图片, 新数据图片数量扩增为原数据集图片的n倍 (n为数据增强因子), 主要用来防止过拟合. 在线增强是在读取一批次数据集图片后, 对图片数据进行增强操作, 提高模型在不同场景中泛化能力. 主要处理流程是先对数据集图片作离线增强, 对图片进行翻转、裁剪、旋转、缩放、平移和添加噪声等操作, 得到的数据集大小为原数据集的3倍. 在训练过程中, YOLOv4自带的Mosaic数据增强操作对片进行处理. Mosaic数据增强的效果如图3所示, 首先读入4张图片, 对图片作翻转、缩放、色域变换等操作, 然后以矩阵的形式截取图片的固定区域并将其拼接为一张图片, 极大的丰富检测物体的背景, 提升检测算法的鲁棒性.

图 3 Mosaic数据增强

1.4 网络模型改进

在田间实际场景中对棉花进行检测时, 由于复杂背景的影响, 以及叶片和枝丫对棉花的遮挡, 常规的目标检测算法受到置信度的影响, 往往会漏检部分棉花从而造成损失. 为了让检测网络学习到细致的局部信息, 并融合全局信息做出更加准确的判断, 避免误检测和漏检测, 可采取增大全局感受野的方式, 捕获更多的图像特征描述图片.

对YOLOv4的特征提取网络做出改进, 改进后网络结构如图4所示, 将SENet (Squeeze-and-Excitation Networks)结构嵌入到YOLOv4主干特征提取网络CSPDarkNet53的Residual模块中, 得到SE-Residual残差块. 用SE-Residual替换原有的Residual模块, 加大特征提取网络的全局感受野, 增强特征提取能力, 从而能有效减少环境背景和障碍物遮挡对棉花检测的影响, 避免误检测和漏检测. SENet是Hu等[9]在2017年提出, 网络结构如图4所示, 主要包括Squeeze、Excitation和Scale三部分. SENet中的Squeeze部分用全局池化层顺着空间维度进行特征压缩, 在各个通道上得到具有全局感受野的实数. Excitation模块接着使用两个全连接层结构对各个通道的重要性进行预测, 得到不同通道重要性. 最后Scale部分将提取得到的通道重要性作用到全局特征上. SENet在减少参数的同时, 对各个通道的特征进行加权操作, 各个通道的信息交互, 强化有效信息, 抑制无效信息, 提高网络准确率.

图 4 YOLOv4改进算法网络结构

2 实验结果与分析 2.1 实验数据集

实验数据集主要在棉田内实际拍摄取得, 为充分反映棉田内真实的棉花采摘情况, 在不同天气情况下从不同的角度对棉花植株的棉花进行拍摄. 并通过互联网获取部分棉花图片对数据集进行扩充, 经过筛选后选取6000张相关图片作为初始数据集, 然后使用离线数据增强方法对数据集图片翻转、缩放、平移和加噪声操作, 进一步扩充数据集, 最终得到的实验数据集包含18000张相关图片. 如图5所示, 数据集图片主要包括单个棉花、多个棉花重叠、遮掩棉花和非棉花4种情况.

数据集获取后需要对其进行标注, 所使用标注软件为labelImg, 该软件免费且操作简单, 只需对图片中单个棉花的区域使用锚框标注为Cotton. 选用标注格式为PASAL VOC2007, 然后利用随机函数将数据集随机分成训练集和测试集, 其中训练集和测试集图片数量比例为5:1, 在训练集中再细分为训练集和验证集比例为9:1.

2.2 实验分析

试验在高性能计算平台上进行, 平台操作系统为Windows10, 实验开发平台的配置为: CPU 选用Intel(R) Core (TM) i7-8700, GPU选用 NVIDIA GeForce RTX 2070, 内存为16 GB. 加载软件环境有Pycharm、Python3.7、Cuda10.2. 模型通过PyTorch深度学习框架搭建.

在深度学习模型的训练上, 采用迁移学习的方式通过预训练模型进行训练. 迁移学习的方式减少了构建深度学习模型所需的训练数据和计算力, 降低了模型的训练时间, 能很好解决小数据集容易在复杂网络结构上的过拟合问题. 首先对公开数据集Coco数据集来获得预训练模型, 然后用棉花数据集基于预训练模型进行迁移学习. 迁移学习先冻结特征提取网络前端训练50个Epoch, 利用已经训练好具有较强特征提取能力的预训练模型先进行特征提取, 然后根据训练集/测试集对特征融合网络和分类检测网络的参数进行微调, 最后对整个网络的参数进行训练和调整并输出最后的分类检测结果.

图 5 棉花数据集

采用查准率P和查全率R作为评价检测算法性能的指标, 查准率P和查全率R的计算公式为:

$ P=\frac{TP}{TP+FP} $ (7)
$ R=\frac{TP}{TP+FN} $ (8)

其中, 真正例TP表示在棉花存在的网格单元中, 同时满足置信度大于0.8、预测框与真实框的IoU大于0.5、预测类别正确3个条件. 假正例FP中包含两种情况, 一种是在棉花存在的网格单元中, 置信度大于0.8但不是真正例, 另一种是在棉花不存在的网格单元中, 置信度大于0.8. 假反例FN代表在棉花存在的网格单元中, 置信度小于0.8.

在网络的训练上对每种算法模型重复3次, 每次训练650个Epoch, 具体训练参数设置为: 批处理数为16, 梯度优化选用Adam算法, 初始学习率为0.001, 每50次迭代后学习率衰减为原来的1/10, 动量为0.9, 衰减系数为0.0005, 分类置信度阈值为0.8, IoU阈值为0.5.

改进算法的训练的损失值、查准率和查全率曲线如图6所示, 在使用迁移学习方法后, 损失值在200次迭代后趋近0, 查准率和查全率曲线在迭代300次后逐渐趋于平稳, 并且稳定后的查准率和查全率都在90%以上, 结果如图6所示.

图 6 YOLOv4改进算法

本文提出的YOLOv4改进算法与YOLOv3算法、YOLOv4算法及其改进结构的性能对比如表1所示, 对比结果表明对YOLOv4目标检测算法在网络结构和锚框上的改进, 相较于YOLOv3算法和原YOLOv4算法在性能上有较明显的提升. 本文在YOLOv4算法中加入的新锚框计算方法, 在查准率上的提升较小, 在查全率上有3%左右的性能提升. 在网络结构中添加SENet模块的方法, 在查准率上有明显的性能提升, 在查全率上也有较明显的性能提升. 综合结果表明, 本文提出的YOLOv4改进算法, 在复杂环境下也有很好的性能表现, 相较于传统方法能够更好的适应棉花采摘的实际田间环境.

表 1 算法检测性能对比(%)

3 结论

采用K-means算法进行锚框计算, 通过在YOLOv4中嵌入SENet结构得到YOLOv4改进算法, 融合YOLOv4与SENet的优势, 增加网络的感受野, 提升网络的特征提取能力. 实验结果表明, 在复杂田间环境下, 本文算法仍能够准确识别目标, 减少误采摘和漏采摘, 得到较高的查准率.

参考文献
[1]
卢秀茹, 贾肖月, 牛佳慧. 中国棉花产业发展现状及展望. 中国农业科学, 2018, 51(1): 26-36. DOI:10.3864/j.issn.0578-1752.2018.01.003
[2]
赵春江. 智慧农业发展现状及战略目标研究. 农业工程技术, 2019, 39(6): 14-17. DOI:10.3969/j.issn.1673-5404.2019.06.003
[3]
Wang Y, Zhu XR, Ji CY. Machine vision based cotton recognition for cotton harvesting robot. First IFIP TC 12 International Conference on Computer and Computing Technologies in Agriculture. Wuyishan, China. 2008. 1421–1425.
[4]
韦皆顶, 费树岷, 汪木兰, 等. 基于HSV彩色模型的自然场景下棉花图像分割策略研究. 棉花学报, 2008, 20(1): 34-38. DOI:10.3969/j.issn.1002-7807.2008.01.007
[5]
刘坤, 费树岷, 汪木兰, 等. 基于改进随机Hough变换的棉桃识别技术. 农业机械学报, 2010, 41(8): 160-165. DOI:10.3969/j.issn.1000-1298.2010.08.033
[6]
陈钦政, 赖惠成, 王星, 等. 一种基于支持向量机的棉花图像分割算法. 计算机工程, 2013, 39(5): 266-269. DOI:10.3969/j.issn.1000-3428.2013.05.058
[7]
Bochkovskiy A, Wang CY, Liao HYM. YOLOv4: Optimal speed and accuracy of object detection. arXiv preprint arXiv: 2004.10934, 2020.
[8]
Redmon J, Farhadi A. YOLOv3: An incremental improvement. arXiv preprint arXiv: 1804.02767, 2018.
[9]
Hu J, Shen L, Sun G. Squeeze-and-excitation networks. Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. Salt Lake City, UT, USA. 2018. 7132–7141.