본문 바로가기

VISION

[논문] DeepFace: Closing the Gap to Human-Level Performance in Face Verification

 Face recognition task에서 사람은 97.5%의 정확도를 달성하는데, 이전의 모델들은 96%에 그치고 있었다. 이 논문에서는 face alignmentfeature representation 단계의 개선을 통해 정확도를 human level에 근접시켰다.

 

 

Face Alignment

 얼굴인식은 크게 검출 정렬 특징 추출 분류 단계로 이루어진다. 여기서는 정렬 단계에서 모두 정면을 바라보도록 정렬하는 방법을 이용한다. 먼저 input image에서 얼굴의 영역을 검출하고(a), 얼굴 영역에서 67개의 기준점을 잡아 얼굴을 3D 모델로 변환한다(c). 그리고 나서 기준점을 중심으로 나눠진 조각별로 정면을 바라보도록 piece-wise transformation을 진행한다.

 

 

Feature Representation

 정렬된 이미지가 들어오면 CONV1 – MAX POOL – CONV2 단계를 거치며 feature를 추출한다. 이 때 pooling을 할수록 얼굴 이미지의 세부적인 특징을 잃을 수 있기 때문에 첫번째 conv layer 직후 한 번만 max pooling을 적용한다.

 또한 이미 정면으로 정렬되었기 때문에 local convolution을 활용할 수 있다. Local convolution에서는 이미지 전체 영역에 대해 같은 필터를 적용하는 게 아니라 영역별로 다른 필터를 적용하는데, 이미 얼굴 영역으로 crop & frontalize 되어있기 때문에 모든 이미지가 영역 별로 고정된 위치적 특징을 가진다고 가정하고 지역마다 적절한 다른 필터를 학습시킬 수 있다. 따라서 두 번의 convolution 이후 세 번의 local convolution을 적용해 각 영역의 파라미터가 얼굴의 특정 부분에 적합하게 학습되어 인식률을 높이도록 하였다.

 세 개의 local conv 레이어를 거치면 4096 차원의 fully connected layer를 통과시키는데, 이 때 나오는 output이 얼굴을 표현하는 representation 벡터가 된다. 이를 classification 레이어에 통과시켜 어떤사람인지 인식하는 구조이다. 이 과정에서 특징적인 부분으로 매 conv layer 이후 ReLU activation을 사용하는데, 때문에 많은 파라미터값이 0으로 변환되어 sparse network를 형성하고 regularization 효과를 얻을 수 있다.

 

 

Code

 네트워크 구조가 매우 간단하게 이루어져 있어 10개 이내의 레이어만으로 모델을 구성할 수 있다. ReLU activation을 사용하기 때문에 dropout fully connected layer 이후에만 적용된다. Classification layer에서는 클래스 개수만큼의 유닛을 가진 softmax layer를 사용해 가장 확률이 높은 클래스를 추출한다.