1.Easily Create High Quality Object Detectors with Deep Learning

2016/10/11

http://blog.dlib.net/2016/10/easily-create-high-quality-object.html

dlib中的MMOD实现使用HOG特征提取,然后使用单个线性过滤器。这意味着它无法学习检测出具有复杂姿势变化的物体。HOG:方向梯度直方图(Histogram of oriented gradient)是在计算机视觉和图像处理领域用于目标检测的特征描述器。

人脸检测基准FDDB有两种模式:10倍交叉验证和不受限制。两者都在同一数据集上进行测试,但在10倍交叉验证模式下,您只能对FDDB数据集中的数据进行训练。在无限制模式下,您可以训练您喜欢的任何数据,只要它不包含来自FDDB的图像。FDDB站点:http://vis-www.cs.umass.edu/fddb/index.html

人脸数据集:FDDB、ImageNet、AFLW、Pascal VOC、VGG、WIDER 、Ibug(https://ibug.doc.ic.ac.uk/resources/facial-point-annotations/)、facescrub(http://www.robots.ox.ac.uk/~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手动注释。它可以从这里下载。http://dlib.net/files/data/dlib_face_detector_training_data.tar.gz

优点:

1)CPU上最快的方法。

2)适用于正面和略微非正面的面部。

3)轻量级模型与其他三个相比,在小的遮挡下工作,基本上,这种方法在大多数情况下都有效,除了下面讨论的少数情况。

缺点:

1)主要缺点是它不能检测小脸,因为它训练的最小面部尺寸为80×80。因此,您需要确保面部大小应该大于应用程序中的面部大小。但是,您可以为较小尺寸的面部训练自己的面部检测器。

2)边界框通常有时排除前额的一部分甚至下巴的一部分。

3)在严重遮挡下不能很好地工作。

4)不适用于侧面和极端非正面,如俯视或俯视。

(4)Dlib中的CNN面部检测器。

此方法使用具有基于CNN的功能的最大边距对象检测器(MMOD)。此方法的培训过程非常简单,您不需要大量数据来训练自定义对象检测器。它使用由其作者戴维斯·金手动标记的数据集,包括来自各种数据集的图像,如ImageNet,PASCAL VOC,VGG,WIDER,Face Scrub。它包含7220张图片。数据集:http://dlib.net/files/data/dlib_face_detection_dataset-2016-09-30.tar.gz

优点:

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。

人脸检测学习笔记(数据集-DLIB人脸检测原理-DLIB&OpenCV人脸检测方法及对比)的更多相关文章

  1. ZooKeeper学习笔记(二)——内部原理

    zookeeper学习笔记(二)--内部原理 1. zookeeper的节点的类型 总的来说可以分为持久型和短暂型,主要区别如下: 持久:客户端与服务器端断开连接的以后,创建的节点不会被删除: 持久化 ...

  2. mybatis学习笔记(四)-- 为实体类定义别名两种方法(基于xml映射)

    下面示例在mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现 Demo的基础上进行优化 以新增一个用户为例子,原UserMapper.xml配置如下: < ...

  3. TensorFlow学习笔记之--[compute_gradients和apply_gradients原理浅析]

    I optimizer.minimize(loss, var_list) 我们都知道,TensorFlow为我们提供了丰富的优化函数,例如GradientDescentOptimizer.这个方法会自 ...

  4. Netty 学习笔记(1)通信原理

    前言 本文主要从 select 和 epoll 系统调用入手,来打开 Netty 的大门,从认识 Netty 的基础原理 —— I/O 多路复用模型开始.   Netty 的通信原理 Netty 底层 ...

  5. 转 Android学习笔记: 学习过程中碰到的一些问题及解决方法

    在学习Android开发的过程中遇到了不少的问题,所幸的是最终经过上网查询都得到了解决.现在将我在学习Android开发过程中遇到的一些问题及解决的方法整理如下. 1.R.java不能实时更新 问题描 ...

  6. Scikit-Learn模块学习笔记——数据集模块datasets

    scikit-learn 的 datasets 模块包含测试数据相关函数,主要包括三类: datasets.load_*():获取小规模数据集.数据包含在 datasets 里 datasets.fe ...

  7. 【学习笔记】大数据技术原理与应用(MOOC视频、厦门大学林子雨)

    1 大数据概述 大数据特性:4v volume velocity variety value 即大量化.快速化.多样化.价值密度低 数据量大:大数据摩尔定律 快速化:从数据的生成到消耗,时间窗口小,可 ...

  8. OpenCV2学习笔记(十四):基于OpenCV卡通图片处理

    得知OpenCV有一段时间.除了研究的各种算法的内容.除了从备用,据导游书籍和资料,尝试结合链接的图像处理算法和日常生活,第一桌面上(随着摄像头)完成了一系列的视频流处理功能.开发平台Qt5.3.2+ ...

  9. AngularJS学习笔记3——AngularJS的工作原理

    个人觉得,要很好的理解AngularJS的运行机制,才能尽可能避免掉到坑里面去.在这篇文章中,我将根据网上的资料和自己的理解对AngularJS的在启动后,每一步都做了些什么,做一个比较清楚详细的解析 ...

随机推荐

  1. 考勤助手ER图2.0版本所存在的问题

    如图所示,考勤助手ER图2.0版本中,缺少个人信箱这一问题虽然不具有逻辑层面的问题,但是它是不满足需求的,也就是说这样的设计无法满足小组对考勤助手最初的设计.其次,就设计层面来分析,弱联系是数据库查询 ...

  2. scapy学习笔记(2)

    一.包 包(Packet)是TCP/IP协议通信传输中的数据单位,一般也称“数据包”.其主要由“目的IP地址”.“源IP地址”.“净载数据”等部分构成,包括包头和包体,包头是固定长度,包体的长度不定, ...

  3. BZOJ 1941 kd-tree

    模板题 题意说的可能有点不清楚 一开始的点必须在给定的n个点里面 所以枚举点 然后ask最大和最小值 估价函数中 最大值的写法和最小值不同 全部取max 而最小值在估价时 如果在某个点管辖的空间里 就 ...

  4. hdoj1003--Max Sum

    Problem Description Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum ...

  5. Functions should do one thing一个函数应该只做一件事

    if you take nothing else away from this guide other than this, you'll be ahead of many developers. 如 ...

  6. mysqli得到记录数量

    $result = $conn->query($sql);$result->num_rows;

  7. sklearn.preprocessing.StandardScaler 离线使用 不使用pickle如何做

    Having said that, you can query sklearn.preprocessing.StandardScaler for the fit parameters: scale_ ...

  8. hdu1085 Holding Bin-Laden Captive!(母函数)

    简单的母函数应用. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstrin ...

  9. 使用PHP配置文件

    /**************************************************************************************** * 使用PHP配置文 ...

  10. 2016 ACM-ICPC EC-Final题解

    题目链接 A. Number Theory Problem 题意:给你一个数N,求形如2k-1且小于2N的数中有多少能被7整除. 解法:观察二进制位找规律,答案是N/3. #include<bi ...