- 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
내용 요약
Normalizing Flow 모델이 왜 Anomaly Detection에 실패하는지 원인을 분석합니다. 이를 해결하기 위한 세가지 해결 방안을 제안합니다. 실험 결과를 통해 제안 방법의 적절함을 증명합니다.
1. 들어가며
이번 글에서는 2020년 NIPS에 발표된 Why Normalizing Flows Fail to Detect Out-of-Distribution Data 논문을 리뷰합니다. 이 논문은 최초로 Normalizing Flow를 Anomaly(OOD) Detection에 적용하며 문제점을 분석한 논문입니다. Anomaly Detection에 관한 기본적인 내용은 Anomaly Detection에 관한 모든 것 글을 참고해주세요. Normalizing Flow에 대한 기본적인 내용은 Normalizing Flow와 딥러닝 글을 참고 바랍니다.
2. 제안 방법
바로 제안 방법을 살펴보겠습니다.
2-1. Why flows fail to detect OOD data
먼저 저자들은 왜 flows 모델이 OOD 검출에 실패하는지 원인을 분석합니다.
위 그림a는 ImageNet으로 학습한 RealNVP 모델의 각 데이터셋에 대한 log likelihood 그래프입니다. SVHN, CelebA 데이터셋은 OOD 임에도 불구하고 ImageNet 데이터셋보다 더 큰 likelihood를 내는 모습을 볼 수 있습니다.
그림b는 ID와 OOD에 대한 RealNVP 모델의 Intermediate Layer Output을 보여주고 있습니다. ID, OOD 모두 구조가 망가지지 않은채로 흐름이 잘 유지되는 모습을 보입니다. OOD 같은 경우는 구조가 망가지는 모습을 보이며 최종적으로 Likelihood가 낮게 나와줘야 하는데 말이죠.
2-2. Flow latent spaces
이에 저자들은 Normalizing Flow는 Semantic 정보가 아닌 Pixel Correlation과 Graphical Details에 초점을 맞추기에 OOD도 잘 복원하며 높은 Likelihood를 보인다고 주장합니다.
위 그림은 RealNVP 모델의 latent space 모습입니다. 왼쪽 그림은 Fashion MNIST로 학습한 뒤 MNIST를 테스트, 오른쪽 그림은 CelebA를 학습한 뒤 SVHN을 테스트하는 모습입니다. 왼쪽 그림의 MNIST와 오른쪽 그림의 SVHN은 OOD 임에도 불구하고 latent space에서 원래의 형상이 잘 유지되는 모습을 보입니다. 따라서 그림 1의 실험에서 OOD에서도 높은 likelihood가 나왔음을 알 수 있습니다.
2-3. Transformations learned by coupling layers
이에 대한 원인을 분석하기 위해 coupling layer에서 image가 어떻게 변환되는지를 살펴봅니다.
Coupling layer에서는 masked input에 대해 affine transform을 수행하기 위해 s, t 함수를 학습합니다. 이때 위의 그림에서와 같이 t함수는 원본 이미지를 거의 그대로 복원하는 방향으로 학습하게 됩니다. 따라서 OOD 데이터셋에 대해서도 원래 이미지를 잘 복원할 수 있고 이는 OOD의 Likelihood가 높게 나오는 원인이 됩니다.
저자들은 이런 현상의 원인을 앞서 말했던 leveraging local pixel correlations 현상과 coupling layer co-adaptation 효과 때문이라고 주장합니다. 그림 3의 c, d 그림을 보면 horizontal masking을 했는데도 OOD를 잘 복원해내는 모습을 볼 수 있습니다. 첫 번째 coupling layer에서 위쪽 절반의 정보를 encoding 해서 아래 절반에 넣어주고, 두 번째 coupling layer에서는 다시 이 아래 정보를 decoding 해서 위쪽 절반을 채워줍니다. 이렇게 반복하며 원래 정보를 유지하는 현상을 저자들은 coupling layer co-adaptation이라고 부릅니다.
2-4. Changing biases in flows for better OOD detection
위의 내용까지로 보건대, flows 모델은 모든 structured image에 대해 likelihood를 증가시키도록 transformation을 학습한다고 볼 수 있습니다. 따라서 OOD 데이터셋에 대한 high likelihood를 낮추기 위해서는 이 bias를 완화시켜야 합니다.
논문에서는 이를 위한 두 가지 방법을 제시합니다.
첫 번째는 masking strategy를 바꾸는 방법입니다. 세 가지 masking 방식에 대한 실험을 진행합니다. 세 가지 방식은 Checkerboard, horizontal, cycle-mask입니다. Cycle mask 방식은 이미지 정보가 한참 돌고 돌아서 모델이 direct 하게 사용할 수 없도록 저자들이 고안한 방식입니다. 그랬더니 checkerboard -> horizontal -> cycle-mask 순으로 낮은 OOD likelihood를 냈습니다.
두 번째는 st-network에 bottleneck을 주는 방법입니다. st-network가 너무 큰 capacity를 가져 거의 모든 structured data를 다 원복 시킬 수 있으므로 bottleneck을 주어 이 capacity를 낮추자는 아이디어입니다. 이를 위해 st-network 중간에 fully connected layer를 넣어 dimension을 낮춘 뒤 원래 dimension으로 복원시키는 방법을 사용했습니다.
위 그림을 보면 dimension(l)을 낮게 압축시킬수록 low OOD likelihood를 내는 모습을 볼 수 있습니다.
2-5. Out of distribution detection using image embeddings
마지막으로 input으로 image가 아닌 embedding vector를 사용하는 실험을 진행합니다.
그 결과 image를 학습하는 것보다 pretrained CNN으로 추출한 feature를 사용했을 때 더 높은 ID likelihood와, 더 낮은 OOD likelihood를 얻을 수 있었습니다.