YOLO Vision 2026:

Ước lượng Tư thế với Ultralytics YOLO#

Ultralytics YOLO pose estimation with human body keypoint detection

Ước lượng tư thế (pose estimation) là tác vụ bao gồm 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 khóa (keypoints). Các điểm khóa có thể đại diện cho các bộ phận khác nhau của đối tượng như khớp, mốc, hoặc các đặc điểm nổi bật khác. Vị trí của các điểm khóa thường được biểu diễn dưới dạng tập hợp các tọa độ 2D [x, y], tùy chọn kèm theo cờ hiển thị [x, y, visible].

Đầu ra của một model ước lượng tư thế là một tập hợp các điểm đại diện cho các keypoints trên một đối tượng trong hình ảnh, thường đi kèm với các điểm số tin cậy cho mỗi điểm. Ước lượng 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 khung hình và vị trí tương đối 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 mô hình pose YOLO26 sử dụng hậu tố -pose, tức là yolo26n-pose.pt. Các mô hình này được huấn luyện trên tập dữ liệu COCO keypoints và phù hợp với nhiều tác vụ ước lượng tư thế khác nhau.

Trong model pose YOLO26 mặc định, có 17 keypoints, 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à bảng ánh xạ từ mỗi chỉ số đến khớp cơ thể tương ứng:

  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 pretrained của Ultralytics YOLO26 được hiển thị ở đây. Các model Detect, Segment và Pose được pretrained trên tập dữ liệu COCO, các model Semantic được pretrained trên Cityscapes, và các model Classify được pretrained trên tập dữ liệu ImageNet.

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

Mô hìnhkích thước
(pixel)
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
  • Giá trị mAPval dành cho một mô hình đơn lẻ trên một thang đo duy nhất trên tập dữ liệu COCO Keypoints val2017.
    Tái tạo bằng yolo val pose data=coco-pose.yaml device=0
  • Tốc độ được tính trung bình trên các hình ảnh COCO val bằng cách sử dụng một instance Amazon EC2 P4d.
    Tái tạo bằng yolo val pose data=coco-pose.yaml batch=1 device=0|cpu
  • Giá trị ParamsFLOPs dành cho model đã hợp nhất sau model.fuse(), thao tác này gộp các lớp Conv và BatchNorm lại và, đối với các model end2end, loại bỏ phần đầu phát hiện một-sang-nhiều phụ trợ. Các checkpoint đã huấn luyện trước giữ nguyên kiến trúc huấn luyện đầy đủ và có thể hiển thị số lượng cao hơn.

Huấn luyện (Train)#

Huấn luyện mô hình 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 để kiểm thử và gỡ lỗi cho các mô hình ước lượng 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 mô hình Pose cũng có thể được huấn luyện bằng Ultralytics Platform cloud training.

Đị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 Dataset Guide. Để 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 annotation cũng hỗ trợ nhãn tư thế với các mẫu khung xương có sẵn cho người, 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 lượng tư thế tùy chỉnh, bạn cũng có thể khám phá các tập dữ liệu chuyên biệt như Tiger-Pose để ước lượng 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 mô hình 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 data và các đối số huấn luyện của nó dưới dạng các thuộc tính của mô hình.

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 mô hình YOLO26n-pose đã huấn luyện để chạy dự đoán trên hình ảnh. predict mode cho phép bạn thực hiện suy luận trên hình ảnh, video hoặ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 chi tiết đầy đủ về chế độ predict tại trang Predict.

Đầu ra kết quả#

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

Thuộc tínhLoạiKích thướcMô tả
result.keypointsKeypoints(N)Các điểm đặc trưng.
result.keypoints.datatorch.float32(N,K,2/3)x,y cộng với độ hiển thị/độ tin cậy tùy chọn.
result.keypoints.xytorch.float32(N,K,2)Các điểm đặc trưng pixel.
result.keypoints.xyntorch.float32(N,K,2)Các điểm đặc trưng đã chuẩn hóa.
result.boxesBoxes(N)Các khung bao thực thể.

Đối với các trường Results dành riêng cho từng tác vụ trên mọi tác vụ, hãy xem phần Predict Results by Task.

Xuất (Export)#

Xuất mô hình 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 mô hình 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 đối số format, tức là 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 mô hình đã xuất, tức là yolo predict model=yolo26n-pose.onnx. Các ví dụ sử dụng được hiển thị cho mô hình của bạn sau khi quá trình xuất hoàn tất.

Định dạngĐối số formatMô hìnhMetadataTham số
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

Xem chi tiết đầy đủ về export tại trang Export.

Câu hỏi thường gặp#

  • Ước lượng tư thế với Ultralytics YOLO26 bao gồm việc xác định các điểm cụ thể, được gọi là điểm khóa, trong một hình ảnh. Các điểm khóa 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 các tọa độ [x, y] và điểm độ tin cậy cho từng điểm. Các mô hình YOLO26-pose được thiết kế dành 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 mô hình này được tiền huấn luyện 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 lượng tư thế khác nhau. Để biết thêm thông tin, hãy truy cập Pose Estimation Page.

  • Việc huấn luyện một model YOLO26-pose trên bộ 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 định nghĩa bởi file YAML hoặc một model đã được tiền huấn luyện. Sau đó, bạn có thể bắt đầu quá trình huấn luyện bằng cách sử dụng bộ dữ liệu 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)

    Để biết chi tiết toàn diện về quá trình huấn luyện, hãy tham khảo Train Section. Bạn cũng có thể sử dụng Ultralytics Platform cloud training cho phương pháp không cần mã nguồn để huấn luyện các mô hình ước lượng tư thế tùy chỉnh.

  • Việc xác thực 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ố bộ dữ liệu tương tự đã được 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 Val Section.

  • Có, bạn có thể xuấ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 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 Export Section để biết thêm chi tiết. Các mô hình đã 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 robotics.

  • Ultralytics YOLO26 cung cấp nhiều mô hình pose tiền huấn luyện khác nhau như YOLO26n-pose, YOLO26s-pose, YOLO26m-pose, v.v. Các mô hình này khác nhau về kích thước, độ chính xác (mAP) và tốc độ. Chẳng hạn, mô hình YOLO26n-pose đạt mAPpose50-95 là 57,2 và mAPpose50 là 83,3. Để xem danh sách đầy đủ và chi tiết hiệu suất, hãy truy cập Models Section.

Bình luận