Προστασία ανθρώπων από επικίνδυνες περιοχές μέσω εικονικών ορίων με το Computer Vision

Κόμβος πηγής: 807925

Καθώς οι εταιρείες καλωσορίζουν περισσότερα αυτόνομα ρομπότ και άλλο βαρύ εξοπλισμό στο χώρο εργασίας, πρέπει να διασφαλίσουμε ότι ο εξοπλισμός μπορεί να λειτουργεί με ασφάλεια γύρω από ανθρώπους συμπαίκτες. Σε αυτήν την ανάρτηση, θα σας δείξουμε πώς να δημιουργήσετε ένα εικονικό όριο με την όραση υπολογιστή και DeepLens AWS, η βιντεοκάμερα με δυνατότητα βαθιάς εκμάθησης AWS που έχει σχεδιαστεί για προγραμματιστές να μαθαίνουν μηχανική μάθηση (ML). Χρησιμοποιώντας τις τεχνικές μηχανικής εκμάθησης σε αυτήν την ανάρτηση, μπορείτε να δημιουργήσετε εικονικά όρια για περιορισμένες περιοχές που κλείνουν αυτόματα τον εξοπλισμό ή ηχούν μια ειδοποίηση όταν οι άνθρωποι πλησιάζουν.

Για αυτό το έργο, θα εκπαιδεύσετε ένα προσαρμοσμένο μοντέλο ανίχνευσης αντικειμένων με Amazon Sage Maker και αναπτύξτε το μοντέλο σε μια συσκευή AWS DeepLens. Ο εντοπισμός αντικειμένων είναι ένας αλγόριθμος ML που παίρνει μια εικόνα ως είσοδο και προσδιορίζει τα αντικείμενα και τη θέση τους μέσα στην εικόνα. Εκτός από τις λύσεις εικονικών ορίων, μπορείτε να εφαρμόσετε τεχνικές που μαθαίνετε σε αυτήν την ανάρτηση όταν χρειάζεται να εντοπίσετε πού βρίσκονται ορισμένα αντικείμενα μέσα σε μια εικόνα ή να μετρήσετε τον αριθμό των περιπτώσεων ενός επιθυμητού αντικειμένου σε μια εικόνα, όπως η καταμέτρηση στοιχείων σε έναν κάδο αποθήκευσης ή σε ένα ράφι λιανικής.

Επισκόπηση λύσεων

Η πορεία περιλαμβάνει τα ακόλουθα βήματα:

  1. Προετοιμάστε το σύνολο δεδομένων σας για τροφοδοσία σε έναν αλγόριθμο ML.
  2. Εκπαιδεύστε ένα μοντέλο με το Amazon SageMaker.
  3. Δοκιμαστικό μοντέλο με προσαρμοσμένες ζώνες περιορισμού.
  4. Αναπτύξτε τη λύση στο AWS DeepLens.

Συζητούμε επίσης άλλες περιπτώσεις χρήσης πραγματικού κόσμου όπου μπορείτε να εφαρμόσετε αυτήν τη λύση.

Το παρακάτω διάγραμμα απεικονίζει την αρχιτεκτονική λύσεων.

Προϋποθέσεις

Για να ολοκληρώσετε αυτήν την περιήγηση, πρέπει να έχετε τις ακόλουθες προϋποθέσεις:

Προετοιμάστε το σύνολο δεδομένων σας για τροφοδοσία σε έναν αλγόριθμο ML

Αυτή η ανάρτηση χρησιμοποιεί έναν αλγόριθμο ML που ονομάζεται μοντέλο ανίχνευσης αντικειμένων για να δημιουργήσει μια λύση που εντοπίζει εάν ένα άτομο βρίσκεται σε μια προσαρμοσμένη περιορισμένη ζώνη. Χρησιμοποιείτε τα δημόσια διαθέσιμα Δεδομένα ανίχνευσης πεζών διαθέσιμο στο Kaggle, το οποίο έχει πάνω από 2,000 εικόνες. Αυτό το σύνολο δεδομένων έχει ετικέτες για ανθρώπινα και ανθρώπινα αντικείμενα (όπως μανεκέν), έτσι ώστε το εκπαιδευμένο μοντέλο να μπορεί να διακρίνει με μεγαλύτερη ακρίβεια τους πραγματικούς ανθρώπους και τα στηρίγματα από χαρτόνι ή αγάλματα.

Για παράδειγμα, οι παρακάτω εικόνες είναι παραδείγματα ανίχνευσης εργάτη οικοδομών και εάν βρίσκονται στην προσαρμοσμένη ζώνη περιορισμού (κόκκινο περίγραμμα).

