엣지 검사의 입력 드리프트는 정확도보다 먼저 보인다
EDGE AI
정확도가 떨어지기 전에 기준판 휘도와 선명도가 먼저 움직입니다. 프레임마다 p99로 경고를 걸면 100장에 한 번 오알람이 나니, 경고는 EWMA 값에 겁니다.
도금 커넥터 단자를 15 μm/px로 검사하는 엣지 장치에서 휘도, 선명도, 임베딩 거리 세 지표의 계산 비용과 평활, 경고와 정지 임계를 차례로 계산했습니다.
읽는 시간 약 11분
엣지 검사기의 성능 저하는 대개 조용히 시작됩니다. 렌즈 앞면에 미세한 유막이 앉고, 조명 LED의 광출력이 조금씩 줄고, 진동으로 초점 링이 아주 조금 돌아가죠. 어느 것도 하루 만에 판정을 바꾸지 않아서, 현장은 과검출이나 미검출이 눈에 띄게 늘어난 뒤에야 무언가 달라졌다는 사실을 알아챕니다. 불량률이 낮은 라인일수록 정답 라벨이 늦게 쌓여 정확도 하락을 확인하는 데 수천 개가 지나가야 하고, 그사이 나간 불량은 되돌릴 수 없습니다.
표면부터 확인합니다. 도금된 금속 단자는 빛을 거의 거울처럼 되돌려 보내서, 동축 낙사 조명 아래에서 평평한 면은 밝고 스크래치나 찍힘의 경사면은 어둡게 찍힙니다. 대신 가공 결의 방향과 도금 두께의 작은 차이에도 밝기와 선명도가 흔들려, 아래 지표의 임계값은 그 흔들림을 품은 채로 정해야 합니다. 이런 반사 조건에서 임계값이 그대로 통할지는 샘플 테스트 전 확언 불가입니다.
가정은 이렇습니다. 2,448 × 2,048 px, 화소 3.45 μm 카메라에 25 mm 렌즈를 달아 렌즈 주점에서 약 134 mm 떨어진 곳(WD1 120 mm 이상 확보)에서 FOV 36.7 mm × 30.7 mm를 15 μm/px로 찍습니다. 조명은 동축 낙사2이고, FOV 모서리에 64 × 64 px 크기의 무광 회색 기준판을 둡니다. 가장 작은 결함은 폭 45 μm 스크래치, 장치는 초당 5장을 판정한다고 봅니다.
정확도는 계단처럼, 입력 통계는 비탈처럼 움직인다
학습된 모델은 밝기 변화와 약한 흐림에 어느 정도 여유를 가집니다. 학습 데이터의 증강 범위 안에서는 입력이 조금 변해도 판정이 유지되다가, 여유가 바닥나는 순간 정확도가 한꺼번에 떨어지죠. 반면 평균 휘도는 조명 출력에 비례해, 선명도는 렌즈가 전달하는 콘트라스트에 비례해 처음부터 연속으로 움직입니다. 입력 통계는 여유가 줄어드는 과정을 보여 주고, 정확도는 그 과정이 끝난 결과만 보여 줍니다.
45 μm 스크래치를 15 μm/px로 보면 폭이 3 px입니다. 렌즈 오염으로 번짐이 1 px만 늘어도 결함 폭의 3분의 1에 해당하는 번짐이 엣지 콘트라스트를 깎습니다. 조명이 10 % 약해지면 고정 계조 임계를 쓰는 전처리에서 콘트라스트 30 계조인 결함은 27 계조로 줄고, 샷 노이즈3가 지배하는 조건이라면 신호 대 잡음비도 √0.9 ≈ 0.95배로 내려갑니다. 모델은 이 단계에서 아직 대부분 맞히지만 여유는 이미 줄고 있어요. 그래서 제가 감시하는 대상은 모델이 틀렸는지보다 입력이 학습 당시의 분포에서 얼마나 멀어졌는지입니다. 정답 라벨은 늦게 오지만 입력 통계는 프레임마다 나옵니다.
세 지표는 원인마다 하나씩 둔다
드리프트4 지표는 원인별로 하나씩, 평균 휘도와 선명도와 임베딩5 거리 세 가지면 대부분의 광학 열화를 가를 수 있습니다. 평균 휘도는 조명 열화를, 선명도는 렌즈 오염과 초점 이탈을, 임베딩 거리는 앞의 둘로 설명되지 않는 분포 변화를 잡습니다. 휘도만 떨어지면 조명, 선명도만 떨어지면 렌즈나 초점, 둘 다 멀쩡한데 임베딩 거리만 커지면 제품이나 공정 쪽 변화를 먼저 의심하는 식으로, 세 지표의 조합이 그대로 원인 진단표가 됩니다.

