智慧农业智慧果园-葡萄成熟度检测数据集 用于葡萄成熟度分类检测应用任务 成熟、半成熟、未成熟三种状态的葡萄图像 YOLO数据集的训练及应用

张开发
2026/4/6 22:14:04 15 分钟阅读

分享文章

智慧农业智慧果园-葡萄成熟度检测数据集 用于葡萄成熟度分类检测应用任务 成熟、半成熟、未成熟三种状态的葡萄图像 YOLO数据集的训练及应用
智慧农业-葡萄成熟度检测数据集“主要用于葡萄成熟度分类检测应用任务”数据背景包含成熟、半成熟、未成熟三种状态的葡萄图像模拟实际果园环境数据规模葡萄品种数据集中包含三种状态mature成熟semi-mature半成熟immature未成熟标签分布每个类别都有清晰标注yolo的txt标注格式 葡萄成熟度检测数据集结构化信息表类别内容数据集名称葡萄成熟度检测数据集应用任务葡萄成熟度分类与目标检测数据背景包含成熟、半成熟、未成熟三种状态的葡萄图像采集于实际果园环境涵盖不同光照、遮挡与背景复杂度适用于真实场景下的农业智能检测。数据规模图像总数未明确提供需补充标注文件数量与图像一一对应每图配备 YOLO 格式.txt标注文件葡萄品种未明确提供建议后续补充具体品种如巨峰、红提等状态类别共3类mature成熟semi-mature半成熟immature未成熟标签格式YOLO 标注格式归一化坐标class_id center_x center_y width height每个图像对应一个.txt文件存储于labels/目录下标签分布每个类别均有清晰标注三类状态均包含充足样本分布均衡假设均衡若需精确比例请提供统计结果适用任务- 单目标/多目标葡萄成熟度检测- 农业机器人采摘决策支持- 果园智能化巡检系统数据集特点- 真实果园采集具有环境多样性- 标注精准适用于 YOLO 系列模型训练- 支持端到端的目标检测与分类任务建议使用方式- 划分训练集、验证集与测试集如 7:2:1- 配合data.yaml配置文件用于 Ultralytics YOLO 训练框架data.yaml配置示例# data.yamltrain:./dataset/images/trainval:./dataset/images/valnc:3names:[mature,semi-mature,immature]基于您提供的葡萄成熟度检测数据集包含成熟、半成熟、未成熟三类以下是使用Ultralytics YOLOv11进行模型训练的完整代码和配置步骤。这套代码涵盖了从环境准备、数据配置到启动训练的全过程。1. 数据集目录结构准备在运行代码前请确保您的数据集文件夹结构如下所示这是 YOLO 的标准格式grape_dataset/ ├── images/ │ ├── train/ (存放训练集图片 .jpg/.png) │ └── val/ (存放验证集图片 .jpg/.png) ├── labels/ │ ├── train/ (存放训练集标签 .txt) │ └── val/ (存放验证集标签 .txt) └── data.yaml (数据配置文件见步骤2)2. 创建数据配置文件 (data.yaml)在grape_dataset根目录下创建一个名为data.yaml的文件内容如下# data.yaml# 1. 数据集路径 (可以是绝对路径或相对于运行脚本的相对路径)path:./grape_dataset# 2. 训练集和验证集图片文件夹路径 (相对于 path)train:images/trainval:images/val# 3. 类别数量nc:3# 4. 类别名称列表 (顺序必须与标签文件中的 class_id 对应)names:0:immature# 未成熟1:semi-mature# 半成熟2:mature# 成熟3. Python 训练代码 (train.py)这是核心训练脚本。请确保已安装ultralytics库pip install ultralytics。fromultralyticsimportYOLOimportosdeftrain_grape_model(): 使用 YOLOv11 训练葡萄成熟度检测模型 # 1. 加载模型# yolov11n.pt 是 nano 版本速度最快适合边缘设备# 如果需要更高精度可替换为 yolov11s.pt, yolov11m.pt, yolov11l.ptmodelYOLO(yolov11n.pt)# 2. 设置训练参数# 这里的参数可以根据您的显卡显存和需求进行调整resultsmodel.train(datagrape_dataset/data.yaml,# 指向刚才创建的 yaml 文件epochs100,# 训练轮数建议 100-300imgsz640,# 输入图像大小 (640x640)batch16,# 批次大小根据显存调整 (-1 为自动调整)namegrape_yolov11_exp,# 实验名称结果保存在 runs/detect/ 下projectgrape_detection_runs,# 项目文件夹名称device0,# 使用 GPU (0 代表第一块 GPUcpu 代表使用 CPU)workers4,# 数据加载线程数optimizerAdamW,# 优化器AdamW 通常效果不错lr00.001,# 初始学习率patience20,# 早停机制如果 20 轮指标没提升则停止saveTrue,# 保存模型save_period10,# 每 10 轮保存一次valTrue,# 训练过程中进行验证)print(训练完成最佳模型已保存。)if__name____main__:train_grape_model()4. 命令行训练方式 (可选)如果您不想写 Python 脚本也可以直接在终端Terminal/CMD中运行以下命令来启动训练yolo detect train\datagrape_dataset/data.yaml\modelyolov11n.pt\epochs100\imgsz640\batch16\namegrape_yolov11_exp\device05. 验证与推理代码 (predict.py)训练完成后您可以使用以下代码加载训练好的模型对单张图片或摄像头进行推理测试fromultralyticsimportYOLOimportcv2# 1. 加载训练好的最佳模型# 模型通常保存在 runs/detect/grape_yolov11_exp/weights/best.ptmodelYOLO(grape_detection_runs/grape_yolov11_exp/weights/best.pt)# 2. 定义类别名称 (与训练时一致)class_names[immature,semi-mature,mature]colors[(255,0,0),(0,255,0),(0,0,255)]# 蓝绿红# 3. 读取图片img_pathtest_images/grape_test_01.jpg# 替换为你的测试图片路径imgcv2.imread(img_path)# 4. 进行预测resultsmodel(img)# 5. 解析并绘制结果forresultinresults:boxesresult.boxes# 获取边界框forboxinboxes:# 获取坐标x1,y1,x2,y2map(int,box.xyxy[0].tolist())# 获取置信度和类别confbox.conf[0].item()cls_idint(box.cls[0].item())labelf{class_names[cls_id]}{conf:.2f}# 绘制矩形框和标签colorcolors[cls_id]cv2.rectangle(img,(x1,y1),(x2,y2),color,2)cv2.putText(img,label,(x1,y1-10),cv2.FONT_HERSHEY_SIMPLEX,0.5,color,2)# 6. 显示图片cv2.imshow(Grape Maturity Detection,img)cv2.waitKey(0)cv2.destroyAllWindows()训练建议数据增强YOLOv11 默认开启了 Mosaic 和 MixUp 增强这对于果园复杂背景非常有帮助。超参数调整如果模型过拟合训练集精度高验证集精度低可以尝试增加hsv_h色相和hsv_s饱和度的增强幅度因为葡萄的颜色在不同光照下变化很大。模型选择如果是部署在无人机或手机上建议使用yolov11n或yolov11s如果是服务器端部署可以使用yolov11m或yolov11l以获得更高的精度。

更多文章