交通场景中改进SSD算法的小尺度行人检测研究

2022-01-25 18:55汪慧兰王桂丽
计算机工程与应用 2022年2期
关键词:行人损失卷积

汪慧兰,戴 舒,刘 丹,王桂丽

安徽师范大学 物理与电子信息学院,安徽 芜湖 241000

行人检测技术能有效减少交通事故的发生,提高驾驶的安全性,是智能辅助驾驶系统中的关键技术,其中小尺度行人检测问题一直以来也是目标检测领域的研究热点和难点之一[1-2]。随着深度学习的迅猛发展,国内外研究学者先后提出了很多优秀的目标检测算法[3-4]。其中基于两阶段的目标检测方法中典型的R-CNN系列(R-CNN[5]、DRI-RCNN[6]、Fast R-CNN[7]以及Faster RCNN[8]等)在行人检测方面能取得非常好的精度,但由于其自身会产生很多的冗余边界框,导致其检测时间比较久,很难满足检测系统实时性的要求。区别于R-CNN系列为代表的两步检测算法,YOLO是典型的单步检测算法之一,舍去了候选框提取分支(Proposal阶段),通过将输入图像划分网格,并分别在每个网格设置多个默认候选框用于目标的置信度分类和边界框坐标的回归[9]。简化了网络结构,大大提高了网络的运算速度,在保障目标检测精度的前提下能满足实际应用场景下实时性检测需要。但是该算法对于小目标的检测仍然存在漏检和误检的情况。

基于此,2016年底,Liu等提出了SSD算法——基于回归的检测过程中结合区域的思想[10],采用不同尺度和长宽比的默认框,使得检测效果较定制化边界框的YOLO有比较好的提升。因此,SSD算法在提高MAP的同时兼顾速度,成为了基于深度学习的目标检测领域发展的一个方向和可能的研究趋势。为了进一步提高对小尺度行人目标的检测,研究学者们以SSD为框架相继提出了很多改进的算法,如2017年,Fu等提出的DSSD模型[11],Li等提出的FSSD模型[12];Jeong等提出的RSSD模型[13]等等。分析这些模型可知,它们主要是通过改进基础网络的架构来提高卷积神经网络的特征提取能力,或者是将高低层特征进行有效的融合等方法来提高目标检测算法的检测能力,所以往往在提高目标检测精度的时候牺牲了网络的检测速度,仍然无法满足实时场景下的检测要求。

综上所述,针对道路交通场景中行人目标存在姿态多变、行人所处的背景环境复杂以及行人目标较小等情况,同时考虑精度和实时性检测的需要,本文在保留SSD基础网络架构VGG16的基础上,一方面通过引入新的卷积结构和检测模块来增强网络的特征提取能力;另一方面采用Focal Loss函数[14]代替标准交叉熵损失函数,在保证检测速度的同时,提高算法对道路交通中小尺度行人检测的能力。

1 SSD算法的总体网络结构

根据输入的检测图像大小不同,SSD主要有SSD300和SSD500两种网络结构。如图1是SSD300的总体网络架构图[9]。

图1 SSD300的总体网络架构图Fig.1 Network architecture of SSD300

由图1可知SSD300行人检测过程的基本步骤:将大小为300×300×3图像输入主干网络,可从预训练好的基础网络中获得大小不同的特征图,同时将大小分别为38×38、19×19、10×10、5×5、3×3、1×1的Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2这6个卷积层的特征图输出。由这些特征图的每个像素点分别构造出6个不同长宽比例的默认候选框,然后分别进行检测和分类,生成多个初步符合条件的默认候选框,最后利用非极大值抑制方法筛选出符合要求的候选框,生成最终的检测框集合,即行人检测结果[15]。

