콘텐츠로 건너뛰기

다음을 사용하여 모델 내보내기 Ultralytics YOLO

Ultralytics YOLO 에코시스템 및 통합

소개

모델 학습의 궁극적인 목표는 실제 애플리케이션에 배포하는 것입니다. Ultralytics YOLO11 의 내보내기 모드에서는 학습된 모델을 다양한 포맷으로 내보낼 수 있는 다양한 옵션을 제공하여 다양한 플랫폼과 디바이스에 배포할 수 있습니다. 이 포괄적인 가이드는 모델 내보내기의 미묘한 차이를 안내하고 호환성과 성능을 극대화하는 방법을 보여줍니다.



Watch: 사용자 지정 학습된 Ultralytics YOLO 모델을 내보내고 웹캠에서 라이브 추론을 실행하는 방법.

YOLO11 의 내보내기 모드를 선택하는 이유는 무엇인가요?

  • 다용도성: 다음을 포함한 여러 형식으로 내보내기 ONNX, TensorRT, CoreML등을 지원합니다.
  • 성능: TensorRT 최대 5배의 GPU 속도 향상과 3배의 CPU 속도 향상, ONNX 또는 OpenVINO.
  • 호환성: 다양한 하드웨어 및 소프트웨어 환경에서 모델을 범용적으로 배포할 수 있습니다.
  • 사용 편의성: 간단한 CLI 및 Python API로 빠르고 간편하게 모델을 내보낼 수 있습니다.

내보내기 모드의 주요 기능

다음은 몇 가지 눈에 띄는 기능입니다:

  • 원클릭 내보내기: 다양한 형식으로 내보내기를 위한 간단한 명령어입니다.
  • 일괄 내보내기: 일괄 추론이 가능한 모델을 내보냅니다.
  • 추론 최적화: 내보낸 모델은 추론 시간을 단축하도록 최적화되어 있습니다.
  • 튜토리얼 동영상: 원활한 내보내기 환경을 위한 심층 가이드 및 튜토리얼입니다.

  • 내보내기 ONNX 또는 OpenVINO 로 내보내면 CPU 속도가 최대 3배 빨라집니다.
  • 내보내기 TensorRT 로 내보내면 GPU 속도가 최대 5배 빨라집니다.

사용 예

