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

λ‹€μŒμ„ μ‚¬μš©ν•œ λͺ¨λΈ μœ νš¨μ„± 검사 Ultralytics YOLO

Ultralytics YOLO μ—μ½”μ‹œμŠ€ν…œ 및 톡합

μ†Œκ°œ

검증은 λ¨Έμ‹  λŸ¬λ‹ νŒŒμ΄ν”„λΌμΈμ—μ„œ μ€‘μš”ν•œ λ‹¨κ³„λ‘œ, ν•™μŠ΅λœ λͺ¨λΈμ˜ ν’ˆμ§ˆμ„ 평가할 수 있게 ν•΄μ€λ‹ˆλ‹€. Ultralytics YOLOv8 의 Val λͺ¨λ“œλŠ” 객체 감지 λͺ¨λΈμ˜ μ„±λŠ₯을 ν‰κ°€ν•˜κΈ° μœ„ν•œ κ°•λ ₯ν•œ 도ꡬ와 λ©”νŠΈλ¦­μ„ μ œκ³΅ν•©λ‹ˆλ‹€. 이 κ°€μ΄λ“œλŠ” Val λͺ¨λ“œλ₯Ό 효과적으둜 μ‚¬μš©ν•˜μ—¬ λͺ¨λΈμ˜ μ •ν™•μ„±κ³Ό 신뒰성을 보μž₯ν•˜λŠ” 방법을 μ΄ν•΄ν•˜λŠ” 데 도움이 λ˜λŠ” μ™„λ²½ν•œ λ¦¬μ†ŒμŠ€μž…λ‹ˆλ‹€.



Watch: Ultralytics λͺ¨λ“œ νŠœν† λ¦¬μ–Ό: μœ νš¨μ„± 검사

μ™œ Ultralytics YOLO 으둜 μœ νš¨μ„± 검사λ₯Ό ν•΄μ•Ό ν•˜λ‚˜μš”?

YOLOv8 의 Val λͺ¨λ“œλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μœ λ¦¬ν•œ μ΄μœ λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  • 정밀도: mAP50, mAP75, mAP50-95와 같은 μ •ν™•ν•œ μ§€ν‘œλ₯Ό 톡해 λͺ¨λΈμ„ μ’…ν•©μ μœΌλ‘œ 평가할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • νŽΈλ¦¬ν•¨: ꡐ윑 섀정을 κΈ°μ–΅ν•˜λŠ” κΈ°λ³Έ 제곡 κΈ°λŠ₯을 ν™œμš©ν•˜μ—¬ μœ νš¨μ„± 검사 ν”„λ‘œμ„ΈμŠ€λ₯Ό κ°„μ†Œν™”ν•©λ‹ˆλ‹€.
  • μœ μ—°μ„±: λ™μΌν•˜κ±°λ‚˜ λ‹€λ₯Έ 데이터 μ„ΈνŠΈμ™€ 이미지 크기둜 λͺ¨λΈμ„ κ²€μ¦ν•˜μ„Έμš”.
  • ν•˜μ΄νΌνŒŒλΌλ―Έν„° νŠœλ‹: μœ νš¨μ„± 검사 λ©”νŠΈλ¦­μ„ μ‚¬μš©ν•˜μ—¬ λͺ¨λΈμ„ λ―Έμ„Έ μ‘°μ •ν•˜μ—¬ μ„±λŠ₯을 κ°œμ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Val λͺ¨λ“œμ˜ μ£Όμš” κΈ°λŠ₯

λ‹€μŒμ€ YOLOv8 의 Val λͺ¨λ“œμ—μ„œ μ œκ³΅ν•˜λŠ” μ£Όλͺ©ν•  λ§Œν•œ κΈ°λŠ₯μž…λ‹ˆλ‹€:

  • μžλ™ν™”λœ μ„€μ •: λͺ¨λΈμ΄ ν•™μŠ΅ ꡬ성을 κΈ°μ–΅ν•˜μ—¬ κ°„νŽΈν•˜κ²Œ 검증할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • λ©€ν‹° λ©”νŠΈλ¦­ 지원: λ‹€μ–‘ν•œ 정확도 μ§€ν‘œλ₯Ό 기반으둜 λͺ¨λΈμ„ 평가할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • CLI 및 Python API: μœ νš¨μ„± 검사에 λŒ€ν•œ μ„ ν˜Έλ„μ— 따라 λͺ…령쀄 μΈν„°νŽ˜μ΄μŠ€ λ˜λŠ” Python API μ€‘μ—μ„œ μ„ νƒν•©λ‹ˆλ‹€.
  • 데이터 ν˜Έν™˜μ„±: ν•™μŠ΅ λ‹¨κ³„μ—μ„œ μ‚¬μš©λœ 데이터 μ„ΈνŠΈλŠ” λ¬Όλ‘  μ‚¬μš©μž 지정 데이터 μ„ΈνŠΈμ™€λ„ μ›ν™œν•˜κ²Œ μž‘λ™ν•©λ‹ˆλ‹€.

