Meet YOLO26: next-gen vision AI.

Link to this sectionPhân đoạn ngữ nghĩa#

Semantic segmentation examples

Phân đoạn ngữ nghĩa gán một nhãn lớp cho mọi pixel trong một hình ảnh, tạo ra một bản đồ lớp dày đặc bao phủ toàn bộ cảnh. Khác với phân đoạn cá thể, vốn tách biệt từng đối tượng riêng lẻ, phân đoạn ngữ nghĩa nhóm tất cả các pixel cùng lớp lại với nhau bất kể có bao nhiêu đối tượng riêng biệt hiện diện.

Đầu ra của một model phân đoạn ngữ nghĩa là một bản đồ lớp đơn lẻ với chiều cao nhân chiều rộng, trong đó mỗi giá trị pixel tương ứng với một ID lớp được dự đoán. Điều này làm cho phân đoạn ngữ nghĩa trở nên lý tưởng cho các tác vụ phân tích cảnh như lái xe tự động, chẩn đoán hình ảnh y tế và lập bản đồ lớp phủ đất.

Mẹo

Sử dụng task=semantic hoặc tác vụ CLI yolo semantic cho phân đoạn ngữ nghĩa. Các tệp model phân đoạn ngữ nghĩa YOLO26 sử dụng hậu tố -sem, ví dụ: yolo26n-sem.pt.

Link to this sectionModel#

Các model phân đoạn ngữ nghĩa YOLO26 được huấn luyện trước trên tập dữ liệu Cityscapes được hiển thị bên dưới.

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.

Modelkích thước
(pixel)
mIoUvalTốc độ
RTX3090 PyTorch
(ms)
tham số
(M)
FLOPs
(B)
YOLO26n-sem1024 × 204878.34.4 ± 0.01.622.7
YOLO26s-sem1024 × 204880.88.4 ± 0.06.588.8
YOLO26m-sem1024 × 204882.019.9 ± 0.114.3304.5
YOLO26l-sem1024 × 204882.926.5 ± 0.117.9384.7
YOLO26x-sem1024 × 204883.648.9 ± 0.240.2861.7
  • mIoUval các giá trị dành cho model đơn, tỷ lệ đơn trên tập kiểm định Cityscapes.
    Tái tạo với yolo semantic val data=cityscapes.yaml device=0 imgsz=2048
  • Tốc độ được tính trung bình trên các hình ảnh kiểm định Cityscapes sử dụng một instance RTX3090.
    Tái tạo với yolo semantic val data=cityscapes.yaml batch=1 device=0|cpu imgsz=2048
  • Tham sốFLOPs là các giá trị cho model đã được hợp nhất sau model.fuse(), giúp gộp các lớp Conv và BatchNorm. Các checkpoint pretrained giữ lại toàn bộ kiến trúc huấn luyện và có thể hiển thị số lượng cao hơn.

Link to this sectionTrain#

Huấn luyện YOLO26n-sem trên tập dữ liệu Cityscapes8 trong 100 epoch với kích thước ảnh 1024. Để xem danh sách đầy đủ các tham số có sẵn, hãy truy cập trang Cấu hình.

Ví dụ
from ultralytics import YOLO

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

# Train the model
results = model.train(data="cityscapes8.yaml", epochs=100, imgsz=1024)

Xem chi tiết chế độ train đầy đủ trong trang Huấn luyện.

Link to this sectionĐịnh dạng tập dữ liệu#

Các tập dữ liệu phân đoạn ngữ nghĩa sử dụng hình ảnh mặt nạ đơn kênh, thường là PNG, trong đó mỗi giá trị pixel đại diện cho một ID lớp. Các pixel có giá trị 255 được coi là "bỏ qua" và bị loại trừ khỏi quá trình tính toán hàm mất mát. YAML của tập dữ liệu cần chỉ định đường dẫn đến các hình ảnh và thư mục mặt nạ tương ứng. Xem Hướng dẫn Tập dữ liệu Phân đoạn Ngữ nghĩa để biết chi tiết định dạng. Các tập dữ liệu được hỗ trợ bao gồm CityscapesADE20K.

Link to this sectionVal#

Kiểm định độ chính xác của model YOLO26n-sem đã huấn luyện trên một tập dữ liệu phân đoạn ngữ nghĩa. Truyền tham số data một cách rõ ràng để quá trình kiểm định sử dụng đúng tệp YAML tập dữ liệu mong muốn.

Ví dụ
from ultralytics import YOLO

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

# Validate the model
metrics = model.val(data="cityscapes.yaml")
metrics.miou  # mean Intersection over Union
metrics.pixel_accuracy  # overall pixel accuracy

