Uso de IA para sobrecomprimir imágenes

Uso de IA para sobrecomprimir imágenes
Los algoritmos basados ​​en datos, como las redes neuronales, han conquistado el mundo. Su desarrollo se debe a varias razones, incluido un equipo barato y potente y una gran cantidad de datos. Las redes neuronales están actualmente a la vanguardia de todo lo relacionado con tareas "cognitivas" como el reconocimiento de imágenes, la comprensión del lenguaje natural, etc. Pero no deben limitarse a tales tareas. Este artículo habla sobre cómo comprimir imágenes usando redes neuronales, usando aprendizaje residual. El enfoque presentado en el artículo es más rápido y mejor que los códecs estándar. Esquemas, ecuaciones y, por supuesto, una tabla con pruebas debajo del corte.

Este artículo está basado en este trabajar. Se supone que está familiarizado con las redes neuronales y sus conceptos. circunvolución и función de pérdida.

¿Qué es la compresión de imágenes y cómo funciona?

La compresión de imágenes es el proceso de convertir una imagen para que ocupe menos espacio. El simple almacenamiento de imágenes ocuparía mucho espacio, por lo que existen códecs como JPEG y PNG que tienen como objetivo reducir el tamaño de la imagen original.

Como sabes, hay dos tipos de compresión de imágenes: sin pérdidas и con perdidas. Como sugieren los nombres, la compresión sin pérdida puede retener los datos de la imagen original, mientras que la compresión con pérdida pierde algunos datos durante la compresión. por ejemplo, JPG son algoritmos con pérdida [aprox. traducir - básicamente, no nos olvidemos de JPEG sin pérdidas], y PNG es un algoritmo sin pérdidas.

Uso de IA para sobrecomprimir imágenes
Comparación de compresión sin pérdida y con pérdida

Observe que hay muchos artefactos en bloques en la imagen de la derecha. Esta es información perdida. Los píxeles vecinos de colores similares se comprimen como un área única para ahorrar espacio, pero se pierde la información sobre los píxeles reales. Por supuesto, los algoritmos utilizados en los códecs JPEG, PNG, etc. son mucho más complejos, pero este es un buen ejemplo intuitivo de compresión con pérdida. La compresión sin pérdida es buena, pero los archivos comprimidos sin pérdida ocupan mucho espacio en el disco. Hay mejores formas de comprimir imágenes sin perder mucha información, pero son bastante lentas y muchas usan enfoques iterativos. Esto significa que no se pueden ejecutar en paralelo en varios núcleos de CPU o GPU. Esta limitación los hace completamente impracticables en el uso diario.

Entrada de red neuronal convolucional

Si es necesario calcular algo y los cálculos pueden ser aproximados, agregue red neuronal. Los autores utilizaron una red neuronal convolucional bastante estándar para mejorar la compresión de imágenes. El método presentado no solo funciona a la par con las mejores soluciones (si no mejor), sino que también puede usar computación paralela, lo que lleva a un aumento dramático en la velocidad. La razón es que las redes neuronales convolucionales (CNN) son muy buenas para extraer información espacial de las imágenes, que luego se presentan en una forma más compacta (por ejemplo, solo se conservan los bits "importantes" de la imagen). Los autores querían usar esta capacidad de CNN para representar mejor las imágenes.

Arquitectura

Los autores propusieron una doble red. La primera red toma una imagen como entrada y genera una representación compacta (ComCNN). La salida de esta red luego es procesada por un códec estándar (por ejemplo, JPEG). Después de ser procesada por el códec, la imagen pasa a una segunda red, que "arregla" la imagen del códec en un intento de devolver la imagen original. Los autores llamaron a esta red CNN Reconstructiva (RecCNN). Al igual que las GAN, ambas redes se entrenan de forma iterativa.

Uso de IA para sobrecomprimir imágenes
La representación de ComCNN Compact se pasa al códec estándar

Uso de IA para sobrecomprimir imágenes
RecCNN. La salida de ComCNN se amplía y se alimenta a RecCNN, que intentará aprender el resto

