Paper/Vision

ArcFace: Additive Angular Margin Loss for DeepFace Recognition

룰루랄라룰루랄라 2024. 4. 9. 19:32

Arxiv :https://arxiv.org/pdf/1801.07698v4.pdf

Paperswithcode : https://paperswithcode.com/paper/arcface-additive-angular-margin-loss-for-deep

 

Papers with Code - ArcFace: Additive Angular Margin Loss for Deep Face Recognition

🏆 SOTA for Face Verification on Labeled Faces in the Wild (Accuracy metric)

paperswithcode.com

 

오늘은 ArcFace 논문을 읽어 보았다

예전 버전 코드를 이용한 적은 있는데 내용이 추가 되어서 나온 것 같아 다시 읽어 보았다

 

Abstract

최근 얼굴 인식 연구가 성행하고 있고 클래스 분리를 위해 softmax loss 에 margin 을 적용하는 방식들이 많다고 한다.

저자는 얼굴 분별력이 상당히 좋고, 기하하적 해석도 분명한 "Additive Angular Margin Loss (ArcFace)"를 소개한다.

 

Introduction

face recognition 을 위해 Deep Convolutinal Neural Network(DCNN) 을 이용해 face embedding 을 많이 뽑는 방법 두가지와 한계가 있다는 것을 볼 수 있다

 

1. multi-class classifier 학습

: 데이터의 다른 identities 를 분리할 수 있도록 softmax classifier 와 같은 multi-class classifier 를 학습하는 방법

: closed-set 에 대해서는 잘 분리 하지만, open set 에서 충분한 분리하지 못한다

: 식별해야하는 인원이 늘어날 수록 matrix 크기가 선형적으로 증가하는 문제가 있다

 

2. triplet loss

: triplet loss 를 사용하여 embedding 을 직접 학습하는 방법

: 데이터셋이 크면 face triplet 의 수가 엄청나게 많아지면서 iteration step 이 증가해버리는 문제가 있다

 

그래서 많은 연구들이 margin penalty 를 주는 것에 집중 했는데,

Sphereface 에서 angular margin 에 대한 중요한 아이디어를 소개한다!  하지만.. sphereface 의 loss function 은 일련의 근사값들을 요구하기 때문에 학습이 불안정하다는 문제가 있었다

 

이 논문에서는 학습도 안정적이면서, 얼굴인식 모델의 분별력 까지 높은 ArcFace 라는 loss 를 제안한다!

- 현재 feature 와 target center 의 angle 계산을 위해 arc-cosine 함수를 활용하였다

- target angle 에 additive angular margin 을 도입하고, cosine 함수를 통해 target logit 을 다시 얻는다

- 고정된 feature norm 으로 모든 logits 을 re-scale 하고 그 후 과정은 softmax loss 와 같다

 

다른 여러 연구에서 margin-based softmax 를 사용하였는데 성능은 좋았으나..

주석이 잘 달린 clean 한 데이터셋이 요구된다는 단점이 있었다

 

또한 sub center 라는 것을 고안하였는데, 원래는 하나의 positive center 를 두고 같은 클래스가 하나의 positive center 에 가까이 가도록 하는 것이라면, sub center 는 각 클래스마다 k 개의 sub center 를 두는 것!

이 방식을 적용하면 raw web 데이터셋에 특히 많은 noise 에 강건한 모델을 만들 수 있고, 자동적으로 데이터셋을 cleaning 해주는 방법으로도 사용할 수 있다고 한다!!

하지만 이 부분은 추후에 sub center arcface 논문을 다시 볼때 정리하는 것으로 하겠다

 

 

그럼 이어서.. 

이 ArcFace 의 장점들은 과연 무엇인가?

1. Intuitive

: 얼굴 feature embedding 으로 분별 학습을 하는데 있어서 같은 클래스(intra-class) 의 압축성(compactness) 와 다른 클래스(inter-class) 간의 분별(discrepancy)되는 것이 직관적으로 향상 되었다

2. Economical

: 제안된 sub-center 를 적용하면 noise 에 강건한 모델을 학습할 수 있을 뿐 아니라, raw web 데이터셋에 대해 자동적으로 cleaning 할 수 도 있다

3. Easy

: 몇 줄의 코드만으로 구현할 수 있고, 딥러닝 프레임워크를 사용했을때 구현도 매우 쉽다

: 다른 loss 함수와 결합하지 않더라도 충분히 안정적인 수렴을 한다

4. Efficient

: 학습 중 계산 복잡성이 무시해도 될 정도로만 추가 된다

5. Effective

: 대규모 데이터 셋 에서 아주 좋은 성능을 보였다