팁

  • YOLOv8 λͺ¨λΈμ€ ν•™μŠ΅ 섀정을 μžλ™μœΌλ‘œ κΈ°μ–΅ν•˜λ―€λ‘œ λ™μΌν•œ 이미지 크기와 원본 데이터 μ„ΈνŠΈμ—μ„œ λ‹€μŒκ³Ό 같은 λ°©λ²•μœΌλ‘œ λͺ¨λΈμ„ μ‰½κ²Œ 검증할 수 μžˆμŠ΅λ‹ˆλ‹€. yolo val model=yolov8n.pt λ˜λŠ” model('yolov8n.pt').val()

μ‚¬μš© 예

COCO8 데이터 μ„ΈνŠΈμ—μ„œ ν•™μŠ΅λœ YOLOv8n λͺ¨λΈ 정확도λ₯Ό κ²€μ¦ν•©λ‹ˆλ‹€. 인수λ₯Ό 전달할 ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. model ꡐ윑 μœ μ§€ data 및 인수λ₯Ό λͺ¨λΈ μ†μ„±μœΌλ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 내보내기 인수의 전체 λͺ©λ‘μ€ μ•„λž˜μ˜ 인수 μ„Ήμ…˜μ„ μ°Έμ‘°ν•˜μ„Έμš”.

예

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.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 detect val model=yolov8n.pt  # val official model
yolo detect val model=path/to/best.pt  # val custom model

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λŠ” ONNX λͺ¨λΈ 좔둠에 OpenCV DNN λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜μ—¬ PyTorch μΆ”λ‘  λ°©λ²•μ˜ λŒ€μ•ˆμ„ μ œκ³΅ν•©λ‹ˆλ‹€.
plots bool False 둜 μ„€μ •ν•œ 경우 TrueλŠ” λͺ¨λΈμ˜ μ„±λŠ₯을 μ‹œκ°μ μœΌλ‘œ 평가할 수 μžˆλ„λ‘ μ‹€μΈ‘κ°’κ³Ό μ˜ˆμΈ‘κ°’μ„ λΉ„κ΅ν•œ ν”Œλ‘―μ„ μƒμ„±ν•˜κ³  μ €μž₯ν•©λ‹ˆλ‹€.
rect bool False λ§Œμ•½ TrueλŠ” 일괄 μ²˜λ¦¬μ— μ§μ‚¬κ°ν˜• 좔둠을 μ‚¬μš©ν•˜μ—¬ νŒ¨λ”©μ„ 쀄이고 잠재적으둜 속도와 νš¨μœ¨μ„±μ„ λ†’μž…λ‹ˆλ‹€.
split str val μœ νš¨μ„± 검사에 μ‚¬μš©ν•  데이터 μ„ΈνŠΈ 뢄할을 κ²°μ •ν•©λ‹ˆλ‹€(val, testλ˜λŠ” train). μ„±λŠ₯ 평가λ₯Ό μœ„ν•œ 데이터 μ„Έκ·Έλ¨ΌνŠΈλ₯Ό μœ μ—°ν•˜κ²Œ 선택할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 각 섀정은 μœ νš¨μ„± 검사 ν”„λ‘œμ„ΈμŠ€μ—μ„œ μ€‘μš”ν•œ 역할을 ν•˜λ©°, YOLO λͺ¨λΈμ„ μ‚¬μš©μž μ§€μ •ν•˜κ³  효율적으둜 평가할 수 있게 ν•΄μ€λ‹ˆλ‹€. νŠΉμ • μš”κ΅¬ 사항과 λ¦¬μ†ŒμŠ€μ— 따라 μ΄λŸ¬ν•œ λ§€κ°œλ³€μˆ˜λ₯Ό μ‘°μ •ν•˜λ©΄ 정확도와 μ„±λŠ₯ κ°„μ˜ μ΅œμƒμ˜ κ· ν˜•μ„ λ‹¬μ„±ν•˜λŠ” 데 도움이 될 수 μžˆμŠ΅λ‹ˆλ‹€.

인수λ₯Ό μ‚¬μš©ν•œ μœ νš¨μ„± 검사 예제

μ•„λž˜ μ˜ˆμ œμ—μ„œλŠ” Python 및 CLI μ—μ„œ μ‚¬μš©μž 지정 인수λ₯Ό μ‚¬μš©ν•œ YOLO λͺ¨λΈ μœ νš¨μ„± 검사λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€.

예

from ultralytics import YOLO

# Load a model
model = YOLO('yolov8n.pt')

# Customize validation settings
validation_results = model.val(data='coco8.yaml',
                               imgsz=640,
                               batch=16,
                               conf=0.25,
                               iou=0.6,
                               device='0')
yolo val model=yolov8n.pt data=coco8.yaml imgsz=640 batch=16 conf=0.25 iou=0.6 device=0


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

λŒ“κΈ€