news 2026/6/9 23:39:00

精准农业和杂草管理自动化除草机器人、智能农业监控系统中如何使用深度学习YOLOV8模型训练农业杂草检测数据集

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
精准农业和杂草管理自动化除草机器人、智能农业监控系统中如何使用深度学习YOLOV8模型训练农业杂草检测数据集

精准农业和杂草管理自动化除草机器人、智能农业监控系统中如何使用深度学习YOLOV8模型训练农业杂草检测数据集

文章目录

      • 杂草检测数据集信息表
        • 数据集概述
      • 类别标签及标注数量统计表
      • 数据集特点总结
    • ✅ 一、系统环境搭建(CUDA + Anaconda + Python)
      • 1. 确认 CUDA 驱动(GPU 加速)
      • 2. 安装 Anaconda(Python 包管理器)
      • 3. 创建 Python 虚拟环境
      • 4. 安装必要依赖
    • ✅ 二、数据集结构与 `data.yaml` 配置
      • 目录结构
      • `data.yaml` 文件内容
    • ✅ 三、调用 YOLOv8 官方预训练模型进行训练
    • ✅ 四、推理代码(单图 / 批量 / 视频)
      • 1. 单张图像推理
      • 2. 批量图像推理
      • 3. 视频检测(如无人机巡田视频)
      • 4. 实时摄像头检测(OpenCV)
    • ✅ 五、模型评估(验证集 + 测试集)
      • 1. 在验证集上评估
      • 2. 在测试集上独立评估(最终性能)
    • ✅ 六、可视化与分析
      • 1. 使用中文标签显示
      • 2. 查看训练曲线
    • ✅ 七、模型导出(ONNX / TensorRT / TFLite)

杂草检测数据集信息表

