陈 凯,祖 莉,欧 屹
(南京理工大学机械工程学院,江苏 南京 210094)
虚拟演播室是近年来迅速发展起来的一种独特的电视节目制作技术,它的实质是将计算机制作的虚拟三维场景与摄像机现场拍摄的人物活动图像进行数字化的实时合成,使人物与虚拟背景能够同步变化,基于此能够以最小成本开发出各种拍摄环境,从而满足观众的视觉要求[1]。
人脸识别技术随着机器视觉理论的完善、计算机性能的提升,也同样在近些年迅速发展,并在某些领域已有较为广泛的应用。而将人脸识别技术与虚拟演播室技术相结合,提出一种能够对人脸自动识别并进行追踪的摄影机器人,这将彻底解放摄影师,且摄影机器人的镜头跟踪相比于摄影师具备更高的画面与速度稳定性。同时,人脸识别技术将使得摄影机器人在面临多个人时,仍然具备对所需目标跟踪的能力,使得在单摄像机的情况下仍然能完成直播任务。
目前,传统的人脸识别算法有几何特征分析法(Geometry Feature Analysis)、特征脸(Eigenface)、弹性匹配(Elastic Matching)、局部特征分析(Local Feature Analysis)等[2],这些算法利用SIFT、HOG、LBP等描述子来表征人脸进而进行人脸识别[3-5]。然而,在虚拟演播室内,光照条件复杂,加上主持人工作时必要的移动与头部的一定角度转动,会出现部分人脸遮挡和阴影的情况。此时,传统算法精度大大降低,摄影机器人将出现目标丢失或预测错误的情况,从而影响摄影机器人的正常工作。
卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,它的神经元可以响应一部分覆盖范围内的神经元,并保存了问题的空间结构,在计算机视觉领域具有出色的表现[6]。它随着层数的加深,层所提取的特征将越来越抽象。更高的层激活包含关于特定输入的信息越来越少,而关于目标的信息越来越多,根据这些信息神经网络完成对目标的识别[7]。
然而,在虚拟演播室内,人脸识别神经网络的训练需要主持人与其他人物的大量图片,更关键的是,除主持人固定外,其他人物都具有很高的流动性,需要完成的人脸识别任务其实能够抽象为测试集,即为开放集的识别任务。而对于开放集的人脸识别任务,被测试的人脸身份通常并不包含在训练集中,这使得识别任务更具挑战性。开放集人脸识别本质上是一个距离学习的问题,而解决这个问题最关键的是使得模型能够学习到具有较大区别性的边缘特征[8]。Wen等[9]提出了一种用于深度人脸识别的有判别力的特征学习方法,通过构造损失函数提高类间区分,增加类内紧凑性;Liu等[10]提出了A-Softmax损失使得模型学习到的特征最大类内距离小于最小类间距离,增强特征在开放集上的区别能力;Deng等[11]提出了一种累积角边缘损失并在许多人脸识别标准上获得最佳成绩。这些学者通过对损失函数的研究,大大推进了在开放集上人脸识别精度的提升。此外,GoogLeNet与ResNet等框架的提出[12-13],进一步探索了深度学习网络框架走向更深的可能,为人脸识别的高精度实现提供了更加优秀的实现框架。
基于前人的以上研究,本文提出一个摄影机器人的人脸识别系统,利用CASIA-FaceV5与PubFig数据集构建主持人的正负样本集,大大提高了在开放集上的模型训练的样本量,同时构建二分类模型,基于ResNet50网络完成联合监督模型的训练,在不增加模型复杂度的情况下,使得模型充分学习开放集上的特征;通过快速目标检测算法YOLOv3检测镜头内人脸,并输入人脸识别预测模型进行人脸识别;返回目标人脸坐标,通过云台控制实现目标人脸的实时跟踪。
在虚拟演播室下,摄影机器人的人脸识别主要分为2个部分:人脸检测与人脸识别。本文提出的算法通过YOLOv3算法完成人脸检测,构建ResNet50联合监督模型实现人脸识别。其中,YOLOv3人脸检测模型在Wider-Face数据集上完成训练,而人脸识别模型的训练需要基于特定的主持人目标。基于预训练的Siamese网络即可通过One-Shot学习使得模型学习到主持人的判别性特征[14]。但是,为使得模型在开放集上也能拥有优异的识别能力,本文构造ResNet50联合监督模型,并在主持人样本集上完成训练。本章主要介绍人脸识别模块训练集的采集与预处理。
深度模型的训练需要大量数据,且数据不能具备较大的相似性。本文中,主持人的图片采集采用视频采集的方法,在多个场景每0.2 s对视频中主持人脸进行采集。同时,考虑到虚拟演播室内光照的复杂条件,每次采集主持人脸的同时对图片的对比度与亮度进行随机调整,如图1所示。主持人样本集共采集6000幅图片,这里需要指出的是,为防止模型训练在某些特征上的权重过大(例如眼镜的特征),在样本集的采集中应该存在部分没有佩戴眼镜的照片,以防止模型对目标的识别过分依赖眼镜这种外部特征。
图1 主持人样本采集
本文将主持人的人脸识别转化为二分类问题,构建主持人脸集为正样本集,嘉宾人脸集为负样本集,通过0、1标签完成对模型的监督,简化模型训练,如图2所示。
图2 模型训练过程
图2中,负样本嘉宾的数据由于流动性大,不易收集。本文利用哥伦比亚大学公众人物脸部数据库(Public Figures Face Database, PubFig)[15]与亚洲人脸数据集(CASIA-FaceV5)进行负样本提取。PubFig数据集包含200位公众人物共58797幅图片,CASIA-FaceV5数据集包含500个人的2500幅亚洲人脸图片。2个数据集共取6000幅图片构成负样本集,如图3所示,最大化丰富负样本集上样本量,提升模型训练效果。
(a) Public Figures Face Database
(b) CASIA-FaceV5
人脸图像若不经预处理直接输入模型进行训练,一些不相关数据或噪音会对网络训练造成消极影响,可能导致网络不收敛。因此还需要对人脸图像进行人脸对齐与归一化等处理,增强图像中的人脸信息[16]。
本文通过dlib库提取人脸眼眶特征点,并据此求得左右眼中心位置(xl,yl)(xr,yr),如图4(a)所示。根据两眼中心位置,确定图片偏转角度α,计算公式如下:
(1)
利用仿射变换旋转图片,完成图片归一化处理,转换公式如下:
(2)
最终,完成样本集中样本图片的归一化处理,归一化前后样本图片如图4所示。
(a) 归一化前 (b) 归一化后
YOLO(You Only Look Once)是现如今最先进的目标检测算法之一[17]。YOLO识别速度快、精度高,且其端对端的训练方式与预测手段使其具备较高的灵活性,适用于实际工程应用。YOLOv3是YOLO的最新版本,DarkNet-53网络结构在保证YOLO检测实时性的同时,通过加深网络结构进一步提高了YOLOv3的识别精度[18]。本文以YOLOv3作为人脸检测模块的基本框架,并基于Wider-Face数据集完成模型训练。
本文采用的网络结构如图5所示。输入图片首先经过一个没有全连接层的DarkNet-53网络,对输入图片进行特征提取。然后对特征图分别进行2次上采样与张量拼接,最终得到3个不同尺度上的输出y1、y2、y3。利用多尺度对不同尺寸的目标进行人脸检测,即使目标人脸很小也能成功检测,提高了预测精度。
图5 YOLOv3网络框架
本文对边界框的预测采用维度聚类设定模板框,通过网络预测相关变量(tx,ty,tw,th),则边界框中心点坐标与边界框的宽与高分别为:
(3)
其中,(cx,cy)为网格偏移图片左上角的位置坐标,pw、ph为模板框的宽与高,如图6所示。
图6 YOLOv3边界框预测
边界框预测在训练期间采用平方和误差损失进行监督训练。输出边界框后,采用Logistic回归对框内部分进行目标性打分,根据分值选取得分最高的模板框进行预测,节省计算时间。
模型在Wider-Face数据集完成训练,训练过程中目标类别、置信度与目标位置中心坐标采用均二值交叉熵(binary_crossentropy)进行监督,计算公式如下:
(4)
基于YOLOv3完成人脸检测后,需要进行人脸识别确定目标人脸身份,即目标是主持人还是非主持人。由于在实际工程中,并非每个人脸都能出现在训练集中,即摄影机器人的人脸识别是一个开放集上的人脸识别问题,其本质为度量学习。本文以ResNet50为基本框架并对其进行改进,采用Softmax损失与中心损失(Center Loss)对训练过程进行联合监督,使得模型的识别具备较高类间可分性与类内紧凑性。
Softmax损失如公式(5)所示:
(5)
其中,xi∈Rd表示第i个深度特征,属于第yi个类别。Wj∈Rd表示最后一层全连接层的权重W∈Rd×n的第j列,b∈Rn表示偏置项。m与n分别表示最小批量与类别个数。在Softmax损失函数监督下,学习到的特征可分,但是仍会表现出较大的类内差异。而通过定义一个中心损失函数,在保持不同特征可分离的同时最小化类内变化,从而提升类间可分性。定义中心损失函数如下:
(6)
其中,cyi表示深度特征的第yi个类别中心,它随着深度特征的变化而更新。然而,如果考虑整个训练集在每次迭代中更新特征中心,这将增加大量计算且不易实现。本文基于小批量执行中心特征的更新,在每次迭代中,中心特征由相应类的深度特征平均值计算得到。此外,为避免少数错误样本导致的中心特征波动,设定标量α控制其学习率。综合中心损失与Softmax函数可得总的损失函数如公式(7)所示:
L=LS+λLC
(7)
其中,标量λ(0<λ<1)表示中心损失参数,用来调节2种损失函数在总的损失函数中所占权重。如果仅使用Softmax损失函数监督训练,则深度学习得到的特征将包含大量的类内变化;若仅使用中心损失监督训练,所学到的特征与中心将退化为0[9]。因此,将两者结合共同完成对神经网络的监督训练是非常必要的,尤其是对于开放集上的人脸识别问题。
本文在ResNet50基本框架下,对结构进行改进,并通过Softmax损失与中心损失联合监督完成训练,如图7所示。为提高识别速度,改进ResNet50输入结构为(64,64,3),保留ResNet50卷积层所获得图像特征,外接3个全连接层,通过训练全连接层的参数完成主持人与非主持人的目标识别。
图7 基于ResNet50的联合监督模型
ResNet50通过残差连接构造出深度神经网络,能够避免深度连接导致的梯度消失与梯度爆炸。批标准化(Batch Normalization)是另一种有助于梯度传播的层类型,它在训练过程中内部保存已读取每批数据均值和方差的指数移动平均值,使得即使在训练过程中均值和方差随时间发生变化,依然可以适应性地将特征数据标准化[19]。本文利用批标准化对全连接层的特征进行标准化处理,进一步改进模型结构,如图8所示。
图8 批标准化
网络结构基于Python的Tensorflow库实现,正负样本集各有5000个样本,验证集有2000个样本。训练过程中,为防止过拟合,本文采用L2正则化与数据增强[20]。数据增强主要采用图像翻转、裁剪、缩放与添加噪声等方式,效果如图9所示。通过大量实验,本文确定最佳batch为64,每次训练为10个epoch。
(a) 原图 (b) 添加高斯噪声 (c) 翻转 (d) 放大+翻转 (e) 缩小图9 样本数据增强
本实验中硬件配置为GTX-1080Ti GPU,软件配置为Tensorflow深度学习框架和CUDA9.2GPU并行计算库。
第2章中,完成了人脸检测与识别模型的搭建与训练,模型在2000个样本的测试集上预测精度达到99.95%。但是,在实际的拍摄过程中,由于光照环境的不同,实际精度与测试集精度存在必然差异。将人脸识别网络嵌入YOLOv3,通过摄像机对主持人目标进行实时识别,结果如图10所示。
图10 YOLOv3+ResNet50人脸识别
观察图10可以发现,主持人脸在一定角度内转动时,该算法仍能有较好的识别性能。为排除识别网络可能学到的眼镜的外部特征,在不佩戴眼镜的情况下进行测试,可以发现识别网络仍能对主持人正确识别。当对人脸有较大面积遮挡或人脸有大角度转移时,YOLOv3正确检测到了人脸,但是ResNet50人脸识别网络没有正确识别,即此时一些作为识别依据的关键特征被遮挡,这也从侧面验证了网络学习到了有效特征。为进一步对该算法进行评估,利用HOG+SVM进行人脸检测[21],并同样以本文建立的ResNet50人脸识别网络进行主持人面部识别,结果如图11所示。
图11 HOG+SVM人脸检测+ResNet50人脸识别
由图11可以发现,以HOG+SVM人脸检测为基础的ResNet50人脸识别,大体能实现主持人的面部识别;但当主持人面部具有部分遮挡,轻微转动时,HOG+SVM并没有正确检测到人脸,即没有给识别网络提供人脸图片,预测失败;由于虚拟演播室内人脸识别可以抽象为开放集上的人脸识别,故这里选择一位没有出现在训练集的嘉宾进行预测,可以发现本文构建的人脸识别模型在开放集上测试同样有较好的预测精度。
基于OpenFace[22]的人脸识别开源项目face_recognition通过预训练的网络生成人脸128个测量值,并基于此外接一个简单的SVM分类器实现One-Shot学习的人脸识别,结果如图12所示。
图12 face_recognition人脸识别
观察图12可得,face_recognition具备较好的人脸识别能力且在人脸具有一定角度转动时,仍具备较鲁棒的识别性能。但是,当选择一位没有在训练集中出现的嘉宾进行判断时,该算法没能正确识别。可以发现,face_recognition虽然能够通过一幅主持人照片使得模型学习到辨别人脸的能力,但是当对不属于训练集中的人脸进行判别时,模型预测精度不高。
在虚拟演播室内,为实时地对目标进行跟踪,摄影机器人对人脸的识别通常需要更低的时间成本。通过比较上文所提的3种算法处理一帧图片的时间成本来对它们进行进一步的比较分析,如图13所示。
(a) YOLOv3人脸检测+ResNet50人脸识别
(b) HOG+SVM人脸检测+ResNet50人脸识别
(c) 基于face_recognition人脸检测和人脸识别图13 各算法人脸识别时间成本比较
分析图13可以发现,本文提出的YOLOv3+ResNet50算法能够在GTX-1080Ti GPU上达到17 fps的识别速度,其中,ResNet50识别网络的时间成本仅为YOLOv3人脸检测的四分之一,整个识别过程的时间成本能够基本满足摄影机器人的实时性要求;HOG+SVM+ResNet50算法在GTX-1080Ti GPU上达到14 fps的识别速度,前者比它识别速度快20%;face_recognition同样采用HOG特征进行人脸检测,并通过生成嵌入特征进行人脸识别,计算时间相对较长。综合比较可以发现,本文所提算法具有相对较低的计算时间。为进一步加快整个算法的识别速度,可以将人脸检测与人脸识别分别置于2个GPU上计算。
通过本节对3种算法精度与速度的比较,可以发现,YOLOv3+ResNet50有着能够满足摄影机器人拍摄条件的识别精度与实时性要求,且在开放集上测试仍具有较高的鲁棒性。
摄影机器人由摄影机、云台、升降系统、控制系统与移动底盘组成,如图14所示。
图14 摄影机器人
摄影机器人对主持人的目标跟踪主要由小云台实现。小云台主要由外观壳体、相机支撑结构与减速器组成,如图15所示。壳体与升降系统相连,控制摄影机在水平方向转动;相机支撑结构直接与相机固连,控制摄影机在垂直方向转动。壳体与相机支撑结构分别由2个电机控制,上位机通过串口对电机发送指令实现小云台的水平与垂直方向的运动。
图15 小云台结构
在对主持人进行跟踪时,小云台通过人脸识别模型返回的二维坐标,控制自身运动调整姿态实现目标跟踪。首先,在视频流采集图片的中心,预设一个36×36大小的区域。在经过本文人脸识别算法确定主持人位置后,返回主持人人脸的中心点坐标,并对该点位置进行判别,若处于预设区域内,则摄影机器人位姿不做调整;若主持人脸超出预设区域,则根据超出预设区域的方位对小云台运动方向进行判断,控制云台进行位姿调整,直至主持人脸重新返回预设区域。控制算法流程如图16所示。
图16 目标跟踪控制算法流程图
基于第3章的人脸识别算法与本章的控制运动算法,在摄影机器人上实现对主持人的实时目标跟踪。实验中,嘉宾与主持人同时存在,如图17所示。
图17 算法实现
图17中,虚线框为后期方便观察所添加的,代表实验过程中预设区域范围。实验中,为避免因主持人移动太快或突然变向导致摄影机器人出现跟踪目标丢失的情况,本文设定云台速度调节频率与算法识别频率一致。从图17中可以发现,当摄影机器人在主持人与嘉宾中识别主持人后,对主持人位置坐标进行判断,不在预设区域时,摄影机器人先对支撑结构进行调整,即使得主持人脸在垂直方向居中;再进行壳体姿态调节,使得主持人脸水平方向居中,最终使得主持人脸进入预设区域内,摄影机器人完成目标跟踪。实验中,摄影机器人能够准确地排除嘉宾的干扰,正确定位主持人,并在主持人工作中可能需要的动作下仍能具备较高的鲁棒性。在实验过程中,云台的目标跟踪有着基本可靠的精度与实时性,基本能够满足虚拟演播室下的拍摄要求。
本文介绍了一种基于YOLOv3与ResNet50的摄影机器人人脸识别跟踪系统,在PubFig与CASIA-FaceV5数据集上构建主持人样本集,针对虚拟演播室下人脸识别开放集问题,在ResNet50基础上构建深度残差网络模型并完成联合监督训练,最终通过实验验证了该系统在虚拟演播室下对人脸识别跟踪的鲁棒性、准确性与实时性,扩展了摄影机器人在虚拟演播室下的应用前景。后续研究中,将继续针对在虚拟演播室下开放集人脸识别的问题,通过改进网络训练的损失函数进一步提高摄影机器人在开放集上的识别精度。同时,也会在控制算法上做进一步探索,使得整个摄影机器人的多个自由度共同参与对主持人的人脸跟踪,整个系统功能更加可靠完备并能实际应用于各类主持节目。