当前位置:   article > 正文

超详细YOLOv8实例分割全程概述:环境、训练、验证与预测详解_yolov8环境搭建

yolov8环境搭建

目录

搭建环境说明

不同版本模型性能对比

不同版本对比

参数解释

不同模型说明

YOLOv8n-seg

YOLOv8s-seg

YOLOv8m-seg

YOLOv8l-seg

YOLOv8x-seg

训练

训练示意代码

训练用数据集与 .yaml 配置方法 

.yaml配置

数据集路径 

标签数据说明 

训练参数说明

训练过程示意及输出文件说明

训练成功示意 

输出文件说明

F1-置信度曲线 (BoxF1_curve.png)

精确度-置信度曲线 (BoxP_curve.png)

精确度-召回率曲线 (BoxPR_curve.png)

召回率-置信度曲线 (BoxR_curve.png)

混淆矩阵 (confusion_matrix.png)

标准化混淆矩阵 (confusion_matrix_normalized.png)

标签分布 (labels.jpg)

标签相关图 (labels_correlogram.jpg)

掩膜F1-置信度曲线 (MaskF1_curve.png)

精确度-召回率曲线 (Precision-Recall Curve) (MaskPR_curve.png)

召回率-置信度曲线 (Recall-Confidence Curve) (MaskR_curve.png)

训练和验证指标图 (results.png)

损失和性能指标图

验证

验证示意代码

验证结果

 验证参数

预测

预测代码

输出参数解释

检测框(boxes)

分割掩码(masks)

总结 


搭建环境说明

        如果不知道如何搭建的小伙伴可以参考这个博文:

        超级详细的!多种方式YOLOV8安装及测试

        操作系统:win10 x64

        编程语言:python3.9

        开发环境:Anaconda

        示例项目下载地址:

        yolov8-seg模型源码,实例分割,带数据集,测试可执行demo

不同版本模型性能对比

不同版本对比

模型尺寸 (像素)mAPbox 50-95mAPmask 50-95CPU ONNX 速度 (ms)A100 TensorRT 速度 (ms)参数 (M)FLOPs (B)
YOLOv8n-seg64036.730.596.11.213.412.6
YOLOv8s-seg64044.636.8155.71.4711.842.6
YOLOv8m-seg64049.940.8317.02.1827.3110.2
YOLOv8l-seg64052.342.6572.42.7946.0220.5
YOLOv8x-seg64053.443.4712.14.0271.8344.1

参数解释

  1. 模型: 这是模型的名称,YOLOv8n-seg, YOLOv8s-seg, 等等。YOLOv8是一个流行的目标检测和分割模型,不同的后缀(如n, s, m, l, x)表示不同的模型大小和复杂度。

  2. 尺寸 (像素): 这代表输入图像的分辨率。在这个表格中,所有模型都使用640像素的分辨率。

  3. mAPbox 50-95: 这是衡量模型在目标检测任务中性能的指标,即平均精度(mean Average Precision)。数值越高,性能越好。

  4. mAPmask 50-95: 这是衡量模型在实例分割任务中性能的指标。和mAPbox类似,数值越高代表性能越好。

  5. CPU ONNX 速度 (ms): 这是模型在CPU上使用ONNX格式运行时的速度,以毫秒为单位。数值越低,速度越快。

  6. A100 TensorRT 速度 (ms): 这是模型在NVIDIA A100 GPU上使用TensorRT优化后的运行速度,同样以毫秒为单位。

  7. 参数 (M): 这是模型的参数数量,以百万(M)为单位。参数数量通常与模型的复杂度和计算需求成正比。

  8. FLOPs (B): 这是模型的浮点运算数,以十亿(Billion)为单位。这个指标反映了模型运行一次所需要的计算量。

不同模型说明

YOLOv8n-seg
  • 特点:它是这一系列中最“轻量级”的模型,有最少的参数和计算需求。
  • 适用场景:适合资源受限的环境,如低功耗设备或实时应用,其中速度比精度更重要。
  • 考虑因素:牺牲了一定的准确性,特别是在更复杂的场景中。
