人脸识别系统是怎么工作的(人脸检测)

上一篇我们讲到了人脸识别技术发展的三个阶段,今天我们正式进入主题,人脸识别的第一步:人脸检测。人脸检测是人脸识别的难题之一,作为这个星球的主宰者人类,我们可以很轻松的分辨出看到的东西里是否有人脸。但是对于只有0和1的计算机来说,要教它认识人脸那可不是一件容易的事。

现在公开发表出来的人脸检测算法有很多,不过不论算法怎么变化,每一个人脸检测算法都必须得考虑到以下几个情况:

  • 图片中有多张人脸怎么处理
  • 不同人的不同拍摄角度的相片如何分辨
  • 不同肤色、表情、脸型如何辨别
  • 眼睛、头发、头部饰品的遮挡如何处理
  • 光照变化和成像条件不一致如何处理

篇幅有限,我们这里就拿比较流行的MTCNN算法来介绍人脸检测技术。MTCNN包含三个阶段:

  • 1) 利用一个浅层的CNN快速产生候选窗口
  • 2) 利用一个更复杂的CNN排除掉大量非人脸窗口
  • 3) 利用一个更强大的CNN进一步改善结果,并输出人脸关键点位置。
mtcnn人脸检测

其过程大概是这样:首先图像经过金字塔,生成多个尺度的图像,然后输入PNet, PNet由于尺寸很小,所以可以很快的选出候选区域,但是准确率不高,然后采用NMS算法,合并候选框,然后根据候选框提取图像,作为RNet的输入,RNet可以精确的选取边框,一般最后只剩几个边框,最后输入ONet,ONet虽然速度较慢,但是由于经过前两个网络,已经得到了高概率的边框,所以输入ONet的图像较少,然后ONet输出精确的边框和关键点信息.

mtcnn人脸检测