Bảo mật sẵn sàng cho doanh nghiệp: Tuân thủ ISO 27001 + SOC 2 Type I.

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 train, val, và test trỏ đến các hình ảnh dùng cho huấn luyện, kiểm thử và đánh giá. Mỗi trường chấp nhận một thư mục, một danh sách các thư mục, hoặc một tệp *.txt liệt kê mỗi đường dẫn hình ảnh trên một dòng (các đường dẫn bắt đầu bằng ./ được phân giải tương đối so với tệp *.txt). Tệp *.txt rất hữu ích để huấn luyện trên một tập con của thư mục, bỏ qua các hình ảnh chưa được gán nhãn, hoặc kết hợp hình ảnh từ nhiều nguồn khác nhau vào một phân đoạn.

Các đường dẫn ảnh dưới dạng tệp `*.txt`
path: datasets/coco8-pose # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
  0: person

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) flip_idx ánh xạ từng keypoint tới hình ảnh phản chiếu của nó, nhờ đó quá trình tăng cường dữ liệu lật ngang (horizontal-flip) giữ cho bên trái và bên phải nhất quán trên các bộ xương đối xứng như cơ thể người hoặc khuôn mặt. Đối với năm điểm mốc trên khuôn mặt được đánh chỉ mục là [mắt trái, mắt phải, mũi, miệng trái, miệng phải] = [0, 1, 2, 3, 4], flip_idx là [1, 0, 2, 4, 3]: các cặp trái-phải 0-1 và 3-4 hoán đổi cho nhau, còn mũi giữ nguyên chỉ mục của chính nó.

(Tùy chọn) kpt_oks_sigmas thiết lập các giá trị sigma OKS tùy chỉnh cho mỗi keypoint được sử dụng trong quá trình validation, ví dụ: [0.26, 0.25, 0.25, ...]. Độ dài danh sách phải bằng với số lượng keypoint N từ kpt_shape, và mọi giá trị phải là số dương. Khi được bỏ qua, các giá trị sigma 17-keypoint của COCO sẽ được sử dụng cho kpt_shape: [17, 3] và giá trị đồng nhất 1/N sẽ được áp dụng cho các trường hợp khác.

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 YOLO của Ultralytics và có thể được sử dụng để huấn luyện các mô hình ước tính tư thế:

Link to this sectionCOCO-Pose#

  • Mô tả: COCO-Pose là tập dữ liệu ước tính tư thế người quy mô lớn bao gồm các hình ảnh COCO 2017 có chứa người được gán nhãn keypoint.
  • Đị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).
  • Keypoints: 17 loại keypoint 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, mỗi loại có một chiều độ hiển thị (visibility dimension).
  • 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 này được xây dựng dựa trên thử thách COCO Keypoints 2017: 58.945 hình ảnh được gán nhãn với 156.165 người.
  • Đọc thêm về COCO-Pose

Link to this sectionCOCO8-Pose#

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

Link to this sectionDog-Pose#

  • Mô tả: Tập dữ liệu Ultralytics Dog-Pose chứa 6.773 hình ảnh huấn luyện và 1.703 hình ảnh xác thực cho việc ước tính keypoint 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ó).
  • Keypoints: 24 keypoint, mỗi điểm có một chiều độ hiển thị, được thiết kế riêng cho các 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ế.
  • Ghi chú bổ sung: Các hình ảnh nguồn được lấy từ Stanford Dogs Dataset.
  • Đọc thêm về Dog-Pose

Link to this sectionHand Keypoints#

  • Mô tả: Tập dữ liệu Ultralytics Hand Keypoints bao gồm 26.768 hình ảnh, với 18.776 hình ảnh được dành cho huấn luyện và 7.992 hình ảnh 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ỉ.
  • Ghi chú bổ sung: Các chú thích điểm chính (keypoint) được tạo bằng Google MediaPipe để đảm bảo tính nhất quán của nhãn.
  • Đọc thêm về Hand Keypoints

Link to this sectionTiger-Pose#

  • Mô tả: Tập dữ liệu Ultralytics Tiger-Pose bao gồm 263 hình ảnh được lấy từ một video YouTube, với 210 hình ảnh được dành cho huấn luyện và 53 hình ảnh cho 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 12 keypoint 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.
  • Ghi chú bổ sung: Được phát hành theo AGPL-3.0 License.
  • Đọ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.

Để bỏ qua hoàn toàn bước chuyển đổi, Ultralytics Platform cho phép bạn tải lên hình ảnh thô, gán nhãn keypoint ngay trong trình duyệt và huấn luyện trực tiếp trên tập dữ liệu đó.

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 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 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?#

coco-pose.yaml được cung cấp sẵn cùng gói và sẽ tự động tải xuống các hình ảnh và nhãn trong lần sử dụng đầu tiên, do đó không cần chuẩn bị thủ công:

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 chi tiết về tập dữ liệu, hãy xem COCO-Pose, và xem trang Train để biết danh sách đối số đầy đủ.

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, hãy 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