Για να ξεκινήσετε να εκπαιδεύετε το μοντέλο σας, δημιουργήστε πρώτα έναν κάδο S3 για να αποθηκεύσετε τα δεδομένα προπόνησής σας και τα αποτελέσματα του μοντέλου. Για έργα AWS DeepLens, τα ονόματα του κάδου S3 πρέπει να ξεκινούν με το πρόθεμα deeplens-. Χρησιμοποιείτε αυτά τα δεδομένα για να εκπαιδεύσετε ένα μοντέλο με το SageMaker, μια πλήρως διαχειριζόμενη υπηρεσία που παρέχει τη δυνατότητα γρήγορης δημιουργίας, εκπαίδευσης και ανάπτυξης μοντέλων ML.

Εκπαιδεύστε ένα μοντέλο με το Amazon SageMaker

Χρησιμοποιείτε σημειωματάρια SageMaker Jupyter ως περιβάλλον ανάπτυξης για να εκπαιδεύσετε το μοντέλο. Το Jupyter Notebook είναι μια εφαρμογή web ανοιχτού κώδικα που σας επιτρέπει να δημιουργείτε και να μοιράζεστε έγγραφα που περιέχουν ζωντανό κώδικα, εξισώσεις, απεικονίσεις και αφηγηματικό κείμενο. Για αυτήν την ανάρτηση, παρέχουμε Train_Object_Detection_People_DeepLens.ipynb, ένα πλήρες σημειωματάριο για να το ακολουθήσετε.

Για να δημιουργήσετε ένα προσαρμοσμένο μοντέλο ανίχνευσης αντικειμένων, πρέπει να χρησιμοποιήσετε μια παρουσία εργασίας εκπαίδευσης με ενεργοποιημένη μονάδα επεξεργασίας γραφικών (GPU). Οι GPU είναι εξαιρετικές στον παραλληλισμό των υπολογισμών που απαιτούνται για την εκπαίδευση ενός νευρωνικού δικτύου. Αν και το ίδιο το σημειωματάριο είναι μια μεμονωμένη παρουσία ml.t2.medium, η εργασία εκπαίδευσης χρησιμοποιεί συγκεκριμένα μια παρουσία ml.p2.xlarge. Για να αποκτήσετε πρόσβαση σε μια παρουσία εργασίας εκπαίδευσης με δυνατότητα GPU, πρέπει υποβάλετε αίτημα για αύξηση ορίου υπηρεσίας στο Κέντρο Υποστήριξης AWS.

Αφού λάβετε την αύξηση του ορίου σας, ολοκληρώστε τα ακόλουθα βήματα για να δημιουργήσετε μια παρουσία σημειωματάριου SageMaker:

  1. Στην κονσόλα SageMaker, επιλέξτε Υποδείγματα σημειωματάριου.
  2. Επιλέξτε Δημιουργία παρουσίας σημειωματάριου.
  3. Για Όνομα παρουσίας σημειωματάριου, πληκτρολογήστε ένα όνομα για την παρουσία του φορητού υπολογιστή σας.
  4. Για Τύπος παρουσίας, επιλέξτε t2.μέσο.

Αυτός είναι ο λιγότερο δαπανηρός τύπος παρουσίας που υποστηρίζουν οι παρουσίες φορητών υπολογιστών και αρκεί για αυτό το σεμινάριο.

  1. Για IAM ρόλο, επιλέξτε Δημιουργήστε ένα νέο ρόλο.

Βεβαιωθείτε ότι αυτό Διαχείριση ταυτότητας και πρόσβασης AWS Ο ρόλος (IAM) έχει πρόσβαση στον κάδο S3 που δημιουργήσατε νωρίτερα (πρόθεμα deeplens-).

  1. Επιλέξτε Δημιουργία παρουσίας σημειωματάριου. Μπορεί να χρειαστούν μερικά λεπτά για να ξεκινήσει η παρουσία του φορητού υπολογιστή σας.
  1. Όταν η κατάσταση στη σελίδα εμφανίσεων σημειωματάριου αλλάξει σε InService, επιλέξτε Άνοιγμα του Jupyter για να εκκινήσετε το νεοδημιουργημένο στιγμιότυπο του σημειωματάριου Jupyter.
  2. Επιλέξτε Μεταφόρτωση για να ανεβάσετε το Train_Object_Detection_people_DeepLens.ipynb αρχείο που κατεβάσατε νωρίτερα.

  1. Ανοίξτε το σημειωματάριο και ακολουθήστε το μέχρι το τέλος.
  2. Εάν ερωτηθείτε για τη ρύθμιση του πυρήνα, επιλέξτε conda_mxnet_p36.

