Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kaedah dan langkah untuk melaksanakan pengecaman muka menggunakan Python

Kaedah dan langkah untuk melaksanakan pengecaman muka menggunakan Python

王林
王林ke hadapan
2023-05-07 20:43:111914semak imbas

Untuk persekitaran pembangunan kami akan menggunakan Edisi Komuniti Visual Studio.

Jika ia belum dipasang pada komputer anda, anda boleh memuat turunnya dari sini. dan pasang pembangunan desktop menggunakan C++.

Kaedah dan langkah untuk melaksanakan pengecaman muka menggunakan Python

Sekarang kami mempunyai Visual Studio untuk pembangunan desktop menggunakan C++, kami boleh memulakan projek kami.

Gunakan Visual Studio untuk membuka direktori baharu dan mencipta persekitaran python baharu. Kami akan menggunakan venv Buka terminal bersepadu anda dan tulis python -m venv venv. Kemudian aktifkan persekitaran dengan menaip venv/bin/Activate.ps1. Ini untuk PowerShell.

Jika anda menggunakan mana-mana terminal lain, anda boleh mencari senarai penuh di sini

Kaedah dan langkah untuk melaksanakan pengecaman muka menggunakan Python

Sekarang kita telah selesai mencipta persekitaran maya, mari mula mengekstrak kebergantungan kami . Untuk ini kita memerlukan opencv dan face_recognition. Gunakan pip dalam terminal anda.

pip install opencv-python face_recognition

Pengecaman Muka ialah perpustakaan yang menggunakan perpustakaan dlib yang canggih. Kami bersedia untuk menulis beberapa kod dan mengenali beberapa wajah.

Buat fail python baharu, kami akan memanggil fail missingPerson.py dengan mengandaikan kami akan menggunakan aplikasi kami untuk memadankan orang yang hilang. Import kebergantungan kami dan tulis beberapa baris pertama kami.

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

Dengan mengandaikan semua foto kami disimpan dalam storan pelayan kami, kami perlu terlebih dahulu menarik imej semua orang ke dalam aplikasi kami dan membaca imej tersebut.

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)

Dalam bahagian ini, kami akan menggunakan opencv untuk membaca semua imej orang yang hilang dan menambahkannya pada senarai orang yang hilang kami.

Selepas kita membaca semua imej muka yang hilang daripada storan, kita perlu mencari pengekodan muka supaya kita boleh menggunakan pengesan muka CNN untuk mencipta susunan 2D kotak sempadan muka dalam imej.

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')

Kami menyimpan tatasusunan 2D ke dalam senarai pengekodan wajah yang diketahui. Ini akan mengambil masa beberapa minit.

Sekarang kami mempunyai kod muka untuk semua orang yang hilang, yang perlu kami lakukan sekarang ialah memadankannya dengan imej wartawan kami. pengecaman_muka sangat mudah digunakan.

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

Mula-mula kita perlu memuatkan fail imej orang yang dilaporkan dan mengekod wajah mereka. Yang tinggal hanyalah membandingkan pengekodan muka yang dilaporkan dengan perkara yang sudah kita ketahui tentang pengekodan muka. Kemudian logik mudah sepadan dengan indeks mereka dan kembali jika orang itu ditemui dalam senarai missingPersons kami.

Pengecaman muka ini bukan sahaja untuk mencari orang yang hilang. Ia mengesan dan mengecam muka dan boleh beroperasi mengikut keperluan.

Atas ialah kandungan terperinci Kaedah dan langkah untuk melaksanakan pengecaman muka menggunakan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam