航拍农田杂草检测数据集-1.2k张航拍图像

航拍农田杂草检测数据集-1.2k张航拍图像

  • 航拍农田杂草检测数据集介绍
  • 航拍农田杂草检测数据集-1.2k张航拍图像
    • [📦 1. 环境配置](#📦 1. 环境配置 "#_1__39")
  • [安装 YOLOv8 官方库 ultralytics](#安装 YOLOv8 官方库 ultralytics "#_YOLOv8__ultralytics_48")
    • [📁 2. 数据准备](#📁 2. 数据准备 "#_2__52")
      • [2.1 数据标注格式(YOLO)](#2.1 数据标注格式(YOLO) "#21_YOLO_53")
      • [2.2 文件结构示例](#2.2 文件结构示例 "#22__62")
      • [2.3 创建 data.yaml 配置文件](#2.3 创建 data.yaml 配置文件 "#23__datayaml__72")
    • [🚀 3. 模型训练](#🚀 3. 模型训练 "#_3__81")
    • [📈 4. 模型验证与测试](#📈 4. 模型验证与测试 "#_4__120")
    • [🧠 5. 自定义推理脚本(Python)](#🧠 5. 自定义推理脚本(Python) "#_5_Python_180")
    • [🛠 6. 部署建议](#🛠 6. 部署建议 "#_6__195")

航拍农田杂草检测数据集介绍

数据集概述

是一个用于计算机视觉项目的航拍图像数据集,专注于农田中作物与杂草的检测。

核心特点

数据集基本信息

​​数据量​​:1.2k张航拍图像

​​标注类型​​:对象检测(Object Detection)

​​使用模型​​:YOLOv5

​​类别​​:2类(crop作物和weed杂草)

数据集特点

航拍视角:所有图像均为农田的航拍视角,提供了独特的观察角度

专业标注:杂草区域使用粉色标记点进行标注

数据集应用

该数据集非常适合用于:

农业自动化研究

杂草检测算法开发

计算机视觉模型泛化能力测试

精准农业技术开发

航拍农田杂草检测数据集-1.2k张航拍图像

本教程介绍如何使用 YOLOv8 对航拍农田杂草等目标进行识别与检测。涵盖环境配置、数据准备、训练模型、模型推理和部署等全过程。


📦 1. 环境配置

建议使用 Python 3.8+,并确保支持 CUDA 的 GPU 环境。

bash 复制代码
# 创建并激活虚拟环境(可选)
python -m venv yolov8_env
source yolov8_env/bin/activate  # Windows 用户使用 yolov8_env\Scripts\activate

AI写代码bash
123

安装 YOLOv8 官方库 ultralytics

复制代码
pip install ultralytics

AI写代码bash
1

📁 2. 数据准备

2.1 数据标注格式(YOLO)

每张图像对应一个 .txt 文件,每行代表一个目标,格式如下:

xml 复制代码
<class_id> <x_center> <y_center> <width> <height>

AI写代码plaintext
1

所有值为相对比例(0~1)。

类别编号从 0 开始。

2.2 文件结构示例

kotlin 复制代码
datasets/
├── images/
│   ├── train/
│   └── val/
├── labels/
│   ├── train/
│   └── val/

AI写代码plaintext
1234567

2.3 创建 data.yaml 配置文件

bash 复制代码
path: ./datasets
train: images/train
val: images/val

nc: 11
names: ['Bent_Insulator', 'Broken_Insulator_Cap', '', ...]

AI写代码yaml
123456

🚀 3. 模型训练

YOLOv8 提供多种模型:yolov8n, yolov8s, yolov8m, yolov8l, yolov8x。可根据设备性能选择。

ini 复制代码
yolo detect train \
  model=yolov8s.pt \
  data=./data.yaml \
  imgsz=640 \
  epochs=50 \
  batch=16 \
  project=weed_detection \
  name=yolov8s_crop_weed

AI写代码bash
12345678
参数 类型 默认值 说明
model 字符串 - 指定基础模型架构文件或预训练权重文件路径(.pt/.yaml
data 字符串 - 数据集配置文件路径(YAML 格式),包含训练/验证路径和类别定义
imgsz 整数 640 输入图像的尺寸(像素),推荐正方形尺寸(如 640x640)
epochs 整数 100 训练总轮次,50 表示整个数据集会被迭代 50 次
batch 整数 16 每个批次的样本数量,值越大需要越多显存
project 字符串 - 项目根目录名称,所有输出文件(权重/日志等)将保存在此目录下
name 字符串 - 实验名称,用于在项目目录下创建子文件夹存放本次训练结果

关键参数补充说明:

  1. model=yolov8s.pt

    • 使用预训练的 YOLOv8 small 版本(平衡速度与精度)
    • 可用选项:yolov8n.pt(nano)/yolov8m.pt(medium)/yolov8l.pt(large)
  2. data=./data.yaml

    yaml 复制代码
    # 典型 data.yaml 结构示例
    path: ../datasets/weeds
    train: images/train
    val: images/val
    names:
      0: Bent_Insulator
      1: Broken_Insulator_Cap
      2: ...
      3: ...
    
    AI写代码yaml
    123456789

📈 4. 模型验证与测试

4.1 验证模型性能

ini 复制代码
yolo detect val \
  model=runs/detect/yolov8s_crop_weed/weights/best.pt \
  data=./data.yaml

AI写代码bash
123
参数 类型 必需 说明
model 字符串 要验证的模型权重路径(通常为训练生成的 best.ptlast.pt
data 字符串 与训练时相同的 YAML 配置文件路径,需包含验证集路径和类别定义

关键参数详解

  1. model=runs/detect/yolov8s_crop_weed/weights/best.pt

    • 使用训练过程中在验证集表现最好的模型权重(best.pt

    • 替代选项:last.pt(最终epoch的权重)

    • 路径结构说明:

      bash 复制代码
      runs/detect/
      └── [训练任务名称]/
          └── weights/
              ├── best.pt   # 验证指标最优的模型
              └── last.pt   # 最后一个epoch的模型
      
      AI写代码
      12345
  2. data=./data.yaml

    • 必须与训练时使用的配置文件一致

    • 确保验证集路径正确:

      yaml 复制代码
      val: images/val  # 验证集图片路径
      names:
        0: crop
        1: weed
      
      AI写代码yaml
      1234

常用可选参数

参数 示例值 作用
batch 16 验证时的批次大小
imgsz 640 输入图像尺寸(需与训练一致)
conf 0.25 置信度阈值(0-1)
iou 0.7 NMS的IoU阈值
device 0/cpu 选择计算设备
save_json True 保存结果为JSON文件

典型输出指标

css 复制代码
Class     Images  Instances      P      R      mAP50  mAP50-95
all        100       752      0.891  0.867    0.904    0.672
crop       100       412      0.912  0.901    0.927    0.701
weed       100       340      0.870  0.833    0.881    0.643

AI写代码text
1234

4.2 推理测试图像

ini 复制代码
yolo detect predict \
  model=runs/detect/yolov8s_crop_weed/weights/best.pt \
  source=./datasets/images/val \
  save=True

AI写代码bash
1234

🧠 5. 自定义推理脚本(Python)

ini 复制代码
from ultralytics import YOLO
import cv2

# 加载模型
model = YOLO('runs/detect/yolov8s_crop_weed/weights/best.pt')

# 推理图像
results = model('test.jpg')

# 可视化并保存结果
results[0].show()
results[0].save(filename='result.jpg')

AI写代码python
运行
123456789101112

🛠 6. 部署建议

✅ 本地运行:通过 Python 脚本直接推理。

🌐 Web API:可用 Flask/FastAPI 搭建检测接口。

📦 边缘部署:YOLOv8 支持导出为 ONNX,便于在 Jetson、RKNN 等平台上部署。

导出示例:

ini 复制代码
yolo export model=best.pt format=onnx

AI写代码bash
1

📌 总结流程

阶段 内容
✅ 环境配置 安装 ultralytics, PyTorch 等依赖
✅ 数据准备 标注图片、组织数据集结构、配置 YAML
✅ 模型训练 使用命令行开始训练 YOLOv8 模型
✅ 验证评估 检查模型准确率、mAP 等性能指标
✅ 推理测试 运行模型检测实际图像目标
✅ 高级部署 导出模型,部署到 Web 或边缘设备
相关推荐
爱喝矿泉水的猛男1 小时前
非定长滑动窗口(持续更新)
算法·leetcode·职场和发展
YuTaoShao1 小时前
【LeetCode 热题 100】131. 分割回文串——回溯
java·算法·leetcode·深度优先
YouQian7722 小时前
Traffic Lights set的使用
算法
go54631584653 小时前
基于深度学习的食管癌右喉返神经旁淋巴结预测系统研究
图像处理·人工智能·深度学习·神经网络·算法
aramae3 小时前
大话数据结构之<队列>
c语言·开发语言·数据结构·算法
大锦终4 小时前
【算法】前缀和经典例题
算法·leetcode
想变成树袋熊4 小时前
【自用】NLP算法面经(6)
人工智能·算法·自然语言处理
cccc来财4 小时前
Java实现大根堆与小根堆详解
数据结构·算法·leetcode
Coovally AI模型快速验证5 小时前
数据集分享 | 智慧农业实战数据集精选
人工智能·算法·目标检测·机器学习·计算机视觉·目标跟踪·无人机
墨尘游子5 小时前
目标导向的强化学习:问题定义与 HER 算法详解—强化学习(19)
人工智能·python·算法