Facial Landmarks - 얼굴 특징점

1 분 소요

며칠 전에 Python Face Recognition에 대한 글을 올렸습니다. Face recognition은 다음과 같은 과정을 거칩니다. 이 중에서, 2번째 단계인 얼굴의 특징점을 추출하는 단계는 아주 재미있습니다.

  1. 이미지에서 얼굴만 분리
  2. 얼굴의 특징점 (facial landmarks) 추출
  3. 얼굴 위치 교정과 투영
  4. 교정된 얼굴을 인코딩
  5. 기존 데이터베이스와 비교하여 가장 비슷한 얼굴 찾기

인터넷 상에 아래 그림과 같이 웹캠 영상에서 실시간으로 얼굴의 특징점을 찾아내는 재미있는 예제가 있어 소개하고자 합니다.

realtime-facial-landmarks

사이트에 방문해 보세요. dlib 패키지를 이용하여 구현된 파이썬 소스코드에 대한 설명이 잘 되어 있습니다. e-mail 주소를 적으면 소스코드를 다운받을 수 있습니다.

소스코드를 받으신 후, 다음 명령을 내리면 웹캠 영상에 실시간으로 얼굴의 특징점이 나타납니다. 직접 해 보시면 더 재미있습니다.

(py3) $ python video_facial_landmarks.py --shape-predictor shape_predictor_68_face_landmarks.dat

이 예제에서 추출하는 68개의 특징점은 아래 그림과 같습니다. (이 그림은 여기에서 가져왔습니다.)

68-facial-landmarks

이것을 응용하면 여러가지 재미있는 애플리케이션을 만들 수 있습니다.

예를 들어, 점 36과 39, 37과 41, 38과 40의 거리를 측정하면 눈의 좌우와 위아래의 비율을 측정할 수 있습니다. 좌우 거리에 비해 위 아래 거리가 너무 짧고, 그 시간이 일정시간 지속되면 그 사람은 자고 있다고 판단할 수 있습니다. 이 것이 졸음 측정의 원리 입니다.

입 주위 점의 위 아래 거리를 측정하면 입을 벌리고 있는지 다물고 있는지 알아낼 수 있죠.

참고 사이트