콘텐츠로 건너뛰기

YOLO11 모델을 위한 ONNX 내보내기

일반적으로 컴퓨터 비전 모델을 배포할 때 유연하면서도 여러 플랫폼과 호환되는 모델 형식이 필요합니다.

Ultralytics YOLO11 모델을 ONNX 형식으로 내보내면 배포가 간소화되고 다양한 환경에서 최적의 성능을 보장할 수 있습니다. 이 가이드에서는 YOLO11 모델을 ONNX로 쉽게 변환하고 실제 애플리케이션에서 확장성과 효율성을 향상시키는 방법을 보여줍니다.

ONNX 및 ONNX Runtime

Open Neural Network Exchange를 의미하는 ONNX는 Facebook과 Microsoft가 처음 개발한 커뮤니티 프로젝트입니다. ONNX의 지속적인 개발은 IBM, Amazon(AWS를 통해) 및 Google과 같은 다양한 조직에서 지원하는 공동 노력입니다. 이 프로젝트는 다양한 AI 프레임워크 및 하드웨어에서 사용할 수 있도록 머신 러닝 모델을 표현하도록 설계된 개방형 파일 형식을 만드는 것을 목표로 합니다.

ONNX 모델을 사용하여 다양한 프레임워크 간에 원활하게 전환할 수 있습니다. 예를 들어 PyTorch에서 훈련된 딥 러닝 모델을 ONNX 형식으로 내보낸 다음 TensorFlow로 쉽게 가져올 수 있습니다.

ONNX

또는 ONNX Runtime과 함께 ONNX 모델을 사용할 수 있습니다. ONNX Runtime은 PyTorch, TensorFlow, TFLite, scikit-learn 등과 같은 프레임워크와 호환되는 머신 러닝 모델을 위한 다용도 크로스 플랫폼 가속기입니다.

ONNX Runtime은 하드웨어별 기능을 활용하여 ONNX 모델의 실행을 최적화합니다. 이러한 최적화를 통해 모델은 CPU, GPU 및 특수 가속기를 포함한 다양한 하드웨어 플랫폼에서 효율적이고 높은 성능으로 실행될 수 있습니다.

ONNX Runtime을 사용하는 ONNX

ONNX는 독립적으로 사용하든 ONNX Runtime과 함께 사용하든 머신 러닝 모델 배포 및 호환성을 위한 유연한 솔루션을 제공합니다.

ONNX 모델의 주요 특징

ONNX가 다양한 형식을 처리할 수 있는 능력은 다음과 같은 주요 기능에 기인할 수 있습니다.

  • 공통 모델 표현: ONNX는 공통 연산자 세트(예: 컨볼루션, 레이어 등)와 표준 데이터 형식을 정의합니다. 모델이 ONNX 형식으로 변환되면 해당 아키텍처와 가중치가 이 공통 표현으로 변환됩니다. 이러한 통일성은 ONNX를 지원하는 모든 프레임워크에서 모델을 이해할 수 있도록 보장합니다.

  • 버전 관리 및 이전 버전과의 호환성: ONNX는 연산자에 대한 버전 관리 시스템을 유지 관리합니다. 이를 통해 표준이 발전하더라도 이전 버전에서 생성된 모델을 계속 사용할 수 있습니다. 이전 버전과의 호환성은 모델이 빠르게 구식이 되는 것을 방지하는 중요한 기능입니다.

  • 그래프 기반 모델 표현: ONNX는 모델을 계산 그래프로 표현합니다. 이 그래프 기반 구조는 머신 러닝 모델을 표현하는 보편적인 방법으로, 노드는 연산 또는 계산을 나타내고 에지는 노드 사이를 흐르는 텐서를 나타냅니다. 이 형식은 모델을 그래프로 표현하는 다양한 프레임워크에 쉽게 적용할 수 있습니다.

  • 도구 및 생태계: 모델 변환, 시각화 및 최적화를 지원하는 ONNX를 중심으로 풍부한 도구 생태계가 있습니다. 이러한 도구를 통해 개발자는 ONNX 모델을 더 쉽게 사용하고 모델을 서로 다른 프레임워크 간에 원활하게 변환할 수 있습니다.

ONNX의 일반적인 사용법