Το σημειωματάριο Jupyter περιέχει ένα μείγμα κελιών κειμένου και κώδικα. Για να εκτελέσετε ένα κομμάτι κώδικα, επιλέξτε το κελί και πατήστε Shift + Enter. Ενώ το κελί εκτελείται, ένας αστερίσκος εμφανίζεται δίπλα στο κελί. Όταν ολοκληρωθεί το κελί, ένας αριθμός εξόδου και νέο κελί εξόδου εμφανίζονται κάτω από το αρχικό κελί.

  1. Κατεβάστε το σύνολο δεδομένων από τον δημόσιο κάδο S3 στην τοπική παρουσία του SageMaker και αποσυμπιέστε τα δεδομένα. Αυτό μπορεί να γίνει ακολουθώντας τον κώδικα στο σημειωματάριο:
     !aws s3 cp s3://deeplens-public/samples/pedestriansafety/humandetection_data.zip . !rm -rf humandetection/ !unzip humandetection_data.zip -d humandetection 

  2. Μετατρέψτε το σύνολο δεδομένων σε μορφή (ΕγγραφήIO) που μπορεί να τροφοδοτηθεί στον αλγόριθμο SageMaker:
     !python $mxnet_path/tools/im2rec.py --pass-through --pack-label $DATA_PATH/train_mask.lst $DATA_PATH/ !python $mxnet_path/tools/im2rec.py --pass-through --pack-label $DATA_PATH/val_mask.lst $DATA_PATH/ 

  3. Μεταφέρετε τα αρχεία RecordIO πίσω στο Amazon S3.

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

Υπάρχουν πολλοί διαφορετικοί τύποι αλγορίθμων ανίχνευσης αντικειμένων. Για αυτήν την ανάρτηση, χρησιμοποιείτε το Αλγόριθμος ανίχνευσης πολλαπλών κουτιών μίας λήψης (SSD). Ο αλγόριθμος SSD έχει καλή ισορροπία ταχύτητας και ακρίβειας, καθιστώντας τον ιδανικό για λειτουργία σε συσκευές αιχμής όπως το AWS DeepLens.

Ως μέρος της εργασίας εκπαίδευσης, έχετε πολλές επιλογές για υπερπαραμέτρους που βοηθούν στη διαμόρφωση της συμπεριφοράς εκπαίδευσης (όπως ο αριθμός των εποχών, ο ρυθμός εκμάθησης, ο τύπος βελτιστοποιητή και το μέγεθος μίνι παρτίδας). Οι υπερπαράμετροι σάς επιτρέπουν να συντονίζετε την ταχύτητα προπόνησης και την ακρίβεια του μοντέλου σας. Για περισσότερες πληροφορίες σχετικά με τις υπερπαραμέτρους, βλ Αλγόριθμος ανίχνευσης αντικειμένων.

  1. Ρυθμίστε τις υπερπαραμέτρους και τα κανάλια δεδομένων σας. Σκεφτείτε να χρησιμοποιήσετε το ακόλουθο παράδειγμα ορισμού υπερπαραμέτρων:
     od_model = sagemaker.estimator.Estimator(training_image, role, train_instance_count=1, train_instance_type='ml.p2.xlarge', train_volume_size = 50, train_max_run = 360000, input_mode= 'File', output_path=s3_output_location, sagemaker_session=sess) od_model.set_hyperparameters(base_network='resnet-50', use_pretrained_model=1, num_classes=2, mini_batch_size=32, epochs=100, learning_rate=0.003, lr_scheduler_step='3,6', lr_scheduler_factor=0.1, optimizer='sgd', momentum=0.9, weight_decay=0.0005, overlap_threshold=0.5, nms_threshold=0.45, image_shape=300, num_training_samples=n_train_samples) 

Το σημειωματάριο έχει ορισμένες προεπιλεγμένες υπερπαραμέτρους που έχουν προεπιλεγεί. Για ανίχνευση πεζών, εκπαιδεύετε το μοντέλο για 100 εποχές. Αυτό το βήμα προπόνησης θα πρέπει να διαρκέσει περίπου 2 ώρες χρησιμοποιώντας ένα παράδειγμα ml.p2.xlarge. Μπορείτε να πειραματιστείτε με διαφορετικούς συνδυασμούς των υπερπαραμέτρων ή να εκπαιδευτείτε για περισσότερες εποχές για βελτιώσεις απόδοσης. Για πληροφορίες σχετικά με τις πιο πρόσφατες τιμές, βλ Τιμολόγηση του Amazon SageMaker.

  1. Μπορείτε να ξεκινήσετε μια εργασία εκπαίδευσης με μία μόνο γραμμή κώδικα και να παρακολουθείτε την ακρίβεια με την πάροδο του χρόνου στην κονσόλα SageMaker:
    od_model.fit(inputs=data_channels, logs=True) 

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

