Face_recognition을 활용한 얼굴 부위 인식
기본적으로 사진 내에서 얼굴 위치 인식을 지원하고 눈썹, 눈, 콧대 , 코끝, 윗입술, 아랫입술, 뺨 영역을 구분한다.
ex) 눈 콧대 뺨 위치를 파악하여 안경을 인공적으로 씌어 볼 수 있다.
실습
import cv2
import face_recognition as fr
import numpy as np
# 이미지 읽고 얼굴 부위별 위치 인식하기
img = cv2.imread('000004.jpg')
face_locations = fr.face_locations(img, number_of_times_to_upsample=2)
#한명만 있는 이미지여서 for는 한번만 돌고 여려명일 경우 for는 여러번 동작한다.
for face_location in face_locations:
# 이미지에서 얼굴이 인식된 위치를 기록
top, right, bottom, left = face_location
face_landmarks_list = fr.face_landmarks(img)
pts = np.array(face_landmarks_list[0]['chin'])
cv2.polylines(img, [pts], True, (255, 0, 0), 2)
pts = np.array(face_landmarks_list[0]['left_eyebrow'])
cv2.polylines(img, [pts], True, (0, 255, 0), 2)
pts = np.array(face_landmarks_list[0]['right_eyebrow'])
cv2.polylines(img, [pts], True, (0, 255, 0), 2)
pts = np.array(face_landmarks_list[0]['left_eye'])
cv2.polylines(img, [pts], True, (0, 255, 0), 2)
pts = np.array(face_landmarks_list[0]['right_eye'])
cv2.polylines(img, [pts], True, (0, 255, 0), 2)
pts = np.array(face_landmarks_list[0]['nose_bridge'])
cv2.polylines(img, [pts], True, (0, 255, 0), 2)
pts = np.array(face_landmarks_list[0]['nose_tip'])
cv2.polylines(img, [pts], True, (0, 255, 0), 2)
pts = np.array(face_landmarks_list[0]['top_lip'])
cv2.polylines(img, [pts], True, (0, 255, 0), 2)
pts = np.array(face_landmarks_list[0]['bottom_lip'])
cv2.polylines(img, [pts], True, (0, 255, 0), 2)
# 얼굴 위치에 사각형 추가
cv2.rectangle(img,(left,top),(right,bottom),(255,0,0),2)
# 결과를 화면에 표시함
cv2.imshow('Image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
결과
Face_recognition 활용한 얼굴 부위 인식 특징
1. 다양한 사람의 얼굴 인식 결과를 확인 가능하다.
2. 시설반향, 얼굴 방향, 턱수염, 피부색에 큰 영향 없이 정확한 위치를 감지하는 것을 확인 가능하다.
추가 기능들
1. 웹캠이 연결된 PC에서 파이썬 개발환경으로 간단하게 촬영 영상을 읽어올수 있다.
2.반복적으로 이미지를 읽고 얼굴인식 결과를 표시하는 방법으로 실식나에 가깝게 얼굴 인식 구현 가능
3.K-NN, SVM, CNN등을 활용한 얼굴인식 알고리즘 제공하여 용도에 맞게 선택이 가능하다.
4.딥러닝을 활용한 얼굴인식 기능을 제공하여 높은 정확도를 보여준다.(단, 계산속도가 느리다.)