面向多目标图像检测的轻量级SSD 网络*
2023-08-02罗斌强段先华
罗斌强 段先华 潘 慧
(江苏科技大学计算机学院 镇江 212100)
1 引言
当今社会,数字图像作为重要的通信载体,如何在有效减少人力资源消耗的情况下,从海量信息中提取关键因素已成为人们关注的焦点。在特殊的场景检测任务中,准确地检测和识别图像目标变得越来越重要,不仅是简单的对象检测和分类,而是希望可以从信息中提取相应的位置目标和目标区域,进而利用这些重要信息。随着目前计算机计算能力的不断提高和网络共享资源的不断积累,基于深度学习的目标检测方法逐步应用于各大领域,为目标检测技术开辟了一条新途径。
由于一系列卷积神经网络深层架构,如AlexNet[1]、VGGNet[2]、GoogLeNet[3]、ResNet[4]等的提出,目标检测与识别在计算机视觉任务的相关研究上取得了丰富的成果。这些网络模型虽然性能强大,检测精度更优,但是网络体积越来越大,结构越来越复杂,在预测和训练的时候对硬件资源的要求也逐步增多,往往需要更高计算力的服务器来运行深度学习神经网络模型。目前,极大多数这些基于深度学习的目标检测算法都在GPU 上实现的,但是其在实际应用环境中的应用存在这一定程度上的困难。因此,尽可能多地减少计算量、保证准确率是实际应用中迫切需要解决的问题,这正需要是轻量级的模型来实现。
近些年来,深度神经网络模型在图像分类、物体检测等机器视觉任务中被广泛应用,并取得了巨大成功。关于轻量化网络设计,François Chollet 提出了一种受Inception 启发的新颖的深度卷积神经网络体系结构,并证明了这种被称为Xception[5]的体系结构在ImageNet 数据集上的性能稍好于Inception V3。Andrew G. Howard 提出的一种称为MobileNets[6]的有效模型适用于移动和嵌入式视觉应用。该体系结构使用了极致深度可分离卷积来构建较轻的深度神经网络。Xiangyu Zhang 介绍了一种计算效率极高的CNN 体系结构,称为ShuffleNet[7]。该体系结构利用了两个新的操作,逐点组卷积和通道混洗,可以在保持准确性的同时大大降低计算成本。
原始的SSD[8]的检测性能相对较好,使用端到端一阶段多尺度检测算法,相较其他同期模型具有较高的检测精度。但SSD 算法在网络搭建时使用了大量的卷积层用于基础特征提取,因此网络过于臃肿庞大、计算量大、效率较低,难以满足实际应用的需要。本文主要是对原始的SSD 网络进行了轻量化网络模型的设计,提出了一种轻量级SSD网络模型SL-SSD,首先使用轻量级特征提取网络ShuffleNet 替换了SSD 网络的VGG-16 模块;接着并行使用小、中、大三种尺度的空洞卷积特征提取方式,对原始SSD网络的附加特征提取模块进行改进,减少了网络复杂度的同时还实现了参数共享,提高了对小目标检测精度。实验结果表明,本文使用的轻量级SSD 卷积神经网络算法在检测与识别精度下降不大的前提下,降低了模型复杂程度。
2 SSD目标检测网络
原始的SSD 网络主要包括两部分:一部分是用于初步提取特征的基础网络,采用VGG-16 网络模型,其中FC6 和FC7 转换为卷积层;另一部分是在基础网络后添加的多个附加卷积层,并且卷积层的大小逐层递减,用于提取不同尺度的卷积特征图。接着,在不同尺度特征图中可能存在的目标进行预测,通过候选框机制生成一组不同宽高比的默认框,再对目标对象的位置偏移量和类别置信度进行回归得到预测结果。图1 显示了原始SSD 网络结构。
图1 SSD网络结构图
原始SSD 网络的核心之一就是利用了特征金字塔结构,其在conv4-3,conv-7(FC7),conv6-2,conv7-2,conv8_2,conv9_2 这6 层大小不同的特征层上做预测,同时进行softmax 分类和边框回归。预测时该网络需要在每层特征图生成一系列默认框。假设使用第m层特征图做目标预测,每层特征图中的默认框尺寸大小计算如式(1):
其中默认设置smin=0.2,smax=0.95,即默认框的尺度最小为0.2,最大为0.95,再通过不同的横纵比aspect_ratio在每层特征图上生成多比例默认框。因此,每个默认框的宽和高可以通过式(2)计算:
当aspect_ratio=1 时,还添加了的正方形默认框。
假设第m层特征图大小为m×n,特征图每个特征点为中心生成a 个默认框,每个框需要预测出c个类别以及四个位置坐标,即会产生(c+4)×a×m×n个输出结果。由于SSD采用m=6层网络生成默认框,这6 个特征层产生的特征图的大小分别为38×38、19×19、10×10、5×5、3×3、1×1,每层特征图取ar=[[2],[2,3],[2,3],[2,3],[2],[2]]。每个m×n大小的特征图中有m×n个中心点,每个中心点产生k个默认框,六层中每层的每个中心点产生的k分别为4、6、6、6、4、4。所以6 层中的每层取一个特征图共产生38×38×4+19×19×6+10×10×6+5×5×6+3×3×4+1×1×4=8732个默认框。
3 SL-SSD目标检测网络
3.1 SL-SSD网络架构
该文将原始SSD 网络剖析为四个模块:输入、基础网络VGG-16 模块、附加特征网络模块和输出。文章主要对基础网络VGG-16 模块和附加特征网络模块进行优化,轻量级SL-SSD 网络模型整体架构,如图2所示。
图2 SL-SSD网络结构图
由图可知,针对于基础网络模块,该文使用了轻量级ShuffleNet 网络替换了原始SSD 的VGG-16网络,没有大幅度的卷积操作,使用ResNet、深度可分离卷积以及通道重新的方式。另外针对于附加特征网络模块,该文采用一种并行多分支多尺度的方式对基础网络进一步的进行提取,三个并行的通道网络结构是完全一样的,只是每层卷积层的卷积核采取的是空洞卷积,膨胀率分别为[1,2,3],用于解析大中小三种不同的物体,实现了三分支之间的参数共享,进一步减少了网络的计算力。
完整的轻量级SL-SSD网络模型各网络层参数如表1所示,输入图像大小为224×224,经过一个卷积层+MaxPool,然后通过10个分组3通道Shuffle单元模块,接着通过6 个Parallel 单元模块,最后将提取出来的特征进行非极大值抑制回归分类。
表1 轻量级SSD网络层参数表
3.2 Shufflenet模块
由于原始SSD 网络的VGG-16 模块计算复杂度过于庞大,该文将采取轻量级SuffleNet网络替换原来VGG-16 网络。在原始的模型中,VGG-16 网络采用的是标准卷积方式,对输入特征的所有通道进行卷积计算,然而计算代价过大,不适合小型网络。为了解决该问题,相较简单的方式是对标准卷积之间采取通道稀疏的连接方式,而ShuffleNet 网络结构恰是沿袭了稀疏连接的设计理念。ShuffleNet 网络受ResNeXt 的启发,通过将卷积运算的输入限制在每个组内,模型的计算力取得了显著的下降。接着,在使用分组逐点卷积的同时,引入了组间信息交换的机制,每个卷积核需要同时接收各组的特征作为输入。最后,通过通道重排来实现这一机制。
假设网络输入维度是c×h×w,卷积层通道数为m,该结构单元计算量为hw(2cm+9m2)FLOP,而经过ShuffleNet 轻量化后,计算量仅为hw(2cm/g+9m)FLOP,其中g为分组个数,默认为3 组。所以,对于网络计算力预算低的情况,ShuffleNet可以减轻网络运算压力。
ShuffeNet 网络模块模型主要由10 个分组3 通道的ShuffleNet 结构单元堆叠而成,分属网络的两个Shuffle阶段,每经过一个Shuffle阶段特征图的空间尺寸减半,而通道数翻倍。单个ShuffleNet 结构单元如图3 所示,ShuffleNet 结构单元采用逐点分组卷积,将多层卷积堆叠操作的输入限制在每个组内,使得不同分组的输入在分组卷积中交叠,输入和输出之间相关联。其中逐点分组卷积就是3×3深度可分离卷积,其结构单元如图4 所示,接着进行通道混合,与批归一化BN 层和修正线性单元ReLU 激活函数组成基本单元,最后采用深度残差块进一步提高网络模型的效率。
图3 ShuffleNet结构单元
图4 深度可分离卷积
3.3 并行多分支多尺度网络模块
在原始的SSD 目标检测算法的附加特征模块中,多尺度特征图的检测方法是对38×38,19×19,10×10,5×5,3×3,1×1这6个不同尺度的特征图进行预测分类。这种方式预测分类卷积层过于复杂暴力,并且随着网络层次的提升对感受野越小的目标检测结果不够准确。
为了更好地优化和裁剪网络,该文使用了一种并行多分支多尺度空洞卷积模块替换了原始SSD网络的附加特征提取模块,其原理如图5 所示,先将特征网络的输出特征图像作为输入,然后通过三个并行卷积分支进行附加特征提取。并行卷积模块单元如图6 所示,每个分支都具有相同的卷积结构,并行的分支实现了卷积层的参数共享,但膨胀率不同。
图5 并行多分支多尺度网络模型
图6 并行多分支多尺度网络结构单元
每一分支的卷积核数值是一致的,只是膨胀率不同。具有膨胀率d的空洞卷积核过滤器值之间插入d-1 连续的零,不增加参数数量和计算。具体来说,空洞的3×3 卷积核可以与普通卷积核具有相同的接受场,内核大小为3+2(d-1)。假设总步幅为当前特征图是s,那么膨胀率d可以增加网络的接受域2(d-1)s。因此,如果我们用d膨胀率修改n个卷积层,那么模块接收速率可以增加2(d-1)sn。这种方式能用较少的参数,处理更大感受野的目标。
并行多分支多尺度网络在原始的神经网络模型上做了以下变化:一方面是采用空洞卷积核的概念,构造了不同感受野的并行多分枝通道,这样可以让大的感受野对大目标检测效果很好,小目标检测则对应小的感受野,减轻了SSD对小目标检测难的问题;另一方面,因为每个通道结构是相识的,所以并行网络模块中每一个通道的权重是共享的,这样减少了大量的计算量,使模型变得轻量化。
4 实验结果与分析
4.1 数据来源
本文在PASCAL VOC2007 和VOC2012 这两个公共数据集的合集上进行实验,数据集分为训练数据、验证和测试数据,它们均包括船、椅子、马和人等20 个目标类别。对于数据集中,不同类别的待检测目标,网络模型与参数设置是相同的。本文使用VOC 2007和VOC 2012训练测试数据集的16551张图像作为训练数据,使用VOC 2007 测试集的4952张图片进行验证。
4.2 实验环境与参数初始化
实验平台为英特尔Core(TM)i9-7900X CPU@ 3.30GHz 20 核处理,32GB 内存,Nvidia GeForce RTX 1080 显 卡。SL-SSD 网 络 在Ubuntu16.04 系 统下,基于深度学习框架TensorFlow 下实验运行。输入图片尺寸为224×224,batchsize 设置为32,初始学习率为0.001,权重更新方式为SGD。
4.3 模型评估指标
本实验针对VOC 数据集进行检测,具体的评价标准分别为单类精确率P、平均精度mAP 和召回率R,如式(3)、(4)和(5)所示。
上式中,TP表示被模型预测的真正类,FP表示模型将负例错误分类为正例,FN表示模型将正例错误分类为负类,N表示检测的类别数。
为了更好地评判模型运算的复杂度,本文使用FLOPs 进行评判。FLOPs 可理解为计算量,是用来衡量算法或者模型的复杂度,可以看成FLOPs在时间上的积分,区别类似速度和时间。其中MFLOPs表示1×106的FLOPs。对于标准卷积层和深度可分离卷积来说,FLOPs计算公式分别,如式(6)、(7)所示:
其中,HW是输出特征图的大小,Cin是输入通道数,K2是卷积核大小,bias为偏差,Cout是输出通道数。
4.4 模型损失分析
为了验证轻量级SL-SSD 的网络自身收敛情况,本文网络采用预测模型结构进行实验,图7 显示该卷积模型在训练和验证集收敛所呈现的结果,实验采用数据集使用PSCAL VOC07+12 的训练集和验证集数据集,其中train 为训练集,val 为验证集,横坐标为迭代次数。
图7 损失对比曲线图
从图中可以得知,SL-SSD 网络的loss 值在其过程中逐渐降低的变化,其变化趋势幅度由较大渐变为较为缓慢。该模型在训练策略迭代两万次之后,所达到趋于平稳状态下的网络模型状态结果,损失也将近达到0.13 左右。模型收敛效果较为理想,模型表现出了较为稳定的性质。
4.5 不同大小目标分析
表2 显示了不同大小目标召回率情况。在VOC2007 测试集总共有12032 个对象,其中567 个是小物件。当检测大型目标时,SL-SSD 网络略逊色于SSD 网络,但在召回率层面上仍有良好表现;当检测中型目标时,SL-SSD 网络比SSD 网络友好一点;当检测小型目标时,SL-SSD 网络比较优秀,召回率比SSD 网络高了0.05点,对小目标的检测更精确。
表2 不同大小目标的召回率
4.6 结果分析
为了更加直观地评价所提算法,图8 给出了PASCAL VOC07+12 数据集上的实验结果示例对比。图中第一行为原始的SSD网络结果图示例,第二行为SL-SSD网络的结果图示例。针对小目标的检测,轻量级SSD算法在一定程度上改善了小目标检测难问题,但是仍然没有检测出全部目标。针对精度的问题,SL-SSD 网络虽然精度略低于原始的SSD 网络,但也能在精度损失不大的情况下检测出目标。从以上两个角度来看,SL-SSD 网络的检测与识别性能也有不错的表现。
图8 实验结果对比图
4.7 与其他网络对比分析
为了更好地展现所使用的轻量级算法,我们与近几年的主流目标检测算法进行对比,实验数据引自对应的参考文献,并采用平均精度均值mAP 和计算力浮点运算数MFLOPs 作为算法精度和运算复杂度的客观评价指标。如表3 所示,表中前5 个传统目标检测算法平均检测精度比较高,但其模型的复杂化度达到上亿级别的;而表后5 个流行的轻量级网络,在计算力和平均识别精度中做了很好的平衡;该文所用的轻量级SL-SSD算法,在精度上相较于原始传统的SSD 算法下降了6.6%,但是模型复杂度压缩了230 多倍,和近年较为优秀的轻量级目标检测算法相比,精度上相差无几,但在模型复杂度计算力MFLOPs上表现更为优秀。
表3 不同网络在VOC07+12数据集上的定量比较
4.8 与轻量级网络对比分析
轻量级SL-SSD 网络在VOC07+12 数据集上与近些年轻量级网络对比,如表4 所示。在保证输入框一致都是224×224 的情况下,SL-SSD 网络相比其他轻量级网络在仅牺牲了0.1%的平均检测精度mAP 下,模型的计算复杂度都有明显的降低,大约下降了6MFLOPs。
表4 轻量级网络对比
5 结语
伴随着移动互联网的发展和5G 时代的到来,一再关注神经网络模型的深度和复杂已经不能满足企业的需求,高效、高性能的轻量级神经网络逐渐成为人工智能领域关注的热点。轻量级SL-SSD目标检测方法满足企业的需求。SL-SSD 网络将轻量级卷积神经网络ShuffleNet 替换了VGG-16 模块;接着并行使用小、中、大三种尺度的空洞卷积特征提取方式,对原始SSD网络的附加特征提取模块进行改进。改进后的网络平均检测精度有所下降,但计算复杂度减少了,对小目标检测精度提高了。因此,在下一步工作中,主要是在保证计算复杂度几乎不变的情况下,从网络结构和层次上提升网络对目标的平均检测精度。