如何使用Yolov5训练植物叶片病害疾病数据集,并通过训练好以后来识别苹果樱桃玉米桃子大豆南瓜草莓番茄等叶片病害

深度学习,目标检测中_如何使用Yolov5训练植物叶片病害疾病数据集,并通过训练好以后来识别苹果樱桃玉米桃子大豆南瓜草莓番茄等叶片病害

YOLO识别植物叶片疾病数据集 -10000张在这里插入图片描述

数据集中,有 39 种不同类别的植物叶子和背景图像。数据集包含 61,486 张图像。使用了六种不同的增强技术来增加数据集大小。是图像翻转、伽马校正、噪声注入、PCA 颜色增强、旋转和缩放。在这里插入图片描述

类别:1.苹果疥痂病 2.苹果黑腐病 3.苹果雪松锈病 4.苹果健康病 5.无叶背景病 6.蓝莓健康病 7.樱桃白粉病 8.樱桃健康病 9.玉米灰叶病 10.玉米普通锈病 11.玉米北叶枯病 12.玉米健康病 13.葡萄黑腐病 14.葡萄黑麻疹 15.葡萄叶枯 16.葡萄健康病 17.橙黄龙病 18.桃子细菌性斑点病 19.桃子健康病 20.胡椒细菌性斑点病 21.胡椒健康病22.马铃薯早疫病 23.马铃薯健康病 24.马铃薯晚疫病 25.树莓健康病 26.大豆健康病 27.南瓜白粉病 28.草莓健康病 29.草莓叶焦病 30.番茄细菌性斑点病 31.番茄早疫病 32.番茄健康病 33.番茄晚疫病 34.番茄叶霉病 35.番茄叶斑病在这里插入图片描述
以下文章及代码仅供参考。

yixi 一个详细的指南,包括数据准备、环境设置、模型训练、评估以及预测等步骤。

数据准备

首先,确保你的数据集已经准备好,并且按照YOLO格式进行组织:

  • 图像文件应该放在images/目录下,可以进一步划分为train/, val/等子目录。
  • 对应的标签文件(YOLO格式)应该放在labels/目录下,与图像文件对应。
  • 创建一个data.yaml文件描述数据集路径和类别信息。例如:
train: ./path/to/train/images
val: ./path/to/val/images

nc: 39  # 类别数量
names: ['Apple_scab', 'Apple_black_rot', 'Apple_cedar_rust', ..., 'Tomato_target_spot']  # 所有类别名称

环境设置

安装必要的依赖项并配置环境:

git clone https://github.com/ultralytics/yolov5  # 假设使用YOLOv5为例
cd yolov5
pip install -r requirements.txt

模型训练

使用以下命令开始训练过程。你可以根据自己的需求调整参数,比如批次大小(--batch-size)、学习率(--lr)、epoch数(--epochs)等。

python train.py --img 640 --batch 16 --epochs 100 --data path/to/your/data.yaml --weights yolov5s.pt
  • --img 640 设置输入图像尺寸为640x640像素。
  • --batch 16 设置批次大小为16。
  • --epochs 100 设置训练轮次为100。
  • --data path/to/your/data.yaml 指定数据配置文件路径。
  • --weights yolov5s.pt 加载预训练权重作为起点。如果想从头开始训练,可以去掉此选项或选择其他合适的预训练权重。

模型评估

训练完成后,可以使用以下命令评估模型性能:

python val.py --weights runs/train/exp/weights/best.pt --data path/to/your/data.yaml --img 640 --task val

这将输出验证集上的mAP(mean Average Precision)等指标。

预测新数据

对于新图像的预测,可以使用如下命令:

python detect.py --source path/to/test/images --weights runs/train/exp/weights/best.pt --conf 0.25
  • --source path/to/test/images 指定待预测图像或视频的路径。
  • --weights runs/train/exp/weights/best.pt 指定最佳权重文件路径。
  • --conf 0.25 设置置信度阈值。

自定义增强技术

数据集使用了六种不同的增强技术(如翻转、伽马校正等),在训练时可以通过修改YOLOv5中的数据增强部分来应用这些技术。YOLOv5默认支持多种数据增强方法,但如果你需要添加自定义的数据增强策略,在datasets.py中进行相应的修改,或者通过编写自定义的albumentations管道来实现。

使用YOLOv5训练一个植物叶片疾病识别模型,以下是关键步骤和代码示例。请注意,这些代码假设你已经按照之前描述的那样准备好了数据集,并安装了必要的依赖项。

数据准备

确保你的数据集按照以下结构组织:

dataset/
├── images/
│   ├── train/
│   ├── val/
├── labels/
│   ├── train/
│   ├── val/
data.yaml

data.yaml 文件内容示例如下:

train: ./dataset/images/train  # 训练图像路径
val: ./dataset/images/val      # 验证图像路径

