当前位置: 首页 > news >正文

YOLO11实战 第006期-基于yolo11-seg的香蕉种植园语义分割实战文档(yolo格式数据免费获取)

目录

基于yolo11-seg的香蕉种植园语义分割

1.数据阶段

1.1数据集准备

1.2数据集划分

1.3环境安装

2.训练阶段

2.1开始训练

2.2结果展示

3.推理阶段


基于yolo11-seg的香蕉种植园语义分割

1.数据阶段

1.1数据集准备

Banana香蕉种植园语义分割数据集,包含3880张原始图像,覆盖了不同的生长阶段、高度和地块。图像展示了香蕉种植园的各种场景,包括树木和房屋遮挡、杂草干扰以及不同飞行高度导致的目标尺寸变化等复杂情况。

数据集介绍复杂场景:数据集包含多种复杂场景,如树木和房屋遮挡、杂草干扰、不同飞行高度导致的目标尺寸变化等。高质量标注:通过迭代优化标注流程,生成的分割掩码质量高,减少了手动标注的工作量。多样性:数据集覆盖了不同的生长阶段、高度和地块,具有较高的多样性。

1.2数据集划分

Banana香蕉种植园语义分割数据集,按照9:1的比例划分为训练集、测试集(可视为验证集),并组织好yolo算法所需的目录结构最终,得到yolo格式语义分割标签,具体目录结构如下:

其结构如下:

banana_dataset

- train

- - images

- - labels

- test

- - images

- - labels

【注意:准备好的banana_dataset文件夹,应该与下面的工程项目yolov11_seg位于同级目录,不要将banana_dataset文件夹放置在工程项目里面】

直接获取转换完成的yolo格式数据集(如下图),获取方式见文末

1.3环境安装

--- 安装指令pip install ultralytics==8.3.59 -i https://pypi.tuna.tsinghua.edu.cn/simple

2.训练阶段

2.1开始训练

前提条件:cuda、torchultralytics版本匹配且可用使用yolo11-seg m型号预训练模型

需要进入工程项目yolov11_seg里面

--- 修改数据配置文件./custom.yaml,训练集/验证集路径设定,类别数和类别名称需一致

--- 执行训练命令:python train.py

按需修改train.py文件里的训练参数,例如:windows系统,workers应该设置为0;linux系统,可设置为8

训练200 epoch后(含有早停机制,200 epochs),模型保存在runs/segment/train/weights文件夹

2.2结果展示

2.2-1、F1_curve.png(F1分数)

由图可知,当confidence为0.682时,all classes的F1分数为0.85;表示该模型在0.682的置信度预测类时整体表现良好,具有一定的准确性和召回率。

什么是F1分数?F1分数是精确率(Precision)和召回率(Recall)的调和平均值,它同时考虑了模型预测的准确性和覆盖面。

2.2-2、P_curve.png(精确率曲线)

图中的深蓝色折线代表整体的精度随着置信度的增加,精确度也增加,在置信度为1.000时,精确度达到了1。其余1条线分别表示1个类别在不同的置信度下的精度

精确率曲线,帮助分析模型在检测任务中的表现,特别是在不同置信度设置下的精确性表现。通过这条曲线,可以选择合适的置信度阈值,以优化模型的检测结果,平衡精确率和召回率。

2.2-3、PR_curve.png(精确率-召回率曲线)

图中的曲线为Precision-Recall Curve(精确度-召回率曲线),展示了不同阈值下分类器的精确度和召回率。具体来说横轴表示Recall(召回率),范围从0.0到1.0;纵轴表示Precision(精确度),范围从0.0到1.0。图中主要有两条曲线:

(1)彩色线代表1个类别的精确度-召回率曲线,每个类别的精确度各有差异

(2)深蓝色线代表所有类别的平均精确度-召回率曲线,其精确度也在0.858左右保持稳定。

这两条曲线都显示了随着召回率的增加,精确度略有下降的趋势,但整体上精确度保持在很高的水平。