较传统的检测算法使用顶层特征图的方法,SSD使用了多尺度特征图预测。如图2(a)所示的多尺度行人目标,其8×8大小的特征图如图2(b)所示。浅层网络输出的特征图较大,包含的像素点较多,每个像素点设置生成不同长宽比例的默认候选框,候选框尺寸较小,适合用来识别小目标(图中蓝色方框),对图像中尺度较大的行人,占据图像的比例要多,较小的默认候选框面对较大的目标,尺寸相差较大,不能有效地检测到。随着网络的加深,特征图通过下采样操作,深层卷积输出的特征图尺度较小,如图2(c)所示为4×4大小的特征图。每个像素点生成的默认候选框尺寸较大,感受野变大,可以比较准确地检测到尺度较大的行人目标。基于上述原因,网络输出多尺度的特征图可以有效适应交通场景中存在的不同大小的行人目标,从而提高算法检测的准确性。

图2 多尺度行人目标特征示意图Fig.2 Multi-scale pedestrian target feature map

2 改进SSD网络模型的搭建

由以上分析可知,SSD网络通过不同的卷积层输出多尺度的特征图对不同大小的目标进行置信度分类和边界框的回归。但卷积核对目标提取的特征不够充分,特征图包含如边缘或色块等较多低级特征,目标的语义信息不够丰富,分类的信息量较少,导致对交通场景中小尺度的行人目标检测效果还是不够理想。基于此,针对道路交通中小尺度行人目标,本文在传统SSD基础网络架构VGG16的基础上结合Inception模块中稀疏连接,通过优化主干网络的卷积结构,将检测模块采用残差块结构,并引入Focal Loss函数作为分类损失。搭建的改进SSD网络模型如图3所示。

图3 改进后的SSD网络模型Fig.3 Improved SSD network model

由图3可知,SSD网络模型具体的改进如下:

(1)将卷积层(Conv4-3)和卷积层(Conv7)采用优化的卷积模块,其他输出卷积层保留原有的结构。

(2)将负责预测的3×3的卷积核采用残差模块的网络结构,用RB(res block)指代。

(3)引入Focal Loss函数作为分类损失。

2.1 优化的卷积模块

由于交通场景图像中行人目标所占据的区域比例通常不同,用一种尺寸的卷积核进行卷积会造成对小目标行人有效特征的丢失。所以根据行人目标位置信息的差异,借鉴Inception网络模型中的稀疏连接[16]和卷积分解思想[17],在同一卷积层上并联不同尺寸的卷积核,得到改进的卷积模块结构图如图4所示。

图4 改进的卷积模块结构图Fig.4 Improved convolution module

由图4可知,如果输入特征图为19×19×512,可分成4个通道:(1)128个1×1的卷积核,输出19×19×128;(2)128个1×1的卷积核,作为3×3卷积核之前的降维,变成19×19×128,再进行256个3×3的卷积(padding为1),输出19×19×256;(3)24个1×1的卷积核,作为5×5卷积核之前的降维,变成19×19×24,再进行64个5×5的卷积(padding为2),输出19×19×64;(4)pool层,使用3×3的核(padding为1),然后进行64个1×1的卷积,输出19×19×64;对这四部分输出结果并联,即128+256+64+64=512。改进的卷积模块结最后依然是512层,但是参数个数明显减少了,从19×19×512=184 832变成了1×1×128+(1×1×128+3×3×256)+(1×1×24+5×5×64)+(3×3×512+1×1×64)=8 856,减小了几个数量级。

因此卷积模块结构中有4个通道,由1×1、3×3、5×5这3种尺度的卷积核构成。卷积后得到不同大小的特征图。在不同的特征图上用0像素进行填补(padding),就可以得到相同大小的特征图,然后进行特征融合(concat)。由于5×5的卷积核所需要的计算量很大,所以在网络结构中加入了1×1的卷积核进行降维,这样不仅降低了维度,减少了计算瓶颈,同时也增加了网络层数,提高了网络的表达能力。

