李俊杰,刘成林,朱 明
(中国科学技术大学 信息科学技术学院,合肥 230027)
随着社会经济水平和人们安全意识的提高,视频监控的使用已经变得越来越普及,如今在商场、校园、街道等公共区域,我们能够很轻易的发现很多监控探头.与此同时,近年来人们对社会公共安全的关注度越来越高,每当发生公共场所伤害事件都会在社会上引起广泛讨论.在这种情况下,以监控视频为载体的异常行人检测技术就成为了一个热门且重要的课题.异常行人检测技术是指通过图像处理、机器学习等方法在视频中检测是否有异常行人的存在并给出其位置,其中异常行人是指与普通行人在外观上有明显异常性区别的人,例如低头躲避摄像头或用帽子口罩等物品大面积遮挡住面部,如图1所示.该技术能够让管理者更容易的注意到监控视频中的异常行人,更好的预防和应对各种突发情况,同时节省了人力成本,减轻了管理者的工作负担.
图1 监控场景中的异常行人示例
考虑到异常行人的异常特征大都集中在头面部,本文针对头面部区域进行讨论,提出了一个异常行人快速检测方法,首先检测监控视频中的头面部区域,然后使用多任务卷积神经网络提取头面部区域的特征,最后用单类支持向量机进行异常行人的判别.检测系统整体架构如图2所示.
图2 异常行人检测系统架构
本文提出的异常行人检测方法可分为以下两步:(1)确定行人头面部区域位置,(2)判断每个位置对应的行人是否为异常行人.
行人头面部区域检测的方法有两种: (1)通过人脸检测得到人脸位置,进一步扩充得到头面部区域,(2)直接进行头面部区域检测.
人脸检测方法很多,最经典的是Viola和Jones提出的基于Haar-like特征和级联AdaBoost分类器的方法[1],但在实际场景中由于表情、遮挡、光照等因素的影响,很多传统检测方法效果并不理想,近年来针对非约束人脸提出了很多新的方法,如基于NPD特征的方法[2]以及基于深度学习的方法[3,4],这些方法都取得了很好的效果.与人脸检测相比,头面部区域检测的研究较少,现有的一些方法如基于FDF特征[5]以及基于HOG特征[6]的方法,在实际场景中效果也往往并不十分理想.
综合考虑,本文选择了适用范围广、准确率高且检测速度快的NPD特征方法进行头面部区域的检测.通过NPD特征方法获得人脸位置,进而得到头面部区域位置.
异常行人判别的研究主要有三个难点: (1) 异常行人样本非常稀少; (2) 可能出现的异常情况无法穷举;(3) 应用于实际场景中需要保证算法的实时性.
目前对头面部区域异常情况的讨论主要集中在遮挡问题上,提出了很多面部遮挡检测方法,例如用肤色比例判断遮挡[7,8],或通过检测眼睛、嘴巴来间接判断遮挡情况[9–11].但是基于肤色比例的方法受光照等环境因素的影响较大,而对眼睛、嘴巴的检测对图像的分辨率要求又很高,此外实际场景中的异常情况也无法穷举,因此这些针对性的方法用于实际场景中的异常行人检测往往无法取得令人满意的效果.
考虑到异常行人样本较少且无法列举出所有可能情况,传统的分类模型无法应用于该问题,本文针对性的使用了图像特征与单分类算法相结合的方法进行异常行人的判别.
常见的图像特征,如LBP[7],Haar-like[1],HOG[12]都经常用于行人相关的研究,此外近年来随着深度学习方法的兴起,用卷积神经网络提取图像特征也成为了一种有效手段[13].
单分类算法是指只用一类样本训练分类器,进而该分类器能够判断输入是否属于该类.本文中使用正常行人的头面部样本训练单分类器,进而实现对异常行人的判别.常见的单分类算法有单类支持向量机[14]、FAST-MCD算法[15]和孤立森林算法[16].
本文设计了一个多任务卷积神经网络用于行人头面部区域的特征提取,该网络初级模型如图3所示.
图3 多任务卷积神经网络初级模型(输入以120×100为例)
该网络包括数据输入部分、三个卷积层模块、一个全连接层和数据输出部分.其中全连接层即作为输入图像的特征向量表示,用于后续进一步操作.
上述卷积层模块是由一个卷积层、一个池化层和一个ReLU激活函数层组成,其中前两个使用了最大值池化,而第三个使用了空间金字塔池化(SPP)[17],通过使用空间金字塔池化层,网络输入不再要求大小相同,不需对输入图片进行剪切或非等比缩放,可以尽可能的保留图像特征,提高网络的特征提取能力.
与普通网络相比,多任务网络在全连接层之后连接了多个不同的分类任务,这些分类任务共同使用卷积网络输出的特征向量,在训练过程中联合更新网络参数.因此多任务网络提取出的特征向量对所有输出属性都有很好的代表性,具体到头面部特征提取问题,将是否戴眼镜、是否戴帽子等多个任务作为网络输出,可以让该网络提取出的特征向量对整个头面部各部分细节都能进行很好的描述.此外,在网络训练过程中,每一个头面部样本都对应多个标签,如戴眼镜、不戴帽子等,这种多标签样本也更适合多任务网络.因此,多任务卷积神经网络是最合适有效的头面部特征提取模型.
为了保证算法的实时性,本文通过拆分卷积核的方法减少卷积网络的参数和计算次数,加快特征提取速度.
本文参考GoogLeNet[18]和MobileNets[19]对卷积核进行了多个维度上的拆分,示意图如图4所示.
图4中M为输入特征图通道数,N为输出特征图通道数,拆分前共有N个维度为k×k×M的卷积核,将其拆分成两个深度卷积和一个点卷积.深度卷积将卷积核分别应用到单个输入通道,点卷积对不同通道进行组合,显然最终输出维度不会发生改变.
图4 卷积核拆分
假定特征图尺寸在卷积前后不变,始终为n×n,因为每次卷积操作特征图尺寸减小量为k–1,远远小于特征图大小,且在实际工程中可以通过像素填充方法实现,故该假定不影响对计算代价的讨论.
卷积核拆分后各层的计算代价依次为n×n×M×1×k×1、n×n×M×k×1×1 和n×n×N×1×1×M,与拆分前相比得:
相比结果小于1,拆分操作成功降低了计算代价.以初级网络模型中k为3,N依次为16、32和64为例,三个卷积层的计算代价分别降低为拆分前的15.3%、13.2%和12.2%.最终得到网络模型如图5所示.
该网络的训练过程分为两步:
图5 改进后的多任务卷积神经网络模型
1) 使用公开人脸属性数据集CelebA[20]进行网络预训练,选用了其中十二个属性作为多任务网络模型的输出属性,分别为眼袋、光头、刘海、黑发、金发、眼镜、性别、年龄段、嘴巴张开、胡子、帽子和领带.部分属性及对应样本如图6所示.
2) 在预训练得到的参数基础上,用实际监控视频中的样本进行微调,多任务网络的输出部分改为如下四个分类任务: 是否戴眼镜、是否戴帽子、是否露出嘴巴和人脸方位(正面、侧面和背面),如图7所示.
图6 CelebA数据集部分样本示例
图7 实际监控视频部分样本示例
单分类算法中应用最广泛的是单类支持向量机.单类支持向量机是基于支持向量机提出的算法,与支持向量机相同,核函数[21]的选择是影响其性能的关键.
目前常用的核函数有高斯核函数、Sigmoid核函数、多项式核函数、线性核函数和三角核函数[22]等.本文实验部分将对不同单分类算法以及不同核函数的性能进行详细的比较.
本文系统实现部分使用了深度学习框架Caffe[23]和基于Python的机器学习工具sklearn[24].
首先,我们在CelebA人脸属性数据集上进行网络预训练,该数据集包含202 599张人脸图片,并为每张图片提供了多达40种属性的标注.在进行了一定程度的等比例缩放后,随机选取2万张作为测试集,其他作为训练集.之后,我们在实际监控场景的头面部样本集上进行参数微调,共使用了1万张图片,人工对分类属性进行标注后,随机选取其中2千张作为测试集,其他作为训练集.
我们分别训练了卷积核拆分前后的网络模型,计算了所有分类任务的平均准确率和处理100张图片所需的平均耗时,结果如表1所示.
表1 卷积核拆分前后效果对比
实验结果表明,本文设计的网络结构在多分类问题上有较高的准确率,提出的卷积核拆分方法也明显的降低了计算代价,减少了网络分类耗时.此外我们发现随着进行微调时分类任务数的减少,耗时也会相应减少,因此用该网络提取特征时只计算到全连接层会进一步降低耗时.
我们在实际监控场景的样本集上评估了不同图像特征与不同单分类器的组合效果.我们使用了1万张正常行人头面部样本进行训练,各2千张正常样本和异常样本进行测试.准确率对比如表2所示.
表2 不同组合准确率对比(%)
可以看出,本文提出的多任务卷积神经网络特征提取模型与单类支持向量机的组合准确率明显高于其他方法.
在此基础上,我们评估了不同核函数的分类速度(Frames Per Second,FPS)和召回率,这两者很大程度上影响着系统的实用性.其中,召回率是指单分类器正确判别为异常行人的样本在总异常行人样本中的比例,在异常检测问题中是一个十分重要的性能指标.结果如表3所示.
表3 不同核函数相应分类速度和召回率
表3中,线性核的分类速度和召回率都明显好于其他核函数,并且准确率只略低于高斯核和三角核.因此,我们选择基于线性核的单类支持向量机作为异常行人检测系统的单分类器.
如前文所述,本文设计的异常行人检测系统的实现主要依赖于人脸检测、多任务卷积神经网络特征提取模型和单类支持向量机三个算法.
我们评估了三个典型的人脸检测算法在本系统中的效果.在分辨率为960×540的监控视频中测试,相应检测速度(FPS)和异常行人召回率如表4所示.
表4 异常行人检测系统性能
综合考虑检测速度和召回率,我们选择了基于NPD特征的人脸检测算法来实现头面部区域的检测.最终异常行人检测效果如图8所示.
图8 异常行人检测示例
本文设计了一个用于快速提取头面部特征的多任务卷积神经网络,并结合NPD人脸检测算法和基于线性核的单类支持向量机,实现了监控视频场景中异常行人的快速检测,取得了令人满意的效果.
下一步的研究工作将致力于设计召回率高且检测速度快的头面部检测算法,以使得整个异常行人检测系统更加的快速且有效.