일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 서포트벡터머신이란
- CNN
- TCP
- pytorch
- SVM 이란
- fast r-cnn
- RCNN
- pytorch project
- 데이터 전처리
- cnn 역사
- Computer Vision
- Deep Learning
- svdd
- Object Detection
- libtorch
- EfficientNet
- pytorch c++
- darknet
- yolo
- SVM hard margin
- CS231n
- Faster R-CNN
- computervision
- DeepLearning
- 논문분석
- SVM margin
- self-supervision
- support vector machine 리뷰
- cs231n lecture5
- yolov3
- Today
- Total
아롱이 탐험대
Unsupervised Anomaly Detection with GAN to Guide Marker Discovery 분석 [AnoGAN] 본문
Unsupervised Anomaly Detection with GAN to Guide Marker Discovery 분석 [AnoGAN]
ys_cs17 2021. 7. 21. 19:37OVERVIEW
의료, 기계 등의 분야에서 Anomaly detection (비정상 데이터 탐지)는 매우 중요하다. 현재 몇 회사들은 인공 지능을 활용해 기계의 결함을 분석한다든지, 의료 데이터를 활용해 환자의 질병을 도출하는 기술들을 개발 중이다. 하지만 위와 같은 데이터들은 몇 가지 문제점들이 있다.
(1) 정상 데이터에 비해 비정상 데이터의 양은 현저히 낮다.
(2) 모든 이미지 데이터를 라벨링 하기에는 큰 인력이 필요하다.
(3) 이미지 전체의 특징 활용도가 낮다.
이외에도 몇 가지 문제점들이 존재하는데, 이 문제점들을 해결하고자 이 논문이 등장하게 되었고, 저자는 이 논문의 제목처럼 unsupervied learning (비 지도 학습)과 GAN을 사용하였다.
간략히 설명하자면 여기서 Unsupervised learning 이란 정상 데이터로만 학습을 진행시켜 비정상을 구분하는 학습 기법이다. (Anomaly detection 관점)
위 그림처럼 정상과 비정상 데이터 사이들의 boundary를 잡고 정상/비정상을 구분한다.
POINT
(1) Architecture
우선 해당 논문에서는 망막 데이터를 사용한다.
처음에는 preprocessing 과정을 통해 random sampling을 진행한다. 이를 통해 정상 데이터를 만들게 된다. (Generator가 생성한 정상인 가짜 이미지)
그 후 model을 통해 학습을 시킨다. (이때 Discriminator가 진짜/가짜 이미지를 구분한다.)
이렇게 학습이 끝난 후 정상/비정상 데이터를 model에 넣고 평가를 진행한다. 지표를 통해 평가하고, 오른쪽 빨간색 영역과 같은 model이 어느 부분을 보고 비정상 데이터로 구분했는지도 시각적으로 확인 가능하다.
(2) Training GAN model
앞서 전체적인 architecture의 흐름을 살펴보았으니 이제는 더욱 구체적으로 어떤 방식으로 진행되었는지 알아보자.
참고로 여기서 사용되는 G (Generator)와 D (Discriminator)의 loss는 일반적인 모델과 같다.
맨 왼쪽에 위치한 Latent Space는 정상 데이터의 진짜 이미지에서 유의미한 정보를 가지는 것들로 구성이 된다.
다음과 같은 순서로 학습이 진행된다.
1. Latent Space에서 Z1을 random sampling 한다. 그러고 이를 통해 G가 이미지를 생성한다. (G가 생성한 이미지를 fake image라고 한다.)
2. 그리고 나서 D에 들어가기 전 real image와 fake image를 비교한다.
- 물론 둘 다 정상에 해당하는 데이터지만 real 이미지와 fake 이미지의 차이를 확인하기 위해 residual loss라는 것을 도입한다.
3. D가 위 이미지들 중 어떤 것이 진짜이고 가짜인지를 D loss를 통해 구한다.
4. 지금까지 구한 loss들을 활용하여 total loss를 정의한다.
(3) Mapping new image to the latent space
이렇게 학습을 진행한 후 G와 D에 해당하는 weight를 고정시킨다. 그러고 나서 Gradient descent를 통해 latent space를 재정의한다.
이 과정을 처음에 진행한 latent space를 Z1, 두 번째 진행한 latent space를 Z2,... , n번 째 진행한 latent space를 Zn이라고 하고 위 논문에서는 이 과정을 총 500번 반복했다고 한다. (Z500)
이 과정을 반복하다 보면 결국에는 G가 real image와 비슷한 image를 생성하게 되고, D가 정상 이미지 기준으로 학습을 진행했기 때문에 total loss에 대해서 image가 정상일 때는 작게, 비정상일 때는 크게 나오게 된다.
따라서 Anomaly score = Total loss가 된다.
그리고 테스트 진행 시 input으로 들어오는 image를 X라고 정의하면
위 식처럼 X에 대한 Residual image를 정의할 수 있고, 이는 input image X에서 G가 생각하는 정상 이미지를 뺀 값이라고 해석된다.
따라서 위 연산을 진행하면 맨 처음 첨부한 이미지의 anomalies와 같이 모델이 비정상이라고 생각하는 영역을 시각화할 수 있다.
RESULT
실험은 10000장의 grey scale로 구성된 64*64 사이즈의 망막 데이터로 학습을 진행하였고, test data는 같은 조건을 8192장을 사용하였다. normal과 abnormal이 각 몇 장으로 구성되어 있는지는 안 나와있다.
아무튼 model은 DC GAN을 약간 변형시켜 각 convolution의 channel을 절반씩 줄인 것을 사용하였고, 행의 정보는 다음과 같다.
1행: 진짜 이미지
2행: G가 생성한 가짜 이미지
3행: residual 이미지
4행: 인간이 라벨링 한 비정상 영역
결과적으로 보면 해당 모델이 비정상 영역을 잘 포착한 모습을 볼 수 있다.
다음은 평가 지표의 결과이다. Anormaly detection 분야에서는 acc라는 지표보다는 ROC curve라는 지표를 사용한다. 그 이유는 만약 테스트 데이터 100장 중 정상이 99장, 비정상이 1장 있을 경우 모델이 전체 이미지 100장을 단순히 정상이라고 말한다면 acc는 99%가 되어버린다. 이와 같이 acc의 단점을 보완하고자 recall과 precision을 활용하여 만든 ROC curce를 사용한다.
ROC 커브는 위 (a), (b)에서 보이는 커브와 같이 생겼고, 커브의 아래쪽 영역의 면적을 AUC라고 부른다.
결과를 보면 괜찮게 나온 것을 볼 수 있고, 맨 오른쪽 (c)는 residual score를 분산화를 시킨 모습을 볼 수 있는데 이는 정상과 비정상 데이터의 score가 뚜렷하게 차이가 남으로써 효과가 있다고 해석할 수 있다.
위 논문의 단점은 결국 정상, 비정상을 나누는 기준점은 사람이 직접 정해야 하는 hyper parameter라는 점이다.
REFERENCE
'study > paper reviews' 카테고리의 다른 글
Deep One-Class Classification 분석 (0) | 2021.10.05 |
---|---|
Self-Supervised GANs via Auxiliary Rotation Loss 분석 (0) | 2021.07.22 |
Auto-Encoding Variational Bayes (VAE) 분석 (2) | 2021.07.14 |
CNN attention based networks (2) | 2021.03.12 |
Deep anomaly detection using geometric transforms 분석 (0) | 2021.01.04 |