3.5기(200104~)/출석체크 팀

face_recognition을 이용한 real time 얼굴 인식

KAU-Deeperent 2020. 3. 8. 16:31

2020 3월 8일 출석관리팀

DMC 탐탐

 

실시간으로 영상을 전송하여 얼굴 인식을 할 수 있는

face_recognition 라이브러리를 이용하여 

실제 최영환과 김정민 얼굴의 영상을 인식하여 실습을 진행해 보았습니다. 

최영환의 얼굴은 잘 인식되지 않았었는데 영상의 규격의 문제가 있었던것 같습니다. 

갤럭시 a50 앞면 카메라를 이용하니 인식이 잘 되었고 

출석체크 모델에 적용해볼 예정입니다.

 

참조 깃허브는 아래와 같습니다.

https://github.com/ageitgey/face_recognition

 

ageitgey/face_recognition

The world's simplest facial recognition api for Python and the command line - ageitgey/face_recognition

github.com

 

#opencv 라이브러리 설치, 코랩 이용시 실행할 필요 없음

pip install opencv-python

 

#face_recognition 라이브러리 설치, 필수적으로 실행

pip install face_recognition

 

#각종 라이브러리 임포트

%pylab inline 

import face_recognition

import cv2

import matplotlib.patches as patches

from IPython.display import clear_output

from matplotlib.pyplot import imshow

import matplotlib.pylab as plt

 

# Loading video for face detection

#경로는 구글 드라이브에 있는 파일의 경로를 넣어줬다.

 

video_capture = cv2.VideoCapture("/content/drive/My Drive/Colab Notebooks/ob/young3.mp4")

 

frame_count = 0

 

while video_capture.isOpened():    

    # Grab a single frame of video

    ret, frame = video_capture.read()

 

    # Bail out when the video file ends

    if not ret:

        video_capture.release()

        break

        

    # 25 프레임마다 얼굴을 인식하도록 설정했습니다.

    frame_count += 1

    if frame_count % 25 == 0:    

        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

        

        # Display video frame

        title("Input Stream")

        plt.imshow(frame)        

 

        # Find all the faces and face encodings in the current frame of video

        rgb_frame = frame[:, :, ::-1]

        face_locations = face_recognition.face_locations(rgb_frame)

        

        # If faces were found, we will mark it on frame with blue dots

        for face_location in face_locations:        

            plt.plot(face_location[1], face_location[0], 'bo')

            plt.plot(face_location[1], face_location[2], 'bo')

            plt.plot(face_location[3], face_location[2], 'bo')

            plt.plot(face_location[3], face_location[0], 'bo')

 

        # Show frame...

        plt.show() 

        # ... and hold it until a new frame appears

        clear_output(wait=True)

 

최영환 인식

 

김정민 인식