【大作业-09】基于YOLOV5的手势识别系统

该文章已生成可运行项目,

毕设系列-基于YOLOV5的手势识别系统

我们之前做过一期基于Yolov5的口罩检测系统(手把手教你使用YOLOV5训练自己的目标检测模型-口罩检测-视频教程_dejahu的博客-优快云博客),里面的代码是基于YOLOV5 6.0开发的,并且是适用其他数据集的,只需要修改数据集之后重新训练即可,非常方便,但是有些好兄弟是初学者,可能不太了解数据的处理,所以我们就这期视频做个衍生系列,主要是希望通过这些系列来教会大家如何训练和使用自己的数据集。

本期我们带来的内容是基于YOLOV5的手势识别系统,我们将会训练得到能识别10种常用手势的模型,废话不多说,还是先看效果。

B站视频:毕设系列-检测专题-基于YOLOV5的手势识别系统_哔哩哔哩_bilibili

代码地址:YOLOV5-hand-42: 基于YOLOV5的手势识别系统 (gitee.com)

数据集和训练好的模型地址: YOLOV5手势识别数据集+代码+模型2000张标注好的数据+教学视频-深度学习文档类资源-优快云文库

image-20220305112626887

image-20220305112644529

考虑到有的朋友算力不足,我这里也提供了标注好的数据集和训练好的模型,获取方式是通过优快云付费下载,资源地址如下:

YOLOV5手势识别数据集+代码+模型2000张标注好的数据+教学视频-深度学习文档类资源-优快云文库

需要远程调试的小伙伴和课程设计订做的小伙伴可以加QQ 3045834499,价格公道,童叟无欺。

下载代码

代码的下载地址是:YOLOV5-hand-42: 基于YOLOV5的手势识别系统 (gitee.com)

image-20220305143233902

配置环境

不熟悉pycharm的anaconda的小伙伴请先看这篇csdn博客,了解pycharm和anaconda的基本操作

如何在pycharm中配置anaconda的虚拟环境_dejahu的博客-优快云博客_如何在pycharm中配置anaconda

anaconda安装完成之后请切换到国内的源来提高下载速度 ,命令如下:

conda config --remove-key channels
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
pip config set global.index-url https://mirrors.ustc.edu.cn/pypi/web/simple

首先创建python3.8的虚拟环境,请在命令行中执行下列操作:

conda create -n yolo5 python==3.8.5
conda activate yolo5

pytorch安装(gpu版本和cpu版本的安装)

实际测试情况是YOLOv5在CPU和GPU的情况下均可使用,不过在CPU的条件下训练那个速度会令人发指,所以有条件的小伙伴一定要安装GPU版本的Pytorch,没有条件的小伙伴最好是租服务器来使用。

GPU版本安装的具体步骤可以参考这篇文章:2021年Windows下安装GPU版本的Tensorflow和Pytorch_dejahu的博客-优快云博客

需要注意以下几点:

  • 安装之前一定要先更新你的显卡驱动,去官网下载对应型号的驱动安装
  • 30系显卡只能使用cuda11的版本
  • 一定要创建虚拟环境,这样的话各个深度学习框架之间不发生冲突

我这里创建的是python3.8的环境,安装的Pytorch的版本是1.8.0,命令如下:

conda install pytorch==1.8.0 torchvision torchaudio cudatoolkit=10.2 # 注意这条命令指定Pytorch的版本和cuda的版本
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cpuonly # CPU的小伙伴直接执行这条命令即可
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch # 30系显卡的小伙伴执行这里的指令

安装完毕之后,我们来测试一下GPU是否

image-20210726172454406

pycocotools的安装

后面我发现了windows下更简单的安装方法,大家可以使用下面这个指令来直接进行安装,不需要下载之后再来安装

pip install pycocotools-windows

其他包的安装

