• Saltar a la navegación principal
  • Saltar al contenido principal
Logo Codificando Bits

Codificando Bits

  • Academia
    • Rutas
    • Cursos
    • Proyectos
    • Tutoriales
  • Acceder
  • Suscribirse

Superresolución con Redes Convolucionales en la Visión por Computador

Una de las aplicaciones más fascinantes de la Visión por Computador consiste en intentar mejorar la resolución de una imagen. Esta mejora puede significar incrementar el número de pixeles de la imagen, tratar de mejorar el nivel de detalle de la misma, o una combinación de estos dos elementos. Y este proceso de mejora se conoce específicamente como la superresolución.

Las aplicaciones prácticas de la superresolución son amplias, abarcando desde la simple restauración de imágenes antiguas hasta usos altamente especializados como el procesamiento de imágenes médicas o imágenes satelitales.

Así que en este artículo veremos en detalle qué es la super-resolución en el ámbito de la Visión por Computador. Además, analizaremos cómo funciona una de las Redes Convolucionales más usadas para lograr mejorar la resolución de una imagen.

¿Qué es la superresolución?: la idea básica

Para entender la idea básica de lo que es la superresolución, imaginemos que tomamos una imagen de baja resolución, como la que podemos tener del lado izquierdo en la figura de abajo, en donde no se pueden apreciar adecuadamente los detalles del contenido de esa imagen. El objetivo es usar la superresolución para mejorar esos detalles o llevarla a una imagen de alta resolución (a la derecha en la siguiente figura):

La idea básica de la super-resolución
La idea básica de la super-resolución

En este contexto, el término «resolución» puede tener dos significados distintos.

Uno puede ser incrementar las dimensiones de la imagen, lo cual ignifica que aumentamos el número de pixeles. Por ejemplo, si tenemos una imagen de 320 pixeles de altura por 420 de ancho, la superresolución puede implicar duplicar o triplicar ese tamaño de la imagen. En el caso de duplicarla, la llevaríamos a una imagen de 640 por 840 pixeles:

El incremento de dimensiones de una imagen usando superresolución
El incremento de dimensiones de una imagen usando superresolución

El otro significado esta asociado al realce de los detalles de la imagen. En este escenario, podemos partir de una imagen que ya es de 640 por 840 pixeles y nuestro objetivo es generar una imagen del mismo tamaño (mismo número de pixeles), pero con una mayor nitidez o un nivel de detalle muy superior:

El realce de detalles en una imagen usando superresolución
El realce de detalles en una imagen usando superresolución

Así que teniendo clara esta idea básica de la superresolución, veamos los diferentes métodos que podemos usar para lograr esta mejora, que essencialmente se dividen en dos grandes familias: los métodos convencionales y los basados en Deep Learning.

Métodos para mejorar la resolución de una imagen

Métodos convencionales (interpolación)

Los métodos clásicos están basados en técnicas tradicionales de procesamiento de imágenes y se fundamentan en un principio conocido como la interpolació.

Esta interpolación consiste en tomar pixeles con valores conocidos dentro de la imagen para determinar o estimar matemáticamente los valores de los pixeles desconocidos adyacentes.

La gran desventaja de estos métodos es que nos permiten únicamente incrementar el número de pixeles de la imagen, pero no realzar sus detalles. Así, si tenemos nuestra imagen de 320 por 420 y aplicamos alguna técnica de interpolación, a la salida podremos tener una imagen más grande (por ejemplo, de 640 por 840).

Métodos basados en Deep Learning (Redes Convolucionales)

Si queremos cambiar el tamaño y, además de eso, queremos realzar los detalles de la imagen, acá ya podemos usar el Deep Learning y específicamente las Redes Convolucionales, que son tipos de Redes Neuronales pensados específicamente para el procesamiento de imágenes.

La idea básica del uso de Redes Convolucionales es tener una imagen a la entrada de baja resolución (por ejemplo, 320 por 420) con pocos pixeles y poco nivel de detalle. Al entrenar correctamente la Red Convolucional, podremos generar a la salida imágenes más grandes, es decir con mayor número de pixeles, pero también con un mayor nivel de detalle (alta resolución):

Una Red Convolucional permite implementar aplicaciones de superresolución, pues es capaz de incrementar tanto el tamaño como el nivel de detalle de una imagen
Una Red Convolucional permite implementar aplicaciones de superresolución, pues es capaz de incrementar tanto el tamaño como el nivel de detalle de una imagen

La gran ventaja de usar Redes Convolucionales al implementar sistemas de superresolución es que podemos tomar imágenes con un bajo nivel de detalle y entrenar la para que aprenda a reconstruir la imagen pero con los detalles realzados, recuperando detalles que no estaban presentes en la imagen original.

La Red Convolucional de superresolución

Veamos en detalle cómo funciona la Red Convolucional de superresolución, que fue una de las primeras arquitecturas pensadas para este problema y es la precursora de muchas otras redes usadas en la actualidad para incrementar la resolución en imágenes.

