实例分割
实例分割比物体检测更进一步,它涉及识别图像中的单个物体,并将它们与图像的其他部分分割开来。
实例分割模型的输出是一组勾勒出图像中每个物体的遮罩或轮廓,以及每个物体的类标签和置信度分数。当你不仅需要知道物体在图像中的位置,还需要知道它们的具体形状时,实例分割就非常有用了。
观看: 在Python 中使用预训练的Ultralytics YOLOv8 模型运行分段。
提示
YOLOv8 分段模型使用 -seg
后缀,即 yolov8n-seg.pt
并对 COCO.
机型
YOLOv8 这里显示的是经过预训练的 Segment 模型。Detect、Segment 和 Pose 模型是在COCO数据集上预先训练的,而 Classify 模型则是在ImageNet数据集上预先训练的。
首次使用时,模型会自动从最新的Ultralytics 版本下载。
模型 | 尺寸 (像素) |
mAPbox 50-95 |
mAPmask 50-95 |
速度 CPU ONNX (毫秒) |
速度 A100 TensorRT (毫秒) |
params (M) |
FLOPs (B) |
---|---|---|---|---|---|---|---|
YOLOv8n-seg | 640 | 36.7 | 30.5 | 96.1 | 1.21 | 3.4 | 12.6 |
YOLOv8s-seg | 640 | 44.6 | 36.8 | 155.7 | 1.47 | 11.8 | 42.6 |
YOLOv8m-seg | 640 | 49.9 | 40.8 | 317.0 | 2.18 | 27.3 | 110.2 |
YOLOv8l-seg | 640 | 52.3 | 42.6 | 572.4 | 2.79 | 46.0 | 220.5 |
YOLOv8x-seg | 640 | 53.4 | 43.4 | 712.1 | 4.02 | 71.8 | 344.1 |
- mAPval 数值是在 COCO val2017 数据集。
复制方式yolo val segment data=coco.yaml device=0
- 速度 对 COCO val 图像使用 亚马逊 EC2 P4d 实例
复制方式yolo val segment data=coco8-seg.yaml batch=1 device=0|cpu
火车
在图像大小为 640 的 COCO128-seg 数据集上训练YOLOv8n-seg,100 个历元。有关可用参数的完整列表,请参阅配置页面。
示例
from ultralytics import YOLO
# Load a model
model = YOLO("yolov8n-seg.yaml") # build a new model from YAML
model = YOLO("yolov8n-seg.pt") # load a pretrained model (recommended for training)
model = YOLO("yolov8n-seg.yaml").load("yolov8n.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)
# Build a new model from YAML and start training from scratch
yolo segment train data=coco8-seg.yaml model=yolov8n-seg.yaml epochs=100 imgsz=640
# Start training from a pretrained *.pt model
yolo segment train data=coco8-seg.yaml model=yolov8n-seg.pt epochs=100 imgsz=640
# Build a new model from YAML, transfer pretrained weights to it and start training
yolo segment train data=coco8-seg.yaml model=yolov8n-seg.yaml pretrained=yolov8n-seg.pt epochs=100 imgsz=640
数据集格式
YOLO 分段数据集格式详见数据集指南。要将现有数据集从其他格式(如 COCO 等)转换为YOLO 格式,请使用JSON2YOLO工具(Ultralytics )。
瓦尔
在 COCO128-seg 数据集上验证训练有素的YOLOv8n-seg 模型的准确性。无需传递参数,因为 model
保留其培训 data
和参数作为模型属性。
示例
from ultralytics import YOLO
# Load a model
model = YOLO("yolov8n-seg.pt") # load an official model
model = YOLO("path/to/best.pt") # load a custom model
# Validate the model
metrics = model.val() # no arguments needed, dataset and settings remembered
metrics.box.map # map50-95(B)
metrics.box.map50 # map50(B)
metrics.box.map75 # map75(B)
metrics.box.maps # a list contains map50-95(B) of each category
metrics.seg.map # map50-95(M)
metrics.seg.map50 # map50(M)
metrics.seg.map75 # map75(M)
metrics.seg.maps # a list contains map50-95(M) of each category
预测
使用训练有素的YOLOv8n-seg 模型对图像进行预测。
示例
查看全文 predict
模式的详细信息,请参见 预测 page.
出口
将YOLOv8n-seg 模型导出为不同格式,如ONNX,CoreML 等。
示例
YOLOv8-seg 可用的导出格式如下表所示。您可以使用 format
参数,即 format='onnx'
或 format='engine'
.您可以直接对导出的模型进行预测或验证,即 yolo predict model=yolov8n-seg.onnx
.导出完成后会显示模型的使用示例。
格式 | format 论据 |
模型 | 元数据 | 论据 |
---|---|---|---|---|
PyTorch | - | yolov8n-seg.pt |
✅ | - |
TorchScript | torchscript |
yolov8n-seg.torchscript |
✅ | imgsz , optimize , batch |
ONNX | onnx |
yolov8n-seg.onnx |
✅ | imgsz , half , dynamic , simplify , opset , batch |
OpenVINO | openvino |
yolov8n-seg_openvino_model/ |
✅ | imgsz , half , int8 , batch |
TensorRT | engine |
yolov8n-seg.engine |
✅ | imgsz , half , dynamic , simplify , workspace , int8 , batch |
CoreML | coreml |
yolov8n-seg.mlpackage |
✅ | imgsz , half , int8 , nms , batch |
TF SavedModel | saved_model |
yolov8n-seg_saved_model/ |
✅ | imgsz , keras , int8 , batch |
TF GraphDef | pb |
yolov8n-seg.pb |
❌ | imgsz , batch |
TF 轻型 | tflite |
yolov8n-seg.tflite |
✅ | imgsz , half , int8 , batch |
TF 边缘TPU | edgetpu |
yolov8n-seg_edgetpu.tflite |
✅ | imgsz |
TF.js | tfjs |
yolov8n-seg_web_model/ |
✅ | imgsz , half , int8 , batch |
PaddlePaddle | paddle |
yolov8n-seg_paddle_model/ |
✅ | imgsz , batch |
NCNN | ncnn |
yolov8n-seg_ncnn_model/ |
✅ | imgsz , half , batch |
查看全文 export
中的详细信息 出口 page.
常见问题
如何在自定义数据集上训练YOLOv8 细分模型?
要在自定义数据集上训练YOLOv8 细分模型,首先需要以YOLO 细分格式准备数据集。您可以使用JSON2YOLO等工具转换其他格式的数据集。数据集准备就绪后,您可以使用Python 或CLI 命令训练模型:
示例
查看配置页面,了解更多可用参数。
YOLOv8 中的对象检测和实例分割有什么区别?
物体检测通过绘制物体周围的边界框来识别和定位图像中的物体,而实例分割不仅能识别边界框,还能勾勒出每个物体的精确形状。YOLOv8 实例分割模型提供了能勾勒出每个检测物体轮廓的遮罩或轮廓线,这对于医疗成像或自动驾驶等需要了解物体精确形状的任务尤为有用。
为什么使用YOLOv8 进行实例细分?
Ultralytics YOLOv8 是最先进的模型,因其高精度和实时性而广受认可,是实例分割任务的理想选择。YOLOv8 分割模型在COCO 数据集上进行了预训练,确保在各种对象上都能发挥强大的性能。此外,YOLOv8 支持训练、验证、预测和导出功能的无缝集成,使其在研究和行业应用中都具有很强的通用性。
如何加载和验证预训练的YOLOv8 分割模型?
加载和验证预训练的YOLOv8 细分模型非常简单。以下是使用Python 和CLI 的方法:
示例
这些步骤将为您提供平均精度 (mAP) 等验证指标,这些指标对评估模型性能至关重要。
如何将YOLOv8 细分模型导出为ONNX 格式?
将YOLOv8 分割模型导出为ONNX 格式非常简单,可使用Python 或CLI 命令完成:
示例
有关导出为各种格式的详细信息,请参阅导出页面。