서버에선 잘 됐는데 엣지에선 왜 정확도가 떨어지나
모델을 서버에서 검증할 때는 잘 나오던 정확도가, 엣지 보드에 올리는 순간 떨어지는 경우가 흔하다. 원인은 대개 모델이 아니라 양자화(quantization)다.
왜 양자화가 필요한가
| 형식 | 특징 |
|---|---|
| FP32(서버 학습 기본) | 정밀도 높음, 연산·메모리 부담 큼 |
| INT8(엣지 배포용) | 연산 4배 빠름, 메모리 1/4, 정밀도 손실 있음 |
엣지 보드는 서버급 GPU 메모리·전력이 없어 FP32 모델을 그대로 올리면 프레임레이트가 실용 수준 이하로 떨어진다. INT8로 양자화하면 속도는 확보되지만, 원본 대비 정확도가 일부 낮아지는 대가를 치른다.

정확도 손실을 줄이는 방법
- 양자화 인식 학습(QAT)으로 처음부터 양자화 오차를 반영해 학습
- 클래스별 정확도를 따로 확인 — 전체 평균은 괜찮아도 특정 결함 유형만 크게 떨어지는 경우가 있음
- 속도·정확도 트레이드오프를 애초에 검사 기준(2번 글의 임계값 설정)과 함께 정할 것
손실은 왜 저콘트라스트 결함에 몰리나
양자화 손실은 모든 클래스에 고르게 퍼지지 않고, 배경과 밝기 차가 작은 미세 결함 클래스에 먼저 몰린다. INT8은 한 텐서의 값 범위를 256단계로 나누기 때문에, 값의 범위가 넓은 층일수록 한 단계의 폭이 커지고 그보다 작은 신호 차이는 같은 값으로 합쳐지기 때문이다. 예를 들어 어떤 층의 활성값 범위가 0~25.5라면 한 단계 폭은 약 0.1이고(25.5 ÷ 255), 결함과 배경의 특징값 차이가 0.05에 불과하다면 두 값은 같은 코드로 묻힐 수 있다(수치는 원리 설명용 가정). 큰 결함은 이 계단보다 차이가 커서 살아남고, 작은 결함만 조용히 사라진다. 그래서 전체 정확도가 1~2%p만 떨어진 것처럼 보여도, 저콘트라스트 클래스의 재현율은 따로 확인해야 한다.
이 문제를 소프트웨어만으로 덮을 수는 없다. 양자화는 이미 이미지에 담긴 신호를 깎는 과정이므로, 조명과 렌즈로 결함 신호 자체를 먼저 키워 두는 것이 가장 확실한 보험이다.
배포 전 확인 골격
| 항목 | 내용 |
|---|---|
| ① 최소 불량 사이즈 | 결함이 이미지에서 최소 3 px 이상 — 분해능 10 μm/px라면 30 μm(예시 가정). 1~2 px 결함은 양자화 이전에 이미 신호가 약하다 |
| ② 광학 셋업 | 양자화 전에 결함/배경 밝기 차를 조명으로 먼저 키운다(저콘트라스트 결함일수록 암시야·저각 조명 검토). 렌즈 WD 확보 후 초점 고정 — 학습 이미지와 현장 이미지의 광학 조건 일치 |
| ③ 알고리즘 파라미터 | 캘리브레이션 세트에 결함 샘플과 조명·로트 변주 포함, 클래스별 재현율 저하 허용치를 배포 전에 정의(예시 가정: FP32 대비 2%p 이내), 민감한 층은 FP16 유지(혼합 정밀도) |
세 칸의 순서가 곧 점검 순서다. 결함이 충분한 크기로 담기고(①), 광학이 신호를 키워 두어야(②), 양자화 파라미터(③)를 조정할 여지가 남는다.
자주 묻는 질문
Q. INT8 대신 FP16으로 배포하면 문제가 사라지나?
손실은 크게 줄지만 속도와 메모리 이점도 함께 줄어든다. 민감한 층만 FP16으로 남기는 혼합 정밀도가 현실적인 절충이며, 어느 층이 민감한지는 층별로 양자화해 보며 확인해야 한다.
Q. 캘리브레이션 데이터는 정상 이미지만 넣어도 되나?
정상 이미지만으로 값 범위를 잡으면 결함 부위의 활성값이 범위 끝에서 잘릴 수 있다. 결함 샘플과 조명·로트 변주를 함께 넣어야 실제 분포에 가까운 범위가 잡힌다.
요약
엣지 배포에서 정확도가 떨어졌다면 모델 자체보다 양자화 단계부터 의심하는 게 순서다. 속도를 얻는 대신 어디서 정밀도를 내주고 있는지 클래스 단위로 확인해야 한다.
현장 체크포인트
- 양자화 전후 정확도를 전체 평균이 아니라 결함 클래스별로 비교했는가
- 캘리브레이션 데이터에 결함 샘플과 조명·로트 변주가 들어 있는가
- 학습 이미지와 현장 이미지가 같은 렌즈 WD(작동거리)·초점·조명 조건에서 찍혔는가
- 엣지 보드에서 실측한 프레임레이트가 라인 요구치를 만족하는가
- 저콘트라스트 결함의 재현율 저하폭은 실제 보드와 샘플로 측정하기 전에는 확언 불가
현장 노트
서버에서는 멀쩡했던 정확도가 엣지에서 떨어져서 모델부터 의심했지만, 원인은 FP32에서 INT8로 넘어가는 양자화 단계였습니다. 전체 정확도가 아니라 클래스별로 쪼개서 봤더니 특정 저콘트라스트 결함에서만 손실이 몰려 있었습니다.
함께 읽으면 좋은 글 — Jetson Orin Nano 초기 셋업에서 막히는 네 가지


