정상 패치를 전부 기억해야 하는가 — 메모리뱅크 이상탐지의 엣지 배포와 코어셋 설계
EDGE AI / ALGORITHM
사출 성형 커넥터 하우징처럼 불량 샘플을 모으기 어려운 공정에서는 정상품만으로 학습하는 메모리뱅크 기반 이상탐지(PatchCore 계열)가 자주 선택됩니다. 사전학습된 백본에서 정상 이미지의 패치 특징을 뽑아 저장해 두고, 검사 이미지의 각 패치가 가장 가까운 정상 패치와 얼마나 떨어져 있는지로 이상 점수를 매기는 방식입니다. 서버에서 잘 동작하던 이 구조는 엣지 장치로 옮겨지는 순간 메모리와 탐색 지연이라는 두 문제를 한꺼번에 드러냅니다.
방치하면 비용은 두 방향으로 나옵니다. 메모리뱅크를 근거 없이 줄이면 정상 변동의 일부가 기억에서 빠져 정상품이 이상으로 판정되는 과검출이 늘고, 줄이지 않으면 최근접 탐색 지연이 라인 택트를 넘어 전수 검사가 샘플링 검사로 후퇴합니다. 과검출을 줄이려고 임계를 올리는 순간에는 작은 흑점이 조용히 통과하기 시작합니다. 어느 쪽이든 “정상만 알면 된다”는 방식의 장점이 현장에서 사라집니다.
해법은 메모리뱅크를 모델 가중치가 아니라 설계 가능한 데이터 구조로 다루는 것입니다. 입력 해상도와 패치 크기로 최소 결함 크기를 먼저 정하고, 그 조건에서 메모리뱅크 원본 크기를 계산한 뒤, 코어셋 서브샘플링 비율을 메모리·탐색 지연·검출 성능의 교환 관계 위에서 고릅니다. 이 글은 논문 수치를 인용하지 않고, 원리와 설계 가정만으로 이 계산을 따라갑니다.
메모리뱅크 이상탐지의 검출 하한은 모델이 아니라 패치 한 칸이 덮는 µm에서 정해집니다.
1. 입력 해상도와 패치 크기가 최소 결함 크기를 정한다
Point. 메모리뱅크 방식에서 최소 검출 결함 크기는 학습 데이터의 양보다 먼저 입력 해상도와 백본의 특징 stride로 결정됩니다.
Reason. 이상 점수는 패치 특징 단위로 계산됩니다. 백본 중간 층의 stride가 8이면 특징맵 한 칸은 입력 8 × 8 px 영역을 요약하고, 3 × 3 이웃 집계까지 더하면 실제로 반영되는 영역은 그보다 넓습니다. 결함이 이 영역에서 차지하는 비율이 작을수록 패치 특징은 정상 텍스처 쪽으로 끌려가 이상 점수가 낮아집니다. 더 결정적인 단계는 카메라 원본을 백본 입력 크기로 축소하는 전처리입니다. 축소 배율만큼 화소 분해능이 거칠어지고, 그 순간 작은 결함은 패치 안에서 존재감을 잃습니다.
Example. 2448 × 2048 px 카메라로 FOV 49 mm × 41 mm를 촬영하면 화소 분해능은 20 µm/px입니다. 이 이미지를 통째로 512 × 512 px로 축소해 넣으면 가로 기준 약 95.7 µm/px가 되어, 직경 80 µm 흑점은 1 px에도 미치지 못합니다. 반대로 512 px 타일 20장(5 × 4, 가로 일부 중첩)으로 잘라 원본 분해능을 유지하면 같은 흑점이 4 px, stride 8 패치 셀(160 µm) 폭의 절반을 점유합니다.
Point. 최소 결함 설계의 첫 계산은 µm/px × stride = 패치 셀 크기(µm)입니다. 결함이 셀 폭의 절반 안팎을 점유하도록 타일링과 FOV를 정한 뒤에야 메모리뱅크 크기를 논할 수 있습니다.
2. 메모리뱅크 원본 크기와 코어셋 서브샘플링
Point. 원리대로 모든 정상 패치를 저장하면 메모리뱅크는 엣지 장치의 메모리를 쉽게 넘어서므로, 코어셋 서브샘플링은 선택이 아니라 전제입니다.