另外的话大家还需要安装程序其他所需的包,包括opencv,matplotlib这些包,不过这些包的安装比较简单,直接通过pip指令执行即可,我们cd到yolov5代码的目录下,直接执行下列指令即可完成包的安装。

pip install -r requirements.txt
pip install pyqt5
pip install labelme

数据处理

实现准备处理好的yolo格式的数据集,一般yolo格式的数据是一张图片对应一个txt格式的标注文件。

image-20220219192930908

标注文件中记载了目标的类别 中心点坐标 和宽高信息,如下图所示:

image-20220219193042855

记住这里的数据集位置,在后面的配置文件中我们将会使用到,比如我这里数据集的位置是:C:/Users/chenmingsong/Desktop/hand/hand_gesture_dataset

配置文件准备

  • 数据配置文件的准备

    配置文件是data目录下的hand_data.yaml,只需要将这里的数据集位置修改为你本地的数据集位置即可。

    image-20220305112800839

  • 模型配置文件的准备

    模型的配置文件主要有三个,分别是hand_yolov5s.yamlhand_yolov5m.yamlhand_yolov5l.yaml,分别对应着yolo大中小三个模型,主要将配置文件中的nc修改为我们本次数据集对应的10个类别即可。

    image-20220305112923940

模型训练

模型训练的主文件是train.py,下面的三条指令分别对应着小中大三个模型的训练,有GPU的同学可以将设备换为0,表示使用0号GPU卡,显存比较大的同学可以将batchsize调整为4或者16,训练起来更快。

python train.py --data hand_data.yaml --cfg hand_yolov5s.yaml --weights pretrained/yolov5s.pt --epoch 100 --batch-size 2 --device cpu
python train.py --data hand_data.yaml --cfg hand_yolov5l.yaml --weights pretrained/yolov5l.pt --epoch 100 --batch-size 2
python train.py --data hand_data.yaml --cfg hand_yolov5m.yaml --weights pretrained/yolov5m.pt --epoch 100 --batch-size 2

训练过程中会出现下面的进度条

image-20220219202818016

等待训练完成之后训练结果将会保存在runs/train目录下,里面有各种各样的示意图供大家使用。

image-20220219202857929

模型使用

模型的使用全部集成在了detect.py目录下,你按照下面的指令指你要检测的内容即可

 # 检测摄像头
 python detect.py  --weights runs/train/exps/weights/best.pt --source 0  # webcam
 # 检测图片文件
  python detect.py  --weights runs/train/exps/weights/best.pt --source file.jpg  # image 
 # 检测视频文件
   python detect.py --weights runs/train/exps/weights/best.pt --source file.mp4  # video
 # 检测一个目录下的文件
  python detect.py --weights runs/train/exps/weights/best.pt path/  # directory
 # 检测网络视频
  python detect.py --weights runs/train/exps/weights/best.pt 'https://youtu.be/NUsoVlDFqZg'  # YouTube video
 # 检测流媒体
  python detect.py --weights runs/train/exps/weights/best.pt 'rtsp://example.com/media.mp4'  # RTSP, RTMP, HTTP stream                            

比如以我们的口罩模型为例,如果我们执行python detect.py --weights runs/train/exps/weights/best.pt --source data/images/0023.png的命令便可以得到这样的一张检测结果。

0023

构建可视化界面

可视化界面的部分在window.py文件中,是通过pyqt5完成的界面设计,在启动界面前,你需要将模型替换成你训练好的模型,替换的位置在window.py的第60行,修改成你的模型地址即可,如果你有GPU的话,可以将device设置为0,表示使用第0行GPU,这样可以加快模型的识别速度嗷。

image-20220219202323877

现在启动看看效果吧。

找到我

你可以通过这些方式来寻找我。

B站:肆十二-

优快云:肆十二

知乎:肆十二

微博:肆十二-

现在关注以后就是老朋友喽!

image-20211212195912911

