Ultralytics YOLO를 사용한 모델 내보내기
소개
모델 훈련의 궁극적인 목표는 실제 애플리케이션에 배포하는 것입니다. Ultralytics YOLO11의 내보내기 모드는 훈련된 모델을 다양한 형식으로 내보낼 수 있는 다양한 옵션을 제공하여 다양한 플랫폼 및 장치에서 배포할 수 있도록 합니다. 이 종합 가이드는 모델 내보내기의 뉘앙스를 안내하고 최대 호환성 및 성능을 달성하는 방법을 보여주는 것을 목표로 합니다.
참고: 사용자 정의 훈련된 Ultralytics YOLO 모델을 내보내고 웹캠에서 실시간 추론을 실행하는 방법.
YOLO11의 내보내기 모드를 선택해야 하는 이유?
- 다양성: ONNX, TensorRT, CoreML 등을 포함한 다양한 형식으로 내보내기 할 수 있습니다.
- 성능: TensorRT로 최대 5배의 GPU 속도 향상을 얻고 ONNX 또는 OpenVINO로 3배의 CPU 속도 향상을 얻으십시오.
- 호환성: 수많은 하드웨어 및 소프트웨어 환경에서 모델을 보편적으로 배포할 수 있도록 만들기.
- 사용 편의성: 빠르고 간단한 모델 내보내기를 위한 간단한 CLI 및 python API를 제공합니다.
내보내기 모드의 주요 기능
다음은 몇 가지 뛰어난 기능입니다.
- 원클릭 내보내기: 다양한 형식으로 내보내기 위한 간단한 명령을 제공합니다.
- 배치 내보내기: 배치 추론이 가능한 모델을 내보냅니다.
- 최적화된 추론: 내보낸 모델은 더 빠른 추론 시간을 위해 최적화되어 있습니다.
- 튜토리얼 비디오: 원활한 내보내기 경험을 위한 심층 가이드 및 튜토리얼을 제공합니다.
사용 예시
YOLO11n 모델을 ONNX 또는 TensorRT와 같은 다른 형식으로 내보냅니다. 내보내기 인수의 전체 목록은 아래 인수 섹션을 참조하십시오.
예시
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 |
TensorFlow SavedModel에 대한 Keras 형식으로 내보내기를 활성화하여 TensorFlow 제공 및 API와의 호환성을 제공합니다. |
optimize |
bool |
False |
TorchScript로 내보낼 때 모바일 장치에 대한 최적화를 적용하여 모델 크기를 줄이고 추론 성능을 향상시킬 수 있습니다. NCNN 형식 또는 CUDA 장치와는 호환되지 않습니다. |
half |
bool |
False |
FP16 (반정밀도) 양자화를 활성화하여 모델 크기를 줄이고 지원되는 하드웨어에서 추론 속도를 잠재적으로 향상시킵니다. ONNX의 INT8 양자화 또는 CPU 전용 내보내기와는 호환되지 않습니다. |
int8 |
bool |
False |
INT8 양자화를 활성화하여 모델을 더욱 압축하고 주로 에지 장치에서 정확도 손실을 최소화하면서 추론 속도를 높입니다. TensorRT와 함께 사용하면 사후 훈련 양자화(PTQ)를 수행합니다. |
dynamic |
bool |
False |
ONNX, TensorRT 및 OpenVINO 내보내기를 위한 동적 입력 크기를 허용하여 다양한 이미지 크기를 처리하는 유연성을 향상시킵니다. 자동으로 다음으로 설정됩니다. True INT8로 TensorRT를 사용할 때. |
simplify |
bool |
True |
ONNX 내보내기를 위해 모델 그래프를 단순화합니다. onnxslim , 추론 엔진과의 성능 및 호환성을 향상시킬 수 있습니다. |
opset |
int |
None |
다양한 ONNX 파서 및 런타임과의 호환성을 위해 ONNX opset 버전을 지정합니다. 설정하지 않으면 지원되는 최신 버전이 사용됩니다. |
workspace |
float 또는 None |
None |
다음에 대한 최대 작업 공간 크기를 GiB 단위로 설정합니다. TensorRT 메모리 사용량과 성능의 균형을 맞추는 최적화. 사용 None TensorRT에 의한 장치 최대값까지 자동 할당을 위해. |
nms |
bool |
False |
지원되는 경우 내보낸 모델에 NMS(Non-Maximum Suppression)를 추가하여(내보내기 형식 참조) detection 후 처리 효율성을 개선합니다. end2end 모델에는 사용할 수 없습니다. |
batch |
int |
1 |
내보낸 모델이 동시에 처리할 배치 추론 크기 또는 최대 이미지 수를 지정합니다. predict 모드. Edge TPU 내보내기의 경우, 이는 자동으로 1로 설정됩니다. |
device |
str |
None |
내보내기할 장치를 지정합니다: GPU (device=0 ), CPU (device=cpu ), Apple Silicon용 MPS (device=mps ) 또는 NVIDIA Jetson용 DLA (device=dla:0 또는 device=dla:1 ). TensorRT 내보내기는 자동으로 GPU를 사용합니다. |
data |
str |
'coco8.yaml' |
다음 경로: 데이터 세트 구성 파일(기본값: coco8.yaml ), INT8 양자화 보정에 필수적입니다. INT8을 활성화한 상태에서 지정하지 않으면 기본 데이터 세트가 할당됩니다. |
fraction |
float |
1.0 |
INT8 양자화 보정에 사용할 데이터 세트의 비율을 지정합니다. 전체 데이터 세트의 하위 집합에서 보정할 수 있으므로 실험이나 리소스가 제한적일 때 유용합니다. INT8을 활성화한 상태에서 지정하지 않으면 전체 데이터 세트가 사용됩니다. |
이러한 파라미터를 조정하면 배포 환경, 하드웨어 제약 조건 및 성능 목표와 같은 특정 요구 사항에 맞게 내보내기 프로세스를 사용자 정의할 수 있습니다. 적절한 형식과 설정을 선택하는 것은 모델 크기, 속도 및 정확도 간의 최상의 균형을 달성하는 데 필수적입니다.
내보내기 형식
사용 가능한 YOLO11 내보내기 형식은 아래 표에 있습니다. 다음을 사용하여 모든 형식으로 내보낼 수 있습니다. format
인수, 즉 format='onnx'
또는 format='engine'
입니다. 내보낸 모델에서 직접 예측하거나 유효성을 검사할 수 있습니다(예: yolo predict model=yolo11n.onnx
). 사용 예시는 내보내기가 완료된 후 모델에 대해 표시됩니다.
형식 | format 인수 |
모델 | 메타데이터 | 인수 |
---|---|---|---|---|
PyTorch | - | yolo11n.pt |
✅ | - |
TorchScript | torchscript |
yolo11n.torchscript |
✅ | imgsz , half , dynamic , optimize , nms , batch , device |
ONNX | onnx |
yolo11n.onnx |
✅ | imgsz , half , dynamic , simplify , opset , nms , batch , device |
OpenVINO | openvino |
yolo11n_openvino_model/ |
✅ | imgsz , half , dynamic , int8 , nms , batch , data , fraction , device |
TensorRT | engine |
yolo11n.engine |
✅ | imgsz , half , dynamic , simplify , workspace , int8 , nms , batch , data , fraction , device |
CoreML | coreml |
yolo11n.mlpackage |
✅ | imgsz , half , int8 , nms , batch , device |
TF SavedModel | saved_model |
yolo11n_saved_model/ |
✅ | imgsz , keras , int8 , nms , batch , device |
TF GraphDef | pb |
yolo11n.pb |
❌ | imgsz , batch , device |
TF Lite | tflite |
yolo11n.tflite |
✅ | imgsz , half , int8 , nms , batch , data , fraction , device |
TF Edge TPU | edgetpu |
yolo11n_edgetpu.tflite |
✅ | imgsz , device |
TF.js | tfjs |
yolo11n_web_model/ |
✅ | imgsz , half , int8 , nms , batch , device |
PaddlePaddle | paddle |
yolo11n_paddle_model/ |
✅ | imgsz , batch , device |
MNN | mnn |
yolo11n.mnn |
✅ | imgsz , batch , int8 , half , device |
NCNN | ncnn |
yolo11n_ncnn_model/ |
✅ | imgsz , half , batch , device |
IMX500 | imx |
yolo11n_imx_model/ |
✅ | imgsz , int8 , data , fraction , device |
RKNN | rknn |
yolo11n_rknn_model/ |
✅ | imgsz , batch , name , device |
FAQ
YOLO11 모델을 ONNX 형식으로 내보내려면 어떻게 해야 하나요?
Ultralytics를 사용하면 YOLO11 모델을 ONNX 형식으로 간단하게 내보낼 수 있습니다. 모델 내보내기를 위한 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를 사용하면 상당한 성능 향상을 얻을 수 있습니다. TensorRT로 내보낸 YOLO11 모델은 최대 5배의 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, OpenVINO및 CoreML입니다. 최적의 양자화 결과를 얻으려면 대표적인 데이터 세트 다음을 사용하여 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 배포.
특정 하드웨어 플랫폼에 배포하려면 NVIDIA GPU용 TensorRT, Apple 장치용 CoreML 또는 Google Coral 장치용 Edge TPU와 같은 특수 내보내기 형식을 사용하는 것이 좋습니다.