Phân đoạn thực thể (Instance Segmentation)

Instance segmentation examples

Phân đoạn thực thể tiến xa hơn so với nhận diện vật thể và bao gồm việc xác định từng vật thể riêng lẻ trong ảnh và phân tách chúng khỏi phần còn lại của ảnh.

Đầu ra của một model phân đoạn thực thể là tập hợp các mặt nạ (masks) hoặc đường viền phác thảo từng vật thể trong ảnh, cùng với nhãn lớp và điểm số tin cậy cho mỗi vật thể. Phân đoạn thực thể hữu ích khi bạn không chỉ cần biết vật thể nằm ở đâu trong ảnh mà còn cần biết hình dạng chính xác của chúng.



Watch: Run Segmentation with Pretrained Ultralytics YOLO Model in Python.
Mẹo

Các model YOLO26 Segment sử dụng hậu tố -seg, ví dụ: yolo26n-seg.pt, và được huấn luyện trước trên COCO.

Các mô hình

Các model Segment huấn luyện trước của YOLO26 được hiển thị tại đây. Các model Detect, Segment và Pose được huấn luyện trước trên tập dữ liệu COCO, các model Semantic được huấn luyện trước trên Cityscapes, và các model Classify được huấn luyện trước trên tập dữ liệu ImageNet.

Các Model sẽ tự động tải xuống từ release mới nhất của Ultralytics trong lần sử dụng đầu tiên.

Mô hìnhkích thước
(pixels)
mAPbox
50-95(e2e)
mAPmask
50-95(e2e)
Tốc độ
CPU ONNX
(ms)
Tốc độ
T4 TensorRT10
(ms)
params
(M)
FLOPs
(B)
YOLO26n-seg64039.633.953.3 ± 0.52.1 ± 0.02.79.1
YOLO26s-seg64047.340.0118.4 ± 0.93.3 ± 0.010.434.2
YOLO26m-seg64052.544.1328.2 ± 2.46.7 ± 0.123.6121.5
YOLO26l-seg64054.445.5387.0 ± 3.78.0 ± 0.128.0139.8
YOLO26x-seg64056.547.0787.0 ± 6.816.4 ± 0.162.8313.5
  • Các giá trị mAPval dành cho model đơn với quy mô đơn trên tập dữ liệu COCO val2017.
    Tái lập bằng lệnh yolo val segment data=coco.yaml device=0
  • Tốc độ được tính trung bình trên các ảnh val của COCO sử dụng instance Amazon EC2 P4d.
    Tái lập bằng lệnh yolo val segment data=coco.yaml batch=1 device=0|cpu
  • Các giá trị ParamsFLOPs dành cho mô hình đã được gộp sau lệnh model.fuse(), lệnh này hợp nhất các lớp Conv và BatchNorm và, đối với các mô hình end2end, loại bỏ head phát hiện one-to-many phụ. Các checkpoint huấn luyện trước giữ lại toàn bộ kiến trúc huấn luyện và có thể hiển thị số lượng tham số cao hơn.

Huấn luyện (Train)

Huấn luyện YOLO26n-seg trên tập dữ liệu COCO8-seg trong 100 epoch với kích thước ảnh 640. Để xem danh sách đầy đủ các đối số khả dụng, hãy xem trang Cấu hình.

