PROTOTIPO DE BAJA RESOLUCIÓN
Hito 4
Para el aplicativo móvil se utilizó el programa Android Studio, con el lenguaje de programación kotlin para la creación de las siguientes secciones:
Para el algoritmo de diagnóstico se buscó modelos de clasificación de imágenes de retinopatía mediante Deep learning, se hallaron numerosos algoritmos, en esta oportunidad utilizamos un modelo de código abierto publicado en Git Hub que cuenta con el modelo publicado, este modelo cuenta con la arquitectura de la red neuronal, cuenta con los pesos que fueron recopilados por un entrenamiento previo y cuenta con la optimización del modelo, esto permite que podamos utilizarlo sin un previo entrenamiento lo que resuelve el limitante de tener un set de datos para el entrenamiento, una tarjeta gráfica potente para procesar este entrenamiento y el tiempo del entrenamiento que en algunos casos pueden llegar a numerosos días y semanas.
El entorno de desarrollo que se utilizó para testear el algoritmo fue Google colab, ya que nos permite utilizar el código y hacer modificaciones colaborativamente en tiempo real, también no requiere la instalación de frameworks ni uso de GPU, ya que este procesa el algoritmo en la nube.
El modelo implementa el aprendizaje por transferencia, utilizando un modelo pre entrenado de mobileNetV2, se uso 4 capas ocultas adicionales para mejorar los resultados de salida, el algoritmo fue optimizado mediante el método Adam, el set de datos que se utilizó para el entrenamiento del algoritmo fue uno publicado en Kaggle, este utiliza más de 35 000 imágenes de fondo de ojo, clasificadas en: no retinopatía, indicios de retinopatía, retinopatía moderada, retinopatía proliferativa y retinopatía severa.
Inicio y registro del medico:
En las imágenes (a) y (b) se muestran las secciones para registrar una nueva cuenta, la cual se guardará en la base de datos de Firebase, como se observa en la imagen (d). Finalmente, en la imagen (c) se señala el inicio de sesión del aplicativo móvil.
Perfil del médico y paciente:
En las imagen (a) se observa el perfil del médico, en la cual puede ingresar su nombre, asimismo agregar pacientes, lo que dirige a la imagen (b), en la que vemos la opción de ingresar el nombre del paciente, además de la opción de subir imagen, que redirigirá a la imagen (c), donde te pide ingresar una imagen de los archivos del dispositivo como se muestra en (d).Finalmente, los archivos se almacenan en la base de datos Firebase, como se observa en (e) y (f).
El algoritmo a usar tiene como entradas una imagen expresada en un array de números, por lo que se debe adaptar la imagen de entrada, esta debe de redimensionarse en una imagen de 224 x 224 píxeles, luego debe convertirse en un arreglo 224x224x3 mediante la función .img_to_array(), a cada valor del arreglo se debe dividir entre 255, lo cual permite que los valores vayas desde el 0 hasta el 1, ya con estos pasos se puede ingresar estos datos a la función del modelo.
Se debe subir el modelo en una capeta para poder importarlo al programa, este modelo tiene como nombre “retinopathy_model.h5”, que se lee mediante la función load_model() de la librería de tensorflow.keras.models.
Luego mediante la función model.predict(arreglo), se ingresa la imagen convertida en arreglo y el programa da como salida un arreglo de 5 números, los cuales representan el porcentaje de probabilidad de [no retinopatía, indicios de retinopatía, retinopatía moderada, retinopatía proliferativa y retinopatía severa] respectivamente
La posición del número con mayor valor nos brinda el diagnóstico resultante.
Por lo que al final tenemos un sistema que convierte una imagen de entrada en un diagnóstico de la fase de retinopatía en la que se encuentra.
En el presente trabajo se puede cambiar el algoritmo y adaptar el programa con sus especificaciones, como por ejemplo la resolución de la imagen , se recomienda entrenar un modelo de Deep learning entrenado con un set de datos de retinopatía del prematuro para una mejor precisión de los datos de salida, en el presente trabajo no se incluyó la unión de la aplicación móvil y el algoritmo de diagnóstico, se recomienda usar herramientas del framework tensorflowjs y tensorflowlite para poder exportar este programa tanto a una página web como en la propia aplicación en Android, de la misma manera se recomienda usar servicios de HTTP y tensorflow serving si es que el programa añadido o es muy pesado o no es compatible con los frameworks antes mencionados, esto para que el programa se ejecute en un servidor, reciba los datos de entrada de la aplicación y mande los datos de salida a la aplicación, este método requeriría conección a internet para el uso del algoritmo en la aplicación web.