Esta red acepta a la entrada una imagen de baja resolución (tamaño pequeño, poco nivel de detalle) y a la salida genera una imagen con un mayor número de pixeles y mayor nivel de detalle. Y para lograr esto, el procesamiento se divide esencialmente en dos pasos fundamentales:

  1. Incrementar el tamaño (interpolación clásica): en esta primera etapa no usamos todavía una Red Convolucional. En su lugar, se aplica una técnica de interpolación clásica que simplemente incrementa el tamaño de la imagen, pero no permite realzar los detalles.
  2. Realzar los detalles (Red Convolucional): la imagen que se obtuvo con la interpolación se hace pasar por una Red Convolucional que está entrenada específicamente para realzar los detalles. Esa red es precisamente la Red Convolucional de superresolución.
Las fases de procesamiento de una imagen cuando usamos una Red Convolucional de superresolución
Las fases de procesamiento de una imagen cuando usamos una Red Convolucional de superresolución

Así que veamos en detalle qué contiene esta Red Convolucional.

Arquitectura interna de la red

Al tomar esa imagen de un cierto tamaño con bajo nivel de detalle y pasarla por la Red Convolucional, esta va a generar a la salida una imagen del mismo tamaño de la imagen de entrada pero de mayor resolución, es decir, con mayor nivel de detalle (ver figura anterior).

Internamente, la red se encarga de extraer características. Esto quiere decir que, como toda Red Neuronal, aprende a representar los datos de forma alternativa para extraer la información más relevante a través de diferentes capas.

Veamos en detalle qué hace cada una de las capas:

Las capas que conforman una Red Convolucional de superresolución
Las capas que conforman una Red Convolucional de superresolución
  • Primera capa convolucional: toma la imagen de entrada y utiliza 128 filtros para extraer características iniciales.
  • Segunda capa convolucional: toma las 128 características en formato de imagen extraídas por la primera capa, las procesa y genera a la salida 64 características provenientes de esa imagen original.
  • Capa de reconstrucción: Como la imagen de entrada originalmente es a color, cuenta con tres planos o capas (rojo, verde y azul). Por tanto, la capa convolucional de reconstrucción utiliza tres filtros. Su función es tomar esas 64 características a la entrada y reconstruir la imagen para que tenga únicamente estos tres planos de color, pero con la gran diferencia de que ahora los detalles estarán realzados respecto a la imagen original.

Entrenamiento y generación de predicciones

Para que la red sea capaz de generar precisamente una imagen de alta resolución a la salida, debe pasar por el proceso de entrenamiento (como ocurre también con todos los tipos de Redes Neuronales).

Así que el set de entrenamiento presentado a esta red contendrá pares de imágenes (entrada y salida) con estas características:

El set de entrenamiento usado al momento de entrenar una Red Convolucional de superresolución
El set de entrenamiento usado al momento de entrenar una Red Convolucional de superresolución
  • Datos de entrada: son imágenes de baja resolución, con pocos detalles. Por ejemplo, en las figura de arriba, a la izquierda, vemos tres ejemplos de este tipo de imágenes.
  • Datos de salida: la salida que tiene que generar el modelo es una imagen similar a la del lado izquierdo, pero de alta resolución.

Así que durante el entrenamiento, el modelo va aprendiendo progresivamente a generar las imágenes de alta resolución a partir de las de baja resolución.

Y una vez ha sido entrenado el modelo, resulta muy sencillo generar predicciones. Esto significa que al presentarle una nueva imagen de baja resolución que no había visto previamente, la Red Convolucional entregará a la salida una imagen del mismo tamaño pero con esos detalles realzados (alta resolución):

El proceso de inferencia o predicción de una Red Convolucional de superresolución: a la izquierda (entrada) la imagen de baja resolución y a la derecha (salida) la imagen de alta resolución
El proceso de inferencia o predicción de una Red Convolucional de superresolución: a la izquierda (entrada) la imagen de baja resolución y a la derecha (salida) la imagen de alta resolución

Conclusión

En resumen, en este artículo hemos visto que la superresolución consiste en incrementar bien sea el número de pixeles, el nivel de detalle de una imagen, o esos dos componentes en conjunto.

Y la técnica más adecuada en la actualidad es el uso de una Red Convolucional de superresolución, que ejecuta estas dos tareas en dos pasos: primero usa interpolación básica para incrementar el número de pixeles y luego toma esa imagen con un número elevado de pixeles para pasarla por las capas convolucionales entrenadas para realzar los detalles y para generar una imagen de salida del mismo tamaño que la imagen de entrada.

Además, esta técnica de superresolución basada en Redes Convolucionales tiene muchas aplicaciones en el mundo real, como por ejemplo tareas sencillas como la restauración de imágenes antiguas o tareas más sofisticadas como mejorar la resolución de imágenes satelitales o imágenes médicas para que se puedan apreciar mejor ciertos detalles críticos en esas imágenes.

© Codificando Bits, LLC | Blog | Contacto | Servicios | Acerca de | Políticas

¿Has olvidado la contraseña?
¿Has perdido tu contraseña? Por favor, introduce tu nombre de usuario o dirección de correo electrónico. Recibirás por correo electrónico un enlace para crear una nueva contraseña.
body::-webkit-scrollbar { width: 7px; } body::-webkit-scrollbar-track { border-radius: 10px; background: #f0f0f0; } body::-webkit-scrollbar-thumb { border-radius: 50px; background: #dfdbdb }