Tổng quan về bộ dữ liệu Oriented Bounding Box (OBB)
Huấn luyện một mô hình phát hiện đối tượng chính xác với hộp giới hạn có hướng (OBB) đòi hỏi một bộ dữ liệu kỹ lưỡng. Hướng dẫn này giải thích các định dạng bộ dữ liệu OBB khác nhau tương thích với các mô hình Ultralytics YOLO, cung cấp thông tin chi tiết về cấu trúc, ứng dụng và phương pháp chuyển đổi định dạng của chúng.
Các định dạng bộ dữ liệu OBB được hỗ trợ
Định dạng YOLO OBB
Định dạng YOLO OBB chỉ định các hộp giới hạn bằng bốn điểm góc của chúng với tọa độ được chuẩn hóa giữa 0 và 1. Nó tuân theo định dạng này:
class_index x1 y1 x2 y2 x3 y3 x4 y4
Về mặt nội bộ, YOLO xử lý các tổn thất và đầu ra trong xywhr
định dạng, đại diện cho hộp giới hạnđiểm trung tâm (xy), chiều rộng, chiều cao và góc xoay.
Một ví dụ về *.txt
tệp nhãn cho hình ảnh trên, chứa một đối tượng thuộc lớp 0
ở định dạng OBB, có thể trông như sau:
0 0.780811 0.743961 0.782371 0.74686 0.777691 0.752174 0.776131 0.749758
Định dạng YAML bộ dữ liệu
Framework Ultralytics sử dụng định dạng tệp YAML để xác định cấu hình bộ dữ liệu và mô hình để huấn luyện Mô hình OBB. Dưới đây là một ví dụ về định dạng YAML được sử dụng để xác định bộ dữ liệu OBB:
ultralytics/cfg/datasets/dota8.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# DOTA8 dataset 8 images from split DOTAv1 dataset by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/obb/dota8/
# Example usage: yolo train model=yolov8n-obb.pt data=dota8.yaml
# parent
# ├── ultralytics
# └── datasets
# └── dota8 ← downloads here (1MB)
# 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: dota8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
# Classes for DOTA 1.0
names:
0: plane
1: ship
2: storage tank
3: baseball diamond
4: tennis court
5: basketball court
6: ground track field
7: harbor
8: bridge
9: large vehicle
10: small vehicle
11: helicopter
12: roundabout
13: soccer ball field
14: swimming pool
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/dota8.zip
Cách sử dụng
Để huấn luyện một mô hình bằng các định dạng OBB này:
Ví dụ
from ultralytics import YOLO
# Create a new YOLO11n-OBB model from scratch
model = YOLO("yolo11n-obb.yaml")
# Train the model on the DOTAv1 dataset
results = model.train(data="DOTAv1.yaml", epochs=100, imgsz=1024)
# Train a new YOLO11n-OBB model on the DOTAv1 dataset
yolo obb train data=DOTAv1.yaml model=yolo11n-obb.pt epochs=100 imgsz=1024
Các bộ dữ liệu được hỗ trợ
Hiện tại, các bộ dữ liệu sau với Hộp giới hạn có hướng được hỗ trợ:
- DOTA-v1: Phiên bản đầu tiên của bộ dữ liệu DOTA, cung cấp một tập hợp toàn diện các hình ảnh trên không với hộp giới hạn có hướng để phát hiện đối tượng.
- DOTA-v1.5: Một phiên bản trung gian của bộ dữ liệu DOTA, cung cấp thêm các chú thích và cải tiến so với DOTA-v1 để nâng cao hiệu quả của các tác vụ phát hiện đối tượng.
- DOTA-v2: DOTA (Bộ dữ liệu quy mô lớn để phát hiện đối tượng trong ảnh chụp từ trên không) phiên bản 2, tập trung vào phát hiện từ góc nhìn trên không và chứa các hộp giới hạn xoay với 1,7 triệu đối tượng và 11.268 hình ảnh.
- DOTA8: Một tập hợp con nhỏ gồm 8 ảnh của bộ dữ liệu DOTA đầy đủ, phù hợp để kiểm tra quy trình làm việc và kiểm tra Tích hợp Liên tục (CI) việc huấn luyện OBB trong
ultralytics
kho lưu trữ.
Tích hợp bộ dữ liệu OBB của riêng bạn
Đối với những ai muốn giới thiệu bộ dữ liệu riêng với hộp giới hạn xoay, hãy đảm bảo khả năng tương thích với "định dạng YOLO OBB" đã đề cập ở trên. Chuyển đổi các chú thích của bạn sang định dạng bắt buộc này và trình bày chi tiết các đường dẫn, lớp và tên lớp trong tệp cấu hình YAML tương ứng.
Chuyển đổi định dạng nhãn
Chuyển đổi định dạng bộ dữ liệu DOTA sang định dạng YOLO OBB
Có thể chuyển đổi nhãn từ định dạng bộ dữ liệu DOTA sang định dạng YOLO OBB bằng script sau:
Ví dụ
from ultralytics.data.converter import convert_dota_to_yolo_obb
convert_dota_to_yolo_obb("path/to/DOTA")
Cơ chế chuyển đổi này rất quan trọng đối với các bộ dữ liệu ở định dạng DOTA, đảm bảo sự phù hợp với định dạng OBB Ultralytics YOLO.
Điều quan trọng là phải xác thực khả năng tương thích của bộ dữ liệu với mô hình của bạn và tuân thủ các quy ước định dạng cần thiết. Các bộ dữ liệu có cấu trúc phù hợp là yếu tố then chốt để huấn luyện các mô hình phát hiện đối tượng hiệu quả với hộp giới hạn xoay.
Câu hỏi thường gặp
Hộp giới hạn có hướng (OBB) là gì và chúng được sử dụng như thế nào trong các mô hình Ultralytics YOLO?
Hộp giới hạn có hướng (Oriented Bounding Boxes - OBB) là một loại chú thích hộp giới hạn, trong đó hộp có thể được xoay để căn chỉnh gần hơn với đối tượng được phát hiện, thay vì chỉ căn chỉnh theo trục. Điều này đặc biệt hữu ích trong ảnh chụp từ trên không hoặc vệ tinh, nơi các đối tượng có thể không được căn chỉnh với trục hình ảnh. Trong các mô hình Ultralytics YOLO, OBB được biểu diễn bằng bốn điểm góc của chúng theo định dạng YOLO OBB. Điều này cho phép phát hiện đối tượng chính xác hơn vì các hộp giới hạn có thể xoay để phù hợp với các đối tượng tốt hơn.
Làm cách nào để chuyển đổi nhãn bộ dữ liệu DOTA hiện có của tôi sang định dạng YOLO OBB để sử dụng với Ultralytics YOLO11?
Bạn có thể chuyển đổi nhãn bộ dữ liệu DOTA sang định dạng YOLO OBB bằng cách sử dụng convert_dota_to_yolo_obb
chức năng từ Ultralytics. Việc chuyển đổi này đảm bảo khả năng tương thích với các mô hình Ultralytics YOLO, cho phép bạn tận dụng các khả năng OBB để nâng cao khả năng phát hiện đối tượng. Dưới đây là một ví dụ nhanh:
from ultralytics.data.converter import convert_dota_to_yolo_obb
convert_dota_to_yolo_obb("path/to/DOTA")
Script này sẽ định dạng lại các chú thích DOTA của bạn thành định dạng tương thích với YOLO.
Làm cách nào để huấn luyện mô hình YOLO11 với hộp giới hạn có hướng (OBB) trên bộ dữ liệu của tôi?
Huấn luyện mô hình YOLO11 với OBB đòi hỏi bạn phải đảm bảo bộ dữ liệu của mình ở định dạng YOLO OBB, sau đó sử dụng Ultralytics API để huấn luyện mô hình. Dưới đây là một ví dụ bằng cả Python và CLI:
Ví dụ
from ultralytics import YOLO
# Create a new YOLO11n-OBB model from scratch
model = YOLO("yolo11n-obb.yaml")
# Train the model on the custom dataset
results = model.train(data="your_dataset.yaml", epochs=100, imgsz=640)
# Train a new YOLO11n-OBB model on the custom dataset
yolo obb train data=your_dataset.yaml model=yolo11n-obb.yaml epochs=100 imgsz=640
Điều này đảm bảo mô hình của bạn tận dụng các chú thích OBB chi tiết để cải thiện độ chính xác phát hiện.
Những bộ dữ liệu nào hiện được hỗ trợ để huấn luyện OBB trong các mô hình Ultralytics YOLO?
Hiện tại, Ultralytics hỗ trợ các bộ dữ liệu sau để huấn luyện OBB:
- DOTA-v1: Phiên bản đầu tiên của bộ dữ liệu DOTA, cung cấp một tập hợp toàn diện các hình ảnh trên không với hộp giới hạn có hướng để phát hiện đối tượng.
- DOTA-v1.5: Một phiên bản trung gian của bộ dữ liệu DOTA, cung cấp thêm các chú thích và cải tiến so với DOTA-v1 để nâng cao hiệu quả của các tác vụ phát hiện đối tượng.
- DOTA-v2: Bộ dữ liệu này bao gồm 1,7 triệu đối tượng với hộp giới hạn xoay và 11.268 hình ảnh, chủ yếu tập trung vào phát hiện đối tượng trên không.
- DOTA8: Một tập hợp con nhỏ hơn gồm 8 ảnh của bộ dữ liệu DOTA được sử dụng để kiểm tra và kiểm tra tích hợp liên tục (CI).
Các bộ dữ liệu này được thiết kế riêng cho các tình huống mà OBB mang lại lợi thế đáng kể, chẳng hạn như phân tích hình ảnh vệ tinh và trên không.
Tôi có thể sử dụng bộ dữ liệu của riêng mình với hộp giới hạn có hướng để huấn luyện YOLO11 hay không và nếu có thì bằng cách nào?
Có, bạn có thể sử dụng bộ dữ liệu của riêng bạn với các hộp giới hạn có hướng cho quá trình huấn luyện YOLO11. Đảm bảo các chú thích bộ dữ liệu của bạn được chuyển đổi sang định dạng YOLO OBB, bao gồm việc xác định các hộp giới hạn bằng bốn điểm góc của chúng. Sau đó, bạn có thể tạo một tệp cấu hình YAML chỉ định đường dẫn bộ dữ liệu, các lớp và các chi tiết cần thiết khác. Để biết thêm thông tin về cách tạo và cấu hình bộ dữ liệu của bạn, hãy tham khảo phần Bộ dữ liệu được Hỗ trợ.