콘텐츠로 건너뛰기

Ultralytics YOLO를 사용한 모델 내보내기

Ultralytics YOLO 생태계 및 통합

소개

모델 훈련의 궁극적인 목표는 실제 애플리케이션에 배포하는 것입니다. Ultralytics YOLO26의 Export 모드는 훈련된 모델을 다양한 형식으로 export할 수 있는 다재다능한 옵션을 제공하여 여러 플랫폼과 장치에 배포할 수 있도록 합니다. 이 포괄적인 가이드는 모델 export의 미묘한 차이를 안내하고, 최대 호환성과 성능을 달성하는 방법을 보여줍니다.



참고: 사용자 정의 훈련된 Ultralytics YOLO 모델을 내보내고 웹캠에서 실시간 추론을 실행하는 방법.

YOLO26의 Export 모드를 선택하는 이유는 무엇인가요?

  • 다양성: ONNX, TensorRT, CoreML 등을 포함한 다양한 형식으로 내보내기 할 수 있습니다.
  • 성능: TensorRT로 최대 5배의 GPU 속도 향상을 얻고 ONNX 또는 OpenVINO로 3배의 CPU 속도 향상을 얻으십시오.
  • 호환성: 수많은 하드웨어 및 소프트웨어 환경에서 모델을 보편적으로 배포할 수 있도록 만들기.
  • 사용 편의성: 빠르고 간단한 모델 내보내기를 위한 간단한 CLI 및 python API를 제공합니다.

내보내기 모드의 주요 기능

다음은 몇 가지 뛰어난 기능입니다.

  • 원클릭 내보내기: 다양한 형식으로 내보내기 위한 간단한 명령을 제공합니다.
  • 배치 내보내기: 배치 추론이 가능한 모델을 내보냅니다.
  • 최적화된 추론: 내보낸 모델은 더 빠른 추론 시간을 위해 최적화되어 있습니다.
  • 튜토리얼 비디오: 원활한 내보내기 경험을 위한 심층 가이드 및 튜토리얼을 제공합니다.

  • ONNX 또는 OpenVINO로 내보내어 CPU 속도를 최대 3배까지 향상시킵니다.
  • TensorRT로 내보내어 GPU 속도를 최대 5배까지 향상시킵니다.

사용 예시

YOLO26n 모델을 ONNX 또는 TensorRT와 같은 다른 형식으로 export하십시오. export 인수의 전체 목록은 아래 인수 섹션을 참조하십시오.

예시

from ultralytics import YOLO

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

인수

이 표는 YOLO 모델을 다양한 형식으로 내보내는 데 사용할 수 있는 구성 및 옵션을 자세히 설명합니다. 이러한 설정은 다양한 플랫폼 및 환경에서 내보낸 모델의 성능, 크기 및 호환성을 최적화하는 데 매우 중요합니다. 적절한 구성을 통해 모델이 최적의 효율성으로 의도한 애플리케이션에 배포할 준비가 되었는지 확인할 수 있습니다.

