基于改进YOLOv5s的饰品检测算法研究
2023-11-25凡宁宁孙成宇陈虹宇
凡宁宁,刘 爽,刘 佳,孙成宇,陈虹宇
(大连民族大学 计算机科学与工程学院,辽宁 大连 116650)
近年来,随着深度学习技术的快速发展,目标检测技术已经在许多领域中得到广泛应用。然而,在复杂场景中进行人物饰品检测仍然是一个具有挑战性的问题。人物饰品外观特征复杂多变,尺寸比例有较大差异,在面临多个人物和饰品的交叉遮挡、姿态变化、光照变化等影响因素时,大多数检测模型的效果并不理想。因此,研究一种更准确的人物饰品检测算法具有重要意义。
在传统的饰品检测方法中,基于Haar-like[1]特征和HOG[2]特征的方法已经被广泛使用,但是这些方法需要手工选择特征和调整参数,存在工作量较大且准确率较低等问题。相比之下,深度学习方法不需要人为地设计特征,可以直接从数据中学习到最优的特征表示,因此在饰品检测算法研究中也得到了广泛的应用。
主流的深度学习目标检测方法主要分成两种类别。一类是one-stage算法,例如YOLO[3]和SSD[4]是基于回归思想的单阶段检测算法;另一类是two-stage算法,例如R-CNN[5]、Faster R-CNN[6]和Mask R-CNN[7]是基于候选框的两阶段检测方法[8]。针对饰品识别任务,研究者们通过对YOLO系列算法进行改进,提高了饰品检测的精度和实时性。贾世娜等人[9]使用多级特征融合和多尺度检测等方法来提高YOLO算法针对小目标的检测效果。改进后的算法在一定程度上提高了精度,但是模型体积较大。陈勃旭[10]通过增加数据增强方法,提出一种新的小目标数据集扩展与数据增强方法并采用anchor自适应算法进行训练。同时岳茜[11]设计了一种新的损失函数,提高生成框的采集水平,进一步优化算法的性能。
YOLO系列算法在实际的检测任务中由于硬件资源的限制,当面对复杂的检测环境时仍存在模型体积较大、准确率不高,容易误检等问题。为解决当前的技术难点,依据YOLOv5s算法的高性能特点,本文设计了一种基于改进的YOLOv5s的人物饰品检测算法,采用轻量化的骨干网络缩小模型体积,同时优化注意力机制与空间金字塔池化结构提升网络的精度,最后改进损失函数提高模型对目标尺寸的鲁棒性。在人物饰品检测数据集中进行验证,并于其他检测算法对比,验证本文方法的有效性。
1 YOLOv5s目标检测算法
YOLO算法从总体上看,是单阶段端到端的基于anchor-free的检测算法。将图片输入网络进行特征提取与融合后,得到检测目标的预测框位置以及类概率。而YOLOv5是YOLO系列中应用最广泛的,其拥有模型小,检测速度快的特点。根据网络结构的大小以及特征图宽度分成YOLOv5s、YOLOv5m、YOLOv5l。整体网络结构由主干网络(Backbone)、颈部网络(Neck)、预测输出端(Head)组成。
2 改进YOLOv5s模型设计
本文主要从骨干网络轻量化、注意力机制、特征融合和损失函数四个方面对YOLOv5s进行优化。传统的卷积网络对硬件的要求较高,在设备资源限制下,较大的饰品检测模型无法正常运行,所以提出基于Ghost卷积模块的轻量型骨干网络,对整个网络进行轻量化处理。为了更加充分的利用骨干特征网络的原始特征信息,采用SPPFCSPC模块充分融合不同尺度的特征信息,以提升模型检测精度。在兼顾不同尺度的特征信息的同时特征信息之间的交互会被弱化。为了进一步增强特征图上的有效信息,将注意力模块CBAM嵌入到检测模型中,在通道和空间两个维度上进行特征的注意力权重融合,使网络聚焦有意义的特征抑制无用信息。改进的YOLOv5s模型结构图如图1。
图1 改进的YOLOv5s模型结构示意图
2.1 YOLOv5s模型主干网络优化
YOLOv5s中使用的CSPDarkNet53主干网络是在DarkNet53网络中引入跨阶段局部网络[12](Cross Stage Partial Network,CSPNet),提取有效的深度特征信息。但传统的卷积网络存在特征信息冗余,计算量大和模型参数大的问题,对硬件资源的要求较高,所以需要缩小模型体积减少参数量。Ghost卷积是GhostNet[13]的核心模块,与传统卷积不同,Ghost卷积从特征图冗余问题出发,利用特征图的相似性,通过少量计算产生大量特征图。由此Ghost卷积被设计为一种分阶段的卷积计算模块,Ghost卷积将特征提取与廉价的线性运算并行执行后的两组特征图进行拼接,产生大量特征图。以此消除特征图冗余,获得更加轻量的模型。
(1)
式中,d·d的幅度与k·k相似,且s< (2) 由公式(1)、(2)的化简结果可得一般卷积的参数量和计算量大致为Ghost卷积的s倍。因此,本文基于Ghost卷积的轻量化优势,使用Ghost卷积替换YOLOv5s算法网络中的普通卷积再结合CSPNet结构,搭建出适用于YOLOv5s的Ghost卷积结构,具体结构如图2。 图2 Ghost卷积结构示意图 相比于YOLOv5s中原生的轻量级注意力机制SE-Net只注重通道像素的重要性,CBAM[14](Convolutional Block Attention Module)注意力机制作为一种轻量级的注意力模型,综合考虑了不同通道像素和同一通道不同位置像素在重要性上的区别。输入特征会沿着顺序结构依次融合沿通道和空间两种维度上的注意力权重,然后再将注意力特征向量和输入特征向量相乘来实现自适应特征优化。 在YOLOv5架构中,Neck部分进行多尺度特征融合,其目的是将浅层网络的强位置信息和深层网络的强语义信息传递给其他网络层,沿着这个思路把CBAM模块添加在Neck部分。整体添加注意力机制示意图如图3。注意力机制通过对特征图的通道维度进行自适应的加权,调整特征图在不同通道上的表示权重,使模型更好地捕捉到饰品目标区域的重要特征。同时通过对特征图的空间维度进行自适应的加权,调整特征图在不同空间位置上的表示权重。使模型更好地定位饰品目标区域,并抑制无关的背景信息。 图3 添加CBAM结构示意图 为了更加充分的利用主干网络提取的特征,采用SPPF[15]空间金字塔池化结构对各阶段直接增加由自底向上和自顶向下的路径。CSPNet结构利用跨阶段特征融合策略和截断梯度流技术增强不同网络层间学习特征的可变性,从而减少冗余梯度信息的影响,增强网络学习能力。一方面,CSPNet在减少计算量、减少内存成本的同时,优化网络检测精度,所以在改进YOLOv5s模型时将该思想运用到SPPF模块,优化梯度信息,强化其特征聚合能力。 SPPFCSPC模块就是综合SPPF模块与CSP模块。首先将特征分为两部分,其中的一个部分进行常规的处理,另外一个部分进行SPPF结构的处理,最后把这两个部分拼接在一起,使模型能在保持感受野不变的情况下获得速度与精度的提升,SPPFCSPC模块结构如图4。 图4 SPPFCSPC模块结构图 YOLOv5s的损失是由分类损失(Classes loss)、置信度损失(Objectness loss)和定位损失(Location loss)三部分进行加权相加构成,而定位损失对应的边界框位置预测是目标检测中最主要的任务。YOLOv5s使用DIoU Loss[16]作为边界框回归损失函数,用以评判预测检测框与真实检测框的检测效果。其计算公式如式3所示: (3) 式中:gt表示真实检测框;pb表示预测检测框;ρ2(*)表示求欧式距离;bgt表示检测框的中心点;bpb表示预测框的中心点;wpb、hpb分别表示检测框的宽度和高度;c表示预测框和真实框的最小包围框的最短对角线长度。 在实际的检测任务中,回归定位损失应该考虑到3种几何参数:重叠面积、中心点距离、长宽比,DIoU仅考虑了前两者,CIoU在DIoU的基础上加入了对回归框的长宽比,这样预测框就会更加的符合真实框。CIoU示意图如图5。图中黑色实线框表示真实检测框,黑色虚线框表示预测检测框。 图5 CIoU示意图 CIoU计算公式如下: (4) (5) (6) 式中:ρ2(*)表示求欧式距离;bgt表示检测框的中心点;bpb表示预测框的中心点;wpb、hpb分别表示检测框的宽度和高度;c表示预测框和真实框的最小包围框的最短对角线长度;α表示一个正平衡参数;v表示预测框和真实框的长宽比的一致性。 在本次研究中采用自制数据集进行训练和测试。自制数据集中包含手表、眼镜、帽子3个类别,其中眼镜图像584张,手表图像410张,帽子图像296张。数据集图像类别数量和图像标注锚框的分布情况如图6。三种类别的图像数量分布如图6a。类别分布在收集数据时充分考虑不同视角下的大小和形状问题,以及各种灯光和有其他物体遮挡时的情况,从而进一步提高模型的鲁棒性和精度。数据集包含1 290张JPG格式图片,图像大小为1 920×1 080,按照8:2的比例划分为训练集和测试集。数据采用VOC数据集格式,使用LabelImg标注工具为每幅图像标注真实目标框。 a)类别数量分布图 b)图像锚框中心分布图 c)图像锚框大小分布图图6 数据集图像类别数量和图像标注锚框的分布情况 为了更加了解数据集中图像和锚框的分布情况,对数据集进行分析。目标中三种饰品类别图像数量分布相对均匀,无异常数据,针对较难识别的小目标类别如眼镜和手表,采集这两种类别图像占比80%,如图6a。图像标注锚框中心点位置分布相对均匀,且大都分布在图像的中下方如图6b;锚框大小方面总体上中小锚框居多如图6c。说明数据集是有利于模拟真实场景下的人物饰品检测任务的。 为了增强数据多样性,防止模型过拟合。采用Mosaic和Cutout方法进行数据增广,同时在训练时采用对称翻转、改变对比度和亮度、添加噪声,大小缩放的操作对原始数据集进行预处理以丰富数据集。具体操作见表1。 表1 数据集扩充操作 实验使用AutoDL云计算平台进行训练和测试,系统配置见表2。 表2 实验环境 本次实验选取了直接评估模型检测水平的常用评价指标,对改进后的YOLOv5s饰品检测网络模型进行评价。 (1)精确度(Precision,P)、召回率(Recall,R)。 (7) (8) 式中:TP为目标被正确检测出来的数量;FP为被误检的目标数量;FN为未被检测出的样本数量。 (2)平均精度(Average Precision,AP)、平均精度均值(mean Average Precision,mAP)为 (9) (10) 式中,N=3为类别个数,在采用精确度和召回率两个值作为横纵坐标的P-R曲线中,P-R曲线与坐标轴围成的面积等于AP值大小。平均精度(mAP)是所有类别预测精准度的平均值,将每一类的AP值都计算出来以后,将其平均就得到mAP。 本次实验对YOLOv5s模型的主干网络、注意力机制、特征融合方法进行了改进,同时优化了损失函数。为评估不同模块改动和不同模块互相组合对于算法性能优化的程度设计了消融实验。实验的基准模型为YOLOv5s模型。为保证实验准确性,每组实验模型均采用相同的训练参数和数据集,且每组实验做三次取其平均值进行对比。消融实验数据见表3。 表3 消融实验对比结果 对本文提出的四种不同的优化方法进行单独实验和组合实验,实验结果表明每种改进都对模型性能产生了不同程度的影响。主要表现在以下几个方面。 实验2表明更换GhostNet骨干网络之后模型整体参数量下降60%,但模型的平均精度和准确率都有所下降。实验3~5表明三种优化方法单独使用都可以提升模型的mAP。其中加入SPPFCSPC模块之后参数量有所增加同时mAP提升了9%,准确度提升了6.6%。CBAM注意力机制和CIoU激活函数mAP分别提升1.9%和1.7%。 根据组合不同模块进行实验的实验结果发现,使用不同的组合使模型的整体性能提升呈现正向优化。在实验9中使用原生骨干网络,在优化了CBAM注意力机制和SPPFCSPC模块之后mAP提升了10.2%,准确度提升了4.9%,但是参数量有大幅增加,其中大部分参数量来自SPPFCSPC模块;实验11在实验9的基础上优化损失函数为CIoU之后mAP提升了1.9%。这说明三种优化策略组合使用可以提升模型性能。 为了降低模型参数量的同时,提升模型的mAP与精确度,在使用GhostNet骨干网络之后进行了实验。实验结果显示不同的模块组合产生的优化效果也不同。实验6表明在GhostNet骨干网络下添加注意力机制准确度提升了1.7%,但是mAP下降了1.6%。实验7、实验8也是相同的表现,这说明使用GhostNet骨干网络降低了参数量但是对于mAP的提升并不理想。实验10和实验12同时采用多种优化策略,从结果来看虽然会削弱单个优化策略的提升程度,但在整体上达到了最优效果。特别是实验12,mAP提升了14.2%,准确度提升了8.9%,同时整体参数量降低了18.2%,达到了在本次实验中较为理想的结果。 为直观展现本文算法的检测效果,从测试集的检测结果中选取三张具有代表性的场景进行检测如图7。其中左列为原图,右列为检测结果。图7a展示了在室外光照和阴影变化场景下的检测结果;图7b展示了在室内检测目标分布密集时的检测结果;图7c展示了在复杂背景下检测目标被遮挡时的检测结果。 a)光照变化场景下的饰品检测 为了对比本文提出的改进YOLOv5s模型与其他相关工作的模型的效果,使用SSD(MobileNetV2)、Faster-RCNN(ResNet50)、YOLOv4(DarkNet53)、YOLOv5s(DarkNet53)4个模型设计了对比实验。在人物饰品检测数据集上进行实验,实验采用相同的运行环境。每个模型进行三次实验取其平均结果进行对比,结果见表4。 从对比实验的结果可以看出,优化后的YOLOv5s模型准确率最高,模型体积最小。远远小于Faster-RCNN和YOLOv4,而且比YOLOv5降低了18.2%的参数量。和同为轻量级架构的SSD相比,虽然两者体积近似但是优化后的YOLOv5s的mAP提升了14.3%。总体分析,本文提出的改进YOLOv5s模型检测效果更好,总体性能更佳。 针对目标检测模型在进行人物饰品检测时效果差的问题,提出了一种改进的YOLOv5s模型进行人物饰品检测。在自制数据集上进行模型训练,使用GhostNet进行特征提取来降低模型参数量,同时降低轻量化对模型准确率的负面影响,使用CBAM注意力机制和优化Neck层的特征融合网络结构,增加模型的特征提取与特征利用能力,引入损失函数提升模型性能。实验结果表明:改进的YOLOv5s模型能在降低模型参数的同时提升检测的准确度。后续工作将对模型结构和参数进一步优化,在自制数据集中增加更多复杂环境下的数据和更多种类的数据以提升模型的鲁棒性和泛化能力。2.2 YOLOv5s模型注意力机制改进
2.3 YOLOv5s模型空间金字塔池化改进
2.4 YOLOv5s模型损失函数改进
3 实验与实验结果分析
3.1 数据预处理
3.2 实验环境
3.3 模型评价指标
3.4 改进YOLOv5s消融实验
3.5 不同模型对比实验
4 结 语