APP下载

基于改进YOLOX的草莓检测算法

2023-06-09杨小健陶青川

现代计算机 2023年6期
关键词:主干网空洞草莓

杨小健,陶青川

(四川大学电子信息学院,成都 610065)

0 引言

草莓作为一种周期短、见效快的经济作物,在现代农业中占据着十分重要的位置。数据显示,中国已经成为当前世界上最大的草莓生产国与消费国,年产量超过300万吨,占全世界产量的50% 以上[1]。而在采摘方式上,目前主要还是以传统的人工采摘为主,随着种植规模的不断扩大,人工采摘费时费力、成本较高的弊端愈发明显,并且大量采摘工人在种植区域长时间作业也会对植株造成一定程度的损伤,导致减产减收。随着现代农业的不断发展,越来越多的智能化技术、设备进入到农业生产中,这使得草莓的自动化采摘成为可能。自动化采摘最重要的前提,是能够准确定位草莓并对成熟度做出判断,在此基础上依靠精细的机械设备完成采摘过程。

基于深度学习的目标检测算法经过多年的发展已经相当成熟,目前已经有许多将其应用到农业生产中并取得成功的先例。马玲[2]研究了一种基于深度学习的目标检测与语义分割算法用于苹果叶面的病虫害识别,解决了复杂背景下小目标病斑人眼难以识别的问题。Tian等[3]研究了一种目标检测算法,通过检测不同生长阶段的苹果以达到预估产量的目的,这些都为深度学习在农业生产领域的研究与推广提供了成功依据。

基于深度学习的目标检测算法可以分为以R⁃CNN[4]、SPP⁃Net[5]。等为代表的两阶段检测算法和以SSD[6]、YOLO[7⁃12]系列为代表的一阶段检测算法。其中,两阶段检测又称基于候选区域(region proposal)的目标检测算法,首先提取物体区域,再对提取区域进行CNN 分类识别;而一阶段检测算法则是直接分出具体类别并对边框进行回归。相比于两阶段检测算法,一阶段检测算法具有更快的推理速度,但精度也会有一定的损失。随着目标检测的发展,YOLO系列始终追求实时应用的最佳速度与精度平衡,目前已经集成了大量的优化策略(trick),在保证实时性的同时,也具备了较高的检测精度。

2021 年,旷视科技在YOLOv3 的基础上提出了YOLOX 网络,不同于之前的YOLO 系列网络,YOLOX使用了无锚框(anchor free)的检测机制,采用Decoupled Head 使得预测分支解耦,并使用SimOTA 标签分配规则,最终在保持推理时间不变或下降的前提下,相较YOLO 系列之前的网络平均精确率(AP)得到了提升。同时,和YOLOv5 一样,YOLOX 也提供了多个不同深度、 宽度的模型供不同场景选择, 其中YOLOX⁃S 只有9 M 的参数量,在V100 显卡上推理速度仅为9.8 ms。但是,考虑到草莓采摘设备所携带的边缘设备算力有限,即便YOLOX⁃S 在GPU 上的速度已经足够快,但要想部署到边缘设备仍需要进一步缩减模型、降低计算量。

本文选取YOLOX 中最小的模型YOLOX⁃S为基础进行改进,首先使用MobileNetV3[13]重新构建主干网络以降低网络参数量,然后引入ASPP[14]获取多尺度特征,最后对主干网输出的三个特征使用通道注意力机制。最终,改进的YOLOX⁃S 网络在自建的草莓数据集上取得了不错的检测效果。

1 研究方法

1.1 YOLOX网络概述

YOLOX 是旷视科技2021 年在YOLOv3 基础上改进提出的目标检测网络,设计之初考虑到YOLOv4、YOLOv5 已经相继在基于锚框(anchor base)机制的YOLOv3 基础上做出了许多改进,可能会存在过度优化的问题,所以YOLOX 选择以YOLOv3 为基础来进行构建。和YOLO 系列之前的网络一样,整体仍然由负责提取特征的backbone、负责多尺度特征融合的neck 以及负责预测的head 三部分组成。backbone 基本沿用了CSPDarknet53 结构并做了部分微调,其主要包括Focus、CBS、CSPLayer、SPP等结构。Focus用于将输入图像按照像素切分并从维度方向进行拼接,扩展通道的同时降低输入图像的尺寸;CBS 是网络中最小,也最基本的组件,它由Conv2d、 BN 和SiLU 激活函数组合而成; CS⁃Player 是backbone 中最重要的部分,结构如图1所示,首先通过两个1*1卷积将输入划分为两部分,在其中一部分的后面接上若干个残差块用于提取特征,之后和另一部分在通道方向上进行拼接,再通过一个1*1 卷积进一步融合;SPP是一个空间金字塔池化层,用于扩大感受野,融合不同尺度特征图的信息。YOLOX 的neck 部分采用了FPN+PAN 的结构进行特征融合(fea⁃ture fusion),首先将高层的特征信息通过上采样的方式向低层融合,再通过下采样融合方式得到用于预测的特征图,这种方式能够将高层特征图丰富的语义信息和低层特征图的位置信息充分融合,以此来提高检测精度。最后使用解耦的检测头(decoupled head)对结果进行预测,加快网络收敛速度的同时,也能一定程度地提升检测精度。

图1 YOLOX网络结构

YOLOX 最大的改进点在于使用了解耦的检测头。相较于两阶段目标检测算法,一阶段目标检测算法难免面临分类任务和回归任务的冲突,因此很多一阶段检测器都选择使用解耦的检测头。YOLO 系列之前的网络针对特征提取、特征融合部分作了诸多改进,但是在head 部分始终使用的是耦合的检测头,YOLOX 通过两个分析实验表明耦合的检测头可能会影响性能,特别是在端到端的版本中,耦合检测头对性能的影响尤其明显。如图2 所示,对于neck 部分的输出特征图,Decoupled Head 首先使用一个1*1 卷积将通道数转换至256,然后分别有两个3*3 卷积的并行分支用于处理分类和回归任务,回归任务中又分为预测检测框信息和预测是否存在目标信息两个部分,最后将三部分在维度方向进行拼接。YOLOX 论文中的实验证明,这种解耦的检测头比耦合检测头收敛速度快很多,并且检测精度也得到了少量的提升。

图2 Decoupled Head结构

1.2 网络改进

本文在YOLOX‑S 的基础上进行改进,以降低参数量并尽可能地保持模型的检测精度。首先将主干网替换为轻量化网络MobileNetV3,然后在MobileNetV3 最后一个输出特征之后引入融合了空洞卷积的ASPP 获取多尺度特征,最后对输出到neck的三个特征图分别使用ECA[15]。注意力机制以增强网络的表示能力。

1.2.1 使用MobileNetV3构建主干网

MobileNet 是Google 提出的一种小巧而高效的CNN 模型,其核心在于深度可分离卷积(dep‑thwise separable convolution)。它将传统卷积拆分为对每个特征通道分别做处理的深度卷积和进行通道信息交互的点卷积。简单的计算表明,深度可分离卷积相较于普通卷积能够大大降低计算量,以C1表示深度可分离卷积的计算开销,C2表示传统卷积的计算开销,则它们之间的关系可以表示为

其中:N为输出通道数;Dk为卷积核大小。

MobileNetV2[16]在MobileNetV1[17]的 基 础 上借鉴了ResNet[18]的思想引入倒残差结构(inverted residuals),并在结构的最后一层采用线性层(linear bottlenecks),使得模型具有更高的精度以及更小的参数量。MobileNetV3 引入SE[19]结构,这是一种通道注意力机制,用于帮助网络更好地学习特征。此外,MobileNetV3 提供了两种不同规格的模型MobileNetV3⁃Small 和Mobile⁃NetV3⁃Large, 本 文 通 过 实 验 测 试 表 明, 将YOLOX 的主干网分别替换为这两种结构时,模型的mAP 基本相同,但MobileNetV3⁃Small 的网络深度更低,参数量更小,因此选用Mobile⁃NetV3⁃Small替换YOLOX主干网进行网络构建。

表1所示是MobileNetV3⁃Small 的网络结构,其中,exp size 表示bneck 中第一个升维卷积将特征图变换到多少维度,SE 代表是否使用SE注意力模块,NL代表激活函数,MobileNetV3中主要有ReLU6及两种激活函数,表达式如下:

表1 MobileNetV3⁃Small网络结构

bneck 即bottleneck,是MobileNetV3 的核心组件,它由ResNet 中的bottleneck 演化而来,其结构如图3所示。ResNet中的残差模块为了降低计算量,先通过1*1 卷积降维,然后3*3 卷积提取特征,最后再通过1*1卷积升维得到输出的特征,考虑到一开始的降维会导致高维特征信息丢失,MobileNetV2 设计了先升维再降维的倒残差结构来避免特征信息丢失,并且得益于深度可分离卷积的使用,这种结构依然可以保持很小的计算开销,最后在3*3 卷积后嵌入SE 模块就得到了MobileNetV3的bottleneck结构。

