Ultralytics YOLO27:

YOLO26 모델용 ONNX 내보내기#

CPU ONNX 추론 속도 약 43% 향상: YOLO11n 대비 YOLO26n
  • YOLO26n은 CPU ONNX 추론에서 YOLO11n보다 최대 43% 빠르게 실행됩니다(Intel Xeon CPU @ 2.00 GHz). 전체 비교 결과는 YOLO26 모델 페이지를 참조하십시오.

컴퓨터 비전 모델을 배포할 때는 유연하면서도 여러 플랫폼과 호환되는 모델 형식이 필요한 경우가 많습니다.

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



Watch: Ultralytics YOLO26 vs Ultralytics YOLO11 ONNX Inference Test | ~43% Faster Inference with YOLO26 🚀

ONNX 및 ONNX Runtime#

ONNX는 Open 신경망 교환을 의미하며, Facebook과 Microsoft가 처음 개발한 커뮤니티 프로젝트입니다. ONNX는 IBM, Amazon(AWS를 통해), Google 등 다양한 조직의 지원을 받아 지속적으로 공동 개발되고 있습니다. 이 프로젝트의 목표는 머신 러닝 모델을 표현하는 개방형 파일 형식을 만들어 다양한 AI 프레임워크와 하드웨어에서 사용할 수 있도록 하는 것입니다.

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

ONNX model portability across deep learning frameworks

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

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

ONNX Runtime cross-platform inference acceleration

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는 특히 NVIDIA CUDA를 비롯한 GPU 가속을 완벽하게 지원합니다. AMD GPU에서 기본 학습 및 추론을 수행하려면 PyTorch ROCm을 사용하십시오. ONNX 파일에는 여전히 AMD 호환 런타임이 필요합니다.

  • 엣지 및 모바일 장치: ONNX는 엣지 및 모바일 장치로 확장되어 온디바이스 및 실시간 추론 시나리오에 적합합니다. 가볍고 엣지 하드웨어와 호환되며, Huawei Ascend, Snapdragon 장치용 Qualcomm QNN, Rockchip NPU용 RKNN과 같은 공급업체 NPU 형식의 기반으로 사용됩니다.

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

지원되는 작업#

ONNX 내보내기는 Ultralytics의 7가지 모든 작업을 지원합니다. 시맨틱 세그멘테이션과 깊이 추정은 해당 헤드를 제공하는 유일한 모델 제품군인 YOLO26에서만 사용할 수 있습니다.

태스크YOLOv8YOLO11YOLO26
검출
세그먼트
시맨틱
깊이
분류
포즈
OBB

YOLO26 모델을 ONNX로 내보내기#

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

설치#

필요한 package를 설치하려면 다음을 실행하십시오:

설치
# Install the required package for YOLO26
pip install ultralytics

설치 과정과 관련된 자세한 지침 및 모범 사례는 YOLO26 설치 가이드를 확인하세요. YOLO26에 필요한 패키지를 설치하는 동안 문제가 발생하면 일반적인 문제 가이드에서 해결 방법과 팁을 확인하세요.

사용법#

사용 지침을 살펴보기 전에 Ultralytics에서 제공하는 YOLO26 모델을 확인하시기 바랍니다. 이를 통해 프로젝트 요구 사항에 가장 적합한 모델을 선택할 수 있습니다.

ONNX 형식은 내보내기, 예측, 검증 모드를 지원합니다. 모델을 내보낸 다음 내보낸 모델을 로드하여 추론을 실행하거나 정확도를 검증하십시오.

내보내기
from ultralytics import YOLO

# Load a YOLO26 model
model = YOLO("yolo26n.pt")

# Export the model to ONNX format
model.export(format="onnx")  # creates 'yolo26n.onnx'

# Export an INT8-quantized ONNX model with calibration data
model.export(format="onnx", quantize=8, data="coco8.yaml")  # creates 'yolo26n_int8.onnx'
Prediction
from ultralytics import YOLO

# Load the exported ONNX model
model = YOLO("yolo26n.onnx")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
검증
from ultralytics import YOLO

