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

λ‹€μŒμ„ μ‚¬μš©ν•˜μ—¬ λͺ¨λΈ 내보내기 Ultralytics YOLO

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

μ†Œκ°œ

λͺ¨λΈ ν•™μŠ΅μ˜ ꢁ극적인 λͺ©ν‘œλŠ” μ‹€μ œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— λ°°ν¬ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. Ultralytics YOLOv8 의 내보내기 λͺ¨λ“œμ—μ„œλŠ” ν•™μŠ΅λœ λͺ¨λΈμ„ λ‹€μ–‘ν•œ 포맷으둜 내보낼 수 μžˆλŠ” λ‹€μ–‘ν•œ μ˜΅μ…˜μ„ μ œκ³΅ν•˜μ—¬ λ‹€μ–‘ν•œ ν”Œλž«νΌκ³Ό λ””λ°”μ΄μŠ€μ— 배포할 수 μžˆμŠ΅λ‹ˆλ‹€. 이 포괄적인 κ°€μ΄λ“œλŠ” λͺ¨λΈ λ‚΄λ³΄λ‚΄κΈ°μ˜ λ―Έλ¬˜ν•œ 차이λ₯Ό μ•ˆλ‚΄ν•˜κ³  ν˜Έν™˜μ„±κ³Ό μ„±λŠ₯을 κ·ΉλŒ€ν™”ν•˜λŠ” 방법을 λ³΄μ—¬μ€λ‹ˆλ‹€.



Watch: μ‚¬μš©μž 지정 ν•™μŠ΅λœ Ultralytics YOLOv8 λͺ¨λΈμ„ 내보내고 μ›ΉμΊ μ—μ„œ 라이브 좔둠을 μ‹€ν–‰ν•˜λŠ” 방법.

YOLOv8 의 내보내기 λͺ¨λ“œλ₯Ό μ„ νƒν•˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μΈκ°€μš”?

  • λ‹€μš©λ„μ„±: ONNX , TensorRT, CoreML, λ“± λ‹€μ–‘ν•œ ν˜•μ‹μœΌλ‘œ 내보낼 수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ„±λŠ₯: TensorRT 으둜 μ΅œλŒ€ 5배의 GPU 속도 ν–₯상, ONNX λ˜λŠ” OpenVINO 으둜 3배의 CPU 속도 ν–₯상.
  • ν˜Έν™˜μ„±: λ‹€μ–‘ν•œ ν•˜λ“œμ›¨μ–΄ 및 μ†Œν”„νŠΈμ›¨μ–΄ ν™˜κ²½μ—μ„œ λͺ¨λΈμ„ λ²”μš©μ μœΌλ‘œ 배포할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ‚¬μš© νŽΈμ˜μ„±: κ°„λ‹¨ν•œ CLI 및 Python API둜 λΉ λ₯΄κ³  κ°„νŽΈν•˜κ²Œ λͺ¨λΈμ„ 내보낼 수 μžˆμŠ΅λ‹ˆλ‹€.

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

λ‹€μŒμ€ λͺ‡ 가지 λˆˆμ— λ„λŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€:

  • 원클릭 내보내기: λ‹€μ–‘ν•œ ν˜•μ‹μœΌλ‘œ 내보내기λ₯Ό μœ„ν•œ κ°„λ‹¨ν•œ λͺ…λ Ήμ–΄μž…λ‹ˆλ‹€.
  • 일괄 내보내기: 일괄 좔둠이 κ°€λŠ₯ν•œ λͺ¨λΈμ„ λ‚΄λ³΄λƒ…λ‹ˆλ‹€.
  • μΆ”λ‘  μ΅œμ ν™”: 내보낸 λͺ¨λΈμ€ 더 λΉ λ₯Έ μΆ”λ‘  μ‹œκ°„μ„ μœ„ν•΄ μ΅œμ ν™”λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.
  • νŠœν† λ¦¬μ–Ό λ™μ˜μƒ: μ›ν™œν•œ 내보내기 ν™˜κ²½μ„ μœ„ν•œ 심측 κ°€μ΄λ“œ 및 νŠœν† λ¦¬μ–Όμž…λ‹ˆλ‹€.

