提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
基于我第一篇YOLO的配置文章《 基于pycharm的YOLOv11模型训练方法 》,
第一篇以 模型训练
为主要内容(较为粗糙)
基于我第二篇YOLO的配置文章《 基于pycharm的YOLOv11模型训练方法 》重点介绍:
1)从GitHub上,直接下载源代码,原模型。更加源头、更加抽丝剥茧
地展示给大家搭建YOLOv11基础环境
2)完成模型验证测试
3)为后续模型训练与精度提升奠定基础
本篇文章
将在此文章的基础上,进行模型训练,及精度提升
。
一、前期准备
训练集准备
- 训练集参考
较大,1.3G
水稻病害目标检测数据集五分类
2.将解压的文件夹datasets
放在D:\DeepLearning\ultralytics-8.3.163
文件夹内
代码准备
- 打开 Pycharm ,打开项目
D:\DeepLearning\ultralytics-8.3.163
- 新建一个源文件
train.py 和 data.yaml
(注意与模型同级文件夹)
train.py:
修改 model 的路径
import warnings
warnings.filterwarnings('ignore')
from ultralytics import YOLO
if __name__ == '__main__':
model = YOLO(model=r'D:\DeepLearning\ultralytics-8.3.163\ultralytics\cfg\models\11\yolo11.yaml')
# model.load('yolo11n.pt') # 加载预训练权重,改进或者做对比实验时候不建议打开,因为用预训练模型整体精度没有很明显的提升
model.train(data=r'data.yaml',
imgsz=640, # 输入图像的尺寸,指定为640x640像素
epochs=10, # 训练的轮数
batch=4, # 批处理大小,电脑显存越大可设置越大,根据自身电脑性能调整
workers=0, # 数据加载的工作线程数,显存不足时可设置为0,默认是8
device=0, # 指定用于训练的显卡,使用的GPU设备编号,0表示第一个GPU,如果使用CPU则设为'cpu'
optimizer='SGD', # 优化器类型
close_mosaic=10, # 在第10个epoch后关闭mosaic数据增强 #
resume=False, # 是否从上一次中断状态继续训练,False表示从头开始新训练
#若从中断后继续训练,要把model换成中断的模型
project='runs/train', # 项目文件夹,用于保存训练结果
name='exp', # 保存结果的文件夹名称
single_cls=False, # 是否将所有类别视为一个类别,False表示保留原有类别
cache=False, # 是否缓存数据,False表示不缓存
)
data.yaml:
修改 path train val 的路径
# 数据集根目录,训练/验证集路径若写相对路径,会基于此根目录拼接
path: D:\DeepLearning\ultralytics-8.3.163\datasets
# 训练集图片存放路径
# 作用:告诉模型到哪找训练用的图片,模型会搭配对应标签(同目录下labels文件夹或按约定路径)做训练
train: D:\DeepLearning\ultralytics-8.3.163\datasets\train\images
# 验证集图片存放路径
# 作用:模型训练中,用这里的图片验证学习效果,看有没有“学偏”,同样搭配对应标签使用
val: D:\DeepLearning\ultralytics-8.3.163\datasets\val\images
# test: C:\Users\HP\Desktop\ultralytics-8.3.39\rice_yolo\test # 测试集路径(当前注释掉了,要用时取消注释并填实际路径)
# 类别总数
# 说明:数据集里一共有多少种要识别的类别,数清楚自己标注的类别数量填这里,比如这有 5 种病虫害/健康类别,就填 5
nc: 5
# 类别名称映射
# 规则:按标签文件里的索引对应填名称,标签里第一列数字(索引)0 对应第一个类别,1 对应第二个,以此类推
# 注意:名称用英文!中文可能让训练出问题;顺序必须和标签里的索引对应好,否则模型会把类别搞混
# Classes ['Blast', 'Blight', 'Brown Spot', 'Healthy', 'Tungro']
names:
0: Blast # 索引 0 对应的类别名:稻瘟病(Blast)
1: Blight # 索引 1 对应的类别名:白叶枯病(Blight)
2: Brown Spot # 索引 2 对应的类别名:胡麻叶斑病(Brown Spot)
3: Healthy # 索引 3 对应的类别名:健康水稻(Healthy)
4: Tungro # 索引 4 对应的类别名:东格鲁病(Tungro)
二、模型训练
运行
train.py
注意调整轮次,第一次训练10轮即可(一轮 3min)训练后的模型路径
D:\DeepLearning\ultralytics-8.3.163\runs\train\exp\weights\best.pt
三、模型测试
使用上篇文章的
Multi_image_detection.py
模型软件配置
模型选择:D:\DeepLearning\ultralytics-8.3.163\runs\train\exp\weights\best.pt
图片检测:选一张人像,因为只训练了水稻病虫害的标签,故识别不出人脸
文件夹检测:D:\DeepLearning\ultralytics-8.3.163\datasets\test\images
注:
图片的检测结果不保留,需点击软件上的 保存检测结果
文件夹的检测结果路径D:\DeepLearning\ultralytics-8.3.163\runs\detect
总结
本文完整实现了:
- 自定义数据集训练
- 实际应用部署