Μπορείτε να παρακολουθείτε την πρόοδο της εκπαιδευτικής σας εργασίας μέσω της μετρικής μέσης ακρίβειας (mAP), η οποία σας επιτρέπει να παρακολουθείτε την ποιότητα της ικανότητας του μοντέλου να ταξινομεί αντικείμενα και να ανιχνεύει τα σωστά πλαίσια οριοθέτησης. Τα αρχεία καταγραφής δεδομένων εκτυπώνουν επίσης το mAP στα δεδομένα επικύρωσης, μεταξύ άλλων απωλειών, για κάθε εκτέλεση του συνόλου δεδομένων, μία φορά για μία εποχή. Αυτή η μέτρηση είναι ένας δείκτης για την ποιότητα της απόδοσης του αλγορίθμου για τον ακριβή εντοπισμό της κλάσης και του ακριβούς πλαισίου οριοθέτησης γύρω από αυτήν.

Όταν ολοκληρωθεί η εργασία, μπορείτε να βρείτε τα εκπαιδευμένα αρχεία μοντέλου στον κάδο και το φάκελο S3 που καθορίστηκαν νωρίτερα στο s3_output_location:

s3_output_location = 's3://{}/{}/output'.format(BUCKET, PREFIX)

Για αυτήν την ανάρτηση, εμφανίζουμε αποτελέσματα σχετικά με το σύνολο επικύρωσης κατά την ολοκλήρωση της 10ης εποχής και της 100ης εποχής. Στο τέλος της 10ης εποχής, βλέπουμε ένα mAP επικύρωσης περίπου 0.027, ενώ η 100η εποχή ήταν περίπου 0.42.

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

Δοκιμαστικό μοντέλο με προσαρμοσμένες ζώνες περιορισμού

Πριν αναπτύξετε το εκπαιδευμένο μοντέλο στο AWS DeepLens, μπορείτε να το δοκιμάσετε στο cloud χρησιμοποιώντας ένα τελικό σημείο που φιλοξενείται στο SageMaker. Το τελικό σημείο του SageMaker είναι μια πλήρως διαχειριζόμενη υπηρεσία που σας επιτρέπει να κάνετε συμπεράσματα σε πραγματικό χρόνο μέσω ενός REST API. Το SageMaker σάς επιτρέπει να αναπτύσσετε γρήγορα νέα τελικά σημεία για να δοκιμάσετε τα μοντέλα σας, ώστε να μην χρειάζεται να φιλοξενήσετε το μοντέλο στην τοπική παρουσία που χρησιμοποιήθηκε για την εκπαίδευση του μοντέλου. Αυτό σας επιτρέπει να κάνετε προβλέψεις (ή συμπεράσματα) από το μοντέλο σε εικόνες που δεν είδε ο αλγόριθμος κατά τη διάρκεια της εκπαίδευσης.

Δεν χρειάζεται να φιλοξενείτε στον ίδιο τύπο παρουσίας που εκπαιδεύατε. Η εκπαίδευση είναι μια παρατεταμένη και βαριά εργασία που απαιτεί ένα διαφορετικό σύνολο απαιτήσεων υπολογισμού και μνήμης που συνήθως δεν απαιτεί η φιλοξενία. Μπορείτε να επιλέξετε οποιοδήποτε τύπο στιγμιότυπου θέλετε να φιλοξενήσει το μοντέλο. Σε αυτήν την περίπτωση, επιλέξαμε την παρουσία ml.p3.2xlarge για εκπαίδευση, αλλά επιλέγουμε να φιλοξενήσουμε το μοντέλο στη λιγότερο ακριβή παρουσία CPU, ml.m4.xlarge. Το παρακάτω απόσπασμα κώδικα δείχνει την ανάπτυξη του τελικού μας σημείου.

object_detector = od_model.deploy(initial_instance_count = 1, instance_type = 'ml.m4.xlarge') 

Ανίχνευση σε μια προσαρμοσμένη ζώνη περιορισμού (περιοχή ενδιαφέροντος)

