- 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. 들어가며
이번 글에서는 Reconstruction 방식의 Anomaly Detection 방법에 대해 설명합니다. 먼저 Reconstruction 방식 Anomaly Detection 방법의 큰 그림을 살펴보고요. 대표적인 방법들을 하나씩 간략하게 살펴보겠습니다. Anomaly Detection에 관한 기본적인 내용은 Anomaly Detection에 관한 모든 것 글을 참고해주세요.
2. 큰 그림
먼저 큰 그림을 살펴볼게요. Reconstruction 이란 ‘복원’을 의미합니다. 그럼 ‘복원’하는 모델을 학습하여 Anomaly Detection을 수행하겠다는 의미일텐데요. ‘복원’하는 능력이 Normal / Anomal을 구분하는것과 무슨 관련이 있을까요?
핵심 아이디어는 이렇습니다. Anomaly Detection은 Normal 데이터만을 학습에 사용할 수 있다는 전제가 있죠. 따라서 Normal 데이터만으로 Reconstruction을 학습할 겁니다. 이렇게 학습한 모델은 테스트 단계에서의 데이터에 어떻게 반응할까요? Normal 데이터는 학습한 대로 잘 Reconstruction 하겠죠. 그럼 Anomal 데이터는요? 잘 Reconstruction 하지 못할겁니다. 왜냐하면 학습 단계에서 한번도 본 적이 없는 데이터니까요.
따라서 Normal 데이터는 원본 데이터와 Reconstruction된 데이터의 차이가 크지 않을거고요. 반대로 Anomal 데이터라면 이 차이가 클겁니다. 위 그림처럼요. 그럼 이 차이를 바탕으로 Normal과 Anomal을 구분해줄 수 있겠죠?
3. 대표적인 방법들
위와 같이 간단한 아이디어에서 출발해서 지금은 이전 모델의 한계를 개선해가며 발전하고 있는데요. Reconstruction 방식의 Anomaly Detection 모델은 2023년 현재도 계속해서 발전하고 있는 방법이기도 합니다. 이제 대표적인 모델들을 하나씩 간략하게 살펴보겠습니다.
3-1. AnoGAN
가장 초창기 대표적인 모델로는 역시 AnoGAN을 들 수 있습니다. 이름에서 알 수 있듯이 Anomaly Detection을 위해 GAN을 사용한 모델인데요. 모델 구성은 다음과 같습니다.
정상 이미지를 생성하는 GAN을 학습해 주는거죠. 이렇게 학습이 완료되면 Anomal 이미지는 잘 생성하지 못하겠죠? 이 차이를 이용하는 겁니다. 자세한 내용은 AnoGAN 리뷰글을 참고해 주세요.
3-2. GANomaly
바로 이어서 AnoGAN을 보완한 GANomaly 모델이 발표 되었는데요. 마찬가지로 이름에서 알 수 있듯이 GAN을 활용한 방법입니다.
AnoGAN의 방법을 그대로 사용하면서 조금더 압축된 정보를 학습에 활용하는 모습을 볼 수 있습니다. 자세한 내용은 GANomaly 리뷰글을 참고해 주세요.
3-3. CAVGA
Reconstruction을 학습하면서 Attention을 활용할 수 있을까요? CAVGA는 Reconstruction 모델에 Attention 기능을 추가한 Anomaly Detection 방법인데요.
정상 이미지라면 이미지 전체에 Attention을 해야 겠죠? 이렇게 Attention Map에 대한 제약조건을 추가해 주는게 CAVGA의 핵심 아이디어입니다. 자세한 내용은 CAVGA 리뷰글을 참고해 주세요.
3-4. Divide and Assemble
Reconstruction 방식의 아이디어는 직관적이고 납득이 되는데요. 하지만 실제 모델들의 성능은 생각처럼 좋지 않았죠. 여러가지 원인이 있겠지만 가장 대표적인 원인중 하나는 딥러닝 모델이 너무 똑똑하다는 것입니다. 학습 과정에서 본 적이 없는 Anomal 데이터도 곧잘 Reconstruction 해냈죠. 이를 해결하기 위한 방법으로 데이터를 나누고 (Divide) 조립하는 (Assemble) 방법을 제안하는데요.
위 그림을 보면 Normal 이미지와 Anomal 이미지를 Reconstruction 하는 과정을 보여주고 있습니다. 이때 Normal 데이터의 조각을 사용해서 Reconstruction 해주는 건데요. 이 조각이 너무 작으면 Normal과 Anomal 모두 Reconstruction이 가능하죠. 반면 적당히 조각이 크면 Normal은 Reconstruction이 가능하지만 Anomal은 Reconstruction이 안되는 모습을 볼 수 있습니다. 즉 Normal과 Anomal이 구분되는 거죠. 자세한 내용은 Divide And Assemble 리뷰글을 참고해 주세요.
3-5. MetaFormer
그런데 말이죠. 꼭 이미지 전체를 잘 Reconstruction 해야 할까요? 생각해보면 이미지라는건 물체와 배경이 있잖아요. 우리가 원하는건 물체에 대해 Reconstruction을 잘하는거지 배경을 잘 할 필요가 있을까요? 이러한 문제 의식에 착안해 물체에 대해서만 Reconstruction 하는 기법을 제안하는 모델이 MetaFormer입니다. 이름에 Meta가 붙는 이유는 아주 많은 다양한 데이터에 대해 범용적으로 Reconstruction을 학습하기 때문이고요.
위 그림을 보면 Transformer가 물체 부분에 집중할 수 있도록 도와주는 모습을 볼 수 있습니다. 자세한 내용은 MetaFormer 리뷰글을 참고해 주세요.
3-6. SSPCAB
이번 논문의 이름은 SSPCAB인데요. Self Supervised Predictive Convolutional Attentive Block의 약자입니다. 제목만 봤을때는 Reconstruction 방법이 아닌것 같은데요. 사실 Reconstruction을 학습하는 Block입니다.
위 그림을 보면 Block의 Input과 Output이 같아지도록 학습하는 모습을 볼 수 있죠. 재미있건 이 모듈을 기존 Anomaly Detection 모델 중간에 삽입할 수 있다는 겁니다. 그럼 Self Supervised 방식으로 같이 학습할 수 있죠. 자세한 내용은 SSPCAB 리뷰글을 참고해 주세요.