杨锦辉,李 鸿,杜芸彦,毛 耀,刘 琼
(1.中国科学院光束控制重点实验室,成都 610000; 2.中国科学院光电技术研究所,成都 610000;3.中国科学院大学,北京 100000)
基于深度学习的目标检测器可以大致分为两大类:第一类是一阶段目标检测器YOLO(You Only Look Once)[1-4];第二类是二阶段目标检测器R-CNN(Region-Convolutional Neural Networks)[5-7]。二阶段目标检测器通常包括建议目标框的生成[8-10],使用深度卷积神经网络对提取的特征向量进行编码[11-12],再进行建议目标框内目标物体的类别和位置的回归[13]。一阶段目标检测算法舍弃了生成建议框的阶段,会将每个感兴趣区域分类为背景或是目标对象,因此一级检测器的推理速度更快,适用于实时目标检测的应用场景,但是检测精度相对比较差。对于需要进行快速目标检测的场景,通常使用一阶段目标检测算法。
YOLO系列算法属于一阶段目标检测器,最早版本(YOLO)由REDMON等[1]在2016年提出,该算法是实时目标检测的一个突破。YOLO的每个组件都需要单独训练,这导致推理速度很慢,因此虽然YOLO取得了巨大的成功,但算法的框架还需要继续优化。之后又提出了组件联合进行训练的策略,该方法大大提升了YOLO的推理速度,降低了网络训练的复杂度,提升了检测性能。YOLOv3采用Darknet-53作为骨干网络,通过上采样得到的特征图与浅层特征图相融合,能够极大地保留小目标的语义信息,提高小目标的检测性能。YOLOv4采用CSPDarknet53作为骨干网络,并且引入了空间金字塔池化,以优化深层特征图的感受野,使其检测精度进一步提升。
最近,Ultralytics公司推出了YOLO的第5个版本YOLOv5。YOLOv5采用CSPNet作为骨干网络,Neck部分采用PANET特征融合方式,显著提升了小目标的检测效果。YOLOv5s模型参数量(Params)最少仅为7.2 MiB,运行速度最快。当前,网络结构的轻量化、网络的特征提取与融合越来越受到研究者的青睐[14-15]。
本文提出轻量化目标检测算法RFBG-YOLO,在保证模型轻量化的同时,具有足够高的检测精度,可以满足在轻量化目标检测场景下的检测准确度的要求。
YOLOv5s的网络结构包括Input,Backbone,Neck和Head这4个部分。
Input会进行Mosaic数据增强、对图片尺寸进行自适应处理以及锚框计算优化[4]。Mosaic数据增强为了丰富图片信息,将4张图片组合在一起,拼接得到的图片会缩放到标准尺寸再参与训练,有效提高了检测准确率;锚框计算的工作原理是,将预测框与真实框进行对比,获取到差距后再反向更新,不断迭代优化参数来逼近最优的锚框值。
Backbone主要包含了CSP[16],Focus和空间金字塔池化(SPP)[17]模块。CSP模块能够减少计算复杂度,并且加强网络的学习性能;Focus模块通过切片操作将通道数增加;SPP模块实现了深层语义信息与浅层语义信息的融合,进一步提高网络的检测精度。
Neck中采用了PANET[18]的结构,将深层和浅层特征相融合的FPN[19]层与浅层合并深层特征的特征金字塔进行结合,对Backbone中不同网络层的信息进行融合,对模型的特征提取做了增强。
Head会获取到一个向量,该向量能够描述目标的类别概率、目标的得分和该目标预测框的位置。检测头一共有3层,每层特征图的尺寸都不一样,是为了检测不同尺寸大小的目标对象。每个检测头会获取到不同的向量,基于该向量获取到原图像中的目标的预测框位置以及类别信息。 YOLOv5s的网络结构如图1所示。
图1 YOLOv5s网络结构
本文提出的RFBG-YOLO算法主要做了两方面改进。1) 轻量化模型YOLOv5s的Bottleneck结构使得颈部特征提取网络PANET的特征提取不够充分,从而影响了YOLOv5s的检测精度。本文在PANET中采用优化后的多分支空洞卷积结构RFB-Bottleneck模块,改进后的颈部特征提取网络RFB-PANET可以通过更少的参数量获得更大的感受野,提取更精确的目标特征,从而提高检测精度。2) 由于改进后的RFB-PANET特征融合方式相比改进前的PANET结构更加复杂,需要通过3个不同分支的空洞卷积层来提取特征,推理时间增大,会增加计算复杂度。为了提升模型的实时性,降低计算复杂度,使检测模型更加轻量化,本文引入GhostConv替换普通卷积,在不影响检测精度的同时,降低模型的参数量和计算量。本文提出的RFBG-YOLO网络结构如图2所示。
图2 RFBG-YOLO网络结构
RFB模块是RFBNet目标检测模型的重要结构,增强了特征图的表达能力。RFB模块是一种多分支的空洞卷积结构,空洞卷积用来改变卷积层的感受野,这种多分支结构是继承自ResNet检测模型中提出的残差结构和InceptionV2结构。
RFB模块正是通过空洞卷积层来实现感受野的提高的,RFB模块有两种结构,分别如图3(a)和图3(b)所示。
图3 RFB结构和RFB-S结构
RFB是更早的结构设计,其中的1×1卷积主要有两个作用,分别是减少计算成本和特征融合。RFB-S是RFB的优化版,结构更为复杂,相比RFB使用尺寸更小的卷积核,可以有效降低运算量,提升浅层语义信息的融合。
空洞卷积与常规卷积相比,空洞卷积可以做到在运算时,卷积核可与任意间隔的像素做卷积运算,间隔是固定值,这样做的好处是可在相同的参数量下获取到更大的感受野[20]。空洞卷积实际卷积核大小为
N=n+(n-1)(r-1)
(1)
式中:N为空洞卷积实际卷积核大小;n为原始的卷积核大小;r为空洞卷积参数膨胀率。空洞卷积的运算方法是通过卷积核与设定间隔的像素点做相应的乘法运算。这种卷积方法在没有增加过多复杂设计的情况下提高了感受野的范围。
受RFB模块启发,对PANET网络中的Bottleneck结构(见图4(a))做了改进,改进后RFB-Bottleneck结构如图4(b)所示,RFB-Bottleneck采用多分支的结构,每个分支会经过不同感受野的空洞卷积来提取特征(空洞卷积的膨胀率分别是1,3,5),再进行拼接操作后通过1×1卷积调整通道数得到最终的输出结构。改进后的RFB-Bottleneck结构相比Bottleneck结构,可以融合不同感受野的空洞卷积特征,通过更少的参数量获得更大的感受野,从而提取更精确的目标特征。
图4 Bottleneck结构和RFB-Bottleneck结构
特征融合方式主要有 FPN,PANET和BIFPN。FPN特征融合能够解决目标检测对小物体检测困难的问题,因为小物体的像素点数量要比大物体少很多,随着网络深度的加深,大物体的特征信息得以保留,而小物体的特征信息会越来越少。对于小目标信息丢失的问题,可通过多尺度图像金字塔解决, 图像金字塔其实就是对原图像进行不同尺度的采样得到的特征图组成的特征图层,最底层的特征图分辨率最高,越往上分辨率越低。而使用图像金字塔进行推理预测,计算量很大,不利于实际使用。为了解决该问题,FPN通过上采样增大图像的尺寸,然后与上一个浅层的特征图进行融合,并通过卷积提取特征信息。
PANET 对 FPN 浅层特征图的特征信息提取做了优化,因为随着网络深度加深,深层特征图的语义信息被不断提取,而 FPN 自顶向下的特征融合路径中的下采样过程,也是不断提取深层语义信息的过程,相应地,浅层语义信息会丢失得越来越多。而 PANET 增加了自下而上的特征融合路径,再次将浅层的特征信息融入到深层的特征图中。
YOLOv5s的颈部特征提取网络采用的是PANET结构,主要由CSP结构组成,CSP结构将输入分为两部分,一部分先经过 Bottleneck模块进行n次操作,然后再进行卷积操作,而另一部分直接进行卷积操作。随后,使用Concat操作将两部分进行拼接作为输出。Bottleneck结构使得颈部特征提取网络PANET的特征提取不够充分,从而影响了YOLOv5s的检测精度。受RFB模块启发,本文提出了多分支空洞卷积结构RFB-Bottleneck替换PANET的Bottleneck结构,改进后的特征融合方式RFB-PANET更加适用于轻量化目标检测网络,RFB-PANET采用的是多分支的空洞卷积结构,相比改进前,可以通过不增加网络深度的方式,以更少的参数量获得更大的感受野,提取更精确的目标特征,从而提高检测精度。
为验证RFB-PANET的有效性,本文进行了RFB-PANET特征融合方式与其他常见特征融合方式的对比实验,实验结果见表1。YOLOv5s的Neck部分采用的是PANET的特征融合方式,在表1中,用改进后的RFB-PANET特征融合方式代替PANET,并且与其他常用的特征融合方式PANET,BIFPN和FPN进行了对比。BIFPN特征融合通过引入权重,更好地平衡不同尺度的特征信息,但是结构相对复杂,推理速度慢。FPN特征融合缺少了自下而上的特征融合层,检测精度明显受影响。由表1可以看出,改进后的RFB-PANET特征融合方式参数量最少,指标mAP@0.5和mAP@0.5∶0.95远高于其他3种常见的特征融合方式,而每秒识别帧数(FPS)的差距很微弱,由此可以证明RFB-PANET改进策略的有效性。
表1 RFB-PANET特征融合方式与其他特征融合方式的对比实验Table 1 Comparative experiment of RFB-PANET with other feature fusion methods
改进后的RFB-PANET特征融合方式相比改进前的PANET结构更加复杂,需要通过3个不同分支的空洞卷积层来提取特征,推理时间增大,会增加计算复杂度。因此本文引入GhostConv来替换Conv,在几乎不影响检测精度的同时,降低模型的参数量和计算量,提高检测速度。
GhostConv之所以能减少参数量和计算复杂度,是因为舍弃了部分常规卷积,采用线性变换进行特征提取,可更好地利用特征之间的相关性和冗余性[21]。
通过常规卷积Conv(见图5(a))获取到的特征层内,有一些特征图的特征信息较为相似,因此可以通过消除这些冗余的特征信息来减少获取特征信息的操作的计算量。GhostConv首先通过常规卷积提取特征信息,获取到一般特征图,然后将一般特征图中的每一个通道的特征做线性运算,获取到同等通道数的附带特征图(即Ghost特征图),Ghost特征图就是冗余的特征图数量,通过简单的线性变换得到的Ghost特征图,能够在几乎不影响检测精度的同时有效降低普通卷积Conv的冗余性,降低计算复杂度;最后堆叠基础特征图和Ghost特征图作为输出。GhostConv的结构如图5(b)所示。
图5 Conv模块和GhostConv模块
实验中模型训练和测试所用的数据集是PASCAL VOC 数据集。本文数据计算使用的是Ubuntu20.04系统,CUDA10.2,显卡为GeForce RTX 3090,网络开发框架为PyTorch1.8,集成开发环境是Pycharm。统一设置训练轮次为200,批大小为16。
实验采用精确率、平均精度均值和每秒传输帧数作为评价目标检测方法的性能评价标准。精确率(P)和召回率(R)计算方法如下
(2)
(3)
其中:TP表示正样本被正确识别为正样本的个数;FP表示负样本被错误识别为正样本的个数;FN表示正样本被错误识别为负样本的个数。通过取不同的精确率和召回率值可以画出PR曲线, PR曲线下的面积就定义为AP,取所有检测类别 AP的均值即为mAP。性能评价指标AP(PAP)和mAP(PmAP)计算方法如下
(4)
(5)
进行消融实验来验证RFBG-YOLO算法中提出的各个模块对YOLOv5s的优化作用。表2为对RFBG-YOLO做的消融实验结果。表中RFB-PANET表示将YOLOv5s的颈部特征提取网络PANET替换为本文提出的RFB-PANET, GhostConv表示之后在该模型的基础上,将常规卷积替换成GhostConv。消融实验分别比较了算法的参数量、mAP以及FPS。
表2 RFBG-YOLO消融实验Table 2 RFBG-YOLO ablation experiment
由表2可看出,原YOLOv5s模型的参数量是7.2 MiB,将YOLOv5s的颈部特征提取网络PANET替换为本文提出的RFB-PANET后,相比改进前参数量下降了0.8 MiB,mAP@0.5指标提升了2.4个百分点,mAP@0.5∶0.9指标提升了5.4个百分点,FPS下降了19.4 帧/s,因此,改进后的颈部特征提取网络RFB-PANET通过更少的参数量提取更精确的目标特征,明显提升了模型的识别精度,但相比改进前结构更加复杂,需要通过3个不同分支的空洞卷积层来提取特征,推理时间增大,会增加计算复杂度。因此,将YOLOv5s+RFB-PANET模型当中的常规卷积Conv替换成GhostConv,相比改进前参数量进一步下降为5.2 MiB,FPS提升到了99.0 帧/s,而mAP@0.5指标仅下降了0.2个百分点,mAP@0.5∶0.9指标仅下降了1.2个百分点,可以看出GhostConv在几乎不影响检测精度的同时,降低了模型的参数量和计算量,提高了检测速度。
对比改进算法的实际效果,RFBG-YOLOv5s与YOLOv5s的部分检测结果如图6所示,其中浅蓝色框代表检测人的类,深蓝色框代表检测马的类,每个框的左上角代表算法检测框的置信度,置信度是YOLO系列算法评估检测框准确性的指标,表示预测框检测到某个物品种类时,预测框与物品真实框的重合程度,即
(6)
如图6所示,RFBG-YOLOv5s检测到人和马的置信度分别为0.90和0.87,YOLOv5s检测到人和马的置信度分别为0.88和0.64,RFBG-YOLOv5s与YOLOv5s检测到目标的数量虽然相同,但比较所框住目标的置信度可以看出,RFBG-YOLO算法的置信度会更高。
图6 RFBG-YOLOv5s和YOLOv5s的检测效果
在PASCAL VOC数据集上,将RFBG-YOLO算法与其他主流目标检测算法的性能进行比较,实验结果如表3所示。
表3 RFBG-YOLO与其他算法的对比Table 3 Comparison between RFBG-YOLO and other algorithms
RFBG-YOLO与YOLOv5s相比,模型参数量更小,mAP有明显提升,并且FPS相差不大。与YOLOv4-tiny和YOLOv3-tiny相比,虽然FPS降低了,但模型参数量更小,且mAP有大幅度提高。实验结果表明,相较于YOLOv5s和YOLOv4-tiny等主流的轻量化算法,以及YOLOv4和YOLOv3这些模型较大的算法,综合模型参数量、mAP和FPS来看,RFBG-YOLO有更好的性能。
本文提出的RFBG-YOLO是通过优化YOLOv5s的颈部特征提取网络PANET、引入GhostConv减少参数量和提高检测速度所得到的轻量化网络。优化后的颈部特征提取网络RFB-PANET采用多分支空洞卷积结构RFB-Bottleneck,解决了PANET特征提取不足的问题,提高了检测精度。优化后的RFB-PANET相比PANET结构更加复杂,需要通过3个不同分支的空洞卷积层来提取特征,因此,引入GhostConv使检测模型更加轻量化。实验结果表明,本文RFBG-YOLO算法在检测速度影响很小的情况下明显提升了检测性能,mAP@0.5为80.3%,相比改进前提高了2.2个百分点,mAP@0.5∶0.95为55.1%,相比改进前提高了4.2个百分点,模型参数量仅为5.2 MiB,相比改进前降低了2.0 MiB。