nc: 39  # 类别数量
names: ['Apple_scab', 'Apple_black_rot', ...]  # 所有类别名称

环境设置

如果你还没有准备好环境,请先克隆YOLOv5仓库并安装所需依赖:

git clone https://github.com/ultralytics/yolov5  # 克隆YOLOv5仓库
cd yolov5
pip install -r requirements.txt  # 安装依赖

模型训练

在YOLOv5中开始训练过程的关键代码如下:

import torch

# 设置参数
img_size = 640  # 输入图像尺寸
batch_size = 16  # 批次大小
epochs = 100  # 训练轮次
data_yaml_path = 'path/to/data.yaml'  # 数据配置文件路径
weights = 'yolov5s.pt'  # 预训练权重

# 开始训练
def start_training():
    model = torch.hub.load('ultralytics/yolov5', 'custom', path_or_model=weights, force_reload=True)
    model.train(data=data_yaml_path, imgsz=img_size, batch_size=batch_size, epochs=epochs)

if __name__ == '__main__':
    start_training()

或者直接通过命令行进行训练:

python train.py --img 640 --batch 16 --epochs 100 --data path/to/data.yaml --weights yolov5s.pt

模型评估

训练完成后,可以使用以下代码对模型进行评估:

from pathlib import Path
import torch

# 加载最佳权重
best_weights = 'runs/train/exp/weights/best.pt'

# 进行验证
def evaluate_model():
    model = torch.hub.load('ultralytics/yolov5', 'custom', path_or_model=best_weights, force_reload=True)
    results = model.val()  # 默认使用data.yaml中的验证集
    print(results)

if __name__ == '__main__':
    evaluate_model()

或者使用命令行:

python val.py --weights runs/train/exp/weights/best.pt --data path/to/data.yaml --img 640 --task val

预测新数据

对于新的图像或视频进行预测,你可以使用以下代码:

import torch

# 加载最佳权重
model = torch.hub.load('ultralytics/yolov5', 'custom', path_or_model='runs/train/exp/weights/best.pt')

# 对单张图片进行预测
def predict_image(image_path):
    results = model(image_path)
    results.print()  # 输出结果到控制台
    results.show()   # 显示检测结果

# 或者处理整个目录中的图像
def predict_directory(directory_path):
    for image_file in Path(directory_path).glob('*.jpg'):
        predict_image(str(image_file))

if __name__ == '__main__':
    predict_image('path/to/test/image.jpg')  # 单张图片预测
    # 或者调用predict_directory('path/to/test/images/') 处理整个目录

常见的评估指标:
在评估机器学习模型尤其是像YOLO这样的目标检测模型时,有多种指标可以用来衡量模型的性能。以下是一些常见的评估指标:

  1. 精确率(Precision)

    • 定义为所有被预测为正类的样本中实际为正类的比例。
    • 公式:(Precision = \frac{TP}{TP + FP}),其中TP是真阳性(正确识别的目标),FP是假阳性(错误地被认为是目标的对象)。
  2. 召回率(Recall)或灵敏度(Sensitivity)

    • 衡量的是所有实际为正类的样本中有多少被正确识别。
    • 公式:(Recall = \frac{TP}{TP + FN}),其中FN是假阴性(未识别出的实际目标)。
  3. F1分数(F1 Score)

    • 精确率和召回率的调和平均数,提供了单一值来评估模型。
    • 公式:(F1 = 2 \cdot \frac{Precision \cdot Recall}{Precision + Recall})。
  4. 平均精度均值(mAP, Mean Average Precision)

    • 对于目标检测任务来说,这是一个非常重要的指标。它计算每个类别下的平均精度(AP),然后对所有类别取平均得到mAP。
    • AP可以通过计算不同召回率水平下的精确率得到,通常使用PR曲线下的面积来表示。
  5. 交并比(IoU, Intersection over Union)

    • 用于评估预测边界框与真实边界框之间的重叠程度。它是两个区域交集面积除以并集面积的结果。
    • 公式:(IoU = \frac{area_{pred} \cap area_{gt}}{area_{pred} \cup area_{gt}}),其中pred代表预测框,gt代表地面实况框。
  6. 准确率(Accuracy)

    • 所有预测正确的样本占总样本的比例。
    • 公式:(Accuracy = \frac{TP + TN}{TP + TN + FP + FN}),其中TN是真阴性(正确识别为非目标的对象)。
  7. 损失函数(Loss Function)

    • 虽然不是直接的评估指标,但在训练过程中监控损失函数的变化对于了解模型的学习过程非常重要。对于目标检测模型,常用的损失函数包括分类损失和定位损失。
  8. 速度(Speed)

    • 包括每秒帧数(FPS, Frames Per Second)等指标,评估模型处理图像的速度。这对于实时应用尤其重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值