基于改进YOLOv5s的轻量级桃子检测算法

2023-03-24 20:31赵红梅文嘉睿
电脑知识与技术 2023年4期
关键词:注意力机制轻量化

赵红梅 文嘉睿

关键词:桃子检测; YOLOv5s; MobileNetv3; 注意力机制; 轻量化

1 引言

目前我国是世界上最大的桃子生产国,占世界总产量的60%以上,且每年呈上涨趋势[1]。当大量的桃子成熟时,需要大量的人工去进行采摘,耗时耗力,效率低下,而且随着人们生活水平的提升,对桃子的外观、口感要求也越发的高,对桃子采摘也提出了一定的要求。所以,研究桃子的自动采摘技术很有意义。其中,如何快速、准确地检测桃子目标成为桃子自动采摘技术的关键。

目前在水果的目标检测领域,以檢测苹果为主要研究目标,针对桃子的目标检测研究较少,而且大多数采用传统的图像处理方式,在果园这种果实被枝叶遮挡、果实重叠遮挡、光照复杂等复杂环境下,检测的准确度较低,另外果实采摘系统的嵌入式平台一般算力有限,复杂的模型很难满足检测速度的实时性要求。因此,在保证桃子检测精度的同时,提高桃子检测的速度成为桃子检测的研究难点和热点。

近年来,随着人工智能技术的飞速发展,基于深度学习的目标检测算法发展迅速,主要分为两类:第一类是以R-CNN[2-4]系列为代表的二阶段目标检测算法,该类算法先生成建议目标框,然后再对建议目标框内的物体进行分类和位置的回归;第二类是以YOLO[5-8]系列、SSD[9]系列为代表的一阶段目标检测算法,该类方法无须生成建议目标框的阶段,而是直接对图像进行卷积提取特征,然后在特征图上进行目标位置的回归,减少了检测的时间,但是会在一定程度上影响精度,但是在对实时性要求比较高的应用场景下,一阶段目标检测算法应用更为广泛[10]。

本文以目标检测算法中性能比较好的YOLOv5s 网络模型为基础,提出一种改进YOLOv5s的轻量级桃子检测算法,用更轻量的MobileNetv3网络替换主干特征提取网络,以实现网络模型的轻量化,平衡速度与精度;然后将通道注意机制SE模块替换为更高效的ECA模块。

2 YOLOv5s 算法

YOLOv5算法是YOLO系列算法的一个延伸,由Ultralytics公司在2020年提出的,是目前从检测精度与速度上来说较为优秀的一阶段检测网络模型。依据模型的不同深度和宽度,可以分为五个基准模型:YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x。其中YOLOv5s是模型较小的同时精度较高的一个,更适合轻量化的桃子检测,因此本文选取YOLOv5s模型作为基准模型进行改进。YOLOv5s模型主要包括In?put、Backone、Neck以及Head这四个部分,其网络结构如图1所示。

Input部分进行图像预处理,采用Mosaic数据增强、自动计算锚框、自适应图片缩放等方法。Mosaic 数据增强选取多张图片,采用随机裁剪、随机缩放、随机排布的方式进行图像拼接,扩张了检测数据集,特别是很多小目标被随机缩放后,增加了样本的多样性,使得网络模型更加鲁棒。

预处理之后的图像再输入到Backbone部分提取丰富的图像特征,包括边缘特征、纹理特征以及位置特征等。Backbone 主干网络主要包括Focus 模块、CSP模块[11]以及SPP模块[12]。其中Focus模块的切片操作,将高分辨率的特征图拆分成多个低分辨率的特征图,然后拼接在一起,再经过一次卷积,能够减少计算量的同时降低内存的使用量;而CSP模块主要用于局部跨通道融合,将原输入分成两条处理线,分别进行卷积操作,使得通道数缩减为原来一半,然后另外一条处理线进行多个Bottleneck操作,然后拼接两条处理线上的特征图,使得输入与输出是一样的大小,增强了网络对特征的融合能力;SPP模块是空间金字塔池化层,采用统一的步长但不同尺寸的卷积核实现,统一步长代表输出的特征图尺寸一样,再通过concate按通道拼接后用1×1卷积,实现特征融合,可以进一步提高检测精度;CBL模块是由卷积层(Conv) 、归一化层(BN) 、激活函数SiLu构成,主要作用是可以从深层和浅层特征图中提取上下文信息。