# Load the exported ONNX model
model = YOLO("yolo26n.onnx")

# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")

내보내기 인수#

YOLO26 모델을 ONNX 형식으로 내보낼 때 다양한 인수를 사용하여 특정 배포 요구 사항에 맞게 프로세스를 최적화할 수 있습니다.

인수유형기본값설명
formatstr'onnx'내보낸 모델의 대상 형식으로, 다양한 deployment environment와의 호환성을 정의합니다.
imgszint 또는 tuple640모델 입력에 사용할 이미지 크기입니다. 정사각형 이미지에는 정수를 사용하고, 특정 크기에는 (height, width) tuple을 사용할 수 있습니다.
quantizeint 또는 strNone양자화 정밀도: 16 (FP16) 또는 8 (data의 보정 이미지를 사용하여 ONNX Runtime으로 수행하는 INT8 정적 양자화이며, _int8.onnx 모델을 생성함); 32/미설정은 FP32입니다. quantize=8(으)로 학습된 체크포인트는 보정 없이, 그리고 단순한 .onnx 이름으로, 자사 범위에서 Q/DQ 노드로서 항상 INT8을 내보냅니다. 지원이 중단된 half/int8 플래그를 대체합니다.
datastrNoneINT8 보정에 사용되는 데이터셋 YAML입니다. 분류의 경우 대신 데이터셋 디렉토리나 내장 데이터셋 이름을 사용합니다. quantize=8(과)과 함께 생략되는 경우, Ultralytics는 모델 작업에 적합한 기본 보정 데이터셋을 선택합니다. quantize=8(으)로 학습된 체크포인트는 보정 데이터셋이 필요하지 않습니다.
fractionfloat, int 또는 list1.0Calibration subset은 비율, 이미지 수 또는 [train, val, test] 비율/개수로 지정합니다. 두 항목으로 구성된 목록에서는 test을 전체로 유지하고 0를 건너뜁니다.
dynamicboolFalse동적 입력 크기를 허용하여 다양한 이미지 크기를 더욱 유연하게 처리할 수 있습니다.
simplifyboolTrueonnxslim을 사용하여 모델 그래프를 간소화하며, 이를 통해 성능과 호환성을 향상할 수 있습니다.
opsetintNone다양한 ONNX 파서 및 런타임과의 호환성을 위해 ONNX opset 버전을 지정합니다. 설정하지 않으면 지원되는 최신 버전을 사용합니다.
nmsbool, 선택 사항None원시 출력(None, 기본값), 임베디드 NMS(True) 또는 NMS 없는 헤드(False)를 선택합니다.
batchint1내보낼 모델의 배치 추론 크기 또는 predict 모드에서 내보낸 모델이 동시에 처리할 최대 이미지 수를 지정합니다.
devicestrNone내보내기에 사용할 device를 지정합니다: GPU (device=0), CPU (device=cpu), Apple silicon용 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 형식으로 내보내려면 다음 단계를 따르십시오.

    사용법
    from ultralytics import YOLO
    
    # Load a 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을 사용하면 다음과 같은 여러 장점이 있습니다.

    • 크로스 플랫폼 호환성: ONNX Runtime은 Windows, macOS, Linux 등 다양한 플랫폼을 지원하여 여러 환경에서 모델이 원활하게 실행되도록 합니다.
    • 하드웨어 가속: ONNX Runtime은 CPU, GPU 및 전용 가속기에 대한 하드웨어별 최적화를 활용하여 고성능 추론을 제공합니다.
    • 프레임워크 상호 운용성: PyTorch 또는 TensorFlow와 같은 인기 프레임워크에서 학습한 모델을 ONNX 형식으로 쉽게 변환하고 ONNX Runtime을 사용하여 실행할 수 있습니다.
    • 성능 최적화: ONNX Runtime은 기본 PyTorch 모델과 비교하여 CPU 속도를 최대 3배 향상할 수 있으므로 GPU 리소스가 제한된 배포 시나리오에 적합합니다.

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

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

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

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

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

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

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

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

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

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

댓글