yolov5实现水稻病虫害识别

1、制作合适的数据集

1.1 mask文件和yolov5放在同一个文件夹下
在这里插入图片描述

1.2 mask文件夹下包含两个文件(train和valid)和一个data.yaml
train:训练集,包含用于训练的图片和图片的位置信息(txt格式)
valid:验证集,包含用于验证的图片和图片的位置信息(txt格式)
data.yaml:用于存放train和valid的绝对地址以及类别总数(nc)、类别名称
在这里插入图片描述

1.3 train文件夹下包括两个文件夹,images用来存放图片,labels存放图片信息(txt格式包括类被和位置信息)。(train文件夹主要用来训练)
在这里插入图片描述

1.4 vaild文件夹下存放格式与train相同
在这里插入图片描述

1.5 data.yaml文件如下,train and val后面接地址,nc表示类别的总数,name后面是类别名称。
在这里插入图片描述
在这里插入图片描述
需要注意的是,txt文件中第一个是表示的某一类别,3是指在names数组中第4个类别

数据集到这就可以开始训练了

2、用自己的数据集进行训练
在pycharm下打开yolov5对应的文件夹,激活环境

conda activate yolov5

在这里插入图片描述
接着修改yolov5/models/yolov5s.yaml,将nc = 80修改为nc = 4.
在这里插入图片描述
把数据集准备好,并且修改好yolov5s.yaml里的参数,接下来就可以执行训练命令,生成一个针对你自己准备的数据集的

python train.py --img 640 --batch 16 --epoch 300 --data C:~\V1\mask\data.yaml --cfg models/yolov5s.yaml --weights weights/yolov5s.pt 

data后面接的是上文1.5中data.yaml文件的完整路径
epoch是指训练完整个数据集的次数,可以自己指定
batch是指单次训练的图片数量,和显卡相关,如果报错就调小
在这里插入图片描述

经过漫长的等待,训练完成
生成的best.pt就是所得到的权重
在这里插入图片描述
3、测试生成的权重

python detect.py --weight runs\exp21\weights\best.pt --source C:\Users\Lenovo\Desktop\IMG_4390.JPG 

detect.py:用于检测的程序
weight:选择刚训练好的权重路径
source:选择一张测试图片(没有用过的)的路径
在这里插入图片描述

打开得到图片
在这里插入图片描述

在这里说一下碰到的问题和我所用的解决的办法

一开始batch size的大小写的16,但是一直不运行也不报错,于是就开始减小,减小为8时,报错

RuntimeError: cuDNN error: CUDNN_STATUS_INTERNAL_ERROR
You can try to repro this exception using the following code snippet. If that doesn't trigger the error, please include your original repro script when reporting this issue.

在这里插入图片描述
于是减小到1,然后开始运行了。

猜你喜欢

转载自blog.csdn.net/chy5764/article/details/127030269