视频监控场景下基于深度学习的多人脸跟踪
2021-06-16李荔瞿洪桂高珊珊
李荔 瞿洪桂 高珊珊
(1.国家信息中心软件评测中心 北京市 100000 2.北京中电兴发科技有限公司 北京市 100095)
1 前言
人脸跟踪是对视频中出现的人脸进行位置轨迹的连续定位。在视频监控的人脸抓拍任务中,常常通过对画面中同一人脸进行跟踪,并选择跟踪轨迹中质量较好的一帧或多帧进行抓拍,来避免对同一人脸进行重复抓拍。
人脸跟踪算法通常借鉴多目标跟踪算法,并将其中的目标限定为人脸。主流的多目标跟踪算法是基于检测的跟踪,包括目标检测、表观或运动特征提取、相似度计算、匹配关联四个阶段[1]。基于检测的跟踪以Alex 等[2]提出的SORT 和Nicolai 等[3]提出的DeepSORT 为代表,基于卡尔曼滤波[4]来进行目标的运动信息预测,使用匈牙利匹配算法[5]进行目标和轨迹的匹配关联。基于深度学习的端到端的多目标跟踪算法将四个阶段的其中几个进行融合,如Zhongdao 等[6]通过修改YOLOv3 网络同时进行目标检测并输出对应的深度特征;Yifu[7]也做了类似的工作但速度更快;ShiJie 等[8]以端到端的方式学习目标物体的外观特征以及在若干帧内的关联性。
在人脸跟踪任务上,周平平等[9]基于粒子滤波算法进行跟踪,自适应融合人脸肤色和边缘特征;李澎林等[10]使用HOG 算子进行人脸检测,使用人脸关键点作为输入提取深度特征辅助跟踪;田雄[11]等使用背景建模检测运动区域,使用哈尔特征检测人脸,结合CamShift 算法进行人脸跟踪。
这些方法多使用传统方法进行人脸检测,检测结果不够精确,同时使用非深度特征进行外观描述,区分性较差。为了对监控视频中的多人脸进行准确跟踪,本文提出基于深度学习的跟踪算法,主要的创新点有:
(1)去掉人脸检测算法的大尺寸分支以适应视频监控中的人脸尺寸;
(2)融合深度特征和HOG 特征,以提高人脸特征的区分性;
(3)在相似度矩阵中同时使用特征相似度和IoU 进行过滤,提高跟踪准确性。
本文提出的方法能有效提高跟踪的持续性,减少ID 切换,对视频监控中的多人脸进行准确跟踪。
2 算法原理
2.1 跟踪流程
本文使用基于深度学习的方式进行多人脸的跟踪,具体流程为:
(1)获取视频或图片流的当前帧图像;
(2)使用卡尔曼滤波方法预测已存轨迹在当前帧的位置坐标,即预测框;
(3)对当前帧图像进行人脸检测得到人脸矩形框坐标,即检测框;若未检测到人脸,则跳到第(8)步进行匹配后更新;
(4)根据检测框得到人脸小图,提取融合人脸特征并输出;
(5)计算轨迹特征池中的特征和当前帧人脸特征的相似度矩阵;
(6)计算检测框和预测框的IoU 值得到IoU 矩阵;
(7)根据相似度矩阵、IoU 矩阵和匈牙利匹配算法进行轨迹和人脸的匹配;
(8)将未匹配成功的轨迹和人脸根据IoU 矩阵进行匈牙利匹配;
(9)将第(7)步和第(8)步中匹配成功的人脸ID 设置为对应轨迹的ID,更新卡尔曼滤波器,添加人脸特征到特征池中,将连续匹配失败次数置零;对于第(8)步未匹配成功的轨迹,将其连续匹配失败次数加1,在该值超过阈值时删除该轨迹;将第(8 步)未匹配成功的人脸初始化为新的轨迹,分配新的ID,初始化卡尔曼滤波器,保存人脸特征到特征池。返回第(1)步。
下面依次对算法用到的人脸检测、特征提取、相似度计算和匹配、卡尔曼滤波的原理进行说明。
2.2 人脸检测算法
本文使用的人脸检测算法基于Najibi 等[12]提出的SSH 人脸检测算法。该算法为单阶段人脸检测算法,作者移除VGG16 分类网络的全连接层,后接三个检测头,分别对应检测不同尺寸大小的人脸。
为了适应监控场景下的人脸检测,并提高检测速度,本文对SSH 算法进行改进,将主干网络从VGG16 更换为ResNet18[14],将检测头从三个减少为两个。更换主干网提升了推理速度,同时精度并没有明显下降。而对于视频监控场景,人脸尺寸在画面中所占比例较小,删掉专门针对大尺寸人脸的M3 检测头,可大幅提高检测速度。改进的SSH 算法网络依然为全卷积网络,综合考虑速度和精度,输入图片尺寸设置为960*540。
2.3 人脸特征提取算法
人脸特征提取算法通过提取人脸图片的特征来代表该人脸的外观,跟踪中通过计算人脸特征相似度来匹配轨迹和当前帧人脸。视频监控场景中常常同时存在多个人脸,一般的基于深度学习的方法虽然能提取到图像的深层抽象特征,进行比较准确的特征表达,但往往耗时过长,影响跟踪的时效性。而非深度的方法能够快速提取到图像的局部形状信息,但往往精度较低,特征的区分性不足。
表1:测试视频信息
表2:跟踪测试结果
图1:检测算法在monitor 测试集上的测试结果
为兼顾精度和速度,本文同时计算人脸的深度特征和非深度特征,并融合成一个完整特征。深度特征提取的主干网络为Sheng 等[15]提出的MobileFaceNets,该网络采用MobileNetV2[16]的Bottleneck结构作为网络的主要模块,计算量很小。训练时损失函数采用的是Jiankang 等[17]提出的基于角度的损失函数Arcface,针对人脸目标的识别表现较好。本文采用的非深度特征为HOG 特征。HOG 算子通过计算和统计图像局部区域的梯度方向直方图构成特征,具有几何和光学不变性,能够较好地捕捉图像的局部形状信息[10]。
本文提取的人脸深度特征为128 维,HOG 特征为144 维,顺序拼接为一个完整特征,共272 维。拼接方式如下:
其中xi为深度特征的第i 维,yi为HOG 特征的第i 维。两特征在拼接前分别做了归一化操作。
2.4 相似度计算和匹配
本文中的跟踪算法根据轨迹和检测框之间的特征相似度和IoU值来进行匹配。特征相似度根据1.2 中提取的人脸特征进行计算,代表目标之间的外观相似度;IoU 值根据检测框和预测框的位置坐标进行计算,其含义为两个框之间的重合比例,代表两目标之间的位置相似性。
特征相似度的计算使用余弦相似度,公式如下
其中x,y 分别为不同人脸图像提取的人脸特征。除以2 是因为拼接前两特征分别归一化,拼接后完整特征的二范数为
预测框和检测框之间IoU 值的计算公式如下
其中A,B 分别为轨迹的预测框区域和当前帧人脸检测框区域,为两框交集的面积,为两框并集的面积。
IoU 值不考虑目标外观,仅根据位置是否相近匹配,但在遮挡和人脸速度突变情况下表现不好;特征相似度可以较好的处理遮挡和速度突变,但对模糊、角度变化引起的人脸外观改变鲁棒性不好。因此,本文同时考虑位置和外观特征。首先使用相似度矩阵进行匹配,将小于相似度阈值的相似度置零。同时判断对应轨迹和人脸的IoU 值是否为0,如果是,则说明预测框和检测框位置相差较大,此时将相似度矩阵的相似度置零,避免将不同位置外观相似的人脸错认为同一人脸。之后根据匈牙利匹配算法进行匹配。
对于根据特征匹配失败的轨迹和检测框,使用IoU 矩阵进行再次匹配。同样,只有超过阈值的IoU 值是有效的,使用的匹配算法也是匈牙利匹配算法。最终的匹配结果为两次匹配成功的结果的并集。
匈牙利匹配算法用以求解二分图的最大匹配问题,该问题类似跟踪中的轨迹与人脸匹配问题,利用该算法可实现轨迹和人脸的最大匹配,也就是关联成功数量最多的匹配。
2.5 卡尔曼滤波
卡尔曼滤波是一种针对线性系统的估计算法,它可以通过系统包含噪声的观测状态,对系统的真实状态进行最优估计。在跟踪中,卡尔曼滤波常用来对轨迹的位置坐标进行预测和更新。当一个检测框匹配失败时,将其初始化为新的轨迹,为其分配一个卡尔曼滤波器,此时卡尔曼滤波器由该人脸检测框的位置坐标初始化;根据上一帧轨迹位置的最优估计和变化速度,卡尔曼滤波器给出轨迹在这一帧的位置预测;经过匹配,如果该预测框与某检测框匹配成功,则预测框和检测框融合得到轨迹位置的准确估计,同时卡尔曼滤波器更新速度和方差等参数。预测和更新反复进行,保证跟踪框的准确。
3 实验设计
本文的测试环境所用系统为ubuntu18.04,CPU 型号为Intel(R) Xeon(R) CPU E5-2609 v3 @ 1.90GHz,内存大小32G,使用的显卡为NVIDIA GeForce GTX 1070.
3.1 人脸检测测试
本文使用的数据集为自己采集制作的数据集monitor,为监控视频视角的人脸检测数据集。训练验证集包含13926 张图片,总计82930 个人脸框。测试集共1990 张图片,人脸框数量为16912.检测的主要指标为PR 曲线和ROC 曲线。PR 曲线横轴为召回率,即算法正确检测的人脸占所有人脸的比例,纵轴为准确率,即算法在所有候选框中将其正确分类的概率。ROC 曲线横轴为假阳数,也即将非人脸检测为人脸的个数,纵轴为召回率。
本文将改进的SSH 算法与Yuanyuan 等[18]提出的CenterFace算法比较。本文将CenterFace 使用WIDER FACE[19]数据集训练得到的预训练模型在monitor 训练集上进行迁移学习,最终在测试集上的评测结果如图1。
相比于CenterFace,本文提出的改进的SSH 算法在该数据集上的表现较好,更加适合监控视角的人脸检测。
3.2 跟踪效果测试
针对多人脸跟踪的测试,本文使用的数据是自己采集的四段监控视频,视频长度在1 分钟左右,帧数统计和其中所含人脸数统计见表1。
在算法评测时,本文主要衡量的指标是ID 切换、误跟踪、漏跟踪数量。其中ID 切换指的是算法对同一个人脸赋予了多个不同的ID;误跟踪指的是算法将不是人脸的目标识别成人脸进行跟踪并赋予其独特的ID,误跟踪主要是由检测算法误检造成,跟踪算法可以过滤部分误检情况;漏跟踪是指算法将视频中的人脸目标遗漏,并未对其进行跟踪和ID 的分配,漏跟踪可能是由检测算法的漏检造成,也可能是由跟踪算法将人脸抛弃造成。所有指标均为越低越好。
下面将本文提出的算法与另一种跟踪算法做比较。方法1 采用的检测算法是改进的SSH,不添加特征提取模块,跟踪部分采用SORT 算法;方法2 为本文提出的改进算法,采用的检测算法为改进的SSH,添加融合特征提取模块,使用融合特征和IoU 信息共同进行匹配,配合卡尔曼滤波和匈牙利匹配算法实现跟踪。两种方法的比较结果如表2。
从表2 中可以看出,方法2 在误跟踪和ID 切换这两个指标上均好于方法1,且仅仅比方法1 多一个漏跟踪,说明添加融合特征能够显著降低ID 切换,比起仅仅使用IoU 计算位置,跟踪的持续性更好。误跟踪的减少是因为跟踪算法准确的将同一个非人脸目标的两次误跟踪合并为一次,也即对置信度高的错误目标也做到了准确跟踪。而增加的漏跟踪说明更准确的跟踪不会是更全面的跟踪,漏跟踪、误跟踪和ID 切换指标不会同时下降。
两种算法的ID 切换指标差异较大,且算法2 的ID 切换数量也不少。分析视频发现,当人脸位于画面后方,尺寸较小且较模糊时,难以获得较高的检测置信度,且容易被其他人或干扰物遮挡,发生外观变化,造成ID 切换。相比于Video_1、Video_2、Video_3 中,Video_4 中的人脸普遍尺寸较大,ID 切换情况大大减少。
4 总结
本文提出了在监控视频场景下的基于深度学习的多人脸跟踪算法,采用基于ResNet18 并去掉大尺寸检测头的SSH 人脸检测算法进行多人脸的检测,采用基于MobileFaceNets 和Arcface 的深度人脸特征提取网络进行深度特征提取,并与HOG 特征进行融合,在匹配时同时考虑融合人脸特征和IoU 信息,配合卡尔曼滤波和匈牙利匹配算法实现多人脸的跟踪。实验表明,本文提出的方法能够有效减少跟踪过程中的ID 切换,提高跟踪的持续性。但是,本文算法还不够实时,以后的工作可以通过优化人脸检测算法来提高跟踪速度。