Ultralytics YOLO27:
Get Started

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

Ultralytics YOLO pose estimation with human body keypoint detection

Ước tính tư thế là 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. 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, điểm mốc hoặc các đặc điểm riêng biệt khác. Vị trí của keypoint thường được biểu diễn dưới dạng tập hợp tọa độ 2D [x, y], tùy chọn kèm theo cờ hiển thị [x, y, visible].

Đầu ra của model ước tính tư thế là tập hợp các điểm biểu thị keypoint trên đối tượng trong ảnh, thường kèm theo đ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 đối tượng trong một cảnh và vị trí của chúng so với nhau.



Xem: Cách chạy ước tính tư thế theo thời gian thực bằng Ultralytics YOLO26 | Theo dõi và trích xuất keypoint 🕺
Mẹo

Các model YOLO26 Pose sử dụng hậu tố -pose, tức là yolo26n-pose.pt, và được pretrained trên các keypoint COCO.

Model#

Các model YOLO26 Pose được pretrained trên dataset các keypoint COCO được hiển thị bên dưới.

Model sẽ tự động tải xuống từ bản phát hành Ultralytics mới nhất 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)
params
(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 đo với một model, một scale trên dataset COCO Keypoints val2017.
    Tái lập kết quả bằng yolo pose val data=coco-pose.yaml device=0 nms=False
  • Tốc độ là mức trung bình trên các ảnh COCO val, sử dụng ONNX trên CPU và TensorRT10 trên GPU NVIDIA T4.
    Tái tạo kết quả bằng yolo pose val data=coco-pose.yaml batch=1 device=0|cpu nms=False
  • Các giá trị Params và FLOPs được tính cho model đã hợp nhất sau khi gộp Conv/BatchNorm và loại bỏ nhánh phát hiện không sử dụng. Checkpoint được huấn luyện trước vẫn giữ nguyên kiến trúc huấn luyện đầy đủ nên có thể hiển thị số liệu cao hơn.

Xem bản preview YOLO27 chưa phát hành để biết kết quả sơ bộ trên keypoint COCO.

Huấn luyện#

Train YOLO26n-pose trên dataset COCO8-pose trong 100 epoch với kích thước ảnh 640. Xem trang Configuration để biết danh sách đầy đủ các đối số hiện có.

Ví dụ
from ultralytics import YOLO

# Tải model
model = YOLO("yolo26n-pose.yaml")  # tạo model mới từ YAML
model = YOLO("yolo26n-pose.pt")  # tải model đã huấn luyện trước (được khuyến nghị khi huấn luyện)
model = YOLO("yolo26n-pose.yaml").load("yolo26n-pose.pt")  # tạo từ YAML và chuyển trọng số

# Huấn luyện model
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)

Xem chi tiết đầy đủ về chế độ train trên trang Train. Bạn cũng có thể train model pose bằng dịch vụ training đám mây của Ultralytics Platform.

Định dạng dataset#

Bạn có thể xem chi tiết định dạng dataset pose YOLO trong Hướng dẫn về dataset. Để chuyển dataset JSON keypoint COCO hiện có sang định dạng YOLO, hãy sử dụng hàm tích hợp sẵn convert_coco với use_keypoints=True, như mô tả trong hướng dẫn chuyển đổi COCO sang YOLO. Tính năng gán nhãn của Ultralytics Platform cũng hỗ trợ nhãn pose với các template skeleton tích hợp sẵn dành cho người, bàn tay, khuôn mặt và bố cục keypoint tùy chỉnh.

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ó.

Đánh giá#

Validate độ chính xác của model YOLO26n-pose đã train. Không cần đối số vì model lưu data và các đối số dùng khi training dưới dạng thuộc tính của model: path/to/best.pt trong ví dụ Train sẽ validate trên COCO8-pose. Các weight chính thức ghi lại đường dẫn dataset dùng khi training, nhưng đường dẫn này không tồn tại trên máy của bạn, vì vậy chúng sẽ dùng giá trị mặc định của tác vụ coco8-pose.yaml và đưa ra cảnh báo. Truyền data để validate trên dataset khác.

Ví dụ
from ultralytics import YOLO

# Tải model
model = YOLO("yolo26n-pose.pt")  # tải model chính thức
model = YOLO("path/to/best.pt")  # tải model tùy chỉnh

# Xác thực model
metrics = model.val()  # không cần đối số, dataset và cài đặt đã được ghi nhớ
metrics.box.map  # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps  # danh sách chứa mAP50-95 cho từng danh mục
metrics.box.image_metrics  # từ điển metric theo từng ảnh cho box, gồm precision, recall, F1, TP, FP và FN
metrics.pose.map  # map50-95(P)
metrics.pose.map50  # map50(P)
metrics.pose.map75  # map75(P)
metrics.pose.maps  # danh sách chứa mAP50-95(P) cho từng danh mục
metrics.pose.image_metrics  # từ điển metric theo từng ảnh cho pose, gồm precision, recall, F1, TP, FP và FN

Dự đoán#

Sử dụng model YOLO26n-pose đã train để chạy dự đoán trên ảnh.

Ví dụ
from ultralytics import YOLO

# Tải model
model = YOLO("yolo26n-pose.pt")  # tải model chính thức
model = YOLO("path/to/best.pt")  # tải model tùy chỉnh

# Dự đoán bằng model
results = model("https://ultralytics.com/images/bus.jpg")  # dự đoán trên một ảnh

# Truy cập kết quả
for result in results:
    xy = result.keypoints.xy  # tọa độ x và y
    xyn = result.keypoints.xyn  # normalized
    kpts = result.keypoints.data  # x, y, độ hiển thị (nếu có)

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

Đầu ra 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ểuHình dạngMô tả
result.keypointsKeypoints(N)Keypoint.
result.keypoints.datatorch.float32(N,K,2/3)x,y cùng thông tin 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 đối tượng.

Để xem các trường Results dành riêng cho từng tác vụ trên tất cả tác vụ, hãy tham khảo mục Kết quả dự đoán theo tác vụ.

Bản đồ chỉ mục keypoint#

Các model YOLO26 Pose mặc định dự đoán 17 keypoint COCO, vì vậy chỉ mục k trong result.keypoints.xy[:, k] là:

  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

Export#

Export model YOLO26n-pose sang định dạng khác như ONNX, CoreML, v.v.

Ví dụ
from ultralytics import YOLO

# Tải model
model = YOLO("yolo26n-pose.pt")  # tải model chính thức
model = YOLO("path/to/best.pt")  # tải model tùy chỉnh

# # Xuất model
model.export(format="onnx")

Các định dạng export hiện có cho YOLO26-pose đượ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, chẳng hạn format='onnx' hoặc format='engine'. Bạn có thể predict hoặc validate trực tiếp trên các model đã export, chẳng hạn yolo predict model=yolo26n-pose.onnx. Sau khi hoàn tất quá trình export, các ví dụ sử dụng sẽ được hiển thị cho model của bạn.

Định dạngĐối số formatModelMetadataĐối số
PyTorch-yolo26n-pose.pt✅-
TorchScripttorchscriptyolo26n-pose.torchscript✅imgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-pose.onnx✅imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-pose_openvino_model/✅imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-pose.engine✅imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-pose.mlpackage✅imgsz, dynamic, quantize, nms, batch, device
Apple Core AIcoreaiyolo26n-pose.aimodel✅imgsz, batch, quantize
TF SavedModelsaved_modelyolo26n-pose_saved_model/✅imgsz, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-pose.pb❌imgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-pose_edgetpu.tflite✅imgsz, quantize, opset, data, fraction, device
LiteRTlitertyolo26n-pose.tflite✅imgsz, quantize, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-pose_paddle_model/✅imgsz, batch, device
MNNmnnyolo26n-pose.mnn✅imgsz, 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.onnx✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
Hailohailoyolo26n-pose_hailo_model/✅imgsz, name, quantize, data, fraction, simplify, conf, iou, device
Huawei Ascendascendyolo26n-pose_ascend_model/✅imgsz, batch, name, quantize, opset, simplify, nms, device
AMD Xilinxxilinxyolo26n-pose_xilinx_model/✅imgsz, name, quantize, data, fraction, opset, simplify, device

nms=None mặc định xuất đầu ra thô cho NMS bên ngoài. Đặt nms=False để chọn một head không dùng NMS hiện có; các định dạng không được hỗ trợ sẽ chuyển về luồng đầu ra gốc. Các mục nms ở trên xác định những định dạng có thể tích hợp NMS với nms=True.

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

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

  • Ước tính 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à keypoint. Các keypoint này thường biểu thị khớp hoặc những đặ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 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 yolo26n-pose.pt. Các model này được pretrained trên những dataset như các keypoint COCO và có thể được sử dụng cho nhiều tác vụ ước tính tư thế. Để biết thêm thông tin, hãy truy cập Trang ước tính tư thế.

  • Để train model YOLO26-pose trên dataset tùy chỉnh, trước tiên cần 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 quá trình training bằng dataset và các tham số đã chỉ định.

    Ví dụ
    from ultralytics import YOLO
    
    # Tải model
    model = YOLO("yolo26n-pose.yaml")  # tạo model mới từ YAML
    model = YOLO("yolo26n-pose.pt")  # tải model đã huấn luyện trước (được khuyến nghị khi huấn luyện)
    
    # Huấn luyện model
    results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)

    Để biết thông tin toàn diện về quá trình training, hãy tham khảo Mục Train. Bạn cũng có thể sử dụng dịch vụ training đám mây của Ultralytics Platform để train model ước tính tư thế tùy chỉnh mà không cần viết code.

  • Việc validate model YOLO26-pose bao gồm đánh giá độ chính xác bằng các tham số dataset được lưu lại trong quá trình training. Ví dụ:

    Ví dụ
    from ultralytics import YOLO
    
    # Tải model
    model = YOLO("yolo26n-pose.pt")  # tải model chính thức
    model = YOLO("path/to/best.pt")  # tải model tùy chỉnh
    
    # Xác thực model
    metrics = model.val()  # không cần đối số, dataset và cài đặt đã được ghi nhớ

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

  • Có, bạn có thể export model YOLO26-pose sang nhiều định dạng như ONNX, CoreML, TensorRT, v.v. Có thể thực hiện việc này bằng Python hoặc Giao diện dòng lệnh (CLI).

    Ví dụ
    from ultralytics import YOLO
    
    # Tải model
    model = YOLO("yolo26n-pose.pt")  # tải model chính thức
    model = YOLO("path/to/best.pt")  # tải model tùy chỉnh
    
    # # Xuất model
    model.export(format="onnx")

    Tham khảo Mục Export để biết thêm chi tiết. Các model đã export có thể được triển khai trên thiết bị edge cho các ứng dụng thời gian thực như theo dõi thể lực, 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, cùng nhiều model khác. Các model này khác nhau về kích thước, độ chính xác (mAP) và tốc độ. Để xem danh sách đầy đủ cùng mAP keypoint COCO, tốc độ, số lượng tham số và FLOPs của từng model, hãy xem mục Models.

Bình luận