计算机系统应用  2022, Vol. 31 Issue (7): 203-209   PDF    
基于Ghost卷积和YOLOv5s网络的服装检测
李雪, 吴圣明, 马丽丽, 陈金广     
西安工程大学 计算机科学学院, 西安 710048
摘要:为了降低服装目标检测模型的参数量和浮点型计算量, 提出一种改进的轻量级服装目标检测模型——G-YOLOv5s. 首先使用Ghost卷积重构YOLOv5s的主干网络; 然后使用DeepFashion2数据集中的部分数据进行模型训练和验证; 最后将训练好的模型用于服装图像的目标检测. 实验结果表明, G-YOLOv5s的mAP达到71.7%, 模型体积为9.09 MB, 浮点型计算量为9.8 G FLOPs, 与改进前的YOLOv5s网络相比, 模型体积压缩了34.8%, 计算量减少了41.3%, 精度仅下降1.3%, 方便部署在资源有限的设备中使用.
关键词: 服装图像    目标检测    YOLOv5s    DeepFashion2    Ghost卷积    轻量级    深度学习    
Clothes Detection Using Ghost Convolution and YOLOv5s Network
LI Xue, WU Sheng-Ming, MA Li-Li, CHEN Jin-Guang     
School of Computer Science, Xi’an Polytechnic University, Xi’an 710048, China
Abstract: To reduce the number of parameters and floating points operations of the object detection model for clothes, we propose an improved object detection model for lightweight clothes, namely G-YOLOv5s. First, the Ghost convolution is used to reconstruct the backbone network of YOLOv5s, and then the data in the DeepFashion2 dataset is employed for model training and validation. Finally, the trained model is applied to the detection of clothes images. The experimental results show that the G-YOLOv5s algorithm achieves the mean average precision (mAP) of 71.7%, with a model volume of 9.09 MB and the floating point operations of 9.8 G FLOPs. Compared with those of YOLOv5s, the model volume of G-YOLOv5s is compressed by 34.8%, and the floating point operations are reduced by 41.3%, with an mAPdrop of only 1.3%. Moreover, it is convenient for deployment in equipment with limited resources.
Key words: clothes image     object detection     YOLOv5s     DeepFashion2     Ghost convolution     lightweight     deep learning    

根据国家统计局的统计数据显示[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 suppre-ssion, NMS)滤除多余的预测框, 得到最终的模型预测结果.

2 主干网络的改进 2.1 模型的参数量和计算量分析

传统卷积和Ghost卷积操作如图2所示. Ghost卷积将传统卷积分成两个步骤执行, 第1步使用少量传统卷积生成 $m$ 个原始特征图; 第2步利用 $m$ 个原始特征图经过线性运算再生成 $s$ 个Ghost特征图, 经过上述两步操作, Ghost卷积最终输出 $ n = m \cdot s $ 个特征图. 同样在输出 $ n $ 个特征图的情况下, 分别使用传统卷积和Ghost卷积网络参数量分别为 $ {p_1} $ $ {p_{\text{2}}} $ .

$ {p_1} = n \cdot c \cdot k \cdot k $ (1)
$ {p_2} = \frac{n}{s} \cdot c \cdot k \cdot k + (s - 1) \cdot \frac{n}{s} \cdot d \cdot d $ (2)
图 2 传统卷积和Ghost卷积

两者参数量之比如式(3)所示:

$ \begin{gathered} \frac{{{p_1}}}{{{p_2}}} = \frac{{n \cdot c \cdot k \cdot k}}{{\frac{n}{s} \cdot c \cdot k \cdot k + (s - 1) \cdot \frac{n}{s} \cdot d \cdot d}} \approx \frac{{s \cdot c}}{{s + c - 1}} \approx s \end{gathered} $ (3)

使用传统卷积和Ghost卷积的模型浮点型计算量分别为 $ {q_1} $ $ {q_2} $ .

$ {q_1} = n \cdot h' \cdot w' \cdot c \cdot k \cdot k $ (4)
$ {q_2} = \frac{n}{s} \cdot h' \cdot w' \cdot c \cdot k \cdot k + (s - 1) \cdot \frac{n}{s} \cdot h' \cdot w' \cdot d \cdot d $ (5)

