/facial-emotion-detector

이미지 표정인식 과제 및 데이터

Primary LanguagePython

facial-emotion-detector

이 페이지는 얼굴 표정 인식에 관한 논문을 구현한 결과물입니다. :

차례

  1. 프로젝트 소개

    1. 논문 소개
    2. 구현 과정 파이프라인
    3. 데이터 소개
  2. 구현 결과 설치 및 실행

    1. 실행 환경
      1. OS 환경
      2. 필요한 설치 환경
    2. 파일 구조
      1. 주요 파일 설명
      2. 전체 구조
      3. 실행 방법
  3. 분류 결과

    1. 프로그램 기능
      1. 성능 평가
      2. 모델 학습
    2. 프로그램 기능 제약
  4. 참고


Train / Test 에 사용한 Dataset

본 연구에서는 웹사이트 Kaggle에서 제공한 데이터를 사용하여 [얼굴인식]과 [표정분류]로 구분된 두 단계를 거치는 얼굴표정 자동 인식 시스템을 구축하였습니다.

-https://www.kaggle.com/c/challenges-in-representation-learning-facial-expression-recognition-challenge

Dependencies

위 코드는 windows10 pro 환경에서만 실행해보았습니다. 필요한 패키지들은 이미 상당부분 Anaconda에 포함이 되어 있으므로 이를 이용하면 편리할 것입니다. (dlib와 openCV는 따로 설치를 해줘야 하는데, 다음의 명령어로 설치해보시길 바랍니다.)

conda install -c conda-forge dlib
conda install -c conda-forge opencv

실행방법

$ python python facial_expression.py --classifier <classifie-file-path> --image <input-image-path> --font_size <font_size> --font_width <font_width> --rec_size <rectangle_width>

<input-image-path> : 표정을 찾고자 하는 이미지

<classifie-file-path> : 표정분류기

<font_size> : 표정을 표시할 폰트의 크기

<font_width> : 표정을 표시할 폰트의 두께

<rectangle_width> : 얼굴 영역을 표시할 박스의 두께

Example

python facial_expression.py -c svm_new.pkl -i sunny1.jpg -f 4 -w 4 -r 4

Teaser

python facial_expression.py -c svm.pkl -i example_img/1.jpeg -f 0.3 -w 1 -r 1
python facial_expression.py -c svm.pkl -i example_img/2.jpeg -f 0.3 -w 1 -r 1
python facial_expression.py -c svm.pkl -i example_img/3.jpeg -f 0.3 -w 1 -r 1
python facial_expression.py -c svm.pkl -i example_img/4.jpeg -f 0.3 -w 1 -r 1

Teaser Teaser Teaser Teaser

Step1: Face detects


본 연구에서는 Python API인 OpenCV-Python 라이브러리(Python 3.6.0 version)를 이용하였고 OpenCV에서 제공하고 있는 cascade기반으로 미리 학습된 정면 얼굴 데이터를(haarcascade_frontalface_default.xml) 다운받아 정면 얼굴을 식별하였습니다.

Step2: Face landmarks


Teaser

이미지에서 사람 얼굴의 영역을 찾은 후에는, 얼굴 부근에서 표정을 구분할 수 있도록 얼굴의 구성 요소들을 찾아야 합니다. 본 연구는 얼굴에서 68개의 랜드마크로 얼굴의 구조를 찾는 방법을 사용하였습니다. 이 방법에서는 위 그림과 같이 각 얼굴의 특정 포인트들을 기계학습 알고리즘을 이용해 훈련시키고, 훈련 데이터에 기반하여 새로운 데이터가 들어왔을 때 다양한 얼굴에서 공통된 68개의 포인트들을 찾을 수 있습니다. 이를 위해 dlib 라이브러리를 이용하였고, 68개의 점이 학습된 모델 파일을 다운받아 shape_predictor_68_face_landmarks.dat 사용하였습니다.

Contributors

Reference