Dieser Artikel wurde im Rahmen der Data Science Blogathon
– Grundverständnis der Bildklassifizierung.
– Kenntnisse in Python und Deep Learning
– Konzeptionelles Verständnis der verschiedenen Module der tiefes LernenTiefes Lernen, Eine Teildisziplin der Künstlichen Intelligenz, verlässt sich auf künstliche neuronale Netze, um große Datenmengen zu analysieren und zu verarbeiten. Diese Technik ermöglicht es Maschinen, Muster zu lernen und komplexe Aufgaben auszuführen, wie Spracherkennung und Computer Vision. Seine Fähigkeit, sich kontinuierlich zu verbessern, wenn mehr Daten zur Verfügung gestellt werden, macht es zu einem wichtigen Werkzeug in verschiedenen Branchen, von Gesundheit....
Einführung
In diesem Artikel werden wir sehen, was Gesichtserkennung ist? Und wie unterscheidet es sich auch von der Gesichtserkennung? Wir werden kurz die Theorie der Gesichtserkennung verstehen und dann zum Kodierungsabschnitt springen!! Am Ende dieses Artikels, Sie können ein Gesichtserkennungsprogramm entwickeln, um Gesichter in Bildern zu erkennen !!!
Agenda dieses Artikels
1. Überblick über die Gesichtserkennung
2. Übersicht zur Gesichtserkennung
3. Verstehen Sie, was OpenCV ist
4. Python-Implementierung
Überblick über die Gesichtserkennung
Was ist, wenn die Maschine in der Lage ist, Objekte in einem Bild ohne menschliches Zutun automatisch zu erkennen?? Mal sehen: Gesichtserkennung kann ein Problem sein, wenn wir menschliche Gesichter in einem Bild erkennen. Es kann leichte Unterschiede in menschlichen Gesichtern geben, aber immerhin, Man kann mit Sicherheit sagen, dass es spezifische Eigenschaften gibt, die mit allen menschlichen Gesichtern verbunden sind.. Es gibt mehrere Gesichtserkennungsalgorithmen, aber Viola-Jones Der Algorithmus ist die älteste Methode, die auch heute noch verwendet wird.
Die Gesichtserkennung ist im Allgemeinen der erste Schritt zu vielen gesichtsbezogenen Anwendungen., wie Gesichtserkennung oder Gesichtsverifizierung. Aber die Gesichtserkennung hat sehr nützliche Anwendungen. Eine der erfolgreichsten Gesichtserkennungsanwendungen ist wahrscheinlich die „Fotoshooting“.
Beispiel: wenn du auf ein Foto deiner Freunde klickst, Die Kamera mit dem integrierten Gesichtserkennungsalgorithmus erkennt, wo sich die Gesichter befinden und passt den Fokus entsprechend an.
Übersicht zur Gesichtserkennung
Jetzt haben wir gesehen, dass unsere Algorithmen Gesichter erkennen können, aber können wir auch erkennen, wessen Gesichter sind? Was ist, wenn ein Algorithmus Gesichter erkennen kann??
Allgemein, Gesichtserkennung ist eine Methode zur Identifizierung oder Überprüfung der Identität einer Person, die sein Gesicht benutzt. Es gibt mehrere Algorithmen für die Gesichtserkennung, aber seine Genauigkeit kann variieren. Hier werde ich mit Ihnen besprechen, wie wir Gesichtserkennung mit Deep Learning durchführen können.
Jetzt, Lassen Sie uns verstehen, wie wir durch Deep Learning Gesichter erkennen können. Hier verwenden wir Gesichtsinlays, bei denen jedes Gesicht in einen Vektor umgewandelt wird. Die Technik, das Gesicht in einen Vektor umzuwandeln, heißt tiefes metrisches Lernen. Lassen Sie mich diesen Prozess zum besseren und einfacheren Verständnis in drei einfache Schritte aufteilen.:
1. Gesichtserkennung:
Die erste Aufgabe, die wir erledigen, besteht darin, Gesichter im Bild zu erkennen (Fotografie) oder Videosequenz. Wir wissen jetzt, dass die Koordinaten / genaue Lage des Gesichts, Also extrahieren wir dieses Gesicht zur weiteren Verarbeitung.
2. Merkmalsextraktion:
Sehen Sie nun, dass wir das Gesicht aus dem Bild beschnitten haben, also extrahieren wir spezifische eigenschaften daraus. Hier werden wir sehen, wie man Gesichtseinlagen verwendet, um diese Merkmale aus dem Gesicht zu extrahieren. Wie wir wissen, ein rotes neuronalesNeuronale Netze sind Rechenmodelle, die von der Funktionsweise des menschlichen Gehirns inspiriert sind. Sie nutzen Strukturen, die als künstliche Neuronen bekannt sind, um Daten zu verarbeiten und daraus zu lernen. Diese Netze sind grundlegend im Bereich der künstlichen Intelligenz, Dies ermöglicht erhebliche Fortschritte bei Aufgaben wie der Bilderkennung, Verarbeitung natürlicher Sprache und Vorhersage von Zeitreihen, unter anderen. Ihre Fähigkeit, komplexe Muster zu erlernen, macht sie zu mächtigen Werkzeugen.. Es nimmt ein Bild des Gesichts der Person als Eingabe und generiert einen Vektor, der die wichtigsten Merkmale eines Gesichts darstellt. Beim maschinellen Lernen, dieser Vektor ist nichts anderes als genannt Verkrustung und deshalb nennen wir diesen Vektor Gesichtseinlage. jedoch, Wie wird Ihnen das helfen, die Gesichter verschiedener Menschen zu erkennen??
Wenn wir das neuronale Netz trainieren, das Netzwerk lernt zu generieren ähnliche Vektoren für gleich aussehende Gesichter. Betrachten wir ein Beispiel, wenn ich mehrere Gesichtsbilder in einem anderen Zeitrahmen habe, Es ist offensichtlich, dass sich einige Eigenschaften ändern können, aber nicht zu viel. Dann, bei diesem Problem, die mit den Gesichtern verbundenen Vektoren sind ähnlich oder wir können sagen, dass sie im Vektorraum sehr nahe beieinander liegen.
Bisher, Wir haben erfahren, wie dieses Netzwerk funktioniert, Mal sehen, wie wir dieses Netzwerk für unsere eigenen Daten verwenden können. Hier übergeben wir alle Bilder aus unseren Daten an dieses zuvor trainierte Netzwerk, um die jeweiligen Einbettungen zu erhalten und diese Einbettungen für den nächsten Schritt in einer Datei zu speichern.
3. Gesichtsvergleich:
Wir haben Gesichtseinlagen für jedes Gesicht in unseren Daten, die in einer Datei gespeichert sind, der nächste schritt ist erkenne ein neues Bild, das ist nicht in unseren Daten. Deswegen, Der erste Schritt besteht darin, das Face-Keying für das Bild mit dem gleichen Raster zu berechnen, das wir zuvor verwendet haben, und dann dieses Keying mit dem Rest des Keyings zu vergleichen, das wir haben. Wir erkennen das Gesicht, wenn das generierte Inlay näher oder ähnlich zu einem anderen Inlay ist.