在一定程度上,网络越深表达能力越强,性能越好。但随着网络深度的增加,梯度消散和梯度爆炸的问题严重影响网络的训练。所以,为了加快网络的训练速度,将卷积模块融合残差连接的思想,增加一条输入到输出的映射支路,从而进一步优化网络结构[17]。

如图5所示为本文所采用的优化卷积模块结构图。映射支路使用一个1×1的卷积核作为卷积层调整特征图的维度,以便于更好地和主支路叠加融合。为了进一步优化网络结构,降低网络的计算量,将大尺寸的卷积核分解为对称的小的卷积核,将5×5的卷积核替换成2个3×3的卷积核,降低了参数数量,减小了计算量。由结构图可知,优化后的卷积模块不仅增加了网络的宽度,也提高了网络对不同尺度目标的适应性,能更有效地提取到小尺度行人目标的特征信息。

图5 优化后的卷积模块结构图Fig.5 Optimized convolution module

2.2 改进的特征图检测模块

卷积神经网络中不同卷积层输出的特征图具有的特征梯度幅值大小不同,相比较于浅层输出的特征图,深层特征图包含较多的语义抽象信息,特征梯度幅值要小[18]。为避免浅层特征图在进行预测候选框时产生较大的梯度幅值,影响网络的训练的稳定性,采用残差模块来代替3×3的卷积核,一方面可避免预测时产生较大的梯度幅值对网络的训练产生影响,另一方面可增加检测模块的网络深度,增强网络的特征表达能力,提高检测的精度。残差模块中使用了1×1卷积模块,能够对通道数起到升维或者降维的作用,从而使3×3卷积以相对较低维度的输入进行卷积运算,提高计算效率,改进的检测模块结构图如图6所示。

图6 改进的检测模块结构图Fig.6 Improved detection module

2.3 Focal Loss函数的引入

SSD算法在对6个不同尺度大小的特征图生成的默认候选框进行分类和回归时,从很多个大小、位置以及宽高比不同的默认框中,根据IOU重叠率生成正负样本。根据默认框的生成原则可知,SSD的密集采样可产生104~105个候选样本,其中绝大多数为容易区分的负样本,通常负样本数量远超正样本的数量。正负样本数的不平衡将导致损失函数在训练时难以收敛,而且大量的负样本,在训练的过程中会主导损失函数和梯度的变化,影响模型的优化,甚至会造成网络的性能严重退化。文献[14]提出一种Focal Loss损失函数,如式(1)所示:

其中,pt为类别t的预测概率,(1-pt)γ是调制因子,γ为调制参数。若一个样本被分错,则pt会很小,则调制因子(1-pt)接近1,损失不被影响;当pt→1,因子(1-pt)接近0,则分得比较好的样本权值就被调低了。

SSD网络模型采用多任务损失函数,总体目标损失函数是定位误差损失(locatization loss,loc)和置信度误差损失(confidence loss,conf)的加权和。其中的分类置信度损失使用的是交叉熵损失函数(Softmax Loss),如式(2)所示:

从式(2)中可以看出,置信度的误差包含正样本的误差和负样本的误差两个部分。为了平滑地调整不同样本的权重,本文引入Focal Loss函数代替标准交叉熵得到新的置信度损失函数,如式(3)所示:

其中,pi为第i个样本被预测为正负样本的概率,γ为可调制因子。当γ=0的时候,Focal Loss就是传统的交叉熵损失,当γ增加的时候,调制系数也会增加,参数γ能平滑地调节易分样本调低权值的比例。

3 实验结果及分析

基于构建的如图3所示的改进SSD网络模型,实验选择加州理工大学提供的Caltech Pedestrian Benchmark数据集[19],检测对象是交通场景中不同尺度大小的行人目标,硬件显卡为NVIDIA GeForce GTX 1080 GPU,系统的内存为64 GB,CUDA的版本为9.0。

3.1 损失变化曲线图比较及分析

