Crear y publicar una función Lambda de inferencia en
model_type le dirá al paquete awscam cómo analizar los resultados. Los otros tipos de modelo
incluyen ssd (detector de disparo individual) y segmentation.
output_map ayuda a convertir los resultados enteros del modelo a etiquetas legibles por humanos.
10. En este paso, se añade código para pasar fotogramas de cámara a través del modelo para obtener
predicciones.
En el editor de código de Lambda, debajo del comentario# Do inference with the model
hereEn, añada lo siguiente:
frame_resize = cv2.resize(frame, (input_height, input_width))
predictions = model.doInference(frame_resize)
parsed_inference_results = model.parseResult(model_type, predictions)
En este código, cambiamos el tamaño del marco de la cámara para que tenga el mismo tamaño que
las entradas de imagen utilizadas para entrenar el modelo. A continuación, realizamos inferencia con
el modelo en este marco redimensionado. Por último, utilice awscam parseResult para convertir
las predicciones en un diccionario que se puede analizar fácilmente. Para obtener más información
acerca del resultado de parseResult, vea Model.ParseResult.
11. En este paso, se añade código para devolver los resultados a AWS IoT. Esto facilita registrar los
resultados en una base de datos o desencadenar una acción basada en las predicciones.
En el editor de código de Lambda, en la funcióninfinite_infer_runEn, en""" Run the
DeepLens inference loop frame by frame"""En, añada lo siguiente:
# Create an IoT client for sending to messages to the cloud.
client = greengrasssdk.client('iot-data')
iot_topic = '$aws/things/{}/infer'.format(os.environ['AWS_IOT_THING_NAME'])
# Create a local display instance that will dump the image bytes to a FIFO
# file that the image can be rendered locally.
local_display = LocalDisplay('480p')
local_display.start()
Este código realiza dos tareas:
• Instancia un SDK de AWS IoT Greengrass (greengrasssdk) para que la salida de inferencia
esté disponible para la nube de AWS. Esto incluye el envío de información de proceso y resultados
procesados a un tema AWS IoT (iot_topic). El tema le permite ver su salida de AWS DeepLens
como datos JSON en lugar de una secuencia de vídeo.
• Inicia un subproceso (local_display.start) para alimentar los fotogramas de vídeo analizados
a la visualización local (LocalDisplay). La pantalla puede estar
navegador web (p.
Agregue el siguiente código después de # Send results back to IoT or output to video
stream para enviar los resultados fotograma por fotograma:
# Add the label of the top result to the frame used by local display.
cv2.putText(frame, output_map[top_k[0]['label']], (10, 70),
cv2.FONT_HERSHEY_SIMPLEX, 3, (255, 165, 20), 8)
# Set the next frame in the local display stream.
local_display.set_frame_data(frame)
# Send the top k results to the IoT console via MQTT
cloud_output = {}
for obj in top_k:
cloud_output[output_map[obj['label']]] = obj['prob']
AWS DeepLens Guía para desarrolladores
56).
89
en el dispositivo (p. 58)
o en un