Link to this sectionPhân đoạn thực thể#
Phân đoạn thực thể tiến xa hơn một bước so với phát hiện đối tượng và liên quan đến việc xác định các đối tượng riêng lẻ trong một hình ảnh và tách biệt chúng khỏi phần còn lại của hình ảnh.
Đầu ra của một mô hình phân đoạn thực thể là một tập hợp các mask hoặc đường viền phác thảo từng đối tượng trong hình ảnh, cùng với nhãn lớp và điểm tin cậy cho mỗi đối tượng. Phân đoạn thực thể hữu ích khi bạn cần biết không chỉ vị trí của các đối tượng trong hình ảnh mà còn hình dạng chính xác của chúng.
Watch: Run Segmentation with Pretrained Ultralytics YOLO Model in Python.
Các mô hình 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.
Link to this sectionCác mô hình#
Các mô hình Segment được huấn luyện trước của YOLO26 được hiển thị ở đây. Các mô hình Detect, Segment và Pose được huấn luyện trước trên tập dữ liệu COCO, các mô hình Semantic được huấn luyện trước trên Cityscapes, và các mô hình Classify được huấn luyện trước trên tập dữ liệu ImageNet.
Các mô hình sẽ tự động tải xuống từ bản phát hành mới nhất của Ultralytics khi sử dụng lần đầu.
| Model | kích thước (pixels) | mAPbox 50-95(e2e) | mAPmask 50-95(e2e) | Tốc độ CPU ONNX (ms) | Tốc độ T4 TensorRT10 (ms) | tham số (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| YOLO26n-seg | 640 | 39.6 | 33.9 | 53.3 ± 0.5 | 2.1 ± 0.0 | 2.7 | 9.1 |
| YOLO26s-seg | 640 | 47.3 | 40.0 | 118.4 ± 0.9 | 3.3 ± 0.0 | 10.4 | 34.2 |
| YOLO26m-seg | 640 | 52.5 | 44.1 | 328.2 ± 2.4 | 6.7 ± 0.1 | 23.6 | 121.5 |
| YOLO26l-seg | 640 | 54.4 | 45.5 | 387.0 ± 3.7 | 8.0 ± 0.1 | 28.0 | 139.8 |
| YOLO26x-seg | 640 | 56.5 | 47.0 | 787.0 ± 6.8 | 16.4 ± 0.1 | 62.8 | 313.5 |
- Các giá trị mAPval là dành cho mô hình đơn lẻ trên quy mô đơn lẻ của tập dữ liệu COCO val2017.
Tái tạo bằng lệnhyolo val segment data=coco.yaml device=0 - Tốc độ được tính trung bình trên các hình ảnh COCO val bằng cách sử dụng phiên bản Amazon EC2 P4d.
Tái tạo bằng lệnhyolo val segment data=coco.yaml batch=1 device=0|cpu - Các giá trị Tham số và FLOPs dành cho mô hình đã hợp nhất sau khi chạy
model.fuse(), giúp gộp các lớp Conv và BatchNorm, và đối với các mô hình end2end, sẽ loại bỏ phần đầu dò detection phụ one-to-many. Các checkpoint được huấn luyện trước vẫn giữ nguyên kiến trúc huấn luyện đầy đủ và có thể hiển thị số lượng cao hơn.
Link to this sectionTrain#
Huấn luyện YOLO26n-seg trên tập dữ liệu COCO8-seg trong 100 epochs với kích thước ảnh là 640. Để xem danh sách đầy đủ các đối số khả dụng, hãy truy cập trang Cấu hình.
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 đầy đủ chế độ train tại trang Huấn luyện. Các mô hình 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.
Link to this sectionĐị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 tập dữ liệu. Để chuyển đổi tập dữ liệu hiện có của bạn 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 mask 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 hỗ trợ bởi SAM.
Link to this sectionVal#
Xác thực độ chính xác của mô hình 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 giữ lại data và các đối số huấn luyện của nó như các thuộc tính mô hình.
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 FNLink to this sectionPredict#
Sử dụng mô hình YOLO26n-seg đã huấn luyện để thực hiện dự đoán trên hình ảnh.
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 polygons in pixel coordinates
xyn = result.masks.xyn # normalized mask polygons
masks = result.masks.data # binary masks, shape (N,H,W), dtype torch.uint8Xem chi tiết đầy đủ về chế độ predict tại trang Dự đoán.
Link to this sectionĐầu ra kết quả#
Phân đoạn thực thể YOLO trả về một đối tượng Results cho mỗi hình ảnh. Mỗi kết quả lưu trữ các dự đoán cấp đối tượng, trong đó mỗi thực thể được phát hiện có mask nhị phân, lớp, độ tin cậy và hộp bao riêng.
| Thuộc tính | Kiểu | Hình dạng | Mô tả |
|---|---|---|---|
result.masks | Masks | (N) | Các mask thực thể. |
result.masks.data | torch.uint8 | (N,H,W) | Các mask nhị phân, giá trị 0 hoặc 1. |
result.masks.xy | np.float32 | list[(P,2)] | Các đa giác pixel. |
result.masks.xyn | np.float32 | list[(P,2)] | Các đa giác đã chuẩn hóa. |
result.boxes | Boxes | (N) | Các hộp/lớp/độ tin cậy của thực thể. |
result.boxes.cls | torch.float32 | (N,) | ID lớp; chuyển đổi sang int để lấy tên. |
Đối với các trường Results cụ thể theo từng tác vụ, hãy xem phần Dự đoán kết quả theo tác vụ.
Link to this sectionSự khác biệt so với Phân đoạn ngữ nghĩa (Semantic Segmentation)#
Phân đoạn thực thể là phân đoạn cấp đối tượng: hai chiếc xe tạo ra hai mask, hai hộp và hai điểm tin cậy. Phân đoạn ngữ nghĩa là phân loại cấp pixel: hai chiếc xe đó trở thành các pixel có cùng ID lớp trong một bản đồ lớp có kích thước bằng hình ảnh, không có hộp, độ tin cậy hoặc danh sách đa giác mặc định cho mỗi đối tượng.
Link to this sectionExport#
Xuất mô hình YOLO26n-seg sang định dạng khác như ONNX, CoreML, v.v.
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ó 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 mô hình đã xuất, ví dụ: yolo predict model=yolo26n-seg.onnx. Các ví dụ sử dụng được hiển thị cho mô hình của bạn sau khi quá trình xuất hoàn tất.
| Định dạng | Đối số format | Model | Metadata | Đối số |
|---|---|---|---|---|
| PyTorch | - | yolo26n-seg.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-seg.torchscript | ✅ | imgsz, half, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-seg.onnx | ✅ | imgsz, half, int8, dynamic, simplify, opset, nms, batch, data, fraction, device |
| OpenVINO | openvino | yolo26n-seg_openvino_model/ | ✅ | imgsz, half, dynamic, int8, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-seg.engine | ✅ | imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-seg.mlpackage | ✅ | imgsz, dynamic, half, int8, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-seg_saved_model/ | ✅ | imgsz, keras, int8, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-seg.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n-seg.tflite | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n-seg_edgetpu.tflite | ✅ | imgsz, int8, data, fraction, device |
| TF.js | tfjs | yolo26n-seg_web_model/ | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-seg_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-seg.mnn | ✅ | imgsz, batch, int8, half, device |
| NCNN | ncnn | yolo26n-seg_ncnn_model/ | ✅ | imgsz, half, batch, device |
| IMX500 | imx | yolo26n-seg_imx_model/ | ✅ | imgsz, int8, data, fraction, nms, device |
| RKNN | rknn | yolo26n-seg_rknn_model/ | ✅ | imgsz, batch, name, int8, data, fraction, device |
| ExecuTorch | executorch | yolo26n-seg_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-seg_axelera_model/ | ✅ | imgsz, batch, int8, data, fraction, device |
| DEEPX | deepx | yolo26n-seg_deepx_model/ | ✅ | imgsz, int8, data, optimize, device |
| Qualcomm QNN | qnn | yolo26n-seg_qnn_model/ | ✅ | imgsz, batch, name, int8, data, fraction, device |
Xem chi tiết đầy đủ về export trong trang Export.
Link to this sectionCâu hỏi thường gặp (FAQ)#
Link to this sectionLàm thế nào để huấn luyện mô hình phân đoạn YOLO26 trên một tập dữ liệu tùy chỉnh?#
Để huấn luyện mô hình phân đoạn YOLO26 trên một 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. Khi tập dữ liệu đã sẵn sàng, bạn có thể huấn luyện mô hình bằng Python hoặc các lệnh CLI:
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 để xem các đối số khả dụng khác.
Link to this sectionSự khác biệt giữa phát hiện đối tượng và phân đoạn thực thể trong YOLO26 là gì?#
Phát hiện đối tượng xác định và định vị các đối tượng trong ảnh bằng cách vẽ các hộp bao (bounding box) xung quanh chúng, trong khi phân đoạn thực thể không chỉ xác định các hộp bao mà còn phác họa hình dạng chính xác của từng đối tượng. Các mô hình phân đoạn thực thể YOLO26 cung cấp các mặt nạ (mask) hoặc đường viền phác thảo từng đối tượng được phát hiện, điều này đặc biệt hữu ích cho các tác vụ cần xác định hình dạng chính xác của đối tượng, chẳng hạn như trong chẩn đoán hình ảnh y tế hoặc xe tự lái.
Link to this sectionTại sao nên sử dụng YOLO26 để phân đoạn thực thể?#
Ultralytics YOLO26 là mô hình hiện đại (state-of-the-art) được công nhận với độ chính xác cao và hiệu suất thời gian thực, giúp nó trở nên lý tưởng cho các tác vụ phân đoạn thực thể. Các mô hình 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 đối tượng. 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 mô hình với khả năng tích hợp liền mạch, khiến nó trở nên cực kỳ linh hoạt cho cả ứng dụng nghiên cứu và công nghiệp.
Link to this sectionLàm thế nào để tải và xác thực mô hình phân đoạn YOLO đã được huấn luyện trước?#
Việc tải và xác thực một mô hình phân đoạn YOLO đã được huấn luyện trước rất đơn giản. Dưới đây là cách thực hiện bằng cả Python và CLI:
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 mô hình.
Link to this sectionLàm thế nào để xuất mô hình phân đoạn YOLO sang định dạng ONNX?#
Việc xuất mô hình phân đoạn YOLO sang định dạng ONNX rất dễ dàng và có thể thực hiện bằng các lệnh Python hoặc CLI:
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ề cách xuất sang các định dạng khác nhau, hãy tham khảo trang Export.