在训练的过程中,利用tensorboard可视化工具动态监测网络运行过程中损失值的变化情况。改进前和改进后的SSD算法损失变化曲线图如图7。图中横坐标表示网络的迭代次数。纵坐标表示的是整个网络结构在训练过程中的损失函数的变化情况,最后期望趋近于0。

图7 损失变化曲线比较图Fig.7 Comparison of loss change curves

由改进前SSD算法损失变化曲线图7(a)可知,红色曲线为损失曲线,在前几百次的迭代中损失函数值较大,之后骤然下降到15附近,当训练迭代到30 000次时,学习率衰减百分之十,损失值缓慢下降,到达90 000次迭代时,学习率又会在前一个学习率的基础上衰减百分之十,学习速率变慢,损失函数值小幅度减小。100 000次以后,损失函数的值基本不再减小,趋于稳定值12左右。观察改进后的SSD网络模型损失变化曲线图7(b)可知,在接近几百次的迭代后,损失从一开始25.8下降到10附近,之后损失值缓慢下降趋近于数值8,并且在8附近轻微震荡,到达150 000次迭代的时候基本趋于稳定。

基于以上将改进前后的SSD目标检测算法在不同的迭代次数时损失变化曲线进行客观分析可知,由于Focal Loss损失函数可通过调制因子调整样本的权重,对于预测概率高的简单易分样本,通过将调制因子(1-pi)γ的大小设置为合适的数值,本文通过实验验证取γ=2。使其在整个损失中所占的权重大大减少,相反对于预测概率较低的难分样本,增加其在整个损失中所占的比重,使得反向传播的梯度也变得越大。这样损失函数能够更加关注于包含更多有用信息的困难样本,解决训练过程中正负样本不平衡的问题,使得改进后的网络在训练过程中,损失下降更加迅速,网络收敛较快,且稳定后的损失值更小。从而验证了改进的SSD行人检测方法训练过程更加稳定、更有效、收敛更快。

3.2 行人检测结果分析与比较

为进一步直观评估改进行人目标检测的性能,将改进的SSD算法分别与当前较为流行的YOLOv3、YOLOv4、SSD算法进行比较。将测试集分别输入到训练好的四种网络模型中,为了保证数据的比较性,模型均以VGG16作为基础网络,且按照迭代训练12万次时或满足收敛条件时训练停止,保存模型的最终权值,得到四种行人目标检测算法对测试集中对行人样本的检测结果,检测部分结果分别如图8~图11所示。

图8 YOLOv3行人目标检测结果Fig.8 Pedestrian detection results of YOLOv3

图9 SSD300算法行人目标检测结果Fig.9 Pedestrian detection results of SSD300

图11 改进的SSD算法行人目标检测结果Fig.11 Pedestrian detection results of improved SSD

观察以上行人检测结果图可知,总的来说,当道路交通场景中行人目标存在大量重叠、光线较暗和目标行人像素较模糊、行人目标尺度过小以及相似背景干扰等复杂多变的情况,以上四种检测算法都能够有效地检测到交通场景中的目标行人。但具体地分析,当图像中的行人目标较小、大量重叠时,或者光线较暗、行人目标像素较模糊时,从图8~图10检测结果可知YOLOv3和SSD算法的检测结果相当,但比YOLOv4效果要差,但三种模型对于小目标都出现较严重漏检和误检现象。

图10 YOLOv4行人目标检测结果Fig.10 Pedestrian detection results of YOLOv4

从图11可知,改进后的SSD算法对小目标和重叠目标检测精确度更高,原因在于将传统SSD网络中卷积层(Conv4-3和Conv7)采用优化的卷积模块,将负责预测的3×3的卷积核采用残差模块的网络结构,使网络模型的泛化能力更好,抗干扰能力更强,从而可以有效应对在实际场景下的运动模糊和光线较差等不良因素。即使在复杂的道路交通背景下,特别针对小尺度目标行人的检测效果可知,基于本文改进的SSD目标检测模型,仍能顺利地检测出测试集中存在的行人目标,并且检测到的目标个数更为准确,检测框的位置更为精准,与真实目标边框的重叠率更高,证实了本文提出的改进算法在真实目标场景下,对小尺度目标行人具有更好的鲁棒性,从准确率优于其他几种检测算法。