팁

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

μ‚¬μš© 예

YOLOv8n λͺ¨λΈμ„ ONNX λ˜λŠ” TensorRT κ³Ό 같은 λ‹€λ₯Έ ν˜•μ‹μœΌλ‘œ 내보내기 내보내기 인수의 전체 λͺ©λ‘μ€ μ•„λž˜ 인수 μ„Ήμ…˜μ„ μ°Έμ‘°ν•˜μ„Έμš”.

예

from ultralytics import YOLO

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

인수

이 ν‘œμ—λŠ” YOLO λͺ¨λΈμ„ λ‹€μ–‘ν•œ ν˜•μ‹μœΌλ‘œ λ‚΄λ³΄λ‚΄λŠ” 데 μ‚¬μš©ν•  수 μžˆλŠ” ꡬ성 및 μ˜΅μ…˜μ΄ μžμ„Ένžˆ μ„€λͺ…λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ 섀정은 내보낸 λͺ¨λΈμ˜ μ„±λŠ₯, 크기 및 λ‹€μ–‘ν•œ ν”Œλž«νΌκ³Ό ν™˜κ²½μ—μ„œμ˜ ν˜Έν™˜μ„±μ„ μ΅œμ ν™”ν•˜λŠ” 데 맀우 μ€‘μš”ν•©λ‹ˆλ‹€. μ μ ˆν•œ ꡬ성을 톡해 λͺ¨λΈμ΄ 졜적의 νš¨μœ¨μ„±μœΌλ‘œ μ˜λ„ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— 배포될 수 μžˆλ„λ‘ μ€€λΉ„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