通过这条曲线,可以评估模型在目标检测任务中的整体性能,并找到合适的置信度阈值,以在精确率和召回率之间做出最佳平衡。PR 曲线越接近右上角,模型性能越好,曲线下方的面积越大,说明模型在不同置信度下的表现越稳定。

2.2-4、R_curve.png(召回率曲线)

图中的R曲线为Recall-Confidence Curve(召回率-置信度曲线),它展示了不同置信度下的召回率。具体来说,横轴表示置信度,从0.0到1.0;纵轴表示召回率,从0.0到1.0。图中主要有2条曲线:

(1)1条彩色线:代表1个类别的召回率随置信度的变化情况。这条曲线显示了随着置信度的增加,每个类别的召回率先变化较小,然后在某个点之后迅速下降。

(2)深蓝色线:代表所有类别的平均召回率随置信度的变化情况。

展示模型在不同的置信度阈值(confidence thresholds)下的召回率表现。召回率曲线帮助评估模型在目标检测任务中,检测到真正目标的能力。通过这条曲线,用户可以评估模型的检测能力,分析模型在不同阈值下对真实目标的检测是否全面。如果召回率曲线在较低的置信度下表现较好,说明模型可以有效检测大多数目标;如果曲线下降较快,可能需要调整模型或数据集,避免漏检问题。

2.2-5、results.png(结果指标曲线)

这张图展示了基于 YOLOv11 的分割算法(seg)训练验证过程中的多个指标变化情况。以下是对每个指标的含义和图中趋势的分析:

训练阶段(第一行)

train/box_loss:

含义: 边界框回归损失,衡量预测框与真实框之间的差距。

趋势: 损失值随着训练迭代次数增加而逐渐下降,表明模型在边界框预测上逐渐优化。

train/seg_loss:

含义: 分割损失,衡量分割掩码(mask)与真实掩码之间的差距。

趋势: 损失值快速下降,表明模型在分割任务上逐渐收敛。

train/cls_loss:

含义: 分类损失,衡量预测类别与真实类别之间的差距。

趋势: 损失值下降,表明模型在分类任务上逐渐优化。

train/dfl_loss:

含义: 分布式焦点损失(Distribution Focal Loss),用于提高边界框回归的精度。

趋势: 损失值下降,表明模型在边界框回归的精度上逐渐优化。

metrics/precision(B):

含义: 精确率(Precision),衡量模型预测的正样本中有多少是真正的正样本(针对边界框任务)。

趋势: 精确率逐渐上升并趋于稳定,表明模型在减少误报方面表现良好。

metrics/recall(B):

含义: 召回率(Recall),衡量模型预测的正样本中有多少是真正的正样本(针对边界框任务)。

趋势: 召回率快速上升并趋于稳定,表明模型在检测到更多真实目标的同时保持了较高的准确率。

metrics/precision(M):

含义: 精确率(Precision),针对分割掩码任务。

趋势: 精确率逐渐上升并趋于稳定,表明模型在分割任务中减少了误报。

metrics/recall(M):

含义: 召回率(Recall),针对分割掩码任务。

趋势: 召回率快速上升并趋于稳定,表明模型在分割任务中能够检测到更多的真实目标。

验证阶段(第二行)

val/box_loss:

含义: 验证集上的边界框回归损失。

趋势: 损失值下降,表明模型在验证集上的边界框预测性能逐渐优化。

val/seg_loss:

含义: 验证集上的分割损失。

趋势: 损失值快速下降,表明模型在验证集上的分割性能逐渐优化。但后续存在上升现象,表明模型学习有些过拟合。

val/cls_loss:

含义: 验证集上的分类损失。

趋势: 损失值下降,表明模型在验证集上的分类性能逐渐优化。

val/dfl_loss:

含义: 验证集上的分布式焦点损失。

趋势: 损失值下降,表明模型在验证集上的边界框回归精度逐渐优化。

