너도 할 수 있는, 너도밤나무 코딩

[YOLO] YOLO export failed : pt to onnx 포맷 변환이 안될때 본문

인공지능(AI, Artificial Intelligence)/비전 AI(Vision AI)

[YOLO] YOLO export failed : pt to onnx 포맷 변환이 안될때

곡마일장 2025. 8. 18. 15:29
반응형

YOLO(v5, v8, v9 등)로 학습한 모델을 배포하려고 할 때, 보통 ONNX 포맷으로 변환해서 다양한 환경(C++, TensorRT, OpenVINO 등)에 활용합니다.
그런데 yolo export model=best.pt format=onnx 명령을 실행했을 때 변환이 실패하는 경우가 있습니다. 이번 글에서는 그 원인과 해결 방법을 정리해 보겠습니다.


1. 자주 발생하는 에러 상황

  • Unsupported operator: ONNX 변환기에서 아직 지원하지 않는 연산
  • Graph conversion failed: 모델 내부 레이어 변환 불가
  • opset mismatch: 지정한 opset 버전과 호환 안 됨
  • CUDA 관련 에러: GPU 빌드 환경 충돌

2. 주요 원인과 해결 방법

1) PyTorch / ONNX 버전 불일치

YOLO 최신 버전은 최신 PyTorch 및 ONNX와 호환이 필요합니다.

 
pip install --upgrade torch torchvision onnx onnxruntime

2) Opset 버전 지정 필요

ONNX 변환은 opset 버전에 민감합니다.

 
yolo export model=best.pt format=onnx opset=12
  • 기본은 12~17까지 테스트 권장
  • 환경에 따라 opset 13이나 15가 가장 안정적일 때가 많음

3) 동적 입력 크기 문제

Dynamic shape 옵션 때문에 변환이 깨질 수 있습니다.

 
yolo export model=best.pt format=onnx imgsz=640

--> 정적 크기로 변환 후 필요하면 후처리


4) GPU 빌드 문제

CUDA와 ONNX 변환기 충돌 시 CPU에서 먼저 export 시도합니다.

 
yolo export model=best.pt format=onnx device=cpu

5) TorchScript 경유

직접 변환이 안 된다면 TorchScript로 한번 감싼 뒤 ONNX 변환을 시도해볼 수 있습니다.

 
yolo export model=best.pt format=torchscript
yolo export model=best.torchscript format=onnx

3. 정리

YOLO 모델을 ONNX로 변환하다 실패했을 때는

  1. PyTorch/ONNX 최신 업데이트
  2. opset 버전 지정
  3. 정적 입력 크기 설정
  4. CPU에서 export
  5. TorchScript 경유

이 순서로 접근하면 대부분 해결할 수 있습니다.


긴글 읽어주셔서 감사합니다.

반응형