안녕하세요.

 

 

굉장히 오랜만에 리뷰 글을 쓰는 것 같은데요.

 

 

어쩌다 보니 많은 일정들과 업무들이 몰려버리는 바람에, 2주 정도는 리뷰에 손댈 틈 없이 지냈습니다 ㅠㅠ

 

 

다음 주에도 일이 많긴 하지만, 대략 정리가 모두 끝난 상태여서 주말에 남는 시간을 이용해 리뷰를 진행하려고 합니다.

 

 

이전에는 꽤 유명한 모델들을 위주로 리뷰를 했었다면, 이번에는 제가 메인으로 연구를 진행하고 있는 분야인 이미지에서의 이상 탐지 모델을 다뤄보려고 합니다.

 

 

논문의 주소는 다음과 같습니다.

 

 

https://arxiv.org/abs/2006.16067

 

Patch SVDD: Patch-level SVDD for Anomaly Detection and Segmentation

In this paper, we address the problem of image anomaly detection and segmentation. Anomaly detection involves making a binary decision as to whether an input image contains an anomaly, and anomaly segmentation aims to locate the anomaly on the pixel level.

arxiv.org

 

논문에서 제시하는 모델에 대한 설명은 Section 3에 나오므로, 모델 부분만 살펴보실 분들은 Section 3로 가주시면 되겠습니다.

 

 

그럼 시작해보겠습니다.

 

 

Abstract

 

 

이번 논문에서, 저자들은 image anomaly detection 및 segmentation 문제를 다룹니다.

 

Anomaly detection은 input image가 이상을 포함하고 있는지 아닌지를 결정하는 문제이고, anomaly segmentation은 pixel level에서 anomaly가 어디에 위치해 있는지 파악하는 것을 목표로 합니다.

 

Support vector data description (SVDD)는 anomaly detection을 위해서 오랫동안 사용되어온 알고리즘인데요, 본 논문에서 저자들은 이 알고리즘을 self-supervised learning을 사용하는 patch 기반의 딥러닝 방법론으로 확장하게 됩니다.

 

이러한 확장을 통해서 MVtec AD dataset에서 AUROC 기준으로 기존 SOTA method 대비 anomaly detection은 9.8%, anomaly segmentation은 7.0%의 성능 향상을 확인할 수 있었습니다.

 

 

 

1. Introduction

 

 

Anomaly detection은 input이 anomaly를 포함하고 있는지 아닌지를 결정하는 문제입니다.

 

이상을 탐지하는 것은 제조업이나 금융 산업에서 많이 마주할 수 있는 중요하고도 오래된 문제라고 할 수 있습니다.

(제조업에서는 제품을 생산하게 되면 생산된 제품이 양품인지 불량품인지를 판단해야 한다는 관점에서 이상 탐지가 필요하고, 금융 산업에서는 부정 거래 탐지 같은 것들이 되겠습니다. 예를 들어서, 한 달에 50만 원씩 쓰던 어떤 사용자가 갑자기 1000만 원짜리 제품을 구매하면 카드사에서 연락이 오게 됩니다. 일반적인 거래 패턴과는 다른 거래이기 때문에, anomaly로 탐지가 되는 것이죠.)

 

Anomaly detection은 보통 one-class classification으로 표현이 되는데, 이는 학습 도중에 분포를 모델링하는 데 있어서 비정상 샘플에 대한 접근이 불가능하거나 혹은 매우 불충분하기 때문입니다.

 

이미지 데이터에 대해서 생각해보면, 검출된 anomaly는 이미지 내 어떤 구역에 위치하게 되고 anomaly segmentation은 pixel level에서 anomaly의 위치를 찾아내는 문제입니다. 

 

본 논문에서는 image anomaly detection과 anomaly segmentation 문제를 다룹니다.

 

 

One-class support vector machine (OC-SVM)과 support vector data description (SVDD)는 one-class classification에 사용되는 고전적인 알고리즘인데요. 

 

OC-SVM은 kernel function이 주어졌을 때 원점으로부터 margin을 최대로 하는 hyperplane을 찾게 됩니다.

 

이와 유사하게, SVDD는 kernel space에서 데이터를 둘러싸는 hypersphere를 찾게 됩니다.

 

