5.4 KiB
Clasificar una imagen - Hardware IoT Virtual y Raspberry Pi
En esta parte de la lección, enviarás la imagen capturada por la cámara al servicio Custom Vision para clasificarla.
Enviar imágenes a Custom Vision
El servicio Custom Vision tiene un SDK de Python que puedes usar para clasificar imágenes.
Tarea - enviar imágenes a Custom Vision
-
Abre la carpeta
fruit-quality-detector
en VS Code. Si estás utilizando un dispositivo IoT virtual, asegúrate de que el entorno virtual esté ejecutándose en la terminal. -
El SDK de Python para enviar imágenes a Custom Vision está disponible como un paquete de Pip. Instálalo con el siguiente comando:
pip3 install azure-cognitiveservices-vision-customvision
-
Agrega las siguientes declaraciones de importación en la parte superior del archivo
app.py
:from msrest.authentication import ApiKeyCredentials from azure.cognitiveservices.vision.customvision.prediction import CustomVisionPredictionClient
Esto incluye algunos módulos de las bibliotecas de Custom Vision, uno para autenticar con la clave de predicción y otro para proporcionar una clase cliente de predicción que puede llamar a Custom Vision.
-
Agrega el siguiente código al final del archivo:
prediction_url = '<prediction_url>' prediction_key = '<prediction key>'
Reemplaza
<prediction_url>
con la URL que copiaste del cuadro de diálogo Prediction URL anteriormente en esta lección. Reemplaza<prediction key>
con la clave de predicción que copiaste del mismo cuadro de diálogo. -
La URL de predicción proporcionada por el cuadro de diálogo Prediction URL está diseñada para ser utilizada al llamar directamente al endpoint REST. El SDK de Python utiliza partes de la URL en diferentes lugares. Agrega el siguiente código para descomponer esta URL en las partes necesarias:
parts = prediction_url.split('/') endpoint = 'https://' + parts[2] project_id = parts[6] iteration_name = parts[9]
Esto divide la URL, extrayendo el endpoint de
https://<location>.api.cognitive.microsoft.com
, el ID del proyecto y el nombre de la iteración publicada. -
Crea un objeto predictor para realizar la predicción con el siguiente código:
prediction_credentials = ApiKeyCredentials(in_headers={"Prediction-key": prediction_key}) predictor = CustomVisionPredictionClient(endpoint, prediction_credentials)
Las
prediction_credentials
envuelven la clave de predicción. Estas se utilizan para crear un objeto cliente de predicción que apunta al endpoint. -
Envía la imagen a Custom Vision utilizando el siguiente código:
image.seek(0) results = predictor.classify_image(project_id, iteration_name, image)
Esto rebobina la imagen al inicio y luego la envía al cliente de predicción.
-
Finalmente, muestra los resultados con el siguiente código:
for prediction in results.predictions: print(f'{prediction.tag_name}:\t{prediction.probability * 100:.2f}%')
Esto recorrerá todas las predicciones que se han devuelto y las mostrará en la terminal. Las probabilidades devueltas son números de punto flotante entre 0 y 1, donde 0 representa un 0% de probabilidad de coincidir con la etiqueta, y 1 representa un 100% de probabilidad.
💁 Los clasificadores de imágenes devolverán los porcentajes para todas las etiquetas que se hayan utilizado. Cada etiqueta tendrá una probabilidad de que la imagen coincida con esa etiqueta.
-
Ejecuta tu código, con tu cámara apuntando a alguna fruta, o un conjunto de imágenes apropiado, o fruta visible en tu cámara web si estás utilizando hardware IoT virtual. Verás la salida en la consola:
(.venv) ➜ fruit-quality-detector python app.py ripe: 56.84% unripe: 43.16%
Podrás ver la imagen que se tomó y estos valores en la pestaña Predictions en Custom Vision.
💁 Puedes encontrar este código en la carpeta code-classify/pi o code-classify/virtual-iot-device.
😀 ¡Tu programa clasificador de calidad de frutas fue un éxito!
Descargo de responsabilidad:
Este documento ha sido traducido utilizando el servicio de traducción automática Co-op Translator. Si bien nos esforzamos por lograr precisión, tenga en cuenta que las traducciones automáticas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse como la fuente autorizada. Para información crítica, se recomienda una traducción profesional realizada por humanos. No nos hacemos responsables de malentendidos o interpretaciones erróneas que puedan surgir del uso de esta traducción.