Ước tính tư thế

Ước tính tư thế 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à keypoint. Các keypoint có thể đại diện cho các phần khác nhau của đối tượng, chẳng hạn như khớp, điểm đánh dấu hoặc các đặc điểm khá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 các tọa độ 2D [x, y] hoặc 3D [x, y, visible] .
Đầu ra của một 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 keypoint trên một đối tượng trong hình ảnh, thường đi kèm với điểm tin cậy cho mỗi điểm. Ước tính tư thế là một lựa chọn tốt khi bạn cần xác định các phần cụ thể của một đối tượng trong một cảnh và vị trí của chúng liên quan đến nhau.
Xem: Hướng dẫn Ước tính Tư thế Ultralytics YOLO26 | Theo dõi Đối tượng Thời gian Thực và detect Tư thế Người
Mẹo
YOLO26 pose các mô hình sử dụng -pose hậu tố, tức là, yolo26n-pose.pt. Các mô hình này được huấn luyện trên keypoint COCO bộ dữ liệu và phù hợp cho nhiều tác vụ ước tính tư thế.
Trong mô hình tư thế YOLO26 mặc định, có 17 keypoint, mỗi keypoint đại diện cho một phần khác nhau của cơ thể người. Dưới đây là ánh xạ của mỗi chỉ mục đến khớp cơ thể tương ứng của nó:
- 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
- Mắt cá chân trái
- Mắt cá chân phải
Mô hình
Các mô hình Pose đã được huấn luyện trước của Ultralytics YOLO26 được hiển thị ở đây. Các mô hình detect, segment và Pose được huấn luyện trước trên tập dữ liệu COCO, trong khi các mô hình classify được huấn luyện trước trên tập dữ liệu ImageNet.
Các mô hình sẽ tự động tải xuống từ phiên bản phát hành Ultralytics mới nhất khi sử dụng lần đầu.
| Mô hình | 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 các giá trị dành cho mô hình đơn lẻ, tỉ lệ đơn lẻ trên Keypoint COCO val2017 tập dữ liệu.
Tái tạo bằng cáchyolo val pose data=coco-pose.yaml device=0 - Tốc độ được tính trung bình trên các ảnh COCO val sử dụng một Amazon EC2 P4d instance.
Tái tạo bằng cáchyolo val pose data=coco-pose.yaml batch=1 device=0|cpu
Huấn luyện
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 tra và gỡ lỗi các mô hình ướ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)
# Build a new model from YAML and start training from scratch
yolo pose train data=coco8-pose.yaml model=yolo26n-pose.yaml epochs=100 imgsz=640
# Start training from a pretrained *.pt model
yolo pose train data=coco8-pose.yaml model=yolo26n-pose.pt epochs=100 imgsz=640
# Build a new model from YAML, transfer pretrained weights to it and start training
yolo pose train data=coco8-pose.yaml model=yolo26n-pose.yaml pretrained=yolo26n-pose.pt epochs=100 imgsz=640
Định dạng bộ dữ liệu
Định dạng tập dữ liệu 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 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.
Đố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 bộ dữ liệu chuyên dụng như Tiger-Pose để ước tính tư thế động vật, Hand Keypoints để theo dõi tay hoặc Dog-Pose để phân tích tư thế chó.
Val
Xác thực mô hình YOLO26n-pose đã được huấn luyện độ chính xác trên tập dữ liệu COCO8-pose. Không cần đối số vì model giữ lại quá trình huấn luyện data và các đối số của nó như 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.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
yolo pose val model=yolo26n-pose.pt # val official model
yolo pose val model=path/to/best.pt # val custom model
Dự đoán
Sử dụng mô hình YOLO26n-pose đã được 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 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)
yolo pose predict model=yolo26n-pose.pt source='https://ultralytics.com/images/bus.jpg' # predict with official model
yolo pose predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg' # predict with custom model
Xem đầy đủ predict chi tiết chế độ trong Dự đoán trang.
Xuất
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 để 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")
yolo export model=yolo26n-pose.pt format=onnx # export official model
yolo export model=path/to/best.pt format=onnx # export custom-trained model
Các định dạng xuất YOLO26-pose có sẵn được trình bày 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 format đối số, 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, 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 | format Đối số | Mô hình | Metadata (Siêu dữ liệu) | Các đố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, 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, device |
| TF.js | tfjs | yolo26n-pose_web_model/ | ✅ | imgsz, half, int8, nms, batch, 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, device |
| RKNN | rknn | yolo26n-pose_rknn_model/ | ✅ | imgsz, batch, name, device |
| ExecuTorch | executorch | yolo26n-pose_executorch_model/ | ✅ | imgsz, device |
| Axelera | axelera | yolo26n-pose_axelera_model/ | ✅ | imgsz, int8, data, fraction, device |
Xem đầy đủ export chi tiết trong Xuất trang.
Câu hỏi thường gặp
Ướ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. 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 [x, y] tọa độ và điểm tin cậy cho mỗi điểm. Các mô hình YOLO26-pose được thiết kế đặc biệt cho tác vụ này và sử dụng -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ư keypoint COCO và có thể được sử dụng cho các 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 để huấn luyện mô hình YOLO26-pose trên một tập dữ liệu tùy chỉnh?
Huấn luyện một mô hình YOLO26-pose trên một tập dữ liệu tùy chỉnh bao gồm việc tải một mô hình, có thể là một mô hình mới được định nghĩa bởi một tệp yaml hoặc một mô hình đã được 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à các tham số đã chỉ định của mì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 Nền tảng Ultralytics để có một phương pháp không cần mã hóa để huấn luyện các mô hình ước tính tư thế tùy chỉnh.
Làm cách nào để xác thực một mô hình YOLO26-pose đã được huấn luyện?
Xác thực một mô hình YOLO26-pose bao gồm việc đá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 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 Phần Val.
Tôi có thể xuất mô hình YOLO26-pose sang các định dạng khác không, và làm cách nào?
Có, bạn có thể xuất một mô hình YOLO26-pose sang nhiều định dạng khác nhau như ONNX, CoreML, TensorRT và hơn thế nữa. 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 Mục Xuất (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.
Các mô hình Ultralytics YOLO26-pose có sẵn và các chỉ số hiệu suất của chúng là gì?
Ultralytics YOLO26 cung cấp nhiều mô hình ước tính tư thế đã được huấn luyện trước khác nhau như YOLO26n-pose, YOLO26s-pose, YOLO26m-pose, cùng với các 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à chi tiết về hiệu suất, hãy truy cập Phần Mô hình.