본문 바로가기

Diffusion

AnoDDPM: Anomaly Detection with Denoising DiffusionProbabilistic Models using Simplex Noise

AnoDDPM: Anomaly Detection with Denoising Diffusion Probabilistic Models using Simplex Noise [paper]

 

1. Introduction

DDPM은 데이터 분포로부터 샘플을 생성할 수 있으며 GAN이나 VAE보다 우수한 mode coverage를 보인다. 저자는 DDPM의 reverse(denoising) process를 활용한 partial diffusion process을 통해 potentially anomalous query data를 healthy distribution에 매핑시켜 purely healthy patient data를 학습시킨다. 그 다음 원본 이미지와 비교하여 anomalies를 강조 표시한다. 저자는 제안한 partial diffusion process를 사용하면 샘플을 더 잘 reconstruction할 수 있고 full diffusion보다 markov chain이 짧아 inference와 training이 더 빨라진다고 한다.

 

이미 GAN이나 VAE같은 생성 모델을 사용하여 unsupervised anomaly detection가 연구되어왔다. 대표적인 예시로 GAN의 첫 번째 anomaly detection 모델인 AnoGAN이 있다. 저자는 DDPM을 활용한 새로운 anomaly detection 접근 방법을 제안한다. 이 방법을 통해 몇 가지 이점을 누릴 수 있다. 또한 저자는 anomaly detection에 Gaussian noise는 부적절하다 판단하여 대신 simplex noise를 사용한다. main contributions은 아래와 같다.

 

- partial diffusion strategy는 parameterized된 time step $\lambda$로 anomalous image를 noise화한다.

- multi-scale(multi-octabe) simplex noise를 적용하여 larger anomalous regions를 healthy regions로 reconstruct할 수 있다.

(그냥 노이즈바꿔서 비정상을 정상으로 바꾸겠단 말)

 

2. Denoising Diffusion Probabilistic Models

생략

 

3. Methodology

Gaussian noise는 spectral density가 균일하기 때문에 low frequency components는 high frequency terms와 똑같은 정도로 corrupt되지 않는다. 따라서 정상 이미지와 비정상 이미지가 모두 power law를 따른다는 가정 하에 노이즈를 적용했을 때 low frequency components에 강한 영향을 미치도록 diffusion process를 수정한다. 그리고 power law를 따르는 분포에서 샘플링을 하고자 한다. 이 분포는 simplex noise를 통해 근사화한다. simplex noise는 smooth하거나 structured한 randomness를 만들기 때문에 풍경같은 자동 생성 구조를 만드는 컴퓨터 그래픽에서 널리 쓰인다.

 

3.1. Simplex Noise

예를 들어 2차원의 경우 perlin noise는 아래와 같은 순서로 생성된다.

1) noise를 입히고자 하는 공간을 격자화시켜서 각 꼭짓점에 random vector부여

2) 각 그리드 가운데 canditate point를 뿌리고 각 point와 가장 가까운 4개의 꼭짓점과의 inner product 계산

3) 결과값을 보간해서 smooth noise 생성

 

Simplex noise는 격자 대신 정삼각형의 simplex grid로 사용한다. 이 방법을 사용하면 차원의 복잡도가 감소하고 perlin noise에 비해 directional artefacts가 감소한다고 한다. 또한 noise가 더 구조화되고 denoising process는 structured anomalies를 repair할 수 있다고 말한다.

(Perlin은 4개의 점 간 계산을 해야하는데 Simplex는 3개의 점만 하면 되니까 그런가)

 

3.2. AnoDDPM

초기 query image $x_0$는 timesteps t동안 noise화가 되고 다시 $\hat{x}_0$로 denoising된다. anomaly는 다양한 사이즈일 수 있으며 $x_t$를 $x_\lambda$로 parameterize한다. $\lambda$값이 클수록더 큰 anomalies를 지울 수 있다. 또한 simplex noise는 frequency를 설정할 수 있으며 이를 조정하면서 이미지의 넓은 영역이 noise화되고 denoising process로부터 healthy로 reconstuct할 수 있다.

