【CV】10种轻量级人脸检测算法大PK | 代码集合开源

点击上方“小白学视觉”,选择加"星标"或“置顶”

重磅干货,第一时间送达3184eaa5be6a2e34907942a1d1861973.png

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

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

运行效果如下图所示:

cabbbf18d78f492e19dd356e3ec33953.png

耗时效果统计对比:75b322f958708b81d61b738d2fe8e37b.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

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

32d076fc9c38edd780213f0206b7a428.png

3e2658ace6ffd219d3db40a72b2209db.png

耗时对比如下图:

0717742f12a4fab5e3ed77509e03d88f.png

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

d18ee15ce4dc0ca86f55002e0d39ab97.png

b857362542d8ef173f8cb1b6369e20af.png

dd48bf7260ac5d132e1e4550d9da3b9b.png

81403c0ebc4e5d3871405ca0416bf162.png

耗时对比如下图:

cef0c378589ab8ca30177e191faae537.png

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

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

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

b66cf232d43c4f67271813aa40a5eed7.png

15a19776734c591b67a41e1b5841d42b.png

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值