人脸检测算法_10种轻量级人脸检测算法大PK 代码开源

↑ 点击 蓝字  关注极市平台 e7dfc8d0ab2a10cac8f6c24048c6f472.gif 作者丨nihate 来源丨AIZOO 编辑丨极市平台

极市导读

 

本文整理了最近一年之内的轻量级人脸检测算法,独立编写一个包含多种轻量级人脸检测算法集合的程序,对它们进行了汇总整理,以及效果的对比。共有10种人脸检测和1个人脸关键点检测。>>加入极市CV技术交流群,走在计算机视觉的最前沿

最近在AIZOO 里看到轻量级人脸检测算法大盘点的文章,里面还提供了Github源码地址,我就把它们逐个下载到本地Win10-CPU机器上,调试通过运行。

Github链接:https://github.com/hpc203/10kinds-light-face-detector-align-recognition

去年在Github下载过一个包含6种人脸检测的程序,分别是Pyramidbox,DSFD,S3FD,TinyFace,FaceBox,MTCNN,但是这些算法大多是重量级的网络模型,它在一幅图片上的人脸检测结果和运行耗时统计直方图如下。

运行效果如下图所示:

8d55081c75cf348ce5882e29fafd28fe.png

耗时效果统计对比:

ecbcf00757afe99a96b54861d418db4c.png

可以看到PyramidBox,DSFD,S3FD,TinyFace这4个模型是非常耗时的,对于比赛刷榜,我们可以用这种很大的模型,但是在工业界非常不实用,假如要部署到 ARM 的嵌入式设备上,大概率直接卡死。

因此我就整理了最近一年之内的轻量级人脸检测算法的程序,独立编写一个包含多种轻量级人脸检测算法集合的程序。PyTorch是我最喜欢的深度学习框架,在部署模型的前向推理时,我更喜欢用Opencv的dnn模块。因而,我收集到的轻量级人脸检测算法的程序如果是基于PyTorch框架的,我就不会对代码做较大的改动,如果程序是基于Caffe, Tensorflow或者Darknet的,我会把程序改写成用Opencv的dnn模块做人脸检测。最后我整理了10种人脸检测算法,它们分别是:

  • Ultra-Light-Fast-Generic-Face-Detector,程序里简写为ultraface

  • LFFD:A Light and Fast Face Detector for Edge Devices,程序里简写为lffdface

  • CenterFace, 程序里简写为centerface

  • DBFace, 程序里简写位dbface

  • RetinaFace, 程序里简写为retinaface

  • MTCNN, 程序里简写为mtcnn

  • SSD, 程序里简写为ssdface

  • facebox,程序里简写为facebox

  • yoloface,程序里简写为yoloface

  • 于仕琪老师提出的libfacedetection, 程序里简称为libface

此外,我编写的程序里还包含 PFLD: A Practical Facial Landmark Detector,它是一个简单、快速、超高精度人脸特征点检测算法。到此一共有10种人脸检测和1个人脸关键点检测的程序,我用面向对象的思想把每一种人脸检测算法写成一个类的形式,里面包含构造函数__init__和成员函数detect。最后,编写一个主函数,来做这10种人脸检测算法在同一幅图上的人脸检测结果和运行耗时的比较。我编写的这套程序在github上的地址是

https://github.com/hpc203/10kinds-light-face-detector-align-recognition

我分别测试了两幅图片,第一幅图片的检测结果和运行耗时统计直方图如下:6ea33159b1bbca605f4db18a7932373f.png91ab465a8c8dc20311472518fbbdfc41.png

耗时对比如下图:

88a716eacfd825ccd9d75c688fb5365c.png

第2幅图片的检测结果和运行耗时统计直方图如下:

3d1cec79f875c7c9d226cb619b4565cb.png2676a09ccc602eec47cbbc5f2eecce1d.png455bc496cfbc3cac66a77ebcf09a0625.png4ebc0e590998a9be809c5d86823d5840.png

耗时对比如下图:

547606ea65a4b9da36151f09e9f97be9.png

这两幅测试图片有鲜明代表性,一幅是只有2个人脸,另一幅是有好多个人脸的。ssdface和libface的运行速度最快,但是在有密集人脸的场景里,它们漏检了很多人脸。综合两幅图片的检测结果,考虑检测准确率和运行耗时的折中权衡,retinaface和lffdface是最优选择。retinaface运行耗时虽然比lffdface的要略长一点,但是retinaface的输出里有5个关键点。

在我的程序里还有提取人脸特征向量和计算人脸特征向量距离的模块,这两个模块再加上前面的人脸检测和关键点检测(做人脸对齐)的模块,这样就组成了人脸检测+人脸对齐+人脸识别,这时候你就可以构造一个实时的人脸识别系统。具体实现方式可以参见github代码里的README.md。程序有不足的地方,还请同行多多指教。

推荐阅读

  • OpenCV中支持的人脸检测方法整理与汇总

  • 人脸关键点检测的数据集与核心方法发展综述

  • 人脸关键点检测综述(含论文、数据集、方法等)

a7468fde976a7fa42c4ec8dfc30d08d3.png

添加极市小助手微信(ID : cvmart2),备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳),即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群:每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~ f160bb5709b9aba46d233cb62e7566a2.png △长按添加极市小助手 9f68fc37f38417e5f062b95f86dcfa99.png △长按关注极市平台,获取 最新CV干货 觉得有用麻烦给个在看啦~   2c456fd6a89801951620f72931418a28.gif
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值