无人机航拍玉米雄穗检测数据集
【高质量数据集,未经过数据增强】
【图片分辨率为3648 x 2736】
基本信息:该数据集包含 361 张图像。【训练集186,测试集175】
标注信息:数据集中的玉米雄穗采用 YOLOv11 格式进行标注。
【无人机采集】

无人机航拍玉米雄穗检测数据集概览表
| 项目 | 描述 |
|---|---|
| 数据集名称 | 玉米雄穗无人机检测数据集(高质量,未增强) |
| 总图像数量 | 361 张 |
| 训练集 / 测试集划分 | 训练集:186 张 测试集:175 张 |
| 采集设备 | 无人机(具体型号未注明,典型农业无人机如 DJI Phantom/Mavic 系列) |
| 图像分辨率 | 3648 × 2736 像素(高分辨率,适合精细目标检测) |
| 目标类别 | 1 类:tassel(玉米雄穗) |
| 标注格式 | YOLO 格式(.txt 文件,每行格式:class_id center_x center_y width height,归一化坐标) |
| 数据增强 | ❌ 未进行任何数据增强(原始真实场景图像) |
| 应用场景 | 精准农业、玉米生长监测、抽雄期识别、育种表型分析、无人机智能巡田 |
| 任务类型 | 目标检测(Object Detection) |

博主推荐文件组织结构
maize_tassel_dataset/
├── images/
│ ├── train/ # 186 张
│ └── test/ # 175 张
├── labels/
│ ├── train/ # 对应 YOLO .txt 标注
│ └── test/
└── dataset.yaml # YOLO 模型配置文件
dataset.yaml 示例(适用于 YOLOv8/v11)
train: ./images/train
val: ./images/test
nc: 1
names: ['tassel']
注:尽管标注提及 “YOLOv11 格式”,但 YOLO 标注格式自 YOLOv5 起保持一致,实际为标准 YOLO TXT 格式,可直接用于 YOLOv5/v8/v10 等框架。

该数据集适用于训练轻量级或高精度目标检测模型,服务于 智慧农业 与 作物表型组学研究。
以下是基于 玉米雄穗检测数据集(361 张高分辨率图像,YOLO 格式标注)的完整 YOLOv8 训练与检测系统实现方案,包含:
✅ YOLOv8 训练代码
✅ 数据集配置文件
✅ 推理脚本(图像/视频/批量)
✅ Web 检测系统(Django + Bootstrap)
✅ 雄穗计数与生长分析功能