추후에, Ruff et al.은 SVDD를 딥러닝을 통해서 구현한 Deep SVDD를 제안하였고 이는 kernel function을 별도로 정해줘야 하는 기존의 방법론과는 달리 neural network를 통해서 kernel function을 대체하였습니다.

 

 

본 논문에서 저자들은 Deep SVDD를 patch-wise detection method로 확장하는 Patch SVDD를 제안합니다.

 

Patch SVDD는 상대적으로 높은 patch의 클래스 내 변동에도 강건하고, self-supervised learning에 의해서 더욱 강건해지게 됩니다.

 

Fig. 1은 제안된 방법론을 사용하여 anomaly의 위치를 파악하는 예시를 보여주고 있습니다.

 

 

 

 

 

 

2. Background

 

2.1 Anomaly detection and segmentation

 

 

Problem formulation

 

 

Anomaly detection은 input이 anomaly인지 아닌지를 결정하는 문제입니다. 

 

Anomaly의 정의는 작은 결함에서부터 out-of-distribution image까지를 포함하게 되는데요.

(out-of-distribution image라고 한다면, 고양이 이미지만 가득한 dataset에 개 이미지만 있다고 생각해주시면 쉬울 것 같습니다.)

 

저자들은 전자에 해당하는 image 내에서의 결함을 찾는 것에 초점을 두고 있습니다.

 

일반적인 detection method는 input의 abnormality를 측정하는 scoring function $A_\theta$를 학습하는 과정을 포함하게 되는데요. 

 

Test를 진행할 때는, 학습된 scoring function을 사용하여 높은 $A_\theta(x)$를 가진 input이 anomaly로 결정되게 됩니다.

 

scoring function에 대한 사실상 표준적인 지표는 Eq. 1로 표현되는 area under the receiver operating characteristic curve (AUROC)입니다.

 

Eq. 1

 

따라서, 좋은 scoring function은 normal data에 낮은 anomaly score를 매기고, abnormal data에 높은 anomaly score를 매길 수 있어야 합니다.

 

Anomaly segmentation도 유사하게 표현될 수 있는데, 각 pixel에 대한 anomaly score를 만들고(즉, anomaly map) 각 pixel에 대한 AUROC를 측정하는 것입니다.

 

 

Autoencoder-based methods

 

 

초기의 anomaly detection에 대한 deep learning approach는 autoencoder를 사용하는 것이었습니다.

 

이러한 autoencoder는 normal training data에만 학습되고, abnormal image에 대해서는 정확한 복원을 할 수 없게 됩니다.

 

따라서, input과 복원된 결과와의 차이가 abnormality를 나타내게 됩니다.

 

이후에 structural similarity indices, adversarial training, negative mining, iterative projection 등을 활용하는 연구들이 진행되었습니다.

 

과거 연구들 중 일부는 autoencoder의 학습된 latent feature를 anomaly detection에 활용하기도 했는데요.

 

Akcay et al. 은 latent feature의 reconstruction loss를 anomaly score로 정의하였고, Yarlagadda et al. 은 latent feature를 활용해 OC-SVM을 학습시키기도 했습니다.

 

더 최근에는, reconstruction loss보다도 restoration loss나 attention map과 같은 다른 요소들을 활용한 방법론들이 제안되었습니다.

 

 

Classifier-based methods

 

 

Golan et al의 연구 이후에, discriminative approach가 anomaly detection에 제안되어 왔습니다.

 

이러한 방법론들은 비정상 input image에 대해서 classifier가 confidence를 잃게 되는 현상을 사용하였습니다.

(예를 들어서, 어떤 classifier가 개, 고양이, 곰을 분류한다고 했을 때 개나 고양이, 곰의 이미지가 들어가게 되면 80%나 90% 이상으로 매우 높게 예측을 하게 됩니다. 하지만, 갑자기 새 이미지를 주고 예측을 하게 만들면 어쨌든 개, 고양이, 곰 중 하나로 예측을 하긴 하겠지만 80%나 90%처럼 높게 예측하지 않고 40%나 50%처럼 낮은 확률로 어떠한 class로 예측하게 됩니다.)

 

Unlabeled dataset이 주어졌을 때, classifier는 가상의 label을 예측하고자 학습하게 됩니다.

 

예를 들어서, Golan et al에서는 image를 random flip, rotate, translate 시킨 다음, classifier가 수행된 transformation의 유형을 예측하도록 만들게 됩니다.

 

