본문 바로가기

논문읽기

UniVAD: A Training-free Unified Model for Few-shot Visual Anomaly Detection(CVPR 2025)

논문 리뷰

3줄 요약

  1. 특정 도메인, 데이터에 종속적이지 않은, 전반적인 영역에서 AD를 수행하는 few-shot 기반 모델을 소개한다.
  2. RAM + SAM + kmeans를 통해 compoment mask를 만들고 이를 이용하여 component vector를 얻는다. 이를 활용하여 AS(anomaly segmentation)을 진행한다.
  3. 다양한 vision foundation model의 조합으로 domain specific한 모델이 아닌, unified한 모델을 만들 수 있다.

Limitation of Previous Studies

defect는 여러 도메인에서 여러 분포로 나타난다.

(해당 주장에 대해 필자는 Ada-CLIP의 실험을 인용하고 싶다. Ada-CLIP은 여러 데이터에 걸쳐 vision vector를 t-SNE을 사용하여 projection 시켰을 때 데이터를 막론하고 정상 데이터는 비슷한 분포를, 비정상 데이터는 그들만의 독특한 분포를 보였다.) 

generalized performence가 좋은 uniVAD

 

같은 도메인이라도, 서로 다른 클래스에서 서로 다른 비정상 데이터가 존재한다. 이에 기존 연구들은 각 카테고리별로 모델을 학습 시켜 하나의 카테고리에 대응하는 하나의 모델을 만들었다. 이는, 다른 카테고리 또는 다른 도메인의 데이터가 들어오면 다시 학습을 해야했고, 이는 generalized 된 성능을 보여주지 못하게 된다. 즉, 일반적인 AD에 대한 성능이 아니라 특정 데이터의 특정 카테고리의 성능 평가에 치중될 수 있다.

One-category-one-model

one-domain-one-model

방대한 defect들로 인해 one-category-one-model 방식으로 특정 데이터에 fit하게 모델을 맞추는 방식으로 진행했었다. 이런 접근의 모델은 일반화 성능(여러 데이터에 걸쳐 비슷한 성능을 내는가?)이 떨어졌다. 예를 들어 PatchCore는 1-shot image-level AUC는 84.1%를 달성했지만, MVTec LOCO에서 logical AD를 수행했을 때는 62%로 떨어진다. 

Domain specific model

defect는 여러 도메인에 걸쳐 나타난다. 예를 들어 의료, 위성, 산업 등등이 있다. 위와 같이 방대한 defect들을 서로 다른 모델로 접근하였다. 즉, local defect를 탐지하는 모델은 위 PatchCore의 예 처럼 logical defect 또는 medical defect 탐지에서는 성능을 보장할 수 없다.

Observations & Motivations

generalized AD model

위와 같이 one-category-one-model 또는, one-domain-one-model과 같이 일반화 성능을 보장할 수 없다. 이에 일반화 성능을 보장할 수 있는 모델을 개발한다. 해당 모델은 local defect 그리고 logical defect를 특정 도메인에 종속되지 않고 전반적으로 준수한 성능을 보인다.

Method

method 사진

overall

  1. 이미지를 component 별 segmentation을 진행한다.; 위 예에서 사과는 사과, 식판은 식판 이렇게 component mask가 만들어진다.
  2. query이지미와 normal 이미지를 이미지 인코더를 통해 피처를 추출한다.
  3. 이미지 인코더 출력과 component mask를 매칭시켜서 component vector를 추출한다.
  4. 이미지 인코더 출력은 text vector와 코사인 유사도 mask를 만든다. ; local defect를 추출한다.
  5. component vector(query, normal)는 nearest negibor search를 거치게 된다. ;logical defect를 추출한다.

Contextual Component Clustering

Contextual Component Clustering

  1. RAM(Recognize Anything model)를 통해 입력 이미지에 context tag를 붙인다.
  2. SAM(segmant anything model)을 통해 context tag 기반으로 segmentation mask를 만든다.

SAM에는 너무 촘촘하게(fine, ex. 사과 3 개가 있는데 각각의 사과를 다른 component로 segmentation) 분리하거나 아니면 너무 노이지하게(coarse, ex. 쌀 알 같은 물체를 하나 하나 다 분류) segmentation을 하는 문제가 있었다. 이를 해결하기 위해 다음의 접근을 함.

  1. SAM이 하나의 mask를 만들었으면, 이는 이미지 전체를 커버하는 큰 이미지가 들어왔음을 의미하고 이는 SAM의 출력을 그대로 사용한다.
  2. SAM이 여러개의 mask를 만들었으면(해당 상황이 문제), query이미지랑 few-shot이미지를 이미지 인코더에 넣어 피처맵을 만든다. 해당 피처맥을 k-means 클러스터링 하여 각 컴포넌트 별 마스크를 만든다.
  3. SAM이 만든 mask 중 k-means-mask와 IOU값이 가장 높은 mask를 추출한다.
  4. 이를 aggregation 한다. [Figure 4.]

Component-Aware Patch Matching

그림으로 설명을 대신함.

Graph-Enhanced Component Modeling

해당 방식은 logical defect를 탐지하기 위함이다. 

  1. mask를 기반으로 feature vector를 준비한다.
  2. 상대적으로 method는 간단한데, 쿼리 이미지의 사과 벡터랑 정상 이미지의 사과 벡터와 유가도가 높지 않다면 logical defect가 존재할 가능성이 있다는 것을 의미한다.
  3. 또한 RGB와 같은 기하학적인 패턴 임베딩 벡터와 유사도를 측정해 이 또한 낮으면 logical defect가 있다고 판단한다.

Experiments

Experimental Setups

  • dataset : MVTec-AD, VisA, LOCO, BrainMRI, LiverCT, RetinalOCT, ChestXray, HIS, OCT17
  • competin methods and baseline : 1. local AD : PatchCore, Winclip, ANomalyGPT 2. logical AD : ComAD 3. medical : MedCLIP
  • eval protocols : image level AUROC, pixel level AUROC
  • implementation details : image res:448x448, CLIP:CLIP-L/14@336px, DINO:DINOv2-G/14 

Main Results

few-shot

Visualization Results

Pros & Cons

Pros

  • 특정 카테고리, 도메인에 종속적이지 않고 전반적으로 준수한 성능을 낸다.

Cons

  • vision foundation model에 크게 의존한다. (ex. RAM, Grounding DINO, SAM)
  • inference time이 크게 떨어진다. 그러나 아주 적은 정상 이미지만 주어진 상황에서 높은 성능을 내는 것에 의미가 있다.