DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Uncategorized»Reconnaissance faciale et identification en vision par ordinateur
    Uncategorized

    Reconnaissance faciale et identification en vision par ordinateur

    mars 11, 2023
    Reconnaissance faciale et identification en vision par ordinateur
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    Le développement rapide des technologies d’apprentissage automatique et d’intelligence artificielle a fait des progrès significatifs dans la vision par ordinateur pour la détection et la reconnaissance d’objets. Pourtant, créer un système capable de reconnaître l’humour et l’amusement chez les gens reste un défi pour les programmeurs, car la comédie et le divertissement sont subjectifs et basés sur les goûts personnels et le contexte culturel. Il est donc difficile de créer un système capable de déterminer avec précision ce que les individus trouvent amusant ou agréable.

    Cependant, la vision par ordinateur dans la reconnaissance et l’identification faciales a fait des progrès significatifs, largement utilisée dans diverses applications telles que la sécurité, la surveillance et la biométrie. La technologie de reconnaissance faciale identifie principalement les individus en analysant et en comparant leurs traits faciaux à une base de données de visages connus. L’identification faciale consiste à faire correspondre le visage d’une personne à son identité. Il utilise des algorithmes pour extraire les caractéristiques du visage comme la distance entre les yeux, les courbes du nez et l’angle de la mâchoire pour générer une signature faciale distinctive.

    Techniques de reconnaissance faciale et d’identification

    Il existe différentes méthodes pour reconnaître et identifier les visages, mais ce didacticiel se concentrera sur trois techniques et décrira leurs avantages et leurs inconvénients.

    1. Approche basée sur un modèle

    Premièrement, l’approche basée sur un modèle compare les traits du visage d’un visage cible avec ceux d’un modèle ou d’une image de référence. L’image modèle comprend plusieurs caractéristiques faciales, telles que la position des yeux, du nez, de la bouche et les distances entre eux. La technique compare ensuite le visage cible avec l’image modèle pour déterminer s’il y a une correspondance. Eigenfaces est l’une des méthodes basées sur des modèles les plus courantes qui utilise l’analyse en composantes principales (ACP) pour réduire la dimensionnalité des images faciales et extraire les caractéristiques les plus pertinentes.

    Avantages

    • Ils sont très précis avec des modèles de haute qualité
    • Gère les variations d’éclairage et d’expressions faciales

    Désavantages

    • Nécessite des modèles de haute qualité pour des résultats précis
    • Peut être coûteux en calcul

    2. Approche basée sur les fonctionnalités

    Deuxièmement, la technique basée sur les caractéristiques extrait les caractéristiques du visage, telles que la forme des yeux, la distance entre les sourcils et la courbure des lèvres. L’approche compare ensuite ces caractéristiques avec celles d’une base de données de visages connus pour identifier le visage cible. Des exemples de techniques typiques basées sur les caractéristiques comprennent le modèle binaire local (LBP) et la transformation de caractéristiques invariantes à l’échelle (SIFT).

    Avantages

    • Relativement rapide et efficace
    • Fonctionne avec des images basse résolution

    Désavantages

    • Peut ne pas bien fonctionner avec des conditions d’éclairage variables
    • Peut ne pas être robuste aux changements d’expressions faciales ou de poses

    3. Approche basée sur l’apprentissage en profondeur

    Enfin, une approche basée sur l’apprentissage en profondeur utilise des réseaux de neurones profonds pour apprendre des caractéristiques directement à partir d’images faciales. Les réseaux sont formés sur de grands ensembles de données d’images faciales pour identifier les modèles et les caractéristiques pertinentes pour la reconnaissance faciale. Des exemples de méthodes typiques basées sur l’apprentissage en profondeur comprennent les réseaux de neurones convolutifs (CNN) et les réseaux siamois.

    Avantages

    • Atteint une grande précision avec de grands ensembles de données
    • Gère les variations dans les expressions faciales et les poses

    Désavantages

    • Nécessite une grande quantité de données d’entraînement
    • Coûteux en termes de calcul

    NOTE: Il existe plusieurs techniques de reconnaissance faciale et d’identification.

    Reconnaissance faciale et identification à l’aide de Python et OpenCV

    Avec la disponibilité de bibliothèques puissantes comme OpenCV et les progrès des algorithmes d’apprentissage automatique, il est devenu plus facile que jamais de développer des systèmes de reconnaissance faciale et d’identification à l’aide de Python. OpenCV fournit un riche ensemble de fonctions et d’outils pour le traitement d’image, particulièrement utile dans les tâches de reconnaissance faciale telles que la détection de visage, l’extraction de caractéristiques et la correspondance. Il dispose également de modèles prédéfinis tels que le classificateur Haar Cascades pour la détection des visages et VGG ou ResNet pour étiqueter les visages détectés.

    OpenCV fournit divers modèles pour les étiquetages de visage, tels que Eigenfaces, Fisherfaces et Local Binary Patterns Histograms (LBPH). Nous formons ces modèles pour identifier des individus spécifiques en leur présentant des images des individus que nous voulons reconnaître. Eigenfaces utilise l’analyse en composantes principales (PCA) pour construire une image de visage à partir de parties plus petites, tandis que Fisherfaces utilise l’analyse discriminante linéaire (LDA) pour distinguer les visages. LBPH compare la texture des visages à des visages connus.

    Identification faciale

    Dépendances d’importation

    Importez les bibliothèques nécessaires.

    import numpy as np
    import cv2
    import matplotlib.pyplot as plt
    from IPython.display import Image
    
    from google.colab import drive
    drive.mount('/content/drive')

    Charger des modèles et une image pré-formés

    OpenCV fournit un ensemble de « classificateurs Haar Cascade » pré-formés pour détecter divers objets, y compris les visages. `cv2.CascadeClassifier` est une classe qui représente le classificateur Haar Cascade. Le cv2.data.haarcascades est un chemin vers le répertoire contenant les modèles pré-formés. `haarcascade_frontalface_default.xml` est le fichier contenant le modèle de détection de visage pré-formé. Le modèle est disponible en téléchargement gratuit sur GitHub.

    # Load the pre-trained face detection model
    face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')

    Charger l’image d’entrée `image1.jpg` peut être une image de votre choix en utilisant la fonction `imread()` d’OpenCV. Il convertit ensuite l’image en niveaux de gris à l’aide de la fonction `cvtColor()` d’OpenCV. L’image en niveaux de gris est requise pour l’algorithme de détection de visage.

    # Load the image and convert it to grayscale
    img = cv2.imread('/content/drive/MyDrive/Face Detection/image1.jpg')
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    #show the image 
    plt.imshow(gray)

    La ligne ci-dessous détecte les visages dans l’image en niveaux de gris à l’aide de la méthode detectMultiScale() de la classe CascadeClassifier. La méthode detectMultiScale() prend les arguments suivants :

    `gray` : l’image en niveaux de gris

    `scaleFactor` : est un paramètre spécifiant de combien la taille de l’image est minimisée à chaque échelle d’image. Une valeur de 1,3 signifie que l’image est réduite de 30 % à chaque échelle.

    `minNeighbors` : est un paramètre spécifiant le nombre de voisins que chaque rectangle candidat doit avoir pour le conserver, une valeur plus élevée entraîne moins de détections mais avec une plus grande confiance.

    `La méthode detectMultiScale()` renvoie une liste de rectangles où les visages sont détectés. Chaque rectangle représente un tuple de quatre entiers `(x,y,w,h)` représentant les coordonnées du coin supérieur gauche `(x,y)` du rectangle et sa largeur `w` et sa hauteur `h`.

    # Detect faces in the grayscale image
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)

    Dessiner un rectangle dans la région de la face

    Créons une boucle qui dessine des rectangles autour des visages détectés dans l’image d’origine. La fonction cv2.rectangle() prend les arguments suivants :

    `img` : l’image d’origine.

    `(x,y)` : les coordonnées du coin supérieur gauche du rectangle.

    `(x+w,y+h)` : les coordonnées du coin inférieur droit du rectangle.

    `(255,0,0)` : représente la couleur binaire du rectangle dessiné au format RVB. (255,0,0) représente le bleu.

    `5` : l’épaisseur de la bordure du rectangle en pixels.

    # Draw rectangles around the detected faces
    for (x,y,w,h) in faces:
    
        cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),5)
    
    #Show the image after building the rectangle.
    
    
    # Display the image with the detected faces
    
    plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    
    plt.show()
    
    # Save the detected image by name
    cv2.imwrite('detected_image.jpg', img)
    
    #Confirm if saved image exists.
    detected_image=cv2.imread("detected_image.jpg", 1)
    gray_channels_reversed = detected_image[:, :, ::-1]
    plt.imshow(gray_channels_reversed)

    La reconnaissance faciale

    Nous n’entrerons pas dans une explication comme celle ci-dessus, mais utiliserons l’image détectée enregistrée ci-dessus pour confirmer si le modèle fonctionne pour l’identification en donnant différentes images pour la détection.

    Dépendances d’importation

    import numpy as np
    import cv2
    import matplotlib.pyplot as plt
    import dlib
    from imutils import face_utils
    from scipy.spatial.distance import cosine
    from sklearn.metrics.pairwise import cosine_similarity

    Charger le modèle de détection de visage et le détecteur de repère facial

    La fonction `dlib.get_frontal_face_detector()` renvoie un modèle de détection de visage pré-entraîné capable de détecter des visages humains dans des images. Pour plus d’informations, consultez les fonctions de dlib.net. Téléchargez également le détecteur de points de repère.

    # Load the face detection model and the facial landmark detector
    face_detector = dlib.get_frontal_face_detector()
    landmark_detector = dlib.shape_predictor('/content/drive/MyDrive/Face Detection/shape_predictor_68_face_landmarks_GTX.dat')
    
    # Load the detected image of 
    
    img1 = cv2.imread('/content/drive/MyDrive/Face Detection/detected_image.jpg')
    gray1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
    
    
    # Detect the face and facial landmarks of the image
    rects1 = face_detector(gray1, 1)
    landmarks1 = landmark_detector(gray1, rects1[0])
    landmarks1 = face_utils.shape_to_np(landmarks1)
    
    # Load another image to compare with the image loaded previously
    img2 = cv2.imread('/content/drive/MyDrive/Face Detection/001_d3323f3c.jpg')
    gray2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY)

    ### Set model parameter
    
    # Detect the face and facial landmarks of the second image
    
    rects2 = face_detector(gray2, 1)
    
    landmarks2 = landmark_detector(gray2, rects2[0])
    
    landmarks2 = face_utils.shape_to_np(landmarks2)
    
    # Extract the features of the two images by computing the Euclidean distances between facial landmarks
    
    features1 = np.zeros(68)
    
    features2 = np.zeros(68)
    
    for i in range(68):
    
        features1[i] = np.linalg.norm(landmarks1[i] - landmarks1[0])
    
        features2[i] = np.linalg.norm(landmarks2[i] - landmarks2[0])
    
    #### Train on similarities
    
    # Compute the cosine similarity between the two feature vectors
    
    score = cosine(features1, features2)
    
    # Check if the score is below a certain threshold (e.g. 0.5) to determine if the two faces match
    
    if...
    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.