안녕하세요.

 

오늘은 Anomaly Detection 분야의 논문 중, 최근에 나온 논문으로 제가 관심 있게 본 논문이라서 논문 review를 남기고자 합니다.

 

대학원에 있을 때는 새로운 논문이 나오면 바로 바로바로바로 follow-up 하곤 했는데, 회사에 다니고 나니 논문을 읽는 것 외에도 워낙 할게 많으니 바로바로 따라가기는 쉽지가 않네요.

 

그래도 제가 가장 관심 있는 분야라 시간이 되면 틈틈히 새로운 논문들 review 해보도록 하려고 합니다.

 

Official 코드가 나와있지 않은 관계로, 사람들이 unofficial로 implementation 코드를 만드시는 것 같은데 어느 정도 시간이 흐르고 결과가 유사하게 나오는 시점쯤이 되면 code review도 함께 진행해 보도록 하겠습니다.

 

 

https://arxiv.org/abs/2303.14535

 

EfficientAD: Accurate Visual Anomaly Detection at Millisecond-Level Latencies

Detecting anomalies in images is an important task, especially in real-time computer vision applications. In this work, we focus on computational efficiency and propose a lightweight feature extractor that processes an image in less than a millisecond on a

arxiv.org

 

 

 

1. Abstract

 

 

본 논문에서, 저자들은 computational efficiency에 집중하여 현대 GPU에서 1ms 이내로 이미지를 처리할 수 있는 lightweight feature extractor를 제안합니다. 그리고 anomalous feature를 검출하기 위해 stduent-teacher approach를 사용합니다.

 

저자들은 정상 이미지에서 추출된 feature를 예측하는 student network를 학습시킵니다.

 

Test time에서 anomaly의 검출은 student network가 추출된 feature를 예측하는데 실패하는 것을 통해 진행됩니다.

 

저자들은 정상이 아닌 이미지에 대해서 student network가 teacher network를 따라하지 못하도록 만드는 training loss를 제안합니다. 이는 student-teacher model의 computational cost를 대폭 감소시키면서 anomalous feature를 탐지하는 능력은 향상하게 됩니다.

 

저자들은 추가적으로 물건이 잘못 배치되는 것과 같은 logical anomaly를 잡아내는 문제 또한 다루고 있습니다. 저자들은 이러한 문제를 이미지를 전역적으로(globally) 분석하는 autoencoder를 효율적으로 활용해 검출하게 됩니다.

 

 

 

 

2. Introduction

 

 

최근 classification architecture들은 latency, throughput, memory consumption, 학습 가능한 파라미터의 수와 같은 특성들에 초점을 두고 있습니다. 이는 network들이 real-world application에 적용할 수 있다는 것을 보장하게 됩니다.

 

하지만, State-of-the-art anomaly detection 방법론들은, anomaly detection 성능을 증가시키기 위해서 computational efficiency를 희생하곤 합니다. 자주 사용되는 기법으로는 앙상블, large backbone의 사용, input image의 resolution을 768x768 사이즈로 올리는 방법들이 있습니다.

 

Real-world anomaly detection application에서는 방법론의 computational requirement에 제약이 있는 경우들이 많은데, 이는 anomaly를 너무 늦게 찾게 되면 상당한 경제적 피해를 가지고 오기 때문입니다. 예를 들어서, 금속 물질이 경작 기계의 내부에 들어간다거나, 혹은 기계를 작동하는 사람의 신체가 칼날에 접근하는 경우가 발생할 수 있습니다.

 

게다가 산업 현장에서의 환경은 높은 생산률을 유지하기 위해서 엄격한 runtime limit을 가지고 있는 경우가 많습니다. 따라서, 이러한 제약을 고려하지 않게 되면 생산성 감소를 만들 수 있고, 경제적 가능성을 감소시키게 됩니다. 

 

그러므로, anomaly detection 방법론이 real-world에서 사용되려면 computational cost에 대해서 필수적으로 고려해야 합니다.

 

 

 

본 논문에서, 저자들은 anomaly detection 성능을 내면서도 inference runtime까지 동시에 고려하는, 새로운 표준이 될 방법론인 EfficientAD를 제안합니다. 

 

첫 번째로, modern GPU에서 1ms 이내로 expressive feature를 계산하기 위한 efficient network architecture를 도입합니다. 

 

두 번째로, anomalous feature를 검출하기 위해, student-teacher approach를 사용합니다.

 

저자들은 정상 이미지에 대해서 pretrained teacher network를 가지고 계산된 feature를 예측하는 student network를 학습합니다. Anomalous image에 대해서는 student network가 학습되지 않았기 때문에, 이러한 이미지에 대해서는 teacher network를 따라 하는 것에 실패하게 됩니다. 따라서, test time때 student network와 teacher network의 output 사이의 큰 distance를 기반으로 anomalous image를 검출하게 됩니다. 

 

이러한 효과를 더 증가시키기 위해서, 'Asymmetric student-teacher networks for industrial anomaly detection' 논문에서는 teacher network와 student network간 architectural asymmetry를 사용하였는데요. 저자들은 대신에, 정상 이미지가 아닌 이미지에 대해서 student network가 teacher network를 따라 하지 못하게 만드는 training loss를 도입하여 loss-induced asymmetry를 도입하였습니다. 

 

이 loss는 test time에서 computational cost에도 영향을 주지 않고, architecture design에 제약을 주지 않으며, anomalous feature를 정확히 검출하면서도 student network와 teacher network 모두에 efficient network architecture를 사용할 수 있게 만듭니다.

 

 

 

Anomalous local feature를 확인하는 것은 생산된 제품에 오염이나 얼룩과 같이, 정상 이미지와 구조적으로 다른(structurally different) anomaly를 검출하게 합니다. 하지만, 어려운 문제는 정상 이미지의 position, size, arrangement와 관련된 logical constraint에 대한 이상 여부를 찾아내는 것입니다. 이러한 문제를 해결하고자, EfficientAD는 'Beyond Dents and Scratches: Logical Constraints in Unsupervised Anomaly Detection and Localization' 논문에서 제안된 autoencoder를 사용합니다. 이 autoencoder는 test time에서 학습 이미지의 logical constraint를 학습하고, violation을 탐지하게 됩니다.

 

저자들은 autoencoder의 구조와 학습 protocol을 단순화 하면서, 어떻게 이를 student-teacher model과 효율적으로 통합할 수 있는지를 논문에서 설명합니다. 또한, autoencoder와 student-teacher model의 detection result를 합치기 전에 보정해서 anomaly detection 성능을 향상할 수 있는 방법 또한 제안합니다.

 

 

저자들의 contribution은 다음과 같이 요약해볼 수 있습니다.

 

- 이미지 한 장당 2ms 이내의 latency를 보여주면서, industrial benchmark에 대해서 anomaly detection과 localization에서 SOTA 대비 상당히 성능을 향상했습니다.

- 최근 anomaly detection 방법론들과 비교했을 때 feature extraction의 속도를 몇 배 향상할 수 있는 efficient network architecture를 제안합니다.

