2. 广西民族大学 人工智能学院, 南宁 530006
2. School of Artificial Intelligence, Guangxi Minzu University, Nanning 530006, China
柑橘是全球最重要的经济产物之一, 是世界第一大类水果, 也是我国南方栽培面积最广、经济地位最重要的果树[1]. 随着计算机硬件设备和人工智能技术的快速发展, 柑橘的识别和采摘也走向了机械化、智能化的道路, 基于深度学习的目标检测算法在这一领域成为研究热点.
目前目标检测方法大致分为两种, 一种是基于卷积神经网络(CNN)的两阶段法, 如R-CNN[2]、Fast R-CNN[3]、Faster R-CNN[4]等. 另一种是通过单个网络直接预测目标类别和边界框的单阶段法, 如SSD[5]和YOLO系列[6–9]. 相较于两阶段法, 单阶段法具备更简单的网络结构, 检测速度快, 更适合对速度要求较高的应用场景.
近年来, 针对农产品检测方法的研究仍在持续, 而单阶段法以其较强的实时性优势, 受到更多研究者的关注. 顾伟等[10]使用ResNet50替换SSD中的VGG16模型, 提高对群体棉花籽的感知能力. 薛月菊等[11]提出基于改进YOLOv2的未成熟芒果识别, 提高模型对环境的抗干扰能力. Tian等[12]为了在复杂环境下实现不同生长阶段的苹果检测, 将YOLOv3中的Darknet替换成DenseNet网络, 极大提升了模型的检测效率. 熊俊涛等[13]提出了Des-YOLOv3网络模型, 实现柑橘采摘机器人的夜间工作. 王晨等[14]基于YOLOv4网络, 引入 MobileNetV3并添加CBAM注意力机制, 使模型能够更好地满足对仓储货物的检测. 王梦妮等[15]基于YOLOv5s网络, 替换金字塔池化层为ASPP, 采用双向流动机制的BiFPN[16], 解决模型对茶叶嫩芽特征提取不足的缺点. 张瑶等[17]基于YOLOv8网络, 结合BiFormer双层路由注意力机制, 降低图片噪声的影响, 并且增加第4个检测头, 最终实现水面小目标的高精度检测.
目前, 在柑橘成熟度检测的研究中仍然存在果实遮挡、环境噪声干扰以及模型较大等问题, 这可能导致模型对目标定位和分类困难, 检测效率低下. 针对上述问题, 本文借助YOLOv8网络结构, 充分利用模型浅层特征信息, 并引入注意力机制, 提高模型对目标感知力及检测效率, 最后替换更加高效的特征提取模块, 实现模型轻量化.
1 果园环境下柑橘数据集的搭建 1.1 柑橘图像的采集为了更好地实现自然环境下对柑橘的检测, 实验所需的数据集采集于南宁市西乡塘区双定镇. 使用手机作为拍摄设备, 拍摄时间为2023年的10月至2024年1月之间, 包含柑橘的未成熟期、着色期和成熟期, 并在阴天和晴天两种不同光照条件下进行拍摄, 以帮助模型适应不同的光照和成熟度条件. 采集的数据效果如图1.
1.2 柑橘图像标注与预处理
在图像采集后, 对其进行筛选和清理, 删掉一些重复、过度模糊等不符合要求的样本, 保证训练数据的质量和有效性, 最终确定图像
将柑橘数据集以8:2比例划分为训练集和验证集. 训练时, 采用Mosaic数据增强方法, 随机选取4张图片进行翻转、缩放、色域变化等操作, 再将4张图片拼接成一张, 新的图片依然包含标注的所有信息, 有效地提高模型的性能和鲁棒性. 需要注意的是, YOLOv8在对最后10个epoch训练时自动关闭Mosaic数据增强.
2 YOLOv8n-CMD模型建立YOLOv8的网络结构主要由3部分组成: 主干网络(backbone)、颈部(neck)和头部(head).
Backbone部分主要是对图像的特征提取. 该部分使用Darknet-53网络结构, 由CBS模块、C2f模块和SPPF模块组成. 相比于YOLOv5模型, YOLOv8引入梯度流信息更丰富的C2f模块替换C3模块, C2f含有更多的跳层连接和额外的split操作, 能够更好地传递特征信息.
颈部结构neck也称为特征融合层. 通过融合来自主干网络的多层特征图, 捕捉不同层次的语义信息. YOLOv8采用PANet[18]双向通路网络思想, 引入自下而上的路径并结合下采样操作, 融合邻层的特征图信息, 保留图像的空间信息.
头部是网络结构中负责预测目标类别和位置的部分. YOLOv8采用解耦头(decoupled head)将分类和定位任务解耦, 引入无锚框(anchor-free)方法, 简化了目标检测流程.
本文以YOLOv8n为基础模型做出以下改进. 通过调整主干网络结构, 充分利用浅层信息, 提高小目标检测能力; 添加CBAM注意力机制, 减轻复杂光照影响, 提高模型准确率; 使用C2fGhost替换颈部的C2f模块, 减少模型参数量和计算量; 最后引入金字塔池化层SimSPPF, 提高模型检测效率, 最终得到适应果园环境下的柑橘成熟度检测模型YOLOv8n-CMD. 模型网络结构如图2所示.
2.1 主干网络的改进
在自然果园环境下, 柑橘果实重叠、枝叶遮挡的情况十分常见, 此外果实初期较小且颜色与背景极度相似, 使得模型漏检错检测的几率增大. YOLOv8模型通过多尺度融合技术将不同尺度的特征信息进行融合的方法, 提高目标检测任务的性能和鲁棒性. 然而随着模型深度的增加, 特征图数量增多, 大感受野的特征图在提供上下文信息的同时也引入了更多的环境噪声, 而对模型性能提升甚微, 造成计算资源的大量浪费. 针对此问题, 本文对主干网络backbone部分进行了优化.
首先在第1个CBS模块后添加了C2f层, 加强局部上下文信息的提取; 其次删除了最后一个C2f模块, 在降低背景噪声影响的同时, 缩小了模型大小; 最后, 将C2f的block数从3-6-6-3改为6-6-6-3, 以更低的计算代价提高小目标检测能力.
在柑橘目标检测任务中对于低级特征的判别对小目标检测至关重要[19]. 低级特征为模型提供柑橘目标的边缘轮廓、表面纹理和颜色分布等细节信息, 模型可以更好地识别目标, 并从背景中区分出来. 因此, 本文在特征融合阶段, 将1/16和1/32原图的尺度特征选择于CBS之后, 充分利用低级特征的边缘信息, 提高目标的定位和分类效果. 改进前后对比如图3所示. 实验证明, 优化后的网络模型对柑橘目标检测的性能提升明显.
2.2 C2fGhost模块
在自然果园环境中, 地形复杂性对柑橘检测带来了一定挑战. 同时, 较大的模型会对移动设备的性能造成负担, 导致检测不够灵活. 为了解决此问题, 本文引入Ghost[20]模块, 有效减少模型参数量, 降低模型复杂度.
Ghost卷积原理如图4所示. 传统的卷积神经网络在对图片进行特征提取时, 会产生大量的冗余信息, 但这些信息又是目标检测不可缺少的部分. 为了减少模型参数量和计算量, Ghost模块先使用普通卷积获得部分特征图, 然后采用更廉价的线性变换cheap operation生成更多的特征图信息, 最后将全部特征图在通道维度上进行拼接, 得到最终的输出特征图.
假设输入的特征图尺寸为h×w×c, 输出特征图尺寸为
$ \begin{split} {{{r}}_s} &= \frac{{{{n}} \cdot {h{'}} \cdot {w{'}} \cdot c \cdot k \cdot k}}{{\dfrac{n}{s} \cdot {h{'}} \cdot {w{'}} \cdot c \cdot k \cdot k + \left( {s - 1} \right) \cdot \dfrac{n}{s} \cdot {h{'}} \cdot {w{'}} \cdot d \cdot d}} \\ &= \dfrac{{c \cdot k \cdot k}}{{\dfrac{n}{s}c \cdot k \cdot k + \left( {s - 1} \right) \cdot \frac{n}{s} \cdot d \cdot d}} \approx \dfrac{{s \cdot c}}{{s + c - 1}} \approx s \end{split} $ | (1) |
$ {{{r}}_{{c}}} = \dfrac{{{n} \cdot c \cdot k \cdot k}}{{\dfrac{n}{s} \cdot c \cdot k \cdot k + \left( {s - 1} \right)\dfrac{n}{s} \cdot d \cdot d}} \approx \dfrac{{s \cdot c}}{{s + c - 1}} \approx s $ | (2) |
由于在网络设计中, k和d的取值相对接近, 且s会远大于c, 因此可知Ghost卷积的计算量和参数量约为普通卷积的1/s.
GhostBottleneck模块是将Ghost融入Bottleneck模块形成. 如图5, 当卷积步长stride=1时, 先经过两层Ghost卷积处理, 然后与输入特征图进行Add融合操作. 当卷积步长stride=2时, 在两个Ghost模块中间多加了一层stride=2的深度可分离卷积. 最后将C2f模块中所有的Bottleneck模块替换成GhostBottleneck, 得到全新的模块C2fGhost. C2fGhost模块结构如图6所示.
2.3 注意力机制CBAM
由于光照强度的不同使得果实的颜色产生一定的差异, 从而导致模型在果实的定位偏差和分类误判而影响精度. 因此, 本文引入双通道注意力CBAM模块, 模块结构如图7所示.
该模块由通道注意力模块(CAM)和空间注意力模块(SAM)串联构成. CAM通过对不同通道进行池化和全连接网络操作, 得到通道间的相关权重, 帮助网络更好地利用色彩信息, 提高分类判断能力. 而SAM通过在维度上应用卷积层学习特征图每个空间位置的权重, 使模型更加关注感兴趣的区域, 提高目标框的准确性和精度.
通过引入CBAM模块, 模型可以更好地适应光照强度变化引起的颜色差异, 从而减小果实定位偏差和分类误判的影响, 提高模型的整体精度.
2.4 金字塔池化层SimSPPFSPP (spatial pyramid pooling)[21]是一种将局部特征映射到不同维度空间并融合的池化方法, 避免多尺度特征融合阶段出现信息丢失等问题. YOLOv5中使用的SPPF是将SPP中并行连接的池化操作改为串行连接, 保持性能不变的情况下, 提高了运算效率.
本文引入的SimSPPF是将SPPF中CBS模块的激活函数SiLU替换成函数形式更简单的ReLU而得, 效率更为高效. SimSPPF模块结构如图8. 该模块首先进行卷积模块操作对输入特征图进行压缩, 然后经过3个相同的MaxPool2D池化, 以串联叠加的方式从中得到不同感受野信息的特征图, 然后将4个维度的特征图进行Concat融合, 最后再进行一次卷积升维.
3 实验结果与分析 3.1 实验环境和评价标准
本文实验模型训练于系统Ubuntu 20.04云服务器. 平台配置为: 12v CPU Intel(R) Xeon(R) Platinum 8255C CPU@2.50 GHz, 43 GB运行内存; RTX 3080显卡, 10 GB显存. Python版本为Python 3.8, 深度学习框架PyTorch 1.11.0, 配备CUDA 11.3加速模型训练.
模型训练过程中, 输入图片大小为640×640, 优化器选用AdamW, 学习率(learning rate)设置为
为了更好地评估模型性能了解模型优劣, 本文使用精确率(P)、召回率(R)、平均精度均值(mAP)、检测速度(FPS)、参数量(Params)、每秒浮点运算次数(GFLOPs)作为性能指标.
P表示被分类器正确预测为正例的样本数占所有被分类器预测为正例的样本数的比例. R表示被分类器正确预测为正例的样本数占所有真实正例的样本数的比例. 精确率和召回率表达式如下.
$ P = \frac{{TP}}{{TP + FP}} $ | (3) |
$ R = \frac{{TP}}{{TP + FN}} $ | (4) |
其中, TP (true positive)表示被分类器正确预测为正例的样本数, FP (false positive)表示被分类器错误地预测为正例的样本数. FN (false negative)表示被分类器错误地预测为负例的样本数.
将计算后的P和R分别当作纵坐标和横坐标画图, 绘制出P-R曲线, 而mAP是将各类别的P-R曲线进行积分后取平均所得.
$ {{m}}AP = \frac{1}{M}\sum\limits_{K = 1}^M {\int_0^1 {PR} {\mathrm{d}}R} $ | (5) |
FPS值反映模型在处理图像时每秒能够完成的推理次数, 是衡量模型的推理速度和实时性能的指标. Params和GFLOPs分别表示模型参数量和计算量大小, 是衡量模型复杂度和计算资源需求的重要指标.
3.2 消融实验为了验证改进后各模块对模型性能的提升, 本文进行了一系列的实验, 如表1所示. 其中“√”表示使用改进, “—”表示不使用改进, mAP50是模型在置信度阈值为50%时的平均精度, mAP50-90是置信度阈值在50%–90%之间的平均精度.
分析实验结果可知, 改进backbone后的网络模型其计算量略微增加, 但参数量大量减少, 召回率、mAP50和mAP50-90分别增长1.5%、1.2%、1.8%. 说明浅层的特征提取对柑橘的检测影响较大, 而backbone中增加的C2f模块和加强低级特征的提取, 极大地提升了目标的定位和分类效果. 在C2fGhost加入后, 模型参数量和计算量均有所下降, 然而mAP并没降低, 证实了使用cheap operation操作代替普通卷积的Ghost模块的高效性. 而添加SimSPPF后, 参数量几乎不变的情况下, FPS明显提升, mAP50增加了0.6%, 召回率提升了0.7%, 增强了模型的检测效率. 最后在CBAM引入后, mAP50和mAP50-90分别提高0.9%、0.7%, 模型精度显著提升.
3.3 不同模型的对比实验为了进一步验证YOLOv8n-CMD模型的优越性, 本文分别于YOLOv3-tiny、YOLOv5、YOLOv6、YOLOv7和原模型YOLOv8进行对比. 实验数据均使用自制的果园柑橘数据集, 实验结果如表2所示.
改进后的YOLOv8n-CMD模型相较于原模型, mAP50、mAP50-90、精准率和召回率分别提升了3.0%、2.9%、2.3%、2.4%, 参数量和计算量分别减少了31.8%和7.4%, FPS提高了10. YOLOv8与YOLOv8n-CMD的检测效果对比如图9, 改进后的模型对小目标精度提升明显, 漏检错检的情况也有了一定的改善.
与YOLOv3-tiny、YOLOv5、YOLOv6、YOLOv7相比, 在mAP50上分别提升了6.4%、2.3%、2.1%、1.7%, 参数量分别减少了 83.1%、18.1%、51.6%、74.7%. YOLOv8n-CMD模型除在计算量上比YOLOv5略高, FPS略低于YOLOv6以外, 其参数量、精准度、召回率、mAP50性能参数均为最佳. 综上所述, 本文提出的模型与目前主流模型相比, 具备更高的准确率的同时模型更加地轻量化, 验证了算法的有效性.
4 结论本文提出一种基于改进YOLOv8n的轻量化柑橘成熟度检测算法, 通过优化backbone部分提高模型对柑橘的感知能力, 引入Ghost技术并与C2f模块融合以减小模型大小, 添加CBAM注意力机制降低环境噪声干扰, 并采用SimSPPF算法来加速模型检测效率. 在柑橘成熟度检测任务上进行实验验证, 结果显示该算法相比原模型mAP提高了3.0%, 同时参数量和计算量分别减少了31.8%和7.4%, 模型检测速度达90.12 f/s完全满足柑橘的实时性检测任务, 为果园管理和优化提供有力支持.
[1] |
郭文武, 叶俊丽, 邓秀新. 新中国果树科学研究70年——柑橘. 果树学报, 2019, 36(10): 1264-1272. |
[2] |
Girshick R, Donahue J, Darrell T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation. Proceedings of the 2014 IEEE Conference on Computer Vision and Pattern Recognition. Columbus: IEEE, 2014. 580–587. [doi: 10.1109/cvpr.2014.81]
|
[3] |
Girshick R. Fast R-CNN. Proceedings of the 2015 IEEE International Conference on Computer Vision (ICCV). Santiago: IEEE, 2015. 1440–1448.
|
[4] |
Ren SQ, He KM , Girshick R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(6): 1137–1149.
|
[5] |
Liu W, Anguelov D, Erhan D, et al. SSD: Single shot multibox detector. Proceedings of the 14th European Conference on Computer Vision (ECCV 2016). Amsterdam: Springer, 2016. 21–37. [doi: 10.1007/978-3-319-46448-0_2]
|
[6] |
Redmon J, Divvala S, Girshick R, et al. You only look once: Unified, real-time object detection. Proceedings of the 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Las Vegas: IEEE, 2016. 779–788. [doi: 10.1109/cvpr.2016.91]
|
[7] |
Redmon J, Farhadi A. YOLO9000: Better, faster, stronger. Proceedings of the 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Honolulu: IEEE, 2017. 6517–6525. [doi: 10.1109/cvpr.2017.690]
|
[8] |
Redmon J, Farhadi A. YOLOv3: An incremental improvement. arXiv:1804.02767, 2018.
|
[9] |
Wang CY, Bochkovskiy A, Liao HYM. YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors. arXiv:2207.02696, 2022.
|
[10] |
顾伟, 王巧华, 李庆旭, 等. 基于改进SSD的棉种破损检测. 华中农业大学报, 2021, 40(3): 278-285. |
[11] |
薛月菊, 黄宁, 涂淑琴, 等. 未成熟芒果的改进YOLOv2识别方法. 农业工程学报, 2018, 34(7): 173-179. |
[12] |
Tian YN, Yang GD, Wang Z, et al. Apple detection during different growth stages in orchards using the improved YOLO-V3 model. Computers and Electronics in Agriculture, 2019, 157: 417-426. DOI:10.1016/j.compag.2019.01.012 |
[13] |
熊俊涛, 郑镇辉, 梁嘉恩, 等. 基于改进YOLOv3网络的夜间环境柑橘识别方法. 农业机械学报, 2020, 51(4): 199-206. |
[14] |
王晨, 袁庆霓, 白欢, 等. 面向仓储货物的轻量化目标检测算法. 激光与光电子学进展, 2022, 59(24): 2410007. |
[15] |
王梦妮, 顾寄南, 王化佳, 等. 基于改进YOLOv5s模型的茶叶嫩芽识别方法. 农业工程学报, 2023, 39(12): 150-157. |
[16] |
Tan MX, Pang RM, Le QV. EfficientDet: Scalable and efficient object detection. Proceedings of the 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). Seattle: IEEE, 2020. 10778–10787. [doi: 10.1109/cvpr42600.2020.01079]
|
[17] |
张瑶, 陈姚节. 改进YOLOv8的水面小目标检测算法. 计算机系统应用, 2024, 33(4): 152-161. DOI:10.15888/j.cnki.csa.009445 |
[18] |
Liu S, Qi L, Qin H, et al. Path aggregation network for instance segmentation. Proceedings of the 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Salt Lake City: IEEE, 2018. 8759–8768. [doi: 10.1109/cvpr.2018.00913]
|
[19] |
刘建政, 梁鸿, 崔学荣, 等. 融入特征融合与特征增强的SSD目标检测. 计算机工程与应用, 2022, 58(11): 150-159. |
[20] |
Han K, Wang YH, Tian Q, et al. GhostNet: More features from cheap operations. Proceedings of the 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Seattle: IEEE, 2020. 1577–1586.
|
[21] |
He KM, Zhang XY, Ren SQ, et al. Spatial pyramid pooling in deep convolutional networks for visual recognition. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2015, 37(9): 1904-1916. DOI:10.1109/TPAMI.2015.2389824 |