Desenvolvedor descobre que IA que gera imagens é ótima para comprimir fotos

Stable Diffusion, que gera imagens a partir de textos, pode comprimir fotos com resultados melhores que em WebP e JPEG

Emerson Alecrim
Por

O Stable Diffusion é um mecanismo que usa aprendizagem de máquina para gerar imagens a partir de textos. Mas um desenvolvedor descobriu que a ferramenta também pode ser usada para comprimir uma imagem em um nível que supera padrões como JPEG e WebP. O arquivo resultante até pode ter artefatos visuais, mas em uma proporção baixa.

Na web, onde otimização de imagens é tão importante que é incentivada pelo Google, essa descoberta pode ser útil a lojas online, a redes sociais e a sites como o Tecnoblog.

Imagem gerada via Stable Diffusion (imagem: divulgação/Stability AI)
Imagem gerada via Stable Diffusion (imagem: divulgação/Stability AI)

Explicando esse tal de Stable Diffusion

Digamos que o Stable Diffusion é um brinquedo da moda. A exemplo do Dall-E, o mecanismo consegue gerar imagens por meio de instruções dadas via texto, em questão de minutos. Muitos delas são impressionantes.

Você pode tirar a prova por conta própria. O Stable Diffusion está disponível em sites como o Hugging Face. Neste último, digitei as seguintes palavras no campo de texto: house (casa), car (carro) e sky (céu). O resultado foi este:

Stable Diffusion — olha que legal o terceiro carro (imagem: Emerson Alecrim/Tecnoblog)
Stable Diffusion — olha que legal o terceiro carro (imagem: Emerson Alecrim/Tecnoblog)

Se por um lado ferramentas como o Stable Diffusion vêm incomodando artistas por inundarem comunidades com imagens geradas artificialmente, por outro, atraem a atenção de muitos entusiastas de inteligência artificial.

É o caso do engenheiro de software Matthias Bühlmann. Ao testar o Stable Diffusion, ele descobriu que a ferramenta aciona três redes neurais artificiais. Uma delas é a Variational Auto Encoder (VAE), que codifica e decodifica uma imagem dentro de um espaço latente.

Entenda espaço latente com uma representação intermediária do resultado esperado. Fazendo uma comparação grosseira, é como se esse espaço representasse um rascunho ou uma versão reduzida da imagem.

De fato, o espaço latente contém uma representação com resolução menor da imagem original, mas com detalhes mais precisos. Com isso, a imagem pode ser expandida novamente, sem ficar descaracterizada.

O espaço latente é usado para que outro algoritmo de rede neural, o U-Net, entre em ação. Um ruído aleatório é inserido no espaço para esse mecanismo gerar previsões sobre o que ele “vê” ali. É como se o algoritmo fosse uma pessoa tentando identificar formas em nuvens.

Esse processo serve para que o ruído seja eliminado de maneira condizente com o resultado esperado e trabalha em consonância com a terceira rede neural, o codificador de texto. Este funciona como um orientador sobre o que o U-Net deve tentar “ver”.

Trata-se de uma explicação bastante simplificada. O que importa é saber que tudo isso é combinado para que a imagem solicitada pelo usuário seja gerada.

Durante esse processo, a imagem tem “impurezas” removidas. Isso ocorre não necessariamente para deixá-la menor, mas para tornar o resultado mais preciso.

Agora sim, a compressão

Durante o seu experimento, Bühlmann descobriu que os algoritmos do Stable Diffusion podem ser adaptados para apenas fazer compressão de imagem. Para tanto, ele removeu o codificador de texto, mas manteve os procedimentos relacionados ao tratamento da imagem.

WebP x JPEG x Stable Diffusion (imagem: Matthias Bühlmann)
WebP x JPEG x Stable Diffusion (imagem: Matthias Bühlmann)

Nos testes, ele descobriu que os resultados são bastante convincentes. A foto de uma lhama ficou com 6,74 KB de tamanho usando uma ferramenta que compacta a imagem em WebP. Em JPEG, a imagem ficou com 5,66 KB. No Stable Diffusion, a imagem ficou com 4,97 KB e, mesmo assim, apresenta mais detalhes que as anteriores.

O resultado não é perfeito, que fique claro. Bühlmann percebeu que rostos ou textos nas imagens podem ficar menos visíveis. Mas é de se presumir que o mecanismo pode ser adaptado e treinado para superar essas limitações.

Para quem quiser experimentar ou até colaborar com o projeto, Bühlmann publicou o código-fonte do seu trabalho no Google Colab.

Com informações: Ars Technica.

Relacionados

Relacionados