Ví dụ
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-seg.yaml")  # build a new model from YAML
model = YOLO("yolo26n-seg.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n-seg.yaml").load("yolo26n-seg.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)

Xem chi tiết chế độ train đầy đủ trong trang Train. Các model phân đoạn cũng có thể được huấn luyện trên GPU đám mây thông qua Nền tảng Ultralytics.

Định dạng tập dữ liệu

Định dạng tập dữ liệu phân đoạn YOLO có thể được tìm thấy chi tiết trong Hướng dẫn về Tập dữ liệu. Để chuyển đổi tập dữ liệu hiện có từ các định dạng khác (như COCO, v.v.) sang định dạng YOLO, vui lòng sử dụng công cụ JSON2YOLO của Ultralytics. Bạn cũng có thể tạo các mặt nạ phân đoạn trên Nền tảng Ultralytics bằng cách sử dụng các công cụ đa giác và chú thích thông minh được hỗ trợ bởi SAM.

Đánh giá (Val)

Xác thực độ chính xác của model YOLO26n-seg đã được huấn luyện trên tập dữ liệu COCO8-seg. Không cần đối số nào vì model lưu giữ data và các đối số huấn luyện dưới dạng các thuộc tính của model.

Ví dụ
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-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 containing mAP50-95(B) for each category
metrics.box.image_metrics  # per-image metrics dictionary for det with precision, recall, F1, TP, FP, and FN
metrics.seg.map  # map50-95(M)
metrics.seg.map50  # map50(M)
metrics.seg.map75  # map75(M)
metrics.seg.maps  # a list containing mAP50-95(M) for each category
metrics.seg.image_metrics  # per-image metrics dictionary for seg with precision, recall, F1, TP, FP, and FN

Dự đoán (Predict)

Sử dụng model YOLO26n-seg đã được huấn luyện để chạy dự đoán trên các ảnh.

Ví dụ
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-seg.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image

# Access the results
for result in results:
    xy = result.masks.xy  # mask in polygon format
    xyn = result.masks.xyn  # normalized
    masks = result.masks.data  # mask in matrix format (num_objects x H x W)

Xem chi tiết đầy đủ về chế độ predict trong trang Dự đoán.

Xuất (Export)

Xuất model YOLO26n-seg sang định dạng khác như ONNX, CoreML, v.v.

Ví dụ
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-seg.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom-trained model

# Export the model
model.export(format="onnx")

Các định dạng xuất YOLO26-seg khả dụng được liệt kê trong bảng dưới đây. Bạn có thể xuất sang bất kỳ định dạng nào bằng cách sử dụng đối số format, ví dụ: format='onnx' hoặc format='engine'. Bạn có thể dự đoán hoặc xác thực trực tiếp trên các model đã xuất, ví dụ: yolo predict model=yolo26n-seg.onnx. Các ví dụ sử dụng được hiển thị cho model của bạn sau khi quá trình xuất hoàn tất.

Định dạngTham số formatMô hìnhMetadataCác tham số
PyTorch-yolo26n-seg.pt-
TorchScripttorchscriptyolo26n-seg.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-seg.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n-seg_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-seg.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-seg.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-seg_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-seg.pbimgsz, batch, device
TF Litetfliteyolo26n-seg.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-seg_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n-seg_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-seg_paddle_model/imgsz, batch, device
MNNmnnyolo26n-seg.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-seg_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-seg_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n-seg_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n-seg_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-seg_axelera_model/imgsz, batch, int8, data, fraction, device
DeepXdeepxyolo26n-seg_deepx_model/imgsz, int8, data, optimize, device

Xem chi tiết export đầy đủ trong trang Export.

Câu hỏi thường gặp (FAQ)

Làm cách nào để huấn luyện model phân đoạn YOLO26 trên tập dữ liệu tùy chỉnh?

Để huấn luyện model phân đoạn YOLO26 trên tập dữ liệu tùy chỉnh, trước tiên bạn cần chuẩn bị tập dữ liệu của mình theo định dạng phân đoạn YOLO. Bạn có thể sử dụng các công cụ như JSON2YOLO để chuyển đổi tập dữ liệu từ các định dạng khác. Sau khi tập dữ liệu của bạn đã sẵn sàng, bạn có thể huấn luyện model bằng Python hoặc lệnh CLI:

Ví dụ
from ultralytics import YOLO

# Load a pretrained YOLO26 segment model
model = YOLO("yolo26n-seg.pt")

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

Kiểm tra trang Cấu hình để biết thêm các đối số khả dụng.

Sự khác biệt giữa nhận diện vật thể và phân đoạn thực thể trong YOLO26 là gì?

Nhận diện vật thể xác định và định vị vật thể trong ảnh bằng cách vẽ các khung bao (bounding box) xung quanh chúng, trong khi phân đoạn thực thể không chỉ xác định khung bao mà còn phác thảo hình dạng chính xác của từng vật thể. Các model phân đoạn thực thể YOLO26 cung cấp các mặt nạ hoặc đường viền phác thảo từng vật thể được phát hiện, điều này đặc biệt hữu ích cho các tác vụ cần biết hình dạng chính xác của vật thể, chẳng hạn như hình ảnh y tế hoặc xe tự lái.

Tại sao nên sử dụng YOLO26 để phân đoạn thực thể?

Ultralytics YOLO26 là một model hiện đại được công nhận vì độ chính xác cao và hiệu suất thời gian thực, khiến nó trở nên lý tưởng cho các tác vụ phân đoạn thực thể. Các model YOLO26 Segment được huấn luyện trước trên tập dữ liệu COCO, đảm bảo hiệu suất mạnh mẽ trên nhiều loại vật thể. Ngoài ra, YOLO hỗ trợ các chức năng huấn luyện, xác thực, dự đoán và xuất với khả năng tích hợp liền mạch, giúp nó trở nên linh hoạt cho cả ứng dụng nghiên cứu và công nghiệp.

Làm cách nào để tải và xác thực model phân đoạn YOLO đã được huấn luyện trước?

Việc tải và xác thực một model phân đoạn YOLO đã huấn luyện trước rất đơn giản. Dưới đây là cách bạn có thể thực hiện bằng cả Python và CLI:

Ví dụ
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n-seg.pt")

# Validate the model
metrics = model.val()
print("Mean Average Precision for boxes:", metrics.box.map)
print("Mean Average Precision for masks:", metrics.seg.map)

Các bước này sẽ cung cấp cho bạn các chỉ số xác thực như Mean Average Precision (mAP), rất quan trọng để đánh giá hiệu suất của model.

Làm cách nào tôi có thể xuất model phân đoạn YOLO sang định dạng ONNX?

Xuất model phân đoạn YOLO sang định dạng ONNX rất đơn giản và có thể được thực hiện bằng Python hoặc các lệnh CLI:

Ví dụ
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n-seg.pt")

# Export the model to ONNX format
model.export(format="onnx")

Để biết thêm chi tiết về việc xuất sang các định dạng khác nhau, hãy tham khảo trang Xuất.

Bình luận