시작하기 앞서

본 게시물은 인물인식 최신 논문 정리 글로, 이전 논문들을 이해하지 않았다면 이해하기 힘들 수 있습니다.

처음 보신 분들은 Face Recognition/[Paper Review] 글들을 읽은 후에 볼것을 추천드립니다.

시간이 없으신 분들을 위해 아래 인물인식 알고리즘의 트렌드도 정리해 놓았으니 참고하시기 바랍니다. 

https://mic97.tistory.com/20

 

Face Recognition 트렌드 정리

Face Recognition 카테코리 이전 게시글들 에서 정리했듯이, 다음과 같은 트렌드를 보인다. 1. metric-learning problem 기존 classification 에 사용되는 soft max로는 학습한 이후에 새롭게 추가, 축소 되는 클..

mic97.tistory.com

 

 

개요

2019년 CVPR 논문. Face Recognition 성능향상 논문 트렌드중

Margin based Softmax 에 학습에 적절한 HyperParameter(m,s)를 학습과정내에 adaptive하게 설정.

논문 진행 순서로는 

먼저 Cross entropy와 Softmax에 대한 고찰 이후, cos(theta)로 발전(L-Softmax), truthclass에 대한 margin식으로 발전 시킨다음 식을 간추린 후 m과 s에 대해 plot 하여 확인한 경향성과 gradient 분석으로 convergence를 좋게 해줄 수 있도록 m과 s를 다른 파라미터의 식으로 나타낸다 . 이때 fixed와 adaptive parameter 각각 후보군을 정한 후 실험하여 결과를 확인 한다.

 

 

 Loss 고찰

(1). Cross Entropy loss with softmax

 

(2) Softmax식에 집중.  f=x*w

margin based softmax 한정으로 f를 아래 식과 같이 사용. Truth class 일경우에만 magin 적용.

(3) margin based softmax

 

(4) margin을 적용한 cross entropy loss. 정확히는 한 instance에 대한 loss이고 summation을 해야 학습할때 사용하는 loss가 된다.

 

 

Hyper parameter s에 대한 고찰(margin이 없는 식에서)

(5) theta에 따른 P의 범위.

(4)식에서 True class(분모에서 왼쪽항)는 완전히 다 맞추고(theta=0인 경우), Negative class(분모에서 오른쪽항)은 완전히 틀리다고 분리하는 경우(theta=pi/2)일때 lower boundary를 이루고 이와 반대상황 일때 upper bound를 얻는다. 참고로 C는 클래스의 총 갯수로, negative class는 총 C-1개이다. 

다시 loss 식에서 P를 보면, Negative class 부분을 B로 아래식처럼 치환 할 수 있는데,

Negative class를 B로 나타냄

 

학습 중 neagtive class의 mean을 plot해보면  pi/2 근처에 constant하게 분포한걸 확인할 수 있고, negative class 대부분은 정답인 클래스와 similarity가 거의 없다고 생각 할 수도 있다.  그러므로 B를 상수로 생각 할 수 있고 그 값은 아래와 같이 C-1이 된다.

(좌) C=2000일때 s값에 따른 P,(우) C=20000일때 s값에 따른 P

B=C-1로 바꾼 P 식을 C값 두경우와 s값에 따라 plot 하면 위와 같다. s가 작을경우 P를 0에서 1까지 전부 활용하지 못하고, 너무 클경우 각도가 커져도(잘못 추론해도) P=1로써 페널티를 주지 못한다.

 

 

Hyper parameter m에 대한 고찰(scale, s가 없는 식에서)

s에서 했던 고찰과 똑같이 P에서 B=C-1로 고려 후 c값 두경우와 m값에 따라 plot.

margin 추가
(좌) C=2000일때 m값에 따른 P,(우) C=20000일때 m값에 따른 P

m이 클수록 조금만 틀려도(theta가 조금만 높아도) 많은 페널티를 부과하고 feature와 해당하는 class의 weight사이의 각도를 매우 작게끔 학습한다. 이것이 margin based softmax를 사용하는 이유이며 따라서 m은 클수록 좋지만 일정수준 이상의 m은 수렴문제를 발생시킨다.  m이 지나치게 높을경우 theta 가 0과 매우 가까울때를 제외하고 모든 경우에서 loss를 부과하기 때문이다.

 

Hyper parameter m,s 고찰 정리

(1)scale parameter(s)와 margin(m)은 prediction probability(P)에 큰 영향을 미친다. 

작은 s는 P의 maximum value를 제한.

너무큰 s는 모든 P를  1로 만든다.

너무작은 m은 final angular margin을 regularize하는데 충분히 강하지 않음.

너무 큰 margin은 학습의 수렴문제를 일으킨다.

 

(2) m과 s는  cos(theta)에서 P로 매핑하는 함수에 인자로써 영향을 미친다.

구체적으로는, small s와 large m은 theta와 P 함수에서 supervision을 강하게 준다.

반대로, large s 와 small m은 supervision을 약하게 한다.