Η μορφή της εξόδου μπορεί να αναπαρασταθεί ως [class_index, proof_score, xmin, ymin, xmax, ymax]. Οι προβλέψεις χαμηλής εμπιστοσύνης έχουν συχνά υψηλότερες πιθανότητες για ψευδώς θετικές ή ψευδώς αρνητικές, επομένως θα πρέπει πιθανώς να απορρίψετε τις προβλέψεις χαμηλής εμπιστοσύνης. Μπορείτε να χρησιμοποιήσετε τον ακόλουθο κώδικα για να εντοπίσετε εάν το πλαίσιο οριοθέτησης του ατόμου επικαλύπτεται με την περιορισμένη ζώνη.

def inRestrictedSection(ImShape = None, R1 = None, restricted_region = None, kclass = None, score = None, threshold = None): statement = 'Person Not Detected in Restricted Zone' if (kclass == 1) and (score > threshold): Im1 = np.zeros((ImShape[0],ImShape[1],3), np.int32) cv2.fillPoly(Im1, [R1], 255) Im2 = np.zeros((ImShape[0],ImShape[1],3), np.int32) if restricted_region is None: restricted_region = np.array([[0,ImShape[0]],[ImShape[1],ImShape[0]],[ImShape[1],0], [0,0]], np.int32) cv2.fillPoly(Im2, [restricted_region], 255) Im = Im1 * Im2 if np.sum(np.greater(Im, 0))>0: statement = 'Person Detected in Restricted Zone' else: statement = statement return statement 

Από προεπιλογή, το πλήρες πλαίσιο αξιολογείται για ανθρώπινη παρουσία. Ωστόσο, μπορείτε εύκολα να καθορίσετε την περιοχή ενδιαφέροντος εντός της οποίας η παρουσία ενός ατόμου θεωρείται υψηλού κινδύνου. Εάν θέλετε να προσθέσετε μια προσαρμοσμένη ζώνη περιορισμού, προσθέστε συντεταγμένες των κορυφών της περιοχής που αντιπροσωπεύεται από [άξονας Χ, άξονας Υ] και δημιουργήστε το πολύγωνο. Οι συντεταγμένες πρέπει να εισαχθούν είτε δεξιόστροφα είτε αριστερόστροφα. Δείτε τον παρακάτω κώδικα:

restricted_region = None #restricted_region = np.array([[0,200],[100,200],[100,0], [10,10]], np.int32) 

Το ακόλουθο δείγμα κώδικα δείχνει τους πεζούς που εντοπίζονται σε μια απαγορευμένη ζώνη:

file_name = 'humandetection/test_images/t1_image.jpg' img = cv2.imread(file_name) img =cv2.cvtColor(img,cv2.COLOR_BGR2RGB) thresh = 0.2 height = img.shape[0] width = img.shape[1] colors = dict() with open(file_name, 'rb') as image: f = image.read() b = bytearray(f) ne = open('n.txt','wb') ne.write(b) results = object_detector.predict(b, initial_args={'ContentType': 'image/jpeg'}) detections = json.loads(results) object_categories = ['no-person', 'person'] for det in detections['prediction']: (klass, score, x0, y0, x1, y1) = det if score < thresh: continue cls_id = int(klass) prob = score if cls_id not in colors: colors[cls_id] = (random.random(), random.random(), random.random()) xmin = int(x0 * width) ymin = int(y0 * height) xmax = int(x1 * width) ymax = int(y1 * height) R1 = np.array([[xmin,ymin],[xmax,ymin],[xmax,ymax], [xmin,ymax]], np.int32) cv2.polylines(img,[R1],True, (255,255,0), thickness = 5) cv2.polylines(img,[restricted_region],True, (255,0,0), thickness = 5) plt.imshow(img) print(inRestrictedSection(img.shape,R1 = R1, restricted_region= restricted_region, kclass = cls_id, score = prob, threshold=0.2)) 

Οι παρακάτω εικόνες δείχνουν τα αποτελέσματά μας.

Αναπτύξτε τη λύση στο AWS DeepLens

Μετατρέψτε το μοντέλο για ανάπτυξη σε AWS DeepLens

Κατά την ανάπτυξη ενός μοντέλου SSD που εκπαιδεύεται στο SageMaker στο AWS DeepLens, πρέπει πρώτα να εκτελέσετε deploy.py για να μετατρέψετε το τεχνούργημα του μοντέλου σε ένα μοντέλο με δυνατότητα ανάπτυξης:

!rm -rf incubator-mxnet !git clone -b v1.7.x https://github.com/apache/incubator-mxnet MODEL_PATH = od_model.model_data TARGET_PATH ='s3://'+BUCKET+'/'+PREFIX+'/patched/' !rm -rf tmp && mkdir tmp rm -rf tmp && mkdir tmp !aws s3 cp $MODEL_PATH tmp !tar -xzvf tmp/model.tar.gz -C tmp !mv tmp/model_algo_1-0000.params tmp/ssd_resnet50_300-0000.params !mv tmp/model_algo_1-symbol.json tmp/ssd_resnet50_300-symbol.json !python incubator-mxnet/example/ssd/deploy.py --network resnet50 --data-shape 300 --num-class 2 --prefix tmp/ssd_ !tar -cvzf ./patched_model.tar.gz -C tmp ./deploy_ssd_resnet50_300-0000.params ./deploy_ssd_resnet50_300-symbol.json ./hyperparams.json !aws s3 cp patched_model.tar.gz $TARGET_PATH

Εισαγάγετε το μοντέλο σας στο AWS DeepLens

Για να εκτελέσετε το μοντέλο σε μια συσκευή AWS DeepLens, πρέπει να δημιουργήσετε ένα έργο AWS DeepLens. Ξεκινήστε εισάγοντας το μοντέλο σας στο AWS DeepLens.

  1. Στην κονσόλα AWS DeepLens, κάτω από Υποστηρικτικό υλικό, επιλέξτε Μοντέλα.
  2. Επιλέξτε Εισαγωγή μοντέλου.

  1. Για Πηγή εισαγωγής, Επιλέξτε Εξωτερικά εκπαιδευμένο μοντέλο.
  2. Εισαγάγετε την τοποθεσία Amazon S3 του μπαλωμένο μοντέλο που αποθηκεύσατε από την εκτέλεση του deploy.py στο παραπάνω βήμα.
  3. Για Μοντέλο πλαίσιο, επιλέξτε MX Net.
  4. Επιλέξτε Εισαγωγή μοντέλου.

Δημιουργήστε τη συνάρτηση συμπερασμάτων

Η συνάρτηση συμπερασμάτων τροφοδοτεί κάθε πλαίσιο κάμερας στο μοντέλο για να λαμβάνει προβλέψεις και εκτελεί οποιαδήποτε προσαρμοσμένη επιχειρηματική λογική χρησιμοποιώντας τα αποτελέσματα συμπερασμάτων. Εσυ χρησιμοποιεις AWS Lambda για να δημιουργήσετε μια συνάρτηση που αναπτύσσετε στο AWS DeepLens. Η συνάρτηση εκτελεί συμπεράσματα τοπικά στη συσκευή AWS DeepLens.

Αρχικά, πρέπει να δημιουργήσουμε μια συνάρτηση Lambda για να την αναπτύξουμε στο AWS DeepLens.

  1. Κατεβάστε το συμπέρασμα συνάρτηση λάμδα.
  2. Στην κονσόλα Lambda, επιλέξτε Συναρτήσεις.
  3. Επιλέξτε Δημιουργία λειτουργίας.
  4. Αγορά Συγγραφέας από το μηδέν.
  5. Για Όνομα λειτουργίας, πληκτρολογήστε ένα όνομα.
  6. Για Διάρκεια, επιλέξτε Python 3.7.
  7. Για Επιλέξτε ή δημιουργήστε έναν ρόλο εκτέλεσης, επιλέξτε Χρησιμοποιήστε έναν υπάρχοντα ρόλο.
  8. Επιλέξτε service-role/AWSDeepLensLambdaRole.
  9. Επιλέξτε Δημιουργία λειτουργίας.

  1. Στη σελίδα λεπτομερειών της συνάρτησης, στο Δράσεις μενού, επιλέξτε Ανεβάστε ένα αρχείο .zip.

  1. Ανεβάστε το συμπέρασμα Λάμδα αρχείο που κατεβάσατε νωρίτερα.
  2. Επιλέξτε Αποθήκευση για να αποθηκεύσετε τον κωδικό που πληκτρολογήσατε.
  3. Στις Δράσεις μενού, επιλέξτε Δημοσιεύστε τη νέα έκδοση.

Η δημοσίευση της συνάρτησης την καθιστά διαθέσιμη στην κονσόλα AWS DeepLens, ώστε να μπορείτε να την προσθέσετε στο προσαρμοσμένο έργο σας.

  1. Εισαγάγετε έναν αριθμό έκδοσης και επιλέξτε Δημοσίευση.

Κατανόηση της συνάρτησης συμπερασμάτων

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

  • labels.txt – Περιέχει μια αντιστοίχιση της εξόδου από το νευρωνικό δίκτυο (ακέραιοι αριθμοί) σε αναγνώσιμες από τον άνθρωπο ετικέτες (string)
  • lambda_function.py – Περιέχει κωδικό για τη λειτουργία που καλείται για τη δημιουργία προβλέψεων σε κάθε καρέ κάμερας και την αποστολή αποτελεσμάτων

Στο lambda_function.py, πρώτα φορτώνετε και βελτιστοποιείτε το μοντέλο. Σε σύγκριση με τις εικονικές μηχανές cloud με GPU, το AWS DeepLens έχει λιγότερη υπολογιστική ισχύ. Το AWS DeepLens χρησιμοποιεί το βελτιστοποιητή μοντέλων Intel OpenVino για να βελτιστοποιήσει το μοντέλο που έχει εκπαιδευτεί στο SageMaker ώστε να λειτουργεί στο υλικό του. Ο παρακάτω κώδικας βελτιστοποιεί το μοντέλο σας ώστε να εκτελείται τοπικά:

client.publish(topic=iot_topic, payload='Optimizing model...') ret, model_path = mo.optimize('deploy_ssd_resnet50_300', INPUT_W, INPUT_H) # Load the model onto the GPU. client.publish(topic=iot_topic, payload='Loading model...') model = awscam.Model(model_path, {'GPU': 1}) 

Στη συνέχεια, περνάτε το μοντέλο καρέ ανά καρέ πάνω από τις εικόνες από την κάμερα. Δείτε τον παρακάτω κώδικα:

while True: # Get a frame from the video stream ret, frame = awscam.getLastFrame() if not ret: raise Exception('Failed to get frame from the stream') # Resize frame to the same size as the training set. frame_resize = cv2.resize(frame, (INPUT_H, INPUT_W)) # Run the images through the inference engine and parse the results using # the parser API, note it is possible to get the output of doInference # and do the parsing manually, but since it is a ssd model, # a simple API is provided. parsed_inference_results = model.parseResult(model_type, model.doInference(frame_resize)) 

Τέλος, στέλνετε τα αποτελέσματα πρόβλεψης κειμένου πίσω στο cloud. Η προβολή των αποτελεσμάτων κειμένου στο cloud είναι ένας βολικός τρόπος για να βεβαιωθείτε ότι το μοντέλο λειτουργεί σωστά. Κάθε συσκευή AWS DeepLens έχει ένα αποκλειστικό iot_topic που δημιουργείται αυτόματα για να λαμβάνει τα αποτελέσματα συμπερασμάτων. Δείτε τον παρακάτω κώδικα:

# Send results to the cloud client.publish(topic=iot_topic, payload=json.dumps(cloud_output)) 

Δημιουργήστε ένα προσαρμοσμένο έργο AWS DeepLens

Για να δημιουργήσετε ένα νέο έργο AWS DeepLens, ολοκληρώστε τα παρακάτω βήματα:

  1. Στην κονσόλα AWS DeepLens, στο Έργα σελίδα, επιλέξτε Δημιουργία έργου.
  2. Για Τύπος έργου, Επιλέξτε Δημιουργήστε ένα νέο κενό έργο.
  3. Επιλέξτε Επόμενο.

  1. Ονομάστε το έργο σας yourname-pedestrian-detector-.
  2. Επιλέξτε Προσθήκη μοντέλου.
  3. Επιλέξτε το μοντέλο που μόλις δημιουργήσατε.
  4. Επιλέξτε Προσθήκη λειτουργίας.
  5. Αναζητήστε τη συνάρτηση Lambda που δημιουργήσατε νωρίτερα με το όνομα.
  6. Επιλέξτε Δημιουργία έργου.
  7. Στις Έργα σελίδα, επιλέξτε το έργο που θέλετε να αναπτύξετε.
  8. Επιλέξτε Εγκαταστήστε στη συσκευή.
  9. Για Συσκευή προορισμού, επιλέξτε τη συσκευή σας.
  10. Επιλέξτε Βαθμολογία Κριτικής.
  11. Ελέγξτε τις ρυθμίσεις σας και επιλέξτε Ανάπτυξη.

Η ανάπτυξη μπορεί να διαρκέσει έως και 10 λεπτά για να ολοκληρωθεί, ανάλογα με την ταχύτητα του δικτύου στο οποίο είναι συνδεδεμένο το AWS DeepLens. Όταν ολοκληρωθεί η ανάπτυξη, θα πρέπει να δείτε ένα πράσινο banner στη σελίδα με το μήνυμα, "Συγχαρητήρια, το μοντέλο σας εκτελείται τώρα τοπικά στο AWS DeepLens!"