YOLOv8s-seg
  • 特点:比 YOLOv8n-seg 稍复杂,提供更好的性能和准确性。
  • 适用场景:适合需要较高准确性但仍然关注速度的应用,例如中等规模的监控系统。
  • 考虑因素:在保持相对较快的处理速度的同时,提供了更好的检测和分割效果。
YOLOv8m-seg
  • 特点:中等复杂度的模型,提供更高的精度。
  • 适用场景:适用于需要较高精度且有适当计算资源的场景,如高级监控系统或自动化检测系统。
  • 考虑因素:需要更多计算资源,处理速度相对较慢。
YOLOv8l-seg
  • 特点:较大的模型,提供高精度的检测和分割。
  • 适用场景:适合高端应用,如高级研究项目或复杂的图像处理任务。
  • 考虑因素:需要显著的计算资源,处理速度较慢,不适合实时应用。
YOLOv8x-seg
  • 特点:系列中最复杂、最精确的模型。
  • 适用场景:适用于对精度要求极高的场景,如专业级图像分析和研究。
  • 考虑因素:对计算资源的需求极高,可能需要专业级的硬件支持。

训练

训练示意代码

  1. from ultralytics import YOLO
  2. # 加载模型
  3. model = YOLO('yolov8n-seg.yaml').load('yolov8n-seg.pt') # 从YAML构建并转移权重
  4. if __name__ == '__main__':
  5. # 训练模型
  6. results = model.train(data='coco128-seg.yaml', epochs=10, imgsz=512)
  7. metrics = model.val()

        这段代码使用了 Ultralytics 的 YOLO 库来实现一个 YOLOv8n-seg 模型的加载、训练和验证过程。首先,它从 ultralytics 库中导入 YOLO 类,这是一种用于目标检测任务的流行深度学习模型。接着,代码通过指定的 YAML 配置文件(yolov8n-seg.yaml)构建了一个 YOLOv8n-seg 模型实例,并加载了预训练的权重(yolov8n-seg.pt)。

        在主程序部分,模型被配置为使用一个名为 coco128-seg.yaml数据集进行训练,这是 COCO 数据集的一个子集专门用于目标检测和分割任务。训练过程被设置为进行 10 个周期(epochs),并且输入图像的大小被设置为 512x512 像素。

        最后,代码执行模型的验证过程,评估模型在独立的验证数据集上的性能。这通常涉及到计算诸如准确度、损失等关键性能指标。

训练用数据集与 .yaml 配置方法 

.yaml配置

  1. path: C:/Users/admin/Desktop/CSDN/YOLOV8_DEF/ultralytics-seg/coco128-seg
  2. train: images/train2017
  3. val: images/test2017
  4. test: images/test2017
  5. # Classes
  6. names:
  7. 0: person
  8. 1: bicycle
  9. 2: car
  10. 3: motorcycle
  11. ......
  12. 77: teddy bear
  13. 78: hair drier
  14. 79: toothbrush
  15. # Download script/URL (optional)
  16. download: https://ultralytics.com/assets/coco128-seg.zip

         coco128-seg.yaml 文件是一个配置文件,用于设置目标检测和分割任务中使用的数据集。在这种情况下,它配置了一个名为 coco128-seg 的数据集,这是一个基于著名的 COCO (Common Objects in Context) 数据集的子集。以下是对该文件内容的详细描述:

  1. 路径设置

    • path: 指定数据集所在的根目录路径。在这个例子中,数据集的根目录位于 C:/Users/admin/Desktop/CSDN/YOLOV8_DEF/ultralytics-seg/coco128-seg
  2. 数据集分割

    • train: 定义了用于训练模型的图像所在的文件夹,这里是 images/train2017
    • val: 指定了用于验证模型的图像所在的文件夹,这里是 images/test2017
    • test: 指定了用于测试模型的图像所在的文件夹,同样是 images/test2017
  3. 类别定义

    • names: 列出了数据集中所有类别的名称。每个类别都分配了一个唯一的索引号(从 0 开始)。例如,索引 0 对应 person(人),1 对应 bicycle(自行车),一直到 79 对应 toothbrush(牙刷)。
  4. 下载脚本/URL

    • download: 提供了数据集的下载链接。在这个案例中,https://ultralytics.com/assets/coco128-seg.zip 是数据集的下载 URL。如果有自己的数据集这个可以忽略掉。