La salida del códec se amplía y luego se pasa a RecCNN. RecCNN intentará renderizar la imagen lo más cerca posible del original.

Uso de IA para sobrecomprimir imágenes
Marco de compresión de imágenes de extremo a extremo. Co(.) es un algoritmo de compresión de imágenes. Los autores utilizaron JPEG, JPEG2000 y BPG

¿Qué es un resto?

El resto se puede considerar como un paso de posprocesamiento para "mejorar" la imagen que el códec decodifica. Al tener mucha "información" sobre el mundo, una red neuronal puede tomar decisiones cognitivas sobre qué arreglar. Esta idea se basa en aprendizaje residual, lea los detalles sobre los que puede aquí.

Funciones de pérdida

Las dos funciones de pérdida se utilizan porque tenemos dos redes neuronales. El primero de ellos, ComCNN, está etiquetado como L1 y se define de la siguiente manera:

Uso de IA para sobrecomprimir imágenes
Función de pérdida para ComCNN

Explicación

Esta ecuación puede parecer complicada, pero en realidad es el estándar (error cuadrático medio) MSE. ||² significa la norma del vector que encierran.

Uso de IA para sobrecomprimir imágenes
Ecuación 1.1

Cr denota la salida de ComCNN. θ denota la capacidad de aprendizaje de los parámetros de ComCNN, XK es la imagen de entrada

Uso de IA para sobrecomprimir imágenes
Ecuación 1.2

Re() significa RecCNN. Esta ecuación simplemente transmite el significado de la ecuación 1.1 a RecCNN. θ denota los parámetros entrenables de RecCNN (un sombrero en la parte superior significa que los parámetros son fijos).

Definición intuitiva

La ecuación 1.0 hará que ComCNN cambie sus pesos para que cuando se recree con RecCNN, la imagen final se vea lo más similar posible a la imagen de entrada. La segunda función de pérdida RecCNN se define de la siguiente manera:

Uso de IA para sobrecomprimir imágenes
Ecuación 2.0

Explicación

Nuevamente, la función puede parecer complicada, pero en su mayor parte es una función de pérdida de red neuronal (MSE) estándar.

Uso de IA para sobrecomprimir imágenes
Ecuación 2.1

Co() significa salida de códec, x con un sombrero en la parte superior significa salida de ComCNN. θ2 son parámetros entrenables RecCNN, res() es solo la salida residual de RecCNN. Vale la pena señalar que RecCNN está entrenado en la diferencia entre Co() y la imagen de entrada, pero no en la imagen de entrada.

Definición intuitiva

La ecuación 2.0 hará que RecCNN cambie sus pesos para que la salida se vea lo más similar posible a la imagen de entrada.

Plan de formación

Los modelos se entrenan iterativamente, como GAN. Los pesos del primer modelo se fijan mientras se actualizan los pesos del segundo modelo, luego los pesos del segundo modelo se fijan mientras se entrena el primer modelo.

Pruebas

Los autores compararon su método con los métodos existentes, incluidos los códecs simples. Su método funciona mejor que otros mientras mantiene una alta velocidad en el hardware apropiado. Además, los autores intentaron usar solo una de las dos redes y notaron una caída en el rendimiento.

Uso de IA para sobrecomprimir imágenes
Comparación del índice de similitud estructural (SSIM). Los valores altos indican un mayor parecido con el original. La negrita indica el resultado del trabajo de los autores.

Conclusión

Analizamos una nueva forma de aplicar el aprendizaje profundo a la compresión de imágenes y hablamos sobre la posibilidad de usar redes neuronales en tareas más allá de las tareas "generales", como la clasificación de imágenes y el procesamiento del lenguaje. Este método no solo no es inferior a los requisitos modernos, sino que también le permite procesar imágenes mucho más rápido.

Aprender redes neuronales se ha vuelto más fácil, porque creamos un código de promoción especialmente para Habravchan HABR, otorgando un 10% de descuento adicional al descuento indicado en el banner.

Uso de IA para sobrecomprimir imágenes

Más cursos

Artículos recomendados

Fuente: habr.com

Añadir un comentario