最强六大开源轻量级人脸检测项目分析

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

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

decce994a059c098c264e66878180410.png

随着深度学习的兴起,工业界和学术界越来越多的使用基于深度学习的方法,而不是传统的基于模板匹配,纹理提取或者像素积分图等方法。因为人脸检测本身并不属于特别复杂的任务,因此轻量级的深度学习模型即可满足该任务。本文汇总了六大开源的人脸检测项目。

虽说深度学习是个黑箱,但基于深度学习的通用目标检测算法(例 如 Faster-RCNN,SSD,YoloV3、 RetinaNet等)的检测效果和鲁棒性,远远的超过基于纹理、边缘、Harr特征、Sift特征的传统计算机视觉方法,而且近几年随着模型压缩、量化技术的进步,模型运行速度也越来越快。

对于通用的目标检测算法,以大家常用的 SSD 和 YoloV3 算法为例,因为算法在设计之初,是为Pascal VOC 或者 COCO这种 20 类 和 80 类的多类别任务设计的,因此其 backbone 网络,也就是特征提取网络一般使用 VGG16、Darknet53、ResNet18这种网络,这些网络的一个通用特点是,其卷积层的卷积核数目通常比较多(例如256,512),导致模型参数量动辄几千万,运算量巨大。

如果我们拿这些通用目标检测算法来检测一类,比如只检测人脸、行人或者车辆时,使用那么多的卷积核数量、那么深的网络其实是不必要的。如果要检测 80 个类别,可能需要更多参数量来拟合,但是对于一两个类别,其实是有点杀鸡用宰牛刀了,如果你的任务不复杂,却用了ResNet18\34这种网络,你会发现很多卷积核的激活,其实是 0,导致白白多增加了很多计算量。所以,针对特定的人脸检测任务,其实一些非常轻量级的网络即可满足任务要求。

元峰曾经写了一篇介绍南科大于仕琪老师的开源人脸检测项目的文章(人脸检测速度近2000FPS,就在刚刚,这位硬核老师将训练代码开源了),有不少读者对该工作很质疑,认为模型太小,导致有误检测,于老师亲自现身回答了大家的质疑。

0cf55224a1f19c27283ee87de3128e5e.png

对于比赛刷榜,我们可以用很大的模型,例如某 AI 公司在 WiderFace上夺冠的模型,结构用 RetinaNet,backbone 用 ResNet152,另外,FPN结构也安排上,多模型融合安排上,更多的 anchor 组数安排上,这样的模型对于刷榜非常实用,但是在工业界非常不实用,假如要部署到 ARM 的嵌入式设备上,大概率直接卡死。

随着 AI 落地为王时代的到来,大家越来越注重精度和速度的权衡(trade off),本文精选了六大轻量级的开源人脸检测项目,并对其进行简单赏析和介绍。

言归正传,下面我们按照Github上star数目从高到低依次介绍。

01.libfacedetection

Github star: 9.3k

作者:于仕琪

链接:https://github.com/ShiqiYu/libfacedetection

模型参数量:232万,体积 3.34M

前几天元峰已经对该项目进行过一次介绍了,该项目使用一个SSD架构的人脸检测模型,在酷睿 i7 的CPU上,320x240分辨率下可以达到296.21 FPS,下图是该项目在不同分辨率和单线程下的速度概览。

2a984d3c9afc8564f1195571eb8007c1.png

模型结构也比较简单,就是一个轻量级的 SSD 架构,共四个定位层,而且借鉴了RetinFace的关键点方法,可以同时回归5个关键点。模型体积只有232万,体积仅有3.34M

713d6c509ca57a41f1cfbc3d68cc54dd.png

该项目的最大亮点,其实是于老师搞了一个纯C++的推理版本,不依赖第三方深度学习库,非常有利于工程部署。


02.Ultra-Light-Fast-Generic-Face-Detector-1MB

Github star: 4.7k

作者:Linzaer

链接https://github.com/Linzaer/Ultra-Light-Fast-Generic-Face-Detector-1MB