本文章已经生成可运行项目
基于YOLOV5手势识别系统源码(高分毕设项目).zip,个人经导师指导并认可通过的高分设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做大作业、毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 基于YOLOV5手势识别系统源码(高分毕设项目).zip基于YOLOV5手势识别系统源码(高分毕设项目).zip基于YOLOV5手势识别系统源码(高分毕设项目).zip基于YOLOV5手势识别系统源码(高分毕设项目).zip基于YOLOV5手势识别系统源码(高分毕设项目).zip基于YOLOV5手势识别系统源码(高分毕设项目).zip基于YOLOV5手势识别系统源码(高分毕设项目).zip基于YOLOV5手势识别系统源码(高分毕设项目).zip基于YOLOV5手势识别系统源码(高分毕设项目).zip基于YOLOV5手势识别系统源码(高分毕设项目).zip基于YOLOV5手势识别系统源码(高分毕设项目).zip基于YOLOV5手势识别系统源码(高分毕设项目).zip基于YOLOV5手势识别系统源码(高分毕设项目).zip基于YOLOV5手势识别系统源码(高分毕设项目).zip基于YOLOV5手势识别系统源码(高分毕设项目).zip基于YOLOV5手势识别系统源码(高分毕设项目).zip基于YOLOV5手势识别系统源码(高分毕设项目).zip基于YOLOV5手势识别系统源码(高分毕设项目).zip基于YOLOV5手势识别系统源码(高分毕设项目).zip基于YOLOV5手势识别系统源码(高分毕设项目).zip基于YOLOV5手势识别系统源码(高分毕设项目).zip基于Y
### 基于YOLOv5手势识别实现方法 #### 数据准备 为了构建一个有效的手势识别系统数据集的质量至关重要。通常情况下,需要收集大量的手部图片并标注出手的位置以及对应的手势类别[^1]。 #### 模型训练 使用YOLOv5作为基础框架来检测图像或视频流中的手部区域。此过程涉及调整预训练模型参数以适应特定的数据分布,从而提高对手部位置预测的准确性。对于手势种类较多的情况(如超过十种),可能还需要进一步优化网络结构或是增加更多的卷积层以便更好地捕捉细微差别[^3]。 #### 特征处理与分类 一旦完成了手部定位的任务之后,则可以针对这些被框选出来的ROI(region of interest)做更深入的信息挖掘工作——即所谓的“特征工程”。这一步骤里会涉及到诸如手指数目统计、关节角度测量等一系列操作;最终目的是为了让后续用于区分各类别之间差异性的机器学习算法获得更加优质的输入源材料[^2]。 #### 应用场景拓展 考虑到实际应用场景下的复杂度变化多端,因此所设计出来的产品不仅要能满足基本功能上的要求外,在面对光照条件不佳或者是存在遮挡物的情况下也应保持良好表现力。此外,随着新类型动作不断涌现,整个解决方案还需具备良好的灵活性和可维护性特点,方便后期升级迭代。 ```python import torch from models.experimental import attempt_load from utils.general import non_max_suppression, scale_coords from utils.datasets import letterbox def detect_gesture(image_path): device = 'cuda' if torch.cuda.is_available() else 'cpu' model = attempt_load('yolov5s.pt', map_location=device) img0 = cv2.imread(image_path) img = letterbox(img0)[0] img = img[:, :, ::-1].transpose(2, 0, 1).copy() img = torch.from_numpy(img).to(device) img = img.float() / 255.0 pred = model(img.unsqueeze(0))[0] det = non_max_suppression(pred, conf_thres=0.4, iou_thres=0.5)[0] if len(det): det[:, :4] = scale_coords(img.shape[1:], det[:, :4], img0.shape).round() for *xyxy, conf, cls in reversed(det): label = f'{model.names[int(cls)]} {conf:.2f}' plot_one_box(xyxy, img0, label=label, color=(0, 255, 0)) return img0 ```
评论 20
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肆十二

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值