[Pretrained Feature Matching 방식의 Anomaly Detection]

This entry is part 14 of 40 in the series Anomaly Detection

1. 들어가며

이번 글에서는 Pretrained Feature Matching 방식의 Anomaly Detection 방법을 소개합니다. 먼저 Pretrained Feature Matching 방식의 큰 그림을 살펴보고요. 대표적인 주요 방법들에 대해 하나씩 간략하게 살펴보겠습니다. Anomaly Detection에 관한 기본적인 내용은 Anomaly Detection에 관한 모든 것 글을 참고해주세요.

2. 큰 그림

먼저 Pretrained Feature Matching 방식의 큰 그림을 살펴 볼게요. 말 그대로 우선 Pretrained 모델을 사용해서 Input 이미지의 Feature를 추출해줄겁니다.

그림1. Pretrained Feature 추출하기
그림1. Pretrained Feature 추출하기

이때 Pretrained 모델은 보통 ImageNet으로 학습한 CNN을 사용합니다. 대표적으로 ResNetEfficientNet 등이 있죠. 이러한 모델들은 다량의 이미지 데이터로 학습했기 때문에 이미지의 특성에 따라 구분할 수 있는 능력이 있다고 볼 수 있습니다. 그럼 이러한 모델들이 보기에는 Normal 데이터와 Anomal 데이터가 구분되어 보이지 않을까요? 그 말은 이러한 모델들이 추출한 Normal Feature는 그들끼리, Anomal Feature는 또 그들끼리 존재하지 않을까요?

그림2. Pretrained Feature로 Normal Anomal 구분하기
그림2. Pretrained Feature로 Normal Anomal 구분하기

그림으로 표현하면 이런 모습인거죠. 애초에 Feature 공간상에서 각 클래스끼리 구분되어 분포할 것이라는 가정이 있기에, Normal Feature 분포와 얼마나 멀리 떨어져 있는지를 기준으로 Normal과 Anomal을 구분하겠다는 아이디어인 겁니다.

3. 주요 방법들

아이디어는 아주 간단한데요. 구현 방법도 간단한 이 방법들은 하지만 초창기 모델부터 성능이 아주 좋았습니다. 2023년 현재도 가장 많이 사용되고 있는 방법이기도 하죠. 무엇보다 따로 학습 과정이 없기에 사용성 측면에서는 최고라고 할 수 있습니다. 그럼 대표적인 모델들을 하나씩 살펴보죠.

3-1. SPADE

가장 초창기 버전은 SPADE라고 할 수 있습니다. 아이디어도 아주 간단해요. 그저 Pretrained Patch Feature를 Euclid Distance를 사용해서 구분해주자는 겁니다. 즉 Patch별로 Feature를 추출해서 구분해주자는 거죠.

그림3. SPADE
그림3. SPADE

이렇게 kNN을 사용 하는거죠. 학습 데이터는 모두 정상이니까. 학습 데이터와의 kNN 스코어로 정상과 비정상을 구분해주는 거죠. 너무 간단한 아이디어지만 성능도 좋았고, Pretrained Feature Matching 방식의 가능성을 열어준 방법이라고 할 수 있습니다. 자세한 내용은 SPADE 리뷰글을 참고해 주세요.

3-2. Mahalanobis AD

SPADE를 보면 우선 kNN만 개선해줘도 성능이 대폭 향상되겠다는 생각이 들죠? kNN은 전체적인 분포를 고려해 주지 못하니까요. 이에 Mahalanobis Distance를 적용하는 방법이 바로 Mahalanobis AD입니다.

그림4. Mahalanobis AD
그림4. Mahalanobis AD

이렇게 Normal Feature 분포를 타원 형태로 가정하는거죠. 그럼 이제 중심과의 거리로 Normal / Anomal을 구분할 수 있을텐데요.

image 17
그림5. Mahalanobis Distance 측정하기

문제는 타원 형태니까 Euclid Distance로 측정하면 불공평하겠죠? 그래서 Mahalanobis Distance를 적용해주는게 Mahalanobis AD의 골자입니다. 자세한 내용은 Mahalanobis AD 리뷰글을 참고해 주세요.

3-3. PaDiM

그런데 SPADE는 패치별로 Feature를 추출했잖아요? Mahalanobis AD도 패치별로 적용하면 성능이 더 좋지 않을까요? Deep SVDD의 아이디어를 Patch SVDD에서 패치별로 적용한 것처럼 말이죠.

그림6. Mahalanobis AD과 PaDiM 비교
그림6. Mahalanobis AD과 PaDiM 비교

위 그림은 Mahalanobis AD와 PaDiM을 비교한 그림인데요. Mahalanobis AD와 동일한 아이디어를 패치별로 적용한게 바로 PaDiM임을 알 수 있습니다. 자세한 내용은 PaDiM 리뷰글을 참고해 주세요.

3-4. PatchCore

PatchCore는 Pretrained Feature Matching 방식 Anomaly Detection 방법의 끝판왕이라고 할 수 있습니다. 성능도 가장 좋고 2023년 현재 PatchCore를 기준으로 ‘더 좋냐, 안좋냐’를 얘기할 정도이죠. 현재는 PatchCore를 개선한 버전들이 꾸준히 발표되고 있습니다.

image 19
그림7. PatchCore

PatchCore의 핵심은 역시 패치별로 추출한 Feature를 사용하자는 것입니다. 이때 메모리 이슈를 해결하기 위해 Coreset Sampling 알고리즘도 적용해주고요. 패치별 Feature 정보를 보완하기 위해 Locally Aware 하도록 만들어 줍니다. 자세한 내용은 PatchCore 리뷰글을 참고해 주세요.

Series Navigation<< [22′ CVPR] SSPCAB : Self-Supervised Predictive Convolutional Attentive Block for Anomaly Detection 핵심 리뷰[20′ Arxiv] SPADE : Sub-Image Anomaly Detection with Deep Pyramid Correspondences >>
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
Scroll to Top