数据集路径 

        这里需要注意,训练集测试集的图片和标签都要一一对应。同时,注意观察这里面的路径是和 .yaml文件中都是对应的关系。 

标签数据说明 

  1. 58 0.417781 0.771355 0.440328 0.735397 0.467375 0.658995 ... 0.829766 0.411766 0.793832 0.420781 0.769112
  2. 75 0.616156 0.364042 0.631188 0.395514 ... 0.596609 0.4 0.608641 0.37528 0.614656 0.368528

         每行数据代表图像中的一个对象,包含了对象的类别、边界框信息,以及用于实例分割的多边形坐标。我将分别解释这两行数据的含义。

  • 58 是对象的类别 ID。
  • 后续的数字对代表实例分割的多边形坐标,其中每对数字是一个坐标点,表示为图像宽度和高度的比例。例如,0.417781 0.771355 是多边形的第一个点,0.440328 0.735397 是第二个点,依此类推。这些点合起来定义了图像中对象的精确形状。 

训练参数说明

参数默认值描述设置建议
modelNone模型文件路径选择适合任务的预训练模型
dataNone数据文件路径选择适合的数据集配置
epochs100训练周期数考虑数据集和模型规模调整
timeNone训练时间(覆盖epochs)根据时间限制设定
patience50早停等待周期观察训练进度,灵活调整
batch16批量大小基于硬件能力调整
imgsz640图像尺寸适应模型和硬件设置
saveTrue是否保存检查点和结果通常保留默认
save_period-1检查点保存频率需要时设定周期
cacheFalse使用数据加载缓存根据硬件和数据集大小
deviceNone运行设备选择最佳可用硬件
workers8数据加载线程数基于系统能力调整
projectNone项目名称自定义以区分项目
nameNone实验名称自定义以识别实验
exist_okFalse是否覆盖现有实验必要时允许覆盖
pretrainedTrue使用预训练模型新任务通常保持True
optimizer'auto'优化器选择适应模型和数据集
verboseFalse详细输出调试时设为True
seed0随机种子需重现时设定确定值
deterministicTrue确定性模式结果一致性时启用
single_clsFalse单类训练特定场景下调整
rectFalse矩形训练场景需求时考虑
cos_lrFalse余弦学习率调度根据策略调整
close_mosaic10关闭马赛克增强周期训练需求调整
resumeFalse从检查点恢复中断后继续训练时启用
ampTrue自动混合精度训练硬件支持时使用
fraction1.0数据集使用比例子集训练时调整
profileFalse记录ONNX/TensorRT速度性能分析时启用
freezeNone冻结层数模型调整时使用
lr00.01初始学习率适应模型和数据集
lrf0.01最终学习率训练策略调整
momentum0.937SGD动量/Adam beta1优化器调整
weight_decay0.0005权重衰减保持默认
warmup_epochs3.0热身周期数模型特性调整
warmup_momentum0.8热身动量训练策略调整
warmup_bias_lr0.1热身偏置学习率训练策略调整
box7.5盒子损失增益数据和模型调整
cls0.5类别损失增益任务复杂性调整
dfl1.5DFL损失增益应用调整
pose12.0姿态损失增益姿态任务专用
kobj2.0关键点目标损失增益姿态任务专用
label_smoothing0.0标签平滑训练策略调整
nbs64标称批量大小硬件资源调整
overlap_maskTrue分割训练中掩码重叠分割任务专用
mask_ratio4分割训练中掩码下采样比例值越大精度越高,也越费算力
dropout0.0分类训练中使用dropout过拟合时候用
valTrue训练期间验证保持默认
plotsFalse训练/验证图表和图像需要可视化时启用

