خانه » ساخت برنامه شناسایی چهره در پایتون
شناسایی چهره در پایتون

ساخت برنامه شناسایی چهره در پایتون

در آخر این مقاله ، ما برنامه ای خواهیم نوشت که چهره ها را در یک تصویر شناسایی می دهد.

تشخیص چهره (Face Detection) در مقابل شناسایی چهره (Face Recognizer)

این دو عبارت ممکن است بسیار شبیه به هم باشند اما در واقع یکسان نیستند. بیایید تفاوت آن هارا بررسی کنیم .
تشخیص چهره فرآیند تشخیص دادن چهره هایی ، از یک تصویر یا ویدیویی است که هویت آن ها مهم نیست. این برنامه کاری بیشتر از پیدا کردن چهره ها ندارد. اما از طرف دیگر ، شناسایی چهره ، برنامه ای که چهره ها را پیدا می کند و همچنین می تواندبه ما بگوید که کدام چهره متعلق به چه کسی است. بنابراین اطلاعات بیشتر از تشخیص چهره است.
برای نوشتن کدی که چهره ها را شناسایی کند ، به داده های آموزش نیاز داریم ، باید دستگاه خود را آموزش دهیم تا چهره ها را بشناسد.. در یادگیری ماشینی ، دو نوع یادگیری وجود دارد. نظارت شده و بدون نظارت. در این پروژه ما قصد داریم از یادگیری نظارت شده استفاده کنیم.

شروع

ما از دو ماژول اصلی برای این پروژه استفاده خواهیم کرد ، و به آنها Face Recognition و OpenCV گفته می شود. OpenCV یک کتابخانه بسیار بهینه شده با تمرکز بر برنامه های بلادرنگ (real-time applications) است.

OpenCV (Open Source Computer Vision Library) یک کتابخانه نرم افزار بینایی کامپیوتر و یادگیری ماشین منبع باز است. OpenCV به منظور ایجاد زیرساخت مشترک برای برنامه های بینایی کامپیوتر و تسریع در استفاده از ادراک ماشین در محصولات تجاری ساخته شده است. OpenCV به عنوان یک محصول دارای مجوز BSD ، استفاده و اصلاح کد را برای مشاغل آسان می کند.

کتابخانه ها

در اینجا لیستی از کتابخانه هایی که نصب خواهیم کرد وجود دارد:

face_recognition ، numpy ، opencv-python. Cmake

cmake ،یک کتابخانه پیش نیاز است تا نصب کتابخانه face_recognition خطایی ایجاد نکند.
با استفاده از

PIP می توانیم آنها را در یک خط نصب کنیم:

pip install cmake face_recognition numpy opencv-python

پس از اتمام نصب ، اجازه دهید آنها را به ویرایشگر کد وارد کنیم. برخی از این کتابخانه ها در پایتون گنجانده شده اند ، به همین دلیل می توانیم آنها را بدون نصب وارد کنیم.

import face_recognition
import cv2
import numpy as np
import os
import glob

اکنون به مرحله بعدی می رویم ، جایی که تصاویر را وارد کرده و از آنها برای آموزش برنامه خود استفاده می کنیم.

آموزش تصاویر

در ابتدا ، بیایید تصاویر خود را پیدا کنیم.

وارد کردن تصاویر

تصاویر برخی از افراد مشهور را دانلود کرده و آنها را به پوشه جدیدی به نام “faces” اضافه می کنیم. همچنین برای بدست آوردن دایرکتوری فعلی ، به عبارت دیگر ، محل برنامه شما ، می توانیم از روشی به نام “()getcwd ” استفاده کنیم.

faces_encodings = []
faces_names = []
cur_direc = os.getcwd()
path = os.path.join(cur_direc, 'data/faces/')
list_of_files = [f for f in glob.glob(path+'*.jpg')]
number_files = len(list_of_files)
names = list_of_files.copy()

درک خطوط بالا:

  • همه تصاویر در یک پوشه به نام “faces” هستند.
  • نام فایل های تصویری باید نام شخصی در تصویر باشد. (مانند: bill-gates.jpg).
  • نام فایل ها لیست شده و به متغیر “names” اختصاص داده شده اند.
  • نوع فایل ها باید یکسان باشند. در این تمرین ، من از فرمت “jpg” استفاده کردم.
ذخیره عکس های جمع آوری شده

آموزش چهره ها

for i in range(number_files):
    globals()['image_{}'.format(i)] = face_recognition.load_image_file(list_of_files[i])
    globals()['image_encoding_{}'.format(i)] = face_recognition.face_encodings(globals()['image_{}'.format(i)])[0]
    faces_encodings.append(globals()['image_encoding_{}'.format(i)])
# Create array of known names
    names[i] = names[i].replace(cur_direc, "")  
    faces_names.append(names[i])

در اینجا لیست “names” بدین شکل است.

شنسایی چهره

ما در این مرحله یک کد طولانی داریم. که اگر آن را بخوانید به راحتی می توانید در هر خط اتفاقات را بفهمید. بیایید متغیرهای مورد نیاز را تعریف کنیم.

face_locations = []
face_encodings = []
face_names = []
process_this_frame = True

در اینجا کد شناسیایی چهره وجود دارد. (اگر کد زیر را کپی کنید ممکن است لازم باشد فاصله را مجدداً قالب بندی کنید ، توصیه می کنم با دیدن آن، کد را از ابتدا بنویسید و همچنین سعی کنید آن را درک کنید)

video_capture = cv2.VideoCapture(0)
while True:
    ret, frame = video_capture.read()
    small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25)
    rgb_small_frame = small_frame[:, :, ::-1]
    if process_this_frame:
        face_locations = face_recognition.face_locations( rgb_small_frame)
        face_encodings = face_recognition.face_encodings( rgb_small_frame, face_locations)
        face_names = []
        for face_encoding in face_encodings:
            matches = face_recognition.compare_faces (faces_encodings, face_encoding)
            name = "Unknown"
            face_distances = face_recognition.face_distance( faces_encodings, face_encoding)
            best_match_index = np.argmin(face_distances)
            if matches[best_match_index]:
                name = faces_names[best_match_index]
            face_names.append(name)
process_this_frame = not process_this_frame
# Display the results
    for (top, right, bottom, left), name in zip(face_locations, face_names):
        top *= 4
        right *= 4
        bottom *= 4
        left *= 4
# Draw a rectangle around the face
        cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)
# Input text label with a name below the face
        cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0, 255), cv2.FILLED)
        font = cv2.FONT_HERSHEY_DUPLEX
        cv2.putText(frame, name, (left + 6, bottom - 6), font, 1.0, (255, 255, 255), 1)
# Display the resulting image
    cv2.imshow('Video', frame)
# Hit 'q' on the keyboard to quit!
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

تبریک !! شما برنامه ای ایجاد کرده اید که چهره ها را در تصویر تشخیص و شناسایی می کند. اکنون ، شما ایده ای در مورد چگونگی استفاده از بینایی کامپیوتر در یک پروژه واقعی دارید.

۷ دیدگاه دربارهٔ «ساخت برنامه شناسایی چهره در پایتون»

  1. سلام وقتتون بخیر
    موقع نصب ماژول face_recognition اروری بهم میده که نمیدونم از توو cmd و pycharm و vscode هم همینه
    ——————————————————————————————————————————————————————————-
    Running setup.py install for dlib … error
    ERROR: Command errored out with exit status 1:
    command: ‘C:\Users\Khane Digital\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\python.exe’ -u -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\KHANED~1\\AppData\\Local\\Temp\\pip-install-t3qcs5rv\\dlib_454ea2cde3894f06b2c5ab5f7a878515\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\KHANED~1\\AppData\\Local\\Temp\\pip-install-t3qcs5rv\\dlib_454ea2cde3894f06b2c5ab5f7a878515\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from
    setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ install –record ‘C:\Users\KHANED~1\AppData\Local\Temp\pip-record-2jpsr9bx\install-record.txt’ –single-version-externally-managed –user –prefix= –compile –install-headers ‘C:\Users\Khane Digital\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\Include\dlib’
    cwd: C:\Users\KHANED~1\AppData\Local\Temp\pip-install-t3qcs5rv\dlib_454ea2cde3894f06b2c5ab5f7a878515\
    Complete output (8 lines):
    running install
    running build
    running build_py
    package init file ‘tools\python\dlib\__init__.py’ not found (or not a regular file)
    running build_ext

    ERROR: CMake must be installed to build dlib

    —————————————-
    ERROR: Command errored out with exit status 1: ‘C:\Users\Khane Digital\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\python.exe’ -u -c ‘import io, os, sys, setuptools, tokenize; sys.argv[0] = ‘”‘”‘C:\\Users\\KHANED~1\\AppData\\Local\\Temp\\pip-install-t3qcs5rv\\dlib_454ea2cde3894f06b2c5ab5f7a878515\\setup.py'”‘”‘; __file__='”‘”‘C:\\Users\\KHANED~1\\AppData\\Local\\Temp\\pip-install-t3qcs5rv\\dlib_454ea2cde3894f06b2c5ab5f7a878515\\setup.py'”‘”‘;f = getattr(tokenize, ‘”‘”‘open'”‘”‘, open)(__file__) if os.path.exists(__file__) else io.StringIO(‘”‘”‘from setuptools import setup; setup()'”‘”‘);code = f.read().replace(‘”‘”‘\r\n'”‘”‘, ‘”‘”‘\n'”‘”‘);f.close();exec(compile(code, __file__, ‘”‘”‘exec'”‘”‘))’ install –record ‘C:\Users\KHANED~1\AppData\Local\Temp\pip-record-2jpsr9bx\install-record.txt’ –single-version-externally-managed –user –prefix= –compile –install-headers ‘C:\Users\Khane Digital\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\Include\dlib’ Check the logs for full command output.

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

به بالای صفحه بردن