- Inference runtime에 영향을 미치지 않으면서 student-teacher model의 이상 탐지 성능을 상당히 향상시킬 수 있는 training loss를 도입합니다.

- autoencoder 기반으로 효율적으로 logical anomaly를 검출하고, student-teacher model의 검출 결과와 통합한 후 보정할 수 있는 방법을 제안합니다.

 

 

3. Related Work

3.1 Anomaly Detection Tasks

 

간단한 내용이라서, 해당 글에서는 생략하겠습니다. 

 

 

3.2 Anomaly Detection Methods

 

전통적인 컴퓨터 비전 알고리즘은 수십 년간 산업용 이상 탐지 문제에 성공적으로 적용되어 왔습니다. 이러한 알고리즘들은 흔히 이미지 한 장당 몇 ms 이내에 이미지를 처리해야 하는 요구사항을 충족해 왔습니다. Bergmann는 이러한 방법론들을 평가해 보았고, 사물이 똑바로 위치해있지 않은 경우에는 실패한다는 것을 확인하였습니다.

 

딥러닝 기반의 방법론들은 이러한 케이스에서도 강건하게 작동한다는 것을 보여왔습니다. 최근에 성공적인 방법론들은 pretrained 되고 frozen 된 CNN의 feature space에서 밀도 추정을 하거나 outlier를 검출합니다. 만약 feature vector가 input pixel에 매핑될 수 있다면, 이들의 outlier score를 각각의 pixel에 할당해서 2D anomaly map을 만들 수 있게 됩니다.

 

최근 방법들은 다변량 정규 분포, Gaussian Mixture Models, Normalizing Flow, kNN 알고리즘을 사용하곤 합니다. kNN은 Nearest Neighbor를 찾는 것에 있어서 runtime을 많이 잡아먹게 되는데, PatchCore는 이를 해결하고자 군집된 feature vector들의 reduced database를 만들어서 여기서만 kNN을 진행하도록 합니다. 

 

 

Bergmann은 이상 탐지를 위한 student-teacher (S-T) framework를 제안하였습니다. 여기서 teacher network는 pretrained frozen CNN입니다. 해당 연구에서는 3가지 다른 receptive field 크기를 가진 teacher network를 사용합니다. 각 teacher network는 학습 이미지에서 teacher network의 output을 따라 하는 3개의 student network를 학습시킵니다. 

 

student network는 이상이 있는 이미지를 학습하는 동안에 본 적 없기 때문에, 이들에 대해서는 teacher network의 output을 예측하는 것에 실패하기 때문에 이를 기반으로 이상 탐지가 가능합니다. Bergmann은 student network의 output의 variance와 teacher network의 output 간의 distance를 가지고 anomaly score를 계산하였습니다. 

 

S-T framework의 다양한 변형 버전들이 제안되어 왔는데요. Rudolph는 teacher network의 구조를 invertible neural network로 제한시켜서 PatchCore에 버금가는 이상 탐지 성능에 도달하는 데 성공하기도 하였습니다. 본 논문에서는 Asymmetric Student Teacher (AST)  모델과 original S-T method, 그리고 EfficientAD를 비교합니다.

 

 

autoencoder나 GAN과 같은 생성 모델 또한 이상 탐지를 위해서 범용적으로 사용되어 왔습니다. 최근 autoencoder 기반의 방법들은 정상 이미지에 대해서는 정확한 복원을, 비정상 이미지에 대해서는 부정확한 복원을 한다는 것에 의존하고 있습니다. 이는 input image에 대한 복원 결과와 비교해서 이상 이미지를 찾아낼 수 있게 만들어줍니다.

 

이러한 접근법에서 발생하는 흔한 문제는 정상 이미지에 대한 부정확한 복원으로 인해 발생하는 false-positive detection 문제입니다. (정상인데 비정상으로 탐지되는 것이라고 이해하시면 됩니다.) 이를 피하고자, Bergmann은 autoencoder가 pretrained network의 feature space에서 이미지를 복원하도록 하였습니다. 게다가 해당 논문에서는 autoencoder의 output을 예측하는 neural network를 학습시켰는데, 이 network는 normal image에 대한 systematic reconstruction error도 학습하게 됩니다. (논문에서 이 systematic reconstruction error에 대한 설명이 막 자세하진 않은데, 제가 이해하기로는 autoencoder의 output에서 나타나는 global한/거시적인 경향성을 의미하는 것 같습니다. autoencoder의 복원 결과가 전반적으로 흐릿하다면, 이것의 output을 예측하도록 학습된 모델 또한 전반적으로 흐릿한 결과를 뽑게 된다는 것입니다.)

 

 

4. Method

 

저자들은 다음 subsection들에서 EfficientAD의 각 요소들을 설명하고 있습니다. 4.1에서는 pretrained neural network로부터 나오는 feature를 어떻게 효율적으로 추출할 것인지를 다룹니다. 4.2에서는 test time에서 student-teacher model을 사용해서 어떻게 anomalous feature를 검출하는지에 대해서 다룹니다. 주된 난관은 전체적인 runtime을 낮게 가져가면서도 경쟁력 있는 이상 탐지 성능을 가지는 것이었는데요. 이를 위해 student-teacher network를 학습하기 위한 loss function을 도입하였습니다. 이는 inference 시 연산량에 영향을 주지 않으면서 이상 탐지의 성능을 향상하게 됩니다.

 

4.3에서는 autoencoder 기반의 접근법을 사용해서 어떻게 logical anomaly를 잡는지를 설명합니다. 4.4에서는 student-teacher model과 autoencoder의 탐지 결과를 어떻게 결합하고 보정하는지에 대해서 설명하게 됩니다.

 

 

4.1 Efficient Patch Descriptors

 

최근 이상 탐지 방법들은 보통 WideResNet-101와 같은 pretrained network를 사용하는데요. 저자들은 깊이가 극단적으로 줄여진 네트워크를 feature extractor로 사용합니다. 이는 단 4개의 conv layer로 구성됩니다. 구조는 아래 Figure 2를 참고하시면 됩니다.

 

 

Figure 2

 

각 output 뉴런은 33x33 pixel의 receptive field를 가지고 있기 때문에, output feature vector의 각 요소들은 33x33 patch를 설명하게 됩니다. 이렇게 명확하게 대응되기 때문에, 저자들은 이 네트워크를 patch description network (PDN)이라고 명명했습니다. PDN는 한 번의 forward pass에 가변적인 사이즈의 이미지에서도 feature vector를 뽑아낼 수 있습니다.

 

'Uninformed Students: Student-Teacher Anomaly Detection With Discriminative Latent Embeddings' 논문에서도 유사하게 몇 개의 conv layer로만 이루어진 네트워크를 사용해서 feature를 뽑았는데요. 이러한 네트워크는 downsampling과 pooling이 없다 보니 꽤 높은 연산량을 요구했습니다. 

 

