YOLOv5模型使用教程(待更)

安装与改各种东西

1:前往Anaconda.rog安装Anaconda,这是一个python环境隔离工具

2:在github下载YOLOv5源码,这里推荐6.0版本

3:在安装Anaconda的时候,有4个小方框的地方要勾选1 2 4选项,这是安装环境配置,如果不勾选,后续自己添加非常非常非常非常非常麻烦

4:解压YOLOv5,然后打开requirements.txt,把依赖的库版本>=全改成==

如图:y1

5:打开cmd控制台,输入conda env list 如果没创建过项目,那只会出现base

接下来再输入conda create -n yolo_v5 python=3.8 (python的3.8最稳定)

然后在安装过程中要求选择Proceed([y]/n)? 全选择y就行

然后输入conda activate yolo_v5

然后用cd指令转去你解压的YOLOv5-6.0的文件夹地址,如果提示文件名、目录名或卷标语法不正确,那就改成cd/d 地址

6:先别关控制台,然后我们先去下载一个pyTorch插件(地址:pytorch.org)

然后注意到,我们的requirements里面有提到,要使用torch==1.7.0的版本,如果直接使用pyTorch的最新2.0版本肯定是会报错的,所以我们要去翻历史版本

这里不得不提到说是1.7.0,但还是得用1.8.1

然后我们翻到历史版本的

y2

如果你是30系及以上的显卡,那就按11.1,如果配置比较低,那就试试后面这几个

直接复制这个:

1
pip install torch==1.8.1+cu111 torchvision==0.9.1+cu111 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html

到之前的cmd控制台,一定要在(yolov5)环境里面安装,才能够成功y3

如果成功了,那就会出现这个界面,要下蛮久的,如果之前有安装过,那会直接检测到就拿过来用了,如果中途中断了的话,就要重新开始下

如果无论怎么换源你的网速都很慢,那就挂个梯子然后在pip指令后面加

1
--proxy http://127.0.0.1:本地端口

如果下载途中经常下一半就报错一大片红色代码,就试试把

1
pip install

改成

1
pip --default-timeout=100 install

下载完成后会提示

1
2
Installing collected packages: typing-extensions, pillow, numpy, torch, torchvision, torchaudio
Successfully installed numpy-1.24.4 pillow-10.4.0 torch-1.8.1+cu111 torchaudio-0.8.1 torchvision-0.9.1+cu111 typing-extensions-4.12.2

然后我们输入

1
python

进入交互环境,然后输入

1
import torch

如果没报错,那就是成功了,然后输入

1
exit()

退出

回到requirements.txt文档

把torch和torchvision这两个东西注释掉,因为我们已经手动安装了

这里提一嘴为什么要手动安装,因为它给的pip下载是下载用cpu训练的,我们用gpu训练得手动去下

改成

1
2
# torch==1.7.0
# torchvision==0.8.1

然后再把opencv改一下

1
opencv-python==4.1.2.30 #(如果没有4.1.2.30就改成尽可能低的版本)

然后去运行

1
pip install -r requirements.txt

没有报错安装好依赖就可以下一步了

训练

经历了繁琐的安装配置后,终于可以开始训练了QAQ

我们去vscode(或者你用别的编译器,如果是vscode记得要下载python的拓展)打开刚才解压的YOLOv5文件夹,就可以浏览里边的代码了

1
2
3
train.py(训练)
val.py(验证)
detect.py(检测)

在vscode里按住Ctrl+Shift+P,然后输入选择解释器,选择python3.8

数据集获取

可以登录https://huggingface.co/网站获取,搜索object detect就可以了

把我们的数据集放在yolo文件夹里的data文件夹里

注意tarin和val文件夹是必须要有的,里面必须严格按照images和lables来命名文件夹存放图片和标签,images里面放你需要用于训练的图片,lables是训练图片的标签(直接把训练图片的后缀jpg改成txt,名称完全一致就好了)

处理好数据集后,在YOLOv5文件根目录创建一个py项目,测试能否读取到图片和边框是否正确,我把代码贴在下面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import os
import cv2 as cv
import torch
import json
# 指定图片路径
image_path = './data/data_org/train/images/2_py.jpg'

# 读取图片
image = cv.imread(image_path)

# 检查图片是否读取成功
if image is None:
print("图片未能读取,请检查路径。")
else:
# 在图像上绘制矩形
image = cv.rectangle(image, (78, 15), (559 + 78, 622 + 15), (0, 0, 255), 2)

# 显示图像
cv.imshow("img", image)
if cv.waitKey(0) == ord('q'):
cv.destroyAllWindows()

正常来讲,会出现这种窗口

–>img

数据集处理思路

由于我们放入的数据集肯定是一大坨东西,然后只输出一小坨东西