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

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

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

μ†Œκ°œ

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



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

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

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

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

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

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

  • ONNX: 졜적의 CPU μ„±λŠ₯을 μœ„ν•΄
  • TensorRT: GPU νš¨μœ¨μ„± κ·ΉλŒ€ν™”
  • OpenVINO: 인텔 ν•˜λ“œμ›¨μ–΄ μ΅œμ ν™”μš©
  • 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 μ„ΈλΆ€ μ •λ³΄μ—μ„œ 내보내기 νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•©λ‹ˆλ‹€.



Created 2023-11-12, Updated 2024-06-10
Authors: glenn-jocher (16), Burhan-Q (3), RizwanMunawar (1), Laughing-q (1), maianumerosky (1)

λŒ“κΈ€