Ước tính tư thế

YOLO pose estimation with human body keypoint detection

Ước tính tư thế (Pose estimation) là một tác vụ liên quan đến việc xác định vị trí của các điểm cụ thể trong một hình ảnh, thường được gọi là các điểm mấu chốt (keypoints). Các điểm mấu chốt này có thể đại diện cho nhiều bộ phận khác nhau của đối tượng như khớp, cột mốc, hoặc các đặc điểm nổi bật khác. Vị trí của các điểm mấu chốt thường được biểu diễn dưới dạng tập hợp tọa độ 2D [x, y] hoặc 3D [x, y, visible].

Đầu ra của một model ước tính tư thế là một tập hợp các điểm đại diện cho các keypoint trên đối tượng trong hình ảnh, thường kèm theo điểm số tin cậy (confidence score) cho mỗi điểm. Ước tính tư thế là lựa chọn tối ưu khi bạn cần xác định các bộ phận cụ thể của một đối tượng trong cảnh và vị trí tương quan của chúng với nhau.



Watch: How to Run Real-Time Pose Estimation with Ultralytics YOLO26 | Tracking & Keypoints Extraction 🕺
Mẹo

Các model pose YOLO26 sử dụng hậu tố -pose, ví dụ: yolo26n-pose.pt. Các model này được huấn luyện trên tập dữ liệu COCO keypoints và phù hợp cho nhiều tác vụ ước tính tư thế khác nhau.

Trong model pose YOLO26 mặc định, có 17 điểm keypoint, mỗi điểm đại diện cho một bộ phận khác nhau của cơ thể người. Dưới đây là ánh xạ của từng chỉ số tương ứng với các khớp cơ thể:

  1. Mũi
  2. Mắt trái
  3. Mắt phải
  4. Tai trái
  5. Tai phải
  6. Vai trái
  7. Vai phải
  8. Khuỷu tay trái
  9. Khuỷu tay phải
  10. Cổ tay trái
  11. Cổ tay phải
  12. Hông trái
  13. Hông phải
  14. Đầu gối trái
  15. Đầu gối phải
  16. Cổ chân trái
  17. Cổ chân phải

Các mô hình

Các model Pose được huấn luyện trước của Ultralytics YOLO26 được hiển thị tại đây. Các model Detect, Segment và Pose được huấn luyện trước trên tập dữ liệu COCO, các model Semantic được huấn luyện trước trên Cityscapes, và các model Classify được huấn luyện trước trên tập dữ liệu ImageNet.

Các Model sẽ tự động tải xuống từ release mới nhất của Ultralytics trong lần sử dụng đầu tiên.

Mô hìnhkích thước
(pixels)
mAPpose
50-95(e2e)
mAPpose
50(e2e)
Tốc độ
CPU ONNX
(ms)
Tốc độ
T4 TensorRT10
(ms)
params
(M)
FLOPs
(B)
YOLO26n-pose64057.283.340.3 ± 0.51.8 ± 0.02.97.5
YOLO26s-pose64063.086.685.3 ± 0.92.7 ± 0.010.423.9
YOLO26m-pose64068.889.6218.0 ± 1.55.0 ± 0.121.573.1
YOLO26l-pose64070.490.5275.4 ± 2.46.5 ± 0.125.991.3
YOLO26x-pose64071.691.6565.4 ± 3.012.2 ± 0.257.6201.7
  • Các giá trị mAPval dành cho model đơn trên thang đo đơn trên tập dữ liệu COCO Keypoints val2017.
    Tái tạo bằng lệnh yolo val pose data=coco-pose.yaml device=0
  • Tốc độ trung bình trên các hình ảnh COCO val sử dụng instance Amazon EC2 P4d.
    Tái tạo bằng lệnh yolo val pose data=coco-pose.yaml batch=1 device=0|cpu
  • Các giá trị ParamsFLOPs dành cho mô hình đã được gộp sau lệnh model.fuse(), lệnh này hợp nhất các lớp Conv và BatchNorm và, đối với các mô hình end2end, loại bỏ head phát hiện one-to-many phụ. Các checkpoint huấn luyện trước giữ lại toàn bộ kiến trúc huấn luyện và có thể hiển thị số lượng tham số cao hơn.

