Usando IA para supercomprimir imagens

Usando IA para supercomprimir imagens
Algoritmos baseados em dados, como redes neurais, conquistaram o mundo. Seu desenvolvimento se deve a vários motivos, incluindo equipamentos baratos e poderosos e uma enorme quantidade de dados. As redes neurais estão atualmente na vanguarda de tudo relacionado a tarefas "cognitivas", como reconhecimento de imagem, compreensão de linguagem natural, etc. Mas eles não devem se limitar a essas tarefas. Este artigo fala sobre como compactar imagens usando redes neurais, usando aprendizado residual. A abordagem apresentada no artigo é mais rápida e melhor que os codecs padrão. Esquemas, equações e, claro, uma tabela com testes sob o corte.

Este artigo é baseado em este trabalhar. Supõe-se que você esteja familiarizado com redes neurais e seus conceitos. convolução и função de perda.

O que é compactação de imagem e como ela funciona?

A compactação de imagem é o processo de conversão de uma imagem para que ela ocupe menos espaço. O simples armazenamento de imagens ocuparia muito espaço, por isso existem codecs como JPEG e PNG que visam reduzir o tamanho da imagem original.

Como você sabe, existem dois tipos de compactação de imagem: sem perdas и com perdas. Como os nomes sugerem, a compactação sem perdas pode reter os dados da imagem original, enquanto a compactação com perdas perde alguns dados durante a compactação. por exemplo, JPG são algoritmos com perdas [aprox. trad. - basicamente, não vamos esquecer o JPEG sem perdas], e o PNG é um algoritmo sem perdas.

Usando IA para supercomprimir imagens
Comparação de compactação sem perdas e com perdas

Observe que há muitos artefatos em blocos na imagem à direita. Isso é informação perdida. Os pixels vizinhos de cores semelhantes são compactados como uma única área para economizar espaço, mas as informações sobre os pixels reais são perdidas. Obviamente, os algoritmos usados ​​nos codecs JPEG, PNG etc. são muito mais complexos, mas este é um bom exemplo intuitivo de compactação com perdas. A compactação sem perdas é boa, mas os arquivos compactados sem perdas ocupam muito espaço em disco. Existem maneiras melhores de compactar imagens sem perder muitas informações, mas elas são bastante lentas e muitas usam abordagens iterativas. Isso significa que eles não podem ser executados em paralelo em vários núcleos de CPU ou GPU. Essa limitação os torna completamente impraticáveis ​​no uso diário.

Entrada da Rede Neural Convolucional

Se algo precisar ser calculado e os cálculos puderem ser aproximados, adicione rede neural. Os autores usaram uma rede neural convolucional bastante padrão para melhorar a compressão da imagem. O método apresentado não só funciona em pé de igualdade com as melhores soluções (se não melhor), mas também pode usar computação paralela, o que leva a um aumento dramático na velocidade. A razão é que as Redes Neurais Convolucionais (CNNs) são muito boas em extrair informações espaciais de imagens, que são então apresentadas de uma forma mais compacta (por exemplo, apenas os bits "importantes" da imagem são preservados). Os autores queriam usar esse recurso da CNN para representar melhor as imagens.

Arquitetura

Os autores propuseram uma rede dupla. A primeira rede recebe uma imagem como entrada e gera uma representação compacta (ComCNN). A saída dessa rede é então processada por um codec padrão (como JPEG). Após ser processada pelo codec, a imagem é repassada para uma segunda rede, que “corrige” a imagem do codec na tentativa de devolver a imagem original. Os autores nomearam esta rede Reconstructive CNN (RecCNN). Como as GANs, ambas as redes são treinadas iterativamente.

Usando IA para supercomprimir imagens
A representação ComCNN Compact é passada para o codec padrão

Usando IA para supercomprimir imagens
RecCNN. A saída ComCNN é ampliada e alimentada ao RecCNN, que tentará aprender o restante

