¿Cómo saber el nivel de oxigenación de tu sangre a partir de un video de tu cara?.
Una de las características que hacen que el COVID19 esté teniendo un impacto tan importante se debe a su varianza en cuanto a los síntomas que presentan las personas que lo contraen, siendo de hecho, relativamente asintomático para la mayoría. Si pensamos en esto y en que, además, el virus es altamente contagioso, la identificación temprana se vuelve un tema que puede tener un gran impacto en la contención de la enfermedad. Dado que no es tan fácil tener acceso a pruebas para saber si se ha contraído el virus, el monitoreo de niveles de presión y oxigenación puede hacer una gran diferencia para salvar vidas. Desafortunadamente, el equipo para monitorearlo es escaso y dada la crisis económica puede ser costoso para buena parte de la población.
En este contexto, en Analytikus, de la mano de una empresa colombiana llamada Hypercubus, comenzamos a trabajar en un algoritmo que pudiera identificar los niveles de oxigenación y frecuencia cardiaca de una persona de forma más eficiente y sin necesidad de acceso a equipo especializado. Para ello nos basamos en el trabajo de RPGG de Michelle Balestrat, el cual usa analítica de video para estimar estos parámetros. La idea detrás de esto es, ciertamente, original: usar los cambios del color de la piel para identificar frecuencia cardiaca y oxigenación en la sangre.
Como todos sabemos el sistema circulatorio se encarga de bombear, trasportar y distribuir la sangre por todo el cuerpo. El corazón funciona como una bomba muscular en el centro de este sistema y cada vez que late imprime presión al flujo sanguíneo, el cual es transportado a todo el cuerpo a través de los vasos sanguíneos: arterias, venas y capilares.
Un dato que tal vez es menos conocido es que ese sistema de tuberías que transportan la sangre tiene una longitud de 100,000 km. Esa distancia es equivalente a aproximadamente dos veces y media la circunferencia de la tierra. El 90% de dicha distancia está conformada por los capilares, los cuales son los vasos de menor diámetro y están formados sólo por una capa de tejido, lo que permite el intercambio de sustancias entre la sangre y otras sustancias que se encuentran alrededor de ella.
Es debido a la gran cantidad de capilares esparcidos, literalmente por cada rincón del cuerpo humano que el siguiente dato, el cual en un principio puede parecer inverosimil, tiene sentido: cada vez que tu corazón late el color de tu piel cambia. Con cada latido se imprime presión en el sistema circulatorio, la cual hace que los vasos aumenten un poco de diámetro y, por lo tanto, que la piel cambie de color volviéndose un poco más roja.
Este es el principio que se usa para construir el algoritmo de identificación de frecuencia cardiaca. Si bien el ojo humano no es capaz de notar estas diferencias mínimas de color en la piel, una cámara y algo de analítica de video, sí puede identificarlo. Después es necesario identificar los picos y valles de los cambios de color en un intervalo de tiempo para poder estimar la frecuencia cardiaca.
Yendo un paso más allá y usando el mismo principio, también es posible construir un algoritmo que sepa el nivel de oxigenación de una persona a partir de los cambios en el color de su piel. El principio es el mismo que en el caso de la frecuencia cardiaca, sólo que en este caso, no se busca un patrón de cambio en el tiempo sino en el contraste en los cambios entre el canal azul y el canal verde del color de la piel. A partir de un set de datos de entrenamiento, es decir, de un conjunto de datos de personas para las cuales se tiene un video de los cambios en el color de piel y su nivel de oxigenación se entrena un modelo de ML para poder hacer la estimación de ciertos parámetros que permiten calcular el nivel de oxígeno.
El primer paso para hacer funcionar estos algoritmos es poder analizar el color de una pequeña área de piel en la cara de una persona a través de 15 segundos. A partir de algoritmos pre-entrenados que pueden reconocer una cara y la posición de los ojos en dicha cara es posible identificar un area pequeña de piel (típicamente en la mejilla o en la frente) la cual será el insumo del análisis . Una vez que se tiene identificada el área a ser analizada la imagen se descompone en tres canales de colores: verde, rojo y azul. Cada imagen se representará como una matriz del tamaño de los pixeles que la compongan y que contiene valores numéricos que representan el color en cada pixel.
A partir de aquí es necesario aplicar una serie de filtros (transformaciones) que permitan Homologar las variaciones en el color de piel independiente a el tono base para identificar tanto la frecuencia cardiaca como la oxigenación de la persona en cuestión.
En el caso de la estimación de la frecuencia cardíaca los filtros sirven para traducir las matrices que representan el color asociado a cada cuadro del video en gráficas que permitan identificar los picos y valles de la señal sanguínea en el tiempo y de esta forma calcular la frecuencia del corazón.
En el caso de la estimación de la oxigenación los filtros sirven para identificar la relación que hay entre los cambios en el canal verde y el canal azul del color de la piel, lo cual a su vez, se utiliza para generar el nivel de oxigenación de la persona. Para ello se utiliza un modelo de ML entrenado con un set de personas, en particular usando los videos de sus caras y sus niveles de oxigenación reales.
Utilizando estos conceptos y estos algoritmos hemos construido un API que puede ser consumido desde diferentes aplicaciones y con diferentes. El API necesita como insumo 15 segundos del video de la cara de una persona. Una vez enviado dicho parámetro el video se sube a la nube de Azure donde corremos los algoritmos en una arquitectura de Big Data sobre PySpark de forma que el performance sea óptimo. El API, finalmente, regresa dos parámetros: frecuencia cardiaca y oxigenación.
Esperemos que este esfuerzo pueda ser utilizado, no sólo para identificar posibles casos de COVID 19, sino otro tipo de condiciones que también pueden ser prevenidas a partir de la medición de la frecuencia cardiaca y la oxigenación y, de esta forma, impactar en la mejora de la salud de las personas que lo usen.
Por: Guillermo Sandoval y Armando Álvarez