ONNX 또는 TensorRT 과 같은 다른 형식으로 YOLO11n 모델을 내보냅니다. 내보내기 인수의 전체 목록은 아래의 인수 섹션을 참조하세요.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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=yolo11n.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', 'engine' TensorRT) 등을 사용할 수 있습니다. 각 형식은 서로 다른 배포 환경.
imgsz int 또는 tuple 640 모델 입력에 원하는 이미지 크기입니다. 정사각형 이미지의 경우 정수일 수 있습니다(예 640 640×640의 경우) 또는 튜플( (height, width) 를 입력합니다.
keras bool False 에 대해 Keras 형식으로 내보내기를 활성화합니다. TensorFlow SavedModel 로 내보낼 수 있도록 설정하여 TensorFlow 서비스 및 API와의 호환성을 제공합니다.
optimize bool False TorchScript 내보낼 때 모바일 기기에 대한 최적화를 적용하여 모델 크기를 줄이고 추론 성능을 개선할 수 있습니다. NCNN 형식 또는 CUDA 장치와 호환되지 않습니다.
half bool False FP16(반정밀) 양자화를 활성화하여 모델 크기를 줄이고 지원되는 하드웨어에서 추론 속도를 높일 수 있습니다. INT8 양자화 또는 ONNX CPU 내보내기와는 호환되지 않습니다.
int8 bool False INT8 양자화를 활성화하여 모델을 더욱 압축하고 주로 에지 디바이스의 경우 정확도 손실을 최소화하면서 추론 속도를 높입니다. TensorRT 함께 사용할 경우, 학습 후 양자화(PTQ)를 수행합니다.
dynamic bool False ONNX, TensorRT 및 OpenVINO 내보내기를 위한 동적 입력 크기를 허용하여 다양한 이미지 크기를 유연하게 처리할 수 있습니다. 자동으로 True 를 INT8과 함께 사용하는 경우.
simplify bool True 다음을 사용하여 ONNX 내보내기에 대한 모델 그래프를 단순화합니다. onnxslim를 사용하여 추론 엔진의 성능과 호환성을 개선할 수 있습니다.
opset int None 다른 운영체제와의 호환성을 위해 ONNX 옵셋 버전을 지정합니다. ONNX 파서 및 런타임과의 호환성을 지정합니다. 설정하지 않으면 지원되는 최신 버전을 사용합니다.
workspace float 또는 None None 다음에 대한 최대 작업 공간 크기를 GiB 단위로 설정합니다. TensorRT 최적화를 통해 메모리 사용량과 성능의 균형을 맞춥니다. 사용 None 를 통해 최대 장치까지 TensorRT 로 자동 할당할 수 있습니다.
nms bool False 지원되는 경우 내보낸 모델에 NMS(비최대 억제)를 추가하여( 내보내기 형식 참조) 탐지 후 처리 효율을 개선합니다. 엔드투엔드 모델에는 사용할 수 없습니다.
batch int 1 내보내기 모델 일괄 추론 크기 또는 내보낸 모델이 동시에 처리할 최대 이미지 수를 지정합니다. predict 모드로 설정합니다. Edge TPU 내보내기의 경우 이 값은 자동으로 1로 설정됩니다.
device str None 내보낼 장치를 지정합니다: GPU (device=0), CPU (device=cpu), 애플 실리콘의 경우 MPS (device=mps) 또는 DLA for NVIDIA Jetson(device=dla:0 또는 device=dla:1). TensorRT 내보내기는 자동으로 GPU 사용합니다.
data str 'coco8.yaml' 경로 데이터 세트 구성 파일(기본값: coco8.yaml), INT8 양자화 보정에 필수적입니다. INT8을 활성화하여 지정하지 않으면 기본 데이터 세트가 할당됩니다.

이러한 매개변수를 조정하면 배포 환경, 하드웨어 제약 조건, 성능 목표 등 특정 요구사항에 맞게 내보내기 프로세스를 사용자 지정할 수 있습니다. 모델 크기, 속도, 정확도 간에 최적의 균형을 이루려면 적절한 형식과 설정을 선택하는 것이 중요합니다.

내보내기 형식

사용 가능한 YOLO11 내보내기 형식은 아래 표에 나와 있습니다. 내보내는 형식은 format 인수, 즉 format='onnx' 또는 format='engine'. 내보낸 모델에서 직접 예측하거나 검증할 수 있습니다. yolo predict model=yolo11n.onnx. 내보내기가 완료된 후 모델에 대한 사용 예가 표시됩니다.

형식 format 인수 모델 메타데이터 인수
PyTorch - yolo11n.pt -
TorchScript torchscript yolo11n.torchscript imgsz, optimize, nms, batch
ONNX onnx yolo11n.onnx imgsz, half, dynamic, simplify, opset, nms, batch
OpenVINO openvino yolo11n_openvino_model/ imgsz, half, dynamic, int8, nms, batch, data
TensorRT engine yolo11n.engine imgsz, half, dynamic, simplify, workspace, int8, nms, batch, data
CoreML coreml yolo11n.mlpackage imgsz, half, int8, nms, batch
TF SavedModel saved_model yolo11n_saved_model/ imgsz, keras, int8, nms, batch
TF GraphDef pb yolo11n.pb imgsz, batch
TF Lite tflite yolo11n.tflite imgsz, half, int8, nms, batch, data
TF Edge TPU edgetpu yolo11n_edgetpu.tflite imgsz
TF.js tfjs yolo11n_web_model/ imgsz, half, int8, nms, batch
PaddlePaddle paddle yolo11n_paddle_model/ imgsz, batch
MNN mnn yolo11n.mnn imgsz, batch, int8, half
NCNN ncnn yolo11n_ncnn_model/ imgsz, half, batch
IMX500 imx yolov8n_imx_model/ imgsz, int8, data
RKNN rknn yolo11n_rknn_model/ imgsz, batch, name

자주 묻는 질문

YOLO11 모델을 ONNX 형식으로 내보내려면 어떻게 하나요?

YOLO11 모델을 ONNX 형식으로 내보내는 방법은 Ultralytics 을 사용하면 간단합니다. Python 과 CLI 두 가지 방법으로 모델을 내보낼 수 있습니다.

from ultralytics import YOLO

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

다양한 입력 크기 처리와 같은 고급 옵션을 포함하여 프로세스에 대한 자세한 내용은 ONNX 통합 가이드를 참조하세요.

모델 내보내기에 TensorRT 을 사용하면 어떤 이점이 있나요?

TensorRT YOLO11 모델을 로 내보내면 최대 5배의 속도 향상을 달성할 수 있어 실시간 추론 애플리케이션에 이상적입니다. TensorRT GPU

  • 다용도성: 특정 하드웨어 설정에 맞게 모델을 최적화하세요.
  • 속도: 고급 최적화를 통해 더 빠른 추론을 달성하세요.
  • 호환성: NVIDIA 하드웨어와 원활하게 통합됩니다.

TensorRT 통합에 대해 자세히 알아보려면 TensorRT 통합 가이드를 참조하세요.

YOLO11 모델을 내보낼 때 INT8 정량화를 활성화하려면 어떻게 해야 하나요?

INT8 양자화는 특히 엣지 디바이스에서 모델을 압축하고 추론 속도를 높일 수 있는 훌륭한 방법입니다. INT8 양자화를 활성화하는 방법은 다음과 같습니다:

from ultralytics import YOLO

model = YOLO("yolo11n.pt")  # Load a model
model.export(format="engine", int8=True)
yolo export model=yolo11n.pt format=engine int8=True # export TensorRT model with INT8 quantization

INT8 양자화는 다음과 같은 다양한 형식에 적용할 수 있습니다. TensorRT, OpenVINOCoreML. 최적의 정량화 결과를 얻으려면 대표자를 제공하십시오. 데이터 세트 를 사용하여 data 매개변수입니다.

모델을 내보낼 때 동적 입력 크기가 중요한 이유는 무엇인가요?

동적 입력 크기를 사용하면 내보낸 모델이 다양한 이미지 크기를 처리할 수 있으므로 다양한 사용 사례에 유연성을 제공하고 처리 효율성을 최적화할 수 있습니다. 다음과 같은 포맷으로 내보낼 때 ONNX 또는 TensorRT와 같은 형식으로 내보낼 때 동적 입력 크기를 활성화하면 모델이 다양한 입력 모양에 원활하게 적응할 수 있습니다.

이 기능을 사용하려면 dynamic=True 플래그를 내보내는 중입니다:

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
model.export(format="onnx", dynamic=True)
yolo export model=yolo11n.pt format=onnx dynamic=True

동적 입력 크기 조정은 비디오 처리와 같이 입력 크기가 다를 수 있는 애플리케이션이나 다양한 소스의 이미지를 처리할 때 특히 유용합니다.

모델 성능을 최적화하기 위해 고려해야 할 주요 내보내기 인수는 무엇인가요?

내보내기 인수를 이해하고 구성하는 것은 모델 성능을 최적화하는 데 매우 중요합니다:

  • format: 내보낸 모델의 대상 형식(예, onnx, torchscript, tensorflow).
  • imgsz: 모델 입력에 대한 원하는 이미지 크기(예 640 또는 (height, width)).
  • half: FP16 양자화를 지원하여 모델 크기를 줄이고 추론 속도를 높일 수 있습니다.
  • optimize: 모바일 또는 제한된 환경을 위한 특정 최적화를 적용합니다.
  • int8: INT8 양자화를 지원하여 다음과 같은 경우에 매우 유용합니다. 엣지 AI 배포.

특정 하드웨어 플랫폼에 배포하려면 다음과 같은 특수 내보내기 형식을 사용하는 것이 좋습니다. TensorRT 와 같은 특수 내보내기 형식을 사용하는 것이 좋습니다, CoreML 또는 Google Coral 디바이스용 Edge TPU 같은 특수 내보내기 형식을 사용하는 것이 좋습니다.

📅1 년 전 생성됨 ✏️ 업데이트됨 0일 전

댓글