Hubo algún tiempo en el que a alguien se le ocurrió colorizar las películas que estaban en blanco y negro (bueno, en tonos de gris). Para ello, quien colorizaba tenía que asumir ciertas cosas sobre las imágenes que veía. Tal vez era fácil asignar un tono de rosa a la piel de algún personaje pero a la hora de la vestimenta, la cuestión ya no era tan sencilla. Quizás el pantalón no era negro, sino azul oscuro. Ahí entonces el «colorizador» asumía que se trataba de un color en particular y más no se podía hacer, pues simplemente si no existe información de color, puede ser uno tono u otro, muchas veces indistinguible en una película en blanco y negro.
Estas películas colorizadas no tuvieron mucho éxito. La colorización de las mismas las ponía en colores pasteles y algo de plano, no se veía bien. Fue un experimento sin duda fallido. Pero he aquí que el cómputo moderno sale con más tecnología para tratar este problema. Ahora, con una red neuronal las cosas pueden cambiar en este sentido. Es claro que el problema de colorizar imágenes no es trivial porque se debe primero reconocer el objeto con el cual se va a trabajar. Por ejemplo, la red neuronal podría reconocer el objeto, digamos un rostro, y dados sus límites, asignar un color típico a la cara. Y esto parece inicialmente complejo, pero ya se ha probado que las redes neuronales son buenas reconociendo objetos. Esto es precisamente lo que Ryan Dahl ha hecho con TensorFlow, del cual ya hemos hablado antes aquí.
La primera parte tiene buenas noticias: entrenar a la red neuronal con información es trivial. Tómese simplemente cualquier foto de color, pásela a una versión de tonos de grises. Se puede entonces usar esta red para usar la foto original como objetivo. La arquitectura actual de la red neuronal se describe en el blog respectivo (ver referencias), pero éste empieza con un clasificar de imágenes entrenadas y entonces la red aprende a mapear los tonos de gris a las imágenes de color. Esto parece ser un nuevo modelo, al cual se ha llamado «decodificador residual».
El problema de cómo es que este sistema trabaja es que los objetos y los colores no siempre están siquiera correlacionados. Imagínese que se le presenta a la red una serie de imágenes de sombreros. ¿De qué color es el sombrero? Obviamente hay sombreros de casi cualquier color que quisiésemos imaginar y la conclusión de la red neuronal podrá converger en una especie de color café oscuro, como una mezcla de todas las posibilidades. Si la correlación entre el objeto y el color es apreciable, entonces la red podrá aprender cosas como «la mayoría de los autos son negros», etcétera. Este problema de una buena correlación es la razón por la cual hay una tendencia de la red a producir imágenes con tonos sepia. No obstante esto, el resultado es sorprendentemente bueno.
En las imágenes presentadas, la foto de la izquierda es la imagen que usó la red neuronal, la de enmedio es la colorización de la máquina y la de la derecha es la foto en color original. Y aunque en ocasiones el resultado de la colorización tiene problemas, no hay duda que la idea de usar la red neuronal parece ser todo un acierto.
Veamos esto colorizando una película de Chaplin: