ArcFace(2019) 리뷰

YuJangHoon·2022년 8월 13일
1

본 포스팅은 "ArcFace: Additive Angular Margin Loss for Deep Face Recognition" (CVPR 2019)에 대한 요약이다. 모든 내용과 이미지는 위 논문을 출처로 한다.

(*표시가 붙어있는 단어는 밑에 별도의 설명이 있으니 한번 살펴봐주시면 감사하겠습니다😄)

구분은 하지만 충분히 판별력 있지 못한 softmax loss를 대체하는 ArcFace에 대한 설명이다.

🛠️ 배경 & 문제점

Deep Convolution Neural Network (DCNN) *embedding을 이용한 face representation은 얼굴 인식을 위한 방법들 중 하나이다.

*embedding : 고차원의 데이터를 저차원으로 변환하면서 필요한 정보를 보존하는 것.

이러한 방식은 일반적으로 pose에 대한 normalization을 거친 이후, face image를 small intra-class distance(같은 클래스 끼리의 거리), large inter-class(서로 다른 클래스 사이의 거리) distance를 갖도록 mapping한다.

이전까지는 연구에 크게 2가지 라인이 있었는데

  1. Face의 분류를 위한 softmax classifier와 같은 multi-class classifier
  2. *triplet loss와 같이 embedding을 직접 학습하는 방식

softmax-loss와 triplet-loss 기반 방식 둘 다 얼굴 인식 분야에서 뛰어난 성능을 보여왔다.

하지만 각각 아래 같은 문제가 있었는데,

  • softmax loss의 문제점
    1. linear transformation matrix WW의 크기가 # of class에 선형적으로 비례한다는 점
    2. 새로운 case가 등장할 수 있는 open-set 얼굴 인식 문제에서는 충분히 discriminative하지 않다는 점
  • triplet loss의 문제점
    1. large-scale 데이터셋에서 # of face triplet의 조합 수가 폭발적으로 증가한다는 점
    2. *semi-hard sample mining이 꽤 어렵다는 점이다.

Triplet loss : semi-hard

triplet loss는 간단히 말해 sample된 하나의 point에 대해 positive(같은 class)는 가까울수록, negative(다른 class)는 멀수록 낮아지는 loss이다.


출처 : https://towardsdatascience.com/triplet-loss-advanced-intro-49a07b7d8905

그런데, 선택한 조합이 이미 postive가 충분히 가깝고 negative가 충분히 멀어서 loss가 0인 경우에는 학습에 별다른 도움이 되지 않는다. (Easy)
또한, positive는 너무 멀고 negative가 너무 가까워서 loss가 지나치게 큰 경우는 수렴과정에서 local minima 문제를 일으킬 수 있다 (Hard)
따라서, negative가 postiive보다 멀리 있기는 한데, α\alpha (margin)보다는 멀리있지 않은 학습에 적절한 경우를 고르는 것이 좋다 (semi-hard)

(아래 링크에서 Triplet Loss에 대해서 잘 정리를 해주셨다.)
https://soobarkbar.tistory.com/43


이후에 여러 논문들이 softmax loss의 discriminative power(분별력)을 높이기 위해서 몇가지 변형을 제안했고, 그 중에서 center(centre) loss는 각 feature vector와 그들의 class center 사이의 euclidean distance를 계산한 것으로 intra-class compacteness와 inter-class dispersion(분산)을 보장하는 효과를 보여주었다.
그러나 실제 center을 학습하는 동안 계속해서 update하는 것은 매우 어려운 작업이라는 문제가 있었다.

SphereFace

마지막 Softmax loss로 학습된 DCNN의 Fully Connected Layer의 Weight들이 각 Face Class 들의 center과 개념적 유사성이 있다는 사실을 발견한 후, "WWxx 사이의 각도를 줄이기 위한" Multiplicaptive angular margin penalty (증식하는 각도의 여백 페널티)를 적용하여 intra-class compacteness와 inter-class dispersion의 효과를 얻으려 했고, 이는 훈련된 모델의 더 나은 분별력으로 이어졌다.


Modified Softmax Loss

WWxx 사이의 각도를 갑자기 왜 줄인다는 걸까?
마지막 FC layer에서 WWxx의 내적 결과를 softmax에서 확률로 바꾼다는 점까지는 이해할 것이다.

그렇다면, Wtrue classW_{true\ class}xx의 내적 값이 커져야한다는 점에 동의할 것이고, 만약 w||w||x||x|| 모두 정규화가 되었고 bias가 0인 상태라면 둘 사이의 각도가 줄어들어 cosθcos\theta가 커져야한다는 것도 이해할 수 있을 것이다.

해당 class의 모든 xx들과의 각도가 줄어든 WW는 결국 해당 class들의 중심을 pointing하게 될 것이라는 것도 대략적으로 유추할 수 있다!


출처 - SphereFace: Deep Hypersphere Embedding for Face Recognition(CVPR 2017)


그래서 SphereFace에서는 위의 Table에 나온 것처럼 θ\theta 앞에 정수 mm을 곱하게 하여, 단순히 다른 W보다 작은 각도를 갖게 하는 것이 아니라 적어도 1/m1/m의 각도를 가져야 해당 Class로 분류될 수 있도록 constraint를 주어 더욱 판별력 있는 모델을 만들 수 있도록 하였다.

그러나 angular margin에 대한 중요한 아이디어는 제공했지만, 그들의 loss fuction은 일련의 근삿값 계산을 요구했고, 이는 곧 불안정한 학습으로 이어졌다.

이를 안정화시키기 위해서 sofrmax loss function을 포함한 hybrid loss function을 사용했지만, 학습 과정에서 softmax loss가 대부분을 차지했고 그 이유는 integer-based multiplicative anuglar margin이 굉장히 급한 경사의 logit curve를 그리게 하였고 이것이 수렴을 방해했기 때문이다. (급한 경사와 수렴의 관계는 아래에서 다시 설명한다.)

CosFace

SphereFace의 식과 아래 식을 비교하면 알 수 있듯이, angular margin이라는 개념은 유지하되 target logit (cosine 값)에 직접적으로 margin penalty를 주어서 더 좋은 performance를 보임과 동시에 더 쉬운 구현을 이루어 냈다. 또한 *joint supervision에 대한 필요성을 없애 주었다는 점에서 더욱 발전한 모습을 보였다.

🎆해결방안

ArcFace

논문에서 제시한 ArcFace는 추가적으로 분별력을 증가시키고 학습과정을 더욱 안정화 시키기 위해서, arc-cosine 함수를 통해서 실제 θ\theta, angle을 계산하고 그곳에 직접적으로 angular margin을 더한 후 다시 cosine 함수로 되돌리는 방식을 사용했다.

간단히 말해 θ\thetamm을 곱하거나 (SphereFace), cosθcos\theta에서 mm을 빼는 것(CosFace)가 아닌, cos(θm)cos(\theta-m)으로 각도에 직접적으로 penalty를 주었다는 것이다.

논문에서는 ArcFace Loss가 4가지 장점을 가지고 있다고 이야기한다.

  1. Engaging : 정규화(W, x)된 hypersphere 위에서 arc와 angle 간의 정확한 correspondence 덕분에 *geodesic distance margin을 직접적으로 optimize할 수 있다.

  2. Effective : 10개의 얼굴 인식 벤치마크에서 S-O-T-A performance를 달성했다.

  3. Easy : 오직 몇 줄의 코드만 요구하며, SphereFace와는 다르게 안정적인 성능과 수렴을 보여준다.

  4. Efficient : 무시할만한 수준의 추가적인 computational complexity를 요구한다.


Geodesic distance

2차원 경로 상에서는 최단거리는 두 점을 이은 직선이다. 하지만 3차원 공간의 구와 같은 곳에서는 최단 거리가 Arc, 호를 그리게 된다. 이렇게 최단거리를 더 높은 차원으로 일반화한 것을 Geodesic distance라고 부른다고 한다.


처음에 보여주었던 아래 그림이 ArcFace에 대한 직관적인 이해를 돕는다.

Comparision with SphereFace & CosFace

이전의 두 loss와 ArcFace 모두 target logit에 margin penalty를 적용해서 intra-class compactness와 inter-class diversity를 얻어낸 것은 맞다.

ArcFace의 장점 중 3번째에서 SphereFace보다 나은 점을 언급하기는 했지만, 어떤 부분들이 이전의 Loss Function들보다 나아졌는지 근거와 함께 이해해보자.

Target logit의 기울기

첫번째로, 우리는 더 좋은 판별력을 위해 class의 center과 각 xx들 사이의 각도가 충분히 줄어들기를 원한다.

그런데, 만약 각도가 충분히 줄어들지 않았는데도 Loss가 작게 나온다면 제대로 학습되기 어려울 것이다.

그 경우를 아래 Figure 중 우측의 그래프의 SphereFace에서 확인할 수 있다. SphereFace의 target logit의 급한 경사는 곧 수렴에서의 불안정성을 일으키는 원인이라고 볼 수 있다.

Constant Linear Angular Margin

두번째로, "Engaging" 장점에서 언급한 대로 angular margin이 geodesic distance와 정확한 correspondence를 가지고 있기 때문에, 완전히 linear한 angular margin을 지니고 있는 것을 볼 수 있다.

binary classification case를 시각화한 아래 그림을 통해서 쉽게 이해를 할 수 있는데,
설명을 조금 덧붙이자면, Softmax는 어디에 더 가깝냐만 따지기 때문에 아래와 같은 decision boundary를 가진다.

  • SphereFace는 mθ1m\theta_1이기에 θ2\theta_2가 작은 경우, 그보다 m배 만큼 더 작으면 되기 때문에 θ1\theta_1의 값 자체가 작지 않더라도 (중심에 충분히 가깝지 않더라도) 해당 클래스로 분류하는 경우가 생긴다.

  • CosFace는 θ\theta가 아닌 cosθmcos\theta - m을 하기 때문에 θ2\theta_2는 어느 정도 커지고 θ1\theta_1은 어느 정도 작아지는 형태를 띄기는 하지만, coscos의 특성상 어느 수준 이상부터는 수렴 속도가 급격히 감소할 것으로 예상된다. (필자의 생각이다)

  • 그러나 ArcFace는 cos(θm)cos(\theta - m)이기에 두 loss와 달리 완전히 linear한 decision boundary를 가질 수 있게 한다.

이러한 Margin design에서의 사소한 차이가 model의 학습과정에서 일명 "나비효과"를 일으킬 수 있다고 논문은 언급한다.

+ SphereFace의 개선

추가적으로 SphereFace의 mm은 정수 조건을 가지고 있어 훈련 과정에서의 성능의 수렴이 불안정한 모습을 보였는데, arc-cosine 함수의 적용으로 위의 정수 제한 조건을 제거하였더니 기존의 SphereFace와 비슷한 성능을 어떠한 수렴의 어려움 없이 구현해낼 수 있었다고 이 논문은 첨언하고 있다.

profile
HYU DataScience, ML Engineer - 산업기능요원(4급)

0개의 댓글