Einführung

Geschlechtserkennung von Gesichtsbildern ist eine der vielen faszinierenden Anwendungen der ComputervisionIn diesem Projekt kombinieren wir OpenCV zur Gesichtslokalisierung und die Roboflow-API zur Geschlechtsklassifizierung, wodurch ein Gerät entsteht, das Gesichter identifiziert, überprüft und ihr Geschlecht vorhersagt. Wir werden verwenden Pythoninsbesondere in Google Colabum diesen Code einzugeben und auszuführen. Diese Anleitung bietet eine leicht verständliche Anleitung durch den Code und erläutert jeden Schritt, damit Sie ihn verstehen und auf Ihre Vorhaben anwenden können.

Lernziel

  • Erfahren Sie, wie Sie die Gesichtserkennung mithilfe der Haar-Kaskade von OpenCV implementieren.
  • Erfahren Sie, wie Sie die Roboflow-API zur Geschlechtsklassifizierung integrieren.
  • Entdecken Sie Methoden zur Verarbeitung und Bearbeitung von Bildern in Python.
  • Visualisieren Sie Erkennungsergebnisse mit Matplotlib.
  • Entwickeln Sie praktische Fähigkeiten in der Kombination von KI und Laptop Imaginative and prescient für reale Anwendungen.

Dieser Artikel erschien im Rahmen der Knowledge Science-Blogathon.

Wie erkennt man das Geschlecht mit OpenCV und Roboflow in Python?

Lassen Sie uns lernen, wie OpenCV und Roboflow in Python zur Geschlechtserkennung implementiert werden:

Schritt 1: Bibliotheken importieren und Bilder hochladen

Der erste Schritt besteht darin, die notwendigen Bibliotheken zu erstellen. Wir verwenden OpenCV für die Bildaufbereitung, NumPy für den Umgang mit Clustern und Matplotlib um die Entstehung zu visualisieren. Wir haben auch ein Bild hochgeladen, das Gesichter enthielt, die wir analysieren wollten.

from google.colab import recordsdata
import cv2
import numpy as np
from matplotlib import pyplot as plt
from inference_sdk import InferenceHTTPClient

# Add picture
uploaded = recordsdata.add()

# Load the picture
for filename in uploaded.keys():
    img_path = filename

In Google Colab ermöglicht die Funktion recordsdata.add() Benutzern, Dateien, wie z. B. Bilder, von ihren lokalen Computern in die Colab-Umgebung hochzuladen. Beim Hochladen wird das Bild in einer Phrase-Referenz namens uploaded gespeichert, wobei die Schlüssel den Dateinamen entsprechen. Anschließend wird mithilfe einer for-Schleife der Dateipfad für die weitere Verarbeitung extrahiert. Zur Bewältigung von Bildverarbeitungsaufgaben wird OpenCV verwendet, um Gesichter zu erkennen und Begrenzungsrahmen um sie herum zu zeichnen. Gleichzeitig wird Matplotlib verwendet, um die Ergebnisse zu visualisieren, einschließlich der Anzeige des Bilds und zugeschnittener Gesichter.

Schritt 2: Laden des Haar-Kaskadenmodells zur Gesichtserkennung

Als Nächstes stapeln wir die Haar-Kaskaden-Demonstration von OpenCV, die bereits darauf trainiert ist, Gesichter zu erkennen. Dieses Modell durchsucht das Bild nach Mustern, die menschlichen Gesichtern ähneln, und gibt deren Koordinaten zurück.

# Load the Haar Cascade mannequin for face detection
face_cascade = cv2.CascadeClassifier(cv2.information.haarcascades + 'haarcascade_frontalface_default.xml')

Dies ist normalerweise eine gängige Strategie zur Objekterkennung. Dabei werden Kanten, Texturen und Muster identifiziert, die mit dem Objekt (in diesem Fall Gesichter) verknüpft sind. OpenCV bietet ein vorab trainiertes Gesichtserkennungsmodell, das mit „CascadeClassifier“ geladen wird.

