[ 论文链接: A Convolutional Neural Network Cascade for Face Detection]
人脸特征检测(face feature detection)又叫 “facial landmark detection”, “facial keypoint detection” and “face alignment”
人脸检测的两大难题:提高人脸识别速度;识别的准确性和计算复杂度的冲突.人脸识别效率低的原因有:图像的分辨率太高;网络自身的特性[网络越深则越耗时].
为了解决上述难题而提出了基于CNN的级联框架,具有性能好且识别能力强的特点.级联思想在人脸检测的运用: 在特征图上用滑动窗口,特征图上每个点对应于原始图像的一部分;人脸关键点定位也可以用cascade.级联CNN 在人脸检测的基础上预测人脸特征点位置,并将预测的相对位置转换成图像上的绝对坐标。
学术界的人脸检测数据集 FDDB、AFW 和 MALF
给定一张测试图像, 12 net用滑动窗口扫描整张图像,将原始输入resize成 大小的图,做简单的分类就可以快速过滤掉很多[ 90% ] 的 不属于人脸的检测[ 窗口 ]框;
NMS[ Non-maximum suppression ,非极大值抑制 ]把高度重合的框整合成一个;再把剩余的窗口crop 并resize 成大小,输入到 24net中,再做一遍人脸检测,进一步过滤到多[ 90% ] 的检测框;
最后一个48net 把剩余的框再进行一次NMS和过滤,得到最终的 output detections.
实际中,如果可接受的最小的人脸尺寸为 F, 那么测试图像 is first built into image pyramid to cover faces at different scales and each level in the image pyramid is resized by ,作为12-net的输入图像;
12-calibration-net 是一个浅层CNN, N calibration patterns被预先定义为具有一个三种尺度变换的集合和[ offset vectors]偏移向量 ,给定一个在左上角 处的size为 的检测框 ; calibration pattern 将这个框调整为:
本文中 N = 45 patterns,因为 为scale [ 对框的尺寸进行缩放],有以下5种变换, 分别有三种[ 分别表示沿着x,y轴的平移调整 ],则共有45种变换,用calibration net 对框进行调整.
对平均结果做以下调整:
t是一个过滤掉低置信度的 patterns的阈值.
OpenCV里可以用来训练级联分类器的是opencv_haartraining和opencv_traincascade.
LBP特征是整数特征,因此训练和检测过程都会比Haar特征快几倍。LBP和Haar特征用于检测的准确率,是依赖训练过程中的训练数据的质量和训练参数。
注: 去了解相关函数工具(如图像预处理:去均值、归一化,卷积网络,相对坐标和绝对坐标互转等).
[参考:CascadeCNN人脸检测学习笔记 ]