Meet YOLO26: next-gen vision AI.

Link to this sectionTổng quan về tập dữ liệu phân đoạn thực thể#

Phân đoạn thực thể là một tác vụ thị giác máy tính liên quan đến việc xác định và tách biệt các đối tượng cá nhân trong một hình ảnh. Hướng dẫn này cung cấp tổng quan về các định dạng tập dữ liệu được hỗ trợ bởi Ultralytics YOLO cho các tác vụ phân đoạn thực thể, cùng với các hướng dẫn về cách chuẩn bị, chuyển đổi và sử dụng các tập dữ liệu này để huấn luyện mô hình của bạn.

Link to this sectionCác định dạng tập dữ liệu được hỗ trợ#

Link to this sectionĐịnh dạng Ultralytics YOLO#

Định dạng nhãn tập dữ liệu được sử dụng để huấn luyện các mô hình phân đoạn YOLO như sau:

  1. Một tệp văn bản cho mỗi hình ảnh: Mỗi hình ảnh trong tập dữ liệu có một tệp văn bản tương ứng với cùng tên với tệp hình ảnh và phần mở rộng ".txt".
  2. Một dòng cho mỗi đối tượng: Mỗi dòng trong tệp văn bản tương ứng với một thực thể đối tượng trong hình ảnh.
  3. Thông tin đối tượng trên mỗi dòng: Mỗi dòng chứa thông tin sau về thực thể đối tượng:
    • Chỉ số lớp đối tượng: Một số nguyên đại diện cho lớp của đối tượng (ví dụ: 0 cho người, 1 cho ô tô, v.v.).
    • Tọa độ bao quanh đối tượng: Các tọa độ bao quanh vùng mặt nạ (mask), được chuẩn hóa để nằm trong khoảng từ 0 đến 1.

Định dạng cho một dòng đơn lẻ trong tệp tập dữ liệu phân đoạn như sau:

<class-index> <x1> <y1> <x2> <y2> ... <xn> <yn>

Trong định dạng này, <class-index> là chỉ số của lớp cho đối tượng, và <x1> <y1> <x2> <y2> ... <xn> <yn> là các tọa độ đa giác đã được chuẩn hóa của mặt nạ phân đoạn đối tượng (các giá trị nằm trong [0, 1] so với chiều rộng và chiều cao hình ảnh). Các tọa độ được phân tách bằng dấu cách.

Dưới đây là ví dụ về định dạng tập dữ liệu YOLO cho một hình ảnh đơn lẻ với hai đối tượng được tạo thành từ một phân đoạn 3 điểm và một phân đoạn 5 điểm.

0 0.681 0.485 0.670 0.487 0.676 0.487
1 0.504 0.000 0.501 0.004 0.498 0.004 0.493 0.010 0.492 0.0104
Mẹo
  • Độ dài của mỗi dòng không bắt buộc phải bằng nhau.
  • Mỗi nhãn phân đoạn phải có tối thiểu 3 điểm (x, y): <class-index> <x1> <y1> <x2> <y2> <x3> <y3>

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

Khung làm việc Ultralytics sử dụng định dạng tệp YAML để xác định cấu hình tập dữ liệu và mô hình cho việc huấn luyện các Mô hình Phân đoạn. Dưới đây là ví dụ về định dạng YAML được sử dụng để xác định một tập dữ liệu phân đoạn:

ultralytics/cfg/datasets/coco8-seg.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO8-seg dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/segment/coco8-seg/
# Example usage: yolo train data=coco8-seg.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8-seg ← downloads here (1 MB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: coco8-seg # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)

# Classes
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter
  13: bench
  14: bird
  15: cat
  16: dog
  17: horse
  18: sheep
  19: cow
  20: elephant
  21: bear
  22: zebra
  23: giraffe
  24: backpack
  25: umbrella
  26: handbag
  27: tie
  28: suitcase
  29: frisbee
  30: skis
  31: snowboard
  32: sports ball
  33: kite
  34: baseball bat
  35: baseball glove
  36: skateboard
  37: surfboard
  38: tennis racket
  39: bottle
  40: wine glass
  41: cup
  42: fork
  43: knife
  44: spoon
  45: bowl
  46: banana
  47: apple
  48: sandwich
  49: orange
  50: broccoli
  51: carrot
  52: hot dog
  53: pizza
  54: donut
  55: cake
  56: chair
  57: couch
  58: potted plant
  59: bed
  60: dining table
  61: toilet
  62: tv
  63: laptop
  64: mouse
  65: remote
  66: keyboard
  67: cell phone
  68: microwave
  69: oven
  70: toaster
  71: sink
  72: refrigerator
  73: book
  74: clock
  75: vase
  76: scissors
  77: teddy bear
  78: hair drier
  79: toothbrush

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-seg.zip