해당 논문에서 사용된 네트워크의 파라미터 수가 1.6 million에서 2.7 million 정도로 비교적 낮았지만, GCAD에서 사용했던 31 million 파라미터를 가진 U-Net보다도 시간도 오래 걸리고 메모리도 더 요구하는 것을 실험적으로 확인했습니다. 이는 파라미터의 수가 특정 방법론의 latency, throughput, memory footprint에 대한 적절치 못한 metric이라는 것을 의미한다고 합니다. 

 

최근 classification architecture들은 대부분 downsampling을 초기에 적용해서 feature map 사이즈를 줄이고, 시간 및 공간 복잡도를 감소시키는 편입니다. 저자들도 유사한 방식을 PDN에 적용, NVIDIA RTX A6000 GPU 기준 256x256 사이즈 이미지에서 feature를 얻는데 800μs가 소요된다고 합니다. (800μs = 0.8ms라고 보시면 됩니다.)

 

PDN이 expressive feature를 만들게 하기 위해서, 저자들은 deep pretrained classification network를 활용해 knowledge distillation를 적용합니다. ImageNet에 있는 이미지에 대해서 pretrained network에서 뽑은 feature와 PDN의 output 간의 MSE가 최소화되도록 학습이 진행됩니다. 

 

PDN은 매우 효율적인 것 외에도, 일반 deep network를 사용하는 것과 비교했을 때 또 다른 이점이 있는데요. PDN에서 만들어진 feature vector는 각 픽셀에 대응되는 33x33 patch에만 의존한다는 것입니다. 반면에, pretrained classifier에서 나온 feature는 이미지의 다른 부분에도 long-range dependency를 가지게 되죠. 이는 Figure 3을 보면 확인할 수 있습니다.

 

Figure 3

Figure 3의 위쪽 행은 output의 중심부에 위치한 1개의 feature vector에 대해서 각 input pixel에 대한 gradient를 나타낸 것입니다. 예를 들어서 모델의 output이 28x28이라고 하면, 아마 (14, 14)에 위치한 feature vector를 얘기하는 것 같은데요. 해당 vector 값에 대한 각 input pixel의 gradient 값을 시각화한 것으로 보입니다. 

 

DenseNet이나 WideResNet을 보시면, 해당 feature vector에 대한 gradient가 input image의 정중앙 pixel 외에도 꽤나 넓은 범위에 걸쳐서 분포해 있는 것을 알 수 있습니다. 위에서 언급된 대로, 이미지의 다른 부분에도 dependency가 있다는 게 바로 이런 의미입니다. 반면에, PDN은 매우 국소 부위만 영향을 미치는 것을 알 수 있으며, 이미지의 나머지 부위들은 gradient가 아주 작은 값인 것으로 보입니다.

 

이렇게 PDN은 well-defined receptive field를 가지고 있기 때문에, 이미지의 다른 부분들로 인해서 anomaly localization에 악영향을 주는 경우가 없을 것이라고 밝히고 있습니다.

 

 

4.2 Reduced Student-Teacher

 

anomalous feature vector를 탐지하기 위해서 teacher network로는 distilled PDN을 사용하고, 동일한 architecture를 student에도 그대로 적용합니다. 이를 통해서 1ms 이내로 feature를 뽑을 수 있게 됩니다.

 

그런데, 최근 모델들이 anomaly detection performance를 증가시키고자 사용한 방법들, 예를 들어 여러 개의 teacher network와 student network를 앙상블 한다던가, student와 teacher 간의 architectural asymmetry를 활용한다거나 하는 테크닉이 적용되지 않았습니다. 따라서, 저자들은 연산량에 영향을 주지 않으면서도 성능을 높이는 training loss를 도입했습니다.

 

저자들은 일반적인 S-T framework에서 학습 이미지의 수를 증가시키면 이상 이미지에 대해서 teacher network를 모방하는 능력이 향상되는 것을 확인했다고 합니다. 이는 이상 탐지 성능을 악화시키죠. 그렇다고 해서 학습 이미지 수를 너무 많이 줄이면 정상 이미지에 대한 중요한 정보를 얻지 못하게 될 수 있죠. 그래서 저자들은 student network에 충분한 이미지를 제공해서 정상 이미지에 대해서는 teacher network를 잘 모방하도록 만들면서, 동시에 anomalous image에 대해서 generalization 하지 못하도록 만들어보고자 했다고 합니다.

 

Online Hard Example Mining과 유사하게, 저자들은 student network가 teacher network를 가장 잘 못 따라 하는 부분만 loss에 영향을 주도록 했습니다. 즉, 가장 높은 loss값을 가진 output element만을 loss에 활용한다는 것입니다.

 

이를 수식으로 표현하자면, teacher network $T$와 student network $S$가 있고 training image $I$가 있으면, 각각은 $T(I) \in R^{C \times W \times H}$, $S(I) \in R^{C \times W \times H}$를 만들어 내게 됩니다. 각 $(c, w, h)$에 대해서 squared difference는 $D_{c, w, h} = (T(I)_{c, w, h} - S(I)_{c, w, h})^2$로 계산됩니다. 

 

mining factor $p_{hard} \in [0, 1]$을 기반으로, $D$에서 $p_{hard}$ quantile을 계산합니다. 이를 $d_{hard}$로 표현하고요. 위에서 구한 $D_{c, w, h}$에서 $d_{hard}$보다 크거나 같은 요소들의 평균을 training loss인 $L_{hard}$로 사용하게 됩니다. 

 

$p_{hard}$의 의미를 생각해 보면, 이를 0으로 했을 땐 일반적인 S-T loss라고 이해할 수 있죠. 실제로 저자들의 실험에서는, 이 값을 0.999로 지정했다고 합니다. 99.9 분위수라고 하니, 매우 높은 값 일부만 사용한 것을 알 수 있습니다. 이 $p_{hard}$의 효과는 Figure 4에서 볼 수 있습니다. 

 

Figure 4

 

hard feature loss를 사용하는 효과를 위 사진에서 볼 수 있는데요. 밝기는 backprop을 위해 사용된 feature vector의 차원이 얼마나 사용되었는지를 나타내고 있습니다. 못과 관련이 없는 background에는 하얀 요소들이 없는 것을 확인할 수 있으며, 이는 backprop에 사용되는 요소들이 없다는 것을 의미하고, stduent network의 output과 teacher network의 output 간의 difference가 적다는 것을 확인할 수 있습니다. 그래서 우리가 학습해야 할 사물 쪽 요소만 학습을 진행하게 됩니다.

 

 

Inference를 진행할 때 2D anomaly map $M \in R^{W \times H}$은 $M_{w, h} = C^{-1}\Sigma_{c}D_{c, w, h}$로 계산되며, 이는 채널 기반으로 평균을 낸 것이라고 이해하시면 되겠습니다. (표기상 $C^{-1}$로 표기 되어 마치 matrix처럼 보일 수 있지만, 실제로 $C$는 차원의 수 이기 때문에 512와 같은 int입니다. 그래서 실제로는 1/512와 같이 int 값의 역수라고 이해하시면 됩니다.) 

 

