- Προαπαιτούμενα
- Πώς λειτουργεί η αναγνώριση προσώπου με το OpenCV
- Ανίχνευση προσώπου χρησιμοποιώντας Cascade Classifiers στο OpenCV
Η αναγνώριση προσώπου γίνεται όλο και πιο δημοφιλής και οι περισσότεροι από εμάς το χρησιμοποιούμε ήδη χωρίς καν να το συνειδητοποιήσουμε. Είτε πρόκειται για μια απλή πρόταση Facebook Tag ή Snapchat Filter ή μια προηγμένη παρακολούθηση ασφάλειας αεροδρομίου, το Face Recognition έχει ήδη δουλέψει τη μαγεία του σε αυτό. Η Κίνα έχει αρχίσει να χρησιμοποιεί την αναγνώριση προσώπου στα σχολεία για να παρακολουθεί την παρακολούθηση και τη συμπεριφορά των μαθητών. Τα καταστήματα λιανικής έχουν αρχίσει να χρησιμοποιούν την αναγνώριση προσώπου για να κατηγοριοποιήσουν τους πελάτες τους και να απομονώσουν άτομα με ιστορικό απάτης. Με πολύ περισσότερες αλλαγές σε εξέλιξη, δεν υπάρχει αμφιβολία ότι αυτή η τεχνολογία θα μπορούσε να φανεί παντού στο εγγύς μέλλον.
Σε αυτό το σεμινάριο θα μάθουμε πώς μπορούμε να δημιουργήσουμε το δικό μας σύστημα αναγνώρισης προσώπου χρησιμοποιώντας τη βιβλιοθήκη OpenCV στο Raspberry Pi. Το πλεονέκτημα της εγκατάστασης αυτού του συστήματος σε φορητό Raspberry Pi είναι ότι μπορείτε να το εγκαταστήσετε οπουδήποτε για να το λειτουργήσετε ως σύστημα παρακολούθησης. Όπως όλα τα συστήματα αναγνώρισης προσώπου, το σεμινάριο θα περιλαμβάνει δύο σενάρια python, το ένα είναι ένα πρόγραμμα εκπαίδευσης που θα αναλύσει ένα σύνολο φωτογραφιών ενός συγκεκριμένου ατόμου και θα δημιουργήσει ένα σύνολο δεδομένων (YML File). Το δεύτερο πρόγραμμα είναι το πρόγραμμα Recognizerπου ανιχνεύει ένα πρόσωπο και στη συνέχεια χρησιμοποιεί αυτό το αρχείο YML για να αναγνωρίσει το πρόσωπο και να αναφέρει το όνομα του ατόμου. Και τα δύο προγράμματα που θα συζητήσουμε εδώ είναι για το Raspberry Pi (Linux), αλλά θα λειτουργήσουν επίσης σε υπολογιστές Windows με πολύ μικρές αλλαγές. Έχουμε ήδη μια σειρά από Tutorials για αρχάριους για να ξεκινήσετε με το OpenCV, μπορείτε να δείτε όλα τα μαθήματα OpenCV εδώ.
Προαπαιτούμενα
Όπως ειπώθηκε προηγουμένως, θα χρησιμοποιήσουμε τη βιβλιοθήκη OpenCV για να εντοπίσουμε και να αναγνωρίσουμε πρόσωπα. Γι 'αυτό φροντίστε να εγκαταστήσετε το OpenCV Library στο Pi πριν προχωρήσετε σε αυτό το σεμινάριο. Επίσης, τροφοδοτήστε το Pi με έναν προσαρμογέα 2Α και συνδέστε το σε μια οθόνη οθόνης μέσω καλωδίου HDMI, καθώς δεν θα είμαστε σε θέση να λάβουμε την έξοδο βίντεο μέσω SSH.
Επίσης, δεν πρόκειται να εξηγήσω πώς λειτουργεί ακριβώς το OpenCV, εάν σας ενδιαφέρει να μάθετε την επεξεργασία εικόνων, ρίξτε μια ματιά σε αυτά τα βασικά του OpenCV και σε προχωρημένους οδηγούς επεξεργασίας εικόνων. Μπορείτε επίσης να μάθετε για το περίγραμμα, το Blob Detection κ.λπ. σε αυτό το σεμινάριο τμηματοποίησης εικόνων.
Πώς λειτουργεί η αναγνώριση προσώπου με το OpenCV
Πριν ξεκινήσουμε, είναι σημαντικό να κατανοήσουμε ότι η ανίχνευση προσώπου και η αναγνώριση προσώπου είναι δύο διαφορετικά πράγματα. Στην ανίχνευση προσώπου εντοπίζεται μόνο το πρόσωπο ενός ατόμου, το λογισμικό δεν θα έχει ιδέα ποιος είναι αυτός ο άνθρωπος. Στην αναγνώριση προσώπου το λογισμικό όχι μόνο θα ανιχνεύσει το πρόσωπο αλλά και θα αναγνωρίσει το άτομο. Τώρα, πρέπει να είναι σαφές ότι πρέπει να εκτελέσουμε την Ανίχνευση προσώπου πριν από την εκτέλεση της Αναγνώρισης προσώπου. Δεν θα μπορούσα να εξηγήσω πώς ακριβώς το OpenCV ανιχνεύει ένα πρόσωπο ή οποιοδήποτε άλλο αντικείμενο για αυτό το θέμα. Έτσι, αν θέλετε να μάθετε ότι μπορείτε να ακολουθήσετε αυτό το σεμινάριο Ανίχνευσης Αντικειμένων.
Μια ροή βίντεο από μια κάμερα web δεν είναι τίποτα περισσότερο από μια μεγάλη ακολουθία ακίνητων εικόνων που ενημερώνονται το ένα μετά το άλλο. Και κάθε μία από αυτές τις εικόνες είναι απλώς μια συλλογή εικονοστοιχείων διαφορετικών τιμών που συγκεντρώνονται στην αντίστοιχη θέση. Πώς μπορεί λοιπόν ένα πρόγραμμα να εντοπίσει ένα πρόσωπο από αυτά τα pixel και να αναγνωρίσει περαιτέρω το άτομο που βρίσκεται σε αυτό; Υπάρχουν πολλοί αλγόριθμοι πίσω από αυτό και η προσπάθεια εξήγησής τους είναι πέρα από το πεδίο εφαρμογής αυτού του άρθρου, αλλά δεδομένου ότι χρησιμοποιούμε τη βιβλιοθήκη OpenCV είναι πολύ απλό να εκτελέσουμε αναγνώριση προσώπου χωρίς να εμβαθύνουμε τις έννοιες
Ανίχνευση προσώπου χρησιμοποιώντας Cascade Classifiers στο OpenCV
Μόνο αν είμαστε σε θέση να εντοπίσουμε ένα πρόσωπο, θα μπορέσουμε να το αναγνωρίσουμε ή να το θυμόμαστε. Για την ανίχνευση ενός αντικειμένου, όπως το πρόσωπο, το OpenCV χρησιμοποιεί κάτι που ονομάζεται Classifiers. Αυτοί οι ταξινομητές είναι ένα προ-εκπαιδευμένο σύνολο δεδομένων (XML File) που μπορούν να χρησιμοποιηθούν για την ανίχνευση ενός συγκεκριμένου αντικειμένου στην περίπτωσή μας ενός προσώπου. Μπορείτε να μάθετε περισσότερα για τους Ταξινομητές Ανίχνευσης Προσώπων εδώ. Εκτός από την ανίχνευση προσώπου, οι ταξινομητές μπορούν να εντοπίσουν άλλα αντικείμενα, όπως μύτη, μάτια, πινακίδα οχήματος, χαμόγελο κ.λπ.
Ταξινομητές για ανίχνευση αντικειμένων στο Python
Εναλλακτικά, το OpenCV σάς επιτρέπει επίσης να δημιουργήσετε το δικό σας Classifier που μπορεί να χρησιμοποιηθεί για την ανίχνευση οποιουδήποτε άλλου αντικειμένου σε μια εικόνα με την εκπαίδευση του Cascade Classifier. Σε αυτό το σεμινάριο θα χρησιμοποιήσουμε έναν ταξινομητή που ονομάζεται "haarcascade_frontalface_default.xml" ο οποίος θα ανιχνεύσει το πρόσωπο από την μπροστινή θέση. Θα δούμε