λ€μμ μ¬μ©ν λͺ¨λΈ μ ν¨μ± κ²μ¬ Ultralytics YOLO
μκ°
κ²μ¦μ λ¨Έμ λ¬λ νμ΄νλΌμΈμμ μ€μν λ¨κ³λ‘, νμ΅λ λͺ¨λΈμ νμ§μ νκ°ν μ μκ² ν΄μ€λλ€. Ultralytics YOLO11 μ Val λͺ¨λλ κ°μ²΄ κ°μ§ λͺ¨λΈμ μ±λ₯μ νκ°νκΈ° μν κ°λ ₯ν λꡬμ λ©νΈλ¦μ μ 곡ν©λλ€. μ΄ κ°μ΄λλ Val λͺ¨λλ₯Ό ν¨κ³Όμ μΌλ‘ μ¬μ©νμ¬ λͺ¨λΈμ μ νμ±κ³Ό μ λ’°μ±μ 보μ₯νλ λ°©λ²μ μ΄ν΄νλ λ° λμμ΄ λλ μλ²½ν 리μμ€μ λλ€.
Watch: Ultralytics λͺ¨λ νν 리μΌ: μ ν¨μ± κ²μ¬
μ Ultralytics YOLO μΌλ‘ μ ν¨μ± κ²μ¬λ₯Ό ν΄μΌ νλμ?
YOLO11 μ Val λͺ¨λλ₯Ό μ¬μ©νλ κ²μ΄ μ 리ν μ΄μ λ λ€μκ³Ό κ°μ΅λλ€:
- μ λ°λ: mAP50, mAP75, mAP50-95μ κ°μ μ νν μ§νλ₯Ό ν΅ν΄ λͺ¨λΈμ μ’ ν©μ μΌλ‘ νκ°ν μ μμ΅λλ€.
- νΈλ¦¬ν¨: κ΅μ‘ μ€μ μ κΈ°μ΅νλ κΈ°λ³Έ μ 곡 κΈ°λ₯μ νμ©νμ¬ μ ν¨μ± κ²μ¬ νλ‘μΈμ€λ₯Ό κ°μνν©λλ€.
- μ μ°μ±: λμΌνκ±°λ λ€λ₯Έ λ°μ΄ν° μΈνΈμ μ΄λ―Έμ§ ν¬κΈ°λ‘ λͺ¨λΈμ κ²μ¦νμΈμ.
- νμ΄νΌνλΌλ―Έν° νλ: μ ν¨μ± κ²μ¬ λ©νΈλ¦μ μ¬μ©νμ¬ λͺ¨λΈμ λ―ΈμΈ μ‘°μ νμ¬ μ±λ₯μ κ°μ ν μ μμ΅λλ€.
Val λͺ¨λμ μ£Όμ κΈ°λ₯
λ€μμ YOLO11 μ Val λͺ¨λμμ μ 곡νλ μ£Όλͺ©ν λ§ν κΈ°λ₯μ λλ€:
- μλνλ μ€μ : λͺ¨λΈμ΄ νμ΅ κ΅¬μ±μ κΈ°μ΅νμ¬ κ°νΈνκ² κ²μ¦ν μ μμ΅λλ€.
- λ©ν° λ©νΈλ¦ μ§μ: λ€μν μ νλ μ§νλ₯Ό κΈ°λ°μΌλ‘ λͺ¨λΈμ νκ°ν μ μμ΅λλ€.
- CLI λ° Python API: μ ν¨μ± κ²μ¬μ λν μ νΈλμ λ°λΌ λͺ λ Ήμ€ μΈν°νμ΄μ€ λλ Python API μ€μμ μ νν©λλ€.
- λ°μ΄ν° νΈνμ±: νμ΅ λ¨κ³μμ μ¬μ©λ λ°μ΄ν° μΈνΈλ λ¬Όλ‘ μ¬μ©μ μ§μ λ°μ΄ν° μΈνΈμλ μννκ² μλν©λλ€.
ν
- YOLO11 λͺ¨λΈμ νμ΅ μ€μ μ μλμΌλ‘ κΈ°μ΅νλ―λ‘ λμΌν μ΄λ―Έμ§ ν¬κΈ°μ μλ³Έ λ°μ΄ν° μΈνΈμμ λ€μκ³Ό κ°μ λ°©λ²μΌλ‘ λͺ¨λΈμ μ½κ² κ²μ¦ν μ μμ΅λλ€.
yolo val model=yolo11n.pt
λλmodel('yolo11n.pt').val()
μ¬μ© μ
νμ΅λ YOLO11n λͺ¨λΈ κ²μ¦νκΈ° μ νμ± λ‘ μ€μ ν μ μμ΅λλ€. μΈμκ° νμνμ§ μμΌλ―λ‘ model
κ΅μ‘ μ μ§ data
λ° μΈμλ₯Ό λͺ¨λΈ μμ±μΌλ‘ μ¬μ©ν μ μμ΅λλ€. λ΄λ³΄λ΄κΈ° μΈμμ μ 체 λͺ©λ‘μ μλμ μΈμ μΉμ
μ μ°Έμ‘°νμΈμ.
μ
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.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 λͺ¨λΈ μ ν¨μ± κ²μ¬μ λν μΈμ
YOLO λͺ¨λΈμ κ²μ¦ν λ μ¬λ¬ μΈμλ₯Ό λ―ΈμΈ μ‘°μ νμ¬ νκ° νλ‘μΈμ€λ₯Ό μ΅μ νν μ μμ΅λλ€. μ΄λ¬ν μΈμλ μ λ ₯ μ΄λ―Έμ§ ν¬κΈ°, μΌκ΄ μ²λ¦¬ λ° μ±λ₯ μκ³κ°κ³Ό κ°μ μΈ‘λ©΄μ μ μ΄ν©λλ€. λ€μμ μ ν¨μ± κ²μ¬ μ€μ μ ν¨κ³Όμ μΌλ‘ μ¬μ©μ μ§μ νλ λ° λμμ΄ λλ κ° μΈμμ λν μμΈν λΆμμ λλ€.
μΈμ | μ ν | κΈ°λ³Έκ° | μ€λͺ |
---|---|---|---|
data |
str |
None |
λ°μ΄ν° μΈνΈ κ΅¬μ± νμΌμ κ²½λ‘λ₯Ό μ§μ ν©λλ€(μ:, coco8.yaml ). μ΄ νμΌμλ λ€μ κ²½λ‘κ° ν¬ν¨λ©λλ€. μ ν¨μ± κ²μ¬ λ°μ΄ν°, ν΄λμ€ μ΄λ¦, ν΄λμ€ μλ₯Ό μ
λ ₯ν©λλ€. |
imgsz |
int |
640 |
μ λ ₯ μ΄λ―Έμ§μ ν¬κΈ°λ₯Ό μ μν©λλ€. λͺ¨λ μ΄λ―Έμ§λ μ²λ¦¬νκΈ° μ μ μ΄ ν¬κΈ°λ‘ ν¬κΈ°κ° μ‘°μ λ©λλ€. |
batch |
int |
16 |
λ°°μΉλΉ μ΄λ―Έμ§ μλ₯Ό μ€μ ν©λλ€. μ¬μ© -1 λ₯Ό μ€μ νλ©΄ GPU λ©λͺ¨λ¦¬ κ°μ©μ±μ λ°λΌ μλμΌλ‘ μ‘°μ λ©λλ€. |
save_json |
bool |
False |
λ§μ½ True λ₯Ό ν΄λ¦νλ©΄ μΆκ° λΆμ λλ λ€λ₯Έ λꡬμμ ν΅ν©μ μν΄ κ²°κ³Όλ₯Ό JSON νμΌμ μ μ₯ν©λλ€. |
save_hybrid |
bool |
False |
λ§μ½ True λ₯Ό ν΄λ¦νλ©΄ μλ μ£Όμκ³Ό μΆκ° λͺ¨λΈ μμΈ‘μ κ²°ν©ν νμ΄λΈλ¦¬λ λ²μ μ λ μ΄λΈμ΄ μ μ₯λ©λλ€. |
conf |
float |
0.001 |
νμ§μ λν μ΅μ μ λ’°λ μκ³κ°μ μ€μ ν©λλ€. μ΄ μκ³κ° λ―Έλ§μ μ λ’°λλ₯Ό κ°μ§ νμ§λ μμ λ©λλ€. |
iou |
float |
0.6 |
NMS(λΉμ΅λ μ΅μ )μ λν IoU( κ΅μ°¨μ μ΄κ³Ό μ°ν© ) μκ³κ°μ μ€μ ν©λλ€. μ€λ³΅ νμ§λ₯Ό μ€μ΄λ λ° λμμ΄ λ©λλ€. |
max_det |
int |
300 |
μ΄λ―Έμ§λΉ μ΅λ κ°μ§ νμλ₯Ό μ νν©λλ€. κ³Όλν κ°μ§λ₯Ό λ°©μ§νκΈ° μν΄ λ°μ§λ μ₯λ©΄μμ μ μ©ν©λλ€. |
half |
bool |
True |
λ°μ λ°λ (FP16) κ³μ°μ μ§μνμ¬ μ νλμ λ―ΈμΉλ μν₯μ μ΅μννλ©΄μ λ©λͺ¨λ¦¬ μ¬μ©λμ μ€μ΄κ³ μ μ¬μ μΌλ‘ μλλ₯Ό λμΌ μ μμ΅λλ€. |
device |
str |
None |
μ ν¨μ± κ²μ¬ν μ₯μΉλ₯Ό μ§μ ν©λλ€(cpu , cuda:0 λ±). CPU λλ GPU 리μμ€λ₯Ό μ μ°νκ² νμ©ν μ μμ΅λλ€. |
dnn |
bool |
False |
λ§μ½ True λ₯Ό μ¬μ©νμ¬ OpenCV ONNX λͺ¨λΈ μΆλ‘ μ μν DNN λͺ¨λλ‘, λ€μκ³Ό κ°μ λμμ μ 곡ν©λλ€. PyTorch μΆλ‘ λ°©λ². |
plots |
bool |
False |
λ‘ μ€μ ν κ²½μ° True λ λͺ¨λΈμ μ±λ₯μ μκ°μ μΌλ‘ νκ°ν μ μλλ‘ μ€μΈ‘κ°κ³Ό μμΈ‘κ°μ λΉκ΅ν νλ‘―μ μμ±νκ³ μ μ₯ν©λλ€. |
rect |
bool |
True |
λ§μ½ True λ μΌκ΄ μ²λ¦¬μ μ§μ¬κ°ν μΆλ‘ μ μ¬μ©νμ¬ ν¨λ©μ μ€μ΄κ³ μ μ¬μ μΌλ‘ μλμ ν¨μ¨μ±μ λμ
λλ€. |
split |
str |
val |
μ ν¨μ± κ²μ¬μ μ¬μ©ν λ°μ΄ν° μΈνΈ λΆν μ κ²°μ ν©λλ€(val , test λλ train ). μ±λ₯ νκ°λ₯Ό μν λ°μ΄ν° μΈκ·Έλ¨ΌνΈλ₯Ό μ μ°νκ² μ νν μ μμ΅λλ€. |
project |
str |
None |
μ ν¨μ± κ²μ¬ μΆλ ₯μ΄ μ μ₯λλ νλ‘μ νΈ λλ ν°λ¦¬μ μ΄λ¦μ λλ€. |
name |
str |
None |
μ ν¨μ± κ²μ¬ μ€νμ μ΄λ¦μ λλ€. νλ‘μ νΈ ν΄λ λ΄μ μ ν¨μ± κ²μ¬ λ‘κ·Έμ μΆλ ₯μ΄ μ μ₯λλ νμ λλ ν°λ¦¬λ₯Ό λ§λλ λ° μ¬μ©λ©λλ€. |
μ΄λ¬ν κ° μ€μ μ μ ν¨μ± κ²μ¬ νλ‘μΈμ€μμ μ€μν μν μ νλ©°, YOLO λͺ¨λΈμ μ¬μ©μ μ§μ νκ³ ν¨μ¨μ μΌλ‘ νκ°ν μ μκ² ν΄μ€λλ€. νΉμ μꡬ μ¬νκ³Ό 리μμ€μ λ°λΌ μ΄λ¬ν 맀κ°λ³μλ₯Ό μ‘°μ νλ©΄ μ νλμ μ±λ₯ κ°μ μ΅μμ κ· νμ λ¬μ±νλ λ° λμμ΄ λ μ μμ΅λλ€.
μΈμλ₯Ό μ¬μ©ν μ ν¨μ± κ²μ¬ μμ
μλ μμ μμλ Python λ° CLI μμ μ¬μ©μ μ§μ μΈμλ₯Ό μ¬μ©ν YOLO λͺ¨λΈ μ ν¨μ± κ²μ¬λ₯Ό 보μ¬μ€λλ€.
μ
μμ£Ό 묻λ μ§λ¬Έ
Ultralytics μΌλ‘ λ΄ YOLO11 λͺ¨λΈμ μ ν¨μ±μ κ²μ¬νλ €λ©΄ μ΄λ»κ² νλμ?
YOLO11 λͺ¨λΈμ μ ν¨μ±μ κ²μ¬νλ €λ©΄ Ultralytics μμ μ 곡νλ Val λͺ¨λλ₯Ό μ¬μ©ν μ μμ΅λλ€. μλ₯Ό λ€μ΄ Python APIλ₯Ό μ¬μ©νμ¬ λͺ¨λΈμ λ‘λνκ³ μ ν¨μ± κ²μ¬λ₯Ό μ€νν μ μμ΅λλ€:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Validate the model
metrics = model.val()
print(metrics.box.map) # map50-95
λλ λͺ λ Ήμ€ μΈν°νμ΄μ€(CLI)λ₯Ό μ¬μ©ν μλ μμ΅λλ€:
μΆκ° μ¬μ©μ μ§μ μ μν΄ λ€μκ³Ό κ°μ λ€μν μΈμλ₯Ό μ‘°μ ν μ μμ΅λλ€. imgsz
, batch
λ° conf
Python λ° CLI λͺ¨λμμ λͺ¨λ μ¬μ©ν μ μμ΅λλ€. νμΈ YOLO λͺ¨λΈ μ ν¨μ± κ²μ¬μ λν μΈμ μΉμ
μμ μ 체 맀κ°λ³μ λͺ©λ‘μ νμΈνμΈμ.
YOLO11 λͺ¨λΈ μ ν¨μ± κ²μ¬μμ μ΄λ€ λ©νΈλ¦μ μ»μ μ μλμ?
YOLO11 λͺ¨λΈ μ ν¨μ± κ²μ¬λ λͺ¨λΈ μ±λ₯μ νκ°νκΈ° μν λͺ κ°μ§ μ£Όμ μ§νλ₯Ό μ 곡ν©λλ€. μ¬κΈ°μλ λ€μμ΄ ν¬ν¨λ©λλ€:
- mAP50(IoU μκ³κ° 0.5μμ νκ· νκ· μ λ°λ)
- mAP75(IoU μκ³κ° 0.75μμ νκ· νκ· μ λ°λ)
- mAP50-95(0.5 ~ 0.95μ μ¬λ¬ IoU μκ³κ°μμ νκ· νκ· μ λ°λ)
Python APIλ₯Ό μ¬μ©νλ©΄ λ€μκ³Ό κ°μ΄ μ΄λ¬ν λ©νΈλ¦μ μ‘μΈμ€ν μ μμ΅λλ€:
metrics = model.val() # assumes `model` has been loaded
print(metrics.box.map) # mAP50-95
print(metrics.box.map50) # mAP50
print(metrics.box.map75) # mAP75
print(metrics.box.maps) # list of mAP50-95 for each category
μμ ν μ±λ₯ νκ°λ₯Ό μν΄μλ μ΄λ¬ν λͺ¨λ μ§νλ₯Ό κ²ν νλ κ²μ΄ μ€μν©λλ€. μμΈν λ΄μ©μ Val λͺ¨λμ μ£Όμ κΈ°λ₯μ μ°Έμ‘°νμΈμ.
μ ν¨μ± κ²μ¬μ Ultralytics YOLO μ μ¬μ©νλ©΄ μ΄λ€ μ΄μ μ΄ μλμ?
μ ν¨μ± κ²μ¬μ Ultralytics YOLO μ μ¬μ©νλ©΄ λͺ κ°μ§ μ΄μ μ΄ μμ΅λλ€:
- μ λ°λ: YOLO11 λ mAP50, mAP75, mAP50-95λ₯Ό ν¬ν¨ν μ νν μ±λ₯ μ§νλ₯Ό μ 곡ν©λλ€.
- νΈμμ±: λͺ¨λΈμ΄ νμ΅ μ€μ μ κΈ°μ΅νλ―λ‘ κ²μ¦μ΄ κ°λ¨ν©λλ€.
- μ μ°μ±: λμΌνκ±°λ λ€λ₯Έ λ°μ΄ν° μΈνΈ λ° μ΄λ―Έμ§ ν¬κΈ°μ λν΄ μ ν¨μ±μ κ²μ¬ν μ μμ΅λλ€.
- νμ΄νΌνλΌλ―Έν° νλ: μ ν¨μ± κ²μ¬ λ©νΈλ¦μ λ λμ μ±λ₯μ μν΄ λͺ¨λΈμ λ―ΈμΈ μ‘°μ νλ λ° λμμ΄ λ©λλ€.
μ΄λ¬ν μ΄μ μ ν΅ν΄ λͺ¨λΈμ μ² μ νκ² νκ°νκ³ μ°μν κ²°κ³Όλ₯Ό μν΄ μ΅μ νν μ μμ΅λλ€. μ΄λ¬ν μ₯μ μ λν΄ μμΈν μμλ³΄λ €λ©΄ Ultralytics YOLO μΉμ μ μ°Έμ‘°νμΈμ.
μ¬μ©μ μ§μ λ°μ΄ν° μ§ν©μ μ¬μ©νμ¬ YOLO11 λͺ¨λΈμ μ ν¨μ±μ κ²μ¬ν μ μλμ?
μ, YOLO11 λͺ¨λΈμ μ¬μ©νμ¬ μ ν¨μ±μ κ²μ¬ν μ μμ΅λλ€. μ¬μ©μ μ§μ λ°μ΄ν° μΈνΈ. λ₯Ό μ§μ νμμμ€. data
μΈμλ₯Ό λ°μ΄ν° μΈνΈ κ΅¬μ± νμΌμ κ²½λ‘μ ν¨κ» μ§μ ν©λλ€. μ΄ νμΌμλ μ ν¨μ± κ²μ¬ λ°μ΄ν°, ν΄λμ€ μ΄λ¦ λ° κΈ°ν κ΄λ ¨ μΈλΆ μ 보λ₯Ό μ
λ ₯ν©λλ€.
Python μ μμ :
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Validate with a custom dataset
metrics = model.val(data="path/to/your/custom_dataset.yaml")
print(metrics.box.map) # map50-95
CLI μ¬μ© μμ :
μ ν¨μ± κ²μ¬ μ€ μ¬μ©μ μ§μ κ°λ₯ν μ΅μ μ λν μμΈν λ΄μ©μ μΈμλ₯Ό μ¬μ©ν μ ν¨μ± κ²μ¬ μμ μΉμ μ μ°Έμ‘°νμΈμ.
μ ν¨μ± κ²μ¬ κ²°κ³Όλ₯Ό YOLO11 μ μλ JSON νμΌμ μ μ₯νλ €λ©΄ μ΄λ»κ² νλμ?
μ ν¨μ± κ²μ¬ κ²°κ³Όλ₯Ό JSON νμΌμ μ μ₯νλ €λ©΄ λ€μκ³Ό κ°μ΄ μ€μ ν μ μμ΅λλ€. save_json
μΈμλ₯Ό True
λ₯Ό μΆκ°ν΄μΌ ν©λλ€. μ΄λ Python APIμ CLI μμ λͺ¨λ μνν μ μμ΅λλ€.
Python μ μμ :
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Save validation results to JSON
metrics = model.val(save_json=True)
CLI μ¬μ© μμ :
μ΄ κΈ°λ₯μ μΆκ° λΆμμ΄λ λ€λ₯Έ λꡬμμ ν΅ν©μ νΉν μ μ©ν©λλ€. μμΈν λ΄μ©μ YOLO λͺ¨λΈ μ ν¨μ± κ²μ¬ μΈμλ₯Ό μ°Έμ‘°νμΈμ.