5.5 KiB
Llama a tu detector de objetos desde tu dispositivo IoT - Hardware IoT Virtual y Raspberry Pi
Una vez que tu detector de objetos haya sido publicado, podrá ser utilizado desde tu dispositivo IoT.
Copia el proyecto del clasificador de imágenes
La mayor parte de tu detector de inventario es similar al clasificador de imágenes que creaste en una lección anterior.
Tarea - copia el proyecto del clasificador de imágenes
-
Crea una carpeta llamada
stock-counter
en tu computadora si estás usando un dispositivo IoT virtual, o en tu Raspberry Pi. Si estás usando un dispositivo IoT virtual, asegúrate de configurar un entorno virtual. -
Configura el hardware de la cámara.
- Si estás usando una Raspberry Pi, necesitarás instalar la PiCamera. También podrías querer fijar la cámara en una posición estable, por ejemplo, colgando el cable sobre una caja o lata, o fijando la cámara a una caja con cinta adhesiva de doble cara.
- Si estás usando un dispositivo IoT virtual, necesitarás instalar CounterFit y el shim CounterFit PyCamera. Si vas a usar imágenes fijas, captura algunas imágenes que tu detector de objetos no haya visto antes. Si vas a usar tu cámara web, asegúrate de que esté posicionada de manera que pueda ver el inventario que estás detectando.
-
Repite los pasos de la lección 2 del proyecto de manufactura para capturar imágenes desde la cámara.
-
Repite los pasos de la lección 2 del proyecto de manufactura para llamar al clasificador de imágenes. La mayor parte de este código será reutilizado para detectar objetos.
Cambia el código de un clasificador a un detector de imágenes
El código que usaste para clasificar imágenes es muy similar al código para detectar objetos. La principal diferencia es el método llamado en el SDK de Custom Vision y los resultados de la llamada.
Tarea - cambia el código de un clasificador a un detector de imágenes
-
Elimina las tres líneas de código que clasifican la imagen y procesan las predicciones:
results = predictor.classify_image(project_id, iteration_name, image) for prediction in results.predictions: print(f'{prediction.tag_name}:\t{prediction.probability * 100:.2f}%')
Elimina estas tres líneas.
-
Agrega el siguiente código para detectar objetos en la imagen:
results = predictor.detect_image(project_id, iteration_name, image) threshold = 0.3 predictions = list(prediction for prediction in results.predictions if prediction.probability > threshold) for prediction in predictions: print(f'{prediction.tag_name}:\t{prediction.probability * 100:.2f}%')
Este código llama al método
detect_image
en el predictor para ejecutar el detector de objetos. Luego reúne todas las predicciones con una probabilidad por encima de un umbral, imprimiéndolas en la consola.A diferencia de un clasificador de imágenes que solo devuelve un resultado por etiqueta, el detector de objetos devolverá múltiples resultados, por lo que es necesario filtrar aquellos con una probabilidad baja.
-
Ejecuta este código y capturará una imagen, la enviará al detector de objetos y mostrará los objetos detectados. Si estás usando un dispositivo IoT virtual, asegúrate de tener una imagen adecuada configurada en CounterFit o que tu cámara web esté seleccionada. Si estás usando una Raspberry Pi, asegúrate de que tu cámara esté apuntando a los objetos en un estante.
pi@raspberrypi:~/stock-counter $ python3 app.py tomato paste: 34.13% tomato paste: 33.95% tomato paste: 35.05% tomato paste: 32.80%
💁 Es posible que necesites ajustar el
threshold
a un valor adecuado para tus imágenes.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-detect/pi o code-detect/virtual-iot-device.
😀 ¡Tu programa de contador de inventario 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 garantizar la precisión, tenga en cuenta que las traducciones automatizadas pueden contener errores o imprecisiones. El documento original en su idioma nativo debe considerarse 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.