TensorFlow radiografía de imágenes utilizando Object Detection con App Engine
En artículos anteriores analizamos objetos en imágenes utilizando Tensor Flow Object Detection API aplicando diferentes tipos de modelos (TensorFlow Object Detection en videos, basta de pizza, donuts y cakes..., TensorFlow Object Detection API, cena con amigos). En estos ejemplos, la solución siempre estuvo diseñada para una aplicación de consola (es decir un Python script ejecutado localmente).
Ahora nuestro desafío es llevarlo a un entorno web, detectar objetos dentro de la foto (como una radiografía) y finalmente deberíamos proponer una arquitectura simple de implementación.
Me gustó mucho la idea de utilizar un esquema de plataforma como App Engine, pero para nuestra propuesta, el entorno tradicional de App Engine tiene varios desafíos (deberíamos incluir elementos como PubSub y workers en VMs, esto introduce algunos grados de complejidad que preferimos evitar), entonces para resolver nuestro desafío utilizaré App Engine Flexible Environment.
Tener en cuenta los elementos mínimos necesarios para ejecutar el análisis utilizando TensorFlow Objects Detection API son los siguientes.
Aquí les dejo la implementación en su fase inicial desde este repositorio Github.
Local:
Ambiente producción:
TensorFlow radiografía de imágenes utilizando Object Detection con App Engine por Nicolas Bortolotti se distribuye bajo una Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional.
Ahora nuestro desafío es llevarlo a un entorno web, detectar objetos dentro de la foto (como una radiografía) y finalmente deberíamos proponer una arquitectura simple de implementación.
Vista General
Podríamos pensar varias opciones de arquitectura en donde se utilice un esquema servidor (ejemplo desde la documentación oficial TensorFlow Serving). Incluso podríamos pensar en alternativas tradicionales(Apache, Nginx, etc) pero debemos pensar en montar el servidor Web y ajustar todos los elementos para realizar el análisis utilizando TensorFlow.Me gustó mucho la idea de utilizar un esquema de plataforma como App Engine, pero para nuestra propuesta, el entorno tradicional de App Engine tiene varios desafíos (deberíamos incluir elementos como PubSub y workers en VMs, esto introduce algunos grados de complejidad que preferimos evitar), entonces para resolver nuestro desafío utilizaré App Engine Flexible Environment.
Solución propuesta
Arquitectura propuesta
Proyecto App Engine Flexible Environment
- app.yaml
- main.py
- templates/index.html
Rutina de evaluación de imágenes
*Principales dependencias Flask, TensorFlow además estos elementos de soporte, numpy, Image, cStringIO, urllib.
Tener en cuenta los elementos mínimos necesarios para ejecutar el análisis utilizando TensorFlow Objects Detection API son los siguientes.
- models [folder]
- proto [folder]
- utils [folder]
*si lo desean este archivo tiene todo lo necesario de este ítem.
Además necesitamos tener el frozen_inference_graph del modelo en nuestra solución. Para nuestro ejemplo:
- ssd_mobilenet_v1_coco_11_06_2017 (para más precisión en la detección se puede variar el modelo)
*si lo desean este archivo tiene todo lo necesario de este ítem.
Cómo utilizamos COCO como esquema de reconocimiento de objetos, necesitamos la etiquetas de reconocimiento para nuestro análisis.
- mscoco_label_map.pbtxt
*si lo desean este archivo tiene todo lo necesario de este ítem.
Despliegue de la solución
Nota: recuerden que deben contar con el Google Cloud SDK.Local:
- python main.py
Ambiente producción:
- gcloud app deploy
TensorFlow radiografía de imágenes utilizando Object Detection con App Engine por Nicolas Bortolotti se distribuye bajo una Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional.
Comentarios
Publicar un comentario