¿Cómo restaurar la imagen borrosa usando Real-ESRGAN?

Estás leyendo la publicación: ¿Cómo restaurar la imagen borrosa usando Real-ESRGAN?

Cuando compartimos o recibimos una imagen en WhatsApp u otras redes sociales, en la mayoría de los escenarios, la calidad o las imágenes de la imagen siguen siendo muy bajas y, a veces, apenas podemos extraer información de ellas. Esta degradación se debe principalmente a la aplicación de varios algoritmos de compresión que utilizan estas plataformas. Cuando se trata de restaurar estas imágenes, ya hemos visto varias implementaciones para esta tarea, en esta publicación veremos el modelo Real-ESRGAN que restaura la imagen de manera precisa y más precisa que la mayoría de los métodos anteriores. A continuación se enumeran los puntos que se discutirán en la publicación.

Tabla de contenido

  1. ¿Qué es la restauración de imágenes ciegas?
  2. ¿Cómo Real-ESRGAN restaurar la imagen?
  3. Implementando Real-ESRGAN

Primero analicemos el mecanismo básico de trabajo de estos modelos de restauración.

¿Qué es la restauración de imagen ciega?

La restauración de imágenes intenta recrear la escena original (ideal) a partir de una observación degradada. Muchos programas de procesamiento de imágenes se basan en el proceso de recuperación. Idealmente, la restauración de imágenes trata de revertir el proceso de deterioro de la imagen que ocurre durante la adquisición y el procesamiento de la imagen. Si la degradación es extrema, puede ser imposible reconstruir la escena original por completo, pero se puede lograr una recuperación parcial.

La borrosidad y el ruido son dos tipos comunes de degradación de la captura de imágenes. El desenfoque podría ser causado por el movimiento del sensor o cámaras desenfocadas, por ejemplo. En este caso, la función de desenfoque (también conocida como función de dispersión de puntos) debe conocerse antes de la restauración de la imagen. Cuando se desconoce esta función de desenfoque, el problema de restauración de la imagen se denomina restauración de imagen ciega.

🔥 Recomendado:  Cómo exportar el historial de chat de WhatsApp desde Android a una PC

La restauración de imágenes ciegas es la técnica de estimar tanto la imagen original como la función de dispersión de puntos al mismo tiempo utilizando solo una parte del procesamiento de la imagen y quizás la imagen original. Las diversas metodologías presentadas dependen de la degradación específica y los modelos de imagen.

La medición directa y la estimación indirecta son los dos enfoques principales para la restauración de imágenes ciegas. El primer método mide las propiedades desconocidas del sistema, como la respuesta al impulso de desenfoque y el nivel de ruido, de una imagen que se va a recuperar antes de usar estos factores en la restauración. Los enfoques de estimación indirecta utilizan procedimientos para producir una restauración o para establecer aspectos cruciales de un algoritmo de restauración.

¿Cómo restaura Real-ESRGAN la imagen?

Real-ESRGAN es una extensión del poderoso ESRGAN que sintetiza pares de entrenamiento con un mecanismo de degradación más práctico para recuperar imágenes generales de baja resolución del mundo real. Real-ESRGAN puede reparar la mayoría de las fotos del mundo real y producir un rendimiento visual superior al de los trabajos anteriores, lo que lo hace más útil en las aplicaciones del mundo real.

Las degradaciones más complicadas suelen ser el resultado de combinaciones intrincadas de varios procesos de deterioro, como los sistemas de imágenes de cámaras, la manipulación de imágenes y la transmisión por Internet.

Los investigadores han utilizado modelos de degradación de “alto orden” para degradaciones del mundo real para superar dichas degradaciones, es decir, las degradaciones se representan utilizando numerosos procesos de degradación repetidos, siendo cada proceso el modelo de degradación clásico. Este modelo, en particular, utiliza un mecanismo de degradación de segundo orden para lograr una combinación razonable de simplicidad y eficacia.

🔥 Recomendado:  ¿Prohibición de IP de Instagram? Cómo sortear un bloque de IP en 2023

