前言.yolov5项目
记录在网上学习的用yolov5完成一个检测目标的项目。
本期介绍的是检测火灾。
由于过程步骤较多,且容易出错,已讲完整代码放在下方,供各位参考学习。
注意事项:
1.往下滑,直到左边出现目录为止,你可以根据目录,选择你要看的内容
2.请用bing浏览器,bing搜索引擎,某度广告太多
3.RTX30系列显卡只支持cuda11系列驱动
4.下载相关包出现问题可切换手机热点下载
1.conda环境搭建
1.1conda的下载
没有Anaconda的先去浏览器下载Anaconda,最好用bing浏览器,某度广告太多了。
已经有conda的可以跳过目录1,直接看目录2
如果有这个页面直接点下面的跳过键
选择下面的Windows版本下载,64位
等待下载完成。
选择next
点击I Agree
继续Next
都勾选上!,都勾选上!,都勾选上!
重要的事情说三遍
这里显示是否要添加到PATH环境,是需要添加的。
然后点install
后面就都继续点Next就行了
1.2 pycharm添加conda环境
没有pycharm的一样去浏览器下载,这里不做演示了。
先在桌面新建一个文件夹(你也可以在D盘创建文件夹),这里我取名为pro1
再用pycharm打开你的这个文件夹
选择桌面目录
点击pro1
信任项目
然后点击设置
点击项目,python解释器
点击添加本地解释器
点击conda环境,然后点右边的文件夹按钮,然后选择你Anaconda安装位置下的Scripts下的conda.exe.
注意:我这里Anaconda安装的地址是在D盘,如果你安装的位置在C盘,你应该选择C盘下面你安装的Anaconda的位置
之后点击右边的加载环境,出现以下界面说明正确。然后点击确认即可
点击编辑配置
选择Anaconda环境即可
运行测试通过
接下来教大家怎么配置yolov5所需环境。
2.yolov5的conda环境配置
2.1conda下创建新环境
打开Anaconda的环境
创建名称为yolov5,python版本号为3.8的conda环境。
(注意:为了追求稳定,尽可能按照我的示范下载,yolov5不支持低于3.8的版本,而且版本过高也会导致出错,3.8版本比较稳定。)
conda create -n yolov5 python=3.8
出现以下界面代表成功
再输入y,代表同意安装,回车。
查看yolov5环境是否创建成功
conda env list
(yolov5-fire是我自己电脑之前下载的环境,不用管)
带*的是你目前的活跃环境,就是你现在在conda环境中操作,比如下载什么包,会下载到活跃的环境中,这时候你需要切换活跃环境到yolov5环境。
切换活跃环境
conda activate -n yolov5
前面的括号改变成yolov5代表你切换成功了。
2.2下载yolov5模型
搜索yolov5,在github上下载
点击下载安装包
下载完成后解压到桌面
我们用pycharm打开yolov5项目
我们安装之前教的方法,把现有环境选择成yolov5
出现这个先不要管他,不用点他
2.3cuda的下载
cuda是你配合电脑GPU运行yolov5项目的一个软件,要下载cuda才能用GPU去运行项目,如果你电脑没有独立显卡,请换一台有独立显卡的电脑。如RTX3050, RTX3060 ,RTX4060
(没有独立显卡也想查看测试结果的直接看———步骤)
点击Download
为了防止出错,最好按照默认在C盘
完成之后全部都点下一步。
之后进入Anaconda powershell prompt环境中,输入
nvcc--version
如果显示以下内容,代表安装成功
3.yolov5项目所需的包下载
下载torch和torchvision
3.1torch下载方法1
pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.htm
pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.html
如果显示时长过多,比如三个多小时,两个多小时
(如果要暂停当前步骤,比如下载出问题了,太慢了,多按几遍Ctral+C)
换一种方式下载
3.2torch下载方法2
conda install pytorch==1.8.0 torchvision torchaudio cudatoolkit=11.1
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge
conda下载界面
若出现以下错误,多尝试几遍
conda install pytorch==1.8.0 torchvision torchaudio cudatoolkit=11.1
直到下载完毕
等待下载完成
3.3其他包的下载
接下来在项目中选择requirements.txt,注释掉torch和torchversion,把pillow后面的>=改成==
在conda环境中进入你的yolov5项目中
进入桌面 cd Desktop
进入 yolvo5项目 cd yolov5-master
下载requirements中所需的包
pip install -r requirements.txt
3.4torch和cuda的验证
依次输入
python
import torch
print(torch.__version__)
显示torch版本号为1.8.0
输入
print(torch.cuda.is_available())
查看CUDA是否可用
输入
print(torch.version.cuda)
查看CUDA的版本号
输入
exit()
退出python编译
4.yolov5运行测试
进入detect.py
在该文件中,往下翻,找到device这一项,代表用GPU运行还是CPU运行
把后面的default改成0,代表0号GPU运行
找到一个空处,右键运行
结果保存在runs\detect\exp4中
、
出现这两张图片,代表yolov5模型运行测试成功
5.自己训练模型并且预测
5.1下载数据集
先在桌面新建文件夹,img
在img文件夹下再创建images文件夹,labels文件夹
在images文件夹和labels文件夹下都要创建train和val文件夹
格式如下:
img/
├── images
│ ├── train
│ ├── val
└── labels
├── train
├── val
在浏览器中搜索火灾图片
下载几张有火焰的图片,这里下载10张,测试一下
下载完了之后如下:
(注意:文件的名称最好安装数字命名)
图片直接复制过去到images/trian 和images/val里面,注意不要剪切,这些图片留在外面还有用
在images/train文件夹里面放序号1--7图片
在images/val文件夹里面放序号8--10图片
labels文件夹里面暂时不用放东西!
5.2数据集标注
在conda 终端中输入 pip install labelimg
labelimg是数据集标注工具
下载完毕之后,再输入
labelimg
将会打开工具
(注意不要关闭conda终端,你把conda终端关了,labelimg也会关)
选择下面修改成YOLO格式
点击左边的open Dir (打开文件夹)
选择之前的img文件夹,点击一下datasets,点击选择文件夹
出现以下界面
(如果图片太小,可以按住Ctrl,然后鼠标滚轮向上滚是放大)
再点击Change Save Dir,选择标注的数据集结构文件保存在哪个文件夹
我们选择labels文件夹
在软件中,右键图片,然后点击Create RectBox,也可以直接按W。
然后进行标注
标注有火的地方,然后填写fire
最后点Save,保存
快速操作: 先按W,然后框火焰,完了yes,之后按D是下一张,A是上一张
这里如果你没有保存,他会提示你保存,你直接按Yes就行,会进行保存
可以有多个框
10张数据集全标注完了,去文件夹里面看看
如果是11个txt文档就对了,如果是其他格式的文档,那说明你之前格式没调整,要调成yolo格式数据集
10个数据集标注位置+类别文档
5.3数据集文件解读
我们打开class文档可以看到,我们标记的是fire类型
我们再随便打开一个文档,可以看到
0代表第一类,也就是fire,因为我们只标注了一类,所以后面的txt文档都是0开头
0后面第一个数代表左上方x
0后面第二个数代表左上方y
0后面第三个数代表左上方x
0后面第四个数代表左上方y
这两个点可以构成可以矩形,就是火焰的位置
5.4数据集文件格式规范
接下来我们把1-7号都拖到train里面
把8-10号拖到val里面
class.txt不用管
格式如下
img/
├── classes.txt
├── images
│ ├── train
│ │ ├── 1.jpg
│ │ └── ...
│ ├── val
│ │ ├── 8.jpg
│ │ └── ...
└── labels
├── train
│ ├── 1.txt
│ └── ...
├── val
│ ├── 8.txt
│ └── ...
5.5数据集导入项目
进入到项目中,在data下新建一个文件,命名为fire.yaml
把coco128.yaml中的代码全部复制到fire.yaml中
我们把path train val 都修改成这样
names下面就留一个fire就行,绿字是注释,可删可不删
我们把桌面上的datasets复制到yolov5-master下面
把datasets下面 和images labels同级的图片都删掉,注意:是同级,而不是images目录下的图片
点一下1.jpg,按住shift再点一下10.jpg,就可以全选中
5.6 训练文件代码分析
我们找到train.py,在569行(随着版本的更新也有可能不是569行),找到data
我们修改
data/coco128.yaml为data/fire.yaml
找到588行的device,修改default="0",表示用0号GPU训练,也就是第一块GPU
一般电脑就只有一块GPU
我们把分支batch-size 调成4
训练轮数epochs 调成100
运行train.py
5.7新图片预测
往data下的images下面添加一张或几张新的火灾图片。
找到detect,py,将其370行的weights后的default的值改成你训练的权值文件
runs/train/exp8/weights/best.pt
下面的device 后面改成0,也就是0号GPU
最后运行 detect.py
运行结果如下:
白色字体是你预测的结果保存的路径
6.可能报错
6.1git出错
出错了,尝试安装git
在conda终端中 输入conda install -c anaconda git
6.2 "无法创建新的堆栈防护页面"错误
这是因为你的虚拟内存过小。导致没有足够的内存运行
解决方法如下:
“系统属性”的“高级”选项卡中找到虚拟内存设置
可以去浏览器上搜 "如何设置虚拟内存"
C和D都设置 10--20G, 也就是10240-20480MB
点击应用,然后重启电脑
重新运行train.py
6.3 页面文件太小错误
和6.2一样,虚拟内存太小了,继续调高
改成20-大约30G
7.结果展示
白色字体是你的结果保存的路径
每一轮的训练过程
这是训练结果
每一张图片代表什么意思可以浏览器搜索
如: "yolov5模型中结果图片分析"
(超详细)YOLOv5训练出结果,如何分析结果的性能分析_yolov5训练结果分析-优快云博客