Με το μοντέλο εκπαιδευμένο ήρθε η ώρα να το χρησιμοποιήσουμε. Θα ξεκινήσουμε δοκιμάζοντάς το από την ιστοσελίδα του Custom Vision. Έπειτα, θα εξερευνήσουμε πώς μπορούμε να καλέσουμε το μοντέλο μέσω κώδικα χρησιμοποιώντας ένα SDK.
Ας δούμε πώς δουλεύει το μοντέλο. Είναι σημαντικό να χρησιμοποιήσουμε εικόνες που δεν είχαν χρησιμοποιηθεί κατά την εκπαίδευση του μοντέλου. Εξάλλου, αν το μοντέλο έχει ήδη δει την εικόνα είναι λογικό να ξέρει την απάντηση.
- Επιλέξτε Quick Test
- Επιλέξτε Browse local files
- Πηγαίντε στον φάκελο testing-images και επιλέξτε μία από τις φωτογραφίες σκύλων
- Επιλέξτε Open
- Παρατηρήστε τα σκορ tag & probability
Ο σκοπός της δημιουργίας ενός μοντέλου στο Custom Vision είναι να το χρησιμοποιήσετε σε διάφορες εφαρμογές. Για να έχετε πρόσβαση σε αυτό εκτός της ιστοσελίδας του Custom Vision πρέπει να το κάνετε δημόσιο.
- Στην καρτέλα 'Performance', επιλέξτε Publish
- Στο Model name εισάγετε dogs
- Στο Prediction resource επιλέξτε το κλειδί πρόβλεψης (predicition key) που δημιουργήσατε νωρίτερα.
- Επιλέξτε Publish
- Επιλέξτε Prediction URL για να δείτε την διεύθυνση endpoint
- Αντιγράψτε την τιμή στό γκρι πλαίσιο κάτω από το If you have an image file και κάντε το επικόλληση κάπου τοπικά ώστε να μπορείτε να το βρείτε αργότερα
- Επιλέξτε Got it
Όπως σε κάθε υπηρεσία, θα πρέπει να συγκεντρώσετε τα κλειδιά και τις τιμές για να κάνουμε την κλήση του μοντέλου. Θα πρέπει να αντιγράψετε αυτά τα κλειδιά σε ένα αρχείο κειμένου, καθώς θα τα χρειαστείτε σε λίγο
- Στην οθόνη Performance, επιλέξτε Prediction URL
- Αντιγράψτε τον σύνδεσμο κάτω από το If you have an image file: αυτό θα χρειαστεί στη δημιουργία του endpoint.
- Αντιγράψτε την δεκαεξαδική τιμή Prediction-Key. Θα μοιάζει με: ba81ed4539cd46ec979a98569035a463
- Επιλέξτε Got it για να κλείσετε το παράθυρο
- Στο πάνω δεξιά μέρος της οθόνης, επιλέξτε το Γρανάζι για να μπείτε στις ρυθμίσεις
- Αντιγράψτε την τιμή Project Id
Συμβουλή: Το Project Id είναι η τιμή στο αριστερό μέρος της οθόνης
Το SDK για το Custom Vision χρησιμοποιεί ένα λίγο διαφορετικό URL από αυτό που αντιγράψατε προηγουμένως. Το URL που αντιγράψατε θα μοιάζει με το παρακάτω:
https://customvisionworkshop-prediction.cognitiveservices.azure.com/customvision/v3.0/Prediction/0dd3299b-6a41-40fe-ab06-dd20e886ccd4/classify/iterations/Iteration1/image
Για να δημιουργήσετε το endpoint, σβήστε τα πάντα μετά το azure.com. Τώρα το endpoint θα μοιάζει κάπως έτσι:
https://customvisionworkshop-prediction.cognitiveservices.azure.com/
Όταν γράφετε κώδικα, η καλύτερη πρακτική είναι να μην γράφετε μέσα στον κώδικα ευαίσθητες πληροφορίες, όπως κωδικούς, ή τιμές που ενδεχομένως θα αλλάξουν στο μέλλον. Αυτό μπορεί να οδηγήσει σε κενά ασφαλείας ή σε κομμάτια κώδικα που θα είναι δύσκολα στην συντήρηση. Στην δημιουργία της εφαρμογής μας θα ακολουθήσουμε τις κοινώς αποδεκτές τακτικές. Για να το πετύχουμε αυτό, θα χρησιμοποιήσουμε τη βιβλιοθήκη python_dotenv, που σας επιτρέπει να χρησιμοποιήσετε μεταβλητές πριβάλλοντας από ένα αρχείο κειμένου.
-
Επιστρέψτε στο Visual Studio Code
-
Στον ριζικό φάκελο του project, δημιουργήστε ένα νέο αρχείο με το όνομα .env
-
Εισάγετε τις ακόλουθες τιμές, αντικαθιστώντας τις τιμές στα εισαγωτικά
ENDPOINT=<YOUR_ENDPOINT> KEY=<YOUR_PREDICTION_KEY> PROJECT_ID=<YOUR_PROJECT_ID> PUBLISHED_ITERATION_NAME=dogs
-
Αποθηκεύστε το αρχείο επιλέγοντας File > Save (ή με Ctrl + S)
Θα χρησιμοποιήσουμε 2 πακέτα Python στο project μας. Το πρώτο που έχετε ήδη δει, είναι το python-dotenv. Το δεύτερο είναι το Custom Vision client library (ή SDK), που θα χρησιμοποιήσετε για να κάνετε τις προβλέψεις.
-
Δημιουργήστε ένα νέο αρχείο κειμένου με όνομα requirements.txt
-
Μέσα στο requirements.txt, προσθέστε τα ακόλουθα:
python-dotenv azure-cognitiveservices-vision-customvision
-
Αποθηκεύστε το αρχείο επιλέγοντας File > Save
-
Ανοίξτε ένα νέο τερματικό μέσα στο Visual Studio Code επιλέγοντας Terminal > New Terminal Window
-
Δημιουργήστε ένα νέο περιβάλλον Python και εγκαταστήστε τα ακόλουθα πακέτα με την ακόλουθη εντολή:
# Στα Windows python3 -m venv venv .\venv\Scripts\activate pip install -r requirements.txt # Στα Linux, WSL & macOS python3 -m venv venv source venv/bin/activate pip install -r requirements.txt
-
Θα πραγματοποιηθεί εγκατάσταση των πακέτων
Με όλη την διαδικασία της εγκατάστασης να έχει ολοκληρωθεί, ήρθε η ώρα να γράψετε κώδικα! Θα σπάσουμε την διαδικασία σε μερικά κομμάτια.
- Δημιουργήστε ένα νέο αρχείο με όνομα predict.py
Όπως και οι περισσότερες εφαρμογές Python εκκινούν με την εισαγωγή των απαραίτητων βιβλιοθηκών, έτσι και η δική μας θα ακολουθήσει το ίδιο μοτίβο.
-
Μέσα στο predict.py, προσθέστε τον παρακάτω κώδικα για να εισάγετε τις απαραίτητες βιβλιοθήκες:
# Prediction client from azure.cognitiveservices.vision.customvision.prediction import CustomVisionPredictionClient # Key class for azure from msrest.authentication import ApiKeyCredentials # dotenv to load key from dotenv import load_dotenv # Import os to read environment variables import os
Προηγουμένως, δημιουργήσαμε κάποιες μεταβλητές περιβάλλοντος όπως το κλειδί και το endpoint. Ας τις φορτώσουμε στην μνήμη.
-
Στο τέλος του predict.py, προσθέστε το ακόλουθο κομμάτι κώδικα για να φορτώσετε τις μεταβλητές περιβάλλοντος.
# Φόρτωση των μεταβλητών περιβάλλοντος load_dotenv() # Ανάθεση των τιμών στις μεταβλητές key = os.getenv('KEY') endpoint = os.getenv('ENDPOINT') project_id = os.getenv('PROJECT_ID') published_name = os.getenv('PUBLISHED_ITERATION_NAME')
Πλέον μπορούμε να προχωρήσουμε στην πρόβλεψη! Θα χρησιμοποιήσουμε μία από τις εικόνες στον φάκελο testing-images.
-
Στο τέλος του predict.py, προσθέστε τον ακόλουθο κώδικα για να εκτελέσετε την πρόβλεψη της ράτσας του σκύλου
# Setup credentials for client credentials = ApiKeyCredentials(in_headers={'Prediction-key':key}) # Create client, which will be used to make predictions client = CustomVisionPredictionClient(endpoint, credentials) # Άνοιγμα του test file with open('testing-images/american-staffordshire-terrier-10.jpg', 'rb') as image: # Perform the prediction results = client.classify_image(project_id, published_name, image.read()) # Because there could be multiple predictions, we loop through each one for prediction in results.predictions: # Display the name of the breed, and the probability percentage print(f'{prediction.tag_name}: {(prediction.probability):.2%}')
Αφού δημιουργήσαμε το πρόγραμμα, ας το τρέξουμε να δούμε τι συμβαίνει!
-
Αποθηκεύστε όλα τα αρχεία επιλέγοντας File > Save All
-
Επιστρέψτε στο τερματικό εντός του Visual Studio Code επιλέγοντας View > Terminal
-
Τρέξτε την ακόλουθη εντολή για να εκτελέσετε το πρόγραμμα
python predict.py
-
Τώρα θα πρέπει να δείτε το ακόλουθο αποτέλεσμα:
american-staffordshire-terrier: 97.11% german-wirehaired-pointer: 1.46% australian-shepherd: 0.97% buggle: 0.46% shorkie: 0.00%
Σημείωση: Τα ποσοστά μπορεί να διαφέρουν από τα παραπάνω
Συγχαρητήρια! Έχετε δημιουργήσει επιτυχώς ένα μοντέλο Custom Vision. Το μοντέλο που έχετε δημιουργήσει μπορεί να χρησιμοποιηθεί για την κατηγοριοποίηση εικόνων. Μπορείτε επίσης να δημιουργήσετε μοντέλα για να ανιχνεύσετε συγκεκριμένα αντικείμενα σε μία εικόνα. Αν θέλετε να εξελιχθείτε περαιτέρω: