다음을 사용하여 모델 내보내기 Ultralytics YOLO
소개
모델 학습의 궁극적인 목표는 실제 애플리케이션에 배포하는 것입니다. Ultralytics YOLO11 의 내보내기 모드에서는 학습된 모델을 다양한 포맷으로 내보낼 수 있는 다양한 옵션을 제공하여 다양한 플랫폼과 디바이스에 배포할 수 있습니다. 이 포괄적인 가이드는 모델 내보내기의 미묘한 차이를 안내하고 호환성과 성능을 극대화하는 방법을 보여줍니다.
Watch: 사용자 지정 학습된 Ultralytics YOLO 모델을 내보내고 웹캠에서 라이브 추론을 실행하는 방법.
YOLO11 의 내보내기 모드를 선택하는 이유는 무엇인가요?
- 다용도성: 다음을 포함한 여러 형식으로 내보내기 ONNX, TensorRT, CoreML등을 지원합니다.
- 성능: TensorRT 최대 5배의 GPU 속도 향상과 3배의 CPU 속도 향상, ONNX 또는 OpenVINO.
- 호환성: 다양한 하드웨어 및 소프트웨어 환경에서 모델을 범용적으로 배포할 수 있습니다.
- 사용 편의성: 간단한 CLI 및 Python API로 빠르고 간편하게 모델을 내보낼 수 있습니다.
내보내기 모드의 주요 기능
다음은 몇 가지 눈에 띄는 기능입니다:
- 원클릭 내보내기: 다양한 형식으로 내보내기를 위한 간단한 명령어입니다.
- 일괄 내보내기: 일괄 추론이 가능한 모델을 내보냅니다.
- 추론 최적화: 내보낸 모델은 추론 시간을 단축하도록 최적화되어 있습니다.
- 튜토리얼 동영상: 원활한 내보내기 환경을 위한 심층 가이드 및 튜토리얼입니다.
사용 예
ONNX 또는 TensorRT 과 같은 다른 형식으로 YOLO11n 모델을 내보냅니다. 내보내기 인수의 전체 목록은 아래의 인수 섹션을 참조하세요.
예
인수
이 표에는 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 두 가지 방법으로 모델을 내보낼 수 있습니다.
예
다양한 입력 크기 처리와 같은 고급 옵션을 포함하여 프로세스에 대한 자세한 내용은 ONNX 통합 가이드를 참조하세요.
모델 내보내기에 TensorRT 을 사용하면 어떤 이점이 있나요?
TensorRT YOLO11 모델을 로 내보내면 최대 5배의 속도 향상을 달성할 수 있어 실시간 추론 애플리케이션에 이상적입니다. TensorRT GPU
- 다용도성: 특정 하드웨어 설정에 맞게 모델을 최적화하세요.
- 속도: 고급 최적화를 통해 더 빠른 추론을 달성하세요.
- 호환성: NVIDIA 하드웨어와 원활하게 통합됩니다.
TensorRT 통합에 대해 자세히 알아보려면 TensorRT 통합 가이드를 참조하세요.
YOLO11 모델을 내보낼 때 INT8 정량화를 활성화하려면 어떻게 해야 하나요?
INT8 양자화는 특히 엣지 디바이스에서 모델을 압축하고 추론 속도를 높일 수 있는 훌륭한 방법입니다. INT8 양자화를 활성화하는 방법은 다음과 같습니다:
예
INT8 양자화는 다음과 같은 다양한 형식에 적용할 수 있습니다. TensorRT, OpenVINO및 CoreML. 최적의 정량화 결과를 얻으려면 대표자를 제공하십시오. 데이터 세트 를 사용하여 data
매개변수입니다.
모델을 내보낼 때 동적 입력 크기가 중요한 이유는 무엇인가요?
동적 입력 크기를 사용하면 내보낸 모델이 다양한 이미지 크기를 처리할 수 있으므로 다양한 사용 사례에 유연성을 제공하고 처리 효율성을 최적화할 수 있습니다. 다음과 같은 포맷으로 내보낼 때 ONNX 또는 TensorRT와 같은 형식으로 내보낼 때 동적 입력 크기를 활성화하면 모델이 다양한 입력 모양에 원활하게 적응할 수 있습니다.
이 기능을 사용하려면 dynamic=True
플래그를 내보내는 중입니다:
예
동적 입력 크기 조정은 비디오 처리와 같이 입력 크기가 다를 수 있는 애플리케이션이나 다양한 소스의 이미지를 처리할 때 특히 유용합니다.
모델 성능을 최적화하기 위해 고려해야 할 주요 내보내기 인수는 무엇인가요?
내보내기 인수를 이해하고 구성하는 것은 모델 성능을 최적화하는 데 매우 중요합니다:
format:
내보낸 모델의 대상 형식(예,onnx
,torchscript
,tensorflow
).imgsz:
모델 입력에 대한 원하는 이미지 크기(예640
또는(height, width)
).half:
FP16 양자화를 지원하여 모델 크기를 줄이고 추론 속도를 높일 수 있습니다.optimize:
모바일 또는 제한된 환경을 위한 특정 최적화를 적용합니다.int8:
INT8 양자화를 지원하여 다음과 같은 경우에 매우 유용합니다. 엣지 AI 배포.
특정 하드웨어 플랫폼에 배포하려면 다음과 같은 특수 내보내기 형식을 사용하는 것이 좋습니다. TensorRT 와 같은 특수 내보내기 형식을 사용하는 것이 좋습니다, CoreML 또는 Google Coral 디바이스용 Edge TPU 같은 특수 내보내기 형식을 사용하는 것이 좋습니다.