Yolo 비전 선전
선전
지금 참여하기
용어집

ONNX (개방형 신경망 교환)

ONNX 어떻게 AI 모델 이동성과 상호 운용성을 향상시켜 다양한 플랫폼에서 Ultralytics YOLO 모델을 원활하게 배포할 수 있도록 지원하는지 알아보세요.

오픈 신경망 교환ONNX은 오픈 소스 표준으로, 다음과 같은 방식으로 머신 러닝(ML) 모델을 표현하도록 설계된 다양한 프레임워크와 하드웨어에서 이식성을 보장합니다. 원래 Microsoft Facebook과 같은 회사에서 개발한 ONNX AI를 위한 '범용 번역기' 역할을 합니다. 이를 통해 개발자는 모델을 하나의 에코시스템에서 모델을 훈련할 수 있습니다. PyTorch와 같은 한 생태계에서 모델을 학습하고 다른 에코시스템에 원활하게 배포할 수 있습니다. TensorFlow 또는 전문화된 추론 엔진. 이러한 상호 운용성 덕분에 연구 환경에서 프로덕션 애플리케이션으로 이동할 때 네트워크를 재구축하거나 재교육할 필요가 없습니다, 모델 배포 파이프라인을 모델 배포 파이프라인을 크게 간소화합니다.

ONNX 작동 방식

ONNX 핵심은 공통 연산자 집합을 정의하는 것입니다. 딥 러닝(DL) 및 머신 러닝 모델의 구성 요소와 표준 파일 형식을 정의합니다. 모델이 ONNX 변환되면 그 계산 구조는 정적 계산 그래프에 매핑됩니다. 계산 그래프로 매핑됩니다. 이 그래프에서 노드는 수학적 연산(예: 컨볼루션 또는 활성화)을 나타냅니다. 연산(컨볼루션 또는 활성화 함수 등)을 나타내고, 에지는 노드 사이의 데이터 텐서 흐름을 나타냅니다.

이 그래프 표현은 표준화되어 있기 때문에 하드웨어 제조업체는 다음에 대해 최적화된 실행 프로바이더를 구축할 수 있습니다. ONNX. 즉, 하나의 .onnx 파일은 다음을 포함한 다양한 하드웨어에서 가속할 수 있습니다. CPU, GPU (그래픽 처리 장치)또는 전문 TPU Tensor 처리 장치)종종 고성능 ONNX 런타임.

ONNX 모델 내보내기

다음 사용자의 경우 ultralytics 패키지에서 학습된 모델을 ONNX 형식으로 변환하는 것은 간단한 프로세스입니다. 라이브러리는 복잡한 레이어 매핑을 ONNX 표준에 자동으로 처리합니다. 다음 코드 스니펫은 YOLO11 모델을 준비하여 더 광범위한 배포를 위해 준비합니다.

from ultralytics import YOLO

# Load a pretrained YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to ONNX format
# This creates 'yolo11n.onnx' in the current directory
model.export(format="onnx")

실제 애플리케이션

ONNX 유연성은 특히 다음과 같은 최신 AI 인프라에서 중요한 구성 요소입니다. 컴퓨터 비전(CV) 작업.

  1. 크로스 플랫폼 모바일 배포: 개발자가 파이토치에서 객체 감지 모델을 훈련할 수 있습니다. 강력한 워크스테이션에서 훈련할 수 있습니다. 하지만 최종 애플리케이션은 iOS Android 기기 모두에서 실행되어야 합니다. 개발자는 모델을 ONNX 개발자는 동일한 모델 파일을 모바일 애플리케이션에 통합할 수 있습니다. 모바일용ONNX 런타임을 사용하여 동일한 모델 파일을 모바일 애플리케이션에 통합할 수 있습니다. 별도의 코드베이스를 유지 관리하지 않고도 여러 운영 체제에서 일관된 동작을 보장할 수 있습니다.
  2. 레거시 시스템과의 통합: 많은 산업용 애플리케이션은 성능과 안정성을 위해 C++ 또는 C#과 같은 언어를 사용하여 구축됩니다. Python 트레이닝의 표준이지만, Python 모델을 C++ 프로덕션 환경에 통합하는 것은 느리고 오류가 발생하기 쉽습니다. ONNX 이러한 격차를 해소합니다. 컴퓨터 비전을 사용하는 제조 시설 로봇 공학에서의 컴퓨터 비전 로봇 분야에서 컴퓨터 비전을 사용하는 제조 시설에서는 Python 모델을 학습하고 ONNX 내보낸 다음 C++ 제어 소프트웨어에 직접 로드하여 다음과 같은 작업을 수행할 수 있습니다. 고속 실시간 추론이 가능합니다. 추론할 수 있습니다.

ONNX 관련 개념

ONNX 다른 도구와 상호 작용하는 방식을 이해하면 올바른 배포 전략을 선택하는 데 도움이 됩니다.

  • ONNX TensorRT: ONNX 모델을 표현하기 위한 파일 형식입니다, TensorRT 는 고성능 최적화 SDK입니다. 로 NVIDIA GPU를 위해 특별히 개발되었습니다. 이 둘은 종종 함께 작동합니다. 개발자는 모델을 ONNX 내보내고 그런 다음 TensorRT 사용하여 해당 ONNX 파일을 수집하여 공격적인 모델 최적화 레이어 퓨전 및 보정과 같은 기술을 적용하여 NVIDIA 하드웨어에서 속도를 극대화합니다.
  • ONNX 대 프레임워크 형식(예: .pt, .h5): PyTorch 같은 네이티브 형식 .pt 또는 Keras .h5 는 훈련과 저축에 탁월합니다. 모델 가중치 를 사용할 수 있습니다. 그러나 모델을 실행하려면 원래 프레임워크가 설치되어 있어야 하는 경우가 많습니다. ONNX 모델을 훈련 프레임워크에서 모델을 분리하여 더 쉽게 수행할 수 있습니다. 엣지 AI 전체 교육 라이브러리를 설치하는 것이 비현실적인 배포 라이브러리를 설치하는 것이 비현실적인 배포.
  • ONNX 정량화: ONNX 형식인 반면 모델 양자화는 정밀도를 낮춰 모델 크기를 줄이고 모델 크기를 줄이고 정밀도를 낮춤으로써 속도를 높이는 기술입니다(예: float32에서 int8로). ONNX 표준은 다음을 지원합니다. 양자화된 연산자를 지원하므로 개발자는 양자화된 모델을 양자화된 모델을 효율적으로 저장하고 실행할 수 있습니다.

Ultralytics 커뮤니티 가입

AI의 미래에 동참하세요. 글로벌 혁신가들과 연결하고, 협력하고, 성장하세요.

지금 참여하기