- 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. 들어가며
이번 글에서는 One Class Classification 방식의 Anomaly Detection 방법에 대해 소개합니다. 먼저 One Class Classification 방식의 큰 그림을 살펴볼 거고요. 이어서 대표적인 방법들에 대해 하나씩 간략하게 살펴보도록 하겠습니다. Anomaly Detection에 관한 기본적인 내용은 Anomaly Detection에 관한 모든 것 글을 참고해주세요.
2. 큰 그림
먼저 One Class Classification 방식 Anomaly Detection 방법의 큰 그림을 살펴보겠습니다. 이 방식은 거의 초창기 Anomaly Detection 방법이라고 할 수 있는데요. 초창기 방법인 만큼 단순하고 직관적인 아이디어에 기초하고 있습니다. Anomaly Detection은 Normal Class 데이터만 학습에 사용할 수 있잖아요. 그러니 Normal Data를 한 점에 모이도록 학습하자는 겁니다. 그럼 아래 그림과 같아지겠죠.
위 그림의 왼쪽은 학습 전, 오른쪽은 학습 후의 Feature 분포를 나타낸 그림입니다. 학습 전에는 Normal Feature와 Anomal Feature가 구분없이 넓게 분포하고 있는데요. Normal Feature에 대해서만 한 점에서 모이도록 학습하면 오른쪽 그림과 같이 Normal Feature는 뭉치고, Anomal Feature는 바깥 부위에 분포하고 있는 모습을 볼 수 있습니다. 그럼 테스트 단계에서는 어떻게 Normal / Anomal을 구분할까요? 정상 Feature 중앙으로부터 얼마나 떨어져 있는지를 측정해보면 됩니다. 중심부로부터 멀리 떨어져 있을수록 Anomal Feature겠죠?
물론 초창기 아이디어이니만큼 저렇게 명확하게 Normal과 Anomal이 구분되지는 않았습니다. 하지만 One Class Classification 방법은 이후 연구에 많은 영향을 주었죠.
3. 주요 방법들
이제 One Class Classification 방식의 주요 Anomaly Detection 방법들을 간략하게 살펴보겠습니다.
3-1. Deep SVDD
첫 시도라고 할 수 있는 모델은 Deep SVDD입니다. Deep SVDD는 위에서 언급한 아이디어를 거의 그대로 적용한 모델이에요.
위 그림과 같이 Normal Feature가 한 점에서 모이도록 학습해주고요.
위 그림과 같이 Normal Feature의 중심부로부터 떨어진 거리를 바탕으로 Normal과 Anomal을 구분하는 방식입니다. 초창기 버전인만큼 성능이 매우 좋지는 않았지만 이후 연구들에 많은 아이디어를 제공해주었죠. 보다 자세한 내용은 Deep SVDD 리뷰글을 참고해 주세요.
3-2. Patch SVDD
이번엔 이런 생각을 할 수 있을거 같아요. 꼭 이미지 별로 Normal / Anomal을 구분해야 할까요? 어차피 정상 이미지가 다 비슷하게 생겼다면 패치별로 나눠서 동일한 아이디어를 적용해도 될거 같은데요?
위 그림을 보면 Deep SVDD와 Patch SVDD를 비교하고 있는데요. Patch SVDD는 Deep SVDD를 패치별로 적용한 모델입니다. 이 외에도 다양한 아이디어가 적용되어 성능을 크게 끌어 올렸는데요. 자세한 내용은 Patch SVDD 리뷰글을 참고해 주세요.
3-3. Deep SAD
그런데 말이죠. 만약에 아주 조금이라도 Anomal 데이터를 학습에 사용할 수 있다면 어떻게 해야할까요? 지금까지는 Normal 데이터만 사용했기에 한 점에서 모이도록 학습했잖아요. 그럼 Anomal 데이터는 그 점에서 멀어지도록 학습하면 되지 않을까요? 그럼 수식은 이렇게 되겠죠.
이런 아이디어를 구현한 방식이 Deep SAD입니다. Deep SVDD의 아이디어에 Anomal Feature에 대한 접근 방식까지 고려해주었죠. 자세한 내용은 Deep SAD 리뷰글을 참고해 주세요.
3-4. FCDD
Anomaly Detection 방법은 실제 사용성을 염두에 두고 연구되는 분야인데요. 그만큼 정상과 비정상을 구분 하는것도 중요하지만 어느 부위가 비정상인지를 설명하는 능력도 중요합니다. 바로 이 부분에 초점을 맞춘 모델이 FCDD인데요. FCDD는 Deep SVDD의 아이디어를 Fully Convolution Network로 구현합니다.
덕분에 위 그림처럼 어느 부위가 비정상인지 Transposed Convolution을 사용하여 설명할 수 있게 되었죠. 자세한 내용은 FCDD 리뷰글을 참고해 주세요.