数据集概述
项目内容
数据集名称杂草检测数据集
总图像数量9,257 张
标注格式YOLO 格式(.txt)、VOC 格式(.xml
目标类别数8 类
应用场景杂草识别、农业监控、自动化除草系统

类别标签及标注数量统计表

类别编号英文标签中文名称标注数量(实例数)
0shameplant含羞草2,711
1crab-grass马唐草1,336
2nut-grass香附子1,581
3asthma-plant千根草1,589
4hagonoy藿香蓟2,480
5goatweed豚草1,466
6dog’s-tongue狗舌草1,540
7beggars-tick鬼针草1,424
总计————14,128

注:标注数量为所有图像中各类目标的边界框总数。


数据集特点总结

  • 多类别覆盖:包含 8 种常见的杂草类型,适用于精准农业和杂草管理。
  • 双格式支持: YOLO 和 VOC 两种主流标注格式,便于不同模型架构的应用与训练。
  • 大规模数据:9,257 张图像,适合深度学习模型的训练和验证。
  • 高标注密度:平均每张图像包含约1.53 个目标框(14,128 ÷ 9,257),有助于复杂场景下的目标检测任务。
  • 实际应用导向:合用于开发自动化除草机器人、智能农业监控系统等。

1

使用 YOLOv8 训练 → 推理 → 评估 → 部署** 的完整全流程,确保你可以快速上手并训练出高精度的杂草识别模型。


✅ 一、系统环境搭建(CUDA + Anaconda + Python)

1. 确认 CUDA 驱动(GPU 加速)

nvidia-smi

确保输出中显示 CUDA 版本 ≥ 11.8(推荐 12.1),如未安装,请前往 NVIDIA 官网 安装对应驱动。


2. 安装 Anaconda(Python 包管理器)

前往 https://www.anaconda.com/products/distribution 下载并安装 Anaconda(Windows / Linux / macOS)。


3. 创建 Python 虚拟环境

# 创建名为 weed_detection 的环境conda create-nweed_detectionpython=3.9# 激活环境conda activate weed_detection

4. 安装必要依赖

# 安装 PyTorch(以 CUDA 11.8 为例)pipinstalltorch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118# 安装 YOLOv8 官方库pipinstallultralytics opencv-python numpy matplotlib tqdm scikit-learn pandas pillow# 可选:TensorBoard 可视化pipinstalltensorboard# 验证 GPU 是否可用python-c"import torch; print(torch.cuda.is_available())"# 应输出 True

✅ 二、数据集结构与data.yaml配置

目录结构

weed_dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels/ │ ├── train/ │ ├── val/ │ └── test/ └── data.yaml

✅ 确保图像与.txt标注文件一一对应,使用 YOLO 格式(归一化坐标)


data.yaml文件内容

# data.yamltrain:./weed_dataset/images/trainval:./weed_dataset/images/valtest:./weed_dataset/images/test# 类别数量nc:8# 英文类别名称(必须与 label 文件中的 class ID 一致)names:-shameplant# 含羞草-crab_grass# 马唐草-nut_grass# 香附子-asthma_plant# 千根草-hagonoy# 藿香蓟-goatweed# 豚草-dog_s_tongue# 狗舌草-beggars_tick# 鬼针草# 中文名称(用于可视化)names_zh:-含羞草-马唐草-香附子-千根草-藿香蓟-豚草-狗舌草-鬼针草

⚠️ 注意:

  • 类名中的-已替换为_,避免路径或变量名错误
  • 所有标注文件.txt中的 class ID 必须从07,顺序与names一致

✅ 三、调用 YOLOv8 官方预训练模型进行训练

由于杂草目标较小、形态相似,建议使用YOLOv8mYOLOv8l提升小目标检测能力。

fromultralyticsimportYOLO# 加载官方预训练模型model=YOLO('yolov8m.pt')# 推荐使用中等模型# 开始训练results=model.train(data='data.yaml',# 数据配置文件路径epochs=150,# 训练轮数(农业数据建议 100~200)batch=32,# 根据显存调整(RTX 3090 可用 64)imgsz=640,# 图像尺寸(提升小目标检测)optimizer='AdamW',# 更稳定优化器lr0=0.001,# 初始学习率weight_decay=0.0005,momentum=0.937,# 数据增强(关键!提升泛化)augment=True,hsv_h=0.015,hsv_s=0.7,hsv_v=0.4,degrees=10.0,translate=0.1,scale=0.5,shear=0.0,flipud=0.0,fliplr=0.5,mosaic=1.0,mixup=0.1,copy_paste=0.1,# 对小目标特别有效# 正则化dropout=0.2,label_smoothing=0.05,# 缓解类别不平衡# 学习率调度cos_lr=True,# 余弦退火# 保存与日志project='runs/train',name='weed_yolov8m',save=True,save_period=10,exist_ok=False,# 缓存(内存充足时开启)cache=True)

提示

  • 若显存不足,改用yolov8s.pt或降低batch=16
  • copy_pastemosaic对小目标检测至关重要
  • 可开启close_mosaic在最后 10 轮关闭 Mosaic 增强

✅ 四、推理代码(单图 / 批量 / 视频)

1. 单张图像推理

fromultralyticsimportYOLOfromPILimportImage# 加载最佳模型model=YOLO('runs/train/weed_yolov8m/weights/best.pt')# 推理results=model('test_field.jpg',conf=0.3)# 显示结果forrinresults:im_array=r.plot()# 绘制边界框和标签im=Image.fromarray(im_array[...,::-1])# BGR to RGBim.show()

2. 批量图像推理

results=model.predict(source='weed_dataset/images/test',save=True,project='runs/detect',name='weed_test_results',conf=0.3,imgsz=640)print("批量推理完成")

3. 视频检测(如无人机巡田视频)

results=model.predict(source='field_survey.mp4',save=True,project='runs/detect/video',name='weed_detection_video',conf=0.3,imgsz=640)print("视频检测完成")

4. 实时摄像头检测(OpenCV)

importcv2 cap=cv2.VideoCapture(0)whilecap.isOpened():ret,frame=cap.read()ifnotret:breakresults=model(frame,conf=0.3)annotated_frame=results[0].plot()cv2.imshow('Weed Detection',annotated_frame)ifcv2.waitKey(1)&0xFF==ord('q'):breakcap.release()cv2.destroyAllWindows()

✅ 五、模型评估(验证集 + 测试集)

1. 在验证集上评估

metrics=model.val(data='data.yaml',split='val',batch=32,imgsz=640,save_json=False,project='runs/val',name='weed_eval')print(f"mAP@0.5:{metrics.box.map50:.4f}")print(f"mAP@0.5:0.95:{metrics.box.map:.4f}")print(f"Precision:{metrics.box.p:.4f}")print(f"Recall:{metrics.box.r:.4f}")# 每类 APfori,nameinenumerate(model.names):print(f"{name}(AP@0.5):{metrics.box.ap[i]:.4f}")

2. 在测试集上独立评估(最终性能)

# 使用 test split 进行最终性能评估test_metrics=model.val(data='data.yaml',split='test',save_json=True,name='test_final')print(f"Test mAP@0.5:{test_metrics.box.map50:.4f}")print(f"Test mAP@0.5:0.95:{test_metrics.box.map:.4f}")

✅ 六、可视化与分析

1. 使用中文标签显示

# 修改模型类名显示为中文model.names=['含羞草','马唐草','香附子','千根草','藿香蓟','豚草','狗舌草','鬼针草']results=model('test_field.jpg')results[0].plot()# 显示中文标签

2. 查看训练曲线

tensorboard--logdirruns/train/weed_yolov8m

✅ 七、模型导出(ONNX / TensorRT / TFLite)

# 导出为 ONNX(通用部署)model.export(format='onnx',dynamic=True,opset=13,imgsz=640)# 导出为 TensorRT(NVIDIA GPU 加速)model.export(format='engine',half=True,dynamic=True)# 导出为 TFLite(移动端)model.export(format='tflite',int8=True)# 导出为 CoreML(iOS)model.export(format='coreml')


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 23:35:03

正则表达式动态替换:Python中的高级技巧

在Python编程中,正则表达式(regex)是处理字符串的高效工具之一。今天我们来探讨一个有趣的问题:如何在字符串中对特定模式进行动态替换,并避免常见的坑。 问题描述 假设我们有一个字符串: string = ptn, ptn; ptn + ptn我们还有一组替换字符串: array = [ptn_sub1, …

作者头像 李华
网站建设 2026/6/9 23:29:53

Grounding DINO Tiny实战教程:从安装到部署的完整路线图

Grounding DINO Tiny实战教程:从安装到部署的完整路线图 【免费下载链接】grounding-dino-tiny 项目地址: https://ai.gitcode.com/hf_mirrors/CICC/grounding-dino-tiny Grounding DINO Tiny是一款强大的零样本目标检测模型,它结合了DINO检测器…

作者头像 李华
网站建设 2026/6/9 23:29:49

paper-reviewer API详解:构建你的论文处理应用终极指南

paper-reviewer API详解:构建你的论文处理应用终极指南 【免费下载链接】paper-reviewer Generate a comprehensive review from an arXiv paper, then turn it into a blog post. This project powers the website below for the HuggingFaces Daily Papers (https…

作者头像 李华