【2020华为云AI实战营】MTCNN、dlib、OpenCv(haar+adaboost级联分类器)三种人脸检测工具比较
一、绪言:
人脸检测技术在我们生活中经常被用到,人脸面部识别、年龄以及表情的识别都是以人脸为基础。目前常用的人脸检测工具有:MTCNN方式、dlib、OpenCV Haar级联分类器等方式。
人脸检测工具使用常见问题如下:
安装时间长
检测时间长
图片中的较小人脸检测效果差
图片中的侧面人脸检测效果差
对图片中多张人脸无法全部检测出来等等问题,这些问题也同样是人脸检测算法面临的挑战。
本文将对MTCNN、dlib、OpenCV三种工具进行测试对比。
二、工具简介:
MTCNN:
官网:https://kpzhang93.github.io/MTCNN_face_detection_alignment/
MTCNN的安装和使用都十分简单,完成人脸区域检测人脸对齐及5个人脸关键点(双眼,鼻子,嘴角)检测但对于人脸识别,年龄表情等任务已经足够,所以使用十分普遍。
2.dlib:
官网: http://dlib.net/.
dlib是一个机器学习工具库,类似OpenCV,里面预置了一些开发好的传统机器学习算法和深度学习算法。
本案例使用dlib
工具库进行人脸区域检测和68个人脸关键点检测。
3.OpenCV(Haar+Adaboost,后文以OpenCV代替):
OpenCV是一个开源的计算机视觉库,它提供了很多函数,这些函数非常高效地实现了计算机视觉算法(最基本的滤波到高级的物体检测皆有涵盖)。
OpenCV 的应用领域非常广泛,包括图像拼接、图像降噪、产品质检、人机交互、人脸识别、动作识别、动作跟踪、无人驾驶等。
三、实验对比比较:
实验环境: ModelArts nootbook开发环境 - v100 GPU- TensorFlow 1.13
耗时计算仅包含测试图片读取及代码库加载时间,不包含测试结果显示耗时
1.正面单脸图片 实验
1.1.MTCNN(单脸正面):
上图是单脸图片的人脸检测,MTCNN耗时大概3s多(含模型加载等,与图片大小等亦有关,下同),含5个关键点,检测结果可见比较准确,但仍有少部分轮廓未能完全检测。
1.2.dlib(单脸正面):
相对MTCNN来说,dlib单脸检测速度更快一些,但未能完全检测出全部脸轮廓,含68个关键点信息,但此处不显示。
1.3.OpenCV(单脸正面):
相对MTCNN和dlib而言,OpenCV检测速度更快,定性来看,检测结果几乎能全部包含脸部轮廓,但有非脸部部分会被误认为是脸部。无关键点信息。
2.正面多脸含小脸图片 实验
2.1 MTCNN(多脸 正面 小脸):
仅有小脸的boundding box检测出。可能是程序参数设置导致的,比如OpenCV工具默认有3个矩形框同时存在才认为匹配成功,下同。
速度较慢,单看小脸检测出的结果,准确度较高。
2.2 dlib(多脸 正面 小脸):
仅有大脸的boundding box检测出。
速度相对于MTCNN有所提升,单看大脸检测出的结果,准确度不如MTCNN。含68个关键点信息,但此处不显示。
2.3 OpenCV(多脸 正面 小脸):
结果可见最小脸并没有检测出。
速度仍是三者中最快的,准确度一般,和单脸正面图片检测类似,仍然会有非脸部分被误认为是脸部。
四、结果分析:
综合定性比较来看:
在检测准确度(检测框与真实脸部对比,非整体检测结果准确度)方面 MTCNN要好于dlib和OpenCV
在检测速度方面,OpenCV(Haar+Adaboost)明显优于MTCNN和dlib
以上仅为个人定性分析结果。如果需要定量分析,可考虑计算预测bounding box与ground truth bounding box的IoU等定量方式加以比较。
五、程序:
1.MTCNN
2.dlib
3.OpenCV
六、参考链接:
MTCNN:
https://kpzhang93.github.io/MTCNN_face_detection_alignment/
dlib:
OpenCV:
https://bbs.huaweicloud.com/blogs/179012
- 点赞
- 收藏
- 关注作者
评论(0)