news 2026/6/16 12:50:56

水果识别、智慧农业、采摘机器人、自动分拣系统、果园产量预估中利用AI YOLOv8训练评估检测数据集,检测识别果园苹果的识别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
水果识别、智慧农业、采摘机器人、自动分拣系统、果园产量预估中利用AI YOLOv8训练评估检测数据集,检测识别果园苹果的识别

水果识别、智慧农业、采摘机器人、自动分拣系统、果园产量预估中利用AI 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)

苹果数据集。
目标检测数据集,3000张

1

1

1

水果识别、智慧农业、采摘机器人、自动分拣系统、果园产量预估等 AI 视觉任务。

以下是从零开始搭建环境 → 数据准备 → 使用 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 虚拟环境

# 创建名为 apple_detection 的环境conda create-napple_detectionpython=3.9# 激活环境conda activate apple_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配置

目录结构

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

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


data.yaml文件内容

# data.yamltrain:./apple_dataset/images/trainval:./apple_dataset/images/valtest:./apple_dataset/images/test# 类别数量nc:1# 类别名称names:-apple# 苹果# 中文名称(用于可视化)names_zh:-苹果

⚠️ 注意:

  • 所有标注文件.txt中的 class ID 必须为0(因为只有一类)
  • 图像格式支持.jpg,.png,.tif
  • 建议按 8:1:1 划分 train/val/test

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

由于苹果在树上可能存在遮挡、光照变化、大小不一等问题,建议使用YOLOv8mYOLOv8l提升检测精度。

fromultralyticsimportYOLO# 加载官方预训练模型model=YOLO('yolov8m.pt')# 推荐使用中等模型(也可用 yolov8s.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='apple_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/apple_yolov8m/weights/best.pt')# 推理results=model('test_orchard.jpg',conf=0.3)# 显示结果forrinresults:im_array=r.plot()# 绘制边界框和标签im=Image.fromarray(im_array[...,::-1])# BGR to RGBim.show()

2. 批量图像推理

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

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

results=model.predict(source='orchard_survey.mp4',save=True,project='runs/detect/video',name='apple_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('Apple 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='apple_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}")

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_orchard.jpg')results[0].plot()# 显示中文标签

2. 查看训练曲线

tensorboard--logdirruns/train/apple_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/16 12:48:54

三步掌握Python通达信数据接口:MOOTDX让量化分析变简单

三步掌握Python通达信数据接口:MOOTDX让量化分析变简单 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx MOOTDX是一个专为Python开发者设计的免费通达信数据接口封装,它让获…

作者头像 李华
网站建设 2026/6/16 12:47:54

个人数字资产安全归档实践:从3-2-1备份到自动化管理

1. 项目概述:从“lha7668”看个人数字资产的安全归档实践最近在整理自己十多年来的数字资料,硬盘里、网盘里、旧电脑里,文件散落各处,命名混乱,版本交错。这让我想起一个老生常谈但又无比现实的问题:如何系…

作者头像 李华
网站建设 2026/6/16 12:45:34

大模型面试必备11-InfoNCE loss 和 Cross Entropy Loss

面试必考:Cross Entropy Loss 与 InfoNCE Loss 到底有什么区别? 在深度学习的损失函数家族中,Cross Entropy Loss(交叉熵损失) 绝对是老大哥,它统治了传统的分类任务。但在近年来爆火的大语言模型&#xff…

作者头像 李华
网站建设 2026/6/16 12:38:05

2026企业AI编程工具选型:可控性比聪明更重要

1. 为什么2026年企业AI编程工具选择不再只是“谁更聪明”,而是“谁更可控”2026年,我亲眼看着三支不同规模的技术团队,在同一季度内完成了三套截然不同的AI编程工具落地路径:一支50人规模的金融中台团队,用TRAE Solo重…

作者头像 李华
网站建设 2026/6/16 12:37:00

Product Group Reference Article 在 SAP Retail 商品主数据中的设计逻辑与落地边界

今天在梳理 SAP Retail 商品主数据模板时,我又遇到一个很典型的设计点,商品组下面到底要不要维护一个 Product Group Reference Article。这个对象看起来很小,平时也不直接参与采购、销售、库存移动,但它一旦设计得不好,后面 MM41 创建商品、Product Master 维护商品、批量…

作者头像 李华