Các trường trainval chỉ định đường dẫn đến các thư mục chứa hình ảnh huấn luyện và kiểm thử tương ứng.

names là một từ điển chứa tên các lớp. Thứ tự của các tên nên khớp với thứ tự các chỉ số lớp đối tượng trong các tệp tập dữ liệu YOLO.

Link to this sectionCách sử dụng#

Ví dụ
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-seg.pt")  # load a pretrained model (recommended for training)

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

Link to this sectionCác tập dữ liệu được hỗ trợ#

Ultralytics YOLO hỗ trợ nhiều tập dữ liệu khác nhau cho các tác vụ phân đoạn thực thể. Dưới đây là danh sách các tập dữ liệu được sử dụng phổ biến nhất:

  • Carparts-seg: Một tập dữ liệu chuyên dụng tập trung vào việc phân đoạn các bộ phận ô tô, lý tưởng cho các ứng dụng ô tô. Nó bao gồm nhiều loại phương tiện với chú thích chi tiết về các thành phần ô tô riêng lẻ.
  • COCO: Một tập dữ liệu toàn diện cho object detection, phân đoạn và tạo chú thích, bao gồm hơn 200 nghìn hình ảnh có gán nhãn trên nhiều danh mục khác nhau.
  • COCO8-seg: Một tập dữ liệu con thu nhỏ gồm 8 hình ảnh của COCO được thiết kế để kiểm tra nhanh quá trình huấn luyện mô hình phân đoạn, lý tưởng cho việc kiểm tra CI và xác thực luồng công việc trong kho lưu trữ ultralytics.
  • COCO128-seg: Một tập dữ liệu nhỏ hơn cho các tác vụ instance segmentation, chứa một tập hợp con gồm 128 hình ảnh COCO với chú thích phân đoạn.
  • Crack-seg: Một tập dữ liệu được thiết kế riêng cho việc phân đoạn các vết nứt trên nhiều bề mặt khác nhau. Cần thiết cho việc bảo trì cơ sở hạ tầng và kiểm soát chất lượng, nó cung cấp hình ảnh chi tiết để huấn luyện các mô hình nhận diện điểm yếu cấu trúc.
  • Package-seg: Một tập dữ liệu chuyên dụng cho việc phân đoạn các loại vật liệu và hình dạng đóng gói khác nhau. Nó đặc biệt hữu ích cho tự động hóa kho bãi và logistics, hỗ trợ phát triển các hệ thống xử lý và phân loại gói hàng.

Link to this sectionThêm tập dữ liệu của riêng bạn#

Nếu bạn có tập dữ liệu của riêng mình và muốn sử dụng nó để huấn luyện các mô hình phân đoạn với định dạng Ultralytics YOLO, hãy đảm bảo rằng nó tuân theo định dạng được chỉ định ở trên trong phần "Định dạng Ultralytics YOLO". Chuyển đổi các chú thích của bạn sang định dạng bắt buộc và chỉ định đường dẫn, số lượng lớp và tên các lớp trong tệp cấu hình YAML. Hãy giữ images/labels/ làm các thư mục riêng biệt ở cùng cấp, với cấu trúc thư mục con khớp nhau; việc đặt các tệp nhãn .txt vào thư mục hình ảnh có thể khiến mô hình bỏ sót nhãn.

Link to this sectionChuyển đổi các định dạng nhãn#

Link to this sectionChuyển đổi định dạng tập dữ liệu COCO sang định dạng YOLO#

Bạn có thể dễ dàng chuyển đổi các nhãn từ định dạng tập dữ liệu COCO phổ biến sang định dạng YOLO bằng cách sử dụng đoạn mã sau:

Ví dụ
from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)

Công cụ chuyển đổi này có thể được sử dụng để chuyển đổi tập dữ liệu COCO hoặc bất kỳ tập dữ liệu nào ở định dạng COCO sang định dạng Ultralytics YOLO.

Hãy nhớ kiểm tra kỹ xem tập dữ liệu bạn muốn sử dụng có tương thích với mô hình của bạn và tuân thủ các quy ước định dạng cần thiết hay không. Các tập dữ liệu được định dạng đúng cách là yếu tố quan trọng để huấn luyện các mô hình phân đoạn thành công.

