基于YOLO2和ResNet算法的监控视频中的人脸检测与识别

2018-09-13 02:19朱超平
关键词:候选框人脸残差

朱超平,杨 艺

(1.重庆工商大学 计算机科学与信息工程学院, 重庆 400067;2.重庆市检测控制集成系统工程重点实验室, 重庆 400067)

人脸识别是一种非接触式的生物识别技术,现已广泛用于商业、安防等众多领域。相比指纹等接触式的识别技术,人脸识别信息的获取渠道更为广泛,隐蔽性更强[1-4]。

从自然背景中识别人脸分为两步:人脸检测与人脸识别。传统的检测方法很多,例如Adaboost方法、SVM方法、DPM方法[5]等,其中多尺度形变部件模型DPM效果较为突出,连续在2007年—2009年获得VOC[6](visual object class)的检测冠军。之后,深度学习出现,在性能上体现出明显的优势,取代了传统的检测方法,但其在初始阶段效果提升较慢。直到2014年,Ross Girshick提出R-CNN[7],深度学习在检测方面的效果才有了显著提升,其在VOC 2007测试集上的mAP 达到48%。Ross Girshick在2015年和2016年相继提出Fast R-CNN[8]和Faster R-CNN[9],将VOC 2007上的mAP分别提升至70%和 73.2%。至此,Faster R-CNN的检测效果已经较为理想,但由于其“先提取候选框,再基于候选框分类”的分步检测策略,FPS只达到7帧/s,远不能满足实时需求。

针对Faster R-CNN速度太慢的问题,YOLO在其基础上进行了一系列改进。不同于R-CNN系列将检测问题转化为分类问题的策略,YOLO将目标检测问题转化为回归问题,在很大程度上加快了计算的速度,FPS可达到45帧/s。但由于其候选框选取尺度和比例较为单一,因此在速度提升的同时,精度却有所下降,在VOC 2007上的mAP只有63.4%。YOLO2在YOLO的基础上继续改进。与Faster R-CNN中人工制定多尺度候选框选取策略不同,YOLO2采用K-means聚类作为候选框选取规则,在提升速度的同时,精度也有很大提升,在VOC 2007上的mAP达到78.6%。

本文提出的基于YOLO2和ResNet的人脸检测识别方法旨在解决视频监控中的人脸识别问题。 YOLO2[10]快速检测每帧视频中的人脸,将结果输入ResNet[11]得到人脸特征,并对比目标人脸特征与本地人脸库特征,计算人脸特征的余弦相似度,取其相似度最高的值作为识别结果。由于识别本身速度较快,故检测速度的提升使得整体识别的速度显著提升。

1 算法实现

1.1 YOLO2算法

YOLO2和YOLO[12]是继Faster R-CNN后又一系列优秀的检测算法。Faster R-CNN系列算法均采取“候选框提取+分类”(即RPN+Fast R-CNN)的步骤实现多目标检测,其本质是将检测问题转换为分类问题,精度很高,但速度不够理想。YOLO使用一种将目标分类和检测联合训练的方法,直接在输出层回归检测目标边框的位置和类别,将检测问题转化为回归问题,极大地改善了检测速度。

YOLO的预训练分类网络是GoogleNet[13]前20个卷积网络加上平均池化层、全连接层,此时的输入图片大小为 224×224。检测训练网络在其基础上增加了4个卷积层和2个全连接层,并把输入大小改为448×448。448×448的图片被分成7×7个网格,每个网格对应2个候选边框。边框用于预测网格中心所含物体的位置,网格用于预测物体类别。输入网络后,含有物体的边框被选出,经NMS剔除重叠边框,得到输入图片中目标的位置和类别。YOLO处理示意图见图1[6]。

图1 YOLO处理示意图

相比Faster R-CNN,YOLO在速度上有明显优势,但是单一比例的候选框使准确率不高。针对这种情况,YOLO2进行了一系列改进。针对训练数据和测试数据分布存在的差异性,YOLO2在每个卷积层后面添加了一个“批量归一化(batch normalization)”的步骤,以提高网络的训练速度。此外,YOLO2将预训练网络的分辨率提高到448×448,在mAP上获得了提升[14]。候选框选取方面,YOLO2用K-means聚类得到候选框的大小、比例和数量,在此基础上平衡聚类结果和计算复杂度,得到合理的候选框选取参数。VOC和COCO上聚类结果示意图见图2[6]。

图2 VOC和COCO上聚类结果示意图

