YbFase(yolo base face detector),是一个借鉴了yolov3的网络结构,在多特征尺度下预测人脸框的人脸检测算法.并结合了yolov4使用的mish激活函数.该模型大小仅为7,8M,无论模型大小,还是准确率,还是执行速率都很有竞争力.
源码地址(github):
face_detect
如果对你有帮助,给他star鼓励下,谢谢!!!
很多开源的人脸检测项目,或者没有训练代码,或者没有评估代码,而我的这个YbFace项目,包含了做人脸检测你需要的所有东西.
tensorboard绘制的模型结构图:
我绘制的模型结构图:
说明:
首先,修改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,会输出一张预测的图片,你可以根据预测的图片判断训练的效果:
损失函数收敛情况:
预测图片:
python3.6 test.py
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
查看测试数据集上检测的效果:
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情况
communicate with:
QQ group: 704153141