Reason. 메모리뱅크 크기는 정상 이미지 수 × 이미지당 타일 수 × 타일당 패치 수 × 특징 차원 × 자료형 크기입니다. 곱셈 구조이므로 해상도를 지키려고 타일을 늘리는 순간 메모리가 그대로 비례해 커집니다. 코어셋 서브샘플링은 특징 공간을 고르게 덮는 대표 패치만 남기는 탐욕적 선택(greedy coreset) 절차로, 무작위 추출과 달리 드물게 나타나는 정상 변동을 우선 보존하려는 성질이 있습니다. 그래도 비율을 낮출수록 보존되는 드문 변동은 줄어듭니다.
Example. 설계 가정으로 정상 100장, 이미지당 타일 20장, 타일당 64 × 64 = 4,096 패치, 특징 차원 384, FP16(2 byte)을 두면 원본 메모리뱅크는 8,192,000 패치 × 768 byte ≈ 6.29 GB입니다. 코어셋 1%로 줄이면 81,920 패치, 약 62.9 MB가 되어 엣지 장치의 메모리 예산에 들어옵니다. 0.1%로 더 줄이면 약 6.3 MB이지만, 그만큼 드문 정상 변동 — 게이트 자국 주변의 광택 변화, 금형 파팅 라인, 로트별 미세한 색조 차이 — 가 뱅크에서 빠질 위험이 커집니다.
Point. 코어셋 비율은 메모리 목표에서 역산하는 값이 아니라, 정상 변동 중 무엇을 기억에서 빼도 되는지를 정상 검증 세트로 확인한 뒤 정하는 값입니다.
3. 최근접 탐색 지연 — 엣지에서 먼저 막히는 곳
Point. 엣지 배포에서 가장 먼저 한계에 닿는 것은 대개 메모리가 아니라 최근접 탐색 연산량입니다.
Reason. 검사 이미지의 모든 패치가 메모리뱅크 전체와 거리를 계산하면, 연산량은 쿼리 패치 수 × 뱅크 크기 × 특징 차원에 비례합니다. 코어셋 비율을 10배 줄이면 메모리와 전수 탐색 연산량이 함께 10배 줄어드는 선형 관계입니다. 근사 최근접 탐색(인덱스 분할, 벡터 양자화)은 이 연산량을 크게 줄여 주지만, 근사 오차가 이상 점수 자체에 섞인다는 대가가 있습니다. 이상 점수가 “가장 가까운 정상과의 거리”이므로, 근사 탐색이 조금 먼 이웃을 고르면 정상 패치의 점수가 체계적으로 올라가 과검출 쪽으로 기웁니다.
Example. 위 가정에서 이미지 1장의 쿼리 패치는 20 × 4,096 = 81,920개입니다. 코어셋 1% 뱅크(81,920 패치)와 전수 탐색하면 81,920 × 81,920 × 384 ≈ 2.58 × 1012 곱셈-누산이 필요해, 엣지 연산 예산에 비해 매우 무겁습니다. 0.1% 뱅크에서는 약 2.58 × 1011로 10배 줄어듭니다. 따라서 실무 순서는 코어셋 비율을 검증이 허락하는 만큼 먼저 낮추고, 남은 부족분만 근사 탐색으로 메우되, 근사 적용 전후 정상 검증 세트의 점수 분포 이동을 반드시 비교하는 것입니다.
Point. 탐색 지연을 더 빠른 장치로만 풀려고 하면 비용이 계속 늘어납니다. 쿼리 수(타일링)와 뱅크 크기(코어셋)가 곱으로 지연을 만든다는 구조를 먼저 보아야 합니다.
코어셋 비율 하나가 메모리와 탐색 연산량을 같은 배율로 함께 움직입니다.
4. 핵심 골격 — 매칭표
| 구분 | 항목 | 사양 / 파라미터 | 근거·비고 |
|---|---|---|---|
| ① 최소 불량 사이즈 | 흑점·이물 | 직경 80 µm 이상 | 설계 가정. 20 µm/px에서 4 px, 패치 셀 폭의 1/2 |
| ① 최소 불량 사이즈 | 흐름 자국·스크래치 | 폭 60 µm, 길이 400 µm 이상 | 설계 가정. 폭 3 px, 길이 20 px |
| ① 최소 불량 사이즈 | 미성형(쇼트샷) 결손 | 폭 200 µm 이상 | 설계 가정. 10 px, 패치 셀 1.25칸 |
| ② 광학 셋업 | 조명 | 돔형 확산 조명 | 무광 PBT 표면 기준. 광택 게이트부는 샘플 테스트 전 확언 불가 |
| ② 광학 셋업 | 카메라 | 2448 × 2048 px, 화소 3.45 µm | 설계 가정. 센서 폭 약 8.45 mm |
| ② 광학 셋업 | 렌즈 | 초점거리 25 mm, 배율 약 0.17× | 계산값: 8.45 mm ÷ 49 mm |
| ② 광학 셋업 | WD(작동 거리) | 150 mm 이상 확보 필수 | 물체 거리 계산값 약 170 mm(주점 기준). 돔 조명 높이 포함 실측 |
| ② 광학 셋업 | FOV·화소 분해능 | FOV 49 mm × 41 mm, 20 µm/px | 계산값: 49,000 µm ÷ 2,448 px ≈ 20.0 µm/px |
| ③ 알고리즘 | 입력 타일링 | 512 × 512 px 타일 20장(5 × 4), 축소 없음 | 통째 축소 시 95.7 µm/px로 흑점 1 px 미만 |
| ③ 알고리즘 | 패치 특징 | stride 8 층, 3 × 3 이웃 집계, 차원 384, FP16 | 패치 셀 계산값 160 µm(20 µm/px × 8) |
| ③ 알고리즘 | 메모리뱅크·코어셋 | 원본 8,192,000 패치(≈ 6.29 GB) → 코어셋 1% 81,920 패치(≈ 62.9 MB) | 정상 100장 기준 설계 가정. 0.1%는 검증 후 판단 |
| ③ 알고리즘 | 판정 | k = 1 최근접 거리, 임계 = 정상 검증 세트 점수 99.9 백분위 | 설계 가정. 근사 탐색 적용 시 임계 재추정 |
표 시사점. 20 µm/px × stride 8 = 160 µm 셀에서 80 µm 흑점은 4 px, 셀 폭의 절반으로 검출 전제에 겨우 걸려 있으며, 원본을 512 px로 통째 축소하면 95.7 µm/px가 되어 메모리뱅크 크기와 무관하게 원리적으로 사라집니다. 즉 타일 20장이 해상도의 대가이고, 그 20배가 메모리뱅크 원본 크기와 쿼리 수에 동시에 곱해져 코어셋 1%에서도 이미지당 약 2.58 × 1012 곱셈-누산이 남는다는 점이 이 설계의 실질적 병목입니다.
5. 반대 접근이 유리한 조건
- 불량 샘플을 충분히 모을 수 있고 결함 유형이 정해져 있는 경우: 지도 학습 세그멘테이션이나 분류 모델이 경계 정밀도와 추론 비용 모두에서 유리합니다. 최근접 탐색 자체가 필요 없습니다.
- 정상 외관 변동이 매우 큰 제품: 색상 다품종, 로트별 텍스처 차이가 큰 경우 메모리뱅크가 급격히 커지거나 과검출이 늘어납니다. 품종별 뱅크 분리나 다른 방식을 먼저 검토하십시오.
- 검사 영역이 매우 작은 경우: ROI가 수 mm 수준이면 뱅크 원본이 작아 코어셋 없이 전수 탐색해도 택트 안에 들어올 수 있습니다. 이때는 서브샘플링이 오히려 불필요한 정보 손실입니다.
사출품 중 광택 표면이나 투명 수지는 난반사와 정반사가 패치 특징을 크게 흔들어 정상 변동의 폭 자체가 달라지므로, 필요한 뱅크 크기와 코어셋 비율은 샘플 테스트 전 확언 불가입니다.
현장 노트
사출 성형 커넥터 하우징 검사에서 코어셋 비율을 1%에서 0.1%로 줄였을 때, 메모리와 탐색 시간은 계산대로 약 10분의 1이 되었지만 금형 게이트 주변의 광택 패치가 뱅크에서 빠지면서 그 위치에서만 과검출이 몰리는 현상을 본 적이 있습니다. 전체 과검출률만 보았을 때는 원인이 보이지 않았고, 과검출이 어느 타일·어느 좌표에 몰리는지를 지도로 그려 보고서야 구조가 드러났습니다. 결국 게이트 주변 타일만 비율을 높게 유지하는 방식으로 타협했는데, 이 배분이 다른 금형에서도 맞을지는 샘플로 다시 확인해야 한다고 봅니다.
현장 체크포인트
- WD 150 mm 이상이 실측으로 확보되는가 — 돔 조명의 높이와 카메라 관측창 위치를 포함해 확인할 것.
- 대상물 표면 재질과 반사율을 먼저 특정했는가 — 무광 영역과 광택 게이트부를 구분해 정상 변동 폭을 따로 볼 것.
- µm/px × stride로 패치 셀 크기를 계산했고, 최소 결함이 셀 폭의 절반 안팎을 점유하는가.
- 메모리뱅크 원본 크기(장수 × 타일 × 패치 × 차원 × byte)와 코어셋 후 크기가 장치 메모리 여유 안에 있는가.
- 이미지당 탐색 연산량(쿼리 수 × 뱅크 크기 × 차원)이 라인 택트 안에 들어오는가.
- 코어셋·근사 탐색 적용 전후로 정상 검증 세트의 점수 분포와 과검출 위치 지도를 비교했는가.


