深度学习目标检测算法如何使用Yolov5训练葡萄果实数据集 检测葡萄串,实现对农业自动化、精准农业等具有重要价值,自动识别并定位图像中的葡萄串

深度学习目标检测算法Yolo训练葡萄果实数据集 检测葡萄串,实现对农业自动化、精准农业等具有重要价值,自动识别并定位图像中的葡萄串
以下文字及代码仅供参考。

数据集描述:
葡萄果园葡萄串检测数据集,2951张,yolo/voc标注
图像尺寸:864*1296

在这里插入图片描述
1
在这里插入图片描述

葡萄果园葡萄串检测数据集

在这里插入图片描述

数据集概述
  • 图像总数:2951张
  • 标注方式:支持YOLO和VOC两种格式
  • 图像尺寸:864*1296像素
  • 类别数:1个(grape_cluster)
数据划分
  • 训练集:包含2296张图像
  • 验证集:包含352张图像
  • 测试集:包含303张图像
    在这里插入图片描述
类别详情
  • 类别名称:grape_cluster
    • 出现于2908张图像中,总计有15475个标注框。
数据集用途

,研究者可以训练模型来自动识别并定位图像中的葡萄串,对于农业自动化、精准农业等具有重要价值。

以下是基于 YOLOv5 的葡萄果园葡萄串检测数据集的完整处理流程,包括数据准备、格式转换、数据划分、环境搭建、模型训练、推理和性能评估。我们将使用提供的信息(如图像数量、类别名称等)进行配置。


1. 数据准备

1.1 数据目录结构

假设数据集目录结构如下:

dataset/
├── images/
│   ├── train/
│   │   ├── img1.jpg
│   │   ├── img2.jpg
│   │   └── ...
│   ├── val/
│   │   ├── img1.jpg
│   │   ├── img2.jpg
│   │   └── ...
│   ├── test/
│   │   ├── img1.jpg
│   │   ├── img2.jpg
│   │   └── ...
├── labels/
│   ├── train/
│   │   ├── img1.txt
│   │   ├── img2.txt
│   │   └── ...
│   ├── val/
│   │   ├── img1.txt
│   │   ├── img2.txt
│   │   └── ...
│   ├── test/
│   │   ├── img1.txt
│   │   ├── img2.txt
│   │   └── ...
  • 图像文件存储在 images/train/images/val/images/test/
  • 标注文件(YOLO格式)存储在 labels/train/labels/val/labels/test/
1.2 YOLO 格式标注

每张图像对应的 .txt 文件包含以下内容:

<object-class> <x_center> <y_center> <width> <height>
  • <object-class>:类别索引(从 0 开始,这里只有 grape_cluster 类别,索引为 0)。
  • <x_center>, <y_center>, <width>, <height>:归一化到 [0, 1] 的边界框坐标。

如果数据集提供的是 VOC 格式的 XML 文件,需要将其转换为 YOLO 格式。可以使用以下代码完成转换:

import xml.etree.ElementTree as ET
import os

def convert_voc_to_yolo(voc_xml_path, yolo_label_dir, class_mapping):
    tree = ET.parse(voc_xml_path)
    root = tree.getroot()

    image_size = [int(root.find('size')[0].text), int(root.find('size')[1].text)]
    yolo_lines = []

    for obj in root.findall('object'):
        class_name = obj.find('name').text
        class_id = class_mapping[class_name]

        bndbox = obj.find('bndbox')
        xmin = float(bndbox.find('xmin').text)
        ymin = float(bndbox.find('ymin').text)
        xmax = float(bndbox.find('xmax').text)
        ymax = float(bndbox.find('ymax').text)

        # 归一化
        x_center = (xmin + xmax) / 2.0 / image_size[0]
        y_center = (ymin + ymax) / 2.0 / image_size[1]
        width = (xmax - xmin) / image_size[0]
        height = (ymax - ymin) / image_size[1]

        yolo_lines.append(f"{class_id} {x_center} {y_center} {width} {height}")

    base_name = os.path.splitext(os.path.basename(voc_xml_path))[0]
    with open(os.path.join(yolo_label_dir, f"{base_name}.txt"), 'w') as f:
        f.write("\n".join(yolo_lines))

# 示例调用
class_mapping = {'grape_cluster': 0}
convert_voc_to_yolo('path/to/xml/file.xml', 'path/to/yolo/labels/', class_mapping)

2. 环境搭建

安装依赖并克隆 YOLOv5 仓库:

# 安装 Python 环境
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117  # CUDA 版本
pip install -r requirements.txt

# 克隆 YOLOv5 仓库
git clone https://github.com/ultralytics/yolov5
cd yolov5

3. 数据配置

3.1 创建数据配置文件

创建 data.yaml 文件,定义数据集路径和类别信息:

train: ../dataset/images/train
val: ../dataset/images/val
test: ../dataset/images/test

nc: 1
names: ['grape_cluster']

4. 模型训练

4.1 配置超参数

创建或修改 hyp.scratch.yaml 文件,调整超参数(如学习率、权重衰减等)。

4.2 启动训练

运行以下命令启动训练:

python train.py --img 864 --batch 16 --epochs 50 --data data.yaml --cfg yolov5s.yaml --weights yolov5s.pt --name grape_detection
  • --img 864:输入图像大小为 864x1296(YOLOv5 自动调整)。
  • --batch 16:批量大小为 16。
  • --epochs 50:训练 50 个 epoch。
  • --cfg yolov5s.yaml:使用 YOLOv5 小型模型。
  • --weights yolov5s.pt:预训练权重。
  • --name grape_detection:保存实验结果的名称。

5. 模型推理

5.1 单张图像推理

使用训练好的模型对单张图像进行推理:

python detect.py --weights runs/train/grape_detection/weights/best.pt --img 864 --conf 0.25 --source path/to/image.jpg
5.2 批量推理

对整个文件夹的图像进行推理:

python detect.py --weights runs/train/grape_detection/weights/best.pt --img 864 --conf 0.25 --source path/to/test_images/

6. 性能评估

6.1 计算 mAP

运行以下命令评估模型性能:

python val.py --data data.yaml --weights runs/train/grape_detection/weights/best.pt --img 864 --task test

输出包括 mAP(平均精度均值)、Precision(精确率)、Recall(召回率)等指标。


7. 推理代码(Python API)

如果需要将 YOLOv5 集成到自定义代码中,可以使用以下代码:

from PIL import Image
import torch
from yolov5 import detect

# 加载模型
model = torch.hub.load('ultralytics/yolov5', 'custom', path='runs/train/grape_detection/weights/best.pt')

# 推理单张图像
img_path = 'path/to/image.jpg'
results = model(img_path)

# 显示结果
results.show()  # 可视化
print(results.pandas().xyxy[0])  # 打印检测结果

8. 总结

通过上述步骤,您可以完成基于 YOLOv5 的葡萄果园葡萄串检测任务。具体流程包括:

  1. 数据准备与格式转换(VOC 转 YOLO)。
  2. 环境搭建与数据配置。
  3. 模型训练与超参数调整。
  4. 模型推理与性能评估。

以上文字及代码仅供参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值