Σε αυτό το άρθρο, θα συζητήσουμε τη διαδικασία ανίχνευσης προσώπου χρησιμοποιώντας το Ανίχνευση Dlib HOG αλγόριθμος. Αν και σε αυτό το άρθρο δεν θα δοκιμάσουμε μόνο το μετωπικό πρόσωπο αλλά και τις διαφορετικές γωνίες της εικόνας και θα δούμε πού θα αποδώσει καλά το μοντέλο μας και πού όχι μαζί με αυτό, θα υπολογίσουμε τον συνολικό χρόνο που χρειάζεται η Μοντέλο ανιχνευτή HOG για να εντοπίσετε τα πρόσωπα στην εικόνα.
Πηγή εικόνας: Towards Data Science
Εφαρμογή ανίχνευσης προσώπου
Σκοπός ασφαλείας: Η αναγνώριση προσώπου αποδεικνύεται ότι είναι η πιο κοινή μέθοδος για τη διατήρηση της ασφάλειας του ατόμου/οργανισμού.
Εταιρείες κοινής χρήσης βόλτας: Θα τους βοηθήσει να ελέγξουν αν ο οδηγός επέλεξε το σωστό άτομο ή όχι.
Οικιακός αυτοματισμός: Για να διατηρηθεί η ασφάλεια, ειδικά σε ένα σπίτι που βασίζεται στην τεχνολογία, είναι απαραίτητη η ανίχνευση και η αναγνώριση προσώπου.
Εισαγάγετε τις Βιβλιοθήκες
Θα εισάγουμε πρώτα τις απαιτούμενες βιβλιοθήκες.
import cv2
import dlib
from time import time
import matplotlib.pyplot as plt
Ανίχνευση προσώπου Dlib HoG
Εάν θέλουμε να μάθουμε για την ανίχνευση προσώπου HOG, τότε πρώτα ας αναλύσουμε τον όρο που είναι το Ιστόγραμμα των προσανατολισμένων κλίσεων που δεν είναι μόνο ένας αλγόριθμος ανίχνευσης προσώπου αλλά και μια ολοκληρωμένη μέθοδος ανίχνευσης αντικειμένων γενικά. Το HOG είναι βασικά ένας περιγραφέας χαρακτηριστικών που εκτελείται τόσο για τεχνικές επεξεργασίας εικόνας όσο και για τεχνικές όρασης υπολογιστή.
Το HOG χρησιμοποιεί κυρίως 5 φίλτρα κατά το στάδιο της προεπεξεργασίας, τα οποία είναι τα εξής:
Μετωπικό πρόσωπο
Η δεξιά πλευρά γυρισμένη όψη
Η αριστερή πλευρά γυρισμένη όψη
Το μετωπικό πρόσωπο αλλά περιστρέφεται δεξιά
Το μετωπικό πρόσωπο αλλά περιστρεφόταν αριστερά
Πηγή εικόνας: Dlib C++
Φόρτωση του ανιχνευτή προσώπου HOG
Έχουμε καταλάβει μακράν τι είναι ο ανιχνευτής προσώπου HOG, αλλά για να τον χρησιμοποιήσουμε πρέπει πρώτα να φορτώσουμε τον ανιχνευτή προσώπου δηλ. Συνάρτηση dlib.get_frontal_face_detector(). που είναι μια προεκπαιδευμένη μέθοδος και αυτή η συνάρτηση έχει τη βιβλιοθήκη dlib εκ των προτέρων, οπότε δεν χρειάζεται καν να συμπεριλάβουμε το κύριο αρχείο μοντέλου.
<_dlib_pybind11.fhog_object_detector at 0x1d669827770>
Λειτουργία ανίχνευσης προσώπου HoG
Τώρα λοιπόν ήρθε η ώρα να δημιουργήσετε μια λειτουργία ανίχνευσης προσώπου HOG που θα είναι πολύ αξιόπιστη μακροπρόθεσμα. Για τους σκοπούς της δοκιμής, θα χρησιμοποιούμε διαφορετικούς τύπους θέσεων κεφαλιού/προσώπου, επομένως για εκείνη τη στιγμή, δεν θα απαιτείται να εκτελούμε την ίδια εργασία ξανά και ξανά.
Εικόνα: Αυτή η παράμετρος θα κρατήσει το δείγμα εικόνας στο οποίο πρέπει να εκτελέσουμε την ανίχνευση προσώπου.
Upsamp: Αυτή η παράμετρος είναι η προαιρετική και θα είναι υπεύθυνη για τη δειγματοληψία της εικόνας εισόδου πριν από την εκτέλεση της ανίχνευσης προσώπου.
Πώς θα επιστρέψει αυτή η συνάρτηση;
Αποτελέσματα: Το αποτέλεσμα θα είναι στη μορφή της δομής δεδομένων πίνακα που θα κρατά τις συντεταγμένες των οριοθετημένων πλαισίων των ανιχνευόμενων προσώπων/προσώπων.
Πότε πρέπει να κάνουμε Upsamp της εικόνας;
Καθώς αυτός ο αλγόριθμος HOG έχει εκπαιδευτεί με σκοπό την ανίχνευση μεγέθους προσώπου τουλάχιστον 8×80, έτσι όποτε σκεφτόμαστε να ανιχνεύσουμε ένα πρόσωπο μικρότερο από αυτό, πρέπει να κάνουμε upsamp της εικόνας που θα αυξήσει την ανάλυση της εικόνας.
Στο πρώτο βήμα, θα πάρουμε το ύψος και πλάτος της εικόνας χρησιμοποιώντας το σχήμα λειτουργία.
Δημιουργία αντιγράφου της εικόνας έτσι ώστε να μπορούμε να εκτελέσουμε όλες τις εργασίες στην εικόνα αντιγραφής αντί στην αρχική εικόνα.
Στη συνέχεια, έχουμε μετατρέψει το δείγμα της εικόνας μας από BGR σε RGB μορφή.
Όπως σε αυτό το άρθρο, υπολογίζουμε τον χρόνο που απαιτείται για την ανίχνευση από τον αλγόριθμο, έτσι για αυτό, αποκτήσαμε πρόσβαση στην τρέχουσα ώρα.
Τώρα θα χρησιμοποιήσουμε το hog_face_detector για να εκτελέσετε την ανίχνευση προσώπου.
Μαζί με την ώρα έναρξης, θα ανακτήσουμε και το τέλος χρόνου.
Τώρα θα κάνουμε βρόχο μέσα από τα πλαίσια οριοθέτησης και θα ανακτήσουμε το (X1, Y1) και (X2, Y2) συντεταγμένες του πλαισίου οριοθέτησης στη συνέχεια με βάση αυτές τις συντεταγμένες θα σχεδιάσουμε τα οριοθετημένα πλαίσια.
Εδώ έρχεται ένα ελαφρύ επικύρωση μέρος όπου θα ελέγξουμε αν θα εμφανίσουμε την είσοδο και την προκύπτουσα εικόνα ή όχι.
Εάν ναι, θα δώσουμε το ακριβής ώρα που χρειάστηκε ο αλγόριθμός μας για να εκτελέσει την ανίχνευση προσώπου και στη συνέχεια να εμφανίσει και τις δύο εικόνες.
Διαφορετικά, απλά θα δώσουμε το αποτελέσματα και την εικόνα εξόδου.
Όπως έχουμε δημιουργήσει τη λειτουργία ανίχνευσης προσώπου π.χ hogDetectFaces οπότε ας το χρησιμοποιήσουμε τώρα για να εντοπίσουμε τα πρόσωπα που χρησιμοποιούν τον αλγόριθμο HOG.
Ανάγνωση του δείγματος εικόνας για μετωπική ανίχνευση προσώπου
Στην παραπάνω εικόνα, μπορείτε να δείτε ότι το μοντέλο μας εντόπισε τέλεια το πρόσωπο σε 0,71 δευτερόλεπτα, κάτι που δείχνει ότι μαζί με την ακρίβεια είναι και πιο γρήγορο.
Στην παραπάνω έξοδο, μπορούμε να δούμε ότι το μοντέλο μας έχει προβλέψει και σχεδιάσει τα πλαίσια οριοθέτησης στην εικόνα με ακρίβεια και αποτελεσματικότητα.
Έτσι, από την παραπάνω έξοδο, μπορούμε να συμπεράνουμε ότι το μοντέλο ανίχνευσης προσώπου HOG όχι μόνο ανιχνεύει το μετωπικό πρόσωπο αλλά και το κεκλιμένο πρόσωπο με ευκολία και αποτελεσματικότητα, και αυτό πολύ γρήγορα.
Όπως στο εισαγωγικό μέρος του Ανιχνευτής προσώπου HOG, δεν θα μπορεί να ανιχνεύσει πρόσωπα με μέγεθος μικρότερο από 80×80. Αλλά αν θέλουμε ακόμα να ανιχνεύσουμε αυτά τα πρόσωπα, τότε πρέπει να το κάνουμε πολυτελή την εικόνα χρησιμοποιώντας το επάνω δείγμα επιχείρημα του Ανιχνευτής προσώπου HOG που είναι εκεί μέσα hogDetectFaces() αν και ο χρόνος υπολογισμού θα αυξηθεί επίσης μετά από αυτή τη διαδικασία.
συμπέρασμα
Έτσι, επιτέλους δοκιμάσαμε τη λειτουργία μας που κατασκευάστηκε πάνω από τον ανιχνευτή προσώπου DLIB και είδαμε επίσης τους περιορισμούς και τα πλεονεκτήματα του ίδιου τώρα ας ρίξουμε μια ματιά σε αυτά που έχουμε καλύψει μέχρι τώρα.
Το πρώτο στοιχείο από αυτό το άρθρο είναι ότι έχουμε μάθει εντελώς διαφορετικούς αλγόριθμους/μεθόδους για να κάνουμε ανίχνευση προσώπου, π.χ. Ανίχνευση προσώπου HOG.
Στη συνέχεια, δοκιμάσαμε επίσης το μοντέλο μας με μια ποικιλία εικόνων και αντλήσαμε πληροφορίες από αυτό σχετικά με την καλή απόδοση του.
Μαζί με την ακρίβεια της ανίχνευσης, μάθαμε επίσης πώς να παρακολουθούμε τη γρήγορη επεξεργασία της ανίχνευσης.
Θέλετε να μάθετε πώς να δημιουργείτε ένα σύστημα ανίχνευσης προσώπου; Προχωρήστε στο blog μας!
Τα μέσα που εμφανίζονται σε αυτό το άρθρο δεν ανήκουν στο Analytics Vidhya και χρησιμοποιούνται κατά την κρίση του συγγραφέα.