两者浮点型计算量之比如式(6)所示:

$ \begin{split} \frac{{{q_1}}}{{{q_2}}} &= \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 + (s - 1) \cdot \dfrac{n}{s} \cdot h' \cdot w' \cdot d \cdot d}} \\ & \approx \frac{{s \cdot c}}{{s + c - 1}} \approx s \end{split} $ (6)

其中, $c$ 表示输入图像的通道数, $ k \cdot k $ 表示传统卷积操作的卷积核大小, $h'$ $w'$ 分别表示Ghost卷积生成的原始特征图的高和宽, $ d \cdot d $ 为线性操作的卷积核大小, 且 $ s < < c $ . 由式(3)、式(6)可以看出, 当 $ k $ $ d $ 大小相等时, 使用Ghost卷积进行特征提取所占用的参数量和计算量约为传统卷积的1/s.

利用Ghost卷积构成Ghost瓶颈结构(G-bneck), 如图3所示, G-bneck类似于ResNet结构[14]. 在图3中, 第1个Ghost卷积作为扩展层, 用于增加特征通道数, 第2个Ghost卷积则用于减少通道数, 再经过shortcut连接后输出.

图 3 Ghost瓶颈结构

2.2 主干网络的重构

通过上文对Ghost卷积计算的分析, 若将该卷积应用在YOLOv5s中可进一步降低模型的参数量和复杂度, 所以本文以YOLOv5s为基本模型, 在其主干网络中, 用Ghost卷积替换传统卷积(图1中CBS结构), 用G-bneck替换CSP1_x结构, Neck网络层和预测层保持原结构不变. 基于G-YOLOv5s网络的服装检测流程如图4所示.

图4中, 步骤①–③表示模型的训练阶段, 将服装图像数据送入G-YOLOv5s网络中进行训练, 并将结果最优的模型权重保存下来; 步骤④–⑦是模型的验证阶段, 使用验证集数据来评估模型的好坏, 若模型训练结果较差, 则尝试调整网络参数后重新进行训练; 步骤⑧–⑩是模型检测阶段, 使用评估结果良好的模型进行服装图片检测, 并输出检测后的结果.

图 4 基于G-YOLOv5s网络的服装检测流程

3 模型训练及验证 3.1 数据集及评价指标

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格式, 得到处理完成的训练集数据. 验证集同样进行如上处理. 最终得到带有标签文件的训练集图片14746张、验证集图片7763张. 处理好的训练集中, 服装各类别目标数量分布如图5所示.

图 5 训练集中13种类别分布

采用的模型评价指标有平均精度(average precision, AP)和平均精度均值(mean average precision, mAP). AP表示模型对某个类的检测精度, 值越大, 表示模型对某个类的检测精度越高; mAP表示模型对数据集所有类别的平均检测精度, 值越大则模型对数据集整体类别的检测效果越好, 评价指标计算公式如式(7)–式(10)所示.

$ AP = \int_0^1 {P(R)dR} $ (7)
$ mAP = \frac{1}{N}\sum\nolimits_{i = 0}^{N - 1} {A{P_i}} $ (8)

其中, N为数据集中所有的类别数, 在本文中N等于13, P(R)表示分别以精确率(precision, P)和召回率(recall, R)为横纵坐标所构成的函数. PR的计算公式如下:

$ P = \frac{{TP}}{{TP + FP}} $ (9)
$ R = \frac{{TP}}{{TP + FN}} $ (10)

其中, TP表示将正例预测为正例的个数, FP表示将反例预测为正例的个数, FN表示将反例预测为反例的个数.

3.2 G-YOLOv5s网络训练

模型损失函数由边界框回归损失(bounding box regression score)、置信度损失(objectness score)以及分类概率损失(class probability score) 3部分组成, G-YOLOv5s使用二值交叉熵损失函数计算类别概率损失和置信度损失. 采用CIoU loss计算边界框损失, 因为该损失计算方式同时考虑了预测框与真实框的重叠面积、两者中心点间距离以及框的长宽比等因素, 能够加快模型的收敛速度, 计算公式如式(11)–式(13).