만약 classifier가 confident 하고 correct 한 prediction을 만들 수 없다면, input image를 abnormal로 예측하게 됩니다.

 

Wang et al. 은 이러한 접근법이 training data 또한 anomaly를 일부 포함하는 unsupervised 상황에도 확장될 수 있음을 증명하였습니다.

 

Bergman et al.은 open-set classification method를 채택하여 non-image data를 포함시키고자 해당 방법론을 일반화시켰습니다. 

 

 

SVDD-based methods

 

 

SVDD는 고전적인 one-class classification 알고리즘입니다.

 

이는 모든 normal training data를 predefined kernel space로 mapping 시키고, kernel space에 존재하는 모든 데이터를 감싸는 가장 작은 hypersphere를 찾게 됩니다.

 

anomaly는 학습된 hypersphere 바깥쪽에 위치할 것으로 예상할 수 있습니다.

 

kernel function이 kernel space를 결정하므로, 학습 과정에서는 hypersphere의 반지름과 중심을 주로 결정하게 됩니다.

 

Ruff et al. 은 이러한 접근법을 deep neural network를 활용하여 향상시켰습니다.

 

이들은 kernel function을 대체하고자 neural network를 채택하였고 hypersphere의 반지름을 가지고 학습시켰습니다.

 

이러한 변형을 통해 encoder는 data-dependent transformation을 학습할 수 있게 되었고, high-dimensional and structured data에서 detection 성능을 향상시키게 되었습니다.

 

Trivial solution(즉, encoder가 상수를 내뱉는 상황)을 피하고자, network에서 bias term은 제거합니다.

 

 

 

2.2 Self-supervised representation learning

 

 

이미지에서 representation을 학습하는 것은 computer vision에서 중요한 문제이며, image의 representation을 annotation 없이 학습할 수 있는 여러 방법론들이 제안되어 왔는데요.

 

여러 연구분야 중 하나는  synthetic learning signal을 제공하기 위한 self-labeled task인 pretext task를 가지고 학습하는 encoder를 training 시키는 것입니다.

 

network가 pretext task를 잘 풀도록 학습된다면, network는 의미 있는 feature를 추출할 수 있을 것이라고 기대할 수 있겠죠.

 

pretext task로는 relative patch location을 예측하는 것, jigsaw puzzle를 푸는 것, colorizing images, counting objects, prediction rotations 등이 있습니다. (뒤에서 보시면 아시겠지만, 해당 논문은 relative patch location을 예측하는 것을 이용하여 self-supervised representation learning을 수행하게 됩니다.)

 

 

 

3. Methods

 

 

해당 Section에서는 본격적으로 본 논문에서 제시하는 방법론에 대해서 설명합니다.

 

 

3.1 Patch-wise Deep SVDD

 

 

Deep SVDD는 전체 training data를 feature space에서 작은 hypersphere 안으로 들어오도록 mapping 시키는 encoder를 학습하게 되는데요.

 

Encoder인 $f_\theta$는 feature와 hypersphere의 중심과의 Euclidean distance를 최소화하는 방향으로 학습이 됩니다.

 

따라서, loss function은 다음과 같습니다.

 

Eq. 2

 

$x$는 input image를 나타내고요.

 

Test를 진행할 때는 input의 representation과 center 사이의 거리가 anomaly score가 됩니다.

(앞에서 언급했었지만, 데이터를 가장 작은 hypersphere 안으로 들어가게끔 학습하므로, input의 representation이 hypersphere의 중심과 거리가 크다는 것은 hypersphere의 바깥쪽에 위치한다는 것임을 알 수 있겠죠.)

 

center $c$는 Eq. 3의 방법을 통해서 학습 이전에 계산됩니다. $N$는 training data의 수를 나타내고요.

 

Eq. 3

 

따라서, 학습을 통해서 feature들을 하나의 중심 주변으로 밀게 됩니다.

 

 

본 논문에서 저자들은 Deep SVDD를 patch 단위로 확장시키게 됩니다. Encoder는 Fig. 2에서 보이는 것처럼 이미지 전체를 encoding 하는 게 아니라, patch를 encoding 하도록 변경합니다.

 

Fig. 2

 

이에 따라서, inspection이 각 patch에 대해서 수행되게 됩니다. 

 