每个候选框输出各自对应的预测位置、置信度以及边框中物体是每种类别的概率。为了使YOLO2适应多尺度特征,YOLO2添加了一个“passthrough layer”,用于连接浅层特征与深度特征。在训练时采取多尺度训练,每经过10轮训练就会随机选择新图片的尺度。

速度方面,YOLO2也做了一些改进措施。很多检测网络会使用VGGNet-16作为特征提取网络,虽然其精度很高,但是过于复杂[15]。YOLO2采用GoogleNet网络作为特征提取网络,其前向传播一次的运算次数仅有VGG-16的1/4左右。虽然使用GoogleNet的精度略低于VGGNet-16,但速度有明显改善。

除上述改进之外, YOLO2在很多细节上也做了优化。测试结果显示:当输入图片大小为 228×228时,其帧率达到90FPS,mAP几乎达到与Faster R-CNN一样的水准。当输入图片分辨率较高,为554×554时,YOLO2在VOC2007上的mAP达到78.6%,帧率可达到40FPS,完全满足实时性需求。

1.2 ResNet算法

深度残差网络(deep residual networks,ResNet)是由Kaiming He提出的一种深度学习网络,于2015年获得ImageNet目标检测、目标定位以及COCO目标检测和COCO图像分割的第一名。很多图像处理相关的任务能取得较好的效果都得益于较深的网络结构。网络的层数越深,意味着能提取到的特征越丰富,更能体现图像的语义。但简单的堆叠网络会导致严重的梯度消失问题。这个问题在一定程度上可以通过标准初始化(normalized initialization)和正则化(intermediate normalization)解决,保证几十层的网络能够正常收敛,但在更深的网络上,精确度达到了饱和,效果反而变差。

针对上述情况,ResNet引入了残差学习来解决深度网络难以优化的问题。形式上看,用H(x)表示最优的映射,让堆叠的非线性层去拟合另一个映射F(x)=H(x)-x,此时最优映射可以表示为H(x)=F(x)+x。假设残差映射比原映射更易优化,那么,在极端情况下就很容易将残差推至0,这比将映射逼近另一个映射要简单得多[16]。残差网络示意图见图3[11]。F(x)+x可以通过在前馈网络中增加一个“快捷连接”(shortcut connection)来表示。“快捷连接”跳过一个或多个层,执行简单的恒等映射,既不会增加额外参数,也不会增加计算复杂度,且整个网络依然可以用SGD和反向传播进行端到端的训练。

图3 残差网络示意图

ResNet算法将残差网络映射的每一组网络视为一个构造块(residual block),每个构造块定义为

y=F(x,{Wi})+x

(1)

其中:x、y分别为构造块的输入、输出向量;F(x,{Wi})为要训练的残差映射,且式(1)中x和F的维度需要一致。若维度不一致,则在“快捷连接”上增加一个线性投影来匹配维度,表示如下:

y=F(x,{Wi})+Wsx

(2)

图4是1个34层深的普通卷积网络和1个34层深的 ResNet 网络的对比图。可以看到,普通直连的卷积神经网络和ResNet 的最大区别在于,ResNet 有很多旁路的支线将输入直接连到后面的层,使得后面的层可以直接学习残差。传统的卷积层或全连接层在信息传递时,或多或少会存在信息丢失、损耗等问题,ResNet 在某种程度上解决了这个问题,通过直接将输入信息绕道传到输出保护信息的完整性,整个网络只需要学习输入、输出差别的那一部分,简化了学习的目标和难度。

图4 34层普通卷积网络与34层ResNet网络

网络设计规则: ① 对于输出feature map大小相同的层,有相同数量的filters,即channel数相同; ② 当feature map大小减半时(池化),filters数量翻倍。对于残差网络,维度匹配的shortcut连接为实线,反之为虚线。维度不匹配时,同等映射有两种可选方案:直接通过zero padding 来增加维度(channel)或者乘以W矩阵投影到新的空间。采用1×1卷积实现,直接改变1×1卷积的filters数目以增加参数。

残差学习的引进使得基础网络的性能得到进一步优化,无论是在检测还是识别方面,都可以取得更好的效果。

1.3 基于YOLO2和ResNet的人脸检测与识别

针对城市监控视频,本文提出了一种人脸检测识别方法。该方法分检测、识别两部分。检测部分采用YOLO2,其速度和精度方面都有较好的效果。识别部分采用ResNet,其引入的残差学习使得模型的精度比原始网络更高。为验证方法的效果,针对检测、识别和综合性能测试,分别设计了一组试验。