추가적으로, hard feature loss를 적용하면 normal image에 대해서 false-positive detection이 발생하는 경우를 피할 수 있는 장점도 있습니다. (정상이 anomaly로 탐지되는 것을 의미합니다.)

 

hard feature loss 외에도, 저자들은 loss penalty라는 것을 추가로 적용했는데요. 이는 학습 중에 student가 normal training image에 없는 이미지에 대해서 teacher를 따라 하는 것을 방해하기 위해 적용한다고 합니다. 제가 생각하기에는 조금 독특하다고 느꼈는데, student network의 학습 도중에 teacher network의 pretraining때 사용된 이미지를 학습에 사용합니다. 즉 ImageNet에 있는 이미지 중에 랜덤 하게 뽑아서 이를 학습에 활용한다는 것이지요.

 

이를 반영한 loss를 계산하면, $L_{ST} = L_{hard} + (CWH)^{-1}\Sigma_{c} \parallel S(P)_{c}\parallel^{2}_{F}$로 계산이 됩니다. 이 penalty는 out-of-distribution image에 대해서 student network가 teacher network를 모방하지 못하게 막는 역할을 합니다. 수식이 조금 어려워 보일 순 있지만, ImageNet에서 뽑은 임의의 이미지가 $P$이고, student network가 $S$이니, $S(P)$는 이미지를 넣어서 나온 output이라고 보시면 됩니다. 이를 제곱을 해주고 channel 기준으로 sum한 다음, $CWH$로 나눠줍니다. 앞에서도 언급드렸지만, $CWH$는 matrix가 아니고 int입니다.

 

4.3 Logical Anomaly Detection

 

anomaly 중에서 logical anomaly가 발생할 가능성을 배제할 수는 없는데요. logical anomaly는 물체가 잘못 위치해 있다거나 하는 경우를 얘기합니다. 그래서 이런 경우들까지 탐지할 수 있어야 합니다. 'Beyond Dents and Scratches: Logical Constraintsin Unsupervised Anomaly Detection and Localization.' 논문에서 제안된 것처럼, 저자들은 이를 잡아내기 위한 용도로 autoencoder를 사용합니다. Figure 5에 EfficientAD의 전체 방법론을 나타내주고 있습니다.

 

Figure 5

 

Figure 5를 확인해 보면, 앞에서 언급했던 student-teacher pair가 있고, 방금 전에 얘기한 autoencoder를 활용하는 것을 볼 수 있죠. autoencoder는 teacher network의 output을 예측하도록 학습된다고 합니다. 이를 수식으로 표현하자면, 이렇게 표현할 수 있습니다. Autoencoder는 $A$, training image $I$, 이를 활용하면 $A(I) \in R^{C \times W \times H}$를 output으로 뽑게 되죠. 그리고 autoencoder를 학습하는 데 사용할 loss는 $L_{AE} = (CWH)^{-1}\Sigma_{c}\parallel T(I)_{c} - A(I)_{c} \parallel^2_{F}$로 계산할 수 있습니다. $T$는 teacher network라고 하였으니, teacher network의 output과 autoencoder의 output 간 차이를 제곱해서 이를 평균 낸 값이라고 볼 수 있죠. 일반적인 autoencoder 학습에 사용하는 loss와 동일합니다.

 

student는 PDN이라는 것을 앞에서 언급했었는데요. student는 patch 기반의 network지만, autoencoder는 이미지 전체를 encode 하고 decode 하고 있습니다. 그래서 logical anomaly가 발생한 이미지에 대해서는 autoencoder가 복원을 제대로 못합니다. 하지만, 이러한 문제가 정상 이미지에도 발생하는데요. 이는 autoencoder가 fine-grained pattern 복원을 어려워하기 때문입니다. 이는 Figure 5에서도 확인할 수 있죠.

 

 

앞에서 언급했듯이, autoencoder는 teacher network의 output을 유사하게 따라가도록 학습되어 있는데요. 보시면 autoencoder에서 나온 output은 background에 있는 패턴들은 복원이 안된 걸 볼 수 있습니다. 이 부분을 얘기한다고 이해하시면 됩니다.

 

이런 문제 때문에 teacher network의 output과 autoencoder의 output 간 차이를 그대로 anomaly map으로 활용하기에는 false-positive가 발생할 수 있다고 합니다. 따라서, 저자들은 student network의 output channel의 수를 두배로 늘리고, 이를 autoencoder의 output과 teacher network의 output를 예측하도록 학습하도록 한다고 합니다.

 

이를 수식으로 표현하자면, $S'(I) \in R^{C \times W \times H}$가 student의 추가적인 output channel이라고 했을 때, student의 추가적인 loss는 다음과 같이 정의됩니다. $L_{STAE} = (CWH)^{-1}\Sigma_{c}\parallel A(I)_{c}-S'(I)_{c}\parallel^{2}_{F}$. 결론적으로 전체 training loss는 $L_{AE}$, $L_{ST}$, $L_{STAE}$의 합이라고 합니다.

 

이렇게 학습하면 student network는 autoencoder의 정상 이미지에 대한 systematic reconstruction error(예를 들면, 전체적으로 blurry 하게 복원되는 것)은 학습하면서, 동시에 anomaly에 대해서 발생하는 reconstruction error는 학습을 못하게 됩니다. 따라서, autoencoder의 output과 student network의 output 간 차이는 anomaly map으로 활용할 수 있게 됩니다. 이는 global anomaly map으로 부르게 되고요.

 

student network의 output과 teacher network의 output간 square difference를 계산하고, 이를 channel 기준으로 평균을 내서 이를 local anomaly map으로 활용합니다. 이 두 anomaly map을 결합해서 활용하고, maximum value를 image-level anomaly score로 활용합니다.

 

4.4 Anomaly Map Normalization

 

local과 global anomaly map이 있기 때문에, 이 둘을 통합해서 사용하기 전에 유사한 scale로 변경이 필요합니다. 이는 Figure 5에 나타난 것처럼, 양쪽 anomaly map 중에서 한쪽에서만 anomaly가 검출되었을 경우 중요하게 된다고 합니다. 그 외에도, 한 map에서의 noise가 결합된 map에서 정확하게 탐지하는 것이 어렵게 만들 수 있습니다.

 

정상 이미지에서의 noise의 scale을 추정하기 위해서 validation image를 별도로 사용한다고 합니다. 이들은 학습 셋에는 없는 이미지고요. 두 가지 anomaly map 각각에 대해서, validation image 전체에 대해서 모든 pixel anomaly score를 계산합니다. 그러고 나서 각각 계산된 pixel anomaly score(local, global)에 대해서 두 개의 $p$ qunatiles를 계산하는데, $q_{a}$는 anomaly score 0에 맵핑되고, $q_{b}$는 0.1에 맵핑되는 값입니다. test time에는, 계산된 각각의 맵핑에 맞춰서 normalized 된다고 보시면 됩니다. 뒤에 experiment 부분에서 보면, $q_{a}$는 0.9 quantile, $q_{b}$는 0.995 quantile을 선택해서 사용하는 것을 알 수 있습니다.

 

 

