人脸实战之人脸检测篇

一、目标检测

目标检测通常分为两大类:通用目标检测,核心是N(目标)+1(背景)分类问题,模型较大,速度较慢,一般达不到CPU real-time

特定类别目标检测:人脸检测、行人检测、车辆检测,一般为2分类问题,模型较小,基本要求就是CPU real-time

二、人脸检测任务

2.1 Face Detection

人脸检测的任务就是给定一幅图像,找出图像中的所有人脸位置,通常用一个矩形框来表示,输入为一幅图像img,输出是若干个包含人脸的矩形框位置(x,y,w,h)。人脸检测属于目标检测领域,属于特定类别目标检测的范畴
人脸实战之人脸检测篇_第1张图片

2.2 难点

非约束环境:尺度,姿态,遮挡,表情,化妆,光照等。
Baseline数据集:FDDB(2010),2845张图像,5171张人脸;WIDER FACE(2016),32203张图像,39703张标注人脸。目前WIDER FACE最难,结果最可靠。

三、落地方案

3.1 FaceBoxes:one-stage的方法

问题1:如何对模型进行推理加速
问题2:多尺度检测时如何解决检测框密度不一致的问题(不同尺度框稀疏和紧致)
Pipeline:
人脸实战之人脸检测篇_第2张图片
解决方法:1、设计了RDCL进行加速,确保实时性
     2、引入MSCL丰富感受野和得到更多的框从而处理多尺度人脸
     3、提出一个新的锚框增加密度策略,目标是提高小尺度人脸的召回率

3.1.1 快速消融卷积层(Rapidly Digested Convolutional Layers)

人脸实战之人脸检测篇_第3张图片
目的:快速将图像尺寸下降下去,减少网络通道数,减少信息损失,保证实时
策略:
  1、快速降低输入的空间尺度:Conv1,Pool1,Conv2和Pool2的stride分别为4,2,2,2,可以使输入图片尺寸快速缩小32倍
  2、合适的核尺度减少信息损失
  3、减少输出通道数:采用CRelu可显著提高速度,且精度基本没下降

3.1.2 多尺度卷积层(Multiple Scale Convolutinal Layers)

人脸实战之人脸检测篇_第4张图片
问题:常用的多目标检测RPN在人脸检测任务上表现不好主要两方面原因:1、RPN中的锚只与最后的卷积层相关联,而一层卷积层含有的特征与分辨率对于抓取不同尺度的人脸来说太弱了;2、一个关联锚的层(RPN层)需要负责在一个尺度范围内的检测人脸,但是一个感受野(一个滑窗位置)box并不能匹配不同尺度的人脸
策略:为了解决上述问题,作者从两个维度出发解决
1、深度:多尺度检测,类似于SSD,在不同尺度的feature map进行检测
2、宽度:丰富感受野,采用inception模块

3.1.3 锚框致密策略

1、定义锚的平铺密度:Adensity=Ascale/Ainterval
2、Inception3层中的尺度分别为32,64,128,而Conv3_2和Conv4_2层上锚的尺度分别是256和512而他们对应的Stride为32,32,32,64,128计算出的密度为1,2,4,4,4.很明显存在密度不平衡问题,相对于大锚,小锚太稀疏了,这导致小脸的召回较低。
3、为了消除这种不平合格,作者提出新的锚框增密策略。通过在一个感受野的中心周围均匀平铺n的平方个锚来增密一个类型锚n次。
人脸实战之人脸检测篇_第5张图片

3.2 落地tricks

1、缩小图片输入分辨率适合摄像头分辨率。同时进一步加快推理速度
2、输入改为单通道输入适应红外摄像头
3、WIDER FACE单通道灰度图训练,自有红外数据集fitune
4、几何变换、gama校正
5、超参调节
6、针对小脸难召回在浅层添加卷积层做一些anchor致密策略
7、针对项目场景做一些距离层面的图片大小增强

你可能感兴趣的:(2D人脸识别,计算机视觉)