智慧农业-无人机枸杞树病害检测数据集 深度学习框架基于YOLOV8枸杞病害检测系统 无人机智慧农业枸杞病害巡检

智慧农业-无人机枸杞树病害检测数据集 深度学习框架基于YOLOV8枸杞病害检测系统 无人机智慧农业枸杞病害巡检

无人机枸杞树病害目标检测测数据集
数量:1539张数据集
"训练集:1083""验证集:304"“测试集:152”
类别数量:2个对象类别
类别类型:“healthy健康作物”, “stressed病害作物(如点片状发病区、连片扩散区、叶片卷曲程度、病斑面积占比、初期病斑、局部黄化、大面积枯萎、组织坏死)”

在这里插入图片描述
数据集类型图片数量
总计1539
训练集1083
验证集304
测试集152

类别信息如下表所示:

类别索引类别名称描述
0healthy(健康作物)表示没有受到病害影响的枸杞树区域。
1stressed(病害作物)包括点片状发病区、连片扩散区、叶片卷曲程度、病斑面积占比、初期病斑、局部黄化、大面积枯萎、组织坏死等多种病害情况。

这个表格简要概括了您提供的数据集的基本结构和内容。如果您需要更详细的信息或有特定格式的需求,请告知我进一步调整。

在这里插入图片描述


1

在这里插入图片描述


1

在这里插入图片描述

✅ 一、数据集概览表

项目内容
数据集名称无人机枸杞树病害检测数据集
总图像数1,539 张(航拍 RGB 图像)
类别数量2 类
类别标签0: healthy(健康作物)1: stressed(病害作物)
病害类型点片状发病区、连片扩散区、叶片卷曲、病斑面积占比高、初期病斑、局部黄化、大面积枯萎、组织坏死等
数据划分- 训练集(train):1,083 张- 验证集(val):304 张- 测试集(test):152 张
标注格式YOLO 格式.txt 文件,归一化坐标)
兼容模型YOLOv5 / YOLOv6 / YOLOv8 / YOLOv11 等

✅ 二、目录结构(标准 YOLO 格式)

确保你的数据组织如下:

goji_blight_dataset/ ├── images/ │ ├── train/ # 1083 张 │ ├── val/ # 304 张 │ └── test/ # 152 张 ├── labels/ │ ├── train/ # 对应 .txt 标签 │ ├── val/ │ └── test/ └── data.yaml # 配置文件(必须) 

✅ 三、data.yaml 配置文件

创建 goji_blight_dataset/data.yaml

# goji_blight_dataset/data.yamltrain: ./images/train val: ./images/val test: ./images/test nc:2names:['healthy','stressed']
⚠️ 路径为相对路径,与训练脚本同级。

✅ 四、YOLOv8 完整训练代码(Python)

保存为 train_goji_blight.py

# -*- coding: utf-8 -*-""" 无人机枸杞树病害检测 - YOLOv8 训练脚本 支持:2 类目标检测(healthy / stressed) 作者:AI助手 """import os from ultralytics import YOLO import torch # -----------------------------# 1. 检查数据集路径是否存在# ----------------------------- dataset_path ="goji_blight_dataset"ifnot os.path.exists(dataset_path):raise FileNotFoundError(f"❌ 数据集路径 '{dataset_path}' 不存在!请检查目录结构。")# -----------------------------# 2. 自动选择设备(GPU/CPU)# ----------------------------- device ='cuda'if torch.cuda.is_available()else'cpu'print(f"🚀 使用设备: {device}")# -----------------------------# 3. 加载预训练 YOLOv8 模型# -----------------------------# 推荐使用 yolov8s(平衡速度与精度),若部署到边缘设备可用 yolov8n model = YOLO('yolov8s.pt')# 首次运行会自动下载权重# -----------------------------# 4. 开始训练(关键参数已优化)# ----------------------------- results = model.train(# 数据配置 data=os.path.join(dataset_path,'data.yaml'),# 指向 data.yaml# 训练参数 epochs=100,# 训练轮数(100 足够收敛) imgsz=1280,# 输入图像尺寸(提升小病斑检出率) batch=16,# 批大小(RTX 3060 可设 16~32) name='goji_yolov8s_1280',# 实验名称,结果保存在 runs/detect/ 下# 设备 device=device,# 数据增强(针对航拍作物图像定制) hsv_h=0.015,# 色调扰动(模拟不同光照) hsv_s=0.7,# 饱和度(应对绿/黄/枯色变化) hsv_v=0.5,# 亮度(应对阴影/强光) degrees=10.0,# 旋转 ±10°(模拟无人机偏航) translate=0.1,# 平移 10% scale=0.5,# 缩放(模拟飞行高度变化) mosaic=1.0,# ✅ 必开!将小病斑拼接到新背景,提升召回率 mixup=0.1, flipud=0.0,# 不上下翻转(农田通常不倒置) fliplr=0.5,# 左右翻转(合理)# 训练策略 patience=20,# 早停:20 轮验证损失无改善 save_period=10,# 每 10 轮保存一次 checkpoint workers=8,# 数据加载线程数 cache=False# 若内存充足可设 True 加速训练)print("✅ 训练完成!")print(f"📌 最佳模型路径: runs/detect/goji_yolov8s_1280/weights/best.pt")

✅ 五、命令行快速训练(可选)

yolo detect train \data=goji_blight_dataset/data.yaml \model=yolov8s.pt \epochs=100\imgsz=1280\batch=16\name=goji_yolov8s_1280 \device=0

✅ 六、模型评估(测试集性能)

