본문 바로가기

AI

[논문리뷰] WinCLIP: Zero-/Few-Shot Anomaly Classification and Segmentation

zero-shot 이미지 분류: 특정 카테고리의 예시가 포함된 데이터를 학습되지 않은 모델을 사용해 이미지 분류를 수행하는 작업

one-shot: 하나의 샘플 이미지만으로 새로운 클래스를 인식

few-shot: 한 클래스당 일부 샘플 이미지만 사용하여 새로운 클래스 인식

dense features; 이미지 데이터의 로컬 및 전역 특징을 보다 세밀하게 포착하는 특성

window; 고정된 크기의 부분 집합, 데이터를 일정한 크기의 시,공간적 단위로 분할

 

INTRODUCTION

  • vision-language 모델인 CLIP(Contrastive Languate Image Pre-training)은zero/few-shot 성능을 보여주며 혁신적인 일반성을 보였으나 이상 분류 및 분할에는 한계가 있음
  • 정상 이미지에서 보완적 정보를 활용하는 few-normal-shot 확장인 WinCLIP+ 제안
  • MVTec-AD에서 뛰어난 성능 보임
  • CLIP은 텍스트 prompt를 사용해 정상/이상을 클래스로 사용하여 이상 분류에도 동일하게 적용
  • 단순한 promptsms 효과적이지 않음 -> state-level 단어 앙상블을 사용해 단순한 기준선 개선
  • 이상 분할의 경우 픽셀 수준의 분류를 찾으며 언어와 일치하는 밀집한 visual features를 추출하는 것이 쉽지 않음 
  • -> 비전-언어 정렬을 보장하며 다중 스케일 특성을 추출하는 WinCIP 제안

Background

Anomaly classification and segmentation.

  • image x ∈ X, anomaly classification, segmentation(ACS)는 모두 x의 비정상을 예측하는 것이 목표
  • 바이너리 분류 X → {−, +} anomaly classification(AC)에서 +가 이미지 레벨에서 비정상이라고 가정
  • anomaly segmentation(AS)는 픽셀 수준의 확장으로 크기가 h × w 인 특정 이미지에 대한 이상의 위치를 출력하기 위해 X → {−, +}^h×w으로 나타남
  • 예를 들어, 이상 분류는 일반적으로 ascore : X → [0, 1]를 모델링하여 이진 분류가 ascore(x)를 임계값으로 설정하여 수행될 수 있도록 함
  • 실제로 이상(또는 양성) 샘플이 부족해, 훈련 데이터 D := {(xi , −)}Ki=1가 일반(또는 음성) 샘플만으로 구성된 단일 클래스 시나리오가 널리 사용되고, 본 논문에서도 단일 클래스 프로토콜을 따름

Zero-shot classification with CLIP.

  • CLIP은 합성 비전-언어 표현을 제공하는 대규모 사전 훈련 방법
  • 웹에서 백만 단위의 이미지-텍스트 쌍 {(xt, st)}Tt=1이 있다고 할 때, CLIP은 대조 학습을 통해 이미지 인코더 f와 텍스트 인코더 g를 훈련하여 f(xt)와 g(st) 간의 코사인 유사도 ⟨f (x), g(s)⟩를 t에 대해 최대화
  • 입력 X와 자유 형식 텍스트 집합 {s1· · · , sk}가 주어지면, CLIP은 아래의 k-way 범주 분포로 zero-shot 분류 수행
  • 클래스 단어 집합 {c1,··· ,ck}의 경우, 각 레이블 단어 c  C에 prompt 템플릿(ex> "a photo of a [c]")을 동반하는 것이 정확도를 향상시킬 수 있음
  • 다양한 템플릿을 집계하는 prompt 임베딩 앙상블은 성능을 더 향상시킬 수 있음
  • 본 논문에서는 CLIP의 시각적 지식을 적절한 방식으로 언어 인터페이스를 통해 "검색"함

 

Language-driven zero-shot AC

Two-class design

  • CLIP을 두 클래스 prompt [c] - “normal [o]” vs.anomalous [o]”.[o] 로 적응시킴으로써 바이너리 zero-shot 이상 분류 프레임워크 CLIP-AC 소개
  • [o]는 객체 수준의 레이블로, 사용 가능한 경우 "bottle"이라는 레이블이며, 그렇지 않으면 단순 객체
  • 추가로, 정상 prompt s := normal [o] 만을 사용하여 이상 점수를 −⟨f(x), g(s)”로 정의하는 one-class 디자인 테스트
  • two-class > one-class
  • 사전 훈련된 CLIP이 이상 작업에 대해 텍스트-이미지 간 좋은 정렬을 제공하며, 구체적 정의가 좋은 성능에 필요하다는 것을 보여줌

Compositional prompt ensemble(CPE)

  • 객체 수준 분류기와 달리, CLIP-AC는 주어진 객체의 두 가지 상태 "정상" "이상" 사이의 분류 수행
  • 상태는 작업, 정의에 따라 주관적임 
  • 객체의 두 가지 추상적 상태를 더 잘 정의하기 위해, 모든 사전 정의된 라벨 별 state words와 text templates의 목록의 조합을 생성하기 위한 Compositional Prompt Ensemble 제안
  • state words는 대부분 객체에서 공유되는 일반적 상태를 포함 ex> 정상에 대해 "flawless"/이상에 대해 "damaged"
  • 또한, 사전에 결함에 대한 지식이 주어진 경우 작업별 상태 단어를 선택적으로 추가 가능
  • 이상 작업을 위해 특별히 템플릿 목록 선별 > 시각 검사용 [c]의 사진
  • 상태와 템플릿의 모든 조합을 얻은 후에는 각 레이블 당 텍스트 임베딩의 평균을 계산하여 정상 및 이상 클래스를 나타냄
  • CPE는 객체 레이블("고양이")을 설명하지 않으며, 선택된 템플릿만 보강하고 이상 작업에 적합하지 않은 템플릿은 포함하지 않음
  • CPE의 텍스트는 이상 작업을 위한 CLIP의 합성 임베딩 공간에 이미지와 더 잘 정렬됨
  • zero-shot 점수 모델을 CPE로 표시하고, 이는 이미지 임베딩 f(x)에 대한 ascore0 : Rd → [0, 1]

 