Neck部分主要包含FPN和PAN结构,其中FPN 结构通过自顶向下进行上采样,将高层的语义信息带给底层的特征图,而PAN结构自底向上进行下采样,将底层的位置信息带给高层的特征图,然后将高层和底层的特征图进行拼接,使得更强的语义信息和位置信息被不同尺度的特征图所包含,增强了网络的特征提取能力。

Head部分对获取到的三种不同尺度特征图像,预测类别概率、置信度以及预测框进行损失函数的计算,同时采用非极大值抑制预测置信度较高的预测框。其中,三种尺度分别是20×20、40×40、80×80,采用的损失函数是GIOU_Loss[13]。

3 YOLOv5s 算法改进

3.1 主干网络的改进

YOLOv5s是多目标检测模型,而本文所研究的桃子检测仅对桃子这一类目标进行检测,使得原始模型存在一定的参数冗余,而且目前大多数采摘机器人上安装的嵌入式设备用于部署目标检测模型,其计算和存储资源有限,因此有必要对模型进行轻量化的改进。

MobileNet网络是Google针对手机等嵌入式设备提出的一种轻量的深层神经网络,采用可分离的卷积以及反向残差结构的思想进行模型构建[14],在模型延迟和准确率中寻找平衡点,具有模型小和性能优等特点。可分离卷积由深度卷积和逐点卷积构成,深度卷积为每个数据的输入通道设置不同尺寸的卷积核,逐点卷积为每个数据设置尺寸为1的固定卷积核。两种类型的卷积结合后相当于一个标准的卷积,但是大大降低了参数数量以及运算量。然而对比其他的卷积神经网络,MobileNet网络模型的精度仍然存在提升的空间。

MobileNetv3[15]是在MobileNetv2网络的基础上,融合了SE模块[16]以及Swish激活函数构成,其主干网络Bneck结构如下图2所示,首先对输入的特征利用一个1×1的卷积层进行升维,扩张通道数后进行可分离卷积特征提取,再引入残差结构。MobileNetv3网络会将提取到的图像特征输入到注意力SE模块中,全局平均池化后再输入到全连接层FC1,通道数缩减为原来的1/4,再经过激活函数Relu,FC2将通道数扩张回原来的大小,之后再接一个h-swish激活函数,减少运算量,提高性能。

3.2 ECA 注意力机制

基于深度学习的目标检测技术在计算机视觉领域已经得到了广泛应用,然后面对复杂环境下的多尺度目标检测时,仍然面临着检测精度不够高、定位不够准确等问题。目前,大部分是在检测基准模型上增强多尺度特征以及引入注意力机制模块。

MobileNetv3网络模型中采用的是注意力机制中的SE模块,通过两个全连接层融合通道特征,该全连接层使得SE模块不具备轻量级,之后的特征降维使得通道与其预测权值没有直接联系,影响SE模块的整体性能。

ECA模块是一种超轻量级的注意力模块,其对SE 模块进行了一些改进,提出了一种不降维的局部跨通道融合方法,通过一维卷积高效地实现局部跨通道交互,提取通道间的依赖关系,适当的跨通道交互可以在显著降低模型复杂度的同时保持性能,因此本文采用ECA模块替换MobileNetv3中的SE模块。

4 实验结果与分析

4.1 实验平台

本实验的平台采用PyTorch1.8.1深度学习框架,计算机操作系统为ubuntu18.04,Python 版本为3.8,Cuda版本为11.1,CPU为7核的Intel(R) Xeon(R) CPUE5-2680 v4 @ 2.40GHz,内存为16GB,GPU为NVIDIATITAN Xp,显存大小为12GB。

4.2 数据集准备

本文实验使用的数据集由两部分组成。第一部分来自Fruit-360这个开源数据集,这个数据集包括120种水果和蔬菜,其中每张图像都是在实验室进行采集,然后去除了背景,只剩下目标物体,本文提取了其中Peach品种的桃子图像,共计492张图像。第二部分数据集使用自建数据集,图像来自于互联网,以桃子为关键词进行搜索获得,经过数据筛选,保留了629张图像。这两部分数据集加起来一共1121张图像,使用lableImg标注图像中的桃子目标框,并以8:2 的比例将其分为训练集896张,验证集225张。

4.3 训练参数设置