Bildquelle: https://cdn-media-1.freecodecamp.org/images/1*fpDngO6lM5pDeIPOOezK1g.jpeg
Verstehen Sie, was OpenCV ist
Im Bereich Künstliche Intelligenz, Computer Vision ist eine der interessantesten und herausforderndsten Aufgaben. Computer Vision fungiert als Brücke zwischen Computersoftware und Visualisierungen. Computer Vision ermöglicht es Computersoftware, die Anzeigen auf dem Bildschirm zu verstehen und zu lernen Umfeld.
Lass uns ein Beispiel verstehen: Basierend auf der Form, Farbe und Größe, die die Frucht bestimmt. Diese Aufgabe ist für das menschliche Gehirn sehr einfach, aber im Prozess der Computer Vision, erste, wir müssen die daten sammeln, dann führen wir die Datenverarbeitungsvorgänge durch, und dann trainieren und unterrichten wir das Modell, um zu verstehen, wie man Früchte anhand ihrer Größe unterscheidet, Fruchtform und Farbe.

Bildquelle: https://martinapugliese.github.io/assets/posts_images/yolo-predictions.png
Heute, Es stehen mehrere Pakete zur Verfügung, um Probleme mit maschinellem Lernen zu lösen, Deep Learning und Computer Vision. Bis jetzt, Computer Vision ist das beste Modul für solch komplexe Probleme. OpenCV ist eine Open-Source-Bibliothek. Es unterstützt verschiedene Programmiersprachen wie R, Python, etc. Läuft wahrscheinlich auf den meisten Plattformen wie Windows, Linux und macOS.
Vorteile von OpenCV:
1. Open CV ist kostenlos und eine Open-Source-Bibliothek.
2. Offener Lebenslauf ist schnell, da es in C geschrieben ist / C ++ im Vergleich zu anderen.
3. Mit weniger System-RAM, OpenCV funktioniert besser.
4. Es ist kompatibel mit den meisten Betriebssystemen wie Windows, Linux und macOS.
Implementierung
In diesem Abschnitt, wir implementieren Gesichtserkennung mit OpenCV und Python.
Zuerst, mal sehen, welche Bibliotheken wir brauchen und wie man sie installiert:
1. OpenCV
2. dlib
3. Gesichtserkennung
OpenCV ist eine Bild- und Videobearbeitungsbibliothek und dient der Bild- und Videoanalyse, als Gesichtserkennung, Nummernschild lesen, Fotobearbeitung, fortschrittliche Robotic Vision und vieles mehr.
das dlib Die Bibliothek enthält unsere Implementierung von ‚tiefes metrisches Lernen‘ aus dem unsere Gesichtseinlagen gebaut werden, die für den eigentlichen Erkennungsprozess verwendet werden.
das Gesichtserkennung Die Bibliothek ist sehr einfach zu handhaben und wir werden sie in unserem Code verwenden. Zuerst, Denken Sie daran, die dlib-Bibliothek zu installieren, bevor Sie face_recognition installieren.
Das Ergebnis jeder Gesichtserkennungsanwendung, die OpenCV verwendet, wird wie folgt aussehen:

