코딩재개발 RSS 태그 관리 글쓰기 방명록
2021-01-19 10:00:49

face_recognition 라이브러리를 이용하면 간단한 얼굴 인식 프로그램을 만들 수 있습니다. 그런데 face_recognition 라이브러리를 설치하기 전에 먼저 준비해줘야 할 것들이 있습니다. cmake와 dlib을 먼저 설치해줘야 합니다.

 

1. cmake 설치

sudo apt install cmake

 

2. dlib 설치

git clone https://github.com/davisking/dlib.git

 

(만약 git이 설치되어 있지 않다면 먼저 설치해주셔야 합니다.)

 

cd dlib

mkdir build

cd build

cmake ..

cmake --build .

 

cd ..

python3 setup.py install

 

(만약 권한 관련 에러가 발생한다면, sudo python3 setup.py install로 해주세요.)

 

dlib 설치는 컴퓨터의 사양에 따라 시간이 좀 걸릴 수 있으니 여유있게 기다리시면 됩니다. cmake와 dlib을 설치하셨다면 이제 face_recognition 라이브러리를 설치하시면 됩니다.

 

3. face_recognition 라이브러리 설치

pip3 install face_recognition

 

4. 얼굴 인식 테스트

먼저 이제 얼굴 인식에 사용할 이미지들을 준비합니다. 저는 제 얼굴을 기준 이미지로 삼아서 여러 얼굴 이미지들과 비교해볼 것입니다. 제 얼굴들만 잘 인식해내는지 테스트해보겠습니다.

 

기준으로 삼을 이미지의 이름은 "my_image.jpg"으로 해주세요. 그리고 테스트할 이미지들은 images라는 폴더를 만들어서 거기에 모두 넣어주세요. 파이썬 스크립트 파일이 있는 디렉토리에 my_image.jpg와 images 디렉토리가 위치해야 합니다. 제가 기준으로 삼은 이미지와  테스트에 사용할 이미지들은 다음과 같습니다.

 

제 이미지

 

 

테스트 이미지들

 

테스트 이미지들 중에 kyohoon.jpg와 kyohoon.JPG는 제 이미지들입니다. 테스트 이미지들 중에서 제 얼굴들을 잘 인식해내는지 한 번 테스트해보겠습니다. 필요한 python 코드는 다음과 같습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# import the libraries
import os
import face_recognition
 
# make a list of all the available images
images = os.listdir('images')
print(images)
 
# load your image
image_to_be_matched = face_recognition.load_image_file('my_image.jpg')
 
# encoded the loaded image into a feature vector
image_to_be_matched_encoded = face_recognition.face_encodings(image_to_be_matched)[0]
 
# iterate over each image
for image in images:
    # load the image
    current_image = face_recognition.load_image_file("images/" + image)
    # encode the loaded image into a feature vector
    current_image_encoded = face_recognition.face_encodings(current_image)[0]
    # match your image with the image and check if it matches
    result = face_recognition.compare_faces(
        [image_to_be_matched_encoded], current_image_encoded)
    # check if it was a match
    if result[0== True:
        print("Matched: " + image)
    else:
        print("Not matched: " + image)
cs

 

자, 그럼 실행해보겠습니다.

 

 

매칭 성공!

 

 

 

8장의 이미지 중에서 제 얼굴들을 잘 인식해냈습니다. Matched가 출력되었으면 동일한 사람으로 인식해낸 것입니다. 같은 사람으로 보지 않았다면, Not matched가 출력됩니다. 다행히 김정은과 트럼프를 저로 인식해내지 않았네요.ㅋㅋ

 

만약 코드 실행 중에 IndexError: list index out of range와 같은 에러[2]가 떴다면, 사진 속에서 얼굴을 검출해내지 못한 것이니, 테스트 이미지에서 그 이미지를 제거한 후에 하시면 제대로 실행될 것입니다.

 

참고자료

[1] ourcodeworld.com/articles/read/841/how-to-install-and-use-the-python-face-recognition-and-detection-library-in-ubuntu-16-04, ourcodeworld, "How to install and use the python face recognition and detection library in Ubuntu 16.04"

[2] github.com/ageitgey/face_recognition/issues/178, ageitgey의 깃헙, "IndexError: list index out of range"

[3] github.com/ageitgey/face_recognition, face_recognition 라이브러리

[4] www.analyticsvidhya.com/blog/2018/08/a-simple-introduction-to-facial-recognition-with-python-codes/, analytics vidhya, "A simple introduction to facial recognition (with python codes)"

 

글을 읽던 중에 궁금했던 부분은 질문해주세요.
칭찬, 지적, 의문, 격려, 감사표현 등을 남겨주세요.
최대한 답변 드리도록 노력하겠습니다.
욕설과 광고를 담은 댓글은 가차없이 삭제합니다.
비밀글