3.3 检测性能对比分析

基于Caltech行人数据集对2 000张行人样本测试识别结果的准确率、召回率、平均准确度及速度进行比较。设检测结果取真阳性(TP)、真阴性(TN)、假阳性(FP)、假阴性(FN)四种结果中的一种。则准确率AP表示正确预测的样本占所有样本的比重:

召回率R表示所有正样本中被正确预测的比重:

平均准确率MAP表示对行人检测类别的AP的平均。

分析表1数据可知,YOLOv4相对于YOLOv3在准确率上提升了近10个百分点,然而速度并几乎没有下降。SSD300在速度上比YOLO系列慢,但检测准确率提高。YOLO系列和SSD300在准确率和速度上各有优势,但两者不能兼顾。本文改进的SSD检测算法相比较于YOLOv4和SSD300行人检测算法,可在速度上与SSD300相当的情况下,准确率进一步分别提升了2.1个百分点和2.8个百分点,召回率分别提升了6.7个百分点和6.2个百分点,平均准确率分别提升了4.3个百分点和5.5个百分点,说明卷积层结合稀疏连接来优化卷积结构对图像特征的提取能取较好的效果,检测精度得到了明显提高。从检测速度上分析,本文提出的基于改进的SSD算法也能达到了58 frame/s,能满足实时性要求,这得益于利用残差结构减少了卷积结构的参数和Focal Loss函数的引入,因此在提高算法检测精度的同时可以满足道路交通场景下小尺度行人目标的实时检测需要。

表1 四种网络模型的性能指标对比Table 1 Performance index comparison of four network models

4 结束语

为满足交通场景中行人目标检测算法对于检测实时性和精确度的要求,本文在传统的SSD网络模型的基础上提出了一些改进,首先在主干网络的Conv4-3和Conv7两个卷积层结合Inception模块中的稀疏连接,提高卷积结构对图像的特征提取能力,增加特征图中小目标的语义信息;其次检测模块采用残差结构代替传统的3×3大小的卷积核,对输出的特征图进行分类和位置的回归,来进一步提高对小的行人目标的检测精度;最后采用Focal Loss函数来代替softmax标准交叉熵损失函数,解决训练过程中的正负样本不平衡的问题,提高网络的收敛速度。但行人检测技术所涉及的研究课题具有一定的广度和深度,本文算法所做的研究工作仍有待于进一步地完善,还有一些问题值得深入学习和探究。

(1)本文基于以VGG16为主干网络的传统的SSD网络模型为基础,做出相应的改进,旨在提升算法的检测性能,同时与其他优秀的算法相比较,在公共数据集上通过大量实验验证了本文改进算法的合理性和有效性。但是算法的检测速度还有很大的提升空间,可以在网络结构的优化方面进一步做出努力。考虑到网络模型的参数量巨大,可通过对网络进行轻量化,缩小模型,提高网络的运行速度,以取得更好的精度与效率。

(2)一个性能优越的深度神经网络模型,离不开丰富的训练样本图像,所以,制作数据集时不仅要考虑到训练样本集的质量是否符合要求,提高样本的数量也是至关重要的。在不改变图像类别的情况下,增加数据量,能提高模型的泛化能力。

猜你喜欢
行人损失卷积
基于3D-Winograd的快速卷积算法设计及FPGA实现
胖胖损失了多少元
毒舌出没,行人避让
卷积神经网络的分析与设计
从滤波器理解卷积
路不为寻找者而设
玉米抽穗前倒伏怎么办?怎么减少损失?
基于傅里叶域卷积表示的目标跟踪算法
我是行人
曝光闯红灯行人值得借鉴