YbFace:完全开源的人脸检测算法

Posted 阳光玻璃杯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了YbFace:完全开源的人脸检测算法相关的知识,希望对你有一定的参考价值。

YbFase(yolo base face detector),是一个借鉴了yolov3的网络结构,在多特征尺度下预测人脸框的人脸检测算法.并结合了yolov4使用的mish激活函数.该模型大小仅为7,8M,无论模型大小,还是准确率,还是执行速率都很有竞争力.

源码地址(github):

face_detect

如果对你有帮助,给他star鼓励下,谢谢!!!

完全开源

很多开源的人脸检测项目,或者没有训练代码,或者没有评估代码,而我的这个YbFace项目,包含了做人脸检测你需要的所有东西.

  • 训练代码
  • 测试代码
  • 计算ap的评估代码及其可视化
  • 模型可视化

模型

tensorboard绘制的模型结构图:

我绘制的模型结构图:

说明:

  • 基于resnet,Bottleneck是一个resnet单元.
  • 在三个特征map上检测人脸,分别是13*13, 26*26, 52*52,因此,每张图片最多能检测13*13+ 26*26+ 52*52个人脸.
  • 损失函数借鉴了yolov2
  • 激活函数使用了mish

train

首先,修改dataset.py中的数据集所在的路劲,修改为你的winderface所在路劲:

TRAIN_IMG_PATH = "/home/javer/work/dataset/widerface/WIDER_train/images/"
VAL_IMG_PATH = "/home/javer/work/dataset/widerface/WIDER_val/images/"
SPLIT_PATH = "/home/javer/work/dataset/widerface/wider_face_split"

训练命令:

python3.6 train.py -l 0.001 -e 10 -b 5


detailes: -l for learning rate, -e for epoes, -b for batch.
if you want train from last model, add -p True,like this: 

python3.6 train.py -l 0.001 -e 10 -b 5 -p True

可视化

当你开始训练,你可以在tensorboard查看损失函数的变化情况,同时,每隔一个epoe,会输出一张预测的图片,你可以根据预测的图片判断训练的效果:

损失函数收敛情况:

预测图片:

test

python3.6 test.py

eval

python3.6 eval.py -c 0.6 -t 0.5

details: -c for the confidence of box that contains face.
-t for thresh of IOU

check

查看测试数据集上检测的效果:

python3.6 check.py 

 

执行评估后,会在data目录下的eval下生成预测数据,然后我们需要在WiderFace-Eval-Python目录下,执行evaluation.py脚本,脚本会输出在wider face数据集easy,middle,hard上的ap值,并绘制准确率-召回率曲线

like this:

目前的ap情况

iou阈值为0.5时:

==================== Results ====================
Easy   Val AP: 0.7591958348540782
Medium Val AP: 0.6638570720830507
Hard   Val AP: 0.29491406020888183
=================================================

当iou阈值为0.3时

==================== Results ====================
Easy   Val AP: 0.8306507608970572
Medium Val AP: 0.7456867544852942
Hard   Val AP: 0.34469488372280677
=================================================

目前,损失还在下降,我也会不断更新更新的ap情况

shows

 

      

 

 

 

写在最后

I am still training and optimizing the model, Welcome to do it better together!

communicate with:
QQ group: 704153141

以上是关于YbFace:完全开源的人脸检测算法的主要内容,如果未能解决你的问题,请参考以下文章

人脸识别技术

人脸识别技术

用java写人脸识别算法都有哪些?

人脸识别基于HOG特征KNN算法实现人脸识别matlab源码

特征特征不变性尺度空间图像金字塔

特征,特征不变性,尺度空间与图像金字塔