Técnico

Modelos de difusão para geração de vídeo

Compartilhar

Introdução

Os modelos de difusão conquistaram um lugar especial no cenário de geração de conteúdo visual de IA, destronando GANs e se posicionando como a abordagem preferida ao criar conteúdo realista. Como tecnologias como LoRAs e Modelos de consistência latente Quando chegaram, esses modelos começaram a ser menos restritivos em termos de tempo e recursos computacionais, e novas possibilidades e aplicações começaram a surgir. Foi o caso dos modelos de geração de vídeo, uma área que teve um crescimento exponencial nos últimos anos, com centenas de artigos em 2023 mostrando que o marco de produzir vídeos de alta qualidade de forma confiável está ao virar da esquina. Neste blog, faremos um resumo técnico do uso de modelos de difusão para gerar vídeos, não apenas mergulhando em um artigo específico, mas investigando as decisões arquitetônicas tomadas por diferentes autores, generalizando e categorizando suas abordagens, fingindo que, depois disso, o leitor poderá ter uma ideia geral que lhe permitirá entender soluções específicas com mais facilidade.

Aplicações

Os aplicativos de modelos de difusão de vídeo podem ser categorizados por suas modalidades de entrada, como texto, imagens, áudio ou até mesmo outros vídeos. Alguns modelos também podem usar uma combinação de diferentes modalidades, como texto e imagens. A geração de vídeo para vídeo também pode ser separada em conclusão de vídeo, quando a ideia é adicionar mais quadros ao vídeo existente, e edição de vídeo, quando a tarefa é modificar os quadros existentes para adicionar um estilo, cor ou alterar um elemento.

Conditioning examples for video diffusion models

Diferentes tipos de condicionamento [1]

Normalmente, os autores usam diferentes tipos de informação simultaneamente, permitindo maior controle sobre a geração. Por exemplo, artigos como Pose dos sonhos [2], Anime qualquer pessoa [3] e Siga sua pose [4] use estimativas de pose em um vídeo existente para condicionar a geração. Analogamente, Geração 1 [5] e Faça seu vídeo [6] use estimativas de profundidade em um vídeo original. McDiff [7] adota uma abordagem original, animando imagens usando informações de movimento representadas como traços sobre a imagem. Por fim, Vídeo de controle [8] tem a capacidade de usar diferentes tipos de controles, como pose, profundidade, filtros inteligentes e muito mais.

Arquitetura: partindo de imagens

Começaremos com alguns conhecimentos comuns sobre modelos de difusão aplicados a imagens. Este tópico foi abordado em nosso blog anterior”Uma introdução aos modelos de difusão e difusão estável”, mas é importante atualizar alguns conceitos antes de se aprofundar nos modelos de vídeo. O processo de geração de uma imagem com um modelo de difusão envolve uma série de etapas de eliminação de ruído a partir de uma entrada ruidosa, condicionada a alguma outra fonte de informação, como um prompt de texto. O modelo mais usado para esse processo de eliminação de ruído é o UNet. Essa rede é treinada para prever a quantidade de ruído na entrada, que é subtraída parcialmente em cada etapa.

UNet architecture for diffusion models

Arquitetura do modelo de difusão baseada na U-Net [9]

A arquitetura UNet é então modificada e os blocos VisionTransformer são adicionados após cada bloco UNet. Isso serve a dois propósitos: primeiro, incorpora a autoatenção espacial, compartilhando informações de toda a imagem. Em segundo lugar, ele incorpora atenção cruzada, condicionando o processo de eliminação de ruído à orientação de informações, como instruções de texto. O custo computacional desses modelos é substancial, portanto, para gerar imagens de alta resolução, os autores geralmente aplicam técnicas como modelos de difusão em cascata ou modelos de difusão latente, que descreveremos a seguir.

Modelos de difusão em cascata