6.  Engaging

: 판별력 뿐 아니라 생성력도 강하다, BN layer 에 저장된 값과 gradient 를 이용해서 신원이 같은 이미지를 restore 하는 것도 된다고 한다

 

 

Proposed Approach

ArcFace 의 접근 방식을 보도록 하자

 

1. Softmax 

 

 

classification loss function 으로 많이 쓰이는 softmax loss 이다

y는 클래스, xi 는 yi 번째 클래스에 속한 i번째 샘플

d는 embedding feature 의 차원 수 로 512

Wj 는 j 번째 칼럼의 가중치, bj 는 바이어스, 클래스 수는 N 

softmax loss 는 inter-class 의 다양성이나 intra-class 의 유사성을 위한 feature embedding 을 최적화 하지 않아서 성능차이를 유발 할 수 있다

 

2. SphereFace

 

1) 단순하게 sphereface 에서 bias 를 0 으로 고정

2) θj 는 가중치 Wj 와 feature xi 사이의 각도이고

이렇게 logit 을 변형 한다

3) l2 정규화에 의해 ||Wj||=1 로 고정

4) l2 정규화에 의해 ||xi||를 고정하고 s 를 re-scale 한다

 

 

embedding feature 가 hypersphere의 각 feature center 주변에 분산되기 때문에,

xi 와 W(yi) 사이에 additive angular margin penalty 인 m 을 적용해서 intra-class 의 압축성과 inter-class 의 분별력을 증가 시킨다!

또한, 제안된 additive angular margin penalty 가 정규화된 hypersphere 에서 geodesic distance margin penalty 와 같기 때문에, 이름을 ArcFace 라고 지었다고 한다~

 

각 충분한 샘플을 포함하는 8개 identities 의 데이터를 이용해서 Norm-Softmax 와 Arcface loss 를 2d feautre embedding networks 로 학습했을때

Norm-Softmax 는 feature embedding 이 분리는 잘 되지만, 결정 경계가 애매했고

AcrFace 는 근처 클래스들 간 더욱 분명한 마진을 가지는 것을 볼 수 있었다!

 

Numerical Similarity

 

sphereface, arcface,cosface 에서 각각

spherface - multiplicative angular margin - m1

arcface - additive angular maring - m2

cosface - additive cosine margin - m3 가 제안되었는데 수치적으로 유사하다

그래서 이 3가지 loss 를 결합해서 제공을 하고 있다 (combine margin loss)

git (arcface_torch) 의 코드를 보니 m=1.0, m3=0.0 이면 arcface 를 사용하고 그렇지 않고 m3>0.0 이면 combine margin loss 가 사용되도록 작성되어 있다

 

Geometric Difference

 

sphereface, arcface, cosface 는 수치적으로는 유사하게 성능이 좋지만

기하학적인 부분에서는 arcface 가 augular margin 이 geodesic distance 와 완전히 일치하여 더 좋은 기하학적 속성을 가진다고 한다

 

또한 이렇게 binary classification 케이스에서 결정 경계를 비교했을 때

arcface 만 선형적인 angular margin 을 가지고 있는 것을 볼 수 있으며

 

arcface 는 arc-cosine 함수를 이용하여 sphereface 보다 안정적인 학습이 가능하고, 덜 복잡하다

m=1.35 가 수렴에 있어서 어려움 없이 sphereface 와 유사한 성능이 나오도록 하는 값임을 발견했다고 한다

 

Other Intra and Inter Losses

 

1. Intra-Loss

: ground truth center 와 sample 사이의 angle/arc 를 감소시켜서 intra-class 의 압축성을 향상 시키도록 디자인 되었다

2. Inter-Loss

: 다른 center 사이의 angle/arc 가 증가되도록 하여 inter-class 의 분별력이 높아지는 것을 목표로 디자인 되었다

3. Triplet-Loss

: triplet samples 사이의 angle/arc margin 을 확장하는 것을 목표로 하였으며, feature 의 angular 표현을 위해 사용하였다고 한다

 

Conclusion

이러한 접근을 통해 ArcFace loss 를 고안하였고, 이것으로 더욱 분별력 있는 모델을 학습 할 수 있다!

여러 데이터셋 ( lfw, cfp-fp,agedb, ijb-c 등) 에서 아주 좋은 성능을 달성했다

또한 sub center 라는 방식을 적용하면 noise 에 robust 한 모델을 만들 수 있고,  noise 가 너무 많아 사람이 수동으로 정제하기 힘든 대규모 raw web 데이터셋을 자동으로 cleaning 하는데 사용할 수 있다고 한다!

이 부분은 다음번에 가져오도록 하겠다..!