[Normalizing Flow 방식의 Anomaly Detection]

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

1. 들어가며

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

2. 큰 그림

먼저 Normalizing Flow란 무엇인지 살펴볼게요. Normalizing Flow란 생성 모델의 하나입니다. 쉽게 말해서 이미지를 생성하는 모델이라는 말인데요. 대표적인 생성 모델에는 GAN, VAE 등이 있죠. 다만 Normalizing Flow는 이들과는 달리 Decoding 과정을 Encoding 함수의 역함수를 사용한다는 차이가 있습니다.

image 20
그림1. Normalizing Flow

위 그림처럼 모든 연결이 fn과 fn의 역함수로 연결 된거죠. Normalizing Flow의 기초에 대한 자세한 내용은 Normalizing Flow 설명글을 참고해 주세요.

지금 중요한건 이 Normalizing Flow를 어떻게 Anomaly Detection에 활용할 수 있는가 하는거죠. Normalizing Flow의 특성중 하나는 입력 데이터에 대해 확률값으로 표현할 수 있다는 것입니다. 그럼 입력 데이터에 대해 ‘얼마나 정상인지’를 확률값으로 표현할 수 있다는 것이죠.

image 22
그림2. Normalizing Flow와 Anomaly Detection

그렇다면 위의 그림과 같이 정상 이미지에 대해서는 높은 확률값을, 비정상 이미지에 대해서는 낮은 확률값을 내는 Normalizing Flow를 학습해 활용할 수 있습니다. 아주 깔끔하고 단순한 방법이죠?

3. 대표적인 방법들

이제 Normalizing Flow를 사용하는 Anomaly Detection 방법들을 하나씩 살펴보겠습니다.

3-1. Normalizing Flow AD

가장 먼저 살펴볼 방법은 Normalizing Flow AD라고 부르는 방법입니다. 원 제목은 Why Normalizing Flows Fail to Detect Out-of-Distribution Data 입니다. 이 논문은 2020년 NIPS에 발표된 논문입니다. Normalizing Flow를 사용한 최초의 Anomaly Detection 방법이죠. 자세한 내용은 Normalizing Flow AD 논문 리뷰글을 참고해 주세요.

3-2. DifferNet

다음으로 살펴볼 논문은 2021년 WACV에 발표된 DifferNet입니다. DifferNet은 RealNVP를 사용한 Anomaly Detection 모델입니다. 전체적인 구조는 이렇습니다.

image 23
그림3. DifferNet

Multi Scale 이미지로부터 추출한 Feature를 RealNVP 모델을 사용하여 학습하는 모습을 볼 수 있습니다. 자세한 내용은 DifferNet 리뷰글을 참고해 주세요.

3-3. CFLOW

다음으로 살펴볼 논문은 2022년 WACV에 발표된 CFLOW입니다. DifferNet은 Normalizing Flow의 내부 함수로 Fully Connected 함수를 사용했는데요. 이로 인해 2d Spatial 정보가 망가진다는 문제가 있었습니다. CFLOW는 이를 Positional Encoding 정보를 활용하여 해결합니다. 전체적인 구조는 이렇습니다.

image 24
그림4. CFLOW

Normalizing Flow에 투입되기 전 Feature에 Positional Encoding 정보를 추가해주는 모습을 볼 수 있습니다. 자세한 내용은 CFLOW 리뷰글을 참고해 주세요.

3-4. CSFLOW

다음으로 살펴볼 논문은 2022년 WACV에 발표된 CSFLOW입니다. 앞서 CFLOW에서는 2d Spatial 정보를 보존하기 위해 Positional Encoding을 활용했는데요. 사실 이러한 목적이라면 2d Convolution을 사용하는 방법도 있죠. CSFLOW는 이러한 이유로 Normalizing Flow 내부 함수로 Fully Convolution 함수를 사용합니다. 전체적인 구조는 이렇습니다.

image 25
그림5. CSFLOW

또한 Multi Scale Feature를 모두 사용할 수 있도록 Cross Scale 기능을 추가한 모습을 볼 수 있습니다. 자세한 내용은 CSFLOW 리뷰글을 참고해 주세요.

3-5. FastFlow

다음으로 살펴볼 논문은 FastFlow 입니다. CSFLOW와 유사한 문제 의식과 철학을 갖고 있는 방법인데요. 2d Spatial 정보를 보존하기 위해 Normalizing Flow 내부 함수로 Convolution을 사용합니다. 전체적인 구조는 다음과 같습니다.

image 26
그림6. FastFlow

자세한 내용은 FastFlow 리뷰글을 참고해 주세요.

Series Navigation<< [22′ CVPR] PatchCore : Towards Total Recall in Industrial Anomaly Detection[20′ NIPS] Why Normalizing Flows Fail to Detect Out-of-Distribution Data 핵심 리뷰 >>
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