A saída do codec é ampliada e depois passada para o RecCNN. O RecCNN tentará renderizar a imagem o mais próximo possível do original.

Usando IA para supercomprimir imagens
Estrutura de compactação de imagem de ponta a ponta. Co(.) é um algoritmo de compressão de imagem. Os autores usaram JPEG, JPEG2000 e BPG

O que é um resto?

O restante pode ser pensado como uma etapa de pós-processamento para "melhorar" a imagem que está sendo decodificada pelo codec. Tendo muitas “informações” sobre o mundo, uma rede neural pode tomar decisões cognitivas sobre o que consertar. Esta ideia é baseada aprendizagem residual, leia os detalhes sobre os quais você pode aqui.

Funções de perda

As duas funções de perda são usadas porque temos duas redes neurais. O primeiro deles, ComCNN, é rotulado como L1 e é definido da seguinte forma:

Usando IA para supercomprimir imagens
Função de perda para ComCNN

Explicação

Esta equação pode parecer complicada, mas na verdade é o padrão (raiz do erro quadrático médio) MSE. ||² significa a norma do vetor que eles encerram.

Usando IA para supercomprimir imagens
Equação 1.1

Cr denota a saída de ComCNN. θ denota a capacidade de aprendizado dos parâmetros ComCNN, XK é a imagem de entrada

Usando IA para supercomprimir imagens
Equação 1.2

Re() significa RecCNN. Esta equação simplesmente transmite o significado da equação 1.1 para RecCNN. θ denota os parâmetros treináveis ​​RecCNN (um chapéu no topo significa que os parâmetros são fixos).

Definição intuitiva

A Equação 1.0 fará ComCNN alterar seus pesos para que, quando recriada com RecCNN, a imagem final pareça o mais semelhante possível à imagem de entrada. A segunda função de perda RecCNN é definida da seguinte forma:

Usando IA para supercomprimir imagens
Equação 2.0

Explicação

Novamente, a função pode parecer complicada, mas na maioria das vezes é uma função padrão de perda de rede neural (MSE).

Usando IA para supercomprimir imagens
Equação 2.1

Co() significa saída codec, x com um chapéu no topo significa saída ComCNN. θ2 são parâmetros RecCNN treináveis, res() é apenas a saída residual do RecCNN. Vale a pena notar que RecCNN é treinado na diferença entre Co() e a imagem de entrada, mas não na imagem de entrada.

Definição intuitiva

A Equação 2.0 fará com que o RecCNN altere seus pesos para que a saída pareça o mais semelhante possível à imagem de entrada.

Esquema de treinamento

Os modelos são treinados iterativamente, como GAN. Os pesos do primeiro modelo são fixos enquanto os pesos do segundo modelo estão sendo atualizados, então os pesos do segundo modelo são fixos enquanto o primeiro modelo está sendo treinado.

Testes

Os autores compararam seu método com métodos existentes, incluindo codecs simples. Seu método funciona melhor do que outros, mantendo alta velocidade no hardware apropriado. Além disso, os autores tentaram usar apenas uma das duas redes e notaram uma queda no desempenho.

Usando IA para supercomprimir imagens
Comparação do Índice de Similaridade Estrutural (SSIM). Valores altos indicam uma melhor semelhança com o original. Negrito indica o resultado do trabalho dos autores

Conclusão

Analisamos uma nova maneira de aplicar o aprendizado profundo à compactação de imagens e conversamos sobre a possibilidade de usar redes neurais em tarefas além das tarefas “gerais”, como classificação de imagens e processamento de linguagem. Este método não é apenas inferior aos requisitos modernos, mas também permite processar imagens muito mais rapidamente.

Aprender redes neurais ficou mais fácil, pois fizemos um código promocional especialmente para o Habravchan HORNBEAM, dando um desconto adicional de 10% ao desconto indicado no banner.

Usando IA para supercomprimir imagens

Mais cursos

artigos em destaque

Fonte: habr.com

Adicionar um comentário