yolov5简单手势识别

实验目的

实验要求只需要识别五个简单的手势即可,分别对应的一下五个动作

动作对应标签名
点赞good
OKok
单手比心love
数字 5five
数字8eight

使用yolov5实现目标检测功能,有一下几个主要步骤

  1. 环境配置(包括conda、labelimg、yolov5的下载)
  2. 图片标签
  3. 模型训练
  4. 模型测试(图片+视频)

附上实验结果
在这里插入图片描述
在这里插入图片描述

环境配置

Anaconda安装

推荐使用Anconda,它是python的一个集成管理工具,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。

anconda安装不难,很多博主都有教程,可以看看他们的,不再赘述了

可以参考这个http://t.csdnimg.cn/vpmbv

Anconda的使用教程:

  • 在Anconda中主要使用的两个程序是Anaconda Prompt 和Anaconda Navigator。

  • Anaconda Prompt就是我们的cmd,以后的创建环境和切换环境,和pip安装各种包全在这里。
    (可以通过指令创建虚拟环境)

    python --version 查看python版本
    conda create -n env_name python=3.8 创建一个python版本为3.8的自命名虚拟环境
    conda remove -n env_name --all 移除自命名虚拟环境
    
  • Anaconda Navigator为可视化管理软件
    我们创建的环境和环境里的安装的包可以在Environments里查看,也可以在这里创建虚拟环境和移除虚拟环境,还可为每个独立的环境安装需要的包

Pycharm安装

PyCharm是使用最广泛的一种集成开发环境适用于Python编程语言。它对于代码的检索、提示和补全非常友好,同时便于跨平台开发。

官网下载地址:https://www.jetbrains.com/pycharm/

至于破解版自己想办法咯

注意在使用pycharm进行开发时,选择对应的conda环境

yolov5环境配置

步骤一:环境创建

打开anaconda prompt 控制台,创建一个自己的yolov5环境

conda create -n yolov5 python=3.9

再输入y,安装内容

激活环境

conda activate yolov5

步骤二:Pytorch安装

Pytorch的安装

安装pytorch之前,最好先配置清华镜像源,否则下载速度很慢

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

官网下载地址:https://pytorch.org/get-started/locally/

在官网选择对应的版本(在英伟达控制面版左下角的系统信息中的组件里查看自己合适哪个)

步骤三:yolov5下载

下载yolov5自身环境

Github地址:https://github.com/ultralytics/yolov5

将这个GitHub库的文件压缩包下载下来,并解压,会发现有一个requirements.txt文件

来到yolo-master目录下,输入命令安装剩余环境

pip install -r .\requirements.txt

将下载好的模型文件yolov5s.pt放到文件夹,重新运行测试文件

python detect.py

这样就完成了官方案例的检测,也证明你配置好了

Labelimg安装

注意要在yolov5的环境下

用gitbash打开,运行

git clone https://github.com/tzutalin/labelImg

然后

