Meet YOLO26: next-gen vision AI.

Link to this sectionTổng quan về các tập dữ liệu ước tính tư thế (Pose Estimation)#

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 model ước tính tư thế YOLO như sau:

  1. Một tệp văn bản cho mỗi ảnh: Mỗi ả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 ảnh và phần mở rộng ".txt".
  2. 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ực thể đối tượng trong ảnh.
  3. Thông tin đối tượng trên mỗi hàng: Mỗi hàng chứa các 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 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 từ 0 đến 1.
    • Chiều rộng và chiều cao đối tượng: Chiều rộng và chiều cao của đối tượng, được chuẩn hóa từ 0 đến 1.
    • Tọa độ điểm mấu chốt (keypoint) của đối tượng: Các điểm mấu chốt của đối tượng, được chuẩn hóa từ 0 đến 1.

Dưới đây là ví dụ về định dạng nhãn cho tác vụ ước tính tư thế:

Định dạng với các điểm mấu chốt 2D

<class-index> <x> <y> <width> <height> <px1> <py1> <px2> <py2> ... <pxn> <pyn>

Định dạng với khả năng hiển thị điểm mấu chốt (bao gồm độ hiển thị cho mỗi điểm)

<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ỉ số lớp của đối tượng, <x> <y> <width> <height> là các tọa độ được chuẩn hóa của bounding box, và <px1> <py1> <px2> <py2> ... <pxn> <pyn> là các tọa độ điểm mấu chốt được chuẩn hóa. Kênh hiển thị là tùy chọn nhưng hữu ích cho các tập dữ liệu có chú thích về sự che khuất.

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

Framework Ultralytics sử dụng định dạng tệp YAML để xác định cấu hình tập dữ liệu và model cho việc huấn luyện các model ước tính tư thế. Dưới đây là ví dụ về định dạng YAML được sử dụng để xác định tập 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

# Keypoint names per class
kpt_names:
  0:
    - nose
    - left_eye
    - right_eye
    - left_ear
    - right_ear
    - left_shoulder
    - right_shoulder
    - left_elbow
    - right_elbow
    - left_wrist
    - right_wrist
    - left_hip
    - right_hip
    - left_knee
    - right_knee
    - left_ankle
    - right_ankle

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

Các trường trainval chỉ định đường dẫn đến các thư mục chứa ảnh huấn luyện và ảnh 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ác tên phải 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.

(Tùy chọn) nếu các điểm có tính đối xứng thì cần flip_idx, giống như phía trái-phải của cơ thể người hoặc khuôn mặt. Ví dụ: nếu giả định có năm điểm mấu chốt 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ỉ số gốc là [0, 1, 2, 3, 4], thì flip_idx là [1, 0, 2, 4, 3] (chỉ trao đổi chỉ số trái-phải, tức là 0-1 và 3-4, và không sửa đổi các điểm khác như mũi trong ví dụ này).

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

Ví dụ
from ultralytics import YOLO

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

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

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

Phần này phác thảo các tập 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 model ước tính tư thế:

Link to this sectionCOCO-Pose#

  • Mô tả: COCO-Pose là một tập 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ế. Đây là một tập con của tập dữ liệu COCO phổ biến và tập trung vào ước tính tư thế con người. COCO-Pose bao gồm nhiều điểm mấu chốt cho mỗi thực thể con người.
  • Định dạng nhãn: Giống với định dạng Ultralytics YOLO như mô tả ở trên, với các điểm mấu chốt cho các tư thế người.
  • Số lượng lớp: 1 (Người).
  • Các điểm mấu chốt: 17 điểm mấu chốt 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.
  • Cách sử dụng: Phù hợp để huấn luyện các model ước tính tư thế con người.
  • Ghi chú bổ sung: Tập dữ liệu phong phú và đa dạng, chứa hơn 200 nghìn ảnh đã được gắn nhãn.
  • Đọc thêm về COCO-Pose

Link to this sectionCOCO8-Pose#

  • Mô tả: Ultralytics COCO8-Pose là một tập dữ liệu phát hiện tư thế nhỏ nhưng linh hoạt, bao gồm 8 ảnh đầu tiên của tập COCO train 2017, 4 ảnh để huấn luyện và 4 ảnh để xác thực.
  • Định dạng nhãn: Giống với định dạng Ultralytics YOLO như mô tả ở trên, với các điểm mấu chốt cho các tư thế người.
  • Số lượng lớp: 1 (Người).
  • Các điểm mấu chốt: 17 điểm mấu chốt 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.
  • Cách sử dụng: Phù hợp để kiểm tra và gỡ lỗi các model phát hiện đối tượng, hoặc để thử nghiệm với các phương pháp phát hiện mới.
  • Ghi chú bổ sung: COCO8-Pose lý tưởng cho việc kiểm tra nhanh và CI checks.
  • Đọc thêm về COCO8-Pose

Link to this sectionDog-Pose#

  • Mô tả: Tập dữ liệu Dog-Pose chứa 6.773 ảnh huấn luyện và 1.703 ảnh kiểm tra, cung cấp một nguồn tài nguyên đa dạng và phong phú cho việc ước tính điểm mấu chốt trên 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 mấu chốt đặc thù về giải phẫu chó.
  • Số lượng lớp: 1 (Chó).
  • Các điểm mấu chốt: Bao gồm 24 điểm mấu chốt được thiết kế riêng cho tư thế của chó, như các chi, khớp và vị trí đầu.
  • Cách sử dụng: Lý tưởng để huấn luyện các model ước tính tư thế của chó trong nhiều tình huống, từ nghiên cứu đến các ứng dụng thực tế.
  • Đọc thêm về Dog-Pose

Link to this sectionHand Keypoints#

  • Mô tả: Tập dữ liệu ước tính tư thế các điểm mấu chốt trên bàn tay bao gồm gần 26 nghìn ảnh, với 18.776 ảnh được phân bổ cho huấn luyện và 7.992 cho xác thực.
  • Định dạng nhãn: Giống với định dạng Ultralytics YOLO được mô tả ở trên, nhưng có 21 điểm mấu chốt cho bàn tay người và một chiều dữ liệu hiển thị.
  • Số lượng lớp: 1 (Bàn tay).
  • Các điểm mấu chốt: 21 điểm mấu chốt.
  • Cách sử dụng: Tuyệt vời cho ước tính tư thế bàn tay người và nhận diện cử chỉ.
  • Đọc thêm về Hand Keypoints

Link to this sectionTiger-Pose#

  • Mô tả: Tập dữ liệu Tiger Pose của Ultralytics bao gồm 263 hình ảnh được trích xuất từ một video trên YouTube, trong đó 210 hình ảnh được dùng để huấn luyện và 53 hình ảnh dùng để kiểm định.
  • Định dạng nhãn: Giống với định dạng Ultralytics YOLO như mô tả ở trên, với 12 điểm mấu chốt cho tư thế động vật và không có chiều hiển thị.
  • Số lượng lớp: 1 (Hổ).
  • Các điểm mấu chốt: 12 điểm mấu chốt.
  • Cách 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

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 model ước tính tư thế với định dạng Ultralytics YOLO, hãy đảm bảo 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 yêu cầu và chỉ định các đường dẫn, số lượng lớp, và tên lớp trong tệp cấu hình YAML.

Link to this sectionCông cụ chuyển đổi#

Ultralytics cung cấp một công cụ chuyển đổi thuận tiện để chuyển đổi nhãn từ định dạng tập dữ liệu COCO 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 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. Tham số use_keypoints chỉ định có bao gồm các điểm mấu chốt (cho việc ước tính tư thế) trong các nhãn đã chuyển đổi hay không.

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

Link to this sectionĐịnh dạng Ultralytics YOLO cho ước tính tư thế là gì?#

Định dạng Ultralytics YOLO cho các tập dữ liệu ước tính tư thế liên quan đến việc gắn nhãn mỗi ả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 thực thể đối tượng:

  • Chỉ số lớp đối tượng
  • Tọa độ trung tâm đối tượng (x và y được chuẩn hóa)
  • Chiều rộng và chiều cao đối tượng (được chuẩn hóa)
  • Tọa độ các điểm mấu chốt đối tượng (pxn và pyn được chuẩn hóa)

Đối với tư thế 2D, các điểm mấu chốt bao gồm tọa độ x và y đã chuẩn hóa. Với chiều dữ liệu hiển thị, mỗi điểm mấu chốt còn có một cờ hiển thị. Để biết thêm chi tiết, xem Định dạng Ultralytics YOLO.

Link to this sectionLàm thế nào để sử dụng tập dữ liệu COCO-Pose với Ultralytics YOLO?#

Để sử dụng tập dữ liệu COCO-Pose với Ultralytics YOLO:

  1. Tải xuống tập dữ liệu và chuẩn bị các tệp nhãn của bạn theo định dạng YOLO.

  2. Tạo một tệp cấu hình YAML chỉ định các đường dẫn đến ảnh huấn luyện và xác thực, hình dạng điểm mấu chốt và tên lớp.

  3. Sử dụng tệp cấu hình để huấn luyện:

    from ultralytics import YOLO
    
    model = YOLO("yolo26n-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-Posetrain.

Link to this sectionLàm thế nào để thêm tập dữ liệu của riêng tôi cho ước tính tư thế trong Ultralytics YOLO?#

Để thêm tập dữ liệu của bạn:

  1. Chuyển đổi các chú thích của bạn sang định dạng Ultralytics YOLO.

  2. Tạo một tệp cấu hình YAML chỉ định đường dẫn tập dữ liệu, số lượng lớp và tên lớp.

  3. Sử dụng tệp cấu hình để huấn luyện model của bạn:

    from ultralytics import YOLO
    
    model = YOLO("yolo26n-pose.pt")
    results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)

    Để biết các bước đầy đủ, hãy kiểm tra phần Thêm tập dữ liệu của riêng bạn.

Link to this sectionMục đích của tệp YAML tập dữ liệu trong Ultralytics YOLO là gì?#

Tệp YAML tập dữ liệu trong Ultralytics YOLO xác định cấu hình tập dữ liệu và model cho việc huấn luyện. Nó chỉ định các đường dẫn đến ảnh huấn luyện, xác thực và kiểm tra, hình dạng điểm mấu chốt, 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 hợp lý hóa việc quản lý tập dữ liệu và huấn luyện model. Dưới đây là 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

# Keypoint names per class
kpt_names:
  0:
    - nose
    - left_eye
    - right_eye
    - left_ear
    - right_ear
    - left_shoulder
    - right_shoulder
    - left_elbow
    - right_elbow
    - left_wrist
    - right_wrist
    - left_hip
    - right_hip
    - left_knee
    - right_knee
    - left_ankle
    - right_ankle

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

Đọc thêm về việc tạo tệp cấu hình YAML trong Định dạng YAML tập dữ liệu.

Link to this sectionLàm thế nào để chuyển đổi nhãn tập dữ liệu COCO sang định dạng Ultralytics YOLO cho ước tính tư thế?#

Ultralytics cung cấp một công cụ chuyển đổi để chuyển đổi các nhãn tập dữ liệu COCO sang định dạng YOLO, bao gồm cả thông tin điểm mấu chốt:

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 tập dữ liệu COCO vào các dự án YOLO. Để biết chi tiết, tham khảo phần Công cụ chuyển đổihướng dẫn tiền xử lý dữ liệu.

Bình luận