深度学习_人脸检测概述

在目标检测领域可以划分为人脸检测与通用目标检测,往往人脸检测这方面会有专门的算法(包括人脸检测、人脸识别、人脸其他属性的识别等等),并且和通用目标检测(识别)会有一定的差别,这主要是因为人脸的特殊性(有时候目标比较小、人脸之间特征不明显、遮挡问题等),下面我们将从人脸检测和通用检测两个方面来讲解目标检测。

目前主要的人脸检测方法分类:

目前人脸检测方法主要包括两个区域:传统人脸检测算法和基于深度学习的人脸检测算法。传统人脸检测算法主要可分为4类:

  1. 基于知识的人脸检测方法。
  2. 基于模型的人脸检测方法。
  3. 基于特征的人脸检测方法。
  4. 基于外观的人脸检测方法。

接下来我们着重介绍基于深度学习的人脸检测方法。

深度学习在人脸检测领域的研究主要集中在CNN的人脸检测。如基于级联卷积神经网络的人脸检测(cascade CNN)、基于多任务卷积神经网络的人脸检测(MTCNN)、Facebox等,很大程度上提高了人脸检测的鲁棒性。当然通用目标检测算法像Faster-RCNN、YoLo、SSD等也有用在人脸检测领域,也可以实现比较不错的结果,但是和专门的人脸检测算法比还是有差别。

检测图片中不同大小的人脸

传统人脸检测算法中针对不同大小人脸主要有两个策略:

  1. 缩放图片的大小(图像金字塔如下面第一张图所示)。
  2. 缩放滑动窗的大小(如下面第二章图所示)。

在这里插入图片描述

在这里插入图片描述

基于深度学习的人脸检测算法中针对不同大小人脸主要也有两个策略,但和传统人脸检测算法有点区别,主要包括:

  1. 缩放图片大小。(不过也可以通过缩放滑动窗的方式,基于深度学习的滑动窗人脸检测方式效率会很慢,存在多次重复卷积,所以要采用全卷积神经网络(FCN),用FCN将不能用滑动窗的方法)。
  2. 通过anchor box的方法(如下图所示,但不要和上面的图混淆,这里是通过特征图预测原图的anchor box区域,具体在facebox中有描述)。

在这里插入图片描述

设定算法检测最小人脸尺寸

主要是看滑动窗的最小窗口和anchor box的最小窗口。

  1. 滑动窗的方法:假设通过12 * 12 的滑动窗,不对原图做缩放的话,就可以检测原图中12 * 12的最小人脸。但是往往通常给定最小人脸a=40、或者a=80,以这么大的输入训练CNN进行人脸检测不太现实,速度会很慢,并且下一次需求最小人脸a=30 * 30又要去重新训练,通常还会是12 * 12的输入,为满足最小人脸框a,只需要在检测的时候对原图进行缩放即可:w = w * 12 / a。
  2. anchor box方法:原理类似,这里主要看anchor box的最小box,通过缩放输入图片实现最小人脸的设定。

定位人脸的位置

  1. 滑动窗的方式:滑动窗的方式是基于分类器识别人脸的框的位置确定最终的人脸。如下面的图所示。
  2. FCN的方式:FCN的方式通过特征图映射到原图的方式确定最终识别人脸的位置,特征图映射到原图人脸框是要看特征图相比较于原图有多少次缩放(缩放主要查看卷积的步长和池化层),假设特征图上(2,3)的点,可粗略计算缩放比例为8倍,原图中的点应该是(16,24);如果训练的FCN为12 * 12的输入,对于原图框位置应该是(16,24,12,12),当然这只是估计位置,实际构建网络时还要加入回归框的预测,主要是相对于原图框的一个平移与缩放。
  3. 通过anchor box的方式:通过特征图映射到图的窗口,通过特征图映射到原图的多个框的方式确定最终识别为人脸的位置。

在这里插入图片描述

通过一个人脸的多个框确定最终人脸框位置

在这里插入图片描述

上图通过NMS得到最终的人脸位置,NMS改进版有很多,最原始的NMS就是判断两个框的交集,如果交集大于设定的阈值,将删除其中一个框,那么两个框应该怎么选择删除哪一个呢?因为模型输出有概率值,一般会优先选择概率小的框删除。

发布了94 篇原创文章 · 获赞 37 · 访问量 3431

猜你喜欢

转载自blog.csdn.net/Rocky6688/article/details/103681541
今日推荐