Patch-wise inspection은 여러 가지 장점을 가지고 있는데, 첫 번째로 inspection이 각 position에 대해 수행할 수 있으므로 해당 방법론을 사용했을 때 defect의 위치를 찾을 수 있게 되며,  두 번째로, 이러한 작업이 전반적으로 detection 성능을 향상시키게 됩니다.

 

 

Deep SVDD를 patch-wise inspection으로 확장하는 것은 직관적인데요.

 

Patch encoder $f_\theta$는 $L_{SVDD}$를 사용해서 학습되고, 이미지였던 $x$는 patch인 $p$로 대체됩니다.

 

Anomaly score는 이에 따라서 정의될 수 있고, Fig. 3에서 예시를 확인할 수 있습니다.

 

Fig. 3

 

기존의 SVDD loss를 사용하게 되면 높은 복잡도를 가지는 image에 대해서는 detection performance가 좋지 않은 것을 확인할 수 있습니다.

 

이는 patch가 높은 클래스 내 variation을 가지고 있기 때문인데요. 즉, 몇몇 패치들은 background에 대응되지만 다른 패치들은 object를 포함하고 있기 때문입니다.

 

그 결과로, 유사하지 않은 patch들의 모든 feature들을 하나의 center로 mapping 하게 되고, uni-modal cluster를 만들게 되어 representation과 content 간 connection을 약화시키게 됩니다.

 

그러므로 하나의 중심인 $c$를 사용하는 것은 적절하지 않다는 것을 알 수 있습니다.

 

그렇지만, center의 적절한 수를 결정하고 patch들을 각 center에 할당하는 것은 다루기가 힘든 문제입니다.

 

 

 

위의 문제를 우회하고자, 저자들은 center를 명시적으로 정의하고 patch를 할당하는 작업을 수행하지 않습니다.

 

그 대신에, 의미론적으로 유사한 patch들이 저절로 모이도록 encoder를 학습시키게 됩니다.

 

의미론적으로 유사한 패치는 공간적으로 인접한 patch를 sampling 해서 얻을 수 있으며, encoder는 다음 loss function을 사용하여 feature 간 distance를 최소화하도록 학습됩니다.

 

 

$p_i'$는 $p_i$와 인접한 patch를 나타냅니다.

 

추가적으로, representation이 patch의 semantics를 포착하도록 강제하기 위해, self-supervised learning도 수행합니다.

 

 

 

3.2 Self-supervised learning

 

 

Doersch et al. 은 Fig. 4에 나타난 것처럼 두 patch의 상대적 위치를 예측하기 위해 encoder와 classifier를 학습시켰습니다.

 

 

Encoder & classifier pair가 잘 학습되면 encoder는 location prediction에 사용되는 유용한 feature를 추출할 수 있게 됩니다.

 

이러한 특성은 특정 task에만 국한되는 것이 아니며, 이전 연구들은 self-supervised encoder가 다음 task를 위한 강력한 feature extractor 임을 언급하였습니다.

 

 

 

임의로 샘플링된 patch $p_1$에 대해서, Doersch et al. 은 3x3 grid 내 있는 8개의 이웃 patch 중 하나인 patch $p_2$를 샘플링하였습니다.

 

true relative position을 $y \in {0, ..., 7}$이라 하면, classifier $C_\phi$는 $y = C_\phi(f_\theta(p_1), f_\theta(p_2))$를 예측하도록 학습됩니다.

 

patch의 크기는 encoder의 receptive field와 동일합니다.

 

Classifier가 shortcuts을 활용하는 것을 방지하고자(예를 들어, color aberration), 저자들은 patch의 RGB channel을 임의로 perturb 하였습니다. 

 

 

논문에서는 별도로 shortcuts이 무엇인지 언급되지 않았으나, 인용한 논문을 찾아보니 다음과 같은 내용을 찾을 수 있었습니다.

 

Shortcuts have been described as “trivial solutions” to the pretext task that must be avoided to “ensure that the task forces the network to extract the desired information” 

 

In other words, shortcuts are easily learnable features that are predictive of the pretext label, and allow the network to stop learning once found.

 

위 내용에 따르면, Shortcuts은 소위 trivial solution(자명한 해)이며 이를 찾으면 network가 학습을 멈추게 만든다고 합니다. 

 