m과 s가 서로 반대경향으로 P에 비슷한 영향을 주기때문에 하나의 parameter만 조작하여 P를 조절하는것이 가능할것이고, 여기서는 s가 m이 하는 supervision의 역할 말고도 P의 범위도 결정짓기 때문에 m이 아닌 s를 중점으로 실험한다.

 

 

Cosine-based softmax loss with Adaptive scaling, AdaCos

 

Automatically choosing a Fixed scale parameter

m과 s는 같이 P의 영향을 주는데 그 중, m은 P 커브의 shit만 변화시키지만

s는 P의 boundary, P 커브의 curvature도 변화를 주기때문에 계산의 편의를 위해서 원본식에서 m을 제거하고 s만 automatically tune하는것을 목적으로 한다.

 

s의 적절한 값을 찾는 과정은 다음과 같다.

loss를 편미분하여 gradient가 원하는 theta값에따라 적절한값(0과 NAN이 아닌값)안에서 변화시켜주도록 분포를 만들어주면된다. 이때 cross entropy를 미분하게 되면 아래식과 같고 결국 P와 그 미분값에 따라 gradient가 결정된다.

 

앞선 과정에서 P에대한 분포를 알아 봤듯이, s값에 따라 P vs theta 커브의 curvature와 shift가 이동하게 되는데 이것을 조절하여 학습이 잘되도록 theta를 2/pi와 0의 중간지점인 pi/4에서 gradient 최대값을 가지도록 하는 s값을 찾는다.

본 논문에서는 P를 theta에 대하여 두번 미분하여 0이 되는지점을 찾아 P의 theta에 대한 gradient가 최대가 되는 지점에서의 s값을 찾는다.

absolute gradient value가 최대가 되는지점

 

그때의 s 값

theta=pi/4인 지점에서 최대 gradient 값을 갖기를 원하니 theta=pi/4를 대입하여 계산해보면 다음과 같다.(B=C-1로 근사)

Automatically-chosen fixed scale parameter

이 scale 값은 한번 정해지면 fix 되므로 fixed scale parameter라 명명한다.

 

Dynamically adaptive scale parameter

실제와의 차이점

fixed를 구할때 B=C-1 (negative class들의 weight과 feature사이의 theta를 pi/2로 근사)를 가정하였고, True class의 theta들도 학습에 따라 달라지는것을 신경쓰지 않았다.

하지만 실제 모델은 학습할 수록

1) True class의 wieght과 feature사이의 theta값은 작아지므로 점점 supervision이 약하게 되고,

2) negative class의 theta도 정확히 pi/2가아니므로  B의 값도 C-1이 아니게 된다.

-> batch 내에서의 avg값과 med값을 사용하자!

그때의 s 값

해결법

1) 위 식에서 theta0는 gradient가 최대가 되는 지점으로, 학습때마다 줄어드는 theta의 값에 맞춰서 계속 supervision을 주게 하기 위해, t번째 iteration일때,   true class theta의 batch 내 median 값을 사용.

2) B=c-1이 아닌 B의 t번째 iteration일때 배치내  average값을 사용하여 조금 더 이론에 맞게끔 근사. 이때 B(t)에도  s(t)가 들어가므로 s(t)대신 s(t-1) 사용.

위 사항을 고려한 새로운 dynamic scale parameter 값은 다음과 같다.

완성본

Dynamic scale parameter. t=t번째 iteration. avg,med은 모두 배치내 연산.

 

위 2)에서 말했듯이 B를 구하는데 s(t-1)이 사용되므로 initial s, s(0)의 값이 필요한데 이값으로 전 단락에서 구한 fixed scale parameter를 사용하고, 조금더 supvervision을 높이기 위해 theta(t)의 median값을 pi/4가 넘지 않도록 한다. 정리하면 다음식과 같다.

학습의 가능성을 보기 위해 미분을 보면 다음과 같고

기존에 fixed 하게 s가 곱해지는것이 dynamic 한 s(t)가 곱해지는것을 제외하고는 softmax와 동일하다.

 

실험

학습 데이터 : CASIA-WebFace, MS1M  (자체 clean)

검증 데이터 : LFW, MegaFace(배포중단), IJB-C

비교 margin : l2-softmax, CosFace, ArcFace

 

LFW 결과
Training 중 scale 변화
Training중 theta 변화

 

IJB-C 1:1 결과
IJB-C 1:1 결과

 

IJB-C결과에서 보이듯이 FAR이 낮을때 좋은 결과를 보여준다.

직관(insight)

1) loss식을 몇가지 가정으로 간단히 하여 s와 m을 plot한 후 경향성을 봄. 

 

 

2) 미분을 활용하여 학습이 잘되는 parameter를 찾음 

 

 

3) True class의 Theta가 학습중 0에 가까워진다는것을 활용한 adaptive scailing 

batch내 Theta 분포 확인함으로써 학습이 잘됐는지 비교 가능할듯 

출처

1) AdaCos 논문 원본 :

https://arxiv.org/abs/1905.00292

 

+ Recent posts