setting : one-class unsupervised anomaly detection
abstract : anomaly detection에서는 다양한 모양, 성질의 defect가 존재한다. anomal 데이터 또한 부족한데, 이는 학습 데이터에서 anomal 데이터를 잘 표현하지 못하게 된다.
Introduction
AD에서 defects는 부족함. 이전에는 One-class AD, unsupervised를 주로 사용함
OCAD -> 정상 데이터로만 학습하고, 비정상 데이터가 들어오면 정상과 데이터 분포가 다를거잖아 그걸 발견함
unsupervised -> kmean 등을 사용해서 정말 anomaly한 픽셀들을 찾아내는 것
해당 논문에서는 long-tail 작업에서 & fully-supervision이 불가능한 상황에서 anomaly pixel segmentation을 보인다.
해당 논문에서는 단어 ex) normal anomalous를 language-based state로 사용한다고 함. 근데 문제가 있음. 옷에 구멍이 났다를 기준으로 하면, 빈티지 옷을 제작하는 회사에서는 일반 옷을 제조하는 회사랑 반대가 된다. 그래서 이걸 고려해야한다 함.
이후에 쭉 왜 vlm을 사용해야 하는지 쭉 설명함.
근데 문제가 있음. clip은 global embedding feature를 사용하잖아. 근데 해당 IAD에서는 pixel level classification을 사용해야 하잖아. 그래서 이걸 해결한 winclip이 등장.
zero-shot : winclip
few-shot : winclip+
WINCLIP & WINCLIP+
two class design
- two class design을 사용함. prompt_s:="normal [o]" "score = -<f(x),g(s_)>"
compositional prompt ensemble
- state words랑 text templates이 있음 state words : perfect circuit, template-level : a cropped photo of the circuit 이 두 개의 텍스트를 임베딩 해서 평균을 냄. 그리고 이걸 이미지에 대응하는 text embedding으로 사용함
- 이렇게 텍스트를 사용해서 좋은 점은 "심각한 스크레치" vs "허용 가능한 작은 스크레치"를 구분할 수 있음.
winclip for zero-shot anomaly segmentation
- Fij^w 이게 패치임 -<x,wij>, 그리고 전체 이미지에서 마스킹 된 부분만 잘라서 모델에 넣음, like masked autoencoder(He.)
- 저자는 원래 마스킹 말고 vit를 사용할라 했는데 2가지 문제점이 있었다 함. 텍스트랑 매칭이 잘 안되고(이건 잘 와닫지 않았음), 이미지의 위치정보가 좀 손실됨. 왜냐면 self-att를 하면서 위치정보가 섞임. 예를 들면 회로에 접점만 봐야하는데 기판이나 다른 배경 정보까지 섞여있는 샘.
- Harmonic aggregation of windows를 사용하는데 그냥 M값의 조화평균임, 조화평균을 왜 쓰냐면 normal pixel이 많으니까 필연적으로 0이 많잖아 그러니까 조화평균을 쓰면 0에 가깝게 biasing이 생기겠지
- multi-scale aggregation : kernel의 크기를 바꿔서 또 자르고 모델에 넣음 각 k의 크기별로 또 조화평균을 사용함.
winclip+
- 쿼리 이미지랑 정상 이미지랑 내적한다음 multi scale featuremap을 만들어 냄
- 그리고 M 산술평균을 함.
- 그 값 중 max 값과 text값이랑 더해서 classification을 함
experiments
dataset : MVTecAD, VisA를 사용함.
metric :
classification-> AUROC, AUPR, F1-max
segmentation -> pAUROC, PRO, pF1-max
segmentation에서는 pAUROC 성능이 높게 나오는데 classification AUROC