首页 编程教程正文

OpenCV vs Dlib 人脸检测比较分析

piaodoo 编程教程 2020-02-22 22:04:22 870 0 python教程

本文来源吾爱破解论坛

人脸检测是计算机视觉最典型的应用之一,早期OpenCV的logo就是Haar人脸检测的示意图。
很多人的第一个OpenCV学习目标就是跑通Haar级联人脸检测,Dlib库在业内开始流行很大程度上是因为其HOG-SVM人脸检测比OpenCV Haar的好,而近年来OpenCV和Dlib均已包含基于深度学习的人脸检测算法实现。
Haar-Cascade,HOG-SVM,深度学习正是代表着人脸检测乃至目标检测的三个时代。昨天Learn OpenCV网站博主Vikas Gupta博士发表文章,对OpenCV与Dlib中四种人脸检测算法实现进行了比较分析,包含C++/Python的代码示例,且对精度和速度都进行了量化。1. OpenCV Haar Cascade人脸检测算法无需赘言。代码示例:
优点1)几乎可以在CPU上实时工作;2)简单的架构;3)可以检测不同比例的人脸。缺点1)会出现大量的把非人脸预测为人脸的情况;2)不适用于非正面人脸图像;3)不抗遮挡。
2. OpenCV DNN 人脸检测从OpenCV3.3版本后开始引入,算法出自论文《SSD: Single Shot MultiBox Detector》(https://arxiv.org/abs/1512.02325)。使用ResNet-10作为骨干网。OpenCV提供了两个模型:1)原始Caffe实现的16位浮点型版本(5.4MB);2)TensorFlow实现的8位量化版本(2.7MB)。Vikas Gupta的代码包含了这两种模型。模型加载代码示例:

检测测试代码示例:

优点1)在这四种方法中是最准确的;2)在CPU上能够实时运行;3)适用于不同的人脸方向:上,下,左,右,侧面等。4)甚至在严重遮挡下仍能工作;5)可以检测各种尺度的人脸。缺点作者认为没有什么大的缺点^_^(52CV君不敢妄提缺点,但认为不能使用NVIDIA GPU绝对是个遗憾)
3. Dlib HoG人脸检测代码示例:

优点1)CPU上最快的方法;2)适用于正面和略微非正面的人脸;3)与其他三个相比模型很小;4)在小的遮挡下仍可工作。
缺点1)不能检测小脸,因为它训练数据的最小人脸尺寸为80×80,但是用户可以用较小尺寸的人脸数据自己训练检测器;2)边界框通常排除前额的一部分甚至下巴的一部分;3)在严重遮挡下不能很好地工作;4)不适用于侧面和极端非正面,如俯视或仰视。
4. Dlib CNN人脸检测算法来自论文《Max-Margin Object Detection》(https://arxiv.org/abs/1502.00046)。代码示例:

优点1)适用于不同的人脸方向;2)对遮挡鲁棒;3)在GPU上工作得非常快;4)非常简单的训练过程。缺点1)CPU速度很慢;2)不能检测小脸,因为它训练数据的最小人脸尺寸为80×80,但是用户可以用较小尺寸的人脸数据自己训练检测器;3)人脸包围框甚至小于DLib HoG人脸检测器。

11.jpg (70.99 KB, 下载次数: 3)

下载附件  保存到相册

2018-11-11 20:12 上传

11.jpg

12.jpg (103.07 KB, 下载次数: 3)

下载附件  保存到相册

2018-11-11 20:12 上传

12.jpg

0.jpg (43.98 KB, 下载次数: 0)

下载附件  保存到相册

2018-11-11 20:12 上传

0.jpg

13.jpg (61.3 KB, 下载次数: 0)

下载附件  保存到相册

2018-11-11 20:12 上传

13.jpg

14.jpg (80.16 KB, 下载次数: 1)

下载附件  保存到相册

2018-11-11 20:12 上传

14.jpg

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7476.html

搜索