1) 检测部分:比较YOLO2和Faster R-CNN的检测性能,设计了一组对比试验。用同一批数据训练YOLO2和Faster R-CNN,并对同一视频进行测试,比较其检测的速度和精度。

2) 识别部分:根据YOLO2检测获得的人脸坐标得到人脸图像,分别用训练好的VGGNet[17]和ResNet对其进行特征提取。同样,分别用VGGNet和ResNet提取本地人脸库的特征向量,计算检测目标和本地图像的特征向量的余弦相似度,得到前5名和前1名的错误率,比较其性能。

3) 综合测试:对一段实时的监控视频进行测试。由于视频相邻帧变化较小,故每隔1s(25帧)检测输入视频中每帧人脸的位置。根据检测的位置,提取检测的人脸特征,并对比本地数据库和视频中出现的人脸特征,计算余弦相似度。若相似度达到阈值,则视为识别成功。记录视频中的实际人脸总数以及正确检测人脸总数、正确识别总数、平均完成时间,最后评估整体效果。

2 实验结果与分析

2.1 实验平台

为了验证两种算法结合后在人脸检测和识别中的效果,实验平台采用intel E5-2460V4 CPU,图像处理单元(GPU)采用英伟达K80显卡,操作系统为CentOS6.5,软件采用darknet(YOLO2)、Caffe(ResNet)。人脸检测基准数据集采用WIDER FACE。WIDER FACE提供了广泛的人脸检测基准数据集,它包含32 203个图像和393 703个人脸图像,在尺度、姿势、闭塞、表达、装扮、关照等方面表现出大的变化。WIDER FACE基于61个事件类别组织,对于每一个事件类别,选取其中的40%作为训练集,10%用于交叉验证(cross validation),50%作为测试集。训练数据集选取国内著名的人脸数据库CASIA_Webface,共10 575人,约50万人脸图片,每张图片大小为250×250,每个人的图片数量从几十到几百不等。利用海康威视DS-2CD3T45D-I3网络高清监控摄像头采集到的数据作为验证数据集。

2.2 测试数据对比

第1组人脸检测实验采用WIDFER FACE人脸检测数据库作为测试,每帧检测1次,并与Faster R-CNN的检测效果进行对比。

表1 Faster R-CNN与YOLO2人脸检测结果对比

第2组人脸检测实验采用1组实际拍摄的视频作为测试,每帧检测1次,对比Faster R-CNN的检测效果。从测试的结果来看,真实拍摄的视频的检测效果要略差于公开数据集上检测的效果,但仍可以应用到真实环境中的人脸检测。

表2 Faster R-CNN与YOLO2在真实环境的测试对比

第3组人脸识别通过抽取网络的最后一层全连接层的特征向量计算余弦相似度,得到VGGNet和ResNet的Top1和Top5相似度的错误率,结果见表3。

表3 VGGNet与ResNet人脸识别结果对比

由表3可看出,相较于VGGNet,ResNet的Top1和Top5的错误率更低,使用ResNet识别的效果更好。

第4组综合测试部分,使用采集的含有人脸的监控视频进行测试,测试结果见图5、6。

从图5、6的检测和识别结果的整体效果来看,检测和识别的速度较快,可以满足实际应用的实时性要求。整体识别率在单独识别的基础上有所降低,其中受影响较大的是检测部分。

图5 人脸检测截图

图6 正确识别出人脸

3 结束语

为减轻城市治安管理中监控和监管的压力,本文中提出了基于YOLO2和ResNet的人脸检测识别方法,用于识别城市监控视频中出现的人脸的身份。利用公开数据库和视频监控采集的数据进行测试,结果显示YOLO2和ResNet的整体识别效果较好,在实时性和准确性方面均能满足实际需求。本文方法的不足之处在于当人脸倾斜角度较大或人脸区域较小时,容易出现漏检现象。另外,由于存在运动模糊情况,即使检测到这种情况下的人脸,其识别效果也较差。未来将在后续的研究中针对上述情况进行改进,以提高整体的性能。

猜你喜欢
候选框人脸残差
重定位非极大值抑制算法
基于双向GRU与残差拟合的车辆跟驰建模
面向自然场景文本检测的改进NMS算法
有特点的人脸
一起学画人脸
基于残差学习的自适应无人机目标跟踪算法
基于深度学习的重叠人脸检测
基于递归残差网络的图像超分辨率重建
三国漫——人脸解锁
一种针对特定目标的提议算法