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 하는데 사용할 수 있다고 한다!
이 부분은 다음번에 가져오도록 하겠다..!
