ν¬μ¦ μΆμ
ν¬μ¦ μΆμ μ μ΄λ―Έμ§μμ νΉμ μ§μ μ μμΉλ₯Ό μλ³νλ μμ
μΌλ‘, μΌλ°μ μΌλ‘ ν€ν¬μΈνΈλΌκ³ ν©λλ€. ν€ν¬μΈνΈλ κ΄μ , λλλ§ν¬ λλ κΈ°ν νΉμ§μ μΈ νΉμ§κ³Ό κ°μ 물체μ λ€μν λΆλΆμ λνλΌ μ μμ΅λλ€. ν€ν¬μΈνΈμ μμΉλ μΌλ°μ μΌλ‘ μΌλ ¨μ 2D [x, y]
λλ 3D [x, y, visible]
μ’νμ
λλ€.
ν¬μ¦ μΆμ λͺ¨λΈμ μΆλ ₯μ μΌλ°μ μΌλ‘ κ° ν¬μΈνΈμ λν μ λ’° μ μμ ν¨κ» μ΄λ―Έμ§μμ κ°μ²΄μ ν€ν¬μΈνΈλ₯Ό λνλ΄λ ν¬μΈνΈ μ§ν©μ λλ€. ν¬μ¦ μΆμ μ μ₯λ©΄μμ κ°μ²΄μ νΉμ λΆλΆκ³Ό μλ‘μ λν μμΉλ₯Ό μλ³ν΄μΌ ν λ μ’μ μ νμ λλ€.
Watch: ν¬μ¦ μΆμ Ultralytics YOLOv8 . |
Watch: ν¬μ¦ μΆμ μ μν Ultralytics HUB. |
ν
YOLOv8 ν¬μ¦ λͺ¨λΈμ -pose
μ λ―Έμ¬, μ¦ yolov8n-pose.pt
. μ΄ λͺ¨λΈμ COCO ν€ν¬μΈνΈ λ°μ΄ν° μΈνΈλ₯Ό μ¬μ©νλ©° λ€μν ν¬μ¦ μΆμ μμ
μ μ ν©ν©λλ€.
κΈ°λ³Έ YOLOv8 ν¬μ¦ λͺ¨λΈμλ 17κ°μ ν€ν¬μΈνΈκ° μμΌλ©°, κ° ν€ν¬μΈνΈλ μΈμ²΄μ λ€λ₯Έ λΆλΆμ λνλ λλ€. λ€μμ κ° μΈλ±μ€μ ν΄λΉ μ 체 κ΄μ μ 맀νμ λλ€:
0: μ½ 1: μΌμͺ½ λ 2: μ€λ₯Έμͺ½ λ 3: μΌμͺ½ κ· 4: μ€λ₯Έμͺ½ κ· 5: μΌμͺ½ μ΄κΉ¨ 6: μ€λ₯Έμͺ½ μ΄κΉ¨ 7: μΌμͺ½ νκΏμΉ 8: μ€λ₯Έμͺ½ νκΏμΉ 9: μΌμͺ½ μλͺ© 10: μ€λ₯Έμͺ½ μλͺ© 11: μΌμͺ½ μλ©μ΄ 12: μ€λ₯Έμͺ½ μλ©μ΄ 13: μΌμͺ½ λ¬΄λ¦ 14: μ€λ₯Έμͺ½ λ¬΄λ¦ 15: μΌμͺ½ λ°λͺ© 16: μ€λ₯Έμͺ½ λ°λͺ©
λͺ¨λΈ
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
μμΈ‘
νμ΅λ YOLOv8n-pose λͺ¨λΈμ μ¬μ©νμ¬ μ΄λ―Έμ§μ λν μμΈ‘μ μ€νν©λλ€.
μ
μ 체 보기 predict
λͺ¨λ μΈλΆ μ 보μμ μμΈ‘ νμ΄μ§λ‘ μ΄λν©λλ€.
λ΄λ³΄λ΄κΈ°
YOLOv8n ν¬μ¦ λͺ¨λΈμ ONNX, CoreML λ±κ³Ό κ°μ λ€λ₯Έ νμμΌλ‘ λ΄λ³΄λ λλ€.
μ
μ¬μ© κ°λ₯ 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
μΈλΆ μ 보μμ λ΄λ³΄λ΄κΈ° νμ΄μ§λ‘ μ΄λν©λλ€.
μμ£Ό 묻λ μ§λ¬Έ
ν¬μ¦ μΆμ ( Ultralytics YOLOv8 )μ΄λ 무μμ΄λ©° μ΄λ»κ² μλνλμ?
Ultralytics YOLOv8 μ μ¬μ©ν ν¬μ¦ μΆμ μλ μ΄λ―Έμ§μμ ν€ν¬μΈνΈλΌκ³ νλ νΉμ μ§μ μ μλ³νλ μμ
μ΄ ν¬ν¨λ©λλ€. μ΄λ¬ν ν€ν¬μΈνΈλ μΌλ°μ μΌλ‘ κ΄μ μ΄λ κ°μ²΄μ λ€λ₯Έ μ€μν νΉμ§μ λνλ
λλ€. μΆλ ₯μλ λ€μμ΄ ν¬ν¨λ©λλ€. [x, y]
μ’νμ κ° ν¬μΈνΈμ λν μ λ’°λ μ μλ₯Ό μ 곡ν©λλ€. YOLOv8-λͺ¨λΈμ μ΄ μμ
μ μν΄ νΉλ³ν μ€κ³λμμΌλ©° -pose
μ λ―Έμ¬μ κ°μ yolov8n-pose.pt
. μ΄λ¬ν λͺ¨λΈμ λ€μκ³Ό κ°μ λ°μ΄ν° μΈνΈμ λν΄ μ¬μ νμ΅λ©λλ€. COCO ν€ν¬μΈνΈ λ€μν ν¬μ¦ μΆμ μμ
μ μ¬μ©ν μ μμ΅λλ€. μμΈν λ΄μ©μ ν¬μ¦ μΆμ νμ΄μ§.
μ¬μ©μ μ§μ λ°μ΄ν° μ§ν©μμ YOLOv8-pose λͺ¨λΈμ νμ΅νλ €λ©΄ μ΄λ»κ² ν΄μΌ νλμ?
μ¬μ©μ μ§μ λ°μ΄ν° μΈνΈμμ YOLOv8-pose λͺ¨λΈμ νμ΅νλ €λ©΄ YAML νμΌλ‘ μ μλ μ λͺ¨λΈμ΄λ μ¬μ νμ΅λ λͺ¨λΈ μ€ νλλ₯Ό λ‘λν΄μΌ ν©λλ€. κ·Έλ° λ€μ μ§μ λ λ°μ΄ν° μΈνΈμ λ§€κ° λ³μλ₯Ό μ¬μ©νμ¬ νμ΅ νλ‘μΈμ€λ₯Ό μμν μ μμ΅λλ€.
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)
# Train the model
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)
κ΅μ‘μ λν μμΈν λ΄μ©μ κ΅μ‘ μΉμ μ μ°Έμ‘°νμΈμ.
νλ ¨λ YOLOv8-pose λͺ¨λΈμ μ ν¨μ±μ κ²μ¬νλ €λ©΄ μ΄λ»κ² νλμ?
YOLOv8-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
# Validate the model
metrics = model.val() # no arguments needed, dataset and settings remembered
μμΈν λ΄μ©μ Val μΉμ μ μ°Έμ‘°νμΈμ.
YOLOv8-pose λͺ¨λΈμ λ€λ₯Έ νμμΌλ‘ λ΄λ³΄λΌ μ μμΌλ©° κ·Έ λ°©λ²μ 무μμΈκ°μ?
μ, YOLOv8-pose λͺ¨λΈμ ONNX, CoreML, TensorRT λ±κ³Ό κ°μ λ€μν νμμΌλ‘ λ΄λ³΄λΌ μ μμ΅λλ€. μ΄ μμ μ Python λλ λͺ λ Ήμ€ μΈν°νμ΄μ€(CLI)λ₯Ό μ¬μ©νμ¬ μνν μ μμ΅λλ€.
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")
μμΈν λ΄μ©μ λ΄λ³΄λ΄κΈ° μΉμ μ μ°Έμ‘°νμΈμ.
μ¬μ© κ°λ₯ν Ultralytics YOLOv8 -pose λͺ¨λΈκ³Ό ν΄λΉ μ±λ₯ μ§νλ 무μμΈκ°μ?
Ultralytics YOLOv8 YOLOv8n-pose, -pose, -pose λ± λ€μν μ¬μ νμ΅λ ν¬μ¦ λͺ¨λΈμ μ 곡ν©λλ€. μ΄λ¬ν λͺ¨λΈμ ν¬κΈ°, μ νλ(mAP) λ° μλκ° λ€λ¦ λλ€. μλ₯Ό λ€μ΄ -pose λͺ¨λΈμ YOLOv8s YOLOv8m YOLOv8nmAPpose50-95μ50.4μ mAPpose50μ80.1μ λ¬μ±ν©λλ€. μ 체 λͺ©λ‘κ³Ό μ±λ₯μ λν μμΈν λ΄μ©μ λͺ¨λΈ μΉμ μ μ°Έμ‘°νμΈμ.
2023-11-12 μμ±, 2024-07-08 μ λ°μ΄νΈλ¨
μ μ: k-2feng@hotmail.com (1), glenn-jocher (20), Burhan-Q (4), RizwanMunawar (1), AyushExel (1), Laughing-q (1)