발가락이 닮았다: Finding Face Lookalikes using CNN 논문 개요

발가락이 닮았다: Finding Face Lookalikes using CNN 논문 개요

발가락이 닮았다: Finding Face Lookalikes using CNN 논문 개요

초록

한문장씩 from 서론 본론 실험 결론 futurework

1. 서론

흥미 유발. 모티베이션. 왜했는가

  • Face Verification, Identification 의 역사. 적용 분야.
  • Face lookalikes

Our brain compute the complex features in face and decide whether the two faces look alike or not. So instead, we consider what if we can find lookalikes using state-of-the-art methodologies in computer vision.

닮은 사람을 보면 어떤 기분이 드는가? 사람들은 닮은 사람을 찾았을 때 굉장한 흥미를 느끼고 친구들 또는 SNS를 통해 공유하는 편이다.
닮았다는 것은 사실 굉장히 주관적임

컴퓨터 비전분야 에서. 문제.
어떤 문제가 있고 내가 풀고자 하는 문제.
뭐가 되고 있다. 근데 뭐가 안된다. 사람을 잘 찾는데
누구랑 닮았는지에 대한 뭐시기.

기존 닮은 연구가 안된다.

기존연구들

  • face verification에 대한 연구는 있음. 레퍼. Idenificiation 있다. 근데 닮은 얼굴 찾는건 없다.
  • 적절한 데이터셋이 없다.
  • verification/identification 그대로 적용할 수 없는 이유.
    -- 동일 인물이 있다는 가정하에. veri/iden 라벨이 필요하다.

In this paper, we propose a framework which
We gained dataset by crawling
We propose CNN based algorithm to find lookalike

그리고 실험으로. 안드로이드 디바이스에.
실험 결과로 뭘 검증했다. evaluation

2. 본론

전체적인 Framework 설명.
Crawling으로 얼굴 데이터셋을 만든후 VGG-face CNN descriptor 사용하여 Feature들을 다 저장해놓음.
유저가 Android 기종으로 얼굴 사진을 보내면 AWS server 거쳐서 Deep Learning server에서 feature를 뽑고 기존 dataset의 feature들과 비교함. 그리고 가장 가까운 top-4의 feature에 대한 원본 사진을 유저 기기에 return.

2-1 Crawling

어덯게 dataset 모았는지. 우리의 목표는 최대한 일반 사람들의 사진들을 모으는 것이다.
닮은 꼴 찾기를 할 때에 유저들은 셀카를 업로드함.
데이터셋 역시 셀카일 수록 좋은 비교가 가능함.
CelebA 같은 데이터셋은 굉장히 일반적인 시나리오에서 찍은 얼굴사진임.
따라서 셀카를 모으기위해서 Instagram에서 유저 셀카를 모으기로 결정함.

  1. selfeed.com에서 보면 Real-time으로 Instagram에서 #selfie를 보여줌.
    -- #selfie 로 태그된 사진이 매우 많음을 알게 됨.

  2. 비슷하게 우리는 한국인을 타겟팅하므로 #selfie에서 #셀카 로 크롤링 함으로써 양질의 한국인 셀카를 모음.
    -- 한국인 셀카 데이터셋 크롤링 완료

  3. #셀카 로 모은 데이터에는 여전히 이상한 사진들이 많거나, 많은 사람들이 찍혀있음.

  4. Haar Face detection으로 빠르게 얼굴 아닌 것들을 거르고 가장 큰 얼굴만 crop해서 저장함.
    원본 사진도 retrieval을 위해 저장함.

  5. Crop 된 얼굴들을 VGG-face로 feature를 뽑아내서 dim-4096 벡터로 모두 저장함.

2-2 Framework


Framework은 Android, AWS server, DeepLearning server로 구성됨.
Framework의 파트마다 Node.js를 사용하여 통신하게 만듬.

Android

유저 사진을 받는다. AWS server로 사진을 전송.
socket 통신 등은 node.js로 구현됨.

AWS

유저 사진에서 Haar Detection으로 Face Detection을 함.
haar cascade로 frontal face만 찾도록 함.
유저가 보낸 사진에서 얼굴 아니면 reject
또 보안상 유저가 Deep Learning 서버에 직접 접근하지 못하도록 막음.
중간, 매개체 역할임.

2-3 Deep Learning

알고리즘 설명.

VGG-face CNN descriptor을 사용함.
CNN descriptor을 뽑을 수 있도록 공개적 된 model.
face verificiation/identification에서 comptetive 한 성능을 가짐.
Triplet loss로 training 되었음.
우리는 모델을 받아서 맨 뒤에 dim-2622 FC8을 제거해서 feature extractor로 사용함.

caffe/TF.이용한 feature extraction

framework 다 feature extractor로 사용하였다. 두가지 버전을 다 써봄.
Google HackFair라 TensorFlow를 실험적으로 사용해보았음.
Feature만 다루기에는 TensorFlow가 다루기가 더 쉽지만 속도는 Caffe가 더 빠름.
Caffe로 CelebA의 200,000개 사진 feature 뽑는데 1시간 걸림.

Retrieval

데이터셋에 대해
L2 dist를 계산해서 가장 가까운 top-4를 retrieval함.
우리는 L2 dist 대신에 L1.2를 사용했는데 실험적으로 가장 닮아보이는 걸 뽑는 것 같아서 사용함.
여기서 retireval 속도는 10,000장 당 1초 걸림.
Google HackFair 데모에서는 연예인 사진 4만, #셀카 5만장으로 총 9만 장. 약 9 초 걸렸음.
더 닮은 사람을 뽑고 싶다면 이 데이터셋을 키우면 되는데 그러면 retrieval 시간이 늘어남.
이 부분은 PCA로 feature dimension을 줄이던지 해야됨.

3. 실험결과


4. 결론

좋은 retrieval dataset이 반드시 필요.
닮을 꼴을 찾는 Framework을 구현했다.