一、项目目录结构
maize_tassel_yolov8/
├── data/
│ ├── images/
│ │ ├── train/ # 186 张
│ │ └── test/ # 175 张
│ ├── labels/
│ │ ├── train/
│ │ └── test/
│ └── dataset.yaml
├── models/
│ └── best.pt # 训练后模型
├── train.py # YOLOv8 训练脚本
├── infer.py # 推理脚本
├── web_app/
│ ├── views.py
│ ├── models.py
│ ├── urls.py
│ └── templates/
│ └── index.html
└── requirements.txt
二、requirements.txt
ultralytics==8.2.0
opencv-python==4.8.0
numpy==1.24.3
pillow==9.5.0
django==4.2.7
matplotlib==3.6.3
安装:
pip install -r requirements.txt
三、data/dataset.yaml
train: ../data/images/train
val: ../data/images/test
nc: 1
names: ['tassel']
✅ 确保
images/train和labels/train中的文件名一一对应(如001.jpg↔001.txt)
四、train.py —— YOLOv8 训练代码
# train.py
from ultralytics import YOLO
if __name__ == "__main__":
# 加载预训练模型(推荐 yolov8n 或 yolov8s,适合小目标)
model = YOLO("yolov8n.pt")
# 开始训练
results = model.train(
data="data/dataset.yaml",
epochs=100,
imgsz=1280, # 高分辨率图像建议使用 1280(原图 3648x2736 缩放)
batch=8, # 根据 GPU 显存调整(若 OOM 可设为 4 或 2)
device=0, # 使用 GPU;无 GPU 则改为 "cpu"
name="maize_tassel_yolov8n",
project="runs/train",
patience=20, # 早停:20 轮无提升则停止
save=True,
exist_ok=True
)
print(f"✅ 训练完成!最佳模型路径: {results.save_dir}/weights/best.pt")
为什么用
imgsz=1280?
原图 3648×2736 分辨率极高,直接输入会显存溢出。YOLOv8 支持大尺寸输入以保留小目标(雄穗)细节,1280 是平衡精度与显存的常用选择。
运行训练:
python train.py
五、infer.py —— 推理与雄穗计数
# infer.py
from ultralytics import YOLO
import cv2
import os
model = YOLO("runs/train/maize_tassel_yolov8n/weights/best.pt")
def detect_tassels(image_path, conf=0.3):
results = model(image_path, conf=conf)
annotated_img = results[0].plot()
# 雄穗数量
tassel_count = len(results[0].boxes)
# 保存结果
output_path = f"output_{os.path.basename(image_path)}"
cv2.imwrite(output_path, annotated_img)
print(f"✅ 检测到 {tassel_count} 个玉米雄穗,结果保存至: {output_path}")
return tassel_count, output_path
# 示例:单张图像
detect_tassels("test_field.jpg")
# 批量推理(可选)
# for img in os.listdir("batch_images"):
# detect_tassels(os.path.join("batch_images", img))
六、Django Web 检测系统
1. web_app/models.py
from django.db import models
class TasselDetection(models.Model):
image = models.ImageField(upload_to='uploads/')
result_image = models.ImageField(upload_to='results/', null=True)
tassel_count = models.IntegerField(default=0)
timestamp = models.DateTimeField(auto_now_add=True)
field_name = models.CharField(max_length=100, default="试验田A")
2. web_app/views.py
from django.shortcuts import render
from django.http import JsonResponse
from django.core.files.storage import FileSystemStorage
from .models import TasselDetection
from ultralytics import YOLO
import cv2
import os
# 全局加载模型(避免重复加载)
model = YOLO("runs/train/maize_tassel_yolov8n/weights/best.pt")
def index(request):
return render(request, 'index.html')
def detect_tassel_web(request):
if request.method == "POST" and request.FILES.get('image'):
uploaded_file = request.FILES['image']
fs = FileSystemStorage()
filename = fs.save(uploaded_file.name, uploaded_file)
input_path = fs.path(filename)
output_dir = os.path.join(fs.location, 'results')
os.makedirs(output_dir, exist_ok=True)
output_path = os.path.join(output_dir, f"result_{filename}")
# 推理
results = model(input_path, conf=0.3)
annotated_img = results[0].plot()
cv2.imwrite(output_path, annotated_img)
tassel_count = len(results[0].boxes)
# 保存记录
record = TasselDetection.objects.create(
image=uploaded_file,
result_image=f'results/result_{filename}',
tassel_count=tassel_count
)
return JsonResponse({
'result_url': fs.url(f'results/result_{filename}'),
'tassel_count': tassel_count
})
return JsonResponse({'error': '请上传图像'})
3. templates/index.html
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>玉米雄穗智能检测系统</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="bg-green-50">
<div class="max-w-4xl mx-auto p-6">
<h1 class="text-2xl font-bold text-center mb-6"> 玉米雄穗无人机检测系统</h1>
<form id="uploadForm" enctype="multipart/form-data" class="mb-6">
<input type="file" name="image" accept=".jpg,.png" class="block w-full mb-4">
<button type="submit" class="bg-blue-600 text-white px-4 py-2 rounded">上传并检测</button>
</form>
<div id="result" class="hidden">
<img id="resultImg" class="max-w-full border rounded shadow">
<div class="mt-4 p-4 bg-white rounded">
<p class="text-lg">检测到雄穗数量:<span id="count" class="font-bold text-green-700"></span> 个</p>
</div>
</div>
</div>
<script>
document.getElementById('uploadForm').onsubmit = async (e) => {
e.preventDefault();
const formData = new FormData(e.target);
const res = await fetch('/detect/', {method: 'POST', body: formData});
const data = await res.json();
if (data.result_url) {
document.getElementById('resultImg').src = data.result_url;
document.getElementById('count').textContent = data.tassel_count;
document.getElementById('result').classList.remove('hidden');
}
};
</script>
</body>
</html>
4. 启动 Web 系统
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
访问:http://127.0.0.1:8000
七、应用场景扩展
| 应用方向 | 功能说明 |
|---|---|
| 育种研究 | 自动统计不同品种雄穗数量,评估抽雄一致性 |
| 农情监测 | 无人机巡田 → 实时生成雄穗密度热力图 |
| 产量预估 | 雄穗数量与最终产量相关性建模 |
| AI 农机 | 集成至喷药/授粉无人机,实现精准作业 |
✅ 总结
- 轻量高效:YOLOv8n 在保持高精度的同时适合边缘部署
- 农业专用:针对高分辨率农田图像优化
- 端到端系统:从上传到计数,支持科研与生产场景
浙公网安备 33010602011771号