WinCLIP

  • 픽셀 수준의 이상을 예측하기 위해 밀도가 높고 언어 정렬 및 로컬 세부 정보를 가진 시각적 특성 추출, 그에 따라 이상 분할 맵을 얻기 위해 공간적으로 ascore0 적용
  • 해상도 h*w의 이미지 x, 이미지 인코더 f => d차원 특성 맵 F^W ∈ R^h×w×d 를 얻음
    1. sliding window 세트 {wij}ij 생성, wij ∈ {0, 1}h×w는 (i, j) 주변의 k × k 커널에 대해 지역적으로 활성화되는 binary mask
    2. x의 활성 영역에 각 wij를 적용하여 계산된 각 출력 임베딩 FWij를 수집, FWij := f(x⊙wij)

  • 밀도 높은 표현 후보인 풀링 이전 마지막 특성 맵 탐색
  • ViT 기반 CLIP의 패치 임베딩 맵 FP에 대해, 분할을 위해 패치별로 ascore0 적용
  • (-) 패치 수준의 특성은 언어 공간과 정렬되지 않아 밀집 예측이 나쁨 <- CLIP에서 언어 신호로 직접 지도되지 않았기 때문일 것
  • (-) 패치 특성은 이미 전역 컨텍스트를 self-attention으로 집계했기 때문에 분할을 위한 로컬 세부 정보를 포착하는 것을 방해
  • FP와 비교했을 때, WinCLIP의 밀도 높은 특성은 언어와 더욱 정렬돼 있음
  • WinCLIP은 특히 ViT 아키텍처에서 효율적으로 계산될 수 있음
  • 각 지역 window에 대해 zero shot 이상 점수 MW0,ij는 윈도우 특성 FWij와 합성 prompt 앙상블의 텍스트 임베딩 간 유사성임
  • 점수는 지역 윈도우의 각 픽셀에 배포되고 각 픽셀에서 모든 겹치는 위도우에서 여러 점수를 조화 평균화하여 분할 개선
  • 정상 예측(0 값)에 더 많은 가중치 부여

anomaly score

  • 커널 크기 k는 WinCLIP feature식 계산 시 각 위치의 주변 컨텍스트 양에 해당
  • 세분성과 전역 정보 간 균형을 조절
  • 작은 스케일부터 큰 스케일까지 크기가 다양한 결함을 캡처하기 위해 다중 스케일 특성에서 예측 집계 -> 조화 평균 채택

WinCLIP+

  • 언어로 가이드된 zero-shot 접근만으로는 종합적인 이상 징후 분류 및 분할을 위해 충분하지 않음
  • 일부 결함은 텍스트만으로 정의하는 것이 아니라 시각적 참조를 통해 정의될 수 있음
  • WinCLIP 확장인 WinCLIP+ 제안, k개의 정상 참조 이미지 D := {(xi, −)}Ki=1 통합
  • 언어로 안내된 접근과 시각적 접근의 보완적 예측을 결합하여 이상 징후 분류 및 분할 개선
  • reference association(참조 연관성) 제안 -> 코사인 유사도 기반 D의 메모리 특성 R을 저장, 검색 가능
  • 이 모듈과 쿼리 이미지에서 추출된 F ∈ R^h×w×d를 사용해 이상 분할을 위한 예측 M ∈ [0, 1]^h×w를 만들 수 있음
  • 이 연관 모듈을 WinCLIP에서 얻은 여러 스케일(작은 스케일 FWs, 중간 스케일 FWm, self-attention으로 인해 이미지 컨텍스트를 캡처하는 전역 컨텍스트 FP)의 특성 맵에 적용 
  • 3가지 참조 메모리 RWs, RWm, RP 얻음 -> 평균화하여 이상 분할을 위한 MW 얻음

  • 이상 분류를 수행하기 위해 MW의 최대값과 WinCLIP의 zero-shot 분류 점수 결합 -> 상호 보완

정리

- 포괄적인 이상 징후 분류 및 분할을 위해 세밀한 텍스트적 정의와 정상 참조 이미지를 통해 정상성과 이상성을 정의

- 대규모 웹 데이터로 사전 훈련된 CLIP이 텍스트와 이미지 간 좋은 정렬을 제공하여 이상 징후 인식 작업에 강력한 표현 제공

- 구성 요소적 prompt 앙상블은 텍스트에서 정상성/이상성을 정의하고, 사전 훈련된 CLIP에서 지식을 추출하여 더 나은 zero-shot 이상 징후 인식을 위함

- WinCLIP은 window 및 이미지 수준에서 이미지-텍스트 정렬과 함께 다중 스케일 특성을 효율적으로 집계하여 zero-shot 분할 수행

- 몇 가지 정상 샘플이 주어지면, 버전 기반 참조 연관성은 언어 정의에 대한 두 상태의 보충 정보를 제공하여 few-shot WinCLIP+로 이어짐