人脸检测学习笔记(数据集-DLIB人脸检测原理-DLIBOpenCV人脸检测方法及对比)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

⼈脸检测学习笔记(数据集-DLIB⼈脸检测原理-DLIBOpenCV⼈
脸检测⽅法及对⽐)
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:///resources/facial-point-annotations/)、facescrub()等。

2.dlib-models
(1)mmod_human_face_detector
是在这个数据集上训练的:http:///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数据集上训练的()。

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
本⽂对⽐了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速度很慢
2)不会检测⼩脸,因为它训练的最⼩脸部尺⼨为80×80。

因此,您需要确保⾯部⼤⼩应该⼤于应⽤程序中的⾯部⼤⼩。

但是,您可以为较⼩尺⼨的⾯部训练⾃⼰的⾯部检测器。

3)边界框甚⾄⼩于HoG探测器。

基于dlib的⽅法能够检测⼤⼩达(70×70)的⼈脸,之后它们⽆法检测到。

正如我们之前讨论的那样,我认为这是基于Dlib的⽅法的主要缺点。

因为在⼤多数情况下不可能事先知道⾯部的⼤⼩。

我们可以通过scaling图像来摆脱这个问题,但是与OpenCV-DNN相⽐,dlib的速度优势消失了。

OpenCV⽅法仍不⽀持NVIDIA GPU。

各场景下的选择建议:
(1)⼀般情况
在⼤多数应⽤程序中,我们不会在前⾯的图像中知道⾯部的⼤⼩。

因此,最好使⽤OpenCV- DNN⽅法,因为它⾮常快速且⾮常准确,即使对于⼩尺⼨的⾯部也是如此。

它还可以检测各种⾓度的⾯部。

我们建议⼤多数⼈使⽤OpenCV-DNN。

(2)中到⼤图像尺⼨
Dlib HoG是CPU上最快的⽅法。

但它没有检测到⼩脸(<70x70)。

因此,如果您知道您的应⽤程序不会处理⾮常⼩的⾯部(例如⾃拍应⽤程序),那么基于HoG的⾯部检测器是更好的选择。

此外,如果你可以使⽤GPU,那么MMOD⼈脸检测器是最好的选择,因为它在GPU上⾮常快,并且还提供各种⾓度的检测。

(3)⾼分辨率图像
由于这些算法不能提供⾼分辨率图像(计算速度),因此当缩⼩图像时,HoG / MMOD检测器可能会失败。

另⼀⽅⾯,OpenCV-DNN⽅法可以⽤于这些,因为它检测⼩脸。

(4)⾮正脸
⾮正⾯可以向右,向左,向上,向下看,基于Haar的探测器完全失效。

基于HoG的探测器确实检测左侧或右侧⾯部的⾯(因为它是在它们上训练的),但不如基于DNN的OpenCV和Dlib探测器那样精确。

(5)遮挡
DNN⽅法优于其他两种⽅法,OpenCV-DNN略好于Dlib-MMOD。

相关文档
最新文档