로메오의 블로그

[Facial Recognition] 단체사진에서 인원수 알아내기 본문

Backend/Python & Blockchain

[Facial Recognition] 단체사진에서 인원수 알아내기

romeoh 2019. 7. 19. 04:09
반응형

프로젝트 설정

$ python3 --version
Python 3.7.4
$ cd /my/project/path
$ mkdir facial_recognition
$ mkdir facial_recognition/img facial_recognition/img/group
$ code ./facial_recognition

 

img/group 폴더에 단체 사진을 넣습니다.

 

라이브러리 설치

$ pip3 install opencv-python
$ pip3 install opencv-contrib-python
$ pip3 install cmake
$ pip3 install dlib
$ pip3 install face_recognition
$ pip3 install flask

findfaces.py

$ touch findfaces.py
import face_recognition

image = face_recognition.load_image_file('./img/group/AFP_1HX9KB_1561790986947_1561791001208.jpg')
face_locations = face_recognition.face_locations(image)

# 각 얼굴의 coordinate를 표시한다.
print(face_locations)
$ python3 findfaces.py
[(14, 161, 50, 125), (42, 261, 78, 225), (18, 353, 54, 317), (54, 453, 90, 417)]

결괏값에 4개의 coordinates가 Array로 표시됩니다.

(top, right, bottom, left) 순서입니다.

(사진에 5명 있는데, 제일 오른쪽의 흑인 분은 인식 못한듯...)

 

import face_recognition

image = face_recognition.load_image_file('./img/group/AFP_1HX9KB_1561790986947_1561791001208.jpg')
face_locations = face_recognition.face_locations(image)

# 각 얼굴의 coordinate를 표시한다.
# print(face_locations)

# 사진에 있는 인원수를 반환한다.
print(f'사진에는 모두 {len(face_locations)}명의 사람이 있습니다.')
$ python3 findfaces.py
사진에는 모두 4명의 사람이 있습니다.

사진을 바꿔 보겠습니다.

import face_recognition

image = face_recognition.load_image_file('./img/group/49408859_401.jpg')
face_locations = face_recognition.face_locations(image)

# 각 얼굴의 coordinate를 표시한다.
# print(face_locations)

# 사진에 있는 인원수를 반환한다.
print(f'사진에는 모두 {len(face_locations)}명의 사람이 있습니다.')

$ python3 findfaces.py
사진에는 모두 10명의 사람이 있습니다.

이번에는 정확하게 인식했네요.

 

더 많은 사람으로 변경해보겠습니다.

import face_recognition

image = face_recognition.load_image_file('./img/group/1136468516.jpg.0.jpg')
face_locations = face_recognition.face_locations(image)

# 각 얼굴의 coordinate를 표시한다.
# print(face_locations)

# 사진에 있는 인원수를 반환한다.
print(f'사진에는 모두 {len(face_locations)}명의 사람이 있습니다.')

$ python3 findfaces.py
사진에는 모두 38명의 사람이 있습니다.

38명보다 훨씬 많은데 인식률이 낮네요 ㅎ

 

반응형
Comments