R&D
CENTER

정상만 보고 이상을 찾는다 — 이상 탐지와 PatchCore

불량 샘플은 모으기 어렵고, 내일은 처음 보는 불량이 나옵니다. 정상 이미지만으로 학습해 '정상과 다른 곳'을 찾는 이상 탐지의 원리를, 가장 널리 쓰는 PatchCore를 예로 설명합니다.

입문7 분0 조회
이 강의의 핵심
  1. 이상 탐지는 불량을 배우지 않고 정상만 배웁니다. 그래서 학습 때 못 본 새로운 불량도 '정상과 다르다'로 잡습니다.
  2. 결과는 픽셀별 이상도 히트맵과 이미지 하나의 대표 점수입니다. 점수가 임계값 이상이면 NG입니다.
  3. PatchCore는 정상 이미지의 작은 조각(패치) 특징을 메모리에 모아 두고, 새 패치가 가장 가까운 정상 패치와 얼마나 먼지로 이상도를 잽니다.
  4. 임계값을 두 개 두면 OK / Gray / NG 세 구간이 생기고, 애매한 Gray는 사람이 확인해 다시 학습에 반영합니다.

검사의 세 세대

1세대 · 규칙 기반 2세대 · 지도학습 3세대 · 정상 학습
학습 데이터 없음 (사람이 규칙 설계) 불량 이미지 수천 장 + 라벨 정상 이미지 수십~수백 장, 라벨 불필요
처음 보는 불량 규칙에 없으면 통과 학습 때 못 본 유형에 약함 '정상과 다르다'로 검출
셋업 기간 수 주 (전문가 튜닝) 수 주~수 개월 (불량 확보) 수 일

제조 현장에서 불량률은 보통 낮습니다. 불량 이미지를 수천 장 모으려면 오래 기다려야 하고, 모으는 동안에도 새로운 유형이 생깁니다. 이상 탐지는 이 문제를 뒤집습니다. 정상만 충분히 보여 주고, 정상에서 벗어난 것을 모두 이상으로 봅니다. 적게는 정상 2~30장으로 시작하는 few-shot 방식도 있습니다.

공통 처리 흐름

fineAi AD Workbench의 11개 알고리즘은 모두 같은 틀을 따릅니다. 알고리즘마다 다른 것은 ③과 ④뿐입니다.

① 입력원본 이미지 ② 전처리정사각 패딩 ③ 특징 추출CNN · ViT ④ 이상도거리 · 확률 ⑤ 이상맵업샘플·스무딩 ⑥ 점수max · 상위 q% ⑦ 판정score≥thr→NG 알고리즘마다 다른 부분
② 전처리는 비율을 지키며 정사각형으로 패딩합니다. 5:1처럼 긴 부품도 찌그러지지 않아 결함 모양이 보존됩니다.

PatchCore — 정상 조각들의 기억

PatchCore는 정밀도가 높아 AD Workbench가 기본으로 권장하는 알고리즘입니다. 원리는 의외로 단순합니다.

학습 — 정상 패치를 모은다

  1. 대규모 이미지로 미리 학습된 신경망(WideResNet50-2)에 정상 이미지를 넣고, 중간 층(layer2, layer3)의 특징 지도를 꺼냅니다. 특징 지도의 한 칸은 원본 이미지의 작은 조각(패치) 하나를 숫자 벡터로 요약한 것입니다.
  2. 모든 정상 이미지의 모든 패치 벡터를 메모리 뱅크에 모읍니다.
  3. 뱅크가 너무 크면 검색이 느리므로, 전체 분포를 대표하는 일부만 고릅니다(coreset 샘플링).

신경망 가중치를 새로 학습하지 않습니다. 정상 이미지를 한 번 훑어 모으기만 하므로 학습이 수 초~수 분이면 끝납니다.

검사 — 가장 가까운 정상과의 거리

  1. 새 이미지에서도 같은 방식으로 패치 벡터를 뽑습니다.
  2. 각 패치마다 메모리 뱅크에서 **가장 가까운 정상 패치 k개(k=3)**를 찾아 거리를 잽니다.
  3. 정상과 비슷한 패치는 거리가 작고, 긁힘이 있는 패치는 비슷한 정상 패치가 없어 거리가 큽니다. 이 거리가 그 위치의 이상도입니다.
  4. 패치별 이상도를 원본 크기로 키우고 부드럽게 하면 히트맵이 되고, 히트맵의 최댓값(또는 상위 몇 %의 평균)을 0~1로 정규화한 것이 이미지 점수입니다.
메모리 뱅크 (정상 패치 특징) 정상 패치 → 거리 작음 긁힘 패치 → 가장 가까운 정상도 멀다 히트맵 · score 0.71 ≥ 0.50 → NG
이상도는 '가장 비슷한 정상 패치와 얼마나 다른가'입니다. 학습 때 본 적 없는 결함도 거리가 크게 나옵니다.

임계값과 Gray 구간

점수가 나오면 임계값과 비교해 판정합니다. 임계값을 낮추면 불량을 놓치는 일(미검)은 줄지만 정상을 불량으로 잡는 일(과검)이 늘고, 높이면 반대가 됩니다. 이 균형은 모델 평가와 현장 운영 강의에서 다룹니다.

fineAi는 이중 임계값을 씁니다.

  • 점수가 낮은 임계값보다 작으면 OK
  • 높은 임계값보다 크면 NG
  • 그 사이는 Gray — 사람이 확인합니다.

Gray 이미지에 사람이 내린 판정은 다시 학습 데이터가 됩니다. 운영할수록 Gray가 줄어드는 구조입니다.

이상 탐지가 잘 안 맞는 경우

  • 정상 자체의 편차가 큰 대상 — 모양이 제각각인 농산물처럼 '정상'의 범위가 넓으면 결함과 구분이 어렵습니다.
  • 결함의 이름과 위치가 필요할 때 — 이상 탐지는 "어디가 이상하다"까지는 알려 주지만 "이것은 긁힘이다"라고 분류하지는 않습니다. 이때는 객체 탐지를 함께 씁니다.

11개 알고리즘 중 무엇을 고를지는 다음 강의 이상 탐지 알고리즘 고르기에서 다룹니다.