基于yolo11-seg的水果桃子语义分割实战文档(yolo格式数据免费获取)

目录

基于yolo11-seg的水果桃子语义分割

1.数据阶段

1.1数据集准备

1.2数据集划分

1.3环境安装

2.训练阶段

2.1开始训练

2.2结果展示

3.推理阶段

结束语


基于yolo11-seg的水果桃子语义分割

1.数据阶段

1.1数据集准备

Peach桃子语义分割数据集,包含2400张图像,标注了10129个实例(果实)。用于水果检测任务,支持目标检测、语义分割和实例分割任务。

数据集介绍高质量标注数据集中的图像由专业人员使用Labelme工具进行标注,确保了标注的准确性和一致性。标注标准要求精确地绘制可见果实的多边形边界,同时排除被遮挡的部分。多样性和挑战性图像采集于不同的果园区域,涵盖了不同的光照条件、阴影、遮挡情况以及树枝、叶脉等干扰因素,能够有效模拟实际农业场景中的复杂情况,对水果分割模型的鲁棒性提出了较高的要求。类别丰富数据集仅包含一个类别——桃子(Peach),但涵盖了不同成熟度、大小和形状的桃子实例,有助于模型学习桃子的多样性和变异性。

数据集的多样性和挑战性使得基于该数据集训练的模型能够更好地适应不同的农业场景,从而提高模型的泛化能力,减少对特定果园环境或数据集的依赖。

1.2数据集划分

Peach桃子语义分割数据集,按照7:1:2的比例划分为训练集、验证集、测试集,并组织好yolo算法所需的目录结构最终,得到yolo格式语义分割标签,具体目录结构如下:

其结构如下:

peach_dataset

- images

- - train

- - val

- - test

- labels

- - train

- - val

- - test

【注意:准备好的peach_dataset文件夹,应该与下面的工程项目yolov11_seg位于同级目录,不要将peach_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后(含有早停机制,150 epochs),模型保存在runs/segment/train/weights文件夹

2.2结果展示

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

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

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

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

图中的深蓝色折线代表整体的精度随着置信度的增加,精确度也增加,在置信度为0.965时,精确度达到了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.975左右保持稳定。

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

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

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

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

(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格式的peach语义分割数据集,请阅读:

基于yolo11-seg的水果桃子语义分割实战

### YOLO 语义分割 参数设置及含义 在使用 YOLO 进行语义分割时,模型的配置文件通常是一个 YAML 文件,其中包含了多个重要参数用于定义网络结构、优化器以及训练过程中的超参数。这些参数对于获得良好的分割效果至关重要。 #### 数据集路径与类别数 首先,在配置文件中需指定数据集的位置和类别的数量。这决定了输入图片来自哪里以及模型应该区分多少种不同的物体或区域[^1]。 ```yaml path: ../datasets/semantic_segmentation/ nc: 20 # number of classes ``` #### 输入尺寸 接着是设定输入到网络中的图像大小。YOLO 支持多尺度训练,但在实际应用中一般会固定一个分辨率来简化处理流程。常见的选择有 `640x640` 或者更高分辨率以适应更复杂的场景需求。 ```yaml imgsz: train: 640 val: 640 ``` #### 锚框 (Anchor Boxes) 锚框是用来帮助定位目标位置的关键组件之一。虽然传统的目标检测任务依赖于预设好的一组锚框比例,但对于语义分割来说,由于其关注的是整个对象而非边界框,因此有时可能会调整甚至省略这部分配置项。不过如果仍然采用类似的机制,则可以根据自己的数据特点自动生成适合当前任务的最佳锚点集合。 ```yaml anchors: - [10,13, 16,30, 33,23] - [30,61, 62,45, 59,119] - [116,90, 156,198, 373,326] ``` #### 学习率调度策略 学习率的选择直接影响着收敛速度和平稳程度。一种常用的方法是从较高的初始值逐渐降低至接近零结束。通过周期性的余弦退火等方式可以使训练更加稳定有效[^2]。 ```yaml lr0: 0.01 # initial learning rate (SGD=1E-2, Adam=1E-3) lrf: 0.1 # final OneCycleLR learning rate (lr0 * lrf) ``` #### 权重衰减和其他正则化手段 为了避免过拟合现象的发生,可以在损失函数里加入权重惩罚项或者其他形式的约束条件。比如 L2 正则化就是通过对较大的权值施加额外成本从而促使它们趋向较小绝对值的一种方法;而 dropout 则是在每次迭代过程中随机丢弃部分神经元连接达到类似目的。 ```yaml weight_decay: 0.0005 dropout: 0.1 ``` #### 批量大小与累积梯度更新步数 批量大小指的是每一轮次传递给 GPU 计算的数据样本数目。当硬件资源有限无法支持较大 batch size 时,可以通过增加 gradient_accumulate 的次数实现相同的效果——即多次前向传播后再一次性反向传播计算平均梯度来进行参数修正操作。 ```yaml batch_size: 16 gradient_accumulate: 2 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电科CVer攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值