인수 μœ ν˜• κΈ°λ³Έκ°’ μ„€λͺ…
format str 'torchscript' 내보낸 λͺ¨λΈμ˜ λŒ€μƒ ν˜•μ‹μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. 'onnx', 'torchscript', 'tensorflow'등을 μ‚¬μš©ν•˜μ—¬ λ‹€μ–‘ν•œ 배포 ν™˜κ²½κ³Όμ˜ ν˜Έν™˜μ„±μ„ μ •μ˜ν•©λ‹ˆλ‹€.
imgsz int λ˜λŠ” tuple 640 λͺ¨λΈ μž…λ ₯에 μ‚¬μš©ν•  μ›ν•˜λŠ” 이미지 ν¬κΈ°μž…λ‹ˆλ‹€. μ •μ‚¬κ°ν˜• μ΄λ―Έμ§€μ˜ 경우 μ •μˆ˜ λ˜λŠ” νŠœν”ŒμΌ 수 μžˆμŠ΅λ‹ˆλ‹€. (height, width) λ₯Ό μž…λ ₯ν•©λ‹ˆλ‹€.
keras bool False TensorFlow SavedModel 에 λŒ€ν•΄ Keras ν˜•μ‹μœΌλ‘œ 내보내기λ₯Ό ν™œμ„±ν™”ν•˜μ—¬ TensorFlow μ„œλΉ„μŠ€ 및 APIμ™€μ˜ ν˜Έν™˜μ„±μ„ μ œκ³΅ν•©λ‹ˆλ‹€.
optimize bool False TorchScript 으둜 내보낼 λ•Œ λͺ¨λ°”일 μž₯μΉ˜μ— λŒ€ν•œ μ΅œμ ν™”λ₯Ό μ μš©ν•˜μ—¬ λͺ¨λΈ 크기λ₯Ό 쀄이고 μ„±λŠ₯을 κ°œμ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
half bool False FP16(λ°˜μ •λ°€) μ–‘μžν™”λ₯Ό ν™œμ„±ν™”ν•˜μ—¬ λͺ¨λΈ 크기λ₯Ό 쀄이고 μ§€μ›λ˜λŠ” ν•˜λ“œμ›¨μ–΄μ—μ„œ μΆ”λ‘  속도λ₯Ό 높일 수 μžˆμŠ΅λ‹ˆλ‹€.
int8 bool False INT8 μ–‘μžν™”λ₯Ό ν™œμ„±ν™”ν•˜μ—¬ λͺ¨λΈμ„ λ”μš± μ••μΆ•ν•˜κ³  주둜 에지 λ””λ°”μ΄μŠ€μ˜ 경우 정확도 손싀을 μ΅œμ†Œν™”ν•˜λ©΄μ„œ μΆ”λ‘  속도λ₯Ό λ†’μž…λ‹ˆλ‹€.
dynamic bool False ONNX 및 TensorRT 내보내기에 동적 μž…λ ₯ 크기λ₯Ό ν—ˆμš©ν•˜μ—¬ λ‹€μ–‘ν•œ 이미지 크기λ₯Ό μœ μ—°ν•˜κ²Œ μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
simplify bool False ONNX λ‚΄λ³΄λ‚΄κΈ°μ˜ λͺ¨λΈ κ·Έλž˜ν”„λ₯Ό λ‹¨μˆœν™”ν•˜μ—¬ 잠재적으둜 μ„±λŠ₯κ³Ό ν˜Έν™˜μ„±μ„ κ°œμ„ ν•©λ‹ˆλ‹€.
opset int None λ‹€λ₯Έ ONNX νŒŒμ„œ 및 λŸ°νƒ€μž„κ³Όμ˜ ν˜Έν™˜μ„±μ„ μœ„ν•΄ ONNX μ˜΅μ…‹ 버전을 μ§€μ •ν•©λ‹ˆλ‹€. μ„€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ μ§€μ›λ˜λŠ” μ΅œμ‹  버전을 μ‚¬μš©ν•©λ‹ˆλ‹€.
workspace float 4.0 TensorRT μ΅œμ ν™”λ₯Ό μœ„ν•œ μ΅œλŒ€ μž‘μ—… 곡간 크기λ₯Ό GB λ‹¨μœ„λ‘œ μ„€μ •ν•˜μ—¬ λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰κ³Ό μ„±λŠ₯의 κ· ν˜•μ„ 맞μΆ₯λ‹ˆλ‹€.
nms bool False μ •ν™•ν•˜κ³  효율적인 탐지 ν›„μ²˜λ¦¬λ₯Ό μœ„ν•΄ ν•„μˆ˜μ μΈ λΉ„μ΅œλŒ€ μ–΅μ œ(NMS)λ₯Ό CoreML 내보내기에 μΆ”κ°€ν•©λ‹ˆλ‹€.
batch int 1 내보내기 λͺ¨λΈ 일괄 μΆ”λ‘  크기 λ˜λŠ” 내보낸 λͺ¨λΈμ΄ λ™μ‹œμ— μ²˜λ¦¬ν•  μ΅œλŒ€ 이미지 수λ₯Ό μ§€μ •ν•©λ‹ˆλ‹€. predict λͺ¨λ“œλ‘œ μ „ν™˜ν•©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ λ§€κ°œλ³€μˆ˜λ₯Ό μ‘°μ •ν•˜λ©΄ 배포 ν™˜κ²½, ν•˜λ“œμ›¨μ–΄ μ œμ•½ 쑰건, μ„±λŠ₯ λͺ©ν‘œ λ“± νŠΉμ • μš”κ΅¬μ‚¬ν•­μ— 맞게 내보내기 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‚¬μš©μž 지정할 수 μžˆμŠ΅λ‹ˆλ‹€. λͺ¨λΈ 크기, 속도, 정확도 간에 졜적의 κ· ν˜•μ„ 이루렀면 μ μ ˆν•œ ν˜•μ‹κ³Ό 섀정을 μ„ νƒν•˜λŠ” 것이 ν•„μˆ˜μ μž…λ‹ˆλ‹€.

내보내기 ν˜•μ‹

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

ν˜•μ‹ 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, 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, batch
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


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

λŒ“κΈ€