5. Experiments

 

실험 부분은 아주 간단하게만 정리하고 넘어가려고 합니다. 크게 EfficientAD-S와 EfficientAD-M이 있다는 점만 알아두시면 되고, EfficientAD-M은 conv layer의 커널 수를 두배로 늘린 것입니다. 뒤에 보시면 S와 M 각각 레이어 구성에 대해서도 다 자세히 나와 있습니다. 실험은 MVTec AD, VisA, MVTec LOCO 데이터셋에서 진행하였고요.

 

Table 1

 

Table 1은 3개의 데이터 셋 전체에 대해서 평균 성능을 보여주고 있고, 나머지 방법론에 비해서 EfficientAD가 좋은 성능을 낸다는 점을 확인할 수 있습니다. 

 

 

Table 2

 

Table 1에 대한 세부적인 내용이 Table 2에 적혀있네요. MVTec AD에 대해서는 PatchCore, PatchCore ensemble, AST 모두 98 후반대가 나오고 있어서 이미 성능 기준으로는 saturation 된 상황인데, MVTec AD LOCO 데이터셋에 대해서 성능 차이가 심합니다. 아마 LOCO는 logical anomaly가 많아서, 기존 방법론으로는 탐지가 어려운 것이 아닐까 생각됩니다. 그래서 3개 데이터 셋에 대한 평균을 내니까 EfficientAD가 SOTA로 찍히는 모습입니다.

 

Figure 6

 

여러 가지 GPU에 대해서 Latency를 비교한 표입니다. EfficientAD가 가장 낮은 수준을 나타내고 있습니다. 

 

 

Table 4

 

Table 4는 GCAD라는 모델에서 Ablation study를 진행한 모습입니다. 각각의 요소를 반영할 때마다 성능의 변화와, Latency의 변화를 보여주고 있습니다. 이 부분을 제대로 이해하려면 GCAD라는 모델에 대해서도 자세히 알면 더욱 이해하기가 쉽겠네요. 저는 아직 읽어본 논문이 아니라서 대략 감만 잡는 정도로 읽고 넘어갔습니다.

 

 

6. Conclusion

 

강력한 이상 탐지 성능과 매우 높은 연산 효율성으로 무장한 EfficientAD를 소개하는 논문이었습니다. 이는 logical anomaly와 structural anomaly를 모두 탐지하는 새로운 표준이 될 것으로 보이고요. 

 

강력한 이상 탐지 성능과 높은 연산 효율성을 기반으로 하면 이를 실제 application 환경에서 적용하기에 좋을 것으로 보이네요. 추가로 논문에서 제안한 PDN를 활용하면, 다른 이상 탐지 방법론에서도 latency를 줄이는데 도움이 될 것이라고 합니다.

 

7. Limitations

 

Student-teacher model과 autoencoder는 각각 다른 유형의 anomaly를 탐지하도록 설계가 되어 있는데요. Autoencoder는 logical anomaly를, student-teacher network는 fine-grained structural anomaly를 탐지하는 역할입니다. 하지만, fine-grained logical anomaly는 여전히 도전적인 문제로 남아 있는데요. 예를 들면 2mm만큼 더 긴 나사 같은 게 있겠죠. 이런 것들을 잡아내려면, 전통적인 측량 방법론들을 사용해야 한다고 합니다.

 

최근 이상 탐지 방법론들과 비교했을 때 한계점으로는, kNN 기반 방법론들과는 대조적으로 autoencoder를 별도로 학습해야 합니다. 

 

 

 

 

여기까지 해서 EfficientAD 논문을 정리해 보았습니다.

 

기존 방법론들이 단순히 pretrained CNN model에서 feature extraction을 하던 것에서 knowledge distillation을 통해 더 단순한 모델을 활용해서 feature extraction이 가능하도록 만들었다는 점이 굉장히 인상적이었고요.

 

또 일반적인 결함 외에도 logical anomaly까지 잡아내기 위해서 autoencoder까지 end-to-end로 연결한 process를 만들었다는 점도 흥미로웠던 것 같습니다.

 

논문 내용을 어느 정도 이해하셨다면, 논문 뒤에 있는 Appendix A을 확인해 보시면 전체 프로세스를 pseudo-code 형식으로 정리한 내용이 있습니다. 논문에서 언급된 요소들이 실제 어떤 흐름으로 진행되는지를 확인하실 수 있습니다.

 

 

추후 또 흥미로운 이상 탐지 논문을 발견하게 되면 리뷰를 진행해 보겠습니다.

 

 

감사합니다.

 

 

 

Face Recognition(얼굴 인식)분야에서 사용되는 Loss인 ArcFace loss에 대한 논문이다.

 

 

얼굴 인식 분야를 공부하는 것은 아니나, 다른 논문을 읽다가 loss function으로 ArcFace loss를 활용하는 논문이 있어 해당 논문을 읽게 되었다.

 

 

원 논문 자료: https://arxiv.org/abs/1801.07698

 

ArcFace: Additive Angular Margin Loss for Deep Face Recognition

One of the main challenges in feature learning using Deep Convolutional Neural Networks (DCNNs) for large-scale face recognition is the design of appropriate loss functions that enhance discriminative power. Centre loss penalises the distance between the d

arxiv.org

논문에 들어가기 앞서, 이 논문을 읽으면서 필요한 개념들을 정리해보고 논문 리뷰를 시작하려고 한다.

 

 

 

1) open-set face recognition vs closed-set face recognition

 

 

 

ArcFace 논문에서는, 기존 방법론의 한계점을 지적하는 과정에서 closed-set에 대한 언급을 하게 되는데, 이는 선행 연구 중 하나인 SphereFace : Deep Hypersphere Embedding for Face Recognition에서 언급되었다.

 

 

open-set face recognition vs closed-set face recognition

 

Closed-set face recognition이란, 내가 맞추어야 하는 Testing set에 있는 얼굴 사진에 대한 identity(label 혹은 정답이라고 생각하면 될듯하다.)가 training set에 있는 경우를 의미한다. 따라서 이는 우리가 머신러닝이나 딥러닝에서 풀고자 하는 classification problem과 같다는 것을 의미한다. 

 

 

하지만, 현실 문제에서는 우리가 한번도 본 적 없는 얼굴에 대해서 인식을 해야 하는 일이 발생한다. 이에 해당하는 것이 바로 open-set face recognition이다. open-set face recognition이란, 내가 맞추어야 하는 Testing set에 있는 얼굴 사진에 대한 identity가 training set에 없는 경우를 의미한다. 

 

 

open-set의 경우, 얼굴 이미지를 학습 데이터에 알려진 identity로 분류하는 것이 불가능하기 때문에 얼굴 이미지를 discriminative 한 feature space로 mapping 시키는 것이 요구된다.

 

 

2) Logit

 

 

 

