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

这篇具有很好参考价值的文章主要介绍了人脸与关键点检测:YOLO5Face实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

人脸与关键点检测:YOLO5Face实战
Github:https://github.com/deepcam-cn/yolov5-face

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



一、设置

Step by step

克隆仓库,进入conda环境

git clone https://github.com/deepcam-cn/yolov5-face.git

conda activate pytorch-cifar

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

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

      "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_size
     0/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_size
     1/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)
人脸与关键点检测:YOLO5Face实战

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

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

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

  Epoch   gpu_mem       box       obj       cls  landmark     total   targets  img_size
   249/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:

人脸与关键点检测:YOLO5Face实战
实测2:
人脸与关键点检测:YOLO5Face实战

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

三、评估

上述模型训练完毕后,需要评估在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%)

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

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

参考:

https://blog.csdn.net/cliu1_16/article/details/120665458文章来源地址https://www.toymoban.com/news/detail-461820.html

到了这里,关于人脸与关键点检测:YOLO5Face实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenCV 入门教程:人脸检测和关键点定位

    人脸检测和关键点定位是计算机视觉中的重要任务,用于在图像或视频中自动检测人脸并定位人脸关键点,如眼睛、鼻子、嘴巴等。这项技术在人脸识别、表情分析、姿态估计等领

    2024年02月15日
    浏览(26)
  • pytorch实现AI小设计-1:Resnet50人脸68关键点检测

            本项目是AI入门的应用项目,后续可以补充内容完善作为满足个人需要。通过构建自己的人脸数据集,此项目训练集为4580张图片,测试集为2308张图片,使用resnet50网络进行训练,最后进行效果展示。本项目也提供了量化内容,便于在硬件上部署。         研究A

    2024年01月18日
    浏览(33)
  • 《数字图像处理》dlib人脸检测获取关键点,delaunay三角划分,实现人脸的几何变换warpping,接着实现两幅人脸图像之间的渐变合成morphing

           这学期在上《数字图像处理》这门课程,老师布置了几个大作业,自己和同学一起讨论完成后,感觉还挺有意思的,就想着把这个作业整理一下 :   目录 1.实验任务和要求 2.实验原理 3.实验代码 3.1利用人脸特征点检测工具dlib获取人脸关键点 目录 1.实验任务和要求

    2024年02月03日
    浏览(28)
  • 2D人脸关键点转3D人脸关键点的映射~头部姿态笔记

    对通过相机参数计算图像上的二维坐标到三维坐标的映射进行简单探讨。         学习的话直接看他们的就好,我仅是拾人牙慧,拿GPT写给自己看的,图也是直接搬运的别人画的,以下链接有很完善的理论研究和代码提供。 https://medium.com/@susanne.thierfelder/head-pose-estimation

    2024年02月04日
    浏览(33)
  • opencv-人脸关键点定位

    2024年02月12日
    浏览(36)
  • 人脸68、29、21、14、5关键点标注序号及对应关系

    最近需要用到solvePnP算法[1]通过人脸关键点求解人脸姿态,涉及到的数据集中关键点标注数量不统一,但网上使用solvePnP算法时人脸模型比较好找到的是68个关键点,因此需要找到模型的68个关键点中与其他几种数量关键点的对应关系。 目录 98关键点标注序号 68关键点标注序号

    2024年02月08日
    浏览(39)
  • 使用opencv自制一个YOLO常规数据和关键点数据的标注工具

    工具由opencv编写,可以直接生成YOLO所需要的标签(pose和常规标签) 代码放到了文章末尾,以及百度云下载链接 首先放一段实际操作的视频展示 yolov5数据集标注,yolo-pose数据集标注 按Q切换到下一张图像 按T直接退出 按Y删除当前图片和对应标签 按R隐藏当前内容,继续标注完

    2024年02月11日
    浏览(23)
  • 关键点检测SIFT算法笔记

            SIFT(Scale Invariant Feature Transform),尺度不变特征变换。具有旋转不变性、尺度不变性、亮度变化保持不变性,是一种非常稳定的局部特征。在目标检测和特征提取方向占据着重要的地位。         SIFT算法所查找到的关键点是一些很突出,不因光照、仿射变换和噪

    2024年02月16日
    浏览(32)
  • MediaPipe人体姿态、手指关键点检测

    Mediapipe是google的一个开源项目,用于构建机器学习管道 提供了16个预训练模型的案例:人脸检测、Face Mesh、虹膜、手、姿态、人体、人物分割、头发分割、目标检测、Box Tracking、Instant Motion Tracking、3D目标检测、特征匹配、AutoFlip、MediaSequence、YouTube-8M 肢体识别本质上还是分类

    2024年02月08日
    浏览(37)
  • Pytorch+Python实现人体关键点检测

    用Python+Pytorch工程代码对人体进行关键点检测和骨架提取,并实现可视化。 物体检测为许多视觉任务提供动力,如实例分割、姿态估计、跟踪和动作识别。它在监控、自动驾驶和视觉答疑中有下游应用。当前的对象检测器通过紧密包围对象的轴向包围框来表示每个对象。然后

    2024年02月09日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包