녹색 확인
링크가 클립보드에 복사됨

ONNX 통합을 사용하여 Ultralytics YOLO 모델 내보내기

다양한 하드웨어에 걸쳐 크로스 플랫폼 배포를 위해 ONNX 통합을 사용하여 Ultralytics YOLO11 같은 Ultralytics YOLO11 모델을 내보내는 방법을 알아보세요.

AI 솔루션이 처음 주목받기 시작했을 때 대부분의 모델은 통제된 환경의 강력한 서버에 배포되었습니다. 하지만 기술이 발전함에 따라 배포 범위가 데이터 센터를 넘어 훨씬 더 넓어졌습니다.

오늘날 AI 모델은 클라우드 서버와 데스크톱부터 스마트폰과 엣지 디바이스에 이르기까지 모든 곳에서 실행됩니다. 이러한 변화는 더 빠른 처리, 오프라인 기능, 데이터가 생성되는 곳에서 더 가깝게 작동하는 더 스마트한 시스템을 지원합니다.

특히 컴퓨터 비전은 기계가 시각적 데이터를 해석할 수 있도록 하는 AI의 한 분야입니다. 컴퓨터 비전은 얼굴 인식, 자율 주행, 실시간 비디오 분석과 같은 애플리케이션을 구동하는 데 사용되고 있습니다. 이러한 사용 사례가 증가함에 따라 다양한 하드웨어와 플랫폼에서 원활하게 실행할 수 있는 모델에 대한 필요성도 커지고 있습니다.

하지만 다양한 배포 대상에 컴퓨터 비전 모델을 배포하는 것이 항상 간단한 것은 아닙니다. 장치마다 하드웨어, 운영 체제, 지원되는 프레임워크가 다르기 때문에 유연성과 호환성이 필수적입니다.

그렇기 때문에 다음과 같은 컴퓨터 비전 모델을 내보낼 수 있는 옵션이 있어야 합니다. Ultralytics YOLO11 과 같은 컴퓨터 비전 모델을 다양한 형식으로 내보낼 수 있는 옵션이 중요한 이유입니다. 예를 들어, Ultralytics 지원하는 ONNX (Open Neural Network Exchange) 통합은 훈련과 배포 사이의 간극을 메울 수 있는 실용적인 방법을 제공합니다. ONNX 프레임워크에 구애받지 않고 여러 플랫폼에 걸쳐 모델을 배포할 수 있는 개방형 형식입니다.

그림 1. ONNX 사용하면 한 프레임워크에서 학습된 모델을 다른 프레임워크에서 쉽게 실행할 수 있습니다.

이 글에서는 Ultralytics 지원하는 ONNX 통합에 대해 자세히 살펴보고 유연한 크로스 플랫폼 배포를 위해 YOLO11 모델을 내보내는 방법을 살펴봅니다.

ONNX ONNX 런타임이란 무엇인가요?

오픈 신경망 교환은 머신 러닝 모델의 표준 형식을 정의하는 오픈 소스 프로젝트입니다. 원래 Microsoft Facebook에서 개발한 이 프로젝트는 개발자가 PyTorch 같은 하나의 프레임워크에서 모델을 훈련하고 TensorFlow 같은 다른 프레임워크에서 실행할 수 있게 해줍니다. 이를 통해 특히 컴퓨터 비전과 같은 분야에서 AI 개발의 유연성, 협업성, 접근성을 높일 수 있습니다.

ONNX 공통 연산자 세트와 통합 파일 형식을 제공하므로 서로 다른 도구, 프레임워크, 런타임 및 컴파일러 간에 모델을 쉽게 이동할 수 있습니다. 일반적으로 한 프레임워크에서 학습된 모델은 다른 프레임워크와 쉽게 호환되지 않지만 ONNX 사용하면 모델을 한 번 내보낸 후 CPU(중앙 처리 장치), GPU(그래픽 처리 장치), 모바일 디바이스 또는 에지 하드웨어 등 거의 모든 곳에 배포할 수 있습니다.

또한 ONNX 런타임은 ONNX 형식의 모델을 실행하기 위해 특별히 개발된 고성능 추론 엔진입니다. 서버, 모바일 디바이스, 엣지 하드웨어 등 다양한 플랫폼에서 ONNX 모델을 보다 빠르고 효율적으로 실행할 수 있도록 설계되었습니다. ONNX Runtime은 PyTorch, TensorFlow, TensorFlow Lite, scikit-learn과 같은 인기 있는 프레임워크와 호환되므로 다양한 워크플로에 쉽게 통합하고 필요한 곳에 모델을 배포할 수 있습니다.

그림 2. ONNX 및 ONNX Runtime을 사용하면 유연한 크로스 플랫폼 모델 배포가 가능합니다.

ONNX 주요 기능 

YOLO11 ONNX 형식으로 내보내는 방법에 대해 설명하기 전에 ONNX 모델 형식의 몇 가지 주요 기능을 확인해 보겠습니다. 

도구 간 전환, 다른 기기로 배포, 시스템 업그레이드 등 모든 작업을 원활하게 진행할 수 있도록 ONNX 도와줍니다. 다음은 ONNX 모델 형식의 고유한 특징입니다:

  • 하나의 표준 형식: ONNX 레이어 및 연산과 같이 모델이 구축되는 방식을 설명하는 공통된 방식을 사용합니다(빌딩 블록으로 생각하세요). 모델이 ONNX 변환되면 이 표준을 따르기 때문에 ONNX 지원하는 모든 시스템에서 모델을 이해하고 실행할 수 있습니다.
  • 이전 버전과의 호환성: ONNX 계속 개선되더라도 이전 모델도 최신 버전에서 계속 작동할 수 있도록 보장합니다. 즉, ONNX 업데이트될 때마다 모델을 재교육하거나 다시 빌드할 필요가 없습니다.
  • 그래프 기반 모델 디자인: ONNX 모델은 각 노드가 연산(예: 레이어 또는 수학 함수)을 나타내고 가장자리가 데이터의 흐름을 나타내는 계산 그래프로 구성됩니다. 이 그래프 기반 설계는 유사한 계산 그래프 구조를 활용하는 다양한 시스템과의 통합을 용이하게 합니다.
  • 개발자 친화적인 도구: 모델을 변환, 검증 및 최적화하는 데 도움이 되는 다양한 도구가 함께 제공됩니다. 이러한 도구는 서로 다른 프레임워크 간에 모델을 이동하는 프로세스를 간소화하고 특히 컴퓨터 비전 애플리케이션의 경우 배포 속도를 높일 수 있습니다.

ONNX 통합 개요

Ultralytics YOLO11 같은 Ultralytics YOLO11 모델을 ONNX 형식으로 내보내는 것은 간단하며 몇 단계로 완료할 수 있습니다. 

시작하려면 'pip'와 같은 패키지 관리자를 사용하여 Ultralytics Python 패키지를 설치합니다. 명령 프롬프트나 터미널에서 "pip install ultralytics" 명령을 실행하여 시작할 수 있습니다.

Ultralytics 패키지를 사용하면 다양한 컴퓨터 비전 작업을 위한 모델을 쉽게 훈련, 테스트, 미세 조정, 내보내기 및 배포할 수 있어 전체 프로세스를 더 빠르고 효율적으로 진행할 수 있습니다. 설치하는 동안 문제가 발생하면 일반적인 문제 가이드를 참조하여 해결 방법과 팁을 확인할 수 있습니다.

Ultralytics 패키지가 설치되면 아래 코드를 사용하여 YOLO11 모델을 로드하고 ONNX 형식으로 내보낼 수 있습니다. 이 예에서는 사전 학습된 YOLO11 모델(yolo11n.pt)을 로드하고 이를 ONNX 파일(yolo11nonnx)로 내보내 다양한 플랫폼과 디바이스에 배포할 수 있도록 준비합니다.

from ultralytics import YOLO

model = YOLO("yolo11n.pt")

model.export(format="onnx") 

모델을 ONNX 형식으로 변환한 후에는 다양한 플랫폼에 배포할 수 있습니다. 

아래 예는 내보낸 YOLO11 모델(yolo11nonnx)을 로드하고 이를 통해 추론을 실행하는 방법을 보여줍니다. 추론이란 간단히 말해 학습된 모델을 사용하여 새로운 데이터를 예측하는 것을 의미합니다. 이 예에서는 버스 이미지의 URL을 사용하여 모델을 테스트해 보겠습니다.

onnx_model = YOLO("yolo11n.onnx")

results = onnx_model("https://ultralytics.com/images/bus.jpg",save=True)

이 코드를 실행하면 실행/감지/예측 폴더에 다음 출력 이미지가 저장됩니다.

그림 3. 이미지에서 내보낸 YOLO11 모델을 사용하여 추론 실행하기.

ONNX 통합은 언제 선택해야 하나요?

Ultralytics Python 패키지는 TorchScript, CoreML, TensorRT 및 ONNX 포함한 여러 형식으로 모델을 내보낼 수 있습니다. 그렇다면 왜 ONNX 선택해야 할까요?

ONNX 돋보이는 이유는 프레임워크에 구애받지 않는 형식이라는 점입니다. 다른 많은 내보내기 형식이 특정 도구나 환경에 종속되어 있는 반면, ONNX 표준화된 형식과 공유 연산자 세트를 사용합니다. 따라서 휴대성이 뛰어나고 하드웨어 친화적이며 클라우드 서버, 모바일 앱, 엣지 디바이스 등 크로스 플랫폼 배포에 이상적입니다. 

다음은 ONNX 통합이 YOLO11 프로젝트에 이상적인 선택이 될 수 있는 몇 가지 이유입니다:

  • 휴대용 배포: ONNX 내보낸 YOLO11 모델은 코드 변경이나 재교육 없이 다양한 플랫폼에 배포할 수 있습니다.
  • 업계 전반의 지원: ONNX 주요 AI 회사 및 프레임워크에서 지원하므로 신뢰할 수 있고 널리 인정받는 형식입니다. 여러 디바이스에서 PDF가 작동하는 방식과 마찬가지로 장기적인 호환성을 보장합니다.
  • 미래 지향적인 개발: ONNX 사용하면 모델 투자를 보호할 수 있습니다. 도구가 발전함에 따라 ONNX 새롭거나 다른 환경에서도 모델의 관련성과 유용성을 유지합니다.
  • 벤더 종속성 없음: 일부 도구는 자사 시스템만 사용하도록 제한하여 모델의 기능을 제한할 수 있습니다. ONNX 단일 설정에 얽매이지 않고 필요에 가장 적합한 플랫폼을 선택할 수 있도록 함으로써 이러한 문제를 방지합니다.

YOLO11 및 ONNX 모델 형식의 애플리케이션

다음으로 ONNX 통합을 통해 YOLO11 배포할 수 있는 몇 가지 실제 애플리케이션을 살펴보겠습니다.

YOLO11 사용하여 창고에서 재고 추적하기

바쁜 물류창고에서는 모든 제품과 포장을 항상 주시하기 어렵습니다. 컴퓨터 비전 시스템은 작업자가 선반에서 제품을 찾고 제품 수, 유형 등과 같은 인사이트를 얻을 수 있도록 도와줍니다. 이러한 시스템을 통해 기업은 방대한 재고를 자동으로 관리하고 창고 작업자의 시간을 크게 절약할 수 있습니다.

특히 스마트 물류창고에서는 ONNX 내보낸 YOLO11 모델을 사용하여 카메라와 엣지 디바이스를 사용하여 실시간으로 품목을 식별하고 계산할 수 있습니다. 내보낸 모델은 선반이나 팔레트를 스캔하여 재고 수준, 누락된 품목 또는 빈 공간을 감지하는 데 도움이 될 수 있습니다. ONNX 내보내면 모델이 가볍고 효율적이므로 스마트 카메라와 같은 소형 엣지 디바이스에서 직접 실행할 수 있으므로 값비싼 서버나 지속적인 클라우드 액세스가 필요하지 않습니다.

그림 4. YOLO11 사용하여 패키지를 감지하고 카운트하는 예시.

YOLO11 통한 병원 폐기물 관리

전 세계 병원에서는 사용한 장갑과 주사기부터 수술 중 사용한 장비(일회용 또는 오염된 가위와 메스 같은 수술 도구)에 이르기까지 매일 많은 양의 폐기물이 발생합니다. 실제로 연구에 따르면 병원에서는 매년 약 5백만 톤의 폐기물이 발생하는데, 이는 하루에 침대 한 개당 29파운드의 폐기물이 발생하는 양입니다. 

이러한 폐기물을 올바르게 분류하는 것은 위생, 안전 및 규정 준수를 위해 필수적입니다. 병원에서는 ONNX 형식으로 내보낸 YOLO11 모델을 통해 폐기물 처리를 자동화하고 실시간으로 모니터링할 수 있습니다.

예를 들어 수술실이나 복도와 같은 공간의 쓰레기통 근처에 카메라를 설치하면 버려지는 물품을 모니터링할 수 있습니다. 다양한 유형의 의료 폐기물을 인식하도록 훈련된 맞춤형 YOLO11 모델은 영상을 분석하여 무엇이 버려지는지 식별할 수 있습니다. 사용한 주사기를 일반 쓰레기통에 버리는 등 잘못된 쓰레기통에 품목이 버려지면 시스템이 빛이나 소리로 직원에게 즉시 경고하도록 설정할 수 있어 오염을 방지하고 규정을 준수할 수 있습니다.

그림 5. YOLO11 사용하여 의료 기기 감지.

YOLO11 작물 모니터링

농작물을 수확할 적절한 시기를 아는 것은 농산물의 품질과 농장의 전반적인 생산성 모두에 큰 영향을 미칠 수 있습니다. 전통적으로 농부들은 경험과 수작업 검사에 의존했지만 최근 기술의 발전으로 이러한 방식이 바뀌기 시작했습니다.

이제 농부들은 ONNX 포맷으로 수출되는 YOLO11 같은 컴퓨터 비전 혁신을 통해 자동화와 정밀성을 현장에 도입할 수 있습니다. 농부들은 드론이나 트랙터나 기둥에 장착된 카메라를 사용하여 토마토, 사과, 밀과 같은 농작물의 이미지를 캡처할 수 있습니다. 그런 다음 YOLO11 사용하여 농작물의 색상, 크기, 분포와 같은 주요 지표를 감지할 수 있습니다. 농부들은 이 정보를 바탕으로 농작물이 수확할 준비가 되었는지, 아직 숙성 중인지, 아니면 이미 정점을 지났는지 판단할 수 있습니다.

그림 6. YOLO11 항공 드론 영상에서 농작물을 감지하는 데 사용할 수 있습니다. 

고려해야 할 ONNX 제한 사항

ONNX 이식성, 플랫폼 간 호환성, 프레임워크 상호 운용성 등 다양한 이점을 제공하지만, 염두에 두어야 할 몇 가지 제한 사항이 있습니다.

  • 모델 크기: 모델을 ONNX 형식으로 변환하면 원래 형식에 비해 파일 크기가 커질 수 있습니다. 정량화 및 가지치기와 같은 기술을 사용하면 성능에 큰 영향을 주지 않고 모델 크기를 줄임으로써 이 문제를 완화할 수 있습니다.
  • 런타임 호환성: ONNX 런타임은 플랫폼 간 호환성을 위해 설계되었지만 하드웨어 및 운영 체제에 따라 성능과 지원이 다를 수 있습니다. 
  • 디버깅 과제: ONNX 모델 디버깅은 PyTorch TensorFlow 같은 기본 프레임워크보다 더 복잡할 수 있습니다. 오류 메시지가 덜 설명적이어서 문제를 정확히 파악하기가 더 어려울 수 있습니다. 하지만 모델 시각화를 위한 Netron과 같은 도구와 ONNX 런타임의 로깅 기능을 사용하면 문제 해결에 도움이 될 수 있습니다.

주요 요점

Ultralytics YOLO11 ONNX 내보내면 훈련된 컴퓨터 비전 모델을 노트북, 모바일 장치, 소형 스마트 카메라 등 거의 모든 곳에 쉽게 배포할 수 있습니다. ONNX 통합을 사용하면 단일 프레임워크나 플랫폼에 종속되지 않으므로 애플리케이션에 가장 적합한 환경에서 모델을 유연하게 실행할 수 있습니다. 

이를 통해 교육에서 실제 배포로 더 빠르고 효율적으로 전환할 수 있습니다. 창고에서 재고를 추적하든 병원 폐기물을 올바르게 처리하든, 이 설정은 시스템을 보다 원활하게 운영하고 오류를 줄이며 귀중한 시간을 절약하는 데 도움이 됩니다.

컴퓨터 비전과 AI에 대해 자세히 알아보고 싶으신가요? GitHub 리포지토리를 살펴보고, 커뮤니티와 소통하고, 라이선스 옵션을 확인하여 컴퓨터 비전 프로젝트를 시작하세요. 제조 분야의 AI와 자동차 산업의 컴퓨터 비전과 같은 혁신을 모색하고 있다면 솔루션 페이지를 방문하여 자세한 내용을 알아보세요. 

LinkedIn 로고트위터 로고Facebook 로고복사 링크 기호

이 카테고리에서 자세히 보기

인공지능의 미래
를 함께 만들어 갑시다!

머신 러닝의 미래와 함께하는 여정 시작하기