계산 비용도 작습니다. 2,448 × 2,048 px 영상을 가로세로 4분의 1로 줄이면 612 × 512 = 313,344 px이고, 여기서 구하는 라플라시안 분산6은 추론에 비하면 무시할 만한 연산입니다. 임베딩은 판정 모델의 백본이 이미 계산한 특징 벡터를 다시 쓰므로 추론을 한 번 더 돌릴 필요가 없습니다.
휘도는 제품 영역이 아니라 FOV 모서리에 고정한 64 × 64 px 무광 회색 기준판에서 잽니다. 제품 자체의 색과 광택 편차가 조명 열화와 섞이지 않게 떼어 내려는 장치로, 기준판 하나를 넣는 순간 조명 열화와 제품 편차가 서로 다른 숫자가 됩니다. 저라면 기준판을 설치할 때 그 위치를 도면에 남겨, 카메라를 다시 달아도 같은 화소 영역을 읽게 합니다.
프레임마다 p99를 걸면 100장에 한 번 울린다
경고 임계를 프레임 하나하나의 값에 걸면 아무 일이 없어도 경고가 울립니다. 양품 분포의 p99를 넘으면 경고하는 규칙은 정의상 100장에 한 번꼴로 걸리고, 초당 5장을 판정하는 장치라면 20초마다 한 번이에요. 늘 울리는 경고는 결국 꺼지고, 꺼진 경고는 열화를 알려 주지 못합니다.
그래서 세 지표는 모두 EWMA7로 평활한 값에 임계를 겁니다. λ = 0.05로 두면 약 39장 이동평균과 비슷한 길이로 평활되고, 값의 흔들림은 원 지표의 √(λ ÷ (2 − λ)) ≈ 0.16배로 줄어 몇 % 수준의 느린 기울기도 잡음 위로 드러납니다. NIST의 EWMA 관리도 설명은 λ를 보통 0.2~0.3으로 잡는다고 적고 있는데, 몇 주에 걸친 느린 열화를 보려는 목적이라 저는 더 긴 0.05를 씁니다. 대신 급격한 고장은 늦게 잡히므로 그쪽은 프레임 단위 이상 판정이 따로 맡습니다.
임계는 두 단계로 나눕니다. 경고는 여유가 줄기 시작한 시점에 청소나 점검을 예약하게 하고, 정지는 판정 신뢰가 무너지기 직전에 판정을 보류하고 그 구간 부품을 재검사 대상으로 표시하게 합니다. 기준값은 설치 직후가 아니라 양품으로 안정 운전한 기간의 통계에서 잡고, 렌즈 청소나 조명 교체 뒤에는 세 지표가 기준값으로 돌아오는지 기록해 점검 효과를 남깁니다.
임베딩 거리는 차원부터 줄인다
임베딩 거리를 양품 분포에 대한 마할라노비스 거리8로 정의하면, 그 계산에는 양품 특징의 공분산 행렬과 그 역행렬이 필요합니다. 백본 특징이 512차원이고 양품이 500장이라면 표본 공분산의 계수는 많아야 499라서 역행렬이 존재하지 않습니다. 계산은 돌아가는 것처럼 보여도 아주 작은 고윳값 방향에서 거리가 터무니없이 커져, 경고가 엉뚱한 프레임에서 울리게 됩니다.
그래서 저는 PCA9로 32차원 정도까지 줄인 뒤에 거리를 잽니다. 32차원이면 공분산의 독립 원소가 528개이고 차원당 양품이 15.6장이라 추정이 안정되고, 차원을 줄이기 어렵다면 공분산 축소 추정을 쓰는 길도 있습니다. 경고와 정지 임계는 정규분포를 가정한 카이제곱 값 대신 안정 운전 기간에 EWMA가 그린 실측 분포의 p99와 p99.9로 잡습니다.
45 μm 스크래치에서 거꾸로 잡은 임계표
결함 크기와 광학 셋업, 세 지표의 임계를 한 표에 모았습니다. 휘도와 선명도의 숫자는 출발점으로 두고 현장 실측으로 다시 맞춥니다.
| 구분 | ① 최소 불량 크기 | ② 광학 셋업 · WD | ③ 알고리즘 파라미터 |
|---|---|---|---|
| 단자 스크래치 | 폭 45 μm = 3.0 px (15 μm/px) | 2,448 × 2,048 px, 화소 3.45 μm, 25 mm 렌즈, FOV 36.7 × 30.7 mm, 동축 낙사 조명, WD 120 mm 이상(주점 기준 물체 거리 약 134 mm) | 선명도: 1/4 축소 영상(612 × 512 px)의 라플라시안 분산, 경고 −15 %, 정지는 번짐 1 px 실측값 |
| 단자 찍힘 | 직경 75 μm = 5.0 px | FOV 모서리 무광 회색 기준판 64 × 64 px | 기준판 휘도: 경고 −5 %, 정지 −10 % |
| 분포 변화 | 두 지표로 설명되지 않는 변화 | 백본 특징 재사용(추가 추론 없음) | 임베딩 거리: PCA 32차원 마할라노비스, 경고 EWMA p99, 정지 EWMA p99.9가 20장 연속 |
| 평활 | 초당 5장 판정 기준 | 조명 교체와 렌즈 청소 뒤 기준값 복귀 기록 | EWMA λ = 0.05(약 39장 상당, 흔들림 0.16배) |
이 표에서 가장 느슨할 수 있는 칸은 선명도 정지 임계입니다. 45 μm 스크래치는 15 μm/px에서 정확히 3.0 px라 번짐 1 px(15 μm)만 늘어도 검출 하한 아래로 내려갈 수 있는데, 통계로 정한 −30 % 같은 숫자는 이 기하 조건을 모릅니다. 그래서 저는 설치할 때 초점 링을 일부러 조금씩 돌려 스크래치 엣지 폭이 1 px 넓어지는 지점의 선명도 값을 재고, 그 값을 정지 임계로 삼습니다. 드리프트 임계는 통계만으로 정하지 않고, 최소 결함이 화소 몇 개를 차지하는지에서 거꾸로 계산합니다.
출력 정확도를 직접 보는 편이 나은 경우
반대 접근이 나은 공정도 있습니다. 불량률이 높아 재검사 결과가 매시간 수십 건 넘게 돌아온다면 출력 정확도를 직접 추적하는 쪽이 더 정확한 감시가 됩니다. 품종 전환이 잦은 다품종 라인은 품종마다 임베딩 기준 분포가 달라지므로, 품종별 기준을 유지하기 어렵다면 기준판 휘도와 선명도만 운용하는 편이 현실적입니다. 교정 주기가 드리프트 속도보다 충분히 짧은 설비라면 상시 감시의 이득도 작습니다.
드리프트 감시는 광학 열화를 보정하는 기능이 아니라 알려 주는 기능입니다. 소프트웨어로 휘도를 정규화해 지표를 평평하게 만들면 겉으로는 안정돼 보여도 분해능과 신호 대 잡음비의 손실은 그대로 남고, 해결은 렌즈 청소, 조명 교체, 초점 재조정 같은 하드웨어 조치로 이뤄집니다. 도금 단자는 난반사 성분과 가공 편차가 선명도 지표 자체를 흔들 수 있어서 위 임계값은 샘플 테스트 전 확언 불가입니다.
현장 노트
과검출이 몇 주에 걸쳐 조금씩 늘어나는 엣지 검사기라면, 저는 재학습을 검토하기 전에 저장된 영상의 선명도와 기준판 휘도 추세부터 되짚어 봅니다. 렌즈 앞면의 얇은 유막처럼 광학 쪽 변화가 정확도 하락보다 먼저 입력 영상에 흔적을 남길 수 있기 때문입니다. 지표가 EWMA 경고선을 넘으면 청소나 점검을 먼저 하고, 청소 뒤 세 지표가 기준값으로 돌아오는지 확인합니다. 정지 임계는 설비마다 초점을 일부러 흐려 가며 실측으로 정합니다.
현장 체크포인트
드리프트 감시를 켜기 전에 아래 항목이 갖춰졌는지 봅니다. 기준판과 임계, 기록 세 가지가 모두 있어야 경고가 의미를 가집니다.
- WD 120 mm 이상이 동축 조명 하우징과 기준판 브래킷까지 포함해 실측으로 확보되는가? (주점 기준 물체 거리 약 134 mm)
- 단자의 가공 결과 도금 편차가 선명도 지표를 얼마나 흔드는지 양품 샘플로 쟀는가?
- 휘도 드리프트를 제품 영역 대신 FOV 안의 고정 기준판에서 재는가?
- 경고와 정지 임계를 프레임 값 대신 EWMA 값에 걸었는가? (프레임 p99 경고는 100장에 한 번 울린다)
- 임베딩 거리를 PCA로 줄인 차원에서 계산하고, 기준값을 안정 운전 기간의 양품 통계로 잡았는가?
- 선명도 정지 임계를 엣지 폭 1 px 증가 지점의 실측값으로 정했고, 청소나 교체 뒤 지표 복귀를 기록하는가?
자주 묻는 질문
정확도를 주기적으로 샘플링해 재면 드리프트 감시가 필요 없지 않나요?
불량률이 0.1 %인 라인에서 미검출이 늘었는지 확인하려면 불량이 수십 개는 있어야 하고, 50개를 모으려면 5만 개가 지나가야 합니다. 그동안 입력 통계는 프레임마다 쌓이니 같은 열화를 훨씬 일찍 보여 줍니다. 저는 둘을 함께 쓰되, 경고는 입력 지표가 내고 정확도 샘플링은 그 경고가 맞았는지 확인하는 데 씁니다.
기준판이 더러워지면 어떻게 하나요?
기준판도 렌즈와 같은 먼지를 맞으니, 기준판 휘도가 떨어질 때는 조명 열화와 기준판 오염을 구분해야 합니다. 저는 기준판을 청소 점검표에 넣고, 청소 직후의 휘도를 새 기준값과 비교해 조명 출력 자체가 줄었는지 따로 확인합니다.
용어 풀이
- [1] WD working distance, 작동 거리
렌즈 앞면에서 검사할 면까지의 거리입니다. 본문의 약 134 mm는 얇은 렌즈 근사로 렌즈 주점을 기준으로 계산한 물체 거리이고, 렌즈 앞면 기준 거리는 렌즈 도면으로 확인합니다. ↩ - [2] 동축 낙사 조명 coaxial illumination
반투명 거울로 빛을 렌즈 광축과 같은 방향에서 내려 비추는 조명입니다. 평평한 금속면은 밝게, 기울어진 흠집은 어둡게 찍힙니다. ↩ - [3] 샷 노이즈 shot noise
빛 알갱이가 무작위로 도착해서 생기는 잡음입니다. 신호의 제곱근에 비례하므로 빛이 10 % 줄면 신호 대 잡음비는 약 5 % 줄어듭니다. ↩ - [4] 드리프트 drift
입력 영상의 통계가 학습 당시의 분포에서 시간이 지나며 조금씩 멀어지는 현상입니다. ↩ - [5] 임베딩 embedding
모델의 백본이 영상 한 장을 요약해 내놓는 특징 벡터입니다. 비슷한 영상은 가까운 벡터가 됩니다. ↩ - [6] 라플라시안 분산 variance of Laplacian
영상에 2차 미분 필터를 씌운 결과의 분산으로, 엣지가 또렷할수록 커집니다. 렌즈 오염이나 초점 이탈을 숫자 하나로 보여 줍니다. ↩ - [7] EWMA exponentially weighted moving average
새 값에 λ, 이전 평활값에 1 − λ를 곱해 더하는 이동평균입니다. λ가 작을수록 길게 평활합니다. ↩ - [8] 마할라노비스 거리 Mahalanobis distance
분포가 퍼진 방향과 크기를 고려해 잰 거리입니다. 공분산 행렬의 역행렬이 있어야 계산됩니다. ↩ - [9] PCA principal component analysis
데이터가 가장 크게 퍼지는 방향부터 차례로 골라 차원을 줄이는 방법입니다. ↩
참고 자료
- NIST, 6.3.2.4. EWMA Control Charts (EWMA 통계량의 표준편차를 √(λ ÷ (2 − λ)) × s로 두고, 관리 한계 계수 k는 보통 3, λ는 보통 0.2~0.3으로 소개)
- 계산식: 화소 분해능 = FOV ÷ 픽셀 수, 결함 폭(px) = 결함 폭 ÷ 화소 분해능, 샷 노이즈 기준 신호 대 잡음비 ∝ √신호, EWMA zt = λxt + (1 − λ)zt−1, 등가 이동평균 길이 = 2 ÷ λ − 1, EWMA 표준편차 비 = √(λ ÷ (2 − λ)), 프레임 p99 오알람 간격 = 1 ÷ 0.01장, 표본 공분산 계수 ≤ 표본 수 − 1, 배율 m = 센서 폭 ÷ FOV 폭, 물체 거리 = f × (1 + 1/m)
- 계산 가정: 2,448 × 2,048 px 카메라(화소 3.45 μm), 25 mm 렌즈, FOV 36.7 × 30.7 mm, 최소 결함 45 μm, 결함 콘트라스트 30 계조, 조명 10 % 저하, 초당 5장 판정, 백본 특징 512차원, 양품 기준 500장, PCA 32차원, 불량률 0.1 %
함께 읽으면 좋은 글 — 서버에선 잘 됐는데 엣지에선 왜 정확도가 떨어지나 · LED 조명이 어두워지면 어제의 임계값이 오늘 결함을 놓친다 · 평균 지연이 마감 안에 있어도 안전하지 않은 이유


