Ước tính Tư thế
Ướ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 khóa (keypoints). Các điểm khóa 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 trưng đặc biệ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] hoặc 3D [x, y, visible].
Đầu ra của mô hình ước tính tư thế là một tập hợp các điểm đại diện cho các điểm khóa trên một đối tượng trong hình ảnh, thường đi kèm với điểm số tin cậy cho từng đ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 giữa chúng.
Watch: How to Run Real-Time Pose Estimation with Ultralytics YOLO26 | Tracking & Keypoints Extraction 🕺
Các mô hình YOLO26 pose sử dụng hậu tố -pose, ví dụ: yolo26n-pose.pt. Những mô hình 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 mô hình YOLO26 pose mặc định, có 17 điểm khóa, mỗi điểm đại diện cho một bộ phận khác nhau trên cơ thể người. Dưới đây là ánh xạ của từng chỉ mục đến khớp cơ thể tương ứng:
- Mũi
- Mắt trái
- Mắt phải
- Tai trái
- Tai phải
- Vai trái
- Vai phải
- Khuỷu tay trái
- Khuỷu tay phải
- Cổ tay trái
- Cổ tay phải
- Hông trái
- Hông phải
- Đầu gối trái
- Đầu gối phải
- Cổ chân trái
- Cổ chân phải
Models
Các mô hình Pose tiền huấn luyện của Ultralytics YOLO26 được hiển thị tại đây. Các mô hình Detect, Segment và Pose được tiền huấn luyện trên tập dữ liệu COCO, trong khi các mô hình Classify được tiền huấn luyện trên tập dữ liệu ImageNet.
Các Model tự động tải xuống từ bản release mới nhất của Ultralytics trong lần đầu sử dụng.
| Model | kích thước (pixels) | mAPpose 50-95(e2e) | mAPpose 50(e2e) | Tốc độ CPU ONNX (ms) | Tốc độ T4 TensorRT10 (ms) | tham số (M) | FLOPs (B) |
|---|---|---|---|---|---|---|---|
| YOLO26n-pose | 640 | 57.2 | 83.3 | 40.3 ± 0.5 | 1.8 ± 0.0 | 2.9 | 7.5 |
| YOLO26s-pose | 640 | 63.0 | 86.6 | 85.3 ± 0.9 | 2.7 ± 0.0 | 10.4 | 23.9 |
| YOLO26m-pose | 640 | 68.8 | 89.6 | 218.0 ± 1.5 | 5.0 ± 0.1 | 21.5 | 73.1 |
| YOLO26l-pose | 640 | 70.4 | 90.5 | 275.4 ± 2.4 | 6.5 ± 0.1 | 25.9 | 91.3 |
| YOLO26x-pose | 640 | 71.6 | 91.6 | 565.4 ± 3.0 | 12.2 ± 0.2 | 57.6 | 201.7 |
- mAPval là các giá trị dành cho mô hình đơn lẻ với tỷ lệ đơn trên tập dữ liệu COCO Keypoints val2017.
Tái tạo bằng lệnhyolo 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 sử dụng phiên bản Amazon EC2 P4d.
Tái tạo bằng lệnhyolo val pose data=coco-pose.yaml batch=1 device=0|cpu - Các giá trị Params và FLOPs dành cho model đã được hợp nhất sau khi chạy
model.fuse(), giúp gộp các layer Conv và BatchNorm, đồng thời đối với các model end2end, nó loại bỏ phần head phát hiện one-to-many phụ. Các checkpoint đã huấn luyện trước vẫn giữ nguyên kiến trúc huấn luyện đầy đủ và có thể hiển thị số lượng cao hơ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à tập dữ liệu mẫu nhỏ, hoàn hảo để thử nghiệm và gỡ lỗi các mô hình ước tính tư thế của bạn.
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 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 YOLO pose 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 tại 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 khung xương có sẵn cho người, bàn tay, khuôn mặt và các 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 tập dữ liệu chuyên biệt như Tiger-Pose cho ước tính tư thế động vật, Hand Keypoints cho theo dõi bàn tay, hoặc Dog-Pose cho phân tích tư thế chó.
Val
Xác thực độ chính xác của mô hình YOLO26n-pose đã được huấn luyện trên tập dữ liệu COCO8-pose. Không cần tham số nào vì model vẫn giữ lại data huấn luyện và các đối số dưới dạng thuộc tính mô hình.
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 FNDự đ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. Chế độ dự đoán 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.
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.
Export
Xuất mô hình YOLO26n Pose sang đị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.
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 có 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, 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 mô hình đã xuất, ví dụ: 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ố format | Model | Metadata | Đối số |
|---|---|---|---|---|
| PyTorch | - | yolo26n-pose.pt | ✅ | - |
| TorchScript | torchscript | yolo26n-pose.torchscript | ✅ | imgsz, half, dynamic, optimize, nms, batch, device |
| ONNX | onnx | yolo26n-pose.onnx | ✅ | imgsz, half, dynamic, simplify, opset, nms, batch, device |
| OpenVINO | openvino | yolo26n-pose_openvino_model/ | ✅ | imgsz, half, dynamic, int8, nms, batch, data, fraction, device |
| TensorRT | engine | yolo26n-pose.engine | ✅ | imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device |
| CoreML | coreml | yolo26n-pose.mlpackage | ✅ | imgsz, dynamic, half, int8, nms, batch, device |
| TF SavedModel | saved_model | yolo26n-pose_saved_model/ | ✅ | imgsz, keras, int8, nms, batch, data, fraction, device |
| TF GraphDef | pb | yolo26n-pose.pb | ❌ | imgsz, batch, device |
| TF Lite | tflite | yolo26n-pose.tflite | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| TF Edge TPU | edgetpu | yolo26n-pose_edgetpu.tflite | ✅ | imgsz, int8, data, fraction, device |
| TF.js | tfjs | yolo26n-pose_web_model/ | ✅ | imgsz, half, int8, nms, batch, data, fraction, device |
| PaddlePaddle | paddle | yolo26n-pose_paddle_model/ | ✅ | imgsz, batch, device |
| MNN | mnn | yolo26n-pose.mnn | ✅ | imgsz, batch, int8, half, device |
| NCNN | ncnn | yolo26n-pose_ncnn_model/ | ✅ | imgsz, half, batch, device |
| IMX500 | imx | yolo26n-pose_imx_model/ | ✅ | imgsz, int8, data, fraction, nms, device |
| RKNN | rknn | yolo26n-pose_rknn_model/ | ✅ | imgsz, batch, name, device |
| ExecuTorch | executorch | yolo26n-pose_executorch_model/ | ✅ | imgsz, batch, device |
| Axelera | axelera | yolo26n-pose_axelera_model/ | ✅ | imgsz, batch, int8, data, fraction, device |
| DeepX | deepx | yolo26n-pose_deepx_model/ | ✅ | imgsz, int8, data, optimize, device |
Xem chi tiết đầy đủ về export 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à điểm khóa, trong một hình ảnh. Những điểm khóa này thường đại diện cho các khớp hoặc các đặc trưng 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 từng điểm. Các mô hình YOLO26-pose được thiết kế chuyên 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 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 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 cách nào tôi có thể huấn luyện một mô hình YOLO26-pose trên tập dữ liệu tùy chỉnh?
Việc huấn luyện một mô hình YOLO26-pose trên tập dữ liệu tùy chỉnh bao gồm việc tải mô hình, có thể là mô hình mới được xác định bởi tệp YAML hoặc mô hình 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 tập dữ liệu và tham số mà 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ề việc huấn luyện, hãy tham khảo Mục Train. Bạn cũng có thể sử dụng Ultralytics Platform để có phương pháp tiếp cận không cần lập trình (no-code) nhằm huấn luyện các mô hình ước tính tư thế tùy chỉnh.
Làm cách nào để tôi xác thực một mô hình YOLO26-pose đã huấn luyện?
Việc xác thực mô hình YOLO26-pose bao gồm đánh giá độ chính xác của nó bằng cách sử dụng cùng các tham số tập dữ liệu đã đượ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 Mục Val.
Tôi có thể xuất mô hình 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ô hình YOLO26-pose sang nhiều định dạng khác nhau như ONNX, CoreML, TensorRT, và nhiều hơn nữa. 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 Mục Export để 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 robot.
Các mô hình Ultralytics YOLO26-pose hiện có và các số liệu hiệu suất của chúng là gì?
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, cùng nhiều mô hình khác. Các mô hình này khác nhau về kích thước, độ chính xác (mAP) và tốc độ. Ví dụ, mô hình YOLO26n-pose đạt mAPpose50-95 là 50.0 và mAPpose50 là 81.0. Để có danh sách đầy đủ và thông tin chi tiết về hiệu suất, hãy truy cập Mục Models.