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

📅 2026/6/16 12:51:00
水果识别、智慧农业、采摘机器人、自动分拣系统、果园产量预估中利用AI YOLOv8训练评估检测数据集,检测识别果园苹果的识别
水果识别、智慧农业、采摘机器人、自动分拣系统、果园产量预估中利用AI YOLOv8训练评估检测数据集检测识别果园苹果的识别文章目录✅ 一、系统环境搭建CUDA Anaconda Python1. 确认 CUDA 驱动GPU 加速2. 安装 AnacondaPython 包管理器3. 创建 Python 虚拟环境4. 安装必要依赖✅ 二、数据集结构与 data.yaml 配置目录结构data.yaml 文件内容✅ 三、调用 YOLOv8 官方预训练模型进行训练✅ 四、推理代码单图 / 批量 / 视频1. 单张图像推理2. 批量图像推理3. 视频检测如果园无人机巡检4. 实时摄像头检测OpenCV✅ 五、模型评估验证集 测试集1. 在验证集上评估2. 在测试集上独立评估最终性能✅ 六、可视化与分析1. 使用中文标签显示2. 查看训练曲线✅ 七、模型导出ONNX / TensorRT / TFLite苹果数据集。目标检测数据集3000张111水果识别、智慧农业、采摘机器人、自动分拣系统、果园产量预估等 AI 视觉任务。以下是从零开始搭建环境 → 数据准备 → 使用 YOLOv8 训练 → 推理 → 评估 → 部署的完整全流程适用于单类苹果目标检测任务。✅ 一、系统环境搭建CUDA Anaconda Python1. 确认 CUDA 驱动GPU 加速nvidia-smi确保输出中显示 CUDA 版本 ≥ 11.8推荐 12.1如未安装请前往 NVIDIA 官网 安装对应驱动。2. 安装 AnacondaPython 包管理器前往 https://www.anaconda.com/products/distribution 下载并安装 AnacondaWindows / Linux / macOS。3. 创建 Python 虚拟环境# 创建名为 apple_detection 的环境conda create-napple_detectionpython3.9# 激活环境conda activate apple_detection4. 安装必要依赖# 安装 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-cimport 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 官方预训练模型进行训练由于苹果在树上可能存在遮挡、光照变化、大小不一等问题建议使用YOLOv8m或YOLOv8l提升检测精度。fromultralyticsimportYOLO# 加载官方预训练模型modelYOLO(yolov8m.pt)# 推荐使用中等模型也可用 yolov8s.pt 轻量级# 开始训练resultsmodel.train(datadata.yaml,# 数据配置文件路径epochs150,# 训练轮数农业数据建议 100~200batch32,# 根据显存调整RTX 3090 可用 64imgsz640,# 图像尺寸提升小目标或遮挡检测optimizerAdamW,# 更稳定优化器lr00.001,# 初始学习率weight_decay0.0005,momentum0.937,# 数据增强关键提升泛化augmentTrue,hsv_h0.015,hsv_s0.7,hsv_v0.4,degrees10.0,translate0.1,scale0.5,shear0.0,flipud0.0,fliplr0.5,mosaic1.0,mixup0.1,copy_paste0.1,# 对小目标和遮挡有效# 正则化dropout0.2,label_smoothing0.05,# 缓解过拟合# 学习率调度cos_lrTrue,# 余弦退火# 保存与日志projectruns/train,nameapple_yolov8m,saveTrue,save_period10,exist_okFalse,# 缓存内存充足时开启cacheTrue)✅提示若显存不足改用yolov8s.pt或降低batch16copy_paste和mosaic对遮挡、小样本特别有效可开启close_mosaic在最后 10 轮关闭 Mosaic 增强✅ 四、推理代码单图 / 批量 / 视频1. 单张图像推理fromultralyticsimportYOLOfromPILimportImage# 加载最佳模型modelYOLO(runs/train/apple_yolov8m/weights/best.pt)# 推理resultsmodel(test_orchard.jpg,conf0.3)# 显示结果forrinresults:im_arrayr.plot()# 绘制边界框和标签imImage.fromarray(im_array[...,::-1])# BGR to RGBim.show()2. 批量图像推理resultsmodel.predict(sourceapple_dataset/images/test,saveTrue,projectruns/detect,nameapple_test_results,conf0.3,imgsz640)print(批量推理完成)3. 视频检测如果园无人机巡检resultsmodel.predict(sourceorchard_survey.mp4,saveTrue,projectruns/detect/video,nameapple_detection_video,conf0.3,imgsz640)print(视频检测完成)4. 实时摄像头检测OpenCVimportcv2 capcv2.VideoCapture(0)whilecap.isOpened():ret,framecap.read()ifnotret:breakresultsmodel(frame,conf0.3)annotated_frameresults[0].plot()cv2.imshow(Apple Detection,annotated_frame)ifcv2.waitKey(1)0xFFord(q):breakcap.release()cv2.destroyAllWindows()✅ 五、模型评估验证集 测试集1. 在验证集上评估metricsmodel.val(datadata.yaml,splitval,batch32,imgsz640,save_jsonFalse,projectruns/val,nameapple_eval)print(fmAP0.5:{metrics.box.map50:.4f})print(fmAP0.5:0.95:{metrics.box.map:.4f})print(fPrecision:{metrics.box.p:.4f})print(fRecall:{metrics.box.r:.4f})2. 在测试集上独立评估最终性能# 使用 test split 进行最终性能评估test_metricsmodel.val(datadata.yaml,splittest,save_jsonTrue,nametest_final)print(fTest mAP0.5:{test_metrics.box.map50:.4f})print(fTest mAP0.5:0.95:{test_metrics.box.map:.4f})✅ 六、可视化与分析1. 使用中文标签显示# 修改模型类名显示为中文model.names[苹果]resultsmodel(test_orchard.jpg)results[0].plot()# 显示中文标签2. 查看训练曲线tensorboard--logdirruns/train/apple_yolov8m✅ 七、模型导出ONNX / TensorRT / TFLite# 导出为 ONNX通用部署model.export(formatonnx,dynamicTrue,opset13,imgsz640)# 导出为 TensorRTNVIDIA GPU 加速model.export(formatengine,halfTrue,dynamicTrue)# 导出为 TFLite移动端model.export(formattflite,int8True)# 导出为 CoreMLiOSmodel.export(formatcoreml)