Skip to content

实例分割

实例分割示例

实例分割 比目标检测更进一步,涉及在图像中识别单个对象并将其从图像的其他部分分割出来。

实例分割模型的输出是一组掩码或轮廓,勾勒出图像中的每个对象,以及每个对象的类别标签和置信度分数。当你不仅需要知道图像中对象的位置,还需要知道它们的精确形状时,实例分割非常有用。



观看: 在Python中使用预训练的Ultralytics YOLO模型进行分割。

Tip

YOLO11分割模型使用-seg后缀,例如yolo11n-seg.pt,并在COCO数据集上进行了预训练。

模型

这里展示了YOLO11预训练的分割模型。检测、分割和姿态模型在COCO数据集上进行了预训练,而分类模型在ImageNet数据集上进行了预训练。

模型在首次使用时会自动从Ultralytics的最新发布中下载。

模型 尺寸
(像素)
mAP
50-95
mAP掩码
50-95
速度
CPU ONNX
(毫秒)
速度
T4 TensorRT10
(毫秒)
参数
(M)
FLOPs
(B)
YOLO11n-seg 640 38.9 32.0 65.9 ± 1.1 1.8 ± 0.0 2.9 10.4
YOLO11s-seg 640 46.6 37.8 117.6 ± 4.9 2.9 ± 0.0 10.1 35.5
YOLO11m-seg 640 51.5 41.5 281.6 ± 1.2 6.3 ± 0.1 22.4 123.3
YOLO11l-seg 640 53.4 42.9 344.2 ± 3.2 7.8 ± 0.2 27.6 142.2
YOLO11x-seg 640 54.7 43.8 664.5 ± 3.2 15.8 ± 0.7 62.1 319.0
  • mAPval 值是在COCO val2017数据集上单模型单尺度的结果。
    通过yolo val segment data=coco-seg.yaml device=0复现。
  • 速度Amazon EC2 P4d实例上对COCO val图像进行平均。
    通过yolo val segment data=coco-seg.yaml batch=1 device=0|cpu复现。

训练

在图像尺寸为640的COCO8-seg数据集上训练YOLO11n-seg模型100个epoch。有关可用参数的完整列表,请参阅配置页面。

Example

from ultralytics import YOLO

# 加载模型
model = YOLO("yolo11n-seg.yaml")  # 从YAML构建新模型
model = YOLO("yolo11n-seg.pt")  # 加载预训练模型(推荐用于训练)
model = YOLO("yolo11n-seg.yaml").load("yolo11n.pt")  # 从YAML构建并转移权重

# 训练模型
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)
# 从YAML构建新模型并从头开始训练
yolo segment train data=coco8-seg.yaml model=yolo11n-seg.yaml epochs=100 imgsz=640

# 从预训练的*.pt模型开始训练
yolo segment train data=coco8-seg.yaml model=yolo11n-seg.pt epochs=100 imgsz=640

# 从YAML构建新模型,转移预训练权重并开始训练
yolo segment train data=coco8-seg.yaml model=yolo11n-seg.yaml pretrained=yolo11n-seg.pt epochs=100 imgsz=640

数据集格式

YOLO分割数据集格式可以在数据集指南中找到详细信息。要将现有数据集从其他格式(如COCO等)转换为YOLO格式,请使用Ultralytics的JSON2YOLO工具。

验证

在COCO8-seg数据集上验证训练好的YOLO11n-seg模型的准确性。不需要参数,因为model保留了训练时的data和参数作为模型属性。

Example

```python from ultralytics import YOLO

加载模型

model = YOLO("yolo11n-seg.pt") # 加载官方模型 model = YOLO("path/to/best.pt") # 加载自定义模型

验证模型

metrics = model.val() # 不需要参数,数据集和设置已记住

metrics.box.map # map50-95(B) metrics.box.map50 # map50(B) metrics.box.map75 # map75(B) metrics.box.maps # 包含每个类别的map50-95(B)的列表 metrics.seg.map # map50-95(M) metrics.seg.map50 # map50(M) metrics.seg.map75 # map75(M) metrics.seg.maps # 包含每个类别的map50-95(M)的列表

bash yolo segment val model=yolo11n-seg.pt # 验证官方模型 yolo segment val model=path/to/best.pt # 验证自定义模型

预测

使用训练好的 YOLO11n-seg 模型对图像进行预测。

示例

```python from ultralytics import YOLO

加载模型

model = YOLO("yolo11n-seg.pt") # 加载官方模型 model = YOLO("path/to/best.pt") # 加载自定义模型

使用模型进行预测

results = model("https://ultralytics.com/images/bus.jpg") # 对图像进行预测 ```

