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 维护结算参数文件 定义利润分析码

Go语言中的包管理工具之Go Vendor的使用

GoLang 中常用的包管理的方式 常用的有三种 Go PathGo VendorGo Modules 关于 Go Vender 1 )概述 在2015年的时候,我们的另一个包管理工具Go Vendor就诞生了它诞生于 2015.8.19 ,是在Go的 1.5 版本当中引入的,它默认是关闭的我…

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

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

SpringBoot 请求参数

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

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

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

MySQL 索引详解

什么是索引 索引是帮助MySQL高效获取数据的数据结构。查看索引可以使用SHOW INDEX或EXPLAIN语句。 索引的工作原理 索引就像书的目录一样,当要查找书中的内容时,首先查看目录,通过目录可以快速定位内容的位置。 MySQL索引的工作方式也是一样的。当SQL语句执行查询时,优化器…

python统计学-矩估计法、极大似然估计法?

介绍 矩估计法 矩估计法是一种参数估计方法&#xff0c;通过使用样本矩来估计总体矩&#xff0c;从而得到参数的估计值。它基于样本观测值与总体矩之间的对应关系进行参数估计。 极大似然估计法 极大似然估计法是一种参数估计方法&#xff0c;通过最大化似然函数来确定参数…

命令行创建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格式档案读和写的功能&#…

前端DApp开发利器,Ant Design Web3 正式发布 1.0

在介绍 Ant Design Web3 之前,先简单说说 Web3 DApp(去中心化应用)。DApp 可以说是除了 AI 应用外当下最受前端独立开发者青睐的应用了。当然,在 ChatGPT 还没有火的时候,Web3 DApp 才是最火的。因为通过一个连接区块链的 DApp(去中心化应用)你可以获得如下能力: 💰交…

学习笔记: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;。 三…

某药业集团人才评价中心组织定位与职能描述

——科学梳理工作界面&#xff0c;全面提升工作效率 【导读】 很多公司存在部门职能不清&#xff0c;部门职能重叠的同时还有一部分职能无人承担&#xff0c;各部门、各岗位之间权责不清&#xff0c;相互推诿的现象严重&#xff0c;员工执行力差&#xff0c;整体部门工作效率…

QSPI Flash xip取指同时program过程中概率性出现usb播歌时断音

项目场景&#xff1a; USB Audio芯片&#xff0c;代码放到qspi flash中&#xff0c;执行代码时&#xff0c;客户会偶尔保存一些参数&#xff0c;即FPGA验证过程中&#xff0c;每隔10ms向flash info区烧写4个byte&#xff08;取指过程一直存在&#xff0c;且时隙软件不可控&…

查看IOS游戏FPS

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