Os modelos de difusão em cascata consistem em vários modelos UNet que operam em resoluções crescentes. O resultado de uma UNet de baixa resolução é ampliado e alimentado como entrada para outra, o que gera um resultado de maior resolução. Essa abordagem é a adotada por modelos que operam em nível de pixel, como Imagem [10], Imagem e vídeo [11], VDM [12] e Faça um vídeo [13]. O uso de CDMs praticamente desapareceu após a adaptação dos modelos de difusão latente que permitem a geração nativa de imagens de alta fidelidade com recursos limitados.

ImagenVideo cascading models

Modelos em cascata ImagenVideo [11]

Modelos de difusão latente

Os modelos de difusão latente trazem melhorias significativas à arquitetura da UNet e se tornaram uma das principais soluções ao lidar com problemas de geração de imagens e vídeos. A ideia por trás disso é converter as entradas de um espaço RGB de alta resolução em uma representação latente com menor dimensionalidade espacial e mais canais de recursos.

Illustration of an auto-encoder as described in Latent Diffusion paper

Ilustração de um autoencoder, conforme proposto pelo artigo Stable Diffusion [14]

Usar um codificador automático variacional (VAE) para codificação de entrada inicial antes da integração com a UNet é a estratégia principal. Em seguida, o processo de eliminação de ruído é executado nesse espaço latente e a latente eliminada é finalmente levada de volta ao espaço de pixels com o decodificador VAE. Isso permite economizar energia computacional significativa, possibilitando a geração de imagens de maior resolução em comparação com os modelos anteriores. Exemplos dessa abordagem são Vídeo LDM [15], Geração 1 [5] e Geração 2 [16], SVD [17] e Anime qualquer pessoa [3]. Até agora, explicamos a arquitetura comum dos modelos de difusão. Na próxima seção, mergulharemos nas modificações que possibilitam gerar vídeos em vez de imagens.

Dando vida às imagens: adicionando a dimensão temporal

Para estender a funcionalidade dos modelos de difusão de imagem ao vídeo, é necessário ter um método para compartilhar informações entre os diferentes quadros do vídeo gerado ou, o que é o mesmo, adicionar uma dimensão temporal às informações espaciais até agora incluídas no modelo de imagem. A entrada do modelo então passa de uma única imagem de ruído para uma para cada quadro na saída desejada, e os blocos ViT da UNet são estendidos com camadas de atenção temporal. Essas camadas têm a função de fazer com que os trechos de um quadro atendam a outros quadros e são responsáveis pela consistência temporal dos vídeos gerados.

Comparando mecanismos de atenção

Há diferentes maneiras de a consulta ocorrer entre os quadros nessas camadas, resultando em várias abordagens:

Examples of different spatial and temporal attention approaches

Exemplos de diferentes abordagens de atenção espacial e temporal [18]

Atenção espacial: Como referência, nesse tipo de atenção, a consulta em um patch específico atende a todos os outros patches na imagem. Atenção temporal: nesse caso, a consulta atende aos patches que estão no mesmo local em todos os outros quadros. Modelos como Vídeo LDM [15], Nuwa-XL [19] e Imagem e vídeo [11] (em seu modelo de baixa resolução) use esse tipo de camada. Atenção espaço-temporal total: Essa é a forma de atenção mais econômica, pois cada patch atende a todos os outros patches em todos os outros quadros. Ele tem ótimos resultados, mas o custo computacional dificulta sua aplicação em vídeos longos. Exemplos disso estão em VDM [12] e Faça um vídeo [13]. Atenção causal: Essa abordagem é uma otimização da anterior, tentando economizar recursos. Assim como na vida real, cada quadro atual pode usar informações do passado, mas não do futuro. Dessa forma, cada patch atenderá a cada patch desse quadro e a todos os anteriores. Vídeo mágico [20] e Faça seu vídeo [6] adote essa abordagem. Atenção causal esparsa: Indo mais adiante, a atenção causal esparsa limita a quantidade de quadros anteriores levados em consideração. Normalmente, cada patch atende somente aos outros patches em seu quadro, o imediatamente anterior e o primeiro quadro, economizando ainda mais recursos. Sintonize um vídeo [21] e Renderizar um vídeo [22] use esse método.

Obtendo vídeos mais longos