本文采用YOLOv5s模型进行训练,优化器采用SGD,训练200轮迭代,批次大小设置为64,初始化学习率为0.01,采用mosaic进行数据增强。

4.4 评价指标

本文采用精确率(Precision) 、召回率(Recall) 、平均精度(Average Precision,AP) 这几个指标对模型进行检测精度评价,精确率表示预测正样本中真正的正样本的比例,召回率表示预测正样本中真正的正样本占实际正样本的比例,平均精度AP值是由召回率和精确率分别为横坐标和纵坐标围成的区域面积计算得来。其中,数值越大,模型的检测精度越高。

此外,采用以下兩方面指标作为模型的性能评价指标,模型内存占用量、每秒浮点运算量(FloatingpointOperations Per Second,FLOPs) ,其中,数值越小,模型的运行速度越快。

4.5 实验结果分析

本文方法在自建数据集上的训练精度曲线如图5 所示,在经过50轮迭代后训练精度曲线逐渐收敛,100 轮迭代后逐渐趋于稳定,曲线没有出现欠拟合或者过拟合的现象,训练精度较为理想。

本文方法在自建数据集上训练200轮迭代后,得到模型的精确率为89.7%,召回率为85.5%,AP 为92.9%,检测不同遮挡情况下的桃子目标的效果如图6 所示,其中检测框上方显示目标名称以及置信度,图中不同遮挡和大小的桃子目标都可准确检测到,表明该算法能够在复杂环境下有效地检测出桃子目标,适用于果园这种枝叶遮挡、果实重叠遮挡、光照复杂的环境。

为了评价MobileNetv3替换YOLOv5s主干网络的性能提升效果,表1中对比了这两个网络模型的各项评价指标,从中可以发现,改进后的模型内存占用量大大降低了,从原来的14.5MB降到了3.2MB,每秒浮点运算量从原来的15.8GFLOPs降到了2.3GFLOPs,但是损失了一点精度,精确率降低了0.8%,召回率降低了3%,AP降低了0.6%。

为了评价ECA模块对于本文网络(YOLOv5s+Mo?bileNetv3,即用MobileNetv3 替换YOLOv5s 中的主干网络)的提升效果,分别基于SE、CA、ECA、CBAM注意力机制对网络进行改进,并且进行训练,然后对以上4 种注意力机制进行评估,如表2所示。其中,ECA模块的模型内存占用量最低,从SE模块的3.2MB降到了2.3MB,同时精确率、召回率、AP是4种注意力机制中最高的,在SE模块的基础上都有一点提升,分别从精确度89%、召回率86.7%提高到89.7%、87.5%,实验表明使用ECA模块替换SE模块是有效的。

综合考虑桃子检测模型的检测精度和性能,相比改进前的YOLOv5s模型,本文的模型更加适用于嵌入式平台上的桃子模型部署,在保证精度的前提下拥有较高的检测性能。

5 结论

本文提出了一种基于改进YOLOv5s的轻量级桃子检测算法,首先选用轻量级的卷积神经网络模型MobileNetv3替换YOLOv5s中的主干网络,在保持高精度的同时,降低网络模型大小,加快检测速度;其次对比4种类型注意力机制模块对模型性能的影响,选择性能最优的ECA模块替换MobileNetv3中的SE模块,提高通道信息的融合效率,进而提高网络模型的检测精度以及性能。实验表明,本文所提出的桃子检测算法与YOLOv5s相比,模型内存占用量从14.5MB 降到了2.3MB,只有原来的15.8%,模型计算量GFLOPs从原来的15.8降到了1.9,只有原来的12%,而精度上损失一点,精确率从原来的89.8%降低到89.7%,降低了0.1%,召回率从原来的89.7%降低到87.5%,降低了2.2%,AP从原来的93.5%降低到92.9%降低了0.6%,比起模型内存占用量和计算量上的性能提升,这点精度上损失要小很多,更适合移植到嵌入式系统中。

猜你喜欢
注意力机制轻量化
汽车轻量化集成制造专题主编
四点接触球转盘轴承的轻量化材料应用
基于LSTM?Attention神经网络的文本特征提取方法
InsunKBQA:一个基于知识库的问答系统
425轻量化桥轴承座工艺改进
瞄准挂车轻量化 锣响挂车正式挂牌成立
用户:轻量化挂车的使用体验