Face Detection Example

1 minute read

Face Detection(얼굴 인식)

기본적인 face detection을 예제 코드를 통해 복습!

from google.colab import drive
drive.mount('/gdrive')

!pip install face_recognition

import cv2
import face_recognition as fr
from matplotlib import pyplot as plt

pre-built되는 library가 있지만, 항상 최신 버전으로 지원하고 있지 않기 때문에,

때론 !pip install 패키지 명령어를 통해 업그레이드 해줘야할 필요가 있다.

사진속의 사람들의 얼굴을 인식하고 체크해보자!

image_path = '/gdrive/My Drive/Colab/redvelvet.jpg'

image = fr.load_image_file(image_path)
face_location = fr.face_locations(image)

for(top, right, bottom, left) in face_location:
  cv2.rectangle(image, (left, top), (right, bottom), (0, 0, 255), 3)

# 이미지 버퍼 출력
plt.rcParams["figure.figsize"] = (16, 16)
plt.imshow(image)
plt.show()

fr.face_locations : 사진에 등장하는 모든 얼굴을 search

코드 결과 image!

image-20201223200937216

사진속의 사람의 얼굴을 잘라내서 비교해보자!

plt.rcParams["figure.figsize"] = (1, 1)

# 이미지 파일을 로드하여 known_person_list 리스트 생성
known_person_list = []
known_person_list.append(fr.load_image_file('/gdrive/My Drive/Colab/jin.jpg'))
known_person_list.append(fr.load_image_file('/gdrive/My Drive/Colab/rm.jpg'))
known_person_list.append(fr.load_image_file('/gdrive/My Drive/Colab/jayhob.jpg'))
known_person_list.append(fr.load_image_file('/gdrive/My Drive/Colab/vui.jpg'))
known_person_list.append(fr.load_image_file('/gdrive/My Drive/Colab/jungguk.jpg'))

# 얼굴만 쏙 뽑아내는 코드
known_face_list = []
for person in known_person_list:
  top, right, bottom, left = fr.face_locations(person)[0]
  face_image = person[top:bottom, left:right]

  known_face_list.append(face_image)

for face in known_face_list:
  plt.imshow(face)
  plt.show()

image-20201223204935450

unknown_person = fr.load_image_file('/gdrive/My Drive/Colab/me.jpg')

top, right, bottom, left = fr.face_locations(unknown_person)[0]
unknown_face = unknown_person[top:bottom, left:right]

plt.title("unknown_face")
plt.imshow(unknown_face)
plt.show()

image-20201223205010308

enc_unknown_face = fr.face_encodings(unknown_face)

plt.imshow(enc_unknown_face)
plt.show()

for face in known_face_list:
  enc_known_face = fr.face_encodings(face)

  distance = fr.face_distance(enc_known_face, enc_unknown_face[0])

  plt.title("distance: " + str(distance))
  plt.imshow(face)
  plt.show()

fr.face_encoding : 68개의 좌표를 128개의 숫자로 변환한다. 128개의 숫자는 deep learning의 결과물이기에 각 숫자의 의미는 알수 없다.

image-20201223211009664

느낀점

colab을 통해 face detection을 너무나 쉽게 해볼 수 있는 점이 좋았다.

내가 가장 닮은 사람은 Jin이다.

Tags:

Categories:

Updated:

Leave a comment