[Ultralytics] Pose Estimation

FSA·2024년 10월 13일

keypoint_detection

목록 보기
7/19

자세 추정 (Pose Estimation)

자세 추정 예시

  • YOLO11 자세 모델은 -pose 접미사를 사용하며, 예를 들어 yolo11n-pose.pt와 같은 형식을 가집니다.
  • 이 모델들은 COCO 키포인트 데이터셋으로 훈련되었으며, 다양한 자세 추정 작업에 적합합니다.
  • 기본 YOLO11 자세 모델에는 17개의 키포인트가 있으며, 각각이 인체의 다른 부분을 나타냅니다. 다음은 각 인덱스와 해당 신체 관절의 매핑입니다:
  • 0: 코
  • 1: 왼쪽 눈
  • 2: 오른쪽 눈
  • 3: 왼쪽 귀
  • 4: 오른쪽 귀
  • 5: 왼쪽 어깨
  • 6: 오른쪽 어깨
  • 7: 왼쪽 팔꿈치
  • 8: 오른쪽 팔꿈치
  • 9: 왼쪽 손목
  • 10: 오른쪽 손목
  • 11: 왼쪽 엉덩이
  • 12: 오른쪽 엉덩이
  • 13: 왼쪽 무릎
  • 14: 오른쪽 무릎
  • 15: 왼쪽 발목
  • 16: 오른쪽 발목

모델

  • YOLO11에서 사전 훈련된 Pose 모델은 여기서 확인할 수 있습니다.
  • Detect, Segment 및 Pose 모델은 COCO 데이터셋에서 사전 훈련되었으며, Classify 모델은 ImageNet 데이터셋에서 사전 훈련되었습니다.
  • 모델은 처음 사용할 때 최신 Ultralytics 릴리즈에서 자동으로 다운로드됩니다.
모델크기 (픽셀)mAPpose 50-95mAPpose 50속도 CPU ONNX (ms)속도 T4 TensorRT10 (ms)파라미터 (M)FLOPs (B)
YOLO11n-pose64050.081.052.4 ± 0.51.7 ± 0.02.97.6
YOLO11s-pose64058.986.390.5 ± 0.62.6 ± 0.09.923.2
YOLO11m-pose64064.989.4187.3 ± 0.84.9 ± 0.120.971.7
YOLO11l-pose64066.189.9247.7 ± 1.16.4 ± 0.126.290.7
YOLO11x-pose64069.591.1488.0 ± 13.912.1 ± 0.258.8203.3

mAPval 값은 COCO Keypoints val2017 데이터셋에서 단일 모델 단일 스케일을 기준으로 합니다.
yolo val pose data=coco-pose.yaml device=0 명령으로 재현 가능합니다.
속도는 COCO val 이미지를 사용하여 Amazon EC2 P4d 인스턴스에서 측정되었습니다.
yolo val pose data=coco-pose.yaml batch=1 device=0|cpu 명령으로 재현 가능합니다.


훈련

  • COCO8-pose 데이터셋에서 YOLO11-pose 모델을 훈련합니다.
  • 예시:

Python 코드:

from ultralytics import YOLO

# 모델 로드
model = YOLO("yolo11n-pose.yaml")  # YAML에서 새 모델 빌드
model = YOLO("yolo11n-pose.pt")  # 사전 훈련된 모델 로드 (훈련 권장)
model = YOLO("yolo11n-pose.yaml").load("yolo11n-pose.pt")  # YAML에서 빌드 후 가중치 전달

# 모델 훈련
results = model.train(data="coco8-pose.yaml", epochs=100, imgsz=640)

검증

  • COCO8-pose 데이터셋에서 훈련된 YOLO11n-pose 모델의 정확도를 검증합니다.
  • 모델은 훈련 데이터와 설정을 모델 속성으로 유지하므로 추가 인자가 필요하지 않습니다.

예시:

Python 코드:

from ultralytics import YOLO