Además, realiza numerosos cambios críticos en la función discriminadora existente de ESRGAN (p. ej., discriminador U-Net con normalización de espectro) para mejorar la capacidad del discriminador y estabilizar la dinámica de entrenamiento.

En resumen, Real-ESRGAN se entrena utilizando solo datos sintéticos. Para replicar mejor las degradaciones complicadas del mundo real, se diseña un enfoque de modelado de deterioro de alto orden. El proceso de síntesis también tiene en cuenta los problemas frecuentes de zumbido y sobreimpulso. Finalmente, para mejorar las capacidades del discriminador y estabilizar la dinámica de entrenamiento, usamos un discriminador U-Net con normalización espectral.

Implementando Real-ESRGAN

En esta sección, vamos a implementar la arquitectura. La implementación de este método es bastante sencilla que la del método anterior I,e ESRGAN (la implementación se puede encontrar aquí) y comparativamente usa pocas líneas de códigos para generar resultados SOTA.

Configuremos rápidamente el entorno instalando e importando las dependencias.

# Clone Real-ESRGAN e ingrese Real-ESRGAN !git clone https://github.com/xinntao/Real-ESRGAN.git %cd Real-ESRGAN # Configure el entorno !pip install basicsr !pip install facexlib !pip install gfpgan !pip install -r requisitos.txt !python setup.py desarrollar # Descarga el modelo pre-entrenado !wget https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth – P experiments/pretrained_models # imports import os from google.colab import files import shutil import cv2 import matplotlib.pyplot as plt import os import glob

Ahora que hemos hecho toda la carga pesada, solo se trata de un par de tareas, ahora cargaremos una imagen que se va a restaurar.

# crear un directorio para cargar la imagen upload_folder=”upload” result_folder=”results” os.mkdir(upload_folder) os.mkdir(result_folder) # cargar imágenes uploaded = files.upload() para el nombre de archivo en uploaded.keys(): dst_path = os .path.join(upload_folder, filename) print(f’mover {filename} to {dst_path}’) shutil.move(filename, dst_path)

Al ejecutar arriba, aparecerá una ventana emergente mediante la cual puede cargar la imagen deseada para restaurar.

🔥 Recomendado:  Escriba un ensayo en 5 líneas de código usando GPT-Neo

Ahora, después de cargar la imagen, la inferiremos ejecutando el siguiente comando, el siguiente descarga el modelo preentrenado y restaura la imagen.

!python inference_realesrgan.py -n RealESRGAN_x4plus -i upload –outscale 3.5 –half –face_enhance

Ahora para visualizar el resultado generado y la imagen original usaremos algunas funciones de utilidad basadas en matplotlib y cv2 que nos facilitarán visualizar los resultados de manera sistemática.

def display(img1, img2): fig = plt.figure(figsize=(25, 10)) ax1 = fig.add_subplot(1, 2, 1) plt.title(‘Imagen de entrada’, fontsize=16) ax1.axis (‘off’) ax2 = fig.add_subplot(1, 2, 2) plt.title(‘Real-ESRGAN output’, fontsize=16) ax2.axis(‘off’) ax1.imshow(img1) ax2.imshow( img2) def imread(img_path): img = cv2.imread(img_path) img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) return img

Ahora recuperemos las imágenes del directorio.

input_list = sorted(glob.glob(os.path.join(upload_folder, ‘*’))) output_list = sorted(glob.glob(os.path.join(result_folder, ‘*’))) for input_path, output_path en zip (lista_entrada, lista_salida): img_entrada = imread(ruta_entrada) img_salida = imlectura(ruta_salida) display(img_entrada, img_salida)

Aquí está la salida,

Ultimas palabras

A través de este artículo, hemos discutido la restauración de imágenes. La necesidad de usar tales métodos surge principalmente debido a muchas compresiones, procesos de degradación que tienen lugar cuando la imagen viaja a través de la web, y para recuperar información significativa de esas imágenes, se deben usar varios métodos. En contraste con esto, hemos visto una implementación base de código bajo de Real-ESRGAN que es una versión sucesiva de ESRGAN.

Referencias

Tabla de Contenido