玉米雄穗目标检测数据集 | 玉米雄穗 作物表型 智慧农业 无人机巡检 小样本检测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)
train:../datasets/corn_tas/images/trainval:../datasets/corn_tas/images/valnc:1names:['tas']2. 数据划分脚本 (split_data.py)
importosimportrandomimportshutilfrompathlibimportPathdefsplit_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=[fforfinos.listdir(image_dir)iff.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:]forimg_fileintrain_files:shutil.copy(f"{image_dir}/{img_file}",f"{output_dir}/images/train/{img_file}")txt_file=Path(img_file).with_suffix('.txt')ifos.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()forimg_fileinval_files:shutil.copy(f"{image_dir}/{img_file}",f"{output_dir}/images/val/{img_file}")txt_file=Path(img_file).with_suffix('.txt')ifos.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)
fromultralyticsimportYOLOimporttorch 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'iftorch.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)
fromultralyticsimportYOLO 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)forresultinresults:boxes=result.boxesprint(f"检测到{len(boxes)}个雄穗")标签
玉米雄穗作物表型智慧农业无人机巡检小样本检测目标检测YOLO格式深度学习数据集计算机视觉