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

λͺ¨λΈ λ²€μΉ˜λ§ˆν‚Ή Ultralytics YOLO

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

μ†Œκ°œ

λͺ¨λΈμ΄ ν•™μŠ΅λ˜κ³  κ²€μ¦λ˜λ©΄ λ‹€μŒ 논리적 λ‹¨κ³„λŠ” λ‹€μ–‘ν•œ μ‹€μ œ μ‹œλ‚˜λ¦¬μ˜€μ—μ„œ λͺ¨λΈμ˜ μ„±λŠ₯을 ν‰κ°€ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. Ultralytics YOLOv8 의 벀치마크 λͺ¨λ“œλŠ” λ‹€μ–‘ν•œ 내보내기 ν˜•μ‹μ—μ„œ λͺ¨λΈμ˜ 속도와 정확성을 평가할 수 μžˆλŠ” κ°•λ ₯ν•œ ν”„λ ˆμž„μ›Œν¬λ₯Ό μ œκ³΅ν•˜μ—¬ μ΄λŸ¬ν•œ λͺ©μ μ„ 달성할 수 μžˆμŠ΅λ‹ˆλ‹€.



Watch: Ultralytics λͺ¨λ“œ νŠœν† λ¦¬μ–Ό: 벀치마크

λ²€μΉ˜λ§ˆν‚Ήμ΄ μ€‘μš”ν•œ μ΄μœ λŠ” λ¬΄μ—‡μΈκ°€μš”?

  • 정보에 κΈ°λ°˜ν•œ μ˜μ‚¬ κ²°μ •: 속도와 μ •ν™•μ„± μ‚¬μ΄μ˜ 상좩 관계에 λŒ€ν•œ μΈμ‚¬μ΄νŠΈλ₯Ό μ–»μœΌμ„Έμš”.
  • λ¦¬μ†ŒμŠ€ ν• λ‹Ή: λ‹€μ–‘ν•œ ν•˜λ“œμ›¨μ–΄μ—μ„œ μ„œλ‘œ λ‹€λ₯Έ 내보내기 ν˜•μ‹μ΄ μ–΄λ–»κ²Œ μž‘λ™ν•˜λŠ”μ§€ μ΄ν•΄ν•©λ‹ˆλ‹€.
  • μ΅œμ ν™”: νŠΉμ • μ‚¬μš© 사둀에 κ°€μž₯ μ ν•©ν•œ 내보내기 ν˜•μ‹μ„ μ•Œμ•„λ³΄μ„Έμš”.
  • λΉ„μš© νš¨μœ¨μ„±: 벀치마크 κ²°κ³Όλ₯Ό 기반으둜 ν•˜λ“œμ›¨μ–΄ λ¦¬μ†ŒμŠ€λ₯Ό 보닀 효율적으둜 ν™œμš©ν•˜μ„Έμš”.

벀치마크 λͺ¨λ“œμ˜ μ£Όμš” μ§€ν‘œ

  • mAP50-95: 물체 감지, μ„ΈλΆ„ν™” 및 포즈 μΆ”μ •μš©.
  • 정확도_top5: 이미지 λΆ„λ₯˜μš©μž…λ‹ˆλ‹€.
  • μΆ”λ‘  μ‹œκ°„: 각 이미지에 μ†Œμš”λœ μ‹œκ°„(λ°€λ¦¬μ΄ˆ)μž…λ‹ˆλ‹€.

μ§€μ›λ˜λŠ” 내보내기 ν˜•μ‹

  • ONNX: 졜적의 CPU μ„±λŠ₯을 μœ„ν•΄
  • TensorRT: GPU νš¨μœ¨μ„± κ·ΉλŒ€ν™”
  • OpenVINO: 용 Intel ν•˜λ“œμ›¨μ–΄ μ΅œμ ν™”
  • CoreML, TensorFlow SavedModel , 기타: λ‹€μ–‘ν•œ 배포 μš”κ΅¬μ‚¬ν•­μ— μ ν•©ν•©λ‹ˆλ‹€.

팁

  • ONNX λ˜λŠ” OpenVINO 으둜 내보내면 CPU 속도가 μ΅œλŒ€ 3λ°° λΉ¨λΌμ§‘λ‹ˆλ‹€.
  • TensorRT 으둜 내보내면 GPU 속도가 μ΅œλŒ€ 5λ°° λΉ¨λΌμ§‘λ‹ˆλ‹€.

μ‚¬μš© 예