Bildquelle: https://Spektrum.ieee.org/image/MzU1MTA4Mw.jpeg
So installieren Sie OpenCV, dlib und Gesichtserkennung, Geben Sie die folgenden Snippets an der Eingabeaufforderung ein.
pip install opencv-python
conda install -c conda-forge dlib
pip install face_recognition
Jetzt machen wir den Code!
Gesichtsfunktionen extrahieren
Zuerst, einen Datensatz benötigen oder sogar einen eigenen erstellen. Stellen Sie einfach sicher, dass Sie alle Bilder in Ordnern organisieren, wobei jeder Ordner Bilder von nur einer Person enthält.
Oder Sie können den Datensatz von diesem herunterladen Verknüpfung.
Jetzt, Speichern Sie den Datensatz auf die gleiche Weise in einem Ordner, wie Sie die Datei erstellen. Hier ist der Code und ich habe bei Bedarf Kommentare hinzugefügt:
fromimutilsimportpaths #imutils includes opencv functionsimportface_recognitionimportpickleimportcv2importos
#get paths of each file in folder named Images#Images here that contains data(folders of various people)imagePath=list(paths.list_images('Images'))kEncodings=[]kNames=[]
# loop over the image pathsfor(i, ip)inenumerate(imagePath):# extract the person name from the image pathname=ip.split(os.path.sep)[-2]# load the input image and convert it from BGRimage=cv2.imread(ip)rgb=cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
boxes=face_recognition.face_locations(rgb,model='hog')# compute the facial embedding for the any faceencodings=face_recognition.face_encodings(rgb, boxes)# loop over the encodingsforencodinginencodings:kEncodings.append(encoding)kNames.append(name)
#save emcodings along with their names in dictionary datadata={"encodings": kEncodings,"names": kNames}#use pickle to save data into a file for later usef=open("face_enc","wb")f.write(pickle.dumps(data))#to open file in write modef.close()#to close file
|
Sehen Sie nun, dass wir die Einbettung in einer Datei namens . gespeichert haben „face_enc“, Damit wir sie verwenden können, um Gesichter in Bildern zu erkennen (Fotos) oder Live-Videostreaming. |
Der nächste Teil ist, dass wir sehen, wie man Gesichter aus Bildern erkennt.
Gesichter auf Bildern erkennen
Das folgende Skript zum Erkennen und Erkennen von Gesichtern in Bildern. Ich habe Kommentare neben dem Code gegeben, wo es nötig war. Dann werden Sie in der Lage sein, den Code effizient zu verstehen.
importface_recognitionimportimutils #imutils includes opencv functionsimportpickleimporttimeimportcv2importos
#to find path of xml file containing haarCascade filecfp=os.path.dirname(cv2.__file__)+"/data/haarcascade_frontalface_alt2.xml"# load the harcaascade in the cascade classifierfc=cv2.CascadeClassifier(cfp)# load the known faces and embeddings saved in last filedata=pickle.loads(open('face_enc',"rb").read())
#Find path to the image you want to detect face and pass it hereimage=cv2.imread(Path-to-img)rgb=cv2.cvtColor(image, cv2.COLOR_BGR2RGB)#convert image to Greyscale for HaarCascadegray=cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)faces=fc.detectMultiScale(gray,scaleFactor=1.1,minNeighbors=6,minSize=(60,60),flags=cv2.CASCADE_SCALE_IMAGE)
# the facial embeddings for face in inputencodings=face_recognition.face_encodings(rgb)names=[]# loop over the facial embeddings incase# we have multiple embeddings for multiple fcaesforencodinginencodings:#Compare encodings with encodings in data["encodings"]#Matches contain array with boolean values True and Falsematches=face_recognition.compare_faces(data["encodings"],encoding)#set name =unknown if no encoding matchesname="Unknown"# check to see if we have found a matchifTrueinmatches:#Find positions at which we get True and store themmatchedIdxs=[ifor(i, b)inenumerate(matches)ifb]count={}# loop over the matched indexes and maintain a count for# each recognized face faceforiinmatchedIdxs:#Check the names at respective indexes we stored in matchedIdxsname=data["names"][i]#increase count for the name we gotcount[name]=count.get(name,0)+1#set name which has highest countname=max(count, key=count.get)# will updateEl término "UPDATE" se utiliza comúnmente en el ámbito tecnológico y de la comunicación para referirse a la acción de actualizar información, software o sistemas. En un mundo en constante evolución, las actualizaciones son esenciales para mejorar la seguridad, corregir errores y añadir nuevas funciones. Empresas y usuarios deben estar atentos a las actualizaciones disponibles para asegurar un rendimiento óptimo y mantener la integridad de sus dispositivos y datos.... the list of namesnames.append(name)
# do loop over the recognized facesfor((x, y, w, h), name)inzip(faces, names):# rescale the face coordinates# draw the predicted face name on the imagecv2.rectangle(image, (x, y), (x+w, y+h), (0,255,0),2)cv2.putText(image, name, (x, y), cv2.FONT_HERSHEY_SIMPLEX,0.75, (0,255,0),2)cv2.imshow("Frame", image)cv2.waitKey(0)
Produktion

Fazit
Jetzt sehen Sie, dass wir damit am Ende dieses Artikels angelangt sind, in dem wir alles über die Gesichtserkennung erfahren haben. Ich hoffe dieser Artikel hat dir gefallen. Vielen Dank!
Die in diesem Artikel gezeigten Medien sind nicht Eigentum von DataPeaker und werden nach Ermessen des Autors verwendet.