bash yolo segment predict model=yolo11n-seg.pt source='https://ultralytics.com/images/bus.jpg' # 使用官方模型进行预测 yolo segment predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg' # 使用自定义模型进行预测

预测 页面查看完整的 predict 模式详情。

导出

将 YOLO11n-seg 模型导出为不同的格式,如 ONNX、CoreML 等。

示例

```python from ultralytics import YOLO

加载模型

model = YOLO("yolo11n-seg.pt") # 加载官方模型 model = YOLO("path/to/best.pt") # 加载自定义训练的模型

导出模型

model.export(format="onnx") ```

bash yolo export model=yolo11n-seg.pt format=onnx # 导出官方模型 yolo export model=path/to/best.pt format=onnx # 导出自定义训练的模型

下表列出了可用的 YOLO11-seg 导出格式。您可以使用 format 参数导出到任何格式,例如 format='onnx'format='engine'。您可以直接在导出的模型上进行预测或验证,例如 yolo predict model=yolo11n-seg.onnx。导出完成后,将显示您的模型的使用示例。

格式 format 参数 模型 元数据 参数
PyTorch - yolo11n-seg.pt -
TorchScript torchscript yolo11n-seg.torchscript imgsz, optimize, batch
ONNX onnx yolo11n-seg.onnx imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolo11n-seg_openvino_model/ imgsz, half, int8, batch
TensorRT engine yolo11n-seg.engine imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolo11n-seg.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolo11n-seg_saved_model/ imgsz, keras, int8, batch
TF GraphDef pb yolo11n-seg.pb imgsz, batch
TF Lite tflite yolo11n-seg.tflite imgsz, half, int8, batch
TF Edge TPU edgetpu yolo11n-seg_edgetpu.tflite imgsz
TF.js tfjs yolo11n-seg_web_model/ imgsz, half, int8, batch
PaddlePaddle paddle yolo11n-seg_paddle_model/ imgsz, batch
NCNN ncnn yolo11n-seg_ncnn_model/ imgsz, half, batch

导出 页面查看完整的 export 详情。

常见问题

如何在自定义数据集上训练 YOLO11 分割模型?

要在自定义数据集上训练 YOLO11 分割模型,您首先需要将数据集准备为 YOLO 分割格式。您可以使用 JSON2YOLO 等工具将其他格式的数据集转换。一旦数据集准备就绪,您可以使用 Python 或 CLI 命令训练模型:

示例

```python from ultralytics import YOLO

加载预训练的 YOLO11 分割模型

model = YOLO("yolo11n-seg.pt")

训练模型

results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640) ```

bash yolo segment train data=path/to/your_dataset.yaml model=yolo11n-seg.pt epochs=100 imgsz=640

配置 页面查看更多可用参数。

目标检测 和 YOLO11 中的实例分割有什么区别?

目标检测通过在图像中绘制边界框来识别和定位物体,而实例分割不仅识别边界框,还描绘每个物体的精确形状。YOLO11 实例分割模型提供掩码或轮廓,勾勒出每个检测到的物体,这对于需要了解物体精确形状的任务特别有用,如医学成像或自动驾驶。

为什么使用 YOLO11 进行实例分割?

Ultralytics YOLO11 是一个先进的模型,以其高精度和实时性能著称,非常适合实例分割任务。YOLO11 分割模型在 COCO 数据集 上进行了预训练,确保在各种物体上表现出色。此外,YOLO 支持无缝集成的训练、验证、预测和导出功能,使其在研究和工业应用中非常通用。

如何加载和验证预训练的 YOLO 分割模型?

加载和验证预训练的 YOLO 分割模型非常简单。以下是如何使用 Python 和 CLI 进行操作:

示例

```python from ultralytics import YOLO

加载预训练模型

model = YOLO("yolo11n-seg.pt")

验证模型

metrics = model.val() print("边界框的平均精度均值:", metrics.box.map) print("掩码的平均精度均值:", metrics.seg.map)

bash yolo segment val model=yolo11n-seg.pt

这些步骤将为您提供验证指标,如平均精度均值(mAP),这对于评估模型性能至关重要。

如何将YOLO分割模型导出为ONNX格式?

将YOLO分割模型导出为ONNX格式非常简单,可以使用Python或CLI命令完成:

Example

```python from ultralytics import YOLO

加载预训练模型

model = YOLO("yolo11n-seg.pt")

将模型导出为ONNX格式

model.export(format="onnx") ```

bash yolo export model=yolo11n-seg.pt format=onnx

有关导出到各种格式的更多详细信息,请参阅导出页面。


📅 Created 11 months ago ✏️ Updated 3 days ago

Comments