neural network에서 classification task를 위해 사용되는 마지막 layer를 의미하고, 실수 형태로 raw prediction value 값을 뽑아낸 결과를 의미한다.

 

 

예를 들어서, 이미지를 주고 이것이 개, 고양이, 사자, 고슴도치를 구별하는 classification을 해야 한다면, CNN을 이용해서 특징을 추출한 후, 마지막에 Fully connected layer를 이용해서 최종적으로 4개의 클래스 중에 어떤 클래스에 가까운지에 대한 예측값을 뽑게 될 것이다. 보통 분류 문제의 경우는, 마지막에 softmax를 취해서 각 클래스에 해당할 확률의 합이 1이 되게끔 하는 처리를 해주지만, softmax를 취해주기 전에 나온 raw prediction value 값을 logit이라고 부르는 것으로 보인다.

 

 

 

3) Geodesic distance

 

geodesic distance란, 두 점을 잇는 최단 거리를 의미한다. 수학시간에는 두 점을 잇는 최단 거리를 직선이라고 배운 것 같은데, 이를 영어로 표기하면 geodesic distance인 듯....

 

 

 

 

논문을 읽는데 필요한 3가지 개념들을 모두 정리하였고, 본격적으로 논문에 대한 내용들을 다루어보려고 한다.

 

 

 

 

 

 

Abstract

 

 

대규모 얼굴 인식을 위해 Deep Convolutional Neural Networks(DCNNs)를 사용해 feature learning을 하는 데 있어서 주요한 challenge 중 하나는 discriminative power를 강화하는 적절한 loss function의 설계이다.

Centre loss는 intra-class compactness를 달성하기 위해 Euclidean space에서 deep feature와 그에 대응되는 class 중심 사이의 거리에 처벌을 가한다. 

SphereFace는 마지막 fully connected layer에서의 linear transformation matrix가 angular space에서 class의 중심을 나타내는 표현으로 사용될 수 있다는 것을 가정하며, deep feature와 그것에 대응되는 weight 사이의 각도에 multiplicative 한 방법을 이용해 처벌을 가한다.

최근, 인기 있는 연구분야는 face class separability를 최대화하기 위해서 잘 설계된 손실 함수에 margin을 포함시키는 것이다. 이번 연구에서, 우리는 얼굴 인식에 있어서 매우 discriminative 한 feature를 얻기 위해서 additive angular Margin Loss (ArcFace)를 제안한다. 제안된 ArcFace는 hypersphere에서의 geodesic distance와 정확히 일치하기 때문에, 명확한 기하학적 해석을 가지고 있다. 

 

 

1. Introduction

 

 

Deep Convolutional Neural Network (DCNN) embedding을 사용하는 face representation은 얼굴 인식을 위한 최고의 방법이다. DCNNs은 일반적으로 포즈 정규화 단계를 거친 후, 얼굴 이미지를 클래스 내에서는 작은 거리를 가지고 클래스 간에는 큰 거리를 갖는 특징으로 mapping 한다. 얼굴 인식을 위해서 DCNNs을 학습시키는 것에는 두 개의 주요한 연구분야가 있다. 그중 하나는 softmax classifier를 사용하여 학습 데이터에서의 다른 identity를 구별할 수 있는 multi-class classifier를 학습하는 것이고, 다른 하나는 triplet loss와 같이 embedding을 직접적으로 학습하는 것이다.

 

 

대규모의 학습 데이터와 정교한 DCNN architecture에 기반해서, softmax loss 기반의 방법과 triplet loss 기반의 방법은 얼굴 인식에서 훌륭한 성능을 얻을 수 있었다. 하지만, softmax loss와 triplet loss 둘 다 결점을 가지고 있다. softmax loss에 대해서는 첫 번째로, 선형 변환 행렬 $W \in R^{d \times n}$ 의 크기가 identity의 개수 $n$에 의해 선형적으로 증가한다는 것이고, 두 번째로, closed-set 분류 문제에 대해서는 학습된 특징들이 분리될 수 있지만, open-set 얼굴 인식 문제에 대해서는 충분히 discriminative 하지 않다는 것이다. 

 

 

Triplet loss에 대해서는 첫 번째로, 특히 대규모 데이터셋에서 face triplet의 수에서 combinatorial explosion이 존재할 수 있으며, 이는 iteration step의 수에서의 상당한 증가를 가져올 수 있다. 두 번째로, 효율적인 모델 학습을 위해서는 semi-hard sample mining이 상당히 어려운 문제라는 것이다.(triplet loss를 계산하기 위해서는, 기준점인 anchor, anchor와 같은 identity를 가지고 있는 점인 positive, anchoer와 다른 identity를 가지고 있는 점인 negative의 triplet 쌍을 뽑아야 한다. 이를 face triplet이라고 표현한 것으로 보이고, 데이터가 많을 경우 이러한 triplet 쌍을 뽑을 수 있는 경우의 수가 폭발적으로 많아지기 때문에 combinatorial explosion이 발생한다고 표현한 것으로 보인다. 또한, triplet을 어떻게 sampling 하는지에 따라서 성능의 차이가 많이 나기 때문에 sampling을 어떻게 하는지가 매우 중요한 문제인데, 그렇기 때문에 sample mining이 상당히 어렵다고 표현한 것으로 보인다.)

 

 

Figure 1. four kinds of Geodesic Distance (Gdis) constraint.

 

Figure 1 - centre normalization과 feature normalization에 기반해서, 모든 identity는 hypersphere에 분포되어있다. 클래스 내 compactness와 클래스 간 discrepancy를 향상하기 위해서, 4종류의 Geodesic Distance constraint를 고려한다.

 

(A) Margin-loss: sample과 중심 간의 geodesic distance margin을 추가한다. (위 그림을 보면 알겠지만, sample과 중심 간의 거리 + m 이 sample과 다른 identity의 중심 간의 거리보다 작게끔 만드려고 한다. 따라서, 여기서의 margin이라는 의미는 sample과 다른 identity의 중심 간의 거리가 m이라는 값보다 크게끔 한다는 것이다. 만약 m이라는 값보다 작으면 penalty를 부과한다.)

(B) Intra-loss: sample과 중심 간의 geodesic distance를 감소시킨다.

(C) Inter-loss: 다른 중심 간의 geodesic distance를 증가시킨다.

(D) Triplet-loss: triplet sample 간에 geodesic distance margin을 추가함. (위 그림을 보면, 기준이 되는 anchor인 $x_{11}$과 같은 identity를 가지는 샘플인 $x_{12}$와의 거리 + m 이 anchor와 다른 identity를 가지는 샘플인 $x_{21}$ 보다 작게끔 만드려고 한다. 따라서, 여기서의 margin이라는 의미는 anchor와 다른 identity를 가지는 샘플 간의 거리가 m이라는 값보다 크게끔 한다는 것이다. 만약 m이라는 값보다 작으면 penalty를 부과한다.)

 

