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

μΈμŠ€ν„΄μŠ€ μ„ΈλΆ„ν™”

μΈμŠ€ν„΄μŠ€ μ„ΈλΆ„ν™” μ˜ˆμ‹œ

μΈμŠ€ν„΄μŠ€ 뢄할은 객체 감지보닀 ν•œ 단계 더 λ‚˜μ•„κ°€ μ΄λ―Έμ§€μ—μ„œ κ°œλ³„ 객체λ₯Ό μ‹λ³„ν•˜κ³  λ‚˜λ¨Έμ§€ μ΄λ―Έμ§€μ—μ„œ 객체λ₯Ό λΆ„ν• ν•˜λŠ” μž‘μ—…μ„ ν¬ν•¨ν•©λ‹ˆλ‹€.

μΈμŠ€ν„΄μŠ€ λΆ„ν•  λͺ¨λΈμ˜ 좜λ ₯은 μ΄λ―Έμ§€μ˜ 각 κ°œμ²΄μ— λŒ€ν•œ 클래슀 λ ˆμ΄λΈ” 및 μ‹ λ’° μ μˆ˜μ™€ ν•¨κ»˜ 각 개체의 μœ€κ³½μ„ λ‚˜νƒ€λ‚΄λŠ” 마슀크 λ˜λŠ” μœ€κ³½μ„  μ§‘ν•©μž…λ‹ˆλ‹€. μΈμŠ€ν„΄μŠ€ μ„ΈλΆ„ν™”λŠ” μ΄λ―Έμ§€μ—μ„œ 객체의 μœ„μΉ˜λΏλ§Œ μ•„λ‹ˆλΌ μ •ν™•ν•œ λͺ¨μ–‘을 μ•Œμ•„μ•Ό ν•  λ•Œ μœ μš©ν•©λ‹ˆλ‹€.



Watch: Python μ—μ„œ 사전 ν•™μŠ΅λœ Ultralytics YOLOv8 λͺ¨λΈμ„ μ‚¬μš©ν•˜μ—¬ μ„ΈλΆ„ν™”λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.

팁

YOLOv8 μ„Έκ·Έλ¨ΌνŠΈ λͺ¨λΈμ€ -seg 접미사, 즉 yolov8n-seg.pt 에 λŒ€ν•΄ 사전 κ΅μœ‘μ„ λ°›μ•˜μœΌλ©° COCO.

λͺ¨λΈ

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

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

λͺ¨λΈ 크기
(ν”½μ…€)
mAPbox
50-95
mAPmask
50-95
속도
CPU ONNX
(ms)
속도
A100 TensorRT
(ms)
λ§€κ°œλ³€μˆ˜
(M)
FLOPs
(B)
YOLOv8n-seg 640 36.7 30.5 96.1 1.21 3.4 12.6
YOLOv8s-seg 640 44.6 36.8 155.7 1.47 11.8 42.6
YOLOv8m-seg 640 49.9 40.8 317.0 2.18 27.3 110.2
YOLOv8l-seg 640 52.3 42.6 572.4 2.79 46.0 220.5
YOLOv8x-seg 640 53.4 43.4 712.1 4.02 71.8 344.1
  • mAPval 값은 단일 λͺ¨λΈ 단일 μŠ€μΌ€μΌμ— λŒ€ν•œ κ²ƒμž…λ‹ˆλ‹€. COCO val2017 데이터 μ„ΈνŠΈ.
    볡제 λŒ€μƒ yolo val segment data=coco.yaml device=0
  • 속도 λ₯Ό μ‚¬μš©ν•˜μ—¬ COCO κ°’ 이미지에 λŒ€ν•œ 평균을 κ΅¬ν•©λ‹ˆλ‹€. Amazon EC2 P4d μΈμŠ€ν„΄μŠ€.
    볡제 λŒ€μƒ yolo val segment data=coco8-seg.yaml batch=1 device=0|cpu

κΈ°μ°¨

이미지 크기 640으둜 100개 에포크에 λŒ€ν•΄ COCO128-seg 데이터 μ„ΈνŠΈμ—μ„œ YOLOv8n-segλ₯Ό ν›ˆλ ¨ν•©λ‹ˆλ‹€. μ‚¬μš© κ°€λŠ₯ν•œ 인수의 전체 λͺ©λ‘μ€ ꡬ성 νŽ˜μ΄μ§€λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

