前言
本教程基于OpenCV3.3.1或以上版本(如OpenCV3.4)、DNN模块和face_detector示例实现简单、快速的人脸检测。
主要参考Face detection with OpenCV and deep learning这个英文教程,并作部分修改。
注:亲测OpenCV3.3.0及以下版本,并没有face_detector示例,且不支持face_detector。为了避免折腾,还是建议使用OpenCV3.3.1及以上(如OpenCV3.4)。
1 face_detector简介
face_detector示例链接:https://github.com/opencv/opencv/tree/master/samples/dnn/face_detector
当电脑配置好OpenCV3.3.1或以上版本时,在opencv\samples\dnn也可以找到face_detector示例文件夹,如下图所示:
使用OpenCV的DNN模块以及Caffe模型,必须要有.prototxt和.caffemodel两种文件。但face_detector文件夹中,只有.prototxt一类文件,即缺少训练好的.caffemodel。.prototxt和.caffemodel的作用如下:
- The .prototxt file(s) which define the model architecture (i.e., the layers themselves)
- The .caffemodel file which contains the weights for the actual layers
face_detector文件分析:
- deploy.prototxt:调用.caffemodel时的测试网络文件
- how_to_train_face_detector.txt:如何使用自定义数据集来训练网络的说明
- solver.prototxt:超参数文件
- test.prototxt:测试网络文件
- train.prototxt:训练网络文件
本教程直接使用训练好的.caffemodel来进行人脸检测,即只需要.caffemodel和deploy.prototxt两个文件。
如果想要使用自己的数据集来训练网络,请参考"how_to_train_face_detector.txt"。
2 ResNet-10和SSD简介
本教程属于实战篇,故不深入介绍算法内容,若对ResNet和SSD感兴趣的同学,可以参考下述链接进行学习
[1]ResNet paper:https://arxiv.org/abs/1512.03385
[2]ResNet in Caffe:https://github.com/soeaver/caffe-model/tree/master/cls/resnet
[3]SSD paper:https://arxiv.org/abs/1512.02325
[4]SSD in Caffe: