ホームページ >バックエンド開発 >Python チュートリアル >Python を使用して顔認識を実装する方法と手順

Python を使用して顔認識を実装する方法と手順

王林
王林転載
2023-05-07 20:43:112012ブラウズ

開発環境には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 を使用します。

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

二次元配列を既知の顔コードのリストに保存します。これには数分かかります。

すべての行方不明者の顔コードを取得したので、あとはそれをレポーターの画像と照合するだけです。顔認識は非常に使いやすいです。

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。