25분
엣지 배포: ONNX, TensorRT 변환 개요
Day 5: 실전 프로젝트 — 불량 판별 검사 시스템
엣지 배포: ONNX, TensorRT 변환 개요
비전 AI — 제조 외관검사 시스템 > Day 5: 실전 프로젝트 — 불량 판별 검사 시스템
학습 목표
모델을 엣지 디바이스에 배포하는 전체 흐름을 이해한다 ONNX, TensorRT 형식의 장점과 변환 방법을 파악한다 엣지 배포 시 고려사항(속도, 메모리, 정확도)을 이해한다
엣지 배포: 모델을 생산 라인에 올리기
학습은 GPU 서버에서 했지만, 실제 검사는 생산 라인 옆 소형 PC에서 해야 한다. 이를 위해 모델을 최적화하여 엣지 디바이스에 배포한다.
배포 파이프라인
[모델 배포 파이프라인]
PyTorch 모델 (.pth)
↓
ONNX 변환 (.onnx)
↓
TensorRT 최적화 (.engine) [NVIDIA GPU가 있을 때]
또는
OpenVINO 최적화 (.xml) [Intel CPU/VPU]
↓
엣지 디바이스에서 추론
ONNX (Open Neural Network Exchange)
[ONNX란?]
다양한 프레임워크 간 모델 호환 표준
PyTorch → ONNX → TensorRT / OpenVINO / CoreML
↓
어디서든 추론 가능
[변환 코드]
import torch
model = ... # 학습된 PyTorch 모델
dummy_input = torch.randn(1, 3, 224, 224)
torch.onnx.export(
model,
dummy_input,
"model.onnx",
opset_version=11,
input_names=['input'],
output_names=['output']
)
[YOLO11 ONNX 변환]
from ultralytics import YOLO
model = YOLO('best.pt')
model.export(format='onnx') # 한 줄!
TensorRT (NVIDIA 최적화)
[TensorRT 장점]
- NVIDIA GPU 전용 최적화
- 추론 속도 2~5배 향상
- FP16/INT8 양자화 지원
- 메모리 사용량 감소
[YOLO11 TensorRT 변환]
model.export(format='engine') # TensorRT
[속도 비교 (YOLO11n, 640x640)]
PyTorch FP32: 12ms
ONNX: 8ms
TensorRT FP16: 3ms ← 4배 빠름!
TensorRT INT8: 2ms ← 6배 빠름!
엣지 디바이스 선택
| 디바이스 | GPU | 가격 | 추론 속도 | 용도 |
|---|---|---|---|---|
| NVIDIA Jetson Orin Nano | 1024 CUDA | $200 | 30 FPS | 비전 검사 추천 |
| NVIDIA Jetson AGX Orin | 2048 CUDA | $1,000 | 100 FPS | 고성능 |
| Intel NUC + OpenVINO | 내장 GPU | $300 | 15 FPS | CPU 기반 |
| Raspberry Pi 5 | 없음 | $80 | 2 FPS | 프로토타입 |
| 산업용 PC + RTX 4060 | RTX 4060 | $1,500 | 150 FPS | 프로덕션 |
제조 검사 추천: NVIDIA Jetson Orin Nano ($200, 30 FPS)
양자화: 정확도와 속도의 트레이드오프
[양자화 수준]
FP32 (기본): 정확도 100%, 속도 1x, 메모리 1x
FP16 (반정밀): 정확도 99.9%, 속도 2x, 메모리 0.5x
INT8 (정수): 정확도 99~99.5%, 속도 3x, 메모리 0.25x
제조 검사:
FP16이면 충분 (정확도 거의 동일, 속도 2배)
INT8은 캘리브레이션 데이터 필요AI로 학습하기 — 꿀팁
✅ONNX·TensorRT 변환 성능 향상 주장 검증AI 학습 팁
ONNX, TensorRT 변환 후 성능 향상 수치는 하드웨어와 모델 구조에 따라 크게 달라지므로, 과장된 주장을 실제 제조 환경 기준으로 검증해야 한다.
제조 엣지 배포를 위한 ONNX와 TensorRT 변환에 대한 다음 주장들을 검증해줘: 1) 'TensorRT 변환만으로 PyTorch 모델 대비 항상 5배 이상 추론 속도가 향상된다', 2) 'ONNX로 변환하면 모든 PyTorch 모델 연산자를 정확히 재현하여 정확도 손실이 없다', 3) 'INT8 양자화를 적용하면 FP32 모델 대비 4배 빠르고 정확도 손실은 1% 미만이다', 4) 'TensorRT 엔진은 한 번 빌드하면 모든 NVIDIA GPU에서 동일하게 동작한다'. NVIDIA Jetson Nano(메모리 4GB)에 EfficientNet-B0 기반 PCB 불량 검사 모델을 배포하는 시나리오에서 각 주장의 실제 기대치와 주의사항을 설명해줘.
이 팁이 도움이 됐나요?
핵심 포인트
- • PyTorch → ONNX → TensorRT/OpenVINO 변환이 표준 배포 파이프라인
- • YOLO11은 model.export()로 ONNX/TensorRT 한 줄 변환
- • TensorRT FP16으로 정확도 유지하면서 추론 속도 2~4배 향상
- • NVIDIA Jetson Orin Nano가 제조 비전 검사에 가성비 최고