基于YOLO 框架的轻量化高精度目标检测算法

2023-07-17 08:24樊新川陈春梅
液晶与显示 2023年7期
关键词:损失卷积精度

樊新川,陈春梅

(西南科技大学 信息工程学院,四川 绵阳 621010)

1 引 言

在计算机视觉领域中,目标检测一直是一项热门的任务,是实现事件检测[1]、行为识别[2]、场景理解[3]、目标跟踪[4]等各种高级视觉任务的基础,被广泛应用于视频监控、自动驾驶、智能交通以及服务机器人等众多实际任务中。

对于传统的目标检测算法,人为设计的算子难以获取复杂图像的语义信息,存在泛化性差和鲁棒性低等问题。而卷积神经网络因具有强大的特征提取能力[5],在目标检测任务中得以快速发展。目前,目标检测算法可分为Anchor-based 和Anchor-free。早期Anchor-based 类算法中的Two stage 目 标 检 测 算 法R-CNN 系 列[6-7]使 用 区 域 建议生成网络,并在最后一层特征图上每个像素点设置不同尺度的锚框进行前后景的回归和分类预测,接着对前景目标进行更精细的回归和分类预测,从而使目标检测精度得到极大提升。不过,该类算法由于分两阶段进行,参数量和运算量都比较大,故而实时性较差,不利于轻量化设备使用,因此诞生了基于回归思想的One stage 目标检测算法,代表性算法为YOLO(You Only Look Once)系列[8-10]。该系列算法基于区域建议生成网络,并不区分前后景而是直接完成对目标的分类和回归,极大地提升了检测速度,同时降低了参数量和计算量,但精度不高。在改进版本上,经过锚框引入、聚类分析以及跳连接等优化之后,YOLO 系列的检测精度已不断逼近R-CNN 系列,但仍然存在锚框重叠且数量多等问题。Anchorfree 类算法则是直接预测定位框,即通过寻找目标的角点或中心响应点完成定位和回归,无需借助锚框,提升了速度和精度,代表性算法有CornerNet[11]、CenterNet[12]、YOLOX[13]等。

虽然目标检测算法的精度不断提升,但在实际运用中,昂贵的系统开销是制约算法落地的重要 原 因。MobileNet[14]提 出 深 度 可 分 离卷 积,把标准卷积拆分为深度卷积和点卷积,减少了计算量和参数量且精度损失较小。ShuffleNet[15]在此基础上,利用组卷积和通道混洗进一步减少模型参数量。GhostNet[16]发现同一层中的特征图之间相似度较高,可以利用一些廉价的操作进行特征变换而不需要网络生成。

本文基于YOLO 框架,深入研究了Focus 下采样和高效注意力机制,提出了增强型Mobile-Netv3(Enhance-MobileNetv3,E-MobileNetv3)网络,并进一步研究设计了纵横多尺度特征融合、Mish、SIOU 和Soft-NMS 等策略,旨在解决开销与精度平衡困难的问题。

2 YOLOXs 算法

2.1 YOLOXs 的网络结构

YOLOXs 基于YOLOv3 算法进行改进,主要改进措施为在预测分支处将原来的耦合头改为解耦头以及采用simOTA 正样本匹配策略。其网络结构如图1 所示,解耦头将原本耦合头同时进行分类、回归和对象检测的3 种任务改为多个分支分别对应不同任务,且直接输出预测框而不再使用anchor 机制,从而提高了精度,避免了超参数设置。

图1 YOLOXs 模型结构Fig.1 Model architecture of YOLOXs

2.2 损失函数

YOLOX 损失涉及对象检测损失lobj、分类损失lcls和位置损失lbox共3 种损失,各损失函数的数学定义如式(1)~(4)所示:

式中:S2表示网格数;b代表锚框数;Iobjij代表第i、j处是否存在目标,有则为1,无则为代表第i、j处是否存在目标,有则为0,无则为1;代表置信度;Ci表示检测目标置信度的真实值;Pi(c)代表真实类别概率;(c)代表预测类别概率;IOU 表示预测框与真实框的交并比。

3 基于YOLO 的改进方法

3.1 改进的E-MobileNetv3

深度可分离卷积由深度卷积和点卷积两部分构成。深度可分离卷积与标准卷积的参数量对比如式(5)所示:

式中:S为卷积核尺寸,M为输入特征图数目,N为输出特征图数目。

MobileNetv3[17]网络由MobileNetv3 bneck 堆叠而成,该结构主要包含逆瓶颈结构、残差结构、注意力机制和深度可分离卷积。MobileNetv3改进了Swish 激活函数,提出了激活函数Hard_swish。Swish 激活函数为x*Sigmoid(x),该函数可以显著提高卷积神经网络的性能,但Sigmoid函数计算耗时,所以改用Relu6 函数,如式(6)所示:

MobileNetv3 网络第一层通过采用步长为2的卷积操作完成下采样,导致输入图像信息有一定的损失,本文将其改进为Focus 结构,如图2 所示。从输入图像中每隔一个像素提取一个像素,共组成4 张图像,完成下采样,再将其输入步长为1 的卷积层,有利于更充分的提取输入图像的特征。

图2 Focus 图解与实际效果Fig.2 Focus diagram and practical effect

本文将MobileNetv3 中的Sequeeze and Excitation[18]注 意力 模 块 改 进 为Efficient Channel Attention[19],该模块仅由全局平均池化和一维卷积组成,因此更为轻量化。为了进一步加快计算速度,将一维卷积后的Sigmoid 激活函数优化为Hard_sigmoid 激活函数,其结构如图3 所示。

图3 E-MobileNetv3 bneck 结构Fig.3 Structure of E-MobileNetv3 bneck

3.2 纵横多尺度信息融合

Neck 部分采用特征金字塔(Feature Pyramid Networks,FPN)[20]和 基 于Inception[21]的SSH 结构[22]并进行通道裁剪,使网络参数量进一步减小。在FPN 结构中横向构建3×3、5×5 和7×7 3 种感受野的分支,5×5 感受野和7×7 感受野分支共有第一层卷积,然后将3 个分支的信息进行融合,以此增强网络对不同尺度目标的适应能力,且能利用更多的上下文信息提高网络的识别性能,结构如图4(a)所示。

图4 SSH 嵌入方式Fig.4 Embedding mode of SSH

图4(b)和(c)为SSH 结构在本文网络上嵌入的两种方式,图4(b)方式是添加在输出头之前;图4(c)方式是与FPN 进行融合,添加在主干网络输出分支中。

3.3 激活函数的改进策略

激活函数向卷积神经网络中引入了非线性因素,使得网络能够进行非线性回归。SSH 中的Relu 激活函数的数学定义如式(7)所示:

卷积神经网络对图像数据进行卷积操作时,会产生大量的负数。使用Relu 激活函数,会使得所有负值置0,从而导致网络损失大量信息。Hard_Swish 和Mish 激活函数则避免了这个问题,而Mish 激活函数相比于Hard_Swish 激活函数,其连续可微,能够更好地避免梯度消失和梯度爆炸的发生。因此,本文将激活函数改进为Mish,其数学表达式为如式(8)所示:

3.4 损失函数的改进策略

交并比(IOU)存在不能反映重叠位置、框间距离等问题。为了解决上述问题,GIOU[23]、DIOU[23]与CIOU[23]被提出。然而,这些方法都没有考虑所需真实框与预测框之间不匹配的方向。因为预测框可能在训练过程中“四处游荡”并最终产生更差的模型。针对以上问题,SIOU[24]基于CIOU 考虑了角度因素,解决了方向不匹配的问题,如图5 所示,设计出Angle cost、Distance cost、Shape cost 和IOU cost 4 种 损 失,它 们 的 数学定义如式(9)~式(16)所示:

图5 边框回归中的角度因素Fig.5 Angle factor in border regression

式中:bgt、b代表真实框和预测框的中心点坐标,σ代表真实框与预测框两者中心点距离,ch代表真实框与预测框两者中心点y方向上距离,wgt、hgt代表真实框的宽、高,w 、h代表预测框的宽、高。

改进后的lbox的数学定义如式(17)所示:

式中:Δ代表Distance cost,Ω代表Shape cost。

3.5 NMS 的改进策略

传统的非极大抑制(Non-Maximum Suppression,NMS)用于冗余预测框剔除,而直接删除的做法则使被遮挡目标的检测率降低。Soft-NMS[25]针对该问题,提出将大于阈值的预测框的置信度进行衰减,而不是置0 直接删除,其数学定义如式(18)所示:

式中:si代表其余相近预测框的置信度;代表置信度最高的预测框;bi代表其余相近预测框;σ代表标准差;N代表阈值。

4 实验结果与分析

4.1 实验设备及数据集

