μ½˜ν…μΈ λ‘œ κ±΄λ„ˆλ›°κΈ°

포즈 μΆ”μ •

포즈 μΆ”μ • μ˜ˆμ‹œ

포즈 좔정은 μ΄λ―Έμ§€μ—μ„œ νŠΉμ • μ§€μ μ˜ μœ„μΉ˜λ₯Ό μ‹λ³„ν•˜λŠ” μž‘μ—…μœΌλ‘œ, 일반적으둜 ν‚€ν¬μΈνŠΈλΌκ³  ν•©λ‹ˆλ‹€. ν‚€ν¬μΈνŠΈλŠ” κ΄€μ ˆ, λžœλ“œλ§ˆν¬ λ˜λŠ” 기타 νŠΉμ§•μ μΈ νŠΉμ§•κ³Ό 같은 물체의 λ‹€μ–‘ν•œ 뢀뢄을 λ‚˜νƒ€λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€. ν‚€ν¬μΈνŠΈμ˜ μœ„μΉ˜λŠ” 일반적으둜 일련의 2D [x, y] λ˜λŠ” 3D [x, y, visible] μ’Œν‘œμž…λ‹ˆλ‹€.

포즈 μΆ”μ • λͺ¨λΈμ˜ 좜λ ₯은 일반적으둜 각 ν¬μΈνŠΈμ— λŒ€ν•œ μ‹ λ’° μ μˆ˜μ™€ ν•¨κ»˜ μ΄λ―Έμ§€μ—μ„œ 객체의 ν‚€ν¬μΈνŠΈλ₯Ό λ‚˜νƒ€λ‚΄λŠ” 포인트 μ§‘ν•©μž…λ‹ˆλ‹€. 포즈 좔정은 μž₯λ©΄μ—μ„œ 객체의 νŠΉμ • λΆ€λΆ„κ³Ό μ„œλ‘œμ— λŒ€ν•œ μœ„μΉ˜λ₯Ό 식별해야 ν•  λ•Œ 쒋은 μ„ νƒμž…λ‹ˆλ‹€.


Watch: 포즈 μΆ”μ • Ultralytics YOLOv8 .

Watch: 포즈 좔정을 μœ„ν•œ Ultralytics HUB.

팁

YOLOv8 포즈 λͺ¨λΈμ€ -pose 접미사, 즉 yolov8n-pose.pt. 이 λͺ¨λΈμ€ COCO ν‚€ν¬μΈνŠΈ 데이터 μ„ΈνŠΈλ₯Ό μ‚¬μš©ν•˜λ©° λ‹€μ–‘ν•œ 포즈 μΆ”μ • μž‘μ—…μ— μ ν•©ν•©λ‹ˆλ‹€.

λͺ¨λΈ

YOLOv8 사전 ν•™μŠ΅λœ 포즈 λͺ¨λΈμ΄ 여기에 λ‚˜μ™€ μžˆμŠ΅λ‹ˆλ‹€. 감지, μ„Έκ·Έλ¨ΌνŠΈ 및 포즈 λͺ¨λΈμ€ COCO 데이터 μ„ΈνŠΈμ— λŒ€ν•΄ 사전 ν•™μŠ΅λœ 반면, λΆ„λ₯˜ λͺ¨λΈμ€ ImageNet 데이터 μ„ΈνŠΈμ— λŒ€ν•΄ 사전 ν•™μŠ΅λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

λͺ¨λΈμ€ 처음 μ‚¬μš©ν•  λ•Œ μ΅œμ‹  Ultralytics λ¦΄λ¦¬μŠ€μ—μ„œ μžλ™μœΌλ‘œ λ‹€μš΄λ‘œλ“œλ©λ‹ˆλ‹€.

λͺ¨λΈ 크기
(ν”½μ…€)
mAPpose
50-95
mAPpose
50
속도
CPU ONNX
(ms)
속도
A100 TensorRT
(ms)
λ§€κ°œλ³€μˆ˜
(M)
FLOPs
(B)
YOLOv8n-pose 640 50.4 80.1 131.8 1.18 3.3 9.2
YOLOv8s-pose 640 60.0 86.2 233.2 1.42 11.6 30.2
YOLOv8m-pose 640 65.0 88.8 456.3 2.00 26.4 81.0
YOLOv8l-pose 640 67.6 90.0 784.5 2.59 44.4 168.6
YOLOv8x-pose 640 69.2 90.2 1607.1 3.73 69.4 263.2
YOLOv8x-pose-p6 1280 71.6 91.2 4088.7 10.04 99.1 1066.4
  • mAPval 값은 단일 λͺ¨λΈ 단일 μŠ€μΌ€μΌμ— λŒ€ν•œ κ²ƒμž…λ‹ˆλ‹€. COCO ν‚€ν¬μΈνŠΈ val2017 데이터 μ„ΈνŠΈ.
    볡제 λŒ€μƒ yolo val pose data=coco-pose.yaml device=0
  • 속도 λ₯Ό μ‚¬μš©ν•˜μ—¬ COCO κ°’ 이미지에 λŒ€ν•œ 평균을 κ΅¬ν•©λ‹ˆλ‹€. Amazon EC2 P4d μΈμŠ€ν„΄μŠ€.
    볡제 λŒ€μƒ yolo val pose data=coco8-pose.yaml batch=1 device=0|cpu

κΈ°μ°¨

COCO128 포즈 데이터 μ„ΈνŠΈμ— λŒ€ν•΄ YOLOv8-pose λͺ¨λΈμ„ ν•™μŠ΅μ‹œν‚΅λ‹ˆλ‹€.

