Crear y publicar una función Lambda de inferencia en
Examinemos este código línea por línea.
• El módulo json permite que su función Lambda trabaje con datos JSON y devuelva resultados
mediante AWS IoT.
• El módulo awscam permite que su función Lambda utilice la
DeepLens (p. 141)
optimizado y analizar resultados de inferencia. Para obtener más información, consulte
modelo (p.
142).
• El módulo mo permite a su función Lambda acceder al optimizador de modelos de AWS DeepLens.
Optimiza el modelo entrenado en la nube para funcionar eficientemente en la GPU de DeepLens.
Para obtener más información, consulte
• El módulo cv2 permite que su función Lambda acceda a la biblioteca
preprocesamiento de imágenes.
• El módulo greengrasssdk expone la API de AWS IoT Greengrass para que la función Lambda
envíe mensajes al cloud de AWS, incluido el envío del estado operativo y los resultados de la
inferencia al AWS IoT.
• El archivo local_display contiene una clase auxiliar para escribir en la secuencia de vídeo del
proyecto. Esto le ayuda a dibujar cuadros delimitadores o texto directamente en la secuencia de
vídeo de DeepLens.
• El lambda_handler es habitualmente donde se coloca el código de las funciones de Lambda que
se invocan una vez y luego se detienen. Queremos que la función de LambdaAWS DeepLensPara
ejecutar y procesar fotogramas continuamente. Vamos a dejar lambda_handler vacío y definir
otra función infinite_infer_run que puede ejecutarse para siempre.
• La función infinite_infer_run contiene un bucle while que se ejecuta para siempre. Este
utiliza awscam.getLastFrame para extraer fotogramas de la cámara en cada iteración.
9.
En este paso, se añade código para cargar el modelo de inferencia y se pasa el fotograma de la
cámara para obtener predicciones. En este ejemplo, suponemos que ha entrenado a un modelo para
diferenciar entre un perro y un gato.
En el editor de código de Lambda, debajo del comentario# Load the model hereEn, añada lo
siguiente:
# Model details
input_width = 224
input_height = 224
model_name = 'image-classification'
model_type = 'classification'
output_map = {0: 'dog', 1: 'cat'}
# Optimize the model
error, model_path = mo.optimize(model_name,input_width,input_height)
# Load the model onto the GPU.
model = awscam.Model(model_path, {'GPU': 1})
AWS DeepLens utiliza el optimizador de modelos Intel OpenVino para optimizar el modelo entrenado
en la nube. model_name es el nombre del archivo de modelo que desea cargar. Para los modelos
entrenados con Amazon SageMaker, el modelo suele tener 2 archivos: un<model_name>-
symbol.jsony un<model_name>-###.paramsfile.
input_width y input_height consultan el tamaño de las imágenes utilizadas para entrenar su
red. Durante la inferencia, se pasa la imagen del mismo tamaño.
AWS DeepLens Guía para desarrolladores
para captar fotogramas de cámara, realizar inferencia con un modelo
Módulo (mo) para la optimización del modelo (p.
88
biblioteca de dispositivos AWS
Open CV
utilizada para el
Objeto de
147).