1.Easily Create High Quality Object Detectors with Deep Learning
2016/10/11
dlib中的MMOD实现使用HOG特征提取,然后使用单个线性过滤器。这意味着它无法学习检测出具有复杂姿势变化的物体。HOG:方向梯度直方图(Histogram of oriented gradient)是在计算机视觉和图像处理领域用于目标检测的特征描述器。
人脸检测基准FDDB有两种模式:10倍交叉验证和不受限制。两者都在同一数据集上进行测试,但在10倍交叉验证模式下,您只能对FDDB数据集中的数据进行训练。在无限制模式下,您可以训练您喜欢的任何数据,只要它不包含来自FDDB的图像。FDDB站点:
人脸数据集:FDDB、ImageNet、AFLW、Pascal VOC、VGG、WIDER 、Ibug(https://ibug.doc.ic.ac.uk/resources/facial-point-annotations/)、facescrub(~vgg/data/vgg_face/)等。
2.dlib-models
https://github.com/davisking/dlib-models
(1)mmod_human_face_detector
是在这个数据集上训练的:http://dlib.net/files/data/dlib_face_detection_dataset-2016-09-30.tar.gz。作者通过在许多公开可用的图像数据集(不包括FDDB数据集)中查找人脸图像来创建数据集。特别是,有来自ImageNet,AFLW,Pascal VOC,VGG数据集,WIDER和facescrub的图像。数据集中的所有注释都是由作者使用dlib的imglab工具创建的。mmod_human_face_detector 包含两种模式。不能人脸识别。
(2)shape_predictor_68_face_landmarks.dat.bz2
这是在ibug 300-W数据集上训练的(https://ibug.doc.ic.ac.uk/resources/facial-point-annotations/)。dlib_face_recognition_resnet_model_v1 shape detect联合使用,可以人脸识别。
(3)性能效果
DLIB,HOG+SVM:正脸,CPU百毫秒级
DLIB,CNN:非正脸,秒级,GPU百毫秒级
3.Face Detection – OpenCV, Dlib and Deep Learning ( C++ / Python )
2018/10/22
https://www.learnopencv.com/face-detection-opencv-dlib-and-deep-learning-c-python/
本文对比了OpenCV和dlib的4中人脸检测方法:OpenCV中的Haar Cascade人脸检测器、基于深度学习的OpenCV人脸检测器、Dlib中的HoG Face Detector、基于深度学习的Dlib人脸检测器。
(1)OpenCV中的Haar Cascade人脸检测器
优点:
1)几乎可以在CPU上实时工作。
2)简单的架构。
3)检测不同比例的脸部。
缺点:
1)这种方法的主要缺点是它提供了大量的假预测。
2)不适用于非正面图像。
3)在遮挡下不起作用。
(2)基于深度学习的OpenCV人脸检测器
它基于Single-Shot-Multibox检测器,并使用ResNet-10架构作为主干。使用来自网络的图像训练该模型,但未公开该来源。 OpenCV为这款人脸探测器提供了2种型号:浮点16版原始caffe实现(5.4 MB)和使用Tensorflow的8位量化版本(2.7 MB)。
优点:
1)四种方法中最准确的
2)在CPU上实时运行。
3)适用于不同的面部方向 - 上,下,左,右,侧面等。
4)甚至在严重遮挡下工作。
5)检测各种尺度的面部(检测大面和小面)。
缺点:基于DNN的探测器克服了基于Haar级联探测器的所有缺点,同时不会损害Haar提供的任何优势。除了它比下面讨论的基于Dlib HoG的面部检测器慢之外,我们看不出这种方法的任何主要缺点。
(3)Dlib中的HoG Face Detector
这是一种广泛使用的人脸检测模型,基于HoG特征和SVM。该模型由5个HOG过滤器构成 - 前视,左视,右视,前视但向左旋转,前视但向右旋转。用于训练的数据集包括2825个图像,这些图像从LFW数据集中获得,并由Dlib的作者Davis King手动注释。它可以从这里下载。
优点:
1)CPU上最快的方法。
2)适用于正面和略微非正面的面部。
3)轻量级模型与其他三个相比,在小的遮挡下工作,基本上,这种方法在大多数情况下都有效,除了下面讨论的少数情况。
缺点:
1)主要缺点是它不能检测小脸,因为它训练的最小面部尺寸为80×80。因此,您需要确保面部大小应该大于应用程序中的面部大小。但是,您可以为较小尺寸的面部训练自己的面部检测器。
2)边界框通常有时排除前额的一部分甚至下巴的一部分。
3)在严重遮挡下不能很好地工作。
4)不适用于侧面和极端非正面,如俯视或俯视。
(4)Dlib中的CNN面部检测器。
此方法使用具有基于CNN的功能的最大边距对象检测器(MMOD)。此方法的培训过程非常简单,您不需要大量数据来训练自定义对象检测器。它使用由其作者戴维斯·金手动标记的数据集,包括来自各种数据集的图像,如ImageNet,PASCAL VOC,VGG,WIDER,Face Scrub。它包含7220张图片。数据集:
优点:
1)适用于不同的面部方向。
2)偶然场景下健壮。
3)在GPU上工作得非常快。
4)非常简单的培训过程。
缺点:
1)CPU速度很慢