玉米雄穗目标检测数据集 | 玉米雄穗 作物表型 智慧农业 无人机巡检 小样本检测9142期

玉米雄穗目标检测数据集 | 玉米雄穗 作物表型 智慧农业 无人机巡检 小样本检测9142期

数据集概述

本数据集专注于无人机航拍视角下的玉米雄穗(tassel)检测 ,服务于农业无人机巡检、作物表型分析及智能育种。数据涵盖田间玉米雄穗图像,适配雄穗计数、抽雄期监测及生长评估等应用。

数据集核心信息

数据要素 详细说明
类别 共 1 类:玉米雄穗(tas)
数量 约 250 张图像
格式 图像为 JPG/PNG;标签为 YOLO 格式的 txt 文件(归一化坐标),含 data.yaml 配置文件
数据划分 建议按 8:2 划分,训练集 200 张,验证集 50 张
应用价值 1. 作物表型 :支撑玉米雄穗的自动计数与抽雄期监测,辅助表型分析。 2. 智能育种 :为育种材料雄穗性状评估提供量化数据。 3. 农业巡检 :为无人机巡检系统提供雄穗识别能力,支持生长监测。 4. 算法研发:为小样本目标检测、数据增强策略研究提供真实场景数据。

完整类别列表(共1类)

序号 类别名称 英文标签 说明
1 玉米雄穗 tas 玉米顶部的雄花序

数据三要素解析

类别与目标覆盖

  • 数据集定义 1 个核心类别:玉米雄穗(tas),聚焦单一目标,便于快速部署与高精度检测。
  • 雄穗位于玉米植株顶部,在航拍图像中呈羽状或分枝状结构,与叶片、茎秆有一定的视觉区分度。
  • 单类别设计降低了模型复杂度,有利于在边缘设备上实现高效推理。

数据规模与挑战

  • 图像总量约 250 张,规模较小,直接训练易导致过拟合 或泛化能力差。
  • 实际拍摄图像,已人工标注,数据质量可靠。
  • 强烈建议 :采用数据增强 (旋转、翻转、亮度调整、Mosaic、copy_paste等)扩展至 1000+ 张,提升模型泛化能力。

格式与配套资源

  • 采用通用 YOLO 格式(txt),每张图像对应一个同名标签文件,包含类别 ID 与归一化边界框坐标。
  • 提供 data.yaml 配置文件,可直接用于 YOLOv5、YOLOv8 等模型训练。
  • 附赠数据划分脚本 、训练代码 、推理与评估代码,用户可直接运行。

知识普及:玉米雄穗检测的技术要点

  • 小样本学习策略:数据量小(250张)时,必须使用强数据增强(Mosaic、MixUp、copy_paste、HSV调整等)来扩充有效样本量,降低过拟合风险。
  • copy_paste增强 :YOLOv8 内置的 copy_paste 增强可将标注的雄穗自动复制粘贴到其他图像中,极大增加正样本多样性,尤其适合小目标检测。
  • 小目标检测 :雄穗在航拍图像中可能尺寸较小,建议使用更高分辨率输入(如 imgsz=1280)或更大的模型(如 YOLOv8m/l)。
  • 关注召回率:农业计数场景中,漏检(低召回)比误检影响更大,评估时应重点关注 Recall 指标。
  • 主动学习迭代:使用当前模型预测未标注图像,筛选出"疑似雄穗"(置信度 0.3-0.6)的样本,人工标注后加入训练集,迭代提升模型性能。
  • 应用闭环:检测结果可结合无人机位置信息,生成雄穗分布图,辅助育种筛选与农艺管理。

快速开始(代码示例)

1. 准备配置文件 (data.yaml)

yaml 复制代码
train: ../datasets/corn_tas/images/train
val: ../datasets/corn_tas/images/val
nc: 1
names: ['tas']

2. 数据划分脚本 (split_data.py)

python 复制代码
import os
import random
import shutil
from pathlib import Path