인수유형기본값설명
formatstr'torchscript'내보낸 모델의 대상 형식(예: 'onnx', 'torchscript', 'engine' (TensorRT) 등. 각 포맷은 다양한 환경과의 호환성을 지원합니다. 배포 환경.
imgszint 또는 tuple640모델 입력에 필요한 이미지 크기입니다. 정사각형 이미지의 경우 정수일 수 있습니다 (예: 640 640×640) 또는 튜플 (height, width) 특정 크기의 경우.
kerasboolFalseTensorFlow SavedModel에 대한 Keras 형식으로 내보내기를 활성화하여 TensorFlow 제공 및 API와의 호환성을 제공합니다.
optimizeboolFalseTorchScript로 내보낼 때 모바일 장치에 대한 최적화를 적용하여 모델 크기를 줄이고 추론 성능을 향상시킬 수 있습니다. NCNN 형식 또는 CUDA 장치와는 호환되지 않습니다.
halfboolFalseFP16(반정밀) 양자화를 활성화하여 모델 크기를 줄이고 지원되는 하드웨어에서 추론 속도를 높일 수 있습니다. INT8 양자화 또는 CPU 내보내기와는 호환되지 않습니다. 특정 형식(예: ONNX )에만 사용할 수 있습니다(아래 참조).
int8boolFalseINT8 양자화를 활성화하여 모델을 더욱 압축하고 주로 에지 장치에서 정확도 손실을 최소화하면서 추론 속도를 높입니다. TensorRT와 함께 사용하면 사후 훈련 양자화(PTQ)를 수행합니다.
dynamicboolFalseONNX, TensorRT 및 OpenVINO 내보내기에 동적 입력 크기를 허용하여 다양한 이미지 크기를 유연하게 처리할 수 있습니다. 자동으로 True INT8로 TensorRT를 사용할 때.
simplifyboolTrueONNX 내보내기를 위해 모델 그래프를 단순화합니다. onnxslim, 추론 엔진과의 성능 및 호환성을 향상시킬 수 있습니다.
opsetintNone다양한 ONNX 파서 및 런타임과의 호환성을 위해 ONNX opset 버전을 지정합니다. 설정하지 않으면 지원되는 최신 버전이 사용됩니다.
workspacefloat 또는 NoneNone다음에 대한 최대 작업 공간 크기를 GiB 단위로 설정합니다. TensorRT 메모리 사용량과 성능의 균형을 맞추는 최적화. 사용 None TensorRT에 의한 장치 최대값까지 자동 할당을 위해.
nmsboolFalse지원되는 경우 ( 내보내기 형식 참조) 내보낸 모델에 비최대 억제(NMS)를 추가하여 detect 후처리 효율성을 향상시킵니다. end2end 모델에는 사용할 수 없습니다.
batchint1내보낸 모델이 동시에 처리할 배치 추론 크기 또는 최대 이미지 수를 지정합니다. predict 모드. Edge TPU 내보내기의 경우, 이는 자동으로 1로 설정됩니다.
devicestrNone내보내기할 장치를 지정합니다: GPU (device=0), CPU (device=cpu), Apple Silicon용 MPS (device=mps) 또는 NVIDIA Jetson용 DLA (device=dla:0 또는 device=dla:1). TensorRT 내보내기는 자동으로 GPU를 사용합니다.
datastr'coco8.yaml'다음 경로: 데이터 세트 INT8 양자화 캘리브레이션에 필수적인 구성 파일입니다. INT8이 활성화된 상태에서 지정되지 않은 경우, coco8.yaml 캘리브레이션을 위한 대체(fallback)로 사용됩니다.
fractionfloat1.0INT8 양자화 보정에 사용할 데이터 세트의 비율을 지정합니다. 전체 데이터 세트의 하위 집합에서 보정할 수 있으므로 실험이나 리소스가 제한적일 때 유용합니다. INT8을 활성화한 상태에서 지정하지 않으면 전체 데이터 세트가 사용됩니다.
end2endboolNoneNMS 추론이 가능한 YOLO (YOLO26, YOLOv10)에서 엔드투엔드 모드를 재정의합니다. 이를 False 이러한 모델을 기존 NMS 후처리 파이프라인과 호환되도록 내보낼 수 있게 합니다.

이러한 파라미터를 조정하면 배포 환경, 하드웨어 제약 조건 및 성능 목표와 같은 특정 요구 사항에 맞게 내보내기 프로세스를 사용자 정의할 수 있습니다. 적절한 형식과 설정을 선택하는 것은 모델 크기, 속도 및 정확도 간의 최상의 균형을 달성하는 데 필수적입니다.

내보내기 형식

사용 가능한 YOLO26 내보내기 형식은 아래 표에 있습니다. 다음을 사용하여 어떤 형식으로든 내보낼 수 있습니다. format 인수, 즉, format='onnx' 또는 format='engine'. 즉, 내보낸 모델에서 직접 예측하거나 검증할 수 있습니다. yolo predict model=yolo26n.onnx). 사용 예시는 내보내기가 완료된 후 모델에 대해 표시됩니다.

형식format 인수모델메타데이터인수
PyTorch-yolo26n.pt-
TorchScripttorchscriptyolo26n.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n_saved_model/imgsz, keras, int8, nms, batch, device
TF GraphDefpbyolo26n.pbimgsz, batch, device
TF Litetfliteyolo26n.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n_edgetpu.tfliteimgsz, device
TF.jstfjsyolo26n_web_model/imgsz, half, int8, nms, batch, device
PaddlePaddlepaddleyolo26n_paddle_model/imgsz, batch, device
MNNmnnyolo26n.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n_imx_model/imgsz, int8, data, fraction, device
RKNNrknnyolo26n_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n_executorch_model/imgsz, device
Axeleraaxelerayolo26n_axelera_model/imgsz, int8, data, fraction, device

FAQ

YOLO26 모델을 ONNX 형식으로 export하려면 어떻게 해야 하나요?

Ultralytics를 사용하면 YOLO26 모델을 ONNX 형식으로 export하는 것이 간단합니다. 모델 export를 위한 Python 및 CLI 메서드를 모두 제공합니다.

예시

from ultralytics import YOLO

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

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

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

모델 export에 TensorRT를 사용하면 상당한 성능 향상을 제공합니다. TensorRT로 export된 YOLO26 모델은 최대 5배의 GPU 속도 향상을 달성할 수 있어 실시간 추론 애플리케이션에 이상적입니다.

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

TensorRT 통합에 대한 자세한 내용은 TensorRT 통합 가이드를 참조하십시오.

YOLO26 모델을 export할 때 INT8 양자화를 활성화하려면 어떻게 해야 하나요?

INT8 양자화는 특히 엣지 장치에서 모델을 압축하고 추론 속도를 높이는 훌륭한 방법입니다. 다음은 INT8 양자화를 활성화하는 방법입니다.

예시

from ultralytics import YOLO

model = YOLO("yolo26n.pt")  # Load a model
model.export(format="engine", int8=True)
yolo export model=yolo26n.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("yolo26n.pt")
model.export(format="onnx", dynamic=True)
yolo export model=yolo26n.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와 같은 특수 내보내기 형식을 사용하는 것이 좋습니다.

내보낸 YOLO 모델에서 출력 tensor는 무엇을 나타냅니까?

YOLO 모델을 ONNX 또는 TensorRT와 같은 형식으로 내보낼 때, 출력 tensor 구조는 모델의 task에 따라 달라집니다. 이러한 출력을 이해하는 것은 사용자 정의 inference 구현에 중요합니다.

다음을 위한 detect 모델 (예: yolo26n.pt), 출력은 일반적으로 다음과 같은 형태의 단일 tensor입니다. (batch_size, 4 + num_classes, num_predictions) 여기서 채널은 박스 좌표와 클래스별 점수를 나타내며, num_predictions 내보내기 입력 해상도에 따라 달라집니다(동적일 수 있음).

다음을 위한 segment 모델 (예: yolo26n-seg.pt), 일반적으로 두 가지 출력을 얻게 됩니다. 첫 번째 tensor는 다음과 같은 형태이고, (batch_size, 4 + num_classes + mask_dim, num_predictions) (박스, 클래스 점수, 마스크 계수)이며, 두 번째 tensor는 다음과 같은 형태입니다. (batch_size, mask_dim, proto_h, proto_w) 계수와 함께 사용하여 인스턴스 마스크를 생성하는 마스크 프로토타입을 포함합니다. 크기는 내보내기 입력 해상도에 따라 달라집니다(동적일 수 있음).

다음을 위한 pose 모델 (예: yolo26n-pose.pt), 출력 tensor는 일반적으로 다음과 같은 형태입니다. (batch_size, 4 + num_classes + keypoint_dims, num_predictions)인 경우 keypoint_dims pose 사양(예: 키포인트 수 및 confidence 포함 여부)에 따라 달라지며, num_predictions 내보내기 입력 해상도에 따라 달라집니다(동적일 수 있음).

ONNX inference 예제에 있는 예시들은 각 모델 유형에 대한 이러한 출력을 처리하는 방법을 보여줍니다.



5; 2 년 전에 생성됨 ✏️ 2 전에 업데이트됨
glenn-jocherBurhan-QUltralyticsAssistantambitious-octopusKayzwerraimbekovmpderrengerY-T-Gjk4eMatthewNoyceRizwanMunawar

댓글