즉, RGB channel을 별도로 perturb 하는 것은 어떻게 보면 useful feature를 찾아낼 수 있도록 하는 역할을 하는 것 같습니다.

 

 

Doersch et al. 의 접근법을 따라서, 다음과 같은 loss term을 추가하여 self-supervised learning signal을 추가합니다.

 

 

그 결과로, encoder는 Eq. 6에서 볼 수 있듯이 scaling hyperparameter $\lambda$를 이용한 두 loss의 combination을 사용해 학습이 이루어지게 됩니다.

 

최적화는 SGD와 Adam optimizer를 이용해 이루어집니다.

 

Eq. 6

 

 

3.3 Hierarchical encoding

 

 

anomaly의 크기가 다양하기 때문에, 다양한 receptive field를 가지는 여러 개의 encoders를 사용하는 것은 크기의 변화에 대응할 수 있도록 도움을 줄 수 있습니다.

 

Section 4.2에서 다룰 실험 결과는 encoder에서 hierarchical structure를 사용하는 것이 anomaly detection 성능에도 도움을 준다는 것을 나타냅니다.

 

따라서, 저자들은 작은 encoder를 포함하는 hierarchical encoder를 사용하였습니다.

 

hierarchical encoder는 다음과 같이 정의될 수 있습니다.

 

 

Fig. 5에서 볼 수 있듯이 input patch $p$는 2 x 2 grid로 분할되고 이들의 feature는 $p$의 feature를 구성하기 위해 합쳐지게 됩니다.

 

receptive field size $K$를 가진 각 encoder는 patch size $K$의 self-supervised task를 이용해 학습이 이루어지게 됩니다.

 

실험이 진행되는 동안, large encoder와 small encoder의 receptive field는 각각 64, 32로 정해집니다.

 

 

 

3.4 Generating anomaly maps

 

 

Encoders를 학습한 후에, encoder로부터 얻게 되는 representation은 anomaly를 탐지할 때 사용됩니다.

 

첫 번째로, 모든 normal train patch의 representation {$f_\theta(p_{normal}) | p_{normal}$}은 계산되고 저장됩니다.

 

Query image $x$가 주어졌을 때, $x$에서 stride $S$를 이용해서 얻어지는 모든 patch $p$에 대해 feature space에서 가장 가까운 normal patch까지의 L2 distance는 anomaly score로 정의됩니다. (Eq. 8)

 

 

nearest neighbor search의 computational cost를 완화시키고자, 저자들은 approximate algorithm은 NGT를 채택해 사용하였습니다.

 

그 결과로, MVTec AD의 이미지 한 개에 대한 inspection은 대략 0.48초 정도 걸리게 됩니다.

 

Patch-wise로 계산된 anomaly score는 pixel로 분배가 되는데요.

 

그 결과로, 각 pixel들은 자신이 속한 모든 patch의 average anomaly score를 받게 되며 그 결과로 얻게 되는 anomaly map을 $\mathcal{M}$으로 표기합니다.

 

Section 3.3에서 논의한 multiple encoder는 multiple feature space를 구성하게 되며, 이에 따라 multiple anomaly map을 만들어냅니다.

 

저자들은 multiple anomaly map을 element-wise multiplication을 사용해 최종 anomaly map $\mathcal{M}_{multi}$를 얻게 되며 이는 anomaly segmentation 문제에 대한 answer가 됩니다.

 

 

$\mathcal{M}_{multi}$와 $\mathcal{M}_{big}$은 각각 $f_{small}$과 $f_{big}$을 사용해서 만들어지는 anomaly map입니다.

 

$\mathcal{M}_{multi}$에서 높은 anomaly score를 가지는 pixel이 defect을 포함하고 있다고 판단됩니다.

 

 

anomaly detection 문제를 해결하는 것은 간단한데요. 

 

Eq. 10으로 표현된 것처럼, 이미지 내에서 가장 높은 anomaly score를 가지는 pixel이 해당 이미지의 anomaly score가 됩니다.

 

Eq. 10

 

 

Fig. 6은 제안된 방법론의 전체적인 흐름을 나타내고, pseudo-code는 Appendix A1에서 제공되고 있습니다.

 

Fig. 6

 

Appendix A1(train)

 

 

Appendix A1(test)

 