저자는 default simplex noise function을 쓰는 대신 a number of octaves of noise (fractal noise)를 적용한다. 이 방법은 N개의 noise frequencies를 결합하는 것을 포함하며 다음 frequency의 진폭을 decay reate $\gamma$만큼 감소시킨다. 아래의 figure 2b는 low frequency noise가 gaussian distribution으로 근사화될 수 없지만 octave 수를 늘리면 점점 gaussian 모양으로 만들어지는 것을 보여준다. 별도 명시가 되어있지 않으면 starting frequency v = $2^{-6}$, octave N = 6, decay $\gamma$ = 0.8로 설정한다. 그리고 2차원 noise function에서 샘플링할 때 artefact가 발생했기 때문에 simplex noise를 생성할 때 매 noise 계산 전 seed를 섞어주고 3차원 noise function에서 slice t를 가져온다. 

3.3. Training

다음의 알고리즘을 통해 healty sample만 train시킨다.

3.4. inference

먼저 anomalous dataset A로부터 데이터 하나(query)를 가져온다. 그 데이터를 $x_0$라 하고 $x_\lambda$까지 noising하고 다시 $x_0$까지 denoising시킨다. 이 과정은 아래의 그림에서 확인할 수 있다. 아래의 그림에서 $\lambda$=250이다. rows 1,2와 rows 3,4는 각각 healthy data에 대한 simplex noise와 gaussian nosie의 적용 결과이다. rows 5,6은 unhealthy anomalous test data에 각각 simplex noise와 gaussian noise를 적용한 것이며 simplex는 repair에 성공했지만 gaussian은 실패했다.

(rows 5,6의 종양처럼 생긴 부분이 low frequency component인 듯)

따로 언급되지 않았으면 실험에서 $\lambda$는 250으로 설정한다. 따라서 inference-time efficiency는 $O(\lambda)$다.

그리고 reconstruction과 initial image의 square error $(x_0 - \hat{x}_0)^2$를 계산한다. 그 후 종양을 segmentation하기 위해 0.5보다 큰 에러를 강조시키는 naive threshold를 설정한다. 평가를 위해 예측값을 ground truth와 비교한다. segmentation 과정은 아래와 같다.

3.5. Implementation and Availability

모든 실험에서 $\epsilon_\theta$ 근사를 위해 DDPM과 같은 U-Net 구조를 사용했으며 hyper-parameters는 다음과 같다.

3.6. Datasets

healthy dataset은 256x256x192 차원의 T1-weighted MRI scans 125개를 사용했으며 train, test는 각각 100개, 25개로 분리하였다. 평가를 위해 anomalous dataset은 22개의 T1-weighted MRI scans을 사용하였다.

 

4. Experiments and Results

아래 그림은 MVTec AD leather subset에서 simplex noise와 gaussian noise를 비교했을 때의 결과이다. 아래의 실험에서 $\lambda$는 150으로 설정했고 threshold는 rows 1,2에서 0.15, rows 3,4에서 0.2로 설정하였다.

위 그림을 통해 simplex의 성능이 더 뛰어난 것을 확인하였다. 

 

4.1. Gaussian vs. simplex noise

아래의 그림은 Gaussian noise를 적용하여 생성한 샘플들이다. row는 각각 $\lambda$를 250,500,750으로 설정하였다. 750일 경우 tomour를 제외한 샘플을 잘 복원한다.

아래는 Simplex noise를 적용한 결과이다. multi-scale noise의 maximum frequency(노이즈 주파수)가 증가함에 따라, tumour가 사라지고 healthy approxination으로 재구성되는 것을 확인할 수 있다. 

 

또한 저자는 best segmentation을 하는 time t를 평가한다. Gaussian보다 Simplex가 더 적은 step(약 250)에서 최적인 것을 알 수 있다.

 

마지막으로, Context Encoder, f-AnoGAN, AnoDDPM(gaussian), AnoDDPM(simplex)에서의 ROC 곡선을 계산하여 비교한다. 아래의 그래프를 통해 AnoDDPM(simplex)의 성능이 제일 우수한 것을 확인 할 수 있다.

5.  Conclusion

저자는 anomalous region을 성공적으로 캡처한 simplex noise를 적용한 AnoDDPM을 제안한다. Gaussian보다 Simplex가 anomalous 포착 측면에서 상당한 개선을 해내었다. 그리고 f-AnoGAN보다 뛰어난 성능을 보이는 것으로 나타났다.