Link to this sectionTự động gán nhãn (Auto-Annotation)#

Auto-annotation là một tính năng thiết yếu cho phép bạn tạo tập dữ liệu phân đoạn bằng cách sử dụng một mô hình phát hiện đã được huấn luyện trước. Nó cho phép bạn gán nhãn một lượng lớn hình ảnh một cách nhanh chóng và chính xác mà không cần gán nhãn thủ công, giúp tiết kiệm thời gian và công sức.

Link to this sectionTạo tập dữ liệu phân đoạn bằng mô hình phát hiện#

Để tự động gán nhãn tập dữ liệu của bạn bằng khung làm việc Ultralytics, bạn có thể sử dụng hàm auto_annotate như hiển thị bên dưới:

Ví dụ
from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")
Đối sốLoạiMặc địnhMô tả
datastrbắt buộcĐường dẫn đến thư mục chứa các hình ảnh mục tiêu để gắn nhãn hoặc phân đoạn.
det_modelstr'yolo26x.pt'Đường dẫn model phát hiện YOLO cho phát hiện đối tượng ban đầu.
sam_modelstr'sam_b.pt'Đường dẫn model SAM để phân đoạn (hỗ trợ các trọng số SAM, SAM 2, MobileSAM, và SAM 3).
devicestr''Thiết bị tính toán (ví dụ: 'cuda:0', 'cpu', hoặc '' để tự động phát hiện thiết bị).
conffloat0.25Ngưỡng tin cậy phát hiện của YOLO để lọc các kết quả phát hiện yếu.
ioufloat0.45Ngưỡng IoU cho Non-Maximum Suppression để lọc các hộp chồng lấp.
imgszint640Kích thước đầu vào để thay đổi kích thước hình ảnh (phải là bội số của 32).
max_detint300Số lượng phát hiện tối đa trên mỗi hình ảnh để tối ưu hóa bộ nhớ.
classeslist[int]NoneDanh sách các chỉ số lớp cần phát hiện (ví dụ: [0, 1] cho người & xe đạp).
output_dirstrNoneThư mục lưu cho các chú thích (mặc định: thư mục con của <data>_auto_annotate_labels).

Hàm auto_annotate lấy đường dẫn đến hình ảnh của bạn, cùng với các đối số tùy chọn để chỉ định các mô hình phát hiện đã huấn luyện trước, ví dụ như YOLO26, YOLO11, hoặc các models khác, và các mô hình phân đoạn, ví dụ như SAM, SAM 2, MobileSAM, hoặc SAM 3, thiết bị để chạy các mô hình và thư mục đầu ra để lưu kết quả đã gán nhãn.

Bằng cách tận dụng sức mạnh của các mô hình đã huấn luyện trước, việc tự động gán nhãn có thể giảm đáng kể thời gian và công sức cần thiết để tạo ra các tập dữ liệu phân đoạn chất lượng cao. Tính năng này đặc biệt hữu ích cho các nhà nghiên cứu và nhà phát triển làm việc với các bộ sưu tập hình ảnh lớn, vì nó cho phép họ tập trung vào việc phát triển và đánh giá mô hình thay vì gán nhãn thủ công.

Link to this sectionTrực quan hóa chú thích tập dữ liệu#

Trước khi huấn luyện mô hình của bạn, việc trực quan hóa các chú thích tập dữ liệu thường rất hữu ích để đảm bảo tính chính xác của chúng. Ultralytics cung cấp một hàm tiện ích cho mục đích này:

from ultralytics.data.utils import visualize_image_annotations

label_map = {  # Define the label map with all annotated class labels.
    0: "person",
    1: "car",
}

# Visualize
visualize_image_annotations(
    "path/to/image.jpg",  # Input image path.
    "path/to/annotations.txt",  # Annotation file path for the image.
    label_map,
)

Hàm này vẽ các hộp bao (bounding box), gắn nhãn các đối tượng với tên lớp và điều chỉnh màu văn bản để dễ đọc hơn, giúp bạn xác định và sửa chữa mọi lỗi chú thích trước khi huấn luyện.

Link to this sectionChuyển đổi mặt nạ phân đoạn sang định dạng YOLO#

Nếu bạn có các mặt nạ phân đoạn ở định dạng nhị phân, bạn có thể chuyển đổi chúng sang định dạng phân đoạn YOLO bằng cách sử dụng:

from ultralytics.data.converter import convert_segment_masks_to_yolo_seg

