개요 

Face recognition 발전 방향중 Loss function변화를 통한 성능향상, 그중에서도  Classification loss 에 해당.

 

설명

본 블로그 글중 'Open set/Closed set...'에서도 언급했었는데, Face Recognition은 위 사진처럼 Separable하게 할건지 Discriminative 하게 할건지중 open set을 위해서 단순히 class 별로 분리하는 hyper plane을 찾는것(classification)을 넘어서 추가 클래스를 데비해 같은 클래스끼리 가까이 하고 다른클래스는 멀리 위치 시키는 mapping을 수행해야한다.

center loss는 그것을 수행하기 위한 방법중 하나이다.

 

 

Classification은 다음 사진과 같은 문제가 있다.

같은 클래스내에서도 variation이 있기 때문에 Separable 하더라도 충분히 discrimnative 하지 않다면 Face Recognition 성능 저하를 일으킨다.

-> Center loss 를 이용해 discriminative 하게 만들자.  식은 다음과 같다.

mini batch 안에서 각 class 마다 class center를 정한후 class에 속하는 sample들을 class center와 가깝게 위치하도록 loss 로 잡아준다. 이때 center는 feature가 바뀌게 되면 새롭게 업데이트 된다. 

원래는 모든 데이터셋을 가지고 class 별로 center 를 구하는것이 맞으나 inefficient, impractical 하므로 

1. mini-batch 내에서 center 구함.

2. 매 iteration 마다 각 클래스 내의 feature들을 averaging 하여 center loss 를 구하고 이를 사용하여 center를 업데이트함.

위 두가지 공식을 가지고 구하게 된다. 정리된 식은 다음과 같다. 

적용되는 loss = classification loss + lamda * Center loss

최종 Loss는 inter class간 떨어뜨리기 위한 Classification Loss, intra class내에서 뭉쳐있게 하기 위한 Center loss를 더한값으로 사용하여 Inter는 separate 하면서 동시에 intra는 compact하게 만든다.

 

위 내용들을 적용시킨 최종 러닝 알고리듬은 다음과 같다.

 

 

lambda(intra를 inter에 비해 얼마나 중요시 여길거냐) 에 따른 분류되는 embedding된 data들

 

출처 : Yandong Wen, et al. , "A Discriminative Feature Learning Approach for Deep Face Recognition" 2016, ECCV

출처 : www.slideshare.net/JisungDavidKim/center-loss-for-face-recognition

+ Recent posts