ONNX YOLO11 모델용 내보내기
컴퓨터 비전 모델을 배포할 때는 유연하고 여러 플랫폼과 호환되는 모델 형식이 필요한 경우가 많습니다.
내보내기 Ultralytics YOLO11 모델을 ONNX 형식으로 내보내면 배포를 간소화하고 다양한 환경에서 최적의 성능을 보장할 수 있습니다. 이 가이드에서는 YOLO11 모델을 ONNX 로 쉽게 변환하고 실제 애플리케이션에서 확장성과 효율성을 향상시키는 방법을 보여 드립니다.
ONNX 및 ONNX 런타임
ONNX의 약자인 오픈 신경망 교환은 Facebook과 Microsoft 이 처음 개발한 커뮤니티 프로젝트입니다. 현재 진행 중인 ONNX 의 개발은 IBM, Amazon(AWS를 통해), Google 과 같은 다양한 조직에서 지원하는 공동의 노력입니다. 이 프로젝트는 머신러닝 모델을 다양한 AI 프레임워크와 하드웨어에서 사용할 수 있는 방식으로 표현하도록 설계된 개방형 파일 형식을 만드는 것을 목표로 합니다.
ONNX 모델을 사용하여 서로 다른 프레임워크 간에 원활하게 전환할 수 있습니다. 예를 들어 PyTorch 에서 학습된 딥 러닝 모델을 ONNX 형식으로 내보낸 다음 TensorFlow 로 쉽게 가져올 수 있습니다.
또는 ONNX 모델을 ONNX 런타임과 함께 사용할 수 있습니다. ONNX Runtime은 PyTorch 과 같은 프레임워크와 호환되는 머신 러닝 모델을 위한 다목적 크로스 플랫폼 가속기입니다, TensorFlow, TFLite, scikit-learn 등과 같은 프레임워크와 호환됩니다.
ONNX 런타임은 하드웨어별 기능을 활용하여 ONNX 모델의 실행을 최적화합니다. 이러한 최적화를 통해 CPU, GPU, 특수 가속기 등 다양한 하드웨어 플랫폼에서 모델을 효율적으로 고성능으로 실행할 수 있습니다.
독립적으로 사용하든 ONNX 런타임과 함께 사용하든, ONNX 은 머신 러닝 모델 배포 및 호환성을 위한 유연한 솔루션을 제공합니다.
ONNX 모델의 주요 기능
ONNX 에서 다양한 형식을 처리할 수 있는 것은 다음과 같은 주요 기능 덕분입니다:
-
공통 모델 표현: ONNX 은 공통 연산자 집합(컨볼루션, 레이어 등)과 표준 데이터 형식을 정의합니다. 모델을 ONNX 형식으로 변환하면 해당 모델의 아키텍처와 가중치가 이 공통 표현으로 변환됩니다. 이러한 통일성을 통해 ONNX 을 지원하는 모든 프레임워크에서 모델을 이해할 수 있습니다.
-
버전 관리 및 이전 버전과의 호환성: ONNX 에서는 운영자를 위한 버전 관리 시스템을 유지 관리합니다. 이를 통해 표준이 발전하더라도 이전 버전에서 만든 모델을 계속 사용할 수 있습니다. 이전 버전과의 호환성은 모델이 빠르게 구식이 되는 것을 방지하는 중요한 기능입니다.
-
그래프 기반 모델 표현: ONNX 은 모델을 계산 그래프로 표현합니다. 이 그래프 기반 구조는 머신 러닝 모델을 표현하는 보편적인 방법으로, 노드는 연산 또는 계산을 나타내고 에지는 그 사이를 흐르는 텐서를 나타냅니다. 이 형식은 모델을 그래프로 표현하는 다양한 프레임워크에 쉽게 적용할 수 있습니다.
-
도구 및 에코시스템: ONNX 에는 모델 변환, 시각화 및 최적화를 지원하는 풍부한 도구 생태계가 있습니다. 이러한 도구를 사용하면 개발자가 ONNX 모델로 더 쉽게 작업하고 서로 다른 프레임워크 간에 모델을 원활하게 변환할 수 있습니다.
일반적인 사용법 ONNX
YOLO11 모델을 ONNX 형식으로 내보내는 방법을 살펴보기 전에 ONNX 모델이 일반적으로 어디에 사용되는지 살펴보겠습니다.
CPU 배포
ONNX 모델은 ONNX 런타임과의 호환성 때문에 CPU에 배포되는 경우가 많습니다. 이 런타임은 CPU 실행에 최적화되어 있습니다. 추론 속도를 크게 향상시키고 실시간 CPU 배포를 가능하게 합니다.
지원되는 배포 옵션
ONNX 모델은 일반적으로 CPU에서 사용되지만 다음 플랫폼에도 배포할 수 있습니다:
-
GPU 가속: ONNX 은 GPU 가속, 특히 NVIDIA CUDA 을 완벽하게 지원합니다. 이를 통해 높은 연산 능력이 요구되는 작업을 NVIDIA GPU에서 효율적으로 실행할 수 있습니다.
-
엣지 및 모바일 디바이스: ONNX 는 엣지 및 모바일 디바이스로 확장되어 온디바이스 및 실시간 추론 시나리오에 적합합니다. 가볍고 엣지 하드웨어와 호환됩니다.
-
웹 브라우저: ONNX 웹 브라우저에서 직접 실행하여 대화형 및 동적 웹 기반 AI 애플리케이션을 구동할 수 있습니다.
YOLO11 모델로 내보내기 ONNX
YOLO11 모델을 ONNX 형식으로 변환하여 모델 호환성 및 배포 유연성을 확장할 수 있습니다. Ultralytics YOLO11 은 다양한 플랫폼에서 모델의 성능을 크게 향상시킬 수 있는 간단한 내보내기 프로세스를 제공합니다.
설치
필요한 패키지를 설치하려면 실행합니다:
설치 과정과 관련된 자세한 지침과 모범 사례는 YOLO11 설치 가이드를 참조하세요. YOLO11 에 필요한 패키지를 설치하는 동안 문제가 발생하면 일반적인 문제 가이드를 참조하여 해결 방법과 팁을 확인하세요.
사용법
사용 지침을 살펴보기 전에 Ultralytics 에서 제공하는 다양한 YOLO11 모델을 확인하세요. 프로젝트 요구 사항에 가장 적합한 모델을 선택하는 데 도움이 될 것입니다.
사용법
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo11n.onnx'
# Load the exported ONNX model
onnx_model = YOLO("yolo11n.onnx")
# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
내보내기 인수
YOLO11 모델을 ONNX 형식으로 내보낼 때 다양한 인수를 사용하여 프로세스를 사용자 지정하여 특정 배포 요구 사항에 맞게 최적화할 수 있습니다:
인수 | 유형 | 기본값 | 설명 |
---|---|---|---|
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 옵셋 버전을 지정합니다. 설정하지 않으면 지원되는 최신 버전을 사용합니다. |
nms |
bool |
False |
정확하고 효율적인 검출 후처리에 필수적인 비최대 억제(NMS)를 추가합니다. |
batch |
int |
1 |
내보내기 모델 일괄 추론 크기 또는 내보낸 모델이 동시에 처리할 최대 이미지 수를 지정합니다. predict 모드로 전환합니다. |
내보내기 프로세스에 대한 자세한 내용은 내보내기 관련 문서 페이지(Ultralytics )를 참조하세요.
내보낸 YOLO11 ONNX 모델 배포
Ultralytics YOLO11 모델을 ONNX 형식으로 성공적으로 내보냈다면 다음 단계는 이러한 모델을 다양한 환경에 배포하는 것입니다. ONNX 모델 배포에 대한 자세한 지침은 다음 리소스를 참조하세요:
-
ONNX 런타임 Python API 문서: 이 가이드는 ONNX 런타임을 사용하여 ONNX 모델을 로드하고 실행하는 데 필요한 필수 정보를 제공합니다.
-
엣지 디바이스에 배포: 이 문서 페이지에서 ONNX 모델을 엣지에 배포하는 다양한 예시를 확인하세요.
-
ONNX GitHub의 튜토리얼: 다양한 시나리오에서 ONNX 모델을 사용하고 구현하는 다양한 측면을 다루는 포괄적인 자습서 모음입니다.
-
Triton 추론 서버: 고성능의 확장 가능한 배포를 위해 NVIDIA Triton 추론 서버를 사용하여 ONNX 모델을 배포하는 방법을 알아보세요.
요약
이 가이드에서는 Ultralytics YOLO11 모델을 ONNX 형식으로 내보내 다양한 플랫폼에서 상호 운용성과 성능을 향상시키는 방법을 배웠습니다. 또한 ONNX 런타임 및 ONNX 배포 옵션에 대해서도 소개했습니다.
ONNX 내보내기는 거의 모든 환경에 모델을 배포할 수 있는 Ultralytics YOLO11 지원하는 여러 내보내기 형식 중 하나에 불과합니다. 특정 요구 사항에 따라 다음과 같은 다른 내보내기 옵션도 살펴볼 수 있습니다. TensorRT 와 같은 다른 내보내기 옵션이나 CoreML 과 같은 다른 내보내기 옵션을 살펴볼 수도 있습니다.
사용법에 대한 자세한 내용은 ONNX 공식 문서를 참조하세요.
또한 Ultralytics YOLO11 통합에 대해 더 자세히 알고 싶다면 통합 가이드 페이지를 방문하세요. 유용한 리소스와 인사이트를 많이 찾을 수 있습니다.
자주 묻는 질문
Ultralytics 을 사용하여 YOLO11 모델을 ONNX 형식으로 내보내려면 어떻게 하나요?
Ultralytics 을 사용하여 YOLO11 모델을 ONNX 형식으로 내보내려면 다음 단계를 따르세요:
사용법
from ultralytics import YOLO
# Load the YOLO11 model
model = YOLO("yolo11n.pt")
# Export the model to ONNX format
model.export(format="onnx") # creates 'yolo11n.onnx'
# Load the exported ONNX model
onnx_model = YOLO("yolo11n.onnx")
# Run inference
results = onnx_model("https://ultralytics.com/images/bus.jpg")
자세한 내용은 내보내기 문서를 참조하세요.
YOLO11 모델을 배포하기 위해 ONNX 런타임을 사용하면 어떤 이점이 있나요?
YOLO11 모델 배포에 ONNX 런타임을 사용하면 몇 가지 이점이 있습니다:
- 플랫폼 간 호환성: ONNX 런타임은 Windows, macOS, Linux 등 다양한 플랫폼을 지원하므로 다양한 환경에서 모델을 원활하게 실행할 수 있습니다.
- 하드웨어 가속: ONNX 런타임은 CPU, GPU 및 전용 가속기에 대한 하드웨어별 최적화를 활용하여 고성능 추론을 제공할 수 있습니다.
- 프레임워크 상호 운용성: 다음과 같이 널리 사용되는 프레임워크에서 학습된 모델은 PyTorch 또는 TensorFlow 같은 인기 있는 프레임워크에서 학습된 모델을 ONNX 형식으로 쉽게 변환하고 ONNX 런타임을 사용하여 실행할 수 있습니다.
- 성능 최적화: ONNX 런타임은 기본 PyTorch 모델에 비해 최대 3배의 CPU 속도 향상을 제공하므로 GPU 리소스가 제한된 배포 시나리오에 이상적입니다.
자세한 내용은 ONNX 런타임 문서를 참조하세요.
ONNX 으로 내보낸 YOLO11 모델에는 어떤 배포 옵션을 사용할 수 있나요?
YOLO11 ONNX 으로 내보낸 모델은 다음을 포함한 다양한 플랫폼에 배포할 수 있습니다:
- CPU: 최적화된 CPU 추론을 위해 ONNX 런타임을 활용합니다.
- GPU: 고성능 GPU 가속을 위해 NVIDIA CUDA 활용.
- 엣지 디바이스: 엣지 및 모바일 디바이스에서 경량 모델을 실행하여 실시간 온디바이스 추론을 수행합니다.
- 웹 브라우저: 대화형 웹 기반 애플리케이션을 위해 웹 브라우저 내에서 직접 모델을 실행합니다.
- 클라우드 서비스: 확장 가능한 추론을 위해 ONNX 형식을 지원하는 클라우드 플랫폼에 배포합니다.
자세한 내용은 모델 배포 옵션에 대한 가이드를 참조하세요.
Ultralytics YOLO11 모델에 ONNX 형식을 사용해야 하는 이유는 무엇인가요?
Ultralytics YOLO11 모델에 ONNX 형식을 사용하면 다양한 이점이 있습니다:
- 상호 운용성: ONNX 을 사용하면 서로 다른 머신 러닝 프레임워크 간에 모델을 원활하게 전송할 수 있습니다.
- 성능 최적화: ONNX 런타임은 하드웨어별 최적화를 활용하여 모델 성능을 향상시킬 수 있습니다.
- 유연성: ONNX 은 다양한 배포 환경을 지원하므로 수정 없이 다양한 플랫폼에서 동일한 모델을 사용할 수 있습니다.
- 표준화: ONNX 업계 전반에서 널리 지원되는 표준화된 포맷을 제공하여 장기적인 호환성을 보장합니다.
YOLO11 모델 내보내기에 대한 종합 가이드( ONNX )를 참조하세요.
YOLO11 모델을 ONNX 으로 내보낼 때 문제를 해결하려면 어떻게 해야 하나요?
YOLO11 모델을 ONNX 으로 내보낼 때 일치하지 않는 종속성 또는 지원되지 않는 작업과 같은 일반적인 문제가 발생할 수 있습니다. 이러한 문제를 해결하려면 다음과 같이 하세요:
- 필요한 종속성의 올바른 버전이 설치되어 있는지 확인합니다.
- 지원되는 사업자 및 기능은 공식 문서(ONNX )를 참조하세요.
- 오류 메시지를 검토하여 단서를 찾고 Ultralytics 일반적인 문제 가이드를 참조하세요.
- 다음과 같이 다른 내보내기 인수를 사용해 보십시오.
simplify=True
또는opset
버전입니다. - 동적 입력 크기 문제의 경우
dynamic=True
내보내기 중입니다.
문제가 지속되면 Ultralytics 지원팀에 문의하여 추가 지원을 받으세요.