目录
前言
在网上看了很多关于yolov5的博客,很多都是解读参数配置,或者是解析它的底层原理什么的,对新手不是特别友好,我认为学一样东西,先不管其他的,先把这个东西做出来,然后再去学习内部的原理,这样学习起来就不会那么枯燥乏味了,本篇博客就是纯手把手教你yolov5的搭建、训练、识别。
一、环境搭建
1.下载安装Anaconda
- Anaconda 是一个用于科学计算的 Python 发行版本,包含了众多流行的科学计算、数据分析的Python包。
- 下载地址:https://www.anaconda.com/products/distribution
下载以后一直 next 即可
安装完成后通过cmd 执行 conda -V 命令即可检测是否安装成功
接下来是配置清华镜像源,执行以下命令即可
执行命令通过windows开始菜单找到 Anaconda Prompt (Anaconda3) 作为入口
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
执行以后可以提高安装包的速度
2.下载安装 pytorch
编辑 注意:这里的compute platfrom根据你电脑的cuda版本来选,我的电脑没有cuda,因此选cpu
选好后执行下面那句代码
默认情况下 conda 的环境是 base
在 conda 下创建一个虚拟环境, 环境名称: yolov5 或者其他, python版本选择3.8 或者其他
conda create -n yolov5 python=3.8
中途会有提示,输入 y 即可
然后激活刚刚创建的虚拟环境
conda activate yolov5
激活后 base 环境会变成 yolov5
在yolov5虚拟环境下 安装 pytorch
(这个文件在线安装的有点大,需要等待一段时间)
pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu116
3.下载安装 yolov5 源代码
github仓库地址:ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite (github.com)
1、点击 tags 标签
2、找到 v3.1 进去
3、点击code,将项目代码克隆或者下载下来
4、conda在yolov5 环境,并且路径在这个项目文件位置下执行命令👇下载必要的文件
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
5、下载程序提供的默认权重文件,文件和 源码在同一个地方(yolov5x.pt 、yolov5m.pt 、yolov5l.pt 、yolov5s.pt )
5、下载后拷贝到程序的 weights 目录
二、训练
1.下载安装 lableImg
执行以下三句命令 ,会弹出如下工作窗口,自己找一些图片进行标注
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple labelImg
python -m pip install --upgrade pip
labelimg
Save下面的选项调成yolo,这样标注完后Save就会得到txt文件
2.训练
首先要进行模型选择
- S 模型:S 模型是 YOLOv5 中的小尺度模型,其输入大小为 1920x1080,适用于检测较小尺寸的物体,例如人脸、车辆等。S 模型有 11 个卷积层,检测速度较快,但精度相对较低。
- M 模型:M 模型是 YOLOv5 中的中尺度模型,其输入大小为 2560x1440,适用于检测中等尺寸的物体,例如轿车、卡车等。M 模型有 19 个卷积层,检测精度较高,但检测速度相对较慢。
- L 模型:L 模型是 YOLOv5 中的大尺度模型,其输入大小为 3840x2160,适用于检测较大尺寸的物体,例如货车、公交车等。L 模型有 29 个卷积层,检测精度非常高,但检测速度相对较慢。
根据需要识别的目标大小选择模型,然后去官网下载预训练模型
yolov5/README.zh-CN.md at master · ultralytics/yolov5 (github.com)
1.在yolov5代码目录下data文件夹下 复制 voc.yaml 文件(名字自己定,我这里是voc-lbh)
在 YOLO 中,训练、验证和测试三个路径下都需要存放标注后的文件
- train: # 训练的图片路径 (txt结果与图片一起放该路径下)
- val: # 验证的图片(txt结果与图片一起放该路径下)
- test : #用于测试模型(txt结果与图片一起放该路径下)
- names: 标注时的数值和他的别名
train 路径用于训练模型,val 路径用于验证模型,test 路径用于测试模型。在训练和验证期间,模型将在不同的数据集上进行训练和验证,以便评估模型的性能。在测试期间,模型将使用整个数据集进行测试,以确定其性能指标
注意:训练过的图片通常不能用于验证数据。这是因为在训练期间,模型已经对这些图片进行了训练,并学会了识别这些图片中的对象和场景类别。
如果你有100张标注了的图片,大约 70 张图片用于训练数据,约 10 张图片用于验证数据,约 20 张图片用于测试数据
2.在yolov5代码目录下models文件夹下 复制 yolov5s.yaml 文件 该名称为 yolov5s-***.yaml (名字自己随意定)
注意:以下命令中的yolov5s是因为我选择了s的预训练模型,如果选择了其他把yolov5后的字母更换就好了。
第四行nc是类的数量,在做标记的时候一共有多少种类这里就设置多少
3.训练命令
打开conda
1.到源代码的路径下:
如 cd C:\Users\user\yolov5-master\yolov5-master
2.进入虚拟环境:
conda activate yolov5
3.执行命令👇
- batch-size :就是一次往GPU哪里塞多少张图片了。决定了显存占用大小,默认是16。
- epochs :执行多少次。
注意下列命令红色处是自己刚刚改的名字,weights weights/yolov5s.pt 是预训练模型的位置
python train.py --data data/voc-lbh.yaml --cfg models/yolov5s-lbh.yaml --weights weights/yolov5s.pt --batch-size 16 --epochs 200
三、训练结果与识别
在runs目录下可以找到训练的结果
weights下有两个.pt文件,这是我们的训练结果权重文件
编辑
识别命令👇
标红两处根据自己的实际路径更改,best.pt就是上面的权重文件路径
python detect.py --source 需要识别的图片目录 --weights runs/exp/weights/best.pt --conf 0.4
识别结果也是在runs文件夹里面,如下是我的识别结果
总结
以上就是yolov5的项目搭建了 ,这是我自己做的一个皮卡丘识别,需要资料或者还有什么不明白的可以评论区留言,我看到后会第一时间答复