# For datasets like COCO with 80 classes
convert_segment_masks_to_yolo_seg(masks_dir="path/to/masks_dir", output_dir="path/to/output_dir", classes=80)

Tiện ích này chuyển đổi các hình ảnh mặt nạ nhị phân sang định dạng phân đoạn YOLO và lưu chúng vào thư mục đầu ra đã chỉ định.

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

Link to this sectionUltralytics YOLO hỗ trợ những định dạng tập dữ liệu nào cho việc phân đoạn thực thể?#

Ultralytics YOLO hỗ trợ nhiều định dạng tập dữ liệu cho phân đoạn thực thể, với định dạng chính là định dạng Ultralytics YOLO của riêng nó. Mỗi hình ảnh trong tập dữ liệu của bạn cần một tệp văn bản tương ứng với thông tin đối tượng được phân đoạn thành nhiều dòng (một dòng cho mỗi đối tượng), liệt kê chỉ số lớp và các tọa độ bao quanh đã chuẩn hóa. Để biết thêm hướng dẫn chi tiết về định dạng tập dữ liệu YOLO, hãy truy cập Instance Segmentation Datasets Overview.

Link to this sectionLàm cách nào để chuyển đổi chú thích tập dữ liệu COCO sang định dạng YOLO?#

Việc chuyển đổi chú thích định dạng COCO sang định dạng YOLO rất đơn giản bằng các công cụ của Ultralytics. Bạn có thể sử dụng hàm convert_coco từ mô-đun ultralytics.data.converter:

from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/", use_segments=True)

Tập lệnh này chuyển đổi các chú thích tập dữ liệu COCO của bạn sang định dạng YOLO bắt buộc, làm cho nó phù hợp để huấn luyện các mô hình YOLO của bạn. Để biết thêm chi tiết, hãy tham khảo Port or Convert Label Formats.

Link to this sectionLàm thế nào để chuẩn bị tệp YAML để huấn luyện các mô hình Ultralytics YOLO?#

Để chuẩn bị tệp YAML cho việc huấn luyện các mô hình YOLO với Ultralytics, bạn cần xác định các đường dẫn tập dữ liệu và tên lớp. Dưới đây là ví dụ về cấu hình YAML:

# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO8-seg dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/segment/coco8-seg/
# Example usage: yolo train data=coco8-seg.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8-seg ← downloads here (1 MB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: coco8-seg # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)

# Classes
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter
  13: bench
  14: bird
  15: cat
  16: dog
  17: horse
  18: sheep
  19: cow
  20: elephant
  21: bear
  22: zebra
  23: giraffe
  24: backpack
  25: umbrella
  26: handbag
  27: tie
  28: suitcase
  29: frisbee
  30: skis
  31: snowboard
  32: sports ball
  33: kite
  34: baseball bat
  35: baseball glove
  36: skateboard
  37: surfboard
  38: tennis racket
  39: bottle
  40: wine glass
  41: cup
  42: fork
  43: knife
  44: spoon
  45: bowl
  46: banana
  47: apple
  48: sandwich
  49: orange
  50: broccoli
  51: carrot
  52: hot dog
  53: pizza
  54: donut
  55: cake
  56: chair
  57: couch
  58: potted plant
  59: bed
  60: dining table
  61: toilet
  62: tv
  63: laptop
  64: mouse
  65: remote
  66: keyboard
  67: cell phone
  68: microwave
  69: oven
  70: toaster
  71: sink
  72: refrigerator
  73: book
  74: clock
  75: vase
  76: scissors
  77: teddy bear
  78: hair drier
  79: toothbrush

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-seg.zip

Hãy đảm bảo bạn cập nhật các đường dẫn và tên lớp theo tập dữ liệu của bạn. Để biết thêm thông tin, hãy kiểm tra phần Dataset YAML Format.

Link to this sectionTính năng tự động gán nhãn (auto-annotation) trong Ultralytics YOLO là gì?#

Tự động gán nhãn trong Ultralytics YOLO cho phép bạn tạo các chú thích phân đoạn cho tập dữ liệu của mình bằng cách sử dụng mô hình phát hiện đã được huấn luyện trước. Điều này giảm đáng kể nhu cầu gán nhãn thủ công. Bạn có thể sử dụng hàm auto_annotate như sau:

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="sam_b.pt")  # or sam_model="mobile_sam.pt"

Hàm này tự động hóa quy trình gán nhãn, làm cho nó nhanh hơn và hiệu quả hơn. Để biết thêm chi tiết, hãy khám phá Auto-Annotate Reference.

Bình luận