图3 ResNet、MobileNetV2、MobileNetV3的bottleneck结构

1.2.2 引入空洞卷积池化金字塔(ASPP)

YOLOX 原主干网中的SPP 模块首先对输入特征进行1 × 1、5 × 5、9 × 9、13 × 13 的最大池化,得到具有不同尺度的特征,再进行维度拼接从而实现多尺度特征融合,使输出特征包含的信息更加全面。最大池化的目的是获得对输入特征更大的感受野,但同时也会使得特征的分辨率下降导致与图像边界相关的细节信息丢失,空洞卷积的出现解决了这一问题。ASPP实现了结合空洞卷积的空间金字塔池化,本文将YOLOX 的主干网替换为MobileNetV3⁃Small后,在最后一个输出特征图之后引入ASPP 模块,以获取多尺度的特征信息。

为了介绍ASPP,这里先简单介绍空洞卷积。空洞卷积是通过在卷积核中填充0来扩大感受野,相当于卷积核变大了,但参数量却保持不变。如图4 所示,空洞卷积的额外参数dilate rate表示卷积核中空洞的大小加1。(a)中rate为1,空洞大小为0,表示普通卷积,感受野为3 × 3;(b)中rate 为2,空洞大小为1,感受野为5 × 5;(c)中rate为3,空洞大小为2,感受野为7 × 7。

图4 空洞卷积

如图5所示,ASPP 中使用一个1*1 卷积和三个膨胀率分别为6、12、18的空洞卷积来捕获多尺度信息,最后在维度方向上进行拼接。相较于YOLOX原网络中使用的SPP模块,ASPP能够减少池化导致的特征信息丢失,从而提高检测性能。在实验中,考虑到输入到ASPP 模块的特征尺寸较小(20 × 20),因此适当减小三个空洞卷积的膨胀率使其更加适配,经过实验测试,在选取三个膨胀率分别为4、8、12 时取得了最佳的检测效果。

图5 ASPP结构

此外,由于添加的ASPP 位于backbone 的末端,通道数较大,其中的三个3*3空洞卷积会极大增加模型的参数量,降低推理速度,因此将其替换为深度可分离卷积,从而尽可能地降低引入该模块带来的参数量。

1.2.3 添加ECA注意力机制

在神经网络中,注意力机制的思想是给不同的输入部分分配不同的权重,具体实现是通过一个额外的神经网络来学习不同输入部分的重要程度,从而重点关注重要的通道,抑制不重要的通道,以此来提高网络的学习能力。SE通道注意力机制就是通过显式建模卷积特征通道之间的相互依赖性来提高网络的表示能力。其首先通过全局平均池化将H×W×C的特征图转换为1 × 1 ×C的特征向量,每个通道映射为一个具有全局感受野的数,然后通过有两个全连接层的激励(Excitation)网络得到每个通道的权重,最后将权重与输入特征逐通道相乘,得到输出特征。Wang 等[15]通过对SE 的分析,认为SE 中两个全连接层为了降低模型计算复杂度而对通道进行先缩减再扩张的操作会带来副作用,而且对所有特征通道的相关性进行捕获是低效且不必要的,基于此提出了ECA 注意力模块,该模块使用自适应的一维卷积来捕获每一个通道所在k个邻近通道的相关性,从而得到每个通道的权重,并且相比全连接具有更少的计算量,这里的k是一维卷积核的大小,其计算方法如下:

ECA注意力机制的实现过程如图6所示,首先通过全局平均池化,将H×W×C的特征矩阵变换为1 × 1 ×C的特征向量,根据输入特征图的通道数计算得到自适应的一维卷积核ker⁃nel_size,然后将kerner_size 用于一维卷积中得到对于整个特征图每个通道的权重,最后将归一化的权重和原输入特征图逐通道相乘得到加权后的特征图。

图6 ECA注意力机制

本文对backbone 输出的三个特征图分别使用ECA 注意力机制,从而提升网络的表示能力。最终,改进的网络结构如图7所示。

图7 改进的YOLOX结构

2 实验与分析

2.1 数据集构建