이번 연구에서, 우리는 Additive Angular Margin Loss (ArcFace)를 제안하며, 이는 (A)에서의 geodesic distance (Arc) margin penalty와 정확히 대응되며, 얼굴 인식 모델의 discriminative power를 강화시킨다.

 

 

 

혼자 이 논문을 읽으면서, centre normalization과 feature normalization에 기반해서, 모든 identity가 hypersphere에 분포되어있다는 의미가 무엇인지 몰라서 꽤 애를 먹었다. 따라서 논문의 그다음으로 넘어가기 전에, 이 부분에 대해서 보충 설명을 진행하고 넘어가도록 하려고 한다. 이 부분을 이해하지 못하면, ArcFace loss가 어떤 효과를 나타내는지를 직관적으로 이해하기가 매우 어렵다. 

 

 

Abstract에서도 언급했지만, 이전의 선행연구 중 하나인 SphereFace에서는 마지막 fully connected layer에서의 linear transformation matrix가 angular space에서 class의 중심을 나타내는 표현으로 사용될 수 있다는 것을 가정한다. ArcFace 논문에서도 이러한 가정을 받아들여 사용하게 된다. 

 

 

설명하기 쉽도록, 매우 간단한 예시를 들어보려 한다. (물론 실제 케이스에서는 이미지 feature의 차원과 구분해야 하는 얼굴의 identity의 수가 매우 크겠으나, 이는 더 쉬운 케이스에서 원리를 이해하면 확장시키는 것은 어렵지 않을 것이다.) 얼굴 이미지에 해당하는 feature가 3차원이라고 가정하고, 우리는 두 가지의 identity를 가진 얼굴을 분류하는 task를 진행하려고 한다. 그렇다면, classification task를 위해서 fully connected layer는 3차원의 데이터를 받아 2차원으로 구성된(즉, 각 identity에 대한 prediction score) 데이터를 output으로 뽑아내면 되는 케이스가 된다.

 

 

해당 예시는 $xA^T$의 연산을 하는 경우를 생각하였으나, 상황에 따라 연산의 순서가 바뀔 수 있다. 그때는 차원을 잘 살펴보고 상황에 맞춰서 생각해보면 될 것이다. 

 

 

얼굴 이미지에 해당하는 feature를 $x$ = [10, 20, 30]으로 정의해주고, feature를 입력으로 받았을 때, 2가지의 identity로 분류하는 task를 진행하는 fully connected layer를 구성하는 matrix $A$를 다음과 같이 정의해준다. (행은 class의 개수, 열은 feature의 차원을 나타낸다.)

 

\begin{pmatrix}
1 & 2 & 3\\ 
4 & 5 & 6
\end{pmatrix}

 

 

fully connected layer는 $xA^T$의 연산 과정을 거치므로, 2가지의 identity에 대한 prediction score는 다음과 같이 계산될 수 있다.

 

\begin{pmatrix}
10*1+20*2+30*3 & 10*4+20*5+30*6 
\end{pmatrix}

 

이러한 과정을 거쳐 얼굴 이미지의 feature들을 받았을 때, 각 identity에 대한 prediction score를 계산할 수 있다. 

 

SphereFace의 가정에 따라, 해당 예시에서 첫 번째 identity의 중심을 나타내는 값은 \begin{pmatrix}
1 & 2 & 3
\end{pmatrix}
이고, 두 번째 identity의 중심을 나타내는 값은 \begin{pmatrix}
4 & 5 & 6 
\end{pmatrix}
이다. 

 

feature normalization을 거치면, 얼굴 이미지에 해당하는 feature는 $x$ = [$10/\sqrt{1400}$, $20/\sqrt{1400}$, $30/\sqrt{1400}$] 의 형식으로 normalization 해줄 수 있다. 

 

centre normalization을 거치면, 첫 번째 identity의 중심을 나타내는 값은 \begin{pmatrix}
1/\sqrt{14} & 2/\sqrt{14} & 3/\sqrt{14}
\end{pmatrix}

 

두 번째 identity의 중심을 나타내는 값은 \begin{pmatrix}
4/\sqrt{77} & 5/\sqrt{77} & 6/\sqrt{77}
\end{pmatrix}

 

자, 그럼 normalization에 기반했을 때, 모든 identity가 hypersphere에 분포된다는 의미는 무엇인가?

 

 

해당 예시가 3차원이므로, 3차원인 hypersphere는 우리가 잘 아는 도형인 '구'에 해당하게 되고, 구의 중심은 [0, 0, 0]이다.

 

이미지의 feature도 3차원, identity의 중심을 나타내는 값도 3차원이며, 각각에 대해서 구의 중심과의 거리를 계산하면 1이 된다. (normalization을 거쳤기 때문이다.) 따라서, 이미지의 feature와, identity의 중심을 나타내는 값들은 모두 반지름이 1을 만족하는 구 위에 분포하게 된다.

 

 

 

 

다시 논문으로 돌아와서....

 

 

(선행 연구 관련된 내용 한 단락 생략)

 

 

이번 연구에서, 얼굴 인식 모델의 discriminative power를 향상하고 학습 프로세스를 안정하기 위해 Additive Angular Margin Loss (ArcFace)를 제안한다. Figure 2에서 보여주는 것처럼, DCNN feature와 마지막 fully connected layer의 dot product는 feature와 weight가 normalization 된 후의 cosine distance와 같다.(이 내용은 곧 나옴.) 현재 feature와 target weight 사이의 각도를 계산하기 위해서 arc-cosine function을 활용하고, 그다음으로 우리는 추가적인 angular margin을 target angle에 더해주며, cosine function에 의해서 target logit을 다시 얻게 된다. 다음으로, 모든 logit을 고정된 feature norm에 의해서 re-scale 하고 그 후의 단계는 softmax loss와 동일하다.

 

 

제안된 ArcFace의 이점은 다음과 같이 요약될 수 있다.

 

 

매력적이다 - ArcFace는 정규화된 hypersphere에서 각도와 호 사이의 정확한 일치성을 통해(hypersphere 내에서는 반지름이 모두 같으므로 호는 각도의 영향만 받는다는 얘기인 듯) geodesic distance margin을 직접 최적화한다. 우리는 feature와 weight 사이의 angle statistics를 분석해서 512차원의 공간 내에서 어떤 일이 일어나는지를 직관적으로 나타낼 수 있다.

 

 

효과적이다 - ArcFace는 대규모 이미지와 비디오 dataset을 포함하는 10개의 얼굴 인식 benchmark에서 SOTA 성능을 나타냈다.

 

 

쉽다 - ArcFace는 Algorithm 1에서 주어진 것처럼 단지 몇 줄의 코드만 필요하며, MxNet, Pytorch, Tensorflow와 같은 deep learning framework에서 쉽게 실행할 수 있다. 게다가, 이전 선행연구와는 다르게 안정적인 성능을 가지기 위해서 다른 loss function과 결합될 필요가 없으며, 어떤 training dataset에도 쉽게 수렴할 수 있다.

 

 

