# 基于计算机视觉手势识别控制系统YoLoGesture (利用YOLO实现)
![在这里插入图片描述](https://img-blog.csdnimg.cn/839b3c550ac74ac894e2f0395f61f780.png)
Streamlit在线服务器体验网址: [https://kedreamix-yologesture.streamlit.app/](https://kedreamix-yologesture.streamlit.app/)
HuggingFace在线服务器体验网址:[https://huggingface.co/spaces/Kedreamix/YoloGesture](https://huggingface.co/spaces/Kedreamix/YoloGesture)
- [1. 项目已完成的部分](#1-项目已完成的部分)
- [2. 部分尝试结果](#2-部分尝试结果)
- [3. 项目整体框架](#3-项目整体框架)
- [3.1. 数据集构建](#31-数据集构建)
- [3.2. 模型选择](#32-模型选择)
- [3.3. 代码实现](#33-代码实现)
- [4. 实验结果详情](#4-实验结果详情)
- [4.1. 训练权重文件下载](#41-训练权重文件下载)
- [4.2. 数据集概况](#42-数据集概况)
- [5. 环境配置](#5-环境配置)
- [6. 快速运行代码](#6-快速运行代码)
- [7. 训练预测细节解释](#7-训练预测细节解释)
- [7.1. 训练配置文件(重点)](#71-训练配置文件重点)
- [7.2. 训练自己数据集](#72-训练自己数据集)
- [7.3. 使用Tensorboard可视化结果](#73-使用tensorboard可视化结果)
- [7.4. 预测步骤](#74-预测步骤)
- [7.5. 评估步骤](#75-评估步骤)
- [8. Streamlit 项目部署](#8-streamlit-项目部署)
- [8.1. 本地运行](#81-本地运行)
- [8.2. 检测方法](#82-检测方法)
- [8.3. 选择模型以及参数](#83-选择模型以及参数)
- [9. 参考Reference](#9-参考reference)
- [10. 代码权重可复现,已开源(求🌟🌟🌟)](#10-代码权重可复现已开源求)
## 1. 项目已完成的部分
- [x] 数据集的构建
- [x] 代码的基本运行和训练
- [x] 增加数据集 800 -> 1600
- [x] 利用Mosaic数据增强,但是结果不好,之后训练不会采用,除非数据足够多
- [x] 增加yaml文件,利用yaml配置所有参数
- [x] 提高图片的输入shape,从256x256 -> 416x416
- [x] 由于结果不理想,使用部分自制数据集替换,数据集总数不变
- [x] 添加yolov4 tiny 轻量化模型
- [x] 增加注意力机制,可以比轻量化模型得到更不错的结果
<!-- 使用MobileNet作为backbone,轻量化模型 使用yolov5 或者 yolox 改进方法 -->
## 2. 部分尝试结果
- [x] 使用Mosaic 结果较差
- [x] 在运行过程中结果十分差,原因是数据集标注出现错误,会重新修改数据集
- [x] 用SGD的结果没有Adam好
- [x] front的数据集需要重新修改才能得到更好的结果
- [x] 使用tiny模型速度更快,结果虽然差一点,但是只是一个速度与精度的trade off
## 3. 项目整体框架
1、 了解项目研究的背景以及其意义,学习其中的创新点和科研价值。
2、 使用python语言对项目中的代码进行编写。研究项目源代码,理解项目工程的代码结构、原理及其功能。
3、 学习深度学习算法。理解卷积神经网络的相关概念,包括神经元系统、局部感受野、权值共享和卷积神经网络总体结构;了解目前常见的目标检测方法和YOLOv4算法框架,以及基于YOLOv4的手势识别算法。
4、 设计并制作针对本项目手势控制数据集,并使用数据增广的方式对数据集进行扩充,同时使用图像处理的方法包括中值滤波、阈值分割等对数据进行预处理。
5、 训练模型,对目标检测性能进行测试。了解实验环境以及评价标准,测试本项目研究的手势识别算法的实验结果,然后通过采用控制变量方法对手势识别算法进行多组实验,以评估其在不同环境下的识别效果,使用验证集对手势识别算法的精度和速度进行性能测试。
6、 总结本项目的研究工作,对基于无人机的手势识别演剧提供创新点与发展建议。
### 3.1. 数据集构建
1. 设计并制作针对本项目手势控制数据集,对数据集进行分类。
![在这里插入图片描述](https://img-blog.csdnimg.cn/5b3c7cc2c58c404987d54d9a2f5bb68d.png)
2. 使用Labelimg标注工具设计针对本项目的手势数据集,对数据集进行标注。
![在这里插入图片描述](https://img-blog.csdnimg.cn/3312206223674362b64026836184e3e4.png)
### 3.2. 模型选择
在前期的模型选择中,简单的选择了YOLOv4的模型进行训练和测试
**YOLOv4 = CSPDarknet53(主干) + SPP** **附加模块(颈** **) +** **PANet** **路径聚合(颈** **) + YOLOv3(头部)**
![img](https://pdf.cdn.readpaper.com/parsed/fetch_target/699143cdb334ecfc63caf8192472490c_0_Figure_1.png)
### 3.3. 代码实现
- [x] 主干特征提取网络:DarkNet53 => CSPDarkNet53
- [x] 特征金字塔:SPP,PAN
- [x] 训练用到的小技巧:Mosaic数据增强、Label Smoothing平滑、CIOU、学习率余弦退火衰减
- [x] 激活函数:使用Mish激活函数
- [x] 增加yaml配置文件,只需要修改配置文件即可
- [x] 添加detect.py,利用此进行半自动标注,可以方便标注其他类似于对应👋的数据集
- [x] 修改成命令行运行的快速模式,很方便,快速运行和理解
- [x] 利用streamlit部署到服务器上,可以随时使用,在线demo [https://kedreamix-yologesture.streamlit.app/](https://kedreamix-yologesture.streamlit.app/)
- [ ] ......
## 4. 实验结果详情
| 训练数据集 | 权值文件名称 | 迭代次数 | Batch-size | 图片shape | 平均准确率 | mAP 0.5 | fps |
| :--------: | :----------------------------------------------------------: | :------: | :--------: | :-------: | :--------: | :-----: | ----- |
| Gesture v1 | yolo4_gesture_weights.pth | 150 | 4->8 | 256x256 | 61.65 | 51.66 | |
| Gesture v2 | yolo4tiny_gesture_SE.pth | 100 | 64->32 | 416x416 | 83.6 | 95.18 | 76.08 |
| Gesture v2 | yolo4tiny_gesture_CBAM.pth | 100 | 64->32 | 416x416 | 89.35 | 98.85 | 70.01 |
| Gesture v2 | yolo4tiny_gesture_ECA.pth | 100 | 64->32 | 416x416 | 88.37 | 96.26 | 77.19 |
| Gesture v2 | yolo4tiny_gesture.pth | 100 | 64->32 | 416x416 | 87.01 | 95.86 | 81.81 |
| Gesture v2 | yolo4_gesture_weightsv2.pth | 100 | 4->8 | 256x256 | 84.51 | 90.77 | 24.21 |
| Gesture v3 | [yolov4_tiny.pth](https://github.com/Kedreamix/YoloGesture/releases/download/v1.0/yolov4_tiny.pth) | 150 | 64->32 | 416x416 | 75.05 | 91.30 | |
| Gesture v3 | [yolov4_SE.pth](https://github.com/Kedreamix/YoloGesture/releases/download/v1.0/yolov4_SE.pth) | 150 | 64->32 | 416x416 | 78.06 | 90.13 | |
| Gesture v3 | [yolov4_CBAM.pth](https://github.com/Kedreamix/YoloGesture/releases/download/v1.0/yolov4_CBAM.pth) | 150 | 64->32 | 416x416 | 91.09 | 94.97 | |
| Gesture v3 | [yolov4_ECA.pth](https://github.com/Kedreamix/YoloGesture/releases/download/v1.0/yolov4_ECA.pth) | 150 | 64->32 | 416x416 | 94.58 | 83.24 | |
| Gesture v3 | [yolov4_weights_ep150_416.pth](https://github.com/Kedreamix/YoloGesture/releases/download/v1.0/yolov4_weights_ep150_416.pth) | 150 | 64->32 | 416x416 | 95.145 | 98.35 | |
| Gesture v3 | [yolov4_weights_ep150_608.pth](https://github.com/Kedreamix/YoloGesture/releases/download/v1.0/yolov4_weights_ep150_608.pth) | 150 | 64->32 | 608x608 | 93.64 | 97.23 | |
> Gesture v1中存在数据集问题,所以模型结构不好
>
> Gesture v2中重新修改数据集
>
> Gesture v3中修改front数据集
Batch-Size 64->32是指在�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
1、资源内容:基于计算机视觉手势识别控制系统YoLoGesture (利用YOLO实现)+数据集+源代码+文档说明 2、代码特点:内含运行结果,不会运行可私信,参数化编程、参数可方便更改、代码编程思路清晰、注释明细,都经过测试运行成功,功能ok的情况下才上传的。 3、适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 4、作者介绍:某大厂资深算法工程师,从事Matlab、Python、C/C++、Java、YOLO算法仿真工作10年;擅长计算机视觉、 目标检测模型、智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、智能控制、路径规划、无人机等多种领域的算法仿真实验,更多源码,请上博主主页搜索。 -------------------------------------------------------------------------- -
资源推荐
资源详情
资源评论
收起资源包目录
YoloGesture-main(2).zip (99个子文件)
YoloGesture-main
yolo_anchors.txt 79B
voc_annotation.py 5KB
gen_annotation.py 2KB
Pipfile 341B
kmeans_for_anchors.py 6KB
2007_val.txt 8KB
yolov4-gesture-tutorial.ipynb 87KB
predict.py 10KB
.devcontainer
devcontainer.json 1KB
utils
utils.py 2KB
__init__.py 1B
utils_bbox.py 12KB
utils_map.py 35KB
dataloader.py 14KB
utils_fit.py 5KB
callbacks.py 2KB
nets
__init__.py 1B
CSPdarknet.py 7KB
yolotiny_training.py 25KB
yolo_tiny.py 4KB
yolo_training.py 25KB
attention.py 4KB
CSPdarknet53_tiny.py 5KB
yolo.py 7KB
model_data
gesture.yaml 941B
yolo_anchors.txt 85B
yolotiny_anchors.txt 49B
.gitattributes 42B
simhei.ttf 9.3MB
gesture_classes.txt 53B
utils_coco
get_map_coco.py 5KB
coco_annotation.py 4KB
get_yaml.py 292B
img
front.jpg 99KB
anticlockwise.jpg 104KB
back.jpg 91KB
right.jpg 107KB
clockwise.jpg 110KB
down.jpg 108KB
left.jpg 106KB
up.jpg 134KB
VOCdevkit
VOC2007
ImageSets
Main
val.txt 696B
test.txt 0B
README.md 24B
trainval.txt 7KB
train.txt 6KB
Annotations
3.xml 521B
2.xml 521B
1.xml 520B
4.xml 521B
README.md 18B
5.xml 521B
JPEGImages
2.jpg 11KB
1.jpg 4KB
5.jpg 5KB
3.jpg 15KB
4.jpg 12KB
summary.py 648B
2007_train.txt 73KB
requirements.txt 234B
get_map.py 6KB
logs
loss_2022_04_28_14_54_17
events.out.tfevents.1651128857.LAPTOP-IE5MVR15.24536.0 699KB
epoch_loss.txt 2KB
epoch_val_loss.txt 2KB
epoch_loss.png 29KB
loss_2022_04_27_12_50_47
epoch_loss.txt 2KB
events.out.tfevents.1651063849.274e119c63fb.1015.0 186KB
epoch_val_loss.txt 2KB
epoch_loss.png 27KB
loss_2022_04_27_08_48_16
events.out.tfevents.1651049298.fef10e9dbba1.425.0 134KB
epoch_loss.txt 2KB
epoch_val_loss.txt 2KB
epoch_loss.png 27KB
loss_2022_04_27_10_38_48
events.out.tfevents.1651055931.9b45dd4991ae.367.0 136KB
epoch_loss.txt 2KB
epoch_val_loss.txt 2KB
epoch_loss.png 26KB
gesture_loss_2021_11_14_22_04_00
epoch_val_loss_2021_11_14_22_04_00.txt 3KB
epoch_loss_2021_11_14_22_04_00.png 26KB
epoch_loss_2021_11_14_22_04_00.txt 3KB
loss_2022_04_28_00_40_54
events.out.tfevents.1651106457.117e69507361.564.0 121KB
epoch_loss.txt 2KB
epoch_val_loss.txt 2KB
epoch_loss.png 27KB
loss_2022_05_02_14_57_57
events.out.tfevents.1651503480.437fb01f4bb0.370.0 699KB
epoch_loss.txt 2KB
epoch_val_loss.txt 2KB
epoch_loss.png 29KB
README.md 30B
gesture.streamlit.py 15KB
detect.py 2KB
.gitignore 16B
instructions.md 375B
YOLOv4-study学习资料md 1KB
train.py 32KB
packages.txt 27B
kmeans_for_anchors.jpg 41KB
README.md 28KB
yolo.py 21KB
共 99 条
- 1
资源评论
- 染兮夕2024-02-23资源和描述一致,质量不错,解决了我的问题,感谢资源主。
- Mike.Yun2024-03-13资源内容详尽,对我有使用价值,谢谢资源主的分享。
机器学习的喵
- 粉丝: 486
- 资源: 1252
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- 文件批量改名神器10.0一款简单易用的批量文件重命名工具(已注册PRO版本).rar
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
- MyBatis动态SQL是一种强大的特性,它允许我们在SQL语句中根据条件动态地添加或删除某些部分,从而实现更加灵活和高效的数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功