基于SSD的行人头部检测方法

2020-04-24 03:07陈先桥
计算机工程与设计 2020年3期
关键词:人头类别行人

李 欢,陈先桥,施 辉,杨 英,龚 

(1.武汉理工大学 计算机科学与技术学院,湖北 武汉 430063;2.武汉理工大学 交通物联网技术湖北省重点实验室,湖北 武汉 430063;3.交通运输部 水运科学研究院 电控信通中心 通导室,北京 100088)

0 引 言

行人检测是计算机视觉中的一个重要研究方向,在人群密集遮挡严重场景检测效果差强人意,于是行人头部检测方法应运而生,监控视频中的人群计数被认为是头部检测最重要的应用之一。行人检测方法主要分为两大类[1]:一是基于背景建模方法,提取前景运动目标;二是基于统计学习的方法,利用大量样本建立分类器。

当前,学术界关于行人检测的方法有很多。Tian等[2]构造了身体的部分池,利用深度学习对身体的每个部分进行训练,使用互补的部分检测器推断行人全身得分,通过局部检测提升行人遮挡时的检测精度。文献[3]基于Faster R-CNN网络构建了满足实时性要求的人头检测网络。文献[4]使用两个边框来标记完整行人和行人的可见部分,训练行人检测和遮挡估计两个分支网络完成对严重遮挡情况下的行人检测。文献[5]利用ZF网络原型对行人头部建模,融合空间金字塔池化层来进行人头检测,该方法实时性不高。文献[6]融合了Fast RCNN和Faster R-CNN 模型来获取目标框,然后通过帧间融合来提高检测率。文献[7]通过头肩部梯度特征构成头肩部检测器来获取行人候选区,在候选区执行行人检测过程。目前行人检测算法存在定位偏差和背景干扰问题,最先进的行人检测算法与人工检测差10%[8]。

在实际应用中行人检测面临着诸多的挑战,人群密集相互遮挡、光照变化等因素都会使行人个体无法准确分割[9],从而降低了检测精度,SSD(single shot multibox detector)算法[10]被Liu等提出,在物体检测精度和速度上取得了较好的效果,但其对小目标的检测效果不佳,本文针对行人头部检测提出一种改进SSD的人头检测方法。

1 方 法

SSD使用的先验框都是基于现有常见物体检测数据集上提炼出来的,并不适用于特定的行人头部数据集,另外行人头部属于较小目标,因此本文对SSD先验框的设计进行了改进,以适应于特定的行人头部检测,同时对SSD网络结构进行了调整以适应小目标的检测。

1.1 SSD网络目标特征提取

SSD目标检测算法是多框预测one-stage方法,在精确率和速度上都比较好,SSD核心设计思想[10]:提取多尺度特征图进行检测,利用大尺度特征图检测小物体,小尺度特征图检测大物体;采用CNN直接进行检测;采用不同尺度和长宽比的先验框。

SSD300网络由两部分组成,在前一部分中用了VGG16前5层网络,并将pool5由2×2-S2变成3×3-S1,在后一部分中将VGG16的全连接层fc6和fc7转换成 3×3 卷积层Conv6和1×1卷积层Conv7,并新增一系列卷积层以获得更多的特征图,总共11层。图1为SSD300网络的卷积层结构。SSD300网络使用6层特征图用于检测和分类,分别是Conv4_3、Conv7、Conv8_2、Conv9_2、Conv10_2、Conv11_2卷积层。

图1 SSD300网络的卷积层

SSD300网络各卷积层的输入、输出、卷积核大小和数量见表1,每个卷积层后都有一个Relu激活函数层处理输出结果。

SSD300通过不同尺度的特征层检测图像中不同大小的目标,实现多尺度目标检测。一般来说,特征层越低,保留的图像细节越多,特征层越高,特征图越抽象,即在低层特征图检测小目标,在高层特征图检测大目标。本文中要对人头进行检测,人头相对来说属于小目标,文中只用到了SSD300网络的前8层,后面3层由于输出太小,图像过于抽象,图像中的其它特征可能将人头特征掩盖了,所以舍弃了后3层,Conv4_3、Conv7和Conv8_2用于人头的检测分类和定位。不同视角的行人头部示例如图2所示。

表1 SSD300卷积层

图2 不同视角的行人头部示例

1.2 基于统计的先验框设计

1.3 改进的SSD人头检测网络设计

随着卷积层数的加深,特征图的平移不变性增强,平移敏感性减弱,即高层特征图更加抽象,语义性强[11]。分类任务要求特征具有良好的平移不变性,定位任务要求特征具有良好的平移敏感性,由此看出分类和定位任务在现有的特征图上是有局限性的,因此,本文提出了一种类别预测和位置预测特征分离的SSD人头检测网络,类别预测使用上采样融合较高层级特征的特征图,位置预测使用下采样融合较低层级特征的特征图。通过在不同的特征图上进行类别和位置预测,网络可以自适应地学习不同任务对特征的要求,从而提高预测精度。

最近两年有一些人也对SSD的小尺度目标检测效果不佳做出了改进,FSSD(feature-fused SSD)使用Conv5_3层特征图来增强Conv4_3层的语义信息[12],在很少损失速度的同时加强对小目标的检测。DSSD(deconvolutional SSD)[13]使用ResNet代替VGGNet,网络后端增加多个反卷积层扩展低维度层的上下文信息,将原特征层与反卷积层结合做预测,DSSD的检测速度相比SSD慢了很多,以牺牲检测速度来提高精度。CSSD(context-aware SSD)[14]使用原SSD特征层与下采样扩张卷积层和上采样反卷积层相结合作为预测的特征层,对小物体检测在MS-COCO上相比于SSD提升了3.2%AP。SSD、FSSD、DSSD和CSSD的类别和位置预测都是在相同的特征图上,本文考虑到两个预测任务对特征要求的不同,针对人头检测提出了类别预测和位置预测特征分离的SSD人头检测网络,在既保证小尺度目标类别预测精度的同时又能够提升位置预测的准确性。