효율적이다 - ArcFace는 학습하는 동안에 무시해도 될 정도의 계산 복잡도를 추가한다. 현재 GPU들은 학습을 위해 수백만 개의 identity를 쉽게 지원할 수 있으며, model parallel strategy도 더 많은 identity를 지원할 수 있다.

 

 

 

2. Proposed Approach

 

 

2.1. ArcFace

 

 

가장 널리 사용되는 분류 손실 함수인 softmax loss는 다음과 같이 나타내어질 수 있다.

 

 

softmax loss

 

$x_i \in R^d$는 $i$번째 sample의 deep feature를 나타내고, $y_i$번째 class에 속해있다. 이번 연구에서는 embedding feature의 차원은 512차원으로 설정되었다. $W_j \in R^d$는 가중치 $W \in R^{d \times n}$ 의 $j$번째 column을 나타내고, $b_j \in R^n$은 bias term이다. Batch size는 $N$, class number는 $n$이다. 전형적인 softmax loss는 deep face recognition에서 널리 사용되고 있다. 하지만, softmax loss function은 명쾌하게 feature embedding이 클래스 내 sample들이 높은 유사성을 가지도록, 그리고 클래스 간 샘플들이 다양성을 가지도록 최적화하지 않으며, 이는 클래스 내 appearance variation이 높은 상황(포즈의 다양성이나, 나이의 차이가 많이 날 때)과 대규모 테스트 시나리오(수백만 혹은 수조 개의 쌍이 존재하는 상황)에서 performance gap을 나타낸다.

 

 

단순하게, 우리는 bias $b_j$ = 0으로 둔다. 그 후에, 우리는 logit을 $W^T_jx_i$ = $||W_j||$$||x_i||$$cos\theta_j$로 바꾸며, 여기서 $\theta_j$는 가중치 $W_j$와 feature $x_i$간의 각도를 나타낸다. 이전 연구에 따르면, 우리는 $L_2$ normalization을 이용해서 individual weight $||W_j||$ = 1로 만든다. 다른 이전 연구들을 따르면, 우리는 또한 embedding feature $||x_i||$를 $L_2$ normalization에 의해서 고정하고, $s$로 re-scale 한다. Feature와 weight에 대해서 normalization 하는 단계는 예측이 오직 feature와 weight 간의 각도에만 의존하도록 만든다. 따라서 학습된 embedding feature는 hypersphere에서 반지름 $s$의 크기로 분포된다.

 

feature, weight normalization 후 s로 re-scale까지 진행한 Loss function 수식

 

Embedding feature가 hypersphere에서 각 feature 중심 주변에 분포되기 때문에, 추가적인 angular margin penalty인 $m$을 $x_i$와 $W_{y_i}$ 사이에 추가하며, 이는 클래스 내 compactness와 클래스 간 discrepancy를 향상시킨다. 제안된 Additive angular margin penalty는 normalized hypersphere에서 geodesic distance margin penalty와 같기 때문에, 이러한 방법을 ArcFace로 명명하였다.

 

ArcFace Loss function

 

 

ArcFace loss를 적용하는 방법은 다음 그림으로 한 번에 도식화할 수 있다.

 

Figure 2. Illustration of ArcFace loss function process

 

feature $x_i$와 weight $W$을 normalization 하고, 이 둘을 내적해서 $cos\theta_j$ (logit)을 얻는다. 앞에서 설명했던 대로, 구의 표면에 각 feature들이 존재한다고 생각한다면 이 $cos\theta_j$값이 크다는 것은, 해당 class의 중심과 각도가 작다는 것이고(거리가 가깝다는 것이고), $cos\theta_j$값이 작다는 것은, 해당 class의 중심과 각도가 크다는 것이다.(거리가 멀다는 것이다.) 

 

 

다음으로는, 해당 feature가 속한 class인 $y_i$의 중심과 feature $x_i$의 각도인 $\theta_{y_i}$에 margin인 $m$을 추가해준다. 이는 직관적으로 생각해보면, loss function을 계산할 때 해당 feature가 속한 class의 중심과 feature 간의 각도를 더 크게 계산하는 효과를 가져온다.(즉, 해당 class에 속할 가능성이 실제에 비해서 더 낮게 계산되도록 한다.)

 

 

다음으로는, $s$를 곱해줘서 Feature Re-scale을 진행하고, 이 값을 기준으로 Softmax를 취해준 뒤, Cross-entropy Loss를 계산해준다.

 

 

처음 이 논문을 읽었을 때는, 이러한 과정을 통해서 왜 클래스 내 샘플들이 더 compact 해지고, 클래스 간 거리가 더 멀어진다는 것인지 이해를 하지 못했다. 하지만 이러한 효과가 왜 나는지에 대한 핵심은 바로 cross-entropy loss라고 생각한다. cross-entropy loss의 특성은, 정답에 해당하는 class의 softmax 값은 1에 가까워지게 하고, 그에 따라서 정답이 아닌 class에 해당하는 softmax값은 0으로 만들어버린다는 것이다. 이를 ArcFace의 경우에 대입해보면, 정답에 해당하는 class의 softmax 값이 1에 가까워지게 해서 class의 중심과 sample 간의 각도가 0에 가까워지게 만들고($cos(0)$ = 1이다.), 정답이 아닌 class에 해당하는 softmax값은 0에 가까워지게 해서 다른 class의 중심과 sample 간의 각도가 더 멀어지게 만들어버린다. 

 

 

논문의 저자들은 softmax와 ArcFace loss의 차이를 보여주기 위해서, 1개의 class당 1500개의 이미지가 있고 8개의 class로 구성되어 있는 face image에 대해서 2D feature embedding network를 softmax loss와 ArcFace loss를 각각 학습시켰다. Figure 3에서 나타난 것처럼, softmax loss는 대략 분리될 수 있는 feature embedding을 만들지만, decision boundary에서는 현저히 애매모호함을 만들어낸다. 반면에, 제안된 ArcFace loss는 가장 가까운 클래스 간의 더욱 명백한 gap이 생기도록 만든다.

 

Figure 3

 

Figure 3에서 점들은 샘플을 나타내고, 선은 각 identity의 중심 방향을 나타낸다. Feature normalization을 기반으로, 모든 face feature들은 고정된 반지름을 가지는 호 공간에 존재한다. 가장 가까운 class 간의 Geodesic distance gap은 additive angular margin penalty가 포함되었을 때 분명해지는 것을 볼 수 있다.

 

 

 

이후 나오는 부분들은 ArcFace가 어떤 식으로 좋은지 다른 loss function들과 비교하고, 다양한 dataset에서 실험한 내용들을 다루고 있어 review에서는 생략하였다.

 

 

 

 

 

오늘은 ArcFace라고 하는 논문에 대해서 review 해보았는데, 아무래도 얼굴 인식 관련한 배경지식이 없어서인지 완벽하게 이해하는데 꽤 오랜 시간이 들었다. 그래도 며칠 간의 고생 끝에 나름대로 논문을 확실하게 정리할 수 있어서 좋은 공부가 된듯하다.

 

 

 

 

+ Recent posts