训练过程示意及输出文件说明

训练成功示意 

        看到了这个runs\segment\train\weights\best.pt这个路径的时候说明模型已经训练完了,并且把训练的结果已经保存到了这个文件夹中。输出的结果如下: 

输出文件说明

  1. F1-置信度曲线 (BoxF1_curve.png)

    • 图表类型: 曲线图
    • 观察方法: F1分数是模型准确度的度量,结合了精确度和召回率。在这个图表中,您应该寻找F1分数最高的点,该点对应的置信度阈值通常是模型最佳的工作点。
  2. 精确度-置信度曲线 (BoxP_curve.png)

    • 图表类型: 曲线图
    • 观察方法: 精确度代表了模型预测为正类的样本中实际为正类的比例。在该曲线中,应关注随置信度增加,精确度如何提高,以及在哪个置信度水平上精确度开始下降,这有助于确定阈值设定。
  3. 精确度-召回率曲线 (BoxPR_curve.png)

    • 图表类型: 曲线图
    • 观察方法: 该曲线展示了精确度与召回率之间的权衡。理想的模型应在高精确度和高召回率处达到平衡。通常查看曲线下面积来评估模型整体性能。
  4. 召回率-置信度曲线 (BoxR_curve.png)

    • 图表类型: 曲线图
    • 观察方法: 召回率是指所有正类中模型正确预测的比例。这个图表中,召回率通常随着置信度阈值的降低而增加。理想的置信度阈值通常是召回率较高,但置信度不过低的点。
  5. 混淆矩阵 (confusion_matrix.png)

    • 图表类型: 热图
    • 观察方法: 查看矩阵的对角线,对角线上的数值越高表示分类结果越准确。同时观察非对角线元素,了解哪些类别容易被误分类。
  6. 标准化混淆矩阵 (confusion_matrix_normalized.png)

    • 图表类型: 热图
    • 观察方法: 与非标准化混淆矩阵类似,但通过标准化可以更容易地比较不同类别之间的分类准确率,特别是在类别样本量不均匀的情况下。
  7. 标签分布 (labels.jpg)

    • 图表类型: 柱状图和散点图
    • 观察方法: 柱状图部分显示了每个类别的实例数量,有助于了解数据集中各类别的分布情况。散点图部分可以显示样本的位置分布,有助于了解样本在输入空间的分布特性。
  8. 标签相关图 (labels_correlogram.jpg)

    • 图表类型: 相关图
    • 观察方法: 相关图显示了数据标签之间的相关性,深色的格子表示较高的正相关,浅色表示较低的相关或负相关。这有助于了解不同类别之间的关系。
  9. 掩膜F1-置信度曲线 (MaskF1_curve.png)

    • 图表类型: 曲线图
    • 观察方法: 类似于F1-置信度曲线,但特别用于评估模型在像素级分类或分割任务中的性能。寻找曲线中F1得分最高的点来确定最佳的置信度阈值。
  10. 精确度-召回率曲线 (Precision-Recall Curve) (MaskPR_curve.png)

    • 图表类型: 曲线图
    • 如何观察理解: 此图表展示了在不同召回率水平上模型精确度的变化。蓝色的线表示所有类别的平均精确度。曲线下的面积(AUC)越大,模型性能越好。理想状态是曲线靠近右上角,即高召回率和高精确度。
  11. 召回率-置信度曲线 (Recall-Confidence Curve) (MaskR_curve.png)

    • 图表类型: 曲线图
    • 如何观察理解: 该图标展示了模型在不同置信度阈值下召回率的变化。您应关注在召回率保持高的同时,置信度阈值的选择。最佳操作点通常是召回率开始显著下降之前的置信度值。
  12. 训练和验证指标图 (results.png)

    • 图表类型: 多面板线图
    • 如何观察理解: 这张图显示了多个指标的训练和验证过程,其中包括损失函数的变化和性能指标如精确度和mAP。下降的损失和上升的性能指标通常表明模型在学习过程中正在改进。平滑的曲线有助于识别趋势。
  13. 损失和性能指标图

    • 图表类型: 多面板线图
    • 如何观察理解: 类似于上一个图表,这个可能包含了不同的损失和性能指标。每个小图标展示了训练过程中的具体方面,如框体损失、分割损失、分类损失等。这有助于诊断模型在哪些方面表现良好,在哪些方面可能需要进一步优化。
  14. Weights文件:这是一个模型权重文件,通常以.pt(PyTorch模型)格式保存。它包含了经过训练的神经网络的所有参数和权重。这个文件是模型训练过程的直接产物,用于后续的图像识别和分析任务。

  15. Args.yaml文件:这个文件通常包含了模型训练时使用的配置参数。它详细记录了训练过程中使用的所有设置,如学习率、批大小、训练轮数等。这个文件的目的是为了提供一个清晰的训练配置概览,使得训练过程可以被复现或调整。

