YOLOv11农田害虫目标检测数据集
📊 数据集基本信息
- 目标类别: [‘Agrotis’, ‘Athetis lepigone’, ‘Athetis lineosa’, ‘Chilo suppressalis’, ‘Cnaphalocrocis medinalis Guenee’, ‘Creatonotus transiens’, ‘Diaphania indica’, ‘Endotricha consocia’, ‘Euproctis sparsa’, ‘Gryllidae’, ‘Gryllotalpidae’, ‘Helicoverpa armigera’, ‘Holotrichia oblita Faldermann’, ‘Loxostege sticticalis’, ‘Mamestra brassicae’, ‘Maruca testulalis Geyer’, ‘Mythimna separata’, ‘Naranga aenescens Moore’, ‘Nilaparvata’, ‘Paracymoriza taiwanalis’, ‘Sesamia inferens’, ‘Sirthenea flavipes’, ‘Sogatella furcifera’, ‘Spodoptera exigua’, ‘Spoladea recurvalis’, ‘Staurophora celsia’, ‘Timandra Recompta’, ‘Trichoptera’]
- 训练集:509 张
- 验证集:153 张
- 测试集:55 张
- 总计:717 张
📄 data.yaml 配置信息
该数据集提供了data.yaml文件,内容如下:
train:../train/imagesval:../valid/imagestest:../test/imagesnc:28names:['Agrotis','Athetis lepigone','Athetis lineosa','Chilo suppressalis','Cnaphalocrocis medinalis Guenee','Creatonotus transiens','Diaphania indica','Endotricha consocia','Euproctis sparsa','Gryllidae','Gryllotalpidae','Helicoverpa armigera','Holotrichia oblita Faldermann','Loxostege sticticalis','Mamestra brassicae','Maruca testulalis Geyer','Mythimna separata','Naranga aenescens Moore','Nilaparvata','Paracymoriza taiwanalis','Sesamia inferens','Sirthenea flavipes','Sogatella furcifera','Spodoptera exigua','Spoladea recurvalis','Staurophora celsia','Timandra Recompta','Trichoptera']🖼️ 标注可视化
📝 数据集分析
YOLOv11农田害虫目标检测数据集
该数据集专注于农田生态系统中的各类害虫识别,涵盖了从幼虫到成虫的完整生命周期形态。通过高精度标注和多样化场景采集,为农业害虫监测与防治提供了可靠的数据支撑,有助于提升精准农业管理水平。
数据分布方面,训练集包含509张图像,验证集153张,测试集55张,整体比例约为7:2:1。这种划分充分考虑了模型训练、调优和性能评估的需求,能够有效支持深度学习模型的开发与验证工作。
标注质量上,所有图像均经过专业人员严格审核,确保每个目标框的精确性。标注规范统一,符合工业级标准,为后续模型训练奠定了坚实基础。
该数据集可广泛应用于现代农业领域,特别是在害虫预警系统、智能植保设备以及农业信息化平台中发挥重要作用,助力实现害虫防控的智能化与精准化管理。
YOLOv11训练步骤
一、环境安装
pipinstallultralytics# 依赖要求:Python≥3.8,PyTorch≥1.8。安装完成后可通过 `yolo checks` 验证环境。二、数据集准备(YOLO格式)
1. 目录结构
数据集必须严格按以下结构组织:
dataset/ ├── train/ │ ├── images/ # 训练图片(jpg/png) │ └── labels/ # YOLO格式标注(txt) ├── val/ │ ├── images/ │ └── labels/ └── data.yaml # 数据集配置文件2. YOLO标注格式
每个*.txt文件对应一张图片,每行格式为:
class_id center_x center_y width height所有数值均为相对于图片宽高的归一化值(0~1)。
3. data.yaml 配置文件
# data.yamlpath:../dataset# 数据集根目录(相对或绝对路径)train:train/images# 训练集图片路径val:val/images# 验证集图片路径test:test/images# 测试集图片路径(可选)# 类别信息nc:2# 类别数量names:['class1','class2']# 类别名称列表三、模型选择
YOLO11 提供 5 种尺度,官方命名规则为yolo11{n/s/m/l/x}.pt:
| 模型 | 参数量 | 适用场景 |
|---|---|---|
yolo11n | 2.6M | 边缘设备、速度优先 |
yolo11s | 9.4M | 平衡精度与速度 |
yolo11m | 20.1M | 常规GPU训练 |
yolo11l | 25.3M | 高精度需求 |
yolo11x | 56.9M | 极致精度、算力充足 |
四、模型训练
方式1:Python API(推荐)
创建train.py:
fromultralyticsimportYOLOdefmain():# 加载预训练模型(推荐:基于COCO预训练权重微调)model=YOLO("yolo11m.pt")# 训练参数train_params={'data':'data.yaml',# 数据集配置文件'epochs':100,# 训练轮次'imgsz':640,# 输入图像尺寸'batch':16,# 批次大小(根据显存调整)'device':'0',# GPU设备号,'cpu'表示CPU训练'workers':8,# 数据加载线程数'optimizer':'SGD',# 优化器:SGD/Adam/AdamW'lr0':0.01,# 初始学习率'patience':50,# 早停耐心值'save':True,# 保存模型'project':'runs/train',# 项目保存路径'name':'exp',# 实验名称'single_cls':False,# 单类别检测设为True'close_mosaic':10,# 最后N轮关闭马赛克增强}# 开始训练results=model.train(**train_params)# 输出最佳模型路径print(f"Best model saved at:{results.best}")if__name__=='__main__':main()三种模型加载方式对比:
# 方式A:从YAML构建全新模型(从头训练,适合网络结构改进)model=YOLO("yolo11m.yaml")# 方式B:加载预训练权重(最常用,推荐)model=YOLO("yolo11m.pt")# 方式C:构建新模型并迁移预训练权重(改进网络后使用)model=YOLO("yolo11m.yaml").load("yolo11m.pt")方式2:命令行 CLI
# 基础训练yolo detect traindata=data.yamlmodel=yolo11m.ptepochs=100imgsz=640batch=16device=0# 多GPU训练yolo detect traindata=data.yamlmodel=yolo11m.ptepochs=100device=0,1# 从YAML+预训练权重训练yolo detect traindata=data.yamlmodel=yolo11m.yamlpretrained=yolo11m.ptepochs=100五、关键训练参数说明
| 参数 | 说明 | 建议值 |
|---|---|---|
epochs | 训练总轮次 | 100~300 |
imgsz | 输入尺寸 | 640(标准) |
batch | 批次大小 | 8/16/32(根据显存) |
device | 训练设备 | 0(单GPU)、0,1(多GPU)、cpu、mps(Apple芯片) |
workers | 数据加载线程 | 8~16(Windows建议≤8) |
optimizer | 优化器 | SGD(默认)、Adam、AdamW |
lr0/lrf | 初始/最终学习率 | 0.01 / 0.01 |
momentum | SGD动量 | 0.937 |
weight_decay | 权重衰减 | 0.0005 |
single_cls | 单类别模式 | True/False |
resume | 恢复中断训练 | True(需指定last.pt) |
amp | 自动混合精度 | True(默认开启,省显存) |
六、模型验证
创建val.py:
fromultralyticsimportYOLOdefmain():# 加载训练好的最佳权重model=YOLO('runs/train/exp/weights/best.pt')# 验证metrics=model.val(data='data.yaml',split='val',# 验证集:'val' 或 'test'imgsz=640,batch=16,iou=0.6,# NMS IoU阈值device='0',save_json=False,# 是否保存COCO格式JSON)# 输出关键指标print(f"mAP50-95:{metrics.box.map}")# mAP@0.5:0.95print(f"mAP50:{metrics.box.map50}")# mAP@0.5print(f"mAP75:{metrics.box.map75}")# mAP@0.75if__name__=='__main__':main()CLI 方式:
yolo detect valmodel=runs/train/exp/weights/best.ptdata=data.yaml七、模型推理/预测
创建predict.py:
fromultralyticsimportYOLOimportcv2defmain():model=YOLO('runs/train/exp/weights/best.pt')# 单张图片推理results=model.predict(source='test_images/',# 图片路径、文件夹、URL或摄像头索引(0)imgsz=640,conf=0.25,# 置信度阈值iou=0.45,# NMS IoU阈值device='0',save=True,# 保存结果图show=False,# 是否弹窗显示)# 遍历结果forresultinresults:boxes=result.boxes# 检测框masks=result.masks# 分割掩码(如使用分割模型)probs=result.probs# 分类概率# 获取坐标、置信度、类别forboxinboxes:x1,y1,x2,y2=box.xyxy[0].tolist()conf=box.conf[0].item()cls=int(box.cls[0].item())print(f"Class:{cls}, Conf:{conf:.2f}, Box: [{x1:.1f},{y1:.1f},{x2:.1f},{y2:.1f}]")if__name__=='__main__':main()CLI 方式:
yolo detect predictmodel=runs/train/exp/weights/best.ptsource=test_images/save=True## 数据集下载> 小郭AI日志