# evaluate_model.pyfrom ultralytics import YOLO # 加载最佳模型 model = YOLO('runs/detect/goji_yolov8s_1280/weights/best.pt')# 在测试集上评估 metrics = model.val( data='goji_blight_dataset/data.yaml', split='test'# 指定使用 test 集)# 打印关键指标print("📊 测试集评估结果:")print(f" [email protected] : {metrics.box.map50:.4f}")print(f" [email protected]:0.95: {metrics.box.map:.4f}")print(f" Precision : {metrics.box.mp:.4f}")print(f" Recall : {metrics.box.mr:.4f}")
💡 预期性能[email protected] > 0.85(高质量航拍数据集)Recall > 0.80(避免漏检病害区域)

✅ 七、推理脚本(单图 + 批量)

1. 单图推理并保存结果

# infer_single.pyfrom ultralytics import YOLO model = YOLO('best.pt')# 替换为你的 best.pt 路径# 推理单张图像 results = model.predict( source='goji_field.jpg',# 输入图像路径 conf=0.3,# 置信度阈值(病害检测可设低些) iou=0.45,# NMS IoU 阈值 save=True,# 保存带框图像到 runs/detect/... show=False# 不显示窗口)print("✅ 检测结果已保存!")

2. 批量处理并生成病害报告

# infer_batch_report.pyfrom ultralytics import YOLO import os import pandas as pd model = YOLO('best.pt') input_dir ='field_images/'# 待检测图像目录 output_dir ='detected_results/' os.makedirs(output_dir, exist_ok=True) report =[]for img_name in os.listdir(input_dir):if img_name.lower().endswith(('.jpg','.png','.jpeg')): img_path = os.path.join(input_dir, img_name) results = model.predict(img_path, conf=0.3, save=True)for r in results:# 统计每张图的病害区域数量 stressed_count =sum(1for cls in r.boxes.cls ifint(cls)==1) healthy_count =len(r.boxes)- stressed_count report.append({'image': img_name,'healthy_regions': healthy_count,'stressed_regions': stressed_count,'total_detections':len(r.boxes)})# 保存 CSV 报告 df = pd.DataFrame(report) df.to_csv(os.path.join(output_dir,'goji_health_report.csv'), index=False)print(f"✅ 病害统计报告已生成: {output_dir}/goji_health_report.csv")

Read more

GitHub热榜----前端已死?AionUi 横空出世:首个开源“生成式UI”框架,让 AI 在运行时“手搓”界面

GitHub热榜----前端已死?AionUi 横空出世:首个开源“生成式UI”框架,让 AI 在运行时“手搓”界面

摘要:2025 年我们还在惊叹于 V0 和 Bolt 的代码生成能力,而 2026 年初,AionUi 的发布宣告了**“运行时生成 (Runtime GenUI)”**时代的到来。不再需要预先写好所有 Component,不再需要 Hardcode 每一个表单。AionUi 允许你的应用根据用户的意图,实时渲染出从未被编码过的 UI 界面。本文带你上手这个颠覆性的开源项目。 🚀 前言:从“写死”到“生成” 传统前端开发的逻辑是: 产品经理提需求 -> 设计师出图 -> 程序员把 UI 写成代码 (React/Vue) -> 打包发布 -> 用户看到静态界面。

WebMCP:浏览器AI交互新范式_20260213114222

一、WebMCP是什么 1. 基本定义 WebMCP(Web Model Context Protocol)是Google与Microsoft在W3C框架下联合推动的浏览器原生Web API,Chrome 146已推出早期预览版本,核心目标是让网页主动将自身能力封装为结构化工具,供AI Agent直接调用,解决当前Agent操作网页的稳定性与效率问题。 2. 核心思想 把交互从UI层搬到语义层:不再依赖按钮点击、坐标定位或DOM解析,而是让网页直接暴露"提交请假"“搜索航班”“加入购物车"等业务动作,形成结构化工具契约,Agent按契约调用而非"猜UI”。 3. 关键特性 * 双轨API设计:声明式API(HTML表单属性)+ 命令式API(JavaScript注册),兼顾易用性与灵活性 * 浏览器内运行:纯客户端实现,网页本身就是"工具服务器",天然继承用户登录态与权限上下文 * 结构化上下文:

前端瀑布流布局:从基础实现到高性能优化全解析

前端瀑布流布局:从基础实现到高性能优化全解析

瀑布流(Waterfall Layout)是前端开发中极具代表性的流式布局方案,以非固定高度、多列自适应、内容错落有致的特点成为图片展示、商品列表、内容资讯等场景的主流选择(如 Pinterest、花瓣网、小红书首页等)。其核心逻辑是让元素按自身高度自适应填充到页面空白区域,打破传统网格布局的固定行列限制,兼顾视觉美感与空间利用率。本文将从瀑布流的核心原理出发,依次讲解原生 JS 基础实现、响应式适配、高频问题解决方案及生产环境高性能优化方案,同时补充主流框架(Vue/React)的实战技巧,让你从入门到精通瀑布流开发。 一、瀑布流核心原理与适用场景 1. 核心设计原理 瀑布流的本质是 “多列布局 + 动态高度计算 + 元素精准定位”,核心步骤可概括为 3 点: 1.确定页面展示列数(根据设备宽度、设计稿要求动态调整); 2.计算每一列的当前累计高度,找到高度最小的列; 3.将下一个元素定位到该最小高度列的顶部,同时更新该列的累计高度。 整个过程类似 “往多个不同高度的杯子里倒水,