由于本文是对人头进行检测,属于较小目标检测,所以去掉原始SSD300网络上的后3层,使用Conv4_3、Conv7、Conv8_2层特征图来进行多尺度检测,并在原来网络结构上添加了类别和位置预测两个旁支网络,用来生成两个预测所需的特征图,在一定程度上实现了特征分离,分别在新的特征图上进行卷积得到类别预测和位置预测结果,综合两个预测结果,得到最终结果。改进后的SSD人头检测网络(SSD-Head)结构如图3所示。

图3 SSD人头检测网络结构

如图3所示,由高层特征图进行双线性插值上采样并标准化后与原始特征图标准化后拼接融合,对融合特征图使用一个1×1的卷积层进行降维作为特征重组,对降维后的特征图使用一个3×3的卷积层学习融合后的特征形成新的类别预测所需特征图。类别预测所需特征图为图3中Conv4_3_c、fc7_c和Conv8_2_c,Conv4_3_c由Conv4_3_conf进行降维后通过3×3的卷积得到,Conv4_3_conf由原始Conv4_3标准化后与Conv5_3双线性上采样并标准化后拼接组成。

常见的下采样(subsampled)操作包括池化(pooling)和空洞卷积(dilated convolution)两种。池化过程[15]可能会影响网络的准确度,丢失位置细节信息,空洞卷积在降低图像尺寸的同时增大感受野,从而获得更多全局信息,所以本文选用的下采样是空洞卷积,空洞因子为2,卷积核大小为3×3,步长为2。位置预测的特征图为图3中的Conv4_3_l、fc7_l和Conv8_2_l。Conv4_3_l、fc7_l、Conv8_2_l特征图分别由Conv4_3_loc、fc7_loc、Conv8_2_loc经过3×3的卷积得到。Conv4_3_loc由Conv3_3进行空洞卷积后标准化与Conv4_3标准化拼接组成。

2 训 练

本文的数据集包括从Caltech、CityPerson、TUD、Pascal VOC 2007/2012数据库和摄像机拍摄的监控视频中获取的图片,截取图片中不同视角的行人头颈部作为训练的正样本。共有14 769张样本图片,分为3个样本集,训练集包含10 769张图片,验证集包含2000张图片,测试集包含2000张图片。每张图片都要经过裁剪、缩放、归一化的预处理变成300×300的大小。训练环境为Ubuntu16.04,Caffe,CPU版本为Intel Core i7-8700K,GPU版本为NVDIA GEFORCE GTX-1080 Ti,内存为32G。

3 实验及结果

输入一张图片,经过多个卷积层提取特征,进行多尺度特征图检测输出结果,使用卷积特征可视化技术可以展示卷积网络的中间层特征图,图4展示了SSD-Head网络中Conv1_2层与Conv4_3层的部分可视化特征图,从图4可以看出,低层特征图维度高包含更多的细节和定位信息,高层特征图维度低包含丰富的语义信息。

图4 SSD-Head不同层级卷积特征可视化

FSSD、DSSD、CSSD和本文方法都是针对SSD的小目标检测问题进行改进,因此本文针对SSD及其改进方法FSSD、DSSD、CSSD与我们的SSD-Head人头检测进行了对比实验,SSD、FSSD、DSSD、CSSD与SSD-Head训练、验证和测试的样本集是相同的。SSD算法是针对行人整体进行检测,FSSD、DSSD、CSSD和SSD-Head只检测人头部分,SSD-Head人头检测网络在类别检测和位置检测特征分离的基础上,进行针对性的特征融合,类别检测特征图进行上采样特征融合,位置检测特征图进行下采样特征融合,以此来改善不同检测任务的特征图质量。SSD、FSSD、DSSD、CSSD与本文SSD-Head使用SSD原本的先验框设计,对相同的2000张测试集图片进行检测,检测的精度和速度见表2。

表2 各网络检测结果对比

表3 SSD-Head使用不同尺度先验框结果对比

从表2和表3可以看出,改进后针对人头进行检测的SSD网络在准确率上有所提升,相比于原本的SSD在准确率上提升了7.5%,相比于目前检测精度最高的DSSD提升了0.1%,但是DSSD的检测速度比较慢,而本文的方法检测速度还是比较高的,SSD-Head的运行速度相比于SSD有所降低,但是也满足实时性的要求。在人头的检测过程中仍存在少量虚假和漏检目标,多是由于形状与人头相似或行人遮挡过于严重难以辨识。图5为SSD与本文SSD-Head的检测效果对比。

图5 SSD与SSD-Head检测结果对比

4 结束语

为了解决行人遮挡检测问题,本文设计了预测特征分离的SSD人头检测网络(SSD-Head),类别预测使用双线性上采样融合后的特征图,位置预测的特征图使用空洞卷积进行下采样融合。同时,针对原始SSD先验框尺度不适用于人头目标的问题,采用K-means++方法对人头检测目标框聚类,得到适合人头检测数据的先验框比例,设计不同预测层对应的先验框尺度,来提升行人头部检测的准确率。改进后的网络模型在行人检测应用中能够满足实时性和准确性要求。

猜你喜欢
人头类别行人
毒舌出没,行人避让
山西省立法禁止野外用火成效显著 林草防火责任明确到山头地头人头
假人头防盗大法
路不为寻找者而设
壮字喃字同形字的三种类别及简要分析
朋友圈
我是行人
曝光闯红灯行人值得借鉴
西夏刻本中小装饰的类别及流变
多类别复合资源的空间匹配