5.6 KiB
Classifier une image - Matériel IoT virtuel et Raspberry Pi
Dans cette partie de la leçon, vous allez envoyer l'image capturée par la caméra au service Custom Vision pour la classifier.
Envoyer des images à Custom Vision
Le service Custom Vision dispose d'un SDK Python que vous pouvez utiliser pour classifier des images.
Tâche - envoyer des images à Custom Vision
-
Ouvrez le dossier
fruit-quality-detector
dans VS Code. Si vous utilisez un appareil IoT virtuel, assurez-vous que l'environnement virtuel est actif dans le terminal. -
Le SDK Python pour envoyer des images à Custom Vision est disponible sous forme de package Pip. Installez-le avec la commande suivante :
pip3 install azure-cognitiveservices-vision-customvision
-
Ajoutez les instructions d'importation suivantes en haut du fichier
app.py
:from msrest.authentication import ApiKeyCredentials from azure.cognitiveservices.vision.customvision.prediction import CustomVisionPredictionClient
Cela importe certains modules des bibliothèques Custom Vision, l'un pour s'authentifier avec la clé de prédiction, et l'autre pour fournir une classe client de prédiction qui peut appeler Custom Vision.
-
Ajoutez le code suivant à la fin du fichier :
prediction_url = '<prediction_url>' prediction_key = '<prediction key>'
Remplacez
<prediction_url>
par l'URL que vous avez copiée depuis la boîte de dialogue Prediction URL plus tôt dans cette leçon. Remplacez<prediction key>
par la clé de prédiction que vous avez copiée depuis la même boîte de dialogue. -
L'URL de prédiction fournie par la boîte de dialogue Prediction URL est conçue pour être utilisée lors de l'appel direct au point de terminaison REST. Le SDK Python utilise différentes parties de l'URL à différents endroits. Ajoutez le code suivant pour diviser cette URL en parties nécessaires :
parts = prediction_url.split('/') endpoint = 'https://' + parts[2] project_id = parts[6] iteration_name = parts[9]
Cela divise l'URL, en extrayant le point de terminaison
https://<location>.api.cognitive.microsoft.com
, l'ID du projet, et le nom de l'itération publiée. -
Créez un objet prédicteur pour effectuer la prédiction avec le code suivant :
prediction_credentials = ApiKeyCredentials(in_headers={"Prediction-key": prediction_key}) predictor = CustomVisionPredictionClient(endpoint, prediction_credentials)
Les
prediction_credentials
encapsulent la clé de prédiction. Ces informations sont ensuite utilisées pour créer un objet client de prédiction pointant vers le point de terminaison. -
Envoyez l'image à Custom Vision en utilisant le code suivant :
image.seek(0) results = predictor.classify_image(project_id, iteration_name, image)
Cela remet l'image au début, puis l'envoie au client de prédiction.
-
Enfin, affichez les résultats avec le code suivant :
for prediction in results.predictions: print(f'{prediction.tag_name}:\t{prediction.probability * 100:.2f}%')
Cela parcourra toutes les prédictions retournées et les affichera dans le terminal. Les probabilités retournées sont des nombres à virgule flottante entre 0 et 1, où 0 correspond à 0 % de chance de correspondance avec le tag, et 1 correspond à 100 % de chance.
💁 Les classificateurs d'images retourneront les pourcentages pour tous les tags utilisés. Chaque tag aura une probabilité indiquant que l'image correspond à ce tag.
-
Exécutez votre code, avec votre caméra pointée sur un fruit, ou un ensemble d'images approprié, ou un fruit visible sur votre webcam si vous utilisez un matériel IoT virtuel. Vous verrez la sortie dans la console :
(.venv) ➜ fruit-quality-detector python app.py ripe: 56.84% unripe: 43.16%
Vous pourrez voir l'image qui a été prise, ainsi que ces valeurs dans l'onglet Predictions de Custom Vision.
💁 Vous pouvez trouver ce code dans le dossier code-classify/pi ou code-classify/virtual-iot-device.
😀 Votre programme de classification de la qualité des fruits est un succès !
Avertissement :
Ce document a été traduit à l'aide du service de traduction automatique Co-op Translator. Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction humaine professionnelle. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.