YOLO26 모델을 위한 ONNX 내보내기
~43% 더 빠른 추론 속도.
- Ultralytics YOLO26 모델을 ONNX로 내보내면 추론 속도를 최대 43%까지 향상할 수 있어, 더 빠르고 효율적인 배포가 가능합니다.
컴퓨터 비전 모델을 배포할 때는 유연하면서도 여러 플랫폼과 호환되는 모델 형식이 필요한 경우가 많습니다.
Ultralytics YOLO26 모델을 ONNX 형식으로 내보내면 배포가 간소화되고 다양한 환경에서 최적의 성능을 보장합니다. 본 가이드에서는 YOLO26 모델을 ONNX로 쉽게 변환하고 실제 애플리케이션에서 확장성과 효율성을 높이는 방법을 설명합니다.
Watch: Ultralytics YOLO26 vs Ultralytics YOLO11 ONNX Inference Test | ~43% Faster Inference with YOLO26 🚀
ONNX 및 ONNX Runtime
ONNX, which stands for Open Neural Network Exchange, is a community project that Facebook and Microsoft initially developed. The ongoing development of ONNX is a collaborative effort supported by various organizations like IBM, Amazon (through AWS), and Google. The project aims to create an open file format designed to represent machine learning models in a way that allows them to be used across different AI frameworks and hardware.
ONNX 모델을 사용하면 프레임워크 간 전환을 원활하게 수행할 수 있습니다. 예를 들어, PyTorch에서 학습된 딥러닝 모델을 ONNX 형식으로 내보낸 후 TensorFlow로 쉽게 가져올 수 있습니다.
또는 ONNX 모델을 ONNX Runtime과 함께 사용할 수 있습니다. ONNX Runtime은 PyTorch, TensorFlow, TFLite, scikit-learn 등과 같은 프레임워크와 호환되는 머신 러닝 모델용 범용 크로스 플랫폼 가속기입니다.
ONNX Runtime은 하드웨어별 기능을 활용하여 ONNX 모델의 실행을 최적화합니다. 이러한 최적화를 통해 CPU, GPU 및 특수 가속기를 포함한 다양한 하드웨어 플랫폼에서 모델을 효율적이고 고성능으로 실행할 수 있습니다.
ONNX는 독립적으로 사용되든 ONNX Runtime과 함께 사용되든, 머신 러닝 모델 배포 및 호환성을 위한 유연한 솔루션을 제공합니다.
ONNX 모델의 주요 특징
ONNX가 다양한 형식을 처리할 수 있는 능력은 다음과 같은 주요 특징 덕분입니다:
-
공통 모델 표현: ONNX는 일련의 공통 연산자(컨볼루션, 레이어 등)와 표준 데이터 형식을 정의합니다. 모델이 ONNX 형식으로 변환되면 해당 아키텍처와 가중치가 이러한 공통 표현으로 번역됩니다. 이러한 균일성은 ONNX를 지원하는 모든 프레임워크에서 모델을 이해할 수 있도록 보장합니다.
-
버전 관리 및 하위 호환성: ONNX는 연산자에 대한 버전 관리 시스템을 유지합니다. 이를 통해 표준이 발전하더라도 이전 버전에서 생성된 모델을 계속 사용할 수 있습니다. 하위 호환성은 모델이 빠르게 쓸모없어지는 것을 방지하는 중요한 기능입니다.
-
그래프 기반 모델 표현: ONNX는 모델을 계산 그래프로 표현합니다. 이러한 그래프 기반 구조는 머신 러닝 모델을 표현하는 보편적인 방식이며, 노드는 연산 또는 계산을 나타내고 엣지는 그 사이를 흐르는 텐서를 나타냅니다. 이 형식은 모델을 그래프로 표현하는 다양한 프레임워크에 쉽게 적응할 수 있습니다.
-
도구 및 생태계: ONNX 주변에는 모델 변환, 시각화 및 최적화를 지원하는 풍부한 도구 생태계가 있습니다. 이러한 도구를 사용하면 개발자가 ONNX 모델로 작업하고 여러 프레임워크 간에 모델을 원활하게 변환하기가 더 쉬워집니다.
ONNX의 일반적인 사용 사례
YOLO26 모델을 ONNX 형식으로 내보내는 방법을 알아보기 전에, ONNX 모델이 일반적으로 어디에 사용되는지 살펴보겠습니다.
CPU 배포
ONNX 모델은 ONNX Runtime과의 호환성 때문에 CPU에 자주 배포됩니다. 이 런타임은 CPU 실행에 최적화되어 있습니다. 이는 추론 속도를 크게 향상시키고 실시간 CPU 배포를 가능하게 합니다.
지원되는 배포 옵션
ONNX 모델은 일반적으로 CPU에서 사용되지만, 다음과 같은 플랫폼에도 배포할 수 있습니다:
-
GPU 가속: ONNX는 GPU 가속, 특히 NVIDIA CUDA를 완벽하게 지원합니다. 이를 통해 높은 연산 능력이 필요한 작업에 대해 NVIDIA GPU에서 효율적인 실행이 가능합니다.
-
엣지 및 모바일 장치: ONNX는 엣지 및 모바일 장치까지 확장되어 온디바이스 및 실시간 추론 시나리오에 적합합니다. 가볍고 엣지 하드웨어와 호환됩니다.
-
웹 브라우저: ONNX는 웹 브라우저에서 직접 실행되어 대화형 및 동적 웹 기반 AI 애플리케이션을 구동할 수 있습니다.
YOLO26 모델을 ONNX로 내보내기
YOLO26 모델을 ONNX 형식으로 변환하여 모델 호환성과 배포 유연성을 확장할 수 있습니다. Ultralytics YOLO26은 다양한 플랫폼에서 모델의 성능을 크게 향상시킬 수 있는 간편한 내보내기 프로세스를 제공합니다.
설치
필수 패키지를 설치하려면 다음을 실행하세요.
# Install the required package for YOLO26
pip install ultralytics설치 과정과 관련된 자세한 지침 및 모범 사례는 YOLO26 설치 가이드를 확인하세요. YOLO26용 필수 패키지를 설치하는 동안 문제가 발생하면 일반 문제 가이드에서 해결책과 팁을 확인하세요.
사용법
사용 지침을 살펴보기 전에 Ultralytics에서 제공하는 다양한 YOLO26 모델을 확인하십시오. 이는 프로젝트 요구 사항에 가장 적합한 모델을 선택하는 데 도움이 됩니다.
from ultralytics import YOLO
# Load the YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo26n.onnx'
# Load the exported ONNX model
onnx_model = YOLO("yolo26n.onnx")
# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")내보내기 인수
YOLO26 모델을 ONNX 형식으로 내보낼 때, 특정 배포 요구 사항에 맞게 최적화하기 위해 다양한 인수를 사용하여 프로세스를 사용자 지정할 수 있습니다:
| 인수(Argument) | 유형(Type) | 기본값(Default) | 설명 |
|---|---|---|---|
format | str | 'onnx' | 내보낸 모델의 대상 형식으로, 다양한 배포 환경과의 호환성을 정의합니다. |
imgsz | int 또는 tuple | 640 | 모델 입력에 필요한 이미지 크기입니다. 정사각형 이미지의 경우 정수를, 특정 크기의 경우 (height, width) 튜플을 사용할 수 있습니다. |
half | bool | False | FP16(반정밀도) 양자화를 활성화하여 모델 크기를 줄이고 지원되는 하드웨어에서 추론 속도를 높일 수 있습니다. |
dynamic | bool | False | 동적 입력 크기를 허용하여 다양한 이미지 크기를 처리하는 유연성을 향상시킵니다. |
simplify | bool | True | onnxslim으로 모델 그래프를 단순화하여 성능과 호환성을 잠재적으로 개선합니다. |
opset | int | None | 다양한 ONNX 파서 및 런타임과의 호환성을 위해 ONNX opset 버전을 지정합니다. 설정하지 않으면 최신 지원 버전이 사용됩니다. |
nms | bool | False | 정확하고 효율적인 탐지 후처리에 필수적인 NMS(Non-Maximum Suppression)를 추가합니다. |
batch | int | 1 | 내보낸 모델의 배치 추론 크기 또는 predict 모드에서 내보낸 모델이 동시에 처리할 최대 이미지 수를 지정합니다. |
device | str | None | 내보낼 기기를 지정합니다: GPU (device=0), CPU (device=cpu), Apple 실리콘용 MPS (device=mps). |
내보내기 과정에 대한 자세한 내용은 Ultralytics 내보내기 설명서 페이지를 방문하세요.
내보낸 YOLO26 ONNX 모델 배포하기
Ultralytics YOLO26 모델을 성공적으로 ONNX 형식으로 내보냈다면, 다음 단계는 이러한 모델을 다양한 환경에 배포하는 것입니다. ONNX 모델 배포에 대한 자세한 지침은 다음 리소스를 참조하십시오:
-
ONNX Runtime Python API 문서: 이 가이드는 ONNX Runtime을 사용하여 ONNX 모델을 로드하고 실행하는 데 필요한 필수 정보를 제공합니다.
-
엣지 장치에 배포: 엣지에 ONNX 모델을 배포하는 다양한 예제를 보려면 이 문서 페이지를 확인하십시오.
-
GitHub의 ONNX 튜토리얼: 다양한 시나리오에서 ONNX 모델을 사용하고 구현하는 여러 측면을 다루는 포괄적인 튜토리얼 모음입니다.
-
Triton Inference Server: 고성능의 확장 가능한 배포를 위해 NVIDIA의 Triton Inference Server를 사용하여 ONNX 모델을 배포하는 방법을 알아보십시오.
요약
본 가이드에서는 Ultralytics YOLO26 모델을 ONNX 형식으로 내보내 다양한 플랫폼 간의 상호 운용성과 성능을 높이는 방법을 배웠습니다. 또한 ONNX Runtime과 ONNX 배포 옵션에 대해서도 소개받았습니다.
ONNX 내보내기는 Ultralytics YOLO26에서 지원하는 여러 내보내기 형식 중 하나일 뿐이며, 거의 모든 환경에 모델을 배포할 수 있습니다. 특정 요구 사항에 따라 최대 GPU 성능을 위해 TensorRT 또는 Apple 장치를 위해 CoreML과 같은 다른 내보내기 옵션을 탐색해 볼 수도 있습니다.
사용 방법에 대한 자세한 내용은 ONNX 공식 문서를 방문하십시오.
또한 다른 Ultralytics YOLO26 통합에 대해 자세히 알고 싶으시면 통합 가이드 페이지를 방문하십시오. 그곳에서 유용한 리소스와 통찰력을 많이 찾으실 수 있습니다.
FAQ
Ultralytics를 사용하여 YOLO26 모델을 ONNX 형식으로 어떻게 내보내나요?
Ultralytics를 사용하여 YOLO26 모델을 ONNX 형식으로 내보내려면 다음 단계를 따르십시오:
from ultralytics import YOLO
# Load the YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo26n.onnx'
# Load the exported ONNX model
onnx_model = YOLO("yolo26n.onnx")
# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")자세한 내용은 내보내기 문서를 방문하십시오.
YOLO26 모델 배포에 ONNX Runtime을 사용하면 어떤 이점이 있나요?
YOLO26 모델 배포에 ONNX Runtime을 사용하면 다음과 같은 여러 가지 이점이 있습니다:
- 크로스 플랫폼 호환성: ONNX Runtime은 Windows, macOS, Linux와 같은 다양한 플랫폼을 지원하여 모델이 여러 환경에서 원활하게 실행되도록 보장합니다.
- 하드웨어 가속: ONNX Runtime은 CPU, GPU 및 전용 가속기에 대한 하드웨어별 최적화를 활용하여 고성능 추론을 제공할 수 있습니다.
- 프레임워크 상호 운용성: PyTorch 또는 TensorFlow와 같은 인기 있는 프레임워크에서 학습된 모델을 ONNX 형식으로 쉽게 변환하고 ONNX Runtime을 사용하여 실행할 수 있습니다.
- 성능 최적화: ONNX Runtime은 기본 PyTorch 모델에 비해 최대 3배의 CPU 속도 향상을 제공할 수 있어, GPU 리소스가 제한된 배포 시나리오에 이상적입니다.
ONNX Runtime 문서를 확인하여 자세히 알아보십시오.
ONNX로 내보낸 YOLO26 모델에는 어떤 배포 옵션을 사용할 수 있나요?
ONNX로 내보낸 YOLO26 모델은 다음을 포함한 다양한 플랫폼에 배포할 수 있습니다:
- CPU: 최적화된 CPU 추론을 위해 ONNX Runtime 활용.
- GPU: 고성능 GPU 가속을 위해 NVIDIA CUDA 활용.
- 엣지 장치: 실시간 온디바이스 추론을 위해 엣지 및 모바일 장치에서 경량 모델 실행.
- 웹 브라우저: 대화형 웹 기반 애플리케이션을 위해 웹 브라우저 내에서 직접 모델 실행.
- 클라우드 서비스: 확장 가능한 추론을 위해 ONNX 형식을 지원하는 클라우드 플랫폼에 배포.
자세한 내용은 모델 배포 옵션에 대한 가이드를 살펴보십시오.
Ultralytics YOLO26 모델에 ONNX 형식을 사용해야 하는 이유는 무엇인가요?
Ultralytics YOLO26 모델에 ONNX 형식을 사용하면 다음과 같은 수많은 이점이 있습니다:
- 상호 운용성: ONNX를 사용하면 여러 머신 러닝 프레임워크 간에 모델을 원활하게 전송할 수 있습니다.
- 성능 최적화: ONNX Runtime은 하드웨어별 최적화를 활용하여 모델 성능을 향상시킬 수 있습니다.
- 유연성: ONNX는 다양한 배포 환경을 지원하여 수정 없이 여러 플랫폼에서 동일한 모델을 사용할 수 있습니다.
- 표준화: ONNX는 업계 전반에서 널리 지원되는 표준화된 형식을 제공하여 장기적인 호환성을 보장합니다.
YOLO26 모델을 ONNX로 내보내기에 대한 포괄적인 가이드를 참조하십시오.
YOLO26 모델을 ONNX로 내보낼 때 발생하는 문제를 어떻게 해결할 수 있나요?
YOLO26 모델을 ONNX로 내보낼 때 종속성 불일치나 지원되지 않는 연산자와 같은 일반적인 문제가 발생할 수 있습니다. 이러한 문제를 해결하려면:
- 필수 종속성의 올바른 버전이 설치되었는지 확인하십시오.
- 지원되는 연산자와 기능은 공식 ONNX 문서를 확인하십시오.
- 오류 메시지에서 단서를 찾아 Ultralytics 일반 문제 가이드를 참조하십시오.
simplify=True와 같은 다른 내보내기 인수를 사용하거나opset버전을 조정해 보십시오.- 동적 입력 크기 문제가 발생하면 내보내기 중에
dynamic=True를 설정하십시오.
문제가 지속되면 추가 지원을 위해 Ultralytics 지원팀에 문의하십시오.