논문에는 해당 Pseudo-code가 제시되어 있는데, 실제 코드 구현과는 다른 내용이 있어 실제로 해당 논문을 사용하실 것이라면 반드시 코드 내용을 살펴보셔야 할 것 같습니다.

 

다음 포스팅인 code review에서는 실제 공개된 코드를 기반으로 위에 제시된 Pseudo-code를 수정해볼 예정입니다.

 

 

4. Results and Discussion

 

 

제안된 방법론의 유효성을 검증하고자, 저자들은 MVTec AD dataset에 이를 적용하였습니다.

 

MVTec dataset은 15개 class의 산업 이미지로 구성되어 있고, 각 class는 object 혹은 texture로 분류됩니다.

 

10개의 object class는 규칙적으로 배치된 object를 포함하고 있으며, 반면에 texture class는 반복적인 패턴을 포함하고 있습니다.

 

 

4.1 Anomaly detection and segmentation results

 

 

Fig. 7은 제안된 방법론을 사용하여 만들어진 anomaly map을 보여주고 있으며, defect의 크기에 상관없이 적절하게 찾아내는 것을 나타냅니다.

 

Fig. 7

 

Table 1은 AUROC 기준으로 SOTA baseline과 비교했을 때 MVTec AD dataset에서의 detection and segmentation 성능을 보여줍니다.

 

 

Patch SVDD는 autoencoder-based 방법론과 classifier-based 방법론을 포함하는 powerful baseline에 비해서 SOTA 성능을 내고 있으며, Deep SVDD에 비해 55.6% 향상을 보여주고 있습니다.

 

 

4.2 Detailed analysis

 

 

t-SNE visualization

 

 

Fig. 8은 여러 train image의 학습된 feature의 t-SNE visualization을 보여줍니다.

 

 

Fig. 8(b)에 보이는 points에 위치한 patch는 Fig. 8(a)과 Fig. 8(c)에 있는 동일한 색과 동일한 크기를 가지는 point에 mapping 됩니다.

 

Fig. 8(a)에서, 유사한 색과 사이즈를 가진 points는 feature space에서 cluster를 형성하고 있습니다.

 

cable class에 있는 이미지들이 규칙적으로 배치되어 있으므로, 다른 이미지에서 나왔더라도 같은 위치에서 나온 patch는 유사한 content를 가지고 있습니다.

 

유사하게, 규칙적으로 배치된 object classes의 경우, t-SNE visualization에서 유사한 색과 크기를 가진 points는 semantically similar라고 생각될 수 있습니다.

 

대조적으로, Fig. 8(c)에 나타난 leather class의 feature는 반대 경향을 보입니다.

 

이는 texture class에 있는 patches들이 이미지 내에서의 위치와는 상관없이 유사하기 때문입니다.

 

즉, texture image에 대해서는 patch의 위치가 이들의 semantics와는 전혀 관련이 없습니다.

 

 

Effect of self-supervised learning

 

 

