Geschlechtserkennung aus Gesichtsbildern ist eine der vielen faszinierenden Anwendungen von Computer Vision. In diesem Projekt kombinieren wir OpenCV für den Standort und die Roboflow -API für die Klassifizierung der Geschlechter und erstellen ein Gerät, das Gesichter identifiziert, sie überprüft und ihr Geschlecht vorhersagt. Wir werden Python, insbesondere in Google Colab, verwenden, um diesen Code einzugeben und auszuführen. Diese Direkte gibt eine leicht zu befolgende Vorgehensweise des Codes und klärt jeden Schritt, damit Sie ihn verstehen und auf Ihre Unternehmungen anwenden können.
Dieser Artikel wurde als Teil der Data Science Blogathon.
Als nächstes stapeln wir die Haar-Cascade-Demonstration von OpenCV, die vorbereitet ist, um Gesichter zu identifizieren. Dieses Modell scannt das Bild für Muster, die menschlichen Gesichtern ähneln, und gibt ihre Koordinaten zurück.
Es ist normalerweise eine weit verbreitete Strategie für die Objekterkennung. Es identifiziert Kanten, Texturen und Muster, die dem Objekt zugeordnet sind (in diesem Fall Gesichter). OpenCV liefert ein vorgebildetes Gesichtserkennungsmodell, das mit `CascadeClassifier.`
geladen wird.from google.colab import files import cv2 import numpy as np from matplotlib import pyplot as plt from inference_sdk import InferenceHTTPClient # Upload image uploaded = files.upload() # Load the image for filename in uploaded.keys(): img_path = filename
Wir stapeln das übertragene Bild und ändern es in Graustufen, da dies einen Unterschied macht, um Fortschritte bei der Genauigkeit der Position zu machen. Danach verwenden wir den Gesichtsdetektor, um Gesichter im Bild zu finden.
# Load the Haar Cascade model for face detection face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades 'haarcascade_frontalface_default.xml')
Verwenden Sie cv2.imread (), um das übertragene Bild zu stapeln.
# Load the image and convert to grayscale img = cv2.imread(img_path) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Detect faces in the image faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
Das Modell der geschlechtsspezifischen Detektion-QIYYG/2 ist ein vorgebildetes Deep-Learning-Modell, das für die Klassifizierung von Geschlecht als männlich oder weiblich basierend auf Gesichtsmerkmalen optimiert ist. Es liefert Vorhersagen mit einem Konfidenzwert und zeigt an, wie sicher das Modell über die Klassifizierung geht. Das Modell wird auf einem robusten Datensatz trainiert, sodass es genaue Vorhersagen in einer Vielzahl von Gesichtsbildern vorlegen kann. Diese Vorhersagen werden von der API zurückgegeben und jedes Gesicht mit dem identifizierten Geschlecht und Konfidenzniveau kennzeichnet.
# Load the image and convert to grayscale img = cv2.imread(img_path) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Detect faces in the image faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))# Die Gesichtszahl initialisieren face_count = 0 # LISTE, um geschnittene Gesichtsbilder mit Etiketten zu speichern cropped_faces = [] # Verarbeiten jeweils entdeckte Gesicht für (x, y, w, h) in Gesichtern: face_count = 1 # Rechtecke um die erkannten Gesichter zeichnen CV2.Rectangle (IMG, (x, y), (x w, y h), (255, 0, 0), 2) # Die Gesichtsregion extrahieren face_img = img [y: y h, x: x w] # Speichern Sie das Gesichtsbild vorübergehend face_img_path = 'temp_face.jpg' cv2.imwrite (face_img_path, face_img) # Geschlecht mit dem Inferenzhttpclient erkennen result = client.infer (face_img_path, model_) Wenn 'Vorhersagen' in Ergebnis und Ergebnis ['Vorhersagen']: Vorhersage = Ergebnis ['Vorhersagen'] [0] Geschlecht = Vorhersage ['Klasse'] Vertrauen = Vorhersage ['Vertrauen'] # Beschriften Sie das Rechteck mit dem Geschlecht und dem Selbstvertrauen Label = F '{Geschlecht} ({Konfidenz: .2f})' cv2.putText (IMG, Etikett, (x, y - 10), cv2.font_hershey_simplex, 0,8, (255, 0, 0), 2) # Fügen Sie das verkürzte Gesicht mit dem Etikett zur Liste hinzu croppped_faces.append ((face_img, label))
Für jedes erkannte Gesicht zeichnet das System ein Begrenzungsfeld mit CV2.Rectangle (), um das Gesicht im Bild visuell hervorzuheben. Anschließend werden die Gesichtsregion unter Verwendung von Slicing (face_img = img [y: y h, x: x w]) geschnitten und isoliert es zur weiteren Verarbeitung. Nachdem das System vorübergehend das verkürzte Gesicht gespart hat, sendet das System es über Client.infer () an das Roboflow -Modell, das die Geschlechtervorhersage zusammen mit einer Vertrauensbewertung zurückgibt. Das System fügt diese Ergebnisse als Textbezeichnungen über jedem Gesicht mit cv2.putText () hinzu und liefert ein klares und informatives Overlay.
Schritt 6: Anzeigen der Ergebnisse
# Konvertieren Sie das Bild von BGR in RGB für die Anzeige img_rgb = cv2.cvtcolor (IMG, cv2.color_bgr2rgb) # Zeigen Sie das Bild mit erkannten Gesichtern und geschlechtsspezifischen Etiketten an Plt.Figure (AbbSize = (10, 10)) Plt.imshow (IMG_RGB) PLT.AXIS ('OFF') PLT.TITLE (f "Erkennete Gesichter: {face_count}") Plt.Show () # Zeigen Sie jedes verkürzte Gesicht mit seinem Etikett horizontal an Abb, Achsen = Plt.Subplots (1, face_count, figsize = (15, 5)) für i, (face_img, label) in aufzähliger (cropped_faces): face_rgb = cv2.cvtcolor (face_img, cv2.color_bgr2rgb) Achsen [i] .imshow (face_rgb) Achsen [i] .AXIS ('OFF') Achsen [i] .set_title (Etikett) Plt.Show ()
# Initialize face count face_count = 0 # List to store cropped face images with labels cropped_faces = [] # Process each detected face for (x, y, w, h) in faces: face_count = 1 # Draw rectangles around the detected faces cv2.rectangle(img, (x, y), (x w, y h), (255, 0, 0), 2) # Extract the face region face_img = img[y:y h, x:x w] # Save the face image temporarily face_img_path = 'temp_face.jpg' cv2.imwrite(face_img_path, face_img) # Detect gender using the InferenceHTTPClient result = CLIENT.infer(face_img_path, model_) if 'predictions' in result and result['predictions']: prediction = result['predictions'][0] gender = prediction['class'] confidence = prediction['confidence'] # Label the rectangle with the gender and confidence label = f'{gender} ({confidence:.2f})' cv2.putText(img, label, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255, 0, 0), 2) # Add the cropped face with label to the list cropped_faces.append((face_img, label))Da OpenCV das BGR -Format standardmäßig verwendet, konvertieren wir das Bild mit cv2.cvtcolor () für die korrekte Farbanzeige in Matplotlib.
.
Wir verwenden Matplotlib, um das Bild mit den erkannten Gesichtern und den geschlechtsspezifischen Etiketten anzuzeigen.
# Load the image and convert to grayscale img = cv2.imread(img_path) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Detect faces in the image faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))Wir zeigen auch jedes verkürzte Gesichtsbild und das vorhergesagte Geschlechtsetikett in einer separaten Nebenhandlung.
Key Takeaways
Das Projekt zeigt einen effektiven Ansatz zum Erkennen und Klassifizieren von Geschlecht aus Bildern mithilfe eines vorgebildeten KI-Modells. Die Demonstration unterscheidet die sexuelle Orientierung genau mit hoher Sicherheit und zeigt ihre unerschütterliche Qualität.
Durch Kombination von Geräten wie Roboflow für KI -Abzug, OpenCV für die Bildvorbereitung und Matplotlib zur Visualisierung kombiniert das Unternehmen effektiv verschiedene Innovationen, um seine Ziele zu realisieren.
Das Projekt verwendet Visualisierungstechniken, um Bilder mit erkannten Gesichtern und vorhergesagten Geschlechtern zu kommentieren. Dies macht die Ergebnisse interpretierbarer und wertvoller für die weitere Analyse.
Q2. Welche Technologien und Tools wurden verwendet?
a. Das Modell analysiert Bilder, um Gesichter zu erkennen, und klassifiziert dann jedes erkannte Gesicht als männlich oder weiblich basierend auf den ausgebildeten AI -Algorithmen. Es gibt Vertrauenswerte für die Vorhersagen aus.
Q4. Wie genau ist die Erkennung von Geschlechtern?a. Das Modell zeigt eine hohe Genauigkeit mit Vertrauenswerten, die zuverlässige Vorhersagen anzeigen. Zum Beispiel lagen die Konfidenzwerte in den Ergebnissen über 80%und zeigten eine starke Leistung.
Q5. Welche Art von Bildern kann der Modellprozess?Die in diesem Artikel gezeigten Medien sind nicht im Besitz von Analytics Vidhya und werden nach Ermessen des Autors verwendet.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3