Ultralytics YOLO27:
Get Started

YOLO26 모델의 ONNX 내보내기#

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

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

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



시청: Ultralytics YOLO26과 Ultralytics YOLO11의 ONNX 추론 테스트 | YOLO26으로 추론 속도 약 43% 향상 🚀

ONNX 및 ONNX Runtime#

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

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

ONNX model portability across deep learning frameworks

또는 ONNX Runtime과 함께 ONNX 모델을 사용할 수 있습니다. 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는 CUDA를 통한 NVIDIA GPU 가속과 ROCm 및 MIGraphX를 통한 AMD GPU 가속을 완벽하게 지원합니다.

  • 엣지 및 모바일 기기: ONNX는 엣지 및 모바일 기기에서도 사용할 수 있어 기기 내 추론과 실시간 추론 시나리오에 적합합니다. 가볍고 엣지 하드웨어와 호환되며, Huawei Ascend, Snapdragon 기기용 Qualcomm QNN, Rockchip NPU용 RKNN과 같은 벤더별 NPU 형식의 기반이 됩니다.

  • 웹 브라우저: ONNX는 웹 브라우저에서 직접 실행되어 상호작용이 가능한 동적 웹 기반 AI 애플리케이션을 구동할 수 있습니다.

지원 작업#

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

작업YOLOv8YOLO11YOLO26
탐지✅✅✅
세그멘테이션✅✅✅
시맨틱❌❌✅
깊이❌❌✅
분류✅✅✅
포즈✅✅✅
OBB✅✅✅

YOLO26 모델을 ONNX로 내보내기#

YOLO26 모델을 ONNX 형식으로 변환하면 모델 호환성과 배포 유연성을 높일 수 있습니다. Ultralytics YOLO26은 간편한 내보내기 프로세스를 제공하며, 이를 통해 다양한 플랫폼에서 모델 성능을 크게 향상할 수 있습니다.

설치#

필수 패키지를 설치하려면 다음을 실행하세요:

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

설치 과정에 관한 자세한 지침과 모범 사례는 YOLO26 설치 가이드를 확인하세요. YOLO26에 필요한 패키지를 설치하는 중 문제가 발생하면 해결 방법과 팁이 담긴 일반적인 문제 가이드를 참조하세요.

사용법#

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

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

내보내기
from ultralytics import YOLO

# YOLO26 모델 로드
model = YOLO("yolo26n.pt")

# 모델을 ONNX 형식으로 내보내기
model.export(format="onnx")  # 'yolo26n.onnx' 생성

# 보정 데이터로 INT8 양자화 ONNX 모델 내보내기
model.export(format="onnx", quantize=8, data="coco8.yaml")  # 'yolo26n_int8.onnx' 생성
예측
from ultralytics import YOLO

# 내보낸 ONNX 모델 로드
model = YOLO("yolo26n.onnx")

# 추론 실행
results = model("https://ultralytics.com/images/bus.jpg")
검증
from ultralytics import YOLO

# 내보낸 ONNX 모델 로드
model = YOLO("yolo26n.onnx")

# COCO8 데이터셋에서 정확도 검증
metrics = model.val(data="coco8.yaml")

내보내기 인수#

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

