Tổng quan về bộ dữ liệu phân đoạn trường hợp
Phân đoạn thể hiện là một nhiệm vụ thị giác máy tính liên quan đến việc xác định và phân định các đối tượng riêng lẻ 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 ví dụ như các tác vụ phân đoạn, cùng với 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 để đào tạo mô hình của bạn.
Định dạng tập dữ liệu được hỗ trợ
Ultralytics YOLO định dạng
Định dạng nhãn tập dữ liệu được sử dụng để đào tạo YOLO mô hình phân đoạn như sau:
- 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 có cùng tên với tệp hình ảnh và phần mở rộng ".txt".
- Một hàng cho mỗi đối tượng: Mỗi hàng trong tệp văn bản tương ứng với một trường hợp đối tượng trong hình ảnh.
- Thông tin đối tượng theo từng hàng: Mỗi hàng chứa thông tin sau về phiên bản đối tượng:
- Chỉ số lớp đối tượng: Một số nguyên biểu diễn lớp của đối tượng (ví dụ: 0 cho người, 1 cho ô tô, v.v.).
- Tọa độ giới hạn đối tượng: Tọa độ giới hạn xung quanh vùng mặt nạ, được chuẩn hóa ở mức từ 0 đến 1.
Định dạng cho một hàng riêng lẻ trong tệp dữ liệu phân đoạn như sau:
Ở đị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à tọa độ giới hạn của mặt nạ phân đoạn của đối tượng. Các tọa độ được phân tách bằng dấu cách.
Đây là một ví dụ về YOLO định dạng tập dữ liệu cho một hình ảnh duy nhất với hai đối tượng bao gồm 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 hàng không cần phải bằng nhau.
- Mỗi nhãn phân đoạn phải có một tối thiểu 3 điểm xy:
<class-index> <x1> <y1> <x2> <y2> <x3> <y3>
Định dạng YAML của tập dữ liệu
Các Ultralytics framework sử dụng định dạng tệp YAML để xác định tập dữ liệu và cấu hình mô hình để đào tạo Mô hình phát hiện. Sau đây là ví dụ về định dạng YAML được sử dụng để xác định tập dữ liệu phát hiện:
# 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: ../datasets/coco8-seg # dataset root dir (absolute or relative; if relative, it's relative to default datasets_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 (80 COCO classes)
names:
0: person
1: bicycle
2: car
# ...
77: teddy bear
78: hair drier
79: toothbrush
Các train
Và val
các trường chỉ định đường dẫn đến các thư mục chứa hình ảnh đào tạo và xác thực tương ứng.
names
là một từ điển tên lớp. Thứ tự của các tên phải khớp với thứ tự của các chỉ số lớp đối tượng trong YOLO tập tin dữ liệu.
Cách sử dụng
Ví dụ
Bộ 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. Sau đây là danh sách các tác vụ được sử dụng phổ biến nhất:
- COCO : Một tập dữ liệu toàn diện để phát hiện đối tượng , phân đoạn và chú thích, bao gồm hơn 200.000 hình ảnh được gắn nhãn trên nhiều danh mục khác nhau.
- COCO8-phân đoạn: Một tập hợp con 8 hình ảnh nhỏ gọn của COCO được thiết kế để kiểm tra nhanh quá trình đào tạo mô hình phân đoạn, lý tưởng cho các kiểm tra CI và xác thực quy trình làm việc trong
ultralytics
kho lưu trữ. - COCO128-seg : Một tập dữ liệu nhỏ hơn dành cho các tác vụ phân đoạn , bao gồm một tập hợp con gồm 128 hình ảnh COCO có chú thích phân đoạn.
- Carparts-seg : Một tập dữ liệu chuyên biệt tập trung vào phân khúc các bộ phận ô tô, lý tưởng cho các ứng dụng ô tô. Nó bao gồm nhiều loại xe có chú thích chi tiết về từng bộ phận ô tô.
- Crack-seg : Một tập dữ liệu được thiết kế riêng để phân đoạn các vết nứt trên nhiều bề mặt khác nhau. Thiết yếu 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 cho các mô hình đào tạo để xác định điểm yếu về cấu trúc.
- Package-seg : Một tập dữ liệu dành riê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 hậu cần và tự động hóa kho bãi, hỗ trợ phát triển các hệ thống xử lý và phân loại gói hàng.
Thêm tập dữ liệu của riêng bạn
Nếu bạn có tập dữ liệu riêng và muốn sử dụng nó để đào tạo các mô hình phân đoạn với Ultralytics YOLO định dạng, đảm bảo rằng nó tuân theo định dạng được chỉ định ở trên trong phần " Ultralytics YOLO "format". Chuyển đổi 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 lớp trong tệp cấu hình YAML.
Cổng hoặc Chuyển đổi Định dạng Nhãn
Định dạng tập dữ liệu COCO YOLO Định dạng
Bạn có thể dễ dàng chuyển đổi nhãn từ định dạng tập dữ liệu COCO phổ biến sang YOLO định dạng bằng cách sử dụng đoạn mã sau:
Ví dụ
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 Ultralytics YOLO định dạng.
Hãy nhớ kiểm tra lại 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. Tập dữ liệu được định dạng đúng là rất quan trọng để đào tạo các mô hình phát hiện đối tượng thành công.
Tự động chú thích
Tự động chú thích là một tính năng thiết yếu cho phép bạn tạo một tập dữ liệu phân đoạn bằng cách sử dụng mô hình phát hiện được đào tạo trước. Nó cho phép bạn chú thích nhanh chóng và chính xác một số lượng lớn hình ảnh mà không cần phải dán nhãn thủ công, tiết kiệm thời gian và công sức.
Tạo bộ dữ liệu phân đoạn bằng cách sử dụng mô hình phát hiện
Để tự động chú thích tập dữ liệu của bạn bằng cách sử dụng Ultralytics khung, bạn có thể sử dụng auto_annotate
chức năng như hiển thị bên dưới:
Ví dụ
Lý lẽ | Kiểu | Mặc định | Sự miêu tả |
---|---|---|---|
data |
str |
yêu cầu | Đường dẫn đến thư mục chứa hình ảnh mục tiêu để chú thích hoặc phân đoạn. |
det_model |
str |
'yolo11x.pt' |
YOLO đường dẫn mô hình phát hiện để phát hiện đối tượng ban đầu. |
sam_model |
str |
'sam_b.pt' |
SAM đường dẫn mô hình cho phân đoạn (hỗ trợ SAM , SAM2 các biến thể và mô hình mobile_sam). |
device |
str |
'' |
Thiết bị tính toán (ví dụ, ' cuda :0', ' cpu ' hoặc '' để tự động phát hiện thiết bị). |
conf |
float |
0.25 |
YOLO ngưỡng tin cậy phát hiện để lọc các phát hiện yếu. |
iou |
float |
0.45 |
Ngưỡng IoU cho việc loại bỏ không tối đa để lọc các hộp chồng chéo. |
imgsz |
int |
640 |
Kí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_det |
int |
300 |
Số lượng phát hiện tối đa trên mỗi hình ảnh để tăng hiệu quả bộ nhớ. |
classes |
list[int] |
None |
Danh sách các chỉ số lớp để phát hiện (ví dụ: [0, 1] dành cho người và xe đạp). |
output_dir |
str |
None |
Lưu thư mục để chú thích (mặc định là './labels' theo đường dẫn dữ liệu). |
Các auto_annotate
hàm này sẽ đưa đườ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 được đào tạo trước, tức là YOLO11, YOLOv8 hoặc khác mô hình và các mô hình phân khúc tức là, SAM, SAM2 hoặc MobileSAM, thiết bị để chạy mô hình và thư mục đầu ra để lưu kết quả có chú thích.
Bằng cách tận dụng sức mạnh của các mô hình được đào tạo trước, chú thích tự động có thể giảm đáng kể thời gian và công sức cần thiết để tạo 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 phát triển và đánh giá mô hình thay vì chú thích thủ công.
Hình dung chú thích tập dữ liệu
Trước khi đào tạo mô hình, bạn thường nên trực quan hóa các chú thích trong tập dữ liệu để đảm bảo chúng chính xác. Ultralytics cung cấp một chức năng 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 giới hạn, gắn nhãn đối tượng bằng 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 mọi lỗi chú thích trước khi đào tạo.
Chuyển đổi mặt nạ phân đoạn thành YOLO Định dạng
Nếu bạn có mặt nạ phân đoạn ở định dạng nhị phân, bạn có thể chuyển đổi chúng sang YOLO định dạng phân đoạn 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 hình ảnh mặt nạ nhị phân thành YOLO định dạng phân đoạn và lưu chúng vào thư mục đầu ra đã chỉ định.
CÂU HỎI THƯỜNG GẶP
Định dạng tập dữ liệu nào Ultralytics YOLO hỗ trợ phân đoạn ví dụ?
Ultralytics YOLO hỗ trợ một số định dạng tập dữ liệu ví dụ như phân đoạn, với định dạng chính là định dạng riêng của nó Ultralytics YOLO định dạng. 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 hàng (mỗi đối tượng một hàng), liệt kê chỉ mục lớp và tọa độ giới hạn chuẩn hóa. Để biết hướng dẫn chi tiết hơn về YOLO định dạng tập dữ liệu, hãy truy cập Tổng quan về tập dữ liệu phân đoạn phiên bản .
Làm thế nào tôi có thể chuyển đổi chú thích tập dữ liệu COCO sang YOLO định dạng?
Chuyển đổi chú thích định dạng COCO sang YOLO định dạng là đơn giản sử dụng Ultralytics công cụ. Bạn có thể sử dụng convert_coco
chức năng từ ultralytics.data.converter
mô-đun:
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 thành các chú thích cần thiết YOLO định dạng, làm cho nó phù hợp để đào tạo của bạn YOLO mô hình. Để biết thêm chi tiết, hãy tham khảo Cổng hoặc Chuyển đổi Định dạng Nhãn .
Làm thế nào để tôi chuẩn bị một tập tin YAML để đào tạo Ultralytics YOLO mô hình?
Để chuẩn bị một tệp YAML để đào tạo YOLO các mô hình với Ultralytics , bạn cần xác định đường dẫn tập dữ liệu và tên lớp. Sau đây là ví dụ về cấu hình YAML:
path: ../datasets/coco8-seg # dataset root dir
train: images/train # train images (relative to 'path')
val: images/val # val images (relative to 'path')
names:
0: person
1: bicycle
2: car
# ...
Đảm bảo bạn cập nhật đường dẫn và tên lớp theo tập dữ liệu của mình. Để biết thêm thông tin, hãy kiểm tra phần Định dạng YAML của tập dữ liệu .
Tính năng chú thích tự động trong là gì? Ultralytics YOLO ?
Tự động chú thích trong Ultralytics YOLO cho phép bạn tạo 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 đào tạo trước. Điều này làm giảm đáng kể nhu cầu dán nhãn thủ công. Bạn có thể sử dụng auto_annotate
hoạt động như sau:
from ultralytics.data.annotator import auto_annotate
auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="sam_b.pt") # or sam_model="mobile_sam.pt"
Chức năng này tự động hóa quá trình chú thích, giúp quá trình này nhanh hơn và hiệu quả hơn. Để biết thêm chi tiết, hãy khám phá Tài liệu tham khảo chú thích tự động .