Patch SVDD는 $\mathcal{L}_{SVDD'}$와 $\mathcal{L}_{SSL}$이라는 두 개의 loss를 사용해서 encoder를 학습시키는데요.

 

제안된 loss term의 역할을 비교하기 위해서, 저자들은 ablation study를 수행했습니다.

 

Table 2는 $\mathcal{L}_{SVDD}$를 $\mathcal{L}_{SVDD'}$로 변경한 것과 $\mathcal{L}_{SSL}$을 도입한 것이 anomaly detection과 segmentation 성능을 향상시킨다는 것을 제안하고 있습니다.

 

 

Fig. 9는 제안된 loss term의 효과가 classes마다 다르다는 것을 보여줍니다.

 

 

특히, texture classes (예를 들어, tile이나 wood)는 loss의 선택에 덜 민감하지만, cable과 transistor를 포함하는 object classes는 $\mathcal{L}_{SSL}$을 사용하는 것이 큰 도움이 되었음을 나타냅니다.

 

 

이러한 관측의 이유를 알아보기 위해, 저자들은 $\mathcal{L}_{SVDD}$, $\mathcal{L}_{SVDD'}$, $\mathcal{L}_{SVDD'} + \mathcal{L}_{SSL}$을 이용해 학습된 encoder를 통해 얻은 object class의 feature에 대해서 t-SNE visualization을 수행하였습니다. (Fig. 10)

 

 

학습이 $\mathcal{L}_{SVDD}$ (Fig. 10(a))나 $\mathcal{L}_{SVDD'}$ (Fig. 10(b))를 이용해서 이루어졌을 때, feature는 uni-modal cluster를 형성하는 것을 확인할 수 있습니다.

 

대조적으로, $\mathcal{L}_{SSL}$은 color나 size와 같은 semantics를 기반으로  Fig. 10(c)에서 보이는 것과 같이 multi-modal feature cluster를 만들어내는 것을 확인할 수 있습니다.

 

이러한 feature의 multi-modal property는 특히 patch 간에 높은 클래스 내 variation을 가지는 object classes에 도움이 됩니다.

 

다른 semantics를 가진 patch들의 feature는 분리되며, 이러한 feature를 사용하는 anomaly inspection는 더욱 정교하고 정확해지게 됩니다.

 

 

Hierarchical encoding

 

 

Section 3.3에서 hierarchical encoder의 사용을 제안하였는데요.

 

Fig. 12는 multiple encoder로부터 나온 multi-scale result를 aggregate 하는 것이 inspection performance를 향상시킨다는 것을 보여줍니다.

 

추가적으로, non-hierarchical encoder를 사용한 ablation study는 hierarchical structure 자체가 성능을 향상시킴을 보여줍니다.

 

 

Hyperparameters

 

 

Eq. 6에서 볼 수 있듯이, hyperparameter $\lambda$는 $\mathcal{L}_{SVDD'}$와 $\mathcal{L}_{SSL}$ 사이의 균형을 맞추는 역할을 하게 됩니다.

 

큰 $\lambda$는 feature의 gathering을 강조하고, 작은 $\lambda$는 informativeness를 촉진시키게 됩니다.

 

놀랍게도, 가장 유리한 $\lambda$는 class에 따라 다릅니다.

 

object class에서의 anomaly는 작은 $\lambda$ 하에서도 잘 탐지되지만, texture class의 경우는 큰 $\lambda$ 하에서 잘 탐지되게 됩니다.

 

Fig. 14는 이러한 차이의 예시를 보여줍니다. 즉, cable class (object)는 $\lambda$가 감소함에 따라 detection performance가 향상되지만, 반면에 wood class (texture)는 반대의 경향을 보여주고 있습니다.

 

 

 

5. Conclusion

 

 

본 논문에서, 저자들은 image anomaly detection과 segmentation을 위한 방법론인 Patch SVDD를 제안하고 있습니다.

 

Deep SVDD와는 다르게, 이미지를 patch level에서 점검하며 defect의 위치를 확인할 수 있습니다.

 

게다가, 추가적인 self-supervised learning은 detection performance를 향상해줍니다.

 

그 결과로, 제안된 방법론은 MVTec AD dataset에서 SOTA performance를 달성하였습니다.

 

 

 

 

여기까지 Patch SVDD 논문 리뷰를 마무리하려고 합니다.

 

논문 내용 중 일부는 제가 생략한 부분도 있어, 관심이 있으시다면 본 논문을 참고하시면 되겠습니다.

 

단순히 이미지를 통째로 feature space에 mapping 하는 것이 아닌, patch 단위로 mapping 하므로 조금 더 localized defect을 잘 찾을 수 있다는 것이 큰 특징이라고 볼 수 있을 것 같습니다.

 

제가 현재 연구하고 있는 부분도 큰 이미지에서 굉장히 작은 크기의 결함 부위를 탐지하는 것을 진행하고 있는데, 이러한 연구에 있어서 굉장히 괜찮은 방법론이라고 생각되어 리뷰를 진행하게 되었습니다.

 

다음 포스팅에서는 해당 논문의 code review를 진행할 예정입니다.

 

이전에는 논문에서 제시하는 모델 하나를 리뷰했었기 때문에 모델 architecture를 위주로 code review를 진행했지만, 해당 논문의 경우 architecture보다는 어떤 방법론으로 anomaly detection을 수행하게 되는지를 봐야 하기 때문에 기존과는 조금 다른 방향으로 code review를 진행하게 될 것 같습니다.

 

그럼 다음 포스팅에서 뵙겠습니다.

 

감사합니다.

 

 

 

 

+ Recent posts