验证

验证示意代码

  1. # 验证模型
  2. metrics = model.val() # 无需参数,数据集和设置已记忆

        上文中进行模型训练的时候有这个代码,是直接对模型基于验证数据集进行验证测试模型实际预测效果。

验证结果

        当执行完了验证之后会输出如下文件:

 验证参数

描述
dataNone数据文件的路径,例如 coco128.yaml
imgsz640输入图像的大小,以整数表示
batch16每批图像的数量(AutoBatch 为 -1)
save_jsonFalse将结果保存至 JSON 文件
save_hybridFalse保存混合版本的标签(标签 + 额外预测)
conf0.001用于检测的对象置信度阈值
iou0.6NMS(非极大抑制)用的交并比(IoU)阈值
max_det300每张图像的最大检测数量
halfTrue使用半精度(FP16)
deviceNone运行所用的设备,例如 cuda device=0/1/2/3 或 device=cpu
dnnFalse使用 OpenCV DNN 进行 ONNX 推理
plotsFalse在训练期间显示图表
rectFalse矩形验证,每批图像为了最小填充整齐排列
splitval用于验证的数据集分割,例如 'val'、'test' 或 'train'

预测

预测代码

  1. from ultralytics import YOLO
  2. # 加载一个模型
  3. model = YOLO('yolov8n-seg.pt') # 预训练的 YOLOv8n 模型
  4. # 对一系列图像执行批量推理
  5. results = model(['im1.jpg', 'im2.jpg']) # 返回一个结果对象列表
  6. # 处理结果列表
  7. for result in results:
  8. boxes = result.boxes # Boxes 对象,用于边界框输出
  9. masks = result.masks # Masks 对象,用于分割掩码输出
  10. keypoints = result.keypoints # Keypoints 对象,用于姿态输出
  11. probs = result.probs # Probs 对象,用于分类输出
  12. print("boxes输出示意:\n", boxes)
  13. print("masks输出示意:\n", masks)
  14. print("keypoints输出示意:\n", keypoints)
  15. print("probs输出示意:\n", probs)
  • 第一行: 导入 Ultralytics 的 YOLO 类。这是一个构建和使用 YOLO 模型的工具,可以加载预训练的模型并执行对象检测任务。
  • 加载模型: 创建一个 YOLO 对象,并加载一个预训练的模型文件 yolov8n.pt。这个模型文件包含了 YOLOv8n 模型的结构和预训练的权重。
  • 执行批量推理: 使用模型对图片列表(例如 'im1.jpg', 'im2.jpg')执行推理。这将处理每个图像,并返回一个包含结果的列表。
  • 处理结果列表: 循环遍历结果列表,每个结果包含以下信息:
    • boxes:包含边界框坐标和置信度的对象。
    • masks:如果模型支持分割,这将包含分割的掩码。
    • keypoints:如果模型支持姿态估计,这将包含关键点信息。
    • probs:包含检测到的每个对象的分类概率的对象。

