>  기사  >  백엔드 개발  >  Python을 사용하여 얼굴 인식을 구현하는 방법 및 단계

Python을 사용하여 얼굴 인식을 구현하는 방법 및 단계

王林
王林앞으로
2023-05-07 20:43:111957검색

개발 환경으로는 Visual Studio Community Edition을 사용할 예정입니다.

아직 컴퓨터에 설치하지 않았다면 여기에서 다운로드할 수 있습니다. C++를 사용하여 데스크톱 개발을 설치합니다.

Python을 사용하여 얼굴 인식을 구현하는 방법 및 단계

이제 C++를 사용한 데스크톱 개발용 Visual Studio가 있으므로 프로젝트를 시작할 수 있습니다.

Visual Studio를 사용하여 새 디렉터리를 열고 새 Python 환경을 만듭니다. venv를 사용하겠습니다. 통합 터미널을 열고 python -m venv venv를 작성합니다. 그런 다음 venv/bin/Activate.ps1을 입력하여 환경을 활성화합니다. 이는 PowerShell용입니다.

다른 터미널을 사용하는 경우 여기에서 전체 목록을 찾을 수 있습니다.

Python을 사용하여 얼굴 인식을 구현하는 방법 및 단계

이제 가상 환경 생성이 완료되었으므로 종속성을 추출해 보겠습니다. 이를 위해서는 opencv와 Face_recognition이 필요합니다.

pip install opencv-python face_recognition

얼굴 인식은 최첨단 dlib 라이브러리를 사용하는 라이브러리입니다. 이제 코드를 작성하고 얼굴을 인식할 준비가 되었습니다.

애플리케이션을 사용하여 실종자를 일치시킨다는 가정 하에 새 Python 파일을 만들고missingPerson.py 파일을 호출합니다. 종속성을 가져오고 처음 몇 줄을 작성합니다.

import cv2
import numpy as np
import face_recognition
import os
 
from face_recognition.api import face_distance

모든 사진이 서버 저장소에 저장되어 있다고 가정하면 먼저 모든 사람의 이미지를 애플리케이션으로 가져와 해당 이미지를 읽어야 합니다.

path = 'MissingPersons'
images = []
missingPersons = []
missingPersonsList = os.listdir(path)
 
for missingPerson in missingPersonsList :
    curImg = cv2.imread(f'{path}/{missingPerson}')
    images.append(curImg)
    missingPersons.append(os.path.splitext(missingPerson)[0])
print(missingPersons)

이 섹션에서는 opencv를 사용하여 실종자의 모든 이미지를 읽고 이를 실종자 목록에 추가합니다.

저장소에서 누락된 얼굴 이미지를 모두 읽은 후 CNN 얼굴 감지기를 사용하여 이미지에 얼굴 경계 상자의 2D 배열을 만들 수 있도록 얼굴 인코딩을 찾아야 합니다.

def findEncodings(images):
    encodeList = []
    for img in images:
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        encode = face_recognition.face_encodings(img)[0]
        encodeList.append(encode)
    print(encodeList)
    return encodeList
 
encodeListKnown = findEncodings(images)
print('Encoding Complete')

우리는 알려진 얼굴 인코딩 목록에 2D 배열을 저장합니다. 이 작업은 몇 분 정도 걸립니다.

이제 모든 실종자의 얼굴 코드가 확보되었으므로 이제 우리가 해야 할 일은 이를 기자 이미지와 일치시키는 것뿐입니다. 얼굴 인식은 사용하기 매우 편리합니다.

def findMissingPerson(encodeListKnown, reportedPerson='found1.jpg'):
    person = face_recognition.load_image_file(f'ReportedPersons/{reportedPerson}]')
    person = cv2.cvtColor(person,cv2.COLOR_BGR2RGB)
 
    try:
        encodePerson = face_recognition.face_encodings(person)[0]
 
        comparedFace = face_recognition.compare_faces(encodeListKnown,encodePerson)
        faceDis = face_recognition.face_distance(encodeListKnown,encodePerson)
        matchIndex = np.argmin(faceDis)
        if comparedFace[matchIndex]:
            name = missingPersons[matchIndex].upper()
            print(name)
            return name
        else:
          print('Not Found')
          return False
        
    except IndexError as e:
        print(e)
        return e

먼저 신고 대상자의 이미지 파일을 로드하고 얼굴을 인코딩해야 합니다. 남은 것은 보고된 얼굴 인코딩을 우리가 이미 알고 있는 얼굴 인코딩과 비교하는 것입니다. 그런 다음 간단한 논리가 해당 인덱스를 일치시키고 해당 사람이 MissingPersons 목록에서 발견되면 반환합니다.

이 얼굴 인식은 실종자를 찾는 데에만 사용되는 것이 아닙니다. 얼굴을 감지하고 인식하며 필요에 따라 작동할 수 있습니다.

위 내용은 Python을 사용하여 얼굴 인식을 구현하는 방법 및 단계의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제