基于改进SSD的轻量级目标检测算法
2023-04-06王贺,樊星
王 贺,樊 星
(山西大学 物理电子工程学院,山西 太原 030006)
目标检测是计算机视觉和数字图像处理的一个热门方向,广泛应用于机器人导航、无人自动驾驶、智能视频监控、航空航天等诸多领域。多年来,许多深度学习模型被提出用来替代传统的手工特征来解释图像,卷积神经网络[1-2]就是其中之一,并且已经取得了一定的成果。相较于传统方法,卷积神经网络能自动学习更深层的特征信息,拥有更高的检测精度和更快的检测速度,具有重要的现实意义。
目前主流的基于卷积神经网络的目标检测大概分为两大类:(1)两阶段目标检测算法,这类目标检测算法分为两个阶段:首先产生候选区域(Region Proposals),其中包括目标的位置信息;其次,对候选区域进行分类和位置修正。这一类的经典目标检测算法有R-CNN[3],Fast R-CNN[4]等。这些算法检测精度虽高,但模型尺寸大,难以达到实时性。(2)一阶段目标检测算法,这类目标检测算法检测不需要预先产生候选区域,而是在图像上直接产生类别概率和位置信息,比较经典的算法有SSD[5-6],YOLO[7-8]等,这类算法虽然损失了部分检测精度,但模型灵活性高,便于和其他模型结合,因此,备受人们青睐。SSD算法吸取了YOLO速度快和RPN定位准确的优点,使其在运行速度和检测精度上有了较好的平衡。
针对目前目标检测算法模型大,对设备要求高,难以应用到移动端和嵌入式设备[9]等问题,本文采用MobileNetV3轻量级神经网络[10-11]与SSD检测器相结合,以此来满足能够移植到嵌入式设备的要求。由于轻量级神经网络在提取特征时减少了网络深度,从而会损失较多的有效信息,使检测精度下降,因此,本文加入了双向特征金字塔进行特征融合,以提高检测精度。
1 系统框架
为了降低以VGG16为特征提取网络的SSD算法的计算复杂度,进而满足在移动端嵌入式平台上运行的需求,采用MobileNetV3作为骨干网络来代替VGG16网络。但该网络特征输出层对小目标的特征提取能力不足,导致算法对小目标的检测能力较差。因此,本文采用双向特征金字塔(Bidirectional Feature Pyramid Networks,Bi-FPN)对多尺度的特征层进行特征融合,以此来提高检测能力,系统框图如图1 所示。
图1 系统框图
整个模型共有29层网络,其中,前17层为MobileNetV3提取特征层,剩余12层为第17层网络的衍生层。从图1中可以看出,模型中输入320×320尺寸的图像,先经过MobileNetV3进行特征提取,共经过17层卷积,将layer-14,layer-17送入下一层,同时也送入到双向特征金字塔网络。layer-17到layer-18是经过逐点卷积(Pointwise Convolution,PW卷积)改变通道深度,从10×10×480变为10×10×256;layer-18到layer-19是经过逐通道卷积(Depthwise Convolution,DW卷积)改变特征层尺寸,从10×10×256变为5×5×256;layer-19到layer-20是经过PW卷积进行通道扩张,从5×5×256变为5×5×512,然后送到下一层和双向特征金字塔网络,后面的特征层也是同样的操作生成。经过以上卷积得到layer-14,layer-17,layer-20,layer-23,layer-26和layer-29 6个尺度的特征层边框回归和分类。将这6种不同尺度的特征图进行双向特征融合(Bi-FPN),再经过SSD检测器的边框检测和分类检测得到最终的检测结果。
1.1 深度可分离卷积
MobileNet网络是一种轻量级卷积神经网络,为了减少计算量和参数量,使其能够更好地在移动端和嵌入式平台上部署,提出了深度可分离卷积。深度可分离卷积是轻量级网络MobileNet的核心思想,由逐通道卷积(DW卷积)和逐点卷积(PW卷积)组成。逐通道卷积的每个通道只能被一个卷积核卷积,一个卷积核只负责一个通道,提取单个通道的特征,并且逐通道卷积后的特征图通道与输入特征图通道保持一致。逐点卷积中每个卷积核的大小为1×1×M,M为卷积核深度,最终得到新的特征图。图2(a)为标准卷积的过程,图2(b)为深度可分离卷积的过程。
(a)标准卷积
图中DK为卷积核大小,M为输入特征矩阵的深度,N为输出特征矩阵的深度,即卷积核个数,DF为输入特征矩阵的高和宽,DG为输出特征矩阵的高和宽。
(1)
在MobileNet里面卷积核大小DK一般为3,理论上普通卷积计算量是深度可分离卷积的8到9倍。
1.2 MobileNetV3-SE模块
MobileNetV3中所用的SENet(Squeeze-and-Excitation Networks)是通道注意力的典型代表。如图3 所示为SENet结构图。该思想主要通过Squeeze和Excitiation两个关键操作实现。Squeeze对特征进行压缩,将原始特征图维度H×W×C压缩为1×1×C,即把原先的二维压缩成一维,相当于这一维参数获得了之前H×W全局的感受野。Excitation通过参数W为每个通道生成相应的权重,得到不同通道的重要性大小后再利用乘法逐通道激励到之前的特征图所对应的通道上。
图3 MobileNetV3-SE模块结构图
(2)
其次,进行Fex操作,其输入为SQ,输出为与D相对应的权值,从SQ到EX的计算公式为:EX=Fex(SQ,W)=σ(W2δ(W1SQ)),W1为第1个 FC参数,δ为Relu激活函数,W2为第2个FC参数,σ为Hard-sigmiod激活函数,通过公式计算得到EX值。Relu激活函数公式为
(3)
Hard-Sigmiod激活函数公式为
(4)
将EX值作为权重,乘到输入特征上,其运算为Fscale,最终SE整体公式可表示为
(5)
1.3 双向特征金字塔
MobileNet的多尺度特征层如果直接与检测器相连接,会导致浅层的特征提取能力不足,特征金字塔(Feature Pyramid Networks,FPN)连接在多尺度特征层之后以及检测器之前,将深层特征层融合到浅层特征层,增加了浅层特征层的语义信息,从而使浅层的特征提取能力得到了改善。而Bi-FPN是基于FPN进行改进,对多尺度的特征融合得到了优化与提升。Bi-FPN要将多尺度特征层进行两次特征融合,通过上采样和下采样统一特征分辨率尺度,先将深层特征层向浅层特征层自上往下进行融合,后将浅层特征层向深层特征层自下往上进行融合,并在同一尺度的特征间添加双横向连接,缓解因网络层级过多造成的特征信息丢失,使网络在不增加计算额外参数的同时融合更多相同尺度的特征,并使不同尺度特征能够更充分融合,对于只有一个输入的结点,将减少此结点对特征网络的贡献,其结构如图4 所示。
图4 Bi-FPN结构图
从图4 中可看到,由MobileNet作为特征提取网络所产生的layer-14,layer-17以及由layer-17所衍生的layer-20,layer-23,layer-26和layer-29 6个不同尺度的特征层,先经过上采样自上而下融合,接收上一层特征层与本层特征层进行卷积处理,得到新的特征信息送往下一特征层和右侧自下而上通道。右侧为下采样自下而上融合,接受同一层特征层的输入并接收高层级信息,送往上一层级或直接输出预测。其中layer-14和layer-29特征层没有进行卷积操作直接连接最右侧输出,是因为这两层处于最底层和最高层,若使用卷积层只会有一个输入或输出,对于特征融合贡献不大,反而会增加计算量产生冗余。
2 实验结果与分析
2.1 实验准备
实验配置为:intel i7-11700CPU,64 b Windows 10操作系统,Nvidia GeForce RTX 3060Ti,实验框架为Pytorch深度学习框架。
为了验证所改进的MobileNetV3-SSD算法的有效性,本文采用PASCAL VOC2007和VOC2012数据集共16 551张图片对模型进行训练,并且采用VOC2007的测试集共4 952张图片对训练完成的模型进行测试,最后将测试结果与SSD,MobileNetV3-SSD,Tiny-YOLOV3和文献[8]算法结果进行对比。
2.2 评估标准
本文使用平均精度均值(mean average precision,mAP)、FPS(Frames Per Second)和MB(MByte)这3个指标分别来评估模型的准确率、检测速度和所占内存大小,以此来检验模型性能。平均精度均值(mAP)是评估目标检测模型的重要指标,其计算式为式(6)~式(8)。
准确率
(6)
(7)
(8)
式中:TP为既是正样本又被预测为正样本的个数,FP为负样本被预测了正样本的个数,TO为当前图像中类别的实际目标个数,TI为包含当前类别目标在所有图像的个数,k为需要识别目标的总类别个数。AP为单个目标的平均精度,mAP为所有目标类别的平均精度均值。
2.3 实验结果分析
本文设计的网络在Pascal VOC2007和VOC2012数据集上训练的损失函数曲线如图5 所示,横坐标为训练迭代次数,可以看出,经过20个epoch网络趋于收敛。在VOC2007测试集上的mAP曲线如图6 所示。
图5 训练损失曲线
图6 mAP曲线
在运行时间方面,本文算法的训练时间达到了14 h,耗时较长,但训练过程为线下操作。测试阶段方面,采用VOC2007的测试集共计4 952张图片进行测试,共耗时176 s完成。检测每张测试图仅需0.035 7 s,满足实时性要求。
为了验证本文算法性能,使各个算法分别在Pascal VOC2007和2012训练集上训练,在VOC2007测试集上测试,测试结果如表1 所示,并且分别得出各模型在Pascal VOC上20种类别的准确率,比较结果如表2 所示。
表1 各算法测试结果
表2 各算法不同类别准确率对比
从表1 中可以看出,本文所提出的模型准确率达到了73.65%,相比于MobileNetV3-SSD,加了双向特征金字塔融合(Bi-FPN)后mAP提高了2.63%,相比于Tiny-YOLOV3提升了12.35%,比文献[8]提升了7.95%。同时对模型检测速度和模型大小进行了对比,从表1可以看出,本文所提出的模型FPS达到了28,相较于SSD, Tiny-YOLOV3和文献[8]分别提高了10.6, 6.4和2.9,与MobileNetV3-SSD相比相差无几。表1中也可以看出本文所提出的模型大小仅占34 MB,与原始SSD模型相比,模型所占内存在大小降低了64.3%,比Tiny-YOLOV3所占内存减少了0.9 MB。虽没有文献[8]所提出的模型所占内存小,但检测精度和检测速度都有很大的提升。相比于MobileNetV3-SSD模型,本文模型所占内存在大小不变的基础上提升了检测精度。
从表2 中可以看出,由于双向特征融合网络结合了不同尺度的特征图,使本文模型检测准确率在大中小各个类别上都有了明显的提升。相较于SSD模型,mAP所差无几,但bottle, cat, dog, person等中小目标的检测上分别提高了2.16%, 3.2%, 8.2%和1.11%,并且在aeroplane, bus, train大型目标上分别提高了10.82%, 15.4%和6.71%。相较于MobileNetV3-SSD,加了Bi-FPN后,20个类别中有15个类别的准确率都有明显的提升,并且本文提出的模型在各类别上相比于Tiny-YOLOV3和文献[8]都有较好的提升。
为了更加直观地体现模型的优化,进行模型测试实验,图7 为测试效果图。
图7 测试效果图
从图7中可以看出,用SSD检测图中目标时,出现了漏检和误检的情况,用MobileNet-SSD检测目标时,出现了误检和重复检测的情况,而加了Bi-FPN后的改进模型相比其他两个模型具有更好的检测效果。
3 结 论
本文在MobileNetV3为骨干网络的基础上,设计了一种可以应用于移动端和嵌入式设备中的轻量级目标检测模型。介绍了模型整体框架以及MobileNetV3网络的优点,针对SSD模型大以及轻量级目标检测模型准确率低的问题,提出了一种改进的轻量级目标检测模型。把MobileNetV3与双向特征金字塔网络(Bi-FPN)相结合,不仅使模型所占内存得到很大程度的压缩,仅占34 MB,相比SSD模型压缩了64.3%,检测速度FPS提高了10.6。同时在Pascal VOC数据集上训练验证,改进后的网络模型mAP准确率达到了73.65%,与单独的MobileNetV3-SSD模型相比,在没有增加模型内存量的基础上,准确率提升了2.63%,检测效果更加准确。这些优点表明所改进的MobileNetV3-SSD检测模型更适用于移动端和嵌入式平台。下一步研究将继续优化该目标检测模型,压缩模型大小的同时,使其具有更高的准确率、稳定性以及检测速度。