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: good
  1: five
  2: eight
  3: love
  4: 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023海内外零知识证明学习资料汇总(二)(深入理解零知识证明篇)

工欲善其事,必先利其器 Web3开发中,各种工具、教程、社区、语言框架.。。。 种类繁多,是否有一个包罗万象的工具专注与Web3开发和相关资讯能毕其功于一役? 参见另一篇博文👉 2024最全面且有知识深度的web3开发工具、web3学习项目…

PACC:数据中心网络的主动 CNP 生成方案

PACC:数据中心网络的主动 CNP 生成方案 文章目录 PACC:数据中心网络的主动 CNP 生成方案PACC算法CNP数据结构PACC参数仿真结果参考文献 PACC算法 CNP数据结构 PACC参数 仿真结果 PACC Hadoop Load0.2 的情况: PACC Hadoop Load0.4 的情况&a…

旅游平台网页前后端

功能清单 游客功能 用户注册、登录登录权限拦截按名称搜索房间支付流程查看订单信息和状态评论预定过的房间,并自动修改订单状态查看统计剩余房间数量,数量为0时不可预定 管理员功能 房间分类管理 类型的删除、修改、查询(准备添加增添功能…

vivo 数据库备份恢复系统演化

作者:vivo 互联网数据库团队 - Han Chaobing 介绍 vivo 数据库备份恢复功能的演化,以及对备份文件的功能扩展。 一、概述 vivo互联网领域拥有的数据库组件分别为 MySQL、MongoDB、TiDB 等,其中MySQL集群占比绝大部分, MongoDB …

轻松提升软件性能:快速学习和使用Memcached

目录 1、前言 2、Memcached的简介 3、Memcached的安装与配置 4、Memcached的数据结构 5、Memcached的常用命令 6、Memcached的高级特性 7、Memcached在系统中如何使用 8、结语 1、前言 Memcached是一个广泛用于提升软件性能的开源内存缓存系统。它可以有效地减少对数据…

iOS问题记录 - iOS 17通过NSUserDefaults设置UserAgent无效(续)

文章目录 前言开发环境问题描述问题分析1. 准备源码2. 定位源码3. 对比源码4. 分析总结 解决方案补充内容1. UserAgent的组成2. UserAgent的设置优先级 最后 前言 在上篇文章中对该问题做了一些判断和猜测,并给出了解决方案。不过,美中不足的是没有进一…

JAVA开发中几个常用的lambda表达式!记得收藏起来哦~

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

[蓝桥杯知识学习] 树链

DFS序 什么是DFS序 怎么求DFS序 进入操作,将有计数 出:可以理解为,没有孩子可以去了(不能,向下行动:对应于程序里的入栈),所以回到父结点(向上行动,对应于程…

关于解决引用第三方依赖突然失效的问题解决办法

目录 背景回顾解决办法结果 背景 出现该问题的背景是这样的。在项目中需要支持加载pdf文档的功能。所以采取了使用第三方PDF库的方法来实现加载pdf文档。集成完后,功能是正常的。后来过了一段时间,发现加载pdf的功能不能正常使用了,加载不出…

聊一下JVM调优

闲聊一下: 这个JVM 相信大家都了解过 但是很少用这个东西 但是面试 一些高级架构师又是必问的一些问题 之前一直不了解这个东西 感觉就是面试造火箭 实际拧螺丝 用于筛选人才 毕业这么多年 也是很少接触这些 就大学的时候学过 简单了解过一些底层 ,找工…

计算字符串的长度几种方法 | 递归 | 指针减指针 | 计数器 | C语言 | 详解 | 期末考试必看!!!

一,使用 递归 计算 字符串 的 长度 1,题目描述 2,分析题目 Ⅰ,题目中要求除了函数的形参,函数中不能够使用多余的变量(这是比较苛刻的要求)。 Ⅱ,根据此,很自然的…

【Java系列】文件操作详解

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【Java系列专栏】【JaveEE学习专栏】 本专栏旨在分享学习JavaEE的一点学习心得,欢迎大家在评论区交流讨论💌 目录 …

Ubuntu之修改时区/时间

1、查看当前时间及时区状态 sudo timedatectl status # 显示当前时区为Asia/Shanghai 2、查看当前系统时间 sudo date 3、查看当前系统时间及时区 sudo date -R # 显示当前时间及对应时区,时区为“0800”北京时区 4、修改硬件时间 修改日期格式&#xff1a…

Attention机制

前置知识&#xff1a;RNN&#xff0c;LSTM/GRU 提出背景 Attention模型是基于Encoder-Decoder框架提出的。Encoder-Decoder框架&#xff0c;也就是编码-解码框架&#xff0c;主要被用来处理序列-序列问题。 Encoder&#xff1a;编码器&#xff0c;将输入的序列<x1,x2,x3……

【docker】安装 Redis

查看可用的 redis版本 docker search redis拉取 redis最新镜像 docker pull redis:latest查看本地镜像 docker images创建挂在文件 mkdir -pv /test1/docker_volume/redis/datamkdir -pv /test1/docker_volume/redis/confcd /test1/docker_volume/redis/conf/touch redis.con…

Postgresql源码(119)PL/pgSQL中ExprContext的生命周期

前言 在PL/pgSQL语言中&#xff0c;执行任何SQL都需要通过SPI调用SQL层解析执行&#xff0c;例如在SQL层执行表达式的入口&#xff1a; static bool exec_eval_simple_expr(PLpgSQL_execstate *estate,PLpgSQL_expr *expr,Datum *result,bool *isNull,Oid *rettype,int32 *re…

【Kubernetes 】Kubernetes 中的资源分配:CPU/内存申请和限制的重要性

在 Kubernetes 的动态世界中,高效的资源分配对于保持应用程序的稳定性和最大化性能至关重要。此领域的关键考虑因素包括 CPU 和内存资源的申请和最大限制。 在本文中,我们将探讨正确配置这些设置的重要性以及它们对 Kubernetes 集群内工作负载管理的影响,本文大纲如下, 了…

RDS创建数据库

目录 创建数据库 创建账号与授权 连接RDS数据库 创建数据库 在创建数据库的页面&#xff0c;你需要设置数据库的名称、字符集、排序规则等信息。 字符集&#xff1a;字符集&#xff08;Character set&#xff09;是多个字符的集合&#xff0c;字符集种类较多&#xff0c;每个…

谷歌Gemini Pro模型 Api 调用

写在前面 本篇博客主要介绍如下内容 Gemini Pro模型 ApiKey的申请 Gemini Pro模型 Api调用的方法 几个模型Api调用的demo程序 调用Gemini Pro模型中可能遇到的问题及解决方案 模型 ApiKey的申请 注册好Google账号&#xff0c;并在浏览器完成登录访问 : https://makersuite.g…

向日葵远程工具安装Mysql的安装与配置

目录 一、向日葵远程工具安装 1.1 简介 1.2 下载地址 二、Mysql 5.7 安装与配置 2.1 简介 2.2 安装 2.3 初始化mysql服务端 2.4 启动mysql服务 2.5 登录mysql 2.6 修改密码 2.7 设置外部访问 三、思维导图 一、向日葵远程工具安装 1.1 简介 向日葵远程控制是一款用…