本文显卡为1 张8 GB 内存的NVIDIA GTX 2070 super,操作系统为ubuntu,深度学习框架为Pytorch。实验数据为交通监控数据集UADETRAC 和MS COCO 数 据 集。

4.2 实验评估标准

本文所用评估标准是平均精确度均值(Mean Average Precision,MAP)、参数量、浮点数(Giga Floating-point Operations Per Second,GFLOPs)和帧率(Frames Per Second,FPS)。

式中:P表示查准率,R表查全率,TP 表示将正样例被正确预测为正样例的个数,FP 表示将负样例被错误预测为正样例的个数,FN 表示将正样例被错误预测为负样例的个数,AP 表示P-R曲线的面积,mAP 表示所有类的平均精度。

4.3 实验结果与分析

4.3.1 消融实验

在本文改进的模型下进行消融实验,即Anchor-based 型,并使用0.5 倍宽度的E-Mobile-Netv3 为主干网络。

为了更加全面评估E-MobileNetv3 的性能,选择ShuffleNetV2-0.5、Ghost-0.5、MobileNetv2-0.5 和MobileNetv3-0.5 4 种轻量级网络在本文算法上进行实验(表1),实验数据为MS COCO数据集,实验结果如表2 所示。

表1 轻量级主干网络对比实验Tab.1 Comparison experiment of lightweight backbone network

表2 SSH 嵌入方式验证实验Tab.2 Verification experiment of SSH embedding mode

对比表1 中实验结果,可以看出本文提出的E-MobileNetv3-0.5 以最小的算法开销取得了最高的精度。综上,E-MobileNetv3 相比于其他轻量级主干网络更具优越性。

在MS COCO 上验证了本文SSH 嵌入方式的算法性能,实验结果如表2 所示,将SSH 与FPN进行融合的方式对模型精度的提升最大。

为进一步说明纵横多尺度融合的作用,对提取结果通过热度图对比分析,如图6 所示。图6(a)为3×3 的感受野的分支,其贡献主要为鸟喙部位,偏向于目标局部特征;图6(b)为5×5 的感受野的分支,其贡献更偏向于鸟整体特征;图6(c)为7×7 的感受野的分支,贡献偏向全局特征;图6(d)将3 种尺度的信息融合,其贡献为目标整体以及鸟喙和翅膀等局部特征。可见,本文提出的纵横多尺度融合结构能够关注目标整体并突出有效的局部特征。

图6 SSH 各感受野热度图及最终输出热度图Fig.6 Heat maps of SSH receptive field and final outputheat map

为了验证Neck 部分采用不同激活函数的性能,在MS COCO 上进行实验,实验结果如表3 所示。可以得出,采用Mish 激活函数的网络的检测精度最高。

表3 Neck 部分不同激活函数实验结果Tab.3 Experimental results of different activation functions in Neck part

为了验证Focus、Efficient Channel Attention(ECA)、Convolutional Block Attention Module(CBAM)[26]、GIOU、DIOU、CIOU、SIOU、SSH、PaFPN[27]、Soft-NMS 和YOLOX框架等对本文方法的影响,在MS COCO 数据集上进行了消融实验,实验结果如表4 所示。可以看出,主干网络第一层改进为Focus,精度提升了0.06%;注意力模块改进为ECA 和CBAM,精度再次提升了2.31%、2.56%,参数量下降了1.62%、0.85%;融合SSH 结构相比于未融合时的检测精度提升了23.63%;将CIOU 回归损失改进为SIOU 回归损失,精度提高了5.6%;采用PaFPN 相比于普通的FPN,精度提升了8.7%,但参数量增加了85%;将NMS 改进为Soft-NMS,精度提升了9.62%;在YOLOX 框架下,精度提升了14.9%。

表4 消融实验Tab.4 Ablation experiments

综上所述,本文改进的Focus、ECA、SSH、SIOU 回归损失和Soft-NMS 均提升了算法的检测精度。因此以YOLOX 框架为基础,E-Mobile-Netv3 为主干网络、Neck 部分为纵横多尺度融合结构、SIOU 为回归损失和Soft-NMS 为预测框后处理,形成了本文最终目标检测算法。

4.3.2 对比实验

