DeepLearning

Face Recognition

MathematiciantoDatascientist 2021. 12. 29. 16:35

본문은 Andrew Ng 교수님의 Coursera Deep Learning Specialization 과정의 일부임을 밝힌다.

 

What is Face Recognition ? 

 

Face verification 과 Face recognition 을 비교해보자

1) Verification : Input ( Image, Name/ID ) --> Output ( Claimed Person [ 이미 등록된 인물인지 여부 ])

2) Recognition : 

Assume that --> Has a database of k persons

Input ( Image ) --> Output ( Input Image 의 인물이 등록된 k persons 과 일치하는지 대조 ) : recognized or not recognized

 

Input Image 가 대체로 단 한장의 사진일 것 이다. 그렇다면 단 한장의 이미지로 Convolutional Neural Networks or Classification (M.L) 의 처리가 학습되기란 쉽지 않다.

 

위의 문제점을 해결하기 위하여 제안된 것은 One-Shot Learning 이다.

 

One-Shot Learning 

 

Basic 한 이미지 인식 과정을 살펴보면

Input --> Conv layer --> softmax ( #recognized person + 1 [not recognized] )

이 보편적 과정이 극히 작은 training set 에서는 제대로 working 하지 않는다는 것. 

 

Learning a "Similarity" function

Input 이미지와 데이터 베이스에 존재하는 이미지 간의 차이 정도를 나타내는 함수이다.

위와 같이 임의로 설정한 threshold 값을 기준으로 verification 을 진행한다.

 

Siamese Network

 

위의 도식화를 간단하게 살펴보면 이것은 기존에 CNN 과정과 대부분이 일치하고 output 을 도출하는 softmax layer 가 존재하지 않는 것이다. 각각 fully connected layer 에서의 차이의 크기로 similarity function 을 구성한다.

 

Learn parameters 는 

x(i) , x(j) 가 동일한 사람이라면, similarity function 은 작을 것이며, 동일한 사람이 아니라면 커질 것 이다.

이런 기준에 근거하여 학습을 진행한다.

 

Triplet Loss

baseline 이 되는 이미지와 Positive, Negative input image 에 대하여 손실함수를 정의하는 방법이다.

정확한 설명은 아래의 이미지로 대체한다. (강의록에 있는 내용에 언급해주셨던 보안점을 기록하였음)

손실함수에 대한 정의

Training 을 진행하는 동안 만일 A, P, N 을 랜덤하게 선택한다면 d(A, P) + alpha <= d(A, N) 은 쉽게 만족된다.

여기서 Training 을 어렵게할 수 있는 것은 d(A, P) 와 d(A, N) 이 거의 유사한 경우이다.

이 경우 alpha 를 계속해서 줄여나가며 학습을 진행할 수 도 있다.

 

결과적으로 앞서 구했던 similarity function 을 이용하여 최종 layer 에서 Logistic regression 으로 학습을 진행하면 face recognition task 가 마무리된다.