Skip to content

Latest commit

 

History

History
151 lines (113 loc) · 6.56 KB

README_in_Korean.md

File metadata and controls

151 lines (113 loc) · 6.56 KB

Face Recognizer(얼굴 인식기)

  1. 설명
    Face Recognizer은 ‘얼굴의 특성(이목구비)’으로 사람 얼굴을 식별하고, 결과를 이름으로 나타낸다.

  2. 결과 도출 방법
    딥러닝 알고리즘을 사용하여 ‘방금 찍은 사진 이나 디지털 이미지’를 데이터셋(faceprints)과 비교해서 결과 도출

  3. k-NN model 사용
    분류를 위해서 k-NN 모델 i.e. k-Nearest Neighbor classifier을 사용하였고, 이미지 유사성은 ‘유클리디안 거리’를 사용하여 비교하였다.

사전 요구사항

Build and install dlib library(해당 repository clone 한곳에서 시작)

pip install cmake (cmake 없을 시)    
git clone https://github.com/davisking/dlib.git
cd dlib
mkdir build
cd build
cmake ..
cmake --build
cd ..
python setup.py install

필요한 패키지 설치

Windows:

pip install -r requirements.txt

Linux:

  • Setup environment

    sudo apt-get update
    sudo apt-get upgrade
    
  • OpenCV를 위한 패키지 설치

    sudo apt-get install build-essential cmake unzip pkg-config
    sudo apt-get install libjpeg-dev libpng-dev libtiff-dev
    sudo apt-get install libjasper-dev
    sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
    sudo apt-get install libxvidcore-dev libx264-dev
    sudo apt-get install libgtk-3-dev
    sudo apt-get install libatlas-base-dev gfortran
    sudo apt-get install python3.6-dev
    sudo apt-get install libboost-all-dev
    
  • OpenCV 설치

    • OpenCV
      pip install opencv-python
      
    • OpenCV Contrib
      pip install opencv-contrib-python
      
  • 기타 의존 패키지 설치 pip install -r requirements.txt

    오류 발생 시 해결

    • On installing opencv: https://www.pyimagesearch.com/2018/05/28/ubuntu-18-04-how-to-install-opencv/
    • On dlib: https://www.pyimagesearch.com/2017/03/27/how-to-install-dlib/

코드에 input images의 path 경로 추가하고 (args={} 안의 내용을 수정해야함) , 실행:

python FaceRecognizer.py

동작 과정 설명

  • 인식할 얼굴이 있는 이미지(e.g., input image)를 로드한다.
  • 얼굴이 감지되고 분할된다.
  • 얼굴이 바르게 align 되어있지 않으면 align 해준다.
  • 얼굴 구조에서 Landmarks(e.g., 68 (x, y) 좌표) (=얼굴 특징점) 을 감지한다.
  • 감지된 face landmarks를 인코딩 한다. (e.g., 이미지의 128-d 임베딩 생성).
  • 인코딩 된 input image는 k-NN 모델을 통과하여 분류된다.
  • k-NN 모델은 가장 높은 정확도의 이름을 반환해준다.

결과물:

  • Input Image - 얼굴이 인식될 이미지:

Input Image

  • Original Image - input image를 자른 것

Original Image Original Image!

  • Aligned Image - 이미지를 align하면 알고리즘의 효과가 높다.

Aligned image Aligned Image

  • Landmarks - 감지된 얼굴의 landmarks(얼굴특징점)을 보여준다.

Landmark

  • 감지된 얼굴 - 얼굴이 인식되고, 인식된 얼굴의 이름이 얼굴을 따라 표시된다. 얼굴이 데이터셋에 속하지 않았을 경우, 얼굴은 Unknown으로 라벨링 된다.

Detected face




또다른 인식 예시:

  • Input Image:

Input Image

  • Original Image:

Original Image

  • Aligned Image:

Aligned Image

  • Landmarks :

Landmarks

  • 감지된 얼굴 :

Detected Face


encode-faces.py

커스텀 데이터 셋 뿐만아니라 input image의 128 차원의 임베딩을 생성해준다. 이 임베딩은 input image(임베딩)과 데이터셋(임베딩)을 비교하는데 사용된다. 가장 높은 선택을 받은 것이 예측 결과가 된다.

DAT file

Dat File 다운로드 링크

도움 및 참고