YOLO11 모델을 ONNX 형식으로 내보내는 방법에 대해 알아보기 전에 ONNX 모델이 주로 어디에 사용되는지 살펴보겠습니다.

CPU 배포

ONNX 모델은 ONNX Runtime과의 호환성 덕분에 CPU에 자주 배포됩니다. 이 런타임은 CPU 실행에 최적화되어 있습니다. 추론 속도를 크게 향상시키고 실시간 CPU 배포를 가능하게 합니다.

지원되는 배포 옵션

ONNX 모델은 일반적으로 CPU에서 사용되지만 다음 플랫폼에도 배포할 수 있습니다.

  • GPU 가속: ONNX는 GPU 가속, 특히 NVIDIA CUDA를 완벽하게 지원합니다. 이를 통해 높은 컴퓨팅 성능을 요구하는 작업에서 NVIDIA GPU에서 효율적인 실행이 가능합니다.

  • 엣지 및 모바일 장치: ONNX는 엣지 및 모바일 장치로 확장되어 장치 내 및 실시간 추론 시나리오에 적합합니다. 가볍고 엣지 하드웨어와 호환됩니다.

  • 웹 브라우저: ONNX는 웹 브라우저에서 직접 실행하여 대화형 및 동적 웹 기반 AI 애플리케이션을 강화할 수 있습니다.

YOLO11 모델을 ONNX로 내보내기

YOLO11 모델을 ONNX 형식으로 변환하여 모델 호환성 및 배포 유연성을 확장할 수 있습니다. Ultralytics YOLO11은(는) 다양한 플랫폼에서 모델 성능을 크게 향상시킬 수 있는 간단한 내보내기 프로세스를 제공합니다.

설치

필수 패키지를 설치하려면 다음을 실행합니다.

설치

# Install the required package for YOLO11
pip install ultralytics

설치 프로세스와 관련된 자세한 지침 및 모범 사례는 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")
# Export a YOLO11n PyTorch model to ONNX format
yolo export model=yolo11n.pt format=onnx # creates 'yolo11n.onnx'

# Run inference with the exported model
yolo predict model=yolo11n.onnx source='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 opset 버전을 지정합니다. 설정하지 않으면 지원되는 최신 버전을 사용합니다.
nms bool False 정확하고 효율적인 탐지 후 처리에 필수적인 NMS(Non-Maximum Suppression)를 추가합니다.
batch int 1 내보내기 모델 배치 추론 크기 또는 내보내기 모델이 동시에 처리할 이미지의 최대 수를 지정합니다. predict mode.
device str None 내보내기할 장치를 지정합니다: GPU (device=0), CPU (device=cpu), Apple Silicon용 MPS (device=mps)입니다.

내보내기 프로세스에 대한 자세한 내용은 내보내기에 대한 Ultralytics 문서 페이지를 참조하십시오.

내보낸 YOLO11 ONNX 모델 배포

Ultralytics YOLO11 모델을 ONNX 형식으로 성공적으로 내보냈으면 다음 단계는 이러한 모델을 다양한 환경에 배포하는 것입니다. ONNX 모델 배포에 대한 자세한 지침은 다음 리소스를 참조하십시오.

  • ONNX Runtime python API 문서: 이 가이드는 ONNX Runtime을 사용하여 ONNX 모델을 로드하고 실행하는 데 필요한 정보를 제공합니다.

  • 엣지 장치에 배포: 엣지에서 ONNX 모델을 배포하는 다양한 예제는 이 문서 페이지를 확인하십시오.

  • GitHub의 ONNX 튜토리얼: 다양한 시나리오에서 ONNX 모델을 사용하고 구현하는 다양한 측면을 다루는 포괄적인 튜토리얼 모음입니다.

  • Triton Inference Server: 고성능의 확장 가능한 배포를 위해 NVIDIA의 Triton Inference Server를 사용하여 ONNX 모델을 배포하는 방법을 알아보세요.

요약

이 가이드에서는 Ultralytics YOLO11 모델을 ONNX 형식으로 내보내어 다양한 플랫폼에서 상호 운용성 및 성능을 향상시키는 방법을 배웠습니다. 또한 ONNX Runtime 및 ONNX 배포 옵션에 대해서도 소개했습니다.