Huấn luyện (Train)

Huấn luyện một model YOLO26-pose trên tập dữ liệu COCO8-pose. Tập dữ liệu COCO8-pose là một tập dữ liệu mẫu nhỏ hoàn hảo cho việc kiểm thử và gỡ lỗi các model ước tính tư thế của bạn.

Ví dụ
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.yaml")  # build a new model from YAML
model = YOLO("yolo26n-pose.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n-pose.yaml").load("yolo26n-pose.pt")  # build from YAML and transfer weights

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

Xem chi tiết chế độ train đầy đủ trong trang Train. Các model Pose cũng có thể được huấn luyện trên GPU đám mây thông qua Ultralytics Platform.

Định dạng tập dữ liệu

Định dạng tập dữ liệu pose YOLO có thể được tìm thấy chi tiết trong Hướng dẫn Tập dữ liệu. Để chuyển đổi tập dữ liệu hiện có của bạn từ các định dạng khác (như COCO v.v.) sang định dạng YOLO, vui lòng sử dụng công cụ JSON2YOLO của Ultralytics. Ultralytics Platform cũng hỗ trợ chú thích tư thế với các mẫu skeleton tích hợp sẵn cho người, bàn tay, khuôn mặt và bố cục keypoint tùy chỉnh.

Đối với các tác vụ ước tính tư thế tùy chỉnh, bạn cũng có thể khám phá các tập dữ liệu chuyên dụng như Tiger-Pose để ước tính tư thế động vật, Hand Keypoints để theo dõi bàn tay, hoặc Dog-Pose để phân tích tư thế chó.

Đánh giá (Val)

Xác thực độ chính xác của model YOLO26n-pose đã huấn luyện trên tập dữ liệu COCO8-pose. Không cần đối số nào vì model đã giữ lại các thông tin data huấn luyện và các tham số làm thuộc tính model.

Ví dụ
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.box.map  # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps  # a list containing mAP50-95 for each category
metrics.box.image_metrics  # per-image metrics dictionary for box with precision, recall, F1, TP, FP, and FN
metrics.pose.map  # map50-95(P)
metrics.pose.map50  # map50(P)
metrics.pose.map75  # map75(P)
metrics.pose.maps  # a list containing mAP50-95(P) for each category
metrics.pose.image_metrics  # per-image metrics dictionary for pose with precision, recall, F1, TP, FP, and FN

Dự đoán (Predict)

Sử dụng model YOLO26n-pose đã huấn luyện để chạy dự đoán trên hình ảnh. Chế độ predict cho phép bạn thực hiện suy luận trên hình ảnh, video hoặc luồng dữ liệu thời gian thực.

Ví dụ
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image

# Access the results
for result in results:
    xy = result.keypoints.xy  # x and y coordinates
    xyn = result.keypoints.xyn  # normalized
    kpts = result.keypoints.data  # x, y, visibility (if available)

Xem chi tiết đầy đủ về chế độ predict trong trang Dự đoán.

Xuất (Export)

Xuất model YOLO26n Pose sang một định dạng khác như ONNX, CoreML, v.v. Điều này cho phép bạn triển khai model của mình trên nhiều nền tảng và thiết bị khác nhau để thực hiện suy luận thời gian thực.

Ví dụ
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom-trained model

# Export the model
model.export(format="onnx")

Các định dạng xuất YOLO26-pose khả dụng nằm trong bảng dưới đây. Bạn có thể xuất sang bất kỳ định dạng nào bằng cách sử dụng tham số format, ví dụ: format='onnx' hoặc format='engine'. Bạn có thể dự đoán hoặc xác thực trực tiếp trên các model đã xuất, ví dụ: yolo predict model=yolo26n-pose.onnx. Các ví dụ sử dụng được hiển thị cho model của bạn sau khi quá trình xuất hoàn tất.

