基于改进SSD算法的行人检测方法
2020-11-02董永昌单玉刚
董永昌,单玉刚,袁 杰
(1.新疆大学 电气工程学院,新疆 乌鲁木齐 830047;2.湖北文理学院 教育学院,湖北 襄阳 441053)
0 引 言
随着深度学习在目标检测领域的表现日益突出[1]。先后出现了R-CNN系列[2-4]、YOLO系列[5-7]、SSD[8]等目标检测方法。相对来说,R-CNN方法在检测精度上更好,YOLO方法在检测速度上表现更优。在行人检测方面:文献[9]改进Faster R-CNN中候选框的选取方法,使得行人检测的精度有了一定的提高。文献[10]根据行人在图像中的几何特点,对YOLO网络结构进行优化,取得了不错的检测效果。
SSD(single shot MultiBox detector)算法是一种以VGG[11]为前置网络的目标检测算法。它会均匀地在图片上产生不同大小和长宽比的候选框,然后利用卷积层提取图像特征,最后是回归和分类。文献[12]对SSD的基础网络部分进行改进并在检测阶段对不同特征层添加缩放因子,提高了行人检测的准确性。文献[13]用MobileNetV2作为SSD模型的基础网络,有效减少了图像特征提取过程中花费的时间及运算量。DenseNet[14]是一种密集连接的卷积神经网络,比VGG其更易于训练,且精度更高。本文提出一种以DenseNet模型为前置网络的SSD算法。与SSD、YOLO、Faster R-CNN等模型进行对比,实验结果表明,改进的SSD模型具有更高的准确率。
1 相关模型
1.1 SSD检测原理
原始的SSD以VGG16或VGG19作为其前置网络,本文以前置网络为VGG16的SSD300模型为网络架构,其网络结构如图1所示。
图1 SSD网络结构
该模型要求输入图片大小是300×300,然后根据VGG16网络结构,将其前5层做为基础,将两个全连接层转换为两个卷积层,并在其后添加3个卷积层和一个平均池化层所组成。网络在Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Pool11层上输出一组不同宽高比和不同大小的默认框。
默认框的生成是以特征层上每个点为中心生成一系列同心框,每个特征层上默认框的尺寸由式(1)确定
(1)
式中:m指不同预测特征层尺寸的数量,SSD300中预测特征层尺寸的数量为6,同时Smin为0.2,Smax为0.9。
而更小的特征层意味着更大的感受野,更大的特征层意味着更小的感受野。因此不同特征层上相同尺寸的默认框在输入图像上的映射范围是不同的,在其默认框生成各自的置信度和位置信息之后,通过reshape来调整特征层为相同尺寸,之后用非极大值抑制和Softmax得检测结果。
1.2 DenseNet模型
DenseNet模型是一种用于图片分类的模型,与VGG、ResNet[15]和Inception[16,17]不同,它是一种前馈方式的密集型连接(dense connection)的网络,即
Xl=Hl([X0,X1,…,Xl-1])
(2)
其中,Xl表示第l层的输入,[]表示将X0,X1,…,Xl-1所有输出进行组合拼接,H表示批量正则化、ReLU激活函数以及Conv(3×3)卷积层的组合。这种连接方式加强了网络中各层之间的信息交流,有效提高了网络的训练效率,以DenseNet-121为例,其网络参数见表1。
表1 DenseNet-121网络结构
其中,Stride默认为2,用Dropout来随机丢弃一部分特征层来减少参数。由于在DenseNet中需要对不同特征层进行拼接,所以要求Dense_Block中的特征图尺寸保持相同的尺寸,在相邻两个Dense_Block之间设置过渡层(transition layers)进行下采样,过渡层由批量正则化、(1×1)的卷积层和 (2×2)的平均池化层组成。在Dense_Block中,输入先经过1×1卷积核来减少特征图数量,然后作为3×3卷积核的输入进行运算,大大减少了计算量,过渡层通过参数缩减将输入到该层的特征图数量减小到原来的一半。
2 行人检测算法
2.1 改进SSD网络结构
本文用DenseNet-121作为SSD的前置网络。首层是3×3的卷积层,然后经过4个分别含有6层、12层、24层、16层的Dense_Block,每两个Dense_Block之间是非线性变换BN+ReLU+Conv(3×3)的组合,DenseNet之后是4层包含1×1和3×3卷积层。最后,选取后两层Dense_Block和4个卷积层进行目标框的选取。新构建的网络在选取目标框的时候能够更好利用不同特征层的信息。其网络结构模型如图2所示。
网络中Growth_k为 24,Dropout_rate为0.5。优化函数使用Adam(adaptive moment estimation),它综合了一阶矩估计和二阶矩估计来计算梯度下降的更新步长。相对于其它优化函数其具有效率高,实现方便,内存使用率低等优点。
图2 本文网络结构模型
SSD网络结构在一定程度上利用了浅层网络的目标特征,降低了因网络太深而造成的模型参数数量暴增和梯度消失的风险。但是,更浅的特征层意味着更弱的表征能力,所以可以通过提高浅层网络的表征能力来提高网络的检测性能。本文以DenseNet作为SSD的基础网络,与传统的SSD模型相比,该模型不仅有效缓解了梯度消失问题,使得网络更加容易训练,又大幅度减少了网络的参数量,而且加强了特征向更深层次传播。
2.2 损失函数选择
损失函数由两部分组成:置信度损失和位置损失,如式(3)~式(5)所示
(3)
其中
(4)
(5)
其中,N为匹配成功的默认边框数目,Lconf(x,c)代表置信度损失,Lloc(x,l,g)代表位置损失。用Smooth L1函数的好处是当预测框和真实框差距过大时避免梯度爆炸,当预测框和真实框差距过小时梯度不至于消失。
2.3 行人检测算法流程
整个算法流程分为训练模块和测试模块。在训练模块,为了使训练模型具有更强的泛化能力,防止训练模型过拟合,将原始数据集进行扩充增强。之后将数据标注成VOC2007数据格式用于训练、测试和验证,最后将批量输入图片送入设计网络进行训练并得到最终训练模型。在测试模块,网络会首先在输入图片中生成默认框,并判断默认框的置信度,然后根据训练模型对目标框进行位置和置信度的调整,最后在产生的N个检测框中利用非极大值抑制原理产生最终的检测结果。其算法流程如图3所示。
图3 算法流程
3 实验与分析
3.1 实验平台
仿真的实验环境为:Win10的操作系统,英特尔i5-9400F处理器和NVIDIA GeForce GTX 1070显卡。实验采用Python编程语言在Tensorflow深度学习框架上进行模型的训练和测试。
3.2 数据集构建和模型训练
本文使用INRIA 数据集来进行模型的训练,它包括训练样本和测试样本共902张(包含3542个行人)。图片中人体有站立、坐、蹲、跳起等姿势,目标人物包含两个性别各年龄阶段,且目标相对于整幅图片尺寸大小不定。背景包括室内、野外、运动场、街道、海边等不同地方,图片高度大于100个像素。为了增加样本多样性,提高样本质量,有效缓解训练过程中的过拟合现象,本文在此基础上通过水平翻转、裁剪等样本增强方法将数据集扩展为3000张,其中2400张为训练样本,600张为测试样本。每个每批次处理16张图片,迭代60 000次。训练过程中设置学习率从0.01以指数衰减形式进行衰减,衰减因子为0.94,每12个Epoch衰减一次。学习率变化曲线如图4所示。
图4 学习率变化曲线
模型改进前后训练过程的损失值和准确度曲线如图5所示。
图5 模型结果对比
由图5可见,本文所提SSD模型比传统SSD模型的收敛速度更快,且改进的SSD模型比传统的SSD模型更低的损失和更高的准确率。迭代60 000此后,原模型的损失和准确率分别为5.6和0.86;改进后模型的损失和准确率分别为3.7和0.94。
3.3 评价指标
选取准确率(Precision,P)和召回率(Recall,R)作为检验网络优越性的指标,其定义为
(6)
(7)
式中:TP表示正确检测到行人的数量,FP表示误把非行人目标检测为行人目标的数量,FN表示误把行人检测为背景的数量。
3.4 结果分析
在INRIA数据库中随机选出300张图片,其中含有1658个行人的图片集进行测试。将实验结果和原始SSD算法、Faster-RCNN以及YOLO_v3进行比较,在检测精度和目标被遮挡方面分析改进后网络的检测效果。对比结果见表2。
表2 不同模型检测结果对比
从检测结果的指标来看:与 Faster RCNN、YOLO_v3等模型相比,改进后的模型比原始模型具有更高的检测精度和召回率,本文模型在准确率上分别提高10.1%和5.3%,在召回率上分别提高14.95%和6.11%。故而相对于其它3种模型,本文模型具有更高的检测精度,具有良好的应用前景。具体检测结果如图6所示。
图6是改进后的SSD网络与原始网络、Faster RCNN、YOLO_v3的检测效果对比,从检测结果来看,Faster RCNN检测精度较高,但是对于图6(a)第3幅图中的目标人物遮挡显现的检测效果并不好;图6(b)中原始SSD在对小目标的检测率上有所提高,但是对小目标的误检率也随之上升,而且对于遮挡现象也同样没有很好的检测效果; YOLO_v3的检测结果要明显优于前两种模型,其在目标被遮挡和检测精度上有了较大的提高,但是如图6(c)第一幅图所示,该模型对小目标的检测率却不太好;图6(d)中经本文改进后的SSD模型在相同的测试图片中,其目标人物的检测置信度都较高,且对于第3幅图中被遮挡的目标人物的置信度为0.916,而且对于边缘小目标的检测率也有较大的提高。相对于其它模型,本模型在保证检测精度的基础上对被遮挡目标和边缘小目标的检测率有了较大的改善,检测结果更好,具有更强的鲁棒性。
4 结束语
本文将DenseNet作为SSD模型的前置网络,使得网络的深度得到增加,在生成目标检测框的时候,不仅利用了更深特征层信息,也使得浅层网络信息得到充分利用,其结构特点也提升了梯度的反向传播,使得网络更容易训练。对由于阴影、遮挡等造成的行人检测效果不理想等问题,本模型对其性能具有较好的提升,对不同像素、不同姿态的行人检测具有较好的鲁棒性。