-
설명
Face Recognizer은 ‘얼굴의 특성(이목구비)’으로 사람 얼굴을 식별하고, 결과를 이름으로 나타낸다. -
결과 도출 방법
딥러닝 알고리즘을 사용하여 ‘방금 찍은 사진 이나 디지털 이미지’를 데이터셋(faceprints)과 비교해서 결과 도출 -
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
pip install -r requirements.txt
-
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
- OpenCV
-
기타 의존 패키지 설치
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/
- On installing opencv:
코드에 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 - 얼굴이 인식될 이미지:
- Original Image - input image를 자른 것
- Aligned Image - 이미지를 align하면 알고리즘의 효과가 높다.
- Landmarks - 감지된 얼굴의 landmarks(얼굴특징점)을 보여준다.
- 감지된 얼굴 - 얼굴이 인식되고, 인식된 얼굴의 이름이 얼굴을 따라 표시된다. 얼굴이 데이터셋에 속하지 않았을 경우, 얼굴은 Unknown으로 라벨링 된다.
- Input Image:
- Original Image:
- Aligned Image:
- Landmarks :
- 감지된 얼굴 :
커스텀 데이터 셋 뿐만아니라 input image의 128 차원의 임베딩을 생성해준다. 이 임베딩은 input image(임베딩)과 데이터셋(임베딩)을 비교하는데 사용된다. 가장 높은 선택을 받은 것이 예측 결과가 된다.
- pyimagesearch에서 큰 도움을 받음. 매우 쉽고 실용적인 예제로 나의 대부분의 개념을 명확히 함.
- Adam Geitgey : Face Recognition의 동작 법
- Face Recognition
- Custom Dataset: 데이터 셋 생성할 수 있도록 도움.
- Must Read Post
- Deep Face Recognition
- Facial Landmarks
- Facial Alignment
- Face Recognition for Beginners
- Face Recognition Basics