Định dạngTham số formatMô hìnhMetadataCác tham số
PyTorch-yolo26n-pose.pt-
TorchScripttorchscriptyolo26n-pose.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-pose.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n-pose_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-pose.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-pose.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-pose_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-pose.pbimgsz, batch, device
TF Litetfliteyolo26n-pose.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-pose_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n-pose_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-pose_paddle_model/imgsz, batch, device
MNNmnnyolo26n-pose.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-pose_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-pose_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n-pose_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n-pose_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-pose_axelera_model/imgsz, batch, int8, data, fraction, device
DeepXdeepxyolo26n-pose_deepx_model/imgsz, int8, data, optimize, device

Xem chi tiết export đầy đủ trong trang Export.

Câu hỏi thường gặp (FAQ)

Ước tính tư thế với Ultralytics YOLO26 là gì và nó hoạt động như thế nào?

Ước tính tư thế với Ultralytics YOLO26 bao gồm việc xác định các điểm cụ thể, được gọi là các điểm mấu chốt (keypoints), trong một hình ảnh. Những điểm mấu chốt này thường đại diện cho các khớp hoặc các đặc điểm quan trọng khác của đối tượng. Đầu ra bao gồm tọa độ [x, y] và điểm số tin cậy cho mỗi điểm. Các model YOLO26-pose được thiết kế đặc biệt cho tác vụ này và sử dụng hậu tố -pose, chẳng hạn như yolo26n-pose.pt. Các model này được huấn luyện trước trên các tập dữ liệu như COCO keypoints và có thể được sử dụng cho nhiều tác vụ ước tính tư thế khác nhau. Để biết thêm thông tin, hãy truy cập Trang Ước tính tư thế.

Làm thế nào để tôi huấn luyện một model YOLO26-pose trên một tập dữ liệu tùy chỉnh?

Việc huấn luyện một model YOLO26-pose trên một tập dữ liệu tùy chỉnh bao gồm việc tải một model, có thể là một model mới được xác định bởi tệp YAML hoặc một model đã huấn luyện trước. Sau đó, bạn có thể bắt đầu quá trình huấn luyện bằng cách sử dụng tập dữ liệu và tham số bạn đã chỉ định.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.yaml")  # build a new model from YAML
model = YOLO("yolo26n-pose.pt")  # load a pretrained model (recommended for training)

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

Để biết chi tiết toàn diện về huấn luyện, hãy tham khảo Phần Huấn luyện. Bạn cũng có thể sử dụng Ultralytics Platform cho phương pháp huấn luyện không cần lập trình các model ước tính tư thế tùy chỉnh.

Làm thế nào để tôi xác thực một model YOLO26-pose đã được huấn luyện?

Việc xác thực một model YOLO26-pose bao gồm đánh giá độ chính xác của nó bằng cách sử dụng các tham số tập dữ liệu giống như đã giữ lại trong quá trình huấn luyện. Dưới đây là một ví dụ:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered

Để biết thêm thông tin, hãy truy cập Phần Val.

Tôi có thể xuất một model YOLO26-pose sang các định dạng khác không, và bằng cách nào?

Có, bạn có thể xuất một model YOLO26-pose sang nhiều định dạng khác nhau như ONNX, CoreML, TensorRT, v.v. Việc này có thể được thực hiện bằng cách sử dụng Python hoặc Giao diện dòng lệnh (CLI).

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-pose.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom-trained model

# Export the model
model.export(format="onnx")

Tham khảo Phần Xuất để biết thêm chi tiết. Các model đã xuất có thể được triển khai trên các thiết bị biên cho các ứng dụng thời gian thực như theo dõi thể dục, phân tích thể thao, hoặc robot học.

Các model Ultralytics YOLO26-pose khả dụng và số liệu hiệu suất của chúng là gì?

Ultralytics YOLO26 cung cấp nhiều pose model được huấn luyện trước như YOLO26n-pose, YOLO26s-pose, YOLO26m-pose, và nhiều phiên bản khác. Các model này khác nhau về kích thước, độ chính xác (mAP) và tốc độ. Ví dụ, model YOLO26n-pose đạt mAPpose50-95 là 50.0 và mAPpose50 là 81.0. Để xem danh sách đầy đủ và chi tiết hiệu suất, hãy truy cập Phần Model.

Bình luận