- Απαιτούμενα στοιχεία
- Εγκατάσταση του OpenCV στο Raspberry Pi
- Πώς να εντοπίσετε τα μέρη προσώπου χρησιμοποιώντας το dlib
- Προγραμματισμός του Raspberry Pi για ανίχνευση ορόσημων προσώπου
- Δοκιμή του αναγνωριστικού μέρους προσώπου
Η ανίχνευση των ορόσημων του προσώπου είναι η διαδικασία ανίχνευσης διαφόρων μερών στο πρόσωπο όπως τα φρύδια, τα μάτια, η μύτη, το στόμα και το σαγόνι. Υπάρχουν πολλές εφαρμογές που χρησιμοποιούν τεχνικές ανίχνευσης προσώπου.
Προηγουμένως δημιουργήσαμε ένα σύστημα αναγνώρισης προσώπου χρησιμοποιώντας το OpenCV, σήμερα θα χρησιμοποιήσουμε το ίδιο OpenCV με το Raspberry Pi για τον εντοπισμό ορόσημων προσώπου. Μια προ-εκπαιδευμένη ενότητα ανιχνευτή ορόσημων προσώπου από τη βιβλιοθήκη dlib θα χρησιμοποιηθεί για την ανίχνευση της θέσης των βασικών δομών του προσώπου στο πρόσωπο και το python OpenCV θα χρησιμοποιηθεί για την οπτικοποίηση των ανιχνευόμενων μερών.
Απαιτούμενα στοιχεία
Εξαρτήματα υλικού
- Raspberry Pi 3
- Ενότητα κάμερας Pi
Λογισμικό και διαδικτυακές υπηρεσίες
- OpenCV
- Ντιμπλ
- 3. Πύθων
Πριν προχωρήσουμε σε αυτό το Raspberry Pi 3 Facial Landmark Detection , πρώτα, πρέπει να εγκαταστήσουμε το OpenCV, imutils, dlib, Numpy και κάποιες άλλες εξαρτήσεις σε αυτό το έργο. Το OpenCV χρησιμοποιείται εδώ για ψηφιακή επεξεργασία εικόνας. Οι πιο συνηθισμένες εφαρμογές της Ψηφιακής Επεξεργασίας Εικόνας είναι η ανίχνευση αντικειμένων, η Αναγνώριση προσώπου και ο μετρητής.
Για να μάθετε περισσότερα σχετικά με τον τρόπο διασύνδεσης της κάμερας Pi με το Raspberry Pi, ακολουθήστε τα προηγούμενα μαθήματα.
Εγκατάσταση του OpenCV στο Raspberry Pi
Εδώ θα χρησιμοποιηθεί η βιβλιοθήκη OpenCV για το σαρωτή Raspberry Pi QR. Για να εγκαταστήσετε το OpenCV, πρώτα, ενημερώστε το Raspberry Pi.
sudo apt-get ενημέρωση
Στη συνέχεια, εγκαταστήστε τις απαιτούμενες εξαρτήσεις για την εγκατάσταση του OpenCV στο Raspberry Pi σας.
sudo apt-get install libhdf5-dev -y sudo apt-get install libhdf5-serial-dev -y sudo apt-get install libatlas-base-dev -y sudo apt-get install libjasper-dev -y sudo apt-get install libqtgui4 –Y sudo apt-get install libqt4-test –y
Μετά από αυτό, εγκαταστήστε το OpenCV στο Raspberry Pi χρησιμοποιώντας την παρακάτω εντολή.
εγκατάσταση pip3 opencv-contrib-python == 4.1.0.25
Χρησιμοποιήσαμε προηγουμένως το OpenCV με Raspberry pi και δημιουργήσαμε πολλά σεμινάρια για αυτό.
- Εγκατάσταση του OpenCV στο Raspberry Pi χρησιμοποιώντας CMake
- Αναγνώριση προσώπου σε πραγματικό χρόνο με Raspberry Pi και OpenCV
- Αναγνώριση πινακίδας με χρήση Raspberry Pi και OpenCV
- Εκτίμηση μεγέθους πλήθους με χρήση OpenCV και Raspberry Pi
Έχουμε επίσης δημιουργήσει μια σειρά μαθημάτων OpenCV ξεκινώντας από το αρχικό επίπεδο.
Εγκατάσταση imutils : Το imutils χρησιμοποιείται για την εκτέλεση λίγων απαραίτητων λειτουργιών επεξεργασίας εικόνας, όπως μετάφραση, περιστροφή, αλλαγή μεγέθους, σκελετοποίηση και προβολή ευκολότερων εικόνων Matplotlib με το OpenCV. Εγκαταστήστε λοιπόν imutils χρησιμοποιώντας την παρακάτω εντολή:
pip3 εγκαταστήστε imutils
Η εγκατάσταση του dlib: dlib είναι η σύγχρονη εργαλειοθήκη που περιέχει αλγόριθμους μηχανικής μάθησης και εργαλεία για πραγματικά προβλήματα. Χρησιμοποιήστε την παρακάτω εντολή για να εγκαταστήσετε το dlib.
pip3 εγκατάσταση dlib
Εγκατάσταση του NumPy : Το NumPy είναι η βασική βιβλιοθήκη για τον επιστημονικό υπολογισμό που περιέχει ένα ισχυρό αντικείμενο διαστάσεων διαστάσεων, παρέχει εργαλεία για την ενσωμάτωση C, C ++ κ.λπ.
Pip3 εγκατάσταση numpy
Πώς να εντοπίσετε τα μέρη προσώπου χρησιμοποιώντας το dlib
Θα χρησιμοποιήσουμε τον προ-εκπαιδευμένο ανιχνευτή ορόσημων προσώπου της βιβλιοθήκης του dlib για να εντοπίσουμε τη θέση των 68 (x, y) -συντεταγμένων που αντιστοιχούν στις δομές του προσώπου στο πρόσωπο. Η πρόβλεψη ορόσημου προσώπου dlib έχει εκπαιδευτεί στο σύνολο δεδομένων iBUG 300-W. Παρακάτω δίνεται μια εικόνα που περιέχει τους δείκτες των 68 συντεταγμένων:
Προγραμματισμός του Raspberry Pi για ανίχνευση ορόσημων προσώπου
Πλήρης κωδικός python για αναγνώριση ανταλλακτικών προσώπου με τον προ-εκπαιδευμένο ανιχνευτή ορόσημων προσώπου του dlib παρέχεται στο τέλος της σελίδας. Εδώ εξηγούμε ορισμένα σημαντικά μέρη του κώδικα για καλύτερη κατανόηση.
Έτσι, ως συνήθως, ξεκινήστε τον κώδικα συμπεριλαμβάνοντας όλες τις απαιτούμενες βιβλιοθήκες.
από imutils import face_utils import numpy as np import argparse import imutils import dlib import cv2 from picamera.array import PiRGBArray από picamera import PiCamera
Στη συνέχεια, αρχικοποιήστε το αντικείμενο της κάμερας και ορίστε την ανάλυση στα (640, 480) και ο ρυθμός καρέ στα 30 fps
κάμερα = PiCamera () camera.resolution = (640, 480) camera.framerate = 30
Τώρα στις επόμενες γραμμές, χρησιμοποιήστε το πρόγραμμα ανάλυσης ορισμάτων για να δώσετε τη διαδρομή προς την πρόβλεψη ορόσημων προσώπου.
ap = argparse.ArgumentParser () ap.add_argument ("- p", "--shape-predoror", απαιτείται = True, help = "διαδρομή πρόβλεψης ορόσημο προσώπου") args = vars (ap.parse_args ())
Στις επόμενες γραμμές, αρχικοποιήστε τον προ-εκπαιδευμένο ανιχνευτή προσώπου του dlib με βάση το HOG και φορτώστε τον προ-εκπαιδευμένο προγνωστικό ορόσημο προσώπου.
ανιχνευτής = dlib.get_frontal_face_detector () prediktor = dlib.shape_predictor (args)
Στη συνέχεια, χρησιμοποιήστε τη λειτουργία capture_continuous για να ξεκινήσετε τη λήψη των πλαισίων από την κάμερα Raspberry Pi.
για frame in camera.capture_continuous (rawCapture, format = "bgr", use_video_port = True): image = frame.array cv2.imshow ("Frame", image) key = cv2.waitKey (1) & 0xFF rawCapture.truncate (0)
Χρησιμοποιήστε το πλήκτρο πληκτρολογίου 'S' για να τραβήξετε ένα συγκεκριμένο πλαίσιο. Στη συνέχεια, αλλάξτε το μέγεθος της ληφθείσας εικόνας και μετατρέψτε την σε κλίμακα του γκρι.
if key == ord ("s"): image = imutils.resize (εικόνα, πλάτος = 400) γκρι = cv2.cvtColor (εικόνα, cv2.COLOR_BGR2GRAY)
Χρησιμοποιήστε τη λειτουργία ανίχνευσης της βιβλιοθήκης dlib για να εντοπίσετε τα πρόσωπα στην εικόνα που τραβήχτηκε.
rects = ανιχνευτής (γκρι, 1)
Τραβήξτε την εικόνα στην οποία πραγματοποιήθηκε η ανίχνευση προσώπου, προσδιορίστε τα ορόσημα του προσώπου και μετατρέψτε τα 68 σημεία σε μια σειρά NumPy. Περιστρέψτε κάθε μία από τις περιοχές προσώπου ξεχωριστά
για (i, ορθογώνιο) σε απαρίθμηση (ορθές): σχήμα = πρόβλεψη (γκρι, ορθό) σχήμα = face_utils.shape_to_np (σχήμα)
Στη συνέχεια, πάρτε ένα αντίγραφο της αρχικής εικόνας και χρησιμοποιήστε το για τον βρόχο για να σχεδιάσετε το όνομα του τμήματος προσώπου στην εικόνα. Το χρώμα του κειμένου θα είναι κόκκινο, μπορείτε να το αλλάξετε σε άλλο χρώμα αλλάζοντας τις τιμές RGB.
για [όνομα, (i, j)] στο face_utils.FACIAL_LANDMARKS_IDXS.items (): clone = image.copy () cv2.putText (κλώνος, όνομα, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0), 255), 2)
Τώρα θα βρούμε τα εντοπισμένα μέρη προσώπου και θα χρησιμοποιήσουμε τη λειτουργία σχεδίασης OpenCV για να σχεδιάσουμε κύκλους σε αυτά τα μέρη προσώπου. Μπορείτε να ακολουθήσετε αυτό το έγγραφο OpenCV για περισσότερες πληροφορίες σχετικά με τις λειτουργίες σχεδίασης
για (x, y) σε σχήμα: cv2.circle (clone, (x, y), 1, (0, 0, 255), -1)
Τώρα στις επόμενες γραμμές, θα εξαγάγουμε κάθε τμήμα προσώπου ως ξεχωριστή εικόνα υπολογίζοντας το πλαίσιο οριοθέτησης των συντεταγμένων ενός συγκεκριμένου μέρους προσώπου. Το μέγεθος της εξαγόμενης εικόνας θα αλλάξει το μέγεθος σε 250 pixel.
(x, y, w, h) = cv2.boundingRect (np.array (])) roi = εικόνα roi = imutils.resize (roi, πλάτος = 250, inter = cv2.INTER_CUBIC)
Τώρα στις τελευταίες γραμμές του κώδικα, εμφανίστε τα μέρη προσώπου με τα ονόματά τους και μια ξεχωριστή εικόνα αυτού του τμήματος. Χρησιμοποιήστε το πλήκτρο ESC για να αλλάξετε την περιοχή του προσώπου.
cv2.imshow ("ROI", roi) cv2.imshow ("Εικόνα", κλώνος) cv2.waitKey (0)
Δοκιμή του αναγνωριστικού μέρους προσώπου
Για να δοκιμάσετε το έργο, δημιουργήστε έναν κατάλογο και μεταβείτε σε αυτό χρησιμοποιώντας τις παρακάτω εντολές:
mkdir πρόσωπο-μέρος-ανιχνευτής cd πρόσωπο-μέρος-ανιχνευτής
Τώρα κατεβάστε το αρχείο shape_predictor_68_face_landmarks.dat από αυτόν τον σύνδεσμο και, στη συνέχεια, εξαγάγετε και αντιγράψτε το αρχείο shape_predictor_68_face_landmarks.dat μέσα σε αυτήν τη βιβλιοθήκη και, στη συνέχεια, ανοίξτε ένα νέο αρχείο με το όνομα det.py και επικολλήστε τον παρακάτω κώδικα.
Τώρα ξεκινήστε τον κώδικα python χρησιμοποιώντας την παρακάτω εντολή:
python3 ανίχνευση.py - σχήμα-πρόβλεψη σχήμα_predictor_68_face_landmarks.dat
Θα δείτε ένα παράθυρο που δείχνει μια ζωντανή προβολή από την κάμερά σας. Στη συνέχεια, πατήστε το πλήκτρο 'S' για να επιλέξετε ένα πλαίσιο από τη ζωντανή ροή. Θα δείτε κόκκινες κουκίδες στην περιοχή του στόματος σας. Χρησιμοποιήστε το πλήκτρο ESC για να δείτε τα άλλα μέρη της όψης.
Ο πλήρης κώδικας python και το βίντεο επίδειξης δίνονται παρακάτω.