YOLO Vision 2026:

Ultralytics YOLO을 사용한 포즈 추정#

Ultralytics YOLO pose estimation with human body keypoint detection

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

포즈 추정 모델의 출력은 이미지 내 객체의 키포인트를 나타내는 일련의 포인트이며, 일반적으로 각 포인트에 대한 신뢰도 점수가 함께 제공됩니다. 포즈 추정은 장면 내 객체의 특정 부분과 서로의 상대적 위치를 식별해야 할 때 유용한 선택입니다.



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

YOLO26 pose 모델은 -pose 접미사를 사용합니다(예: yolo26n-pose.pt). 이 모델들은 COCO keypoints 데이터셋으로 학습되었으며 다양한 포즈 추정 작업에 적합합니다.

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

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

Models#

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

Models는 첫 사용 시 최신 Ultralytics release에서 자동으로 다운로드됩니다.

모델크기
(픽셀)
mAPpose
50-95(e2e)
mAPpose
50(e2e)
속도
CPU ONNX
(ms)
속도
T4 TensorRT10
(ms)
파라미터
(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
  • mAPval 값은 COCO Keypoints val2017 데이터셋에서 단일 모델, 단일 스케일로 측정한 값입니다.
    재현하려면 yolo val pose data=coco-pose.yaml device=0을 사용하세요.
  • SpeedAmazon EC2 P4d 인스턴스를 사용하여 COCO val 이미지에서 평균을 낸 것입니다.
    재현하려면 yolo val pose data=coco-pose.yaml batch=1 device=0|cpu을 사용하세요.
  • ParamsFLOPs 값은 Conv 및 BatchNorm 레이어를 병합하고 end2end 모델의 경우 보조 one-to-many 탐지 헤드를 제거하는 model.fuse() 이후의 융합 모델 기준입니다. 사전 학습된 체크포인트는 전체 학습 아키텍처를 유지하므로 더 높은 수치를 보일 수 있습니다.

학습(Train)#

COCO8-pose 데이터셋에서 YOLO26-pose 모델을 학습합니다. COCO8-pose dataset은 포즈 추정 모델을 테스트하고 디버깅하기에 완벽한 소규모 샘플 데이터셋입니다.

예시
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 cloud training을 통해서도 학습할 수 있습니다.

데이터셋 형식#

YOLO pose 데이터셋 형식에 대한 자세한 내용은 Dataset Guide에서 확인할 수 있습니다. 기존 데이터셋을 다른 형식(COCO 등)에서 YOLO 형식으로 변환하려면 Ultralytics의 JSON2YOLO 툴을 사용하십시오. Ultralytics Platform annotation은 사람, 손, 얼굴 및 사용자 정의 키포인트 레이아웃을 위한 내장 스켈레톤 템플릿과 함께 포즈 라벨도 지원합니다.

커스텀 포즈 추정 작업을 위해 동물 포즈 추정을 위한 Tiger-Pose, 손 추적을 위한 Hand Keypoints, 반려견 포즈 분석을 위한 Dog-Pose 같은 특화된 데이터셋도 탐색해 볼 수 있습니다.

검증(Val)#

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

추론(Predict)#

학습된 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 모드 세부 정보는 Predict 페이지에서 확인하세요.

결과 출력#

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

속성유형형태설명
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)인스턴스 박스입니다.

모든 작업에 걸친 작업별 Results 필드는 Predict Results by Task 섹션을 참조하십시오.

내보내기(Export)#

YOLO26 Pose 모델을 ONNX, CoreML 등의 다른 형식으로 내보냅니다. 이를 통해 real-time inference를 위해 다양한 플랫폼과 디바이스에 모델을 배포할 수 있습니다.

예시
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 인수모델메타데이터인수
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

전체 export 세부 정보는 Export 페이지에서 확인하세요.

FAQ#

  • Ultralytics YOLO26을 이용한 포즈 추정은 이미지 내에서 키포인트라고 하는 특정 포인트를 식별하는 작업을 포함합니다. 이러한 키포인트는 일반적으로 객체의 관절이나 기타 중요한 특징을 나타냅니다. 출력에는 각 포인트에 대한 [x, y] 좌표와 신뢰도 점수가 포함됩니다. 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 cloud training을 사용하여 코딩 없이 커스텀 포즈 추정 모델을 학습할 수도 있습니다.

  • 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을 참조하세요. 내보낸 모델은 피트니스 트래킹, 스포츠 분석 또는 robotics와 같은 real-time applications을 위해 엣지 디바이스에 배포할 수 있습니다.

  • Ultralytics YOLO26은 YOLO26n-pose, YOLO26s-pose, YOLO26m-pose 등 다양한 사전 학습된 포즈 모델을 제공합니다. 이 모델들은 크기, 정확도(mAP), 속도 측면에서 차이가 있습니다. 예를 들어, YOLO26n-pose 모델은 57.2의 mAPpose50-95와 83.3의 mAPpose50을 달성합니다. 전체 목록과 성능 세부 정보는 Models Section에서 확인할 수 있습니다.

댓글