Joint Face Detection and Alignment Using Multi-task Cascade Convolutional Networks笔记

人脸识别是当今人工智能中的一个研究热点。不同的姿势、光线以及遮挡物等,都会给人脸识别增加困难。这篇文章提出了一个基于深度CNN的,串联、多任务的框架,串联的方法利用了人脸检测(face detection)和人脸对齐(face alignment)之间的内在关系,以提高识别率。在保持算法实时反应的基础上,对FDDB和WIDER FACE等基准测试集的识别率都超越了当前的最新水平。

相关工作

  • Viola和Jones的工作:人脸识别的开山之作,缺点在于针对较为复杂情况下的人脸识别,精确率不够。
  • DPM(Deformable Part Models)方法:缺点在于计算量大,训练样本需要大量的注解。
  • Yang等人提出的基于深度CNN的人脸识别工作:时间代价很高。
  • Li等人使用了串联的CNN来检测人脸,但是需要对识别出的人脸窗口(bounding box)进行校准,并且忽略了人脸的特征点与bounding box之间的联系。
  • 另外,硬样本的挖掘也影响检测器的性能。以前的工作通常采用离线的方法,这篇文章中使用了在线的、自适应的挖掘方法。

方法步骤

这篇文章中提出的方法主要可以分为以下三个阶段。

  • 使用一个较为浅度的CNN来从输入图片中生成候选的人脸窗口。
  • 使用一个更为复杂的CNN来拒绝一些非人脸的窗口,并对人脸窗口进行校正。
  • 最后,使用更为复杂的CNN来精化之前的结果,进行人脸的对齐操作,并生成5个特征点。

详细的工作步骤如下。

  • 对于每一张输入图片,把它进行不同幅度的缩放,组成一个图像的金字塔,作为串联方法中各个步骤的输入。
  • 使用PNet(Proposal Net),是一个完全的卷积神经网络,来生成候选的人脸窗口。然后使用回归向量,对生成的候选窗口进行校正。
  • 所有候选窗口进入第二阶段,使用RCNN(Refine CNN),来拒绝一些假的候选,并对bounding box进行校正。
  • 对人脸进行更细致的处理,生成5个特征点。

文中使用的CNN的结构如下图(引自原文)。
这里写图片描述

训练过程

训练过程可以分为以下步骤。

  • 对人脸的分类(face classification)。学习目标是进行二元分类,对每个样本 xi ,其损失函数是一个交叉熵(cross entropy)函数。
    Ldeti=(ydetilog(Pi)+(1ydeti)(1log(Pi)))
    其中 Pi xi 为人脸的概率。 ydeti{0,1} xi 是否为人脸的真实取值。
  • bounding box回归。比较CNN给出的窗口与真实窗口之间的差别。学习目标是一个回归问题,损失函数为:
    Lboxi=||y^boxiyboxi||22
    其中, y^boxi 是CNN网络给出的,需要回归的对象, yboxiR4 是真实的窗口。(左上、右下两个点的坐标,需要4个数值)
  • 特征值的定位。与bounding box相似,生成的人脸特征点也需要进行回归。一共有5个特征点(双眼、鼻尖以及两嘴角)。人脸的对齐所对应的损失函数为:
    Llandmarki=y^landmarkiylandmarki22
    其中 y^landmarkiR10 是网络模型所计算出来的5个特征点的坐标(10个数值组成的向量)。 ylandmarki 是人脸特征点的真实坐标。
  • 多源训练。如前所述,这篇文章中提到的CNN框架,需要完成多项任务。针对这多项任务的串联训练,不同的损失函数{det, box, landmark}的作用和权重也各不相同。整个过程的学习目标如下。
    minΣNi=1Σj{det,box,landmark}αjβjiLji
    其中 αj 代表了任务的重要性。在PNet和RNet中, (αdet=1,αbox=0.5,αlandmark=0.5) 。而在ONet中, (αdet=1,αbox=0.5,αlandmark=1) βji{0,1} 是样本类型指示符。
  • 硬样本的挖掘。传统硬样本的挖掘,是在分类器的训练完成之后。这篇文章在人脸的分类(人脸/非人脸)的过程中,采用了在线的自适应挖掘方法。在每个mini-batch的训练过程中,把前向传播过程中处理的样本,按照损失函数结果进行排序,用其中最好的70%作为硬样本。只用这些样本来后向传播、梯度计算。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值