- 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
내용 요약
기존에도 SVDD라는 Anomaly Detection 방법론이 존재했습니다. 하지만 성능이 좋지 않은 한계가 있었습니다. SVDD의 철학에 딥러닝 방법을 접목한 Deep SVDD라는 방법론을 제안합니다. 다양한 실험을 통해 기존 방법들보다 Anomaly Detection 성능도 좋을 뿐만 아니라 adversarial attack에도 강건함을 보였습니다. 이번 글은 독자들이 Anomaly Detection의 기본적인 내용을 알고 있다고 가정하고 있습니다. Anomaly Detection에 관한 기본적인 내용은 Anomaly Detection에 관한 모든 것을 참고해주세요.
1. 기존 방법의 문제점
딥러닝 방식의 Anomaly Detection 방법론들이 인기를 전, 전통적인 방법의 Anomaly Detection 방법들이 존재했습니다. One class SVM, kernel density estimation, SVDD 등이 전통적인 방법의 Anomaly Detection 방법들입니다. 하지만 이들의 성능은 그다지 좋지 못했습니다. 왜 그랬을까요?
SVDD 방법을 생각해 보겠습니다. SVDD의 철학은 이렇습니다. 먼저 정상 데이터 전체를 포함하는 가장 작은 구를 찾아냅니다. 그리고 이 구는 정상 데이터들을 모두 감싸고 있는 구 이므로, 이 구의 밖에 있는 데이터는 정상이 아니라고 판단하는 겁니다. 또한 이 구에서 멀리 벗어나 있을수록 비정상의 정도가 크다고 판단할 수 있겠죠.
일리가 있어 보입니다. 그런데 이런 경우에는 어떨까요?
검은색 점들이 정상 데이터이고, 파란색 큰 원이 정상 데이터를 포함하는 구라고 가정하겠습니다. 이 구는 반지름 R로 정상 데이터들을 모두 포함하고 있는 가장 작은 부피의 구입니다. 이제 빨간색으로 표시된 새로운 데이터 X1과 X2를 보겠습니다. X1은 정상 데이터들과 매우 유사하게 분포하는 것으로 보아 정상일 가능성이 커 보입니다. 그리고 SVDD의 논리대로라면 X1은 구의 중심으로부터 R보다 작은 위치에 존재하므로 정상이라고 판별하겠네요.
반면 X2는 어떨까요? 우리는 X2가 비정상이라는 것을 압니다. 왜냐하면 정상 데이터 분포와는 많이 떨어져 있으니까요.
하지만 SVDD 논리상으로도 비정상일까요? SVDD의 입장에서는 X2도 정상입니다. 구의 중심에서 떨어진 거리가 X1이나 X2나 비슷하고 R보다도 작기 때문이죠. 이렇듯 SVDD는 고차원의 데이터를 변환 없이 직접 다루기에 논리상 허점이 존재했습니다.
2. 제안 방법
Deep SVDD는 이러한 SVDD의 허점을 딥러닝 방식을 사용하여 보완한 방법입니다. 딥러닝은 고차원 공간상의 데이터를 저차원 공간상으로 매핑할 수 있는 대표적인 방법이죠. 따라서 SVDD의 철학을 그대로 적용하면서 저차원 공간으로 매핑할 수 있는 딥러닝의 장점을 활용하면 훌륭한 조합이 되겠네요. Deep SVDD의 자세한 내용을 하나씩 살펴보겠습니다.
2-1. 큰 그림
먼저 Deep SVDD의 큰 그림을 생각해 보겠습니다.
SVDD의 철학은 그대로 사용할 겁니다. 즉 정상 데이터들을 모두 포함하는 가장 작은 부피의 구를 찾을 거예요. 그리고 이 구에서 벗어난 정도가 클수록 불량이라고 판단할 겁니다. 다만 이 과정을 고차원의 이미지 공간에서 수행하지 않을 거예요. CNN을 사용하여 정상 데이터를 고차원의 이미지 공간에서 저차원의 feature 공간으로 매핑해줄 겁니다.
이 두 과정을 동시에 진행한다고 생각해 보겠습니다.
CNN을 사용하여 정상 이미지 데이터를 저차원의 feature 공간으로 매핑해줄 거예요. 그런데 이때 매핑하는 방향은 모든 정상 이미지의 feature들이 한 점을 중심으로 모이도록 해줄 겁니다. 그럼 이미지 공간에서는 꽤나 무작위 하게 흩어져있던 점들이 feature 공간에서는 하나의 구 안에 균등하게 분포하겠죠?
위 그림은 Deep SVDD 방법을 표현한 것입니다.
왼쪽을 보면 고차원의 이미지 공간에 데이터가 넓게 분포하고 있는 모습을 볼 수 있습니다. 이들을 대표하는 구(파란색)를 한번 생각해 볼게요. 이 구는 정상 데이터를 모두 포함하는 가장 작은 구이지만, 이 구로는 비정상 데이터들 (형광색)을 구분해낼 수 없습니다. 그래서 CNN을 사용해 저차원의 feature 공간으로 보내줄 겁니다. 위 그림의 가운데 부분은 딥러닝 모델을 표현한 것입니다.
이 과정을 통해 위 그림과 같이 N개의 정상 이미지는 저차원 공간상의 N개 데이터로 매핑되게 됩니다. 그런데 이때 저차원 공간으로 매핑하는 방향이 있다고 했었죠. 그냥 매핑하는 게 아닌, 이 점들이 한 점에서 모이도록 매핑해줄 겁니다.
그럼 위 그림처럼 고차원 이미지 공간상에 흩어져있던 데이터들이 저차원 feature 공간에서는 모여 분포하게 되겠죠? 이제는 이들을 포함하는 가장 작은 구는 비로소 정상 데이터를 대표하는 공간이라고 말할 수 있겠네요. 다시 가장 위의 fig1 우측 그림을 보면 저차원 feature 공간상에서는 정상 데이터들은 구 안에 분포하고 비정상 데이터들은 구의 바깥에 분포하는 모습을 볼 수 있습니다.
2-2. Loss function
위에서 살펴본 논리를 표현할 수 있는 loss function을 생각해 보겠습니다.
저자의 논리대로라면 N개의 정상 이미지들을 저차원 공간상의 한 점을 중심으로 모여 분포하도록 유도해줘야 합니다. 또한 이때 N개의 데이터를 모두 한 점으로 밀어 넣어버리면 곤란하겠죠.
예를 들어 딥러닝 모델의 모든 가중치가 0이라고 생각해 볼까요?
이러면 입력값과 상관없이 모든 출력이 0이 나올 겁니다. 사실 이렇게만 해줘도 우리가 위에서 생각한 논리에는 부합합니다. 모든 정상 데이터가 한 점에 모여 작은 구로 대표할 수 있게 되었으니까요. 하지만 이렇게 모아버리면 비정상 데이터도 똑같이 모일테니 구분이 안 되겠죠. 이렇게 논리에는 부합하지만 정답이 아닌, 그러면서도 딥러닝 모델 입장에서는 가장 쉬운 해결책을 trivial solution이라고 합니다. 우리는 이 trivial solution은 제외하고 정답을 찾아야 합니다.
따라서 정상 데이터를 한 점으로 모으되, ‘적당히’ 모아야 합니다. 이렇게 ‘적당히’ 모으기 위해 regularizer 항을 loss function에 추가해 주겠습니다. 최종적으로 loss function의 수식은 다음과 같습니다.
첫 번째 항은 모든 정상 이미지의 feature가 c라는 한 점을 중심으로 모이도록 유도합니다. 이때 c는 feature들의 중심점입니다.
두 번째 항은 딥러닝 모델이 trivial solution을 향해 가는 것을 막아주는 weight decay regularizer입니다.
2-3. Anomal score
학습이 완료된 뒤 anomal score를 측정하는 방법을 살펴보겠습니다.
학습이 완료되었다면 우리의 딥러닝 모델은 정상 데이터들은 한 점을 중심으로 모이도록 매핑해줄 겁니다. 따라서 비정상 데이터라면 이 중심점에서 먼 곳으로 매핑되었겠죠. 따라서 중심점과의 거리가 멀수록 비정상으로 판단할 수 있습니다. 이를 수식으로 표현하면 다음과 같습니다.
첫 번째 항인 𝜙는 x라는 데이터가 딥러닝 모델에 의해 매핑된 feature를 의미합니다.
두 번째 항인 c는 정상 데이터 feature들의 중심 (center)를 의미합니다.
이 둘의 차이로 anomal score를 측정하는 모습을 볼 수 있습니다.
3. 실험 결과
이번에는 Deep SVDD의 성능을 실험을 통해 살펴보겠습니다.
3-1. MNIST, CIFAR10
먼저 다른 방법들보다 Anomaly Detection을 잘하는지 살펴보겠습니다.
이는 MNIST와 CIFAR10 데이터셋을 사용한 one class classification 성능을 통해 살펴볼 거예요.
위 그림은 MNIST와 CIFAR10의 one class classification 성능을 비교한 표입니다.
앞의 세 개는 SVDD, KDE, IF 등 딥러닝을 사용하지 않은 전통적 Anomaly Detection 방법들입니다. AutoEncoder와 GAN을 사용한 방법들과도 성능을 비교해 보겠습니다.
가장 오른쪽의 Deep SVDD의 성능을 보면 거의 대부분의 클래스에 대해 가장 높은 성능을 내는 모습을 볼 수 있습니다. 비슷한 철학을 가진 전통적 방법들은 물론이고 딥러닝 모델을 사용하는 DCAE, AnoGAN보다도 좋은 성능을 보이네요. 따라서 Deep SVDD는 기존 방법들보다 성능이 좋은 Anomaly Detection 방법론이라고 할 수 있습니다.
3-2. Adversarial attacks
이번에는 adversarial attack에 얼마나 강건한 모델인지를 확인해 보겠습니다.
Adversarial attack이란 의도적으로 모델을 속이는 방법을 말합니다. 모델이 학습한 정상 데이터와 비슷하지만 비정상인 데이터를 슬쩍 넣어본 뒤 이를 비정상으로 잘 찾아내는지를 테스트하는 거죠.
이번 실험은 traffic sign 데이터셋으로 진행했습니다. 실험 과정은 이렇습니다. 각 모델은 정상적인 traffic sign만으로 학습을 진행합니다. 그리고 테스트할 때는 기존의 정상, 비정상 traffic sign 외에 adversarial attack을 사용한 비정상 traffic sign도 만들어 추가해주는 거죠. 이렇게 추가할 데이터는 테스트 데이터셋에 있는 traffic sign 이미지에 noise를 추가하여 만들어냅니다.
위 사진은 Deep SVDD가 찾아낸 비정상 데이터셋입니다.
초록색 테두리가 adversarial attack으로 만들어낸 비정상 이미지입니다. 정상적인 traffic sign 이미지에 noise가 추가된 모습을 볼 수 있습니다. 이렇게 실험한 결과는 다음과 같습니다.
기존의 다른 방법들과 비교했을 때 가장 좋은 성능을 볼 수 있습니다.
Adversarial attack에 강건한 Anomaly Detection 모델이라는 것은 무슨 의미일까요? Adversarial attack으로 만들어낸 이미지는 정상 이미지와 매우 비슷하게 생겼습니다. 이는 고차원의 이미지 공간에서도 매우 가깝게 분포하는 데이터임을 의미합니다. 즉 딥러닝 모델의 입장에서도 아주 구분하기 힘든 데이터라는 거죠. 이렇게 정상과 매우 유사한 데이터도 잘 구분해 낸다는 것은 그만큼 정상 데이터의 특징을 잘 찾아내어 예민하게 찾아내는 detector임을 의미합니다.
4. 결론
기존의 SVDD 방식을 딥러닝 방식으로 확장한 Deep SVDD 방법을 살펴봤습니다. Deep SVDD 방법은 딥러닝 모델을 사용하여 정상 데이터를 저차원 공간상의 한 점으로 매핑하는 방법입니다. 테스트 단계에서는 이 중심점으로부터의 거리를 바탕으로 anomal score를 측정합니다. 이러한 방법으로 정상 데이터들의 공통된 특징을 잘 추출할 수 있었습니다. Deep SVDD는 여러 실험을 통해 기존 방법들 대비 Anomaly Detection 성능도 좋을 뿐만 아니라 adversarial attack에도 강건한 모델임을 보였습니다.