Visión Nocturna y a color en nuestros Smartphones !

Wow! Hace tiempo que no escribía y muchas cosas han pasado en el mundo de la IA!

La última y que incluso hizo que se me aceleraran las pulsaciones de lo sorprendido que estaba se titula «aprender a ver en la oscuridad (paper)«. La verdad es que si se los mostraran no lo podrían creer !
Les pondré un par de imágenes para contextualizar…

fig0.jpg
Fotografías idénticas en situaciones de baja luminosidad. Sí, la primera también es una foto, (a) con un ISO de 8000 -que es alto para lo normal- y (b) con una super cámara con un ISO de 409.600 -sick-, donde captura mayor luz y se ve la foto, pero añade esa granulosidad que podrán haber experimentado en fotos con baja luminosidad.

// PARÉNTESIS FOTOGRÁFICO) Quiero detenerme un poco y explicarles a los que no entienden nada de fotografía, Las cámaras digitales tienen que capturar luz para tomar la foto (foto – fotón,  partícula de la luz, fotografía: escritura con luz) el primer filtro es el obturador que es como la pupila del ojo, este se regula y permite una mayor o menor entrada de luz al sensor de la cámara, luego está el tiempo de exposición que es básicamente cuanto tiempo va a recibir luz, antes de tomar la foto –click-, y finalmente está la sensibilidad (ISO) del sensor que es como… la sensibilidad con la que capta la luz a nivel «de grano», mayor ISO, más luz, mayor grano y por tanto menor detalle . Ganamos brillo en la imagen, pero también granulación o ruido. En fin, jugando con estos tres aspectos se logran las fotografías, idealmente menor tiempo de exposición, gran abertura del obturador y bajo ISO para fotos más claras y definidas. photography-shutter-speed-aperture-iso-cheat-sheet-chart-fotoblog-hamburg-daniel-peters.jpg// FIN DEL PARÉNTESIS.

PERO la luz no suele acompañar a las cámaras en todas las condiciones, sobre todo con poca luz hay que ir  jugando con el ISO, usar trípodes y largos tiempos de exposición, pero si algo se mueve, se verá borrosa la foto o si el ISO es muy alto, se verá muy llena de ruido. Intenten sino tomar una selfie en un lugar oscuro, en una fiesta o una foto en las afueras a algo/alguien, la prueba máxima de las limitaciones de las cámaras de los celulares… hasta ahora -literalmente- (4 de mayo 2018).

fig1.png
La foto (c) está procesada usando los datos capturados por la foto (a) con inteligencia artificial.

Un grupo de investigadores usando Redes Neuronales Convolucionales -una de las ramas del deep learning, una forma de inteligencia artificial- que se usa principalmente para los análisis de imágenes, la magia🔮 de este tipo de redes neuronales es que trabajan en muchas capas conectadas para clasificar los elementos de la foto, bordes, formas, colores, patrones, brillos, etc… realmente la red no sabe qué son las cosas, pero las coloca en grupos y nos permite entrenar esta gran red, para poder seleccionar, mejorar, cortar o modificar algunos elementos.

El objetivo de esta investigación era mejorar la calidad de las fotos con poca luz, enfocándose en reemplazar los pasos que actualmente una cámaras hace al sacar una foto, para mejorar su imagen y guardarla en jpg.

En este caso, entrenaron la I.A. usando la información de las imágenes directa del sensor de las cámaras «información en bruto o Raw data» es decir antes de que las procese el celular/cámara y aplique los filtros actuales para mejorar, estabilizar o aplicarle balance de blancos la foto. Las cámaras reflex nuevas tienen la opción de capturar las fotos en RAW que es como el negativo de las fotos de antaño, donde uno puede editar cada canal de colores de la foto por separado, entre otras variables.

Se usaron 5094 fotografías en bruto, cada una con su respectiva foto de larga exposición, Dato: cada foto en RAW podría pesar unos 25 mb.

Las fotos fotos fueron tomadas «rápidamente» a 1/10 – 1/30 seg. de exposición y con larga con 10″ a 30″ segundos, de esta forma la red neuronal tenía fotos con baja exposición (muy poca luz) y otras con mucha luz, para tener realmente un parámetro «utilizable» con colores, luminosidad con la cual comparar los resultados, -recordemos que la foto (a) no se ve absolutamente nada o en otras palabras no pareciera captar información alguna.

