ONNX (Open Neural Network Exchange)
Open Neural Network Exchange(ONNX) 형식을 탐구해 보십시오. 빠르고 플랫폼 간 배포 및 하드웨어 최적화를 위해 Ultralytics YOLO26을 ONNX로 내보내는 방법을 배우십시오.
**ONNX (Open Neural Network Exchange)**는 머신러닝 모델을 표현하기 위해 설계된 오픈 소스 형식으로, 다양한 AI 프레임워크와 도구 간의 상호 운용성을 제공합니다. 이는 딥러닝을 위한 범용 번역기 역할을 하며, 개발자가 PyTorch, TensorFlow, Scikit-learn과 같은 하나의 프레임워크에서 모델을 구축한 후, 추론에 최적화된 다른 환경에 원활하게 배포할 수 있도록 지원합니다. ONNX는 공통 연산자 집합과 표준 파일 형식을 정의함으로써, 과거 연구 단계에서 프로덕션 단계로 모델을 이동할 때 필요했던 복잡하고 맞춤화된 변환 스크립트의 필요성을 제거했습니다. 이러한 유연성은 클라우드 GPU에서 학습이 이루어지는 반면, 배포 대상은 엣지 디바이스, 스마트폰, 웹 브라우저와 같은 다양한 하드웨어인 현대의 AI 워크플로우에서 매우 중요합니다.
Link to this section현대 AI에서 ONNX의 역할#
빠르게 변화하는 인공지능 환경에서 연구자와 엔지니어는 개발 수명 주기의 각 단계마다 다른 도구를 사용하는 경우가 많습니다. 데이터 과학자는 실험과 학습을 위해 PyTorch의 유연성을 선호할 수 있지만, 프로덕션 엔지니어는 배포를 위해 TensorRT나 OpenVINO의 최적화된 성능이 필요합니다. 표준 교환 형식이 없다면 이러한 생태계 간에 모델을 이동하는 것은 어렵고 오류가 발생하기 쉽습니다.
ONNX는 계산 그래프에 대한 공유 정의를 제공함으로써 이러한 격차를 해소합니다. 모델이 ONNX로 내보내질 때, 네트워크 구조(레이어, 연결)와 파라미터(가중치, 바이어스)를 프레임워크에 구애받지 않는 방식으로 캡처하여 직렬화합니다. 이를 통해 ONNX Runtime과 같이 하드웨어 가속에 특화된 추론 엔진이 Linux, Windows, macOS, Android, iOS를 포함한 여러 플랫폼에서 모델을 효율적으로 실행할 수 있게 합니다.
Link to this sectionONNX 사용의 주요 이점#
Open Neural Network Exchange 형식을 채택하면 AI 프로젝트에 다음과 같은 전략적 이점을 얻을 수 있습니다:
- 프레임워크 상호 운용성: 개발자는 특정 생태계에 갇히지 않고 프레임워크 간에 전환할 수 있습니다. 사용자 친화적인 Ultralytics Python API를 사용하여 모델을 학습시키고, 이를 내보내어 C++ 애플리케이션이나 웹 기반 JavaScript 환경에서 사용할 수 있습니다.
- 하드웨어 최적화: 많은 하드웨어 제조사가 ONNX와 인터페이스하는 특수 실행 공급자를 제공합니다. 즉, 단일
.onnx파일 하나로 OpenVINO 또는 CoreML과 같은 도구를 사용하여 NVIDIA GPU, Intel CPU 또는 모바일 NPU(신경망 처리 장치)에서 가속할 수 있습니다. - 더 빠른 추론: ONNX Runtime은 노드 융합 및 상수 폴딩과 같은 그래프 최적화를 적용하여 추론 지연 시간을 크게 줄일 수 있습니다. 이는 자율 주행 자동차나 고속 제조 라인과 같은 실시간 애플리케이션에 필수적입니다.
- 배포 간소화: 모든 학습 프레임워크에 대해 별도의 배포 파이프라인을 유지하는 대신, 엔지니어링 팀은 배포 형식을 ONNX로 표준화하여 ModelOps 프로세스를 간소화할 수 있습니다.
Link to this section실제 애플리케이션 사례#
ONNX의 범용성 덕분에 다양한 산업 분야에서 핵심 요소로 자리 잡았습니다. 다음은 그 적용 사례에 대한 두 가지 구체적인 예시입니다:
Link to this section모바일 디바이스에서의 엣지 AI#
Consider a mobile application designed for real-time crop health monitoring. The model might be trained on a powerful cloud server using a large dataset of plant images. However, the app needs to run offline on a farmer's smartphone. By exporting the trained model to ONNX, developers can integrate it into the mobile app using ONNX Runtime Mobile. This allows the phone's processor to run object detection locally, identifying pests or diseases instantly without needing an internet connection.
Link to this section크로스 플랫폼 웹 추론#
In e-commerce, a "virtual try-on" feature might use pose estimation to overlay clothing on a user's webcam feed. Training this model might happen in Python, but the deployment target is a web browser. Using ONNX, the model can be converted and run directly in the user's browser via ONNX Runtime Web. This utilizes the client's device capabilities (WebGL or WebAssembly) to perform computer vision tasks, ensuring a smooth, privacy-preserving experience since video data never leaves the user's computer.
Link to this section관련 용어와의 비교#
ONNX를 다른 모델 형식 및 도구와 구분하면 이해에 도움이 됩니다:
- vs. TensorRT: ONNX는 교환 형식인 반면, TensorRT는 NVIDIA GPU를 위해 특별히 설계된 추론 엔진이자 최적화 도구입니다. 일반적인 워크플로우는 모델을 먼저 ONNX로 내보낸 다음, 그 ONNX 파일을 TensorRT로 파싱하여 NVIDIA 하드웨어에서 최대 처리량을 달성하는 것입니다.
- vs. TensorFlow SavedModel: SavedModel은 TensorFlow의 기본 직렬화 형식입니다. Google 생태계 내에서는 강력하지만 ONNX보다는 범용성이 떨어집니다. 더 광범위한 플랫폼 지원을 얻기 위해 SavedModel을 ONNX로 변환하는 도구가 자주 사용됩니다.
- vs. CoreML: CoreML은 Apple의 온디바이스 머신러닝 프레임워크입니다. 별개의 기술이지만, PyTorch에서 ONNX로, 그리고 ONNX에서 CoreML로 변환(또는 직접 변환)하여 iPhone과 iPad에서 효율적으로 실행하는 경우가 많습니다.
Link to this sectionUltralytics를 사용하여 ONNX로 내보내기#
Ultralytics 생태계는 YOLO26과 같은 최신 모델을 ONNX 형식으로 변환하는 과정을 단순화합니다. 내보내기 기능이 라이브러리에 직접 내장되어 있어 복잡한 그래프 탐색과 연산자 매핑을 자동으로 처리합니다.
다음 예시는 사전 학습된 YOLO26 모델을 배포를 위해 ONNX 형식으로 내보내는 방법을 보여줍니다:
from ultralytics import YOLO
# Load the YOLO26n model (Nano version recommended for edge deployment)
model = YOLO("yolo26n.pt")
# Export the model to ONNX format
# The 'dynamic' argument enables variable input sizes
path = model.export(format="onnx", dynamic=True)
print(f"Model exported successfully to: {path}")일단 내보내기가 완료되면, 이 .onnx 파일은 관리를 위해 Ultralytics Platform에서 활용하거나 ONNX Runtime을 사용하여 엣지 디바이스에 직접 배포할 수 있으며, 이를 통해 거의 모든 환경에서 고성능 컴퓨터 비전을 이용할 수 있습니다.