$ {L_{\rm CIoU}} = 1 - IoU + \frac{{{\rho ^2}({\boldsymbol b}, {{\boldsymbol b}^{\rm gt}})}}{{{c^2}}} + \alpha \nu $ (11)
$ \nu = \frac{4}{{{\pi ^{\text{2}}}}}{\left(\arctan \frac{{{w^{\rm gt}}}}{{{h^{\rm gt}}}} - \arctan \frac{w}{h}\right)^2} $ (12)
$ \alpha = \frac{\nu }{{\left( {1 - IoU} \right) + \nu }} $ (13)

其中, $\;\rho ({\boldsymbol b}, {{\boldsymbol b}^{\rm gt}})$ 表示预测框和真实框两个中心点间的欧式距离, $c$ 表示两框之间的最小外接矩形的对角线长度, $\dfrac{{{w^{\rm gt}}}}{{{h^{\rm gt}}}}$ $\dfrac{w}{h}$ 分别表示真实框和预测框各自的宽高比, 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.

3.3 服装检测结果与分析

使用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行检测图片所示).

4 结论

为了降低服装检测模型参数量和浮点型运算量较大的问题, 提出一种使用Ghost卷积构建YOLOv5s主干网络的轻量级服装检测方法, 使用处理过的数据集对G-YOLOv5s网络进行训练和验证. 实验结果表明, G-YOLOv5s算法对遮挡范围较小、背景不是特别复杂的服装目标检测准确率高, 并且该模型权重较小、浮点型计算量较低, 是一种可行的、有效的服装检测方法, 可在资源有限的设备中使用, 下一步将着重关注复杂背景下服装检测方法的研究.

参考文献
[1]
国家统计局. 国家统计局统计科学研究所所长闾海琪解读2020年我国经济发展新动能指数. http://www.stats.gov.cn/tjsj/sjjd/202107/t20210726_1819836.html. (2021-07-26).
[2]
林碧珺, 耿增民, 洪颖, 等. 卷积神经网络在纺织及服装图像领域的应用. 北京服装学院学报(自然科学版), 2021, 41(1): 92-99, 108.
[3]
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. DOI:10.1109/TPAMI.2016.2577031
[4]
He KM, Gkioxari G, Dollár P, et al. Mask R-CNN. Proceedings of the 2017 IEEE International Conference on Computer Vision (ICCV). Venice: IEEE, 2017. 2980–2988.
[5]
Liu W, Anguelov D, Erhan D, et al. SSD: Single shot multibox detector. Proceedings of the 14th European Conference on Computer Vision. Amsterdam: Springer, 2016. 21–37.
[6]
Redmon J, Farhadi A. YOLOv3: An incremental improvement. arXiv: 1804.02767, 2018.
[7]
Bochkovskiy A, Wang CY, Liao HYM. YOLOv4: Optimal speed and accuracy of object detection. arXiv: 2004.10934, 2020.
[8]
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 (CVPR). Seattle: IEEE, 2020. 1577–1586.
[9]
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
[10]
Wang CY, Liao HYM, Wu YH, et al. CSPNet: A new backbone that can enhance learning capability of CNN. Proceedings of the 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition Workshops (CVPRW). Seattle: IEEE, 2020. 1571–1580.
[11]
Lin TY, Dollár P, Girshick R, et al. Feature pyramid networks for object detection. Proceedings of the 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Honolulu: IEEE, 2017. 936–944.
[12]
Liu S, Qi L, Qin HF, 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.
[13]
Zheng ZH, Wang P, Liu W, et al. Distance-IoU loss: Faster and better learning for bounding box regression. Proceedings of the 34th AAAI Conference on Artificial Intelligence. New York: AAAI, 2020. 12993–13000.
[14]
He KM, Zhang XY, Ren SQ, et al. Deep residual learning for image recognition. Proceedings of the 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Las Vegas: IEEE, 2016. 770–778.
[15]
Ge YY, Zhang RM, Wang XG, et al. DeepFashion2: A versatile benchmark for detection, pose estimation, segmentation and re-identification of clothing images. Proceedings of the 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). Long Beach: IEEE, 2019. 5332–5340.