为了验证本文方法的先进性,将本文提出的改进方法,即Anchor-free 型,使用1 倍宽度的EMobileNetv3 为主干网络与当前主流方法如YOLOv4-tiny、YOLOv5s、YOLOXs、YOLOv5s-MobileNetv3、YOLOXs-MobileNetv3、Faster R-CNN、Mask R-CNN、Cascade R-CNN、SSD-VGG16、SSD-MobileNetv2、FCOS、CentripetalNet、CenterNet 和Efficient-b3 算 法 在MS COCO 数 据 集上进行实验对比,实验结果如表5 所示。可以看出,本文改进模型相较于其他主流算法模型,在精度和算法开销上具有明显的综合优势。与YOLOv5 相比,参数量和计算量分别下降了55.42%、30.49%,精度提升了5.7%;与YOLOXs 相比,在保证精度的同时,参数量下降了64.98%,计算量下降了57.14%;与Cascade R-CNN 相比,参数量下降了95.68%。

表5 在MS COCO 上的对比实验Tab.5 Comparative experiments on MS COCO

为了更加直观地进行评价,将YOLOXs、Mask R-CNN、Cascade R-CNN、CentripetalNet、Center-Net、FCOS 与本文改进模型的检测效果进行了对比,效果如图7 所示。可以看出,在轻量级One stage 算法中,本文方法表现更优秀。

图7 在MS COCO 上的检测效果对比Fig.7 Detection effect compared on MS COCO

为了验证本文方法的实用性,选取了YOLOv3-SPP、YOLOv5s 和YOLOXs 与本文检测算法在UA-DETRAC 交通车辆数据集上对比了检测性能,实验结果如表6 所示。可以看出,本文方法的mAP@0.5 达到了70.5%。与YOLOv3_SPP相比,mAP@0.5 下降了2.2%;与YOLOv5s 和YOLOXs 相比,分别提升了6.33%和3.52%;与YOLOXs 相比,FPS 提升了14.4%。

表6 在UA-DETRAC 上的对比实验Tab.6 Comparative experiments on the UA-DETRAC

YOLOv3-SPP、YOLOv5s、YOLOXs 以及本文方法的测试效果如图8 所示。可以看出,本文方法的检测率最高且边框回归更精准。图中红色虚框标注了各算法遗漏目标,本文方法都能成功检测。本文检测结果(Ours)中的3 号、4 号、7 号和8 号目标相比于其他检测算法,具有最高的定位精度。

图8 在UA-DETRAC 上的检测效果对比Fig.8 Detection effect compared on UA-DETRAC

在自制的交通监控视频上进行检测效果验证,实验结果如图9 所示。可以看出,图(1)中蓝色虚框标出的蓝绿色bus 在偏蓝色背景下,YOLOXs 并未检测出;图(2)中蓝色虚框中的van 车辆,YOLOXs 检测产生歧义,被同时标记为van和car;图(3)中bus 右上方小的蓝色虚框中,YOLOXs 将一辆van 和car 识别为一辆bus;图(4)蓝色虚框中的蓝绿色的bus 在偏蓝色背景下,被YOLOXs 识别为truck;图(5)蓝色虚框中的car 未被YOLOXs 识别到。

图9 交通监控场景下的检测效果对比Fig.9 Comparison of detection effects in traffic monitoring scenarios

综上所述,本文检测算法的开销相较主流目标算法具有较大优势且精度损失较小,多尺度适应性更强。

5 结 论

针对目标检测算法精度与开销难以平衡以及多尺度目标适应性的问题,本文提出基于YOLO 框架的轻量化高精度目标检测算法,通过改进后的E-MobileNetv3 设计纵横多尺度融合结构、Mish、Soft-NMS 和SIOU 回归 损 失 等 策 略,改善了上述问题。

在UA-DETRAC 上的实验证明,相比于YOLOXs,本文改进模型的Map@0.5达到70.5%,提升了3.52%,参数量与计算量分别减少了64.98%、57.14%,FPS 提升14.4%。本文通过消融实验对比以及与其他主流目标检测算法对比,证明改进算法具有较高的检测精度与较低的算法开销。后续研究将算法模型实际嵌入到小型移动平台实验,进一步实现本文算法的实际应用价值。

猜你喜欢
损失卷积精度
基于3D-Winograd的快速卷积算法设计及FPGA实现
胖胖损失了多少元
从滤波器理解卷积
玉米抽穗前倒伏怎么办?怎么减少损失?
基于DSPIC33F微处理器的采集精度的提高
基于傅里叶域卷积表示的目标跟踪算法
GPS/GLONASS/BDS组合PPP精度分析
一般自由碰撞的最大动能损失
损失
改进的Goldschmidt双精度浮点除法器