35

이상 맵 만들기: 패치 기반 이상 탐지 (MVTec 스타일 합성 데이터)

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

학습 목표
  • MVTec AD 데이터셋의 구조와 카테고리를 이해한다
  • 정상 패치를 기억해 두고 거리로 이상을 판정하는 방법을 구현할 수 있다
  • 이상 점수 맵(히트맵)을 생성해 불량 위치를 시각화하고, 정답 마스크로 화소 수준 AUROC 를 잴 수 있다
  • 합성 데이터에서 얻은 성능을 실제 라인 성능의 근거로 쓸 수 없는 이유를 설명할 수 있다

MVTec AD: 제조 이상 탐지의 표준 벤치마크

MVTec Anomaly Detection 데이터셋은 실제 제조 이미지로 구성된 이상 탐지 분야의 표준 벤치마크이다.

카테고리 (15종)

[텍스처] carpet, grid, leather, tile, wood
[물체]  bottle, cable, capsule, hazelnut, metal_nut,
        pill, screw, toothbrush, transistor, zipper

데이터 구성

합계 5,354장 = 정상 4,096장 + 이상 1,258장 이다. train 에 정상 3,629장이 들어 있고, test 1,725장 안에 정상 467장과 이상 1,258장이 섞여 있다. "test 1,725장이 전부 불량"이라고 읽으면 정상 467장을 불량으로 세는 것이다.

이 과제가 쓰는 데이터

아래 코드는 MVTec AD 실물이 아니라 같은 형식의 합성 데이터로 돈다. 실제 데이터로 옮기는 방법은 코드 맨 아래에 적어 두었다. 합성 데이터에서 나온 AUROC 를 도입 근거로 쓰지 마라. 결함을 우리가 그렸으므로 잘 나오는 것이 당연하다.

데이터 구조

mvtec_anomaly_detection/
├── bottle/
│   ├── train/
│   │   └── good/       # 정상 이미지만 (bottle 은 209장)
│   ├── test/
│   │   ├── good/       # 정상 테스트 (20장)
│   │   ├── broken_large/ # 불량 유형 1
│   │   ├── broken_small/ # 불량 유형 2
│   │   └── contamination/ # 불량 유형 3
│   └── ground_truth/   # 불량 위치 마스크
에디터 로딩 중...
핵심 포인트
  • MVTec AD 는 15종 카테고리의 실제 제조 이미지 벤치마크이고, 정상 4,096장 + 이상 1,258장으로 이루어져 있다
  • 이미지 수준 AUROC 와 화소 수준 AUROC 는 다른 것을 잰다. 검사원에게 위치를 보여 주려면 화소 수준이 함께 좋아야 한다
  • 특징을 전역 평균으로 뭉개면 히트맵을 만들 수 없다. 위치를 남기려면 패치 단위로 봐야 한다
  • 이 과제의 데이터는 합성이다. 결함을 우리가 그렸으므로 값이 잘 나오고, 그 값은 실제 라인 성능을 예고하지 않는다
AI로 학습하기 — 꿀팁
MVTec 데이터 분할 오류 점검AI 학습 팁

AI에게 MVTec AD 데이터셋 로더와 train/test 분할 코드를 리뷰받아 정상/이상 레이블 혼입·카테고리 간 데이터 유출을 점검하세요.

이 MVTec AD 데이터셋 로더와 이상 탐지 모델 평가 코드를 리뷰해줘. MVTec 폴더 구조(train/good, test/good, test/defect_type)에서 정상·이상 레이블 혼입 케이스, 여러 제품 카테고리(texture/object)를 혼합 학습할 때 발생하는 데이터 유출, 픽셀 단위 이상 맵 평가(AUROC) 계산 오류를 찾아줘.
이 팁이 도움이 됐나요?
용어