人脸识别(1)

来源:互联网 发布:linux怎么退出man 编辑:程序博客网 时间:2024/06/09 14:44

Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks 论文部分翻译+笔记


Overall Framework 总体架构

这里写图片描述
- 拿到一张图片之后,把它重新调整成不同的大小,形成一个“图片金字塔”,以此作为后面网络的输入
- Stage 1 :proposal network,获得脸部的窗口以及一个叫bounding-box regression vector的东西(就叫它bounding-box 回归器向量吧,查了一下资料似乎是R-CNN论文里用到的东西),然后基于这个bounding-box来对人脸进行校准。之后使用non-maximum suppression (NMS,非极大值抑制算法,即搜索局部极大值,抑制非极大值) ,这个算法的作用主要是消除多余、交叉重复的窗口,找到最佳人脸检测位置,找出最佳定位人脸的窗口。
- Stage 2 :refine network,进一步使用bounding-box regression和NMS进行修正和校准
- Stage 3 :和Stage 2相似,但主要是识别人脸区域,输出脸部的五个位置坐标

CNN architectures 卷积神经网络结构

  • 用CNN进行人脸检测会受限于:
    • 卷积层的过滤器缺乏多样性,影响区分能力
    • 相比于其他的多类别分类器,人脸识别只是一个二分类任务,所以每层需要的过滤器会少一些。因此减少了过滤器的数量,并把5x5的过滤器替换为3x3的,这样减少了计算量,同时加深网络的深度以获得更好的性能。

CNN 结构

Training 训练

  • 人脸分类
    • 学习目标具体化为一个二分类问题,计算一个交叉熵损失函数
  • bounding-box regression
    • 对于每一个备选窗口,计算它与最近的ground truth(是指有监督学习中训练数据的label,这个label是准确真实的分类)的偏移距离,这样学习目标就成为了一个回归问题,计算欧几里得损失函数(就是回归后得到的预测值和ground truth的平方差),求四个坐标(左上角的坐标,宽度,高度)
  • 脸部坐标定位
    • 类似于bounding-box regression,也是使用欧几里得损失函数,计算5个坐标(左眼,右眼,鼻子,左嘴角,右嘴角)与ground truth的平方差,将其最小化
  • 多来源训练
    • 在输入图片为非人脸、部分人脸时,显然上面有一些损失函数就没有被用到,这里使用一个样本类型指示器解决(不太懂)
  • 在线的hard sample mining(难例挖掘?)
    • 一般的hard sample mining都是在初始分类器形成之后进行的,这里使用在线的方式,就是每训练一批mini-batch,将使用前向传播计算的所有样例的损失函数排序,取最大的70%作为hard samples,这样在反向传播过程中就只使用这些hard samples元素来进行计算,这样将极大地改善在不进行手动挑选样例的情况下的性能

Experiments 实验

  • 训练数据
    • 这里有个概念IoU(检测评价函数Intersection over Union)
    • negatives : IoU ratio < 0.3 用于人脸分类任务
    • positives : IoU ratio > 0.65 用于人脸分类任务、bounding-box regression
    • part faces : 0.4 < IoU ratio < 0.65 用于bounding-box regression
    • landmark faces : 脸部被标记了5个位置坐标 用于人脸坐标定位
    • 在part faces和negatives之间有一个不明间隔,而不同的人脸注释之间又存在差异,因此在0.3~0.4选择IoU间隔
    • 整个训练数据组成比例为3:1:1:2(negtives/positives/part faces/landmark faces)
      后面大概讲了一下如何从各大数据集选取数据来训练,略了
0 0
原创粉丝点击