随着深度学习的兴起,工业界和学术界越来越多的使用基于深度学习的方法,而不是传统的基于模板匹配,纹理提取或者像素积分图等方法。因为人脸检测本身并不属于特别复杂的任务,因此轻量级的深度学习模型即可满足该任务。本文汇总了六大开源的人脸检测项目。
作者:元峰
来源:AIZOO
虽说深度学习是个黑箱,但基于深度学习的通用目标检测算法(例 如 Faster-RCNN,SSD,YoloV3、 RetinaNet等)的检测效果和鲁棒性,远远的超过基于纹理、边缘、Harr特征、Sift特征的传统计算机视觉方法,而且近几年随着模型压缩、量化技术的进步,模型运行速度也越来越快。
对于通用的目标检测算法,以大家常用的 SSD 和 YoloV3 算法为例,因为算法在设计之初,是为Pascal VOC 或者 COCO这种 20 类 和 80 类的多类别任务设计的,因此其 backbone 网络,也就是特征提取网络一般使用 VGG16、Darknet53、ResNet18这种网络,这些网络的一个通用特点是,其卷积层的卷积核数目通常比较多(例如256,512),导致模型参数量动辄几千万,运算量巨大。
如果我们拿这些通用目标检测算法来检测一类,比如只检测人脸、行人或者车辆时,使用那么多的卷积核数量、那么深的网络其实是不必要的。如果要检测 80 个类别,可能需要更多参数量来拟合,但是对于一两个类别,其实是有点杀鸡用宰牛刀了,如果你的任务不复杂,却用了ResNet18\34这种网络,你会发现很多卷积核的激活,其实是 0,导致白白多增加了很多计算量。所以,针对特定的人脸检测任务,其实一些非常轻量级的网络即可满足任务要求。
元峰曾经写了一篇介绍南科大于仕琪老师的开源人脸检测项目的文章,有不少读者对该工作很质疑,认为模型太小,导致有误检测,于老师亲自现身回答了大家的质疑。
对于比赛刷榜,我们可以用很大的模型,例如某 AI 公司在 WiderFace上夺冠的模型,结构用 RetinaNet,backbone 用 ResNet152,另外,FPN结构也安排上,多模型融合安排上,更多的 anchor 组数安排上,这样的模型对于刷榜非常实用,但是在工业界非常不实用,假如要部署到 ARM 的嵌入式设备上,大概率直接卡死。
随着 AI 落地为王时代的到来,大家越来越注重精度和速度的权衡(trade off),本文精选了六大轻量级的开源人脸检测项目,并对其进行简单赏析和介绍。
言归正传,下面我们按照Github上star数目从高到低依次介绍。
模型结构也比较简单,就是一个轻量级的 SSD 架构,共四个定位层,而且借鉴了RetinFace的关键点方法,可以同时回归5个关键点。模型体积只有232万,体积仅有3.34M
该项目的最大亮点,其实是于老师搞了一个纯C++的推理版本,不依赖第三方深度学习库,非常有利于工程部署。
另外,该项目提供了NCNN、MNN、Caffe、Onnx、Opencv的推理代码,可以给我们部署项目提供大量参考样例。
另外,该 repo 还提供了人头检测、行人检测、车辆检测的代码和模型。
另外,笔者将六大框架打包下载好了,点击下方附件即可下载所有6大框架的代码和模型。
关于作者
我是元峰,互联网+AI领域的创业者,欢迎在微信搜索“AIZOO”关注我们的公众号AIZOO。
如果您是有算法需求,例如目标检测、人脸识别、缺陷检测、行人检测的算法需求,欢迎添加我们的微信号AIZOOTech与我们交流,我们团队是一群算法工程师的创业团队,会以高效、稳定、高性价比的产品满足您的需求。
如果您是算法或者开发工程师,也可以添加我们的微信号AIXZOOTech,请备注学校or公司名称-研究方向-昵称,例如“西电-图像算法-元峰”,元峰会拉您进我们的算法交流群,一起交流算法和开发的知识,以及对接项目。
关注元峰微信号“AIZOOTech”
更多算法模型相关请关注AIZOO专栏
文件名 | 大小 | 下载次数 | 操作 |
---|---|---|---|
【AIZOO整理】6大开源轻量级人脸检测器.zip | 171.48MB | 14 | 下载 |