Link to this sectionPredict#

Sử dụng model YOLO26n-sem đã huấn luyện để chạy dự đoán trên hình ảnh.

Ví dụ
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-sem.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:
    semantic_mask = result.semantic_mask.data  # class map, shape (H,W), integer dtype selected by class count

Xem chi tiết đầy đủ về chế độ predict trên trang Predict.

Link to this sectionKết quả đầu ra#

Phân đoạn ngữ nghĩa YOLO trả về một đối tượng Results cho mỗi hình ảnh. Mỗi kết quả lưu trữ một bản đồ lớp dày đặc cho toàn bộ hình ảnh thay vì danh sách các mặt nạ đối tượng. Các pixel có cùng lớp dự đoán sẽ chia sẻ cùng một ID lớp, ngay cả khi chúng thuộc về các đối tượng riêng biệt.

Thuộc tínhLoạiShapeMô tả
result.semantic_maskSemanticMask(H,W)Bản đồ lớp dày đặc.
result.semantic_mask.datatorch.uint8
torch.int16
torch.int32
(H,W)ID lớp; dtype được chọn theo số lượng lớp.
result.masks--Không có mặt nạ cá thể.
result.boxes--Không có hộp/độ tin cậy cá thể.
result.masks.xy--Không có đa giác mặc định.

Đố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ụ (Predict Results by Task).

Link to this sectionPhân đoạn Cá thể vs Phân đoạn Ngữ nghĩa#

Khía cạnhPhân đoạn cá thể (task="segment")Phân đoạn ngữ nghĩa (task="semantic")
Mục tiêu dự đoánPhân đoạn riêng biệt từng đối tượng được phát hiệnGán một ID lớp cho mọi pixel
Trường đầu raresult.masksresult.semantic_mask
Dữ liệu chínhresult.masks.dataresult.semantic_mask.data
Shape(N,H,W)(H,W)
Giá trị pixelGiá trị mặt nạ nhị phân: 0 hoặc 1ID lớp: 0, 1, 2, ...
Dtypetorch.uint8torch.uint8
torch.int16
torch.int32
Đối tượng cùng lớpĐược giữ nguyên như các cá thể riêng biệtĐược gộp vào cùng một vùng lớp
Đa giácCó, thông qua result.masks.xyresult.masks.xynKhông có đầu ra đa giác theo mặc định
Hộp và độ tin cậyCó, thông qua result.boxesKhông có hộp hoặc điểm tin cậy cho từng cá thể
Sử dụng điển hìnhĐếm, theo dõi, cắt, đo lường ở cấp độ đối tượngGán nhãn cảnh dày đặc, khu vực có thể lái xe, lớp phủ đất, vùng y tế

Link to this sectionExport#

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

Ví dụ
from ultralytics import YOLO

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

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

Các định dạng xuất phân đoạn ngữ nghĩa YOLO26 khả dụng nằm trong bảng bên dưới. Bạn có thể xuất sang bất kỳ định dạng nào bằng cách sử dụng tham số format, ví dụ: format='onnx' hoặc format='engine'. Bạn có thể dự đoán hoặc kiểm định trực tiếp trên các model đã xuất, ví dụ: yolo predict model=yolo26n-sem.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ạngĐối số formatModelMetadataĐối số
PyTorch-yolo26n-sem.pt-
TorchScripttorchscriptyolo26n-sem.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-sem.onnximgsz, half, int8, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-sem_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-sem.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-sem.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-sem_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-sem.pbimgsz, batch, device
TF Litetfliteyolo26n-sem.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-sem_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n-sem_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-sem_paddle_model/imgsz, batch, device
MNNmnnyolo26n-sem.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-sem_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-sem_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n-sem_rknn_model/imgsz, batch, name, int8, data, fraction, device
ExecuTorchexecutorchyolo26n-sem_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-sem_axelera_model/imgsz, batch, int8, data, fraction, device
DEEPXdeepxyolo26n-sem_deepx_model/imgsz, int8, data, optimize, device
Qualcomm QNNqnnyolo26n-sem_qnn_model/imgsz, batch, name, int8, data, fraction, device

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

Link to this sectionCâu hỏi thường gặp (FAQ)#

Link to this sectionLàm thế nào để tôi huấn luyện một model phân đoạn ngữ nghĩa YOLO26 trên tập dữ liệu tùy chỉnh?#

