手部关键点检测2:YOLOv5实现手部检测(含训练代码和数据集)
目录
手部关键点检测2:YOLOv5实现手部检测(含训练代码和数据集)
1. 前言
2. 手部检测数据集说明
(1)手部检测数据集
(2)自定义数据集
3. 基于YOLOv5的手部检测模型训练
(1)YOLOv5安装
(2)准备Train和Test数据
(3)配置数据文件
(4)配置模型文件
(5)重新聚类Anchor(可选)
(6)开始训练
(7)可视化训练过程
(8)常见的错误
4. Python版本手部检测效果
5. 手部检测和手部关键点检测(Python/C++/Android)
6.项目源码下载
1. 前言
手部关键点检测(手部姿势估计)的方法与人体关键点检测的方法类似,目前主流的方法主要两种:一种是Top-Down(自上而下)方法,另外一种是Bottom-Up(自下而上)方法;项目采用Top-Down(自上而下)方法,即分为两阶段,先进行手部检测,找到所有的手部框,然后再估计每只手的手部关键点;本篇文章是手部关键点检测的第一阶段,即手部检测模型算法开发,项目基于开源YOLOv5项目,实现一个高精度的手部检测算法( Hand Detection)
目前,基于YOLOv5s的手部检测精度平均值mAP_0.5=0.99919,mAP_0.5:0.95=0.79306。为了能部署在手机Android平台上,本人对YOLOv5s进行了简单的模型轻量化,并开发了一个轻量级的版本yolov5s05_416和yolov5s05_320模型;轻量化模型在普通Android手机上可以达到实时的检测效果,CPU(4线程)约30ms左右,GPU约25ms左右 ,基本满足业务的性能需求。下表格给出轻量化模型的计算量和参数量以及其检测精度
模型 | input-size | params(M) | GFLOPs | mAP_0.5 | mAP_0.5:0.95 |
yolov5s | 640×640 | 7.2 | 16.5 | 0.99919 | 0.79306 |
yolov5s05 | 416×416 | 1.7 | 1.8 | 0.99885 | 0.78112 |
yolov5s05 | 320×320 | 1.7 | 1.1 | 0.99826 | 0.77658 |
先展示一下手部检测以及手部关键点检测(手部姿势估计)效果:
Android手部关键点检测(手部姿势估计)APP Demo体验:
【尊重原创,转载请注明出处】
更多项目《手部关键点检测(手部姿势估计)》系列文章请参考:
- 手部关键点检测1:手部关键点(手部姿势估计)数据集(含下载链接)
- 手部关键点检测2:YOLOv5实现手部检测(含训练代码和数据集)
- 手部关键点检测3:Pytorch实现手部关键点检测(手部姿势估计)含训练代码和数据集
- 手部关键点检测4:Android实现手部关键点检测(手部姿势估计)含源码 可实时检测
- 手部关键点检测5:C++实现手部关键点检测(手部姿势估计)含源码 可实时检测
2. 手部检测数据集说明
(1)手部检测数据集
目前收集了三个手部检测数据集:Hand-voc1,Hand-voc2和Hand-voc3,总共60000+张图片;标注格式统一转换为VOC数据格式,标注名称为hand,可用于深度学习手部目标检测模型算法开发,关于手部数据集说明,请参考: 手部关键点(手部姿势估计)数据集(含下载链接)
(2)自定义数据集
如果需要增/删类别数据进行训练,或者需要自定数据集进行训练,可参考如下步骤:
- 采集图片,建议不少于200张图片
- 使用Labelme等标注工具,对目标进行拉框标注:labelme工具:GitHub - wkentaro/labelme: Image Polygonal Annotation with Python (polygon, rectangle, circle, line, point and image-level flag annotation).
- 将标注格式转换为VOC数据格式,参考工具:labelme/labelme2voc.py at main · wkentaro/labelme · GitHub
- 生成训练集train.txt和验证集val.txt文件列表
- 修改engine/configs/voc_local.yaml的train和val的数据路径
- 重新开始训练
3. 基于YOLOv5的手部检测模型训练
(1)YOLOv5安装
训练Pipeline采用YOLOv5: GitHub - ultralytics/yolov5: YOLOv5
标签:YOLOv5,训练,--,检测,手部,yolov5s,关键点 From: https://blog.51cto.com/u_15764210/9014686