# 모델 로드
model = YOLO("yolo11n-pose.pt")  # 공식 모델 로드
model = YOLO("path/to/best.pt")  # 사용자 정의 모델 로드

# 모델 검증
metrics = model.val()  # 인자 불필요, 데이터셋 및 설정 유지
metrics.box.map  # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps  # 각 카테고리의 map50-95 리스트

예측

  • 훈련된 YOLO11n-pose 모델을 사용하여 이미지에서 예측을 실행합니다.
  • 예시:

Python 코드:

from ultralytics import YOLO

# 모델 로드
model = YOLO("yolo11n-pose.pt")  # 공식 모델 로드
model = YOLO("path/to/best.pt")  # 사용자 정의 모델 로드

# 모델로 예측 실행
results = model("https://ultralytics.com/images/bus.jpg")  # 이미지에서 예측 실행
  • 전체 예측 모드에 대한 세부 정보는 Predict 페이지에서 확인할 수 있습니다.

내보내기

  • YOLO11n Pose 모델을 ONNX, CoreML 등 다른 형식으로 내보낼 수 있습니다.

예시:

Python 코드:

from ultralytics import YOLO

# 모델 로드
model = YOLO("yolo11n-pose.pt")  # 공식 모델 로드
model = YOLO("path/to/best.pt")  # 사용자 정의 모델 로드

# 모델 내보내기
model.export(format="onnx")

YOLO11-pose 내보내기 가능한 형식은 아래 표에 나와 있습니다.
format='onnx' 또는 format='engine'과 같이 형식을 지정하여 내보낼 수 있습니다. 내보내기가 완료된 후 모델에 대한 사용 예시가 표시됩니다.

형식format 인자모델메타데이터인자
PyTorch-yolo11n-pose.pt-
TorchScripttorchscriptyolo11n-pose.torchscriptimgsz, optimize, batch
ONNXonnxyolo11n-pose.onnximgsz, half, dynamic, simplify, opset, batch
OpenVINOopenvinoyolo11n-pose_openvino_model/imgsz, half, int8, batch
TensorRTengineyolo11n-pose.engineimgsz, half, dynamic, simplify, workspace, int8, batch
CoreMLcoremlyolo11n-pose.mlpackageimgsz, half, int8, nms, batch
TF SavedModelsaved_modelyolo11n-pose_saved_model/imgsz, keras, int8, batch
TF GraphDefpbyolo11n-pose.pbimgsz, batch
TF Litetfliteyolo11n-pose.tfliteimgsz, half, int8, batch
TF Edge TPUedgetpuyolo11n-pose_edgetpu.tfliteimgsz
TF.jstfjsyolo11n-pose_web_model/imgsz, half, int8, batch
PaddlePaddlepaddleyolo11n-pose_paddle_model/imgsz, batch
NCNNncnnyolo11n-pose_ncnn_model/imgsz, half, batch

전체 내보내기 세부 정보는 Export 페이지에서 확인할 수 있습니다.


FAQ

YOLO11-pose 모델을 사용자 정의 데이터셋에서 어떻게 훈련할 수 있나요?

  • YOLO11-pose 모델을 사용자 정의 데이터셋에서 훈련하려면 YAML 파일로 정의된 새 모델을 로드하거나 사전 훈련된 모델을 로드한 후,
  • 지정된 데이터셋과 매개변수를 사용해 훈련을 시작할 수 있습니다.
from ultralytics import YOLO

# 모델 로드
model = YOLO("yolo11n-pose.yaml")  # YAML에서 새 모델 빌드
model = YOLO("yolo11n-pose.pt")  # 사전 훈련된 모델 로드

# 모델 훈련
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)
  • 훈련에 대한 자세한 내용은 Train 섹션을 참조하세요.
profile
모든 의사 결정 과정을 지나칠 정도로 모두 기록하고, 나중에 스스로 피드백 하는 것

0개의 댓글