对之前手势物体识别项目进行整理,【部分代码也加了注释】其他的项目后面会在慢慢整理,可以关注一波。【关键点预测采用坐标回归进行训练和预测,并不是采用的热力图】
更新记录:
√ 2022.3.07:手势物体识别功能
√ 2023.12.05:新增手部关键点训练代码
√ 2023.12.07:新增训练部分tensorboard绘图
环境:
pytorch1.7
tensorboard 2.6.0
文件夹说明
applications-->存放检测项目定义的函数
components-->
-->classify_imagenet:存放分类模型网络和权重文件及分类标签
-->hand_detect:存放yolov3手部检测网络和权重
-->hand_keypoints:存放关键点检测网络和权重
lib--->
-->hand_lib:存放一些定义的函数和配置文件
materials-->
-->audio:语音包(比如正在识别请等待、识别的物体是这之类的)【可以自己再录】
使用步骤
手势物体识别
1.下载三个权重文件,百度云:
链接:https://pan.baidu.com/s/1j0RdWoy75nk2aWNjlHgzhQ
提取码:yypn
权重说明: hand_416-2021-02-20.pt # 手部目标检测(不是关键点哦),放在components/hand_detect/weigths里ReXNetV1-size-256-wingloss102-0.122.pth # 21点关键点检测,放在components/hand_keypoints/weights里imagenet_size-256_20210409.pth # 分类检测,放在components/classify_imagenet/weights里
2.进入lib-->hand_lib-->cfg文件夹:
将下载的三个权重文件放在components中三个文件中的weights文件里面。
修改handpose.cfg配置文件:
修改说明【注意:填写完路径以后,一定不要在后面加注释,不然会报错,可以在上面或许下面加注释】,如果需要检测本地视频,可以去applications-->handpose_local_app.py直接找到VideoCaptrue,修改为自己的视频路径
detect_model_path= # 填写yolov3手部目标检测模型路径
handpose_x_model_path= # 关键点检测权重路径 classify_model_path = # 分类权重路径camera_id = 0 # 摄像头ID,0是自己笔记本的
4.运行main.py
可以看一下效果~~imagenet里没有剪刀这个类,我只是随便试了一下~
手部关键点训练
训练代码在train.py中。
可采用提供的预权重进行fine tune训练。
输入以下命令开始训练:
python train.py --model resnet_50 --train_path [数据集路径] --fintune_model 【fine tune模型路径】--batch_size 16
如果是fine tune训练,建议初始学习率(init_lr)设置为5e-4,否则建议设置为1e-3。
损失函数此次采用的是MSE,还可支持wing loss。
训练好的权重会保存在model_exp中,对应的tensorboard会存储在logs中【此处用的是均方误差做的评价指标】