农业数字化|玉米地田间作物识别数据集|幼苗出苗率|杂草识别|YOLO格式|AI智能农田应用
·
农业数字化|玉米地田间作物识别数据集|幼苗出苗率|杂草识别|YOLO格式|AI智能农田应用
在智慧农业加速落地的今天,田间作物精准识别、出苗率智能统计、杂草自动化防控已成为提升种植效率与产量的核心环节。传统人工巡检效率低、误差大,而高质量标注数据集与轻量化深度学习模型,正成为破解农田视觉感知“最后一公里”的关键抓手。
📌 项目概述
本数据集为农业场景专用目标检测数据集,聚焦玉米田间真实环境,面向玉米幼苗识别、出苗率统计、杂草智能检测等核心任务,原生支持YOLO系列模型快速训练与部署,助力农业AI工程化落地。
🧾 数据集核心信息
| 信息项 | 详情 |
|---|---|
| 任务方向 | 目标检测(Object Detection) |
| 目标类别 | 玉米(corn)、杂草(weeds) |
| 数据规模 | 908张高分辨率田间实拍图像 |
| 数据集结构 | 11个细分子集,覆盖不同光照、长势、杂草类型 |
| 数据格式 | 标准YOLO标注格式,图像为JPG/PNG通用格式 |
| 核心价值 | 支撑出苗率统计、精准除草、智能巡检模型训练 |






✅ 数据集优势
- 场景纯净:无冗余背景,全为玉米田间真实环境,降低模型干扰
- 标注规范:严格遵循YOLO标注规范,开箱即用,减少数据预处理成本
- 细分充分:11个子集覆盖苗期、成株期、稀疏/稠密杂草等多样工况
- 工程友好:适配YOLOv5/v8/v10/v12等主流框架,支持端侧与云端部署
🧠 深度学习实战代码(玉米-杂草YOLO训练)
# -*- coding: utf-8 -*-
"""
玉米地杂草识别训练脚本 · 农业场景专用
适配本数据集:玉米(corn) + 杂草(weeds)二分类检测
场景经验:农田低对比度、叶片重叠、光照多变
训练策略:小批次、高增强、早停,适配农田小目标特性
"""
from ultralytics import YOLO
import torch
# ====================== 核心配置 ======================
# 数据集配置(对应本数据集目录结构)
DATA_YAML = "maize_weeds.yaml"
# 选用轻量模型,适配无人机/边缘设备部署
MODEL = "yolov8s.pt"
EPOCHS = 150
BATCH_SIZE = 16
IMAGE_SIZE = 640
# 农田场景建议:低置信度+适中IOU,减少漏检
CONF_THRESH = 0.25
IOU_THRESH = 0.45
# ====================== 训练启动 ======================
def train_maize_weeds():
# 优先使用GPU
device = 0 if torch.cuda.is_available() else "cpu"
model = YOLO(MODEL)
# 训练参数(农田数据增强经验值)
model.train(
data=DATA_YAML,
epochs=EPOCHS,
batch=BATCH_SIZE,
imgsz=IMAGE_SIZE,
device=device,
patience=20, # 早停,防止过拟合
cache=True, # 加速读取
augment=True, # 开启增强
hsv_h=0.015, # 色调(农田光照鲁棒)
hsv_s=0.3, # 饱和度
hsv_v=0.4, # 明度
degrees=10, # 旋转限制
perspective=0.001, # 轻微透视
flipud=0.1, # 上下翻转
fliplr=0.5, # 左右翻转
conf=CONF_THRESH,
iou=IOU_THRESH,
project="runs/maize_weeds",
name="yolov8s_maize",
exist_ok=True
)
# ====================== 推理验证 ======================
def detect_field_image(model_path, img_path):
"""
单张田间图像推理:输出玉米/杂草位置与置信度
"""
model = YOLO(model_path)
results = model.predict(
source=img_path,
conf=CONF_THRESH,
iou=IOU_THRESH,
imgsz=IMAGE_SIZE,
save=True,
show=False
)
# 打印出苗/杂草统计信息
for result in results:
boxes = result.boxes
corn_num = sum(1 for d in boxes.cls if int(d) == 0)
weed_num = sum(1 for d in boxes.cls if int(d) == 1)
print(f"🌽 玉米株数: {corn_num} | 🌿 杂草株数: {weed_num}")
if __name__ == "__main__":
train_maize_weeds()
# 训练完成后推理
# detect_field_image("runs/maize_weeds/yolov8s_maize/weights/best.pt", "test.jpg")
📋 配套YAML配置(maize_weeds.yaml)
# 玉米-杂草检测数据集配置 · 对齐本数据集结构
path: ./datasets/adventices-mais # 数据集根目录
train: images/train # 训练集路径
val: images/val # 验证集路径
test: images/test # 测试集(可选)
# 类别定义(与数据集标注完全一致)
nc: 2
names:
0: corn
1: weeds
🎯 典型应用场景
- 出苗率智能统计:无人机巡田→图像识别→自动计算出苗率→生成田间报表
- 精准除草机器人:实时检测杂草→定位喷药/机械除草→省药减损、保护幼苗
- 农田监测系统:边缘端轻量化部署,7×24小时监测长势与杂草入侵
- 育种辅助评估:批量分析苗期长势,为品种筛选提供客观数据
🔧 环境依赖
# 一键安装依赖
pip install ultralytics opencv-python torch torchvision pillow
📌 使用流程
- 下载数据集并解压至
datasets/adventices-mais - 配置
maize_weeds.yaml路径 - 运行训练脚本,自动完成训练与验证
- 导出
best.pt用于推理、部署、二次开发
📌 标签
#农业数字化 #玉米出苗率 #杂草识别 #YOLO数据集 #目标检测 #智慧农业 #AI农田 #农业智能化 #计算机视觉 #深度学习数据集
更多推荐




所有评论(0)