Mesmo com o método de atenção mais barato, o número de quadros que um modelo pode gerar é limitado. O hardware atual só é capaz de gerar alguns segundos de vídeo em um único lote. Os pesquisadores estudaram várias maneiras de superar essa limitação e surgiram duas técnicas principais: aumento da amostragem hierárquica e extensão autorregressiva. A ideia por trás da ampliação hierárquica é primeiro gerar quadros espaçados e, em seguida, preencher as lacunas entre eles, gerando mais, usando uma interpolação entre os quadros existentes ou fazendo passagens adicionais do modelo de difusão. Exemplos de modelos que usam essa técnica são Faça um vídeo [13], Imagem e vídeo [11] e Nuwa-XL [19].

NUWA-XL hierarchical upsampling

Aumento da resolução hierárquica NUWA-XL ilustrado [19]

Por outro lado, a extensão autorregressiva envolve a utilização dos últimos quadros de um vídeo gerado para influenciar a geração de quadros subsequentes. Do ponto de vista técnico, essa abordagem permite a possibilidade de uma extensão infinita de um vídeo. No entanto, em termos práticos, os resultados geralmente apresentam maior repetição e declínio na qualidade à medida que a extensão aumenta. Essa técnica é aplicada em modelos como VDM [12], LVDM [23] e Vídeo LDM [15].

Arquiteturas inovadoras

Existem outros autores que apresentaram ideias inovadoras que não se encaixam totalmente em nenhuma das categorias anteriores. Por exemplo Iluminação [24] propôs mudanças na arquitetura UNet, com seu Space-Time UNet. A ideia por trás disso é adicionar reduções e ampliações temporais, junto com as espaciais comuns que caracterizam uma UNet. Ao fazer isso, eles são capazes de compactar as informações espacial e temporalmente, alcançando, por um lado, uma redução nos custos computacionais e, por outro lado, uma melhoria na consistência temporal dos resultados.

Lumiere Space-Time UNet

Lumiere Espaço-Tempo UNet [24]

Desafios a serem enfrentados

O ano passado veio com uma quantidade impressionante de desenvolvimentos na área de geração de vídeo com IA, mas ainda há um longo caminho a percorrer. Nesta última seção, resumiremos as principais dificuldades no treinamento de modelos de difusão de vídeo, que, esperançosamente, serão o foco de novos avanços este ano. A mais óbvia é a limitação de recursos de hardware. Por exemplo, até mesmo as maiores GPUs atuais suportam apenas alguns segundos de vídeo. Além disso, o treinamento de difusão é complexo e exige muitos dados e centenas de horas de GPU. Isso torna a iteração sobre um modelo extremamente desafiadora. A falta de dados de treinamento rotulados também é um problema significativo. Embora existam muitos conjuntos de dados de imagens rotulados com milhões de pontos de dados, os conjuntos de dados de vídeo geralmente são muito menores. Uma solução intermediária adotada por muitos autores é treinar primeiro com dados de imagens rotuladas e depois treinar com vídeos não rotulados de maneira não supervisionada, mas dessa forma pode ser difícil capturar detalhes mais precisos do vídeo, como movimentos específicos do objeto. Em relação à geração de vídeos longos, ainda não foi alcançada uma forma confiável de modelar dependências temporais longas. Técnicas de aumento de amostragem autorregressiva e hierárquica tentam ajudar nisso, mas podem levar a artefatos e sofrer degradação da qualidade ao longo do tempo. Isso pode ser melhorado do lado da arquitetura. Com mais poder de processamento no futuro, a adoção de atenção espaço-temporal 3D completa para vídeos mais longos pode ser capaz de capturar essas interações complexas. O ritmo em que os desenvolvimentos são feitos está apenas aumentando, com mais e mais autores dando passos significativos. O caminho para a geração de vídeos longos de alta qualidade é difícil, mas é apenas uma questão de tempo até chegarmos lá. Estamos muito animados para ver qual será o próximo grande salto.

Referências

Toda jornada de IA começa com uma conversa

Vamos conversar
Vamos conversar