논문 리뷰
3줄 요약
- 특정 도메인, 데이터에 종속적이지 않은, 전반적인 영역에서 AD를 수행하는 few-shot 기반 모델을 소개한다.
- RAM + SAM + kmeans를 통해 compoment mask를 만들고 이를 이용하여 component vector를 얻는다. 이를 활용하여 AS(anomaly segmentation)을 진행한다.
- 다양한 vision foundation model의 조합으로 domain specific한 모델이 아닌, unified한 모델을 만들 수 있다.
Limitation of Previous Studies
defect는 여러 도메인에서 여러 분포로 나타난다.
(해당 주장에 대해 필자는 Ada-CLIP의 실험을 인용하고 싶다. Ada-CLIP은 여러 데이터에 걸쳐 vision vector를 t-SNE을 사용하여 projection 시켰을 때 데이터를 막론하고 정상 데이터는 비슷한 분포를, 비정상 데이터는 그들만의 독특한 분포를 보였다.)
같은 도메인이라도, 서로 다른 클래스에서 서로 다른 비정상 데이터가 존재한다. 이에 기존 연구들은 각 카테고리별로 모델을 학습 시켜 하나의 카테고리에 대응하는 하나의 모델을 만들었다. 이는, 다른 카테고리 또는 다른 도메인의 데이터가 들어오면 다시 학습을 해야했고, 이는 generalized 된 성능을 보여주지 못하게 된다. 즉, 일반적인 AD에 대한 성능이 아니라 특정 데이터의 특정 카테고리의 성능 평가에 치중될 수 있다.
One-category-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
overall
- 이미지를 component 별 segmentation을 진행한다.; 위 예에서 사과는 사과, 식판은 식판 이렇게 component mask가 만들어진다.
- query이지미와 normal 이미지를 이미지 인코더를 통해 피처를 추출한다.
- 이미지 인코더 출력과 component mask를 매칭시켜서 component vector를 추출한다.
- 이미지 인코더 출력은 text vector와 코사인 유사도 mask를 만든다. ; local defect를 추출한다.
- component vector(query, normal)는 nearest negibor search를 거치게 된다. ;logical defect를 추출한다.
Contextual Component Clustering
- RAM(Recognize Anything model)를 통해 입력 이미지에 context tag를 붙인다.
- SAM(segmant anything model)을 통해 context tag 기반으로 segmentation mask를 만든다.
SAM에는 너무 촘촘하게(fine, ex. 사과 3 개가 있는데 각각의 사과를 다른 component로 segmentation) 분리하거나 아니면 너무 노이지하게(coarse, ex. 쌀 알 같은 물체를 하나 하나 다 분류) segmentation을 하는 문제가 있었다. 이를 해결하기 위해 다음의 접근을 함.
- SAM이 하나의 mask를 만들었으면, 이는 이미지 전체를 커버하는 큰 이미지가 들어왔음을 의미하고 이는 SAM의 출력을 그대로 사용한다.
- SAM이 여러개의 mask를 만들었으면(해당 상황이 문제), query이미지랑 few-shot이미지를 이미지 인코더에 넣어 피처맵을 만든다. 해당 피처맥을 k-means 클러스터링 하여 각 컴포넌트 별 마스크를 만든다.
- SAM이 만든 mask 중 k-means-mask와 IOU값이 가장 높은 mask를 추출한다.
- 이를 aggregation 한다. [Figure 4.]
Component-Aware Patch Matching
그림으로 설명을 대신함.
Graph-Enhanced Component Modeling
해당 방식은 logical defect를 탐지하기 위함이다.
- mask를 기반으로 feature vector를 준비한다.
- 상대적으로 method는 간단한데, 쿼리 이미지의 사과 벡터랑 정상 이미지의 사과 벡터와 유가도가 높지 않다면 logical defect가 존재할 가능성이 있다는 것을 의미한다.
- 또한 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
Visualization Results
Pros & Cons
Pros
- 특정 카테고리, 도메인에 종속적이지 않고 전반적으로 준수한 성능을 낸다.
Cons
- vision foundation model에 크게 의존한다. (ex. RAM, Grounding DINO, SAM)
- inference time이 크게 떨어진다. 그러나 아주 적은 정상 이미지만 주어진 상황에서 높은 성능을 내는 것에 의미가 있다.