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)"
'Dev > python' 카테고리의 다른 글
[python] 넘파이 배열에서 어떤 값의 위치를 알고 싶다면, np.where 함수 (0) | 2021.03.15 |
---|---|
[python] matplotlib로 플롯 그릴 때 한글 깨짐 문제 해결 방법 (윈도우) (2) | 2021.03.08 |
[python] 외장 웹캠을 사용할 때 cv2.VideoCapture(1)로 했는데 안되면? (4) | 2021.01.28 |
[ubuntu+python] 특정 사람의 얼굴만 검출하기(face_recognition+dlib+GPU) (9) | 2021.01.26 |
[Anaconda+python] 아나콘다 스파이더에서 반복되는 변수명 한번에 다른 것으로 바꾸려면, Ctrl + R (2) | 2021.01.11 |
[python] 해당 경로가 디렉토리인지 파일인지 확인하는 방법 (0) | 2021.01.09 |
[python] cv2.imread, cv2.imwrite 한글 경로 인식을 못하는 문제 해결 방법 (2) | 2021.01.08 |
[python] 어떤 디렉토리 내에 존재하는 모든 이미지 파일들의 경로 리스트 만들기 (0) | 2021.01.08 |