Con estos dos datos ya podía comparar los elementos que quieren rescatar, podían tener una «meta» y un «camino», en el sentido de que a medida que cambian los valores de exposición, obturador o ISO, aparecen y desaparecen pixeles, algunos «aparecen con luz» y otros «desaparecen» porque crean ruido.  Entonces la red neuronal puede ir aprendiendo de cómo iban empeorando si se cambiaban los parámetros, por ejemplo se toma la misma foto pero se compara con varios ISO’s, de esa forma –interpreto– la I.A va «entendiendo» que la granulosidad creada por subir el ISO no es algo deseado/buscado para el OUTPUT final, ya que -mirando- la misma foto pero de largo tiempo de exposición,  no tenían ese ruido que generaba el ISO, por lo tanto es un elemento que puedo «aprender a agrupar» y eliminar a gusto. Al mismo tiempo parece captar los pixeles de los colores en los objetos y tonos finales, reemplazándolos con mucho éxito. Teniendo coloridas y nítidas imágenes a baja luz. Recordemos que el ruido de una foto comienza con pixeles «quemados» por el proceso de tratar de mejorar las características de la foto -como la luz- y al forzar (o subir) estos parámetros, este proceso es relativamente uniforme y afecta a todas partes de la foto,  sin discriminar, entonces zonas que a cierto nivel «ya están bien», cuando se sigue alterando, termina alterando completamente el pixel transformándose en ruido y no en un pixel acorde a lo que debía ser. -esos pixeles rojos, o blancos- en fotos donde subiste la luminosidad a al cielo de noche para ver más estrellas, ok no todas son estrellas ahora!

Ahora les adjunto los otros sorprendentes ejemplos…

Captura de pantalla 2018-05-31 a la(s) 02.34.21.jpg
La foto (b) se obtiene con los métodos tradicionales de eliminación de ruido, resaltar el color, subir el contraste, etc. con los datos brutos de la imagen.  La (c) con la red neuronal.

Esta es otra imagen sorprendente… Captura de pantalla 2018-05-31 a la(s) 02.37.22.jpg

Podrán ver más imágenes abajo en las referencias en el sitio web original del paper o en el video de 2 minutes papers.

Ahora, esto está recién arañando la superficie, son los resultados de las primeras pruebas y usando la data directamente del sensor de la cámara (no un .jpg por ejemplo), aún no está claro si algunos de los datos perdidos en la compresión de RAW (en Bruto) -> JPG, son esenciales y en qué nivel. Tampoco están trabajando los HDR (high dinamic range) que ayuda a manejar la iluminación de las áreas de la misma foto. Además -por ahora- para entrenar la I.A. deben ingresar manualmente el ISO que desean usar, e ir calibrando este foto a foto basado en los resultados, para esto hay que hacer otra red/sistema para ir estimando mejor cuales son los mejores parámetros a elegir para obtener los óptimos resultados, pero es una cosa de tiempo a que lo tengan listo.

¿Cuanto procesamiento, cuanto tiempo le puede tomar a un computador o a nuestros teléfonos hacer esto? La transformación la logra hacer en menos de 1 segundo, es casi como aplicarle un filtro de instagram «quitar ruido con IA», lo que es muy prometedor ya que podría aplicarse a una infinidad de aplicaciones, e incluso podemos especular aún más allá con videos nocturno -con algo de retraso-, podrías sacar tu teléfono y sin necesidad de prender la luz o la linterna, abrir la cámara: «modo nocturno» y buscar algo viéndolo como si fuera de día, investigar animales nocturnos en su hábitat natural sin intervenir con luces molestas, en mejorar las cámaras que se usan para explorar el cuerpo y que un gran porcentaje del tamaño de estas es la luz ! También en los autos autónomos que actualmente de día van super bien, pero en la noche comienzan a complicarse, quizá todo esto sea demasiado soñador por ahora y hay un gran camino por delante antes de esto, pero se está avanzando a pasos agigantados!

Finalmente y solo para hacerse una idea -como dato freak- el grupo de imágenes para entrenar la IA, pesaba +50 gb (por cámara, -se usó más de una-) y se utilizó al menos 64GB de RAM para procesar el set de imágenes y en otro se usó 128 GB de RAM, esta información se encuentra disponible en el github del proyecto y si desean entrenar su propio modelo, están los recursos publicados y disponibles. Amo internet !

Sus comentarios y sugerencias son muy bienvenidos ! Si comparten la publicación mejor aún !
Muchas gracias por leer!

Próximo capítulo, Síntesis de texturas no estacionarias con redes adversarias o en palabras humanas, cómo aplicar texturas adecuadamente a distintos objetos y que estas se adapten a la forma de objeto para que tengan coherencia y no se vean «planas» o como un gran parche del color de la textura.

 

Referencias:
Página del proyecto: http://web.engr.illinois.edu/~cchen156/SID.html
Video original del proyecto: https://youtu.be/qWKUFK7MWvg
Video de 2minutespapers (recomendado): https://www.youtube.com/watch?v=bcZFQ3f26pA
Explicación de redes neuronales convolucionales :
por Siraj Raval: https://www.youtube.com/watch?v=FTr3n7uBIuE
Clase de CNN (convolutional neural networks) Stanford: https://youtu.be/vT1JzLTH4G4

Deja un comentario