人脸检测属于视觉任务的一种,早在1970年代就开始了相应的研究,不过彼时采用的方法比较简单,多是启发式的。而人脸检测技术真正的发展,开始于1990年代。而当时也是整个计算机技术开始飞速发展的黄金时代。Viola-Jones检测器被提出之前,学术界已提出了结合滑动窗口的特征提取和人工神经网络等分类器方法的人脸检测方法,以及直接使用图像像素本身的人脸检测方法。这两种类型的方法,分别被称之为Feature-based和Image-based。
Viola-Jones检测器最初由Paul Viola和Michal Jones于2004年在IJCV上的文章《Robust Real-Time Face Detection》里提出,之后由其他学者提出了多种扩展版本。Viola-Jones检测器的三个核心步骤,即Haar-like特征、Adaboost分类器和Cascade级联分类器,其最早的版本也已经提出了好多年。Haar特征最早由Papageorgiou C.等提出(《A general framework for object detection》);Adaboost分类器由Freund和Schapire在1995年提出的算法,用来提升传统的Boosting算法;而Cascade级联分类器来源于传统的决策树分类器。著名的计算机视觉开源库OpenCV实现了Viola-Jones检测器,其具体细节与最初版本略有不同,本文以OpenCV的实现来解析Viola-Jones检测器。