예

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-seg.yaml")  # build a new model from YAML
model = YOLO("yolov8n-seg.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolov8n-seg.yaml").load("yolov8n.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)
# Build a new model from YAML and start training from scratch
yolo segment train data=coco8-seg.yaml model=yolov8n-seg.yaml epochs=100 imgsz=640

# Start training from a pretrained *.pt model
yolo segment train data=coco8-seg.yaml model=yolov8n-seg.pt epochs=100 imgsz=640

# Build a new model from YAML, transfer pretrained weights to it and start training
yolo segment train data=coco8-seg.yaml model=yolov8n-seg.yaml pretrained=yolov8n-seg.pt epochs=100 imgsz=640

데이터 집합 ν˜•μ‹

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

Val

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

예

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-seg.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(B)
metrics.box.map50  # map50(B)
metrics.box.map75  # map75(B)
metrics.box.maps  # a list contains map50-95(B) of each category
metrics.seg.map  # map50-95(M)
metrics.seg.map50  # map50(M)
metrics.seg.map75  # map75(M)
metrics.seg.maps  # a list contains map50-95(M) of each category
yolo segment val model=yolov8n-seg.pt  # val official model
yolo segment val model=path/to/best.pt  # val custom model

예츑

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

예

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n-seg.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 segment predict model=yolov8n-seg.pt source='https://ultralytics.com/images/bus.jpg'  # predict with official model
yolo segment predict model=path/to/best.pt source='https://ultralytics.com/images/bus.jpg'  # predict with custom model

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

내보내기

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

예

from ultralytics import YOLO

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

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

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

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

자주 λ¬»λŠ” 질문

μ‚¬μš©μž 지정 데이터 μ§‘ν•©μ—μ„œ YOLOv8 μ„ΈλΆ„ν™” λͺ¨λΈμ„ ν›ˆλ ¨ν•˜λ €λ©΄ μ–΄λ–»κ²Œ ν•˜λ‚˜μš”?

μ‚¬μš©μž 지정 데이터 μ„ΈνŠΈμ—μ„œ YOLOv8 μ„ΈλΆ„ν™” λͺ¨λΈμ„ ν›ˆλ ¨ν•˜λ €λ©΄ λ¨Όμ € 데이터 μ„ΈνŠΈλ₯Ό YOLO μ„ΈλΆ„ν™” ν˜•μ‹μœΌλ‘œ μ€€λΉ„ν•΄μ•Ό ν•©λ‹ˆλ‹€. JSON2YOLO와 같은 도ꡬλ₯Ό μ‚¬μš©ν•˜μ—¬ λ‹€λ₯Έ ν˜•μ‹μ˜ 데이터 μ„ΈνŠΈλ₯Ό λ³€ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 데이터 μ„ΈνŠΈκ°€ μ€€λΉ„λ˜λ©΄ Python λ˜λŠ” CLI λͺ…령을 μ‚¬μš©ν•˜μ—¬ λͺ¨λΈμ„ ν•™μŠ΅μ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€:

예

from ultralytics import YOLO

# Load a pretrained YOLOv8 segment model
model = YOLO("yolov8n-seg.pt")

# Train the model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)
yolo segment train data=path/to/your_dataset.yaml model=yolov8n-seg.pt epochs=100 imgsz=640

μ‚¬μš© κ°€λŠ₯ν•œ μΈμˆ˜λŠ” ꡬ성 νŽ˜μ΄μ§€μ—μ„œ ν™•μΈν•˜μ„Έμš”.

YOLOv8 μ—μ„œ 객체 감지와 μΈμŠ€ν„΄μŠ€ μ„ΈλΆ„ν™”μ˜ 차이점은 λ¬΄μ—‡μΈκ°€μš”?

객체 κ°μ§€λŠ” 객체 주변에 경계 μƒμžλ₯Ό κ·Έλ € 이미지 λ‚΄μ—μ„œ 객체λ₯Ό μ‹λ³„ν•˜κ³  μœ„μΉ˜λ₯Ό νŒŒμ•…ν•˜λŠ” 반면, μΈμŠ€ν„΄μŠ€ 뢄할은 경계 μƒμžλ₯Ό 식별할 뿐만 μ•„λ‹ˆλΌ 각 객체의 μ •ν™•ν•œ λͺ¨μ–‘을 λ¬˜μ‚¬ν•©λ‹ˆλ‹€. YOLOv8 μΈμŠ€ν„΄μŠ€ λΆ„ν•  λͺ¨λΈμ€ κ°μ§€λœ 각 객체의 μœ€κ³½μ„ λ‚˜νƒ€λ‚΄λŠ” 마슀크 λ˜λŠ” μœ€κ³½μ„ μ œκ³΅ν•˜λ―€λ‘œ 의료 μ˜μƒμ΄λ‚˜ 자율 μ£Όν–‰μ²˜λŸΌ μ •ν™•ν•œ λͺ¨μ–‘ νŒŒμ•…μ΄ μ€‘μš”ν•œ μž‘μ—…μ—μ„œ 특히 μœ μš©ν•©λ‹ˆλ‹€.

μΈμŠ€ν„΄μŠ€ 세뢄화에 YOLOv8 을 μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μΈκ°€μš”?

Ultralytics YOLOv8 λŠ” 높은 정확도와 μ‹€μ‹œκ°„ μ„±λŠ₯으둜 인정받은 μ΅œμ²¨λ‹¨ λͺ¨λΈλ‘œ, μΈμŠ€ν„΄μŠ€ μ„ΈλΆ„ν™” μž‘μ—…μ— μ΄μƒμ μž…λ‹ˆλ‹€. YOLOv8 μ„Έκ·Έλ¨ΌνŠΈ λͺ¨λΈμ€ COCO 데이터 μ„ΈνŠΈμ— λŒ€ν•΄ 사전 ν•™μŠ΅λœ μƒνƒœλ‘œ μ œκ³΅λ˜λ―€λ‘œ λ‹€μ–‘ν•œ μ˜€λΈŒμ νŠΈμ—μ„œ κ°•λ ₯ν•œ μ„±λŠ₯을 보μž₯ν•©λ‹ˆλ‹€. λ˜ν•œ YOLOv8 은 μ›ν™œν•œ 톡합을 톡해 ν›ˆλ ¨, 검증, 예츑 및 내보내기 κΈ°λŠ₯을 μ§€μ›ν•˜λ―€λ‘œ 연ꡬ 및 μ‚°μ—… μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λͺ¨λ‘μ— 맀우 μœ μš©ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

사전 ν•™μŠ΅λœ YOLOv8 μ„ΈλΆ„ν™” λͺ¨λΈμ„ λ‘œλ“œν•˜κ³  μœ νš¨μ„±μ„ κ²€μ‚¬ν•˜λ €λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Ό ν•˜λ‚˜μš”?

사전 ν•™μŠ΅λœ YOLOv8 μ„ΈλΆ„ν™” λͺ¨λΈμ„ λ‘œλ“œν•˜κ³  μœ νš¨μ„±μ„ κ²€μ‚¬ν•˜λŠ” 것은 κ°„λ‹¨ν•©λ‹ˆλ‹€. Python κ³Ό CLI 을 μ‚¬μš©ν•˜μ—¬ μˆ˜ν–‰ν•˜λŠ” 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

예

from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolov8n-seg.pt")

# Validate the model
metrics = model.val()
print("Mean Average Precision for boxes:", metrics.box.map)
print("Mean Average Precision for masks:", metrics.seg.map)
yolo segment val model=yolov8n-seg.pt

μ΄λŸ¬ν•œ 단계λ₯Ό 톡해 λͺ¨λΈ μ„±λŠ₯을 ν‰κ°€ν•˜λŠ” 데 μ€‘μš”ν•œ 평균 정밀도(mAP)와 같은 검증 μ§€ν‘œλ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

YOLOv8 μ„ΈλΆ„ν™” λͺ¨λΈμ„ ONNX ν˜•μ‹μœΌλ‘œ 내보내렀면 μ–΄λ–»κ²Œ ν•΄μ•Ό ν•˜λ‚˜μš”?

YOLOv8 μ„ΈλΆ„ν™” λͺ¨λΈμ„ ONNX ν˜•μ‹μœΌλ‘œ λ‚΄λ³΄λ‚΄λŠ” 방법은 κ°„λ‹¨ν•˜λ©° Python λ˜λŠ” CLI λͺ…령을 μ‚¬μš©ν•˜μ—¬ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

예

from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolov8n-seg.pt")

# Export the model to ONNX format
model.export(format="onnx")
yolo export model=yolov8n-seg.pt format=onnx

λ‹€μ–‘ν•œ ν˜•μ‹μœΌλ‘œ λ‚΄λ³΄λ‚΄λŠ” 방법에 λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ 내보내기 νŽ˜μ΄μ§€λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.



생성 2023-11-12, μ—…λ°μ΄νŠΈ 2024-07-04
μž‘μ„±μž: glenn-jocher (20), Burhan-Q (4), Laughing-q (1)

λŒ“κΈ€