Github:https://github.com/deepcam-cn/yolov5-face

导读:居然花了一天时间把该项目复现,主要是折腾在数据集格式上,作者居然在train2yolo中居然把Widerface训练集(12000+张图)重新一张一张保存,不这么还出bug,原因是无法读到数据缓存;在评估阶段,val2yolo也没用上。搬运工,一个字,肝!


目录

  • 一、设置
    • Step by step
  • 二、训练
    • 2.1 准备数据:
    • 有关YOLO数据格式
  • 三、评估
  • 参考:

一、设置

Step by step

克隆仓库,进入conda环境

git clone https://github.com/deepcam-cn/yolov5-face.gitconda activate pytorch-cifar

测试模型
下载作者预训练的YOLO5m-face模型,并测试单张图片效果。运行detectface如下:

      "args": [// // // to run train2yolo:// "data/widerface/train",// "data/widerface/train/labels"// // // to run val2yolo:// "data/widerface",// "data/widerface/val/labels"// // to run detect_face// "--img-size", "640",// "--weights", "weights/yolov5m-face.pt",// to train on widerface// "CUDA_VISIBLE_DEVICES"," 0, ","--data", "data/widerface.yaml","--cfg", "models/yolov5s.yaml","--weights", "weights/yolov5s.pt"]

以上是launch.json的配置参数,分别对应几个任务。其中运行train2yolo.py,巨慢;val2yolo,可以忽略。

二、训练

2.1 准备数据:

推荐去官网http://shuoyang1213.me/WIDERFACE/
下载widerface数据集,分别下载train、val、test三个包。本人参考RetinaFace下载的数据集不全面。

由于官网没找到人脸关键点的标注文本,在开头git链接YOLO5face可以下载带有keypoint的annotation文件。整个文件结构如下:

(base) wqt@ser2024:NewProjects$ ln -s ~/Datasets/widerface  yolov5-face/data/
//yolov5-face
│   README.md
│   ...
│data
| └─widerface
│         └───test
|                 └───images
|                 └───labels
│         └───train
|                 └───images
|                 └───labels
|                      └───0..._1_5.jpg
|                      └───0..._1_5.txt
│         └───val

目录画得有点丑,但为了说明详细,也是拼了老命。

下载预训练好的yolo5检测模型,由于本工程基于的yolo版本比较旧(最新6.0版)久,下载链接参考:
https://github.com/ultralytics/yolov5/releases/tag/v4.0

准确读取数据路径,在widerface.yaml修改为:

train: /home/wqt/NewProjects/yolov5-face/data/widerface/train/labels
val: /home/wqt/NewProjects/yolov5-face/data/widerface/val/labels   # number of classes
nc: 1# class names
names: [ 'face']

运行train,没报错,佛祖保佑!

autoanchor: Analyzing anchors... anchors/target = 4.02, Best Possible Recall (BPR) = 0.9997
Image sizes 800 train, 800 test
Using 4 dataloader workers
Logging results to runs/train/exp12
Starting training for 250 epochs...Epoch   gpu_mem       box       obj       cls  landmark     total   targets  img_size0/249     4.65G    0.1032   0.03953         0    0.1396    0.2823        25       800: 100%|Epoch   gpu_mem       box       obj       cls  landmark     total   targets  img_size1/249     5.01G   0.08159   0.03674         0   0.02959    0.1479        15       800: 100%|

训练还挺快,一个epoch才几分钟,共250epoch。

有关YOLO数据格式

原始的widerface标注如下:

0--Parade/0_Parade_marchingband_1_849.jpg
1
449 330 122 149 0 0 0 0 0 0

转化为YOLO格式,如下:

0--Parade/0_Parade_marchingband_1_849.jpg
449 330 122 149 488.906 373.643 0.0 542.089 376.442 0.0 515.031 412.83 0.0 485.174 425.893 0.0 538.357 431.491 0.0 0.82

即:bbox (xywh) + (xi, yi, flag)

COCO keypoints转化为YOLO格式(17个人体关键点),以下图片对应的标注如下:

0 0.686445 0.531960 0.082891 0.323967 0.667188 0.399061 1.000000 0.670312 0.396714 2.000000 0.000000 0.000000 0.000000 0.678125 0.394366 2.000000 0.000000 0.000000 0.000000 0.689063 0.415493 2.000000 0.696875 0.415493 2.000000 0.682813 0.469484 2.000000 0.671875 0.483568 2.000000 0.671875 0.516432 2.000000 0.656250 0.504695 2.000000 0.695312 0.530516 2.000000 0.706250 0.523474 2.000000 0.698438 0.610329 2.000000 0.709375 0.603286 2.000000 0.710938 0.680751 2.000000 0.717187 0.671362 2.000000

训练了12h之后,实测结果如下:

  Epoch   gpu_mem       box       obj       cls  landmark     total   targets  img_size249/249     5.01G   0.03923   0.02193         0   0.00727   0.06844        18       800: Class      Images     Targets           P           R      mAP@.5  mAP@.5:.95: all    3.22e+03    3.96e+04       0.576       0.723       0.715        0.34

即在WiderFace上取得了mAP@0.5=71.5%,mAP@mean=0.34

实测1:


实测2:

使用缩小五官的效果图去测试,发现有不小误差,例如嘴角的两点偏差比较大。

三、评估

上述模型训练完毕后,需要评估在Widerface上的性能,运行test_widerface,并配置如下。

   //to test on the widerface"--weights", "runs/train/exp12/weights/best.pt","--save_folder", "./widerface_evaluate/widerface_txt/","--dataset_folder", "data/widerface/val/images/","--folder_pict", "data/widerface/val/wider_val.txt"

val2yolo.py跑了那么久,结果还是用原来的widerface/val,并且要修改代码如下:

  # for image_path in tqdm(glob.glob(os.path.join(testset_folder, '*'))):for image_path in tqdm(glob.glob(os.path.join(testset_folder, '*', "*.jpg"))):
(pytorch-cifar) wqt@ser2024:yolov5-face$ cd widerface_evaluate/
(pytorch-cifar) wqt@ser2024:widerface_evaluate$ python evaluation.py

进入评估程序,显示如下:

Reading Predictions : 100%|
Processing easy: 100%|
Processing medium: 100%|
Processing hard: 100%|
==================== Results ====================
Easy   Val AP: 0.9430954074066416
Medium Val AP: 0.9235452692977046
Hard   Val AP: 0.8268421552890463
=================================================

与作者训练的性能对比,在yolov5s情况下,取得:
Easy 94.3% <(94.67%)
Med 92.4% <(92.75%)
Easy 82.7% <(83.03%)

都比作者给出的情况稍微低一些。

参考:

https://blog.csdn.net/cliu1_16/article/details/120665458

人脸与关键点检测:YOLO5Face实战相关推荐

  1. 【项目实战课】基于Pytorch的RetinaFace人脸与关键点检测实战

    欢迎大家来到我们的项目实战课,本期内容是<基于Pytorch的RetinaFace人脸与关键点检测实战>. 所谓项目实战课,就是以简单的原理回顾+详细的项目实战的模式,针对具体的某一个主题 ...

  2. dlib库包的介绍与使用,opencv+dlib检测人脸框、opencv+dlib进行人脸68关键点检测,opencv+dlib实现人脸识别,dlib进行人脸特征聚类、dlib视频目标跟踪

    文章目录: 1 dlib库介绍 2 dlib人脸检测:绘制出人脸检测框 2.1 dlib人脸检测源码 2.2 opencv + dlib 人脸检测 2.3 dlib人脸检测总结 3 dlib人脸关键点 ...

  3. 400 fps!CenterFace+TensorRT部署人脸和关键点检测

    本文转载自知乎,为CenterFace原作者手把手教程,欢迎参考. https://zhuanlan.zhihu.com/p/106774468 近来,很多人在使用tensorrt部署centerfa ...

  4. 【项目实战课】基于Pytorch的PFLD人脸关键点检测实战

    欢迎大家来到我们的项目实战课,本期内容是<基于Pytorch的PFLD人脸关键点检测实战>.所谓项目课,就是以简单的原理回顾+详细的项目实战的模式,针对具体的某一个主题,进行代码级的实战讲 ...

  5. 人脸关键点检测综述(含论文、数据集、方法等)

    人脸关键点 人脸关键点检测是人脸识别和分析领域中的关键一步,它是诸如自动人脸识别.表情分析.三维人脸重建及三维动画等其它人脸相关问题的前提和突破口.近些年来,深度学习(http://www.rainc ...

  6. 计算机视觉未来的挑战,搜狗斩获ICPR 2020人脸关键点检测挑战赛冠军 计算机视觉技术持续领先...

    作为3D 人脸重建.人脸识别.表情迁移及美化等应用的核心基础技术,人脸关键点检测算法一直是工业界和学术界的研究热点. 近日,在第25届国际模式识别大会(ICPR 2020)举办的人脸106关键点检测挑 ...

  7. 【技术综述】人脸关键点检测的数据集与核心算法

    人脸关键点检测是诸如人脸识别.表情分析.三维人脸重建等其它人脸相关任务的基础.近些年来,深度学习方法已被成功应用到了人脸的关键点检测,本章将介绍深度学习方法在人脸关键点检测方向的研究.包括人脸关键点任 ...

  8. 视频教程-Windows版YOLOv4目标检测实战:人脸口罩佩戴检测-计算机视觉

    Windows版YOLOv4目标检测实战:人脸口罩佩戴检测 大学教授,美国归国博士.博士生导师:人工智能公司专家顾问:长期从事人工智能.物联网.大数据研究:已发表学术论文100多篇,授权发明专利10多 ...

  9. PyTorch深度学习实战 | 基于ResNet的人脸关键点检测

    人脸关键点检测指的是用于标定人脸五官和轮廓位置的一系列特征点的检测,是对于人脸形状的稀疏表示.关键点的精确定位可以为后续应用提供十分丰富的信息.因此,人脸关键点检测是人脸分析领域的基础技术之一.许多应 ...

最新文章

  1. 液体测量技术:从水到血液
  2. 导演李大为婚礼全过程(二)
  3. Azure DevOps+Docker+Asp.NET Core 实现CI/CD(一 .简介与创建自己的代理池)
  4. 批处理命令Start
  5. 聊聊职场中的学历问题
  6. android消息通知布局,Android Design
  7. MS509Team----------------Cknife
  8. RK3588超强8K视频输出NRV边缘计算盒 AI人工智能
  9. 给Android平板添加字体,以华为平板为例
  10. 黑客江湖之八大门派和东邪西毒南帝北丐中神通
  11. SqlServer 对象名无效的原因及解决方法
  12. 中国高校外语慕课平台职场英语期末考试答案
  13. 对方启用和留言是什么意思_美国人老说“How so”?到底啥意思?“怎么这样”吗?...
  14. AppStore上线规则
  15. 机器学习——K-Means聚类算法及其应用
  16. SQLServer2016(理论知识点与一些简单的习题汇总)
  17. 单电源运放滤波器设计
  18. 三大运营商发春,要向腾讯劫个色
  19. Python concurrent.future 使用教程及源码初剖
  20. WPF+VLC 写一个视频播放器(一、搭建环境)

热门文章

  1. Morden Enum 巧用C++结构体封装枚举,实现类型安全和操作封装
  2. 大数据24小时:链家研究院发布地产大数据产品Real Data,上海交大与依图共建AI联合实验室
  3. docker部署教程
  4. (一)双S型速度规划 原理
  5. 阿里云发布超级智能ET大脑 成全球产业AI拓荒者
  6. 石子合并——最经典的dp问题
  7. arduino 土壤温湿度传感器_怎样将Arduino与土壤湿度传感器FC-28连接起来
  8. Scratch 2.0的构建与二次开发手册
  9. git 忽视修改过的文件
  10. python中容易被忽视的三个点