通过在草莓种植园拍摄视频再抽帧的方式获 得 原 始 图 片2544 张, 包 括4000 × 2252 和1920 × 1080 两种分辨率,部分数据实例如图8所示。按照实际的采摘需求设置半熟草莓、成熟草莓两种类别的检测目标,训练集和验证集按照9∶1 的比例划分,其中训练集2289 张,验证集255 张,使用labelme 标注软件将数据标注为json 格式的标签文件,再通过Python 脚本转换为coco2017格式进行训练。

图8 草莓数据集

2.2 实验平台配置

实验训练平台软硬件参数如表2所示。

表2 实验平台参数

2.3 实验结果

YOLOX 论文中epoch 为300,在实验过程中发现loss收敛速度较快,因此本次实验统一设置训练epoch 为200,batch_size 为32,图片大小为640 × 640,使用YOLOX⁃S 官方预训练权重。采用目标检测常用指标召回率AR、平均精确率(average precision,AP)、平均精度均值(mean average precision,mAP)、参数量、推理速度等对模型进行评估。其中,召回率定义为正确识别为正例样本数与总正例样本数的比值,反映模型的漏检程度;精确率定义为正确识别为正例样本数与总识别为正例样本数的比值,反映模型的误检程度,计算公式如下:

2.3.1 轻量化实验

MobileNet 和ShuffleNet 是常见的轻量特征提取网络,本文分别使用MobileNetV3⁃Small、MobileNetV3⁃Large、 ShuffleNetV2(0.5×)来构建YOLOX 的主干网络,表3 显示了使用原主干网以及使用替换的主干网模型的参数量与mAP值。

表3 使用不同主干网模型参数量与精度对比

可以看出,相较于YOLOX⁃S 原始的主干网CSPDarknet53, 使用三个不同的网络替换YOLOX⁃S主干网后,参数量都有了大幅的下降,但与此同时,mAP 也有了一定程度的损失。替换后三个模型的mAP 值基本持平,但Mobile⁃NetV3⁃Small具有最小的参数量,因此选用Mobile⁃NetV3⁃Small 作为主干网络,后续实验在此基础上展开。

2.3.2 模型优化实验

确定MobileNetV3 为主干网之后,依次添加ASPP 模块与ECA 模块来提升模型精度,并选取参数量相当的YOLOv5⁃S 作为对比,表4 显示了实验结果。其中,YOLOX⁃S⁃MN 表示主干网替换为MobileNetV3⁃Small的网络,YOLOX⁃S⁃MN⁃A表示替换主干网并引入ASPP的网络,YOLOX⁃S⁃MN⁃A⁃E 表示替换主干网并引入ASPP、ECA 的网络,表中bs、qs 分别代表半熟草莓与全熟草莓,部分检测结果如图9所示。

表4 改进YOLOX算法效果对比

图9 改进前后模型检测效果对比

可以看出,改进之后的模型相较于改进前,参数量降低了68%,浮点计算量降低了58%,同时召回率提高了近3%,mAP 基本不变,即保证了检测精度。

2.3.3 CPU推理速度验证实验

本文草莓采摘设备实际搭载的计算设备为DTB⁃3033⁃H310 工控机,无GPU,CPU 型号为Intel Core i5-8500,表5 显示了改进前后的模型在CPU上的推理速度。

表5 CPU推理速度对比

实验表明,即便只有9 M参数量的YOLOX⁃S模型,在CPU 上的推理速度依然较慢,而改进之后的模型推理速度提为原来的1.9 倍,说明对网络的改进是成功的。

3 结语

本文针对机械臂自动采摘草莓场景,对YOLOX 网络进行轻量化改进,同时使用计算开销较小的空洞卷积池化金字塔ASPP与ECA 注意力机制来弥补轻量化带来的模型精度损失。在自建的草莓数据集上的实验表明,模型参数量、计算量大幅下降,在CPU 上的推理速度相较于改进前的网络也得到了极大的提升,为模型在边缘设备上的部署以及后续采摘任务的进行提供了前提条件。但是,从整体上看,模型在CPU 上的推理速度相较于GPU 仍然有较大的差距,还具有较大的提升空间。

猜你喜欢

主干网空洞草莓
CERNET主干网总流量平稳上升
基于MPLS L3 VPN的海洋信息通信网主干网组网设计
封面报道
草莓
空洞的眼神
高速公路联网收费通信主干网维护管理探讨
用事实说话胜过空洞的说教——以教育类报道为例
臭氧层空洞也是帮凶
班有活宝