- Anomaly Detection 설명 – 정의, 특성, 활용 방안, 연구 흐름
- [One Class Classification 방식의 Anomaly Detection]
- [18′ ICML] Deep SVDD : Deep One-Class Classification
- [20′ ICLR] DEEP SEMI-SUPERVISED ANOMALY DETECTION (Deep SAD) 핵심 리뷰
- [20′ ACCV] Patch SVDD : Patch-level SVDD for Anomaly Detection and Segmentation
- [21′ ICLR] EXPLAINABLE DEEP ONE-CLASS CLASSIFICATION (FCDD) 핵심 리뷰
- [Reconstruction 방식의 Anomaly Detection]
- [17′ IPMI] AnoGAN : Unsupervised Anomaly Detection with Generative Adversarial Networks to Guide Marker Discovery
- [18′ ACCV] GANomaly : Semi-Supervised Anomaly Detection via Adversarial Training
- [20′ ECCV] Attention Guided Anomaly Localization in Images (CAVGA) 핵심 리뷰
- [21′ ICCV] Devide and Assemble : Learning Block-wise Memory for Unsupervised Anomaly Detection 핵심 리뷰
- [21′ ICCV] Learning Unsupervised Metaformer for Anomaly detection 핵심 리뷰
- [22′ CVPR] SSPCAB : Self-Supervised Predictive Convolutional Attentive Block for Anomaly Detection 핵심 리뷰
- [Pretrained Feature Matching 방식의 Anomaly Detection]
- [20′ Arxiv] SPADE : Sub-Image Anomaly Detection with Deep Pyramid Correspondences
- [20′ ICPR] Mahalanobis AD : Modeling the Distribution of Normal Data in Pre-Trained Deep Features for Anomaly Detection
- [21′ ICPR] PaDiM : a Patch Distribution Modeling Framework for Anomaly Detection and Localization
- [22′ CVPR] PatchCore : Towards Total Recall in Industrial Anomaly Detection
- [Normalizing Flow 방식의 Anomaly Detection]
- [20′ NIPS] Why Normalizing Flows Fail to Detect Out-of-Distribution Data 핵심 리뷰
- [21′ WACV] Same Same But DifferNet: Semi-Supervised Defect Detection with Normalizing Flows 핵심 리뷰
- [22′ WACV] CFLOW-AD: Real-Time Unsupervised Anomaly Detection with Localization via Conditional Normalizing Flows 핵심 리뷰
- [22′ WACV] Fully Convolutional Cross-Scale-Flows for Image-based Defect Detection (CS-Flow) 핵심 리뷰
- [21′ arxiv] FastFlow: Unsupervised Anomaly Detection and Localization via 2D Normalizing Flows 핵심 리뷰
- [Self Supervised Learning 방식의 Anomaly Detection]
- [18′ NIPS] Deep Anomaly Detection Using Geometric Transformations (GEOM) 핵심 리뷰
- [19′ NIPS] SSL-AD : Using Self-Supervised Learning Can Improve Model Robustness and Uncertainty 핵심 리뷰
- [20′ ICLR] CLASSIFICATION-BASED ANOMALY DETECTION FOR GENERAL DATA (GEOD) 핵심 리뷰
- [20′ NIPS] CSI: Novelty Detection via Contrastive Learning on Distributionally Shifted Instances
- [21′ ICLR] SSL-OCC : Learning and evaluating representations for deep one class classification 핵심 리뷰
- [21′ ICCV] Hierarchical Transformation AD : A Hierarchical Transformation-Discriminating Generative Model for Few Shot Anomaly Detection 핵심 리뷰
- [21′ ICLR] SSD: A UNIFIED FRAMEWORK FOR SELFSUPERVISED OUTLIER DETECTION 핵심 리뷰
- [Knowledge Distillation 방식의 Anomaly Detection]
- [20′ CVPR] Uninformed Students: Student–Teacher Anomaly Detection with Discriminative Latent Embeddings
- [21′ Arxiv] Student Teacher AD : Student-Teacher Feature Pyramid Matching for Unsupervised Anomaly Detection
- [21′ CVPR] Multiresolution Knowledge Distillation for Anomaly Detection
- [22′ CVPR] Reverse Distillation AD : Anomaly Detection via Reverse Distillation from One-Class Embedding
- [Synthetic Anomaly 방식의 Anomaly Detection]
- [21′ ICCV] DRAEM : A discriminatively trained reconstruction embedding for surface anomaly detection
- [21′ CVPR] CutPaste: Self-Supervised Learning for Anomaly Detection and Localization
1. 들어가며
이번 글에서는 Normalizing Flow 방식의 Anomaly Detection 방법을 소개합니다. 먼저 Normalizing Flow 방식의 큰 그림을 설명하고요. 이를 사용한 대표적인 방법들을 하나씩 간략하게 살펴보겠습니다. Anomaly Detection에 관한 기본적인 내용은 Anomaly Detection에 관한 모든 것 글을 참고해주세요.
2. 큰 그림
먼저 Normalizing Flow란 무엇인지 살펴볼게요. Normalizing Flow란 생성 모델의 하나입니다. 쉽게 말해서 이미지를 생성하는 모델이라는 말인데요. 대표적인 생성 모델에는 GAN, VAE 등이 있죠. 다만 Normalizing Flow는 이들과는 달리 Decoding 과정을 Encoding 함수의 역함수를 사용한다는 차이가 있습니다.
위 그림처럼 모든 연결이 fn과 fn의 역함수로 연결 된거죠. Normalizing Flow의 기초에 대한 자세한 내용은 Normalizing Flow 설명글을 참고해 주세요.
지금 중요한건 이 Normalizing Flow를 어떻게 Anomaly Detection에 활용할 수 있는가 하는거죠. Normalizing Flow의 특성중 하나는 입력 데이터에 대해 확률값으로 표현할 수 있다는 것입니다. 그럼 입력 데이터에 대해 ‘얼마나 정상인지’를 확률값으로 표현할 수 있다는 것이죠.
그렇다면 위의 그림과 같이 정상 이미지에 대해서는 높은 확률값을, 비정상 이미지에 대해서는 낮은 확률값을 내는 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 모델입니다. 전체적인 구조는 이렇습니다.
Multi Scale 이미지로부터 추출한 Feature를 RealNVP 모델을 사용하여 학습하는 모습을 볼 수 있습니다. 자세한 내용은 DifferNet 리뷰글을 참고해 주세요.
3-3. CFLOW
다음으로 살펴볼 논문은 2022년 WACV에 발표된 CFLOW입니다. DifferNet은 Normalizing Flow의 내부 함수로 Fully Connected 함수를 사용했는데요. 이로 인해 2d Spatial 정보가 망가진다는 문제가 있었습니다. CFLOW는 이를 Positional Encoding 정보를 활용하여 해결합니다. 전체적인 구조는 이렇습니다.
Normalizing Flow에 투입되기 전 Feature에 Positional Encoding 정보를 추가해주는 모습을 볼 수 있습니다. 자세한 내용은 CFLOW 리뷰글을 참고해 주세요.
3-4. CSFLOW
다음으로 살펴볼 논문은 2022년 WACV에 발표된 CSFLOW입니다. 앞서 CFLOW에서는 2d Spatial 정보를 보존하기 위해 Positional Encoding을 활용했는데요. 사실 이러한 목적이라면 2d Convolution을 사용하는 방법도 있죠. CSFLOW는 이러한 이유로 Normalizing Flow 내부 함수로 Fully Convolution 함수를 사용합니다. 전체적인 구조는 이렇습니다.
또한 Multi Scale Feature를 모두 사용할 수 있도록 Cross Scale 기능을 추가한 모습을 볼 수 있습니다. 자세한 내용은 CSFLOW 리뷰글을 참고해 주세요.
3-5. FastFlow
다음으로 살펴볼 논문은 FastFlow 입니다. CSFLOW와 유사한 문제 의식과 철학을 갖고 있는 방법인데요. 2d Spatial 정보를 보존하기 위해 Normalizing Flow 내부 함수로 Convolution을 사용합니다. 전체적인 구조는 다음과 같습니다.
자세한 내용은 FastFlow 리뷰글을 참고해 주세요.