Tổng quan về Bộ dữ liệu Ước tính Tư thế
Các Định Dạng Tập Dữ Liệu Được Hỗ Trợ
Định dạng Ultralytics YOLO
Định dạng nhãn bộ dữ liệu được sử dụng để huấn luyện các mô hình YOLO pose như sau:
- Một tệp văn bản cho mỗi hình ảnh: Mỗi hình ảnh trong bộ 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 thể hiện đối tượng trong hình ảnh.
- Thông tin đối tượng trên mỗi hàng: Mỗi hàng chứa thông tin sau về thể hiện đối tượng:
- Chỉ mục 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 xe hơi, v.v.).
- Tọa độ trung tâm đối tượng: Tọa độ x và y của tâm đối tượng, được chuẩn hóa giữa 0 và 1.
- Chiều rộng và chiều cao của đối tượng: Chiều rộng và chiều cao của đối tượng, được chuẩn hóa giữa 0 và 1.
- Tọa độ điểm chính của đối tượng: Các điểm chính của đối tượng, được chuẩn hóa giữa 0 và 1.
Dưới đây là một ví dụ về định dạng nhãn cho tác vụ ước tính tư thế:
Định dạng với Dim = 2
<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>
Định dạng với Dim = 3
<class-index> <x> <y> <width> <height> <px1> <py1> <p1-visibility> <px2> <py2> <p2-visibility> <pxn> <pyn> <pn-visibility>
Trong định dạng này, <class-index>
là chỉ mục của lớp cho đối tượng,<x> <y> <width> <height>
là tọa độ của hộp giới hạn, và <px1> <py1> <px2> <py2> ... <pxn> <pyn>
là tọa độ pixel của các điểm chính. Các tọa độ được phân tách bằng dấu cách.
Định dạng YAML bộ dữ liệu
Khung 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 các mô hình ước tính tư thế. Dưới đây là một ví dụ về định dạng YAML được sử dụng để xác định bộ dữ liệu tư thế:
ultralytics/cfg/datasets/coco8-pose.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# COCO8-pose dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/pose/coco8-pose/
# Example usage: yolo train data=coco8-pose.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco8-pose ← 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-pose # 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)
# Keypoints
kpt_shape: [17, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]
# Classes
names:
0: person
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip
Hàm train
và val
các trường chỉ định đường dẫn đến các thư mục chứa hình ảnh huấn luyện và xác thực, 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 phải khớp với thứ tự của các chỉ mục lớp đối tượng trong các tệp bộ dữ liệu YOLO.
(Tùy chọn) nếu các điểm đối xứng thì cần flip_idx, như bên trái-phải của người hoặc khuôn mặt. Ví dụ: nếu chúng ta giả sử năm điểm chính của dấu hiệu trên khuôn mặt: [mắt trái, mắt phải, mũi, miệng trái, miệng phải] và chỉ mục ban đầu là [0, 1, 2, 3, 4], thì flip_idx là [1, 0, 2, 4, 3] (chỉ cần trao đổi chỉ mục trái-phải, tức là 0-1 và 3-4, và không sửa đổi những chỉ mục khác như mũi trong ví dụ này).
Cách sử dụng
Ví dụ
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n-pose.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)
# Start training from a pretrained *.pt model
yolo pose train data=coco8-pose.yaml model=yolo11n-pose.pt epochs=100 imgsz=640
Các bộ dữ liệu được hỗ trợ
Phần này trình bày các bộ dữ liệu tương thích với định dạng Ultralytics YOLO và có thể được sử dụng để huấn luyện các mô hình ước tính tư thế:
COCO-Pose
- Mô tả: COCO-Pose là một bộ dữ liệu quy mô lớn về phát hiện đối tượng, phân đoạn và ước tính tư thế. Nó là một tập hợp con của bộ dữ liệu COCO phổ biến và tập trung vào ước tính tư thế người. COCO-Pose bao gồm nhiều điểm chính cho mỗi đối tượng người.
- Định dạng nhãn: Tương tự như định dạng Ultralytics YOLO như mô tả ở trên, với các điểm chính cho tư thế người.
- Số lượng lớp: 1 (Người).
- Điểm chính: 17 điểm chính bao gồm mũi, mắt, tai, vai, khuỷu tay, cổ tay, hông, đầu gối và mắt cá chân.
- Sử dụng: Thích hợp để huấn luyện các mô hình ước tính tư thế người.
- Ghi chú bổ sung: Bộ dữ liệu phong phú và đa dạng, chứa hơn 200 nghìn hình ảnh được gắn nhãn.
- Đọc thêm về COCO-Pose
COCO8-Pose
- Mô tả: Ultralytics COCO8-Pose là một bộ dữ liệu phát hiện tư thế nhỏ, nhưng linh hoạt, bao gồm 8 hình ảnh đầu tiên của tập huấn luyện COCO 2017, 4 hình ảnh để huấn luyện và 4 hình ảnh để xác thực.
- Định dạng nhãn: Tương tự như định dạng Ultralytics YOLO như mô tả ở trên, với các điểm chính cho tư thế người.
- Số lượng lớp: 1 (Người).
- Điểm chính: 17 điểm chính bao gồm mũi, mắt, tai, vai, khuỷu tay, cổ tay, hông, đầu gối và mắt cá chân.
- Sử dụng: Thích hợp để kiểm tra và gỡ lỗi các mô hình phát hiện đối tượng hoặc để thử nghiệm các phương pháp phát hiện mới.
- Ghi chú bổ sung: COCO8-Pose lý tưởng cho các kiểm tra tính hợp lệ và kiểm tra CI.
- Đọc thêm về COCO8-Pose
Tiger-Pose
- Mô tả: Bộ dữ liệu Ultralytics Tiger Pose bao gồm 263 hình ảnh lấy từ một Video YouTube, với 210 hình ảnh được phân bổ cho quá trình huấn luyện và 53 hình ảnh cho quá trình xác thực.
- Định dạng nhãn: Tương tự như định dạng Ultralytics YOLO như mô tả ở trên, với 12 điểm chính cho tư thế động vật và không có chiều hiển thị.
- Số lượng lớp: 1 (Hổ).
- Điểm chính: 12 điểm chính.
- Sử dụng: Tuyệt vời cho tư thế động vật hoặc bất kỳ tư thế nào không dựa trên con người.
- Đọc thêm về Tiger-Pose
Điểm Chính của Bàn Tay
- Mô tả: Bộ dữ liệu tư thế điểm chính bàn tay bao gồm gần 26 nghìn hình ảnh, với 18776 hình ảnh được phân bổ cho quá trình huấn luyện và 7992 hình ảnh cho quá trình xác thực.
- Định dạng nhãn: Tương tự như định dạng Ultralytics YOLO như mô tả ở trên, nhưng với 21 điểm chính cho bàn tay người và chiều hiển thị.
- Số lượng lớp: 1 (Bàn tay).
- Điểm chính: 21 điểm chính.
- Sử dụng: Tuyệt vời cho việc ước tính dáng điệu bàn tay người và nhận dạng cử chỉ.
- Đọc thêm về Hand Keypoints
Dog-Pose
- Mô tả: Bộ dữ liệu Dog Pose chứa khoảng 6.000 hình ảnh, cung cấp một nguồn tài nguyên đa dạng và phong phú để huấn luyện và xác thực các mô hình ước tính tư thế chó.
- Định dạng nhãn: Tuân theo định dạng Ultralytics YOLO, với các chú thích cho nhiều điểm chính cụ thể cho giải phẫu chó.
- Số lượng lớp: 1 (Chó).
- Điểm chính: Bao gồm 24 điểm chính được thiết kế riêng cho các tư thế chó, chẳng hạn như tứ chi, khớp và vị trí đầu.
- Sử dụng: Lý tưởng cho việc huấn luyện các mô hình để ước tính dáng điệu của chó trong các tình huống khác nhau, từ nghiên cứu đến các ứng dụng thực tế.
- Đọc thêm về Dog-Pose
Thêm tập dữ liệu của riêng bạn
Nếu bạn có bộ dữ liệu riêng và muốn sử dụng nó để huấn luyện các mô hình ước tính tư thế 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 yêu cầu 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 cụ Chuyển đổi
Ultralytics cung cấp một công cụ chuyển đổi tiện lợi để chuyển đổi nhãn từ định dạng tập dữ liệu COCO phổ biến sang định dạng YOLO:
Ví dụ
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)
Công cụ chuyển đổi này có thể được sử dụng để chuyển đổi bộ dữ liệu COCO hoặc bất kỳ bộ dữ liệu nào ở định dạng COCO sang định dạng Ultralytics YOLO. Tham số use_keypoints
chỉ định có bao gồm các điểm chính (cho ước tính tư thế) trong các nhãn đã chuyển đổi hay không.
Câu hỏi thường gặp
Định dạng Ultralytics YOLO cho ước tính tư thế là gì?
Định dạng Ultralytics YOLO cho bộ dữ liệu ước tính tư thế bao gồm việc dán nhãn từng hình ảnh bằng một tệp văn bản tương ứng. Mỗi hàng của tệp văn bản lưu trữ thông tin về một đối tượng:
- Chỉ mục lớp đối tượng
- Tọa độ tâm đối tượng (x và y đã được chuẩn hóa)
- Chiều rộng và chiều cao của đối tượng (đã được chuẩn hóa)
- Tọa độ điểm chính của đối tượng (pxn và pyn đã được chuẩn hóa)
Đối với tư thế 2D, các điểm chính bao gồm tọa độ pixel. Đối với 3D, mỗi điểm chính cũng có một cờ hiển thị. Để biết thêm chi tiết, hãy xem định dạng Ultralytics YOLO.
Làm cách nào để sử dụng bộ dữ liệu COCO-Pose với Ultralytics YOLO?
Để sử dụng bộ dữ liệu COCO-Pose với Ultralytics YOLO:
- Tải xuống bộ dữ liệu và chuẩn bị các tệp nhãn của bạn ở định dạng YOLO.
- Tạo tệp cấu hình YAML chỉ định đường dẫn đến hình ảnh huấn luyện và xác thực, hình dạng điểm chính và tên lớp.
-
Sử dụng tệp cấu hình để huấn luyện:
from ultralytics import YOLO model = YOLO("yolo11n-pose.pt") # load pretrained model results = model.train(data="coco-pose.yaml", epochs=100, imgsz=640)
Để biết thêm thông tin, hãy truy cập các phần COCO-Pose và train.
Làm cách nào để thêm bộ dữ liệu của riêng tôi để ước tính tư thế trong Ultralytics YOLO?
Để thêm bộ dữ liệu của bạn:
- Chuyển đổi các chú thích của bạn sang định dạng Ultralytics YOLO.
- Tạo tệp cấu hình YAML chỉ định đường dẫn bộ dữ liệu, số lượng lớp và tên lớp.
-
Sử dụng tệp cấu hình để huấn luyện mô hình của bạn:
from ultralytics import YOLO model = YOLO("yolo11n-pose.pt") results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)
Để biết các bước hoàn chỉnh, hãy xem phần Thêm bộ dữ liệu của riêng bạn.
Mục đích của tệp YAML bộ dữ liệu trong Ultralytics YOLO là gì?
Tệp YAML của bộ dữ liệu trong Ultralytics YOLO xác định cấu hình bộ dữ liệu và mô hình để huấn luyện. Nó chỉ định đường dẫn đến hình ảnh huấn luyện, xác thực và kiểm tra, hình dạng keypoint, tên lớp và các tùy chọn cấu hình khác. Định dạng có cấu trúc này giúp đơn giản hóa quản lý bộ dữ liệu và huấn luyện mô hình. Dưới đây là một ví dụ về định dạng YAML:
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# COCO8-pose dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/pose/coco8-pose/
# Example usage: yolo train data=coco8-pose.yaml
# parent
# ├── ultralytics
# └── datasets
# └── coco8-pose ← 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-pose # 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)
# Keypoints
kpt_shape: [17, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]
# Classes
names:
0: person
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip
Đọc thêm về cách tạo tệp cấu hình YAML trong Định dạng YAML bộ dữ liệu.
Làm cách nào để chuyển đổi nhãn bộ dữ liệu COCO sang định dạng Ultralytics YOLO để ước tính tư thế?
Ultralytics cung cấp một công cụ chuyển đổi để chuyển đổi nhãn bộ dữ liệu COCO sang định dạng YOLO, bao gồm thông tin điểm chính:
from ultralytics.data.converter import convert_coco
convert_coco(labels_dir="path/to/coco/annotations/", use_keypoints=True)
Công cụ này giúp tích hợp liền mạch các bộ dữ liệu COCO vào các dự án YOLO. Để biết chi tiết, hãy tham khảo phần Công cụ chuyển đổi và hướng dẫn tiền xử lý dữ liệu.