pip install pyqt5`

下好后,直接在.whl文件当前文件夹右键运行cmd,执行

pip install PyQt5-5.13.0-5.13.0-cp35.cp36.cp37.cp38-none-win_amd64.whl

然后安装lxml:

pip install lxml

然后打开labelimg的文件夹在cmd中执行

pyrcc5 -o libs/resources.py resources.qrc

然后再该文件夹下

python labelImg.py

启动labelimg

在使用labelimg的时候不要关闭命令行控制台哦

数据标注

创建一下的文件格式

master--images //存放你要进行打标签的图片--labels //存放标签结果

在labelimg中左边选择文件目录为master/images,存放目录为master/labels,将左侧save下方的东西点成yolov

在上侧选项栏中的view选择自动保存

接下来可以打标签啦

注意

  • w可以快速进入画框模式,d为下一个 a为上一个
  • 标签时记得将原有的默认标签换成你自己的(在labelimg中的data文件夹的txt文件)

模型训练

将yolov5-master的data文件夹中coco128.yaml复制一份并粘贴回该文件夹改个名handSize 并修改内容

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../handSize/master # dataset root dir
train: images  # train images (relative to 'path') 128 images
val: images  # val images (relative to 'path') 128 images
test:  # test images (optional)# Classes
names:0: good1: five2: eight3: love4: ok

将yolov5-master的model文件夹中yolov5s.yaml复制一份并粘贴回该文件夹改个名handSize并修改内容

nc: 5  # number of classes 修改分类数量

打开train.py修改这两行

其实就是修改文件路径为刚刚修改的那两个

parser.add_argument('--cfg', type=str, default=ROOT / 'models/handSize.yaml', help='model.yaml path') parser.add_argument('--data', type=str, default=ROOT / 'data/handSize.yaml', help='dataset.yaml path')

修改训练轮数

parser.add_argument('--epochs', type=int, default=100, help='total training epochs')

修改为gpu模式

parser.add_argument('--device', default='0', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')

然后执行train.py

注意环境!!!

训练需要一定时间,看大家电脑实力了

yolov5-master\runs\train中查看训练结果

模型检测

图片检测

将要检测的图片放在data/images

将刚刚训练的结果best.pt放在yolov5-master

修改detect.py

parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'best.pt', help='model path or triton URL')# 目标图片路径
parser.add_argument('--source', type=str, default=ROOT / 'data/images', help='file/dir/URL/glob/screen/0(webcam)')parser.add_argument('--data', type=str, default=ROOT / 'data/handSize.yaml', help='(optional) dataset.yaml path')parser.add_argument('--conf-thres', type=float, default=0.25, help='confidence threshold')

运行detect.py

实时视频检测

修改detect.py

parser.add_argument('--source', type=str, default='0', help='file/dir/URL/glob/screen/0(webcam)')
# 0 是指电脑默认的摄像头

运行detect.py

参考文献

  1. anaconda的安装http://t.csdnimg.cn/nCyrV
  2. labelimg的使用http://t.csdnimg.cn/asZTb
  3. labelimg的安装http://t.csdnimg.cn/MmXnk
  4. 训练教程【【一看就懂,一学就会】yolov5保姆级打标签、训练+识别教程】https://www.bilibili.com/video/BV1rT411f7Up?vd_source=85cf7c918a14ac5619e90f4590db906e
  5. 视频检测【从0开始运行YOLOV5:8、YOLOV5使用本机摄像头实时检测】https://www.bilibili.com/video/BV1qe4y1W7n9?vd_source=85cf7c918a14ac5619e90f4590db906e

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/585593.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP CO系统配置-与PS集成相关配置(机器人制造项目实例)

维护分配结构 配置路径 IMG菜单路径:控制>内部订单>实际过帐>结算>维护分配结构 事务代码 OKO6 维护结算参数文件 定义利润分析码

焊点保护,选择使用焊点保护UV胶的优势有哪些?

快速固化 UV胶在受到紫外光照射后能够迅速固化,使得焊点保护的过程更加迅速。这种快速固化的特性有助于提高生产效率,减少等待时间。 精准涂覆 由于UV胶在受到紫外光照射后才开始固化,操作者有足够的时间来进行精准的涂覆和调整位置。这使…

SpringBoot 请求参数

文章目录 一、简单参数实体参数数组集合参数日期参数Json参数路径参数 一、简单参数 原始方式 在原始的web程序中,获取请求参数,需要通过HttpServletRequest 对象手动获取。 SpringBoot方式 1.参数名与形参变量名相同,定义形参即可接收参数。…

云短信平台优惠活动 - 华为OD统一考试

OD统一考试 题解: Java / Python / C++ 题目描述 某云短信厂商,为庆祝国庆,推出充值优惠活动。 现在给出客户预算,和优惠售价序列,求最多可获得的短信总条数。 输入描述 第一行客户预算M,其中 0<=M<=100 第二行给出售价表,P1,P2,… Pn, 其中 1<=n<=100…

命令行创建Vue项目

Vue项目创建 1. 打开UI界面 在命令行中&#xff0c;执行如下指令&#xff1a; vue ui 2. 打开项目管理器 3. 创建项目 创建项目的过程&#xff0c;需要联网进行&#xff0c;这可能会耗时比较长的时间&#xff0c;请耐心等待。 windows的命令行&#xff0c;容易卡顿&#xff0c…

Android笔记(二十二):Paging3分页加载库结合Compose的实现网络单一数据源访问

Paging3 组件是谷歌公司推出的分页加载库。个人认为Paging3库是非常强大&#xff0c;但是学习难点比较大的一个库。Paging3组件可用于加载和显示来自本地存储或网络中更大的数据集中的数据页面。此方法可让移动应用更高效地利用网络带宽和系统资源。在具体实现上&#xff0c;Pa…

[mysql 基于C++实现数据库连接池 连接池的使用] 持续更新中

目背景 常见的MySQL、Oracle、SQLServer等数据库都是基于C/S架构设计的&#xff0c;即&#xff08;客户端/服务器&#xff09;架构&#xff0c;也就是说我们对数据库的操作相当于一个客户端&#xff0c;这个客户端使用既定的API把SQL语句通过网络发送给服务器端&#xff0c;MyS…

磁盘阵列raid

一、服务器硬件 cpu 、 主板 、内存、硬盘、网卡、电源、raid卡、风扇、远程管理卡 二、硬盘尺寸 目前生产环境中主流的两种类型硬盘 3.5寸 和 2.5寸 硬盘 2.5寸硬盘可以通过使用硬盘托架后适用于3.5寸硬盘的服务器&#xff0c;但是3.5寸没法转换成2.5寸 1.如何在服务器上…

前端三件套html/css/js的基本认识以及示例程序

简介 本文简要讲解了html,css,js.主要是让大家简要了解网络知识 因为实际开发中很少直接写html&css,所以不必过多纠结,了解一下架构就好 希望深度学习可以参考MDN和w3school HTML 基础 HTML (Hyper Text Markup Language) 不是一门编程语言,而是一种用来告知浏览器如…

共享单车之数据存储

文章目录 第1关&#xff1a;获取工作簿中的数据第2关&#xff1a;保存共享单车数据 第1关&#xff1a;获取工作簿中的数据 相关知识 获取工作簿中的信息&#xff0c;我们可以使用Java POI&#xff08;POI是一个提供API给Java程序对Microsoft Office格式档案读和写的功能&#…

学习笔记:R语言基础

文章目录 一、R语言简介二、选择R的原因三、R基本数据对象&#xff08;一&#xff09;向量&#xff08;二&#xff09;矩阵&#xff08;三&#xff09;数组&#xff08;四&#xff09;因子&#xff08;五&#xff09;列表&#xff08;六&#xff09;数据框&#xff08;七&#…

07-项目打包 React Hooks

项目打包 项目打包是为了把整个项目都打包成最纯粹的js&#xff0c;让浏览器可以直接执行 打包命令已经在package.json里面定义好了 运行命令&#xff1a;npm run build&#xff0c;执行时间取决于第三方插件的数量以及电脑配置 打包完之后再build文件夹下&#xff0c;这个…

【unity学习笔记】配置模型,实现眨眼和口型效果

一、vriod捏人 1.在vroidstudio软件中捏人 2.导出模型&#xff08;.vrm) 二、vrid导入unity的插件 1.在Git上搜索、打开univrm。 2.找到release页面找到合适的插件版本。&#xff08;VRM-0.116.0_0f6c&#xff09; 3.将univrm导入到工程中&#xff08;assets&#xff09;。 三…

查看IOS游戏FPS

摘要 本篇技术博客将介绍如何使用克魔助手工具来查看iOS游戏的帧率&#xff08;FPS&#xff09;。通过克魔助手&#xff0c;开发者可以轻松监测游戏性能&#xff0c;以提升用户体验和游戏质量。 引言 在iOS游戏开发过程中&#xff0c;了解游戏的帧率对于优化游戏性能至关重要…

第一届能源电子产业创新大赛太阳能光伏赛道在京顺利完成初赛评审

近日&#xff0c;第一届能源电子产业创新大赛太阳能光伏赛道初赛在北京顺利举行。本次太阳能光伏赛道赛事由工业和信息化部产业发展促进中心、宜宾市人民政府主办&#xff0c;宜宾市经济和信息化局、宜宾高新技术产业园区承办&#xff0c;中国国检测试控股集团股份有限公司协办…

【 C语言 】| C程序百例 - 绘制余弦曲线

【 C语言 】| C程序百例 - 绘制余弦曲线 时间&#xff1a;2023年12月29日12:56:29 文章目录 【 C语言 】| C程序百例 - 绘制余弦曲线1.要求2.问题分析与算法设计3.程序3-1.源码3-2.makefile 4.运行 1.要求 在屏幕上用"*"显示0~360的余弦曲线cos(x)曲线。 2.问题分析与…

代码随想录刷题 | Day1

今日学习目标 一、基础 数组 array类 模板类vector 数组是存放在连续内存空间上的相同类型数据的集合。 数组可以方便的通过下标索引的方式获取到下标下对应的数据。 需要两点注意的是 数组下标都是从0开始的。 数组内存空间的地址是连续的 而且大家如果使用C的话&…

【AIGC表情prompt】提示词练习技巧

表情类提示词练习技巧 医疗机器人&#xff0c;男人笑脸景深&#xff0c;数据&#xff0c;座标&#xff0c;12k,c4d渲染&#xff0c;高分辨率&#xff0c;,暖色调&#xff0c;高清对比 医疗机器人&#xff0c;男人微笑&#xff0c;景深&#xff0c;数据&#xff0c;座标&#xf…

nginx日志常见报错解决

目录 一&#xff1a;报错 二&#xff1a;php查看后台内容有的栏目出现502&#xff1f; 三&#xff1a;413 Request Entity Too Large? 四&#xff1a;Request Header Or Cookie Too Large 400 一&#xff1a;报错 upstream prematurely closed connection while reading r…

【C语言数组传参】规则详解

目录 数组传参介绍 数组传参规则 数组传参的实参 特殊情况一&#xff1a;sizeof&#xff08;数组名&#xff09; 特殊情况二&#xff1a;&数组名 数组传参的形参 数组传参使用数组名作为形参接收 形参如果是⼀维数组 形参如果是⼆维数组 数组传参使用指针作为形参…