개발 로그
Edge AI + Defect Detector
개요
최근 다양한 산업 분야에서는 AI를 다각화적으로 적용 하면서 AI 활용 결과 뿐만이 아니라 그 과정 또한 매우 중요해지고 있습니다. 즉 환경이 제한적인 상황에서 동일한 결과를 도출하기까지 얼마나 더 효율적으로 좋은 결과를 내는지가 매우 중요한 요소가 되었습니다.
기존 Defect Detector 프로젝트를
활용하여 YOLO 모델을 이용하여 모델의 경량화 및 최적화 작업을 진행하여 결과 비교를 진행하였습니다.
사용 기술
언어
C++, Python
AI 모델
Customized YOLOv8n
추론
ONNX, ONNX Runtime, Quantization (INT8)
이미지 처리
Edge Detection, Morphology, Color Space
처리 과정
ㆍ YOLOv8n 학습 모델을 A4용지 객체만 탐지하도록 재학습
ㆍ Quantization (FP32 → INT8)
ㆍ ONNX Runtime 기반 추론 엔진 구축
ㆍ 기존 Defect Detector 기반 실시간 처리 파이프라인 설정
결과
ㆍ 입력 이미지 크기 : 640×480
| FP32 | INT8 (k=10) | INT8 (k=50) | 결과 (k=50 기준) | |
|---|---|---|---|---|
| YOLO-avg | 109.2 ms | 74.3 ms | 70.5 ms | 약 -35.3% 개선 |
| YOLO-p95 | 115.9 ms | 78.3 ms | 75.1 ms | 약 -35.2% 개선 |
| 종합 추론 (avg) | 159.01 ms | 124.31 ms | 120.53 ms | 약 -24.3% 개선 |
| FPS (avg) | 6.29 | 8.04 | 8.29 | 약 31.8% 개선 |
| Memory | 258.35 MB | 230.99 MB | 225.01 MB | 약 -12.9% 개선 |
| Raw Score (mean) |
0.2289% | 0.2327% | 0.2282% | - |
ㆍ 요약 : FP32 대비 Raw Score 차이가 적은 Int8 (k=50) 모델로 최종 선정
고찰
ㆍ 초기 알고리즘 구성
- INT8 전체 양자화
ㆍ 개선 과정
- INT8 + 후반 레이어 FP32 단계적 부분 양자화
ㆍ 느낀 점
- 전체 구조 양자화시 모델 자체를 붕괴시킬 수 있음
중요성 확인
- Edge 환경은 단순 속도 개선 뿐만이 아니라
전체적인 시스템 구조까지 고려할 필요가 있음을 느낌