ONNX, TensorRT λ“± μ§€μ›λ˜λŠ” λͺ¨λ“  내보내기 ν˜•μ‹μ—μ„œ YOLOv8n 벀치마크λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€. 내보내기 인수의 전체 λͺ©λ‘μ€ μ•„λž˜μ˜ 인수 μ„Ήμ…˜μ„ μ°Έμ‘°ν•˜μ„Έμš”.

예

from ultralytics.utils.benchmarks import benchmark

# Benchmark on GPU
benchmark(model="yolov8n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)
yolo benchmark model=yolov8n.pt data='coco8.yaml' imgsz=640 half=False device=0

인수

λ‹€μŒκ³Ό 같은 인수 model, data, imgsz, half, device및 verbose λŠ” μ‚¬μš©μžκ°€ νŠΉμ • μš”κ΅¬ 사항에 맞게 벀치마크λ₯Ό λ―Έμ„Έ μ‘°μ •ν•˜κ³  λ‹€μ–‘ν•œ 내보내기 ν˜•μ‹μ˜ μ„±λŠ₯을 μ‰½κ²Œ 비ꡐ할 수 μžˆλŠ” μœ μ—°μ„±μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

ν‚€ κΈ°λ³Έκ°’ μ„€λͺ…
model None λͺ¨λΈ 파일의 경둜λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€. λ‘˜ λ‹€ ν—ˆμš© .pt 그리고 .yaml ν˜•μ‹ 등을 예둜 λ“€ 수 μžˆμŠ΅λ‹ˆλ‹€, "yolov8n.pt" λ₯Ό μ‚¬μš©ν•˜μ—¬ 사전 ν•™μŠ΅λœ λͺ¨λΈ λ˜λŠ” ꡬ성 νŒŒμΌμ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
data None 일반적으둜 μœ νš¨μ„± 검사 λ°μ΄ν„°μ˜ 경둜 및 섀정을 ν¬ν•¨ν•˜μ—¬ λ²€μΉ˜λ§ˆν‚Ήμ„ μœ„ν•œ 데이터 집합을 μ •μ˜ν•˜λŠ” YAML 파일의 κ²½λ‘œμž…λ‹ˆλ‹€. μ˜ˆμ‹œ: "coco8.yaml".
imgsz 640 λͺ¨λΈμ˜ μž…λ ₯ 이미지 ν¬κΈ°μž…λ‹ˆλ‹€. μ •μ‚¬κ°ν˜• μ΄λ―Έμ§€μ˜ 경우 단일 μ •μˆ˜ λ˜λŠ” νŠœν”ŒμΌ 수 μžˆμŠ΅λ‹ˆλ‹€. (width, height) μ •μ‚¬κ°ν˜•μ΄ μ•„λ‹Œ 경우, 예λ₯Ό λ“€μ–΄, (640, 480).
half False FP16(λ°˜μ •λ°€) 좔둠을 ν™œμ„±ν™”ν•˜μ—¬ ν˜Έν™˜ ν•˜λ“œμ›¨μ–΄μ—μ„œ λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ„ 쀄이고 속도λ₯Ό 높일 수 μžˆμŠ΅λ‹ˆλ‹€. μ‚¬μš© half=True λ₯Ό ν΄λ¦­ν•©λ‹ˆλ‹€.
int8 False INT8 μ–‘μžν™”λ₯Ό ν™œμ„±ν™”ν•˜μ—¬ μ§€μ›λ˜λŠ” λ””λ°”μ΄μŠ€μ—μ„œ μ„±λŠ₯을 λ”μš± μ΅œμ ν™”ν•˜λ©°, 특히 엣지 λ””λ°”μ΄μŠ€μ— μœ μš©ν•©λ‹ˆλ‹€. Set int8=True λ₯Ό μ‚¬μš©ν•˜μ„Έμš”.
device None λ‹€μŒκ³Ό 같은 λ²€μΉ˜λ§ˆν‚Ήμ„ μœ„ν•œ 계산 μž₯치λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€. "cpu", "cuda:0"λ˜λŠ” λ‹€μŒκ³Ό 같은 μž₯치 λͺ©λ‘ "cuda:0,1" 닀쀑GPU μ„€μ •μ˜ 경우.
verbose False λ‘œκΉ… 좜λ ₯의 μ„ΈλΆ€ μˆ˜μ€€μ„ μ œμ–΄ν•©λ‹ˆλ‹€. λΆ€μšΈ κ°’; μ„€μ • verbose=True λ₯Ό μ‚¬μš©ν•˜μ—¬ μžμ„Έν•œ 둜그λ₯Ό ν™•μΈν•˜κ±°λ‚˜ μž„κ³„κ°’ 였λ₯˜μ— λŒ€ν•œ ν”Œλ‘œνŠΈλ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

내보내기 ν˜•μ‹

λ²€μΉ˜λ§ˆν¬λŠ” μ•„λž˜μ˜ λͺ¨λ“  κ°€λŠ₯ν•œ 내보내기 ν˜•μ‹μ— λŒ€ν•΄ μžλ™μœΌλ‘œ 싀행을 μ‹œλ„ν•©λ‹ˆλ‹€.

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

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

자주 λ¬»λŠ” 질문

Ultralytics 을 μ‚¬μš©ν•˜μ—¬ YOLOv8 λͺ¨λΈμ˜ μ„±λŠ₯을 λ²€μΉ˜λ§ˆν‚Ήν•˜λ €λ©΄ μ–΄λ–»κ²Œ ν•˜λ‚˜μš”?

Ultralytics YOLOv8 λŠ” λ‹€μ–‘ν•œ 내보내기 ν˜•μ‹μ—μ„œ λͺ¨λΈμ˜ μ„±λŠ₯을 평가할 수 μžˆλŠ” 벀치마크 λͺ¨λ“œλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. 이 λͺ¨λ“œλŠ” 평균 평균 정밀도(mAP50-95), 정확도, μΆ”λ‘  μ‹œκ°„(λ°€λ¦¬μ΄ˆ) λ“±μ˜ μ£Όμš” λ©”νŠΈλ¦­μ— λŒ€ν•œ μΈμ‚¬μ΄νŠΈλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. 벀치마크λ₯Ό μ‹€ν–‰ν•˜λ €λ©΄ Python λ˜λŠ” CLI λͺ…령을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, GPU μ—μ„œ λ²€μΉ˜λ§ˆν‚Ήν•˜λ €λ©΄:

예

from ultralytics.utils.benchmarks import benchmark

# Benchmark on GPU
benchmark(model="yolov8n.pt", data="coco8.yaml", imgsz=640, half=False, device=0)
yolo benchmark model=yolov8n.pt data='coco8.yaml' imgsz=640 half=False device=0

벀치마크 μΈμˆ˜μ— λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ 인수 μ„Ήμ…˜μ„ μ°Έμ‘°ν•˜μ„Έμš”.

YOLOv8 λͺ¨λΈμ„ λ‹€λ₯Έ ν˜•μ‹μœΌλ‘œ 내보내면 μ–΄λ–€ 이점이 μžˆλ‚˜μš”?

YOLOv8 λͺ¨λΈμ„ ONNX, TensorRT, OpenVINO κ³Ό 같은 λ‹€μ–‘ν•œ ν˜•μ‹μœΌλ‘œ 내보내면 배포 ν™˜κ²½μ— 따라 μ„±λŠ₯을 μ΅œμ ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄

  • ONNX: μ΅œλŒ€ 3배의 CPU 속도 ν–₯상 제곡.
  • TensorRT: μ΅œλŒ€ 5배의 GPU 속도 ν–₯상 제곡.
  • OpenVINO: Intel ν•˜λ“œμ›¨μ–΄μ— νŠΉλ³„νžˆ μ΅œμ ν™”λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ 포맷은 λͺ¨λΈμ˜ 속도와 정확성을 λͺ¨λ‘ ν–₯μƒμ‹œμΌœ λ‹€μ–‘ν•œ μ‹€μ œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ λ”μš± 효율적으둜 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ 내보내기 νŽ˜μ΄μ§€λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

YOLOv8 λͺ¨λΈμ„ 평가할 λ•Œ λ²€μΉ˜λ§ˆν‚Ήμ΄ μ€‘μš”ν•œ μ΄μœ λŠ” λ¬΄μ—‡μΈκ°€μš”?

YOLOv8 λͺ¨λΈμ„ λ²€μΉ˜λ§ˆν‚Ήν•˜λŠ” 것은 μ—¬λŸ¬ 가지 이유둜 ν•„μˆ˜μ μž…λ‹ˆλ‹€:

  • 정보에 μž…κ°ν•œ μ˜μ‚¬ κ²°μ •: 속도와 μ •ν™•μ„± μ‚¬μ΄μ˜ 상좩 관계λ₯Ό μ΄ν•΄ν•©λ‹ˆλ‹€.
  • λ¦¬μ†ŒμŠ€ ν• λ‹Ή: λ‹€μ–‘ν•œ ν•˜λ“œμ›¨μ–΄ μ˜΅μ…˜μ—μ„œ μ„±λŠ₯을 μΈ‘μ •ν•©λ‹ˆλ‹€.
  • μ΅œμ ν™”: νŠΉμ • μ‚¬μš© 사둀에 κ°€μž₯ μ ν•©ν•œ 내보내기 ν˜•μ‹μ„ κ²°μ •ν•©λ‹ˆλ‹€.
  • λΉ„μš© νš¨μœ¨μ„±: 벀치마크 결과에 따라 ν•˜λ“œμ›¨μ–΄ μ‚¬μš©λŸ‰μ„ μ΅œμ ν™”ν•˜μ„Έμš”. mAP50-95, μƒμœ„ 5μœ„ 정확도, μΆ”λ‘  μ‹œκ°„ λ“±μ˜ μ£Όμš” λ©”νŠΈλ¦­μ΄ μ΄λŸ¬ν•œ 평가에 도움이 λ©λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ μ£Όμš” μ§€ν‘œ μ„Ήμ…˜μ„ μ°Έμ‘°ν•˜μ„Έμš”.

YOLOv8 μ—μ„œ μ§€μ›ν•˜λŠ” 내보내기 ν˜•μ‹μ€ 무엇이며 μ–΄λ–€ 이점이 μžˆλ‚˜μš”?

YOLOv8 λŠ” νŠΉμ • ν•˜λ“œμ›¨μ–΄μ™€ μ‚¬μš© 사둀에 맞게 μ‘°μ •λœ λ‹€μ–‘ν•œ 내보내기 ν˜•μ‹μ„ μ§€μ›ν•©λ‹ˆλ‹€:

  • ONNX: CPU μ„±λŠ₯에 κ°€μž₯ 적합.
  • TensorRT: GPU νš¨μœ¨μ„±μ— μ΄μƒμ μž…λ‹ˆλ‹€.
  • OpenVINO: Intel ν•˜λ“œμ›¨μ–΄μ— μ΅œμ ν™”λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  • CoreML & TensorFlow: iOS 및 일반 ML μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μœ μš©ν•©λ‹ˆλ‹€. μ§€μ›λ˜λŠ” ν˜•μ‹κ³Ό 각각의 μž₯점에 λŒ€ν•œ 전체 λͺ©λ‘μ€ μ§€μ›λ˜λŠ” 내보내기 ν˜•μ‹ μ„Ήμ…˜μ„ μ°Έμ‘°ν•˜μ„Έμš”.

YOLOv8 벀치마크λ₯Ό λ―Έμ„Έ μ‘°μ •ν•˜κΈ° μœ„ν•΄ μ–΄λ–€ 인수λ₯Ό μ‚¬μš©ν•  수 μžˆλ‚˜μš”?

벀치마크λ₯Ό μ‹€ν–‰ν•  λ•Œ νŠΉμ • μš”κ΅¬ 사항에 맞게 μ—¬λŸ¬ 인수λ₯Ό μ‚¬μš©μž 지정할 수 μžˆμŠ΅λ‹ˆλ‹€:

  • λͺ¨λΈ: λͺ¨λΈ 파일의 경둜(예: "yolov8n.pt").
  • 데이터: 데이터 집합을 μ •μ˜ν•˜λŠ” YAML 파일의 경둜(예: "coco8.yaml").
  • imgsz: μž…λ ₯ 이미지 크기(단일 μ •μˆ˜ λ˜λŠ” νŠœν”Œ)μž…λ‹ˆλ‹€.
  • 절반: FP16 좔둠을 ν™œμ„±ν™”ν•˜μ—¬ μ„±λŠ₯을 κ°œμ„ ν•©λ‹ˆλ‹€.
  • int8: 에지 λ””λ°”μ΄μŠ€μ— λŒ€ν•œ INT8 μ–‘μžν™”λ₯Ό ν™œμ„±ν™”ν•©λ‹ˆλ‹€.
  • μž₯치: 계산 μž₯치λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€(예: "cpu", "cuda:0").
  • 상세: λ‘œκΉ… μ„ΈλΆ€ 정보 μˆ˜μ€€μ„ μ œμ–΄ν•©λ‹ˆλ‹€. 인수의 전체 λͺ©λ‘μ€ 인수 μ„Ήμ…˜μ„ μ°Έμ‘°ν•˜μ„Έμš”.


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

λŒ“κΈ€