Schritt 3: Gesichter im Bild erkennen

Wir stapeln das hochgeladene Bild und konvertieren es in Graustufen, da dies dabei hilft, Fortschritte bei der Genauigkeit der Place zu erzielen. Anschließend verwenden wir den Gesichtsdetektor, um Gesichter im Bild zu finden.

# Load the picture and convert to grayscale
img = cv2.imread(img_path)
grey = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# Detect faces within the picture
faces = face_cascade.detectMultiScale(grey, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
  • Laden und Konvertieren von Bildern:
    • Verwenden Sie cv2.imread(), um das übertragene Bild zu stapeln.
    • Ändern Sie das Bild mit cv2.cvtColor() in Graustufen, um die Komplexität zu verringern und die Erkennung zu verbessern.
  • Gesichter erkennen:
    • Verwenden Sie detectMultiScale(), um Gesichter im Graustufenbild zu finden.
    • Die Funktion skaliert das Bild und überprüft verschiedene Bereiche auf Gesichtsmuster.
    • Parameter wie scaleFactor und minNeighbors passen die Erkennungsempfindlichkeit und -genauigkeit an.

Schritt 4: Einrichten der API zur Geschlechtserkennung

Nachdem wir die Gesichter erkannt haben, initialisieren wir die Roboflow-API mithilfe von InferenceHTTPClient, um das Geschlecht jedes erkannten Gesichts vorherzusagen.

# Initialize InferenceHTTPClient for gender detection
CLIENT = InferenceHTTPClient(
    api_url="https://detect.roboflow.com",
    api_key="USE_YOUR_API"
)
"

Der InferenceHTTPClient vereinfacht die Interaktion mit den vorab trainierten Modellen von Roboflow, indem er einen Shopper mit der Roboflow-API-URL und dem API-Schlüssel konfiguriert. Mit diesem Setup können Anfragen an das auf Roboflow gehostete Geschlechtserkennungsmodell gesendet werden. Der API-Schlüssel dient als eindeutige Kennung für die Authentifizierung und ermöglicht einen sicheren Zugriff auf die Roboflow-API und deren Nutzung.

Schritt 5: Jedes erkannte Gesicht verarbeiten

Wir durchlaufen jedes erkannte Gesicht, zeichnen ein Rechteck darum und schneiden das Gesichtsbild zur weiteren Verarbeitung zu. Jedes zugeschnittene Gesichtsbild wird vorübergehend gespeichert und an die Roboflow-API gesendet, wo das Modell gender-detection-qiyyg/2 zur Vorhersage des Geschlechts verwendet wird.

Das Modell gender-detection-qiyyg/2 ist ein vorab trainiertes Deep-Studying-Modell, das für die Klassifizierung des Geschlechts als männlich oder weiblich anhand von Gesichtszügen optimiert ist. Es liefert Vorhersagen mit einem Konfidenzwert, der angibt, wie sicher sich das Modell bei der Klassifizierung ist. Das Modell wird anhand eines robusten Datensatzes trainiert, sodass es genaue Vorhersagen für eine breite Palette von Gesichtsbildern treffen kann. Diese Vorhersagen werden von der API zurückgegeben und verwendet, um jedes Gesicht mit dem identifizierten Geschlecht und dem Konfidenzniveau zu kennzeichnen.

# Initialize face rely
face_count = 0

# Checklist to retailer cropped face photos with labels
cropped_faces = ()

# Course of every detected face
for (x, y, w, h) in faces:
    face_count += 1
    # Draw rectangles across the detected faces
    cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
    
    # Extract the face area
    face_img = img(y:y+h, x:x+w)
    
    # Save the face picture briefly
    face_img_path="temp_face.jpg"
    cv2.imwrite(face_img_path, face_img)
    
    # Detect gender utilizing the InferenceHTTPClient
    end result = CLIENT.infer(face_img_path, model_id="gender-detection-qiyyg/2")
    
    if 'predictions' in end result and end result('predictions'):
        prediction = end 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 record
        cropped_faces.append((face_img, label))

Für jedes erkannte Gesicht zeichnet das System einen Begrenzungsrahmen mit cv2.rectangle() um das Gesicht im Bild optisch hervorzuheben. Anschließend wird der Gesichtsbereich mithilfe von Slicing (face_img = img(y:y+h, x:x+w)), isoliert es für die weitere Verarbeitung. Nachdem das zugeschnittene Gesicht vorübergehend gespeichert wurde, sendet das System es an das Roboflow-Modell über CLIENT.infer()das die Geschlechtsvorhersage zusammen mit einem Konfidenzwert zurückgibt. Das System fügt diese Ergebnisse als Textbeschriftungen über jedem Gesicht hinzu, indem es cv2.putText()und bietet eine klare und informative Überlagerung.

Schritt 6: Ergebnisse anzeigen

Zum Schluss visualisieren wir die Ausgabe. Wir konvertieren das Bild zunächst von BGR in RGB (da OpenCV standardmäßig BGR verwendet) und zeigen dann die erkannten Gesichter und Geschlechtsvorhersagen an. Danach zeigen wir die einzelnen zugeschnittenen Gesichter mit ihren jeweiligen Beschriftungen.

# Convert picture from BGR to RGB for show
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# Show the picture with detected faces and gender labels
plt.determine(figsize=(10, 10))
plt.imshow(img_rgb)
plt.axis('off')
plt.title(f"Detected Faces: {face_count}")
plt.present()

# Show every cropped face with its label horizontally
fig, axes = plt.subplots(1, face_count, figsize=(15, 5))
for i, (face_img, label) in enumerate(cropped_faces):
    face_rgb = cv2.cvtColor(face_img, cv2.COLOR_BGR2RGB)
    axes(i).imshow(face_rgb)
    axes(i).axis('off')
    axes(i).set_title(label)
plt.present()
  • Bildkonvertierung: Da OpenCV standardmäßig das BGR-Format verwendet, konvertieren wir das Bild mit cv2.cvtColor() in RGB, um die Farbanzeige in Matplotlib zu korrigieren.
  • Ergebnisse anzeigen:
    • Wir verwenden Matplotlib, um das Bild mit den erkannten Gesichtern und den Geschlechtsbezeichnungen darüber anzuzeigen.
    • Wir zeigen auch jedes zugeschnittene Gesichtsbild und die vorhergesagte Geschlechtsbezeichnung in einem separaten Nebendiagramm.

Originaldaten

Geschlechtserkennung mit OpenCV und Roboflow

Ausgabeergebnisdaten

Geschlechtserkennung mit OpenCV und Roboflow
Geschlechtserkennung mit OpenCV und Roboflow
Geschlechtserkennung mit OpenCV und Roboflow

Abschluss

In diesem Leitfaden haben wir erfolgreich eine leistungsstarke Geschlechtserkennung mit OpenCV und Roboflow in Python entwickelt. Durch die Implementierung von OpenCV zur Gesichtserkennung und Roboflow zur Geschlechtsvorhersage haben wir ein System erstellt, das das Geschlecht in Bildern genau identifizieren und klassifizieren kann. Die Hinzufügung von Matplotlib zur Visualisierung hat unser Projekt weiter verbessert und klare und aufschlussreiche Darstellungen der Ergebnisse ermöglicht. Dieses Projekt unterstreicht die Wirksamkeit der Kombination dieser Technologien und demonstriert ihre praktischen Vorteile in realen Anwendungen und bietet eine robuste Lösung für Aufgaben zur Geschlechtserkennung.

Die wichtigsten Erkenntnisse

  • Das Projekt demonstriert einen effektiven Ansatz zur Erkennung und Klassifizierung des Geschlechts anhand von Bildern mithilfe eines vorab trainierten KI Modell. Die Demonstration unterscheidet die sexuelle Orientierung mit großer Gewissheit und zeigt ihre Beständigkeit.
  • Durch die Kombination von Geräten wie Roboflow für die KI-Deduktion, OpenCV für die Bildaufbereitung und Matplotlib für VisualisierungDas Unternehmen kombiniert effektiv verschiedene Innovationen, um seine Ziele zu erreichen.
  • Die Fähigkeit des Techniques, das Geschlecht verschiedener Personen in einem einzigen Bild zu unterscheiden und zu klassifizieren, unterstreicht seine Leistungsfähigkeit und Flexibilität und macht es für verschiedene Anwendungen geeignet.
  • Die Verwendung einer vorab trainierten Demonstration garantiert eine hohe Genauigkeit bei den Prognosen, wie die im Folgenden angegebenen Zuverlässigkeitswerte belegen. Diese Genauigkeit ist für Anwendungen, die eine zuverlässige Geschlechtsklassifizierung erfordern, von entscheidender Bedeutung.
  • Das Projekt verwendet Visualisierungstechniken, um Bilder mit erkannten Gesichtern und vorhergesagten Geschlechtern zu versehen. Dadurch werden die Ergebnisse besser interpretierbar und für weitere Analysen wertvoller.

Lesen Sie auch: Namensbasierte Geschlechtsidentifikation mit NLP und Python

Häufig gestellte Fragen

Frage 1. Was ist das Ziel des Projekts?

A. Das Projekt zielt darauf ab, das Geschlecht von Bildern mithilfe von KI zu erkennen und zu klassifizieren. Es nutzt vorab trainierte Modelle, um das Geschlecht von Personen auf Fotos zu identifizieren und zu kennzeichnen.

Frage 2. Welche Technologien und Werkzeuge wurden verwendet?

A. Das Projekt nutzte das Roboflow-Geschlechtserkennungsmodell für die KI-Inferenz, OpenCV für die Bildverarbeitung und Matplotlib für die Visualisierung. Außerdem wurde Python für die Skripterstellung und Datenverarbeitung verwendet.

Frage 3. Wie funktioniert das Modell zur Geschlechtserkennung?

A. Das Modell analysiert Bilder, um Gesichter zu erkennen, und klassifiziert dann jedes erkannte Gesicht basierend auf den trainierten KI-Algorithmen als männlich oder weiblich. Es gibt Konfidenzwerte für die Vorhersagen aus.

Frage 4. Wie genau ist die Geschlechtserkennung?

A. Das Modell weist eine hohe Genauigkeit auf, wobei die Konfidenzwerte zuverlässige Vorhersagen anzeigen. Beispielsweise lagen die Konfidenzwerte der Ergebnisse über 80 %, was auf eine starke Leistung hinweist.

Frage 5. Welche Artwork von Bildern kann das Modell verarbeiten?

Die in diesem Artikel gezeigten Medien sind nicht Eigentum von Analytics Vidhya und werden nach Ermessen des Autors verwendet.

Ich bin Soumyadarshani Sprint und begebe mich auf eine aufregende Entdeckungsreise in das faszinierende Reich der Datenwissenschaft. Als engagierte Studentin mit einem Bachelor-Abschluss in Handel (B.Com) habe ich meine Leidenschaft für die spannende Welt datengesteuerter Erkenntnisse entdeckt. Mein Engagement für kontinuierliche Verbesserung hat mir eine 5⭐-Bewertung auf HackerRank sowie Auszeichnungen von Microsoft eingebracht. Ich habe auch Kurse auf angesehenen Plattformen wie Nice Studying und Simplilearn absolviert. Als stolzer Empfänger eines virtuellen Praktikums bei TATA über Forage bin ich dem Streben nach technischer Exzellenz verpflichtet. Ich vertiefe mich häufig in die Feinheiten komplexer Datensätze und habe Freude daran, Algorithmen zu entwickeln und revolutionary Lösungen zu entwickeln. Ich lade Sie ein, sich mit mir auf LinkedIn zu verbinden, während wir gemeinsam durch das datengesteuerte Universum navigieren!

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert