▶️25

[영상] YOLOv8 실시간 객체 탐지 실습

Day 4: 이상 탐지 (비지도 학습)

학습 목표

비지도 이상 탐지가 필요한 제조 시나리오를 설명할 수 있다 PaDiM과 PatchCore의 작동 원리와 성능·속도 트레이드오프를 비교할 수 있다 Anomalib 라이브러리로 이상 탐지 파이프라인을 구성할 수 있다 이상 스코어 임계값 설정이 FPR과 FNR에 미치는 영향을 설명할 수 있다

영상 핵심 정리 — 비지도 이상 탐지

PaDiM vs PatchCore

항목PaDiMPatchCore
원리패치별 다변량 가우시안정상 패치 메모리뱅크
학습 데이터정상만정상만
학습 시간약 9초약 283초
픽셀 AUROC0.9740.977
메모리적음많음 (그리디 코어셋)
추천빠른 프로토타이핑최고 정확도

Anomalib 파이프라인

from anomalib.data import MVTec
from anomalib.models import Padim
from anomalib.engine import Engine

datamodule = MVTec(category='bottle', image_size=224)
model = Padim(backbone='resnet50',
              layers=['layer1','layer2','layer3'])
engine = Engine()
engine.fit(model=model, datamodule=datamodule)

predictions = engine.predict(model=model, datamodule=datamodule)

임계값 트레이드오프

임계값 낮춤 → 민감도↑
  정상도 불량으로 분류 (FPR↑, 생산성↓)
  BUT 불량 통과율(FNR) 낮음 ← 제조 중요!

임계값 높임 → 특이도↑
  불량 일부 통과 (FNR↑, 클레임 리스크)
  불필요 재검사 감소 (FPR↓)

제조 원칙:
  '불량 통과(FN) > 정상 오탈(FP)' → 임계값 낮게
  초기: conservative → 운영 데이터로 조정

MVTec AD 데이터셋

  • 15개 카테고리 (병, 케이블, 가죽 등)
  • 총 5354장 (정상 3629 + 불량 1725)
  • 불량 유형: 스크래치, 오염, 변형, 파손
  • 제조 AI 표준 벤치마크

함정 주의: PatchCore 메모리뱅크는 학습 샘플 증가 시 메모리 선형 증가. 엣지 배포 시 그리디 코어셋 서브샘플링(10%)으로 압축 필수.

다음 task와의 연결

다음 reading에서 PaDiM과 PatchCore 구현 코드를 실습한다.

AI로 학습하기 — 꿀팁
🧪PaDiM vs PatchCore 비지도 이상탐지 질문AI 학습 팁

불량 데이터가 희귀한 제조 외관검사에서 PaDiM과 PatchCore 비지도 이상탐지 모델의 성능·속도 트레이드오프를 AI에게 비교 설명받으세요.

제조 외관검사에서 불량 라벨이 없는 비지도 학습 이상탐지 모델로 PaDiM과 PatchCore를 비교해줘. PaDiM의 패치별 가우시안 분포 모델링이 학습 속도(9초)에서 유리한 이유, PatchCore의 정상 패치 메모리뱅크가 픽셀 수준 정확도(283초 학습)에서 우수한 이유를 설명하고, 어느 생산 라인 특성에 각각 적합한지 추천해줘.
이 팁이 도움이 됐나요?
핵심 포인트
  • 불량 데이터 희귀할 때 비지도 학습 — 정상 샘플만으로 이상 탐지
  • PaDiM: 패치별 가우시안 분포, PatchCore: 정상 패치 메모리뱅크
  • PaDiM은 학습 30배 빠름 (9초 vs 283초), PatchCore는 픽셀 정확도 우수
  • 임계값↓ Recall↑ FPR↑, 임계값↑ Precision↑ FNR↑ — 제조에서는 FNR 최소화