Paper review/Anomaly Detection

Patch SVDD: Patch-level SVDD for Anomaly Detection and Segmentation (ACCV'20)

언킴 2023. 4. 27. 17:42
반응형

 

Patch-Level SVDD는 기존 연구에서 제안된 SVDD 기법을 Patch-Level로 변환한 모델이다.  Figure 2를 살펴보면 기존 연구에서 제안된 SVDD 기반 기법인 Deep SVDD의 경우 이미지 전체를 입력으로 받고, 이상치를 탐지하는 형태로 진행된다. Patch SVDD의 경우 이미지를 Patch 단위로 쪼개어 입력으로 사용하고, 각 Patch에 대해 이상치를 탐지하는 구조를 띄고 있다. 

 

본 연구에서 제안하는 Patch-Level Deep SVDD는 Patch-wise Deep SVDD, Self-supervised Learning, Hierarchical Encoding, Generating Anomaly Maps으로 총 4개로 구성되어 있다. 

 

먼저 Patch-wise Deep SVDD와 Self-supervised Learning의 Loss를 사용하며  Figure 4와 같은 구조로 진행된다. 

\[ \mathcal{L}_{\text{SVDD'}} = \sum_{i, i\prime} || f_{\theta} (p_i) - f_{\theta} (p_{i \prime}) ||_2 \]

\[ \mathcal{L}_{\text{SSL}} = \text{Cross-entropy} (y, C_{\phi} ( f_{\theta} (p_1), f_{\theta} (p_2) ) ) \]

\[ \mathcal{L}_{\text{Patch SVDD}} = \lambda \mathcal{L}_{\text{SVDD}} + \mathcal{L}_{\text{SSL}} \]

SSL Loss의 경우 아래의 Patch에서 랜덤하게 하나를 샘플링한 하여 $p_1$로 선정하고, 나머지 이웃 중 하나를 샘플링해 $p_2$로 선정하여 두 값을 $C_{\phi}$의 입력으로 사용해 $y$를 도출한다. 그런 다음 실제 정답과 비교한다. 

 

본 연구에서 사용되는 SVDD' Loss는 중심과의 거리를 측정하는 기존의 SVDD Loss와는 달리 $p_i$의 Spatially Jittered된 $p_{i^{\prime}}$ 간의 차이를 측정한다는 것이 차이점이다

 

모델의 성능을 향상시키기 위해 Hierarchical Encoding 구조를 사용하였으며, 아래의 그림과 같이 먼저 $f_{small}$을 통해 Patch에 대한 Representation을 출력하고, $f_{big}$을 통해 최종 Representation을 도출한다. 이처럼 계층 구조로 모델을 학습하게 되면 $f_{small}$에서 Receptive Field의 크기를 다양하게 가져갈 수 있다. 이상치의 크기는 다양하기 때문에 Receptive Field의 크기를 다양하게 가져간다면 이상치 탐지에 있어 성능이 향상될 수 있다. 

\[ f_{big}(p) = g_{big} (f_{small}(p)) \]

 

 

마지막 단계는 위 과정을 통해 Encoder를 학습하고 난 후, 이상치를 탐지하기 위한 Generating anomaly map 단계다. 해당 단계는 아래와 같은 수식을 통해 Patch에 이상치가 존재하는지 확인한다. 

\[ \mathcal{A}^{patch}_{\theta} (p) = \underset{p_{normal}}{\text{min}} || f_{\theta}(p) - f_{\theta} (p_{normal}||_2 \]

본 논문에서는 계층 구조를 사용하기 때문에 $f_{small}$과 $f_{big}$에 대한 anomaly map이 생성된다. 따라서, 원소별 곱을 통해 최종 anomaly map을 생성한다. 

\[ \mathcal{M}_{multi} = \mathcal{M}_{small} \odot \mathcal{M}_{big} \]

그런 다음 아래의 수식을 통해 Anomaly Score를 도출한다.

\[ \mathcal{A}^{image}_{\theta} (x) = \underset{i, j}{\text{max}} \mathcal{M}_{multi} (x)_{ij} \]

 

 

실험 결과, Pixel-Level Deep SVDD를 사용하는 것보다, Patch-Level Deep SVDD를 사용하는 것이 성능이 더 우수한 것을 확인할 수 있으며, Ablation Study를 통해 Loss에 대한 성능의 변화를 측정하였다.