Ultralytics YOLO27:

Ước tính tư thế với Ultralytics YOLO#

Ultralytics YOLO pose estimation with human body keypoint detection

Ước tính tư thế là một tác vụ xác định vị trí của các điểm cụ thể trong ảnh, thường được gọi là keypoint. Các keypoint có thể biểu thị nhiều bộ phận khác nhau của đối tượng, chẳng hạn như khớp, mốc hoặc các đặc trưng đặc biệt khác. Vị trí của các keypoint thường được biểu diễn dưới dạng một tập hợp tọa độ 2D [x, y], tùy chọn kèm theo cờ khả năng hiển thị [x, y, visible].

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



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

Các model pose của YOLO26 sử dụng hậu tố -pose, tức là yolo26n-pose.pt. Các model này được huấn luyện trên dataset COCO keypoints và phù hợp với nhiều tác vụ ước tính tư thế.

Trong model pose YOLO26 mặc định có 17 keypoint, mỗi keypoint biểu thị một bộ phận khác nhau của cơ thể người. Dưới đây là ánh xạ từ mỗi chỉ mục đến khớp tương ứng trên 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. Mắt cá chân trái
  17. Mắt cá chân phải

Models#

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 dataset COCO, các model Semantic được huấn luyện trước trên Cityscapes, còn các model Classify được huấn luyện trước trên dataset ImageNet.

Models được tự động tải xuống từ bản phát hành mới nhất của Ultralytics trong lần sử dụng đầu tiên.

Modelkích thước
(pixel)
mAPpose
50-95(e2e)
mAPpose
50(e2e)
Tốc độ
CPU ONNX
(ms)
Tốc độ
T4 TensorRT10
(ms)
tham số
(M)
FLOPs
(B)
YOLO26n-pose64057.283.340.3 ± 0.51.8 ± 0.02.97.6
YOLO26s-pose64063.086.685.3 ± 0.92.7 ± 0.010.424.1
YOLO26m-pose64068.889.6218.0 ± 1.55.0 ± 0.121.573.3
YOLO26l-pose64070.490.5275.4 ± 2.46.5 ± 0.125.991.7
YOLO26x-pose64071.691.6565.4 ± 3.012.2 ± 0.257.6202.3
  • Các giá trị mAPval được tính cho một model, một tỷ lệ ở cấp ảnh đơn trên dataset COCO Keypoints val2017.
    Tái hiện bằng yolo val pose data=coco-pose.yaml device=0 nms=False
  • Tốc độ được tính trung bình trên các ảnh COCO val bằng một instance Amazon EC2 P4d.
    Tái hiện bằng yolo val pose data=coco-pose.yaml batch=1 device=0|cpu nms=False
  • Params and FLOPs values are for fused models after Conv/BatchNorm folding and removal of the unused detection branch. Pretrained checkpoints retain the full training architecture and may show higher counts.

Xem bản xem trước YOLO27 chưa phát hành để biết các kết quả điểm đặc trưng COCO sơ bộ.

Huấn luyện#

Huấn luyện model YOLO26-pose trên dataset COCO8-pose. Dataset COCO8-pose là một dataset mẫu nhỏ, rất phù hợp để kiểm thử và debug các model ước tính tư thế.

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 thông tin chi tiết đầy đủ về mode train trên trang Train. Các model Pose cũng có thể được huấn luyện bằng tính năng huấn luyện cloud của Ultralytics Platform.

Định dạng dataset#

Định dạng tập dữ liệu ước lượng tư thế YOLO có thể được tìm thấy chi tiết trong Hướng dẫn Tập dữ liệu. Để chuyển đổi một tập dữ liệu JSON điểm khóa COCO hiện có sang định dạng YOLO, hãy sử dụng hàm tích hợp convert_coco với use_keypoints=True, như được mô tả trong hướng dẫn COCO sang YOLO. Chú thích Nền tảng Ultralytics cũng hỗ trợ nhãn tư thế với các mẫu khung xương tích hợp sẵn cho người, bàn tay, khuôn mặt và bố cục điểm khóa 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 dataset chuyên biệt 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ó.

Val#

Đánh giá độ chính xác của model YOLO26n-pose đã huấn luyện trên dataset COCO8-pose. Không cần cung cấp đối số vì model giữ data dùng trong quá trình huấn luyện và các đối số dưới dạng thuộc tính của 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

Predict#

Sử dụng model YOLO26n-pose đã huấn luyện để chạy dự đoán trên ảnh. Mode predict cho phép bạn thực hiện inference trên ảnh, video hoặc các luồng 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 đầy đủ chi tiết về mode predict trên trang Predict.

Output kết quả#

Ước tính tư thế trả về một đối tượng Results cho mỗi ảnh. Các trường dự đoán chính là result.keypoints cho tọa độ pose và result.boxes cho các instance được phát hiện mà những keypoint đó thuộc về.