输出参数解释

检测框(boxes)

  1. boxes输出示意:
  2. ultralytics.engine.results.Boxes object with attributes:
  3. cls: tensor([0., 5., 0., 0.], device='cuda:0')
  4. conf: tensor([0.9194, 0.8140, 0.5115, 0.3614], device='cuda:0')
  5. data: tensor([[4.3477e+02, 2.1730e+02, 5.5293e+02, 4.9673e+02, 9.1937e-01, 0.0000e+00],
  6. [8.5124e+00, 8.0904e+00, 7.1692e+02, 4.1092e+02, 8.1404e-01, 5.0000e+00],
  7. [4.4685e+02, 1.7999e+02, 4.9055e+02, 2.6538e+02, 5.1146e-01, 0.0000e+00],
  8. [4.9358e+02, 1.5875e+02, 5.2287e+02, 2.6032e+02, 3.6142e-01, 0.0000e+00]], device='cuda:0')
  9. id: None
  10. is_track: False
  11. orig_shape: (500, 727)
  12. shape: torch.Size([4, 6])
  13. xywh: tensor([[493.8499, 357.0147, 118.1585, 279.4378],
  14. [362.7140, 209.5052, 708.4032, 402.8297],
  15. [468.7004, 222.6888, 43.6939, 85.3918],
  16. [508.2283, 209.5384, 29.2877, 101.5713]], device='cuda:0')
  17. xywhn: tensor([[0.6793, 0.7140, 0.1625, 0.5589],
  18. [0.4989, 0.4190, 0.9744, 0.8057],
  19. [0.6447, 0.4454, 0.0601, 0.1708],
  20. [0.6991, 0.4191, 0.0403, 0.2031]], device='cuda:0')
  21. xyxy: tensor([[434.7706, 217.2958, 552.9291, 496.7336],
  22. [ 8.5124, 8.0904, 716.9156, 410.9201],
  23. [446.8535, 179.9928, 490.5474, 265.3846],
  24. [493.5845, 158.7527, 522.8722, 260.3240]], device='cuda:0')
  25. xyxyn: tensor([[0.5980, 0.4346, 0.7606, 0.9935],
  26. [0.0117, 0.0162, 0.9861, 0.8218],
  27. [0.6147, 0.3600, 0.6748, 0.5308],
  28. [0.6789, 0.3175, 0.7192, 0.5206]], device='cuda:0')
  • cls: 类别张量,标识检测到的每个对象的类别索引(例如,0 代表第一个类别)。
  • conf: 置信度张量,表示模型对每个检测到的对象类别的置信程度。
  • data: 包含检测框坐标和置信度的张量。每行代表一个检测到的对象,格式通常为 [x_min, y_min, x_max, y_max, conf, cls]。
  • orig_shape: 原始图像尺寸,即模型接收的输入图像的尺寸。
  • shape: 检测框的形状,通常是一个包含检测到的对象数量和每个对象特征数量的形状张量。
  • xywh: 检测框的中心坐标和宽高,格式为 [x_center, y_center, width, height]。
  • xywhn: xywh的归一化形式,其中坐标和尺寸是相对于图像大小的比例。
  • xyxy: 检测框的直角坐标,格式为 [x_min, y_min, x_max, y_max]。
  • xyxyn: xyxy的归一化形式,同样是相对于图像大小的比例。

