实验要求只需要识别五个简单的手势即可,分别对应的一下五个动作
动作 | 对应标签名 |
---|---|
点赞 | good |
OK | ok |
单手比心 | love |
数字 5 | five |
数字8 | eight |
使用yolov5实现目标检测功能,有一下几个主要步骤
推荐使用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是使用最广泛的一种集成开发环境适用于Python编程语言。它对于代码的检索、提示和补全非常友好,同时便于跨平台开发。
官网下载地址:https://www.jetbrains.com/pycharm/
至于破解版自己想办法咯
注意在使用pycharm进行开发时,选择对应的conda环境
打开anaconda prompt 控制台,创建一个自己的yolov5环境
conda create -n yolov5 python=3.9
再输入y,安装内容
激活环境
conda activate yolov5
Pytorch的安装
安装pytorch之前,最好先配置清华镜像源,否则下载速度很慢
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
官网下载地址:https://pytorch.org/get-started/locally/
在官网选择对应的版本(在英伟达控制面版左下角的系统信息中的组件里查看自己合适哪个)
下载yolov5自身环境
Github地址:https://github.com/ultralytics/yolov5
将这个GitHub库的文件压缩包下载下来,并解压,会发现有一个requirements.txt
文件
来到yolo-master目录下,输入命令安装剩余环境
pip install -r .\requirements.txt
将下载好的模型文件yolov5s.pt
放到文件夹,重新运行测试文件
python detect.py
这样就完成了官方案例的检测,也证明你配置好了
注意要在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.yam
l复制一份并粘贴回该文件夹改个名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.yam
l复制一份并粘贴回该文件夹改个名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