def split_dataset(image_dir, label_dir, output_dir, train_ratio=0.8):
    os.makedirs(f"{output_dir}/images/train", exist_ok=True)
    os.makedirs(f"{output_dir}/images/val", exist_ok=True)
    os.makedirs(f"{output_dir}/labels/train", exist_ok=True)
    os.makedirs(f"{output_dir}/labels/val", exist_ok=True)

    images = [f for f in os.listdir(image_dir) if f.endswith(('.jpg', '.png', '.jpeg'))]
    random.seed(42)
    random.shuffle(images)

    split_idx = int(len(images) * train_ratio)
    train_files = images[:split_idx]
    val_files = images[split_idx:]

    for img_file in train_files:
        shutil.copy(f"{image_dir}/{img_file}", f"{output_dir}/images/train/{img_file}")
        txt_file = Path(img_file).with_suffix('.txt')
        if os.path.exists(f"{label_dir}/{txt_file}"):
            shutil.copy(f"{label_dir}/{txt_file}", f"{output_dir}/labels/train/{txt_file}")
        else:
            open(f"{output_dir}/labels/train/{txt_file}", 'w').close()

    for img_file in val_files:
        shutil.copy(f"{image_dir}/{img_file}", f"{output_dir}/images/val/{img_file}")
        txt_file = Path(img_file).with_suffix('.txt')
        if os.path.exists(f"{label_dir}/{txt_file}"):
            shutil.copy(f"{label_dir}/{txt_file}", f"{output_dir}/labels/val/{txt_file}")
        else:
            open(f"{output_dir}/labels/val/{txt_file}", 'w').close()

    print(f"✅ 划分完成!训练集: {len(train_files)} 张,验证集: {len(val_files)} 张")

split_dataset(
    image_dir='your_data/images',
    label_dir='your_data/labels',
    output_dir='datasets/corn_tas'
)

3. 训练脚本 (train.py)

python 复制代码
from ultralytics import YOLO
import torch

model = YOLO('yolov8m.pt')
results = model.train(
    data='datasets/corn_tas/data.yaml',
    epochs=300,
    imgsz=640,
    batch=16,
    name='corn_tas_yolov8m',
    device='cuda' if torch.cuda.is_available() else 'cpu',
    workers=4,
    optimizer='AdamW',
    lr0=0.001,
    weight_decay=0.0005,
    patience=50,
    project='runs/corn',
    amp=True,
    close_mosaic=25,
    # 强数据增强
    hsv_h=0.015,
    hsv_s=0.7,
    hsv_v=0.5,
    translate=0.2,
    scale=0.5,
    fliplr=0.5,
    mosaic=1.0,
    mixup=0.5,
    copy_paste=0.3,
    degrees=15.0,
    shear=2.0
)

4. 推理脚本 (predict.py)

python 复制代码
from ultralytics import YOLO

model = YOLO('runs/corn/corn_tas_yolov8m/weights/best.pt')
results = model.predict(
    source='test_field.jpg',
    save=True,
    conf=0.25,
    iou=0.45,
    project='runs/predict',
    name='corn_test',
    imgsz=640
)

for result in results:
    boxes = result.boxes
    print(f"检测到 {len(boxes)} 个雄穗")

标签

玉米雄穗 作物表型 智慧农业 无人机巡检 小样本检测 目标检测 YOLO格式 深度学习数据集 计算机视觉

相关推荐
zhippt_10143 小时前
图转PPT实测:截图和课件图片怎么变成可编辑幻灯片
人工智能·面试·powerpoint
TangGeeA3 小时前
Control CLI Tutorial:用 aio 从终端控制 aiopsterm
运维·人工智能
king13598745503 小时前
AI Agent 端云协同选型:Node.js 任务成本算例与权限检查清单(2027—2028 展望)
人工智能·ai·node.js·ai agent
了不起的云计算V3 小时前
DDR4与DDR5如何选?海光双路新品给出分层部署思路
人工智能
鲜于言悠9053 小时前
PentAGI拆解:能自动做渗透测试的AI多智能体
人工智能
核数聚3 小时前
深度拆解核数聚双平台架构:星云Nebula(数据制造)+星枢Nexus(调度中枢)如何构建AI数据交付闭环
人工智能·机器人·核数聚
蓝策电子3 小时前
2026之后,地下停车场智能化的3个核心趋势
人工智能·物联网
林伽一3 小时前
修复流程被开源成智能体技能,产业侧开始分工|2026年10月26日
人工智能·科技·ai·开源
司曜珩4 小时前
构建AI友好型网站:用JSON-LD给企业官网上“户口”的实战指南
人工智能·json