正规的网站建设明细报价表,深圳 网站开发公司电话,wordpress文章设置到导航栏,宁波免费建站手部关键点检测3#xff1a;Pytorch实现手部关键点检测(手部姿势估计)含训练代码和数据集
目录
手部关键点检测3#xff1a;Pytorch实现手部关键点检测(手部姿势估计)含训练代码和数据集
1. 前言
2.手部关键点检测(手部姿势估计)方法
(1)Top-Down(自上而下)方法
(2)Bot…手部关键点检测3Pytorch实现手部关键点检测(手部姿势估计)含训练代码和数据集
目录
手部关键点检测3Pytorch实现手部关键点检测(手部姿势估计)含训练代码和数据集
1. 前言
2.手部关键点检测(手部姿势估计)方法
(1)Top-Down(自上而下)方法
(2)Bottom-Up(自下而上)方法
3.手部关键点检测数据集
4.手部关键点检测模型训练
1项目安装
2准备Train和Test数据
3配置文件configs
4开始训练
5Tensorboard可视化训练过程
5.手部关键点检测模型效果
6.手部关键点检测(推理代码)
7.手部关键点检测(训练代码)
8.手部关键点检测C/Android版本 1. 前言
本篇文章是项目《手部关键点检测(手部姿势估计)》系列文章之《Pytorch实现手部关键点检测(手部姿势估计)》项目基于Pytorch深度学习框架实现手部关键点检测(手部姿势估计)模型其中手部检测采用YOLOv5模型手部关键点检测是基于开源的HRNet进行改进构建了整套手部关键点检测的训练和测试流程为了方便后续模型工程化和Android平台部署项目支持高精度HRNet检测模型轻量化模型LiteHRNet和Mobilenet模型训练和测试并提供Python/C/Android多个版本 轻量化Mobilenet-v2模型在普通Android手机上可以达到实时的检测效果CPU(4线程)约50ms左右GPU约30ms左右 基本满足业务的性能需求。下表格给出HRNet以及轻量化模型LiteHRNet和Mobilenet的计算量和参数量以及其检测精度
模型input-sizeparams(M)GFLOPsAPHRNet-w32192×19228.48M5734.05M0.8570LiteHRNet18192×1921.10M182.15M0.8023Mobilenet-v2192×1922.63M529.25M0.7574
先展示一下手部检测以及手部关键点检测(手部姿势估计)效果 Android手部关键点检测(手部姿势估计)APP Demo体验
https://download.csdn.net/download/guyuealian/88418582
【尊重原创转载请注明出处】https://blog.csdn.net/guyuealian/article/details/133277726 更多项目《手部关键点检测(手部姿势估计)》系列文章请参考
手部关键点检测1手部关键点(手部姿势估计)数据集(含下载链接)https://blog.csdn.net/guyuealian/article/details/133277630手部关键点检测2YOLOv5实现手部检测(含训练代码和数据集)https://blog.csdn.net/guyuealian/article/details/133279222手部关键点检测3Pytorch实现手部关键点检测(手部姿势估计)含训练代码和数据集https://blog.csdn.net/guyuealian/article/details/133277726手部关键点检测4Android实现手部关键点检测(手部姿势估计)含源码 可实时检测https://blog.csdn.net/guyuealian/article/details/133277732手部关键点检测5C实现手部关键点检测(手部姿势估计)含源码 可实时检测https://blog.csdn.net/guyuealian/article/details/133277748 2.手部关键点检测(手部姿势估计)方法
手部关键点检测(手部姿势估计)的方法目前主流的方法主要两种一种是Top-Down自上而下方法另外一种是Bottom-Up自下而上方法
(1)Top-Down(自上而下)方法 将手部检测和手部关键点估计分离在图像上首先进行手部目标检测定位手部位置然后crop每一个手部图像再估计每个手部的关键点这类方法往往比较慢但姿态估计准确度较高。目前主流模型主要有CPNHourglassCPMAlpha PoseHRNet等。 (2)Bottom-Up(自下而上)方法 先估计图像中所有手部的关键点然后在通过Grouping的方法组合成一个一个手部实例因此这类方法在测试推断的时候往往更快速准确度稍低。典型就是COCO2016年人体关键点检测冠军Open Pose。 通常来说Top-Down具有更高的精度而Bottom-Up具有更快的速度就目前调研而言 Top-Down的方法研究较多精度也比Bottom-Up自下而上方法高。
本项目基于开源的HRNet进行改进关于HRNet项目请参考GitHub HRNet: https://github.com/leoxiaobin/deep-high-resolution-net.pytorch 3.手部关键点检测数据集
项目收集了三个手部检测数据集和三个手部关键点数据集
手部检测数据集Hand Detection Dataset共收集了三个Hand-voc1Hand-voc2和Hand-voc3总共60000张图片标注格式统一转换为VOC数据格式标注名称为hand可用于深度学习手部目标检测模型算法开发 手部关键点数据集Hand Keypoints DatasetHand Pose Estimation共收集了三个分别为HandPose-v1,HandPose-v2和HandPose-v3总共80000张图片标注了手部21个关键点可用于深度学习手部姿态检测模型算法开发。 关于手部关键点检测数据集说明请参考手部关键点(手部姿势估计)数据集(含下载链接) https://blog.csdn.net/guyuealian/article/details/133277630 4.手部关键点检测模型训练 整套工程项目基本结构如下
.
├── configs # 训练配置文件
├── data # 一些数据
├── libs # 一些工具库
├── pose # 姿态估计模型文件
├── work_space # 训练输出工作目录
├── demo.py # 模型推理demo文件
├── README.md # 项目工程说明文档
├── requirements.txt # 项目相关依赖包
└── train.py # 训练文件
1项目安装
项目依赖python包请参考requirements.txt使用pip安装即可项目代码都在Ubuntu系统和Windows系统验证正常运行请放心使用若出现异常大概率是相关依赖包版本没有完全对应
numpy1.16.3
matplotlib3.1.0
Pillow6.0.0
easydict1.9
opencv-contrib-python4.5.2.52
opencv-python4.5.1.48
pandas1.1.5
PyYAML5.3.1
scikit-image0.17.2
scikit-learn0.24.0
scipy1.5.4
seaborn0.11.2
tensorboard2.5.0
tensorboardX2.1
torch1.7.1cu110
torchvision0.8.2cu110
tqdm4.55.1
xmltodict0.12.0
basetrainer
basetrainer
pybaseutils0.9.4
pycocotools2.0.6项目安装教程请参考初学者入门麻烦先看完下面教程配置好开发环境 项目开发使用教程和常见问题和解决方法视频教程1 手把手教你安装CUDA和cuDNN(1)视频教程2 手把手教你安装CUDA和cuDNN(2)视频教程3 如何用Anaconda创建pycharm环境视频教程4 如何在pycharm中使用Anaconda创建的python环境 2准备Train和Test数据
下载手部关键点检测数据集HandPose-v1,HandPose-v2和HandPose-v3然后解压到本地
3配置文件configs
项目支持HRNet以及轻量化模型LiteHRNet和Mobilenet模型训练并提供对应的配置文件你需要修改对应配置文件的数据路径本篇以训练HRNet-w32为例子其配置文件在configs/coco/hrnet/w32_adam_hand_192_192.yaml修改该文件的训练数据集路径TRAIN_FILE支持多个数据集训练和测试数据集TEST_FILE的数据路径为你本地数据路径其他参数保持默认即可如下所示
WORKERS: 8
PRINT_FREQ: 10
DATASET:DATASET: custom_cocoTRAIN_FILE:- D:/dataset/HandPose-v1/train/train_anno.json- D:/dataset/HandPose-v2/train/train_anno.json- D:/dataset/HandPose-v3/train/train_anno.jsonTEST_FILE: D:/dataset/HandPose-v1/test/test_anno.jsonFLIP: trueROT_FACTOR: 45SCALE_FACTOR: 0.3SCALE_RATE: 1.25JOINT_IDS: [ ]FLIP_PAIRS: [ ]SKELETON: [ [ 0, 1 ], [ 1, 2 ], [ 2, 3 ], [ 3, 4 ], [ 0, 5 ], [ 5, 6 ], [ 6, 7 ], [ 7, 8 ], [ 5, 9 ], [ 9, 10 ], [ 10, 11 ], [ 11, 12 ], [ 9, 13 ], [ 13, 14 ], [ 14, 15 ], [ 15, 16 ], [ 13, 17 ], [ 17, 18 ], [ 18, 19 ], [ 19, 20 ], [ 0, 17 ] ]配置文件的一些参数说明请参考
参数类型参考值说明WORKERSint8数据加载处理的进程数PRINT_FREQint10打印LOG信息的间隔DATASETstrcustom_coco数据集类型目前仅支持COCO数据格式TRAIN_FILEList-训练数据集文件列表(COCO数据格式)支持多个数据集TEST_FILEstring-测试数据集文件(COCO数据格式),仅支持单个数据集FLIPboolTrue是否翻转图片进行测试可提高测试效果ROT_FACTORfloat45训练数据随机旋转的最大角度用于数据增强SCALE_FACTORfloat1.25图像缩放比例因子SCALE_RATEfloat0.25图像缩放率JOINT_IDSlist[ ][ ]表示所有关键点也可以指定需要训练的关键点序号IDFLIP_PAIRSlist[ ]图像翻转时关键点不受翻转影响的ID号SKELETONlist[ ]关键点连接线的序列列表用于可视化效果
4开始训练
修改好配置文件后就可以开始准备训练了
训练高精度模型HRNet-w48或者HRNet-w32
# 高精度模型HRNet-w48
python train.py -c configs/coco/hrnet/w48_adam_hand_192_192.yaml --workers8 --batch_size32 --gpu_id0 --work_dirwork_space/hand
# 高精度模型HRNet-w32
python train.py -c configs/coco/hrnet/w32_adam_hand_192_192.yaml --workers8 --batch_size32 --gpu_id0 --work_dirwork_space/hand训练轻量化模型LiteHRNet
# 轻量化模型LiteHRNet
python train.py -c configs/coco/litehrnet/litehrnet18_hand_192_192.yaml --workers8 --batch_size32 --gpu_id0 --work_dirwork_space/hand训练轻量化模型Mobilenetv2
# 轻量化模型Mobilenet
python train.py -c configs/coco/mobilenet/mobilenetv2_hand_192_192.yaml --workers8 --batch_size32 --gpu_id0 --work_dirwork_space/hand下表格给出HRNet以及轻量化模型LiteHRNet和Mobilenet的计算量和参数量以及其检测精度AP 高精度检测模型HRNet-w32AP可以达到0.8570但其参数量和计算量比较大不合适在移动端部署LiteHRNet18和Mobilenet-v2参数量和计算量比较少合适在移动端部署虽然LiteHRNet18的理论计算量和参数量比Mobilenet-v2低但在实际测试中发现Mobilenet-v2运行速度更快。轻量化Mobilenet-v2模型在普通Android手机上可以达到实时的检测效果CPU(4线程)约50ms左右GPU约30ms左右 基本满足业务的性能需求
模型input-sizeparams(M)GFLOPsAPHRNet-w32192×19228.48M5734.05M0.8570LiteHRNet18192×1921.10M182.15M0.8023Mobilenet-v2192×1922.63M529.25M0.7574
5Tensorboard可视化训练过程
训练过程可视化工具是使用Tensorboard使用方法在终端输入# 基本方法
tensorboard --logdirpath/to/log/
# 例如
tensorboard --logdirwork_space/hand/hrnet_w32_21_192_192_custom_coco_20231007_083128_2043/log
点击终端TensorBoard打印的链接即可在浏览器查看训练LOG信息等 5.手部关键点检测模型效果
demo.py文件用于推理和测试模型的效果填写好配置文件模型文件以及测试图片即可运行测试了demo.py命令行参数说明如下
参数类型参考值说明-c,--config_filestr-配置文件-m,--model_filestr-模型文件targetstr-骨骼点类型如hand,coco_person,mpiiimage_dirstrdata/image测试图片的路径video_filestr,int-测试的视频文件out_dirstroutput保存结果为空不保存thresholdfloat0.3关键点检测置信度devicestrcuda:0GPU ID
下面以运行HRNet-w32为样例其他模型修改--config_file或者--model_file即可
测试图片
python demo.py -c work_space/hand/hrnet_w32_21_192_192_custom_coco_20231007_083128_2043/w32_adam_hand_192_192.yaml -m work_space/hand/hrnet_w32_21_192_192_custom_coco_20231007_083128_2043/model/best_model_189_0.8570.pth --target hand --image_dir data/hand --out_dir output
测试视频文件
python demo.py -c work_space/hand/hrnet_w32_21_192_192_custom_coco_20231007_083128_2043/w32_adam_hand_192_192.yaml -m work_space/hand/hrnet_w32_21_192_192_custom_coco_20231007_083128_2043/model/best_model_189_0.8570.pth --target hand --video_file data/hand/test-video.mp4 --out_dir output 测试摄像头 python demo.py -c work_space/hand/hrnet_w32_21_192_192_custom_coco_20231007_083128_2043/w32_adam_hand_192_192.yaml -m work_space/hand/hrnet_w32_21_192_192_custom_coco_20231007_083128_2043/model/best_model_189_0.8570.pth --target hand --video_file 0 --out_dir output运行效果 6.手部关键点检测(推理代码)
手部关键点检测推理代码下载地址Pytorch实现手部关键点检测(手部姿势估计) Python推理代码
手部关键点检测推理代码内容包含
1手部关键点检测推理代码Pytorch 提供YOLOv5手部检测推理代码不包含训练代码提供手部关键点检测推理代码demo.py不包含训练代码提供高精度版本HRNet手部关键点检测不包含训练代码提供轻量化模型LiteHRNet,以及Mobilenet-v2手部关键点检测不包含训练代码提供训练好的模型HRNet-w32,LiteHRNet和Mobilenet-v2模型配置好环境可直接运行demo.py推理代码demo.py支持图片视频和摄像头测试 如果你需要配套的训练数据集和训练代码请查看下面部分 7.手部关键点检测(训练代码)
手部关键点检测训练代码下载地址 Pytorch实现手部关键点检测(手部姿势估计)》 含训练代码和数据集
手部关键点检测训练代码内容包含手部检测数据集和手部关键点数据集 手部关键点检测训练和测试代码
1手部检测数据集和手部关键点数据集 手部检测数据集包含Hand-voc1,Hand-voc2和Hand-voc3总共60000张图片标注格式统一转换为VOC数据格式标注名称为hand可用于深度学习手部目标检测模型算法开发。 手部关键点数据集包含HandPose-v1,HandPose-v2和HandPose-v3总共80000张图片标注了手部区域目标框box标注名称为hand同时也标注了手部21个关键点标注格式统一转换为COCO数据格式可直接用于深度学习手部关键点检测模型训练。 数据集详细说明请查看《手部关键点(手部姿势估计)数据集(含下载链接)》https://blog.csdn.net/guyuealian/article/details/133277630 2手部关键点检测训练代码和测试代码Pytorch 提供YOLOv5手部检测推理代码不包含训练代码提供整套完整的手部关键点检测项目工程代码包含手部关键点检测的训练代码train.py和推理测试代码demo.py提供高精度版本HRNet手部关键点检测训练和测试提供轻量化模型LiteHRNet,以及Mobilenet-v2手部关键点检测训练和测试根据本篇博文说明简单配置即可开始训练train.py提供训练好的模型HRNet-w32,LiteHRNet和Mobilenet-v2模型配置好环境可直接运行demo.py测试代码demo.py支持图片视频和摄像头测试 8.手部关键点检测C/Android版本
手部关键点检测4Android实现手部关键点检测(手部姿势估计)含源码 可实时检测https://blog.csdn.net/guyuealian/article/details/133277732手部关键点检测5C实现手部关键点检测(手部姿势估计)含源码 可实时检测https://blog.csdn.net/guyuealian/article/details/133277748 Android手部关键点检测(手部姿势估计)APP Demo体验https://download.csdn.net/download/guyuealian/88418582