基于GhostNet 残差结构的轻量化饮料识别网络

2022-03-12 05:56曹远杰高瑜翔
计算机工程 2022年3期
关键词:残差卷积数量

曹远杰,高瑜翔

(1.成都信息工程大学 通信工程学院,成都 610225;2.气象信息与信号处理四川省高校重点实验室,成都 610225)

0 概述

卷积神经网络自提出以来在计算机视觉领域被广泛应用。在生活中运用智能机器可以节省人力资源,例如自动售水机、无人超市等。但是当售水机部署在学校等人流量较多的地方时,售水机暴露出效率低、耗时长等缺点。假设给机器安装上饮料自动识别,饮料选择和刷脸支付一体化会使售水机效率更高。因此,饮料等商品的识别对于无人售卖机、智能化超市等是非常必要的。

深度学习在目标识别与检测上有着较强的鲁棒性,深层神经网络能够在复杂环境下对目标具有较好的识别性能。随着对目标检测性能要求的提高,研究人员提出了许多深层神经网络。例如,2014 年ILSVRC 竞赛提出的VGGNet[1]和 GoogleNet[2],2015 年提出 的ResNet 以及后来提出的DenseNet[3]等。但是随着性能的提高卷积层数也随之增加,从而出现权重参数较大和设备推理速度慢的问题。因此,上述方法在实际应用中常因为参数量高和效率低而不能部署在资源有限的设备上。

为解决效率和存储问题,研究人员采取剪枝[4]、量化[5]、知识蒸馏[6]以及设计轻量化网络的方法来提高推理的速度。例如针对参数和推理速度推出的YOLOv3-Tiny[7]网络是YOLOv3[8]网络的一个简化版;邵伟平等[9]提出采用MobileNet 作为YOLOv3 主干的网络,在基本没有精度损失的情况下模型尺寸减小到26 MB,相对于YOLOv3 减少了90%;刘万军等[10]提出采用深度可分离卷积[11]构建反残差模块来替换YOLOv3-Tiny 的主干网络,在精度无损失的情况下模型尺寸减小到18.2 MB,相对于YOLOv3-Tiny减少了47.7%。但是以上这些网络相对于内存较低的处理器还是过于庞大。

近年来研究人员设计一些高效的网络模型,例如IANDOLA 等[12]提出SqueezeNet,主要是将3×3 的卷积替换为1×1 的卷积,通过减少3×3 卷积的通道数等来减小计算量和参数量;HOWARD 等[13-14]提出了MobileNets,采用大量的深度可分离卷积设计的神经网络,该结构可以很大程度地减少参数量和计算量。但是使用深度可分离卷积也存在缺陷,例如EfficientNet网络[15]使用了大量低计算量(FLOPs)和高数据读写量的操作。由于GPU 访存带宽的限制,网络浪费大量的时间在显存中读写数据。当显存较低时,即使计算量较低推理速度也很慢。例如EfficientNet-B3 的计算量不到ResNet50[16]的1/2,推理速度却比ResNet50 慢了1 倍。本文针对目标检测网络计算量、参数量大以及设备推理速度慢等问题,设计一种基于GhostNet[17]残差结构网络架构作为YOLOv4-Tiny 的主干来降低计算量和参数量,以提高运算效率。

1 YOLOv4-Tiny 网络

YOLO 算法[18-19]是近年来较受欢迎的神经网络算法,该算法使用回归的方法进行目标检测。YOLO 用一个神经网络结构可以同时预测出预测框和类别概率,具有执行速度快、检测效率高的特点。YOLOv4[20]是2020 年提出的神经网络算法,YOLOv4-Tiny 是缩小版的YOLOv4,YOLOv4-Tiny 结构如图1 所示。

图1 YOLOv4-Tiny 网络结构Fig.1 YOLOv4-Tiny network structure

YOLOv4-Tiny 模型尺寸仅为23 MB,有21 层卷积层、3 层Maxpool 层和2 层步长为2 的卷积。当输入为416 尺寸时输出为13×13 和26×26 两种大小的输出层[21]。图1 中虚线部分为Resblock_body[22],该结构经过第一个卷积层后将特征图分组后进行后续的操作。YOLOv4-Tiny 采用了两层两步长的普通卷积和3 个Resblock_body 结构作为主干。采用Resblock_body 结构提高了特征的复用,相较于YOLOv3-Tiny,采用传统卷积作为主干网络有着更好的特征提取,在加快推理速度的同时使得参数更少。

2 YOLO-GhostNet 算法

2.1 GhostNet 残差结构

在经过卷积后的特征图是比较相似的,GhostNet的思想是将传统的卷积分两步进行:第1 步使用较少的卷积核生成一部分特征图;第2 步对第1 步生成的特征图使用比较简单的计算获得另一部分特征图,最后将两组特征图拼接在一起。第2 个部分的计算可以采用3×3或5×5的通道卷积来替代。标准卷积与GhostNet卷积过程如图2 所示。

图2 标准卷积与GhostNet 卷积Fig.2 Standard convolution and GhostNet convolution

假设输入特征图为Di×Di×M,标准卷积核的宽和高为K,GhostNet 卷积的第1 部分卷积核的宽和高为K′,第2 部分为K′′,输出特征图为Do×Do×N。

标准卷积的计算量为:

GhostNet 卷积的计算量为:

标准卷积的参数量为:

GhostNet 卷积的参数量为:

针对Resblock_body 计算量大、参数量大、推理速度慢等问题,本文提出采用GhostNet 残差结构。该结构使用标准卷积与点卷积进行降通道,这里第2层卷积层通道为第1 层卷积层的1/2,然后使用5×5 的通道卷积获得另一半特征图,通过一个Concat 层拼接起来后与第一层特征图相加。GhostNet 残差结构如图3 所示。