Thuộc tínhKiểuShapeMô tả
result.keypointsKeypoints(N)Keypoint.
result.keypoints.datatorch.float32(N,K,2/3)x,y cùng thông tin khả năng hiển thị/độ tin cậy tùy chọn.
result.keypoints.xytorch.float32(N,K,2)Keypoint theo pixel.
result.keypoints.xyntorch.float32(N,K,2)Keypoint chuẩn hóa.
result.boxesBoxes(N)BBox của instance.

Để xem các field Results dành riêng cho từng task trên mọi task, hãy xem phần Predict Results by Task.

Export#

Export 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 trên nhiều nền tảng và thiết bị để inference 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 export YOLO26-pose khả dụng được liệt kê trong bảng bên dưới. Bạn có thể export sang bất kỳ định dạng nào bằng đối số format, tức là format='onnx' hoặc format='engine'. Bạn có thể dự đoán hoặc đánh giá trực tiếp trên các model đã export, tức là yolo predict model=yolo26n-pose.onnx. Các ví dụ sử dụng cho model của bạn sẽ được hiển thị sau khi hoàn tất export.

Định dạngArgument formatModelMetadataArguments
PyTorch-yolo26n-pose.pt-
TorchScripttorchscriptyolo26n-pose.torchscriptimgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-pose.onnximgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-pose_openvino_model/imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-pose.engineimgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-pose.mlpackageimgsz, dynamic, quantize, nms, batch, device
TF SavedModelsaved_modelyolo26n-pose_saved_model/imgsz, keras, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-pose.pbimgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-pose_edgetpu.tfliteimgsz, quantize, opset, data, fraction, device
PaddlePaddlepaddleyolo26n-pose_paddle_model/imgsz, batch, device
MNNmnnyolo26n-pose.mnnimgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n-pose_ncnn_model/imgsz, quantize, batch, device
IMX500imxyolo26n-pose_imx_model/imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-pose_rknn_model/imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n-pose_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-pose_axelera_model/imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-pose_deepx_model/imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n-pose_qnn.onnximgsz, batch, name, quantize, simplify, opset, data, fraction, device
LiteRTlitertyolo26n-pose.tfliteimgsz, quantize, batch, data, fraction, device
Hailohailoyolo26n-pose_hailo_model/imgsz, name, quantize, data, fraction, simplify, conf, iou
Huawei Ascendascendyolo26n-pose_ascend_model/imgsz, batch, name, quantize, opset, simplify, nms
Apple Core AIcoreaiyolo26n-pose.aimodelimgsz, batch, quantize

nms=None mặc định sử dụng đầu ra thô cho NMS bên ngoài. Thiết lập nms=False để chọn phần đầu không có NMS khả dụng; các định dạng không được hỗ trợ sẽ quay lại đường dẫn đầu ra gốc của chúng. Các mục nms ở trên xác định các định dạng có thể nhúng NMS bằng nms=True.

Xem đầy đủ chi tiết về export trên trang Export.

FAQ#

  • Ước lượng tư thế với Ultralytics YOLO26 bao gồm việc xác định các điểm cụ thể trong ảnh, được gọi là các điểm chính. Các điểm chính này thường biểu thị các khớp hoặc những đặc trưng quan trọng khác của đối tượng. Kết quả đầu ra bao gồm các tọa độ [x, y] và điểm tin cậy cho từng điểm. Các model YOLO26-pose được thiết kế riêng 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 pretrained trên những dataset như các điểm chính COCO và có thể được sử dụng cho nhiều tác vụ ước lượng tư thế khác nhau. Để biết thêm thông tin, hãy truy cập Trang Ước lượng Tư thế.

  • Việc train model YOLO26-pose trên dataset tùy chỉnh bao gồm tải một model, có thể là model mới được định nghĩa bằng file YAML hoặc model pretrained. Sau đó, bạn có thể bắt đầu quy trình training bằng dataset và các tham số đã 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)

    Để xem thông tin chi tiết đầy đủ về quá trình training, hãy tham khảo Phần Train. Bạn cũng có thể sử dụng dịch vụ cloud training của Ultralytics Platform để training các model ước lượng tư thế tùy chỉnh mà không cần code.

  • Validation model YOLO26-pose bao gồm việc đánh giá độ chính xác của model bằng các tham số dataset giống với những tham số được giữ lại trong quá trình training. 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.

  • Có, bạn có thể export model YOLO26-pose sang nhiều format khác nhau như ONNX, CoreML, TensorRT và các format khác. Việc này có thể được thực hiện bằ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 Export để biết thêm chi tiết. Các model đã export có thể được triển khai trên các thiết bị edge cho những ứng dụng thời gian thực như theo dõi thể chất, phân tích thể thao hoặc robotics.

  • Ultralytics YOLO26 cung cấp nhiều model pose pretrained như YOLO26n-pose, YOLO26s-pose, YOLO26m-pose và các model 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à 57.2 và mAPpose50 là 83.3. Để xem danh sách đầy đủ và thông tin chi tiết về hiệu năng, hãy truy cập Phần Models.

Bình luận