体积:1.04M, int8量化后 300KB

该模型是针对边缘计算设备设计的人脸检测模型。并提供了精简网络和RFB网络两种,在320x240的输入分辨率下 90~109 FPS左右。

该模型的结构与上述于老师的模型结构非常相似,也是 SSD 架构,共有4个定位层,模型结构如下图所示。

5f2df558e2be14e9fe4b94468e943d3d.png

另外,该项目提供了NCNN、MNN、Caffe、Onnx、Opencv的推理代码,可以给我们部署项目提供大量参考样例。


03 .A-Light-and-Fast-Face-Detector-for-Edge-Devices

Github star: 897

作者:YonghaoHe

链接https://github.com/YonghaoHe/A-Light-and-Fast-Face-Detector-for-Edge-Devices

体积:6.1 M

从名字可以看出来,这也是一个面向边缘设备的检测模型,该模型同样是 SSD架构的,不过相比前述两个模型,该模型有八个定位层,分别对应tiny、small、medium和large四个尺度,backbone 网络共有 25 个卷积层。

d9d0454c5960fe14cc5ff8819d826fdd.png

该模型在 Nvidia TX2下,320x240分辨率下可以达到 50.92 FPS。

另外,该 repo 还提供了人头检测、行人检测、车辆检测的代码和模型。


04.CenterFace

Github star: 607

作者:Star-Clouds

链接https://github.com/Star-Clouds/CenterFace

体积:7.3 M、同精度小模型 2.3M

CenterFace是 anchor free 的模型结构,应该算是CenterNet针对人脸检测任务的特例,这一点上跟RetinaFace作为RetinaNet的在人脸任务的特例有异曲同工之妙,而且该模型同时回归了五个关键点。

该网络的backbone是MobileNetV2,额外添加了FPN结构。

5e839fe3958933b36ab256ff8d51c0f5.png

下图是CenterFace的速度,在 2080TI上可以仅4.4ms。Anchor Free的模型,没有NMS的过程,也能节省很多后处理时间。

53c0cd5e4c5c9884871601bd3dd92af2.png


05 .DBFace 

Github star: 195

作者:dlunion

链接https://github.com/dlunion/DBFace

体积:7.03M

DBFace是一个Anchor Free的网络结构,模型原理可以说与CenterFace非常相似。这里不再展开详细的介绍了。


06.RetinaFace MobileNet0.25

Github star: 不好定义(6.4k)

作者:yangfly

链接https://github.com/deepinsight/insightface/issues/669

体积:1.68M

这个项目来自于知名的InsightFace项目,该项目在Github有6.4k star,InsightFace提出了知名的RetinaFace、ArcFace算法,而且开源了详细的训练代码和预训练模型,可以说是非常良心的开源项目。

但是 RetinaFace(应该是受 RetianNet 的结构启发而成)本身的 backbone 是 ResNet50,yangfly 大佬将其替换为了 MobileNet0.25,模型大小仅1.68MB。RetinaFace 的模型结构如下,这里的 backbone网络是 MobileNet 0.25。

438192541200e4c30b66dbbf8aa5b5c0.png

        根据作者的开源结果,我们对以上6大开源轻量级人脸检测做一个速度和准确度的对比汇总。

名称
模型大小(MB)
速度(FPS)
WiderFace Easy
WiderFace MediumWiderFace Hard
libfacedetection
3.34
296(i7CPU, 320x240)
0.7730.7180.485
UltraLightFace
1.04
109( 320x240)
0.8530.8190.539
LightFast
5.81
131(Titan xp, 640x480)
0.910
0.881
0.780
CenterFace
7.3
227(2080TI,640x480)
0.9310.9240.870
DBFace7.03

      0.905
0.896
0.794
RetinaFace MobileNet0.25
1.68

0.887
0.87
0.791

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

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

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

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

下载3:OpenCV实战项目20讲

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

交流群

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

ee5b7710d458fbf55b7e78a5baca07fc.png

2a0099829671eb6debf5478e4c92e2b6.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值