Sub-center ArcFace: Boosting Face Recognition by Large-scale Noisy Web Faces
Problem
- ArcFace의 목표는 두가지인데, 하나는 각 샘플을 positive 클래스의 center로 밀어 intra-class의 compactness를 높이고 동시에 샘플들을 negative 클래스의 center로부터 멀어지게 하여 inter-class discrepancy를 높이는 것이다.
- 만약 노이즈 샘플이 있다면 positive 클래스에 제대로 속하지 않게 되어 큰 값의 잘못된 loss가 발생될 것이다.
- 하지만 노이즈 샘플을 없애는 것은 사람이 직접 작업해야하여 큰 DB를 정제하는 작업은 쉽지 않다.
Essense
모든 샘플을 하나의 positive center에 가깝게 하는 대신, 클래스마다 K개의 sub-center를 구성하고 샘플이 아무 sub-center로만 가까이 가면 되도록 학습고자 하였다.
- 하나의 dominant sub-cetner로 대부분의 얼굴 들이 모이고, 나머지 non-dominant sub-center로 모인 얼굴들은 어려운 얼굴이거나 노이즈인 얼굴들이 되도록 의도하였다.
- 그 다음, 약하거나 노이즈에 해당하는 sub-cetner들은 제거하고 사용하여 discriminative power를 높였다.
Detail
각 인물마다 충분히 큰 수의 를 정하고, embedding feature 에서 sub-center로 보내는 가중치 를 이용하여 subclasss-wise한 유사도 점수 를 계산할 수 있다.
이 subclass-wise한 유사도 점수에 max pooling을 적용하여 class-wise한 유사도 점수 을 계산할 수 있다.
이 유사도 점수를 이용하여 ArcFace loss를 적용하였다.
- 여기서
가 충분히 크다면 모든 학습 데이터에 대해 복잡한 분포를 잡아내는 것이 가능하다.
Max pooling을 사용하지 않고 다른 전략을 사용해볼 수 있다. 다음 표에 4가지 전략에 대한 비교를 나타내었다.
- (1)에서 가장 가까운 intra-class를 선택하는 것은 intra-class contraint를 relax하고 노이즈에 robust하도록 만들어 준다. 가장 가까운 negative class를 선택하는 것 또한 inter-class contraint를 향상시켜 더 복잡한 모양의 분포를 잡아낼 수 있게 해준다. 하지만 close-set 노이즈에는 약한 모습을 보인다.
- (2)로 학습한 것은 inter-class의 초기화 상태가 orthogonal 한 경우 수렴하지 못할 때가 있고, loss에 inter-class간 비교가 없어 학습이 불안정한 경향을 보인다.
- (3)과 (4)는 sub-class들이 발전하지 못하고 하나 지점으로 보이게 되어 노이즈에 취약하게 된다.
Sub-center ArcFace로 학습하였을 경우, 샘플들을 다음 4가지 중 하나에 속하게 된다. 아래 그림은 MS1MV0 DB에 대하여 K=3를 이용하여 학습한 결과와 K=1를 이용하여 학습한 결과를 예시로 든 것이다.
- (1) Dominant sub-class에 속하고 그 각도가 작은 clean한 샘플 (57.24%)
- (2) Dominant sub-class에 속하지만 그 각도가 큰 노이즈 샘플 (12.40%)
- (3) Non-dominant sub-class에 속하는 어렵지만 clean한 샘플 (4.28%)
- (4) Non-dominant sub-class에 속하는 노이즈 샘플 (26.08%)
- (d)는 non-dominant sub-class속하는 샘플이 dominant sub-center와의 각도를 보인 것이다. (a)와 (d)를 고려했을 때, angle threshold를 70 ~ 80도 사이로 정하면 대부분의 노이즈 샘플을 drop할 수 있는 것을 알 수 있다.
이러한 통계로부터 intra-class compactness를 얻는 학습법을 제안한다.
- 먼저 네트워크를 충분히 학습한 후 non-dominant sub-center를 drop한다. 동시에 노이즈 데이터를 drop할 수 있는 threshold 또한 얻을 수 있다.
- 그 다음 정제된 데이터를 이용하여 모델을 스크래치부터 다시 학습시킨다.