metrics/mAP50(B):

含义: 平均精度(mAP)在 IoU=0.5 时的值,针对边界框任务。

趋势: mAP50 快速上升并趋于稳定,表明模型在边界框任务上的整体检测性能良好。

metrics/mAP50-95(B):

含义: 平均精度(mAP)在 IoU=0.5 到 0.95 时的值,针对边界框任务。

趋势: mAP50-95 逐渐上升并趋于稳定,表明模型在不同 IoU 阈值下的检测性能逐渐优化。

metrics/mAP50(M):

含义: 平均精度(mAP)在 IoU=0.5 时的值,针对分割掩码任务。

趋势: mAP50 快速上升并趋于稳定,表明模型在分割任务上的整体性能良好。

metrics/mAP50-95(M):

含义: 平均精度(mAP)在 IoU=0.5 到 0.95 时的值,针对分割掩码任务。

趋势: mAP50-95 逐渐上升并趋于稳定,表明模型在不同 IoU 阈值下的分割性能逐渐优化。

总结

训练阶段:所有损失函数(box_loss、seg_loss、cls_loss、dfl_loss)均呈下降趋势,表明模型在训练过程中逐渐收敛。同时,精确率和召回率逐渐上升并趋于稳定,表明模型的检测和分割性能良好

3.推理阶段

使用训练好的模型进行预测(输入测试图片文件夹input_test_images)

python detect.py

检测完成后,结果保存在output_results文件夹,样例输出如下:


结束语

感谢您的耐心阅读!若文中存在错误,恳请指出,我会努力改进。若您有更优方法,也请不吝分享,让我们共同进步!

【⭐⭐⭐免费获取yolo格式的banana分割数据集,请阅读:

基于yolo11-seg的香蕉种植园语义分割​​​​​​​】

http://www.dtcms.com/a/353741.html

相关文章:

  • MDK-5.4.2 集成 Compiler 5 编译器
  • 基于SpringBoot的协同过滤余弦函数的美食推荐系统(爬虫Python)的设计与实现
  • 数据结构:堆(Heap)
  • 生成式AI的引擎室:深入剖析LLM内存管理与调度
  • 【解锁Photonics for AI:系统学习光学神经网络与超表面设计,成就下一代光芯片工程师】
  • python - js的引入方式、注释变量、数据类型、强制转换、自动类型转换、js运算符、分支结构、函数
  • Nginx单端口代理多个前后端服务的完整配置指南
  • 【雅思019】Canceling an appointment
  • 数据结构——算法设计的基本思想(穷举、递归、分治等)
  • 【自用】JavaSE--junit单元测试、反射、注解、动态代理
  • FreeRTOS 常见面试题与核心知识点详解
  • Redis数据持久化——RDB快照和Aof日志追加
  • 8.28 模拟
  • 从易用性的角度来看,哪个ETL平台比较好用?
  • MySQL-数据类型
  • Clerk 用户认证系统集成文档
  • 关于virtual camera
  • UE5 PCG 笔记(三) Height To Density 节点
  • UE5 查找组件
  • UE5多人MOBA+GAS 55、基于 Python 协调器与 EOS 的会话编排
  • 嵌入式Linux自学不走弯路!670+讲课程!系统学习路线:入门+应用+ARM+驱动+移植+项目 (STM32MP157开发板)
  • 快速入门PowerDesigner-Database
  • 软件开发整体介绍和Swagger介绍和使用步骤
  • Dubbo加标签方式
  • Ubuntu 22.04 插入光驱后磁盘满启动故障clean, ...files, ...blocks
  • Proxmox VE 中启用 CentOS 虚拟机的串口终端(xterm.js 控制台)
  • MAX系列FPGA型号对比及低功耗特性分析
  • 服务器类型与TCP并发服务器构建(SELECT)
  • 冬天的思念
  • 数模笔记day01(数据预处理、K-means聚类、遗传算法、概率密度分布)