分割掩码(masks)

  1. ultralytics.engine.results.Masks object with attributes:
  2. data: tensor([[[0., 0., 0., ..., 0., 0., 0.],
  3. [0., 0., 0., ..., 0., 0., 0.],
  4. [0., 0., 0., ..., 0., 0., 0.],
  5. ...,
  6. ...,
  7. [0., 0., 0., ..., 0., 0., 0.],
  8. [0., 0., 0., ..., 0., 0., 0.],
  9. [0., 0., 0., ..., 0., 0., 0.]]], device='cuda:0')
  10. orig_shape: (500, 727)
  11. shape: torch.Size([4, 640, 640])
  12. xy: [array([[ 488.45, 218.19],
  13. [ 487.32, 219.33],
  14. ......,
  15. [ 498.68, 219.33],
  16. [ 497.54, 219.33],
  17. [ 496.4, 218.19]], dtype=float32), array([[ 408.94, 9.1812],
  18. [ 407.8, 10.317],
  19. [ 399.85, 10.317],
  20. ......,
  21. [ 440.74, 10.317],
  22. [ 435.06, 10.317],
  23. [ 433.93, 9.1812]], dtype=float32), array([[ 460.05, 181.84],
  24. [ 458.92, 182.98],
  25. [ 458.92, 192.07],
  26. ......,
  27. [ 478.23, 200.02],
  28. [ 475.96, 197.75],
  29. [ 475.96, 184.12],
  30. [ 473.69, 181.84]], dtype=float32), array([[ 511.17, 159.12],
  31. [ 510.04, 160.26],
  32. ......,
  33. [ 521.4, 160.26],
  34. [ 520.26, 159.12]], dtype=float32)]
  35. xyn: [array([[ 0.67188, 0.43639],
  36. [ 0.67031, 0.43866],
  37. ......,
  38. [ 0.68437, 0.43866],
  39. [ 0.68281, 0.43639]], dtype=float32), array([[ 0.5625, 0.018362],
  40. [ 0.56094, 0.020634],
  41. [ 0.55, 0.020634],
  42. ...,
  43. [ 0.60625, 0.020634],
  44. [ 0.59844, 0.020634],
  45. [ 0.59687, 0.018362]], dtype=float32), array([[ 0.63281, 0.36369],
  46. [ 0.63125, 0.36596],
  47. [ 0.63125, 0.38413],
  48. ......,
  49. [ 0.65469, 0.39549],
  50. [ 0.65469, 0.36823],
  51. [ 0.65156, 0.36369]], dtype=float32), array([[ 0.70312, 0.31825],
  52. [ 0.70156, 0.32052],
  53. [ 0.7, 0.32052],
  54. ......,
  55. [ 0.71719, 0.32052],
  56. [ 0.71562, 0.31825]], dtype=float32)]
  • data: 分割掩码的张量,其中每个元素代表图像中相应像素的分割结果。通常,值接近 1 表示该像素属于某个对象,值接近 0 表示背景。
  • orig_shape: 分割掩码对应的原始图像尺寸。
  • shape: 分割掩码的尺寸,通常与模型的输入尺寸相匹配。
  • xy: 对象的边缘点坐标,用于可视化或进一步处理(如抠图)。

        有了上述的这些内容,我们就可以自由的在进行后续其他任务的处理了。最终我直接使用yolo对图片的预测结果进行保存(就是在predict中加上save=True的参数):

总结 

        这篇博客提供了一个全面的指南,介绍了如何使用 Ultralytics YOLOv8-seg 系列模型进行对象检测和分割任务。内容从环境搭建、模型选择、训练、验证到预测的完整流程都有详细说明。为想要使用 YOLOv8-seg 系列模型的开发者提供了一站式的解决方案。它不仅涵盖了从环境配置到模型部署的详细步骤,还解释了如何解读和使用模型输出,使得用户能够根据自己的需求选择合适的模型,并能够有效地训练和评估它们。 如果有哪里写的不够清晰,小伙伴本可以给评论或者留言,我这边会尽快的优化博文内容,另外如有需要,我这边可支持技术答疑与支持。

         

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/122564
推荐阅读
相关标签
  

闽ICP备14008679号