Ultralytics YOLO27:

Ultralytics YOLO를 사용한 포즈 추정#

Ultralytics YOLO pose estimation with human body keypoint detection

포즈 추정은 일반적으로 키포인트라고 하는 이미지 내 특정 지점의 위치를 식별하는 작업입니다. 키포인트는 관절, 랜드마크 또는 기타 식별 가능한 특징과 같은 객체의 다양한 부분을 나타낼 수 있습니다. 키포인트의 위치는 일반적으로 2D [x, y] 좌표 집합으로 표현하며, 선택적으로 가시성 플래그 [x, y, visible]을 포함할 수 있습니다.

포즈 추정 모델의 출력은 이미지 내 객체의 키포인트를 나타내는 점 집합이며, 일반적으로 각 점에 대한 confidence score도 함께 포함됩니다. 장면에서 객체의 특정 부분과 서로 간의 위치를 식별해야 할 때 포즈 추정을 사용하면 좋습니다.



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

YOLO26 pose 모델은 -pose 접미사를 사용합니다. 즉, yolo26n-pose.pt입니다. 이러한 모델은 COCO keypoints 데이터셋으로 학습되며 다양한 포즈 추정 작업에 적합합니다.

기본 YOLO26 pose 모델에는 17개의 키포인트가 있으며, 각 키포인트는 인체의 서로 다른 부분을 나타냅니다. 다음은 각 인덱스와 해당 신체 관절의 매핑입니다.

  1. 왼쪽 눈
  2. 오른쪽 눈
  3. 왼쪽 귀
  4. 오른쪽 귀
  5. 왼쪽 어깨
  6. 오른쪽 어깨
  7. 왼쪽 팔꿈치
  8. 오른쪽 팔꿈치
  9. 왼쪽 손목
  10. 오른쪽 손목
  11. 왼쪽 엉덩이
  12. 오른쪽 엉덩이
  13. 왼쪽 무릎
  14. 오른쪽 무릎
  15. 왼쪽 발목
  16. 오른쪽 발목

모델#

Ultralytics YOLO26 사전 학습 Pose 모델은 다음과 같습니다. Detect, Segment 및 Pose 모델은 COCO 데이터셋으로 사전 학습되며, Semantic 모델은 Cityscapes로, Classify 모델은 ImageNet 데이터셋으로 사전 학습됩니다.

모델은 처음 사용할 때 최신 Ultralytics 릴리스에서 자동으로 다운로드됩니다.

모델크기
(픽셀)
mAP포즈
50-95(e2e)
mAP포즈
50(e2e)
속도
CPU ONNX
(ms)
속도
T4 TensorRT10
(ms)
파라미터
(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
  • mAPval 값은 COCO Keypoints val2017 데이터셋에서 단일 모델, 단일 스케일로 측정한 값입니다.
    yolo val pose data=coco-pose.yaml device=0 nms=False로 재현할 수 있습니다.
  • SpeedAmazon EC2 P4d 인스턴스를 사용하여 COCO val 이미지에 대해 평균을 낸 값입니다.
    yolo val pose data=coco-pose.yaml batch=1 device=0|cpu nms=False로 재현할 수 있습니다.
  • ParamsFLOPs 값은 Conv/BatchNorm 융합 및 사용되지 않는 탐지 브랜치 제거 이후의 융합된 모델 기준입니다. 사전 학습된 체크포인트는 전체 학습 아키텍처를 유지하므로 더 높은 수치를 나타낼 수 있습니다.

예비 COCO 키포인트 결과를 확인하려면 출시 전 YOLO27 미리보기를 참조하세요.

학습#

COCO8-pose 데이터셋으로 YOLO26-pose 모델을 학습합니다. COCO8-pose 데이터셋은 포즈 추정 모델을 테스트하고 디버깅하는 데 적합한 소규모 샘플 데이터셋입니다.

예시
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)

Train 페이지에서 전체 train 모드 세부 정보를 확인할 수 있습니다. Pose 모델은 Ultralytics Platform 클라우드 학습을 사용하여 학습할 수도 있습니다.

데이터셋 형식#

YOLO pose dataset format can be found in detail in the Dataset Guide. To convert an existing COCO keypoints JSON dataset to YOLO format, use the built-in convert_coco function with use_keypoints=True, as described in the COCO to YOLO guide. Ultralytics Platform annotation also supports pose labels with built-in skeleton templates for person, hand, face, and custom keypoint layouts.

사용자 지정 포즈 추정 작업의 경우 동물 포즈 추정을 위한 Tiger-Pose, 손 추적을 위한 Hand Keypoints, 또는 개의 포즈 분석을 위한 Dog-Pose와 같은 특화 데이터셋을 살펴볼 수도 있습니다.

검증#

COCO8-pose 데이터셋에서 학습된 YOLO26n-pose 모델의 accuracy를 검증합니다. model은 학습 data 및 인수를 모델 속성으로 유지하므로 인수를 지정할 필요가 없습니다.

예시
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

Prediction#

학습된 YOLO26n-pose 모델을 사용하여 이미지에 대한 예측을 실행합니다. predict mode를 사용하면 이미지, 동영상 또는 실시간 스트림에 대한 추론을 수행할 수 있습니다.

예시
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)

전체 predict mode 세부 정보는 Predict 페이지를 참조하십시오.

결과 출력#

포즈 추정은 이미지당 하나의 Results 객체를 반환합니다. 주요 예측 필드는 포즈 좌표를 위한 result.keypoints과 해당 키포인트가 속한 감지된 인스턴스를 위한 result.boxes입니다.

Attribute유형Shape설명
result.keypointsKeypoints(N)키포인트입니다.
result.keypoints.datatorch.float32(N,K,2/3)x,y과 선택적 가시성/신뢰도입니다.
result.keypoints.xytorch.float32(N,K,2)픽셀 키포인트입니다.
result.keypoints.xyntorch.float32(N,K,2)정규화된 키포인트입니다.
result.boxesBoxes(N)인스턴스 박스입니다.

모든 task에서 task-specific Results field를 확인하려면 Predict Results by Task 섹션을 참조하십시오.

내보내기#

YOLO26n Pose 모델을 ONNX, CoreML 등 다른 형식으로 내보냅니다. 이를 통해 다양한 플랫폼과 디바이스에 모델을 배포하여 실시간 추론을 수행할 수 있습니다.

예시
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")

사용 가능한 YOLO26-pose 내보내기 형식은 다음 표에 나와 있습니다. format 인수를 사용하여 모든 형식으로 내보낼 수 있으며, 예를 들어 format='onnx' 또는 format='engine'를 사용할 수 있습니다. 내보낸 모델에서 직접 예측하거나 검증할 수도 있으며, 예를 들어 yolo predict model=yolo26n-pose.onnx을 사용할 수 있습니다. 내보내기가 완료되면 모델에 대한 사용 예제가 표시됩니다.

형식format Argument모델MetadataArguments
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은(는) 외부 NMS에 대해 기본적으로 원시 출력을 사용합니다. 사용 가능한 NMS 프리 헤드를 선택하려면 nms=False을(를) 설정하세요. 지원되지 않는 형식은 기본 출력 경로로 대체됩니다. 위의 nms 항목은 nms=True(으)로 NMS를 임베드할 수 있는 형식을 식별합니다.

전체 export 세부 정보는 Export 페이지를 참조하십시오.

FAQ#

  • Ultralytics YOLO26을 사용한 포즈 추정은 이미지에서 키포인트라고 하는 특정 지점을 식별하는 작업입니다. 이러한 키포인트는 일반적으로 객체의 관절 또는 기타 중요한 특징을 나타냅니다. 출력에는 각 지점의 [x, y] 좌표와 confidence score가 포함됩니다. YOLO26-pose 모델은 이 작업을 위해 특별히 설계되었으며 -pose 접미사를 사용합니다(예: yolo26n-pose.pt). 이러한 모델은 COCO keypoints와 같은 데이터셋으로 사전 학습되며 다양한 포즈 추정 작업에 사용할 수 있습니다. 자세한 내용은 Pose Estimation Page를 참조하십시오.

  • 사용자 지정 데이터셋으로 YOLO26-pose 모델을 학습하려면 YAML 파일로 정의한 새 모델 또는 사전 학습된 모델을 로드해야 합니다. 그런 다음 지정한 데이터셋과 매개변수를 사용하여 학습 프로세스를 시작할 수 있습니다.

    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)

    학습에 대한 종합적인 세부 정보는 Train Section을 참조하십시오. 코드 없이 사용자 지정 포즈 추정 모델을 학습하려면 Ultralytics Platform 클라우드 학습을 사용할 수도 있습니다.

  • YOLO26-pose 모델의 검증은 학습 중에 유지된 동일한 데이터셋 매개변수를 사용하여 정확도를 평가하는 과정입니다. 다음은 예시입니다.

    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

    자세한 내용은 Val Section을 참조하십시오.

  • 예, YOLO26-pose 모델을 ONNX, CoreML, TensorRT 등 다양한 형식으로 내보낼 수 있습니다. Python 또는 명령줄 인터페이스(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")

    자세한 내용은 Export Section을 참조하십시오. 내보낸 모델은 피트니스 추적, 스포츠 분석 또는 로보틱스와 같은 실시간 애플리케이션을 위해 엣지 디바이스에 배포할 수 있습니다.

  • Ultralytics YOLO26은 YOLO26n-pose, YOLO26s-pose, YOLO26m-pose 등 다양한 사전 학습 pose 모델을 제공합니다. 이러한 모델은 크기, 정확도(mAP) 및 속도가 서로 다릅니다. 예를 들어 YOLO26n-pose 모델은 mAPpose50-95 57.2와 mAPpose50 83.3을 달성합니다. 전체 목록과 성능 세부 정보는 Models Section을 참조하십시오.

댓글