Αναγνώριση ανθρώπινου σώματος με το Pictoblox

Αναγνώριση ανθρώπινου σώματος με το Pictoblox

Σε αυτό το εργαστήριο θα δούμε πως μπορούμε να αξιοποιήσουμε το πρόσθετο αναγνώρισης σώματος που έχει το Pictoblox στην κατηγορία της Τεχνητής Νοημοσύνης. Η συγκεκριμένη AI έχει εκπαιδευτεί με χιλιάδες δεδομένα ώστε να αναγνωρίζει πάνω σε μια εικόνα ή βίντεο διάφορα σημεία του ανθρώπινου σώματος, όπως: αυτιά, μάτια, μύτη, χέρια, δάχτυλα, αγκώνες, γόνατα, γοφοί κλπ.

Αναγνώριση σημείων προσώπου – Φίλτρα προσώπου

Θα προσπαθήσουμε να αναγνωρίσουμε αρχικά διάφορα σημεία του προσώπου μας και να τοποθετήσουμε σε αυτό γυαλιά και ένα μουστάκι.

Προσθέτω αρχικά τον χαρακτήρα Face Filters
Τώρα θα ενεργοποιήσω τις πρόσθετες εντολές από το Human Body Detection.

Πριν προχωρήσω στις εντολές για τα γυαλιά θα ελέγξω αρχικά την ενδυμασία για να δω που βρίσκεται το κέντρο της. Όπως παρατηρώ στην παρακάτω εικόνα το κέντρο των γυαλιών είναι στο ύψος της μύτης. Άρα αν κεντράρω τον χαρακτήρα με την μύτη που θα αναγνωρίζεται από το βίντεο θα πετύχω το αποτέλεσμα που επιθυμώ.

Το κέντρο της ενδυμασίας είναι η μύτη

Πάω να γράψω τώρα το σενάριο για τα γυαλιά. Αρχικά θα ενεργοποιώ το βίντεο με 0% διαφάνεια και θα ενεργοποιήσω την εμφάνιση των πράσινων κύκλων που μου επιτρέπουν να βλέπω την αναγνώριση των σημείων από την AI. Μέσα σε μια δομή επανάληψης που θα γίνεται συνέχεια θα αναλύω την εικόνα από την κάμερα και θα ορίσω τις θέσεις X και Υ των γυαλιών ώστε να πηγαίνουν στις θέσεις X και Y της μύτης που αναγνωρίζεται από την κάμερα.

Τρέχω το πρόγραμμα και παρατηρώ το αποτέλεσμα

Το αποτέλεσμα είναι καλό αλλά έχει ένα πρόβλημα. Αν έρθω πολύ κοντά στην κάμερα ή αν φύγω πολύ μακριά, τα γυαλιά φαίνονται άσχημα στο πρόσωπο μου.

Θα πρέπει λοιπόν να αλλάζω διαρκώς το μέγεθος των γυαλιών ώστε να ταιριάζει με το μέγεθος του προσώπου μου, το οποίο είναι μεγαλύτερο όταν έρχομαι κοντά στην κάμερα και μικρότερο όταν φεύγω μακριά. Χρησιμοποιώ τις θέσεις X των ματιών. Η διαφορά τους θα γίνεται μεγαλύτερη όσο μεγαλώνει και το πρόσωπο.

Επίσης πολλαπλασιάζω το αποτέλεσμα της αφαίρεσης και με έναν συντελεστή. Στην δική μου περίπτωση το 2 ήταν ιδανικό!

Πάμε τώρα να βάλουμε το μουστάκι.

Φέρνω πάλι έναν χαρακτήρα Face Filters και αλλάζω την ενδυμασία στο μουστάκι

Παρατηρώ ότι και αυτή η ενδυμασία έχει στο κέντρο της την μύτη άρα μπορώ να χρησιμοποιήσω τον ίδιο κώδικα όπως και στα γυαλιά, χωρίς τις αρχικές εντολές οι οποίες δεν χρειάζεται να εκτελεστούν πάλι.

Και το αποτέλεσμα είναι αρκετά καλό!

Αναγνώριση δαχτύλων χεριού – Ποιον αριθμό δείχνω;

Πάμε τώρα να κάνουμε ένα δεύτερο πρόγραμμα το οποίο θα αναγνωρίζει ποιον αριθμό δείχνουμε στην οθόνη με τα δάχτυλα μας. Θα φέρω αρχικά έναν χαρακτήρα στον οποίο θα γράψω το παρακάτω σενάριο. Θα ενεργοποιώ την κάμερα, την εμφάνιση των πράσινων κύκλων αναγνώρισης και θα αναλύω την εικόνα από την κάμερα για την αναγνώριση χεριού.

Παρατηρώ ότι για κάθε δάχτυλο που βλέπει χρησιμοποιεί 4 σημεία.

Αν κάποιο δάχτυλο είναι σηκωμένο τότε το σημείο κορυφής του θα είναι σίγουρα πιο ψηλά από το μεσαίο του σημείο. Στην αντίθετη περίπτωση, δηλαδή αν το δάχτυλο είναι κατεβασμένο τότε το σημείο κορυφής θα είναι πιο κάτω από την μέση.

Αυτό αλλάζει λίγο με τον αντίχειρα μου. Επειδή για να τον κρύψω τον διπλώνω διαφορετικά, εδώ όταν είναι κατεβασμένο αυτό που αλλάζει είναι ότι το σημείο κορυφής πάει πιο δεξιά από το προηγούμενο.

Πάμε λοιπόν να κάνουμε το πρόγραμμα. Αρχικά θα δημιουργήσω μια μεταβλητή η οποία θα μετράει τα δάχτυλα που βλέπει σηκωμένα η AI.

Μέσα σε μια διαρκή επανάληψη, αρχικά θα μηδενίζω την μεταβλητή και μετά θα ρωτάω για τον δείκτη αν η θέση Y του σημείου κορυφής είναι πιο ψηλά από την μεσαία. Σε αυτή την περίπτωση θα προσθέτω στην μεταβλητή ένα δάχτυλο.

Το ίδιο θα κάνω και για τα υπόλοιπα δάχτυλα εκτός του αντίχειρα.

Στον αντίχειρα θα ελέγχω την θέση X του σημείο κορυφής σε σχέση με την θέση X του μεσαίου σημείου.

Στο τέλος θα εμφανίζω τον αριθμό που υπολόγισα

Σχόλια

Δεν υπάρχουν ακόμη σχόλια. Γιατί δεν ξεκινάτε τη συζήτηση;

Αφήστε μια απάντηση