ONNX 내보내기는 Ultralytics YOLO11에서 지원하는 많은 내보내기 형식 중 하나일 뿐이며, 이를 통해 거의 모든 환경에 모델을 배포할 수 있습니다. 특정 요구 사항에 따라 최대 GPU 성능을 위한 TensorRT 또는 Apple 장치를 위한 CoreML과 같은 다른 내보내기 옵션을 탐색할 수도 있습니다.

사용법에 대한 자세한 내용은 ONNX 공식 문서를 참조하십시오.

또한 다른 Ultralytics YOLO11 통합에 대해 자세히 알고 싶으시면 통합 가이드 페이지를 방문하십시오. 유용한 리소스와 통찰력을 많이 찾을 수 있습니다.

FAQ

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")
# Export a YOLO11n PyTorch model to ONNX format
yolo export model=yolo11n.pt format=onnx # creates 'yolo11n.onnx'

# Run inference with the exported model
yolo predict model=yolo11n.onnx source='https://ultralytics.com/images/bus.jpg'

자세한 내용은 내보내기 문서를 참조하십시오.

YOLO11 모델 배포에 ONNX Runtime을 사용하면 어떤 이점이 있습니까?

YOLO11 모델을 배포하기 위해 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로 내보낸 YOLO11 모델에 사용할 수 있는 배포 옵션은 무엇입니까?

ONNX로 내보낸 YOLO11 모델은 다음을 포함한 다양한 플랫폼에 배포할 수 있습니다.

  • CPU: 최적화된 CPU 추론을 위해 ONNX Runtime 활용.
  • GPU: 고성능 GPU 가속을 위해 NVIDIA CUDA 활용.
  • 엣지 장치: 실시간 온디바이스 추론을 위해 엣지 및 모바일 장치에서 경량 모델 실행.
  • 웹 브라우저: 인터랙티브 웹 기반 애플리케이션을 위해 웹 브라우저 내에서 직접 모델 실행.
  • 클라우드 서비스: 확장 가능한 추론을 위해 ONNX 형식을 지원하는 클라우드 플랫폼에 배포합니다.

자세한 내용은 모델 배포 옵션 가이드를 참조하십시오.

Ultralytics YOLO11 모델에 ONNX 형식을 사용해야 하는 이유는 무엇입니까?

Ultralytics YOLO11 모델에 ONNX 형식을 사용하면 다음과 같은 다양한 이점이 있습니다.

  • 상호 운용성: ONNX를 사용하면 모델을 서로 다른 머신 러닝 프레임워크 간에 원활하게 전송할 수 있습니다.
  • 성능 최적화: ONNX Runtime은 하드웨어별 최적화를 활용하여 모델 성능을 향상시킬 수 있습니다.
  • 유연성: ONNX는 다양한 배포 환경을 지원하므로 수정 없이 여러 플랫폼에서 동일한 모델을 사용할 수 있습니다.
  • 표준화: ONNX는 업계 전반에서 널리 지원되는 표준화된 형식을 제공하여 장기적인 호환성을 보장합니다.

YOLO11 모델을 ONNX로 내보내기에 대한 종합 가이드를 참조하십시오.

YOLO11 모델을 ONNX로 내보낼 때 발생하는 문제를 어떻게 해결할 수 있습니까?

YOLO11 모델을 ONNX로 내보낼 때 종속성 불일치 또는 지원되지 않는 작업과 같은 일반적인 문제가 발생할 수 있습니다. 이러한 문제를 해결하려면 다음을 수행하십시오.

  1. 필요한 종속성의 올바른 버전이 설치되어 있는지 확인하십시오.
  2. 지원되는 연산자 및 기능에 대해서는 공식 ONNX 문서를 확인하십시오.
  3. 오류 메시지에서 단서를 찾고 Ultralytics 일반적인 문제 가이드를 참조하십시오.
  4. 다음과 같이 다양한 내보내기 인수를 사용해 보세요. simplify=True 또는 조정 opset 버전.
  5. 동적 입력 크기 문제를 해결하려면 다음을 설정하세요. dynamic=True 내보내는 동안.

문제가 지속되면 Ultralytics 지원팀에 문의하여 추가 지원을 받으십시오.



📅 1년 전에 생성됨 ✏️ 4개월 전에 업데이트됨

댓글