anomaly detection

SPADE: Sub-image Anomaly Detection with Deep Pyramid Correspondences. arXiv. 2020

sungwool 2021. 10. 9. 20:17

SPADE


 

1. 요약

   최근 리더보드에서 상위 등수를 가진 기법들의 기반이 되는 기법이다. ImageNet으로 pre-trained된 weights를 그대로 사용하여 MVTec AD benchmark에서 기존 기법들보다 높은 performance를 보여준다. 이 논문에서 주목할 점은 (1) pre-trained backbone network의 사용 (2) Feature gallery \( \mathbb{G} \)의 도입 (3) kNN 기반의 normal image retrieval 이다.  

kNN algorithm example 

   Anomalous feature를 구체적으로 정의할 수 없는 anomaly detection 분야의 특성 상, 좋은 performance를 갖는 기법들은 normal feature를 얼마나 잘 이해하는가?에 따라 구분될 수 있다. 그 중 SPADE는 kNN(k Nearest Neighbor)를 사용해 test sample과 가장 가까운 normal sample까지의 거리를 anomalous의 척도로 사용한다. 이를 위한 수식은 아래처럼 표현된다. 

$$ d(y) = \frac{1}{K} \sum_{f \in N_K(f_y)} \| f - f_y \|^2 $$

 위 식에서 \( y \)는 test sample을, \( f \)는 pre-trained backbone network에서 추출된 입력 sample의 feature를 의미한다. 즉, SPADE는 test sample로부터 가장 가까이 위치한 \( K \)개의 normal sample들을 찾고 이들과의 거리를 측정함으로써 anomalous의 정도를 측정하고자 했다.

 

  추가적으로 SPADE는 영상 내의 anomal한 영역을 표시하고자 했고, 이를 sub-image anomaly detection라고 표현했다. 모든 pixel location \( p \in P \)에 대해 anomaly score를 표시하고자, 앞서 pre-trained backbone network에서 추출한 feature maps 내의 모든 pixel들에 대한 vector들을 gallery \( \mathbb{G} \)라고 한다. 

$$  \mathbb{G} = \{ F(x_1, p) | p \in P \} \cup \{ F(x_2, p) | p \in P \} \ldots \{ F(x_K, p) | p \in P \}$$

  일반적으로 MVTec AD에서 성능 평가를 수행한 논문들의 경우 \(256 \times 256\)으로 resize를 수행하고, \( 224 \times 224 \)로 center crop을 수행하기 때문에, \(  p \in P \)의 개수는 ResNet-series network에 한하여 \( 56^2 \)개가 된다. Sub-image anomaly detection (anomaly location)을 위한 수식을 아래와 같다.

$$ d(y, p) = \frac{1}{\kappa} \sum_{f \in N_{\kappa}(F(y, p))} \| f - F(y,p) \|^2 $$

  수식에서 확인할 수 있듯이, 기본적인 원리는 앞서 설명한 image-level에서의 anomaly detection과 같다. 

 

  추가로 anomaly localization의 정량, 정석적인 평가를 위해서는 대게 anomaly score를 직관적으로 확인할 수 있는heatmap를 제시한다. 이를 위해서 앞서 추출한 feature map들을 concatenate해준다.

$$ F_1 \in \mathbb{R}^{56 \times 56 \times c_1} + F_2 \in \mathbb{R}^{28 \times 28 \times c_2} + F_3 \in \mathbb{R}^{14 \times 14 \times c_3} \rightarrow F_{concat} \in \mathbb{R}^{56 \times 56 \times (c_1 +c_2 + c_3)} $$  

위 수식에서 서로 다른 spatial resolution을 갖는 feature map들을 합쳐주기 위해 bilinear interpolation을 사용한다. 이렇게 합쳐진 feature map tensor들을 다시 입력 sample의 spatial resolution과 일치시켜주기 위해 다시 bilinear interpolation을 수행한다. 최종 단계에서는 heatmap의 smoothing을 위해 \( \sigma =4 \)인 Gaussian filtering을 해준다. 

 

  Anomaly detection분야에서 제시하는 정량적 평가는 주로 detection 성능인 image-level AUROC와 localization 성능인 pixel-level AUROC, pixel-level AUPRO가 쓰인다. 여기서 AUPRO는 defect의 scale을 추가로 고려해주기 때문에, AUROC보다 세밀한 localization을 요구한다. SPADE의 정량적 성능은 아래의 표와 같다. 

Image-level AUROC score
Pixel-level AUROC score
Pixel-level AUPRO score

 

2. 마무리 

  이전까지의 anomaly detection은 주로 auto-encoder를 기반으로 하거나, GAN을 기반으로 하는 경우가 많았다. 하지만, 간단한 아이디어와 기존에 널리 사용되는 기법들을 활용하여 이전 성능을 크게 능가한 면에서 강점을 갖는 논문이라고 생각한다. 하지만, 최근에 제안된 논문들이 해결하고자 했던 문제들에서 유추할 수 있듯이, 너무 많은 memory cost를 요구한다는 점과 naive하게 사용된 kNN algorithm이 redundant한 sub-image들에 악영향을 받지 않을까 등등.. 고민하게 되는 기법이다.