图3 GhostNet 残差结构Fig.3 GhostNet residual structure

假设经过卷积过后没有改变特征图大小,GhostNet 残差结构与Resblock_body 结构的输入特征图大小都为F×F×P,第1 个卷积层大小都为C×C×P×Q,则GhostNet 残差结构与Resblock_body 结构计算量之比为:

在步长为1 的卷积时,计算量之比等于参数量之比。P、Q为输入输出通道数,一般远大于C,根据式(5)可以明显看出,当输入特征图相同时,GhostNet残差结构在参数量和计算量上都比YOLOv4-Tiny 的Resblock_body 结构更低,理论上推理速度也更快。

2.2 YOLO-GhostNet 网络

YOLO-GhostNet 网络各层参数如表1 所示。

表1 YOLO-GhosNet 网络参数Table 1 YOLO-GhosNet network parameters

YOLOv4-Tiny 网络相对于YOLOv3-Tiny 网络,无论是在识别精度还是模型尺寸上都有不少的改进。但是网络在类似于CPU 这样的处理器上,还是显得有些庞大。因此,本文将GhostNet 残差结构代替YOLOv4-Tiny 的Resblock_bod 结构,将网络大部分3×3 标准卷积采用由一个点卷积和一个5×5 的通道卷积所组成的GhostNet 卷积替代。由式(1)和式(2)可知,使用GhostNet卷积替代标准卷积会随着输入通道的变化减少计算量和参数量,当输入通道越大时,计算量减小越多。YOLO-GhostNet 相比于YOLOv4-Tiny 网络计算量减小为原来的31%,参数量减小为原来的10%。

3 实验结果与分析

3.1 实验数据和平台

本文实验采用10 097张饮料数据集,分别包括雪碧、可乐、绿茶和王老吉4种饮料,每个种类大约2 500张。测试集908张,训练集8 281张,验证集908张。本次实验在Windows10操作系统下进行,软件平台为PyCharm,训练与验证框架为Keras Tensorflow1.13-GPU 以及CPU 版本。硬件为AMD Ryzen5 3500X型号CPU,GTX1060 6G型号GPU,Batchsize设置为4,学习率采用0.001与0.000 1训练100个epoch,直到Loss不再变化自动终止训练。

3.2 结果分析

4 种饮料在2 个算法检测精度如图4 所示。由图4 可知,YOLO-GhostNet 在可乐和绿茶2 个种类的精度比YOLOv4-Tiny 算法高,在另外2 种种类略微低一点。平均精确度均值(mAP)为79.43%,相较于YOLOv4-Tiny 基本没有损失。YOLO-GhostNet 网络有12 个BN 层,BN 层在训练时对算法有用,但是在推理时会增加算法访存量和复杂度。由于BN 层在做线性运算,因此可以将BN 层融入到卷积层。由于深度学习网络有较好的鲁棒性,进行BN 层的融合基本不会影响精度,还可以加快推理速度。BN 层优化前后部分参数如表2 所示。

图4 YOLO-GhostNet 与YOLOv4-Tiny 算法检测精度对比Fig.4 Comparison of detection accuracy between YOLO-GhostNet and YOLOv4-Tiny algorithm

表2 YOLO-GhostNet 网络BN 层优化前后部分参数Table 2 Some parameters before and after BN layer optimization YOLO-GhostNet network

由表2 可知,经过BN 层优化后YOLO-GhostNet网络在各种类的精度并没有损失,反而在参数个数上减少了4 632 个参数,对于参数影响虽然不大,但是在一定程度上减少了网络访存量,使得在CPU 上的推理速度快了22%,GPU 上的推理速度快了10%。

YOLO-GhostNet 与YOLOv4-Tiny 以及经过BN 层优化后的YOLO-GhostNet算法各项参数如表3 所示。

表3 YOLO-GhostNet 与YOLOv4-Tiny 各参数对比Table 3 Comparison of parameters between YOLO-GhostNet and Yolov4-Tiny

由表3可知,YOLO-GhostNet相较于YOLOv4-Tiny算法在输入为416×416×3 大小时,平均精确度基本无损失,模型尺寸和计算量却下降较多,大幅减少了设备的资源消耗,提高了模型的性价比,在推理时间上由于GPU 对卷积加速支持程度的区别,推理时间并没有快很多,而在CPU 处理器上运行时,优势可以明显体现出来,对CPU 和计算资源不足的处理器是非常合适的。

4 结束语

本文设计一种YOLO-GhostNet 轻量级网络模型。该模型采用GhostNet 残差结构代替原网络的Resblock_body,能够解决计算量和参数量大以及推理速度慢而难以部署到计算资源少的设备的问题。此外,将YOLO-GhostNet 算法运用NCNN 框架经过半精度量化和BN 层优化后,在AMD Ryzen5 3500X 型号CPU 上推理时处理一张图片只需要45 ms,相对YOLOv4-Tiny 算法速度提高58%,量化后的模型大小为1.1 MB,可在CPU 上达到实时检测的效果。

猜你喜欢
残差卷积数量
基于残差-注意力和LSTM的心律失常心拍分类方法研究
基于双向GRU与残差拟合的车辆跟驰建模
芳芳猜童话书的数量
基于3D-Winograd的快速卷积算法设计及FPGA实现
基于残差学习的自适应无人机目标跟踪算法
卷积神经网络的分析与设计
基于深度卷积的残差三生网络研究与应用
从滤波器理解卷积
统一数量再比较
基于傅里叶域卷积表示的目标跟踪算法