Để huấn luyện mô hình phân đoạn ngữ nghĩa (semantic segmentation) YOLO26 trên một tập dữ liệu tùy chỉnh, bạn cần chuẩn bị các ảnh mask PNG trong đó mỗi giá trị pixel đại diện cho một ID lớp (0, 1, 2, ...) và các pixel có giá trị 255 sẽ bị bỏ qua trong quá trình huấn luyện. Tạo một tệp YAML tập dữ liệu trỏ đến các thư mục chứa ảnh và mask của bạn, sau đó huấn luyện mô hình:

Ví dụ
from ultralytics import YOLO

# Load a pretrained YOLO26 semantic segmentation model
model = YOLO("yolo26n-sem.pt")

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

Xem trang Configuration để biết thêm các đối số khả dụng.

Link to this sectionSự khác biệt giữa phân đoạn cá thể (instance segmentation) và phân đoạn ngữ nghĩa (semantic segmentation) là gì?#

Phân đoạn cá thể và phân đoạn ngữ nghĩa đều là các tác vụ ở cấp độ pixel nhưng khác nhau ở một điểm chính:

  • Semantic segmentation gán nhãn lớp cho mọi pixel nhưng không phân biệt các đối tượng riêng lẻ cùng lớp. Ví dụ, tất cả các xe trong một cảnh đều chia sẻ cùng một nhãn lớp.
  • Instance segmentation xác định từng đối tượng riêng biệt, tạo ra các mask riêng cho từng đối tượng ngay cả khi chúng thuộc cùng một lớp.

Phân đoạn ngữ nghĩa phù hợp nhất cho các tác vụ hiểu cảnh như lái xe tự động và lập bản đồ che phủ đất, trong khi phân đoạn cá thể được ưu tiên khi việc đếm hoặc theo dõi từng đối tượng riêng lẻ là quan trọng.

Link to this sectionTôi có thể sử dụng dữ liệu phân đoạn cá thể để huấn luyện phân đoạn ngữ nghĩa không?#

Có. Nếu tập dữ liệu của bạn sử dụng nhãn đa giác Ultralytics YOLO (một tệp .txt mỗi ảnh), hãy bỏ qua masks_dir trong tệp YAML tập dữ liệu và trình tải sẽ tự động chuyển đổi các đa giác thành mask ngữ nghĩa theo từng ảnh. Đối với các tập dữ liệu đa lớp (N > 1), một lớp background bổ sung được tự động thêm vào names. Đối với các tập dữ liệu đơn lớp (N == 1), quá trình huấn luyện vẫn giữ ở mức 1 lớp — lớp bạn khai báo sẽ trở thành 1 trong mask và các pixel không được che phủ trở thành 0. Xem Hướng dẫn Tập dữ liệu Phân đoạn Ngữ nghĩa để biết chi tiết.

Link to this sectionNhững tập dữ liệu nào được hỗ trợ cho phân đoạn ngữ nghĩa?#

Ultralytics YOLO26 cung cấp các cấu hình tích hợp sẵn cho một số tập dữ liệu phân đoạn ngữ nghĩa:

  • Cityscapes: Các cảnh đường phố đô thị với 19 lớp, được sử dụng rộng rãi cho nghiên cứu lái xe tự động.
  • ADE20K: Một tập dữ liệu phân tích cảnh quy mô lớn với 150 lớp.

Bạn cũng có thể sử dụng bất kỳ tập dữ liệu tùy chỉnh nào cung cấp chú thích mask PNG nơi các giá trị pixel tương ứng với ID lớp.

Link to this sectionLàm thế nào để tôi xác thực một mô hình phân đoạn ngữ nghĩa YOLO26 đã được huấn luyện trước?#

Xác thực mô hình phân đoạn ngữ nghĩa YOLO26 đã được huấn luyện trước với tệp YAML tập dữ liệu được sử dụng để đánh giá:

Ví dụ
from ultralytics import YOLO

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

# Validate the model
metrics = model.val(data="cityscapes.yaml")
print("Mean IoU:", metrics.miou)
print("Pixel Accuracy:", metrics.pixel_accuracy)

Các bước này sẽ cung cấp cho bạn các chỉ số xác thực như mean Intersection over Union (mIoU) và độ chính xác pixel, là các thước đo tiêu chuẩn để đánh giá hiệu suất phân đoạn ngữ nghĩa.

Link to this sectionLàm cách nào tôi có thể xuất mô hình phân đoạn ngữ nghĩa YOLO26 sang định dạng ONNX?#

Xuất mô hình phân đoạn ngữ nghĩa YOLO26 sang định dạng ONNX bằng Python hoặc các lệnh CLI:

Ví dụ
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n-sem.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 Export.

Người đóng góp

Bình luận