基于Ghost卷积和YOLOv5s网络的服装检测①
2022-08-04吴圣明马丽丽陈金广
李 雪,吴圣明,马丽丽,陈金广
(西安工程大学 计算机科学学院,西安 710048)
根据国家统计局的统计数据显示[1],2020 年我国电子商务平台交易额达到37.2 万亿元,按同比口径计算,比去年增长4.5%. 消费需求不断释放,新消费模式拉动网络消费快速增长. 服装商品交易是电商平台交易的重要组成部分,随着线上消费快速发展,电商平台的服装图像数据呈指数增长,同时这些服装图像种类繁多、样式复杂,如何通过目标检测技术准确判断图像中每种服装的类别,并定位出服装的具体位置,为顾客检索、推荐出相似的商品,提升购买体验,成为当前目标检测技术在服装领域的研究热点之一[2].
传统的机器学习方法如HOG、SIFT 等,依赖人工设计的方法提取目标特征,鲁棒性较差; 基于深度学习的目标检测技术能够在较大规模的数据集上自动提取图像特征,减少人工干预,同时提高检测准确率,因此受到广泛的关注. 基于候选框的两阶段目标检测算法,如Faster-RCNN[3]、Mask-RCNN[4]等,检测精度高但检测效率较低; 基于回归的一阶段的目标检测算法,如SSD[5]、YOLO[6,7]等,检测速度快,检测精度较高,具有很强的实用性. 但是以上模型训练对计算资源要求较高,训练所产生的权重文件通常高达几百兆,难以部署在资源有限的设备中使用.
为了降低模型的参数量和计算量,使得模型能够部署在资源有限的设备中,本文结合YOLOv5s 网络构建一个轻量级的服装目标检测模型——G-YOLOv5s,该模型使用Ghost 卷积[8]重构YOLOv5s 的主干网络,Ghost 卷积首先使用传统卷积生成少量的原始特征图,然后再利用原始特征图经过线性操作生成多个Ghost特征图,减少了生成相似特征的卷积操作,使得模型精度在基本无损失的情况下,有效降低服装检测模型对计算资源的占用.
1 YOLOv5s 网络
2020年Ultralytics 公司提出YOLOv5 系列算法,分别为YOLOv5s、YOLOv5m、YOLOv5l 以及YOLOv5x,网络结构的深度、宽度以及所需的计算资源依次递增. YOLOv5s 整体网络架构如图1 所示,从图中可以看出,该网络结构大致可分为输入端、主干网络、Neck 网络以及预测层4 个部分,下面逐一进行介绍.
图1 YOLOv5s 网络结构
第1 部分是输入端. 使用了Mosaic 图像增强、自适应图片缩放以及自适应锚框计算这3 种图像处理方法. Mosaic 图像增强方法通过随机缩放、剪裁和排布等操作将4 张图像拼接成一张图像,然后输入网络进行训练,这种图像增强方式可增加数据的多样性以及训练目标个数. 自适应锚框计算方法可根据不同数据集的特点重新计算初始锚框大小,使得初始锚框更加适合不同的数据集. 在模型推理阶段使用自适应图片缩放方法为待检测图像填充最小的灰度值,极大减少了图像的冗余信息,提高了模型的推理速度.
第2 部分是主干网络. 引入空间金字塔池化模块(spatial pyramid pooling,SPP)[9],实现局部特征和全局特征的信息融合; 根据跨阶段局部连接网络(cross stage partial network,CSPNet)[10]的设计思想,YOLOv5s构造了两种CSP 结构,如图1 所示,分别为CSP1_x 和CSP2_x,其中CSP1_x 添加在主干网络中,CSP2_x 则添加在Neck 网络部分,两种CSP 结构都使用了残差结构,能够在尽量不增加计算复杂度的情况下提高网络的特征提取能力.
第3 部分是Neck 网络. 受特征金字塔网络(feature pyramid networks,FPN)[11]和路径聚合网络(path aggregation network,PANet)[12]的启发,将Neck 网络构造成FPN+PAN 结构. FPN 结构自顶向下,其后再添加一个自底向上的金字塔,该金字塔由两个PAN 结构组成. Neck 网络能够同时融合浅层和深层特征信息,有效提升检测器的性能.
第4 部分是预测层. 使用CIoU loss (complete intersection over union loss)[13]作为边界框的损失函数,采用标准的非极大值抑制操作(non-maximum suppression,NMS)滤除多余的预测框,得到最终的模型预测结果.
2 主干网络的改进
2.1 模型的参数量和计算量分析
传统卷积和Ghost 卷积操作如图2 所示. Ghost卷积将传统卷积分成两个步骤执行,第1 步使用少量传统卷积生成m个 原始特征图; 第2 步利用m个原始特征图经过线性运算再生成s个Ghost 特征图,经过上述两步操作,Ghost 卷积最终输出n=m·s个特征图. 同样在输出n个特征图的情况下,分别使用传统卷积和Ghost 卷积网络参数量分别为p1、p2.
图2 传统卷积和Ghost 卷积
两者参数量之比如式(3)所示:
使用传统卷积和Ghost 卷积的模型浮点型计算量分别为q1、q2.
两者浮点型计算量之比如式(6)所示:
其中,c表示输入图像的通道数,k·k表示传统卷积操作的卷积核大小,h′、w′分别表示Ghost 卷积生成的原始特征图的高和宽,d·d为线性操作的卷积核大小,且s< 利用Ghost 卷积构成Ghost 瓶颈结构(G-bneck),如图3 所示,G-bneck 类似于ResNet 结构[14]. 在图3中,第1 个Ghost 卷积作为扩展层,用于增加特征通道数,第2 个Ghost 卷积则用于减少通道数,再经过shortcut 连接后输出. 图3 Ghost 瓶颈结构 通过上文对Ghost 卷积计算的分析,若将该卷积应用在YOLOv5s 中可进一步降低模型的参数量和复杂度,所以本文以YOLOv5s 为基本模型,在其主干网络中,用Ghost 卷积替换传统卷积(图1 中CBS 结构),用G-bneck 替换CSP1_x 结构,Neck 网络层和预测层保持原结构不变. 基于G-YOLOv5s 网络的服装检测流程如图4 所示. 图4 中,步骤①–③表示模型的训练阶段,将服装图像数据送入G-YOLOv5s 网络中进行训练,并将结果最优的模型权重保存下来; 步骤④–⑦是模型的验证阶段,使用验证集数据来评估模型的好坏,若模型训练结果较差,则尝试调整网络参数后重新进行训练; 步骤⑧–⑩是模型检测阶段,使用评估结果良好的模型进行服装图片检测,并输出检测后的结果. 图4 基于G-YOLOv5s 网络的服装检测流程 DeepFashion2[15]数据集总共包含约30 万张图片,13 种服装类别,类别名称分别为: 短袖衫(short sleeve shirt)、长袖衫(long sleeve shirt)、短袖外衫(short sleeve outwear)、长袖外套(long sleeve outwear)、背心(vest)、吊带(sling)、短裤(shorts)、长裤(trousers)、半身裙(skirt)、短袖连衣裙(short sleeve dress)、长袖连衣裙(long sleeve dress)、无袖连衣裙(vest dress)、吊带裙(sling dress). 在数据准备过程中发现,DeepFashion2 数据集存在严重的数据分布不平衡问题,例如在训练集中,包含“短袖衫”这一类别的图片高达数万多张,而包含“短袖外衫”这一类别的图片仅有几百张. 服装类别不同,数据量差异较大,为了减轻对模型训练的影响,在实验前将DeepFashion2 数据集进行如下处理: 首先将训练集图片按照类别进行分类; 然后在分好的每类的图片数据中按照如下规则进行随机抽取:对于数据量较大的服装类别,采用较小的比例进行数据抽取; 对于数据量适中的类别,增大随机抽取的比例,此外,由于“短袖外衫”图片数量过少,因此保留全部数据. 数据抽取完成之后再次混合; 最后将混合好的训练集图像对应的标签文件转成网络能够识别的YOLO 格式,得到处理完成的训练集数据. 验证集同样进行如上处理. 最终得到带有标签文件的训练集图片14 746张、验证集图片7 763 张. 处理好的训练集中,服装各类别目标数量分布如图5 所示. 图5 训练集中13 种类别分布 采用的模型评价指标有平均精度(average precision,AP)和平均精度均值(mean average precision,mAP).AP表示模型对某个类的检测精度,值越大,表示模型对某个类的检测精度越高;mAP表示模型对数据集所有类别的平均检测精度,值越大则模型对数据集整体类别的检测效果越好,评价指标计算公式如式(7)–式(10)所示. 其中,N为数据集中所有的类别数,在本文中N等于13,P(R)表示分别以精确率(precision,P)和召回率(recall,R)为横纵坐标所构成的函数.P和R的计算公式如下: 其中,TP表示将正例预测为正例的个数,FP表示将反例预测为正例的个数,FN表示将反例预测为反例的个数. 模型损失函数由边界框回归损失(bounding box regression score)、置信度损失(objectness score)以及分类概率损失(class probability score)3 部分组成,GYOLOv5s 使用二值交叉熵损失函数计算类别概率损失和置信度损失. 采用CIoU loss 计算边界框损失,因为该损失计算方式同时考虑了预测框与真实框的重叠面积、两者中心点间距离以及框的长宽比等因素,能够加快模型的收敛速度,计算公式如式(11)–式(13). 其中,ρ(b,bgt)表示预测框和真实框两个中心点间的欧式距离,c表示两框之间的最小外接矩形的对角线长度,分别表示真实框和预测框各自的宽高比,IoU是两框之间的交并比. 实验的软硬件平台以及参数设置如下: Intel(R)Xeon(R)CPU E5-2630 v4 @ 2.20 GHz; GPU: TITAN XP; 加速环境: CUDA 9.2; 操作系统: Ubuntu 16.04; 深度学习框架: PyTorch 1.7.1; 语言环境: Python 3.8. batch_size 为16; 初始学习率为0.01; 权重衰减系数为0.000 5;使用随机梯度下降法(SGD)进行优化; 动量等于0.937;总训练轮数为300 轮. 根据上述参数设置,分别对改进前和改进后的YOLOv5s 和YOLOv5l 网络进行了对比实验. 4 种网络的训练损失(loss)以及mAP变化曲线如图6 所示. 图6 网络loss 和mAP 随训练轮数的变化图 由图6 可以看出,无论是YOLOv5s 还是YOLOv5l,改进前后,网络的loss 和mAP曲线变化不大,说明引入Ghost 卷积后,原网络性能基本不受影响. 另外,改进前后YOLOv5l 的mAP高于YOLOv5s,这是因为改进前后YOLOv5l 的网络结构始终大于YOLOv5s,提取的特征信息也更加丰富,mAP会有所提升,但是相应的,网络参数量、浮点型计算量以及运行时间也会高于YOLOv5s. 使用G-YOLOv5s 模型对13 种服装种类进行检测,得到的平均精度值(AP)如表1 所示. 由表1 中可以看出,G-YOLOv5s 模型对“短袖衫”“短裤”以及“长裤”这3 类服装的AP值均达到87%以上,检测效果较好; 但对于“短袖外衫”的检测,AP仅为46.9%,分析原因可能是: 该类别服装图片数量较少(如图5 所示),导致G-YOLOv5s 对“短袖外衫”这一类别的训练不足,因此检测结果略差. 表1 每类服装的平均精度 (%) 表2 中对比了4 种模型的mAP、模型体积、浮点型运算量以及在CPU 上的推理时间,所有实验的输入图像尺寸均为640×640 像素大小,结果如表2 所示. 表2 算法实验结果对比 由表2 可以看出,G-YOLOv5s 与YOLOv5s 相比,虽然mAP有略微下降,但模型体积压缩了34.8%,浮点运算量减少了41.3%; G-YOLOv5l 与YOLOv5l 相比,mAP下降了0.5%,但模型体积和浮点型运算量也下降了近一半左右. 实验结果证明,使用Ghost 卷积能够有效减少模型参数量以及浮点型运算量,从而降低对资源的占用. 并且与其它3 种网络相比,G-YOLOv5s 模型最为轻量、在CPU 设备上检测一张图片用时最短,因此更适合部署在资源有限的设备上使用. 使用G-YOLOv5s 模型进行服装检测,效果如图7所示,其中图7(a)和图7(b)分别为卖家秀和买家秀图片的检测效果. 图7 买家秀和卖家秀检测效果 对比观察可知,图7(a)的检测效果普遍优于图7(b),这是因为图7(a)中图片背景较为简单且检测目标比较突出,G-YOLOv5s 模型对此表现较好; 而在图7(b)中,部分图片由于光线不足、拍摄环境复杂等问题,模型检测能力有所降低,出现漏检、误检的情况(图7(b)中第2 行检测图片所示). 为了降低服装检测模型参数量和浮点型运算量较大的问题,提出一种使用Ghost 卷积构建YOLOv5s 主干网络的轻量级服装检测方法,使用处理过的数据集对G-YOLOv5s 网络进行训练和验证. 实验结果表明,G-YOLOv5s 算法对遮挡范围较小、背景不是特别复杂的服装目标检测准确率高,并且该模型权重较小、浮点型计算量较低,是一种可行的、有效的服装检测方法,可在资源有限的设备中使用,下一步将着重关注复杂背景下服装检测方法的研究.2.2 主干网络的重构
3 模型训练及验证
3.1 数据集及评价指标
3.2 G-YOLOv5s 网络训练
3.3 服装检测结果与分析
4 结论