【2020华为云AI实战营】MTCNN、dlib、OpenCv(haar+adaboost级联分类器)三种人脸检测工具比较

举报
报名成功 发表于 2020/06/29 23:05:07 2020/06/29
【摘要】 人脸检测技术在我们生活中经常被用到,人脸面部识别、年龄以及表情的识别都是以人脸为基础。目前常用的人脸检测工具有:MTCNN方式、dlib、OpenCV Haar级联分类器等方式。 本文将对MTCNN、dlib、OpenCV三种工具进行测试对比。

一、绪言:

    人脸检测技术在我们生活中经常被用到,人脸面部识别、年龄以及表情的识别都是以人脸为基础。目前常用的人脸检测工具有:MTCNN方式、dlib、OpenCV Haar级联分类器等方式

    人脸检测工具使用常见问题如下:

  •     安装时间长

  •     检测时间长

  •     图片中的较小人脸检测效果差

  •     图片中的侧面人脸检测效果差

  •     对图片中多张人脸无法全部检测出来等等问题,这些问题也同样是人脸检测算法面临的挑战。

    本文将对MTCNN、dlib、OpenCV三种工具进行测试对比。

二、工具简介:

  1. 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代替):

       官网: https://opencv.org/

        OpenCV是一个开源的计算机视觉库,它提供了很多函数,这些函数非常高效地实现了计算机视觉算法(最基本的滤波到高级的物体检测皆有涵盖)。

        OpenCV 的应用领域非常广泛,包括图像拼接、图像降噪、产品质检、人机交互、人脸识别、动作识别、动作跟踪、无人驾驶等。


三、实验对比比较:    

    实验环境: ModelArts  nootbook开发环境 - v100 GPU- TensorFlow 1.13

    耗时计算仅包含测试图片读取及代码库加载时间,不包含测试结果显示耗时


    1.正面单脸图片 实验

    1.1.MTCNN(单脸正面): 

        mtcnn_单脸.JPG

    上图是单脸图片的人脸检测,MTCNN耗时大概3s多(含模型加载等,与图片大小等亦有关,下同),含5个关键点,检测结果可见比较准确,但仍有少部分轮廓未能完全检测。

    

    1.2.dlib(单脸正面):

      dlib_单脸.JPG

      相对MTCNN来说,dlib单脸检测速度更快一些,但未能完全检测出全部脸轮廓,含68个关键点信息,但此处不显示。

    1.3.OpenCV(单脸正面):

        opencv_单脸.JPG

    相对MTCNN和dlib而言,OpenCV检测速度更快,定性来看,检测结果几乎能全部包含脸部轮廓,但有非脸部部分会被误认为是脸部。无关键点信息。


    2.正面多脸含小脸图片 实验

    2.1 MTCNN(多脸 正面 小脸): 

        mtcnn_多脸.JPG

    仅有小脸的boundding box检测出。可能是程序参数设置导致的,比如OpenCV工具默认有3个矩形框同时存在才认为匹配成功,下同

    速度较慢,单看小脸检测出的结果,准确度较高。


    2.2 dlib(多脸 正面 小脸):

        dlib_多脸.JPG

    仅有大脸的boundding box检测出。

    速度相对于MTCNN有所提升,单看大脸检测出的结果,准确度不如MTCNN。含68个关键点信息,但此处不显示。


    2.3 OpenCV(多脸 正面 小脸):

        opencv_多脸.JPG

    结果可见最小脸并没有检测出。

    速度仍是三者中最快的,准确度一般,和单脸正面图片检测类似,仍然会有非脸部分被误认为是脸部。


四、结果分析:

    综合定性比较来看:

  •     在检测准确度(检测框与真实脸部对比,非整体检测结果准确度)方面 MTCNN要好于dlib和OpenCV

  •     在检测速度方面,OpenCV(Haar+Adaboost)明显优于MTCNN和dlib

    以上仅为个人定性分析结果。如果需要定量分析可考虑计算预测bounding boxground truth bounding boxIoU等定量方式加以比较。


五、程序:

    1.MTCNN 

      mtcnn_程序.JPG

    2.dlib

      dlib_程序.JPG

    3.OpenCV

      opencv_程序.JPG


六、参考链接:

    MTCNN:  

    https://kpzhang93.github.io/MTCNN_face_detection_alignment/

    https://nbviewer.jupyter.org/github/huaweicloud/ModelArts-Lab/blob/master/notebook/DL_face_age_prediction/face_age_prediction.ipynb

    dlib: 

    https://nbviewer.jupyter.org/github/huaweicloud/ModelArts-Lab/blob/master/notebook/DL_face_detector/face_detection.ipynb

    OpenCV:

    https://bbs.huaweicloud.com/blogs/179012


【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。