인수유형기본값설명
formatstr'onnx'내보낸 모델의 대상 형식으로, 다양한 배포 환경과의 호환성을 정의합니다.
imgszint 또는 tuple640모델 입력에 사용할 이미지 크기입니다. 정사각형 이미지에는 정수를 사용하고, 특정 크기에는 튜플 (height, width)을 사용할 수 있습니다.
quantizeint 또는 strNone양자화 정밀도: 16(FP16) 또는 8(INT8 정적 양자화, 보정 이미지에 data 사용, _int8.onnx 모델 생성)입니다. 32/미설정은 FP32입니다. quantize=8로 학습한 체크포인트는 보정 없이 체크포인트에 포함된 범위에서 Q/DQ 노드로 INT8을 항상 내보내며, 일반 .onnx 이름을 사용합니다. 더 이상 사용되지 않는 half/int8 플래그를 대체합니다.
datastrNoneINT8 보정에 사용하는 데이터셋 YAML입니다. 분류 작업에서는 대신 데이터셋 디렉터리 또는 기본 제공 데이터셋 이름을 사용합니다. quantize=8을 지정하지 않으면 Ultralytics가 모델 태스크에 해당하는 기본 보정 데이터셋을 선택합니다. quantize=8로 학습한 체크포인트에는 데이터셋이 필요하지 않습니다.
fractionfloat, int 또는 list1.0비율, 이미지 수 또는 [train, val, test] 비율/개수로 지정하는 보정 하위 집합입니다. 항목이 두 개인 목록에서는 test이 전체로 설정되고, 0는 건너뜁니다.
dynamicboolFalse동적 입력 크기를 허용하여 다양한 이미지 크기를 유연하게 처리할 수 있습니다.
simplifyboolTrueonnxslim을 사용해 모델 그래프를 단순화하여 성능과 호환성을 높일 수 있습니다.
opsetintNone다양한 ONNX 파서 및 런타임과의 호환성을 위해 ONNX opset 버전을 지정합니다. 설정하지 않으면 지원되는 최신 버전을 사용합니다.
nmsbool, 선택 사항None원시 출력(None, 기본값), 내장 NMS(True) 또는 NMS가 없는 head(False)를 선택합니다.
batchint1내보내기 모델의 배치 추론 크기 또는 predict 모드에서 내보낸 모델이 동시에 처리할 최대 이미지 수를 지정합니다.
devicestrNone내보내기에 사용할 장치를 지정합니다. 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 모델을 배포하는 방법을 알아보세요.

MIGraphX를 사용한 AMD GPU 추론#

Ultralytics는 ONNX Runtime MIGraphX 실행 제공자를 통해 내보낸 ONNX 모델을 AMD GPU에서 실행합니다. ROCm(HIP) 시스템에서 ONNX 백엔드는 최초 사용 시 onnxruntime-ep-migraphx 플러그인을 설치하고 코드 변경 없이 MIGraphXExecutionProvider를 자동으로 선택하며, 모든 YOLO26 태스크를 지원합니다. 사전 요구사항, 설치, 사용법, 벤치마크, 컴파일된 프로그램 캐시에 대한 자세한 내용은 AMD GPU 추론 가이드를 참조하세요.

요약#

이 가이드에서는 여러 플랫폼에서 상호 운용성과 성능을 높이기 위해 Ultralytics YOLO26 모델을 ONNX 형식으로 내보내는 방법을 알아보았습니다. 또한 ONNX Runtime과 ONNX 배포 옵션을 소개했습니다.

ONNX 내보내기는 Ultralytics YOLO26이 지원하는 여러 내보내기 형식 중 하나일 뿐이며, 이를 통해 거의 모든 환경에 모델을 배포할 수 있습니다. 구체적인 요구사항에 따라 최대 GPU 성능을 위한 TensorRT나 Apple 기기용 CoreML과 같은 다른 내보내기 옵션도 살펴볼 수 있습니다.

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

다른 Ultralytics YOLO26 통합 옵션에 대해 알아보려면 통합 가이드 페이지를 방문하세요. 이 페이지에서 유용한 자료와 인사이트를 확인할 수 있습니다.

자주 묻는 질문#

  • Ultralytics를 사용해 YOLO26 모델을 ONNX 형식으로 내보내려면 다음 단계를 따르세요.

    사용법
    from ultralytics import YOLO
    
    # YOLO26 모델 로드
    model = YOLO("yolo26n.pt")
    
    # 모델을 ONNX 형식으로 내보내기
    model.export(format="onnx")  # 'yolo26n.onnx' 생성
    
    # 내보낸 ONNX 모델 로드
    onnx_model = YOLO("yolo26n.onnx")
    
    # 추론 실행
    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: ONNX Runtime을 사용하여 최적화된 CPU 추론을 수행합니다.
    • NVIDIA GPU: NVIDIA CUDA를 활용하여 고성능 GPU 가속을 구현합니다.
    • AMD GPU: Linux에서 고성능 GPU 가속을 위해 AMD ROCm 및 MIGraphX 실행 공급자를 사용합니다.
    • 엣지 디바이스: 엣지 및 모바일 디바이스에서 경량 모델을 실행하여 실시간 온디바이스 추론을 수행합니다.
    • 웹 브라우저: 웹 기반 인터랙티브 애플리케이션에서 모델을 웹 브라우저 내에서 직접 실행합니다.
    • 클라우드 서비스: 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 지원팀에 문의하세요.

댓글