본문 바로가기

논문읽기

ANOMALYCLIP: OBJECT-AGNOSTIC PROMPT LEARN-ING FOR ZERO-SHOT ANOMALY DETECTION

3줄 요약

1. CLIP의 CLS token이 anomal vs normal로 align 되어있지 않다.

2. CLIP은 classification 기반의 prompt로 학습 되었기에, AD prompt에서는 성능을 내지 못한다.

3. object agnostic prompt learning을 통해 위 문제를 해결한다.

abstract

- ZSAD를 위해 vlm, clip등을 사용하려 할 때 cls token으로 anomaly feature를 추출하려 시도하면 이미지 test-alignment가 깨짐, 왜? -> 기본적으로 CLIP을 예로 들자면 CLIP은 classification을 전제로 만들어짐, cls 토큰이 anomaly vs normal 이렇게 맞춰져 있지 않음.

- 또한 domain shift로 인한 성능 저하가 존재하는데 AD은 one-class detection이다.(detect는 여러개지만, 하나의 클래스에 여러개의 defect가 존재한다.) 하지만 CLIP은 multi-class 기반으로 만들어졌다.

-> object agnostic text prompt를 통해서 위 문제를 해결한다.

fig1. 기존 prompt learning은 global feature랑 prompt embedding의 alignment에 집중.

introduction

- 기존에 존재하는 prompt learning은 global feature랑 prompt의 alignment를 맞추는 방향에 집중한다. fig1 참조.

Anomaly clip : object-agnostic-prompt-learning

- 이로 인해 localization 성능이 떨어진다. 직관적으로 미세한, 작은 defect의 탐지 성능이 떨어진다고 해석해도 무방하다 생각한다.

- 또한 상당한 predifne manual prompt에 의존하는 것 또한 문제인데, winclip의 예시에서도 엄청난 manual prompt가 존재한다.

-> object augnostic prompt embedding을 통해 matual prompt의 의존성을 없앤다.

NOMALYCLIP: OBJECT-AGNOSTIC PROMPT LEARNING

   object agnostic text prompt design

   - 기존의 "A photo of [cls]" prompt는 object sementic informtion을 전제로 만듦.

   - 하지만 저 프롬프트에는 normal or anomal의 정보를 담고있지 않다.

   - "A photo of [sufix : broken] [cls]" 이렇게 하면 anomal vs normal의 정보를 담을 수 있다. -> 그.러.나 predefine manual prompt에 크게 의존한다.

   - 또한 이렇게 사용해도 기존 클립은 multi-class-classification 기반이기에 alignment가 틀어짐.

   - 또한 이렇게 manual prompt의 문제가 있는데, 세상에 존재하는 수많은 defect를 전부 정의하지 않으면, manual prompt에 존재하지 않는 defect는 오히려 찾지 못할 수 있다.

-> A photo of [bottle] 이렇게 하지 말고 A photo of [object]와 같이 object agnostic prompt design을 사용하자.

   learning generic abnormality and normality prompt

      glocal context optimization

      - learnable prompt를 학습 시키는데, 기존 연구에서는 global feature과의 alignment에 집중한 반면, local feature & global feature alignment를 만족시키게 학습하자.

      - global feature alignment : cls token과 prompt의 alignment(cls token이 global한 anomaly value를 가지고 있게 만드는 방법은 refinement of local visual space에서 설명)

      - local feature alignment : clip의 intermidiate feature와 prompt embedding의 alignment

      refinement of the textual space

      - 위 사진을 참고.

      - 핵심은 learnable prompt ventor를 사용한다는 것이다.

      - 텍스트 인코더에 forward path에 learnable prompt를 concat한다.

      - 예를 들어 (10,768)벡터에 learnable vector (2,768)을 concat -> (12, 768) -> forward path

      - 다음 레이어에서는 12,768에서 이전에 붙인 learnable vector를 제거하고 다시 새로운 벡터를 붙인다.

-> 그냥 한 번만 learnable vector를 붙이지 왜 계속 붙였다 제거했다 반복? -> 기존 clip의 text space를 보존하기 위해서.

-> 어쩌피 해당 learnable vector는 인코더를 돌면서 기존의 10,768 벡터에 조금씩 반영되고 back propa 과정에서 학습에 관여한다.

-> 해당 벡터를 제거하지 않고 계속 사용하면, 급격한 인코더 출력 변화로 인해 text space가 뒤틀린다.

refinement of local visual space그림

      refinement of local visual space

      - 결론은 V-V attention을 사용하자. vvattention은 경량화 및 local feature embedding 성능이 좋다. fig3. 참조

      - 왜 vv attention이 local feature embdding 성능이 좋냐고 물어보면 나는 아래와 같이 대답할거다.

      1. 실험을 해보니 좋더라.

      2. Q,K,V는 각각의 linear layer를 독립적으로 사용하는데, 이는 각 피처를 추상화시킨다 생각한다. 따라서 VV attention은 하나의 layer만 사용하기에 이전 feature의 불필요한 추상화를 제거한다.

experiment

   experiment setup

   - MVtec부터 medical 까지 총 17개를 사용함.

   implementation detail

   - VIT-L/14@336px

   main result

      ZSAD performance on diverse medical dataset

     

      can we obtain better ZSAD performance if fine tuned using medical image data?

      - 세밀한 segmentation이 필요한 곳에서 winclip을 압도함.

      object-agnostic vs object-aware prompt learning