Για να δείτε την έξοδο κειμένου, κάντε κύλιση προς τα κάτω στη σελίδα λεπτομερειών της συσκευής στο Έξοδος έργου Ενότητα. Ακολουθήστε τις οδηγίες στην ενότητα για να αντιγράψετε το θέμα και μεταβείτε στο AWS Core IoT κονσόλα για να εγγραφείτε στο θέμα. Θα πρέπει να δείτε αποτελέσματα όπως στο παρακάτω στιγμιότυπο οθόνης.

Για οδηγίες βήμα προς βήμα σχετικά με την προβολή της ροής βίντεο ή της εξόδου κειμένου, βλ Προβολή αποτελεσμάτων από το AWS DeepLens.

Θήκες χρήσης σε πραγματικό κόσμο

Τώρα που έχετε προβλέψεις από το μοντέλο σας που εκτελούνται στο AWS DeepLens, ας μετατρέψουμε αυτές τις προβλέψεις σε ειδοποιήσεις και πληροφορίες. Μερικές πιο συνηθισμένες χρήσεις για ένα έργο όπως αυτό περιλαμβάνουν:

  • Κατανόηση πόσων ατόμων μια δεδομένη ημέρα εισήλθαν σε μια απαγορευμένη ζώνη, ώστε τα εργοτάξια να μπορούν να εντοπίσουν σημεία που απαιτούν περισσότερες πινακίδες ασφαλείας. Αυτό μπορεί να γίνει συλλέγοντας τα αποτελέσματα και χρησιμοποιώντας τα για να δημιουργήσετε έναν πίνακα εργαλείων χρησιμοποιώντας Amazon QuickSight. Για περισσότερες λεπτομέρειες σχετικά με τη δημιουργία ενός πίνακα εργαλείων χρησιμοποιώντας το QuickSight, βλ Δημιουργήστε έναν ανιχνευτή στάσης εργασίας από το σπίτι με το AWS DeepLens και το GluonCV.
  • Συλλέξτε την έξοδο από το AWS DeepLens και διαμορφώστε ένα Raspberry Pi για να εκπέμπει μια ειδοποίηση όταν κάποιος περπατά σε μια απαγορευμένη ζώνη. Για περισσότερες λεπτομέρειες σχετικά με τη σύνδεση μιας συσκευής AWS DeepLens σε μια συσκευή Raspberry Pi, βλ Δημιουργία ενός διαλογέα απορριμμάτων με AWS DeepLens.

Συμπέρασμα

Σε αυτήν την ανάρτηση, μάθατε πώς να εκπαιδεύετε ένα μοντέλο ανίχνευσης αντικειμένων και να το αναπτύσσετε στο AWS DeepLens για να ανιχνεύσετε άτομα που εισέρχονται σε απαγορευμένες ζώνες. Μπορείτε να χρησιμοποιήσετε αυτό το σεμινάριο ως αναφορά για να εκπαιδεύσετε και να αναπτύξετε τα δικά σας προσαρμοσμένα έργα ανίχνευσης αντικειμένων στο AWS DeepLens.

Για μια πιο λεπτομερή περιγραφή αυτού του σεμιναρίου και άλλων σεμιναρίων, δειγμάτων και ιδεών έργων με το AWS DeepLens, βλ. Συνταγές AWS DeepLens.


Σχετικά με τους Συγγραφείς

Γιας Σαχ είναι επιστήμονας δεδομένων στο Amazon ML Solutions Lab, όπου εργάζεται σε μια σειρά περιπτώσεων χρήσης μηχανικής μάθησης, από την υγειονομική περίθαλψη έως τη μεταποίηση και το λιανικό εμπόριο. Έχει ένα επίσημο υπόβαθρο στους Ανθρώπινους Παράγοντες και Στατιστικά και ήταν προηγουμένως μέλος της ομάδας SCOT της Amazon για να σχεδιάσει προϊόντα για να καθοδηγήσει τους πωλητές 3P με αποτελεσματική διαχείριση αποθεμάτων.

Phu Nguyen είναι Υπεύθυνος Προϊόντων για το AWS Panorama. Κατασκευάζει προϊόντα που δίνουν στους προγραμματιστές οποιουδήποτε επιπέδου δεξιοτήτων μια εύκολη, πρακτική εισαγωγή στη μηχανική μάθηση.

Πηγή: https://aws.amazon.com/blogs/machine-learning/protecting-people-through-virtual-boundaries-computer-vision/

Σφραγίδα ώρας:

Περισσότερα από Ιστολόγιο μηχανικής εκμάθησης AWS