예

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-pose.yaml")  # build a new model from YAML
model = YOLO("yolov8n-pose.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolov8n-pose.yaml").load("yolov8n-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=yolov8n-pose.yaml epochs=100 imgsz=640

# Start training from a pretrained *.pt model
yolo pose train data=coco8-pose.yaml model=yolov8n-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=yolov8n-pose.yaml pretrained=yolov8n-pose.pt epochs=100 imgsz=640

데이터 집합 ν˜•μ‹

YOLO 포즈 데이터 μ„ΈνŠΈ ν˜•μ‹μ€ 데이터 μ„ΈνŠΈ κ°€μ΄λ“œμ—μ„œ μžμ„Ένžˆ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. κΈ°μ‘΄ 데이터셋을 λ‹€λ₯Έ ν˜•μ‹(예: COCO λ“±)μ—μ„œ YOLO ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•˜λ €λ©΄ JSON2YOLO 도ꡬ( Ultralytics)λ₯Ό μ‚¬μš©ν•˜μ„Έμš”.

Val

COCO128 포즈 데이터 μ„ΈνŠΈμ— λŒ€ν•΄ ν•™μŠ΅λœ YOLOv8n-pose λͺ¨λΈ 정확도λ₯Ό κ²€μ¦ν•©λ‹ˆλ‹€. μΈμˆ˜λŠ” 전달할 ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. model κ΅μœ‘μ„ μœ μ§€ν•©λ‹ˆλ‹€. data 및 인수λ₯Ό λͺ¨λΈ μ†μ„±μœΌλ‘œ μ‚¬μš©ν•©λ‹ˆλ‹€.

예

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-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 contains map50-95 of each category
yolo pose val model=yolov8n-pose.pt  # val official model
yolo pose val model=path/to/best.pt  # val custom model

예츑

ν•™μŠ΅λœ YOLOv8n-pose λͺ¨λΈμ„ μ‚¬μš©ν•˜μ—¬ 이미지에 λŒ€ν•œ μ˜ˆμΈ‘μ„ μ‹€ν–‰ν•©λ‹ˆλ‹€.

예

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-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
yolo pose predict model=yolov8n-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

전체 보기 predict λͺ¨λ“œ μ„ΈλΆ€ μ •λ³΄μ—μ„œ 예츑 νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•©λ‹ˆλ‹€.

내보내기

YOLOv8n 포즈 λͺ¨λΈμ„ ONNX, CoreML λ“±κ³Ό 같은 λ‹€λ₯Έ ν˜•μ‹μœΌλ‘œ λ‚΄λ³΄λƒ…λ‹ˆλ‹€.

예

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-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=yolov8n-pose.pt format=onnx  # export official model
yolo export model=path/to/best.pt format=onnx  # export custom trained model

μ‚¬μš© κ°€λŠ₯ YOLOv8-내보내기 ν˜•μ‹μ€ μ•„λž˜ ν‘œμ— λ‚˜μ™€ μžˆμŠ΅λ‹ˆλ‹€. λ‚΄λ³΄λ‚΄λŠ” ν˜•μ‹μ€ format 인수, 즉 format='onnx' λ˜λŠ” format='engine'. 내보낸 λͺ¨λΈμ—μ„œ 직접 μ˜ˆμΈ‘ν•˜κ±°λ‚˜ 검증할 수 μžˆμŠ΅λ‹ˆλ‹€. yolo predict model=yolov8n-pose.onnx. 내보내기가 μ™„λ£Œλœ ν›„ λͺ¨λΈμ— λŒ€ν•œ μ‚¬μš© μ˜ˆκ°€ ν‘œμ‹œλ©λ‹ˆλ‹€.

ν˜•μ‹ format 인수 λͺ¨λΈ 메타데이터 인수
PyTorch - yolov8n-pose.pt βœ… -
TorchScript torchscript yolov8n-pose.torchscript βœ… imgsz, optimize, batch
ONNX onnx yolov8n-pose.onnx βœ… imgsz, half, dynamic, simplify, opset, batch
OpenVINO openvino yolov8n-pose_openvino_model/ βœ… imgsz, half, int8, batch
TensorRT engine yolov8n-pose.engine βœ… imgsz, half, dynamic, simplify, workspace, int8, batch
CoreML coreml yolov8n-pose.mlpackage βœ… imgsz, half, int8, nms, batch
TF SavedModel saved_model yolov8n-pose_saved_model/ βœ… imgsz, keras, int8, batch
TF GraphDef pb yolov8n-pose.pb ❌ imgsz, batch
TF Lite tflite yolov8n-pose.tflite βœ… imgsz, half, int8, batch
TF Edge TPU edgetpu yolov8n-pose_edgetpu.tflite βœ… imgsz
TF.js tfjs yolov8n-pose_web_model/ βœ… imgsz, half, int8, batch
PaddlePaddle paddle yolov8n-pose_paddle_model/ βœ… imgsz, batch
NCNN ncnn yolov8n-pose_ncnn_model/ βœ… imgsz, half, batch

전체 보기 export μ„ΈλΆ€ μ •λ³΄μ—μ„œ 내보내기 νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•©λ‹ˆλ‹€.



Created 2023-11-12, Updated 2024-06-10
Authors: glenn-jocher (18), Burhan-Q (4), RizwanMunawar (1), AyushExel (1), Laughing-q (1)

λŒ“κΈ€