연구실에서 다른 실험을 계속 진행하느라 얼굴 인식을 손 놓게 되어 작성을 중단했었는데 천천히라도 다시 작성해보겠습니다. 다소 설명하는 퀄리티가 떨어져도 이해해주시면 감사하겠습니다.

 

지난 글들까지는 얼굴인식 설명, python 설치, cuda, cudnn 설치 등까지 진행한 것 같네요.

 

다음으로 python 편집 프로그램을 설치하도록 하겠습니다.

 

둘 중 하나로 정하시면 되는데 1개는 PyCharm이고 하나는 Visual Studio Code 입니다.


Pycharm 설치

Pycharm이란? JetBrain에서 만든 전문 개발자용 Python IDE

https://www.jetbrains.com/ko-kr/pycharm/download/#section=windows

위 주소로 방문하여 설치하시면 됩니다.

둘 중 학생이라면 Professional(리눅스 서버로 원격 파이썬 실행 가능) 일반인이라면 Community를 설치해주세요.


Visual Studio Code

https://code.visualstudio.com/

python 외에도 다양한 언어를 편집할 수 있고 또 원격 리눅스 서버도 사용 가능합니다.


PyCharm과 VSC(Visual Studio Code)는 하나의 편집기이자 디버깅 툴입니다. 초심자들이라면 메모장이나 atom, notepad++ 이런 프로그램 쓰지말고 무조건 사용하시길 바랍니다.

 

저는 Ubuntu OS, Python(Anaconda3 가상환경), Pycharm을 이용하여 앞으로의 설명을 진행하겠습니다.


Ubuntu 18.04 → OS

Python(Anaconda3) → 3.7 혹은 3.8

필요 python 패키지들(pip install numpy, pip install opencv-python 등등 입력하여 설치)

  • numpy
  • matplotlib
  • pillow
  • opencv-python
  • opencv-contrib-python
  • torch
  • torchvision
  • pandas
  • sklearn
  • scikit-image
  • PyQt5
  • 위 항목 외에 import 오류가 뜨면 pip install (오류가 뜬 패키지이름) 을 치면 해결 될 겁니다.

Pycharm → 코드 편집 →원격 리눅스 서버로 코드 전달 및 실행 → 결과 return 및 디버깅

putty → 원격 리눅스 서버 터미널 작업용

winscp → 원격 리눅스 서버 파일 주고 받기용

 

위 정도만 사용할 줄 알면 됩니다.


얼굴 인식에 대한 간단한 Framework

얼굴 인식은

  1. 이미지 입력(opencv, pillow, scikit-image 등)
  2. 입력 이미지 Transform(일반적으로 Normalize정도만)
  3. 얼굴 검출(torch [GPU])
  4. 얼굴 검출 영역 Crop
  5. Crop한 얼굴 이미지 Normalize
  6. 얼굴 특징 추출 네트워크(torch [GPU])
  7. 얼굴 특징 벡터 추출(일반적으로 (B,N) 모양으로 출력된다)
    여기서 B는 Batch Size(입력 얼굴 개수), N은 얼굴을 나타내는 특징 개수
  8. 추출한 특징 벡터와 기존 저장되어 있던 사람들의 특징 벡터를 전부 다 거리 계산
    여기서 거리 계산에는 Euclidean distance와 cosine similarity가 있다. %로 보고 싶으면 cosine similarity의 범위가 -1~1로 나타나기 때문에 더 적합

영어로 나타내면

  1. Input Image
  2. Image Transform
  3. Face Detect using detector(usually YOLO face detector, mtcnn)
  4. Crop with face detector result(x, y, w, h)
  5. Normalize Cropped Face image
  6. Input to Face Recognition Network
  7. Get face feature vector from the network
  8. Compare probe& gallery feature vectors by using distance metrics(Euclidean distance or cosine similarity)

입니다.

 

제가 글을 쓰기 전까지 좀 더 찾아보고 싶으면 영어로 친 내용들을 구글링 해보면 쉽게 도움 받을 수 있습니다.

 

깃허브에도 많은 자료들이 올라와 있으니 한 번 찾아보세요~!

 

그럼 다음에 또 글 올리겠습니다.

+ Recent posts